From 37f27b1464bf500277f505359e459febce0f5aa8 Mon Sep 17 00:00:00 2001 From: Daniel Wirtz Date: Fri, 16 Aug 2019 17:06:58 +0200 Subject: [PATCH 01/24] Do not retain unmanaged allocations in generated ctors (#762) --- src/compiler.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index b8b378132d..e3d4a3f16e 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -7871,16 +7871,14 @@ export class Compiler extends DiagnosticEmitter { // this.b = Y // return this // } + var allocExpr = this.makeAllocation(classInstance); + if (classInstance.type.isManaged) allocExpr = this.makeRetain(allocExpr); stmts.push( module.if( module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, module.local_get(0, nativeSizeType) ), - module.local_set(0, - this.makeRetain( - this.makeAllocation(classInstance) - ) - ) + module.local_set(0, allocExpr) ) ); if (baseClass) { From 4a4cea5fd89be3111938879aee36d83a015cf5e0 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Wed, 21 Aug 2019 10:08:26 -0400 Subject: [PATCH 02/24] Add toString typings for Number and Boolean (#769) This removes IDE errors when trying use the toString method on those primitive types. --- std/assembly/index.d.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 715a08d7a3..36384badb3 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1316,10 +1316,14 @@ declare class TypeError extends Error { } /** Class for indicating an error when trying to interpret syntactically invalid code. */ declare class SyntaxError extends Error { } -interface Boolean {} +interface Boolean { + toString(): string; +} interface Function {} interface IArguments {} -interface Number {} +interface Number { + toString(radix?: number): string; +} interface Object {} interface RegExp {} From a08c7cb67ae01573ca70688383a515e88d5fecee Mon Sep 17 00:00:00 2001 From: Daniel Wirtz Date: Wed, 21 Aug 2019 16:08:57 +0200 Subject: [PATCH 03/24] Emit an error instead of aborting when inferring unused type parameters (#766) --- src/compiler.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index e3d4a3f16e..7c49599078 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -5868,8 +5868,21 @@ export class Compiler extends DiagnosticEmitter { } let resolvedTypeArguments = new Array(numTypeParameters); for (let i = 0; i < numTypeParameters; ++i) { - let inferredType = assert(inferredTypes.get(typeParameterNodes[i].name.text)); // TODO - resolvedTypeArguments[i] = inferredType; + let name = typeParameterNodes[i].name.text; + if (inferredTypes.has(name)) { + let inferredType = inferredTypes.get(name); + if (inferredType) { + resolvedTypeArguments[i] = inferredType; + continue; + } + } + // unused template, e.g. `function test(): void {...}` called as `test()` + // invalid because the type is effectively unknown inside the function body + this.error( + DiagnosticCode.Type_argument_expected, + expression.expression.range.atEnd + ); + return this.module.unreachable(); } instance = this.resolver.resolveFunction( prototype, From a884cc21658a05ec42530d44843bc033f5d85751 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Fri, 23 Aug 2019 15:41:07 +0300 Subject: [PATCH 04/24] Fix 10 digits case in decimalCount64 (#785) --- std/assembly/util/number.ts | 3 +- tests/compiler/resolve-access.optimized.wat | 5 + tests/compiler/resolve-access.untouched.wat | 7 + tests/compiler/std/array.optimized.wat | 5 + tests/compiler/std/array.untouched.wat | 7 + tests/compiler/std/string.optimized.wat | 941 +++++++++++++------- tests/compiler/std/string.ts | 16 +- tests/compiler/std/string.untouched.wat | 923 ++++++++++++------- 8 files changed, 1225 insertions(+), 682 deletions(-) diff --git a/std/assembly/util/number.ts b/std/assembly/util/number.ts index 32d98c6398..133dfd7c05 100644 --- a/std/assembly/util/number.ts +++ b/std/assembly/util/number.ts @@ -129,7 +129,8 @@ export function decimalCount32(value: u32): u32 { export function decimalCount64(value: u64): u32 { if (value < 1000000000000000) { if (value < 1000000000000) { - return select(11, 12, value < 100000000000); + let m = select(11, 12, value < 100000000000); + return select(10, m, value < 10000000000); } else { let m = select(14, 15, value < 100000000000000); return select(13, m, value < 10000000000000); diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index fd20d90cc9..f2e2b7fdd0 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -387,12 +387,17 @@ end ) (func $~lib/util/number/decimalCount64 (; 7 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + i32.const 10 i32.const 11 i32.const 12 local.get $0 i64.const 100000000000 i64.lt_u select + local.get $0 + i64.const 10000000000 + i64.lt_u + select i32.const 13 i32.const 14 i32.const 15 diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 0fac801874..b516278f0a 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -1668,6 +1668,13 @@ i64.const 100000000000 i64.lt_u select + local.set $1 + i32.const 10 + local.get $1 + local.get $0 + i64.const 10000000000 + i64.lt_u + select return else i32.const 14 diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 6881bb0567..8a76601dc1 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -9581,12 +9581,17 @@ local.get $1 ) (func $~lib/util/number/decimalCount64 (; 181 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + i32.const 10 i32.const 11 i32.const 12 local.get $0 i64.const 100000000000 i64.lt_u select + local.get $0 + i64.const 10000000000 + i64.lt_u + select i32.const 13 i32.const 14 i32.const 15 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index c99857cfe3..b757e0beed 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -15001,6 +15001,13 @@ i64.const 100000000000 i64.lt_u select + local.set $1 + i32.const 10 + local.get $1 + local.get $0 + i64.const 10000000000 + i64.lt_u + select return else i32.const 14 diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 929b105639..1fffc80dd1 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -131,86 +131,94 @@ (data (i32.const 3360) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00,\00b\00,\00c") (data (i32.const 3392) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00.") (data (i32.const 3416) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008") - (data (i32.const 3440) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000") - (data (i32.const 3472) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 3496) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\002\003\004\005") - (data (i32.const 3528) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\004\005\006") - (data (i32.const 3560) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data (i32.const 3592) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data (i32.const 3624) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") - (data (i32.const 3664) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") - (data (i32.const 3704) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 3744) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001") - (data (i32.const 3768) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\000\000\000") - (data (i32.const 3792) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 3832) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 3872) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 3904) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 3944) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3984) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 4024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 4072) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 4120) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 4176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 4232) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\003\004") - (data (i32.const 4264) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 4304) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 4344) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 4392) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 4440) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 4496) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 4552) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 4608) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 4632) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 4656) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 4696) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 4728) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#__unchecked_get global.set $~lib/util/number/_frc_pow - i32.const 6128 + i32.const 6472 local.get $14 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_exp_pow @@ -9584,7 +9599,7 @@ f64.const 0 f64.eq if - i32.const 5072 + i32.const 5416 call $~lib/rt/pure/__retain return end @@ -9595,12 +9610,12 @@ local.get $0 call $~lib/number/isNaN if - i32.const 5096 + i32.const 5440 call $~lib/rt/pure/__retain return end - i32.const 5120 - i32.const 5160 + i32.const 5464 + i32.const 5504 local.get $0 f64.const 0 f64.lt @@ -9808,6 +9823,20 @@ (local $169 i32) (local $170 i32) (local $171 i32) + (local $172 i32) + (local $173 i32) + (local $174 i32) + (local $175 i32) + (local $176 i32) + (local $177 i32) + (local $178 i32) + (local $179 i32) + (local $180 i32) + (local $181 i32) + (local $182 i32) + (local $183 i32) + (local $184 i32) + (local $185 i32) global.get $std/string/str i32.const 24 i32.eq @@ -12457,10 +12486,10 @@ call $~lib/builtins/abort unreachable end - i32.const 123 + i32.const 12 call $~lib/util/number/itoa32 local.tee $84 - i32.const 736 + i32.const 3904 call $~lib/string/String.__eq i32.eqz if @@ -12471,10 +12500,10 @@ call $~lib/builtins/abort unreachable end - i32.const -1000 + i32.const 123 call $~lib/util/number/itoa32 local.tee $85 - i32.const 3904 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -12485,10 +12514,10 @@ call $~lib/builtins/abort unreachable end - i32.const 1234 + i32.const -1000 call $~lib/util/number/itoa32 local.tee $86 - i32.const 3936 + i32.const 3928 call $~lib/string/String.__eq i32.eqz if @@ -12499,7 +12528,7 @@ call $~lib/builtins/abort unreachable end - i32.const 12345 + i32.const 1234 call $~lib/util/number/itoa32 local.tee $87 i32.const 3960 @@ -12513,10 +12542,10 @@ call $~lib/builtins/abort unreachable end - i32.const 123456 + i32.const 12345 call $~lib/util/number/itoa32 local.tee $88 - i32.const 3992 + i32.const 3984 call $~lib/string/String.__eq i32.eqz if @@ -12527,10 +12556,10 @@ call $~lib/builtins/abort unreachable end - i32.const 1111111 + i32.const 123456 call $~lib/util/number/itoa32 local.tee $89 - i32.const 4024 + i32.const 4016 call $~lib/string/String.__eq i32.eqz if @@ -12541,10 +12570,10 @@ call $~lib/builtins/abort unreachable end - i32.const 1234567 + i32.const 1111111 call $~lib/util/number/itoa32 local.tee $90 - i32.const 4056 + i32.const 4048 call $~lib/string/String.__eq i32.eqz if @@ -12555,10 +12584,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2147483646 + i32.const 1234567 call $~lib/util/number/itoa32 local.tee $91 - i32.const 4088 + i32.const 4080 call $~lib/string/String.__eq i32.eqz if @@ -12569,10 +12598,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2147483647 + i32.const 12345678 call $~lib/util/number/itoa32 local.tee $92 - i32.const 4128 + i32.const 4112 call $~lib/string/String.__eq i32.eqz if @@ -12583,10 +12612,10 @@ call $~lib/builtins/abort unreachable end - i32.const -2147483648 + i32.const 123456789 call $~lib/util/number/itoa32 local.tee $93 - i32.const 4168 + i32.const 4144 call $~lib/string/String.__eq i32.eqz if @@ -12597,10 +12626,10 @@ call $~lib/builtins/abort unreachable end - i32.const -1 + i32.const 2147483646 call $~lib/util/number/itoa32 local.tee $94 - i32.const 4208 + i32.const 4184 call $~lib/string/String.__eq i32.eqz if @@ -12611,52 +12640,52 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - call $~lib/util/number/utoa32 + i32.const 2147483647 + call $~lib/util/number/itoa32 local.tee $95 - i32.const 1168 + i32.const 4224 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 262 + i32.const 261 i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 1000 - call $~lib/util/number/utoa32 + i32.const -2147483648 + call $~lib/util/number/itoa32 local.tee $96 - i32.const 4232 + i32.const 4264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 263 + i32.const 262 i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - call $~lib/util/number/utoa32 + i32.const -1 + call $~lib/util/number/itoa32 local.tee $97 - i32.const 4128 + i32.const 4304 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 264 + i32.const 263 i32.const 0 call $~lib/builtins/abort unreachable end - i32.const -2147483648 + i32.const 0 call $~lib/util/number/utoa32 local.tee $98 - i32.const 4256 + i32.const 1168 call $~lib/string/String.__eq i32.eqz if @@ -12667,10 +12696,10 @@ call $~lib/builtins/abort unreachable end - i32.const -1 + i32.const 1000 call $~lib/util/number/utoa32 local.tee $99 - i32.const 4296 + i32.const 4328 call $~lib/string/String.__eq i32.eqz if @@ -12681,52 +12710,52 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - call $~lib/util/number/utoa64 + i32.const 2147483647 + call $~lib/util/number/utoa32 local.tee $100 - i32.const 1168 + i32.const 4224 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 268 + i32.const 267 i32.const 0 call $~lib/builtins/abort unreachable end - i64.const 1234 - call $~lib/util/number/utoa64 + i32.const -2147483648 + call $~lib/util/number/utoa32 local.tee $101 - i32.const 3936 + i32.const 4352 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 269 + i32.const 268 i32.const 0 call $~lib/builtins/abort unreachable end - i64.const 99999999 - call $~lib/util/number/utoa64 + i32.const -1 + call $~lib/util/number/utoa32 local.tee $102 - i32.const 4336 + i32.const 4392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 270 + i32.const 269 i32.const 0 call $~lib/builtins/abort unreachable end - i64.const 100000000 + i64.const 0 call $~lib/util/number/utoa64 local.tee $103 - i32.const 4368 + i32.const 1168 call $~lib/string/String.__eq i32.eqz if @@ -12737,10 +12766,10 @@ call $~lib/builtins/abort unreachable end - i64.const 4294967295 + i64.const 12 call $~lib/util/number/utoa64 local.tee $104 - i32.const 4296 + i32.const 3904 call $~lib/string/String.__eq i32.eqz if @@ -12751,10 +12780,10 @@ call $~lib/builtins/abort unreachable end - i64.const 68719476735 + i64.const 123 call $~lib/util/number/utoa64 local.tee $105 - i32.const 4408 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -12765,10 +12794,10 @@ call $~lib/builtins/abort unreachable end - i64.const 868719476735 + i64.const 1234 call $~lib/util/number/utoa64 local.tee $106 - i32.const 4448 + i32.const 3960 call $~lib/string/String.__eq i32.eqz if @@ -12779,10 +12808,10 @@ call $~lib/builtins/abort unreachable end - i64.const 999868719476735 + i64.const 12345 call $~lib/util/number/utoa64 local.tee $107 - i32.const 4488 + i32.const 3984 call $~lib/string/String.__eq i32.eqz if @@ -12793,10 +12822,10 @@ call $~lib/builtins/abort unreachable end - i64.const 9999868719476735 + i64.const 123456 call $~lib/util/number/utoa64 local.tee $108 - i32.const 4536 + i32.const 4016 call $~lib/string/String.__eq i32.eqz if @@ -12807,10 +12836,10 @@ call $~lib/builtins/abort unreachable end - i64.const 19999868719476735 + i64.const 1234567 call $~lib/util/number/utoa64 local.tee $109 - i32.const 4584 + i32.const 4080 call $~lib/string/String.__eq i32.eqz if @@ -12821,10 +12850,10 @@ call $~lib/builtins/abort unreachable end - i64.const -1 + i64.const 99999999 call $~lib/util/number/utoa64 local.tee $110 - i32.const 4640 + i32.const 4432 call $~lib/string/String.__eq i32.eqz if @@ -12835,856 +12864,1052 @@ call $~lib/builtins/abort unreachable end + i64.const 100000000 + call $~lib/util/number/utoa64 + local.tee $111 + i32.const 4464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 279 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967295 + call $~lib/util/number/utoa64 + local.tee $112 + i32.const 4392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 280 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967297 + call $~lib/util/number/utoa64 + local.tee $113 + i32.const 4504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 281 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 68719476735 + call $~lib/util/number/utoa64 + local.tee $114 + i32.const 4544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 282 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 868719476735 + call $~lib/util/number/utoa64 + local.tee $115 + i32.const 4584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 283 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 8687194767350 + call $~lib/util/number/utoa64 + local.tee $116 + i32.const 4624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 284 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 86871947673501 + call $~lib/util/number/utoa64 + local.tee $117 + i32.const 4672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 285 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 999868719476735 + call $~lib/util/number/utoa64 + local.tee $118 + i32.const 4720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 286 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 9999868719476735 + call $~lib/util/number/utoa64 + local.tee $119 + i32.const 4768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 287 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 19999868719476735 + call $~lib/util/number/utoa64 + local.tee $120 + i32.const 4816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 288 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 129999868719476735 + call $~lib/util/number/utoa64 + local.tee $121 + i32.const 4872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 289 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 1239999868719476735 + call $~lib/util/number/utoa64 + local.tee $122 + i32.const 4928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 290 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + call $~lib/util/number/utoa64 + local.tee $123 + i32.const 4984 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 291 + i32.const 0 + call $~lib/builtins/abort + unreachable + end i64.const 0 call $~lib/util/number/itoa64 - local.tee $111 + local.tee $124 i32.const 1168 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 280 + i32.const 293 i32.const 0 call $~lib/builtins/abort unreachable end i64.const -1234 call $~lib/util/number/itoa64 - local.tee $112 - i32.const 4696 + local.tee $125 + i32.const 5040 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 281 + i32.const 294 i32.const 0 call $~lib/builtins/abort unreachable end i64.const 4294967295 call $~lib/util/number/itoa64 - local.tee $113 - i32.const 4296 + local.tee $126 + i32.const 4392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 282 + i32.const 295 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967297 + call $~lib/util/number/itoa64 + local.tee $127 + i32.const 4504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 296 i32.const 0 call $~lib/builtins/abort unreachable end i64.const -4294967295 call $~lib/util/number/itoa64 - local.tee $114 - i32.const 4728 + local.tee $128 + i32.const 5072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 283 + i32.const 297 i32.const 0 call $~lib/builtins/abort unreachable end i64.const 68719476735 call $~lib/util/number/itoa64 - local.tee $115 - i32.const 4408 + local.tee $129 + i32.const 4544 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 284 + i32.const 298 i32.const 0 call $~lib/builtins/abort unreachable end i64.const -68719476735 call $~lib/util/number/itoa64 - local.tee $116 - i32.const 4768 + local.tee $130 + i32.const 5112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 285 + i32.const 299 i32.const 0 call $~lib/builtins/abort unreachable end i64.const -868719476735 call $~lib/util/number/itoa64 - local.tee $117 - i32.const 4808 + local.tee $131 + i32.const 5152 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 286 + i32.const 300 i32.const 0 call $~lib/builtins/abort unreachable end i64.const -999868719476735 call $~lib/util/number/itoa64 - local.tee $118 - i32.const 4856 + local.tee $132 + i32.const 5200 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 287 + i32.const 301 i32.const 0 call $~lib/builtins/abort unreachable end i64.const -19999868719476735 call $~lib/util/number/itoa64 - local.tee $119 - i32.const 4904 + local.tee $133 + i32.const 5248 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 288 + i32.const 302 i32.const 0 call $~lib/builtins/abort unreachable end i64.const 9223372036854775807 call $~lib/util/number/itoa64 - local.tee $120 - i32.const 4960 + local.tee $134 + i32.const 5304 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 289 + i32.const 303 i32.const 0 call $~lib/builtins/abort unreachable end i64.const -9223372036854775808 call $~lib/util/number/itoa64 - local.tee $121 - i32.const 5016 + local.tee $135 + i32.const 5360 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 290 + i32.const 304 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 0 call $~lib/util/number/dtoa - local.tee $122 - i32.const 5072 + local.tee $136 + i32.const 5416 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 293 + i32.const 307 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -0 call $~lib/util/number/dtoa - local.tee $123 - i32.const 5072 + local.tee $137 + i32.const 5416 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 294 + i32.const 308 i32.const 0 call $~lib/builtins/abort unreachable end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - local.tee $124 - i32.const 5096 + local.tee $138 + i32.const 5440 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 295 + i32.const 309 i32.const 0 call $~lib/builtins/abort unreachable end f64.const inf call $~lib/util/number/dtoa - local.tee $125 - i32.const 5160 + local.tee $139 + i32.const 5504 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 296 + i32.const 310 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -inf call $~lib/util/number/dtoa - local.tee $126 - i32.const 5120 + local.tee $140 + i32.const 5464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 297 + i32.const 311 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $127 - i32.const 6248 + local.tee $141 + i32.const 6592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 298 + i32.const 312 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $128 - i32.const 6312 + local.tee $142 + i32.const 6656 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 299 + i32.const 313 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $129 - i32.const 6376 + local.tee $143 + i32.const 6720 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 300 + i32.const 314 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $130 - i32.const 6440 + local.tee $144 + i32.const 6784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 301 + i32.const 315 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - local.tee $131 - i32.const 6504 + local.tee $145 + i32.const 6848 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 302 + i32.const 316 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa - local.tee $132 - i32.const 6568 + local.tee $146 + i32.const 6912 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 303 + i32.const 317 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 4.940656e-318 call $~lib/util/number/dtoa - local.tee $133 - i32.const 6632 + local.tee $147 + i32.const 6976 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 306 + i32.const 320 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 9060801153433600 call $~lib/util/number/dtoa - local.tee $134 - i32.const 6680 + local.tee $148 + i32.const 7024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 307 + i32.const 321 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 4708356024711512064 call $~lib/util/number/dtoa - local.tee $135 - i32.const 6736 + local.tee $149 + i32.const 7080 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 308 + i32.const 322 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 9409340012568248320 call $~lib/util/number/dtoa - local.tee $136 - i32.const 6800 + local.tee $150 + i32.const 7144 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 309 + i32.const 323 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 5e-324 call $~lib/util/number/dtoa - local.tee $137 - i32.const 6864 + local.tee $151 + i32.const 7208 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 310 + i32.const 324 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1 call $~lib/util/number/dtoa - local.tee $138 - i32.const 6896 + local.tee $152 + i32.const 7240 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 316 + i32.const 330 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 0.1 call $~lib/util/number/dtoa - local.tee $139 + local.tee $153 i32.const 1600 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 317 + i32.const 331 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -1 call $~lib/util/number/dtoa - local.tee $140 - i32.const 6920 + local.tee $154 + i32.const 7264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 318 + i32.const 332 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -0.1 call $~lib/util/number/dtoa - local.tee $141 - i32.const 6944 + local.tee $155 + i32.const 7288 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 319 + i32.const 333 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1e6 call $~lib/util/number/dtoa - local.tee $142 - i32.const 6968 + local.tee $156 + i32.const 7312 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 321 + i32.const 335 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1e-06 call $~lib/util/number/dtoa - local.tee $143 - i32.const 7008 + local.tee $157 + i32.const 7352 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 322 + i32.const 336 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -1e6 call $~lib/util/number/dtoa - local.tee $144 - i32.const 7040 + local.tee $158 + i32.const 7384 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 323 + i32.const 337 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -1e-06 call $~lib/util/number/dtoa - local.tee $145 - i32.const 7080 + local.tee $159 + i32.const 7424 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 324 + i32.const 338 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1e7 call $~lib/util/number/dtoa - local.tee $146 - i32.const 7120 + local.tee $160 + i32.const 7464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 325 + i32.const 339 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1e-07 call $~lib/util/number/dtoa - local.tee $147 - i32.const 7160 + local.tee $161 + i32.const 7504 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 326 + i32.const 340 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1.e+308 call $~lib/util/number/dtoa - local.tee $148 - i32.const 7184 + local.tee $162 + i32.const 7528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 328 + i32.const 342 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -1.e+308 call $~lib/util/number/dtoa - local.tee $149 - i32.const 7216 + local.tee $163 + i32.const 7560 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 329 + i32.const 343 i32.const 0 call $~lib/builtins/abort unreachable end f64.const inf call $~lib/util/number/dtoa - local.tee $150 - i32.const 5160 + local.tee $164 + i32.const 5504 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 330 + i32.const 344 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -inf call $~lib/util/number/dtoa - local.tee $151 - i32.const 5120 + local.tee $165 + i32.const 5464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 331 + i32.const 345 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1e-308 call $~lib/util/number/dtoa - local.tee $152 - i32.const 7248 + local.tee $166 + i32.const 7592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 332 + i32.const 346 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -1e-308 call $~lib/util/number/dtoa - local.tee $153 - i32.const 7280 + local.tee $167 + i32.const 7624 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 333 + i32.const 347 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1e-323 call $~lib/util/number/dtoa - local.tee $154 - i32.const 7312 + local.tee $168 + i32.const 7656 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 334 + i32.const 348 i32.const 0 call $~lib/builtins/abort unreachable end f64.const -1e-323 call $~lib/util/number/dtoa - local.tee $155 - i32.const 7344 + local.tee $169 + i32.const 7688 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 335 + i32.const 349 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 0 call $~lib/util/number/dtoa - local.tee $156 - i32.const 5072 + local.tee $170 + i32.const 5416 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 336 + i32.const 350 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 4294967272 call $~lib/util/number/dtoa - local.tee $157 - i32.const 7376 + local.tee $171 + i32.const 7720 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 338 + i32.const 352 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - local.tee $158 - i32.const 7416 + local.tee $172 + i32.const 7760 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 339 + i32.const 353 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 555555555.5555556 call $~lib/util/number/dtoa - local.tee $159 - i32.const 7480 + local.tee $173 + i32.const 7824 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 341 + i32.const 355 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 0.9999999999999999 call $~lib/util/number/dtoa - local.tee $160 - i32.const 7536 + local.tee $174 + i32.const 7880 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 342 + i32.const 356 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1 call $~lib/util/number/dtoa - local.tee $161 - i32.const 6896 + local.tee $175 + i32.const 7240 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 343 + i32.const 357 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 12.34 call $~lib/util/number/dtoa - local.tee $162 - i32.const 7592 + local.tee $176 + i32.const 7936 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 344 + i32.const 358 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 0.3333333333333333 call $~lib/util/number/dtoa - local.tee $163 - i32.const 7624 + local.tee $177 + i32.const 7968 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 346 + i32.const 360 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1234e17 call $~lib/util/number/dtoa - local.tee $164 - i32.const 7680 + local.tee $178 + i32.const 8024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 347 + i32.const 361 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1234e18 call $~lib/util/number/dtoa - local.tee $165 - i32.const 7744 + local.tee $179 + i32.const 8088 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 348 + i32.const 362 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 2.71828 call $~lib/util/number/dtoa - local.tee $166 - i32.const 7784 + local.tee $180 + i32.const 8128 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 349 + i32.const 363 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 0.0271828 call $~lib/util/number/dtoa - local.tee $167 - i32.const 7816 + local.tee $181 + i32.const 8160 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 350 + i32.const 364 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 271.828 call $~lib/util/number/dtoa - local.tee $168 - i32.const 7856 + local.tee $182 + i32.const 8200 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 351 + i32.const 365 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1.1e+128 call $~lib/util/number/dtoa - local.tee $169 - i32.const 7888 + local.tee $183 + i32.const 8232 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 352 + i32.const 366 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1.1e-64 call $~lib/util/number/dtoa - local.tee $170 - i32.const 7920 + local.tee $184 + i32.const 8264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 353 + i32.const 367 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 0.000035689 call $~lib/util/number/dtoa - local.tee $171 - i32.const 7952 + local.tee $185 + i32.const 8296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 354 + i32.const 368 i32.const 0 call $~lib/builtins/abort unreachable @@ -14035,6 +14260,34 @@ call $~lib/rt/pure/__release local.get $171 call $~lib/rt/pure/__release + local.get $172 + call $~lib/rt/pure/__release + local.get $173 + call $~lib/rt/pure/__release + local.get $174 + call $~lib/rt/pure/__release + local.get $175 + call $~lib/rt/pure/__release + local.get $176 + call $~lib/rt/pure/__release + local.get $177 + call $~lib/rt/pure/__release + local.get $178 + call $~lib/rt/pure/__release + local.get $179 + call $~lib/rt/pure/__release + local.get $180 + call $~lib/rt/pure/__release + local.get $181 + call $~lib/rt/pure/__release + local.get $182 + call $~lib/rt/pure/__release + local.get $183 + call $~lib/rt/pure/__release + local.get $184 + call $~lib/rt/pure/__release + local.get $185 + call $~lib/rt/pure/__release ) (func $std/string/getString (; 93 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str From 12aed07918e45feced676a713ee4d5588a49f4f3 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Fri, 23 Aug 2019 15:42:51 +0300 Subject: [PATCH 05/24] Improve f64 to i32 conversion for Math.imul and Math.clz32 (#779) --- std/assembly/math.ts | 42 +-- tests/compiler/std/array.optimized.wat | 4 +- tests/compiler/std/array.untouched.wat | 4 +- tests/compiler/std/libm.optimized.wat | 293 +++++++++------------ tests/compiler/std/libm.untouched.wat | 344 +++++++++++++------------ tests/compiler/std/math.optimized.wat | 62 ++--- tests/compiler/std/math.untouched.wat | 125 ++++++--- 7 files changed, 443 insertions(+), 431 deletions(-) diff --git a/std/assembly/math.ts b/std/assembly/math.ts index 62bc20fdd6..9e4dfd9573 100644 --- a/std/assembly/math.ts +++ b/std/assembly/math.ts @@ -42,6 +42,7 @@ function R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3 return p / q; } +/** @internal */ // @ts-ignore: decorator @inline function expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX) @@ -52,6 +53,27 @@ function expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX) return NativeMath.exp(x - kln2) * scale * scale; } +/** @internal */ +function dtoi32(x: f64): i32 { + if (ASC_SHRINK_LEVEL > 0) { + const inv32 = 1.0 / 4294967296; + return (x - 4294967296 * floor(x * inv32)); + } else { + let result = 0; + let u = reinterpret(x); + let e = (u >> 52) & 0x7ff; + if (e <= 1023 + 30) { + result = x; + } else if (e <= 1023 + 30 + 53) { + let v = (u & ((1 << 52) - 1)) | (1 << 52); + v = v << e - 1023 - 52 + 32; + result = (v >> 32); + result = select(-result, result, u >> 63); + } + return result; + } +} + // @ts-ignore: decorator @lazy var random_seeded = false; @@ -398,9 +420,7 @@ export namespace NativeMath { * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT * our float-point arguments before actual convertion to integers. */ - return builtin_clz( - (x - 4294967296 * builtin_floor(x * (1.0 / 4294967296))) - ); + return builtin_clz(dtoi32(x)); } export function cos(x: f64): f64 { // TODO @@ -599,11 +619,7 @@ export namespace NativeMath { * our float-point arguments before actual convertion to integers. */ if (!isFinite(x + y)) return 0; - const inv32 = 1.0 / 4294967296; - return ( - (x - 4294967296 * builtin_floor(x * inv32)) * - (y - 4294967296 * builtin_floor(y * inv32)) - ); + return dtoi32(x) * dtoi32(y); } export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above @@ -1700,9 +1716,7 @@ export namespace NativeMathf { export function clz32(x: f32): f32 { if (!isFinite(x)) return 32; - return builtin_clz( - (x - 4294967296 * builtin_floor(x * (1.0 / 4294967296))) - ); + return builtin_clz(dtoi32(x)); } export function cos(x: f32): f32 { // see: musl/src/math/cosf.c @@ -1927,11 +1941,7 @@ export namespace NativeMathf { * our float-point arguments before actual convertion to integers. */ if (!isFinite(x + y)) return 0; - const inv32 = 1.0 / 4294967296; - return ( - (x - 4294967296 * builtin_floor(x * inv32)) * - (y - 4294967296 * builtin_floor(y * inv32)) - ); + return (dtoi32(x) * dtoi32(y)); } export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 8a76601dc1..4d56f59a00 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4156,7 +4156,7 @@ if i32.const 0 i32.const 3160 - i32.const 1020 + i32.const 1036 i32.const 4 call $~lib/builtins/abort unreachable @@ -5709,7 +5709,7 @@ if i32.const 3936 i32.const 3160 - i32.const 1029 + i32.const 1045 i32.const 24 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index b757e0beed..fb392e224b 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -6534,7 +6534,7 @@ if i32.const 0 i32.const 3160 - i32.const 1020 + i32.const 1036 i32.const 4 call $~lib/builtins/abort unreachable @@ -8842,7 +8842,7 @@ if i32.const 3936 i32.const 3160 - i32.const 1029 + i32.const 1045 i32.const 24 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/libm.optimized.wat b/tests/compiler/std/libm.optimized.wat index 674c46355b..33ec020d05 100644 --- a/tests/compiler/std/libm.optimized.wat +++ b/tests/compiler/std/libm.optimized.wat @@ -1621,14 +1621,7 @@ f64.const 0 f64.eq ) - (func $~lib/math/NativeMath.clz32 (; 26 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/number/isFinite - i32.eqz - if - f64.const 32 - return - end + (func $~lib/math/dtoi32 (; 26 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 f64.const 4294967296 local.get $0 @@ -1639,12 +1632,20 @@ f64.sub i64.trunc_f64_s i32.wrap_i64 - i32.clz - f64.convert_i32_s ) (func $../../lib/libm/assembly/libm/clz32 (; 27 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - local.get $0 - call $~lib/math/NativeMath.clz32 + block $__inlined_func$~lib/math/NativeMath.clz32 (result f64) + f64.const 32 + local.get $0 + call $~lib/number/isFinite + i32.eqz + br_if $__inlined_func$~lib/math/NativeMath.clz32 + drop + local.get $0 + call $~lib/math/dtoi32 + i32.clz + f64.convert_i32_s + end ) (func $../../lib/libm/assembly/libm/cos (; 28 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 @@ -2412,49 +2413,29 @@ local.get $1 call $~lib/math/NativeMath.hypot ) - (func $~lib/math/NativeMath.imul (; 40 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - f64.add - call $~lib/number/isFinite - i32.eqz - if + (func $../../lib/libm/assembly/libm/imul (; 40 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + block $__inlined_func$~lib/math/NativeMath.imul (result f64) f64.const 0 - return + local.get $0 + local.get $1 + f64.add + call $~lib/number/isFinite + i32.eqz + br_if $__inlined_func$~lib/math/NativeMath.imul + drop + local.get $0 + call $~lib/math/dtoi32 + local.get $1 + call $~lib/math/dtoi32 + i32.mul + f64.convert_i32_s end - local.get $0 - f64.const 4294967296 - local.get $0 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - local.get $1 - f64.const 4294967296 - local.get $1 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - i32.mul - f64.convert_i32_s ) - (func $../../lib/libm/assembly/libm/imul (; 41 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.imul - ) - (func $../../lib/libm/assembly/libm/log (; 42 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/log (; 41 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.log ) - (func $~lib/math/NativeMath.log10 (; 43 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.log10 (; 42 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 f64) (local $2 i32) (local $3 i64) @@ -2658,15 +2639,15 @@ local.get $1 f64.add ) - (func $../../lib/libm/assembly/libm/log10 (; 44 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/log10 (; 43 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.log10 ) - (func $../../lib/libm/assembly/libm/log1p (; 45 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/log1p (; 44 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.log1p ) - (func $~lib/math/NativeMath.log2 (; 46 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.log2 (; 45 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 f64) (local $2 i32) (local $3 i64) @@ -2863,21 +2844,21 @@ local.get $1 f64.add ) - (func $../../lib/libm/assembly/libm/log2 (; 47 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/log2 (; 46 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.log2 ) - (func $../../lib/libm/assembly/libm/max (; 48 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $../../lib/libm/assembly/libm/max (; 47 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) local.get $0 local.get $1 f64.max ) - (func $../../lib/libm/assembly/libm/min (; 49 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $../../lib/libm/assembly/libm/min (; 48 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) local.get $0 local.get $1 f64.min ) - (func $~lib/math/NativeMath.pow (; 50 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 49 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) (local $4 i32) @@ -3785,12 +3766,12 @@ f64.const 1e-300 f64.mul ) - (func $../../lib/libm/assembly/libm/pow (; 51 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $../../lib/libm/assembly/libm/pow (; 50 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) local.get $0 local.get $1 call $~lib/math/NativeMath.pow ) - (func $../../lib/libm/assembly/libm/round (; 52 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/round (; 51 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 f64.const 0.5 f64.add @@ -3798,7 +3779,7 @@ local.get $0 f64.copysign ) - (func $../../lib/libm/assembly/libm/sign (; 53 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/sign (; 52 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 f64.abs f64.const 0 @@ -3811,11 +3792,11 @@ end local.get $0 ) - (func $../../lib/libm/assembly/libm/sin (; 54 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/sin (; 53 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/bindings/Math/sin ) - (func $~lib/math/NativeMath.sinh (; 55 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.sinh (; 54 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 f64) (local $2 f64) (local $3 i32) @@ -3892,19 +3873,19 @@ f64.mul f64.mul ) - (func $../../lib/libm/assembly/libm/sinh (; 56 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/sinh (; 55 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.sinh ) - (func $../../lib/libm/assembly/libm/sqrt (; 57 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/sqrt (; 56 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 f64.sqrt ) - (func $../../lib/libm/assembly/libm/tan (; 58 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/tan (; 57 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/bindings/Math/tan ) - (func $~lib/math/NativeMath.tanh (; 59 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.tanh (; 58 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 f64) (local $2 i32) (local $3 i64) @@ -3983,19 +3964,19 @@ local.get $0 f64.copysign ) - (func $../../lib/libm/assembly/libm/tanh (; 60 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/tanh (; 59 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.tanh ) - (func $../../lib/libm/assembly/libm/trunc (; 61 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/trunc (; 60 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 f64.trunc ) - (func $../../lib/libm/assembly/libmf/abs (; 62 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/abs (; 61 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 f32.abs ) - (func $~lib/math/Rf (; 63 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/Rf (; 62 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 f32.const 0.16666586697101593 local.get $0 @@ -4014,7 +3995,7 @@ f32.add f32.div ) - (func $~lib/math/NativeMathf.acos (; 64 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.acos (; 63 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) (local $2 i32) (local $3 i32) @@ -4130,11 +4111,11 @@ f32.add f32.mul ) - (func $../../lib/libm/assembly/libmf/acos (; 65 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/acos (; 64 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.acos ) - (func $~lib/math/NativeMathf.log1p (; 66 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.log1p (; 65 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) (local $2 i32) (local $3 i32) @@ -4304,7 +4285,7 @@ f32.mul f32.add ) - (func $~lib/math/NativeMathf.log (; 67 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.log (; 66 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -4438,7 +4419,7 @@ f32.mul f32.add ) - (func $~lib/math/NativeMathf.acosh (; 68 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.acosh (; 67 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) local.get $0 i32.reinterpret_f32 @@ -4488,11 +4469,11 @@ f32.const 0.6931471824645996 f32.add ) - (func $../../lib/libm/assembly/libmf/acosh (; 69 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/acosh (; 68 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.acosh ) - (func $~lib/math/NativeMathf.asin (; 70 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.asin (; 69 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f64) @@ -4572,11 +4553,11 @@ local.get $0 f32.copysign ) - (func $../../lib/libm/assembly/libmf/asin (; 71 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/asin (; 70 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.asin ) - (func $~lib/math/NativeMathf.asinh (; 72 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.asinh (; 71 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) (local $2 i32) local.get $0 @@ -4641,16 +4622,16 @@ local.get $0 f32.copysign ) - (func $../../lib/libm/assembly/libmf/asinh (; 73 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/asinh (; 72 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.asinh ) - (func $~lib/number/isNaN (; 74 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/isNaN (; 73 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/math/NativeMathf.atan (; 75 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.atan (; 74 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -4848,11 +4829,11 @@ local.get $4 f32.copysign ) - (func $../../lib/libm/assembly/libmf/atan (; 76 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/atan (; 75 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.atan ) - (func $~lib/math/NativeMathf.atanh (; 77 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.atanh (; 76 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) (local $2 i32) local.get $0 @@ -4902,11 +4883,11 @@ local.get $0 f32.copysign ) - (func $../../lib/libm/assembly/libmf/atanh (; 78 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/atanh (; 77 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.atanh ) - (func $~lib/math/NativeMathf.atan2 (; 79 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.atan2 (; 78 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5130,12 +5111,12 @@ i32.and select ) - (func $../../lib/libm/assembly/libmf/atan2 (; 80 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/atan2 (; 79 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) local.get $0 local.get $1 call $~lib/math/NativeMathf.atan2 ) - (func $~lib/math/NativeMathf.cbrt (; 81 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.cbrt (; 80 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f64) (local $2 f64) (local $3 i32) @@ -5234,47 +5215,37 @@ f64.div f32.demote_f64 ) - (func $../../lib/libm/assembly/libmf/cbrt (; 82 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/cbrt (; 81 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.cbrt ) - (func $../../lib/libm/assembly/libmf/ceil (; 83 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/ceil (; 82 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 f32.ceil ) - (func $~lib/number/isFinite (; 84 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/isFinite (; 83 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.sub f32.const 0 f32.eq ) - (func $~lib/math/NativeMathf.clz32 (; 85 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/number/isFinite - i32.eqz - if + (func $../../lib/libm/assembly/libmf/clz32 (; 84 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + block $__inlined_func$~lib/math/NativeMathf.clz32 (result f32) f32.const 32 - return + local.get $0 + call $~lib/number/isFinite + i32.eqz + br_if $__inlined_func$~lib/math/NativeMathf.clz32 + drop + local.get $0 + f64.promote_f32 + call $~lib/math/dtoi32 + i32.clz + f32.convert_i32_s end - local.get $0 - f32.const 4294967296 - local.get $0 - f32.const 2.3283064365386963e-10 - f32.mul - f32.floor - f32.mul - f32.sub - i64.trunc_f32_s - i32.wrap_i64 - i32.clz - f32.convert_i32_s - ) - (func $../../lib/libm/assembly/libmf/clz32 (; 86 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - local.get $0 - call $~lib/math/NativeMathf.clz32 ) - (func $~lib/array/Array#__unchecked_get (; 87 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 85 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) i32.const 76 i32.load local.get $0 @@ -5283,7 +5254,7 @@ i32.add i64.load ) - (func $~lib/math/NativeMathf.cos (; 88 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.cos (; 86 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f64) (local $2 i32) (local $3 f64) @@ -5555,11 +5526,11 @@ end local.get $0 ) - (func $../../lib/libm/assembly/libmf/cos (; 89 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/cos (; 87 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.cos ) - (func $~lib/math/NativeMathf.expm1 (; 90 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.expm1 (; 88 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -5811,7 +5782,7 @@ local.get $4 f32.mul ) - (func $~lib/math/NativeMathf.scalbn (; 91 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) + (func $~lib/math/NativeMathf.scalbn (; 89 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) local.get $1 i32.const 127 i32.gt_s @@ -5887,7 +5858,7 @@ f32.reinterpret_i32 f32.mul ) - (func $~lib/math/NativeMathf.exp (; 92 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.exp (; 90 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f32) @@ -6015,7 +5986,7 @@ local.get $1 call $~lib/math/NativeMathf.scalbn ) - (func $~lib/math/NativeMathf.cosh (; 93 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.cosh (; 91 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) local.get $0 i32.reinterpret_f32 @@ -6074,26 +6045,26 @@ f32.const 1661534994731144841129758e11 f32.mul ) - (func $../../lib/libm/assembly/libmf/cosh (; 94 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/cosh (; 92 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.cosh ) - (func $../../lib/libm/assembly/libmf/exp (; 95 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/exp (; 93 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.exp ) - (func $../../lib/libm/assembly/libmf/expm1 (; 96 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/expm1 (; 94 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.expm1 ) - (func $../../lib/libm/assembly/libmf/floor (; 97 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/floor (; 95 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 f32.floor ) - (func $../../lib/libm/assembly/libmf/fround (; 98 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/fround (; 96 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 ) - (func $~lib/math/NativeMathf.hypot (; 99 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.hypot (; 97 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 f32) @@ -6198,12 +6169,12 @@ f32.sqrt f32.mul ) - (func $../../lib/libm/assembly/libmf/hypot (; 100 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/hypot (; 98 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) local.get $0 local.get $1 call $~lib/math/NativeMathf.hypot ) - (func $../../lib/libm/assembly/libmf/imul (; 101 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/imul (; 99 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) block $~lib/math/NativeMathf.imul|inlined.0 (result f32) f32.const 0 local.get $0 @@ -6215,37 +6186,19 @@ drop local.get $0 f64.promote_f32 - f64.const 4294967296 - local.get $0 - f64.promote_f32 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - local.get $1 - f64.promote_f32 - f64.const 4294967296 + call $~lib/math/dtoi32 local.get $1 f64.promote_f32 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 + call $~lib/math/dtoi32 i32.mul f32.convert_i32_s end ) - (func $../../lib/libm/assembly/libmf/log (; 102 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/log (; 100 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.log ) - (func $~lib/math/NativeMathf.log10 (; 103 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.log10 (; 101 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 i32) @@ -6403,15 +6356,15 @@ f32.mul f32.add ) - (func $../../lib/libm/assembly/libmf/log10 (; 104 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/log10 (; 102 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.log10 ) - (func $../../lib/libm/assembly/libmf/log1p (; 105 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/log1p (; 103 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.log1p ) - (func $~lib/math/NativeMathf.log2 (; 106 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.log2 (; 104 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 i32) @@ -6561,21 +6514,21 @@ f32.convert_i32_s f32.add ) - (func $../../lib/libm/assembly/libmf/log2 (; 107 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/log2 (; 105 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.log2 ) - (func $../../lib/libm/assembly/libmf/max (; 108 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/max (; 106 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) local.get $0 local.get $1 f32.max ) - (func $../../lib/libm/assembly/libmf/min (; 109 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/min (; 107 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) local.get $0 local.get $1 f32.min ) - (func $~lib/math/NativeMathf.pow (; 110 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.pow (; 108 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 f32) (local $3 f32) (local $4 i32) @@ -7361,12 +7314,12 @@ f32.const 1.0000000031710769e-30 f32.mul ) - (func $../../lib/libm/assembly/libmf/pow (; 111 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/pow (; 109 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) local.get $0 local.get $1 call $~lib/math/NativeMathf.pow ) - (func $../../lib/libm/assembly/libmf/round (; 112 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/round (; 110 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 f32.const 0.5 f32.add @@ -7374,7 +7327,7 @@ local.get $0 f32.copysign ) - (func $../../lib/libm/assembly/libmf/sign (; 113 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/sign (; 111 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 f32.abs f32.const 0 @@ -7387,7 +7340,7 @@ end local.get $0 ) - (func $~lib/math/NativeMathf.sin (; 114 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.sin (; 112 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f64) (local $2 i32) (local $3 f64) @@ -7660,11 +7613,11 @@ end local.get $0 ) - (func $../../lib/libm/assembly/libmf/sin (; 115 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/sin (; 113 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.sin ) - (func $~lib/math/NativeMathf.sinh (; 116 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.sinh (; 114 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) (local $2 i32) (local $3 f32) @@ -7736,15 +7689,15 @@ f32.mul f32.mul ) - (func $../../lib/libm/assembly/libmf/sinh (; 117 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/sinh (; 115 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.sinh ) - (func $../../lib/libm/assembly/libmf/sqrt (; 118 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/sqrt (; 116 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 f32.sqrt ) - (func $~lib/math/NativeMathf.tan (; 119 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.tan (; 117 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f64) (local $2 i32) (local $3 f64) @@ -8001,11 +7954,11 @@ local.get $1 f32.demote_f64 ) - (func $../../lib/libm/assembly/libmf/tan (; 120 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/tan (; 118 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.tan ) - (func $~lib/math/NativeMathf.tanh (; 121 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.tanh (; 119 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) (local $2 i32) local.get $0 @@ -8079,15 +8032,15 @@ local.get $0 f32.copysign ) - (func $../../lib/libm/assembly/libmf/tanh (; 122 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/tanh (; 120 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.tanh ) - (func $../../lib/libm/assembly/libmf/trunc (; 123 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/trunc (; 121 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 f32.trunc ) - (func $null (; 124 ;) (type $FUNCSIG$v) + (func $null (; 122 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/libm.untouched.wat b/tests/compiler/std/libm.untouched.wat index d09a870ca6..8cf4b64a0b 100644 --- a/tests/compiler/std/libm.untouched.wat +++ b/tests/compiler/std/libm.untouched.wat @@ -1952,7 +1952,78 @@ f64.const 0 f64.eq ) - (func $~lib/math/NativeMath.clz32 (; 26 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/dtoi32 (; 26 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (local $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) + i32.const 0 + local.set $1 + local.get $0 + i64.reinterpret_f64 + local.set $2 + local.get $2 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $3 + local.get $3 + i64.const 1053 + i64.le_u + if + local.get $0 + i32.trunc_f64_s + local.set $1 + else + local.get $3 + i64.const 1106 + i64.le_u + if + local.get $2 + i64.const 1 + i64.const 52 + i64.shl + i64.const 1 + i64.sub + i64.and + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $4 + local.get $4 + local.get $3 + i64.const 1023 + i64.sub + i64.const 52 + i64.sub + i64.const 32 + i64.add + i64.shl + local.set $4 + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $1 + i32.const 0 + local.get $1 + i32.sub + local.get $1 + local.get $2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + select + local.set $1 + end + end + local.get $1 + return + ) + (func $~lib/math/NativeMath.clz32 (; 27 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/number/isFinite i32.eqz @@ -1961,33 +2032,23 @@ return end local.get $0 - f64.const 4294967296 - local.get $0 - f64.const 1 - f64.const 4294967296 - f64.div - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 + call $~lib/math/dtoi32 i32.clz f64.convert_i32_s ) - (func $../../lib/libm/assembly/libm/clz32 (; 27 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/clz32 (; 28 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.clz32 ) - (func $~lib/math/NativeMath.cos (; 28 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.cos (; 29 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/bindings/Math/cos ) - (func $../../lib/libm/assembly/libm/cos (; 29 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/cos (; 30 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.cos ) - (func $~lib/math/NativeMath.expm1 (; 30 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.expm1 (; 31 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i32) (local $3 i32) @@ -2299,7 +2360,7 @@ local.get $14 f64.mul ) - (func $~lib/math/NativeMath.scalbn (; 31 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 32 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) (local $2 f64) (local $3 i32) (local $4 i32) @@ -2390,7 +2451,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/math/NativeMath.exp (; 32 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.exp (; 33 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i32) (local $2 i32) (local $3 f64) @@ -2555,7 +2616,7 @@ local.get $5 call $~lib/math/NativeMath.scalbn ) - (func $~lib/math/NativeMath.cosh (; 33 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.cosh (; 34 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i32) (local $3 f64) @@ -2644,26 +2705,26 @@ local.set $3 local.get $3 ) - (func $../../lib/libm/assembly/libm/cosh (; 34 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/cosh (; 35 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.cosh ) - (func $../../lib/libm/assembly/libm/exp (; 35 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/exp (; 36 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.exp ) - (func $../../lib/libm/assembly/libm/expm1 (; 36 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/expm1 (; 37 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.expm1 ) - (func $../../lib/libm/assembly/libm/floor (; 37 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/floor (; 38 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 f64) local.get $0 local.set $1 local.get $1 f64.floor ) - (func $../../lib/libm/assembly/libm/fround (; 38 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/fround (; 39 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 f64) local.get $0 local.set $1 @@ -2671,7 +2732,7 @@ f32.demote_f64 f64.promote_f32 ) - (func $~lib/math/NativeMath.hypot (; 39 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.hypot (; 40 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -2866,12 +2927,12 @@ f64.sqrt f64.mul ) - (func $../../lib/libm/assembly/libm/hypot (; 40 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $../../lib/libm/assembly/libm/hypot (; 41 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) local.get $0 local.get $1 call $~lib/math/NativeMath.hypot ) - (func $~lib/math/NativeMath.imul (; 41 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.imul (; 42 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) local.get $0 local.get $1 f64.add @@ -2882,38 +2943,22 @@ return end local.get $0 - f64.const 4294967296 - local.get $0 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - local.get $1 - f64.const 4294967296 + call $~lib/math/dtoi32 local.get $1 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 + call $~lib/math/dtoi32 i32.mul f64.convert_i32_s ) - (func $../../lib/libm/assembly/libm/imul (; 42 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $../../lib/libm/assembly/libm/imul (; 43 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) local.get $0 local.get $1 call $~lib/math/NativeMath.imul ) - (func $../../lib/libm/assembly/libm/log (; 43 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/log (; 44 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.log ) - (func $~lib/math/NativeMath.log10 (; 44 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.log10 (; 45 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i32) (local $3 i32) @@ -3173,15 +3218,15 @@ local.get $8 f64.add ) - (func $../../lib/libm/assembly/libm/log10 (; 45 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/log10 (; 46 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.log10 ) - (func $../../lib/libm/assembly/libm/log1p (; 46 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/log1p (; 47 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.log1p ) - (func $~lib/math/NativeMath.log2 (; 47 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.log2 (; 48 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i32) (local $3 i32) @@ -3434,11 +3479,11 @@ local.get $14 f64.add ) - (func $../../lib/libm/assembly/libm/log2 (; 48 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/log2 (; 49 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.log2 ) - (func $../../lib/libm/assembly/libm/max (; 49 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $../../lib/libm/assembly/libm/max (; 50 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) local.get $0 @@ -3449,7 +3494,7 @@ local.get $2 f64.max ) - (func $../../lib/libm/assembly/libm/min (; 50 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $../../lib/libm/assembly/libm/min (; 51 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) local.get $0 @@ -3460,7 +3505,7 @@ local.get $2 f64.min ) - (func $~lib/math/NativeMath.pow (; 51 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 52 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -4540,12 +4585,12 @@ local.get $16 f64.mul ) - (func $../../lib/libm/assembly/libm/pow (; 52 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $../../lib/libm/assembly/libm/pow (; 53 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) local.get $0 local.get $1 call $~lib/math/NativeMath.pow ) - (func $../../lib/libm/assembly/libm/round (; 53 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/round (; 54 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 f64) local.get $0 local.set $1 @@ -4556,7 +4601,7 @@ local.get $1 f64.copysign ) - (func $../../lib/libm/assembly/libm/sign (; 54 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/sign (; 55 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 f64) block $~lib/math/NativeMath.sign|inlined.0 (result f64) local.get $0 @@ -4579,15 +4624,15 @@ br $~lib/math/NativeMath.sign|inlined.0 end ) - (func $~lib/math/NativeMath.sin (; 55 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.sin (; 56 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/bindings/Math/sin ) - (func $../../lib/libm/assembly/libm/sin (; 56 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/sin (; 57 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.sin ) - (func $~lib/math/NativeMath.sinh (; 57 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.sinh (; 58 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 f64) (local $3 i32) @@ -4685,26 +4730,26 @@ local.set $4 local.get $4 ) - (func $../../lib/libm/assembly/libm/sinh (; 58 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/sinh (; 59 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.sinh ) - (func $../../lib/libm/assembly/libm/sqrt (; 59 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/sqrt (; 60 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 f64) local.get $0 local.set $1 local.get $1 f64.sqrt ) - (func $~lib/math/NativeMath.tan (; 60 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.tan (; 61 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/bindings/Math/tan ) - (func $../../lib/libm/assembly/libm/tan (; 61 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/tan (; 62 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.tan ) - (func $~lib/math/NativeMath.tanh (; 62 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.tanh (; 63 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 f64) (local $3 i32) @@ -4796,25 +4841,25 @@ local.get $0 f64.copysign ) - (func $../../lib/libm/assembly/libm/tanh (; 63 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/tanh (; 64 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/math/NativeMath.tanh ) - (func $../../lib/libm/assembly/libm/trunc (; 64 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $../../lib/libm/assembly/libm/trunc (; 65 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 f64) local.get $0 local.set $1 local.get $1 f64.trunc ) - (func $../../lib/libm/assembly/libmf/abs (; 65 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/abs (; 66 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) local.get $0 local.set $1 local.get $1 f32.abs ) - (func $~lib/math/Rf (; 66 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/Rf (; 67 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) (local $2 f32) local.get $0 @@ -4839,7 +4884,7 @@ local.get $2 f32.div ) - (func $~lib/math/NativeMathf.acos (; 67 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.acos (; 68 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f32) @@ -4979,11 +5024,11 @@ f32.add f32.mul ) - (func $../../lib/libm/assembly/libmf/acos (; 68 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/acos (; 69 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.acos ) - (func $~lib/math/NativeMathf.log1p (; 69 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.log1p (; 70 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -5192,7 +5237,7 @@ f32.mul f32.add ) - (func $~lib/math/NativeMathf.log (; 70 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.log (; 71 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f32) @@ -5360,7 +5405,7 @@ f32.mul f32.add ) - (func $~lib/math/NativeMathf.acosh (; 71 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.acosh (; 72 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f32) @@ -5416,11 +5461,11 @@ f32.const 0.6931471824645996 f32.add ) - (func $../../lib/libm/assembly/libmf/acosh (; 72 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/acosh (; 73 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.acosh ) - (func $~lib/math/NativeMathf.asin (; 73 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.asin (; 74 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) (local $2 i32) (local $3 f32) @@ -5512,11 +5557,11 @@ local.get $1 f32.copysign ) - (func $../../lib/libm/assembly/libmf/asin (; 74 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/asin (; 75 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.asin ) - (func $~lib/math/NativeMathf.asinh (; 75 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.asinh (; 76 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) local.get $0 @@ -5585,16 +5630,16 @@ local.get $0 f32.copysign ) - (func $../../lib/libm/assembly/libmf/asinh (; 76 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/asinh (; 77 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.asinh ) - (func $~lib/number/isNaN (; 77 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/isNaN (; 78 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/math/NativeMathf.atan (; 78 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.atan (; 79 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -5823,11 +5868,11 @@ local.get $2 f32.copysign ) - (func $../../lib/libm/assembly/libmf/atan (; 79 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/atan (; 80 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.atan ) - (func $~lib/math/NativeMathf.atanh (; 80 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.atanh (; 81 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) local.get $0 @@ -5881,11 +5926,11 @@ local.get $0 f32.copysign ) - (func $../../lib/libm/assembly/libmf/atanh (; 81 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/atanh (; 82 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.atanh ) - (func $~lib/math/NativeMathf.atan2 (; 82 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.atan2 (; 83 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6197,12 +6242,12 @@ end unreachable ) - (func $../../lib/libm/assembly/libmf/atan2 (; 83 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/atan2 (; 84 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) local.get $0 local.get $1 call $~lib/math/NativeMathf.atan2 ) - (func $~lib/math/NativeMathf.cbrt (; 84 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.cbrt (; 85 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -6318,25 +6363,25 @@ local.get $3 f32.demote_f64 ) - (func $../../lib/libm/assembly/libmf/cbrt (; 85 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/cbrt (; 86 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.cbrt ) - (func $../../lib/libm/assembly/libmf/ceil (; 86 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/ceil (; 87 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) local.get $0 local.set $1 local.get $1 f32.ceil ) - (func $~lib/number/isFinite (; 87 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/isFinite (; 88 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.sub f32.const 0 f32.eq ) - (func $~lib/math/NativeMathf.clz32 (; 88 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.clz32 (; 89 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/number/isFinite i32.eqz @@ -6345,25 +6390,16 @@ return end local.get $0 - f32.const 4294967296 - local.get $0 - f32.const 1 - f32.const 4294967296 - f32.div - f32.mul - f32.floor - f32.mul - f32.sub - i64.trunc_f32_s - i32.wrap_i64 + f64.promote_f32 + call $~lib/math/dtoi32 i32.clz f32.convert_i32_s ) - (func $../../lib/libm/assembly/libmf/clz32 (; 89 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/clz32 (; 90 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.clz32 ) - (func $~lib/array/Array#__unchecked_get (; 90 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 91 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -6372,7 +6408,7 @@ i32.add i64.load ) - (func $~lib/math/NativeMathf.cos (; 91 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.cos (; 92 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -6995,11 +7031,11 @@ local.get $26 end ) - (func $../../lib/libm/assembly/libmf/cos (; 92 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/cos (; 93 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.cos ) - (func $~lib/math/NativeMathf.expm1 (; 93 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.expm1 (; 94 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7292,7 +7328,7 @@ local.get $13 f32.mul ) - (func $~lib/math/NativeMathf.scalbn (; 94 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) + (func $~lib/math/NativeMathf.scalbn (; 95 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -7382,7 +7418,7 @@ f32.reinterpret_i32 f32.mul ) - (func $~lib/math/NativeMathf.exp (; 95 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.exp (; 96 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f32) @@ -7526,7 +7562,7 @@ local.get $5 call $~lib/math/NativeMathf.scalbn ) - (func $~lib/math/NativeMathf.cosh (; 96 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.cosh (; 97 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -7603,32 +7639,32 @@ local.get $3 f32.mul ) - (func $../../lib/libm/assembly/libmf/cosh (; 97 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/cosh (; 98 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.cosh ) - (func $../../lib/libm/assembly/libmf/exp (; 98 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/exp (; 99 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.exp ) - (func $../../lib/libm/assembly/libmf/expm1 (; 99 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/expm1 (; 100 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.expm1 ) - (func $../../lib/libm/assembly/libmf/floor (; 100 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/floor (; 101 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) local.get $0 local.set $1 local.get $1 f32.floor ) - (func $../../lib/libm/assembly/libmf/fround (; 101 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/fround (; 102 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) local.get $0 local.set $1 local.get $1 ) - (func $~lib/math/NativeMathf.hypot (; 102 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.hypot (; 103 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7745,12 +7781,12 @@ f32.sqrt f32.mul ) - (func $../../lib/libm/assembly/libmf/hypot (; 103 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/hypot (; 104 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) local.get $0 local.get $1 call $~lib/math/NativeMathf.hypot ) - (func $../../lib/libm/assembly/libmf/imul (; 104 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/imul (; 105 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 f32) (local $3 f32) block $~lib/math/NativeMathf.imul|inlined.0 (result f32) @@ -7769,39 +7805,19 @@ end local.get $3 f64.promote_f32 - f32.const 4294967296 - f64.promote_f32 - local.get $3 - f64.promote_f32 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - local.get $2 - f64.promote_f32 - f32.const 4294967296 - f64.promote_f32 + call $~lib/math/dtoi32 local.get $2 f64.promote_f32 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 + call $~lib/math/dtoi32 i32.mul f32.convert_i32_s end ) - (func $../../lib/libm/assembly/libmf/log (; 105 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/log (; 106 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.log ) - (func $~lib/math/NativeMathf.log10 (; 106 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.log10 (; 107 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f32) @@ -8001,15 +8017,15 @@ f32.mul f32.add ) - (func $../../lib/libm/assembly/libmf/log10 (; 107 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/log10 (; 108 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.log10 ) - (func $../../lib/libm/assembly/libmf/log1p (; 108 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/log1p (; 109 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.log1p ) - (func $~lib/math/NativeMathf.log2 (; 109 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.log2 (; 110 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f32) @@ -8204,11 +8220,11 @@ local.get $14 f32.add ) - (func $../../lib/libm/assembly/libmf/log2 (; 110 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/log2 (; 111 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.log2 ) - (func $../../lib/libm/assembly/libmf/max (; 111 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/max (; 112 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 f32) (local $3 f32) local.get $0 @@ -8219,7 +8235,7 @@ local.get $2 f32.max ) - (func $../../lib/libm/assembly/libmf/min (; 112 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/min (; 113 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 f32) (local $3 f32) local.get $0 @@ -8230,7 +8246,7 @@ local.get $2 f32.min ) - (func $~lib/math/NativeMathf.pow (; 113 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.pow (; 114 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9164,12 +9180,12 @@ local.get $11 f32.mul ) - (func $../../lib/libm/assembly/libmf/pow (; 114 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $../../lib/libm/assembly/libmf/pow (; 115 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) local.get $0 local.get $1 call $~lib/math/NativeMathf.pow ) - (func $../../lib/libm/assembly/libmf/round (; 115 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/round (; 116 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) local.get $0 local.set $1 @@ -9180,7 +9196,7 @@ local.get $1 f32.copysign ) - (func $../../lib/libm/assembly/libmf/sign (; 116 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/sign (; 117 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) block $~lib/math/NativeMathf.sign|inlined.0 (result f32) local.get $0 @@ -9203,7 +9219,7 @@ br $~lib/math/NativeMathf.sign|inlined.0 end ) - (func $~lib/math/NativeMathf.sin (; 117 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.sin (; 118 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -9818,11 +9834,11 @@ local.get $26 end ) - (func $../../lib/libm/assembly/libmf/sin (; 118 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/sin (; 119 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.sin ) - (func $~lib/math/NativeMathf.sinh (; 119 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.sinh (; 120 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -9911,18 +9927,18 @@ local.set $3 local.get $3 ) - (func $../../lib/libm/assembly/libmf/sinh (; 120 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/sinh (; 121 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.sinh ) - (func $../../lib/libm/assembly/libmf/sqrt (; 121 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/sqrt (; 122 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) local.get $0 local.set $1 local.get $1 f32.sqrt ) - (func $~lib/math/NativeMathf.tan (; 122 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.tan (; 123 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10578,11 +10594,11 @@ end f32.demote_f64 ) - (func $../../lib/libm/assembly/libmf/tan (; 123 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/tan (; 124 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.tan ) - (func $~lib/math/NativeMathf.tanh (; 124 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.tanh (; 125 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 f32) (local $3 f32) @@ -10668,17 +10684,17 @@ local.get $0 f32.copysign ) - (func $../../lib/libm/assembly/libmf/tanh (; 125 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/tanh (; 126 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 call $~lib/math/NativeMathf.tanh ) - (func $../../lib/libm/assembly/libmf/trunc (; 126 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $../../lib/libm/assembly/libmf/trunc (; 127 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 f32) local.get $0 local.set $1 local.get $1 f32.trunc ) - (func $null (; 127 ;) (type $FUNCSIG$v) + (func $null (; 128 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 583c4b84a0..5d2a19a59a 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -8044,7 +8044,7 @@ if i32.const 0 i32.const 144 - i32.const 1020 + i32.const 1036 i32.const 4 call $~lib/builtins/abort unreachable @@ -8075,7 +8075,7 @@ if i32.const 184 i32.const 144 - i32.const 1029 + i32.const 1045 i32.const 24 call $~lib/builtins/abort unreachable @@ -8122,7 +8122,7 @@ if i32.const 184 i32.const 144 - i32.const 2309 + i32.const 2319 i32.const 24 call $~lib/builtins/abort unreachable @@ -9677,16 +9677,7 @@ f32.const 0 call $std/math/check ) - (func $~lib/math/NativeMath.imul (; 157 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - f64.add - call $~lib/number/isFinite - i32.eqz - if - f64.const 0 - return - end + (func $~lib/math/dtoi32 (; 157 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 f64.const 4294967296 local.get $0 @@ -9697,20 +9688,25 @@ f64.sub i64.trunc_f64_s i32.wrap_i64 + ) + (func $~lib/math/NativeMath.imul (; 158 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + local.get $0 local.get $1 - f64.const 4294967296 + f64.add + call $~lib/number/isFinite + i32.eqz + if + f64.const 0 + return + end + local.get $0 + call $~lib/math/dtoi32 local.get $1 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 + call $~lib/math/dtoi32 i32.mul f64.convert_i32_s ) - (func $~lib/math/NativeMath.clz32 (; 158 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.clz32 (; 159 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/number/isFinite i32.eqz @@ -9719,19 +9715,11 @@ return end local.get $0 - f64.const 4294967296 - local.get $0 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 + call $~lib/math/dtoi32 i32.clz f64.convert_i32_s ) - (func $~lib/math/ipow64 (; 159 ;) (type $FUNCSIG$jji) (param $0 i64) (param $1 i32) (result i64) + (func $~lib/math/ipow64 (; 160 ;) (type $FUNCSIG$jji) (param $0 i64) (param $1 i32) (result i64) (local $2 i64) i64.const 1 local.set $2 @@ -9763,7 +9751,7 @@ end local.get $2 ) - (func $~lib/math/ipow32f (; 160 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) + (func $~lib/math/ipow32f (; 161 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) (local $2 f32) (local $3 i32) local.get $1 @@ -9809,7 +9797,7 @@ end local.get $2 ) - (func $~lib/math/ipow64f (; 161 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/ipow64f (; 162 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) (local $2 f64) (local $3 i32) local.get $1 @@ -9855,7 +9843,7 @@ end local.get $2 ) - (func $start:std/math (; 162 ;) (type $FUNCSIG$v) + (func $start:std/math (; 163 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) (local $2 f32) @@ -39882,10 +39870,10 @@ unreachable end ) - (func $start (; 163 ;) (type $FUNCSIG$v) + (func $start (; 164 ;) (type $FUNCSIG$v) call $start:std/math ) - (func $null (; 164 ;) (type $FUNCSIG$v) + (func $null (; 165 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index b86637b3b6..900f3c105d 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -10135,7 +10135,7 @@ if i32.const 0 i32.const 144 - i32.const 1020 + i32.const 1036 i32.const 4 call $~lib/builtins/abort unreachable @@ -10167,7 +10167,7 @@ if i32.const 184 i32.const 144 - i32.const 1029 + i32.const 1045 i32.const 24 call $~lib/builtins/abort unreachable @@ -10224,7 +10224,7 @@ if i32.const 184 i32.const 144 - i32.const 2309 + i32.const 2319 i32.const 24 call $~lib/builtins/abort unreachable @@ -12798,7 +12798,78 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.imul (; 160 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/dtoi32 (; 160 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (local $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) + i32.const 0 + local.set $1 + local.get $0 + i64.reinterpret_f64 + local.set $2 + local.get $2 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $3 + local.get $3 + i64.const 1053 + i64.le_u + if + local.get $0 + i32.trunc_f64_s + local.set $1 + else + local.get $3 + i64.const 1106 + i64.le_u + if + local.get $2 + i64.const 1 + i64.const 52 + i64.shl + i64.const 1 + i64.sub + i64.and + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $4 + local.get $4 + local.get $3 + i64.const 1023 + i64.sub + i64.const 52 + i64.sub + i64.const 32 + i64.add + i64.shl + local.set $4 + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $1 + i32.const 0 + local.get $1 + i32.sub + local.get $1 + local.get $2 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + select + local.set $1 + end + end + local.get $1 + return + ) + (func $~lib/math/NativeMath.imul (; 161 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) local.get $0 local.get $1 f64.add @@ -12809,29 +12880,13 @@ return end local.get $0 - f64.const 4294967296 - local.get $0 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - local.get $1 - f64.const 4294967296 + call $~lib/math/dtoi32 local.get $1 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 + call $~lib/math/dtoi32 i32.mul f64.convert_i32_s ) - (func $~lib/math/NativeMath.clz32 (; 161 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.clz32 (; 162 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) local.get $0 call $~lib/number/isFinite i32.eqz @@ -12840,21 +12895,11 @@ return end local.get $0 - f64.const 4294967296 - local.get $0 - f64.const 1 - f64.const 4294967296 - f64.div - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 + call $~lib/math/dtoi32 i32.clz f64.convert_i32_s ) - (func $~lib/math/ipow64 (; 162 ;) (type $FUNCSIG$jji) (param $0 i64) (param $1 i32) (result i64) + (func $~lib/math/ipow64 (; 163 ;) (type $FUNCSIG$jji) (param $0 i64) (param $1 i32) (result i64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -13075,7 +13120,7 @@ end local.get $2 ) - (func $~lib/math/ipow32f (; 163 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) + (func $~lib/math/ipow32f (; 164 ;) (type $FUNCSIG$ffi) (param $0 f32) (param $1 i32) (result f32) (local $2 i32) (local $3 f32) local.get $1 @@ -13125,7 +13170,7 @@ local.get $3 end ) - (func $~lib/math/ipow64f (; 164 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/ipow64f (; 165 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) (local $2 i32) (local $3 f64) local.get $1 @@ -13175,7 +13220,7 @@ local.get $3 end ) - (func $start:std/math (; 165 ;) (type $FUNCSIG$v) + (func $start:std/math (; 166 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) (local $2 i64) @@ -46850,9 +46895,9 @@ unreachable end ) - (func $start (; 166 ;) (type $FUNCSIG$v) + (func $start (; 167 ;) (type $FUNCSIG$v) call $start:std/math ) - (func $null (; 167 ;) (type $FUNCSIG$v) + (func $null (; 168 ;) (type $FUNCSIG$v) ) ) From 9c2420b20948427fa18bbc639835d9047ab3273d Mon Sep 17 00:00:00 2001 From: Daniel Wirtz Date: Wed, 28 Aug 2019 20:08:25 +0200 Subject: [PATCH 06/24] Fix missing shared types in assemblyscript.d.ts (#786) --- package.json | 2 +- scripts/build-dts.js | 11 +++++++++++ src/index.ts | 2 +- std/assembly/shared/tsconfig.json | 11 +++++++++++ tests/dts/index.ts | 5 +++++ 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 std/assembly/shared/tsconfig.json create mode 100644 tests/dts/index.ts diff --git a/package.json b/package.json index 8360001eeb..9c583beb75 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "scripts": { "build": "npm run build:bundle && npm run build:dts", "build:bundle": "webpack --mode production --display-modules", - "build:dts": "node scripts/build-dts", + "build:dts": "node scripts/build-dts && tsc --noEmit tests/dts/index", "clean": "node scripts/clean", "check": "npm run check:config && npm run check:compiler", "check:config": "tsc --noEmit -p src --diagnostics --listFiles", diff --git a/scripts/build-dts.js b/scripts/build-dts.js index d301245153..7f9de26678 100644 --- a/scripts/build-dts.js +++ b/scripts/build-dts.js @@ -448,3 +448,14 @@ module.exports.default({ sendMessage: console.log, stdout: stdout }); + +stdout.write("\n"); + +module.exports.default({ + project: path.resolve(__dirname, "..", "std/assembly/shared"), + prefix: "assemblyscript/std/assembly/shared", + exclude: [], + verbose: true, + sendMessage: console.log, + stdout: stdout +}); diff --git a/src/index.ts b/src/index.ts index d35b2b2126..097418cbb1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -208,4 +208,4 @@ export * from "./program"; export * from "./resolver"; export * from "./tokenizer"; export * from "./types"; -export * from "./util"; +export * from "./util/index"; diff --git a/std/assembly/shared/tsconfig.json b/std/assembly/shared/tsconfig.json new file mode 100644 index 0000000000..6dafbedf83 --- /dev/null +++ b/std/assembly/shared/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../portable.json", + "compilerOptions": { + "outDir": "../../../out", + "allowJs": false, + "sourceMap": true + }, + "include": [ + "./**/*.ts" + ] +} diff --git a/tests/dts/index.ts b/tests/dts/index.ts new file mode 100644 index 0000000000..1c698f6831 --- /dev/null +++ b/tests/dts/index.ts @@ -0,0 +1,5 @@ +// used to check dist/assemblyscript.d.ts +import * as as from "../.."; + +var parser: as.Parser = as.parseFile("", "empty"); +parser.finish(); From 9ba81629b5ffeb0278340fe55f97abca8c5775ef Mon Sep 17 00:00:00 2001 From: Daniel Wirtz Date: Wed, 28 Aug 2019 21:21:24 +0200 Subject: [PATCH 07/24] Improve stub RT reallocation (#790) --- std/assembly/rt/stub.ts | 51 +- tests/compiler/call-super.optimized.wat | 98 +- tests/compiler/call-super.untouched.wat | 120 +- tests/compiler/constructor.optimized.wat | 78 +- tests/compiler/constructor.untouched.wat | 107 +- tests/compiler/exports.optimized.wat | 69 +- tests/compiler/exports.untouched.wat | 120 +- tests/compiler/getter-call.optimized.wat | 46 +- tests/compiler/getter-call.untouched.wat | 96 +- tests/compiler/inlining.optimized.wat | 78 +- tests/compiler/inlining.untouched.wat | 86 +- tests/compiler/number.optimized.wat | 112 +- tests/compiler/number.untouched.wat | 142 +- .../optional-typeparameters.optimized.wat | 54 +- .../optional-typeparameters.untouched.wat | 95 +- tests/compiler/resolve-access.optimized.wat | 103 +- tests/compiler/resolve-access.untouched.wat | 128 +- tests/compiler/retain-release.optimized.wat | 101 +- tests/compiler/retain-release.untouched.wat | 162 +- tests/compiler/rt/instanceof.optimized.wat | 64 +- tests/compiler/rt/instanceof.untouched.wat | 95 +- tests/compiler/rt/stub-realloc.json | 6 + tests/compiler/rt/stub-realloc.optimized.wat | 515 +++++ tests/compiler/rt/stub-realloc.ts | 27 + tests/compiler/rt/stub-realloc.untouched.wat | 1649 +++++++++++++++++ tests/compiler/runtime-stub.optimized.wat | 81 +- tests/compiler/runtime-stub.untouched.wat | 90 +- tests/compiler/std/date.optimized.wat | 44 +- tests/compiler/std/date.untouched.wat | 93 +- tests/compiler/std/new.optimized.wat | 44 +- tests/compiler/std/new.untouched.wat | 89 +- .../compiler/std/object-literal.optimized.wat | 87 +- .../compiler/std/object-literal.untouched.wat | 102 +- .../std/operator-overloading.optimized.wat | 72 +- .../std/operator-overloading.untouched.wat | 152 +- tests/compiler/std/static-array.optimized.wat | 194 +- tests/compiler/std/static-array.untouched.wat | 233 ++- tests/compiler/std/symbol.optimized.wat | 127 +- tests/compiler/std/symbol.untouched.wat | 140 +- 39 files changed, 4175 insertions(+), 1575 deletions(-) create mode 100644 tests/compiler/rt/stub-realloc.json create mode 100644 tests/compiler/rt/stub-realloc.optimized.wat create mode 100644 tests/compiler/rt/stub-realloc.ts create mode 100644 tests/compiler/rt/stub-realloc.untouched.wat diff --git a/std/assembly/rt/stub.ts b/std/assembly/rt/stub.ts index 9c4f10ac82..c715c962bf 100644 --- a/std/assembly/rt/stub.ts +++ b/std/assembly/rt/stub.ts @@ -8,21 +8,26 @@ var startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK; @lazy var offset: usize = startOffset; -// @ts-ignore: decorator -@unsafe @global -export function __alloc(size: usize, id: u32): usize { - if (size > BLOCK_MAXSIZE) unreachable(); - var ptr = offset + BLOCK_OVERHEAD; - var newPtr = (ptr + max(size, 1) + AL_MASK) & ~AL_MASK; +function maybeGrowMemory(newOffset: usize): void { + newOffset = (newOffset + AL_MASK) & ~AL_MASK; var pagesBefore = memory.size(); - if (newPtr > pagesBefore << 16) { - let pagesNeeded = ((newPtr - ptr + 0xffff) & ~0xffff) >>> 16; + var maxOffset = pagesBefore << 16; + if (newOffset > maxOffset) { + let pagesNeeded = ((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16; let pagesWanted = max(pagesBefore, pagesNeeded); // double memory if (memory.grow(pagesWanted) < 0) { if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory } } - offset = newPtr; + offset = newOffset; +} + +// @ts-ignore: decorator +@unsafe @global +export function __alloc(size: usize, id: u32): usize { + if (size > BLOCK_MAXSIZE) unreachable(); + var ptr = offset + BLOCK_OVERHEAD; + maybeGrowMemory(ptr + max(size, 1)); var block = changetype(ptr - BLOCK_OVERHEAD); block.rtId = id; block.rtSize = size; @@ -31,17 +36,25 @@ export function __alloc(size: usize, id: u32): usize { // @ts-ignore: decorator @unsafe @global -export function __realloc(ref: usize, size: usize): usize { - var block = changetype(ref - BLOCK_OVERHEAD); - var oldSize = block.rtSize; - if (size > oldSize) { - let newRef = __alloc(size, block.rtId); - memory.copy(newRef, ref, oldSize); - ref = newRef; - } else { - block.rtSize = size; +export function __realloc(ptr: usize, size: usize): usize { + assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned + var block = changetype(ptr - BLOCK_OVERHEAD); + var actualSize = (block.rtSize + AL_MASK) & ~AL_MASK; + var isLast = ptr + actualSize == offset; + if (size > actualSize) { + if (isLast) { // maybe grow + if (size > BLOCK_MAXSIZE) unreachable(); + maybeGrowMemory(ptr + size); + } else { // copy to new block at least double the size + let newPtr = __alloc(max(size, actualSize << 1), block.rtId); + memory.copy(newPtr, ptr, actualSize); + block = changetype((ptr = newPtr) - BLOCK_OVERHEAD); + } + } else if (isLast) { // shrink + offset = (ptr + size + AL_MASK) & ~AL_MASK; } - return ref; + block.rtSize = size; + return ptr; } // @ts-ignore: decorator diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 19f45f6bad..afe7f7d5cc 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -2,6 +2,7 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -11,42 +12,25 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - local.get $0 - i32.const 1 local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 + local.tee $0 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $4 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -54,16 +38,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -72,20 +56,42 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset - local.get $3 + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $2 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.tee $3 local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store offset=12 - local.get $3 + local.get $2 ) - (func $call-super/A#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/A#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -111,7 +117,7 @@ end local.get $0 ) - (func $call-super/B#constructor (; 3 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/B#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 i32.const 4 @@ -146,7 +152,7 @@ end local.get $0 ) - (func $call-super/test1 (; 4 ;) (type $FUNCSIG$v) + (func $call-super/test1 (; 5 ;) (type $FUNCSIG$v) (local $0 i32) call $call-super/B#constructor local.tee $0 @@ -174,7 +180,7 @@ unreachable end ) - (func $call-super/D#constructor (; 5 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/D#constructor (; 6 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 i32.const 6 @@ -219,7 +225,7 @@ end local.get $0 ) - (func $call-super/test2 (; 6 ;) (type $FUNCSIG$v) + (func $call-super/test2 (; 7 ;) (type $FUNCSIG$v) (local $0 i32) call $call-super/D#constructor local.tee $0 @@ -247,7 +253,7 @@ unreachable end ) - (func $call-super/E#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/E#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -273,7 +279,7 @@ end local.get $0 ) - (func $call-super/test3 (; 8 ;) (type $FUNCSIG$v) + (func $call-super/test3 (; 9 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 8 i32.const 8 @@ -307,7 +313,7 @@ unreachable end ) - (func $call-super/H#constructor (; 9 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/H#constructor (; 10 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 i32.const 10 @@ -328,7 +334,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test4 (; 10 ;) (type $FUNCSIG$v) + (func $call-super/test4 (; 11 ;) (type $FUNCSIG$v) (local $0 i32) call $call-super/H#constructor local.tee $0 @@ -356,7 +362,7 @@ unreachable end ) - (func $call-super/J#constructor (; 11 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/J#constructor (; 12 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 i32.const 12 @@ -377,7 +383,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test5 (; 12 ;) (type $FUNCSIG$v) + (func $call-super/test5 (; 13 ;) (type $FUNCSIG$v) (local $0 i32) call $call-super/J#constructor local.tee $0 @@ -405,7 +411,7 @@ unreachable end ) - (func $start (; 13 ;) (type $FUNCSIG$v) + (func $start (; 14 ;) (type $FUNCSIG$v) i32.const 64 global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset @@ -416,7 +422,7 @@ call $call-super/test4 call $call-super/test5 ) - (func $null (; 14 ;) (type $FUNCSIG$v) + (func $null (; 15 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 866c9146f9..3576b7b267 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -2,8 +2,8 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 8) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00") @@ -14,50 +14,31 @@ (global $~lib/heap/__heap_base i32 (i32.const 52)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -69,12 +50,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -92,24 +73,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $call-super/A#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/A#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -137,7 +145,7 @@ end local.get $0 ) - (func $call-super/B#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/B#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -180,10 +188,10 @@ end local.get $0 ) - (func $~lib/rt/stub/__release (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $call-super/test1 (; 6 ;) (type $FUNCSIG$v) + (func $call-super/test1 (; 7 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/B#constructor @@ -217,7 +225,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $call-super/C#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/C#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -232,7 +240,7 @@ i32.store local.get $0 ) - (func $call-super/D#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/D#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -275,7 +283,7 @@ end local.get $0 ) - (func $call-super/test2 (; 9 ;) (type $FUNCSIG$v) + (func $call-super/test2 (; 10 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/D#constructor @@ -309,7 +317,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $call-super/E#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/E#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -337,7 +345,7 @@ end local.get $0 ) - (func $call-super/F#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/F#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -355,7 +363,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test3 (; 12 ;) (type $FUNCSIG$v) + (func $call-super/test3 (; 13 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/F#constructor @@ -389,7 +397,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $call-super/G#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/G#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -404,7 +412,7 @@ i32.store local.get $0 ) - (func $call-super/H#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/H#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -422,7 +430,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test4 (; 15 ;) (type $FUNCSIG$v) + (func $call-super/test4 (; 16 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/H#constructor @@ -456,7 +464,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $call-super/I#constructor (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/I#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -471,7 +479,7 @@ i32.store local.get $0 ) - (func $call-super/J#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/J#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -489,7 +497,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test5 (; 18 ;) (type $FUNCSIG$v) + (func $call-super/test5 (; 19 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/J#constructor @@ -523,7 +531,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $start:call-super (; 19 ;) (type $FUNCSIG$v) + (func $start:call-super (; 20 ;) (type $FUNCSIG$v) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -540,9 +548,9 @@ call $call-super/test4 call $call-super/test5 ) - (func $start (; 20 ;) (type $FUNCSIG$v) + (func $start (; 21 ;) (type $FUNCSIG$v) call $start:call-super ) - (func $null (; 21 ;) (type $FUNCSIG$v) + (func $null (; 22 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 4fac0d0ae5..04c91348ea 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,5 +1,6 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (memory $0 0) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -17,42 +18,25 @@ (global $constructor/ctorConditionallyAllocates (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - local.get $0 - i32.const 1 local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 + local.tee $0 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $4 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -60,16 +44,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -78,20 +62,42 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset - local.get $3 + ) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $2 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.tee $3 local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store offset=12 - local.get $3 + local.get $2 ) - (func $start:constructor (; 1 ;) (type $FUNCSIG$v) + (func $start:constructor (; 2 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 16 global.set $~lib/rt/stub/startOffset @@ -172,10 +178,10 @@ local.get $0 global.set $constructor/ctorConditionallyAllocates ) - (func $start (; 2 ;) (type $FUNCSIG$v) + (func $start (; 3 ;) (type $FUNCSIG$v) call $start:constructor ) - (func $null (; 3 ;) (type $FUNCSIG$v) + (func $null (; 4 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 1ae5687c2d..61b3283e95 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -1,6 +1,7 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (memory $0 0) (table $0 1 funcref) @@ -21,50 +22,31 @@ (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 - local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -76,12 +58,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -99,24 +81,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $constructor/EmptyCtor#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/EmptyCtor#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -128,7 +137,7 @@ end local.get $0 ) - (func $constructor/EmptyCtorWithFieldInit#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/EmptyCtorWithFieldInit#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -143,7 +152,7 @@ i32.store local.get $0 ) - (func $constructor/EmptyCtorWithFieldNoInit#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/EmptyCtorWithFieldNoInit#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -158,7 +167,7 @@ i32.store local.get $0 ) - (func $constructor/None#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/None#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -170,7 +179,7 @@ end local.get $0 ) - (func $constructor/JustFieldInit#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/JustFieldInit#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -185,7 +194,7 @@ i32.store local.get $0 ) - (func $constructor/JustFieldNoInit#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/JustFieldNoInit#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -200,11 +209,11 @@ i32.store local.get $0 ) - (func $constructor/CtorReturns#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorReturns#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 call $~lib/rt/stub/__retain ) - (func $constructor/CtorConditionallyReturns#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorConditionallyReturns#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) global.get $constructor/b if i32.const 0 @@ -222,7 +231,7 @@ end local.get $0 ) - (func $constructor/CtorAllocates#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorAllocates#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -236,7 +245,7 @@ drop local.get $0 ) - (func $constructor/CtorConditionallyAllocates#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorConditionallyAllocates#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) global.get $constructor/b if local.get $0 @@ -262,7 +271,7 @@ end local.get $0 ) - (func $start:constructor (; 12 ;) (type $FUNCSIG$v) + (func $start:constructor (; 13 ;) (type $FUNCSIG$v) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -304,9 +313,9 @@ call $constructor/CtorConditionallyAllocates#constructor global.set $constructor/ctorConditionallyAllocates ) - (func $start (; 13 ;) (type $FUNCSIG$v) + (func $start (; 14 ;) (type $FUNCSIG$v) call $start:constructor ) - (func $null (; 14 ;) (type $FUNCSIG$v) + (func $null (; 15 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 41ec64f57d..7de1f70d26 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -1,9 +1,9 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (memory $0 0) (global $exports/Animal.CAT i32 (i32.const 0)) @@ -60,29 +60,25 @@ (func $exports/Car.getNumTires (; 2 ;) (type $FUNCSIG$i) (result i32) i32.const 4 ) - (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $2 - i32.const 19 + local.get $0 + i32.const 15 i32.add i32.const -16 i32.and - local.tee $1 + local.tee $0 memory.size - local.tee $3 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $3 - local.get $1 local.get $2 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -90,16 +86,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 - local.get $3 - local.get $4 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -108,41 +104,52 @@ end end end - local.get $1 + local.get $0 global.set $~lib/rt/stub/offset - local.get $2 + ) + (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $1 + i32.const 4 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $1 + i32.const 16 + i32.sub + local.tee $2 local.get $0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 4 i32.store offset=12 - local.get $2 + local.get $1 ) - (func $exports/Car#get:numDoors (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $exports/Car#get:numDoors (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $exports/Car#set:numDoors (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $exports/Car#set:numDoors (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/Car#openDoors (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $exports/Car#openDoors (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $start (; 7 ;) (type $FUNCSIG$v) + (func $start (; 8 ;) (type $FUNCSIG$v) i32.const 16 global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $null (; 9 ;) (type $FUNCSIG$v) nop ) - (func $exports/subOpt|trampoline (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/subOpt|trampoline (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -160,11 +167,11 @@ local.get $1 call $exports/subOpt ) - (func $~lib/setargc (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/setargc (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.set $~lib/argc ) - (func $exports/Car#constructor|trampoline (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor|trampoline (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -191,7 +198,7 @@ i32.store local.get $0 ) - (func $exports/vehicles.Car#constructor|trampoline (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/vehicles.Car#constructor|trampoline (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 437afdba2c..83d21f38ff 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -1,9 +1,9 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (memory $0 0) (table $0 1 funcref) @@ -68,50 +68,31 @@ (func $exports/Car.getNumTires (; 3 ;) (type $FUNCSIG$i) (result i32) global.get $exports/Car.TIRES ) - (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 - local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -123,12 +104,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -146,24 +127,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $exports/Car#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.eqz if @@ -181,22 +189,22 @@ i32.store local.get $0 ) - (func $exports/Car#get:numDoors (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $exports/Car#get:numDoors (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $exports/Car#set:numDoors (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $exports/Car#set:numDoors (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/Car#openDoors (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $exports/Car#openDoors (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $exports/vehicles.Car.getNumTires (; 10 ;) (type $FUNCSIG$i) (result i32) + (func $exports/vehicles.Car.getNumTires (; 11 ;) (type $FUNCSIG$i) (result i32) global.get $exports/vehicles.Car.TIRES ) - (func $exports/vehicles.Car#constructor (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/vehicles.Car#constructor (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.eqz if @@ -214,19 +222,19 @@ i32.store local.get $0 ) - (func $exports/vehicles.Car#get:numDoors (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $exports/vehicles.Car#get:numDoors (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $exports/vehicles.Car#set:numDoors (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $exports/vehicles.Car#set:numDoors (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/vehicles.Car#openDoors (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $exports/vehicles.Car#openDoors (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $start (; 15 ;) (type $FUNCSIG$v) + (func $start (; 16 ;) (type $FUNCSIG$v) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -238,9 +246,9 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $null (; 16 ;) (type $FUNCSIG$v) + (func $null (; 17 ;) (type $FUNCSIG$v) ) - (func $exports/subOpt|trampoline (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/subOpt|trampoline (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -258,20 +266,20 @@ local.get $1 call $exports/subOpt ) - (func $~lib/setargc (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/setargc (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.set $~lib/argc ) - (func $Car#get:doors (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $Car#get:doors (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $Car#set:doors (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $Car#set:doors (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/Car#constructor|trampoline (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor|trampoline (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -287,16 +295,16 @@ local.get $1 call $exports/Car#constructor ) - (func $vehicles.Car#get:doors (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $vehicles.Car#get:doors (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $vehicles.Car#set:doors (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $vehicles.Car#set:doors (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/vehicles.Car#constructor|trampoline (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/vehicles.Car#constructor|trampoline (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 83ce54dcb4..8af8457747 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -1,5 +1,6 @@ (module (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (memory $0 0) (table $0 2 funcref) @@ -10,16 +11,11 @@ (export "memory" (memory $0)) (export "test" (func $getter-call/test)) (start $start) - (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) + (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $1 - i32.const 16 + local.get $0 + i32.const 15 i32.add i32.const -16 i32.and @@ -28,6 +24,7 @@ local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if local.get $2 @@ -40,16 +37,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $1 local.get $2 - local.get $3 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -60,34 +57,45 @@ end local.get $0 global.set $~lib/rt/stub/offset - local.get $1 + ) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $0 + i32.const 1 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $0 + i32.const 16 + i32.sub + local.tee $1 i32.const 3 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $1 + local.get $0 ) - (func $getter-call/C#get:x~anonymous|0 (; 1 ;) (type $FUNCSIG$i) (result i32) + (func $getter-call/C#get:x~anonymous|0 (; 2 ;) (type $FUNCSIG$i) (result i32) i32.const 42 ) - (func $getter-call/test (; 2 ;) (type $FUNCSIG$i) (result i32) + (func $getter-call/test (; 3 ;) (type $FUNCSIG$i) (result i32) call $~lib/rt/stub/__alloc drop i32.const 0 global.set $~lib/argc call $getter-call/C#get:x~anonymous|0 ) - (func $start (; 3 ;) (type $FUNCSIG$v) + (func $start (; 4 ;) (type $FUNCSIG$v) i32.const 16 global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $null (; 4 ;) (type $FUNCSIG$v) + (func $null (; 5 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 7aa2b4fb91..6e23747da5 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -1,8 +1,8 @@ (module (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (memory $0 0) (table $0 2 funcref) @@ -14,50 +14,31 @@ (export "memory" (memory $0)) (export "test" (func $getter-call/test)) (start $start) - (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -69,12 +50,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -92,24 +73,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $getter-call/C#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $getter-call/C#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -121,16 +129,16 @@ end local.get $0 ) - (func $getter-call/C#get:x~anonymous|0 (; 3 ;) (type $FUNCSIG$i) (result i32) + (func $getter-call/C#get:x~anonymous|0 (; 4 ;) (type $FUNCSIG$i) (result i32) i32.const 42 ) - (func $getter-call/C#get:x (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $getter-call/C#get:x (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 ) - (func $~lib/rt/stub/__release (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $getter-call/test (; 6 ;) (type $FUNCSIG$i) (result i32) + (func $getter-call/test (; 7 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 0 @@ -146,7 +154,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $start (; 7 ;) (type $FUNCSIG$v) + (func $start (; 8 ;) (type $FUNCSIG$v) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -158,6 +166,6 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $null (; 9 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 4a6cea5bd8..738b0b807a 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -3,6 +3,7 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -37,42 +38,25 @@ unreachable end ) - (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - local.get $0 - i32.const 1 local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 + local.tee $0 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $4 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -80,16 +64,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -98,20 +82,42 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset - local.get $3 + ) + (func $~lib/rt/stub/__alloc (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $2 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.tee $3 local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store offset=12 - local.get $3 + local.get $2 ) - (func $inlining/test_ctor (; 5 ;) (type $FUNCSIG$v) + (func $inlining/test_ctor (; 6 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 16 i32.const 5 @@ -191,7 +197,7 @@ unreachable end ) - (func $start (; 6 ;) (type $FUNCSIG$v) + (func $start (; 7 ;) (type $FUNCSIG$v) call $inlining/test_funcs i32.const 48 global.set $~lib/rt/stub/startOffset @@ -199,7 +205,7 @@ global.set $~lib/rt/stub/offset call $inlining/test_ctor ) - (func $null (; 7 ;) (type $FUNCSIG$v) + (func $null (; 8 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index a7fe2b0a7b..9ea72bd92f 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -275,50 +275,31 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $~lib/rt/stub/__alloc (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 - local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -330,12 +311,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -353,21 +334,48 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $inlining/test_ctor (; 7 ;) (type $FUNCSIG$v) + (func $inlining/test_ctor (; 8 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -475,7 +483,7 @@ local.get $4 call $~lib/rt/stub/__release ) - (func $start:inlining (; 8 ;) (type $FUNCSIG$v) + (func $start:inlining (; 9 ;) (type $FUNCSIG$v) call $inlining/test i32.const 3 i32.eq @@ -501,9 +509,9 @@ global.set $~lib/rt/stub/offset call $inlining/test_ctor ) - (func $start (; 9 ;) (type $FUNCSIG$v) + (func $start (; 10 ;) (type $FUNCSIG$v) call $start:inlining ) - (func $null (; 10 ;) (type $FUNCSIG$v) + (func $null (; 11 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index c4aedadaa8..ae8b8dde48 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -1,6 +1,7 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$id (func (param f64) (result i32))) @@ -91,42 +92,25 @@ i32.lt_u select ) - (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $2 local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $1 + local.tee $0 memory.size - local.tee $3 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $3 - local.get $1 local.get $2 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -134,16 +118,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 - local.get $3 - local.get $4 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -152,20 +136,42 @@ end end end - local.get $1 + local.get $0 global.set $~lib/rt/stub/offset - local.get $2 + ) + (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $1 + local.get $0 i32.const 1 - i32.store offset=8 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $1 + i32.const 16 + i32.sub + local.tee $2 + i32.const 1 + i32.store offset=8 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $1 ) - (func $~lib/util/number/utoa_simple (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) loop $continue|0 local.get $1 @@ -192,7 +198,7 @@ br_if $continue|0 end ) - (func $~lib/util/number/itoa32 (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -232,7 +238,7 @@ end local.get $2 ) - (func $~lib/string/String#get:length (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -240,7 +246,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) loop $continue|0 local.get $2 @@ -273,7 +279,7 @@ end local.get $3 ) - (func $~lib/string/String.__eq (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -305,19 +311,19 @@ end i32.const 0 ) - (func $~lib/number/isFinite (; 8 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/isFinite (; 9 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/number/isNaN (; 9 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/isNaN (; 10 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/util/number/genDigits (; 10 ;) (type $FUNCSIG$iijijij) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) + (func $~lib/util/number/genDigits (; 11 ;) (type $FUNCSIG$iijijij) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) (local $6 i32) (local $7 i32) (local $8 i64) @@ -717,7 +723,7 @@ i32.store16 local.get $2 ) - (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -892,7 +898,7 @@ end end ) - (func $~lib/util/number/prettify (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -1139,7 +1145,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/dtoa_core (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i64) (local $2 i64) (local $3 i64) @@ -1316,7 +1322,7 @@ global.get $~lib/util/number/_K call $~lib/util/number/prettify ) - (func $~lib/string/String#substring (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 0 @@ -1389,7 +1395,7 @@ call $~lib/memory/memory.copy local.get $1 ) - (func $~lib/util/number/dtoa (; 15 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/util/number/dtoa (; 16 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) f64.const 2 @@ -1420,13 +1426,13 @@ local.get $1 call $~lib/string/String#substring ) - (func $~lib/number/Bool#toString (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/Bool#toString (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1424 i32.const 1448 local.get $0 select ) - (func $~lib/number/F32.isSafeInteger (; 17 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isSafeInteger (; 18 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 f32.trunc local.get $0 @@ -1438,7 +1444,7 @@ f32.le select ) - (func $~lib/number/F32.isInteger (; 18 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isInteger (; 19 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 f32.trunc local.get $0 @@ -1451,7 +1457,7 @@ f32.eq select ) - (func $~lib/number/F64.isSafeInteger (; 19 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isSafeInteger (; 20 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 f64.trunc local.get $0 @@ -1463,7 +1469,7 @@ f64.le select ) - (func $~lib/number/F64.isInteger (; 20 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isInteger (; 21 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 call $~lib/number/isFinite if (result i32) @@ -1475,7 +1481,7 @@ i32.const 0 end ) - (func $start:number (; 21 ;) (type $FUNCSIG$v) + (func $start:number (; 22 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 1472 global.set $~lib/rt/stub/startOffset @@ -2093,10 +2099,10 @@ unreachable end ) - (func $start (; 22 ;) (type $FUNCSIG$v) + (func $start (; 23 ;) (type $FUNCSIG$v) call $start:number ) - (func $null (; 23 ;) (type $FUNCSIG$v) + (func $null (; 24 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index d5882c6b36..3ae85d8c98 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -1,8 +1,8 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$idi (func (param f64 i32) (result i32))) @@ -130,50 +130,31 @@ end unreachable ) - (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 - local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -185,12 +166,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -208,21 +189,48 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/util/number/utoa32_lut (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -364,7 +372,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -419,15 +427,15 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/rt/stub/__release (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/number/I32#toString (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -439,7 +447,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String#get:length (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -447,7 +455,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 11 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -512,7 +520,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/string/String.__eq (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -585,19 +593,19 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/number/isFinite (; 12 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/isFinite (; 13 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/number/isNaN (; 13 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/isNaN (; 14 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/array/Array#__unchecked_get (; 14 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 15 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -606,7 +614,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__unchecked_get (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -615,7 +623,7 @@ i32.add i32.load16_s ) - (func $~lib/util/number/genDigits (; 16 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 17 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i64) @@ -1117,7 +1125,7 @@ end unreachable ) - (func $~lib/util/memory/memcpy (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2145,7 +2153,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2370,7 +2378,7 @@ end end ) - (func $~lib/util/number/prettify (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2689,7 +2697,7 @@ end unreachable ) - (func $~lib/util/number/dtoa_core (; 20 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 21 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3111,7 +3119,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3218,10 +3226,10 @@ local.get $10 call $~lib/rt/stub/__retain ) - (func $~lib/rt/stub/__free (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__free (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/util/number/dtoa (; 23 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 24 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3280,11 +3288,11 @@ call $~lib/rt/stub/__free local.get $3 ) - (func $~lib/number/F64#toString (; 24 ;) (type $FUNCSIG$idi) (param $0 f64) (param $1 i32) (result i32) + (func $~lib/number/F64#toString (; 25 ;) (type $FUNCSIG$idi) (param $0 f64) (param $1 i32) (result i32) local.get $0 call $~lib/util/number/dtoa ) - (func $~lib/number/Bool#toString (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/Bool#toString (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -3299,12 +3307,12 @@ end call $~lib/rt/stub/__retain ) - (func $~lib/number/isNaN (; 26 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/isNaN (; 27 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/number/F32.isSafeInteger (; 27 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isSafeInteger (; 28 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 f32.abs global.get $~lib/builtins/f32.MAX_SAFE_INTEGER @@ -3318,14 +3326,14 @@ i32.const 0 end ) - (func $~lib/number/isFinite (; 28 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/isFinite (; 29 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.sub f32.const 0 f32.eq ) - (func $~lib/number/F32.isInteger (; 29 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isInteger (; 30 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 call $~lib/number/isFinite if (result i32) @@ -3337,7 +3345,7 @@ i32.const 0 end ) - (func $~lib/number/F64.isSafeInteger (; 30 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isSafeInteger (; 31 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 f64.abs global.get $~lib/builtins/f64.MAX_SAFE_INTEGER @@ -3351,7 +3359,7 @@ i32.const 0 end ) - (func $~lib/number/F64.isInteger (; 31 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isInteger (; 32 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 call $~lib/number/isFinite if (result i32) @@ -3363,7 +3371,7 @@ i32.const 0 end ) - (func $start:number (; 32 ;) (type $FUNCSIG$v) + (func $start:number (; 33 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4123,9 +4131,9 @@ local.get $10 call $~lib/rt/stub/__release ) - (func $start (; 33 ;) (type $FUNCSIG$v) + (func $start (; 34 ;) (type $FUNCSIG$v) call $start:number ) - (func $null (; 34 ;) (type $FUNCSIG$v) + (func $null (; 35 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 64a1f4e32d..eff80db176 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -1,4 +1,5 @@ (module + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (memory $0 0) @@ -8,29 +9,25 @@ (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $2 - i32.const 16 + local.get $0 + i32.const 15 i32.add i32.const -16 i32.and - local.tee $1 + local.tee $0 memory.size - local.tee $3 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $3 - local.get $1 local.get $2 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -38,16 +35,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 - local.get $3 - local.get $4 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -56,20 +53,31 @@ end end end - local.get $1 + local.get $0 global.set $~lib/rt/stub/offset - local.get $2 + ) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $1 + i32.const 1 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $1 + i32.const 16 + i32.sub + local.tee $2 local.get $0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.store offset=12 - local.get $2 + local.get $1 ) - (func $start (; 1 ;) (type $FUNCSIG$v) + (func $start (; 2 ;) (type $FUNCSIG$v) i32.const 16 global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset @@ -81,7 +89,7 @@ call $~lib/rt/stub/__alloc global.set $optional-typeparameters/tDerived ) - (func $null (; 2 ;) (type $FUNCSIG$v) + (func $null (; 3 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index a95982f0a4..73204cd63c 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -1,6 +1,7 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$didd (func (param i32 f64 f64) (result f64))) (type $FUNCSIG$v (func)) @@ -20,50 +21,31 @@ (func $optional-typeparameters/testDerived (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 - local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -75,12 +57,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -98,24 +80,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $optional-typeparameters/TestConcrete#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $optional-typeparameters/TestConcrete#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -127,12 +136,12 @@ end local.get $0 ) - (func $optional-typeparameters/TestConcrete#test (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $optional-typeparameters/TestConcrete#test (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 local.get $2 i32.add ) - (func $optional-typeparameters/TestDerived#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $optional-typeparameters/TestDerived#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -144,12 +153,12 @@ end local.get $0 ) - (func $optional-typeparameters/TestDerived#test (; 7 ;) (type $FUNCSIG$didd) (param $0 i32) (param $1 f64) (param $2 f64) (result f64) + (func $optional-typeparameters/TestDerived#test (; 8 ;) (type $FUNCSIG$didd) (param $0 i32) (param $1 f64) (param $2 f64) (result f64) local.get $1 local.get $2 f64.add ) - (func $start:optional-typeparameters (; 8 ;) (type $FUNCSIG$v) + (func $start:optional-typeparameters (; 9 ;) (type $FUNCSIG$v) i32.const 1 call $optional-typeparameters/testConcrete drop @@ -183,9 +192,9 @@ call $optional-typeparameters/TestDerived#test drop ) - (func $start (; 9 ;) (type $FUNCSIG$v) + (func $start (; 10 ;) (type $FUNCSIG$v) call $start:optional-typeparameters ) - (func $null (; 10 ;) (type $FUNCSIG$v) + (func $null (; 11 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index f2e2b7fdd0..67f6201554 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -1,13 +1,13 @@ (module (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ji (func (param i32) (result i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -22,42 +22,25 @@ (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 + local.tee $0 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $4 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -65,16 +48,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -83,20 +66,42 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset - local.get $3 + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $2 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.tee $3 local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store offset=12 - local.get $3 + local.get $2 ) - (func $~lib/memory/memory.copy (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -267,7 +272,7 @@ end end ) - (func $~lib/rt/__allocArray (; 3 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/rt/__allocArray (; 4 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 16 @@ -292,7 +297,7 @@ call $~lib/memory/memory.copy local.get $0 ) - (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/array/Array#__get (; 5 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) i32.const 0 local.get $0 i32.load offset=8 @@ -311,7 +316,7 @@ i32.load offset=4 i64.load ) - (func $~lib/util/number/decimalCount32 (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 i32.const 2 local.get $0 @@ -359,7 +364,7 @@ i32.lt_u select ) - (func $~lib/util/number/utoa_simple (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) loop $continue|0 local.get $1 @@ -386,7 +391,7 @@ br_if $continue|0 end ) - (func $~lib/util/number/decimalCount64 (; 7 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 8 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) i32.const 10 i32.const 11 i32.const 12 @@ -439,7 +444,7 @@ i64.lt_u select ) - (func $~lib/util/number/utoa_simple (; 8 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 9 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) loop $continue|0 local.get $1 @@ -469,7 +474,7 @@ br_if $continue|0 end ) - (func $~lib/util/number/utoa64 (; 9 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 10 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -511,12 +516,12 @@ end local.get $2 ) - (func $resolve-access/arrayAccess (; 10 ;) (type $FUNCSIG$i) (result i32) + (func $resolve-access/arrayAccess (; 11 ;) (type $FUNCSIG$i) (result i32) call $~lib/rt/__allocArray call $~lib/array/Array#__get call $~lib/util/number/utoa64 ) - (func $resolve-access/Container#constructor (; 11 ;) (type $FUNCSIG$i) (result i32) + (func $resolve-access/Container#constructor (; 12 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 i32.const 5 @@ -526,7 +531,7 @@ i64.store local.get $0 ) - (func $resolve-access/fieldAccess (; 12 ;) (type $FUNCSIG$i) (result i32) + (func $resolve-access/fieldAccess (; 13 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) call $resolve-access/Container#constructor local.tee $0 @@ -536,7 +541,7 @@ i64.load call $~lib/util/number/utoa64 ) - (func $~lib/util/number/utoa32 (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -558,7 +563,7 @@ call $~lib/util/number/utoa_simple local.get $2 ) - (func $resolve-access/propertyAccess (; 14 ;) (type $FUNCSIG$i) (result i32) + (func $resolve-access/propertyAccess (; 15 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) call $resolve-access/Container#constructor local.tee $0 @@ -569,13 +574,13 @@ i32.wrap_i64 call $~lib/util/number/utoa32 ) - (func $start (; 15 ;) (type $FUNCSIG$v) + (func $start (; 16 ;) (type $FUNCSIG$v) i32.const 160 global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $null (; 16 ;) (type $FUNCSIG$v) + (func $null (; 17 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index b516278f0a..1b40e0a894 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -2,13 +2,13 @@ (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -30,50 +30,31 @@ (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -85,12 +66,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -108,24 +89,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/util/memory/memcpy (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1153,7 +1161,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1378,7 +1386,7 @@ end end ) - (func $~lib/rt/__allocArray (; 5 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 6 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -1416,7 +1424,7 @@ end local.get $4 ) - (func $~lib/array/Array#__unchecked_get (; 6 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 7 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -1425,7 +1433,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 7 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 8 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -1444,7 +1452,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/util/number/decimalCount32 (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -1510,7 +1518,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1652,7 +1660,7 @@ i32.store16 end ) - (func $~lib/util/number/decimalCount64 (; 10 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 11 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -1725,7 +1733,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 11 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 12 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -1852,7 +1860,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 12 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 13 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1917,15 +1925,15 @@ local.get $1 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 13 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 14 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/rt/stub/__release (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/number/U64#toString (; 15 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/U64#toString (; 16 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1937,7 +1945,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-access/arrayAccess (; 16 ;) (type $FUNCSIG$i) (result i32) + (func $resolve-access/arrayAccess (; 17 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1961,7 +1969,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-access/Container#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $resolve-access/Container#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1976,7 +1984,7 @@ i64.store local.get $0 ) - (func $resolve-access/fieldAccess (; 18 ;) (type $FUNCSIG$i) (result i32) + (func $resolve-access/fieldAccess (; 19 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 0 @@ -1993,12 +2001,12 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $resolve-access/Container#toU32 (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $resolve-access/Container#toU32 (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i64.load i32.wrap_i64 ) - (func $~lib/util/number/utoa32 (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2033,12 +2041,12 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/utoa32 return ) - (func $~lib/number/U32#toString (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/U32#toString (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2050,7 +2058,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-access/propertyAccess (; 23 ;) (type $FUNCSIG$i) (result i32) + (func $resolve-access/propertyAccess (; 24 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 0 @@ -2067,7 +2075,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $start (; 24 ;) (type $FUNCSIG$v) + (func $start (; 25 ;) (type $FUNCSIG$v) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -2079,6 +2087,6 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $null (; 25 ;) (type $FUNCSIG$v) + (func $null (; 26 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat index ec4359055e..aa511b4705 100644 --- a/tests/compiler/retain-release.optimized.wat +++ b/tests/compiler/retain-release.optimized.wat @@ -1,9 +1,9 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -54,42 +54,25 @@ (export "provideRefIndirect" (func $retain-release/provideRefIndirect)) (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirect)) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 + local.tee $0 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $4 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -97,16 +80,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -115,46 +98,68 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset - local.get $3 + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $2 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.tee $3 local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store offset=12 - local.get $3 + local.get $2 ) - (func $retain-release/Ref#constructor (; 2 ;) (type $FUNCSIG$i) (result i32) + (func $retain-release/Ref#constructor (; 3 ;) (type $FUNCSIG$i) (result i32) i32.const 0 i32.const 3 call $~lib/rt/stub/__alloc ) - (func $retain-release/returnRef (; 3 ;) (type $FUNCSIG$i) (result i32) + (func $retain-release/returnRef (; 4 ;) (type $FUNCSIG$i) (result i32) global.get $retain-release/REF ) - (func $retain-release/receiveRef (; 4 ;) (type $FUNCSIG$v) + (func $retain-release/receiveRef (; 5 ;) (type $FUNCSIG$v) nop ) - (func $retain-release/takeRef (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/takeRef (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $retain-release/takeReturnRef (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $retain-release/takeReturnRef (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $retain-release/newRef (; 7 ;) (type $FUNCSIG$v) + (func $retain-release/newRef (; 8 ;) (type $FUNCSIG$v) call $retain-release/Ref#constructor drop ) - (func $retain-release/assignGlobal (; 8 ;) (type $FUNCSIG$v) + (func $retain-release/assignGlobal (; 9 ;) (type $FUNCSIG$v) (local $0 i32) global.get $retain-release/REF global.set $retain-release/glo ) - (func $retain-release/assignField (; 9 ;) (type $FUNCSIG$v) + (func $retain-release/assignField (; 10 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) global.get $retain-release/REF @@ -168,11 +173,11 @@ local.get $0 i32.store ) - (func $retain-release/scopeBlockToConditional (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeBlockToConditional (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) nop ) - (func $retain-release/scopeThrow (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeThrow (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 if i32.const 24 @@ -183,27 +188,27 @@ unreachable end ) - (func $retain-release/scopeUnreachable (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeUnreachable (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 if unreachable end ) - (func $retain-release/provideRefIndirect (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/provideRefIndirect (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) i32.const 1 global.set $~lib/argc global.get $retain-release/REF local.get $0 call_indirect (type $FUNCSIG$vi) ) - (func $retain-release/receiveRefIndirect (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/receiveRefIndirect (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) i32.const 0 global.set $~lib/argc local.get $0 call_indirect (type $FUNCSIG$i) drop ) - (func $start (; 15 ;) (type $FUNCSIG$v) + (func $start (; 16 ;) (type $FUNCSIG$v) (local $0 i32) global.get $~lib/started if diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index f8f33c111c..2c7c9d0f32 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -1,9 +1,9 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -55,50 +55,31 @@ (export "provideRefIndirect" (func $retain-release/provideRefIndirect)) (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirectDrop)) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -110,12 +91,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -133,24 +114,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $retain-release/Ref#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $retain-release/Ref#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -162,7 +170,7 @@ end local.get $0 ) - (func $retain-release/Target#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $retain-release/Target#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -177,7 +185,7 @@ i32.store local.get $0 ) - (func $start:retain-release (; 5 ;) (type $FUNCSIG$v) + (func $start:retain-release (; 6 ;) (type $FUNCSIG$v) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -195,14 +203,14 @@ call $retain-release/Target#constructor global.set $retain-release/TARGET ) - (func $retain-release/returnRef (; 6 ;) (type $FUNCSIG$i) (result i32) + (func $retain-release/returnRef (; 7 ;) (type $FUNCSIG$i) (result i32) global.get $retain-release/REF call $~lib/rt/stub/__retain ) - (func $~lib/rt/stub/__release (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $retain-release/receiveRef (; 8 ;) (type $FUNCSIG$v) + (func $retain-release/receiveRef (; 9 ;) (type $FUNCSIG$v) (local $0 i32) call $retain-release/returnRef local.tee $0 @@ -211,35 +219,35 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/receiveRefDrop (; 9 ;) (type $FUNCSIG$v) + (func $retain-release/receiveRefDrop (; 10 ;) (type $FUNCSIG$v) call $retain-release/returnRef call $~lib/rt/stub/__release ) - (func $retain-release/receiveRefRetain (; 10 ;) (type $FUNCSIG$v) + (func $retain-release/receiveRefRetain (; 11 ;) (type $FUNCSIG$v) (local $0 i32) call $retain-release/returnRef local.set $0 local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/takeRef (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/takeRef (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/provideRef (; 12 ;) (type $FUNCSIG$v) + (func $retain-release/provideRef (; 13 ;) (type $FUNCSIG$v) global.get $retain-release/REF call $retain-release/takeRef ) - (func $retain-release/takeReturnRef (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $retain-release/takeReturnRef (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $0 ) - (func $retain-release/provideReceiveRef (; 14 ;) (type $FUNCSIG$v) + (func $retain-release/provideReceiveRef (; 15 ;) (type $FUNCSIG$v) (local $0 i32) global.get $retain-release/REF call $retain-release/takeReturnRef @@ -249,12 +257,12 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/newRef (; 15 ;) (type $FUNCSIG$v) + (func $retain-release/newRef (; 16 ;) (type $FUNCSIG$v) i32.const 0 call $retain-release/Ref#constructor call $~lib/rt/stub/__release ) - (func $retain-release/assignGlobal (; 16 ;) (type $FUNCSIG$v) + (func $retain-release/assignGlobal (; 17 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) global.get $retain-release/REF @@ -272,7 +280,7 @@ local.get $0 global.set $retain-release/glo ) - (func $retain-release/assignField (; 17 ;) (type $FUNCSIG$v) + (func $retain-release/assignField (; 18 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) global.get $retain-release/TARGET @@ -293,7 +301,7 @@ local.get $1 i32.store ) - (func $retain-release/scopeBlock (; 18 ;) (type $FUNCSIG$v) + (func $retain-release/scopeBlock (; 19 ;) (type $FUNCSIG$v) (local $0 i32) global.get $retain-release/REF call $~lib/rt/stub/__retain @@ -301,7 +309,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/scopeBlockToUninitialized (; 19 ;) (type $FUNCSIG$v) + (func $retain-release/scopeBlockToUninitialized (; 20 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -330,7 +338,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/scopeBlockToInitialized (; 20 ;) (type $FUNCSIG$v) + (func $retain-release/scopeBlockToInitialized (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -360,7 +368,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/scopeBlockToConditional (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeBlockToConditional (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -406,14 +414,14 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $retain-release/scopeTopLevelUninitialized (; 22 ;) (type $FUNCSIG$v) + (func $retain-release/scopeTopLevelUninitialized (; 23 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 local.set $0 local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/scopeTopLevelInitialized (; 23 ;) (type $FUNCSIG$v) + (func $retain-release/scopeTopLevelInitialized (; 24 ;) (type $FUNCSIG$v) (local $0 i32) global.get $retain-release/REF call $~lib/rt/stub/__retain @@ -421,7 +429,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/scopeTopLevelConditional (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeTopLevelConditional (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -447,7 +455,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $retain-release/scopeIf (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeIf (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 if @@ -458,7 +466,7 @@ call $~lib/rt/stub/__release end ) - (func $retain-release/scopeIfElse (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeIfElse (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 if @@ -475,7 +483,7 @@ call $~lib/rt/stub/__release end ) - (func $retain-release/scopeWhile (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeWhile (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $break|0 loop $continue|0 @@ -492,7 +500,7 @@ unreachable end ) - (func $retain-release/scopeDo (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeDo (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) loop $continue|0 global.get $retain-release/REF @@ -502,7 +510,7 @@ br_if $continue|0 end ) - (func $retain-release/scopeFor (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeFor (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $break|0 loop $loop|0 @@ -519,7 +527,7 @@ unreachable end ) - (func $retain-release/scopeBreak (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeBreak (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $break|0 local.get $0 @@ -533,7 +541,7 @@ br $break|0 end ) - (func $retain-release/scopeContinue (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeContinue (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $break|0 loop $continue|0 @@ -550,7 +558,7 @@ unreachable end ) - (func $retain-release/scopeThrow (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeThrow (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $break|0 local.get $0 @@ -569,7 +577,7 @@ unreachable end ) - (func $retain-release/scopeUnreachable (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/scopeUnreachable (; 34 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $break|0 loop $continue|0 @@ -584,7 +592,7 @@ unreachable end ) - (func $retain-release/callInline (; 34 ;) (type $FUNCSIG$v) + (func $retain-release/callInline (; 35 ;) (type $FUNCSIG$v) (local $0 i32) global.get $retain-release/REF call $~lib/rt/stub/__retain @@ -592,7 +600,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/provideRefInline (; 35 ;) (type $FUNCSIG$v) + (func $retain-release/provideRefInline (; 36 ;) (type $FUNCSIG$v) (local $0 i32) global.get $retain-release/REF call $~lib/rt/stub/__retain @@ -600,7 +608,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/receiveRefInline (; 36 ;) (type $FUNCSIG$v) + (func $retain-release/receiveRefInline (; 37 ;) (type $FUNCSIG$v) (local $0 i32) global.get $retain-release/REF call $~lib/rt/stub/__retain @@ -610,19 +618,19 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $retain-release/receiveRefInlineDrop (; 37 ;) (type $FUNCSIG$v) + (func $retain-release/receiveRefInlineDrop (; 38 ;) (type $FUNCSIG$v) global.get $retain-release/REF call $~lib/rt/stub/__retain call $~lib/rt/stub/__release ) - (func $retain-release/provideRefIndirect (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/provideRefIndirect (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) i32.const 1 global.set $~lib/argc global.get $retain-release/REF local.get $0 call_indirect (type $FUNCSIG$vi) ) - (func $retain-release/receiveRefIndirect (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/receiveRefIndirect (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) i32.const 0 global.set $~lib/argc @@ -634,14 +642,14 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $retain-release/receiveRefIndirectDrop (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/receiveRefIndirectDrop (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) i32.const 0 global.set $~lib/argc local.get $0 call_indirect (type $FUNCSIG$i) call $~lib/rt/stub/__release ) - (func $start (; 41 ;) (type $FUNCSIG$v) + (func $start (; 42 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -651,6 +659,6 @@ end call $start:retain-release ) - (func $null (; 42 ;) (type $FUNCSIG$v) + (func $null (; 43 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 254d627c2f..bd0aad4a00 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -1,5 +1,6 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) @@ -22,29 +23,25 @@ (global $~lib/started (mut i32) (i32.const 0)) (export "__start" (func $start)) (export "memory" (memory $0)) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $2 - i32.const 16 + local.get $0 + i32.const 15 i32.add i32.const -16 i32.and - local.tee $1 + local.tee $0 memory.size - local.tee $3 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $3 - local.get $1 local.get $2 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -52,16 +49,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 - local.get $3 - local.get $4 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -70,20 +67,31 @@ end end end - local.get $1 + local.get $0 global.set $~lib/rt/stub/offset - local.get $2 + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $1 + i32.const 1 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $1 + i32.const 16 + i32.sub + local.tee $2 local.get $0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.store offset=12 - local.get $2 + local.get $1 ) - (func $rt/instanceof/Animal#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $rt/instanceof/Animal#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -93,7 +101,7 @@ end local.get $0 ) - (func $rt/instanceof/Cat#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $rt/instanceof/Cat#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -104,12 +112,12 @@ local.get $0 call $rt/instanceof/Animal#constructor ) - (func $rt/instanceof/BlackCat#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) + (func $rt/instanceof/BlackCat#constructor (; 5 ;) (type $FUNCSIG$i) (result i32) i32.const 5 call $~lib/rt/stub/__alloc call $rt/instanceof/Cat#constructor ) - (func $~lib/rt/__instanceof (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -139,7 +147,7 @@ end i32.const 0 ) - (func $start:rt/instanceof (; 6 ;) (type $FUNCSIG$v) + (func $start:rt/instanceof (; 7 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 112 global.set $~lib/rt/stub/startOffset @@ -531,7 +539,7 @@ unreachable end ) - (func $start (; 7 ;) (type $FUNCSIG$v) + (func $start (; 8 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -541,7 +549,7 @@ end call $start:rt/instanceof ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $null (; 9 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index 6d685fcc3f..ad3070de14 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -1,5 +1,6 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) @@ -25,50 +26,31 @@ (global $~lib/heap/__heap_base i32 (i32.const 108)) (export "__start" (func $start)) (export "memory" (memory $0)) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 - local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -80,12 +62,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -103,24 +85,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $rt/instanceof/Animal#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $rt/instanceof/Animal#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -132,7 +141,7 @@ end local.get $0 ) - (func $rt/instanceof/Cat#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $rt/instanceof/Cat#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -147,7 +156,7 @@ local.set $0 local.get $0 ) - (func $rt/instanceof/BlackCat#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $rt/instanceof/BlackCat#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -162,7 +171,7 @@ local.set $0 local.get $0 ) - (func $~lib/rt/__instanceof (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -199,7 +208,7 @@ end i32.const 0 ) - (func $start:rt/instanceof (; 7 ;) (type $FUNCSIG$v) + (func $start:rt/instanceof (; 8 ;) (type $FUNCSIG$v) (local $0 i32) global.get $~lib/heap/__heap_base i32.const 15 @@ -659,7 +668,7 @@ unreachable end ) - (func $start (; 8 ;) (type $FUNCSIG$v) + (func $start (; 9 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -669,6 +678,6 @@ end call $start:rt/instanceof ) - (func $null (; 9 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/rt/stub-realloc.json b/tests/compiler/rt/stub-realloc.json new file mode 100644 index 0000000000..59636d75fa --- /dev/null +++ b/tests/compiler/rt/stub-realloc.json @@ -0,0 +1,6 @@ +{ + "asc_flags": [ + "--runtime stub", + "--explicitStart" + ] +} \ No newline at end of file diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat new file mode 100644 index 0000000000..f3a34c8e68 --- /dev/null +++ b/tests/compiler/rt/stub-realloc.optimized.wat @@ -0,0 +1,515 @@ +(module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (data (i32.const 56) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00r\00t\00/\00s\00t\00u\00b\00-\00r\00e\00a\00l\00l\00o\00c\00.\00t\00s") + (data (i32.const 112) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $rt/stub-realloc/ptr (mut i32) (i32.const 0)) + (global $rt/stub-realloc/originalPtr (mut i32) (i32.const 0)) + (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) + (global $~lib/started (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 112)) + (export "__start" (func $start)) + (export "memory" (memory $0)) + (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__retain" (func $~lib/rt/stub/__retain)) + (export "__release" (func $~lib/rt/stub/__release)) + (export "__collect" (func $~lib/rt/stub/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + memory.size + local.tee $2 + i32.const 16 + i32.shl + local.tee $1 + i32.gt_u + if + local.get $2 + local.get $0 + local.get $1 + i32.sub + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $0 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $2 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.tee $3 + local.get $1 + i32.store offset=8 + local.get $3 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/rt/stub/__collect (; 5 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/memory/memory.copy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $3 + i32.const 8 + i32.lt_u + i32.eqz + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 + end + end + end + loop $continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $3 + i32.const 8 + i32.lt_u + i32.eqz + if + local.get $0 + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $3 + if + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/rt/stub/__realloc (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.get $0 + i32.const 16 + i32.sub + local.tee $2 + i32.load offset=12 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $4 + local.get $0 + i32.add + i32.eq + local.set $3 + local.get $1 + local.get $4 + i32.gt_u + if + local.get $3 + if + local.get $1 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + local.get $0 + local.get $1 + i32.add + call $~lib/rt/stub/maybeGrowMemory + else + local.get $1 + local.get $4 + i32.const 1 + i32.shl + local.tee $3 + local.get $1 + local.get $3 + i32.gt_u + select + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__alloc + local.tee $2 + local.get $0 + local.get $4 + call $~lib/memory/memory.copy + local.get $2 + local.tee $0 + i32.const 16 + i32.sub + local.set $2 + end + else + local.get $3 + if + local.get $0 + local.get $1 + i32.add + i32.const 15 + i32.add + i32.const -16 + i32.and + global.set $~lib/rt/stub/offset + end + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $start:rt/stub-realloc (; 8 ;) (type $FUNCSIG$v) + i32.const 10 + i32.const 0 + call $~lib/rt/stub/__alloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.set $rt/stub-realloc/originalPtr + global.get $rt/stub-realloc/ptr + i32.const 12 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 7 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 16 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 10 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 33 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 13 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 20 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + i32.const 1 + i32.const 0 + call $~lib/rt/stub/__alloc + global.set $rt/stub-realloc/newLastPtr + global.get $rt/stub-realloc/newLastPtr + global.get $rt/stub-realloc/originalPtr + i32.const 48 + i32.add + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 18 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 24 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 21 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 32 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 24 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 33 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.le_u + if + i32.const 0 + i32.const 72 + i32.const 27 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + ) + (func $start (; 9 ;) (type $FUNCSIG$v) + global.get $~lib/started + if + return + else + i32.const 1 + global.set $~lib/started + end + i32.const 144 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + call $start:rt/stub-realloc + ) +) diff --git a/tests/compiler/rt/stub-realloc.ts b/tests/compiler/rt/stub-realloc.ts new file mode 100644 index 0000000000..ccb6aa7e84 --- /dev/null +++ b/tests/compiler/rt/stub-realloc.ts @@ -0,0 +1,27 @@ +import { BLOCK_OVERHEAD } from "rt/common"; + +var ptr = __alloc(10, 0); // initial allocation +var originalPtr = ptr; + +ptr = __realloc(ptr, 12); // just resizes (<= 16) +assert(ptr == originalPtr); + +ptr = __realloc(ptr, 16); // just resizes (<= 16) +assert(ptr == originalPtr); + +ptr = __realloc(ptr, 33); // last: resizes checking for grow (<= 48) +assert(ptr == originalPtr); + +ptr = __realloc(ptr, 20); // last: shrinks again (<= 32, see *) + +var newLastPtr = __alloc(1, 0); +assert(newLastPtr == originalPtr + 32 + BLOCK_OVERHEAD); // * + +ptr = __realloc(ptr, 24); // just resizes (<= 32) +assert(ptr == originalPtr); + +ptr = __realloc(ptr, 32); // just resizes (<= 32) +assert(ptr == originalPtr); + +ptr = __realloc(ptr, 33); // not last anymore: copies +assert(ptr > originalPtr); diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat new file mode 100644 index 0000000000..66e58360bc --- /dev/null +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -0,0 +1,1649 @@ +(module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 56) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00r\00t\00/\00s\00t\00u\00b\00-\00r\00e\00a\00l\00l\00o\00c\00.\00t\00s\00") + (data (i32.const 112) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") + (table $0 1 funcref) + (elem (i32.const 0) $null) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $rt/stub-realloc/ptr (mut i32) (i32.const 0)) + (global $rt/stub-realloc/originalPtr (mut i32) (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) + (global $~lib/started (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 112)) + (global $~lib/heap/__heap_base i32 (i32.const 140)) + (export "__start" (func $start)) + (export "memory" (memory $0)) + (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__retain" (func $~lib/rt/stub/__retain)) + (export "__release" (func $~lib/rt/stub/__release)) + (export "__collect" (func $~lib/rt/stub/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + memory.size + local.set $1 + local.get $1 + i32.const 16 + i32.shl + local.set $2 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + local.get $2 + i32.sub + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $4 + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $0 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.set $5 + local.get $5 + local.get $1 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/rt/stub/__collect (; 5 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/util/memory/memcpy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $break|0 + loop $continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 + end + unreachable + end + local.get $0 + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + block $break|1 + loop $continue|1 + local.get $2 + i32.const 16 + i32.ge_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 + end + unreachable + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|3 + end + unreachable + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end + unreachable + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $4 + local.get $3 + i32.add + local.get $5 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $5 + local.get $3 + i32.add + local.get $4 + i32.le_u + end + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|0 + loop $continue|0 + local.get $5 + i32.const 7 + i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 + end + unreachable + end + block $break|1 + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 + end + unreachable + end + end + block $break|2 + loop $continue|2 + local.get $3 + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + unreachable + end + else + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|3 + loop $continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + i32.eqz + br_if $break|3 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + unreachable + end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable + end + end + end + ) + (func $~lib/rt/stub/__realloc (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + local.get $2 + i32.load offset=12 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq + local.set $4 + local.get $1 + local.get $3 + i32.gt_u + if + local.get $4 + if + local.get $1 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + local.get $0 + local.get $1 + i32.add + call $~lib/rt/stub/maybeGrowMemory + else + local.get $1 + local.tee $5 + local.get $3 + i32.const 1 + i32.shl + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__alloc + local.set $5 + local.get $5 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $5 + local.tee $0 + i32.const 16 + i32.sub + local.set $2 + end + else + local.get $4 + if + local.get $0 + local.get $1 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + global.set $~lib/rt/stub/offset + end + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $start:rt/stub-realloc (; 9 ;) (type $FUNCSIG$v) + i32.const 10 + i32.const 0 + call $~lib/rt/stub/__alloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.set $rt/stub-realloc/originalPtr + global.get $rt/stub-realloc/ptr + i32.const 12 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 7 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 16 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 10 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 33 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 13 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 20 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + i32.const 1 + i32.const 0 + call $~lib/rt/stub/__alloc + global.set $rt/stub-realloc/newLastPtr + global.get $rt/stub-realloc/newLastPtr + global.get $rt/stub-realloc/originalPtr + i32.const 32 + i32.add + i32.const 16 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 18 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 24 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 21 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 32 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 24 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/stub-realloc/ptr + i32.const 33 + call $~lib/rt/stub/__realloc + global.set $rt/stub-realloc/ptr + global.get $rt/stub-realloc/ptr + global.get $rt/stub-realloc/originalPtr + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 27 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + ) + (func $start (; 10 ;) (type $FUNCSIG$v) + global.get $~lib/started + if + return + else + i32.const 1 + global.set $~lib/started + end + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + call $start:rt/stub-realloc + ) + (func $null (; 11 ;) (type $FUNCSIG$v) + ) +) diff --git a/tests/compiler/runtime-stub.optimized.wat b/tests/compiler/runtime-stub.optimized.wat index 2de8c79523..5ac2180318 100644 --- a/tests/compiler/runtime-stub.optimized.wat +++ b/tests/compiler/runtime-stub.optimized.wat @@ -1,7 +1,7 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (memory $0 1) (data (i32.const 8) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") @@ -15,42 +15,25 @@ (export "__collect" (func $~lib/rt/stub/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) (start $start) - (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 + local.tee $0 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $4 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -58,16 +41,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -76,29 +59,51 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset - local.get $3 + ) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $2 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.tee $3 local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store offset=12 - local.get $3 + local.get $2 ) - (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/rt/stub/__collect (; 3 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__collect (; 4 ;) (type $FUNCSIG$v) nop ) - (func $start (; 4 ;) (type $FUNCSIG$v) + (func $start (; 5 ;) (type $FUNCSIG$v) i32.const 48 global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index 6d48c47742..15ab18ea48 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -1,7 +1,7 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (memory $0 1) (data (i32.const 8) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") @@ -18,50 +18,31 @@ (export "__collect" (func $~lib/rt/stub/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) (start $start) - (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 - local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -73,12 +54,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -96,30 +77,57 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/rt/stub/__collect (; 3 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__collect (; 4 ;) (type $FUNCSIG$v) nop ) - (func $start (; 4 ;) (type $FUNCSIG$v) + (func $start (; 5 ;) (type $FUNCSIG$v) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -131,6 +139,6 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $null (; 5 ;) (type $FUNCSIG$v) + (func $null (; 6 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index 509f9bf2a6..8aea8ac9ea 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -2,6 +2,7 @@ (type $FUNCSIG$diiiiiid (func (param i32 i32 i32 i32 i32 i32 f64) (result f64))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$d (func (result f64))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64))) @@ -15,16 +16,11 @@ (global $std/date/date (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) + (func $~lib/rt/stub/maybeGrowMemory (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $1 - i32.const 23 + local.get $0 + i32.const 15 i32.add i32.const -16 i32.and @@ -33,6 +29,7 @@ local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if local.get $2 @@ -45,16 +42,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $1 local.get $2 - local.get $3 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -65,18 +62,29 @@ end local.get $0 global.set $~lib/rt/stub/offset - local.get $1 + ) + (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $0 + i32.const 8 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $0 + i32.const 16 + i32.sub + local.tee $1 i32.const 3 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8 i32.store offset=12 - local.get $1 + local.get $0 ) - (func $start:std/date (; 4 ;) (type $FUNCSIG$v) + (func $start:std/date (; 5 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 1970 @@ -197,10 +205,10 @@ unreachable end ) - (func $start (; 5 ;) (type $FUNCSIG$v) + (func $start (; 6 ;) (type $FUNCSIG$v) call $start:std/date ) - (func $null (; 6 ;) (type $FUNCSIG$v) + (func $null (; 7 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 6cf8731695..1f4794ccb9 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -4,6 +4,7 @@ (type $FUNCSIG$d (func (result f64))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ji (func (param i32) (result i64))) (type $FUNCSIG$jij (func (param i32 i64) (result i64))) @@ -22,50 +23,31 @@ (global $~lib/heap/__heap_base i32 (i32.const 48)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -77,12 +59,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -100,24 +82,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/date/Date#constructor (; 5 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/date/Date#constructor (; 6 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 i32.eqz if @@ -135,17 +144,17 @@ i64.store local.get $0 ) - (func $~lib/date/Date#getTime (; 6 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/date/Date#getTime (; 7 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) local.get $0 i64.load ) - (func $~lib/date/Date#setTime (; 7 ;) (type $FUNCSIG$jij) (param $0 i32) (param $1 i64) (result i64) + (func $~lib/date/Date#setTime (; 8 ;) (type $FUNCSIG$jij) (param $0 i32) (param $1 i64) (result i64) local.get $0 local.get $1 i64.store local.get $1 ) - (func $start:std/date (; 8 ;) (type $FUNCSIG$v) + (func $start:std/date (; 9 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -322,9 +331,9 @@ unreachable end ) - (func $start (; 9 ;) (type $FUNCSIG$v) + (func $start (; 10 ;) (type $FUNCSIG$v) call $start:std/date ) - (func $null (; 10 ;) (type $FUNCSIG$v) + (func $null (; 11 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 53fd28a777..ad42bcf0fe 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -1,4 +1,5 @@ (module + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) (memory $0 0) @@ -7,16 +8,11 @@ (global $std/new/aClass (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) + (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $1 - i32.const 23 + local.get $0 + i32.const 15 i32.add i32.const -16 i32.and @@ -25,6 +21,7 @@ local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if local.get $2 @@ -37,16 +34,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $1 local.get $2 - local.get $3 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -57,18 +54,29 @@ end local.get $0 global.set $~lib/rt/stub/offset - local.get $1 + ) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $0 + i32.const 8 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $0 + i32.const 16 + i32.sub + local.tee $1 i32.const 3 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8 i32.store offset=12 - local.get $1 + local.get $0 ) - (func $std/new/AClass#constructor (; 1 ;) (type $FUNCSIG$i) (result i32) + (func $std/new/AClass#constructor (; 2 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) call $~lib/rt/stub/__alloc local.tee $0 @@ -88,7 +96,7 @@ f32.store offset=4 local.get $0 ) - (func $start (; 2 ;) (type $FUNCSIG$v) + (func $start (; 3 ;) (type $FUNCSIG$v) i32.const 16 global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset @@ -96,7 +104,7 @@ call $std/new/AClass#constructor global.set $std/new/aClass ) - (func $null (; 3 ;) (type $FUNCSIG$v) + (func $null (; 4 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index 7126f53af1..f9a4f9c1fd 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -1,6 +1,7 @@ (module (type $FUNCSIG$iif (func (param i32 f32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (memory $0 0) @@ -13,50 +14,31 @@ (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 - local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -68,12 +50,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -91,24 +73,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $std/new/AClass#constructor (; 2 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $std/new/AClass#constructor (; 3 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $0 i32.eqz @@ -135,7 +144,7 @@ f32.store offset=4 local.get $0 ) - (func $start:std/new (; 3 ;) (type $FUNCSIG$v) + (func $start:std/new (; 4 ;) (type $FUNCSIG$v) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -151,9 +160,9 @@ call $std/new/AClass#constructor global.set $std/new/aClass ) - (func $start (; 4 ;) (type $FUNCSIG$v) + (func $start (; 5 ;) (type $FUNCSIG$v) call $start:std/new ) - (func $null (; 5 ;) (type $FUNCSIG$v) + (func $null (; 6 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/object-literal.optimized.wat b/tests/compiler/std/object-literal.optimized.wat index dece1220f0..32bc1fb1db 100644 --- a/tests/compiler/std/object-literal.optimized.wat +++ b/tests/compiler/std/object-literal.optimized.wat @@ -1,7 +1,7 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -12,42 +12,25 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - local.get $0 - i32.const 1 local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 + local.tee $0 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $4 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -55,16 +38,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -73,20 +56,42 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset - local.get $3 + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $2 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.tee $3 local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store offset=12 - local.get $3 + local.get $2 ) - (func $~lib/string/String#get:length (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -94,7 +99,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/compareImpl (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 24 @@ -130,7 +135,7 @@ end local.get $3 ) - (func $~lib/string/String.__eq (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.__eq (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 24 @@ -160,7 +165,7 @@ end i32.const 0 ) - (func $std/object-literal/bar (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/object-literal/bar (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load i32.const 1 @@ -186,7 +191,7 @@ unreachable end ) - (func $start:std/object-literal (; 6 ;) (type $FUNCSIG$v) + (func $start:std/object-literal (; 7 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 112 global.set $~lib/rt/stub/startOffset @@ -240,10 +245,10 @@ unreachable end ) - (func $start (; 7 ;) (type $FUNCSIG$v) + (func $start (; 8 ;) (type $FUNCSIG$v) call $start:std/object-literal ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $null (; 9 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index 7bae147431..61a0219051 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -1,7 +1,7 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) (type $FUNCSIG$v (func)) @@ -16,50 +16,31 @@ (global $~lib/heap/__heap_base i32 (i32.const 108)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -71,12 +52,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -94,27 +75,54 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/string/String#get:length (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -122,7 +130,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 5 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 6 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -187,7 +195,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/string/String.__eq (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -260,7 +268,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/object-literal/bar (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/object-literal/bar (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -293,7 +301,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $std/object-literal/bar2 (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/object-literal/bar2 (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -313,7 +321,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $std/object-literal/Foo2#test (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/object-literal/Foo2#test (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load i32.const 3 @@ -328,7 +336,7 @@ unreachable end ) - (func $start:std/object-literal (; 10 ;) (type $FUNCSIG$v) + (func $start:std/object-literal (; 11 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -382,9 +390,9 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $start (; 11 ;) (type $FUNCSIG$v) + (func $start (; 12 ;) (type $FUNCSIG$v) call $start:std/object-literal ) - (func $null (; 12 ;) (type $FUNCSIG$v) + (func $null (; 13 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 53ea972248..664e4f8f01 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1,5 +1,6 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$ddi (func (param f64 i32) (result f64))) @@ -78,29 +79,25 @@ (global $std/operator-overloading/aii (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $2 - i32.const 23 + local.get $0 + i32.const 15 i32.add i32.const -16 i32.and - local.tee $1 + local.tee $0 memory.size - local.tee $3 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $3 - local.get $1 local.get $2 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -108,16 +105,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 - local.get $3 - local.get $4 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -126,20 +123,31 @@ end end end - local.get $1 + local.get $0 global.set $~lib/rt/stub/offset - local.get $2 + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $1 + i32.const 8 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $1 + i32.const 16 + i32.sub + local.tee $2 local.get $0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 8 i32.store offset=12 - local.get $2 + local.get $1 ) - (func $std/operator-overloading/Tester#constructor (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester#constructor (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 3 call $~lib/rt/stub/__alloc @@ -151,7 +159,7 @@ i32.store offset=4 local.get $2 ) - (func $~lib/math/NativeMath.scalbn (; 3 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 4 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) local.get $1 i32.const 1023 i32.gt_s @@ -228,7 +236,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/math/NativeMath.pow (; 4 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 5 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) (local $4 i32) @@ -1136,7 +1144,7 @@ f64.const 1e-300 f64.mul ) - (func $std/operator-overloading/Tester.pow (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.pow (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load f64.convert_i32_s @@ -1155,7 +1163,7 @@ i32.trunc_f64_s call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester.equals (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.equals (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $1 @@ -1171,7 +1179,7 @@ i32.const 0 end ) - (func $std/operator-overloading/Tester.notEquals (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.notEquals (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $1 @@ -1187,7 +1195,7 @@ i32.const 0 end ) - (func $std/operator-overloading/TesterInlineStatic#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/TesterInlineStatic#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 4 call $~lib/rt/stub/__alloc @@ -1199,7 +1207,7 @@ i32.store offset=4 local.get $2 ) - (func $std/operator-overloading/TesterInlineInstance#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/TesterInlineInstance#constructor (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 5 call $~lib/rt/stub/__alloc @@ -1211,7 +1219,7 @@ i32.store offset=4 local.get $2 ) - (func $start:std/operator-overloading (; 10 ;) (type $FUNCSIG$v) + (func $start:std/operator-overloading (; 11 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 80 @@ -2372,10 +2380,10 @@ unreachable end ) - (func $start (; 11 ;) (type $FUNCSIG$v) + (func $start (; 12 ;) (type $FUNCSIG$v) call $start:std/operator-overloading ) - (func $null (; 12 ;) (type $FUNCSIG$v) + (func $null (; 13 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index fa6559fdba..72b3266b2b 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -1,8 +1,8 @@ (module (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$ddi (func (param f64 i32) (result f64))) @@ -84,50 +84,31 @@ (global $~lib/heap/__heap_base i32 (i32.const 80)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -139,12 +120,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -162,24 +143,51 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $std/operator-overloading/Tester#constructor (; 3 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/operator-overloading/Tester#constructor (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz if @@ -197,10 +205,10 @@ i32.store offset=4 local.get $0 ) - (func $~lib/rt/stub/__release (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $std/operator-overloading/Tester.add (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.add (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -227,7 +235,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.sub (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.sub (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -254,7 +262,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.mul (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.mul (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -281,7 +289,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.div (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.div (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -308,7 +316,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.mod (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.mod (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -335,7 +343,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/math/NativeMath.scalbn (; 10 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 11 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) (local $2 f64) (local $3 i32) (local $4 i32) @@ -426,7 +434,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/math/NativeMath.pow (; 11 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 12 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -1506,7 +1514,7 @@ local.get $16 f64.mul ) - (func $std/operator-overloading/Tester.pow (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.pow (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1539,7 +1547,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.and (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.and (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1566,7 +1574,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.or (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.or (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1593,7 +1601,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.xor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.xor (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1620,7 +1628,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.equals (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.equals (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1649,7 +1657,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.notEquals (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.notEquals (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1678,7 +1686,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.greater (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.greater (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1707,7 +1715,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.greaterEquals (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.greaterEquals (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1736,7 +1744,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.less (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.less (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1765,7 +1773,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.lessEquals (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.lessEquals (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1794,7 +1802,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.shr (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.shr (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1814,7 +1822,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.shu (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.shu (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1834,7 +1842,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.shl (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.shl (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1854,7 +1862,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $std/operator-overloading/Tester.pos (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.pos (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1870,7 +1878,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $std/operator-overloading/Tester.neg (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.neg (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1890,7 +1898,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $std/operator-overloading/Tester.not (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.not (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1910,7 +1918,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $std/operator-overloading/Tester.excl (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.excl (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -1930,7 +1938,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $std/operator-overloading/Tester#inc (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester#inc (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 local.get $0 i32.load @@ -1946,7 +1954,7 @@ local.get $0 call $~lib/rt/stub/__retain ) - (func $std/operator-overloading/Tester#dec (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester#dec (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 local.get $0 i32.load @@ -1962,7 +1970,7 @@ local.get $0 call $~lib/rt/stub/__retain ) - (func $std/operator-overloading/Tester#postInc (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester#postInc (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1974,7 +1982,7 @@ i32.add call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/Tester#postDec (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester#postDec (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 i32.load @@ -1986,7 +1994,7 @@ i32.sub call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/TesterInlineStatic#constructor (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/operator-overloading/TesterInlineStatic#constructor (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz if @@ -2004,7 +2012,7 @@ i32.store offset=4 local.get $0 ) - (func $std/operator-overloading/TesterInlineInstance#constructor (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/operator-overloading/TesterInlineInstance#constructor (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz if @@ -2022,7 +2030,7 @@ i32.store offset=4 local.get $0 ) - (func $start:std/operator-overloading (; 35 ;) (type $FUNCSIG$v) + (func $start:std/operator-overloading (; 36 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -3274,9 +3282,9 @@ local.get $22 call $~lib/rt/stub/__release ) - (func $start (; 36 ;) (type $FUNCSIG$v) + (func $start (; 37 ;) (type $FUNCSIG$v) call $start:std/operator-overloading ) - (func $null (; 37 ;) (type $FUNCSIG$v) + (func $null (; 38 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index d6ee5eb76b..d8f7839ba3 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -2,6 +2,7 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) @@ -23,6 +24,7 @@ (data (i32.const 304) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (data (i32.const 360) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 408) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 456) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) @@ -50,42 +52,25 @@ i32.add i32.load ) - (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 + local.tee $0 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $4 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -93,16 +78,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -111,20 +96,42 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset - local.get $3 + ) + (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $2 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.tee $3 local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store offset=12 - local.get $3 + local.get $2 ) - (func $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -299,36 +306,99 @@ end end ) - (func $~lib/rt/stub/__realloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__realloc (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 + (local $4 i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 472 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset local.get $0 i32.const 16 i32.sub local.tee $2 i32.load offset=12 - local.tee $3 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $4 + local.get $0 + i32.add + i32.eq + local.set $3 + local.get $1 + local.get $4 i32.gt_u if - local.get $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $0 local.get $3 - call $~lib/memory/memory.copy - local.get $1 - local.set $0 + if + local.get $1 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + local.get $0 + local.get $1 + i32.add + call $~lib/rt/stub/maybeGrowMemory + else + local.get $1 + local.get $4 + i32.const 1 + i32.shl + local.tee $3 + local.get $1 + local.get $3 + i32.gt_u + select + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__alloc + local.tee $2 + local.get $0 + local.get $4 + call $~lib/memory/memory.copy + local.get $2 + local.tee $0 + i32.const 16 + i32.sub + local.set $2 + end else - local.get $2 - local.get $1 - i32.store offset=12 + local.get $3 + if + local.get $0 + local.get $1 + i32.add + i32.const 15 + i32.add + i32.const -16 + i32.and + global.set $~lib/rt/stub/offset + end end + local.get $2 + local.get $1 + i32.store offset=12 local.get $0 ) - (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -537,7 +607,7 @@ end end ) - (func $~lib/array/ensureSize (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureSize (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -593,7 +663,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__set (; 7 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 8 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 60 i32.load @@ -614,7 +684,7 @@ i32.store end ) - (func $~lib/array/Array#__get (; 8 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/array/Array#__get (; 9 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) local.get $0 i32.const 120 i32.load @@ -637,7 +707,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__set (; 9 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 10 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 124 i32.load @@ -658,7 +728,7 @@ i32.store end ) - (func $~lib/array/Array#__get (; 10 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/array/Array#__get (; 11 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) local.get $0 i32.const 176 i32.load @@ -681,7 +751,7 @@ i32.add f32.load ) - (func $~lib/array/Array#__set (; 11 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 12 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 180 i32.load @@ -702,7 +772,7 @@ i32.store end ) - (func $~lib/array/Array#__get (; 12 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/array/Array#__get (; 13 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) local.get $0 i32.const 240 i32.load @@ -725,7 +795,7 @@ i32.add f64.load ) - (func $~lib/array/Array#__set (; 13 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 14 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 244 i32.load @@ -746,7 +816,7 @@ i32.store end ) - (func $start:std/static-array (; 14 ;) (type $FUNCSIG$v) + (func $start:std/static-array (; 15 ;) (type $FUNCSIG$v) i32.const 60 i32.load i32.const 2 @@ -783,7 +853,7 @@ call $~lib/builtins/abort unreachable end - i32.const 464 + i32.const 512 global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -948,10 +1018,10 @@ unreachable end ) - (func $start (; 15 ;) (type $FUNCSIG$v) + (func $start (; 16 ;) (type $FUNCSIG$v) call $start:std/static-array ) - (func $null (; 16 ;) (type $FUNCSIG$v) + (func $null (; 17 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 455fa6dc14..815a946ab7 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -3,6 +3,7 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$viij (func (param i32 i32 i64))) (type $FUNCSIG$fii (func (param i32 i32) (result f32))) @@ -24,6 +25,7 @@ (data (i32.const 304) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (data (i32.const 360) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 408) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 456) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/static-array/i i32 (i32.const 48)) @@ -33,7 +35,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 452)) + (global $~lib/heap/__heap_base i32 (i32.const 504)) (export "memory" (memory $0)) (start $start) (func $~lib/array/Array#get:length (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -68,50 +70,31 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -123,12 +106,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -146,21 +129,48 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/util/memory/memcpy (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1188,7 +1198,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1413,40 +1423,113 @@ end end ) - (func $~lib/rt/stub/__realloc (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__realloc (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 472 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.const 16 i32.sub local.set $2 local.get $2 i32.load offset=12 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $3 + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq + local.set $4 local.get $1 local.get $3 i32.gt_u if - local.get $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/stub/__alloc - local.set $4 - local.get $4 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy local.get $4 - local.set $0 + if + local.get $1 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + local.get $0 + local.get $1 + i32.add + call $~lib/rt/stub/maybeGrowMemory + else + local.get $1 + local.tee $5 + local.get $3 + i32.const 1 + i32.shl + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__alloc + local.set $5 + local.get $5 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $5 + local.tee $0 + i32.const 16 + i32.sub + local.set $2 + end else - local.get $2 - local.get $1 - i32.store offset=12 + local.get $4 + if + local.get $0 + local.get $1 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + global.set $~lib/rt/stub/offset + end end + local.get $2 + local.get $1 + i32.store offset=12 local.get $0 ) - (func $~lib/memory/memory.fill (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1710,10 +1793,10 @@ end end ) - (func $~lib/rt/stub/__retain (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/array/ensureSize (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1776,7 +1859,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__unchecked_set (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -1786,7 +1869,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -1812,11 +1895,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 14 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 15 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -1825,7 +1908,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 15 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 16 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -1844,7 +1927,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__unchecked_set (; 16 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__unchecked_set (; 17 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 i32.load offset=4 local.get $1 @@ -1854,7 +1937,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#__set (; 17 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 18 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $0 i32.load offset=12 @@ -1880,11 +1963,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 19 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__unchecked_get (; 20 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=4 local.get $1 @@ -1893,7 +1976,7 @@ i32.add f32.load ) - (func $~lib/array/Array#__get (; 20 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 21 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -1912,7 +1995,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__unchecked_set (; 21 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__unchecked_set (; 22 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 i32.load offset=4 local.get $1 @@ -1922,7 +2005,7 @@ local.get $2 f32.store ) - (func $~lib/array/Array#__set (; 22 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__set (; 23 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) local.get $0 i32.load offset=12 @@ -1948,11 +2031,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 24 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__unchecked_get (; 25 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $0 i32.load offset=4 local.get $1 @@ -1961,7 +2044,7 @@ i32.add f64.load ) - (func $~lib/array/Array#__get (; 25 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 26 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -1980,7 +2063,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__unchecked_set (; 26 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__unchecked_set (; 27 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $0 i32.load offset=4 local.get $1 @@ -1990,7 +2073,7 @@ local.get $2 f64.store ) - (func $~lib/array/Array#__set (; 27 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__set (; 28 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) local.get $0 i32.load offset=12 @@ -2016,7 +2099,7 @@ i32.store offset=12 end ) - (func $start:std/static-array (; 28 ;) (type $FUNCSIG$v) + (func $start:std/static-array (; 29 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 48 @@ -2266,9 +2349,9 @@ unreachable end ) - (func $start (; 29 ;) (type $FUNCSIG$v) + (func $start (; 30 ;) (type $FUNCSIG$v) call $start:std/static-array ) - (func $null (; 30 ;) (type $FUNCSIG$v) + (func $null (; 31 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 60d5db95ac..fec5e67cfb 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -65,42 +65,25 @@ end local.get $0 ) - (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - local.get $0 - i32.const 1 local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 + local.tee $0 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $4 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -108,16 +91,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -126,20 +109,42 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset - local.get $3 + ) + (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset i32.const 16 - i32.sub + i32.add local.tee $2 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.tee $3 local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store offset=12 - local.get $3 + local.get $2 ) - (func $~lib/memory/memory.fill (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -348,7 +353,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 1073741808 @@ -369,7 +374,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/map/Map<~lib/string/String,usize>#clear (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map<~lib/string/String,usize>#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -402,7 +407,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map<~lib/string/String,usize>#constructor (; 6 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 i32.const 3 @@ -429,7 +434,7 @@ call $~lib/map/Map<~lib/string/String,usize>#clear local.get $0 ) - (func $~lib/map/Map#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 i32.const 4 @@ -456,7 +461,7 @@ call $~lib/map/Map<~lib/string/String,usize>#clear local.get $0 ) - (func $~lib/string/String#get:length (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -464,7 +469,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/hash/hashStr (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -503,7 +508,7 @@ end local.get $1 ) - (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) loop $continue|0 local.get $2 @@ -536,7 +541,7 @@ end local.get $3 ) - (func $~lib/string/String.__eq (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -568,7 +573,7 @@ end i32.const 0 ) - (func $~lib/map/Map<~lib/string/String,usize>#find (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#find (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $0 @@ -611,7 +616,7 @@ end i32.const 0 ) - (func $~lib/map/Map<~lib/string/String,usize>#get (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#get (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 24 call $~lib/util/hash/hashStr @@ -629,7 +634,7 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map<~lib/string/String,usize>#rehash (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,usize>#rehash (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -736,7 +741,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map<~lib/string/String,usize>#set (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,usize>#set (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -825,7 +830,7 @@ i32.store end ) - (func $~lib/util/hash/hash32 (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -856,7 +861,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -899,7 +904,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1006,7 +1011,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#set (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1102,7 +1107,7 @@ i32.store end ) - (func $~lib/symbol/_Symbol.for (; 20 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/symbol/_Symbol.for (; 21 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) global.get $~lib/symbol/stringToId if @@ -1139,7 +1144,7 @@ call $~lib/map/Map#set local.get $0 ) - (func $~lib/map/Map#has (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1148,7 +1153,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#get (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1167,7 +1172,7 @@ local.get $0 i32.load offset=4 ) - (func $~lib/symbol/_Symbol.keyFor (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol.keyFor (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) global.get $~lib/symbol/idToString if (result i32) global.get $~lib/symbol/idToString @@ -1184,7 +1189,7 @@ i32.const 0 end ) - (func $~lib/memory/memory.copy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1359,7 +1364,7 @@ end end ) - (func $~lib/string/String#concat (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1399,7 +1404,7 @@ call $~lib/memory/memory.copy local.get $2 ) - (func $~lib/string/String.__concat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 752 local.get $0 @@ -1407,7 +1412,7 @@ local.get $1 call $~lib/string/String#concat ) - (func $~lib/symbol/_Symbol#toString (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol#toString (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 720 block $break|0 (result i32) block $case11|0 @@ -1490,7 +1495,7 @@ i32.const 776 call $~lib/string/String.__concat ) - (func $start:std/symbol (; 28 ;) (type $FUNCSIG$v) + (func $start:std/symbol (; 29 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 24 call $~lib/symbol/Symbol @@ -1652,10 +1657,10 @@ unreachable end ) - (func $start (; 29 ;) (type $FUNCSIG$v) + (func $start (; 30 ;) (type $FUNCSIG$v) call $start:std/symbol ) - (func $null (; 30 ;) (type $FUNCSIG$v) + (func $null (; 31 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index cb1393363e..4d2acb2831 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -88,50 +88,31 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and - local.set $5 + local.set $0 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -143,12 +124,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -166,21 +147,48 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $1 i32.store offset=8 - local.get $8 + local.get $5 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -444,7 +452,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 @@ -468,7 +476,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/map/Map<~lib/string/String,usize>#clear (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map<~lib/string/String,usize>#clear (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -508,7 +516,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map<~lib/string/String,usize>#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -540,7 +548,7 @@ call $~lib/map/Map<~lib/string/String,usize>#clear local.get $0 ) - (func $~lib/map/Map#clear (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -580,7 +588,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -612,7 +620,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/string/String#get:length (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -620,7 +628,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/hash/hashStr (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -671,7 +679,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/string/compareImpl (; 13 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 14 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -736,7 +744,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/string/String.__eq (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -809,7 +817,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,usize>#find (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#find (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -869,7 +877,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,usize>#has (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#has (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -897,7 +905,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,usize>#get (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#get (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -939,7 +947,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,usize>#rehash (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,usize>#rehash (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1101,7 +1109,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/map/Map<~lib/string/String,usize>#set (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map<~lib/string/String,usize>#set (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1215,7 +1223,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/util/hash/hash32 (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -1257,7 +1265,7 @@ local.set $1 local.get $1 ) - (func $~lib/map/Map#find (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -1305,7 +1313,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1462,7 +1470,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/map/Map#set (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1582,7 +1590,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/symbol/_Symbol.for (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol.for (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1646,7 +1654,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/map/Map#has (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -1661,7 +1669,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#get (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1689,7 +1697,7 @@ i32.load offset=4 call $~lib/rt/stub/__retain ) - (func $~lib/symbol/_Symbol.keyFor (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol.keyFor (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) global.get $~lib/symbol/idToString i32.const 0 i32.ne @@ -1709,7 +1717,7 @@ call $~lib/rt/stub/__retain end ) - (func $~lib/util/memory/memcpy (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2737,7 +2745,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2962,7 +2970,7 @@ end end ) - (func $~lib/string/String#concat (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3038,7 +3046,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String.__concat (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3061,7 +3069,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/symbol/_Symbol#toString (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol#toString (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3348,7 +3356,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $start:std/symbol (; 33 ;) (type $FUNCSIG$v) + (func $start:std/symbol (; 34 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -3547,9 +3555,9 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $start (; 34 ;) (type $FUNCSIG$v) + (func $start (; 35 ;) (type $FUNCSIG$v) call $start:std/symbol ) - (func $null (; 35 ;) (type $FUNCSIG$v) + (func $null (; 36 ;) (type $FUNCSIG$v) ) ) From 471c68c11d10ddfd77a0b4e2c0c5f2c61114f174 Mon Sep 17 00:00:00 2001 From: Daniel Wirtz Date: Mon, 2 Sep 2019 01:03:58 +0200 Subject: [PATCH 08/24] Fix v128.store input type (#809) --- src/builtins.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/builtins.ts b/src/builtins.ts index 84a4a08039..fdca573e4c 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -3877,7 +3877,7 @@ function tryDeferASM( switch (prototype.internalName) { case BuiltinSymbols.v128_load: return deferASM(BuiltinSymbols.load, compiler, Type.v128, operands, Type.v128, reportNode); - case BuiltinSymbols.v128_store: return deferASM(BuiltinSymbols.store, compiler, Type.v128, operands, Type.void, reportNode); + case BuiltinSymbols.v128_store: return deferASM(BuiltinSymbols.store, compiler, Type.v128, operands, Type.v128, reportNode); case BuiltinSymbols.i8x16_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i8, operands, Type.v128, reportNode); case BuiltinSymbols.i8x16_extract_lane_s: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i8, operands, Type.i8, reportNode); From 2cfda53ea051d775e83d9bc2a1f78273532aae97 Mon Sep 17 00:00:00 2001 From: Daniel Wirtz Date: Mon, 2 Sep 2019 01:04:15 +0200 Subject: [PATCH 09/24] Improve stub RT reallocation (#799) --- std/assembly/rt/stub.ts | 38 +- tests/compiler/call-super.optimized.wat | 34 +- tests/compiler/call-super.untouched.wat | 31 +- tests/compiler/constructor.optimized.wat | 34 +- tests/compiler/constructor.untouched.wat | 31 +- tests/compiler/exports.optimized.wat | 23 +- tests/compiler/exports.untouched.wat | 31 +- tests/compiler/getter-call.optimized.wat | 23 +- tests/compiler/getter-call.untouched.wat | 31 +- tests/compiler/inlining.optimized.wat | 34 +- tests/compiler/inlining.untouched.wat | 31 +- tests/compiler/number.optimized.wat | 135 ++- tests/compiler/number.untouched.wat | 117 ++- .../optional-typeparameters.optimized.wat | 23 +- .../optional-typeparameters.untouched.wat | 31 +- tests/compiler/resolve-access.optimized.wat | 34 +- tests/compiler/resolve-access.untouched.wat | 31 +- tests/compiler/retain-release.optimized.wat | 34 +- tests/compiler/retain-release.untouched.wat | 31 +- tests/compiler/rt/instanceof.optimized.wat | 23 +- tests/compiler/rt/instanceof.untouched.wat | 31 +- tests/compiler/rt/stub-realloc.optimized.wat | 180 +++- tests/compiler/rt/stub-realloc.ts | 3 + tests/compiler/rt/stub-realloc.untouched.wat | 188 +++- tests/compiler/runtime-stub.optimized.wat | 34 +- tests/compiler/runtime-stub.untouched.wat | 31 +- tests/compiler/simd.untouched.wat | 850 +----------------- tests/compiler/std/date.optimized.wat | 23 +- tests/compiler/std/date.untouched.wat | 31 +- tests/compiler/std/new.optimized.wat | 23 +- tests/compiler/std/new.untouched.wat | 31 +- .../compiler/std/object-literal.optimized.wat | 34 +- .../compiler/std/object-literal.untouched.wat | 31 +- .../std/operator-overloading.optimized.wat | 23 +- .../std/operator-overloading.untouched.wat | 31 +- tests/compiler/std/static-array.optimized.wat | 117 ++- tests/compiler/std/static-array.untouched.wat | 116 ++- tests/compiler/std/symbol.optimized.wat | 34 +- tests/compiler/std/symbol.untouched.wat | 31 +- 39 files changed, 1215 insertions(+), 1427 deletions(-) diff --git a/std/assembly/rt/stub.ts b/std/assembly/rt/stub.ts index c715c962bf..6efff7088d 100644 --- a/std/assembly/rt/stub.ts +++ b/std/assembly/rt/stub.ts @@ -1,4 +1,4 @@ -import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "rt/common"; +import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common"; // @ts-ignore: decorator @lazy @@ -9,7 +9,7 @@ var startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK; var offset: usize = startOffset; function maybeGrowMemory(newOffset: usize): void { - newOffset = (newOffset + AL_MASK) & ~AL_MASK; + // assumes newOffset is aligned var pagesBefore = memory.size(); var maxOffset = pagesBefore << 16; if (newOffset > maxOffset) { @@ -27,8 +27,11 @@ function maybeGrowMemory(newOffset: usize): void { export function __alloc(size: usize, id: u32): usize { if (size > BLOCK_MAXSIZE) unreachable(); var ptr = offset + BLOCK_OVERHEAD; - maybeGrowMemory(ptr + max(size, 1)); + var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE); + maybeGrowMemory(ptr + actualSize); var block = changetype(ptr - BLOCK_OVERHEAD); + block.mmInfo = actualSize; + if (DEBUG) block.gcInfo = -1; block.rtId = id; block.rtSize = size; return ptr; @@ -39,19 +42,24 @@ export function __alloc(size: usize, id: u32): usize { export function __realloc(ptr: usize, size: usize): usize { assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned var block = changetype(ptr - BLOCK_OVERHEAD); - var actualSize = (block.rtSize + AL_MASK) & ~AL_MASK; - var isLast = ptr + actualSize == offset; + var actualSize = block.mmInfo; + if (DEBUG) assert(block.gcInfo == -1); if (size > actualSize) { - if (isLast) { // maybe grow + if (ptr + actualSize == offset) { // last block: grow if (size > BLOCK_MAXSIZE) unreachable(); - maybeGrowMemory(ptr + size); + actualSize = (size + AL_MASK) & ~AL_MASK; + maybeGrowMemory(ptr + actualSize); + block.mmInfo = actualSize; } else { // copy to new block at least double the size - let newPtr = __alloc(max(size, actualSize << 1), block.rtId); - memory.copy(newPtr, ptr, actualSize); + actualSize = max((size + AL_MASK) & ~AL_MASK, actualSize << 1); + let newPtr = __alloc(actualSize, block.rtId); + memory.copy(newPtr, ptr, block.rtSize); block = changetype((ptr = newPtr) - BLOCK_OVERHEAD); } - } else if (isLast) { // shrink - offset = (ptr + size + AL_MASK) & ~AL_MASK; + } else if (ptr + actualSize == offset) { // last block: shrink + actualSize = (size + AL_MASK) & ~AL_MASK; + offset = ptr + actualSize; + block.mmInfo = actualSize; } block.rtSize = size; return ptr; @@ -59,7 +67,13 @@ export function __realloc(ptr: usize, size: usize): usize { // @ts-ignore: decorator @unsafe @global -export function __free(ref: usize): void { +export function __free(ptr: usize): void { + assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned + var block = changetype(ptr - BLOCK_OVERHEAD); + if (DEBUG) assert(block.gcInfo == -1); + if (ptr + block.mmInfo == offset) { // last block: discard + offset = changetype(block); + } } // @ts-ignore: decorator diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index afe7f7d5cc..4d182dd23b 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -16,11 +16,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -62,6 +57,7 @@ (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -71,25 +67,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $2 - local.get $0 - i32.const 1 + local.tee $3 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 i32.gt_u select + local.tee $4 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 + local.get $3 i32.const 16 i32.sub - local.tee $3 + local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const -1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $3 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 ) (func $call-super/A#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 3576b7b267..bb24c05c58 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -20,14 +20,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -81,6 +73,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -91,25 +84,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 04c91348ea..fbd2b98ef4 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -22,11 +22,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -68,6 +63,7 @@ (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -77,25 +73,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $2 - local.get $0 - i32.const 1 + local.tee $3 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 i32.gt_u select + local.tee $4 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 + local.get $3 i32.const 16 i32.sub - local.tee $3 + local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const -1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $3 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 ) (func $start:constructor (; 2 ;) (type $FUNCSIG$v) (local $0 i32) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 61b3283e95..55e22eb4a9 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -28,14 +28,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -89,6 +81,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -99,25 +92,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 7de1f70d26..07e64a70cb 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -64,11 +64,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -113,20 +108,26 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $1 - i32.const 4 + local.tee $2 + i32.const 16 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $1 + local.get $2 i32.const 16 i32.sub - local.tee $2 + local.tee $1 + i32.const 16 + i32.store + local.get $1 + i32.const -1 + i32.store offset=4 + local.get $1 local.get $0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 4 i32.store offset=12 - local.get $1 + local.get $2 ) (func $exports/Car#get:numDoors (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 83d21f38ff..5ad9605083 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -74,14 +74,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -135,6 +127,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -145,25 +138,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 8af8457747..5edabea077 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -15,11 +15,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -64,20 +59,26 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $0 - i32.const 1 + local.tee $1 + i32.const 16 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $0 + local.get $1 i32.const 16 i32.sub - local.tee $1 + local.tee $0 + i32.const 16 + i32.store + local.get $0 + i32.const -1 + i32.store offset=4 + local.get $0 i32.const 3 i32.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 ) (func $getter-call/C#get:x~anonymous|0 (; 2 ;) (type $FUNCSIG$i) (result i32) i32.const 42 diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 6e23747da5..9bd7e0e965 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -20,14 +20,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -81,6 +73,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -91,25 +84,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 738b0b807a..df12a651e7 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -42,11 +42,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -88,6 +83,7 @@ (func $~lib/rt/stub/__alloc (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -97,25 +93,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $2 - local.get $0 - i32.const 1 + local.tee $3 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 i32.gt_u select + local.tee $4 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 + local.get $3 i32.const 16 i32.sub - local.tee $3 + local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const -1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $3 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 ) (func $inlining/test_ctor (; 6 ;) (type $FUNCSIG$v) (local $0 i32) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 9ea72bd92f..8edcb26a51 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -281,14 +281,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -342,6 +334,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -352,25 +345,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index ae8b8dde48..fa626de37d 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -26,13 +26,14 @@ (data (i32.const 1184) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") (data (i32.const 1240) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\b0\04\00\00\b0\04\00\00(\00\00\00\n") (data (i32.const 1276) "\01\00\00\00\01") - (data (i32.const 1288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000") - (data (i32.const 1312) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003") - (data (i32.const 1336) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005") - (data (i32.const 1360) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004") - (data (i32.const 1384) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1408) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 1432) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 1288) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (data (i32.const 1336) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000") + (data (i32.const 1360) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003") + (data (i32.const 1384) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005") + (data (i32.const 1408) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004") + (data (i32.const 1432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") + (data (i32.const 1456) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 1480) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") (global $number/a (mut i32) (i32.const 1)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) @@ -96,11 +97,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -142,6 +138,7 @@ (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -151,25 +148,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $1 - local.get $0 - i32.const 1 + local.tee $2 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $1 + i32.const 16 + local.get $1 + i32.const 16 i32.gt_u select + local.tee $3 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $1 + local.get $2 i32.const 16 i32.sub - local.tee $2 + local.tee $1 + local.get $3 + i32.store + local.get $1 + i32.const -1 + i32.store offset=4 + local.get $1 i32.const 1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 i32.store offset=12 - local.get $1 + local.get $2 ) (func $~lib/util/number/utoa_simple (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1395,7 +1404,51 @@ call $~lib/memory/memory.copy local.get $1 ) - (func $~lib/util/number/dtoa (; 16 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/rt/stub/__free (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 1304 + i32.const 71 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1304 + i32.const 73 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.get $1 + i32.load + local.get $0 + i32.add + i32.eq + if + local.get $1 + global.set $~lib/rt/stub/offset + end + ) + (func $~lib/util/number/dtoa (; 17 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) f64.const 2 @@ -1425,14 +1478,16 @@ local.get $0 local.get $1 call $~lib/string/String#substring + local.get $0 + call $~lib/rt/stub/__free ) - (func $~lib/number/Bool#toString (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1424 - i32.const 1448 + (func $~lib/number/Bool#toString (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 1472 + i32.const 1496 local.get $0 select ) - (func $~lib/number/F32.isSafeInteger (; 18 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isSafeInteger (; 19 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 f32.trunc local.get $0 @@ -1444,7 +1499,7 @@ f32.le select ) - (func $~lib/number/F32.isInteger (; 19 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isInteger (; 20 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 f32.trunc local.get $0 @@ -1457,7 +1512,7 @@ f32.eq select ) - (func $~lib/number/F64.isSafeInteger (; 20 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isSafeInteger (; 21 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 f64.trunc local.get $0 @@ -1469,7 +1524,7 @@ f64.le select ) - (func $~lib/number/F64.isInteger (; 21 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isInteger (; 22 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 call $~lib/number/isFinite if (result i32) @@ -1481,9 +1536,9 @@ i32.const 0 end ) - (func $start:number (; 22 ;) (type $FUNCSIG$v) + (func $start:number (; 23 ;) (type $FUNCSIG$v) (local $0 i32) - i32.const 1472 + i32.const 1520 global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -1501,7 +1556,7 @@ unreachable end call $~lib/util/number/dtoa - i32.const 1304 + i32.const 1352 call $~lib/string/String.__eq i32.eqz if @@ -1514,7 +1569,7 @@ end i32.const 3 call $~lib/util/number/itoa32 - i32.const 1328 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if @@ -1527,7 +1582,7 @@ end i32.const -5 call $~lib/util/number/itoa32 - i32.const 1352 + i32.const 1400 call $~lib/string/String.__eq i32.eqz if @@ -1540,7 +1595,7 @@ end i32.const 4 call $~lib/util/number/itoa32 - i32.const 1376 + i32.const 1424 call $~lib/string/String.__eq i32.eqz if @@ -1557,7 +1612,7 @@ global.set $number/a global.get $number/a call $~lib/util/number/itoa32 - i32.const 1400 + i32.const 1448 call $~lib/string/String.__eq i32.eqz if @@ -1587,7 +1642,7 @@ end i32.const 1 call $~lib/number/Bool#toString - i32.const 1424 + i32.const 1472 call $~lib/string/String.__eq i32.eqz if @@ -1600,7 +1655,7 @@ end i32.const 0 call $~lib/number/Bool#toString - i32.const 1448 + i32.const 1496 call $~lib/string/String.__eq i32.eqz if @@ -1636,7 +1691,7 @@ global.set $number/a local.get $0 call $~lib/util/number/itoa32 - i32.const 1400 + i32.const 1448 call $~lib/string/String.__eq i32.eqz if @@ -2099,10 +2154,10 @@ unreachable end ) - (func $start (; 23 ;) (type $FUNCSIG$v) + (func $start (; 24 ;) (type $FUNCSIG$v) call $start:number ) - (func $null (; 24 ;) (type $FUNCSIG$v) + (func $null (; 25 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 3ae85d8c98..890afe11d7 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -31,13 +31,14 @@ (data (i32.const 1632) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") (data (i32.const 1688) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00p\06\00\00p\06\00\00(\00\00\00\n\00\00\00") (data (i32.const 1720) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 1736) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000\00") - (data (i32.const 1760) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003\00") - (data (i32.const 1784) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005\00") - (data (i32.const 1808) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00") - (data (i32.const 1832) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") - (data (i32.const 1856) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 1880) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") + (data (i32.const 1736) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 1784) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000\00") + (data (i32.const 1808) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003\00") + (data (i32.const 1832) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005\00") + (data (i32.const 1856) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00") + (data (i32.const 1880) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") + (data (i32.const 1904) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") + (data (i32.const 1928) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $number/a (mut i32) (i32.const 1)) @@ -58,7 +59,7 @@ (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) - (global $~lib/heap/__heap_base i32 (i32.const 1908)) + (global $~lib/heap/__heap_base i32 (i32.const 1956)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -136,14 +137,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -197,6 +190,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -207,25 +201,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 @@ -3227,7 +3235,54 @@ call $~lib/rt/stub/__retain ) (func $~lib/rt/stub/__free (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) - nop + (local $1 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1752 + i32.const 71 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.set $1 + local.get $1 + i32.load offset=4 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 1752 + i32.const 73 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.load + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + global.set $~lib/rt/stub/offset + end ) (func $~lib/util/number/dtoa (; 24 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) @@ -3297,11 +3352,11 @@ (local $2 i32) local.get $0 if (result i32) - i32.const 1872 + i32.const 1920 call $~lib/rt/stub/__retain local.tee $1 else - i32.const 1896 + i32.const 1944 call $~lib/rt/stub/__retain local.tee $2 end @@ -3411,7 +3466,7 @@ i32.const 0 call $~lib/number/F64#toString local.tee $1 - i32.const 1752 + i32.const 1800 call $~lib/string/String.__eq i32.eqz if @@ -3425,7 +3480,7 @@ i32.const 3 call $~lib/number/I32#toString local.tee $2 - i32.const 1776 + i32.const 1824 call $~lib/string/String.__eq i32.eqz if @@ -3439,7 +3494,7 @@ i32.const -5 call $~lib/number/I32#toString local.tee $3 - i32.const 1800 + i32.const 1848 call $~lib/string/String.__eq i32.eqz if @@ -3453,7 +3508,7 @@ i32.const 4 call $~lib/number/I32#toString local.tee $4 - i32.const 1824 + i32.const 1872 call $~lib/string/String.__eq i32.eqz if @@ -3471,7 +3526,7 @@ global.get $number/a call $~lib/number/I32#toString local.tee $5 - i32.const 1848 + i32.const 1896 call $~lib/string/String.__eq i32.eqz if @@ -3503,7 +3558,7 @@ i32.const 1 call $~lib/number/Bool#toString local.tee $7 - i32.const 1872 + i32.const 1920 call $~lib/string/String.__eq i32.eqz if @@ -3517,7 +3572,7 @@ i32.const 0 call $~lib/number/Bool#toString local.tee $8 - i32.const 1896 + i32.const 1944 call $~lib/string/String.__eq i32.eqz if @@ -3555,7 +3610,7 @@ local.get $10 call $~lib/number/I32#toString local.tee $10 - i32.const 1848 + i32.const 1896 call $~lib/string/String.__eq i32.eqz if diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index eff80db176..9169976248 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -13,11 +13,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -62,20 +57,26 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $1 - i32.const 1 + local.tee $2 + i32.const 16 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $1 + local.get $2 i32.const 16 i32.sub - local.tee $2 + local.tee $1 + i32.const 16 + i32.store + local.get $1 + i32.const -1 + i32.store offset=4 + local.get $1 local.get $0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 - local.get $1 + local.get $2 ) (func $start (; 2 ;) (type $FUNCSIG$v) i32.const 16 diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 73204cd63c..0eea36ce30 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -27,14 +27,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -88,6 +80,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -98,25 +91,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 67f6201554..57be3c3d7d 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -26,11 +26,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -72,6 +67,7 @@ (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -81,25 +77,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $2 - local.get $0 - i32.const 1 + local.tee $3 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 i32.gt_u select + local.tee $4 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 + local.get $3 i32.const 16 i32.sub - local.tee $3 + local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const -1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $3 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 ) (func $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 1b40e0a894..ed9346b5dc 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -36,14 +36,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -97,6 +89,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -107,25 +100,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat index aa511b4705..2fafbf49b2 100644 --- a/tests/compiler/retain-release.optimized.wat +++ b/tests/compiler/retain-release.optimized.wat @@ -58,11 +58,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -104,6 +99,7 @@ (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -113,25 +109,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $2 - local.get $0 - i32.const 1 + local.tee $3 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 i32.gt_u select + local.tee $4 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 + local.get $3 i32.const 16 i32.sub - local.tee $3 + local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const -1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $3 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 ) (func $retain-release/Ref#constructor (; 3 ;) (type $FUNCSIG$i) (result i32) i32.const 0 diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index 2c7c9d0f32..30a6b5c8b3 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -61,14 +61,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -122,6 +114,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -132,25 +125,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index bd0aad4a00..34e512c932 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -27,11 +27,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -76,20 +71,26 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $1 - i32.const 1 + local.tee $2 + i32.const 16 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $1 + local.get $2 i32.const 16 i32.sub - local.tee $2 + local.tee $1 + i32.const 16 + i32.store + local.get $1 + i32.const -1 + i32.store offset=4 + local.get $1 local.get $0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 - local.get $1 + local.get $2 ) (func $rt/instanceof/Animal#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index ad3070de14..f7dc175185 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -32,14 +32,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -93,6 +85,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -103,25 +96,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat index f3a34c8e68..7052613dbd 100644 --- a/tests/compiler/rt/stub-realloc.optimized.wat +++ b/tests/compiler/rt/stub-realloc.optimized.wat @@ -28,11 +28,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -74,6 +69,7 @@ (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -83,25 +79,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $2 - local.get $0 - i32.const 1 + local.tee $3 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 i32.gt_u select + local.tee $4 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 + local.get $3 i32.const 16 i32.sub - local.tee $3 + local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const -1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $3 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 ) (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 @@ -302,31 +310,38 @@ if i32.const 0 i32.const 24 - i32.const 40 + i32.const 43 i32.const 2 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset local.get $0 i32.const 16 i32.sub - local.tee $2 - i32.load offset=12 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $4 - local.get $0 - i32.add - i32.eq - local.set $3 + local.tee $3 + i32.load + local.set $2 + local.get $3 + i32.load offset=4 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 46 + i32.const 13 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $4 + local.get $2 i32.gt_u if - local.get $3 + global.get $~lib/rt/stub/offset + local.get $0 + local.get $2 + i32.add + i32.eq if local.get $1 i32.const 1073741808 @@ -334,52 +349,118 @@ if unreachable end - local.get $0 local.get $1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + local.get $0 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $3 + local.get $2 + i32.store else local.get $1 - local.get $4 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $4 + local.get $2 i32.const 1 i32.shl - local.tee $3 - local.get $1 - local.get $3 + local.tee $2 + local.get $4 + local.get $2 i32.gt_u select - local.get $2 + local.get $3 i32.load offset=8 call $~lib/rt/stub/__alloc local.tee $2 local.get $0 - local.get $4 + local.get $3 + i32.load offset=12 call $~lib/memory/memory.copy local.get $2 local.tee $0 i32.const 16 i32.sub - local.set $2 + local.set $3 end else - local.get $3 + global.get $~lib/rt/stub/offset + local.get $0 + local.get $2 + i32.add + i32.eq if - local.get $0 local.get $1 - i32.add i32.const 15 i32.add i32.const -16 i32.and + local.tee $2 + local.get $0 + i32.add global.set $~lib/rt/stub/offset + local.get $3 + local.get $2 + i32.store end end - local.get $2 + local.get $3 local.get $1 i32.store offset=12 local.get $0 ) - (func $start:rt/stub-realloc (; 8 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__free (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 71 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 73 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.get $1 + i32.load + local.get $0 + i32.add + i32.eq + if + local.get $1 + global.set $~lib/rt/stub/offset + end + ) + (func $start:rt/stub-realloc (; 9 ;) (type $FUNCSIG$v) i32.const 10 i32.const 0 call $~lib/rt/stub/__alloc @@ -497,8 +578,23 @@ call $~lib/builtins/abort unreachable end + global.get $rt/stub-realloc/ptr + call $~lib/rt/stub/__free + i32.const 1 + i32.const 0 + call $~lib/rt/stub/__alloc + global.get $rt/stub-realloc/ptr + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 30 + i32.const 0 + call $~lib/builtins/abort + unreachable + end ) - (func $start (; 9 ;) (type $FUNCSIG$v) + (func $start (; 10 ;) (type $FUNCSIG$v) global.get $~lib/started if return diff --git a/tests/compiler/rt/stub-realloc.ts b/tests/compiler/rt/stub-realloc.ts index ccb6aa7e84..129011e08b 100644 --- a/tests/compiler/rt/stub-realloc.ts +++ b/tests/compiler/rt/stub-realloc.ts @@ -25,3 +25,6 @@ assert(ptr == originalPtr); ptr = __realloc(ptr, 33); // not last anymore: copies assert(ptr > originalPtr); + +__free(ptr); // discards last +assert(__alloc(1, 0) == ptr); diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat index 66e58360bc..b7fec9328b 100644 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -34,14 +34,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -95,6 +87,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -105,25 +98,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 @@ -1395,7 +1402,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 i32.const 0 i32.ne @@ -1411,7 +1417,7 @@ if i32.const 0 i32.const 24 - i32.const 40 + i32.const 43 i32.const 2 call $~lib/builtins/abort unreachable @@ -1421,25 +1427,30 @@ i32.sub local.set $2 local.get $2 - i32.load offset=12 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + i32.load local.set $3 - local.get $0 - local.get $3 - i32.add - global.get $~lib/rt/stub/offset + local.get $2 + i32.load offset=4 + i32.const -1 i32.eq - local.set $4 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 46 + i32.const 13 + call $~lib/builtins/abort + unreachable + end local.get $1 local.get $3 i32.gt_u if - local.get $4 + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq if local.get $1 i32.const 1073741808 @@ -1447,48 +1458,77 @@ if unreachable end - local.get $0 local.get $1 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $0 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $2 + local.get $3 + i32.store else local.get $1 - local.tee $5 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $4 local.get $3 i32.const 1 i32.shl - local.tee $6 + local.tee $5 + local.get $4 local.get $5 - local.get $6 i32.gt_u select + local.set $3 + local.get $3 local.get $2 i32.load offset=8 call $~lib/rt/stub/__alloc - local.set $5 - local.get $5 + local.set $4 + local.get $4 local.get $0 - local.get $3 + local.get $2 + i32.load offset=12 call $~lib/memory/memory.copy - local.get $5 + local.get $4 local.tee $0 i32.const 16 i32.sub local.set $2 end else - local.get $4 + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq if - local.get $0 local.get $1 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + local.set $3 + local.get $0 + local.get $3 + i32.add global.set $~lib/rt/stub/offset + local.get $2 + local.get $3 + i32.store end end local.get $2 @@ -1496,7 +1536,57 @@ i32.store offset=12 local.get $0 ) - (func $start:rt/stub-realloc (; 9 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__free (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 71 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.set $1 + local.get $1 + i32.load offset=4 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 73 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.load + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + global.set $~lib/rt/stub/offset + end + ) + (func $start:rt/stub-realloc (; 10 ;) (type $FUNCSIG$v) i32.const 10 i32.const 0 call $~lib/rt/stub/__alloc @@ -1623,8 +1713,24 @@ call $~lib/builtins/abort unreachable end + global.get $rt/stub-realloc/ptr + call $~lib/rt/stub/__free + i32.const 1 + i32.const 0 + call $~lib/rt/stub/__alloc + global.get $rt/stub-realloc/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 30 + i32.const 0 + call $~lib/builtins/abort + unreachable + end ) - (func $start (; 10 ;) (type $FUNCSIG$v) + (func $start (; 11 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -1644,6 +1750,6 @@ global.set $~lib/rt/stub/offset call $start:rt/stub-realloc ) - (func $null (; 11 ;) (type $FUNCSIG$v) + (func $null (; 12 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/runtime-stub.optimized.wat b/tests/compiler/runtime-stub.optimized.wat index 5ac2180318..cf05ce677d 100644 --- a/tests/compiler/runtime-stub.optimized.wat +++ b/tests/compiler/runtime-stub.optimized.wat @@ -19,11 +19,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -65,6 +60,7 @@ (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -74,25 +70,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $2 - local.get $0 - i32.const 1 + local.tee $3 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 i32.gt_u select + local.tee $4 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 + local.get $3 i32.const 16 i32.sub - local.tee $3 + local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const -1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $3 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 ) (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index 15ab18ea48..e7cc0e83eb 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -24,14 +24,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -85,6 +77,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -95,25 +88,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/simd.untouched.wat b/tests/compiler/simd.untouched.wat index 74e8c059ac..ed2aec3b8e 100644 --- a/tests/compiler/simd.untouched.wat +++ b/tests/compiler/simd.untouched.wat @@ -10,121 +10,7 @@ (export "memory" (memory $0)) (start $start) (func $simd/test_v128 (; 1 ;) (type $FUNCSIG$v) - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 5 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x04030202 0x08070605 0x0c0b0a09 0x100f0e0d - i8x16.ne - i8x16.any_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 - v128.and - v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 16 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 - v128.or - v128.const i32x4 0x05030301 0x09070705 0x0d0b0b09 0x110f0f0d - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 23 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 - v128.xor - v128.const i32x4 0x05020300 0x09060704 0x0d0a0b08 0x110e0f0c - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.not - v128.const i32x4 0xfbfcfdfe 0xf7f8f9fa 0xf3f4f5f6 0xeff0f1f2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 37 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x0d0e0f10 0x090a0b0c 0x05060708 0x01020304 - v128.const i32x4 0xff00ff00 0xff00ff00 0xff00ff00 0xff00ff00 - v128.bitselect - v128.const i32x4 0x040e0210 0x080a060c 0x0c060a08 0x10020e04 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 43 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + nop ) (func $simd/test_i8x16 (; 2 ;) (type $FUNCSIG$v) (local $0 v128) @@ -321,170 +207,6 @@ call $~lib/builtins/abort unreachable end - v128.const i32x4 0x7f7f7f7e 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f - i32.const 2 - i8x16.splat - i8x16.add_saturate_s - i32.const 127 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 85 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0xfffffffe 0xffffffff 0xffffffff 0xffffffff - i32.const 2 - i8x16.splat - i8x16.add_saturate_u - i32.const -1 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 91 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x80808081 0x80808080 0x80808080 0x80808080 - i32.const 2 - i8x16.splat - i8x16.sub_saturate_s - i32.const -128 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 97 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i32.const 2 - i8x16.splat - i8x16.sub_saturate_u - i32.const 0 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i8x16.splat - i32.const 1 - i8x16.shl - i32.const 2 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 109 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const -2 - i8x16.splat - i32.const 1 - i8x16.shr_s - i32.const -1 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 110 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i8x16.splat - i32.const 1 - i8x16.shr_u - i32.const 127 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 111 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i8x16.any_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 112 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i8x16.splat - i8x16.all_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 113 - i32.const 2 - call $~lib/builtins/abort - unreachable - end i32.const 0 i8x16.splat i32.const 1 @@ -866,170 +588,6 @@ call $~lib/builtins/abort unreachable end - v128.const i32x4 0x7fff7ffe 0x7fff7fff 0x7fff7fff 0x7fff7fff - i32.const 2 - i16x8.splat - i16x8.add_saturate_s - i32.const 32767 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 157 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0xfffffffe 0xffffffff 0xffffffff 0xffffffff - i32.const 2 - i16x8.splat - i16x8.add_saturate_u - i32.const -1 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 163 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x80008001 0x80008000 0x80008000 0x80008000 - i32.const 2 - i16x8.splat - i16x8.sub_saturate_s - i32.const -32768 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 169 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i32.const 2 - i16x8.splat - i16x8.sub_saturate_u - i32.const 0 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 175 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i16x8.splat - i32.const 1 - i16x8.shl - i32.const 2 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 181 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const -2 - i16x8.splat - i32.const 1 - i16x8.shr_s - i32.const -1 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 182 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i16x8.splat - i32.const 1 - i16x8.shr_u - i32.const 32767 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 183 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i16x8.any_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 184 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i16x8.splat - i16x8.all_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 185 - i32.const 2 - call $~lib/builtins/abort - unreachable - end i32.const 0 i16x8.splat i32.const 1 @@ -1325,153 +883,65 @@ i32.const 24 i32.const 211 i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32x4.extract_lane 0 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 216 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32x4.extract_lane 3 - i32.const -2147483648 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 217 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 5 - i32x4.replace_lane 3 - v128.const i32x4 0x00000002 0x00000003 0x00000004 0x00000005 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 218 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00000001 0x00000002 0x00000001 0x00000001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 223 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32x4.splat - i32.const 1 - i32x4.shl - i32.const 2 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 228 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const -2 - i32x4.splat - i32.const 1 - i32x4.shr_s - i32.const -1 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32x4.extract_lane 0 + i32.const 2 + i32.eq i32.eqz if i32.const 0 i32.const 24 - i32.const 229 + i32.const 216 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const -1 - i32x4.splat - i32.const 1 - i32x4.shr_u - i32.const 2147483647 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne + local.get $2 + i32x4.extract_lane 3 + i32.const -2147483648 + i32.eq i32.eqz if i32.const 0 i32.const 24 - i32.const 230 + i32.const 217 i32.const 2 call $~lib/builtins/abort unreachable end - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i32x4.any_true + local.get $2 + i32.const 5 + i32x4.replace_lane 3 + v128.const i32x4 0x00000002 0x00000003 0x00000004 0x00000005 + i8x16.eq + i8x16.all_true i32.const 0 i32.ne - i32.const 1 - i32.eq i32.eqz if i32.const 0 i32.const 24 - i32.const 231 + i32.const 218 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 1 - i32x4.splat - i32x4.all_true + local.get $0 + local.get $1 + v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + v128.const i32x4 0x00000001 0x00000002 0x00000001 0x00000001 + i8x16.eq + i8x16.all_true i32.const 0 i32.ne - i32.const 1 - i32.eq i32.eqz if i32.const 0 i32.const 24 - i32.const 232 + i32.const 223 i32.const 2 call $~lib/builtins/abort unreachable @@ -1661,42 +1131,6 @@ call $~lib/builtins/abort unreachable end - f32.const -1.5 - f32x4.splat - i32x4.trunc_sat_f32x4_s - i32.const -1 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 247 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32x4.splat - i32x4.trunc_sat_f32x4_u - i32.const 0 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 252 - i32.const 2 - call $~lib/builtins/abort - unreachable - end ) (func $simd/test_i64x2 (; 5 ;) (type $FUNCSIG$v) (local $0 v128) @@ -1849,130 +1283,6 @@ call $~lib/builtins/abort unreachable end - i64.const 1 - i64x2.splat - i32.const 1 - i64x2.shl - i64.const 2 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 284 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const -2 - i64x2.splat - i32.const 1 - i64x2.shr_s - i64.const -1 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 285 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64x2.splat - i32.const 1 - i64x2.shr_u - i64.const 9223372036854775807 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 286 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i64x2.any_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 287 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64x2.splat - i64x2.all_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 288 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64x2.splat - i64x2.trunc_sat_f64x2_s - i64.const -1 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 289 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64x2.splat - i64x2.trunc_sat_f64x2_u - i64.const 0 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 294 - i32.const 2 - call $~lib/builtins/abort - unreachable - end ) (func $simd/test_f32x4 (; 6 ;) (type $FUNCSIG$v) (local $0 v128) @@ -2351,58 +1661,6 @@ call $~lib/builtins/abort unreachable end - v128.const i32x4 0x40800000 0x41100000 0x41800000 0x41c80000 - f32x4.sqrt - v128.const i32x4 0x40000000 0x40400000 0x40800000 0x40a00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 339 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32x4.splat - f32x4.convert_i32x4_s - f32.const -1 - f32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 340 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32x4.splat - f32x4.convert_i32x4_u - f32.const 4294967296 - f32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 345 - i32.const 2 - call $~lib/builtins/abort - unreachable - end ) (func $simd/test_f64x2 (; 7 ;) (type $FUNCSIG$v) (local $0 v128) @@ -2781,58 +2039,6 @@ call $~lib/builtins/abort unreachable end - v128.const i32x4 0x00000000 0x40100000 0x00000000 0x40220000 - f64x2.sqrt - v128.const i32x4 0x00000000 0x40000000 0x00000000 0x40080000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 390 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64x2.splat - f64x2.convert_i64x2_s - f64.const -1 - f64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 391 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64x2.splat - f64x2.convert_i64x2_u - f64.const 18446744073709551615 - f64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 396 - i32.const 2 - call $~lib/builtins/abort - unreachable - end ) (func $simd/test_v8x16 (; 8 ;) (type $FUNCSIG$v) (local $0 v128) diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index 8aea8ac9ea..66ad05beb2 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -20,11 +20,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -69,20 +64,26 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $0 - i32.const 8 + local.tee $1 + i32.const 16 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $0 + local.get $1 i32.const 16 i32.sub - local.tee $1 + local.tee $0 + i32.const 16 + i32.store + local.get $0 + i32.const -1 + i32.store offset=4 + local.get $0 i32.const 3 i32.store offset=8 - local.get $1 + local.get $0 i32.const 8 i32.store offset=12 - local.get $0 + local.get $1 ) (func $start:std/date (; 5 ;) (type $FUNCSIG$v) (local $0 i32) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 1f4794ccb9..5624c16711 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -29,14 +29,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -90,6 +82,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -100,25 +93,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index ad42bcf0fe..3e2d84ab44 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -12,11 +12,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -61,20 +56,26 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $0 - i32.const 8 + local.tee $1 + i32.const 16 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $0 + local.get $1 i32.const 16 i32.sub - local.tee $1 + local.tee $0 + i32.const 16 + i32.store + local.get $0 + i32.const -1 + i32.store offset=4 + local.get $0 i32.const 3 i32.store offset=8 - local.get $1 + local.get $0 i32.const 8 i32.store offset=12 - local.get $0 + local.get $1 ) (func $std/new/AClass#constructor (; 2 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index f9a4f9c1fd..e5cc939cfe 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -20,14 +20,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -81,6 +73,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -91,25 +84,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/std/object-literal.optimized.wat b/tests/compiler/std/object-literal.optimized.wat index 32bc1fb1db..20c99ede7e 100644 --- a/tests/compiler/std/object-literal.optimized.wat +++ b/tests/compiler/std/object-literal.optimized.wat @@ -16,11 +16,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -62,6 +57,7 @@ (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -71,25 +67,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $2 - local.get $0 - i32.const 1 + local.tee $3 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 i32.gt_u select + local.tee $4 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 + local.get $3 i32.const 16 i32.sub - local.tee $3 + local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const -1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $3 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 ) (func $~lib/string/String#get:length (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index 61a0219051..ebe13abbf6 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -22,14 +22,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -83,6 +75,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -93,25 +86,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 664e4f8f01..8f90298127 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -83,11 +83,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -132,20 +127,26 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $1 - i32.const 8 + local.tee $2 + i32.const 16 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $1 + local.get $2 i32.const 16 i32.sub - local.tee $2 + local.tee $1 + i32.const 16 + i32.store + local.get $1 + i32.const -1 + i32.store offset=4 + local.get $1 local.get $0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 8 i32.store offset=12 - local.get $1 + local.get $2 ) (func $std/operator-overloading/Tester#constructor (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 72b3266b2b..e7d5a02fd6 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -90,14 +90,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -151,6 +143,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -161,25 +154,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index d8f7839ba3..b604d86c82 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -56,11 +56,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -102,6 +97,7 @@ (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -111,25 +107,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $2 - local.get $0 - i32.const 1 + local.tee $3 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 i32.gt_u select + local.tee $4 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 + local.get $3 i32.const 16 i32.sub - local.tee $3 + local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const -1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $3 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 ) (func $~lib/memory/memory.copy (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -321,31 +329,38 @@ if i32.const 0 i32.const 472 - i32.const 40 + i32.const 43 i32.const 2 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset local.get $0 i32.const 16 i32.sub - local.tee $2 - i32.load offset=12 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $4 - local.get $0 - i32.add - i32.eq - local.set $3 + local.tee $3 + i32.load + local.set $2 + local.get $3 + i32.load offset=4 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 472 + i32.const 46 + i32.const 13 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $4 + local.get $2 i32.gt_u if - local.get $3 + global.get $~lib/rt/stub/offset + local.get $0 + local.get $2 + i32.add + i32.eq if local.get $1 i32.const 1073741808 @@ -353,47 +368,69 @@ if unreachable end - local.get $0 local.get $1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + local.get $0 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $3 + local.get $2 + i32.store else local.get $1 - local.get $4 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $4 + local.get $2 i32.const 1 i32.shl - local.tee $3 - local.get $1 - local.get $3 + local.tee $2 + local.get $4 + local.get $2 i32.gt_u select - local.get $2 + local.get $3 i32.load offset=8 call $~lib/rt/stub/__alloc local.tee $2 local.get $0 - local.get $4 + local.get $3 + i32.load offset=12 call $~lib/memory/memory.copy local.get $2 local.tee $0 i32.const 16 i32.sub - local.set $2 + local.set $3 end else - local.get $3 + global.get $~lib/rt/stub/offset + local.get $0 + local.get $2 + i32.add + i32.eq if - local.get $0 local.get $1 - i32.add i32.const 15 i32.add i32.const -16 i32.and + local.tee $2 + local.get $0 + i32.add global.set $~lib/rt/stub/offset + local.get $3 + local.get $2 + i32.store end end - local.get $2 + local.get $3 local.get $1 i32.store offset=12 local.get $0 diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 815a946ab7..69aa2c85d7 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -76,14 +76,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -137,6 +129,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -147,25 +140,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 @@ -1428,7 +1435,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 i32.const 0 i32.ne @@ -1444,7 +1450,7 @@ if i32.const 0 i32.const 472 - i32.const 40 + i32.const 43 i32.const 2 call $~lib/builtins/abort unreachable @@ -1454,25 +1460,30 @@ i32.sub local.set $2 local.get $2 - i32.load offset=12 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + i32.load local.set $3 - local.get $0 - local.get $3 - i32.add - global.get $~lib/rt/stub/offset + local.get $2 + i32.load offset=4 + i32.const -1 i32.eq - local.set $4 + i32.eqz + if + i32.const 0 + i32.const 472 + i32.const 46 + i32.const 13 + call $~lib/builtins/abort + unreachable + end local.get $1 local.get $3 i32.gt_u if - local.get $4 + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq if local.get $1 i32.const 1073741808 @@ -1480,48 +1491,77 @@ if unreachable end - local.get $0 local.get $1 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $0 + local.get $3 i32.add call $~lib/rt/stub/maybeGrowMemory + local.get $2 + local.get $3 + i32.store else local.get $1 - local.tee $5 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $4 local.get $3 i32.const 1 i32.shl - local.tee $6 + local.tee $5 + local.get $4 local.get $5 - local.get $6 i32.gt_u select + local.set $3 + local.get $3 local.get $2 i32.load offset=8 call $~lib/rt/stub/__alloc - local.set $5 - local.get $5 + local.set $4 + local.get $4 local.get $0 - local.get $3 + local.get $2 + i32.load offset=12 call $~lib/memory/memory.copy - local.get $5 + local.get $4 local.tee $0 i32.const 16 i32.sub local.set $2 end else - local.get $4 + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq if - local.get $0 local.get $1 - i32.add i32.const 15 i32.add i32.const 15 i32.const -1 i32.xor i32.and + local.set $3 + local.get $0 + local.get $3 + i32.add global.set $~lib/rt/stub/offset + local.get $2 + local.get $3 + i32.store end end local.get $2 diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index fec5e67cfb..0b2c961ca9 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -69,11 +69,6 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 memory.size local.tee $2 i32.const 16 @@ -115,6 +110,7 @@ (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -124,25 +120,37 @@ global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $2 - local.get $0 - i32.const 1 + local.tee $3 local.get $0 - i32.const 1 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 i32.gt_u select + local.tee $4 i32.add call $~lib/rt/stub/maybeGrowMemory - local.get $2 + local.get $3 i32.const 16 i32.sub - local.tee $3 + local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const -1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 - local.get $3 + local.get $2 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 ) (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 4d2acb2831..d90a4709e6 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -94,14 +94,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 memory.size local.set $1 local.get $1 @@ -155,6 +147,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.const 1073741808 i32.gt_u @@ -165,25 +158,39 @@ i32.const 16 i32.add local.set $2 - local.get $2 local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.tee $3 - i32.const 1 + i32.const 16 local.tee $4 local.get $3 local.get $4 i32.gt_u select + local.set $5 + local.get $2 + local.get $5 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $5 + local.set $6 + local.get $6 local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=12 local.get $2 From b4799500f1a1d8fc08e86abdc7535cc1abf78884 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Mon, 2 Sep 2019 11:39:21 +0300 Subject: [PATCH 10/24] Add fast methods for reading typed arrays to the loader (#794) --- lib/loader/index.d.ts | 18 ++++++- lib/loader/index.js | 68 ++++++++++++++++++++------ lib/loader/tests/assembly/index.ts | 3 ++ lib/loader/tests/build/untouched.wasm | Bin 9477 -> 9659 bytes lib/loader/tests/index.js | 47 ++++++++++++++++++ 5 files changed, 120 insertions(+), 16 deletions(-) diff --git a/lib/loader/index.d.ts b/lib/loader/index.d.ts index fa239e99db..0ce0221a0a 100644 --- a/lib/loader/index.d.ts +++ b/lib/loader/index.d.ts @@ -55,6 +55,22 @@ interface ASUtil { __getArray(ref: number): number[]; /** Gets a view on the values of an array in the module's memory. */ __getArrayView(ref: number): TypedArray; + /** Reads (copies) the values of Uint8Array from the module's memory. */ + __getUint8Array(ref: number): Uint8Array; + /** Reads (copies) the values of Int8Array from the module's memory. */ + __getInt8Array(ref: number): Int8Array; + /** Reads (copies) the values of Uint16Array from the module's memory. */ + __getUint16Array(ref: number): Uint16Array; + /** Reads (copies) the values of Int16Array from the module's memory. */ + __getInt16Array(ref: number): Int16Array; + /** Reads (copies) the values of Uint32Array from the module's memory. */ + __getUint32Array(ref: number): Uint32Array; + /** Reads (copies) the values of Int32Array from the module's memory. */ + __getInt32Array(ref: number): Int32Array; + /** Reads (copies) the values of Float32Array from the module's memory. */ + __getFloat32Array(ref: number): Float32Array; + /** Reads (copies) the values of Float64Array from the module's memory. */ + __getFloat64Array(ref: number): Float64Array; /** Retains a reference externally, making sure that it doesn't become collected prematurely. Returns the reference. */ __retain(ref: number): number; /** Releases a previously retained reference to an object, allowing the runtime to collect it once its reference count reaches zero. */ @@ -62,7 +78,7 @@ interface ASUtil { /** Allocates an instance of the class represented by the specified id. */ __alloc(size: number, id: number): number; /** Tests whether an object is an instance of the class represented by the specified base id. */ - __instanceof(ref: number, baseId: number): boolean; + __instanceof(ref: number, baseId: number): boolean; /** Forces a cycle collection. Only relevant if objects potentially forming reference cycles are used. */ __collect(): void; } diff --git a/lib/loader/index.js b/lib/loader/index.js index 5864874886..2a759abd21 100644 --- a/lib/loader/index.js +++ b/lib/loader/index.js @@ -24,6 +24,8 @@ const KEY_SIGNED = 1 << 19; const KEY_FLOAT = 1 << 20; const KEY_NULLABLE = 1 << 21; const KEY_MANAGED = 1 << 22; +const KEY_ALIGN_OFFSET = 14; +const VAL_ALIGN_OFFSET = 5; // Array(BufferView) layout const ARRAYBUFFERVIEW_BUFFER_OFFSET = 0; @@ -109,6 +111,7 @@ function postInstantiate(baseModule, instance) { F64 = new Float64Array(buffer); } } + checkMem(); /** Gets the runtime type info for the given id. */ @@ -125,17 +128,30 @@ function postInstantiate(baseModule, instance) { return U32[(rttiBase + 4 >>> 2) + id * 2 + 1]; } - /** Gets the runtime alignment of a collection's values or keys. */ - function getAlign(which, info) { - return 31 - Math.clz32((info / which) & 31); // -1 if none + /** Gets the runtime alignment of a collection's values. */ + function getAlignValue(info) { + return 31 - Math.clz32((info >>> VAL_ALIGN_OFFSET) & 31); // -1 if none + } + + /** Gets the runtime alignment of a collection's keys. */ + function getAlignKey(info) { + return 31 - Math.clz32((info >>> KEY_ALIGN_OFFSET) & 31); // -1 if none + } + + function getTypedArray(Type, shift, arr) { + var buffer = memory.buffer; + var u32 = new Uint32Array(buffer); + var buf = u32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2]; + var length = u32[buf + SIZE_OFFSET >>> 2]; + return new Type(buffer).slice(buf >>> shift, buf + length >>> shift); } /** Allocates a new string in the module's memory and returns its retained pointer. */ function __allocString(str) { - const length = str.length; - const ref = alloc(length << 1, STRING_ID); - checkMem(); - for (let i = 0, j = ref >>> 1; i < length; ++i) U16[j + i] = str.charCodeAt(i); + var length = str.length; + var ref = alloc(length << 1, STRING_ID); + var u16 = new Uint16Array(memory.buffer); + for (var i = 0, p = ref >>> 1; i < length; ++i) u16[p + i] = str.charCodeAt(i); return ref; } @@ -143,10 +159,12 @@ function postInstantiate(baseModule, instance) { /** Reads a string from the module's memory by its pointer. */ function __getString(ref) { - checkMem(); - const id = U32[ref + ID_OFFSET >>> 2]; + var buf = memory.buffer; + var u16 = new Uint16Array(buf); + var u32 = new Uint32Array(buf); + var id = u32[ref + ID_OFFSET >>> 2]; if (id !== STRING_ID) throw Error("not a string: " + ref); - return getStringImpl(U32, U16, ref); + return getStringImpl(u32, u16, ref); } baseModule.__getString = __getString; @@ -173,7 +191,7 @@ function postInstantiate(baseModule, instance) { function __allocArray(id, values) { const info = getInfo(id); if (!(info & (ARRAYBUFFERVIEW | ARRAY))) throw Error("not an array: " + id + " @ " + info); - const align = getAlign(VAL_ALIGN, info); + const align = getAlignValue(info); const length = values.length; const buf = alloc(length << align, ARRAYBUFFER_ID); const arr = alloc(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); @@ -183,8 +201,11 @@ function postInstantiate(baseModule, instance) { U32[arr + ARRAYBUFFERVIEW_DATALENGTH_OFFSET >>> 2] = length << align; if (info & ARRAY) U32[arr + ARRAY_LENGTH_OFFSET >>> 2] = length; const view = getView(align, info & VAL_SIGNED, info & VAL_FLOAT); - for (let i = 0; i < length; ++i) view[(buf >> align) + i] = values[i]; - if (info & VAL_MANAGED) for (let i = 0; i < length; ++i) retain(values[i]); + if (info & VAL_MANAGED) { + for (let i = 0; i < length; ++i) view[(buf >>> align) + i] = retain(values[i]); + } else { + view.set(values, buf >>> align); + } return arr; } @@ -196,7 +217,7 @@ function postInstantiate(baseModule, instance) { const id = U32[arr + ID_OFFSET >>> 2]; const info = getInfo(id); if (!(info & ARRAYBUFFERVIEW)) throw Error("not an array: " + id); - const align = getAlign(VAL_ALIGN, info); + const align = getAlignValue(info); var buf = U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2]; const length = info & ARRAY ? U32[arr + ARRAY_LENGTH_OFFSET >>> 2] @@ -214,6 +235,23 @@ function postInstantiate(baseModule, instance) { baseModule.__getArray = __getArray; + function __getArrayBuffer(buf) { + var buffer = memory.buffer; + var length = (new Uint32Array(buffer))[buf + SIZE_OFFSET >>> 2]; + return buffer.slice(buf, buf + length); + } + + baseModule.__getArrayBuffer = __getArrayBuffer; + + baseModule.__getUint8Array = getTypedArray.bind(null, Uint8Array, 0); + baseModule.__getInt8Array = getTypedArray.bind(null, Int8Array, 0); + baseModule.__getUint16Array = getTypedArray.bind(null, Uint16Array, 1); + baseModule.__getInt16Array = getTypedArray.bind(null, Int16Array, 1); + baseModule.__getUint32Array = getTypedArray.bind(null, Uint32Array, 2); + baseModule.__getInt32Array = getTypedArray.bind(null, Int32Array, 2); + baseModule.__getFloat32Array = getTypedArray.bind(null, Float32Array, 2); + baseModule.__getFloat64Array = getTypedArray.bind(null, Float64Array, 3); + /** Tests whether an object is an instance of the class represented by the specified base id. */ function __instanceof(ref, baseId) { var id = U32[(ref + ID_OFFSET) >>> 2]; @@ -228,7 +266,7 @@ function postInstantiate(baseModule, instance) { // Pull basic exports to baseModule so code in preInstantiate can use them baseModule.memory = baseModule.memory || memory; - baseModule.table = baseModule.table || table; + baseModule.table = baseModule.table || table; // Demangle exports and provide the usual utility on the prototype return demangle(rawExports, Object.defineProperties(baseModule, { diff --git a/lib/loader/tests/assembly/index.ts b/lib/loader/tests/assembly/index.ts index 3b68e105aa..3dfb13ab55 100644 --- a/lib/loader/tests/assembly/index.ts +++ b/lib/loader/tests/assembly/index.ts @@ -63,6 +63,9 @@ export function dotrace(num: f64): void { trace("The answer is", 1, num); } +export const UINT8ARRAY_ID = idof(); +export const INT16ARRAY_ID = idof(); +export const UINT16ARRAY_ID = idof(); export const INT32ARRAY_ID = idof(); export const UINT32ARRAY_ID = idof(); export const FLOAT32ARRAY_ID = idof(); diff --git a/lib/loader/tests/build/untouched.wasm b/lib/loader/tests/build/untouched.wasm index fd6471c9dcec11253664018e36154597da8cc9ce..539108e521de0bf19ac1d45d851b3e2a23903ea0 100644 GIT binary patch delta 1315 zcmZWpTWDNG7@mJ-&R)*!X3s`<6SG+}XH&?=G=U_wsd&kbHL2TbR)a=uOZCC)Zh~wZ zjRon7Cx%}zL+plu)8ybq7gW%B8)w8E ze2kxn%kTppk~#PhPslIeciiLc>-`%{GGI(;FhNzvs#;F3h5v(ByeHr_oQa%=S8*^p z0&n7@(M@m^4@L7bFtCW9M|VMI(~l(qzQgV~!a4jj{zB|mZqha>&iEVfe!ti_3=p9b z&9&9lRVd369l_)@JX2dVP^*TZCT;Ol12qsVnxMuTnuS7(B0rW;+ZM@%tgEY{YK3X+ ztDE4(P-9-k{Zch7A9p2R2G1l zm+P8W*4q9PzfqOGIRL7l$fW~*g`P&;R$VpjjJGB3gic&a48Vu@K_XAQ_$o1Y(>rMp z4PFu@&86*E)IDO;R1)yFbOCiTmLpIaHY1B+)3Vg^H9^JtnB)U~%g#-#j+4o-c_!Hp z!rCr&9F*3E)zp(t@l&d;*csgI6z>NuMYEW$NLa>~GP`|>)PfpIcz7W*ly=D-q%biD z*_G8Pr&TSrg}Rg}B($Ktgd*V}>)D*`p`A(L#cX!V|58yzj3PAcf=EPSP_PNXTn4o+ zI|XN2h)UhX`q|pp&!XR@;p^s5*DfGV9qgXu5a72xv*2S-?lAvS;>p~eiK~uDJctmK zqrBA8QQmz4vbCN1lpA~dGq@&<#Npm|@m%jHtXP=tQ_^s||9(cR2x=OFTZsPZLi3LN zvDUnQxp`A--kHArs;5ncM96WuZ-DAr>DzhhIPivHmV{c&hn^dt)Lz++ifLKZpm~s{ zS@3Eo+jFSml%89#~5Z>8c`#D)Z`x&)PsAICvPQXo-v_OO_5W!m@YRr#Ol<=37rcw{B(~AqV zLR4}Qv>XrtG$>T6RDmK6fgS*d69+gUApsHx5aRa$RaF!?1aS_t4~)p6vNZC{+xceZ z`@T!-ek&fG?d)JrD`%jb#UiU3sVjH6Pn17po(6izdhsLUg9A`e)+(2cmEEr~* z&2bzNoiL7LVlzzOKjL4wjyGfqZsLD(3ZCF!p`9%=U|f$erNMY*9Vu(sTW^1fo#7GK zk7MC`un)g?y5JE0;dH|Zyy2uJH{K8U!Wn{itr&3uF5}h)gj+b>usiaIn}h|$vBow$ z+?dM`K)AZft_NmzR+Mcp)twdN{p1VHGg6C8NJ||mru?uD7nosR%7PY{Q=h{$exr`T zE_|uF^h06d7FcOP=b8XS^HP1|$Ji4swGRVSHOq17Lojc4mf2zSAME5eDgGT@32}TD zUDS%w@HZ4#_I_N(nPwV1p}Ght8^h1skCR6dAga6|3Ytse+K5VsbjE$LHf5VeeI5m+ z@TB_zCSpF`aTg29YbsU*E(^FdelSeAiVD2zeTu)%%V6H~?3bc<(7wdm-WN9gC=sN! z(}|LV1NiF0;RZ_t9T*McQ1X+wMG5v0CQ_n?6G`pb+S?*kt|mJ+*a{J9oQe)n=#_<_ zC!~pcr}7R_X{yln89}IlCmu)AeP+cc0rH21>fhQP;?b|)X#VV(=);$c{=X6twh+tZl zHPGw?F~G~d46aw-;ZvQrf-LZp3+?S%knSNONJ|Q%R(+)e12xWplijj$9P&>!)$LWW yyuRl)H?yU6FWHHc5X5c$M{7q$$;q(@WB7aKXXz?+ss`DwIA0UNk@gf~d+s%%Mfwi_ diff --git a/lib/loader/tests/index.js b/lib/loader/tests/index.js index c45ab474c0..fddf10d8d4 100644 --- a/lib/loader/tests/index.js +++ b/lib/loader/tests/index.js @@ -55,11 +55,57 @@ assert.strictEqual(module.__getString(module.COLOR), "red"); try { module.__release(ref); assert(false); } catch (e) {}; } +/* +{ + let arrU8Arr = new Uint8Array([0, 1, 2]); + let refU8Arr = module.__retain(module.__allocUint8Array(arrU8Arr)); + assert(module.__instanceof(refU8Arr, module.UINT8ARRAY_ID)); + assert.deepEqual(module.__getUint8Array(refU8Arr), arrU8Arr); + module.__release(refU8Arr); + try { module.__release(refU8Arr); assert(false); } catch (e) {}; + + let arrU16Arr = new Uint16Array([0, 0x7FFF, 0xFFFF]); + let refU16Arr = module.__retain(module.__allocUint16Array(arrU16Arr)); + assert(module.__instanceof(refU16Arr, module.UINT16ARRAY_ID)); + assert.deepEqual(module.__getUint16Array(refU16Arr), arrU16Arr); + module.__release(refU16Arr); + try { module.__release(refU16Arr); assert(false); } catch (e) {}; + + let arrI16Arr = new Int16Array([0, -1, -2]); + let refI16Arr = module.__retain(module.__allocInt16Array(arrI16Arr)); + assert(module.__instanceof(refI16Arr, module.INT16ARRAY_ID)); + assert.deepEqual(module.__getInt16Array(refI16Arr), arrI16Arr); + module.__release(refI16Arr); + try { module.__release(refI16Arr); assert(false); } catch (e) {}; +} +*/ + +// should be able to distinguish between signed and unsigned +{ + let arr = new Uint8Array([0, 255, 127]); + let ref = module.__retain(module.__allocArray(module.UINT8ARRAY_ID, arr)); + assert(module.__instanceof(ref, module.UINT8ARRAY_ID)); + assert.deepEqual(module.__getUint8Array(ref), arr); + module.__release(ref); + try { module.__release(ref); assert(false); } catch (e) {}; +} + +// should be able to distinguish between signed and unsigned +{ + let arr = new Int16Array([0, 0xFFFF, -0x00FF]); + let ref = module.__retain(module.__allocArray(module.INT16ARRAY_ID, arr)); + assert(module.__instanceof(ref, module.INT16ARRAY_ID)); + assert.deepEqual(module.__getInt16Array(ref), arr); + module.__release(ref); + try { module.__release(ref); assert(false); } catch (e) {}; +} + // should be able to distinguish between signed and unsigned { let arr = [1, -1 >>> 0, 0x80000000]; let ref = module.__retain(module.__allocArray(module.UINT32ARRAY_ID, arr)); assert(module.__instanceof(ref, module.UINT32ARRAY_ID)); + assert.deepEqual(module.__getUint32Array(ref), new Uint32Array(arr)); assert.deepEqual(module.__getArray(ref), arr); module.__release(ref); try { module.__release(ref); assert(false); } catch (e) {}; @@ -70,6 +116,7 @@ assert.strictEqual(module.__getString(module.COLOR), "red"); let arr = [0.0, 1.5, 2.5]; let ref = module.__retain(module.__allocArray(module.FLOAT32ARRAY_ID, arr)); assert(module.__instanceof(ref, module.FLOAT32ARRAY_ID)); + assert.deepEqual(module.__getFloat32Array(ref), new Float32Array(arr)); assert.deepEqual(module.__getArray(ref), arr); module.__release(ref); try { module.__release(ref); assert(false); } catch (e) {}; From bc488987a0ff7975cff70b1034ef2d7fbbd63445 Mon Sep 17 00:00:00 2001 From: Daniel Wirtz Date: Tue, 3 Sep 2019 01:21:35 +0200 Subject: [PATCH 11/24] Update loader with what we've learned (#810) --- lib/loader/README.md | 127 ++++++++------------------- lib/loader/index.d.ts | 72 +++++++-------- lib/loader/index.js | 178 +++++++++++++++++--------------------- lib/loader/tests/index.js | 11 --- 4 files changed, 151 insertions(+), 237 deletions(-) diff --git a/lib/loader/README.md b/lib/loader/README.md index 141256ddc4..130c6b090a 100644 --- a/lib/loader/README.md +++ b/lib/loader/README.md @@ -30,76 +30,6 @@ API Besides demangling classes exported from your entry file to a handy object structure one can use like JS objects, instances are automatically populated with useful utility: -* **I8**: `Int8Array`
- An 8-bit signed integer view on the memory. - - ```ts - var value = module.I8[ptr]; - ``` - -* **U8**: `Uint8Array`
- An 8-bit unsigned integer view on the memory. - - ```ts - var value = module.U8[ptr]; - ``` - -* **I16**: `Int16Array`
- A 16-bit signed integer view on the memory. - - ```ts - var value = module.I16[ptr >>> 1]; - ``` - -* **U16**: `Uint16Array`
- A 16-bit unsigned integer view on the memory. - - ```ts - var value = module.U16[ptr >>> 1]; - ``` - -* **I32**: `Int32Array`
- A 32-bit signed integer view on the memory. - - ```ts - var value = module.I32[ptr >>> 2]; - ``` - -* **U32**: `Uint32Array`
- A 32-bit unsigned integer view on the memory. - - ```ts - var value = module.U32[ptr >>> 2]; - ``` - -* **I64**: `BigInt64Array`
- A 64-bit signed integer view on the memory, if supported by the VM. - - ```ts - var value = module.I64[ptr >>> 3]; - ``` - -* **U64**: `BigUint64Array`
- A 64-bit unsigned integer view on the memory, if supported by the VM. - - ```ts - var value = module.U64[ptr >>> 3]; - ``` - -* **F32**: `Float32Array`
- A 32-bit float view on the memory. - - ```ts - var value = module.I32[ptr >>> 2]; - ``` - -* **F64**: `Float64Array`
- A 64-bit float view on the memory. - - ```ts - var value = module.F64[ptr >>> 3]; - ``` - * **__start**(): `void`
Explicit start function if the `--explicitStart` option is used. Must be called before any other exports if present. @@ -107,16 +37,16 @@ Besides demangling classes exported from your entry file to a handy object struc Allocates a new string in the module's memory and returns a reference (pointer) to it. ```ts - var ref = module.__retain(module.__allocString("hello world")); + var ptr = module.__retain(module.__allocString("hello world")); ... - module.__release(ref); + module.__release(ptr); ``` -* **__getString**(ref: `number`): `string`
+* **__getString**(ptr: `number`): `string`
Reads (copies) the value of a string from the module's memory. ```ts - var str = module.__getString(ref); + var str = module.__getString(ptr); ... ``` @@ -125,44 +55,63 @@ Besides demangling classes exported from your entry file to a handy object struc Automatically retains interior pointers. The `id` is the unique runtime id of the respective array class. If you are using `Int32Array` for example, the best way to know the id is an `export const INT32ARRAY_ID = idof()`. When done with the array, make sure to release it. ```ts - var ref = module.__retain(module.__allocArray(module.INT32ARRAY, [1, 2, 3])); + var ptr = module.__retain(module.__allocArray(module.INT32ARRAY, [1, 2, 3])); ... - module.__release(ref); + module.__release(ptr); ``` -* **__getArray**(ref: `number`): `number[]`
+* **__getArray**(ptr: `number`): `number[]`
Reads (copies) the values of an array from the module's memory. ```ts - var arr = module.__getArray(ref); + var arr = module.__getArray(ptr); ... ``` -* **__getArrayView**(ref: `number`): `TypedArray`
+* **__getArrayView**(ptr: `number`): `TypedArray`
Gets a view on the values of an array in the module's memory. This differs from `__getArray` in that the data isn't copied but remains *live* in both directions. That's faster but also unsafe because if the array grows or becomes released, the view will no longer represent the correct memory region and modifying its values in this state will most likely corrupt memory. Use, but use with care. -* **__retain**(ref: `number`): `number`
- Retains a reference externally, making sure that it doesn't become collected prematurely. Returns the reference. + If the type of the array is known beforehand, the following even faster and even more unsafe helpers can be used that don't do any type checking: + + **__getInt8Array**(ptr: `number`): `Int8Array`
+ **__getUint8Array**(ptr: `number`): `Uint8Array`
+ **__getUint8ClampedArray**(ptr: `number`): `Uint8ClampedArray`
+ **__getInt16Array**(ptr: `number`): `Int16Array`
+ **__getUint16Array**(ptr: `number`): `Uint16Array`
+ **__getInt32Array**(ptr: `number`): `Int32Array`
+ **__getUint32Array**(ptr: `number`): `Uint32Array`
+ **__getInt64Array**(ptr: `number`): `BigInt64Array`
+ **__getUint64Array**(ptr: `number`): `BigUint64Array`
+ **__getFloat32Array**(ptr: `number`): `Float32Array`
+ **__getFloat64Array**(ptr: `number`): `Float64Array` + +* **__getArrayBuffer**(ptr: `number`): `ArrayBuffer`
+ Reads (copies) the data of an ArrayBuffer from the module's memory. + +* **__retain**(ptr: `number`): `number`
+ Retains a reference to a managed object externally, making sure that it doesn't become collected prematurely. Returns the pointer. -* **__release**(ref: `number`): `void`
- Releases a previously retained reference to an object, allowing the runtime to collect it once its reference count reaches zero. +* **__release**(ptr: `number`): `void`
+ Releases a previously retained reference to a managed object, allowing the runtime to collect it once its reference count reaches zero. * **__alloc**(size: `number`, id: `number`): `number`
Allocates an instance of the class represented by the specified id. If you are using `MyClass` for example, the best way to know the id and the necessary size is an `export const MYCLASS_ID = idof()` and an `export const MYCLASS_SIZE = offsetof()`. Afterwards, use the respective views to assign values to the class's memory while making sure to retain interior references to other managed objects once. When done with the class, make sure to release it, which will automatically release any interior references once the class becomes collected. ```ts - var ref = module.__retain(module.__alloc(module.MYCLASS_SIZE, module.MYCLASS_ID)); - F32[ref + MYCLASS_BASICFIELD1_OFFSET >>> 2] = field1_value_f32; - U32[ref + MYCLASS_MANAGEDFIELD2_OFFSET >>> 2] = module.__retain(field2_value_ref); + var ptr = module.__retain(module.__alloc(module.MYCLASS_SIZE, module.MYCLASS_ID)); + const F32 = new Float32Array(module.memory.buffer); + F32[ptr + MYCLASS_BASICFIELD1_OFFSET >>> 2] = field1_value_f32; + const U32 = new Uint32Array(module.memory.buffer); + U32[ptr + MYCLASS_MANAGEDFIELD2_OFFSET >>> 2] = module.__retain(field2_value_ptr); ... - module.__release(ref); + module.__release(ptr); ``` -* **__instanceof**(ref: `number`, baseId: `number`): `boolean`
+* **__instanceof**(ptr: `number`, baseId: `number`): `boolean`
Tests whether an object is an instance of the class represented by the specified base id. ```ts - if (module.__instanceof(ref, module.MYCLASS_ID)) { + if (module.__instanceof(ptr, module.MYCLASS_ID)) { ... } ``` diff --git a/lib/loader/index.d.ts b/lib/loader/index.d.ts index 0ce0221a0a..0c622913be 100644 --- a/lib/loader/index.d.ts +++ b/lib/loader/index.d.ts @@ -1,3 +1,5 @@ +/// + import "@types/webassembly-js-api"; /** WebAssembly imports with two levels of nesting. */ @@ -19,66 +21,56 @@ type TypedArray | Int32Array | Uint32Array | Float32Array - | Float64Array; + | Float64Array + | BigInt64Array + | BigUint64Array; /** Utility mixed in by the loader. */ interface ASUtil { - /** An 8-bit signed integer view on the memory. */ - readonly I8: Uint8Array; - /** An 8-bit unsigned integer view on the memory. */ - readonly U8: Uint8Array; - /** A 16-bit signed integer view on the memory. */ - readonly I16: Uint16Array; - /** A 16-bit unsigned integer view on the memory. */ - readonly U16: Uint16Array; - /** A 32-bit signed integer view on the memory. */ - readonly I32: Uint32Array; - /** A 32-bit unsigned integer view on the memory. */ - readonly U32: Uint32Array; - /** A 64-bit signed integer view on the memory. */ - readonly I64: any; // BigInt64Array - /** A 64-bit unsigned integer vieww on the memory. */ - readonly U64: any; // BigUint64Array - /** A 32-bit float view on the memory. */ - readonly F32: Float32Array; - /** A 64-bit float view on the memory. */ - readonly F64: Float64Array; /** Explicit start function, if requested. */ __start(): void; /** Allocates a new string in the module's memory and returns a reference (pointer) to it. */ __allocString(str: string): number; /** Reads (copies) the value of a string from the module's memory. */ - __getString(ref: number): string; + __getString(ptr: number): string; /** Allocates a new array in the module's memory and returns a reference (pointer) to it. */ __allocArray(id: number, values: number[]): number; /** Reads (copies) the values of an array from the module's memory. */ - __getArray(ref: number): number[]; + __getArray(ptr: number): number[]; /** Gets a view on the values of an array in the module's memory. */ - __getArrayView(ref: number): TypedArray; - /** Reads (copies) the values of Uint8Array from the module's memory. */ - __getUint8Array(ref: number): Uint8Array; + __getArrayView(ptr: number): TypedArray; /** Reads (copies) the values of Int8Array from the module's memory. */ - __getInt8Array(ref: number): Int8Array; - /** Reads (copies) the values of Uint16Array from the module's memory. */ - __getUint16Array(ref: number): Uint16Array; + __getInt8Array(ptr: number): Int8Array; + /** Reads (copies) the values of Uint8Array from the module's memory. */ + __getUint8Array(ptr: number): Uint8Array; + /** Reads (copies) the values of Uint8Array from the module's memory. */ + __getUint8ClampedArray(ptr: number): Uint8ClampedArray; /** Reads (copies) the values of Int16Array from the module's memory. */ - __getInt16Array(ref: number): Int16Array; + __getInt16Array(ptr: number): Int16Array; + /** Reads (copies) the values of Uint16Array from the module's memory. */ + __getUint16Array(ptr: number): Uint16Array; + /** Reads (copies) the values of Int32Array from the module's memory. */ + __getInt32Array(ptr: number): Int32Array; /** Reads (copies) the values of Uint32Array from the module's memory. */ - __getUint32Array(ref: number): Uint32Array; + __getUint32Array(ptr: number): Uint32Array; /** Reads (copies) the values of Int32Array from the module's memory. */ - __getInt32Array(ref: number): Int32Array; + __getInt64Array(ptr: number): BigInt32Array; + /** Reads (copies) the values of Uint32Array from the module's memory. */ + __getUint64Array(ptr: number): BigUint32Array; /** Reads (copies) the values of Float32Array from the module's memory. */ - __getFloat32Array(ref: number): Float32Array; + __getFloat32Array(ptr: number): Float32Array; /** Reads (copies) the values of Float64Array from the module's memory. */ - __getFloat64Array(ref: number): Float64Array; - /** Retains a reference externally, making sure that it doesn't become collected prematurely. Returns the reference. */ - __retain(ref: number): number; - /** Releases a previously retained reference to an object, allowing the runtime to collect it once its reference count reaches zero. */ - __release(ref: number): void; + __getFloat64Array(ptr: number): Float64Array; + /** Reads (copies) the data of an ArrayBuffer from the module's memory. */ + __getArrayBuffer(ptr: number): ArrayBuffer; + /** Retains a reference to a managed object externally, making sure that it doesn't become collected prematurely. Returns the pointer. */ + __retain(ptr: number): number; + /** Releases a previously retained reference to a managed object, allowing the runtime to collect it once its reference count reaches zero. */ + __release(ptr: number): void; /** Allocates an instance of the class represented by the specified id. */ __alloc(size: number, id: number): number; - /** Tests whether an object is an instance of the class represented by the specified base id. */ - __instanceof(ref: number, baseId: number): boolean; + /** Tests whether a managed object is an instance of the class represented by the specified base id. */ + __instanceof(ptr: number, baseId: number): boolean; /** Forces a cycle collection. Only relevant if objects potentially forming reference cycles are used. */ __collect(): void; } diff --git a/lib/loader/index.js b/lib/loader/index.js index 2a759abd21..434fb5fed1 100644 --- a/lib/loader/index.js +++ b/lib/loader/index.js @@ -14,18 +14,18 @@ const ARRAYBUFFERVIEW = 1 << 0; const ARRAY = 1 << 1; const SET = 1 << 2; const MAP = 1 << 3; -const VAL_ALIGN = 1 << 5; +const VAL_ALIGN_OFFSET = 5; +const VAL_ALIGN = 1 << VAL_ALIGN_OFFSET; const VAL_SIGNED = 1 << 10; const VAL_FLOAT = 1 << 11; const VAL_NULLABLE = 1 << 12; const VAL_MANAGED = 1 << 13; -const KEY_ALIGN = 1 << 14; +const KEY_ALIGN_OFFSET = 14; +const KEY_ALIGN = 1 << KEY_ALIGN_OFFSET; const KEY_SIGNED = 1 << 19; const KEY_FLOAT = 1 << 20; const KEY_NULLABLE = 1 << 21; const KEY_MANAGED = 1 << 22; -const KEY_ALIGN_OFFSET = 14; -const VAL_ALIGN_OFFSET = 5; // Array(BufferView) layout const ARRAYBUFFERVIEW_BUFFER_OFFSET = 0; @@ -40,9 +40,11 @@ const THIS = Symbol(); const CHUNKSIZE = 1024; /** Gets a string from an U32 and an U16 view on a memory. */ -function getStringImpl(U32, U16, ref) { - var length = U32[(ref + SIZE_OFFSET) >>> 2] >>> 1; - var offset = ref >>> 1; +function getStringImpl(buffer, ptr) { + const U32 = new Uint32Array(buffer); + const U16 = new Uint16Array(buffer); + var length = U32[(ptr + SIZE_OFFSET) >>> 2] >>> 1; + var offset = ptr >>> 1; if (length <= CHUNKSIZE) return String.fromCharCode.apply(String, U16.subarray(offset, offset + length)); const parts = []; do { @@ -58,10 +60,9 @@ function getStringImpl(U32, U16, ref) { function preInstantiate(imports) { const baseModule = {}; - function getString(memory, ref) { + function getString(memory, ptr) { if (!memory) return ""; - const buffer = memory.buffer; - return getStringImpl(new Uint32Array(buffer), new Uint16Array(buffer), ref); + return getStringImpl(memory.buffer, ptr); } // add common imports used by stdlib for convenience @@ -89,33 +90,9 @@ function postInstantiate(baseModule, instance) { const retain = rawExports["__retain"]; const rttiBase = rawExports["__rtti_base"] || ~0; // oob if not present - // Provide views for all sorts of basic values - var buffer, I8, U8, I16, U16, I32, U32, F32, F64, I64, U64; - - /** Updates memory views if memory has grown meanwhile. */ - function checkMem() { - // see: https://github.com/WebAssembly/design/issues/1210 - if (buffer !== memory.buffer) { - buffer = memory.buffer; - I8 = new Int8Array(buffer); - U8 = new Uint8Array(buffer); - I16 = new Int16Array(buffer); - U16 = new Uint16Array(buffer); - I32 = new Int32Array(buffer); - U32 = new Uint32Array(buffer); - if (BIGINT) { - I64 = new BigInt64Array(buffer); - U64 = new BigUint64Array(buffer); - } - F32 = new Float32Array(buffer); - F64 = new Float64Array(buffer); - } - } - - checkMem(); - /** Gets the runtime type info for the given id. */ function getInfo(id) { + const U32 = new Uint32Array(memory.buffer); const count = U32[rttiBase >>> 2]; if ((id >>>= 0) >= count) throw Error("invalid id: " + id); return U32[(rttiBase + 4 >>> 2) + id * 2]; @@ -123,79 +100,71 @@ function postInstantiate(baseModule, instance) { /** Gets the runtime base id for the given id. */ function getBase(id) { + const U32 = new Uint32Array(memory.buffer); const count = U32[rttiBase >>> 2]; if ((id >>>= 0) >= count) throw Error("invalid id: " + id); return U32[(rttiBase + 4 >>> 2) + id * 2 + 1]; } /** Gets the runtime alignment of a collection's values. */ - function getAlignValue(info) { + function getValueAlign(info) { return 31 - Math.clz32((info >>> VAL_ALIGN_OFFSET) & 31); // -1 if none } /** Gets the runtime alignment of a collection's keys. */ - function getAlignKey(info) { + function getKeyAlign(info) { return 31 - Math.clz32((info >>> KEY_ALIGN_OFFSET) & 31); // -1 if none } - function getTypedArray(Type, shift, arr) { - var buffer = memory.buffer; - var u32 = new Uint32Array(buffer); - var buf = u32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2]; - var length = u32[buf + SIZE_OFFSET >>> 2]; - return new Type(buffer).slice(buf >>> shift, buf + length >>> shift); - } - /** Allocates a new string in the module's memory and returns its retained pointer. */ function __allocString(str) { - var length = str.length; - var ref = alloc(length << 1, STRING_ID); - var u16 = new Uint16Array(memory.buffer); - for (var i = 0, p = ref >>> 1; i < length; ++i) u16[p + i] = str.charCodeAt(i); - return ref; + const length = str.length; + const ptr = alloc(length << 1, STRING_ID); + const U16 = new Uint16Array(memory.buffer); + for (var i = 0, p = ptr >>> 1; i < length; ++i) U16[p + i] = str.charCodeAt(i); + return ptr; } baseModule.__allocString = __allocString; /** Reads a string from the module's memory by its pointer. */ - function __getString(ref) { - var buf = memory.buffer; - var u16 = new Uint16Array(buf); - var u32 = new Uint32Array(buf); - var id = u32[ref + ID_OFFSET >>> 2]; - if (id !== STRING_ID) throw Error("not a string: " + ref); - return getStringImpl(u32, u16, ref); + function __getString(ptr) { + const buffer = memory.buffer; + const id = new Uint32Array(buffer)[ptr + ID_OFFSET >>> 2]; + if (id !== STRING_ID) throw Error("not a string: " + ptr); + return getStringImpl(buffer, ptr); } baseModule.__getString = __getString; /** Gets the view matching the specified alignment, signedness and floatness. */ - function getView(align, signed, float) { + function getView(alignLog2, signed, float) { + const buffer = memory.buffer; if (float) { - switch (align) { - case 2: return F32; - case 3: return F64; + switch (alignLog2) { + case 2: return new Float32Array(buffer); + case 3: return new Float64Array(buffer); } } else { - switch (align) { - case 0: return signed ? I8 : U8; - case 1: return signed ? I16 : U16; - case 2: return signed ? I32 : U32; - case 3: return signed ? I64 : U64; + switch (alignLog2) { + case 0: return new (signed ? Int8Array : Uint8Array)(buffer); + case 1: return new (signed ? Int16Array : Uint16Array)(buffer); + case 2: return new (signed ? Int32Array : Uint32Array)(buffer); + case 3: return new (signed ? BigInt64Array : BigUint64Array)(buffer); } } - throw Error("unsupported align: " + align); + throw Error("unsupported align: " + alignLog2); } /** Allocates a new array in the module's memory and returns its retained pointer. */ function __allocArray(id, values) { const info = getInfo(id); if (!(info & (ARRAYBUFFERVIEW | ARRAY))) throw Error("not an array: " + id + " @ " + info); - const align = getAlignValue(info); + const align = getValueAlign(info); const length = values.length; const buf = alloc(length << align, ARRAYBUFFER_ID); const arr = alloc(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); - checkMem(); + const U32 = new Uint32Array(memory.buffer); U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = retain(buf); U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2] = buf; U32[arr + ARRAYBUFFERVIEW_DATALENGTH_OFFSET >>> 2] = length << align; @@ -213,11 +182,11 @@ function postInstantiate(baseModule, instance) { /** Gets a view on the values of an array in the module's memory. */ function __getArrayView(arr) { - checkMem(); + const U32 = new Uint32Array(memory.buffer); const id = U32[arr + ID_OFFSET >>> 2]; const info = getInfo(id); if (!(info & ARRAYBUFFERVIEW)) throw Error("not an array: " + id); - const align = getAlignValue(info); + const align = getValueAlign(info); var buf = U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2]; const length = info & ARRAY ? U32[arr + ARRAY_LENGTH_OFFSET >>> 2] @@ -235,26 +204,52 @@ function postInstantiate(baseModule, instance) { baseModule.__getArray = __getArray; - function __getArrayBuffer(buf) { - var buffer = memory.buffer; - var length = (new Uint32Array(buffer))[buf + SIZE_OFFSET >>> 2]; - return buffer.slice(buf, buf + length); + /** Reads (copies) the data of an ArrayBuffer from the module's memory. */ + function __getArrayBuffer(ptr) { + const buffer = memory.buffer; + const length = new Uint32Array(buffer)[ptr + SIZE_OFFSET >>> 2]; + return buffer.slice(ptr, ptr + length); } baseModule.__getArrayBuffer = __getArrayBuffer; - baseModule.__getUint8Array = getTypedArray.bind(null, Uint8Array, 0); - baseModule.__getInt8Array = getTypedArray.bind(null, Int8Array, 0); - baseModule.__getUint16Array = getTypedArray.bind(null, Uint16Array, 1); - baseModule.__getInt16Array = getTypedArray.bind(null, Int16Array, 1); - baseModule.__getUint32Array = getTypedArray.bind(null, Uint32Array, 2); - baseModule.__getInt32Array = getTypedArray.bind(null, Int32Array, 2); - baseModule.__getFloat32Array = getTypedArray.bind(null, Float32Array, 2); - baseModule.__getFloat64Array = getTypedArray.bind(null, Float64Array, 3); + function getTypedArrayImpl(Type, alignLog2, ptr) { + const buffer = memory.buffer; + const U32 = new Uint32Array(buffer); + const bufPtr = U32[ptr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2]; + const length = U32[bufPtr + SIZE_OFFSET >>> 2]; + return new Type(buffer).slice(bufPtr >>> alignLog2, bufPtr + length >>> alignLog2); + } + + /** Gets a view on the values of a known-to-be Int8Array in the module's memory. */ + baseModule.__getInt8Array = getTypedArrayImpl.bind(null, Int8Array, 0); + /** Gets a view on the values of a known-to-be Uint8Array in the module's memory. */ + baseModule.__getUint8Array = getTypedArrayImpl.bind(null, Uint8Array, 0); + /** Gets a view on the values of a known-to-be Uint8ClampedArray in the module's memory. */ + baseModule.__getUint8ClampedArray = getTypedArrayImpl.bind(null, Uint8ClampedArray, 0); + /** Gets a view on the values of a known-to-be Int16Array in the module's memory. */ + baseModule.__getInt16Array = getTypedArrayImpl.bind(null, Int16Array, 1); + /** Gets a view on the values of a known-to-be Uint16Array in the module's memory. */ + baseModule.__getUint16Array = getTypedArrayImpl.bind(null, Uint16Array, 1); + /** Gets a view on the values of a known-to-be Int32Array in the module's memory. */ + baseModule.__getInt32Array = getTypedArrayImpl.bind(null, Int32Array, 2); + /** Gets a view on the values of a known-to-be Uint32Array in the module's memory. */ + baseModule.__getUint32Array = getTypedArrayImpl.bind(null, Uint32Array, 2); + if (BIGINT) { + /** Gets a view on the values of a known-to-be-Int64Array in the module's memory. */ + baseModule.__getInt64Array = getTypedArrayImpl.bind(null, BigInt64Array, 3); + /** Gets a view on the values of a known-to-be-Uint64Array in the module's memory. */ + baseModule.__getUint64Array = getTypedArrayImpl.bind(null, BigUint64Array, 3); + } + /** Gets a view on the values of a known-to-be Float32Array in the module's memory. */ + baseModule.__getFloat32Array = getTypedArrayImpl.bind(null, Float32Array, 2); + /** Gets a view on the values of a known-to-be Float64Array in the module's memory. */ + baseModule.__getFloat64Array = getTypedArrayImpl.bind(null, Float64Array, 3); /** Tests whether an object is an instance of the class represented by the specified base id. */ - function __instanceof(ref, baseId) { - var id = U32[(ref + ID_OFFSET) >>> 2]; + function __instanceof(ptr, baseId) { + const U32 = new Uint32Array(memory.buffer); + var id = U32[(ptr + ID_OFFSET) >>> 2]; if (id <= U32[rttiBase >>> 2]) { do if (id == baseId) return true; while (id = getBase(id)); @@ -269,18 +264,7 @@ function postInstantiate(baseModule, instance) { baseModule.table = baseModule.table || table; // Demangle exports and provide the usual utility on the prototype - return demangle(rawExports, Object.defineProperties(baseModule, { - I8: { get: function() { checkMem(); return I8; } }, - U8: { get: function() { checkMem(); return U8; } }, - I16: { get: function() { checkMem(); return I16; } }, - U16: { get: function() { checkMem(); return U16; } }, - I32: { get: function() { checkMem(); return I32; } }, - U32: { get: function() { checkMem(); return U32; } }, - I64: { get: function() { checkMem(); return I64; } }, - U64: { get: function() { checkMem(); return U64; } }, - F32: { get: function() { checkMem(); return F32; } }, - F64: { get: function() { checkMem(); return F64; } } - })); + return demangle(rawExports, baseModule); } /** Wraps a WebAssembly function while also taking care of variable arguments. */ diff --git a/lib/loader/tests/index.js b/lib/loader/tests/index.js index fddf10d8d4..f61875e042 100644 --- a/lib/loader/tests/index.js +++ b/lib/loader/tests/index.js @@ -8,17 +8,6 @@ var module = loader.instantiateBuffer(buffer, {}); console.log(inspect(module, true, 100, true)); -// should inherit the usual utility -var proto = Object.getPrototypeOf(module); -assert(proto.I8 instanceof Int8Array); -assert(proto.U8 instanceof Uint8Array); -assert(proto.I16 instanceof Int16Array); -assert(proto.U16 instanceof Uint16Array); -assert(proto.I32 instanceof Int32Array); -assert(proto.U32 instanceof Uint32Array); -assert(proto.F32 instanceof Float32Array); -assert(proto.F64 instanceof Float64Array); - // should export memory assert(module.memory instanceof WebAssembly.Memory); assert(typeof module.memory.copy === "function"); From 2672042a5be0bcf5f3bbdf44ce0297e3275b94ef Mon Sep 17 00:00:00 2001 From: Max Graey Date: Wed, 4 Sep 2019 20:54:23 +0300 Subject: [PATCH 12/24] Speedup loader's __getArray (#814) --- lib/loader/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/loader/index.js b/lib/loader/index.js index 434fb5fed1..6a51c1291b 100644 --- a/lib/loader/index.js +++ b/lib/loader/index.js @@ -199,7 +199,11 @@ function postInstantiate(baseModule, instance) { /** Reads (copies) the values of an array from the module's memory. */ function __getArray(arr) { - return Array.from(__getArrayView(arr)); + const input = __getArrayView(arr); + const len = input.length; + const out = new Array(len); + for (let i = 0; i < len; i++) out[i] = input[i]; + return out; } baseModule.__getArray = __getArray; From 97d54622440c3731db7a881a02837c3537b193fe Mon Sep 17 00:00:00 2001 From: Max Graey Date: Wed, 4 Sep 2019 21:12:20 +0300 Subject: [PATCH 13/24] Implement TypedArray#slice (#792) --- std/assembly/index.d.ts | 10 +- std/assembly/typedarray.ts | 102 +- tests/compiler/std/dataview.optimized.wat | 2 +- tests/compiler/std/dataview.untouched.wat | 2 +- tests/compiler/std/typedarray.optimized.wat | 2040 +++++++++------- tests/compiler/std/typedarray.ts | 57 +- tests/compiler/std/typedarray.untouched.wat | 2382 +++++++++++-------- 7 files changed, 2694 insertions(+), 1901 deletions(-) diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 36384badb3..ef8145217e 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1137,16 +1137,18 @@ declare abstract class TypedArray implements ArrayBufferView { indexOf(searchElement: T, fromIndex?: i32): i32; /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */ lastIndexOf(searchElement: T, fromIndex?: i32): i32; + /** Returns copied section of an TypedArray from begin inclusive to end exclusive */ + slice(begin?: i32, end?: i32): TypedArray; /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */ - subarray(begin?: i32, end?: i32): this; + subarray(begin?: i32, end?: i32): TypedArray; /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */ - reduce(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W; + reduce(callbackfn: (accumulator: U, value: T, index: i32, self: this) => U, initialValue: U): U; /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */ - reduceRight(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W; + reduceRight(callbackfn: (accumulator: U, value: T, index: i32, self: this) => U, initialValue: U): U; /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/ some(callbackfn: (value: T, index: i32, self: this) => bool): bool; /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/ - map(callbackfn: (value: T, index: i32, self: this) => T): this; + map(callbackfn: (value: T, index: i32, self: this) => T): TypedArray; /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */ sort(callback?: (a: T, b: T) => i32): this; /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */ diff --git a/std/assembly/typedarray.ts b/std/assembly/typedarray.ts index 5f85e7e56b..62fc8aeef6 100644 --- a/std/assembly/typedarray.ts +++ b/std/assembly/typedarray.ts @@ -64,7 +64,11 @@ export class Int8Array extends ArrayBufferView { return SORT(this, comparator); } - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int8Array { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array { + return SLICE(this, begin, end); + } + + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array { return SUBARRAY(this, begin, end); } @@ -172,7 +176,11 @@ export class Uint8Array extends ArrayBufferView { return SORT(this, comparator); } - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8Array { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array { + return SLICE(this, begin, end); + } + + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array { return SUBARRAY(this, begin, end); } @@ -280,7 +288,11 @@ export class Uint8ClampedArray extends ArrayBufferView { return SORT(this, fn); } - subarray(start: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray { + return SLICE(this, begin, end); + } + + subarray(start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray { return SUBARRAY(this, start, end); } @@ -388,7 +400,11 @@ export class Int16Array extends ArrayBufferView { return SORT(this, comparator); } - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int16Array { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array { + return SLICE(this, begin, end); + } + + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array { return SUBARRAY(this, begin, end); } @@ -496,7 +512,11 @@ export class Uint16Array extends ArrayBufferView { return SORT(this, comparator); } - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint16Array { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array { + return SLICE(this, begin, end); + } + + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array { return SUBARRAY(this, begin, end); } @@ -604,7 +624,11 @@ export class Int32Array extends ArrayBufferView { return SORT(this, comparator); } - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int32Array { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array { + return SLICE(this, begin, end); + } + + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array { return SUBARRAY(this, begin, end); } @@ -712,7 +736,11 @@ export class Uint32Array extends ArrayBufferView { return SORT(this, comparator); } - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint32Array { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array { + return SLICE(this, begin, end); + } + + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array { return SUBARRAY(this, begin, end); } @@ -820,7 +848,11 @@ export class Int64Array extends ArrayBufferView { return SORT(this, comparator); } - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int64Array { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array { + return SLICE(this, begin, end); + } + + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array { return SUBARRAY(this, begin, end); } @@ -928,7 +960,11 @@ export class Uint64Array extends ArrayBufferView { return SORT(this, comparator); } - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint64Array { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array { + return SLICE(this, begin, end); + } + + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array { return SUBARRAY(this, begin, end); } @@ -1036,7 +1072,11 @@ export class Float32Array extends ArrayBufferView { return SORT(this, comparator); } - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float32Array { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array { + return SLICE(this, begin, end); + } + + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array { return SUBARRAY(this, begin, end); } @@ -1144,7 +1184,11 @@ export class Float64Array extends ArrayBufferView { return SORT(this, comparator); } - subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float64Array { + slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array { + return SLICE(this, begin, end); + } + + subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array { return SUBARRAY(this, begin, end); } @@ -1200,9 +1244,9 @@ function FILL( end: i32 ): TArray { var dataStart = array.dataStart; - var length = array.length; - start = start < 0 ? max(length + start, 0) : min(start, length); - end = end < 0 ? max(length + end, 0) : min(end, length); + var len = array.length; + start = start < 0 ? max(len + start, 0) : min(start, len); + end = end < 0 ? max(len + end, 0) : min(end, len); if (sizeof() == 1) { if (start < end) memory.fill(dataStart + start, value, (end - start)); } else { @@ -1219,10 +1263,10 @@ function SORT( array: TArray, comparator: (a: T, b: T) => i32 ): TArray { - var length = array.length; - if (length <= 1) return array; + var len = array.length; + if (len <= 1) return array; var base = array.dataStart; - if (length == 2) { + if (len == 2) { let a: T = load(base, sizeof()); // a = arr[1] let b: T = load(base); // b = arr[0] if (comparator(a, b) < 0) { @@ -1231,10 +1275,30 @@ function SORT( } return array; } - SORT_IMPL(base, length, comparator); + SORT_IMPL(base, len, comparator); return array; } +// @ts-ignore: decorator +@inline +function SLICE( + array: TArray, + start: i32, + end: i32 +): TArray { + var len = array.length; + start = start < 0 ? max(start + len, 0) : min(start, len); + end = end < 0 ? max(end + len, 0) : min(end , len); + len = max(end - start, 0); + var slice = instantiate(len); + memory.copy( + slice.dataStart, + array.dataStart + (start << alignof()), + len << alignof() + ); + return slice; +} + // @ts-ignore: decorator @inline function SUBARRAY( @@ -1242,7 +1306,7 @@ function SUBARRAY( begin: i32, end: i32 ): TArray { - var len = array.length; + var len = array.length; begin = begin < 0 ? max(len + begin, 0) : min(begin, len); end = end < 0 ? max(len + end, 0) : min(end, len); end = max(end, begin); diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index f8663f9c5d..28fe008463 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1634,7 +1634,7 @@ if i32.const 280 i32.const 376 - i32.const 146 + i32.const 150 i32.const 44 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 87d114e3b8..5747a2449b 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -3327,7 +3327,7 @@ if i32.const 280 i32.const 376 - i32.const 146 + i32.const 150 i32.const 44 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index d6ec0ebf01..48495b06dd 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -2455,7 +2455,7 @@ if i32.const 280 i32.const 432 - i32.const 578 + i32.const 598 i32.const 63 call $~lib/builtins/abort unreachable @@ -2479,7 +2479,7 @@ if i32.const 280 i32.const 432 - i32.const 567 + i32.const 587 i32.const 63 call $~lib/builtins/abort unreachable @@ -2602,7 +2602,7 @@ if i32.const 280 i32.const 432 - i32.const 1118 + i32.const 1158 i32.const 63 call $~lib/builtins/abort unreachable @@ -3166,7 +3166,7 @@ if i32.const 280 i32.const 432 - i32.const 1107 + i32.const 1147 i32.const 63 call $~lib/builtins/abort unreachable @@ -3187,7 +3187,7 @@ if i32.const 280 i32.const 432 - i32.const 254 + i32.const 262 i32.const 44 call $~lib/builtins/abort unreachable @@ -3219,7 +3219,7 @@ if i32.const 280 i32.const 432 - i32.const 243 + i32.const 251 i32.const 44 call $~lib/builtins/abort unreachable @@ -3693,7 +3693,88 @@ call $~lib/rt/pure/__release i32.const 0 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 65 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int32Array#slice (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $4 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $0 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $0 + i32.sub + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/rt/pure/__retain drop @@ -3703,7 +3784,7 @@ local.get $1 i32.add ) - (func $~lib/typedarray/Int8Array#reduce (; 66 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3745,7 +3826,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 67 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 68 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -3773,7 +3854,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -3783,7 +3864,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#__set (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 69 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3791,7 +3872,7 @@ if i32.const 280 i32.const 432 - i32.const 146 + i32.const 150 i32.const 44 call $~lib/builtins/abort unreachable @@ -3803,7 +3884,7 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Uint8Array#reduce (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3846,7 +3927,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 70 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 71 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -3875,7 +3956,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -3885,7 +3966,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 71 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 72 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -3914,7 +3995,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -3924,7 +4005,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#__set (; 72 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 73 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3934,7 +4015,7 @@ if i32.const 280 i32.const 432 - i32.const 362 + i32.const 374 i32.const 63 call $~lib/builtins/abort unreachable @@ -3948,7 +4029,7 @@ local.get $2 i32.store16 ) - (func $~lib/typedarray/Int16Array#reduce (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3992,7 +4073,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 74 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 75 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4020,7 +4101,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -4030,7 +4111,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#__set (; 75 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4040,7 +4121,7 @@ if i32.const 280 i32.const 432 - i32.const 470 + i32.const 486 i32.const 63 call $~lib/builtins/abort unreachable @@ -4054,7 +4135,7 @@ local.get $2 i32.store16 ) - (func $~lib/typedarray/Uint16Array#reduce (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4098,7 +4179,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 77 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 78 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4126,7 +4207,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -4136,7 +4217,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reduce (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4181,7 +4262,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 79 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 80 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4208,7 +4289,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -4218,7 +4299,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#__set (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4228,7 +4309,7 @@ if i32.const 280 i32.const 432 - i32.const 686 + i32.const 710 i32.const 63 call $~lib/builtins/abort unreachable @@ -4242,7 +4323,7 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 81 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 82 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4269,7 +4350,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -4279,7 +4360,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#__set (; 82 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 83 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -4289,7 +4370,7 @@ if i32.const 280 i32.const 432 - i32.const 794 + i32.const 822 i32.const 63 call $~lib/builtins/abort unreachable @@ -4303,7 +4384,7 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 83 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 84 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $3 call $~lib/rt/pure/__retain drop @@ -4313,7 +4394,7 @@ local.get $1 i64.add ) - (func $~lib/typedarray/Int64Array#reduce (; 84 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 85 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -4358,7 +4439,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 85 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 86 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4385,7 +4466,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -4395,7 +4476,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#__set (; 86 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 87 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -4405,7 +4486,7 @@ if i32.const 280 i32.const 432 - i32.const 902 + i32.const 934 i32.const 63 call $~lib/builtins/abort unreachable @@ -4419,7 +4500,7 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 87 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 88 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4446,7 +4527,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -4456,7 +4537,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#__set (; 88 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 89 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -4466,7 +4547,7 @@ if i32.const 280 i32.const 432 - i32.const 1010 + i32.const 1046 i32.const 63 call $~lib/builtins/abort unreachable @@ -4480,7 +4561,7 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 89 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 90 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) local.get $3 call $~lib/rt/pure/__retain drop @@ -4490,7 +4571,7 @@ local.get $1 f32.add ) - (func $~lib/typedarray/Float32Array#reduce (; 90 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 91 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) (local $1 f32) (local $2 i32) (local $3 i32) @@ -4534,7 +4615,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 91 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 92 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4560,7 +4641,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -4570,7 +4651,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 92 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 93 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) local.get $3 call $~lib/rt/pure/__retain drop @@ -4580,7 +4661,7 @@ local.get $1 f64.add ) - (func $~lib/typedarray/Float64Array#reduce (; 93 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 94 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 f64) (local $2 i32) (local $3 i32) @@ -4624,7 +4705,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 94 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 95 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4650,7 +4731,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -4660,7 +4741,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reduceRight (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4701,7 +4782,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 96 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 97 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4729,7 +4810,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -4739,7 +4820,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4781,7 +4862,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 98 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 99 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4810,7 +4891,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -4820,7 +4901,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 99 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 100 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4849,7 +4930,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -4859,7 +4940,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reduceRight (; 100 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4902,7 +4983,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 101 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 102 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4930,7 +5011,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -4940,7 +5021,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4983,7 +5064,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 103 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 104 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5011,7 +5092,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -5021,7 +5102,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reduceRight (; 104 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5065,7 +5146,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 105 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 106 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5092,7 +5173,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -5102,7 +5183,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 106 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 107 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5129,7 +5210,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -5139,7 +5220,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reduceRight (; 107 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 108 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -5183,7 +5264,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 108 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 109 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5210,7 +5291,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -5220,7 +5301,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 109 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 110 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5247,7 +5328,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -5257,7 +5338,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reduceRight (; 110 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 111 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) (local $1 f32) (local $2 i32) (local $3 i32) @@ -5300,7 +5381,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 111 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 112 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5326,7 +5407,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -5336,7 +5417,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reduceRight (; 112 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 113 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 f64) (local $2 i32) (local $3 i32) @@ -5379,7 +5460,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 113 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 114 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5405,7 +5486,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -5415,7 +5496,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 114 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 115 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -5425,7 +5506,7 @@ local.get $0 i32.mul ) - (func $~lib/typedarray/Int8Array#map (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5480,7 +5561,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 116 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 117 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5510,7 +5591,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -5523,7 +5604,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -5536,7 +5617,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -5548,7 +5629,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#map (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5603,7 +5684,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Uint8Array#__get (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5611,7 +5692,7 @@ if i32.const 280 i32.const 432 - i32.const 135 + i32.const 139 i32.const 44 call $~lib/builtins/abort unreachable @@ -5622,7 +5703,7 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 119 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 120 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5652,7 +5733,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -5665,7 +5746,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -5678,7 +5759,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -5690,7 +5771,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 120 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 121 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5745,7 +5826,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 121 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 122 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5775,7 +5856,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -5788,7 +5869,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -5801,7 +5882,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -5813,7 +5894,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#map (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5875,7 +5956,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Int16Array#__get (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5885,7 +5966,7 @@ if i32.const 280 i32.const 432 - i32.const 351 + i32.const 363 i32.const 63 call $~lib/builtins/abort unreachable @@ -5898,7 +5979,7 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 124 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 125 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5928,7 +6009,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -5941,7 +6022,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -5954,7 +6035,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -5966,7 +6047,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#map (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6028,7 +6109,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Uint16Array#__get (; 126 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6038,7 +6119,7 @@ if i32.const 280 i32.const 432 - i32.const 459 + i32.const 475 i32.const 63 call $~lib/builtins/abort unreachable @@ -6051,7 +6132,7 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 127 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 128 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6081,7 +6162,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -6094,7 +6175,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -6107,7 +6188,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -6119,7 +6200,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#map (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6181,7 +6262,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 129 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 130 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6211,7 +6292,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -6224,7 +6305,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -6237,7 +6318,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -6249,7 +6330,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#map (; 130 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 131 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6311,7 +6392,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Uint32Array#__get (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6321,7 +6402,7 @@ if i32.const 280 i32.const 432 - i32.const 675 + i32.const 699 i32.const 63 call $~lib/builtins/abort unreachable @@ -6334,7 +6415,7 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 132 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 133 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6364,7 +6445,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -6377,7 +6458,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -6390,7 +6471,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -6402,7 +6483,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 133 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 134 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) local.get $2 call $~lib/rt/pure/__retain drop @@ -6412,7 +6493,7 @@ local.get $0 i64.mul ) - (func $~lib/typedarray/Int64Array#map (; 134 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 135 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6474,7 +6555,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Int64Array#__get (; 135 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 136 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -6484,7 +6565,7 @@ if i32.const 280 i32.const 432 - i32.const 783 + i32.const 811 i32.const 63 call $~lib/builtins/abort unreachable @@ -6497,7 +6578,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 136 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 137 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6527,7 +6608,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -6540,7 +6621,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -6553,7 +6634,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -6565,7 +6646,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#map (; 137 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6627,7 +6708,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Uint64Array#__get (; 138 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 139 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -6637,7 +6718,7 @@ if i32.const 280 i32.const 432 - i32.const 891 + i32.const 923 i32.const 63 call $~lib/builtins/abort unreachable @@ -6650,7 +6731,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 139 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 140 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6680,7 +6761,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -6693,7 +6774,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -6706,7 +6787,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -6718,7 +6799,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 140 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 141 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) local.get $2 call $~lib/rt/pure/__retain drop @@ -6728,7 +6809,7 @@ local.get $0 f32.mul ) - (func $~lib/typedarray/Float32Array#map (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6790,7 +6871,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Float32Array#__get (; 142 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 143 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -6800,7 +6881,7 @@ if i32.const 280 i32.const 432 - i32.const 999 + i32.const 1035 i32.const 63 call $~lib/builtins/abort unreachable @@ -6813,7 +6894,7 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 143 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 144 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6843,7 +6924,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -6856,7 +6937,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -6869,7 +6950,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -6881,7 +6962,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 144 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 145 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) local.get $2 call $~lib/rt/pure/__retain drop @@ -6891,7 +6972,7 @@ local.get $0 f64.mul ) - (func $~lib/typedarray/Float64Array#map (; 145 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6953,7 +7034,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 146 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 147 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6983,7 +7064,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -6996,7 +7077,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -7009,7 +7090,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -7021,7 +7102,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 147 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 148 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7033,7 +7114,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int8Array#some (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7083,7 +7164,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 150 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7094,7 +7175,7 @@ i32.and i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 150 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 151 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7120,7 +7201,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -7131,7 +7212,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -7141,7 +7222,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#some (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7191,7 +7272,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 152 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 153 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7217,7 +7298,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -7228,7 +7309,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -7238,7 +7319,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 153 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 154 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7264,7 +7345,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -7275,7 +7356,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -7285,7 +7366,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 154 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 155 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7297,7 +7378,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#some (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7350,7 +7431,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 157 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7361,7 +7442,7 @@ i32.and i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 157 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 158 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7387,7 +7468,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -7398,7 +7479,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -7408,7 +7489,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#some (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7461,7 +7542,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 159 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 160 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7487,7 +7568,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -7498,7 +7579,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -7508,7 +7589,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 160 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7518,7 +7599,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int32Array#some (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7571,7 +7652,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 162 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 163 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7580,7 +7661,7 @@ local.get $0 i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 163 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 164 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7606,7 +7687,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -7617,7 +7698,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -7627,7 +7708,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 164 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 165 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7653,7 +7734,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -7664,7 +7745,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -7674,7 +7755,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 165 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 166 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7684,7 +7765,7 @@ i64.const 2 i64.eq ) - (func $~lib/typedarray/Int64Array#some (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7737,7 +7818,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 167 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 168 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7747,7 +7828,7 @@ i64.const 0 i64.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 168 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 169 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7773,7 +7854,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -7784,7 +7865,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -7794,7 +7875,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 169 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 170 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7820,7 +7901,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -7831,7 +7912,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -7841,7 +7922,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 170 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 171 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7851,7 +7932,7 @@ f32.const 2 f32.eq ) - (func $~lib/typedarray/Float32Array#some (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7904,7 +7985,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 172 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 173 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7914,7 +7995,7 @@ f32.const 0 f32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 173 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 174 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7940,7 +8021,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -7951,7 +8032,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -7961,7 +8042,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 174 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 175 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7971,7 +8052,7 @@ f64.const 2 f64.eq ) - (func $~lib/typedarray/Float64Array#some (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8024,7 +8105,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 176 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 177 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8034,7 +8115,7 @@ f64.const 0 f64.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 177 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 178 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8060,7 +8141,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -8071,7 +8152,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -8081,7 +8162,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#findIndex (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8132,7 +8213,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 179 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 180 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8144,7 +8225,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 180 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 181 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8171,7 +8252,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -8184,7 +8265,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -8194,7 +8275,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#findIndex (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8245,7 +8326,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 182 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 183 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8272,7 +8353,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -8285,7 +8366,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -8295,7 +8376,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 183 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 184 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8322,7 +8403,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -8335,7 +8416,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -8345,7 +8426,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#findIndex (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8399,7 +8480,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8411,7 +8492,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 186 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 187 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8438,7 +8519,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -8451,7 +8532,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -8461,7 +8542,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#findIndex (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8515,7 +8596,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 188 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 189 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8542,7 +8623,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -8555,7 +8636,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -8565,7 +8646,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#findIndex (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8619,7 +8700,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 190 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8629,7 +8710,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 191 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 192 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8656,7 +8737,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -8669,7 +8750,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -8679,7 +8760,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 192 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 193 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8706,7 +8787,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -8719,7 +8800,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -8729,7 +8810,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#findIndex (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8783,7 +8864,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 194 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 195 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8793,7 +8874,7 @@ i64.const 4 i64.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 195 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 196 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8820,7 +8901,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -8833,7 +8914,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -8843,7 +8924,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 196 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 197 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8870,7 +8951,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -8883,7 +8964,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -8893,7 +8974,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#findIndex (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8947,7 +9028,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 198 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 199 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8957,7 +9038,7 @@ f32.const 4 f32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 199 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 200 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8984,7 +9065,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -8997,7 +9078,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -9007,7 +9088,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#findIndex (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9061,7 +9142,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 201 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 202 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9071,7 +9152,7 @@ f64.const 4 f64.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 202 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 203 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9098,7 +9179,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -9111,7 +9192,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -9121,7 +9202,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 204 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9136,7 +9217,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#every (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9186,7 +9267,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 205 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 206 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9212,7 +9293,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -9223,7 +9304,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -9233,7 +9314,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 207 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9244,7 +9325,7 @@ i32.and i32.eqz ) - (func $~lib/typedarray/Uint8Array#every (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9294,7 +9375,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 208 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 209 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9320,7 +9401,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -9331,7 +9412,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -9341,7 +9422,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 209 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 210 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9367,7 +9448,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -9378,7 +9459,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -9388,7 +9469,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 210 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 211 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9403,7 +9484,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#every (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 212 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9455,7 +9536,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 212 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 213 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9481,7 +9562,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -9492,7 +9573,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -9502,7 +9583,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#every (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 214 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9554,7 +9635,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 214 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 215 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9580,7 +9661,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -9591,7 +9672,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -9601,7 +9682,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 216 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9612,7 +9693,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#every (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9664,7 +9745,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 217 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 218 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9690,7 +9771,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -9701,7 +9782,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -9711,7 +9792,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 218 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 219 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9737,7 +9818,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -9748,7 +9829,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -9758,7 +9839,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 219 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 220 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9770,7 +9851,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#every (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9822,7 +9903,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 221 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 222 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9848,7 +9929,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -9859,7 +9940,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -9869,7 +9950,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 222 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 223 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9881,7 +9962,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 223 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 224 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9907,7 +9988,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -9918,7 +9999,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -9928,7 +10009,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/math/NativeMathf.mod (; 224 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 225 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10077,7 +10158,7 @@ local.get $0 f32.mul ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 225 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 226 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10088,7 +10169,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#every (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10140,7 +10221,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 227 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 228 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10166,7 +10247,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -10177,7 +10258,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -10187,7 +10268,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/math/NativeMath.mod (; 228 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 229 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -10343,7 +10424,7 @@ local.get $0 f64.mul ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 229 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 230 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10354,7 +10435,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#every (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10406,7 +10487,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 231 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 232 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10432,7 +10513,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -10443,7 +10524,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -10453,7 +10534,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 232 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 233 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10469,7 +10550,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -10480,7 +10561,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -10491,7 +10572,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -10503,7 +10584,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#forEach (; 233 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Int8Array#forEach (; 234 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10541,7 +10622,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 234 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 235 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -10590,7 +10671,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -10600,7 +10681,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#forEach (; 235 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 236 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10639,7 +10720,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 236 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 237 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -10683,7 +10764,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -10693,7 +10774,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 237 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 238 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -10737,7 +10818,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -10747,7 +10828,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 238 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 239 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10763,7 +10844,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -10774,7 +10855,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -10785,7 +10866,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -10797,7 +10878,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#forEach (; 239 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Int16Array#forEach (; 240 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10837,7 +10918,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 240 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 241 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -10886,7 +10967,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -10896,7 +10977,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#forEach (; 241 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 242 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10936,7 +11017,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 242 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 243 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -10979,7 +11060,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -10989,7 +11070,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 243 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 244 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11001,7 +11082,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -11012,7 +11093,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -11023,7 +11104,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -11035,7 +11116,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#forEach (; 244 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 245 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11077,7 +11158,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 245 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 246 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11115,7 +11196,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -11125,7 +11206,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 246 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 247 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11163,7 +11244,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -11173,7 +11254,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 247 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 248 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11186,7 +11267,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -11197,7 +11278,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -11208,7 +11289,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -11220,7 +11301,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#forEach (; 248 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 249 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11262,7 +11343,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 249 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 250 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11303,7 +11384,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -11313,7 +11394,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 250 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 251 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11354,7 +11435,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -11364,7 +11445,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 251 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 252 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11377,7 +11458,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -11388,7 +11469,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -11399,7 +11480,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -11411,7 +11492,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#forEach (; 252 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Float32Array#forEach (; 253 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11451,7 +11532,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 253 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 254 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11491,7 +11572,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -11501,7 +11582,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 254 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 255 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11514,7 +11595,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -11525,7 +11606,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -11536,7 +11617,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -11548,7 +11629,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#forEach (; 255 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Float64Array#forEach (; 256 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11588,7 +11669,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 256 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 257 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11628,7 +11709,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -11638,7 +11719,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reverse (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11690,7 +11771,7 @@ end local.get $3 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 258 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 259 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11772,7 +11853,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -11800,7 +11881,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -11813,7 +11894,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -11826,7 +11907,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -11839,7 +11920,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -11859,7 +11940,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reverse (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11911,7 +11992,7 @@ end local.get $3 ) - (func $~lib/typedarray/Uint8Array#subarray (; 260 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11992,7 +12073,7 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 261 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 262 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12068,7 +12149,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -12095,7 +12176,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -12108,7 +12189,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -12121,7 +12202,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -12134,7 +12215,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -12154,7 +12235,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12235,7 +12316,7 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 263 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 264 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12311,7 +12392,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -12338,7 +12419,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -12351,7 +12432,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -12364,7 +12445,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -12377,7 +12458,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -12397,7 +12478,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reverse (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12454,7 +12535,7 @@ end local.get $3 ) - (func $~lib/typedarray/Int16Array#subarray (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12539,7 +12620,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 266 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 267 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12621,7 +12702,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -12648,7 +12729,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -12661,7 +12742,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -12674,7 +12755,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -12687,7 +12768,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -12707,7 +12788,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#reverse (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12764,7 +12845,7 @@ end local.get $3 ) - (func $~lib/typedarray/Uint16Array#subarray (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12849,7 +12930,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 269 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 270 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12925,7 +13006,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -12952,7 +13033,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -12965,7 +13046,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -12978,7 +13059,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -12991,7 +13072,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -13011,7 +13092,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reverse (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13068,7 +13149,7 @@ end local.get $3 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 271 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 272 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13138,7 +13219,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -13166,7 +13247,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -13179,7 +13260,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -13192,7 +13273,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -13205,7 +13286,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -13225,7 +13306,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#subarray (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13310,7 +13391,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 273 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 274 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13380,7 +13461,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -13407,7 +13488,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -13420,7 +13501,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -13433,7 +13514,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -13446,7 +13527,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -13466,7 +13547,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reverse (; 274 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 275 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13523,7 +13604,7 @@ end local.get $3 ) - (func $~lib/typedarray/Int64Array#subarray (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13608,7 +13689,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 276 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 277 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13681,7 +13762,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -13708,7 +13789,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -13721,7 +13802,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -13734,7 +13815,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -13747,7 +13828,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -13767,7 +13848,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#subarray (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13852,7 +13933,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 278 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 279 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13925,7 +14006,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -13952,7 +14033,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -13965,7 +14046,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -13978,7 +14059,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -13991,7 +14072,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -14011,7 +14092,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reverse (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 280 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14068,7 +14149,7 @@ end local.get $3 ) - (func $~lib/typedarray/Float32Array#subarray (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14153,7 +14234,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 281 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 282 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14226,7 +14307,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -14253,7 +14334,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -14266,7 +14347,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -14279,7 +14360,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -14292,7 +14373,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -14312,7 +14393,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reverse (; 282 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14369,7 +14450,7 @@ end local.get $3 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 283 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 284 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14442,7 +14523,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -14470,7 +14551,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -14483,7 +14564,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -14496,7 +14577,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -14509,7 +14590,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -14529,7 +14610,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#indexOf (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#indexOf (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 @@ -14604,7 +14685,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int8Array#lastIndexOf (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $0 @@ -14673,7 +14754,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -14694,7 +14775,7 @@ local.get $2 call $~lib/typedarray/Int8Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 287 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 288 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14740,7 +14821,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -14754,7 +14835,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -14768,7 +14849,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -14782,7 +14863,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -14796,7 +14877,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -14810,7 +14891,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -14824,7 +14905,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -14838,7 +14919,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -14852,7 +14933,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -14865,7 +14946,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -14880,7 +14961,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -14895,7 +14976,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -14910,7 +14991,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -14924,7 +15005,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -14938,7 +15019,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -14952,7 +15033,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -14966,7 +15047,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -14980,7 +15061,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -14994,7 +15075,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -15012,7 +15093,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -15024,7 +15105,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -15038,7 +15119,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -15052,7 +15133,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -15066,7 +15147,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -15080,7 +15161,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -15094,7 +15175,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -15108,7 +15189,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -15122,7 +15203,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 288 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 289 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15166,7 +15247,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -15180,7 +15261,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -15194,7 +15275,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -15208,7 +15289,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -15222,7 +15303,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -15236,7 +15317,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -15250,7 +15331,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -15264,7 +15345,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -15278,7 +15359,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -15291,7 +15372,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -15306,7 +15387,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -15321,7 +15402,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -15336,7 +15417,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -15350,7 +15431,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -15364,7 +15445,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -15378,7 +15459,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -15392,7 +15473,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -15406,7 +15487,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -15420,7 +15501,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -15437,7 +15518,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -15449,7 +15530,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -15463,7 +15544,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -15477,7 +15558,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -15491,7 +15572,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -15505,7 +15586,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -15519,7 +15600,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -15533,7 +15614,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -15547,7 +15628,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 289 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 290 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15591,7 +15672,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -15605,7 +15686,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -15619,7 +15700,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -15633,7 +15714,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -15647,7 +15728,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -15661,7 +15742,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -15675,7 +15756,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -15689,7 +15770,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -15703,7 +15784,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -15716,7 +15797,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -15731,7 +15812,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -15746,7 +15827,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -15761,7 +15842,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -15775,7 +15856,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -15789,7 +15870,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -15803,7 +15884,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -15817,7 +15898,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -15831,7 +15912,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -15845,7 +15926,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -15862,7 +15943,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -15874,7 +15955,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -15888,7 +15969,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -15902,7 +15983,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -15916,7 +15997,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -15930,7 +16011,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -15944,7 +16025,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -15958,7 +16039,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -15972,7 +16053,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#indexOf (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#indexOf (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 @@ -16049,7 +16130,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int16Array#lastIndexOf (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 @@ -16120,7 +16201,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 292 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 293 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -16141,7 +16222,7 @@ local.get $2 call $~lib/typedarray/Int16Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 293 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 294 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16187,7 +16268,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -16201,7 +16282,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -16215,7 +16296,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -16229,7 +16310,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -16243,7 +16324,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -16257,7 +16338,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -16271,7 +16352,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -16285,7 +16366,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -16299,7 +16380,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -16312,7 +16393,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -16327,7 +16408,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -16342,7 +16423,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -16357,7 +16438,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -16371,7 +16452,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -16385,7 +16466,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -16399,7 +16480,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -16413,7 +16494,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -16427,7 +16508,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -16441,7 +16522,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -16458,7 +16539,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -16470,7 +16551,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -16484,7 +16565,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -16498,7 +16579,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -16512,7 +16593,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -16526,7 +16607,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -16540,7 +16621,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -16554,7 +16635,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -16568,7 +16649,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 294 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 295 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16612,7 +16693,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -16626,7 +16707,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -16640,7 +16721,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -16654,7 +16735,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -16668,7 +16749,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -16682,7 +16763,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -16696,7 +16777,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -16710,7 +16791,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -16724,7 +16805,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -16737,7 +16818,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -16752,7 +16833,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -16767,7 +16848,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -16782,7 +16863,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -16796,7 +16877,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -16810,7 +16891,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -16824,7 +16905,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -16838,7 +16919,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -16852,7 +16933,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -16866,7 +16947,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -16883,7 +16964,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -16895,7 +16976,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -16909,7 +16990,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -16923,7 +17004,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -16937,7 +17018,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -16951,7 +17032,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -16965,7 +17046,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -16979,7 +17060,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -16993,7 +17074,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#indexOf (; 295 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#indexOf (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 @@ -17068,7 +17149,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int32Array#lastIndexOf (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf (; 297 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 local.get $0 @@ -17137,7 +17218,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -17158,7 +17239,7 @@ local.get $2 call $~lib/typedarray/Int32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 298 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 299 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17200,7 +17281,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -17214,7 +17295,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -17228,7 +17309,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -17242,7 +17323,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -17256,7 +17337,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -17270,7 +17351,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -17284,7 +17365,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -17298,7 +17379,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -17312,7 +17393,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -17325,7 +17406,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -17340,7 +17421,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -17355,7 +17436,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -17370,7 +17451,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -17384,7 +17465,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -17398,7 +17479,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -17412,7 +17493,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -17426,7 +17507,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -17440,7 +17521,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -17454,7 +17535,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -17472,7 +17553,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -17484,7 +17565,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -17498,7 +17579,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -17512,7 +17593,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -17526,7 +17607,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -17540,7 +17621,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -17554,7 +17635,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -17568,7 +17649,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -17582,7 +17663,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 299 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 300 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17624,7 +17705,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -17638,7 +17719,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -17652,7 +17733,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -17666,7 +17747,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -17680,7 +17761,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -17694,7 +17775,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -17708,7 +17789,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -17722,7 +17803,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -17736,7 +17817,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -17749,7 +17830,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -17764,7 +17845,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -17779,7 +17860,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -17794,7 +17875,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -17808,7 +17889,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -17822,7 +17903,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -17836,7 +17917,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -17850,7 +17931,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -17864,7 +17945,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -17878,7 +17959,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -17895,7 +17976,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -17907,7 +17988,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -17921,7 +18002,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -17935,7 +18016,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -17949,7 +18030,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -17963,7 +18044,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -17977,7 +18058,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -17991,7 +18072,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -18005,7 +18086,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#indexOf (; 300 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#indexOf (; 301 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 @@ -18080,7 +18161,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int64Array#lastIndexOf (; 301 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf (; 302 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $0 @@ -18149,7 +18230,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 302 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 303 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -18170,7 +18251,7 @@ local.get $2 call $~lib/typedarray/Int64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 303 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 304 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18213,7 +18294,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -18227,7 +18308,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -18241,7 +18322,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -18255,7 +18336,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -18269,7 +18350,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -18283,7 +18364,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -18297,7 +18378,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -18311,7 +18392,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -18325,7 +18406,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -18338,7 +18419,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -18353,7 +18434,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -18368,7 +18449,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -18383,7 +18464,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -18397,7 +18478,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -18411,7 +18492,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -18425,7 +18506,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -18439,7 +18520,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -18453,7 +18534,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -18467,7 +18548,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -18484,7 +18565,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -18496,7 +18577,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -18510,7 +18591,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -18524,7 +18605,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -18538,7 +18619,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -18552,7 +18633,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -18566,7 +18647,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -18580,7 +18661,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -18594,7 +18675,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 304 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 305 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18637,7 +18718,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -18651,7 +18732,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -18665,7 +18746,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -18679,7 +18760,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -18693,7 +18774,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -18707,7 +18788,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -18721,7 +18802,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -18735,7 +18816,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -18749,7 +18830,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -18762,7 +18843,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -18777,7 +18858,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -18792,7 +18873,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -18807,7 +18888,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -18821,7 +18902,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -18835,7 +18916,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -18849,7 +18930,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -18863,7 +18944,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -18877,7 +18958,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -18891,7 +18972,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -18908,7 +18989,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -18920,7 +19001,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -18934,7 +19015,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -18948,7 +19029,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -18962,7 +19043,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -18976,7 +19057,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -18990,7 +19071,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -19004,7 +19085,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -19018,7 +19099,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#indexOf (; 305 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#indexOf (; 306 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -19093,7 +19174,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float32Array#lastIndexOf (; 306 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf (; 307 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $0 @@ -19162,7 +19243,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 307 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 308 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -19183,7 +19264,7 @@ local.get $2 call $~lib/typedarray/Float32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 308 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 309 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19226,7 +19307,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -19240,7 +19321,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -19254,7 +19335,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -19268,7 +19349,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -19282,7 +19363,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -19296,7 +19377,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -19310,7 +19391,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -19324,7 +19405,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -19338,7 +19419,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -19351,7 +19432,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -19366,7 +19447,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -19381,7 +19462,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -19396,7 +19477,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -19410,7 +19491,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -19424,7 +19505,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -19438,7 +19519,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -19452,7 +19533,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -19466,7 +19547,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -19480,7 +19561,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -19497,7 +19578,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -19509,7 +19590,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -19523,7 +19604,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -19537,7 +19618,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -19551,7 +19632,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -19565,7 +19646,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -19579,7 +19660,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -19593,7 +19674,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -19607,7 +19688,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#indexOf (; 309 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#indexOf (; 310 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 @@ -19682,7 +19763,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float64Array#lastIndexOf (; 310 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf (; 311 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $0 @@ -19751,7 +19832,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 311 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 312 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -19772,7 +19853,7 @@ local.get $2 call $~lib/typedarray/Float64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 312 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 313 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19815,7 +19896,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -19829,7 +19910,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -19843,7 +19924,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -19857,7 +19938,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -19871,7 +19952,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -19885,7 +19966,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -19899,7 +19980,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -19913,7 +19994,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -19927,7 +20008,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -19940,7 +20021,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -19955,7 +20036,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -19970,7 +20051,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -19985,7 +20066,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -19999,7 +20080,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -20013,7 +20094,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -20027,7 +20108,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -20041,7 +20122,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -20055,7 +20136,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -20069,7 +20150,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -20087,7 +20168,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -20099,7 +20180,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -20113,7 +20194,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -20127,7 +20208,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -20141,7 +20222,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -20155,7 +20236,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -20169,7 +20250,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -20183,7 +20264,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -20197,18 +20278,18 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#get:buffer (; 313 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:buffer (; 314 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 314 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 315 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 315 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 316 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -20276,7 +20357,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int8Array.wrap (; 316 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array.wrap (; 317 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20295,7 +20376,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -20317,7 +20398,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -20330,7 +20411,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -20346,7 +20427,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -20382,7 +20463,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 317 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 318 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20470,7 +20551,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -20497,7 +20578,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array.wrap (; 318 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap (; 319 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20516,7 +20597,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -20538,7 +20619,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -20551,7 +20632,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -20567,7 +20648,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -20603,7 +20684,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 319 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 320 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20689,7 +20770,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -20716,7 +20797,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray.wrap (; 320 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray.wrap (; 321 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20735,7 +20816,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -20757,7 +20838,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -20770,7 +20851,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -20786,7 +20867,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -20822,7 +20903,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 321 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 322 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20908,7 +20989,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -20935,7 +21016,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array.wrap (; 322 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array.wrap (; 323 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20954,7 +21035,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -20976,7 +21057,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -20989,7 +21070,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -21008,7 +21089,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -21044,7 +21125,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 323 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 324 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21132,7 +21213,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -21159,7 +21240,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array.wrap (; 324 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array.wrap (; 325 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21178,7 +21259,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -21200,7 +21281,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -21213,7 +21294,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -21232,7 +21313,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -21268,7 +21349,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 325 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 326 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21354,7 +21435,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -21381,7 +21462,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array.wrap (; 326 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array.wrap (; 327 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21400,7 +21481,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -21422,7 +21503,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -21435,7 +21516,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -21454,7 +21535,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -21490,7 +21571,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 327 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 328 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21574,7 +21655,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -21601,7 +21682,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array.wrap (; 328 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array.wrap (; 329 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21620,7 +21701,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -21642,7 +21723,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -21655,7 +21736,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -21674,7 +21755,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -21710,7 +21791,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 329 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 330 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21794,7 +21875,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -21821,7 +21902,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array.wrap (; 330 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array.wrap (; 331 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21840,7 +21921,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -21862,7 +21943,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -21875,7 +21956,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -21894,7 +21975,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -21930,7 +22011,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 331 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 332 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22015,7 +22096,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -22042,7 +22123,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array.wrap (; 332 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array.wrap (; 333 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22061,7 +22142,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -22083,7 +22164,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -22096,7 +22177,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -22115,7 +22196,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -22151,7 +22232,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 333 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 334 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22236,7 +22317,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -22263,7 +22344,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array.wrap (; 334 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array.wrap (; 335 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22282,7 +22363,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -22304,7 +22385,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -22317,7 +22398,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -22336,7 +22417,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -22372,7 +22453,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 335 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 336 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22457,7 +22538,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -22484,7 +22565,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array.wrap (; 336 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array.wrap (; 337 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22503,7 +22584,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -22525,7 +22606,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -22538,7 +22619,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -22557,7 +22638,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -22593,7 +22674,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 337 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 338 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22678,7 +22759,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -22705,7 +22786,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start:std/typedarray (; 338 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 339 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23733,6 +23814,247 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $2 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 249 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 250 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 251 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 254 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 255 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 256 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 257 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 258 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 261 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 262 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 263 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 264 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $4 + local.get $0 + i32.eq + if + i32.const 0 + i32.const 376 + i32.const 267 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/typedarray/Int32Array#get:length + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 268 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 269 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=8 + local.get $0 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 270 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> call $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> @@ -23844,7 +24166,7 @@ call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> ) - (func $start (; 339 ;) (type $FUNCSIG$v) + (func $start (; 340 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -23854,7 +24176,7 @@ end call $start:std/typedarray ) - (func $~lib/rt/pure/markGray (; 340 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 341 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -23878,7 +24200,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 341 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 342 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -23891,7 +24213,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 342 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 343 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -23925,7 +24247,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 343 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 344 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -23958,7 +24280,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__visit (; 344 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 345 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 i32.const 1436 i32.lt_u @@ -24068,7 +24390,7 @@ unreachable end ) - (func $~lib/rt/__visit_members (; 345 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 346 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $block$4$break block $switch$1$default block $switch$1$case$2 @@ -24091,7 +24413,7 @@ call $~lib/rt/pure/__visit end ) - (func $null (; 346 ;) (type $FUNCSIG$v) + (func $null (; 347 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index 95ecc13198..afd1114723 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -219,22 +219,55 @@ import { BLOCK_MAXSIZE } from "rt/common"; multisubarr[5] = 6; let multisubarr1 = multisubarr.subarray(1, 6); - assert(multisubarr1[0] === 2); - assert(multisubarr1.length === 5); - assert(multisubarr1.byteOffset === 1); - assert(multisubarr1.byteLength === 5); + assert(multisubarr1[0] == 2); + assert(multisubarr1.length == 5); + assert(multisubarr1.byteOffset == 1); + assert(multisubarr1.byteLength == 5); let multisubarr2 = multisubarr1.subarray(1, 5); - assert(multisubarr2[0] === 3); - assert(multisubarr2.length === 4); - assert(multisubarr2.byteOffset === 2); - assert(multisubarr2.byteLength === 4); + assert(multisubarr2[0] == 3); + assert(multisubarr2.length == 4); + assert(multisubarr2.byteOffset == 2); + assert(multisubarr2.byteLength == 4); let multisubarr3 = multisubarr2.subarray(1, 4); - assert(multisubarr3[0] === 4); - assert(multisubarr3.length === 3); - assert(multisubarr3.byteOffset === 3); - assert(multisubarr3.byteLength === 3); + assert(multisubarr3[0] == 4); + assert(multisubarr3.length == 3); + assert(multisubarr3.byteOffset == 3); + assert(multisubarr3.byteLength == 3); +} + +{ + let arr = new Int32Array(5); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + arr[3] = 4; + arr[4] = 5; + + let sub = arr.subarray(1, 4); + assert(sub.length == 3); + assert(sub.byteOffset == 4); + assert(sub.byteLength == 12); + + let sliced = arr.slice(1, 3); + assert(sliced[0] == 2); + assert(sliced[1] == 3); + assert(sliced.length == 2); + assert(sliced.byteOffset == 0); + assert(sliced.byteLength == 8); + + let subsliced = sub.slice(1, 2); + assert(subsliced[0] == 3); + assert(subsliced.length == 1); + assert(subsliced.byteOffset == 0); + assert(subsliced.byteLength == 4); + + let copy = arr.slice(); + assert(copy !== arr); + assert(copy.length == arr.length); + assert(copy.byteOffset == arr.byteOffset); + assert(copy.byteLength == arr.byteLength); } // Reduce test suite: diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 2e6c17b0a1..a2cfc4a508 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -4153,7 +4153,7 @@ if i32.const 280 i32.const 432 - i32.const 578 + i32.const 598 i32.const 63 call $~lib/builtins/abort unreachable @@ -4177,7 +4177,7 @@ if i32.const 280 i32.const 432 - i32.const 567 + i32.const 587 i32.const 63 call $~lib/builtins/abort unreachable @@ -4321,7 +4321,7 @@ if i32.const 280 i32.const 432 - i32.const 1118 + i32.const 1158 i32.const 63 call $~lib/builtins/abort unreachable @@ -4987,7 +4987,7 @@ if i32.const 280 i32.const 432 - i32.const 1107 + i32.const 1147 i32.const 63 call $~lib/builtins/abort unreachable @@ -5008,7 +5008,7 @@ if i32.const 280 i32.const 432 - i32.const 254 + i32.const 262 i32.const 44 call $~lib/builtins/abort unreachable @@ -5040,7 +5040,7 @@ if i32.const 280 i32.const 432 - i32.const 243 + i32.const 251 i32.const 44 call $~lib/builtins/abort unreachable @@ -5640,7 +5640,112 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int32Array#slice (; 80 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $4 + local.get $6 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $6 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.get $4 + i32.sub + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $6 + i32.const 0 + local.get $6 + call $~lib/typedarray/Int32Array#constructor + local.tee $7 + call $~lib/rt/pure/__retain + local.set $8 + local.get $8 + i32.load offset=4 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $8 + local.set $9 + local.get $5 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $9 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 81 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -5653,7 +5758,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int8Array#reduce (; 81 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 82 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5710,7 +5815,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 82 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 83 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5748,7 +5853,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -5758,7 +5863,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#__set (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -5766,7 +5871,7 @@ if i32.const 280 i32.const 432 - i32.const 146 + i32.const 150 i32.const 44 call $~lib/builtins/abort unreachable @@ -5778,7 +5883,7 @@ local.get $2 i32.store8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 84 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 85 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -5791,7 +5896,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8Array#reduce (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5848,7 +5953,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 86 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 87 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5884,7 +5989,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -5894,7 +5999,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 87 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 88 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -5907,7 +6012,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8ClampedArray#reduce (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduce (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5964,7 +6069,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 89 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 90 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6000,7 +6105,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -6010,7 +6115,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#__set (; 90 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 91 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -6020,7 +6125,7 @@ if i32.const 280 i32.const 432 - i32.const 362 + i32.const 374 i32.const 63 call $~lib/builtins/abort unreachable @@ -6034,7 +6139,7 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 91 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 92 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -6047,7 +6152,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int16Array#reduce (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6104,7 +6209,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 93 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 94 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6142,7 +6247,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -6152,7 +6257,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#__set (; 94 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 95 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -6162,7 +6267,7 @@ if i32.const 280 i32.const 432 - i32.const 470 + i32.const 486 i32.const 63 call $~lib/builtins/abort unreachable @@ -6176,7 +6281,7 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 95 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 96 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -6189,7 +6294,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint16Array#reduce (; 96 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 97 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6246,7 +6351,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 97 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 98 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6282,7 +6387,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -6292,7 +6397,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 98 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 99 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -6305,7 +6410,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int32Array#reduce (; 99 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 100 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6362,7 +6467,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 100 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 101 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6396,7 +6501,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -6406,7 +6511,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#__set (; 101 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 102 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -6416,7 +6521,7 @@ if i32.const 280 i32.const 432 - i32.const 686 + i32.const 710 i32.const 63 call $~lib/builtins/abort unreachable @@ -6430,7 +6535,7 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 102 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 103 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -6443,7 +6548,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint32Array#reduce (; 103 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduce (; 104 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6500,7 +6605,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 104 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 105 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6534,7 +6639,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -6544,7 +6649,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#__set (; 105 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 106 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -6554,7 +6659,7 @@ if i32.const 280 i32.const 432 - i32.const 794 + i32.const 822 i32.const 63 call $~lib/builtins/abort unreachable @@ -6568,7 +6673,7 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 106 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 107 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 call $~lib/rt/pure/__retain @@ -6581,7 +6686,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int64Array#reduce (; 107 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 108 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i64) (local $4 i32) (local $5 i32) @@ -6639,7 +6744,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 108 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 109 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -6673,7 +6778,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -6683,7 +6788,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#__set (; 109 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 110 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -6693,7 +6798,7 @@ if i32.const 280 i32.const 432 - i32.const 902 + i32.const 934 i32.const 63 call $~lib/builtins/abort unreachable @@ -6707,7 +6812,7 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 110 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 111 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 call $~lib/rt/pure/__retain @@ -6720,7 +6825,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint64Array#reduce (; 111 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduce (; 112 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i64) (local $4 i32) (local $5 i32) @@ -6778,7 +6883,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 112 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 113 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -6812,7 +6917,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -6822,7 +6927,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#__set (; 113 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 114 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -6832,7 +6937,7 @@ if i32.const 280 i32.const 432 - i32.const 1010 + i32.const 1046 i32.const 63 call $~lib/builtins/abort unreachable @@ -6846,7 +6951,7 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 114 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 115 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) (local $4 f32) local.get $3 call $~lib/rt/pure/__retain @@ -6859,7 +6964,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float32Array#reduce (; 115 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 116 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 f32) (local $4 i32) (local $5 i32) @@ -6917,7 +7022,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 116 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 117 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f32) @@ -6951,7 +7056,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -6961,7 +7066,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 117 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 118 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) (local $4 f64) local.get $3 call $~lib/rt/pure/__retain @@ -6974,7 +7079,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float64Array#reduce (; 118 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 119 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 f64) (local $4 i32) (local $5 i32) @@ -7032,7 +7137,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 119 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 120 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f64) @@ -7066,7 +7171,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -7076,7 +7181,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 120 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 121 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7089,7 +7194,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int8Array#reduceRight (; 121 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 122 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7145,7 +7250,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 122 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 123 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7183,7 +7288,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -7193,7 +7298,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 123 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 124 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7206,7 +7311,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 124 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 125 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7262,7 +7367,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 125 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 126 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7298,7 +7403,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -7308,7 +7413,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 126 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 127 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7321,7 +7426,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 127 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 128 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7377,7 +7482,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 128 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 129 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7413,7 +7518,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -7423,7 +7528,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 129 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 130 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7436,7 +7541,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int16Array#reduceRight (; 130 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 131 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7492,7 +7597,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 131 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 132 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7530,7 +7635,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -7540,7 +7645,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 132 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 133 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7553,7 +7658,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 133 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 134 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7609,7 +7714,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 134 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 135 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7645,7 +7750,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -7655,7 +7760,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 135 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 136 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7668,7 +7773,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int32Array#reduceRight (; 136 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 137 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7724,7 +7829,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 137 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 138 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7758,7 +7863,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -7768,7 +7873,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 138 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 139 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7781,7 +7886,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint32Array#reduceRight (; 139 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduceRight (; 140 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7837,7 +7942,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 140 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 141 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7871,7 +7976,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -7881,7 +7986,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 141 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 142 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 call $~lib/rt/pure/__retain @@ -7894,7 +7999,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int64Array#reduceRight (; 142 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 143 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i64) (local $4 i32) (local $5 i32) @@ -7951,7 +8056,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 143 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 144 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -7985,7 +8090,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -7995,7 +8100,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 144 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 145 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 call $~lib/rt/pure/__retain @@ -8008,7 +8113,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint64Array#reduceRight (; 145 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduceRight (; 146 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i64) (local $4 i32) (local $5 i32) @@ -8065,7 +8170,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 146 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 147 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -8099,7 +8204,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -8109,7 +8214,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 147 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 148 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) (local $4 f32) local.get $3 call $~lib/rt/pure/__retain @@ -8122,7 +8227,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float32Array#reduceRight (; 148 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 149 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 f32) (local $4 i32) (local $5 i32) @@ -8179,7 +8284,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 149 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 150 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f32) @@ -8213,7 +8318,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -8223,7 +8328,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 150 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 151 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) (local $4 f64) local.get $3 call $~lib/rt/pure/__retain @@ -8236,7 +8341,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float64Array#reduceRight (; 151 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 152 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 f64) (local $4 i32) (local $5 i32) @@ -8293,7 +8398,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 152 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 153 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f64) @@ -8327,7 +8432,7 @@ if i32.const 0 i32.const 376 - i32.const 278 + i32.const 311 i32.const 2 call $~lib/builtins/abort unreachable @@ -8337,7 +8442,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 154 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -8350,7 +8455,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#map (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8422,7 +8527,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 155 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 156 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8457,7 +8562,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -8471,7 +8576,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -8485,7 +8590,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -8497,7 +8602,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 157 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -8510,7 +8615,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#map (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8582,7 +8687,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Uint8Array#__get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -8590,7 +8695,7 @@ if i32.const 280 i32.const 432 - i32.const 135 + i32.const 139 i32.const 44 call $~lib/builtins/abort unreachable @@ -8601,7 +8706,7 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 159 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 160 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8636,7 +8741,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -8650,7 +8755,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -8664,7 +8769,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -8676,7 +8781,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 160 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -8689,7 +8794,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8761,7 +8866,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 162 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 163 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8796,7 +8901,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -8810,7 +8915,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -8824,7 +8929,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -8836,7 +8941,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 163 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 164 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -8849,7 +8954,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#map (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8921,7 +9026,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Int16Array#__get (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -8931,7 +9036,7 @@ if i32.const 280 i32.const 432 - i32.const 351 + i32.const 363 i32.const 63 call $~lib/builtins/abort unreachable @@ -8944,7 +9049,7 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 166 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 167 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8979,7 +9084,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -8993,7 +9098,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -9007,7 +9112,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -9019,7 +9124,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 167 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 168 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -9032,7 +9137,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#map (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9104,7 +9209,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Uint16Array#__get (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -9114,7 +9219,7 @@ if i32.const 280 i32.const 432 - i32.const 459 + i32.const 475 i32.const 63 call $~lib/builtins/abort unreachable @@ -9127,7 +9232,7 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 170 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 171 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9162,7 +9267,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -9176,7 +9281,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -9190,7 +9295,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -9202,7 +9307,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 171 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 172 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -9215,7 +9320,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#map (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9287,7 +9392,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 173 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 174 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9322,7 +9427,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -9336,7 +9441,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -9350,7 +9455,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -9362,7 +9467,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 174 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 175 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -9375,7 +9480,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#map (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9447,7 +9552,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Uint32Array#__get (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -9457,7 +9562,7 @@ if i32.const 280 i32.const 432 - i32.const 675 + i32.const 699 i32.const 63 call $~lib/builtins/abort unreachable @@ -9470,7 +9575,7 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 177 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 178 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9505,7 +9610,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -9519,7 +9624,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -9533,7 +9638,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -9545,7 +9650,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 178 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 179 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $2 call $~lib/rt/pure/__retain @@ -9558,7 +9663,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#map (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9630,7 +9735,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Int64Array#__get (; 180 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 181 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -9640,7 +9745,7 @@ if i32.const 280 i32.const 432 - i32.const 783 + i32.const 811 i32.const 63 call $~lib/builtins/abort unreachable @@ -9653,7 +9758,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 181 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 182 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9688,7 +9793,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -9702,7 +9807,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -9716,7 +9821,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -9728,7 +9833,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 182 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 183 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $2 call $~lib/rt/pure/__retain @@ -9741,7 +9846,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#map (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9813,7 +9918,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Uint64Array#__get (; 184 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 185 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -9823,7 +9928,7 @@ if i32.const 280 i32.const 432 - i32.const 891 + i32.const 923 i32.const 63 call $~lib/builtins/abort unreachable @@ -9836,7 +9941,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 185 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 186 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9871,7 +9976,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -9885,7 +9990,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -9899,7 +10004,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -9911,7 +10016,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 186 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 187 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) (local $3 f32) local.get $2 call $~lib/rt/pure/__retain @@ -9924,7 +10029,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#map (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9996,7 +10101,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Float32Array#__get (; 188 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 189 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -10006,7 +10111,7 @@ if i32.const 280 i32.const 432 - i32.const 999 + i32.const 1035 i32.const 63 call $~lib/builtins/abort unreachable @@ -10019,7 +10124,7 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 189 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 190 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10054,7 +10159,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -10068,7 +10173,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -10082,7 +10187,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -10094,7 +10199,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 190 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 191 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) (local $3 f64) local.get $2 call $~lib/rt/pure/__retain @@ -10107,7 +10212,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#map (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10179,7 +10284,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 192 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 193 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10214,7 +10319,7 @@ if i32.const 0 i32.const 376 - i32.const 299 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -10228,7 +10333,7 @@ if i32.const 0 i32.const 376 - i32.const 300 + i32.const 333 i32.const 2 call $~lib/builtins/abort unreachable @@ -10242,7 +10347,7 @@ if i32.const 0 i32.const 376 - i32.const 301 + i32.const 334 i32.const 2 call $~lib/builtins/abort unreachable @@ -10254,7 +10359,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10271,7 +10376,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#some (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10334,7 +10439,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 196 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10351,7 +10456,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 196 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 197 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10385,7 +10490,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -10402,7 +10507,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -10412,7 +10517,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 197 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 198 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10427,7 +10532,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#some (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10490,7 +10595,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 199 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 200 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10505,7 +10610,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 200 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 201 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10539,7 +10644,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -10556,7 +10661,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -10566,7 +10671,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 201 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10581,7 +10686,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#some (; 202 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#some (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10644,7 +10749,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 204 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10659,7 +10764,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 204 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 205 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10693,7 +10798,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -10710,7 +10815,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -10720,7 +10825,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 205 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10737,7 +10842,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#some (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10800,7 +10905,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 207 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 208 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10817,7 +10922,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 208 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 209 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10851,7 +10956,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -10868,7 +10973,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -10878,7 +10983,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 209 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 210 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10893,7 +10998,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#some (; 210 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10956,7 +11061,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 211 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10971,7 +11076,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 212 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 213 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11005,7 +11110,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -11022,7 +11127,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -11032,7 +11137,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 213 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11045,7 +11150,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#some (; 214 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11108,7 +11213,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 216 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11121,7 +11226,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 216 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 217 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11155,7 +11260,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -11172,7 +11277,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -11182,7 +11287,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 217 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 218 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11195,7 +11300,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#some (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#some (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11258,7 +11363,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 219 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 220 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11271,7 +11376,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 220 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 221 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11305,7 +11410,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -11322,7 +11427,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -11332,7 +11437,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 221 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 222 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11345,7 +11450,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#some (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11408,7 +11513,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 223 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 224 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11421,7 +11526,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 224 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 225 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11455,7 +11560,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -11472,7 +11577,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -11482,7 +11587,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 225 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 226 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11495,7 +11600,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#some (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#some (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11558,7 +11663,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 227 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 228 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11571,7 +11676,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 228 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 229 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11605,7 +11710,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -11622,7 +11727,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -11632,7 +11737,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 229 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 230 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11645,7 +11750,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#some (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11708,7 +11813,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 231 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 232 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11721,7 +11826,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 232 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 233 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11755,7 +11860,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -11772,7 +11877,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -11782,7 +11887,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 233 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 234 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11795,7 +11900,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#some (; 234 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11858,7 +11963,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 235 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 236 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11871,7 +11976,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 236 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 237 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11905,7 +12010,7 @@ if i32.const 0 i32.const 376 - i32.const 322 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -11922,7 +12027,7 @@ if i32.const 0 i32.const 376 - i32.const 324 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -11932,7 +12037,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 237 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11949,7 +12054,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#findIndex (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12012,7 +12117,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12029,7 +12134,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 240 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 241 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12063,7 +12168,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -12079,7 +12184,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -12089,7 +12194,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12104,7 +12209,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#findIndex (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12167,7 +12272,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12182,7 +12287,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 244 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 245 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12216,7 +12321,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -12232,7 +12337,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -12242,7 +12347,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12257,7 +12362,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12320,7 +12425,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 247 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12335,7 +12440,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 248 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 249 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12369,7 +12474,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -12385,7 +12490,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -12395,7 +12500,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12412,7 +12517,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#findIndex (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12475,7 +12580,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12492,7 +12597,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 252 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 253 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12526,7 +12631,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -12542,7 +12647,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -12552,7 +12657,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 254 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12567,7 +12672,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#findIndex (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12630,7 +12735,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 255 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 256 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12645,7 +12750,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 256 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 257 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12679,7 +12784,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -12695,7 +12800,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -12705,7 +12810,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 257 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 258 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12718,7 +12823,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#findIndex (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12781,7 +12886,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 259 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 260 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12794,7 +12899,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 260 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 261 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12828,7 +12933,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -12844,7 +12949,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -12854,7 +12959,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 261 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 262 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12867,7 +12972,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#findIndex (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#findIndex (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12930,7 +13035,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 263 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 264 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12943,7 +13048,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 264 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 265 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12977,7 +13082,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -12993,7 +13098,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -13003,7 +13108,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 265 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 266 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13016,7 +13121,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#findIndex (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13079,7 +13184,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 267 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 268 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13092,7 +13197,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 268 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 269 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13126,7 +13231,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -13142,7 +13247,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -13152,7 +13257,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 269 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 270 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13165,7 +13270,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#findIndex (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#findIndex (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13228,7 +13333,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 271 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 272 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13241,7 +13346,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 272 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 273 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13275,7 +13380,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -13291,7 +13396,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -13301,7 +13406,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 273 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 274 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13314,7 +13419,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#findIndex (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13377,7 +13482,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 275 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 276 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13390,7 +13495,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 276 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 277 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13424,7 +13529,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -13440,7 +13545,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -13450,7 +13555,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 277 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 278 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13463,7 +13568,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#findIndex (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13526,7 +13631,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 279 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 280 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13539,7 +13644,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 280 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 281 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13573,7 +13678,7 @@ if i32.const 0 i32.const 376 - i32.const 345 + i32.const 378 i32.const 2 call $~lib/builtins/abort unreachable @@ -13589,7 +13694,7 @@ if i32.const 0 i32.const 376 - i32.const 347 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -13599,7 +13704,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13618,7 +13723,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#every (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13684,7 +13789,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13701,7 +13806,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 284 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 285 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13735,7 +13840,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -13752,7 +13857,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -13762,7 +13867,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13779,7 +13884,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#every (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13845,7 +13950,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13860,7 +13965,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 288 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 289 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13894,7 +13999,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -13911,7 +14016,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -13921,7 +14026,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 289 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13938,7 +14043,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#every (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#every (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14004,7 +14109,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14019,7 +14124,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 292 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 293 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14053,7 +14158,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -14070,7 +14175,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -14080,7 +14185,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14099,7 +14204,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#every (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14165,7 +14270,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 295 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14182,7 +14287,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 296 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 297 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14216,7 +14321,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -14233,7 +14338,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -14243,7 +14348,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 297 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 298 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14260,7 +14365,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#every (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14326,7 +14431,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 299 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 300 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14341,7 +14446,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 300 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 301 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14375,7 +14480,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -14392,7 +14497,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -14402,7 +14507,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 301 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 302 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14417,7 +14522,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#every (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14483,7 +14588,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 303 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 304 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14496,7 +14601,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 304 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 305 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14530,7 +14635,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -14547,7 +14652,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -14557,7 +14662,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 305 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 306 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14572,7 +14677,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#every (; 306 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#every (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14638,7 +14743,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 307 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 308 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14651,7 +14756,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 308 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 309 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14685,7 +14790,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -14702,7 +14807,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -14712,7 +14817,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 309 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 310 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14727,7 +14832,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#every (; 310 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 311 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14793,7 +14898,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 311 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 312 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14806,7 +14911,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 312 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 313 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14840,7 +14945,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -14857,7 +14962,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -14867,7 +14972,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 313 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 314 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14882,7 +14987,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#every (; 314 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#every (; 315 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14948,7 +15053,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 315 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 316 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14961,7 +15066,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 316 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 317 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14995,7 +15100,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -15012,7 +15117,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -15022,12 +15127,12 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/number/isNaN (; 317 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/isNaN (; 318 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/math/NativeMathf.mod (; 318 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 319 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15274,7 +15379,7 @@ local.get $2 f32.reinterpret_i32 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 319 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 320 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15289,7 +15394,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#every (; 320 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 321 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15355,7 +15460,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 321 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 322 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15368,7 +15473,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 322 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 323 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15402,7 +15507,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -15419,7 +15524,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -15429,12 +15534,12 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/number/isNaN (; 323 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/isNaN (; 324 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/math/NativeMath.mod (; 324 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 325 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -15683,7 +15788,7 @@ local.get $2 f64.reinterpret_i64 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 325 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 326 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15698,7 +15803,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#every (; 326 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 327 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15764,7 +15869,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 327 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 328 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15777,7 +15882,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 328 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 329 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15811,7 +15916,7 @@ if i32.const 0 i32.const 376 - i32.const 368 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -15828,7 +15933,7 @@ if i32.const 0 i32.const 376 - i32.const 370 + i32.const 403 i32.const 2 call $~lib/builtins/abort unreachable @@ -15838,7 +15943,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 329 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 330 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15862,7 +15967,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -15874,7 +15979,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -15886,7 +15991,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -15898,7 +16003,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#forEach (; 330 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#forEach (; 331 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15947,7 +16052,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 331 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 332 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16000,7 +16105,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -16010,7 +16115,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 332 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 333 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16030,7 +16135,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -16042,7 +16147,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -16054,7 +16159,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -16066,7 +16171,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#forEach (; 333 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 334 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16115,7 +16220,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 334 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 335 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16162,7 +16267,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -16172,7 +16277,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 335 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 336 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16192,7 +16297,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -16204,7 +16309,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -16216,7 +16321,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -16228,7 +16333,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (; 336 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#forEach (; 337 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16277,7 +16382,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 337 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 338 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16324,7 +16429,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -16334,7 +16439,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 338 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 339 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16358,7 +16463,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -16370,7 +16475,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -16382,7 +16487,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -16394,7 +16499,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#forEach (; 339 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#forEach (; 340 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16443,7 +16548,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 340 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 341 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16496,7 +16601,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -16506,7 +16611,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 341 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 342 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16526,7 +16631,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -16538,7 +16643,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -16550,7 +16655,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -16562,7 +16667,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#forEach (; 342 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 343 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16611,7 +16716,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 343 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 344 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16658,7 +16763,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -16668,7 +16773,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 344 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 345 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16684,7 +16789,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -16696,7 +16801,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -16708,7 +16813,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -16720,7 +16825,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#forEach (; 345 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 346 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16769,7 +16874,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 346 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 347 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16810,7 +16915,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -16820,7 +16925,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 347 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 348 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16836,7 +16941,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -16848,7 +16953,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -16860,7 +16965,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -16872,7 +16977,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#forEach (; 348 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint32Array#forEach (; 349 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16921,7 +17026,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 349 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 350 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16962,7 +17067,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -16972,7 +17077,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 350 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 351 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16989,7 +17094,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -17001,7 +17106,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -17013,7 +17118,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -17025,7 +17130,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#forEach (; 351 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 352 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17074,7 +17179,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 352 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 353 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -17118,7 +17223,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -17128,7 +17233,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 353 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 354 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17145,7 +17250,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -17157,7 +17262,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -17169,7 +17274,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -17181,7 +17286,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#forEach (; 354 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint64Array#forEach (; 355 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17230,7 +17335,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 355 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 356 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -17274,7 +17379,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -17284,7 +17389,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 356 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 357 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17301,7 +17406,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -17313,7 +17418,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -17325,7 +17430,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -17337,7 +17442,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#forEach (; 357 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#forEach (; 358 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17386,7 +17491,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 358 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 359 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -17430,7 +17535,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -17440,7 +17545,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 359 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 360 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17457,7 +17562,7 @@ if i32.const 0 i32.const 376 - i32.const 397 + i32.const 430 i32.const 4 call $~lib/builtins/abort unreachable @@ -17469,7 +17574,7 @@ if i32.const 0 i32.const 376 - i32.const 398 + i32.const 431 i32.const 4 call $~lib/builtins/abort unreachable @@ -17481,7 +17586,7 @@ if i32.const 0 i32.const 376 - i32.const 399 + i32.const 432 i32.const 4 call $~lib/builtins/abort unreachable @@ -17493,7 +17598,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#forEach (; 360 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#forEach (; 361 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17542,7 +17647,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 361 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 362 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -17586,7 +17691,7 @@ if i32.const 0 i32.const 376 - i32.const 402 + i32.const 435 i32.const 2 call $~lib/builtins/abort unreachable @@ -17596,7 +17701,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reverse (; 362 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17660,7 +17765,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 363 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 364 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17755,7 +17860,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -17784,7 +17889,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -17798,7 +17903,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -17812,7 +17917,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -17826,7 +17931,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -17846,7 +17951,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reverse (; 364 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 365 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17910,7 +18015,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8Array#subarray (; 365 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 366 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -18031,7 +18136,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 366 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 367 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18120,7 +18225,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -18149,7 +18254,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -18163,7 +18268,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -18177,7 +18282,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -18191,7 +18296,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -18211,7 +18316,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (; 367 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reverse (; 368 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18275,7 +18380,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 368 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 369 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -18396,7 +18501,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 369 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 370 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18485,7 +18590,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -18514,7 +18619,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -18528,7 +18633,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -18542,7 +18647,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -18556,7 +18661,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -18576,7 +18681,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reverse (; 370 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18640,7 +18745,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int16Array#subarray (; 371 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 372 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -18761,7 +18866,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 372 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 373 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18856,7 +18961,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -18885,7 +18990,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -18899,7 +19004,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -18913,7 +19018,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -18927,7 +19032,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -18947,7 +19052,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#reverse (; 373 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -19011,7 +19116,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint16Array#subarray (; 374 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 375 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -19132,7 +19237,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 375 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 376 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19221,7 +19326,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -19250,7 +19355,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -19264,7 +19369,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -19278,7 +19383,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -19292,7 +19397,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -19312,7 +19417,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reverse (; 376 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 377 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -19376,7 +19481,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 377 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 378 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19459,7 +19564,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -19488,7 +19593,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -19502,7 +19607,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -19516,7 +19621,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -19530,7 +19635,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -19550,7 +19655,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#reverse (; 378 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reverse (; 379 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -19614,7 +19719,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint32Array#subarray (; 379 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 380 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -19735,7 +19840,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 380 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 381 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19818,7 +19923,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -19847,7 +19952,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -19861,7 +19966,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -19875,7 +19980,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -19889,7 +19994,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -19909,7 +20014,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reverse (; 381 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 382 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -19973,7 +20078,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int64Array#subarray (; 382 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 383 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -20094,7 +20199,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 383 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 384 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20180,7 +20285,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -20209,7 +20314,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -20223,7 +20328,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -20237,7 +20342,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -20251,7 +20356,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -20271,7 +20376,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#reverse (; 384 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#reverse (; 385 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -20335,7 +20440,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint64Array#subarray (; 385 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 386 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -20456,7 +20561,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 386 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 387 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20542,7 +20647,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -20571,7 +20676,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -20585,7 +20690,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -20599,7 +20704,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -20613,7 +20718,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -20633,7 +20738,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reverse (; 387 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 388 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -20697,7 +20802,7 @@ end local.get $1 ) - (func $~lib/typedarray/Float32Array#subarray (; 388 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 389 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -20818,7 +20923,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 389 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 390 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20904,7 +21009,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -20933,7 +21038,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -20947,7 +21052,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -20961,7 +21066,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -20975,7 +21080,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -20995,7 +21100,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reverse (; 390 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 391 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -21059,7 +21164,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 391 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 392 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21145,7 +21250,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 464 i32.const 4 call $~lib/builtins/abort unreachable @@ -21174,7 +21279,7 @@ if i32.const 0 i32.const 376 - i32.const 436 + i32.const 469 i32.const 2 call $~lib/builtins/abort unreachable @@ -21188,7 +21293,7 @@ if i32.const 0 i32.const 376 - i32.const 437 + i32.const 470 i32.const 2 call $~lib/builtins/abort unreachable @@ -21202,7 +21307,7 @@ if i32.const 0 i32.const 376 - i32.const 438 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -21216,7 +21321,7 @@ if i32.const 0 i32.const 376 - i32.const 439 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -21236,7 +21341,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#indexOf (; 392 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#indexOf (; 393 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -21336,7 +21441,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int8Array#lastIndexOf (; 393 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf (; 394 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -21432,7 +21537,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 394 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 395 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -21452,7 +21557,7 @@ local.get $2 call $~lib/typedarray/Int8Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 395 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 396 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21508,7 +21613,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -21523,7 +21628,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -21538,7 +21643,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -21553,7 +21658,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -21568,7 +21673,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -21583,7 +21688,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -21598,7 +21703,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -21613,7 +21718,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -21628,7 +21733,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -21645,7 +21750,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -21662,7 +21767,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -21679,7 +21784,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -21696,7 +21801,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -21711,7 +21816,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -21726,7 +21831,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -21741,7 +21846,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -21756,7 +21861,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -21771,7 +21876,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -21786,7 +21891,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -21806,7 +21911,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -21821,7 +21926,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -21836,7 +21941,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -21851,7 +21956,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -21866,7 +21971,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -21881,7 +21986,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -21896,7 +22001,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -21911,7 +22016,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -21925,7 +22030,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#indexOf (; 396 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#indexOf (; 397 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -22023,7 +22128,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8Array#lastIndexOf (; 397 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#lastIndexOf (; 398 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -22117,7 +22222,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8Array#lastIndexOf|trampoline (; 398 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#lastIndexOf|trampoline (; 399 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -22137,7 +22242,7 @@ local.get $2 call $~lib/typedarray/Uint8Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 399 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 400 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22191,7 +22296,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -22206,7 +22311,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -22221,7 +22326,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -22236,7 +22341,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -22251,7 +22356,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -22266,7 +22371,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -22281,7 +22386,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -22296,7 +22401,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -22311,7 +22416,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -22328,7 +22433,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -22345,7 +22450,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -22362,7 +22467,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -22379,7 +22484,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -22394,7 +22499,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -22409,7 +22514,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -22424,7 +22529,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -22439,7 +22544,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -22454,7 +22559,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -22469,7 +22574,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -22489,7 +22594,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -22504,7 +22609,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -22519,7 +22624,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -22534,7 +22639,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -22549,7 +22654,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -22564,7 +22669,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -22579,7 +22684,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -22594,7 +22699,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -22608,7 +22713,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#indexOf (; 400 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#indexOf (; 401 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -22706,7 +22811,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf (; 401 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf (; 402 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -22800,7 +22905,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf|trampoline (; 402 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf|trampoline (; 403 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -22820,7 +22925,7 @@ local.get $2 call $~lib/typedarray/Uint8ClampedArray#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 403 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 404 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22874,7 +22979,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -22889,7 +22994,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -22904,7 +23009,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -22919,7 +23024,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -22934,7 +23039,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -22949,7 +23054,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -22964,7 +23069,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -22979,7 +23084,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -22994,7 +23099,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -23011,7 +23116,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -23028,7 +23133,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -23045,7 +23150,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -23062,7 +23167,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -23077,7 +23182,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -23092,7 +23197,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -23107,7 +23212,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -23122,7 +23227,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -23137,7 +23242,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -23152,7 +23257,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -23172,7 +23277,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -23187,7 +23292,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -23202,7 +23307,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -23217,7 +23322,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -23232,7 +23337,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -23247,7 +23352,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -23262,7 +23367,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -23277,7 +23382,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -23291,7 +23396,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#indexOf (; 404 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#indexOf (; 405 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -23391,7 +23496,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int16Array#lastIndexOf (; 405 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf (; 406 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -23487,7 +23592,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 406 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 407 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -23507,7 +23612,7 @@ local.get $2 call $~lib/typedarray/Int16Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 407 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 408 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23563,7 +23668,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -23578,7 +23683,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -23593,7 +23698,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -23608,7 +23713,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -23623,7 +23728,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -23638,7 +23743,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -23653,7 +23758,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -23668,7 +23773,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -23683,7 +23788,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -23700,7 +23805,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -23717,7 +23822,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -23734,7 +23839,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -23751,7 +23856,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -23766,7 +23871,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -23781,7 +23886,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -23796,7 +23901,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -23811,7 +23916,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -23826,7 +23931,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -23841,7 +23946,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -23861,7 +23966,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -23876,7 +23981,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -23891,7 +23996,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -23906,7 +24011,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -23921,7 +24026,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -23936,7 +24041,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -23951,7 +24056,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -23966,7 +24071,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -23980,7 +24085,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#indexOf (; 408 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#indexOf (; 409 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24078,7 +24183,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint16Array#lastIndexOf (; 409 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#lastIndexOf (; 410 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24172,7 +24277,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint16Array#lastIndexOf|trampoline (; 410 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#lastIndexOf|trampoline (; 411 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -24192,7 +24297,7 @@ local.get $2 call $~lib/typedarray/Uint16Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 411 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 412 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24246,7 +24351,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -24261,7 +24366,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -24276,7 +24381,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -24291,7 +24396,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -24306,7 +24411,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -24321,7 +24426,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -24336,7 +24441,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -24351,7 +24456,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -24366,7 +24471,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -24383,7 +24488,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -24400,7 +24505,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -24417,7 +24522,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -24434,7 +24539,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -24449,7 +24554,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -24464,7 +24569,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -24479,7 +24584,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -24494,7 +24599,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -24509,7 +24614,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -24524,7 +24629,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -24544,7 +24649,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -24559,7 +24664,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -24574,7 +24679,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -24589,7 +24694,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -24604,7 +24709,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -24619,7 +24724,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -24634,7 +24739,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -24649,7 +24754,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -24663,7 +24768,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#indexOf (; 412 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#indexOf (; 413 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24759,7 +24864,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int32Array#lastIndexOf (; 413 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf (; 414 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24851,7 +24956,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 414 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 415 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -24871,7 +24976,7 @@ local.get $2 call $~lib/typedarray/Int32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 415 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 416 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24923,7 +25028,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -24938,7 +25043,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -24953,7 +25058,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -24968,7 +25073,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -24983,7 +25088,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -24998,7 +25103,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -25013,7 +25118,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -25028,7 +25133,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -25043,7 +25148,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -25060,7 +25165,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -25077,7 +25182,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -25094,7 +25199,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -25111,7 +25216,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -25126,7 +25231,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -25141,7 +25246,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -25156,7 +25261,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -25171,7 +25276,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -25186,7 +25291,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -25201,7 +25306,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -25221,7 +25326,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -25236,7 +25341,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -25251,7 +25356,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -25266,7 +25371,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -25281,7 +25386,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -25296,7 +25401,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -25311,7 +25416,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -25326,7 +25431,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -25340,7 +25445,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#indexOf (; 416 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#indexOf (; 417 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -25436,7 +25541,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint32Array#lastIndexOf (; 417 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#lastIndexOf (; 418 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -25528,7 +25633,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint32Array#lastIndexOf|trampoline (; 418 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#lastIndexOf|trampoline (; 419 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -25548,7 +25653,7 @@ local.get $2 call $~lib/typedarray/Uint32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 419 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 420 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25600,7 +25705,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -25615,7 +25720,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -25630,7 +25735,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -25645,7 +25750,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -25660,7 +25765,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -25675,7 +25780,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -25690,7 +25795,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -25705,7 +25810,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -25720,7 +25825,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -25737,7 +25842,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -25754,7 +25859,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -25771,7 +25876,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -25788,7 +25893,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -25803,7 +25908,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -25818,7 +25923,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -25833,7 +25938,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -25848,7 +25953,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -25863,7 +25968,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -25878,7 +25983,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -25898,7 +26003,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -25913,7 +26018,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -25928,7 +26033,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -25943,7 +26048,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -25958,7 +26063,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -25973,7 +26078,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -25988,7 +26093,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -26003,7 +26108,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -26017,7 +26122,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#indexOf (; 420 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#indexOf (; 421 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -26113,7 +26218,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int64Array#lastIndexOf (; 421 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf (; 422 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -26205,7 +26310,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 422 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 423 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -26225,7 +26330,7 @@ local.get $2 call $~lib/typedarray/Int64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 423 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 424 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -26278,7 +26383,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -26293,7 +26398,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -26308,7 +26413,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -26323,7 +26428,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -26338,7 +26443,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -26353,7 +26458,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -26368,7 +26473,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -26383,7 +26488,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -26398,7 +26503,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -26415,7 +26520,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -26432,7 +26537,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -26449,7 +26554,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -26466,7 +26571,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -26481,7 +26586,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -26496,7 +26601,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -26511,7 +26616,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -26526,7 +26631,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -26541,7 +26646,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -26556,7 +26661,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -26576,7 +26681,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -26591,7 +26696,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -26606,7 +26711,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -26621,7 +26726,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -26636,7 +26741,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -26651,7 +26756,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -26666,7 +26771,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -26681,7 +26786,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -26695,7 +26800,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#indexOf (; 424 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#indexOf (; 425 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -26791,7 +26896,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint64Array#lastIndexOf (; 425 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#lastIndexOf (; 426 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -26883,7 +26988,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint64Array#lastIndexOf|trampoline (; 426 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#lastIndexOf|trampoline (; 427 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -26903,7 +27008,7 @@ local.get $2 call $~lib/typedarray/Uint64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 427 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 428 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -26956,7 +27061,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -26971,7 +27076,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -26986,7 +27091,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -27001,7 +27106,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -27016,7 +27121,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -27031,7 +27136,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -27046,7 +27151,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -27061,7 +27166,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -27076,7 +27181,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -27093,7 +27198,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -27110,7 +27215,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -27127,7 +27232,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -27144,7 +27249,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -27159,7 +27264,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -27174,7 +27279,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -27189,7 +27294,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -27204,7 +27309,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -27219,7 +27324,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -27234,7 +27339,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -27254,7 +27359,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -27269,7 +27374,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -27284,7 +27389,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -27299,7 +27404,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -27314,7 +27419,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -27329,7 +27434,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -27344,7 +27449,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -27359,7 +27464,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -27373,7 +27478,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#indexOf (; 428 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#indexOf (; 429 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 f32) (local $5 i32) @@ -27469,7 +27574,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float32Array#lastIndexOf (; 429 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf (; 430 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 f32) (local $5 i32) @@ -27561,7 +27666,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 430 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 431 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -27581,7 +27686,7 @@ local.get $2 call $~lib/typedarray/Float32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 431 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 432 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -27634,7 +27739,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -27649,7 +27754,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -27664,7 +27769,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -27679,7 +27784,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -27694,7 +27799,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -27709,7 +27814,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -27724,7 +27829,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -27739,7 +27844,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -27754,7 +27859,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -27771,7 +27876,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -27788,7 +27893,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -27805,7 +27910,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -27822,7 +27927,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -27837,7 +27942,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -27852,7 +27957,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -27867,7 +27972,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -27882,7 +27987,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -27897,7 +28002,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -27912,7 +28017,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -27932,7 +28037,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -27947,7 +28052,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -27962,7 +28067,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -27977,7 +28082,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -27992,7 +28097,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -28007,7 +28112,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -28022,7 +28127,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -28037,7 +28142,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -28051,7 +28156,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#indexOf (; 432 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#indexOf (; 433 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -28147,7 +28252,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float64Array#lastIndexOf (; 433 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf (; 434 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -28239,7 +28344,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 434 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 435 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -28259,7 +28364,7 @@ local.get $2 call $~lib/typedarray/Float64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 435 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 436 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -28312,7 +28417,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -28327,7 +28432,7 @@ if i32.const 0 i32.const 376 - i32.const 465 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -28342,7 +28447,7 @@ if i32.const 0 i32.const 376 - i32.const 466 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -28357,7 +28462,7 @@ if i32.const 0 i32.const 376 - i32.const 467 + i32.const 500 i32.const 2 call $~lib/builtins/abort unreachable @@ -28372,7 +28477,7 @@ if i32.const 0 i32.const 376 - i32.const 468 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -28387,7 +28492,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 502 i32.const 2 call $~lib/builtins/abort unreachable @@ -28402,7 +28507,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 503 i32.const 2 call $~lib/builtins/abort unreachable @@ -28417,7 +28522,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 504 i32.const 2 call $~lib/builtins/abort unreachable @@ -28432,7 +28537,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 505 i32.const 2 call $~lib/builtins/abort unreachable @@ -28449,7 +28554,7 @@ if i32.const 0 i32.const 376 - i32.const 474 + i32.const 507 i32.const 2 call $~lib/builtins/abort unreachable @@ -28466,7 +28571,7 @@ if i32.const 0 i32.const 376 - i32.const 475 + i32.const 508 i32.const 2 call $~lib/builtins/abort unreachable @@ -28483,7 +28588,7 @@ if i32.const 0 i32.const 376 - i32.const 476 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -28500,7 +28605,7 @@ if i32.const 0 i32.const 376 - i32.const 477 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -28515,7 +28620,7 @@ if i32.const 0 i32.const 376 - i32.const 478 + i32.const 511 i32.const 2 call $~lib/builtins/abort unreachable @@ -28530,7 +28635,7 @@ if i32.const 0 i32.const 376 - i32.const 479 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -28545,7 +28650,7 @@ if i32.const 0 i32.const 376 - i32.const 480 + i32.const 513 i32.const 2 call $~lib/builtins/abort unreachable @@ -28560,7 +28665,7 @@ if i32.const 0 i32.const 376 - i32.const 481 + i32.const 514 i32.const 2 call $~lib/builtins/abort unreachable @@ -28575,7 +28680,7 @@ if i32.const 0 i32.const 376 - i32.const 482 + i32.const 515 i32.const 2 call $~lib/builtins/abort unreachable @@ -28590,7 +28695,7 @@ if i32.const 0 i32.const 376 - i32.const 483 + i32.const 516 i32.const 2 call $~lib/builtins/abort unreachable @@ -28610,7 +28715,7 @@ if i32.const 0 i32.const 376 - i32.const 487 + i32.const 520 i32.const 2 call $~lib/builtins/abort unreachable @@ -28625,7 +28730,7 @@ if i32.const 0 i32.const 376 - i32.const 488 + i32.const 521 i32.const 2 call $~lib/builtins/abort unreachable @@ -28640,7 +28745,7 @@ if i32.const 0 i32.const 376 - i32.const 489 + i32.const 522 i32.const 2 call $~lib/builtins/abort unreachable @@ -28655,7 +28760,7 @@ if i32.const 0 i32.const 376 - i32.const 490 + i32.const 523 i32.const 2 call $~lib/builtins/abort unreachable @@ -28670,7 +28775,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -28685,7 +28790,7 @@ if i32.const 0 i32.const 376 - i32.const 492 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -28700,7 +28805,7 @@ if i32.const 0 i32.const 376 - i32.const 493 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -28715,7 +28820,7 @@ if i32.const 0 i32.const 376 - i32.const 494 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -28729,18 +28834,18 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#get:buffer (; 436 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:buffer (; 437 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 437 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 438 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 438 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 439 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -28823,7 +28928,7 @@ local.get $7 call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int8Array.wrap (; 439 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array.wrap (; 440 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -28853,7 +28958,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -28875,7 +28980,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -28889,7 +28994,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -28911,7 +29016,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -28956,7 +29061,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int8Array.wrap|trampoline (; 440 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array.wrap|trampoline (; 441 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -28979,7 +29084,7 @@ local.get $2 call $~lib/typedarray/Int8Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 441 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 442 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -29072,7 +29177,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -29098,12 +29203,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#get:buffer (; 442 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:buffer (; 443 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint8Array.wrap (; 443 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap (; 444 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -29133,7 +29238,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -29155,7 +29260,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -29169,7 +29274,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -29191,7 +29296,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -29236,7 +29341,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint8Array.wrap|trampoline (; 444 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap|trampoline (; 445 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -29259,7 +29364,7 @@ local.get $2 call $~lib/typedarray/Uint8Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 445 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 446 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -29350,7 +29455,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -29376,12 +29481,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#get:buffer (; 446 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#get:buffer (; 447 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint8ClampedArray.wrap (; 447 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray.wrap (; 448 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -29411,7 +29516,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -29433,7 +29538,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -29447,7 +29552,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -29469,7 +29574,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -29514,7 +29619,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint8ClampedArray.wrap|trampoline (; 448 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray.wrap|trampoline (; 449 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -29537,7 +29642,7 @@ local.get $2 call $~lib/typedarray/Uint8ClampedArray.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 449 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 450 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -29628,7 +29733,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -29654,12 +29759,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#get:buffer (; 450 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#get:buffer (; 451 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int16Array.wrap (; 451 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array.wrap (; 452 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -29689,7 +29794,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -29711,7 +29816,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -29725,7 +29830,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -29747,7 +29852,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -29792,7 +29897,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int16Array.wrap|trampoline (; 452 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array.wrap|trampoline (; 453 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -29815,7 +29920,7 @@ local.get $2 call $~lib/typedarray/Int16Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 453 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 454 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -29908,7 +30013,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -29934,12 +30039,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#get:buffer (; 454 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#get:buffer (; 455 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint16Array.wrap (; 455 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array.wrap (; 456 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -29969,7 +30074,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -29991,7 +30096,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -30005,7 +30110,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -30027,7 +30132,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -30072,7 +30177,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint16Array.wrap|trampoline (; 456 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array.wrap|trampoline (; 457 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -30095,7 +30200,7 @@ local.get $2 call $~lib/typedarray/Uint16Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 457 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 458 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -30186,7 +30291,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -30212,12 +30317,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#get:buffer (; 458 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#get:buffer (; 459 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int32Array.wrap (; 459 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array.wrap (; 460 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -30247,7 +30352,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -30269,7 +30374,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -30283,7 +30388,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -30305,7 +30410,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -30350,7 +30455,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int32Array.wrap|trampoline (; 460 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array.wrap|trampoline (; 461 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -30373,7 +30478,7 @@ local.get $2 call $~lib/typedarray/Int32Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 461 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 462 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -30462,7 +30567,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -30488,12 +30593,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#get:buffer (; 462 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#get:buffer (; 463 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint32Array.wrap (; 463 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array.wrap (; 464 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -30523,7 +30628,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -30545,7 +30650,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -30559,7 +30664,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -30581,7 +30686,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -30626,7 +30731,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint32Array.wrap|trampoline (; 464 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array.wrap|trampoline (; 465 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -30649,7 +30754,7 @@ local.get $2 call $~lib/typedarray/Uint32Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 465 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 466 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -30738,7 +30843,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -30764,12 +30869,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#get:buffer (; 466 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#get:buffer (; 467 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int64Array.wrap (; 467 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array.wrap (; 468 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -30799,7 +30904,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -30821,7 +30926,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -30835,7 +30940,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -30857,7 +30962,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -30902,7 +31007,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int64Array.wrap|trampoline (; 468 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array.wrap|trampoline (; 469 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -30925,7 +31030,7 @@ local.get $2 call $~lib/typedarray/Int64Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 469 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 470 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -31015,7 +31120,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -31041,12 +31146,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#get:buffer (; 470 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#get:buffer (; 471 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint64Array.wrap (; 471 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array.wrap (; 472 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -31076,7 +31181,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -31098,7 +31203,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -31112,7 +31217,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -31134,7 +31239,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -31179,7 +31284,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint64Array.wrap|trampoline (; 472 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array.wrap|trampoline (; 473 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -31202,7 +31307,7 @@ local.get $2 call $~lib/typedarray/Uint64Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 473 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 474 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -31292,7 +31397,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -31318,12 +31423,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#get:buffer (; 474 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#get:buffer (; 475 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Float32Array.wrap (; 475 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array.wrap (; 476 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -31353,7 +31458,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -31375,7 +31480,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -31389,7 +31494,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -31411,7 +31516,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -31456,7 +31561,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Float32Array.wrap|trampoline (; 476 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array.wrap|trampoline (; 477 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -31479,7 +31584,7 @@ local.get $2 call $~lib/typedarray/Float32Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 477 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 478 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -31569,7 +31674,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -31595,12 +31700,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#get:buffer (; 478 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#get:buffer (; 479 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Float64Array.wrap (; 479 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array.wrap (; 480 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -31630,7 +31735,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1423 + i32.const 1487 i32.const 4 call $~lib/builtins/abort unreachable @@ -31652,7 +31757,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1430 + i32.const 1494 i32.const 8 call $~lib/builtins/abort unreachable @@ -31666,7 +31771,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1435 + i32.const 1499 i32.const 6 call $~lib/builtins/abort unreachable @@ -31688,7 +31793,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1441 + i32.const 1505 i32.const 4 call $~lib/builtins/abort unreachable @@ -31733,7 +31838,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Float64Array.wrap|trampoline (; 480 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array.wrap|trampoline (; 481 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -31756,7 +31861,7 @@ local.get $2 call $~lib/typedarray/Float64Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 481 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 482 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -31846,7 +31951,7 @@ if i32.const 0 i32.const 376 - i32.const 544 + i32.const 577 i32.const 4 call $~lib/builtins/abort unreachable @@ -31872,7 +31977,7 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $start:std/typedarray (; 482 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 483 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -32947,6 +33052,273 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.set $3 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.set $8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 249 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 250 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 251 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#slice + local.set $0 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 254 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 255 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 256 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 257 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 258 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#slice + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 261 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 262 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 263 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 264 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $4 + local.get $4 + local.get $3 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 267 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/typedarray/Int32Array#get:length + local.get $3 + call $~lib/typedarray/Int32Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 268 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 269 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 270 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> call $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> @@ -33058,7 +33430,7 @@ call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> ) - (func $start (; 483 ;) (type $FUNCSIG$v) + (func $start (; 484 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -33068,13 +33440,13 @@ end call $start:std/typedarray ) - (func $~lib/array/Array#__visit_impl (; 484 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 485 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 485 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 486 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/rt/pure/markGray (; 486 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 487 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -33101,7 +33473,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 487 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 488 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -33118,7 +33490,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 488 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 489 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -33155,7 +33527,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 489 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 490 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -33193,7 +33565,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__visit (; 490 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 491 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -33323,7 +33695,7 @@ end end ) - (func $~lib/rt/__visit_members (; 491 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 492 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break block $switch$1$default @@ -33363,6 +33735,6 @@ end return ) - (func $null (; 492 ;) (type $FUNCSIG$v) + (func $null (; 493 ;) (type $FUNCSIG$v) ) ) From 11cc59325e5bae30589cf4da9fdbfbe2e14b09b1 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Wed, 4 Sep 2019 14:27:50 -0400 Subject: [PATCH 14/24] Fix loader API to read memory - simplified testing - added test artifacts for future reference --- .gitignore | 1 - bindings/dist/transformerBundle.js | 2 +- bindings/src/index.ts | 2 +- package-lock.json | 23 +- tests/near-bindgen/.gitignore | 2 - tests/near-bindgen/out/assembly/hello/main.ts | 1080 + .../near-bindgen/out/assembly/hello/model.ts | 400 + tests/near-bindgen/out/assembly/main.ts | 64 + tests/near-bindgen/out/assembly/model.ts | 870 + tests/near-bindgen/out/assembly/test.ts | 344 + tests/near-bindgen/out/hello.wat | 33478 +++++++++++++++ tests/near-bindgen/out/test.wat | 35389 ++++++++++++++++ tests/near-bindgen/package-lock.json | 24 - tests/near-bindgen/package.json | 5 - tests/near-bindgen/test.js | 7 +- tests/near-bindgen/test.sh | 2 - 16 files changed, 71649 insertions(+), 44 deletions(-) delete mode 100644 tests/near-bindgen/.gitignore create mode 100644 tests/near-bindgen/out/assembly/hello/main.ts create mode 100644 tests/near-bindgen/out/assembly/hello/model.ts create mode 100644 tests/near-bindgen/out/assembly/main.ts create mode 100644 tests/near-bindgen/out/assembly/model.ts create mode 100644 tests/near-bindgen/out/assembly/test.ts create mode 100644 tests/near-bindgen/out/hello.wat create mode 100644 tests/near-bindgen/out/test.wat delete mode 100644 tests/near-bindgen/package-lock.json diff --git a/.gitignore b/.gitignore index 0f419db8d4..b220416840 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ npm-debug.* docs/ node_modules/ -out/ raw/ .history bindings/dist/transformerBundle\.js\.map diff --git a/bindings/dist/transformerBundle.js b/bindings/dist/transformerBundle.js index e0e5ee73e9..47220b9972 100644 --- a/bindings/dist/transformerBundle.js +++ b/bindings/dist/transformerBundle.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.transformer=t():e.transformer=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=6)}([function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]="SOURCE",e[e.NAMEDTYPE=1]="NAMEDTYPE",e[e.FUNCTIONTYPE=2]="FUNCTIONTYPE",e[e.TYPENAME=3]="TYPENAME",e[e.TYPEPARAMETER=4]="TYPEPARAMETER",e[e.PARAMETER=5]="PARAMETER",e[e.IDENTIFIER=6]="IDENTIFIER",e[e.ASSERTION=7]="ASSERTION",e[e.BINARY=8]="BINARY",e[e.CALL=9]="CALL",e[e.CLASS=10]="CLASS",e[e.COMMA=11]="COMMA",e[e.ELEMENTACCESS=12]="ELEMENTACCESS",e[e.FALSE=13]="FALSE",e[e.FUNCTION=14]="FUNCTION",e[e.INSTANCEOF=15]="INSTANCEOF",e[e.LITERAL=16]="LITERAL",e[e.NEW=17]="NEW",e[e.NULL=18]="NULL",e[e.PARENTHESIZED=19]="PARENTHESIZED",e[e.PROPERTYACCESS=20]="PROPERTYACCESS",e[e.TERNARY=21]="TERNARY",e[e.SUPER=22]="SUPER",e[e.THIS=23]="THIS",e[e.TRUE=24]="TRUE",e[e.CONSTRUCTOR=25]="CONSTRUCTOR",e[e.UNARYPOSTFIX=26]="UNARYPOSTFIX",e[e.UNARYPREFIX=27]="UNARYPREFIX",e[e.BLOCK=28]="BLOCK",e[e.BREAK=29]="BREAK",e[e.CONTINUE=30]="CONTINUE",e[e.DO=31]="DO",e[e.EMPTY=32]="EMPTY",e[e.EXPORT=33]="EXPORT",e[e.EXPORTDEFAULT=34]="EXPORTDEFAULT",e[e.EXPORTIMPORT=35]="EXPORTIMPORT",e[e.EXPRESSION=36]="EXPRESSION",e[e.FOR=37]="FOR",e[e.IF=38]="IF",e[e.IMPORT=39]="IMPORT",e[e.RETURN=40]="RETURN",e[e.SWITCH=41]="SWITCH",e[e.THROW=42]="THROW",e[e.TRY=43]="TRY",e[e.VARIABLE=44]="VARIABLE",e[e.VOID=45]="VOID",e[e.WHILE=46]="WHILE",e[e.CLASSDECLARATION=47]="CLASSDECLARATION",e[e.ENUMDECLARATION=48]="ENUMDECLARATION",e[e.ENUMVALUEDECLARATION=49]="ENUMVALUEDECLARATION",e[e.FIELDDECLARATION=50]="FIELDDECLARATION",e[e.FUNCTIONDECLARATION=51]="FUNCTIONDECLARATION",e[e.IMPORTDECLARATION=52]="IMPORTDECLARATION",e[e.INDEXSIGNATUREDECLARATION=53]="INDEXSIGNATUREDECLARATION",e[e.INTERFACEDECLARATION=54]="INTERFACEDECLARATION",e[e.METHODDECLARATION=55]="METHODDECLARATION",e[e.NAMESPACEDECLARATION=56]="NAMESPACEDECLARATION",e[e.TYPEDECLARATION=57]="TYPEDECLARATION",e[e.VARIABLEDECLARATION=58]="VARIABLEDECLARATION",e[e.DECORATOR=59]="DECORATOR",e[e.EXPORTMEMBER=60]="EXPORTMEMBER",e[e.SWITCHCASE=61]="SWITCHCASE",e[e.COMMENT=62]="COMMENT"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName("",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text="",t},e.createArrayLiteralExpression=function(e,t){var i=new S;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new R;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new b;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new I;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new Q;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(".")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new ge;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Se;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new Re;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new Ie;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new be;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]="DEFAULT",e[e.OPTIONAL=1]="OPTIONAL",e[e.REST=2]="REST"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if("builtin"==t)return E.BUILTIN;break;case 101:if("external"==t)return E.EXTERNAL;break;case 103:if("global"==t)return E.GLOBAL;break;case 105:if("inline"==t)return E.INLINE;break;case 108:if("lazy"==t)return E.LAZY;break;case 111:if("operator"==t)return E.OPERATOR;break;case 115:if("sealed"==t)return E.SEALED;break;case 117:if("unmanaged"==t)return E.UNMANAGED;if("unsafe"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),"operator"==t)switch(i.charCodeAt(0)){case 98:if("binary"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case"prefix":return E.OPERATOR_PREFIX;case"postfix":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]="CUSTOM",e[e.GLOBAL=1]="GLOBAL",e[e.OPERATOR=2]="OPERATOR",e[e.OPERATOR_BINARY=3]="OPERATOR_BINARY",e[e.OPERATOR_PREFIX=4]="OPERATOR_PREFIX",e[e.OPERATOR_POSTFIX=5]="OPERATOR_POSTFIX",e[e.UNMANAGED=6]="UNMANAGED",e[e.SEALED=7]="SEALED",e[e.INLINE=8]="INLINE",e[e.EXTERNAL=9]="EXTERNAL",e[e.BUILTIN=10]="BUILTIN",e[e.LAZY=11]="LAZY",e[e.UNSAFE=12]="UNSAFE"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]="LINE",e[e.TRIPLE=1]="TRIPLE",e[e.BLOCK=2]="BLOCK"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]="FLOAT",e[e.INTEGER=1]="INTEGER",e[e.STRING=2]="STRING",e[e.REGEXP=3]="REGEXP",e[e.ARRAY=4]="ARRAY",e[e.OBJECT=5]="OBJECT"}(N=t.LiteralKind||(t.LiteralKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=g;var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(g);t.ArrayLiteralExpression=S,function(e){e[e.PREFIX=0]="PREFIX",e[e.AS=1]="AS",e[e.NONNULL=2]="NONNULL"}(t.AssertionKind||(t.AssertionKind={}));var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=R;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=b;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,"typeArgumentsRange",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"argumentsRange",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=I;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text="constructor",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(g);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(g);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(I);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text="null",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(g);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(g);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(g);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text="super",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text="this",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text="true",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var Q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text="false",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=Q;var j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=j;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(j);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(j);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]="USER",e[e.USER_ENTRY=1]="USER_ENTRY",e[e.LIBRARY=2]="LIBRARY",e[e.LIBRARY_ENTRY=3]="LIBRARY_ENTRY"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=ge;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=Re;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=be;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=Ie;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i";case s.LESSTHAN_EQUALS:return"<=";case s.GREATERTHAN_EQUALS:return">=";case s.EQUALS_EQUALS:return"==";case s.EXCLAMATION_EQUALS:return"!=";case s.EQUALS_EQUALS_EQUALS:return"===";case s.EXCLAMATION_EQUALS_EQUALS:return"!==";case s.PLUS:return"+";case s.MINUS:return"-";case s.ASTERISK_ASTERISK:return"**";case s.ASTERISK:return"*";case s.SLASH:return"/";case s.PERCENT:return"%";case s.PLUS_PLUS:return"++";case s.MINUS_MINUS:return"--";case s.LESSTHAN_LESSTHAN:return"<<";case s.GREATERTHAN_GREATERTHAN:return">>";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case s.AMPERSAND:return"&";case s.BAR:return"|";case s.CARET:return"^";case s.EXCLAMATION:return"!";case s.TILDE:return"~";case s.AMPERSAND_AMPERSAND:return"&&";case s.BAR_BAR:return"||";case s.EQUALS:return"=";case s.PLUS_EQUALS:return"+=";case s.MINUS_EQUALS:return"-=";case s.ASTERISK_EQUALS:return"*=";case s.ASTERISK_ASTERISK_EQUALS:return"**=";case s.SLASH_EQUALS:return"/=";case s.PERCENT_EQUALS:return"%=";case s.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case s.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case s.AMPERSAND_EQUALS:return"&=";case s.BAR_EQUALS:return"|=";case s.CARET_EQUALS:return"^=";default:return assert(!1),""}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error("source mismatch");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.signature.parameters.length}function p(e){return e.text.includes("@nearfile")||l(e)}function h(e){return o.ASTBuilder.build(e)}function l(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function d(e){return!!(e.kind==s.NodeKind.NAMEDTYPE&&h(e).startsWith("Array")&&e.typeArguments&&e.typeArguments.length>0)}function E(e){return e.kind==s.NodeKind.CLASSDECLARATION}function f(e){return e.kind==s.NodeKind.FIELDDECLARATION}var A=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},t.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(p)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(h(e.name))||(this.generateHandler(e),this.exportedClasses.set(h(e.name),e))},t.prototype.visitFunctionDeclaration=function(t){!l(t)||this.wrappedFuncs.has(h(t.name))||!t.is(a.CommonFlags.EXPORT)||0==_(t)&&function(e){return"void"===h(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(_(t)>0&&this.generateArgsParser(t),this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(h(t.name)))},t.prototype.generateArgsParser=function(e){var t=this,i=e.signature,n=h(e.name),r=i.parameters.map(function(t){var i=h(t.name),n=t.type;return{name:i,type:n,isGeneric:null!=e.typeParameters&&e.typeParameters.some(function(e){return h(e)==h(n)})}});this.sb.push("\nexport class __near_ArgsParser_"+n+" extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_ArgsParser_"+n+">;\n handledRoot: boolean = false;"),r.length>0?(r.forEach(function(e){t.sb.push(" __near_param_"+e.name+": "+t.typeName(e.type)+";")}),this.generateHandlerMethods("this.__near_param_",r)):this.generateHandlerMethods("this.__near_param_",[]),this.sb.push("}")},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=h(n).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),s=h(n).includes("null"),a=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+a+"(): void {"),i.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n let handler = new __near_ArgsParser_"+a+"();\n handler.buffer = json;\n handler.decoder = new JSONDecoder<__near_ArgsParser_"+a+">(handler);\n handler.decoder.deserialize(json);"),"void"!==h(n)?this.sb.push(" let result: "+h(n)+" = "+a+"("):this.sb.push(" "+a+"("),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return"handler.__near_param_"+e.name.symbol}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==h(n)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+r+">() || isNullable<"+r+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+r+">(encoder, result"+(s?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+a+" as "+a+" }\n")},t.prototype.generateHandlerMethods=function(e,t){var i=this,n=function(e){return t.filter(function(t){return-1!=e.indexOf(i.typeName(t.type))||t.isGeneric})};this.generateBasicSetterHandlers(e,"Integer","i64",n(["i32","u32"])),this.generateBasicSetterHandlers(e,"String","string",n(["string","i64","u64","Uint8Array","u128"])),this.generateBasicSetterHandlers(e,"Boolean","bool",n(["bool"]));var r=t.filter(function(e){return t=e.type,!["i32","u32","bool","i64","u64","boolean"].includes(h(t))||e.isGeneric;var t});this.sb.push(" setNull(name: string): void {"),r.forEach(function(t){i.sb.push(' if (name == "'+t.name+'") {');var n=""+e+t.name+" = <"+i.typeName(t.type)+">null";t.isGeneric?i.sb.push(" if (isNullable<"+i.typeName(t.type)+">()){\n "+n+"\n return;\n }"):i.sb.push(" "+n+"\n return;"),i.sb.push(" }")}),this.sb.push("\n super.setNull(name);\n }"),this.sb.push("\n pushObject(name: string): bool {"),this.sb.push("if (!this.handledRoot) {\n assert(name == null || name.length == 0);\n this.handledRoot = true;\n return true;\n } else {\n assert(name != null || name.length != 0);\n }"),this.generatePushHandler(e,r.filter(function(e){return!d(e.type)})),this.sb.push("\n return super.pushObject(name);\n }"),this.sb.push("\n pushArray(name: string): bool {"),this.generatePushHandler(e,r.filter(function(e){return d(e.type)})),this.sb.push("\n return super.pushArray(name);\n }")},t.prototype.generateBasicSetterHandlers=function(e,t,i,n){var r=this;n.length>0&&(this.sb.push(" set"+t+"(name: string, value: "+i+"): void {"),n.forEach(function(i){var n=r.typeName(i.type);if("String"==t&&"string"!=n)if("Uint8Array"==n)r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = base64.decode(value);\n return;\n }");else if("u128"===n)r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = u128.fromString(value);\n return;\n }");else{var s="u64"===r.typeName(i.type)?"U64":"I64";r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = "+(i.isGeneric?"<"+h(i.type)+">":"")+s+".parseInt(value);\n return;\n }")}else r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = <"+n+">value;\n return;\n }");i.isGeneric&&r.sb.push(" assert(is"+t+"<"+n+'>(), "'+i.name+" is not a "+t+'")')}),this.sb.push(" super.set"+t+"(name, value);\n }"))},t.prototype.generatePushHandler=function(e,t){var i=this;t.forEach(function(t){if(!(i.typeName(t.type)in i.typeMapping)){var n=t.isGeneric?" && isReference<"+i.typeName(t.type)+">()":"";i.sb.push(' if (name == "'+t.name+'"'+n+") {\n "+e+t.name+" = decode<"+h(t.type)+">(this.buffer, this.decoder.state);\n return false;\n }")}})},t.prototype.generateHandler=function(e){if(!d(e)){var t=this.typeName(e);this.sb.push("export class __near_JSONHandler_"+t+" extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_JSONHandler_"+t+">;\n handledRoot: boolean = false;\n value: "+this.typeName(e)+";\n\n constructor(value_: "+this.typeName(e)+") {\n super();\n this.value = value_;\n }\n "),this.generateHandlerMethods("this.value.",this.getFields(e)),this.sb.push("}\n")}},t.prototype.typeName=function(e){if(!E(e))return o.ASTBuilder.build(e);var t=h((e=e).name);return e.isGeneric&&(t+="<"+e.typeParameters.map(h).join(", ")+">"),t},t.prototype.getFields=function(e){var t=E(e)?e:this.exportedClasses.get(h(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:h(e.name),type:e.type,isGeneric:v(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(E(e)){var n=e;if(i=i.slice(0,i.lastIndexOf("}")),n.members.filter(f).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var r=t.typeName(n);i+="\n static decode(json: Uint8Array, state: DecoderState | null = null): "+r+" {\n let value = instantiate<"+r+">(); // Allocate without constructor\n value.decode(json, state);\n return value;\n }\n\n decode(json: Uint8Array, state: DecoderState | null): "+r+" {\n let handler: __near_JSONHandler_"+r+" = new __near_JSONHandler_"+r+"(this);\n handler.buffer = json;\n let decoder = new JSONDecoder<__near_JSONHandler_"+r+'>(handler);\n handler.decoder = decoder;\n decoder.deserialize(json, state);\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+function(e){return e.members.filter(f).map(function(e){var t=h(e.type),i=h(e.name);return"encode<"+t+">(encoder, this."+i+', "'+i+'");'})}(n).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return i});return this.sb.concat(i).join("\n")},t}(u.BaseVisitor);function v(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return h(e.name)==h(t.type)})}t.afterParse=function(e,t,i){A.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf("\n")).includes("out");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=A.build(e,n);r&&t("out/"+n.normalizedPath,s,i),e.parseFile(s,(l(n)?"":"./")+n.normalizedPath,l(n))})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(t.Feature||(t.Feature={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(t.Target||(t.Target={}))},function(e,t,i){"use strict";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),""}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE="",t.COLOR_YELLOW="",t.COLOR_RED="",t.COLOR_RESET="",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace("{0}",n)),null!=s&&(o=o.replace("{1}",s)),null!=a&&(o=o.replace("{2}",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:"."}function a(e){var t=e.length;if(t<=1){if(0==t)return".";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return"."}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith("std/")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=" ",r=" ",s=" ";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){"use strict";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i")}e.isNullable&&n.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?"((":"(");var n=e.explicitThisType;n&&(i.push("this: "),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(", "),this.serializeParameter(r[0]);for(var a=1;a "),this.visitTypeNode(o)):i.push(") => void"),t&&i.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(" extends "),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push("="),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push("[");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(" as "),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(" "),t.push(a.operatorTokenToString(e.operator)),t.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push("<"),this.visitTypeNode(i[0]);for(var r=1;r(")}}else t.push("(");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push("\\0"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\b");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\t");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\n");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\v");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\f");break;case 13:s>n&&i.push(e.substring(n,s)),i.push("\\r"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push("\\'"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push("\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push("/"),t.push(e.pattern),t.push("/"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push("("),this.visitNode(e.expression),t.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(" ? "),this.visitNode(e.ifThen),t.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push("\n"):t.push(";\n")}else t.push(";\n")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push("{\n");for(var r=++this.indentLevel,a=0;a")}var _=e.extendsType;_&&(u.push(" extends "),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(" implements "),this.visitTypeNode(p[0]);for(a=1;a")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push("(");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push("this: "),this.visitTypeNode(_)),c){_&&t.push(", "),this.serializeParameter(u[0]);for(o=1;o "),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(" => "),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(")"):(t.push("): "),this.visitTypeNode(h)),p&&(t.push(" "),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push("if ("),this.visitNode(e.condition),t.push(") ");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(";\n");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(" else "):t.push("else "),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(" as "),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push("import ");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push("{\n");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o")}var u=e.extendsType;u&&(a.push(" extends "),this.visitTypeNode(u)),a.push(" {\n");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n")}}r.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push("!"),t&&(i.push(": "),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(" = "),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name="UnreachableError",r.prototype.message="unreachable",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name="AssertionError",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return"number"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return"object"==typeof e||"string"==typeof e},t.isFunction=function(e){return"function"==typeof e},t.isString=function(e){return"string"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return g}else{if(e<=-E)return S;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return A;if("number"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},R.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},R.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},R.getHighBits=function(){return this.high},R.getHighBitsUnsigned=function(){return this.high>>>0},R.getLowBits=function(){return this.low},R.getLowBitsUnsigned=function(){return this.low>>>0},R.getNumBitsAbs=function(){if(this.isNegative())return this.eq(S)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},R.isOdd=function(){return 1==(1&this.low)},R.isEven=function(){return 0==(1&this.low)},R.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},R.eq=R.equals,R.notEquals=function(e){return!this.eq(e)},R.neq=R.notEquals,R.ne=R.notEquals,R.lessThan=function(e){return this.comp(e)<0},R.lt=R.lessThan,R.lessThanOrEqual=function(e){return this.comp(e)<=0},R.lte=R.lessThanOrEqual,R.le=R.lessThanOrEqual,R.greaterThan=function(e){return this.comp(e)>0},R.gt=R.greaterThan,R.greaterThanOrEqual=function(e){return this.comp(e)>=0},R.gte=R.greaterThanOrEqual,R.ge=R.greaterThanOrEqual,R.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},R.comp=R.compare,R.negate=function(){return!this.unsigned&&this.eq(S)?S:this.not().add(m)},R.neg=R.negate,R.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},R.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},R.sub=R.subtract,R.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(S))return e.isOdd()?S:A;if(e.eq(S))return this.isOdd()?S:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},R.mul=R.multiply,R.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error("division by zero");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(S))return e.eq(m)||e.eq(N)?S:e.eq(S)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(S))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},R.div=R.divide,R.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},R.mod=R.modulo,R.rem=R.modulo,R.not=function(){return c(~this.low,~this.high,this.unsigned)},R.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},R.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},R.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},R.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},R.shr=R.shiftRight,R.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},R.shru=R.shiftRightUnsigned,R.shr_u=R.shiftRightUnsigned,R.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},R.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},R.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},R.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},R.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&"function"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preamble='import { storage, near, base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])}); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.transformer=t():e.transformer=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=6)}([function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]="SOURCE",e[e.NAMEDTYPE=1]="NAMEDTYPE",e[e.FUNCTIONTYPE=2]="FUNCTIONTYPE",e[e.TYPENAME=3]="TYPENAME",e[e.TYPEPARAMETER=4]="TYPEPARAMETER",e[e.PARAMETER=5]="PARAMETER",e[e.IDENTIFIER=6]="IDENTIFIER",e[e.ASSERTION=7]="ASSERTION",e[e.BINARY=8]="BINARY",e[e.CALL=9]="CALL",e[e.CLASS=10]="CLASS",e[e.COMMA=11]="COMMA",e[e.ELEMENTACCESS=12]="ELEMENTACCESS",e[e.FALSE=13]="FALSE",e[e.FUNCTION=14]="FUNCTION",e[e.INSTANCEOF=15]="INSTANCEOF",e[e.LITERAL=16]="LITERAL",e[e.NEW=17]="NEW",e[e.NULL=18]="NULL",e[e.PARENTHESIZED=19]="PARENTHESIZED",e[e.PROPERTYACCESS=20]="PROPERTYACCESS",e[e.TERNARY=21]="TERNARY",e[e.SUPER=22]="SUPER",e[e.THIS=23]="THIS",e[e.TRUE=24]="TRUE",e[e.CONSTRUCTOR=25]="CONSTRUCTOR",e[e.UNARYPOSTFIX=26]="UNARYPOSTFIX",e[e.UNARYPREFIX=27]="UNARYPREFIX",e[e.BLOCK=28]="BLOCK",e[e.BREAK=29]="BREAK",e[e.CONTINUE=30]="CONTINUE",e[e.DO=31]="DO",e[e.EMPTY=32]="EMPTY",e[e.EXPORT=33]="EXPORT",e[e.EXPORTDEFAULT=34]="EXPORTDEFAULT",e[e.EXPORTIMPORT=35]="EXPORTIMPORT",e[e.EXPRESSION=36]="EXPRESSION",e[e.FOR=37]="FOR",e[e.IF=38]="IF",e[e.IMPORT=39]="IMPORT",e[e.RETURN=40]="RETURN",e[e.SWITCH=41]="SWITCH",e[e.THROW=42]="THROW",e[e.TRY=43]="TRY",e[e.VARIABLE=44]="VARIABLE",e[e.VOID=45]="VOID",e[e.WHILE=46]="WHILE",e[e.CLASSDECLARATION=47]="CLASSDECLARATION",e[e.ENUMDECLARATION=48]="ENUMDECLARATION",e[e.ENUMVALUEDECLARATION=49]="ENUMVALUEDECLARATION",e[e.FIELDDECLARATION=50]="FIELDDECLARATION",e[e.FUNCTIONDECLARATION=51]="FUNCTIONDECLARATION",e[e.IMPORTDECLARATION=52]="IMPORTDECLARATION",e[e.INDEXSIGNATUREDECLARATION=53]="INDEXSIGNATUREDECLARATION",e[e.INTERFACEDECLARATION=54]="INTERFACEDECLARATION",e[e.METHODDECLARATION=55]="METHODDECLARATION",e[e.NAMESPACEDECLARATION=56]="NAMESPACEDECLARATION",e[e.TYPEDECLARATION=57]="TYPEDECLARATION",e[e.VARIABLEDECLARATION=58]="VARIABLEDECLARATION",e[e.DECORATOR=59]="DECORATOR",e[e.EXPORTMEMBER=60]="EXPORTMEMBER",e[e.SWITCHCASE=61]="SWITCHCASE",e[e.COMMENT=62]="COMMENT"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName("",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text="",t},e.createArrayLiteralExpression=function(e,t){var i=new S;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new R;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new b;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new I;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new Q;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(".")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new ge;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Se;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new Re;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new Ie;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new be;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]="DEFAULT",e[e.OPTIONAL=1]="OPTIONAL",e[e.REST=2]="REST"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if("builtin"==t)return E.BUILTIN;break;case 101:if("external"==t)return E.EXTERNAL;break;case 103:if("global"==t)return E.GLOBAL;break;case 105:if("inline"==t)return E.INLINE;break;case 108:if("lazy"==t)return E.LAZY;break;case 111:if("operator"==t)return E.OPERATOR;break;case 115:if("sealed"==t)return E.SEALED;break;case 117:if("unmanaged"==t)return E.UNMANAGED;if("unsafe"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),"operator"==t)switch(i.charCodeAt(0)){case 98:if("binary"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case"prefix":return E.OPERATOR_PREFIX;case"postfix":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]="CUSTOM",e[e.GLOBAL=1]="GLOBAL",e[e.OPERATOR=2]="OPERATOR",e[e.OPERATOR_BINARY=3]="OPERATOR_BINARY",e[e.OPERATOR_PREFIX=4]="OPERATOR_PREFIX",e[e.OPERATOR_POSTFIX=5]="OPERATOR_POSTFIX",e[e.UNMANAGED=6]="UNMANAGED",e[e.SEALED=7]="SEALED",e[e.INLINE=8]="INLINE",e[e.EXTERNAL=9]="EXTERNAL",e[e.BUILTIN=10]="BUILTIN",e[e.LAZY=11]="LAZY",e[e.UNSAFE=12]="UNSAFE"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]="LINE",e[e.TRIPLE=1]="TRIPLE",e[e.BLOCK=2]="BLOCK"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]="FLOAT",e[e.INTEGER=1]="INTEGER",e[e.STRING=2]="STRING",e[e.REGEXP=3]="REGEXP",e[e.ARRAY=4]="ARRAY",e[e.OBJECT=5]="OBJECT"}(N=t.LiteralKind||(t.LiteralKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=g;var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(g);t.ArrayLiteralExpression=S,function(e){e[e.PREFIX=0]="PREFIX",e[e.AS=1]="AS",e[e.NONNULL=2]="NONNULL"}(t.AssertionKind||(t.AssertionKind={}));var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=R;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=b;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,"typeArgumentsRange",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"argumentsRange",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=I;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text="constructor",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(g);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(g);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(I);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text="null",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(g);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(g);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(g);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text="super",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text="this",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text="true",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var Q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text="false",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=Q;var j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=j;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(j);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(j);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]="USER",e[e.USER_ENTRY=1]="USER_ENTRY",e[e.LIBRARY=2]="LIBRARY",e[e.LIBRARY_ENTRY=3]="LIBRARY_ENTRY"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=ge;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=Re;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=be;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=Ie;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i";case s.LESSTHAN_EQUALS:return"<=";case s.GREATERTHAN_EQUALS:return">=";case s.EQUALS_EQUALS:return"==";case s.EXCLAMATION_EQUALS:return"!=";case s.EQUALS_EQUALS_EQUALS:return"===";case s.EXCLAMATION_EQUALS_EQUALS:return"!==";case s.PLUS:return"+";case s.MINUS:return"-";case s.ASTERISK_ASTERISK:return"**";case s.ASTERISK:return"*";case s.SLASH:return"/";case s.PERCENT:return"%";case s.PLUS_PLUS:return"++";case s.MINUS_MINUS:return"--";case s.LESSTHAN_LESSTHAN:return"<<";case s.GREATERTHAN_GREATERTHAN:return">>";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case s.AMPERSAND:return"&";case s.BAR:return"|";case s.CARET:return"^";case s.EXCLAMATION:return"!";case s.TILDE:return"~";case s.AMPERSAND_AMPERSAND:return"&&";case s.BAR_BAR:return"||";case s.EQUALS:return"=";case s.PLUS_EQUALS:return"+=";case s.MINUS_EQUALS:return"-=";case s.ASTERISK_EQUALS:return"*=";case s.ASTERISK_ASTERISK_EQUALS:return"**=";case s.SLASH_EQUALS:return"/=";case s.PERCENT_EQUALS:return"%=";case s.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case s.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case s.AMPERSAND_EQUALS:return"&=";case s.BAR_EQUALS:return"|=";case s.CARET_EQUALS:return"^=";default:return assert(!1),""}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error("source mismatch");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.signature.parameters.length}function p(e){return e.text.includes("@nearfile")||l(e)}function h(e){return o.ASTBuilder.build(e)}function l(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function d(e){return!!(e.kind==s.NodeKind.NAMEDTYPE&&h(e).startsWith("Array")&&e.typeArguments&&e.typeArguments.length>0)}function E(e){return e.kind==s.NodeKind.CLASSDECLARATION}function f(e){return e.kind==s.NodeKind.FIELDDECLARATION}var A=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},t.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(p)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(h(e.name))||(this.generateHandler(e),this.exportedClasses.set(h(e.name),e))},t.prototype.visitFunctionDeclaration=function(t){!l(t)||this.wrappedFuncs.has(h(t.name))||!t.is(a.CommonFlags.EXPORT)||0==_(t)&&function(e){return"void"===h(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(_(t)>0&&this.generateArgsParser(t),this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(h(t.name)))},t.prototype.generateArgsParser=function(e){var t=this,i=e.signature,n=h(e.name),r=i.parameters.map(function(t){var i=h(t.name),n=t.type;return{name:i,type:n,isGeneric:null!=e.typeParameters&&e.typeParameters.some(function(e){return h(e)==h(n)})}});this.sb.push("\nclass __near_ArgsParser_"+n+" extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_ArgsParser_"+n+">;\n handledRoot: boolean = false;"),r.length>0?(r.forEach(function(e){t.sb.push(" __near_param_"+e.name+": "+t.typeName(e.type)+";")}),this.generateHandlerMethods("this.__near_param_",r)):this.generateHandlerMethods("this.__near_param_",[]),this.sb.push("}")},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=h(n).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),s=h(n).includes("null"),a=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+a+"(): void {"),i.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n let handler = new __near_ArgsParser_"+a+"();\n handler.buffer = json;\n handler.decoder = new JSONDecoder<__near_ArgsParser_"+a+">(handler);\n handler.decoder.deserialize(json);"),"void"!==h(n)?this.sb.push(" let result: "+h(n)+" = "+a+"("):this.sb.push(" "+a+"("),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return"handler.__near_param_"+e.name.symbol}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==h(n)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+r+">() || isNullable<"+r+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+r+">(encoder, result"+(s?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+a+" as "+a+" }\n")},t.prototype.generateHandlerMethods=function(e,t){var i=this,n=function(e){return t.filter(function(t){return-1!=e.indexOf(i.typeName(t.type))||t.isGeneric})};this.generateBasicSetterHandlers(e,"Integer","i64",n(["i32","u32"])),this.generateBasicSetterHandlers(e,"String","string",n(["string","i64","u64","Uint8Array","u128"])),this.generateBasicSetterHandlers(e,"Boolean","bool",n(["bool"]));var r=t.filter(function(e){return t=e.type,!["i32","u32","bool","i64","u64","boolean"].includes(h(t))||e.isGeneric;var t});this.sb.push(" setNull(name: string): void {"),r.forEach(function(t){i.sb.push(' if (name == "'+t.name+'") {');var n=""+e+t.name+" = <"+i.typeName(t.type)+">null";t.isGeneric?i.sb.push(" if (isNullable<"+i.typeName(t.type)+">()){\n "+n+"\n return;\n }"):i.sb.push(" "+n+"\n return;"),i.sb.push(" }")}),this.sb.push("\n super.setNull(name);\n }"),this.sb.push("\n pushObject(name: string): bool {"),this.sb.push("if (!this.handledRoot) {\n assert(name == null || name.length == 0);\n this.handledRoot = true;\n return true;\n } else {\n assert(name != null || name.length != 0);\n }"),this.generatePushHandler(e,r.filter(function(e){return!d(e.type)})),this.sb.push("\n return super.pushObject(name);\n }"),this.sb.push("\n pushArray(name: string): bool {"),this.generatePushHandler(e,r.filter(function(e){return d(e.type)})),this.sb.push("\n return super.pushArray(name);\n }")},t.prototype.generateBasicSetterHandlers=function(e,t,i,n){var r=this;n.length>0&&(this.sb.push(" set"+t+"(name: string, value: "+i+"): void {"),n.forEach(function(i){var n=r.typeName(i.type);if("String"==t&&"string"!=n)if("Uint8Array"==n)r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = base64.decode(value);\n return;\n }");else if("u128"===n)r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = u128.fromString(value);\n return;\n }");else{var s="u64"===r.typeName(i.type)?"U64":"I64";r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = "+(i.isGeneric?"<"+h(i.type)+">":"")+s+".parseInt(value);\n return;\n }")}else r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = <"+n+">value;\n return;\n }");i.isGeneric&&r.sb.push(" assert(is"+t+"<"+n+'>(), "'+i.name+" is not a "+t+'")')}),this.sb.push(" super.set"+t+"(name, value);\n }"))},t.prototype.generatePushHandler=function(e,t){var i=this;t.forEach(function(t){if(!(i.typeName(t.type)in i.typeMapping)){var n=t.isGeneric?" && isReference<"+i.typeName(t.type)+">()":"";i.sb.push(' if (name == "'+t.name+'"'+n+") {\n "+e+t.name+" = decode<"+h(t.type)+">(this.buffer, this.decoder.state);\n return false;\n }")}})},t.prototype.generateHandler=function(e){if(!d(e)){var t=this.typeName(e);this.sb.push("export class __near_JSONHandler_"+t+" extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_JSONHandler_"+t+">;\n handledRoot: boolean = false;\n value: "+this.typeName(e)+";\n\n constructor(value_: "+this.typeName(e)+") {\n super();\n this.value = value_;\n }\n "),this.generateHandlerMethods("this.value.",this.getFields(e)),this.sb.push("}\n")}},t.prototype.typeName=function(e){if(!E(e))return o.ASTBuilder.build(e);var t=h((e=e).name);return e.isGeneric&&(t+="<"+e.typeParameters.map(h).join(", ")+">"),t},t.prototype.getFields=function(e){var t=E(e)?e:this.exportedClasses.get(h(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:h(e.name),type:e.type,isGeneric:v(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(E(e)){var n=e;if(i=i.slice(0,i.lastIndexOf("}")),n.members.filter(f).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var r=t.typeName(n);i+="\n static decode(json: Uint8Array, state: DecoderState | null = null): "+r+" {\n let value = instantiate<"+r+">(); // Allocate without constructor\n value.decode(json, state);\n return value;\n }\n\n decode(json: Uint8Array, state: DecoderState | null): "+r+" {\n let handler: __near_JSONHandler_"+r+" = new __near_JSONHandler_"+r+"(this);\n handler.buffer = json;\n let decoder = new JSONDecoder<__near_JSONHandler_"+r+'>(handler);\n handler.decoder = decoder;\n decoder.deserialize(json, state);\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+function(e){return e.members.filter(f).map(function(e){var t=h(e.type),i=h(e.name);return"encode<"+t+">(encoder, this."+i+', "'+i+'");'})}(n).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return i});return this.sb.concat(i).join("\n")},t}(u.BaseVisitor);function v(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return h(e.name)==h(t.type)})}t.afterParse=function(e,t,i){A.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf("\n")).includes("out");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=A.build(e,n);r&&t("out/"+n.normalizedPath,s,i),e.parseFile(s,(l(n)?"":"./")+n.normalizedPath,l(n))})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(t.Feature||(t.Feature={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(t.Target||(t.Target={}))},function(e,t,i){"use strict";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),""}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE="",t.COLOR_YELLOW="",t.COLOR_RED="",t.COLOR_RESET="",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace("{0}",n)),null!=s&&(o=o.replace("{1}",s)),null!=a&&(o=o.replace("{2}",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:"."}function a(e){var t=e.length;if(t<=1){if(0==t)return".";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return"."}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith("std/")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=" ",r=" ",s=" ";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){"use strict";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i")}e.isNullable&&n.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?"((":"(");var n=e.explicitThisType;n&&(i.push("this: "),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(", "),this.serializeParameter(r[0]);for(var a=1;a "),this.visitTypeNode(o)):i.push(") => void"),t&&i.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(" extends "),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push("="),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push("[");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(" as "),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(" "),t.push(a.operatorTokenToString(e.operator)),t.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push("<"),this.visitTypeNode(i[0]);for(var r=1;r(")}}else t.push("(");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push("\\0"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\b");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\t");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\n");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\v");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\f");break;case 13:s>n&&i.push(e.substring(n,s)),i.push("\\r"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push("\\'"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push("\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push("/"),t.push(e.pattern),t.push("/"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push("("),this.visitNode(e.expression),t.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(" ? "),this.visitNode(e.ifThen),t.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push("\n"):t.push(";\n")}else t.push(";\n")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push("{\n");for(var r=++this.indentLevel,a=0;a")}var _=e.extendsType;_&&(u.push(" extends "),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(" implements "),this.visitTypeNode(p[0]);for(a=1;a")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push("(");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push("this: "),this.visitTypeNode(_)),c){_&&t.push(", "),this.serializeParameter(u[0]);for(o=1;o "),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(" => "),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(")"):(t.push("): "),this.visitTypeNode(h)),p&&(t.push(" "),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push("if ("),this.visitNode(e.condition),t.push(") ");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(";\n");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(" else "):t.push("else "),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(" as "),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push("import ");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push("{\n");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o")}var u=e.extendsType;u&&(a.push(" extends "),this.visitTypeNode(u)),a.push(" {\n");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n")}}r.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push("!"),t&&(i.push(": "),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(" = "),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name="UnreachableError",r.prototype.message="unreachable",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name="AssertionError",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return"number"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return"object"==typeof e||"string"==typeof e},t.isFunction=function(e){return"function"==typeof e},t.isString=function(e){return"string"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return g}else{if(e<=-E)return S;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return A;if("number"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},R.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},R.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},R.getHighBits=function(){return this.high},R.getHighBitsUnsigned=function(){return this.high>>>0},R.getLowBits=function(){return this.low},R.getLowBitsUnsigned=function(){return this.low>>>0},R.getNumBitsAbs=function(){if(this.isNegative())return this.eq(S)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},R.isOdd=function(){return 1==(1&this.low)},R.isEven=function(){return 0==(1&this.low)},R.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},R.eq=R.equals,R.notEquals=function(e){return!this.eq(e)},R.neq=R.notEquals,R.ne=R.notEquals,R.lessThan=function(e){return this.comp(e)<0},R.lt=R.lessThan,R.lessThanOrEqual=function(e){return this.comp(e)<=0},R.lte=R.lessThanOrEqual,R.le=R.lessThanOrEqual,R.greaterThan=function(e){return this.comp(e)>0},R.gt=R.greaterThan,R.greaterThanOrEqual=function(e){return this.comp(e)>=0},R.gte=R.greaterThanOrEqual,R.ge=R.greaterThanOrEqual,R.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},R.comp=R.compare,R.negate=function(){return!this.unsigned&&this.eq(S)?S:this.not().add(m)},R.neg=R.negate,R.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},R.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},R.sub=R.subtract,R.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(S))return e.isOdd()?S:A;if(e.eq(S))return this.isOdd()?S:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},R.mul=R.multiply,R.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error("division by zero");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(S))return e.eq(m)||e.eq(N)?S:e.eq(S)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(S))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},R.div=R.divide,R.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},R.mod=R.modulo,R.rem=R.modulo,R.not=function(){return c(~this.low,~this.high,this.unsigned)},R.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},R.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},R.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},R.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},R.shr=R.shiftRight,R.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},R.shru=R.shiftRightUnsigned,R.shr_u=R.shiftRightUnsigned,R.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},R.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},R.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},R.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},R.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&"function"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preamble='import { storage, near, base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])}); \ No newline at end of file diff --git a/bindings/src/index.ts b/bindings/src/index.ts index dfb5622159..61814544b3 100644 --- a/bindings/src/index.ts +++ b/bindings/src/index.ts @@ -143,7 +143,7 @@ class NEARBindingsBuilder extends BaseVisitor { }); this.sb.push(` -export class __near_ArgsParser_${name} extends ThrowingJSONHandler { +class __near_ArgsParser_${name} extends ThrowingJSONHandler { buffer: Uint8Array; decoder: JSONDecoder<__near_ArgsParser_${name}>; handledRoot: boolean = false;`); diff --git a/package-lock.json b/package-lock.json index a05f0f387f..2f8a79711d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "assemblyscript", - "version": "0.7.0-near-preview1", + "version": "0.7.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -347,8 +347,8 @@ } }, "assemblyscript-json": { - "version": "github:WebAssemblyOS/assemblyscript-json#55df056d95ec4142be58d4ad23040d1ca3b26859", - "from": "github:WebAssemblyOS/assemblyscript-json#near_dist", + "version": "github:nearprotocol/assemblyscript-json#a1bbb9f7f008799b3c335411c8e3d1bdf1eb8d42", + "from": "github:nearprotocol/assemblyscript-json", "dev": true }, "assert": { @@ -2771,9 +2771,20 @@ } }, "near-runtime-ts": { - "version": "github:nearprotocol/near-runtime-ts#8f36ff810775cc65bf12a126bfcf66b2cd531f66", - "from": "github:nearprotocol/near-runtime-ts#staging", - "dev": true + "version": "github:nearprotocol/near-runtime-ts#91e78dc989cecd2a291294505056d7bb4d23aa7c", + "from": "github:nearprotocol/near-runtime-ts", + "dev": true, + "requires": { + "assemblyscript-json": "github:nearprotocol/assemblyscript-json", + "bignum": "github:MaxGraey/bignum.wasm" + }, + "dependencies": { + "bignum": { + "version": "github:MaxGraey/bignum.wasm#0d08196706b6ac53975bacd43710baee62470e1d", + "from": "github:MaxGraey/bignum.wasm", + "dev": true + } + } }, "neo-async": { "version": "2.6.1", diff --git a/tests/near-bindgen/.gitignore b/tests/near-bindgen/.gitignore deleted file mode 100644 index 9d69880694..0000000000 --- a/tests/near-bindgen/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -json -bignum diff --git a/tests/near-bindgen/out/assembly/hello/main.ts b/tests/near-bindgen/out/assembly/hello/main.ts new file mode 100644 index 0000000000..defec282ab --- /dev/null +++ b/tests/near-bindgen/out/assembly/hello/main.ts @@ -0,0 +1,1080 @@ +import { storage, near, base64 } from "near-runtime-ts"; +import { JSONEncoder } from "assemblyscript-json"; +import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; + + +class __near_ArgsParser_hello extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_hello>; + handledRoot: boolean = false; + __near_param_name: string; + setString(name: string, value: string): void { + if (name == "name") { + this.__near_param_name = value; + return; + } + super.setString(name, value); + } + setNull(name: string): void { + if (name == "name") { + this.__near_param_name = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_hello(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_hello(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_hello>(handler); + handler.decoder.deserialize(json); + let result: string = hello(handler.__near_param_name); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_hello as hello } + + +class __near_ArgsParser_setKeyValue extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_setKeyValue>; + handledRoot: boolean = false; + __near_param_key: string; + __near_param_value: string; + setString(name: string, value: string): void { + if (name == "key") { + this.__near_param_key = value; + return; + } + if (name == "value") { + this.__near_param_value = value; + return; + } + super.setString(name, value); + } + setNull(name: string): void { + if (name == "key") { + this.__near_param_key = null + return; + } + if (name == "value") { + this.__near_param_value = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_setKeyValue(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_setKeyValue(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_setKeyValue>(handler); + handler.decoder.deserialize(json); + setKeyValue(handler.__near_param_key, handler.__near_param_value); +} + +export { __wrapper_setKeyValue as setKeyValue } + + +class __near_ArgsParser_getValueByKey extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_getValueByKey>; + handledRoot: boolean = false; + __near_param_key: string; + setString(name: string, value: string): void { + if (name == "key") { + this.__near_param_key = value; + return; + } + super.setString(name, value); + } + setNull(name: string): void { + if (name == "key") { + this.__near_param_key = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_getValueByKey(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_getValueByKey(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_getValueByKey>(handler); + handler.decoder.deserialize(json); + let result: string = getValueByKey(handler.__near_param_key); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_getValueByKey as getValueByKey } + + +class __near_ArgsParser_setValue extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_setValue>; + handledRoot: boolean = false; + __near_param_value: string; + setString(name: string, value: string): void { + if (name == "value") { + this.__near_param_value = value; + return; + } + super.setString(name, value); + } + setNull(name: string): void { + if (name == "value") { + this.__near_param_value = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_setValue(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_setValue(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_setValue>(handler); + handler.decoder.deserialize(json); + let result: string = setValue(handler.__near_param_value); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_setValue as setValue } + + +//@ts-ignore +function __wrapper_getValue(): void { + let result: string = getValue(); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_getValue as getValue } + + +//@ts-ignore +function __wrapper_getAllKeys(): void { + let result: Array = getAllKeys(); + + let encoder = new JSONEncoder(); + if ((isString>() || isNullable>()) && result == null) { + encoder.setNull(null); + } else { + encode>(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_getAllKeys as getAllKeys } + + +//@ts-ignore +function __wrapper_benchmark(): void { + let result: Array = benchmark(); + + let encoder = new JSONEncoder(); + if ((isString>() || isNullable>()) && result == null) { + encoder.setNull(null); + } else { + encode>(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_benchmark as benchmark } + + +class __near_ArgsParser_benchmark_storage extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_benchmark_storage>; + handledRoot: boolean = false; + __near_param_n: i32; + setInteger(name: string, value: i64): void { + if (name == "n") { + this.__near_param_n = value; + return; + } + super.setInteger(name, value); + } + setNull(name: string): void { + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_benchmark_storage(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_benchmark_storage(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_benchmark_storage>(handler); + handler.decoder.deserialize(json); + let result: string = benchmark_storage(handler.__near_param_n); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_benchmark_storage as benchmark_storage } + + +class __near_ArgsParser_limited_storage extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_limited_storage>; + handledRoot: boolean = false; + __near_param_max_storage: u64; + setString(name: string, value: string): void { + if (name == "max_storage") { + this.__near_param_max_storage = U64.parseInt(value); + return; + } + super.setString(name, value); + } + setNull(name: string): void { + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_limited_storage(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_limited_storage(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_limited_storage>(handler); + handler.decoder.deserialize(json); + let result: string = limited_storage(handler.__near_param_max_storage); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_limited_storage as limited_storage } + + +class __near_ArgsParser_benchmark_sum_n extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_benchmark_sum_n>; + handledRoot: boolean = false; + __near_param_n: i32; + setInteger(name: string, value: i64): void { + if (name == "n") { + this.__near_param_n = value; + return; + } + super.setInteger(name, value); + } + setNull(name: string): void { + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_benchmark_sum_n(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_benchmark_sum_n(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_benchmark_sum_n>(handler); + handler.decoder.deserialize(json); + let result: string = benchmark_sum_n(handler.__near_param_n); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_benchmark_sum_n as benchmark_sum_n } + + +//@ts-ignore +function __wrapper_returnHiWithLogs(): void { + let result: string = returnHiWithLogs(); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_returnHiWithLogs as returnHiWithLogs } + + +class __near_ArgsParser_testSetRemove extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_testSetRemove>; + handledRoot: boolean = false; + __near_param_value: string; + setString(name: string, value: string): void { + if (name == "value") { + this.__near_param_value = value; + return; + } + super.setString(name, value); + } + setNull(name: string): void { + if (name == "value") { + this.__near_param_value = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_testSetRemove(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_testSetRemove(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_testSetRemove>(handler); + handler.decoder.deserialize(json); + testSetRemove(handler.__near_param_value); +} + +export { __wrapper_testSetRemove as testSetRemove } + + +class __near_ArgsParser_insertStrings extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_insertStrings>; + handledRoot: boolean = false; + __near_param_from: i32; + __near_param_to: i32; + setInteger(name: string, value: i64): void { + if (name == "from") { + this.__near_param_from = value; + return; + } + if (name == "to") { + this.__near_param_to = value; + return; + } + super.setInteger(name, value); + } + setNull(name: string): void { + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_insertStrings(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_insertStrings(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_insertStrings>(handler); + handler.decoder.deserialize(json); + insertStrings(handler.__near_param_from, handler.__near_param_to); +} + +export { __wrapper_insertStrings as insertStrings } + + +class __near_ArgsParser_deleteStrings extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_deleteStrings>; + handledRoot: boolean = false; + __near_param_from: i32; + __near_param_to: i32; + setInteger(name: string, value: i64): void { + if (name == "from") { + this.__near_param_from = value; + return; + } + if (name == "to") { + this.__near_param_to = value; + return; + } + super.setInteger(name, value); + } + setNull(name: string): void { + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_deleteStrings(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_deleteStrings(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_deleteStrings>(handler); + handler.decoder.deserialize(json); + deleteStrings(handler.__near_param_from, handler.__near_param_to); +} + +export { __wrapper_deleteStrings as deleteStrings } + + +class __near_ArgsParser_recurse extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_recurse>; + handledRoot: boolean = false; + __near_param_n: i32; + setInteger(name: string, value: i64): void { + if (name == "n") { + this.__near_param_n = value; + return; + } + super.setInteger(name, value); + } + setNull(name: string): void { + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_recurse(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_recurse(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_recurse>(handler); + handler.decoder.deserialize(json); + let result: i32 = recurse(handler.__near_param_n); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_recurse as recurse } + + +class __near_ArgsParser_callPromise extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_callPromise>; + handledRoot: boolean = false; + __near_param_args: PromiseArgs; + setNull(name: string): void { + if (name == "args") { + this.__near_param_args = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "args") { + this.__near_param_args = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_callPromise(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_callPromise(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_callPromise>(handler); + handler.decoder.deserialize(json); + callPromise(handler.__near_param_args); +} + +export { __wrapper_callPromise as callPromise } + + +class __near_ArgsParser_callbackWithName extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_callbackWithName>; + handledRoot: boolean = false; + __near_param_args: PromiseArgs; + setNull(name: string): void { + if (name == "args") { + this.__near_param_args = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "args") { + this.__near_param_args = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_callbackWithName(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_callbackWithName(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_callbackWithName>(handler); + handler.decoder.deserialize(json); + let result: MyCallbackResult = callbackWithName(handler.__near_param_args); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_callbackWithName as callbackWithName } + + +//@ts-ignore +function __wrapper_getLastResult(): void { + let result: MyCallbackResult = getLastResult(); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_getLastResult as getLastResult } + +import { + context, + storage, + ContractPromise, + near, + logging +} from "near-runtime-ts" +import { + PromiseArgs, + InputPromiseArgs, + MyCallbackResult, + MyContractPromiseResult +} from "./model" +import { + u128 +} from "bignum" +function hello(name: string): string { + return "hello " + name; +} +function setKeyValue(key: string, value: string): void { + storage.setString(key, value); +} +function getValueByKey(key: string): string { + return storage.getString(key)!; +} +function setValue(value: string): string { + storage.setString("name", value); + return value; +} +function getValue(): string { + return storage.getString("name")!; +} +function getAllKeys(): Array { + let keys = storage.keys("n"); + assert(keys.length == 1); + assert(keys[0] == "name"); + return keys; +} +function benchmark(): Array { + let i = 0; + while (i < 10) { + storage.setString(i.toString(), "123123"); + i += 1; + } + return storage.keys(""); +} +function benchmark_storage(n: i32): string { + let i = 0; + while (i < n) { + storage.setString(i.toString(), i.toString()); + i += 1; + } + i = 0; + let sum: u64 = 0; + while (i < n) { + let item = I32.parseInt(storage.getString(i.toString())); + sum += item; + i += 1; + } + return sum.toString(); +} +function limited_storage(max_storage: u64): string { + let i = 0; + while (context.storageUsage <= max_storage) { + i += 1; + storage.setString(i.toString(), i.toString()); + } + if (context.storageUsage > max_storage) { + storage.delete(i.toString()); + } + return i.toString(); +} +function benchmark_sum_n(n: i32): string { + let i = 0; + let sum: u64 = 0; + while (i < n) { + sum += i; + i += 1; + } + return sum.toString(); +} +export function generateLogs(): void { + storage.setString("item", "value"); + logging.log("log1"); + logging.log("log2"); +} +function returnHiWithLogs(): string { + logging.log("loooog1"); + logging.log("loooog2"); + return "Hi"; +} +export function triggerAssert(): void { + logging.log("log before assert"); + assert(false, "expected to fail"); +} +function testSetRemove(value: string): void { + storage.setString("test", value); + storage.delete("test"); + assert(storage.getString("test") == null, "Item must be empty"); +} +function buildString(n: i32): string { + assert(n >= 0); + let result = ""; + for (let i = 20; i >= 0; --i) { + result = result + result; + if ((n >> i) & 1) { + result += "a"; + } + } + return result; +} +function insertStrings(from: i32, to: i32): void { + let str = buildString(to); + for (let i = from; i < to; i++) { + storage.setString(str.substr(to - i) + "b", "x"); + } +} +function deleteStrings(from: i32, to: i32): void { + let str = buildString(to); + for (let i = to - 1; i >= from; i--) { + storage.delete(str.substr(to - i) + "b"); + } +} +function recurse(n: i32): i32 { + if (n <= 0) { + return n; + } + return recurse(n - 1) + 1; +} +function callPromise(args: PromiseArgs): void { + let inputArgs: InputPromiseArgs = { + args: args.args + }; + let balance = args.balance as u64; + let promise = ContractPromise.create(args.receiver, args.methodName, inputArgs.encode().serialize(), args.gas, new u128(args.balance)); + if (args.callback) { + inputArgs.args = args.callbackArgs; + let callbackBalance = args.callbackBalance as u64; + promise = promise.then(context.contractName, args.callback, inputArgs.encode().serialize(), args.callbackGas, new u128(callbackBalance)); + } + promise.returnAsResult(); +} +function callbackWithName(args: PromiseArgs): MyCallbackResult { + let contractResults = ContractPromise.getResults(); + let allRes = Array.create(contractResults.length); + for (let i = 0; i < contractResults.length; ++i) { + allRes[i] = new MyContractPromiseResult(); + allRes[i].ok = (contractResults[i].status == 1); + if (allRes[i].ok && contractResults[i].buffer != null && contractResults[i].buffer.length > 0) { + allRes[i].r = MyCallbackResult.decode(contractResults[i].buffer); + } + } + let result: MyCallbackResult = { + rs: allRes, + n: context.contractName + }; + let bytes = result.encode().serialize(); + storage.setBytes("lastResult", bytes); + return result; +} +function getLastResult(): MyCallbackResult { + return MyCallbackResult.decode(storage.getBytes("lastResult")); +} \ No newline at end of file diff --git a/tests/near-bindgen/out/assembly/hello/model.ts b/tests/near-bindgen/out/assembly/hello/model.ts new file mode 100644 index 0000000000..8c1f750b9c --- /dev/null +++ b/tests/near-bindgen/out/assembly/hello/model.ts @@ -0,0 +1,400 @@ +import { storage, near, base64 } from "near-runtime-ts"; +import { JSONEncoder } from "assemblyscript-json"; +import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; + +export class __near_JSONHandler_PromiseArgs extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_PromiseArgs>; + handledRoot: boolean = false; + value: PromiseArgs; + + constructor(value_: PromiseArgs) { + super(); + this.value = value_; + } + + setInteger(name: string, value: i64): void { + if (name == "gas") { + this.value.gas = value; + return; + } + if (name == "balance") { + this.value.balance = value; + return; + } + if (name == "callbackBalance") { + this.value.callbackBalance = value; + return; + } + if (name == "callbackGas") { + this.value.callbackGas = value; + return; + } + super.setInteger(name, value); + } + setString(name: string, value: string): void { + if (name == "receiver") { + this.value.receiver = value; + return; + } + if (name == "methodName") { + this.value.methodName = value; + return; + } + if (name == "callback") { + this.value.callback = value; + return; + } + super.setString(name, value); + } + setNull(name: string): void { + if (name == "receiver") { + this.value.receiver = null + return; + } + if (name == "methodName") { + this.value.methodName = null + return; + } + if (name == "args") { + this.value.args = null + return; + } + if (name == "callback") { + this.value.callback = null + return; + } + if (name == "callbackArgs") { + this.value.callbackArgs = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "args") { + this.value.args = decode(this.buffer, this.decoder.state); + return false; + } + if (name == "callbackArgs") { + this.value.callbackArgs = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +export class __near_JSONHandler_InputPromiseArgs extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_InputPromiseArgs>; + handledRoot: boolean = false; + value: InputPromiseArgs; + + constructor(value_: InputPromiseArgs) { + super(); + this.value = value_; + } + + setNull(name: string): void { + if (name == "args") { + this.value.args = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "args") { + this.value.args = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +export class __near_JSONHandler_MyContractPromiseResult extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_MyContractPromiseResult>; + handledRoot: boolean = false; + value: MyContractPromiseResult; + + constructor(value_: MyContractPromiseResult) { + super(); + this.value = value_; + } + + setBoolean(name: string, value: bool): void { + if (name == "ok") { + this.value.ok = value; + return; + } + super.setBoolean(name, value); + } + setNull(name: string): void { + if (name == "r") { + this.value.r = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "r") { + this.value.r = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +export class __near_JSONHandler_MyCallbackResult extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_MyCallbackResult>; + handledRoot: boolean = false; + value: MyCallbackResult; + + constructor(value_: MyCallbackResult) { + super(); + this.value = value_; + } + + setString(name: string, value: string): void { + if (name == "n") { + this.value.n = value; + return; + } + super.setString(name, value); + } + setNull(name: string): void { + if (name == "rs") { + this.value.rs = >null + return; + } + if (name == "n") { + this.value.n = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + if (name == "rs") { + this.value.rs = decode>(this.buffer, this.decoder.state); + return false; + } + + return super.pushArray(name); + } +} + +export class PromiseArgs { + receiver: string; + methodName: string; + args: PromiseArgs; + gas: i32; + balance: i32; + callback: string; + callbackArgs: PromiseArgs; + callbackBalance: i32; + callbackGas: i32; + + static decode(json: Uint8Array, state: DecoderState | null = null): PromiseArgs { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): PromiseArgs { + let handler: __near_JSONHandler_PromiseArgs = new __near_JSONHandler_PromiseArgs(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_PromiseArgs>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode(encoder, this.receiver, "receiver"); + encode(encoder, this.methodName, "methodName"); + encode(encoder, this.args, "args"); + encode(encoder, this.gas, "gas"); + encode(encoder, this.balance, "balance"); + encode(encoder, this.callback, "callback"); + encode(encoder, this.callbackArgs, "callbackArgs"); + encode(encoder, this.callbackBalance, "callbackBalance"); + encode(encoder, this.callbackGas, "callbackGas"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} +export class InputPromiseArgs { + args: PromiseArgs; + + static decode(json: Uint8Array, state: DecoderState | null = null): InputPromiseArgs { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): InputPromiseArgs { + let handler: __near_JSONHandler_InputPromiseArgs = new __near_JSONHandler_InputPromiseArgs(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_InputPromiseArgs>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode(encoder, this.args, "args"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} +export class MyContractPromiseResult { + ok: bool; + r: MyCallbackResult; + + static decode(json: Uint8Array, state: DecoderState | null = null): MyContractPromiseResult { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): MyContractPromiseResult { + let handler: __near_JSONHandler_MyContractPromiseResult = new __near_JSONHandler_MyContractPromiseResult(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_MyContractPromiseResult>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode(encoder, this.ok, "ok"); + encode(encoder, this.r, "r"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} +export class MyCallbackResult { + rs: Array; + n: string; + + static decode(json: Uint8Array, state: DecoderState | null = null): MyCallbackResult { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): MyCallbackResult { + let handler: __near_JSONHandler_MyCallbackResult = new __near_JSONHandler_MyCallbackResult(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_MyCallbackResult>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode>(encoder, this.rs, "rs"); + encode(encoder, this.n, "n"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} \ No newline at end of file diff --git a/tests/near-bindgen/out/assembly/main.ts b/tests/near-bindgen/out/assembly/main.ts new file mode 100644 index 0000000000..7592f61f18 --- /dev/null +++ b/tests/near-bindgen/out/assembly/main.ts @@ -0,0 +1,64 @@ +import { storage, near, base64 } from "near-runtime-ts"; +import { JSONEncoder } from "assemblyscript-json"; +import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; + +import { + storage, + context, + ContractPromise, + logging, + util +} from "near-runtime-ts" +import { + FooBar, + ContainerClass, + AnotherContainerClass +} from "./model" +import { + PromiseArgs, + MyCallbackResult, + MyContractPromiseResult +} from "./model" +export function doNothing(): void {} +export function add(x: i32, y: i32): i32 { + return x + y; +} +export function rewrapFoobar(container: ContainerClass): AnotherContainerClass { + let result = new AnotherContainerClass(); + result.foobars = [[container.foobar]]; + return result; +} +export function unwrapFoobar(container: AnotherContainerClass): FooBar { + return container.foobars[0][0]; +} +export function getStringArrayLength(arr: Array): i32 { + let length: i32 = arr.length; + logging.log("getStringArrayLength: " + length.toString()); + return arr.length; +} +export function convertFoobars(foobars: Array): Array { + return foobars.map(foobar => ({ + foobar: foobar + })); +} +export function callbackWithName(args: PromiseArgs): MyCallbackResult { + let contractResults = ContractPromise.getResults(); + let allRes = new Array(contractResults.length); + for (let i = 0; i < contractResults.length; ++i) { + allRes[i] = new MyContractPromiseResult(); + allRes[i].ok = contractResults[i].success; + if (allRes[i].ok && contractResults[i].buffer != null && contractResults[i].buffer!.length > 0) { + allRes[i].r = MyCallbackResult.decode(contractResults[i].buffer!); + } + } + let result: MyCallbackResult = { + rs: allRes, + n: context.contractName + }; + let bytes = result.encode(); + storage.setBytes("lastResult", bytes); + return result; +} +export function stringOrNull(): string | null { + return null; +} \ No newline at end of file diff --git a/tests/near-bindgen/out/assembly/model.ts b/tests/near-bindgen/out/assembly/model.ts new file mode 100644 index 0000000000..cee48c9e43 --- /dev/null +++ b/tests/near-bindgen/out/assembly/model.ts @@ -0,0 +1,870 @@ +import { storage, near, base64 } from "near-runtime-ts"; +import { JSONEncoder } from "assemblyscript-json"; +import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; + +export class __near_JSONHandler_FooBar extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_FooBar>; + handledRoot: boolean = false; + value: FooBar; + + constructor(value_: FooBar) { + super(); + this.value = value_; + } + + setInteger(name: string, value: i64): void { + if (name == "foo") { + this.value.foo = value; + return; + } + if (name == "bar") { + this.value.bar = value; + return; + } + super.setInteger(name, value); + } + setString(name: string, value: string): void { + if (name == "u64Val") { + this.value.u64Val = U64.parseInt(value); + return; + } + if (name == "u64_zero") { + this.value.u64_zero = U64.parseInt(value); + return; + } + if (name == "i64Val") { + this.value.i64Val = I64.parseInt(value); + return; + } + if (name == "baz") { + this.value.baz = value; + return; + } + if (name == "uint8array") { + this.value.uint8array = base64.decode(value); + return; + } + if (name == "u128Val") { + this.value.u128Val = u128.fromString(value); + return; + } + super.setString(name, value); + } + setBoolean(name: string, value: bool): void { + if (name == "flag") { + this.value.flag = value; + return; + } + super.setBoolean(name, value); + } + setNull(name: string): void { + if (name == "baz") { + this.value.baz = null + return; + } + if (name == "uint8array") { + this.value.uint8array = null + return; + } + if (name == "arr") { + this.value.arr = >>null + return; + } + if (name == "u32Arr") { + this.value.u32Arr = >null + return; + } + if (name == "i32Arr") { + this.value.i32Arr = >null + return; + } + if (name == "u128Val") { + this.value.u128Val = null + return; + } + if (name == "uint8arrays") { + this.value.uint8arrays = >null + return; + } + if (name == "u64Arr") { + this.value.u64Arr = >null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "u128Val") { + this.value.u128Val = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + if (name == "arr") { + this.value.arr = decode>>(this.buffer, this.decoder.state); + return false; + } + if (name == "u32Arr") { + this.value.u32Arr = decode>(this.buffer, this.decoder.state); + return false; + } + if (name == "i32Arr") { + this.value.i32Arr = decode>(this.buffer, this.decoder.state); + return false; + } + if (name == "uint8arrays") { + this.value.uint8arrays = decode>(this.buffer, this.decoder.state); + return false; + } + if (name == "u64Arr") { + this.value.u64Arr = decode>(this.buffer, this.decoder.state); + return false; + } + + return super.pushArray(name); + } +} + +export class __near_JSONHandler_Nullables extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_Nullables>; + handledRoot: boolean = false; + value: Nullables; + + constructor(value_: Nullables) { + super(); + this.value = value_; + } + + setString(name: string, value: string): void { + if (name == "str") { + this.value.str = value; + return; + } + if (name == "u128") { + this.value.u128 = u128.fromString(value); + return; + } + if (name == "uint8Array") { + this.value.uint8Array = base64.decode(value); + return; + } + super.setString(name, value); + } + setNull(name: string): void { + if (name == "str") { + this.value.str = null + return; + } + if (name == "u128") { + this.value.u128 = null + return; + } + if (name == "uint8Array") { + this.value.uint8Array = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "u128") { + this.value.u128 = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +export class __near_JSONHandler_ContainerClass extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_ContainerClass>; + handledRoot: boolean = false; + value: ContainerClass; + + constructor(value_: ContainerClass) { + super(); + this.value = value_; + } + + setNull(name: string): void { + if (name == "foobar") { + this.value.foobar = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "foobar") { + this.value.foobar = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +export class __near_JSONHandler_AnotherContainerClass extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_AnotherContainerClass>; + handledRoot: boolean = false; + value: AnotherContainerClass; + + constructor(value_: AnotherContainerClass) { + super(); + this.value = value_; + } + + setNull(name: string): void { + if (name == "foobars") { + this.value.foobars = >>null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + if (name == "foobars") { + this.value.foobars = decode>>(this.buffer, this.decoder.state); + return false; + } + + return super.pushArray(name); + } +} + +export class __near_JSONHandler_PromiseArgs extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_PromiseArgs>; + handledRoot: boolean = false; + value: PromiseArgs; + + constructor(value_: PromiseArgs) { + super(); + this.value = value_; + } + + setInteger(name: string, value: i64): void { + if (name == "balance") { + this.value.balance = value; + return; + } + if (name == "callbackBalance") { + this.value.callbackBalance = value; + return; + } + super.setInteger(name, value); + } + setString(name: string, value: string): void { + if (name == "receiver") { + this.value.receiver = value; + return; + } + if (name == "methodName") { + this.value.methodName = value; + return; + } + if (name == "callback") { + this.value.callback = value; + return; + } + super.setString(name, value); + } + setNull(name: string): void { + if (name == "receiver") { + this.value.receiver = null + return; + } + if (name == "methodName") { + this.value.methodName = null + return; + } + if (name == "args") { + this.value.args = null + return; + } + if (name == "callback") { + this.value.callback = null + return; + } + if (name == "callbackArgs") { + this.value.callbackArgs = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "args") { + this.value.args = decode(this.buffer, this.decoder.state); + return false; + } + if (name == "callbackArgs") { + this.value.callbackArgs = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +export class __near_JSONHandler_MyContractPromiseResult extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_MyContractPromiseResult>; + handledRoot: boolean = false; + value: MyContractPromiseResult; + + constructor(value_: MyContractPromiseResult) { + super(); + this.value = value_; + } + + setBoolean(name: string, value: bool): void { + if (name == "ok") { + this.value.ok = value; + return; + } + super.setBoolean(name, value); + } + setNull(name: string): void { + if (name == "r") { + this.value.r = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "r") { + this.value.r = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +export class __near_JSONHandler_MyCallbackResult extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_MyCallbackResult>; + handledRoot: boolean = false; + value: MyCallbackResult; + + constructor(value_: MyCallbackResult) { + super(); + this.value = value_; + } + + setString(name: string, value: string): void { + if (name == "n") { + this.value.n = value; + return; + } + super.setString(name, value); + } + setNull(name: string): void { + if (name == "rs") { + this.value.rs = >null + return; + } + if (name == "n") { + this.value.n = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + if (name == "rs") { + this.value.rs = decode>(this.buffer, this.decoder.state); + return false; + } + + return super.pushArray(name); + } +} + +export class __near_JSONHandler_Generic extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_JSONHandler_Generic>; + handledRoot: boolean = false; + value: Generic; + + constructor(value_: Generic) { + super(); + this.value = value_; + } + + setInteger(name: string, value: i64): void { + if (name == "value") { + this.value.value = value; + return; + } + assert(isInteger(), "value is not a Integer") + super.setInteger(name, value); + } + setString(name: string, value: string): void { + if (name == "value") { + this.value.value = I64.parseInt(value); + return; + } + assert(isString(), "value is not a String") + super.setString(name, value); + } + setBoolean(name: string, value: bool): void { + if (name == "value") { + this.value.value = value; + return; + } + assert(isBoolean(), "value is not a Boolean") + super.setBoolean(name, value); + } + setNull(name: string): void { + if (name == "value") { + if (isNullable()){ + this.value.value = null + return; + } + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "value" && isReference()) { + this.value.value = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +import { + u128 +} from "bignum" +import { + logging +} from "near-runtime-ts" +export class FooBar { + foo: i32 = 0; + bar: u32 = 1; + u64Val: u64 = 4294967297; + u64_zero: u64; + i64Val: i64 = -64; + flag: bool; + baz: string = "123"; + uint8array: Uint8Array; + arr: Array>; + u32Arr: Array; + i32Arr: Array; + u128Val: u128; + uint8arrays: Array; + u64Arr: Array; + + static decode(json: Uint8Array, state: DecoderState | null = null): FooBar { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): FooBar { + let handler: __near_JSONHandler_FooBar = new __near_JSONHandler_FooBar(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_FooBar>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode(encoder, this.foo, "foo"); + encode(encoder, this.bar, "bar"); + encode(encoder, this.u64Val, "u64Val"); + encode(encoder, this.u64_zero, "u64_zero"); + encode(encoder, this.i64Val, "i64Val"); + encode(encoder, this.flag, "flag"); + encode(encoder, this.baz, "baz"); + encode(encoder, this.uint8array, "uint8array"); + encode>>(encoder, this.arr, "arr"); + encode>(encoder, this.u32Arr, "u32Arr"); + encode>(encoder, this.i32Arr, "i32Arr"); + encode(encoder, this.u128Val, "u128Val"); + encode>(encoder, this.uint8arrays, "uint8arrays"); + encode>(encoder, this.u64Arr, "u64Arr"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} +export class Nullables { + str: string; + u128: u128; + uint8Array: Uint8Array; + + static decode(json: Uint8Array, state: DecoderState | null = null): Nullables { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): Nullables { + let handler: __near_JSONHandler_Nullables = new __near_JSONHandler_Nullables(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_Nullables>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode(encoder, this.str, "str"); + encode(encoder, this.u128, "u128"); + encode(encoder, this.uint8Array, "uint8Array"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} +export class ContainerClass { + foobar: FooBar; + + static decode(json: Uint8Array, state: DecoderState | null = null): ContainerClass { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): ContainerClass { + let handler: __near_JSONHandler_ContainerClass = new __near_JSONHandler_ContainerClass(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_ContainerClass>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode(encoder, this.foobar, "foobar"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} +export class AnotherContainerClass { + foobars: Array>; + + static decode(json: Uint8Array, state: DecoderState | null = null): AnotherContainerClass { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): AnotherContainerClass { + let handler: __near_JSONHandler_AnotherContainerClass = new __near_JSONHandler_AnotherContainerClass(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_AnotherContainerClass>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode>>(encoder, this.foobars, "foobars"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} +export class PromiseArgs { + receiver: string; + methodName: string; + args: PromiseArgs; + balance: i32; + callback: string; + callbackArgs: PromiseArgs; + callbackBalance: i32; + + static decode(json: Uint8Array, state: DecoderState | null = null): PromiseArgs { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): PromiseArgs { + let handler: __near_JSONHandler_PromiseArgs = new __near_JSONHandler_PromiseArgs(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_PromiseArgs>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode(encoder, this.receiver, "receiver"); + encode(encoder, this.methodName, "methodName"); + encode(encoder, this.args, "args"); + encode(encoder, this.balance, "balance"); + encode(encoder, this.callback, "callback"); + encode(encoder, this.callbackArgs, "callbackArgs"); + encode(encoder, this.callbackBalance, "callbackBalance"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} +export class MyContractPromiseResult { + ok: bool; + r: MyCallbackResult; + + static decode(json: Uint8Array, state: DecoderState | null = null): MyContractPromiseResult { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): MyContractPromiseResult { + let handler: __near_JSONHandler_MyContractPromiseResult = new __near_JSONHandler_MyContractPromiseResult(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_MyContractPromiseResult>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode(encoder, this.ok, "ok"); + encode(encoder, this.r, "r"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} +export class MyCallbackResult { + rs: Array; + n: string; + + static decode(json: Uint8Array, state: DecoderState | null = null): MyCallbackResult { + let value = instantiate(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): MyCallbackResult { + let handler: __near_JSONHandler_MyCallbackResult = new __near_JSONHandler_MyCallbackResult(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_MyCallbackResult>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode>(encoder, this.rs, "rs"); + encode(encoder, this.n, "n"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} +export class Generic { + value: T; + + static decode(json: Uint8Array, state: DecoderState | null = null): Generic { + let value = instantiate>(); // Allocate without constructor + value.decode(json, state); + return value; + } + + decode(json: Uint8Array, state: DecoderState | null): Generic { + let handler: __near_JSONHandler_Generic = new __near_JSONHandler_Generic(this); + handler.buffer = json; + let decoder = new JSONDecoder<__near_JSONHandler_Generic>(handler); + handler.decoder = decoder; + decoder.deserialize(json, state); + return this; + } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; + encoder.pushObject(name); + encode(encoder, this.value, "value"); + encoder.popObject(); + return encoder + } + + serialize(): Uint8Array { + return this.encode().serialize(); + } + + toJSON(): string { + return this.encode().toString(); + } +} \ No newline at end of file diff --git a/tests/near-bindgen/out/assembly/test.ts b/tests/near-bindgen/out/assembly/test.ts new file mode 100644 index 0000000000..84d42f1572 --- /dev/null +++ b/tests/near-bindgen/out/assembly/test.ts @@ -0,0 +1,344 @@ +import { storage, near, base64 } from "near-runtime-ts"; +import { JSONEncoder } from "assemblyscript-json"; +import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; + + +class __near_ArgsParser_convertFoobars extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_convertFoobars>; + handledRoot: boolean = false; + __near_param_foobars: Array; + setNull(name: string): void { + if (name == "foobars") { + this.__near_param_foobars = >null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + if (name == "foobars") { + this.__near_param_foobars = decode>(this.buffer, this.decoder.state); + return false; + } + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_convertFoobars(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_convertFoobars(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_convertFoobars>(handler); + handler.decoder.deserialize(json); + let result: Array = convertFoobars(handler.__near_param_foobars); + + let encoder = new JSONEncoder(); + if ((isString>() || isNullable>()) && result == null) { + encoder.setNull(null); + } else { + encode>(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_convertFoobars as convertFoobars } + + +class __near_ArgsParser_getStringArrayLength extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_getStringArrayLength>; + handledRoot: boolean = false; + __near_param_arr: Array; + setNull(name: string): void { + if (name == "arr") { + this.__near_param_arr = >null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + if (name == "arr") { + this.__near_param_arr = decode>(this.buffer, this.decoder.state); + return false; + } + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_getStringArrayLength(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_getStringArrayLength(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_getStringArrayLength>(handler); + handler.decoder.deserialize(json); + let result: i32 = getStringArrayLength(handler.__near_param_arr); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_getStringArrayLength as getStringArrayLength } + + +class __near_ArgsParser_rewrapFoobar extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_rewrapFoobar>; + handledRoot: boolean = false; + __near_param_container: ContainerClass; + setNull(name: string): void { + if (name == "container") { + this.__near_param_container = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "container") { + this.__near_param_container = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_rewrapFoobar(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_rewrapFoobar(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_rewrapFoobar>(handler); + handler.decoder.deserialize(json); + let result: AnotherContainerClass = rewrapFoobar(handler.__near_param_container); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_rewrapFoobar as rewrapFoobar } + + +class __near_ArgsParser_unwrapFoobar extends ThrowingJSONHandler { + buffer: Uint8Array; + decoder: JSONDecoder<__near_ArgsParser_unwrapFoobar>; + handledRoot: boolean = false; + __near_param_container: AnotherContainerClass; + setNull(name: string): void { + if (name == "container") { + this.__near_param_container = null + return; + } + + super.setNull(name); + } + + pushObject(name: string): bool { +if (!this.handledRoot) { + assert(name == null || name.length == 0); + this.handledRoot = true; + return true; + } else { + assert(name != null || name.length != 0); + } + if (name == "container") { + this.__near_param_container = decode(this.buffer, this.decoder.state); + return false; + } + + return super.pushObject(name); + } + + pushArray(name: string): bool { + + return super.pushArray(name); + } +} + +//@ts-ignore +function __wrapper_unwrapFoobar(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + let handler = new __near_ArgsParser_unwrapFoobar(); + handler.buffer = json; + handler.decoder = new JSONDecoder<__near_ArgsParser_unwrapFoobar>(handler); + handler.decoder.deserialize(json); + let result: FooBar = unwrapFoobar(handler.__near_param_container); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_unwrapFoobar as unwrapFoobar } + + +//@ts-ignore +function __wrapper_stringOrNull(): void { + let result: string | null = stringOrNull(); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result!, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_stringOrNull as stringOrNull } + +import * as main from "./main" +import { + base64, + logging +} from "near-runtime-ts" +import { + FooBar, + Nullables, + ContainerClass, + AnotherContainerClass +} from "./model" +import { + u128 +} from "bignum" +export function runTest(): void { + logging.log("starting test"); + const original = new FooBar(); + original.u32Arr = [42, 11]; + original.foo = 321; + original.bar = 123; + original.flag = true; + original.baz = "foo"; + original.uint8array = base64.decode("aGVsbG8sIHdvcmxkIQ=="); + original.u128Val = new u128(128); + original.arr = [["Hello"], ["World"]]; + original.uint8arrays = Array.create(2); + original.uint8arrays[0] = base64.decode("aGVsbG8sIHdvcmxkIQ=="); + original.uint8arrays[1] = base64.decode("aGVsbG8sIHdvcmxkIQ=="); + original.u64Arr = [10000000000, 100000000000]; + const encoder = original.encode(); + logging.log("Before: " + encoder.toString()); + const encoded = encoder.serialize(); + let decoded: FooBar = decode(encoded); + logging.log("After: " + decoded.toJSON()); + assert(original.foo == decoded.foo); + assert(original.bar == decoded.bar); + assert(base64.encode(original.uint8array) == base64.encode(decoded.uint8array)); + assert(base64.encode(original.uint8arrays[0]) == base64.encode(decoded.uint8arrays[0])); + assert(original.arr[0][0] == "Hello"); + assert(original.u64Arr[0] == decoded.u64Arr[0]); + assert(original.u64_zero == decoded.u64_zero); + const nullable = new Nullables(); + const nullable2 = decode(nullable.serialize()); + assert(nullable2.str == null); + assert(nullable2.u128 == null); + assert(nullable2.uint8Array == null); + logging.log("Test Passed"); +} +function convertFoobars(foobars: Array): Array { + return main.convertFoobars(foobars); +} +function getStringArrayLength(arr: Array): i32 { + return main.getStringArrayLength(arr); +} +function rewrapFoobar(container: ContainerClass): AnotherContainerClass { + return main.rewrapFoobar(container); +} +function unwrapFoobar(container: AnotherContainerClass): FooBar { + return main.unwrapFoobar(container); +} +function stringOrNull(): string | null { + return main.stringOrNull(); +} \ No newline at end of file diff --git a/tests/near-bindgen/out/hello.wat b/tests/near-bindgen/out/hello.wat new file mode 100644 index 0000000000..3723f5d824 --- /dev/null +++ b/tests/near-bindgen/out/hello.wat @@ -0,0 +1,33478 @@ +(module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$vj (func (param i64))) + (type $FUNCSIG$jj (func (param i64) (result i64))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vjj (func (param i64 i64))) + (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viij (func (param i32 i32 i64))) + (type $FUNCSIG$ij (func (param i64) (result i32))) + (type $FUNCSIG$viji (func (param i32 i64 i32))) + (type $FUNCSIG$jjjjjj (func (param i64 i64 i64 i64 i64) (result i64))) + (type $FUNCSIG$jjjj (func (param i64 i64 i64) (result i64))) + (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$jjj (func (param i64 i64) (result i64))) + (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) + (type $FUNCSIG$ji (func (param i32) (result i64))) + (type $FUNCSIG$j (func (result i64))) + (type $FUNCSIG$vij (func (param i32 i64))) + (type $FUNCSIG$iijj (func (param i32 i64 i64) (result i32))) + (type $FUNCSIG$iiiiji (func (param i32 i32 i32 i64 i32) (result i32))) + (type $FUNCSIG$jjjjjjjjj (func (param i64 i64 i64 i64 i64 i64 i64 i64) (result i64))) + (type $FUNCSIG$iij (func (param i32 i64) (result i32))) + (type $FUNCSIG$iiiiiji (func (param i32 i32 i32 i32 i64 i32) (result i32))) + (type $FUNCSIG$jjjjjjjjjj (func (param i64 i64 i64 i64 i64 i64 i64 i64 i64) (result i64))) + (import "env" "input" (func $~lib/nearEntry/input (param i64))) + (import "env" "register_len" (func $~lib/nearEntry/register_len (param i64) (result i64))) + (import "env" "panic" (func $~lib/nearEntry/panic)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "read_register" (func $~lib/nearEntry/read_register (param i64 i64))) + (import "env" "value_return" (func $~lib/nearEntry/value_return (param i64 i64))) + (import "env" "storage_write" (func $~lib/near-runtime-ts/runtime_api/runtime_api.storage_write (param i64 i64 i64 i64 i64) (result i64))) + (import "env" "storage_read" (func $~lib/near-runtime-ts/runtime_api/runtime_api.storage_read (param i64 i64 i64) (result i64))) + (import "env" "register_len" (func $~lib/near-runtime-ts/runtime_api/runtime_api.register_len (param i64) (result i64))) + (import "env" "read_register" (func $~lib/near-runtime-ts/runtime_api/runtime_api.read_register (param i64 i64))) + (import "env" "storage_iter_prefix" (func $~lib/near-runtime-ts/runtime_api/runtime_api.storage_iter_prefix (param i64 i64) (result i64))) + (import "env" "storage_iter_next" (func $~lib/near-runtime-ts/runtime_api/runtime_api.storage_iter_next (param i64 i64 i64) (result i64))) + (import "env" "storage_usage" (func $~lib/near-runtime-ts/runtime_api/runtime_api.storage_usage (result i64))) + (import "env" "storage_remove" (func $~lib/near-runtime-ts/runtime_api/runtime_api.storage_remove (param i64 i64 i64) (result i64))) + (import "env" "log_utf8" (func $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 (param i64 i64))) + (import "env" "promise_create" (func $~lib/near-runtime-ts/runtime_api/runtime_api.promise_create (param i64 i64 i64 i64 i64 i64 i64 i64) (result i64))) + (import "env" "current_account_id" (func $~lib/near-runtime-ts/runtime_api/runtime_api.current_account_id (param i64))) + (import "env" "promise_then" (func $~lib/near-runtime-ts/runtime_api/runtime_api.promise_then (param i64 i64 i64 i64 i64 i64 i64 i64 i64) (result i64))) + (import "env" "promise_return" (func $~lib/near-runtime-ts/runtime_api/runtime_api.promise_return (param i64))) + (import "env" "promise_results_count" (func $~lib/near-runtime-ts/runtime_api/runtime_api.promise_results_count (result i64))) + (import "env" "promise_result" (func $~lib/near-runtime-ts/runtime_api/runtime_api.promise_result (param i64 i64) (result i64))) + (memory $0 1) + (data (i32.const 8) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00:\00l\00e\00n\00") + (data (i32.const 32) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00:\00f\00r\00o\00n\00t\00") + (data (i32.const 64) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00:\00b\00a\00c\00k\00") + (data (i32.const 96) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00:\00:\00") + (data (i32.const 120) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00:\00r\00") + (data (i32.const 144) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") + (data (i32.const 168) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") + (data (i32.const 200) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 224) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 248) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\009\00") + (data (i32.const 272) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00A\00") + (data (i32.const 296) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 320) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00") + (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00=\00") + (data (i32.const 392) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00+\00/\00") + (data (i32.const 536) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 584) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 640) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 656) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 712) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 768) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00i\00n\00p\00u\00t\00 \00e\00n\00d\00") + (data (i32.const 824) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00d\00e\00c\00o\00d\00e\00r\00.\00t\00s\00") + (data (i32.const 912) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00{\00") + (data (i32.const 936) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00h\00e\00l\00l\00o\00/\00m\00a\00i\00n\00.\00t\00s\00") + (data (i32.const 1000) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00o\00b\00j\00e\00c\00t\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 1064) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00}\00") + (data (i32.const 1088) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") + (data (i32.const 1112) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00,\00\'\00") + (data (i32.const 1152) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\"\00") + (data (i32.const 1176) ":\00\00\00\01\00\00\00\01\00\00\00:\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00d\00o\00u\00b\00l\00e\00-\00q\00u\00o\00t\00e\00d\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 1256) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") + (data (i32.const 1368) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 1416) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00") + (data (i32.const 1488) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 1536) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 1584) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\\\00") + (data (i32.const 1608) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00/\00") + (data (i32.const 1632) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 1656) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\08\00") + (data (i32.const 1680) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n\00") + (data (i32.const 1704) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\n\00") + (data (i32.const 1728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00r\00") + (data (i32.const 1752) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0d\00") + (data (i32.const 1776) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00t\00") + (data (i32.const 1800) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\t\00") + (data (i32.const 1824) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00u\00") + (data (i32.const 1848) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\\\00u\00 \00d\00i\00g\00i\00t\00") + (data (i32.const 1904) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00s\00c\00a\00p\00e\00d\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00:\00 \00") + (data (i32.const 1984) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00:\00") + (data (i32.const 2008) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00:\00\'\00") + (data (i32.const 2048) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00o\00b\00j\00e\00c\00t\00") + (data (i32.const 2112) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00[\00") + (data (i32.const 2136) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00a\00r\00r\00a\00y\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 2200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00]\00") + (data (i32.const 2224) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00a\00r\00r\00a\00y\00") + (data (i32.const 2288) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00a\00m\00e\00") + (data (i32.const 2312) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00s\00t\00r\00i\00n\00g\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 2376) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00 \00:\00 \00\"\00") + (data (i32.const 2400) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00") + (data (i32.const 2440) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\'\00") + (data (i32.const 2464) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00b\00o\00o\00l\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 2528) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00:\00 \00") + (data (i32.const 2552) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") + (data (i32.const 2576) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00i\00n\00t\00e\00g\00e\00r\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 2648) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 3064) "\10\00\00\00\01\00\00\00\0e\00\00\00\10\00\00\00h\n\00\00h\n\00\00\90\01\00\00d\00\00\00") + (data (i32.const 3096) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 3160) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00C\00a\00n\00n\00o\00t\00 \00p\00a\00r\00s\00e\00 \00J\00S\00O\00N\00") + (data (i32.const 3216) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00h\00e\00l\00l\00o\00 \00") + (data (i32.const 3248) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\"\00") + (data (i32.const 3272) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\\\00") + (data (i32.const 3296) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00b\00") + (data (i32.const 3320) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00n\00") + (data (i32.const 3344) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00r\00") + (data (i32.const 3368) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00t\00") + (data (i32.const 3392) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00U\00n\00s\00u\00p\00p\00o\00r\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00c\00o\00d\00e\00:\00 \00") + (data (i32.const 3480) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00e\00n\00c\00o\00d\00e\00r\00.\00t\00s\00") + (data (i32.const 3568) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\00y\00") + (data (i32.const 3592) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00v\00a\00l\00u\00e\00") + (data (i32.const 3624) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 3672) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\001\002\003\00") + (data (i32.const 3704) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00m\00a\00x\00_\00s\00t\00o\00r\00a\00g\00e\00") + (data (i32.const 3744) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00l\00o\00o\00o\00o\00g\001\00") + (data (i32.const 3776) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00l\00o\00o\00o\00o\00g\002\00") + (data (i32.const 3808) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00H\00i\00") + (data (i32.const 3832) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") + (data (i32.const 3856) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00t\00e\00m\00 \00m\00u\00s\00t\00 \00b\00e\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 3912) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00r\00o\00m\00") + (data (i32.const 3936) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00t\00o\00") + (data (i32.const 3960) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") + (data (i32.const 3984) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00r\00g\00s\00") + (data (i32.const 4008) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00h\00e\00l\00l\00o\00/\00m\00o\00d\00e\00l\00.\00t\00s\00") + (data (i32.const 4072) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00A\00r\00g\00s\00") + (data (i32.const 4112) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00r\00e\00c\00e\00i\00v\00e\00r\00") + (data (i32.const 4144) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00t\00h\00o\00d\00N\00a\00m\00e\00") + (data (i32.const 4184) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00") + (data (i32.const 4216) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00g\00a\00s\00") + (data (i32.const 4240) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00a\00l\00a\00n\00c\00e\00") + (data (i32.const 4272) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00B\00a\00l\00a\00n\00c\00e\00") + (data (i32.const 4320) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00G\00a\00s\00") + (data (i32.const 4360) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00r\00s\00") + (data (i32.const 4384) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00o\00k\00") + (data (i32.const 4408) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00n\00a\00m\00e\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00n\00u\00l\00l\00.\00") + (data (i32.const 4464) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00~\00l\00i\00b\00/\00n\00e\00a\00r\00E\00n\00t\00r\00y\00.\00t\00s\00") + (data (i32.const 4520) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00a\00s\00t\00R\00e\00s\00u\00l\00t\00") + (data (i32.const 4560) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00i\00t\00e\00m\00") + (data (i32.const 4584) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00l\00o\00g\001\00") + (data (i32.const 4608) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00l\00o\00g\002\00") + (data (i32.const 4632) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00l\00o\00g\00 \00b\00e\00f\00o\00r\00e\00 \00a\00s\00s\00e\00r\00t\00") + (data (i32.const 4688) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00f\00a\00i\00l\00") + (data (i32.const 4736) "D\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93\04\00\00\02\00\00\00\93\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\83 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 funcref) + (elem (i32.const 0) $null) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/near-runtime-ts/storage/storage (mut i32) (i32.const 0)) + (global $~lib/near-runtime-ts/collections/index/collections._KEY_LENGTH_SUFFIX i32 (i32.const 24)) + (global $~lib/near-runtime-ts/collections/index/collections._KEY_FRONT_INDEX_SUFFIX i32 (i32.const 48)) + (global $~lib/near-runtime-ts/collections/index/collections._KEY_BACK_INDEX_SUFFIX i32 (i32.const 80)) + (global $~lib/near-runtime-ts/collections/index/collections._KEY_ELEMENT_SUFFIX i32 (i32.const 112)) + (global $~lib/near-runtime-ts/collections/index/collections._KEY_RATING_SUFFIX i32 (i32.const 136)) + (global $~lib/near-runtime-ts/collections/index/collections._RATING_OFFSET i64 (i64.const 2147483648)) + (global $~lib/assemblyscript-json/decoder/TRUE_STR i32 (i32.const 160)) + (global $~lib/assemblyscript-json/decoder/FALSE_STR i32 (i32.const 184)) + (global $~lib/assemblyscript-json/decoder/NULL_STR i32 (i32.const 216)) + (global $~lib/assemblyscript-json/decoder/CHAR_0 (mut i32) (i32.const 0)) + (global $~lib/assemblyscript-json/decoder/CHAR_9 (mut i32) (i32.const 0)) + (global $~lib/assemblyscript-json/decoder/CHAR_A (mut i32) (i32.const 0)) + (global $~lib/assemblyscript-json/decoder/CHAR_A_LOWER (mut i32) (i32.const 0)) + (global $~lib/bignum/utils/HEX_CHARS i32 (i32.const 336)) + (global $~lib/bignum/globals/__divmod_quot_lo (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__divmod_quot_hi (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__divmod_rem (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__res128_lo (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__res128_hi (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__float_u128_lo (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__float_u128_hi (mut i64) (i64.const 0)) + (global $~lib/near-runtime-ts/contract/context (mut i32) (i32.const 0)) + (global $~lib/near-runtime-ts/base64/base64.PADCHAR i32 (i32.const 384)) + (global $~lib/near-runtime-ts/base64/base64.ALPHA i32 (i32.const 408)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/number/U32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/argc (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.String (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.Boolean (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.U64 (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.I64 (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.U32 (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.I32 (mut i32) (i32.const 0)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/rt/__rtti_base i32 (i32.const 4736)) + (global $~lib/heap/__heap_base i32 (i32.const 5284)) + (export "memory" (memory $0)) + (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__retain" (func $~lib/rt/stub/__retain)) + (export "__release" (func $~lib/rt/stub/__release)) + (export "__collect" (func $~lib/rt/stub/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "hello" (func $assembly/hello/main/__wrapper_hello)) + (export "setKeyValue" (func $assembly/hello/main/__wrapper_setKeyValue)) + (export "getValueByKey" (func $assembly/hello/main/__wrapper_getValueByKey)) + (export "setValue" (func $assembly/hello/main/__wrapper_setValue)) + (export "getValue" (func $assembly/hello/main/__wrapper_getValue)) + (export "getAllKeys" (func $assembly/hello/main/__wrapper_getAllKeys)) + (export "benchmark" (func $assembly/hello/main/__wrapper_benchmark)) + (export "benchmark_storage" (func $assembly/hello/main/__wrapper_benchmark_storage)) + (export "limited_storage" (func $assembly/hello/main/__wrapper_limited_storage)) + (export "benchmark_sum_n" (func $assembly/hello/main/__wrapper_benchmark_sum_n)) + (export "returnHiWithLogs" (func $assembly/hello/main/__wrapper_returnHiWithLogs)) + (export "testSetRemove" (func $assembly/hello/main/__wrapper_testSetRemove)) + (export "insertStrings" (func $assembly/hello/main/__wrapper_insertStrings)) + (export "deleteStrings" (func $assembly/hello/main/__wrapper_deleteStrings)) + (export "recurse" (func $assembly/hello/main/__wrapper_recurse)) + (export "callPromise" (func $assembly/hello/main/__wrapper_callPromise)) + (export "callbackWithName" (func $assembly/hello/main/__wrapper_callbackWithName)) + (export "getLastResult" (func $assembly/hello/main/__wrapper_getLastResult)) + (export "generateLogs" (func $assembly/hello/main/generateLogs)) + (export "triggerAssert" (func $assembly/hello/main/triggerAssert)) + (start $start) + (func $~lib/rt/stub/maybeGrowMemory (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + memory.size + local.set $1 + local.get $1 + i32.const 16 + i32.shl + local.set $2 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + local.get $2 + i32.sub + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $4 + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $0 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $3 + i32.const 16 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + local.set $5 + local.get $2 + local.get $5 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.set $6 + local.get $6 + local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 + local.get $1 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/near-runtime-ts/storage/Storage#constructor (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + ) + (func $start:~lib/near-runtime-ts/storage (; 25 ;) (type $FUNCSIG$v) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + i32.const 0 + call $~lib/near-runtime-ts/storage/Storage#constructor + global.set $~lib/near-runtime-ts/storage/storage + ) + (func $~lib/string/String#get:length (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/string/String#charCodeAt (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const -1 + return + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + ) + (func $start:~lib/assemblyscript-json/decoder (; 28 ;) (type $FUNCSIG$v) + i32.const 240 + i32.const 0 + call $~lib/string/String#charCodeAt + global.set $~lib/assemblyscript-json/decoder/CHAR_0 + i32.const 264 + i32.const 0 + call $~lib/string/String#charCodeAt + global.set $~lib/assemblyscript-json/decoder/CHAR_9 + i32.const 288 + i32.const 0 + call $~lib/string/String#charCodeAt + global.set $~lib/assemblyscript-json/decoder/CHAR_A + i32.const 312 + i32.const 0 + call $~lib/string/String#charCodeAt + global.set $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + ) + (func $start:~lib/assemblyscript-json/index (; 29 ;) (type $FUNCSIG$v) + call $start:~lib/assemblyscript-json/decoder + ) + (func $start:~lib/bignum/integer/u128 (; 30 ;) (type $FUNCSIG$v) + call $start:~lib/assemblyscript-json/index + ) + (func $start:~lib/bignum/integer/index (; 31 ;) (type $FUNCSIG$v) + call $start:~lib/bignum/integer/u128 + ) + (func $start:~lib/bignum/index (; 32 ;) (type $FUNCSIG$v) + call $start:~lib/bignum/integer/index + ) + (func $~lib/near-runtime-ts/contract/Context#constructor (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + ) + (func $start:~lib/near-runtime-ts/contract (; 34 ;) (type $FUNCSIG$v) + call $start:~lib/bignum/index + i32.const 0 + call $~lib/near-runtime-ts/contract/Context#constructor + global.set $~lib/near-runtime-ts/contract/context + ) + (func $start:~lib/near-runtime-ts/index (; 35 ;) (type $FUNCSIG$v) + call $start:~lib/near-runtime-ts/storage + call $start:~lib/near-runtime-ts/contract + ) + (func $start:~lib/rt/index-stub (; 36 ;) (type $FUNCSIG$v) + call $start:~lib/near-runtime-ts/index + ) + (func $~lib/rt/stub/__release (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/rt/stub/__collect (; 38 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/memory/memory.fill (; 39 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 1 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 2 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.get $4 + i32.store8 + local.get $5 + i32.const 2 + i32.add + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 6 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 3 + i32.add + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + i32.const 0 + local.get $5 + i32.sub + i32.const 3 + i32.and + local.set $6 + local.get $5 + local.get $6 + i32.add + local.set $5 + local.get $3 + local.get $6 + i32.sub + local.set $3 + local.get $3 + i32.const -4 + i32.and + local.set $3 + i32.const -1 + i32.const 255 + i32.div_u + local.get $4 + i32.const 255 + i32.and + i32.mul + local.set $7 + local.get $5 + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.get $7 + i32.store + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store + local.get $3 + i32.const 24 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 12 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 16 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 20 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 + i32.store + i32.const 24 + local.get $5 + i32.const 4 + i32.and + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.add + local.set $5 + local.get $3 + local.get $6 + i32.sub + local.set $3 + local.get $7 + i64.extend_i32_u + local.get $7 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $8 + block $break|0 + loop $continue|0 + local.get $3 + i32.const 32 + i32.ge_u + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 + end + unreachable + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 552 + i32.const 600 + i32.const 14 + i32.const 56 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/stub/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + ) + (func $~lib/typedarray/Uint8Array#constructor (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 6 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Uint8Array#get:buffer (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 7 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 8 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONHandler#constructor + local.set $0 + local.get $0 + ) + (func $assembly/hello/main/__near_ArgsParser_hello#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 9 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 10 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 11 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 656 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + ) + (func $~lib/typedarray/Uint8Array#get:length (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + ) + (func $~lib/typedarray/Uint8Array#__get (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 672 + i32.const 728 + i32.const 135 + i32.const 44 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_u + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 54 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/util/string/compareImpl (; 55 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $5 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $7 + block $break|0 + loop $continue|0 + local.get $4 + if (result i32) + local.get $6 + i32.load16_u + local.get $7 + i32.load16_u + i32.sub + local.tee $5 + i32.eqz + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 + end + unreachable + end + local.get $5 + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + ) + (func $~lib/string/String.__eq (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $3 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.__ne (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/util/memory/memcpy (; 58 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $break|0 + loop $continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 + end + unreachable + end + local.get $0 + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + block $break|1 + loop $continue|1 + local.get $2 + i32.const 16 + i32.ge_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 + end + unreachable + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|3 + end + unreachable + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end + unreachable + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (; 59 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $4 + local.get $3 + i32.add + local.get $5 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $5 + local.get $3 + i32.add + local.get $4 + i32.le_u + end + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|0 + loop $continue|0 + local.get $5 + i32.const 7 + i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 + end + unreachable + end + block $break|1 + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 + end + unreachable + end + end + block $break|2 + loop $continue|2 + local.get $3 + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + unreachable + end + else + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|3 + loop $continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + i32.eqz + br_if $break|3 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + unreachable + end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable + end + end + end + ) + (func $~lib/string/String#concat (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + i32.const 216 + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + local.set $1 + end + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $4 + local.get $1 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $5 + local.get $4 + local.get $5 + i32.add + local.set $6 + local.get $6 + i32.const 0 + i32.eq + if + i32.const 656 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $6 + i32.const 1 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $7 + local.get $7 + local.get $0 + local.get $4 + call $~lib/memory/memory.copy + local.get $7 + local.get $4 + i32.add + local.get $1 + local.get $5 + call $~lib/memory/memory.copy + local.get $7 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.__concat (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 216 + local.get $0 + i32.const 0 + i32.ne + select + local.get $1 + call $~lib/string/String#concat + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 1016 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 840 + i32.const 58 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_hello#pushObject (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 29 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 33 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/array/Array<~lib/string/String>#constructor (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 12 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 1272 + i32.const 1384 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 65 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $~lib/rt/stub/__realloc (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 43 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + local.get $2 + i32.load + local.set $3 + local.get $2 + i32.load offset=4 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 46 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + i32.gt_u + if + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + local.get $1 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $0 + local.get $3 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + local.get $3 + i32.store + else + local.get $1 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $4 + local.get $3 + i32.const 1 + i32.shl + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + local.set $3 + local.get $3 + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__alloc + local.set $4 + local.get $4 + local.get $0 + local.get $2 + i32.load offset=12 + call $~lib/memory/memory.copy + local.get $4 + local.tee $0 + i32.const 16 + i32.sub + local.set $2 + end + else + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/stub/offset + local.get $2 + local.get $3 + i32.store + end + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/string/String.UTF8.decodeUnsafe (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + local.set $3 + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $4 + local.get $3 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 585 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $5 + local.get $5 + local.set $6 + block $break|0 + loop $continue|0 + local.get $3 + local.get $4 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $3 + local.tee $7 + i32.const 1 + i32.add + local.set $3 + local.get $7 + i32.load8_u + local.set $7 + local.get $7 + i32.const 128 + i32.lt_u + if + local.get $2 + if (result i32) + local.get $7 + i32.eqz + else + i32.const 0 + end + if + br $break|0 + end + local.get $6 + local.get $7 + i32.store16 + local.get $6 + i32.const 2 + i32.add + local.set $6 + else + local.get $7 + i32.const 191 + i32.gt_u + if (result i32) + local.get $7 + i32.const 224 + i32.lt_u + else + i32.const 0 + end + if + local.get $4 + local.get $3 + i32.sub + i32.const 1 + i32.lt_u + if + br $break|0 + end + local.get $6 + local.get $7 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $3 + local.tee $8 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.load8_u + i32.const 63 + i32.and + i32.or + i32.store16 + local.get $6 + i32.const 2 + i32.add + local.set $6 + else + local.get $7 + i32.const 239 + i32.gt_u + if (result i32) + local.get $7 + i32.const 365 + i32.lt_u + else + i32.const 0 + end + if + local.get $4 + local.get $3 + i32.sub + i32.const 3 + i32.lt_u + if + br $break|0 + end + local.get $7 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.const 12 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=2 + i32.const 63 + i32.and + i32.or + i32.const 65536 + i32.sub + local.set $7 + local.get $3 + i32.const 3 + i32.add + local.set $3 + local.get $6 + i32.const 55296 + local.get $7 + i32.const 10 + i32.shr_u + i32.add + i32.store16 + local.get $6 + i32.const 56320 + local.get $7 + i32.const 1023 + i32.and + i32.add + i32.store16 offset=2 + local.get $6 + i32.const 4 + i32.add + local.set $6 + else + local.get $4 + local.get $3 + i32.sub + i32.const 2 + i32.lt_u + if + br $break|0 + end + local.get $6 + local.get $7 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.or + i32.store16 + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $6 + i32.const 2 + i32.add + local.set $6 + end + end + end + br $continue|0 + end + unreachable + end + local.get $5 + local.get $6 + local.get $5 + i32.sub + call $~lib/rt/stub/__realloc + call $~lib/rt/stub/__retain + ) + (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/assemblyscript-json/util/index/Buffer.getPtr + local.get $1 + i32.add + local.get $2 + local.get $1 + i32.sub + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 69 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load offset=8 + local.get $1 + local.get $2 + i32.const 1 + i32.sub + call $~lib/assemblyscript-json/util/index/Buffer.readString + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 70 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + i32.load offset=4 + local.set $2 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/DecoderState#readString + ) + (func $~lib/array/Array<~lib/string/String>#get:length (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/ensureSize (; 72 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $3 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 552 + i32.const 1384 + i32.const 14 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $4 + local.get $1 + local.get $2 + i32.shl + local.set $5 + local.get $4 + local.get $5 + call $~lib/rt/stub/__realloc + local.set $6 + local.get $6 + local.get $3 + i32.add + i32.const 0 + local.get $5 + local.get $3 + i32.sub + call $~lib/memory/memory.fill + local.get $6 + local.get $4 + i32.ne + if + local.get $0 + local.get $6 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $6 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.store offset=8 + end + ) + (func $~lib/array/Array<~lib/string/String>#push (; 73 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/array/Array<~lib/string/String>#join_str (; 74 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 656 + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + i32.load offset=4 + local.set $4 + local.get $2 + i32.eqz + if + local.get $4 + i32.load + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $1 + call $~lib/string/String#get:length + local.set $5 + i32.const 0 + local.set $6 + i32.const 0 + local.set $7 + block $break|0 + i32.const 0 + local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $8 + loop $loop|0 + local.get $3 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $10 + i32.ne + if + local.get $9 + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release + end + local.get $9 + local.set $7 + local.get $7 + i32.const 0 + i32.ne + if + local.get $6 + local.get $7 + call $~lib/string/String#get:length + i32.add + local.set $6 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + unreachable + end + i32.const 0 + local.set $11 + local.get $6 + local.get $5 + local.get $2 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $12 + block $break|1 + i32.const 0 + local.set $8 + loop $loop|1 + local.get $8 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $4 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $7 + local.tee $3 + i32.ne + if + local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $10 + local.set $7 + local.get $7 + i32.const 0 + i32.ne + if + local.get $7 + call $~lib/string/String#get:length + local.set $10 + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $10 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $11 + local.get $10 + i32.add + local.set $11 + end + local.get $5 + if + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $11 + local.get $5 + i32.add + local.set $11 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $loop|1 + end + unreachable + end + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $9 + local.set $7 + local.get $7 + i32.const 0 + i32.ne + if + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + local.get $12 + local.set $9 + local.get $1 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $9 + ) + (func $~lib/array/Array<~lib/string/String>#join (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#join_str + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + ) + (func $~lib/rt/__allocArray (; 76 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + i32.const 16 + local.get $2 + call $~lib/rt/stub/__alloc + local.set $4 + local.get $0 + local.get $1 + i32.shl + local.set $5 + local.get $5 + i32.const 0 + call $~lib/rt/stub/__alloc + local.set $6 + local.get $4 + local.get $6 + call $~lib/rt/stub/__retain + i32.store + local.get $4 + local.get $6 + i32.store offset=4 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $0 + i32.store offset=12 + local.get $3 + if + local.get $6 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/string/String.fromCodePoint (; 78 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.const 1114111 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 65535 + i32.gt_s + local.set $1 + i32.const 2 + local.get $1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $1 + i32.eqz + if + local.get $2 + local.get $0 + i32.store16 + else + local.get $0 + i32.const 65536 + i32.sub + local.set $0 + local.get $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.add + local.set $3 + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.add + local.set $4 + local.get $2 + local.get $3 + i32.const 16 + i32.shl + local.get $4 + i32.or + i32.store + end + local.get $2 + call $~lib/rt/stub/__retain + ) + (func $~lib/string/String.fromCharCode (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 0 + i32.gt_s + local.set $2 + i32.const 2 + local.get $2 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $3 + local.get $3 + local.get $0 + i32.store16 + local.get $2 + if + local.get $3 + local.get $1 + i32.store16 offset=2 + end + local.get $3 + call $~lib/rt/stub/__retain + ) + (func $~lib/string/String.fromCharCode|trampoline (; 80 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const -1 + local.set $1 + end + local.get $0 + local.get $1 + call $~lib/string/String.fromCharCode + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 83 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONHandler#popObject (; 84 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 85 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_hello#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray (; 86 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 2152 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 840 + i32.const 53 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_hello#pushArray (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONHandler#popArray (; 88 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 89 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_hello#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString (; 90 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 2328 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2392 + call $~lib/string/String.__concat + local.tee $4 + local.get $2 + call $~lib/string/String.__concat + local.tee $5 + i32.const 1168 + call $~lib/string/String.__concat + local.tee $6 + i32.const 840 + i32.const 36 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_hello#setString (; 91 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 2304 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=12 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $assembly/hello/main/__near_ArgsParser_hello#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 93 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean (; 94 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 2480 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2544 + call $~lib/string/String.__concat + local.tee $4 + local.get $2 + if (result i32) + i32.const 160 + call $~lib/rt/stub/__retain + local.tee $5 + else + i32.const 184 + call $~lib/rt/stub/__retain + local.tee $6 + end + call $~lib/string/String.__concat + local.tee $7 + i32.const 840 + i32.const 40 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/util/number/decimalCount32 (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 100000 + i32.lt_u + if + local.get $0 + i32.const 100 + i32.lt_u + if + i32.const 1 + i32.const 2 + local.get $0 + i32.const 10 + i32.lt_u + select + return + else + i32.const 4 + i32.const 5 + local.get $0 + i32.const 10000 + i32.lt_u + select + local.set $1 + i32.const 3 + local.get $1 + local.get $0 + i32.const 1000 + i32.lt_u + select + return + end + unreachable + else + local.get $0 + i32.const 10000000 + i32.lt_u + if + i32.const 6 + i32.const 7 + local.get $0 + i32.const 1000000 + i32.lt_u + select + return + else + i32.const 9 + i32.const 10 + local.get $0 + i32.const 1000000000 + i32.lt_u + select + local.set $1 + i32.const 8 + local.get $1 + local.get $0 + i32.const 100000000 + i32.lt_u + select + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_lut (; 97 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + i32.const 3080 + i32.load offset=4 + local.set $3 + block $break|0 + loop $continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + i32.eqz + br_if $break|0 + local.get $1 + i32.const 10000 + i32.div_u + local.set $4 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $9 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $9 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 + end + unreachable + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $1 + i32.const 100 + i32.div_u + local.set $7 + local.get $1 + i32.const 100 + i32.rem_u + local.set $6 + local.get $7 + local.set $1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store + else + local.get $2 + i32.const 1 + i32.sub + local.set $2 + i32.const 48 + local.get $1 + i32.add + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 + end + ) + (func $~lib/util/number/decimalCount64 (; 98 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if + local.get $0 + i64.const 1000000000000 + i64.lt_u + if + i32.const 11 + i32.const 12 + local.get $0 + i64.const 100000000000 + i64.lt_u + select + local.set $1 + i32.const 10 + local.get $1 + local.get $0 + i64.const 10000000000 + i64.lt_u + select + return + else + i32.const 14 + i32.const 15 + local.get $0 + i64.const 100000000000000 + i64.lt_u + select + local.set $1 + i32.const 13 + local.get $1 + local.get $0 + i64.const 10000000000000 + i64.lt_u + select + return + end + unreachable + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if + i32.const 16 + i32.const 17 + local.get $0 + i64.const 10000000000000000 + i64.lt_u + select + return + else + i32.const 19 + i32.const 20 + local.get $0 + i64.const -8446744073709551616 + i64.lt_u + select + local.set $1 + i32.const 18 + local.get $1 + local.get $0 + i64.const 1000000000000000000 + i64.lt_u + select + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa64_lut (; 99 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + i32.const 3080 + i32.load offset=4 + local.set $3 + block $break|0 + loop $continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + i32.eqz + br_if $break|0 + local.get $1 + i64.const 100000000 + i64.div_u + local.set $4 + local.get $1 + local.get $4 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $7 + local.get $6 + i32.const 100 + i32.div_u + local.set $8 + local.get $6 + i32.const 100 + i32.rem_u + local.set $9 + local.get $7 + i32.const 100 + i32.div_u + local.set $10 + local.get $7 + i32.const 100 + i32.rem_u + local.set $11 + local.get $3 + local.get $10 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $11 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + local.get $3 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $9 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 + end + unreachable + end + local.get $0 + local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_lut + ) + (func $~lib/util/number/itoa64 (; 100 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + local.get $0 + i64.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end + local.get $0 + i64.const 0 + i64.lt_s + local.set $1 + local.get $1 + if + i64.const 0 + local.get $0 + i64.sub + local.set $0 + end + local.get $0 + i64.const 4294967295 + i64.le_u + if + local.get $0 + i32.wrap_i64 + local.set $3 + local.get $3 + call $~lib/util/number/decimalCount32 + local.get $1 + i32.add + local.set $4 + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + local.set $7 + local.get $3 + local.set $6 + local.get $4 + local.set $5 + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_lut + else + local.get $0 + call $~lib/util/number/decimalCount64 + local.get $1 + i32.add + local.set $4 + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + local.set $6 + local.get $0 + local.set $8 + local.get $4 + local.set $5 + local.get $6 + local.get $8 + local.get $5 + call $~lib/util/number/utoa64_lut + end + local.get $1 + if + local.get $2 + i32.const 45 + i32.store16 + end + local.get $2 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa (; 101 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + local.get $0 + call $~lib/util/number/itoa64 + return + ) + (func $~lib/number/I64#toString (; 102 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/util/number/itoa + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger (; 103 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 2592 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2544 + call $~lib/string/String.__concat + local.tee $4 + local.get $2 + call $~lib/number/I64#toString + local.tee $5 + call $~lib/string/String.__concat + local.tee $6 + i32.const 840 + i32.const 49 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull (; 105 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 3112 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 840 + i32.const 44 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_hello#setNull (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 2304 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_hello#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 109 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/hello (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 3232 + local.get $0 + call $~lib/string/String.__concat + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/array/Array#constructor (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 13 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#push (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 15 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 10 + call $~lib/array/Array#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + local.tee $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $1 + local.get $2 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $1 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop + local.get $0 + ) + (func $~lib/array/Array#get:length (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 115 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1384 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load + call $~lib/array/Array#get:length + i32.const 1 + i32.sub + call $~lib/array/Array#__get + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 118 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array#__unchecked_set (; 119 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/array/Array#__set (; 120 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + local.get $1 + local.get $3 + i32.ge_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + ) + (func $~lib/string/String#substring (; 121 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $6 + local.get $2 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $7 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $8 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $9 + local.get $9 + local.get $8 + i32.sub + local.set $3 + local.get $3 + i32.eqz + if + i32.const 656 + call $~lib/rt/stub/__retain + return + end + local.get $8 + i32.eqz + if (result i32) + local.get $9 + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $0 + call $~lib/rt/stub/__retain + return + end + local.get $3 + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $10 + local.get $10 + local.get $0 + local.get $8 + i32.add + local.get $3 + call $~lib/memory/memory.copy + local.get $10 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa32 (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end + local.get $0 + i32.const 0 + i32.lt_s + local.set $1 + local.get $1 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + call $~lib/util/number/decimalCount32 + local.get $1 + i32.add + local.set $2 + local.get $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $3 + local.get $3 + local.set $6 + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut + local.get $1 + if + local.get $3 + i32.const 45 + i32.store16 + end + local.get $3 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/util/number/itoa32 + return + ) + (func $~lib/number/I32#toString (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/util/number/itoa + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 125 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 1168 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + i32.const 0 + local.set $2 + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $3 + call $~lib/string/String#charCodeAt + local.set $4 + local.get $4 + i32.const 32 + i32.lt_s + local.tee $5 + if (result i32) + local.get $5 + else + local.get $4 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + end + local.tee $5 + if (result i32) + local.get $5 + else + local.get $4 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + end + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/string/String#substring + local.tee $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $3 + i32.const 1 + i32.add + local.set $2 + local.get $4 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 3264 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 3288 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1672 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 3312 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1720 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 3336 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1768 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 3360 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1816 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 3384 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + i32.const 0 + i32.eqz + if + i32.const 3408 + local.get $4 + call $~lib/number/I32#toString + local.tee $7 + call $~lib/string/String.__concat + local.tee $8 + i32.const 3496 + i32.const 108 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + end + end + end + end + end + end + local.get $6 + call $~lib/rt/stub/__release + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + unreachable + end + local.get $0 + local.get $1 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + call $~lib/string/String#substring + local.tee $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.const 1168 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 126 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey + i32.const 0 + i32.ne + i32.eqz + if + local.get $0 + i32.const 1104 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $0 + i32.load + local.get $0 + i32.load + call $~lib/array/Array#get:length + i32.const 1 + i32.sub + i32.const 0 + call $~lib/array/Array#__set + end + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.gt_s + else + i32.const 0 + end + if + local.get $0 + local.get $1 + local.tee $2 + if (result i32) + local.get $2 + else + unreachable + end + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString + local.get $0 + i32.const 2000 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 127 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 216 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#constructor (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 17 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#constructor (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 16 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#constructor + local.set $2 + local.get $1 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 19 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler#constructor (; 131 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 18 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + local.set $2 + local.get $1 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 21 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler#constructor (; 133 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 20 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=8 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 23 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler#constructor (; 135 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 22 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=8 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 25 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler#constructor (; 137 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 24 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + local.set $2 + local.get $1 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 27 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler#constructor (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 26 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + local.set $2 + local.get $1 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $start:~lib/nearEntry (; 140 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#constructor + global.set $~lib/nearEntry/PrimitiveHandler.String + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler#constructor + global.set $~lib/nearEntry/PrimitiveHandler.Boolean + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler#constructor + global.set $~lib/nearEntry/PrimitiveHandler.U64 + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler#constructor + global.set $~lib/nearEntry/PrimitiveHandler.I64 + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler#constructor + global.set $~lib/nearEntry/PrimitiveHandler.U32 + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler#constructor + global.set $~lib/nearEntry/PrimitiveHandler.I32 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 141 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/encode<~lib/string/String> (; 142 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + ) + (func $~lib/string/String.UTF8.byteLength (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.set $2 + local.get $2 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.add + local.set $3 + local.get $1 + if (result i32) + i32.const 1 + else + i32.const 0 + end + local.set $4 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load16_u + local.set $5 + local.get $5 + i32.const 128 + i32.lt_u + if + local.get $1 + if (result i32) + local.get $5 + i32.eqz + else + i32.const 0 + end + if + br $break|0 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $5 + i32.const 2048 + i32.lt_u + if + local.get $4 + i32.const 2 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $5 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if + local.get $2 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $4 + i32.const 4 + i32.add + local.set $4 + br $continue|0 + end + end + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $4 + i32.const 3 + i32.add + local.set $4 + end + end + br $continue|0 + end + unreachable + end + local.get $4 + local.set $5 + local.get $0 + call $~lib/rt/stub/__release + local.get $5 + ) + (func $~lib/string/String.UTF8.encode (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.set $2 + local.get $0 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.add + local.set $3 + local.get $0 + local.get $1 + call $~lib/string/String.UTF8.byteLength + i32.const 0 + call $~lib/rt/stub/__alloc + local.set $4 + local.get $4 + local.set $5 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load16_u + local.set $6 + local.get $6 + i32.const 128 + i32.lt_u + if + local.get $1 + if (result i32) + local.get $6 + i32.eqz + else + i32.const 0 + end + if + br $break|0 + end + local.get $5 + local.get $6 + i32.store8 + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $6 + i32.const 2048 + i32.lt_u + if + local.get $5 + local.get $6 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + i32.store8 + local.get $5 + local.get $6 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $6 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if + local.get $2 + i32.load16_u offset=2 + local.set $7 + local.get $7 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + i32.const 65536 + local.get $6 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + local.get $7 + i32.const 1023 + i32.and + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.store8 + local.get $5 + local.get $6 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + local.get $6 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $5 + local.get $6 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=3 + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $5 + i32.const 4 + i32.add + local.set $5 + br $continue|0 + end + end + local.get $5 + local.get $6 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + i32.store8 + local.get $5 + local.get $6 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + local.get $6 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $5 + i32.const 3 + i32.add + local.set $5 + end + end + br $continue|0 + end + unreachable + end + local.get $1 + if + local.get $2 + local.get $3 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 567 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + call $~lib/rt/stub/__realloc + local.set $4 + local.get $5 + i32.const 0 + i32.store8 + else + local.get $2 + local.get $3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 571 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 + local.get $1 + call $~lib/assemblyscript-json/util/index/Buffer.getPtr + local.get $3 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + call $~lib/memory/memory.copy + local.get $1 + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#toString + local.tee $1 + call $~lib/assemblyscript-json/util/index/Buffer.fromString + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/hello/main/__wrapper_hello (; 148 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_hello#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/hello/main/hello + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $4 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_setKeyValue#constructor (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 20 + i32.const 28 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 29 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 154 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_setKeyValue#pushObject (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 106 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 110 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 159 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_setKeyValue#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_setKeyValue#pushArray (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_setKeyValue#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_setKeyValue#setString (; 163 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3584 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=12 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3608 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $4 + local.get $2 + local.tee $3 + local.get $4 + i32.load offset=16 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=16 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $assembly/hello/main/__near_ArgsParser_setKeyValue#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 165 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 167 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_setKeyValue#setNull (; 168 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3584 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3608 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $3 + i32.const 0 + local.tee $2 + local.get $3 + i32.load offset=16 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + i32.store offset=16 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 169 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_setKeyValue#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 171 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/near-runtime-ts/util/util.toUTF8 (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/util/util.stringToBytes (; 173 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 1 + i32.sub + local.set $1 + i32.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#constructor + local.set $2 + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 0 + call $~lib/near-runtime-ts/util/util.toUTF8 + local.get $1 + call $~lib/memory/memory.copy + local.get $2 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/storage/Storage#setString (; 174 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $3 + local.get $2 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $4 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $3 + i32.load offset=4 + i64.extend_i32_u + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $4 + i32.load offset=4 + i64.extend_i32_u + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_write + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/setKeyValue (; 175 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + global.get $~lib/near-runtime-ts/storage/storage + local.get $0 + local.get $1 + call $~lib/near-runtime-ts/storage/Storage#setString + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__wrapper_setKeyValue (; 176 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_setKeyValue#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + local.get $3 + i32.load offset=16 + call $assembly/hello/main/setKeyValue + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_getValueByKey#constructor (; 177 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 30 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 31 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 179 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 181 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 182 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_getValueByKey#pushObject (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 165 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 169 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 184 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 187 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 188 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_getValueByKey#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_getValueByKey#pushArray (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 190 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_getValueByKey#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_getValueByKey#setString (; 191 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3584 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=12 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 192 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $assembly/hello/main/__near_ArgsParser_getValueByKey#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 193 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 195 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_getValueByKey#setNull (; 196 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3584 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_getValueByKey#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 199 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/near-runtime-ts/storage/Storage#_internalReadBytes (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i64) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + i32.load offset=4 + i64.extend_i32_u + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_read + local.set $3 + local.get $3 + i64.const 1 + i64.eq + if + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len + local.set $4 + i32.const 0 + local.get $4 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $5 + i64.const 0 + local.get $5 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register + local.get $5 + local.set $6 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + return + else + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + unreachable + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 201 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 202 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $1 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $1 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + end + local.set $1 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $2 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + end + local.set $2 + local.get $2 + local.get $1 + i32.sub + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + i32.const 0 + call $~lib/rt/stub/__alloc + local.set $7 + local.get $7 + local.get $0 + local.get $1 + i32.add + local.get $6 + call $~lib/memory/memory.copy + local.get $7 + call $~lib/rt/stub/__retain + ) + (func $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer (; 204 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $1 + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.UTF8.decode (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.get $1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/near-runtime-ts/util/util.bytesToString (; 206 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + local.get $0 + call $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer + local.tee $1 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/near-runtime-ts/storage/Storage#getString (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/near-runtime-ts/storage/Storage#_internalReadBytes + local.tee $2 + call $~lib/near-runtime-ts/util/util.bytesToString + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/getValueByKey (; 208 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + global.get $~lib/near-runtime-ts/storage/storage + local.get $0 + call $~lib/near-runtime-ts/storage/Storage#getString + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $assembly/hello/main/__wrapper_getValueByKey (; 209 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_getValueByKey#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/hello/main/getValueByKey + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $4 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_setValue#constructor (; 210 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 32 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 33 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 212 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 214 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 215 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_setValue#pushObject (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 233 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 237 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 217 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 218 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 219 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 220 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 221 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_setValue#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_setValue#pushArray (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_setValue#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_setValue#setString (; 224 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3608 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=12 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 225 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $assembly/hello/main/__near_ArgsParser_setValue#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 226 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 227 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_setValue#setNull (; 229 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3608 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 230 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_setValue#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 231 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 232 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/setValue (; 233 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + global.get $~lib/near-runtime-ts/storage/storage + i32.const 2304 + local.get $0 + call $~lib/near-runtime-ts/storage/Storage#setString + local.get $0 + ) + (func $assembly/hello/main/__wrapper_setValue (; 234 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_setValue#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/hello/main/setValue + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $4 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/getValue (; 235 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + global.get $~lib/near-runtime-ts/storage/storage + i32.const 2304 + call $~lib/near-runtime-ts/storage/Storage#getString + local.tee $0 + if (result i32) + local.get $0 + else + unreachable + end + call $~lib/rt/stub/__retain + ) + (func $assembly/hello/main/__wrapper_getValue (; 236 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + call $assembly/hello/main/getValue + local.set $0 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $1 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $~lib/near-runtime-ts/storage/Storage#_fetchIter (; 237 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.tee $4 + i32.const 1 + i32.sub + local.set $2 + local.get $4 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + i64.const 0 + i64.const 1 + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_iter_next + i64.const 1 + i64.eq + else + i32.const 0 + end + i32.eqz + br_if $break|0 + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len + local.set $5 + i32.const 0 + local.get $5 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $4 + i64.const 0 + local.get $4 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register + local.get $4 + i32.const 0 + i32.ne + if + local.get $3 + local.get $4 + call $~lib/near-runtime-ts/util/util.bytesToString + local.tee $6 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $4 + call $~lib/rt/stub/__release + br $continue|0 + end + unreachable + end + local.get $3 + ) + (func $~lib/near-runtime-ts/storage/Storage#keys (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $3 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $3 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_iter_prefix + local.set $4 + local.get $0 + local.get $4 + local.get $2 + call $~lib/near-runtime-ts/storage/Storage#_fetchIter + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $5 + ) + (func $~lib/near-runtime-ts/storage/Storage#keys|trampoline (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const -1 + local.set $2 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/near-runtime-ts/storage/Storage#keys + ) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/string/String>#__get (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1272 + i32.const 1384 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1384 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__unchecked_get + ) + (func $assembly/hello/main/getAllKeys (; 242 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 1 + global.set $~lib/argc + global.get $~lib/near-runtime-ts/storage/storage + i32.const 1696 + i32.const 0 + call $~lib/near-runtime-ts/storage/Storage#keys|trampoline + local.set $0 + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 952 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 953 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 2128 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/array/Array#pop (; 244 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.lt_s + if + i32.const 3640 + i32.const 1384 + i32.const 287 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 245 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 2216 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + call $~lib/array/Array#pop + drop + ) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $assembly/hello/main/__wrapper_getAllKeys (; 247 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + call $assembly/hello/main/getAllKeys + local.set $0 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $1 + local.get $1 + local.get $0 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> + call $~lib/rt/stub/__release + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/benchmark (; 248 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + block $break|0 + loop $continue|0 + local.get $0 + i32.const 10 + i32.lt_s + i32.eqz + br_if $break|0 + global.get $~lib/near-runtime-ts/storage/storage + local.get $0 + call $~lib/number/I32#toString + local.tee $1 + i32.const 3688 + call $~lib/near-runtime-ts/storage/Storage#setString + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + br $continue|0 + end + unreachable + end + i32.const 1 + global.set $~lib/argc + global.get $~lib/near-runtime-ts/storage/storage + i32.const 656 + i32.const 0 + call $~lib/near-runtime-ts/storage/Storage#keys|trampoline + ) + (func $assembly/hello/main/__wrapper_benchmark (; 249 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + call $assembly/hello/main/benchmark + local.set $0 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $1 + local.get $1 + local.get $0 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> + call $~lib/rt/stub/__release + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_benchmark_storage#constructor (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 34 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 35 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 255 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_benchmark_storage#pushObject (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 348 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 352 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 260 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_benchmark_storage#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_benchmark_storage#pushArray (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 263 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_benchmark_storage#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 265 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 266 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_benchmark_storage#setInteger (; 267 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 1696 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + i32.wrap_i64 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $assembly/hello/main/__near_ArgsParser_benchmark_storage#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_benchmark_storage#setNull (; 269 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_benchmark_storage#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 272 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/util/string/isSpace (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 255 + i32.le_s + if + block $break|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + local.set $1 + local.get $1 + i32.const 9 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 10 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 11 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 12 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 13 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 32 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 160 + i32.eq + br_if $case6|0 + br $break|0 + end + end + end + end + end + end + end + i32.const 1 + return + end + i32.const 0 + return + end + local.get $0 + i32.const 8192 + i32.ge_s + if (result i32) + local.get $0 + i32.const 8202 + i32.le_s + else + i32.const 0 + end + if + i32.const 1 + return + end + block $break|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $0 + local.set $1 + local.get $1 + i32.const 5760 + i32.eq + br_if $case0|1 + local.get $1 + i32.const 8232 + i32.eq + br_if $case1|1 + local.get $1 + i32.const 8233 + i32.eq + br_if $case2|1 + local.get $1 + i32.const 8239 + i32.eq + br_if $case3|1 + local.get $1 + i32.const 8287 + i32.eq + br_if $case4|1 + local.get $1 + i32.const 12288 + i32.eq + br_if $case5|1 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|1 + br $break|1 + end + end + end + end + end + end + end + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/util/string/strtol (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.set $4 + local.get $4 + i32.load16_u + local.set $5 + i32.const 1 + local.set $6 + block $break|0 + loop $continue|0 + local.get $5 + call $~lib/util/string/isSpace + i32.eqz + br_if $break|0 + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 + end + unreachable + end + local.get $5 + i32.const 45 + i32.eq + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i32.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + i32.const -1 + local.set $6 + else + local.get $5 + i32.const 43 + i32.eq + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i32.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + end + end + local.get $1 + i32.eqz + if + local.get $5 + i32.const 48 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $4 + i32.const 2 + i32.add + i32.load16_u + local.set $3 + local.get $3 + i32.const 66 + i32.eq + br_if $case0|1 + local.get $3 + i32.const 98 + i32.eq + br_if $case1|1 + local.get $3 + i32.const 79 + i32.eq + br_if $case2|1 + local.get $3 + i32.const 111 + i32.eq + br_if $case3|1 + local.get $3 + i32.const 88 + i32.eq + br_if $case4|1 + local.get $3 + i32.const 120 + i32.eq + br_if $case5|1 + br $case6|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 + end + i32.const 10 + local.set $1 + end + else + i32.const 10 + local.set $1 + end + else + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i32.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + end + i32.const 0 + local.set $7 + block $break|2 + loop $continue|2 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + i32.eqz + br_if $break|2 + local.get $4 + i32.load16_u + local.set $5 + local.get $5 + i32.const 48 + i32.ge_s + if (result i32) + local.get $5 + i32.const 57 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 48 + i32.sub + local.set $5 + else + local.get $5 + i32.const 65 + i32.ge_s + if (result i32) + local.get $5 + i32.const 90 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + local.get $5 + i32.const 97 + i32.ge_s + if (result i32) + local.get $5 + i32.const 122 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + br $break|2 + end + end + end + local.get $5 + local.get $1 + i32.ge_s + if + br $break|2 + end + local.get $7 + local.get $1 + i32.mul + local.get $5 + i32.add + local.set $7 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $continue|2 + end + unreachable + end + local.get $6 + local.get $7 + i32.mul + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/number/I32.parseInt (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/util/string/strtol + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/util/number/utoa64 (; 276 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + local.get $0 + i64.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end + local.get $0 + i64.const 4294967295 + i64.le_u + if + local.get $0 + i32.wrap_i64 + local.set $2 + local.get $2 + call $~lib/util/number/decimalCount32 + local.set $3 + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $1 + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut + else + local.get $0 + call $~lib/util/number/decimalCount64 + local.set $3 + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $1 + local.get $1 + local.set $5 + local.get $0 + local.set $7 + local.get $3 + local.set $4 + local.get $5 + local.get $7 + local.get $4 + call $~lib/util/number/utoa64_lut + end + local.get $1 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa (; 277 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + local.get $0 + call $~lib/util/number/utoa64 + return + ) + (func $~lib/number/U64#toString (; 278 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/util/number/itoa + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/hello/main/benchmark_storage (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + i32.const 0 + local.set $1 + block $break|0 + loop $continue|0 + local.get $1 + local.get $0 + i32.lt_s + i32.eqz + br_if $break|0 + global.get $~lib/near-runtime-ts/storage/storage + local.get $1 + call $~lib/number/I32#toString + local.tee $2 + local.get $1 + call $~lib/number/I32#toString + local.tee $3 + call $~lib/near-runtime-ts/storage/Storage#setString + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + br $continue|0 + end + unreachable + end + i32.const 0 + local.set $1 + i64.const 0 + local.set $4 + block $break|1 + loop $continue|1 + local.get $1 + local.get $0 + i32.lt_s + i32.eqz + br_if $break|1 + global.get $~lib/near-runtime-ts/storage/storage + local.get $1 + call $~lib/number/I32#toString + local.tee $3 + call $~lib/near-runtime-ts/storage/Storage#getString + local.tee $2 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $5 + local.get $4 + local.get $5 + i64.extend_i32_s + i64.add + local.set $4 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + br $continue|1 + end + unreachable + end + local.get $4 + call $~lib/number/U64#toString + ) + (func $assembly/hello/main/__wrapper_benchmark_storage (; 280 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_benchmark_storage#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/hello/main/benchmark_storage + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $4 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_limited_storage#constructor (; 281 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 36 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 37 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 286 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_limited_storage#pushObject (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 412 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 416 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 288 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 289 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 291 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 292 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_limited_storage#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_limited_storage#pushArray (; 293 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 294 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_limited_storage#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/util/string/strtol (; 295 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i64) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.set $4 + local.get $4 + i32.load16_u + local.set $5 + i64.const 1 + local.set $6 + block $break|0 + loop $continue|0 + local.get $5 + call $~lib/util/string/isSpace + i32.eqz + br_if $break|0 + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 + end + unreachable + end + local.get $5 + i32.const 45 + i32.eq + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + i64.const -1 + local.set $6 + else + local.get $5 + i32.const 43 + i32.eq + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + end + end + local.get $1 + i32.eqz + if + local.get $5 + i32.const 48 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $4 + i32.const 2 + i32.add + i32.load16_u + local.set $7 + local.get $7 + i32.const 66 + i32.eq + br_if $case0|1 + local.get $7 + i32.const 98 + i32.eq + br_if $case1|1 + local.get $7 + i32.const 79 + i32.eq + br_if $case2|1 + local.get $7 + i32.const 111 + i32.eq + br_if $case3|1 + local.get $7 + i32.const 88 + i32.eq + br_if $case4|1 + local.get $7 + i32.const 120 + i32.eq + br_if $case5|1 + br $case6|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 + end + i32.const 10 + local.set $1 + end + else + i32.const 10 + local.set $1 + end + else + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + end + i64.const 0 + local.set $8 + block $break|2 + loop $continue|2 + local.get $2 + local.tee $7 + i32.const 1 + i32.sub + local.set $2 + local.get $7 + i32.eqz + br_if $break|2 + local.get $4 + i32.load16_u + local.set $5 + local.get $5 + i32.const 48 + i32.ge_s + if (result i32) + local.get $5 + i32.const 57 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 48 + i32.sub + local.set $5 + else + local.get $5 + i32.const 65 + i32.ge_s + if (result i32) + local.get $5 + i32.const 90 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + local.get $5 + i32.const 97 + i32.ge_s + if (result i32) + local.get $5 + i32.const 122 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + br $break|2 + end + end + end + local.get $5 + local.get $1 + i32.ge_s + if + br $break|2 + end + local.get $8 + local.get $1 + i64.extend_i32_s + i64.mul + local.get $5 + i64.extend_i32_s + i64.add + local.set $8 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $continue|2 + end + unreachable + end + local.get $6 + local.get $8 + i64.mul + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/number/U64.parseInt (; 296 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/util/string/strtol + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/hello/main/__near_ArgsParser_limited_storage#setString (; 297 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3720 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + i32.const 0 + call $~lib/number/U64.parseInt + i64.store offset=16 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 298 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $assembly/hello/main/__near_ArgsParser_limited_storage#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 299 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 300 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 301 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_limited_storage#setNull (; 302 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 303 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_limited_storage#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 304 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 305 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/near-runtime-ts/contract/Context#get:storageUsage (; 306 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_usage + ) + (func $~lib/near-runtime-ts/storage/Storage#delete (; 307 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + i32.load offset=4 + i64.extend_i32_u + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_remove + drop + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/limited_storage (; 308 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + local.set $1 + block $break|0 + loop $continue|0 + global.get $~lib/near-runtime-ts/contract/context + call $~lib/near-runtime-ts/contract/Context#get:storageUsage + local.get $0 + i64.le_u + i32.eqz + br_if $break|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + global.get $~lib/near-runtime-ts/storage/storage + local.get $1 + call $~lib/number/I32#toString + local.tee $2 + local.get $1 + call $~lib/number/I32#toString + local.tee $3 + call $~lib/near-runtime-ts/storage/Storage#setString + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + br $continue|0 + end + unreachable + end + global.get $~lib/near-runtime-ts/contract/context + call $~lib/near-runtime-ts/contract/Context#get:storageUsage + local.get $0 + i64.gt_u + if + global.get $~lib/near-runtime-ts/storage/storage + local.get $1 + call $~lib/number/I32#toString + local.tee $3 + call $~lib/near-runtime-ts/storage/Storage#delete + local.get $3 + call $~lib/rt/stub/__release + end + local.get $1 + call $~lib/number/I32#toString + ) + (func $assembly/hello/main/__wrapper_limited_storage (; 309 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_limited_storage#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i64.load offset=16 + call $assembly/hello/main/limited_storage + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $4 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#constructor (; 310 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 38 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 311 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 39 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 312 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 313 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 314 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 315 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#pushObject (; 316 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 476 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 480 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 317 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 318 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 319 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 320 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 321 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#pushArray (; 322 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 323 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 324 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 325 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 326 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#setInteger (; 327 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 1696 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + i32.wrap_i64 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 328 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#setNull (; 329 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 330 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 331 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 332 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/benchmark_sum_n (; 333 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i64) + i32.const 0 + local.set $1 + i64.const 0 + local.set $2 + block $break|0 + loop $continue|0 + local.get $1 + local.get $0 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $1 + i64.extend_i32_s + i64.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $continue|0 + end + unreachable + end + local.get $2 + call $~lib/number/U64#toString + ) + (func $assembly/hello/main/__wrapper_benchmark_sum_n (; 334 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/hello/main/benchmark_sum_n + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $4 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $~lib/near-runtime-ts/logging/logging.log (; 335 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $1 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $1 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/returnHiWithLogs (; 336 ;) (type $FUNCSIG$i) (result i32) + i32.const 3760 + call $~lib/near-runtime-ts/logging/logging.log + i32.const 3792 + call $~lib/near-runtime-ts/logging/logging.log + i32.const 3824 + call $~lib/rt/stub/__retain + ) + (func $assembly/hello/main/__wrapper_returnHiWithLogs (; 337 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + call $assembly/hello/main/returnHiWithLogs + local.set $0 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $1 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_testSetRemove#constructor (; 338 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 40 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 339 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 41 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 340 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 341 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 342 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 343 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_testSetRemove#pushObject (; 344 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 561 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 565 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 345 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 346 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 347 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 348 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_testSetRemove#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_testSetRemove#pushArray (; 350 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 351 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_testSetRemove#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_testSetRemove#setString (; 352 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3608 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=12 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 353 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $assembly/hello/main/__near_ArgsParser_testSetRemove#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 354 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 356 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_testSetRemove#setNull (; 357 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3608 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 358 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_testSetRemove#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 359 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 360 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/testSetRemove (; 361 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + global.get $~lib/near-runtime-ts/storage/storage + i32.const 3848 + local.get $0 + call $~lib/near-runtime-ts/storage/Storage#setString + global.get $~lib/near-runtime-ts/storage/storage + i32.const 3848 + call $~lib/near-runtime-ts/storage/Storage#delete + global.get $~lib/near-runtime-ts/storage/storage + i32.const 3848 + call $~lib/near-runtime-ts/storage/Storage#getString + local.tee $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 3872 + i32.const 952 + i32.const 1016 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__wrapper_testSetRemove (; 362 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_testSetRemove#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/hello/main/testSetRemove + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_insertStrings#constructor (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 20 + i32.const 42 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 364 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 43 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 365 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 366 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 367 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 368 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_insertStrings#pushObject (; 369 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 621 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 625 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 370 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 372 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 373 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_insertStrings#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_insertStrings#pushArray (; 375 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 376 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_insertStrings#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 377 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 378 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 379 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_insertStrings#setInteger (; 380 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3928 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + i32.wrap_i64 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3952 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + i32.wrap_i64 + i32.store offset=16 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 381 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $assembly/hello/main/__near_ArgsParser_insertStrings#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_insertStrings#setNull (; 382 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 383 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_insertStrings#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 384 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 385 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/buildString (; 386 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 0 + i32.ge_s + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 1019 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $1 + block $break|0 + i32.const 20 + local.set $2 + loop $loop|0 + local.get $2 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + local.tee $4 + local.get $1 + local.tee $5 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $4 + local.set $1 + local.get $0 + local.get $2 + i32.shr_s + i32.const 1 + i32.and + if + local.get $1 + i32.const 312 + call $~lib/string/String.__concat + local.tee $4 + local.tee $5 + local.get $1 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + ) + (func $~lib/string/String#substr (; 387 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.set $3 + local.get $2 + local.set $4 + local.get $0 + call $~lib/string/String#get:length + local.set $5 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $3 + i32.add + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + local.set $3 + end + local.get $4 + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + local.tee $6 + local.get $5 + local.get $3 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $8 + local.get $8 + i32.const 0 + i32.le_s + if + i32.const 656 + call $~lib/rt/stub/__retain + return + end + local.get $8 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $9 + local.get $9 + local.get $0 + local.get $3 + i32.add + local.get $8 + call $~lib/memory/memory.copy + local.get $9 + call $~lib/rt/stub/__retain + ) + (func $assembly/hello/main/insertStrings (; 388 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $assembly/hello/main/buildString + local.set $2 + block $break|0 + local.get $0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + i32.eqz + br_if $break|0 + global.get $~lib/near-runtime-ts/storage/storage + local.get $2 + local.get $1 + local.get $3 + i32.sub + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substr + local.tee $4 + i32.const 1648 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3976 + call $~lib/near-runtime-ts/storage/Storage#setString + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__wrapper_insertStrings (; 389 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_insertStrings#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + local.get $3 + i32.load offset=16 + call $assembly/hello/main/insertStrings + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_deleteStrings#constructor (; 390 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 20 + i32.const 44 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 391 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 45 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 392 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 393 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 394 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 395 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_deleteStrings#pushObject (; 396 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 681 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 685 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 397 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 398 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 399 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 400 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 401 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_deleteStrings#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_deleteStrings#pushArray (; 402 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 403 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_deleteStrings#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 404 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 405 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 406 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_deleteStrings#setInteger (; 407 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3928 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + i32.wrap_i64 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3952 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + i32.wrap_i64 + i32.store offset=16 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 408 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $assembly/hello/main/__near_ArgsParser_deleteStrings#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_deleteStrings#setNull (; 409 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 410 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_deleteStrings#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 411 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 412 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/deleteStrings (; 413 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $assembly/hello/main/buildString + local.set $2 + block $break|0 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + loop $loop|0 + local.get $3 + local.get $0 + i32.ge_s + i32.eqz + br_if $break|0 + global.get $~lib/near-runtime-ts/storage/storage + local.get $2 + local.get $1 + local.get $3 + i32.sub + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substr + local.tee $4 + i32.const 1648 + call $~lib/string/String.__concat + local.tee $5 + call $~lib/near-runtime-ts/storage/Storage#delete + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__wrapper_deleteStrings (; 414 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_deleteStrings#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + local.get $3 + i32.load offset=16 + call $assembly/hello/main/deleteStrings + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_recurse#constructor (; 415 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 46 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 416 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 47 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 417 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 418 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 419 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 420 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_recurse#pushObject (; 421 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 736 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 740 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 422 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 423 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 424 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 425 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 426 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_recurse#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_recurse#pushArray (; 427 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 428 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_recurse#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 429 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 430 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 431 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_recurse#setInteger (; 432 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 1696 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + i32.wrap_i64 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 433 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $assembly/hello/main/__near_ArgsParser_recurse#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_recurse#setNull (; 434 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 435 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_recurse#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 436 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 437 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/recurse (; 438 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.le_s + if + local.get $0 + return + end + local.get $0 + i32.const 1 + i32.sub + call $assembly/hello/main/recurse + i32.const 1 + i32.add + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 439 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/number/I64#toString + local.tee $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 440 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/encode (; 441 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 + local.get $1 + i64.extend_i32_s + call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger + local.get $0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__wrapper_recurse (; 442 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_recurse#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/hello/main/recurse + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_callPromise#constructor (; 443 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 48 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 444 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 49 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 445 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 446 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 447 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 448 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/model/PromiseArgs#constructor (; 449 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 36 + i32.const 50 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + i32.const 0 + i32.store offset=24 + local.get $0 + i32.const 0 + i32.store offset=28 + local.get $0 + i32.const 0 + i32.store offset=32 + local.get $0 + ) + (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#constructor (; 450 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 51 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 451 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 52 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 452 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 453 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 454 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 455 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#pushObject (; 456 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 4024 + i32.const 77 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 4024 + i32.const 81 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.const 4000 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode + local.set $3 + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=8 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $1 + i32.const 4088 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode + local.set $2 + local.get $3 + i32.load offset=24 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=24 + i32.const 0 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 457 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 458 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 459 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 460 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 461 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/model/__near_JSONHandler_PromiseArgs#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#pushArray (; 462 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 463 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/model/__near_JSONHandler_PromiseArgs#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#setString (; 464 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4128 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 4160 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $2 + local.tee $3 + local.get $4 + i32.load offset=4 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 4200 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=20 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=20 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 465 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $assembly/hello/model/__near_JSONHandler_PromiseArgs#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 466 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 467 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#setInteger (; 468 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4232 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.wrap_i64 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 4256 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.wrap_i64 + i32.store offset=16 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 4288 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.wrap_i64 + i32.store offset=28 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 4336 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.wrap_i64 + i32.store offset=32 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 469 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $assembly/hello/model/__near_JSONHandler_PromiseArgs#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#setNull (; 470 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4128 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 4160 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 0 + local.tee $2 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + i32.store offset=4 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 4000 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=8 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=8 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 4200 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 0 + local.tee $2 + local.get $3 + i32.load offset=20 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + i32.store offset=20 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 4088 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=24 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=24 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 471 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/model/__near_JSONHandler_PromiseArgs#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 472 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 473 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/model/PromiseArgs#decode (; 474 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + call $assembly/hello/model/__near_JSONHandler_PromiseArgs#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $5 + local.get $3 + local.tee $4 + local.get $5 + local.tee $6 + local.get $4 + i32.load offset=4 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + i32.store offset=4 + local.get $5 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode (; 475 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + i32.const 0 + call $assembly/hello/model/PromiseArgs#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $0 + local.get $1 + call $assembly/hello/model/PromiseArgs#decode + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $assembly/hello/main/__near_ArgsParser_callPromise#pushObject (; 476 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 797 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 801 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.const 4000 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode + local.set $3 + local.get $2 + i32.load offset=12 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=12 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 477 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 478 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 479 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 480 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 481 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_callPromise#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_callPromise#pushArray (; 482 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 483 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_callPromise#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 484 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 485 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 486 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 487 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_callPromise#setNull (; 488 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4000 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 489 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_callPromise#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 490 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 491 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 492 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 928 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 493 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 1080 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + call $~lib/array/Array#pop + drop + ) + (func $assembly/hello/model/PromiseArgs#encode (; 494 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + call $~lib/rt/stub/__retain + else + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + end + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 4128 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4160 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=8 + i32.const 4000 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 4232 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=16 + i32.const 4256 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=20 + i32.const 4200 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=24 + i32.const 4088 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=28 + i32.const 4288 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=32 + i32.const 4336 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/encode (; 495 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + local.get $2 + call $assembly/hello/model/PromiseArgs#encode + call $~lib/rt/stub/__release + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/model/InputPromiseArgs#encode (; 496 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + call $~lib/rt/stub/__retain + else + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + end + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 4000 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/bignum/integer/u128/u128#constructor (; 497 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + local.get $1 + i64.store + local.get $0 + local.get $2 + i64.store offset=8 + local.get $0 + ) + (func $~lib/polyfills/bswap (; 498 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (local $1 i64) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $1 + local.get $0 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $2 + local.get $1 + local.get $2 + i64.or + local.set $3 + local.get $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $1 + local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $2 + local.get $1 + local.get $2 + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/bignum/integer/u128/u128#toArrayBufferBE (; 499 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + local.get $0 + i64.load offset=8 + call $~lib/polyfills/bswap + i64.store + local.get $1 + local.get $0 + i64.load + call $~lib/polyfills/bswap + i64.store offset=8 + ) + (func $~lib/bignum/integer/u128/u128#toArrayBufferLE (; 500 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + local.get $0 + i64.load + i64.store + local.get $1 + local.get $0 + i64.load offset=8 + i64.store offset=8 + ) + (func $~lib/bignum/integer/u128/u128#toArrayBuffer (; 501 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $2 + if + local.get $0 + local.get $1 + call $~lib/bignum/integer/u128/u128#toArrayBufferBE + else + local.get $0 + local.get $1 + call $~lib/bignum/integer/u128/u128#toArrayBufferLE + end + ) + (func $~lib/near-runtime-ts/contract/ContractPromise.create (; 502 ;) (type $FUNCSIG$iiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $5 + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $6 + local.get $4 + local.set $7 + i32.const 0 + local.set $8 + i32.const 0 + i32.const 16 + call $~lib/typedarray/Uint8Array#constructor + local.set $9 + local.get $9 + i32.load offset=4 + local.set $10 + local.get $7 + local.get $10 + local.get $8 + call $~lib/bignum/integer/u128/u128#toArrayBuffer + local.get $9 + local.set $10 + local.get $5 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $5 + i32.load offset=4 + i64.extend_i32_u + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + i32.load offset=4 + i64.extend_i32_u + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + i32.load offset=4 + i64.extend_i32_u + local.get $10 + i32.load offset=4 + i64.extend_i32_u + local.get $3 + call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_create + local.set $11 + i32.const 8 + i32.const 54 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $9 + local.get $9 + local.get $11 + i64.store + local.get $9 + call $~lib/rt/stub/__retain + local.set $8 + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $8 + ) + (func $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString (; 503 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + local.get $1 + call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $2 + local.get $1 + local.get $2 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register + local.get $2 + call $~lib/near-runtime-ts/util/util.bytesToString + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/contract/Context#get:contractName (; 504 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.current_account_id + local.get $0 + i64.const 0 + call $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString + ) + (func $~lib/near-runtime-ts/contract/ContractPromise#then (; 505 ;) (type $FUNCSIG$iiiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $6 + local.get $2 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $7 + local.get $5 + local.set $8 + i32.const 0 + local.set $9 + i32.const 0 + i32.const 16 + call $~lib/typedarray/Uint8Array#constructor + local.set $10 + local.get $10 + i32.load offset=4 + local.set $11 + local.get $8 + local.get $11 + local.get $9 + call $~lib/bignum/integer/u128/u128#toArrayBuffer + local.get $10 + local.set $11 + local.get $0 + i64.load + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + i32.load offset=4 + i64.extend_i32_u + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $7 + i32.load offset=4 + i64.extend_i32_u + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $3 + i32.load offset=4 + i64.extend_i32_u + local.get $11 + i32.load offset=4 + i64.extend_i32_u + local.get $4 + call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_then + local.set $12 + i32.const 8 + i32.const 54 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $10 + local.get $10 + local.get $12 + i64.store + local.get $10 + call $~lib/rt/stub/__retain + local.set $9 + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $11 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $9 + ) + (func $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult (; 506 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i64.load + call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_return + ) + (func $assembly/hello/main/callPromise (; 507 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 4 + i32.const 53 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + local.get $0 + i32.load offset=8 + i32.store + local.get $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.load offset=16 + i64.extend_i32_s + local.set $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 0 + i32.const 656 + call $assembly/hello/model/InputPromiseArgs#encode + local.tee $4 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.tee $5 + local.get $0 + i32.load offset=12 + i64.extend_i32_s + i32.const 0 + local.get $0 + i32.load offset=16 + i64.extend_i32_s + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $6 + call $~lib/near-runtime-ts/contract/ContractPromise.create + local.set $7 + local.get $0 + i32.load offset=20 + if + local.get $2 + local.tee $8 + local.get $0 + i32.load offset=24 + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $9 + i32.store + local.get $0 + i32.load offset=28 + i64.extend_i32_s + local.set $10 + local.get $7 + global.get $~lib/near-runtime-ts/contract/context + call $~lib/near-runtime-ts/contract/Context#get:contractName + local.tee $9 + local.get $0 + i32.load offset=20 + local.get $2 + i32.const 0 + i32.const 656 + call $assembly/hello/model/InputPromiseArgs#encode + local.tee $8 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.tee $11 + local.get $0 + i32.load offset=32 + i64.extend_i32_s + i32.const 0 + local.get $10 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $12 + call $~lib/near-runtime-ts/contract/ContractPromise#then + local.set $13 + local.get $7 + call $~lib/rt/stub/__release + local.get $13 + local.set $7 + local.get $9 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $11 + call $~lib/rt/stub/__release + local.get $12 + call $~lib/rt/stub/__release + end + local.get $7 + call $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__wrapper_callPromise (; 508 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_callPromise#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/hello/main/callPromise + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__near_ArgsParser_callbackWithName#constructor (; 509 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 55 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 510 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 56 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 511 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 512 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 513 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 514 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/main/__near_ArgsParser_callbackWithName#pushObject (; 515 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 853 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 857 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.const 4000 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode + local.set $3 + local.get $2 + i32.load offset=12 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=12 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 516 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 517 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 518 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 519 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 520 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_callbackWithName#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__near_ArgsParser_callbackWithName#pushArray (; 521 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 522 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/main/__near_ArgsParser_callbackWithName#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 523 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 524 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 525 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 526 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/main/__near_ArgsParser_callbackWithName#setNull (; 527 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4000 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 528 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/main/__near_ArgsParser_callbackWithName#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 529 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 530 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> (; 531 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 268435452 + i32.gt_u + if + i32.const 552 + i32.const 1384 + i32.const 45 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const 61 + i32.const 0 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.load offset=4 + i32.const 0 + local.get $1 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set (; 532 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $3 + local.get $3 + i32.load + local.set $4 + local.get $2 + local.get $4 + i32.ne + if + local.get $3 + local.get $2 + call $~lib/rt/stub/__retain + i32.store + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set (; 533 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $3 + local.get $1 + local.get $3 + i32.gt_u + if + local.get $2 + call $~lib/rt/stub/__release + i32.const 1272 + i32.const 1384 + i32.const 121 + i32.const 38 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set + local.get $1 + local.get $3 + i32.ge_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/near-runtime-ts/contract/ContractPromise.getResults (; 534 ;) (type $FUNCSIG$i) (result i32) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_results_count + local.set $0 + local.get $0 + i32.wrap_i64 + call $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> + local.set $1 + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + i64.extend_i32_s + local.get $0 + i64.lt_s + i32.eqz + br_if $break|0 + block $continue|0 + local.get $2 + i64.extend_i32_s + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_result + i32.wrap_i64 + local.set $3 + local.get $3 + i32.const 1 + i32.eq + local.set $4 + local.get $4 + i32.eqz + if + local.get $1 + local.get $2 + i32.const 8 + i32.const 60 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $5 + local.get $5 + local.get $3 + i32.store + local.get $5 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set + local.get $5 + call $~lib/rt/stub/__release + br $continue|0 + end + i32.const 0 + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $5 + i64.const 0 + local.get $5 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register + local.get $1 + local.get $2 + i32.const 8 + i32.const 60 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $6 + local.get $6 + local.get $3 + i32.store + local.get $6 + local.get $5 + i32.store offset=4 + local.get $6 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + ) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length (; 535 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array.create (; 536 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 268435452 + i32.gt_u + if + i32.const 552 + i32.const 1384 + i32.const 45 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const 59 + i32.const 0 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.load offset=4 + i32.const 0 + local.get $1 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $assembly/hello/model/MyContractPromiseResult#constructor (; 537 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 58 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 538 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $3 + local.get $3 + i32.load + local.set $4 + local.get $2 + local.get $4 + i32.ne + if + local.get $3 + local.get $2 + call $~lib/rt/stub/__retain + i32.store + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array#__set (; 539 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $3 + local.get $1 + local.get $3 + i32.gt_u + if + local.get $2 + call $~lib/rt/stub/__release + i32.const 1272 + i32.const 1384 + i32.const 121 + i32.const 38 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + local.get $1 + local.get $3 + i32.ge_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get (; 540 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get (; 541 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1272 + i32.const 1384 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1384 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get + ) + (func $~lib/array/Array#__unchecked_get (; 542 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array#__get (; 543 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1272 + i32.const 1384 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1384 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $assembly/hello/model/MyCallbackResult#constructor (; 544 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 57 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + ) + (func $assembly/hello/model/__near_JSONHandler_MyCallbackResult#constructor (; 545 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 62 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 546 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 63 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 547 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 548 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 549 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 550 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/model/__near_JSONHandler_MyCallbackResult#pushObject (; 551 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 4024 + i32.const 225 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 4024 + i32.const 229 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 552 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 553 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 554 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 555 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 556 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/model/__near_JSONHandler_MyCallbackResult#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/array/Array#constructor (; 557 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 59 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 1272 + i32.const 1384 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/ArrayHandler#constructor (; 558 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 64 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/stub/__retain + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor (; 559 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 65 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar (; 560 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace (; 561 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar (; 562 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace (; 563 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#constructor (; 564 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 66 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 565 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 67 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 566 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 567 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 568 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 569 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/decode (; 570 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + i32.const 0 + call $assembly/hello/model/MyCallbackResult#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $0 + local.get $1 + call $assembly/hello/model/MyCallbackResult#decode + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#pushObject (; 571 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 4024 + i32.const 172 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 4024 + i32.const 176 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.const 1744 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode + local.set $3 + local.get $2 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 572 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 573 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 574 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 575 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 576 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#pushArray (; 577 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 578 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 579 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 580 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#setBoolean (; 581 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4400 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.store8 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 582 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 583 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#setNull (; 584 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 1744 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=4 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=4 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 585 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 586 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 587 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/model/MyContractPromiseResult#decode (; 588 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $5 + local.get $3 + local.tee $4 + local.get $5 + local.tee $6 + local.get $4 + i32.load offset=4 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + i32.store offset=4 + local.get $5 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode (; 589 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + i32.const 0 + call $assembly/hello/model/MyContractPromiseResult#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $0 + local.get $1 + call $assembly/hello/model/MyContractPromiseResult#decode + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $~lib/array/Array#push (; 590 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/ArrayHandler#pushObject (; 591 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=8 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.load offset=12 + call $~lib/rt/stub/__retain + local.set $3 + local.get $2 + local.get $3 + call $~lib/nearEntry/decode + local.set $4 + local.get $0 + i32.load offset=4 + local.get $4 + call $~lib/array/Array#push + drop + i32.const 0 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit (; 592 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1864 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar (; 593 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $1 + local.get $1 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1168 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1600 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1624 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1624 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1648 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1672 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1696 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1720 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1744 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1768 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1792 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1816 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1840 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1920 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString (; 594 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1192 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1432 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1600 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey (; 595 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 2000 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2024 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject (; 596 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1080 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2064 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#pushArray (; 597 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u + if + local.get $0 + i32.const 0 + i32.store8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 4424 + i32.const 4480 + i32.const 276 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray (; 598 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#setString (; 599 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString (; 600 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString + local.tee $1 + call $~lib/nearEntry/ArrayHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert (; 601 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler#setBoolean (; 602 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean (; 603 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/ArrayHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/ArrayHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler#setInteger (; 604 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber (; 605 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/ArrayHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler#setNull (; 606 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull (; 607 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/ArrayHandler#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue (; 608 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize (; 609 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> (; 610 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.get $3 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler#constructor + local.set $4 + i32.const 0 + local.get $4 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize + local.get $3 + local.set $6 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 611 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $assembly/hello/model/__near_JSONHandler_MyCallbackResult#pushArray (; 612 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4376 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/array/Array> + local.set $3 + local.get $2 + i32.load + call $~lib/rt/stub/__release + local.get $3 + i32.store + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 613 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2128 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/hello/model/__near_JSONHandler_MyCallbackResult#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1104 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1128 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2240 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/model/__near_JSONHandler_MyCallbackResult#setString (; 614 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 1696 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 615 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1168 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $assembly/hello/model/__near_JSONHandler_MyCallbackResult#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 616 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 617 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 618 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/hello/model/__near_JSONHandler_MyCallbackResult#setNull (; 619 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4376 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 1696 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 0 + local.tee $2 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + i32.store offset=4 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 620 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/hello/model/__near_JSONHandler_MyCallbackResult#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 621 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 622 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3176 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/model/MyCallbackResult#decode (; 623 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + call $assembly/hello/model/__near_JSONHandler_MyCallbackResult#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $5 + local.get $3 + local.tee $4 + local.get $5 + local.tee $6 + local.get $4 + i32.load offset=4 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + i32.store offset=4 + local.get $5 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $assembly/hello/model/MyCallbackResult.decode (; 624 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + call $assembly/hello/model/MyCallbackResult#constructor + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $1 + call $assembly/hello/model/MyCallbackResult#decode + call $~lib/rt/stub/__release + local.get $3 + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/array/Array#get:length (; 625 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 626 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + if (result i32) + i32.const 160 + call $~lib/rt/stub/__retain + local.tee $2 + else + i32.const 184 + call $~lib/rt/stub/__retain + local.tee $3 + end + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 627 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/encode (; 628 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean + local.get $0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/encode (; 629 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + local.get $2 + call $assembly/hello/model/MyCallbackResult#encode + call $~lib/rt/stub/__release + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/model/MyContractPromiseResult#encode (; 630 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + call $~lib/rt/stub/__retain + else + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + end + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load8_u + i32.const 4400 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 1744 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/encode (; 631 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + local.get $2 + call $assembly/hello/model/MyContractPromiseResult#encode + call $~lib/rt/stub/__release + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 632 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $assembly/hello/model/MyCallbackResult#encode (; 633 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + call $~lib/rt/stub/__retain + else + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + end + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 4376 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 1696 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/near-runtime-ts/storage/Storage#setBytes (; 634 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $3 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $3 + i32.load offset=4 + i64.extend_i32_u + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + i32.load offset=4 + i64.extend_i32_u + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_write + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/callbackWithName (; 635 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + call $~lib/near-runtime-ts/contract/ContractPromise.getResults + local.set $1 + local.get $1 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length + call $~lib/array/Array.create + local.set $2 + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 0 + call $assembly/hello/model/MyContractPromiseResult#constructor + local.tee $4 + call $~lib/array/Array#__set + local.get $2 + local.get $3 + call $~lib/array/Array#__get + local.tee $6 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get + local.tee $5 + i32.load + i32.const 1 + i32.eq + i32.store8 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + local.tee $7 + i32.load8_u + if (result i32) + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get + local.tee $8 + i32.load offset=4 + i32.const 0 + i32.ne + local.set $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + else + i32.const 0 + end + if (result i32) + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get + local.tee $8 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#get:length + i32.const 0 + i32.gt_s + local.set $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + else + i32.const 0 + end + if + local.get $2 + local.get $3 + call $~lib/array/Array#__get + local.tee $9 + local.tee $10 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get + local.tee $8 + i32.load offset=4 + i32.const 0 + call $assembly/hello/model/MyCallbackResult.decode + local.set $11 + local.get $10 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $11 + i32.store offset=4 + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + i32.const 8 + i32.const 57 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $7 + local.get $7 + local.get $2 + i32.store + local.get $7 + global.get $~lib/near-runtime-ts/contract/context + call $~lib/near-runtime-ts/contract/Context#get:contractName + local.tee $6 + i32.store offset=4 + local.get $7 + call $~lib/rt/stub/__retain + local.set $5 + local.get $5 + i32.const 0 + i32.const 656 + call $assembly/hello/model/MyCallbackResult#encode + local.tee $4 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $3 + global.get $~lib/near-runtime-ts/storage/storage + i32.const 4536 + local.get $3 + call $~lib/near-runtime-ts/storage/Storage#setBytes + local.get $5 + local.set $9 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $9 + ) + (func $assembly/hello/main/__wrapper_callbackWithName (; 636 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/hello/main/__near_ArgsParser_callbackWithName#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/hello/main/callbackWithName + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $~lib/near-runtime-ts/storage/Storage#getBytes (; 637 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/near-runtime-ts/storage/Storage#_internalReadBytes + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/hello/main/getLastResult (; 638 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/near-runtime-ts/storage/storage + i32.const 4536 + call $~lib/near-runtime-ts/storage/Storage#getBytes + local.tee $0 + i32.const 0 + call $assembly/hello/model/MyCallbackResult.decode + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $assembly/hello/main/__wrapper_getLastResult (; 639 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + call $assembly/hello/main/getLastResult + local.set $0 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $1 + local.get $1 + local.get $0 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/generateLogs (; 640 ;) (type $FUNCSIG$v) + global.get $~lib/near-runtime-ts/storage/storage + i32.const 4576 + i32.const 3608 + call $~lib/near-runtime-ts/storage/Storage#setString + i32.const 4600 + call $~lib/near-runtime-ts/logging/logging.log + i32.const 4624 + call $~lib/near-runtime-ts/logging/logging.log + ) + (func $assembly/hello/main/triggerAssert (; 641 ;) (type $FUNCSIG$v) + i32.const 4648 + call $~lib/near-runtime-ts/logging/logging.log + i32.const 0 + i32.eqz + if + i32.const 4704 + i32.const 952 + i32.const 1011 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + ) + (func $start (; 642 ;) (type $FUNCSIG$v) + call $start:~lib/rt/index-stub + call $start:~lib/nearEntry + ) + (func $null (; 643 ;) (type $FUNCSIG$v) + ) +) diff --git a/tests/near-bindgen/out/test.wat b/tests/near-bindgen/out/test.wat new file mode 100644 index 0000000000..06a180d834 --- /dev/null +++ b/tests/near-bindgen/out/test.wat @@ -0,0 +1,35389 @@ +(module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$vj (func (param i64))) + (type $FUNCSIG$jj (func (param i64) (result i64))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vjj (func (param i64 i64))) + (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viij (func (param i32 i32 i64))) + (type $FUNCSIG$ij (func (param i64) (result i32))) + (type $FUNCSIG$viji (func (param i32 i64 i32))) + (type $FUNCSIG$iijj (func (param i32 i64 i64) (result i32))) + (type $FUNCSIG$vijjjj (func (param i32 i64 i64 i64 i64))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) + (type $FUNCSIG$iij (func (param i32 i64) (result i32))) + (type $FUNCSIG$vij (func (param i32 i64))) + (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) + (type $FUNCSIG$i (func (result i32))) + (import "env" "input" (func $~lib/nearEntry/input (param i64))) + (import "env" "register_len" (func $~lib/nearEntry/register_len (param i64) (result i64))) + (import "env" "panic" (func $~lib/nearEntry/panic)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "read_register" (func $~lib/nearEntry/read_register (param i64 i64))) + (import "env" "value_return" (func $~lib/nearEntry/value_return (param i64 i64))) + (import "env" "log_utf8" (func $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 (param i64 i64))) + (memory $0 1) + (data (i32.const 8) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00:\00l\00e\00n\00") + (data (i32.const 32) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00:\00f\00r\00o\00n\00t\00") + (data (i32.const 64) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00:\00b\00a\00c\00k\00") + (data (i32.const 96) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00:\00:\00") + (data (i32.const 120) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00:\00r\00") + (data (i32.const 144) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") + (data (i32.const 168) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") + (data (i32.const 200) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 224) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 248) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\009\00") + (data (i32.const 272) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00A\00") + (data (i32.const 296) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 320) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00") + (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00=\00") + (data (i32.const 392) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00+\00/\00") + (data (i32.const 536) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 584) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 640) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 656) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 712) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 768) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00i\00n\00p\00u\00t\00 \00e\00n\00d\00") + (data (i32.const 824) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00d\00e\00c\00o\00d\00e\00r\00.\00t\00s\00") + (data (i32.const 912) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00{\00") + (data (i32.const 936) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00t\00e\00s\00t\00.\00t\00s\00") + (data (i32.const 984) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00o\00b\00j\00e\00c\00t\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 1048) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00}\00") + (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") + (data (i32.const 1096) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00,\00\'\00") + (data (i32.const 1136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\"\00") + (data (i32.const 1160) ":\00\00\00\01\00\00\00\01\00\00\00:\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00d\00o\00u\00b\00l\00e\00-\00q\00u\00o\00t\00e\00d\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 1240) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") + (data (i32.const 1352) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 1400) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00") + (data (i32.const 1472) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 1520) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 1568) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\\\00") + (data (i32.const 1592) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00/\00") + (data (i32.const 1616) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 1640) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\08\00") + (data (i32.const 1664) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n\00") + (data (i32.const 1688) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\n\00") + (data (i32.const 1712) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00r\00") + (data (i32.const 1736) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0d\00") + (data (i32.const 1760) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00t\00") + (data (i32.const 1784) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\t\00") + (data (i32.const 1808) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00u\00") + (data (i32.const 1832) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\\\00u\00 \00d\00i\00g\00i\00t\00") + (data (i32.const 1888) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00s\00c\00a\00p\00e\00d\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00:\00 \00") + (data (i32.const 1968) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00:\00") + (data (i32.const 1992) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00:\00\'\00") + (data (i32.const 2032) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00o\00b\00j\00e\00c\00t\00") + (data (i32.const 2096) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00[\00") + (data (i32.const 2120) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00f\00o\00o\00b\00a\00r\00s\00") + (data (i32.const 2152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") + (data (i32.const 2176) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00m\00o\00d\00e\00l\00.\00t\00s\00") + (data (i32.const 2232) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00u\001\002\008\00V\00a\00l\00") + (data (i32.const 2264) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00a\00r\00r\00a\00y\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 2328) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00]\00") + (data (i32.const 2352) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00a\00r\00r\00a\00y\00") + (data (i32.const 2416) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00") + (data (i32.const 2456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\'\00") + (data (i32.const 2480) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00b\00o\00o\00l\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 2544) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00:\00 \00") + (data (i32.const 2568) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") + (data (i32.const 2592) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00i\00n\00t\00e\00g\00e\00r\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 2664) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 3080) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00x\n\00\00x\n\00\00\90\01\00\00d\00\00\00") + (data (i32.const 3112) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00C\00a\00n\00n\00o\00t\00 \00p\00a\00r\00s\00e\00 \00J\00S\00O\00N\00") + (data (i32.const 3168) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00r\00a\00d\00i\00x\00") + (data (i32.const 3216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00~\00l\00i\00b\00/\00b\00i\00g\00n\00u\00m\00/\00u\00t\00i\00l\00s\00.\00t\00s\00") + (data (i32.const 3272) "K\00\00\00\01\00\00\00\00\00\00\00K\00\00\00\00\01\02\03\04\05\06\07\08\t$$$$$$$\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$$$$$$\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#") + (data (i32.const 3368) "\10\00\00\00\01\00\00\00$\00\00\00\10\00\00\00\d8\0c\00\00\d8\0c\00\00K\00\00\00K\00\00\00") + (data (i32.const 3400) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00r\00r\00") + (data (i32.const 3424) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00n\00a\00m\00e\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00n\00u\00l\00l\00.\00") + (data (i32.const 3480) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00~\00l\00i\00b\00/\00n\00e\00a\00r\00E\00n\00t\00r\00y\00.\00t\00s\00") + (data (i32.const 3536) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 3600) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00s\00t\00r\00i\00n\00g\00 \00f\00i\00e\00l\00d\00 \00") + (data (i32.const 3664) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00 \00:\00 \00\"\00") + (data (i32.const 3688) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\003\002\00A\00r\00r\00") + (data (i32.const 3720) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00i\003\002\00A\00r\00r\00") + (data (i32.const 3752) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00i\00n\00t\008\00a\00r\00r\00a\00y\00s\00") + (data (i32.const 3792) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\006\004\00A\00r\00r\00") + (data (i32.const 3824) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\006\004\00V\00a\00l\00") + (data (i32.const 3856) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00u\006\004\00_\00z\00e\00r\00o\00") + (data (i32.const 3888) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00i\006\004\00V\00a\00l\00") + (data (i32.const 3920) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00z\00") + (data (i32.const 3944) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00a\00r\00r\00a\00y\00") + (data (i32.const 3984) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00l\00a\00g\00") + (data (i32.const 4008) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\00o\00o\00") + (data (i32.const 4032) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00r\00") + (data (i32.const 4056) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\"\00") + (data (i32.const 4080) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\\\00") + (data (i32.const 4104) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00b\00") + (data (i32.const 4128) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00n\00") + (data (i32.const 4152) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00r\00") + (data (i32.const 4176) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00t\00") + (data (i32.const 4200) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00U\00n\00s\00u\00p\00p\00o\00r\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00c\00o\00d\00e\00:\00 \00") + (data (i32.const 4288) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00e\00n\00c\00o\00d\00e\00r\00.\00t\00s\00") + (data (i32.const 4376) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00o\00b\00a\00r\00") + (data (i32.const 4408) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 4456) "N\00\00\00\01\00\00\00\01\00\00\00N\00\00\00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \001\000\00 \00o\00r\00 \001\006\00") + (data (i32.const 4552) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00~\00l\00i\00b\00/\00b\00i\00g\00n\00u\00m\00/\00i\00n\00t\00e\00g\00e\00r\00/\00u\001\002\008\00.\00t\00s\00") + (data (i32.const 4624) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00") + (data (i32.const 4664) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00g\00e\00t\00S\00t\00r\00i\00n\00g\00A\00r\00r\00a\00y\00L\00e\00n\00g\00t\00h\00:\00 \00") + (data (i32.const 4728) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00c\00o\00n\00t\00a\00i\00n\00e\00r\00") + (data (i32.const 4768) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00a\00r\00t\00i\00n\00g\00 \00t\00e\00s\00t\00") + (data (i32.const 4816) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00*\00\00\00\0b\00\00\00") + (data (i32.const 4840) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00G\00V\00s\00b\00G\008\00s\00I\00H\00d\00v\00c\00m\00x\00k\00I\00Q\00=\00=\00") + (data (i32.const 4896) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00H\00e\00l\00l\00o\00") + (data (i32.const 4928) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\000\13\00\00") + (data (i32.const 4952) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00W\00o\00r\00l\00d\00") + (data (i32.const 4984) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00h\13\00\00") + (data (i32.const 5008) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\e4\0bT\02\00\00\00\00\e8vH\17\00\00\00") + (data (i32.const 5040) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00B\00e\00f\00o\00r\00e\00:\00 \00") + (data (i32.const 5072) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00A\00f\00t\00e\00r\00:\00 \00") + (data (i32.const 5104) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00t\00r\00") + (data (i32.const 5128) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00u\001\002\008\00") + (data (i32.const 5152) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00A\00r\00r\00a\00y\00") + (data (i32.const 5192) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00T\00e\00s\00t\00 \00P\00a\00s\00s\00e\00d\00") + (data (i32.const 5232) "F\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\00\93\00\00\00\02\00\00\00\93\04\00\00\02\00\00\00\93 \00\00\02\00\00\00\13\01\00\00\02\00\00\00\93 \00\00\02\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\003\00\00\00\02\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (table $0 2 funcref) + (elem (i32.const 0) $null $assembly/main/convertFoobars~anonymous|0) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/near-runtime-ts/storage/storage (mut i32) (i32.const 0)) + (global $~lib/near-runtime-ts/collections/index/collections._KEY_LENGTH_SUFFIX i32 (i32.const 24)) + (global $~lib/near-runtime-ts/collections/index/collections._KEY_FRONT_INDEX_SUFFIX i32 (i32.const 48)) + (global $~lib/near-runtime-ts/collections/index/collections._KEY_BACK_INDEX_SUFFIX i32 (i32.const 80)) + (global $~lib/near-runtime-ts/collections/index/collections._KEY_ELEMENT_SUFFIX i32 (i32.const 112)) + (global $~lib/near-runtime-ts/collections/index/collections._KEY_RATING_SUFFIX i32 (i32.const 136)) + (global $~lib/near-runtime-ts/collections/index/collections._RATING_OFFSET i64 (i64.const 2147483648)) + (global $~lib/assemblyscript-json/decoder/TRUE_STR i32 (i32.const 160)) + (global $~lib/assemblyscript-json/decoder/FALSE_STR i32 (i32.const 184)) + (global $~lib/assemblyscript-json/decoder/NULL_STR i32 (i32.const 216)) + (global $~lib/assemblyscript-json/decoder/CHAR_0 (mut i32) (i32.const 0)) + (global $~lib/assemblyscript-json/decoder/CHAR_9 (mut i32) (i32.const 0)) + (global $~lib/assemblyscript-json/decoder/CHAR_A (mut i32) (i32.const 0)) + (global $~lib/assemblyscript-json/decoder/CHAR_A_LOWER (mut i32) (i32.const 0)) + (global $~lib/bignum/utils/HEX_CHARS i32 (i32.const 336)) + (global $~lib/bignum/globals/__divmod_quot_lo (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__divmod_quot_hi (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__divmod_rem (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__res128_lo (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__res128_hi (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__float_u128_lo (mut i64) (i64.const 0)) + (global $~lib/bignum/globals/__float_u128_hi (mut i64) (i64.const 0)) + (global $~lib/near-runtime-ts/contract/context (mut i32) (i32.const 0)) + (global $~lib/near-runtime-ts/base64/base64.PADCHAR i32 (i32.const 384)) + (global $~lib/near-runtime-ts/base64/base64.ALPHA i32 (i32.const 408)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/number/U32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/argc (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.String (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.Boolean (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.U64 (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.I64 (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.U32 (mut i32) (i32.const 0)) + (global $~lib/nearEntry/PrimitiveHandler.I32 (mut i32) (i32.const 0)) + (global $~lib/bignum/utils/RadixCharsTable i32 (i32.const 3384)) + (global $~lib/rt/__rtti_base i32 (i32.const 5232)) + (global $~lib/heap/__heap_base i32 (i32.const 5796)) + (export "memory" (memory $0)) + (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__retain" (func $~lib/rt/stub/__retain)) + (export "__release" (func $~lib/rt/stub/__release)) + (export "__collect" (func $~lib/rt/stub/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "convertFoobars" (func $assembly/test/__wrapper_convertFoobars)) + (export "getStringArrayLength" (func $assembly/test/__wrapper_getStringArrayLength)) + (export "rewrapFoobar" (func $assembly/test/__wrapper_rewrapFoobar)) + (export "unwrapFoobar" (func $assembly/test/__wrapper_unwrapFoobar)) + (export "stringOrNull" (func $assembly/test/__wrapper_stringOrNull)) + (export "runTest" (func $assembly/test/runTest)) + (start $start) + (func $~lib/rt/stub/maybeGrowMemory (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + memory.size + local.set $1 + local.get $1 + i32.const 16 + i32.shl + local.set $2 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + local.get $2 + i32.sub + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $4 + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $0 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $3 + i32.const 16 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + local.set $5 + local.get $2 + local.get $5 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.set $6 + local.get $6 + local.get $5 + i32.store + local.get $6 + i32.const -1 + i32.store offset=4 + local.get $6 + local.get $1 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/near-runtime-ts/storage/Storage#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + ) + (func $start:~lib/near-runtime-ts/storage (; 11 ;) (type $FUNCSIG$v) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + i32.const 0 + call $~lib/near-runtime-ts/storage/Storage#constructor + global.set $~lib/near-runtime-ts/storage/storage + ) + (func $~lib/string/String#get:length (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/string/String#charCodeAt (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const -1 + return + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + ) + (func $start:~lib/assemblyscript-json/decoder (; 14 ;) (type $FUNCSIG$v) + i32.const 240 + i32.const 0 + call $~lib/string/String#charCodeAt + global.set $~lib/assemblyscript-json/decoder/CHAR_0 + i32.const 264 + i32.const 0 + call $~lib/string/String#charCodeAt + global.set $~lib/assemblyscript-json/decoder/CHAR_9 + i32.const 288 + i32.const 0 + call $~lib/string/String#charCodeAt + global.set $~lib/assemblyscript-json/decoder/CHAR_A + i32.const 312 + i32.const 0 + call $~lib/string/String#charCodeAt + global.set $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + ) + (func $start:~lib/assemblyscript-json/index (; 15 ;) (type $FUNCSIG$v) + call $start:~lib/assemblyscript-json/decoder + ) + (func $start:~lib/bignum/integer/u128 (; 16 ;) (type $FUNCSIG$v) + call $start:~lib/assemblyscript-json/index + ) + (func $start:~lib/bignum/integer/index (; 17 ;) (type $FUNCSIG$v) + call $start:~lib/bignum/integer/u128 + ) + (func $start:~lib/bignum/index (; 18 ;) (type $FUNCSIG$v) + call $start:~lib/bignum/integer/index + ) + (func $~lib/near-runtime-ts/contract/Context#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + ) + (func $start:~lib/near-runtime-ts/contract (; 20 ;) (type $FUNCSIG$v) + call $start:~lib/bignum/index + i32.const 0 + call $~lib/near-runtime-ts/contract/Context#constructor + global.set $~lib/near-runtime-ts/contract/context + ) + (func $start:~lib/near-runtime-ts/index (; 21 ;) (type $FUNCSIG$v) + call $start:~lib/near-runtime-ts/storage + call $start:~lib/near-runtime-ts/contract + ) + (func $start:~lib/rt/index-stub (; 22 ;) (type $FUNCSIG$v) + call $start:~lib/near-runtime-ts/index + ) + (func $~lib/rt/stub/__release (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/rt/stub/__collect (; 24 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/memory/memory.fill (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 1 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 2 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.get $4 + i32.store8 + local.get $5 + i32.const 2 + i32.add + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 6 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 3 + i32.add + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + i32.const 0 + local.get $5 + i32.sub + i32.const 3 + i32.and + local.set $6 + local.get $5 + local.get $6 + i32.add + local.set $5 + local.get $3 + local.get $6 + i32.sub + local.set $3 + local.get $3 + i32.const -4 + i32.and + local.set $3 + i32.const -1 + i32.const 255 + i32.div_u + local.get $4 + i32.const 255 + i32.and + i32.mul + local.set $7 + local.get $5 + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.get $7 + i32.store + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store + local.get $3 + i32.const 24 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 12 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 16 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 20 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 + i32.store + i32.const 24 + local.get $5 + i32.const 4 + i32.and + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.add + local.set $5 + local.get $3 + local.get $6 + i32.sub + local.set $3 + local.get $7 + i64.extend_i32_u + local.get $7 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $8 + block $break|0 + loop $continue|0 + local.get $3 + i32.const 32 + i32.ge_u + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 + end + unreachable + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 26 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 552 + i32.const 600 + i32.const 14 + i32.const 56 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/stub/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + ) + (func $~lib/typedarray/Uint8Array#constructor (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 6 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Uint8Array#get:buffer (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 7 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 8 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONHandler#constructor + local.set $0 + local.get $0 + ) + (func $assembly/test/__near_ArgsParser_convertFoobars#constructor (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 9 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 10 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 11 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 656 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + ) + (func $~lib/typedarray/Uint8Array#get:length (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + ) + (func $~lib/typedarray/Uint8Array#__get (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 672 + i32.const 728 + i32.const 135 + i32.const 44 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_u + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/util/string/compareImpl (; 41 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $5 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $7 + block $break|0 + loop $continue|0 + local.get $4 + if (result i32) + local.get $6 + i32.load16_u + local.get $7 + i32.load16_u + i32.sub + local.tee $5 + i32.eqz + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 + end + unreachable + end + local.get $5 + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + ) + (func $~lib/string/String.__eq (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $3 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.__ne (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/util/memory/memcpy (; 44 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $break|0 + loop $continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 + end + unreachable + end + local.get $0 + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + block $break|1 + loop $continue|1 + local.get $2 + i32.const 16 + i32.ge_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 + end + unreachable + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|3 + end + unreachable + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end + unreachable + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $4 + local.get $3 + i32.add + local.get $5 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $5 + local.get $3 + i32.add + local.get $4 + i32.le_u + end + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|0 + loop $continue|0 + local.get $5 + i32.const 7 + i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 + end + unreachable + end + block $break|1 + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 + end + unreachable + end + end + block $break|2 + loop $continue|2 + local.get $3 + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + unreachable + end + else + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|3 + loop $continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + i32.eqz + br_if $break|3 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + unreachable + end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable + end + end + end + ) + (func $~lib/string/String#concat (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + i32.const 216 + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + local.set $1 + end + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $4 + local.get $1 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $5 + local.get $4 + local.get $5 + i32.add + local.set $6 + local.get $6 + i32.const 0 + i32.eq + if + i32.const 656 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $6 + i32.const 1 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $7 + local.get $7 + local.get $0 + local.get $4 + call $~lib/memory/memory.copy + local.get $7 + local.get $4 + i32.add + local.get $1 + local.get $5 + call $~lib/memory/memory.copy + local.get $7 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.__concat (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 216 + local.get $0 + i32.const 0 + i32.ne + select + local.get $1 + call $~lib/string/String#concat + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 1000 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 840 + i32.const 58 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/test/__near_ArgsParser_convertFoobars#pushObject (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 22 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 26 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/array/Array<~lib/string/String>#constructor (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 13 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 1256 + i32.const 1368 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $~lib/rt/stub/__realloc (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 43 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + local.get $2 + i32.load + local.set $3 + local.get $2 + i32.load offset=4 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 46 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + i32.gt_u + if + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + local.get $1 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $0 + local.get $3 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + local.get $3 + i32.store + else + local.get $1 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $4 + local.get $3 + i32.const 1 + i32.shl + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + local.set $3 + local.get $3 + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__alloc + local.set $4 + local.get $4 + local.get $0 + local.get $2 + i32.load offset=12 + call $~lib/memory/memory.copy + local.get $4 + local.tee $0 + i32.const 16 + i32.sub + local.set $2 + end + else + local.get $0 + local.get $3 + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/stub/offset + local.get $2 + local.get $3 + i32.store + end + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/string/String.UTF8.decodeUnsafe (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + local.set $3 + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $4 + local.get $3 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 585 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $5 + local.get $5 + local.set $6 + block $break|0 + loop $continue|0 + local.get $3 + local.get $4 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $3 + local.tee $7 + i32.const 1 + i32.add + local.set $3 + local.get $7 + i32.load8_u + local.set $7 + local.get $7 + i32.const 128 + i32.lt_u + if + local.get $2 + if (result i32) + local.get $7 + i32.eqz + else + i32.const 0 + end + if + br $break|0 + end + local.get $6 + local.get $7 + i32.store16 + local.get $6 + i32.const 2 + i32.add + local.set $6 + else + local.get $7 + i32.const 191 + i32.gt_u + if (result i32) + local.get $7 + i32.const 224 + i32.lt_u + else + i32.const 0 + end + if + local.get $4 + local.get $3 + i32.sub + i32.const 1 + i32.lt_u + if + br $break|0 + end + local.get $6 + local.get $7 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $3 + local.tee $8 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.load8_u + i32.const 63 + i32.and + i32.or + i32.store16 + local.get $6 + i32.const 2 + i32.add + local.set $6 + else + local.get $7 + i32.const 239 + i32.gt_u + if (result i32) + local.get $7 + i32.const 365 + i32.lt_u + else + i32.const 0 + end + if + local.get $4 + local.get $3 + i32.sub + i32.const 3 + i32.lt_u + if + br $break|0 + end + local.get $7 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.const 12 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=2 + i32.const 63 + i32.and + i32.or + i32.const 65536 + i32.sub + local.set $7 + local.get $3 + i32.const 3 + i32.add + local.set $3 + local.get $6 + i32.const 55296 + local.get $7 + i32.const 10 + i32.shr_u + i32.add + i32.store16 + local.get $6 + i32.const 56320 + local.get $7 + i32.const 1023 + i32.and + i32.add + i32.store16 offset=2 + local.get $6 + i32.const 4 + i32.add + local.set $6 + else + local.get $4 + local.get $3 + i32.sub + i32.const 2 + i32.lt_u + if + br $break|0 + end + local.get $6 + local.get $7 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.or + i32.store16 + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $6 + i32.const 2 + i32.add + local.set $6 + end + end + end + br $continue|0 + end + unreachable + end + local.get $5 + local.get $6 + local.get $5 + i32.sub + call $~lib/rt/stub/__realloc + call $~lib/rt/stub/__retain + ) + (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 54 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/assemblyscript-json/util/index/Buffer.getPtr + local.get $1 + i32.add + local.get $2 + local.get $1 + i32.sub + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load offset=8 + local.get $1 + local.get $2 + i32.const 1 + i32.sub + call $~lib/assemblyscript-json/util/index/Buffer.readString + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + i32.load offset=4 + local.set $2 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/DecoderState#readString + ) + (func $~lib/array/Array<~lib/string/String>#get:length (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/ensureSize (; 58 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $3 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 552 + i32.const 1368 + i32.const 14 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $4 + local.get $1 + local.get $2 + i32.shl + local.set $5 + local.get $4 + local.get $5 + call $~lib/rt/stub/__realloc + local.set $6 + local.get $6 + local.get $3 + i32.add + i32.const 0 + local.get $5 + local.get $3 + i32.sub + call $~lib/memory/memory.fill + local.get $6 + local.get $4 + i32.ne + if + local.get $0 + local.get $6 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $6 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.store offset=8 + end + ) + (func $~lib/array/Array<~lib/string/String>#push (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/array/Array<~lib/string/String>#join_str (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 656 + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + i32.load offset=4 + local.set $4 + local.get $2 + i32.eqz + if + local.get $4 + i32.load + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $1 + call $~lib/string/String#get:length + local.set $5 + i32.const 0 + local.set $6 + i32.const 0 + local.set $7 + block $break|0 + i32.const 0 + local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $8 + loop $loop|0 + local.get $3 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $10 + i32.ne + if + local.get $9 + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release + end + local.get $9 + local.set $7 + local.get $7 + i32.const 0 + i32.ne + if + local.get $6 + local.get $7 + call $~lib/string/String#get:length + i32.add + local.set $6 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + unreachable + end + i32.const 0 + local.set $11 + local.get $6 + local.get $5 + local.get $2 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $12 + block $break|1 + i32.const 0 + local.set $8 + loop $loop|1 + local.get $8 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $4 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $7 + local.tee $3 + i32.ne + if + local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $10 + local.set $7 + local.get $7 + i32.const 0 + i32.ne + if + local.get $7 + call $~lib/string/String#get:length + local.set $10 + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $10 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $11 + local.get $10 + i32.add + local.set $11 + end + local.get $5 + if + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $11 + local.get $5 + i32.add + local.set $11 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $loop|1 + end + unreachable + end + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $9 + local.set $7 + local.get $7 + i32.const 0 + i32.ne + if + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + local.get $12 + local.set $9 + local.get $1 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $9 + ) + (func $~lib/array/Array<~lib/string/String>#join (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#join_str + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + ) + (func $~lib/rt/__allocArray (; 62 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + i32.const 16 + local.get $2 + call $~lib/rt/stub/__alloc + local.set $4 + local.get $0 + local.get $1 + i32.shl + local.set $5 + local.get $5 + i32.const 0 + call $~lib/rt/stub/__alloc + local.set $6 + local.get $4 + local.get $6 + call $~lib/rt/stub/__retain + i32.store + local.get $4 + local.get $6 + i32.store offset=4 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $0 + i32.store offset=12 + local.get $3 + if + local.get $6 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/string/String.fromCodePoint (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.const 1114111 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 65535 + i32.gt_s + local.set $1 + i32.const 2 + local.get $1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $1 + i32.eqz + if + local.get $2 + local.get $0 + i32.store16 + else + local.get $0 + i32.const 65536 + i32.sub + local.set $0 + local.get $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.add + local.set $3 + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.add + local.set $4 + local.get $2 + local.get $3 + i32.const 16 + i32.shl + local.get $4 + i32.or + i32.store + end + local.get $2 + call $~lib/rt/stub/__retain + ) + (func $~lib/string/String.fromCharCode (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 0 + i32.gt_s + local.set $2 + i32.const 2 + local.get $2 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $3 + local.get $3 + local.get $0 + i32.store16 + local.get $2 + if + local.get $3 + local.get $1 + i32.store16 offset=2 + end + local.get $3 + call $~lib/rt/stub/__retain + ) + (func $~lib/string/String.fromCharCode|trampoline (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const -1 + local.set $1 + end + local.get $0 + local.get $1 + call $~lib/string/String.fromCharCode + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 68 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 69 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONHandler#popObject (; 70 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/test/__near_ArgsParser_convertFoobars#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#constructor (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 21 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#constructor (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 20 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#constructor + local.set $2 + local.get $1 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 74 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 23 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler#constructor (; 75 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 22 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + local.set $2 + local.get $1 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 76 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 25 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler#constructor (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 24 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=8 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 27 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler#constructor (; 79 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 26 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=8 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 80 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 29 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler#constructor (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 28 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + local.set $2 + local.get $1 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 31 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/PrimitiveHandler#constructor (; 83 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 30 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + local.set $2 + local.get $1 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $start:~lib/nearEntry (; 84 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#constructor + global.set $~lib/nearEntry/PrimitiveHandler.String + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler#constructor + global.set $~lib/nearEntry/PrimitiveHandler.Boolean + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler#constructor + global.set $~lib/nearEntry/PrimitiveHandler.U64 + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler#constructor + global.set $~lib/nearEntry/PrimitiveHandler.I64 + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler#constructor + global.set $~lib/nearEntry/PrimitiveHandler.U32 + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler#constructor + global.set $~lib/nearEntry/PrimitiveHandler.I32 + ) + (func $~lib/array/Array#constructor (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 19 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 1256 + i32.const 1368 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/ArrayHandler#constructor (; 86 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 32 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/stub/__retain + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 33 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace (; 89 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/model/FooBar#constructor (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 68 + i32.const 12 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.store offset=4 + local.get $0 + i64.const 4294967297 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + i64.const -64 + i64.store offset=24 + local.get $0 + i32.const 0 + i32.store8 offset=32 + local.get $0 + i32.const 2168 + call $~lib/rt/stub/__retain + i32.store offset=36 + local.get $0 + i32.const 0 + i32.store offset=40 + local.get $0 + i32.const 0 + i32.store offset=44 + local.get $0 + i32.const 0 + i32.store offset=48 + local.get $0 + i32.const 0 + i32.store offset=52 + local.get $0 + i32.const 0 + i32.store offset=56 + local.get $0 + i32.const 0 + i32.store offset=60 + local.get $0 + i32.const 0 + i32.store offset=64 + local.get $0 + ) + (func $assembly/model/__near_JSONHandler_FooBar#constructor (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 34 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 94 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 35 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 96 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 98 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#isWhitespace (; 100 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace (; 102 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readHexDigit (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readEscapedChar (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readString (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseKey (; 106 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseObject (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 2280 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 840 + i32.const 53 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONHandler#popArray (; 109 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseArray (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setString (; 111 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseString (; 112 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readString + local.tee $1 + call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readAndAssert (; 113 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean (; 114 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 2496 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + local.get $2 + if (result i32) + i32.const 160 + call $~lib/rt/stub/__retain + local.tee $5 + else + i32.const 184 + call $~lib/rt/stub/__retain + local.tee $6 + end + call $~lib/string/String.__concat + local.tee $7 + i32.const 840 + i32.const 40 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setBoolean (; 115 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseBoolean (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/util/number/decimalCount32 (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 100000 + i32.lt_u + if + local.get $0 + i32.const 100 + i32.lt_u + if + i32.const 1 + i32.const 2 + local.get $0 + i32.const 10 + i32.lt_u + select + return + else + i32.const 4 + i32.const 5 + local.get $0 + i32.const 10000 + i32.lt_u + select + local.set $1 + i32.const 3 + local.get $1 + local.get $0 + i32.const 1000 + i32.lt_u + select + return + end + unreachable + else + local.get $0 + i32.const 10000000 + i32.lt_u + if + i32.const 6 + i32.const 7 + local.get $0 + i32.const 1000000 + i32.lt_u + select + return + else + i32.const 9 + i32.const 10 + local.get $0 + i32.const 1000000000 + i32.lt_u + select + local.set $1 + i32.const 8 + local.get $1 + local.get $0 + i32.const 100000000 + i32.lt_u + select + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_lut (; 118 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + i32.const 3096 + i32.load offset=4 + local.set $3 + block $break|0 + loop $continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + i32.eqz + br_if $break|0 + local.get $1 + i32.const 10000 + i32.div_u + local.set $4 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $9 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $9 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 + end + unreachable + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $1 + i32.const 100 + i32.div_u + local.set $7 + local.get $1 + i32.const 100 + i32.rem_u + local.set $6 + local.get $7 + local.set $1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store + else + local.get $2 + i32.const 1 + i32.sub + local.set $2 + i32.const 48 + local.get $1 + i32.add + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 + end + ) + (func $~lib/util/number/decimalCount64 (; 119 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if + local.get $0 + i64.const 1000000000000 + i64.lt_u + if + i32.const 11 + i32.const 12 + local.get $0 + i64.const 100000000000 + i64.lt_u + select + local.set $1 + i32.const 10 + local.get $1 + local.get $0 + i64.const 10000000000 + i64.lt_u + select + return + else + i32.const 14 + i32.const 15 + local.get $0 + i64.const 100000000000000 + i64.lt_u + select + local.set $1 + i32.const 13 + local.get $1 + local.get $0 + i64.const 10000000000000 + i64.lt_u + select + return + end + unreachable + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if + i32.const 16 + i32.const 17 + local.get $0 + i64.const 10000000000000000 + i64.lt_u + select + return + else + i32.const 19 + i32.const 20 + local.get $0 + i64.const -8446744073709551616 + i64.lt_u + select + local.set $1 + i32.const 18 + local.get $1 + local.get $0 + i64.const 1000000000000000000 + i64.lt_u + select + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa64_lut (; 120 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + i32.const 3096 + i32.load offset=4 + local.set $3 + block $break|0 + loop $continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + i32.eqz + br_if $break|0 + local.get $1 + i64.const 100000000 + i64.div_u + local.set $4 + local.get $1 + local.get $4 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $7 + local.get $6 + i32.const 100 + i32.div_u + local.set $8 + local.get $6 + i32.const 100 + i32.rem_u + local.set $9 + local.get $7 + i32.const 100 + i32.div_u + local.set $10 + local.get $7 + i32.const 100 + i32.rem_u + local.set $11 + local.get $3 + local.get $10 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $11 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + local.get $3 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $9 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 + end + unreachable + end + local.get $0 + local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_lut + ) + (func $~lib/util/number/itoa64 (; 121 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + local.get $0 + i64.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end + local.get $0 + i64.const 0 + i64.lt_s + local.set $1 + local.get $1 + if + i64.const 0 + local.get $0 + i64.sub + local.set $0 + end + local.get $0 + i64.const 4294967295 + i64.le_u + if + local.get $0 + i32.wrap_i64 + local.set $3 + local.get $3 + call $~lib/util/number/decimalCount32 + local.get $1 + i32.add + local.set $4 + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + local.set $7 + local.get $3 + local.set $6 + local.get $4 + local.set $5 + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_lut + else + local.get $0 + call $~lib/util/number/decimalCount64 + local.get $1 + i32.add + local.set $4 + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + local.set $6 + local.get $0 + local.set $8 + local.get $4 + local.set $5 + local.get $6 + local.get $8 + local.get $5 + call $~lib/util/number/utoa64_lut + end + local.get $1 + if + local.get $2 + i32.const 45 + i32.store16 + end + local.get $2 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa (; 122 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + local.get $0 + call $~lib/util/number/itoa64 + return + ) + (func $~lib/number/I64#toString (; 123 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/util/number/itoa + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger (; 124 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 2608 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + local.get $2 + call $~lib/number/I64#toString + local.tee $5 + call $~lib/string/String.__concat + local.tee $6 + i32.const 840 + i32.const 49 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setInteger (; 125 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseNumber (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setNull (; 127 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseNull (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseValue (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#deserialize (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#decode (; 131 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#deserialize + local.get $0 + i32.load + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decodeString (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + global.get $~lib/nearEntry/PrimitiveHandler.String + local.get $0 + local.get $1 + call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#decode + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/bignum/integer/u128/u128#constructor (; 133 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + local.get $1 + i64.store + local.get $0 + local.get $2 + i64.store offset=8 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_get (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_u + ) + (func $~lib/array/Array#__get (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 0 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1368 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/bignum/globals/__multi3 (; 136 ;) (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + local.get $1 + local.set $5 + local.get $3 + local.set $6 + local.get $5 + i64.const 4294967295 + i64.and + local.set $9 + local.get $6 + i64.const 4294967295 + i64.and + local.set $10 + local.get $9 + local.get $10 + i64.mul + local.set $11 + local.get $11 + i64.const 4294967295 + i64.and + local.set $12 + local.get $5 + i64.const 32 + i64.shr_u + local.set $5 + local.get $5 + local.get $10 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.set $11 + local.get $11 + i64.const 4294967295 + i64.and + local.set $8 + local.get $11 + i64.const 32 + i64.shr_u + local.set $7 + local.get $6 + i64.const 32 + i64.shr_u + local.set $6 + local.get $9 + local.get $6 + i64.mul + local.get $8 + i64.add + local.set $11 + local.get $12 + local.get $11 + i64.const 32 + i64.shl + i64.add + local.set $13 + local.get $5 + local.get $6 + i64.mul + local.get $7 + i64.add + local.set $14 + local.get $14 + local.get $2 + local.get $3 + i64.mul + i64.add + local.set $14 + local.get $14 + local.get $1 + local.get $4 + i64.mul + i64.add + local.set $14 + local.get $14 + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.set $14 + local.get $13 + global.set $~lib/bignum/globals/__res128_lo + local.get $14 + global.set $~lib/bignum/globals/__res128_hi + ) + (func $~lib/bignum/utils/atou128 (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) + (local $17 i64) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.eqz + if + i32.const 10 + local.set $1 + end + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + local.get $0 + call $~lib/rt/stub/__release + i32.const 3184 + i32.const 3232 + i32.const 133 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $0 + i32.const 0 + call $~lib/string/String#charCodeAt + local.set $5 + local.get $2 + i32.const 1 + i32.eq + if (result i32) + local.get $5 + i32.const 48 + i32.eq + else + i32.const 0 + end + if + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $5 + i32.const 45 + i32.eq + local.set $6 + local.get $6 + if (result i32) + local.get $6 + else + local.get $5 + i32.const 43 + i32.eq + end + local.set $7 + local.get $0 + local.get $7 + call $~lib/string/String#charCodeAt + i32.const 48 + i32.eq + if + local.get $0 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + call $~lib/string/String#charCodeAt + local.set $3 + local.get $3 + i32.const 120 + i32.eq + if (result i32) + i32.const 1 + else + local.get $3 + i32.const 88 + i32.eq + end + if + i32.const 16 + local.set $1 + local.get $7 + i32.const 1 + i32.add + local.set $7 + else + local.get $3 + i32.const 111 + i32.eq + if (result i32) + i32.const 1 + else + local.get $3 + i32.const 79 + i32.eq + end + if + i32.const 8 + local.set $1 + local.get $7 + i32.const 1 + i32.add + local.set $7 + else + local.get $3 + i32.const 98 + i32.eq + if (result i32) + i32.const 1 + else + local.get $3 + i32.const 66 + i32.eq + end + if + i32.const 2 + local.set $1 + local.get $7 + i32.const 1 + i32.add + local.set $7 + end + end + end + end + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $8 + global.get $~lib/bignum/utils/RadixCharsTable + call $~lib/rt/stub/__retain + local.set $9 + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $4 + local.get $4 + i32.const 2 + i32.eq + br_if $case0|0 + local.get $4 + i32.const 10 + i32.eq + br_if $case1|0 + local.get $4 + i32.const 16 + i32.eq + br_if $case2|0 + br $case3|0 + end + block $break|1 + loop $continue|1 + local.get $0 + local.get $7 + call $~lib/string/String#charCodeAt + i32.const 48 + i32.sub + local.set $4 + local.get $4 + i32.const 2 + i32.ge_u + if + br $break|1 + end + local.get $8 + call $~lib/rt/stub/__retain + local.set $11 + i32.const 1 + local.set $10 + local.get $10 + i32.const 127 + i32.and + local.set $10 + local.get $10 + i64.extend_i32_s + local.set $12 + local.get $12 + i64.const 127 + i64.add + local.get $12 + i64.or + i64.const 64 + i64.and + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $13 + local.get $12 + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $14 + local.get $12 + i64.const 63 + i64.and + local.set $12 + local.get $11 + i64.load + local.set $15 + local.get $15 + local.get $12 + i64.shl + local.set $16 + local.get $16 + local.get $14 + i64.const -1 + i64.xor + i64.and + local.set $17 + local.get $17 + local.get $11 + i64.load offset=8 + local.get $12 + i64.shl + local.get $15 + i64.const 64 + local.get $12 + i64.sub + i64.shr_u + local.get $13 + i64.and + i64.or + local.get $14 + i64.and + i64.or + local.set $17 + i32.const 0 + local.get $16 + local.get $14 + i64.and + local.get $17 + call $~lib/bignum/integer/u128/u128#constructor + local.set $18 + local.get $11 + call $~lib/rt/stub/__release + local.get $18 + local.tee $11 + local.tee $18 + local.get $8 + local.tee $10 + i32.ne + if + local.get $18 + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release + end + local.get $18 + local.set $8 + local.get $8 + call $~lib/rt/stub/__retain + local.set $19 + local.get $4 + i64.extend_i32_u + local.set $12 + i32.const 0 + local.get $12 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $18 + call $~lib/rt/stub/__retain + local.set $10 + i32.const 0 + local.get $19 + i64.load + local.get $10 + i64.load + i64.or + local.get $19 + i64.load offset=8 + local.get $10 + i64.load offset=8 + i64.or + call $~lib/bignum/integer/u128/u128#constructor + local.set $20 + local.get $10 + call $~lib/rt/stub/__release + local.get $19 + call $~lib/rt/stub/__release + local.get $20 + local.tee $19 + local.tee $20 + local.get $8 + local.tee $10 + i32.ne + if + local.get $20 + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release + end + local.get $20 + local.set $8 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + local.get $2 + i32.lt_s + br_if $continue|1 + end + end + br $break|0 + end + block $break|2 + loop $continue|2 + local.get $0 + local.get $7 + call $~lib/string/String#charCodeAt + i32.const 48 + i32.sub + local.set $19 + local.get $19 + i32.const 10 + i32.ge_u + if + br $break|2 + end + local.get $8 + call $~lib/rt/stub/__retain + local.set $20 + i32.const 3 + local.set $10 + local.get $10 + i32.const 127 + i32.and + local.set $10 + local.get $10 + i64.extend_i32_s + local.set $12 + local.get $12 + i64.const 127 + i64.add + local.get $12 + i64.or + i64.const 64 + i64.and + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $17 + local.get $12 + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $16 + local.get $12 + i64.const 63 + i64.and + local.set $12 + local.get $20 + i64.load + local.set $15 + local.get $15 + local.get $12 + i64.shl + local.set $14 + local.get $14 + local.get $16 + i64.const -1 + i64.xor + i64.and + local.set $13 + local.get $13 + local.get $20 + i64.load offset=8 + local.get $12 + i64.shl + local.get $15 + i64.const 64 + local.get $12 + i64.sub + i64.shr_u + local.get $17 + i64.and + i64.or + local.get $16 + i64.and + i64.or + local.set $13 + i32.const 0 + local.get $14 + local.get $16 + i64.and + local.get $13 + call $~lib/bignum/integer/u128/u128#constructor + local.set $18 + local.get $20 + call $~lib/rt/stub/__release + local.get $18 + local.tee $20 + call $~lib/rt/stub/__retain + local.set $21 + local.get $8 + call $~lib/rt/stub/__retain + local.set $11 + i32.const 1 + local.set $4 + local.get $4 + i32.const 127 + i32.and + local.set $4 + local.get $4 + i64.extend_i32_s + local.set $13 + local.get $13 + i64.const 127 + i64.add + local.get $13 + i64.or + i64.const 64 + i64.and + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $14 + local.get $13 + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $15 + local.get $13 + i64.const 63 + i64.and + local.set $13 + local.get $11 + i64.load + local.set $16 + local.get $16 + local.get $13 + i64.shl + local.set $17 + local.get $17 + local.get $15 + i64.const -1 + i64.xor + i64.and + local.set $12 + local.get $12 + local.get $11 + i64.load offset=8 + local.get $13 + i64.shl + local.get $16 + i64.const 64 + local.get $13 + i64.sub + i64.shr_u + local.get $14 + i64.and + i64.or + local.get $15 + i64.and + i64.or + local.set $12 + i32.const 0 + local.get $17 + local.get $15 + i64.and + local.get $12 + call $~lib/bignum/integer/u128/u128#constructor + local.set $10 + local.get $11 + call $~lib/rt/stub/__release + local.get $10 + local.tee $11 + call $~lib/rt/stub/__retain + local.set $18 + local.get $18 + i64.load + local.set $12 + local.get $21 + i64.load + local.get $12 + i64.add + local.set $17 + local.get $21 + i64.load offset=8 + local.get $18 + i64.load offset=8 + i64.add + local.get $17 + local.get $12 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $16 + i32.const 0 + local.get $17 + local.get $16 + call $~lib/bignum/integer/u128/u128#constructor + local.set $4 + local.get $18 + call $~lib/rt/stub/__release + local.get $21 + call $~lib/rt/stub/__release + local.get $4 + local.tee $21 + local.tee $10 + local.get $8 + local.tee $18 + i32.ne + if + local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $18 + call $~lib/rt/stub/__release + end + local.get $10 + local.set $8 + local.get $8 + call $~lib/rt/stub/__retain + local.set $18 + local.get $19 + i64.extend_i32_u + local.set $13 + i32.const 0 + local.get $13 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $10 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + i64.load + local.set $13 + local.get $18 + i64.load + local.get $13 + i64.add + local.set $16 + local.get $18 + i64.load offset=8 + local.get $4 + i64.load offset=8 + i64.add + local.get $16 + local.get $13 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $17 + i32.const 0 + local.get $16 + local.get $17 + call $~lib/bignum/integer/u128/u128#constructor + local.set $22 + local.get $4 + call $~lib/rt/stub/__release + local.get $18 + call $~lib/rt/stub/__release + local.get $22 + local.tee $18 + local.tee $22 + local.get $8 + local.tee $4 + i32.ne + if + local.get $22 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $22 + local.set $8 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + local.get $2 + i32.lt_s + br_if $continue|2 + end + end + br $break|0 + end + block $break|3 + loop $continue|3 + local.get $0 + local.get $7 + call $~lib/string/String#charCodeAt + i32.const 48 + i32.sub + local.set $18 + local.get $18 + i32.const 74 + i32.gt_u + if + br $break|3 + end + local.get $9 + local.get $18 + call $~lib/array/Array#__get + local.set $10 + local.get $10 + i32.const 16 + i32.ge_u + if + br $break|3 + end + local.get $8 + call $~lib/rt/stub/__retain + local.set $22 + i32.const 4 + local.set $4 + local.get $4 + i32.const 127 + i32.and + local.set $4 + local.get $4 + i64.extend_i32_s + local.set $17 + local.get $17 + i64.const 127 + i64.add + local.get $17 + i64.or + i64.const 64 + i64.and + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $16 + local.get $17 + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $13 + local.get $17 + i64.const 63 + i64.and + local.set $17 + local.get $22 + i64.load + local.set $12 + local.get $12 + local.get $17 + i64.shl + local.set $15 + local.get $15 + local.get $13 + i64.const -1 + i64.xor + i64.and + local.set $14 + local.get $14 + local.get $22 + i64.load offset=8 + local.get $17 + i64.shl + local.get $12 + i64.const 64 + local.get $17 + i64.sub + i64.shr_u + local.get $16 + i64.and + i64.or + local.get $13 + i64.and + i64.or + local.set $14 + i32.const 0 + local.get $15 + local.get $13 + i64.and + local.get $14 + call $~lib/bignum/integer/u128/u128#constructor + local.set $21 + local.get $22 + call $~lib/rt/stub/__release + local.get $21 + local.tee $22 + local.tee $19 + local.get $8 + local.tee $4 + i32.ne + if + local.get $19 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $19 + local.set $8 + local.get $8 + call $~lib/rt/stub/__retain + local.set $11 + local.get $10 + i64.extend_i32_u + local.set $17 + i32.const 0 + local.get $17 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $19 + call $~lib/rt/stub/__retain + local.set $20 + i32.const 0 + local.get $11 + i64.load + local.get $20 + i64.load + i64.or + local.get $11 + i64.load offset=8 + local.get $20 + i64.load offset=8 + i64.or + call $~lib/bignum/integer/u128/u128#constructor + local.set $4 + local.get $20 + call $~lib/rt/stub/__release + local.get $11 + call $~lib/rt/stub/__release + local.get $4 + local.tee $11 + local.tee $21 + local.get $8 + local.tee $20 + i32.ne + if + local.get $21 + call $~lib/rt/stub/__retain + drop + local.get $20 + call $~lib/rt/stub/__release + end + local.get $21 + local.set $8 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + local.get $2 + i32.lt_s + br_if $continue|3 + end + end + br $break|0 + end + local.get $1 + i64.extend_i32_s + local.set $16 + i32.const 0 + local.get $16 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.set $11 + block $break|4 + loop $continue|4 + local.get $0 + local.get $7 + call $~lib/string/String#charCodeAt + i32.const 48 + i32.sub + local.set $19 + local.get $19 + i32.const 74 + i32.gt_u + if + br $break|4 + end + local.get $9 + local.get $19 + call $~lib/array/Array#__get + local.set $22 + local.get $22 + local.get $1 + i32.const 255 + i32.and + i32.ge_u + if + br $break|4 + end + local.get $8 + call $~lib/rt/stub/__retain + local.set $20 + local.get $11 + call $~lib/rt/stub/__retain + local.set $4 + i32.const 0 + local.get $20 + i64.load + local.get $20 + i64.load offset=8 + local.get $4 + i64.load + local.get $4 + i64.load offset=8 + call $~lib/bignum/globals/__multi3 + i32.const 0 + global.get $~lib/bignum/globals/__res128_lo + global.get $~lib/bignum/globals/__res128_hi + call $~lib/bignum/integer/u128/u128#constructor + local.set $10 + local.get $4 + call $~lib/rt/stub/__release + local.get $20 + call $~lib/rt/stub/__release + local.get $10 + local.tee $20 + local.tee $21 + local.get $8 + local.tee $4 + i32.ne + if + local.get $21 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $21 + local.set $8 + local.get $8 + call $~lib/rt/stub/__retain + local.set $10 + local.get $22 + i64.extend_i32_u + local.set $13 + i32.const 0 + local.get $13 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $21 + call $~lib/rt/stub/__retain + local.set $18 + local.get $18 + i64.load + local.set $13 + local.get $10 + i64.load + local.get $13 + i64.add + local.set $16 + local.get $10 + i64.load offset=8 + local.get $18 + i64.load offset=8 + i64.add + local.get $16 + local.get $13 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $17 + i32.const 0 + local.get $16 + local.get $17 + call $~lib/bignum/integer/u128/u128#constructor + local.set $4 + local.get $18 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $4 + local.tee $10 + local.tee $4 + local.get $8 + local.tee $18 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $18 + call $~lib/rt/stub/__release + end + local.get $4 + local.set $8 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + local.get $2 + i32.lt_s + br_if $continue|4 + end + end + local.get $11 + call $~lib/rt/stub/__release + br $break|0 + end + local.get $6 + if (result i32) + local.get $8 + local.set $18 + local.get $18 + i64.load + i64.const -1 + i64.xor + local.set $17 + local.get $18 + i64.load offset=8 + i64.const -1 + i64.xor + local.set $16 + local.get $17 + i64.const 1 + i64.and + local.get $17 + i64.const 1 + i64.shr_u + i64.add + i64.const 63 + i64.shr_u + local.set $13 + i32.const 0 + local.get $17 + i64.const 1 + i64.add + local.get $16 + local.get $13 + i64.add + call $~lib/bignum/integer/u128/u128#constructor + local.tee $18 + local.tee $11 + else + local.get $8 + call $~lib/rt/stub/__retain + local.tee $10 + end + call $~lib/rt/stub/__retain + local.set $18 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $18 + ) + (func $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.get $1 + call $~lib/nearEntry/decodeString + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + local.get $4 + call $~lib/bignum/utils/atou128 + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + local.set $4 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + return + ) + (func $assembly/model/__near_JSONHandler_FooBar#pushObject (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 2192 + i32.const 100 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 2192 + i32.const 104 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.const 2248 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> + local.set $3 + local.get $2 + i32.load offset=56 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=56 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 140 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 143 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 144 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/model/__near_JSONHandler_FooBar#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 14 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 1256 + i32.const 1368 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#constructor (; 146 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 37 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/stub/__retain + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#constructor (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 38 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#isWhitespace (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace (; 151 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#constructor (; 152 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 39 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/stub/__retain + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#constructor (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 40 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar (; 154 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#isWhitespace (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace (; 157 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/decode<~lib/string/String> (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + global.get $~lib/nearEntry/PrimitiveHandler.String + local.get $0 + local.get $1 + call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#decode + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + ) + (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#pushObject (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=8 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.load offset=12 + call $~lib/rt/stub/__retain + local.set $3 + local.get $2 + local.get $3 + call $~lib/nearEntry/decode<~lib/string/String> + local.set $4 + local.get $0 + i32.load offset=4 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + i32.const 0 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readHexDigit (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readEscapedChar (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readString (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseKey (; 163 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseObject (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/string/String>#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#pushArray (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u + if + local.get $0 + i32.const 0 + i32.store8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 3440 + i32.const 3496 + i32.const 276 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + local.get $0 + i32.load offset=12 + call $~lib/nearEntry/decode<~lib/string/String> + local.tee $2 + call $~lib/array/Array<~lib/string/String>#push + drop + i32.const 0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseArray (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/string/String>#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#setString (; 167 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseString (; 168 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readString + local.tee $1 + call $~lib/nearEntry/ArrayHandler<~lib/string/String>#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readAndAssert (; 169 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#setBoolean (; 170 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseBoolean (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/ArrayHandler<~lib/string/String>#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/ArrayHandler<~lib/string/String>#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#setInteger (; 172 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseNumber (; 173 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/ArrayHandler<~lib/string/String>#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull (; 174 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 3552 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 840 + i32.const 44 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#setNull (; 175 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseNull (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/ArrayHandler<~lib/string/String>#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseValue (; 177 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#deserialize (; 178 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/string/String>> (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.get $3 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/string/String>#constructor + local.set $4 + i32.const 0 + local.get $4 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#constructor + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#deserialize + local.get $3 + local.set $6 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/string/String>> + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#pushObject (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=8 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.load offset=12 + call $~lib/rt/stub/__retain + local.set $3 + local.get $2 + local.get $3 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> + local.set $4 + local.get $0 + i32.load offset=4 + local.get $4 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push + drop + i32.const 0 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readHexDigit (; 183 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readEscapedChar (; 184 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readString (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseKey (; 186 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseObject (; 187 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#pushArray (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u + if + local.get $0 + i32.const 0 + i32.store8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 3440 + i32.const 3496 + i32.const 276 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + local.get $0 + i32.load offset=12 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> + local.tee $2 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push + drop + i32.const 0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseArray (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString (; 190 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.eqz + if + i32.const 3616 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 3680 + call $~lib/string/String.__concat + local.tee $4 + local.get $2 + call $~lib/string/String.__concat + local.tee $5 + i32.const 1152 + call $~lib/string/String.__concat + local.tee $6 + i32.const 840 + i32.const 36 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setString (; 191 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseString (; 192 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readString + local.tee $1 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readAndAssert (; 193 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setBoolean (; 194 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseBoolean (; 195 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setInteger (; 196 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseNumber (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setNull (; 198 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseNull (; 199 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseValue (; 200 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#deserialize (; 201 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 202 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.get $3 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#constructor + local.set $4 + i32.const 0 + local.get $4 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#constructor + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#deserialize + local.get $3 + local.set $6 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $~lib/array/Array#constructor (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 15 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/ArrayHandler#constructor (; 205 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 41 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/stub/__retain + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 42 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar (; 207 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar (; 209 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace (; 210 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/ArrayHandler#pushObject (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit (; 212 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar (; 213 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString (; 214 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey (; 215 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject (; 216 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#pushArray (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u + if + local.get $0 + i32.const 0 + i32.store8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 3440 + i32.const 3496 + i32.const 276 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray (; 218 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#setString (; 219 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString (; 220 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString + local.tee $1 + call $~lib/nearEntry/ArrayHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert (; 221 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler#setBoolean (; 222 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/ArrayHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/ArrayHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/array/Array#push (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#setInteger (; 225 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $2 + i32.wrap_i64 + call $~lib/array/Array#push + drop + local.get $1 + call $~lib/rt/stub/__release + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/ArrayHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler#setNull (; 227 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/ArrayHandler#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue (; 229 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize (; 230 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.get $3 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler#constructor + local.set $4 + i32.const 0 + local.get $4 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize + local.get $3 + local.set $6 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $~lib/array/Array#constructor (; 233 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 16 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/ArrayHandler#constructor (; 234 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 43 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/stub/__retain + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 44 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace (; 239 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/ArrayHandler#pushObject (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey (; 244 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject (; 245 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#pushArray (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u + if + local.get $0 + i32.const 0 + i32.store8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 3440 + i32.const 3496 + i32.const 276 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#setString (; 248 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString (; 249 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString + local.tee $1 + call $~lib/nearEntry/ArrayHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert (; 250 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler#setBoolean (; 251 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/ArrayHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/ArrayHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/array/Array#push (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#setInteger (; 254 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $2 + i32.wrap_i64 + call $~lib/array/Array#push + drop + local.get $1 + call $~lib/rt/stub/__release + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/ArrayHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler#setNull (; 256 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/ArrayHandler#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize (; 259 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> (; 260 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.get $3 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler#constructor + local.set $4 + i32.const 0 + local.get $4 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize + local.get $3 + local.set $6 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 17 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 1256 + i32.const 1368 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#constructor (; 263 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 45 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/stub/__retain + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#constructor (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 46 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#isWhitespace (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace (; 268 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/string/String#charAt (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const 656 + call $~lib/rt/stub/__retain + return + end + i32.const 2 + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $2 + call $~lib/rt/stub/__retain + ) + (func $~lib/string/String#indexOf (; 270 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/string/String#get:length + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $5 + local.get $5 + i32.eqz + if + i32.const -1 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $2 + local.tee $4 + i32.const 0 + local.tee $6 + local.get $4 + local.get $6 + i32.gt_s + select + local.tee $4 + local.get $5 + local.tee $6 + local.get $4 + local.get $6 + i32.lt_s + select + local.set $7 + block $break|0 + local.get $5 + local.get $3 + i32.sub + local.set $5 + loop $loop|0 + local.get $7 + local.get $5 + i32.le_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $7 + local.get $1 + i32.const 0 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + local.get $7 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $loop|0 + end + unreachable + end + i32.const -1 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/near-runtime-ts/base64/base64.getByte64 (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $0 + local.get $1 + call $~lib/string/String#charAt + local.tee $2 + i32.const 0 + call $~lib/string/String#indexOf + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#__set (; 272 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 672 + i32.const 728 + i32.const 146 + i32.const 44 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/near-runtime-ts/base64/base64.decode (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $3 + local.get $0 + call $~lib/string/String#get:length + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8Array#constructor + local.set $5 + local.get $0 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $0 + local.get $4 + i32.const 1 + i32.sub + call $~lib/string/String#charAt + local.tee $5 + i32.const 384 + call $~lib/string/String.__eq + if + i32.const 1 + local.set $3 + local.get $0 + local.get $4 + i32.const 2 + i32.sub + call $~lib/string/String#charAt + local.tee $6 + i32.const 384 + call $~lib/string/String.__eq + if + i32.const 2 + local.set $3 + end + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + end + local.get $4 + i32.const 4 + i32.rem_u + i32.const 0 + i32.eq + if (result i32) + local.get $4 + i32.const 4 + i32.div_u + i32.const 3 + i32.mul + else + local.get $4 + i32.const 4 + i32.div_u + i32.const 1 + i32.add + i32.const 3 + i32.mul + end + local.set $6 + local.get $3 + i32.const 0 + i32.gt_s + if (result i32) + i32.const 3 + local.get $3 + i32.sub + else + i32.const 0 + end + local.set $7 + local.get $6 + local.get $7 + i32.add + local.set $8 + i32.const 0 + local.get $8 + call $~lib/typedarray/Uint8Array#constructor + local.set $9 + i32.const 0 + local.set $10 + block $break|0 + i32.const 0 + local.set $1 + loop $loop|0 + local.get $1 + local.get $4 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 18 + i32.shl + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 12 + i32.shl + i32.or + local.get $0 + local.get $1 + i32.const 2 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 6 + i32.shl + i32.or + local.get $0 + local.get $1 + i32.const 3 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.or + local.set $2 + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 16 + i32.shr_u + call $~lib/typedarray/Uint8Array#__set + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $loop|0 + end + unreachable + end + block $break|1 + block $case1|1 + block $case0|1 + local.get $3 + local.set $11 + local.get $11 + i32.const 1 + i32.eq + br_if $case0|1 + local.get $11 + i32.const 2 + i32.eq + br_if $case1|1 + br $break|1 + end + local.get $0 + local.get $1 + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 18 + i32.shl + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 12 + i32.shl + i32.or + local.get $0 + local.get $1 + i32.const 2 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 6 + i32.shl + i32.or + local.set $2 + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 16 + i32.shr_u + call $~lib/typedarray/Uint8Array#__set + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + br $break|1 + end + local.get $0 + local.get $1 + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 18 + i32.shl + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 12 + i32.shl + i32.or + local.set $2 + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 16 + i32.shr_u + call $~lib/typedarray/Uint8Array#__set + br $break|1 + end + local.get $9 + local.set $11 + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $11 + ) + (func $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + global.get $~lib/nearEntry/PrimitiveHandler.String + local.get $0 + local.get $1 + call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#decode + local.tee $3 + call $~lib/near-runtime-ts/base64/base64.decode + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + return + ) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#push (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#pushObject (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=8 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.load offset=12 + call $~lib/rt/stub/__retain + local.set $3 + local.get $2 + local.get $3 + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + local.set $4 + local.get $0 + i32.load offset=4 + local.get $4 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#push + drop + i32.const 0 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readHexDigit (; 277 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readEscapedChar (; 278 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readString (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseKey (; 280 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseObject (; 281 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#pushArray (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u + if + local.get $0 + i32.const 0 + i32.store8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 3440 + i32.const 3496 + i32.const 276 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + local.get $0 + i32.load offset=12 + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + local.tee $2 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#push + drop + i32.const 0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseArray (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setString (; 284 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $3 + local.get $0 + i32.load offset=4 + local.get $2 + call $~lib/near-runtime-ts/base64/base64.decode + local.tee $4 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#push + drop + local.get $4 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseString (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readString + local.tee $1 + call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readAndAssert (; 286 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setBoolean (; 287 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseBoolean (; 288 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setInteger (; 289 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseNumber (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setNull (; 291 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseNull (; 292 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseValue (; 293 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#deserialize (; 294 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.get $3 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#constructor + local.set $4 + i32.const 0 + local.get $4 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#constructor + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#deserialize + local.get $3 + local.set $6 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/typedarray/Uint8Array>> + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $~lib/array/Array#constructor (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 18 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/ArrayHandler#constructor (; 298 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 47 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/stub/__retain + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 48 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar (; 300 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar (; 302 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace (; 303 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/ArrayHandler#pushObject (; 304 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit (; 305 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar (; 306 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString (; 307 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey (; 308 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject (; 309 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#pushArray (; 310 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u + if + local.get $0 + i32.const 0 + i32.store8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 3440 + i32.const 3496 + i32.const 276 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray (; 311 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/util/string/isSpace (; 312 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 255 + i32.le_s + if + block $break|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + local.set $1 + local.get $1 + i32.const 9 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 10 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 11 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 12 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 13 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 32 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 160 + i32.eq + br_if $case6|0 + br $break|0 + end + end + end + end + end + end + end + i32.const 1 + return + end + i32.const 0 + return + end + local.get $0 + i32.const 8192 + i32.ge_s + if (result i32) + local.get $0 + i32.const 8202 + i32.le_s + else + i32.const 0 + end + if + i32.const 1 + return + end + block $break|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $0 + local.set $1 + local.get $1 + i32.const 5760 + i32.eq + br_if $case0|1 + local.get $1 + i32.const 8232 + i32.eq + br_if $case1|1 + local.get $1 + i32.const 8233 + i32.eq + br_if $case2|1 + local.get $1 + i32.const 8239 + i32.eq + br_if $case3|1 + local.get $1 + i32.const 8287 + i32.eq + br_if $case4|1 + local.get $1 + i32.const 12288 + i32.eq + br_if $case5|1 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|1 + br $break|1 + end + end + end + end + end + end + end + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/util/string/strtol (; 313 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i64) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.set $4 + local.get $4 + i32.load16_u + local.set $5 + i64.const 1 + local.set $6 + block $break|0 + loop $continue|0 + local.get $5 + call $~lib/util/string/isSpace + i32.eqz + br_if $break|0 + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 + end + unreachable + end + local.get $5 + i32.const 45 + i32.eq + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + i64.const -1 + local.set $6 + else + local.get $5 + i32.const 43 + i32.eq + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + end + end + local.get $1 + i32.eqz + if + local.get $5 + i32.const 48 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $4 + i32.const 2 + i32.add + i32.load16_u + local.set $7 + local.get $7 + i32.const 66 + i32.eq + br_if $case0|1 + local.get $7 + i32.const 98 + i32.eq + br_if $case1|1 + local.get $7 + i32.const 79 + i32.eq + br_if $case2|1 + local.get $7 + i32.const 111 + i32.eq + br_if $case3|1 + local.get $7 + i32.const 88 + i32.eq + br_if $case4|1 + local.get $7 + i32.const 120 + i32.eq + br_if $case5|1 + br $case6|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 + end + i32.const 10 + local.set $1 + end + else + i32.const 10 + local.set $1 + end + else + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + end + i64.const 0 + local.set $8 + block $break|2 + loop $continue|2 + local.get $2 + local.tee $7 + i32.const 1 + i32.sub + local.set $2 + local.get $7 + i32.eqz + br_if $break|2 + local.get $4 + i32.load16_u + local.set $5 + local.get $5 + i32.const 48 + i32.ge_s + if (result i32) + local.get $5 + i32.const 57 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 48 + i32.sub + local.set $5 + else + local.get $5 + i32.const 65 + i32.ge_s + if (result i32) + local.get $5 + i32.const 90 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + local.get $5 + i32.const 97 + i32.ge_s + if (result i32) + local.get $5 + i32.const 122 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + br $break|2 + end + end + end + local.get $5 + local.get $1 + i32.ge_s + if + br $break|2 + end + local.get $8 + local.get $1 + i64.extend_i32_s + i64.mul + local.get $5 + i64.extend_i32_s + i64.add + local.set $8 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $continue|2 + end + unreachable + end + local.get $6 + local.get $8 + i64.mul + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/number/U64.parseInt (; 314 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/util/string/strtol + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/array/Array#push (; 315 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.get $1 + i64.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#setString (; 316 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 0 + call $~lib/number/U64.parseInt + call $~lib/array/Array#push + drop + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString (; 317 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString + local.tee $1 + call $~lib/nearEntry/ArrayHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler#setBoolean (; 319 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean (; 320 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/ArrayHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/ArrayHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler#setInteger (; 321 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $2 + call $~lib/array/Array#push + drop + local.get $1 + call $~lib/rt/stub/__release + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber (; 322 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/ArrayHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler#setNull (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull (; 324 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/ArrayHandler#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue (; 325 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize (; 326 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> (; 327 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.get $3 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler#constructor + local.set $4 + i32.const 0 + local.get $4 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize + local.get $3 + local.set $6 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 328 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $assembly/model/__near_JSONHandler_FooBar#pushArray (; 329 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3416 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> + local.set $3 + local.get $2 + i32.load offset=44 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=44 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $1 + i32.const 3704 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/array/Array> + local.set $2 + local.get $3 + i32.load offset=48 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=48 + i32.const 0 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 3736 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/array/Array> + local.set $3 + local.get $2 + i32.load offset=52 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=52 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $1 + i32.const 3768 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> + local.set $2 + local.get $3 + i32.load offset=60 + call $~lib/rt/stub/__release + local.get $2 + i32.store offset=60 + i32.const 0 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 3808 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/array/Array> + local.set $3 + local.get $2 + i32.load offset=64 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=64 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 330 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/model/__near_JSONHandler_FooBar#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/number/I64.parseInt (; 331 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/util/string/strtol + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/model/__near_JSONHandler_FooBar#setString (; 332 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3840 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.const 0 + call $~lib/number/U64.parseInt + i64.store offset=8 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3872 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.const 0 + call $~lib/number/U64.parseInt + i64.store offset=16 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3904 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.const 0 + call $~lib/number/I64.parseInt + i64.store offset=24 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3936 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=36 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=36 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3960 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $2 + call $~lib/near-runtime-ts/base64/base64.decode + local.set $3 + local.get $4 + i32.load offset=40 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=40 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 2248 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $3 + call $~lib/bignum/utils/atou128 + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + local.set $5 + local.get $3 + i32.load offset=56 + call $~lib/rt/stub/__release + local.get $5 + i32.store offset=56 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 333 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $assembly/model/__near_JSONHandler_FooBar#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 334 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $assembly/model/__near_JSONHandler_FooBar#setBoolean (; 335 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4000 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.store8 offset=32 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 336 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $assembly/model/__near_JSONHandler_FooBar#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $assembly/model/__near_JSONHandler_FooBar#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/model/__near_JSONHandler_FooBar#setInteger (; 337 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4024 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.wrap_i64 + i32.store + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 4048 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.get $2 + i32.wrap_i64 + i32.store offset=4 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 338 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $assembly/model/__near_JSONHandler_FooBar#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/model/__near_JSONHandler_FooBar#setNull (; 339 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3936 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=36 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=36 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3960 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 0 + local.tee $2 + local.get $3 + i32.load offset=40 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + i32.store offset=40 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3416 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=44 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=44 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3704 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 0 + local.tee $2 + local.get $3 + i32.load offset=48 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + i32.store offset=48 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3736 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=52 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=52 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 2248 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 0 + local.tee $2 + local.get $3 + i32.load offset=56 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + i32.store offset=56 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3768 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=60 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=60 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 3808 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 0 + local.tee $2 + local.get $3 + i32.load offset=64 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + i32.store offset=64 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 340 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/model/__near_JSONHandler_FooBar#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 341 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 342 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/model/FooBar#decode (; 343 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + call $assembly/model/__near_JSONHandler_FooBar#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $5 + local.get $3 + local.tee $4 + local.get $5 + local.tee $6 + local.get $4 + i32.load offset=4 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + i32.store offset=4 + local.get $5 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode (; 344 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + i32.const 0 + call $assembly/model/FooBar#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $0 + local.get $1 + call $assembly/model/FooBar#decode + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $~lib/array/Array#push (; 345 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/ArrayHandler#pushObject (; 346 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=8 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.load offset=12 + call $~lib/rt/stub/__retain + local.set $3 + local.get $2 + local.get $3 + call $~lib/nearEntry/decode + local.set $4 + local.get $0 + i32.load offset=4 + local.get $4 + call $~lib/array/Array#push + drop + i32.const 0 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit (; 347 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar (; 348 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey (; 350 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject (; 351 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#pushArray (; 352 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u + if + local.get $0 + i32.const 0 + i32.store8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 3440 + i32.const 3496 + i32.const 276 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray (; 353 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler#setString (; 354 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString + local.tee $1 + call $~lib/nearEntry/ArrayHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert (; 356 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler#setBoolean (; 357 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean (; 358 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/ArrayHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/ArrayHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler#setInteger (; 359 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/ArrayHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler#setNull (; 361 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull (; 362 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/ArrayHandler#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize (; 364 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> (; 365 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.get $3 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler#constructor + local.set $4 + i32.const 0 + local.get $4 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize + local.get $3 + local.set $6 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 366 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $assembly/test/__near_ArgsParser_convertFoobars#pushArray (; 367 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 2136 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/array/Array> + local.set $3 + local.get $2 + i32.load offset=12 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=12 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 368 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/test/__near_ArgsParser_convertFoobars#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 369 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 370 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 372 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/test/__near_ArgsParser_convertFoobars#setNull (; 373 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 2136 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/test/__near_ArgsParser_convertFoobars#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 375 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 376 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/main/convertFoobars~anonymous|0 (; 377 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 4 + i32.const 49 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $0 + i32.store + local.get $3 + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/array/Array#map (; 378 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 2 + i32.const 50 + i32.const 0 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + local.tee $6 + call $~lib/rt/stub/__retain + local.set $7 + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + call $~lib/rt/stub/__retain + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $3 + ) + (func $assembly/main/convertFoobars (; 379 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 1 + call $~lib/array/Array#map + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $assembly/test/convertFoobars (; 380 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $assembly/main/convertFoobars + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 381 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 51 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 10 + call $~lib/array/Array#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + local.tee $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $1 + local.get $2 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $1 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop + local.get $0 + ) + (func $~lib/array/Array#get:length (; 382 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 383 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 384 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1368 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 385 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load + call $~lib/array/Array#get:length + i32.const 1 + i32.sub + call $~lib/array/Array#__get + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 386 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array#__unchecked_set (; 387 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/array/Array#__set (; 388 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + local.get $1 + local.get $3 + i32.ge_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + ) + (func $~lib/string/String#substring (; 389 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $6 + local.get $2 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $7 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $8 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $9 + local.get $9 + local.get $8 + i32.sub + local.set $3 + local.get $3 + i32.eqz + if + i32.const 656 + call $~lib/rt/stub/__retain + return + end + local.get $8 + i32.eqz + if (result i32) + local.get $9 + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $0 + call $~lib/rt/stub/__retain + return + end + local.get $3 + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $10 + local.get $10 + local.get $0 + local.get $8 + i32.add + local.get $3 + call $~lib/memory/memory.copy + local.get $10 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa32 (; 390 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end + local.get $0 + i32.const 0 + i32.lt_s + local.set $1 + local.get $1 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + call $~lib/util/number/decimalCount32 + local.get $1 + i32.add + local.set $2 + local.get $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $3 + local.get $3 + local.set $6 + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut + local.get $1 + if + local.get $3 + i32.const 45 + i32.store16 + end + local.get $3 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa (; 391 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/util/number/itoa32 + return + ) + (func $~lib/number/I32#toString (; 392 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/util/number/itoa + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 393 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 1152 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + i32.const 0 + local.set $2 + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $3 + call $~lib/string/String#charCodeAt + local.set $4 + local.get $4 + i32.const 32 + i32.lt_s + local.tee $5 + if (result i32) + local.get $5 + else + local.get $4 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + end + local.tee $5 + if (result i32) + local.get $5 + else + local.get $4 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + end + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/string/String#substring + local.tee $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $3 + i32.const 1 + i32.add + local.set $2 + local.get $4 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4072 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4096 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1656 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4120 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1704 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4144 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1752 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4168 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1800 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4192 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + i32.const 0 + i32.eqz + if + i32.const 4216 + local.get $4 + call $~lib/number/I32#toString + local.tee $7 + call $~lib/string/String.__concat + local.tee $8 + i32.const 4304 + i32.const 108 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + end + end + end + end + end + end + local.get $6 + call $~lib/rt/stub/__release + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + unreachable + end + local.get $0 + local.get $1 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + call $~lib/string/String#substring + local.tee $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.const 1152 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 394 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey + i32.const 0 + i32.ne + i32.eqz + if + local.get $0 + i32.const 1088 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $0 + i32.load + local.get $0 + i32.load + call $~lib/array/Array#get:length + i32.const 1 + i32.sub + i32.const 0 + call $~lib/array/Array#__set + end + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.gt_s + else + i32.const 0 + end + if + local.get $0 + local.get $1 + local.tee $2 + if (result i32) + local.get $2 + else + unreachable + end + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString + local.get $0 + i32.const 1984 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 395 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 216 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 396 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 2112 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/array/Array#get:length (; 397 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 398 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array#__get (; 399 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1256 + i32.const 1368 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1368 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 400 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 928 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 401 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/number/I64#toString + local.tee $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 402 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/encode (; 403 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 + local.get $1 + i64.extend_i32_s + call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger + local.get $0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/encode (; 404 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 + local.get $1 + i64.extend_i32_u + call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger + local.get $0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/util/number/utoa64 (; 405 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + local.get $0 + i64.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end + local.get $0 + i64.const 4294967295 + i64.le_u + if + local.get $0 + i32.wrap_i64 + local.set $2 + local.get $2 + call $~lib/util/number/decimalCount32 + local.set $3 + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $1 + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut + else + local.get $0 + call $~lib/util/number/decimalCount64 + local.set $3 + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $1 + local.get $1 + local.set $5 + local.get $0 + local.set $7 + local.get $3 + local.set $4 + local.get $5 + local.get $7 + local.get $4 + call $~lib/util/number/utoa64_lut + end + local.get $1 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa (; 406 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + local.get $0 + call $~lib/util/number/utoa64 + return + ) + (func $~lib/number/U64#toString (; 407 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/util/number/itoa + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 408 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/encode (; 409 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 + local.get $1 + call $~lib/number/U64#toString + local.tee $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/encode (; 410 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 + local.get $1 + call $~lib/number/I64#toString + local.tee $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 411 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + if (result i32) + i32.const 160 + call $~lib/rt/stub/__retain + local.tee $2 + else + i32.const 184 + call $~lib/rt/stub/__retain + local.tee $3 + end + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 412 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/encode (; 413 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean + local.get $0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/encode<~lib/string/String> (; 414 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/base64/base64.encode (; 415 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $3 + local.get $0 + call $~lib/typedarray/Uint8Array#get:length + local.get $0 + call $~lib/typedarray/Uint8Array#get:length + i32.const 3 + i32.rem_s + i32.sub + local.set $4 + local.get $0 + call $~lib/typedarray/Uint8Array#get:length + i32.const 0 + i32.eq + if + i32.const 656 + call $~lib/rt/stub/__retain + local.set $5 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + return + end + block $break|0 + i32.const 0 + local.set $1 + loop $loop|0 + local.get $1 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + i32.const 16 + i32.shl + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.shl + i32.or + local.get $0 + local.get $1 + i32.const 2 + i32.add + call $~lib/typedarray/Uint8Array#__get + i32.or + local.set $2 + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 18 + i32.shr_u + call $~lib/string/String#charAt + local.tee $5 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $6 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $7 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $8 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $1 + i32.const 3 + i32.add + local.set $1 + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + block $break|1 + block $case1|1 + block $case0|1 + local.get $0 + call $~lib/typedarray/Uint8Array#get:length + local.get $4 + i32.sub + local.set $8 + local.get $8 + i32.const 1 + i32.eq + br_if $case0|1 + local.get $8 + i32.const 2 + i32.eq + br_if $case1|1 + br $break|1 + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + i32.const 16 + i32.shl + local.set $2 + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 18 + i32.shr_u + call $~lib/string/String#charAt + local.tee $8 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $7 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.PADCHAR + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.PADCHAR + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + br $break|1 + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + i32.const 16 + i32.shl + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.shl + i32.or + local.set $2 + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 18 + i32.shr_u + call $~lib/string/String#charAt + local.tee $7 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $8 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $6 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.PADCHAR + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + br $break|1 + end + local.get $3 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> (; 416 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + local.get $1 + call $~lib/near-runtime-ts/base64/base64.encode + local.tee $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + local.get $3 + call $~lib/rt/stub/__release + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length (; 417 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 418 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 419 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1256 + i32.const 1368 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1368 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get + ) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 420 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/string/String>#__get (; 421 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1256 + i32.const 1368 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1368 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__unchecked_get + ) + (func $~lib/array/Array#pop (; 422 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.lt_s + if + i32.const 4424 + i32.const 1368 + i32.const 287 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 423 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 2344 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + call $~lib/array/Array#pop + drop + ) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 424 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 425 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/array/Array#get:length (; 426 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 427 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 428 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1368 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 429 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 430 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/typedarray/Int8Array#constructor (; 431 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 52 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Int8Array#get:length (; 432 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + ) + (func $~lib/typedarray/Int8Array#__get (; 433 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 672 + i32.const 728 + i32.const 27 + i32.const 44 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_s + ) + (func $~lib/typedarray/Int8Array#__set (; 434 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 672 + i32.const 728 + i32.const 38 + i32.const 44 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/bignum/utils/processU64 (; 435 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $break|0 + i32.const 63 + local.set $3 + loop $loop|0 + local.get $3 + i32.const -1 + i32.ne + i32.eqz + br_if $break|0 + block $break|1 + i32.const 0 + local.set $4 + loop $loop|1 + local.get $4 + local.get $2 + i32.le_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $4 + local.get $0 + local.get $4 + call $~lib/typedarray/Int8Array#__get + local.get $0 + local.get $4 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ge_s + i32.const 3 + i32.mul + i32.add + call $~lib/typedarray/Int8Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $loop|1 + end + unreachable + end + block $break|2 + local.get $2 + local.set $4 + loop $loop|2 + local.get $4 + i32.const -1 + i32.ne + i32.eqz + br_if $break|2 + local.get $0 + local.get $4 + local.get $0 + local.get $4 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.shl + call $~lib/typedarray/Int8Array#__set + local.get $4 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.get $0 + local.get $4 + i32.const 1 + i32.add + call $~lib/typedarray/Int8Array#__get + local.get $0 + local.get $4 + call $~lib/typedarray/Int8Array#__get + i32.const 15 + i32.gt_s + i32.or + call $~lib/typedarray/Int8Array#__set + end + local.get $0 + local.get $4 + local.get $0 + local.get $4 + call $~lib/typedarray/Int8Array#__get + i32.const 15 + i32.and + call $~lib/typedarray/Int8Array#__set + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|2 + end + unreachable + end + local.get $0 + i32.const 0 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + local.get $1 + i64.const 1 + local.get $3 + i64.extend_i32_s + i64.shl + i64.and + i64.const 0 + i64.ne + i32.add + call $~lib/typedarray/Int8Array#__set + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/rt/stub/__release + ) + (func $~lib/bignum/utils/u128toa10 (; 436 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 40 + local.set $1 + i32.const 0 + local.get $1 + call $~lib/typedarray/Int8Array#constructor + local.set $2 + local.get $2 + local.get $0 + i64.load offset=8 + call $~lib/bignum/utils/processU64 + local.get $2 + local.get $0 + i64.load + call $~lib/bignum/utils/processU64 + i32.const 656 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $loop|0 + local.get $5 + i32.const -1 + i32.ne + i32.eqz + br_if $break|0 + local.get $4 + i32.eqz + if (result i32) + local.get $2 + local.get $5 + call $~lib/typedarray/Int8Array#__get + i32.const 0 + i32.gt_s + else + i32.const 0 + end + if + i32.const 1 + local.set $4 + end + local.get $4 + if + local.get $3 + global.get $~lib/bignum/utils/HEX_CHARS + local.get $2 + local.get $5 + call $~lib/typedarray/Int8Array#__get + call $~lib/string/String#charAt + local.tee $6 + call $~lib/string/String#concat + local.set $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + local.set $3 + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.set $5 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + ) + (func $~lib/bignum/integer/u128/u128#toString (; 437 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i32) + local.get $1 + i32.eqz + if + i32.const 10 + local.set $1 + end + local.get $1 + i32.const 10 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 16 + i32.eq + end + i32.eqz + if + i32.const 4472 + i32.const 4568 + i32.const 733 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $2 + local.get $2 + i64.load + local.get $2 + i64.load offset=8 + i64.or + i64.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $3 + local.get $0 + local.set $2 + i32.const 0 + local.get $2 + i64.load + local.get $2 + i64.load offset=8 + call $~lib/bignum/integer/u128/u128#constructor + local.set $4 + local.get $1 + i32.const 16 + i32.eq + if + i32.const 124 + local.get $4 + call $~lib/rt/stub/__retain + local.set $2 + local.get $2 + i64.load + local.set $6 + local.get $2 + i64.load offset=8 + local.set $5 + local.get $5 + local.get $5 + i64.const 1 + i64.sub + i64.xor + i64.const 63 + i64.shr_s + local.set $7 + local.get $5 + local.get $7 + i64.const -1 + i64.xor + i64.and + local.get $6 + local.get $7 + i64.and + i64.or + i64.clz + i32.wrap_i64 + local.get $7 + i32.wrap_i64 + i32.const 64 + i32.and + i32.add + local.set $8 + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.sub + local.set $2 + block $break|0 + local.get $2 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + local.get $4 + call $~lib/rt/stub/__retain + local.set $9 + local.get $2 + local.set $8 + local.get $8 + i32.const 127 + i32.and + local.set $8 + local.get $8 + i64.extend_i32_s + local.set $7 + local.get $7 + i64.const 127 + i64.add + local.get $7 + i64.or + i64.const 64 + i64.and + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $6 + local.get $7 + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $5 + local.get $7 + i64.const 63 + i64.and + local.set $7 + local.get $9 + i64.load offset=8 + local.set $10 + local.get $10 + local.get $7 + i64.shr_u + local.set $11 + local.get $11 + local.get $5 + i64.const -1 + i64.xor + i64.and + local.set $12 + local.get $12 + local.get $9 + i64.load + local.get $7 + i64.shr_u + local.get $10 + i64.const 64 + local.get $7 + i64.sub + i64.shl + local.get $6 + i64.and + i64.or + local.get $5 + i64.and + i64.or + local.set $12 + i32.const 0 + local.get $12 + local.get $11 + local.get $5 + i64.and + call $~lib/bignum/integer/u128/u128#constructor + local.set $13 + local.get $9 + call $~lib/rt/stub/__release + local.get $13 + local.tee $9 + local.tee $13 + local.get $4 + local.tee $8 + i32.ne + if + local.get $13 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $13 + local.set $4 + local.get $3 + drop + unreachable + end + local.get $3 + local.set $9 + local.get $4 + call $~lib/rt/stub/__release + local.get $9 + return + else + local.get $1 + i32.const 10 + i32.eq + if + local.get $0 + call $~lib/bignum/utils/u128toa10 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + return + end + end + i32.const 4640 + call $~lib/rt/stub/__retain + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> (; 438 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + local.set $4 + i32.const 0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $4 + i64.load offset=8 + local.get $3 + i64.load offset=8 + i64.eq + if (result i32) + local.get $4 + i64.load + local.get $3 + i64.load + i64.eq + else + i32.const 0 + end + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + local.get $1 + i32.const 0 + call $~lib/bignum/integer/u128/u128#toString + local.tee $4 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + local.get $4 + call $~lib/rt/stub/__release + end + local.get $0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length (; 439 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get (; 440 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__get (; 441 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1256 + i32.const 1368 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1368 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get + ) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 442 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/array/Array#get:length (; 443 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 444 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#__get (; 445 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1368 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 446 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 447 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 1064 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + call $~lib/array/Array#pop + drop + ) + (func $assembly/model/FooBar#encode (; 448 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + call $~lib/rt/stub/__retain + else + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + end + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 4024 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4048 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i64.load offset=8 + i32.const 3840 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i64.load offset=16 + i32.const 3872 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i64.load offset=24 + i32.const 3904 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load8_u offset=32 + i32.const 4000 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=36 + i32.const 3936 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=40 + i32.const 3960 + call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=44 + i32.const 3416 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=48 + i32.const 3704 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=52 + i32.const 3736 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=56 + i32.const 2248 + call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=60 + i32.const 3768 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=64 + i32.const 3808 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/encode (; 449 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + local.get $2 + call $assembly/model/FooBar#encode + call $~lib/rt/stub/__release + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/model/ContainerClass#encode (; 450 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + call $~lib/rt/stub/__retain + else + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + end + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 4392 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/encode (; 451 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + local.get $2 + call $assembly/model/ContainerClass#encode + call $~lib/rt/stub/__release + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 452 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 453 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + ) + (func $~lib/string/String.UTF8.byteLength (; 454 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.set $2 + local.get $2 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.add + local.set $3 + local.get $1 + if (result i32) + i32.const 1 + else + i32.const 0 + end + local.set $4 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load16_u + local.set $5 + local.get $5 + i32.const 128 + i32.lt_u + if + local.get $1 + if (result i32) + local.get $5 + i32.eqz + else + i32.const 0 + end + if + br $break|0 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $5 + i32.const 2048 + i32.lt_u + if + local.get $4 + i32.const 2 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $5 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if + local.get $2 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $4 + i32.const 4 + i32.add + local.set $4 + br $continue|0 + end + end + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $4 + i32.const 3 + i32.add + local.set $4 + end + end + br $continue|0 + end + unreachable + end + local.get $4 + local.set $5 + local.get $0 + call $~lib/rt/stub/__release + local.get $5 + ) + (func $~lib/string/String.UTF8.encode (; 455 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.set $2 + local.get $0 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.add + local.set $3 + local.get $0 + local.get $1 + call $~lib/string/String.UTF8.byteLength + i32.const 0 + call $~lib/rt/stub/__alloc + local.set $4 + local.get $4 + local.set $5 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load16_u + local.set $6 + local.get $6 + i32.const 128 + i32.lt_u + if + local.get $1 + if (result i32) + local.get $6 + i32.eqz + else + i32.const 0 + end + if + br $break|0 + end + local.get $5 + local.get $6 + i32.store8 + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $6 + i32.const 2048 + i32.lt_u + if + local.get $5 + local.get $6 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + i32.store8 + local.get $5 + local.get $6 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $6 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if + local.get $2 + i32.load16_u offset=2 + local.set $7 + local.get $7 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + i32.const 65536 + local.get $6 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + local.get $7 + i32.const 1023 + i32.and + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.store8 + local.get $5 + local.get $6 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + local.get $6 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $5 + local.get $6 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=3 + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $5 + i32.const 4 + i32.add + local.set $5 + br $continue|0 + end + end + local.get $5 + local.get $6 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + i32.store8 + local.get $5 + local.get $6 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + local.get $6 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $5 + i32.const 3 + i32.add + local.set $5 + end + end + br $continue|0 + end + unreachable + end + local.get $1 + if + local.get $2 + local.get $3 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 567 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + call $~lib/rt/stub/__realloc + local.set $4 + local.get $5 + i32.const 0 + i32.store8 + else + local.get $2 + local.get $3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 571 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 456 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 + local.get $1 + call $~lib/assemblyscript-json/util/index/Buffer.getPtr + local.get $3 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + call $~lib/memory/memory.copy + local.get $1 + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 457 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#toString + local.tee $1 + call $~lib/assemblyscript-json/util/index/Buffer.fromString + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/test/__wrapper_convertFoobars (; 458 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/test/__near_ArgsParser_convertFoobars#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/test/convertFoobars + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $assembly/test/__near_ArgsParser_getStringArrayLength#constructor (; 459 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 53 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 460 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 54 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 461 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 462 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 463 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 464 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/test/__near_ArgsParser_getStringArrayLength#pushObject (; 465 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 87 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 91 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 466 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 467 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 468 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 469 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 470 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/test/__near_ArgsParser_getStringArrayLength#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/test/__near_ArgsParser_getStringArrayLength#pushArray (; 471 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3416 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> + local.set $3 + local.get $2 + i32.load offset=12 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=12 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 472 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/test/__near_ArgsParser_getStringArrayLength#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 473 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 474 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 475 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 476 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/test/__near_ArgsParser_getStringArrayLength#setNull (; 477 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 3416 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 478 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/test/__near_ArgsParser_getStringArrayLength#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 479 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 480 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/near-runtime-ts/util/util.toUTF8 (; 481 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/util/util.stringToBytes (; 482 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 1 + i32.sub + local.set $1 + i32.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#constructor + local.set $2 + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 0 + call $~lib/near-runtime-ts/util/util.toUTF8 + local.get $1 + call $~lib/memory/memory.copy + local.get $2 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/logging/logging.log (; 483 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $1 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $1 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + ) + (func $assembly/main/getStringArrayLength (; 484 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $1 + i32.const 4680 + local.get $1 + call $~lib/number/I32#toString + local.tee $2 + call $~lib/string/String.__concat + local.tee $3 + call $~lib/near-runtime-ts/logging/logging.log + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $assembly/test/getStringArrayLength (; 485 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $assembly/main/getStringArrayLength + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $assembly/test/__wrapper_getStringArrayLength (; 486 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/test/__near_ArgsParser_getStringArrayLength#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/test/getStringArrayLength + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $assembly/test/__near_ArgsParser_rewrapFoobar#constructor (; 487 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 55 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 488 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 56 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 489 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 490 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 491 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 492 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/model/ContainerClass#constructor (; 493 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 4 + i32.const 49 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + ) + (func $assembly/model/__near_JSONHandler_ContainerClass#constructor (; 494 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 57 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 495 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 58 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 496 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 497 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 498 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 499 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/model/__near_JSONHandler_ContainerClass#pushObject (; 500 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 2192 + i32.const 227 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 2192 + i32.const 231 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.const 4392 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode + local.set $3 + local.get $2 + i32.load + call $~lib/rt/stub/__release + local.get $3 + i32.store + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 501 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 502 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 503 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 504 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 505 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/model/__near_JSONHandler_ContainerClass#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/model/__near_JSONHandler_ContainerClass#pushArray (; 506 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 507 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/model/__near_JSONHandler_ContainerClass#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 508 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 509 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 510 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 511 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/model/__near_JSONHandler_ContainerClass#setNull (; 512 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4392 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 513 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/model/__near_JSONHandler_ContainerClass#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 514 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 515 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/model/ContainerClass#decode (; 516 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + call $assembly/model/__near_JSONHandler_ContainerClass#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $5 + local.get $3 + local.tee $4 + local.get $5 + local.tee $6 + local.get $4 + i32.load offset=4 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + i32.store offset=4 + local.get $5 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode (; 517 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + i32.const 0 + call $assembly/model/ContainerClass#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $0 + local.get $1 + call $assembly/model/ContainerClass#decode + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $assembly/test/__near_ArgsParser_rewrapFoobar#pushObject (; 518 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 152 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 156 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.const 4744 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode + local.set $3 + local.get $2 + i32.load offset=12 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=12 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 519 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 520 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 521 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 522 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 523 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/test/__near_ArgsParser_rewrapFoobar#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/test/__near_ArgsParser_rewrapFoobar#pushArray (; 524 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 525 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/test/__near_ArgsParser_rewrapFoobar#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 526 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 527 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 528 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 529 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/test/__near_ArgsParser_rewrapFoobar#setNull (; 530 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4744 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 531 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/test/__near_ArgsParser_rewrapFoobar#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 532 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 533 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/model/AnotherContainerClass#constructor (; 534 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 4 + i32.const 59 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + ) + (func $assembly/main/rewrapFoobar (; 535 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 0 + call $assembly/model/AnotherContainerClass#constructor + local.set $1 + local.get $1 + local.tee $3 + i32.const 1 + i32.const 2 + i32.const 60 + i32.const 0 + call $~lib/rt/__allocArray + local.set $2 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 1 + i32.const 2 + i32.const 19 + i32.const 0 + call $~lib/rt/__allocArray + local.set $4 + local.get $4 + i32.load offset=4 + local.set $5 + local.get $5 + local.get $0 + i32.load + call $~lib/rt/stub/__retain + i32.store + local.get $4 + call $~lib/rt/stub/__retain + i32.store + local.get $2 + local.tee $4 + local.get $3 + i32.load + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store + local.get $1 + local.set $4 + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $assembly/test/rewrapFoobar (; 536 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $assembly/main/rewrapFoobar + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $~lib/array/Array<~lib/array/Array>#get:length (; 537 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 538 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/array/Array>#__get (; 539 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1256 + i32.const 1368 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1368 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__unchecked_get + ) + (func $~lib/array/Array#get:length (; 540 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 541 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array#__get (; 542 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1256 + i32.const 1368 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 672 + i32.const 1368 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 543 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> (; 544 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/array/Array>#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + local.get $0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $assembly/model/AnotherContainerClass#encode (; 545 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + call $~lib/rt/stub/__retain + else + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + end + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 2136 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/encode (; 546 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + local.get $2 + call $assembly/model/AnotherContainerClass#encode + call $~lib/rt/stub/__release + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/test/__wrapper_rewrapFoobar (; 547 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/test/__near_ArgsParser_rewrapFoobar#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/test/rewrapFoobar + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $assembly/test/__near_ArgsParser_unwrapFoobar#constructor (; 548 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 61 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 549 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 62 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 550 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 551 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 552 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 553 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/model/__near_JSONHandler_AnotherContainerClass#constructor (; 554 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 63 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 555 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 64 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 556 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 557 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 558 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 559 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/model/__near_JSONHandler_AnotherContainerClass#pushObject (; 560 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 2192 + i32.const 269 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 2192 + i32.const 273 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 561 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 562 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 563 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 564 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 565 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/model/__near_JSONHandler_AnotherContainerClass#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/array/Array<~lib/array/Array>#constructor (; 566 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 60 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 1256 + i32.const 1368 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#constructor (; 567 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 65 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/stub/__retain + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#constructor (; 568 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 66 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar (; 569 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#isWhitespace (; 570 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar (; 571 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace (; 572 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $~lib/array/Array<~lib/array/Array>#push (; 573 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#pushObject (; 574 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=8 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.load offset=12 + call $~lib/rt/stub/__retain + local.set $3 + local.get $2 + local.get $3 + call $~lib/nearEntry/decode<~lib/array/Array> + local.set $4 + local.get $0 + i32.load offset=4 + local.get $4 + call $~lib/array/Array<~lib/array/Array>#push + drop + i32.const 0 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readHexDigit (; 575 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readEscapedChar (; 576 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readString (; 577 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseKey (; 578 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseObject (; 579 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#pushArray (; 580 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u + if + local.get $0 + i32.const 0 + i32.store8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 3440 + i32.const 3496 + i32.const 276 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + local.get $0 + i32.load offset=12 + call $~lib/nearEntry/decode<~lib/array/Array> + local.tee $2 + call $~lib/array/Array<~lib/array/Array>#push + drop + i32.const 0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseArray (; 581 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setString (; 582 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseString (; 583 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readString + local.tee $1 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readAndAssert (; 584 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setBoolean (; 585 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseBoolean (; 586 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setInteger (; 587 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseNumber (; 588 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setNull (; 589 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseNull (; 590 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseValue (; 591 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#deserialize (; 592 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/array/Array>> (; 593 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#constructor + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.get $3 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#constructor + local.set $4 + i32.const 0 + local.get $4 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#constructor + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#deserialize + local.get $3 + local.set $6 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> (; 594 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.get $1 + call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/array/Array>> + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + return + ) + (func $assembly/model/__near_JSONHandler_AnotherContainerClass#pushArray (; 595 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 2136 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> + local.set $3 + local.get $2 + i32.load + call $~lib/rt/stub/__release + local.get $3 + i32.store + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 596 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/model/__near_JSONHandler_AnotherContainerClass#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 597 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 598 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 599 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 600 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/model/__near_JSONHandler_AnotherContainerClass#setNull (; 601 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 2136 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 602 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/model/__near_JSONHandler_AnotherContainerClass#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 603 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 604 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/model/AnotherContainerClass#decode (; 605 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + call $assembly/model/__near_JSONHandler_AnotherContainerClass#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $5 + local.get $3 + local.tee $4 + local.get $5 + local.tee $6 + local.get $4 + i32.load offset=4 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + i32.store offset=4 + local.get $5 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode (; 606 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + i32.const 0 + call $assembly/model/AnotherContainerClass#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $0 + local.get $1 + call $assembly/model/AnotherContainerClass#decode + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $assembly/test/__near_ArgsParser_unwrapFoobar#pushObject (; 607 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 217 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 221 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.const 4744 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode + local.set $3 + local.get $2 + i32.load offset=12 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=12 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 608 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 609 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 610 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 611 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 612 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/test/__near_ArgsParser_unwrapFoobar#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/test/__near_ArgsParser_unwrapFoobar#pushArray (; 613 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 614 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/test/__near_ArgsParser_unwrapFoobar#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 615 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 616 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 617 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 618 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/test/__near_ArgsParser_unwrapFoobar#setNull (; 619 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 4744 + call $~lib/string/String.__eq + if + local.get $0 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 620 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/test/__near_ArgsParser_unwrapFoobar#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 621 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 622 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/main/unwrapFoobar (; 623 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.tee $1 + i32.const 0 + call $~lib/array/Array#__get + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/test/unwrapFoobar (; 624 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $assembly/main/unwrapFoobar + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $assembly/test/__wrapper_unwrapFoobar (; 625 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + i32.const 0 + call $assembly/test/__near_ArgsParser_unwrapFoobar#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + local.get $3 + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $4 + local.get $5 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $3 + i32.load offset=12 + call $assembly/test/unwrapFoobar + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $assembly/main/stringOrNull (; 626 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + call $~lib/rt/stub/__retain + ) + (func $assembly/test/stringOrNull (; 627 ;) (type $FUNCSIG$i) (result i32) + call $assembly/main/stringOrNull + ) + (func $assembly/test/__wrapper_stringOrNull (; 628 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + call $assembly/test/stringOrNull + local.set $0 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $1 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + local.tee $2 + if (result i32) + local.get $2 + else + unreachable + end + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 629 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 268435452 + i32.gt_u + if + i32.const 552 + i32.const 1368 + i32.const 45 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const 17 + i32.const 0 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.load offset=4 + i32.const 0 + local.get $1 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 630 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $3 + local.get $3 + i32.load + local.set $4 + local.get $2 + local.get $4 + i32.ne + if + local.get $3 + local.get $2 + call $~lib/rt/stub/__retain + i32.store + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 631 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $3 + local.get $1 + local.get $3 + i32.gt_u + if + local.get $2 + call $~lib/rt/stub/__release + i32.const 1256 + i32.const 1368 + i32.const 121 + i32.const 38 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set + local.get $1 + local.get $3 + i32.ge_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/model/FooBar#toJSON (; 632 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 0 + i32.const 656 + call $assembly/model/FooBar#encode + local.tee $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#toString + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/model/Nullables#constructor (; 633 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 67 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + ) + (func $assembly/model/Nullables#encode (; 634 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + call $~lib/rt/stub/__retain + else + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + end + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 5120 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 5144 + call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=8 + i32.const 5168 + call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $assembly/model/Nullables#serialize (; 635 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 0 + i32.const 656 + call $assembly/model/Nullables#encode + local.tee $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/model/__near_JSONHandler_Nullables#constructor (; 636 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 68 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load offset=12 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=12 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 637 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 69 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 638 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.ge_s + if + i32.const -1 + return + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 639 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 9 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 10 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 32 + i32.eq + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 640 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=8 + call $~lib/typedarray/Uint8Array#get:length + i32.lt_s + i32.eqz + if + i32.const 784 + i32.const 840 + i32.const 112 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 641 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + br $continue|0 + end + unreachable + end + ) + (func $assembly/model/__near_JSONHandler_Nullables#pushObject (; 642 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load8_u offset=8 + i32.const 0 + i32.ne + i32.eqz + if + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 2192 + i32.const 185 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.store8 offset=8 + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + else + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.ne + end + i32.eqz + if + i32.const 0 + i32.const 2192 + i32.const 189 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.const 5144 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load offset=4 + call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> + local.set $3 + local.get $2 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 643 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end + end + i32.const 2 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end + i32.eqz + if + i32.const 1848 + i32.const 840 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 644 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $1 + local.get $1 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1152 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1584 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1608 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1608 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1632 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1656 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1680 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1704 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1728 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1752 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1776 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1800 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1824 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.set $5 + local.get $2 + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul + i32.add + local.get $5 + i32.add + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1904 + i32.const 1 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 840 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 645 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 840 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1416 + i32.const 840 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.set $4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 656 + call $~lib/array/Array<~lib/string/String>#join + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + else + local.get $3 + i32.const 1584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end + end + br $loop|0 + end + unreachable + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 646 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1984 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2008 + i32.const 840 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 647 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 928 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/model/__near_JSONHandler_Nullables#pushObject + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1064 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2048 + i32.const 840 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/model/__near_JSONHandler_Nullables#pushArray (; 648 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 649 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2112 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 656 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $assembly/model/__near_JSONHandler_Nullables#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 840 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 2344 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2368 + i32.const 840 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/model/__near_JSONHandler_Nullables#setString (; 650 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 5120 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 5144 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + local.get $4 + call $~lib/bignum/utils/atou128 + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + local.set $5 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $5 + i32.store offset=4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 5168 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $2 + call $~lib/near-runtime-ts/base64/base64.decode + local.set $3 + local.get $5 + i32.load offset=8 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=8 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 651 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 1152 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + local.tee $1 + call $assembly/model/__near_JSONHandler_Nullables#setString + i32.const 1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 652 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.eq + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2472 + call $~lib/string/String.__concat + local.tee $4 + i32.const 840 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 653 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 654 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 2584 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable + end + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger + i32.const 1 + return + end + i32.const 0 + ) + (func $assembly/model/__near_JSONHandler_Nullables#setNull (; 655 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 5120 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 5144 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 0 + local.tee $2 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 + i32.store offset=4 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $1 + i32.const 5168 + call $~lib/string/String.__eq + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.tee $3 + local.get $2 + i32.load offset=8 + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=8 + local.get $1 + call $~lib/rt/stub/__release + return + end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 656 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $assembly/model/__near_JSONHandler_Nullables#setNull + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 657 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + end + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + end + local.set $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 658 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + i32.const 0 + i32.ne + i32.eqz + if + i32.const 3128 + i32.const 840 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/model/Nullables#decode (; 659 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + call $assembly/model/__near_JSONHandler_Nullables#constructor + local.set $3 + local.get $3 + local.tee $4 + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $5 + i32.store + i32.const 0 + local.get $3 + call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + local.set $5 + local.get $3 + local.tee $4 + local.get $5 + local.tee $6 + local.get $4 + i32.load offset=4 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + i32.store offset=4 + local.get $5 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize + local.get $0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/nearEntry/decode (; 660 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + i32.const 0 + call $assembly/model/Nullables#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $0 + local.get $1 + call $assembly/model/Nullables#decode + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + ) + (func $assembly/test/runTest (; 661 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + i32.const 4784 + call $~lib/near-runtime-ts/logging/logging.log + i32.const 0 + call $assembly/model/FooBar#constructor + local.set $0 + local.get $0 + local.tee $1 + i32.const 2 + i32.const 2 + i32.const 15 + i32.const 4832 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.tee $2 + local.tee $3 + local.get $1 + i32.load offset=48 + local.tee $1 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store offset=48 + local.get $0 + i32.const 321 + i32.store + local.get $0 + i32.const 123 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store8 offset=32 + local.get $0 + local.tee $3 + i32.const 4024 + local.tee $1 + local.get $3 + i32.load offset=36 + local.tee $3 + i32.ne + if + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $1 + i32.store offset=36 + local.get $0 + local.tee $1 + i32.const 4856 + call $~lib/near-runtime-ts/base64/base64.decode + local.set $3 + local.get $1 + i32.load offset=40 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=40 + local.get $0 + local.tee $3 + i32.const 0 + i64.const 128 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.set $1 + local.get $3 + i32.load offset=56 + call $~lib/rt/stub/__release + local.get $1 + i32.store offset=56 + local.get $0 + local.tee $3 + i32.const 2 + i32.const 2 + i32.const 14 + i32.const 0 + call $~lib/rt/__allocArray + local.set $1 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 1 + i32.const 2 + i32.const 13 + i32.const 4944 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.tee $5 + call $~lib/rt/stub/__retain + i32.store + local.get $3 + i32.const 1 + i32.const 2 + i32.const 13 + i32.const 5000 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.tee $6 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $1 + local.tee $4 + local.get $3 + i32.load offset=44 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=44 + local.get $0 + local.tee $4 + i32.const 2 + call $~lib/array/Array.create<~lib/typedarray/Uint8Array> + local.set $1 + local.get $4 + i32.load offset=60 + call $~lib/rt/stub/__release + local.get $1 + i32.store offset=60 + local.get $0 + i32.load offset=60 + i32.const 0 + i32.const 4856 + call $~lib/near-runtime-ts/base64/base64.decode + local.tee $1 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__set + local.get $0 + i32.load offset=60 + i32.const 1 + i32.const 4856 + call $~lib/near-runtime-ts/base64/base64.decode + local.tee $4 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__set + local.get $0 + local.tee $3 + i32.const 2 + i32.const 3 + i32.const 18 + i32.const 5024 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.tee $7 + local.tee $8 + local.get $3 + i32.load offset=64 + local.tee $3 + i32.ne + if + local.get $8 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $8 + i32.store offset=64 + local.get $0 + i32.const 0 + i32.const 656 + call $assembly/model/FooBar#encode + local.set $8 + i32.const 5056 + local.get $8 + call $~lib/assemblyscript-json/encoder/JSONEncoder#toString + local.tee $3 + call $~lib/string/String.__concat + local.tee $9 + call $~lib/near-runtime-ts/logging/logging.log + local.get $8 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $10 + local.get $10 + i32.const 0 + call $~lib/nearEntry/decode + local.set $11 + i32.const 5088 + local.get $11 + call $assembly/model/FooBar#toJSON + local.tee $12 + call $~lib/string/String.__concat + local.tee $13 + call $~lib/near-runtime-ts/logging/logging.log + local.get $0 + i32.load + local.get $11 + i32.load + i32.eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 316 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $11 + i32.load offset=4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 317 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=40 + call $~lib/near-runtime-ts/base64/base64.encode + local.tee $14 + local.get $11 + i32.load offset=40 + call $~lib/near-runtime-ts/base64/base64.encode + local.tee $15 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 318 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=60 + i32.const 0 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get + local.tee $16 + call $~lib/near-runtime-ts/base64/base64.encode + local.tee $17 + local.get $11 + i32.load offset=60 + i32.const 0 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get + local.tee $18 + call $~lib/near-runtime-ts/base64/base64.encode + local.tee $19 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 319 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=44 + i32.const 0 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get + local.tee $20 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $21 + i32.const 4912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 320 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=64 + i32.const 0 + call $~lib/array/Array#__get + local.get $11 + i32.load offset=64 + i32.const 0 + call $~lib/array/Array#__get + i64.eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 321 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.load offset=16 + local.get $11 + i64.load offset=16 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 322 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $assembly/model/Nullables#constructor + local.set $22 + local.get $22 + call $assembly/model/Nullables#serialize + local.tee $23 + i32.const 0 + call $~lib/nearEntry/decode + local.set $24 + local.get $24 + i32.load + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 325 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $24 + i32.load offset=4 + call $~lib/rt/stub/__retain + local.set $26 + i32.const 0 + call $~lib/rt/stub/__retain + local.set $25 + local.get $26 + i64.load offset=8 + local.get $25 + i64.load offset=8 + i64.eq + if (result i32) + local.get $26 + i64.load + local.get $25 + i64.load + i64.eq + else + i32.const 0 + end + local.set $27 + local.get $25 + call $~lib/rt/stub/__release + local.get $26 + call $~lib/rt/stub/__release + local.get $27 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 326 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $24 + i32.load offset=8 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 952 + i32.const 327 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5208 + call $~lib/near-runtime-ts/logging/logging.log + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $11 + call $~lib/rt/stub/__release + local.get $12 + call $~lib/rt/stub/__release + local.get $13 + call $~lib/rt/stub/__release + local.get $14 + call $~lib/rt/stub/__release + local.get $15 + call $~lib/rt/stub/__release + local.get $16 + call $~lib/rt/stub/__release + local.get $17 + call $~lib/rt/stub/__release + local.get $18 + call $~lib/rt/stub/__release + local.get $19 + call $~lib/rt/stub/__release + local.get $20 + call $~lib/rt/stub/__release + local.get $21 + call $~lib/rt/stub/__release + local.get $22 + call $~lib/rt/stub/__release + local.get $23 + call $~lib/rt/stub/__release + local.get $24 + call $~lib/rt/stub/__release + ) + (func $start (; 662 ;) (type $FUNCSIG$v) + call $start:~lib/rt/index-stub + call $start:~lib/nearEntry + ) + (func $null (; 663 ;) (type $FUNCSIG$v) + ) +) diff --git a/tests/near-bindgen/package-lock.json b/tests/near-bindgen/package-lock.json deleted file mode 100644 index 41c27e1b67..0000000000 --- a/tests/near-bindgen/package-lock.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "near-bindgen", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "assemblyscript-json": { - "version": "github:nearprotocol/assemblyscript-json#ef54d6f227585cbee70d0df7abba9144c020e7ab", - "from": "github:nearprotocol/assemblyscript-json#staging" - }, - "bignum": { - "version": "github:MaxGraey/bignum.wasm#0d08196706b6ac53975bacd43710baee62470e1d", - "from": "github:MaxGraey/bignum.wasm" - }, - "near-runtime-ts": { - "version": "github:nearprotocol/near-runtime-ts#f91173cb9c1ae4dd8fd4d7b206486ba683ebf524", - "from": "github:nearprotocol/near-runtime-ts#staging", - "requires": { - "assemblyscript-json": "github:nearprotocol/assemblyscript-json#staging", - "bignum": "github:MaxGraey/bignum.wasm" - } - } - } -} diff --git a/tests/near-bindgen/package.json b/tests/near-bindgen/package.json index 76735f5e59..eed0cf0187 100644 --- a/tests/near-bindgen/package.json +++ b/tests/near-bindgen/package.json @@ -8,10 +8,5 @@ "build:hello": "../../bin/asc assembly/hello/main.ts --validate --runtime stub --binaryFile out/hello.wasm --textFile out/hello.wat --runPasses dce --debug", "build": "npm run build:as && npm run build:hello", "test": "node --experimental-wasm-bigint ./test.js" - }, - "author": "", - "license": "MIT", - "dependencies": { - "near-runtime-ts": "github:nearprotocol/near-runtime-ts#staging" } } diff --git a/tests/near-bindgen/test.js b/tests/near-bindgen/test.js index 65005a35a9..49e95b933e 100644 --- a/tests/near-bindgen/test.js +++ b/tests/near-bindgen/test.js @@ -51,6 +51,9 @@ async function loadModule(path) { let inputJson = null; let outputJson = null; let module; + let mem = { get U8() { + return new Uint8Array(module.memory.buffer); + }} module = loader.instantiateBuffer(fs.readFileSync(path), { env: { abort(msg, file, line, column) { @@ -99,14 +102,14 @@ async function loadModule(path) { function copyToPtr(fromBuf, toPtr) { for (let i = 0; i < fromBuf.length; i++) { - module.I8[toPtr + i] = fromBuf[i]; + mem.U8[toPtr + i] = fromBuf[i]; } } function readBuffer(valLen, valPtr) { const result = new Uint8Array(valLen); for (let i = 0; i < valLen; i++) { - result[i] = module.I8[valPtr + i]; + result[i] = mem.U8[valPtr + i]; } return result; diff --git a/tests/near-bindgen/test.sh b/tests/near-bindgen/test.sh index 5d3a20470f..899dc3eb7b 100755 --- a/tests/near-bindgen/test.sh +++ b/tests/near-bindgen/test.sh @@ -1,9 +1,7 @@ #!/bin/sh set -e set -x -# BASEDIR=../.. (cd ..; npm run build:bindings:dev) -npm install npm run build npm run test (cd ..; npm run build:bindings:prod) \ No newline at end of file From e7d478603f04b4c11cdfb75a648a331b890ecf9a Mon Sep 17 00:00:00 2001 From: Max Graey Date: Fri, 6 Sep 2019 11:01:06 +0300 Subject: [PATCH 15/24] Add TypedArray#filter (#818) --- std/assembly/index.d.ts | 2 + std/assembly/typedarray.ts | 73 + tests/compiler/std/dataview.optimized.wat | 2 +- tests/compiler/std/dataview.untouched.wat | 2 +- tests/compiler/std/typedarray.optimized.wat | 4240 +++++++++++---- tests/compiler/std/typedarray.ts | 27 + tests/compiler/std/typedarray.untouched.wat | 5107 +++++++++++++++---- 7 files changed, 7428 insertions(+), 2025 deletions(-) diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index ef8145217e..4ceee6d300 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1149,6 +1149,8 @@ declare abstract class TypedArray implements ArrayBufferView { some(callbackfn: (value: T, index: i32, self: this) => bool): bool; /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/ map(callbackfn: (value: T, index: i32, self: this) => T): TypedArray; + /** The filter() method creates a new typed array with all elements that pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.filter(). */ + filter(callbackfn: (value: T, index: i32, self: this) => bool): TypedArray; /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */ sort(callback?: (a: T, b: T) => i32): this; /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */ diff --git a/std/assembly/typedarray.ts b/std/assembly/typedarray.ts index 62fc8aeef6..80a5ec7688 100644 --- a/std/assembly/typedarray.ts +++ b/std/assembly/typedarray.ts @@ -90,6 +90,10 @@ export class Int8Array extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: i8, index: i32, self: Int8Array) => bool): Int8Array { + return FILTER(this, fn); + } + findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 { return FIND_INDEX(this, fn); } @@ -202,6 +206,10 @@ export class Uint8Array extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: u8, index: i32, self: Uint8Array) => bool): Uint8Array { + return FILTER(this, fn); + } + findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 { return FIND_INDEX(this, fn); } @@ -314,6 +322,10 @@ export class Uint8ClampedArray extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): Uint8ClampedArray { + return FILTER(this, fn); + } + findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 { return FIND_INDEX(this, fn); } @@ -426,6 +438,10 @@ export class Int16Array extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: i16, index: i32, self: Int16Array) => bool): Int16Array { + return FILTER(this, fn); + } + findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 { return FIND_INDEX(this, fn); } @@ -538,6 +554,10 @@ export class Uint16Array extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: u16, index: i32, self: Uint16Array) => bool): Uint16Array { + return FILTER(this, fn); + } + findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 { return FIND_INDEX(this, fn); } @@ -650,6 +670,10 @@ export class Int32Array extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: i32, index: i32, self: Int32Array) => bool): Int32Array { + return FILTER(this, fn); + } + findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 { return FIND_INDEX(this, fn); } @@ -762,6 +786,10 @@ export class Uint32Array extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: u32, index: i32, self: Uint32Array) => bool): Uint32Array { + return FILTER(this, fn); + } + findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 { return FIND_INDEX(this, fn); } @@ -874,6 +902,10 @@ export class Int64Array extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: i64, index: i32, self: Int64Array) => bool): Int64Array { + return FILTER(this, fn); + } + findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 { return FIND_INDEX(this, fn); } @@ -986,6 +1018,10 @@ export class Uint64Array extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: u64, index: i32, self: Uint64Array) => bool): Uint64Array { + return FILTER(this, fn); + } + findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 { return FIND_INDEX(this, fn); } @@ -1098,6 +1134,10 @@ export class Float32Array extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: f32, index: i32, self: Float32Array) => bool): Float32Array { + return FILTER(this, fn); + } + findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 { return FIND_INDEX(this, fn); } @@ -1210,6 +1250,10 @@ export class Float64Array extends ArrayBufferView { return MAP(this, fn); } + filter(fn: (value: f64, index: i32, self: Float64Array) => bool): Float64Array { + return FILTER(this, fn); + } + findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 { return FIND_INDEX(this, fn); } @@ -1364,6 +1408,35 @@ function MAP( return out; } +// @ts-ignore: decorator +@inline +function FILTER( + array: TArray, + fn: (value: T, index: i32, self: TArray) => bool, +): TArray { + var len = array.length; + var out = changetype(__alloc(offsetof(), idof())); + var buffer = __alloc(len << alignof(), idof()); + var dataStart = array.dataStart; + var j: usize = 0; + for (let i = 0; i < len; i++) { + let value = load(dataStart + (i << alignof())); + if (fn(value, i, array)) { + store( + buffer + (j++ << alignof()), + value + ); + } + } + // shrink output buffer + var length = j << alignof(); + var data = __realloc(buffer, length); + out.data = changetype(data); // retain + out.dataStart = data; + out.dataLength = length; + return out; +} + // @ts-ignore: decorator @inline function FIND_INDEX( diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 28fe008463..b8e883c4a2 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1634,7 +1634,7 @@ if i32.const 280 i32.const 376 - i32.const 150 + i32.const 154 i32.const 44 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 5747a2449b..ad48564abe 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -3327,7 +3327,7 @@ if i32.const 280 i32.const 376 - i32.const 150 + i32.const 154 i32.const 44 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 48495b06dd..6a6c85dc55 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -77,8 +77,8 @@ (data (i32.const 1208) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") (data (i32.const 1272) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\c8\04\00\00\c8\04\00\00,\00\00\00\0b") (data (i32.const 1304) "\10\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\003\04\00\00\02\00\00\00\93\04\00\00\02") - (table $0 112 funcref) - (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) + (table $0 123 funcref) + (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) @@ -2455,7 +2455,7 @@ if i32.const 280 i32.const 432 - i32.const 598 + i32.const 618 i32.const 63 call $~lib/builtins/abort unreachable @@ -2479,7 +2479,7 @@ if i32.const 280 i32.const 432 - i32.const 587 + i32.const 607 i32.const 63 call $~lib/builtins/abort unreachable @@ -2602,7 +2602,7 @@ if i32.const 280 i32.const 432 - i32.const 1158 + i32.const 1198 i32.const 63 call $~lib/builtins/abort unreachable @@ -3166,7 +3166,7 @@ if i32.const 280 i32.const 432 - i32.const 1147 + i32.const 1187 i32.const 63 call $~lib/builtins/abort unreachable @@ -3187,7 +3187,7 @@ if i32.const 280 i32.const 432 - i32.const 262 + i32.const 270 i32.const 44 call $~lib/builtins/abort unreachable @@ -3219,7 +3219,7 @@ if i32.const 280 i32.const 432 - i32.const 251 + i32.const 259 i32.const 44 call $~lib/builtins/abort unreachable @@ -3872,7 +3872,7 @@ if i32.const 280 i32.const 432 - i32.const 150 + i32.const 154 i32.const 44 call $~lib/builtins/abort unreachable @@ -4015,7 +4015,7 @@ if i32.const 280 i32.const 432 - i32.const 374 + i32.const 386 i32.const 63 call $~lib/builtins/abort unreachable @@ -4121,7 +4121,7 @@ if i32.const 280 i32.const 432 - i32.const 486 + i32.const 502 i32.const 63 call $~lib/builtins/abort unreachable @@ -4309,7 +4309,7 @@ if i32.const 280 i32.const 432 - i32.const 710 + i32.const 734 i32.const 63 call $~lib/builtins/abort unreachable @@ -4370,7 +4370,7 @@ if i32.const 280 i32.const 432 - i32.const 822 + i32.const 850 i32.const 63 call $~lib/builtins/abort unreachable @@ -4486,7 +4486,7 @@ if i32.const 280 i32.const 432 - i32.const 934 + i32.const 966 i32.const 63 call $~lib/builtins/abort unreachable @@ -4547,7 +4547,7 @@ if i32.const 280 i32.const 432 - i32.const 1046 + i32.const 1082 i32.const 63 call $~lib/builtins/abort unreachable @@ -5692,7 +5692,7 @@ if i32.const 280 i32.const 432 - i32.const 139 + i32.const 143 i32.const 44 call $~lib/builtins/abort unreachable @@ -5966,7 +5966,7 @@ if i32.const 280 i32.const 432 - i32.const 363 + i32.const 375 i32.const 63 call $~lib/builtins/abort unreachable @@ -6119,7 +6119,7 @@ if i32.const 280 i32.const 432 - i32.const 475 + i32.const 491 i32.const 63 call $~lib/builtins/abort unreachable @@ -6402,7 +6402,7 @@ if i32.const 280 i32.const 432 - i32.const 699 + i32.const 723 i32.const 63 call $~lib/builtins/abort unreachable @@ -6565,7 +6565,7 @@ if i32.const 280 i32.const 432 - i32.const 811 + i32.const 839 i32.const 63 call $~lib/builtins/abort unreachable @@ -6718,7 +6718,7 @@ if i32.const 280 i32.const 432 - i32.const 923 + i32.const 955 i32.const 63 call $~lib/builtins/abort unreachable @@ -6881,7 +6881,7 @@ if i32.const 280 i32.const 432 - i32.const 1035 + i32.const 1071 i32.const 63 call $~lib/builtins/abort unreachable @@ -7102,152 +7102,2595 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 148 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 148 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop local.get $2 call $~lib/rt/pure/__release local.get $0 - i32.const 255 - i32.and + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 2 - i32.eq + i32.gt_s ) - (func $~lib/typedarray/Int8Array#some (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/tlsf/reallocateBlock (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 + (local $5 i32) + (local $6 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 i32.load offset=4 - local.set $3 + i32.const -268435456 + i32.and + i32.eqz + end + i32.eqz + if i32.const 0 - local.set $0 + i32.const 128 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 local.get $2 - i32.load offset=8 - local.set $4 - loop $loop|0 + i32.store offset=12 + local.get $1 + return + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $4 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $3 + i32.ge_u + if local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $0 - local.get $3 - i32.add - i32.load8_s - local.get $0 - local.get $2 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - if - local.get $2 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 - end - unreachable - end + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return end - local.get $2 - call $~lib/rt/pure/__release - i32.const 0 end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 150 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 local.get $2 - call $~lib/rt/pure/__retain - drop + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add local.get $2 - call $~lib/rt/pure/__release - local.get $0 - i32.const 255 - i32.and - i32.eqz - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 151 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set + i32.or + i32.store local.get $0 - i32.const 35 - call $~lib/typedarray/Int8Array#some + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + local.get $3 + ) + (func $~lib/rt/tlsf/__realloc (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT i32.eqz if i32.const 0 - i32.const 376 - i32.const 355 - i32.const 2 + i32.const 128 + i32.const 568 + i32.const 13 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 36 - call $~lib/typedarray/Int8Array#some + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz if i32.const 0 - i32.const 376 - i32.const 357 + i32.const 128 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/pure/__release + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add ) - (func $~lib/typedarray/Uint8Array#some (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#filter (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=8 - local.set $4 - loop $loop|0 - local.get $0 + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + i32.load offset=8 + local.set $1 + i32.const 12 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $5 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $4 + local.get $1 + i32.lt_s + if + local.get $3 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $0 - local.get $3 - i32.add - i32.load8_u + i32.add + i32.load8_s + local.set $8 + i32.const 3 + global.set $~lib/argc + local.get $8 + local.get $4 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $7 + i32.add + local.get $8 + i32.store8 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $loop|0 + end + end + local.get $7 + local.get $0 + call $~lib/rt/tlsf/__realloc + local.tee $3 + local.set $1 + local.get $2 + i32.load + local.tee $6 + local.get $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + drop + local.get $6 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $1 + i32.store + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> (; 152 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $0 + call $~lib/typedarray/Int8Array#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.gt_u + ) + (func $~lib/typedarray/Uint8Array#filter (; 154 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + i32.load offset=8 + local.set $1 + i32.const 12 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $5 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $4 + local.get $1 + i32.lt_s + if + local.get $3 + local.get $4 + i32.add + i32.load8_u + local.set $8 + i32.const 3 + global.set $~lib/argc + local.get $8 + local.get $4 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $7 + i32.add + local.get $8 + i32.store8 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $loop|0 + end + end + local.get $7 + local.get $0 + call $~lib/rt/tlsf/__realloc + local.tee $3 + local.set $1 + local.get $2 + i32.load + local.tee $6 + local.get $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + drop + local.get $6 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $1 + i32.store + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> (; 155 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + call $~lib/typedarray/Uint8Array#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/typedarray/Uint8ClampedArray#filter (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + i32.load offset=8 + local.set $1 + i32.const 12 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $5 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $4 + local.get $1 + i32.lt_s + if + local.get $3 + local.get $4 + i32.add + i32.load8_u + local.set $8 + i32.const 3 + global.set $~lib/argc + local.get $8 + local.get $4 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $7 + i32.add + local.get $8 + i32.store8 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $loop|0 + end + end + local.get $7 + local.get $0 + call $~lib/rt/tlsf/__realloc + local.tee $3 + local.set $1 + local.get $2 + i32.load + local.tee $6 + local.get $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + drop + local.get $6 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $1 + i32.store + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> (; 157 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 158 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 2 + i32.gt_s + ) + (func $~lib/typedarray/Int16Array#filter (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + i32.const 12 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.const 1 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $5 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + local.get $8 + i32.add + i32.load16_s + local.set $7 + i32.const 3 + global.set $~lib/argc + local.get $7 + local.get $1 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 + if + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 1 + i32.shl + local.get $6 + i32.add + local.get $7 + i32.store16 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + end + local.get $6 + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + call $~lib/rt/tlsf/__realloc + local.tee $0 + local.set $4 + local.get $2 + i32.load + local.tee $3 + local.get $0 + i32.ne + if + local.get $4 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (; 160 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + local.get $0 + call $~lib/typedarray/Int16Array#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.gt_u + ) + (func $~lib/typedarray/Uint16Array#filter (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + i32.const 12 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.const 1 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $5 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + local.get $8 + i32.add + i32.load16_u + local.set $7 + i32.const 3 + global.set $~lib/argc + local.get $7 + local.get $1 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 + if + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 1 + i32.shl + local.get $6 + i32.add + local.get $7 + i32.store16 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + end + local.get $6 + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + call $~lib/rt/tlsf/__realloc + local.tee $0 + local.set $4 + local.get $2 + i32.load + local.tee $3 + local.get $0 + i32.ne + if + local.get $4 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> (; 163 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + call $~lib/typedarray/Uint16Array#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 164 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 2 + i32.gt_s + ) + (func $~lib/typedarray/Int32Array#filter (; 165 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + i32.const 12 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $5 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $8 + i32.add + i32.load + local.set $7 + i32.const 3 + global.set $~lib/argc + local.get $7 + local.get $1 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 + if + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 2 + i32.shl + local.get $6 + i32.add + local.get $7 + i32.store + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + end + local.get $6 + local.get $0 + i32.const 2 + i32.shl + local.tee $1 + call $~lib/rt/tlsf/__realloc + local.tee $0 + local.set $4 + local.get $2 + i32.load + local.tee $3 + local.get $0 + i32.ne + if + local.get $4 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (; 166 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $0 + call $~lib/typedarray/Int32Array#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 167 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 2 + i32.gt_u + ) + (func $~lib/typedarray/Uint32Array#filter (; 168 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + i32.const 12 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $5 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $8 + i32.add + i32.load + local.set $7 + i32.const 3 + global.set $~lib/argc + local.get $7 + local.get $1 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 + if + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 2 + i32.shl + local.get $6 + i32.add + local.get $7 + i32.store + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + end + local.get $6 + local.get $0 + i32.const 2 + i32.shl + local.tee $1 + call $~lib/rt/tlsf/__realloc + local.tee $0 + local.set $4 + local.get $2 + i32.load + local.tee $3 + local.get $0 + i32.ne + if + local.get $4 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (; 169 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + call $~lib/typedarray/Uint32Array#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 170 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i64.const 2 + i64.gt_s + ) + (func $~lib/typedarray/Int64Array#filter (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + i32.const 12 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $5 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 3 + i32.shl + local.get $8 + i32.add + i64.load + local.set $7 + i32.const 3 + global.set $~lib/argc + local.get $7 + local.get $1 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 + if + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 3 + i32.shl + local.get $6 + i32.add + local.get $7 + i64.store + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + end + local.get $6 + local.get $0 + i32.const 3 + i32.shl + local.tee $1 + call $~lib/rt/tlsf/__realloc + local.tee $0 + local.set $4 + local.get $2 + i32.load + local.tee $3 + local.get $0 + i32.ne + if + local.get $4 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> (; 172 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + local.get $0 + call $~lib/typedarray/Int64Array#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 173 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i64.const 2 + i64.gt_u + ) + (func $~lib/typedarray/Uint64Array#filter (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + i32.const 12 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $5 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 3 + i32.shl + local.get $8 + i32.add + i64.load + local.set $7 + i32.const 3 + global.set $~lib/argc + local.get $7 + local.get $1 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 + if + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 3 + i32.shl + local.get $6 + i32.add + local.get $7 + i64.store + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + end + local.get $6 + local.get $0 + i32.const 3 + i32.shl + local.tee $1 + call $~lib/rt/tlsf/__realloc + local.tee $0 + local.set $4 + local.get $2 + i32.load + local.tee $3 + local.get $0 + i32.ne + if + local.get $4 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> (; 175 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + call $~lib/typedarray/Uint64Array#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 176 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + f32.const 2 + f32.gt + ) + (func $~lib/typedarray/Float32Array#filter (; 177 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f32) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + i32.const 12 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $5 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $8 + i32.add + f32.load + local.set $7 + i32.const 3 + global.set $~lib/argc + local.get $7 + local.get $1 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 + if + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 2 + i32.shl + local.get $6 + i32.add + local.get $7 + f32.store + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + end + local.get $6 + local.get $0 + i32.const 2 + i32.shl + local.tee $1 + call $~lib/rt/tlsf/__realloc + local.tee $0 + local.set $4 + local.get $2 + i32.load + local.tee $3 + local.get $0 + i32.ne + if + local.get $4 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> (; 178 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 5 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + local.get $0 + call $~lib/typedarray/Float32Array#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 179 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + f64.const 2 + f64.gt + ) + (func $~lib/typedarray/Float64Array#filter (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f64) + (local $8 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + i32.const 12 + i32.const 13 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $5 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 3 + i32.shl + local.get $8 + i32.add + f64.load + local.set $7 + i32.const 3 + global.set $~lib/argc + local.get $7 + local.get $1 + local.get $5 + call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 + if + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 3 + i32.shl + local.get $6 + i32.add + local.get $7 + f64.store + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + end + local.get $6 + local.get $0 + i32.const 3 + i32.shl + local.tee $1 + call $~lib/rt/tlsf/__realloc + local.tee $0 + local.set $4 + local.get $2 + i32.load + local.tee $3 + local.get $0 + i32.ne + if + local.get $4 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> (; 181 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 6 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 5 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $0 + call $~lib/typedarray/Float64Array#filter + local.tee $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.ne + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 182 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $~lib/typedarray/Int8Array#some (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + local.set $4 + loop $loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + local.get $3 + i32.add + i32.load8_s + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $2 + call $~lib/rt/pure/__release + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|0 + end + unreachable + end + end + local.get $2 + call $~lib/rt/pure/__release + i32.const 0 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 255 + i32.and + i32.eqz + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 185 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 46 + call $~lib/typedarray/Int8Array#some + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 382 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 47 + call $~lib/typedarray/Int8Array#some + if + i32.const 0 + i32.const 376 + i32.const 384 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/typedarray/Uint8Array#some (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + local.set $4 + loop $loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + local.get $3 + i32.add + i32.load8_u local.get $0 local.get $2 local.get $1 @@ -7272,7 +9715,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 153 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 187 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7292,24 +9735,24 @@ i32.const 6 call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 37 + i32.const 48 call $~lib/typedarray/Uint8Array#some i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 38 + i32.const 49 call $~lib/typedarray/Uint8Array#some if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -7319,7 +9762,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 154 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 188 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7339,24 +9782,24 @@ i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 39 + i32.const 50 call $~lib/typedarray/Uint8Array#some i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 40 + i32.const 51 call $~lib/typedarray/Uint8Array#some if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -7366,7 +9809,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 155 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 189 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7378,7 +9821,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#some (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7431,7 +9874,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 157 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7442,7 +9885,7 @@ i32.and i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 158 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 192 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7462,24 +9905,24 @@ i32.const 6 call $~lib/typedarray/Int16Array#__set local.get $0 - i32.const 41 + i32.const 52 call $~lib/typedarray/Int16Array#some i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 42 + i32.const 53 call $~lib/typedarray/Int16Array#some if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -7489,7 +9932,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#some (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7542,7 +9985,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 160 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 194 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7562,24 +10005,24 @@ i32.const 6 call $~lib/typedarray/Uint16Array#__set local.get $0 - i32.const 43 + i32.const 54 call $~lib/typedarray/Uint16Array#some i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 44 + i32.const 55 call $~lib/typedarray/Uint16Array#some if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -7589,7 +10032,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7599,7 +10042,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int32Array#some (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7652,7 +10095,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 163 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 197 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7661,7 +10104,7 @@ local.get $0 i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 164 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 198 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7681,24 +10124,24 @@ i32.const 6 call $~lib/typedarray/Int32Array#__set local.get $0 - i32.const 45 + i32.const 56 call $~lib/typedarray/Int32Array#some i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 46 + i32.const 57 call $~lib/typedarray/Int32Array#some if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -7708,7 +10151,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 165 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 199 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7728,24 +10171,24 @@ i32.const 6 call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 47 + i32.const 58 call $~lib/typedarray/Int32Array#some i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 48 + i32.const 59 call $~lib/typedarray/Int32Array#some if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -7755,7 +10198,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 166 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 200 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7765,7 +10208,7 @@ i64.const 2 i64.eq ) - (func $~lib/typedarray/Int64Array#some (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7818,7 +10261,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 168 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 202 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7828,7 +10271,7 @@ i64.const 0 i64.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 169 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 203 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7848,24 +10291,24 @@ i64.const 6 call $~lib/typedarray/Int64Array#__set local.get $0 - i32.const 49 + i32.const 60 call $~lib/typedarray/Int64Array#some i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 50 + i32.const 61 call $~lib/typedarray/Int64Array#some if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -7875,7 +10318,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 170 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 204 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -7895,24 +10338,24 @@ i64.const 6 call $~lib/typedarray/Uint64Array#__set local.get $0 - i32.const 51 + i32.const 62 call $~lib/typedarray/Int64Array#some i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 52 + i32.const 63 call $~lib/typedarray/Int64Array#some if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -7922,7 +10365,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 171 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 205 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7932,7 +10375,7 @@ f32.const 2 f32.eq ) - (func $~lib/typedarray/Float32Array#some (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7985,7 +10428,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 173 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 207 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7995,7 +10438,7 @@ f32.const 0 f32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 174 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 208 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8015,24 +10458,24 @@ f32.const 6 call $~lib/typedarray/Float32Array#__set local.get $0 - i32.const 53 + i32.const 64 call $~lib/typedarray/Float32Array#some i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 54 + i32.const 65 call $~lib/typedarray/Float32Array#some if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -8042,7 +10485,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 175 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 209 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8052,7 +10495,7 @@ f64.const 2 f64.eq ) - (func $~lib/typedarray/Float64Array#some (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 210 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8105,7 +10548,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 177 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 211 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8115,7 +10558,7 @@ f64.const 0 f64.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 178 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 212 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8135,24 +10578,24 @@ f64.const 6 call $~lib/typedarray/Float64Array#__set local.get $0 - i32.const 55 + i32.const 66 call $~lib/typedarray/Float64Array#some i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 56 + i32.const 67 call $~lib/typedarray/Float64Array#some if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -8162,7 +10605,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#findIndex (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8213,7 +10656,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 180 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8225,7 +10668,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 181 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 215 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8245,27 +10688,27 @@ i32.const 3 call $~lib/typedarray/Int8Array#__set local.get $0 - i32.const 57 + i32.const 68 call $~lib/typedarray/Int8Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 58 + i32.const 69 call $~lib/typedarray/Int8Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -8275,7 +10718,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#findIndex (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8326,7 +10769,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 183 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 217 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8346,27 +10789,27 @@ i32.const 3 call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 59 + i32.const 70 call $~lib/typedarray/Uint8Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 60 + i32.const 71 call $~lib/typedarray/Uint8Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -8376,7 +10819,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 184 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 218 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8396,27 +10839,27 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 61 + i32.const 72 call $~lib/typedarray/Uint8Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 62 + i32.const 73 call $~lib/typedarray/Uint8Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -8426,7 +10869,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#findIndex (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8480,7 +10923,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 220 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8492,7 +10935,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 187 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 221 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8512,27 +10955,27 @@ i32.const 3 call $~lib/typedarray/Int16Array#__set local.get $0 - i32.const 63 + i32.const 74 call $~lib/typedarray/Int16Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 64 + i32.const 75 call $~lib/typedarray/Int16Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -8542,7 +10985,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#findIndex (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8596,7 +11039,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 189 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 223 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8616,27 +11059,27 @@ i32.const 3 call $~lib/typedarray/Uint16Array#__set local.get $0 - i32.const 65 + i32.const 76 call $~lib/typedarray/Uint16Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 66 + i32.const 77 call $~lib/typedarray/Uint16Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -8646,7 +11089,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#findIndex (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8700,7 +11143,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8710,7 +11153,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 192 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 226 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8730,27 +11173,27 @@ i32.const 3 call $~lib/typedarray/Int32Array#__set local.get $0 - i32.const 67 + i32.const 78 call $~lib/typedarray/Int32Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 68 + i32.const 79 call $~lib/typedarray/Int32Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -8760,7 +11203,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 193 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 227 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8780,27 +11223,27 @@ i32.const 3 call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 69 + i32.const 80 call $~lib/typedarray/Int32Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 70 + i32.const 81 call $~lib/typedarray/Int32Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -8810,7 +11253,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#findIndex (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 228 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8864,7 +11307,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 195 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 229 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8874,7 +11317,7 @@ i64.const 4 i64.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 196 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 230 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8894,27 +11337,27 @@ i64.const 3 call $~lib/typedarray/Int64Array#__set local.get $0 - i32.const 71 + i32.const 82 call $~lib/typedarray/Int64Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 72 + i32.const 83 call $~lib/typedarray/Int64Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -8924,7 +11367,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 197 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 231 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -8944,27 +11387,27 @@ i64.const 3 call $~lib/typedarray/Uint64Array#__set local.get $0 - i32.const 73 + i32.const 84 call $~lib/typedarray/Int64Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 74 + i32.const 85 call $~lib/typedarray/Int64Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -8974,7 +11417,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#findIndex (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9028,7 +11471,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 199 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 233 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9038,7 +11481,7 @@ f32.const 4 f32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 200 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 234 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9058,27 +11501,27 @@ f32.const 3 call $~lib/typedarray/Float32Array#__set local.get $0 - i32.const 75 + i32.const 86 call $~lib/typedarray/Float32Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 76 + i32.const 87 call $~lib/typedarray/Float32Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -9088,7 +11531,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#findIndex (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9142,7 +11585,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 202 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 236 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9152,7 +11595,7 @@ f64.const 4 f64.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 203 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 237 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9172,27 +11615,27 @@ f64.const 3 call $~lib/typedarray/Float64Array#__set local.get $0 - i32.const 77 + i32.const 88 call $~lib/typedarray/Float64Array#findIndex i32.const 1 i32.ne if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 78 + i32.const 89 call $~lib/typedarray/Float64Array#findIndex i32.const -1 i32.ne if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -9202,7 +11645,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 204 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9217,7 +11660,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#every (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9267,7 +11710,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 206 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 240 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9287,24 +11730,24 @@ i32.const 6 call $~lib/typedarray/Int8Array#__set local.get $0 - i32.const 79 + i32.const 90 call $~lib/typedarray/Int8Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 80 + i32.const 91 call $~lib/typedarray/Int8Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -9314,7 +11757,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 207 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9325,7 +11768,7 @@ i32.and i32.eqz ) - (func $~lib/typedarray/Uint8Array#every (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9375,7 +11818,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 209 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 243 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9395,24 +11838,24 @@ i32.const 6 call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 81 + i32.const 92 call $~lib/typedarray/Uint8Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 82 + i32.const 93 call $~lib/typedarray/Uint8Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -9422,7 +11865,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 210 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 244 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9442,24 +11885,24 @@ i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 83 + i32.const 94 call $~lib/typedarray/Uint8Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 84 + i32.const 95 call $~lib/typedarray/Uint8Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -9469,7 +11912,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 211 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9484,7 +11927,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#every (; 212 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9536,7 +11979,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 213 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 247 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9556,24 +11999,24 @@ i32.const 6 call $~lib/typedarray/Int16Array#__set local.get $0 - i32.const 85 + i32.const 96 call $~lib/typedarray/Int16Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 86 + i32.const 97 call $~lib/typedarray/Int16Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -9583,7 +12026,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#every (; 214 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9635,7 +12078,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 215 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 249 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9655,24 +12098,24 @@ i32.const 6 call $~lib/typedarray/Uint16Array#__set local.get $0 - i32.const 87 + i32.const 98 call $~lib/typedarray/Uint16Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 88 + i32.const 99 call $~lib/typedarray/Uint16Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -9682,7 +12125,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 216 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9693,7 +12136,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#every (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9745,7 +12188,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 218 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 252 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9765,24 +12208,24 @@ i32.const 6 call $~lib/typedarray/Int32Array#__set local.get $0 - i32.const 89 + i32.const 100 call $~lib/typedarray/Int32Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 90 + i32.const 101 call $~lib/typedarray/Int32Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -9792,7 +12235,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 219 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 253 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9812,24 +12255,24 @@ i32.const 6 call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 91 + i32.const 102 call $~lib/typedarray/Int32Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 92 + i32.const 103 call $~lib/typedarray/Int32Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -9839,7 +12282,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 220 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 254 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9851,7 +12294,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#every (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9903,7 +12346,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 222 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 256 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9923,24 +12366,24 @@ i64.const 6 call $~lib/typedarray/Int64Array#__set local.get $0 - i32.const 93 + i32.const 104 call $~lib/typedarray/Int64Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 94 + i32.const 105 call $~lib/typedarray/Int64Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -9950,7 +12393,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 223 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 257 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9962,7 +12405,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 224 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 258 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9982,24 +12425,24 @@ i64.const 6 call $~lib/typedarray/Uint64Array#__set local.get $0 - i32.const 95 + i32.const 106 call $~lib/typedarray/Int64Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 96 + i32.const 107 call $~lib/typedarray/Int64Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -10009,7 +12452,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/math/NativeMathf.mod (; 225 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 259 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10158,7 +12601,7 @@ local.get $0 f32.mul ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 226 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 260 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10169,7 +12612,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#every (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10221,7 +12664,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 228 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 262 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10241,24 +12684,24 @@ f32.const 6 call $~lib/typedarray/Float32Array#__set local.get $0 - i32.const 97 + i32.const 108 call $~lib/typedarray/Float32Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 98 + i32.const 109 call $~lib/typedarray/Float32Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -10268,7 +12711,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/math/NativeMath.mod (; 229 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 263 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -10424,7 +12867,7 @@ local.get $0 f64.mul ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 230 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 264 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10435,7 +12878,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#every (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10487,7 +12930,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 232 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 266 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10507,24 +12950,24 @@ f64.const 6 call $~lib/typedarray/Float64Array#__set local.get $0 - i32.const 99 + i32.const 110 call $~lib/typedarray/Float64Array#every i32.eqz if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 100 + i32.const 111 call $~lib/typedarray/Float64Array#every if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -10534,7 +12977,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 233 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 267 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10550,7 +12993,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -10561,7 +13004,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -10572,7 +13015,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -10584,7 +13027,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#forEach (; 234 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Int8Array#forEach (; 268 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10622,7 +13065,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 235 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 269 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -10671,7 +13114,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -10681,7 +13124,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#forEach (; 236 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 270 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10720,7 +13163,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 237 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 271 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -10756,7 +13199,7 @@ i32.and call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 102 + i32.const 113 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -10764,7 +13207,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -10774,7 +13217,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 238 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 272 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -10810,7 +13253,7 @@ i32.and call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 103 + i32.const 114 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -10818,7 +13261,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -10828,7 +13271,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 239 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 273 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10844,7 +13287,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -10855,7 +13298,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -10866,7 +13309,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -10878,7 +13321,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#forEach (; 240 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Int16Array#forEach (; 274 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10918,7 +13361,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 241 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 275 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -10967,7 +13410,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -10977,7 +13420,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#forEach (; 242 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 276 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11017,7 +13460,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 243 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 277 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11060,7 +13503,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -11070,7 +13513,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 244 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 278 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11082,7 +13525,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -11093,7 +13536,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -11104,7 +13547,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -11116,7 +13559,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#forEach (; 245 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 279 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11158,7 +13601,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 246 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 280 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11188,7 +13631,7 @@ call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set local.get $0 - i32.const 106 + i32.const 117 call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -11196,7 +13639,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -11206,7 +13649,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 247 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 281 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11236,7 +13679,7 @@ call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 107 + i32.const 118 call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -11244,7 +13687,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -11254,7 +13697,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 248 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 282 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11267,7 +13710,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -11278,7 +13721,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -11289,7 +13732,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -11301,7 +13744,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#forEach (; 249 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 283 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11343,7 +13786,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 250 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 284 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11376,7 +13819,7 @@ i64.extend_i32_s call $~lib/typedarray/Int64Array#__set local.get $0 - i32.const 108 + i32.const 119 call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -11384,7 +13827,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -11394,7 +13837,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 251 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 285 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11427,7 +13870,7 @@ i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set local.get $0 - i32.const 109 + i32.const 120 call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -11435,7 +13878,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -11445,7 +13888,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 252 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 286 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11458,7 +13901,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -11469,7 +13912,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -11480,7 +13923,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -11492,7 +13935,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#forEach (; 253 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Float32Array#forEach (; 287 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11532,7 +13975,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 254 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 288 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11572,7 +14015,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -11582,7 +14025,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 255 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 289 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11595,7 +14038,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -11606,7 +14049,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -11617,7 +14060,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -11629,7 +14072,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#forEach (; 256 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Float64Array#forEach (; 290 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11669,7 +14112,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 257 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 291 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -11709,7 +14152,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -11719,7 +14162,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reverse (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 292 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11771,7 +14214,7 @@ end local.get $3 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 259 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 293 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11853,7 +14296,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -11881,7 +14324,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -11894,7 +14337,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -11907,7 +14350,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -11920,7 +14363,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -11940,7 +14383,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reverse (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 294 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11992,7 +14435,7 @@ end local.get $3 ) - (func $~lib/typedarray/Uint8Array#subarray (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12073,7 +14516,7 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 262 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 296 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12149,7 +14592,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -12176,7 +14619,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -12189,7 +14632,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -12202,7 +14645,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -12215,7 +14658,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -12235,7 +14678,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12316,7 +14759,7 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 264 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 298 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12392,7 +14835,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -12419,7 +14862,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -12432,7 +14875,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -12445,7 +14888,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -12458,7 +14901,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -12478,7 +14921,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reverse (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 299 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12535,7 +14978,7 @@ end local.get $3 ) - (func $~lib/typedarray/Int16Array#subarray (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 300 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12620,7 +15063,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 267 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 301 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12702,7 +15145,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -12729,7 +15172,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -12742,7 +15185,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -12755,7 +15198,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -12768,7 +15211,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -12788,7 +15231,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#reverse (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 302 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12845,7 +15288,7 @@ end local.get $3 ) - (func $~lib/typedarray/Uint16Array#subarray (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12930,7 +15373,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 270 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 304 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13006,7 +15449,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -13033,7 +15476,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -13046,7 +15489,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -13059,7 +15502,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -13072,7 +15515,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -13092,7 +15535,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reverse (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 305 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13149,7 +15592,7 @@ end local.get $3 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 272 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 306 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13219,7 +15662,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -13247,7 +15690,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -13260,7 +15703,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -13273,7 +15716,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -13286,7 +15729,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -13306,7 +15749,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#subarray (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13391,7 +15834,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 274 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 308 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13461,7 +15904,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -13488,7 +15931,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -13501,7 +15944,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -13514,7 +15957,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -13527,7 +15970,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -13547,7 +15990,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reverse (; 275 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 309 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13604,7 +16047,7 @@ end local.get $3 ) - (func $~lib/typedarray/Int64Array#subarray (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 310 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13689,7 +16132,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 277 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 311 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13762,7 +16205,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -13789,7 +16232,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -13802,7 +16245,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -13815,7 +16258,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -13828,7 +16271,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -13848,7 +16291,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#subarray (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 312 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13933,7 +16376,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 279 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 313 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14006,7 +16449,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -14033,7 +16476,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -14046,7 +16489,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -14059,7 +16502,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -14072,7 +16515,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -14092,7 +16535,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reverse (; 280 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 314 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14149,7 +16592,7 @@ end local.get $3 ) - (func $~lib/typedarray/Float32Array#subarray (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 315 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14234,7 +16677,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 282 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 316 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14307,7 +16750,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -14334,7 +16777,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -14347,7 +16790,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -14360,7 +16803,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -14373,7 +16816,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -14393,7 +16836,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reverse (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 317 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14450,7 +16893,7 @@ end local.get $3 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 284 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 318 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14523,7 +16966,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -14551,7 +16994,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -14564,7 +17007,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -14577,7 +17020,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -14590,7 +17033,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -14610,7 +17053,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#indexOf (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#indexOf (; 319 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 @@ -14685,7 +17128,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int8Array#lastIndexOf (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf (; 320 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $0 @@ -14754,7 +17197,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 321 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -14775,7 +17218,7 @@ local.get $2 call $~lib/typedarray/Int8Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 288 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 322 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14821,7 +17264,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -14835,7 +17278,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -14849,7 +17292,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -14863,7 +17306,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -14877,7 +17320,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -14891,7 +17334,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -14905,7 +17348,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -14919,7 +17362,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -14933,7 +17376,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -14946,7 +17389,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -14961,7 +17404,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -14976,7 +17419,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -14991,7 +17434,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -15005,7 +17448,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -15019,7 +17462,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -15033,7 +17476,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -15047,7 +17490,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -15061,7 +17504,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -15075,7 +17518,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -15093,7 +17536,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -15105,7 +17548,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -15119,7 +17562,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -15133,7 +17576,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -15147,7 +17590,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -15161,7 +17604,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -15175,7 +17618,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -15189,7 +17632,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -15203,7 +17646,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 289 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 323 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15247,7 +17690,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -15261,7 +17704,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -15275,7 +17718,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -15289,7 +17732,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -15303,7 +17746,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -15317,7 +17760,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -15331,7 +17774,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -15345,7 +17788,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -15359,7 +17802,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -15372,7 +17815,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -15387,7 +17830,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -15402,7 +17845,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -15417,7 +17860,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -15431,7 +17874,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -15445,7 +17888,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -15459,7 +17902,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -15473,7 +17916,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -15487,7 +17930,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -15501,7 +17944,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -15518,7 +17961,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -15530,7 +17973,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -15544,7 +17987,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -15558,7 +18001,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -15572,7 +18015,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -15586,7 +18029,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -15600,7 +18043,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -15614,7 +18057,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -15628,7 +18071,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 290 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 324 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15672,7 +18115,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -15686,7 +18129,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -15700,7 +18143,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -15714,7 +18157,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -15728,7 +18171,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -15742,7 +18185,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -15756,7 +18199,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -15770,7 +18213,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -15784,7 +18227,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -15797,7 +18240,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -15812,7 +18255,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -15827,7 +18270,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -15842,7 +18285,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -15856,7 +18299,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -15870,7 +18313,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -15884,7 +18327,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -15898,7 +18341,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -15912,7 +18355,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -15926,7 +18369,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -15943,7 +18386,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -15955,7 +18398,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -15969,7 +18412,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -15983,7 +18426,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -15997,7 +18440,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -16011,7 +18454,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -16025,7 +18468,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -16039,7 +18482,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -16053,7 +18496,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#indexOf (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#indexOf (; 325 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 @@ -16130,7 +18573,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int16Array#lastIndexOf (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf (; 326 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 @@ -16201,7 +18644,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 293 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 327 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -16222,7 +18665,7 @@ local.get $2 call $~lib/typedarray/Int16Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 294 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 328 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16268,7 +18711,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -16282,7 +18725,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -16296,7 +18739,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -16310,7 +18753,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -16324,7 +18767,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -16338,7 +18781,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -16352,7 +18795,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -16366,7 +18809,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -16380,7 +18823,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -16393,7 +18836,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -16408,7 +18851,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -16423,7 +18866,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -16438,7 +18881,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -16452,7 +18895,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -16466,7 +18909,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -16480,7 +18923,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -16494,7 +18937,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -16508,7 +18951,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -16522,7 +18965,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -16539,7 +18982,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -16551,7 +18994,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -16565,7 +19008,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -16579,7 +19022,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -16593,7 +19036,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -16607,7 +19050,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -16621,7 +19064,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -16635,7 +19078,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -16649,7 +19092,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 295 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 329 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16693,7 +19136,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -16707,7 +19150,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -16721,7 +19164,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -16735,7 +19178,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -16749,7 +19192,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -16763,7 +19206,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -16777,7 +19220,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -16791,7 +19234,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -16805,7 +19248,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -16818,7 +19261,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -16833,7 +19276,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -16848,7 +19291,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -16863,7 +19306,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -16877,7 +19320,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -16891,7 +19334,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -16905,7 +19348,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -16919,7 +19362,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -16933,7 +19376,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -16947,7 +19390,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -16964,7 +19407,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -16976,7 +19419,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -16990,7 +19433,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -17004,7 +19447,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -17018,7 +19461,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -17032,7 +19475,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -17046,7 +19489,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -17060,7 +19503,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -17074,7 +19517,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#indexOf (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#indexOf (; 330 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 @@ -17149,7 +19592,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int32Array#lastIndexOf (; 297 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf (; 331 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 local.get $0 @@ -17218,7 +19661,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 332 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -17239,7 +19682,7 @@ local.get $2 call $~lib/typedarray/Int32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 299 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 333 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17281,7 +19724,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -17295,7 +19738,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -17309,7 +19752,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -17323,7 +19766,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -17337,7 +19780,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -17351,7 +19794,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -17365,7 +19808,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -17379,7 +19822,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -17393,7 +19836,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -17406,7 +19849,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -17421,7 +19864,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -17436,7 +19879,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -17451,7 +19894,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -17465,7 +19908,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -17479,7 +19922,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -17493,7 +19936,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -17507,7 +19950,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -17521,7 +19964,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -17535,7 +19978,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -17553,7 +19996,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -17565,7 +20008,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -17579,7 +20022,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -17593,7 +20036,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -17607,7 +20050,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -17621,7 +20064,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -17635,7 +20078,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -17649,7 +20092,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -17663,7 +20106,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 300 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 334 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17705,7 +20148,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -17719,7 +20162,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -17733,7 +20176,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -17747,7 +20190,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -17761,7 +20204,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -17775,7 +20218,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -17789,7 +20232,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -17803,7 +20246,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -17817,7 +20260,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -17830,7 +20273,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -17845,7 +20288,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -17860,7 +20303,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -17875,7 +20318,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -17889,7 +20332,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -17903,7 +20346,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -17917,7 +20360,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -17931,7 +20374,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -17945,7 +20388,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -17959,7 +20402,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -17976,7 +20419,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -17988,7 +20431,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -18002,7 +20445,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -18016,7 +20459,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -18030,7 +20473,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -18044,7 +20487,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -18058,7 +20501,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -18072,7 +20515,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -18086,7 +20529,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#indexOf (; 301 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#indexOf (; 335 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 @@ -18161,7 +20604,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int64Array#lastIndexOf (; 302 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf (; 336 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $0 @@ -18230,7 +20673,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 303 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 337 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -18251,7 +20694,7 @@ local.get $2 call $~lib/typedarray/Int64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 304 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 338 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18294,7 +20737,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -18308,7 +20751,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -18322,7 +20765,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -18336,7 +20779,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -18350,7 +20793,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -18364,7 +20807,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -18378,7 +20821,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -18392,7 +20835,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -18406,7 +20849,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -18419,7 +20862,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -18434,7 +20877,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -18449,7 +20892,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -18464,7 +20907,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -18478,7 +20921,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -18492,7 +20935,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -18506,7 +20949,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -18520,7 +20963,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -18534,7 +20977,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -18548,7 +20991,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -18565,7 +21008,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -18577,7 +21020,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -18591,7 +21034,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -18605,7 +21048,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -18619,7 +21062,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -18633,7 +21076,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -18647,7 +21090,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -18661,7 +21104,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -18675,7 +21118,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 305 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 339 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18718,7 +21161,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -18732,7 +21175,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -18746,7 +21189,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -18760,7 +21203,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -18774,7 +21217,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -18788,7 +21231,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -18802,7 +21245,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -18816,7 +21259,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -18830,7 +21273,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -18843,7 +21286,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -18858,7 +21301,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -18873,7 +21316,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -18888,7 +21331,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -18902,7 +21345,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -18916,7 +21359,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -18930,7 +21373,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -18944,7 +21387,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -18958,7 +21401,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -18972,7 +21415,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -18989,7 +21432,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -19001,7 +21444,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -19015,7 +21458,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -19029,7 +21472,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -19043,7 +21486,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -19057,7 +21500,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -19071,7 +21514,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -19085,7 +21528,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -19099,7 +21542,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#indexOf (; 306 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#indexOf (; 340 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -19174,7 +21617,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float32Array#lastIndexOf (; 307 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf (; 341 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $0 @@ -19243,7 +21686,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 308 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 342 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -19264,7 +21707,7 @@ local.get $2 call $~lib/typedarray/Float32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 309 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 343 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19307,7 +21750,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -19321,7 +21764,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -19335,7 +21778,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -19349,7 +21792,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -19363,7 +21806,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -19377,7 +21820,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -19391,7 +21834,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -19405,7 +21848,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -19419,7 +21862,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -19432,7 +21875,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -19447,7 +21890,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -19462,7 +21905,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -19477,7 +21920,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -19491,7 +21934,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -19505,7 +21948,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -19519,7 +21962,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -19533,7 +21976,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -19547,7 +21990,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -19561,7 +22004,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -19578,7 +22021,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -19590,7 +22033,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -19604,7 +22047,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -19618,7 +22061,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -19632,7 +22075,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -19646,7 +22089,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -19660,7 +22103,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -19674,7 +22117,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -19688,7 +22131,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#indexOf (; 310 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#indexOf (; 344 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 @@ -19763,7 +22206,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float64Array#lastIndexOf (; 311 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf (; 345 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $0 @@ -19832,7 +22275,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 312 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 346 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -19853,7 +22296,7 @@ local.get $2 call $~lib/typedarray/Float64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 313 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 347 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19896,7 +22339,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -19910,7 +22353,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -19924,7 +22367,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -19938,7 +22381,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -19952,7 +22395,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -19966,7 +22409,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -19980,7 +22423,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -19994,7 +22437,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -20008,7 +22451,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -20021,7 +22464,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -20036,7 +22479,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -20051,7 +22494,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -20066,7 +22509,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -20080,7 +22523,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -20094,7 +22537,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -20108,7 +22551,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -20122,7 +22565,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -20136,7 +22579,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -20150,7 +22593,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -20168,7 +22611,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -20180,7 +22623,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -20194,7 +22637,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -20208,7 +22651,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -20222,7 +22665,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -20236,7 +22679,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -20250,7 +22693,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -20264,7 +22707,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -20278,18 +22721,18 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#get:buffer (; 314 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:buffer (; 348 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 315 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 316 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 350 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -20357,7 +22800,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int8Array.wrap (; 317 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array.wrap (; 351 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20376,7 +22819,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -20398,7 +22841,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -20411,7 +22854,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -20427,7 +22870,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -20463,7 +22906,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 318 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 352 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20551,7 +22994,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -20578,7 +23021,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array.wrap (; 319 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap (; 353 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20597,7 +23040,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -20619,7 +23062,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -20632,7 +23075,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -20648,7 +23091,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -20684,7 +23127,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 320 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 354 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20770,7 +23213,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -20797,7 +23240,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray.wrap (; 321 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray.wrap (; 355 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20816,7 +23259,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -20838,7 +23281,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -20851,7 +23294,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -20867,7 +23310,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -20903,7 +23346,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 322 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 356 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20989,7 +23432,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -21016,7 +23459,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array.wrap (; 323 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array.wrap (; 357 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21035,7 +23478,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -21057,7 +23500,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -21070,7 +23513,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -21089,7 +23532,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -21125,7 +23568,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 324 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 358 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21213,7 +23656,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -21240,7 +23683,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array.wrap (; 325 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array.wrap (; 359 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21259,7 +23702,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -21281,7 +23724,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -21294,7 +23737,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -21313,7 +23756,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -21349,7 +23792,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 326 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 360 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21435,7 +23878,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -21462,7 +23905,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array.wrap (; 327 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array.wrap (; 361 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21481,7 +23924,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -21503,7 +23946,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -21516,7 +23959,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -21535,7 +23978,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -21571,7 +24014,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 328 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 362 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21655,7 +24098,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -21682,7 +24125,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array.wrap (; 329 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array.wrap (; 363 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21701,7 +24144,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -21723,7 +24166,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -21736,7 +24179,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -21755,7 +24198,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -21791,7 +24234,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 330 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 364 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21875,7 +24318,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -21902,7 +24345,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array.wrap (; 331 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array.wrap (; 365 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21921,7 +24364,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -21943,7 +24386,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -21956,7 +24399,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -21975,7 +24418,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -22011,7 +24454,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 332 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 366 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22096,7 +24539,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -22123,7 +24566,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array.wrap (; 333 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array.wrap (; 367 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22142,7 +24585,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -22164,7 +24607,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -22177,7 +24620,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -22196,7 +24639,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -22232,7 +24675,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 334 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 368 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22317,7 +24760,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -22344,7 +24787,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array.wrap (; 335 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array.wrap (; 369 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22363,7 +24806,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -22385,7 +24828,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -22398,7 +24841,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -22417,7 +24860,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -22453,7 +24896,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 336 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 370 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22538,7 +24981,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -22565,7 +25008,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array.wrap (; 337 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array.wrap (; 371 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22584,7 +25027,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -22606,7 +25049,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -22619,7 +25062,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -22638,7 +25081,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -22674,7 +25117,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 338 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 372 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22759,7 +25202,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -22786,7 +25229,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start:std/typedarray (; 339 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 373 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24088,6 +26531,17 @@ call $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> call $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> call $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> call $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> @@ -24166,7 +26620,7 @@ call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> ) - (func $start (; 340 ;) (type $FUNCSIG$v) + (func $start (; 374 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -24176,7 +26630,7 @@ end call $start:std/typedarray ) - (func $~lib/rt/pure/markGray (; 341 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 375 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -24200,7 +26654,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 342 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 376 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -24213,7 +26667,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 343 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 377 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -24247,7 +26701,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 344 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 378 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -24280,7 +26734,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__visit (; 345 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 379 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 i32.const 1436 i32.lt_u @@ -24390,7 +26844,7 @@ unreachable end ) - (func $~lib/rt/__visit_members (; 346 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 380 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $block$4$break block $switch$1$default block $switch$1$case$2 @@ -24413,7 +26867,7 @@ call $~lib/rt/pure/__visit end ) - (func $null (; 347 ;) (type $FUNCSIG$v) + (func $null (; 381 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index afd1114723..224e66c05e 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -346,6 +346,33 @@ testArrayMap(); testArrayMap(); testArrayMap(); +function testArrayFilter, T extends number>(): void { + var source: ArrayType = instantiate(6); + source[0] = 1; + source[1] = 2; + source[2] = 3; + source[3] = 4; + source[5] = 5; + var result = source.filter((value: T): bool => value > 2); + assert(result.byteOffset == 0); + assert(result.length == 3); + assert(result[0] == 3); + assert(result[1] == 4); + assert(result[2] == 5); +} + +testArrayFilter(); +testArrayFilter(); +testArrayFilter(); +testArrayFilter(); +testArrayFilter(); +testArrayFilter(); +testArrayFilter(); +testArrayFilter(); +testArrayFilter(); +testArrayFilter(); +testArrayFilter(); + function testArraySome, T extends number>(): void { var source: ArrayType = instantiate(3); source[0] = 2; diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index a2cfc4a508..b35a119549 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -76,8 +76,8 @@ (data (i32.const 1208) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") (data (i32.const 1272) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\c8\04\00\00\c8\04\00\00,\00\00\00\0b\00\00\00") (data (i32.const 1304) "\10\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\003\04\00\00\02\00\00\00\93\04\00\00\02\00\00\00") - (table $0 112 funcref) - (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) + (table $0 123 funcref) + (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) (global $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) (global $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT i32 (i32.const 1)) @@ -4153,7 +4153,7 @@ if i32.const 280 i32.const 432 - i32.const 598 + i32.const 618 i32.const 63 call $~lib/builtins/abort unreachable @@ -4177,7 +4177,7 @@ if i32.const 280 i32.const 432 - i32.const 587 + i32.const 607 i32.const 63 call $~lib/builtins/abort unreachable @@ -4321,7 +4321,7 @@ if i32.const 280 i32.const 432 - i32.const 1158 + i32.const 1198 i32.const 63 call $~lib/builtins/abort unreachable @@ -4987,7 +4987,7 @@ if i32.const 280 i32.const 432 - i32.const 1147 + i32.const 1187 i32.const 63 call $~lib/builtins/abort unreachable @@ -5008,7 +5008,7 @@ if i32.const 280 i32.const 432 - i32.const 262 + i32.const 270 i32.const 44 call $~lib/builtins/abort unreachable @@ -5040,7 +5040,7 @@ if i32.const 280 i32.const 432 - i32.const 251 + i32.const 259 i32.const 44 call $~lib/builtins/abort unreachable @@ -5871,7 +5871,7 @@ if i32.const 280 i32.const 432 - i32.const 150 + i32.const 154 i32.const 44 call $~lib/builtins/abort unreachable @@ -6125,7 +6125,7 @@ if i32.const 280 i32.const 432 - i32.const 374 + i32.const 386 i32.const 63 call $~lib/builtins/abort unreachable @@ -6267,7 +6267,7 @@ if i32.const 280 i32.const 432 - i32.const 486 + i32.const 502 i32.const 63 call $~lib/builtins/abort unreachable @@ -6521,7 +6521,7 @@ if i32.const 280 i32.const 432 - i32.const 710 + i32.const 734 i32.const 63 call $~lib/builtins/abort unreachable @@ -6659,7 +6659,7 @@ if i32.const 280 i32.const 432 - i32.const 822 + i32.const 850 i32.const 63 call $~lib/builtins/abort unreachable @@ -6798,7 +6798,7 @@ if i32.const 280 i32.const 432 - i32.const 934 + i32.const 966 i32.const 63 call $~lib/builtins/abort unreachable @@ -6937,7 +6937,7 @@ if i32.const 280 i32.const 432 - i32.const 1046 + i32.const 1082 i32.const 63 call $~lib/builtins/abort unreachable @@ -8695,7 +8695,7 @@ if i32.const 280 i32.const 432 - i32.const 139 + i32.const 143 i32.const 44 call $~lib/builtins/abort unreachable @@ -9036,7 +9036,7 @@ if i32.const 280 i32.const 432 - i32.const 363 + i32.const 375 i32.const 63 call $~lib/builtins/abort unreachable @@ -9219,7 +9219,7 @@ if i32.const 280 i32.const 432 - i32.const 475 + i32.const 491 i32.const 63 call $~lib/builtins/abort unreachable @@ -9562,7 +9562,7 @@ if i32.const 280 i32.const 432 - i32.const 699 + i32.const 723 i32.const 63 call $~lib/builtins/abort unreachable @@ -9745,7 +9745,7 @@ if i32.const 280 i32.const 432 - i32.const 811 + i32.const 839 i32.const 63 call $~lib/builtins/abort unreachable @@ -9928,7 +9928,7 @@ if i32.const 280 i32.const 432 - i32.const 923 + i32.const 955 i32.const 63 call $~lib/builtins/abort unreachable @@ -10111,7 +10111,7 @@ if i32.const 280 i32.const 432 - i32.const 1035 + i32.const 1071 i32.const 63 call $~lib/builtins/abort unreachable @@ -10359,7 +10359,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10370,298 +10370,406 @@ i32.const 24 i32.shr_s i32.const 2 - i32.eq + i32.gt_s local.set $3 local.get $2 call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#some (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/tlsf/reallocateBlock (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + (local $8 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $1 + i32.load offset=4 + i32.const -268435456 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - local.set $2 local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - i32.const 0 - local.set $5 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $6 + local.get $6 + i32.load + local.set $7 + local.get $7 + i32.const 1 + i32.and + if + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $7 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $5 + local.get $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - if - i32.const 1 - local.set $7 - local.get $3 - call $~lib/rt/pure/__release - local.get $7 - br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $loop|0 - end - unreachable + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return end - i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 196 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - drop local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.eq - local.set $3 local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 197 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/rt/tlsf/allocateBlock + local.set $8 + local.get $8 local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set + i32.load offset=8 + i32.store offset=8 + local.get $8 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy local.get $1 + local.get $4 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set + i32.or + i32.store + local.get $0 local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set + call $~lib/rt/tlsf/insertBlock local.get $1 - i32.const 35 - call $~lib/typedarray/Int8Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne + call $~lib/rt/rtrace/onfree + local.get $8 + ) + (func $~lib/rt/tlsf/__realloc (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT i32.eqz if i32.const 0 - i32.const 376 - i32.const 355 - i32.const 2 + i32.const 128 + i32.const 568 + i32.const 13 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 36 - call $~lib/typedarray/Int8Array#some - local.set $3 - local.get $3 + local.get $0 i32.const 0 i32.ne - i32.eqz + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 376 - i32.const 357 + i32.const 128 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/pure/__release + i32.const 16 + i32.sub local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 198 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add ) - (func $~lib/typedarray/Uint8Array#some (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#filter (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + i32.const 12 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 0 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 i32.const 0 - local.set $5 + i32.shl + i32.add + i32.load8_s + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $loop|0 - local.get $5 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + if local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 i32.const 0 i32.shl i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - if - i32.const 1 - local.set $7 - local.get $3 - call $~lib/rt/pure/__release - local.get $7 - br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $loop|0 + local.get $10 + i32.store8 end - unreachable + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 end - i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 + unreachable end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 200 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $0 - i32.const 255 - i32.and + local.get $8 i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release + i32.shl + local.set $10 + local.get $6 + local.get $10 + call $~lib/rt/tlsf/__realloc + local.set $9 + local.get $5 + local.tee $11 + local.get $9 + local.tee $12 + local.get $11 + i32.load + local.tee $11 + i32.ne + if + local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $12 + i32.store + local.get $5 + local.get $9 + i32.store offset=4 + local.get $5 + local.get $10 + i32.store offset=8 + local.get $5 + local.set $12 local.get $3 + call $~lib/rt/pure/__release + local.get $12 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 201 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> (; 198 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor + i32.const 6 + call $~lib/typedarray/Int8Array#constructor local.tee $0 call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set + i32.const 1 + call $~lib/typedarray/Int8Array#__set local.get $1 i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set + i32.const 2 + call $~lib/typedarray/Int8Array#__set local.get $1 i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set + i32.const 3 + call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 37 - call $~lib/typedarray/Uint8Array#some + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 35 + call $~lib/typedarray/Int8Array#filter local.set $2 local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - i32.ne + i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 355 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 38 - call $~lib/typedarray/Uint8Array#some - local.set $3 - local.get $3 + local.get $2 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 i32.const 0 - i32.ne + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.eq i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 357 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 i32.const 2 call $~lib/builtins/abort unreachable @@ -10670,8 +10778,10 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 199 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10680,45 +10790,2771 @@ i32.const 255 i32.and i32.const 2 - i32.eq + i32.gt_u local.set $3 local.get $2 call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#some (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#filter (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $4 + i32.const 12 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 0 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + if + local.get $6 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 + i32.const 0 + i32.shl + i32.add + local.get $10 + i32.store8 + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 + end + unreachable + end + local.get $8 + i32.const 0 + i32.shl + local.set $10 + local.get $6 + local.get $10 + call $~lib/rt/tlsf/__realloc + local.set $9 + local.get $5 + local.tee $11 + local.get $9 + local.tee $12 + local.get $11 + i32.load + local.tee $11 + i32.ne + if + local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $12 + i32.store + local.get $5 + local.get $9 + i32.store offset=4 + local.get $5 + local.get $10 + i32.store offset=8 + local.get $5 + local.set $12 + local.get $3 + call $~lib/rt/pure/__release + local.get $12 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> (; 201 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 6 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 36 + call $~lib/typedarray/Uint8Array#filter + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/typedarray/Uint8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.gt_u + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8ClampedArray#filter (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $4 + i32.const 12 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 0 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + if + local.get $6 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 + i32.const 0 + i32.shl + i32.add + local.get $10 + i32.store8 + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 + end + unreachable + end + local.get $8 + i32.const 0 + i32.shl + local.set $10 + local.get $6 + local.get $10 + call $~lib/rt/tlsf/__realloc + local.set $9 + local.get $5 + local.tee $11 + local.get $9 + local.tee $12 + local.get $11 + i32.load + local.tee $11 + i32.ne + if + local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $12 + i32.store + local.get $5 + local.get $9 + i32.store offset=4 + local.get $5 + local.get $10 + i32.store offset=8 + local.get $5 + local.set $12 + local.get $3 + call $~lib/rt/pure/__release + local.get $12 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> (; 204 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 37 + call $~lib/typedarray/Uint8ClampedArray#filter + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 205 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 2 + i32.gt_s + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Int16Array#filter (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + i32.const 12 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 1 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + if + local.get $6 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $10 + i32.store16 + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 + end + unreachable + end + local.get $8 + i32.const 1 + i32.shl + local.set $10 + local.get $6 + local.get $10 + call $~lib/rt/tlsf/__realloc + local.set $9 + local.get $5 + local.tee $11 + local.get $9 + local.tee $12 + local.get $11 + i32.load + local.tee $11 + i32.ne + if + local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $12 + i32.store + local.get $5 + local.get $9 + i32.store offset=4 + local.get $5 + local.get $10 + i32.store offset=8 + local.get $5 + local.set $12 + local.get $3 + call $~lib/rt/pure/__release + local.get $12 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (; 207 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 38 + call $~lib/typedarray/Int16Array#filter + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 208 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.gt_u + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Uint16Array#filter (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $4 + i32.const 12 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 1 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + if + local.get $6 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $10 + i32.store16 + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 + end + unreachable + end + local.get $8 + i32.const 1 + i32.shl + local.set $10 + local.get $6 + local.get $10 + call $~lib/rt/tlsf/__realloc + local.set $9 + local.get $5 + local.tee $11 + local.get $9 + local.tee $12 + local.get $11 + i32.load + local.tee $11 + i32.ne + if + local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $12 + i32.store + local.get $5 + local.get $9 + i32.store offset=4 + local.get $5 + local.get $10 + i32.store offset=8 + local.get $5 + local.set $12 + local.get $3 + call $~lib/rt/pure/__release + local.get $12 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> (; 210 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 6 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 39 + call $~lib/typedarray/Uint16Array#filter + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/typedarray/Uint16Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 211 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i32.const 2 + i32.gt_s + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Int32Array#filter (; 212 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + i32.const 12 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + if + local.get $6 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 + end + unreachable + end + local.get $8 + i32.const 2 + i32.shl + local.set $10 + local.get $6 + local.get $10 + call $~lib/rt/tlsf/__realloc + local.set $9 + local.get $5 + local.tee $11 + local.get $9 + local.tee $12 + local.get $11 + i32.load + local.tee $11 + i32.ne + if + local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $12 + i32.store + local.get $5 + local.get $9 + i32.store offset=4 + local.get $5 + local.get $10 + i32.store offset=8 + local.get $5 + local.set $12 + local.get $3 + call $~lib/rt/pure/__release + local.get $12 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (; 213 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 40 + call $~lib/typedarray/Int32Array#filter + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i32.const 2 + i32.gt_u + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Uint32Array#filter (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $4 + i32.const 12 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + if + local.get $6 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 + end + unreachable + end + local.get $8 + i32.const 2 + i32.shl + local.set $10 + local.get $6 + local.get $10 + call $~lib/rt/tlsf/__realloc + local.set $9 + local.get $5 + local.tee $11 + local.get $9 + local.tee $12 + local.get $11 + i32.load + local.tee $11 + i32.ne + if + local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $12 + i32.store + local.get $5 + local.get $9 + i32.store offset=4 + local.get $5 + local.get $10 + i32.store offset=8 + local.get $5 + local.set $12 + local.get $3 + call $~lib/rt/pure/__release + local.get $12 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (; 216 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 6 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 41 + call $~lib/typedarray/Uint32Array#filter + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/typedarray/Uint32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 217 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i64.const 2 + i64.gt_s + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Int64Array#filter (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + i32.const 12 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) + if + local.get $6 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 + i32.const 3 + i32.shl + i32.add + local.get $10 + i64.store + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 + end + unreachable + end + local.get $8 + i32.const 3 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/tlsf/__realloc + local.set $11 + local.get $5 + local.tee $12 + local.get $11 + local.tee $13 + local.get $12 + i32.load + local.tee $12 + i32.ne + if + local.get $13 + call $~lib/rt/pure/__retain + drop + local.get $12 + call $~lib/rt/pure/__release + end + local.get $13 + i32.store + local.get $5 + local.get $11 + i32.store offset=4 + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.set $13 + local.get $3 + call $~lib/rt/pure/__release + local.get $13 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> (; 219 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 42 + call $~lib/typedarray/Int64Array#filter + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 220 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i64.const 2 + i64.gt_u + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Uint64Array#filter (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $4 + i32.const 12 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) + if + local.get $6 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 + i32.const 3 + i32.shl + i32.add + local.get $10 + i64.store + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 + end + unreachable + end + local.get $8 + i32.const 3 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/tlsf/__realloc + local.set $11 + local.get $5 + local.tee $12 + local.get $11 + local.tee $13 + local.get $12 + i32.load + local.tee $12 + i32.ne + if + local.get $13 + call $~lib/rt/pure/__retain + drop + local.get $12 + call $~lib/rt/pure/__release + end + local.get $13 + i32.store + local.get $5 + local.get $11 + i32.store offset=4 + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.set $13 + local.get $3 + call $~lib/rt/pure/__release + local.get $13 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> (; 222 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 43 + call $~lib/typedarray/Uint64Array#filter + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/typedarray/Uint64Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 223 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + f32.const 2 + f32.gt + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Float32Array#filter (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 f32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $4 + i32.const 12 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ifii) + if + local.get $6 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + f32.store + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 + end + unreachable + end + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/tlsf/__realloc + local.set $11 + local.get $5 + local.tee $12 + local.get $11 + local.tee $13 + local.get $12 + i32.load + local.tee $12 + i32.ne + if + local.get $13 + call $~lib/rt/pure/__retain + drop + local.get $12 + call $~lib/rt/pure/__release + end + local.get $13 + i32.store + local.get $5 + local.get $11 + i32.store offset=4 + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.set $13 + local.get $3 + call $~lib/rt/pure/__release + local.get $13 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> (; 225 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 6 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 5 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 44 + call $~lib/typedarray/Float32Array#filter + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/typedarray/Float32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 226 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + f64.const 2 + f64.gt + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Float64Array#filter (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 f64) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $4 + i32.const 12 + i32.const 13 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $loop|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $10 + i32.const 3 + global.set $~lib/argc + local.get $10 + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$idii) + if + local.get $6 + local.get $8 + local.tee $11 + i32.const 1 + i32.add + local.set $8 + local.get $11 + i32.const 3 + i32.shl + i32.add + local.get $10 + f64.store + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $loop|0 + end + unreachable + end + local.get $8 + i32.const 3 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/tlsf/__realloc + local.set $11 + local.get $5 + local.tee $12 + local.get $11 + local.tee $13 + local.get $12 + i32.load + local.tee $12 + i32.ne + if + local.get $13 + call $~lib/rt/pure/__retain + drop + local.get $12 + call $~lib/rt/pure/__release + end + local.get $13 + i32.store + local.get $5 + local.get $11 + i32.store offset=4 + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.set $13 + local.get $3 + call $~lib/rt/pure/__release + local.get $13 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> (; 228 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 6 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 5 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 45 + call $~lib/typedarray/Float64Array#filter + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/typedarray/Float64Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 229 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Int8Array#some (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + if + i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 + br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 232 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 46 + call $~lib/typedarray/Int8Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 382 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 47 + call $~lib/typedarray/Int8Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 384 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 233 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#some (; 234 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + if + i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 + br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 235 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 236 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 48 + call $~lib/typedarray/Uint8Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 382 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 49 + call $~lib/typedarray/Uint8Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 384 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 237 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8ClampedArray#some (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 i32.shl i32.add i32.load8_u @@ -10749,7 +13585,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 204 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10764,7 +13600,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 205 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 240 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10788,7 +13624,7 @@ i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 39 + i32.const 50 call $~lib/typedarray/Uint8ClampedArray#some local.set $2 local.get $2 @@ -10798,13 +13634,13 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 40 + i32.const 51 call $~lib/typedarray/Uint8ClampedArray#some local.set $3 local.get $3 @@ -10815,7 +13651,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -10825,7 +13661,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10842,7 +13678,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#some (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10905,7 +13741,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 208 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10922,7 +13758,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 209 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 244 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10946,7 +13782,7 @@ i32.const 6 call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 41 + i32.const 52 call $~lib/typedarray/Int16Array#some local.set $2 local.get $2 @@ -10956,13 +13792,13 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 42 + i32.const 53 call $~lib/typedarray/Int16Array#some local.set $3 local.get $3 @@ -10973,7 +13809,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -10983,7 +13819,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 210 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10998,7 +13834,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#some (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11061,7 +13897,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 247 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11076,7 +13912,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 213 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 248 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11100,7 +13936,7 @@ i32.const 6 call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 43 + i32.const 54 call $~lib/typedarray/Uint16Array#some local.set $2 local.get $2 @@ -11110,13 +13946,13 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 44 + i32.const 55 call $~lib/typedarray/Uint16Array#some local.set $3 local.get $3 @@ -11127,7 +13963,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -11137,7 +13973,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11150,7 +13986,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#some (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11213,7 +14049,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 216 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11226,7 +14062,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 217 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 252 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11250,7 +14086,7 @@ i32.const 6 call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 45 + i32.const 56 call $~lib/typedarray/Int32Array#some local.set $2 local.get $2 @@ -11260,13 +14096,13 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 46 + i32.const 57 call $~lib/typedarray/Int32Array#some local.set $3 local.get $3 @@ -11277,7 +14113,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -11287,7 +14123,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 218 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11300,7 +14136,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#some (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#some (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11363,7 +14199,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 220 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 255 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11376,7 +14212,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 221 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 256 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11400,7 +14236,7 @@ i32.const 6 call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 47 + i32.const 58 call $~lib/typedarray/Uint32Array#some local.set $2 local.get $2 @@ -11410,13 +14246,13 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 48 + i32.const 59 call $~lib/typedarray/Uint32Array#some local.set $3 local.get $3 @@ -11427,7 +14263,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -11437,7 +14273,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 222 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 257 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11450,7 +14286,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#some (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11513,7 +14349,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 224 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 259 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11526,7 +14362,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 225 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 260 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11550,7 +14386,7 @@ i64.const 6 call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 49 + i32.const 60 call $~lib/typedarray/Int64Array#some local.set $2 local.get $2 @@ -11560,13 +14396,13 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 50 + i32.const 61 call $~lib/typedarray/Int64Array#some local.set $3 local.get $3 @@ -11577,7 +14413,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -11587,7 +14423,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 226 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 261 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11600,7 +14436,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#some (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#some (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11663,7 +14499,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 228 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 263 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11676,7 +14512,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 229 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 264 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11700,7 +14536,7 @@ i64.const 6 call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 51 + i32.const 62 call $~lib/typedarray/Uint64Array#some local.set $2 local.get $2 @@ -11710,13 +14546,13 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 52 + i32.const 63 call $~lib/typedarray/Uint64Array#some local.set $3 local.get $3 @@ -11727,7 +14563,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -11737,7 +14573,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 230 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 265 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11750,7 +14586,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#some (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11813,7 +14649,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 232 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 267 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11826,7 +14662,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 233 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 268 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11850,7 +14686,7 @@ f32.const 6 call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 53 + i32.const 64 call $~lib/typedarray/Float32Array#some local.set $2 local.get $2 @@ -11860,13 +14696,13 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 54 + i32.const 65 call $~lib/typedarray/Float32Array#some local.set $3 local.get $3 @@ -11877,7 +14713,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -11887,7 +14723,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 234 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 269 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11900,7 +14736,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#some (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11963,7 +14799,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 236 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 271 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11976,7 +14812,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 237 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 272 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12000,7 +14836,7 @@ f64.const 6 call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 55 + i32.const 66 call $~lib/typedarray/Float64Array#some local.set $2 local.get $2 @@ -12010,13 +14846,13 @@ if i32.const 0 i32.const 376 - i32.const 355 + i32.const 382 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 56 + i32.const 67 call $~lib/typedarray/Float64Array#some local.set $3 local.get $3 @@ -12027,7 +14863,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -12037,7 +14873,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 273 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12054,7 +14890,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#findIndex (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12117,7 +14953,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 275 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12134,7 +14970,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 241 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 276 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12158,7 +14994,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 57 + i32.const 68 call $~lib/typedarray/Int8Array#findIndex local.set $2 local.get $2 @@ -12168,13 +15004,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 58 + i32.const 69 call $~lib/typedarray/Int8Array#findIndex local.set $3 local.get $3 @@ -12184,7 +15020,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -12194,7 +15030,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 277 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12209,7 +15045,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#findIndex (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12272,7 +15108,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12287,7 +15123,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 245 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 280 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12311,7 +15147,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 59 + i32.const 70 call $~lib/typedarray/Uint8Array#findIndex local.set $2 local.get $2 @@ -12321,13 +15157,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 60 + i32.const 71 call $~lib/typedarray/Uint8Array#findIndex local.set $3 local.get $3 @@ -12337,7 +15173,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -12347,7 +15183,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12362,7 +15198,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12425,7 +15261,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12440,7 +15276,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 249 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 284 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12464,7 +15300,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 61 + i32.const 72 call $~lib/typedarray/Uint8ClampedArray#findIndex local.set $2 local.get $2 @@ -12474,13 +15310,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 62 + i32.const 73 call $~lib/typedarray/Uint8ClampedArray#findIndex local.set $3 local.get $3 @@ -12490,7 +15326,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -12500,7 +15336,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12517,7 +15353,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#findIndex (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12580,7 +15416,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12597,7 +15433,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 253 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 288 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12621,7 +15457,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 63 + i32.const 74 call $~lib/typedarray/Int16Array#findIndex local.set $2 local.get $2 @@ -12631,13 +15467,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 64 + i32.const 75 call $~lib/typedarray/Int16Array#findIndex local.set $3 local.get $3 @@ -12647,7 +15483,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -12657,7 +15493,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 254 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 289 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12672,7 +15508,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#findIndex (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12735,7 +15571,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 256 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12750,7 +15586,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 257 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 292 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12774,7 +15610,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 65 + i32.const 76 call $~lib/typedarray/Uint16Array#findIndex local.set $2 local.get $2 @@ -12784,13 +15620,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 66 + i32.const 77 call $~lib/typedarray/Uint16Array#findIndex local.set $3 local.get $3 @@ -12800,7 +15636,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -12810,7 +15646,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 258 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12823,7 +15659,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#findIndex (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12886,7 +15722,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 260 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 295 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12899,7 +15735,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 261 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 296 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12923,7 +15759,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 67 + i32.const 78 call $~lib/typedarray/Int32Array#findIndex local.set $2 local.get $2 @@ -12933,13 +15769,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 68 + i32.const 79 call $~lib/typedarray/Int32Array#findIndex local.set $3 local.get $3 @@ -12949,7 +15785,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -12959,7 +15795,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 262 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 297 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12972,7 +15808,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#findIndex (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#findIndex (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13035,7 +15871,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 264 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 299 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13048,7 +15884,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 265 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 300 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13072,7 +15908,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 69 + i32.const 80 call $~lib/typedarray/Uint32Array#findIndex local.set $2 local.get $2 @@ -13082,13 +15918,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 70 + i32.const 81 call $~lib/typedarray/Uint32Array#findIndex local.set $3 local.get $3 @@ -13098,7 +15934,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -13108,7 +15944,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 266 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 301 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13121,7 +15957,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#findIndex (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13184,7 +16020,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 268 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 303 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13197,7 +16033,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 269 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 304 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13221,7 +16057,7 @@ i64.const 3 call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 71 + i32.const 82 call $~lib/typedarray/Int64Array#findIndex local.set $2 local.get $2 @@ -13231,13 +16067,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 72 + i32.const 83 call $~lib/typedarray/Int64Array#findIndex local.set $3 local.get $3 @@ -13247,7 +16083,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -13257,7 +16093,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 270 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 305 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13270,7 +16106,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#findIndex (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#findIndex (; 306 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13333,7 +16169,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 272 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 307 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13346,7 +16182,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 273 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 308 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13370,7 +16206,7 @@ i64.const 3 call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 73 + i32.const 84 call $~lib/typedarray/Uint64Array#findIndex local.set $2 local.get $2 @@ -13380,13 +16216,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 74 + i32.const 85 call $~lib/typedarray/Uint64Array#findIndex local.set $3 local.get $3 @@ -13396,7 +16232,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -13406,7 +16242,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 274 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 309 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13419,7 +16255,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#findIndex (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 310 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13482,7 +16318,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 276 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 311 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13495,7 +16331,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 277 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 312 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13519,7 +16355,7 @@ f32.const 3 call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 75 + i32.const 86 call $~lib/typedarray/Float32Array#findIndex local.set $2 local.get $2 @@ -13529,13 +16365,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 76 + i32.const 87 call $~lib/typedarray/Float32Array#findIndex local.set $3 local.get $3 @@ -13545,7 +16381,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -13555,7 +16391,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 278 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 313 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13568,7 +16404,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#findIndex (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 314 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13631,7 +16467,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 280 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 315 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13644,7 +16480,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 281 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 316 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13668,7 +16504,7 @@ f64.const 3 call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 77 + i32.const 88 call $~lib/typedarray/Float64Array#findIndex local.set $2 local.get $2 @@ -13678,13 +16514,13 @@ if i32.const 0 i32.const 376 - i32.const 378 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 78 + i32.const 89 call $~lib/typedarray/Float64Array#findIndex local.set $3 local.get $3 @@ -13694,7 +16530,7 @@ if i32.const 0 i32.const 376 - i32.const 380 + i32.const 407 i32.const 2 call $~lib/builtins/abort unreachable @@ -13704,7 +16540,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 317 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13723,7 +16559,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#every (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 318 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13789,7 +16625,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 319 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13806,7 +16642,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 285 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 320 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13830,7 +16666,7 @@ i32.const 6 call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 79 + i32.const 90 call $~lib/typedarray/Int8Array#every local.set $2 local.get $2 @@ -13840,13 +16676,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 80 + i32.const 91 call $~lib/typedarray/Int8Array#every local.set $3 local.get $3 @@ -13857,7 +16693,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -13867,7 +16703,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 321 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13884,7 +16720,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#every (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 322 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13950,7 +16786,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 323 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13965,7 +16801,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 289 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 324 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13989,7 +16825,7 @@ i32.const 6 call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 81 + i32.const 92 call $~lib/typedarray/Uint8Array#every local.set $2 local.get $2 @@ -13999,13 +16835,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 82 + i32.const 93 call $~lib/typedarray/Uint8Array#every local.set $3 local.get $3 @@ -14016,7 +16852,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -14026,7 +16862,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 325 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14043,7 +16879,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#every (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#every (; 326 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14109,7 +16945,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 327 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14124,7 +16960,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 293 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 328 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14148,7 +16984,7 @@ i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 83 + i32.const 94 call $~lib/typedarray/Uint8ClampedArray#every local.set $2 local.get $2 @@ -14158,13 +16994,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 84 + i32.const 95 call $~lib/typedarray/Uint8ClampedArray#every local.set $3 local.get $3 @@ -14175,7 +17011,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -14185,7 +17021,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 329 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14204,7 +17040,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#every (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 330 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14270,7 +17106,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 331 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14287,7 +17123,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 297 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 332 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14311,7 +17147,7 @@ i32.const 6 call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 85 + i32.const 96 call $~lib/typedarray/Int16Array#every local.set $2 local.get $2 @@ -14321,13 +17157,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 86 + i32.const 97 call $~lib/typedarray/Int16Array#every local.set $3 local.get $3 @@ -14338,7 +17174,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -14348,7 +17184,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 298 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 333 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14365,7 +17201,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#every (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 334 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14431,7 +17267,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 300 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 335 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14446,7 +17282,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 301 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 336 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14470,7 +17306,7 @@ i32.const 6 call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 87 + i32.const 98 call $~lib/typedarray/Uint16Array#every local.set $2 local.get $2 @@ -14480,13 +17316,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 88 + i32.const 99 call $~lib/typedarray/Uint16Array#every local.set $3 local.get $3 @@ -14497,7 +17333,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -14507,7 +17343,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 302 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 337 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14522,7 +17358,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#every (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 338 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14588,7 +17424,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 304 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 339 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14601,7 +17437,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 305 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 340 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14625,7 +17461,7 @@ i32.const 6 call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 89 + i32.const 100 call $~lib/typedarray/Int32Array#every local.set $2 local.get $2 @@ -14635,13 +17471,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 90 + i32.const 101 call $~lib/typedarray/Int32Array#every local.set $3 local.get $3 @@ -14652,7 +17488,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -14662,7 +17498,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 306 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 341 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14677,7 +17513,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#every (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#every (; 342 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14743,7 +17579,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 308 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 343 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14756,7 +17592,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 309 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 344 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14780,7 +17616,7 @@ i32.const 6 call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 91 + i32.const 102 call $~lib/typedarray/Uint32Array#every local.set $2 local.get $2 @@ -14790,13 +17626,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 92 + i32.const 103 call $~lib/typedarray/Uint32Array#every local.set $3 local.get $3 @@ -14807,7 +17643,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -14817,7 +17653,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 310 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 345 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14832,7 +17668,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#every (; 311 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 346 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14898,7 +17734,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 312 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 347 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14911,7 +17747,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 313 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 348 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14935,7 +17771,7 @@ i64.const 6 call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 93 + i32.const 104 call $~lib/typedarray/Int64Array#every local.set $2 local.get $2 @@ -14945,13 +17781,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 94 + i32.const 105 call $~lib/typedarray/Int64Array#every local.set $3 local.get $3 @@ -14962,7 +17798,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -14972,7 +17808,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 314 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 349 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14987,7 +17823,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#every (; 315 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#every (; 350 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15053,7 +17889,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 316 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 351 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15066,7 +17902,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 317 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 352 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15090,7 +17926,7 @@ i64.const 6 call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 95 + i32.const 106 call $~lib/typedarray/Uint64Array#every local.set $2 local.get $2 @@ -15100,13 +17936,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 96 + i32.const 107 call $~lib/typedarray/Uint64Array#every local.set $3 local.get $3 @@ -15117,7 +17953,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -15127,12 +17963,12 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/number/isNaN (; 318 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/isNaN (; 353 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/math/NativeMathf.mod (; 319 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 354 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15379,7 +18215,7 @@ local.get $2 f32.reinterpret_i32 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 320 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 355 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15394,7 +18230,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#every (; 321 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 356 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15460,7 +18296,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 322 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 357 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15473,7 +18309,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 323 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 358 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15497,7 +18333,7 @@ f32.const 6 call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 97 + i32.const 108 call $~lib/typedarray/Float32Array#every local.set $2 local.get $2 @@ -15507,13 +18343,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 98 + i32.const 109 call $~lib/typedarray/Float32Array#every local.set $3 local.get $3 @@ -15524,7 +18360,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -15534,12 +18370,12 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/number/isNaN (; 324 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/isNaN (; 359 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/math/NativeMath.mod (; 325 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 360 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -15788,7 +18624,7 @@ local.get $2 f64.reinterpret_i64 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 326 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 361 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15803,7 +18639,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#every (; 327 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 362 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15869,7 +18705,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 328 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 363 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15882,7 +18718,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 329 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 364 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15906,7 +18742,7 @@ f64.const 6 call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 99 + i32.const 110 call $~lib/typedarray/Float64Array#every local.set $2 local.get $2 @@ -15916,13 +18752,13 @@ if i32.const 0 i32.const 376 - i32.const 401 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 100 + i32.const 111 call $~lib/typedarray/Float64Array#every local.set $3 local.get $3 @@ -15933,7 +18769,7 @@ if i32.const 0 i32.const 376 - i32.const 403 + i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable @@ -15943,7 +18779,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 330 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 365 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15967,7 +18803,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -15979,7 +18815,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -15991,7 +18827,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -16003,7 +18839,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#forEach (; 331 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#forEach (; 366 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16052,7 +18888,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 332 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 367 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16096,7 +18932,7 @@ i32.shr_s call $~lib/typedarray/Int8Array#__set local.get $1 - i32.const 101 + i32.const 112 call $~lib/typedarray/Int8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -16105,7 +18941,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -16115,7 +18951,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 333 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 368 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16135,7 +18971,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -16147,7 +18983,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -16159,7 +18995,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -16171,7 +19007,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#forEach (; 334 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 369 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16220,7 +19056,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 335 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 370 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16258,7 +19094,7 @@ i32.and call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 102 + i32.const 113 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -16267,7 +19103,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -16277,7 +19113,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 336 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 371 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16297,7 +19133,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -16309,7 +19145,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -16321,7 +19157,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -16333,7 +19169,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (; 337 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#forEach (; 372 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16382,7 +19218,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 338 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 373 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16420,7 +19256,7 @@ i32.and call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 - i32.const 103 + i32.const 114 call $~lib/typedarray/Uint8ClampedArray#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -16429,7 +19265,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -16439,7 +19275,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 339 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 374 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16463,7 +19299,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -16475,7 +19311,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -16487,7 +19323,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -16499,7 +19335,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#forEach (; 340 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#forEach (; 375 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16548,7 +19384,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 341 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 376 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16592,7 +19428,7 @@ i32.shr_s call $~lib/typedarray/Int16Array#__set local.get $1 - i32.const 104 + i32.const 115 call $~lib/typedarray/Int16Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -16601,7 +19437,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -16611,7 +19447,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 342 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 377 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16631,7 +19467,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -16643,7 +19479,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -16655,7 +19491,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -16667,7 +19503,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#forEach (; 343 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 378 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16716,7 +19552,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 344 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 379 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16754,7 +19590,7 @@ i32.and call $~lib/typedarray/Uint16Array#__set local.get $1 - i32.const 105 + i32.const 116 call $~lib/typedarray/Uint16Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -16763,7 +19599,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -16773,7 +19609,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 345 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 380 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16789,7 +19625,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -16801,7 +19637,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -16813,7 +19649,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -16825,7 +19661,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#forEach (; 346 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 381 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16874,7 +19710,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 347 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 382 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16906,7 +19742,7 @@ call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set local.get $1 - i32.const 106 + i32.const 117 call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -16915,7 +19751,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -16925,7 +19761,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 348 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 383 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16941,7 +19777,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -16953,7 +19789,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -16965,7 +19801,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -16977,7 +19813,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#forEach (; 349 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint32Array#forEach (; 384 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17026,7 +19862,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 350 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 385 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -17058,7 +19894,7 @@ call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set local.get $1 - i32.const 107 + i32.const 118 call $~lib/typedarray/Uint32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -17067,7 +19903,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -17077,7 +19913,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 351 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 386 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17094,7 +19930,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -17106,7 +19942,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -17118,7 +19954,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -17130,7 +19966,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#forEach (; 352 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 387 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17179,7 +20015,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 353 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 388 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -17214,7 +20050,7 @@ i64.extend_i32_s call $~lib/typedarray/Int64Array#__set local.get $1 - i32.const 108 + i32.const 119 call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -17223,7 +20059,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -17233,7 +20069,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 354 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 389 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17250,7 +20086,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -17262,7 +20098,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -17274,7 +20110,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -17286,7 +20122,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#forEach (; 355 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint64Array#forEach (; 390 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17335,7 +20171,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 356 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 391 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -17370,7 +20206,7 @@ i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set local.get $1 - i32.const 109 + i32.const 120 call $~lib/typedarray/Uint64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -17379,7 +20215,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -17389,7 +20225,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 357 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 392 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17406,7 +20242,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -17418,7 +20254,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -17430,7 +20266,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -17442,7 +20278,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#forEach (; 358 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#forEach (; 393 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17491,7 +20327,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 359 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 394 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -17526,7 +20362,7 @@ f32.convert_i32_s call $~lib/typedarray/Float32Array#__set local.get $1 - i32.const 110 + i32.const 121 call $~lib/typedarray/Float32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -17535,7 +20371,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -17545,7 +20381,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 360 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 395 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17562,7 +20398,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 457 i32.const 4 call $~lib/builtins/abort unreachable @@ -17574,7 +20410,7 @@ if i32.const 0 i32.const 376 - i32.const 431 + i32.const 458 i32.const 4 call $~lib/builtins/abort unreachable @@ -17586,7 +20422,7 @@ if i32.const 0 i32.const 376 - i32.const 432 + i32.const 459 i32.const 4 call $~lib/builtins/abort unreachable @@ -17598,7 +20434,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#forEach (; 361 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#forEach (; 396 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17647,7 +20483,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 362 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 397 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -17682,7 +20518,7 @@ f64.convert_i32_s call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 111 + i32.const 122 call $~lib/typedarray/Float64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -17691,7 +20527,7 @@ if i32.const 0 i32.const 376 - i32.const 435 + i32.const 462 i32.const 2 call $~lib/builtins/abort unreachable @@ -17701,7 +20537,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reverse (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 398 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17765,7 +20601,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 364 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 399 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17860,7 +20696,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -17889,7 +20725,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -17903,7 +20739,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -17917,7 +20753,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -17931,7 +20767,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -17951,7 +20787,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reverse (; 365 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 400 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18015,7 +20851,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8Array#subarray (; 366 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 401 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -18136,7 +20972,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 367 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 402 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18225,7 +21061,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -18254,7 +21090,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -18268,7 +21104,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -18282,7 +21118,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -18296,7 +21132,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -18316,7 +21152,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (; 368 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reverse (; 403 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18380,7 +21216,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 369 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 404 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -18501,7 +21337,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 370 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 405 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18590,7 +21426,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -18619,7 +21455,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -18633,7 +21469,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -18647,7 +21483,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -18661,7 +21497,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -18681,7 +21517,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reverse (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 406 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18745,7 +21581,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int16Array#subarray (; 372 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 407 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -18866,7 +21702,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 373 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 408 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18961,7 +21797,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -18990,7 +21826,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -19004,7 +21840,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -19018,7 +21854,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -19032,7 +21868,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -19052,7 +21888,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#reverse (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 409 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -19116,7 +21952,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint16Array#subarray (; 375 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 410 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -19237,7 +22073,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 376 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 411 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19326,7 +22162,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -19355,7 +22191,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -19369,7 +22205,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -19383,7 +22219,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -19397,7 +22233,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -19417,7 +22253,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reverse (; 377 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 412 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -19481,7 +22317,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 378 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 413 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19564,7 +22400,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -19593,7 +22429,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -19607,7 +22443,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -19621,7 +22457,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -19635,7 +22471,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -19655,7 +22491,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#reverse (; 379 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reverse (; 414 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -19719,7 +22555,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint32Array#subarray (; 380 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 415 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -19840,7 +22676,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 381 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 416 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19923,7 +22759,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -19952,7 +22788,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -19966,7 +22802,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -19980,7 +22816,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -19994,7 +22830,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -20014,7 +22850,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reverse (; 382 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 417 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -20078,7 +22914,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int64Array#subarray (; 383 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 418 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -20199,7 +23035,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 384 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 419 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20285,7 +23121,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -20314,7 +23150,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -20328,7 +23164,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -20342,7 +23178,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -20356,7 +23192,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -20376,7 +23212,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#reverse (; 385 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#reverse (; 420 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -20440,7 +23276,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint64Array#subarray (; 386 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 421 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -20561,7 +23397,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 387 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 422 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20647,7 +23483,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -20676,7 +23512,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -20690,7 +23526,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -20704,7 +23540,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -20718,7 +23554,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -20738,7 +23574,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reverse (; 388 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 423 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -20802,7 +23638,7 @@ end local.get $1 ) - (func $~lib/typedarray/Float32Array#subarray (; 389 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 424 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -20923,7 +23759,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 390 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 425 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21009,7 +23845,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -21038,7 +23874,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -21052,7 +23888,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -21066,7 +23902,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -21080,7 +23916,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -21100,7 +23936,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reverse (; 391 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 426 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -21164,7 +24000,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 392 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 427 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21250,7 +24086,7 @@ if i32.const 0 i32.const 376 - i32.const 464 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -21279,7 +24115,7 @@ if i32.const 0 i32.const 376 - i32.const 469 + i32.const 496 i32.const 2 call $~lib/builtins/abort unreachable @@ -21293,7 +24129,7 @@ if i32.const 0 i32.const 376 - i32.const 470 + i32.const 497 i32.const 2 call $~lib/builtins/abort unreachable @@ -21307,7 +24143,7 @@ if i32.const 0 i32.const 376 - i32.const 471 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -21321,7 +24157,7 @@ if i32.const 0 i32.const 376 - i32.const 472 + i32.const 499 i32.const 2 call $~lib/builtins/abort unreachable @@ -21341,7 +24177,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#indexOf (; 393 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#indexOf (; 428 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -21441,7 +24277,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int8Array#lastIndexOf (; 394 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf (; 429 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -21537,7 +24373,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 395 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 430 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -21557,7 +24393,7 @@ local.get $2 call $~lib/typedarray/Int8Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 396 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 431 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21613,7 +24449,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -21628,7 +24464,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -21643,7 +24479,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -21658,7 +24494,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -21673,7 +24509,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -21688,7 +24524,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -21703,7 +24539,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -21718,7 +24554,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -21733,7 +24569,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -21750,7 +24586,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -21767,7 +24603,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -21784,7 +24620,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -21801,7 +24637,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -21816,7 +24652,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -21831,7 +24667,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -21846,7 +24682,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -21861,7 +24697,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -21876,7 +24712,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -21891,7 +24727,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -21911,7 +24747,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -21926,7 +24762,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -21941,7 +24777,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -21956,7 +24792,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -21971,7 +24807,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -21986,7 +24822,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -22001,7 +24837,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -22016,7 +24852,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -22030,7 +24866,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#indexOf (; 397 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#indexOf (; 432 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -22128,7 +24964,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8Array#lastIndexOf (; 398 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#lastIndexOf (; 433 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -22222,7 +25058,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8Array#lastIndexOf|trampoline (; 399 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#lastIndexOf|trampoline (; 434 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -22242,7 +25078,7 @@ local.get $2 call $~lib/typedarray/Uint8Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 400 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 435 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22296,7 +25132,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -22311,7 +25147,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -22326,7 +25162,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -22341,7 +25177,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -22356,7 +25192,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -22371,7 +25207,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -22386,7 +25222,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -22401,7 +25237,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -22416,7 +25252,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -22433,7 +25269,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -22450,7 +25286,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -22467,7 +25303,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -22484,7 +25320,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -22499,7 +25335,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -22514,7 +25350,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -22529,7 +25365,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -22544,7 +25380,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -22559,7 +25395,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -22574,7 +25410,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -22594,7 +25430,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -22609,7 +25445,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -22624,7 +25460,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -22639,7 +25475,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -22654,7 +25490,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -22669,7 +25505,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -22684,7 +25520,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -22699,7 +25535,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -22713,7 +25549,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#indexOf (; 401 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#indexOf (; 436 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -22811,7 +25647,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf (; 402 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf (; 437 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -22905,7 +25741,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf|trampoline (; 403 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf|trampoline (; 438 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -22925,7 +25761,7 @@ local.get $2 call $~lib/typedarray/Uint8ClampedArray#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 404 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 439 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22979,7 +25815,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -22994,7 +25830,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -23009,7 +25845,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -23024,7 +25860,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -23039,7 +25875,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -23054,7 +25890,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -23069,7 +25905,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -23084,7 +25920,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -23099,7 +25935,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -23116,7 +25952,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -23133,7 +25969,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -23150,7 +25986,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -23167,7 +26003,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -23182,7 +26018,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -23197,7 +26033,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -23212,7 +26048,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -23227,7 +26063,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -23242,7 +26078,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -23257,7 +26093,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -23277,7 +26113,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -23292,7 +26128,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -23307,7 +26143,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -23322,7 +26158,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -23337,7 +26173,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -23352,7 +26188,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -23367,7 +26203,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -23382,7 +26218,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -23396,7 +26232,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#indexOf (; 405 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#indexOf (; 440 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -23496,7 +26332,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int16Array#lastIndexOf (; 406 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf (; 441 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -23592,7 +26428,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 407 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 442 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -23612,7 +26448,7 @@ local.get $2 call $~lib/typedarray/Int16Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 408 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 443 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23668,7 +26504,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -23683,7 +26519,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -23698,7 +26534,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -23713,7 +26549,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -23728,7 +26564,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -23743,7 +26579,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -23758,7 +26594,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -23773,7 +26609,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -23788,7 +26624,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -23805,7 +26641,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -23822,7 +26658,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -23839,7 +26675,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -23856,7 +26692,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -23871,7 +26707,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -23886,7 +26722,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -23901,7 +26737,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -23916,7 +26752,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -23931,7 +26767,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -23946,7 +26782,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -23966,7 +26802,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -23981,7 +26817,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -23996,7 +26832,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -24011,7 +26847,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -24026,7 +26862,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -24041,7 +26877,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -24056,7 +26892,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -24071,7 +26907,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -24085,7 +26921,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#indexOf (; 409 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#indexOf (; 444 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24183,7 +27019,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint16Array#lastIndexOf (; 410 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#lastIndexOf (; 445 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24277,7 +27113,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint16Array#lastIndexOf|trampoline (; 411 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#lastIndexOf|trampoline (; 446 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -24297,7 +27133,7 @@ local.get $2 call $~lib/typedarray/Uint16Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 412 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 447 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24351,7 +27187,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -24366,7 +27202,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -24381,7 +27217,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -24396,7 +27232,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -24411,7 +27247,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -24426,7 +27262,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -24441,7 +27277,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -24456,7 +27292,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -24471,7 +27307,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -24488,7 +27324,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -24505,7 +27341,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -24522,7 +27358,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -24539,7 +27375,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -24554,7 +27390,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -24569,7 +27405,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -24584,7 +27420,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -24599,7 +27435,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -24614,7 +27450,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -24629,7 +27465,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -24649,7 +27485,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -24664,7 +27500,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -24679,7 +27515,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -24694,7 +27530,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -24709,7 +27545,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -24724,7 +27560,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -24739,7 +27575,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -24754,7 +27590,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -24768,7 +27604,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#indexOf (; 413 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#indexOf (; 448 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24864,7 +27700,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int32Array#lastIndexOf (; 414 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf (; 449 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24956,7 +27792,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 415 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 450 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -24976,7 +27812,7 @@ local.get $2 call $~lib/typedarray/Int32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 416 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 451 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25028,7 +27864,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -25043,7 +27879,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -25058,7 +27894,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -25073,7 +27909,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -25088,7 +27924,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -25103,7 +27939,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -25118,7 +27954,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -25133,7 +27969,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -25148,7 +27984,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -25165,7 +28001,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -25182,7 +28018,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -25199,7 +28035,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -25216,7 +28052,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -25231,7 +28067,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -25246,7 +28082,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -25261,7 +28097,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -25276,7 +28112,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -25291,7 +28127,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -25306,7 +28142,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -25326,7 +28162,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -25341,7 +28177,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -25356,7 +28192,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -25371,7 +28207,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -25386,7 +28222,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -25401,7 +28237,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -25416,7 +28252,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -25431,7 +28267,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -25445,7 +28281,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#indexOf (; 417 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#indexOf (; 452 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -25541,7 +28377,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint32Array#lastIndexOf (; 418 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#lastIndexOf (; 453 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -25633,7 +28469,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint32Array#lastIndexOf|trampoline (; 419 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#lastIndexOf|trampoline (; 454 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -25653,7 +28489,7 @@ local.get $2 call $~lib/typedarray/Uint32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 420 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 455 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25705,7 +28541,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -25720,7 +28556,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -25735,7 +28571,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -25750,7 +28586,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -25765,7 +28601,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -25780,7 +28616,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -25795,7 +28631,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -25810,7 +28646,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -25825,7 +28661,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -25842,7 +28678,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -25859,7 +28695,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -25876,7 +28712,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -25893,7 +28729,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -25908,7 +28744,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -25923,7 +28759,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -25938,7 +28774,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -25953,7 +28789,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -25968,7 +28804,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -25983,7 +28819,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -26003,7 +28839,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -26018,7 +28854,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -26033,7 +28869,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -26048,7 +28884,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -26063,7 +28899,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -26078,7 +28914,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -26093,7 +28929,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -26108,7 +28944,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -26122,7 +28958,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#indexOf (; 421 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#indexOf (; 456 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -26218,7 +29054,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int64Array#lastIndexOf (; 422 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf (; 457 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -26310,7 +29146,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 423 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 458 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -26330,7 +29166,7 @@ local.get $2 call $~lib/typedarray/Int64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 424 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 459 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -26383,7 +29219,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -26398,7 +29234,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -26413,7 +29249,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -26428,7 +29264,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -26443,7 +29279,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -26458,7 +29294,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -26473,7 +29309,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -26488,7 +29324,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -26503,7 +29339,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -26520,7 +29356,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -26537,7 +29373,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -26554,7 +29390,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -26571,7 +29407,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -26586,7 +29422,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -26601,7 +29437,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -26616,7 +29452,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -26631,7 +29467,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -26646,7 +29482,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -26661,7 +29497,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -26681,7 +29517,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -26696,7 +29532,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -26711,7 +29547,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -26726,7 +29562,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -26741,7 +29577,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -26756,7 +29592,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -26771,7 +29607,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -26786,7 +29622,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -26800,7 +29636,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#indexOf (; 425 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#indexOf (; 460 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -26896,7 +29732,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint64Array#lastIndexOf (; 426 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#lastIndexOf (; 461 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -26988,7 +29824,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint64Array#lastIndexOf|trampoline (; 427 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#lastIndexOf|trampoline (; 462 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -27008,7 +29844,7 @@ local.get $2 call $~lib/typedarray/Uint64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 428 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 463 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -27061,7 +29897,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -27076,7 +29912,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -27091,7 +29927,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -27106,7 +29942,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -27121,7 +29957,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -27136,7 +29972,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -27151,7 +29987,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -27166,7 +30002,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -27181,7 +30017,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -27198,7 +30034,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -27215,7 +30051,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -27232,7 +30068,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -27249,7 +30085,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -27264,7 +30100,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -27279,7 +30115,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -27294,7 +30130,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -27309,7 +30145,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -27324,7 +30160,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -27339,7 +30175,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -27359,7 +30195,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -27374,7 +30210,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -27389,7 +30225,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -27404,7 +30240,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -27419,7 +30255,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -27434,7 +30270,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -27449,7 +30285,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -27464,7 +30300,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -27478,7 +30314,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#indexOf (; 429 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#indexOf (; 464 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 f32) (local $5 i32) @@ -27574,7 +30410,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float32Array#lastIndexOf (; 430 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf (; 465 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 f32) (local $5 i32) @@ -27666,7 +30502,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 431 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 466 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -27686,7 +30522,7 @@ local.get $2 call $~lib/typedarray/Float32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 432 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 467 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -27739,7 +30575,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -27754,7 +30590,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -27769,7 +30605,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -27784,7 +30620,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -27799,7 +30635,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -27814,7 +30650,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -27829,7 +30665,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -27844,7 +30680,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -27859,7 +30695,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -27876,7 +30712,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -27893,7 +30729,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -27910,7 +30746,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -27927,7 +30763,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -27942,7 +30778,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -27957,7 +30793,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -27972,7 +30808,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -27987,7 +30823,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -28002,7 +30838,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -28017,7 +30853,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -28037,7 +30873,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -28052,7 +30888,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -28067,7 +30903,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -28082,7 +30918,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -28097,7 +30933,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -28112,7 +30948,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -28127,7 +30963,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -28142,7 +30978,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -28156,7 +30992,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#indexOf (; 433 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#indexOf (; 468 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -28252,7 +31088,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float64Array#lastIndexOf (; 434 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf (; 469 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -28344,7 +31180,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 435 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 470 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -28364,7 +31200,7 @@ local.get $2 call $~lib/typedarray/Float64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 436 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 471 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -28417,7 +31253,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 524 i32.const 2 call $~lib/builtins/abort unreachable @@ -28432,7 +31268,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -28447,7 +31283,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -28462,7 +31298,7 @@ if i32.const 0 i32.const 376 - i32.const 500 + i32.const 527 i32.const 2 call $~lib/builtins/abort unreachable @@ -28477,7 +31313,7 @@ if i32.const 0 i32.const 376 - i32.const 501 + i32.const 528 i32.const 2 call $~lib/builtins/abort unreachable @@ -28492,7 +31328,7 @@ if i32.const 0 i32.const 376 - i32.const 502 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -28507,7 +31343,7 @@ if i32.const 0 i32.const 376 - i32.const 503 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -28522,7 +31358,7 @@ if i32.const 0 i32.const 376 - i32.const 504 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -28537,7 +31373,7 @@ if i32.const 0 i32.const 376 - i32.const 505 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -28554,7 +31390,7 @@ if i32.const 0 i32.const 376 - i32.const 507 + i32.const 534 i32.const 2 call $~lib/builtins/abort unreachable @@ -28571,7 +31407,7 @@ if i32.const 0 i32.const 376 - i32.const 508 + i32.const 535 i32.const 2 call $~lib/builtins/abort unreachable @@ -28588,7 +31424,7 @@ if i32.const 0 i32.const 376 - i32.const 509 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -28605,7 +31441,7 @@ if i32.const 0 i32.const 376 - i32.const 510 + i32.const 537 i32.const 2 call $~lib/builtins/abort unreachable @@ -28620,7 +31456,7 @@ if i32.const 0 i32.const 376 - i32.const 511 + i32.const 538 i32.const 2 call $~lib/builtins/abort unreachable @@ -28635,7 +31471,7 @@ if i32.const 0 i32.const 376 - i32.const 512 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -28650,7 +31486,7 @@ if i32.const 0 i32.const 376 - i32.const 513 + i32.const 540 i32.const 2 call $~lib/builtins/abort unreachable @@ -28665,7 +31501,7 @@ if i32.const 0 i32.const 376 - i32.const 514 + i32.const 541 i32.const 2 call $~lib/builtins/abort unreachable @@ -28680,7 +31516,7 @@ if i32.const 0 i32.const 376 - i32.const 515 + i32.const 542 i32.const 2 call $~lib/builtins/abort unreachable @@ -28695,7 +31531,7 @@ if i32.const 0 i32.const 376 - i32.const 516 + i32.const 543 i32.const 2 call $~lib/builtins/abort unreachable @@ -28715,7 +31551,7 @@ if i32.const 0 i32.const 376 - i32.const 520 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -28730,7 +31566,7 @@ if i32.const 0 i32.const 376 - i32.const 521 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -28745,7 +31581,7 @@ if i32.const 0 i32.const 376 - i32.const 522 + i32.const 549 i32.const 2 call $~lib/builtins/abort unreachable @@ -28760,7 +31596,7 @@ if i32.const 0 i32.const 376 - i32.const 523 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -28775,7 +31611,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 551 i32.const 2 call $~lib/builtins/abort unreachable @@ -28790,7 +31626,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 552 i32.const 2 call $~lib/builtins/abort unreachable @@ -28805,7 +31641,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 553 i32.const 2 call $~lib/builtins/abort unreachable @@ -28820,7 +31656,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 554 i32.const 2 call $~lib/builtins/abort unreachable @@ -28834,18 +31670,18 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#get:buffer (; 437 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:buffer (; 472 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 438 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 473 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 439 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 474 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -28928,7 +31764,7 @@ local.get $7 call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int8Array.wrap (; 440 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array.wrap (; 475 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -28958,7 +31794,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -28980,7 +31816,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -28994,7 +31830,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -29016,7 +31852,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -29061,7 +31897,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int8Array.wrap|trampoline (; 441 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array.wrap|trampoline (; 476 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -29084,7 +31920,7 @@ local.get $2 call $~lib/typedarray/Int8Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 442 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 477 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -29177,7 +32013,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -29203,12 +32039,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#get:buffer (; 443 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:buffer (; 478 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint8Array.wrap (; 444 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap (; 479 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -29238,7 +32074,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -29260,7 +32096,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -29274,7 +32110,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -29296,7 +32132,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -29341,7 +32177,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint8Array.wrap|trampoline (; 445 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap|trampoline (; 480 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -29364,7 +32200,7 @@ local.get $2 call $~lib/typedarray/Uint8Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 446 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 481 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -29455,7 +32291,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -29481,12 +32317,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#get:buffer (; 447 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#get:buffer (; 482 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint8ClampedArray.wrap (; 448 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray.wrap (; 483 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -29516,7 +32352,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -29538,7 +32374,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -29552,7 +32388,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -29574,7 +32410,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -29619,7 +32455,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint8ClampedArray.wrap|trampoline (; 449 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray.wrap|trampoline (; 484 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -29642,7 +32478,7 @@ local.get $2 call $~lib/typedarray/Uint8ClampedArray.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 450 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 485 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -29733,7 +32569,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -29759,12 +32595,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#get:buffer (; 451 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#get:buffer (; 486 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int16Array.wrap (; 452 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array.wrap (; 487 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -29794,7 +32630,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -29816,7 +32652,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -29830,7 +32666,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -29852,7 +32688,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -29897,7 +32733,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int16Array.wrap|trampoline (; 453 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array.wrap|trampoline (; 488 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -29920,7 +32756,7 @@ local.get $2 call $~lib/typedarray/Int16Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 454 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 489 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -30013,7 +32849,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -30039,12 +32875,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#get:buffer (; 455 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#get:buffer (; 490 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint16Array.wrap (; 456 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array.wrap (; 491 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -30074,7 +32910,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -30096,7 +32932,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -30110,7 +32946,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -30132,7 +32968,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -30177,7 +33013,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint16Array.wrap|trampoline (; 457 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array.wrap|trampoline (; 492 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -30200,7 +33036,7 @@ local.get $2 call $~lib/typedarray/Uint16Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 458 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 493 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -30291,7 +33127,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -30317,12 +33153,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#get:buffer (; 459 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#get:buffer (; 494 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int32Array.wrap (; 460 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array.wrap (; 495 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -30352,7 +33188,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -30374,7 +33210,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -30388,7 +33224,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -30410,7 +33246,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -30455,7 +33291,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int32Array.wrap|trampoline (; 461 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array.wrap|trampoline (; 496 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -30478,7 +33314,7 @@ local.get $2 call $~lib/typedarray/Int32Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 462 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 497 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -30567,7 +33403,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -30593,12 +33429,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#get:buffer (; 463 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#get:buffer (; 498 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint32Array.wrap (; 464 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array.wrap (; 499 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -30628,7 +33464,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -30650,7 +33486,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -30664,7 +33500,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -30686,7 +33522,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -30731,7 +33567,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint32Array.wrap|trampoline (; 465 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array.wrap|trampoline (; 500 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -30754,7 +33590,7 @@ local.get $2 call $~lib/typedarray/Uint32Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 466 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 501 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -30843,7 +33679,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -30869,12 +33705,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#get:buffer (; 467 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#get:buffer (; 502 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int64Array.wrap (; 468 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array.wrap (; 503 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -30904,7 +33740,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -30926,7 +33762,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -30940,7 +33776,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -30962,7 +33798,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -31007,7 +33843,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int64Array.wrap|trampoline (; 469 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array.wrap|trampoline (; 504 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -31030,7 +33866,7 @@ local.get $2 call $~lib/typedarray/Int64Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 470 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 505 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -31120,7 +33956,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -31146,12 +33982,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#get:buffer (; 471 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#get:buffer (; 506 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint64Array.wrap (; 472 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array.wrap (; 507 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -31181,7 +34017,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -31203,7 +34039,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -31217,7 +34053,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -31239,7 +34075,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -31284,7 +34120,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint64Array.wrap|trampoline (; 473 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array.wrap|trampoline (; 508 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -31307,7 +34143,7 @@ local.get $2 call $~lib/typedarray/Uint64Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 474 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 509 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -31397,7 +34233,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -31423,12 +34259,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#get:buffer (; 475 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#get:buffer (; 510 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Float32Array.wrap (; 476 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array.wrap (; 511 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -31458,7 +34294,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -31480,7 +34316,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -31494,7 +34330,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -31516,7 +34352,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -31561,7 +34397,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Float32Array.wrap|trampoline (; 477 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array.wrap|trampoline (; 512 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -31584,7 +34420,7 @@ local.get $2 call $~lib/typedarray/Float32Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 478 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 513 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -31674,7 +34510,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -31700,12 +34536,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#get:buffer (; 479 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#get:buffer (; 514 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Float64Array.wrap (; 480 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array.wrap (; 515 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -31735,7 +34571,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1487 + i32.const 1560 i32.const 4 call $~lib/builtins/abort unreachable @@ -31757,7 +34593,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1494 + i32.const 1567 i32.const 8 call $~lib/builtins/abort unreachable @@ -31771,7 +34607,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1499 + i32.const 1572 i32.const 6 call $~lib/builtins/abort unreachable @@ -31793,7 +34629,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1505 + i32.const 1578 i32.const 4 call $~lib/builtins/abort unreachable @@ -31838,7 +34674,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Float64Array.wrap|trampoline (; 481 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array.wrap|trampoline (; 516 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -31861,7 +34697,7 @@ local.get $2 call $~lib/typedarray/Float64Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 482 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 517 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -31951,7 +34787,7 @@ if i32.const 0 i32.const 376 - i32.const 577 + i32.const 604 i32.const 4 call $~lib/builtins/abort unreachable @@ -31977,7 +34813,7 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $start:std/typedarray (; 483 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 518 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -33352,6 +36188,17 @@ call $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> call $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> call $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> call $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> @@ -33430,7 +36277,7 @@ call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> ) - (func $start (; 484 ;) (type $FUNCSIG$v) + (func $start (; 519 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -33440,13 +36287,13 @@ end call $start:std/typedarray ) - (func $~lib/array/Array#__visit_impl (; 485 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 520 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 486 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 521 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/rt/pure/markGray (; 487 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 522 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -33473,7 +36320,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 488 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 523 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -33490,7 +36337,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 489 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 524 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -33527,7 +36374,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 490 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 525 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -33565,7 +36412,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__visit (; 491 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 526 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -33695,7 +36542,7 @@ end end ) - (func $~lib/rt/__visit_members (; 492 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 527 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break block $switch$1$default @@ -33735,6 +36582,6 @@ end return ) - (func $null (; 493 ;) (type $FUNCSIG$v) + (func $null (; 528 ;) (type $FUNCSIG$v) ) ) From 550446af6acd99015ef2898ed27d2a62d3c8b40e Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Sat, 7 Sep 2019 10:52:49 -0400 Subject: [PATCH 16/24] First commit --- bindings/assembly/nearEntry.ts | 634 +- bindings/dist/transformerBundle.js | 9708 +++- bindings/src/index.ts | 46 +- bindings/src/preamble.ts | 2 +- tests/near-bindgen/assembly/test.ts | 6 +- tests/near-bindgen/out/assembly/hello/main.ts | 602 +- .../near-bindgen/out/assembly/hello/model.ts | 72 +- tests/near-bindgen/out/assembly/main.ts | 2 +- tests/near-bindgen/out/assembly/model.ts | 145 +- tests/near-bindgen/out/assembly/test.ts | 184 +- tests/near-bindgen/out/hello.wat | 37421 ++++---------- tests/near-bindgen/out/test.wat | 41642 +++++----------- 12 files changed, 31320 insertions(+), 59144 deletions(-) diff --git a/bindings/assembly/nearEntry.ts b/bindings/assembly/nearEntry.ts index 3588c22a6f..e533308579 100644 --- a/bindings/assembly/nearEntry.ts +++ b/bindings/assembly/nearEntry.ts @@ -1,7 +1,8 @@ import { storage, near, base64, base58, logging } from 'near-runtime-ts'; -import { JSONEncoder } from "assemblyscript-json"; -import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; +//@ts-ignore +import { Buffer } from "assemblyscript-json/util"; +import { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; import { u128 } from "bignum"; // Runtime functions // tslint:disable: no-unsafe-any @@ -31,6 +32,189 @@ declare function value_return(value_len: Usize, value_ptr: Usize): void; @external("env", "panic") declare function panic(): void; + + +/// + +abstract class Value { + static String(str: string): Value { + return new Str(str) + } + static Number(num: i64): Value { + return new Num(num) + } + static Bool(b: bool): Value { + return new Bools(b) + } + static Null(): Value { + return new Null(); + } + static Array(): Value { + return new Arr(); + } + static Object(): Value { + return new Obj(); + } +} +@global +class Str extends Value { + constructor(public _str: string) { + super(); + } +} +@global +class Num extends Value { + constructor(public _num: i64) { + super(); + } +} +@global +class Null extends Value { + constructor() { + super(); + } +} + +@global class Bools extends Value { + constructor(public _bool: bool) { + super(); + } +} + +@global +class Arr extends Value { + _arr: Array; + constructor() { + super(); + this._arr = new Array(); + } + + push(obj: Value): void { + this._arr.push(obj) + } +} + +@global +class Obj extends Value { + _obj: Map; + keys: Array; + + constructor() { + super(); + this._obj = new Map(); + this.keys = new Array(); + } + + set(key: string, value: Value): void { + if (!this._obj.has(key)) { + this.keys.push(key); + } + this._obj.set(key, value); + } + + get(key: string): Value | null { + if (!this._obj.has(key)) { + return null; + } + return this._obj.get(key) + } +} + +class Handler extends ThrowingJSONHandler { + stack: Value[]; + constructor() { + super(); + this.stack = new Array(); + } + + reset(): void { + while (this.stack.length > 0){ + this.stack.pop(); + } + } + + get peek(): Value { + return this.stack[this.stack.length - 1]; + } + + setString(name: string, value: string): void { + let obj: Value = Value.String(value); + this.addValue(name, obj); + } + + setBoolean(name: string, value: bool): void { + let obj = Value.Bool(value); + this.addValue(name, obj); + } + + setNull(name: string): void { + let obj = Value.Null(); + this.addValue(name, obj); + } + + setInteger(name: string, value: i64): void { + let obj = Value.Number(value); + this.addValue(name, obj); + } + + pushArray(name: string): bool { + let obj: Value = Value.Array(); + this.addValue(name, obj); + this.stack.push(obj); + return true; + } + + popArray(): void { + if (this.stack.length > 1) { + this.stack.pop(); + } + } + + pushObject(name: string): bool { + let obj: Value = Value.Object(); + this.addValue(name, obj); + this.stack.push(obj) + return true; + } + + popObject(): void { + if (this.stack.length > 1) { + this.stack.pop(); + } + } + + addValue(name: string, obj: Value): void { + if (name.length == 0 && obj instanceof Obj) { + this.stack.push(obj); + return; + } + if (this.peek instanceof Obj) { + (this.peek as Obj).set(name, obj) + } + else if (this.peek instanceof Arr) { + (this.peek).push(obj); + } + } +} + +@global() +class JSON { + private static handler: Handler = new Handler(); + private static decoder: JSONDecoder = new JSONDecoder(JSON.handler); + static parse(str: Uint8Array): Obj { + let buffer: Uint8Array = isString(str) ? Buffer.fromString(str): str; + JSON.decoder.deserialize(buffer); + let res = JSON.handler.peek as Obj + JSON.handler.reset(); + return res; + } +} + + + + + + //@ts-ignore @global function encode(encoder: JSONEncoder, value: T, name: string | null = ""): JSONEncoder { @@ -78,242 +262,286 @@ function encode(encoder: JSONEncoder, value: T, name: string | null = ""): JS return encoder; } -class PrimitiveHandler extends ThrowingJSONHandler { - value: T; - decoder: JSONDecoder>; +// class PrimitiveHandler extends ThrowingJSONHandler { +// value: T; +// decoder: JSONDecoder>; - constructor() { - super(); - this.decoder = new JSONDecoder>(this); - } +// constructor() { +// super(); +// this.decoder = new JSONDecoder>(this); +// } - static String: PrimitiveHandler = new PrimitiveHandler(); - static Boolean: PrimitiveHandler = new PrimitiveHandler(); - static U64: PrimitiveHandler = new PrimitiveHandler(); - static I64: PrimitiveHandler = new PrimitiveHandler(); - static U32: PrimitiveHandler = new PrimitiveHandler(); - static I32: PrimitiveHandler = new PrimitiveHandler(); +// static String: PrimitiveHandler = new PrimitiveHandler(); +// static Boolean: PrimitiveHandler = new PrimitiveHandler(); +// static U64: PrimitiveHandler = new PrimitiveHandler(); +// static I64: PrimitiveHandler = new PrimitiveHandler(); +// static U32: PrimitiveHandler = new PrimitiveHandler(); +// static I32: PrimitiveHandler = new PrimitiveHandler(); - decode(buffer: Uint8Array, state: DecoderState | null): T { - this.decoder.deserialize(buffer, state); - //@ts-ignore - return this.value; - } +// decode(buffer: Uint8Array, state: DecoderState | null): T { +// this.decoder.deserialize(buffer, state); +// //@ts-ignore +// return this.value; +// } - setString(name: string, value: string): void { - if (isString()) { - //@ts-ignore - this.value = (value); - return; - } - if (this.value instanceof u64) { - //@ts-ignore - this.value = U64.parseInt(value); - return; - } - if (this.value instanceof i64) { - //@ts-ignore - this.value = I64.parseInt(value); - return; - } - super.setString(name, value); - } +// setString(name: string, value: string): void { +// if (isString()) { +// //@ts-ignore +// this.value = (value); +// return; +// } +// if (this.value instanceof u64) { +// //@ts-ignore +// this.value = U64.parseInt(value); +// return; +// } +// if (this.value instanceof i64) { +// //@ts-ignore +// this.value = I64.parseInt(value); +// return; +// } +// super.setString(name, value); +// } - setBoolean(name: string, value: bool): void { - if (isBoolean()) { - //@ts-ignore - this.value = (value); - return; - } - super.setBoolean(name, value); - } +// setBoolean(name: string, value: bool): void { +// if (isBoolean()) { +// //@ts-ignore +// this.value = (value); +// return; +// } +// super.setBoolean(name, value); +// } - setNull(name: string): void { - if (isString()) { - //@ts-ignore - this.value = (null); - return; - } - super.setNull(name); - } +// setNull(name: string): void { +// if (isString()) { +// //@ts-ignore +// this.value = (null); +// return; +// } +// super.setNull(name); +// } - setInteger(name: string, value: i64): void { - if (isInteger()) { - //@ts-ignore - this.value = (value); - return; - } - super.setInteger(name, value); - } +// setInteger(name: string, value: i64): void { +// if (isInteger()) { +// //@ts-ignore +// this.value = (value); +// return; +// } +// super.setInteger(name, value); +// } -} +// } -function decodeString(buffer: Uint8Array, state: DecoderState | null ): string { - return PrimitiveHandler.String.decode(buffer, state); -} -function decodeInt(buffer: Uint8Array, state: DecoderState | null ): T { - let val: T; - //@ts-ignore - if (val instanceof u32) { - //@ts-ignore - return PrimitiveHandler.U32.decode(buffer, state); - } - //@ts-ignore - if (val instanceof i32) { - //@ts-ignore - return PrimitiveHandler.I32.decode(buffer, state); - } - //@ts-ignore - if (val instanceof u64) { - //@ts-ignore - return PrimitiveHandler.U64.decode(buffer, state); - } - //@ts-ignore - if (val instanceof i64) { - //@ts-ignore - return PrimitiveHandler.I64.decode(buffer, state); - } - //@ts-ignore - return val; -} +// function decodeString(buffer: Uint8Array, state: DecoderState | null ): string { +// return PrimitiveHandler.String.decode(buffer, state); +// } +// function decodeInt(buffer: Uint8Array, state: DecoderState | null ): T { +// let val: T; +// //@ts-ignore +// if (val instanceof u32) { +// //@ts-ignore +// return PrimitiveHandler.U32.decode(buffer, state); +// } +// //@ts-ignore +// if (val instanceof i32) { +// //@ts-ignore +// return PrimitiveHandler.I32.decode(buffer, state); +// } +// //@ts-ignore +// if (val instanceof u64) { +// //@ts-ignore +// return PrimitiveHandler.U64.decode(buffer, state); +// } +// //@ts-ignore +// if (val instanceof i64) { +// //@ts-ignore +// return PrimitiveHandler.I64.decode(buffer, state); +// } +// //@ts-ignore +// return val; +// } -@global -class ArrayHandler extends ThrowingJSONHandler { - firstArrayPush: boolean = true; - handledRoot: boolean = false; - constructor(public value: Array, - public buffer: Uint8Array, - public state: DecoderState | null) { - super(); - } - - static decode(buffer: Uint8Array, state: DecoderState | null): Arr { - const value: Arr = instantiate(); - //@ts-ignore - const handler = new ArrayHandler>(value, buffer, state); - //@ts-ignore - const decoder = new JSONDecoder>>(handler); - decoder.deserialize(buffer, state); - return value; - } +// @global +// class ArrayHandler extends ThrowingJSONHandler { +// firstArrayPush: boolean = true; +// handledRoot: boolean = false; +// constructor(public value: Array, +// public buffer: Uint8Array, +// public state: DecoderState | null) { +// super(); +// } - setString(name: string, value: string): void { - if (isString()) { - //@ts-ignore - this.value.push(value); - return; - } - var item: T; - //@ts-ignore - if (item instanceof Uint8Array) { - //@ts-ignore - this.value.push(base64.decode(value)); - return; - } - //@ts-ignore - if (item instanceof u64) { - //@ts-ignore - this.value.push(U64.parseInt(value)); - return; - } - //@ts-ignore - if (item instanceof i64) { - //@ts-ignore - this.value.push(I64.parseInt(value)); - return; - } - super.setString(name, value); - } +// static decode(buffer: Uint8Array, state: DecoderState | null = null): Arr { +// const value: Arr = instantiate(); +// //@ts-ignore +// const handler = new ArrayHandler>(value, buffer, state); +// //@ts-ignore +// const decoder = new JSONDecoder>>(handler); +// decoder.deserialize(buffer, state); +// return value; +// } - setBoolean(name: string, value: bool): void { - if (isBoolean()) { - //@ts-ignore - this.value.push(value); - return; - } - super.setBoolean(name, value); - } +// setString(name: string, value: string): void { +// if (isString()) { +// //@ts-ignore +// this.value.push(value); +// return; +// } +// var item: T; +// //@ts-ignore +// if (item instanceof Uint8Array) { +// //@ts-ignore +// this.value.push(base64.decode(value)); +// return; +// } +// //@ts-ignore +// if (item instanceof u64) { +// //@ts-ignore +// this.value.push(U64.parseInt(value)); +// return; +// } +// //@ts-ignore +// if (item instanceof i64) { +// //@ts-ignore +// this.value.push(I64.parseInt(value)); +// return; +// } +// super.setString(name, value); +// } - setNull(name: string): void { - if (isNullable()) { - //@ts-ignore - this.value.push(null); - return; - } - super.setNull(name); - } +// setBoolean(name: string, value: bool): void { +// if (isBoolean()) { +// //@ts-ignore +// this.value.push(value); +// return; +// } +// super.setBoolean(name, value); +// } - setInteger(name: string, value: i64): void { - if (isInteger()) { - //@ts-ignore - this.value.push(value); - return; - } - super.setInteger(name, value); - } +// setNull(name: string): void { +// if (isNullable()) { +// //@ts-ignore +// this.value.push(null); +// return; +// } +// super.setNull(name); +// } - pushObject(name: string): bool { - // if (!this.handledRoot) { - // this.handledRoot = true; - // return true; - // } - // assert(name == null || name.length ==0, "name should be null.") - if (isReference()) { - let buffer = this.buffer; - let state = this.state; - let val: T = decode(buffer, state); - this.value.push(val); - return false; - } - return super.pushObject(name); - } +// setInteger(name: string, value: i64): void { +// if (isInteger()) { +// //@ts-ignore +// this.value.push(value); +// return; +// } +// super.setInteger(name, value); +// } - pushArray(name: string): bool { - if (this.firstArrayPush) { - this.firstArrayPush = false; - return true; - } - assert(name == null || name.length == 0, "name should be null."); - if (isArrayLike()) { - this.value.push(decode(this.buffer, this.state)); - return false; - } - return super.pushArray(name); +// pushObject(name: string): bool { +// // if (!this.handledRoot) { +// // this.handledRoot = true; +// // return true; +// // } +// // assert(name == null || name.length ==0, "name should be null.") +// if (isReference()) { +// let buffer = this.buffer; +// let state = this.state; +// let val: T = decode(buffer, state); +// this.value.push(val); +// return false; +// } +// return super.pushObject(name); +// } + +// pushArray(name: string): bool { +// if (this.firstArrayPush) { +// this.firstArrayPush = false; +// return true; +// } +// assert(name == null || name.length == 0, "name should be null."); +// if (isArrayLike()) { +// this.value.push(decode(this.buffer, this.state)); +// return false; +// } +// return super.pushArray(name); +// } +// } +//@ts-ignore +@inline +function getStr(val: Value, name: String): string { + assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null"); + return (val)._str; + + +} + +function decodeArray(val: Value, name: string): Array { + assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null."); + let res = new Array(); + let arr = (val)._arr; + for (let i: i32 = 0; i < arr.length; i++){ + let item: T = decode(arr[i]); + res.push(item); } + return res; } + //@ts-ignore @global -function decode(buffer: Uint8Array, state: DecoderState | null = null): T { +function decode(buffer: Value, name: string = ""): T { + let val: Value; + if (buffer instanceof Obj){ + const obj: Obj = (buffer instanceof Uint8Array) ? JSON.parse(buffer) : buffer; + let res = obj.get(name); + if (res == null){ + throw new Error("Key: " + name + " not found"); + } + val = res; + }else { + val = buffer; + } + if (val instanceof Null) { + assert(isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable."); + //@ts-ignore + return null; + } if (isString()) { //@ts-ignore - return PrimitiveHandler.String.decode(buffer, state); + return getStr(val, name); } if (isBoolean()) { + assert(val instanceof Bools, "Value with Key: "+ name +" is not a string"); //@ts-ignore - return PrimitiveHandler.Boolean.decode(buffer, state); + return (val)._bool } + var value: T; if (isInteger()) { //@ts-ignore - return decodeInt(buffer, state); + if (value instanceof u64 || value instanceof i64) { + assert(val instanceof Str, "Value with Key: "+ name +" is an 64-bit integer and is expected to be encoded as a string"); + let str = (val)._str; + //@ts-ignore + return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str); + } + assert(val instanceof Num, "Value with Key: "+ name +" is not an Integer"); + //@ts-ignore + return (val)._num; } assert(isReference(), "type must be an integer, boolean, string, object, or array"); - var value: T; if (isArrayLike()) { - //@ts-ignore only checking the instance - if (value instanceof Uint8Array) { - //@ts-ignore - return base64.decode(PrimitiveHandler.String.decode(buffer, state)); - } - return ArrayHandler.decode(buffer, state); - } else { //@ts-ignore - if (value instanceof u128) { + if (value instanceof Uint8Array || value instanceof u128) { + let s = getStr(val, name); //@ts-ignore - return u128.fromString(decodeString(buffer, state)); + return value instanceof Uint8Array ? base64.decode(s) : u128.fromString(s); } - let value = instantiate(); //@ts-ignore - return value.decode(buffer, state); + assert(value instanceof Arr, "Value with Key: " + name + " is expected to be an array") + //@ts-ignore only checking the instance + return decodeArray>(buffer, name); } + assert(val instanceof Obj, "Value with Key: " + name + " is not an object or null") + value = instantiate(); + //@ts-ignore + return value.decode(val); } diff --git a/bindings/dist/transformerBundle.js b/bindings/dist/transformerBundle.js index 47220b9972..42c34637b4 100644 --- a/bindings/dist/transformerBundle.js +++ b/bindings/dist/transformerBundle.js @@ -1 +1,9707 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.transformer=t():e.transformer=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=6)}([function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]="SOURCE",e[e.NAMEDTYPE=1]="NAMEDTYPE",e[e.FUNCTIONTYPE=2]="FUNCTIONTYPE",e[e.TYPENAME=3]="TYPENAME",e[e.TYPEPARAMETER=4]="TYPEPARAMETER",e[e.PARAMETER=5]="PARAMETER",e[e.IDENTIFIER=6]="IDENTIFIER",e[e.ASSERTION=7]="ASSERTION",e[e.BINARY=8]="BINARY",e[e.CALL=9]="CALL",e[e.CLASS=10]="CLASS",e[e.COMMA=11]="COMMA",e[e.ELEMENTACCESS=12]="ELEMENTACCESS",e[e.FALSE=13]="FALSE",e[e.FUNCTION=14]="FUNCTION",e[e.INSTANCEOF=15]="INSTANCEOF",e[e.LITERAL=16]="LITERAL",e[e.NEW=17]="NEW",e[e.NULL=18]="NULL",e[e.PARENTHESIZED=19]="PARENTHESIZED",e[e.PROPERTYACCESS=20]="PROPERTYACCESS",e[e.TERNARY=21]="TERNARY",e[e.SUPER=22]="SUPER",e[e.THIS=23]="THIS",e[e.TRUE=24]="TRUE",e[e.CONSTRUCTOR=25]="CONSTRUCTOR",e[e.UNARYPOSTFIX=26]="UNARYPOSTFIX",e[e.UNARYPREFIX=27]="UNARYPREFIX",e[e.BLOCK=28]="BLOCK",e[e.BREAK=29]="BREAK",e[e.CONTINUE=30]="CONTINUE",e[e.DO=31]="DO",e[e.EMPTY=32]="EMPTY",e[e.EXPORT=33]="EXPORT",e[e.EXPORTDEFAULT=34]="EXPORTDEFAULT",e[e.EXPORTIMPORT=35]="EXPORTIMPORT",e[e.EXPRESSION=36]="EXPRESSION",e[e.FOR=37]="FOR",e[e.IF=38]="IF",e[e.IMPORT=39]="IMPORT",e[e.RETURN=40]="RETURN",e[e.SWITCH=41]="SWITCH",e[e.THROW=42]="THROW",e[e.TRY=43]="TRY",e[e.VARIABLE=44]="VARIABLE",e[e.VOID=45]="VOID",e[e.WHILE=46]="WHILE",e[e.CLASSDECLARATION=47]="CLASSDECLARATION",e[e.ENUMDECLARATION=48]="ENUMDECLARATION",e[e.ENUMVALUEDECLARATION=49]="ENUMVALUEDECLARATION",e[e.FIELDDECLARATION=50]="FIELDDECLARATION",e[e.FUNCTIONDECLARATION=51]="FUNCTIONDECLARATION",e[e.IMPORTDECLARATION=52]="IMPORTDECLARATION",e[e.INDEXSIGNATUREDECLARATION=53]="INDEXSIGNATUREDECLARATION",e[e.INTERFACEDECLARATION=54]="INTERFACEDECLARATION",e[e.METHODDECLARATION=55]="METHODDECLARATION",e[e.NAMESPACEDECLARATION=56]="NAMESPACEDECLARATION",e[e.TYPEDECLARATION=57]="TYPEDECLARATION",e[e.VARIABLEDECLARATION=58]="VARIABLEDECLARATION",e[e.DECORATOR=59]="DECORATOR",e[e.EXPORTMEMBER=60]="EXPORTMEMBER",e[e.SWITCHCASE=61]="SWITCHCASE",e[e.COMMENT=62]="COMMENT"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName("",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text="",t},e.createArrayLiteralExpression=function(e,t){var i=new S;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new R;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new b;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new I;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new Q;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(".")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new ge;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Se;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new Re;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new Ie;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new be;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]="DEFAULT",e[e.OPTIONAL=1]="OPTIONAL",e[e.REST=2]="REST"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if("builtin"==t)return E.BUILTIN;break;case 101:if("external"==t)return E.EXTERNAL;break;case 103:if("global"==t)return E.GLOBAL;break;case 105:if("inline"==t)return E.INLINE;break;case 108:if("lazy"==t)return E.LAZY;break;case 111:if("operator"==t)return E.OPERATOR;break;case 115:if("sealed"==t)return E.SEALED;break;case 117:if("unmanaged"==t)return E.UNMANAGED;if("unsafe"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),"operator"==t)switch(i.charCodeAt(0)){case 98:if("binary"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case"prefix":return E.OPERATOR_PREFIX;case"postfix":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]="CUSTOM",e[e.GLOBAL=1]="GLOBAL",e[e.OPERATOR=2]="OPERATOR",e[e.OPERATOR_BINARY=3]="OPERATOR_BINARY",e[e.OPERATOR_PREFIX=4]="OPERATOR_PREFIX",e[e.OPERATOR_POSTFIX=5]="OPERATOR_POSTFIX",e[e.UNMANAGED=6]="UNMANAGED",e[e.SEALED=7]="SEALED",e[e.INLINE=8]="INLINE",e[e.EXTERNAL=9]="EXTERNAL",e[e.BUILTIN=10]="BUILTIN",e[e.LAZY=11]="LAZY",e[e.UNSAFE=12]="UNSAFE"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]="LINE",e[e.TRIPLE=1]="TRIPLE",e[e.BLOCK=2]="BLOCK"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]="FLOAT",e[e.INTEGER=1]="INTEGER",e[e.STRING=2]="STRING",e[e.REGEXP=3]="REGEXP",e[e.ARRAY=4]="ARRAY",e[e.OBJECT=5]="OBJECT"}(N=t.LiteralKind||(t.LiteralKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=g;var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(g);t.ArrayLiteralExpression=S,function(e){e[e.PREFIX=0]="PREFIX",e[e.AS=1]="AS",e[e.NONNULL=2]="NONNULL"}(t.AssertionKind||(t.AssertionKind={}));var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=R;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=b;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,"typeArgumentsRange",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"argumentsRange",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=I;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text="constructor",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(g);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(g);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(I);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text="null",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(g);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(g);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(g);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text="super",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text="this",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text="true",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var Q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text="false",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=Q;var j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=j;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(j);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(j);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]="USER",e[e.USER_ENTRY=1]="USER_ENTRY",e[e.LIBRARY=2]="LIBRARY",e[e.LIBRARY_ENTRY=3]="LIBRARY_ENTRY"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=ge;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=Re;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=be;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=Ie;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i";case s.LESSTHAN_EQUALS:return"<=";case s.GREATERTHAN_EQUALS:return">=";case s.EQUALS_EQUALS:return"==";case s.EXCLAMATION_EQUALS:return"!=";case s.EQUALS_EQUALS_EQUALS:return"===";case s.EXCLAMATION_EQUALS_EQUALS:return"!==";case s.PLUS:return"+";case s.MINUS:return"-";case s.ASTERISK_ASTERISK:return"**";case s.ASTERISK:return"*";case s.SLASH:return"/";case s.PERCENT:return"%";case s.PLUS_PLUS:return"++";case s.MINUS_MINUS:return"--";case s.LESSTHAN_LESSTHAN:return"<<";case s.GREATERTHAN_GREATERTHAN:return">>";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case s.AMPERSAND:return"&";case s.BAR:return"|";case s.CARET:return"^";case s.EXCLAMATION:return"!";case s.TILDE:return"~";case s.AMPERSAND_AMPERSAND:return"&&";case s.BAR_BAR:return"||";case s.EQUALS:return"=";case s.PLUS_EQUALS:return"+=";case s.MINUS_EQUALS:return"-=";case s.ASTERISK_EQUALS:return"*=";case s.ASTERISK_ASTERISK_EQUALS:return"**=";case s.SLASH_EQUALS:return"/=";case s.PERCENT_EQUALS:return"%=";case s.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case s.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case s.AMPERSAND_EQUALS:return"&=";case s.BAR_EQUALS:return"|=";case s.CARET_EQUALS:return"^=";default:return assert(!1),""}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error("source mismatch");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.signature.parameters.length}function p(e){return e.text.includes("@nearfile")||l(e)}function h(e){return o.ASTBuilder.build(e)}function l(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function d(e){return!!(e.kind==s.NodeKind.NAMEDTYPE&&h(e).startsWith("Array")&&e.typeArguments&&e.typeArguments.length>0)}function E(e){return e.kind==s.NodeKind.CLASSDECLARATION}function f(e){return e.kind==s.NodeKind.FIELDDECLARATION}var A=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},t.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(p)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(h(e.name))||(this.generateHandler(e),this.exportedClasses.set(h(e.name),e))},t.prototype.visitFunctionDeclaration=function(t){!l(t)||this.wrappedFuncs.has(h(t.name))||!t.is(a.CommonFlags.EXPORT)||0==_(t)&&function(e){return"void"===h(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(_(t)>0&&this.generateArgsParser(t),this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(h(t.name)))},t.prototype.generateArgsParser=function(e){var t=this,i=e.signature,n=h(e.name),r=i.parameters.map(function(t){var i=h(t.name),n=t.type;return{name:i,type:n,isGeneric:null!=e.typeParameters&&e.typeParameters.some(function(e){return h(e)==h(n)})}});this.sb.push("\nclass __near_ArgsParser_"+n+" extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_ArgsParser_"+n+">;\n handledRoot: boolean = false;"),r.length>0?(r.forEach(function(e){t.sb.push(" __near_param_"+e.name+": "+t.typeName(e.type)+";")}),this.generateHandlerMethods("this.__near_param_",r)):this.generateHandlerMethods("this.__near_param_",[]),this.sb.push("}")},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=h(n).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),s=h(n).includes("null"),a=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+a+"(): void {"),i.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n let handler = new __near_ArgsParser_"+a+"();\n handler.buffer = json;\n handler.decoder = new JSONDecoder<__near_ArgsParser_"+a+">(handler);\n handler.decoder.deserialize(json);"),"void"!==h(n)?this.sb.push(" let result: "+h(n)+" = "+a+"("):this.sb.push(" "+a+"("),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return"handler.__near_param_"+e.name.symbol}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==h(n)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+r+">() || isNullable<"+r+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+r+">(encoder, result"+(s?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+a+" as "+a+" }\n")},t.prototype.generateHandlerMethods=function(e,t){var i=this,n=function(e){return t.filter(function(t){return-1!=e.indexOf(i.typeName(t.type))||t.isGeneric})};this.generateBasicSetterHandlers(e,"Integer","i64",n(["i32","u32"])),this.generateBasicSetterHandlers(e,"String","string",n(["string","i64","u64","Uint8Array","u128"])),this.generateBasicSetterHandlers(e,"Boolean","bool",n(["bool"]));var r=t.filter(function(e){return t=e.type,!["i32","u32","bool","i64","u64","boolean"].includes(h(t))||e.isGeneric;var t});this.sb.push(" setNull(name: string): void {"),r.forEach(function(t){i.sb.push(' if (name == "'+t.name+'") {');var n=""+e+t.name+" = <"+i.typeName(t.type)+">null";t.isGeneric?i.sb.push(" if (isNullable<"+i.typeName(t.type)+">()){\n "+n+"\n return;\n }"):i.sb.push(" "+n+"\n return;"),i.sb.push(" }")}),this.sb.push("\n super.setNull(name);\n }"),this.sb.push("\n pushObject(name: string): bool {"),this.sb.push("if (!this.handledRoot) {\n assert(name == null || name.length == 0);\n this.handledRoot = true;\n return true;\n } else {\n assert(name != null || name.length != 0);\n }"),this.generatePushHandler(e,r.filter(function(e){return!d(e.type)})),this.sb.push("\n return super.pushObject(name);\n }"),this.sb.push("\n pushArray(name: string): bool {"),this.generatePushHandler(e,r.filter(function(e){return d(e.type)})),this.sb.push("\n return super.pushArray(name);\n }")},t.prototype.generateBasicSetterHandlers=function(e,t,i,n){var r=this;n.length>0&&(this.sb.push(" set"+t+"(name: string, value: "+i+"): void {"),n.forEach(function(i){var n=r.typeName(i.type);if("String"==t&&"string"!=n)if("Uint8Array"==n)r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = base64.decode(value);\n return;\n }");else if("u128"===n)r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = u128.fromString(value);\n return;\n }");else{var s="u64"===r.typeName(i.type)?"U64":"I64";r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = "+(i.isGeneric?"<"+h(i.type)+">":"")+s+".parseInt(value);\n return;\n }")}else r.sb.push(' if (name == "'+i.name+'") {\n '+e+i.name+" = <"+n+">value;\n return;\n }");i.isGeneric&&r.sb.push(" assert(is"+t+"<"+n+'>(), "'+i.name+" is not a "+t+'")')}),this.sb.push(" super.set"+t+"(name, value);\n }"))},t.prototype.generatePushHandler=function(e,t){var i=this;t.forEach(function(t){if(!(i.typeName(t.type)in i.typeMapping)){var n=t.isGeneric?" && isReference<"+i.typeName(t.type)+">()":"";i.sb.push(' if (name == "'+t.name+'"'+n+") {\n "+e+t.name+" = decode<"+h(t.type)+">(this.buffer, this.decoder.state);\n return false;\n }")}})},t.prototype.generateHandler=function(e){if(!d(e)){var t=this.typeName(e);this.sb.push("export class __near_JSONHandler_"+t+" extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_JSONHandler_"+t+">;\n handledRoot: boolean = false;\n value: "+this.typeName(e)+";\n\n constructor(value_: "+this.typeName(e)+") {\n super();\n this.value = value_;\n }\n "),this.generateHandlerMethods("this.value.",this.getFields(e)),this.sb.push("}\n")}},t.prototype.typeName=function(e){if(!E(e))return o.ASTBuilder.build(e);var t=h((e=e).name);return e.isGeneric&&(t+="<"+e.typeParameters.map(h).join(", ")+">"),t},t.prototype.getFields=function(e){var t=E(e)?e:this.exportedClasses.get(h(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:h(e.name),type:e.type,isGeneric:v(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(E(e)){var n=e;if(i=i.slice(0,i.lastIndexOf("}")),n.members.filter(f).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var r=t.typeName(n);i+="\n static decode(json: Uint8Array, state: DecoderState | null = null): "+r+" {\n let value = instantiate<"+r+">(); // Allocate without constructor\n value.decode(json, state);\n return value;\n }\n\n decode(json: Uint8Array, state: DecoderState | null): "+r+" {\n let handler: __near_JSONHandler_"+r+" = new __near_JSONHandler_"+r+"(this);\n handler.buffer = json;\n let decoder = new JSONDecoder<__near_JSONHandler_"+r+'>(handler);\n handler.decoder = decoder;\n decoder.deserialize(json, state);\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+function(e){return e.members.filter(f).map(function(e){var t=h(e.type),i=h(e.name);return"encode<"+t+">(encoder, this."+i+', "'+i+'");'})}(n).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return i});return this.sb.concat(i).join("\n")},t}(u.BaseVisitor);function v(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return h(e.name)==h(t.type)})}t.afterParse=function(e,t,i){A.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf("\n")).includes("out");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=A.build(e,n);r&&t("out/"+n.normalizedPath,s,i),e.parseFile(s,(l(n)?"":"./")+n.normalizedPath,l(n))})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(t.Feature||(t.Feature={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(t.Target||(t.Target={}))},function(e,t,i){"use strict";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),""}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE="",t.COLOR_YELLOW="",t.COLOR_RED="",t.COLOR_RESET="",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace("{0}",n)),null!=s&&(o=o.replace("{1}",s)),null!=a&&(o=o.replace("{2}",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:"."}function a(e){var t=e.length;if(t<=1){if(0==t)return".";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return"."}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith("std/")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=" ",r=" ",s=" ";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){"use strict";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i")}e.isNullable&&n.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?"((":"(");var n=e.explicitThisType;n&&(i.push("this: "),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(", "),this.serializeParameter(r[0]);for(var a=1;a "),this.visitTypeNode(o)):i.push(") => void"),t&&i.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(" extends "),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push("="),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push("[");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(" as "),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(" "),t.push(a.operatorTokenToString(e.operator)),t.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push("<"),this.visitTypeNode(i[0]);for(var r=1;r(")}}else t.push("(");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push("\\0"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\b");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\t");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\n");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\v");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\f");break;case 13:s>n&&i.push(e.substring(n,s)),i.push("\\r"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push("\\'"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push("\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push("/"),t.push(e.pattern),t.push("/"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push("("),this.visitNode(e.expression),t.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(" ? "),this.visitNode(e.ifThen),t.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push("\n"):t.push(";\n")}else t.push(";\n")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push("{\n");for(var r=++this.indentLevel,a=0;a")}var _=e.extendsType;_&&(u.push(" extends "),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(" implements "),this.visitTypeNode(p[0]);for(a=1;a")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push("(");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push("this: "),this.visitTypeNode(_)),c){_&&t.push(", "),this.serializeParameter(u[0]);for(o=1;o "),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(" => "),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(")"):(t.push("): "),this.visitTypeNode(h)),p&&(t.push(" "),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push("if ("),this.visitNode(e.condition),t.push(") ");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(";\n");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(" else "):t.push("else "),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(" as "),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push("import ");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push("{\n");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o")}var u=e.extendsType;u&&(a.push(" extends "),this.visitTypeNode(u)),a.push(" {\n");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n")}}r.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push("!"),t&&(i.push(": "),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(" = "),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name="UnreachableError",r.prototype.message="unreachable",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name="AssertionError",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return"number"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return"object"==typeof e||"string"==typeof e},t.isFunction=function(e){return"function"==typeof e},t.isString=function(e){return"string"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return g}else{if(e<=-E)return S;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return A;if("number"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},R.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},R.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},R.getHighBits=function(){return this.high},R.getHighBitsUnsigned=function(){return this.high>>>0},R.getLowBits=function(){return this.low},R.getLowBitsUnsigned=function(){return this.low>>>0},R.getNumBitsAbs=function(){if(this.isNegative())return this.eq(S)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},R.isOdd=function(){return 1==(1&this.low)},R.isEven=function(){return 0==(1&this.low)},R.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},R.eq=R.equals,R.notEquals=function(e){return!this.eq(e)},R.neq=R.notEquals,R.ne=R.notEquals,R.lessThan=function(e){return this.comp(e)<0},R.lt=R.lessThan,R.lessThanOrEqual=function(e){return this.comp(e)<=0},R.lte=R.lessThanOrEqual,R.le=R.lessThanOrEqual,R.greaterThan=function(e){return this.comp(e)>0},R.gt=R.greaterThan,R.greaterThanOrEqual=function(e){return this.comp(e)>=0},R.gte=R.greaterThanOrEqual,R.ge=R.greaterThanOrEqual,R.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},R.comp=R.compare,R.negate=function(){return!this.unsigned&&this.eq(S)?S:this.not().add(m)},R.neg=R.negate,R.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},R.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},R.sub=R.subtract,R.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(S))return e.isOdd()?S:A;if(e.eq(S))return this.isOdd()?S:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},R.mul=R.multiply,R.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error("division by zero");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(S))return e.eq(m)||e.eq(N)?S:e.eq(S)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(S))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},R.div=R.divide,R.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},R.mod=R.modulo,R.rem=R.modulo,R.not=function(){return c(~this.low,~this.high,this.unsigned)},R.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},R.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},R.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},R.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},R.shr=R.shiftRight,R.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},R.shru=R.shiftRightUnsigned,R.shr_u=R.shiftRightUnsigned,R.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},R.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},R.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},R.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},R.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&"function"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preamble='import { storage, near, base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])}); \ No newline at end of file +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["transformer"] = factory(); + else + root["transformer"] = factory(); +})(typeof self !== 'undefined' ? self : this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "../node_modules/long/src/long.js": +/*!****************************************!*\ + !*** ../node_modules/long/src/long.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = Long; + +/** + * wasm optimizations, to do native i64 multiplication and divide + */ +var wasm = null; + +try { + wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([ + 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11 + ])), {}).exports; +} catch (e) { + // no wasm support :( +} + +/** + * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. + * See the from* functions below for more convenient ways of constructing Longs. + * @exports Long + * @class A Long class for representing a 64 bit two's-complement integer value. + * @param {number} low The low (signed) 32 bits of the long + * @param {number} high The high (signed) 32 bits of the long + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @constructor + */ +function Long(low, high, unsigned) { + + /** + * The low 32 bits as a signed value. + * @type {number} + */ + this.low = low | 0; + + /** + * The high 32 bits as a signed value. + * @type {number} + */ + this.high = high | 0; + + /** + * Whether unsigned or not. + * @type {boolean} + */ + this.unsigned = !!unsigned; +} + +// The internal representation of a long is the two given signed, 32-bit values. +// We use 32-bit pieces because these are the size of integers on which +// Javascript performs bit-operations. For operations like addition and +// multiplication, we split each number into 16 bit pieces, which can easily be +// multiplied within Javascript's floating-point representation without overflow +// or change in sign. +// +// In the algorithms below, we frequently reduce the negative case to the +// positive case by negating the input(s) and then post-processing the result. +// Note that we must ALWAYS check specially whether those values are MIN_VALUE +// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as +// a positive number, it overflows back into a negative). Not handling this +// case would often result in infinite recursion. +// +// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from* +// methods on which they depend. + +/** + * An indicator used to reliably determine if an object is a Long or not. + * @type {boolean} + * @const + * @private + */ +Long.prototype.__isLong__; + +Object.defineProperty(Long.prototype, "__isLong__", { value: true }); + +/** + * @function + * @param {*} obj Object + * @returns {boolean} + * @inner + */ +function isLong(obj) { + return (obj && obj["__isLong__"]) === true; +} + +/** + * Tests if the specified object is a Long. + * @function + * @param {*} obj Object + * @returns {boolean} + */ +Long.isLong = isLong; + +/** + * A cache of the Long representations of small integer values. + * @type {!Object} + * @inner + */ +var INT_CACHE = {}; + +/** + * A cache of the Long representations of small unsigned integer values. + * @type {!Object} + * @inner + */ +var UINT_CACHE = {}; + +/** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromInt(value, unsigned) { + var obj, cachedObj, cache; + if (unsigned) { + value >>>= 0; + if (cache = (0 <= value && value < 256)) { + cachedObj = UINT_CACHE[value]; + if (cachedObj) + return cachedObj; + } + obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true); + if (cache) + UINT_CACHE[value] = obj; + return obj; + } else { + value |= 0; + if (cache = (-128 <= value && value < 128)) { + cachedObj = INT_CACHE[value]; + if (cachedObj) + return cachedObj; + } + obj = fromBits(value, value < 0 ? -1 : 0, false); + if (cache) + INT_CACHE[value] = obj; + return obj; + } +} + +/** + * Returns a Long representing the given 32 bit integer value. + * @function + * @param {number} value The 32 bit integer in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromInt = fromInt; + +/** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromNumber(value, unsigned) { + if (isNaN(value)) + return unsigned ? UZERO : ZERO; + if (unsigned) { + if (value < 0) + return UZERO; + if (value >= TWO_PWR_64_DBL) + return MAX_UNSIGNED_VALUE; + } else { + if (value <= -TWO_PWR_63_DBL) + return MIN_VALUE; + if (value + 1 >= TWO_PWR_63_DBL) + return MAX_VALUE; + } + if (value < 0) + return fromNumber(-value, unsigned).neg(); + return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); +} + +/** + * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. + * @function + * @param {number} value The number in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromNumber = fromNumber; + +/** + * @param {number} lowBits + * @param {number} highBits + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromBits(lowBits, highBits, unsigned) { + return new Long(lowBits, highBits, unsigned); +} + +/** + * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is + * assumed to use 32 bits. + * @function + * @param {number} lowBits The low 32 bits + * @param {number} highBits The high 32 bits + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromBits = fromBits; + +/** + * @function + * @param {number} base + * @param {number} exponent + * @returns {number} + * @inner + */ +var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) + +/** + * @param {string} str + * @param {(boolean|number)=} unsigned + * @param {number=} radix + * @returns {!Long} + * @inner + */ +function fromString(str, unsigned, radix) { + if (str.length === 0) + throw Error('empty string'); + if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") + return ZERO; + if (typeof unsigned === 'number') { + // For goog.math.long compatibility + radix = unsigned, + unsigned = false; + } else { + unsigned = !! unsigned; + } + radix = radix || 10; + if (radix < 2 || 36 < radix) + throw RangeError('radix'); + + var p; + if ((p = str.indexOf('-')) > 0) + throw Error('interior hyphen'); + else if (p === 0) { + return fromString(str.substring(1), unsigned, radix).neg(); + } + + // Do several (8) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = fromNumber(pow_dbl(radix, 8)); + + var result = ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i), + value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = fromNumber(pow_dbl(radix, size)); + result = result.mul(power).add(fromNumber(value)); + } else { + result = result.mul(radixToPower); + result = result.add(fromNumber(value)); + } + } + result.unsigned = unsigned; + return result; +} + +/** + * Returns a Long representation of the given string, written using the specified radix. + * @function + * @param {string} str The textual representation of the Long + * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed + * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 + * @returns {!Long} The corresponding Long value + */ +Long.fromString = fromString; + +/** + * @function + * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromValue(val, unsigned) { + if (typeof val === 'number') + return fromNumber(val, unsigned); + if (typeof val === 'string') + return fromString(val, unsigned); + // Throws for non-objects, converts non-instanceof Long: + return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned); +} + +/** + * Converts the specified value to a Long using the appropriate from* function for its type. + * @function + * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} + */ +Long.fromValue = fromValue; + +// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be +// no runtime penalty for these. + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_16_DBL = 1 << 16; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_24_DBL = 1 << 24; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; + +/** + * @type {!Long} + * @const + * @inner + */ +var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); + +/** + * @type {!Long} + * @inner + */ +var ZERO = fromInt(0); + +/** + * Signed zero. + * @type {!Long} + */ +Long.ZERO = ZERO; + +/** + * @type {!Long} + * @inner + */ +var UZERO = fromInt(0, true); + +/** + * Unsigned zero. + * @type {!Long} + */ +Long.UZERO = UZERO; + +/** + * @type {!Long} + * @inner + */ +var ONE = fromInt(1); + +/** + * Signed one. + * @type {!Long} + */ +Long.ONE = ONE; + +/** + * @type {!Long} + * @inner + */ +var UONE = fromInt(1, true); + +/** + * Unsigned one. + * @type {!Long} + */ +Long.UONE = UONE; + +/** + * @type {!Long} + * @inner + */ +var NEG_ONE = fromInt(-1); + +/** + * Signed negative one. + * @type {!Long} + */ +Long.NEG_ONE = NEG_ONE; + +/** + * @type {!Long} + * @inner + */ +var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); + +/** + * Maximum signed value. + * @type {!Long} + */ +Long.MAX_VALUE = MAX_VALUE; + +/** + * @type {!Long} + * @inner + */ +var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); + +/** + * Maximum unsigned value. + * @type {!Long} + */ +Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; + +/** + * @type {!Long} + * @inner + */ +var MIN_VALUE = fromBits(0, 0x80000000|0, false); + +/** + * Minimum signed value. + * @type {!Long} + */ +Long.MIN_VALUE = MIN_VALUE; + +/** + * @alias Long.prototype + * @inner + */ +var LongPrototype = Long.prototype; + +/** + * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. + * @returns {number} + */ +LongPrototype.toInt = function toInt() { + return this.unsigned ? this.low >>> 0 : this.low; +}; + +/** + * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). + * @returns {number} + */ +LongPrototype.toNumber = function toNumber() { + if (this.unsigned) + return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); + return this.high * TWO_PWR_32_DBL + (this.low >>> 0); +}; + +/** + * Converts the Long to a string written in the specified radix. + * @param {number=} radix Radix (2-36), defaults to 10 + * @returns {string} + * @override + * @throws {RangeError} If `radix` is out of range + */ +LongPrototype.toString = function toString(radix) { + radix = radix || 10; + if (radix < 2 || 36 < radix) + throw RangeError('radix'); + if (this.isZero()) + return '0'; + if (this.isNegative()) { // Unsigned Longs are never negative + if (this.eq(MIN_VALUE)) { + // We need to change the Long value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixLong = fromNumber(radix), + div = this.div(radixLong), + rem1 = div.mul(radixLong).sub(this); + return div.toString(radix) + rem1.toInt().toString(radix); + } else + return '-' + this.neg().toString(radix); + } + + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), + rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower), + intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, + digits = intval.toString(radix); + rem = remDiv; + if (rem.isZero()) + return digits + result; + else { + while (digits.length < 6) + digits = '0' + digits; + result = '' + digits + result; + } + } +}; + +/** + * Gets the high 32 bits as a signed integer. + * @returns {number} Signed high bits + */ +LongPrototype.getHighBits = function getHighBits() { + return this.high; +}; + +/** + * Gets the high 32 bits as an unsigned integer. + * @returns {number} Unsigned high bits + */ +LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { + return this.high >>> 0; +}; + +/** + * Gets the low 32 bits as a signed integer. + * @returns {number} Signed low bits + */ +LongPrototype.getLowBits = function getLowBits() { + return this.low; +}; + +/** + * Gets the low 32 bits as an unsigned integer. + * @returns {number} Unsigned low bits + */ +LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { + return this.low >>> 0; +}; + +/** + * Gets the number of bits needed to represent the absolute value of this Long. + * @returns {number} + */ +LongPrototype.getNumBitsAbs = function getNumBitsAbs() { + if (this.isNegative()) // Unsigned Longs are never negative + return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); + var val = this.high != 0 ? this.high : this.low; + for (var bit = 31; bit > 0; bit--) + if ((val & (1 << bit)) != 0) + break; + return this.high != 0 ? bit + 33 : bit + 1; +}; + +/** + * Tests if this Long's value equals zero. + * @returns {boolean} + */ +LongPrototype.isZero = function isZero() { + return this.high === 0 && this.low === 0; +}; + +/** + * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}. + * @returns {boolean} + */ +LongPrototype.eqz = LongPrototype.isZero; + +/** + * Tests if this Long's value is negative. + * @returns {boolean} + */ +LongPrototype.isNegative = function isNegative() { + return !this.unsigned && this.high < 0; +}; + +/** + * Tests if this Long's value is positive. + * @returns {boolean} + */ +LongPrototype.isPositive = function isPositive() { + return this.unsigned || this.high >= 0; +}; + +/** + * Tests if this Long's value is odd. + * @returns {boolean} + */ +LongPrototype.isOdd = function isOdd() { + return (this.low & 1) === 1; +}; + +/** + * Tests if this Long's value is even. + * @returns {boolean} + */ +LongPrototype.isEven = function isEven() { + return (this.low & 1) === 0; +}; + +/** + * Tests if this Long's value equals the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.equals = function equals(other) { + if (!isLong(other)) + other = fromValue(other); + if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) + return false; + return this.high === other.high && this.low === other.low; +}; + +/** + * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.eq = LongPrototype.equals; + +/** + * Tests if this Long's value differs from the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.notEquals = function notEquals(other) { + return !this.eq(/* validates */ other); +}; + +/** + * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.neq = LongPrototype.notEquals; + +/** + * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.ne = LongPrototype.notEquals; + +/** + * Tests if this Long's value is less than the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lessThan = function lessThan(other) { + return this.comp(/* validates */ other) < 0; +}; + +/** + * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lt = LongPrototype.lessThan; + +/** + * Tests if this Long's value is less than or equal the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { + return this.comp(/* validates */ other) <= 0; +}; + +/** + * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lte = LongPrototype.lessThanOrEqual; + +/** + * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.le = LongPrototype.lessThanOrEqual; + +/** + * Tests if this Long's value is greater than the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.greaterThan = function greaterThan(other) { + return this.comp(/* validates */ other) > 0; +}; + +/** + * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.gt = LongPrototype.greaterThan; + +/** + * Tests if this Long's value is greater than or equal the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { + return this.comp(/* validates */ other) >= 0; +}; + +/** + * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.gte = LongPrototype.greaterThanOrEqual; + +/** + * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.ge = LongPrototype.greaterThanOrEqual; + +/** + * Compares this Long's value with the specified's. + * @param {!Long|number|string} other Other value + * @returns {number} 0 if they are the same, 1 if the this is greater and -1 + * if the given one is greater + */ +LongPrototype.compare = function compare(other) { + if (!isLong(other)) + other = fromValue(other); + if (this.eq(other)) + return 0; + var thisNeg = this.isNegative(), + otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) + return -1; + if (!thisNeg && otherNeg) + return 1; + // At this point the sign bits are the same + if (!this.unsigned) + return this.sub(other).isNegative() ? -1 : 1; + // Both are positive if at least one is unsigned + return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1; +}; + +/** + * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}. + * @function + * @param {!Long|number|string} other Other value + * @returns {number} 0 if they are the same, 1 if the this is greater and -1 + * if the given one is greater + */ +LongPrototype.comp = LongPrototype.compare; + +/** + * Negates this Long's value. + * @returns {!Long} Negated Long + */ +LongPrototype.negate = function negate() { + if (!this.unsigned && this.eq(MIN_VALUE)) + return MIN_VALUE; + return this.not().add(ONE); +}; + +/** + * Negates this Long's value. This is an alias of {@link Long#negate}. + * @function + * @returns {!Long} Negated Long + */ +LongPrototype.neg = LongPrototype.negate; + +/** + * Returns the sum of this and the specified Long. + * @param {!Long|number|string} addend Addend + * @returns {!Long} Sum + */ +LongPrototype.add = function add(addend) { + if (!isLong(addend)) + addend = fromValue(addend); + + // Divide each number into 4 chunks of 16 bits, and then sum the chunks. + + var a48 = this.high >>> 16; + var a32 = this.high & 0xFFFF; + var a16 = this.low >>> 16; + var a00 = this.low & 0xFFFF; + + var b48 = addend.high >>> 16; + var b32 = addend.high & 0xFFFF; + var b16 = addend.low >>> 16; + var b00 = addend.low & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); +}; + +/** + * Returns the difference of this and the specified Long. + * @param {!Long|number|string} subtrahend Subtrahend + * @returns {!Long} Difference + */ +LongPrototype.subtract = function subtract(subtrahend) { + if (!isLong(subtrahend)) + subtrahend = fromValue(subtrahend); + return this.add(subtrahend.neg()); +}; + +/** + * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}. + * @function + * @param {!Long|number|string} subtrahend Subtrahend + * @returns {!Long} Difference + */ +LongPrototype.sub = LongPrototype.subtract; + +/** + * Returns the product of this and the specified Long. + * @param {!Long|number|string} multiplier Multiplier + * @returns {!Long} Product + */ +LongPrototype.multiply = function multiply(multiplier) { + if (this.isZero()) + return ZERO; + if (!isLong(multiplier)) + multiplier = fromValue(multiplier); + + // use wasm support if present + if (wasm) { + var low = wasm.mul(this.low, + this.high, + multiplier.low, + multiplier.high); + return fromBits(low, wasm.get_high(), this.unsigned); + } + + if (multiplier.isZero()) + return ZERO; + if (this.eq(MIN_VALUE)) + return multiplier.isOdd() ? MIN_VALUE : ZERO; + if (multiplier.eq(MIN_VALUE)) + return this.isOdd() ? MIN_VALUE : ZERO; + + if (this.isNegative()) { + if (multiplier.isNegative()) + return this.neg().mul(multiplier.neg()); + else + return this.neg().mul(multiplier).neg(); + } else if (multiplier.isNegative()) + return this.mul(multiplier.neg()).neg(); + + // If both longs are small, use float multiplication + if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) + return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); + + // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. + + var a48 = this.high >>> 16; + var a32 = this.high & 0xFFFF; + var a16 = this.low >>> 16; + var a00 = this.low & 0xFFFF; + + var b48 = multiplier.high >>> 16; + var b32 = multiplier.high & 0xFFFF; + var b16 = multiplier.low >>> 16; + var b00 = multiplier.low & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); +}; + +/** + * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}. + * @function + * @param {!Long|number|string} multiplier Multiplier + * @returns {!Long} Product + */ +LongPrototype.mul = LongPrototype.multiply; + +/** + * Returns this Long divided by the specified. The result is signed if this Long is signed or + * unsigned if this Long is unsigned. + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Quotient + */ +LongPrototype.divide = function divide(divisor) { + if (!isLong(divisor)) + divisor = fromValue(divisor); + if (divisor.isZero()) + throw Error('division by zero'); + + // use wasm support if present + if (wasm) { + // guard against signed division overflow: the largest + // negative number / -1 would be 1 larger than the largest + // positive number, due to two's complement. + if (!this.unsigned && + this.high === -0x80000000 && + divisor.low === -1 && divisor.high === -1) { + // be consistent with non-wasm code path + return this; + } + var low = (this.unsigned ? wasm.div_u : wasm.div_s)( + this.low, + this.high, + divisor.low, + divisor.high + ); + return fromBits(low, wasm.get_high(), this.unsigned); + } + + if (this.isZero()) + return this.unsigned ? UZERO : ZERO; + var approx, rem, res; + if (!this.unsigned) { + // This section is only relevant for signed longs and is derived from the + // closure library as a whole. + if (this.eq(MIN_VALUE)) { + if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) + return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + else if (divisor.eq(MIN_VALUE)) + return ONE; + else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shr(1); + approx = halfThis.div(divisor).shl(1); + if (approx.eq(ZERO)) { + return divisor.isNegative() ? ONE : NEG_ONE; + } else { + rem = this.sub(divisor.mul(approx)); + res = approx.add(rem.div(divisor)); + return res; + } + } + } else if (divisor.eq(MIN_VALUE)) + return this.unsigned ? UZERO : ZERO; + if (this.isNegative()) { + if (divisor.isNegative()) + return this.neg().div(divisor.neg()); + return this.neg().div(divisor).neg(); + } else if (divisor.isNegative()) + return this.div(divisor.neg()).neg(); + res = ZERO; + } else { + // The algorithm below has not been made for unsigned longs. It's therefore + // required to take special care of the MSB prior to running it. + if (!divisor.unsigned) + divisor = divisor.toUnsigned(); + if (divisor.gt(this)) + return UZERO; + if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true + return UONE; + res = UZERO; + } + + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + rem = this; + while (rem.gte(divisor)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); + + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2), + delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), + + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + approxRes = fromNumber(approx), + approxRem = approxRes.mul(divisor); + while (approxRem.isNegative() || approxRem.gt(rem)) { + approx -= delta; + approxRes = fromNumber(approx, this.unsigned); + approxRem = approxRes.mul(divisor); + } + + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) + approxRes = ONE; + + res = res.add(approxRes); + rem = rem.sub(approxRem); + } + return res; +}; + +/** + * Returns this Long divided by the specified. This is an alias of {@link Long#divide}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Quotient + */ +LongPrototype.div = LongPrototype.divide; + +/** + * Returns this Long modulo the specified. + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.modulo = function modulo(divisor) { + if (!isLong(divisor)) + divisor = fromValue(divisor); + + // use wasm support if present + if (wasm) { + var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)( + this.low, + this.high, + divisor.low, + divisor.high + ); + return fromBits(low, wasm.get_high(), this.unsigned); + } + + return this.sub(this.div(divisor).mul(divisor)); +}; + +/** + * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.mod = LongPrototype.modulo; + +/** + * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.rem = LongPrototype.modulo; + +/** + * Returns the bitwise NOT of this Long. + * @returns {!Long} + */ +LongPrototype.not = function not() { + return fromBits(~this.low, ~this.high, this.unsigned); +}; + +/** + * Returns the bitwise AND of this Long and the specified. + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.and = function and(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low & other.low, this.high & other.high, this.unsigned); +}; + +/** + * Returns the bitwise OR of this Long and the specified. + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.or = function or(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low | other.low, this.high | other.high, this.unsigned); +}; + +/** + * Returns the bitwise XOR of this Long and the given one. + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.xor = function xor(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); +}; + +/** + * Returns this Long with bits shifted to the left by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftLeft = function shiftLeft(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + if ((numBits &= 63) === 0) + return this; + else if (numBits < 32) + return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); + else + return fromBits(0, this.low << (numBits - 32), this.unsigned); +}; + +/** + * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shl = LongPrototype.shiftLeft; + +/** + * Returns this Long with bits arithmetically shifted to the right by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftRight = function shiftRight(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + if ((numBits &= 63) === 0) + return this; + else if (numBits < 32) + return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); + else + return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); +}; + +/** + * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shr = LongPrototype.shiftRight; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + numBits &= 63; + if (numBits === 0) + return this; + else { + var high = this.high; + if (numBits < 32) { + var low = this.low; + return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); + } else if (numBits === 32) + return fromBits(high, 0, this.unsigned); + else + return fromBits(high >>> (numBits - 32), 0, this.unsigned); + } +}; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shru = LongPrototype.shiftRightUnsigned; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; + +/** + * Converts this Long to signed. + * @returns {!Long} Signed long + */ +LongPrototype.toSigned = function toSigned() { + if (!this.unsigned) + return this; + return fromBits(this.low, this.high, false); +}; + +/** + * Converts this Long to unsigned. + * @returns {!Long} Unsigned long + */ +LongPrototype.toUnsigned = function toUnsigned() { + if (this.unsigned) + return this; + return fromBits(this.low, this.high, true); +}; + +/** + * Converts this Long to its byte representation. + * @param {boolean=} le Whether little or big endian, defaults to big endian + * @returns {!Array.} Byte representation + */ +LongPrototype.toBytes = function toBytes(le) { + return le ? this.toBytesLE() : this.toBytesBE(); +}; + +/** + * Converts this Long to its little endian byte representation. + * @returns {!Array.} Little endian byte representation + */ +LongPrototype.toBytesLE = function toBytesLE() { + var hi = this.high, + lo = this.low; + return [ + lo & 0xff, + lo >>> 8 & 0xff, + lo >>> 16 & 0xff, + lo >>> 24 , + hi & 0xff, + hi >>> 8 & 0xff, + hi >>> 16 & 0xff, + hi >>> 24 + ]; +}; + +/** + * Converts this Long to its big endian byte representation. + * @returns {!Array.} Big endian byte representation + */ +LongPrototype.toBytesBE = function toBytesBE() { + var hi = this.high, + lo = this.low; + return [ + hi >>> 24 , + hi >>> 16 & 0xff, + hi >>> 8 & 0xff, + hi & 0xff, + lo >>> 24 , + lo >>> 16 & 0xff, + lo >>> 8 & 0xff, + lo & 0xff + ]; +}; + +/** + * Creates a Long from its byte representation. + * @param {!Array.} bytes Byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @param {boolean=} le Whether little or big endian, defaults to big endian + * @returns {Long} The corresponding Long value + */ +Long.fromBytes = function fromBytes(bytes, unsigned, le) { + return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned); +}; + +/** + * Creates a Long from its little endian byte representation. + * @param {!Array.} bytes Little endian byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {Long} The corresponding Long value + */ +Long.fromBytesLE = function fromBytesLE(bytes, unsigned) { + return new Long( + bytes[0] | + bytes[1] << 8 | + bytes[2] << 16 | + bytes[3] << 24, + bytes[4] | + bytes[5] << 8 | + bytes[6] << 16 | + bytes[7] << 24, + unsigned + ); +}; + +/** + * Creates a Long from its big endian byte representation. + * @param {!Array.} bytes Big endian byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {Long} The corresponding Long value + */ +Long.fromBytesBE = function fromBytesBE(bytes, unsigned) { + return new Long( + bytes[4] << 24 | + bytes[5] << 16 | + bytes[6] << 8 | + bytes[7], + bytes[0] << 24 | + bytes[1] << 16 | + bytes[2] << 8 | + bytes[3], + unsigned + ); +}; + + +/***/ }), + +/***/ "../node_modules/webpack/buildin/global.js": +/*!*************************************************!*\ + !*** ../node_modules/webpack/buildin/global.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || new Function("return this")(); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), + +/***/ "../src/ast.ts": +/*!*********************!*\ + !*** ../src/ast.ts ***! + \*********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Abstract syntax tree representing a source file once parsed. + * @module ast + */ /***/ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var common_1 = __webpack_require__(/*! ./common */ "../src/common.ts"); +var tokenizer_1 = __webpack_require__(/*! ./tokenizer */ "../src/tokenizer.ts"); +exports.Token = tokenizer_1.Token; +exports.Range = tokenizer_1.Range; +var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); +/** Indicates the kind of a node. */ +var NodeKind; +(function (NodeKind) { + NodeKind[NodeKind["SOURCE"] = 0] = "SOURCE"; + // types + NodeKind[NodeKind["NAMEDTYPE"] = 1] = "NAMEDTYPE"; + NodeKind[NodeKind["FUNCTIONTYPE"] = 2] = "FUNCTIONTYPE"; + NodeKind[NodeKind["TYPENAME"] = 3] = "TYPENAME"; + NodeKind[NodeKind["TYPEPARAMETER"] = 4] = "TYPEPARAMETER"; + NodeKind[NodeKind["PARAMETER"] = 5] = "PARAMETER"; + // expressions + NodeKind[NodeKind["IDENTIFIER"] = 6] = "IDENTIFIER"; + NodeKind[NodeKind["ASSERTION"] = 7] = "ASSERTION"; + NodeKind[NodeKind["BINARY"] = 8] = "BINARY"; + NodeKind[NodeKind["CALL"] = 9] = "CALL"; + NodeKind[NodeKind["CLASS"] = 10] = "CLASS"; + NodeKind[NodeKind["COMMA"] = 11] = "COMMA"; + NodeKind[NodeKind["ELEMENTACCESS"] = 12] = "ELEMENTACCESS"; + NodeKind[NodeKind["FALSE"] = 13] = "FALSE"; + NodeKind[NodeKind["FUNCTION"] = 14] = "FUNCTION"; + NodeKind[NodeKind["INSTANCEOF"] = 15] = "INSTANCEOF"; + NodeKind[NodeKind["LITERAL"] = 16] = "LITERAL"; + NodeKind[NodeKind["NEW"] = 17] = "NEW"; + NodeKind[NodeKind["NULL"] = 18] = "NULL"; + NodeKind[NodeKind["PARENTHESIZED"] = 19] = "PARENTHESIZED"; + NodeKind[NodeKind["PROPERTYACCESS"] = 20] = "PROPERTYACCESS"; + NodeKind[NodeKind["TERNARY"] = 21] = "TERNARY"; + NodeKind[NodeKind["SUPER"] = 22] = "SUPER"; + NodeKind[NodeKind["THIS"] = 23] = "THIS"; + NodeKind[NodeKind["TRUE"] = 24] = "TRUE"; + NodeKind[NodeKind["CONSTRUCTOR"] = 25] = "CONSTRUCTOR"; + NodeKind[NodeKind["UNARYPOSTFIX"] = 26] = "UNARYPOSTFIX"; + NodeKind[NodeKind["UNARYPREFIX"] = 27] = "UNARYPREFIX"; + // statements + NodeKind[NodeKind["BLOCK"] = 28] = "BLOCK"; + NodeKind[NodeKind["BREAK"] = 29] = "BREAK"; + NodeKind[NodeKind["CONTINUE"] = 30] = "CONTINUE"; + NodeKind[NodeKind["DO"] = 31] = "DO"; + NodeKind[NodeKind["EMPTY"] = 32] = "EMPTY"; + NodeKind[NodeKind["EXPORT"] = 33] = "EXPORT"; + NodeKind[NodeKind["EXPORTDEFAULT"] = 34] = "EXPORTDEFAULT"; + NodeKind[NodeKind["EXPORTIMPORT"] = 35] = "EXPORTIMPORT"; + NodeKind[NodeKind["EXPRESSION"] = 36] = "EXPRESSION"; + NodeKind[NodeKind["FOR"] = 37] = "FOR"; + NodeKind[NodeKind["IF"] = 38] = "IF"; + NodeKind[NodeKind["IMPORT"] = 39] = "IMPORT"; + NodeKind[NodeKind["RETURN"] = 40] = "RETURN"; + NodeKind[NodeKind["SWITCH"] = 41] = "SWITCH"; + NodeKind[NodeKind["THROW"] = 42] = "THROW"; + NodeKind[NodeKind["TRY"] = 43] = "TRY"; + NodeKind[NodeKind["VARIABLE"] = 44] = "VARIABLE"; + NodeKind[NodeKind["VOID"] = 45] = "VOID"; + NodeKind[NodeKind["WHILE"] = 46] = "WHILE"; + // declaration statements + NodeKind[NodeKind["CLASSDECLARATION"] = 47] = "CLASSDECLARATION"; + NodeKind[NodeKind["ENUMDECLARATION"] = 48] = "ENUMDECLARATION"; + NodeKind[NodeKind["ENUMVALUEDECLARATION"] = 49] = "ENUMVALUEDECLARATION"; + NodeKind[NodeKind["FIELDDECLARATION"] = 50] = "FIELDDECLARATION"; + NodeKind[NodeKind["FUNCTIONDECLARATION"] = 51] = "FUNCTIONDECLARATION"; + NodeKind[NodeKind["IMPORTDECLARATION"] = 52] = "IMPORTDECLARATION"; + NodeKind[NodeKind["INDEXSIGNATUREDECLARATION"] = 53] = "INDEXSIGNATUREDECLARATION"; + NodeKind[NodeKind["INTERFACEDECLARATION"] = 54] = "INTERFACEDECLARATION"; + NodeKind[NodeKind["METHODDECLARATION"] = 55] = "METHODDECLARATION"; + NodeKind[NodeKind["NAMESPACEDECLARATION"] = 56] = "NAMESPACEDECLARATION"; + NodeKind[NodeKind["TYPEDECLARATION"] = 57] = "TYPEDECLARATION"; + NodeKind[NodeKind["VARIABLEDECLARATION"] = 58] = "VARIABLEDECLARATION"; + // special + NodeKind[NodeKind["DECORATOR"] = 59] = "DECORATOR"; + NodeKind[NodeKind["EXPORTMEMBER"] = 60] = "EXPORTMEMBER"; + NodeKind[NodeKind["SWITCHCASE"] = 61] = "SWITCHCASE"; + NodeKind[NodeKind["COMMENT"] = 62] = "COMMENT"; +})(NodeKind = exports.NodeKind || (exports.NodeKind = {})); +/** Checks if a node represents a constant value. */ +function nodeIsConstantValue(kind) { + switch (kind) { + case NodeKind.LITERAL: + case NodeKind.NULL: + case NodeKind.TRUE: + case NodeKind.FALSE: return true; + } + return false; +} +exports.nodeIsConstantValue = nodeIsConstantValue; +/** Checks if a node might be callable. */ +function nodeIsCallable(kind) { + switch (kind) { + case NodeKind.IDENTIFIER: + case NodeKind.ASSERTION: // if kind=NONNULL + case NodeKind.CALL: + case NodeKind.ELEMENTACCESS: + case NodeKind.PARENTHESIZED: + case NodeKind.PROPERTYACCESS: + case NodeKind.SUPER: return true; + } + return false; +} +exports.nodeIsCallable = nodeIsCallable; +/** Checks if a node might be callable with generic arguments. */ +function nodeIsGenericCallable(kind) { + switch (kind) { + case NodeKind.IDENTIFIER: + case NodeKind.PROPERTYACCESS: return true; + } + return false; +} +exports.nodeIsGenericCallable = nodeIsGenericCallable; +/** Base class of all nodes. */ +var Node = /** @class */ (function () { + function Node() { + } + // types + Node.createTypeName = function (name, range) { + var typeName = new TypeName(); + typeName.range = range; + typeName.identifier = name; + typeName.next = null; + return typeName; + }; + Node.createSimpleTypeName = function (name, range) { + return Node.createTypeName(Node.createIdentifierExpression(name, range), range); + }; + Node.createNamedType = function (name, typeArguments, isNullable, range) { + var type = new NamedTypeNode(); + type.range = range; + type.name = name; + type.typeArguments = typeArguments; + type.isNullable = isNullable; + return type; + }; + Node.createFunctionType = function (parameters, returnType, explicitThisType, isNullable, range) { + var type = new FunctionTypeNode(); + type.range = range; + type.parameters = parameters; + type.returnType = returnType; + type.explicitThisType = explicitThisType; + type.isNullable = isNullable; + return type; + }; + Node.createOmittedType = function (range) { + return Node.createNamedType(Node.createSimpleTypeName("", range), null, false, range); + }; + Node.createTypeParameter = function (name, extendsType, defaultType, range) { + var elem = new TypeParameterNode(); + elem.range = range; + elem.name = name; + elem.extendsType = extendsType; + elem.defaultType = defaultType; + return elem; + }; + Node.createParameter = function (name, type, initializer, kind, range) { + var elem = new ParameterNode(); + elem.range = range; + elem.name = name; + elem.type = type; + elem.initializer = initializer; + elem.parameterKind = kind; + return elem; + }; + // special + Node.createDecorator = function (name, args, range) { + var stmt = new DecoratorNode(); + stmt.range = range; + stmt.name = name; + stmt.arguments = args; + stmt.decoratorKind = decoratorNameToKind(name); + return stmt; + }; + Node.createComment = function (text, kind, range) { + var node = new CommentNode(); + node.range = range; + node.commentKind = kind; + node.text = text; + return node; + }; + // expressions + Node.createIdentifierExpression = function (name, range, isQuoted) { + if (isQuoted === void 0) { isQuoted = false; } + var expr = new IdentifierExpression(); + expr.range = range; + expr.text = name; // TODO: extract from range + expr.symbol = name; // TODO: Symbol.for(name) + expr.isQuoted = isQuoted; + return expr; + }; + Node.createEmptyIdentifierExpression = function (range) { + var expr = new IdentifierExpression(); + expr.range = range; + expr.text = ""; + return expr; + }; + Node.createArrayLiteralExpression = function (elements, range) { + var expr = new ArrayLiteralExpression(); + expr.range = range; + expr.elementExpressions = elements; + return expr; + }; + Node.createAssertionExpression = function (assertionKind, expression, toType, range) { + var expr = new AssertionExpression(); + expr.range = range; + expr.assertionKind = assertionKind; + expr.expression = expression; + expr.toType = toType; + return expr; + }; + Node.createBinaryExpression = function (operator, left, right, range) { + var expr = new BinaryExpression(); + expr.range = range; + expr.operator = operator; + expr.left = left; + expr.right = right; + return expr; + }; + Node.createCallExpression = function (expression, typeArgs, args, range) { + var expr = new CallExpression(); + expr.range = range; + expr.expression = expression; + expr.typeArguments = typeArgs; + expr.arguments = args; + return expr; + }; + Node.createClassExpression = function (declaration) { + var expr = new ClassExpression(); + expr.range = declaration.range; + expr.declaration = declaration; + return expr; + }; + Node.createCommaExpression = function (expressions, range) { + var expr = new CommaExpression(); + expr.range = range; + expr.expressions = expressions; + return expr; + }; + Node.createConstructorExpression = function (range) { + var expr = new ConstructorExpression(); + expr.range = range; + return expr; + }; + Node.createElementAccessExpression = function (expression, element, range) { + var expr = new ElementAccessExpression(); + expr.range = range; + expr.expression = expression; + expr.elementExpression = element; + return expr; + }; + Node.createFalseExpression = function (range) { + var expr = new FalseExpression(); + expr.range = range; + return expr; + }; + Node.createFloatLiteralExpression = function (value, range) { + var expr = new FloatLiteralExpression(); + expr.range = range; + expr.value = value; + return expr; + }; + Node.createFunctionExpression = function (declaration) { + var expr = new FunctionExpression(); + expr.range = declaration.range; + expr.declaration = declaration; + return expr; + }; + Node.createInstanceOfExpression = function (expression, isType, range) { + var expr = new InstanceOfExpression(); + expr.range = range; + expr.expression = expression; + expr.isType = isType; + return expr; + }; + Node.createIntegerLiteralExpression = function (value, range) { + var expr = new IntegerLiteralExpression(); + expr.range = range; + expr.value = value; + return expr; + }; + Node.createNewExpression = function (expression, typeArgs, args, range) { + var expr = new NewExpression(); + expr.range = range; + expr.expression = expression; + expr.typeArguments = typeArgs; + expr.arguments = args; + return expr; + }; + Node.createNullExpression = function (range) { + var expr = new NullExpression(); + expr.range = range; + return expr; + }; + Node.createObjectLiteralExpression = function (names, values, range) { + var expr = new ObjectLiteralExpression(); + expr.range = range; + expr.names = names; + expr.values = values; + return expr; + }; + Node.createParenthesizedExpression = function (expression, range) { + var expr = new ParenthesizedExpression(); + expr.range = range; + expr.expression = expression; + return expr; + }; + Node.createPropertyAccessExpression = function (expression, property, range) { + var expr = new PropertyAccessExpression(); + expr.range = range; + expr.expression = expression; + expr.property = property; + return expr; + }; + Node.createRegexpLiteralExpression = function (pattern, flags, range) { + var expr = new RegexpLiteralExpression(); + expr.range = range; + expr.pattern = pattern; + expr.patternFlags = flags; + return expr; + }; + Node.createTernaryExpression = function (condition, ifThen, ifElse, range) { + var expr = new TernaryExpression(); + expr.range = range; + expr.condition = condition; + expr.ifThen = ifThen; + expr.ifElse = ifElse; + return expr; + }; + Node.createStringLiteralExpression = function (value, range) { + var expr = new StringLiteralExpression(); + expr.range = range; + expr.value = value; + return expr; + }; + Node.createSuperExpression = function (range) { + var expr = new SuperExpression(); + expr.range = range; + return expr; + }; + Node.createThisExpression = function (range) { + var expr = new ThisExpression(); + expr.range = range; + return expr; + }; + Node.createTrueExpression = function (range) { + var expr = new TrueExpression(); + expr.range = range; + return expr; + }; + Node.createUnaryPostfixExpression = function (operator, operand, range) { + var expr = new UnaryPostfixExpression(); + expr.range = range; + expr.operator = operator; + expr.operand = operand; + return expr; + }; + Node.createUnaryPrefixExpression = function (operator, operand, range) { + var expr = new UnaryPrefixExpression(); + expr.range = range; + expr.operator = operator; + expr.operand = operand; + return expr; + }; + // statements + Node.createBlockStatement = function (statements, range) { + var stmt = new BlockStatement(); + stmt.range = range; + stmt.statements = statements; + return stmt; + }; + Node.createBreakStatement = function (label, range) { + var stmt = new BreakStatement(); + stmt.range = range; + stmt.label = label; + return stmt; + }; + Node.createClassDeclaration = function (identifier, typeParameters, extendsType, // can't be a function + implementsTypes, // can't be functions + members, decorators, flags, range) { + var stmt = new ClassDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = identifier; + stmt.typeParameters = typeParameters; + stmt.extendsType = extendsType; + stmt.implementsTypes = implementsTypes; + stmt.members = members; + stmt.decorators = decorators; + return stmt; + }; + Node.createContinueStatement = function (label, range) { + var stmt = new ContinueStatement(); + stmt.range = range; + stmt.label = label; + return stmt; + }; + Node.createDoStatement = function (statement, condition, range) { + var stmt = new DoStatement(); + stmt.range = range; + stmt.statement = statement; + stmt.condition = condition; + return stmt; + }; + Node.createEmptyStatement = function (range) { + var stmt = new EmptyStatement(); + stmt.range = range; + return stmt; + }; + Node.createEnumDeclaration = function (name, members, decorators, flags, range) { + var stmt = new EnumDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.values = members; + stmt.decorators = decorators; + return stmt; + }; + Node.createEnumValueDeclaration = function (name, value, flags, range) { + var stmt = new EnumValueDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.value = value; + return stmt; + }; + Node.createExportStatement = function (members, path, isDeclare, range) { + var stmt = new ExportStatement(); + stmt.range = range; + stmt.members = members; + stmt.path = path; + if (path) { + var normalizedPath = util_1.normalizePath(path.value); + if (path.value.startsWith(".")) { // relative + stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); + } + else { // absolute + if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { + normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; + } + stmt.normalizedPath = normalizedPath; + } + stmt.internalPath = mangleInternalPath(stmt.normalizedPath); + } + else { + stmt.normalizedPath = null; + stmt.internalPath = null; + } + stmt.isDeclare = isDeclare; + return stmt; + }; + Node.createExportDefaultStatement = function (declaration, range) { + var stmt = new ExportDefaultStatement(); + stmt.declaration = declaration; + stmt.range = range; + return stmt; + }; + Node.createExportImportStatement = function (name, externalName, range) { + var stmt = new ExportImportStatement(); + stmt.range = range; + stmt.name = name; + stmt.externalName = externalName; + return stmt; + }; + Node.createExportMember = function (name, externalName, range) { + var elem = new ExportMember(); + elem.range = range; + elem.localName = name; + if (!externalName) + externalName = name; + elem.exportedName = externalName; + return elem; + }; + Node.createExpressionStatement = function (expression) { + var stmt = new ExpressionStatement(); + stmt.range = expression.range; + stmt.expression = expression; + return stmt; + }; + Node.createIfStatement = function (condition, ifTrue, ifFalse, range) { + var stmt = new IfStatement(); + stmt.range = range; + stmt.condition = condition; + stmt.ifTrue = ifTrue; + stmt.ifFalse = ifFalse; + return stmt; + }; + Node.createImportStatement = function (decls, path, range) { + var stmt = new ImportStatement(); + stmt.range = range; + stmt.declarations = decls; + stmt.namespaceName = null; + stmt.path = path; + var normalizedPath = util_1.normalizePath(path.value); + if (path.value.startsWith(".")) { // relative in project + stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); + } + else { // absolute in library + if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { + normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; + } + stmt.normalizedPath = normalizedPath; + } + stmt.internalPath = mangleInternalPath(stmt.normalizedPath); + return stmt; + }; + Node.createImportStatementWithWildcard = function (identifier, path, range) { + var stmt = new ImportStatement(); + stmt.range = range; + stmt.declarations = null; + stmt.namespaceName = identifier; + stmt.path = path; + var normalizedPath = util_1.normalizePath(path.value); + if (path.value.startsWith(".")) { + stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); + } + else { + if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { + normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; + } + stmt.normalizedPath = normalizedPath; + } + stmt.internalPath = mangleInternalPath(stmt.normalizedPath); + return stmt; + }; + Node.createImportDeclaration = function (foreignName, name, range) { + var elem = new ImportDeclaration(); + elem.range = range; + elem.foreignName = foreignName; + if (!name) + name = foreignName; + elem.name = name; + return elem; + }; + Node.createInterfaceDeclaration = function (name, typeParameters, extendsType, // can't be a function + members, decorators, flags, range) { + var stmt = new InterfaceDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.typeParameters = typeParameters; + stmt.extendsType = extendsType; + stmt.members = members; + stmt.decorators = decorators; + return stmt; + }; + Node.createFieldDeclaration = function (name, type, initializer, decorators, flags, range) { + var stmt = new FieldDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.type = type; + stmt.initializer = initializer; + stmt.decorators = decorators; + return stmt; + }; + Node.createForStatement = function (initializer, condition, incrementor, statement, range) { + var stmt = new ForStatement(); + stmt.range = range; + stmt.initializer = initializer; + stmt.condition = condition; + stmt.incrementor = incrementor; + stmt.statement = statement; + return stmt; + }; + Node.createFunctionDeclaration = function (name, typeParameters, signature, body, decorators, flags, arrowKind, range) { + var stmt = new FunctionDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.typeParameters = typeParameters; + stmt.signature = signature; + stmt.body = body; + stmt.decorators = decorators; + stmt.arrowKind = arrowKind; + return stmt; + }; + Node.createIndexSignatureDeclaration = function (keyType, valueType, range) { + var elem = new IndexSignatureDeclaration(); + elem.range = range; + elem.keyType = keyType; + elem.valueType = valueType; + return elem; + }; + Node.createMethodDeclaration = function (name, typeParameters, signature, body, decorators, flags, range) { + var stmt = new MethodDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.typeParameters = typeParameters; + stmt.signature = signature; + stmt.body = body; + stmt.decorators = decorators; + return stmt; + }; + Node.createNamespaceDeclaration = function (name, members, decorators, flags, range) { + var stmt = new NamespaceDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.members = members; + stmt.decorators = decorators; + return stmt; + }; + Node.createReturnStatement = function (value, range) { + var stmt = new ReturnStatement(); + stmt.range = range; + stmt.value = value; + return stmt; + }; + Node.createSwitchStatement = function (condition, cases, range) { + var stmt = new SwitchStatement(); + stmt.range = range; + stmt.condition = condition; + stmt.cases = cases; + return stmt; + }; + Node.createSwitchCase = function (label, statements, range) { + var elem = new SwitchCase(); + elem.range = range; + elem.label = label; + elem.statements = statements; + return elem; + }; + Node.createThrowStatement = function (value, range) { + var stmt = new ThrowStatement(); + stmt.range = range; + stmt.value = value; + return stmt; + }; + Node.createTryStatement = function (statements, catchVariable, catchStatements, finallyStatements, range) { + var stmt = new TryStatement(); + stmt.range = range; + stmt.statements = statements; + stmt.catchVariable = catchVariable; + stmt.catchStatements = catchStatements; + stmt.finallyStatements = finallyStatements; + return stmt; + }; + Node.createTypeDeclaration = function (name, typeParameters, alias, decorators, flags, range) { + var stmt = new TypeDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.typeParameters = typeParameters; + stmt.type = alias; + stmt.decorators = decorators; + return stmt; + }; + Node.createVariableStatement = function (declarations, decorators, range) { + var stmt = new VariableStatement(); + stmt.range = range; + stmt.declarations = declarations; + stmt.decorators = decorators; + return stmt; + }; + Node.createVariableDeclaration = function (name, type, initializer, decorators, flags, range) { + var elem = new VariableDeclaration(); + elem.range = range; + elem.flags = flags; + elem.name = name; + elem.type = type; + elem.initializer = initializer; + elem.decorators = decorators; // inherited + return elem; + }; + Node.createVoidStatement = function (expression, range) { + var stmt = new VoidStatement(); + stmt.range = range; + stmt.expression = expression; + return stmt; + }; + Node.createWhileStatement = function (condition, statement, range) { + var stmt = new WhileStatement(); + stmt.range = range; + stmt.condition = condition; + stmt.statement = statement; + return stmt; + }; + return Node; +}()); +exports.Node = Node; +// types +var TypeNode = /** @class */ (function (_super) { + __extends(TypeNode, _super); + function TypeNode() { + return _super !== null && _super.apply(this, arguments) || this; + } + return TypeNode; +}(Node)); +exports.TypeNode = TypeNode; +/** Represents a type name. */ +var TypeName = /** @class */ (function (_super) { + __extends(TypeName, _super); + function TypeName() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TYPENAME; + return _this; + } + return TypeName; +}(Node)); +exports.TypeName = TypeName; +/** Represents a named type. */ +var NamedTypeNode = /** @class */ (function (_super) { + __extends(NamedTypeNode, _super); + function NamedTypeNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.NAMEDTYPE; + return _this; + } + return NamedTypeNode; +}(TypeNode)); +exports.NamedTypeNode = NamedTypeNode; +/** Represents a function type. */ +var FunctionTypeNode = /** @class */ (function (_super) { + __extends(FunctionTypeNode, _super); + function FunctionTypeNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FUNCTIONTYPE; + return _this; + } + return FunctionTypeNode; +}(TypeNode)); +exports.FunctionTypeNode = FunctionTypeNode; +/** Represents a type parameter. */ +var TypeParameterNode = /** @class */ (function (_super) { + __extends(TypeParameterNode, _super); + function TypeParameterNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TYPEPARAMETER; + return _this; + } + return TypeParameterNode; +}(Node)); +exports.TypeParameterNode = TypeParameterNode; +/** Represents the kind of a parameter. */ +var ParameterKind; +(function (ParameterKind) { + /** No specific flags. */ + ParameterKind[ParameterKind["DEFAULT"] = 0] = "DEFAULT"; + /** Is an optional parameter. */ + ParameterKind[ParameterKind["OPTIONAL"] = 1] = "OPTIONAL"; + /** Is a rest parameter. */ + ParameterKind[ParameterKind["REST"] = 2] = "REST"; +})(ParameterKind = exports.ParameterKind || (exports.ParameterKind = {})); +/** Represents a function parameter. */ +var ParameterNode = /** @class */ (function (_super) { + __extends(ParameterNode, _super); + function ParameterNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.PARAMETER; + /** Implicit field declaration, if applicable. */ + _this.implicitFieldDeclaration = null; + /** Common flags indicating specific traits. */ + _this.flags = common_1.CommonFlags.NONE; + return _this; + } + /** Tests if this node has the specified flag or flags. */ + ParameterNode.prototype.is = function (flag) { return (this.flags & flag) == flag; }; + /** Tests if this node has one of the specified flags. */ + ParameterNode.prototype.isAny = function (flag) { return (this.flags & flag) != 0; }; + /** Sets a specific flag or flags. */ + ParameterNode.prototype.set = function (flag) { this.flags |= flag; }; + return ParameterNode; +}(Node)); +exports.ParameterNode = ParameterNode; +// special +/** Built-in decorator kinds. */ +var DecoratorKind; +(function (DecoratorKind) { + DecoratorKind[DecoratorKind["CUSTOM"] = 0] = "CUSTOM"; + DecoratorKind[DecoratorKind["GLOBAL"] = 1] = "GLOBAL"; + DecoratorKind[DecoratorKind["OPERATOR"] = 2] = "OPERATOR"; + DecoratorKind[DecoratorKind["OPERATOR_BINARY"] = 3] = "OPERATOR_BINARY"; + DecoratorKind[DecoratorKind["OPERATOR_PREFIX"] = 4] = "OPERATOR_PREFIX"; + DecoratorKind[DecoratorKind["OPERATOR_POSTFIX"] = 5] = "OPERATOR_POSTFIX"; + DecoratorKind[DecoratorKind["UNMANAGED"] = 6] = "UNMANAGED"; + DecoratorKind[DecoratorKind["SEALED"] = 7] = "SEALED"; + DecoratorKind[DecoratorKind["INLINE"] = 8] = "INLINE"; + DecoratorKind[DecoratorKind["EXTERNAL"] = 9] = "EXTERNAL"; + DecoratorKind[DecoratorKind["BUILTIN"] = 10] = "BUILTIN"; + DecoratorKind[DecoratorKind["LAZY"] = 11] = "LAZY"; + DecoratorKind[DecoratorKind["UNSAFE"] = 12] = "UNSAFE"; +})(DecoratorKind = exports.DecoratorKind || (exports.DecoratorKind = {})); +/** Returns the kind of the specified decorator. Defaults to {@link DecoratorKind.CUSTOM}. */ +function decoratorNameToKind(name) { + // @global, @inline, @operator, @sealed, @unmanaged + if (name.kind == NodeKind.IDENTIFIER) { + var nameStr = name.text; + assert(nameStr.length); + switch (nameStr.charCodeAt(0)) { + case 98 /* b */: { + if (nameStr == "builtin") + return DecoratorKind.BUILTIN; + break; + } + case 101 /* e */: { + if (nameStr == "external") + return DecoratorKind.EXTERNAL; + break; + } + case 103 /* g */: { + if (nameStr == "global") + return DecoratorKind.GLOBAL; + break; + } + case 105 /* i */: { + if (nameStr == "inline") + return DecoratorKind.INLINE; + break; + } + case 108 /* l */: { + if (nameStr == "lazy") + return DecoratorKind.LAZY; + break; + } + case 111 /* o */: { + if (nameStr == "operator") + return DecoratorKind.OPERATOR; + break; + } + case 115 /* s */: { + if (nameStr == "sealed") + return DecoratorKind.SEALED; + break; + } + case 117 /* u */: { + if (nameStr == "unmanaged") + return DecoratorKind.UNMANAGED; + if (nameStr == "unsafe") + return DecoratorKind.UNSAFE; + break; + } + } + } + else if (name.kind == NodeKind.PROPERTYACCESS && + name.expression.kind == NodeKind.IDENTIFIER) { + var nameStr = name.expression.text; + assert(nameStr.length); + var propStr = name.property.text; + assert(propStr.length); + // @operator.binary, @operator.prefix, @operator.postfix + if (nameStr == "operator") { + switch (propStr.charCodeAt(0)) { + case 98 /* b */: { + if (propStr == "binary") + return DecoratorKind.OPERATOR_BINARY; + break; + } + case 112 /* p */: { + switch (propStr) { + case "prefix": return DecoratorKind.OPERATOR_PREFIX; + case "postfix": return DecoratorKind.OPERATOR_POSTFIX; + } + break; + } + } + } + } + return DecoratorKind.CUSTOM; +} +exports.decoratorNameToKind = decoratorNameToKind; +/** Represents a decorator. */ +var DecoratorNode = /** @class */ (function (_super) { + __extends(DecoratorNode, _super); + function DecoratorNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.DECORATOR; + return _this; + } + return DecoratorNode; +}(Node)); +exports.DecoratorNode = DecoratorNode; +/** Comment kinds. */ +var CommentKind; +(function (CommentKind) { + /** Line comment. */ + CommentKind[CommentKind["LINE"] = 0] = "LINE"; + /** Triple-slash comment. */ + CommentKind[CommentKind["TRIPLE"] = 1] = "TRIPLE"; + /** Block comment. */ + CommentKind[CommentKind["BLOCK"] = 2] = "BLOCK"; +})(CommentKind = exports.CommentKind || (exports.CommentKind = {})); +/** Represents a comment. */ +var CommentNode = /** @class */ (function (_super) { + __extends(CommentNode, _super); + function CommentNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.COMMENT; + return _this; + } + return CommentNode; +}(Node)); +exports.CommentNode = CommentNode; +// expressions +/** Base class of all expression nodes. */ +var Expression = /** @class */ (function (_super) { + __extends(Expression, _super); + function Expression() { + return _super !== null && _super.apply(this, arguments) || this; + } + return Expression; +}(Node)); +exports.Expression = Expression; +/** Represents an identifier expression. */ +var IdentifierExpression = /** @class */ (function (_super) { + __extends(IdentifierExpression, _super); + function IdentifierExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.IDENTIFIER; + return _this; + } + return IdentifierExpression; +}(Expression)); +exports.IdentifierExpression = IdentifierExpression; +/** Indicates the kind of a literal. */ +var LiteralKind; +(function (LiteralKind) { + LiteralKind[LiteralKind["FLOAT"] = 0] = "FLOAT"; + LiteralKind[LiteralKind["INTEGER"] = 1] = "INTEGER"; + LiteralKind[LiteralKind["STRING"] = 2] = "STRING"; + LiteralKind[LiteralKind["REGEXP"] = 3] = "REGEXP"; + LiteralKind[LiteralKind["ARRAY"] = 4] = "ARRAY"; + LiteralKind[LiteralKind["OBJECT"] = 5] = "OBJECT"; +})(LiteralKind = exports.LiteralKind || (exports.LiteralKind = {})); +/** Base class of all literal expressions. */ +var LiteralExpression = /** @class */ (function (_super) { + __extends(LiteralExpression, _super); + function LiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.LITERAL; + return _this; + } + return LiteralExpression; +}(Expression)); +exports.LiteralExpression = LiteralExpression; +/** Represents an `[]` literal expression. */ +var ArrayLiteralExpression = /** @class */ (function (_super) { + __extends(ArrayLiteralExpression, _super); + function ArrayLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.ARRAY; + return _this; + } + return ArrayLiteralExpression; +}(LiteralExpression)); +exports.ArrayLiteralExpression = ArrayLiteralExpression; +/** Indicates the kind of an assertion. */ +var AssertionKind; +(function (AssertionKind) { + AssertionKind[AssertionKind["PREFIX"] = 0] = "PREFIX"; + AssertionKind[AssertionKind["AS"] = 1] = "AS"; + AssertionKind[AssertionKind["NONNULL"] = 2] = "NONNULL"; +})(AssertionKind = exports.AssertionKind || (exports.AssertionKind = {})); +/** Represents an assertion expression. */ +var AssertionExpression = /** @class */ (function (_super) { + __extends(AssertionExpression, _super); + function AssertionExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.ASSERTION; + return _this; + } + return AssertionExpression; +}(Expression)); +exports.AssertionExpression = AssertionExpression; +/** Represents a binary expression. */ +var BinaryExpression = /** @class */ (function (_super) { + __extends(BinaryExpression, _super); + function BinaryExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.BINARY; + return _this; + } + return BinaryExpression; +}(Expression)); +exports.BinaryExpression = BinaryExpression; +/** Represents a call expression. */ +var CallExpression = /** @class */ (function (_super) { + __extends(CallExpression, _super); + function CallExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.CALL; + return _this; + } + Object.defineProperty(CallExpression.prototype, "typeArgumentsRange", { + /** Gets the type arguments range for reporting. */ + get: function () { + var typeArguments = this.typeArguments; + var numTypeArguments; + if (typeArguments && (numTypeArguments = typeArguments.length)) { + return tokenizer_1.Range.join(typeArguments[0].range, typeArguments[numTypeArguments - 1].range); + } + return this.expression.range; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CallExpression.prototype, "argumentsRange", { + /** Gets the arguments range for reporting. */ + get: function () { + var args = this.arguments; + var numArguments = args.length; + if (numArguments) { + return tokenizer_1.Range.join(args[0].range, args[numArguments - 1].range); + } + return this.expression.range; + }, + enumerable: true, + configurable: true + }); + return CallExpression; +}(Expression)); +exports.CallExpression = CallExpression; +/** Represents a class expression using the 'class' keyword. */ +var ClassExpression = /** @class */ (function (_super) { + __extends(ClassExpression, _super); + function ClassExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.CLASS; + return _this; + } + return ClassExpression; +}(Expression)); +exports.ClassExpression = ClassExpression; +/** Represents a comma expression composed of multiple expressions. */ +var CommaExpression = /** @class */ (function (_super) { + __extends(CommaExpression, _super); + function CommaExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.COMMA; + return _this; + } + return CommaExpression; +}(Expression)); +exports.CommaExpression = CommaExpression; +/** Represents a `constructor` expression. */ +var ConstructorExpression = /** @class */ (function (_super) { + __extends(ConstructorExpression, _super); + function ConstructorExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.CONSTRUCTOR; + _this.text = "constructor"; + _this.symbol = common_1.CommonSymbols.constructor; + return _this; + } + return ConstructorExpression; +}(IdentifierExpression)); +exports.ConstructorExpression = ConstructorExpression; +/** Represents an element access expression, e.g., array access. */ +var ElementAccessExpression = /** @class */ (function (_super) { + __extends(ElementAccessExpression, _super); + function ElementAccessExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.ELEMENTACCESS; + return _this; + } + return ElementAccessExpression; +}(Expression)); +exports.ElementAccessExpression = ElementAccessExpression; +/** Represents a float literal expression. */ +var FloatLiteralExpression = /** @class */ (function (_super) { + __extends(FloatLiteralExpression, _super); + function FloatLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.FLOAT; + return _this; + } + return FloatLiteralExpression; +}(LiteralExpression)); +exports.FloatLiteralExpression = FloatLiteralExpression; +/** Represents a function expression using the 'function' keyword. */ +var FunctionExpression = /** @class */ (function (_super) { + __extends(FunctionExpression, _super); + function FunctionExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FUNCTION; + return _this; + } + return FunctionExpression; +}(Expression)); +exports.FunctionExpression = FunctionExpression; +/** Represents an `instanceof` expression. */ +var InstanceOfExpression = /** @class */ (function (_super) { + __extends(InstanceOfExpression, _super); + function InstanceOfExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.INSTANCEOF; + return _this; + } + return InstanceOfExpression; +}(Expression)); +exports.InstanceOfExpression = InstanceOfExpression; +/** Represents an integer literal expression. */ +var IntegerLiteralExpression = /** @class */ (function (_super) { + __extends(IntegerLiteralExpression, _super); + function IntegerLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.INTEGER; + return _this; + } + return IntegerLiteralExpression; +}(LiteralExpression)); +exports.IntegerLiteralExpression = IntegerLiteralExpression; +/** Represents a `new` expression. Like a call but with its own kind. */ +var NewExpression = /** @class */ (function (_super) { + __extends(NewExpression, _super); + function NewExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.NEW; + return _this; + } + return NewExpression; +}(CallExpression)); +exports.NewExpression = NewExpression; +/** Represents a `null` expression. */ +var NullExpression = /** @class */ (function (_super) { + __extends(NullExpression, _super); + function NullExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.NULL; + _this.text = "null"; + _this.symbol = common_1.CommonSymbols.null_; + return _this; + } + return NullExpression; +}(IdentifierExpression)); +exports.NullExpression = NullExpression; +/** Represents an object literal expression. */ +var ObjectLiteralExpression = /** @class */ (function (_super) { + __extends(ObjectLiteralExpression, _super); + function ObjectLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.OBJECT; + return _this; + } + return ObjectLiteralExpression; +}(LiteralExpression)); +exports.ObjectLiteralExpression = ObjectLiteralExpression; +/** Represents a parenthesized expression. */ +var ParenthesizedExpression = /** @class */ (function (_super) { + __extends(ParenthesizedExpression, _super); + function ParenthesizedExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.PARENTHESIZED; + return _this; + } + return ParenthesizedExpression; +}(Expression)); +exports.ParenthesizedExpression = ParenthesizedExpression; +/** Represents a property access expression. */ +var PropertyAccessExpression = /** @class */ (function (_super) { + __extends(PropertyAccessExpression, _super); + function PropertyAccessExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.PROPERTYACCESS; + return _this; + } + return PropertyAccessExpression; +}(Expression)); +exports.PropertyAccessExpression = PropertyAccessExpression; +/** Represents a regular expression literal expression. */ +var RegexpLiteralExpression = /** @class */ (function (_super) { + __extends(RegexpLiteralExpression, _super); + function RegexpLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.REGEXP; + return _this; + } + return RegexpLiteralExpression; +}(LiteralExpression)); +exports.RegexpLiteralExpression = RegexpLiteralExpression; +/** Represents a ternary expression, i.e., short if notation. */ +var TernaryExpression = /** @class */ (function (_super) { + __extends(TernaryExpression, _super); + function TernaryExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TERNARY; + return _this; + } + return TernaryExpression; +}(Expression)); +exports.TernaryExpression = TernaryExpression; +/** Represents a string literal expression. */ +var StringLiteralExpression = /** @class */ (function (_super) { + __extends(StringLiteralExpression, _super); + function StringLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.STRING; + return _this; + } + return StringLiteralExpression; +}(LiteralExpression)); +exports.StringLiteralExpression = StringLiteralExpression; +/** Represents a `super` expression. */ +var SuperExpression = /** @class */ (function (_super) { + __extends(SuperExpression, _super); + function SuperExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.SUPER; + _this.text = "super"; + _this.symbol = common_1.CommonSymbols.super_; + return _this; + } + return SuperExpression; +}(IdentifierExpression)); +exports.SuperExpression = SuperExpression; +/** Represents a `this` expression. */ +var ThisExpression = /** @class */ (function (_super) { + __extends(ThisExpression, _super); + function ThisExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.THIS; + _this.text = "this"; + _this.symbol = common_1.CommonSymbols.this_; + return _this; + } + return ThisExpression; +}(IdentifierExpression)); +exports.ThisExpression = ThisExpression; +/** Represents a `true` expression. */ +var TrueExpression = /** @class */ (function (_super) { + __extends(TrueExpression, _super); + function TrueExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TRUE; + _this.text = "true"; + _this.symbol = common_1.CommonSymbols.true_; + return _this; + } + return TrueExpression; +}(IdentifierExpression)); +exports.TrueExpression = TrueExpression; +/** Represents a `false` expression. */ +var FalseExpression = /** @class */ (function (_super) { + __extends(FalseExpression, _super); + function FalseExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FALSE; + _this.text = "false"; + _this.symbol = common_1.CommonSymbols.false_; + return _this; + } + return FalseExpression; +}(IdentifierExpression)); +exports.FalseExpression = FalseExpression; +/** Base class of all unary expressions. */ +var UnaryExpression = /** @class */ (function (_super) { + __extends(UnaryExpression, _super); + function UnaryExpression() { + return _super !== null && _super.apply(this, arguments) || this; + } + return UnaryExpression; +}(Expression)); +exports.UnaryExpression = UnaryExpression; +/** Represents a unary postfix expression, e.g. a postfix increment. */ +var UnaryPostfixExpression = /** @class */ (function (_super) { + __extends(UnaryPostfixExpression, _super); + function UnaryPostfixExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.UNARYPOSTFIX; + return _this; + } + return UnaryPostfixExpression; +}(UnaryExpression)); +exports.UnaryPostfixExpression = UnaryPostfixExpression; +/** Represents a unary prefix expression, e.g. a negation. */ +var UnaryPrefixExpression = /** @class */ (function (_super) { + __extends(UnaryPrefixExpression, _super); + function UnaryPrefixExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.UNARYPREFIX; + return _this; + } + return UnaryPrefixExpression; +}(UnaryExpression)); +exports.UnaryPrefixExpression = UnaryPrefixExpression; +// statements +/** Base class of all statement nodes. */ +var Statement = /** @class */ (function (_super) { + __extends(Statement, _super); + function Statement() { + return _super !== null && _super.apply(this, arguments) || this; + } + return Statement; +}(Node)); +exports.Statement = Statement; +/** Indicates the specific kind of a source. */ +var SourceKind; +(function (SourceKind) { + /** User-provided file. */ + SourceKind[SourceKind["USER"] = 0] = "USER"; + /** User-provided entry file. */ + SourceKind[SourceKind["USER_ENTRY"] = 1] = "USER_ENTRY"; + /** Library-provided file. */ + SourceKind[SourceKind["LIBRARY"] = 2] = "LIBRARY"; + /** Library-provided entry file. */ + SourceKind[SourceKind["LIBRARY_ENTRY"] = 3] = "LIBRARY_ENTRY"; +})(SourceKind = exports.SourceKind || (exports.SourceKind = {})); +/** A top-level source node. */ +var Source = /** @class */ (function (_super) { + __extends(Source, _super); + /** Constructs a new source node. */ + function Source(normalizedPath, text, kind) { + var _this = _super.call(this) || this; + _this.kind = NodeKind.SOURCE; + _this.parent = null; + /** Tokenizer reference. */ + _this.tokenizer = null; + /** Source map index. */ + _this.debugInfoIndex = -1; + /** Re-exported sources. */ + _this.exportPaths = null; + _this.sourceKind = kind; + _this.normalizedPath = normalizedPath; + var internalPath = mangleInternalPath(_this.normalizedPath); + _this.internalPath = internalPath; + var pos = internalPath.lastIndexOf(common_1.PATH_DELIMITER); + _this.simplePath = pos >= 0 ? internalPath.substring(pos + 1) : internalPath; + _this.statements = new Array(); + _this.range = new tokenizer_1.Range(_this, 0, text.length); + _this.text = text; + return _this; + } + Object.defineProperty(Source.prototype, "isLibrary", { + get: function () { + var kind = this.sourceKind; + return kind == SourceKind.LIBRARY || kind == SourceKind.LIBRARY_ENTRY; + }, + enumerable: true, + configurable: true + }); + return Source; +}(Node)); +exports.Source = Source; +/** Base class of all declaration statements. */ +var DeclarationStatement = /** @class */ (function (_super) { + __extends(DeclarationStatement, _super); + function DeclarationStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + /** Array of decorators. */ + _this.decorators = null; + /** Common flags indicating specific traits. */ + _this.flags = common_1.CommonFlags.NONE; + return _this; + } + /** Tests if this node has the specified flag or flags. */ + DeclarationStatement.prototype.is = function (flag) { return (this.flags & flag) == flag; }; + /** Tests if this node has one of the specified flags. */ + DeclarationStatement.prototype.isAny = function (flag) { return (this.flags & flag) != 0; }; + /** Sets a specific flag or flags. */ + DeclarationStatement.prototype.set = function (flag) { this.flags |= flag; }; + return DeclarationStatement; +}(Statement)); +exports.DeclarationStatement = DeclarationStatement; +/** Represents an index signature declaration. */ +var IndexSignatureDeclaration = /** @class */ (function (_super) { + __extends(IndexSignatureDeclaration, _super); + function IndexSignatureDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.INDEXSIGNATUREDECLARATION; + return _this; + } + return IndexSignatureDeclaration; +}(DeclarationStatement)); +exports.IndexSignatureDeclaration = IndexSignatureDeclaration; +/** Base class of all variable-like declaration statements. */ +var VariableLikeDeclarationStatement = /** @class */ (function (_super) { + __extends(VariableLikeDeclarationStatement, _super); + function VariableLikeDeclarationStatement() { + return _super !== null && _super.apply(this, arguments) || this; + } + return VariableLikeDeclarationStatement; +}(DeclarationStatement)); +exports.VariableLikeDeclarationStatement = VariableLikeDeclarationStatement; +/** Represents a block statement. */ +var BlockStatement = /** @class */ (function (_super) { + __extends(BlockStatement, _super); + function BlockStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.BLOCK; + return _this; + } + return BlockStatement; +}(Statement)); +exports.BlockStatement = BlockStatement; +/** Represents a `break` statement. */ +var BreakStatement = /** @class */ (function (_super) { + __extends(BreakStatement, _super); + function BreakStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.BREAK; + return _this; + } + return BreakStatement; +}(Statement)); +exports.BreakStatement = BreakStatement; +/** Represents a `class` declaration. */ +var ClassDeclaration = /** @class */ (function (_super) { + __extends(ClassDeclaration, _super); + function ClassDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.CLASSDECLARATION; + return _this; + } + Object.defineProperty(ClassDeclaration.prototype, "isGeneric", { + get: function () { + var typeParameters = this.typeParameters; + return typeParameters != null && typeParameters.length > 0; + }, + enumerable: true, + configurable: true + }); + return ClassDeclaration; +}(DeclarationStatement)); +exports.ClassDeclaration = ClassDeclaration; +/** Represents a `continue` statement. */ +var ContinueStatement = /** @class */ (function (_super) { + __extends(ContinueStatement, _super); + function ContinueStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.CONTINUE; + return _this; + } + return ContinueStatement; +}(Statement)); +exports.ContinueStatement = ContinueStatement; +/** Represents a `do` statement. */ +var DoStatement = /** @class */ (function (_super) { + __extends(DoStatement, _super); + function DoStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.DO; + return _this; + } + return DoStatement; +}(Statement)); +exports.DoStatement = DoStatement; +/** Represents an empty statement, i.e., a semicolon terminating nothing. */ +var EmptyStatement = /** @class */ (function (_super) { + __extends(EmptyStatement, _super); + function EmptyStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EMPTY; + return _this; + } + return EmptyStatement; +}(Statement)); +exports.EmptyStatement = EmptyStatement; +/** Represents an `enum` declaration. */ +var EnumDeclaration = /** @class */ (function (_super) { + __extends(EnumDeclaration, _super); + function EnumDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.ENUMDECLARATION; + return _this; + } + return EnumDeclaration; +}(DeclarationStatement)); +exports.EnumDeclaration = EnumDeclaration; +/** Represents a value of an `enum` declaration. */ +var EnumValueDeclaration = /** @class */ (function (_super) { + __extends(EnumValueDeclaration, _super); + function EnumValueDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.ENUMVALUEDECLARATION; + return _this; + } + return EnumValueDeclaration; +}(VariableLikeDeclarationStatement)); +exports.EnumValueDeclaration = EnumValueDeclaration; +/** Represents an `export import` statement of an interface. */ +var ExportImportStatement = /** @class */ (function (_super) { + __extends(ExportImportStatement, _super); + function ExportImportStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EXPORTIMPORT; + return _this; + } + return ExportImportStatement; +}(Node)); +exports.ExportImportStatement = ExportImportStatement; +/** Represents a member of an `export` statement. */ +var ExportMember = /** @class */ (function (_super) { + __extends(ExportMember, _super); + function ExportMember() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EXPORTMEMBER; + return _this; + } + return ExportMember; +}(Node)); +exports.ExportMember = ExportMember; +/** Represents an `export` statement. */ +var ExportStatement = /** @class */ (function (_super) { + __extends(ExportStatement, _super); + function ExportStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EXPORT; + return _this; + } + return ExportStatement; +}(Statement)); +exports.ExportStatement = ExportStatement; +/** Represents an `export default` statement. */ +var ExportDefaultStatement = /** @class */ (function (_super) { + __extends(ExportDefaultStatement, _super); + function ExportDefaultStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EXPORTDEFAULT; + return _this; + } + return ExportDefaultStatement; +}(Statement)); +exports.ExportDefaultStatement = ExportDefaultStatement; +/** Represents an expression that is used as a statement. */ +var ExpressionStatement = /** @class */ (function (_super) { + __extends(ExpressionStatement, _super); + function ExpressionStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EXPRESSION; + return _this; + } + return ExpressionStatement; +}(Statement)); +exports.ExpressionStatement = ExpressionStatement; +/** Represents a field declaration within a `class`. */ +var FieldDeclaration = /** @class */ (function (_super) { + __extends(FieldDeclaration, _super); + function FieldDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FIELDDECLARATION; + /** Parameter index if declared as a constructor parameter, otherwise `-1`. */ + _this.parameterIndex = -1; + return _this; + } + return FieldDeclaration; +}(VariableLikeDeclarationStatement)); +exports.FieldDeclaration = FieldDeclaration; +/** Represents a `for` statement. */ +var ForStatement = /** @class */ (function (_super) { + __extends(ForStatement, _super); + function ForStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FOR; + return _this; + } + return ForStatement; +}(Statement)); +exports.ForStatement = ForStatement; +/** Indicates the kind of an array function. */ +var ArrowKind; +(function (ArrowKind) { + /** Not an arrow function. */ + ArrowKind[ArrowKind["NONE"] = 0] = "NONE"; + /** Parenthesized parameter list. */ + ArrowKind[ArrowKind["ARROW_PARENTHESIZED"] = 1] = "ARROW_PARENTHESIZED"; + /** Single parameter without parenthesis. */ + ArrowKind[ArrowKind["ARROW_SINGLE"] = 2] = "ARROW_SINGLE"; +})(ArrowKind = exports.ArrowKind || (exports.ArrowKind = {})); +/** Represents a `function` declaration. */ +var FunctionDeclaration = /** @class */ (function (_super) { + __extends(FunctionDeclaration, _super); + function FunctionDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FUNCTIONDECLARATION; + return _this; + } + Object.defineProperty(FunctionDeclaration.prototype, "isGeneric", { + get: function () { + var typeParameters = this.typeParameters; + return typeParameters != null && typeParameters.length > 0; + }, + enumerable: true, + configurable: true + }); + /** Clones this function declaration. */ + FunctionDeclaration.prototype.clone = function () { + return Node.createFunctionDeclaration(this.name, this.typeParameters, this.signature, this.body, this.decorators, this.flags, this.arrowKind, this.range); + }; + return FunctionDeclaration; +}(DeclarationStatement)); +exports.FunctionDeclaration = FunctionDeclaration; +/** Represents an `if` statement. */ +var IfStatement = /** @class */ (function (_super) { + __extends(IfStatement, _super); + function IfStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.IF; + return _this; + } + return IfStatement; +}(Statement)); +exports.IfStatement = IfStatement; +/** Represents an `import` declaration part of an {@link ImportStatement}. */ +var ImportDeclaration = /** @class */ (function (_super) { + __extends(ImportDeclaration, _super); + function ImportDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.IMPORTDECLARATION; + return _this; + } + return ImportDeclaration; +}(DeclarationStatement)); +exports.ImportDeclaration = ImportDeclaration; +/** Represents an `import` statement. */ +var ImportStatement = /** @class */ (function (_super) { + __extends(ImportStatement, _super); + function ImportStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.IMPORT; + return _this; + } + return ImportStatement; +}(Statement)); +exports.ImportStatement = ImportStatement; +/** Represents an `interfarce` declaration. */ +var InterfaceDeclaration = /** @class */ (function (_super) { + __extends(InterfaceDeclaration, _super); + function InterfaceDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.INTERFACEDECLARATION; + return _this; + } + return InterfaceDeclaration; +}(ClassDeclaration)); +exports.InterfaceDeclaration = InterfaceDeclaration; +/** Represents a method declaration within a `class`. */ +var MethodDeclaration = /** @class */ (function (_super) { + __extends(MethodDeclaration, _super); + function MethodDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.METHODDECLARATION; + return _this; + } + return MethodDeclaration; +}(FunctionDeclaration)); +exports.MethodDeclaration = MethodDeclaration; +/** Represents a `namespace` declaration. */ +var NamespaceDeclaration = /** @class */ (function (_super) { + __extends(NamespaceDeclaration, _super); + function NamespaceDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.NAMESPACEDECLARATION; + return _this; + } + return NamespaceDeclaration; +}(DeclarationStatement)); +exports.NamespaceDeclaration = NamespaceDeclaration; +/** Represents a `return` statement. */ +var ReturnStatement = /** @class */ (function (_super) { + __extends(ReturnStatement, _super); + function ReturnStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.RETURN; + return _this; + } + return ReturnStatement; +}(Statement)); +exports.ReturnStatement = ReturnStatement; +/** Represents a single `case` within a `switch` statement. */ +var SwitchCase = /** @class */ (function (_super) { + __extends(SwitchCase, _super); + function SwitchCase() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.SWITCHCASE; + return _this; + } + return SwitchCase; +}(Node)); +exports.SwitchCase = SwitchCase; +/** Represents a `switch` statement. */ +var SwitchStatement = /** @class */ (function (_super) { + __extends(SwitchStatement, _super); + function SwitchStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.SWITCH; + return _this; + } + return SwitchStatement; +}(Statement)); +exports.SwitchStatement = SwitchStatement; +/** Represents a `throw` statement. */ +var ThrowStatement = /** @class */ (function (_super) { + __extends(ThrowStatement, _super); + function ThrowStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.THROW; + return _this; + } + return ThrowStatement; +}(Statement)); +exports.ThrowStatement = ThrowStatement; +/** Represents a `try` statement. */ +var TryStatement = /** @class */ (function (_super) { + __extends(TryStatement, _super); + function TryStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TRY; + return _this; + } + return TryStatement; +}(Statement)); +exports.TryStatement = TryStatement; +/** Represents a `type` declaration. */ +var TypeDeclaration = /** @class */ (function (_super) { + __extends(TypeDeclaration, _super); + function TypeDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TYPEDECLARATION; + return _this; + } + return TypeDeclaration; +}(DeclarationStatement)); +exports.TypeDeclaration = TypeDeclaration; +/** Represents a variable declaration part of a {@link VariableStatement}. */ +var VariableDeclaration = /** @class */ (function (_super) { + __extends(VariableDeclaration, _super); + function VariableDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.VARIABLEDECLARATION; + return _this; + } + return VariableDeclaration; +}(VariableLikeDeclarationStatement)); +exports.VariableDeclaration = VariableDeclaration; +/** Represents a variable statement wrapping {@link VariableDeclaration}s. */ +var VariableStatement = /** @class */ (function (_super) { + __extends(VariableStatement, _super); + function VariableStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.VARIABLE; + return _this; + } + return VariableStatement; +}(Statement)); +exports.VariableStatement = VariableStatement; +/** Represents a void statement dropping an expression's value. */ +var VoidStatement = /** @class */ (function (_super) { + __extends(VoidStatement, _super); + function VoidStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.VOID; + return _this; + } + return VoidStatement; +}(Statement)); +exports.VoidStatement = VoidStatement; +/** Represents a `while` statement. */ +var WhileStatement = /** @class */ (function (_super) { + __extends(WhileStatement, _super); + function WhileStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.WHILE; + return _this; + } + return WhileStatement; +}(Statement)); +exports.WhileStatement = WhileStatement; +/** Finds the first decorator matching the specified kind. */ +function findDecorator(kind, decorators) { + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + var decorator = decorators[i]; + if (decorator.decoratorKind == kind) + return decorator; + } + } + return null; +} +exports.findDecorator = findDecorator; +/** Mangles an external to an internal path. */ +function mangleInternalPath(path) { + if (path.endsWith(".ts")) + path = path.substring(0, path.length - 3); + return path; +} +exports.mangleInternalPath = mangleInternalPath; +/** Tests if the specified type node represents an omitted type. */ +function isTypeOmitted(type) { + if (type.kind == NodeKind.NAMEDTYPE) { + var name = type.name; + return !(name.next || name.identifier.text.length); + } + return false; +} +exports.isTypeOmitted = isTypeOmitted; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHLENBQUEsS0FBSzs7Ozs7Ozs7Ozs7Ozs7O0FBRVIsbUNBS2tCO0FBRWxCLHlDQUlxQjtBQVFaLGdCQVhQLGlCQUFLLENBV087QUFBRSxnQkFUZCxpQkFBSyxDQVNjO0FBTnJCLCtCQUlnQjtBQUloQixvQ0FBb0M7QUFDcEMsSUFBWSxRQTJFWDtBQTNFRCxXQUFZLFFBQVE7SUFFbEIsMkNBQU0sQ0FBQTtJQUVOLFFBQVE7SUFDUixpREFBUyxDQUFBO0lBQ1QsdURBQVksQ0FBQTtJQUNaLCtDQUFRLENBQUE7SUFDUix5REFBYSxDQUFBO0lBQ2IsaURBQVMsQ0FBQTtJQUVULGNBQWM7SUFDZCxtREFBVSxDQUFBO0lBQ1YsaURBQVMsQ0FBQTtJQUNULDJDQUFNLENBQUE7SUFDTix1Q0FBSSxDQUFBO0lBQ0osMENBQUssQ0FBQTtJQUNMLDBDQUFLLENBQUE7SUFDTCwwREFBYSxDQUFBO0lBQ2IsMENBQUssQ0FBQTtJQUNMLGdEQUFRLENBQUE7SUFDUixvREFBVSxDQUFBO0lBQ1YsOENBQU8sQ0FBQTtJQUNQLHNDQUFHLENBQUE7SUFDSCx3Q0FBSSxDQUFBO0lBQ0osMERBQWEsQ0FBQTtJQUNiLDREQUFjLENBQUE7SUFDZCw4Q0FBTyxDQUFBO0lBQ1AsMENBQUssQ0FBQTtJQUNMLHdDQUFJLENBQUE7SUFDSix3Q0FBSSxDQUFBO0lBQ0osc0RBQVcsQ0FBQTtJQUNYLHdEQUFZLENBQUE7SUFDWixzREFBVyxDQUFBO0lBRVgsYUFBYTtJQUNiLDBDQUFLLENBQUE7SUFDTCwwQ0FBSyxDQUFBO0lBQ0wsZ0RBQVEsQ0FBQTtJQUNSLG9DQUFFLENBQUE7SUFDRiwwQ0FBSyxDQUFBO0lBQ0wsNENBQU0sQ0FBQTtJQUNOLDBEQUFhLENBQUE7SUFDYix3REFBWSxDQUFBO0lBQ1osb0RBQVUsQ0FBQTtJQUNWLHNDQUFH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R0FPNUM7QUFQWSx3Q0FBYztBQVMzQiw2REFBNkQ7QUFDN0QsU0FBZ0IsYUFBYSxDQUFDLElBQW1CLEVBQUUsVUFBa0M7SUFDbkYsSUFBSSxVQUFVLEVBQUU7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pELElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLFNBQVMsQ0FBQyxhQUFhLElBQUksSUFBSTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztTQUN2RDtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBUkQsc0NBUUM7QUFFRCwrQ0FBK0M7QUFDL0MsU0FBZ0Isa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBSEQsZ0RBR0M7QUFFRCxtRUFBbUU7QUFDbkUsU0FBZ0IsYUFBYSxDQUFDLElBQWM7SUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7UUFDbkMsSUFBSSxJQUFJLEdBQW1CLElBQUssQ0FBQyxJQUFJLENBQUM7UUFDdEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNwRDtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQU5ELHNDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBYnN0cmFjdCBzeW50YXggdHJlZSByZXByZXNlbnRpbmcgYSBzb3VyY2UgZmlsZSBvbmNlIHBhcnNlZC5cbiAqIEBtb2R1bGUgYXN0XG4gKi8vKioqL1xuXG5pbXBvcnQge1xuICBDb21tb25GbGFncyxcbiAgQ29tbW9uU3ltYm9scyxcbiAgUEFUSF9ERUxJTUlURVIsXG4gIExJQlJBUllfUFJFRklYXG59IGZyb20gXCIuL2NvbW1vblwiO1xuXG5pbXBvcnQge1xuICBUb2tlbixcbiAgVG9rZW5pemVyLFxuICBSYW5nZVxufSBmcm9tIFwiLi90b2tlbml6ZXJcIjtcblxuaW1wb3J0IHtcbiAgbm9ybWFsaXplUGF0aCxcbiAgcmVzb2x2ZVBhdGgsXG4gIENoYXJDb2RlXG59IGZyb20gXCIuL3V0aWxcIjtcblxuZXhwb3J0IHsgVG9rZW4sIFJhbmdlIH07XG5cbi8qKiBJbmRpY2F0ZXMgdGhlIGtpbmQgb2YgYSBub2RlLiAqL1xuZXhwb3J0IGVudW0gTm9kZUtpbmQge1xuXG4gIFNPVVJDRSxcblxuICAvLyB0eXBlc1xuICBOQU1FRFRZUEUsXG4gIEZVTkNUSU9OVFlQRSxcbiAgVFlQRU5BTUUsXG4gIFRZUEVQQVJBTUVURVIsXG4gIFBBUkFNRVRFUixcblxuICAvLyBleHByZXNzaW9uc1xuICBJREVOVElGSUVSLFxuICBBU1NFUlRJT04sXG4gIEJJTkFSWSxcbiAgQ0FMTCxcbiAgQ0xBU1MsXG4gIENPTU1BLFxuICBFTEVNRU5UQUNDRVNTLFxuICBGQUxTRSxcbiAgRlVOQ1RJT04sXG4gIElOU1RBTkNFT0YsXG4gIExJVEVSQUwsXG4gIE5FVyxcbiAgTlVMTCxcbiAgUEFSRU5USEVTSVpFRCxcbiAgUFJPUEVSVFlBQ0NFU1MsXG4gIFRFUk5BUlksXG4gIFNVUEVSLFxuICBUSElTLFxuICBUUlVFLFxuICBDT05TVFJVQ1RPUixcbiAgVU5BUllQT1NURklYLFxuICBVTkFSWVBSRUZJWCxcblxuICAvLyBzdGF0ZW1lbnRzXG4gIEJMT0NLLFxuICBCUkVBSyxcbiAgQ09OVElOVUUsXG4gIERPLFxuICBFTVBUWSxcbiAgRVhQT1JULFxuICBFWFBPUlRERUZBVUxULFxuICBFWFBPUlRJTVBPUlQsXG4gIEVYUFJFU1NJT04sXG4gIEZPUixcbiAgSUYsXG4gIElNUE9SVCxcbiAgUkVUVVJOLFxuICBTV0lUQ0gsXG4gIFRIUk9XLFxuICBUUlksXG4gIFZBUklBQkxFLFxuICBWT0lELFxuICBXSElMRSxcblxuICAvLyBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzXG4gIENMQVNTREVDTEFSQVRJT04sXG4gIEVOVU1ERUNMQVJBVElPTixcbiAgRU5VTVZBTFVFREVDTEFSQVRJT04sXG4gIEZJRUxEREVDTEFSQVRJT04sXG4gIEZVTkNUSU9OREVDTEFSQVRJT04sXG4gIElNUE9SVERFQ0xBUkFUSU9OLFxuICBJTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OLFxuICBJTlRFUkZBQ0VERUNMQVJBVElPTixcbiAgTUVUSE9EREVDTEFSQVRJT04sXG4gIE5BTUVTUEFDRURFQ0xBUkFUSU9OLFxuICBUWVBFREVDTEFSQVRJT04sXG4gIFZBUklBQkxFREVDTEFSQVRJT04sXG5cbiAgLy8gc3BlY2lhbFxuICBERUNPUkFUT1IsXG4gIEVYUE9SVE1FTUJFUixcbiAgU1dJVENIQ0FTRSxcbiAgQ09NTUVOVFxufVxuXG4vKiogQ2hlY2tzIGlmIGEgbm9kZSByZXByZXNlbnRzIGEgY29uc3RhbnQgdmFsdWUuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZUlzQ29uc3RhbnRWYWx1ZShraW5kOiBOb2RlS2luZCk6IGJvb2wge1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIE5vZGVLaW5kLkxJVEVSQUw6XG4gICAgY2FzZSBOb2RlS2luZC5OVUxMOlxuICAgIGNhc2UgTm9kZUtpbmQuVFJVRTpcbiAgICBjYXNlIE5vZGVLaW5kLkZBTFNFOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3MgaWYgYSBub2RlIG1pZ2h0IGJlIGNhbGxhYmxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGVJc0NhbGxhYmxlKGtpbmQ6IE5vZGVLaW5kKTogYm9vbCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjpcbiAgICBjYXNlIE5vZGVLaW5kLkFTU0VSVElPTjogLy8gaWYga2luZD1OT05OVUxMXG4gICAgY2FzZSBOb2RlS2luZC5DQUxMOlxuICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzpcbiAgICBjYXNlIE5vZGVLaW5kLlBBUkVOVEhFU0laRUQ6XG4gICAgY2FzZSBOb2RlS2luZC5QUk9QRVJUWUFDQ0VTUzpcbiAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3MgaWYgYSBub2RlIG1pZ2h0IGJlIGNhbGxhYmxlIHdpdGggZ2VuZXJpYyBhcmd1bWVudHMuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZUlzR2VuZXJpY0NhbGxhYmxlKGtpbmQ6IE5vZGVLaW5kKTogYm9vbCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjpcbiAgICBjYXNlIE5vZGVLaW5kLlBST1BFUlRZQUNDRVNTOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBub2Rlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOb2RlIHtcblxuICAvKiogTm9kZSBraW5kIGluZGljYXRvci4gKi9cbiAga2luZDogTm9kZUtpbmQ7XG4gIC8qKiBTb3VyY2UgcmFuZ2UuICovXG4gIHJhbmdlOiBSYW5nZTtcblxuICAvLyB0eXBlc1xuXG4gIHN0YXRpYyBjcmVhdGVUeXBlTmFtZShcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZU5hbWUge1xuICAgIHZhciB0eXBlTmFtZSA9IG5ldyBUeXBlTmFtZSgpO1xuICAgIHR5cGVOYW1lLnJhbmdlID0gcmFuZ2U7XG4gICAgdHlwZU5hbWUuaWRlbnRpZmllciA9IG5hbWU7XG4gICAgdHlwZU5hbWUubmV4dCA9IG51bGw7XG4gICAgcmV0dXJuIHR5cGVOYW1lO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVNpbXBsZVR5cGVOYW1lKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZU5hbWUge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZVR5cGVOYW1lKE5vZGUuY3JlYXRlSWRlbnRpZmllckV4cHJlc3Npb24obmFtZSwgcmFuZ2UpLCByYW5nZSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTmFtZWRUeXBlKFxuICAgIG5hbWU6IFR5cGVOYW1lLFxuICAgIHR5cGVBcmd1bWVudHM6IFR5cGVOb2RlW10gfCBudWxsLFxuICAgIGlzTnVsbGFibGU6IGJvb2wsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE5hbWVkVHlwZU5vZGUge1xuICAgIHZhciB0eXBlID0gbmV3IE5hbWVkVHlwZU5vZGUoKTtcbiAgICB0eXBlLnJhbmdlID0gcmFuZ2U7XG4gICAgdHlwZS5uYW1lID0gbmFtZTtcbiAgICB0eXBlLnR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzO1xuICAgIHR5cGUuaXNOdWxsYWJsZSA9IGlzTnVsbGFibGU7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRnVuY3Rpb25UeXBlKFxuICAgIHBhcmFtZXRlcnM6IFBhcmFtZXRlck5vZGVbXSxcbiAgICByZXR1cm5UeXBlOiBUeXBlTm9kZSxcbiAgICBleHBsaWNpdFRoaXNUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbCxcbiAgICBpc051bGxhYmxlOiBib29sLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGdW5jdGlvblR5cGVOb2RlIHtcbiAgICB2YXIgdHlwZSA9IG5ldyBGdW5jdGlvblR5cGVOb2RlKCk7XG4gICAgdHlwZS5yYW5nZSA9IHJhbmdlO1xuICAgIHR5cGUucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgdHlwZS5yZXR1cm5UeXBlID0gcmV0dXJuVHlwZTtcbiAgICB0eXBlLmV4cGxpY2l0VGhpc1R5cGUgPSBleHBsaWNpdFRoaXNUeXBlO1xuICAgIHR5cGUuaXNOdWxsYWJsZSA9IGlzTnVsbGFibGU7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlT21pdHRlZFR5cGUoXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE5hbWVkVHlwZU5vZGUge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZU5hbWVkVHlwZShcbiAgICAgIE5vZGUuY3JlYXRlU2ltcGxlVHlwZU5hbWUoXCJcIiwgcmFuZ2UpLFxuICAgICAgbnVsbCxcbiAgICAgIGZhbHNlLFxuICAgICAgcmFuZ2VcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVR5cGVQYXJhbWV0ZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZW5kc1R5cGU6IE5hbWVkVHlwZU5vZGUgfCBudWxsLFxuICAgIGRlZmF1bHRUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZVBhcmFtZXRlck5vZGUge1xuICAgIHZhciBlbGVtID0gbmV3IFR5cGVQYXJhbWV0ZXJOb2RlKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0ubmFtZSA9IG5hbWU7XG4gICAgZWxlbS5leHRlbmRzVHlwZSA9IGV4dGVuZHNUeXBlO1xuICAgIGVsZW0uZGVmYXVsdFR5cGUgPSBkZWZhdWx0VHlwZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVQYXJhbWV0ZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZTogVHlwZU5vZGUsXG4gICAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGtpbmQ6IFBhcmFtZXRlcktpbmQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFBhcmFtZXRlck5vZGUge1xuICAgIHZhciBlbGVtID0gbmV3IFBhcmFtZXRlck5vZGUoKTtcbiAgICBlbGVtLnJhbmdlID0gcmFuZ2U7XG4gICAgZWxlbS5uYW1lID0gbmFtZTtcbiAgICBlbGVtLnR5cGUgPSB0eXBlO1xuICAgIGVsZW0uaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcbiAgICBlbGVtLnBhcmFtZXRlcktpbmQgPSBraW5kO1xuICAgIHJldHVybiBlbGVtO1xuICB9XG5cbiAgLy8gc3BlY2lhbFxuXG4gIHN0YXRpYyBjcmVhdGVEZWNvcmF0b3IoXG4gICAgbmFtZTogRXhwcmVzc2lvbixcbiAgICBhcmdzOiBFeHByZXNzaW9uW10gfCBudWxsLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBEZWNvcmF0b3JOb2RlIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBEZWNvcmF0b3JOb2RlKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHN0bXQuZGVjb3JhdG9yS2luZCA9IGRlY29yYXRvck5hbWVUb0tpbmQobmFtZSk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29tbWVudChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAga2luZDogQ29tbWVudEtpbmQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbW1lbnROb2RlIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBDb21tZW50Tm9kZSgpO1xuICAgIG5vZGUucmFuZ2UgPSByYW5nZTtcbiAgICBub2RlLmNvbW1lbnRLaW5kID0ga2luZDtcbiAgICBub2RlLnRleHQgPSB0ZXh0O1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gZXhwcmVzc2lvbnNcblxuICBzdGF0aWMgY3JlYXRlSWRlbnRpZmllckV4cHJlc3Npb24oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICBpc1F1b3RlZDogYm9vbCA9IGZhbHNlXG4gICk6IElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBJZGVudGlmaWVyRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLnRleHQgPSBuYW1lOyAvLyBUT0RPOiBleHRyYWN0IGZyb20gcmFuZ2VcbiAgICBleHByLnN5bWJvbCA9IG5hbWU7IC8vIFRPRE86IFN5bWJvbC5mb3IobmFtZSlcbiAgICBleHByLmlzUXVvdGVkID0gaXNRdW90ZWQ7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRW1wdHlJZGVudGlmaWVyRXhwcmVzc2lvbihcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IElkZW50aWZpZXJFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIudGV4dCA9IFwiXCI7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihcbiAgICBlbGVtZW50czogKEV4cHJlc3Npb24gfCBudWxsKVtdLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBBcnJheUxpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBBcnJheUxpdGVyYWxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZWxlbWVudEV4cHJlc3Npb25zID0gZWxlbWVudHM7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQXNzZXJ0aW9uRXhwcmVzc2lvbihcbiAgICBhc3NlcnRpb25LaW5kOiBBc3NlcnRpb25LaW5kLFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgdG9UeXBlOiBUeXBlTm9kZSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEFzc2VydGlvbkV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEFzc2VydGlvbkV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5hc3NlcnRpb25LaW5kID0gYXNzZXJ0aW9uS2luZDtcbiAgICBleHByLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICAgIGV4cHIudG9UeXBlID0gdG9UeXBlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oXG4gICAgb3BlcmF0b3I6IFRva2VuLFxuICAgIGxlZnQ6IEV4cHJlc3Npb24sXG4gICAgcmlnaHQ6IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEJpbmFyeUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEJpbmFyeUV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgIGV4cHIubGVmdCA9IGxlZnQ7XG4gICAgZXhwci5yaWdodCA9IHJpZ2h0O1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUNhbGxFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgdHlwZUFyZ3M6IFR5cGVOb2RlW10gfCBudWxsLFxuICAgIGFyZ3M6IEV4cHJlc3Npb25bXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQ2FsbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IENhbGxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci50eXBlQXJndW1lbnRzID0gdHlwZUFyZ3M7XG4gICAgZXhwci5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUNsYXNzRXhwcmVzc2lvbihcbiAgICBkZWNsYXJhdGlvbjogQ2xhc3NEZWNsYXJhdGlvblxuICApOiBDbGFzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IENsYXNzRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSBkZWNsYXJhdGlvbi5yYW5nZTtcbiAgICBleHByLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29tbWFFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb25zOiBFeHByZXNzaW9uW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbW1hRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgQ29tbWFFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbnMgPSBleHByZXNzaW9ucztcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDb25zdHJ1Y3RvckV4cHJlc3Npb24oXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbnN0cnVjdG9yRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgQ29uc3RydWN0b3JFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgZWxlbWVudDogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci5lbGVtZW50RXhwcmVzc2lvbiA9IGVsZW1lbnQ7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRmFsc2VFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGYWxzZUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZhbHNlRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGbG9hdExpdGVyYWxFeHByZXNzaW9uKFxuICAgIHZhbHVlOiBmNjQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihcbiAgICBkZWNsYXJhdGlvbjogRnVuY3Rpb25EZWNsYXJhdGlvblxuICApOiBGdW5jdGlvbkV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZ1bmN0aW9uRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSBkZWNsYXJhdGlvbi5yYW5nZTtcbiAgICBleHByLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2VPZkV4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICBpc1R5cGU6IFR5cGVOb2RlLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBJbnN0YW5jZU9mRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgSW5zdGFuY2VPZkV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICBleHByLmlzVHlwZSA9IGlzVHlwZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oXG4gICAgdmFsdWU6IEk2NCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU5ld0V4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICB0eXBlQXJnczogVHlwZU5vZGVbXSB8IG51bGwsXG4gICAgYXJnczogRXhwcmVzc2lvbltdLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOZXdFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBOZXdFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci50eXBlQXJndW1lbnRzID0gdHlwZUFyZ3M7XG4gICAgZXhwci5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU51bGxFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOdWxsRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgTnVsbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oXG4gICAgbmFtZXM6IElkZW50aWZpZXJFeHByZXNzaW9uW10sXG4gICAgdmFsdWVzOiBFeHByZXNzaW9uW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLm5hbWVzID0gbmFtZXM7XG4gICAgZXhwci52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogUGFyZW50aGVzaXplZEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcHJvcGVydHk6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICAgIGV4cHIucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVSZWdleHBMaXRlcmFsRXhwcmVzc2lvbihcbiAgICBwYXR0ZXJuOiBzdHJpbmcsXG4gICAgZmxhZ3M6IHN0cmluZyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFJlZ2V4cExpdGVyYWxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIucGF0dGVybiA9IHBhdHRlcm47XG4gICAgZXhwci5wYXR0ZXJuRmxhZ3MgPSBmbGFncztcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUZXJuYXJ5RXhwcmVzc2lvbihcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgaWZUaGVuOiBFeHByZXNzaW9uLFxuICAgIGlmRWxzZTogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGVybmFyeUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFRlcm5hcnlFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgIGV4cHIuaWZUaGVuID0gaWZUaGVuO1xuICAgIGV4cHIuaWZFbHNlID0gaWZFbHNlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLnZhbHVlID0gdmFsdWU7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlU3VwZXJFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBTdXBlckV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFN1cGVyRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUaGlzRXhwcmVzc2lvbihcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGhpc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFRoaXNFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRydWVFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBUcnVlRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVHJ1ZUV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVW5hcnlQb3N0Zml4RXhwcmVzc2lvbihcbiAgICBvcGVyYXRvcjogVG9rZW4sXG4gICAgb3BlcmFuZDogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVW5hcnlQb3N0Zml4RXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVW5hcnlQb3N0Zml4RXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgZXhwci5vcGVyYW5kID0gb3BlcmFuZDtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVVbmFyeVByZWZpeEV4cHJlc3Npb24oXG4gICAgb3BlcmF0b3I6IFRva2VuLFxuICAgIG9wZXJhbmQ6IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFVuYXJ5UHJlZml4RXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVW5hcnlQcmVmaXhFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICBleHByLm9wZXJhbmQgPSBvcGVyYW5kO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgLy8gc3RhdGVtZW50c1xuXG4gIHN0YXRpYyBjcmVhdGVCbG9ja1N0YXRlbWVudChcbiAgICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQmxvY2tTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEJsb2NrU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoXG4gICAgbGFiZWw6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQnJlYWtTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEJyZWFrU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubGFiZWwgPSBsYWJlbDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDbGFzc0RlY2xhcmF0aW9uKFxuICAgIGlkZW50aWZpZXI6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGwsIC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgICBpbXBsZW1lbnRzVHlwZXM6IE5hbWVkVHlwZU5vZGVbXSB8IG51bGwsIC8vIGNhbid0IGJlIGZ1bmN0aW9uc1xuICAgIG1lbWJlcnM6IERlY2xhcmF0aW9uU3RhdGVtZW50W10sXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENsYXNzRGVjbGFyYXRpb24ge1xuICAgIHZhciBzdG10ID0gbmV3IENsYXNzRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IGlkZW50aWZpZXI7XG4gICAgc3RtdC50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIHN0bXQuZXh0ZW5kc1R5cGUgPSBleHRlbmRzVHlwZTtcbiAgICBzdG10LmltcGxlbWVudHNUeXBlcyA9IGltcGxlbWVudHNUeXBlcztcbiAgICBzdG10Lm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoXG4gICAgbGFiZWw6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQ29udGludWVTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IENvbnRpbnVlU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubGFiZWwgPSBsYWJlbDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVEb1N0YXRlbWVudChcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudCxcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IERvU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBEb1N0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFbXB0eVN0YXRlbWVudChcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRW1wdHlTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEVtcHR5U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUVudW1EZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICBtZW1iZXJzOiBFbnVtVmFsdWVEZWNsYXJhdGlvbltdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFbnVtRGVjbGFyYXRpb24ge1xuICAgIHZhciBzdG10ID0gbmV3IEVudW1EZWNsYXJhdGlvbigpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmZsYWdzID0gZmxhZ3M7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LnZhbHVlcyA9IG1lbWJlcnM7XG4gICAgc3RtdC5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycztcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFbnVtVmFsdWVEZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB2YWx1ZTogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFbnVtVmFsdWVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgRW51bVZhbHVlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUV4cG9ydFN0YXRlbWVudChcbiAgICBtZW1iZXJzOiBFeHBvcnRNZW1iZXJbXSB8IG51bGwsXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGlzRGVjbGFyZTogYm9vbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRXhwb3J0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5tZW1iZXJzID0gbWVtYmVycztcbiAgICBzdG10LnBhdGggPSBwYXRoO1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQYXRoKHBhdGgudmFsdWUpO1xuICAgICAgaWYgKHBhdGgudmFsdWUuc3RhcnRzV2l0aChcIi5cIikpIHsgLy8gcmVsYXRpdmVcbiAgICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoLFxuICAgICAgICAgIHJhbmdlLnNvdXJjZS5ub3JtYWxpemVkUGF0aFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHsgLy8gYWJzb2x1dGVcbiAgICAgICAgaWYgKCFub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKExJQlJBUllfUFJFRklYKSkge1xuICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoID0gTElCUkFSWV9QUkVGSVggKyBub3JtYWxpemVkUGF0aDtcbiAgICAgICAgfVxuICAgICAgICBzdG10Lm5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGg7XG4gICAgICB9XG4gICAgICBzdG10LmludGVybmFsUGF0aCA9IG1hbmdsZUludGVybmFsUGF0aChzdG10Lm5vcm1hbGl6ZWRQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IG51bGw7XG4gICAgICBzdG10LmludGVybmFsUGF0aCA9IG51bGw7XG4gICAgfVxuICAgIHN0bXQuaXNEZWNsYXJlID0gaXNEZWNsYXJlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoXG4gICAgZGVjbGFyYXRpb246IERlY2xhcmF0aW9uU3RhdGVtZW50LFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFeHBvcnREZWZhdWx0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnREZWZhdWx0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5kZWNsYXJhdGlvbiA9IGRlY2xhcmF0aW9uO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHBvcnRJbXBvcnRTdGF0ZW1lbnQoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZXJuYWxOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRXhwb3J0SW1wb3J0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LmV4dGVybmFsTmFtZSA9IGV4dGVybmFsTmFtZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHBvcnRNZW1iZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZXJuYWxOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEV4cG9ydE1lbWJlciB7XG4gICAgdmFyIGVsZW0gPSBuZXcgRXhwb3J0TWVtYmVyKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0ubG9jYWxOYW1lID0gbmFtZTtcbiAgICBpZiAoIWV4dGVybmFsTmFtZSkgZXh0ZXJuYWxOYW1lID0gbmFtZTtcbiAgICBlbGVtLmV4cG9ydGVkTmFtZSA9IGV4dGVybmFsTmFtZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb25cbiAgKTogRXhwcmVzc2lvblN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgRXhwcmVzc2lvblN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSBleHByZXNzaW9uLnJhbmdlO1xuICAgIHN0bXQuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSWZTdGF0ZW1lbnQoXG4gICAgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIGlmVHJ1ZTogU3RhdGVtZW50LFxuICAgIGlmRmFsc2U6IFN0YXRlbWVudCB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IElmU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBJZlN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICBzdG10LmlmVHJ1ZSA9IGlmVHJ1ZTtcbiAgICBzdG10LmlmRmFsc2UgPSBpZkZhbHNlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUltcG9ydFN0YXRlbWVudChcbiAgICBkZWNsczogSW1wb3J0RGVjbGFyYXRpb25bXSB8IG51bGwsXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEltcG9ydFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZGVjbGFyYXRpb25zID0gZGVjbHM7XG4gICAgc3RtdC5uYW1lc3BhY2VOYW1lID0gbnVsbDtcbiAgICBzdG10LnBhdGggPSBwYXRoO1xuICAgIHZhciBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgocGF0aC52YWx1ZSk7XG4gICAgaWYgKHBhdGgudmFsdWUuc3RhcnRzV2l0aChcIi5cIikpIHsgLy8gcmVsYXRpdmUgaW4gcHJvamVjdFxuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgcmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoXG4gICAgICApO1xuICAgIH0gZWxzZSB7IC8vIGFic29sdXRlIGluIGxpYnJhcnlcbiAgICAgIGlmICghbm9ybWFsaXplZFBhdGguc3RhcnRzV2l0aChMSUJSQVJZX1BSRUZJWCkpIHtcbiAgICAgICAgbm9ybWFsaXplZFBhdGggPSBMSUJSQVJZX1BSRUZJWCArIG5vcm1hbGl6ZWRQYXRoO1xuICAgICAgfVxuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoO1xuICAgIH1cbiAgICBzdG10LmludGVybmFsUGF0aCA9IG1hbmdsZUludGVybmFsUGF0aChzdG10Lm5vcm1hbGl6ZWRQYXRoKTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbXBvcnRTdGF0ZW1lbnRXaXRoV2lsZGNhcmQoXG4gICAgaWRlbnRpZmllcjogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEltcG9ydFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZGVjbGFyYXRpb25zID0gbnVsbDtcbiAgICBzdG10Lm5hbWVzcGFjZU5hbWUgPSBpZGVudGlmaWVyO1xuICAgIHN0bXQucGF0aCA9IHBhdGg7XG4gICAgdmFyIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUGF0aChwYXRoLnZhbHVlKTtcbiAgICBpZiAocGF0aC52YWx1ZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgcmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW5vcm1hbGl6ZWRQYXRoLnN0YXJ0c1dpdGgoTElCUkFSWV9QUkVGSVgpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWRQYXRoID0gTElCUkFSWV9QUkVGSVggKyBub3JtYWxpemVkUGF0aDtcbiAgICAgIH1cbiAgICAgIHN0bXQubm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aDtcbiAgICB9XG4gICAgc3RtdC5pbnRlcm5hbFBhdGggPSBtYW5nbGVJbnRlcm5hbFBhdGgoc3RtdC5ub3JtYWxpemVkUGF0aCk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24oXG4gICAgZm9yZWlnbk5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSW1wb3J0RGVjbGFyYXRpb24ge1xuICAgIHZhciBlbGVtID0gbmV3IEltcG9ydERlY2xhcmF0aW9uKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0uZm9yZWlnbk5hbWUgPSBmb3JlaWduTmFtZTtcbiAgICBpZiAoIW5hbWUpIG5hbWUgPSBmb3JlaWduTmFtZTtcbiAgICBlbGVtLm5hbWUgPSBuYW1lO1xuICAgIHJldHVybiBlbGVtO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUludGVyZmFjZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGwsIC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgICBtZW1iZXJzOiBEZWNsYXJhdGlvblN0YXRlbWVudFtdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBJbnRlcmZhY2VEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW50ZXJmYWNlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIHN0bXQuZXh0ZW5kc1R5cGUgPSBleHRlbmRzVHlwZTtcbiAgICBzdG10Lm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRmllbGREZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB0eXBlOiBUeXBlTm9kZSB8IG51bGwsXG4gICAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGaWVsZERlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBGaWVsZERlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZSA9IHR5cGU7XG4gICAgc3RtdC5pbml0aWFsaXplciA9IGluaXRpYWxpemVyO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRm9yU3RhdGVtZW50KFxuICAgIGluaXRpYWxpemVyOiBTdGF0ZW1lbnQgfCBudWxsLFxuICAgIGNvbmRpdGlvbjogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgaW5jcmVtZW50b3I6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50LFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGb3JTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEZvclN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXI7XG4gICAgc3RtdC5jb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgc3RtdC5pbmNyZW1lbnRvciA9IGluY3JlbWVudG9yO1xuICAgIHN0bXQuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsLFxuICAgIHNpZ25hdHVyZTogRnVuY3Rpb25UeXBlTm9kZSxcbiAgICBib2R5OiBTdGF0ZW1lbnQgfCBudWxsLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIGFycm93S2luZDogQXJyb3dLaW5kLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGdW5jdGlvbkRlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBGdW5jdGlvbkRlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICBzdG10LnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICBzdG10LmJvZHkgPSBib2R5O1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgc3RtdC5hcnJvd0tpbmQgPSBhcnJvd0tpbmQ7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbihcbiAgICBrZXlUeXBlOiBOYW1lZFR5cGVOb2RlLFxuICAgIHZhbHVlVHlwZTogVHlwZU5vZGUsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24ge1xuICAgIHZhciBlbGVtID0gbmV3IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24oKTtcbiAgICBlbGVtLnJhbmdlID0gcmFuZ2U7XG4gICAgZWxlbS5rZXlUeXBlID0ga2V5VHlwZTtcbiAgICBlbGVtLnZhbHVlVHlwZSA9IHZhbHVlVHlwZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVNZXRob2REZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB0eXBlUGFyYW1ldGVyczogVHlwZVBhcmFtZXRlck5vZGVbXSB8IG51bGwsXG4gICAgc2lnbmF0dXJlOiBGdW5jdGlvblR5cGVOb2RlLFxuICAgIGJvZHk6IFN0YXRlbWVudCB8IG51bGwsXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE1ldGhvZERlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBNZXRob2REZWNsYXJhdGlvbigpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmZsYWdzID0gZmxhZ3M7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgc3RtdC5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgc3RtdC5ib2R5ID0gYm9keTtcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU5hbWVzcGFjZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIG1lbWJlcnM6IFN0YXRlbWVudFtdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOYW1lc3BhY2VEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgTmFtZXNwYWNlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC5tZW1iZXJzID0gbWVtYmVycztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVJldHVyblN0YXRlbWVudChcbiAgICB2YWx1ZTogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFJldHVyblN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgUmV0dXJuU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoXG4gICAgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIGNhc2VzOiBTd2l0Y2hDYXNlW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFN3aXRjaFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgU3dpdGNoU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgIHN0bXQuY2FzZXMgPSBjYXNlcztcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVTd2l0Y2hDYXNlKFxuICAgIGxhYmVsOiBFeHByZXNzaW9uIHwgbnVsbCxcbiAgICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogU3dpdGNoQ2FzZSB7XG4gICAgdmFyIGVsZW0gPSBuZXcgU3dpdGNoQ2FzZSgpO1xuICAgIGVsZW0ucmFuZ2UgPSByYW5nZTtcbiAgICBlbGVtLmxhYmVsID0gbGFiZWw7XG4gICAgZWxlbS5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUaHJvd1N0YXRlbWVudChcbiAgICB2YWx1ZTogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGhyb3dTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IFRocm93U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUcnlTdGF0ZW1lbnQoXG4gICAgc3RhdGVtZW50czogU3RhdGVtZW50W10sXG4gICAgY2F0Y2hWYXJpYWJsZTogSWRlbnRpZmllckV4cHJlc3Npb24gfCBudWxsLFxuICAgIGNhdGNoU3RhdGVtZW50czogU3RhdGVtZW50W10gfCBudWxsLFxuICAgIGZpbmFsbHlTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFRyeVN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgVHJ5U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgc3RtdC5jYXRjaFZhcmlhYmxlID0gY2F0Y2hWYXJpYWJsZTtcbiAgICBzdG10LmNhdGNoU3RhdGVtZW50cyA9IGNhdGNoU3RhdGVtZW50cztcbiAgICBzdG10LmZpbmFsbHlTdGF0ZW1lbnRzID0gZmluYWxseVN0YXRlbWVudHM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVHlwZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBhbGlhczogVHlwZU5vZGUsXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFR5cGVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgVHlwZURlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICBzdG10LnR5cGUgPSBhbGlhcztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KFxuICAgIGRlY2xhcmF0aW9uczogVmFyaWFibGVEZWNsYXJhdGlvbltdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFZhcmlhYmxlU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBWYXJpYWJsZVN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmRlY2xhcmF0aW9ucyA9IGRlY2xhcmF0aW9ucztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZTogVHlwZU5vZGUgfCBudWxsLFxuICAgIGluaXRpYWxpemVyOiBFeHByZXNzaW9uIHwgbnVsbCxcbiAgICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JOb2RlW10gfCBudWxsLFxuICAgIGZsYWdzOiBDb21tb25GbGFncyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVmFyaWFibGVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIGVsZW0gPSBuZXcgVmFyaWFibGVEZWNsYXJhdGlvbigpO1xuICAgIGVsZW0ucmFuZ2UgPSByYW5nZTtcbiAgICBlbGVtLmZsYWdzID0gZmxhZ3M7XG4gICAgZWxlbS5uYW1lID0gbmFtZTtcbiAgICBlbGVtLnR5cGUgPSB0eXBlO1xuICAgIGVsZW0uaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcbiAgICBlbGVtLmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzOyAvLyBpbmhlcml0ZWRcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVWb2lkU3RhdGVtZW50KFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFZvaWRTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IFZvaWRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVXaGlsZVN0YXRlbWVudChcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFdoaWxlU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBXaGlsZVN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICBzdG10LnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxufVxuXG4vLyB0eXBlc1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHlwZU5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAgLy8ga2luZCB2YXJpZXNcblxuICAvKiogV2hldGhlciBudWxsYWJsZSBvciBub3QuICovXG4gIGlzTnVsbGFibGU6IGJvb2w7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdHlwZSBuYW1lLiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVOYW1lIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5UWVBFTkFNRTtcblxuICAvKiogSWRlbnRpZmllciBvZiB0aGlzIHBhcnQuICovXG4gIGlkZW50aWZpZXI6IElkZW50aWZpZXJFeHByZXNzaW9uO1xuICAvKiogTmV4dCBwYXJ0IG9mIHRoZSB0eXBlIG5hbWUgb3IgYG51bGxgIGlmIHRoaXMgaXMgdGhlIGxhc3QgcGFydC4gKi9cbiAgbmV4dDogVHlwZU5hbWUgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG5hbWVkIHR5cGUuICovXG5leHBvcnQgY2xhc3MgTmFtZWRUeXBlTm9kZSBleHRlbmRzIFR5cGVOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLk5BTUVEVFlQRTtcblxuICAvKiogVHlwZSBuYW1lLiAqL1xuICBuYW1lOiBUeXBlTmFtZTtcbiAgLyoqIFR5cGUgYXJndW1lbnQgcmVmZXJlbmNlcy4gKi9cbiAgdHlwZUFyZ3VtZW50czogVHlwZU5vZGVbXSB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdHlwZS4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvblR5cGVOb2RlIGV4dGVuZHMgVHlwZU5vZGUge1xuICBraW5kID0gTm9kZUtpbmQuRlVOQ1RJT05UWVBFO1xuXG4gIC8qKiBBY2NlcHRlZCBwYXJhbWV0ZXJzLiAqL1xuICBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJOb2RlW107XG4gIC8qKiBSZXR1cm4gdHlwZS4gKi9cbiAgcmV0dXJuVHlwZTogVHlwZU5vZGU7XG4gIC8qKiBFeHBsaWNpdGx5IHByb3ZpZGVkIHRoaXMgdHlwZSwgaWYgYW55LiAqL1xuICBleHBsaWNpdFRoaXNUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbDsgLy8gY2FuJ3QgYmUgYSBmdW5jdGlvblxufVxuXG4vKiogUmVwcmVzZW50cyBhIHR5cGUgcGFyYW1ldGVyLiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSO1xuXG4gIC8qKiBJZGVudGlmaWVyIHJlZmVyZW5jZS4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBFeHRlbmRlZCB0eXBlIHJlZmVyZW5jZSwgaWYgYW55LiAqL1xuICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGw7IC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgLyoqIERlZmF1bHQgdHlwZSBpZiBvbWl0dGVkLCBpZiBhbnkuICovXG4gIGRlZmF1bHRUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbDsgLy8gY2FuJ3QgYmUgYSBmdW5jdGlvblxufVxuXG4vKiogUmVwcmVzZW50cyB0aGUga2luZCBvZiBhIHBhcmFtZXRlci4gKi9cbmV4cG9ydCBlbnVtIFBhcmFtZXRlcktpbmQge1xuICAvKiogTm8gc3BlY2lmaWMgZmxhZ3MuICovXG4gIERFRkFVTFQsXG4gIC8qKiBJcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuICovXG4gIE9QVElPTkFMLFxuICAvKiogSXMgYSByZXN0IHBhcmFtZXRlci4gKi9cbiAgUkVTVFxufVxuXG4vKiogUmVwcmVzZW50cyBhIGZ1bmN0aW9uIHBhcmFtZXRlci4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5QQVJBTUVURVI7XG5cbiAgLyoqIFBhcmFtZXRlciBraW5kLiAqL1xuICBwYXJhbWV0ZXJLaW5kOiBQYXJhbWV0ZXJLaW5kO1xuICAvKiogUGFyYW1ldGVyIG5hbWUuICovXG4gIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xuICAvKiogUGFyYW1ldGVyIHR5cGUuICovXG4gIHR5cGU6IFR5cGVOb2RlO1xuICAvKiogSW5pdGlhbGl6ZXIgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4gKi9cbiAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogSW1wbGljaXQgZmllbGQgZGVjbGFyYXRpb24sIGlmIGFwcGxpY2FibGUuICovXG4gIGltcGxpY2l0RmllbGREZWNsYXJhdGlvbjogRmllbGREZWNsYXJhdGlvbiB8IG51bGwgPSBudWxsO1xuICAvKiogQ29tbW9uIGZsYWdzIGluZGljYXRpbmcgc3BlY2lmaWMgdHJhaXRzLiAqL1xuICBmbGFnczogQ29tbW9uRmxhZ3MgPSBDb21tb25GbGFncy5OT05FO1xuXG4gIC8qKiBUZXN0cyBpZiB0aGlzIG5vZGUgaGFzIHRoZSBzcGVjaWZpZWQgZmxhZyBvciBmbGFncy4gKi9cbiAgaXMoZmxhZzogQ29tbW9uRmxhZ3MpOiBib29sIHsgcmV0dXJuICh0aGlzLmZsYWdzICYgZmxhZykgPT0gZmxhZzsgfVxuICAvKiogVGVzdHMgaWYgdGhpcyBub2RlIGhhcyBvbmUgb2YgdGhlIHNwZWNpZmllZCBmbGFncy4gKi9cbiAgaXNBbnkoZmxhZzogQ29tbW9uRmxhZ3MpOiBib29sIHsgcmV0dXJuICh0aGlzLmZsYWdzICYgZmxhZykgIT0gMDsgfVxuICAvKiogU2V0cyBhIHNwZWNpZmljIGZsYWcgb3IgZmxhZ3MuICovXG4gIHNldChmbGFnOiBDb21tb25GbGFncyk6IHZvaWQgeyB0aGlzLmZsYWdzIHw9IGZsYWc7IH1cbn1cblxuLy8gc3BlY2lhbFxuXG4vKiogQnVpbHQtaW4gZGVjb3JhdG9yIGtpbmRzLiAqL1xuZXhwb3J0IGVudW0gRGVjb3JhdG9yS2luZCB7XG4gIENVU1RPTSxcbiAgR0xPQkFMLFxuICBPUEVSQVRPUixcbiAgT1BFUkFUT1JfQklOQVJZLFxuICBPUEVSQVRPUl9QUkVGSVgsXG4gIE9QRVJBVE9SX1BPU1RGSVgsXG4gIFVOTUFOQUdFRCxcbiAgU0VBTEVELFxuICBJTkxJTkUsXG4gIEVYVEVSTkFMLFxuICBCVUlMVElOLFxuICBMQVpZLFxuICBVTlNBRkVcbn1cblxuLyoqIFJldHVybnMgdGhlIGtpbmQgb2YgdGhlIHNwZWNpZmllZCBkZWNvcmF0b3IuIERlZmF1bHRzIHRvIHtAbGluayBEZWNvcmF0b3JLaW5kLkNVU1RPTX0uICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb3JhdG9yTmFtZVRvS2luZChuYW1lOiBFeHByZXNzaW9uKTogRGVjb3JhdG9yS2luZCB7XG4gIC8vIEBnbG9iYWwsIEBpbmxpbmUsIEBvcGVyYXRvciwgQHNlYWxlZCwgQHVubWFuYWdlZFxuICBpZiAobmFtZS5raW5kID09IE5vZGVLaW5kLklERU5USUZJRVIpIHtcbiAgICBsZXQgbmFtZVN0ciA9ICg8SWRlbnRpZmllckV4cHJlc3Npb24+bmFtZSkudGV4dDtcbiAgICBhc3NlcnQobmFtZVN0ci5sZW5ndGgpO1xuICAgIHN3aXRjaCAobmFtZVN0ci5jaGFyQ29kZUF0KDApKSB7XG4gICAgICBjYXNlIENoYXJDb2RlLmI6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJidWlsdGluXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLkJVSUxUSU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5lOiB7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwiZXh0ZXJuYWxcIikgcmV0dXJuIERlY29yYXRvcktpbmQuRVhURVJOQUw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5nOiB7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwiZ2xvYmFsXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLkdMT0JBTDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLmk6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJpbmxpbmVcIikgcmV0dXJuIERlY29yYXRvcktpbmQuSU5MSU5FO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUubDoge1xuICAgICAgICBpZiAobmFtZVN0ciA9PSBcImxhenlcIikgcmV0dXJuIERlY29yYXRvcktpbmQuTEFaWTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLm86IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJvcGVyYXRvclwiKSByZXR1cm4gRGVjb3JhdG9yS2luZC5PUEVSQVRPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLnM6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJzZWFsZWRcIikgcmV0dXJuIERlY29yYXRvcktpbmQuU0VBTEVEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUudToge1xuICAgICAgICBpZiAobmFtZVN0ciA9PSBcInVubWFuYWdlZFwiKSByZXR1cm4gRGVjb3JhdG9yS2luZC5VTk1BTkFHRUQ7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwidW5zYWZlXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLlVOU0FGRTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgIG5hbWUua2luZCA9PSBOb2RlS2luZC5QUk9QRVJUWUFDQ0VTUyAmJlxuICAgICg8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5hbWUpLmV4cHJlc3Npb24ua2luZCA9PSBOb2RlS2luZC5JREVOVElGSUVSXG4gICkge1xuICAgIGxldCBuYW1lU3RyID0gKDxJZGVudGlmaWVyRXhwcmVzc2lvbj4oPFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj5uYW1lKS5leHByZXNzaW9uKS50ZXh0O1xuICAgIGFzc2VydChuYW1lU3RyLmxlbmd0aCk7XG4gICAgbGV0IHByb3BTdHIgPSAoPFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj5uYW1lKS5wcm9wZXJ0eS50ZXh0O1xuICAgIGFzc2VydChwcm9wU3RyLmxlbmd0aCk7XG4gICAgLy8gQG9wZXJhdG9yLmJpbmFyeSwgQG9wZXJhdG9yLnByZWZpeCwgQG9wZXJhdG9yLnBvc3RmaXhcbiAgICBpZiAobmFtZVN0ciA9PSBcIm9wZXJhdG9yXCIpIHtcbiAgICAgIHN3aXRjaCAocHJvcFN0ci5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuYjoge1xuICAgICAgICAgIGlmIChwcm9wU3RyID09IFwiYmluYXJ5XCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLk9QRVJBVE9SX0JJTkFSWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLnA6IHtcbiAgICAgICAgICBzd2l0Y2ggKHByb3BTdHIpIHtcbiAgICAgICAgICAgIGNhc2UgXCJwcmVmaXhcIjogcmV0dXJuIERlY29yYXRvcktpbmQuT1BFUkFUT1JfUFJFRklYO1xuICAgICAgICAgICAgY2FzZSBcInBvc3RmaXhcIjogcmV0dXJuIERlY29yYXRvcktpbmQuT1BFUkFUT1JfUE9TVEZJWDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIERlY29yYXRvcktpbmQuQ1VTVE9NO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGRlY29yYXRvci4gKi9cbmV4cG9ydCBjbGFzcyBEZWNvcmF0b3JOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5ERUNPUkFUT1I7XG5cbiAgLyoqIEJ1aWx0LWluIGtpbmQsIGlmIGFwcGxpY2FibGUuICovXG4gIGRlY29yYXRvcktpbmQ6IERlY29yYXRvcktpbmQ7XG4gIC8qKiBOYW1lIGV4cHJlc3Npb24uICovXG4gIG5hbWU6IEV4cHJlc3Npb247XG4gIC8qKiBBcmd1bWVudCBleHByZXNzaW9ucy4gKi9cbiAgYXJndW1lbnRzOiBFeHByZXNzaW9uW10gfCBudWxsO1xufVxuXG4vKiogQ29tbWVudCBraW5kcy4gKi9cbmV4cG9ydCBlbnVtIENvbW1lbnRLaW5kIHtcbiAgLyoqIExpbmUgY29tbWVudC4gKi9cbiAgTElORSxcbiAgLyoqIFRyaXBsZS1zbGFzaCBjb21tZW50LiAqL1xuICBUUklQTEUsXG4gIC8qKiBCbG9jayBjb21tZW50LiAqL1xuICBCTE9DS1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNvbW1lbnQuICovXG5leHBvcnQgY2xhc3MgQ29tbWVudE5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLkNPTU1FTlQ7XG5cbiAgLyoqIENvbW1lbnQga2luZC4gKi9cbiAgY29tbWVudEtpbmQ6IENvbW1lbnRLaW5kO1xuICAvKiogQ29tbWVudCB0ZXh0LiAqL1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8vIGV4cHJlc3Npb25zXG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBleHByZXNzaW9uIG5vZGVzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV4cHJlc3Npb24gZXh0ZW5kcyBOb2RlIHsgfVxuXG4vKiogUmVwcmVzZW50cyBhbiBpZGVudGlmaWVyIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgSWRlbnRpZmllckV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklERU5USUZJRVI7XG5cbiAgLyoqIFRleHR1YWwgbmFtZS4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogU3ltYm9sLiAqL1xuICBzeW1ib2w6IHN0cmluZzsgLy8gVE9ETzogc3ltYm9sXG4gIC8qKiBXaGV0aGVyIHF1b3RlZCBvciBub3QuICovXG4gIGlzUXVvdGVkOiBib29sO1xufVxuXG4vKiogSW5kaWNhdGVzIHRoZSBraW5kIG9mIGEgbGl0ZXJhbC4gKi9cbmV4cG9ydCBlbnVtIExpdGVyYWxLaW5kIHtcbiAgRkxPQVQsXG4gIElOVEVHRVIsXG4gIFNUUklORyxcbiAgUkVHRVhQLFxuICBBUlJBWSxcbiAgT0JKRUNUXG59XG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBsaXRlcmFsIGV4cHJlc3Npb25zLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExpdGVyYWxFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5MSVRFUkFMO1xuXG4gIC8qKiBTcGVjaWZpYyBsaXRlcmFsIGtpbmQuICovXG4gIGxpdGVyYWxLaW5kOiBMaXRlcmFsS2luZDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYFtdYCBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIExpdGVyYWxFeHByZXNzaW9uIHtcbiAgbGl0ZXJhbEtpbmQgPSBMaXRlcmFsS2luZC5BUlJBWTtcblxuICAvKiogTmVzdGVkIGVsZW1lbnQgZXhwcmVzc2lvbnMuICovXG4gIGVsZW1lbnRFeHByZXNzaW9uczogKEV4cHJlc3Npb24gfCBudWxsKVtdO1xufVxuXG4vKiogSW5kaWNhdGVzIHRoZSBraW5kIG9mIGFuIGFzc2VydGlvbi4gKi9cbmV4cG9ydCBlbnVtIEFzc2VydGlvbktpbmQge1xuICBQUkVGSVgsXG4gIEFTLFxuICBOT05OVUxMXG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGFzc2VydGlvbiBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VydGlvbkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLkFTU0VSVElPTjtcblxuICAvKiogU3BlY2lmaWMga2luZCBvZiB0aGlzIGFzc2VydGlvbi4gKi9cbiAgYXNzZXJ0aW9uS2luZDogQXNzZXJ0aW9uS2luZDtcbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYXNzZXJ0ZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBUYXJnZXQgdHlwZS4gKi9cbiAgdG9UeXBlOiBUeXBlTm9kZSB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYmluYXJ5IGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQmluYXJ5RXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQklOQVJZO1xuXG4gIC8qKiBPcGVyYXRvciB0b2tlbi4gKi9cbiAgb3BlcmF0b3I6IFRva2VuO1xuICAvKiogTGVmdC1oYW5kIHNpZGUgZXhwcmVzc2lvbiAqL1xuICBsZWZ0OiBFeHByZXNzaW9uO1xuICAvKiogUmlnaHQtaGFuZCBzaWRlIGV4cHJlc3Npb24uICovXG4gIHJpZ2h0OiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNhbGwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQ0FMTDtcblxuICAvKiogQ2FsbGVkIGV4cHJlc3Npb24uIFVzdWFsbHkgYW4gaWRlbnRpZmllciBvciBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbi4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbiAgLyoqIFByb3ZpZGVkIHR5cGUgYXJndW1lbnRzLiAqL1xuICB0eXBlQXJndW1lbnRzOiBUeXBlTm9kZVtdIHwgbnVsbDtcbiAgLyoqIFByb3ZpZGVkIGFyZ3VtZW50cy4gKi9cbiAgYXJndW1lbnRzOiBFeHByZXNzaW9uW107XG5cbiAgLyoqIEdldHMgdGhlIHR5cGUgYXJndW1lbnRzIHJhbmdlIGZvciByZXBvcnRpbmcuICovXG4gIGdldCB0eXBlQXJndW1lbnRzUmFuZ2UoKTogUmFuZ2Uge1xuICAgIHZhciB0eXBlQXJndW1lbnRzID0gdGhpcy50eXBlQXJndW1lbnRzO1xuICAgIHZhciBudW1UeXBlQXJndW1lbnRzOiBpMzI7XG4gICAgaWYgKHR5cGVBcmd1bWVudHMgJiYgKG51bVR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBSYW5nZS5qb2luKHR5cGVBcmd1bWVudHNbMF0ucmFuZ2UsIHR5cGVBcmd1bWVudHNbbnVtVHlwZUFyZ3VtZW50cyAtIDFdLnJhbmdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5yYW5nZTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBhcmd1bWVudHMgcmFuZ2UgZm9yIHJlcG9ydGluZy4gKi9cbiAgZ2V0IGFyZ3VtZW50c1JhbmdlKCk6IFJhbmdlIHtcbiAgICB2YXIgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgIHZhciBudW1Bcmd1bWVudHMgPSBhcmdzLmxlbmd0aDtcbiAgICBpZiAobnVtQXJndW1lbnRzKSB7XG4gICAgICByZXR1cm4gUmFuZ2Uuam9pbihhcmdzWzBdLnJhbmdlLCBhcmdzW251bUFyZ3VtZW50cyAtIDFdLnJhbmdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5yYW5nZTtcbiAgfVxufVxuXG4vKiogUmVwcmVzZW50cyBhIGNsYXNzIGV4cHJlc3Npb24gdXNpbmcgdGhlICdjbGFzcycga2V5d29yZC4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0V4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLkNMQVNTO1xuXG4gIC8qKiBJbmxpbmUgY2xhc3MgZGVjbGFyYXRpb24uICovXG4gIGRlY2xhcmF0aW9uOiBDbGFzc0RlY2xhcmF0aW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNvbW1hIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgbXVsdGlwbGUgZXhwcmVzc2lvbnMuICovXG5leHBvcnQgY2xhc3MgQ29tbWFFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5DT01NQTtcblxuICAvKiogU2VxdWVudGlhbCBleHByZXNzaW9ucy4gKi9cbiAgZXhwcmVzc2lvbnM6IEV4cHJlc3Npb25bXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgY29uc3RydWN0b3JgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0b3JFeHByZXNzaW9uIGV4dGVuZHMgSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQ09OU1RSVUNUT1I7XG4gIHRleHQgPSBcImNvbnN0cnVjdG9yXCI7XG4gIHN5bWJvbCA9IENvbW1vblN5bWJvbHMuY29uc3RydWN0b3I7XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgYWNjZXNzIGV4cHJlc3Npb24sIGUuZy4sIGFycmF5IGFjY2Vzcy4gKi9cbmV4cG9ydCBjbGFzcyBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUztcblxuICAvKiogRXhwcmVzc2lvbiBiZWluZyBhY2Nlc3NlZC4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbiAgLyoqIEVsZW1lbnQgb2YgdGhlIGV4cHJlc3Npb24gYmVpbmcgYWNjZXNzZWQuICovXG4gIGVsZW1lbnRFeHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGZsb2F0IGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBGbG9hdExpdGVyYWxFeHByZXNzaW9uIGV4dGVuZHMgTGl0ZXJhbEV4cHJlc3Npb24ge1xuICBsaXRlcmFsS2luZCA9IExpdGVyYWxLaW5kLkZMT0FUO1xuXG4gIC8qKiBGbG9hdCB2YWx1ZS4gKi9cbiAgdmFsdWU6IGY2NDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBmdW5jdGlvbiBleHByZXNzaW9uIHVzaW5nIHRoZSAnZnVuY3Rpb24nIGtleXdvcmQuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25FeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5GVU5DVElPTjtcblxuICAvKiogSW5saW5lIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLiAqL1xuICBkZWNsYXJhdGlvbjogRnVuY3Rpb25EZWNsYXJhdGlvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGluc3RhbmNlb2ZgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VPZkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklOU1RBTkNFT0Y7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYXNzZXJ0ZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBUeXBlIHRvIHRlc3QgZm9yLiAqL1xuICBpc1R5cGU6IFR5cGVOb2RlO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBpbnRlZ2VyIGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuSU5URUdFUjtcblxuICAvKiogSW50ZWdlciB2YWx1ZS4gKi9cbiAgdmFsdWU6IEk2NDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbmV3YCBleHByZXNzaW9uLiBMaWtlIGEgY2FsbCBidXQgd2l0aCBpdHMgb3duIGtpbmQuICovXG5leHBvcnQgY2xhc3MgTmV3RXhwcmVzc2lvbiBleHRlbmRzIENhbGxFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLk5FVztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbnVsbGAgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBOdWxsRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLk5VTEw7XG4gIHRleHQgPSBcIm51bGxcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy5udWxsXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gb2JqZWN0IGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIExpdGVyYWxFeHByZXNzaW9uIHtcbiAgbGl0ZXJhbEtpbmQgPSBMaXRlcmFsS2luZC5PQkpFQ1Q7XG5cbiAgLyoqIEZpZWxkIG5hbWVzLiAqL1xuICBuYW1lczogSWRlbnRpZmllckV4cHJlc3Npb25bXTtcbiAgLyoqIEZpZWxkIHZhbHVlcy4gKi9cbiAgdmFsdWVzOiBFeHByZXNzaW9uW107XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgcGFyZW50aGVzaXplZCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5QQVJFTlRIRVNJWkVEO1xuXG4gIC8qKiBFeHByZXNzaW9uIGluIHBhcmVudGhlc2lzLiAqL1xuICBleHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHByb3BlcnR5IGFjY2VzcyBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYWNjZXNzZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBQcm9wZXJ0eSBvZiB0aGUgZXhwcmVzc2lvbiBiZWluZyBhY2Nlc3NlZC4gKi9cbiAgcHJvcGVydHk6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuUkVHRVhQO1xuXG4gIC8qKiBSZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi4gKi9cbiAgcGF0dGVybjogc3RyaW5nO1xuICAvKiogUmVndWxhciBleHByZXNzaW9uIGZsYWdzLiAqL1xuICBwYXR0ZXJuRmxhZ3M6IHN0cmluZztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB0ZXJuYXJ5IGV4cHJlc3Npb24sIGkuZS4sIHNob3J0IGlmIG5vdGF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIFRlcm5hcnlFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5URVJOQVJZO1xuXG4gIC8qKiBDb25kaXRpb24gZXhwcmVzc2lvbi4gKi9cbiAgY29uZGl0aW9uOiBFeHByZXNzaW9uO1xuICAvKiogRXhwcmVzc2lvbiBleGVjdXRlZCB3aGVuIGNvbmRpdGlvbiBpcyBgdHJ1ZWAuICovXG4gIGlmVGhlbjogRXhwcmVzc2lvbjtcbiAgLyoqIEV4cHJlc3Npb24gZXhlY3V0ZWQgd2hlbiBjb25kaXRpb24gaXMgYGZhbHNlYC4gKi9cbiAgaWZFbHNlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHN0cmluZyBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuU1RSSU5HO1xuXG4gIC8qKiBTdHJpbmcgdmFsdWUgd2l0aG91dCBxdW90ZXMuICovXG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYHN1cGVyYCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFN1cGVyRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlNVUEVSO1xuICB0ZXh0ID0gXCJzdXBlclwiO1xuICBzeW1ib2wgPSBDb21tb25TeW1ib2xzLnN1cGVyXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdGhpc2AgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBUaGlzRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlRISVM7XG4gIHRleHQgPSBcInRoaXNcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy50aGlzXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdHJ1ZWAgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBUcnVlRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlRSVUU7XG4gIHRleHQgPSBcInRydWVcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy50cnVlXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgZmFsc2VgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgRmFsc2VFeHByZXNzaW9uIGV4dGVuZHMgSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuRkFMU0U7XG4gIHRleHQgPSBcImZhbHNlXCI7XG4gIHN5bWJvbCA9IENvbW1vblN5bWJvbHMuZmFsc2VfO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgdW5hcnkgZXhwcmVzc2lvbnMuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5hcnlFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG5cbiAgLyoqIE9wZXJhdG9yIHRva2VuLiAqL1xuICBvcGVyYXRvcjogVG9rZW47XG4gIC8qKiBPcGVyYW5kIGV4cHJlc3Npb24uICovXG4gIG9wZXJhbmQ6IEV4cHJlc3Npb247XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5hcnkgcG9zdGZpeCBleHByZXNzaW9uLCBlLmcuIGEgcG9zdGZpeCBpbmNyZW1lbnQuICovXG5leHBvcnQgY2xhc3MgVW5hcnlQb3N0Zml4RXhwcmVzc2lvbiBleHRlbmRzIFVuYXJ5RXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5VTkFSWVBPU1RGSVg7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5hcnkgcHJlZml4IGV4cHJlc3Npb24sIGUuZy4gYSBuZWdhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBVbmFyeVByZWZpeEV4cHJlc3Npb24gZXh0ZW5kcyBVbmFyeUV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuVU5BUllQUkVGSVg7XG59XG5cbi8vIHN0YXRlbWVudHNcblxuLyoqIEJhc2UgY2xhc3Mgb2YgYWxsIHN0YXRlbWVudCBub2Rlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHsgfVxuXG4vKiogSW5kaWNhdGVzIHRoZSBzcGVjaWZpYyBraW5kIG9mIGEgc291cmNlLiAqL1xuZXhwb3J0IGVudW0gU291cmNlS2luZCB7XG4gIC8qKiBVc2VyLXByb3ZpZGVkIGZpbGUuICovXG4gIFVTRVIgPSAwLFxuICAvKiogVXNlci1wcm92aWRlZCBlbnRyeSBmaWxlLiAqL1xuICBVU0VSX0VOVFJZID0gMSxcbiAgLyoqIExpYnJhcnktcHJvdmlkZWQgZmlsZS4gKi9cbiAgTElCUkFSWSA9IDIsXG4gIC8qKiBMaWJyYXJ5LXByb3ZpZGVkIGVudHJ5IGZpbGUuICovXG4gIExJQlJBUllfRU5UUlkgPSAzXG59XG5cbi8qKiBBIHRvcC1sZXZlbCBzb3VyY2Ugbm9kZS4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2UgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLlNPVVJDRTtcbiAgcGFyZW50ID0gbnVsbDtcblxuICAvKiogU291cmNlIGtpbmQuICovXG4gIHNvdXJjZUtpbmQ6IFNvdXJjZUtpbmQ7XG4gIC8qKiBOb3JtYWxpemVkIHBhdGguICovXG4gIG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmc7XG4gIC8qKiBQYXRoIHVzZWQgaW50ZXJuYWxseS4gKi9cbiAgaW50ZXJuYWxQYXRoOiBzdHJpbmc7XG4gIC8qKiBTaW1wbGUgcGF0aCAobGFzdCBwYXJ0IHdpdGhvdXQgZXh0ZW5zaW9uKS4gKi9cbiAgc2ltcGxlUGF0aDogc3RyaW5nO1xuICAvKiogQ29udGFpbmVkIHN0YXRlbWVudHMuICovXG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdO1xuICAvKiogRnVsbCBzb3VyY2UgdGV4dC4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogVG9rZW5pemVyIHJlZmVyZW5jZS4gKi9cbiAgdG9rZW5pemVyOiBUb2tlbml6ZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIFNvdXJjZSBtYXAgaW5kZXguICovXG4gIGRlYnVnSW5mb0luZGV4OiBpMzIgPSAtMTtcbiAgLyoqIFJlLWV4cG9ydGVkIHNvdXJjZXMuICovXG4gIGV4cG9ydFBhdGhzOiBTZXQ8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IHNvdXJjZSBub2RlLiAqL1xuICBjb25zdHJ1Y3Rvcihub3JtYWxpemVkUGF0aDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIGtpbmQ6IFNvdXJjZUtpbmQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc291cmNlS2luZCA9IGtpbmQ7XG4gICAgdGhpcy5ub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoO1xuICAgIHZhciBpbnRlcm5hbFBhdGggPSBtYW5nbGVJbnRlcm5hbFBhdGgodGhpcy5ub3JtYWxpemVkUGF0aCk7XG4gICAgdGhpcy5pbnRlcm5hbFBhdGggPSBpbnRlcm5hbFBhdGg7XG4gICAgdmFyIHBvcyA9IGludGVybmFsUGF0aC5sYXN0SW5kZXhPZihQQVRIX0RFTElNSVRFUik7XG4gICAgdGhpcy5zaW1wbGVQYXRoID0gcG9zID49IDAgPyBpbnRlcm5hbFBhdGguc3Vic3RyaW5nKHBvcyArIDEpIDogaW50ZXJuYWxQYXRoO1xuICAgIHRoaXMuc3RhdGVtZW50cyA9IG5ldyBBcnJheSgpO1xuICAgIHRoaXMucmFuZ2UgPSBuZXcgUmFuZ2UodGhpcywgMCwgdGV4dC5sZW5ndGgpO1xuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gIH1cblxuICBnZXQgaXNMaWJyYXJ5KCk6IGJvb2wge1xuICAgIHZhciBraW5kID0gdGhpcy5zb3VyY2VLaW5kO1xuICAgIHJldHVybiBraW5kID09IFNvdXJjZUtpbmQuTElCUkFSWSB8fCBraW5kID09IFNvdXJjZUtpbmQuTElCUkFSWV9FTlRSWTtcbiAgfVxufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgZGVjbGFyYXRpb24gc3RhdGVtZW50cy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZWNsYXJhdGlvblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIC8qKiBTaW1wbGUgbmFtZSBiZWluZyBkZWNsYXJlZC4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBBcnJheSBvZiBkZWNvcmF0b3JzLiAqL1xuICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JOb2RlW10gfCBudWxsID0gbnVsbDtcbiAgLyoqIENvbW1vbiBmbGFncyBpbmRpY2F0aW5nIHNwZWNpZmljIHRyYWl0cy4gKi9cbiAgZmxhZ3M6IENvbW1vbkZsYWdzID0gQ29tbW9uRmxhZ3MuTk9ORTtcblxuICAvKiogVGVzdHMgaWYgdGhpcyBub2RlIGhhcyB0aGUgc3BlY2lmaWVkIGZsYWcgb3IgZmxhZ3MuICovXG4gIGlzKGZsYWc6IENvbW1vbkZsYWdzKTogYm9vbCB7IHJldHVybiAodGhpcy5mbGFncyAmIGZsYWcpID09IGZsYWc7IH1cbiAgLyoqIFRlc3RzIGlmIHRoaXMgbm9kZSBoYXMgb25lIG9mIHRoZSBzcGVjaWZpZWQgZmxhZ3MuICovXG4gIGlzQW55KGZsYWc6IENvbW1vbkZsYWdzKTogYm9vbCB7IHJldHVybiAodGhpcy5mbGFncyAmIGZsYWcpICE9IDA7IH1cbiAgLyoqIFNldHMgYSBzcGVjaWZpYyBmbGFnIG9yIGZsYWdzLiAqL1xuICBzZXQoZmxhZzogQ29tbW9uRmxhZ3MpOiB2b2lkIHsgdGhpcy5mbGFncyB8PSBmbGFnOyB9XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGluZGV4IHNpZ25hdHVyZSBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuSU5ERVhTSUdOQVRVUkVERUNMQVJBVElPTjtcblxuICAvKiogS2V5IHR5cGUuICovXG4gIGtleVR5cGU6IE5hbWVkVHlwZU5vZGU7XG4gIC8qKiBWYWx1ZSB0eXBlLiAqL1xuICB2YWx1ZVR5cGU6IFR5cGVOb2RlO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgdmFyaWFibGUtbGlrZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhcmlhYmxlTGlrZURlY2xhcmF0aW9uU3RhdGVtZW50IGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuXG4gIC8qKiBWYXJpYWJsZSB0eXBlLiAqL1xuICB0eXBlOiBUeXBlTm9kZSB8IG51bGw7XG4gIC8qKiBWYXJpYWJsZSBpbml0aWFsaXplci4gKi9cbiAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGJsb2NrIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBCbG9ja1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5CTE9DSztcblxuICAvKiogQ29udGFpbmVkIHN0YXRlbWVudHMuICovXG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBicmVha2Agc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEJyZWFrU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkJSRUFLO1xuXG4gIC8qKiBUYXJnZXQgbGFiZWwsIGlmIGFwcGxpY2FibGUuICovXG4gIGxhYmVsOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYGNsYXNzYCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0RlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuQ0xBU1NERUNMQVJBVElPTjtcblxuICAvKiogQWNjZXB0ZWQgdHlwZSBwYXJhbWV0ZXJzLiAqL1xuICB0eXBlUGFyYW1ldGVyczogVHlwZVBhcmFtZXRlck5vZGVbXSB8IG51bGw7XG4gIC8qKiBCYXNlIGNsYXNzIHR5cGUgYmVpbmcgZXh0ZW5kZWQsIGlmIGFueS4gKi9cbiAgZXh0ZW5kc1R5cGU6IE5hbWVkVHlwZU5vZGUgfCBudWxsOyAvLyBjYW4ndCBiZSBhIGZ1bmN0aW9uXG4gIC8qKiBJbnRlcmZhY2UgdHlwZXMgYmVpbmcgaW1wbGVtZW50ZWQsIGlmIGFueS4gKi9cbiAgaW1wbGVtZW50c1R5cGVzOiBOYW1lZFR5cGVOb2RlW10gfCBudWxsOyAvLyBjYW4ndCBiZSBmdW5jdGlvbnNcbiAgLyoqIENsYXNzIG1lbWJlciBkZWNsYXJhdGlvbnMuICovXG4gIG1lbWJlcnM6IERlY2xhcmF0aW9uU3RhdGVtZW50W107XG5cbiAgZ2V0IGlzR2VuZXJpYygpOiBib29sIHtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLnR5cGVQYXJhbWV0ZXJzO1xuICAgIHJldHVybiB0eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgY29udGludWVgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBDb250aW51ZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5DT05USU5VRTtcblxuICAvKiogVGFyZ2V0IGxhYmVsLCBpZiBhcHBsaWNhYmxlLiAqL1xuICBsYWJlbDogSWRlbnRpZmllckV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBkb2Agc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIERvU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkRPO1xuXG4gIC8qKiBTdGF0ZW1lbnQgYmVpbmcgbG9vcGVkIG92ZXIuICovXG4gIHN0YXRlbWVudDogU3RhdGVtZW50O1xuICAvKiogQ29uZGl0aW9uIHdoZW4gdG8gcmVwZWF0LiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb247XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGVtcHR5IHN0YXRlbWVudCwgaS5lLiwgYSBzZW1pY29sb24gdGVybWluYXRpbmcgbm90aGluZy4gKi9cbmV4cG9ydCBjbGFzcyBFbXB0eVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FTVBUWTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGVudW1gIGRlY2xhcmF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIEVudW1EZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVOVU1ERUNMQVJBVElPTjtcblxuICAvKiogRW51bSB2YWx1ZSBkZWNsYXJhdGlvbnMuICovXG4gIHZhbHVlczogRW51bVZhbHVlRGVjbGFyYXRpb25bXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YWx1ZSBvZiBhbiBgZW51bWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgRW51bVZhbHVlRGVjbGFyYXRpb24gZXh0ZW5kcyBWYXJpYWJsZUxpa2VEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FTlVNVkFMVUVERUNMQVJBVElPTjtcbiAgLy8gbmFtZSBpcyBpbmhlcml0ZWRcblxuICAvKiogVmFsdWUgZXhwcmVzc2lvbi4gKi9cbiAgdmFsdWU6IEV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0IGltcG9ydGAgc3RhdGVtZW50IG9mIGFuIGludGVyZmFjZS4gKi9cbmV4cG9ydCBjbGFzcyBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVElNUE9SVDtcblxuICAvKiogSWRlbnRpZmllciBiZWluZyBpbXBvcnRlZC4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBJZGVudGlmaWVyIGJlaW5nIGV4cG9ydGVkLiAqL1xuICBleHRlcm5hbE5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG1lbWJlciBvZiBhbiBgZXhwb3J0YCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0TWVtYmVyIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5FWFBPUlRNRU1CRVI7XG5cbiAgLyoqIExvY2FsIGlkZW50aWZpZXIuICovXG4gIGxvY2FsTmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBFeHBvcnRlZCBpZGVudGlmaWVyLiAqL1xuICBleHBvcnRlZE5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0YCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0U3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVDtcblxuICAvKiogQXJyYXkgb2YgbWVtYmVycyBpZiBhIHNldCBvZiBuYW1lZCBleHBvcnRzLCBvciBgbnVsbGAgaWYgYSBmaWxlIGV4cG9ydC4gKi9cbiAgbWVtYmVyczogRXhwb3J0TWVtYmVyW10gfCBudWxsO1xuICAvKiogUGF0aCBiZWluZyBleHBvcnRlZCBmcm9tLCBpZiBhcHBsaWNhYmxlLiAqL1xuICBwYXRoOiBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBOb3JtYWxpemVkIHBhdGgsIGlmIGBwYXRoYCBpcyBzZXQuICovXG4gIG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmcgfCBudWxsO1xuICAvKiogTWFuZ2xlZCBpbnRlcm5hbCBwYXRoIGJlaW5nIHJlZmVyZW5jZWQsIGlmIGBwYXRoYCBpcyBzZXQuICovXG4gIGludGVybmFsUGF0aDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhIGRlY2xhcmVkIGV4cG9ydC4gKi9cbiAgaXNEZWNsYXJlOiBib29sO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0IGRlZmF1bHRgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBFeHBvcnREZWZhdWx0U3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ7XG5cbiAgLyoqIERlY2xhcmF0aW9uIGJlaW5nIGV4cG9ydGVkIGFzIGRlZmF1bHQuICovXG4gIGRlY2xhcmF0aW9uOiBEZWNsYXJhdGlvblN0YXRlbWVudDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gZXhwcmVzc2lvbiB0aGF0IGlzIHVzZWQgYXMgYSBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FWFBSRVNTSU9OO1xuXG4gIC8qKiBFeHByZXNzaW9uIGJlaW5nIHVzZWQgYXMgYSBzdGF0ZW1lbnQuKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBmaWVsZCBkZWNsYXJhdGlvbiB3aXRoaW4gYSBgY2xhc3NgLiAqL1xuZXhwb3J0IGNsYXNzIEZpZWxkRGVjbGFyYXRpb24gZXh0ZW5kcyBWYXJpYWJsZUxpa2VEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OO1xuXG4gIC8qKiBQYXJhbWV0ZXIgaW5kZXggaWYgZGVjbGFyZWQgYXMgYSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIsIG90aGVyd2lzZSBgLTFgLiAqL1xuICBwYXJhbWV0ZXJJbmRleDogaTMyID0gLTE7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYGZvcmAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEZvclN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GT1I7XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVyIHN0YXRlbWVudCwgaWYgcHJlc2VudC5cbiAgICogRWl0aGVyIGEge0BsaW5rIFZhcmlhYmxlU3RhdGVtZW50fSBvciB7QGxpbmsgRXhwcmVzc2lvblN0YXRlbWVudH0uXG4gICAqL1xuICBpbml0aWFsaXplcjogU3RhdGVtZW50IHwgbnVsbDtcbiAgLyoqIENvbmRpdGlvbiBleHByZXNzaW9uLCBpZiBwcmVzZW50LiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogSW5jcmVtZW50b3IgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4gKi9cbiAgaW5jcmVtZW50b3I6IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogU3RhdGVtZW50IGJlaW5nIGxvb3BlZCBvdmVyLiAqL1xuICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDtcbn1cblxuLyoqIEluZGljYXRlcyB0aGUga2luZCBvZiBhbiBhcnJheSBmdW5jdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEFycm93S2luZCB7XG4gIC8qKiBOb3QgYW4gYXJyb3cgZnVuY3Rpb24uICovXG4gIE5PTkUsXG4gIC8qKiBQYXJlbnRoZXNpemVkIHBhcmFtZXRlciBsaXN0LiAqL1xuICBBUlJPV19QQVJFTlRIRVNJWkVELFxuICAvKiogU2luZ2xlIHBhcmFtZXRlciB3aXRob3V0IHBhcmVudGhlc2lzLiAqL1xuICBBUlJPV19TSU5HTEVcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgZnVuY3Rpb25gIGRlY2xhcmF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GVU5DVElPTkRFQ0xBUkFUSU9OO1xuXG4gIC8qKiBUeXBlIHBhcmFtZXRlcnMsIGlmIGFueS4gKi9cbiAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsO1xuICAvKiogRnVuY3Rpb24gc2lnbmF0dXJlLiAqL1xuICBzaWduYXR1cmU6IEZ1bmN0aW9uVHlwZU5vZGU7XG4gIC8qKiBCb2R5IHN0YXRlbWVudC4gVXN1YWxseSBhIGJsb2NrLiAqL1xuICBib2R5OiBTdGF0ZW1lbnQgfCBudWxsO1xuICAvKiogQXJyb3cgZnVuY3Rpb24ga2luZCwgaWYgYXBwbGljYWJsZS4gKi9cbiAgYXJyb3dLaW5kOiBBcnJvd0tpbmQ7XG5cbiAgZ2V0IGlzR2VuZXJpYygpOiBib29sIHtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLnR5cGVQYXJhbWV0ZXJzO1xuICAgIHJldHVybiB0eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKiogQ2xvbmVzIHRoaXMgZnVuY3Rpb24gZGVjbGFyYXRpb24uICovXG4gIGNsb25lKCk6IEZ1bmN0aW9uRGVjbGFyYXRpb24ge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgICB0aGlzLm5hbWUsXG4gICAgICB0aGlzLnR5cGVQYXJhbWV0ZXJzLFxuICAgICAgdGhpcy5zaWduYXR1cmUsXG4gICAgICB0aGlzLmJvZHksXG4gICAgICB0aGlzLmRlY29yYXRvcnMsXG4gICAgICB0aGlzLmZsYWdzLFxuICAgICAgdGhpcy5hcnJvd0tpbmQsXG4gICAgICB0aGlzLnJhbmdlXG4gICAgKTtcbiAgfVxufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaWZgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBJZlN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5JRjtcblxuICAvKiogQ29uZGl0aW9uLiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb247XG4gIC8qKiBTdGF0ZW1lbnQgZXhlY3V0ZWQgd2hlbiBjb25kaXRpb24gaXMgYHRydWVgLiAqL1xuICBpZlRydWU6IFN0YXRlbWVudDtcbiAgLyoqIFN0YXRlbWVudCBleGVjdXRlZCB3aGVuIGNvbmRpdGlvbiBpcyBgZmFsc2VgLiAqL1xuICBpZkZhbHNlOiBTdGF0ZW1lbnQgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaW1wb3J0YCBkZWNsYXJhdGlvbiBwYXJ0IG9mIGFuIHtAbGluayBJbXBvcnRTdGF0ZW1lbnR9LiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydERlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuSU1QT1JUREVDTEFSQVRJT047XG5cbiAgLyoqIElkZW50aWZpZXIgYmVpbmcgaW1wb3J0ZWQuICovXG4gIGZvcmVpZ25OYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGltcG9ydGAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydFN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5JTVBPUlQ7XG5cbiAgLyoqIEFycmF5IG9mIG1lbWJlciBkZWNsYXJhdGlvbnMgb3IgYG51bGxgIGlmIGFuIGFzdGVyaXNrIGltcG9ydC4gKi9cbiAgZGVjbGFyYXRpb25zOiBJbXBvcnREZWNsYXJhdGlvbltdIHwgbnVsbDtcbiAgLyoqIE5hbWUgb2YgdGhlIGxvY2FsIG5hbWVzcGFjZSwgaWYgYW4gYXN0ZXJpc2sgaW1wb3J0LiAqL1xuICBuYW1lc3BhY2VOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBQYXRoIGJlaW5nIGltcG9ydGVkIGZyb20uICovXG4gIHBhdGg6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uO1xuICAvKiogTm9ybWFsaXplZCBwYXRoLiAqL1xuICBub3JtYWxpemVkUGF0aDogc3RyaW5nO1xuICAvKiogTWFuZ2xlZCBpbnRlcm5hbCBwYXRoIGJlaW5nIHJlZmVyZW5jZWQuICovXG4gIGludGVybmFsUGF0aDogc3RyaW5nO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaW50ZXJmYXJjZWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgSW50ZXJmYWNlRGVjbGFyYXRpb24gZXh0ZW5kcyBDbGFzc0RlY2xhcmF0aW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklOVEVSRkFDRURFQ0xBUkFUSU9OO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiB3aXRoaW4gYSBgY2xhc3NgLiAqL1xuZXhwb3J0IGNsYXNzIE1ldGhvZERlY2xhcmF0aW9uIGV4dGVuZHMgRnVuY3Rpb25EZWNsYXJhdGlvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5NRVRIT0RERUNMQVJBVElPTjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbmFtZXNwYWNlYCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLk5BTUVTUEFDRURFQ0xBUkFUSU9OO1xuXG4gIC8qKiBBcnJheSBvZiBuYW1lc3BhY2UgbWVtYmVycy4gKi9cbiAgbWVtYmVyczogU3RhdGVtZW50W107XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYHJldHVybmAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIFJldHVyblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5SRVRVUk47XG5cbiAgLyoqIFZhbHVlIGV4cHJlc3Npb24gYmVpbmcgcmV0dXJuZWQsIGlmIHByZXNlbnQuICovXG4gIHZhbHVlOiBFeHByZXNzaW9uIHwgbnVsbDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgYGNhc2VgIHdpdGhpbiBhIGBzd2l0Y2hgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBTd2l0Y2hDYXNlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5TV0lUQ0hDQVNFO1xuXG4gIC8qKiBMYWJlbCBleHByZXNzaW9uLiBgbnVsbGAgaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGNhc2UuICovXG4gIGxhYmVsOiBFeHByZXNzaW9uIHwgbnVsbDtcbiAgLyoqIENvbnRhaW5lZCBzdGF0ZW1lbnRzLiAqL1xuICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgc3dpdGNoYCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgU3dpdGNoU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLlNXSVRDSDtcblxuICAvKiogQ29uZGl0aW9uIGV4cHJlc3Npb24uICovXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbjtcbiAgLyoqIENvbnRhaW5lZCBjYXNlcy4gKi9cbiAgY2FzZXM6IFN3aXRjaENhc2VbXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdGhyb3dgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBUaHJvd1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5USFJPVztcblxuICAvKiogVmFsdWUgZXhwcmVzc2lvbiBiZWluZyB0aHJvd24uICovXG4gIHZhbHVlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGB0cnlgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBUcnlTdGF0ZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVFJZO1xuXG4gIC8qKiBDb250YWluZWQgc3RhdGVtZW50cy4gKi9cbiAgc3RhdGVtZW50czogU3RhdGVtZW50W107XG4gIC8qKiBFeGNlcHRpb24gdmFyaWFibGUgbmFtZSwgaWYgYSBgY2F0Y2hgIGNsYXVzZSBpcyBwcmVzZW50LiAqL1xuICBjYXRjaFZhcmlhYmxlOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBTdGF0ZW1lbnRzIGJlaW5nIGV4ZWN1dGVkIG9uIGNhdGNoLCBpZiBhIGBjYXRjaGAgY2xhdXNlIGlzIHByZXNlbnQuICovXG4gIGNhdGNoU3RhdGVtZW50czogU3RhdGVtZW50W10gfCBudWxsO1xuICAvKiogU3RhdGVtZW50cyBiZWluZyBleGVjdXRlZCBhZnRlcndhcmRzLCBpZiBhIGBmaW5hbGx5YCBjbGF1c2UgaXMgcHJlc2VudC4gKi9cbiAgZmluYWxseVN0YXRlbWVudHM6IFN0YXRlbWVudFtdIHwgbnVsbDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdHlwZWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgVHlwZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OO1xuXG4gIC8qKiBUeXBlIHBhcmFtZXRlcnMsIGlmIGFueS4gKi9cbiAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsO1xuICAvKiogVHlwZSBiZWluZyBhbGlhc2VkLiAqL1xuICB0eXBlOiBUeXBlTm9kZTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBwYXJ0IG9mIGEge0BsaW5rIFZhcmlhYmxlU3RhdGVtZW50fS4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGV4dGVuZHMgVmFyaWFibGVMaWtlRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVkFSSUFCTEVERUNMQVJBVElPTjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YXJpYWJsZSBzdGF0ZW1lbnQgd3JhcHBpbmcge0BsaW5rIFZhcmlhYmxlRGVjbGFyYXRpb259cy4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5WQVJJQUJMRTtcblxuICAvKiogQXJyYXkgb2YgZGVjb3JhdG9ycy4gKi9cbiAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbDtcbiAgLyoqIEFycmF5IG9mIG1lbWJlciBkZWNsYXJhdGlvbnMuICovXG4gIGRlY2xhcmF0aW9uczogVmFyaWFibGVEZWNsYXJhdGlvbltdO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHZvaWQgc3RhdGVtZW50IGRyb3BwaW5nIGFuIGV4cHJlc3Npb24ncyB2YWx1ZS4gKi9cbmV4cG9ydCBjbGFzcyBWb2lkU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLlZPSUQ7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgZHJvcHBlZC4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgd2hpbGVgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBXaGlsZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5XSElMRTtcblxuICAvKiogQ29uZGl0aW9uIGV4cHJlc3Npb24uICovXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbjtcbiAgLyoqIFN0YXRlbWVudCBiZWluZyBsb29wZWQgb3Zlci4gKi9cbiAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ7XG59XG5cbi8qKiBGaW5kcyB0aGUgZmlyc3QgZGVjb3JhdG9yIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQga2luZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGVjb3JhdG9yKGtpbmQ6IERlY29yYXRvcktpbmQsIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwpOiBEZWNvcmF0b3JOb2RlIHwgbnVsbCB7XG4gIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgbGV0IGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICBpZiAoZGVjb3JhdG9yLmRlY29yYXRvcktpbmQgPT0ga2luZCkgcmV0dXJuIGRlY29yYXRvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKiBNYW5nbGVzIGFuIGV4dGVybmFsIHRvIGFuIGludGVybmFsIHBhdGguICovXG5leHBvcnQgZnVuY3Rpb24gbWFuZ2xlSW50ZXJuYWxQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoLmVuZHNXaXRoKFwiLnRzXCIpKSBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSAzKTtcbiAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIHR5cGUgbm9kZSByZXByZXNlbnRzIGFuIG9taXR0ZWQgdHlwZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVPbWl0dGVkKHR5cGU6IFR5cGVOb2RlKTogYm9vbCB7XG4gIGlmICh0eXBlLmtpbmQgPT0gTm9kZUtpbmQuTkFNRURUWVBFKSB7XG4gICAgbGV0IG5hbWUgPSAoPE5hbWVkVHlwZU5vZGU+dHlwZSkubmFtZTtcbiAgICByZXR1cm4gIShuYW1lLm5leHQgfHwgbmFtZS5pZGVudGlmaWVyLnRleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0= + +/***/ }), + +/***/ "../src/common.ts": +/*!************************!*\ + !*** ../src/common.ts ***! + \************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Common constants. + * @module common + */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +/** Indicates traits of a {@link Node} or {@link Element}. */ +var CommonFlags; +(function (CommonFlags) { + /** No flags set. */ + CommonFlags[CommonFlags["NONE"] = 0] = "NONE"; + // Basic modifiers + /** Has an `import` modifier. */ + CommonFlags[CommonFlags["IMPORT"] = 1] = "IMPORT"; + /** Has an `export` modifier. */ + CommonFlags[CommonFlags["EXPORT"] = 2] = "EXPORT"; + /** Has a `declare` modifier. */ + CommonFlags[CommonFlags["DECLARE"] = 4] = "DECLARE"; + /** Has a `const` modifier. */ + CommonFlags[CommonFlags["CONST"] = 8] = "CONST"; + /** Has a `let` modifier. */ + CommonFlags[CommonFlags["LET"] = 16] = "LET"; + /** Has a `static` modifier. */ + CommonFlags[CommonFlags["STATIC"] = 32] = "STATIC"; + /** Has a `readonly` modifier. */ + CommonFlags[CommonFlags["READONLY"] = 64] = "READONLY"; + /** Has an `abstract` modifier. */ + CommonFlags[CommonFlags["ABSTRACT"] = 128] = "ABSTRACT"; + /** Has a `public` modifier. */ + CommonFlags[CommonFlags["PUBLIC"] = 256] = "PUBLIC"; + /** Has a `private` modifier. */ + CommonFlags[CommonFlags["PRIVATE"] = 512] = "PRIVATE"; + /** Has a `protected` modifier. */ + CommonFlags[CommonFlags["PROTECTED"] = 1024] = "PROTECTED"; + /** Has a `get` modifier. */ + CommonFlags[CommonFlags["GET"] = 2048] = "GET"; + /** Has a `set` modifier. */ + CommonFlags[CommonFlags["SET"] = 4096] = "SET"; + /** Has a definite assignment assertion `!` as in `x!: i32;`. */ + CommonFlags[CommonFlags["DEFINITE_ASSIGNMENT"] = 8192] = "DEFINITE_ASSIGNMENT"; + // Extended modifiers usually derived from basic modifiers + /** Is ambient, that is either declared or nested in a declared element. */ + CommonFlags[CommonFlags["AMBIENT"] = 16384] = "AMBIENT"; + /** Is generic. */ + CommonFlags[CommonFlags["GENERIC"] = 32768] = "GENERIC"; + /** Is part of a generic context. */ + CommonFlags[CommonFlags["GENERIC_CONTEXT"] = 65536] = "GENERIC_CONTEXT"; + /** Is an instance member. */ + CommonFlags[CommonFlags["INSTANCE"] = 131072] = "INSTANCE"; + /** Is a constructor. */ + CommonFlags[CommonFlags["CONSTRUCTOR"] = 262144] = "CONSTRUCTOR"; + /** Is a module export. */ + CommonFlags[CommonFlags["MODULE_EXPORT"] = 524288] = "MODULE_EXPORT"; + /** Is a module import. */ + CommonFlags[CommonFlags["MODULE_IMPORT"] = 1048576] = "MODULE_IMPORT"; + // Compilation states + /** Is resolved. */ + CommonFlags[CommonFlags["RESOLVED"] = 2097152] = "RESOLVED"; + /** Is compiled. */ + CommonFlags[CommonFlags["COMPILED"] = 4194304] = "COMPILED"; + /** Has a constant value and is therefore inlined. */ + CommonFlags[CommonFlags["INLINED"] = 8388608] = "INLINED"; + /** Is scoped. */ + CommonFlags[CommonFlags["SCOPED"] = 16777216] = "SCOPED"; + /** Is a trampoline. */ + CommonFlags[CommonFlags["TRAMPOLINE"] = 33554432] = "TRAMPOLINE"; + /** Is a virtual method. */ + CommonFlags[CommonFlags["VIRTUAL"] = 67108864] = "VIRTUAL"; + /** Is the main function. */ + CommonFlags[CommonFlags["MAIN"] = 134217728] = "MAIN"; + // Other + /** Is quoted. */ + CommonFlags[CommonFlags["QUOTED"] = 268435456] = "QUOTED"; +})(CommonFlags = exports.CommonFlags || (exports.CommonFlags = {})); +/** Path delimiter inserted between file system levels. */ +exports.PATH_DELIMITER = "/"; +/** Substitution used to indicate the parent directory. */ +exports.PARENT_SUBST = ".."; +/** Function name prefix used for getters. */ +exports.GETTER_PREFIX = "get:"; +/** Function name prefix used for setters. */ +exports.SETTER_PREFIX = "set:"; +/** Delimiter used between class names and instance members. */ +exports.INSTANCE_DELIMITER = "#"; +/** Delimiter used between class and namespace names and static members. */ +exports.STATIC_DELIMITER = "."; +/** Delimiter used between a function and its inner elements. */ +exports.INNER_DELIMITER = "~"; +/** Substitution used to indicate a library directory. */ +exports.LIBRARY_SUBST = "~lib"; +/** Library directory prefix. */ +exports.LIBRARY_PREFIX = exports.LIBRARY_SUBST + exports.PATH_DELIMITER; +/** Path index suffix. */ +exports.INDEX_SUFFIX = exports.PATH_DELIMITER + "index"; +/** Common compiler symbols. */ +var CommonSymbols; +(function (CommonSymbols) { + // special + CommonSymbols.EMPTY = ""; + // types + CommonSymbols.i8 = "i8"; + CommonSymbols.i16 = "i16"; + CommonSymbols.i32 = "i32"; + CommonSymbols.i64 = "i64"; + CommonSymbols.isize = "isize"; + CommonSymbols.u8 = "u8"; + CommonSymbols.u16 = "u16"; + CommonSymbols.u32 = "u32"; + CommonSymbols.u64 = "u64"; + CommonSymbols.usize = "usize"; + CommonSymbols.bool = "bool"; + CommonSymbols.f32 = "f32"; + CommonSymbols.f64 = "f64"; + CommonSymbols.v128 = "v128"; + CommonSymbols.i8x16 = "i8x16"; + CommonSymbols.u8x16 = "u8x16"; + CommonSymbols.i16x8 = "i16x8"; + CommonSymbols.u16x8 = "u16x8"; + CommonSymbols.i32x4 = "i32x4"; + CommonSymbols.u32x4 = "u32x4"; + CommonSymbols.i64x2 = "i64x2"; + CommonSymbols.u64x2 = "u64x2"; + CommonSymbols.f32x4 = "f32x4"; + CommonSymbols.f64x2 = "f64x2"; + CommonSymbols.void_ = "void"; + CommonSymbols.number = "number"; + CommonSymbols.boolean = "boolean"; + CommonSymbols.string = "string"; + CommonSymbols.native = "native"; + CommonSymbols.indexof = "indexof"; + CommonSymbols.valueof = "valueof"; + CommonSymbols.returnof = "returnof"; + // aliases + CommonSymbols.null_ = "null"; + CommonSymbols.true_ = "true"; + CommonSymbols.false_ = "false"; + // objects + CommonSymbols.this_ = "this"; + CommonSymbols.super_ = "super"; + CommonSymbols.constructor = "constructor"; + // constants + CommonSymbols.ASC_TARGET = "ASC_TARGET"; + CommonSymbols.ASC_NO_TREESHAKING = "ASC_NO_TREESHAKING"; + CommonSymbols.ASC_NO_ASSERT = "ASC_NO_ASSERT"; + CommonSymbols.ASC_MEMORY_BASE = "ASC_MEMORY_BASE"; + CommonSymbols.ASC_OPTIMIZE_LEVEL = "ASC_OPTIMIZE_LEVEL"; + CommonSymbols.ASC_SHRINK_LEVEL = "ASC_SHRINK_LEVEL"; + CommonSymbols.ASC_FEATURE_MUTABLE_GLOBAL = "ASC_FEATURE_MUTABLE_GLOBAL"; + CommonSymbols.ASC_FEATURE_SIGN_EXTENSION = "ASC_FEATURE_SIGN_EXTENSION"; + CommonSymbols.ASC_FEATURE_BULK_MEMORY = "ASC_FEATURE_BULK_MEMORY"; + CommonSymbols.ASC_FEATURE_SIMD = "ASC_FEATURE_SIMD"; + CommonSymbols.ASC_FEATURE_THREADS = "ASC_FEATURE_THREADS"; + // classes + CommonSymbols.I8 = "I8"; + CommonSymbols.I16 = "I16"; + CommonSymbols.I32 = "I32"; + CommonSymbols.I64 = "I64"; + CommonSymbols.Isize = "Isize"; + CommonSymbols.U8 = "U8"; + CommonSymbols.U16 = "U16"; + CommonSymbols.U32 = "U32"; + CommonSymbols.U64 = "U64"; + CommonSymbols.Usize = "Usize"; + CommonSymbols.Bool = "Bool"; + CommonSymbols.F32 = "F32"; + CommonSymbols.F64 = "F64"; + CommonSymbols.V128 = "V128"; + CommonSymbols.String = "String"; + CommonSymbols.Array = "Array"; + CommonSymbols.FixedArray = "FixedArray"; + CommonSymbols.Set = "Set"; + CommonSymbols.Map = "Map"; + CommonSymbols.ArrayBufferView = "ArrayBufferView"; + CommonSymbols.ArrayBuffer = "ArrayBuffer"; + CommonSymbols.Math = "Math"; + CommonSymbols.Mathf = "Mathf"; + CommonSymbols.Int8Array = "Int8Array"; + CommonSymbols.Int16Array = "Int16Array"; + CommonSymbols.Int32Array = "Int32Array"; + CommonSymbols.Int64Array = "Int64Array"; + CommonSymbols.Uint8Array = "Uint8Array"; + CommonSymbols.Uint8ClampedArray = "Uint8ClampedArray"; + CommonSymbols.Uint16Array = "Uint16Array"; + CommonSymbols.Uint32Array = "Uint32Array"; + CommonSymbols.Uint64Array = "Uint64Array"; + CommonSymbols.Float32Array = "Float32Array"; + CommonSymbols.Float64Array = "Float64Array"; + // runtime + CommonSymbols.abort = "abort"; + CommonSymbols.pow = "pow"; + CommonSymbols.mod = "mod"; + CommonSymbols.alloc = "__alloc"; + CommonSymbols.realloc = "__realloc"; + CommonSymbols.free = "__free"; + CommonSymbols.retain = "__retain"; + CommonSymbols.release = "__release"; + CommonSymbols.collect = "__collect"; + CommonSymbols.typeinfo = "__typeinfo"; + CommonSymbols.instanceof_ = "__instanceof"; + CommonSymbols.visit = "__visit"; + CommonSymbols.allocArray = "__allocArray"; +})(CommonSymbols = exports.CommonSymbols || (exports.CommonSymbols = {})); +// shared +var feature_1 = __webpack_require__(/*! ../std/assembly/shared/feature */ "../std/assembly/shared/feature.ts"); +exports.Feature = feature_1.Feature; +var target_1 = __webpack_require__(/*! ../std/assembly/shared/target */ "../std/assembly/shared/target.ts"); +exports.Target = target_1.Target; +var typeinfo_1 = __webpack_require__(/*! ../std/assembly/shared/typeinfo */ "../std/assembly/shared/typeinfo.ts"); +exports.Typeinfo = typeinfo_1.Typeinfo; +exports.TypeinfoFlags = typeinfo_1.TypeinfoFlags; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHLENBQUEsS0FBSzs7QUFFUiw2REFBNkQ7QUFDN0QsSUFBWSxXQXlFWDtBQXpFRCxXQUFZLFdBQVc7SUFDckIsb0JBQW9CO0lBQ3BCLDZDQUFRLENBQUE7SUFFUixrQkFBa0I7SUFFbEIsZ0NBQWdDO0lBQ2hDLGlEQUFlLENBQUE7SUFDZixnQ0FBZ0M7SUFDaEMsaURBQWUsQ0FBQTtJQUNmLGdDQUFnQztJQUNoQyxtREFBZ0IsQ0FBQTtJQUNoQiw4QkFBOEI7SUFDOUIsK0NBQWMsQ0FBQTtJQUNkLDRCQUE0QjtJQUM1Qiw0Q0FBWSxDQUFBO0lBQ1osK0JBQStCO0lBQy9CLGtEQUFlLENBQUE7SUFDZixpQ0FBaUM7SUFDakMsc0RBQWlCLENBQUE7SUFDakIsa0NBQWtDO0lBQ2xDLHVEQUFpQixDQUFBO0lBQ2pCLCtCQUErQjtJQUMvQixtREFBZSxDQUFBO0lBQ2YsZ0NBQWdDO0lBQ2hDLHFEQUFnQixDQUFBO0lBQ2hCLGtDQUFrQztJQUNsQywwREFBbUIsQ0FBQTtJQUNuQiw0QkFBNEI7SUFDNUIsOENBQWEsQ0FBQTtJQUNiLDRCQUE0QjtJQUM1Qiw4Q0FBYSxDQUFBO0lBQ2IsZ0VBQWdFO0lBQ2hFLDhFQUE2QixDQUFBO0lBRTdCLDBEQUEwRDtJQUUxRCwyRUFBMkU7SUFDM0UsdURBQWlCLENBQUE7SUFDakIsa0JBQWtCO0lBQ2xCLHVEQUFpQixDQUFBO0lBQ2pCLG9DQUFvQztJQUNwQyx1RUFBeUIsQ0FBQTtJQUN6Qiw2QkFBNkI7SUFDN0IsMERBQWtCLENBQUE7SUFDbEIsd0JBQXdCO0lBQ3hCLGdFQUFxQixDQUFBO0lBQ3JCLDBCQUEwQjtJQUMxQixvRUFBdUIsQ0FBQTtJQUN2QiwwQkFBMEI7SUFDMUIscUVBQXVCLENBQUE7SUFFdkIscUJBQXFCO0lBRXJCLG1CQUFtQjtJQUNuQiwy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RDtBQUE5QywwQkFBQSxNQUFNLENBQUE7QUFDZiw0REFBMEU7QUFBakUsOEJBQUEsUUFBUSxDQUFBO0FBQUUsbUNBQUEsYUFBYSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gY29uc3RhbnRzLlxuICogQG1vZHVsZSBjb21tb25cbiAqLy8qKiovXG5cbi8qKiBJbmRpY2F0ZXMgdHJhaXRzIG9mIGEge0BsaW5rIE5vZGV9IG9yIHtAbGluayBFbGVtZW50fS4gKi9cbmV4cG9ydCBlbnVtIENvbW1vbkZsYWdzIHtcbiAgLyoqIE5vIGZsYWdzIHNldC4gKi9cbiAgTk9ORSA9IDAsXG5cbiAgLy8gQmFzaWMgbW9kaWZpZXJzXG5cbiAgLyoqIEhhcyBhbiBgaW1wb3J0YCBtb2RpZmllci4gKi9cbiAgSU1QT1JUID0gMSA8PCAwLFxuICAvKiogSGFzIGFuIGBleHBvcnRgIG1vZGlmaWVyLiAqL1xuICBFWFBPUlQgPSAxIDw8IDEsXG4gIC8qKiBIYXMgYSBgZGVjbGFyZWAgbW9kaWZpZXIuICovXG4gIERFQ0xBUkUgPSAxIDw8IDIsXG4gIC8qKiBIYXMgYSBgY29uc3RgIG1vZGlmaWVyLiAqL1xuICBDT05TVCA9IDEgPDwgMyxcbiAgLyoqIEhhcyBhIGBsZXRgIG1vZGlmaWVyLiAqL1xuICBMRVQgPSAxIDw8IDQsXG4gIC8qKiBIYXMgYSBgc3RhdGljYCBtb2RpZmllci4gKi9cbiAgU1RBVElDID0gMSA8PCA1LFxuICAvKiogSGFzIGEgYHJlYWRvbmx5YCBtb2RpZmllci4gKi9cbiAgUkVBRE9OTFkgPSAxIDw8IDYsXG4gIC8qKiBIYXMgYW4gYGFic3RyYWN0YCBtb2RpZmllci4gKi9cbiAgQUJTVFJBQ1QgPSAxIDw8IDcsXG4gIC8qKiBIYXMgYSBgcHVibGljYCBtb2RpZmllci4gKi9cbiAgUFVCTElDID0gMSA8PCA4LFxuICAvKiogSGFzIGEgYHByaXZhdGVgIG1vZGlmaWVyLiAqL1xuICBQUklWQVRFID0gMSA8PCA5LFxuICAvKiogSGFzIGEgYHByb3RlY3RlZGAgbW9kaWZpZXIuICovXG4gIFBST1RFQ1RFRCA9IDEgPDwgMTAsXG4gIC8qKiBIYXMgYSBgZ2V0YCBtb2RpZmllci4gKi9cbiAgR0VUID0gMSA8PCAxMSxcbiAgLyoqIEhhcyBhIGBzZXRgIG1vZGlmaWVyLiAqL1xuICBTRVQgPSAxIDw8IDEyLFxuICAvKiogSGFzIGEgZGVmaW5pdGUgYXNzaWdubWVudCBhc3NlcnRpb24gYCFgIGFzIGluIGB4ITogaTMyO2AuICovXG4gIERFRklOSVRFX0FTU0lHTk1FTlQgPSAxIDw8IDEzLFxuXG4gIC8vIEV4dGVuZGVkIG1vZGlmaWVycyB1c3VhbGx5IGRlcml2ZWQgZnJvbSBiYXNpYyBtb2RpZmllcnNcblxuICAvKiogSXMgYW1iaWVudCwgdGhhdCBpcyBlaXRoZXIgZGVjbGFyZWQgb3IgbmVzdGVkIGluIGEgZGVjbGFyZWQgZWxlbWVudC4gKi9cbiAgQU1CSUVOVCA9IDEgPDwgMTQsXG4gIC8qKiBJcyBnZW5lcmljLiAqL1xuICBHRU5FUklDID0gMSA8PCAxNSxcbiAgLyoqIElzIHBhcnQgb2YgYSBnZW5lcmljIGNvbnRleHQuICovXG4gIEdFTkVSSUNfQ09OVEVYVCA9IDEgPDwgMTYsXG4gIC8qKiBJcyBhbiBpbnN0YW5jZSBtZW1iZXIuICovXG4gIElOU1RBTkNFID0gMSA8PCAxNyxcbiAgLyoqIElzIGEgY29uc3RydWN0b3IuICovXG4gIENPTlNUUlVDVE9SID0gMSA8PCAxOCxcbiAgLyoqIElzIGEgbW9kdWxlIGV4cG9ydC4gKi9cbiAgTU9EVUxFX0VYUE9SVCA9IDEgPDwgMTksXG4gIC8qKiBJcyBhIG1vZHVsZSBpbXBvcnQuICovXG4gIE1PRFVMRV9JTVBPUlQgPSAxIDw8IDIwLFxuXG4gIC8vIENvbXBpbGF0aW9uIHN0YXRlc1xuXG4gIC8qKiBJcyByZXNvbHZlZC4gKi9cbiAgUkVTT0xWRUQgPSAxIDw8IDIxLFxuICAvKiogSXMgY29tcGlsZWQuICovXG4gIENPTVBJTEVEID0gMSA8PCAyMixcbiAgLyoqIEhhcyBhIGNvbnN0YW50IHZhbHVlIGFuZCBpcyB0aGVyZWZvcmUgaW5saW5lZC4gKi9cbiAgSU5MSU5FRCA9IDEgPDwgMjMsXG4gIC8qKiBJcyBzY29wZWQuICovXG4gIFNDT1BFRCA9IDEgPDwgMjQsXG4gIC8qKiBJcyBhIHRyYW1wb2xpbmUuICovXG4gIFRSQU1QT0xJTkUgPSAxIDw8IDI1LFxuICAvKiogSXMgYSB2aXJ0dWFsIG1ldGhvZC4gKi9cbiAgVklSVFVBTCA9IDEgPDwgMjYsXG4gIC8qKiBJcyB0aGUgbWFpbiBmdW5jdGlvbi4gKi9cbiAgTUFJTiA9IDEgPDwgMjcsXG5cbiAgLy8gT3RoZXJcblxuICAvKiogSXMgcXVvdGVkLiAqL1xuICBRVU9URUQgPSAxIDw8IDI4XG59XG5cbi8qKiBQYXRoIGRlbGltaXRlciBpbnNlcnRlZCBiZXR3ZWVuIGZpbGUgc3lzdGVtIGxldmVscy4gKi9cbmV4cG9ydCBjb25zdCBQQVRIX0RFTElNSVRFUiA9IFwiL1wiO1xuLyoqIFN1YnN0aXR1dGlvbiB1c2VkIHRvIGluZGljYXRlIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiAqL1xuZXhwb3J0IGNvbnN0IFBBUkVOVF9TVUJTVCA9IFwiLi5cIjtcbi8qKiBGdW5jdGlvbiBuYW1lIHByZWZpeCB1c2VkIGZvciBnZXR0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IEdFVFRFUl9QUkVGSVggPSBcImdldDpcIjtcbi8qKiBGdW5jdGlvbiBuYW1lIHByZWZpeCB1c2VkIGZvciBzZXR0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFNFVFRFUl9QUkVGSVggPSBcInNldDpcIjtcbi8qKiBEZWxpbWl0ZXIgdXNlZCBiZXR3ZWVuIGNsYXNzIG5hbWVzIGFuZCBpbnN0YW5jZSBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IElOU1RBTkNFX0RFTElNSVRFUiA9IFwiI1wiO1xuLyoqIERlbGltaXRlciB1c2VkIGJldHdlZW4gY2xhc3MgYW5kIG5hbWVzcGFjZSBuYW1lcyBhbmQgc3RhdGljIG1lbWJlcnMuICovXG5leHBvcnQgY29uc3QgU1RBVElDX0RFTElNSVRFUiA9IFwiLlwiO1xuLyoqIERlbGltaXRlciB1c2VkIGJldHdlZW4gYSBmdW5jdGlvbiBhbmQgaXRzIGlubmVyIGVsZW1lbnRzLiAqL1xuZXhwb3J0IGNvbnN0IElOTkVSX0RFTElNSVRFUiA9IFwiflwiO1xuLyoqIFN1YnN0aXR1dGlvbiB1c2VkIHRvIGluZGljYXRlIGEgbGlicmFyeSBkaXJlY3RvcnkuICovXG5leHBvcnQgY29uc3QgTElCUkFSWV9TVUJTVCA9IFwifmxpYlwiO1xuLyoqIExpYnJhcnkgZGlyZWN0b3J5IHByZWZpeC4gKi9cbmV4cG9ydCBjb25zdCBMSUJSQVJZX1BSRUZJWCA9IExJQlJBUllfU1VCU1QgKyBQQVRIX0RFTElNSVRFUjtcbi8qKiBQYXRoIGluZGV4IHN1ZmZpeC4gKi9cbmV4cG9ydCBjb25zdCBJTkRFWF9TVUZGSVggPSBQQVRIX0RFTElNSVRFUiArIFwiaW5kZXhcIjtcblxuLyoqIENvbW1vbiBjb21waWxlciBzeW1ib2xzLiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBDb21tb25TeW1ib2xzIHtcbiAgLy8gc3BlY2lhbFxuICBleHBvcnQgY29uc3QgRU1QVFkgPSBcIlwiO1xuICAvLyB0eXBlc1xuICBleHBvcnQgY29uc3QgaTggPSBcImk4XCI7XG4gIGV4cG9ydCBjb25zdCBpMTYgPSBcImkxNlwiO1xuICBleHBvcnQgY29uc3QgaTMyID0gXCJpMzJcIjtcbiAgZXhwb3J0IGNvbnN0IGk2NCA9IFwiaTY0XCI7XG4gIGV4cG9ydCBjb25zdCBpc2l6ZSA9IFwiaXNpemVcIjtcbiAgZXhwb3J0IGNvbnN0IHU4ID0gXCJ1OFwiO1xuICBleHBvcnQgY29uc3QgdTE2ID0gXCJ1MTZcIjtcbiAgZXhwb3J0IGNvbnN0IHUzMiA9IFwidTMyXCI7XG4gIGV4cG9ydCBjb25zdCB1NjQgPSBcInU2NFwiO1xuICBleHBvcnQgY29uc3QgdXNpemUgPSBcInVzaXplXCI7XG4gIGV4cG9ydCBjb25zdCBib29sID0gXCJib29sXCI7XG4gIGV4cG9ydCBjb25zdCBmMzIgPSBcImYzMlwiO1xuICBleHBvcnQgY29uc3QgZjY0ID0gXCJmNjRcIjtcbiAgZXhwb3J0IGNvbnN0IHYxMjggPSBcInYxMjhcIjtcbiAgZXhwb3J0IGNvbnN0IGk4eDE2ID0gXCJpOHgxNlwiO1xuICBleHBvcnQgY29uc3QgdTh4MTYgPSBcInU4eDE2XCI7XG4gIGV4cG9ydCBjb25zdCBpMTZ4OCA9IFwiaTE2eDhcIjtcbiAgZXhwb3J0IGNvbnN0IHUxNng4ID0gXCJ1MTZ4OFwiO1xuICBleHBvcnQgY29uc3QgaTMyeDQgPSBcImkzMng0XCI7XG4gIGV4cG9ydCBjb25zdCB1MzJ4NCA9IFwidTMyeDRcIjtcbiAgZXhwb3J0IGNvbnN0IGk2NHgyID0gXCJpNjR4MlwiO1xuICBleHBvcnQgY29uc3QgdTY0eDIgPSBcInU2NHgyXCI7XG4gIGV4cG9ydCBjb25zdCBmMzJ4NCA9IFwiZjMyeDRcIjtcbiAgZXhwb3J0IGNvbnN0IGY2NHgyID0gXCJmNjR4MlwiO1xuICBleHBvcnQgY29uc3Qgdm9pZF8gPSBcInZvaWRcIjtcbiAgZXhwb3J0IGNvbnN0IG51bWJlciA9IFwibnVtYmVyXCI7XG4gIGV4cG9ydCBjb25zdCBib29sZWFuID0gXCJib29sZWFuXCI7XG4gIGV4cG9ydCBjb25zdCBzdHJpbmcgPSBcInN0cmluZ1wiO1xuICBleHBvcnQgY29uc3QgbmF0aXZlID0gXCJuYXRpdmVcIjtcbiAgZXhwb3J0IGNvbnN0IGluZGV4b2YgPSBcImluZGV4b2ZcIjtcbiAgZXhwb3J0IGNvbnN0IHZhbHVlb2YgPSBcInZhbHVlb2ZcIjtcbiAgZXhwb3J0IGNvbnN0IHJldHVybm9mID0gXCJyZXR1cm5vZlwiO1xuICAvLyBhbGlhc2VzXG4gIGV4cG9ydCBjb25zdCBudWxsXyA9IFwibnVsbFwiO1xuICBleHBvcnQgY29uc3QgdHJ1ZV8gPSBcInRydWVcIjtcbiAgZXhwb3J0IGNvbnN0IGZhbHNlXyA9IFwiZmFsc2VcIjtcbiAgLy8gb2JqZWN0c1xuICBleHBvcnQgY29uc3QgdGhpc18gPSBcInRoaXNcIjtcbiAgZXhwb3J0IGNvbnN0IHN1cGVyXyA9IFwic3VwZXJcIjtcbiAgZXhwb3J0IGNvbnN0IGNvbnN0cnVjdG9yID0gXCJjb25zdHJ1Y3RvclwiO1xuICAvLyBjb25zdGFudHNcbiAgZXhwb3J0IGNvbnN0IEFTQ19UQVJHRVQgPSBcIkFTQ19UQVJHRVRcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19OT19UUkVFU0hBS0lORyA9IFwiQVNDX05PX1RSRUVTSEFLSU5HXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfTk9fQVNTRVJUID0gXCJBU0NfTk9fQVNTRVJUXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfTUVNT1JZX0JBU0UgPSBcIkFTQ19NRU1PUllfQkFTRVwiO1xuICBleHBvcnQgY29uc3QgQVNDX09QVElNSVpFX0xFVkVMID0gXCJBU0NfT1BUSU1JWkVfTEVWRUxcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19TSFJJTktfTEVWRUwgPSBcIkFTQ19TSFJJTktfTEVWRUxcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX01VVEFCTEVfR0xPQkFMID0gXCJBU0NfRkVBVFVSRV9NVVRBQkxFX0dMT0JBTFwiO1xuICBleHBvcnQgY29uc3QgQVNDX0ZFQVRVUkVfU0lHTl9FWFRFTlNJT04gPSBcIkFTQ19GRUFUVVJFX1NJR05fRVhURU5TSU9OXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfRkVBVFVSRV9CVUxLX01FTU9SWSA9IFwiQVNDX0ZFQVRVUkVfQlVMS19NRU1PUllcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX1NJTUQgPSBcIkFTQ19GRUFUVVJFX1NJTURcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX1RIUkVBRFMgPSBcIkFTQ19GRUFUVVJFX1RIUkVBRFNcIjtcbiAgLy8gY2xhc3Nlc1xuICBleHBvcnQgY29uc3QgSTggPSBcIkk4XCI7XG4gIGV4cG9ydCBjb25zdCBJMTYgPSBcIkkxNlwiO1xuICBleHBvcnQgY29uc3QgSTMyID0gXCJJMzJcIjtcbiAgZXhwb3J0IGNvbnN0IEk2NCA9IFwiSTY0XCI7XG4gIGV4cG9ydCBjb25zdCBJc2l6ZSA9IFwiSXNpemVcIjtcbiAgZXhwb3J0IGNvbnN0IFU4ID0gXCJVOFwiO1xuICBleHBvcnQgY29uc3QgVTE2ID0gXCJVMTZcIjtcbiAgZXhwb3J0IGNvbnN0IFUzMiA9IFwiVTMyXCI7XG4gIGV4cG9ydCBjb25zdCBVNjQgPSBcIlU2NFwiO1xuICBleHBvcnQgY29uc3QgVXNpemUgPSBcIlVzaXplXCI7XG4gIGV4cG9ydCBjb25zdCBCb29sID0gXCJCb29sXCI7XG4gIGV4cG9ydCBjb25zdCBGMzIgPSBcIkYzMlwiO1xuICBleHBvcnQgY29uc3QgRjY0ID0gXCJGNjRcIjtcbiAgZXhwb3J0IGNvbnN0IFYxMjggPSBcIlYxMjhcIjtcbiAgZXhwb3J0IGNvbnN0IFN0cmluZyA9IFwiU3RyaW5nXCI7XG4gIGV4cG9ydCBjb25zdCBBcnJheSA9IFwiQXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IEZpeGVkQXJyYXkgPSBcIkZpeGVkQXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IFNldCA9IFwiU2V0XCI7XG4gIGV4cG9ydCBjb25zdCBNYXAgPSBcIk1hcFwiO1xuICBleHBvcnQgY29uc3QgQXJyYXlCdWZmZXJWaWV3ID0gXCJBcnJheUJ1ZmZlclZpZXdcIjtcbiAgZXhwb3J0IGNvbnN0IEFycmF5QnVmZmVyID0gXCJBcnJheUJ1ZmZlclwiO1xuICBleHBvcnQgY29uc3QgTWF0aCA9IFwiTWF0aFwiO1xuICBleHBvcnQgY29uc3QgTWF0aGYgPSBcIk1hdGhmXCI7XG4gIGV4cG9ydCBjb25zdCBJbnQ4QXJyYXkgPSBcIkludDhBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50MTZBcnJheSA9IFwiSW50MTZBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50MzJBcnJheSA9IFwiSW50MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50NjRBcnJheSA9IFwiSW50NjRBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDhBcnJheSA9IFwiVWludDhBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDhDbGFtcGVkQXJyYXkgPSBcIlVpbnQ4Q2xhbXBlZEFycmF5XCI7XG4gIGV4cG9ydCBjb25zdCBVaW50MTZBcnJheSA9IFwiVWludDE2QXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IFVpbnQzMkFycmF5ID0gXCJVaW50MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDY0QXJyYXkgPSBcIlVpbnQ2NEFycmF5XCI7XG4gIGV4cG9ydCBjb25zdCBGbG9hdDMyQXJyYXkgPSBcIkZsb2F0MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgRmxvYXQ2NEFycmF5ID0gXCJGbG9hdDY0QXJyYXlcIjtcbiAgLy8gcnVudGltZVxuICBleHBvcnQgY29uc3QgYWJvcnQgPSBcImFib3J0XCI7XG4gIGV4cG9ydCBjb25zdCBwb3cgPSBcInBvd1wiO1xuICBleHBvcnQgY29uc3QgbW9kID0gXCJtb2RcIjtcbiAgZXhwb3J0IGNvbnN0IGFsbG9jID0gXCJfX2FsbG9jXCI7XG4gIGV4cG9ydCBjb25zdCByZWFsbG9jID0gXCJfX3JlYWxsb2NcIjtcbiAgZXhwb3J0IGNvbnN0IGZyZWUgPSBcIl9fZnJlZVwiO1xuICBleHBvcnQgY29uc3QgcmV0YWluID0gXCJfX3JldGFpblwiO1xuICBleHBvcnQgY29uc3QgcmVsZWFzZSA9IFwiX19yZWxlYXNlXCI7XG4gIGV4cG9ydCBjb25zdCBjb2xsZWN0ID0gXCJfX2NvbGxlY3RcIjtcbiAgZXhwb3J0IGNvbnN0IHR5cGVpbmZvID0gXCJfX3R5cGVpbmZvXCI7XG4gIGV4cG9ydCBjb25zdCBpbnN0YW5jZW9mXyA9IFwiX19pbnN0YW5jZW9mXCI7XG4gIGV4cG9ydCBjb25zdCB2aXNpdCA9IFwiX192aXNpdFwiO1xuICBleHBvcnQgY29uc3QgYWxsb2NBcnJheSA9IFwiX19hbGxvY0FycmF5XCI7XG59XG5cbi8vIHNoYXJlZFxuZXhwb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuLi9zdGQvYXNzZW1ibHkvc2hhcmVkL2ZlYXR1cmVcIjtcbmV4cG9ydCB7IFRhcmdldCB9IGZyb20gXCIuLi9zdGQvYXNzZW1ibHkvc2hhcmVkL3RhcmdldFwiO1xuZXhwb3J0IHsgVHlwZWluZm8sIFR5cGVpbmZvRmxhZ3MgfSBmcm9tIFwiLi4vc3RkL2Fzc2VtYmx5L3NoYXJlZC90eXBlaW5mb1wiO1xuIl19 + +/***/ }), + +/***/ "../src/diagnosticMessages.generated.ts": +/*!**********************************************!*\ + !*** ../src/diagnosticMessages.generated.ts ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Generated from diagnosticsMessages.json. Do not edit. + * @module diagnostics + */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +/* tslint:disable:max-line-length */ +/** Enum of available diagnostic codes. */ +var DiagnosticCode; +(function (DiagnosticCode) { + DiagnosticCode[DiagnosticCode["Operation_not_supported"] = 100] = "Operation_not_supported"; + DiagnosticCode[DiagnosticCode["Operation_is_unsafe"] = 101] = "Operation_is_unsafe"; + DiagnosticCode[DiagnosticCode["User_defined_0"] = 102] = "User_defined_0"; + DiagnosticCode[DiagnosticCode["Conversion_from_type_0_to_1_requires_an_explicit_cast"] = 200] = "Conversion_from_type_0_to_1_requires_an_explicit_cast"; + DiagnosticCode[DiagnosticCode["Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit"] = 201] = "Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit"; + DiagnosticCode[DiagnosticCode["Type_0_cannot_be_changed_to_type_1"] = 202] = "Type_0_cannot_be_changed_to_type_1"; + DiagnosticCode[DiagnosticCode["Type_0_cannot_be_reinterpreted_as_type_1"] = 203] = "Type_0_cannot_be_reinterpreted_as_type_1"; + DiagnosticCode[DiagnosticCode["Basic_type_0_cannot_be_nullable"] = 204] = "Basic_type_0_cannot_be_nullable"; + DiagnosticCode[DiagnosticCode["Cannot_export_a_mutable_global"] = 205] = "Cannot_export_a_mutable_global"; + DiagnosticCode[DiagnosticCode["Mutable_value_cannot_be_inlined"] = 206] = "Mutable_value_cannot_be_inlined"; + DiagnosticCode[DiagnosticCode["Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa"] = 207] = "Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa"; + DiagnosticCode[DiagnosticCode["Unmanaged_classes_cannot_implement_interfaces"] = 208] = "Unmanaged_classes_cannot_implement_interfaces"; + DiagnosticCode[DiagnosticCode["Invalid_regular_expression_flags"] = 209] = "Invalid_regular_expression_flags"; + DiagnosticCode[DiagnosticCode["Implementation_0_must_match_the_signature_1"] = 210] = "Implementation_0_must_match_the_signature_1"; + DiagnosticCode[DiagnosticCode["Class_0_is_sealed_and_cannot_be_extended"] = 211] = "Class_0_is_sealed_and_cannot_be_extended"; + DiagnosticCode[DiagnosticCode["Decorator_0_is_not_valid_here"] = 212] = "Decorator_0_is_not_valid_here"; + DiagnosticCode[DiagnosticCode["Duplicate_decorator"] = 213] = "Duplicate_decorator"; + DiagnosticCode[DiagnosticCode["An_allocator_must_be_present_to_use_0"] = 214] = "An_allocator_must_be_present_to_use_0"; + DiagnosticCode[DiagnosticCode["Optional_parameter_must_have_an_initializer"] = 215] = "Optional_parameter_must_have_an_initializer"; + DiagnosticCode[DiagnosticCode["Constructor_of_class_0_must_not_require_any_arguments"] = 216] = "Constructor_of_class_0_must_not_require_any_arguments"; + DiagnosticCode[DiagnosticCode["Function_0_cannot_be_inlined_into_itself"] = 217] = "Function_0_cannot_be_inlined_into_itself"; + DiagnosticCode[DiagnosticCode["Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set"] = 218] = "Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set"; + DiagnosticCode[DiagnosticCode["Optional_properties_are_not_supported"] = 219] = "Optional_properties_are_not_supported"; + DiagnosticCode[DiagnosticCode["Expression_must_be_a_compile_time_constant"] = 220] = "Expression_must_be_a_compile_time_constant"; + DiagnosticCode[DiagnosticCode["Module_cannot_have_multiple_start_functions"] = 221] = "Module_cannot_have_multiple_start_functions"; + DiagnosticCode[DiagnosticCode["_0_must_be_a_value_between_1_and_2_inclusive"] = 222] = "_0_must_be_a_value_between_1_and_2_inclusive"; + DiagnosticCode[DiagnosticCode["_0_must_be_a_power_of_two"] = 223] = "_0_must_be_a_power_of_two"; + DiagnosticCode[DiagnosticCode["Expression_is_unsafe"] = 224] = "Expression_is_unsafe"; + DiagnosticCode[DiagnosticCode["Expression_is_never_null"] = 225] = "Expression_is_never_null"; + DiagnosticCode[DiagnosticCode["Unterminated_string_literal"] = 1002] = "Unterminated_string_literal"; + DiagnosticCode[DiagnosticCode["Identifier_expected"] = 1003] = "Identifier_expected"; + DiagnosticCode[DiagnosticCode["_0_expected"] = 1005] = "_0_expected"; + DiagnosticCode[DiagnosticCode["A_file_cannot_have_a_reference_to_itself"] = 1006] = "A_file_cannot_have_a_reference_to_itself"; + DiagnosticCode[DiagnosticCode["Trailing_comma_not_allowed"] = 1009] = "Trailing_comma_not_allowed"; + DiagnosticCode[DiagnosticCode["Unexpected_token"] = 1012] = "Unexpected_token"; + DiagnosticCode[DiagnosticCode["A_rest_parameter_must_be_last_in_a_parameter_list"] = 1014] = "A_rest_parameter_must_be_last_in_a_parameter_list"; + DiagnosticCode[DiagnosticCode["Parameter_cannot_have_question_mark_and_initializer"] = 1015] = "Parameter_cannot_have_question_mark_and_initializer"; + DiagnosticCode[DiagnosticCode["A_required_parameter_cannot_follow_an_optional_parameter"] = 1016] = "A_required_parameter_cannot_follow_an_optional_parameter"; + DiagnosticCode[DiagnosticCode["Statements_are_not_allowed_in_ambient_contexts"] = 1036] = "Statements_are_not_allowed_in_ambient_contexts"; + DiagnosticCode[DiagnosticCode["Initializers_are_not_allowed_in_ambient_contexts"] = 1039] = "Initializers_are_not_allowed_in_ambient_contexts"; + DiagnosticCode[DiagnosticCode["_0_modifier_cannot_be_used_here"] = 1042] = "_0_modifier_cannot_be_used_here"; + DiagnosticCode[DiagnosticCode["A_rest_parameter_cannot_be_optional"] = 1047] = "A_rest_parameter_cannot_be_optional"; + DiagnosticCode[DiagnosticCode["A_rest_parameter_cannot_have_an_initializer"] = 1048] = "A_rest_parameter_cannot_have_an_initializer"; + DiagnosticCode[DiagnosticCode["A_set_accessor_must_have_exactly_one_parameter"] = 1049] = "A_set_accessor_must_have_exactly_one_parameter"; + DiagnosticCode[DiagnosticCode["A_set_accessor_parameter_cannot_have_an_initializer"] = 1052] = "A_set_accessor_parameter_cannot_have_an_initializer"; + DiagnosticCode[DiagnosticCode["A_get_accessor_cannot_have_parameters"] = 1054] = "A_get_accessor_cannot_have_parameters"; + DiagnosticCode[DiagnosticCode["Enum_member_must_have_initializer"] = 1061] = "Enum_member_must_have_initializer"; + DiagnosticCode[DiagnosticCode["Type_parameters_cannot_appear_on_a_constructor_declaration"] = 1092] = "Type_parameters_cannot_appear_on_a_constructor_declaration"; + DiagnosticCode[DiagnosticCode["Type_annotation_cannot_appear_on_a_constructor_declaration"] = 1093] = "Type_annotation_cannot_appear_on_a_constructor_declaration"; + DiagnosticCode[DiagnosticCode["An_accessor_cannot_have_type_parameters"] = 1094] = "An_accessor_cannot_have_type_parameters"; + DiagnosticCode[DiagnosticCode["A_set_accessor_cannot_have_a_return_type_annotation"] = 1095] = "A_set_accessor_cannot_have_a_return_type_annotation"; + DiagnosticCode[DiagnosticCode["Type_parameter_list_cannot_be_empty"] = 1098] = "Type_parameter_list_cannot_be_empty"; + DiagnosticCode[DiagnosticCode["A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement"] = 1104] = "A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement"; + DiagnosticCode[DiagnosticCode["A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement"] = 1105] = "A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement"; + DiagnosticCode[DiagnosticCode["A_return_statement_can_only_be_used_within_a_function_body"] = 1108] = "A_return_statement_can_only_be_used_within_a_function_body"; + DiagnosticCode[DiagnosticCode["Expression_expected"] = 1109] = "Expression_expected"; + DiagnosticCode[DiagnosticCode["Type_expected"] = 1110] = "Type_expected"; + DiagnosticCode[DiagnosticCode["A_default_clause_cannot_appear_more_than_once_in_a_switch_statement"] = 1113] = "A_default_clause_cannot_appear_more_than_once_in_a_switch_statement"; + DiagnosticCode[DiagnosticCode["Duplicate_label_0"] = 1114] = "Duplicate_label_0"; + DiagnosticCode[DiagnosticCode["An_export_assignment_cannot_have_modifiers"] = 1120] = "An_export_assignment_cannot_have_modifiers"; + DiagnosticCode[DiagnosticCode["Octal_literals_are_not_allowed_in_strict_mode"] = 1121] = "Octal_literals_are_not_allowed_in_strict_mode"; + DiagnosticCode[DiagnosticCode["Digit_expected"] = 1124] = "Digit_expected"; + DiagnosticCode[DiagnosticCode["Hexadecimal_digit_expected"] = 1125] = "Hexadecimal_digit_expected"; + DiagnosticCode[DiagnosticCode["Unexpected_end_of_text"] = 1126] = "Unexpected_end_of_text"; + DiagnosticCode[DiagnosticCode["Invalid_character"] = 1127] = "Invalid_character"; + DiagnosticCode[DiagnosticCode["_case_or_default_expected"] = 1130] = "_case_or_default_expected"; + DiagnosticCode[DiagnosticCode["_super_must_be_followed_by_an_argument_list_or_member_access"] = 1034] = "_super_must_be_followed_by_an_argument_list_or_member_access"; + DiagnosticCode[DiagnosticCode["A_declare_modifier_cannot_be_used_in_an_already_ambient_context"] = 1038] = "A_declare_modifier_cannot_be_used_in_an_already_ambient_context"; + DiagnosticCode[DiagnosticCode["Type_argument_expected"] = 1140] = "Type_argument_expected"; + DiagnosticCode[DiagnosticCode["String_literal_expected"] = 1141] = "String_literal_expected"; + DiagnosticCode[DiagnosticCode["Line_break_not_permitted_here"] = 1142] = "Line_break_not_permitted_here"; + DiagnosticCode[DiagnosticCode["Declaration_expected"] = 1146] = "Declaration_expected"; + DiagnosticCode[DiagnosticCode["_const_declarations_must_be_initialized"] = 1155] = "_const_declarations_must_be_initialized"; + DiagnosticCode[DiagnosticCode["Unterminated_regular_expression_literal"] = 1161] = "Unterminated_regular_expression_literal"; + DiagnosticCode[DiagnosticCode["Interface_declaration_cannot_have_implements_clause"] = 1176] = "Interface_declaration_cannot_have_implements_clause"; + DiagnosticCode[DiagnosticCode["Binary_digit_expected"] = 1177] = "Binary_digit_expected"; + DiagnosticCode[DiagnosticCode["Octal_digit_expected"] = 1178] = "Octal_digit_expected"; + DiagnosticCode[DiagnosticCode["An_implementation_cannot_be_declared_in_ambient_contexts"] = 1183] = "An_implementation_cannot_be_declared_in_ambient_contexts"; + DiagnosticCode[DiagnosticCode["An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive"] = 1198] = "An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive"; + DiagnosticCode[DiagnosticCode["Unterminated_Unicode_escape_sequence"] = 1199] = "Unterminated_Unicode_escape_sequence"; + DiagnosticCode[DiagnosticCode["Decorators_are_not_valid_here"] = 1206] = "Decorators_are_not_valid_here"; + DiagnosticCode[DiagnosticCode["_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration"] = 1242] = "_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration"; + DiagnosticCode[DiagnosticCode["Method_0_cannot_have_an_implementation_because_it_is_marked_abstract"] = 1245] = "Method_0_cannot_have_an_implementation_because_it_is_marked_abstract"; + DiagnosticCode[DiagnosticCode["A_definite_assignment_assertion_is_not_permitted_in_this_context"] = 1255] = "A_definite_assignment_assertion_is_not_permitted_in_this_context"; + DiagnosticCode[DiagnosticCode["A_class_may_only_extend_another_class"] = 1311] = "A_class_may_only_extend_another_class"; + DiagnosticCode[DiagnosticCode["A_parameter_property_cannot_be_declared_using_a_rest_parameter"] = 1317] = "A_parameter_property_cannot_be_declared_using_a_rest_parameter"; + DiagnosticCode[DiagnosticCode["Duplicate_identifier_0"] = 2300] = "Duplicate_identifier_0"; + DiagnosticCode[DiagnosticCode["Cannot_find_name_0"] = 2304] = "Cannot_find_name_0"; + DiagnosticCode[DiagnosticCode["Module_0_has_no_exported_member_1"] = 2305] = "Module_0_has_no_exported_member_1"; + DiagnosticCode[DiagnosticCode["Generic_type_0_requires_1_type_argument_s"] = 2314] = "Generic_type_0_requires_1_type_argument_s"; + DiagnosticCode[DiagnosticCode["Type_0_is_not_generic"] = 2315] = "Type_0_is_not_generic"; + DiagnosticCode[DiagnosticCode["Type_0_is_not_assignable_to_type_1"] = 2322] = "Type_0_is_not_assignable_to_type_1"; + DiagnosticCode[DiagnosticCode["Index_signature_is_missing_in_type_0"] = 2329] = "Index_signature_is_missing_in_type_0"; + DiagnosticCode[DiagnosticCode["_this_cannot_be_referenced_in_current_location"] = 2332] = "_this_cannot_be_referenced_in_current_location"; + DiagnosticCode[DiagnosticCode["_super_can_only_be_referenced_in_a_derived_class"] = 2335] = "_super_can_only_be_referenced_in_a_derived_class"; + DiagnosticCode[DiagnosticCode["Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors"] = 2337] = "Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors"; + DiagnosticCode[DiagnosticCode["Property_0_does_not_exist_on_type_1"] = 2339] = "Property_0_does_not_exist_on_type_1"; + DiagnosticCode[DiagnosticCode["Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures"] = 2349] = "Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures"; + DiagnosticCode[DiagnosticCode["Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature"] = 2351] = "Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature"; + DiagnosticCode[DiagnosticCode["A_function_whose_declared_type_is_not_void_must_return_a_value"] = 2355] = "A_function_whose_declared_type_is_not_void_must_return_a_value"; + DiagnosticCode[DiagnosticCode["The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access"] = 2357] = "The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access"; + DiagnosticCode[DiagnosticCode["The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access"] = 2364] = "The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access"; + DiagnosticCode[DiagnosticCode["Operator_0_cannot_be_applied_to_types_1_and_2"] = 2365] = "Operator_0_cannot_be_applied_to_types_1_and_2"; + DiagnosticCode[DiagnosticCode["A_super_call_must_be_the_first_statement_in_the_constructor"] = 2376] = "A_super_call_must_be_the_first_statement_in_the_constructor"; + DiagnosticCode[DiagnosticCode["Constructors_for_derived_classes_must_contain_a_super_call"] = 2377] = "Constructors_for_derived_classes_must_contain_a_super_call"; + DiagnosticCode[DiagnosticCode["_get_and_set_accessor_must_have_the_same_type"] = 2380] = "_get_and_set_accessor_must_have_the_same_type"; + DiagnosticCode[DiagnosticCode["Constructor_implementation_is_missing"] = 2390] = "Constructor_implementation_is_missing"; + DiagnosticCode[DiagnosticCode["Function_implementation_is_missing_or_not_immediately_following_the_declaration"] = 2391] = "Function_implementation_is_missing_or_not_immediately_following_the_declaration"; + DiagnosticCode[DiagnosticCode["Multiple_constructor_implementations_are_not_allowed"] = 2392] = "Multiple_constructor_implementations_are_not_allowed"; + DiagnosticCode[DiagnosticCode["Duplicate_function_implementation"] = 2393] = "Duplicate_function_implementation"; + DiagnosticCode[DiagnosticCode["Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local"] = 2395] = "Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local"; + DiagnosticCode[DiagnosticCode["A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged"] = 2434] = "A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged"; + DiagnosticCode[DiagnosticCode["Type_0_has_no_property_1"] = 2460] = "Type_0_has_no_property_1"; + DiagnosticCode[DiagnosticCode["The_0_operator_cannot_be_applied_to_type_1"] = 2469] = "The_0_operator_cannot_be_applied_to_type_1"; + DiagnosticCode[DiagnosticCode["In_const_enum_declarations_member_initializer_must_be_constant_expression"] = 2474] = "In_const_enum_declarations_member_initializer_must_be_constant_expression"; + DiagnosticCode[DiagnosticCode["Export_declaration_conflicts_with_exported_declaration_of_0"] = 2484] = "Export_declaration_conflicts_with_exported_declaration_of_0"; + DiagnosticCode[DiagnosticCode["Object_is_possibly_null"] = 2531] = "Object_is_possibly_null"; + DiagnosticCode[DiagnosticCode["Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property"] = 2540] = "Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property"; + DiagnosticCode[DiagnosticCode["The_target_of_an_assignment_must_be_a_variable_or_a_property_access"] = 2541] = "The_target_of_an_assignment_must_be_a_variable_or_a_property_access"; + DiagnosticCode[DiagnosticCode["Index_signature_in_type_0_only_permits_reading"] = 2542] = "Index_signature_in_type_0_only_permits_reading"; + DiagnosticCode[DiagnosticCode["Expected_0_arguments_but_got_1"] = 2554] = "Expected_0_arguments_but_got_1"; + DiagnosticCode[DiagnosticCode["Expected_at_least_0_arguments_but_got_1"] = 2555] = "Expected_at_least_0_arguments_but_got_1"; + DiagnosticCode[DiagnosticCode["Expected_0_type_arguments_but_got_1"] = 2558] = "Expected_0_type_arguments_but_got_1"; + DiagnosticCode[DiagnosticCode["A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums"] = 2651] = "A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums"; + DiagnosticCode[DiagnosticCode["Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration"] = 2673] = "Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration"; + DiagnosticCode[DiagnosticCode["Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration"] = 2674] = "Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration"; + DiagnosticCode[DiagnosticCode["Namespace_0_has_no_exported_member_1"] = 2694] = "Namespace_0_has_no_exported_member_1"; + DiagnosticCode[DiagnosticCode["Required_type_parameters_may_not_follow_optional_type_parameters"] = 2706] = "Required_type_parameters_may_not_follow_optional_type_parameters"; + DiagnosticCode[DiagnosticCode["Duplicate_property_0"] = 2718] = "Duplicate_property_0"; + DiagnosticCode[DiagnosticCode["Type_0_has_no_call_signatures"] = 2757] = "Type_0_has_no_call_signatures"; + DiagnosticCode[DiagnosticCode["File_0_not_found"] = 6054] = "File_0_not_found"; + DiagnosticCode[DiagnosticCode["Numeric_separators_are_not_allowed_here"] = 6188] = "Numeric_separators_are_not_allowed_here"; + DiagnosticCode[DiagnosticCode["Multiple_consecutive_numeric_separators_are_not_permitted"] = 6189] = "Multiple_consecutive_numeric_separators_are_not_permitted"; + DiagnosticCode[DiagnosticCode["_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class"] = 17009] = "_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class"; + DiagnosticCode[DiagnosticCode["_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"] = 17011] = "_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"; +})(DiagnosticCode = exports.DiagnosticCode || (exports.DiagnosticCode = {})); +/** Translates a diagnostic code to its respective string. */ +function diagnosticCodeToString(code) { + switch (code) { + case 100: return "Operation not supported."; + case 101: return "Operation is unsafe."; + case 102: return "User-defined: {0}"; + case 200: return "Conversion from type '{0}' to '{1}' requires an explicit cast."; + case 201: return "Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit."; + case 202: return "Type '{0}' cannot be changed to type '{1}'."; + case 203: return "Type '{0}' cannot be reinterpreted as type '{1}'."; + case 204: return "Basic type '{0}' cannot be nullable."; + case 205: return "Cannot export a mutable global."; + case 206: return "Mutable value cannot be inlined."; + case 207: return "Unmanaged classes cannot extend managed classes and vice-versa."; + case 208: return "Unmanaged classes cannot implement interfaces."; + case 209: return "Invalid regular expression flags."; + case 210: return "Implementation '{0}' must match the signature '{1}'."; + case 211: return "Class '{0}' is sealed and cannot be extended."; + case 212: return "Decorator '{0}' is not valid here."; + case 213: return "Duplicate decorator."; + case 214: return "An allocator must be present to use '{0}'."; + case 215: return "Optional parameter must have an initializer."; + case 216: return "Constructor of class '{0}' must not require any arguments."; + case 217: return "Function '{0}' cannot be inlined into itself."; + case 218: return "Cannot access method '{0}' without calling it as it requires 'this' to be set."; + case 219: return "Optional properties are not supported."; + case 220: return "Expression must be a compile-time constant."; + case 221: return "Module cannot have multiple start functions."; + case 222: return "'{0}' must be a value between '{1}' and '{2}' inclusive."; + case 223: return "'{0}' must be a power of two."; + case 224: return "Expression is unsafe."; + case 225: return "Expression is never 'null'."; + case 1002: return "Unterminated string literal."; + case 1003: return "Identifier expected."; + case 1005: return "'{0}' expected."; + case 1006: return "A file cannot have a reference to itself."; + case 1009: return "Trailing comma not allowed."; + case 1012: return "Unexpected token."; + case 1014: return "A rest parameter must be last in a parameter list."; + case 1015: return "Parameter cannot have question mark and initializer."; + case 1016: return "A required parameter cannot follow an optional parameter."; + case 1036: return "Statements are not allowed in ambient contexts."; + case 1039: return "Initializers are not allowed in ambient contexts."; + case 1042: return "'{0}' modifier cannot be used here."; + case 1047: return "A rest parameter cannot be optional."; + case 1048: return "A rest parameter cannot have an initializer."; + case 1049: return "A 'set' accessor must have exactly one parameter."; + case 1052: return "A 'set' accessor parameter cannot have an initializer."; + case 1054: return "A 'get' accessor cannot have parameters."; + case 1061: return "Enum member must have initializer."; + case 1092: return "Type parameters cannot appear on a constructor declaration."; + case 1093: return "Type annotation cannot appear on a constructor declaration."; + case 1094: return "An accessor cannot have type parameters."; + case 1095: return "A 'set' accessor cannot have a return type annotation."; + case 1098: return "Type parameter list cannot be empty."; + case 1104: return "A 'continue' statement can only be used within an enclosing iteration statement."; + case 1105: return "A 'break' statement can only be used within an enclosing iteration or switch statement."; + case 1108: return "A 'return' statement can only be used within a function body."; + case 1109: return "Expression expected."; + case 1110: return "Type expected."; + case 1113: return "A 'default' clause cannot appear more than once in a 'switch' statement."; + case 1114: return "Duplicate label '{0}'."; + case 1120: return "An export assignment cannot have modifiers."; + case 1121: return "Octal literals are not allowed in strict mode."; + case 1124: return "Digit expected."; + case 1125: return "Hexadecimal digit expected."; + case 1126: return "Unexpected end of text."; + case 1127: return "Invalid character."; + case 1130: return "'case' or 'default' expected."; + case 1034: return "'super' must be followed by an argument list or member access."; + case 1038: return "A 'declare' modifier cannot be used in an already ambient context."; + case 1140: return "Type argument expected."; + case 1141: return "String literal expected."; + case 1142: return "Line break not permitted here."; + case 1146: return "Declaration expected."; + case 1155: return "'const' declarations must be initialized."; + case 1161: return "Unterminated regular expression literal."; + case 1176: return "Interface declaration cannot have 'implements' clause."; + case 1177: return "Binary digit expected."; + case 1178: return "Octal digit expected."; + case 1183: return "An implementation cannot be declared in ambient contexts."; + case 1198: return "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive."; + case 1199: return "Unterminated Unicode escape sequence."; + case 1206: return "Decorators are not valid here."; + case 1242: return "'abstract' modifier can only appear on a class, method, or property declaration."; + case 1245: return "Method '{0}' cannot have an implementation because it is marked abstract."; + case 1255: return "A definite assignment assertion '!' is not permitted in this context."; + case 1311: return "A class may only extend another class."; + case 1317: return "A parameter property cannot be declared using a rest parameter."; + case 2300: return "Duplicate identifier '{0}'."; + case 2304: return "Cannot find name '{0}'."; + case 2305: return "Module '{0}' has no exported member '{1}'."; + case 2314: return "Generic type '{0}' requires {1} type argument(s)."; + case 2315: return "Type '{0}' is not generic."; + case 2322: return "Type '{0}' is not assignable to type '{1}'."; + case 2329: return "Index signature is missing in type '{0}'."; + case 2332: return "'this' cannot be referenced in current location."; + case 2335: return "'super' can only be referenced in a derived class."; + case 2337: return "Super calls are not permitted outside constructors or in nested functions inside constructors."; + case 2339: return "Property '{0}' does not exist on type '{1}'."; + case 2349: return "Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures."; + case 2351: return "Cannot use 'new' with an expression whose type lacks a construct signature."; + case 2355: return "A function whose declared type is not 'void' must return a value."; + case 2357: return "The operand of an increment or decrement operator must be a variable or a property access."; + case 2364: return "The left-hand side of an assignment expression must be a variable or a property access."; + case 2365: return "Operator '{0}' cannot be applied to types '{1}' and '{2}'."; + case 2376: return "A 'super' call must be the first statement in the constructor."; + case 2377: return "Constructors for derived classes must contain a 'super' call."; + case 2380: return "'get' and 'set' accessor must have the same type."; + case 2390: return "Constructor implementation is missing."; + case 2391: return "Function implementation is missing or not immediately following the declaration."; + case 2392: return "Multiple constructor implementations are not allowed."; + case 2393: return "Duplicate function implementation."; + case 2395: return "Individual declarations in merged declaration '{0}' must be all exported or all local."; + case 2434: return "A namespace declaration cannot be located prior to a class or function with which it is merged."; + case 2460: return "Type '{0}' has no property '{1}'."; + case 2469: return "The '{0}' operator cannot be applied to type '{1}'."; + case 2474: return "In 'const' enum declarations member initializer must be constant expression."; + case 2484: return "Export declaration conflicts with exported declaration of '{0}'."; + case 2531: return "Object is possibly 'null'."; + case 2540: return "Cannot assign to '{0}' because it is a constant or a read-only property."; + case 2541: return "The target of an assignment must be a variable or a property access."; + case 2542: return "Index signature in type '{0}' only permits reading."; + case 2554: return "Expected {0} arguments, but got {1}."; + case 2555: return "Expected at least {0} arguments, but got {1}."; + case 2558: return "Expected {0} type arguments, but got {1}."; + case 2651: return "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums."; + case 2673: return "Constructor of class '{0}' is private and only accessible within the class declaration."; + case 2674: return "Constructor of class '{0}' is protected and only accessible within the class declaration."; + case 2694: return "Namespace '{0}' has no exported member '{1}'."; + case 2706: return "Required type parameters may not follow optional type parameters."; + case 2718: return "Duplicate property '{0}'."; + case 2757: return "Type '{0}' has no call signatures."; + case 6054: return "File '{0}' not found."; + case 6188: return "Numeric separators are not allowed here."; + case 6189: return "Multiple consecutive numeric separators are not permitted."; + case 17009: return "'super' must be called before accessing 'this' in the constructor of a derived class."; + case 17011: return "'super' must be called before accessing a property of 'super' in the constructor of a derived class."; + default: return ""; + } +} +exports.diagnosticCodeToString = diagnosticCodeToString; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY01lc3NhZ2VzLmdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWFnbm9zdGljTWVzc2FnZXMuZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0csQ0FBQSxLQUFLOztBQUVSLG9DQUFvQztBQUVwQywwQ0FBMEM7QUFDMUMsSUFBWSxjQXdJWDtBQXhJRCxXQUFZLGNBQWM7SUFDeEIsMkZBQTZCLENBQUE7SUFDN0IsbUZBQXlCLENBQUE7SUFDekIseUVBQW9CLENBQUE7SUFDcEIsdUpBQTJELENBQUE7SUFDM0QsaU9BQWdHLENBQUE7SUFDaEcsaUhBQXdDLENBQUE7SUFDeEMsNkhBQThDLENBQUE7SUFDOUMsMkdBQXFDLENBQUE7SUFDckMseUdBQW9DLENBQUE7SUFDcEMsMkdBQXFDLENBQUE7SUFDckMseUtBQW9FLENBQUE7SUFDcEUsdUlBQW1ELENBQUE7SUFDbkQsNkdBQXNDLENBQUE7SUFDdEMsbUlBQWlELENBQUE7SUFDakQsNkhBQThDLENBQUE7SUFDOUMsdUdBQW1DLENBQUE7SUFDbkMsbUZBQXlCLENBQUE7SUFDekIsdUhBQTJDLENBQUE7SUFDM0MsbUlBQWlELENBQUE7SUFDakQsdUpBQTJELENBQUE7SUFDM0QsNkhBQThDLENBQUE7SUFDOUMsMkxBQTZFLENBQUE7SUFDN0UsdUhBQTJDLENBQUE7SUFDM0MsaUlBQWdELENBQUE7SUFDaEQsbUlBQWlELENBQUE7SUFDakQscUlBQWtELENBQUE7SUFDbEQsK0ZBQStCLENBQUE7SUFDL0IscUZBQTBCLENBQUE7SUFDMUIsNkZBQThCLENBQUE7SUFDOUIsb0dBQWtDLENBQUE7SUFDbEMsb0ZBQTBCLENBQUE7SUFDMUIsb0VBQWtCLENBQUE7SUFDbEIsOEhBQStDLENBQUE7SUFDL0Msa0dBQWlDLENBQUE7SUFDakMsOEVBQXVCLENBQUE7SUFDdkIsZ0pBQXdELENBQUE7SUFDeEQsb0pBQTBELENBQUE7SUFDMUQsOEpBQStELENBQUE7SUFDL0QsMElBQXFELENBQUE7SUFDckQsOElBQXVELENBQUE7SUFDdkQsNEdBQXNDLENBQUE7SUFDdEMsb0hBQTBDLENBQUE7SUFDMUMsb0lBQWtELENBQUE7SUFDbEQsMElBQXFELENBQUE7SUFDckQsb0pBQTBELENBQUE7SUFDMUQsd0hBQTRDLENBQUE7SUFDNUMsZ0hBQXdDLENBQUE7SUFDeEMsa0tBQWlFLENBQUE7SUFDakUsa0tBQWlFLENBQUE7SUFDakUsNEhBQThDLENBQUE7SUFDOUMsb0pBQTBELENBQUE7SUFDMUQsb0hBQTBDLENBQUE7SUFDMUMsd01BQW9GLENBQUE7SUFDcEYsc05BQTJGLENBQUE7SUFDM0Ysa0tBQWlFLENBQUE7SUFDakUsb0ZBQTBCLENBQUE7SUFDMUIsd0VBQW9CLENBQUE7SUFDcEIsb0xBQTBFLENBQUE7SUFDMUUsZ0ZBQXdCLENBQUE7SUFDeEIsa0lBQWlELENBQUE7SUFDakQsd0lBQW9ELENBQUE7SUFDcEQsMEVBQXFCLENBQUE7SUFDckIsa0dBQWlDLENBQUE7SUFDakMsMEZBQTZCLENBQUE7SUFDN0IsZ0ZBQXdCLENBQUE7SUFDeEIsZ0dBQWdDLENBQUE7SUFDaEMsc0tBQW1FLENBQUE7SUFDbkUsNEtBQXNFLENBQUE7SUFDdEUsMEZBQTZCLENBQUE7SUFDN0IsNEZBQThCLENBQUE7SUFDOUIsd0dBQW9DLENBQUE7SUFDcEMsc0ZBQTJCLENBQUE7SUFDM0IsNEhBQThDLENBQUE7SUFDOUMsNEhBQThDLENBQUE7SUFDOUMsb0pBQTBELENBQUE7SUFDMUQsd0ZBQTRCLENBQUE7SUFDNUIsc0ZBQTJCLENBQUE7SUFDM0IsOEpBQStELENBQUE7SUFDL0Qsb01BQWtGLENBQUE7SUFDbEYsc0hBQTJDLENBQUE7SUFDM0Msd0dBQW9DLENBQUE7SUFDcEMsc01BQW1GLENBQUE7SUFDbkYsc0xBQTJFLENBQUE7SUFDM0UsOEtBQXVFLENBQUE7SUFDdkUsd0hBQTRDLENBQUE7SUFDNUMsMEtBQXFFLENBQUE7SUFDckUsMEZBQTZCLENBQUE7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QWtJLENBQUM7UUFDckosS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHlGQUF5RixDQUFDO1FBQzVHLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyRkFBMkYsQ0FBQztRQUM5RyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sK0NBQStDLENBQUM7UUFDbEUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG1FQUFtRSxDQUFDO1FBQ3RGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyQkFBMkIsQ0FBQztRQUM5QyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sb0NBQW9DLENBQUM7UUFDdkQsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHVCQUF1QixDQUFDO1FBQzFDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywwQ0FBMEMsQ0FBQztRQUM3RCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sNERBQTRELENBQUM7UUFDL0UsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLHVGQUF1RixDQUFDO1FBQzNHLEtBQUssS0FBSyxDQUFDLENBQUMsT0FBTyxzR0FBc0csQ0FBQztRQUMxSCxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNwQjtBQUNILENBQUM7QUEzSUQsd0RBMklDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgZnJvbSBkaWFnbm9zdGljc01lc3NhZ2VzLmpzb24uIERvIG5vdCBlZGl0LlxuICogQG1vZHVsZSBkaWFnbm9zdGljc1xuICovLyoqKi9cblxuLyogdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoICovXG5cbi8qKiBFbnVtIG9mIGF2YWlsYWJsZSBkaWFnbm9zdGljIGNvZGVzLiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0NvZGUge1xuICBPcGVyYXRpb25fbm90X3N1cHBvcnRlZCA9IDEwMCxcbiAgT3BlcmF0aW9uX2lzX3Vuc2FmZSA9IDEwMSxcbiAgVXNlcl9kZWZpbmVkXzAgPSAxMDIsXG4gIENvbnZlcnNpb25fZnJvbV90eXBlXzBfdG9fMV9yZXF1aXJlc19hbl9leHBsaWNpdF9jYXN0ID0gMjAwLFxuICBDb252ZXJzaW9uX2Zyb21fdHlwZV8wX3RvXzFfd2lsbF9yZXF1aXJlX2FuX2V4cGxpY2l0X2Nhc3Rfd2hlbl9zd2l0Y2hpbmdfYmV0d2Vlbl8zMl82NF9iaXQgPSAyMDEsXG4gIFR5cGVfMF9jYW5ub3RfYmVfY2hhbmdlZF90b190eXBlXzEgPSAyMDIsXG4gIFR5cGVfMF9jYW5ub3RfYmVfcmVpbnRlcnByZXRlZF9hc190eXBlXzEgPSAyMDMsXG4gIEJhc2ljX3R5cGVfMF9jYW5ub3RfYmVfbnVsbGFibGUgPSAyMDQsXG4gIENhbm5vdF9leHBvcnRfYV9tdXRhYmxlX2dsb2JhbCA9IDIwNSxcbiAgTXV0YWJsZV92YWx1ZV9jYW5ub3RfYmVfaW5saW5lZCA9IDIwNixcbiAgVW5tYW5hZ2VkX2NsYXNzZXNfY2Fubm90X2V4dGVuZF9tYW5hZ2VkX2NsYXNzZXNfYW5kX3ZpY2VfdmVyc2EgPSAyMDcsXG4gIFVubWFuYWdlZF9jbGFzc2VzX2Nhbm5vdF9pbXBsZW1lbnRfaW50ZXJmYWNlcyA9IDIwOCxcbiAgSW52YWxpZF9yZWd1bGFyX2V4cHJlc3Npb25fZmxhZ3MgPSAyMDksXG4gIEltcGxlbWVudGF0aW9uXzBfbXVzdF9tYXRjaF90aGVfc2lnbmF0dXJlXzEgPSAyMTAsXG4gIENsYXNzXzBfaXNfc2VhbGVkX2FuZF9jYW5ub3RfYmVfZXh0ZW5kZWQgPSAyMTEsXG4gIERlY29yYXRvcl8wX2lzX25vdF92YWxpZF9oZXJlID0gMjEyLFxuICBEdXBsaWNhdGVfZGVjb3JhdG9yID0gMjEzLFxuICBBbl9hbGxvY2F0b3JfbXVzdF9iZV9wcmVzZW50X3RvX3VzZV8wID0gMjE0LFxuICBPcHRpb25hbF9wYXJhbWV0ZXJfbXVzdF9oYXZlX2FuX2luaXRpYWxpemVyID0gMjE1LFxuICBDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX211c3Rfbm90X3JlcXVpcmVfYW55X2FyZ3VtZW50cyA9IDIxNixcbiAgRnVuY3Rpb25fMF9jYW5ub3RfYmVfaW5saW5lZF9pbnRvX2l0c2VsZiA9IDIxNyxcbiAgQ2Fubm90X2FjY2Vzc19tZXRob2RfMF93aXRob3V0X2NhbGxpbmdfaXRfYXNfaXRfcmVxdWlyZXNfdGhpc190b19iZV9zZXQgPSAyMTgsXG4gIE9wdGlvbmFsX3Byb3BlcnRpZXNfYXJlX25vdF9zdXBwb3J0ZWQgPSAyMTksXG4gIEV4cHJlc3Npb25fbXVzdF9iZV9hX2NvbXBpbGVfdGltZV9jb25zdGFudCA9IDIyMCxcbiAgTW9kdWxlX2Nhbm5vdF9oYXZlX211bHRpcGxlX3N0YXJ0X2Z1bmN0aW9ucyA9IDIyMSxcbiAgXzBfbXVzdF9iZV9hX3ZhbHVlX2JldHdlZW5fMV9hbmRfMl9pbmNsdXNpdmUgPSAyMjIsXG4gIF8wX211c3RfYmVfYV9wb3dlcl9vZl90d28gPSAyMjMsXG4gIEV4cHJlc3Npb25faXNfdW5zYWZlID0gMjI0LFxuICBFeHByZXNzaW9uX2lzX25ldmVyX251bGwgPSAyMjUsXG4gIFVudGVybWluYXRlZF9zdHJpbmdfbGl0ZXJhbCA9IDEwMDIsXG4gIElkZW50aWZpZXJfZXhwZWN0ZWQgPSAxMDAzLFxuICBfMF9leHBlY3RlZCA9IDEwMDUsXG4gIEFfZmlsZV9jYW5ub3RfaGF2ZV9hX3JlZmVyZW5jZV90b19pdHNlbGYgPSAxMDA2LFxuICBUcmFpbGluZ19jb21tYV9ub3RfYWxsb3dlZCA9IDEwMDksXG4gIFVuZXhwZWN0ZWRfdG9rZW4gPSAxMDEyLFxuICBBX3Jlc3RfcGFyYW1ldGVyX211c3RfYmVfbGFzdF9pbl9hX3BhcmFtZXRlcl9saXN0ID0gMTAxNCxcbiAgUGFyYW1ldGVyX2Nhbm5vdF9oYXZlX3F1ZXN0aW9uX21hcmtfYW5kX2luaXRpYWxpemVyID0gMTAxNSxcbiAgQV9yZXF1aXJlZF9wYXJhbWV0ZXJfY2Fubm90X2ZvbGxvd19hbl9vcHRpb25hbF9wYXJhbWV0ZXIgPSAxMDE2LFxuICBTdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzID0gMTAzNixcbiAgSW5pdGlhbGl6ZXJzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzID0gMTAzOSxcbiAgXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaGVyZSA9IDEwNDIsXG4gIEFfcmVzdF9wYXJhbWV0ZXJfY2Fubm90X2JlX29wdGlvbmFsID0gMTA0NyxcbiAgQV9yZXN0X3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplciA9IDEwNDgsXG4gIEFfc2V0X2FjY2Vzc29yX211c3RfaGF2ZV9leGFjdGx5X29uZV9wYXJhbWV0ZXIgPSAxMDQ5LFxuICBBX3NldF9hY2Nlc3Nvcl9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXIgPSAxMDUyLFxuICBBX2dldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9wYXJhbWV0ZXJzID0gMTA1NCxcbiAgRW51bV9tZW1iZXJfbXVzdF9oYXZlX2luaXRpYWxpemVyID0gMTA2MSxcbiAgVHlwZV9wYXJhbWV0ZXJzX2Nhbm5vdF9hcHBlYXJfb25fYV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IDEwOTIsXG4gIFR5cGVfYW5ub3RhdGlvbl9jYW5ub3RfYXBwZWFyX29uX2FfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSAxMDkzLFxuICBBbl9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV90eXBlX3BhcmFtZXRlcnMgPSAxMDk0LFxuICBBX3NldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9hX3JldHVybl90eXBlX2Fubm90YXRpb24gPSAxMDk1LFxuICBUeXBlX3BhcmFtZXRlcl9saXN0X2Nhbm5vdF9iZV9lbXB0eSA9IDEwOTgsXG4gIEFfY29udGludWVfc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FuX2VuY2xvc2luZ19pdGVyYXRpb25fc3RhdGVtZW50ID0gMTEwNCxcbiAgQV9icmVha19zdGF0ZW1lbnRfY2FuX29ubHlfYmVfdXNlZF93aXRoaW5fYW5fZW5jbG9zaW5nX2l0ZXJhdGlvbl9vcl9zd2l0Y2hfc3RhdGVtZW50ID0gMTEwNSxcbiAgQV9yZXR1cm5fc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FfZnVuY3Rpb25fYm9keSA9IDExMDgsXG4gIEV4cHJlc3Npb25fZXhwZWN0ZWQgPSAxMTA5LFxuICBUeXBlX2V4cGVjdGVkID0gMTExMCxcbiAgQV9kZWZhdWx0X2NsYXVzZV9jYW5ub3RfYXBwZWFyX21vcmVfdGhhbl9vbmNlX2luX2Ffc3dpdGNoX3N0YXRlbWVudCA9IDExMTMsXG4gIER1cGxpY2F0ZV9sYWJlbF8wID0gMTExNCxcbiAgQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2hhdmVfbW9kaWZpZXJzID0gMTEyMCxcbiAgT2N0YWxfbGl0ZXJhbHNfYXJlX25vdF9hbGxvd2VkX2luX3N0cmljdF9tb2RlID0gMTEyMSxcbiAgRGlnaXRfZXhwZWN0ZWQgPSAxMTI0LFxuICBIZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCA9IDExMjUsXG4gIFVuZXhwZWN0ZWRfZW5kX29mX3RleHQgPSAxMTI2LFxuICBJbnZhbGlkX2NoYXJhY3RlciA9IDExMjcsXG4gIF9jYXNlX29yX2RlZmF1bHRfZXhwZWN0ZWQgPSAxMTMwLFxuICBfc3VwZXJfbXVzdF9iZV9mb2xsb3dlZF9ieV9hbl9hcmd1bWVudF9saXN0X29yX21lbWJlcl9hY2Nlc3MgPSAxMDM0LFxuICBBX2RlY2xhcmVfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaW5fYW5fYWxyZWFkeV9hbWJpZW50X2NvbnRleHQgPSAxMDM4LFxuICBUeXBlX2FyZ3VtZW50X2V4cGVjdGVkID0gMTE0MCxcbiAgU3RyaW5nX2xpdGVyYWxfZXhwZWN0ZWQgPSAxMTQxLFxuICBMaW5lX2JyZWFrX25vdF9wZXJtaXR0ZWRfaGVyZSA9IDExNDIsXG4gIERlY2xhcmF0aW9uX2V4cGVjdGVkID0gMTE0NixcbiAgX2NvbnN0X2RlY2xhcmF0aW9uc19tdXN0X2JlX2luaXRpYWxpemVkID0gMTE1NSxcbiAgVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsID0gMTE2MSxcbiAgSW50ZXJmYWNlX2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX2ltcGxlbWVudHNfY2xhdXNlID0gMTE3NixcbiAgQmluYXJ5X2RpZ2l0X2V4cGVjdGVkID0gMTE3NyxcbiAgT2N0YWxfZGlnaXRfZXhwZWN0ZWQgPSAxMTc4LFxuICBBbl9pbXBsZW1lbnRhdGlvbl9jYW5ub3RfYmVfZGVjbGFyZWRfaW5fYW1iaWVudF9jb250ZXh0cyA9IDExODMsXG4gIEFuX2V4dGVuZGVkX1VuaWNvZGVfZXNjYXBlX3ZhbHVlX211c3RfYmVfYmV0d2Vlbl8weDBfYW5kXzB4MTBGRkZGX2luY2x1c2l2ZSA9IDExOTgsXG4gIFVudGVybWluYXRlZF9Vbmljb2RlX2VzY2FwZV9zZXF1ZW5jZSA9IDExOTksXG4gIERlY29yYXRvcnNfYXJlX25vdF92YWxpZF9oZXJlID0gMTIwNixcbiAgX2Fic3RyYWN0X21vZGlmaWVyX2Nhbl9vbmx5X2FwcGVhcl9vbl9hX2NsYXNzX21ldGhvZF9vcl9wcm9wZXJ0eV9kZWNsYXJhdGlvbiA9IDEyNDIsXG4gIE1ldGhvZF8wX2Nhbm5vdF9oYXZlX2FuX2ltcGxlbWVudGF0aW9uX2JlY2F1c2VfaXRfaXNfbWFya2VkX2Fic3RyYWN0ID0gMTI0NSxcbiAgQV9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbl9pc19ub3RfcGVybWl0dGVkX2luX3RoaXNfY29udGV4dCA9IDEyNTUsXG4gIEFfY2xhc3NfbWF5X29ubHlfZXh0ZW5kX2Fub3RoZXJfY2xhc3MgPSAxMzExLFxuICBBX3BhcmFtZXRlcl9wcm9wZXJ0eV9jYW5ub3RfYmVfZGVjbGFyZWRfdXNpbmdfYV9yZXN0X3BhcmFtZXRlciA9IDEzMTcsXG4gIER1cGxpY2F0ZV9pZGVudGlmaWVyXzAgPSAyMzAwLFxuICBDYW5ub3RfZmluZF9uYW1lXzAgPSAyMzA0LFxuICBNb2R1bGVfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEgPSAyMzA1LFxuICBHZW5lcmljX3R5cGVfMF9yZXF1aXJlc18xX3R5cGVfYXJndW1lbnRfcyA9IDIzMTQsXG4gIFR5cGVfMF9pc19ub3RfZ2VuZXJpYyA9IDIzMTUsXG4gIFR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzEgPSAyMzIyLFxuICBJbmRleF9zaWduYXR1cmVfaXNfbWlzc2luZ19pbl90eXBlXzAgPSAyMzI5LFxuICBfdGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9jdXJyZW50X2xvY2F0aW9uID0gMjMzMixcbiAgX3N1cGVyX2Nhbl9vbmx5X2JlX3JlZmVyZW5jZWRfaW5fYV9kZXJpdmVkX2NsYXNzID0gMjMzNSxcbiAgU3VwZXJfY2FsbHNfYXJlX25vdF9wZXJtaXR0ZWRfb3V0c2lkZV9jb25zdHJ1Y3RvcnNfb3JfaW5fbmVzdGVkX2Z1bmN0aW9uc19pbnNpZGVfY29uc3RydWN0b3JzID0gMjMzNyxcbiAgUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzEgPSAyMzM5LFxuICBDYW5ub3RfaW52b2tlX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9sYWNrc19hX2NhbGxfc2lnbmF0dXJlX1R5cGVfMF9oYXNfbm9fY29tcGF0aWJsZV9jYWxsX3NpZ25hdHVyZXMgPSAyMzQ5LFxuICBDYW5ub3RfdXNlX25ld193aXRoX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9sYWNrc19hX2NvbnN0cnVjdF9zaWduYXR1cmUgPSAyMzUxLFxuICBBX2Z1bmN0aW9uX3dob3NlX2RlY2xhcmVkX3R5cGVfaXNfbm90X3ZvaWRfbXVzdF9yZXR1cm5fYV92YWx1ZSA9IDIzNTUsXG4gIFRoZV9vcGVyYW5kX29mX2FuX2luY3JlbWVudF9vcl9kZWNyZW1lbnRfb3BlcmF0b3JfbXVzdF9iZV9hX3ZhcmlhYmxlX29yX2FfcHJvcGVydHlfYWNjZXNzID0gMjM1NyxcbiAgVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2Fzc2lnbm1lbnRfZXhwcmVzc2lvbl9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3MgPSAyMzY0LFxuICBPcGVyYXRvcl8wX2Nhbm5vdF9iZV9hcHBsaWVkX3RvX3R5cGVzXzFfYW5kXzIgPSAyMzY1LFxuICBBX3N1cGVyX2NhbGxfbXVzdF9iZV90aGVfZmlyc3Rfc3RhdGVtZW50X2luX3RoZV9jb25zdHJ1Y3RvciA9IDIzNzYsXG4gIENvbnN0cnVjdG9yc19mb3JfZGVyaXZlZF9jbGFzc2VzX211c3RfY29udGFpbl9hX3N1cGVyX2NhbGwgPSAyMzc3LFxuICBfZ2V0X2FuZF9zZXRfYWNjZXNzb3JfbXVzdF9oYXZlX3RoZV9zYW1lX3R5cGUgPSAyMzgwLFxuICBDb25zdHJ1Y3Rvcl9pbXBsZW1lbnRhdGlvbl9pc19taXNzaW5nID0gMjM5MCxcbiAgRnVuY3Rpb25faW1wbGVtZW50YXRpb25faXNfbWlzc2luZ19vcl9ub3RfaW1tZWRpYXRlbHlfZm9sbG93aW5nX3RoZV9kZWNsYXJhdGlvbiA9IDIzOTEsXG4gIE11bHRpcGxlX2NvbnN0cnVjdG9yX2ltcGxlbWVudGF0aW9uc19hcmVfbm90X2FsbG93ZWQgPSAyMzkyLFxuICBEdXBsaWNhdGVfZnVuY3Rpb25faW1wbGVtZW50YXRpb24gPSAyMzkzLFxuICBJbmRpdmlkdWFsX2RlY2xhcmF0aW9uc19pbl9tZXJnZWRfZGVjbGFyYXRpb25fMF9tdXN0X2JlX2FsbF9leHBvcnRlZF9vcl9hbGxfbG9jYWwgPSAyMzk1LFxuICBBX25hbWVzcGFjZV9kZWNsYXJhdGlvbl9jYW5ub3RfYmVfbG9jYXRlZF9wcmlvcl90b19hX2NsYXNzX29yX2Z1bmN0aW9uX3dpdGhfd2hpY2hfaXRfaXNfbWVyZ2VkID0gMjQzNCxcbiAgVHlwZV8wX2hhc19ub19wcm9wZXJ0eV8xID0gMjQ2MCxcbiAgVGhlXzBfb3BlcmF0b3JfY2Fubm90X2JlX2FwcGxpZWRfdG9fdHlwZV8xID0gMjQ2OSxcbiAgSW5fY29uc3RfZW51bV9kZWNsYXJhdGlvbnNfbWVtYmVyX2luaXRpYWxpemVyX211c3RfYmVfY29uc3RhbnRfZXhwcmVzc2lvbiA9IDI0NzQsXG4gIEV4cG9ydF9kZWNsYXJhdGlvbl9jb25mbGljdHNfd2l0aF9leHBvcnRlZF9kZWNsYXJhdGlvbl9vZl8wID0gMjQ4NCxcbiAgT2JqZWN0X2lzX3Bvc3NpYmx5X251bGwgPSAyNTMxLFxuICBDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX2NvbnN0YW50X29yX2FfcmVhZF9vbmx5X3Byb3BlcnR5ID0gMjU0MCxcbiAgVGhlX3RhcmdldF9vZl9hbl9hc3NpZ25tZW50X211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2VzcyA9IDI1NDEsXG4gIEluZGV4X3NpZ25hdHVyZV9pbl90eXBlXzBfb25seV9wZXJtaXRzX3JlYWRpbmcgPSAyNTQyLFxuICBFeHBlY3RlZF8wX2FyZ3VtZW50c19idXRfZ290XzEgPSAyNTU0LFxuICBFeHBlY3RlZF9hdF9sZWFzdF8wX2FyZ3VtZW50c19idXRfZ290XzEgPSAyNTU1LFxuICBFeHBlY3RlZF8wX3R5cGVfYXJndW1lbnRzX2J1dF9nb3RfMSA9IDI1NTgsXG4gIEFfbWVtYmVyX2luaXRpYWxpemVyX2luX2FfZW51bV9kZWNsYXJhdGlvbl9jYW5ub3RfcmVmZXJlbmNlX21lbWJlcnNfZGVjbGFyZWRfYWZ0ZXJfaXRfaW5jbHVkaW5nX21lbWJlcnNfZGVmaW5lZF9pbl9vdGhlcl9lbnVtcyA9IDI2NTEsXG4gIENvbnN0cnVjdG9yX29mX2NsYXNzXzBfaXNfcHJpdmF0ZV9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb24gPSAyNjczLFxuICBDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX2lzX3Byb3RlY3RlZF9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb24gPSAyNjc0LFxuICBOYW1lc3BhY2VfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEgPSAyNjk0LFxuICBSZXF1aXJlZF90eXBlX3BhcmFtZXRlcnNfbWF5X25vdF9mb2xsb3dfb3B0aW9uYWxfdHlwZV9wYXJhbWV0ZXJzID0gMjcwNixcbiAgRHVwbGljYXRlX3Byb3BlcnR5XzAgPSAyNzE4LFxuICBUeXBlXzBfaGFzX25vX2NhbGxfc2lnbmF0dXJlcyA9IDI3NTcsXG4gIEZpbGVfMF9ub3RfZm91bmQgPSA2MDU0LFxuICBOdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmUgPSA2MTg4LFxuICBNdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQgPSA2MTg5LFxuICBfc3VwZXJfbXVzdF9iZV9jYWxsZWRfYmVmb3JlX2FjY2Vzc2luZ190aGlzX2luX3RoZV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3MgPSAxNzAwOSxcbiAgX3N1cGVyX211c3RfYmVfY2FsbGVkX2JlZm9yZV9hY2Nlc3NpbmdfYV9wcm9wZXJ0eV9vZl9zdXBlcl9pbl90aGVfY29uc3RydWN0b3Jfb2ZfYV9kZXJpdmVkX2NsYXNzID0gMTcwMTFcbn1cblxuLyoqIFRyYW5zbGF0ZXMgYSBkaWFnbm9zdGljIGNvZGUgdG8gaXRzIHJlc3BlY3RpdmUgc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpYWdub3N0aWNDb2RlVG9TdHJpbmcoY29kZTogRGlhZ25vc3RpY0NvZGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIDEwMDogcmV0dXJuIFwiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQuXCI7XG4gICAgY2FzZSAxMDE6IHJldHVybiBcIk9wZXJhdGlvbiBpcyB1bnNhZmUuXCI7XG4gICAgY2FzZSAxMDI6IHJldHVybiBcIlVzZXItZGVmaW5lZDogezB9XCI7XG4gICAgY2FzZSAyMDA6IHJldHVybiBcIkNvbnZlcnNpb24gZnJvbSB0eXBlICd7MH0nIHRvICd7MX0nIHJlcXVpcmVzIGFuIGV4cGxpY2l0IGNhc3QuXCI7XG4gICAgY2FzZSAyMDE6IHJldHVybiBcIkNvbnZlcnNpb24gZnJvbSB0eXBlICd7MH0nIHRvICd7MX0nIHdpbGwgcmVxdWlyZSBhbiBleHBsaWNpdCBjYXN0IHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gMzIvNjQtYml0LlwiO1xuICAgIGNhc2UgMjAyOiByZXR1cm4gXCJUeXBlICd7MH0nIGNhbm5vdCBiZSBjaGFuZ2VkIHRvIHR5cGUgJ3sxfScuXCI7XG4gICAgY2FzZSAyMDM6IHJldHVybiBcIlR5cGUgJ3swfScgY2Fubm90IGJlIHJlaW50ZXJwcmV0ZWQgYXMgdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIwNDogcmV0dXJuIFwiQmFzaWMgdHlwZSAnezB9JyBjYW5ub3QgYmUgbnVsbGFibGUuXCI7XG4gICAgY2FzZSAyMDU6IHJldHVybiBcIkNhbm5vdCBleHBvcnQgYSBtdXRhYmxlIGdsb2JhbC5cIjtcbiAgICBjYXNlIDIwNjogcmV0dXJuIFwiTXV0YWJsZSB2YWx1ZSBjYW5ub3QgYmUgaW5saW5lZC5cIjtcbiAgICBjYXNlIDIwNzogcmV0dXJuIFwiVW5tYW5hZ2VkIGNsYXNzZXMgY2Fubm90IGV4dGVuZCBtYW5hZ2VkIGNsYXNzZXMgYW5kIHZpY2UtdmVyc2EuXCI7XG4gICAgY2FzZSAyMDg6IHJldHVybiBcIlVubWFuYWdlZCBjbGFzc2VzIGNhbm5vdCBpbXBsZW1lbnQgaW50ZXJmYWNlcy5cIjtcbiAgICBjYXNlIDIwOTogcmV0dXJuIFwiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZ3MuXCI7XG4gICAgY2FzZSAyMTA6IHJldHVybiBcIkltcGxlbWVudGF0aW9uICd7MH0nIG11c3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIxMTogcmV0dXJuIFwiQ2xhc3MgJ3swfScgaXMgc2VhbGVkIGFuZCBjYW5ub3QgYmUgZXh0ZW5kZWQuXCI7XG4gICAgY2FzZSAyMTI6IHJldHVybiBcIkRlY29yYXRvciAnezB9JyBpcyBub3QgdmFsaWQgaGVyZS5cIjtcbiAgICBjYXNlIDIxMzogcmV0dXJuIFwiRHVwbGljYXRlIGRlY29yYXRvci5cIjtcbiAgICBjYXNlIDIxNDogcmV0dXJuIFwiQW4gYWxsb2NhdG9yIG11c3QgYmUgcHJlc2VudCB0byB1c2UgJ3swfScuXCI7XG4gICAgY2FzZSAyMTU6IHJldHVybiBcIk9wdGlvbmFsIHBhcmFtZXRlciBtdXN0IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCI7XG4gICAgY2FzZSAyMTY6IHJldHVybiBcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIG11c3Qgbm90IHJlcXVpcmUgYW55IGFyZ3VtZW50cy5cIjtcbiAgICBjYXNlIDIxNzogcmV0dXJuIFwiRnVuY3Rpb24gJ3swfScgY2Fubm90IGJlIGlubGluZWQgaW50byBpdHNlbGYuXCI7XG4gICAgY2FzZSAyMTg6IHJldHVybiBcIkNhbm5vdCBhY2Nlc3MgbWV0aG9kICd7MH0nIHdpdGhvdXQgY2FsbGluZyBpdCBhcyBpdCByZXF1aXJlcyAndGhpcycgdG8gYmUgc2V0LlwiO1xuICAgIGNhc2UgMjE5OiByZXR1cm4gXCJPcHRpb25hbCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xuICAgIGNhc2UgMjIwOiByZXR1cm4gXCJFeHByZXNzaW9uIG11c3QgYmUgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuXCI7XG4gICAgY2FzZSAyMjE6IHJldHVybiBcIk1vZHVsZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBzdGFydCBmdW5jdGlvbnMuXCI7XG4gICAgY2FzZSAyMjI6IHJldHVybiBcIid7MH0nIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuICd7MX0nIGFuZCAnezJ9JyBpbmNsdXNpdmUuXCI7XG4gICAgY2FzZSAyMjM6IHJldHVybiBcIid7MH0nIG11c3QgYmUgYSBwb3dlciBvZiB0d28uXCI7XG4gICAgY2FzZSAyMjQ6IHJldHVybiBcIkV4cHJlc3Npb24gaXMgdW5zYWZlLlwiO1xuICAgIGNhc2UgMjI1OiByZXR1cm4gXCJFeHByZXNzaW9uIGlzIG5ldmVyICdudWxsJy5cIjtcbiAgICBjYXNlIDEwMDI6IHJldHVybiBcIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbC5cIjtcbiAgICBjYXNlIDEwMDM6IHJldHVybiBcIklkZW50aWZpZXIgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMDA1OiByZXR1cm4gXCInezB9JyBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDEwMDY6IHJldHVybiBcIkEgZmlsZSBjYW5ub3QgaGF2ZSBhIHJlZmVyZW5jZSB0byBpdHNlbGYuXCI7XG4gICAgY2FzZSAxMDA5OiByZXR1cm4gXCJUcmFpbGluZyBjb21tYSBub3QgYWxsb3dlZC5cIjtcbiAgICBjYXNlIDEwMTI6IHJldHVybiBcIlVuZXhwZWN0ZWQgdG9rZW4uXCI7XG4gICAgY2FzZSAxMDE0OiByZXR1cm4gXCJBIHJlc3QgcGFyYW1ldGVyIG11c3QgYmUgbGFzdCBpbiBhIHBhcmFtZXRlciBsaXN0LlwiO1xuICAgIGNhc2UgMTAxNTogcmV0dXJuIFwiUGFyYW1ldGVyIGNhbm5vdCBoYXZlIHF1ZXN0aW9uIG1hcmsgYW5kIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTAxNjogcmV0dXJuIFwiQSByZXF1aXJlZCBwYXJhbWV0ZXIgY2Fubm90IGZvbGxvdyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuXCI7XG4gICAgY2FzZSAxMDM2OiByZXR1cm4gXCJTdGF0ZW1lbnRzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiO1xuICAgIGNhc2UgMTAzOTogcmV0dXJuIFwiSW5pdGlhbGl6ZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiO1xuICAgIGNhc2UgMTA0MjogcmV0dXJuIFwiJ3swfScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgaGVyZS5cIjtcbiAgICBjYXNlIDEwNDc6IHJldHVybiBcIkEgcmVzdCBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsLlwiO1xuICAgIGNhc2UgMTA0ODogcmV0dXJuIFwiQSByZXN0IHBhcmFtZXRlciBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplci5cIjtcbiAgICBjYXNlIDEwNDk6IHJldHVybiBcIkEgJ3NldCcgYWNjZXNzb3IgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlci5cIjtcbiAgICBjYXNlIDEwNTI6IHJldHVybiBcIkEgJ3NldCcgYWNjZXNzb3IgcGFyYW1ldGVyIGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTA1NDogcmV0dXJuIFwiQSAnZ2V0JyBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzLlwiO1xuICAgIGNhc2UgMTA2MTogcmV0dXJuIFwiRW51bSBtZW1iZXIgbXVzdCBoYXZlIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTA5MjogcmV0dXJuIFwiVHlwZSBwYXJhbWV0ZXJzIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5cIjtcbiAgICBjYXNlIDEwOTM6IHJldHVybiBcIlR5cGUgYW5ub3RhdGlvbiBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uXCI7XG4gICAgY2FzZSAxMDk0OiByZXR1cm4gXCJBbiBhY2Nlc3NvciBjYW5ub3QgaGF2ZSB0eXBlIHBhcmFtZXRlcnMuXCI7XG4gICAgY2FzZSAxMDk1OiByZXR1cm4gXCJBICdzZXQnIGFjY2Vzc29yIGNhbm5vdCBoYXZlIGEgcmV0dXJuIHR5cGUgYW5ub3RhdGlvbi5cIjtcbiAgICBjYXNlIDEwOTg6IHJldHVybiBcIlR5cGUgcGFyYW1ldGVyIGxpc3QgY2Fubm90IGJlIGVtcHR5LlwiO1xuICAgIGNhc2UgMTEwNDogcmV0dXJuIFwiQSAnY29udGludWUnIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIHN0YXRlbWVudC5cIjtcbiAgICBjYXNlIDExMDU6IHJldHVybiBcIkEgJ2JyZWFrJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYW4gZW5jbG9zaW5nIGl0ZXJhdGlvbiBvciBzd2l0Y2ggc3RhdGVtZW50LlwiO1xuICAgIGNhc2UgMTEwODogcmV0dXJuIFwiQSAncmV0dXJuJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYSBmdW5jdGlvbiBib2R5LlwiO1xuICAgIGNhc2UgMTEwOTogcmV0dXJuIFwiRXhwcmVzc2lvbiBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExMTA6IHJldHVybiBcIlR5cGUgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMTEzOiByZXR1cm4gXCJBICdkZWZhdWx0JyBjbGF1c2UgY2Fubm90IGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhICdzd2l0Y2gnIHN0YXRlbWVudC5cIjtcbiAgICBjYXNlIDExMTQ6IHJldHVybiBcIkR1cGxpY2F0ZSBsYWJlbCAnezB9Jy5cIjtcbiAgICBjYXNlIDExMjA6IHJldHVybiBcIkFuIGV4cG9ydCBhc3NpZ25tZW50IGNhbm5vdCBoYXZlIG1vZGlmaWVycy5cIjtcbiAgICBjYXNlIDExMjE6IHJldHVybiBcIk9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS5cIjtcbiAgICBjYXNlIDExMjQ6IHJldHVybiBcIkRpZ2l0IGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTEyNTogcmV0dXJuIFwiSGV4YWRlY2ltYWwgZGlnaXQgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMTI2OiByZXR1cm4gXCJVbmV4cGVjdGVkIGVuZCBvZiB0ZXh0LlwiO1xuICAgIGNhc2UgMTEyNzogcmV0dXJuIFwiSW52YWxpZCBjaGFyYWN0ZXIuXCI7XG4gICAgY2FzZSAxMTMwOiByZXR1cm4gXCInY2FzZScgb3IgJ2RlZmF1bHQnIGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTAzNDogcmV0dXJuIFwiJ3N1cGVyJyBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFuIGFyZ3VtZW50IGxpc3Qgb3IgbWVtYmVyIGFjY2Vzcy5cIjtcbiAgICBjYXNlIDEwMzg6IHJldHVybiBcIkEgJ2RlY2xhcmUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIGluIGFuIGFscmVhZHkgYW1iaWVudCBjb250ZXh0LlwiO1xuICAgIGNhc2UgMTE0MDogcmV0dXJuIFwiVHlwZSBhcmd1bWVudCBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNDE6IHJldHVybiBcIlN0cmluZyBsaXRlcmFsIGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTE0MjogcmV0dXJuIFwiTGluZSBicmVhayBub3QgcGVybWl0dGVkIGhlcmUuXCI7XG4gICAgY2FzZSAxMTQ2OiByZXR1cm4gXCJEZWNsYXJhdGlvbiBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNTU6IHJldHVybiBcIidjb25zdCcgZGVjbGFyYXRpb25zIG11c3QgYmUgaW5pdGlhbGl6ZWQuXCI7XG4gICAgY2FzZSAxMTYxOiByZXR1cm4gXCJVbnRlcm1pbmF0ZWQgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwuXCI7XG4gICAgY2FzZSAxMTc2OiByZXR1cm4gXCJJbnRlcmZhY2UgZGVjbGFyYXRpb24gY2Fubm90IGhhdmUgJ2ltcGxlbWVudHMnIGNsYXVzZS5cIjtcbiAgICBjYXNlIDExNzc6IHJldHVybiBcIkJpbmFyeSBkaWdpdCBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNzg6IHJldHVybiBcIk9jdGFsIGRpZ2l0IGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTE4MzogcmV0dXJuIFwiQW4gaW1wbGVtZW50YXRpb24gY2Fubm90IGJlIGRlY2xhcmVkIGluIGFtYmllbnQgY29udGV4dHMuXCI7XG4gICAgY2FzZSAxMTk4OiByZXR1cm4gXCJBbiBleHRlbmRlZCBVbmljb2RlIGVzY2FwZSB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMHgwIGFuZCAweDEwRkZGRiBpbmNsdXNpdmUuXCI7XG4gICAgY2FzZSAxMTk5OiByZXR1cm4gXCJVbnRlcm1pbmF0ZWQgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UuXCI7XG4gICAgY2FzZSAxMjA2OiByZXR1cm4gXCJEZWNvcmF0b3JzIGFyZSBub3QgdmFsaWQgaGVyZS5cIjtcbiAgICBjYXNlIDEyNDI6IHJldHVybiBcIidhYnN0cmFjdCcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgY2xhc3MsIG1ldGhvZCwgb3IgcHJvcGVydHkgZGVjbGFyYXRpb24uXCI7XG4gICAgY2FzZSAxMjQ1OiByZXR1cm4gXCJNZXRob2QgJ3swfScgY2Fubm90IGhhdmUgYW4gaW1wbGVtZW50YXRpb24gYmVjYXVzZSBpdCBpcyBtYXJrZWQgYWJzdHJhY3QuXCI7XG4gICAgY2FzZSAxMjU1OiByZXR1cm4gXCJBIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9uICchJyBpcyBub3QgcGVybWl0dGVkIGluIHRoaXMgY29udGV4dC5cIjtcbiAgICBjYXNlIDEzMTE6IHJldHVybiBcIkEgY2xhc3MgbWF5IG9ubHkgZXh0ZW5kIGFub3RoZXIgY2xhc3MuXCI7XG4gICAgY2FzZSAxMzE3OiByZXR1cm4gXCJBIHBhcmFtZXRlciBwcm9wZXJ0eSBjYW5ub3QgYmUgZGVjbGFyZWQgdXNpbmcgYSByZXN0IHBhcmFtZXRlci5cIjtcbiAgICBjYXNlIDIzMDA6IHJldHVybiBcIkR1cGxpY2F0ZSBpZGVudGlmaWVyICd7MH0nLlwiO1xuICAgIGNhc2UgMjMwNDogcmV0dXJuIFwiQ2Fubm90IGZpbmQgbmFtZSAnezB9Jy5cIjtcbiAgICBjYXNlIDIzMDU6IHJldHVybiBcIk1vZHVsZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiO1xuICAgIGNhc2UgMjMxNDogcmV0dXJuIFwiR2VuZXJpYyB0eXBlICd7MH0nIHJlcXVpcmVzIHsxfSB0eXBlIGFyZ3VtZW50KHMpLlwiO1xuICAgIGNhc2UgMjMxNTogcmV0dXJuIFwiVHlwZSAnezB9JyBpcyBub3QgZ2VuZXJpYy5cIjtcbiAgICBjYXNlIDIzMjI6IHJldHVybiBcIlR5cGUgJ3swfScgaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIzMjk6IHJldHVybiBcIkluZGV4IHNpZ25hdHVyZSBpcyBtaXNzaW5nIGluIHR5cGUgJ3swfScuXCI7XG4gICAgY2FzZSAyMzMyOiByZXR1cm4gXCIndGhpcycgY2Fubm90IGJlIHJlZmVyZW5jZWQgaW4gY3VycmVudCBsb2NhdGlvbi5cIjtcbiAgICBjYXNlIDIzMzU6IHJldHVybiBcIidzdXBlcicgY2FuIG9ubHkgYmUgcmVmZXJlbmNlZCBpbiBhIGRlcml2ZWQgY2xhc3MuXCI7XG4gICAgY2FzZSAyMzM3OiByZXR1cm4gXCJTdXBlciBjYWxscyBhcmUgbm90IHBlcm1pdHRlZCBvdXRzaWRlIGNvbnN0cnVjdG9ycyBvciBpbiBuZXN0ZWQgZnVuY3Rpb25zIGluc2lkZSBjb25zdHJ1Y3RvcnMuXCI7XG4gICAgY2FzZSAyMzM5OiByZXR1cm4gXCJQcm9wZXJ0eSAnezB9JyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICd7MX0nLlwiO1xuICAgIGNhc2UgMjM0OTogcmV0dXJuIFwiQ2Fubm90IGludm9rZSBhbiBleHByZXNzaW9uIHdob3NlIHR5cGUgbGFja3MgYSBjYWxsIHNpZ25hdHVyZS4gVHlwZSAnezB9JyBoYXMgbm8gY29tcGF0aWJsZSBjYWxsIHNpZ25hdHVyZXMuXCI7XG4gICAgY2FzZSAyMzUxOiByZXR1cm4gXCJDYW5ub3QgdXNlICduZXcnIHdpdGggYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBlIGxhY2tzIGEgY29uc3RydWN0IHNpZ25hdHVyZS5cIjtcbiAgICBjYXNlIDIzNTU6IHJldHVybiBcIkEgZnVuY3Rpb24gd2hvc2UgZGVjbGFyZWQgdHlwZSBpcyBub3QgJ3ZvaWQnIG11c3QgcmV0dXJuIGEgdmFsdWUuXCI7XG4gICAgY2FzZSAyMzU3OiByZXR1cm4gXCJUaGUgb3BlcmFuZCBvZiBhbiBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IG9wZXJhdG9yIG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIHByb3BlcnR5IGFjY2Vzcy5cIjtcbiAgICBjYXNlIDIzNjQ6IHJldHVybiBcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGV4cHJlc3Npb24gbXVzdCBiZSBhIHZhcmlhYmxlIG9yIGEgcHJvcGVydHkgYWNjZXNzLlwiO1xuICAgIGNhc2UgMjM2NTogcmV0dXJuIFwiT3BlcmF0b3IgJ3swfScgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZXMgJ3sxfScgYW5kICd7Mn0nLlwiO1xuICAgIGNhc2UgMjM3NjogcmV0dXJuIFwiQSAnc3VwZXInIGNhbGwgbXVzdCBiZSB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjb25zdHJ1Y3Rvci5cIjtcbiAgICBjYXNlIDIzNzc6IHJldHVybiBcIkNvbnN0cnVjdG9ycyBmb3IgZGVyaXZlZCBjbGFzc2VzIG11c3QgY29udGFpbiBhICdzdXBlcicgY2FsbC5cIjtcbiAgICBjYXNlIDIzODA6IHJldHVybiBcIidnZXQnIGFuZCAnc2V0JyBhY2Nlc3NvciBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZS5cIjtcbiAgICBjYXNlIDIzOTA6IHJldHVybiBcIkNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uIGlzIG1pc3NpbmcuXCI7XG4gICAgY2FzZSAyMzkxOiByZXR1cm4gXCJGdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBpcyBtaXNzaW5nIG9yIG5vdCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIGRlY2xhcmF0aW9uLlwiO1xuICAgIGNhc2UgMjM5MjogcmV0dXJuIFwiTXVsdGlwbGUgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25zIGFyZSBub3QgYWxsb3dlZC5cIjtcbiAgICBjYXNlIDIzOTM6IHJldHVybiBcIkR1cGxpY2F0ZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi5cIjtcbiAgICBjYXNlIDIzOTU6IHJldHVybiBcIkluZGl2aWR1YWwgZGVjbGFyYXRpb25zIGluIG1lcmdlZCBkZWNsYXJhdGlvbiAnezB9JyBtdXN0IGJlIGFsbCBleHBvcnRlZCBvciBhbGwgbG9jYWwuXCI7XG4gICAgY2FzZSAyNDM0OiByZXR1cm4gXCJBIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiBjYW5ub3QgYmUgbG9jYXRlZCBwcmlvciB0byBhIGNsYXNzIG9yIGZ1bmN0aW9uIHdpdGggd2hpY2ggaXQgaXMgbWVyZ2VkLlwiO1xuICAgIGNhc2UgMjQ2MDogcmV0dXJuIFwiVHlwZSAnezB9JyBoYXMgbm8gcHJvcGVydHkgJ3sxfScuXCI7XG4gICAgY2FzZSAyNDY5OiByZXR1cm4gXCJUaGUgJ3swfScgb3BlcmF0b3IgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDI0NzQ6IHJldHVybiBcIkluICdjb25zdCcgZW51bSBkZWNsYXJhdGlvbnMgbWVtYmVyIGluaXRpYWxpemVyIG11c3QgYmUgY29uc3RhbnQgZXhwcmVzc2lvbi5cIjtcbiAgICBjYXNlIDI0ODQ6IHJldHVybiBcIkV4cG9ydCBkZWNsYXJhdGlvbiBjb25mbGljdHMgd2l0aCBleHBvcnRlZCBkZWNsYXJhdGlvbiBvZiAnezB9Jy5cIjtcbiAgICBjYXNlIDI1MzE6IHJldHVybiBcIk9iamVjdCBpcyBwb3NzaWJseSAnbnVsbCcuXCI7XG4gICAgY2FzZSAyNTQwOiByZXR1cm4gXCJDYW5ub3QgYXNzaWduIHRvICd7MH0nIGJlY2F1c2UgaXQgaXMgYSBjb25zdGFudCBvciBhIHJlYWQtb25seSBwcm9wZXJ0eS5cIjtcbiAgICBjYXNlIDI1NDE6IHJldHVybiBcIlRoZSB0YXJnZXQgb2YgYW4gYXNzaWdubWVudCBtdXN0IGJlIGEgdmFyaWFibGUgb3IgYSBwcm9wZXJ0eSBhY2Nlc3MuXCI7XG4gICAgY2FzZSAyNTQyOiByZXR1cm4gXCJJbmRleCBzaWduYXR1cmUgaW4gdHlwZSAnezB9JyBvbmx5IHBlcm1pdHMgcmVhZGluZy5cIjtcbiAgICBjYXNlIDI1NTQ6IHJldHVybiBcIkV4cGVjdGVkIHswfSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiO1xuICAgIGNhc2UgMjU1NTogcmV0dXJuIFwiRXhwZWN0ZWQgYXQgbGVhc3QgezB9IGFyZ3VtZW50cywgYnV0IGdvdCB7MX0uXCI7XG4gICAgY2FzZSAyNTU4OiByZXR1cm4gXCJFeHBlY3RlZCB7MH0gdHlwZSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiO1xuICAgIGNhc2UgMjY1MTogcmV0dXJuIFwiQSBtZW1iZXIgaW5pdGlhbGl6ZXIgaW4gYSBlbnVtIGRlY2xhcmF0aW9uIGNhbm5vdCByZWZlcmVuY2UgbWVtYmVycyBkZWNsYXJlZCBhZnRlciBpdCwgaW5jbHVkaW5nIG1lbWJlcnMgZGVmaW5lZCBpbiBvdGhlciBlbnVtcy5cIjtcbiAgICBjYXNlIDI2NzM6IHJldHVybiBcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNsYXNzIGRlY2xhcmF0aW9uLlwiO1xuICAgIGNhc2UgMjY3NDogcmV0dXJuIFwiQ29uc3RydWN0b3Igb2YgY2xhc3MgJ3swfScgaXMgcHJvdGVjdGVkIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIHRoZSBjbGFzcyBkZWNsYXJhdGlvbi5cIjtcbiAgICBjYXNlIDI2OTQ6IHJldHVybiBcIk5hbWVzcGFjZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiO1xuICAgIGNhc2UgMjcwNjogcmV0dXJuIFwiUmVxdWlyZWQgdHlwZSBwYXJhbWV0ZXJzIG1heSBub3QgZm9sbG93IG9wdGlvbmFsIHR5cGUgcGFyYW1ldGVycy5cIjtcbiAgICBjYXNlIDI3MTg6IHJldHVybiBcIkR1cGxpY2F0ZSBwcm9wZXJ0eSAnezB9Jy5cIjtcbiAgICBjYXNlIDI3NTc6IHJldHVybiBcIlR5cGUgJ3swfScgaGFzIG5vIGNhbGwgc2lnbmF0dXJlcy5cIjtcbiAgICBjYXNlIDYwNTQ6IHJldHVybiBcIkZpbGUgJ3swfScgbm90IGZvdW5kLlwiO1xuICAgIGNhc2UgNjE4ODogcmV0dXJuIFwiTnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgYWxsb3dlZCBoZXJlLlwiO1xuICAgIGNhc2UgNjE4OTogcmV0dXJuIFwiTXVsdGlwbGUgY29uc2VjdXRpdmUgbnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgcGVybWl0dGVkLlwiO1xuICAgIGNhc2UgMTcwMDk6IHJldHVybiBcIidzdXBlcicgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyAndGhpcycgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy5cIjtcbiAgICBjYXNlIDE3MDExOiByZXR1cm4gXCInc3VwZXInIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSBvZiAnc3VwZXInIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuXCI7XG4gICAgZGVmYXVsdDogcmV0dXJuIFwiXCI7XG4gIH1cbn1cbiJdfQ== + +/***/ }), + +/***/ "../src/diagnostics.ts": +/*!*****************************!*\ + !*** ../src/diagnostics.ts ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Shared diagnostic handling inherited by the parser and the compiler. + * @module diagnostics + * @preferred + */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +var diagnosticMessages_generated_1 = __webpack_require__(/*! ./diagnosticMessages.generated */ "../src/diagnosticMessages.generated.ts"); +var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); +var diagnosticMessages_generated_2 = __webpack_require__(/*! ./diagnosticMessages.generated */ "../src/diagnosticMessages.generated.ts"); +exports.DiagnosticCode = diagnosticMessages_generated_2.DiagnosticCode; +exports.diagnosticCodeToString = diagnosticMessages_generated_2.diagnosticCodeToString; +/** Indicates the category of a {@link DiagnosticMessage}. */ +var DiagnosticCategory; +(function (DiagnosticCategory) { + /** Informatory message. */ + DiagnosticCategory[DiagnosticCategory["INFO"] = 0] = "INFO"; + /** Warning message. */ + DiagnosticCategory[DiagnosticCategory["WARNING"] = 1] = "WARNING"; + /** Error message. */ + DiagnosticCategory[DiagnosticCategory["ERROR"] = 2] = "ERROR"; +})(DiagnosticCategory = exports.DiagnosticCategory || (exports.DiagnosticCategory = {})); +/** Returns the string representation of the specified diagnostic category. */ +function diagnosticCategoryToString(category) { + switch (category) { + case DiagnosticCategory.INFO: return "INFO"; + case DiagnosticCategory.WARNING: return "WARNING"; + case DiagnosticCategory.ERROR: return "ERROR"; + default: { + assert(false); + return ""; + } + } +} +exports.diagnosticCategoryToString = diagnosticCategoryToString; +/** ANSI escape sequence for blue foreground. */ +exports.COLOR_BLUE = "\u001b[96m"; +/** ANSI escape sequence for yellow foreground. */ +exports.COLOR_YELLOW = "\u001b[93m"; +/** ANSI escape sequence for red foreground. */ +exports.COLOR_RED = "\u001b[91m"; +/** ANSI escape sequence to reset the foreground color. */ +exports.COLOR_RESET = "\u001b[0m"; +/** Returns the ANSI escape sequence for the specified category. */ +function diagnosticCategoryToColor(category) { + switch (category) { + case DiagnosticCategory.INFO: return exports.COLOR_BLUE; + case DiagnosticCategory.WARNING: return exports.COLOR_YELLOW; + case DiagnosticCategory.ERROR: return exports.COLOR_RED; + default: { + assert(false); + return ""; + } + } +} +exports.diagnosticCategoryToColor = diagnosticCategoryToColor; +/** Represents a diagnostic message. */ +var DiagnosticMessage = /** @class */ (function () { + /** Constructs a new diagnostic message. */ + function DiagnosticMessage(code, category, message) { + /** Respective source range, if any. */ + this.range = null; + /** Related range, if any. */ + this.relatedRange = null; + this.code = code; + this.category = category; + this.message = message; + } + /** Creates a new diagnostic message of the specified category. */ + DiagnosticMessage.create = function (code, category, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + var message = diagnosticMessages_generated_1.diagnosticCodeToString(code); + if (arg0 != null) + message = message.replace("{0}", arg0); + if (arg1 != null) + message = message.replace("{1}", arg1); + if (arg2 != null) + message = message.replace("{2}", arg2); + return new DiagnosticMessage(code, category, message); + }; + /** Creates a new informatory diagnostic message. */ + DiagnosticMessage.createInfo = function (code, arg0, arg1) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + return DiagnosticMessage.create(code, DiagnosticCategory.INFO, arg0, arg1); + }; + /** Creates a new warning diagnostic message. */ + DiagnosticMessage.createWarning = function (code, arg0, arg1) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + return DiagnosticMessage.create(code, DiagnosticCategory.WARNING, arg0, arg1); + }; + /** Creates a new error diagnostic message. */ + DiagnosticMessage.createError = function (code, arg0, arg1) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + return DiagnosticMessage.create(code, DiagnosticCategory.ERROR, arg0, arg1); + }; + /** Adds a source range to this message. */ + DiagnosticMessage.prototype.withRange = function (range) { + this.range = range; + return this; + }; + /** Adds a related source range to this message. */ + DiagnosticMessage.prototype.withRelatedRange = function (range) { + this.relatedRange = range; + return this; + }; + /** Converts this message to a string. */ + DiagnosticMessage.prototype.toString = function () { + if (this.range) { + return (diagnosticCategoryToString(this.category) + + " " + + this.code.toString(10) + + ": \"" + + this.message + + "\" in " + + this.range.source.normalizedPath + + ":" + + this.range.line.toString(10) + + ":" + + this.range.column.toString(10)); + } + return (diagnosticCategoryToString(this.category) + + " " + + this.code.toString(10) + + ": " + + this.message); + }; + return DiagnosticMessage; +}()); +exports.DiagnosticMessage = DiagnosticMessage; +/** Formats a diagnostic message, optionally with terminal colors and source context. */ +function formatDiagnosticMessage(message, useColors, showContext) { + if (useColors === void 0) { useColors = false; } + if (showContext === void 0) { showContext = false; } + // general information + var sb = []; + if (useColors) + sb.push(diagnosticCategoryToColor(message.category)); + sb.push(diagnosticCategoryToString(message.category)); + if (useColors) + sb.push(exports.COLOR_RESET); + sb.push(message.code < 1000 ? " AS" : " TS"); + sb.push(message.code.toString(10)); + sb.push(": "); + sb.push(message.message); + // include range information if available + if (message.range) { + // include context information if requested + var range = message.range; + if (showContext) { + sb.push("\n"); + sb.push(formatDiagnosticContext(range, useColors)); + } + sb.push("\n"); + sb.push(" in "); + sb.push(range.source.normalizedPath); + sb.push("("); + sb.push(range.line.toString(10)); + sb.push(","); + sb.push(range.column.toString(10)); + sb.push(")"); + var relatedRange = message.relatedRange; + if (relatedRange) { + if (showContext) { + sb.push("\n"); + sb.push(formatDiagnosticContext(relatedRange, useColors)); + } + sb.push("\n"); + sb.push(" in "); + sb.push(range.source.normalizedPath); + sb.push("("); + sb.push(range.line.toString(10)); + sb.push(","); + sb.push(range.column.toString(10)); + sb.push(")"); + } + } + return sb.join(""); +} +exports.formatDiagnosticMessage = formatDiagnosticMessage; +/** Formats the diagnostic context for the specified range, optionally with terminal colors. */ +function formatDiagnosticContext(range, useColors) { + if (useColors === void 0) { useColors = false; } + var text = range.source.text; + var len = text.length; + var start = range.start; + var end = range.end; + while (start > 0 && !util_1.isLineBreak(text.charCodeAt(start - 1))) + start--; + while (end < len && !util_1.isLineBreak(text.charCodeAt(end))) + end++; + var sb = [ + "\n ", + text.substring(start, end), + "\n " + ]; + while (start < range.start) { + sb.push(" "); + start++; + } + if (useColors) + sb.push(exports.COLOR_RED); + if (range.start == range.end) { + sb.push("^"); + } + else { + while (start++ < range.end) { + if (util_1.isLineBreak(text.charCodeAt(start))) { + sb.push(start == range.start + 1 ? "^" : "~"); + break; + } + sb.push("~"); + } + } + if (useColors) + sb.push(exports.COLOR_RESET); + return sb.join(""); +} +exports.formatDiagnosticContext = formatDiagnosticContext; +/** Base class of all diagnostic emitters. */ +var DiagnosticEmitter = /** @class */ (function () { + /** Initializes this diagnostic emitter. */ + function DiagnosticEmitter(diagnostics) { + if (diagnostics === void 0) { diagnostics = null; } + this.diagnostics = diagnostics ? diagnostics : new Array(); + } + /** Emits a diagnostic message of the specified category. */ + DiagnosticEmitter.prototype.emitDiagnostic = function (code, category, range, relatedRange, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + var message = DiagnosticMessage.create(code, category, arg0, arg1, arg2).withRange(range); + if (relatedRange) + message.relatedRange = relatedRange; + this.diagnostics.push(message); + // console.log(formatDiagnosticMessage(message, true, true) + "\n"); // temporary + // console.log(new Error("stack").stack); + }; + /** Emits an informatory diagnostic message. */ + DiagnosticEmitter.prototype.info = function (code, range, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.INFO, range, null, arg0, arg1, arg2); + }; + /** Emits an informatory diagnostic message with a related range. */ + DiagnosticEmitter.prototype.infoRelated = function (code, range, relatedRange, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.INFO, range, relatedRange, arg0, arg1, arg2); + }; + /** Emits a warning diagnostic message. */ + DiagnosticEmitter.prototype.warning = function (code, range, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, null, arg0, arg1, arg2); + }; + /** Emits a warning diagnostic message with a related range. */ + DiagnosticEmitter.prototype.warningRelated = function (code, range, relatedRange, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, relatedRange, arg0, arg1, arg2); + }; + /** Emits an error diagnostic message. */ + DiagnosticEmitter.prototype.error = function (code, range, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, null, arg0, arg1, arg2); + }; + /** Emits an error diagnostic message with a related range. */ + DiagnosticEmitter.prototype.errorRelated = function (code, range, relatedRange, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, relatedRange, arg0, arg1, arg2); + }; + return DiagnosticEmitter; +}()); +exports.DiagnosticEmitter = DiagnosticEmitter; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlhZ25vc3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUcsQ0FBQSxLQUFLOztBQU1SLCtFQUd3QztBQUV4QywrQkFFZ0I7QUFFaEIsK0VBR3dDO0FBRnRDLHdEQUFBLGNBQWMsQ0FBQTtBQUNkLGdFQUFBLHNCQUFzQixDQUFBO0FBR3hCLDZEQUE2RDtBQUM3RCxJQUFZLGtCQU9YO0FBUEQsV0FBWSxrQkFBa0I7SUFDNUIsMkJBQTJCO0lBQzNCLDJEQUFJLENBQUE7SUFDSix1QkFBdUI7SUFDdkIsaUVBQU8sQ0FBQTtJQUNQLHFCQUFxQjtJQUNyQiw2REFBSyxDQUFBO0FBQ1AsQ0FBQyxFQVBXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBTzdCO0FBRUQsOEVBQThFO0FBQzlFLFNBQWdCLDBCQUEwQixDQUFDLFFBQTRCO0lBQ3JFLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUM7UUFDNUMsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQztRQUNsRCxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxDQUFDO1lBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDtLQUNGO0FBQ0gsQ0FBQztBQVZELGdFQVVDO0FBRUQsZ0RBQWdEO0FBQ25DLFFBQUEsVUFBVSxHQUFXLFlBQVksQ0FBQztBQUMvQyxrREFBa0Q7QUFDckMsUUFBQSxZQUFZLEdBQVcsWUFBWSxDQUFDO0FBQ2pELCtDQUErQztBQUNsQyxRQUFBLFNBQVMsR0FBVyxZQUFZLENBQUM7QUFDOUMsMERBQTBEO0FBQzdDLFFBQUEsV0FBVyxH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SSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUEvRkQsSUErRkM7QUEvRnFCLDhDQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIGRpYWdub3N0aWMgaGFuZGxpbmcgaW5oZXJpdGVkIGJ5IHRoZSBwYXJzZXIgYW5kIHRoZSBjb21waWxlci5cbiAqIEBtb2R1bGUgZGlhZ25vc3RpY3NcbiAqIEBwcmVmZXJyZWRcbiAqLy8qKiovXG5cbmltcG9ydCB7XG4gIFJhbmdlXG59IGZyb20gXCIuL2FzdFwiO1xuXG5pbXBvcnQge1xuICBEaWFnbm9zdGljQ29kZSxcbiAgZGlhZ25vc3RpY0NvZGVUb1N0cmluZ1xufSBmcm9tIFwiLi9kaWFnbm9zdGljTWVzc2FnZXMuZ2VuZXJhdGVkXCI7XG5cbmltcG9ydCB7XG4gIGlzTGluZUJyZWFrLCBDaGFyQ29kZVxufSBmcm9tIFwiLi91dGlsXCI7XG5cbmV4cG9ydCB7XG4gIERpYWdub3N0aWNDb2RlLFxuICBkaWFnbm9zdGljQ29kZVRvU3RyaW5nXG59IGZyb20gXCIuL2RpYWdub3N0aWNNZXNzYWdlcy5nZW5lcmF0ZWRcIjtcblxuLyoqIEluZGljYXRlcyB0aGUgY2F0ZWdvcnkgb2YgYSB7QGxpbmsgRGlhZ25vc3RpY01lc3NhZ2V9LiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0NhdGVnb3J5IHtcbiAgLyoqIEluZm9ybWF0b3J5IG1lc3NhZ2UuICovXG4gIElORk8sXG4gIC8qKiBXYXJuaW5nIG1lc3NhZ2UuICovXG4gIFdBUk5JTkcsXG4gIC8qKiBFcnJvciBtZXNzYWdlLiAqL1xuICBFUlJPUlxufVxuXG4vKiogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgZGlhZ25vc3RpYyBjYXRlZ29yeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFnbm9zdGljQ2F0ZWdvcnlUb1N0cmluZyhjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5KTogc3RyaW5nIHtcbiAgc3dpdGNoIChjYXRlZ29yeSkge1xuICAgIGNhc2UgRGlhZ25vc3RpY0NhdGVnb3J5LklORk86IHJldHVybiBcIklORk9cIjtcbiAgICBjYXNlIERpYWdub3N0aWNDYXRlZ29yeS5XQVJOSU5HOiByZXR1cm4gXCJXQVJOSU5HXCI7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuRVJST1I6IHJldHVybiBcIkVSUk9SXCI7XG4gICAgZGVmYXVsdDoge1xuICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfVxufVxuXG4vKiogQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIGJsdWUgZm9yZWdyb3VuZC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9CTFVFOiBzdHJpbmcgPSBcIlxcdTAwMWJbOTZtXCI7XG4vKiogQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIHllbGxvdyBmb3JlZ3JvdW5kLiAqL1xuZXhwb3J0IGNvbnN0IENPTE9SX1lFTExPVzogc3RyaW5nID0gXCJcXHUwMDFiWzkzbVwiO1xuLyoqIEFOU0kgZXNjYXBlIHNlcXVlbmNlIGZvciByZWQgZm9yZWdyb3VuZC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9SRUQ6IHN0cmluZyA9IFwiXFx1MDAxYls5MW1cIjtcbi8qKiBBTlNJIGVzY2FwZSBzZXF1ZW5jZSB0byByZXNldCB0aGUgZm9yZWdyb3VuZCBjb2xvci4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9SRVNFVDogc3RyaW5nID0gXCJcXHUwMDFiWzBtXCI7XG5cbi8qKiBSZXR1cm5zIHRoZSBBTlNJIGVzY2FwZSBzZXF1ZW5jZSBmb3IgdGhlIHNwZWNpZmllZCBjYXRlZ29yeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFnbm9zdGljQ2F0ZWdvcnlUb0NvbG9yKGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnkpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNhdGVnb3J5KSB7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuSU5GTzogcmV0dXJuIENPTE9SX0JMVUU7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuV0FSTklORzogcmV0dXJuIENPTE9SX1lFTExPVztcbiAgICBjYXNlIERpYWdub3N0aWNDYXRlZ29yeS5FUlJPUjogcmV0dXJuIENPTE9SX1JFRDtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBhc3NlcnQoZmFsc2UpO1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlLiAqL1xuZXhwb3J0IGNsYXNzIERpYWdub3N0aWNNZXNzYWdlIHtcblxuICAvKiogTWVzc2FnZSBjb2RlLiAqL1xuICBjb2RlOiBpMzI7XG4gIC8qKiBNZXNzYWdlIGNhdGVnb3J5LiAqL1xuICBjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5O1xuICAvKiogTWVzc2FnZSB0ZXh0LiAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBSZXNwZWN0aXZlIHNvdXJjZSByYW5nZSwgaWYgYW55LiAqL1xuICByYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgLyoqIFJlbGF0ZWQgcmFuZ2UsIGlmIGFueS4gKi9cbiAgcmVsYXRlZFJhbmdlOiBSYW5nZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IGRpYWdub3N0aWMgbWVzc2FnZS4gKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihjb2RlOiBpMzIsIGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnksIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkaWFnbm9zdGljIG1lc3NhZ2Ugb2YgdGhlIHNwZWNpZmllZCBjYXRlZ29yeS4gKi9cbiAgc3RhdGljIGNyZWF0ZShcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5LFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERpYWdub3N0aWNNZXNzYWdlIHtcbiAgICB2YXIgbWVzc2FnZSA9IGRpYWdub3N0aWNDb2RlVG9TdHJpbmcoY29kZSk7XG4gICAgaWYgKGFyZzAgIT0gbnVsbCkgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShcInswfVwiLCBhcmcwKTtcbiAgICBpZiAoYXJnMSAhPSBudWxsKSBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFwiezF9XCIsIGFyZzEpO1xuICAgIGlmIChhcmcyICE9IG51bGwpIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoXCJ7Mn1cIiwgYXJnMik7XG4gICAgcmV0dXJuIG5ldyBEaWFnbm9zdGljTWVzc2FnZShjb2RlLCBjYXRlZ29yeSwgbWVzc2FnZSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHN0YXRpYyBjcmVhdGVJbmZvKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERpYWdub3N0aWNNZXNzYWdlIHtcbiAgICByZXR1cm4gRGlhZ25vc3RpY01lc3NhZ2UuY3JlYXRlKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5JTkZPLCBhcmcwLCBhcmcxKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IHdhcm5pbmcgZGlhZ25vc3RpYyBtZXNzYWdlLiAqL1xuICBzdGF0aWMgY3JlYXRlV2FybmluZyhcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBEaWFnbm9zdGljTWVzc2FnZSB7XG4gICAgcmV0dXJuIERpYWdub3N0aWNNZXNzYWdlLmNyZWF0ZShjb2RlLCBEaWFnbm9zdGljQ2F0ZWdvcnkuV0FSTklORywgYXJnMCwgYXJnMSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBlcnJvciBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHN0YXRpYyBjcmVhdGVFcnJvcihcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBEaWFnbm9zdGljTWVzc2FnZSB7XG4gICAgcmV0dXJuIERpYWdub3N0aWNNZXNzYWdlLmNyZWF0ZShjb2RlLCBEaWFnbm9zdGljQ2F0ZWdvcnkuRVJST1IsIGFyZzAsIGFyZzEpO1xuICB9XG5cbiAgLyoqIEFkZHMgYSBzb3VyY2UgcmFuZ2UgdG8gdGhpcyBtZXNzYWdlLiAqL1xuICB3aXRoUmFuZ2UocmFuZ2U6IFJhbmdlKTogdGhpcyB7XG4gICAgdGhpcy5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEFkZHMgYSByZWxhdGVkIHNvdXJjZSByYW5nZSB0byB0aGlzIG1lc3NhZ2UuICovXG4gIHdpdGhSZWxhdGVkUmFuZ2UocmFuZ2U6IFJhbmdlKTogdGhpcyB7XG4gICAgdGhpcy5yZWxhdGVkUmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBDb252ZXJ0cyB0aGlzIG1lc3NhZ2UgdG8gYSBzdHJpbmcuICovXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGRpYWdub3N0aWNDYXRlZ29yeVRvU3RyaW5nKHRoaXMuY2F0ZWdvcnkpICtcbiAgICAgICAgXCIgXCIgK1xuICAgICAgICB0aGlzLmNvZGUudG9TdHJpbmcoMTApICtcbiAgICAgICAgXCI6IFxcXCJcIiArXG4gICAgICAgIHRoaXMubWVzc2FnZSArXG4gICAgICAgIFwiXFxcIiBpbiBcIiArXG4gICAgICAgIHRoaXMucmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICB0aGlzLnJhbmdlLmxpbmUudG9TdHJpbmcoMTApICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICB0aGlzLnJhbmdlLmNvbHVtbi50b1N0cmluZygxMClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBkaWFnbm9zdGljQ2F0ZWdvcnlUb1N0cmluZyh0aGlzLmNhdGVnb3J5KSArXG4gICAgICBcIiBcIiArXG4gICAgICB0aGlzLmNvZGUudG9TdHJpbmcoMTApICtcbiAgICAgIFwiOiBcIiArXG4gICAgICB0aGlzLm1lc3NhZ2VcbiAgICApO1xuICB9XG59XG5cbi8qKiBGb3JtYXRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlLCBvcHRpb25hbGx5IHdpdGggdGVybWluYWwgY29sb3JzIGFuZCBzb3VyY2UgY29udGV4dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREaWFnbm9zdGljTWVzc2FnZShcbiAgbWVzc2FnZTogRGlhZ25vc3RpY01lc3NhZ2UsXG4gIHVzZUNvbG9yczogYm9vbCA9IGZhbHNlLFxuICBzaG93Q29udGV4dDogYm9vbCA9IGZhbHNlXG4pOiBzdHJpbmcge1xuXG4gIC8vIGdlbmVyYWwgaW5mb3JtYXRpb25cbiAgdmFyIHNiOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodXNlQ29sb3JzKSBzYi5wdXNoKGRpYWdub3N0aWNDYXRlZ29yeVRvQ29sb3IobWVzc2FnZS5jYXRlZ29yeSkpO1xuICBzYi5wdXNoKGRpYWdub3N0aWNDYXRlZ29yeVRvU3RyaW5nKG1lc3NhZ2UuY2F0ZWdvcnkpKTtcbiAgaWYgKHVzZUNvbG9ycykgc2IucHVzaChDT0xPUl9SRVNFVCk7XG4gIHNiLnB1c2gobWVzc2FnZS5jb2RlIDwgMTAwMCA/IFwiIEFTXCIgOiBcIiBUU1wiKTtcbiAgc2IucHVzaChtZXNzYWdlLmNvZGUudG9TdHJpbmcoMTApKTtcbiAgc2IucHVzaChcIjogXCIpO1xuICBzYi5wdXNoKG1lc3NhZ2UubWVzc2FnZSk7XG5cbiAgLy8gaW5jbHVkZSByYW5nZSBpbmZvcm1hdGlvbiBpZiBhdmFpbGFibGVcbiAgaWYgKG1lc3NhZ2UucmFuZ2UpIHtcblxuICAgIC8vIGluY2x1ZGUgY29udGV4dCBpbmZvcm1hdGlvbiBpZiByZXF1ZXN0ZWRcbiAgICBsZXQgcmFuZ2UgPSBtZXNzYWdlLnJhbmdlO1xuICAgIGlmIChzaG93Q29udGV4dCkge1xuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICAgIHNiLnB1c2goZm9ybWF0RGlhZ25vc3RpY0NvbnRleHQocmFuZ2UsIHVzZUNvbG9ycykpO1xuICAgIH1cbiAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgIHNiLnB1c2goXCIgaW4gXCIpO1xuICAgIHNiLnB1c2gocmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoKTtcbiAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICBzYi5wdXNoKHJhbmdlLmxpbmUudG9TdHJpbmcoMTApKTtcbiAgICBzYi5wdXNoKFwiLFwiKTtcbiAgICBzYi5wdXNoKHJhbmdlLmNvbHVtbi50b1N0cmluZygxMCkpO1xuICAgIHNiLnB1c2goXCIpXCIpO1xuXG4gICAgbGV0IHJlbGF0ZWRSYW5nZSA9IG1lc3NhZ2UucmVsYXRlZFJhbmdlO1xuICAgIGlmIChyZWxhdGVkUmFuZ2UpIHtcbiAgICAgIGlmIChzaG93Q29udGV4dCkge1xuICAgICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgICBzYi5wdXNoKGZvcm1hdERpYWdub3N0aWNDb250ZXh0KHJlbGF0ZWRSYW5nZSwgdXNlQ29sb3JzKSk7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgc2IucHVzaChcIiBpbiBcIik7XG4gICAgICBzYi5wdXNoKHJhbmdlLnNvdXJjZS5ub3JtYWxpemVkUGF0aCk7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICAgIHNiLnB1c2gocmFuZ2UubGluZS50b1N0cmluZygxMCkpO1xuICAgICAgc2IucHVzaChcIixcIik7XG4gICAgICBzYi5wdXNoKHJhbmdlLmNvbHVtbi50b1N0cmluZygxMCkpO1xuICAgICAgc2IucHVzaChcIilcIik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzYi5qb2luKFwiXCIpO1xufVxuXG4vKiogRm9ybWF0cyB0aGUgZGlhZ25vc3RpYyBjb250ZXh0IGZvciB0aGUgc3BlY2lmaWVkIHJhbmdlLCBvcHRpb25hbGx5IHdpdGggdGVybWluYWwgY29sb3JzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpYWdub3N0aWNDb250ZXh0KHJhbmdlOiBSYW5nZSwgdXNlQ29sb3JzOiBib29sID0gZmFsc2UpOiBzdHJpbmcge1xuICB2YXIgdGV4dCA9IHJhbmdlLnNvdXJjZS50ZXh0O1xuICB2YXIgbGVuID0gdGV4dC5sZW5ndGg7XG4gIHZhciBzdGFydCA9IHJhbmdlLnN0YXJ0O1xuICB2YXIgZW5kID0gcmFuZ2UuZW5kO1xuICB3aGlsZSAoc3RhcnQgPiAwICYmICFpc0xpbmVCcmVhayh0ZXh0LmNoYXJDb2RlQXQoc3RhcnQgLSAxKSkpIHN0YXJ0LS07XG4gIHdoaWxlIChlbmQgPCBsZW4gJiYgIWlzTGluZUJyZWFrKHRleHQuY2hhckNvZGVBdChlbmQpKSkgZW5kKys7XG4gIHZhciBzYjogc3RyaW5nW10gPSBbXG4gICAgXCJcXG4gXCIsXG4gICAgdGV4dC5zdWJzdHJpbmcoc3RhcnQsIGVuZCksXG4gICAgXCJcXG4gXCJcbiAgXTtcbiAgd2hpbGUgKHN0YXJ0IDwgcmFuZ2Uuc3RhcnQpIHtcbiAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICBzdGFydCsrO1xuICB9XG4gIGlmICh1c2VDb2xvcnMpIHNiLnB1c2goQ09MT1JfUkVEKTtcbiAgaWYgKHJhbmdlLnN0YXJ0ID09IHJhbmdlLmVuZCkge1xuICAgIHNiLnB1c2goXCJeXCIpO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdGFydCsrIDwgcmFuZ2UuZW5kKSB7XG4gICAgICBpZiAoaXNMaW5lQnJlYWsodGV4dC5jaGFyQ29kZUF0KHN0YXJ0KSkpIHtcbiAgICAgICAgc2IucHVzaChzdGFydCA9PSByYW5nZS5zdGFydCArIDEgPyBcIl5cIiA6IFwiflwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiflwiKTtcbiAgICB9XG4gIH1cbiAgaWYgKHVzZUNvbG9ycykgc2IucHVzaChDT0xPUl9SRVNFVCk7XG4gIHJldHVybiBzYi5qb2luKFwiXCIpO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgZGlhZ25vc3RpYyBlbWl0dGVycy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEaWFnbm9zdGljRW1pdHRlciB7XG5cbiAgLyoqIERpYWdub3N0aWMgbWVzc2FnZXMgZW1pdHRlZCBzbyBmYXIuICovXG4gIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljTWVzc2FnZVtdO1xuXG4gIC8qKiBJbml0aWFsaXplcyB0aGlzIGRpYWdub3N0aWMgZW1pdHRlci4gKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGRpYWdub3N0aWNzOiBEaWFnbm9zdGljTWVzc2FnZVtdIHwgbnVsbCA9IG51bGwpIHtcbiAgICB0aGlzLmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3MgPyA8RGlhZ25vc3RpY01lc3NhZ2VbXT5kaWFnbm9zdGljcyA6IG5ldyBBcnJheSgpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlIG9mIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkuICovXG4gIGVtaXREaWFnbm9zdGljKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnksXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIHJlbGF0ZWRSYW5nZTogUmFuZ2UgfCBudWxsLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHZhciBtZXNzYWdlID0gRGlhZ25vc3RpY01lc3NhZ2UuY3JlYXRlKGNvZGUsIGNhdGVnb3J5LCBhcmcwLCBhcmcxLCBhcmcyKS53aXRoUmFuZ2UocmFuZ2UpO1xuICAgIGlmIChyZWxhdGVkUmFuZ2UpIG1lc3NhZ2UucmVsYXRlZFJhbmdlID0gcmVsYXRlZFJhbmdlO1xuICAgIHRoaXMuZGlhZ25vc3RpY3MucHVzaChtZXNzYWdlKTtcbiAgICAvLyBjb25zb2xlLmxvZyhmb3JtYXREaWFnbm9zdGljTWVzc2FnZShtZXNzYWdlLCB0cnVlLCB0cnVlKSArIFwiXFxuXCIpOyAvLyB0ZW1wb3JhcnlcbiAgICAvLyBjb25zb2xlLmxvZyg8c3RyaW5nPm5ldyBFcnJvcihcInN0YWNrXCIpLnN0YWNrKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIGluZm8oXG4gICAgY29kZTogRGlhZ25vc3RpY0NvZGUsXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LklORk8sIHJhbmdlLCBudWxsLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2Ugd2l0aCBhIHJlbGF0ZWQgcmFuZ2UuICovXG4gIGluZm9SZWxhdGVkKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICByZWxhdGVkUmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LklORk8sIHJhbmdlLCByZWxhdGVkUmFuZ2UsIGFyZzAsIGFyZzEsIGFyZzIpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgd2FybmluZyBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHdhcm5pbmcoXG4gICAgY29kZTogRGlhZ25vc3RpY0NvZGUsXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LldBUk5JTkcsIHJhbmdlLCBudWxsLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhIHdhcm5pbmcgZGlhZ25vc3RpYyBtZXNzYWdlIHdpdGggYSByZWxhdGVkIHJhbmdlLiAqL1xuICB3YXJuaW5nUmVsYXRlZChcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICByYW5nZTogUmFuZ2UsXG4gICAgcmVsYXRlZFJhbmdlOiBSYW5nZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcyOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVtaXREaWFnbm9zdGljKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5XQVJOSU5HLCByYW5nZSwgcmVsYXRlZFJhbmdlLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBlcnJvciBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIGVycm9yKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcyOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVtaXREaWFnbm9zdGljKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5FUlJPUiwgcmFuZ2UsIG51bGwsIGFyZzAsIGFyZzEsIGFyZzIpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGFuIGVycm9yIGRpYWdub3N0aWMgbWVzc2FnZSB3aXRoIGEgcmVsYXRlZCByYW5nZS4gKi9cbiAgZXJyb3JSZWxhdGVkKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICByZWxhdGVkUmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LkVSUk9SLCByYW5nZSwgcmVsYXRlZFJhbmdlLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxufVxuIl19 + +/***/ }), + +/***/ "../src/glue/js/float.js": +/*!*******************************!*\ + !*** ../src/glue/js/float.js ***! + \*******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {const F64 = new Float64Array(1); +const F32 = new Float32Array(F64.buffer); +const I32 = new Int32Array(F64.buffer); + +global.f32_as_i32 = function(value) { + F32[0] = value; + return I32[0]; +}; + +global.i32_as_f32 = function(value) { + I32[0] = value; + return F32[0]; +}; + +global.f64_as_i64 = function(value) { + F64[0] = value; + return i64_new(I32[0], I32[1]); +}; + +global.i64_as_f64 = function(value) { + I32[0] = i64_low(value); + I32[1] = i64_high(value); + return F64[0]; +}; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "../src/glue/js/i64.js": +/*!*****************************!*\ + !*** ../src/glue/js/i64.js ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {const Long = global.Long || __webpack_require__(/*! long */ "../node_modules/long/src/long.js"); + +global.i64_zero = Long.ZERO; + +global.i64_one = Long.ONE; + +global.i64_new = function(lo, hi) { + return Long.fromBits(lo, hi); +}; + +global.i64_low = function(value) { + return value.low; +}; + +global.i64_high = function(value) { + return value.high; +}; + +global.i64_add = function(left, right) { + return left.add(right); +}; + +global.i64_sub = function(left, right) { + return left.sub(right); +}; + +global.i64_mul = function(left, right) { + return left.mul(right); +}; + +global.i64_div = function(left, right) { + return left.div(right); +}; + +global.i64_div_u = function(left, right) { + return left.toUnsigned().div(right.toUnsigned()).toSigned(); +}; + +global.i64_rem = function(left, right) { + return left.mod(right); +}; + +global.i64_rem_u = function(left, right) { + return left.toUnsigned().mod(right.toUnsigned()).toSigned(); +}; + +global.i64_and = function(left, right) { + return left.and(right); +}; + +global.i64_or = function(left, right) { + return left.or(right); +}; + +global.i64_xor = function(left, right) { + return left.xor(right); +}; + +global.i64_shl = function(left, right) { + return left.shl(right); +}; + +global.i64_shr = function(left, right) { + return left.shr(right); +}; + +global.i64_shr_u = function(left, right) { + return left.shru(right); +}; + +global.i64_not = function(value) { + return value.not(); +}; + +global.i64_eq = function(left, right) { + return left.eq(right); +}; + +global.i64_ne = function(left, right) { + return left.ne(right); +}; + +global.i64_align = function(value, alignment) { + assert(alignment && (alignment & (alignment - 1)) == 0); + var mask = Long.fromInt(alignment - 1); + return value.add(mask).and(mask.not()); +}; + +global.i64_is_i8 = function(value) { + return value.high === 0 && (value.low >= 0 && value.low <= i8.MAX_VALUE) + || value.high === -1 && (value.low >= i8.MIN_VALUE && value.low < 0); +}; + +global.i64_is_i16 = function(value) { + return value.high === 0 && (value.low >= 0 && value.low <= i16.MAX_VALUE) + || value.high === -1 && (value.low >= i16.MIN_VALUE && value.low < 0); +}; + +global.i64_is_i32 = function(value) { + return (value.high === 0 && value.low >= 0) + || (value.high === -1 && value.low < 0); +}; + +global.i64_is_u8 = function(value) { + return value.high === 0 && value.low >= 0 && value.low <= u8.MAX_VALUE; +}; + +global.i64_is_u16 = function(value) { + return value.high === 0 && value.low >= 0 && value.low <= u16.MAX_VALUE; +}; + +global.i64_is_u32 = function(value) { + return value.high === 0; +}; + +global.i64_is_bool = function(value) { + return value.high === 0 && (value.low === 0 || value.low === 1); +}; + +const minSafeF32 = Long.fromNumber(f32.MIN_SAFE_INTEGER); +const maxSafeF32 = Long.fromNumber(f32.MAX_SAFE_INTEGER); + +global.i64_is_f32 = function(value) { + return value.gte(minSafeF32) && value.lte(maxSafeF32); +}; + +const minSafeF64 = Long.fromNumber(f64.MIN_SAFE_INTEGER); +const maxSafeF64 = Long.fromNumber(f64.MAX_SAFE_INTEGER); + +global.i64_is_f64 = function(value) { + return value.gte(minSafeF64) && value.lte(maxSafeF64); +}; + +global.i64_to_f32 = function(value) { + return global.Math.fround(value.toNumber()); +}; + +global.i64_to_f64 = function(value) { + return value.toNumber(); +}; + +global.i64_to_string = function(value, unsigned) { + return (unsigned ? value.toUnsigned() : value).toString(10); +}; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "../src/tokenizer.ts": +/*!***************************!*\ + !*** ../src/tokenizer.ts ***! + \***************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * A TypeScript tokenizer modified for AssemblyScript. + * + * Skips over trivia and provides a general mark/reset mechanism for the parser to utilize on + * ambiguous tokens. + * + * @module tokenizer + */ /***/ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var diagnostics_1 = __webpack_require__(/*! ./diagnostics */ "../src/diagnostics.ts"); +var ast_1 = __webpack_require__(/*! ./ast */ "../src/ast.ts"); +var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); +/** Named token types. */ +var Token; +(function (Token) { + // keywords + // discarded: ANY, BOOLEAN, NEVER, NUMBER, STRING, SYMBOL, UNDEFINED, LESSTHAN_SLASH + Token[Token["ABSTRACT"] = 0] = "ABSTRACT"; + Token[Token["AS"] = 1] = "AS"; + Token[Token["ASYNC"] = 2] = "ASYNC"; + Token[Token["AWAIT"] = 3] = "AWAIT"; + Token[Token["BREAK"] = 4] = "BREAK"; + Token[Token["CASE"] = 5] = "CASE"; + Token[Token["CATCH"] = 6] = "CATCH"; + Token[Token["CLASS"] = 7] = "CLASS"; + Token[Token["CONST"] = 8] = "CONST"; + Token[Token["CONTINUE"] = 9] = "CONTINUE"; + Token[Token["CONSTRUCTOR"] = 10] = "CONSTRUCTOR"; + Token[Token["DEBUGGER"] = 11] = "DEBUGGER"; + Token[Token["DECLARE"] = 12] = "DECLARE"; + Token[Token["DEFAULT"] = 13] = "DEFAULT"; + Token[Token["DELETE"] = 14] = "DELETE"; + Token[Token["DO"] = 15] = "DO"; + Token[Token["ELSE"] = 16] = "ELSE"; + Token[Token["ENUM"] = 17] = "ENUM"; + Token[Token["EXPORT"] = 18] = "EXPORT"; + Token[Token["EXTENDS"] = 19] = "EXTENDS"; + Token[Token["FALSE"] = 20] = "FALSE"; + Token[Token["FINALLY"] = 21] = "FINALLY"; + Token[Token["FOR"] = 22] = "FOR"; + Token[Token["FROM"] = 23] = "FROM"; + Token[Token["FUNCTION"] = 24] = "FUNCTION"; + Token[Token["GET"] = 25] = "GET"; + Token[Token["IF"] = 26] = "IF"; + Token[Token["IMPLEMENTS"] = 27] = "IMPLEMENTS"; + Token[Token["IMPORT"] = 28] = "IMPORT"; + Token[Token["IN"] = 29] = "IN"; + Token[Token["INSTANCEOF"] = 30] = "INSTANCEOF"; + Token[Token["INTERFACE"] = 31] = "INTERFACE"; + Token[Token["IS"] = 32] = "IS"; + Token[Token["KEYOF"] = 33] = "KEYOF"; + Token[Token["LET"] = 34] = "LET"; + Token[Token["MODULE"] = 35] = "MODULE"; + Token[Token["NAMESPACE"] = 36] = "NAMESPACE"; + Token[Token["NEW"] = 37] = "NEW"; + Token[Token["NULL"] = 38] = "NULL"; + Token[Token["OF"] = 39] = "OF"; + Token[Token["PACKAGE"] = 40] = "PACKAGE"; + Token[Token["PRIVATE"] = 41] = "PRIVATE"; + Token[Token["PROTECTED"] = 42] = "PROTECTED"; + Token[Token["PUBLIC"] = 43] = "PUBLIC"; + Token[Token["READONLY"] = 44] = "READONLY"; + Token[Token["RETURN"] = 45] = "RETURN"; + Token[Token["SET"] = 46] = "SET"; + Token[Token["STATIC"] = 47] = "STATIC"; + Token[Token["SUPER"] = 48] = "SUPER"; + Token[Token["SWITCH"] = 49] = "SWITCH"; + Token[Token["THIS"] = 50] = "THIS"; + Token[Token["THROW"] = 51] = "THROW"; + Token[Token["TRUE"] = 52] = "TRUE"; + Token[Token["TRY"] = 53] = "TRY"; + Token[Token["TYPE"] = 54] = "TYPE"; + Token[Token["TYPEOF"] = 55] = "TYPEOF"; + Token[Token["VAR"] = 56] = "VAR"; + Token[Token["VOID"] = 57] = "VOID"; + Token[Token["WHILE"] = 58] = "WHILE"; + Token[Token["WITH"] = 59] = "WITH"; + Token[Token["YIELD"] = 60] = "YIELD"; + // punctuation + Token[Token["OPENBRACE"] = 61] = "OPENBRACE"; + Token[Token["CLOSEBRACE"] = 62] = "CLOSEBRACE"; + Token[Token["OPENPAREN"] = 63] = "OPENPAREN"; + Token[Token["CLOSEPAREN"] = 64] = "CLOSEPAREN"; + Token[Token["OPENBRACKET"] = 65] = "OPENBRACKET"; + Token[Token["CLOSEBRACKET"] = 66] = "CLOSEBRACKET"; + Token[Token["DOT"] = 67] = "DOT"; + Token[Token["DOT_DOT_DOT"] = 68] = "DOT_DOT_DOT"; + Token[Token["SEMICOLON"] = 69] = "SEMICOLON"; + Token[Token["COMMA"] = 70] = "COMMA"; + Token[Token["LESSTHAN"] = 71] = "LESSTHAN"; + Token[Token["GREATERTHAN"] = 72] = "GREATERTHAN"; + Token[Token["LESSTHAN_EQUALS"] = 73] = "LESSTHAN_EQUALS"; + Token[Token["GREATERTHAN_EQUALS"] = 74] = "GREATERTHAN_EQUALS"; + Token[Token["EQUALS_EQUALS"] = 75] = "EQUALS_EQUALS"; + Token[Token["EXCLAMATION_EQUALS"] = 76] = "EXCLAMATION_EQUALS"; + Token[Token["EQUALS_EQUALS_EQUALS"] = 77] = "EQUALS_EQUALS_EQUALS"; + Token[Token["EXCLAMATION_EQUALS_EQUALS"] = 78] = "EXCLAMATION_EQUALS_EQUALS"; + Token[Token["EQUALS_GREATERTHAN"] = 79] = "EQUALS_GREATERTHAN"; + Token[Token["PLUS"] = 80] = "PLUS"; + Token[Token["MINUS"] = 81] = "MINUS"; + Token[Token["ASTERISK_ASTERISK"] = 82] = "ASTERISK_ASTERISK"; + Token[Token["ASTERISK"] = 83] = "ASTERISK"; + Token[Token["SLASH"] = 84] = "SLASH"; + Token[Token["PERCENT"] = 85] = "PERCENT"; + Token[Token["PLUS_PLUS"] = 86] = "PLUS_PLUS"; + Token[Token["MINUS_MINUS"] = 87] = "MINUS_MINUS"; + Token[Token["LESSTHAN_LESSTHAN"] = 88] = "LESSTHAN_LESSTHAN"; + Token[Token["GREATERTHAN_GREATERTHAN"] = 89] = "GREATERTHAN_GREATERTHAN"; + Token[Token["GREATERTHAN_GREATERTHAN_GREATERTHAN"] = 90] = "GREATERTHAN_GREATERTHAN_GREATERTHAN"; + Token[Token["AMPERSAND"] = 91] = "AMPERSAND"; + Token[Token["BAR"] = 92] = "BAR"; + Token[Token["CARET"] = 93] = "CARET"; + Token[Token["EXCLAMATION"] = 94] = "EXCLAMATION"; + Token[Token["TILDE"] = 95] = "TILDE"; + Token[Token["AMPERSAND_AMPERSAND"] = 96] = "AMPERSAND_AMPERSAND"; + Token[Token["BAR_BAR"] = 97] = "BAR_BAR"; + Token[Token["QUESTION"] = 98] = "QUESTION"; + Token[Token["COLON"] = 99] = "COLON"; + Token[Token["EQUALS"] = 100] = "EQUALS"; + Token[Token["PLUS_EQUALS"] = 101] = "PLUS_EQUALS"; + Token[Token["MINUS_EQUALS"] = 102] = "MINUS_EQUALS"; + Token[Token["ASTERISK_EQUALS"] = 103] = "ASTERISK_EQUALS"; + Token[Token["ASTERISK_ASTERISK_EQUALS"] = 104] = "ASTERISK_ASTERISK_EQUALS"; + Token[Token["SLASH_EQUALS"] = 105] = "SLASH_EQUALS"; + Token[Token["PERCENT_EQUALS"] = 106] = "PERCENT_EQUALS"; + Token[Token["LESSTHAN_LESSTHAN_EQUALS"] = 107] = "LESSTHAN_LESSTHAN_EQUALS"; + Token[Token["GREATERTHAN_GREATERTHAN_EQUALS"] = 108] = "GREATERTHAN_GREATERTHAN_EQUALS"; + Token[Token["GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS"] = 109] = "GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS"; + Token[Token["AMPERSAND_EQUALS"] = 110] = "AMPERSAND_EQUALS"; + Token[Token["BAR_EQUALS"] = 111] = "BAR_EQUALS"; + Token[Token["CARET_EQUALS"] = 112] = "CARET_EQUALS"; + Token[Token["AT"] = 113] = "AT"; + // literals + Token[Token["IDENTIFIER"] = 114] = "IDENTIFIER"; + Token[Token["STRINGLITERAL"] = 115] = "STRINGLITERAL"; + Token[Token["INTEGERLITERAL"] = 116] = "INTEGERLITERAL"; + Token[Token["FLOATLITERAL"] = 117] = "FLOATLITERAL"; + // meta + Token[Token["INVALID"] = 118] = "INVALID"; + Token[Token["ENDOFFILE"] = 119] = "ENDOFFILE"; +})(Token = exports.Token || (exports.Token = {})); +var IdentifierHandling; +(function (IdentifierHandling) { + IdentifierHandling[IdentifierHandling["DEFAULT"] = 0] = "DEFAULT"; + IdentifierHandling[IdentifierHandling["PREFER"] = 1] = "PREFER"; + IdentifierHandling[IdentifierHandling["ALWAYS"] = 2] = "ALWAYS"; +})(IdentifierHandling = exports.IdentifierHandling || (exports.IdentifierHandling = {})); +function tokenFromKeyword(text) { + assert(text.length); + switch (text.charCodeAt(0)) { + case 97 /* a */: { + switch (text) { + case "abstract": return Token.ABSTRACT; + case "as": return Token.AS; + case "async": return Token.ASYNC; + case "await": return Token.AWAIT; + } + break; + } + case 98 /* b */: { + switch (text) { + case "break": return Token.BREAK; + } + break; + } + case 99 /* c */: { + switch (text) { + case "case": return Token.CASE; + case "catch": return Token.CATCH; + case "class": return Token.CLASS; + case "continue": return Token.CONTINUE; + case "const": return Token.CONST; + case "constructor": return Token.CONSTRUCTOR; + } + break; + } + case 100 /* d */: { + switch (text) { + case "debugger": return Token.DEBUGGER; + case "declare": return Token.DECLARE; + case "default": return Token.DEFAULT; + case "delete": return Token.DELETE; + case "do": return Token.DO; + } + break; + } + case 101 /* e */: { + switch (text) { + case "else": return Token.ELSE; + case "enum": return Token.ENUM; + case "export": return Token.EXPORT; + case "extends": return Token.EXTENDS; + } + break; + } + case 102 /* f */: { + switch (text) { + case "false": return Token.FALSE; + case "finally": return Token.FINALLY; + case "for": return Token.FOR; + case "from": return Token.FROM; + case "function": return Token.FUNCTION; + } + break; + } + case 103 /* g */: { + switch (text) { + case "get": return Token.GET; + } + break; + } + case 105 /* i */: { + switch (text) { + case "if": return Token.IF; + case "implements": return Token.IMPLEMENTS; + case "import": return Token.IMPORT; + case "in": return Token.IN; + case "instanceof": return Token.INSTANCEOF; + case "interface": return Token.INTERFACE; + case "is": return Token.IS; + } + break; + } + case 107 /* k */: { + switch (text) { + case "keyof": return Token.KEYOF; + } + break; + } + case 108 /* l */: { + switch (text) { + case "let": return Token.LET; + } + break; + } + case 109 /* m */: { + switch (text) { + case "module": return Token.MODULE; + } + break; + } + case 110 /* n */: { + switch (text) { + case "namespace": return Token.NAMESPACE; + case "new": return Token.NEW; + case "null": return Token.NULL; + } + break; + } + case 111 /* o */: { + switch (text) { + case "of": return Token.OF; + } + break; + } + case 112 /* p */: { + switch (text) { + case "package": return Token.PACKAGE; + case "private": return Token.PRIVATE; + case "protected": return Token.PROTECTED; + case "public": return Token.PUBLIC; + } + break; + } + case 114 /* r */: { + switch (text) { + case "readonly": return Token.READONLY; + case "return": return Token.RETURN; + } + break; + } + case 115 /* s */: { + switch (text) { + case "set": return Token.SET; + case "static": return Token.STATIC; + case "super": return Token.SUPER; + case "switch": return Token.SWITCH; + } + break; + } + case 116 /* t */: { + switch (text) { + case "this": return Token.THIS; + case "throw": return Token.THROW; + case "true": return Token.TRUE; + case "try": return Token.TRY; + case "type": return Token.TYPE; + case "typeof": return Token.TYPEOF; + } + break; + } + case 118 /* v */: { + switch (text) { + case "var": return Token.VAR; + case "void": return Token.VOID; + } + break; + } + case 119 /* w */: { + switch (text) { + case "while": return Token.WHILE; + case "with": return Token.WITH; + } + break; + } + case 121 /* y */: { + switch (text) { + case "yield": return Token.YIELD; + } + break; + } + } + return Token.INVALID; +} +exports.tokenFromKeyword = tokenFromKeyword; +function tokenIsAlsoIdentifier(token) { + switch (token) { + case Token.ABSTRACT: + case Token.AS: + case Token.CONSTRUCTOR: + case Token.DECLARE: + case Token.DELETE: + case Token.FROM: + case Token.FOR: + case Token.GET: + case Token.INSTANCEOF: + case Token.IS: + case Token.KEYOF: + case Token.MODULE: + case Token.NAMESPACE: + case Token.NULL: + case Token.READONLY: + case Token.SET: + case Token.TYPE: + case Token.VOID: return true; + default: return false; + } +} +exports.tokenIsAlsoIdentifier = tokenIsAlsoIdentifier; +function isIllegalVariableIdentifier(name) { + assert(name.length); + switch (name.charCodeAt(0)) { + case 100 /* d */: return name == "delete"; + case 102 /* f */: return name == "for"; + case 105 /* i */: return name == "instanceof"; + case 110 /* n */: return name == "null"; + case 118 /* v */: return name == "void"; + } + return false; +} +exports.isIllegalVariableIdentifier = isIllegalVariableIdentifier; +function operatorTokenToString(token) { + switch (token) { + case Token.DELETE: return "delete"; + case Token.IN: return "in"; + case Token.INSTANCEOF: return "instanceof"; + case Token.NEW: return "new"; + case Token.TYPEOF: return "typeof"; + case Token.VOID: return "void"; + case Token.YIELD: return "yield"; + case Token.DOT_DOT_DOT: return "..."; + case Token.COMMA: return ","; + case Token.LESSTHAN: return "<"; + case Token.GREATERTHAN: return ">"; + case Token.LESSTHAN_EQUALS: return "<="; + case Token.GREATERTHAN_EQUALS: return ">="; + case Token.EQUALS_EQUALS: return "=="; + case Token.EXCLAMATION_EQUALS: return "!="; + case Token.EQUALS_EQUALS_EQUALS: return "==="; + case Token.EXCLAMATION_EQUALS_EQUALS: return "!=="; + case Token.PLUS: return "+"; + case Token.MINUS: return "-"; + case Token.ASTERISK_ASTERISK: return "**"; + case Token.ASTERISK: return "*"; + case Token.SLASH: return "/"; + case Token.PERCENT: return "%"; + case Token.PLUS_PLUS: return "++"; + case Token.MINUS_MINUS: return "--"; + case Token.LESSTHAN_LESSTHAN: return "<<"; + case Token.GREATERTHAN_GREATERTHAN: return ">>"; + case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: return ">>>"; + case Token.AMPERSAND: return "&"; + case Token.BAR: return "|"; + case Token.CARET: return "^"; + case Token.EXCLAMATION: return "!"; + case Token.TILDE: return "~"; + case Token.AMPERSAND_AMPERSAND: return "&&"; + case Token.BAR_BAR: return "||"; + case Token.EQUALS: return "="; + case Token.PLUS_EQUALS: return "+="; + case Token.MINUS_EQUALS: return "-="; + case Token.ASTERISK_EQUALS: return "*="; + case Token.ASTERISK_ASTERISK_EQUALS: return "**="; + case Token.SLASH_EQUALS: return "/="; + case Token.PERCENT_EQUALS: return "%="; + case Token.LESSTHAN_LESSTHAN_EQUALS: return "<<="; + case Token.GREATERTHAN_GREATERTHAN_EQUALS: return ">>="; + case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS: return ">>>="; + case Token.AMPERSAND_EQUALS: return "&="; + case Token.BAR_EQUALS: return "|="; + case Token.CARET_EQUALS: return "^="; + default: { + assert(false); + return ""; + } + } +} +exports.operatorTokenToString = operatorTokenToString; +var Range = /** @class */ (function () { + // TODO: set these while tokenizing + // line: i32; + // column: i32; + function Range(source, start, end) { + this.debugInfoRef = 0; + this.source = source; + this.start = start; + this.end = end; + } + Range.join = function (a, b) { + if (a.source != b.source) + throw new Error("source mismatch"); + return new Range(a.source, a.start < b.start ? a.start : b.start, a.end > b.end ? a.end : b.end); + }; + Object.defineProperty(Range.prototype, "atStart", { + get: function () { + return new Range(this.source, this.start, this.start); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Range.prototype, "atEnd", { + get: function () { + return new Range(this.source, this.end, this.end); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Range.prototype, "line", { + get: function () { + var text = this.source.text; + var line = 1; + for (var pos = this.start; pos >= 0; --pos) { + if (text.charCodeAt(pos) == 10 /* LINEFEED */) + line++; + } + return line; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Range.prototype, "column", { + get: function () { + var text = this.source.text; + var column = 0; + for (var pos = this.start - 1; pos >= 0; --pos) { + if (text.charCodeAt(pos) == 10 /* LINEFEED */) + break; + ++column; + } + return column; + }, + enumerable: true, + configurable: true + }); + Range.prototype.toString = function () { + return this.source.text.substring(this.start, this.end); + }; + return Range; +}()); +exports.Range = Range; +/** Tokenizes a source to individual {@link Token}s. */ +var Tokenizer = /** @class */ (function (_super) { + __extends(Tokenizer, _super); + /** Constructs a new tokenizer. */ + function Tokenizer(source, diagnostics) { + if (diagnostics === void 0) { diagnostics = null; } + var _this = _super.call(this, diagnostics) || this; + _this.end = 0; + _this.pos = 0; + _this.token = -1; + _this.tokenPos = 0; + _this.nextToken = -1; + _this.nextTokenPos = 0; + _this.nextTokenOnNewLine = false; + _this.onComment = null; + _this.source = source; + _this.pos = 0; + _this.end = source.text.length; + _this.diagnostics = diagnostics || new Array(); + var end = _this.end; + var text = source.text; + // skip bom + if (_this.pos < end && + text.charCodeAt(_this.pos) == 65279 /* BYTEORDERMARK */) { + ++_this.pos; + } + // skip shebang + if (_this.pos + 1 < end && + text.charCodeAt(_this.pos) == 35 /* HASH */ && + text.charCodeAt(_this.pos + 1) == 33 /* EXCLAMATION */) { + _this.pos += 2; + while (_this.pos < end && + text.charCodeAt(_this.pos) != 10 /* LINEFEED */) { + ++_this.pos; + } + // 'next' now starts at lf or eof + } + return _this; + } + Tokenizer.prototype.next = function (identifierHandling) { + if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } + this.nextToken = -1; + return this.token = this.unsafeNext(identifierHandling); + }; + Tokenizer.prototype.unsafeNext = function (identifierHandling, maxTokenLength) { + if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } + if (maxTokenLength === void 0) { maxTokenLength = i32.MAX_VALUE; } + var end = this.end; + var text = this.source.text; + while (this.pos < end) { + this.tokenPos = this.pos; + var c = text.charCodeAt(this.pos); + switch (c) { + case 13 /* CARRIAGERETURN */: { + if (!(++this.pos < end && + text.charCodeAt(this.pos) == 10 /* LINEFEED */)) + break; + // otherwise fall-through + } + case 10 /* LINEFEED */: + case 9 /* TAB */: + case 11 /* VERTICALTAB */: + case 12 /* FORMFEED */: + case 32 /* SPACE */: { + ++this.pos; + break; + } + case 33 /* EXCLAMATION */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + if (maxTokenLength > 2 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.EXCLAMATION_EQUALS_EQUALS; + } + return Token.EXCLAMATION_EQUALS; + } + return Token.EXCLAMATION; + } + case 34 /* DOUBLEQUOTE */: + case 39 /* SINGLEQUOTE */: + case 96 /* BACKTICK */: { // TODO + return Token.STRINGLITERAL; // expects a call to readString + } + case 37 /* PERCENT */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.PERCENT_EQUALS; + } + return Token.PERCENT; + } + case 38 /* AMPERSAND */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 38 /* AMPERSAND */) { + ++this.pos; + return Token.AMPERSAND_AMPERSAND; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.AMPERSAND_EQUALS; + } + } + return Token.AMPERSAND; + } + case 40 /* OPENPAREN */: { + ++this.pos; + return Token.OPENPAREN; + } + case 41 /* CLOSEPAREN */: { + ++this.pos; + return Token.CLOSEPAREN; + } + case 42 /* ASTERISK */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.ASTERISK_EQUALS; + } + if (chr == 42 /* ASTERISK */) { + ++this.pos; + if (maxTokenLength > 2 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.ASTERISK_ASTERISK_EQUALS; + } + return Token.ASTERISK_ASTERISK; + } + } + return Token.ASTERISK; + } + case 43 /* PLUS */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 43 /* PLUS */) { + ++this.pos; + return Token.PLUS_PLUS; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.PLUS_EQUALS; + } + } + return Token.PLUS; + } + case 44 /* COMMA */: { + ++this.pos; + return Token.COMMA; + } + case 45 /* MINUS */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 45 /* MINUS */) { + ++this.pos; + return Token.MINUS_MINUS; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.MINUS_EQUALS; + } + } + return Token.MINUS; + } + case 46 /* DOT */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (util_1.isDecimalDigit(chr)) { + --this.pos; + return Token.FLOATLITERAL; // expects a call to readFloat + } + if (maxTokenLength > 2 && this.pos + 1 < end && + chr == 46 /* DOT */ && + text.charCodeAt(this.pos + 1) == 46 /* DOT */) { + this.pos += 2; + return Token.DOT_DOT_DOT; + } + } + return Token.DOT; + } + case 47 /* SLASH */: { + var commentStartPos = this.pos; + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 47 /* SLASH */) { // single-line + var commentKind = ast_1.CommentKind.LINE; + if (this.pos + 1 < end && + text.charCodeAt(this.pos + 1) == 47 /* SLASH */) { + ++this.pos; + commentKind = ast_1.CommentKind.TRIPLE; + } + while (++this.pos < end) { + if (text.charCodeAt(this.pos) == 10 /* LINEFEED */) { + ++this.pos; + break; + } + } + if (this.onComment) { + this.onComment(commentKind, text.substring(commentStartPos, this.pos), this.range(commentStartPos, this.pos)); + } + break; + } + if (chr == 42 /* ASTERISK */) { // multi-line + var closed = false; + while (++this.pos < end) { + c = text.charCodeAt(this.pos); + if (c == 42 /* ASTERISK */ && + this.pos + 1 < end && + text.charCodeAt(this.pos + 1) == 47 /* SLASH */) { + this.pos += 2; + closed = true; + break; + } + } + if (!closed) { + this.error(diagnostics_1.DiagnosticCode._0_expected, this.range(this.pos), "*/"); + } + else if (this.onComment) { + this.onComment(ast_1.CommentKind.BLOCK, text.substring(commentStartPos, this.pos), this.range(commentStartPos, this.pos)); + } + break; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.SLASH_EQUALS; + } + } + return Token.SLASH; + } + case 48 /* _0 */: + case 49 /* _1 */: + case 50 /* _2 */: + case 51 /* _3 */: + case 52 /* _4 */: + case 53 /* _5 */: + case 54 /* _6 */: + case 55 /* _7 */: + case 56 /* _8 */: + case 57 /* _9 */: { + return this.testInteger() + ? Token.INTEGERLITERAL // expects a call to readInteger + : Token.FLOATLITERAL; // expects a call to readFloat + } + case 58 /* COLON */: { + ++this.pos; + return Token.COLON; + } + case 59 /* SEMICOLON */: { + ++this.pos; + return Token.SEMICOLON; + } + case 60 /* LESSTHAN */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 60 /* LESSTHAN */) { + ++this.pos; + if (maxTokenLength > 2 && + this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.LESSTHAN_LESSTHAN_EQUALS; + } + return Token.LESSTHAN_LESSTHAN; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.LESSTHAN_EQUALS; + } + } + return Token.LESSTHAN; + } + case 61 /* EQUALS */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 61 /* EQUALS */) { + ++this.pos; + if (maxTokenLength > 2 && + this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.EQUALS_EQUALS_EQUALS; + } + return Token.EQUALS_EQUALS; + } + if (chr == 62 /* GREATERTHAN */) { + ++this.pos; + return Token.EQUALS_GREATERTHAN; + } + } + return Token.EQUALS; + } + case 62 /* GREATERTHAN */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 62 /* GREATERTHAN */) { + ++this.pos; + if (maxTokenLength > 2 && this.pos < end) { + chr = text.charCodeAt(this.pos); + if (chr == 62 /* GREATERTHAN */) { + ++this.pos; + if (maxTokenLength > 3 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS; + } + return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.GREATERTHAN_GREATERTHAN_EQUALS; + } + } + return Token.GREATERTHAN_GREATERTHAN; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.GREATERTHAN_EQUALS; + } + } + return Token.GREATERTHAN; + } + case 63 /* QUESTION */: { + ++this.pos; + return Token.QUESTION; + } + case 91 /* OPENBRACKET */: { + ++this.pos; + return Token.OPENBRACKET; + } + case 93 /* CLOSEBRACKET */: { + ++this.pos; + return Token.CLOSEBRACKET; + } + case 94 /* CARET */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.CARET_EQUALS; + } + return Token.CARET; + } + case 123 /* OPENBRACE */: { + ++this.pos; + return Token.OPENBRACE; + } + case 124 /* BAR */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 124 /* BAR */) { + ++this.pos; + return Token.BAR_BAR; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.BAR_EQUALS; + } + } + return Token.BAR; + } + case 125 /* CLOSEBRACE */: { + ++this.pos; + return Token.CLOSEBRACE; + } + case 126 /* TILDE */: { + ++this.pos; + return Token.TILDE; + } + case 64 /* AT */: { + ++this.pos; + return Token.AT; + } + default: { + if (util_1.isIdentifierStart(c)) { + if (util_1.isKeywordCharacter(c)) { + var posBefore = this.pos; + while (++this.pos < end && + util_1.isIdentifierPart(c = text.charCodeAt(this.pos))) { + if (!util_1.isKeywordCharacter(c)) { + this.pos = posBefore; + return Token.IDENTIFIER; + } + } + var keywordText = text.substring(posBefore, this.pos); + var keywordToken = tokenFromKeyword(keywordText); + if (keywordToken !== Token.INVALID && + identifierHandling !== IdentifierHandling.ALWAYS && + !(identifierHandling === IdentifierHandling.PREFER && + tokenIsAlsoIdentifier(keywordToken))) { + return keywordToken; + } + this.pos = posBefore; + } + return Token.IDENTIFIER; // expects a call to readIdentifier + } + else if (util_1.isWhiteSpace(c)) { + ++this.pos; + break; + } + this.error(diagnostics_1.DiagnosticCode.Invalid_character, this.range(this.pos, this.pos + 1)); + ++this.pos; + return Token.INVALID; + } + } + } + return Token.ENDOFFILE; + }; + Tokenizer.prototype.peek = function (checkOnNewLine, identifierHandling, maxCompoundLength) { + if (checkOnNewLine === void 0) { checkOnNewLine = false; } + if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } + if (maxCompoundLength === void 0) { maxCompoundLength = i32.MAX_VALUE; } + var text = this.source.text; + if (this.nextToken < 0) { + var posBefore = this.pos; + var tokenBefore = this.token; + var tokenPosBefore = this.tokenPos; + this.nextToken = this.unsafeNext(identifierHandling, maxCompoundLength); + this.nextTokenPos = this.tokenPos; + if (checkOnNewLine) { + this.nextTokenOnNewLine = false; + for (var pos = posBefore, end = this.nextTokenPos; pos < end; ++pos) { + if (util_1.isLineBreak(text.charCodeAt(pos))) { + this.nextTokenOnNewLine = true; + break; + } + } + } + this.pos = posBefore; + this.token = tokenBefore; + this.tokenPos = tokenPosBefore; + } + return this.nextToken; + }; + Tokenizer.prototype.skipIdentifier = function (identifierHandling) { + if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.PREFER; } + return this.skip(Token.IDENTIFIER, identifierHandling); + }; + Tokenizer.prototype.skip = function (token, identifierHandling) { + if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } + var posBefore = this.pos; + var tokenBefore = this.token; + var tokenPosBefore = this.tokenPos; + var maxCompoundLength = i32.MAX_VALUE; + switch (token) { + case Token.GREATERTHAN: { // where parsing type arguments + maxCompoundLength = 1; + break; + } + } + this.token = this.unsafeNext(identifierHandling, maxCompoundLength); + if (this.token == token) { + this.nextToken = -1; + return true; + } + else { + this.pos = posBefore; + this.token = tokenBefore; + this.tokenPos = tokenPosBefore; + return false; + } + }; + Tokenizer.prototype.mark = function () { + var state; + if (reusableState) { + state = reusableState; + reusableState = null; + } + else { + state = new State(); + } + state.pos = this.pos; + state.token = this.token; + state.tokenPos = this.tokenPos; + return state; + }; + Tokenizer.prototype.discard = function (state) { + reusableState = state; + }; + Tokenizer.prototype.reset = function (state) { + this.pos = state.pos; + this.token = state.token; + this.tokenPos = state.tokenPos; + this.nextToken = -1; + }; + Tokenizer.prototype.range = function (start, end) { + if (start === void 0) { start = -1; } + if (end === void 0) { end = -1; } + if (start < 0) { + start = this.tokenPos; + end = this.pos; + } + else if (end < 0) { + end = start; + } + return new Range(this.source, start, end); + }; + Tokenizer.prototype.readIdentifier = function () { + var text = this.source.text; + var start = this.pos; + var end = this.end; + while (++this.pos < end && + util_1.isIdentifierPart(text.charCodeAt(this.pos))) + ; + return text.substring(start, this.pos); + }; + Tokenizer.prototype.readString = function () { + var text = this.source.text; + var quote = text.charCodeAt(this.pos++); + var start = this.pos; + var end = this.end; + var result = ""; + while (true) { + if (this.pos >= end) { + result += text.substring(start, this.pos); + this.error(diagnostics_1.DiagnosticCode.Unterminated_string_literal, this.range(start - 1, end)); + break; + } + var c = text.charCodeAt(this.pos); + if (c == quote) { + result += text.substring(start, this.pos++); + break; + } + if (c == 92 /* BACKSLASH */) { + result += text.substring(start, this.pos); + result += this.readEscapeSequence(); + start = this.pos; + continue; + } + if (util_1.isLineBreak(c) && quote != 96 /* BACKTICK */) { + result += text.substring(start, this.pos); + this.error(diagnostics_1.DiagnosticCode.Unterminated_string_literal, this.range(start - 1, this.pos)); + break; + } + ++this.pos; + } + return result; + }; + Tokenizer.prototype.readEscapeSequence = function () { + var end = this.end; + if (++this.pos >= end) { + this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(end)); + return ""; + } + var text = this.source.text; + var c = text.charCodeAt(this.pos++); + switch (c) { + case 48 /* _0 */: return "\0"; + case 98 /* b */: return "\b"; + case 116 /* t */: return "\t"; + case 110 /* n */: return "\n"; + case 118 /* v */: return "\v"; + case 102 /* f */: return "\f"; + case 114 /* r */: return "\r"; + case 39 /* SINGLEQUOTE */: return "'"; + case 34 /* DOUBLEQUOTE */: return "\""; + case 117 /* u */: { + if (this.pos < end && + text.charCodeAt(this.pos) == 123 /* OPENBRACE */) { + ++this.pos; + return this.readExtendedUnicodeEscape(); // \u{DDDDDDDD} + } + return this.readUnicodeEscape(); // \uDDDD + } + case 13 /* CARRIAGERETURN */: { + if (this.pos < end && + text.charCodeAt(this.pos) == 10 /* LINEFEED */) { + ++this.pos; + } + // fall through + } + case 10 /* LINEFEED */: + case 8232 /* LINESEPARATOR */: + case 8233 /* PARAGRAPHSEPARATOR */: return ""; + default: return String.fromCharCode(c); + } + }; + Tokenizer.prototype.readRegexpPattern = function () { + var text = this.source.text; + var start = this.pos; + var end = this.end; + var escaped = false; + while (true) { + if (this.pos >= end) { + this.error(diagnostics_1.DiagnosticCode.Unterminated_regular_expression_literal, this.range(start, end)); + break; + } + if (text.charCodeAt(this.pos) == 92 /* BACKSLASH */) { + ++this.pos; + escaped = true; + continue; + } + var c = text.charCodeAt(this.pos); + if (!escaped && c == 47 /* SLASH */) + break; + if (util_1.isLineBreak(c)) { + this.error(diagnostics_1.DiagnosticCode.Unterminated_regular_expression_literal, this.range(start, this.pos)); + break; + } + ++this.pos; + escaped = false; + } + return text.substring(start, this.pos); + }; + Tokenizer.prototype.readRegexpFlags = function () { + var text = this.source.text; + var start = this.pos; + var end = this.end; + var flags = 0; + while (this.pos < end) { + var c = text.charCodeAt(this.pos); + if (!util_1.isIdentifierPart(c)) + break; + ++this.pos; + // make sure each supported flag is unique + switch (c) { + case 103 /* g */: { + flags |= flags & 1 ? -1 : 1; + break; + } + case 105 /* i */: { + flags |= flags & 2 ? -1 : 2; + break; + } + case 109 /* m */: { + flags |= flags & 4 ? -1 : 4; + break; + } + default: { + flags = -1; + break; + } + } + } + if (flags == -1) { + this.error(diagnostics_1.DiagnosticCode.Invalid_regular_expression_flags, this.range(start, this.pos)); + } + return text.substring(start, this.pos); + }; + Tokenizer.prototype.testInteger = function () { + var end = this.end; + var text = this.source.text; + if (this.pos + 1 < end && text.charCodeAt(this.pos) == 48 /* _0 */) { + switch (text.charCodeAt(this.pos + 2)) { + case 120 /* x */: + case 88 /* X */: + case 98 /* b */: + case 66 /* B */: + case 111 /* o */: + case 79 /* O */: return true; + } + } + var pos = this.pos; + while (pos < end) { + var c = text.charCodeAt(pos); + if (c == 46 /* DOT */ || c == 101 /* e */ || c == 69 /* E */) + return false; + if ((c < 48 /* _0 */ || c > 57 /* _9 */) && c != 95 /* _ */) + break; + // does not validate separator placement (this is done in readXYInteger) + pos++; + } + return true; + }; + Tokenizer.prototype.readInteger = function () { + var text = this.source.text; + if (this.pos + 2 < this.end && text.charCodeAt(this.pos) == 48 /* _0 */) { + switch (text.charCodeAt(this.pos + 1)) { + case 120 /* x */: + case 88 /* X */: { + this.pos += 2; + return this.readHexInteger(); + } + case 98 /* b */: + case 66 /* B */: { + this.pos += 2; + return this.readBinaryInteger(); + } + case 111 /* o */: + case 79 /* O */: { + this.pos += 2; + return this.readOctalInteger(); + } + } + if (util_1.isOctalDigit(text.charCodeAt(this.pos + 1))) { + var start = this.pos; + ++this.pos; + var value = this.readOctalInteger(); + this.error(diagnostics_1.DiagnosticCode.Octal_literals_are_not_allowed_in_strict_mode, this.range(start, this.pos)); + return value; + } + } + return this.readDecimalInteger(); + }; + Tokenizer.prototype.readHexInteger = function () { + var text = this.source.text; + var start = this.pos; + var value = i64_new(0); + var i64_4 = i64_new(4); + var sepEnd = start; + var end = this.end; + while (this.pos < end) { + var pos = this.pos; + var c = text.charCodeAt(pos); + if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { + // value = (value << 4) + c - CharCode._0; + value = i64_add(i64_shl(value, i64_4), i64_new(c - 48 /* _0 */)); + } + else if (c >= 65 /* A */ && c <= 70 /* F */) { + // value = (value << 4) + 10 + c - CharCode.A; + value = i64_add(i64_shl(value, i64_4), i64_new(10 + c - 65 /* A */)); + } + else if (c >= 97 /* a */ && c <= 102 /* f */) { + // value = (value << 4) + 10 + c - CharCode.a; + value = i64_add(i64_shl(value, i64_4), i64_new(10 + c - 97 /* a */)); + } + else if (c == 95 /* _ */) { + if (sepEnd == pos) { + this.error(sepEnd == start + ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here + : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); + } + sepEnd = pos + 1; + } + else { + break; + } + this.pos = pos + 1; + } + if (this.pos == start) { + this.error(diagnostics_1.DiagnosticCode.Hexadecimal_digit_expected, this.range(start)); + } + else if (sepEnd == this.pos) { + this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); + } + return value; + }; + Tokenizer.prototype.readDecimalInteger = function () { + var text = this.source.text; + var start = this.pos; + var end = this.end; + var value = i64_new(0); + var i64_10 = i64_new(10); + var sepEnd = start; + while (this.pos < end) { + var pos = this.pos; + var c = text.charCodeAt(pos); + if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { + // value = value * 10 + c - CharCode._0; + value = i64_add(i64_mul(value, i64_10), i64_new(c - 48 /* _0 */)); + } + else if (c == 95 /* _ */) { + if (sepEnd == pos) { + this.error(sepEnd == start + ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here + : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); + } + sepEnd = pos + 1; + } + else { + break; + } + this.pos = pos + 1; + } + if (this.pos == start) { + this.error(diagnostics_1.DiagnosticCode.Digit_expected, this.range(start)); + } + else if (sepEnd == this.pos) { + this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); + } + return value; + }; + Tokenizer.prototype.readOctalInteger = function () { + var text = this.source.text; + var start = this.pos; + var value = i64_new(0); + var i64_3 = i64_new(3); + var sepEnd = start; + var end = this.end; + while (this.pos < end) { + var pos = this.pos; + var c = text.charCodeAt(pos); + if (c >= 48 /* _0 */ && c <= 55 /* _7 */) { + // value = (value << 3) + c - CharCode._0; + value = i64_add(i64_shl(value, i64_3), i64_new(c - 48 /* _0 */)); + } + else if (c == 95 /* _ */) { + if (sepEnd == pos) { + this.error(sepEnd == start + ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here + : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); + } + sepEnd = pos + 1; + } + else { + break; + } + ++this.pos; + } + if (this.pos == start) { + this.error(diagnostics_1.DiagnosticCode.Octal_digit_expected, this.range(start)); + } + else if (sepEnd == this.pos) { + this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); + } + return value; + }; + Tokenizer.prototype.readBinaryInteger = function () { + var text = this.source.text; + var start = this.pos; + var value = i64_new(0); + var i64_1 = i64_new(1); + var sepEnd = start; + var end = this.end; + while (this.pos < end) { + var pos = this.pos; + var c = text.charCodeAt(pos); + if (c == 48 /* _0 */) { + // value = (value << 1); + value = i64_shl(value, i64_1); + } + else if (c == 49 /* _1 */) { + // value = (value << 1) + 1; + value = i64_add(i64_shl(value, i64_1), i64_1); + } + else if (c == 95 /* _ */) { + if (sepEnd == pos) { + this.error(sepEnd == start + ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here + : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); + } + sepEnd = pos + 1; + } + else { + break; + } + this.pos = pos + 1; + } + if (this.pos == start) { + this.error(diagnostics_1.DiagnosticCode.Binary_digit_expected, this.range(start)); + } + else if (sepEnd == this.pos) { + this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); + } + return value; + }; + Tokenizer.prototype.readFloat = function () { + // var text = this.source.text; + // if (text.charCodeAt(this.pos) == CharCode._0 && this.pos + 2 < this.end) { + // switch (text.charCodeAt(this.pos + 1)) { + // case CharCode.X: + // case CharCode.x: { + // this.pos += 2; + // return this.readHexFloat(); + // } + // } + // } + return this.readDecimalFloat(); + }; + Tokenizer.prototype.readDecimalFloat = function () { + // TODO: numeric separators (parseFloat can't handle these) + var start = this.pos; + var end = this.end; + var text = this.source.text; + while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { + ++this.pos; + } + if (this.pos < end && text.charCodeAt(this.pos) == 46 /* DOT */) { + ++this.pos; + while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { + ++this.pos; + } + } + if (this.pos < end) { + var c = text.charCodeAt(this.pos); + if (c == 101 /* e */ || c == 69 /* E */) { + if (++this.pos < end && + (c = text.charCodeAt(this.pos)) == 45 /* MINUS */ || c == 43 /* PLUS */ && + util_1.isDecimalDigit(text.charCodeAt(this.pos + 1))) { + ++this.pos; + } + while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { + ++this.pos; + } + } + } + return parseFloat(text.substring(start, this.pos)); + }; + Tokenizer.prototype.readHexFloat = function () { + throw new Error("not implemented"); // TBD + }; + Tokenizer.prototype.readUnicodeEscape = function () { + var remain = 4; + var value = 0; + var end = this.end; + var text = this.source.text; + while (this.pos < end) { + var c = text.charCodeAt(this.pos++); + if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { + value = (value << 4) + c - 48 /* _0 */; + } + else if (c >= 65 /* A */ && c <= 70 /* F */) { + value = (value << 4) + c + (10 - 65 /* A */); + } + else if (c >= 97 /* a */ && c <= 102 /* f */) { + value = (value << 4) + c + (10 - 97 /* a */); + } + else { + this.error(diagnostics_1.DiagnosticCode.Hexadecimal_digit_expected, this.range(this.pos - 1, this.pos)); + return ""; + } + if (--remain == 0) + break; + } + if (remain) { + this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(this.pos)); + return ""; + } + return String.fromCharCode(value); + }; + Tokenizer.prototype.readExtendedUnicodeEscape = function () { + var start = this.pos; + var value = this.readHexInteger(); + var value32 = i64_low(value); + var invalid = false; + assert(!i64_high(value)); + if (value32 > 0x10FFFF) { + this.error(diagnostics_1.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive, this.range(start, this.pos)); + invalid = true; + } + var end = this.end; + var text = this.source.text; + if (this.pos >= end) { + this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(start, end)); + invalid = true; + } + else if (text.charCodeAt(this.pos) == 125 /* CLOSEBRACE */) { + ++this.pos; + } + else { + this.error(diagnostics_1.DiagnosticCode.Unterminated_Unicode_escape_sequence, this.range(start, this.pos)); + invalid = true; + } + if (invalid) + return ""; + return value32 < 65536 + ? String.fromCharCode(value32) + : String.fromCharCode(((value32 - 65536) >>> 10) + 0xD800, ((value32 - 65536) & 1023) + 0xDC00); + }; + Tokenizer.prototype.finish = function () { + }; + return Tokenizer; +}(diagnostics_1.DiagnosticEmitter)); +exports.Tokenizer = Tokenizer; +/** Tokenizer state as returned by {@link Tokenizer#mark} and consumed by {@link Tokenizer#reset}. */ +var State = /** @class */ (function () { + function State() { + } + return State; +}()); +exports.State = State; +// Reusable state object to reduce allocations +var reusableState = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rva2VuaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRyxDQUFBLEtBQUs7Ozs7Ozs7Ozs7Ozs7OztBQUVSLDZDQUl1QjtBQUV2Qiw2QkFHZTtBQUVmLCtCQVNnQjtBQUVoQix5QkFBeUI7QUFDekIsSUFBWSxLQXNJWDtBQXRJRCxXQUFZLEtBQUs7SUFFZixXQUFXO0lBQ1gsb0ZBQW9GO0lBRXBGLHlDQUFRLENBQUE7SUFDUiw2QkFBRSxDQUFBO0lBQ0YsbUNBQUssQ0FBQTtJQUNMLG1DQUFLLENBQUE7SUFDTCxtQ0FBSyxDQUFBO0lBQ0wsaUNBQUksQ0FBQTtJQUNKLG1DQUFLLENBQUE7SUFDTCxtQ0FBSyxDQUFBO0lBQ0wsbUNBQUssQ0FBQTtJQUNMLHlDQUFRLENBQUE7SUFDUixnREFBVyxDQUFBO0lBQ1gsMENBQVEsQ0FBQTtJQUNSLHdDQUFPLENBQUE7SUFDUCx3Q0FBTyxDQUFBO0lBQ1Asc0NBQU0sQ0FBQTtJQUNOLDhCQUFFLENBQUE7SUFDRixrQ0FBSSxDQUFBO0lBQ0osa0NBQUksQ0FBQTtJQUNKLHNDQUFNLENBQUE7SUFDTix3Q0FBTyxDQUFBO0lBQ1Asb0NBQUssQ0FBQTtJQUNMLHdDQUFPLENBQUE7SUFDUCxnQ0FBRyxDQUFBO0lBQ0gsa0NBQUksQ0FBQTtJQUNKLDBDQUFRLENBQUE7SUFDUixnQ0FBRyxDQUFBO0lBQ0gsOEJBQUUsQ0FBQTtJQUNGLDhDQUFVLENBQUE7SUFDVixzQ0FBTSxDQUFBO0lBQ04sOEJBQUUsQ0FBQTtJQUNGLDhDQUFVLENBQUE7SUFDViw0Q0FBUyxDQUFBO0lBQ1QsOEJBQUUsQ0FBQTtJQUNGLG9DQUFLLENBQUE7SUFDTCxnQ0FBRyxDQUFBO0lBQ0gsc0NBQU0sQ0FBQTtJQUNOLDRDQUFTLENBQUE7SUFDVCxnQ0FBRyxDQUFBO0lBQ0gsa0NBQUksQ0FBQTtJQUNKLDhCQUFFLENBQUE7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QUM7SUFBRCxZQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7QUFQWSxzQkFBSztBQVNsQiw4Q0FBOEM7QUFDOUMsSUFBSSxhQUFhLEdBQWlCLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBUeXBlU2NyaXB0IHRva2VuaXplciBtb2RpZmllZCBmb3IgQXNzZW1ibHlTY3JpcHQuXG4gKlxuICogU2tpcHMgb3ZlciB0cml2aWEgYW5kIHByb3ZpZGVzIGEgZ2VuZXJhbCBtYXJrL3Jlc2V0IG1lY2hhbmlzbSBmb3IgdGhlIHBhcnNlciB0byB1dGlsaXplIG9uXG4gKiBhbWJpZ3VvdXMgdG9rZW5zLlxuICpcbiAqIEBtb2R1bGUgdG9rZW5pemVyXG4gKi8vKioqL1xuXG5pbXBvcnQge1xuICBEaWFnbm9zdGljQ29kZSxcbiAgRGlhZ25vc3RpY01lc3NhZ2UsXG4gIERpYWdub3N0aWNFbWl0dGVyXG59IGZyb20gXCIuL2RpYWdub3N0aWNzXCI7XG5cbmltcG9ydCB7XG4gIFNvdXJjZSxcbiAgQ29tbWVudEtpbmRcbn0gZnJvbSBcIi4vYXN0XCI7XG5cbmltcG9ydCB7XG4gIENoYXJDb2RlLFxuICBpc0xpbmVCcmVhayxcbiAgaXNXaGl0ZVNwYWNlLFxuICBpc0lkZW50aWZpZXJTdGFydCxcbiAgaXNJZGVudGlmaWVyUGFydCxcbiAgaXNEZWNpbWFsRGlnaXQsXG4gIGlzT2N0YWxEaWdpdCxcbiAgaXNLZXl3b3JkQ2hhcmFjdGVyXG59IGZyb20gXCIuL3V0aWxcIjtcblxuLyoqIE5hbWVkIHRva2VuIHR5cGVzLiAqL1xuZXhwb3J0IGVudW0gVG9rZW4ge1xuXG4gIC8vIGtleXdvcmRzXG4gIC8vIGRpc2NhcmRlZDogQU5ZLCBCT09MRUFOLCBORVZFUiwgTlVNQkVSLCBTVFJJTkcsIFNZTUJPTCwgVU5ERUZJTkVELCBMRVNTVEhBTl9TTEFTSFxuXG4gIEFCU1RSQUNULFxuICBBUyxcbiAgQVNZTkMsXG4gIEFXQUlULCAgICAgICAgLy8gRVMyMDE3XG4gIEJSRUFLLCAgICAgICAgLy8gRVMyMDE3XG4gIENBU0UsICAgICAgICAgLy8gRVMyMDE3XG4gIENBVENILCAgICAgICAgLy8gRVMyMDE3XG4gIENMQVNTLCAgICAgICAgLy8gRVMyMDE3XG4gIENPTlNULCAgICAgICAgLy8gRVMyMDE3XG4gIENPTlRJTlVFLCAgICAgLy8gRVMyMDE3XG4gIENPTlNUUlVDVE9SLFxuICBERUJVR0dFUiwgICAgIC8vIEVTMjAxN1xuICBERUNMQVJFLFxuICBERUZBVUxULCAgICAgIC8vIEVTMjAxN1xuICBERUxFVEUsICAgICAgIC8vIEVTMjAxN1xuICBETywgICAgICAgICAgIC8vIEVTMjAxN1xuICBFTFNFLCAgICAgICAgIC8vIEVTMjAxN1xuICBFTlVNLCAgICAgICAgIC8vIEVTMjAxNyBmdXR1cmVcbiAgRVhQT1JULCAgICAgICAvLyBFUzIwMTdcbiAgRVhURU5EUywgICAgICAvLyBFUzIwMTdcbiAgRkFMU0UsICAgICAgICAvLyBFU1xuICBGSU5BTExZLCAgICAgIC8vIEVTMjAxN1xuICBGT1IsICAgICAgICAgIC8vIEVTMjAxN1xuICBGUk9NLCAgICAgICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgRlVOQ1RJT04sICAgICAvLyBFUzIwMTdcbiAgR0VULFxuICBJRiwgICAgICAgICAgIC8vIEVTMjAxN1xuICBJTVBMRU1FTlRTLCAgIC8vIEVTMjAxNyBub24tbGV4aWNhbFxuICBJTVBPUlQsICAgICAgIC8vIEVTMjAxN1xuICBJTiwgICAgICAgICAgIC8vIEVTMjAxN1xuICBJTlNUQU5DRU9GLCAgIC8vIEVTMjAxN1xuICBJTlRFUkZBQ0UsICAgIC8vIEVTMjAxNyBub24tbGV4aWNhbFxuICBJUyxcbiAgS0VZT0YsXG4gIExFVCwgICAgICAgICAgLy8gRVMyMDE3IG5vbi1sZXhpY2FsXG4gIE1PRFVMRSwgICAgICAgLy8gQVMgcG9zc2libGUgaWRlbnRpZmllclxuICBOQU1FU1BBQ0UsICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgTkVXLCAgICAgICAgICAvLyBFUzIwMTdcbiAgTlVMTCwgICAgICAgICAvLyBFU1xuICBPRixcbiAgUEFDS0FHRSwgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFJJVkFURSwgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFJPVEVDVEVELCAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFVCTElDLCAgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUkVBRE9OTFksXG4gIFJFVFVSTiwgICAgICAgLy8gRVMyMDE3XG4gIFNFVCxcbiAgU1RBVElDLCAgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgU1VQRVIsICAgICAgICAvLyBFUzIwMTdcbiAgU1dJVENILCAgICAgICAvLyBFUzIwMTdcbiAgVEhJUywgICAgICAgICAvLyBFUzIwMTdcbiAgVEhST1csICAgICAgICAvLyBFUzIwMTdcbiAgVFJVRSwgICAgICAgICAvLyBFU1xuICBUUlksICAgICAgICAgIC8vIEVTMjAxN1xuICBUWVBFLCAgICAgICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgVFlQRU9GLCAgICAgICAvLyBFUzIwMTdcbiAgVkFSLCAgICAgICAgICAvLyBFUzIwMTdcbiAgVk9JRCwgICAgICAgICAvLyBFUzIwMTdcbiAgV0hJTEUsICAgICAgICAvLyBFUzIwMTdcbiAgV0lUSCwgICAgICAgICAvLyBFUzIwMTdcbiAgWUlFTEQsICAgICAgICAvLyBFUzIwMTdcblxuICAvLyBwdW5jdHVhdGlvblxuXG4gIE9QRU5CUkFDRSxcbiAgQ0xPU0VCUkFDRSxcbiAgT1BFTlBBUkVOLFxuICBDTE9TRVBBUkVOLFxuICBPUEVOQlJBQ0tFVCxcbiAgQ0xPU0VCUkFDS0VULFxuICBET1QsXG4gIERPVF9ET1RfRE9ULFxuICBTRU1JQ09MT04sXG4gIENPTU1BLFxuICBMRVNTVEhBTixcbiAgR1JFQVRFUlRIQU4sXG4gIExFU1NUSEFOX0VRVUFMUyxcbiAgR1JFQVRFUlRIQU5fRVFVQUxTLFxuICBFUVVBTFNfRVFVQUxTLFxuICBFWENMQU1BVElPTl9FUVVBTFMsXG4gIEVRVUFMU19FUVVBTFNfRVFVQUxTLFxuICBFWENMQU1BVElPTl9FUVVBTFNfRVFVQUxTLFxuICBFUVVBTFNfR1JFQVRFUlRIQU4sXG4gIFBMVVMsXG4gIE1JTlVTLFxuICBBU1RFUklTS19BU1RFUklTSyxcbiAgQVNURVJJU0ssXG4gIFNMQVNILFxuICBQRVJDRU5ULFxuICBQTFVTX1BMVVMsXG4gIE1JTlVTX01JTlVTLFxuICBMRVNTVEhBTl9MRVNTVEhBTixcbiAgR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU4sXG4gIEdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0dSRUFURVJUSEFOLFxuICBBTVBFUlNBTkQsXG4gIEJBUixcbiAgQ0FSRVQsXG4gIEVYQ0xBTUFUSU9OLFxuICBUSUxERSxcbiAgQU1QRVJTQU5EX0FNUEVSU0FORCxcbiAgQkFSX0JBUixcbiAgUVVFU1RJT04sXG4gIENPTE9OLFxuICBFUVVBTFMsXG4gIFBMVVNfRVFVQUxTLFxuICBNSU5VU19FUVVBTFMsXG4gIEFTVEVSSVNLX0VRVUFMUyxcbiAgQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTLFxuICBTTEFTSF9FUVVBTFMsXG4gIFBFUkNFTlRfRVFVQUxTLFxuICBMRVNTVEhBTl9MRVNTVEhBTl9FUVVBTFMsXG4gIEdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0VRVUFMUyxcbiAgR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fRVFVQUxTLFxuICBBTVBFUlNBTkRfRVFVQUxTLFxuICBCQVJfRVFVQUxTLFxuICBDQVJFVF9FUVVBTFMsXG4gIEFULFxuXG4gIC8vIGxpdGVyYWxzXG5cbiAgSURFTlRJRklFUixcbiAgU1RSSU5HTElURVJBTCxcbiAgSU5URUdFUkxJVEVSQUwsXG4gIEZMT0FUTElURVJBTCxcblxuICAvLyBtZXRhXG5cbiAgSU5WQUxJRCxcbiAgRU5ET0ZGSUxFXG59XG5cbmV4cG9ydCBlbnVtIElkZW50aWZpZXJIYW5kbGluZyB7XG4gIERFRkFVTFQsXG4gIFBSRUZFUixcbiAgQUxXQVlTXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbkZyb21LZXl3b3JkKHRleHQ6IHN0cmluZyk6IFRva2VuIHtcbiAgYXNzZXJ0KHRleHQubGVuZ3RoKTtcbiAgc3dpdGNoICh0ZXh0LmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXJDb2RlLmE6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwiYWJzdHJhY3RcIjogcmV0dXJuIFRva2VuLkFCU1RSQUNUO1xuICAgICAgICBjYXNlIFwiYXNcIjogcmV0dXJuIFRva2VuLkFTO1xuICAgICAgICBjYXNlIFwiYXN5bmNcIjogcmV0dXJuIFRva2VuLkFTWU5DO1xuICAgICAgICBjYXNlIFwiYXdhaXRcIjogcmV0dXJuIFRva2VuLkFXQUlUO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuYjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJicmVha1wiOiByZXR1cm4gVG9rZW4uQlJFQUs7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5jOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImNhc2VcIjogcmV0dXJuIFRva2VuLkNBU0U7XG4gICAgICAgIGNhc2UgXCJjYXRjaFwiOiByZXR1cm4gVG9rZW4uQ0FUQ0g7XG4gICAgICAgIGNhc2UgXCJjbGFzc1wiOiByZXR1cm4gVG9rZW4uQ0xBU1M7XG4gICAgICAgIGNhc2UgXCJjb250aW51ZVwiOiByZXR1cm4gVG9rZW4uQ09OVElOVUU7XG4gICAgICAgIGNhc2UgXCJjb25zdFwiOiByZXR1cm4gVG9rZW4uQ09OU1Q7XG4gICAgICAgIGNhc2UgXCJjb25zdHJ1Y3RvclwiOiByZXR1cm4gVG9rZW4uQ09OU1RSVUNUT1I7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5kOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImRlYnVnZ2VyXCI6IHJldHVybiBUb2tlbi5ERUJVR0dFUjtcbiAgICAgICAgY2FzZSBcImRlY2xhcmVcIjogcmV0dXJuIFRva2VuLkRFQ0xBUkU7XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0XCI6IHJldHVybiBUb2tlbi5ERUZBVUxUO1xuICAgICAgICBjYXNlIFwiZGVsZXRlXCI6IHJldHVybiBUb2tlbi5ERUxFVEU7XG4gICAgICAgIGNhc2UgXCJkb1wiOiByZXR1cm4gVG9rZW4uRE87XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5lOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImVsc2VcIjogcmV0dXJuIFRva2VuLkVMU0U7XG4gICAgICAgIGNhc2UgXCJlbnVtXCI6IHJldHVybiBUb2tlbi5FTlVNO1xuICAgICAgICBjYXNlIFwiZXhwb3J0XCI6IHJldHVybiBUb2tlbi5FWFBPUlQ7XG4gICAgICAgIGNhc2UgXCJleHRlbmRzXCI6IHJldHVybiBUb2tlbi5FWFRFTkRTO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuZjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJmYWxzZVwiOiByZXR1cm4gVG9rZW4uRkFMU0U7XG4gICAgICAgIGNhc2UgXCJmaW5hbGx5XCI6IHJldHVybiBUb2tlbi5GSU5BTExZO1xuICAgICAgICBjYXNlIFwiZm9yXCI6IHJldHVybiBUb2tlbi5GT1I7XG4gICAgICAgIGNhc2UgXCJmcm9tXCI6IHJldHVybiBUb2tlbi5GUk9NO1xuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjogcmV0dXJuIFRva2VuLkZVTkNUSU9OO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuZzoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJnZXRcIjogcmV0dXJuIFRva2VuLkdFVDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLmk6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwiaWZcIjogcmV0dXJuIFRva2VuLklGO1xuICAgICAgICBjYXNlIFwiaW1wbGVtZW50c1wiOiByZXR1cm4gVG9rZW4uSU1QTEVNRU5UUztcbiAgICAgICAgY2FzZSBcImltcG9ydFwiOiByZXR1cm4gVG9rZW4uSU1QT1JUO1xuICAgICAgICBjYXNlIFwiaW5cIjogcmV0dXJuIFRva2VuLklOO1xuICAgICAgICBjYXNlIFwiaW5zdGFuY2VvZlwiOiByZXR1cm4gVG9rZW4uSU5TVEFOQ0VPRjtcbiAgICAgICAgY2FzZSBcImludGVyZmFjZVwiOiByZXR1cm4gVG9rZW4uSU5URVJGQUNFO1xuICAgICAgICBjYXNlIFwiaXNcIjogcmV0dXJuIFRva2VuLklTO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuazoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJrZXlvZlwiOiByZXR1cm4gVG9rZW4uS0VZT0Y7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5sOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImxldFwiOiByZXR1cm4gVG9rZW4uTEVUO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUubToge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJtb2R1bGVcIjogcmV0dXJuIFRva2VuLk1PRFVMRTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLm46IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwibmFtZXNwYWNlXCI6IHJldHVybiBUb2tlbi5OQU1FU1BBQ0U7XG4gICAgICAgIGNhc2UgXCJuZXdcIjogcmV0dXJuIFRva2VuLk5FVztcbiAgICAgICAgY2FzZSBcIm51bGxcIjogcmV0dXJuIFRva2VuLk5VTEw7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5vOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcIm9mXCI6IHJldHVybiBUb2tlbi5PRjtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLnA6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwicGFja2FnZVwiOiByZXR1cm4gVG9rZW4uUEFDS0FHRTtcbiAgICAgICAgY2FzZSBcInByaXZhdGVcIjogcmV0dXJuIFRva2VuLlBSSVZBVEU7XG4gICAgICAgIGNhc2UgXCJwcm90ZWN0ZWRcIjogcmV0dXJuIFRva2VuLlBST1RFQ1RFRDtcbiAgICAgICAgY2FzZSBcInB1YmxpY1wiOiByZXR1cm4gVG9rZW4uUFVCTElDO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUucjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJyZWFkb25seVwiOiByZXR1cm4gVG9rZW4uUkVBRE9OTFk7XG4gICAgICAgIGNhc2UgXCJyZXR1cm5cIjogcmV0dXJuIFRva2VuLlJFVFVSTjtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLnM6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwic2V0XCI6IHJldHVybiBUb2tlbi5TRVQ7XG4gICAgICAgIGNhc2UgXCJzdGF0aWNcIjogcmV0dXJuIFRva2VuLlNUQVRJQztcbiAgICAgICAgY2FzZSBcInN1cGVyXCI6IHJldHVybiBUb2tlbi5TVVBFUjtcbiAgICAgICAgY2FzZSBcInN3aXRjaFwiOiByZXR1cm4gVG9rZW4uU1dJVENIO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUudDoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJ0aGlzXCI6IHJldHVybiBUb2tlbi5USElTO1xuICAgICAgICBjYXNlIFwidGhyb3dcIjogcmV0dXJuIFRva2VuLlRIUk9XO1xuICAgICAgICBjYXNlIFwidHJ1ZVwiOiByZXR1cm4gVG9rZW4uVFJVRTtcbiAgICAgICAgY2FzZSBcInRyeVwiOiByZXR1cm4gVG9rZW4uVFJZO1xuICAgICAgICBjYXNlIFwidHlwZVwiOiByZXR1cm4gVG9rZW4uVFlQRTtcbiAgICAgICAgY2FzZSBcInR5cGVvZlwiOiByZXR1cm4gVG9rZW4uVFlQRU9GO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUudjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJ2YXJcIjogcmV0dXJuIFRva2VuLlZBUjtcbiAgICAgICAgY2FzZSBcInZvaWRcIjogcmV0dXJuIFRva2VuLlZPSUQ7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS53OiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcIndoaWxlXCI6IHJldHVybiBUb2tlbi5XSElMRTtcbiAgICAgICAgY2FzZSBcIndpdGhcIjogcmV0dXJuIFRva2VuLldJVEg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS55OiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcInlpZWxkXCI6IHJldHVybiBUb2tlbi5ZSUVMRDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVG9rZW4uSU5WQUxJRDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRva2VuSXNBbHNvSWRlbnRpZmllcih0b2tlbjogVG9rZW4pOiBib29sIHtcbiAgc3dpdGNoICh0b2tlbikge1xuICAgIGNhc2UgVG9rZW4uQUJTVFJBQ1Q6XG4gICAgY2FzZSBUb2tlbi5BUzpcbiAgICBjYXNlIFRva2VuLkNPTlNUUlVDVE9SOlxuICAgIGNhc2UgVG9rZW4uREVDTEFSRTpcbiAgICBjYXNlIFRva2VuLkRFTEVURTpcbiAgICBjYXNlIFRva2VuLkZST006XG4gICAgY2FzZSBUb2tlbi5GT1I6XG4gICAgY2FzZSBUb2tlbi5HRVQ6XG4gICAgY2FzZSBUb2tlbi5JTlNUQU5DRU9GOlxuICAgIGNhc2UgVG9rZW4uSVM6XG4gICAgY2FzZSBUb2tlbi5LRVlPRjpcbiAgICBjYXNlIFRva2VuLk1PRFVMRTpcbiAgICBjYXNlIFRva2VuLk5BTUVTUEFDRTpcbiAgICBjYXNlIFRva2VuLk5VTEw6XG4gICAgY2FzZSBUb2tlbi5SRUFET05MWTpcbiAgICBjYXNlIFRva2VuLlNFVDpcbiAgICBjYXNlIFRva2VuLlRZUEU6XG4gICAgY2FzZSBUb2tlbi5WT0lEOiByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSWxsZWdhbFZhcmlhYmxlSWRlbnRpZmllcihuYW1lOiBzdHJpbmcpOiBib29sIHtcbiAgYXNzZXJ0KG5hbWUubGVuZ3RoKTtcbiAgc3dpdGNoIChuYW1lLmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXJDb2RlLmQ6IHJldHVybiBuYW1lID09IFwiZGVsZXRlXCI7XG4gICAgY2FzZSBDaGFyQ29kZS5mOiByZXR1cm4gbmFtZSA9PSBcImZvclwiO1xuICAgIGNhc2UgQ2hhckNvZGUuaTogcmV0dXJuIG5hbWUgPT0gXCJpbnN0YW5jZW9mXCI7XG4gICAgY2FzZSBDaGFyQ29kZS5uOiByZXR1cm4gbmFtZSA9PSBcIm51bGxcIjtcbiAgICBjYXNlIENoYXJDb2RlLnY6IHJldHVybiBuYW1lID09IFwidm9pZFwiO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZXJhdG9yVG9rZW5Ub1N0cmluZyh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgY2FzZSBUb2tlbi5ERUxFVEU6IHJldHVybiBcImRlbGV0ZVwiO1xuICAgIGNhc2UgVG9rZW4uSU46IHJldHVybiBcImluXCI7XG4gICAgY2FzZSBUb2tlbi5JTlNUQU5DRU9GOiByZXR1cm4gXCJpbnN0YW5jZW9mXCI7XG4gICAgY2FzZSBUb2tlbi5ORVc6IHJldHVybiBcIm5ld1wiO1xuICAgIGNhc2UgVG9rZW4uVFlQRU9GOiByZXR1cm4gXCJ0eXBlb2ZcIjtcbiAgICBjYXNlIFRva2VuLlZPSUQ6IHJldHVybiBcInZvaWRcIjtcbiAgICBjYXNlIFRva2VuLllJRUxEOiByZXR1cm4gXCJ5aWVsZFwiO1xuICAgIGNhc2UgVG9rZW4uRE9UX0RPVF9ET1Q6IHJldHVybiBcIi4uLlwiO1xuICAgIGNhc2UgVG9rZW4uQ09NTUE6IHJldHVybiBcIixcIjtcbiAgICBjYXNlIFRva2VuLkxFU1NUSEFOOiByZXR1cm4gXCI8XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTjogcmV0dXJuIFwiPlwiO1xuICAgIGNhc2UgVG9rZW4uTEVTU1RIQU5fRVFVQUxTOiByZXR1cm4gXCI8PVwiO1xuICAgIGNhc2UgVG9rZW4uR1JFQVRFUlRIQU5fRVFVQUxTOiByZXR1cm4gXCI+PVwiO1xuICAgIGNhc2UgVG9rZW4uRVFVQUxTX0VRVUFMUzogcmV0dXJuIFwiPT1cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMUzogcmV0dXJuIFwiIT1cIjtcbiAgICBjYXNlIFRva2VuLkVRVUFMU19FUVVBTFNfRVFVQUxTOiByZXR1cm4gXCI9PT1cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMU19FUVVBTFM6IHJldHVybiBcIiE9PVwiO1xuICAgIGNhc2UgVG9rZW4uUExVUzogcmV0dXJuIFwiK1wiO1xuICAgIGNhc2UgVG9rZW4uTUlOVVM6IHJldHVybiBcIi1cIjtcbiAgICBjYXNlIFRva2VuLkFTVEVSSVNLX0FTVEVSSVNLOiByZXR1cm4gXCIqKlwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0s6IHJldHVybiBcIipcIjtcbiAgICBjYXNlIFRva2VuLlNMQVNIOiByZXR1cm4gXCIvXCI7XG4gICAgY2FzZSBUb2tlbi5QRVJDRU5UOiByZXR1cm4gXCIlXCI7XG4gICAgY2FzZSBUb2tlbi5QTFVTX1BMVVM6IHJldHVybiBcIisrXCI7XG4gICAgY2FzZSBUb2tlbi5NSU5VU19NSU5VUzogcmV0dXJuIFwiLS1cIjtcbiAgICBjYXNlIFRva2VuLkxFU1NUSEFOX0xFU1NUSEFOOiByZXR1cm4gXCI8PFwiO1xuICAgIGNhc2UgVG9rZW4uR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU46IHJldHVybiBcIj4+XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTjogcmV0dXJuIFwiPj4+XCI7XG4gICAgY2FzZSBUb2tlbi5BTVBFUlNBTkQ6IHJldHVybiBcIiZcIjtcbiAgICBjYXNlIFRva2VuLkJBUjogcmV0dXJuIFwifFwiO1xuICAgIGNhc2UgVG9rZW4uQ0FSRVQ6IHJldHVybiBcIl5cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OOiByZXR1cm4gXCIhXCI7XG4gICAgY2FzZSBUb2tlbi5USUxERTogcmV0dXJuIFwiflwiO1xuICAgIGNhc2UgVG9rZW4uQU1QRVJTQU5EX0FNUEVSU0FORDogcmV0dXJuIFwiJiZcIjtcbiAgICBjYXNlIFRva2VuLkJBUl9CQVI6IHJldHVybiBcInx8XCI7XG4gICAgY2FzZSBUb2tlbi5FUVVBTFM6IHJldHVybiBcIj1cIjtcbiAgICBjYXNlIFRva2VuLlBMVVNfRVFVQUxTOiByZXR1cm4gXCIrPVwiO1xuICAgIGNhc2UgVG9rZW4uTUlOVVNfRVFVQUxTOiByZXR1cm4gXCItPVwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0tfRVFVQUxTOiByZXR1cm4gXCIqPVwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTOiByZXR1cm4gXCIqKj1cIjtcbiAgICBjYXNlIFRva2VuLlNMQVNIX0VRVUFMUzogcmV0dXJuIFwiLz1cIjtcbiAgICBjYXNlIFRva2VuLlBFUkNFTlRfRVFVQUxTOiByZXR1cm4gXCIlPVwiO1xuICAgIGNhc2UgVG9rZW4uTEVTU1RIQU5fTEVTU1RIQU5fRVFVQUxTOiByZXR1cm4gXCI8PD1cIjtcbiAgICBjYXNlIFRva2VuLkdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0VRVUFMUzogcmV0dXJuIFwiPj49XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9FUVVBTFM6IHJldHVybiBcIj4+Pj1cIjtcbiAgICBjYXNlIFRva2VuLkFNUEVSU0FORF9FUVVBTFM6IHJldHVybiBcIiY9XCI7XG4gICAgY2FzZSBUb2tlbi5CQVJfRVFVQUxTOiByZXR1cm4gXCJ8PVwiO1xuICAgIGNhc2UgVG9rZW4uQ0FSRVRfRVFVQUxTOiByZXR1cm4gXCJePVwiO1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGFzc2VydChmYWxzZSk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhbmdlIHtcblxuICBzb3VyY2U6IFNvdXJjZTtcbiAgc3RhcnQ6IGkzMjtcbiAgZW5kOiBpMzI7XG5cbiAgLy8gVE9ETzogc2V0IHRoZXNlIHdoaWxlIHRva2VuaXppbmdcbiAgLy8gbGluZTogaTMyO1xuICAvLyBjb2x1bW46IGkzMjtcblxuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IFNvdXJjZSwgc3RhcnQ6IGkzMiwgZW5kOiBpMzIpIHtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cblxuICBzdGF0aWMgam9pbihhOiBSYW5nZSwgYjogUmFuZ2UpOiBSYW5nZSB7XG4gICAgaWYgKGEuc291cmNlICE9IGIuc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoXCJzb3VyY2UgbWlzbWF0Y2hcIik7XG4gICAgcmV0dXJuIG5ldyBSYW5nZShhLnNvdXJjZSxcbiAgICAgIGEuc3RhcnQgPCBiLnN0YXJ0ID8gYS5zdGFydCA6IGIuc3RhcnQsXG4gICAgICBhLmVuZCA+IGIuZW5kID8gYS5lbmQgOiBiLmVuZFxuICAgICk7XG4gIH1cblxuICBnZXQgYXRTdGFydCgpOiBSYW5nZSB7XG4gICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnNvdXJjZSwgdGhpcy5zdGFydCwgdGhpcy5zdGFydCk7XG4gIH1cblxuICBnZXQgYXRFbmQoKTogUmFuZ2Uge1xuICAgIHJldHVybiBuZXcgUmFuZ2UodGhpcy5zb3VyY2UsIHRoaXMuZW5kLCB0aGlzLmVuZCk7XG4gIH1cblxuICBnZXQgbGluZSgpOiBpMzIge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgbGluZSA9IDE7XG4gICAgZm9yIChsZXQgcG9zID0gdGhpcy5zdGFydDsgcG9zID49IDA7IC0tcG9zKSB7XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KHBvcykgPT0gQ2hhckNvZGUuTElORUZFRUQpIGxpbmUrKztcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH1cblxuICBnZXQgY29sdW1uKCk6IGkzMiB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBjb2x1bW4gPSAwO1xuICAgIGZvciAobGV0IHBvcyA9IHRoaXMuc3RhcnQgLSAxOyBwb3MgPj0gMDsgLS1wb3MpIHtcbiAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQocG9zKSA9PSBDaGFyQ29kZS5MSU5FRkVFRCkgYnJlYWs7XG4gICAgICArK2NvbHVtbjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbHVtbjtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLnRleHQuc3Vic3RyaW5nKHRoaXMuc3RhcnQsIHRoaXMuZW5kKTtcbiAgfVxuXG4gIGRlYnVnSW5mb1JlZjogdXNpemUgPSAwO1xufVxuXG5kZWNsYXJlIGZ1bmN0aW9uIHBhcnNlRmxvYXQoc3RyOiBzdHJpbmcpOiBmNjQ7XG5cbi8qKiBIYW5kbGVyIGZvciBpbnRlcmNlcHRpbmcgY29tbWVudHMgd2hpbGUgdG9rZW5pemluZy4gKi9cbmV4cG9ydCB0eXBlIENvbW1lbnRIYW5kbGVyID0gKGtpbmQ6IENvbW1lbnRLaW5kLCB0ZXh0OiBzdHJpbmcsIHJhbmdlOiBSYW5nZSkgPT4gdm9pZDtcblxuLyoqIFRva2VuaXplcyBhIHNvdXJjZSB0byBpbmRpdmlkdWFsIHtAbGluayBUb2tlbn1zLiAqL1xuZXhwb3J0IGNsYXNzIFRva2VuaXplciBleHRlbmRzIERpYWdub3N0aWNFbWl0dGVyIHtcblxuICBzb3VyY2U6IFNvdXJjZTtcbiAgZW5kOiBpMzIgPSAwO1xuXG4gIHBvczogaTMyID0gMDtcbiAgdG9rZW46IFRva2VuID0gLTE7XG4gIHRva2VuUG9zOiBpMzIgPSAwO1xuXG4gIG5leHRUb2tlbjogVG9rZW4gPSAtMTtcbiAgbmV4dFRva2VuUG9zOiBpMzIgPSAwO1xuICBuZXh0VG9rZW5Pbk5ld0xpbmU6IGJvb2wgPSBmYWxzZTtcblxuICBvbkNvbW1lbnQ6IENvbW1lbnRIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIENvbnN0cnVjdHMgYSBuZXcgdG9rZW5pemVyLiAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IFNvdXJjZSwgZGlhZ25vc3RpY3M6IERpYWdub3N0aWNNZXNzYWdlW10gfCBudWxsID0gbnVsbCkge1xuICAgIHN1cGVyKGRpYWdub3N0aWNzKTtcblxuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgIHRoaXMucG9zID0gMDtcbiAgICB0aGlzLmVuZCA9IHNvdXJjZS50ZXh0Lmxlbmd0aDtcbiAgICB0aGlzLmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3MgfHwgbmV3IEFycmF5KCk7XG5cbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHRleHQgPSBzb3VyY2UudGV4dDtcblxuICAgIC8vIHNraXAgYm9tXG4gICAgaWYgKFxuICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuQllURU9SREVSTUFSS1xuICAgICkge1xuICAgICAgKyt0aGlzLnBvcztcbiAgICB9XG5cbiAgICAvLyBza2lwIHNoZWJhbmdcbiAgICBpZiAoXG4gICAgICB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuSEFTSCAmJlxuICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkgPT0gQ2hhckNvZGUuRVhDTEFNQVRJT05cbiAgICApIHtcbiAgICAgIHRoaXMucG9zICs9IDI7XG4gICAgICB3aGlsZSAoXG4gICAgICAgIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgIT0gQ2hhckNvZGUuTElORUZFRURcbiAgICAgICkge1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgfVxuICAgICAgLy8gJ25leHQnIG5vdyBzdGFydHMgYXQgbGYgb3IgZW9mXG4gICAgfVxuICB9XG5cbiAgbmV4dChpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxUKTogVG9rZW4ge1xuICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4gPSB0aGlzLnVuc2FmZU5leHQoaWRlbnRpZmllckhhbmRsaW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zYWZlTmV4dChcbiAgICBpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxULFxuICAgIG1heFRva2VuTGVuZ3RoOiBpMzIgPSBpMzIuTUFYX1ZBTFVFXG4gICk6IFRva2VuIHtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHdoaWxlICh0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgdGhpcy50b2tlblBvcyA9IHRoaXMucG9zO1xuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSUklBR0VSRVRVUk46IHtcbiAgICAgICAgICBpZiAoIShcbiAgICAgICAgICAgICsrdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuTElORUZFRURcbiAgICAgICAgICApKSBicmVhaztcbiAgICAgICAgICAvLyBvdGhlcndpc2UgZmFsbC10aHJvdWdoXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5UQUI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuVkVSVElDQUxUQUI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU1BBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRVhDTEFNQVRJT046IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMiAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkVRVUFMU1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5FWENMQU1BVElPTl9FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMUztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkVYQ0xBTUFUSU9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRE9VQkxFUVVPVEU6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU0lOR0xFUVVPVEU6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQkFDS1RJQ0s6IHsgLy8gVE9ET1xuICAgICAgICAgIHJldHVybiBUb2tlbi5TVFJJTkdMSVRFUkFMOyAvLyBleHBlY3RzIGEgY2FsbCB0byByZWFkU3RyaW5nXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5QRVJDRU5UOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuRVFVQUxTXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgcmV0dXJuIFRva2VuLlBFUkNFTlRfRVFVQUxTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uUEVSQ0VOVDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkFNUEVSU0FORDoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQU1QRVJTQU5EX0FNUEVSU0FORDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5BTVBFUlNBTkRfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uQU1QRVJTQU5EO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuT1BFTlBBUkVOOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uT1BFTlBBUkVOO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0xPU0VQQVJFTjoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNMT1NFUEFSRU47XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5BU1RFUklTSzoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQVNURVJJU0tfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5BU1RFUklTSykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4VG9rZW5MZW5ndGggPiAyICYmIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5BU1RFUklTS19BU1RFUklTSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkFTVEVSSVNLO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuUExVUzoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLlBMVVMpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLlBMVVNfUExVUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5QTFVTX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLlBMVVM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DT01NQToge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNPTU1BO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTUlOVVM6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5NSU5VUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVNfTUlOVVM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5ET1Q6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KGNocikpIHtcbiAgICAgICAgICAgICAgLS10aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkZMT0FUTElURVJBTDsgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEZsb2F0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMiAmJiB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgICAgICAgICAgY2hyID09IENoYXJDb2RlLkRPVCAmJlxuICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MgKyAxKSA9PSBDaGFyQ29kZS5ET1RcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uRE9UX0RPVF9ET1Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBUb2tlbi5ET1Q7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5TTEFTSDoge1xuICAgICAgICAgIGxldCBjb21tZW50U3RhcnRQb3MgPSB0aGlzLnBvcztcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5TTEFTSCkgeyAvLyBzaW5nbGUtbGluZVxuICAgICAgICAgICAgICBsZXQgY29tbWVudEtpbmQgPSBDb21tZW50S2luZC5MSU5FO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgKyAxIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkgPT0gQ2hhckNvZGUuU0xBU0hcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICBjb21tZW50S2luZCA9IENvbW1lbnRLaW5kLlRSSVBMRTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aGlsZSAoKyt0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkxJTkVGRUVEKSB7XG4gICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9uQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Db21tZW50KFxuICAgICAgICAgICAgICAgICAgY29tbWVudEtpbmQsXG4gICAgICAgICAgICAgICAgICB0ZXh0LnN1YnN0cmluZyhjb21tZW50U3RhcnRQb3MsIHRoaXMucG9zKSxcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UoY29tbWVudFN0YXJ0UG9zLCB0aGlzLnBvcylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5BU1RFUklTSykgeyAvLyBtdWx0aS1saW5lXG4gICAgICAgICAgICAgIGxldCBjbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgd2hpbGUgKCsrdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgICAgICBjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBjID09IENoYXJDb2RlLkFTVEVSSVNLICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpID09IENoYXJDb2RlLlNMQVNIXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIWNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBEaWFnbm9zdGljQ29kZS5fMF9leHBlY3RlZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UodGhpcy5wb3MpLCBcIiovXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub25Db21tZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbW1lbnQoXG4gICAgICAgICAgICAgICAgICBDb21tZW50S2luZC5CTE9DSyxcbiAgICAgICAgICAgICAgICAgIHRleHQuc3Vic3RyaW5nKGNvbW1lbnRTdGFydFBvcywgdGhpcy5wb3MpLFxuICAgICAgICAgICAgICAgICAgdGhpcy5yYW5nZShjb21tZW50U3RhcnRQb3MsIHRoaXMucG9zKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uU0xBU0hfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uU0xBU0g7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMTpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNTpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fODpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fOToge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRlc3RJbnRlZ2VyKClcbiAgICAgICAgICAgID8gVG9rZW4uSU5URUdFUkxJVEVSQUwgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEludGVnZXJcbiAgICAgICAgICAgIDogVG9rZW4uRkxPQVRMSVRFUkFMOyAgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEZsb2F0XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DT0xPTjoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNPTE9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU0VNSUNPTE9OOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uU0VNSUNPTE9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTEVTU1RIQU46IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5MRVNTVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4VG9rZW5MZW5ndGggPiAyICYmXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkVRVUFMU1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgIHJldHVybiBUb2tlbi5MRVNTVEhBTl9MRVNTVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOX0xFU1NUSEFOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5FUVVBTFMpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRVFVQUxTOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICBpZiAobWF4VG9rZW5MZW5ndGggPiAxICYmIHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICAgICAgICBsZXQgY2hyID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDIgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuRVFVQUxTXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkVRVUFMU19FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5HUkVBVEVSVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uRVFVQUxTX0dSRUFURVJUSEFOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uRVFVQUxTO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuR1JFQVRFUlRIQU46IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5HUkVBVEVSVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAobWF4VG9rZW5MZW5ndGggPiAyICYmIHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICAgICAgICAgICAgY2hyID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkdSRUFURVJUSEFOKSB7XG4gICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDMgJiYgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fRVFVQUxTO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0dSRUFURVJUSEFOO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLlFVRVNUSU9OOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uUVVFU1RJT047XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5PUEVOQlJBQ0tFVDoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLk9QRU5CUkFDS0VUO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0xPU0VCUkFDS0VUOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uQ0xPU0VCUkFDS0VUO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSRVQ6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICByZXR1cm4gVG9rZW4uQ0FSRVRfRVFVQUxTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uQ0FSRVQ7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5PUEVOQlJBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5PUEVOQlJBQ0U7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQVI6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5CQVIpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkJBUl9CQVI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQkFSX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkJBUjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkNMT1NFQlJBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5DTE9TRUJSQUNFO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuVElMREU6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5USUxERTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkFUOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uQVQ7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChjKSkge1xuICAgICAgICAgICAgaWYgKGlzS2V5d29yZENoYXJhY3RlcihjKSkge1xuICAgICAgICAgICAgICBsZXQgcG9zQmVmb3JlID0gdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICAgICArK3RoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgaXNJZGVudGlmaWVyUGFydChjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0tleXdvcmRDaGFyYWN0ZXIoYykpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9zID0gcG9zQmVmb3JlO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLklERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBrZXl3b3JkVGV4dCA9IHRleHQuc3Vic3RyaW5nKHBvc0JlZm9yZSwgdGhpcy5wb3MpO1xuICAgICAgICAgICAgICBsZXQga2V5d29yZFRva2VuID0gdG9rZW5Gcm9tS2V5d29yZChrZXl3b3JkVGV4dCk7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBrZXl3b3JkVG9rZW4gIT09IFRva2VuLklOVkFMSUQgJiZcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVySGFuZGxpbmcgIT09IElkZW50aWZpZXJIYW5kbGluZy5BTFdBWVMgJiZcbiAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgaWRlbnRpZmllckhhbmRsaW5nID09PSBJZGVudGlmaWVySGFuZGxpbmcuUFJFRkVSICYmXG4gICAgICAgICAgICAgICAgICB0b2tlbklzQWxzb0lkZW50aWZpZXIoa2V5d29yZFRva2VuKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXdvcmRUb2tlbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnBvcyA9IHBvc0JlZm9yZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBUb2tlbi5JREVOVElGSUVSOyAvLyBleHBlY3RzIGEgY2FsbCB0byByZWFkSWRlbnRpZmllclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNXaGl0ZVNwYWNlKGMpKSB7XG4gICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkX2NoYXJhY3RlcixcbiAgICAgICAgICAgIHRoaXMucmFuZ2UodGhpcy5wb3MsIHRoaXMucG9zICsgMSlcbiAgICAgICAgICApO1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLklOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFRva2VuLkVORE9GRklMRTtcbiAgfVxuXG4gIHBlZWsoXG4gICAgY2hlY2tPbk5ld0xpbmU6IGJvb2wgPSBmYWxzZSxcbiAgICBpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxULFxuICAgIG1heENvbXBvdW5kTGVuZ3RoOiBpMzIgPSBpMzIuTUFYX1ZBTFVFXG4gICk6IFRva2VuIHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMubmV4dFRva2VuIDwgMCkge1xuICAgICAgbGV0IHBvc0JlZm9yZSA9IHRoaXMucG9zO1xuICAgICAgbGV0IHRva2VuQmVmb3JlID0gdGhpcy50b2tlbjtcbiAgICAgIGxldCB0b2tlblBvc0JlZm9yZSA9IHRoaXMudG9rZW5Qb3M7XG4gICAgICB0aGlzLm5leHRUb2tlbiA9IHRoaXMudW5zYWZlTmV4dChpZGVudGlmaWVySGFuZGxpbmcsIG1heENvbXBvdW5kTGVuZ3RoKTtcbiAgICAgIHRoaXMubmV4dFRva2VuUG9zID0gdGhpcy50b2tlblBvcztcbiAgICAgIGlmIChjaGVja09uTmV3TGluZSkge1xuICAgICAgICB0aGlzLm5leHRUb2tlbk9uTmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBwb3MgPSBwb3NCZWZvcmUsIGVuZCA9IHRoaXMubmV4dFRva2VuUG9zOyBwb3MgPCBlbmQ7ICsrcG9zKSB7XG4gICAgICAgICAgaWYgKGlzTGluZUJyZWFrKHRleHQuY2hhckNvZGVBdChwb3MpKSkge1xuICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW5Pbk5ld0xpbmUgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvc0JlZm9yZTtcbiAgICAgIHRoaXMudG9rZW4gPSB0b2tlbkJlZm9yZTtcbiAgICAgIHRoaXMudG9rZW5Qb3MgPSB0b2tlblBvc0JlZm9yZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmV4dFRva2VuO1xuICB9XG5cbiAgc2tpcElkZW50aWZpZXIoaWRlbnRpZmllckhhbmRsaW5nOiBJZGVudGlmaWVySGFuZGxpbmcgPSBJZGVudGlmaWVySGFuZGxpbmcuUFJFRkVSKTogYm9vbCB7XG4gICAgcmV0dXJuIHRoaXMuc2tpcChUb2tlbi5JREVOVElGSUVSLCBpZGVudGlmaWVySGFuZGxpbmcpO1xuICB9XG5cbiAgc2tpcCh0b2tlbjogVG9rZW4sIGlkZW50aWZpZXJIYW5kbGluZzogSWRlbnRpZmllckhhbmRsaW5nID0gSWRlbnRpZmllckhhbmRsaW5nLkRFRkFVTFQpOiBib29sIHtcbiAgICB2YXIgcG9zQmVmb3JlID0gdGhpcy5wb3M7XG4gICAgdmFyIHRva2VuQmVmb3JlID0gdGhpcy50b2tlbjtcbiAgICB2YXIgdG9rZW5Qb3NCZWZvcmUgPSB0aGlzLnRva2VuUG9zO1xuICAgIHZhciBtYXhDb21wb3VuZExlbmd0aCA9IGkzMi5NQVhfVkFMVUU7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTjogeyAvLyB3aGVyZSBwYXJzaW5nIHR5cGUgYXJndW1lbnRzXG4gICAgICAgIG1heENvbXBvdW5kTGVuZ3RoID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudG9rZW4gPSB0aGlzLnVuc2FmZU5leHQoaWRlbnRpZmllckhhbmRsaW5nLCBtYXhDb21wb3VuZExlbmd0aCk7XG4gICAgaWYgKHRoaXMudG9rZW4gPT0gdG9rZW4pIHtcbiAgICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3MgPSBwb3NCZWZvcmU7XG4gICAgICB0aGlzLnRva2VuID0gdG9rZW5CZWZvcmU7XG4gICAgICB0aGlzLnRva2VuUG9zID0gdG9rZW5Qb3NCZWZvcmU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbWFyaygpOiBTdGF0ZSB7XG4gICAgdmFyIHN0YXRlOiBTdGF0ZTtcbiAgICBpZiAocmV1c2FibGVTdGF0ZSkge1xuICAgICAgc3RhdGUgPSByZXVzYWJsZVN0YXRlO1xuICAgICAgcmV1c2FibGVTdGF0ZSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlID0gbmV3IFN0YXRlKCk7XG4gICAgfVxuICAgIHN0YXRlLnBvcyA9IHRoaXMucG9zO1xuICAgIHN0YXRlLnRva2VuID0gdGhpcy50b2tlbjtcbiAgICBzdGF0ZS50b2tlblBvcyA9IHRoaXMudG9rZW5Qb3M7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgZGlzY2FyZChzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICByZXVzYWJsZVN0YXRlID0gc3RhdGU7XG4gIH1cblxuICByZXNldChzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnBvcyA9IHN0YXRlLnBvcztcbiAgICB0aGlzLnRva2VuID0gc3RhdGUudG9rZW47XG4gICAgdGhpcy50b2tlblBvcyA9IHN0YXRlLnRva2VuUG9zO1xuICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gIH1cblxuICByYW5nZShzdGFydDogaTMyID0gLTEsIGVuZDogaTMyID0gLTEpOiBSYW5nZSB7XG4gICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgc3RhcnQgPSB0aGlzLnRva2VuUG9zO1xuICAgICAgZW5kID0gdGhpcy5wb3M7XG4gICAgfSBlbHNlIGlmIChlbmQgPCAwKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnNvdXJjZSwgc3RhcnQsIGVuZCk7XG4gIH1cblxuICByZWFkSWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKFxuICAgICAgKyt0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgaXNJZGVudGlmaWVyUGFydCh0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpKVxuICAgICk7XG4gICAgcmV0dXJuIHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gIH1cblxuICByZWFkU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBxdW90ZSA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcysrKTtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmICh0aGlzLnBvcyA+PSBlbmQpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3N0cmluZ19saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQgLSAxLCBlbmQpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgaWYgKGMgPT0gcXVvdGUpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcysrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoYyA9PSBDaGFyQ29kZS5CQUNLU0xBU0gpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gICAgICAgIHJlc3VsdCArPSB0aGlzLnJlYWRFc2NhcGVTZXF1ZW5jZSgpO1xuICAgICAgICBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0xpbmVCcmVhayhjKSAmJiBxdW90ZSAhPSBDaGFyQ29kZS5CQUNLVElDSykge1xuICAgICAgICByZXN1bHQgKz0gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5VbnRlcm1pbmF0ZWRfc3RyaW5nX2xpdGVyYWwsXG4gICAgICAgICAgdGhpcy5yYW5nZShzdGFydCAtIDEsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgICsrdGhpcy5wb3M7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkRXNjYXBlU2VxdWVuY2UoKTogc3RyaW5nIHtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgaWYgKCsrdGhpcy5wb3MgPj0gZW5kKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5VbmV4cGVjdGVkX2VuZF9vZl90ZXh0LFxuICAgICAgICB0aGlzLnJhbmdlKGVuZClcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MrKyk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgICBjYXNlIENoYXJDb2RlLl8wOiByZXR1cm4gXCJcXDBcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuYjogcmV0dXJuIFwiXFxiXCI7XG4gICAgICBjYXNlIENoYXJDb2RlLnQ6IHJldHVybiBcIlxcdFwiO1xuICAgICAgY2FzZSBDaGFyQ29kZS5uOiByZXR1cm4gXCJcXG5cIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUudjogcmV0dXJuIFwiXFx2XCI7XG4gICAgICBjYXNlIENoYXJDb2RlLmY6IHJldHVybiBcIlxcZlwiO1xuICAgICAgY2FzZSBDaGFyQ29kZS5yOiByZXR1cm4gXCJcXHJcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuU0lOR0xFUVVPVEU6IHJldHVybiBcIidcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuRE9VQkxFUVVPVEU6IHJldHVybiBcIlxcXCJcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUudToge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLk9QRU5CUkFDRVxuICAgICAgICApIHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRFeHRlbmRlZFVuaWNvZGVFc2NhcGUoKTsgLy8gXFx1e0REREREREREfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRVbmljb2RlRXNjYXBlKCk7IC8vIFxcdURERERcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSUklBR0VSRVRVUk46IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5MSU5FRkVFRFxuICAgICAgICApIHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZhbGwgdGhyb3VnaFxuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICAgIGNhc2UgQ2hhckNvZGUuTElORVNFUEFSQVRPUjpcbiAgICAgIGNhc2UgQ2hhckNvZGUuUEFSQUdSQVBIU0VQQVJBVE9SOiByZXR1cm4gXCJcIjtcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRSZWdleHBQYXR0ZXJuKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgZXNjYXBlZCA9IGZhbHNlO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5wb3MgPj0gZW5kKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIGVuZClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5CQUNLU0xBU0gpIHtcbiAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgZXNjYXBlZCA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgaWYgKCFlc2NhcGVkICYmIGMgPT0gQ2hhckNvZGUuU0xBU0gpIGJyZWFrO1xuICAgICAgaWYgKGlzTGluZUJyZWFrKGMpKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgICsrdGhpcy5wb3M7XG4gICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpO1xuICB9XG5cbiAgcmVhZFJlZ2V4cEZsYWdzKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgZmxhZ3MgPSAwO1xuICAgIHdoaWxlICh0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgbGV0IGM6IGkzMiA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoYykpIGJyZWFrO1xuICAgICAgKyt0aGlzLnBvcztcblxuICAgICAgLy8gbWFrZSBzdXJlIGVhY2ggc3VwcG9ydGVkIGZsYWcgaXMgdW5pcXVlXG4gICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5nOiB7XG4gICAgICAgICAgZmxhZ3MgfD0gZmxhZ3MgJiAxID8gLTEgOiAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuaToge1xuICAgICAgICAgIGZsYWdzIHw9IGZsYWdzICYgMiA/IC0xIDogMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLm06IHtcbiAgICAgICAgICBmbGFncyB8PSBmbGFncyAmIDQgPyAtMSA6IDQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGZsYWdzID0gLTE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZsYWdzID09IC0xKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkX3JlZ3VsYXJfZXhwcmVzc2lvbl9mbGFncyxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgdGhpcy5wb3MpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgfVxuXG4gIHRlc3RJbnRlZ2VyKCk6IGJvb2wge1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMucG9zICsgMSA8IGVuZCAmJiB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLl8wKSB7XG4gICAgICBzd2l0Y2ggKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDIpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUueDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5YOlxuICAgICAgICBjYXNlIENoYXJDb2RlLmI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5vOlxuICAgICAgICBjYXNlIENoYXJDb2RlLk86IHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgcG9zID0gdGhpcy5wb3M7XG4gICAgd2hpbGUgKHBvcyA8IGVuZCkge1xuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmIChjID09IENoYXJDb2RlLkRPVCB8fCBjID09IENoYXJDb2RlLmUgfHwgYyA9PSBDaGFyQ29kZS5FKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoKGMgPCBDaGFyQ29kZS5fMCB8fCBjID4gQ2hhckNvZGUuXzkpICYmIGMgIT0gQ2hhckNvZGUuXykgYnJlYWs7XG4gICAgICAvLyBkb2VzIG5vdCB2YWxpZGF0ZSBzZXBhcmF0b3IgcGxhY2VtZW50ICh0aGlzIGlzIGRvbmUgaW4gcmVhZFhZSW50ZWdlcilcbiAgICAgIHBvcysrO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJlYWRJbnRlZ2VyKCk6IEk2NCB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIGlmICh0aGlzLnBvcyArIDIgPCB0aGlzLmVuZCAmJiB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLl8wKSB7XG4gICAgICBzd2l0Y2ggKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUueDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5YOiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkSGV4SW50ZWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuYjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5COiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkQmluYXJ5SW50ZWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUubzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5POiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkT2N0YWxJbnRlZ2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc09jdGFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpKSB7XG4gICAgICAgIGxldCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnJlYWRPY3RhbEludGVnZXIoKTtcbiAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5PY3RhbF9saXRlcmFsc19hcmVfbm90X2FsbG93ZWRfaW5fc3RyaWN0X21vZGUsXG4gICAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgdGhpcy5wb3MpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVhZERlY2ltYWxJbnRlZ2VyKCk7XG4gIH1cblxuICByZWFkSGV4SW50ZWdlcigpOiBJNjQge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgdmFsdWUgPSBpNjRfbmV3KDApO1xuICAgIHZhciBpNjRfNCA9IGk2NF9uZXcoNCk7XG4gICAgdmFyIHNlcEVuZCA9IHN0YXJ0O1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgIGxldCBwb3MgPSB0aGlzLnBvcztcbiAgICAgIGxldCBjID0gdGV4dC5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoYyA+PSBDaGFyQ29kZS5fMCAmJiBjIDw9IENoYXJDb2RlLl85KSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDQpICsgYyAtIENoYXJDb2RlLl8wO1xuICAgICAgICB2YWx1ZSA9IGk2NF9hZGQoXG4gICAgICAgICAgaTY0X3NobCh2YWx1ZSwgaTY0XzQpLFxuICAgICAgICAgIGk2NF9uZXcoYyAtIENoYXJDb2RlLl8wKVxuICAgICAgICApO1xuICAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuRikge1xuICAgICAgICAvLyB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIDEwICsgYyAtIENoYXJDb2RlLkE7XG4gICAgICAgIHZhbHVlID0gaTY0X2FkZChcbiAgICAgICAgICBpNjRfc2hsKHZhbHVlLCBpNjRfNCksXG4gICAgICAgICAgaTY0X25ldygxMCArIGMgLSBDaGFyQ29kZS5BKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID49IENoYXJDb2RlLmEgJiYgYyA8PSBDaGFyQ29kZS5mKSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDQpICsgMTAgKyBjIC0gQ2hhckNvZGUuYTtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF80KSxcbiAgICAgICAgICBpNjRfbmV3KDEwICsgYyAtIENoYXJDb2RlLmEpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGMgPT0gQ2hhckNvZGUuXykge1xuICAgICAgICBpZiAoc2VwRW5kID09IHBvcykge1xuICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICBzZXBFbmQgPT0gc3RhcnRcbiAgICAgICAgICAgICAgPyBEaWFnbm9zdGljQ29kZS5OdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmVcbiAgICAgICAgICAgICAgOiBEaWFnbm9zdGljQ29kZS5NdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQsXG4gICAgICAgICAgICB0aGlzLnJhbmdlKHBvcylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHNlcEVuZCA9IHBvcyArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMucG9zID0gcG9zICsgMTtcbiAgICB9XG4gICAgaWYgKHRoaXMucG9zID09IHN0YXJ0KSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5IZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzZXBFbmQgPT0gdGhpcy5wb3MpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxcbiAgICAgICAgdGhpcy5yYW5nZShzZXBFbmQgLSAxKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmVhZERlY2ltYWxJbnRlZ2VyKCk6IEk2NCB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdmFsdWUgPSBpNjRfbmV3KDApO1xuICAgIHZhciBpNjRfMTAgPSBpNjRfbmV3KDEwKTtcbiAgICB2YXIgc2VwRW5kID0gc3RhcnQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fOSkge1xuICAgICAgICAvLyB2YWx1ZSA9IHZhbHVlICogMTAgKyBjIC0gQ2hhckNvZGUuXzA7XG4gICAgICAgIHZhbHVlID0gaTY0X2FkZChcbiAgICAgICAgICBpNjRfbXVsKHZhbHVlLCBpNjRfMTApLFxuICAgICAgICAgIGk2NF9uZXcoYyAtIENoYXJDb2RlLl8wKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8pIHtcbiAgICAgICAgaWYgKHNlcEVuZCA9PSBwb3MpIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFxuICAgICAgICAgICAgc2VwRW5kID09IHN0YXJ0XG4gICAgICAgICAgICAgID8gRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlXG4gICAgICAgICAgICAgIDogRGlhZ25vc3RpY0NvZGUuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkLFxuICAgICAgICAgICAgdGhpcy5yYW5nZShwb3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzZXBFbmQgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvcyArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcyA9PSBzdGFydCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuRGlnaXRfZXhwZWN0ZWQsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoc2VwRW5kID09IHRoaXMucG9zKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5OdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmUsXG4gICAgICAgIHRoaXMucmFuZ2Uoc2VwRW5kIC0gMSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJlYWRPY3RhbEludGVnZXIoKTogSTY0IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gaTY0X25ldygwKTtcbiAgICB2YXIgaTY0XzMgPSBpNjRfbmV3KDMpO1xuICAgIHZhciBzZXBFbmQgPSBzdGFydDtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fNykge1xuICAgICAgICAvLyB2YWx1ZSA9ICh2YWx1ZSA8PCAzKSArIGMgLSBDaGFyQ29kZS5fMDtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF8zKSxcbiAgICAgICAgICBpNjRfbmV3KGMgLSBDaGFyQ29kZS5fMClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoYyA9PSBDaGFyQ29kZS5fKSB7XG4gICAgICAgIGlmIChzZXBFbmQgPT0gcG9zKSB7XG4gICAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICAgIHNlcEVuZCA9PSBzdGFydFxuICAgICAgICAgICAgICA/IERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZVxuICAgICAgICAgICAgICA6IERpYWdub3N0aWNDb2RlLk11bHRpcGxlX2NvbnNlY3V0aXZlX251bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X3Blcm1pdHRlZCxcbiAgICAgICAgICAgIHRoaXMucmFuZ2UocG9zKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc2VwRW5kID0gcG9zICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgKyt0aGlzLnBvcztcbiAgICB9XG4gICAgaWYgKHRoaXMucG9zID09IHN0YXJ0KSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5PY3RhbF9kaWdpdF9leHBlY3RlZCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzZXBFbmQgPT0gdGhpcy5wb3MpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxcbiAgICAgICAgdGhpcy5yYW5nZShzZXBFbmQgLSAxKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmVhZEJpbmFyeUludGVnZXIoKTogSTY0IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gaTY0X25ldygwKTtcbiAgICB2YXIgaTY0XzEgPSBpNjRfbmV3KDEpO1xuICAgIHZhciBzZXBFbmQgPSBzdGFydDtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPT0gQ2hhckNvZGUuXzApIHtcbiAgICAgICAgLy8gdmFsdWUgPSAodmFsdWUgPDwgMSk7XG4gICAgICAgIHZhbHVlID0gaTY0X3NobCh2YWx1ZSwgaTY0XzEpO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8xKSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDEpICsgMTtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF8xKSxcbiAgICAgICAgICBpNjRfMVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8pIHtcbiAgICAgICAgaWYgKHNlcEVuZCA9PSBwb3MpIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFxuICAgICAgICAgICAgc2VwRW5kID09IHN0YXJ0XG4gICAgICAgICAgICAgID8gRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlXG4gICAgICAgICAgICAgIDogRGlhZ25vc3RpY0NvZGUuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkLFxuICAgICAgICAgICAgdGhpcy5yYW5nZShwb3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzZXBFbmQgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvcyArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcyA9PSBzdGFydCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuQmluYXJ5X2RpZ2l0X2V4cGVjdGVkLFxuICAgICAgICB0aGlzLnJhbmdlKHN0YXJ0KVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNlcEVuZCA9PSB0aGlzLnBvcykge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlLFxuICAgICAgICB0aGlzLnJhbmdlKHNlcEVuZCAtIDEpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZWFkRmxvYXQoKTogZjY0IHtcbiAgICAvLyB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgLy8gaWYgKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuXzAgJiYgdGhpcy5wb3MgKyAyIDwgdGhpcy5lbmQpIHtcbiAgICAvLyAgIHN3aXRjaCAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpIHtcbiAgICAvLyAgICAgY2FzZSBDaGFyQ29kZS5YOlxuICAgIC8vICAgICBjYXNlIENoYXJDb2RlLng6IHtcbiAgICAvLyAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgIC8vICAgICAgIHJldHVybiB0aGlzLnJlYWRIZXhGbG9hdCgpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgIHJldHVybiB0aGlzLnJlYWREZWNpbWFsRmxvYXQoKTtcbiAgfVxuXG4gIHJlYWREZWNpbWFsRmxvYXQoKTogZjY0IHtcbiAgICAvLyBUT0RPOiBudW1lcmljIHNlcGFyYXRvcnMgKHBhcnNlRmxvYXQgY2FuJ3QgaGFuZGxlIHRoZXNlKVxuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kICYmIGlzRGVjaW1hbERpZ2l0KHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykpKSB7XG4gICAgICArK3RoaXMucG9zO1xuICAgIH1cbiAgICBpZiAodGhpcy5wb3MgPCBlbmQgJiYgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5ET1QpIHtcbiAgICAgICsrdGhpcy5wb3M7XG4gICAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQgJiYgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSkpIHtcbiAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICBpZiAoYyA9PSBDaGFyQ29kZS5lIHx8IGMgPT0gQ2hhckNvZGUuRSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKyt0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgIChjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSkgPT0gQ2hhckNvZGUuTUlOVVMgfHwgYyA9PSBDaGFyQ29kZS5QTFVTICYmXG4gICAgICAgICAgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpXG4gICAgICAgICkge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kICYmIGlzRGVjaW1hbERpZ2l0KHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykpKSB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VGbG9hdCh0ZXh0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpKTtcbiAgfVxuXG4gIHJlYWRIZXhGbG9hdCgpOiBmNjQge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTsgLy8gVEJEXG4gIH1cblxuICByZWFkVW5pY29kZUVzY2FwZSgpOiBzdHJpbmcge1xuICAgIHZhciByZW1haW4gPSA0O1xuICAgIHZhciB2YWx1ZSA9IDA7XG4gICAgdmFyIGVuZCA9IHRoaXMuZW5kO1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgIGxldCBjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKyspO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fOSkge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgLSBDaGFyQ29kZS5fMDtcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuRikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgKyAoMTAgLSBDaGFyQ29kZS5BKTtcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5hICYmIGMgPD0gQ2hhckNvZGUuZikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgKyAoMTAgLSBDaGFyQ29kZS5hKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuSGV4YWRlY2ltYWxfZGlnaXRfZXhwZWN0ZWQsXG4gICAgICAgICAgdGhpcy5yYW5nZSh0aGlzLnBvcyAtIDEsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGlmICgtLXJlbWFpbiA9PSAwKSBicmVhaztcbiAgICB9XG4gICAgaWYgKHJlbWFpbikge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCxcbiAgICAgICAgdGhpcy5yYW5nZSh0aGlzLnBvcylcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkRXh0ZW5kZWRVbmljb2RlRXNjYXBlKCk6IHN0cmluZyB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5yZWFkSGV4SW50ZWdlcigpO1xuICAgIHZhciB2YWx1ZTMyID0gaTY0X2xvdyh2YWx1ZSk7XG4gICAgdmFyIGludmFsaWQgPSBmYWxzZTtcblxuICAgIGFzc2VydCghaTY0X2hpZ2godmFsdWUpKTtcbiAgICBpZiAodmFsdWUzMiA+IDB4MTBGRkZGKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5Bbl9leHRlbmRlZF9Vbmljb2RlX2VzY2FwZV92YWx1ZV9tdXN0X2JlX2JldHdlZW5fMHgwX2FuZF8weDEwRkZGRl9pbmNsdXNpdmUsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMucG9zID49IGVuZCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgZW5kKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5DTE9TRUJSQUNFKSB7XG4gICAgICArK3RoaXMucG9zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5VbnRlcm1pbmF0ZWRfVW5pY29kZV9lc2NhcGVfc2VxdWVuY2UsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpbnZhbGlkKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gdmFsdWUzMiA8IDY1NTM2XG4gICAgICA/IFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWUzMilcbiAgICAgIDogU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAgICAgKCh2YWx1ZTMyIC0gNjU1MzYpID4+PiAxMCkgKyAweEQ4MDAsXG4gICAgICAgICgodmFsdWUzMiAtIDY1NTM2KSAmIDEwMjMpICsgMHhEQzAwXG4gICAgICApO1xuICB9XG5cbiAgZmluaXNoKCk6IHZvaWQge1xuICB9XG59XG5cbi8qKiBUb2tlbml6ZXIgc3RhdGUgYXMgcmV0dXJuZWQgYnkge0BsaW5rIFRva2VuaXplciNtYXJrfSBhbmQgY29uc3VtZWQgYnkge0BsaW5rIFRva2VuaXplciNyZXNldH0uICovXG5leHBvcnQgY2xhc3MgU3RhdGUge1xuICAvKiogQ3VycmVudCBwb3NpdGlvbi4gKi9cbiAgcG9zOiBpMzI7XG4gIC8qKiBDdXJyZW50IHRva2VuLiAqL1xuICB0b2tlbjogVG9rZW47XG4gIC8qKiBDdXJyZW50IHRva2VuJ3MgcG9zaXRpb24uICovXG4gIHRva2VuUG9zOiBpMzI7XG59XG5cbi8vIFJldXNhYmxlIHN0YXRlIG9iamVjdCB0byByZWR1Y2UgYWxsb2NhdGlvbnNcbnZhciByZXVzYWJsZVN0YXRlOiBTdGF0ZSB8IG51bGwgPSBudWxsO1xuIl19 + +/***/ }), + +/***/ "../src/util/binary.ts": +/*!*****************************!*\ + !*** ../src/util/binary.ts ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** @module util */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +/** Reads an 8-bit integer from the specified buffer. */ +function readI8(buffer, offset) { + return buffer[offset]; +} +exports.readI8 = readI8; +/** Writes an 8-bit integer to the specified buffer. */ +function writeI8(value, buffer, offset) { + buffer[offset] = value; +} +exports.writeI8 = writeI8; +/** Reads a 16-bit integer from the specified buffer. */ +function readI16(buffer, offset) { + return buffer[offset] + | buffer[offset + 1] << 8; +} +exports.readI16 = readI16; +/** Writes a 16-bit integer to the specified buffer. */ +function writeI16(value, buffer, offset) { + buffer[offset] = value; + buffer[offset + 1] = value >>> 8; +} +exports.writeI16 = writeI16; +/** Reads a 32-bit integer from the specified buffer. */ +function readI32(buffer, offset) { + return buffer[offset] + | buffer[offset + 1] << 8 + | buffer[offset + 2] << 16 + | buffer[offset + 3] << 24; +} +exports.readI32 = readI32; +/** Writes a 32-bit integer to the specified buffer. */ +function writeI32(value, buffer, offset) { + buffer[offset] = value; + buffer[offset + 1] = value >>> 8; + buffer[offset + 2] = value >>> 16; + buffer[offset + 3] = value >>> 24; +} +exports.writeI32 = writeI32; +/** Reads a 64-bit integer from the specified buffer. */ +function readI64(buffer, offset) { + var lo = readI32(buffer, offset); + var hi = readI32(buffer, offset + 4); + return i64_new(lo, hi); +} +exports.readI64 = readI64; +/** Writes a 64-bit integer to the specified buffer. */ +function writeI64(value, buffer, offset) { + writeI32(i64_low(value), buffer, offset); + writeI32(i64_high(value), buffer, offset + 4); +} +exports.writeI64 = writeI64; +/** Reads a 32-bit float from the specified buffer. */ +function readF32(buffer, offset) { + return i32_as_f32(readI32(buffer, offset)); +} +exports.readF32 = readF32; +/** Writes a 32-bit float to the specified buffer. */ +function writeF32(value, buffer, offset) { + writeI32(f32_as_i32(value), buffer, offset); +} +exports.writeF32 = writeF32; +/** Reads a 64-bit float from the specified buffer. */ +function readF64(buffer, offset) { + return i64_as_f64(readI64(buffer, offset)); +} +exports.readF64 = readF64; +/** Writes a 64-bit float to the specified buffer. */ +function writeF64(value, buffer, offset) { + var valueI64 = f64_as_i64(value); + writeI32(i64_low(valueI64), buffer, offset); + writeI32(i64_high(valueI64), buffer, offset + 4); +} +exports.writeF64 = writeF64; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvYmluYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBbUIsQ0FBQSxLQUFLOztBQUV4Qix3REFBd0Q7QUFDeEQsU0FBZ0IsTUFBTSxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNwRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRkQsd0JBRUM7QUFFRCx1REFBdUQ7QUFDdkQsU0FBZ0IsT0FBTyxDQUFDLEtBQVUsRUFBRSxNQUFrQixFQUFFLE1BQVc7SUFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDO0FBRkQsMEJBRUM7QUFFRCx3REFBd0Q7QUFDeEQsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNyRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUs7VUFDbEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUhELDBCQUdDO0FBRUQsdURBQXVEO0FBQ3ZELFNBQWdCLFFBQVEsQ0FBQyxLQUFVLEVBQUUsTUFBa0IsRUFBRSxNQUFXO0lBQ2xFLE1BQU0sQ0FBQyxNQUFNLENBQUssR0FBRyxLQUFLLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFIRCw0QkFHQztBQUVELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBSztVQUNsQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7VUFDdkIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFO1VBQ3hCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFMRCwwQkFLQztBQUVELHVEQUF1RDtBQUN2RCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxNQUFNLENBQUMsTUFBTSxDQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNqQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7SUFDbEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQ3BDLENBQUM7QUFMRCw0QkFLQztBQUVELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ3JELElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsT0FBTyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFKRCwwQkFJQztBQUVELHVEQUF1RDtBQUN2RCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUhELDRCQUdDO0FBRUQsc0RBQXNEO0FBQ3RELFNBQWdCLE9BQU8sQ0FBQyxNQUFrQixFQUFFLE1BQVc7SUFDckQsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFGRCwwQkFFQztBQUVELHFEQUFxRDtBQUNyRCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRkQsNEJBRUM7QUFFRCxzREFBc0Q7QUFDdEQsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNyRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUZELDBCQUVDO0FBRUQscURBQXFEO0FBQ3JELFNBQWdCLFFBQVEsQ0FBQyxLQUFVLEVBQUUsTUFBa0IsRUFBRSxNQUFXO0lBQ2xFLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUpELDRCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgdXRpbCAqLy8qKiovXG5cbi8qKiBSZWFkcyBhbiA4LWJpdCBpbnRlZ2VyIGZyb20gdGhlIHNwZWNpZmllZCBidWZmZXIuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEk4KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBpMzIge1xuICByZXR1cm4gYnVmZmVyW29mZnNldF07XG59XG5cbi8qKiBXcml0ZXMgYW4gOC1iaXQgaW50ZWdlciB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUk4KHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldF0gPSB2YWx1ZTtcbn1cblxuLyoqIFJlYWRzIGEgMTYtYml0IGludGVnZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSTE2KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBpMzIge1xuICByZXR1cm4gYnVmZmVyW29mZnNldCAgICBdXG4gICAgICAgfCBidWZmZXJbb2Zmc2V0ICsgMV0gPDwgODtcbn1cblxuLyoqIFdyaXRlcyBhIDE2LWJpdCBpbnRlZ2VyIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSTE2KHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCAgICBdID0gdmFsdWU7XG4gIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IHZhbHVlID4+PiA4O1xufVxuXG4vKiogUmVhZHMgYSAzMi1iaXQgaW50ZWdlciBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJMzIoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGkzMiB7XG4gIHJldHVybiBidWZmZXJbb2Zmc2V0ICAgIF1cbiAgICAgICB8IGJ1ZmZlcltvZmZzZXQgKyAxXSA8PCA4XG4gICAgICAgfCBidWZmZXJbb2Zmc2V0ICsgMl0gPDwgMTZcbiAgICAgICB8IGJ1ZmZlcltvZmZzZXQgKyAzXSA8PCAyNDtcbn1cblxuLyoqIFdyaXRlcyBhIDMyLWJpdCBpbnRlZ2VyIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSTMyKHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCAgICBdID0gdmFsdWU7XG4gIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IHZhbHVlID4+PiA4O1xuICBidWZmZXJbb2Zmc2V0ICsgMl0gPSB2YWx1ZSA+Pj4gMTY7XG4gIGJ1ZmZlcltvZmZzZXQgKyAzXSA9IHZhbHVlID4+PiAyNDtcbn1cblxuLyoqIFJlYWRzIGEgNjQtYml0IGludGVnZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSTY0KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBJNjQge1xuICB2YXIgbG8gPSByZWFkSTMyKGJ1ZmZlciwgb2Zmc2V0KTtcbiAgdmFyIGhpID0gcmVhZEkzMihidWZmZXIsIG9mZnNldCArIDQpO1xuICByZXR1cm4gaTY0X25ldyhsbywgaGkpO1xufVxuXG4vKiogV3JpdGVzIGEgNjQtYml0IGludGVnZXIgdG8gdGhlIHNwZWNpZmllZCBidWZmZXIuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVJNjQodmFsdWU6IEk2NCwgYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IHZvaWQge1xuICB3cml0ZUkzMihpNjRfbG93KHZhbHVlKSwgYnVmZmVyLCBvZmZzZXQpO1xuICB3cml0ZUkzMihpNjRfaGlnaCh2YWx1ZSksIGJ1ZmZlciwgb2Zmc2V0ICsgNCk7XG59XG5cbi8qKiBSZWFkcyBhIDMyLWJpdCBmbG9hdCBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGMzIoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGYzMiB7XG4gIHJldHVybiBpMzJfYXNfZjMyKHJlYWRJMzIoYnVmZmVyLCBvZmZzZXQpKTtcbn1cblxuLyoqIFdyaXRlcyBhIDMyLWJpdCBmbG9hdCB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUYzMih2YWx1ZTogZjMyLCBidWZmZXI6IFVpbnQ4QXJyYXksIG9mZnNldDogaTMyKTogdm9pZCB7XG4gIHdyaXRlSTMyKGYzMl9hc19pMzIodmFsdWUpLCBidWZmZXIsIG9mZnNldCk7XG59XG5cbi8qKiBSZWFkcyBhIDY0LWJpdCBmbG9hdCBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGNjQoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGY2NCB7XG4gIHJldHVybiBpNjRfYXNfZjY0KHJlYWRJNjQoYnVmZmVyLCBvZmZzZXQpKTtcbn1cblxuLyoqIFdyaXRlcyBhIDY0LWJpdCBmbG9hdCB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUY2NCh2YWx1ZTogZjY0LCBidWZmZXI6IFVpbnQ4QXJyYXksIG9mZnNldDogaTMyKTogdm9pZCB7XG4gIHZhciB2YWx1ZUk2NCA9IGY2NF9hc19pNjQodmFsdWUpO1xuICB3cml0ZUkzMihpNjRfbG93KHZhbHVlSTY0KSwgYnVmZmVyLCBvZmZzZXQpO1xuICB3cml0ZUkzMihpNjRfaGlnaCh2YWx1ZUk2NCksIGJ1ZmZlciwgb2Zmc2V0ICsgNCk7XG59XG4iXX0= + +/***/ }), + +/***/ "../src/util/bitset.ts": +/*!*****************************!*\ + !*** ../src/util/bitset.ts ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** @module util */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +/** Tests if the bit at the specified index is set within a 64-bit map. */ +function bitsetIs(map, index) { + assert(index >= 0 && index < 64); + return i64_ne(i64_and(map, i64_shl(i64_one, i64_new(index))), i64_zero); +} +exports.bitsetIs = bitsetIs; +/** Sets or unsets the bit at the specified index within a 64-bit map and returns the new map. */ +function bitsetSet(map, index, isSet) { + assert(index >= 0 && index < 64); + return isSet + ? i64_or(map, i64_shl(i64_one, i64_new(index))) + : i64_and(map, i64_not(i64_shl(i64_one, i64_new(index)))); +} +exports.bitsetSet = bitsetSet; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0c2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvYml0c2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBbUIsQ0FBQSxLQUFLOztBQUV4QiwwRUFBMEU7QUFDMUUsU0FBZ0IsUUFBUSxDQUFDLEdBQVEsRUFBRSxLQUFVO0lBQzNDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLE1BQU0sQ0FDWCxPQUFPLENBQ0wsR0FBRyxFQUNILE9BQU8sQ0FDTCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNmLENBQ0YsRUFDRCxRQUFRLENBQ1QsQ0FBQztBQUNKLENBQUM7QUFaRCw0QkFZQztBQUVELGlHQUFpRztBQUNqRyxTQUFnQixTQUFTLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxLQUFXO0lBQ3pELE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLEtBQUs7UUFDVixDQUFDLENBQUMsTUFBTSxDQUNKLEdBQUcsRUFDSCxPQUFPLENBQ0wsT0FBTyxFQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FDZixDQUNGO1FBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FDTCxHQUFHLEVBQ0gsT0FBTyxDQUNMLE9BQU8sQ0FDTCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNmLENBQ0YsQ0FDRixDQUFDO0FBQ1IsQ0FBQztBQW5CRCw4QkFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuLyoqIFRlc3RzIGlmIHRoZSBiaXQgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBpcyBzZXQgd2l0aGluIGEgNjQtYml0IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaXRzZXRJcyhtYXA6IEk2NCwgaW5kZXg6IGkzMik6IGJvb2wge1xuICBhc3NlcnQoaW5kZXggPj0gMCAmJiBpbmRleCA8IDY0KTtcbiAgcmV0dXJuIGk2NF9uZShcbiAgICBpNjRfYW5kKFxuICAgICAgbWFwLFxuICAgICAgaTY0X3NobChcbiAgICAgICAgaTY0X29uZSxcbiAgICAgICAgaTY0X25ldyhpbmRleClcbiAgICAgIClcbiAgICApLFxuICAgIGk2NF96ZXJvXG4gICk7XG59XG5cbi8qKiBTZXRzIG9yIHVuc2V0cyB0aGUgYml0IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggd2l0aGluIGEgNjQtYml0IG1hcCBhbmQgcmV0dXJucyB0aGUgbmV3IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaXRzZXRTZXQobWFwOiBJNjQsIGluZGV4OiBpMzIsIGlzU2V0OiBib29sKTogSTY0IHtcbiAgYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPCA2NCk7XG4gIHJldHVybiBpc1NldFxuICAgID8gaTY0X29yKFxuICAgICAgICBtYXAsXG4gICAgICAgIGk2NF9zaGwoXG4gICAgICAgICAgaTY0X29uZSxcbiAgICAgICAgICBpNjRfbmV3KGluZGV4KVxuICAgICAgICApXG4gICAgICApXG4gICAgOiBpNjRfYW5kKFxuICAgICAgICBtYXAsXG4gICAgICAgIGk2NF9ub3QoXG4gICAgICAgICAgaTY0X3NobChcbiAgICAgICAgICAgIGk2NF9vbmUsXG4gICAgICAgICAgICBpNjRfbmV3KGluZGV4KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbn1cbiJdfQ== + +/***/ }), + +/***/ "../src/util/charcode.ts": +/*!*******************************!*\ + !*** ../src/util/charcode.ts ***! + \*******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** @module util */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +/** An enum of named character codes. */ +var CharCode; +(function (CharCode) { + CharCode[CharCode["NULL"] = 0] = "NULL"; + CharCode[CharCode["LINEFEED"] = 10] = "LINEFEED"; + CharCode[CharCode["CARRIAGERETURN"] = 13] = "CARRIAGERETURN"; + CharCode[CharCode["LINESEPARATOR"] = 8232] = "LINESEPARATOR"; + CharCode[CharCode["PARAGRAPHSEPARATOR"] = 8233] = "PARAGRAPHSEPARATOR"; + CharCode[CharCode["NEXTLINE"] = 133] = "NEXTLINE"; + CharCode[CharCode["SPACE"] = 32] = "SPACE"; + CharCode[CharCode["NONBREAKINGSPACE"] = 160] = "NONBREAKINGSPACE"; + CharCode[CharCode["ENQUAD"] = 8192] = "ENQUAD"; + CharCode[CharCode["EMQUAD"] = 8193] = "EMQUAD"; + CharCode[CharCode["ENSPACE"] = 8194] = "ENSPACE"; + CharCode[CharCode["EMSPACE"] = 8195] = "EMSPACE"; + CharCode[CharCode["THREEPEREMSPACE"] = 8196] = "THREEPEREMSPACE"; + CharCode[CharCode["FOURPEREMSPACE"] = 8197] = "FOURPEREMSPACE"; + CharCode[CharCode["SIXPEREMSPACE"] = 8198] = "SIXPEREMSPACE"; + CharCode[CharCode["FIGURESPACE"] = 8199] = "FIGURESPACE"; + CharCode[CharCode["PUNCTUATIONSPACE"] = 8200] = "PUNCTUATIONSPACE"; + CharCode[CharCode["THINSPACE"] = 8201] = "THINSPACE"; + CharCode[CharCode["HAIRSPACE"] = 8202] = "HAIRSPACE"; + CharCode[CharCode["ZEROWIDTHSPACE"] = 8203] = "ZEROWIDTHSPACE"; + CharCode[CharCode["NARROWNOBREAKSPACE"] = 8239] = "NARROWNOBREAKSPACE"; + CharCode[CharCode["IDEOGRAPHICSPACE"] = 12288] = "IDEOGRAPHICSPACE"; + CharCode[CharCode["MATHEMATICALSPACE"] = 8287] = "MATHEMATICALSPACE"; + CharCode[CharCode["OGHAM"] = 5760] = "OGHAM"; + CharCode[CharCode["_"] = 95] = "_"; + CharCode[CharCode["_0"] = 48] = "_0"; + CharCode[CharCode["_1"] = 49] = "_1"; + CharCode[CharCode["_2"] = 50] = "_2"; + CharCode[CharCode["_3"] = 51] = "_3"; + CharCode[CharCode["_4"] = 52] = "_4"; + CharCode[CharCode["_5"] = 53] = "_5"; + CharCode[CharCode["_6"] = 54] = "_6"; + CharCode[CharCode["_7"] = 55] = "_7"; + CharCode[CharCode["_8"] = 56] = "_8"; + CharCode[CharCode["_9"] = 57] = "_9"; + CharCode[CharCode["a"] = 97] = "a"; + CharCode[CharCode["b"] = 98] = "b"; + CharCode[CharCode["c"] = 99] = "c"; + CharCode[CharCode["d"] = 100] = "d"; + CharCode[CharCode["e"] = 101] = "e"; + CharCode[CharCode["f"] = 102] = "f"; + CharCode[CharCode["g"] = 103] = "g"; + CharCode[CharCode["h"] = 104] = "h"; + CharCode[CharCode["i"] = 105] = "i"; + CharCode[CharCode["j"] = 106] = "j"; + CharCode[CharCode["k"] = 107] = "k"; + CharCode[CharCode["l"] = 108] = "l"; + CharCode[CharCode["m"] = 109] = "m"; + CharCode[CharCode["n"] = 110] = "n"; + CharCode[CharCode["o"] = 111] = "o"; + CharCode[CharCode["p"] = 112] = "p"; + CharCode[CharCode["q"] = 113] = "q"; + CharCode[CharCode["r"] = 114] = "r"; + CharCode[CharCode["s"] = 115] = "s"; + CharCode[CharCode["t"] = 116] = "t"; + CharCode[CharCode["u"] = 117] = "u"; + CharCode[CharCode["v"] = 118] = "v"; + CharCode[CharCode["w"] = 119] = "w"; + CharCode[CharCode["x"] = 120] = "x"; + CharCode[CharCode["y"] = 121] = "y"; + CharCode[CharCode["z"] = 122] = "z"; + CharCode[CharCode["A"] = 65] = "A"; + CharCode[CharCode["B"] = 66] = "B"; + CharCode[CharCode["C"] = 67] = "C"; + CharCode[CharCode["D"] = 68] = "D"; + CharCode[CharCode["E"] = 69] = "E"; + CharCode[CharCode["F"] = 70] = "F"; + CharCode[CharCode["G"] = 71] = "G"; + CharCode[CharCode["H"] = 72] = "H"; + CharCode[CharCode["I"] = 73] = "I"; + CharCode[CharCode["J"] = 74] = "J"; + CharCode[CharCode["K"] = 75] = "K"; + CharCode[CharCode["L"] = 76] = "L"; + CharCode[CharCode["M"] = 77] = "M"; + CharCode[CharCode["N"] = 78] = "N"; + CharCode[CharCode["O"] = 79] = "O"; + CharCode[CharCode["P"] = 80] = "P"; + CharCode[CharCode["Q"] = 81] = "Q"; + CharCode[CharCode["R"] = 82] = "R"; + CharCode[CharCode["S"] = 83] = "S"; + CharCode[CharCode["T"] = 84] = "T"; + CharCode[CharCode["U"] = 85] = "U"; + CharCode[CharCode["V"] = 86] = "V"; + CharCode[CharCode["W"] = 87] = "W"; + CharCode[CharCode["X"] = 88] = "X"; + CharCode[CharCode["Y"] = 89] = "Y"; + CharCode[CharCode["Z"] = 90] = "Z"; + CharCode[CharCode["AMPERSAND"] = 38] = "AMPERSAND"; + CharCode[CharCode["ASTERISK"] = 42] = "ASTERISK"; + CharCode[CharCode["AT"] = 64] = "AT"; + CharCode[CharCode["BACKSLASH"] = 92] = "BACKSLASH"; + CharCode[CharCode["BACKTICK"] = 96] = "BACKTICK"; + CharCode[CharCode["BAR"] = 124] = "BAR"; + CharCode[CharCode["CARET"] = 94] = "CARET"; + CharCode[CharCode["CLOSEBRACE"] = 125] = "CLOSEBRACE"; + CharCode[CharCode["CLOSEBRACKET"] = 93] = "CLOSEBRACKET"; + CharCode[CharCode["CLOSEPAREN"] = 41] = "CLOSEPAREN"; + CharCode[CharCode["COLON"] = 58] = "COLON"; + CharCode[CharCode["COMMA"] = 44] = "COMMA"; + CharCode[CharCode["DOLLAR"] = 36] = "DOLLAR"; + CharCode[CharCode["DOT"] = 46] = "DOT"; + CharCode[CharCode["DOUBLEQUOTE"] = 34] = "DOUBLEQUOTE"; + CharCode[CharCode["EQUALS"] = 61] = "EQUALS"; + CharCode[CharCode["EXCLAMATION"] = 33] = "EXCLAMATION"; + CharCode[CharCode["GREATERTHAN"] = 62] = "GREATERTHAN"; + CharCode[CharCode["HASH"] = 35] = "HASH"; + CharCode[CharCode["LESSTHAN"] = 60] = "LESSTHAN"; + CharCode[CharCode["MINUS"] = 45] = "MINUS"; + CharCode[CharCode["OPENBRACE"] = 123] = "OPENBRACE"; + CharCode[CharCode["OPENBRACKET"] = 91] = "OPENBRACKET"; + CharCode[CharCode["OPENPAREN"] = 40] = "OPENPAREN"; + CharCode[CharCode["PERCENT"] = 37] = "PERCENT"; + CharCode[CharCode["PLUS"] = 43] = "PLUS"; + CharCode[CharCode["QUESTION"] = 63] = "QUESTION"; + CharCode[CharCode["SEMICOLON"] = 59] = "SEMICOLON"; + CharCode[CharCode["SINGLEQUOTE"] = 39] = "SINGLEQUOTE"; + CharCode[CharCode["SLASH"] = 47] = "SLASH"; + CharCode[CharCode["TILDE"] = 126] = "TILDE"; + CharCode[CharCode["BACKSPACE"] = 8] = "BACKSPACE"; + CharCode[CharCode["FORMFEED"] = 12] = "FORMFEED"; + CharCode[CharCode["BYTEORDERMARK"] = 65279] = "BYTEORDERMARK"; + CharCode[CharCode["TAB"] = 9] = "TAB"; + CharCode[CharCode["VERTICALTAB"] = 11] = "VERTICALTAB"; +})(CharCode = exports.CharCode || (exports.CharCode = {})); +/** Tests if the specified character code is some sort of line break. */ +function isLineBreak(c) { + switch (c) { + case 10 /* LINEFEED */: + case 13 /* CARRIAGERETURN */: + case 8232 /* LINESEPARATOR */: + case 8233 /* PARAGRAPHSEPARATOR */: { + return true; + } + default: { + return false; + } + } +} +exports.isLineBreak = isLineBreak; +/** Tests if the specified character code is some sort of white space. */ +function isWhiteSpace(c) { + switch (c) { + case 32 /* SPACE */: + case 9 /* TAB */: + case 11 /* VERTICALTAB */: + case 12 /* FORMFEED */: + case 160 /* NONBREAKINGSPACE */: + case 133 /* NEXTLINE */: + case 5760 /* OGHAM */: + case 8239 /* NARROWNOBREAKSPACE */: + case 8287 /* MATHEMATICALSPACE */: + case 12288 /* IDEOGRAPHICSPACE */: + case 65279 /* BYTEORDERMARK */: { + return true; + } + default: { + return c >= 8192 /* ENQUAD */ && c <= 8203 /* ZEROWIDTHSPACE */; + } + } +} +exports.isWhiteSpace = isWhiteSpace; +/** Tests if the specified character code is a valid decimal digit. */ +function isDecimalDigit(c) { + return c >= 48 /* _0 */ && c <= 57 /* _9 */; +} +exports.isDecimalDigit = isDecimalDigit; +/** Tests if the specified character code is a valid octal digit. */ +function isOctalDigit(c) { + return c >= 48 /* _0 */ && c <= 55 /* _7 */; +} +exports.isOctalDigit = isOctalDigit; +/** Tests if the specified character code is a valid start of an identifier. */ +function isIdentifierStart(c) { + return c >= 97 /* a */ && c <= 122 /* z */ + || c >= 65 /* A */ && c <= 90 /* Z */ + || c == 95 /* _ */ + || c == 36 /* DOLLAR */ + || c > 0x7f && isUnicodeIdentifierStart(c); +} +exports.isIdentifierStart = isIdentifierStart; +/** Tests if the specified character code is a valid keyword character. */ +function isKeywordCharacter(c) { + return c >= 97 /* a */ && c <= 122 /* z */; +} +exports.isKeywordCharacter = isKeywordCharacter; +/** Tests if the specified character code is a valid part of an identifier. */ +function isIdentifierPart(c) { + return c >= 97 /* a */ && c <= 122 /* z */ + || c >= 65 /* A */ && c <= 90 /* Z */ + || c >= 48 /* _0 */ && c <= 57 /* _9 */ + || c == 95 /* _ */ + || c == 36 /* DOLLAR */ + || c > 0x7f && isUnicodeIdentifierPart(c); +} +exports.isIdentifierPart = isIdentifierPart; +// storing as u16 to save memory +var unicodeIdentifierStart = [ + 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, + 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, + 908, 908, 910, 929, 931, + 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, + 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, + 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, + 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, + 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, + 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, + 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, + 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, + 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, + 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, + 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, + 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, + 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, + 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, + 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, + 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, + 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, + 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, + 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, + 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, + 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, + 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, + 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, + 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, + 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, + 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, + 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, + 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, + 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, + 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, + 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, + 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, + 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, + 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, + 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, + 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, + 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, + 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, + 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, + 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, + 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, + 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, + 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, + 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, + 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, + 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, + 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015, + 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, + 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, + 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, + 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, + 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, + 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, + 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, + 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, + 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, + 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, + 65479, 65482, 65487, 65490, 65495, 65498, 65500, +]; +var unicodeIdentifierPart = [ + 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, + 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, + 908, 908, 910, 929, 931, + 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, + 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, + 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, + 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, + 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, + 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, + 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, + 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, + 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, + 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, + 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, + 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, + 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, + 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, + 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, + 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, + 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, + 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, + 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, + 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, + 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, + 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, + 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, + 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, + 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, + 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, + 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, + 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, + 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, + 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, + 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, + 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, + 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, + 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, + 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, + 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, + 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, + 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, + 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, + 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, + 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, + 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, + 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, + 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, + 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, + 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, + 8521, 8526, 8526, 8544, 8584, + 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, + 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, + 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, + 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, + 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, + 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, + 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, + 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, + 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072, + 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, + 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, + 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, + 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, + 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, + 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, + 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, + 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, + 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, + 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, + 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, +]; +function lookupInUnicodeMap(code, map) { + if (code < map[0]) + return false; + var lo = 0; + var hi = map.length; + var mid; + var midVal; + while (lo + 1 < hi) { + mid = lo + ((hi - lo) >> 1); + mid -= (mid & 1); + midVal = map[mid]; + if (midVal <= code && code <= map[mid + 1]) { + return true; + } + if (code < midVal) { + hi = mid; + } + else { + lo = mid + 2; + } + } + return false; +} +function isUnicodeIdentifierStart(code) { + return code < 0 || code > 0xffff ? false + : lookupInUnicodeMap(code, unicodeIdentifierStart); +} +function isUnicodeIdentifierPart(code) { + return code < 0 || code > 0xffff ? false + : lookupInUnicodeMap(code, unicodeIdentifierPart); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmNvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9jaGFyY29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsbUJBQW1CLENBQUEsS0FBSzs7QUFFeEIsd0NBQXdDO0FBQ3hDLElBQWtCLFFBb0lqQjtBQXBJRCxXQUFrQixRQUFRO0lBRXhCLHVDQUFRLENBQUE7SUFDUixnREFBZSxDQUFBO0lBQ2YsNERBQXFCLENBQUE7SUFDckIsNERBQXNCLENBQUE7SUFDdEIsc0VBQTJCLENBQUE7SUFDM0IsaURBQWlCLENBQUE7SUFFakIsMENBQVksQ0FBQTtJQUNaLGlFQUF1QixDQUFBO0lBQ3ZCLDhDQUFlLENBQUE7SUFDZiw4Q0FBZSxDQUFBO0lBQ2YsZ0RBQWdCLENBQUE7SUFDaEIsZ0RBQWdCLENBQUE7SUFDaEIsZ0VBQXdCLENBQUE7SUFDeEIsOERBQXVCLENBQUE7SUFDdkIsNERBQXNCLENBQUE7SUFDdEIsd0RBQW9CLENBQUE7SUFDcEIsa0VBQXlCLENBQUE7SUFDekIsb0RBQWtCLENBQUE7SUFDbEIsb0RBQWtCLENBQUE7SUFDbEIsOERBQXVCLENBQUE7SUFDdkIsc0VBQTJCLENBQUE7SUFDM0IsbUVBQXlCLENBQUE7SUFDekIsb0VBQTBCLENBQUE7SUFDMUIsNENBQWMsQ0FBQTtJQUVkLGtDQUFRLENBQUE7SUFFUixvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBRVQsa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FB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NENBT0M7QUFFRCxnQ0FBZ0M7QUFDaEMsSUFBTSxzQkFBc0IsR0FBVTtJQUNwQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDOUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztDQUNoRCxDQUFDO0FBQ0YsSUFBTSxxQkFBcUIsR0FBVTtJQUNuQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0NBQzlELENBQUM7QUFFRixTQUFTLGtCQUFrQixDQUFDLElBQVMsRUFBRSxHQUFVO0lBQy9DLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUVoQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWCxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3BCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxNQUFXLENBQUM7SUFFaEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNsQixHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUIsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksR0FBRyxNQUFNLEVBQUU7WUFDakIsRUFBRSxHQUFHLEdBQUcsQ0FBQztTQUNWO2FBQU07WUFDTCxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztTQUNkO0tBQ0Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLElBQVM7SUFDekMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQVcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLElBQVM7SUFDeEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQVcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuLyoqIEFuIGVudW0gb2YgbmFtZWQgY2hhcmFjdGVyIGNvZGVzLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQ2hhckNvZGUge1xuXG4gIE5VTEwgPSAwLFxuICBMSU5FRkVFRCA9IDB4MEEsXG4gIENBUlJJQUdFUkVUVVJOID0gMHgwRCxcbiAgTElORVNFUEFSQVRPUiA9IDB4MjAyOCxcbiAgUEFSQUdSQVBIU0VQQVJBVE9SID0gMHgyMDI5LFxuICBORVhUTElORSA9IDB4MDA4NSxcblxuICBTUEFDRSA9IDB4MjAsXG4gIE5PTkJSRUFLSU5HU1BBQ0UgPSAweEEwLFxuICBFTlFVQUQgPSAweDIwMDAsXG4gIEVNUVVBRCA9IDB4MjAwMSxcbiAgRU5TUEFDRSA9IDB4MjAwMixcbiAgRU1TUEFDRSA9IDB4MjAwMyxcbiAgVEhSRUVQRVJFTVNQQUNFID0gMHgyMDA0LFxuICBGT1VSUEVSRU1TUEFDRSA9IDB4MjAwNSxcbiAgU0lYUEVSRU1TUEFDRSA9IDB4MjAwNixcbiAgRklHVVJFU1BBQ0UgPSAweDIwMDcsXG4gIFBVTkNUVUFUSU9OU1BBQ0UgPSAweDIwMDgsXG4gIFRISU5TUEFDRSA9IDB4MjAwOSxcbiAgSEFJUlNQQUNFID0gMHgyMDBBLFxuICBaRVJPV0lEVEhTUEFDRSA9IDB4MjAwQixcbiAgTkFSUk9XTk9CUkVBS1NQQUNFID0gMHgyMDJGLFxuICBJREVPR1JBUEhJQ1NQQUNFID0gMHgzMDAwLFxuICBNQVRIRU1BVElDQUxTUEFDRSA9IDB4MjA1RixcbiAgT0dIQU0gPSAweDE2ODAsXG5cbiAgXyA9IDB4NUYsXG5cbiAgXzAgPSAweDMwLFxuICBfMSA9IDB4MzEsXG4gIF8yID0gMHgzMixcbiAgXzMgPSAweDMzLFxuICBfNCA9IDB4MzQsXG4gIF81ID0gMHgzNSxcbiAgXzYgPSAweDM2LFxuICBfNyA9IDB4MzcsXG4gIF84ID0gMHgzOCxcbiAgXzkgPSAweDM5LFxuXG4gIGEgPSAweDYxLFxuICBiID0gMHg2MixcbiAgYyA9IDB4NjMsXG4gIGQgPSAweDY0LFxuICBlID0gMHg2NSxcbiAgZiA9IDB4NjYsXG4gIGcgPSAweDY3LFxuICBoID0gMHg2OCxcbiAgaSA9IDB4NjksXG4gIGogPSAweDZBLFxuICBrID0gMHg2QixcbiAgbCA9IDB4NkMsXG4gIG0gPSAweDZELFxuICBuID0gMHg2RSxcbiAgbyA9IDB4NkYsXG4gIHAgPSAweDcwLFxuICBxID0gMHg3MSxcbiAgciA9IDB4NzIsXG4gIHMgPSAweDczLFxuICB0ID0gMHg3NCxcbiAgdSA9IDB4NzUsXG4gIHYgPSAweDc2LFxuICB3ID0gMHg3NyxcbiAgeCA9IDB4NzgsXG4gIHkgPSAweDc5LFxuICB6ID0gMHg3QSxcblxuICBBID0gMHg0MSxcbiAgQiA9IDB4NDIsXG4gIEMgPSAweDQzLFxuICBEID0gMHg0NCxcbiAgRSA9IDB4NDUsXG4gIEYgPSAweDQ2LFxuICBHID0gMHg0NyxcbiAgSCA9IDB4NDgsXG4gIEkgPSAweDQ5LFxuICBKID0gMHg0QSxcbiAgSyA9IDB4NEIsXG4gIEwgPSAweDRDLFxuICBNID0gMHg0RCxcbiAgTiA9IDB4NEUsXG4gIE8gPSAweDRGLFxuICBQID0gMHg1MCxcbiAgUSA9IDB4NTEsXG4gIFIgPSAweDUyLFxuICBTID0gMHg1MyxcbiAgVCA9IDB4NTQsXG4gIFUgPSAweDU1LFxuICBWID0gMHg1NixcbiAgVyA9IDB4NTcsXG4gIFggPSAweDU4LFxuICBZID0gMHg1OSxcbiAgWiA9IDB4NWEsXG5cbiAgQU1QRVJTQU5EID0gMHgyNixcbiAgQVNURVJJU0sgPSAweDJBLFxuICBBVCA9IDB4NDAsXG4gIEJBQ0tTTEFTSCA9IDB4NUMsXG4gIEJBQ0tUSUNLID0gMHg2MCxcbiAgQkFSID0gMHg3QyxcbiAgQ0FSRVQgPSAweDVFLFxuICBDTE9TRUJSQUNFID0gMHg3RCxcbiAgQ0xPU0VCUkFDS0VUID0gMHg1RCxcbiAgQ0xPU0VQQVJFTiA9IDB4MjksXG4gIENPTE9OID0gMHgzQSxcbiAgQ09NTUEgPSAweDJDLFxuICBET0xMQVIgPSAweDI0LFxuICBET1QgPSAweDJFLFxuICBET1VCTEVRVU9URSA9IDB4MjIsXG4gIEVRVUFMUyA9IDB4M0QsXG4gIEVYQ0xBTUFUSU9OID0gMHgyMSxcbiAgR1JFQVRFUlRIQU4gPSAweDNFLFxuICBIQVNIID0gMHgyMyxcbiAgTEVTU1RIQU4gPSAweDNDLFxuICBNSU5VUyA9IDB4MkQsXG4gIE9QRU5CUkFDRSA9IDB4N0IsXG4gIE9QRU5CUkFDS0VUID0gMHg1QixcbiAgT1BFTlBBUkVOID0gMHgyOCxcbiAgUEVSQ0VOVCA9IDB4MjUsXG4gIFBMVVMgPSAweDJCLFxuICBRVUVTVElPTiA9IDB4M0YsXG4gIFNFTUlDT0xPTiA9IDB4M0IsXG4gIFNJTkdMRVFVT1RFID0gMHgyNyxcbiAgU0xBU0ggPSAweDJGLFxuICBUSUxERSA9IDB4N0UsXG5cbiAgQkFDS1NQQUNFID0gMHgwOCxcbiAgRk9STUZFRUQgPSAweDBDLFxuICBCWVRFT1JERVJNQVJLID0gMHhGRUZGLFxuICBUQUIgPSAweDA5LFxuICBWRVJUSUNBTFRBQiA9IDB4MEJcbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgc29tZSBzb3J0IG9mIGxpbmUgYnJlYWsuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lQnJlYWsoYzogQ2hhckNvZGUpOiBib29sIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICBjYXNlIENoYXJDb2RlLkNBUlJJQUdFUkVUVVJOOlxuICAgIGNhc2UgQ2hhckNvZGUuTElORVNFUEFSQVRPUjpcbiAgICBjYXNlIENoYXJDb2RlLlBBUkFHUkFQSFNFUEFSQVRPUjoge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgc29tZSBzb3J0IG9mIHdoaXRlIHNwYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjOiBpMzIpOiBib29sIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSBDaGFyQ29kZS5TUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLlRBQjpcbiAgICBjYXNlIENoYXJDb2RlLlZFUlRJQ0FMVEFCOlxuICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6XG4gICAgY2FzZSBDaGFyQ29kZS5OT05CUkVBS0lOR1NQQUNFOlxuICAgIGNhc2UgQ2hhckNvZGUuTkVYVExJTkU6XG4gICAgY2FzZSBDaGFyQ29kZS5PR0hBTTpcbiAgICBjYXNlIENoYXJDb2RlLk5BUlJPV05PQlJFQUtTUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLk1BVEhFTUFUSUNBTFNQQUNFOlxuICAgIGNhc2UgQ2hhckNvZGUuSURFT0dSQVBISUNTUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLkJZVEVPUkRFUk1BUks6IHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gYyA+PSBDaGFyQ29kZS5FTlFVQUQgJiYgYyA8PSBDaGFyQ29kZS5aRVJPV0lEVEhTUEFDRTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgYSB2YWxpZCBkZWNpbWFsIGRpZ2l0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVjaW1hbERpZ2l0KGM6IGkzMik6IGJvb2wge1xuICByZXR1cm4gYyA+PSBDaGFyQ29kZS5fMCAmJiBjIDw9IENoYXJDb2RlLl85O1xufVxuXG4vKiogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZSBpcyBhIHZhbGlkIG9jdGFsIGRpZ2l0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2N0YWxEaWdpdChjOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fNztcbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgYSB2YWxpZCBzdGFydCBvZiBhbiBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbnRpZmllclN0YXJ0KGM6IGkzMik6IGJvb2wge1xuICByZXR1cm4gYyA+PSBDaGFyQ29kZS5hICYmIGMgPD0gQ2hhckNvZGUuelxuICAgICAgfHwgYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuWlxuICAgICAgfHwgYyA9PSBDaGFyQ29kZS5fXG4gICAgICB8fCBjID09IENoYXJDb2RlLkRPTExBUlxuICAgICAgfHwgYyA+IDB4N2YgJiYgaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGMpO1xufVxuXG4vKiogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZSBpcyBhIHZhbGlkIGtleXdvcmQgY2hhcmFjdGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzS2V5d29yZENoYXJhY3RlcihjOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGMgPj0gQ2hhckNvZGUuYSAmJiBjIDw9IENoYXJDb2RlLno7XG59XG5cbi8qKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBjb2RlIGlzIGEgdmFsaWQgcGFydCBvZiBhbiBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbnRpZmllclBhcnQoYzogaTMyKTogYm9vbCB7XG4gIHJldHVybiBjID49IENoYXJDb2RlLmEgJiYgYyA8PSBDaGFyQ29kZS56XG4gICAgICB8fCBjID49IENoYXJDb2RlLkEgJiYgYyA8PSBDaGFyQ29kZS5aXG4gICAgICB8fCBjID49IENoYXJDb2RlLl8wICYmIGMgPD0gQ2hhckNvZGUuXzlcbiAgICAgIHx8IGMgPT0gQ2hhckNvZGUuX1xuICAgICAgfHwgYyA9PSBDaGFyQ29kZS5ET0xMQVJcbiAgICAgIHx8IGMgPiAweDdmICYmIGlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGMpO1xufVxuXG4vLyBzdG9yaW5nIGFzIHUxNiB0byBzYXZlIG1lbW9yeVxuY29uc3QgdW5pY29kZUlkZW50aWZpZXJTdGFydDogdTE2W10gPSBbXG4gIDE3MCwgMTcwLCAxODEsIDE4MSwgMTg2LCAxODYsIDE5MiwgMjE0LCAyMTYsIDI0NiwgMjQ4LCA3MDUsIDcxMCwgNzIxLCA3MzYsXG4gIDc0MCwgNzQ4LCA3NDgsIDc1MCwgNzUwLCA4ODAsIDg4NCwgODg2LCA4ODcsIDg5MCwgODkzLCA5MDIsIDkwMiwgOTA0LCA5MDYsXG4gIDkwOCwgOTA4LCA5MTAsIDkyOSwgOTMxLFxuICAxMDEzLCAxMDE1LCAxMTUzLCAxMTYyLCAxMzE5LCAxMzI5LCAxMzY2LCAxMzY5LCAxMzY5LCAxMzc3LCAxNDE1LCAxNDg4LCAxNTE0LFxuICAxNTIwLCAxNTIyLCAxNTY4LCAxNjEwLCAxNjQ2LCAxNjQ3LCAxNjQ5LCAxNzQ3LCAxNzQ5LCAxNzQ5LCAxNzY1LCAxNzY2LCAxNzc0LFxuICAxNzc1LCAxNzg2LCAxNzg4LCAxNzkxLCAxNzkxLCAxODA4LCAxODA4LCAxODEwLCAxODM5LCAxODY5LCAxOTU3LCAxOTY5LCAxOTY5LFxuICAxOTk0LCAyMDI2LCAyMDM2LCAyMDM3LCAyMDQyLCAyMDQyLCAyMDQ4LCAyMDY5LCAyMDc0LCAyMDc0LCAyMDg0LCAyMDg0LCAyMDg4LFxuICAyMDg4LCAyMTEyLCAyMTM2LCAyMjA4LCAyMjA4LCAyMjEwLCAyMjIwLCAyMzA4LCAyMzYxLCAyMzY1LCAyMzY1LCAyMzg0LCAyMzg0LFxuICAyMzkyLCAyNDAxLCAyNDE3LCAyNDIzLCAyNDI1LCAyNDMxLCAyNDM3LCAyNDQ0LCAyNDQ3LCAyNDQ4LCAyNDUxLCAyNDcyLCAyNDc0LFxuICAyNDgwLCAyNDgyLCAyNDgyLCAyNDg2LCAyNDg5LCAyNDkzLCAyNDkzLCAyNTEwLCAyNTEwLCAyNTI0LCAyNTI1LCAyNTI3LCAyNTI5LFxuICAyNTQ0LCAyNTQ1LCAyNTY1LCAyNTcwLCAyNTc1LCAyNTc2LCAyNTc5LCAyNjAwLCAyNjAyLCAyNjA4LCAyNjEwLCAyNjExLCAyNjEzLFxuICAyNjE0LCAyNjE2LCAyNjE3LCAyNjQ5LCAyNjUyLCAyNjU0LCAyNjU0LCAyNjc0LCAyNjc2LCAyNjkzLCAyNzAxLCAyNzAzLCAyNzA1LFxuICAyNzA3LCAyNzI4LCAyNzMwLCAyNzM2LCAyNzM4LCAyNzM5LCAyNzQxLCAyNzQ1LCAyNzQ5LCAyNzQ5LCAyNzY4LCAyNzY4LCAyNzg0LFxuICAyNzg1LCAyODIxLCAyODI4LCAyODMxLCAyODMyLCAyODM1LCAyODU2LCAyODU4LCAyODY0LCAyODY2LCAyODY3LCAyODY5LCAyODczLFxuICAyODc3LCAyODc3LCAyOTA4LCAyOTA5LCAyOTExLCAyOTEzLCAyOTI5LCAyOTI5LCAyOTQ3LCAyOTQ3LCAyOTQ5LCAyOTU0LCAyOTU4LFxuICAyOTYwLCAyOTYyLCAyOTY1LCAyOTY5LCAyOTcwLCAyOTcyLCAyOTcyLCAyOTc0LCAyOTc1LCAyOTc5LCAyOTgwLCAyOTg0LCAyOTg2LFxuICAyOTkwLCAzMDAxLCAzMDI0LCAzMDI0LCAzMDc3LCAzMDg0LCAzMDg2LCAzMDg4LCAzMDkwLCAzMTEyLCAzMTE0LCAzMTIzLCAzMTI1LFxuICAzMTI5LCAzMTMzLCAzMTMzLCAzMTYwLCAzMTYxLCAzMTY4LCAzMTY5LCAzMjA1LCAzMjEyLCAzMjE0LCAzMjE2LCAzMjE4LCAzMjQwLFxuICAzMjQyLCAzMjUxLCAzMjUzLCAzMjU3LCAzMjYxLCAzMjYxLCAzMjk0LCAzMjk0LCAzMjk2LCAzMjk3LCAzMzEzLCAzMzE0LCAzMzMzLFxuICAzMzQwLCAzMzQyLCAzMzQ0LCAzMzQ2LCAzMzg2LCAzMzg5LCAzMzg5LCAzNDA2LCAzNDA2LCAzNDI0LCAzNDI1LCAzNDUwLCAzNDU1LFxuICAzNDYxLCAzNDc4LCAzNDgyLCAzNTA1LCAzNTA3LCAzNTE1LCAzNTE3LCAzNTE3LCAzNTIwLCAzNTI2LCAzNTg1LCAzNjMyLCAzNjM0LFxuICAzNjM1LCAzNjQ4LCAzNjU0LCAzNzEzLCAzNzE0LCAzNzE2LCAzNzE2LCAzNzE5LCAzNzIwLCAzNzIyLCAzNzIyLCAzNzI1LCAzNzI1LFxuICAzNzMyLCAzNzM1LCAzNzM3LCAzNzQzLCAzNzQ1LCAzNzQ3LCAzNzQ5LCAzNzQ5LCAzNzUxLCAzNzUxLCAzNzU0LCAzNzU1LCAzNzU3LFxuICAzNzYwLCAzNzYyLCAzNzYzLCAzNzczLCAzNzczLCAzNzc2LCAzNzgwLCAzNzgyLCAzNzgyLCAzODA0LCAzODA3LCAzODQwLCAzODQwLFxuICAzOTA0LCAzOTExLCAzOTEzLCAzOTQ4LCAzOTc2LCAzOTgwLCA0MDk2LCA0MTM4LCA0MTU5LCA0MTU5LCA0MTc2LCA0MTgxLCA0MTg2LFxuICA0MTg5LCA0MTkzLCA0MTkzLCA0MTk3LCA0MTk4LCA0MjA2LCA0MjA4LCA0MjEzLCA0MjI1LCA0MjM4LCA0MjM4LCA0MjU2LCA0MjkzLFxuICA0Mjk1LCA0Mjk1LCA0MzAxLCA0MzAxLCA0MzA0LCA0MzQ2LCA0MzQ4LCA0NjgwLCA0NjgyLCA0Njg1LCA0Njg4LCA0Njk0LCA0Njk2LFxuICA0Njk2LCA0Njk4LCA0NzAxLCA0NzA0LCA0NzQ0LCA0NzQ2LCA0NzQ5LCA0NzUyLCA0Nzg0LCA0Nzg2LCA0Nzg5LCA0NzkyLCA0Nzk4LFxuICA0ODAwLCA0ODAwLCA0ODAyLCA0ODA1LCA0ODA4LCA0ODIyLCA0ODI0LCA0ODgwLCA0ODgyLCA0ODg1LCA0ODg4LCA0OTU0LCA0OTkyLFxuICA1MDA3LCA1MDI0LCA1MTA4LCA1MTIxLCA1NzQwLCA1NzQzLCA1NzU5LCA1NzYxLCA1Nzg2LCA1NzkyLCA1ODY2LCA1ODcwLCA1ODcyLFxuICA1ODg4LCA1OTAwLCA1OTAyLCA1OTA1LCA1OTIwLCA1OTM3LCA1OTUyLCA1OTY5LCA1OTg0LCA1OTk2LCA1OTk4LCA2MDAwLCA2MDE2LFxuICA2MDY3LCA2MTAzLCA2MTAzLCA2MTA4LCA2MTA4LCA2MTc2LCA2MjYzLCA2MjcyLCA2MzEyLCA2MzE0LCA2MzE0LCA2MzIwLCA2Mzg5LFxuICA2NDAwLCA2NDI4LCA2NDgwLCA2NTA5LCA2NTEyLCA2NTE2LCA2NTI4LCA2NTcxLCA2NTkzLCA2NTk5LCA2NjU2LCA2Njc4LCA2Njg4LFxuICA2NzQwLCA2ODIzLCA2ODIzLCA2OTE3LCA2OTYzLCA2OTgxLCA2OTg3LCA3MDQzLCA3MDcyLCA3MDg2LCA3MDg3LCA3MDk4LCA3MTQxLFxuICA3MTY4LCA3MjAzLCA3MjQ1LCA3MjQ3LCA3MjU4LCA3MjkzLCA3NDAxLCA3NDA0LCA3NDA2LCA3NDA5LCA3NDEzLCA3NDE0LCA3NDI0LFxuICA3NjE1LCA3NjgwLCA3OTU3LCA3OTYwLCA3OTY1LCA3OTY4LCA4MDA1LCA4MDA4LCA4MDEzLCA4MDE2LCA4MDIzLCA4MDI1LCA4MDI1LFxuICA4MDI3LCA4MDI3LCA4MDI5LCA4MDI5LCA4MDMxLCA4MDYxLCA4MDY0LCA4MTE2LCA4MTE4LCA4MTI0LCA4MTI2LCA4MTI2LCA4MTMwLFxuICA4MTMyLCA4MTM0LCA4MTQwLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTU1LCA4MTYwLCA4MTcyLCA4MTc4LCA4MTgwLCA4MTgyLCA4MTg4LFxuICA4MzA1LCA4MzA1LCA4MzE5LCA4MzE5LCA4MzM2LCA4MzQ4LCA4NDUwLCA4NDUwLCA4NDU1LCA4NDU1LCA4NDU4LCA4NDY3LCA4NDY5LFxuICA4NDY5LCA4NDczLCA4NDc3LCA4NDg0LCA4NDg0LCA4NDg2LCA4NDg2LCA4NDg4LCA4NDg4LCA4NDkwLCA4NDkzLCA4NDk1LCA4NTA1LFxuICA4NTA4LCA4NTExLCA4NTE3LCA4NTIxLCA4NTI2LCA4NTI2LCA4NTQ0LCA4NTg0LFxuICAxMTI2NCwgMTEzMTAsIDExMzEyLCAxMTM1OCwgMTEzNjAsIDExNDkyLCAxMTQ5OSwgMTE1MDIsIDExNTA2LCAxMTUwNywgMTE1MjAsXG4gIDExNTU3LCAxMTU1OSwgMTE1NTksIDExNTY1LCAxMTU2NSwgMTE1NjgsIDExNjIzLCAxMTYzMSwgMTE2MzEsIDExNjQ4LCAxMTY3MCxcbiAgMTE2ODAsIDExNjg2LCAxMTY4OCwgMTE2OTQsIDExNjk2LCAxMTcwMiwgMTE3MDQsIDExNzEwLCAxMTcxMiwgMTE3MTgsIDExNzIwLFxuICAxMTcyNiwgMTE3MjgsIDExNzM0LCAxMTczNiwgMTE3NDIsIDExODIzLCAxMTgyMywgMTIyOTMsIDEyMjk1LCAxMjMyMSwgMTIzMjksXG4gIDEyMzM3LCAxMjM0MSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTI0MzgsIDEyNDQ1LCAxMjQ0NywgMTI0NDksIDEyNTM4LCAxMjU0MCxcbiAgMTI1NDMsIDEyNTQ5LCAxMjU4OSwgMTI1OTMsIDEyNjg2LCAxMjcwNCwgMTI3MzAsIDEyNzg0LCAxMjc5OSwgMTMzMTIsIDE5ODkzLFxuICAxOTk2OCwgNDA5MDgsIDQwOTYwLCA0MjEyNCwgNDIxOTIsIDQyMjM3LCA0MjI0MCwgNDI1MDgsIDQyNTEyLCA0MjUyNywgNDI1MzgsXG4gIDQyNTM5LCA0MjU2MCwgNDI2MDYsIDQyNjIzLCA0MjY0NywgNDI2NTYsIDQyNzM1LCA0Mjc3NSwgNDI3ODMsIDQyNzg2LCA0Mjg4OCxcbiAgNDI4OTEsIDQyODk0LCA0Mjg5NiwgNDI4OTksIDQyOTEyLCA0MjkyMiwgNDMwMDAsIDQzMDA5LCA0MzAxMSwgNDMwMTMsIDQzMDE1LFxuICA0MzAxOCwgNDMwMjAsIDQzMDQyLCA0MzA3MiwgNDMxMjMsIDQzMTM4LCA0MzE4NywgNDMyNTAsIDQzMjU1LCA0MzI1OSwgNDMyNTksXG4gIDQzMjc0LCA0MzMwMSwgNDMzMTIsIDQzMzM0LCA0MzM2MCwgNDMzODgsIDQzMzk2LCA0MzQ0MiwgNDM0NzEsIDQzNDcxLCA0MzUyMCxcbiAgNDM1NjAsIDQzNTg0LCA0MzU4NiwgNDM1ODgsIDQzNTk1LCA0MzYxNiwgNDM2MzgsIDQzNjQyLCA0MzY0MiwgNDM2NDgsIDQzNjk1LFxuICA0MzY5NywgNDM2OTcsIDQzNzAxLCA0MzcwMiwgNDM3MDUsIDQzNzA5LCA0MzcxMiwgNDM3MTIsIDQzNzE0LCA0MzcxNCwgNDM3MzksXG4gIDQzNzQxLCA0Mzc0NCwgNDM3NTQsIDQzNzYyLCA0Mzc2NCwgNDM3NzcsIDQzNzgyLCA0Mzc4NSwgNDM3OTAsIDQzNzkzLCA0Mzc5OCxcbiAgNDM4MDgsIDQzODE0LCA0MzgxNiwgNDM4MjIsIDQzOTY4LCA0NDAwMiwgNDQwMzIsIDU1MjAzLCA1NTIxNiwgNTUyMzgsIDU1MjQzLFxuICA1NTI5MSwgNjM3NDQsIDY0MTA5LCA2NDExMiwgNjQyMTcsIDY0MjU2LCA2NDI2MiwgNjQyNzUsIDY0Mjc5LCA2NDI4NSwgNjQyODUsXG4gIDY0Mjg3LCA2NDI5NiwgNjQyOTgsIDY0MzEwLCA2NDMxMiwgNjQzMTYsIDY0MzE4LCA2NDMxOCwgNjQzMjAsIDY0MzIxLCA2NDMyMyxcbiAgNjQzMjQsIDY0MzI2LCA2NDQzMywgNjQ0NjcsIDY0ODI5LCA2NDg0OCwgNjQ5MTEsIDY0OTE0LCA2NDk2NywgNjUwMDgsIDY1MDE5LFxuICA2NTEzNiwgNjUxNDAsIDY1MTQyLCA2NTI3NiwgNjUzMTMsIDY1MzM4LCA2NTM0NSwgNjUzNzAsIDY1MzgyLCA2NTQ3MCwgNjU0NzQsXG4gIDY1NDc5LCA2NTQ4MiwgNjU0ODcsIDY1NDkwLCA2NTQ5NSwgNjU0OTgsIDY1NTAwLFxuXTtcbmNvbnN0IHVuaWNvZGVJZGVudGlmaWVyUGFydDogdTE2W10gPSBbXG4gIDE3MCwgMTcwLCAxODEsIDE4MSwgMTg2LCAxODYsIDE5MiwgMjE0LCAyMTYsIDI0NiwgMjQ4LCA3MDUsIDcxMCwgNzIxLCA3MzYsXG4gIDc0MCwgNzQ4LCA3NDgsIDc1MCwgNzUwLCA3NjgsIDg4NCwgODg2LCA4ODcsIDg5MCwgODkzLCA5MDIsIDkwMiwgOTA0LCA5MDYsXG4gIDkwOCwgOTA4LCA5MTAsIDkyOSwgOTMxLFxuICAxMDEzLCAxMDE1LCAxMTUzLCAxMTU1LCAxMTU5LCAxMTYyLCAxMzE5LCAxMzI5LCAxMzY2LCAxMzY5LCAxMzY5LCAxMzc3LCAxNDE1LFxuICAxNDI1LCAxNDY5LCAxNDcxLCAxNDcxLCAxNDczLCAxNDc0LCAxNDc2LCAxNDc3LCAxNDc5LCAxNDc5LCAxNDg4LCAxNTE0LCAxNTIwLFxuICAxNTIyLCAxNTUyLCAxNTYyLCAxNTY4LCAxNjQxLCAxNjQ2LCAxNzQ3LCAxNzQ5LCAxNzU2LCAxNzU5LCAxNzY4LCAxNzcwLCAxNzg4LFxuICAxNzkxLCAxNzkxLCAxODA4LCAxODY2LCAxODY5LCAxOTY5LCAxOTg0LCAyMDM3LCAyMDQyLCAyMDQyLCAyMDQ4LCAyMDkzLCAyMTEyLFxuICAyMTM5LCAyMjA4LCAyMjA4LCAyMjEwLCAyMjIwLCAyMjc2LCAyMzAyLCAyMzA0LCAyNDAzLCAyNDA2LCAyNDE1LCAyNDE3LCAyNDIzLFxuICAyNDI1LCAyNDMxLCAyNDMzLCAyNDM1LCAyNDM3LCAyNDQ0LCAyNDQ3LCAyNDQ4LCAyNDUxLCAyNDcyLCAyNDc0LCAyNDgwLCAyNDgyLFxuICAyNDgyLCAyNDg2LCAyNDg5LCAyNDkyLCAyNTAwLCAyNTAzLCAyNTA0LCAyNTA3LCAyNTEwLCAyNTE5LCAyNTE5LCAyNTI0LCAyNTI1LFxuICAyNTI3LCAyNTMxLCAyNTM0LCAyNTQ1LCAyNTYxLCAyNTYzLCAyNTY1LCAyNTcwLCAyNTc1LCAyNTc2LCAyNTc5LCAyNjAwLCAyNjAyLFxuICAyNjA4LCAyNjEwLCAyNjExLCAyNjEzLCAyNjE0LCAyNjE2LCAyNjE3LCAyNjIwLCAyNjIwLCAyNjIyLCAyNjI2LCAyNjMxLCAyNjMyLFxuICAyNjM1LCAyNjM3LCAyNjQxLCAyNjQxLCAyNjQ5LCAyNjUyLCAyNjU0LCAyNjU0LCAyNjYyLCAyNjc3LCAyNjg5LCAyNjkxLCAyNjkzLFxuICAyNzAxLCAyNzAzLCAyNzA1LCAyNzA3LCAyNzI4LCAyNzMwLCAyNzM2LCAyNzM4LCAyNzM5LCAyNzQxLCAyNzQ1LCAyNzQ4LCAyNzU3LFxuICAyNzU5LCAyNzYxLCAyNzYzLCAyNzY1LCAyNzY4LCAyNzY4LCAyNzg0LCAyNzg3LCAyNzkwLCAyNzk5LCAyODE3LCAyODE5LCAyODIxLFxuICAyODI4LCAyODMxLCAyODMyLCAyODM1LCAyODU2LCAyODU4LCAyODY0LCAyODY2LCAyODY3LCAyODY5LCAyODczLCAyODc2LCAyODg0LFxuICAyODg3LCAyODg4LCAyODkxLCAyODkzLCAyOTAyLCAyOTAzLCAyOTA4LCAyOTA5LCAyOTExLCAyOTE1LCAyOTE4LCAyOTI3LCAyOTI5LFxuICAyOTI5LCAyOTQ2LCAyOTQ3LCAyOTQ5LCAyOTU0LCAyOTU4LCAyOTYwLCAyOTYyLCAyOTY1LCAyOTY5LCAyOTcwLCAyOTcyLCAyOTcyLFxuICAyOTc0LCAyOTc1LCAyOTc5LCAyOTgwLCAyOTg0LCAyOTg2LCAyOTkwLCAzMDAxLCAzMDA2LCAzMDEwLCAzMDE0LCAzMDE2LCAzMDE4LFxuICAzMDIxLCAzMDI0LCAzMDI0LCAzMDMxLCAzMDMxLCAzMDQ2LCAzMDU1LCAzMDczLCAzMDc1LCAzMDc3LCAzMDg0LCAzMDg2LCAzMDg4LFxuICAzMDkwLCAzMTEyLCAzMTE0LCAzMTIzLCAzMTI1LCAzMTI5LCAzMTMzLCAzMTQwLCAzMTQyLCAzMTQ0LCAzMTQ2LCAzMTQ5LCAzMTU3LFxuICAzMTU4LCAzMTYwLCAzMTYxLCAzMTY4LCAzMTcxLCAzMTc0LCAzMTgzLCAzMjAyLCAzMjAzLCAzMjA1LCAzMjEyLCAzMjE0LCAzMjE2LFxuICAzMjE4LCAzMjQwLCAzMjQyLCAzMjUxLCAzMjUzLCAzMjU3LCAzMjYwLCAzMjY4LCAzMjcwLCAzMjcyLCAzMjc0LCAzMjc3LCAzMjg1LFxuICAzMjg2LCAzMjk0LCAzMjk0LCAzMjk2LCAzMjk5LCAzMzAyLCAzMzExLCAzMzEzLCAzMzE0LCAzMzMwLCAzMzMxLCAzMzMzLCAzMzQwLFxuICAzMzQyLCAzMzQ0LCAzMzQ2LCAzMzg2LCAzMzg5LCAzMzk2LCAzMzk4LCAzNDAwLCAzNDAyLCAzNDA2LCAzNDE1LCAzNDE1LCAzNDI0LFxuICAzNDI3LCAzNDMwLCAzNDM5LCAzNDUwLCAzNDU1LCAzNDU4LCAzNDU5LCAzNDYxLCAzNDc4LCAzNDgyLCAzNTA1LCAzNTA3LCAzNTE1LFxuICAzNTE3LCAzNTE3LCAzNTIwLCAzNTI2LCAzNTMwLCAzNTMwLCAzNTM1LCAzNTQwLCAzNTQyLCAzNTQyLCAzNTQ0LCAzNTUxLCAzNTcwLFxuICAzNTcxLCAzNTg1LCAzNjQyLCAzNjQ4LCAzNjYyLCAzNjY0LCAzNjczLCAzNzEzLCAzNzE0LCAzNzE2LCAzNzE2LCAzNzE5LCAzNzIwLFxuICAzNzIyLCAzNzIyLCAzNzI1LCAzNzI1LCAzNzMyLCAzNzM1LCAzNzM3LCAzNzQzLCAzNzQ1LCAzNzQ3LCAzNzQ5LCAzNzQ5LCAzNzUxLFxuICAzNzUxLCAzNzU0LCAzNzU1LCAzNzU3LCAzNzY5LCAzNzcxLCAzNzczLCAzNzc2LCAzNzgwLCAzNzgyLCAzNzgyLCAzNzg0LCAzNzg5LFxuICAzNzkyLCAzODAxLCAzODA0LCAzODA3LCAzODQwLCAzODQwLCAzODY0LCAzODY1LCAzODcyLCAzODgxLCAzODkzLCAzODkzLCAzODk1LFxuICAzODk1LCAzODk3LCAzODk3LCAzOTAyLCAzOTExLCAzOTEzLCAzOTQ4LCAzOTUzLCAzOTcyLCAzOTc0LCAzOTkxLCAzOTkzLCA0MDI4LFxuICA0MDM4LCA0MDM4LCA0MDk2LCA0MTY5LCA0MTc2LCA0MjUzLCA0MjU2LCA0MjkzLCA0Mjk1LCA0Mjk1LCA0MzAxLCA0MzAxLCA0MzA0LFxuICA0MzQ2LCA0MzQ4LCA0NjgwLCA0NjgyLCA0Njg1LCA0Njg4LCA0Njk0LCA0Njk2LCA0Njk2LCA0Njk4LCA0NzAxLCA0NzA0LCA0NzQ0LFxuICA0NzQ2LCA0NzQ5LCA0NzUyLCA0Nzg0LCA0Nzg2LCA0Nzg5LCA0NzkyLCA0Nzk4LCA0ODAwLCA0ODAwLCA0ODAyLCA0ODA1LCA0ODA4LFxuICA0ODIyLCA0ODI0LCA0ODgwLCA0ODgyLCA0ODg1LCA0ODg4LCA0OTU0LCA0OTU3LCA0OTU5LCA0OTkyLCA1MDA3LCA1MDI0LCA1MTA4LFxuICA1MTIxLCA1NzQwLCA1NzQzLCA1NzU5LCA1NzYxLCA1Nzg2LCA1NzkyLCA1ODY2LCA1ODcwLCA1ODcyLCA1ODg4LCA1OTAwLCA1OTAyLFxuICA1OTA4LCA1OTIwLCA1OTQwLCA1OTUyLCA1OTcxLCA1OTg0LCA1OTk2LCA1OTk4LCA2MDAwLCA2MDAyLCA2MDAzLCA2MDE2LCA2MDk5LFxuICA2MTAzLCA2MTAzLCA2MTA4LCA2MTA5LCA2MTEyLCA2MTIxLCA2MTU1LCA2MTU3LCA2MTYwLCA2MTY5LCA2MTc2LCA2MjYzLCA2MjcyLFxuICA2MzE0LCA2MzIwLCA2Mzg5LCA2NDAwLCA2NDI4LCA2NDMyLCA2NDQzLCA2NDQ4LCA2NDU5LCA2NDcwLCA2NTA5LCA2NTEyLCA2NTE2LFxuICA2NTI4LCA2NTcxLCA2NTc2LCA2NjAxLCA2NjA4LCA2NjE3LCA2NjU2LCA2NjgzLCA2Njg4LCA2NzUwLCA2NzUyLCA2NzgwLCA2NzgzLFxuICA2NzkzLCA2ODAwLCA2ODA5LCA2ODIzLCA2ODIzLCA2OTEyLCA2OTg3LCA2OTkyLCA3MDAxLCA3MDE5LCA3MDI3LCA3MDQwLCA3MTU1LFxuICA3MTY4LCA3MjIzLCA3MjMyLCA3MjQxLCA3MjQ1LCA3MjkzLCA3Mzc2LCA3Mzc4LCA3MzgwLCA3NDE0LCA3NDI0LCA3NjU0LCA3Njc2LFxuICA3OTU3LCA3OTYwLCA3OTY1LCA3OTY4LCA4MDA1LCA4MDA4LCA4MDEzLCA4MDE2LCA4MDIzLCA4MDI1LCA4MDI1LCA4MDI3LCA4MDI3LFxuICA4MDI5LCA4MDI5LCA4MDMxLCA4MDYxLCA4MDY0LCA4MTE2LCA4MTE4LCA4MTI0LCA4MTI2LCA4MTI2LCA4MTMwLCA4MTMyLCA4MTM0LFxuICA4MTQwLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTU1LCA4MTYwLCA4MTcyLCA4MTc4LCA4MTgwLCA4MTgyLCA4MTg4LCA4MjA0LCA4MjA1LFxuICA4MjU1LCA4MjU2LCA4Mjc2LCA4Mjc2LCA4MzA1LCA4MzA1LCA4MzE5LCA4MzE5LCA4MzM2LCA4MzQ4LCA4NDAwLCA4NDEyLCA4NDE3LFxuICA4NDE3LCA4NDIxLCA4NDMyLCA4NDUwLCA4NDUwLCA4NDU1LCA4NDU1LCA4NDU4LCA4NDY3LCA4NDY5LCA4NDY5LCA4NDczLCA4NDc3LFxuICA4NDg0LCA4NDg0LCA4NDg2LCA4NDg2LCA4NDg4LCA4NDg4LCA4NDkwLCA4NDkzLCA4NDk1LCA4NTA1LCA4NTA4LCA4NTExLCA4NTE3LFxuICA4NTIxLCA4NTI2LCA4NTI2LCA4NTQ0LCA4NTg0LFxuICAxMTI2NCwgMTEzMTAsIDExMzEyLCAxMTM1OCwgMTEzNjAsIDExNDkyLCAxMTQ5OSwgMTE1MDcsIDExNTIwLCAxMTU1NywgMTE1NTksXG4gIDExNTU5LCAxMTU2NSwgMTE1NjUsIDExNTY4LCAxMTYyMywgMTE2MzEsIDExNjMxLCAxMTY0NywgMTE2NzAsIDExNjgwLCAxMTY4NixcbiAgMTE2ODgsIDExNjk0LCAxMTY5NiwgMTE3MDIsIDExNzA0LCAxMTcxMCwgMTE3MTIsIDExNzE4LCAxMTcyMCwgMTE3MjYsIDExNzI4LFxuICAxMTczNCwgMTE3MzYsIDExNzQyLCAxMTc0NCwgMTE3NzUsIDExODIzLCAxMTgyMywgMTIyOTMsIDEyMjk1LCAxMjMyMSwgMTIzMzUsXG4gIDEyMzM3LCAxMjM0MSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTI0MzgsIDEyNDQxLCAxMjQ0MiwgMTI0NDUsIDEyNDQ3LCAxMjQ0OSxcbiAgMTI1MzgsIDEyNTQwLCAxMjU0MywgMTI1NDksIDEyNTg5LCAxMjU5MywgMTI2ODYsIDEyNzA0LCAxMjczMCwgMTI3ODQsIDEyNzk5LFxuICAxMzMxMiwgMTk4OTMsIDE5OTY4LCA0MDkwOCwgNDA5NjAsIDQyMTI0LCA0MjE5MiwgNDIyMzcsIDQyMjQwLCA0MjUwOCwgNDI1MTIsXG4gIDQyNTM5LCA0MjU2MCwgNDI2MDcsIDQyNjEyLCA0MjYyMSwgNDI2MjMsIDQyNjQ3LCA0MjY1NSwgNDI3MzcsIDQyNzc1LCA0Mjc4MyxcbiAgNDI3ODYsIDQyODg4LCA0Mjg5MSwgNDI4OTQsIDQyODk2LCA0Mjg5OSwgNDI5MTIsIDQyOTIyLCA0MzAwMCwgNDMwNDcsIDQzMDcyLFxuICA0MzEyMywgNDMxMzYsIDQzMjA0LCA0MzIxNiwgNDMyMjUsIDQzMjMyLCA0MzI1NSwgNDMyNTksIDQzMjU5LCA0MzI2NCwgNDMzMDksXG4gIDQzMzEyLCA0MzM0NywgNDMzNjAsIDQzMzg4LCA0MzM5MiwgNDM0NTYsIDQzNDcxLCA0MzQ4MSwgNDM1MjAsIDQzNTc0LCA0MzU4NCxcbiAgNDM1OTcsIDQzNjAwLCA0MzYwOSwgNDM2MTYsIDQzNjM4LCA0MzY0MiwgNDM2NDMsIDQzNjQ4LCA0MzcxNCwgNDM3MzksIDQzNzQxLFxuICA0Mzc0NCwgNDM3NTksIDQzNzYyLCA0Mzc2NiwgNDM3NzcsIDQzNzgyLCA0Mzc4NSwgNDM3OTAsIDQzNzkzLCA0Mzc5OCwgNDM4MDgsXG4gIDQzODE0LCA0MzgxNiwgNDM4MjIsIDQzOTY4LCA0NDAxMCwgNDQwMTIsIDQ0MDEzLCA0NDAxNiwgNDQwMjUsIDQ0MDMyLCA1NTIwMyxcbiAgNTUyMTYsIDU1MjM4LCA1NTI0MywgNTUyOTEsIDYzNzQ0LCA2NDEwOSwgNjQxMTIsIDY0MjE3LCA2NDI1NiwgNjQyNjIsIDY0Mjc1LFxuICA2NDI3OSwgNjQyODUsIDY0Mjk2LCA2NDI5OCwgNjQzMTAsIDY0MzEyLCA2NDMxNiwgNjQzMTgsIDY0MzE4LCA2NDMyMCwgNjQzMjEsXG4gIDY0MzIzLCA2NDMyNCwgNjQzMjYsIDY0NDMzLCA2NDQ2NywgNjQ4MjksIDY0ODQ4LCA2NDkxMSwgNjQ5MTQsIDY0OTY3LCA2NTAwOCxcbiAgNjUwMTksIDY1MDI0LCA2NTAzOSwgNjUwNTYsIDY1MDYyLCA2NTA3NSwgNjUwNzYsIDY1MTAxLCA2NTEwMywgNjUxMzYsIDY1MTQwLFxuICA2NTE0MiwgNjUyNzYsIDY1Mjk2LCA2NTMwNSwgNjUzMTMsIDY1MzM4LCA2NTM0MywgNjUzNDMsIDY1MzQ1LCA2NTM3MCwgNjUzODIsXG4gIDY1NDcwLCA2NTQ3NCwgNjU0NzksIDY1NDgyLCA2NTQ4NywgNjU0OTAsIDY1NDk1LCA2NTQ5OCwgNjU1MDAsXG5dO1xuXG5mdW5jdGlvbiBsb29rdXBJblVuaWNvZGVNYXAoY29kZTogdTE2LCBtYXA6IHUxNltdKTogYm9vbCB7XG4gIGlmIChjb2RlIDwgbWFwWzBdKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGxvID0gMDtcbiAgdmFyIGhpID0gbWFwLmxlbmd0aDtcbiAgdmFyIG1pZDogaTMyO1xuICB2YXIgbWlkVmFsOiB1MTY7XG5cbiAgd2hpbGUgKGxvICsgMSA8IGhpKSB7XG4gICAgbWlkID0gbG8gKyAoKGhpIC0gbG8pID4+IDEpO1xuICAgIG1pZCAtPSAobWlkICYgMSk7XG4gICAgbWlkVmFsID0gbWFwW21pZF07XG4gICAgaWYgKG1pZFZhbCA8PSBjb2RlICYmIGNvZGUgPD0gbWFwW21pZCArIDFdKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPCBtaWRWYWwpIHtcbiAgICAgIGhpID0gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBsbyA9IG1pZCArIDI7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGNvZGU6IGkzMik6IGJvb2wge1xuICByZXR1cm4gY29kZSA8IDAgfHwgY29kZSA+IDB4ZmZmZiA/IGZhbHNlXG4gICAgICAgOiBsb29rdXBJblVuaWNvZGVNYXAoY29kZSBhcyB1MTYsIHVuaWNvZGVJZGVudGlmaWVyU3RhcnQpO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVJZGVudGlmaWVyUGFydChjb2RlOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGNvZGUgPCAwIHx8IGNvZGUgPiAweGZmZmYgPyBmYWxzZVxuICAgICAgIDogbG9va3VwSW5Vbmljb2RlTWFwKGNvZGUgYXMgdTE2LCB1bmljb2RlSWRlbnRpZmllclBhcnQpO1xufVxuIl19 + +/***/ }), + +/***/ "../src/util/collections.ts": +/*!**********************************!*\ + !*** ../src/util/collections.ts ***! + \**********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __values = (this && this.__values) || function (o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; +}; +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +function makeArray(original) { + if (original === void 0) { original = null; } + if (original) { + var cloned = new Array(original.length); + for (var i = 0, k = original.length; i < k; ++i) + unchecked(cloned[i] = original[i]); + return cloned; + } + return new Array(); +} +exports.makeArray = makeArray; +function makeSet(original) { + var e_1, _a; + if (original === void 0) { original = null; } + if (original) { + var cloned = new Set(); + try { + for (var original_1 = __values(original), original_1_1 = original_1.next(); !original_1_1.done; original_1_1 = original_1.next()) { + var v = original_1_1.value; + cloned.add(v); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (original_1_1 && !original_1_1.done && (_a = original_1.return)) _a.call(original_1); + } + finally { if (e_1) throw e_1.error; } + } + return cloned; + } + return new Set(); +} +exports.makeSet = makeSet; +function makeMap(original, overrides) { + var e_2, _a, e_3, _b, e_4, _c; + if (original === void 0) { original = null; } + if (overrides === void 0) { overrides = null; } + var cloned = new Map(); + if (original) { + try { + for (var original_2 = __values(original), original_2_1 = original_2.next(); !original_2_1.done; original_2_1 = original_2.next()) { + var _d = __read(original_2_1.value, 2), k = _d[0], v = _d[1]; + cloned.set(k, v); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (original_2_1 && !original_2_1.done && (_a = original_2.return)) _a.call(original_2); + } + finally { if (e_2) throw e_2.error; } + } + if (overrides) + try { + for (var overrides_1 = __values(overrides), overrides_1_1 = overrides_1.next(); !overrides_1_1.done; overrides_1_1 = overrides_1.next()) { + var _e = __read(overrides_1_1.value, 2), k = _e[0], v = _e[1]; + cloned.set(k, v); + } + } + catch (e_3_1) { e_3 = { error: e_3_1 }; } + finally { + try { + if (overrides_1_1 && !overrides_1_1.done && (_b = overrides_1.return)) _b.call(overrides_1); + } + finally { if (e_3) throw e_3.error; } + } + } + else if (overrides) { + try { + for (var overrides_2 = __values(overrides), overrides_2_1 = overrides_2.next(); !overrides_2_1.done; overrides_2_1 = overrides_2.next()) { + var _f = __read(overrides_2_1.value, 2), k = _f[0], v = _f[1]; + cloned.set(k, v); + } + } + catch (e_4_1) { e_4 = { error: e_4_1 }; } + finally { + try { + if (overrides_2_1 && !overrides_2_1.done && (_c = overrides_2.return)) _c.call(overrides_2); + } + finally { if (e_4) throw e_4.error; } + } + } + return cloned; +} +exports.makeMap = makeMap; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9jb2xsZWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBZ0IsU0FBUyxDQUFJLFFBQWdDO0lBQWhDLHlCQUFBLEVBQUEsZUFBZ0M7SUFDM0QsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLElBQUksS0FBSyxFQUFLLENBQUM7QUFDeEIsQ0FBQztBQVBELDhCQU9DO0FBRUQsU0FBZ0IsT0FBTyxDQUFJLFFBQThCOztJQUE5Qix5QkFBQSxFQUFBLGVBQThCO0lBQ3ZELElBQUksUUFBUSxFQUFFO1FBQ1osSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUssQ0FBQzs7WUFDMUIsS0FBYyxJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQWpCLElBQUksQ0FBQyxxQkFBQTtnQkFBYyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQUE7Ozs7Ozs7OztRQUN0QyxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQ0QsT0FBTyxJQUFJLEdBQUcsRUFBSyxDQUFDO0FBQ3RCLENBQUM7QUFQRCwwQkFPQztBQUVELFNBQWdCLE9BQU8sQ0FBTSxRQUFnQyxFQUFFLFNBQWlDOztJQUFuRSx5QkFBQSxFQUFBLGVBQWdDO0lBQUUsMEJBQUEsRUFBQSxnQkFBaUM7SUFDOUYsSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQU8sQ0FBQztJQUM1QixJQUFJLFFBQVEsRUFBRTs7WUFDWixLQUFtQixJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQWxCLElBQUEsa0NBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFBZSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUFBOzs7Ozs7Ozs7UUFDOUMsSUFBSSxTQUFTOztnQkFBRSxLQUFtQixJQUFBLGNBQUEsU0FBQSxTQUFTLENBQUEsb0NBQUE7b0JBQW5CLElBQUEsbUNBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztvQkFBZ0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQUE7Ozs7Ozs7O2FBQUE7S0FDL0Q7U0FBTSxJQUFJLFNBQVMsRUFBRTs7WUFDcEIsS0FBbUIsSUFBQSxjQUFBLFNBQUEsU0FBUyxDQUFBLG9DQUFBO2dCQUFuQixJQUFBLG1DQUFNLEVBQUwsU0FBQyxFQUFFLFNBQUM7Z0JBQWdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQUE7Ozs7Ozs7OztLQUNoRDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFURCwwQkFTQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBtYWtlQXJyYXk8Vj4ob3JpZ2luYWw6IEFycmF5PFY+IHwgbnVsbCA9IG51bGwpOiBBcnJheTxWPiB7XG4gIGlmIChvcmlnaW5hbCkge1xuICAgIGxldCBjbG9uZWQgPSBuZXcgQXJyYXk8Vj4ob3JpZ2luYWwubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMCwgayA9IG9yaWdpbmFsLmxlbmd0aDsgaSA8IGs7ICsraSkgdW5jaGVja2VkKGNsb25lZFtpXSA9IG9yaWdpbmFsW2ldKTtcbiAgICByZXR1cm4gY2xvbmVkO1xuICB9XG4gIHJldHVybiBuZXcgQXJyYXk8Vj4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VTZXQ8Vj4ob3JpZ2luYWw6IFNldDxWPiB8IG51bGwgPSBudWxsKTogU2V0PFY+IHtcbiAgaWYgKG9yaWdpbmFsKSB7XG4gICAgbGV0IGNsb25lZCA9IG5ldyBTZXQ8Vj4oKTtcbiAgICBmb3IgKGxldCB2IG9mIG9yaWdpbmFsKSBjbG9uZWQuYWRkKHYpO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cbiAgcmV0dXJuIG5ldyBTZXQ8Vj4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VNYXA8SyxWPihvcmlnaW5hbDogTWFwPEssVj4gfCBudWxsID0gbnVsbCwgb3ZlcnJpZGVzOiBNYXA8SyxWPiB8IG51bGwgPSBudWxsKTogTWFwPEssVj4ge1xuICB2YXIgY2xvbmVkID0gbmV3IE1hcDxLLFY+KCk7XG4gIGlmIChvcmlnaW5hbCkge1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiBvcmlnaW5hbCkgY2xvbmVkLnNldChrLCB2KTtcbiAgICBpZiAob3ZlcnJpZGVzKSBmb3IgKGxldCBbaywgdl0gb2Ygb3ZlcnJpZGVzKSBjbG9uZWQuc2V0KGssIHYpO1xuICB9IGVsc2UgaWYgKG92ZXJyaWRlcykge1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiBvdmVycmlkZXMpIGNsb25lZC5zZXQoaywgdik7XG4gIH1cbiAgcmV0dXJuIGNsb25lZDtcbn1cbiJdfQ== + +/***/ }), + +/***/ "../src/util/index.ts": +/*!****************************!*\ + !*** ../src/util/index.ts ***! + \****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Various compiler utilities. + * @module util + * @preferred + */ /***/ +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", { value: true }); +__export(__webpack_require__(/*! ./bitset */ "../src/util/bitset.ts")); +__export(__webpack_require__(/*! ./charcode */ "../src/util/charcode.ts")); +__export(__webpack_require__(/*! ./collections */ "../src/util/collections.ts")); +__export(__webpack_require__(/*! ./path */ "../src/util/path.ts")); +__export(__webpack_require__(/*! ./text */ "../src/util/text.ts")); +__export(__webpack_require__(/*! ./binary */ "../src/util/binary.ts")); +/** Tests if `x` is a power of two. */ +function isPowerOf2(x) { + return x != 0 && (x & (x - 1)) == 0; +} +exports.isPowerOf2 = isPowerOf2; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRyxDQUFBLEtBQUs7Ozs7O0FBRVIsOEJBQXlCO0FBQ3pCLGdDQUEyQjtBQUMzQixtQ0FBOEI7QUFDOUIsNEJBQXVCO0FBQ3ZCLDRCQUF1QjtBQUN2Qiw4QkFBeUI7QUFFekIsc0NBQXNDO0FBQ3RDLFNBQWdCLFVBQVUsQ0FBQyxDQUFNO0lBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsZ0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZhcmlvdXMgY29tcGlsZXIgdXRpbGl0aWVzLlxuICogQG1vZHVsZSB1dGlsXG4gKiBAcHJlZmVycmVkXG4gKi8vKioqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9iaXRzZXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NoYXJjb2RlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb2xsZWN0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGF0aFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmluYXJ5XCI7XG5cbi8qKiBUZXN0cyBpZiBgeGAgaXMgYSBwb3dlciBvZiB0d28uICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb3dlck9mMih4OiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIHggIT0gMCAmJiAoeCAmICh4IC0gMSkpID09IDA7XG59XG4iXX0= + +/***/ }), + +/***/ "../src/util/path.ts": +/*!***************************!*\ + !*** ../src/util/path.ts ***! + \***************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** @module util */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +var common_1 = __webpack_require__(/*! ../common */ "../src/common.ts"); +var separator = 47 /* SLASH */; +/** + * Normalizes the specified path, removing interior placeholders. + * Expects a posix-compatible relative path (not Windows compatible). + */ +function normalizePath(path) { + var pos = 0; + var len = path.length; + // trim leading './' + while (pos + 1 < len && + path.charCodeAt(pos) == 46 /* DOT */ && + path.charCodeAt(pos + 1) == separator) { + pos += 2; + } + if (pos > 0 || len < path.length) { + path = path.substring(pos, len); + len -= pos; + pos = 0; + } + var atEnd; + while (pos + 1 < len) { + atEnd = false; + // we are only interested in '/.' sequences ... + if (path.charCodeAt(pos) == separator && + path.charCodeAt(pos + 1) == 46 /* DOT */) { + // '/.' ( '/' | $ ) + atEnd = pos + 2 == len; + if (atEnd || + pos + 2 < len && + path.charCodeAt(pos + 2) == separator) { + path = atEnd + ? path.substring(0, pos) + : path.substring(0, pos) + path.substring(pos + 2); + len -= 2; + continue; + } + // '/.' ( './' | '.' $ ) + atEnd = pos + 3 == len; + if (atEnd && path.charCodeAt(pos + 2) == 46 /* DOT */ || + pos + 3 < len && + path.charCodeAt(pos + 2) == 46 /* DOT */ && + path.charCodeAt(pos + 3) == separator) { + // find preceeding '/' + var ipos = pos; + while (--ipos >= 0) { + if (path.charCodeAt(ipos) == separator) { + if (pos - ipos != 3 || + path.charCodeAt(ipos + 1) != 46 /* DOT */ || + path.charCodeAt(ipos + 2) != 46 /* DOT */) { // exclude '..' itself + path = atEnd + ? path.substring(0, ipos) + : path.substring(0, ipos) + path.substring(pos + 3); + len -= pos + 3 - ipos; + pos = ipos - 1; // incremented again at end of loop + } + break; + } + } + // if there's no preceeding '/', trim start if non-empty + if (ipos < 0 && pos > 0) { + if (pos != 2 || + path.charCodeAt(0) != 46 /* DOT */ || + path.charCodeAt(1) != 46 /* DOT */) { // exclude '..' itself + path = path.substring(pos + 4); + len = path.length; + continue; + } + } + } + } + pos++; + } + return len > 0 ? path : "."; +} +exports.normalizePath = normalizePath; +/** Resolves the specified path relative to the specified origin. */ +function resolvePath(normalizedPath, origin) { + if (normalizedPath.startsWith("std/")) { + return normalizedPath; + } + return normalizePath(dirname(origin) + common_1.PATH_DELIMITER + normalizedPath); +} +exports.resolvePath = resolvePath; +/** Obtains the directory portion of a normalized path. */ +function dirname(normalizedPath) { + var pos = normalizedPath.length; + if (pos <= 1) { + if (pos == 0) + return "."; + if (normalizedPath.charCodeAt(0) == separator) { + return normalizedPath; + } + } + while (--pos > 0) { + if (normalizedPath.charCodeAt(pos) == separator) { + return normalizedPath.substring(0, pos); + } + } + return "."; +} +exports.dirname = dirname; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQixDQUFBLEtBQUs7O0FBTXhCLG9DQUVtQjtBQUVuQixJQUFNLFNBQVMsaUJBQWlCLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLElBQVk7SUFDeEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUV0QixvQkFBb0I7SUFDcEIsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsRUFDckM7UUFDQSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ1Y7SUFFRCxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDaEMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDWCxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQ1Q7SUFFRCxJQUFJLEtBQVcsQ0FBQztJQUNoQixPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFO1FBQ3BCLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFZCwrQ0FBK0M7UUFDL0MsSUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUN4QztZQUNBLG1CQUFtQjtZQUNuQixLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMs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QUM7S0FDdkI7SUFDRCxPQUFPLGFBQWEsQ0FDbEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLHVCQUFjLEdBQUcsY0FBYyxDQUNsRCxDQUFDO0FBQ0osQ0FBQztBQVBELGtDQU9DO0FBRUQsMERBQTBEO0FBQzFELFNBQWdCLE9BQU8sQ0FBQyxjQUFzQjtJQUM1QyxJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtRQUNaLElBQUksR0FBRyxJQUFJLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUN6QixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQzdDLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO0tBQ0Y7SUFDRCxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRTtRQUNoQixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQy9DLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDekM7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQWRELDBCQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgdXRpbCAqLy8qKiovXG5cbmltcG9ydCB7XG4gIENoYXJDb2RlXG59IGZyb20gXCIuL2NoYXJjb2RlXCI7XG5cbmltcG9ydCB7XG4gIFBBVEhfREVMSU1JVEVSXG59IGZyb20gXCIuLi9jb21tb25cIjtcblxuY29uc3Qgc2VwYXJhdG9yID0gQ2hhckNvZGUuU0xBU0g7XG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgc3BlY2lmaWVkIHBhdGgsIHJlbW92aW5nIGludGVyaW9yIHBsYWNlaG9sZGVycy5cbiAqIEV4cGVjdHMgYSBwb3NpeC1jb21wYXRpYmxlIHJlbGF0aXZlIHBhdGggKG5vdCBXaW5kb3dzIGNvbXBhdGlibGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcG9zID0gMDtcbiAgdmFyIGxlbiA9IHBhdGgubGVuZ3RoO1xuXG4gIC8vIHRyaW0gbGVhZGluZyAnLi8nXG4gIHdoaWxlIChwb3MgKyAxIDwgbGVuICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gQ2hhckNvZGUuRE9UICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDEpID09IHNlcGFyYXRvclxuICApIHtcbiAgICBwb3MgKz0gMjtcbiAgfVxuXG4gIGlmIChwb3MgPiAwIHx8IGxlbiA8IHBhdGgubGVuZ3RoKSB7XG4gICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBvcywgbGVuKTtcbiAgICBsZW4gLT0gcG9zO1xuICAgIHBvcyA9IDA7XG4gIH1cblxuICB2YXIgYXRFbmQ6IGJvb2w7XG4gIHdoaWxlIChwb3MgKyAxIDwgbGVuKSB7XG4gICAgYXRFbmQgPSBmYWxzZTtcblxuICAgIC8vIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gJy8uJyBzZXF1ZW5jZXMgLi4uXG4gICAgaWYgKFxuICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gc2VwYXJhdG9yICYmXG4gICAgICBwYXRoLmNoYXJDb2RlQXQocG9zICsgMSkgPT0gQ2hhckNvZGUuRE9UXG4gICAgKSB7XG4gICAgICAvLyAnLy4nICggJy8nIHwgJCApXG4gICAgICBhdEVuZCA9IHBvcyArIDIgPT0gbGVuO1xuICAgICAgaWYgKGF0RW5kIHx8XG4gICAgICAgIHBvcyArIDIgPCBsZW4gJiZcbiAgICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDIpID09IHNlcGFyYXRvclxuICAgICAgKSB7XG4gICAgICAgIHBhdGggPSBhdEVuZFxuICAgICAgICAgID8gcGF0aC5zdWJzdHJpbmcoMCwgcG9zKVxuICAgICAgICAgIDogcGF0aC5zdWJzdHJpbmcoMCwgcG9zKSArIHBhdGguc3Vic3RyaW5nKHBvcyArIDIpO1xuICAgICAgICBsZW4gLT0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vICcvLicgKCAnLi8nIHwgJy4nICQgKVxuICAgICAgYXRFbmQgPSBwb3MgKyAzID09IGxlbjtcbiAgICAgIGlmIChhdEVuZCAmJiBwYXRoLmNoYXJDb2RlQXQocG9zICsgMikgPT0gQ2hhckNvZGUuRE9UIHx8XG4gICAgICAgIHBvcyArIDMgPCBsZW4gJiZcbiAgICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDIpID09IENoYXJDb2RlLkRPVCAmJlxuICAgICAgICBwYXRoLmNoYXJDb2RlQXQocG9zICsgMykgPT0gc2VwYXJhdG9yXG4gICAgICApIHtcbiAgICAgICAgLy8gZmluZCBwcmVjZWVkaW5nICcvJ1xuICAgICAgICBsZXQgaXBvcyA9IHBvcztcbiAgICAgICAgd2hpbGUgKC0taXBvcyA+PSAwKSB7XG4gICAgICAgICAgaWYgKHBhdGguY2hhckNvZGVBdChpcG9zKSA9PSBzZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGlmIChwb3MgLSBpcG9zICE9IDMgfHxcbiAgICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KGlwb3MgKyAxKSAhPSBDaGFyQ29kZS5ET1QgfHxcbiAgICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KGlwb3MgKyAyKSAhPSBDaGFyQ29kZS5ET1RcbiAgICAgICAgICAgICkgeyAvLyBleGNsdWRlICcuLicgaXRzZWxmXG4gICAgICAgICAgICAgIHBhdGggPSBhdEVuZFxuICAgICAgICAgICAgICAgID8gcGF0aC5zdWJzdHJpbmcoMCwgaXBvcylcbiAgICAgICAgICAgICAgICA6IHBhdGguc3Vic3RyaW5nKDAsIGlwb3MpICsgcGF0aC5zdWJzdHJpbmcocG9zICsgMyk7XG4gICAgICAgICAgICAgIGxlbiAtPSBwb3MgKyAzIC0gaXBvcztcbiAgICAgICAgICAgICAgcG9zID0gaXBvcyAtIDE7IC8vIGluY3JlbWVudGVkIGFnYWluIGF0IGVuZCBvZiBsb29wXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGVyZSdzIG5vIHByZWNlZWRpbmcgJy8nLCB0cmltIHN0YXJ0IGlmIG5vbi1lbXB0eVxuICAgICAgICBpZiAoaXBvcyA8IDAgJiYgcG9zID4gMCkge1xuICAgICAgICAgIGlmIChwb3MgIT0gMiB8fFxuICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KDApICE9IENoYXJDb2RlLkRPVCB8fFxuICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KDEpICE9IENoYXJDb2RlLkRPVFxuICAgICAgICAgICkgeyAvLyBleGNsdWRlICcuLicgaXRzZWxmXG4gICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocG9zICsgNCk7XG4gICAgICAgICAgICBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBwb3MrKztcbiAgfVxuICByZXR1cm4gbGVuID4gMCA/IHBhdGggOiBcIi5cIjtcbn1cblxuLyoqIFJlc29sdmVzIHRoZSBzcGVjaWZpZWQgcGF0aCByZWxhdGl2ZSB0byB0aGUgc3BlY2lmaWVkIG9yaWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGF0aChub3JtYWxpemVkUGF0aDogc3RyaW5nLCBvcmlnaW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKFwic3RkL1wiKSkge1xuICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplUGF0aChcbiAgICBkaXJuYW1lKG9yaWdpbikgKyBQQVRIX0RFTElNSVRFUiArIG5vcm1hbGl6ZWRQYXRoXG4gICk7XG59XG5cbi8qKiBPYnRhaW5zIHRoZSBkaXJlY3RvcnkgcG9ydGlvbiBvZiBhIG5vcm1hbGl6ZWQgcGF0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcG9zID0gbm9ybWFsaXplZFBhdGgubGVuZ3RoO1xuICBpZiAocG9zIDw9IDEpIHtcbiAgICBpZiAocG9zID09IDApIHJldHVybiBcIi5cIjtcbiAgICBpZiAobm9ybWFsaXplZFBhdGguY2hhckNvZGVBdCgwKSA9PSBzZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKC0tcG9zID4gMCkge1xuICAgIGlmIChub3JtYWxpemVkUGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gc2VwYXJhdG9yKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplZFBhdGguc3Vic3RyaW5nKDAsIHBvcyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBcIi5cIjtcbn1cbiJdfQ== + +/***/ }), + +/***/ "../src/util/text.ts": +/*!***************************!*\ + !*** ../src/util/text.ts ***! + \***************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** @module util */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +var indentX1 = " "; +var indentX2 = " "; +var indentX4 = " "; +/** Creates an indentation matching the number of specified levels. */ +function indent(sb, level) { + while (level >= 4) { + sb.push(indentX4); + level -= 4; + } + if (level >= 2) { + sb.push(indentX2); + level -= 2; + } + if (level) { + sb.push(indentX1); + } +} +exports.indent = indent; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3RleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQixDQUFBLEtBQUs7O0FBRXhCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QixJQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFDeEIsSUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBRTVCLHNFQUFzRTtBQUN0RSxTQUFnQixNQUFNLENBQUMsRUFBWSxFQUFFLEtBQVU7SUFDN0MsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2pCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEIsS0FBSyxJQUFJLENBQUMsQ0FBQztLQUNaO0lBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2QsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQixLQUFLLElBQUksQ0FBQyxDQUFDO0tBQ1o7SUFDRCxJQUFJLEtBQUssRUFBRTtRQUNULEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbkI7QUFDSCxDQUFDO0FBWkQsd0JBWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuY29uc3QgaW5kZW50WDEgPSBcIiAgXCI7XG5jb25zdCBpbmRlbnRYMiA9IFwiICAgIFwiO1xuY29uc3QgaW5kZW50WDQgPSBcIiAgICAgICAgXCI7XG5cbi8qKiBDcmVhdGVzIGFuIGluZGVudGF0aW9uIG1hdGNoaW5nIHRoZSBudW1iZXIgb2Ygc3BlY2lmaWVkIGxldmVscy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRlbnQoc2I6IHN0cmluZ1tdLCBsZXZlbDogaTMyKTogdm9pZCB7XG4gIHdoaWxlIChsZXZlbCA+PSA0KSB7XG4gICAgc2IucHVzaChpbmRlbnRYNCk7XG4gICAgbGV2ZWwgLT0gNDtcbiAgfVxuICBpZiAobGV2ZWwgPj0gMikge1xuICAgIHNiLnB1c2goaW5kZW50WDIpO1xuICAgIGxldmVsIC09IDI7XG4gIH1cbiAgaWYgKGxldmVsKSB7XG4gICAgc2IucHVzaChpbmRlbnRYMSk7XG4gIH1cbn1cbiJdfQ== + +/***/ }), + +/***/ "../std/assembly/shared/feature.ts": +/*!*****************************************!*\ + !*** ../std/assembly/shared/feature.ts ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// This file is shared with the compiler and must remain portable +Object.defineProperty(exports, "__esModule", { value: true }); +/** Indicates specific features to activate. */ +var Feature; +(function (Feature) { + /** No additional features. */ + Feature[Feature["NONE"] = 0] = "NONE"; + /** Sign extension operations. */ + Feature[Feature["SIGN_EXTENSION"] = 1] = "SIGN_EXTENSION"; + /** Mutable global imports and exports. */ + Feature[Feature["MUTABLE_GLOBAL"] = 2] = "MUTABLE_GLOBAL"; + /** Bulk memory operations. */ + Feature[Feature["BULK_MEMORY"] = 4] = "BULK_MEMORY"; + /** SIMD types and operations. */ + Feature[Feature["SIMD"] = 8] = "SIMD"; + /** Threading and atomic operations. */ + Feature[Feature["THREADS"] = 16] = "THREADS"; // see: https://github.com/WebAssembly/threads +})(Feature = exports.Feature || (exports.Feature = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3N0ZC9hc3NlbWJseS9zaGFyZWQvZmVhdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUVBQWlFOztBQUVqRSwrQ0FBK0M7QUFDL0MsSUFBa0IsT0FhakI7QUFiRCxXQUFrQixPQUFPO0lBQ3ZCLDhCQUE4QjtJQUM5QixxQ0FBUSxDQUFBO0lBQ1IsaUNBQWlDO0lBQ2pDLHlEQUF1QixDQUFBO0lBQ3ZCLDBDQUEwQztJQUMxQyx5REFBdUIsQ0FBQTtJQUN2Qiw4QkFBOEI7SUFDOUIsbURBQW9CLENBQUE7SUFDcEIsaUNBQWlDO0lBQ2pDLHFDQUFhLENBQUE7SUFDYix1Q0FBdUM7SUFDdkMsNENBQWdCLENBQUEsQ0FBQyw4Q0FBOEM7QUFDakUsQ0FBQyxFQWJpQixPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFheEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgc2hhcmVkIHdpdGggdGhlIGNvbXBpbGVyIGFuZCBtdXN0IHJlbWFpbiBwb3J0YWJsZVxuXG4vKiogSW5kaWNhdGVzIHNwZWNpZmljIGZlYXR1cmVzIHRvIGFjdGl2YXRlLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gRmVhdHVyZSB7XG4gIC8qKiBObyBhZGRpdGlvbmFsIGZlYXR1cmVzLiAqL1xuICBOT05FID0gMCxcbiAgLyoqIFNpZ24gZXh0ZW5zaW9uIG9wZXJhdGlvbnMuICovXG4gIFNJR05fRVhURU5TSU9OID0gMSA8PCAwLCAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9zaWduLWV4dGVuc2lvbi1vcHNcbiAgLyoqIE11dGFibGUgZ2xvYmFsIGltcG9ydHMgYW5kIGV4cG9ydHMuICovXG4gIE1VVEFCTEVfR0xPQkFMID0gMSA8PCAxLCAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9tdXRhYmxlLWdsb2JhbFxuICAvKiogQnVsayBtZW1vcnkgb3BlcmF0aW9ucy4gKi9cbiAgQlVMS19NRU1PUlkgPSAxIDw8IDIsIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2J1bGstbWVtb3J5LW9wZXJhdGlvbnNcbiAgLyoqIFNJTUQgdHlwZXMgYW5kIG9wZXJhdGlvbnMuICovXG4gIFNJTUQgPSAxIDw8IDMsIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L3NpbWRcbiAgLyoqIFRocmVhZGluZyBhbmQgYXRvbWljIG9wZXJhdGlvbnMuICovXG4gIFRIUkVBRFMgPSAxIDw8IDQgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvdGhyZWFkc1xufVxuIl19 + +/***/ }), + +/***/ "../std/assembly/shared/target.ts": +/*!****************************************!*\ + !*** ../std/assembly/shared/target.ts ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// This file is shared with the compiler and must remain portable +Object.defineProperty(exports, "__esModule", { value: true }); +/** Compilation target. */ +var Target; +(function (Target) { + /** WebAssembly with 32-bit pointers. */ + Target[Target["WASM32"] = 0] = "WASM32"; + /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */ + Target[Target["WASM64"] = 1] = "WASM64"; + /** Portable. */ + Target[Target["JS"] = 2] = "JS"; +})(Target = exports.Target || (exports.Target = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3RkL2Fzc2VtYmx5L3NoYXJlZC90YXJnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlFQUFpRTs7QUFFakUsMEJBQTBCO0FBQzFCLElBQVksTUFPWDtBQVBELFdBQVksTUFBTTtJQUNoQix3Q0FBd0M7SUFDeEMsdUNBQU0sQ0FBQTtJQUNOLDJGQUEyRjtJQUMzRix1Q0FBTSxDQUFBO0lBQ04sZ0JBQWdCO0lBQ2hCLCtCQUFFLENBQUE7QUFDSixDQUFDLEVBUFcsTUFBTSxHQUFOLGNBQU0sS0FBTixjQUFNLFFBT2pCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIHNoYXJlZCB3aXRoIHRoZSBjb21waWxlciBhbmQgbXVzdCByZW1haW4gcG9ydGFibGVcblxuLyoqIENvbXBpbGF0aW9uIHRhcmdldC4gKi9cbmV4cG9ydCBlbnVtIFRhcmdldCB7XG4gIC8qKiBXZWJBc3NlbWJseSB3aXRoIDMyLWJpdCBwb2ludGVycy4gKi9cbiAgV0FTTTMyLFxuICAvKiogV2ViQXNzZW1ibHkgd2l0aCA2NC1iaXQgcG9pbnRlcnMuIEV4cGVyaW1lbnRhbCBhbmQgbm90IHN1cHBvcnRlZCBieSBhbnkgcnVudGltZSB5ZXQuICovXG4gIFdBU002NCxcbiAgLyoqIFBvcnRhYmxlLiAqL1xuICBKU1xufVxuIl19 + +/***/ }), + +/***/ "../std/assembly/shared/typeinfo.ts": +/*!******************************************!*\ + !*** ../std/assembly/shared/typeinfo.ts ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// This file is shared with the compiler and must remain portable +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕ +// 3 2 1 +// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits +// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base +// │ count │ +// ╞═══════════════════════════════════════════════════════════════╡ ┐ +// │ Typeinfo#flags [id=0] │ id < count +// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ +// │ Typeinfo#base [id=0] │ +// ├───────────────────────────────────────────────────────────────┤ +// │ ... │ +/** Runtime type information data structure. */ +var Typeinfo = /** @class */ (function () { + function Typeinfo() { + } + Typeinfo = __decorate([ + (()=>{}) + ], Typeinfo); + return Typeinfo; +}()); +exports.Typeinfo = Typeinfo; +/** Runtime type information flags. */ +var TypeinfoFlags; +(function (TypeinfoFlags) { + /** No specific flags. */ + TypeinfoFlags[TypeinfoFlags["NONE"] = 0] = "NONE"; + /** Type is an `ArrayBufferView`. */ + TypeinfoFlags[TypeinfoFlags["ARRAYBUFFERVIEW"] = 1] = "ARRAYBUFFERVIEW"; + /** Type is an `Array`. */ + TypeinfoFlags[TypeinfoFlags["ARRAY"] = 2] = "ARRAY"; + /** Type is a `Set`. */ + TypeinfoFlags[TypeinfoFlags["SET"] = 4] = "SET"; + /** Type is a `Map`. */ + TypeinfoFlags[TypeinfoFlags["MAP"] = 8] = "MAP"; + /** Type is inherently acyclic. */ + TypeinfoFlags[TypeinfoFlags["ACYCLIC"] = 16] = "ACYCLIC"; + /** Value alignment of 1 byte. */ + TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_0"] = 32] = "VALUE_ALIGN_0"; + /** Value alignment of 2 bytes. */ + TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_1"] = 64] = "VALUE_ALIGN_1"; + /** Value alignment of 4 bytes. */ + TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_2"] = 128] = "VALUE_ALIGN_2"; + /** Value alignment of 8 bytes. */ + TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_3"] = 256] = "VALUE_ALIGN_3"; + /** Value alignment of 16 bytes. */ + TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_4"] = 512] = "VALUE_ALIGN_4"; + /** Value is a signed type. */ + TypeinfoFlags[TypeinfoFlags["VALUE_SIGNED"] = 1024] = "VALUE_SIGNED"; + /** Value is a float type. */ + TypeinfoFlags[TypeinfoFlags["VALUE_FLOAT"] = 2048] = "VALUE_FLOAT"; + /** Value type is nullable. */ + TypeinfoFlags[TypeinfoFlags["VALUE_NULLABLE"] = 4096] = "VALUE_NULLABLE"; + /** Value type is managed. */ + TypeinfoFlags[TypeinfoFlags["VALUE_MANAGED"] = 8192] = "VALUE_MANAGED"; + /** Key alignment of 1 byte. */ + TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_0"] = 16384] = "KEY_ALIGN_0"; + /** Key alignment of 2 bytes. */ + TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_1"] = 32768] = "KEY_ALIGN_1"; + /** Key alignment of 4 bytes. */ + TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_2"] = 65536] = "KEY_ALIGN_2"; + /** Key alignment of 8 bytes. */ + TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_3"] = 131072] = "KEY_ALIGN_3"; + /** Key alignment of 16 bytes. */ + TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_4"] = 262144] = "KEY_ALIGN_4"; + /** Key is a signed type. */ + TypeinfoFlags[TypeinfoFlags["KEY_SIGNED"] = 524288] = "KEY_SIGNED"; + /** Key is a float type. */ + TypeinfoFlags[TypeinfoFlags["KEY_FLOAT"] = 1048576] = "KEY_FLOAT"; + /** Key type is nullable. */ + TypeinfoFlags[TypeinfoFlags["KEY_NULLABLE"] = 2097152] = "KEY_NULLABLE"; + /** Key type is managed. */ + TypeinfoFlags[TypeinfoFlags["KEY_MANAGED"] = 4194304] = "KEY_MANAGED"; +})(TypeinfoFlags = exports.TypeinfoFlags || (exports.TypeinfoFlags = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zdGQvYXNzZW1ibHkvc2hhcmVkL3R5cGVpbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpRUFBaUU7Ozs7Ozs7O0FBRWpFLG9FQUFvRTtBQUNwRSwrQ0FBK0M7QUFDL0MseUVBQXlFO0FBQ3pFLG1GQUFtRjtBQUNuRixvRUFBb0U7QUFDcEUsc0VBQXNFO0FBQ3RFLCtFQUErRTtBQUMvRSxvRUFBb0U7QUFDcEUsb0VBQW9FO0FBQ3BFLG9FQUFvRTtBQUNwRSxvRUFBb0U7QUFFcEUsK0NBQStDO0FBRS9DO0lBQUE7SUFLQSxDQUFDO0lBTFksUUFBUTtRQURwQixTQUFTO09BQ0csUUFBUSxDQUtwQjtJQUFELGVBQUM7Q0FBQSxBQUxELElBS0M7QUFMWSw0QkFBUTtBQU9yQixzQ0FBc0M7QUFDdEMsSUFBa0IsYUFpRGpCO0FBakRELFdBQWtCLGFBQWE7SUFDN0IseUJBQXlCO0lBQ3pCLGlEQUFRLENBQUE7SUFDUixvQ0FBb0M7SUFDcEMsdUVBQXdCLENBQUE7SUFDeEIsMEJBQTBCO0lBQzFCLG1EQUFjLENBQUE7SUFDZCx1QkFBdUI7SUFDdkIsK0NBQVksQ0FBQTtJQUNaLHVCQUF1QjtJQUN2QiwrQ0FBWSxDQUFBO0lBQ1osa0NBQWtDO0lBQ2xDLHdEQUFnQixDQUFBO0lBQ2hCLGlDQUFpQztJQUNqQyxvRUFBc0IsQ0FBQTtJQUN0QixrQ0FBa0M7SUFDbEMsb0VBQXNCLENBQUE7SUFDdEIsa0NBQWtDO0lBQ2xDLHFFQUFzQixDQUFBO0lBQ3RCLGtDQUFrQztJQUNsQyxxRUFBc0IsQ0FBQTtJQUN0QixtQ0FBbUM7SUFDbkMscUVBQXNCLENBQUE7SUFDdEIsOEJBQThCO0lBQzlCLG9FQUFzQixDQUFBO0lBQ3RCLDZCQUE2QjtJQUM3QixrRUFBcUIsQ0FBQTtJQUNyQiw4QkFBOEI7SUFDOUIsd0VBQXdCLENBQUE7SUFDeEIsNkJBQTZCO0lBQzdCLHNFQUF1QixDQUFBO0lBQ3ZCLCtCQUErQjtJQUMvQixtRUFBcUIsQ0FBQTtJQUNyQixnQ0FBZ0M7SUFDaEMsbUVBQXFCLENBQUE7SUFDckIsZ0NBQWdDO0lBQ2hDLG1FQUFxQixDQUFBO0lBQ3JCLGdDQUFnQztJQUNoQyxvRUFBcUIsQ0FBQTtJQUNyQixpQ0FBaUM7SUFDakMsb0VBQXFCLENBQUE7SUFDckIsNEJBQTRCO0lBQzVCLGtFQUFvQixDQUFBO0lBQ3BCLDJCQUEyQjtJQUMzQixpRUFBbUIsQ0FBQTtJQUNuQiw0QkFBNEI7SUFDNUIsdUVBQXNCLENBQUE7SUFDdEIsMkJBQTJCO0lBQzNCLHFFQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFqRGlCLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBaUQ5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBzaGFyZWQgd2l0aCB0aGUgY29tcGlsZXIgYW5kIG11c3QgcmVtYWluIHBvcnRhYmxlXG5cbi8vIOKVkuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCBUeXBlaW5mbyBpbnRlcnByZXRhdGlvbiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZVcbi8vICAgIDMgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAxXG4vLyAgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwICBiaXRzXG4vLyDilJzilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilKQg4peE4pSAIF9fcnR0aV9iYXNlXG4vLyDilIIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIJcbi8vIOKVnuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoSDilJBcbi8vIOKUgiAgICAgICAgICAgICAgICAgICAgICBUeXBlaW5mbyNmbGFncyBbaWQ9MF0gICAgICAgICAgICAgICAgICAgIOKUgiBpZCA8IGNvdW50XG4vLyDilJwg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUpFxuLy8g4pSCICAgICAgICAgICAgICAgICAgICAgIFR5cGVpbmZvI2Jhc2UgIFtpZD0wXSAgICAgICAgICAgICAgICAgICAg4pSCXG4vLyDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbi8vIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUglxuXG4vKiogUnVudGltZSB0eXBlIGluZm9ybWF0aW9uIGRhdGEgc3RydWN0dXJlLiAqL1xuQHVubWFuYWdlZFxuZXhwb3J0IGNsYXNzIFR5cGVpbmZvIHtcbiAgLyoqIEZsYWdzIGRlc2NyaWJpbmcgdGhlIHNoYXBlIG9mIHRoaXMgY2xhc3MgdHlwZS4gKi9cbiAgZmxhZ3M6IFR5cGVpbmZvRmxhZ3M7XG4gIC8qKiBCYXNlIGNsYXNzIGlkIG9yIGAwYCBpZiBub25lLiAqL1xuICBiYXNlOiB1MzI7XG59XG5cbi8qKiBSdW50aW1lIHR5cGUgaW5mb3JtYXRpb24gZmxhZ3MuICovXG5leHBvcnQgY29uc3QgZW51bSBUeXBlaW5mb0ZsYWdzIHtcbiAgLyoqIE5vIHNwZWNpZmljIGZsYWdzLiAqL1xuICBOT05FID0gMCxcbiAgLyoqIFR5cGUgaXMgYW4gYEFycmF5QnVmZmVyVmlld2AuICovXG4gIEFSUkFZQlVGRkVSVklFVyA9IDEgPDwgMCxcbiAgLyoqIFR5cGUgaXMgYW4gYEFycmF5YC4gKi9cbiAgQVJSQVkgPSAxIDw8IDEsXG4gIC8qKiBUeXBlIGlzIGEgYFNldGAuICovXG4gIFNFVCA9IDEgPDwgMixcbiAgLyoqIFR5cGUgaXMgYSBgTWFwYC4gKi9cbiAgTUFQID0gMSA8PCAzLFxuICAvKiogVHlwZSBpcyBpbmhlcmVudGx5IGFjeWNsaWMuICovXG4gIEFDWUNMSUMgPSAxIDw8IDQsXG4gIC8qKiBWYWx1ZSBhbGlnbm1lbnQgb2YgMSBieXRlLiAqL1xuICBWQUxVRV9BTElHTl8wID0gMSA8PCA1LFxuICAvKiogVmFsdWUgYWxpZ25tZW50IG9mIDIgYnl0ZXMuICovXG4gIFZBTFVFX0FMSUdOXzEgPSAxIDw8IDYsXG4gIC8qKiBWYWx1ZSBhbGlnbm1lbnQgb2YgNCBieXRlcy4gKi9cbiAgVkFMVUVfQUxJR05fMiA9IDEgPDwgNyxcbiAgLyoqIFZhbHVlIGFsaWdubWVudCBvZiA4IGJ5dGVzLiAqL1xuICBWQUxVRV9BTElHTl8zID0gMSA8PCA4LFxuICAvKiogVmFsdWUgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAqL1xuICBWQUxVRV9BTElHTl80ID0gMSA8PCA5LFxuICAvKiogVmFsdWUgaXMgYSBzaWduZWQgdHlwZS4gKi9cbiAgVkFMVUVfU0lHTkVEID0gMSA8PCAxMCxcbiAgLyoqIFZhbHVlIGlzIGEgZmxvYXQgdHlwZS4gKi9cbiAgVkFMVUVfRkxPQVQgPSAxIDw8IDExLFxuICAvKiogVmFsdWUgdHlwZSBpcyBudWxsYWJsZS4gKi9cbiAgVkFMVUVfTlVMTEFCTEUgPSAxIDw8IDEyLFxuICAvKiogVmFsdWUgdHlwZSBpcyBtYW5hZ2VkLiAqL1xuICBWQUxVRV9NQU5BR0VEID0gMSA8PCAxMyxcbiAgLyoqIEtleSBhbGlnbm1lbnQgb2YgMSBieXRlLiAqL1xuICBLRVlfQUxJR05fMCA9IDEgPDwgMTQsXG4gIC8qKiBLZXkgYWxpZ25tZW50IG9mIDIgYnl0ZXMuICovXG4gIEtFWV9BTElHTl8xID0gMSA8PCAxNSxcbiAgLyoqIEtleSBhbGlnbm1lbnQgb2YgNCBieXRlcy4gKi9cbiAgS0VZX0FMSUdOXzIgPSAxIDw8IDE2LFxuICAvKiogS2V5IGFsaWdubWVudCBvZiA4IGJ5dGVzLiAqL1xuICBLRVlfQUxJR05fMyA9IDEgPDwgMTcsXG4gIC8qKiBLZXkgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAqL1xuICBLRVlfQUxJR05fNCA9IDEgPDwgMTgsXG4gIC8qKiBLZXkgaXMgYSBzaWduZWQgdHlwZS4gKi9cbiAgS0VZX1NJR05FRCA9IDEgPDwgMTksXG4gIC8qKiBLZXkgaXMgYSBmbG9hdCB0eXBlLiAqL1xuICBLRVlfRkxPQVQgPSAxIDw8IDIwLFxuICAvKiogS2V5IHR5cGUgaXMgbnVsbGFibGUuICovXG4gIEtFWV9OVUxMQUJMRSA9IDEgPDwgMjEsXG4gIC8qKiBLZXkgdHlwZSBpcyBtYW5hZ2VkLiAqL1xuICBLRVlfTUFOQUdFRCA9IDEgPDwgMjJcbn1cbiJdfQ== + +/***/ }), + +/***/ "../std/portable/index.js": +/*!********************************!*\ + !*** ../std/portable/index.js ***! + \********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {/** @module std/portable *//***/ + +var globalScope = typeof window !== "undefined" && window || typeof global !== "undefined" && global || self; + +globalScope.ASC_TARGET = 2; // Target.JS +globalScope.ASC_NO_ASSERT = false; +globalScope.ASC_MEMORY_BASE = 0; +globalScope.ASC_OPTIMIZE_LEVEL = 3; +globalScope.ASC_SHRINK_LEVEL = 0; +globalScope.ASC_FEATURE_MUTABLE_GLOBAL = false; +globalScope.ASC_FEATURE_SIGN_EXTENSION = false; +globalScope.ASC_FEATURE_BULK_MEMORY = false; +globalScope.ASC_FEATURE_SIMD = false; +globalScope.ASC_FEATURE_THREADS = false; + +var F64 = new Float64Array(1); +var U64 = new Uint32Array(F64.buffer); + +Object.defineProperties( + globalScope["i8"] = function i8(value) { return value << 24 >> 24; } +, { + "MIN_VALUE": { value: -128, writable: false }, + "MAX_VALUE": { value: 127, writable: false } +}); + +Object.defineProperties( + globalScope["i16"] = function i16(value) { return value << 16 >> 16; } +, { + "MIN_VALUE": { value: -32768, writable: false }, + "MAX_VALUE": { value: 32767, writable: false } +}); + +Object.defineProperties( + globalScope["i32"] = globalScope["isize"] = function i32(value) { return value | 0; } +, { + "MIN_VALUE": { value: -2147483648, writable: false }, + "MAX_VALUE": { value: 2147483647, writable: false } +}); + +Object.defineProperties( + globalScope["u8"] = function u8(value) { return value & 0xff; } +, { + "MIN_VALUE": { value: 0, writable: false }, + "MAX_VALUE": { value: 255, writable: false } +}); + +Object.defineProperties( + globalScope["u16"] = function u16(value) { return value & 0xffff; } +, { + "MIN_VALUE": { value: 0, writable: false }, + "MAX_VALUE": { value: 65535, writable: false } +}); + +Object.defineProperties( + globalScope["u32"] = globalScope["usize"] = function u32(value) { return value >>> 0; } +, { + "MIN_VALUE": { value: 0, writable: false }, + "MAX_VALUE": { value: 4294967295, writable: false } +}); + +Object.defineProperties( + globalScope["bool"] = function bool(value) { return !!value; } +, { + "MIN_VALUE": { value: false, writable: false }, + "MAX_VALUE": { value: true, writable: false } +}); + +Object.defineProperties( + globalScope["f32"] = function f32(value) { return Math.fround(value); } +, { + "EPSILON": { value: Math.fround(1.1920929e-07), writable: false }, + "MIN_VALUE": { value: Math.fround(1.4012985e-45), writable: false }, + "MAX_VALUE": { value: Math.fround(3.4028235e+38), writable: false }, + "MIN_NORMAL_VALUE": { value: Math.fround(1.17549435e-38), writable: false }, + "MIN_SAFE_INTEGER": { value: -16777215, writable: false }, + "MAX_SAFE_INTEGER": { value: 16777215, writable: false } +}); + +Object.defineProperties( + globalScope["f64"] = function f64(value) { return +value; } +, { + "EPSILON": { value: 2.2204460492503131e-16, writable: false }, + "MIN_VALUE": { value: 5e-324, writable: false }, + "MAX_VALUE": { value: 1.7976931348623157e+308, writable: false }, + "MIN_NORMAL_VALUE": { value: 2.2250738585072014e-308 , writable: false }, + "MIN_SAFE_INTEGER": { value: -9007199254740991, writable: false }, + "MAX_SAFE_INTEGER": { value: 9007199254740991, writable: false } +}); + +globalScope["clz"] = Math.clz32; + +globalScope["ctz"] = function ctz(value) { + var c = Math.clz32(value & -value); + return value ? 31 - c : c; +}; + +globalScope["popcnt"] = function popcnt(value) { + value -= value >>> 1 & 0x55555555; + value = (value & 0x33333333) + (value >>> 2 & 0x33333333); + return (((value + (value >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24; +}; + +globalScope["rotl"] = function rotl(value, shift) { + shift &= 31; + return (value << shift) | (value >>> (32 - shift)); +}; + +globalScope["rotr"] = function rotr(value, shift) { + shift &= 31; + return (value >>> shift) | (value << (32 - shift)); +}; + +globalScope["abs"] = Math.abs; + +globalScope["max"] = Math.max; + +globalScope["min"] = Math.min; + +globalScope["ceil"] = Math.ceil; + +globalScope["floor"] = Math.floor; + +// Adopt code from https://github.com/rfk/wasm-polyfill +globalScope["nearest"] = function nearest(value) { + if (Math.abs(value - Math.trunc(value)) === 0.5) { + return 2.0 * Math.round(value * 0.5); + } + return Math.round(value); +}; + +globalScope["select"] = function select(ifTrue, ifFalse, condition) { + return condition ? ifTrue : ifFalse; +}; + +globalScope["sqrt"] = Math.sqrt; + +globalScope["trunc"] = Math.trunc; + +globalScope["copysign"] = function copysign(x, y) { + return Math.abs(x) * Math.sign(y); +}; + +globalScope["bswap"] = function bswap(value) { + var a = value >> 8 & 0x00FF00FF; + var b = (value & 0x00FF00FF) << 8; + value = a | b; + a = value >> 16 & 0x0000FFFF; + b = (value & 0x0000FFFF) << 16; + return a | b; +}; + +globalScope["bswap16"] = function bswap16(value) { + return ((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000); +}; + +function UnreachableError() { + if (Error.captureStackTrace) { + Error.captureStackTrace(this, UnreachableError); + } else { + this.stack = this.name + ": " + this.message + "\n" + new Error().stack; + } +} +UnreachableError.prototype = Object.create(Error.prototype); +UnreachableError.prototype.name = "UnreachableError"; +UnreachableError.prototype.message = "unreachable"; + +globalScope["unreachable"] = function unreachable() { + throw new UnreachableError(); +}; + +function AssertionError(message) { + this.message = message || "assertion failed"; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, AssertionError); + } else { + this.stack = this.name + ": " + this.message + "\n" + new Error().stack; + } +} +AssertionError.prototype = Object.create(Error.prototype); +AssertionError.prototype.name = "AssertionError"; + +globalScope["assert"] = function assert(isTrueish, message) { + if (isTrueish) return isTrueish; + throw new AssertionError(message); +}; + +globalScope["changetype"] = function changetype(value) { + return value; +}; + +String["fromCharCodes"] = function fromCharCodes(arr) { + return String.fromCharCode.apply(String, arr); +}; + +String["fromCodePoints"] = function fromCodePoints(arr) { + return String.fromCodePoint.apply(String, arr); +}; + +if (!String.prototype.replaceAll) { + Object.defineProperty(String.prototype, "replaceAll", { + value: function replaceAll(search, replacment) { + var res = this.split(search).join(replacment); + if (!search.length) res = replacment + res + replacment; + return res; + } + }); +} + +globalScope["isInteger"] = Number.isInteger; + +globalScope["isFloat"] = function isFloat(arg) { + return typeof arg === "number"; +}; + +globalScope["isNullable"] = function isNullable(arg) { + return true; +} + +globalScope["isReference"] = function isReference(arg) { + return typeof arg === "object" || typeof arg === "string"; +}; + +globalScope["isFunction"] = function isFunction(arg) { + return typeof arg === "function"; +} + +globalScope["isString"] = function isString(arg) { + return typeof arg === "string" || arg instanceof String; +}; + +globalScope["isArray"] = Array.isArray; +globalScope["isArrayLike"] = function isArrayLike(expr) { + return expr + && typeof expr === 'object' + && typeof expr.length === 'number' + && expr.length >= 0 + && Math.trunc(expr.length) === expr.length; +}; + +Array.create = function(capacity) { + var arr = new Array(capacity); + arr.length = 0; + return arr; +}; + +globalScope["isDefined"] = function isDefined(expr) { + return typeof expr !== "undefined"; +} + +globalScope["isConstant"] = function isConstant(expr) { + return false; +}; + +globalScope["unchecked"] = function unchecked(expr) { + return expr; +}; + +globalScope["fmod"] = function fmod(x, y) { + return x % y; +}; + +globalScope["fmodf"] = function fmodf(x, y) { + return Math.fround(x % y); +}; + +globalScope["JSMath"] = Math; + +try { +Object.defineProperties(globalScope["JSMath"], { + sincos_sin: { value: 0.0, writable: true }, + sincos_cos: { value: 0.0, writable: true }, + signbit: { + value: function signbit(x) { + F64[0] = x; return Boolean((U64[1] >>> 31) & (x == x)); + } + }, + sincos: { + value: function sincos(x) { + this.sincos_sin = Math.sin(x); + this.sincos_cos = Math.cos(x); + } + } +}); +}catch (e) {} + +globalScope["memory"] = (() => { + var HEAP = new Uint8Array(0); + var HEAP_OFFSET = 0; + return { + allocate: globalScope["__memory_allocate"] || function allocate(size) { + if (!(size >>>= 0)) return 0; + if (HEAP_OFFSET + size > HEAP.length) { + var oldHeap = HEAP; + HEAP = new Uint8Array(Math.max(65536, HEAP.length + size, HEAP.length * 2)); + HEAP.set(oldHeap); + } + var ptr = HEAP_OFFSET; + if ((HEAP_OFFSET += size) & 7) HEAP_OFFSET = (HEAP_OFFSET | 7) + 1; + return ptr; + }, + fill: globalScope["__memory_fill"] || function fill(dest, value, size) { + HEAP.fill(value, dest, dest + size); + }, + free: globalScope["__memory_free"] || function free(ptr) { }, + copy: globalScope["__memory_copy"] || function copy(dest, src, size) { + HEAP.copyWithin(dest, src, src + size); + }, + reset: globalScope["__memory_reset"] || function reset() { + HEAP = new Uint8Array(0); + HEAP_OFFSET = 0; + } + }; +})(); + +globalScope["store"] = globalScope["__store"] || function store(ptr, value, offset) { + HEAP[(ptr | 0) + (offset | 0)] = value; +}; + +globalScope["load"] = globalScope["__load"] || function load(ptr, offset) { + return HEAP[(ptr | 0) + (offset | 0)]; +}; + +globalScope["unmanaged"] = function() {}; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./src/base.ts": +/*!*********************!*\ + !*** ./src/base.ts ***! + \*********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __values = (this && this.__values) || function (o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); +var visitor_1 = __webpack_require__(/*! ./visitor */ "./src/visitor.ts"); +var BaseVisitor = /** @class */ (function (_super) { + __extends(BaseVisitor, _super); + function BaseVisitor(writer) { + var _this = _super.call(this, writer) || this; + _this.depth = 0; + return _this; + } + BaseVisitor.prototype._visit = function (node) { + switch (node.kind) { + case ast_1.NodeKind.SOURCE: { + this.visitSource(node); + break; + } + // types + case ast_1.NodeKind.NAMEDTYPE: { + this.visitNamedTypeNode(node); + break; + } + case ast_1.NodeKind.FUNCTIONTYPE: { + this.visitFunctionTypeNode(node); + break; + } + case ast_1.NodeKind.TYPENAME: { + this.visitTypeName(node); + } + case ast_1.NodeKind.TYPEPARAMETER: { + this.visitTypeParameter(node); + break; + } + // expressions + case ast_1.NodeKind.FALSE: + case ast_1.NodeKind.NULL: + case ast_1.NodeKind.SUPER: + case ast_1.NodeKind.THIS: + case ast_1.NodeKind.TRUE: + case ast_1.NodeKind.CONSTRUCTOR: + case ast_1.NodeKind.IDENTIFIER: { + this.visitIdentifierExpression(node); + break; + } + case ast_1.NodeKind.ASSERTION: { + this.visitAssertionExpression(node); + break; + } + case ast_1.NodeKind.BINARY: { + this.visitBinaryExpression(node); + break; + } + case ast_1.NodeKind.CALL: { + this.visitCallExpression(node); + break; + } + case ast_1.NodeKind.CLASS: { + this.visitClassExpression(node); + break; + } + case ast_1.NodeKind.COMMA: { + this.visitCommaExpression(node); + break; + } + case ast_1.NodeKind.ELEMENTACCESS: { + this.visitElementAccessExpression(node); + break; + } + case ast_1.NodeKind.FUNCTION: { + this.visitFunctionExpression(node); + break; + } + case ast_1.NodeKind.INSTANCEOF: { + this.visitInstanceOfExpression(node); + break; + } + case ast_1.NodeKind.LITERAL: { + this.visitLiteralExpression(node); + break; + } + case ast_1.NodeKind.NEW: { + this.visitNewExpression(node); + break; + } + case ast_1.NodeKind.PARENTHESIZED: { + this.visitParenthesizedExpression(node); + break; + } + case ast_1.NodeKind.PROPERTYACCESS: { + this.visitPropertyAccessExpression(node); + break; + } + case ast_1.NodeKind.TERNARY: { + this.visitTernaryExpression(node); + break; + } + case ast_1.NodeKind.UNARYPOSTFIX: { + this.visitUnaryPostfixExpression(node); + break; + } + case ast_1.NodeKind.UNARYPREFIX: { + this.visitUnaryPrefixExpression(node); + break; + } + // statements + case ast_1.NodeKind.BLOCK: { + this.visitBlockStatement(node); + break; + } + case ast_1.NodeKind.BREAK: { + this.visitBreakStatement(node); + break; + } + case ast_1.NodeKind.CONTINUE: { + this.visitContinueStatement(node); + break; + } + case ast_1.NodeKind.DO: { + this.visitDoStatement(node); + break; + } + case ast_1.NodeKind.EMPTY: { + this.visitEmptyStatement(node); + break; + } + case ast_1.NodeKind.EXPORT: { + this.visitExportStatement(node); + break; + } + case ast_1.NodeKind.EXPORTDEFAULT: { + this.visitExportDefaultStatement(node); + break; + } + case ast_1.NodeKind.EXPORTIMPORT: { + this.visitExportImportStatement(node); + break; + } + case ast_1.NodeKind.EXPRESSION: { + this.visitExpressionStatement(node); + break; + } + case ast_1.NodeKind.FOR: { + this.visitForStatement(node); + break; + } + case ast_1.NodeKind.IF: { + this.visitIfStatement(node); + break; + } + case ast_1.NodeKind.IMPORT: { + this.visitImportStatement(node); + break; + } + case ast_1.NodeKind.RETURN: { + this.visitReturnStatement(node); + break; + } + case ast_1.NodeKind.SWITCH: { + this.visitSwitchStatement(node); + break; + } + case ast_1.NodeKind.THROW: { + this.visitThrowStatement(node); + break; + } + case ast_1.NodeKind.TRY: { + this.visitTryStatement(node); + break; + } + case ast_1.NodeKind.VARIABLE: { + this.visitVariableStatement(node); + break; + } + case ast_1.NodeKind.WHILE: { + this.visitWhileStatement(node); + break; + } + // declaration statements + case ast_1.NodeKind.CLASSDECLARATION: { + this.visitClassDeclaration(node); + break; + } + case ast_1.NodeKind.ENUMDECLARATION: { + this.visitEnumDeclaration(node); + break; + } + case ast_1.NodeKind.ENUMVALUEDECLARATION: { + this.visitEnumValueDeclaration(node); + break; + } + case ast_1.NodeKind.FIELDDECLARATION: { + this.visitFieldDeclaration(node); + break; + } + case ast_1.NodeKind.FUNCTIONDECLARATION: { + this.visitFunctionDeclaration(node); + break; + } + case ast_1.NodeKind.IMPORTDECLARATION: { + this.visitImportDeclaration(node); + break; + } + case ast_1.NodeKind.INDEXSIGNATUREDECLARATION: { + this.visitIndexSignatureDeclaration(node); + break; + } + case ast_1.NodeKind.INTERFACEDECLARATION: { + this.visitInterfaceDeclaration(node); + break; + } + case ast_1.NodeKind.METHODDECLARATION: { + this.visitMethodDeclaration(node); + break; + } + case ast_1.NodeKind.NAMESPACEDECLARATION: { + this.visitNamespaceDeclaration(node); + break; + } + case ast_1.NodeKind.TYPEDECLARATION: { + this.visitTypeDeclaration(node); + break; + } + case ast_1.NodeKind.VARIABLEDECLARATION: { + this.visitVariableDeclaration(node); + break; + } + // other + case ast_1.NodeKind.DECORATOR: { + this.visitDecoratorNode(node); + break; + } + case ast_1.NodeKind.EXPORTMEMBER: { + this.visitExportMember(node); + break; + } + case ast_1.NodeKind.PARAMETER: { + this.visitParameter(node); + break; + } + case ast_1.NodeKind.SWITCHCASE: { + this.visitSwitchCase(node); + break; + } + default: assert(false); + } + }; + BaseVisitor.prototype.visitSource = function (node) { + var e_1, _a; + try { + for (var _b = __values(node.statements), _c = _b.next(); !_c.done; _c = _b.next()) { + var stmt = _c.value; + this.depth++; + this.visit(stmt); + this.depth--; + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + }; + BaseVisitor.prototype.visitTypeNode = function (node) { }; + BaseVisitor.prototype.visitTypeName = function (node) { + this.visit(node.identifier); + if (node.next) { + this.visit(node); + } + }; + BaseVisitor.prototype.visitNamedTypeNode = function (node) { + this.visit(node.name); + this.visit(node.typeArguments); + }; + BaseVisitor.prototype.visitFunctionTypeNode = function (node) { + var e_2, _a; + try { + for (var _b = __values(node.parameters), _c = _b.next(); !_c.done; _c = _b.next()) { + var param = _c.value; + this.visit(param); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_2) throw e_2.error; } + } + this.visit(node.returnType); + }; + BaseVisitor.prototype.visitTypeParameter = function (node) { + this.visit(node.name); + if (node.extendsType) + this.visit(node.extendsType); + if (node.defaultType) + this.visit(node.defaultType); + }; + BaseVisitor.prototype.visitIdentifierExpression = function (node) { }; + BaseVisitor.prototype.visitArrayLiteralExpression = function (node) { + var _this = this; + node.elementExpressions.map(function (e) { + if (e) + _this.visit(e); + }); + }; + BaseVisitor.prototype.visitObjectLiteralExpression = function (node) { + if (node.values && node.names) { + assert(node.values.length == node.names.length); + for (var i = 0; i < node.values.length; i++) { + this.visit(node.names[i]); + this.visit(node.values[i]); + } + } + }; + BaseVisitor.prototype.visitAssertionExpression = function (node) { + if (node.toType) + this.visit(node.toType); + this.visit(node.expression); + }; + BaseVisitor.prototype.visitBinaryExpression = function (node) { + this.visit(node.left); + this.visit(node.right); + }; + BaseVisitor.prototype.visitCallExpression = function (node) { + this.visit(node.expression); + this.visit(node.typeArguments); + this.visit(node.arguments); + }; + BaseVisitor.prototype.visitClassExpression = function (node) { + this.visit(node.declaration); + }; + BaseVisitor.prototype.visitCommaExpression = function (node) { + this.visit(node.expressions); + }; + BaseVisitor.prototype.visitElementAccessExpression = function (node) { + this.visit(node.elementExpression); + this.visit(node.expression); + }; + BaseVisitor.prototype.visitFunctionExpression = function (node) { + this.visit(node.declaration); + }; + BaseVisitor.prototype.visitLiteralExpression = function (node) { + // node. + }; + BaseVisitor.prototype.visitFloatLiteralExpression = function (node) { }; + BaseVisitor.prototype.visitInstanceOfExpression = function (node) { + this.visit(node.expression); + this.visit(node.isType); + }; + BaseVisitor.prototype.visitIntegerLiteralExpression = function (node) { }; + BaseVisitor.prototype.visitStringLiteral = function (str, singleQuoted) { }; + BaseVisitor.prototype.visitStringLiteralExpression = function (node) { }; + BaseVisitor.prototype.visitRegexpLiteralExpression = function (node) { }; + BaseVisitor.prototype.visitNewExpression = function (node) { + this.visit(node.expression); + this.visit(node.typeArguments); + this.visit(node.arguments); + }; + BaseVisitor.prototype.visitParenthesizedExpression = function (node) { + this.visit(node.expression); + }; + BaseVisitor.prototype.visitPropertyAccessExpression = function (node) { + this.visit(node.property); + this.visit(node.expression); + }; + BaseVisitor.prototype.visitTernaryExpression = function (node) { + this.visit(node.condition); + this.visit(node.ifThen); + this.visit(node.ifElse); + }; + BaseVisitor.prototype.visitUnaryExpression = function (node) { + this.visit(node.operand); + }; + BaseVisitor.prototype.visitUnaryPostfixExpression = function (node) { + this.visit(node.operand); + }; + BaseVisitor.prototype.visitUnaryPrefixExpression = function (node) { + this.visit(node.operand); + }; + BaseVisitor.prototype.visitSuperExpression = function (node) { }; + BaseVisitor.prototype.visitFalseExpression = function (node) { }; + BaseVisitor.prototype.visitTrueExpression = function (node) { }; + BaseVisitor.prototype.visitThisExpression = function (node) { }; + BaseVisitor.prototype.visitNullExperssion = function (node) { }; + BaseVisitor.prototype.visitConstructorExpression = function (node) { }; + BaseVisitor.prototype.visitNodeAndTerminate = function (statement) { }; + BaseVisitor.prototype.visitBlockStatement = function (node) { + this.depth++; + this.visit(node.statements); + this.depth--; + }; + BaseVisitor.prototype.visitBreakStatement = function (node) { + if (node.label) { + this.visit(node.label); + } + }; + BaseVisitor.prototype.visitContinueStatement = function (node) { + if (node.label) { + this.visit(node.label); + } + }; + BaseVisitor.prototype.visitClassDeclaration = function (node, isDefault) { + this.visit(node.name); + this.depth++; + this.visit(node.decorators); + assert(node.isGeneric ? node.typeParameters != null : node.typeParameters == null); + if (node.isGeneric) { + this.visit(node.typeParameters); + } + if (node.extendsType) { + this.visit(node.extendsType); + } + this.visit(node.implementsTypes); + this.visit(node.members); + this.depth--; + }; + BaseVisitor.prototype.visitDoStatement = function (node) { + this.visit(node.condition); + this.visit(node.statement); + }; + BaseVisitor.prototype.visitEmptyStatement = function (node) { }; + BaseVisitor.prototype.visitEnumDeclaration = function (node, isDefault) { + this.visit(node.name); + this.visit(node.decorators); + this.visit(node.values); + }; + BaseVisitor.prototype.visitEnumValueDeclaration = function (node) { + this.visit(node.name); + if (node.initializer) { + this.visit(node.initializer); + } + }; + BaseVisitor.prototype.visitExportImportStatement = function (node) { + this.visit(node.name); + this.visit(node.externalName); + }; + BaseVisitor.prototype.visitExportMember = function (node) { + this.visit(node.localName); + this.visit(node.exportedName); + }; + BaseVisitor.prototype.visitExportStatement = function (node) { + if (node.path) { + this.visit(node.path); + } + this.visit(node.members); + }; + BaseVisitor.prototype.visitExportDefaultStatement = function (node) { + this.visit(node.declaration); + }; + BaseVisitor.prototype.visitExpressionStatement = function (node) { + this.visit(node.expression); + }; + BaseVisitor.prototype.visitFieldDeclaration = function (node) { + this.visit(node.name); + if (node.type) { + this.visit(node.type); + } + if (node.initializer) { + this.visit(node.initializer); + } + this.visit(node.decorators); + }; + BaseVisitor.prototype.visitForStatement = function (node) { + if (node.initializer) + this.visit(node.initializer); + if (node.condition) + this.visit(node.condition); + if (node.incrementor) + this.visit(node.incrementor); + this.visit(node.statement); + }; + BaseVisitor.prototype.visitFunctionDeclaration = function (node, isDefault) { + this.visit(node.name); + this.visit(node.decorators); + if (node.isGeneric) { + this.visit(node.typeParameters); + } + this.visit(node.signature); + this.depth++; + if (node.body) + this.visit(node.body); + this.depth--; + }; + BaseVisitor.prototype.visitFunctionCommon = function (node) { + // this.visit(node.name) + }; + BaseVisitor.prototype.visitIfStatement = function (node) { + this.visit(node.condition); + this.visit(node.ifTrue); + if (node.ifFalse) + this.visit(node.ifFalse); + }; + BaseVisitor.prototype.visitImportDeclaration = function (node) { + this.visit(node.foreignName); + this.visit(node.name); + this.visit(node.decorators); + }; + BaseVisitor.prototype.visitImportStatement = function (node) { + if (node.namespaceName) + this.visit(node.namespaceName); + this.visit(node.declarations); + }; + BaseVisitor.prototype.visitIndexSignatureDeclaration = function (node) { + // this.visit(node.name); + // this.visit(node.keyType); + // this.visit(node.valueType); + }; + BaseVisitor.prototype.visitInterfaceDeclaration = function (node, isDefault) { + this.visit(node.name); + if (node.isGeneric) { + this.visit(node.typeParameters); + } + this.visit(node.implementsTypes); + if (node.extendsType) + this.visit(node.extendsType); + this.depth++; + this.visit(node.members); + this.depth--; + }; + BaseVisitor.prototype.visitMethodDeclaration = function (node) { + this.visit(node.name); + if (node.isGeneric) { + this.visit(node.typeParameters); + } + this.visit(node.signature); + this.visit(node.decorators); + this.depth++; + if (node.body) + this.visit(node.body); + this.depth--; + }; + BaseVisitor.prototype.visitNamespaceDeclaration = function (node, isDefault) { + this.visit(node.name); + this.visit(node.decorators); + this.visit(node.members); + }; + BaseVisitor.prototype.visitReturnStatement = function (node) { + if (node.value) + this.visit(node.value); + }; + BaseVisitor.prototype.visitSwitchCase = function (node) { + if (node.label) + this.visit(node.label); + this.visit(node.statements); + }; + BaseVisitor.prototype.visitSwitchStatement = function (node) { + this.visit(node.condition); + this.depth++; + this.visit(node.cases); + this.depth--; + }; + BaseVisitor.prototype.visitThrowStatement = function (node) { + this.visit(node.value); + }; + BaseVisitor.prototype.visitTryStatement = function (node) { + this.visit(node.statements); + if (node.catchVariable) + this.visit(node.catchVariable); + this.visit(node.catchStatements); + this.visit(node.finallyStatements); + }; + BaseVisitor.prototype.visitTypeDeclaration = function (node) { + this.visit(node.name); + this.visit(node.decorators); + this.visit(node.type); + this.visit(node.typeParameters); + }; + BaseVisitor.prototype.visitVariableDeclaration = function (node) { + this.visit(node.name); + if (node.type) + this.visit(node.type); + if (node.initializer) + this.visit(node.initializer); + }; + BaseVisitor.prototype.visitVariableStatement = function (node) { + this.visit(node.decorators); + this.visit(node.declarations); + }; + BaseVisitor.prototype.visitWhileStatement = function (node) { + this.visit(node.condition); + this.depth++; + this.visit(node.statement); + this.depth--; + }; + BaseVisitor.prototype.visitVoidStatement = function (node) { }; + BaseVisitor.prototype.visitComment = function (node) { }; + BaseVisitor.prototype.visitDecoratorNode = function (node) { + this.visit(node.name); + this.visit(node.arguments); + }; + BaseVisitor.prototype.visitParameter = function (node) { + this.visit(node.name); + if (node.implicitFieldDeclaration) { + this.visit(node.implicitFieldDeclaration); + } + if (node.initializer) + this.visit(node.initializer); + this.visit(node.type); + }; + return BaseVisitor; +}(visitor_1.AbstractVisitor)); +exports.BaseVisitor = BaseVisitor; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQ0E0RXVCO0FBRXZCLHFDQUFvRDtBQUVwRDtJQUFpQywrQkFBcUI7SUFHcEQscUJBQVksTUFBcUI7UUFBakMsWUFDRSxrQkFBTSxNQUFNLENBQUMsU0FDZDtRQUpELFdBQUssR0FBVyxDQUFDLENBQUM7O0lBSWxCLENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sSUFBVTtRQUNmLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLGNBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBUyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsTUFBTTthQUNQO1lBRUQsUUFBUTtZQUVSLEtBQUssY0FBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQWdCLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxNQUFNO2FBQ1A7WUFDRCxLQUFLLGNBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLHFCQUFxQixDQUFtQixJQUFJLENBQUMsQ0FBQztnQkFDbkQsTUFBTTthQUNQO1lBQ0QsS0FBSyxjQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLENBQVcsSUFBSSxDQUFDLENBQUM7YUFDcEM7WUFDRCxLQUFLLGNBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFvQixJQUFJLENBQUMsQ0FBQztnQkFDakQsTUFBTTthQUNQO1lBRUQsY0FBYztZQUVkLEtBQUssY0FBUSxDQUFDLEtBQUssQ0FBQztZQUNwQixLQUFLLGNBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbkIsS0FBSyxjQUFRLENBQUMsS0FBSyxDQUFDO1lB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QUFDO0lBQzdCLENBQUM7SUFFRCxvQ0FBYyxHQUFkLFVBQWUsSUFBbUI7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUgsa0JBQUM7QUFBRCxDQUFDLEFBNW9CRCxDQUFpQyx5QkFBZSxHQTRvQi9DO0FBNW9CWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNvdXJjZSxcbiAgVHlwZU5vZGUsXG4gIFR5cGVOYW1lLFxuICBOYW1lZFR5cGVOb2RlLFxuICBGdW5jdGlvblR5cGVOb2RlLFxuICBUeXBlUGFyYW1ldGVyTm9kZSxcbiAgSWRlbnRpZmllckV4cHJlc3Npb24sXG4gIEFycmF5TGl0ZXJhbEV4cHJlc3Npb24sXG4gIE9iamVjdExpdGVyYWxFeHByZXNzaW9uLFxuICBBc3NlcnRpb25FeHByZXNzaW9uLFxuICBCaW5hcnlFeHByZXNzaW9uLFxuICBDYWxsRXhwcmVzc2lvbixcbiAgQ2xhc3NFeHByZXNzaW9uLFxuICBDb21tYUV4cHJlc3Npb24sXG4gIEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLFxuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIExpdGVyYWxFeHByZXNzaW9uLFxuICBGbG9hdExpdGVyYWxFeHByZXNzaW9uLFxuICBJbnN0YW5jZU9mRXhwcmVzc2lvbixcbiAgSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uLFxuICBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbixcbiAgUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24sXG4gIE5ld0V4cHJlc3Npb24sXG4gIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uLFxuICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24sXG4gIFRlcm5hcnlFeHByZXNzaW9uLFxuICBVbmFyeUV4cHJlc3Npb24sXG4gIFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24sXG4gIFVuYXJ5UHJlZml4RXhwcmVzc2lvbixcbiAgU3VwZXJFeHByZXNzaW9uLFxuICBGYWxzZUV4cHJlc3Npb24sXG4gIFRydWVFeHByZXNzaW9uLFxuICBUaGlzRXhwcmVzc2lvbixcbiAgTnVsbEV4cHJlc3Npb24sXG4gIENvbnN0cnVjdG9yRXhwcmVzc2lvbixcbiAgU3RhdGVtZW50LFxuICBCbG9ja1N0YXRlbWVudCxcbiAgQnJlYWtTdGF0ZW1lbnQsXG4gIENvbnRpbnVlU3RhdGVtZW50LFxuICBDbGFzc0RlY2xhcmF0aW9uLFxuICBEb1N0YXRlbWVudCxcbiAgRW1wdHlTdGF0ZW1lbnQsXG4gIEVudW1EZWNsYXJhdGlvbixcbiAgRW51bVZhbHVlRGVjbGFyYXRpb24sXG4gIEV4cG9ydEltcG9ydFN0YXRlbWVudCxcbiAgRXhwb3J0TWVtYmVyLFxuICBFeHBvcnRTdGF0ZW1lbnQsXG4gIEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQsXG4gIEV4cHJlc3Npb25TdGF0ZW1lbnQsXG4gIEZpZWxkRGVjbGFyYXRpb24sXG4gIEZvclN0YXRlbWVudCxcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgSWZTdGF0ZW1lbnQsXG4gIEltcG9ydERlY2xhcmF0aW9uLFxuICBJbXBvcnRTdGF0ZW1lbnQsXG4gIEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24sXG4gIEludGVyZmFjZURlY2xhcmF0aW9uLFxuICBNZXRob2REZWNsYXJhdGlvbixcbiAgTmFtZXNwYWNlRGVjbGFyYXRpb24sXG4gIFJldHVyblN0YXRlbWVudCxcbiAgU3dpdGNoQ2FzZSxcbiAgU3dpdGNoU3RhdGVtZW50LFxuICBUaHJvd1N0YXRlbWVudCxcbiAgVHJ5U3RhdGVtZW50LFxuICBUeXBlRGVjbGFyYXRpb24sXG4gIFZhcmlhYmxlRGVjbGFyYXRpb24sXG4gIFZhcmlhYmxlU3RhdGVtZW50LFxuICBXaGlsZVN0YXRlbWVudCxcbiAgVm9pZFN0YXRlbWVudCxcbiAgQ29tbWVudE5vZGUsXG4gIERlY29yYXRvck5vZGUsXG4gIFBhcmFtZXRlck5vZGUsXG4gIE5vZGUsXG4gIE5vZGVLaW5kLFxuICBFeHByZXNzaW9uXG59IGZyb20gXCIuLi8uLi9zcmMvYXN0XCI7XG5cbmltcG9ydCB7IEFic3RyYWN0VmlzaXRvciwgV3JpdGVyIH0gZnJvbSBcIi4vdmlzaXRvclwiO1xuXG5leHBvcnQgY2xhc3MgQmFzZVZpc2l0b3IgZXh0ZW5kcyBBYnN0cmFjdFZpc2l0b3I8Tm9kZT4ge1xuICBkZXB0aDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih3cml0ZXI/OiBXcml0ZXI8Tm9kZT4pIHtcbiAgICBzdXBlcih3cml0ZXIpO1xuICB9XG5cbiAgX3Zpc2l0KG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBOb2RlS2luZC5TT1VSQ0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFNvdXJjZSg8U291cmNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gdHlwZXNcblxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FRFRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVkVHlwZU5vZGUoPE5hbWVkVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GVU5DVElPTlRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uVHlwZU5vZGUoPEZ1bmN0aW9uVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFTkFNRToge1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5hbWUoPFR5cGVOYW1lPm5vZGUpO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKDxUeXBlUGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGV4cHJlc3Npb25zXG5cbiAgICAgIGNhc2UgTm9kZUtpbmQuRkFMU0U6XG4gICAgICBjYXNlIE5vZGVLaW5kLk5VTEw6XG4gICAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOlxuICAgICAgY2FzZSBOb2RlS2luZC5USElTOlxuICAgICAgY2FzZSBOb2RlS2luZC5UUlVFOlxuICAgICAgY2FzZSBOb2RlS2luZC5DT05TVFJVQ1RPUjpcbiAgICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjoge1xuICAgICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24oPElkZW50aWZpZXJFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQVNTRVJUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRBc3NlcnRpb25FeHByZXNzaW9uKDxBc3NlcnRpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQklOQVJZOiB7XG4gICAgICAgIHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKDxCaW5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0FMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24oPENhbGxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0xBU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdENsYXNzRXhwcmVzc2lvbig8Q2xhc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09NTUE6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbW1hRXhwcmVzc2lvbig8Q29tbWFFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzoge1xuICAgICAgICB0aGlzLnZpc2l0RWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oPEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbig8RnVuY3Rpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5TVEFOQ0VPRjoge1xuICAgICAgICB0aGlzLnZpc2l0SW5zdGFuY2VPZkV4cHJlc3Npb24oPEluc3RhbmNlT2ZFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTElURVJBTDoge1xuICAgICAgICB0aGlzLnZpc2l0TGl0ZXJhbEV4cHJlc3Npb24oPExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkVXOiB7XG4gICAgICAgIHRoaXMudmlzaXROZXdFeHByZXNzaW9uKDxOZXdFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUEFSRU5USEVTSVpFRDoge1xuICAgICAgICB0aGlzLnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oPFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbig8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEVSTkFSWToge1xuICAgICAgICB0aGlzLnZpc2l0VGVybmFyeUV4cHJlc3Npb24oPFRlcm5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdGVtZW50c1xuXG4gICAgICBjYXNlIE5vZGVLaW5kLkJMT0NLOiB7XG4gICAgICAgIHRoaXMudmlzaXRCbG9ja1N0YXRlbWVudCg8QmxvY2tTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5CUkVBSzoge1xuICAgICAgICB0aGlzLnZpc2l0QnJlYWtTdGF0ZW1lbnQoPEJyZWFrU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09OVElOVUU6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbnRpbnVlU3RhdGVtZW50KDxDb250aW51ZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkRPOiB7XG4gICAgICAgIHRoaXMudmlzaXREb1N0YXRlbWVudCg8RG9TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FTVBUWToge1xuICAgICAgICB0aGlzLnZpc2l0RW1wdHlTdGF0ZW1lbnQoPEVtcHR5U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRFeHBvcnRTdGF0ZW1lbnQoPEV4cG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoPEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FWFBPUlRJTVBPUlQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudCg8RXhwb3J0SW1wb3J0U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQUkVTU0lPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwcmVzc2lvblN0YXRlbWVudCg8RXhwcmVzc2lvblN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZPUjoge1xuICAgICAgICB0aGlzLnZpc2l0Rm9yU3RhdGVtZW50KDxGb3JTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JRjoge1xuICAgICAgICB0aGlzLnZpc2l0SWZTdGF0ZW1lbnQoPElmU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU1QT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnRTdGF0ZW1lbnQoPEltcG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlJFVFVSTjoge1xuICAgICAgICB0aGlzLnZpc2l0UmV0dXJuU3RhdGVtZW50KDxSZXR1cm5TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0g6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaFN0YXRlbWVudCg8U3dpdGNoU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEhST1c6IHtcbiAgICAgICAgdGhpcy52aXNpdFRocm93U3RhdGVtZW50KDxUaHJvd1N0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlRSWToge1xuICAgICAgICB0aGlzLnZpc2l0VHJ5U3RhdGVtZW50KDxUcnlTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5WQVJJQUJMRToge1xuICAgICAgICB0aGlzLnZpc2l0VmFyaWFibGVTdGF0ZW1lbnQoPFZhcmlhYmxlU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuV0hJTEU6IHtcbiAgICAgICAgdGhpcy52aXNpdFdoaWxlU3RhdGVtZW50KDxXaGlsZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2xhcmF0aW9uIHN0YXRlbWVudHNcblxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRU5VTURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtRGVjbGFyYXRpb24oPEVudW1EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1WQUxVRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbig8RW51bVZhbHVlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRGaWVsZERlY2xhcmF0aW9uKDxGaWVsZERlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklNUE9SVERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbig8SW1wb3J0RGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKDxJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5URVJGQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEludGVyZmFjZURlY2xhcmF0aW9uKDxJbnRlcmZhY2VEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLk1FVEhPRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRNZXRob2REZWNsYXJhdGlvbig8TWV0aG9kRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FU1BBQ0VERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oPE5hbWVzcGFjZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlRGVjbGFyYXRpb24oPFR5cGVEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlZBUklBQkxFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oPFZhcmlhYmxlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBvdGhlclxuXG4gICAgICBjYXNlIE5vZGVLaW5kLkRFQ09SQVRPUjoge1xuICAgICAgICB0aGlzLnZpc2l0RGVjb3JhdG9yTm9kZSg8RGVjb3JhdG9yTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVE1FTUJFUjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwb3J0TWVtYmVyKDxFeHBvcnRNZW1iZXI+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5QQVJBTUVURVI6IHtcbiAgICAgICAgdGhpcy52aXNpdFBhcmFtZXRlcig8UGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlNXSVRDSENBU0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaENhc2UoPFN3aXRjaENhc2U+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFNvdXJjZShub2RlOiBTb3VyY2UpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN0bXQgb2Ygbm9kZS5zdGF0ZW1lbnRzKSB7XG4gICAgICB0aGlzLmRlcHRoKys7XG4gICAgICB0aGlzLnZpc2l0KHN0bXQpO1xuICAgICAgdGhpcy5kZXB0aC0tO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VHlwZU5vZGUobm9kZTogVHlwZU5vZGUpOiB2b2lkIHt9XG5cbiAgdmlzaXRUeXBlTmFtZShub2RlOiBUeXBlTmFtZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5pZGVudGlmaWVyKTtcbiAgICBpZiAobm9kZS5uZXh0KSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0TmFtZWRUeXBlTm9kZShub2RlOiBOYW1lZFR5cGVOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlQXJndW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25UeXBlTm9kZShub2RlOiBGdW5jdGlvblR5cGVOb2RlKTogdm9pZCB7XG4gICAgZm9yIChsZXQgcGFyYW0gb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLnZpc2l0KHBhcmFtKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLnJldHVyblR5cGUpO1xuICB9XG5cbiAgdmlzaXRUeXBlUGFyYW1ldGVyKG5vZGU6IFR5cGVQYXJhbWV0ZXJOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIGlmIChub2RlLmRlZmF1bHRUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZGVmYXVsdFR5cGUpO1xuICB9XG5cbiAgdmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlOiBJZGVudGlmaWVyRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdEFycmF5TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogQXJyYXlMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIG5vZGUuZWxlbWVudEV4cHJlc3Npb25zLm1hcCgoZTogRXhwcmVzc2lvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKGUpIHRoaXMudmlzaXQoZSk7XG4gICAgfSk7XG4gIH1cblxuICB2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKG5vZGUudmFsdWVzICYmIG5vZGUubmFtZXMpIHtcbiAgICAgIGFzc2VydChub2RlLnZhbHVlcy5sZW5ndGggPT0gbm9kZS5uYW1lcy5sZW5ndGgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLnZpc2l0KG5vZGUubmFtZXNbaV0pO1xuICAgICAgICB0aGlzLnZpc2l0KG5vZGUudmFsdWVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2aXNpdEFzc2VydGlvbkV4cHJlc3Npb24obm9kZTogQXNzZXJ0aW9uRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmIChub2RlLnRvVHlwZSkgdGhpcy52aXNpdChub2RlLnRvVHlwZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdmlzaXRCaW5hcnlFeHByZXNzaW9uKG5vZGU6IEJpbmFyeUV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubGVmdCk7XG4gICAgdGhpcy52aXNpdChub2RlLnJpZ2h0KTtcbiAgfVxuXG4gIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZTogQ2FsbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGVBcmd1bWVudHMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5hcmd1bWVudHMpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0V4cHJlc3Npb24obm9kZTogQ2xhc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHZpc2l0Q29tbWFFeHByZXNzaW9uKG5vZGU6IENvbW1hRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5leHByZXNzaW9ucyk7XG4gIH1cblxuICB2aXNpdEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKG5vZGU6IEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmVsZW1lbnRFeHByZXNzaW9uKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbihub2RlOiBGdW5jdGlvbkV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjbGFyYXRpb24pO1xuICB9XG5cbiAgdmlzaXRMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIC8vIG5vZGUuXG4gIH1cblxuICB2aXNpdEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogRmxvYXRMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdEluc3RhbmNlT2ZFeHByZXNzaW9uKG5vZGU6IEluc3RhbmNlT2ZFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pc1R5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24obm9kZTogSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0U3RyaW5nTGl0ZXJhbChzdHI6IHN0cmluZywgc2luZ2xlUXVvdGVkPzogYm9vbGVhbik6IHZvaWQge31cblxuICB2aXNpdFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKG5vZGU6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0UmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24obm9kZTogUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXROZXdFeHByZXNzaW9uKG5vZGU6IE5ld0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGVBcmd1bWVudHMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5hcmd1bWVudHMpO1xuICB9XG5cbiAgdmlzaXRQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihub2RlOiBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5leHByZXNzaW9uKTtcbiAgfVxuXG4gIHZpc2l0UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGU6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5wcm9wZXJ0eSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlOiBUZXJuYXJ5RXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pZlRoZW4pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pZkVsc2UpO1xuICB9XG5cbiAgdmlzaXRVbmFyeUV4cHJlc3Npb24obm9kZTogVW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm9wZXJhbmQpO1xuICB9XG5cbiAgdmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKG5vZGU6IFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUub3BlcmFuZCk7XG4gIH1cblxuICB2aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbihub2RlOiBVbmFyeVByZWZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUub3BlcmFuZCk7XG4gIH1cblxuICB2aXNpdFN1cGVyRXhwcmVzc2lvbihub2RlOiBTdXBlckV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXRGYWxzZUV4cHJlc3Npb24obm9kZTogRmFsc2VFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0VHJ1ZUV4cHJlc3Npb24obm9kZTogVHJ1ZUV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXRUaGlzRXhwcmVzc2lvbihub2RlOiBUaGlzRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdE51bGxFeHBlcnNzaW9uKG5vZGU6IE51bGxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0Q29uc3RydWN0b3JFeHByZXNzaW9uKG5vZGU6IENvbnN0cnVjdG9yRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50OiBTdGF0ZW1lbnQpOiB2b2lkIHt9XG5cbiAgdmlzaXRCbG9ja1N0YXRlbWVudChub2RlOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50cyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXRCcmVha1N0YXRlbWVudChub2RlOiBCcmVha1N0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLmxhYmVsKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUubGFiZWwpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0Q29udGludWVTdGF0ZW1lbnQobm9kZTogQ29udGludWVTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5sYWJlbCkge1xuICAgICAgdGhpcy52aXNpdChub2RlLmxhYmVsKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbiwgaXNEZWZhdWx0PzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIGFzc2VydChcbiAgICAgIG5vZGUuaXNHZW5lcmljID8gbm9kZS50eXBlUGFyYW1ldGVycyAhPSBudWxsIDogbm9kZS50eXBlUGFyYW1ldGVycyA9PSBudWxsXG4gICAgKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0KG5vZGUuaW1wbGVtZW50c1R5cGVzKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUubWVtYmVycyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXREb1N0YXRlbWVudChub2RlOiBEb1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgdmlzaXRFbXB0eVN0YXRlbWVudChub2RlOiBFbXB0eVN0YXRlbWVudCk6IHZvaWQge31cblxuICB2aXNpdEVudW1EZWNsYXJhdGlvbihub2RlOiBFbnVtRGVjbGFyYXRpb24sIGlzRGVmYXVsdD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS52YWx1ZXMpO1xuICB9XG5cbiAgdmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbihub2RlOiBFbnVtVmFsdWVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplcikge1xuICAgICAgdGhpcy52aXNpdChub2RlLmluaXRpYWxpemVyKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudChub2RlOiBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4dGVybmFsTmFtZSk7XG4gIH1cblxuICB2aXNpdEV4cG9ydE1lbWJlcihub2RlOiBFeHBvcnRNZW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubG9jYWxOYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwb3J0ZWROYW1lKTtcbiAgfVxuXG4gIHZpc2l0RXhwb3J0U3RhdGVtZW50KG5vZGU6IEV4cG9ydFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLnBhdGgpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS5wYXRoKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLm1lbWJlcnMpO1xuICB9XG5cbiAgdmlzaXRFeHBvcnREZWZhdWx0U3RhdGVtZW50KG5vZGU6IEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjbGFyYXRpb24pO1xuICB9XG5cbiAgdmlzaXRFeHByZXNzaW9uU3RhdGVtZW50KG5vZGU6IEV4cHJlc3Npb25TdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZpZWxkRGVjbGFyYXRpb24obm9kZTogRmllbGREZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS50eXBlKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUudHlwZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmluaXRpYWxpemVyKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjb3JhdG9ycyk7XG4gIH1cblxuICB2aXNpdEZvclN0YXRlbWVudChub2RlOiBGb3JTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplcikgdGhpcy52aXNpdChub2RlLmluaXRpYWxpemVyKTtcbiAgICBpZiAobm9kZS5jb25kaXRpb24pIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIGlmIChub2RlLmluY3JlbWVudG9yKSB0aGlzLnZpc2l0KG5vZGUuaW5jcmVtZW50b3IpO1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkRlY2xhcmF0aW9uKFxuICAgIG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24sXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIGlmIChub2RlLmlzR2VuZXJpYykge1xuICAgICAgdGhpcy52aXNpdChub2RlLnR5cGVQYXJhbWV0ZXJzKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLnNpZ25hdHVyZSk7XG4gICAgdGhpcy5kZXB0aCsrO1xuICAgIGlmIChub2RlLmJvZHkpIHRoaXMudmlzaXQobm9kZS5ib2R5KTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uQ29tbW9uKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpc2l0KG5vZGUubmFtZSlcbiAgfVxuXG4gIHZpc2l0SWZTdGF0ZW1lbnQobm9kZTogSWZTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuY29uZGl0aW9uKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuaWZUcnVlKTtcbiAgICBpZiAobm9kZS5pZkZhbHNlKSB0aGlzLnZpc2l0KG5vZGUuaWZGYWxzZSk7XG4gIH1cblxuICB2aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IEltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmZvcmVpZ25OYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICB9XG5cbiAgdmlzaXRJbXBvcnRTdGF0ZW1lbnQobm9kZTogSW1wb3J0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKG5vZGUubmFtZXNwYWNlTmFtZSkgdGhpcy52aXNpdChub2RlLm5hbWVzcGFjZU5hbWUpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNsYXJhdGlvbnMpO1xuICB9XG5cbiAgdmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG5vZGU6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgLy8gdGhpcy52aXNpdChub2RlLmtleVR5cGUpO1xuICAgIC8vIHRoaXMudmlzaXQobm9kZS52YWx1ZVR5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbihcbiAgICBub2RlOiBJbnRlcmZhY2VEZWNsYXJhdGlvbixcbiAgICBpc0RlZmF1bHQ/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIHRoaXMudmlzaXQobm9kZS5pbXBsZW1lbnRzVHlwZXMpO1xuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUubWVtYmVycyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXRNZXRob2REZWNsYXJhdGlvbihub2RlOiBNZXRob2REZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIHRoaXMudmlzaXQobm9kZS5zaWduYXR1cmUpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNvcmF0b3JzKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgaWYgKG5vZGUuYm9keSkgdGhpcy52aXNpdChub2RlLmJvZHkpO1xuICAgIHRoaXMuZGVwdGgtLTtcbiAgfVxuXG4gIHZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oXG4gICAgbm9kZTogTmFtZXNwYWNlRGVjbGFyYXRpb24sXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5tZW1iZXJzKTtcbiAgfVxuXG4gIHZpc2l0UmV0dXJuU3RhdGVtZW50KG5vZGU6IFJldHVyblN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLnZhbHVlKSB0aGlzLnZpc2l0KG5vZGUudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRTd2l0Y2hDYXNlKG5vZGU6IFN3aXRjaENhc2UpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5sYWJlbCkgdGhpcy52aXNpdChub2RlLmxhYmVsKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50cyk7XG4gIH1cblxuICB2aXNpdFN3aXRjaFN0YXRlbWVudChub2RlOiBTd2l0Y2hTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuY29uZGl0aW9uKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgdGhpcy52aXNpdChub2RlLmNhc2VzKTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdFRocm93U3RhdGVtZW50KG5vZGU6IFRocm93U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLnZhbHVlKTtcbiAgfVxuXG4gIHZpc2l0VHJ5U3RhdGVtZW50KG5vZGU6IFRyeVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnRzKTtcbiAgICBpZiAobm9kZS5jYXRjaFZhcmlhYmxlKSB0aGlzLnZpc2l0KG5vZGUuY2F0Y2hWYXJpYWJsZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmNhdGNoU3RhdGVtZW50cyk7XG4gICAgdGhpcy52aXNpdChub2RlLmZpbmFsbHlTdGF0ZW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0VHlwZURlY2xhcmF0aW9uKG5vZGU6IFR5cGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjb3JhdG9ycyk7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGUpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24obm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS50eXBlKSB0aGlzLnZpc2l0KG5vZGUudHlwZSk7XG4gICAgaWYgKG5vZGUuaW5pdGlhbGl6ZXIpIHRoaXMudmlzaXQobm9kZS5pbml0aWFsaXplcik7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlU3RhdGVtZW50KG5vZGU6IFZhcmlhYmxlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNsYXJhdGlvbnMpO1xuICB9XG5cbiAgdmlzaXRXaGlsZVN0YXRlbWVudChub2RlOiBXaGlsZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50KTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdFZvaWRTdGF0ZW1lbnQobm9kZTogVm9pZFN0YXRlbWVudCk6IHZvaWQge31cblxuICB2aXNpdENvbW1lbnQobm9kZTogQ29tbWVudE5vZGUpOiB2b2lkIHt9XG5cbiAgdmlzaXREZWNvcmF0b3JOb2RlKG5vZGU6IERlY29yYXRvck5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmFyZ3VtZW50cyk7XG4gIH1cblxuICB2aXNpdFBhcmFtZXRlcihub2RlOiBQYXJhbWV0ZXJOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIGlmIChub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbikge1xuICAgICAgdGhpcy52aXNpdChub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbik7XG4gICAgfVxuICAgIGlmIChub2RlLmluaXRpYWxpemVyKSB0aGlzLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlKTtcbiAgfVxuXG59XG4iXX0= + +/***/ }), + +/***/ "./src/index.ts": +/*!**********************!*\ + !*** ./src/index.ts ***! + \**********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +// tslint:disable: no-void-expression as-types as-variables +var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); +var common_1 = __webpack_require__(/*! ../../src/common */ "../src/common.ts"); +var sourceBuilder_1 = __webpack_require__(/*! ./sourceBuilder */ "./src/sourceBuilder.ts"); +var base_1 = __webpack_require__(/*! ./base */ "./src/base.ts"); +var preamble_1 = __webpack_require__(/*! ./preamble */ "./src/preamble.ts"); +function returnsVoid(node) { + return toString(node.signature.returnType) === "void"; +} +function numOfParameters(node) { + return node.signature.parameters.length; +} +function isComment(stmt) { + return stmt.kind == ast_1.NodeKind.COMMENT; +} +function hasNearDecorator(stmt) { + return stmt.text.includes("@nearfile") || isEntry(stmt); +} +function toString(node) { + return sourceBuilder_1.ASTBuilder.build(node); +} +function isEntry(source) { + var _source = ((source.kind == ast_1.NodeKind.SOURCE) ? source : source.range.source); + return _source.sourceKind == ast_1.SourceKind.USER_ENTRY; +} +function isArrayType(type) { + return !!((type.kind == ast_1.NodeKind.NAMEDTYPE) && + toString(type).startsWith("Array") && + type.typeArguments && + type.typeArguments.length > 0); +} +function isClass(type) { + return type.kind == ast_1.NodeKind.CLASSDECLARATION; +} +function isField(mem) { + return mem.kind == ast_1.NodeKind.FIELDDECLARATION; +} +function isReference(type) { + var simpleTypes = [ + "i32", + "u32", + "bool", + "i64", + "u64", + "boolean", + ]; + return !simpleTypes.includes(toString(type)); +} +// TODO: Extract this into separate module, preferrable pluggable +var NEARBindingsBuilder = /** @class */ (function (_super) { + __extends(NEARBindingsBuilder, _super); + function NEARBindingsBuilder() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.typeMapping = { + i32: "Integer", + u32: "Integer", + i64: "String", + u64: "String", + string: "String", + bool: "Boolean", + Uint8Array: "String", + }; + _this.nonNullableTypes = ["i32", "u32", "i64", "u64", "bool", "boolean"]; + _this.sb = []; + _this.exportedClasses = new Map(); + _this.wrappedFuncs = new Set(); + return _this; + } + NEARBindingsBuilder.build = function (parser, source) { + return (new NEARBindingsBuilder().build(source)); + }; + NEARBindingsBuilder.nearFiles = function (parser) { + return parser.program.sources.filter(hasNearDecorator); + }; + NEARBindingsBuilder.prototype.visitClassDeclaration = function (node) { + if (this.exportedClasses.has(toString(node.name))) + return; + this.generateHandler(node); + this.exportedClasses.set(toString(node.name), node); + }; + NEARBindingsBuilder.prototype.visitFunctionDeclaration = function (node) { + if (!isEntry(node) + || this.wrappedFuncs.has(toString(node.name)) + || !node.is(common_1.CommonFlags.EXPORT) + || (numOfParameters(node) == 0 && returnsVoid(node))) { + _super.prototype.visitFunctionDeclaration.call(this, node); + return; + } + // if (numOfParameters(node) > 0){ + // this.generateArgsParser(node); + // } + this.generateWrapperFunction(node); + // Change function to not be an export + node.flags = node.flags ^ common_1.CommonFlags.EXPORT; + this.wrappedFuncs.add(toString(node.name)); + }; + NEARBindingsBuilder.prototype.generateArgsParser = function (node) { + var _this = this; + var signature = node.signature; + var name = toString(node.name); + var args = signature.parameters.map(function (param) { + var name = toString(param.name); + var type = param.type; + return { name: name, + type: type, + isGeneric: node.typeParameters != null && node.typeParameters.some(function (T) { return toString(T) == toString(type); }) + }; + }); + this.sb.push("\nclass __near_ArgsParser_" + name + " extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_ArgsParser_" + name + ">;\n handledRoot: boolean = false;"); + if (args.length > 0) { + args.forEach(function (arg) { + _this.sb.push(" __near_param_" + arg.name + ": " + _this.typeName(arg.type) + ";"); + }); + this.generateHandlerMethods("this.__near_param_", args); + } + else { + this.generateHandlerMethods("this.__near_param_", []); + } + this.sb.push("}"); + }; + /* + Create a wrapper function that will be export in the function's place. + */ + NEARBindingsBuilder.prototype.generateWrapperFunction = function (func) { + var signature = func.signature; + var params = signature.parameters; + var returnType = signature.returnType; + var returnTypeName = toString(returnType).split("|").filter(function (name) { return name.trim() !== "null"; }).join("|"); + var hasNull = toString(returnType).includes("null"); + var name = func.name.symbol; + this.sb.push("\n//@ts-ignore\nfunction __wrapper_" + name + "(): void {"); + if (params.length > 0) { + this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);\n "); + } + if (toString(returnType) !== "void") { + this.sb.push(" let result: " + toString(returnType) + " = " + name + "("); + } + else { + this.sb.push(" " + name + "("); + } + if (params.length > 0) { + this.sb[this.sb.length - 1] += (params + .map(function (param) { return createDecodeStatement(param); }) + .join(", ")); + } + this.sb[this.sb.length - 1] += ");"; + if (toString(returnType) !== "void") { + this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<" + returnTypeName + ">() || isNullable<" + returnTypeName + ">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<" + returnTypeName + ">(encoder, result" + (hasNull ? "!" : "") + ", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"); + } + this.sb.push("}\n\nexport { __wrapper_" + name + " as " + name + " }\n"); + }; + NEARBindingsBuilder.prototype.generateHandlerMethods = function (valuePrefix, fields) { + var _this = this; + var fieldsWithTypes = function (types) { + return fields.filter(function (field) { + return types.indexOf(_this.typeName(field.type)) != -1 || field.isGeneric; + }); + }; + this.generateBasicSetterHandlers(valuePrefix, "Integer", "i64", fieldsWithTypes(["i32", "u32"])); + this.generateBasicSetterHandlers(valuePrefix, "String", "string", fieldsWithTypes(["string", "i64", "u64", "Uint8Array", "u128"])); + this.generateBasicSetterHandlers(valuePrefix, "Boolean", "bool", fieldsWithTypes(["bool"])); + var nonBasicFields = fields.filter(function (field) { return isReference(field.type) || field.isGeneric; }); + this.sb.push(" setNull(name: string): void {"); + nonBasicFields.forEach(function (field) { + _this.sb.push(" if (name == \"" + field.name + "\") {"); + var setter = "" + valuePrefix + field.name + " = <" + _this.typeName(field.type) + ">null"; + if (field.isGeneric) { + _this.sb.push(" if (isNullable<" + _this.typeName(field.type) + ">()){\n " + setter + "\n return;\n }"); + } + else { + _this.sb.push(" " + setter + "\n return;"); + } + _this.sb.push(" }"); + }); + this.sb.push("\n super.setNull(name);\n }"); + this.sb.push("\n pushObject(name: string): bool {"); + this.sb.push("if (!this.handledRoot) {\n assert(name == null || name.length == 0);\n this.handledRoot = true;\n return true;\n } else {\n assert(name != null || name.length != 0);\n }"); + this.generatePushHandler(valuePrefix, nonBasicFields.filter(function (field) { return !isArrayType(field.type); })); + this.sb.push("\n return super.pushObject(name);\n }"); + this.sb.push("\n pushArray(name: string): bool {"); + this.generatePushHandler(valuePrefix, nonBasicFields.filter(function (field) { return isArrayType(field.type); })); + this.sb.push("\n return super.pushArray(name);\n }"); + }; + NEARBindingsBuilder.prototype.generateBasicSetterHandlers = function (valuePrefix, setterType, setterValueType, matchingFields) { + var _this = this; + if (matchingFields.length > 0) { + this.sb.push(" set" + setterType + "(name: string, value: " + setterValueType + "): void {"); + matchingFields.forEach(function (field) { + // tslint:disable-next-line: as-variables + var fieldTypeName = _this.typeName(field.type); + if (setterType == "String" && fieldTypeName != "string") { + if (fieldTypeName == "Uint8Array") { + _this.sb.push(" if (name == \"" + field.name + "\") {\n " + valuePrefix + field.name + " = base64.decode(value);\n return;\n }"); + } + else if (fieldTypeName === "u128") { + _this.sb.push(" if (name == \"" + field.name + "\") {\n " + valuePrefix + field.name + " = u128.fromString(value);\n return;\n }"); + } + else { + var className = _this.typeName(field.type) === "u64" ? "U64" : "I64"; + _this.sb.push(" if (name == \"" + field.name + "\") {\n " + valuePrefix + field.name + " = " + (field.isGeneric ? "<" + toString(field.type) + ">" : "") + className + ".parseInt(value);\n return;\n }"); + } + } + else { + _this.sb.push(" if (name == \"" + field.name + "\") {\n " + valuePrefix + field.name + " = <" + fieldTypeName + ">value;\n return;\n }"); + } + if (field.isGeneric) { + _this.sb.push(" assert(is" + setterType + "<" + fieldTypeName + ">(), \"" + field.name + " is not a " + setterType + "\")"); + } + }); + this.sb.push(" super.set" + setterType + "(name, value);\n }"); + } + }; + NEARBindingsBuilder.prototype.generatePushHandler = function (valuePrefix, fields) { + var _this = this; + fields.forEach(function (field) { + if (!(_this.typeName(field.type) in _this.typeMapping)) { + var referenceCheck = field.isGeneric ? " && isReference<" + _this.typeName(field.type) + ">()" : ""; + _this.sb.push(" if (name == \"" + field.name + "\"" + referenceCheck + ") {\n " + valuePrefix + field.name + " = decode<" + toString(field.type) + ">(this.buffer, this.decoder.state);\n return false;\n }"); + } + }); + }; + NEARBindingsBuilder.prototype.generateHandler = function (type) { + if (isArrayType(type)) { + return; + } + var typeName = this.typeName(type); + this.sb + .push("export class __near_JSONHandler_" + typeName + " extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_JSONHandler_" + typeName + ">;\n handledRoot: boolean = false;\n value: " + this.typeName(type) + ";\n\n constructor(value_: " + this.typeName(type) + ") {\n super();\n this.value = value_;\n }\n "); + this.generateHandlerMethods("this.value.", this.getFields(type)); + this.sb.push("}\n"); + }; + NEARBindingsBuilder.prototype.typeName = function (type) { + if (!isClass(type)) { + return sourceBuilder_1.ASTBuilder.build(type); + } + type = (type); + var className = toString(type.name); + if (type.isGeneric) { + className += "<" + type.typeParameters.map(toString).join(", ") + ">"; + } + return className; + }; + NEARBindingsBuilder.prototype.getFields = function (type) { + var _class = ((isClass(type)) + ? type + : this.exportedClasses.get(toString(type))); + if (_class == null) { + return []; + } + return _class.members + .filter(function (member) { return member.kind == ast_1.NodeKind.FIELDDECLARATION; }) + .map(function (field) { + return { name: toString(field.name), type: field.type, isGeneric: isGeneric(_class, field) }; + }); + }; + NEARBindingsBuilder.prototype.build = function (source) { + var _this = this; + this.sb = [preamble_1.preamble]; + this.visit(source); + var sourceText = source.statements.map(function (stmt) { + var str = sourceBuilder_1.ASTBuilder.build(stmt); + if (isClass(stmt)) { + var _class = stmt; + str = str.slice(0, str.lastIndexOf("}")); + var fields = _class.members.filter(isField).map(function (field) { return field; }); + if (fields.some(function (field) { return field.type == null; })) { + throw new Error("All Fields must have explict type declaration."); + } + var className = _this.typeName(_class); + str += "\n static decode(json: Uint8Array): " + className + " {\n let value = instantiate<" + className + ">(); // Allocate without constructor\n value.decode(JSON.parse(json));\n return value;\n }\n\n decode(json: Obj): " + className + " {\n let obj: Obj = json;\n " + createDecodeStatements(_class) + "\n return this;\n }\n\n \n\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n " + createEncodeStatements(_class).join("\n ") + "\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"; + } + return str; + }); + return this.sb.concat(sourceText).join("\n"); + }; + return NEARBindingsBuilder; +}(base_1.BaseVisitor)); +function createDecodeStatements(_class) { + var res = _class.members.filter(isField).map(function (field) { return createDecodeStatement(field, "this." + toString(field.name) + " = "); }).join(";\n "); + return res + (res.length > 0 ? ";" : ""); +} +function createDecodeStatement(field, setterPrefix) { + if (setterPrefix === void 0) { setterPrefix = ""; } + var T = toString(field.type); + var name = toString(field.name); + return setterPrefix + "decode<" + T + ">(obj, \"" + name + "\")"; +} +function createEncodeStatements(_class) { + return _class.members.filter(isField).map(function (field) { + var T = toString(field.type); + var name = toString(field.name); + return "encode<" + T + ">(encoder, this." + name + ", \"" + name + "\");"; + }); +} +// TODO: Make work for non-simple generics e.g. field: Array +function isGeneric(_class, field) { + if (_class.typeParameters == null) { + return false; + } + return _class.typeParameters.some(function (param) { return toString(param.name) == toString(field.type); }); +} +function afterParse(parser, writeFile, baseDir) { + var files = NEARBindingsBuilder.nearFiles(parser); + files.forEach(function (source) { + var writeOut = source.text.substr(0, source.text.indexOf("\n")).includes("out"); + // Remove from logs in parser + parser.donelog.delete(source.internalPath); + parser.seenlog.delete(source.internalPath); + // Remove from programs sources + parser.program.sources = parser.program.sources.filter(function (_source) { return _source !== source; }); + // Build new Source + var sourceText = NEARBindingsBuilder.build(parser, source); + if (writeOut) { + writeFile("out/" + source.normalizedPath, sourceText, baseDir); + } + // Parses file and any new imports added to the source + parser.parseFile(sourceText, (isEntry(source) ? "" : "./") + source.normalizedPath, isEntry(source)); + }); +} +exports.afterParse = afterParse; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQTJEO0FBQzNELHFDQWN1QjtBQUN2QiwyQ0FBK0M7QUFHL0MsaURBQTZDO0FBQzdDLCtCQUFxQztBQUNyQyx1Q0FBc0M7QUFRdEMsU0FBUyxXQUFXLENBQUMsSUFBeUI7SUFDNUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUM7QUFDeEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLElBQXlCO0lBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFlO0lBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxjQUFRLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQVk7SUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVU7SUFDMUIsT0FBTywwQkFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsTUFBcUI7SUFDcEMsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksY0FBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEYsT0FBTyxPQUFPLENBQUMsVUFBVSxJQUFJLGdCQUFVLENBQUMsVUFBVSxDQUFDO0FB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QUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMvRDtRQUNELHNEQUFzRDtRQUN0RCxNQUFNLENBQUMsU0FBUyxDQUNkLFVBQVUsRUFDVixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUNyRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQ2hCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUVMLENBQUM7QUF4QkQsZ0NBd0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6IG5vLXZvaWQtZXhwcmVzc2lvbiBhcy10eXBlcyBhcy12YXJpYWJsZXNcbmltcG9ydCB7XG4gIFNvdXJjZSxcbiAgTm9kZUtpbmQsXG4gIENsYXNzRGVjbGFyYXRpb24sXG4gIEZ1bmN0aW9uRGVjbGFyYXRpb24sXG4gIFR5cGVOb2RlLFxuICBGaWVsZERlY2xhcmF0aW9uLFxuICBTdGF0ZW1lbnQsXG4gIE5vZGUsXG4gIE5hbWVkVHlwZU5vZGUsXG4gIFNvdXJjZUtpbmQsXG4gIERlY2xhcmF0aW9uU3RhdGVtZW50LFxuICBUeXBlTmFtZSxcbiAgUGFyYW1ldGVyTm9kZVxufSBmcm9tIFwiLi4vLi4vc3JjL2FzdFwiO1xuaW1wb3J0IHsgQ29tbW9uRmxhZ3MgfSBmcm9tIFwiLi4vLi4vc3JjL2NvbW1vblwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4vbW9ja1R5cGVzXCI7XG5cbmltcG9ydCB7IEFTVEJ1aWxkZXIgfSBmcm9tIFwiLi9zb3VyY2VCdWlsZGVyXCI7XG5pbXBvcnQgeyBCYXNlVmlzaXRvciB9IGZyb20gXCIuL2Jhc2VcIjtcbmltcG9ydCB7IHByZWFtYmxlIH0gZnJvbSBcIi4vcHJlYW1ibGVcIjtcblxuaW50ZXJmYWNlIFNpbXBsZUZpZWxkIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBUeXBlTm9kZTtcbiAgaXNHZW5lcmljOiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiByZXR1cm5zVm9pZChub2RlOiBGdW5jdGlvbkRlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiB0b1N0cmluZyhub2RlLnNpZ25hdHVyZS5yZXR1cm5UeXBlKSA9PT0gXCJ2b2lkXCI7XG59XG5cbmZ1bmN0aW9uIG51bU9mUGFyYW1ldGVycyhub2RlOiBGdW5jdGlvbkRlY2xhcmF0aW9uKTogbnVtYmVyIHtcbiAgcmV0dXJuIG5vZGUuc2lnbmF0dXJlLnBhcmFtZXRlcnMubGVuZ3RoO1xufVxuXG5mdW5jdGlvbiBpc0NvbW1lbnQoc3RtdDogU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBzdG10LmtpbmQgPT0gTm9kZUtpbmQuQ09NTUVOVDtcbn1cblxuZnVuY3Rpb24gaGFzTmVhckRlY29yYXRvcihzdG10OiBTb3VyY2UpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0bXQudGV4dC5pbmNsdWRlcyhcIkBuZWFyZmlsZVwiKSB8fCBpc0VudHJ5KHN0bXQpO1xufVxuXG5mdW5jdGlvbiB0b1N0cmluZyhub2RlOiBOb2RlKTogc3RyaW5nIHtcbiAgcmV0dXJuIEFTVEJ1aWxkZXIuYnVpbGQobm9kZSk7XG59XG5cbmZ1bmN0aW9uIGlzRW50cnkoc291cmNlOiBTb3VyY2UgfCBOb2RlKTogYm9vbGVhbiB7XG4gIGxldCBfc291cmNlID0gPFNvdXJjZT4oKHNvdXJjZS5raW5kID09IE5vZGVLaW5kLlNPVVJDRSkgPyBzb3VyY2UgOiBzb3VyY2UucmFuZ2Uuc291cmNlKTtcbiAgcmV0dXJuIF9zb3VyY2Uuc291cmNlS2luZCA9PSBTb3VyY2VLaW5kLlVTRVJfRU5UUlk7XG59XG5cbmZ1bmN0aW9uIGlzQXJyYXlUeXBlKHR5cGU6IFR5cGVOb2RlIHwgQ2xhc3NEZWNsYXJhdGlvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gISEoXG4gICAgKHR5cGUua2luZCA9PSBOb2RlS2luZC5OQU1FRFRZUEUpICYmXG4gICAgdG9TdHJpbmcodHlwZSkuc3RhcnRzV2l0aChcIkFycmF5XCIpICYmXG4gICAgKDxOYW1lZFR5cGVOb2RlPnR5cGUpLnR5cGVBcmd1bWVudHMgJiZcbiAgICAoPE5hbWVkVHlwZU5vZGU+dHlwZSkudHlwZUFyZ3VtZW50cyEubGVuZ3RoID4gMFxuICApO1xufVxuXG5mdW5jdGlvbiBpc0NsYXNzKHR5cGU6IE5vZGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUua2luZCA9PSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OO1xufVxuXG5mdW5jdGlvbiBpc0ZpZWxkKG1lbTogRGVjbGFyYXRpb25TdGF0ZW1lbnQpIHtcbiAgcmV0dXJuIG1lbS5raW5kID09IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT047XG59XG5cbmZ1bmN0aW9uIGlzUmVmZXJlbmNlKHR5cGU6IFR5cGVOb2RlKTogYm9vbGVhbiB7XG4gIGxldCBzaW1wbGVUeXBlcyA9IFtcbiAgICBcImkzMlwiLFxuICAgIFwidTMyXCIsXG4gICAgXCJib29sXCIsXG4gICAgXCJpNjRcIixcbiAgICBcInU2NFwiLFxuICAgIFwiYm9vbGVhblwiLFxuICBdO1xuICByZXR1cm4gIXNpbXBsZVR5cGVzLmluY2x1ZGVzKHRvU3RyaW5nKHR5cGUpKTtcbn1cblxuLy8gVE9ETzogRXh0cmFjdCB0aGlzIGludG8gc2VwYXJhdGUgbW9kdWxlLCBwcmVmZXJyYWJsZSBwbHVnZ2FibGVcbmNsYXNzIE5FQVJCaW5kaW5nc0J1aWxkZXIgZXh0ZW5kcyBCYXNlVmlzaXRvciB7XG4gIHByaXZhdGUgdHlwZU1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgaTMyOiBcIkludGVnZXJcIixcbiAgICB1MzI6IFwiSW50ZWdlclwiLFxuICAgIGk2NDogXCJTdHJpbmdcIixcbiAgICB1NjQ6IFwiU3RyaW5nXCIsXG4gICAgc3RyaW5nOiBcIlN0cmluZ1wiLFxuICAgIGJvb2w6IFwiQm9vbGVhblwiLFxuICAgIFVpbnQ4QXJyYXk6IFwiU3RyaW5nXCIsXG4gIH07XG5cbiAgcHJpdmF0ZSBub25OdWxsYWJsZVR5cGVzID0gW1wiaTMyXCIsIFwidTMyXCIsIFwiaTY0XCIsIFwidTY0XCIsIFwiYm9vbFwiLCBcImJvb2xlYW5cIl07XG5cbiAgcHJpdmF0ZSBzYjogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBleHBvcnRlZENsYXNzZXM6IE1hcDxzdHJpbmcsIENsYXNzRGVjbGFyYXRpb24+ID0gbmV3IE1hcCgpO1xuICB3cmFwcGVkRnVuY3M6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuXG4gIHN0YXRpYyBidWlsZChwYXJzZXI6IFBhcnNlciwgc291cmNlOiBTb3VyY2UpOiBzdHJpbmcge1xuICAgIHJldHVybiAobmV3IE5FQVJCaW5kaW5nc0J1aWxkZXIoKS5idWlsZChzb3VyY2UpKTtcbiAgfVxuXG4gIHN0YXRpYyBuZWFyRmlsZXMocGFyc2VyOiBQYXJzZXIpOiBTb3VyY2VbXSB7XG4gICAgcmV0dXJuIHBhcnNlci5wcm9ncmFtLnNvdXJjZXMuZmlsdGVyKGhhc05lYXJEZWNvcmF0b3IpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0RlY2xhcmF0aW9uKG5vZGU6IENsYXNzRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5leHBvcnRlZENsYXNzZXMuaGFzKHRvU3RyaW5nKG5vZGUubmFtZSkpKSByZXR1cm47XG4gICAgdGhpcy5nZW5lcmF0ZUhhbmRsZXIobm9kZSk7XG4gICAgdGhpcy5leHBvcnRlZENsYXNzZXMuc2V0KHRvU3RyaW5nKG5vZGUubmFtZSksIG5vZGUpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkRlY2xhcmF0aW9uKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICBpZiAoIWlzRW50cnkobm9kZSlcbiAgICAgICAgfHwgdGhpcy53cmFwcGVkRnVuY3MuaGFzKHRvU3RyaW5nKG5vZGUubmFtZSkpXG4gICAgICAgIHx8ICFub2RlLmlzKENvbW1vbkZsYWdzLkVYUE9SVClcbiAgICAgICAgfHwgKG51bU9mUGFyYW1ldGVycyhub2RlKSA9PSAwICYmIHJldHVybnNWb2lkKG5vZGUpKVxuICAgICAgICApIHtcbiAgICAgICAgc3VwZXIudmlzaXRGdW5jdGlvbkRlY2xhcmF0aW9uKG5vZGUpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGlmIChudW1PZlBhcmFtZXRlcnMobm9kZSkgPiAwKXtcbiAgICAvLyAgIHRoaXMuZ2VuZXJhdGVBcmdzUGFyc2VyKG5vZGUpO1xuICAgIC8vIH1cbiAgICB0aGlzLmdlbmVyYXRlV3JhcHBlckZ1bmN0aW9uKG5vZGUpO1xuICAgIC8vIENoYW5nZSBmdW5jdGlvbiB0byBub3QgYmUgYW4gZXhwb3J0XG4gICAgbm9kZS5mbGFncyA9IG5vZGUuZmxhZ3MgXiBDb21tb25GbGFncy5FWFBPUlQ7XG4gICAgdGhpcy53cmFwcGVkRnVuY3MuYWRkKHRvU3RyaW5nKG5vZGUubmFtZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUFyZ3NQYXJzZXIobm9kZTogRnVuY3Rpb25EZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBzaWduYXR1cmUgPSBub2RlLnNpZ25hdHVyZTtcbiAgICBsZXQgbmFtZSA9IHRvU3RyaW5nKG5vZGUubmFtZSk7XG4gICAgdmFyIGFyZ3M6IFNpbXBsZUZpZWxkW10gPSBzaWduYXR1cmUucGFyYW1ldGVycy5tYXAocGFyYW0gPT4ge1xuICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhwYXJhbS5uYW1lKTtcbiAgICAgIGxldCB0eXBlID0gcGFyYW0udHlwZTtcbiAgICAgIHJldHVybiB7IG5hbWUsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGlzR2VuZXJpYzogbm9kZS50eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIG5vZGUudHlwZVBhcmFtZXRlcnMuc29tZShUID0+IHRvU3RyaW5nKFQpID09IHRvU3RyaW5nKHR5cGUpKVxuICAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLnNiLnB1c2goYFxuY2xhc3MgX19uZWFyX0FyZ3NQYXJzZXJfJHtuYW1lfSBleHRlbmRzIFRocm93aW5nSlNPTkhhbmRsZXIge1xuICBidWZmZXI6IFVpbnQ4QXJyYXk7XG4gIGRlY29kZXI6IEpTT05EZWNvZGVyPF9fbmVhcl9BcmdzUGFyc2VyXyR7bmFtZX0+O1xuICBoYW5kbGVkUm9vdDogYm9vbGVhbiA9IGZhbHNlO2ApO1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGFyZ3MuZm9yRWFjaChhcmcgPT4ge1xuICAgICAgICB0aGlzLnNiLnB1c2goXG5gICBfX25lYXJfcGFyYW1fJHthcmcubmFtZX06ICR7dGhpcy50eXBlTmFtZShhcmcudHlwZSl9O2BcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5nZW5lcmF0ZUhhbmRsZXJNZXRob2RzKFwidGhpcy5fX25lYXJfcGFyYW1fXCIsIGFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdlbmVyYXRlSGFuZGxlck1ldGhvZHMoXCJ0aGlzLl9fbmVhcl9wYXJhbV9cIiwgW10pO1xuICAgIH1cbiAgICB0aGlzLnNiLnB1c2goYH1gKTtcbiAgfVxuXG4gIC8qXG4gIENyZWF0ZSBhIHdyYXBwZXIgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGV4cG9ydCBpbiB0aGUgZnVuY3Rpb24ncyBwbGFjZS5cbiAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZVdyYXBwZXJGdW5jdGlvbihmdW5jOiBGdW5jdGlvbkRlY2xhcmF0aW9uKSB7XG4gICAgbGV0IHNpZ25hdHVyZSA9IGZ1bmMuc2lnbmF0dXJlO1xuICAgIGxldCBwYXJhbXMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICBsZXQgcmV0dXJuVHlwZSA9IHNpZ25hdHVyZS5yZXR1cm5UeXBlO1xuICAgIGxldCByZXR1cm5UeXBlTmFtZSA9IHRvU3RyaW5nKHJldHVyblR5cGUpLnNwbGl0KFwifFwiKS5maWx0ZXIobmFtZSA9PiBuYW1lLnRyaW0oKSAhPT0gXCJudWxsXCIpLmpvaW4oXCJ8XCIpO1xuICAgIGxldCBoYXNOdWxsID0gdG9TdHJpbmcocmV0dXJuVHlwZSkuaW5jbHVkZXMoXCJudWxsXCIpO1xuICAgIGxldCBuYW1lID0gZnVuYy5uYW1lLnN5bWJvbDtcbiAgICB0aGlzLnNiLnB1c2goYFxuLy9AdHMtaWdub3JlXG5mdW5jdGlvbiBfX3dyYXBwZXJfJHtuYW1lfSgpOiB2b2lkIHtgKTtcbiAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCl7XG4gICAgIHRoaXMuc2IucHVzaChcbmAgIC8vIFJlYWRpbmcgaW5wdXQgYnl0ZXMuXG4gIGlucHV0KDApO1xuICBsZXQganNvbl9sZW4gPSByZWdpc3Rlcl9sZW4oMCk7XG4gIGlmIChqc29uX2xlbiA9PSBVMzIuTUFYX1ZBTFVFKSB7XG4gICAgcGFuaWMoKTtcbiAgfVxuICBsZXQganNvbiA9IG5ldyBVaW50OEFycmF5KGpzb25fbGVuIGFzIHUzMik7XG4gIHJlYWRfcmVnaXN0ZXIoMCwgPHVzaXplPmpzb24uYnVmZmVyKTtcbiAgY29uc3Qgb2JqOiBPYmogPSBKU09OLnBhcnNlKGpzb24pO1xuICBgKTtcbiAgICB9XG4gICAgaWYgKHRvU3RyaW5nKHJldHVyblR5cGUpICE9PSBcInZvaWRcIikge1xuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgbGV0IHJlc3VsdDogJHt0b1N0cmluZyhyZXR1cm5UeXBlKX0gPSAke25hbWV9KGApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNiLnB1c2goXG5gICAke25hbWV9KGApO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2JbdGhpcy5zYi5sZW5ndGggLSAxXSArPSAoXG4gICAgICAgIHBhcmFtc1xuICAgICAgICAgIC5tYXAoKHBhcmFtKSA9PiBjcmVhdGVEZWNvZGVTdGF0ZW1lbnQocGFyYW0pKVxuICAgICAgICAgIC5qb2luKFwiLCBcIilcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuc2JbdGhpcy5zYi5sZW5ndGggLSAxXSArPSBcIik7XCI7XG4gICAgaWYgKHRvU3RyaW5nKHJldHVyblR5cGUpICE9PSBcInZvaWRcIikge1xuICAgICAgdGhpcy5zYi5wdXNoKGBcbiAgbGV0IGVuY29kZXIgPSBuZXcgSlNPTkVuY29kZXIoKTtcbiAgaWYgKChpc1N0cmluZzwke3JldHVyblR5cGVOYW1lfT4oKSB8fCBpc051bGxhYmxlPCR7cmV0dXJuVHlwZU5hbWV9PigpKSAmJiByZXN1bHQgPT0gbnVsbCkge1xuICAgIGVuY29kZXIuc2V0TnVsbChudWxsKTtcbiAgfSBlbHNlIHtcbiAgICBlbmNvZGU8JHtyZXR1cm5UeXBlTmFtZX0+KGVuY29kZXIsIHJlc3VsdCR7aGFzTnVsbCA/IFwiIVwiIDogXCJcIn0sIG51bGwpO1xuICB9XG4gIGxldCB2YWw6IFVpbnQ4QXJyYXkgPSBlbmNvZGVyLnNlcmlhbGl6ZSgpO1xuICB2YWx1ZV9yZXR1cm4odmFsLmJ5dGVMZW5ndGgsIDx1c2l6ZT52YWwuYnVmZmVyKTtgKTtcbiAgICB9XG4gICAgdGhpcy5zYi5wdXNoKGB9XG5cbmV4cG9ydCB7IF9fd3JhcHBlcl8ke25hbWV9IGFzICR7bmFtZX0gfVxuYCk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlSGFuZGxlck1ldGhvZHMoXG4gICAgdmFsdWVQcmVmaXg6IHN0cmluZyxcbiAgICBmaWVsZHM6IFNpbXBsZUZpZWxkW11cbiAgKTogdm9pZCB7XG4gICAgdmFyIGZpZWxkc1dpdGhUeXBlcyA9ICh0eXBlczogc3RyaW5nW10pOiBTaW1wbGVGaWVsZFtdID0+XG4gICAgICBmaWVsZHMuZmlsdGVyKGZpZWxkID0+XG4gICAgICAgICAgICB0eXBlcy5pbmRleE9mKHRoaXMudHlwZU5hbWUoZmllbGQudHlwZSkpICE9IC0xIHx8IGZpZWxkLmlzR2VuZXJpYyk7XG5cbiAgICB0aGlzLmdlbmVyYXRlQmFzaWNTZXR0ZXJIYW5kbGVycyhcbiAgICAgIHZhbHVlUHJlZml4LFxuICAgICAgXCJJbnRlZ2VyXCIsXG4gICAgICBcImk2NFwiLFxuICAgICAgZmllbGRzV2l0aFR5cGVzKFtcImkzMlwiLCBcInUzMlwiXSlcbiAgICApO1xuICAgIHRoaXMuZ2VuZXJhdGVCYXNpY1NldHRlckhhbmRsZXJzKFxuICAgICAgdmFsdWVQcmVmaXgsXG4gICAgICBcIlN0cmluZ1wiLFxuICAgICAgXCJzdHJpbmdcIixcbiAgICAgIGZpZWxkc1dpdGhUeXBlcyhbXCJzdHJpbmdcIiwgXCJpNjRcIiwgXCJ1NjRcIiwgXCJVaW50OEFycmF5XCIsIFwidTEyOFwiXSlcbiAgICApO1xuICAgIHRoaXMuZ2VuZXJhdGVCYXNpY1NldHRlckhhbmRsZXJzKFxuICAgICAgdmFsdWVQcmVmaXgsXG4gICAgICBcIkJvb2xlYW5cIixcbiAgICAgIFwiYm9vbFwiLFxuICAgICAgZmllbGRzV2l0aFR5cGVzKFtcImJvb2xcIl0pXG4gICAgKTtcblxuICAgIHZhciBub25CYXNpY0ZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gaXNSZWZlcmVuY2UoZmllbGQudHlwZSkgfHwgZmllbGQuaXNHZW5lcmljKTtcblxuICAgIHRoaXMuc2IucHVzaChgICBzZXROdWxsKG5hbWU6IHN0cmluZyk6IHZvaWQge2ApO1xuICAgIG5vbkJhc2ljRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgICBpZiAobmFtZSA9PSBcIiR7ZmllbGQubmFtZX1cIikge2ApO1xuICAgICAgbGV0IHNldHRlciA9IGAke3ZhbHVlUHJlZml4fSR7ZmllbGQubmFtZX0gPSA8JHt0aGlzLnR5cGVOYW1lKGZpZWxkLnR5cGUpfT5udWxsYDtcbiAgICAgIGlmIChmaWVsZC5pc0dlbmVyaWMpIHtcbiAgICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgICAgICBpZiAoaXNOdWxsYWJsZTwke3RoaXMudHlwZU5hbWUoZmllbGQudHlwZSl9PigpKXtcbiAgICAgICAgICR7c2V0dGVyfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgIH1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNiLnB1c2goXG5gICAgICAgICAke3NldHRlcn1cbiAgICAgICAgIHJldHVybjtgKTtcbiAgICAgICAgfVxuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgICAgIH1gKTtcbiAgICB9KTtcbiAgICB0aGlzLnNiLnB1c2goYFxuICAgIHN1cGVyLnNldE51bGwobmFtZSk7XG4gIH1gKTtcblxuICAgIHRoaXMuc2IucHVzaChgXG4gIHB1c2hPYmplY3QobmFtZTogc3RyaW5nKTogYm9vbCB7YCk7XG4gICAgdGhpcy5zYi5wdXNoKFxuICAgIGBpZiAoIXRoaXMuaGFuZGxlZFJvb3QpIHtcbiAgICAgIGFzc2VydChuYW1lID09IG51bGwgfHwgbmFtZS5sZW5ndGggPT0gMCk7XG4gICAgICB0aGlzLmhhbmRsZWRSb290ID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobmFtZSAhPSBudWxsIHx8IG5hbWUubGVuZ3RoICE9IDApO1xuICAgIH1gKTtcbiAgICB0aGlzLmdlbmVyYXRlUHVzaEhhbmRsZXIoXG4gICAgICB2YWx1ZVByZWZpeCxcbiAgICAgIG5vbkJhc2ljRmllbGRzLmZpbHRlcihmaWVsZCA9PiAhaXNBcnJheVR5cGUoZmllbGQudHlwZSkpXG4gICAgKTtcbiAgICB0aGlzLnNiLnB1c2goYFxuICAgIHJldHVybiBzdXBlci5wdXNoT2JqZWN0KG5hbWUpO1xuICB9YCk7XG4gICAgdGhpcy5zYi5wdXNoKGBcbiAgcHVzaEFycmF5KG5hbWU6IHN0cmluZyk6IGJvb2wge2ApO1xuICAgIHRoaXMuZ2VuZXJhdGVQdXNoSGFuZGxlcihcbiAgICAgIHZhbHVlUHJlZml4LFxuICAgICAgbm9uQmFzaWNGaWVsZHMuZmlsdGVyKGZpZWxkID0+IGlzQXJyYXlUeXBlKGZpZWxkLnR5cGUpKVxuICAgICk7XG4gICAgdGhpcy5zYi5wdXNoKGBcbiAgICByZXR1cm4gc3VwZXIucHVzaEFycmF5KG5hbWUpO1xuICB9YCk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQmFzaWNTZXR0ZXJIYW5kbGVycyhcbiAgICB2YWx1ZVByZWZpeDogc3RyaW5nLFxuICAgIHNldHRlclR5cGU6IHN0cmluZyxcbiAgICBzZXR0ZXJWYWx1ZVR5cGU6IHN0cmluZyxcbiAgICBtYXRjaGluZ0ZpZWxkczogU2ltcGxlRmllbGRbXVxuICApIHtcbiAgICBpZiAobWF0Y2hpbmdGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgc2V0JHtzZXR0ZXJUeXBlfShuYW1lOiBzdHJpbmcsIHZhbHVlOiAke3NldHRlclZhbHVlVHlwZX0pOiB2b2lkIHtgXG4gICAgICApO1xuICAgICAgbWF0Y2hpbmdGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogYXMtdmFyaWFibGVzXG4gICAgICAgIGxldCBmaWVsZFR5cGVOYW1lID0gdGhpcy50eXBlTmFtZShmaWVsZC50eXBlKTtcbiAgICAgICAgaWYgKHNldHRlclR5cGUgPT0gXCJTdHJpbmdcIiAmJiBmaWVsZFR5cGVOYW1lICE9IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBpZiAoZmllbGRUeXBlTmFtZSA9PSBcIlVpbnQ4QXJyYXlcIikge1xuICAgICAgICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgICBpZiAobmFtZSA9PSBcIiR7ZmllbGQubmFtZX1cIikge1xuICAgICAgICR7dmFsdWVQcmVmaXh9JHtmaWVsZC5uYW1lfSA9IGJhc2U2NC5kZWNvZGUodmFsdWUpO1xuICAgICAgIHJldHVybjtcbiAgICAgfWApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRUeXBlTmFtZSA9PT0gXCJ1MTI4XCIpIHtcbiAgICAgICAgICAgIHRoaXMuc2IucHVzaChcbmAgICAgaWYgKG5hbWUgPT0gXCIke2ZpZWxkLm5hbWV9XCIpIHtcbiAgICAgICR7dmFsdWVQcmVmaXh9JHtmaWVsZC5uYW1lfSA9IHUxMjguZnJvbVN0cmluZyh2YWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgIH1gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGNsYXNzTmFtZSA9IHRoaXMudHlwZU5hbWUoZmllbGQudHlwZSkgPT09IFwidTY0XCIgPyBcIlU2NFwiIDogXCJJNjRcIjtcbiAgICAgICAgICAgIHRoaXMuc2IucHVzaChcbmAgICAgaWYgKG5hbWUgPT0gXCIke2ZpZWxkLm5hbWV9XCIpIHtcbiAgICAgICR7dmFsdWVQcmVmaXh9JHtmaWVsZC5uYW1lfSA9ICR7ZmllbGQuaXNHZW5lcmljID8gXCI8XCIgKyB0b1N0cmluZyhmaWVsZC50eXBlKSArIFwiPlwiIDogXCJcIn0ke2NsYXNzTmFtZX0ucGFyc2VJbnQodmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgICB9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2IucHVzaChcbmAgICAgaWYgKG5hbWUgPT0gXCIke2ZpZWxkLm5hbWV9XCIpIHtcbiAgICAgICR7dmFsdWVQcmVmaXh9JHtmaWVsZC5uYW1lfSA9IDwke2ZpZWxkVHlwZU5hbWV9PnZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgICB9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmlzR2VuZXJpYykge1xuICAgICAgICAgIHRoaXMuc2IucHVzaChcbmAgICAgYXNzZXJ0KGlzJHtzZXR0ZXJUeXBlfTwke2ZpZWxkVHlwZU5hbWV9PigpLCBcIiR7ZmllbGQubmFtZX0gaXMgbm90IGEgJHtzZXR0ZXJUeXBlfVwiKWApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgICBzdXBlci5zZXQke3NldHRlclR5cGV9KG5hbWUsIHZhbHVlKTtcbiAgICB9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVB1c2hIYW5kbGVyKHZhbHVlUHJlZml4OiBzdHJpbmcsIGZpZWxkczogU2ltcGxlRmllbGRbXSkge1xuICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGlmICghKHRoaXMudHlwZU5hbWUoZmllbGQudHlwZSkgaW4gdGhpcy50eXBlTWFwcGluZykpIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZUNoZWNrID0gZmllbGQuaXNHZW5lcmljID8gYCAmJiBpc1JlZmVyZW5jZTwke3RoaXMudHlwZU5hbWUoZmllbGQudHlwZSl9PigpYCA6IFwiXCI7XG4gICAgICAgIHRoaXMuc2IucHVzaChcbmAgICAgICAgaWYgKG5hbWUgPT0gXCIke2ZpZWxkLm5hbWV9XCIke3JlZmVyZW5jZUNoZWNrfSkge1xuICAgICAgICAgICR7dmFsdWVQcmVmaXh9JHtmaWVsZC5uYW1lfSA9IGRlY29kZTwke3RvU3RyaW5nKGZpZWxkLnR5cGUpfT4odGhpcy5idWZmZXIsIHRoaXMuZGVjb2Rlci5zdGF0ZSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlSGFuZGxlcih0eXBlOiBUeXBlTm9kZSB8IENsYXNzRGVjbGFyYXRpb24pIHtcbiAgICBpZiAoaXNBcnJheVR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHR5cGVOYW1lID0gdGhpcy50eXBlTmFtZSh0eXBlKTtcbiAgICB0aGlzLnNiXG4gICAgICAucHVzaChgZXhwb3J0IGNsYXNzIF9fbmVhcl9KU09OSGFuZGxlcl8ke3R5cGVOYW1lfSBleHRlbmRzIFRocm93aW5nSlNPTkhhbmRsZXIge1xuICBidWZmZXI6IFVpbnQ4QXJyYXk7XG4gIGRlY29kZXI6IEpTT05EZWNvZGVyPF9fbmVhcl9KU09OSGFuZGxlcl8ke3R5cGVOYW1lfT47XG4gIGhhbmRsZWRSb290OiBib29sZWFuID0gZmFsc2U7XG4gIHZhbHVlOiAke3RoaXMudHlwZU5hbWUodHlwZSl9O1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlXzogJHt0aGlzLnR5cGVOYW1lKHR5cGUpfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXztcbiAgfVxuICAgICAgYCk7XG5cbiAgICB0aGlzLmdlbmVyYXRlSGFuZGxlck1ldGhvZHMoXCJ0aGlzLnZhbHVlLlwiLCB0aGlzLmdldEZpZWxkcyh0eXBlKSk7XG4gICAgdGhpcy5zYi5wdXNoKFwifVxcblwiKTtcbiAgfVxuXG4gIHByaXZhdGUgdHlwZU5hbWUodHlwZTogVHlwZU5vZGUgfCBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzQ2xhc3ModHlwZSkpIHtcbiAgICAgIHJldHVybiBBU1RCdWlsZGVyLmJ1aWxkKHR5cGUpO1xuICAgIH1cbiAgICB0eXBlID0gPENsYXNzRGVjbGFyYXRpb24+KHR5cGUpO1xuICAgIGxldCBjbGFzc05hbWUgPSB0b1N0cmluZyh0eXBlLm5hbWUpO1xuICAgIGlmICh0eXBlLmlzR2VuZXJpYykge1xuICAgICAgY2xhc3NOYW1lICs9IFwiPFwiICsgdHlwZS50eXBlUGFyYW1ldGVycyEubWFwKHRvU3RyaW5nKS5qb2luKFwiLCBcIikgKyBcIj5cIjtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRzKHR5cGU6IFR5cGVOb2RlIHwgQ2xhc3NEZWNsYXJhdGlvbik6IFNpbXBsZUZpZWxkW10ge1xuICAgIGxldCBfY2xhc3MgPSA8Q2xhc3NEZWNsYXJhdGlvbj4gKChpc0NsYXNzKHR5cGUpKVxuICAgICAgICA/IHR5cGVcbiAgICAgICAgOiB0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5nZXQodG9TdHJpbmcodHlwZSkpKTtcbiAgICBpZiAoX2NsYXNzID09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gX2NsYXNzLm1lbWJlcnNcbiAgICAgIC5maWx0ZXIobWVtYmVyID0+IG1lbWJlci5raW5kID09IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT04pXG4gICAgICAubWFwKFxuICAgICAgICAoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24pOiBTaW1wbGVGaWVsZCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgbmFtZTogdG9TdHJpbmcoZmllbGQubmFtZSksIHR5cGU6IGZpZWxkLnR5cGUhLCBpc0dlbmVyaWM6IGlzR2VuZXJpYyhfY2xhc3MsIGZpZWxkKX07XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBidWlsZChzb3VyY2U6IFNvdXJjZSk6IHN0cmluZyB7XG4gICAgICB0aGlzLnNiID0gW3ByZWFtYmxlXTtcbiAgICAgIHRoaXMudmlzaXQoc291cmNlKTtcbiAgICAgIGxldCBzb3VyY2VUZXh0ID0gc291cmNlLnN0YXRlbWVudHMubWFwKHN0bXQgPT4ge1xuICAgICAgICBsZXQgc3RyID0gQVNUQnVpbGRlci5idWlsZChzdG10KTtcbiAgICAgICAgaWYgKGlzQ2xhc3Moc3RtdCkpIHtcbiAgICAgICAgICBsZXQgX2NsYXNzID0gPENsYXNzRGVjbGFyYXRpb24+IHN0bXQ7XG4gICAgICAgICAgc3RyID0gc3RyLnNsaWNlKDAsIHN0ci5sYXN0SW5kZXhPZihcIn1cIikpO1xuICAgICAgICAgIGxldCBmaWVsZHMgPSBfY2xhc3MubWVtYmVycy5maWx0ZXIoaXNGaWVsZCkubWFwKChmaWVsZDogRmllbGREZWNsYXJhdGlvbikgPT4gZmllbGQpO1xuICAgICAgICAgIGlmIChmaWVsZHMuc29tZShmaWVsZCA9PiBmaWVsZC50eXBlID09IG51bGwpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbGwgRmllbGRzIG11c3QgaGF2ZSBleHBsaWN0IHR5cGUgZGVjbGFyYXRpb24uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgY2xhc3NOYW1lID0gdGhpcy50eXBlTmFtZShfY2xhc3MpO1xuICAgICAgICAgIHN0ciArPSBgXG4gIHN0YXRpYyBkZWNvZGUoanNvbjogVWludDhBcnJheSk6ICR7Y2xhc3NOYW1lfSB7XG4gICAgbGV0IHZhbHVlID0gaW5zdGFudGlhdGU8JHtjbGFzc05hbWV9PigpOyAvLyBBbGxvY2F0ZSB3aXRob3V0IGNvbnN0cnVjdG9yXG4gICAgdmFsdWUuZGVjb2RlKEpTT04ucGFyc2UoanNvbikpO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGRlY29kZShqc29uOiBPYmopOiAke2NsYXNzTmFtZX0ge1xuICAgIGxldCBvYmo6IE9iaiA9IGpzb247XG4gICAgJHtjcmVhdGVEZWNvZGVTdGF0ZW1lbnRzKF9jbGFzcyl9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBcblxuICBlbmNvZGUoX2VuY29kZXI6IEpTT05FbmNvZGVyIHwgbnVsbCA9IG51bGwsIG5hbWU6IHN0cmluZyB8IG51bGwgPSBcIlwiKTogSlNPTkVuY29kZXIge1xuICAgIGxldCBlbmNvZGVyID0gKF9lbmNvZGVyICE9IG51bGwgPyBfZW5jb2RlciA6IG5ldyBKU09ORW5jb2RlcigpKSE7XG4gICAgZW5jb2Rlci5wdXNoT2JqZWN0KG5hbWUpO1xuICAgICR7Y3JlYXRlRW5jb2RlU3RhdGVtZW50cyhfY2xhc3MpLmpvaW4oXCJcXG4gICAgXCIpfVxuICAgIGVuY29kZXIucG9wT2JqZWN0KCk7XG4gICAgcmV0dXJuIGVuY29kZXJcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5lbmNvZGUoKS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVuY29kZSgpLnRvU3RyaW5nKCk7XG4gIH1cbn1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRoaXMuc2IuY29uY2F0KHNvdXJjZVRleHQpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY29kZVN0YXRlbWVudHMoX2NsYXNzOiBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nIHtcbiAgbGV0IHJlcyA9IF9jbGFzcy5tZW1iZXJzLmZpbHRlcihpc0ZpZWxkKS5tYXAoICAgIFxuICAgIChmaWVsZDogRmllbGREZWNsYXJhdGlvbik6IHN0cmluZyAgPT4gY3JlYXRlRGVjb2RlU3RhdGVtZW50KGZpZWxkLCBgdGhpcy4ke3RvU3RyaW5nKGZpZWxkLm5hbWUpfSA9IGApXG4gICkuam9pbihcIjtcXG4gICAgXCIpO1xuICByZXR1cm4gcmVzICsgKHJlcy5sZW5ndGg+MCA/IFwiO1wiOiBcIlwiKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNvZGVTdGF0ZW1lbnQoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24gfCBQYXJhbWV0ZXJOb2RlLCBzZXR0ZXJQcmVmaXg6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xuICBsZXQgVCA9IHRvU3RyaW5nKGZpZWxkLnR5cGUhKTtcbiAgbGV0IG5hbWUgPSB0b1N0cmluZyhmaWVsZC5uYW1lKTtcbiAgcmV0dXJuIGAke3NldHRlclByZWZpeH1kZWNvZGU8JHtUfT4ob2JqLCBcIiR7bmFtZX1cIilgO1xuXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVuY29kZVN0YXRlbWVudHMoX2NsYXNzOiBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nW10ge1xuICByZXR1cm4gX2NsYXNzLm1lbWJlcnMuZmlsdGVyKGlzRmllbGQpLm1hcChcbiAgICAoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24pOiBzdHJpbmcgID0+IHtcbiAgICAgIGxldCBUID0gdG9TdHJpbmcoZmllbGQudHlwZSEpO1xuICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhmaWVsZC5uYW1lKTtcbiAgICAgIHJldHVybiBgZW5jb2RlPCR7VH0+KGVuY29kZXIsIHRoaXMuJHtuYW1lfSwgXCIke25hbWV9XCIpO2A7XG4gICAgfVxuICApO1xufVxuLy8gVE9ETzogTWFrZSB3b3JrIGZvciBub24tc2ltcGxlIGdlbmVyaWNzIGUuZy4gZmllbGQ6IEFycmF5PFQ+XG5mdW5jdGlvbiBpc0dlbmVyaWMoX2NsYXNzOiBDbGFzc0RlY2xhcmF0aW9uLCBmaWVsZDogRmllbGREZWNsYXJhdGlvbik6IGJvb2xlYW4ge1xuICBpZiAoX2NsYXNzLnR5cGVQYXJhbWV0ZXJzID09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIF9jbGFzcy50eXBlUGFyYW1ldGVycy5zb21lKHBhcmFtID0+IHRvU3RyaW5nKHBhcmFtLm5hbWUpID09IHRvU3RyaW5nKGZpZWxkLnR5cGUhKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZnRlclBhcnNlKHBhcnNlcjogUGFyc2VyLCB3cml0ZUZpbGU6IEZpbGVXcml0ZXIsIGJhc2VEaXI6IHN0cmluZyk6IHZvaWQge1xuICBsZXQgZmlsZXMgPSBORUFSQmluZGluZ3NCdWlsZGVyLm5lYXJGaWxlcyhwYXJzZXIpO1xuICBmaWxlcy5mb3JFYWNoKHNvdXJjZSA9PiB7XG4gICAgbGV0IHdyaXRlT3V0ID0gc291cmNlLnRleHQuc3Vic3RyKDAsIHNvdXJjZS50ZXh0LmluZGV4T2YoXCJcXG5cIikpLmluY2x1ZGVzKFwib3V0XCIpO1xuICAgIC8vIFJlbW92ZSBmcm9tIGxvZ3MgaW4gcGFyc2VyXG4gICAgcGFyc2VyLmRvbmVsb2cuZGVsZXRlKHNvdXJjZS5pbnRlcm5hbFBhdGgpO1xuICAgIHBhcnNlci5zZWVubG9nLmRlbGV0ZShzb3VyY2UuaW50ZXJuYWxQYXRoKTtcbiAgICAvLyBSZW1vdmUgZnJvbSBwcm9ncmFtcyBzb3VyY2VzXG4gICAgcGFyc2VyLnByb2dyYW0uc291cmNlcyA9IHBhcnNlci5wcm9ncmFtLnNvdXJjZXMuZmlsdGVyKFxuICAgICAgKF9zb3VyY2U6IFNvdXJjZSkgPT4gX3NvdXJjZSAhPT0gc291cmNlXG4gICAgKTtcbiAgICAvLyBCdWlsZCBuZXcgU291cmNlXG4gICAgbGV0IHNvdXJjZVRleHQgPSBORUFSQmluZGluZ3NCdWlsZGVyLmJ1aWxkKHBhcnNlciwgc291cmNlKTtcbiAgICBpZiAod3JpdGVPdXQpIHtcbiAgICAgd3JpdGVGaWxlKFwib3V0L1wiICsgc291cmNlLm5vcm1hbGl6ZWRQYXRoLCBzb3VyY2VUZXh0LCBiYXNlRGlyKTtcbiAgICB9XG4gICAgLy8gUGFyc2VzIGZpbGUgYW5kIGFueSBuZXcgaW1wb3J0cyBhZGRlZCB0byB0aGUgc291cmNlXG4gICAgcGFyc2VyLnBhcnNlRmlsZShcbiAgICAgIHNvdXJjZVRleHQsXG4gICAgICAoaXNFbnRyeShzb3VyY2UpID8gXCJcIiA6IFwiLi9cIikgKyBzb3VyY2Uubm9ybWFsaXplZFBhdGgsXG4gICAgICBpc0VudHJ5KHNvdXJjZSlcbiAgICApO1xuICB9KTtcblxufVxuIl19 + +/***/ }), + +/***/ "./src/preamble.ts": +/*!*************************!*\ + !*** ./src/preamble.ts ***! + \*************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.preamble = "import { base64 } from \"near-runtime-ts\";\nimport { JSONEncoder } from \"assemblyscript-json\";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\n"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYW1ibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJlYW1ibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDYSxRQUFBLFFBQVEsR0FBRyw4TEFHdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNvbnN0IHByZWFtYmxlID0gYGltcG9ydCB7IGJhc2U2NCB9IGZyb20gXCJuZWFyLXJ1bnRpbWUtdHNcIjtcbmltcG9ydCB7IEpTT05FbmNvZGVyIH0gZnJvbSBcImFzc2VtYmx5c2NyaXB0LWpzb25cIjtcbmltcG9ydCB7IEpTT05EZWNvZGVyLCBUaHJvd2luZ0pTT05IYW5kbGVyLCBEZWNvZGVyU3RhdGUgfSBmcm9tIFwiYXNzZW1ibHlzY3JpcHQtanNvblwiO1xuYDtcbiJdfQ== + +/***/ }), + +/***/ "./src/sourceBuilder.ts": +/*!******************************!*\ + !*** ./src/sourceBuilder.ts ***! + \******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); +__webpack_require__(/*! ../../std/portable/index */ "../std/portable/index.js"); +__webpack_require__(/*! ../../src/glue/js/float */ "../src/glue/js/float.js"); +__webpack_require__(/*! ../../src/glue/js/i64 */ "../src/glue/js/i64.js"); +var common_1 = __webpack_require__(/*! ../../src/common */ "../src/common.ts"); +var util_1 = __webpack_require__(/*! ../../src/util */ "../src/util/index.ts"); +var tokenizer_1 = __webpack_require__(/*! ../../src/tokenizer */ "../src/tokenizer.ts"); +/** An AST builder. */ +var ASTBuilder = /** @class */ (function () { + function ASTBuilder() { + this.sb = []; + this.indentLevel = 0; + } + /** Rebuilds the textual source from the specified AST, as far as possible. */ + ASTBuilder.build = function (node) { + var builder = new ASTBuilder(); + builder.visitNode(node); + return builder.finish(); + }; + ASTBuilder.prototype.visitNode = function (node) { + switch (node.kind) { + case ast_1.NodeKind.SOURCE: { + this.visitSource(node); + break; + } + // types + case ast_1.NodeKind.NAMEDTYPE: { + this.visitNamedTypeNode(node); + break; + } + case ast_1.NodeKind.FUNCTIONTYPE: { + this.visitFunctionTypeNode(node); + break; + } + case ast_1.NodeKind.TYPEPARAMETER: { + this.visitTypeParameter(node); + break; + } + // expressions + case ast_1.NodeKind.FALSE: + case ast_1.NodeKind.NULL: + case ast_1.NodeKind.SUPER: + case ast_1.NodeKind.THIS: + case ast_1.NodeKind.TRUE: + case ast_1.NodeKind.CONSTRUCTOR: + case ast_1.NodeKind.IDENTIFIER: { + this.visitIdentifierExpression(node); + break; + } + case ast_1.NodeKind.ASSERTION: { + this.visitAssertionExpression(node); + break; + } + case ast_1.NodeKind.BINARY: { + this.visitBinaryExpression(node); + break; + } + case ast_1.NodeKind.CALL: { + this.visitCallExpression(node); + break; + } + case ast_1.NodeKind.CLASS: { + this.visitClassExpression(node); + break; + } + case ast_1.NodeKind.COMMA: { + this.visitCommaExpression(node); + break; + } + case ast_1.NodeKind.ELEMENTACCESS: { + this.visitElementAccessExpression(node); + break; + } + case ast_1.NodeKind.FUNCTION: { + this.visitFunctionExpression(node); + break; + } + case ast_1.NodeKind.INSTANCEOF: { + this.visitInstanceOfExpression(node); + break; + } + case ast_1.NodeKind.LITERAL: { + this.visitLiteralExpression(node); + break; + } + case ast_1.NodeKind.NEW: { + this.visitNewExpression(node); + break; + } + case ast_1.NodeKind.PARENTHESIZED: { + this.visitParenthesizedExpression(node); + break; + } + case ast_1.NodeKind.PROPERTYACCESS: { + this.visitPropertyAccessExpression(node); + break; + } + case ast_1.NodeKind.TERNARY: { + this.visitTernaryExpression(node); + break; + } + case ast_1.NodeKind.UNARYPOSTFIX: { + this.visitUnaryPostfixExpression(node); + break; + } + case ast_1.NodeKind.UNARYPREFIX: { + this.visitUnaryPrefixExpression(node); + break; + } + // statements + case ast_1.NodeKind.BLOCK: { + this.visitBlockStatement(node); + break; + } + case ast_1.NodeKind.BREAK: { + this.visitBreakStatement(node); + break; + } + case ast_1.NodeKind.CONTINUE: { + this.visitContinueStatement(node); + break; + } + case ast_1.NodeKind.DO: { + this.visitDoStatement(node); + break; + } + case ast_1.NodeKind.EMPTY: { + this.visitEmptyStatement(node); + break; + } + case ast_1.NodeKind.EXPORT: { + this.visitExportStatement(node); + break; + } + case ast_1.NodeKind.EXPORTDEFAULT: { + this.visitExportDefaultStatement(node); + break; + } + case ast_1.NodeKind.EXPORTIMPORT: { + this.visitExportImportStatement(node); + break; + } + case ast_1.NodeKind.EXPRESSION: { + this.visitExpressionStatement(node); + break; + } + case ast_1.NodeKind.FOR: { + this.visitForStatement(node); + break; + } + case ast_1.NodeKind.IF: { + this.visitIfStatement(node); + break; + } + case ast_1.NodeKind.IMPORT: { + this.visitImportStatement(node); + break; + } + case ast_1.NodeKind.RETURN: { + this.visitReturnStatement(node); + break; + } + case ast_1.NodeKind.SWITCH: { + this.visitSwitchStatement(node); + break; + } + case ast_1.NodeKind.THROW: { + this.visitThrowStatement(node); + break; + } + case ast_1.NodeKind.TRY: { + this.visitTryStatement(node); + break; + } + case ast_1.NodeKind.VARIABLE: { + this.visitVariableStatement(node); + break; + } + case ast_1.NodeKind.WHILE: { + this.visitWhileStatement(node); + break; + } + // declaration statements + case ast_1.NodeKind.CLASSDECLARATION: { + this.visitClassDeclaration(node); + break; + } + case ast_1.NodeKind.ENUMDECLARATION: { + this.visitEnumDeclaration(node); + break; + } + case ast_1.NodeKind.ENUMVALUEDECLARATION: { + this.visitEnumValueDeclaration(node); + break; + } + case ast_1.NodeKind.FIELDDECLARATION: { + this.visitFieldDeclaration(node); + break; + } + case ast_1.NodeKind.FUNCTIONDECLARATION: { + this.visitFunctionDeclaration(node); + break; + } + case ast_1.NodeKind.IMPORTDECLARATION: { + this.visitImportDeclaration(node); + break; + } + case ast_1.NodeKind.INDEXSIGNATUREDECLARATION: { + this.visitIndexSignatureDeclaration(node); + break; + } + case ast_1.NodeKind.INTERFACEDECLARATION: { + this.visitInterfaceDeclaration(node); + break; + } + case ast_1.NodeKind.METHODDECLARATION: { + this.visitMethodDeclaration(node); + break; + } + case ast_1.NodeKind.NAMESPACEDECLARATION: { + this.visitNamespaceDeclaration(node); + break; + } + case ast_1.NodeKind.TYPEDECLARATION: { + this.visitTypeDeclaration(node); + break; + } + case ast_1.NodeKind.VARIABLEDECLARATION: { + this.visitVariableDeclaration(node); + break; + } + // other + case ast_1.NodeKind.DECORATOR: { + this.serializeDecorator(node); + break; + } + case ast_1.NodeKind.EXPORTMEMBER: { + this.visitExportMember(node); + break; + } + case ast_1.NodeKind.PARAMETER: { + this.serializeParameter(node); + break; + } + case ast_1.NodeKind.SWITCHCASE: { + this.visitSwitchCase(node); + break; + } + default: assert(false); + } + }; + ASTBuilder.prototype.visitSource = function (source) { + var statements = source.statements; + for (var i = 0, k = statements.length; i < k; ++i) { + this.visitNodeAndTerminate(statements[i]); + } + }; + // types + ASTBuilder.prototype.visitTypeNode = function (node) { + switch (node.kind) { + case ast_1.NodeKind.NAMEDTYPE: { + this.visitNamedTypeNode(node); + break; + } + case ast_1.NodeKind.FUNCTIONTYPE: { + this.visitFunctionTypeNode(node); + break; + } + default: assert(false); + } + }; + ASTBuilder.prototype.visitTypeName = function (node) { + this.visitIdentifierExpression(node.identifier); + var sb = this.sb; + var current = node.next; + while (current) { + sb.push("."); + this.visitIdentifierExpression(current.identifier); + current = current.next; + } + }; + ASTBuilder.prototype.visitNamedTypeNode = function (node) { + this.visitTypeName(node.name); + var typeArguments = node.typeArguments; + if (typeArguments) { + var numTypeArguments = typeArguments.length; + var sb = this.sb; + if (numTypeArguments) { + sb.push("<"); + this.visitTypeNode(typeArguments[0]); + for (var i = 1; i < numTypeArguments; ++i) { + sb.push(", "); + this.visitTypeNode(typeArguments[i]); + } + sb.push(">"); + } + if (node.isNullable) + sb.push(" | null"); + } + }; + ASTBuilder.prototype.visitFunctionTypeNode = function (node) { + var isNullable = node.isNullable; + var sb = this.sb; + sb.push(isNullable ? "((" : "("); + var explicitThisType = node.explicitThisType; + if (explicitThisType) { + sb.push("this: "); + this.visitTypeNode(explicitThisType); + } + var parameters = node.parameters; + var numParameters = parameters.length; + if (numParameters) { + if (explicitThisType) + sb.push(", "); + this.serializeParameter(parameters[0]); + for (var i = 1; i < numParameters; ++i) { + sb.push(", "); + this.serializeParameter(parameters[i]); + } + } + var returnType = node.returnType; + if (returnType) { + sb.push(") => "); + this.visitTypeNode(returnType); + } + else { + sb.push(") => void"); + } + if (isNullable) + sb.push(") | null"); + }; + ASTBuilder.prototype.visitTypeParameter = function (node) { + this.visitIdentifierExpression(node.name); + var extendsType = node.extendsType; + if (extendsType) { + this.sb.push(" extends "); + this.visitTypeNode(extendsType); + } + var defaultType = node.defaultType; + if (defaultType) { + this.sb.push("="); + this.visitTypeNode(defaultType); + } + }; + // expressions + ASTBuilder.prototype.visitIdentifierExpression = function (node) { + if (node.isQuoted) + this.visitStringLiteral(node.text); + else + this.sb.push(node.text); + }; + ASTBuilder.prototype.visitArrayLiteralExpression = function (node) { + var sb = this.sb; + sb.push("["); + var elements = node.elementExpressions; + var numElements = elements.length; + if (numElements) { + if (elements[0]) + this.visitNode(elements[0]); + for (var i = 1; i < numElements; ++i) { + sb.push(", "); + if (elements[i]) + this.visitNode(elements[i]); + } + } + sb.push("]"); + }; + ASTBuilder.prototype.visitObjectLiteralExpression = function (node) { + var sb = this.sb; + var names = node.names; + var values = node.values; + var numElements = names.length; + assert(numElements == values.length); + if (numElements) { + sb.push("{\n"); + util_1.indent(sb, ++this.indentLevel); + this.visitNode(names[0]); + sb.push(": "); + this.visitNode(values[0]); + for (var i = 1; i < numElements; ++i) { + sb.push(",\n"); + util_1.indent(sb, this.indentLevel); + var name = names[i]; + var value = values[i]; + if (name === value) { + this.visitNode(name); + } + else { + this.visitNode(name); + sb.push(": "); + this.visitNode(value); + } + } + sb.push("\n"); + util_1.indent(sb, --this.indentLevel); + sb.push("}"); + } + else { + sb.push("{}"); + } + }; + ASTBuilder.prototype.visitAssertionExpression = function (node) { + var sb = this.sb; + switch (node.assertionKind) { + case ast_1.AssertionKind.PREFIX: { + sb.push("<"); + this.visitTypeNode(assert(node.toType)); + sb.push(">"); + this.visitNode(node.expression); + break; + } + case ast_1.AssertionKind.AS: { + this.visitNode(node.expression); + sb.push(" as "); + this.visitTypeNode(assert(node.toType)); + break; + } + case ast_1.AssertionKind.NONNULL: { + this.visitNode(node.expression); + sb.push("!"); + break; + } + default: assert(false); + } + }; + ASTBuilder.prototype.visitBinaryExpression = function (node) { + var sb = this.sb; + this.visitNode(node.left); + sb.push(" "); + sb.push(tokenizer_1.operatorTokenToString(node.operator)); + sb.push(" "); + this.visitNode(node.right); + }; + ASTBuilder.prototype.visitCallExpression = function (node) { + var sb = this.sb; + this.visitNode(node.expression); + var typeArguments = node.typeArguments; + if (typeArguments) { + var numTypeArguments = typeArguments.length; + if (numTypeArguments) { + sb.push("<"); + this.visitTypeNode(typeArguments[0]); + for (var i = 1; i < numTypeArguments; ++i) { + sb.push(", "); + this.visitTypeNode(typeArguments[i]); + } + sb.push(">("); + } + } + else { + sb.push("("); + } + var args = node.arguments; + var numArgs = args.length; + if (numArgs) { + this.visitNode(args[0]); + for (var i = 1; i < numArgs; ++i) { + sb.push(", "); + this.visitNode(args[i]); + } + } + sb.push(")"); + }; + ASTBuilder.prototype.visitClassExpression = function (node) { + var declaration = node.declaration; + this.visitClassDeclaration(declaration); + }; + ASTBuilder.prototype.visitCommaExpression = function (node) { + var expressions = node.expressions; + var numExpressions = assert(expressions.length); + this.visitNode(expressions[0]); + var sb = this.sb; + for (var i = 1; i < numExpressions; ++i) { + sb.push(","); + this.visitNode(expressions[i]); + } + }; + ASTBuilder.prototype.visitElementAccessExpression = function (node) { + var sb = this.sb; + this.visitNode(node.expression); + sb.push("["); + this.visitNode(node.elementExpression); + sb.push("]"); + }; + ASTBuilder.prototype.visitFunctionExpression = function (node) { + var declaration = node.declaration; + if (!declaration.arrowKind) { + if (declaration.name.text.length) { + this.sb.push("function "); + } + else { + this.sb.push("function"); + } + } + else { + assert(declaration.name.text.length == 0); + } + this.visitFunctionCommon(declaration); + }; + ASTBuilder.prototype.visitLiteralExpression = function (node) { + switch (node.literalKind) { + case ast_1.LiteralKind.FLOAT: { + this.visitFloatLiteralExpression(node); + break; + } + case ast_1.LiteralKind.INTEGER: { + this.visitIntegerLiteralExpression(node); + break; + } + case ast_1.LiteralKind.STRING: { + this.visitStringLiteralExpression(node); + break; + } + case ast_1.LiteralKind.REGEXP: { + this.visitRegexpLiteralExpression(node); + break; + } + case ast_1.LiteralKind.ARRAY: { + this.visitArrayLiteralExpression(node); + break; + } + case ast_1.LiteralKind.OBJECT: { + this.visitObjectLiteralExpression(node); + break; + } + default: { + assert(false); + break; + } + } + }; + ASTBuilder.prototype.visitFloatLiteralExpression = function (node) { + this.sb.push(node.value.toString(10)); + }; + ASTBuilder.prototype.visitInstanceOfExpression = function (node) { + this.visitNode(node.expression); + this.sb.push(" instanceof "); + this.visitTypeNode(node.isType); + }; + ASTBuilder.prototype.visitIntegerLiteralExpression = function (node) { + this.sb.push(i64_to_string(node.value)); + }; + ASTBuilder.prototype.visitStringLiteral = function (str, singleQuoted) { + if (singleQuoted === void 0) { singleQuoted = false; } + var sb = this.sb; + var off = 0; + var quote = singleQuoted ? "'" : "\""; + sb.push(quote); + var i = 0; + for (var k = str.length; i < k;) { + switch (str.charCodeAt(i)) { + case 0 /* NULL */: { + if (i > off) + sb.push(str.substring(off, off = i + 1)); + sb.push("\\0"); + off = ++i; + break; + } + case 8 /* BACKSPACE */: { + if (i > off) + sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\b"); + break; + } + case 9 /* TAB */: { + if (i > off) + sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\t"); + break; + } + case 10 /* LINEFEED */: { + if (i > off) + sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\n"); + break; + } + case 11 /* VERTICALTAB */: { + if (i > off) + sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\v"); + break; + } + case 12 /* FORMFEED */: { + if (i > off) + sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\f"); + break; + } + case 13 /* CARRIAGERETURN */: { + if (i > off) + sb.push(str.substring(off, i)); + sb.push("\\r"); + off = ++i; + break; + } + case 34 /* DOUBLEQUOTE */: { + if (!singleQuoted) { + if (i > off) + sb.push(str.substring(off, i)); + sb.push("\\\""); + off = ++i; + } + else { + ++i; + } + break; + } + case 39 /* SINGLEQUOTE */: { + if (singleQuoted) { + if (i > off) + sb.push(str.substring(off, i)); + sb.push("\\'"); + off = ++i; + } + else { + ++i; + } + break; + } + case 92 /* BACKSLASH */: { + if (i > off) + sb.push(str.substring(off, i)); + sb.push("\\\\"); + off = ++i; + break; + } + default: { + ++i; + break; + } + } + } + if (i > off) + sb.push(str.substring(off, i)); + sb.push(quote); + }; + ASTBuilder.prototype.visitStringLiteralExpression = function (node) { + this.visitStringLiteral(node.value); + }; + ASTBuilder.prototype.visitRegexpLiteralExpression = function (node) { + var sb = this.sb; + sb.push("/"); + sb.push(node.pattern); + sb.push("/"); + sb.push(node.patternFlags); + }; + ASTBuilder.prototype.visitNewExpression = function (node) { + this.sb.push("new "); + this.visitCallExpression(node); + }; + ASTBuilder.prototype.visitParenthesizedExpression = function (node) { + var sb = this.sb; + sb.push("("); + this.visitNode(node.expression); + sb.push(")"); + }; + ASTBuilder.prototype.visitPropertyAccessExpression = function (node) { + this.visitNode(node.expression); + this.sb.push("."); + this.visitIdentifierExpression(node.property); + }; + ASTBuilder.prototype.visitTernaryExpression = function (node) { + var sb = this.sb; + this.visitNode(node.condition); + sb.push(" ? "); + this.visitNode(node.ifThen); + sb.push(" : "); + this.visitNode(node.ifElse); + }; + ASTBuilder.prototype.visitUnaryExpression = function (node) { + switch (node.kind) { + case ast_1.NodeKind.UNARYPOSTFIX: { + this.visitUnaryPostfixExpression(node); + break; + } + case ast_1.NodeKind.UNARYPREFIX: { + this.visitUnaryPrefixExpression(node); + break; + } + default: assert(false); + } + }; + ASTBuilder.prototype.visitUnaryPostfixExpression = function (node) { + this.visitNode(node.operand); + this.sb.push(tokenizer_1.operatorTokenToString(node.operator)); + }; + ASTBuilder.prototype.visitUnaryPrefixExpression = function (node) { + this.sb.push(tokenizer_1.operatorTokenToString(node.operator)); + this.visitNode(node.operand); + }; + // statements + ASTBuilder.prototype.visitNodeAndTerminate = function (statement) { + this.visitNode(statement); + var sb = this.sb; + if (!sb.length || // leading EmptyStatement + statement.kind == ast_1.NodeKind.VARIABLE || // potentially assigns a FunctionExpression + statement.kind == ast_1.NodeKind.EXPRESSION // potentially assigns a FunctionExpression + ) { + sb.push(";\n"); + } + else { + var last = sb[sb.length - 1]; + var lastCharPos = last.length - 1; + if (lastCharPos >= 0 && (last.charCodeAt(lastCharPos) == 125 /* CLOSEBRACE */ || + last.charCodeAt(lastCharPos) == 59 /* SEMICOLON */)) { + sb.push("\n"); + } + else { + sb.push(";\n"); + } + } + }; + ASTBuilder.prototype.visitBlockStatement = function (node) { + var sb = this.sb; + var statements = node.statements; + var numStatements = statements.length; + if (numStatements) { + sb.push("{\n"); + var indentLevel = ++this.indentLevel; + for (var i = 0; i < numStatements; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(statements[i]); + } + util_1.indent(sb, --this.indentLevel); + sb.push("}"); + } + else { + sb.push("{}"); + } + }; + ASTBuilder.prototype.visitBreakStatement = function (node) { + var label = node.label; + if (label) { + this.sb.push("break "); + this.visitIdentifierExpression(label); + } + else { + this.sb.push("break"); + } + }; + ASTBuilder.prototype.visitContinueStatement = function (node) { + var label = node.label; + if (label) { + this.sb.push("continue "); + this.visitIdentifierExpression(label); + } + else { + this.sb.push("continue"); + } + }; + ASTBuilder.prototype.visitClassDeclaration = function (node, isDefault) { + if (isDefault === void 0) { isDefault = false; } + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + var sb = this.sb; + if (isDefault) { + sb.push("export default "); + } + else { + this.serializeExternalModifiers(node); + } + if (node.is(common_1.CommonFlags.ABSTRACT)) + sb.push("abstract "); + if (node.name.text.length) { + sb.push("class "); + this.visitIdentifierExpression(node.name); + } + else { + sb.push("class"); + } + var typeParameters = node.typeParameters; + if (typeParameters && typeParameters.length) { + sb.push("<"); + this.visitTypeParameter(typeParameters[0]); + for (var i = 1, k = typeParameters.length; i < k; ++i) { + sb.push(", "); + this.visitTypeParameter(typeParameters[i]); + } + sb.push(">"); + } + var extendsType = node.extendsType; + if (extendsType) { + sb.push(" extends "); + this.visitTypeNode(extendsType); + } + var implementsTypes = node.implementsTypes; + if (implementsTypes) { + var numImplementsTypes = implementsTypes.length; + if (numImplementsTypes) { + sb.push(" implements "); + this.visitTypeNode(implementsTypes[0]); + for (var i = 1; i < numImplementsTypes; ++i) { + sb.push(", "); + this.visitTypeNode(implementsTypes[i]); + } + } + } + var members = node.members; + var numMembers = members.length; + if (numMembers) { + sb.push(" {\n"); + var indentLevel = ++this.indentLevel; + for (var i = 0, k = members.length; i < k; ++i) { + var member = members[i]; + if (member.kind != ast_1.NodeKind.FIELDDECLARATION || member.parameterIndex < 0) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(member); + } + } + util_1.indent(sb, --this.indentLevel); + sb.push("}"); + } + else { + sb.push(" {}"); + } + }; + ASTBuilder.prototype.visitDoStatement = function (node) { + var sb = this.sb; + sb.push("do "); + this.visitNode(node.statement); + if (node.statement.kind == ast_1.NodeKind.BLOCK) { + sb.push(" while ("); + } + else { + sb.push(";\n"); + util_1.indent(sb, this.indentLevel); + sb.push("while ("); + } + this.visitNode(node.condition); + sb.push(")"); + }; + ASTBuilder.prototype.visitEmptyStatement = function (node) { + }; + ASTBuilder.prototype.visitEnumDeclaration = function (node, isDefault) { + if (isDefault === void 0) { isDefault = false; } + var sb = this.sb; + if (isDefault) { + sb.push("export default "); + } + else { + this.serializeExternalModifiers(node); + } + if (node.is(common_1.CommonFlags.CONST)) + sb.push("const "); + sb.push("enum "); + this.visitIdentifierExpression(node.name); + var values = node.values; + var numValues = values.length; + if (numValues) { + sb.push(" {\n"); + var indentLevel = ++this.indentLevel; + util_1.indent(sb, indentLevel); + this.visitEnumValueDeclaration(node.values[0]); + for (var i = 1; i < numValues; ++i) { + sb.push(",\n"); + util_1.indent(sb, indentLevel); + this.visitEnumValueDeclaration(node.values[i]); + } + sb.push("\n"); + util_1.indent(sb, --this.indentLevel); + sb.push("}"); + } + else { + sb.push(" {}"); + } + }; + ASTBuilder.prototype.visitEnumValueDeclaration = function (node) { + this.visitIdentifierExpression(node.name); + if (node.value) { + this.sb.push(" = "); + this.visitNode(node.value); + } + }; + ASTBuilder.prototype.visitExportImportStatement = function (node) { + var sb = this.sb; + sb.push("export import "); + this.visitIdentifierExpression(node.externalName); + sb.push(" = "); + this.visitIdentifierExpression(node.name); + }; + ASTBuilder.prototype.visitExportMember = function (node) { + this.visitIdentifierExpression(node.localName); + if (node.exportedName.text != node.localName.text) { + this.sb.push(" as "); + this.visitIdentifierExpression(node.exportedName); + } + }; + ASTBuilder.prototype.visitExportStatement = function (node) { + var sb = this.sb; + if (node.isDeclare) { + sb.push("declare "); + } + var members = node.members; + if (members && members.length) { + var numMembers = members.length; + sb.push("export {\n"); + var indentLevel = ++this.indentLevel; + util_1.indent(sb, indentLevel); + this.visitExportMember(members[0]); + for (var i = 1; i < numMembers; ++i) { + sb.push(",\n"); + util_1.indent(sb, indentLevel); + this.visitExportMember(members[i]); + } + --this.indentLevel; + sb.push("\n}"); + } + else { + sb.push("export {}"); + } + var path = node.path; + if (path) { + sb.push(" from "); + this.visitStringLiteralExpression(path); + } + sb.push(";"); + }; + ASTBuilder.prototype.visitExportDefaultStatement = function (node) { + var declaration = node.declaration; + switch (declaration.kind) { + case ast_1.NodeKind.ENUMDECLARATION: { + this.visitEnumDeclaration(declaration, true); + break; + } + case ast_1.NodeKind.FUNCTIONDECLARATION: { + this.visitFunctionDeclaration(declaration, true); + break; + } + case ast_1.NodeKind.CLASSDECLARATION: { + this.visitClassDeclaration(declaration, true); + break; + } + case ast_1.NodeKind.INTERFACEDECLARATION: { + this.visitInterfaceDeclaration(declaration, true); + break; + } + case ast_1.NodeKind.NAMESPACEDECLARATION: { + this.visitNamespaceDeclaration(declaration, true); + break; + } + default: assert(false); + } + }; + ASTBuilder.prototype.visitExpressionStatement = function (node) { + this.visitNode(node.expression); + }; + ASTBuilder.prototype.visitFieldDeclaration = function (node) { + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + this.serializeAccessModifiers(node); + this.visitIdentifierExpression(node.name); + var sb = this.sb; + if (node.flags & common_1.CommonFlags.DEFINITE_ASSIGNMENT) { + sb.push("!"); + } + var type = node.type; + if (type) { + sb.push(": "); + this.visitTypeNode(type); + } + var initializer = node.initializer; + if (initializer) { + sb.push(" = "); + this.visitNode(initializer); + } + }; + ASTBuilder.prototype.visitForStatement = function (node) { + var sb = this.sb; + sb.push("for ("); + var initializer = node.initializer; + if (initializer) { + this.visitNode(initializer); + } + var condition = node.condition; + if (condition) { + sb.push("; "); + this.visitNode(condition); + } + else { + sb.push(";"); + } + var incrementor = node.incrementor; + if (incrementor) { + sb.push("; "); + this.visitNode(incrementor); + } + else { + sb.push(";"); + } + sb.push(") "); + this.visitNode(node.statement); + }; + ASTBuilder.prototype.visitFunctionDeclaration = function (node, isDefault) { + if (isDefault === void 0) { isDefault = false; } + var sb = this.sb; + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + if (isDefault) { + sb.push("export default "); + } + else { + this.serializeExternalModifiers(node); + this.serializeAccessModifiers(node); + } + if (node.name.text.length) { + sb.push("function "); + } + else { + sb.push("function"); + } + this.visitFunctionCommon(node); + }; + ASTBuilder.prototype.visitFunctionCommon = function (node) { + var sb = this.sb; + this.visitIdentifierExpression(node.name); + var signature = node.signature; + var typeParameters = node.typeParameters; + if (typeParameters) { + var numTypeParameters = typeParameters.length; + if (numTypeParameters) { + sb.push("<"); + this.visitTypeParameter(typeParameters[0]); + for (var i = 1; i < numTypeParameters; ++i) { + sb.push(", "); + this.visitTypeParameter(typeParameters[i]); + } + sb.push(">"); + } + } + if (node.arrowKind == 2 /* ARROW_SINGLE */) { + var parameters = signature.parameters; + assert(parameters.length == 1); + assert(!signature.explicitThisType); + this.serializeParameter(parameters[0]); + } + else { + sb.push("("); + var parameters = signature.parameters; + var numParameters = parameters.length; + var explicitThisType = signature.explicitThisType; + if (explicitThisType) { + sb.push("this: "); + this.visitTypeNode(explicitThisType); + } + if (numParameters) { + if (explicitThisType) + sb.push(", "); + this.serializeParameter(parameters[0]); + for (var i = 1; i < numParameters; ++i) { + sb.push(", "); + this.serializeParameter(parameters[i]); + } + } + } + var body = node.body; + var returnType = signature.returnType; + if (node.arrowKind) { + if (body) { + if (node.arrowKind == 2 /* ARROW_SINGLE */) { + assert(ast_1.isTypeOmitted(returnType)); + } + else { + if (ast_1.isTypeOmitted(returnType)) { + sb.push(")"); + } + else { + sb.push("): "); + this.visitTypeNode(returnType); + } + } + sb.push(" => "); + this.visitNode(body); + } + else { + assert(!ast_1.isTypeOmitted(returnType)); + sb.push(" => "); + this.visitTypeNode(returnType); + } + } + else { + if (!ast_1.isTypeOmitted(returnType) && + !node.isAny(common_1.CommonFlags.CONSTRUCTOR | common_1.CommonFlags.SET)) { + sb.push("): "); + this.visitTypeNode(returnType); + } + else { + sb.push(")"); + } + if (body) { + sb.push(" "); + this.visitNode(body); + } + } + }; + ASTBuilder.prototype.visitIfStatement = function (node) { + var sb = this.sb; + sb.push("if ("); + this.visitNode(node.condition); + sb.push(") "); + var ifTrue = node.ifTrue; + this.visitNode(ifTrue); + if (ifTrue.kind != ast_1.NodeKind.BLOCK) { + sb.push(";\n"); + } + var ifFalse = node.ifFalse; + if (ifFalse) { + if (ifTrue.kind == ast_1.NodeKind.BLOCK) { + sb.push(" else "); + } + else { + sb.push("else "); + } + this.visitNode(ifFalse); + } + }; + ASTBuilder.prototype.visitImportDeclaration = function (node) { + var externalName = node.foreignName; + var name = node.name; + this.visitIdentifierExpression(externalName); + if (externalName.text != name.text) { + this.sb.push(" as "); + this.visitIdentifierExpression(name); + } + }; + ASTBuilder.prototype.visitImportStatement = function (node) { + var sb = this.sb; + sb.push("import "); + var declarations = node.declarations; + var namespaceName = node.namespaceName; + if (declarations) { + var numDeclarations = declarations.length; + if (numDeclarations) { + sb.push("{\n"); + var indentLevel = ++this.indentLevel; + util_1.indent(sb, indentLevel); + this.visitImportDeclaration(declarations[0]); + for (var i = 1; i < numDeclarations; ++i) { + sb.push(",\n"); + util_1.indent(sb, indentLevel); + this.visitImportDeclaration(declarations[i]); + } + --this.indentLevel; + sb.push("\n} from "); + } + else { + sb.push("{} from "); + } + } + else if (namespaceName) { + sb.push("* as "); + this.visitIdentifierExpression(namespaceName); + sb.push(" from "); + } + this.visitStringLiteralExpression(node.path); + }; + ASTBuilder.prototype.visitIndexSignatureDeclaration = function (node) { + var sb = this.sb; + sb.push("[key: "); + this.visitTypeNode(node.keyType); + sb.push("]: "); + this.visitTypeNode(node.valueType); + }; + ASTBuilder.prototype.visitInterfaceDeclaration = function (node, isDefault) { + if (isDefault === void 0) { isDefault = false; } + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + var sb = this.sb; + if (isDefault) { + sb.push("export default "); + } + else { + this.serializeExternalModifiers(node); + } + sb.push("interface "); + this.visitIdentifierExpression(node.name); + var typeParameters = node.typeParameters; + if (typeParameters && typeParameters.length) { + sb.push("<"); + this.visitTypeParameter(typeParameters[0]); + for (var i = 1, k = typeParameters.length; i < k; ++i) { + sb.push(", "); + this.visitTypeParameter(typeParameters[i]); + } + sb.push(">"); + } + var extendsType = node.extendsType; + if (extendsType) { + sb.push(" extends "); + this.visitTypeNode(extendsType); + } + // must not have implementsTypes + sb.push(" {\n"); + var indentLevel = ++this.indentLevel; + var members = node.members; + for (var i = 0, k = members.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(members[i]); + } + --this.indentLevel; + sb.push("}"); + }; + ASTBuilder.prototype.visitMethodDeclaration = function (node) { + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + this.serializeAccessModifiers(node); + if (node.is(common_1.CommonFlags.GET)) { + this.sb.push("get "); + } + else if (node.is(common_1.CommonFlags.SET)) { + this.sb.push("set "); + } + this.visitFunctionCommon(node); + }; + ASTBuilder.prototype.visitNamespaceDeclaration = function (node, isDefault) { + if (isDefault === void 0) { isDefault = false; } + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + var sb = this.sb; + if (isDefault) { + sb.push("export default "); + } + else { + this.serializeExternalModifiers(node); + } + sb.push("namespace "); + this.visitIdentifierExpression(node.name); + var members = node.members; + var numMembers = members.length; + if (numMembers) { + sb.push(" {\n"); + var indentLevel = ++this.indentLevel; + for (var i = 0, k = members.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(members[i]); + } + util_1.indent(sb, --this.indentLevel); + sb.push("}"); + } + else { + sb.push(" {}"); + } + }; + ASTBuilder.prototype.visitReturnStatement = function (node) { + var value = node.value; + if (value) { + this.sb.push("return "); + this.visitNode(value); + } + else { + this.sb.push("return"); + } + }; + ASTBuilder.prototype.visitSwitchCase = function (node) { + var sb = this.sb; + var label = node.label; + if (label) { + sb.push("case "); + this.visitNode(label); + sb.push(":\n"); + } + else { + sb.push("default:\n"); + } + var statements = node.statements; + var numStatements = statements.length; + if (numStatements) { + var indentLevel = ++this.indentLevel; + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(statements[0]); + for (var i = 1; i < numStatements; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(statements[i]); + } + --this.indentLevel; + } + }; + ASTBuilder.prototype.visitSwitchStatement = function (node) { + var sb = this.sb; + sb.push("switch ("); + this.visitNode(node.condition); + sb.push(") {\n"); + var indentLevel = ++this.indentLevel; + var cases = node.cases; + for (var i = 0, k = cases.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitSwitchCase(cases[i]); + sb.push("\n"); + } + --this.indentLevel; + sb.push("}"); + }; + ASTBuilder.prototype.visitThrowStatement = function (node) { + this.sb.push("throw "); + this.visitNode(node.value); + }; + ASTBuilder.prototype.visitTryStatement = function (node) { + var sb = this.sb; + sb.push("try {\n"); + var indentLevel = ++this.indentLevel; + var statements = node.statements; + for (var i = 0, k = statements.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(statements[i]); + } + var catchVariable = node.catchVariable; + if (catchVariable) { + util_1.indent(sb, indentLevel - 1); + sb.push("} catch ("); + this.visitIdentifierExpression(catchVariable); + sb.push(") {\n"); + var catchStatements = node.catchStatements; + if (catchStatements) { + for (var i = 0, k = catchStatements.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(catchStatements[i]); + } + } + } + var finallyStatements = node.finallyStatements; + if (finallyStatements) { + util_1.indent(sb, indentLevel - 1); + sb.push("} finally {\n"); + for (var i = 0, k = finallyStatements.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(finallyStatements[i]); + } + } + util_1.indent(sb, indentLevel - 1); + sb.push("}"); + }; + ASTBuilder.prototype.visitTypeDeclaration = function (node) { + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + var sb = this.sb; + this.serializeExternalModifiers(node); + sb.push("type "); + this.visitIdentifierExpression(node.name); + var typeParameters = node.typeParameters; + if (typeParameters) { + var numTypeParameters = typeParameters.length; + if (numTypeParameters) { + sb.push("<"); + for (var i = 0; i < numTypeParameters; ++i) { + this.visitTypeParameter(typeParameters[i]); + } + sb.push(">"); + } + } + sb.push(" = "); + this.visitTypeNode(node.type); + }; + ASTBuilder.prototype.visitVariableDeclaration = function (node) { + this.visitIdentifierExpression(node.name); + var type = node.type; + var sb = this.sb; + if (node.flags & common_1.CommonFlags.DEFINITE_ASSIGNMENT) { + sb.push("!"); + } + if (type) { + sb.push(": "); + this.visitTypeNode(type); + } + var initializer = node.initializer; + if (initializer) { + sb.push(" = "); + this.visitNode(initializer); + } + }; + ASTBuilder.prototype.visitVariableStatement = function (node) { + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + var sb = this.sb; + var declarations = node.declarations; + var numDeclarations = assert(declarations.length); + var firstDeclaration = declarations[0]; + this.serializeExternalModifiers(firstDeclaration); + sb.push(firstDeclaration.is(common_1.CommonFlags.CONST) ? "const " : firstDeclaration.is(common_1.CommonFlags.LET) ? "let " : "var "); + this.visitVariableDeclaration(node.declarations[0]); + for (var i = 1; i < numDeclarations; ++i) { + sb.push(", "); + this.visitVariableDeclaration(node.declarations[i]); + } + }; + ASTBuilder.prototype.visitWhileStatement = function (node) { + var sb = this.sb; + sb.push("while ("); + this.visitNode(node.condition); + var statement = node.statement; + if (statement.kind == ast_1.NodeKind.EMPTY) { + sb.push(")"); + } + else { + sb.push(") "); + this.visitNode(node.statement); + } + }; + // other + ASTBuilder.prototype.serializeDecorator = function (node) { + var sb = this.sb; + sb.push("@"); + this.visitNode(node.name); + var args = node.arguments; + if (args) { + sb.push("("); + var numArgs = args.length; + if (numArgs) { + this.visitNode(args[0]); + for (var i = 1; i < numArgs; ++i) { + sb.push(", "); + this.visitNode(args[i]); + } + } + sb.push(")\n"); + } + else { + sb.push("\n"); + } + util_1.indent(sb, this.indentLevel); + }; + ASTBuilder.prototype.serializeParameter = function (node) { + var sb = this.sb; + var kind = node.parameterKind; + var implicitFieldDeclaration = node.implicitFieldDeclaration; + if (implicitFieldDeclaration) { + this.serializeAccessModifiers(implicitFieldDeclaration); + } + if (kind == ast_1.ParameterKind.REST) { + sb.push("..."); + } + this.visitIdentifierExpression(node.name); + var type = node.type; + var initializer = node.initializer; + if (type) { + if (kind == ast_1.ParameterKind.OPTIONAL && !initializer) + sb.push("?"); + if (!ast_1.isTypeOmitted(type)) { + sb.push(": "); + this.visitTypeNode(type); + } + } + if (initializer) { + sb.push(" = "); + this.visitNode(initializer); + } + }; + ASTBuilder.prototype.serializeExternalModifiers = function (node) { + var sb = this.sb; + if (node.is(common_1.CommonFlags.EXPORT)) { + sb.push("export "); + } + else if (node.is(common_1.CommonFlags.IMPORT)) { + sb.push("import "); + } + else if (node.is(common_1.CommonFlags.DECLARE)) { + sb.push("declare "); + } + }; + ASTBuilder.prototype.serializeAccessModifiers = function (node) { + var sb = this.sb; + if (node.is(common_1.CommonFlags.PUBLIC)) { + sb.push("public "); + } + else if (node.is(common_1.CommonFlags.PRIVATE)) { + sb.push("private "); + } + else if (node.is(common_1.CommonFlags.PROTECTED)) { + sb.push("protected "); + } + if (node.is(common_1.CommonFlags.STATIC)) { + sb.push("static "); + } + else if (node.is(common_1.CommonFlags.ABSTRACT)) { + sb.push("abstract "); + } + if (node.is(common_1.CommonFlags.READONLY)) { + sb.push("readonly "); + } + }; + ASTBuilder.prototype.finish = function () { + var ret = this.sb.join(""); + this.sb = []; + return ret; + }; + return ASTBuilder; +}()); +exports.ASTBuilder = ASTBuilder; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb3VyY2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUNBMEV1QjtBQUV2QixvQ0FBa0M7QUFDbEMsbUNBQWlDO0FBQ2pDLGlDQUErQjtBQUUvQiwyQ0FBK0M7QUFFL0MsdUNBQWtEO0FBRWxELGlEQUE4RDtBQUM5RCxzQkFBc0I7QUFDdEI7SUFBQTtRQVNVLE9BQUUsR0FBYSxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBUSxDQUFDLENBQUM7SUE2K0MvQixDQUFDO0lBci9DQyw4RUFBOEU7SUFDdkUsZ0JBQUssR0FBWixVQUFhLElBQVU7UUFDckIsSUFBSSxPQUFPLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMvQixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFLRCw4QkFBUyxHQUFULFVBQVUsSUFBVTtRQUNsQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxjQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQVMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07YUFDUDtZQUVELFFBQVE7WUFFUixLQUFLLGNBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFnQixJQUFJLENBQUMsQ0FBQztnQkFDN0MsTUFBTTthQUNQO1lBQ0QsS0FBSyxjQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxxQkFBcUIsQ0FBbUIsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELE1BQU07YUFDUDtZQUNELEtBQUssY0FBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQW9CLElBQUks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QztTQUN0QjtJQUNILENBQUM7SUFFRCwyQkFBTSxHQUFOO1FBQ0UsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDSCxpQkFBQztBQUFELENBQUMsQUF2L0NELElBdS9DQztBQXYvQ1ksZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZWNsYXJhdGlvblN0YXRlbWVudCxcbiAgTm9kZSxcbiAgTm9kZUtpbmQsXG4gIFNvdXJjZSxcbiAgTmFtZWRUeXBlTm9kZSxcbiAgRnVuY3Rpb25UeXBlTm9kZSxcbiAgVHlwZVBhcmFtZXRlck5vZGUsXG4gIElkZW50aWZpZXJFeHByZXNzaW9uLFxuICBBc3NlcnRpb25FeHByZXNzaW9uLFxuICBCaW5hcnlFeHByZXNzaW9uLFxuICBDYWxsRXhwcmVzc2lvbixcbiAgQ2xhc3NFeHByZXNzaW9uLFxuICBDb21tYUV4cHJlc3Npb24sXG4gIEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLFxuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIEluc3RhbmNlT2ZFeHByZXNzaW9uLFxuICBMaXRlcmFsRXhwcmVzc2lvbixcbiAgTmV3RXhwcmVzc2lvbixcbiAgUGFyZW50aGVzaXplZEV4cHJlc3Npb24sXG4gIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbixcbiAgVGVybmFyeUV4cHJlc3Npb24sXG4gIFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24sXG4gIFVuYXJ5UHJlZml4RXhwcmVzc2lvbixcbiAgQmxvY2tTdGF0ZW1lbnQsXG4gIEJyZWFrU3RhdGVtZW50LFxuICBDb250aW51ZVN0YXRlbWVudCxcbiAgRG9TdGF0ZW1lbnQsXG4gIEVtcHR5U3RhdGVtZW50LFxuICBFeHBvcnRTdGF0ZW1lbnQsXG4gIEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQsXG4gIEV4cG9ydEltcG9ydFN0YXRlbWVudCxcbiAgRXhwcmVzc2lvblN0YXRlbWVudCxcbiAgRm9yU3RhdGVtZW50LFxuICBJZlN0YXRlbWVudCxcbiAgSW1wb3J0U3RhdGVtZW50LFxuICBSZXR1cm5TdGF0ZW1lbnQsXG4gIFN3aXRjaFN0YXRlbWVudCxcbiAgVGhyb3dTdGF0ZW1lbnQsXG4gIFRyeVN0YXRlbWVudCxcbiAgVmFyaWFibGVTdGF0ZW1lbnQsXG4gIFdoaWxlU3RhdGVtZW50LFxuICBDbGFzc0RlY2xhcmF0aW9uLFxuICBFbnVtRGVjbGFyYXRpb24sXG4gIEVudW1WYWx1ZURlY2xhcmF0aW9uLFxuICBGaWVsZERlY2xhcmF0aW9uLFxuICBGdW5jdGlvbkRlY2xhcmF0aW9uLFxuICBJbXBvcnREZWNsYXJhdGlvbixcbiAgSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbixcbiAgSW50ZXJmYWNlRGVjbGFyYXRpb24sXG4gIE1ldGhvZERlY2xhcmF0aW9uLFxuICBOYW1lc3BhY2VEZWNsYXJhdGlvbixcbiAgVHlwZURlY2xhcmF0aW9uLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uLFxuICBEZWNvcmF0b3JOb2RlLFxuICBFeHBvcnRNZW1iZXIsXG4gIFBhcmFtZXRlck5vZGUsXG4gIFN3aXRjaENhc2UsXG4gIFR5cGVOb2RlLFxuICBUeXBlTmFtZSxcbiAgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbixcbiAgRXhwcmVzc2lvbixcbiAgT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sXG4gIEFzc2VydGlvbktpbmQsXG4gIExpdGVyYWxLaW5kLFxuICBGbG9hdExpdGVyYWxFeHByZXNzaW9uLFxuICBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24sXG4gIFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uLFxuICBSZWdleHBMaXRlcmFsRXhwcmVzc2lvbixcbiAgVW5hcnlFeHByZXNzaW9uLFxuICBTdGF0ZW1lbnQsXG4gIEFycm93S2luZCxcbiAgaXNUeXBlT21pdHRlZCxcbiAgUGFyYW1ldGVyS2luZFxufSBmcm9tIFwiLi4vLi4vc3JjL2FzdFwiO1xuXG5pbXBvcnQgXCIuLi8uLi9zdGQvcG9ydGFibGUvaW5kZXhcIjtcbmltcG9ydCBcIi4uLy4uL3NyYy9nbHVlL2pzL2Zsb2F0XCI7XG5pbXBvcnQgXCIuLi8uLi9zcmMvZ2x1ZS9qcy9pNjRcIjtcblxuaW1wb3J0IHsgQ29tbW9uRmxhZ3MgfSBmcm9tIFwiLi4vLi4vc3JjL2NvbW1vblwiO1xuXG5pbXBvcnQgeyBpbmRlbnQsIENoYXJDb2RlIH0gZnJvbSBcIi4uLy4uL3NyYy91dGlsXCI7XG5cbmltcG9ydCB7ICBvcGVyYXRvclRva2VuVG9TdHJpbmcsIH0gZnJvbSBcIi4uLy4uL3NyYy90b2tlbml6ZXJcIjtcbi8qKiBBbiBBU1QgYnVpbGRlci4gKi9cbmV4cG9ydCBjbGFzcyBBU1RCdWlsZGVyIHtcblxuICAvKiogUmVidWlsZHMgdGhlIHRleHR1YWwgc291cmNlIGZyb20gdGhlIHNwZWNpZmllZCBBU1QsIGFzIGZhciBhcyBwb3NzaWJsZS4gKi9cbiAgc3RhdGljIGJ1aWxkKG5vZGU6IE5vZGUpOiBzdHJpbmcge1xuICAgIHZhciBidWlsZGVyID0gbmV3IEFTVEJ1aWxkZXIoKTtcbiAgICBidWlsZGVyLnZpc2l0Tm9kZShub2RlKTtcbiAgICByZXR1cm4gYnVpbGRlci5maW5pc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgc2I6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaW5kZW50TGV2ZWw6IGkzMiA9IDA7XG5cbiAgdmlzaXROb2RlKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBOb2RlS2luZC5TT1VSQ0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFNvdXJjZSg8U291cmNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gdHlwZXNcblxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FRFRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVkVHlwZU5vZGUoPE5hbWVkVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GVU5DVElPTlRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uVHlwZU5vZGUoPEZ1bmN0aW9uVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKDxUeXBlUGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGV4cHJlc3Npb25zXG5cbiAgICAgIGNhc2UgTm9kZUtpbmQuRkFMU0U6XG4gICAgICBjYXNlIE5vZGVLaW5kLk5VTEw6XG4gICAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOlxuICAgICAgY2FzZSBOb2RlS2luZC5USElTOlxuICAgICAgY2FzZSBOb2RlS2luZC5UUlVFOlxuICAgICAgY2FzZSBOb2RlS2luZC5DT05TVFJVQ1RPUjpcbiAgICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjoge1xuICAgICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24oPElkZW50aWZpZXJFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQVNTRVJUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRBc3NlcnRpb25FeHByZXNzaW9uKDxBc3NlcnRpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQklOQVJZOiB7XG4gICAgICAgIHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKDxCaW5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0FMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24oPENhbGxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0xBU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdENsYXNzRXhwcmVzc2lvbig8Q2xhc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09NTUE6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbW1hRXhwcmVzc2lvbig8Q29tbWFFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzoge1xuICAgICAgICB0aGlzLnZpc2l0RWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oPEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbig8RnVuY3Rpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5TVEFOQ0VPRjoge1xuICAgICAgICB0aGlzLnZpc2l0SW5zdGFuY2VPZkV4cHJlc3Npb24oPEluc3RhbmNlT2ZFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTElURVJBTDoge1xuICAgICAgICB0aGlzLnZpc2l0TGl0ZXJhbEV4cHJlc3Npb24oPExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkVXOiB7XG4gICAgICAgIHRoaXMudmlzaXROZXdFeHByZXNzaW9uKDxOZXdFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUEFSRU5USEVTSVpFRDoge1xuICAgICAgICB0aGlzLnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oPFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbig8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEVSTkFSWToge1xuICAgICAgICB0aGlzLnZpc2l0VGVybmFyeUV4cHJlc3Npb24oPFRlcm5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdGVtZW50c1xuXG4gICAgICBjYXNlIE5vZGVLaW5kLkJMT0NLOiB7XG4gICAgICAgIHRoaXMudmlzaXRCbG9ja1N0YXRlbWVudCg8QmxvY2tTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5CUkVBSzoge1xuICAgICAgICB0aGlzLnZpc2l0QnJlYWtTdGF0ZW1lbnQoPEJyZWFrU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09OVElOVUU6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbnRpbnVlU3RhdGVtZW50KDxDb250aW51ZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkRPOiB7XG4gICAgICAgIHRoaXMudmlzaXREb1N0YXRlbWVudCg8RG9TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FTVBUWToge1xuICAgICAgICB0aGlzLnZpc2l0RW1wdHlTdGF0ZW1lbnQoPEVtcHR5U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRFeHBvcnRTdGF0ZW1lbnQoPEV4cG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoPEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FWFBPUlRJTVBPUlQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudCg8RXhwb3J0SW1wb3J0U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQUkVTU0lPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwcmVzc2lvblN0YXRlbWVudCg8RXhwcmVzc2lvblN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZPUjoge1xuICAgICAgICB0aGlzLnZpc2l0Rm9yU3RhdGVtZW50KDxGb3JTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JRjoge1xuICAgICAgICB0aGlzLnZpc2l0SWZTdGF0ZW1lbnQoPElmU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU1QT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnRTdGF0ZW1lbnQoPEltcG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlJFVFVSTjoge1xuICAgICAgICB0aGlzLnZpc2l0UmV0dXJuU3RhdGVtZW50KDxSZXR1cm5TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0g6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaFN0YXRlbWVudCg8U3dpdGNoU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEhST1c6IHtcbiAgICAgICAgdGhpcy52aXNpdFRocm93U3RhdGVtZW50KDxUaHJvd1N0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlRSWToge1xuICAgICAgICB0aGlzLnZpc2l0VHJ5U3RhdGVtZW50KDxUcnlTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5WQVJJQUJMRToge1xuICAgICAgICB0aGlzLnZpc2l0VmFyaWFibGVTdGF0ZW1lbnQoPFZhcmlhYmxlU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuV0hJTEU6IHtcbiAgICAgICAgdGhpcy52aXNpdFdoaWxlU3RhdGVtZW50KDxXaGlsZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2xhcmF0aW9uIHN0YXRlbWVudHNcblxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRU5VTURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtRGVjbGFyYXRpb24oPEVudW1EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1WQUxVRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbig8RW51bVZhbHVlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRGaWVsZERlY2xhcmF0aW9uKDxGaWVsZERlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklNUE9SVERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbig8SW1wb3J0RGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKDxJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5URVJGQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEludGVyZmFjZURlY2xhcmF0aW9uKDxJbnRlcmZhY2VEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLk1FVEhPRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRNZXRob2REZWNsYXJhdGlvbig8TWV0aG9kRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FU1BBQ0VERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oPE5hbWVzcGFjZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlRGVjbGFyYXRpb24oPFR5cGVEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlZBUklBQkxFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oPFZhcmlhYmxlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBvdGhlclxuXG4gICAgICBjYXNlIE5vZGVLaW5kLkRFQ09SQVRPUjoge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcig8RGVjb3JhdG9yTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVE1FTUJFUjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwb3J0TWVtYmVyKDxFeHBvcnRNZW1iZXI+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5QQVJBTUVURVI6IHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIoPFBhcmFtZXRlck5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0hDQVNFOiB7XG4gICAgICAgIHRoaXMudmlzaXRTd2l0Y2hDYXNlKDxTd2l0Y2hDYXNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTb3VyY2Uoc291cmNlOiBTb3VyY2UpOiB2b2lkIHtcbiAgICB2YXIgc3RhdGVtZW50cyA9IHNvdXJjZS5zdGF0ZW1lbnRzO1xuICAgIGZvciAobGV0IGkgPSAwLCBrID0gc3RhdGVtZW50cy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKHN0YXRlbWVudHNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHR5cGVzXG5cbiAgdmlzaXRUeXBlTm9kZShub2RlOiBUeXBlTm9kZSk6IHZvaWQge1xuICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICBjYXNlIE5vZGVLaW5kLk5BTUVEVFlQRToge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZWRUeXBlTm9kZSg8TmFtZWRUeXBlTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZVTkNUSU9OVFlQRToge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25UeXBlTm9kZSg8RnVuY3Rpb25UeXBlTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VHlwZU5hbWUobm9kZTogVHlwZU5hbWUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5pZGVudGlmaWVyKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBjdXJyZW50ID0gbm9kZS5uZXh0O1xuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBzYi5wdXNoKFwiLlwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihjdXJyZW50LmlkZW50aWZpZXIpO1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG4gIH1cblxuICB2aXNpdE5hbWVkVHlwZU5vZGUobm9kZTogTmFtZWRUeXBlTm9kZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXRUeXBlTmFtZShub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlQXJndW1lbnRzID0gbm9kZS50eXBlQXJndW1lbnRzO1xuICAgIGlmICh0eXBlQXJndW1lbnRzKSB7XG4gICAgICBsZXQgbnVtVHlwZUFyZ3VtZW50cyA9IHR5cGVBcmd1bWVudHMubGVuZ3RoO1xuICAgICAgbGV0IHNiID0gdGhpcy5zYjtcbiAgICAgIGlmIChudW1UeXBlQXJndW1lbnRzKSB7XG4gICAgICAgIHNiLnB1c2goXCI8XCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZUFyZ3VtZW50c1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVHlwZUFyZ3VtZW50czsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZSh0eXBlQXJndW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmlzTnVsbGFibGUpIHNiLnB1c2goXCIgfCBudWxsXCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25UeXBlTm9kZShub2RlOiBGdW5jdGlvblR5cGVOb2RlKTogdm9pZCB7XG4gICAgdmFyIGlzTnVsbGFibGUgPSBub2RlLmlzTnVsbGFibGU7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKGlzTnVsbGFibGUgPyBcIigoXCIgOiBcIihcIik7XG4gICAgdmFyIGV4cGxpY2l0VGhpc1R5cGUgPSBub2RlLmV4cGxpY2l0VGhpc1R5cGU7XG4gICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHtcbiAgICAgIHNiLnB1c2goXCJ0aGlzOiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZXhwbGljaXRUaGlzVHlwZSk7XG4gICAgfVxuICAgIHZhciBwYXJhbWV0ZXJzID0gbm9kZS5wYXJhbWV0ZXJzO1xuICAgIHZhciBudW1QYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgaWYgKG51bVBhcmFtZXRlcnMpIHtcbiAgICAgIGlmIChleHBsaWNpdFRoaXNUeXBlKSBzYi5wdXNoKFwiLCBcIik7XG4gICAgICB0aGlzLnNlcmlhbGl6ZVBhcmFtZXRlcihwYXJhbWV0ZXJzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciByZXR1cm5UeXBlID0gbm9kZS5yZXR1cm5UeXBlO1xuICAgIGlmIChyZXR1cm5UeXBlKSB7XG4gICAgICBzYi5wdXNoKFwiKSA9PiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIpID0+IHZvaWRcIik7XG4gICAgfVxuICAgIGlmIChpc051bGxhYmxlKSBzYi5wdXNoKFwiKSB8IG51bGxcIik7XG4gIH1cblxuICB2aXNpdFR5cGVQYXJhbWV0ZXIobm9kZTogVHlwZVBhcmFtZXRlck5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgZXh0ZW5kc1R5cGUgPSBub2RlLmV4dGVuZHNUeXBlO1xuICAgIGlmIChleHRlbmRzVHlwZSkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiIGV4dGVuZHMgXCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGV4dGVuZHNUeXBlKTtcbiAgICB9XG4gICAgdmFyIGRlZmF1bHRUeXBlID0gbm9kZS5kZWZhdWx0VHlwZTtcbiAgICBpZiAoZGVmYXVsdFR5cGUpIHtcbiAgICAgIHRoaXMuc2IucHVzaChcIj1cIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZGVmYXVsdFR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGV4cHJlc3Npb25zXG5cbiAgdmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlOiBJZGVudGlmaWVyRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmIChub2RlLmlzUXVvdGVkKSB0aGlzLnZpc2l0U3RyaW5nTGl0ZXJhbChub2RlLnRleHQpO1xuICAgIGVsc2UgdGhpcy5zYi5wdXNoKG5vZGUudGV4dCk7XG4gIH1cblxuICB2aXNpdEFycmF5TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogQXJyYXlMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIltcIik7XG4gICAgdmFyIGVsZW1lbnRzID0gbm9kZS5lbGVtZW50RXhwcmVzc2lvbnM7XG4gICAgdmFyIG51bUVsZW1lbnRzID0gZWxlbWVudHMubGVuZ3RoO1xuICAgIGlmIChudW1FbGVtZW50cykge1xuICAgICAgaWYgKGVsZW1lbnRzWzBdKSB0aGlzLnZpc2l0Tm9kZSg8RXhwcmVzc2lvbj5lbGVtZW50c1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bUVsZW1lbnRzOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICBpZiAoZWxlbWVudHNbaV0pIHRoaXMudmlzaXROb2RlKDxFeHByZXNzaW9uPmVsZW1lbnRzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2IucHVzaChcIl1cIik7XG4gIH1cblxuICB2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB2YXIgbmFtZXMgPSBub2RlLm5hbWVzO1xuICAgIHZhciB2YWx1ZXMgPSBub2RlLnZhbHVlcztcbiAgICB2YXIgbnVtRWxlbWVudHMgPSBuYW1lcy5sZW5ndGg7XG4gICAgYXNzZXJ0KG51bUVsZW1lbnRzID09IHZhbHVlcy5sZW5ndGgpO1xuICAgIGlmIChudW1FbGVtZW50cykge1xuICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsICsrdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShuYW1lc1swXSk7XG4gICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZXNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1FbGVtZW50czsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsXFxuXCIpO1xuICAgICAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICBsZXQgdmFsdWUgPSB2YWx1ZXNbaV07XG4gICAgICAgIGlmIChuYW1lID09PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5hbWUpO1xuICAgICAgICAgIHNiLnB1c2goXCI6IFwiKTtcbiAgICAgICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCJcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsIC0tdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICBzYi5wdXNoKFwifVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcInt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QXNzZXJ0aW9uRXhwcmVzc2lvbihub2RlOiBBc3NlcnRpb25FeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzd2l0Y2ggKG5vZGUuYXNzZXJ0aW9uS2luZCkge1xuICAgICAgY2FzZSBBc3NlcnRpb25LaW5kLlBSRUZJWDoge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGFzc2VydChub2RlLnRvVHlwZSkpO1xuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFzc2VydGlvbktpbmQuQVM6IHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgc2IucHVzaChcIiBhcyBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZShhc3NlcnQobm9kZS50b1R5cGUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFzc2VydGlvbktpbmQuTk9OTlVMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgICAgICBzYi5wdXNoKFwiIVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QmluYXJ5RXhwcmVzc2lvbihub2RlOiBCaW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmxlZnQpO1xuICAgIHNiLnB1c2goXCIgXCIpO1xuICAgIHNiLnB1c2gob3BlcmF0b3JUb2tlblRvU3RyaW5nKG5vZGUub3BlcmF0b3IpKTtcbiAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnJpZ2h0KTtcbiAgfVxuXG4gIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZTogQ2FsbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdmFyIHR5cGVBcmd1bWVudHMgPSBub2RlLnR5cGVBcmd1bWVudHM7XG4gICAgaWYgKHR5cGVBcmd1bWVudHMpIHtcbiAgICAgIGxldCBudW1UeXBlQXJndW1lbnRzID0gdHlwZUFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICBpZiAobnVtVHlwZUFyZ3VtZW50cykge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHR5cGVBcmd1bWVudHNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVR5cGVBcmd1bWVudHM7ICsraSkge1xuICAgICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZUFyZ3VtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgc2IucHVzaChcIj4oXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICB9XG4gICAgdmFyIGFyZ3MgPSBub2RlLmFyZ3VtZW50cztcbiAgICB2YXIgbnVtQXJncyA9IGFyZ3MubGVuZ3RoO1xuICAgIGlmIChudW1BcmdzKSB7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShhcmdzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtQXJnczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUoYXJnc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNiLnB1c2goXCIpXCIpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0V4cHJlc3Npb24obm9kZTogQ2xhc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIGRlY2xhcmF0aW9uID0gbm9kZS5kZWNsYXJhdGlvbjtcbiAgICB0aGlzLnZpc2l0Q2xhc3NEZWNsYXJhdGlvbihkZWNsYXJhdGlvbik7XG4gIH1cblxuICB2aXNpdENvbW1hRXhwcmVzc2lvbihub2RlOiBDb21tYUV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgZXhwcmVzc2lvbnMgPSBub2RlLmV4cHJlc3Npb25zO1xuICAgIHZhciBudW1FeHByZXNzaW9ucyA9IGFzc2VydChleHByZXNzaW9ucy5sZW5ndGgpO1xuICAgIHRoaXMudmlzaXROb2RlKGV4cHJlc3Npb25zWzBdKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtRXhwcmVzc2lvbnM7ICsraSkge1xuICAgICAgc2IucHVzaChcIixcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShleHByZXNzaW9uc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihub2RlOiBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICBzYi5wdXNoKFwiW1wiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmVsZW1lbnRFeHByZXNzaW9uKTtcbiAgICBzYi5wdXNoKFwiXVwiKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25FeHByZXNzaW9uKG5vZGU6IEZ1bmN0aW9uRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBkZWNsYXJhdGlvbiA9IG5vZGUuZGVjbGFyYXRpb247XG4gICAgaWYgKCFkZWNsYXJhdGlvbi5hcnJvd0tpbmQpIHtcbiAgICAgIGlmIChkZWNsYXJhdGlvbi5uYW1lLnRleHQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc2IucHVzaChcImZ1bmN0aW9uIFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2IucHVzaChcImZ1bmN0aW9uXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQoZGVjbGFyYXRpb24ubmFtZS50ZXh0Lmxlbmd0aCA9PSAwKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdEZ1bmN0aW9uQ29tbW9uKGRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHZpc2l0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUubGl0ZXJhbEtpbmQpIHtcbiAgICAgIGNhc2UgTGl0ZXJhbEtpbmQuRkxPQVQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24oPEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBMaXRlcmFsS2luZC5JTlRFR0VSOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oPEludGVnZXJMaXRlcmFsRXhwcmVzc2lvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIExpdGVyYWxLaW5kLlNUUklORzoge1xuICAgICAgICB0aGlzLnZpc2l0U3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24oPFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTGl0ZXJhbEtpbmQuUkVHRVhQOiB7XG4gICAgICAgIHRoaXMudmlzaXRSZWdleHBMaXRlcmFsRXhwcmVzc2lvbig8UmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBMaXRlcmFsS2luZC5BUlJBWToge1xuICAgICAgICB0aGlzLnZpc2l0QXJyYXlMaXRlcmFsRXhwcmVzc2lvbig8QXJyYXlMaXRlcmFsRXhwcmVzc2lvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIExpdGVyYWxLaW5kLk9CSkVDVDoge1xuICAgICAgICB0aGlzLnZpc2l0T2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oPE9iamVjdExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRGbG9hdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2gobm9kZS52YWx1ZS50b1N0cmluZygxMCkpO1xuICB9XG5cbiAgdmlzaXRJbnN0YW5jZU9mRXhwcmVzc2lvbihub2RlOiBJbnN0YW5jZU9mRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy5zYi5wdXNoKFwiIGluc3RhbmNlb2YgXCIpO1xuICAgIHRoaXMudmlzaXRUeXBlTm9kZShub2RlLmlzVHlwZSk7XG4gIH1cblxuICB2aXNpdEludGVnZXJMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2goaTY0X3RvX3N0cmluZyhub2RlLnZhbHVlKSk7XG4gIH1cblxuICB2aXNpdFN0cmluZ0xpdGVyYWwoc3RyOiBzdHJpbmcsIHNpbmdsZVF1b3RlZDogYm9vbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgcXVvdGUgPSBzaW5nbGVRdW90ZWQgPyBcIidcIiA6IFwiXFxcIlwiO1xuICAgIHNiLnB1c2gocXVvdGUpO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKGxldCBrID0gc3RyLmxlbmd0aDsgaSA8IGs7KSB7XG4gICAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTlVMTDoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBvZmYgPSBpICsgMSkpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcMFwiKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQUNLU1BBQ0U6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXGJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5UQUI6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXHRcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgb2ZmID0gKytpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcblwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLlZFUlRJQ0FMVEFCOiB7XG4gICAgICAgICAgaWYgKGkgPiBvZmYpIHNiLnB1c2goc3RyLnN1YnN0cmluZyhvZmYsIGkpKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgc2IucHVzaChcIlxcXFx2XCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXGZcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DQVJSSUFHRVJFVFVSTjoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgc2IucHVzaChcIlxcXFxyXCIpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkRPVUJMRVFVT1RFOiB7XG4gICAgICAgICAgaWYgKCFzaW5nbGVRdW90ZWQpIHtcbiAgICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgICBzYi5wdXNoKFwiXFxcXFxcXCJcIik7XG4gICAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICsraTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5TSU5HTEVRVU9URToge1xuICAgICAgICAgIGlmIChzaW5nbGVRdW90ZWQpIHtcbiAgICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgICBzYi5wdXNoKFwiXFxcXCdcIik7XG4gICAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICsraTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQUNLU0xBU0g6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcXFxcXFwiKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICsraTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgIHNiLnB1c2gocXVvdGUpO1xuICB9XG5cbiAgdmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsKG5vZGUudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRSZWdleHBMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBSZWdleHBMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIi9cIik7XG4gICAgc2IucHVzaChub2RlLnBhdHRlcm4pO1xuICAgIHNiLnB1c2goXCIvXCIpO1xuICAgIHNiLnB1c2gobm9kZS5wYXR0ZXJuRmxhZ3MpO1xuICB9XG5cbiAgdmlzaXROZXdFeHByZXNzaW9uKG5vZGU6IE5ld0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2goXCJuZXcgXCIpO1xuICAgIHRoaXMudmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKTtcbiAgfVxuXG4gIHZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24obm9kZTogUGFyZW50aGVzaXplZEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCIoXCIpO1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgc2IucHVzaChcIilcIik7XG4gIH1cblxuICB2aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgIHRoaXMuc2IucHVzaChcIi5cIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUucHJvcGVydHkpO1xuICB9XG5cbiAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlOiBUZXJuYXJ5RXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIgPyBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5pZlRoZW4pO1xuICAgIHNiLnB1c2goXCIgOiBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5pZkVsc2UpO1xuICB9XG5cbiAgdmlzaXRVbmFyeUV4cHJlc3Npb24obm9kZTogVW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKG5vZGU6IFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9wZXJhbmQpO1xuICAgIHRoaXMuc2IucHVzaChvcGVyYXRvclRva2VuVG9TdHJpbmcobm9kZS5vcGVyYXRvcikpO1xuICB9XG5cbiAgdmlzaXRVbmFyeVByZWZpeEV4cHJlc3Npb24obm9kZTogVW5hcnlQcmVmaXhFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy5zYi5wdXNoKG9wZXJhdG9yVG9rZW5Ub1N0cmluZyhub2RlLm9wZXJhdG9yKSk7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcGVyYW5kKTtcbiAgfVxuXG4gIC8vIHN0YXRlbWVudHNcblxuICB2aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50OiBTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShzdGF0ZW1lbnQpO1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgaWYgKFxuICAgICAgIXNiLmxlbmd0aCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVhZGluZyBFbXB0eVN0YXRlbWVudFxuICAgICAgc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuVkFSSUFCTEUgfHwgLy8gcG90ZW50aWFsbHkgYXNzaWducyBhIEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgICAgc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuRVhQUkVTU0lPTiAgLy8gcG90ZW50aWFsbHkgYXNzaWducyBhIEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgICkge1xuICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsYXN0ID0gc2Jbc2IubGVuZ3RoIC0gMV07XG4gICAgICBsZXQgbGFzdENoYXJQb3MgPSBsYXN0Lmxlbmd0aCAtIDE7XG4gICAgICBpZiAobGFzdENoYXJQb3MgPj0gMCAmJiAoXG4gICAgICAgIGxhc3QuY2hhckNvZGVBdChsYXN0Q2hhclBvcykgPT0gQ2hhckNvZGUuQ0xPU0VCUkFDRSB8fFxuICAgICAgICBsYXN0LmNoYXJDb2RlQXQobGFzdENoYXJQb3MpID09IENoYXJDb2RlLlNFTUlDT0xPTilcbiAgICAgICkge1xuICAgICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRCbG9ja1N0YXRlbWVudChub2RlOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIHN0YXRlbWVudHMgPSBub2RlLnN0YXRlbWVudHM7XG4gICAgdmFyIG51bVN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzLmxlbmd0aDtcbiAgICBpZiAobnVtU3RhdGVtZW50cykge1xuICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICBsZXQgaW5kZW50TGV2ZWwgPSArK3RoaXMuaW5kZW50TGV2ZWw7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVN0YXRlbWVudHM7ICsraSkge1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICBpbmRlbnQoc2IsIC0tdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICBzYi5wdXNoKFwifVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcInt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QnJlYWtTdGF0ZW1lbnQobm9kZTogQnJlYWtTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgbGFiZWwgPSBub2RlLmxhYmVsO1xuICAgIGlmIChsYWJlbCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiYnJlYWsgXCIpO1xuICAgICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKGxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiYnJlYWtcIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRDb250aW51ZVN0YXRlbWVudChub2RlOiBDb250aW51ZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBsYWJlbCA9IG5vZGUubGFiZWw7XG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJjb250aW51ZSBcIik7XG4gICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJjb250aW51ZVwiKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgZGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycztcbiAgICBpZiAoZGVjb3JhdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcihkZWNvcmF0b3JzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5BQlNUUkFDVCkpIHNiLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgaWYgKG5vZGUubmFtZS50ZXh0Lmxlbmd0aCkge1xuICAgICAgc2IucHVzaChcImNsYXNzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiY2xhc3NcIik7XG4gICAgfVxuICAgIHZhciB0eXBlUGFyYW1ldGVycyA9IG5vZGUudHlwZVBhcmFtZXRlcnM7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCkge1xuICAgICAgc2IucHVzaChcIjxcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZVBhcmFtZXRlcih0eXBlUGFyYW1ldGVyc1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMSwgayA9IHR5cGVQYXJhbWV0ZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKHR5cGVQYXJhbWV0ZXJzW2ldKTtcbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCI+XCIpO1xuICAgIH1cbiAgICB2YXIgZXh0ZW5kc1R5cGUgPSBub2RlLmV4dGVuZHNUeXBlO1xuICAgIGlmIChleHRlbmRzVHlwZSkge1xuICAgICAgc2IucHVzaChcIiBleHRlbmRzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRUeXBlTm9kZShleHRlbmRzVHlwZSk7XG4gICAgfVxuICAgIHZhciBpbXBsZW1lbnRzVHlwZXMgPSBub2RlLmltcGxlbWVudHNUeXBlcztcbiAgICBpZiAoaW1wbGVtZW50c1R5cGVzKSB7XG4gICAgICBsZXQgbnVtSW1wbGVtZW50c1R5cGVzID0gaW1wbGVtZW50c1R5cGVzLmxlbmd0aDtcbiAgICAgIGlmIChudW1JbXBsZW1lbnRzVHlwZXMpIHtcbiAgICAgICAgc2IucHVzaChcIiBpbXBsZW1lbnRzIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGltcGxlbWVudHNUeXBlc1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtSW1wbGVtZW50c1R5cGVzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGltcGxlbWVudHNUeXBlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1lbWJlcnMgPSBub2RlLm1lbWJlcnM7XG4gICAgdmFyIG51bU1lbWJlcnMgPSBtZW1iZXJzLmxlbmd0aDtcbiAgICBpZiAobnVtTWVtYmVycykge1xuICAgICAgc2IucHVzaChcIiB7XFxuXCIpO1xuICAgICAgbGV0IGluZGVudExldmVsID0gKyt0aGlzLmluZGVudExldmVsO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBtZW1iZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICBsZXQgbWVtYmVyID0gbWVtYmVyc1tpXTtcbiAgICAgICAgaWYgKG1lbWJlci5raW5kICE9IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT04gfHwgKDxGaWVsZERlY2xhcmF0aW9uPm1lbWJlcikucGFyYW1ldGVySW5kZXggPCAwKSB7XG4gICAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUobWVtYmVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW5kZW50KHNiLCAtLXRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIn1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIge31cIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXREb1N0YXRlbWVudChub2RlOiBEb1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImRvIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gICAgaWYgKG5vZGUuc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuQkxPQ0spIHtcbiAgICAgIHNiLnB1c2goXCIgd2hpbGUgKFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIndoaWxlIChcIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29uZGl0aW9uKTtcbiAgICBzYi5wdXNoKFwiKVwiKTtcbiAgfVxuXG4gIHZpc2l0RW1wdHlTdGF0ZW1lbnQobm9kZTogRW1wdHlTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgfVxuXG4gIHZpc2l0RW51bURlY2xhcmF0aW9uKG5vZGU6IEVudW1EZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQgZGVmYXVsdCBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLkNPTlNUKSkgc2IucHVzaChcImNvbnN0IFwiKTtcbiAgICBzYi5wdXNoKFwiZW51bSBcIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubmFtZSk7XG4gICAgdmFyIHZhbHVlcyA9IG5vZGUudmFsdWVzO1xuICAgIHZhciBudW1WYWx1ZXMgPSB2YWx1ZXMubGVuZ3RoO1xuICAgIGlmIChudW1WYWx1ZXMpIHtcbiAgICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdEVudW1WYWx1ZURlY2xhcmF0aW9uKG5vZGUudmFsdWVzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVmFsdWVzOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIixcXG5cIik7XG4gICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLnZpc2l0RW51bVZhbHVlRGVjbGFyYXRpb24obm9kZS52YWx1ZXNbaV0pO1xuICAgICAgfVxuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICAgIGluZGVudChzYiwgLS10aGlzLmluZGVudExldmVsKTtcbiAgICAgIHNiLnB1c2goXCJ9XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiIHt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RW51bVZhbHVlRGVjbGFyYXRpb24obm9kZTogRW51bVZhbHVlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS52YWx1ZSkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFeHBvcnRJbXBvcnRTdGF0ZW1lbnQobm9kZTogRXhwb3J0SW1wb3J0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKFwiZXhwb3J0IGltcG9ydCBcIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUuZXh0ZXJuYWxOYW1lKTtcbiAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICB9XG5cbiAgdmlzaXRFeHBvcnRNZW1iZXIobm9kZTogRXhwb3J0TWVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubG9jYWxOYW1lKTtcbiAgICBpZiAobm9kZS5leHBvcnRlZE5hbWUudGV4dCAhPSBub2RlLmxvY2FsTmFtZS50ZXh0KSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCIgYXMgXCIpO1xuICAgICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUuZXhwb3J0ZWROYW1lKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cG9ydFN0YXRlbWVudChub2RlOiBFeHBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChub2RlLmlzRGVjbGFyZSkge1xuICAgICAgc2IucHVzaChcImRlY2xhcmUgXCIpO1xuICAgIH1cbiAgICB2YXIgbWVtYmVycyA9IG5vZGUubWVtYmVycztcbiAgICBpZiAobWVtYmVycyAmJiBtZW1iZXJzLmxlbmd0aCkge1xuICAgICAgbGV0IG51bU1lbWJlcnMgPSBtZW1iZXJzLmxlbmd0aDtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdEV4cG9ydE1lbWJlcihtZW1iZXJzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtTWVtYmVyczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsXFxuXCIpO1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydE1lbWJlcihtZW1iZXJzW2ldKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIHNiLnB1c2goXCJcXG59XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IHt9XCIpO1xuICAgIH1cbiAgICB2YXIgcGF0aCA9IG5vZGUucGF0aDtcbiAgICBpZiAocGF0aCkge1xuICAgICAgc2IucHVzaChcIiBmcm9tIFwiKTtcbiAgICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihwYXRoKTtcbiAgICB9XG4gICAgc2IucHVzaChcIjtcIik7XG4gIH1cblxuICB2aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQobm9kZTogRXhwb3J0RGVmYXVsdFN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBkZWNsYXJhdGlvbiA9IG5vZGUuZGVjbGFyYXRpb247XG4gICAgc3dpdGNoIChkZWNsYXJhdGlvbi5raW5kKSB7XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RW51bURlY2xhcmF0aW9uKDxFbnVtRGVjbGFyYXRpb24+ZGVjbGFyYXRpb24sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5kZWNsYXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPmRlY2xhcmF0aW9uLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklOVEVSRkFDRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbig8SW50ZXJmYWNlRGVjbGFyYXRpb24+ZGVjbGFyYXRpb24sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkFNRVNQQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVzcGFjZURlY2xhcmF0aW9uKDxOYW1lc3BhY2VEZWNsYXJhdGlvbj5kZWNsYXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cHJlc3Npb25TdGF0ZW1lbnQobm9kZTogRXhwcmVzc2lvblN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZpZWxkRGVjbGFyYXRpb24obm9kZTogRmllbGREZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhub2RlKTtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChub2RlLmZsYWdzICYgQ29tbW9uRmxhZ3MuREVGSU5JVEVfQVNTSUdOTUVOVCkge1xuICAgICAgc2IucHVzaChcIiFcIik7XG4gICAgfVxuICAgIHZhciB0eXBlID0gbm9kZS50eXBlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZSk7XG4gICAgfVxuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUoaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0Rm9yU3RhdGVtZW50KG5vZGU6IEZvclN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImZvciAoXCIpO1xuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShpbml0aWFsaXplcik7XG4gICAgfVxuICAgIHZhciBjb25kaXRpb24gPSBub2RlLmNvbmRpdGlvbjtcbiAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICBzYi5wdXNoKFwiOyBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShjb25kaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiO1wiKTtcbiAgICB9XG4gICAgdmFyIGluY3JlbWVudG9yID0gbm9kZS5pbmNyZW1lbnRvcjtcbiAgICBpZiAoaW5jcmVtZW50b3IpIHtcbiAgICAgIHNiLnB1c2goXCI7IFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGluY3JlbWVudG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcIjtcIik7XG4gICAgfVxuICAgIHNiLnB1c2goXCIpIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZTogRnVuY3Rpb25EZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgICAgdGhpcy5zZXJpYWxpemVBY2Nlc3NNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLm5hbWUudGV4dC5sZW5ndGgpIHtcbiAgICAgIHNiLnB1c2goXCJmdW5jdGlvbiBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCJmdW5jdGlvblwiKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdEZ1bmN0aW9uQ29tbW9uKG5vZGUpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkNvbW1vbihub2RlOiBGdW5jdGlvbkRlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgc2lnbmF0dXJlID0gbm9kZS5zaWduYXR1cmU7XG4gICAgdmFyIHR5cGVQYXJhbWV0ZXJzID0gbm9kZS50eXBlUGFyYW1ldGVycztcbiAgICBpZiAodHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgIGxldCBudW1UeXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICAgIGlmIChudW1UeXBlUGFyYW1ldGVycykge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVR5cGVQYXJhbWV0ZXJzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHNiLnB1c2goXCI+XCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5hcnJvd0tpbmQgPT0gQXJyb3dLaW5kLkFSUk9XX1NJTkdMRSkge1xuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICAgIGFzc2VydChwYXJhbWV0ZXJzLmxlbmd0aCA9PSAxKTtcbiAgICAgIGFzc2VydCghc2lnbmF0dXJlLmV4cGxpY2l0VGhpc1R5cGUpO1xuICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIoXCIpO1xuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICAgIGxldCBudW1QYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBsZXQgZXhwbGljaXRUaGlzVHlwZSA9IHNpZ25hdHVyZS5leHBsaWNpdFRoaXNUeXBlO1xuICAgICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHtcbiAgICAgICAgc2IucHVzaChcInRoaXM6IFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGV4cGxpY2l0VGhpc1R5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKG51bVBhcmFtZXRlcnMpIHtcbiAgICAgICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICAgIHRoaXMuc2VyaWFsaXplUGFyYW1ldGVyKHBhcmFtZXRlcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBib2R5ID0gbm9kZS5ib2R5O1xuICAgIHZhciByZXR1cm5UeXBlID0gc2lnbmF0dXJlLnJldHVyblR5cGU7XG4gICAgaWYgKG5vZGUuYXJyb3dLaW5kKSB7XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBpZiAobm9kZS5hcnJvd0tpbmQgPT0gQXJyb3dLaW5kLkFSUk9XX1NJTkdMRSkge1xuICAgICAgICAgIGFzc2VydChpc1R5cGVPbWl0dGVkKHJldHVyblR5cGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNUeXBlT21pdHRlZChyZXR1cm5UeXBlKSkge1xuICAgICAgICAgICAgc2IucHVzaChcIilcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNiLnB1c2goXCIpOiBcIik7XG4gICAgICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNiLnB1c2goXCIgPT4gXCIpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShib2R5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VydCghaXNUeXBlT21pdHRlZChyZXR1cm5UeXBlKSk7XG4gICAgICAgIHNiLnB1c2goXCIgPT4gXCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzVHlwZU9taXR0ZWQocmV0dXJuVHlwZSkgJiZcbiAgICAgICAgIW5vZGUuaXNBbnkoQ29tbW9uRmxhZ3MuQ09OU1RSVUNUT1IgfCBDb21tb25GbGFncy5TRVQpXG4gICAgICApIHtcbiAgICAgICAgc2IucHVzaChcIik6IFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHJldHVyblR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2IucHVzaChcIilcIik7XG4gICAgICB9XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUoYm9keSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRJZlN0YXRlbWVudChub2RlOiBJZlN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImlmIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIpIFwiKTtcbiAgICB2YXIgaWZUcnVlID0gbm9kZS5pZlRydWU7XG4gICAgdGhpcy52aXNpdE5vZGUoaWZUcnVlKTtcbiAgICBpZiAoaWZUcnVlLmtpbmQgIT0gTm9kZUtpbmQuQkxPQ0spIHtcbiAgICAgIHNiLnB1c2goXCI7XFxuXCIpO1xuICAgIH1cbiAgICB2YXIgaWZGYWxzZSA9IG5vZGUuaWZGYWxzZTtcbiAgICBpZiAoaWZGYWxzZSkge1xuICAgICAgaWYgKGlmVHJ1ZS5raW5kID09IE5vZGVLaW5kLkJMT0NLKSB7XG4gICAgICAgIHNiLnB1c2goXCIgZWxzZSBcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzYi5wdXNoKFwiZWxzZSBcIik7XG4gICAgICB9XG4gICAgICB0aGlzLnZpc2l0Tm9kZShpZkZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IEltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdmFyIGV4dGVybmFsTmFtZSA9IG5vZGUuZm9yZWlnbk5hbWU7XG4gICAgdmFyIG5hbWUgPSBub2RlLm5hbWU7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKGV4dGVybmFsTmFtZSk7XG4gICAgaWYgKGV4dGVybmFsTmFtZS50ZXh0ICE9IG5hbWUudGV4dCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiIGFzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihuYW1lKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEltcG9ydFN0YXRlbWVudChub2RlOiBJbXBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCJpbXBvcnQgXCIpO1xuICAgIHZhciBkZWNsYXJhdGlvbnMgPSBub2RlLmRlY2xhcmF0aW9ucztcbiAgICB2YXIgbmFtZXNwYWNlTmFtZSA9IG5vZGUubmFtZXNwYWNlTmFtZTtcbiAgICBpZiAoZGVjbGFyYXRpb25zKSB7XG4gICAgICBsZXQgbnVtRGVjbGFyYXRpb25zID0gZGVjbGFyYXRpb25zLmxlbmd0aDtcbiAgICAgIGlmIChudW1EZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbihkZWNsYXJhdGlvbnNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bURlY2xhcmF0aW9uczsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIixcXG5cIik7XG4gICAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgICAgdGhpcy52aXNpdEltcG9ydERlY2xhcmF0aW9uKGRlY2xhcmF0aW9uc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgLS10aGlzLmluZGVudExldmVsO1xuICAgICAgICBzYi5wdXNoKFwiXFxufSBmcm9tIFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNiLnB1c2goXCJ7fSBmcm9tIFwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZU5hbWUpIHtcbiAgICAgIHNiLnB1c2goXCIqIGFzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihuYW1lc3BhY2VOYW1lKTtcbiAgICAgIHNiLnB1c2goXCIgZnJvbSBcIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihub2RlLnBhdGgpO1xuICB9XG5cbiAgdmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG5vZGU6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCJba2V5OiBcIik7XG4gICAgdGhpcy52aXNpdFR5cGVOb2RlKG5vZGUua2V5VHlwZSk7XG4gICAgc2IucHVzaChcIl06IFwiKTtcbiAgICB0aGlzLnZpc2l0VHlwZU5vZGUobm9kZS52YWx1ZVR5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbihub2RlOiBJbnRlcmZhY2VEZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgZGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycztcbiAgICBpZiAoZGVjb3JhdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcihkZWNvcmF0b3JzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgIH1cbiAgICBzYi5wdXNoKFwiaW50ZXJmYWNlIFwiKTtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSBub2RlLnR5cGVQYXJhbWV0ZXJzO1xuICAgIGlmICh0eXBlUGFyYW1ldGVycyAmJiB0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgIHNiLnB1c2goXCI8XCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDEsIGsgPSB0eXBlUGFyYW1ldGVycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZVBhcmFtZXRlcih0eXBlUGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICB9XG4gICAgdmFyIGV4dGVuZHNUeXBlID0gbm9kZS5leHRlbmRzVHlwZTtcbiAgICBpZiAoZXh0ZW5kc1R5cGUpIHtcbiAgICAgIHNiLnB1c2goXCIgZXh0ZW5kcyBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZXh0ZW5kc1R5cGUpO1xuICAgIH1cbiAgICAvLyBtdXN0IG5vdCBoYXZlIGltcGxlbWVudHNUeXBlc1xuICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICB2YXIgaW5kZW50TGV2ZWwgPSArK3RoaXMuaW5kZW50TGV2ZWw7XG4gICAgdmFyIG1lbWJlcnMgPSBub2RlLm1lbWJlcnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBtZW1iZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICB0aGlzLnZpc2l0Tm9kZUFuZFRlcm1pbmF0ZShtZW1iZXJzW2ldKTtcbiAgICB9XG4gICAgLS10aGlzLmluZGVudExldmVsO1xuICAgIHNiLnB1c2goXCJ9XCIpO1xuICB9XG5cbiAgdmlzaXRNZXRob2REZWNsYXJhdGlvbihub2RlOiBNZXRob2REZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhub2RlKTtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5HRVQpKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJnZXQgXCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5pcyhDb21tb25GbGFncy5TRVQpKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJzZXQgXCIpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0RnVuY3Rpb25Db21tb24obm9kZSk7XG4gIH1cblxuICB2aXNpdE5hbWVzcGFjZURlY2xhcmF0aW9uKG5vZGU6IE5hbWVzcGFjZURlY2xhcmF0aW9uLCBpc0RlZmF1bHQ6IGJvb2wgPSBmYWxzZSk6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQgZGVmYXVsdCBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIHNiLnB1c2goXCJuYW1lc3BhY2UgXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciBtZW1iZXJzID0gbm9kZS5tZW1iZXJzO1xuICAgIHZhciBudW1NZW1iZXJzID0gbWVtYmVycy5sZW5ndGg7XG4gICAgaWYgKG51bU1lbWJlcnMpIHtcbiAgICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gbWVtYmVycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKG1lbWJlcnNbaV0pO1xuICAgICAgfVxuICAgICAgaW5kZW50KHNiLCAtLXRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIn1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIge31cIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRSZXR1cm5TdGF0ZW1lbnQobm9kZTogUmV0dXJuU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHZhbHVlID0gbm9kZS52YWx1ZTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2IucHVzaChcInJldHVybiBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2IucHVzaChcInJldHVyblwiKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFN3aXRjaENhc2Uobm9kZTogU3dpdGNoQ2FzZSk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIGxhYmVsID0gbm9kZS5sYWJlbDtcbiAgICBpZiAobGFiZWwpIHtcbiAgICAgIHNiLnB1c2goXCJjYXNlIFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGxhYmVsKTtcbiAgICAgIHNiLnB1c2goXCI6XFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiZGVmYXVsdDpcXG5cIik7XG4gICAgfVxuICAgIHZhciBzdGF0ZW1lbnRzID0gbm9kZS5zdGF0ZW1lbnRzO1xuICAgIHZhciBudW1TdGF0ZW1lbnRzID0gc3RhdGVtZW50cy5sZW5ndGg7XG4gICAgaWYgKG51bVN0YXRlbWVudHMpIHtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVN0YXRlbWVudHM7ICsraSkge1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICAtLXRoaXMuaW5kZW50TGV2ZWw7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTd2l0Y2hTdGF0ZW1lbnQobm9kZTogU3dpdGNoU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKFwic3dpdGNoIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIpIHtcXG5cIik7XG4gICAgdmFyIGluZGVudExldmVsID0gKyt0aGlzLmluZGVudExldmVsO1xuICAgIHZhciBjYXNlcyA9IG5vZGUuY2FzZXM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBjYXNlcy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdFN3aXRjaENhc2UoY2FzZXNbaV0pO1xuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICB9XG4gICAgLS10aGlzLmluZGVudExldmVsO1xuICAgIHNiLnB1c2goXCJ9XCIpO1xuICB9XG5cbiAgdmlzaXRUaHJvd1N0YXRlbWVudChub2RlOiBUaHJvd1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuc2IucHVzaChcInRocm93IFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnZhbHVlKTtcbiAgfVxuXG4gIHZpc2l0VHJ5U3RhdGVtZW50KG5vZGU6IFRyeVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcInRyeSB7XFxuXCIpO1xuICAgIHZhciBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICB2YXIgc3RhdGVtZW50cyA9IG5vZGUuc3RhdGVtZW50cztcbiAgICBmb3IgKGxldCBpID0gMCwgayA9IHN0YXRlbWVudHMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKHN0YXRlbWVudHNbaV0pO1xuICAgIH1cbiAgICB2YXIgY2F0Y2hWYXJpYWJsZSA9IG5vZGUuY2F0Y2hWYXJpYWJsZTtcbiAgICBpZiAoY2F0Y2hWYXJpYWJsZSkge1xuICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCAtIDEpO1xuICAgICAgc2IucHVzaChcIn0gY2F0Y2ggKFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihjYXRjaFZhcmlhYmxlKTtcbiAgICAgIHNiLnB1c2goXCIpIHtcXG5cIik7XG4gICAgICBsZXQgY2F0Y2hTdGF0ZW1lbnRzID0gbm9kZS5jYXRjaFN0YXRlbWVudHM7XG4gICAgICBpZiAoY2F0Y2hTdGF0ZW1lbnRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gY2F0Y2hTdGF0ZW1lbnRzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKGNhdGNoU3RhdGVtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGZpbmFsbHlTdGF0ZW1lbnRzID0gbm9kZS5maW5hbGx5U3RhdGVtZW50cztcbiAgICBpZiAoZmluYWxseVN0YXRlbWVudHMpIHtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwgLSAxKTtcbiAgICAgIHNiLnB1c2goXCJ9IGZpbmFsbHkge1xcblwiKTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gZmluYWxseVN0YXRlbWVudHMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZUFuZFRlcm1pbmF0ZShmaW5hbGx5U3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwgLSAxKTtcbiAgICBzYi5wdXNoKFwifVwiKTtcbiAgfVxuXG4gIHZpc2l0VHlwZURlY2xhcmF0aW9uKG5vZGU6IFR5cGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgc2IucHVzaChcInR5cGUgXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlUGFyYW1ldGVycyA9IG5vZGUudHlwZVBhcmFtZXRlcnM7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzKSB7XG4gICAgICBsZXQgbnVtVHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBpZiAobnVtVHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgICAgc2IucHVzaChcIjxcIik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtVHlwZVBhcmFtZXRlcnM7ICsraSkge1xuICAgICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKHR5cGVQYXJhbWV0ZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2IucHVzaChcIiA9IFwiKTtcbiAgICB0aGlzLnZpc2l0VHlwZU5vZGUobm9kZS50eXBlKTtcbiAgfVxuXG4gIHZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbihub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubmFtZSk7XG4gICAgdmFyIHR5cGUgPSBub2RlLnR5cGU7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5mbGFncyAmIENvbW1vbkZsYWdzLkRFRklOSVRFX0FTU0lHTk1FTlQpIHtcbiAgICAgIHNiLnB1c2goXCIhXCIpO1xuICAgIH1cbiAgICBpZiAodHlwZSkge1xuICAgICAgc2IucHVzaChcIjogXCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHR5cGUpO1xuICAgIH1cbiAgICB2YXIgaW5pdGlhbGl6ZXIgPSBub2RlLmluaXRpYWxpemVyO1xuICAgIGlmIChpbml0aWFsaXplcikge1xuICAgICAgc2IucHVzaChcIiA9IFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGluaXRpYWxpemVyKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlU3RhdGVtZW50KG5vZGU6IFZhcmlhYmxlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIGRlY29yYXRvcnMgPSBub2RlLmRlY29yYXRvcnM7XG4gICAgaWYgKGRlY29yYXRvcnMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gZGVjb3JhdG9ycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVEZWNvcmF0b3IoZGVjb3JhdG9yc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIGRlY2xhcmF0aW9ucyA9IG5vZGUuZGVjbGFyYXRpb25zO1xuICAgIHZhciBudW1EZWNsYXJhdGlvbnMgPSBhc3NlcnQoZGVjbGFyYXRpb25zLmxlbmd0aCk7XG4gICAgdmFyIGZpcnN0RGVjbGFyYXRpb24gPSBkZWNsYXJhdGlvbnNbMF07XG4gICAgdGhpcy5zZXJpYWxpemVFeHRlcm5hbE1vZGlmaWVycyhmaXJzdERlY2xhcmF0aW9uKTtcbiAgICBzYi5wdXNoKGZpcnN0RGVjbGFyYXRpb24uaXMoQ29tbW9uRmxhZ3MuQ09OU1QpID8gXCJjb25zdCBcIiA6IGZpcnN0RGVjbGFyYXRpb24uaXMoQ29tbW9uRmxhZ3MuTEVUKSA/IFwibGV0IFwiIDogXCJ2YXIgXCIpO1xuICAgIHRoaXMudmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUuZGVjbGFyYXRpb25zWzBdKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bURlY2xhcmF0aW9uczsgKytpKSB7XG4gICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICB0aGlzLnZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbihub2RlLmRlY2xhcmF0aW9uc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRXaGlsZVN0YXRlbWVudChub2RlOiBXaGlsZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIndoaWxlIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHZhciBzdGF0ZW1lbnQgPSBub2RlLnN0YXRlbWVudDtcbiAgICBpZiAoc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuRU1QVFkpIHtcbiAgICAgIHNiLnB1c2goXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiKSBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gb3RoZXJcblxuICBzZXJpYWxpemVEZWNvcmF0b3Iobm9kZTogRGVjb3JhdG9yTm9kZSk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIkBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICB2YXIgYXJncyA9IG5vZGUuYXJndW1lbnRzO1xuICAgIGlmIChhcmdzKSB7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICAgIGxldCBudW1BcmdzID0gYXJncy5sZW5ndGg7XG4gICAgICBpZiAobnVtQXJncykge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShhcmdzWzBdKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1BcmdzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdE5vZGUoYXJnc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCIpXFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgIH1cbiAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICB9XG5cbiAgc2VyaWFsaXplUGFyYW1ldGVyKG5vZGU6IFBhcmFtZXRlck5vZGUpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBraW5kID0gbm9kZS5wYXJhbWV0ZXJLaW5kO1xuICAgIHZhciBpbXBsaWNpdEZpZWxkRGVjbGFyYXRpb24gPSBub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbjtcbiAgICBpZiAoaW1wbGljaXRGaWVsZERlY2xhcmF0aW9uKSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhpbXBsaWNpdEZpZWxkRGVjbGFyYXRpb24pO1xuICAgIH1cbiAgICBpZiAoa2luZCA9PSBQYXJhbWV0ZXJLaW5kLlJFU1QpIHtcbiAgICAgIHNiLnB1c2goXCIuLi5cIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlID0gbm9kZS50eXBlO1xuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGlmIChraW5kID09IFBhcmFtZXRlcktpbmQuT1BUSU9OQUwgJiYgIWluaXRpYWxpemVyKSBzYi5wdXNoKFwiP1wiKTtcbiAgICAgIGlmICghaXNUeXBlT21pdHRlZCh0eXBlKSkge1xuICAgICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZSh0eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUoaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGU6IERlY2xhcmF0aW9uU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5FWFBPUlQpKSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuSU1QT1JUKSkge1xuICAgICAgc2IucHVzaChcImltcG9ydCBcIik7XG4gICAgfSBlbHNlIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLkRFQ0xBUkUpKSB7XG4gICAgICBzYi5wdXNoKFwiZGVjbGFyZSBcIik7XG4gICAgfVxuICB9XG5cbiAgc2VyaWFsaXplQWNjZXNzTW9kaWZpZXJzKG5vZGU6IERlY2xhcmF0aW9uU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5QVUJMSUMpKSB7XG4gICAgICBzYi5wdXNoKFwicHVibGljIFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuUFJJVkFURSkpIHtcbiAgICAgIHNiLnB1c2goXCJwcml2YXRlIFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuUFJPVEVDVEVEKSkge1xuICAgICAgc2IucHVzaChcInByb3RlY3RlZCBcIik7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLlNUQVRJQykpIHtcbiAgICAgIHNiLnB1c2goXCJzdGF0aWMgXCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5pcyhDb21tb25GbGFncy5BQlNUUkFDVCkpIHtcbiAgICAgIHNiLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLlJFQURPTkxZKSkge1xuICAgICAgc2IucHVzaChcInJlYWRvbmx5IFwiKTtcbiAgICB9XG4gIH1cblxuICBmaW5pc2goKTogc3RyaW5nIHtcbiAgICB2YXIgcmV0ID0gdGhpcy5zYi5qb2luKFwiXCIpO1xuICAgIHRoaXMuc2IgPSBbXTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG4iXX0= + +/***/ }), + +/***/ "./src/visitor.ts": +/*!************************!*\ + !*** ./src/visitor.ts ***! + \************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __values = (this && this.__values) || function (o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; +}; +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +// export type Collection = NonNullCollection| null; +var isIterable = function (object) { + //@ts-ignore + return object != null && typeof object[Symbol.iterator] === "function"; +}; +var DefaultWriter = /** @class */ (function () { + function DefaultWriter() { + } + DefaultWriter.prototype.writeString = function (s) { }; + DefaultWriter.prototype.writeNode = function (node) { }; + return DefaultWriter; +}()); +exports.DefaultWriter = DefaultWriter; +var AbstractVisitor = /** @class */ (function () { + function AbstractVisitor(writer) { + if (writer === void 0) { writer = new DefaultWriter(); } + this.writer = writer; + } + AbstractVisitor.prototype.writeString = function (str) { + return this.writeString(str); + }; + AbstractVisitor.prototype.writeNode = function (item) { + this.writer.writeNode(item); + }; + AbstractVisitor.prototype.visit = function (node) { + var e_1, _a, e_2, _b; + var _this = this; + if (node == null) + return; + if (node instanceof Array) { + node.map(function (node) { _this.visit(node); }); + } + else if (node instanceof Map) { + try { + for (var _c = __values(node.entries()), _d = _c.next(); !_d.done; _d = _c.next()) { + var _e = __read(_d.value, 2), key = _e[0], _node = _e[1]; + this.visit(_node); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) _a.call(_c); + } + finally { if (e_1) throw e_1.error; } + } + //@ts-ignore Need a better way to test type + } + else if (isIterable(node)) { + try { + //TODO: Find better way to test if iterable + for (var node_1 = __values(node), node_1_1 = node_1.next(); !node_1_1.done; node_1_1 = node_1.next()) { + var _node = node_1_1.value; + this.visit(_node); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (node_1_1 && !node_1_1.done && (_b = node_1.return)) _b.call(node_1); + } + finally { if (e_2) throw e_2.error; } + } + } + else { + //@ts-ignore Node is not iterable. + this._visit(node); + } + }; + return AbstractVisitor; +}()); +exports.AbstractVisitor = AbstractVisitor; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aXNpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSwwREFBMEQ7QUFFMUQsSUFBTSxVQUFVLEdBQUcsVUFBQyxNQUFjO0lBQ2hDLFlBQVk7SUFDWixPQUFBLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVU7QUFBL0QsQ0FBK0QsQ0FBQztBQU9sRTtJQUFBO0lBSUEsQ0FBQztJQUhDLG1DQUFXLEdBQVgsVUFBWSxDQUFTLElBQVUsQ0FBQztJQUNoQyxpQ0FBUyxHQUFULFVBQVUsSUFBbUIsSUFBUyxDQUFDO0lBRXpDLG9CQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7QUFKWSxzQ0FBYTtBQU0xQjtJQUVFLHlCQUFzQixNQUEwQztRQUExQyx1QkFBQSxFQUFBLGFBQXdCLGFBQWEsRUFBSztRQUExQyxXQUFNLEdBQU4sTUFBTSxDQUFvQztJQUFHLENBQUM7SUFFcEUscUNBQVcsR0FBWCxVQUFZLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxtQ0FBUyxHQUFULFVBQVUsSUFBbUI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELCtCQUFLLEdBQUwsVUFBTSxJQUEwQjs7UUFBaEMsaUJBa0JDO1FBakJDLElBQUksSUFBSSxJQUFJLElBQUk7WUFBRSxPQUFPO1FBQ3pCLElBQUksSUFBSSxZQUFZLEtBQUssRUFBRTtZQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUMsSUFBTyxJQUFhLEtBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRDthQUFNLElBQUksSUFBSSxZQUFZLEdBQUcsRUFBRTs7Z0JBQzlCLEtBQXlCLElBQUEsS0FBQSxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBaEMsSUFBQSx3QkFBWSxFQUFYLFdBQUcsRUFBRSxhQUFLO29CQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNuQjs7Ozs7Ozs7O1lBQ0QsMkNBQTJDO1NBQzVDO2FBQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7O2dCQUN6QiwyQ0FBMkM7Z0JBQzdDLEtBQWtCLElBQUEsU0FBQSxTQUFBLElBQUksQ0FBQSwwQkFBQSw0Q0FBRTtvQkFBbkIsSUFBSSxLQUFLLGlCQUFBO29CQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3JCOzs7Ozs7Ozs7U0FDRjthQUFNO1lBQ0wsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBR0gsc0JBQUM7QUFBRCxDQUFDLEFBakNELElBaUNDO0FBakNxQiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvbjxUPiA9IFQgfCBUW10gfCBNYXA8c3RyaW5nLCBUIHwgVFtdIHwgSXRlcmFibGU8VD4+IHwgSXRlcmFibGU8VD47XG4vLyBleHBvcnQgdHlwZSBDb2xsZWN0aW9uPFQ+ID0gTm9uTnVsbENvbGxlY3Rpb248VD58IG51bGw7XG5cbmNvbnN0IGlzSXRlcmFibGUgPSAob2JqZWN0OiBvYmplY3QpOiBib29sZWFuID0+XG4gIC8vQHRzLWlnbm9yZVxuICBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0W1N5bWJvbC5pdGVyYXRvcl0gPT09IFwiZnVuY3Rpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZXI8VD4ge1xuICB3cml0ZVN0cmluZyh4OiBDb2xsZWN0aW9uPFQ+IHwgc3RyaW5nKTogdm9pZDtcbiAgd3JpdGVOb2RlKHg6IENvbGxlY3Rpb248VD4pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFdyaXRlcjxUPiBpbXBsZW1lbnRzIFdyaXRlcjxUPiB7XG4gIHdyaXRlU3RyaW5nKHM6IHN0cmluZyk6IHZvaWQgeyB9XG4gIHdyaXRlTm9kZShub2RlOiBDb2xsZWN0aW9uPFQ+KTogdm9pZCB7fVxuXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZpc2l0b3I8VD4ge1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB3cml0ZXI6IFdyaXRlcjxUPiA9IG5ldyBEZWZhdWx0V3JpdGVyPFQ+KCkpIHt9XG5cbiAgd3JpdGVTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLndyaXRlU3RyaW5nKHN0cik7XG4gIH1cblxuICB3cml0ZU5vZGUoaXRlbTogQ29sbGVjdGlvbjxUPiApOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlci53cml0ZU5vZGUoaXRlbSk7XG4gIH1cblxuICB2aXNpdChub2RlOiBDb2xsZWN0aW9uPFQ+IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChub2RlID09IG51bGwpIHJldHVybjtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBub2RlLm1hcCgobm9kZTogVCk6IHZvaWQgPT4geyB0aGlzLnZpc2l0KG5vZGUpOyB9KTtcbiAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgIGZvciAobGV0IFtrZXksIF9ub2RlXSBvZiBub2RlLmVudHJpZXMoKSkge1xuICAgICAgICB0aGlzLnZpc2l0KF9ub2RlKTtcbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZSBOZWVkIGEgYmV0dGVyIHdheSB0byB0ZXN0IHR5cGVcbiAgICB9IGVsc2UgaWYgKGlzSXRlcmFibGUobm9kZSkpIHtcbiAgICAgICAgLy9UT0RPOiBGaW5kIGJldHRlciB3YXkgdG8gdGVzdCBpZiBpdGVyYWJsZVxuICAgICAgZm9yIChsZXQgX25vZGUgb2Ygbm9kZSkge1xuICAgICAgICAgIHRoaXMudmlzaXQoX25vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvL0B0cy1pZ25vcmUgTm9kZSBpcyBub3QgaXRlcmFibGUuXG4gICAgICB0aGlzLl92aXNpdChub2RlKTtcbiAgICB9XG4gIH1cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF92aXNpdChub2RlOiBUKTogdm9pZDtcblxufVxuIl19 + +/***/ }) + +/******/ }); +}); +//# sourceMappingURL=transformerBundle.js.map \ No newline at end of file diff --git a/bindings/src/index.ts b/bindings/src/index.ts index 61814544b3..6bf078bf48 100644 --- a/bindings/src/index.ts +++ b/bindings/src/index.ts @@ -11,7 +11,8 @@ import { NamedTypeNode, SourceKind, DeclarationStatement, - TypeName + TypeName, + ParameterNode } from "../../src/ast"; import { CommonFlags } from "../../src/common"; import { Parser } from "./mockTypes"; @@ -121,9 +122,9 @@ class NEARBindingsBuilder extends BaseVisitor { super.visitFunctionDeclaration(node); return; } - if (numOfParameters(node) > 0){ - this.generateArgsParser(node); - } + // if (numOfParameters(node) > 0){ + // this.generateArgsParser(node); + // } this.generateWrapperFunction(node); // Change function to not be an export node.flags = node.flags ^ CommonFlags.EXPORT; @@ -183,10 +184,8 @@ function __wrapper_${name}(): void {`); } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_${name}(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_${name}>(handler); - handler.decoder.deserialize(json);`); + const obj: Obj = JSON.parse(json); + `); } if (toString(returnType) !== "void") { this.sb.push( @@ -198,7 +197,7 @@ function __wrapper_${name}(): void {`); if (params.length > 0) { this.sb[this.sb.length - 1] += ( params - .map(paramName => `handler.__near_param_${paramName.name.symbol}`) + .map((param) => createDecodeStatement(param)) .join(", ") ); } @@ -431,21 +430,20 @@ export { __wrapper_${name} as ${name} } } let className = this.typeName(_class); str += ` - static decode(json: Uint8Array, state: DecoderState | null = null): ${className} { + static decode(json: Uint8Array): ${className} { let value = instantiate<${className}>(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): ${className} { - let handler: __near_JSONHandler_${className} = new __near_JSONHandler_${className}(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_${className}>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): ${className} { + let obj: Obj = json; + ${createDecodeStatements(_class)} return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -471,6 +469,20 @@ export { __wrapper_${name} as ${name} } } +function createDecodeStatements(_class: ClassDeclaration): string { + let res = _class.members.filter(isField).map( + (field: FieldDeclaration): string => createDecodeStatement(field, `this.${toString(field.name)} = `) + ).join(";\n "); + return res + (res.length>0 ? ";": "") +} + +function createDecodeStatement(field: FieldDeclaration | ParameterNode, setterPrefix: string = ""): string { + let T = toString(field.type!); + let name = toString(field.name); + return `${setterPrefix}decode<${T}>(obj, "${name}")`; + +} + function createEncodeStatements(_class: ClassDeclaration): string[] { return _class.members.filter(isField).map( (field: FieldDeclaration): string => { diff --git a/bindings/src/preamble.ts b/bindings/src/preamble.ts index 3883ba19c1..38a0799af8 100644 --- a/bindings/src/preamble.ts +++ b/bindings/src/preamble.ts @@ -1,5 +1,5 @@ -export const preamble = `import { storage, near, base64 } from "near-runtime-ts"; +export const preamble = `import { base64 } from "near-runtime-ts"; import { JSONEncoder } from "assemblyscript-json"; import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; `; diff --git a/tests/near-bindgen/assembly/test.ts b/tests/near-bindgen/assembly/test.ts index 2a7677cc1f..c6d5028671 100644 --- a/tests/near-bindgen/assembly/test.ts +++ b/tests/near-bindgen/assembly/test.ts @@ -24,8 +24,10 @@ export function runTest(): void { logging.log("Before: " + encoder.toString()); //@ts-ignore const encoded = encoder.serialize(); + let obj = JSON.parse(encoded); + logging.log(obj.keys.join(", ")); //@ts-ignore - let decoded: FooBar = decode(encoded); + let decoded: FooBar = decode(obj); logging.log("After: "+ decoded.toJSON()); assert(original.foo == decoded.foo); assert(original.bar == decoded.bar); @@ -37,7 +39,7 @@ export function runTest(): void { const nullable = new Nullables(); //@ts-ignore - const nullable2 = decode(nullable.serialize()); + const nullable2 = decode(JSON.parse(nullable.serialize())); assert(nullable2.str == null); assert(nullable2.u128 == null); assert(nullable2.uint8Array == null); diff --git a/tests/near-bindgen/out/assembly/hello/main.ts b/tests/near-bindgen/out/assembly/hello/main.ts index defec282ab..5f73bf6fcb 100644 --- a/tests/near-bindgen/out/assembly/hello/main.ts +++ b/tests/near-bindgen/out/assembly/hello/main.ts @@ -1,47 +1,8 @@ -import { storage, near, base64 } from "near-runtime-ts"; +import { base64 } from "near-runtime-ts"; import { JSONEncoder } from "assemblyscript-json"; import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; -class __near_ArgsParser_hello extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_hello>; - handledRoot: boolean = false; - __near_param_name: string; - setString(name: string, value: string): void { - if (name == "name") { - this.__near_param_name = value; - return; - } - super.setString(name, value); - } - setNull(name: string): void { - if (name == "name") { - this.__near_param_name = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_hello(): void { // Reading input bytes. @@ -52,11 +13,9 @@ function __wrapper_hello(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_hello(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_hello>(handler); - handler.decoder.deserialize(json); - let result: string = hello(handler.__near_param_name); + const obj: Obj = JSON.parse(json); + + let result: string = hello(decode(obj, "name")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -71,54 +30,6 @@ function __wrapper_hello(): void { export { __wrapper_hello as hello } -class __near_ArgsParser_setKeyValue extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_setKeyValue>; - handledRoot: boolean = false; - __near_param_key: string; - __near_param_value: string; - setString(name: string, value: string): void { - if (name == "key") { - this.__near_param_key = value; - return; - } - if (name == "value") { - this.__near_param_value = value; - return; - } - super.setString(name, value); - } - setNull(name: string): void { - if (name == "key") { - this.__near_param_key = null - return; - } - if (name == "value") { - this.__near_param_value = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_setKeyValue(): void { // Reading input bytes. @@ -129,55 +40,14 @@ function __wrapper_setKeyValue(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_setKeyValue(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_setKeyValue>(handler); - handler.decoder.deserialize(json); - setKeyValue(handler.__near_param_key, handler.__near_param_value); + const obj: Obj = JSON.parse(json); + + setKeyValue(decode(obj, "key"), decode(obj, "value")); } export { __wrapper_setKeyValue as setKeyValue } -class __near_ArgsParser_getValueByKey extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_getValueByKey>; - handledRoot: boolean = false; - __near_param_key: string; - setString(name: string, value: string): void { - if (name == "key") { - this.__near_param_key = value; - return; - } - super.setString(name, value); - } - setNull(name: string): void { - if (name == "key") { - this.__near_param_key = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_getValueByKey(): void { // Reading input bytes. @@ -188,11 +58,9 @@ function __wrapper_getValueByKey(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_getValueByKey(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_getValueByKey>(handler); - handler.decoder.deserialize(json); - let result: string = getValueByKey(handler.__near_param_key); + const obj: Obj = JSON.parse(json); + + let result: string = getValueByKey(decode(obj, "key")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -207,45 +75,6 @@ function __wrapper_getValueByKey(): void { export { __wrapper_getValueByKey as getValueByKey } -class __near_ArgsParser_setValue extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_setValue>; - handledRoot: boolean = false; - __near_param_value: string; - setString(name: string, value: string): void { - if (name == "value") { - this.__near_param_value = value; - return; - } - super.setString(name, value); - } - setNull(name: string): void { - if (name == "value") { - this.__near_param_value = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_setValue(): void { // Reading input bytes. @@ -256,11 +85,9 @@ function __wrapper_setValue(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_setValue(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_setValue>(handler); - handler.decoder.deserialize(json); - let result: string = setValue(handler.__near_param_value); + const obj: Obj = JSON.parse(json); + + let result: string = setValue(decode(obj, "value")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -326,41 +153,6 @@ function __wrapper_benchmark(): void { export { __wrapper_benchmark as benchmark } -class __near_ArgsParser_benchmark_storage extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_benchmark_storage>; - handledRoot: boolean = false; - __near_param_n: i32; - setInteger(name: string, value: i64): void { - if (name == "n") { - this.__near_param_n = value; - return; - } - super.setInteger(name, value); - } - setNull(name: string): void { - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_benchmark_storage(): void { // Reading input bytes. @@ -371,11 +163,9 @@ function __wrapper_benchmark_storage(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_benchmark_storage(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_benchmark_storage>(handler); - handler.decoder.deserialize(json); - let result: string = benchmark_storage(handler.__near_param_n); + const obj: Obj = JSON.parse(json); + + let result: string = benchmark_storage(decode(obj, "n")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -390,41 +180,6 @@ function __wrapper_benchmark_storage(): void { export { __wrapper_benchmark_storage as benchmark_storage } -class __near_ArgsParser_limited_storage extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_limited_storage>; - handledRoot: boolean = false; - __near_param_max_storage: u64; - setString(name: string, value: string): void { - if (name == "max_storage") { - this.__near_param_max_storage = U64.parseInt(value); - return; - } - super.setString(name, value); - } - setNull(name: string): void { - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_limited_storage(): void { // Reading input bytes. @@ -435,11 +190,9 @@ function __wrapper_limited_storage(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_limited_storage(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_limited_storage>(handler); - handler.decoder.deserialize(json); - let result: string = limited_storage(handler.__near_param_max_storage); + const obj: Obj = JSON.parse(json); + + let result: string = limited_storage(decode(obj, "max_storage")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -454,41 +207,6 @@ function __wrapper_limited_storage(): void { export { __wrapper_limited_storage as limited_storage } -class __near_ArgsParser_benchmark_sum_n extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_benchmark_sum_n>; - handledRoot: boolean = false; - __near_param_n: i32; - setInteger(name: string, value: i64): void { - if (name == "n") { - this.__near_param_n = value; - return; - } - super.setInteger(name, value); - } - setNull(name: string): void { - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_benchmark_sum_n(): void { // Reading input bytes. @@ -499,11 +217,9 @@ function __wrapper_benchmark_sum_n(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_benchmark_sum_n(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_benchmark_sum_n>(handler); - handler.decoder.deserialize(json); - let result: string = benchmark_sum_n(handler.__near_param_n); + const obj: Obj = JSON.parse(json); + + let result: string = benchmark_sum_n(decode(obj, "n")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -535,45 +251,6 @@ function __wrapper_returnHiWithLogs(): void { export { __wrapper_returnHiWithLogs as returnHiWithLogs } -class __near_ArgsParser_testSetRemove extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_testSetRemove>; - handledRoot: boolean = false; - __near_param_value: string; - setString(name: string, value: string): void { - if (name == "value") { - this.__near_param_value = value; - return; - } - super.setString(name, value); - } - setNull(name: string): void { - if (name == "value") { - this.__near_param_value = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_testSetRemove(): void { // Reading input bytes. @@ -584,56 +261,14 @@ function __wrapper_testSetRemove(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_testSetRemove(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_testSetRemove>(handler); - handler.decoder.deserialize(json); - testSetRemove(handler.__near_param_value); + const obj: Obj = JSON.parse(json); + + testSetRemove(decode(obj, "value")); } export { __wrapper_testSetRemove as testSetRemove } -class __near_ArgsParser_insertStrings extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_insertStrings>; - handledRoot: boolean = false; - __near_param_from: i32; - __near_param_to: i32; - setInteger(name: string, value: i64): void { - if (name == "from") { - this.__near_param_from = value; - return; - } - if (name == "to") { - this.__near_param_to = value; - return; - } - super.setInteger(name, value); - } - setNull(name: string): void { - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_insertStrings(): void { // Reading input bytes. @@ -644,56 +279,14 @@ function __wrapper_insertStrings(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_insertStrings(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_insertStrings>(handler); - handler.decoder.deserialize(json); - insertStrings(handler.__near_param_from, handler.__near_param_to); + const obj: Obj = JSON.parse(json); + + insertStrings(decode(obj, "from"), decode(obj, "to")); } export { __wrapper_insertStrings as insertStrings } -class __near_ArgsParser_deleteStrings extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_deleteStrings>; - handledRoot: boolean = false; - __near_param_from: i32; - __near_param_to: i32; - setInteger(name: string, value: i64): void { - if (name == "from") { - this.__near_param_from = value; - return; - } - if (name == "to") { - this.__near_param_to = value; - return; - } - super.setInteger(name, value); - } - setNull(name: string): void { - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_deleteStrings(): void { // Reading input bytes. @@ -704,51 +297,14 @@ function __wrapper_deleteStrings(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_deleteStrings(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_deleteStrings>(handler); - handler.decoder.deserialize(json); - deleteStrings(handler.__near_param_from, handler.__near_param_to); + const obj: Obj = JSON.parse(json); + + deleteStrings(decode(obj, "from"), decode(obj, "to")); } export { __wrapper_deleteStrings as deleteStrings } -class __near_ArgsParser_recurse extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_recurse>; - handledRoot: boolean = false; - __near_param_n: i32; - setInteger(name: string, value: i64): void { - if (name == "n") { - this.__near_param_n = value; - return; - } - super.setInteger(name, value); - } - setNull(name: string): void { - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_recurse(): void { // Reading input bytes. @@ -759,11 +315,9 @@ function __wrapper_recurse(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_recurse(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_recurse>(handler); - handler.decoder.deserialize(json); - let result: i32 = recurse(handler.__near_param_n); + const obj: Obj = JSON.parse(json); + + let result: i32 = recurse(decode(obj, "n")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -778,42 +332,6 @@ function __wrapper_recurse(): void { export { __wrapper_recurse as recurse } -class __near_ArgsParser_callPromise extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_callPromise>; - handledRoot: boolean = false; - __near_param_args: PromiseArgs; - setNull(name: string): void { - if (name == "args") { - this.__near_param_args = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "args") { - this.__near_param_args = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_callPromise(): void { // Reading input bytes. @@ -824,52 +342,14 @@ function __wrapper_callPromise(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_callPromise(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_callPromise>(handler); - handler.decoder.deserialize(json); - callPromise(handler.__near_param_args); + const obj: Obj = JSON.parse(json); + + callPromise(decode(obj, "args")); } export { __wrapper_callPromise as callPromise } -class __near_ArgsParser_callbackWithName extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_callbackWithName>; - handledRoot: boolean = false; - __near_param_args: PromiseArgs; - setNull(name: string): void { - if (name == "args") { - this.__near_param_args = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "args") { - this.__near_param_args = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_callbackWithName(): void { // Reading input bytes. @@ -880,11 +360,9 @@ function __wrapper_callbackWithName(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_callbackWithName(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_callbackWithName>(handler); - handler.decoder.deserialize(json); - let result: MyCallbackResult = callbackWithName(handler.__near_param_args); + const obj: Obj = JSON.parse(json); + + let result: MyCallbackResult = callbackWithName(decode(obj, "args")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { diff --git a/tests/near-bindgen/out/assembly/hello/model.ts b/tests/near-bindgen/out/assembly/hello/model.ts index 8c1f750b9c..b2cb77f7ef 100644 --- a/tests/near-bindgen/out/assembly/hello/model.ts +++ b/tests/near-bindgen/out/assembly/hello/model.ts @@ -1,4 +1,4 @@ -import { storage, near, base64 } from "near-runtime-ts"; +import { base64 } from "near-runtime-ts"; import { JSONEncoder } from "assemblyscript-json"; import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; @@ -253,21 +253,28 @@ export class PromiseArgs { callbackBalance: i32; callbackGas: i32; - static decode(json: Uint8Array, state: DecoderState | null = null): PromiseArgs { + static decode(json: Uint8Array): PromiseArgs { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): PromiseArgs { - let handler: __near_JSONHandler_PromiseArgs = new __near_JSONHandler_PromiseArgs(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_PromiseArgs>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): PromiseArgs { + let obj: Obj = json; + this.receiver = decode(obj, "receiver"); + this.methodName = decode(obj, "methodName"); + this.args = decode(obj, "args"); + this.gas = decode(obj, "gas"); + this.balance = decode(obj, "balance"); + this.callback = decode(obj, "callback"); + this.callbackArgs = decode(obj, "callbackArgs"); + this.callbackBalance = decode(obj, "callbackBalance"); + this.callbackGas = decode(obj, "callbackGas"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -295,21 +302,20 @@ export class PromiseArgs { export class InputPromiseArgs { args: PromiseArgs; - static decode(json: Uint8Array, state: DecoderState | null = null): InputPromiseArgs { + static decode(json: Uint8Array): InputPromiseArgs { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): InputPromiseArgs { - let handler: __near_JSONHandler_InputPromiseArgs = new __near_JSONHandler_InputPromiseArgs(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_InputPromiseArgs>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): InputPromiseArgs { + let obj: Obj = json; + this.args = decode(obj, "args"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -330,21 +336,21 @@ export class MyContractPromiseResult { ok: bool; r: MyCallbackResult; - static decode(json: Uint8Array, state: DecoderState | null = null): MyContractPromiseResult { + static decode(json: Uint8Array): MyContractPromiseResult { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): MyContractPromiseResult { - let handler: __near_JSONHandler_MyContractPromiseResult = new __near_JSONHandler_MyContractPromiseResult(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_MyContractPromiseResult>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): MyContractPromiseResult { + let obj: Obj = json; + this.ok = decode(obj, "ok"); + this.r = decode(obj, "r"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -366,21 +372,21 @@ export class MyCallbackResult { rs: Array; n: string; - static decode(json: Uint8Array, state: DecoderState | null = null): MyCallbackResult { + static decode(json: Uint8Array): MyCallbackResult { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): MyCallbackResult { - let handler: __near_JSONHandler_MyCallbackResult = new __near_JSONHandler_MyCallbackResult(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_MyCallbackResult>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): MyCallbackResult { + let obj: Obj = json; + this.rs = decode>(obj, "rs"); + this.n = decode(obj, "n"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); diff --git a/tests/near-bindgen/out/assembly/main.ts b/tests/near-bindgen/out/assembly/main.ts index 7592f61f18..d06ce60bc1 100644 --- a/tests/near-bindgen/out/assembly/main.ts +++ b/tests/near-bindgen/out/assembly/main.ts @@ -1,4 +1,4 @@ -import { storage, near, base64 } from "near-runtime-ts"; +import { base64 } from "near-runtime-ts"; import { JSONEncoder } from "assemblyscript-json"; import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; diff --git a/tests/near-bindgen/out/assembly/model.ts b/tests/near-bindgen/out/assembly/model.ts index cee48c9e43..8f73ea3fc0 100644 --- a/tests/near-bindgen/out/assembly/model.ts +++ b/tests/near-bindgen/out/assembly/model.ts @@ -1,4 +1,4 @@ -import { storage, near, base64 } from "near-runtime-ts"; +import { base64 } from "near-runtime-ts"; import { JSONEncoder } from "assemblyscript-json"; import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; @@ -566,21 +566,33 @@ export class FooBar { uint8arrays: Array; u64Arr: Array; - static decode(json: Uint8Array, state: DecoderState | null = null): FooBar { + static decode(json: Uint8Array): FooBar { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): FooBar { - let handler: __near_JSONHandler_FooBar = new __near_JSONHandler_FooBar(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_FooBar>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): FooBar { + let obj: Obj = json; + this.foo = decode(obj, "foo"); + this.bar = decode(obj, "bar"); + this.u64Val = decode(obj, "u64Val"); + this.u64_zero = decode(obj, "u64_zero"); + this.i64Val = decode(obj, "i64Val"); + this.flag = decode(obj, "flag"); + this.baz = decode(obj, "baz"); + this.uint8array = decode(obj, "uint8array"); + this.arr = decode>>(obj, "arr"); + this.u32Arr = decode>(obj, "u32Arr"); + this.i32Arr = decode>(obj, "i32Arr"); + this.u128Val = decode(obj, "u128Val"); + this.uint8arrays = decode>(obj, "uint8arrays"); + this.u64Arr = decode>(obj, "u64Arr"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -615,21 +627,22 @@ export class Nullables { u128: u128; uint8Array: Uint8Array; - static decode(json: Uint8Array, state: DecoderState | null = null): Nullables { + static decode(json: Uint8Array): Nullables { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): Nullables { - let handler: __near_JSONHandler_Nullables = new __near_JSONHandler_Nullables(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_Nullables>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): Nullables { + let obj: Obj = json; + this.str = decode(obj, "str"); + this.u128 = decode(obj, "u128"); + this.uint8Array = decode(obj, "uint8Array"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -651,21 +664,20 @@ export class Nullables { export class ContainerClass { foobar: FooBar; - static decode(json: Uint8Array, state: DecoderState | null = null): ContainerClass { + static decode(json: Uint8Array): ContainerClass { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): ContainerClass { - let handler: __near_JSONHandler_ContainerClass = new __near_JSONHandler_ContainerClass(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_ContainerClass>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): ContainerClass { + let obj: Obj = json; + this.foobar = decode(obj, "foobar"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -685,21 +697,20 @@ export class ContainerClass { export class AnotherContainerClass { foobars: Array>; - static decode(json: Uint8Array, state: DecoderState | null = null): AnotherContainerClass { + static decode(json: Uint8Array): AnotherContainerClass { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): AnotherContainerClass { - let handler: __near_JSONHandler_AnotherContainerClass = new __near_JSONHandler_AnotherContainerClass(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_AnotherContainerClass>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): AnotherContainerClass { + let obj: Obj = json; + this.foobars = decode>>(obj, "foobars"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -725,21 +736,26 @@ export class PromiseArgs { callbackArgs: PromiseArgs; callbackBalance: i32; - static decode(json: Uint8Array, state: DecoderState | null = null): PromiseArgs { + static decode(json: Uint8Array): PromiseArgs { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): PromiseArgs { - let handler: __near_JSONHandler_PromiseArgs = new __near_JSONHandler_PromiseArgs(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_PromiseArgs>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): PromiseArgs { + let obj: Obj = json; + this.receiver = decode(obj, "receiver"); + this.methodName = decode(obj, "methodName"); + this.args = decode(obj, "args"); + this.balance = decode(obj, "balance"); + this.callback = decode(obj, "callback"); + this.callbackArgs = decode(obj, "callbackArgs"); + this.callbackBalance = decode(obj, "callbackBalance"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -766,21 +782,21 @@ export class MyContractPromiseResult { ok: bool; r: MyCallbackResult; - static decode(json: Uint8Array, state: DecoderState | null = null): MyContractPromiseResult { + static decode(json: Uint8Array): MyContractPromiseResult { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): MyContractPromiseResult { - let handler: __near_JSONHandler_MyContractPromiseResult = new __near_JSONHandler_MyContractPromiseResult(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_MyContractPromiseResult>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): MyContractPromiseResult { + let obj: Obj = json; + this.ok = decode(obj, "ok"); + this.r = decode(obj, "r"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -802,21 +818,21 @@ export class MyCallbackResult { rs: Array; n: string; - static decode(json: Uint8Array, state: DecoderState | null = null): MyCallbackResult { + static decode(json: Uint8Array): MyCallbackResult { let value = instantiate(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): MyCallbackResult { - let handler: __near_JSONHandler_MyCallbackResult = new __near_JSONHandler_MyCallbackResult(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_MyCallbackResult>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): MyCallbackResult { + let obj: Obj = json; + this.rs = decode>(obj, "rs"); + this.n = decode(obj, "n"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -837,21 +853,20 @@ export class MyCallbackResult { export class Generic { value: T; - static decode(json: Uint8Array, state: DecoderState | null = null): Generic { + static decode(json: Uint8Array): Generic { let value = instantiate>(); // Allocate without constructor - value.decode(json, state); + value.decode(JSON.parse(json)); return value; } - decode(json: Uint8Array, state: DecoderState | null): Generic { - let handler: __near_JSONHandler_Generic = new __near_JSONHandler_Generic(this); - handler.buffer = json; - let decoder = new JSONDecoder<__near_JSONHandler_Generic>(handler); - handler.decoder = decoder; - decoder.deserialize(json, state); + decode(json: Obj): Generic { + let obj: Obj = json; + this.value = decode(obj, "value"); return this; } + + encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); diff --git a/tests/near-bindgen/out/assembly/test.ts b/tests/near-bindgen/out/assembly/test.ts index 84d42f1572..a23b7e6911 100644 --- a/tests/near-bindgen/out/assembly/test.ts +++ b/tests/near-bindgen/out/assembly/test.ts @@ -1,44 +1,8 @@ -import { storage, near, base64 } from "near-runtime-ts"; +import { base64 } from "near-runtime-ts"; import { JSONEncoder } from "assemblyscript-json"; import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; -class __near_ArgsParser_convertFoobars extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_convertFoobars>; - handledRoot: boolean = false; - __near_param_foobars: Array; - setNull(name: string): void { - if (name == "foobars") { - this.__near_param_foobars = >null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - if (name == "foobars") { - this.__near_param_foobars = decode>(this.buffer, this.decoder.state); - return false; - } - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_convertFoobars(): void { // Reading input bytes. @@ -49,11 +13,9 @@ function __wrapper_convertFoobars(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_convertFoobars(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_convertFoobars>(handler); - handler.decoder.deserialize(json); - let result: Array = convertFoobars(handler.__near_param_foobars); + const obj: Obj = JSON.parse(json); + + let result: Array = convertFoobars(decode>(obj, "foobars")); let encoder = new JSONEncoder(); if ((isString>() || isNullable>()) && result == null) { @@ -68,42 +30,6 @@ function __wrapper_convertFoobars(): void { export { __wrapper_convertFoobars as convertFoobars } -class __near_ArgsParser_getStringArrayLength extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_getStringArrayLength>; - handledRoot: boolean = false; - __near_param_arr: Array; - setNull(name: string): void { - if (name == "arr") { - this.__near_param_arr = >null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - if (name == "arr") { - this.__near_param_arr = decode>(this.buffer, this.decoder.state); - return false; - } - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_getStringArrayLength(): void { // Reading input bytes. @@ -114,11 +40,9 @@ function __wrapper_getStringArrayLength(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_getStringArrayLength(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_getStringArrayLength>(handler); - handler.decoder.deserialize(json); - let result: i32 = getStringArrayLength(handler.__near_param_arr); + const obj: Obj = JSON.parse(json); + + let result: i32 = getStringArrayLength(decode>(obj, "arr")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -133,42 +57,6 @@ function __wrapper_getStringArrayLength(): void { export { __wrapper_getStringArrayLength as getStringArrayLength } -class __near_ArgsParser_rewrapFoobar extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_rewrapFoobar>; - handledRoot: boolean = false; - __near_param_container: ContainerClass; - setNull(name: string): void { - if (name == "container") { - this.__near_param_container = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "container") { - this.__near_param_container = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_rewrapFoobar(): void { // Reading input bytes. @@ -179,11 +67,9 @@ function __wrapper_rewrapFoobar(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_rewrapFoobar(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_rewrapFoobar>(handler); - handler.decoder.deserialize(json); - let result: AnotherContainerClass = rewrapFoobar(handler.__near_param_container); + const obj: Obj = JSON.parse(json); + + let result: AnotherContainerClass = rewrapFoobar(decode(obj, "container")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -198,42 +84,6 @@ function __wrapper_rewrapFoobar(): void { export { __wrapper_rewrapFoobar as rewrapFoobar } -class __near_ArgsParser_unwrapFoobar extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_unwrapFoobar>; - handledRoot: boolean = false; - __near_param_container: AnotherContainerClass; - setNull(name: string): void { - if (name == "container") { - this.__near_param_container = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "container") { - this.__near_param_container = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - //@ts-ignore function __wrapper_unwrapFoobar(): void { // Reading input bytes. @@ -244,11 +94,9 @@ function __wrapper_unwrapFoobar(): void { } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - let handler = new __near_ArgsParser_unwrapFoobar(); - handler.buffer = json; - handler.decoder = new JSONDecoder<__near_ArgsParser_unwrapFoobar>(handler); - handler.decoder.deserialize(json); - let result: FooBar = unwrapFoobar(handler.__near_param_container); + const obj: Obj = JSON.parse(json); + + let result: FooBar = unwrapFoobar(decode(obj, "container")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -311,7 +159,9 @@ export function runTest(): void { const encoder = original.encode(); logging.log("Before: " + encoder.toString()); const encoded = encoder.serialize(); - let decoded: FooBar = decode(encoded); + let obj = JSON.parse(encoded); + logging.log(obj.keys.join(", ")); + let decoded: FooBar = decode(obj); logging.log("After: " + decoded.toJSON()); assert(original.foo == decoded.foo); assert(original.bar == decoded.bar); @@ -321,7 +171,7 @@ export function runTest(): void { assert(original.u64Arr[0] == decoded.u64Arr[0]); assert(original.u64_zero == decoded.u64_zero); const nullable = new Nullables(); - const nullable2 = decode(nullable.serialize()); + const nullable2 = decode(JSON.parse(nullable.serialize())); assert(nullable2.str == null); assert(nullable2.u128 == null); assert(nullable2.uint8Array == null); diff --git a/tests/near-bindgen/out/hello.wat b/tests/near-bindgen/out/hello.wat index 3723f5d824..a2853c6254 100644 --- a/tests/near-bindgen/out/hello.wat +++ b/tests/near-bindgen/out/hello.wat @@ -9,17 +9,18 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vjj (func (param i64 i64))) + (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$viij (func (param i32 i32 i64))) (type $FUNCSIG$ij (func (param i64) (result i32))) - (type $FUNCSIG$viji (func (param i32 i64 i32))) + (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$jjjjjj (func (param i64 i64 i64 i64 i64) (result i64))) (type $FUNCSIG$jjjj (func (param i64 i64 i64) (result i64))) - (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$jjj (func (param i64 i64) (result i64))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) + (type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$ji (func (param i32) (result i64))) (type $FUNCSIG$j (func (result i64))) @@ -27,7 +28,6 @@ (type $FUNCSIG$iijj (func (param i32 i64 i64) (result i32))) (type $FUNCSIG$iiiiji (func (param i32 i32 i32 i64 i32) (result i32))) (type $FUNCSIG$jjjjjjjjj (func (param i64 i64 i64 i64 i64 i64 i64 i64) (result i64))) - (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$iiiiiji (func (param i32 i32 i32 i32 i64 i32) (result i32))) (type $FUNCSIG$jjjjjjjjjj (func (param i64 i64 i64 i64 i64 i64 i64 i64 i64) (result i64))) (import "env" "input" (func $~lib/nearEntry/input (param i64))) @@ -69,100 +69,111 @@ (data (i32.const 392) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00+\00/\00") (data (i32.const 536) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") (data (i32.const 584) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 640) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 656) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 712) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 768) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00i\00n\00p\00u\00t\00 \00e\00n\00d\00") - (data (i32.const 824) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00d\00e\00c\00o\00d\00e\00r\00.\00t\00s\00") - (data (i32.const 912) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00{\00") - (data (i32.const 936) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00h\00e\00l\00l\00o\00/\00m\00a\00i\00n\00.\00t\00s\00") - (data (i32.const 1000) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00o\00b\00j\00e\00c\00t\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 1064) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00}\00") - (data (i32.const 1088) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 1112) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00,\00\'\00") - (data (i32.const 1152) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\"\00") - (data (i32.const 1176) ":\00\00\00\01\00\00\00\01\00\00\00:\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00d\00o\00u\00b\00l\00e\00-\00q\00u\00o\00t\00e\00d\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 1256) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 1368) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 1416) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00") - (data (i32.const 1488) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 1536) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") - (data (i32.const 1584) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\\\00") - (data (i32.const 1608) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00/\00") - (data (i32.const 1632) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 1656) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\08\00") - (data (i32.const 1680) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n\00") - (data (i32.const 1704) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\n\00") - (data (i32.const 1728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00r\00") - (data (i32.const 1752) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0d\00") - (data (i32.const 1776) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00t\00") - (data (i32.const 1800) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\t\00") - (data (i32.const 1824) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00u\00") - (data (i32.const 1848) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\\\00u\00 \00d\00i\00g\00i\00t\00") - (data (i32.const 1904) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00s\00c\00a\00p\00e\00d\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00:\00 \00") - (data (i32.const 1984) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00:\00") - (data (i32.const 2008) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00:\00\'\00") - (data (i32.const 2048) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00o\00b\00j\00e\00c\00t\00") - (data (i32.const 2112) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00[\00") - (data (i32.const 2136) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00a\00r\00r\00a\00y\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 2200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00]\00") - (data (i32.const 2224) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00a\00r\00r\00a\00y\00") + (data (i32.const 640) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") + (data (i32.const 752) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 800) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 816) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 872) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 928) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00i\00n\00p\00u\00t\00 \00e\00n\00d\00") + (data (i32.const 984) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00d\00e\00c\00o\00d\00e\00r\00.\00t\00s\00") + (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00{\00") + (data (i32.const 1096) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 1144) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00}\00") + (data (i32.const 1168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") + (data (i32.const 1192) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00,\00\'\00") + (data (i32.const 1232) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\"\00") + (data (i32.const 1256) ":\00\00\00\01\00\00\00\01\00\00\00:\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00d\00o\00u\00b\00l\00e\00-\00q\00u\00o\00t\00e\00d\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 1336) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00") + (data (i32.const 1408) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 1456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\\\00") + (data (i32.const 1480) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00/\00") + (data (i32.const 1504) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 1528) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\08\00") + (data (i32.const 1552) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n\00") + (data (i32.const 1576) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\n\00") + (data (i32.const 1600) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00r\00") + (data (i32.const 1624) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0d\00") + (data (i32.const 1648) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00t\00") + (data (i32.const 1672) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\t\00") + (data (i32.const 1696) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00u\00") + (data (i32.const 1720) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\\\00u\00 \00d\00i\00g\00i\00t\00") + (data (i32.const 1776) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00s\00c\00a\00p\00e\00d\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00:\00 \00") + (data (i32.const 1856) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00:\00") + (data (i32.const 1880) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00:\00\'\00") + (data (i32.const 1920) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00o\00b\00j\00e\00c\00t\00") + (data (i32.const 1984) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 2032) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00[\00") + (data (i32.const 2056) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00]\00") + (data (i32.const 2080) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00a\00r\00r\00a\00y\00") + (data (i32.const 2144) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00") + (data (i32.const 2184) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\'\00") + (data (i32.const 2208) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") + (data (i32.const 2232) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00C\00a\00n\00n\00o\00t\00 \00p\00a\00r\00s\00e\00 \00J\00S\00O\00N\00") (data (i32.const 2288) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00a\00m\00e\00") - (data (i32.const 2312) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00s\00t\00r\00i\00n\00g\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 2376) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00 \00:\00 \00\"\00") - (data (i32.const 2400) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00") - (data (i32.const 2440) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\'\00") - (data (i32.const 2464) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00b\00o\00o\00l\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 2528) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00:\00 \00") - (data (i32.const 2552) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") - (data (i32.const 2576) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00i\00n\00t\00e\00g\00e\00r\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 2648) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 3064) "\10\00\00\00\01\00\00\00\0e\00\00\00\10\00\00\00h\n\00\00h\n\00\00\90\01\00\00d\00\00\00") - (data (i32.const 3096) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 3160) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00C\00a\00n\00n\00o\00t\00 \00p\00a\00r\00s\00e\00 \00J\00S\00O\00N\00") - (data (i32.const 3216) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00h\00e\00l\00l\00o\00 \00") - (data (i32.const 3248) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\"\00") - (data (i32.const 3272) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\\\00") - (data (i32.const 3296) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00b\00") - (data (i32.const 3320) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00n\00") - (data (i32.const 3344) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00r\00") - (data (i32.const 3368) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00t\00") - (data (i32.const 3392) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00U\00n\00s\00u\00p\00p\00o\00r\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00c\00o\00d\00e\00:\00 \00") - (data (i32.const 3480) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00e\00n\00c\00o\00d\00e\00r\00.\00t\00s\00") - (data (i32.const 3568) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\00y\00") - (data (i32.const 3592) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00v\00a\00l\00u\00e\00") - (data (i32.const 3624) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 3672) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\001\002\003\00") - (data (i32.const 3704) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00m\00a\00x\00_\00s\00t\00o\00r\00a\00g\00e\00") - (data (i32.const 3744) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00l\00o\00o\00o\00o\00g\001\00") - (data (i32.const 3776) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00l\00o\00o\00o\00o\00g\002\00") - (data (i32.const 3808) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00H\00i\00") - (data (i32.const 3832) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") - (data (i32.const 3856) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00t\00e\00m\00 \00m\00u\00s\00t\00 \00b\00e\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 3912) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00r\00o\00m\00") - (data (i32.const 3936) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00t\00o\00") - (data (i32.const 3960) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") - (data (i32.const 3984) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00r\00g\00s\00") - (data (i32.const 4008) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00h\00e\00l\00l\00o\00/\00m\00o\00d\00e\00l\00.\00t\00s\00") - (data (i32.const 4072) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00A\00r\00g\00s\00") - (data (i32.const 4112) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00r\00e\00c\00e\00i\00v\00e\00r\00") - (data (i32.const 4144) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00t\00h\00o\00d\00N\00a\00m\00e\00") - (data (i32.const 4184) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00") - (data (i32.const 4216) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00g\00a\00s\00") - (data (i32.const 4240) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00a\00l\00a\00n\00c\00e\00") - (data (i32.const 4272) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00B\00a\00l\00a\00n\00c\00e\00") - (data (i32.const 4320) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00G\00a\00s\00") - (data (i32.const 4360) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00r\00s\00") - (data (i32.const 4384) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00o\00k\00") - (data (i32.const 4408) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00n\00a\00m\00e\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00n\00u\00l\00l\00.\00") - (data (i32.const 4464) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00~\00l\00i\00b\00/\00n\00e\00a\00r\00E\00n\00t\00r\00y\00.\00t\00s\00") - (data (i32.const 4520) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00a\00s\00t\00R\00e\00s\00u\00l\00t\00") - (data (i32.const 4560) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00i\00t\00e\00m\00") - (data (i32.const 4584) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00l\00o\00g\001\00") - (data (i32.const 4608) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00l\00o\00g\002\00") - (data (i32.const 4632) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00l\00o\00g\00 \00b\00e\00f\00o\00r\00e\00 \00a\00s\00s\00e\00r\00t\00") - (data (i32.const 4688) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00f\00a\00i\00l\00") - (data (i32.const 4736) "D\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93\04\00\00\02\00\00\00\93\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\83 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2312) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") + (data (i32.const 2368) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") + (data (i32.const 2408) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00K\00e\00y\00:\00 \00") + (data (i32.const 2440) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00 \00n\00o\00t\00 \00f\00o\00u\00n\00d\00") + (data (i32.const 2480) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00~\00l\00i\00b\00/\00n\00e\00a\00r\00E\00n\00t\00r\00y\00.\00t\00s\00") + (data (i32.const 2536) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00V\00a\00l\00u\00e\00 \00w\00i\00t\00h\00 \00K\00e\00y\00:\00 \00") + (data (i32.const 2584) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00 \00o\00r\00 \00n\00u\00l\00l\00") + (data (i32.const 2648) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00h\00e\00l\00l\00o\00 \00") + (data (i32.const 2680) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\"\00") + (data (i32.const 2704) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\\\00") + (data (i32.const 2728) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00b\00") + (data (i32.const 2752) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00n\00") + (data (i32.const 2776) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00r\00") + (data (i32.const 2800) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00t\00") + (data (i32.const 2824) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00U\00n\00s\00u\00p\00p\00o\00r\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00c\00o\00d\00e\00:\00 \00") + (data (i32.const 2912) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 3328) "\10\00\00\00\01\00\00\00\18\00\00\00\10\00\00\00p\0b\00\00p\0b\00\00\90\01\00\00d\00\00\00") + (data (i32.const 3360) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00e\00n\00c\00o\00d\00e\00r\00.\00t\00s\00") + (data (i32.const 3448) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\00y\00") + (data (i32.const 3472) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00v\00a\00l\00u\00e\00") + (data (i32.const 3504) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00h\00e\00l\00l\00o\00/\00m\00a\00i\00n\00.\00t\00s\00") + (data (i32.const 3568) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\001\002\003\00") + (data (i32.const 3600) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00 \00w\00i\00t\00h\00 \00t\00y\00p\00e\00 \00") + (data (i32.const 3640) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\003\002\00") + (data (i32.const 3664) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00s\00 \00n\00o\00t\00 \00n\00u\00l\00l\00a\00b\00l\00e\00.\00") + (data (i32.const 3712) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00I\00n\00t\00e\00g\00e\00r\00") + (data (i32.const 3768) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00m\00a\00x\00_\00s\00t\00o\00r\00a\00g\00e\00") + (data (i32.const 3808) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\006\004\00") + (data (i32.const 3832) "~\00\00\00\01\00\00\00\01\00\00\00~\00\00\00 \00i\00s\00 \00a\00n\00 \006\004\00-\00b\00i\00t\00 \00i\00n\00t\00e\00g\00e\00r\00 \00a\00n\00d\00 \00i\00s\00 \00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00b\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00a\00s\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 3976) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00l\00o\00o\00o\00o\00g\001\00") + (data (i32.const 4008) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00l\00o\00o\00o\00o\00g\002\00") + (data (i32.const 4040) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00H\00i\00") + (data (i32.const 4064) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") + (data (i32.const 4088) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00t\00e\00m\00 \00m\00u\00s\00t\00 \00b\00e\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 4144) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00r\00o\00m\00") + (data (i32.const 4168) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00t\00o\00") + (data (i32.const 4192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") + (data (i32.const 4216) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00r\00g\00s\00") + (data (i32.const 4240) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00P\00r\00o\00m\00i\00s\00e\00A\00r\00g\00s\00") + (data (i32.const 4280) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00o\00b\00j\00e\00c\00t\00 \00o\00r\00 \00n\00u\00l\00l\00") + (data (i32.const 4352) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00r\00e\00c\00e\00i\00v\00e\00r\00") + (data (i32.const 4384) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00t\00h\00o\00d\00N\00a\00m\00e\00") + (data (i32.const 4424) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00g\00a\00s\00") + (data (i32.const 4448) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00a\00l\00a\00n\00c\00e\00") + (data (i32.const 4480) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00") + (data (i32.const 4512) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00A\00r\00g\00s\00") + (data (i32.const 4552) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00B\00a\00l\00a\00n\00c\00e\00") + (data (i32.const 4600) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00G\00a\00s\00") + (data (i32.const 4640) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00r\00s\00") + (data (i32.const 4664) "f\00\00\00\01\00\00\00\01\00\00\00f\00\00\00A\00r\00r\00a\00y\00<\00a\00s\00s\00e\00m\00b\00l\00y\00/\00h\00e\00l\00l\00o\00/\00m\00o\00d\00e\00l\00/\00M\00y\00C\00o\00n\00t\00r\00a\00c\00t\00P\00r\00o\00m\00i\00s\00e\00R\00e\00s\00u\00l\00t\00>\00") + (data (i32.const 4784) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00 \00i\00s\00 \00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00b\00e\00 \00a\00n\00 \00a\00r\00r\00a\00y\00") + (data (i32.const 4856) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00a\00r\00r\00a\00y\00 \00o\00r\00 \00n\00u\00l\00l\00.\00") + (data (i32.const 4928) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00M\00y\00C\00o\00n\00t\00r\00a\00c\00t\00P\00r\00o\00m\00i\00s\00e\00R\00e\00s\00u\00l\00t\00") + (data (i32.const 4992) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00o\00k\00") + (data (i32.const 5016) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l\00") + (data (i32.const 5040) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 5088) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00M\00y\00C\00a\00l\00l\00b\00a\00c\00k\00R\00e\00s\00u\00l\00t\00") + (data (i32.const 5136) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00a\00s\00t\00R\00e\00s\00u\00l\00t\00") + (data (i32.const 5176) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00i\00t\00e\00m\00") + (data (i32.const 5200) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00l\00o\00g\001\00") + (data (i32.const 5224) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00l\00o\00g\002\00") + (data (i32.const 5248) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00l\00o\00g\00 \00b\00e\00f\00o\00r\00e\00 \00a\00s\00s\00e\00r\00t\00") + (data (i32.const 5304) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00f\00a\00i\00l\00") + (data (i32.const 5352) "!\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\98 A\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\0b\00\00\00\10\00\00\00\0c\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\93\04\00\00\02\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\00\00\00\00\93\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\83 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -195,16 +206,12 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/number/U32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/nearEntry/JSON.handler (mut i32) (i32.const 0)) + (global $~lib/nearEntry/JSON.decoder (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.String (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.Boolean (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.U64 (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.I64 (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.U32 (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.I32 (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/rt/__rtti_base i32 (i32.const 4736)) - (global $~lib/heap/__heap_base i32 (i32.const 5284)) + (global $~lib/rt/__rtti_base i32 (i32.const 5352)) + (global $~lib/heap/__heap_base i32 (i32.const 5620)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -815,7 +822,7 @@ i32.eqz if i32.const 0 - i32.const 7 + i32.const 11 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -827,7 +834,7 @@ i32.eqz if i32.const 0 - i32.const 8 + i32.const 12 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -837,34 +844,68 @@ local.set $0 local.get $0 ) - (func $assembly/hello/main/__near_ArgsParser_hello#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.eqz - if + if (result i32) + local.get $0 + else i32.const 16 - i32.const 9 + i32.const 14 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain - local.set $0 end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/Handler#constructor (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 + if (result i32) + local.get $0 + else + i32.const 4 + i32.const 13 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor local.set $0 local.get $0 i32.const 0 i32.store local.get $0 + local.tee $1 i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 i32.const 0 - i32.store offset=12 + call $~lib/array/Array<~lib/nearEntry/Value>#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -874,7 +915,7 @@ i32.eqz if i32.const 8 - i32.const 10 + i32.const 15 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -906,7 +947,16 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:~lib/nearEntry (; 48 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/nearEntry/Handler#constructor + global.set $~lib/nearEntry/JSON.handler + i32.const 0 + global.get $~lib/nearEntry/JSON.handler + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor + global.set $~lib/nearEntry/JSON.decoder + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -914,13 +964,13 @@ i32.eqz if i32.const 12 - i32.const 11 + i32.const 16 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 end local.get $0 - i32.const 656 + i32.const 816 call $~lib/rt/stub/__retain i32.store local.get $0 @@ -934,22 +984,22 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Uint8Array#get:length (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#__get (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 672 - i32.const 728 + i32.const 832 + i32.const 888 i32.const 135 i32.const 44 call $~lib/builtins/abort @@ -961,7 +1011,7 @@ i32.add i32.load8_u ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.load offset=4 @@ -982,7 +1032,7 @@ i32.load offset=4 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 i32.const 9 i32.eq @@ -1008,7 +1058,7 @@ i32.eq end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1020,8 +1070,8 @@ i32.lt_s i32.eqz if - i32.const 784 - i32.const 840 + i32.const 944 + i32.const 1000 i32.const 112 i32.const 8 call $~lib/builtins/abort @@ -1042,188 +1092,254 @@ local.get $1 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 54 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) block $break|0 loop $continue|0 local.get $0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace i32.eqz br_if $break|0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar drop br $continue|0 end unreachable end ) - (func $~lib/util/string/compareImpl (; 55 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $5 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $4 - if (result i32) - local.get $6 - i32.load16_u - local.get $7 - i32.load16_u - i32.sub - local.tee $5 - i32.eqz - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end - unreachable - end - local.get $5 - local.set $8 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $8 - ) - (func $~lib/string/String.__eq (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end + (func $~lib/nearEntry/Value#constructor (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end + i32.eqz if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 7 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - call $~lib/string/String#get:length - i32.ne + i32.const 1073741808 + i32.gt_u if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 552 + i32.const 600 + i32.const 57 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 local.get $1 i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz + call $~lib/rt/stub/__alloc local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.get $2 + i32.const 0 local.get $1 - call $~lib/rt/stub/__release + call $~lib/memory/memory.fill local.get $2 + call $~lib/rt/stub/__retain ) - (func $~lib/string/String.__ne (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 59 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) local.get $0 - call $~lib/rt/stub/__retain - drop + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 local.get $1 - call $~lib/rt/stub/__retain - drop + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 local.get $0 + local.tee $2 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 ) - (func $~lib/util/memory/memcpy (; 58 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 9 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear + local.get $0 + ) + (func $~lib/array/Array<~lib/string/String>#constructor (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 10 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/Obj#constructor (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 8 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/nearEntry/Value#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + local.tee $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $1 + local.get $2 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $~lib/nearEntry/Value.Object (; 63 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + call $~lib/nearEntry/Obj#constructor + ) + (func $~lib/rt/__instanceof (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + local.set $2 + global.get $~lib/rt/__rtti_base + local.set $3 + local.get $2 + local.get $3 + i32.load + i32.le_u + if + loop $continue|0 + local.get $2 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const 8 + i32.mul + i32.add + i32.load offset=4 + local.tee $2 + br_if $continue|0 + end + end + i32.const 0 + ) + (func $~lib/util/memory/memcpy (; 65 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $break|0 + loop $continue|0 + local.get $2 + if (result i32) local.get $1 i32.const 3 i32.and @@ -2244,7 +2360,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 59 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2469,285 +2585,46 @@ end end ) - (func $~lib/string/String#concat (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__realloc (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - i32.const 216 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $1 - end local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $4 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $5 - local.get $4 - local.get $5 - i32.add - local.set $6 - local.get $6 i32.const 0 - i32.eq + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz if - i32.const 656 - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 0 + i32.const 1112 + i32.const 43 + i32.const 2 + call $~lib/builtins/abort + unreachable end - local.get $6 - i32.const 1 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $7 - local.get $7 local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $7 - local.get $4 - i32.add - local.get $1 - local.get $5 - call $~lib/memory/memory.copy - local.get $7 + i32.const 16 + i32.sub local.set $2 - local.get $1 - call $~lib/rt/stub/__release local.get $2 - ) - (func $~lib/string/String.__concat (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.const 216 - local.get $0 - i32.const 0 - i32.ne - select - local.get $1 - call $~lib/string/String#concat - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + i32.load + local.set $3 local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.eqz - if - i32.const 1016 - local.get $1 - call $~lib/string/String.__concat - local.tee $2 - i32.const 840 - i32.const 58 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_hello#pushObject (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 29 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 33 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 12 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - if - i32.const 1272 - i32.const 1384 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 65 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~lib/rt/stub/__realloc (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 43 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.set $2 - local.get $2 - i32.load - local.set $3 - local.get $2 - i32.load offset=4 - i32.const -1 - i32.eq + i32.load offset=4 + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 1112 i32.const 46 i32.const 13 call $~lib/builtins/abort @@ -2847,1617 +2724,1695 @@ i32.store offset=12 local.get $0 ) - (func $~lib/string/String.UTF8.decodeUnsafe (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/ensureSize (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 + i32.load offset=8 local.set $3 - local.get $0 local.get $1 - i32.add - local.set $4 - local.get $4 local.get $3 - i32.ge_u - i32.eqz + local.get $2 + i32.shr_u + i32.gt_u if + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 552 + i32.const 768 + i32.const 14 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $4 + local.get $1 + local.get $2 + i32.shl + local.set $5 + local.get $4 + local.get $5 + call $~lib/rt/stub/__realloc + local.set $6 + local.get $6 + local.get $3 + i32.add i32.const 0 - i32.const 1504 - i32.const 585 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $3 + i32.sub + call $~lib/memory/memory.fill + local.get $6 + local.get $4 + i32.ne + if + local.get $0 + local.get $6 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $6 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.store offset=8 end + ) + (func $~lib/array/Array<~lib/nearEntry/Value>#push (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $5 - local.get $5 - local.set $6 - block $break|0 - loop $continue|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $3 - local.tee $7 - i32.const 1 - i32.add - local.set $3 - local.get $7 - i32.load8_u - local.set $7 - local.get $7 - i32.const 128 - i32.lt_u - if - local.get $2 - if (result i32) - local.get $7 - i32.eqz - else - i32.const 0 - end - if - br $break|0 - end - local.get $6 - local.get $7 - i32.store16 - local.get $6 - i32.const 2 - i32.add - local.set $6 - else - local.get $7 - i32.const 191 - i32.gt_u - if (result i32) - local.get $7 - i32.const 224 - i32.lt_u - else - i32.const 0 - end - if - local.get $4 - local.get $3 - i32.sub - i32.const 1 - i32.lt_u - if - br $break|0 - end - local.get $6 - local.get $7 - i32.const 31 - i32.and - i32.const 6 - i32.shl - local.get $3 - local.tee $8 - i32.const 1 - i32.add - local.set $3 - local.get $8 - i32.load8_u - i32.const 63 - i32.and - i32.or - i32.store16 - local.get $6 - i32.const 2 - i32.add - local.set $6 - else - local.get $7 - i32.const 239 - i32.gt_u - if (result i32) - local.get $7 - i32.const 365 - i32.lt_u - else - i32.const 0 - end - if - local.get $4 - local.get $3 - i32.sub - i32.const 3 - i32.lt_u - if - br $break|0 - end - local.get $7 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $3 - i32.load8_u - i32.const 63 - i32.and - i32.const 12 - i32.shl - i32.or - local.get $3 - i32.load8_u offset=1 - i32.const 63 - i32.and - i32.const 6 - i32.shl - i32.or - local.get $3 - i32.load8_u offset=2 - i32.const 63 - i32.and - i32.or - i32.const 65536 - i32.sub - local.set $7 - local.get $3 - i32.const 3 - i32.add - local.set $3 - local.get $6 - i32.const 55296 - local.get $7 - i32.const 10 - i32.shr_u - i32.add - i32.store16 - local.get $6 - i32.const 56320 - local.get $7 - i32.const 1023 - i32.and - i32.add - i32.store16 offset=2 - local.get $6 - i32.const 4 - i32.add - local.set $6 - else - local.get $4 - local.get $3 - i32.sub - i32.const 2 - i32.lt_u - if - br $break|0 - end - local.get $6 - local.get $7 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $3 - i32.load8_u - i32.const 63 - i32.and - i32.const 6 - i32.shl - i32.or - local.get $3 - i32.load8_u offset=1 - i32.const 63 - i32.and - i32.or - i32.store16 - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $6 - i32.const 2 - i32.add - local.set $6 - end - end - end - br $continue|0 - end - unreachable - end - local.get $5 - local.get $6 - local.get $5 - i32.sub - call $~lib/rt/stub/__realloc + i32.add + local.get $1 call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain - drop + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/assemblyscript-json/util/index/Buffer.getPtr + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl i32.add - local.get $2 + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.sub - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $3 local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 69 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.load offset=12 + i32.ge_u + if + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $0 i32.load offset=8 - local.get $1 - local.get $2 - i32.const 1 - i32.sub - call $~lib/assemblyscript-json/util/index/Buffer.readString - ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 70 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=4 - local.set $2 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable end local.get $0 local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/DecoderState#readString + call $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#get:peek (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=12 + i32.load + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/nearEntry/Value>#__get ) - (func $~lib/array/ensureSize (; 72 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/hash/hashStr (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u + call $~lib/rt/stub/__retain + drop + i32.const -2128831035 + local.set $1 + local.get $0 + i32.const 0 + i32.ne if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 552 - i32.const 1384 - i32.const 14 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/stub/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - call $~lib/rt/stub/__retain - i32.store + block $break|0 + i32.const 0 + local.set $2 local.get $0 - local.get $6 - i32.store offset=4 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + loop $loop|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $1 + local.get $0 + local.get $2 + i32.add + i32.load8_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $loop|0 + end + unreachable end - local.get $0 - local.get $5 - i32.store offset=8 end - ) - (func $~lib/array/Array<~lib/string/String>#push (; 73 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $1 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/util/string/compareImpl (; 75 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 call $~lib/rt/stub/__retain drop - local.get $0 - i32.load offset=12 - local.set $2 local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $5 + local.get $0 + local.get $1 i32.const 1 + i32.shl i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 + local.set $6 local.get $2 - i32.const 2 + local.get $3 + i32.const 1 i32.shl i32.add - local.get $1 - call $~lib/rt/stub/__retain - i32.store + local.set $7 + block $break|0 + loop $continue|0 + local.get $4 + if (result i32) + local.get $6 + i32.load16_u + local.get $7 + i32.load16_u + i32.sub + local.tee $5 + i32.eqz + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 + end + unreachable + end + local.get $5 + local.set $8 local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - local.set $4 - local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 74 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 76 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - local.get $2 - i32.const 0 - i32.lt_s + local.get $1 + i32.eq if - i32.const 656 - call $~lib/rt/stub/__retain - local.set $3 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $2 return end local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.eqz + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end if - local.get $4 - i32.load - call $~lib/rt/stub/__retain - local.set $3 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $2 return end + local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $3 local.get $1 call $~lib/string/String#get:length - local.set $5 - i32.const 0 - local.set $6 - i32.const 0 - local.set $7 - block $break|0 + i32.ne + if i32.const 0 - local.set $3 + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release local.get $2 - i32.const 1 - i32.add - local.set $8 - loop $loop|0 - local.get $3 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $7 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/stub/__retain - drop - local.get $10 - call $~lib/rt/stub/__release - end - local.get $9 - local.set $7 - local.get $7 - i32.const 0 - i32.ne - if - local.get $6 - local.get $7 - call $~lib/string/String#get:length - i32.add - local.set $6 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|0 - end - unreachable + return end + local.get $0 i32.const 0 - local.set $11 - local.get $6 - local.get $5 + local.get $1 + i32.const 0 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 i32.mul i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $12 - block $break|1 - i32.const 0 - local.set $8 - loop $loop|1 - local.get $8 - local.get $2 - i32.lt_s + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 i32.eqz - br_if $break|1 - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $10 - local.get $7 - local.tee $3 - i32.ne - if - local.get $10 - call $~lib/rt/stub/__retain - drop + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) local.get $3 - call $~lib/rt/stub/__release - end - local.get $10 - local.set $7 - local.get $7 - i32.const 0 - i32.ne - if - local.get $7 - call $~lib/string/String#get:length - local.set $10 - local.get $12 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $10 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $11 - local.get $10 - i32.add - local.set $11 + i32.load + local.get $1 + call $~lib/string/String.__eq + else + i32.const 0 end - local.get $5 if - local.get $12 - local.get $11 - i32.const 1 - i32.shl - i32.add + local.get $3 + local.set $4 local.get $1 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $11 - local.get $5 - i32.add - local.set $11 + call $~lib/rt/stub/__release + local.get $4 + return end - local.get $8 + local.get $3 + i32.load offset=8 i32.const 1 - i32.add - local.set $8 - br $loop|1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end unreachable end - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $7 - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/stub/__retain - drop - local.get $8 - call $~lib/rt/stub/__release - end - local.get $9 - local.set $7 - local.get $7 i32.const 0 - i32.ne - if - local.get $12 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $7 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $12 - local.set $9 + local.set $4 local.get $1 call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $9 + local.get $4 ) - (func $~lib/array/Array<~lib/string/String>#join (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 call $~lib/rt/stub/__retain drop local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#join_str + block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $2 + call $~lib/util/hash/hashStr + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 + end + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find + i32.const 0 + i32.ne local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 - return ) - (func $~lib/rt/__allocArray (; 76 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 local.get $2 - call $~lib/rt/stub/__alloc - local.set $4 + i32.const 1 + i32.add + local.set $3 local.get $0 - local.get $1 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 i32.shl - local.set $5 - local.get $5 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $6 - local.get $4 - local.get $6 + i32.add + local.get $1 call $~lib/rt/stub/__retain i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 local.get $0 + local.get $3 i32.store offset=12 local.get $3 - if - local.get $6 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy - end + local.set $4 + local.get $1 + call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 80 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub + i32.const 1 + i32.add local.set $2 + i32.const 0 local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) + local.get $9 + i32.load + call $~lib/rt/stub/__retain + local.set $11 + local.get $11 + call $~lib/util/hash/hashStr + local.set $12 + local.get $11 + call $~lib/rt/stub/__release + local.get $12 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 + end + local.get $6 + i32.const 12 i32.add - local.set $2 + local.set $6 + br $continue|0 end + unreachable end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 + local.get $0 + local.tee $9 local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if + local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $9 + call $~lib/rt/stub/__release + end + local.get $10 i32.store - local.get $4 - local.get $2 + local.get $0 + local.get $1 i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz + local.get $0 + local.tee $10 + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $11 + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release end - local.get $2 - local.set $3 + local.get $11 + i32.store offset=8 + local.get $0 local.get $4 - call $~lib/rt/stub/__release + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release ) - (func $~lib/string/String.fromCodePoint (; 78 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.const 1114111 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable + (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + call $~lib/util/hash/hashStr + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 end + local.set $5 local.get $0 - i32.const 65535 - i32.gt_s - local.set $1 - i32.const 2 - local.get $1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 local.get $1 - i32.eqz + local.get $5 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find + local.set $6 + local.get $6 if + local.get $6 + i32.load offset=4 + local.set $3 local.get $2 - local.get $0 - i32.store16 + local.get $3 + i32.ne + if + local.get $6 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__release + end else local.get $0 - i32.const 65536 - i32.sub - local.set $0 - local.get $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.add - local.set $3 + i32.load offset=16 local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.add - local.set $4 - local.get $2 - local.get $3 - i32.const 16 - i32.shl - local.get $4 - i32.or + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $6 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $4 + local.get $6 + local.get $4 + i32.load + i32.store offset=8 + local.get $4 + local.get $6 i32.store + local.get $3 + call $~lib/rt/stub/__release end + local.get $1 + call $~lib/rt/stub/__release local.get $2 - call $~lib/rt/stub/__retain + call $~lib/rt/stub/__release ) - (func $~lib/string/String.fromCharCode (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/nearEntry/Obj#set (; 82 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 - i32.const 0 - i32.gt_s - local.set $2 - i32.const 2 + call $~lib/rt/stub/__retain + drop local.get $2 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 + call $~lib/rt/stub/__retain + drop local.get $0 - i32.store16 - local.get $2 + i32.load + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has + i32.eqz if - local.get $3 + local.get $0 + i32.load offset=4 local.get $1 - i32.store16 offset=2 + call $~lib/array/Array<~lib/string/String>#push + drop end - local.get $3 - call $~lib/rt/stub/__retain + local.get $0 + i32.load + local.get $1 + local.get $2 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release ) - (func $~lib/string/String.fromCharCode|trampoline (; 80 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const -1 - local.set $1 - end + (func $~lib/nearEntry/Arr#push (; 83 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 + i32.load local.get $1 - call $~lib/string/String.fromCharCode + call $~lib/array/Array<~lib/nearEntry/Value>#push + drop + local.get $1 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/nearEntry/Handler#addValue (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop local.get $1 - i32.const 1600 + call $~lib/string/String#get:length i32.const 0 - call $~lib/string/String#charCodeAt i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return + if (result i32) + local.get $2 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end + else + i32.const 0 end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq if - i32.const 1624 - call $~lib/rt/stub/__retain + local.get $0 + i32.load + local.get $2 + call $~lib/array/Array<~lib/nearEntry/Value>#push + drop + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release return end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return + local.get $0 + call $~lib/nearEntry/Handler#get:peek + local.tee $3 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq if - i32.const 1720 - call $~lib/rt/stub/__retain - return + local.get $0 + call $~lib/nearEntry/Handler#get:peek + local.tee $4 + local.get $1 + local.get $2 + call $~lib/nearEntry/Obj#set + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + call $~lib/nearEntry/Handler#get:peek + local.tee $4 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 17 + call $~lib/rt/__instanceof + end + if + local.get $0 + call $~lib/nearEntry/Handler#get:peek + local.tee $5 + local.get $2 + call $~lib/nearEntry/Arr#push + local.get $5 + call $~lib/rt/stub/__release + end + local.get $4 + call $~lib/rt/stub/__release end + local.get $3 + call $~lib/rt/stub/__release local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/Handler#pushObject (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__retain + drop + call $~lib/nearEntry/Value.Object + local.set $2 + local.get $0 local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 + local.get $2 + call $~lib/nearEntry/Handler#addValue + local.get $0 + i32.load + local.get $2 + call $~lib/array/Array<~lib/nearEntry/Value>#push + drop + i32.const 1 + local.set $3 + local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 86 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $~lib/string/String.UTF8.decodeUnsafe (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + local.set $3 + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $4 + local.get $3 + i32.ge_u i32.eqz if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 + i32.const 0 + i32.const 1424 + i32.const 585 + i32.const 6 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $5 + local.get $5 + local.set $6 + block $break|0 + loop $continue|0 + local.get $3 local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else + i32.lt_u + i32.eqz + br_if $break|0 local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + local.tee $7 + i32.const 1 + i32.add + local.set $3 + local.get $7 + i32.load8_u + local.set $7 + local.get $7 + i32.const 128 + i32.lt_u if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s + local.get $2 + if (result i32) + local.get $7 + i32.eqz + else + i32.const 0 + end if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 + br $break|0 + end + local.get $6 + local.get $7 + i32.store16 + local.get $6 + i32.const 2 + i32.add + local.set $6 + else + local.get $7 + i32.const 191 + i32.gt_u + if (result i32) + local.get $7 + i32.const 224 + i32.lt_u + else i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 83 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable + if + local.get $4 + local.get $3 + i32.sub + i32.const 1 + i32.lt_u + if + br $break|0 + end + local.get $6 + local.get $7 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $3 + local.tee $8 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.load8_u + i32.const 63 + i32.and + i32.or + i32.store16 + local.get $6 + i32.const 2 + i32.add + local.set $6 + else + local.get $7 + i32.const 239 + i32.gt_u + if (result i32) + local.get $7 + i32.const 365 + i32.lt_u + else + i32.const 0 + end + if + local.get $4 + local.get $3 + i32.sub + i32.const 3 + i32.lt_u + if + br $break|0 + end + local.get $7 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.const 12 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=2 + i32.const 63 + i32.and + i32.or + i32.const 65536 + i32.sub + local.set $7 + local.get $3 + i32.const 3 + i32.add + local.set $3 + local.get $6 + i32.const 55296 + local.get $7 + i32.const 10 + i32.shr_u + i32.add + i32.store16 + local.get $6 + i32.const 56320 + local.get $7 + i32.const 1023 + i32.and + i32.add + i32.store16 offset=2 + local.get $6 + i32.const 4 + i32.add + local.set $6 + else + local.get $4 + local.get $3 + i32.sub + i32.const 2 + i32.lt_u + if + br $break|0 + end + local.get $6 + local.get $7 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.or + i32.store16 + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $6 + i32.const 2 + i32.add + local.set $6 + end + end + end + br $continue|0 + end + unreachable end + local.get $5 + local.get $6 + local.get $5 + i32.sub + call $~lib/rt/stub/__realloc + call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONHandler#popObject (; 84 ;) (type $FUNCSIG$vi) (param $0 i32) - nop + (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/assemblyscript-json/util/index/Buffer.getPtr + local.get $1 + i32.add + local.get $2 + local.get $1 + i32.sub + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 85 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load offset=8 + local.get $1 + local.get $2 + i32.const 1 + i32.sub + call $~lib/assemblyscript-json/util/index/Buffer.readString + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + i32.load offset=4 + local.set $2 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/DecoderState#readString + ) + (func $~lib/array/Array<~lib/string/String>#get:length (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#join_str (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 + local.get $2 i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i32.lt_s if - i32.const 0 + i32.const 816 + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 return end local.get $0 i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 + local.set $4 local.get $2 - i32.load - local.tee $2 - i32.ne + i32.eqz if - local.get $3 + local.get $4 + i32.load call $~lib/rt/stub/__retain - drop - local.get $2 + local.set $3 + local.get $1 call $~lib/rt/stub/__release + local.get $3 + return end - local.get $3 - i32.store - local.get $0 - i32.load local.get $1 - call $assembly/hello/main/__near_ArgsParser_hello#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + call $~lib/string/String#get:length + local.set $5 + i32.const 0 + local.set $6 + i32.const 0 + local.set $7 + block $break|0 + i32.const 0 + local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $8 + loop $loop|0 + local.get $3 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $10 + i32.ne + if + local.get $9 + call $~lib/rt/stub/__retain drop - br $continue|0 + local.get $10 + call $~lib/rt/stub/__release end - unreachable + local.get $9 + local.set $7 + local.get $7 + i32.const 0 + i32.ne + if + local.get $6 + local.get $7 + call $~lib/string/String#get:length + i32.add + local.set $6 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 + unreachable + end + i32.const 0 + local.set $11 + local.get $6 + local.get $5 + local.get $2 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $12 + block $break|1 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.set $8 + loop $loop|1 + local.get $8 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $4 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $7 + local.tee $3 + i32.ne + if + local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $10 + local.set $7 + local.get $7 + i32.const 0 + i32.ne + if + local.get $7 + call $~lib/string/String#get:length + local.set $10 + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $10 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $11 + local.get $10 + i32.add + local.set $11 + end + local.get $5 + if + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $11 + local.get $5 + i32.add + local.set $11 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $loop|1 end + unreachable end - local.get $0 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray (; 86 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + local.tee $9 + local.get $7 + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $9 + local.set $7 + local.get $7 i32.const 0 - i32.eqz + i32.ne if - i32.const 2152 - local.get $1 - call $~lib/string/String.__concat - local.tee $2 - i32.const 840 - i32.const 53 - i32.const 8 - call $~lib/builtins/abort - unreachable + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + call $~lib/memory/memory.copy end - i32.const 1 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release + local.get $12 + local.set $9 local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $7 + call $~lib/rt/stub/__release + local.get $9 ) - (func $assembly/hello/main/__near_ArgsParser_hello#pushArray (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain drop local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + call $~lib/array/Array<~lib/string/String>#join_str local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 + return ) - (func $~lib/assemblyscript-json/decoder/JSONHandler#popArray (; 88 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 89 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/__allocArray (; 94 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + i32.const 16 + local.get $2 + call $~lib/rt/stub/__alloc + local.set $4 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 + local.get $1 + i32.shl + local.set $5 + local.get $5 i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load + call $~lib/rt/stub/__alloc + local.set $6 + local.get $4 + local.get $6 call $~lib/rt/stub/__retain - local.set $1 + i32.store + local.get $4 + local.get $6 + i32.store offset=4 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne + i32.store offset=12 + local.get $3 if + local.get $6 local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + local.get $5 + call $~lib/memory/memory.copy end - local.get $3 - i32.store + local.get $4 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 - i32.load + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + local.set $1 local.get $1 - call $assembly/hello/main/__near_ArgsParser_hello#pushArray + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 + local.get $2 + i32.const 9 + i32.gt_s if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 + local.get $2 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 end end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 + i32.const 2 + i32.const 2 + i32.const 18 + i32.const 0 + call $~lib/rt/__allocArray local.set $3 - local.get $1 - call $~lib/rt/stub/__release local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString (; 90 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + i32.load offset=4 + local.set $4 + local.get $4 local.get $1 - call $~lib/rt/stub/__retain - drop + i32.store + local.get $4 local.get $2 + i32.store offset=4 + local.get $3 call $~lib/rt/stub/__retain - drop + local.set $4 + local.get $2 i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 16 + i32.lt_s + else + i32.const 0 + end i32.eqz if - i32.const 2328 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2392 - call $~lib/string/String.__concat - local.tee $4 - local.get $2 - call $~lib/string/String.__concat - local.tee $5 - i32.const 1168 - call $~lib/string/String.__concat - local.tee $6 - i32.const 840 - i32.const 36 - i32.const 7 + i32.const 1736 + i32.const 1000 + i32.const 269 + i32.const 4 call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release local.get $2 + local.set $3 + local.get $4 call $~lib/rt/stub/__release + local.get $3 ) - (func $assembly/hello/main/__near_ArgsParser_hello#setString (; 91 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/string/String.fromCodePoint (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) + local.get $0 + i32.const 1114111 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 65535 + i32.gt_s + local.set $1 + i32.const 2 local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 local.get $1 - i32.const 2304 - call $~lib/string/String.__eq + i32.eqz if + local.get $2 local.get $0 - local.tee $3 + i32.store16 + else + local.get $0 + i32.const 65536 + i32.sub + local.set $0 + local.get $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.add + local.set $3 + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.add + local.set $4 local.get $2 - local.tee $4 local.get $3 - i32.load offset=12 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end + i32.const 16 + i32.shl local.get $4 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return + i32.or + i32.store end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release local.get $2 - call $~lib/rt/stub/__release + call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/string/String.fromCharCode (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 + (local $3 i32) + local.get $1 i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $assembly/hello/main/__near_ArgsParser_hello#setString - i32.const 1 + i32.gt_s local.set $2 - local.get $1 - call $~lib/rt/stub/__release + i32.const 2 local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 93 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $3 + local.get $3 + local.get $0 + i32.store16 + local.get $2 + if + local.get $3 + local.get $1 + i32.store16 offset=2 + end + local.get $3 call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable + ) + (func $~lib/string/String.fromCharCode|trampoline (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 + unreachable end - unreachable + i32.const -1 + local.set $1 end + local.get $0 local.get $1 - call $~lib/rt/stub/__release + call $~lib/string/String.fromCharCode ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean (; 94 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/string/String#concat (; 99 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4466,2185 +4421,2582 @@ local.get $1 call $~lib/rt/stub/__retain drop + local.get $1 i32.const 0 - i32.eqz + i32.eq if - i32.const 2480 + i32.const 216 + local.tee $2 local.get $1 - call $~lib/string/String.__concat local.tee $3 - i32.const 2544 - call $~lib/string/String.__concat - local.tee $4 - local.get $2 - if (result i32) - i32.const 160 - call $~lib/rt/stub/__retain - local.tee $5 - else - i32.const 184 + i32.ne + if + local.get $2 call $~lib/rt/stub/__retain - local.tee $6 + drop + local.get $3 + call $~lib/rt/stub/__release end - call $~lib/string/String.__concat - local.tee $7 - i32.const 840 - i32.const 40 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $2 + local.set $1 end - local.get $3 - call $~lib/rt/stub/__release + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $4 + local.get $1 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $5 local.get $4 - call $~lib/rt/stub/__release + local.get $5 + i32.add + local.set $6 + local.get $6 + i32.const 0 + i32.eq + if + i32.const 816 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $6 + i32.const 1 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $7 + local.get $7 + local.get $0 + local.get $4 + call $~lib/memory/memory.copy + local.get $7 + local.get $4 + i32.add + local.get $1 + local.get $5 + call $~lib/memory/memory.copy local.get $7 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.__concat (; 100 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 216 + local.get $0 + i32.const 0 + i32.ne + select + local.get $1 + call $~lib/string/String#concat + local.set $2 + local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + local.set $1 + local.get $1 + i32.const 1248 i32.const 0 call $~lib/string/String#charCodeAt i32.eq if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 + i32.const 1248 + call $~lib/rt/stub/__retain return end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 + local.get $1 + i32.const 1472 i32.const 0 call $~lib/string/String#charCodeAt i32.eq if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 + i32.const 1472 + call $~lib/rt/stub/__retain return end + local.get $1 + i32.const 1496 i32.const 0 - ) - (func $~lib/util/number/decimalCount32 (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 100000 - i32.lt_u + call $~lib/string/String#charCodeAt + i32.eq if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - i32.const 2 - local.get $0 - i32.const 10 - i32.lt_u - select - return - else - i32.const 4 - i32.const 5 - local.get $0 - i32.const 10000 - i32.lt_u - select - local.set $1 - i32.const 3 - local.get $1 - local.get $0 - i32.const 1000 - i32.lt_u - select - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - i32.const 7 - local.get $0 - i32.const 1000000 - i32.lt_u - select - return - else - i32.const 9 - i32.const 10 - local.get $0 - i32.const 1000000000 - i32.lt_u - select - local.set $1 - i32.const 8 - local.get $1 - local.get $0 - i32.const 100000000 - i32.lt_u - select - return - end - unreachable + i32.const 1496 + call $~lib/rt/stub/__retain + return end - unreachable - ) - (func $~lib/util/number/utoa32_lut (; 97 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - i32.const 3080 - i32.load offset=4 - local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end - unreachable + local.get $1 + i32.const 1520 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1544 + call $~lib/rt/stub/__retain + return end local.get $1 - i32.const 100 - i32.ge_u + i32.const 1568 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq if - local.get $1 - i32.const 100 - i32.div_u - local.set $7 - local.get $1 - i32.const 100 - i32.rem_u - local.set $6 - local.get $7 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store + i32.const 1592 + call $~lib/rt/stub/__retain + return end local.get $1 - i32.const 10 - i32.ge_u + i32.const 1616 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq if - local.get $2 - i32.const 2 - i32.sub + i32.const 1640 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1664 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + i32.const 1688 + call $~lib/rt/stub/__retain + return + end + local.get $1 + i32.const 1712 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit local.set $2 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit + local.set $3 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit + local.set $4 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit + local.set $5 local.get $2 - i32.const 1 - i32.shl + i32.const 4096 + i32.mul + local.get $3 + i32.const 256 + i32.mul + i32.add + local.get $4 + i32.const 16 + i32.mul i32.add local.get $5 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 i32.add - local.set $5 - local.get $0 - local.get $2 + local.set $6 + local.get $6 + call $~lib/string/String.fromCodePoint + return + end + i32.const 0 + i32.eqz + if + i32.const 1792 i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store16 + global.set $~lib/argc + local.get $1 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $6 + call $~lib/string/String.__concat + local.tee $5 + i32.const 1000 + i32.const 255 + i32.const 4 + call $~lib/builtins/abort + unreachable end + i32.const 816 + call $~lib/rt/stub/__retain + local.set $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/util/number/decimalCount64 (; 98 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i64.const 1000000000000000 - i64.lt_u + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 1248 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz if + i32.const 1272 + i32.const 1000 + i32.const 197 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + loop $loop|0 local.get $0 - i64.const 1000000000000 - i64.lt_u - if - i32.const 11 - i32.const 12 - local.get $0 - i64.const 100000000000 - i64.lt_u - select - local.set $1 - i32.const 10 - local.get $1 - local.get $0 - i64.const 10000000000 - i64.lt_u - select - return - else - i32.const 14 - i32.const 15 - local.get $0 - i64.const 100000000000000 - i64.lt_u - select - local.set $1 - i32.const 13 - local.get $1 - local.get $0 - i64.const 10000000000000 - i64.lt_u - select - return + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + local.set $3 + local.get $3 + i32.const 32 + i32.ge_s + i32.eqz + if + i32.const 1352 + i32.const 1000 + i32.const 203 + i32.const 6 + call $~lib/builtins/abort + unreachable end - unreachable - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u + local.get $3 + i32.const 1248 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq if - i32.const 16 - i32.const 17 - local.get $0 - i64.const 10000000000000000 - i64.lt_u - select - return - else - i32.const 19 - i32.const 20 - local.get $0 - i64.const -8446744073709551616 - i64.lt_u - select - local.set $1 - i32.const 18 - local.get $1 + i32.const 1 + global.set $~lib/argc local.get $0 - i64.const 1000000000000000000 - i64.lt_u - select - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa64_lut (; 99 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - i32.const 3080 - i32.load offset=4 - local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - i32.eqz - br_if $break|0 + i32.load offset=4 local.get $1 - i64.const 100000000 - i64.div_u + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline local.set $4 - local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + if + local.get $4 + local.set $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $2 local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $2 + i32.const 816 + call $~lib/array/Array<~lib/string/String>#join local.set $5 local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - local.get $3 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 + call $~lib/rt/stub/__release local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - local.get $3 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 + call $~lib/rt/stub/__release + local.get $5 + return + else local.get $3 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 + i32.const 1472 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.add + i32.gt_s + if + local.get $2 + i32.const 1 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar + local.tee $4 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $0 + i32.load offset=4 + i32.load offset=4 + local.set $1 + local.get $4 + call $~lib/rt/stub/__release + end end - unreachable + br $loop|0 end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_lut + unreachable ) - (func $~lib/util/number/itoa64 (; 100 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 103 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) local.get $0 - i64.eqz + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 1872 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz if - i32.const 240 - call $~lib/rt/stub/__retain - return + i32.const 1896 + i32.const 1000 + i32.const 159 + i32.const 4 + call $~lib/builtins/abort + unreachable end + ) + (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - i64.const 0 - i64.lt_s + i32.load offset=12 local.set $1 local.get $1 + i32.const 1 + i32.lt_s if - i64.const 0 - local.get $0 - i64.sub - local.set $0 + i32.const 2000 + i32.const 768 + i32.const 287 + i32.const 20 + call $~lib/builtins/abort + unreachable end local.get $0 - i64.const 4294967295 - i64.le_u + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $2 + ) + (func $~lib/nearEntry/Handler#popObject (; 105 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 1 + i32.gt_s if local.get $0 - i32.wrap_i64 - local.set $3 - local.get $3 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.set $7 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#pop + call $~lib/rt/stub/__release + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 1088 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 816 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if local.get $3 - local.set $6 - local.get $4 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - else - local.get $0 - call $~lib/util/number/decimalCount64 - local.get $1 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 + call $~lib/rt/stub/__retain + drop local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_lut + call $~lib/rt/stub/__release end + local.get $3 + i32.store + local.get $0 + i32.load local.get $1 + call $~lib/nearEntry/Handler#pushObject if - local.get $2 - i32.const 45 - i32.store16 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 1160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 1184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1208 + i32.const 1000 + i32.const 142 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue + drop + br $continue|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 1160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1936 + i32.const 1000 + i32.const 149 + i32.const 6 + call $~lib/builtins/abort + unreachable + end end - local.get $2 - call $~lib/rt/stub/__retain - ) - (func $~lib/util/number/itoa (; 101 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 - call $~lib/util/number/itoa64 - return + i32.load + call $~lib/nearEntry/Handler#popObject + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 ) - (func $~lib/number/I64#toString (; 102 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/nearEntry/Arr#constructor (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 - call $~lib/util/number/itoa + if (result i32) + local.get $0 + else + i32.const 4 + i32.const 17 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/nearEntry/Value#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 local.tee $1 - call $~lib/rt/stub/__retain + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/nearEntry/Value>#constructor local.set $2 local.get $1 + i32.load call $~lib/rt/stub/__release local.get $2 + i32.store + local.get $0 ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger (; 103 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/nearEntry/Value.Array (; 108 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + call $~lib/nearEntry/Arr#constructor + ) + (func $~lib/nearEntry/Handler#pushArray (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - i32.eqz - if - i32.const 2592 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2544 - call $~lib/string/String.__concat - local.tee $4 - local.get $2 - call $~lib/number/I64#toString - local.tee $5 - call $~lib/string/String.__concat - local.tee $6 - i32.const 840 - i32.const 49 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 + call $~lib/nearEntry/Value.Array + local.set $2 + local.get $0 + local.get $1 + local.get $2 + call $~lib/nearEntry/Handler#addValue + local.get $0 + i32.load + local.get $2 + call $~lib/array/Array<~lib/nearEntry/Value>#push + drop + i32.const 1 + local.set $3 + local.get $2 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) + (func $~lib/nearEntry/Handler#popArray (; 110 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 1 + i32.gt_s + if + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#pop + call $~lib/rt/stub/__release + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 2048 i32.const 0 call $~lib/string/String#charCodeAt - i32.eq + i32.ne if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + i32.const 0 + return + end + local.get $0 + i32.load offset=4 + i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 816 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain drop + local.get $2 + call $~lib/rt/stub/__release end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) + local.get $3 + i32.store + local.get $0 + i32.load + local.get $1 + call $~lib/nearEntry/Handler#pushArray + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + drop + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace + i32.const 1 + local.set $3 + block $break|0 + loop $continue|0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 2072 i32.const 0 + call $~lib/string/String#charCodeAt + i32.ne + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 1184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 1208 + i32.const 1000 + i32.const 176 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $3 + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue + drop + br $continue|0 end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 2072 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + i32.eqz + if + i32.const 2096 + i32.const 1000 + i32.const 182 + i32.const 6 + call $~lib/builtins/abort + unreachable end - unreachable end + local.get $0 + i32.load + call $~lib/nearEntry/Handler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load + ) + (func $~lib/nearEntry/Str#constructor (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return + else + i32.const 4 + i32.const 19 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull (; 105 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) + call $~lib/nearEntry/Value#constructor + local.set $0 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/Value.String (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 call $~lib/rt/stub/__retain drop i32.const 0 - i32.eqz - if - i32.const 3112 - local.get $1 - call $~lib/string/String.__concat - local.tee $2 - i32.const 840 - i32.const 44 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.get $0 + call $~lib/nearEntry/Str#constructor + local.set $1 + local.get $0 call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__near_ArgsParser_hello#setNull (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/nearEntry/Handler#setString (; 114 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $1 - i32.const 2304 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/nearEntry/Value.String + local.set $3 local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.get $3 + call $~lib/nearEntry/Handler#addValue + local.get $3 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 1248 i32.const 0 call $~lib/string/String#charCodeAt - i32.eq + i32.ne if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_hello#setNull - i32.const 1 + i32.const 0 return end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.load local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 + i32.load offset=4 + i32.load local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString + local.tee $1 + call $~lib/nearEntry/Handler#setString + i32.const 1 + local.set $2 local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 109 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 116 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop + block $break|0 + i32.const 0 + local.set $2 + loop $loop|0 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $2 + call $~lib/string/String#charCodeAt + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.eq + i32.eqz + if + i32.const 2160 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2200 + call $~lib/string/String.__concat + local.tee $4 + i32.const 1000 + i32.const 321 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 local.get $3 call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort unreachable end local.get $1 call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/hello (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - i32.const 3232 - local.get $0 - call $~lib/string/String.__concat - local.tee $1 - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 ) - (func $~lib/array/Array#constructor (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Bools#constructor (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else - i32.const 16 - i32.const 13 + i32.const 1 + i32.const 20 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor + call $~lib/nearEntry/Value#constructor local.set $0 local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 local.get $1 - i32.store offset=12 + i32.store8 local.get $0 ) - (func $~lib/array/Array#push (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/nearEntry/Value.Bool (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 local.get $0 - i32.load offset=12 - local.set $2 + call $~lib/nearEntry/Bools#constructor + ) + (func $~lib/nearEntry/Handler#setBoolean (; 119 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $2 - i32.const 1 - i32.add + call $~lib/nearEntry/Value.Bool local.set $3 local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add local.get $1 - i32.store - local.get $0 local.get $3 - i32.store offset=12 + call $~lib/nearEntry/Handler#addValue local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 120 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.eqz + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/Handler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/Handler#setBoolean + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/nearEntry/Num#constructor (; 121 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + local.get $0 + if (result i32) + local.get $0 + else i32.const 8 - i32.const 15 + i32.const 21 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain - local.set $0 end + call $~lib/nearEntry/Value#constructor + local.set $0 local.get $0 - i32.const 0 - i32.store + local.get $1 + i64.store local.get $0 + ) + (func $~lib/nearEntry/Value.Number (; 122 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) i32.const 0 - i32.store offset=4 local.get $0 - local.tee $1 - i32.const 0 - i32.const 10 - call $~lib/array/Array#constructor - local.set $2 + call $~lib/nearEntry/Num#constructor + ) + (func $~lib/nearEntry/Handler#setInteger (; 123 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) local.get $1 - i32.load - call $~lib/rt/stub/__release + call $~lib/rt/stub/__retain + drop local.get $2 - i32.store + call $~lib/nearEntry/Value.Number + local.set $3 local.get $0 - local.tee $2 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $1 - local.get $2 - i32.load offset=4 + local.get $1 + local.get $3 + call $~lib/nearEntry/Handler#addValue + local.get $3 call $~lib/rt/stub/__release local.get $1 - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - call $~lib/array/Array#push - drop - local.get $0 + call $~lib/rt/stub/__release ) - (func $~lib/array/Array#get:length (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__unchecked_get (; 115 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + i64.const 0 + local.set $1 + i64.const 1 + local.set $2 local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 2224 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq if - i32.const 672 - i32.const 1384 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + drop + end + i32.const 0 + local.set $3 + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end unreachable end - local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/Handler#setInteger + i32.const 1 + return + end + i32.const 0 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Null#constructor (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load + if (result i32) + local.get $0 + else + i32.const 0 + i32.const 22 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/nearEntry/Value#constructor + local.set $0 local.get $0 - i32.load - call $~lib/array/Array#get:length - i32.const 1 - i32.sub - call $~lib/array/Array#__get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 118 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Value.Null (; 126 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + call $~lib/nearEntry/Null#constructor + ) + (func $~lib/nearEntry/Handler#setNull (; 127 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) local.get $1 call $~lib/rt/stub/__retain drop + call $~lib/nearEntry/Value.Null + local.set $2 local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/array/Array<~lib/string/String>#push - drop local.get $1 + local.get $2 + call $~lib/nearEntry/Handler#addValue + local.get $2 call $~lib/rt/stub/__release - ) - (func $~lib/array/Array#__unchecked_set (; 119 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store + call $~lib/rt/stub/__release ) - (func $~lib/array/Array#__set (; 120 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__unchecked_set - local.get $1 - local.get $3 - i32.ge_s + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq if local.get $0 - local.get $1 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/Handler#setNull i32.const 1 - i32.add - i32.store offset=12 + return end + i32.const 0 ) - (func $~lib/string/String#substring (; 121 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $6 - local.get $2 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $7 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 - i32.sub - local.set $3 - local.get $3 - i32.eqz - if - i32.const 656 - call $~lib/rt/stub/__retain - return + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray end - local.get $8 - i32.eqz + local.tee $1 if (result i32) - local.get $9 + local.get $1 + else local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - i32.eq + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString + end + local.tee $1 + if (result i32) + local.get $1 else - i32.const 0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean end - if + local.tee $1 + if (result i32) + local.get $1 + else local.get $0 - call $~lib/rt/stub/__retain - return + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber end - local.get $3 - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $10 - local.get $10 + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull + end + local.set $1 local.get $0 - local.get $8 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $10 - call $~lib/rt/stub/__retain + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace + local.get $1 ) - (func $~lib/util/number/itoa32 (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne if - i32.const 240 - call $~lib/rt/stub/__retain - return + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 end local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue i32.const 0 - i32.lt_s - local.set $1 - local.get $1 + i32.ne + i32.eqz if - i32.const 0 - local.get $0 - i32.sub - local.set $0 + i32.const 2248 + i32.const 1000 + i32.const 100 + i32.const 4 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $~lib/util/number/decimalCount32 local.get $1 - i32.add - local.set $2 + call $~lib/rt/stub/__release local.get $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/Handler#reset (; 131 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 0 + i32.gt_s + i32.eqz + br_if $break|0 + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#pop + call $~lib/rt/stub/__release + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/JSON.parse (; 132 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $1 + global.get $~lib/nearEntry/JSON.decoder + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize + global.get $~lib/nearEntry/JSON.handler + call $~lib/nearEntry/Handler#get:peek + local.tee $2 + call $~lib/rt/stub/__retain local.set $3 + global.get $~lib/nearEntry/JSON.handler + call $~lib/nearEntry/Handler#reset local.get $3 - local.set $6 - local.get $0 - local.set $5 - local.get $2 local.set $4 - local.get $6 - local.get $5 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $4 - call $~lib/util/number/utoa32_lut + ) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $1 - if + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $2 + call $~lib/util/hash/hashStr + local.set $3 + local.get $2 + call $~lib/rt/stub/__release local.get $3 - i32.const 45 - i32.store16 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 end - local.get $3 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $1 + call $~lib/rt/stub/__release + i32.const 2328 + i32.const 2384 + i32.const 103 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=4 call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/util/number/itoa (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/util/number/itoa32 - return - ) - (func $~lib/number/I32#toString (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/Obj#get (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - call $~lib/util/number/itoa - local.tee $1 + local.get $1 call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has + i32.eqz + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $0 + i32.load + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 125 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/decode<~lib/string/String> (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - i32.const 1168 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write i32.const 0 local.set $2 - block $break|0 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end + if + local.get $0 + call $~lib/rt/stub/__retain local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 - call $~lib/string/String#charCodeAt - local.set $4 + call $~lib/rt/stub/__release local.get $4 - i32.const 32 - i32.lt_s - local.tee $5 - if (result i32) - local.get $5 - else - local.get $4 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - end + call $~lib/rt/stub/__release + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat local.tee $5 - if (result i32) - local.get $5 - else - local.get $4 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - end - local.set $5 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2496 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if local.get $5 - if - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/string/String#substring - local.tee $6 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $3 - i32.const 1 - i32.add - local.set $2 - local.get $4 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 3264 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $4 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 3288 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $4 - i32.const 1672 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 3312 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $4 - i32.const 1720 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 3336 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $4 - i32.const 1768 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 3360 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $4 - i32.const 1816 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 3384 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - i32.const 0 - i32.eqz - if - i32.const 3408 - local.get $4 - call $~lib/number/I32#toString - local.tee $7 - call $~lib/string/String.__concat - local.tee $8 - i32.const 3496 - i32.const 108 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - end - end - end - end - end - end - local.get $6 - call $~lib/rt/stub/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|0 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release end - unreachable + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 end - local.get $0 - local.get $1 local.get $2 - local.get $1 - call $~lib/string/String#get:length - call $~lib/string/String#substring - local.tee $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $0 - i32.const 1168 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $5 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 126 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey - i32.const 0 - i32.ne + local.tee $6 i32.eqz - if - local.get $0 - i32.const 1104 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write + if (result i32) + i32.const 0 else - local.get $0 - i32.load - local.get $0 - i32.load - call $~lib/array/Array#get:length - i32.const 1 - i32.sub + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if i32.const 0 - call $~lib/array/Array#__set + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + return end + local.get $2 + call $~lib/rt/stub/__retain + local.set $3 local.get $1 - i32.const 0 - call $~lib/string/String.__ne + call $~lib/rt/stub/__retain + local.set $5 + local.get $3 + local.tee $6 + i32.eqz if (result i32) - local.get $1 - call $~lib/string/String#get:length i32.const 0 - i32.gt_s else - i32.const 0 + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof end + i32.eqz if - local.get $0 - local.get $1 - local.tee $2 - if (result i32) - local.get $2 - else - unreachable - end - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString - local.get $0 - i32.const 2000 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write + i32.const 2552 + local.get $5 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2600 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2496 + i32.const 471 + i32.const 2 + call $~lib/builtins/abort + unreachable end + local.get $3 + i32.load + call $~lib/rt/stub/__retain + local.set $7 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $7 + local.set $4 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 127 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 + (func $assembly/hello/main/hello (; 136 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 call $~lib/rt/stub/__retain drop + i32.const 2664 local.get $0 + call $~lib/string/String.__concat + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + call $~lib/rt/stub/__release local.get $0 - i32.const 216 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $1 call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#constructor (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 17 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#constructor (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#constructor (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else - i32.const 8 i32.const 16 + i32.const 18 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor local.set $0 local.get $0 i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $1 - i32.const 0 + i32.store offset=12 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#constructor - local.set $2 local.get $1 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=4 + i32.store offset=12 local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 19 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end local.get $0 - i32.const 0 - i32.store + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 local.get $0 - i32.const 0 - i32.store offset=4 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize local.get $0 - local.tee $2 - local.get $1 - local.tee $3 + i32.load offset=4 local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store + i32.const 2 + i32.shl + i32.add local.get $1 - call $~lib/rt/stub/__release + i32.store local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 ) - (func $~lib/nearEntry/PrimitiveHandler#constructor (; 131 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 8 - i32.const 18 + i32.const 23 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain + local.set $0 end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 local.get $0 i32.const 0 - i32.store8 + i32.store local.get $0 i32.const 0 i32.store offset=4 local.get $0 local.tee $1 i32.const 0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor + i32.const 10 + call $~lib/array/Array#constructor local.set $2 local.get $1 - i32.load offset=4 + i32.load call $~lib/rt/stub/__release local.get $2 - i32.store offset=4 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 21 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 i32.store local.get $0 + local.tee $2 + i32.const 0 i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $1 + local.get $2 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $1 i32.store offset=4 local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release + i32.const 1 + call $~lib/array/Array#push + drop local.get $0 ) - (func $~lib/nearEntry/PrimitiveHandler#constructor (; 133 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 20 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 + (func $~lib/array/Array#get:length (; 140 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i64.const 0 - i64.store + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 - local.tee $1 - i32.const 0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor - local.set $2 local.get $1 - i32.load offset=8 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=8 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load local.get $0 + i32.load + call $~lib/array/Array#get:length + i32.const 1 + i32.sub + call $~lib/array/Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 144 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop local.get $0 - i32.eqz - if - i32.const 8 - i32.const 23 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end + i32.load offset=4 + local.get $1 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array#__unchecked_set (; 145 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 - i32.const 0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 i32.store + ) + (func $~lib/array/Array#__set (; 146 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $0 - i32.const 0 - i32.store offset=4 + i32.load offset=12 + local.set $3 + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize local.get $0 - local.tee $2 local.get $1 - local.tee $3 local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store + call $~lib/array/Array#__unchecked_set local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/nearEntry/PrimitiveHandler#constructor (; 135 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - if (result i32) + local.get $3 + i32.ge_s + if local.get $0 - else - i32.const 12 - i32.const 22 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor - local.set $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=8 - local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop local.get $0 + local.get $1 + call $~lib/string/String.__eq i32.eqz - if - i32.const 8 - i32.const 25 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 + local.set $2 local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/nearEntry/PrimitiveHandler#constructor (; 137 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 8 - i32.const 24 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor - local.set $2 local.get $1 - i32.load offset=4 call $~lib/rt/stub/__release local.get $2 - i32.store offset=4 - local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/string/String#substring (; 148 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $6 + local.get $2 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $7 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $8 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $9 + local.get $9 + local.get $8 + i32.sub + local.set $3 + local.get $3 i32.eqz if - i32.const 8 - i32.const 27 - call $~lib/rt/stub/__alloc + i32.const 816 call $~lib/rt/stub/__retain - local.set $0 + return + end + local.get $8 + i32.eqz + if (result i32) + local.get $9 + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne if - local.get $3 + local.get $0 call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + return end local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $10 + local.get $10 local.get $0 + local.get $8 + i32.add + local.get $3 + call $~lib/memory/memory.copy + local.get $10 + call $~lib/rt/stub/__retain ) - (func $~lib/nearEntry/PrimitiveHandler#constructor (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) local.get $0 - if (result i32) + i32.const 100000 + i32.lt_u + if local.get $0 - else - i32.const 8 - i32.const 26 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor - local.set $2 - local.get $1 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=4 - local.get $0 - ) - (func $start:~lib/nearEntry (; 140 ;) (type $FUNCSIG$v) - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#constructor - global.set $~lib/nearEntry/PrimitiveHandler.String - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler#constructor - global.set $~lib/nearEntry/PrimitiveHandler.Boolean - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler#constructor - global.set $~lib/nearEntry/PrimitiveHandler.U64 - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler#constructor - global.set $~lib/nearEntry/PrimitiveHandler.I64 - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler#constructor - global.set $~lib/nearEntry/PrimitiveHandler.U32 - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler#constructor - global.set $~lib/nearEntry/PrimitiveHandler.I32 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 141 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release + i32.const 100 + i32.lt_u + if + i32.const 1 + i32.const 2 + local.get $0 + i32.const 10 + i32.lt_u + select + return + else + i32.const 4 + i32.const 5 + local.get $0 + i32.const 10000 + i32.lt_u + select + local.set $1 + i32.const 3 + local.get $1 + local.get $0 + i32.const 1000 + i32.lt_u + select + return + end + unreachable + else + local.get $0 + i32.const 10000000 + i32.lt_u + if + i32.const 6 + i32.const 7 + local.get $0 + i32.const 1000000 + i32.lt_u + select + return + else + i32.const 9 + i32.const 10 + local.get $0 + i32.const 1000000000 + i32.lt_u + select + local.set $1 + i32.const 8 + local.get $1 + local.get $0 + i32.const 100000000 + i32.lt_u + select + return + end + unreachable + end + unreachable ) - (func $~lib/nearEntry/encode<~lib/string/String> (; 142 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/utoa32_lut (; 150 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + i32.const 3344 + i32.load offset=4 + local.set $3 + block $break|0 + loop $continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + i32.eqz + br_if $break|0 + local.get $1 + i32.const 10000 + i32.div_u + local.set $4 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $9 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $9 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 + end + unreachable + end local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop + i32.const 100 + i32.ge_u + if + local.get $1 + i32.const 100 + i32.div_u + local.set $7 + local.get $1 + i32.const 100 + i32.rem_u + local.set $6 + local.get $7 + local.set $1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store + end local.get $1 - i32.const 0 - call $~lib/string/String.__eq + i32.const 10 + i32.ge_u if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 local.get $0 local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store else - local.get $0 local.get $2 + i32.const 1 + i32.sub + local.set $2 + i32.const 48 local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + i32.add + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 end - local.get $0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/string/String.UTF8.byteLength (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/itoa32 (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 - call $~lib/rt/stub/__retain - drop + i32.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end local.get $0 - local.set $2 - local.get $2 + i32.const 0 + i32.lt_s + local.set $1 + local.get $1 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 + call $~lib/util/number/decimalCount32 + local.get $1 i32.add + local.set $2 + local.get $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc local.set $3 + local.get $3 + local.set $6 + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut local.get $1 - if (result i32) - i32.const 1 - else - i32.const 0 + if + local.get $3 + i32.const 45 + i32.store16 end - local.set $4 + local.get $3 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa (; 152 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/util/number/itoa32 + return + ) + (func $~lib/number/I32#toString (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/util/number/itoa + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 154 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 1248 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + i32.const 0 + local.set $2 block $break|0 - loop $continue|0 - local.get $2 + i32.const 0 + local.set $3 + loop $loop|0 local.get $3 - i32.lt_u + local.get $1 + call $~lib/string/String#get:length + i32.lt_s i32.eqz br_if $break|0 - local.get $2 - i32.load16_u + local.get $1 + local.get $3 + call $~lib/string/String#charCodeAt + local.set $4 + local.get $4 + i32.const 32 + i32.lt_s + local.tee $5 + if (result i32) + local.get $5 + else + local.get $4 + i32.const 1248 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + end + local.tee $5 + if (result i32) + local.get $5 + else + local.get $4 + i32.const 1472 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + end local.set $5 local.get $5 - i32.const 128 - i32.lt_u if + local.get $0 local.get $1 - if (result i32) - local.get $5 - i32.eqz - else - i32.const 0 - end - if - br $break|0 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 local.get $2 - i32.const 2 + local.get $3 + call $~lib/string/String#substring + local.tee $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $3 + i32.const 1 i32.add local.set $2 - else - local.get $5 - i32.const 2048 - i32.lt_u + local.get $4 + i32.const 1248 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq if - local.get $4 - i32.const 2 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.add - local.set $2 + local.get $0 + i32.const 2696 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write else - local.get $5 - i32.const 64512 - i32.and - i32.const 55296 + local.get $4 + i32.const 1472 + i32.const 0 + call $~lib/string/String#charCodeAt i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.add - local.get $3 - i32.lt_u + if + local.get $0 + i32.const 2720 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write else + local.get $4 + i32.const 1544 i32.const 0 - end - if - local.get $2 - i32.load16_u offset=2 - i32.const 64512 - i32.and - i32.const 56320 + call $~lib/string/String#charCodeAt i32.eq if - local.get $2 - i32.const 4 - i32.add - local.set $2 + local.get $0 + i32.const 2744 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else local.get $4 - i32.const 4 - i32.add - local.set $4 - br $continue|0 + i32.const 1592 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 2768 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1640 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 2792 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1688 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 2816 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + i32.const 0 + i32.eqz + if + i32.const 2840 + local.get $4 + call $~lib/number/I32#toString + local.tee $7 + call $~lib/string/String.__concat + local.tee $8 + i32.const 3376 + i32.const 108 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + end + end + end end end - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $4 - i32.const 3 - i32.add - local.set $4 end + local.get $6 + call $~lib/rt/stub/__release end - br $continue|0 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end unreachable end - local.get $4 - local.set $5 local.get $0 - call $~lib/rt/stub/__release + local.get $1 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + call $~lib/string/String#substring + local.tee $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.const 1248 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 155 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey + i32.const 0 + i32.ne + i32.eqz + if + local.get $0 + i32.const 1184 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $0 + i32.load + local.get $0 + i32.load + call $~lib/array/Array#get:length + i32.const 1 + i32.sub + i32.const 0 + call $~lib/array/Array#__set + end + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if (result i32) + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.gt_s + else + i32.const 0 + end + if + local.get $0 + local.get $1 + local.tee $2 + if (result i32) + local.get $2 + else + unreachable + end + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString + local.get $0 + i32.const 1872 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 156 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 216 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 157 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/encode<~lib/string/String> (; 158 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + end + local.get $0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 816 + call $~lib/array/Array<~lib/string/String>#join + ) + (func $~lib/string/String.UTF8.byteLength (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.set $2 + local.get $2 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.add + local.set $3 + local.get $1 + if (result i32) + i32.const 1 + else + i32.const 0 + end + local.set $4 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load16_u + local.set $5 + local.get $5 + i32.const 128 + i32.lt_u + if + local.get $1 + if (result i32) + local.get $5 + i32.eqz + else + i32.const 0 + end + if + br $break|0 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $5 + i32.const 2048 + i32.lt_u + if + local.get $4 + i32.const 2 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $5 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if + local.get $2 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $4 + i32.const 4 + i32.add + local.set $4 + br $continue|0 + end + end + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $4 + i32.const 3 + i32.add + local.set $4 + end + end + br $continue|0 + end + unreachable + end + local.get $4 + local.set $5 + local.get $0 + call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/string/String.UTF8.encode (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.encode (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6858,7 +7210,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1424 i32.const 567 i32.const 8 call $~lib/builtins/abort @@ -6882,7 +7234,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1424 i32.const 571 i32.const 8 call $~lib/builtins/abort @@ -6896,7 +7248,7 @@ call $~lib/rt/stub/__release local.get $6 ) - (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6930,7 +7282,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6942,7 +7294,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/__wrapper_hello (; 148 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_hello (; 164 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -6951,6 +7303,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i64.const 0 call $~lib/nearEntry/input i64.const 0 @@ -6973,72 +7326,41 @@ local.tee $2 i64.extend_i32_u call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_hello#constructor + local.get $1 + call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 + i32.const 2304 + call $~lib/nearEntry/decode<~lib/string/String> local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 call $assembly/hello/main/hello - local.set $4 + local.set $5 i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $5 - local.get $4 + local.set $6 + local.get $5 i32.const 0 call $~lib/string/String.__eq if - local.get $5 + local.get $6 i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else + local.get $6 local.get $5 - local.get $4 i32.const 0 call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release end - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i64.extend_i32_s - local.get $6 + local.get $7 call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 + local.tee $8 i64.extend_i32_u call $~lib/nearEntry/value_return local.get $1 @@ -7055,884 +7377,934 @@ call $~lib/rt/stub/__release local.get $7 call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__near_ArgsParser_setKeyValue#constructor (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 20 - i32.const 28 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end + (func $~lib/near-runtime-ts/util/util.toUTF8 (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 + call $~lib/rt/stub/__retain + drop local.get $0 - i32.const 0 - i32.store + local.get $1 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release local.get $0 - i32.const 0 - i32.store offset=4 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/util/util.stringToBytes (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.const 0 - i32.store8 offset=8 + call $~lib/rt/stub/__retain + drop local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 1 + i32.sub + local.set $1 i32.const 0 - i32.store offset=12 + local.get $1 + call $~lib/typedarray/Uint8Array#constructor + local.set $2 + local.get $2 + i32.load offset=4 local.get $0 i32.const 0 - i32.store offset=16 + call $~lib/near-runtime-ts/util/util.toUTF8 + local.get $1 + call $~lib/memory/memory.copy + local.get $2 + local.set $3 local.get $0 + call $~lib/rt/stub/__release + local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/near-runtime-ts/storage/Storage#setString (; 167 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i64) local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 29 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 + local.get $2 + call $~lib/rt/stub/__retain + drop local.get $1 - local.tee $3 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $3 local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $4 local.get $3 - i32.store + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $3 + i32.load offset=4 + i64.extend_i32_u + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $4 + i32.load offset=4 + i64.extend_i32_u + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_write + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $0 + local.get $2 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 + (func $assembly/hello/main/setKeyValue (; 168 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + global.get $~lib/near-runtime-ts/storage/storage local.get $0 - i32.load offset=4 - i32.load offset=8 + local.get $1 + call $~lib/near-runtime-ts/storage/Storage#setString local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + call $~lib/rt/stub/__release local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/__wrapper_setKeyValue (; 169 ;) (type $FUNCSIG$v) + (local $0 i64) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz + i64.const 4294967295 + i64.eq if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable + call $~lib/nearEntry/panic end + i32.const 0 local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 154 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 3464 + call $~lib/nearEntry/decode<~lib/string/String> + local.tee $4 + local.get $3 + i32.const 3488 + call $~lib/nearEntry/decode<~lib/string/String> + local.tee $5 + call $assembly/hello/main/setKeyValue + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__near_ArgsParser_setKeyValue#pushObject (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#_internalReadBytes (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i64) + (local $4 i64) + (local $5 i32) + (local $6 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + i32.load offset=4 + i64.extend_i32_u + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_read + local.set $3 + local.get $3 + i64.const 1 + i64.eq if - local.get $1 + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len + local.set $4 i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 106 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 + local.get $4 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $5 + i64.const 0 + local.get $5 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register + local.get $5 + local.set $6 local.get $1 call $~lib/rt/stub/__release local.get $2 + call $~lib/rt/stub/__release + local.get $6 return else - local.get $1 i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 110 - i32.const 6 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/stub/__retain + local.set $5 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + return end + unreachable + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.load offset=4 + local.get $0 + i32.load + i32.sub ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 173 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $3 local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 i32.add - local.set $2 - local.get $2 - i32.const 10 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $1 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end + select end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 + local.set $1 local.get $2 i32.const 0 - i32.ge_s + i32.lt_s if (result i32) + local.get $3 local.get $2 - i32.const 16 - i32.lt_s - else + i32.add + local.tee $4 i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + local.set $2 local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 local.get $1 - i32.const 1168 + i32.sub + local.tee $4 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__alloc + local.set $7 + local.get $7 + local.get $0 local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end + i32.add + local.get $6 + call $~lib/memory/memory.copy + local.get $7 + call $~lib/rt/stub/__retain + ) + (func $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $1 + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.set $2 local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.UTF8.decode (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength local.get $1 - i32.const 1696 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/near-runtime-ts/util/util.bytesToString (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 i32.const 0 - call $~lib/string/String#charCodeAt i32.eq if - i32.const 1720 + i32.const 0 call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end + local.get $0 + call $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer + local.tee $1 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $2 local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/near-runtime-ts/storage/Storage#getString (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__retain + drop + local.get $0 local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc + call $~lib/near-runtime-ts/storage/Storage#_internalReadBytes + local.tee $2 + call $~lib/near-runtime-ts/util/util.bytesToString + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/getValueByKey (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + global.get $~lib/near-runtime-ts/storage/storage + local.get $0 + call $~lib/near-runtime-ts/storage/Storage#getString + local.tee $1 + if (result i32) local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort + else unreachable end - i32.const 656 call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 + local.set $1 + local.get $0 call $~lib/rt/stub/__release - local.get $4 + local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/__wrapper_getValueByKey (; 179 ;) (type $FUNCSIG$v) + (local $0 i64) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz + i64.const 4294967295 + i64.eq if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable + call $~lib/nearEntry/panic end + i32.const 0 local.get $0 - i32.load offset=4 - i32.load offset=4 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 3464 + call $~lib/nearEntry/decode<~lib/string/String> + local.tee $4 + call $assembly/hello/main/getValueByKey + local.set $5 i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $6 + local.get $5 i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 + call $~lib/string/String.__eq + if + local.get $6 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $6 + local.get $5 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 159 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 + local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $7 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $8 + i64.extend_i32_u + call $~lib/nearEntry/value_return local.get $1 - i32.load call $~lib/rt/stub/__release local.get $2 - i32.store + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/setValue (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + global.get $~lib/near-runtime-ts/storage/storage + i32.const 2304 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/near-runtime-ts/storage/Storage#setString local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/__wrapper_setValue (; 181 ;) (type $FUNCSIG$v) + (local $0 i64) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i64.const 4294967295 + i64.eq if - i32.const 0 - return + call $~lib/nearEntry/panic end + i32.const 0 local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer local.tee $2 - i32.ne + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 3488 + call $~lib/nearEntry/decode<~lib/string/String> + local.tee $4 + call $assembly/hello/main/setValue + local.set $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $6 + local.get $5 + i32.const 0 + call $~lib/string/String.__eq if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 + local.get $6 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $6 + local.get $5 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release end + local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $7 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $8 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 - i32.store + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/getValue (; 182 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + global.get $~lib/near-runtime-ts/storage/storage + i32.const 2304 + call $~lib/near-runtime-ts/storage/Storage#getString + local.tee $0 + if (result i32) + local.get $0 + else + unreachable + end + call $~lib/rt/stub/__retain + ) + (func $assembly/hello/main/__wrapper_getValue (; 183 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + call $assembly/hello/main/getValue + local.set $0 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $1 local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_setKeyValue#pushObject + i32.const 0 + call $~lib/string/String.__eq if + local.get $1 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $~lib/near-runtime-ts/storage/Storage#_fetchIter (; 184 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.tee $4 + i32.const 1 + i32.sub + local.set $2 + local.get $4 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + i64.const 0 + i64.const 1 + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_iter_next + i64.const 1 + i64.eq + else + i32.const 0 + end + i32.eqz + br_if $break|0 + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len + local.set $5 + i32.const 0 + local.get $5 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $4 + i64.const 0 + local.get $4 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register + local.get $4 + i32.const 0 + i32.ne + if local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + local.get $4 + call $~lib/near-runtime-ts/util/util.bytesToString + local.tee $6 + call $~lib/array/Array<~lib/string/String>#push drop - br $continue|0 + local.get $6 + call $~lib/rt/stub/__release end - unreachable + local.get $4 + call $~lib/rt/stub/__release + br $continue|0 end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort + unreachable + end + local.get $3 + ) + (func $~lib/near-runtime-ts/storage/Storage#keys (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $3 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $3 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_iter_prefix + local.set $4 + local.get $0 + local.get $4 + local.get $2 + call $~lib/near-runtime-ts/storage/Storage#_fetchIter + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $5 + ) + (func $~lib/near-runtime-ts/storage/Storage#keys|trampoline (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end unreachable end + i32.const -1 + local.set $2 end local.get $0 + local.get $1 + local.get $2 + call $~lib/near-runtime-ts/storage/Storage#keys + ) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/string/String>#__get (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__unchecked_get + ) + (func $assembly/hello/main/getAllKeys (; 189 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) i32.const 1 - local.set $3 + global.set $~lib/argc + global.get $~lib/near-runtime-ts/storage/storage + i32.const 1568 + i32.const 0 + call $~lib/near-runtime-ts/storage/Storage#keys|trampoline + local.set $0 + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 3520 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3520 + i32.const 431 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $2 local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $2 ) - (func $assembly/hello/main/__near_ArgsParser_setKeyValue#pushArray (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain drop local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 2048 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop + i32.const 1 local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 191 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.lt_s if - i32.const 0 - return + i32.const 2000 + i32.const 768 + i32.const 287 + i32.const 20 + call $~lib/builtins/abort + unreachable end local.get $0 i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store + local.set $2 local.get $0 - i32.load local.get $1 - call $assembly/hello/main/__near_ArgsParser_setKeyValue#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end + i32.store offset=12 + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 192 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 2072 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write local.get $0 i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 + call $~lib/array/Array#pop + drop ) - (func $assembly/hello/main/__near_ArgsParser_setKeyValue#setString (; 163 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop @@ -7940,24859 +8312,5308 @@ call $~lib/rt/stub/__retain drop local.get $1 - i32.const 3584 - call $~lib/string/String.__eq + i32.const 0 + i32.eq if local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=12 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3608 - call $~lib/string/String.__eq - if + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else local.get $0 - local.tee $4 local.get $2 - local.tee $3 - local.get $4 - i32.load offset=16 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable end - local.get $3 - i32.store offset=16 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.set $4 local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/__wrapper_getAllKeys (; 194 ;) (type $FUNCSIG$v) + (local $0 i32) (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 + (local $3 i32) + call $assembly/hello/main/getAllKeys + local.set $0 i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $1 + local.get $1 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $assembly/hello/main/__near_ArgsParser_setKeyValue#setString - i32.const 1 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> + call $~lib/rt/stub/__release + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 165 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + (func $assembly/hello/main/benchmark (; 195 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length + loop $continue|0 + local.get $0 + i32.const 10 i32.lt_s i32.eqz br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt + global.get $~lib/near-runtime-ts/storage/storage + local.get $0 + call $~lib/number/I32#toString + local.tee $1 + i32.const 3584 + call $~lib/near-runtime-ts/storage/Storage#setString local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 i32.const 1 i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 + local.set $0 + local.get $1 call $~lib/rt/stub/__release - br $loop|0 + br $continue|0 end unreachable end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end + i32.const 1 + global.set $~lib/argc + global.get $~lib/near-runtime-ts/storage/storage + i32.const 816 i32.const 0 + call $~lib/near-runtime-ts/storage/Storage#keys|trampoline ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 167 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) + (func $assembly/hello/main/__wrapper_benchmark (; 196 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - i64.const 0 + call $assembly/hello/main/benchmark + local.set $0 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor local.set $1 - i64.const 1 - local.set $2 + local.get $1 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end + call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> + call $~lib/rt/stub/__release + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 + call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__near_ArgsParser_setKeyValue#setNull (; 168 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/decode (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 call $~lib/rt/stub/__retain drop local.get $1 - i32.const 3584 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if local.get $0 - local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 i32.const 0 - local.tee $3 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2496 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 - i32.load offset=12 - local.tee $2 + local.tee $6 i32.ne if - local.get $3 + local.get $5 call $~lib/rt/stub/__retain drop - local.get $2 + local.get $6 call $~lib/rt/stub/__release end + local.get $5 + local.set $2 local.get $3 - i32.store offset=12 - local.get $1 call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3608 - call $~lib/string/String.__eq - if + local.get $4 + call $~lib/rt/stub/__release + else local.get $0 - local.tee $3 - i32.const 0 - local.tee $2 - local.get $3 - i32.load offset=16 - local.tee $3 + local.tee $6 + local.get $2 + local.tee $4 i32.ne if - local.get $2 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $3 + local.get $4 call $~lib/rt/stub/__release end - local.get $2 - i32.store offset=16 - local.get $1 - call $~lib/rt/stub/__release - return + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 169 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_setKeyValue#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 171 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne + i32.const 0 + i32.eqz if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 3616 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3656 + call $~lib/string/String.__concat + local.tee $3 + i32.const 3680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2496 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 + local.set $7 + local.get $6 + call $~lib/rt/stub/__release local.get $4 - i32.load offset=4 call $~lib/rt/stub/__release local.get $3 - i32.store offset=4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return + end + local.get $2 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 21 + call $~lib/rt/__instanceof end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne i32.eqz if - i32.const 3176 - i32.const 840 - i32.const 100 + i32.const 2552 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3728 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2496 + i32.const 526 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/stub/__release local.get $2 + i64.load + i32.wrap_i64 + local.set $4 + local.get $5 call $~lib/rt/stub/__release - ) - (func $~lib/near-runtime-ts/util/util.toUTF8 (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/string/String.UTF8.encode - local.tee $2 - local.set $3 - local.get $2 + local.get $3 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/near-runtime-ts/util/util.stringToBytes (; 173 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 1 - i32.sub - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.set $2 - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 0 - call $~lib/near-runtime-ts/util/util.toUTF8 local.get $1 - call $~lib/memory/memory.copy - local.get $2 - local.set $3 - local.get $0 call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/near-runtime-ts/storage/Storage#setString (; 174 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $3 local.get $2 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $4 - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $3 - i32.load offset=4 - i64.extend_i32_u - local.get $4 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $4 - i32.load offset=4 - i64.extend_i32_u - i64.const 0 - call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_write - local.set $5 - local.get $3 call $~lib/rt/stub/__release local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/setKeyValue (; 175 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - global.get $~lib/near-runtime-ts/storage/storage - local.get $0 - local.get $1 - call $~lib/near-runtime-ts/storage/Storage#setString - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + return ) - (func $assembly/hello/main/__wrapper_setKeyValue (; 176 ;) (type $FUNCSIG$v) - (local $0 i64) + (func $~lib/util/string/isSpace (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 local.get $0 - i64.const 4294967295 - i64.eq + i32.const 255 + i32.le_s if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_setKeyValue#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release + block $break|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + local.set $1 + local.get $1 + i32.const 9 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 10 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 11 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 12 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 13 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 32 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 160 + i32.eq + br_if $case6|0 + br $break|0 + end + end + end + end + end + end + end + i32.const 1 + return + end + i32.const 0 + return end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - local.get $3 - i32.load offset=16 - call $assembly/hello/main/setKeyValue - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_getValueByKey#constructor (; 177 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.eqz + i32.const 8192 + i32.ge_s + if (result i32) + local.get $0 + i32.const 8202 + i32.le_s + else + i32.const 0 + end if - i32.const 16 - i32.const 30 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 + i32.const 1 + return + end + block $break|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $0 + local.set $1 + local.get $1 + i32.const 5760 + i32.eq + br_if $case0|1 + local.get $1 + i32.const 8232 + i32.eq + br_if $case1|1 + local.get $1 + i32.const 8233 + i32.eq + br_if $case2|1 + local.get $1 + i32.const 8239 + i32.eq + br_if $case3|1 + local.get $1 + i32.const 8287 + i32.eq + br_if $case4|1 + local.get $1 + i32.const 12288 + i32.eq + br_if $case5|1 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|1 + br $break|1 + end + end + end + end + end + end + end + i32.const 1 + return end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 i32.const 0 - i32.store offset=12 - local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtol (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 call $~lib/rt/stub/__retain drop local.get $0 - i32.eqz - if - i32.const 8 - i32.const 31 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 + call $~lib/string/String#get:length + local.set $2 local.get $2 - i32.load - local.tee $2 - i32.ne + i32.eqz if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 + i32.const 0 + local.set $3 + local.get $0 call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 179 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 + local.get $3 return end local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 181 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 + local.set $4 + local.get $4 + i32.load16_u + local.set $5 i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 182 ;) (type $FUNCSIG$vi) (param $0 i32) + local.set $6 block $break|0 loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + local.get $5 + call $~lib/util/string/isSpace i32.eqz br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + local.get $2 + i32.const 1 + i32.sub + local.set $2 br $continue|0 end unreachable end - ) - (func $assembly/hello/main/__near_ArgsParser_getValueByKey#pushObject (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + local.get $5 + i32.const 45 + i32.eq + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i32.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + i32.const -1 + local.set $6 + else + local.get $5 + i32.const 43 + i32.eq + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i32.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + end + end local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne i32.eqz if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq + local.get $5 + i32.const 48 + i32.eq if (result i32) - i32.const 1 + local.get $2 + i32.const 2 + i32.gt_s else - local.get $1 - call $~lib/string/String#get:length i32.const 0 - i32.eq end - i32.eqz if - i32.const 0 - i32.const 952 - i32.const 165 - i32.const 6 - call $~lib/builtins/abort - unreachable + block $break|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $4 + i32.const 2 + i32.add + i32.load16_u + local.set $3 + local.get $3 + i32.const 66 + i32.eq + br_if $case0|1 + local.get $3 + i32.const 98 + i32.eq + br_if $case1|1 + local.get $3 + i32.const 79 + i32.eq + br_if $case2|1 + local.get $3 + i32.const 111 + i32.eq + br_if $case3|1 + local.get $3 + i32.const 88 + i32.eq + br_if $case4|1 + local.get $3 + i32.const 120 + i32.eq + br_if $case5|1 + br $case6|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 + end + i32.const 10 + local.set $1 + end + else + i32.const 10 + local.set $1 end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return else local.get $1 - i32.const 0 - call $~lib/string/String.__ne + i32.const 2 + i32.lt_s if (result i32) i32.const 1 else local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne + i32.const 36 + i32.gt_s end - i32.eqz if i32.const 0 - i32.const 952 - i32.const 169 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return end end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 184 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else + i32.const 0 + local.set $7 + block $break|2 + loop $continue|2 local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + local.tee $3 + i32.const 1 i32.sub - i32.const 10 - i32.add local.set $2 + local.get $3 + i32.eqz + br_if $break|2 + local.get $4 + i32.load16_u + local.set $5 + local.get $5 + i32.const 48 + i32.ge_s + if (result i32) + local.get $5 + i32.const 57 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 48 + i32.sub + local.set $5 + else + local.get $5 + i32.const 65 + i32.ge_s + if (result i32) + local.get $5 + i32.const 90 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + local.get $5 + i32.const 97 + i32.ge_s + if (result i32) + local.get $5 + i32.const 122 + i32.le_s + else + i32.const 0 + end + if + local.get $5 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + br $break|2 + end + end + end + local.get $5 + local.get $1 + i32.ge_s + if + br $break|2 + end + local.get $7 + local.get $1 + i32.mul + local.get $5 + i32.add + local.set $7 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $continue|2 end + unreachable end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray + local.get $6 + local.get $7 + i32.mul local.set $3 + local.get $0 + call $~lib/rt/stub/__release local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 + ) + (func $~lib/number/I32.parseInt (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 call $~lib/rt/stub/__retain - local.set $4 + drop + local.get $0 + local.get $1 + call $~lib/util/string/strtol + local.set $2 + local.get $0 + call $~lib/rt/stub/__release local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz + ) + (func $~lib/util/number/decimalCount64 (; 201 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + local.get $0 + i64.const 1000000000000000 + i64.lt_u if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort + local.get $0 + i64.const 1000000000000 + i64.lt_u + if + i32.const 11 + i32.const 12 + local.get $0 + i64.const 100000000000 + i64.lt_u + select + local.set $1 + i32.const 10 + local.get $1 + local.get $0 + i64.const 10000000000 + i64.lt_u + select + return + else + i32.const 14 + i32.const 15 + local.get $0 + i64.const 100000000000000 + i64.lt_u + select + local.set $1 + i32.const 13 + local.get $1 + local.get $0 + i64.const 10000000000000 + i64.lt_u + select + return + end + unreachable + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if + i32.const 16 + i32.const 17 + local.get $0 + i64.const 10000000000000000 + i64.lt_u + select + return + else + i32.const 19 + i32.const 20 + local.get $0 + i64.const -8446744073709551616 + i64.lt_u + select + local.set $1 + i32.const 18 + local.get $1 + local.get $0 + i64.const 1000000000000000000 + i64.lt_u + select + return + end unreachable end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 + unreachable ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/number/utoa64_lut (; 202 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) - (local $4 i32) + (local $4 i64) (local $5 i32) (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + i32.const 3344 + i32.load offset=4 + local.set $3 + block $break|0 + loop $continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + i32.eqz + br_if $break|0 + local.get $1 + i64.const 100000000 + i64.div_u + local.set $4 + local.get $1 + local.get $4 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $7 + local.get $6 + i32.const 100 + i32.div_u + local.set $8 + local.get $6 + i32.const 100 + i32.rem_u + local.set $9 + local.get $7 + i32.const 100 + i32.div_u + local.set $10 + local.get $7 + i32.const 100 + i32.rem_u + local.set $11 + local.get $3 + local.get $10 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $11 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + local.get $3 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $9 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 + end + unreachable end + local.get $0 local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_lut + ) + (func $~lib/util/number/utoa64 (; 203 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + local.get $0 + i64.eqz if - i32.const 1816 + i32.const 240 call $~lib/rt/stub/__retain return end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + local.get $0 + i64.const 4294967295 + i64.le_u if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + i32.wrap_i64 local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 local.get $2 - i32.const 4096 - i32.mul + call $~lib/util/number/decimalCount32 + local.set $3 local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $1 + local.get $1 local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut + else + local.get $0 + call $~lib/util/number/decimalCount64 + local.set $3 + local.get $3 i32.const 1 - global.set $~lib/argc + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $1 local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $0 + local.set $7 + local.get $3 + local.set $4 + local.get $5 + local.get $7 + local.get $4 + call $~lib/util/number/utoa64_lut end - i32.const 656 + local.get $1 call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 + ) + (func $~lib/util/number/itoa (; 204 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + local.get $0 + call $~lib/util/number/utoa64 + return + ) + (func $~lib/number/U64#toString (; 205 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/util/number/itoa + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/benchmark_storage (; 206 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 i64) (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc + block $break|0 + loop $continue|0 + local.get $1 local.get $0 - i32.load offset=4 + i32.lt_s + i32.eqz + br_if $break|0 + global.get $~lib/near-runtime-ts/storage/storage local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 + call $~lib/number/I32#toString + local.tee $2 + local.get $1 + call $~lib/number/I32#toString + local.tee $3 + call $~lib/near-runtime-ts/storage/Storage#setString + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + br $continue|0 + end + unreachable + end + i32.const 0 + local.set $1 + i64.const 0 + local.set $4 + block $break|1 + loop $continue|1 + local.get $1 + local.get $0 + i32.lt_s + i32.eqz + br_if $break|1 + global.get $~lib/near-runtime-ts/storage/storage + local.get $1 + call $~lib/number/I32#toString + local.tee $3 + call $~lib/near-runtime-ts/storage/Storage#getString + local.tee $2 i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join + call $~lib/number/I32.parseInt local.set $5 local.get $4 + local.get $5 + i64.extend_i32_s + i64.add + local.set $4 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end + br $continue|1 end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 187 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort unreachable end + local.get $4 + call $~lib/number/U64#toString ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 188 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/__wrapper_benchmark_storage (; 207 ;) (type $FUNCSIG$v) + (local $0 i64) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i64.const 4294967295 + i64.eq if - i32.const 0 - return + call $~lib/nearEntry/panic end + i32.const 0 local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer local.tee $2 - i32.ne + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 1568 + call $~lib/nearEntry/decode + call $assembly/hello/main/benchmark_storage + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $4 + i32.const 0 + call $~lib/string/String.__eq if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 + local.get $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_getValueByKey#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__near_ArgsParser_getValueByKey#pushArray (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtol (; 208 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) - local.get $1 + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i64) + local.get $0 call $~lib/rt/stub/__retain drop local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + call $~lib/string/String#get:length local.set $2 - local.get $1 - call $~lib/rt/stub/__release local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 190 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i32.eqz if - i32.const 0 + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 return end local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + local.set $4 + local.get $4 + i32.load16_u + local.set $5 + i64.const 1 + local.set $6 + block $break|0 + loop $continue|0 + local.get $5 + call $~lib/util/string/isSpace + i32.eqz + br_if $break|0 + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 + end + unreachable end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_getValueByKey#pushArray + local.get $5 + i32.const 45 + i32.eq if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $2 i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i32.sub + local.tee $2 i32.eqz if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_getValueByKey#setString (; 191 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3584 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $3 - local.get $2 + local.get $4 + i32.const 2 + i32.add local.tee $4 - local.get $3 - i32.load offset=12 - local.tee $3 - i32.ne + i32.load16_u + local.set $5 + i64.const -1 + local.set $6 + else + local.get $5 + i32.const 43 + i32.eq if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 end - local.get $4 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return end - local.get $0 local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 192 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $assembly/hello/main/__near_ArgsParser_getValueByKey#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 193 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 195 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_getValueByKey#setNull (; 196 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3584 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_getValueByKey#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 199 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/near-runtime-ts/storage/Storage#_internalReadBytes (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $2 - i32.load offset=4 - i64.extend_i32_u - i64.const 0 - call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_read - local.set $3 - local.get $3 - i64.const 1 - i64.eq - if - i64.const 0 - call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len - local.set $4 - i32.const 0 - local.get $4 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $5 - i64.const 0 - local.get $5 - i32.load offset=4 - i64.extend_i32_u - call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register - local.get $5 - local.set $6 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $6 - return - else - i32.const 0 - call $~lib/rt/stub/__retain - local.set $5 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - unreachable - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 201 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 202 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $2 - local.get $2 - local.get $1 - i32.sub - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $7 - local.get $7 - local.get $0 - local.get $1 - i32.add - local.get $6 - call $~lib/memory/memory.copy - local.get $7 - call $~lib/rt/stub/__retain - ) - (func $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer (; 204 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $1 - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/string/String.UTF8.decode (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.get $1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/near-runtime-ts/util/util.bytesToString (; 206 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.const 0 - i32.eq - if - i32.const 0 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - return - end - local.get $0 - call $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer - local.tee $1 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/near-runtime-ts/storage/Storage#getString (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/near-runtime-ts/storage/Storage#_internalReadBytes - local.tee $2 - call $~lib/near-runtime-ts/util/util.bytesToString - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/getValueByKey (; 208 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - global.get $~lib/near-runtime-ts/storage/storage - local.get $0 - call $~lib/near-runtime-ts/storage/Storage#getString - local.tee $1 - if (result i32) - local.get $1 - else - unreachable - end - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $assembly/hello/main/__wrapper_getValueByKey (; 209 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_getValueByKey#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - call $assembly/hello/main/getValueByKey - local.set $4 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $5 - local.get $4 - i32.const 0 - call $~lib/string/String.__eq - if - local.get $5 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $5 - local.get $4 - i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - end - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $6 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_setValue#constructor (; 210 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 32 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 33 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 212 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 214 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 215 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/main/__near_ArgsParser_setValue#pushObject (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 233 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 237 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 217 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 218 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 219 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 220 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 221 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_setValue#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_setValue#pushArray (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_setValue#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_setValue#setString (; 224 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3608 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=12 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 225 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $assembly/hello/main/__near_ArgsParser_setValue#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 226 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 227 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_setValue#setNull (; 229 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3608 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 230 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_setValue#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 231 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 232 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/setValue (; 233 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - global.get $~lib/near-runtime-ts/storage/storage - i32.const 2304 - local.get $0 - call $~lib/near-runtime-ts/storage/Storage#setString - local.get $0 - ) - (func $assembly/hello/main/__wrapper_setValue (; 234 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_setValue#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - call $assembly/hello/main/setValue - local.set $4 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $5 - local.get $4 - i32.const 0 - call $~lib/string/String.__eq - if - local.get $5 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $5 - local.get $4 - i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - end - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $6 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/getValue (; 235 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - global.get $~lib/near-runtime-ts/storage/storage - i32.const 2304 - call $~lib/near-runtime-ts/storage/Storage#getString - local.tee $0 - if (result i32) - local.get $0 - else - unreachable - end - call $~lib/rt/stub/__retain - ) - (func $assembly/hello/main/__wrapper_getValue (; 236 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $assembly/hello/main/getValue - local.set $0 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $1 - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - if - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $1 - local.get $0 - i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - end - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $2 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $3 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $~lib/near-runtime-ts/storage/Storage#_fetchIter (; 237 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.tee $4 - i32.const 1 - i32.sub - local.set $2 - local.get $4 - i32.const 0 - i32.ne - if (result i32) - local.get $1 - i64.const 0 - i64.const 1 - call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_iter_next - i64.const 1 - i64.eq - else - i32.const 0 - end - i32.eqz - br_if $break|0 - i64.const 0 - call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len - local.set $5 - i32.const 0 - local.get $5 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $4 - i64.const 0 - local.get $4 - i32.load offset=4 - i64.extend_i32_u - call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register - local.get $4 - i32.const 0 - i32.ne - if - local.get $3 - local.get $4 - call $~lib/near-runtime-ts/util/util.bytesToString - local.tee $6 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $6 - call $~lib/rt/stub/__release - end - local.get $4 - call $~lib/rt/stub/__release - br $continue|0 - end - unreachable - end - local.get $3 - ) - (func $~lib/near-runtime-ts/storage/Storage#keys (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $3 - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $3 - i32.load offset=4 - i64.extend_i32_u - call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_iter_prefix - local.set $4 - local.get $0 - local.get $4 - local.get $2 - call $~lib/near-runtime-ts/storage/Storage#_fetchIter - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $5 - ) - (func $~lib/near-runtime-ts/storage/Storage#keys|trampoline (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/near-runtime-ts/storage/Storage#keys - ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__get (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1272 - i32.const 1384 - i32.const 106 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1384 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__unchecked_get - ) - (func $assembly/hello/main/getAllKeys (; 242 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 1 - global.set $~lib/argc - global.get $~lib/near-runtime-ts/storage/storage - i32.const 1696 - i32.const 0 - call $~lib/near-runtime-ts/storage/Storage#keys|trampoline - local.set $0 - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 952 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 2304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 953 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey - local.get $0 - i32.const 2128 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $0 - i32.load - i32.const 1 - call $~lib/array/Array#push - drop - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/array/Array#pop (; 244 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 3640 - i32.const 1384 - i32.const 287 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 245 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 2216 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $0 - i32.load - call $~lib/array/Array#pop - drop - ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array<~lib/string/String>#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $4 - i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray - end - local.get $0 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $assembly/hello/main/__wrapper_getAllKeys (; 247 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $assembly/hello/main/getAllKeys - local.set $0 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $1 - local.get $1 - local.get $0 - i32.const 0 - call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> - call $~lib/rt/stub/__release - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $2 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $3 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/benchmark (; 248 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $break|0 - loop $continue|0 - local.get $0 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|0 - global.get $~lib/near-runtime-ts/storage/storage - local.get $0 - call $~lib/number/I32#toString - local.tee $1 - i32.const 3688 - call $~lib/near-runtime-ts/storage/Storage#setString - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - br $continue|0 - end - unreachable - end - i32.const 1 - global.set $~lib/argc - global.get $~lib/near-runtime-ts/storage/storage - i32.const 656 - i32.const 0 - call $~lib/near-runtime-ts/storage/Storage#keys|trampoline - ) - (func $assembly/hello/main/__wrapper_benchmark (; 249 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $assembly/hello/main/benchmark - local.set $0 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $1 - local.get $1 - local.get $0 - i32.const 0 - call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> - call $~lib/rt/stub/__release - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $2 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $3 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_benchmark_storage#constructor (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 34 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 35 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 255 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/main/__near_ArgsParser_benchmark_storage#pushObject (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 348 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 352 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 260 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_benchmark_storage#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_benchmark_storage#pushArray (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 263 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_benchmark_storage#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 265 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 266 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_benchmark_storage#setInteger (; 267 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 1696 - call $~lib/string/String.__eq - if - local.get $0 - local.get $2 - i32.wrap_i64 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $assembly/hello/main/__near_ArgsParser_benchmark_storage#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_benchmark_storage#setNull (; 269 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_benchmark_storage#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 272 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/util/string/isSpace (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 255 - i32.le_s - if - block $break|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 9 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 10 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 11 - i32.eq - br_if $case2|0 - local.get $1 - i32.const 12 - i32.eq - br_if $case3|0 - local.get $1 - i32.const 13 - i32.eq - br_if $case4|0 - local.get $1 - i32.const 32 - i32.eq - br_if $case5|0 - local.get $1 - i32.const 160 - i32.eq - br_if $case6|0 - br $break|0 - end - end - end - end - end - end - end - i32.const 1 - return - end - i32.const 0 - return - end - local.get $0 - i32.const 8192 - i32.ge_s - if (result i32) - local.get $0 - i32.const 8202 - i32.le_s - else - i32.const 0 - end - if - i32.const 1 - return - end - block $break|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $0 - local.set $1 - local.get $1 - i32.const 5760 - i32.eq - br_if $case0|1 - local.get $1 - i32.const 8232 - i32.eq - br_if $case1|1 - local.get $1 - i32.const 8233 - i32.eq - br_if $case2|1 - local.get $1 - i32.const 8239 - i32.eq - br_if $case3|1 - local.get $1 - i32.const 8287 - i32.eq - br_if $case4|1 - local.get $1 - i32.const 12288 - i32.eq - br_if $case5|1 - local.get $1 - i32.const 65279 - i32.eq - br_if $case6|1 - br $break|1 - end - end - end - end - end - end - end - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/util/string/strtol (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - i32.eqz - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - local.set $4 - local.get $4 - i32.load16_u - local.set $5 - i32.const 1 - local.set $6 - block $break|0 - loop $continue|0 - local.get $5 - call $~lib/util/string/isSpace - i32.eqz - br_if $break|0 - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - unreachable - end - local.get $5 - i32.const 45 - i32.eq - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - i32.const -1 - local.set $6 - else - local.get $5 - i32.const 43 - i32.eq - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - end - end - local.get $1 - i32.eqz - if - local.get $5 - i32.const 48 - i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.gt_s - else - i32.const 0 - end - if - block $break|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - i32.const 2 - i32.add - i32.load16_u - local.set $3 - local.get $3 - i32.const 66 - i32.eq - br_if $case0|1 - local.get $3 - i32.const 98 - i32.eq - br_if $case1|1 - local.get $3 - i32.const 79 - i32.eq - br_if $case2|1 - local.get $3 - i32.const 111 - i32.eq - br_if $case3|1 - local.get $3 - i32.const 88 - i32.eq - br_if $case4|1 - local.get $3 - i32.const 120 - i32.eq - br_if $case5|1 - br $case6|1 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - br $break|1 - end - i32.const 10 - local.set $1 - end - else - i32.const 10 - local.set $1 - end - else - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - end - i32.const 0 - local.set $7 - block $break|2 - loop $continue|2 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|2 - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.ge_s - if (result i32) - local.get $5 - i32.const 57 - i32.le_s - else - i32.const 0 - end - if - local.get $5 - i32.const 48 - i32.sub - local.set $5 - else - local.get $5 - i32.const 65 - i32.ge_s - if (result i32) - local.get $5 - i32.const 90 - i32.le_s - else - i32.const 0 - end - if - local.get $5 - i32.const 65 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - local.get $5 - i32.const 97 - i32.ge_s - if (result i32) - local.get $5 - i32.const 122 - i32.le_s - else - i32.const 0 - end - if - local.get $5 - i32.const 97 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - br $break|2 - end - end - end - local.get $5 - local.get $1 - i32.ge_s - if - br $break|2 - end - local.get $7 - local.get $1 - i32.mul - local.get $5 - i32.add - local.set $7 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $continue|2 - end - unreachable - end - local.get $6 - local.get $7 - i32.mul - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/number/I32.parseInt (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/util/number/utoa64 (; 276 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - local.get $0 - i64.eqz - if - i32.const 240 - call $~lib/rt/stub/__retain - return - end - local.get $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $2 - local.get $2 - call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $1 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - else - local.get $0 - call $~lib/util/number/decimalCount64 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $1 - local.get $1 - local.set $5 - local.get $0 - local.set $7 - local.get $3 - local.set $4 - local.get $5 - local.get $7 - local.get $4 - call $~lib/util/number/utoa64_lut - end - local.get $1 - call $~lib/rt/stub/__retain - ) - (func $~lib/util/number/itoa (; 277 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - local.get $0 - call $~lib/util/number/utoa64 - return - ) - (func $~lib/number/U64#toString (; 278 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/util/number/itoa - local.tee $1 - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $assembly/hello/main/benchmark_storage (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - i32.const 0 - local.set $1 - block $break|0 - loop $continue|0 - local.get $1 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 - global.get $~lib/near-runtime-ts/storage/storage - local.get $1 - call $~lib/number/I32#toString - local.tee $2 - local.get $1 - call $~lib/number/I32#toString - local.tee $3 - call $~lib/near-runtime-ts/storage/Storage#setString - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - br $continue|0 - end - unreachable - end - i32.const 0 - local.set $1 - i64.const 0 - local.set $4 - block $break|1 - loop $continue|1 - local.get $1 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|1 - global.get $~lib/near-runtime-ts/storage/storage - local.get $1 - call $~lib/number/I32#toString - local.tee $3 - call $~lib/near-runtime-ts/storage/Storage#getString - local.tee $2 - i32.const 0 - call $~lib/number/I32.parseInt - local.set $5 - local.get $4 - local.get $5 - i64.extend_i32_s - i64.add - local.set $4 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - br $continue|1 - end - unreachable - end - local.get $4 - call $~lib/number/U64#toString - ) - (func $assembly/hello/main/__wrapper_benchmark_storage (; 280 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_benchmark_storage#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - call $assembly/hello/main/benchmark_storage - local.set $4 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $5 - local.get $4 - i32.const 0 - call $~lib/string/String.__eq - if - local.get $5 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $5 - local.get $4 - i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - end - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $6 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_limited_storage#constructor (; 281 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 36 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 37 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 286 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/main/__near_ArgsParser_limited_storage#pushObject (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 412 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 416 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 288 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 289 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 291 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 292 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_limited_storage#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_limited_storage#pushArray (; 293 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 294 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_limited_storage#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/util/string/strtol (; 295 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i32) - (local $8 i64) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - i32.eqz - if - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - local.set $4 - local.get $4 - i32.load16_u - local.set $5 - i64.const 1 - local.set $6 - block $break|0 - loop $continue|0 - local.get $5 - call $~lib/util/string/isSpace - i32.eqz - br_if $break|0 - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - unreachable - end - local.get $5 - i32.const 45 - i32.eq - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - if - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - i64.const -1 - local.set $6 - else - local.get $5 - i32.const 43 - i32.eq - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - if - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - end - end - local.get $1 - i32.eqz - if - local.get $5 - i32.const 48 - i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.gt_s - else - i32.const 0 - end - if - block $break|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - i32.const 2 - i32.add - i32.load16_u - local.set $7 - local.get $7 - i32.const 66 - i32.eq - br_if $case0|1 - local.get $7 - i32.const 98 - i32.eq - br_if $case1|1 - local.get $7 - i32.const 79 - i32.eq - br_if $case2|1 - local.get $7 - i32.const 111 - i32.eq - br_if $case3|1 - local.get $7 - i32.const 88 - i32.eq - br_if $case4|1 - local.get $7 - i32.const 120 - i32.eq - br_if $case5|1 - br $case6|1 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - br $break|1 - end - i32.const 10 - local.set $1 - end - else - i32.const 10 - local.set $1 - end - else - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - end - i64.const 0 - local.set $8 - block $break|2 - loop $continue|2 - local.get $2 - local.tee $7 - i32.const 1 - i32.sub - local.set $2 - local.get $7 - i32.eqz - br_if $break|2 - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.ge_s - if (result i32) - local.get $5 - i32.const 57 - i32.le_s - else - i32.const 0 - end - if - local.get $5 - i32.const 48 - i32.sub - local.set $5 - else - local.get $5 - i32.const 65 - i32.ge_s - if (result i32) - local.get $5 - i32.const 90 - i32.le_s - else - i32.const 0 - end - if - local.get $5 - i32.const 65 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - local.get $5 - i32.const 97 - i32.ge_s - if (result i32) - local.get $5 - i32.const 122 - i32.le_s - else - i32.const 0 - end - if - local.get $5 - i32.const 97 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - br $break|2 - end - end - end - local.get $5 - local.get $1 - i32.ge_s - if - br $break|2 - end - local.get $8 - local.get $1 - i64.extend_i32_s - i64.mul - local.get $5 - i64.extend_i32_s - i64.add - local.set $8 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $continue|2 - end - unreachable - end - local.get $6 - local.get $8 - i64.mul - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/number/U64.parseInt (; 296 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $assembly/hello/main/__near_ArgsParser_limited_storage#setString (; 297 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3720 - call $~lib/string/String.__eq - if - local.get $0 - local.get $2 - i32.const 0 - call $~lib/number/U64.parseInt - i64.store offset=16 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 298 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $assembly/hello/main/__near_ArgsParser_limited_storage#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 299 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 300 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 301 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_limited_storage#setNull (; 302 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 303 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_limited_storage#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 304 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 305 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/near-runtime-ts/contract/Context#get:storageUsage (; 306 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) - call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_usage - ) - (func $~lib/near-runtime-ts/storage/Storage#delete (; 307 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $2 - i32.load offset=4 - i64.extend_i32_u - i64.const 0 - call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_remove - drop - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/limited_storage (; 308 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.set $1 - block $break|0 - loop $continue|0 - global.get $~lib/near-runtime-ts/contract/context - call $~lib/near-runtime-ts/contract/Context#get:storageUsage - local.get $0 - i64.le_u - i32.eqz - br_if $break|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - global.get $~lib/near-runtime-ts/storage/storage - local.get $1 - call $~lib/number/I32#toString - local.tee $2 - local.get $1 - call $~lib/number/I32#toString - local.tee $3 - call $~lib/near-runtime-ts/storage/Storage#setString - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - br $continue|0 - end - unreachable - end - global.get $~lib/near-runtime-ts/contract/context - call $~lib/near-runtime-ts/contract/Context#get:storageUsage - local.get $0 - i64.gt_u - if - global.get $~lib/near-runtime-ts/storage/storage - local.get $1 - call $~lib/number/I32#toString - local.tee $3 - call $~lib/near-runtime-ts/storage/Storage#delete - local.get $3 - call $~lib/rt/stub/__release - end - local.get $1 - call $~lib/number/I32#toString - ) - (func $assembly/hello/main/__wrapper_limited_storage (; 309 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_limited_storage#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i64.load offset=16 - call $assembly/hello/main/limited_storage - local.set $4 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $5 - local.get $4 - i32.const 0 - call $~lib/string/String.__eq - if - local.get $5 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $5 - local.get $4 - i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - end - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $6 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#constructor (; 310 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 38 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 311 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 39 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 312 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 313 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 314 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 315 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#pushObject (; 316 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 476 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 480 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 317 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 318 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 319 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 320 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 321 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#pushArray (; 322 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 323 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 324 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 325 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 326 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#setInteger (; 327 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 1696 - call $~lib/string/String.__eq - if - local.get $0 - local.get $2 - i32.wrap_i64 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 328 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#setNull (; 329 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 330 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 331 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 332 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/benchmark_sum_n (; 333 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i64) - i32.const 0 - local.set $1 - i64.const 0 - local.set $2 - block $break|0 - loop $continue|0 - local.get $1 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $1 - i64.extend_i32_s - i64.add - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $continue|0 - end - unreachable - end - local.get $2 - call $~lib/number/U64#toString - ) - (func $assembly/hello/main/__wrapper_benchmark_sum_n (; 334 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_benchmark_sum_n#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - call $assembly/hello/main/benchmark_sum_n - local.set $4 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $5 - local.get $4 - i32.const 0 - call $~lib/string/String.__eq - if - local.get $5 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $5 - local.get $4 - i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - end - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $6 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - ) - (func $~lib/near-runtime-ts/logging/logging.log (; 335 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $1 - i32.load offset=4 - i64.extend_i32_u - call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/returnHiWithLogs (; 336 ;) (type $FUNCSIG$i) (result i32) - i32.const 3760 - call $~lib/near-runtime-ts/logging/logging.log - i32.const 3792 - call $~lib/near-runtime-ts/logging/logging.log - i32.const 3824 - call $~lib/rt/stub/__retain - ) - (func $assembly/hello/main/__wrapper_returnHiWithLogs (; 337 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $assembly/hello/main/returnHiWithLogs - local.set $0 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $1 - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - if - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $1 - local.get $0 - i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - end - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $2 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $3 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_testSetRemove#constructor (; 338 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 40 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 339 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 41 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 340 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 341 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 342 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 343 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/main/__near_ArgsParser_testSetRemove#pushObject (; 344 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 561 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 565 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 345 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 346 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 347 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 348 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_testSetRemove#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_testSetRemove#pushArray (; 350 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 351 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_testSetRemove#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_testSetRemove#setString (; 352 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3608 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=12 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 353 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $assembly/hello/main/__near_ArgsParser_testSetRemove#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 354 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 356 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_testSetRemove#setNull (; 357 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3608 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 358 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_testSetRemove#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 359 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 360 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/testSetRemove (; 361 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - global.get $~lib/near-runtime-ts/storage/storage - i32.const 3848 - local.get $0 - call $~lib/near-runtime-ts/storage/Storage#setString - global.get $~lib/near-runtime-ts/storage/storage - i32.const 3848 - call $~lib/near-runtime-ts/storage/Storage#delete - global.get $~lib/near-runtime-ts/storage/storage - i32.const 3848 - call $~lib/near-runtime-ts/storage/Storage#getString - local.tee $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 3872 - i32.const 952 - i32.const 1016 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__wrapper_testSetRemove (; 362 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_testSetRemove#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - call $assembly/hello/main/testSetRemove - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_insertStrings#constructor (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 20 - i32.const 42 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 364 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 43 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 365 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 366 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 367 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 368 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/main/__near_ArgsParser_insertStrings#pushObject (; 369 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 621 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 625 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 370 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 372 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 373 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_insertStrings#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_insertStrings#pushArray (; 375 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 376 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_insertStrings#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 377 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 378 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 379 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_insertStrings#setInteger (; 380 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3928 - call $~lib/string/String.__eq - if - local.get $0 - local.get $2 - i32.wrap_i64 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3952 - call $~lib/string/String.__eq - if - local.get $0 - local.get $2 - i32.wrap_i64 - i32.store offset=16 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 381 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $assembly/hello/main/__near_ArgsParser_insertStrings#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_insertStrings#setNull (; 382 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 383 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_insertStrings#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 384 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 385 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/buildString (; 386 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 0 - i32.ge_s - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 1019 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $1 - block $break|0 - i32.const 20 - local.set $2 - loop $loop|0 - local.get $2 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - local.tee $4 - local.get $1 - local.tee $5 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $5 - call $~lib/rt/stub/__release - end - local.get $4 - local.set $1 - local.get $0 - local.get $2 - i32.shr_s - i32.const 1 - i32.and - if - local.get $1 - i32.const 312 - call $~lib/string/String.__concat - local.tee $4 - local.tee $5 - local.get $1 - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $6 - call $~lib/rt/stub/__release - end - local.get $5 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - ) - (func $~lib/string/String#substr (; 387 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.set $3 - local.get $2 - local.set $4 - local.get $0 - call $~lib/string/String#get:length - local.set $5 - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - local.set $3 - end - local.get $4 - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - local.tee $6 - local.get $5 - local.get $3 - i32.sub - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $8 - local.get $8 - i32.const 0 - i32.le_s - if - i32.const 656 - call $~lib/rt/stub/__retain - return - end - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $9 - local.get $9 - local.get $0 - local.get $3 - i32.add - local.get $8 - call $~lib/memory/memory.copy - local.get $9 - call $~lib/rt/stub/__retain - ) - (func $assembly/hello/main/insertStrings (; 388 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $assembly/hello/main/buildString - local.set $2 - block $break|0 - local.get $0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 - global.get $~lib/near-runtime-ts/storage/storage - local.get $2 - local.get $1 - local.get $3 - i32.sub - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substr - local.tee $4 - i32.const 1648 - call $~lib/string/String.__concat - local.tee $5 - i32.const 3976 - call $~lib/near-runtime-ts/storage/Storage#setString - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__wrapper_insertStrings (; 389 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_insertStrings#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - local.get $3 - i32.load offset=16 - call $assembly/hello/main/insertStrings - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_deleteStrings#constructor (; 390 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 20 - i32.const 44 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 391 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 45 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 392 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 393 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 394 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 395 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/main/__near_ArgsParser_deleteStrings#pushObject (; 396 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 681 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 685 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 397 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 398 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 399 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 400 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 401 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_deleteStrings#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_deleteStrings#pushArray (; 402 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 403 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_deleteStrings#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 404 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 405 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 406 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_deleteStrings#setInteger (; 407 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3928 - call $~lib/string/String.__eq - if - local.get $0 - local.get $2 - i32.wrap_i64 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3952 - call $~lib/string/String.__eq - if - local.get $0 - local.get $2 - i32.wrap_i64 - i32.store offset=16 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 408 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $assembly/hello/main/__near_ArgsParser_deleteStrings#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_deleteStrings#setNull (; 409 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 410 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_deleteStrings#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 411 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 412 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/deleteStrings (; 413 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $assembly/hello/main/buildString - local.set $2 - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $loop|0 - local.get $3 - local.get $0 - i32.ge_s - i32.eqz - br_if $break|0 - global.get $~lib/near-runtime-ts/storage/storage - local.get $2 - local.get $1 - local.get $3 - i32.sub - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substr - local.tee $4 - i32.const 1648 - call $~lib/string/String.__concat - local.tee $5 - call $~lib/near-runtime-ts/storage/Storage#delete - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__wrapper_deleteStrings (; 414 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_deleteStrings#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - local.get $3 - i32.load offset=16 - call $assembly/hello/main/deleteStrings - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_recurse#constructor (; 415 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 46 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 416 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 47 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 417 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 418 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 419 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 420 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/main/__near_ArgsParser_recurse#pushObject (; 421 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 736 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 740 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 422 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 423 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 424 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 425 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 426 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_recurse#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_recurse#pushArray (; 427 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 428 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_recurse#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 429 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 430 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 431 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_recurse#setInteger (; 432 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 1696 - call $~lib/string/String.__eq - if - local.get $0 - local.get $2 - i32.wrap_i64 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 433 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $assembly/hello/main/__near_ArgsParser_recurse#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_recurse#setNull (; 434 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 435 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_recurse#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 436 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 437 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/recurse (; 438 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 0 - i32.le_s - if - local.get $0 - return - end - local.get $0 - i32.const 1 - i32.sub - call $assembly/hello/main/recurse - i32.const 1 - i32.add - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 439 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/number/I64#toString - local.tee $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 440 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/encode (; 441 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $2 - local.get $1 - i64.extend_i32_s - call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger - local.get $0 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__wrapper_recurse (; 442 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_recurse#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - call $assembly/hello/main/recurse - local.set $4 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $5 - local.get $5 - local.get $4 - i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $6 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_callPromise#constructor (; 443 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 48 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 444 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 49 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 445 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 446 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 447 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 448 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/model/PromiseArgs#constructor (; 449 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 36 - i32.const 50 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $0 - i32.const 0 - i32.store offset=28 - local.get $0 - i32.const 0 - i32.store offset=32 - local.get $0 - ) - (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#constructor (; 450 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 51 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 451 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 52 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 452 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 453 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 454 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 455 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#pushObject (; 456 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 4024 - i32.const 77 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 4024 - i32.const 81 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.const 4000 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode - local.set $3 - local.get $2 - i32.load offset=8 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=8 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $1 - i32.const 4088 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode - local.set $2 - local.get $3 - i32.load offset=24 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=24 - i32.const 0 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 457 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 458 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 459 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 460 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 461 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/model/__near_JSONHandler_PromiseArgs#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#pushArray (; 462 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 463 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/model/__near_JSONHandler_PromiseArgs#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#setString (; 464 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 4128 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 4160 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $2 - local.tee $3 - local.get $4 - i32.load offset=4 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 4200 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=20 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=20 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 465 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $assembly/hello/model/__near_JSONHandler_PromiseArgs#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 466 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 467 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#setInteger (; 468 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 4232 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.get $2 - i32.wrap_i64 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 4256 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.get $2 - i32.wrap_i64 - i32.store offset=16 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 4288 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.get $2 - i32.wrap_i64 - i32.store offset=28 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 4336 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.get $2 - i32.wrap_i64 - i32.store offset=32 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 469 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $assembly/hello/model/__near_JSONHandler_PromiseArgs#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/model/__near_JSONHandler_PromiseArgs#setNull (; 470 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 4128 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 4160 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - local.tee $2 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - i32.store offset=4 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 4000 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=8 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 4200 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - local.tee $2 - local.get $3 - i32.load offset=20 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - i32.store offset=20 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 4088 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=24 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=24 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 471 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/model/__near_JSONHandler_PromiseArgs#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 472 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 473 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/model/PromiseArgs#decode (; 474 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.get $0 - call $assembly/hello/model/__near_JSONHandler_PromiseArgs#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $5 - local.get $3 - local.tee $4 - local.get $5 - local.tee $6 - local.get $4 - i32.load offset=4 - local.tee $4 - i32.ne - if - local.get $6 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $6 - i32.store offset=4 - local.get $5 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $0 - call $~lib/rt/stub/__retain - local.set $6 - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/decode (; 475 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - i32.const 0 - call $assembly/hello/model/PromiseArgs#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - local.get $0 - local.get $1 - call $assembly/hello/model/PromiseArgs#decode - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - ) - (func $assembly/hello/main/__near_ArgsParser_callPromise#pushObject (; 476 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 797 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 801 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.const 4000 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode - local.set $3 - local.get $2 - i32.load offset=12 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=12 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 477 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 478 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 479 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 480 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 481 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_callPromise#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_callPromise#pushArray (; 482 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 483 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_callPromise#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 484 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 485 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 486 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 487 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_callPromise#setNull (; 488 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 4000 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 489 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_callPromise#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 490 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 491 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 492 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey - local.get $0 - i32.const 928 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $0 - i32.load - i32.const 1 - call $~lib/array/Array#push - drop - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 493 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 1080 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $0 - i32.load - call $~lib/array/Array#pop - drop - ) - (func $assembly/hello/model/PromiseArgs#encode (; 494 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.ne - if (result i32) - local.get $1 - call $~lib/rt/stub/__retain - else - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - end - local.tee $3 - if (result i32) - local.get $3 - else - unreachable - end - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject - drop - local.get $3 - local.get $0 - i32.load - i32.const 4128 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=4 - i32.const 4160 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=8 - i32.const 4000 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=12 - i32.const 4232 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=16 - i32.const 4256 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=20 - i32.const 4200 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=24 - i32.const 4088 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=28 - i32.const 4288 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=32 - i32.const 4336 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/nearEntry/encode (; 495 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $1 - local.get $0 - local.get $2 - call $assembly/hello/model/PromiseArgs#encode - call $~lib/rt/stub/__release - end - local.get $0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/model/InputPromiseArgs#encode (; 496 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.ne - if (result i32) - local.get $1 - call $~lib/rt/stub/__retain - else - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - end - local.tee $3 - if (result i32) - local.get $3 - else - unreachable - end - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject - drop - local.get $3 - local.get $0 - i32.load - i32.const 4000 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/bignum/integer/u128/u128#constructor (; 497 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i64.store - local.get $0 - local.get $2 - i64.store offset=8 - local.get $0 - ) - (func $~lib/polyfills/bswap (; 498 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.set $1 - local.get $0 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - local.set $3 - local.get $3 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.set $1 - local.get $3 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - i64.const 32 - i64.rotr - return - ) - (func $~lib/bignum/integer/u128/u128#toArrayBufferBE (; 499 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - local.get $0 - i64.load offset=8 - call $~lib/polyfills/bswap - i64.store - local.get $1 - local.get $0 - i64.load - call $~lib/polyfills/bswap - i64.store offset=8 - ) - (func $~lib/bignum/integer/u128/u128#toArrayBufferLE (; 500 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - local.get $0 - i64.load - i64.store - local.get $1 - local.get $0 - i64.load offset=8 - i64.store offset=8 - ) - (func $~lib/bignum/integer/u128/u128#toArrayBuffer (; 501 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/bignum/integer/u128/u128#toArrayBufferBE - else - local.get $0 - local.get $1 - call $~lib/bignum/integer/u128/u128#toArrayBufferLE - end - ) - (func $~lib/near-runtime-ts/contract/ContractPromise.create (; 502 ;) (type $FUNCSIG$iiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $5 - local.get $1 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $6 - local.get $4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - i32.const 16 - call $~lib/typedarray/Uint8Array#constructor - local.set $9 - local.get $9 - i32.load offset=4 - local.set $10 - local.get $7 - local.get $10 - local.get $8 - call $~lib/bignum/integer/u128/u128#toArrayBuffer - local.get $9 - local.set $10 - local.get $5 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $5 - i32.load offset=4 - i64.extend_i32_u - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $6 - i32.load offset=4 - i64.extend_i32_u - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $2 - i32.load offset=4 - i64.extend_i32_u - local.get $10 - i32.load offset=4 - i64.extend_i32_u - local.get $3 - call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_create - local.set $11 - i32.const 8 - i32.const 54 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $9 - local.get $9 - local.get $11 - i64.store - local.get $9 - call $~lib/rt/stub/__retain - local.set $8 - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $8 - ) - (func $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString (; 503 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.get $1 - call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $2 - local.get $1 - local.get $2 - i32.load offset=4 - i64.extend_i32_u - call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register - local.get $2 - call $~lib/near-runtime-ts/util/util.bytesToString - local.tee $3 - if (result i32) - local.get $3 - else - unreachable - end - call $~lib/rt/stub/__retain - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/near-runtime-ts/contract/Context#get:contractName (; 504 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i64.const 0 - call $~lib/near-runtime-ts/runtime_api/runtime_api.current_account_id - local.get $0 - i64.const 0 - call $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString - ) - (func $~lib/near-runtime-ts/contract/ContractPromise#then (; 505 ;) (type $FUNCSIG$iiiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $6 - local.get $2 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $7 - local.get $5 - local.set $8 - i32.const 0 - local.set $9 - i32.const 0 - i32.const 16 - call $~lib/typedarray/Uint8Array#constructor - local.set $10 - local.get $10 - i32.load offset=4 - local.set $11 - local.get $8 - local.get $11 - local.get $9 - call $~lib/bignum/integer/u128/u128#toArrayBuffer - local.get $10 - local.set $11 - local.get $0 - i64.load - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $6 - i32.load offset=4 - i64.extend_i32_u - local.get $7 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $7 - i32.load offset=4 - i64.extend_i32_u - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $3 - i32.load offset=4 - i64.extend_i32_u - local.get $11 - i32.load offset=4 - i64.extend_i32_u - local.get $4 - call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_then - local.set $12 - i32.const 8 - i32.const 54 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $10 - local.get $10 - local.get $12 - i64.store - local.get $10 - call $~lib/rt/stub/__retain - local.set $9 - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $9 - ) - (func $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult (; 506 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i64.load - call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_return - ) - (func $assembly/hello/main/callPromise (; 507 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - i32.const 4 - i32.const 53 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - local.get $0 - i32.load offset=8 - i32.store - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.load offset=16 - i64.extend_i32_s - local.set $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.const 656 - call $assembly/hello/model/InputPromiseArgs#encode - local.tee $4 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.tee $5 - local.get $0 - i32.load offset=12 - i64.extend_i32_s - i32.const 0 - local.get $0 - i32.load offset=16 - i64.extend_i32_s - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $6 - call $~lib/near-runtime-ts/contract/ContractPromise.create - local.set $7 - local.get $0 - i32.load offset=20 - if - local.get $2 - local.tee $8 - local.get $0 - i32.load offset=24 - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/stub/__retain - drop - local.get $8 - call $~lib/rt/stub/__release - end - local.get $9 - i32.store - local.get $0 - i32.load offset=28 - i64.extend_i32_s - local.set $10 - local.get $7 - global.get $~lib/near-runtime-ts/contract/context - call $~lib/near-runtime-ts/contract/Context#get:contractName - local.tee $9 - local.get $0 - i32.load offset=20 - local.get $2 - i32.const 0 - i32.const 656 - call $assembly/hello/model/InputPromiseArgs#encode - local.tee $8 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.tee $11 - local.get $0 - i32.load offset=32 - i64.extend_i32_s - i32.const 0 - local.get $10 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $12 - call $~lib/near-runtime-ts/contract/ContractPromise#then - local.set $13 - local.get $7 - call $~lib/rt/stub/__release - local.get $13 - local.set $7 - local.get $9 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $12 - call $~lib/rt/stub/__release - end - local.get $7 - call $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__wrapper_callPromise (; 508 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_callPromise#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - call $assembly/hello/main/callPromise - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/main/__near_ArgsParser_callbackWithName#constructor (; 509 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 55 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 510 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 56 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 511 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 512 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 513 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 514 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/main/__near_ArgsParser_callbackWithName#pushObject (; 515 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 853 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 857 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.const 4000 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode - local.set $3 - local.get $2 - i32.load offset=12 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=12 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 516 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 517 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 518 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 519 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 520 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_callbackWithName#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/main/__near_ArgsParser_callbackWithName#pushArray (; 521 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 522 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/main/__near_ArgsParser_callbackWithName#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 523 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 524 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 525 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 526 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/hello/main/__near_ArgsParser_callbackWithName#setNull (; 527 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 4000 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 528 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/main/__near_ArgsParser_callbackWithName#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 529 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 530 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> (; 531 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 268435452 - i32.gt_u - if - i32.const 552 - i32.const 1384 - i32.const 45 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 61 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.load offset=4 - i32.const 0 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set (; 532 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $3 - i32.load - local.set $4 - local.get $2 - local.get $4 - i32.ne - if - local.get $3 - local.get $2 - call $~lib/rt/stub/__retain - i32.store - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set (; 533 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $2 - call $~lib/rt/stub/__release - i32.const 1272 - i32.const 1384 - i32.const 121 - i32.const 38 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set - local.get $1 - local.get $3 - i32.ge_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/near-runtime-ts/contract/ContractPromise.getResults (; 534 ;) (type $FUNCSIG$i) (result i32) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_results_count - local.set $0 - local.get $0 - i32.wrap_i64 - call $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> - local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - i64.extend_i32_s - local.get $0 - i64.lt_s - i32.eqz - br_if $break|0 - block $continue|0 - local.get $2 - i64.extend_i32_s - i64.const 0 - call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_result - i32.wrap_i64 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - local.set $4 - local.get $4 - i32.eqz - if - local.get $1 - local.get $2 - i32.const 8 - i32.const 60 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $5 - local.get $5 - local.get $3 - i32.store - local.get $5 - call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set - local.get $5 - call $~lib/rt/stub/__release - br $continue|0 - end - i32.const 0 - i64.const 0 - call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $5 - i64.const 0 - local.get $5 - i32.load offset=4 - i64.extend_i32_u - call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register - local.get $1 - local.get $2 - i32.const 8 - i32.const 60 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $6 - local.get $6 - local.get $3 - i32.store - local.get $6 - local.get $5 - i32.store offset=4 - local.get $6 - call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length (; 535 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array.create (; 536 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 268435452 - i32.gt_u - if - i32.const 552 - i32.const 1384 - i32.const 45 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 59 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.load offset=4 - i32.const 0 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $assembly/hello/model/MyContractPromiseResult#constructor (; 537 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 58 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - ) - (func $~lib/array/Array#__unchecked_set (; 538 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $3 - i32.load - local.set $4 - local.get $2 - local.get $4 - i32.ne - if - local.get $3 - local.get $2 - call $~lib/rt/stub/__retain - i32.store - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/array/Array#__set (; 539 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $2 - call $~lib/rt/stub/__release - i32.const 1272 - i32.const 1384 - i32.const 121 - i32.const 38 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__unchecked_set - local.get $1 - local.get $3 - i32.ge_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get (; 540 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get (; 541 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1272 - i32.const 1384 - i32.const 106 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1384 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get - ) - (func $~lib/array/Array#__unchecked_get (; 542 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array#__get (; 543 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1272 - i32.const 1384 - i32.const 106 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1384 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $assembly/hello/model/MyCallbackResult#constructor (; 544 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 57 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - ) - (func $assembly/hello/model/__near_JSONHandler_MyCallbackResult#constructor (; 545 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 62 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 546 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 63 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 547 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 548 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 549 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 550 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/hello/model/__near_JSONHandler_MyCallbackResult#pushObject (; 551 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 4024 - i32.const 225 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 4024 - i32.const 229 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 552 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 553 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 554 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq i32.eqz if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt + local.get $5 + i32.const 48 i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release + if (result i32) local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return + i32.const 2 + i32.gt_s else - local.get $3 - i32.const 1600 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 555 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 556 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + if + block $break|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $4 + i32.const 2 + i32.add + i32.load16_u + local.set $7 + local.get $7 + i32.const 66 + i32.eq + br_if $case0|1 + local.get $7 + i32.const 98 + i32.eq + br_if $case1|1 + local.get $7 + i32.const 79 + i32.eq + br_if $case2|1 + local.get $7 + i32.const 111 + i32.eq + br_if $case3|1 + local.get $7 + i32.const 88 + i32.eq + br_if $case4|1 + local.get $7 + i32.const 120 + i32.eq + br_if $case5|1 + br $case6|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 + end + i32.const 10 + local.set $1 + end + else + i32.const 10 + local.set $1 + end + else + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/model/__near_JSONHandler_MyCallbackResult#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 + i64.const 0 + local.set $8 + block $break|2 + loop $continue|2 + local.get $2 + local.tee $7 + i32.const 1 + i32.sub + local.set $2 + local.get $7 + i32.eqz + br_if $break|2 + local.get $4 + i32.load16_u + local.set $5 + local.get $5 + i32.const 48 + i32.ge_s + if (result i32) + local.get $5 + i32.const 57 + i32.le_s + else i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 + end + if + local.get $5 + i32.const 48 + i32.sub + local.set $5 + else + local.get $5 + i32.const 65 + i32.ge_s + if (result i32) + local.get $5 + i32.const 90 + i32.le_s + else i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz + end + if + local.get $5 + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + local.get $5 + i32.const 97 + i32.ge_s + if (result i32) + local.get $5 + i32.const 122 + i32.le_s + else + i32.const 0 + end if - i32.const 1128 - i32.const 840 - i32.const 142 + local.get $5 + i32.const 97 i32.const 10 - call $~lib/builtins/abort - unreachable + i32.sub + i32.sub + local.set $5 + else + br $break|2 end - else - i32.const 0 - local.set $3 end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $1 + i32.ge_s + if + br $break|2 + end + local.get $8 + local.get $1 + i64.extend_i32_s + i64.mul + local.get $5 + i64.extend_i32_s + i64.add + local.set $8 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $continue|2 end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/array/Array#constructor (; 557 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 59 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - if - i32.const 1272 - i32.const 1384 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort unreachable - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/nearEntry/ArrayHandler#constructor (; 558 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 64 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 1 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=8 + end + local.get $6 + local.get $8 + i64.mul + local.set $3 local.get $0 + call $~lib/rt/stub/__release local.get $3 + ) + (func $~lib/number/I64.parseInt (; 209 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + local.get $0 call $~lib/rt/stub/__retain - i32.store offset=12 + drop + local.get $0 local.get $1 + call $~lib/util/string/strtol + local.set $2 + local.get $0 call $~lib/rt/stub/__release local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor (; 559 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 210 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop + i32.const 0 + local.set $2 local.get $0 + local.tee $3 i32.eqz - if + if (result i32) + i32.const 0 + else + local.get $3 i32.const 8 - i32.const 65 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/__instanceof end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne if - local.get $3 + local.get $0 call $~lib/rt/stub/__retain - drop + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2496 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar (; 560 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace (; 561 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 else - local.get $1 - i32.const 10 - i32.eq + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 end + local.get $2 + local.tee $6 + i32.eqz if (result i32) - i32.const 1 + i32.const 0 else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 3616 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3824 + call $~lib/string/String.__concat + local.tee $3 + i32.const 3680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2496 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.extend_i32_u + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 - i32.const 13 - i32.eq + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return end + local.get $2 + local.tee $5 + i32.eqz if (result i32) - i32.const 1 + i32.const 0 else - local.get $1 - i32.const 32 - i32.eq + local.get $5 + i32.const 19 + call $~lib/rt/__instanceof end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar (; 562 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s i32.eqz if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 + i32.const 2552 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3848 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2496 + i32.const 521 + i32.const 6 call $~lib/builtins/abort unreachable end + local.get $2 + i32.load + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + i32.const 0 + call $~lib/number/I64.parseInt + local.set $7 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return + ) + (func $~lib/near-runtime-ts/contract/Context#get:storageUsage (; 211 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_usage + ) + (func $~lib/near-runtime-ts/storage/Storage#delete (; 212 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 + i64.extend_i32_u + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_remove + drop + local.get $2 + call $~lib/rt/stub/__release local.get $1 - call $~lib/typedarray/Uint8Array#__get + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace (; 563 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $assembly/hello/main/limited_storage (; 213 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + local.set $1 block $break|0 loop $continue|0 + global.get $~lib/near-runtime-ts/contract/context + call $~lib/near-runtime-ts/contract/Context#get:storageUsage local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace + i64.le_u i32.eqz br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + global.get $~lib/near-runtime-ts/storage/storage + local.get $1 + call $~lib/number/I32#toString + local.tee $2 + local.get $1 + call $~lib/number/I32#toString + local.tee $3 + call $~lib/near-runtime-ts/storage/Storage#setString + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release br $continue|0 end unreachable end - ) - (func $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#constructor (; 564 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 66 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 + global.get $~lib/near-runtime-ts/contract/context + call $~lib/near-runtime-ts/contract/Context#get:storageUsage local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne + i64.gt_u if + global.get $~lib/near-runtime-ts/storage/storage + local.get $1 + call $~lib/number/I32#toString + local.tee $3 + call $~lib/near-runtime-ts/storage/Storage#delete local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 call $~lib/rt/stub/__release end - local.get $3 - i32.store offset=12 local.get $1 - call $~lib/rt/stub/__release - local.get $0 + call $~lib/number/I32#toString ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 565 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/main/__wrapper_limited_storage (; 214 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) (local $2 i32) (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - i32.eqz + i64.const 4294967295 + i64.eq if - i32.const 8 - i32.const 67 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/nearEntry/panic end - local.get $0 i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 local.get $0 - local.tee $2 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 local.get $1 - local.tee $3 - local.get $2 - i32.load + call $~lib/typedarray/Uint8Array#get:buffer local.tee $2 - i32.ne + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 3784 + call $~lib/nearEntry/decode + call $assembly/hello/main/limited_storage + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $4 + i32.const 0 + call $~lib/string/String.__eq if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 + local.get $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release end - local.get $3 - i32.store + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return local.get $1 call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 566 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 567 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 568 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/benchmark_sum_n (; 215 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 569 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $2 i64) + i32.const 0 + local.set $1 + i64.const 0 + local.set $2 block $break|0 loop $continue|0 + local.get $1 local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.lt_s i32.eqz br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop + local.get $2 + local.get $1 + i64.extend_i32_s + i64.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 br $continue|0 end unreachable end + local.get $2 + call $~lib/number/U64#toString ) - (func $~lib/nearEntry/decode (; 570 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/main/__wrapper_benchmark_sum_n (; 216 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end i32.const 0 - call $assembly/hello/model/MyCallbackResult#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 local.get $1 - call $assembly/hello/model/MyCallbackResult#decode + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 1568 + call $~lib/nearEntry/decode + call $assembly/hello/main/benchmark_sum_n + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor local.set $5 + local.get $4 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $0 + local.get $5 + call $~lib/rt/stub/__release + local.get $6 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + ) + (func $~lib/near-runtime-ts/logging/logging.log (; 217 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $1 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $1 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $0 call $~lib/rt/stub/__release - local.get $5 - return ) - (func $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#pushObject (; 571 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/main/returnHiWithLogs (; 218 ;) (type $FUNCSIG$i) (result i32) + i32.const 3992 + call $~lib/near-runtime-ts/logging/logging.log + i32.const 4024 + call $~lib/near-runtime-ts/logging/logging.log + i32.const 4056 + call $~lib/rt/stub/__retain + ) + (func $assembly/hello/main/__wrapper_returnHiWithLogs (; 219 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + call $assembly/hello/main/returnHiWithLogs + local.set $0 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $1 local.get $0 - i32.load8_u offset=8 i32.const 0 - i32.ne - i32.eqz + call $~lib/string/String.__eq if local.get $1 i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 4024 - i32.const 172 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 4024 - i32.const 176 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.const 1744 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $0 - i32.load local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode - local.set $3 - local.get $2 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 i32.const 0 - local.set $3 - local.get $1 + call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release - local.get $3 - return end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 572 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize local.set $2 local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $0 + call $~lib/rt/stub/__release local.get $1 - i32.store - local.get $4 + call $~lib/rt/stub/__release local.get $2 - i32.store offset=4 + call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/testSetRemove (; 220 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 call $~lib/rt/stub/__retain - local.set $4 - local.get $2 + drop + global.get $~lib/near-runtime-ts/storage/storage + i32.const 4080 + local.get $0 + call $~lib/near-runtime-ts/storage/Storage#setString + global.get $~lib/near-runtime-ts/storage/storage + i32.const 4080 + call $~lib/near-runtime-ts/storage/Storage#delete + global.get $~lib/near-runtime-ts/storage/storage + i32.const 4080 + call $~lib/near-runtime-ts/storage/Storage#getString + local.tee $1 i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end + call $~lib/string/String.__eq i32.eqz if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 + i32.const 4104 + i32.const 3520 + i32.const 494 + i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 - local.set $3 - local.get $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 call $~lib/rt/stub/__release - local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 573 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/__wrapper_testSetRemove (; 221 ;) (type $FUNCSIG$v) + (local $0 i64) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1168 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i64.const 4294967295 + i64.eq if - i32.const 1672 - call $~lib/rt/stub/__retain - return + call $~lib/nearEntry/panic end - local.get $1 - i32.const 1696 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 3488 + call $~lib/nearEntry/decode<~lib/string/String> + local.tee $4 + call $assembly/hello/main/testSetRemove local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 call $~lib/rt/stub/__release - local.get $5 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 call $~lib/rt/stub/__release local.get $4 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 574 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/buildString (; 222 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1168 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i32.ge_s i32.eqz if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 + i32.const 0 + i32.const 3520 + i32.const 497 + i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.load offset=4 + i32.const 816 + call $~lib/rt/stub/__retain local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 + block $break|0 + i32.const 20 + local.set $2 + loop $loop|0 local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length i32.const 0 - i32.eq + i32.ge_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $1 + call $~lib/string/String.__concat + local.tee $3 + local.tee $4 + local.get $1 + local.tee $5 + i32.ne if local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release + call $~lib/rt/stub/__retain + drop local.get $5 - return + call $~lib/rt/stub/__release end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + local.set $1 + local.get $0 + local.get $2 + i32.shr_s + i32.const 1 + i32.and if - local.get $0 - i32.load offset=4 - i32.load offset=4 local.get $1 - i32.const 1 - i32.add - i32.gt_s + i32.const 312 + call $~lib/string/String.__concat + local.tee $4 + local.tee $5 + local.get $1 + local.tee $6 + i32.ne if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push + local.get $5 + call $~lib/rt/stub/__retain drop - local.get $4 + local.get $6 call $~lib/rt/stub/__release end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 + local.get $5 local.set $1 local.get $4 call $~lib/rt/stub/__release end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + br $loop|0 end - br $loop|0 + unreachable end - unreachable + local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 575 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 + (func $~lib/string/String#substr (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 - i32.load - call $~lib/rt/stub/__release + local.set $3 local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.set $4 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2000 + call $~lib/string/String#get:length + local.set $5 + local.get $3 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz + i32.lt_s if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $3 + i32.add + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + local.set $3 end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 576 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 + local.get $4 + local.tee $6 i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + local.tee $6 + local.get $5 + local.get $3 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $8 + local.get $8 + i32.const 0 + i32.le_s if - i32.const 0 + i32.const 816 + call $~lib/rt/stub/__retain return end + local.get $8 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $9 + local.get $9 local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end local.get $3 - i32.store - local.get $0 - i32.load + i32.add + local.get $8 + call $~lib/memory/memory.copy + local.get $9 + call $~lib/rt/stub/__retain + ) + (func $assembly/hello/main/insertStrings (; 224 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop + call $assembly/hello/main/buildString + local.set $2 + block $break|0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + i32.eqz + br_if $break|0 + global.get $~lib/near-runtime-ts/storage/storage + local.get $2 + local.get $1 + local.get $3 + i32.sub + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substr + local.tee $4 + i32.const 1520 + call $~lib/string/String.__concat + local.tee $5 + i32.const 4208 + call $~lib/near-runtime-ts/storage/Storage#setString + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + br $loop|0 end + unreachable + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/__wrapper_insertStrings (; 225 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic end + i32.const 0 local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse local.set $3 + local.get $3 + i32.const 4160 + call $~lib/nearEntry/decode + local.get $3 + i32.const 4184 + call $~lib/nearEntry/decode + call $assembly/hello/main/insertStrings local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release ) - (func $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#pushArray (; 577 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/main/deleteStrings (; 226 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + call $assembly/hello/main/buildString local.set $2 - local.get $1 - call $~lib/rt/stub/__release + block $break|0 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + loop $loop|0 + local.get $3 + local.get $0 + i32.ge_s + i32.eqz + br_if $break|0 + global.get $~lib/near-runtime-ts/storage/storage + local.get $2 + local.get $1 + local.get $3 + i32.sub + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substr + local.tee $4 + i32.const 1520 + call $~lib/string/String.__concat + local.tee $5 + call $~lib/near-runtime-ts/storage/Storage#delete + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end local.get $2 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 578 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/__wrapper_deleteStrings (; 227 ;) (type $FUNCSIG$v) + (local $0 i64) (local $1 i32) (local $2 i32) (local $3 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i64.const 4294967295 + i64.eq if - i32.const 0 - return + call $~lib/nearEntry/panic end + i32.const 0 local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor local.set $1 - local.get $0 - i32.load offset=4 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer local.tee $2 - i32.const 656 - local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 4160 + call $~lib/nearEntry/decode + local.get $3 + i32.const 4184 + call $~lib/nearEntry/decode + call $assembly/hello/main/deleteStrings + local.get $1 + call $~lib/rt/stub/__release local.get $2 - i32.load - local.tee $2 - i32.ne + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + ) + (func $assembly/hello/main/recurse (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.le_s if - local.get $3 + local.get $0 + return + end + local.get $0 + i32.const 1 + i32.sub + call $assembly/hello/main/recurse + i32.const 1 + i32.add + ) + (func $~lib/util/number/itoa64 (; 229 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + local.get $0 + i64.eqz + if + i32.const 240 call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + return end - local.get $3 - i32.store local.get $0 - i32.load + i64.const 0 + i64.lt_s + local.set $1 local.get $1 - call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#pushArray if + i64.const 0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop + i64.sub + local.set $0 + end + local.get $0 + i64.const 4294967295 + i64.le_u + if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 + i32.wrap_i64 local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end + local.get $3 + call $~lib/util/number/decimalCount32 + local.get $1 + i32.add + local.set $4 + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + local.set $7 + local.get $3 + local.set $6 + local.get $4 + local.set $5 + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_lut + else local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end + call $~lib/util/number/decimalCount64 + local.get $1 + i32.add + local.set $4 + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + local.set $6 + local.get $0 + local.set $8 + local.get $4 + local.set $5 + local.get $6 + local.get $8 + local.get $5 + call $~lib/util/number/utoa64_lut end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 local.get $1 - call $~lib/rt/stub/__release - local.get $3 + if + local.get $2 + i32.const 45 + i32.store16 + end + local.get $2 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa (; 230 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + local.get $0 + call $~lib/util/number/itoa64 + return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 579 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/I64#toString (; 231 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + call $~lib/util/number/itoa local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 + call $~lib/rt/stub/__retain local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 580 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 232 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) - (local $3 i32) - (local $4 i32) + local.get $0 + local.get $1 + call $~lib/number/I64#toString + local.tee $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 233 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 call $~lib/rt/stub/__retain drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger local.get $1 call $~lib/rt/stub/__release ) - (func $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#setBoolean (; 581 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $~lib/nearEntry/encode (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 call $~lib/rt/stub/__retain drop + local.get $0 + local.get $2 local.get $1 - i32.const 4400 - call $~lib/string/String.__eq + i64.extend_i32_s + call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger + local.get $0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/main/__wrapper_recurse (; 235 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq if - local.get $0 - i32.load offset=12 - local.get $2 - i32.store8 - local.get $1 - call $~lib/rt/stub/__release - return + call $~lib/nearEntry/panic end + i32.const 0 local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 1568 + call $~lib/nearEntry/decode + call $assembly/hello/main/recurse + local.set $4 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $5 + local.get $5 + local.get $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $7 + i64.extend_i32_u + call $~lib/nearEntry/value_return local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 582 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#constructor (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i32.eqz if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#setBoolean - i32.const 1 - return + i32.const 36 + i32.const 25 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#setBoolean - i32.const 1 - return - end + i32.store + local.get $0 i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 583 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 + i32.store offset=4 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end + i32.store offset=8 + local.get $0 i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end + i32.store offset=20 + local.get $0 i32.const 0 + i32.store offset=24 + local.get $0 + i32.const 0 + i32.store offset=28 + local.get $0 + i32.const 0 + i32.store offset=32 + local.get $0 ) - (func $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#setNull (; 584 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/model/PromiseArgs#decode (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop local.get $1 - i32.const 1744 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=4 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=4 - local.get $1 - call $~lib/rt/stub/__release - return - end + call $~lib/rt/stub/__retain + local.set $2 local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 + local.tee $3 + local.get $2 + i32.const 4368 + call $~lib/nearEntry/decode<~lib/string/String> + local.set $4 + local.get $3 + i32.load call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 585 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $4 + i32.store local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 586 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + local.tee $4 + local.get $2 + i32.const 4400 + call $~lib/nearEntry/decode<~lib/string/String> + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.tee $3 + local.get $2 + i32.const 4232 + call $~lib/nearEntry/decode + local.set $4 + local.get $3 + i32.load offset=8 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=8 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 + local.get $2 + i32.const 4440 + call $~lib/nearEntry/decode + i32.store offset=12 + local.get $0 + local.get $2 + i32.const 4464 + call $~lib/nearEntry/decode + i32.store offset=16 + local.get $0 + local.tee $4 + local.get $2 + i32.const 4496 + call $~lib/nearEntry/decode<~lib/string/String> + local.set $3 + local.get $4 + i32.load offset=20 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=20 + local.get $0 + local.tee $3 + local.get $2 + i32.const 4528 + call $~lib/nearEntry/decode + local.set $4 + local.get $3 + i32.load offset=24 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=24 + local.get $0 + local.get $2 + i32.const 4568 + call $~lib/nearEntry/decode + i32.store offset=28 + local.get $0 + local.get $2 + i32.const 4616 + call $~lib/nearEntry/decode + i32.store offset=32 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 587 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/decode (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 call $~lib/rt/stub/__retain drop - local.get $2 + local.get $1 call $~lib/rt/stub/__retain drop - local.get $2 i32.const 0 - i32.ne + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2496 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 - local.tee $4 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 local.get $3 - i32.load offset=4 - local.tee $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 i32.ne if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 3616 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4256 + call $~lib/string/String.__concat + local.tee $3 + i32.const 3680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2496 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release local.get $4 - i32.load offset=4 call $~lib/rt/stub/__release local.get $3 - i32.store offset=4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue i32.const 0 - i32.ne + local.set $8 + local.get $2 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end i32.eqz if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 + i32.const 2552 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 4296 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2496 + i32.const 543 + i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/hello/model/MyContractPromiseResult#decode (; 588 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.get $0 - call $assembly/hello/model/__near_JSONHandler_MyContractPromiseResult#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $5 - local.get $3 + call $assembly/hello/model/PromiseArgs#constructor local.tee $4 - local.get $5 + local.tee $7 + local.get $8 local.tee $6 - local.get $4 - i32.load offset=4 - local.tee $4 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $6 call $~lib/rt/stub/__release end - local.get $6 - i32.store offset=4 - local.get $5 - local.get $1 + local.get $7 + local.set $8 + local.get $8 + local.get $2 + call $assembly/hello/model/PromiseArgs#decode + local.set $7 local.get $2 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $0 - call $~lib/rt/stub/__retain - local.set $6 - local.get $3 call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $8 call $~lib/rt/stub/__release - local.get $6 + local.get $7 ) - (func $~lib/nearEntry/decode (; 589 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 - i32.const 0 - call $assembly/hello/model/MyContractPromiseResult#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 local.get $0 local.get $1 - call $assembly/hello/model/MyContractPromiseResult#decode - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey local.get $0 - call $~lib/rt/stub/__release + i32.const 1088 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop + i32.const 1 + local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return ) - (func $~lib/array/Array#push (; 590 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 240 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 1160 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + call $~lib/array/Array#pop + drop + ) + (func $assembly/hello/model/PromiseArgs#encode (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - i32.load offset=12 - local.set $2 local.get $2 - i32.const 1 - i32.add + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.ne + if (result i32) + local.get $1 + call $~lib/rt/stub/__retain + else + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + end + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end + call $~lib/rt/stub/__retain local.set $3 - local.get $0 local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop local.get $3 - i32.store offset=12 + local.get $0 + i32.load + i32.const 4368 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release local.get $3 - local.set $4 - local.get $1 + local.get $0 + i32.load offset=4 + i32.const 4400 + call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/nearEntry/ArrayHandler#pushObject (; 591 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + local.get $3 local.get $0 i32.load offset=8 - call $~lib/rt/stub/__retain - local.set $2 + i32.const 4232 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 local.get $0 i32.load offset=12 - call $~lib/rt/stub/__retain - local.set $3 - local.get $2 + i32.const 4440 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=16 + i32.const 4464 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=20 + i32.const 4496 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release local.get $3 - call $~lib/nearEntry/decode - local.set $4 local.get $0 - i32.load offset=4 - local.get $4 - call $~lib/array/Array#push - drop - i32.const 0 - local.set $5 - local.get $2 + i32.load offset=24 + i32.const 4528 + call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 + local.get $0 + i32.load offset=28 + i32.const 4568 + call $~lib/nearEntry/encode call $~lib/rt/stub/__release - local.get $4 + local.get $3 + local.get $0 + i32.load offset=32 + i32.const 4616 + call $~lib/nearEntry/encode call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 local.get $1 call $~lib/rt/stub/__release - local.get $5 - return + local.get $2 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit (; 592 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/nearEntry/encode (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $1 + call $~lib/rt/stub/__retain + drop local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 + call $~lib/rt/stub/__retain + drop local.get $2 - i32.const 9 - i32.gt_s + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 + local.get $0 local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end + call $assembly/hello/model/PromiseArgs#encode + call $~lib/rt/stub/__release end - i32.const 2 - i32.const 2 - i32.const 13 - i32.const 0 - call $~lib/rt/__allocArray + local.get $0 local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 local.get $1 - i32.store - local.get $4 + call $~lib/rt/stub/__release local.get $2 - i32.store offset=4 + call $~lib/rt/stub/__release local.get $3 + ) + (func $assembly/hello/model/InputPromiseArgs#encode (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 call $~lib/rt/stub/__retain - local.set $4 + drop local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 i32.const 0 - i32.ge_s + i32.ne if (result i32) - local.get $2 - i32.const 16 - i32.lt_s + local.get $1 + call $~lib/rt/stub/__retain else i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor end - i32.eqz - if - i32.const 1864 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort + local.tee $3 + if (result i32) + local.get $3 + else unreachable end - local.get $2 + call $~lib/rt/stub/__retain local.set $3 - local.get $4 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 4232 + call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar (; 593 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/bignum/integer/u128/u128#constructor (; 244 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $1 - local.get $1 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i32.eqz if - i32.const 1168 + i32.const 16 + i32.const 5 + call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain - return + local.set $0 end + local.get $0 local.get $1 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1600 - call $~lib/rt/stub/__retain - return - end + i64.store + local.get $0 + local.get $2 + i64.store offset=8 + local.get $0 + ) + (func $~lib/polyfills/bswap (; 245 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (local $1 i64) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $1 + local.get $0 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $2 local.get $1 - i32.const 1624 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1624 - call $~lib/rt/stub/__retain - return - end + local.get $2 + i64.or + local.set $3 + local.get $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $1 + local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $2 local.get $1 - i32.const 1648 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1672 - call $~lib/rt/stub/__retain - return - end + local.get $2 + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/bignum/integer/u128/u128#toArrayBufferBE (; 246 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1720 - call $~lib/rt/stub/__retain - return - end + local.get $0 + i64.load offset=8 + call $~lib/polyfills/bswap + i64.store local.get $1 - i32.const 1744 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1768 - call $~lib/rt/stub/__retain - return - end + local.get $0 + i64.load + call $~lib/polyfills/bswap + i64.store offset=8 + ) + (func $~lib/bignum/integer/u128/u128#toArrayBufferLE (; 247 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1816 - call $~lib/rt/stub/__retain - return - end + local.get $0 + i64.load + i64.store local.get $1 - i32.const 1840 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + local.get $0 + i64.load offset=8 + i64.store offset=8 + ) + (func $~lib/bignum/integer/u128/u128#toArrayBuffer (; 248 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $2 if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $4 + local.get $1 + call $~lib/bignum/integer/u128/u128#toArrayBufferBE + else local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1920 - i32.const 1 - global.set $~lib/argc local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable + call $~lib/bignum/integer/u128/u128#toArrayBufferLE end - i32.const 656 + ) + (func $~lib/near-runtime-ts/contract/ContractPromise.create (; 249 ;) (type $FUNCSIG$iiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + local.get $0 call $~lib/rt/stub/__retain - local.set $4 + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $5 + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $6 + local.get $4 + local.set $7 + i32.const 0 + local.set $8 + i32.const 0 + i32.const 16 + call $~lib/typedarray/Uint8Array#constructor + local.set $9 + local.get $9 + i32.load offset=4 + local.set $10 + local.get $7 + local.get $10 + local.get $8 + call $~lib/bignum/integer/u128/u128#toArrayBuffer + local.get $9 + local.set $10 + local.get $5 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $5 + i32.load offset=4 + i64.extend_i32_u local.get $6 - call $~lib/rt/stub/__release + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + i32.load offset=4 + i64.extend_i32_u + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + i32.load offset=4 + i64.extend_i32_u + local.get $10 + i32.load offset=4 + i64.extend_i32_u + local.get $3 + call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_create + local.set $11 + i32.const 8 + i32.const 27 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $9 + local.get $9 + local.get $11 + i64.store + local.get $9 + call $~lib/rt/stub/__retain + local.set $8 local.get $5 call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $4 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString (; 594 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString (; 250 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1192 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor + local.get $1 + call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1432 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1600 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 + local.get $1 + local.get $2 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register + local.get $2 + call $~lib/near-runtime-ts/util/util.bytesToString + local.tee $3 + if (result i32) + local.get $3 + else + unreachable end - unreachable + call $~lib/rt/stub/__retain + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey (; 595 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + (func $~lib/near-runtime-ts/contract/Context#get:contractName (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.current_account_id local.get $0 + i64.const 0 + call $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString + ) + (func $~lib/near-runtime-ts/contract/ContractPromise#then (; 252 ;) (type $FUNCSIG$iiiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $6 + local.get $2 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $7 + local.get $5 + local.set $8 + i32.const 0 + local.set $9 + i32.const 0 + i32.const 16 + call $~lib/typedarray/Uint8Array#constructor + local.set $10 + local.get $10 i32.load offset=4 - local.tee $1 + local.set $11 + local.get $8 + local.get $11 + local.get $9 + call $~lib/bignum/integer/u128/u128#toArrayBuffer + local.get $10 + local.set $11 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString - local.set $2 + i64.load + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $6 + i32.load offset=4 + i64.extend_i32_u + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $7 + i32.load offset=4 + i64.extend_i32_u + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $3 + i32.load offset=4 + i64.extend_i32_u + local.get $11 + i32.load offset=4 + i64.extend_i32_u + local.get $4 + call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_then + local.set $12 + i32.const 8 + i32.const 27 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $10 + local.get $10 + local.get $12 + i64.store + local.get $10 + call $~lib/rt/stub/__retain + local.set $9 + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $11 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release local.get $1 - i32.load call $~lib/rt/stub/__release local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $9 + ) + (func $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult (; 253 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 2000 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2024 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + i64.load + call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject (; 596 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/callPromise (; 254 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i32) + (local $13 i32) local.get $0 - i32.load offset=4 - i32.load + call $~lib/rt/stub/__retain + drop + i32.const 4 + i32.const 26 + call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $1 + local.get $1 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 + i32.load offset=8 i32.store + local.get $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.load offset=16 + i64.extend_i32_s + local.set $3 local.get $0 i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler#pushObject + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 0 + i32.const 816 + call $assembly/hello/model/InputPromiseArgs#encode + local.tee $4 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.tee $5 + local.get $0 + i32.load offset=12 + i64.extend_i32_s + i32.const 0 + local.get $0 + i32.load offset=16 + i64.extend_i32_s + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $6 + call $~lib/near-runtime-ts/contract/ContractPromise.create + local.set $7 + local.get $0 + i32.load offset=20 if + local.get $2 + local.tee $8 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 1080 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - drop - br $continue|0 - end - unreachable + i32.load offset=24 + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release end + local.get $9 + i32.store + local.get $0 + i32.load offset=28 + i64.extend_i32_s + local.set $10 + local.get $7 + global.get $~lib/near-runtime-ts/contract/context + call $~lib/near-runtime-ts/contract/Context#get:contractName + local.tee $9 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1080 + i32.load offset=20 + local.get $2 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2064 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end + i32.const 816 + call $assembly/hello/model/InputPromiseArgs#encode + local.tee $8 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.tee $11 + local.get $0 + i32.load offset=32 + i64.extend_i32_s + i32.const 0 + local.get $10 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $12 + call $~lib/near-runtime-ts/contract/ContractPromise#then + local.set $13 + local.get $7 + call $~lib/rt/stub/__release + local.get $13 + local.set $7 + local.get $9 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $11 + call $~lib/rt/stub/__release + local.get $12 + call $~lib/rt/stub/__release end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 + local.get $7 + call $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/ArrayHandler#pushArray (; 597 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/main/__wrapper_callPromise (; 255 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + (local $3 i32) + (local $4 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - i32.load8_u + i64.const 4294967295 + i64.eq if - local.get $0 - i32.const 0 - i32.store8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + call $~lib/nearEntry/panic end - local.get $1 i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 4424 - i32.const 4480 - i32.const 276 - i32.const 4 - call $~lib/builtins/abort - unreachable - end local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 4232 + call $~lib/nearEntry/decode + local.tee $4 + call $assembly/hello/main/callPromise local.get $1 call $~lib/rt/stub/__release local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray (; 598 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i32.const 268435452 + i32.gt_u if - i32.const 0 - return + i32.const 552 + i32.const 768 + i32.const 45 + i32.const 61 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load offset=4 - i32.load + i32.const 2 + i32.const 32 + i32.const 0 + call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.set $1 - local.get $0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 + i32.const 0 + local.get $1 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set (; 257 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $3 + local.get $3 i32.load - local.tee $2 + local.set $4 + local.get $2 + local.get $4 i32.ne if local.get $3 - call $~lib/rt/stub/__retain - drop local.get $2 + call $~lib/rt/stub/__retain + i32.store + local.get $4 call $~lib/rt/stub/__release end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2240 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 + local.get $2 call $~lib/rt/stub/__release - local.get $3 ) - (func $~lib/nearEntry/ArrayHandler#setString (; 599 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set (; 258 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop local.get $2 call $~lib/rt/stub/__retain drop - i32.const 0 + local.get $0 + i32.load offset=12 local.set $3 + local.get $1 + local.get $3 + i32.gt_u + if + local.get $2 + call $~lib/rt/stub/__release + i32.const 656 + i32.const 768 + i32.const 121 + i32.const 38 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 local.get $1 - call $~lib/rt/stub/__release local.get $2 - call $~lib/rt/stub/__release + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set + local.get $1 local.get $3 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString (; 600 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i32.ge_s if - i32.const 0 - return + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString - local.tee $1 - call $~lib/nearEntry/ArrayHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release local.get $2 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert (; 601 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/near-runtime-ts/contract/ContractPromise.getResults (; 259 ;) (type $FUNCSIG$i) (result i32) + (local $0 i64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + (local $5 i32) + (local $6 i32) + call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_results_count + local.set $0 + local.get $0 + i32.wrap_i64 + call $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> + local.set $1 block $break|0 i32.const 0 local.set $2 loop $loop|0 local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt + i64.extend_i32_s local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.eq + i64.lt_s i32.eqz - if - i32.const 2416 + br_if $break|0 + block $continue|0 + local.get $2 + i64.extend_i32_s + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_result + i32.wrap_i64 + local.set $3 + local.get $3 + i32.const 1 + i32.eq + local.set $4 + local.get $4 + i32.eqz + if + local.get $1 + local.get $2 + i32.const 8 + i32.const 31 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $5 + local.get $5 + local.get $3 + i32.store + local.get $5 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set + local.get $5 + call $~lib/rt/stub/__release + br $continue|0 + end + i32.const 0 + i64.const 0 + call $~lib/near-runtime-ts/runtime_api/runtime_api.register_len + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $5 + i64.const 0 + local.get $5 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.read_register local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 8 + i32.const 31 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $6 + local.get $6 + local.get $3 + i32.store + local.get $6 + local.get $5 + i32.store offset=4 + local.get $6 + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set end local.get $2 i32.const 1 i32.add local.set $2 - local.get $3 + local.get $5 call $~lib/rt/stub/__release - local.get $4 + local.get $6 call $~lib/rt/stub/__release br $loop|0 end unreachable end local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler#setBoolean (; 602 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean (; 603 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/nearEntry/ArrayHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/nearEntry/ArrayHandler#setBoolean - i32.const 1 - return - end - i32.const 0 ) - (func $~lib/nearEntry/ArrayHandler#setInteger (; 604 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release + i32.load offset=12 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber (; 605 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 + (func $~lib/array/Array.create (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s + i32.const 268435452 + i32.gt_u if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/nearEntry/ArrayHandler#setInteger - i32.const 1 - return + i32.const 552 + i32.const 768 + i32.const 45 + i32.const 61 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 2 + i32.const 30 i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler#setNull (; 606 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 + call $~lib/rt/__allocArray call $~lib/rt/stub/__retain - drop - local.get $0 + local.set $1 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + i32.const 0 + i32.store offset=12 + local.get $1 + i32.load offset=4 + i32.const 0 + local.get $1 + i32.load offset=8 + call $~lib/memory/memory.fill local.get $1 - call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull (; 607 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#constructor (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i32.eqz if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $~lib/nearEntry/ArrayHandler#setNull - i32.const 1 - return + i32.const 8 + i32.const 29 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue (; 608 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace + i32.const 0 + i32.store8 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull - end - local.set $1 + i32.const 0 + i32.store offset=4 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize (; 609 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 263 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop local.get $2 call $~lib/rt/stub/__retain drop + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $3 + local.get $3 + i32.load + local.set $4 local.get $2 - i32.const 0 + local.get $4 i32.ne if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 + local.get $2 + call $~lib/rt/stub/__retain + i32.store local.get $4 - i32.load offset=4 call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array#__set (; 264 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/stub/__retain + drop local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - i32.const 0 - i32.ne - i32.eqz + i32.load offset=12 + local.set $3 + local.get $1 + local.get $3 + i32.gt_u if - i32.const 3176 - i32.const 840 - i32.const 100 - i32.const 4 + local.get $2 + call $~lib/rt/stub/__release + i32.const 656 + i32.const 768 + i32.const 121 + i32.const 38 call $~lib/builtins/abort unreachable end + local.get $0 local.get $1 - call $~lib/rt/stub/__release + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + local.get $1 + local.get $3 + i32.ge_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> (; 610 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain - drop + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.tee $2 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.get $3 + ) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/nearEntry/ArrayHandler#constructor - local.set $4 - i32.const 0 - local.get $4 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor - local.set $5 - local.get $5 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize - local.get $3 - local.set $6 - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get + ) + (func $~lib/array/Array#__unchecked_get (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/rt/stub/__release + i32.load offset=4 local.get $1 - call $~lib/rt/stub/__release - local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 611 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/Array#__get (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/rt/stub/__retain - drop local.get $1 - call $~lib/rt/stub/__retain - drop + call $~lib/array/Array#__unchecked_get + ) + (func $assembly/hello/model/MyCallbackResult#constructor (; 269 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 28 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 i32.const 0 - local.set $2 + i32.store local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> - local.set $3 + i32.const 0 + i32.store offset=4 local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - return ) - (func $assembly/hello/model/__near_JSONHandler_MyCallbackResult#pushArray (; 612 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/Array#constructor (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 30 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end local.get $1 - call $~lib/rt/stub/__retain - drop + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 local.get $1 - i32.const 4376 - call $~lib/string/String.__eq if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/array/Array> - local.set $3 - local.get $2 - i32.load - call $~lib/rt/stub/__release - local.get $3 - i32.store - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable end local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 + i32.store offset=12 + local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 613 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decode (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2128 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load call $~lib/rt/stub/__retain - local.set $1 + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if + i32.eqz + if (result i32) + i32.const 0 + else local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + i32.const 8 + call $~lib/rt/__instanceof end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/hello/model/__near_JSONHandler_MyCallbackResult#pushArray if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 + call $~lib/rt/stub/__retain local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1104 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1128 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2216 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 i32.const 0 - call $~lib/string/String#charCodeAt i32.eq - i32.eqz if - i32.const 2240 - i32.const 840 - i32.const 182 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2496 + i32.const 497 i32.const 6 call $~lib/builtins/abort unreachable end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/hello/model/__near_JSONHandler_MyCallbackResult#setString (; 614 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 1696 - call $~lib/string/String.__eq - if + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else local.get $0 - i32.load offset=12 - local.tee $3 + local.tee $6 local.get $2 local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 i32.ne if - local.get $4 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $3 + local.get $4 call $~lib/rt/stub/__release end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 3616 + call $~lib/string/String.__concat + local.tee $4 + i32.const 5032 + call $~lib/string/String.__concat + local.tee $3 + i32.const 3680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2496 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $7 + local.get $6 + call $~lib/rt/stub/__release local.get $4 - i32.store offset=4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release + local.get $7 return end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 615 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1168 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if + local.tee $5 + i32.eqz + if (result i32) i32.const 0 - return + else + local.get $5 + i32.const 20 + call $~lib/rt/__instanceof end + i32.eqz + if + i32.const 2552 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 5056 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2496 + i32.const 513 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load8_u + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $assembly/hello/model/__near_JSONHandler_MyCallbackResult#setString - i32.const 1 - local.set $2 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 616 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/decode (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop - block $break|0 + i32.const 0 + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end + if + local.get $0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release local.get $2 - i32.const 1 - i32.add - local.set $2 + call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - br $loop|0 + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2496 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 617 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 618 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2568 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release end - unreachable + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof end - local.get $3 - i32.const 0 - i32.gt_s if + i32.const 0 + i32.eqz + if + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 3616 + call $~lib/string/String.__concat + local.tee $4 + i32.const 5104 + call $~lib/string/String.__concat + local.tee $3 + i32.const 3680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2496 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load + call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 + local.set $8 + local.get $2 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2552 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 4296 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2496 + i32.const 543 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $assembly/hello/model/MyCallbackResult#constructor + local.tee $4 + local.tee $7 + local.get $8 + local.tee $6 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $8 + local.get $8 + local.get $2 + call $assembly/hello/model/MyCallbackResult#decode + local.set $7 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 ) - (func $assembly/hello/model/__near_JSONHandler_MyCallbackResult#setNull (; 619 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/model/MyContractPromiseResult#decode (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop local.get $1 - i32.const 4376 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $2 + i32.const 5008 + call $~lib/nearEntry/decode + i32.store8 + local.get $0 + local.tee $3 + local.get $2 + i32.const 1616 + call $~lib/nearEntry/decode + local.set $4 + local.get $3 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=4 + local.get $0 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/decode (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if local.get $0 - i32.load offset=12 - local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 i32.const 0 - local.tee $3 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2496 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 - i32.load - local.tee $2 + local.tee $6 i32.ne if - local.get $3 + local.get $5 call $~lib/rt/stub/__retain drop - local.get $2 + local.get $6 call $~lib/rt/stub/__release end + local.get $5 + local.set $2 local.get $3 - i32.store + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 3616 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4944 + call $~lib/string/String.__concat + local.tee $3 + i32.const 3680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2496 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 return end - local.get $1 - i32.const 1696 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 + i32.const 0 + local.set $8 + local.get $2 + local.tee $5 + i32.eqz + if (result i32) i32.const 0 - local.tee $2 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - i32.store offset=4 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2552 local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 4296 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2496 + i32.const 543 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $assembly/hello/model/MyContractPromiseResult#constructor + local.tee $4 + local.tee $7 + local.get $8 + local.tee $6 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $6 call $~lib/rt/stub/__release - return end + local.get $7 + local.set $8 + local.get $8 + local.get $2 + call $assembly/hello/model/MyContractPromiseResult#decode + local.set $7 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $0 + call $~lib/rt/stub/__release local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 620 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#push (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/hello/model/__near_JSONHandler_MyCallbackResult#setNull - i32.const 1 - return - end - i32.const 0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 621 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decodeArray (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 + local.tee $2 + i32.eqz if (result i32) - local.get $1 + i32.const 0 else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof end - local.tee $1 - if (result i32) + i32.eqz + if + i32.const 2552 local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + call $~lib/string/String.__concat + local.tee $2 + i32.const 4872 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2496 + i32.const 478 + i32.const 2 + call $~lib/builtins/abort + unreachable end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $4 + local.get $0 + i32.load + call $~lib/rt/stub/__retain + local.set $5 + block $break|0 + i32.const 0 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable end - local.set $1 + local.get $4 + local.set $8 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 622 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 call $~lib/rt/stub/__retain drop - local.get $2 + local.get $1 call $~lib/rt/stub/__retain drop - local.get $2 i32.const 0 - i32.ne + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2456 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2496 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $5 call $~lib/rt/stub/__retain drop - local.get $3 + local.get $6 call $~lib/rt/stub/__release end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release local.get $4 - i32.store offset=4 + call $~lib/rt/stub/__release else local.get $0 + local.tee $6 + local.get $2 local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2424 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 3616 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4680 + call $~lib/string/String.__concat + local.tee $3 + i32.const 3680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2496 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release local.get $4 - i32.load offset=4 call $~lib/rt/stub/__release local.get $3 - i32.store offset=4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue i32.const 0 - i32.ne + local.set $8 + i32.const 0 i32.eqz if - i32.const 3176 - i32.const 840 - i32.const 100 + i32.const 2552 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 4800 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2496 + i32.const 539 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/nearEntry/decodeArray + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $assembly/hello/model/MyCallbackResult#decode (; 623 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#decode (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $2 + local.get $1 call $~lib/rt/stub/__retain - drop - i32.const 0 + local.set $2 local.get $0 - call $assembly/hello/model/__near_JSONHandler_MyCallbackResult#constructor - local.set $3 + local.tee $3 + local.get $2 + i32.const 4656 + call $~lib/nearEntry/decode<~lib/array/Array> + local.set $4 local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 + call $~lib/rt/stub/__release + local.get $4 i32.store - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $5 - local.get $3 + local.get $0 local.tee $4 - local.get $5 - local.tee $6 + local.get $2 + i32.const 1568 + call $~lib/nearEntry/decode<~lib/string/String> + local.set $3 local.get $4 i32.load offset=4 - local.tee $4 - i32.ne - if - local.get $6 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $6 + call $~lib/rt/stub/__release + local.get $3 i32.store offset=4 - local.get $5 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize local.get $0 call $~lib/rt/stub/__retain - local.set $6 - local.get $3 - call $~lib/rt/stub/__release - local.get $5 + local.set $3 + local.get $2 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $6 + local.get $3 ) - (func $assembly/hello/model/MyCallbackResult.decode (; 624 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult.decode (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop - local.get $1 - call $~lib/rt/stub/__retain - drop i32.const 0 call $assembly/hello/model/MyCallbackResult#constructor - local.tee $2 + local.tee $1 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $0 - local.get $1 + call $~lib/nearEntry/JSON.parse + local.tee $3 call $assembly/hello/model/MyCallbackResult#decode call $~lib/rt/stub/__release - local.get $3 - local.set $4 local.get $2 + local.set $4 + local.get $1 call $~lib/rt/stub/__release - local.get $0 + local.get $3 call $~lib/rt/stub/__release - local.get $1 + local.get $0 call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#get:length (; 625 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 280 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 626 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 281 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -32808,7 +13629,7 @@ end call $~lib/assemblyscript-json/encoder/JSONEncoder#write ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 627 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 282 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -32821,7 +13642,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 628 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -32839,7 +13660,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 629 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -32872,7 +13693,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/model/MyContractPromiseResult#encode (; 630 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#encode (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -32906,13 +13727,13 @@ local.get $3 local.get $0 i32.load8_u - i32.const 4400 + i32.const 5008 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=4 - i32.const 1744 + i32.const 1616 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 @@ -32925,7 +13746,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 631 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -32958,7 +13779,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 632 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -33021,7 +13842,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/hello/model/MyCallbackResult#encode (; 633 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#encode (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -33055,13 +13876,13 @@ local.get $3 local.get $0 i32.load - i32.const 4376 + i32.const 4656 call $~lib/nearEntry/encode<~lib/array/Array> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=4 - i32.const 1696 + i32.const 1568 call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release local.get $3 @@ -33074,7 +13895,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/near-runtime-ts/storage/Storage#setBytes (; 634 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/near-runtime-ts/storage/Storage#setBytes (; 289 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) local.get $1 @@ -33108,7 +13929,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/callbackWithName (; 635 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/callbackWithName (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -33204,7 +14025,6 @@ call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get local.tee $8 i32.load offset=4 - i32.const 0 call $assembly/hello/model/MyCallbackResult.decode local.set $11 local.get $10 @@ -33234,7 +14054,7 @@ unreachable end i32.const 8 - i32.const 57 + i32.const 28 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $7 @@ -33251,13 +14071,13 @@ local.set $5 local.get $5 i32.const 0 - i32.const 656 + i32.const 816 call $assembly/hello/model/MyCallbackResult#encode local.tee $4 call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize local.set $3 global.get $~lib/near-runtime-ts/storage/storage - i32.const 4536 + i32.const 5152 local.get $3 call $~lib/near-runtime-ts/storage/Storage#setBytes local.get $5 @@ -33278,7 +14098,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $assembly/hello/main/__wrapper_callbackWithName (; 636 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_callbackWithName (; 291 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -33287,6 +14107,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i64.const 0 call $~lib/nearEntry/input i64.const 0 @@ -33309,63 +14130,32 @@ local.tee $2 i64.extend_i32_u call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/hello/main/__near_ArgsParser_callbackWithName#constructor + local.get $1 + call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 + i32.const 4232 + call $~lib/nearEntry/decode local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 call $assembly/hello/main/callbackWithName - local.set $4 + local.set $5 i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $5 + local.set $6 + local.get $6 local.get $5 - local.get $4 i32.const 0 call $~lib/nearEntry/encode call $~lib/rt/stub/__release - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i64.extend_i32_s - local.get $6 + local.get $7 call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 + local.tee $8 i64.extend_i32_u call $~lib/nearEntry/value_return local.get $1 @@ -33382,8 +14172,10 @@ call $~lib/rt/stub/__release local.get $7 call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/storage/Storage#getBytes (; 637 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#getBytes (; 292 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -33396,21 +14188,20 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/getLastResult (; 638 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/getLastResult (; 293 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) global.get $~lib/near-runtime-ts/storage/storage - i32.const 4536 + i32.const 5152 call $~lib/near-runtime-ts/storage/Storage#getBytes local.tee $0 - i32.const 0 call $assembly/hello/model/MyCallbackResult.decode local.set $1 local.get $0 call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/hello/main/__wrapper_getLastResult (; 639 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getLastResult (; 294 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -33445,34 +14236,34 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/generateLogs (; 640 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/generateLogs (; 295 ;) (type $FUNCSIG$v) global.get $~lib/near-runtime-ts/storage/storage - i32.const 4576 - i32.const 3608 + i32.const 5192 + i32.const 3488 call $~lib/near-runtime-ts/storage/Storage#setString - i32.const 4600 + i32.const 5216 call $~lib/near-runtime-ts/logging/logging.log - i32.const 4624 + i32.const 5240 call $~lib/near-runtime-ts/logging/logging.log ) - (func $assembly/hello/main/triggerAssert (; 641 ;) (type $FUNCSIG$v) - i32.const 4648 + (func $assembly/hello/main/triggerAssert (; 296 ;) (type $FUNCSIG$v) + i32.const 5264 call $~lib/near-runtime-ts/logging/logging.log i32.const 0 i32.eqz if - i32.const 4704 - i32.const 952 - i32.const 1011 + i32.const 5320 + i32.const 3520 + i32.const 489 i32.const 2 call $~lib/builtins/abort unreachable end ) - (func $start (; 642 ;) (type $FUNCSIG$v) + (func $start (; 297 ;) (type $FUNCSIG$v) call $start:~lib/rt/index-stub call $start:~lib/nearEntry ) - (func $null (; 643 ;) (type $FUNCSIG$v) + (func $null (; 298 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/near-bindgen/out/test.wat b/tests/near-bindgen/out/test.wat index 06a180d834..0f222a1906 100644 --- a/tests/near-bindgen/out/test.wat +++ b/tests/near-bindgen/out/test.wat @@ -9,19 +9,18 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vjj (func (param i64 i64))) + (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$viij (func (param i32 i32 i64))) (type $FUNCSIG$ij (func (param i64) (result i32))) - (type $FUNCSIG$viji (func (param i32 i64 i32))) - (type $FUNCSIG$iijj (func (param i32 i64 i64) (result i32))) - (type $FUNCSIG$vijjjj (func (param i32 i64 i64 i64 i64))) - (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) + (type $FUNCSIG$iijj (func (param i32 i64 i64) (result i32))) (type $FUNCSIG$vij (func (param i32 i64))) + (type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) - (type $FUNCSIG$i (func (result i32))) (import "env" "input" (func $~lib/nearEntry/input (param i64))) (import "env" "register_len" (func $~lib/nearEntry/register_len (param i64) (result i64))) (import "env" "panic" (func $~lib/nearEntry/panic)) @@ -47,109 +46,130 @@ (data (i32.const 392) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00+\00/\00") (data (i32.const 536) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") (data (i32.const 584) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 640) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 656) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 712) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 768) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00i\00n\00p\00u\00t\00 \00e\00n\00d\00") - (data (i32.const 824) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00d\00e\00c\00o\00d\00e\00r\00.\00t\00s\00") - (data (i32.const 912) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00{\00") - (data (i32.const 936) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00t\00e\00s\00t\00.\00t\00s\00") - (data (i32.const 984) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00o\00b\00j\00e\00c\00t\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 1048) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00}\00") - (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 1096) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00,\00\'\00") - (data (i32.const 1136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\"\00") - (data (i32.const 1160) ":\00\00\00\01\00\00\00\01\00\00\00:\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00d\00o\00u\00b\00l\00e\00-\00q\00u\00o\00t\00e\00d\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 1240) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 1352) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 1400) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00") - (data (i32.const 1472) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 1520) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") - (data (i32.const 1568) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\\\00") - (data (i32.const 1592) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00/\00") - (data (i32.const 1616) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 1640) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\08\00") - (data (i32.const 1664) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n\00") - (data (i32.const 1688) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\n\00") - (data (i32.const 1712) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00r\00") - (data (i32.const 1736) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0d\00") - (data (i32.const 1760) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00t\00") - (data (i32.const 1784) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\t\00") - (data (i32.const 1808) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00u\00") - (data (i32.const 1832) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\\\00u\00 \00d\00i\00g\00i\00t\00") - (data (i32.const 1888) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00s\00c\00a\00p\00e\00d\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00:\00 \00") - (data (i32.const 1968) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00:\00") - (data (i32.const 1992) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00:\00\'\00") - (data (i32.const 2032) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00o\00b\00j\00e\00c\00t\00") - (data (i32.const 2096) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00[\00") - (data (i32.const 2120) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00f\00o\00o\00b\00a\00r\00s\00") - (data (i32.const 2152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 2176) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00m\00o\00d\00e\00l\00.\00t\00s\00") - (data (i32.const 2232) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00u\001\002\008\00V\00a\00l\00") - (data (i32.const 2264) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00a\00r\00r\00a\00y\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 2328) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00]\00") - (data (i32.const 2352) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00a\00r\00r\00a\00y\00") - (data (i32.const 2416) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00") - (data (i32.const 2456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\'\00") - (data (i32.const 2480) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00b\00o\00o\00l\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 2544) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00:\00 \00") - (data (i32.const 2568) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") - (data (i32.const 2592) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00i\00n\00t\00e\00g\00e\00r\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 2664) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 3080) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00x\n\00\00x\n\00\00\90\01\00\00d\00\00\00") - (data (i32.const 3112) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00C\00a\00n\00n\00o\00t\00 \00p\00a\00r\00s\00e\00 \00J\00S\00O\00N\00") - (data (i32.const 3168) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00r\00a\00d\00i\00x\00") - (data (i32.const 3216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00~\00l\00i\00b\00/\00b\00i\00g\00n\00u\00m\00/\00u\00t\00i\00l\00s\00.\00t\00s\00") - (data (i32.const 3272) "K\00\00\00\01\00\00\00\00\00\00\00K\00\00\00\00\01\02\03\04\05\06\07\08\t$$$$$$$\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$$$$$$\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#") - (data (i32.const 3368) "\10\00\00\00\01\00\00\00$\00\00\00\10\00\00\00\d8\0c\00\00\d8\0c\00\00K\00\00\00K\00\00\00") - (data (i32.const 3400) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00r\00r\00") - (data (i32.const 3424) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00n\00a\00m\00e\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00n\00u\00l\00l\00.\00") - (data (i32.const 3480) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00~\00l\00i\00b\00/\00n\00e\00a\00r\00E\00n\00t\00r\00y\00.\00t\00s\00") - (data (i32.const 3536) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 3600) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00s\00t\00r\00i\00n\00g\00 \00f\00i\00e\00l\00d\00 \00") - (data (i32.const 3664) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00 \00:\00 \00\"\00") - (data (i32.const 3688) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\003\002\00A\00r\00r\00") - (data (i32.const 3720) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00i\003\002\00A\00r\00r\00") - (data (i32.const 3752) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00i\00n\00t\008\00a\00r\00r\00a\00y\00s\00") - (data (i32.const 3792) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\006\004\00A\00r\00r\00") - (data (i32.const 3824) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\006\004\00V\00a\00l\00") - (data (i32.const 3856) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00u\006\004\00_\00z\00e\00r\00o\00") - (data (i32.const 3888) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00i\006\004\00V\00a\00l\00") - (data (i32.const 3920) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00z\00") - (data (i32.const 3944) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00a\00r\00r\00a\00y\00") - (data (i32.const 3984) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00l\00a\00g\00") - (data (i32.const 4008) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\00o\00o\00") - (data (i32.const 4032) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00r\00") - (data (i32.const 4056) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\"\00") - (data (i32.const 4080) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\\\00") - (data (i32.const 4104) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00b\00") - (data (i32.const 4128) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00n\00") - (data (i32.const 4152) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00r\00") - (data (i32.const 4176) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00t\00") - (data (i32.const 4200) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00U\00n\00s\00u\00p\00p\00o\00r\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00c\00o\00d\00e\00:\00 \00") - (data (i32.const 4288) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00e\00n\00c\00o\00d\00e\00r\00.\00t\00s\00") - (data (i32.const 4376) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00o\00b\00a\00r\00") - (data (i32.const 4408) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 4456) "N\00\00\00\01\00\00\00\01\00\00\00N\00\00\00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \001\000\00 \00o\00r\00 \001\006\00") - (data (i32.const 4552) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00~\00l\00i\00b\00/\00b\00i\00g\00n\00u\00m\00/\00i\00n\00t\00e\00g\00e\00r\00/\00u\001\002\008\00.\00t\00s\00") - (data (i32.const 4624) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00") - (data (i32.const 4664) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00g\00e\00t\00S\00t\00r\00i\00n\00g\00A\00r\00r\00a\00y\00L\00e\00n\00g\00t\00h\00:\00 \00") - (data (i32.const 4728) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00c\00o\00n\00t\00a\00i\00n\00e\00r\00") - (data (i32.const 4768) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00a\00r\00t\00i\00n\00g\00 \00t\00e\00s\00t\00") - (data (i32.const 4816) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00*\00\00\00\0b\00\00\00") - (data (i32.const 4840) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00G\00V\00s\00b\00G\008\00s\00I\00H\00d\00v\00c\00m\00x\00k\00I\00Q\00=\00=\00") - (data (i32.const 4896) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00H\00e\00l\00l\00o\00") - (data (i32.const 4928) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\000\13\00\00") - (data (i32.const 4952) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00W\00o\00r\00l\00d\00") - (data (i32.const 4984) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00h\13\00\00") - (data (i32.const 5008) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\e4\0bT\02\00\00\00\00\e8vH\17\00\00\00") - (data (i32.const 5040) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00B\00e\00f\00o\00r\00e\00:\00 \00") - (data (i32.const 5072) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00A\00f\00t\00e\00r\00:\00 \00") - (data (i32.const 5104) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00t\00r\00") - (data (i32.const 5128) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00u\001\002\008\00") - (data (i32.const 5152) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00A\00r\00r\00a\00y\00") - (data (i32.const 5192) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00T\00e\00s\00t\00 \00P\00a\00s\00s\00e\00d\00") - (data (i32.const 5232) "F\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\00\93\00\00\00\02\00\00\00\93\04\00\00\02\00\00\00\93 \00\00\02\00\00\00\13\01\00\00\02\00\00\00\93 \00\00\02\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\003\00\00\00\02\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 640) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") + (data (i32.const 752) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 800) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 816) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 872) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 928) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00i\00n\00p\00u\00t\00 \00e\00n\00d\00") + (data (i32.const 984) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00d\00e\00c\00o\00d\00e\00r\00.\00t\00s\00") + (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00{\00") + (data (i32.const 1096) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 1144) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00}\00") + (data (i32.const 1168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") + (data (i32.const 1192) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00,\00\'\00") + (data (i32.const 1232) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\"\00") + (data (i32.const 1256) ":\00\00\00\01\00\00\00\01\00\00\00:\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00d\00o\00u\00b\00l\00e\00-\00q\00u\00o\00t\00e\00d\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 1336) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00") + (data (i32.const 1408) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 1456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\\\00") + (data (i32.const 1480) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00/\00") + (data (i32.const 1504) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 1528) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\08\00") + (data (i32.const 1552) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n\00") + (data (i32.const 1576) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\n\00") + (data (i32.const 1600) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00r\00") + (data (i32.const 1624) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0d\00") + (data (i32.const 1648) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00t\00") + (data (i32.const 1672) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\t\00") + (data (i32.const 1696) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00u\00") + (data (i32.const 1720) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\\\00u\00 \00d\00i\00g\00i\00t\00") + (data (i32.const 1776) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00s\00c\00a\00p\00e\00d\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00:\00 \00") + (data (i32.const 1856) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00:\00") + (data (i32.const 1880) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00:\00\'\00") + (data (i32.const 1920) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00o\00b\00j\00e\00c\00t\00") + (data (i32.const 1984) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 2032) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00[\00") + (data (i32.const 2056) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00]\00") + (data (i32.const 2080) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00e\00n\00d\00 \00o\00f\00 \00a\00r\00r\00a\00y\00") + (data (i32.const 2144) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00E\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00") + (data (i32.const 2184) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\'\00") + (data (i32.const 2208) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") + (data (i32.const 2232) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00C\00a\00n\00n\00o\00t\00 \00p\00a\00r\00s\00e\00 \00J\00S\00O\00N\00") + (data (i32.const 2288) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00f\00o\00o\00b\00a\00r\00s\00") + (data (i32.const 2320) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") + (data (i32.const 2376) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") + (data (i32.const 2416) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00K\00e\00y\00:\00 \00") + (data (i32.const 2448) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00 \00n\00o\00t\00 \00f\00o\00u\00n\00d\00") + (data (i32.const 2488) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00~\00l\00i\00b\00/\00n\00e\00a\00r\00E\00n\00t\00r\00y\00.\00t\00s\00") + (data (i32.const 2544) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00 \00w\00i\00t\00h\00 \00t\00y\00p\00e\00 \00") + (data (i32.const 2584) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00A\00r\00r\00a\00y\00<\00a\00s\00s\00e\00m\00b\00l\00y\00/\00m\00o\00d\00e\00l\00/\00F\00o\00o\00B\00a\00r\00>\00") + (data (i32.const 2656) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00s\00 \00n\00o\00t\00 \00n\00u\00l\00l\00a\00b\00l\00e\00.\00") + (data (i32.const 2704) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00V\00a\00l\00u\00e\00 \00w\00i\00t\00h\00 \00K\00e\00y\00:\00 \00") + (data (i32.const 2752) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00 \00i\00s\00 \00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00b\00e\00 \00a\00n\00 \00a\00r\00r\00a\00y\00") + (data (i32.const 2824) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00a\00r\00r\00a\00y\00 \00o\00r\00 \00n\00u\00l\00l\00.\00") + (data (i32.const 2896) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00F\00o\00o\00B\00a\00r\00") + (data (i32.const 2928) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00o\00b\00j\00e\00c\00t\00 \00o\00r\00 \00n\00u\00l\00l\00") + (data (i32.const 3000) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") + (data (i32.const 3024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\00o\00o\00") + (data (i32.const 3048) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\003\002\00") + (data (i32.const 3072) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00I\00n\00t\00e\00g\00e\00r\00") + (data (i32.const 3128) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00r\00") + (data (i32.const 3152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\003\002\00") + (data (i32.const 3176) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\006\004\00V\00a\00l\00") + (data (i32.const 3208) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\006\004\00") + (data (i32.const 3232) "~\00\00\00\01\00\00\00\01\00\00\00~\00\00\00 \00i\00s\00 \00a\00n\00 \006\004\00-\00b\00i\00t\00 \00i\00n\00t\00e\00g\00e\00r\00 \00a\00n\00d\00 \00i\00s\00 \00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00b\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00a\00s\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 3376) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00u\006\004\00_\00z\00e\00r\00o\00") + (data (i32.const 3408) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00i\006\004\00V\00a\00l\00") + (data (i32.const 3440) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\006\004\00") + (data (i32.const 3464) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00l\00a\00g\00") + (data (i32.const 3488) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l\00") + (data (i32.const 3512) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 3560) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00z\00") + (data (i32.const 3584) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00 \00o\00r\00 \00n\00u\00l\00l\00") + (data (i32.const 3648) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00a\00r\00r\00a\00y\00") + (data (i32.const 3688) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00") + (data (i32.const 3728) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00r\00r\00") + (data (i32.const 3752) "V\00\00\00\01\00\00\00\01\00\00\00V\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00/\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>\00>\00") + (data (i32.const 3856) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>\00") + (data (i32.const 3928) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\003\002\00A\00r\00r\00") + (data (i32.const 3960) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00A\00r\00r\00a\00y\00<\00u\003\002\00>\00") + (data (i32.const 4000) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00i\003\002\00A\00r\00r\00") + (data (i32.const 4032) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00A\00r\00r\00a\00y\00<\00i\003\002\00>\00") + (data (i32.const 4072) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00u\001\002\008\00V\00a\00l\00") + (data (i32.const 4104) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00u\001\002\008\00") + (data (i32.const 4128) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00l\00o\00") + (data (i32.const 4152) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") + (data (i32.const 4176) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00i\00n\00t\008\00a\00r\00r\00a\00y\00s\00") + (data (i32.const 4216) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00/\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00>\00") + (data (i32.const 4304) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\006\004\00A\00r\00r\00") + (data (i32.const 4336) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00A\00r\00r\00a\00y\00<\00u\006\004\00>\00") + (data (i32.const 4376) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\"\00") + (data (i32.const 4400) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\\\00") + (data (i32.const 4424) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00b\00") + (data (i32.const 4448) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00n\00") + (data (i32.const 4472) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00r\00") + (data (i32.const 4496) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00t\00") + (data (i32.const 4520) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00U\00n\00s\00u\00p\00p\00o\00r\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00c\00o\00d\00e\00:\00 \00") + (data (i32.const 4608) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 5024) "\10\00\00\00\01\00\00\00\1a\00\00\00\10\00\00\00\10\12\00\00\10\12\00\00\90\01\00\00d\00\00\00") + (data (i32.const 5056) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00e\00n\00c\00o\00d\00e\00r\00.\00t\00s\00") + (data (i32.const 5144) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00o\00b\00a\00r\00") + (data (i32.const 5176) "N\00\00\00\01\00\00\00\01\00\00\00N\00\00\00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \001\000\00 \00o\00r\00 \001\006\00") + (data (i32.const 5272) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00~\00l\00i\00b\00/\00b\00i\00g\00n\00u\00m\00/\00i\00n\00t\00e\00g\00e\00r\00/\00u\001\002\008\00.\00t\00s\00") + (data (i32.const 5344) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00") + (data (i32.const 5384) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00g\00e\00t\00S\00t\00r\00i\00n\00g\00A\00r\00r\00a\00y\00L\00e\00n\00g\00t\00h\00:\00 \00") + (data (i32.const 5448) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00c\00o\00n\00t\00a\00i\00n\00e\00r\00") + (data (i32.const 5488) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00C\00o\00n\00t\00a\00i\00n\00e\00r\00C\00l\00a\00s\00s\00") + (data (i32.const 5536) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\00A\00n\00o\00t\00h\00e\00r\00C\00o\00n\00t\00a\00i\00n\00e\00r\00C\00l\00a\00s\00s\00") + (data (i32.const 5600) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00/\00A\00r\00r\00a\00y\00<\00a\00s\00s\00e\00m\00b\00l\00y\00/\00m\00o\00d\00e\00l\00/\00F\00o\00o\00B\00a\00r\00>\00>\00") + (data (i32.const 5712) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00a\00r\00t\00i\00n\00g\00 \00t\00e\00s\00t\00") + (data (i32.const 5760) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00*\00\00\00\0b\00\00\00") + (data (i32.const 5784) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00G\00V\00s\00b\00G\008\00s\00I\00H\00d\00v\00c\00m\00x\00k\00I\00Q\00=\00=\00") + (data (i32.const 5840) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00H\00e\00l\00l\00o\00") + (data (i32.const 5872) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\e0\16\00\00") + (data (i32.const 5896) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00W\00o\00r\00l\00d\00") + (data (i32.const 5928) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\18\17\00\00") + (data (i32.const 5952) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\e4\0bT\02\00\00\00\00\e8vH\17\00\00\00") + (data (i32.const 5984) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00B\00e\00f\00o\00r\00e\00:\00 \00") + (data (i32.const 6016) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00") + (data (i32.const 6040) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00A\00f\00t\00e\00r\00:\00 \00") + (data (i32.const 6072) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00t\00e\00s\00t\00.\00t\00s\00") + (data (i32.const 6120) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00t\00r\00") + (data (i32.const 6144) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00A\00r\00r\00a\00y\00") + (data (i32.const 6184) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00N\00u\00l\00l\00a\00b\00l\00e\00s\00") + (data (i32.const 6224) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00T\00e\00s\00t\00 \00P\00a\00s\00s\00e\00d\00") + (data (i32.const 6264) "$\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\98 A\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\0b\00\00\00\10\00\00\00\0c\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\93\04\00\00\02\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93\00\00\00\02\00\00\00\93 \00\00\02\00\00\00\13\01\00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 0) $null $assembly/main/convertFoobars~anonymous|0) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -182,16 +202,11 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/number/U32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/nearEntry/JSON.handler (mut i32) (i32.const 0)) + (global $~lib/nearEntry/JSON.decoder (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.String (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.Boolean (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.U64 (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.I64 (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.U32 (mut i32) (i32.const 0)) - (global $~lib/nearEntry/PrimitiveHandler.I32 (mut i32) (i32.const 0)) - (global $~lib/bignum/utils/RadixCharsTable i32 (i32.const 3384)) - (global $~lib/rt/__rtti_base i32 (i32.const 5232)) - (global $~lib/heap/__heap_base i32 (i32.const 5796)) + (global $~lib/rt/__rtti_base i32 (i32.const 6264)) + (global $~lib/heap/__heap_base i32 (i32.const 6556)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -788,7 +803,7 @@ i32.eqz if i32.const 0 - i32.const 7 + i32.const 11 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -800,7 +815,7 @@ i32.eqz if i32.const 0 - i32.const 8 + i32.const 12 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -810,34 +825,68 @@ local.set $0 local.get $0 ) - (func $assembly/test/__near_ArgsParser_convertFoobars#constructor (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.eqz - if + if (result i32) + local.get $0 + else i32.const 16 - i32.const 9 + i32.const 14 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain - local.set $0 end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 local.get $0 + ) + (func $~lib/nearEntry/Handler#constructor (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 4 + i32.const 13 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor local.set $0 local.get $0 i32.const 0 i32.store local.get $0 + local.tee $1 i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 i32.const 0 - i32.store offset=12 + call $~lib/array/Array<~lib/nearEntry/Value>#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -847,7 +896,7 @@ i32.eqz if i32.const 8 - i32.const 10 + i32.const 15 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -879,7 +928,16 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:~lib/nearEntry (; 34 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/nearEntry/Handler#constructor + global.set $~lib/nearEntry/JSON.handler + i32.const 0 + global.get $~lib/nearEntry/JSON.handler + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor + global.set $~lib/nearEntry/JSON.decoder + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -887,13 +945,13 @@ i32.eqz if i32.const 12 - i32.const 11 + i32.const 16 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 end local.get $0 - i32.const 656 + i32.const 816 call $~lib/rt/stub/__retain i32.store local.get $0 @@ -907,22 +965,22 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Uint8Array#get:length (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#__get (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 672 - i32.const 728 + i32.const 832 + i32.const 888 i32.const 135 i32.const 44 call $~lib/builtins/abort @@ -934,7 +992,7 @@ i32.add i32.load8_u ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.load offset=4 @@ -955,7 +1013,7 @@ i32.load offset=4 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 i32.const 9 i32.eq @@ -981,7 +1039,7 @@ i32.eq end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -993,8 +1051,8 @@ i32.lt_s i32.eqz if - i32.const 784 - i32.const 840 + i32.const 944 + i32.const 1000 i32.const 112 i32.const 8 call $~lib/builtins/abort @@ -1015,186 +1073,252 @@ local.get $1 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) block $break|0 loop $continue|0 local.get $0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace i32.eqz br_if $break|0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar drop br $continue|0 end unreachable end ) - (func $~lib/util/string/compareImpl (; 41 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $5 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $4 - if (result i32) - local.get $6 - i32.load16_u - local.get $7 - i32.load16_u - i32.sub - local.tee $5 - i32.eqz - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end - unreachable - end - local.get $5 - local.set $8 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $8 - ) - (func $~lib/string/String.__eq (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop + (func $~lib/nearEntry/Value#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end + i32.eqz if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 7 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - call $~lib/string/String#get:length - i32.ne + i32.const 1073741808 + i32.gt_u if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 552 + i32.const 600 + i32.const 57 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 local.get $1 i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz + call $~lib/rt/stub/__alloc local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.get $2 + i32.const 0 local.get $1 - call $~lib/rt/stub/__release + call $~lib/memory/memory.fill local.get $2 + call $~lib/rt/stub/__retain ) - (func $~lib/string/String.__ne (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 45 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) local.get $0 - call $~lib/rt/stub/__retain - drop + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 local.get $1 - call $~lib/rt/stub/__retain - drop + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 local.get $0 + local.tee $2 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 ) - (func $~lib/util/memory/memcpy (; 44 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $break|0 - loop $continue|0 + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 9 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear + local.get $0 + ) + (func $~lib/array/Array<~lib/string/String>#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 10 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/Obj#constructor (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 8 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/nearEntry/Value#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + local.tee $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $1 + local.get $2 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $~lib/nearEntry/Value.Object (; 49 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + call $~lib/nearEntry/Obj#constructor + ) + (func $~lib/rt/__instanceof (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + local.set $2 + global.get $~lib/rt/__rtti_base + local.set $3 + local.get $2 + local.get $3 + i32.load + i32.le_u + if + loop $continue|0 + local.get $2 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const 8 + i32.mul + i32.add + i32.load offset=4 + local.tee $2 + br_if $continue|0 + end + end + i32.const 0 + ) + (func $~lib/util/memory/memcpy (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $break|0 + loop $continue|0 local.get $2 if (result i32) local.get $1 @@ -2217,7 +2341,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2442,276 +2566,37 @@ end end ) - (func $~lib/string/String#concat (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__realloc (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - i32.const 216 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $1 - end - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $4 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $5 - local.get $4 - local.get $5 - i32.add - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - i32.const 656 - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $6 - i32.const 1 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $7 - local.get $7 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $7 - local.get $4 - i32.add - local.get $1 - local.get $5 - call $~lib/memory/memory.copy - local.get $7 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/string/String.__concat (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.const 216 local.get $0 i32.const 0 i32.ne - select - local.get $1 - call $~lib/string/String#concat - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end i32.eqz if - i32.const 1000 - local.get $1 - call $~lib/string/String.__concat - local.tee $2 - i32.const 840 - i32.const 58 - i32.const 8 + i32.const 0 + i32.const 1112 + i32.const 43 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 1 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/test/__near_ArgsParser_convertFoobars#pushObject (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 22 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 26 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 13 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - if - i32.const 1256 - i32.const 1368 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~lib/rt/stub/__realloc (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 43 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.set $2 - local.get $2 - i32.load + local.get $0 + i32.const 16 + i32.sub + local.set $2 + local.get $2 + i32.load local.set $3 local.get $2 i32.load offset=4 @@ -2720,7 +2605,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1112 i32.const 46 i32.const 13 call $~lib/builtins/abort @@ -2820,351 +2705,438 @@ i32.store offset=12 local.get $0 ) - (func $~lib/string/String.UTF8.decodeUnsafe (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/ensureSize (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 + i32.load offset=8 local.set $3 - local.get $0 local.get $1 + local.get $3 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 552 + i32.const 768 + i32.const 14 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $4 + local.get $1 + local.get $2 + i32.shl + local.set $5 + local.get $4 + local.get $5 + call $~lib/rt/stub/__realloc + local.set $6 + local.get $6 + local.get $3 + i32.add + i32.const 0 + local.get $5 + local.get $3 + i32.sub + call $~lib/memory/memory.fill + local.get $6 + local.get $4 + i32.ne + if + local.get $0 + local.get $6 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $6 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.store offset=8 + end + ) + (func $~lib/array/Array<~lib/nearEntry/Value>#push (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 local.set $4 + local.get $1 + call $~lib/rt/stub/__release local.get $4 - local.get $3 + ) + (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 i32.ge_u - i32.eqz if - i32.const 0 - i32.const 1488 - i32.const 585 - i32.const 6 + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $5 - local.get $5 - local.set $6 - block $break|0 - loop $continue|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $3 - local.tee $7 - i32.const 1 - i32.add - local.set $3 - local.get $7 - i32.load8_u - local.set $7 - local.get $7 - i32.const 128 - i32.lt_u - if - local.get $2 - if (result i32) - local.get $7 - i32.eqz - else - i32.const 0 - end - if - br $break|0 - end - local.get $6 - local.get $7 - i32.store16 - local.get $6 - i32.const 2 - i32.add - local.set $6 - else - local.get $7 - i32.const 191 - i32.gt_u - if (result i32) - local.get $7 - i32.const 224 - i32.lt_u - else - i32.const 0 - end - if - local.get $4 - local.get $3 - i32.sub - i32.const 1 - i32.lt_u - if - br $break|0 - end - local.get $6 - local.get $7 - i32.const 31 - i32.and - i32.const 6 - i32.shl - local.get $3 - local.tee $8 - i32.const 1 - i32.add - local.set $3 - local.get $8 - i32.load8_u - i32.const 63 - i32.and - i32.or - i32.store16 - local.get $6 - i32.const 2 - i32.add - local.set $6 - else - local.get $7 - i32.const 239 - i32.gt_u - if (result i32) - local.get $7 - i32.const 365 - i32.lt_u - else - i32.const 0 - end - if - local.get $4 - local.get $3 - i32.sub - i32.const 3 - i32.lt_u - if - br $break|0 - end - local.get $7 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $3 - i32.load8_u - i32.const 63 - i32.and - i32.const 12 - i32.shl - i32.or - local.get $3 - i32.load8_u offset=1 - i32.const 63 - i32.and - i32.const 6 - i32.shl - i32.or - local.get $3 - i32.load8_u offset=2 - i32.const 63 - i32.and - i32.or - i32.const 65536 - i32.sub - local.set $7 - local.get $3 - i32.const 3 - i32.add - local.set $3 - local.get $6 - i32.const 55296 - local.get $7 - i32.const 10 - i32.shr_u - i32.add - i32.store16 - local.get $6 - i32.const 56320 - local.get $7 - i32.const 1023 - i32.and - i32.add - i32.store16 offset=2 - local.get $6 - i32.const 4 - i32.add - local.set $6 - else - local.get $4 - local.get $3 - i32.sub - i32.const 2 - i32.lt_u - if - br $break|0 - end - local.get $6 - local.get $7 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $3 - i32.load8_u - i32.const 63 - i32.and - i32.const 6 - i32.shl - i32.or - local.get $3 - i32.load8_u offset=1 - i32.const 63 - i32.and - i32.or - i32.store16 - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $6 - i32.const 2 - i32.add - local.set $6 - end - end - end - br $continue|0 - end + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $5 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get + ) + (func $~lib/nearEntry/Handler#get:peek (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 1 i32.sub - call $~lib/rt/stub/__realloc - call $~lib/rt/stub/__retain + call $~lib/array/Array<~lib/nearEntry/Value>#__get ) - (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 54 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/hash/hashStr (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain drop + i32.const -2128831035 + local.set $1 local.get $0 - call $~lib/assemblyscript-json/util/index/Buffer.getPtr - local.get $1 - i32.add - local.get $2 - local.get $1 - i32.sub i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe + i32.ne + if + block $break|0 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + loop $loop|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $1 + local.get $0 + local.get $2 + i32.add + i32.load8_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $loop|0 + end + unreachable + end + end + local.get $1 local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 61 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.load offset=8 - local.get $1 + call $~lib/rt/stub/__retain + drop local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $5 + local.get $0 + local.get $1 i32.const 1 - i32.sub - call $~lib/assemblyscript-json/util/index/Buffer.readString - ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $7 + block $break|0 + loop $continue|0 + local.get $4 + if (result i32) + local.get $6 + i32.load16_u + local.get $7 + i32.load16_u i32.sub - br_table $0of1 $1of1 $outOfRange + local.tee $5 + i32.eqz + else + i32.const 0 end - unreachable + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 end + unreachable + end + local.get $5 + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + ) + (func $~lib/string/String.__eq (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $2 local.get $0 - i32.load offset=4 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return end local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $3 local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/DecoderState#readString - ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end local.get $0 - i32.load offset=12 + i32.const 0 + local.get $1 + i32.const 0 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/array/ensureSize (; 58 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 - i32.load offset=8 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + call $~lib/string/String.__eq + else + i32.const 0 + end + if + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + unreachable + end + i32.const 0 + local.set $4 local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) local.get $1 - i32.const 1073741808 + call $~lib/rt/stub/__retain + local.set $2 local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 552 - i32.const 1368 - i32.const 14 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 + call $~lib/util/hash/hashStr + local.set $3 local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/stub/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 + call $~lib/rt/stub/__release local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - call $~lib/rt/stub/__retain - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 end + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find + i32.const 0 + i32.ne + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#push (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3200,7 +3172,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 66 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3213,20521 +3185,512 @@ (local $11 i32) (local $12 i32) local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=12 i32.const 1 - i32.sub + i32.add local.set $2 - local.get $2 i32.const 0 - i32.lt_s - if - i32.const 656 - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 local.get $2 - i32.eqz - if - local.get $4 - i32.load - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $1 - call $~lib/string/String#get:length - local.set $5 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 i32.const 0 + local.get $4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 local.set $6 - i32.const 0 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add local.set $7 + local.get $5 + local.set $8 block $break|0 - i32.const 0 - local.set $3 - local.get $2 - i32.const 1 - i32.add - local.set $8 - loop $loop|0 - local.get $3 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 + loop $continue|0 + local.get $6 local.get $7 - local.tee $10 i32.ne - if - local.get $9 - call $~lib/rt/stub/__retain - drop - local.get $10 - call $~lib/rt/stub/__release - end + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 local.get $9 - local.set $7 - local.get $7 - i32.const 0 - i32.ne - if - local.get $6 - local.get $7 - call $~lib/string/String#get:length - i32.add - local.set $6 - end - local.get $3 + i32.load offset=8 i32.const 1 - i32.add - local.set $3 - br $loop|0 - end - unreachable - end - i32.const 0 - local.set $11 - local.get $6 - local.get $5 - local.get $2 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $12 - block $break|1 - i32.const 0 - local.set $8 - loop $loop|1 - local.get $8 - local.get $2 - i32.lt_s + i32.and i32.eqz - br_if $break|1 - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $10 - local.get $7 - local.tee $3 - i32.ne - if - local.get $10 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $10 - local.set $7 - local.get $7 - i32.const 0 - i32.ne if - local.get $7 - call $~lib/string/String#get:length + local.get $8 local.set $10 - local.get $12 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $7 local.get $10 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $11 + local.get $9 + i32.load + i32.store local.get $10 - i32.add + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) + local.get $9 + i32.load + call $~lib/rt/stub/__retain + local.set $11 + local.get $11 + call $~lib/util/hash/hashStr + local.set $12 + local.get $11 + call $~lib/rt/stub/__release + local.get $12 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 + end + local.get $1 + i32.and local.set $11 - end - local.get $5 - if - local.get $12 + local.get $3 local.get $11 - i32.const 1 - i32.shl + i32.const 4 + i32.mul i32.add - local.get $1 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $11 - local.get $5 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 i32.add - local.set $11 + local.set $8 end - local.get $8 - i32.const 1 + local.get $6 + i32.const 12 i32.add - local.set $8 - br $loop|1 + local.set $6 + br $continue|0 end unreachable end - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add + local.get $0 + local.tee $9 + local.get $3 + local.tee $10 + local.get $9 i32.load local.tee $9 - local.get $7 - local.tee $8 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $8 + local.get $9 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - i32.const 0 + local.get $10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $10 + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 i32.ne if - local.get $12 local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $7 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release end - local.get $12 - local.set $9 - local.get $1 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $9 - ) - (func $~lib/array/Array<~lib/string/String>#join (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + local.get $11 + i32.store offset=8 local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#join_str - local.set $2 - local.get $1 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 call $~lib/rt/stub/__release - local.get $2 - return ) - (func $~lib/rt/__allocArray (; 62 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 16 + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $2 - call $~lib/rt/stub/__alloc - local.set $4 + call $~lib/rt/stub/__retain + drop + block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + call $~lib/util/hash/hashStr + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 + end + local.set $5 local.get $0 local.get $1 - i32.shl - local.set $5 local.get $5 - i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/stub/__retain - i32.store - local.get $4 local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $3 if local.get $6 + i32.load offset=4 + local.set $3 + local.get $2 + local.get $3 + i32.ne + if + local.get $6 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__release + end + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/stub/__retain + local.set $3 local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $6 + local.get $2 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load local.get $5 - call $~lib/memory/memory.copy + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $4 + local.get $6 + local.get $4 + i32.load + i32.store offset=8 + local.get $4 + local.get $6 + i32.store + local.get $3 + call $~lib/rt/stub/__release end - local.get $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 + (func $~lib/nearEntry/Obj#set (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 + call $~lib/rt/stub/__retain + drop local.get $2 - i32.const 9 - i32.gt_s + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has + i32.eqz if + local.get $0 + i32.load offset=4 local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end + call $~lib/array/Array<~lib/string/String>#push + drop end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 + local.get $0 + i32.load local.get $1 - i32.store - local.get $4 local.get $2 - i32.store offset=4 - local.get $3 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/Arr#push (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 call $~lib/rt/stub/__retain - local.set $4 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/array/Array<~lib/nearEntry/Value>#push + drop + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/Handler#addValue (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/string/String#get:length i32.const 0 - i32.ge_s + i32.eq if (result i32) local.get $2 - i32.const 16 - i32.lt_s + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end else i32.const 0 end - i32.eqz if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load + local.get $2 + call $~lib/array/Array<~lib/nearEntry/Value>#push + drop + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + return end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/string/String.fromCodePoint (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $0 - i32.const 1114111 - i32.le_u + call $~lib/nearEntry/Handler#get:peek + local.tee $3 + local.tee $4 i32.eqz - if + if (result i32) i32.const 0 - i32.const 1488 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof end - local.get $0 - i32.const 65535 - i32.gt_s - local.set $1 - i32.const 2 - local.get $1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $1 - i32.eqz if - local.get $2 local.get $0 - i32.store16 + call $~lib/nearEntry/Handler#get:peek + local.tee $4 + local.get $1 + local.get $2 + call $~lib/nearEntry/Obj#set + local.get $4 + call $~lib/rt/stub/__release else local.get $0 - i32.const 65536 - i32.sub - local.set $0 - local.get $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.add - local.set $3 - local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.add - local.set $4 - local.get $2 - local.get $3 - i32.const 16 - i32.shl + call $~lib/nearEntry/Handler#get:peek + local.tee $4 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 17 + call $~lib/rt/__instanceof + end + if + local.get $0 + call $~lib/nearEntry/Handler#get:peek + local.tee $5 + local.get $2 + call $~lib/nearEntry/Arr#push + local.get $5 + call $~lib/rt/stub/__release + end local.get $4 - i32.or - i32.store + call $~lib/rt/stub/__release end + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release local.get $2 - call $~lib/rt/stub/__retain + call $~lib/rt/stub/__release ) - (func $~lib/string/String.fromCharCode (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushObject (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 - i32.const 0 - i32.gt_s + call $~lib/rt/stub/__retain + drop + call $~lib/nearEntry/Value.Object local.set $2 - i32.const 2 + local.get $0 + local.get $1 local.get $2 - i32.shl + call $~lib/nearEntry/Handler#addValue + local.get $0 + i32.load + local.get $2 + call $~lib/array/Array<~lib/nearEntry/Value>#push + drop i32.const 1 - call $~lib/rt/stub/__alloc local.set $3 - local.get $3 - local.get $0 - i32.store16 local.get $2 - if - local.get $3 - local.get $1 - i32.store16 offset=2 - end + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release local.get $3 - call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const -1 - local.set $1 - end + (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 + i32.load offset=4 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release local.get $1 - call $~lib/string/String.fromCharCode ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/string/String.UTF8.decodeUnsafe (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + local.set $3 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 + i32.add + local.set $4 + local.get $4 + local.get $3 + i32.ge_u i32.eqz if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 + i32.const 1424 + i32.const 585 + i32.const 6 call $~lib/builtins/abort unreachable end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $5 local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 68 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 69 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONHandler#popObject (; 70 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/test/__near_ArgsParser_convertFoobars#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#constructor (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 21 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#constructor (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 8 - i32.const 20 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#constructor - local.set $2 - local.get $1 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=4 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 74 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 23 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/nearEntry/PrimitiveHandler#constructor (; 75 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 8 - i32.const 22 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor - local.set $2 - local.get $1 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=4 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 76 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 25 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/nearEntry/PrimitiveHandler#constructor (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 24 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor - local.set $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=8 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 27 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/nearEntry/PrimitiveHandler#constructor (; 79 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 26 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor - local.set $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=8 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 80 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 29 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/nearEntry/PrimitiveHandler#constructor (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 8 - i32.const 28 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor - local.set $2 - local.get $1 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=4 - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 31 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/nearEntry/PrimitiveHandler#constructor (; 83 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 8 - i32.const 30 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler>#constructor - local.set $2 - local.get $1 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=4 - local.get $0 - ) - (func $start:~lib/nearEntry (; 84 ;) (type $FUNCSIG$v) - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#constructor - global.set $~lib/nearEntry/PrimitiveHandler.String - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler#constructor - global.set $~lib/nearEntry/PrimitiveHandler.Boolean - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler#constructor - global.set $~lib/nearEntry/PrimitiveHandler.U64 - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler#constructor - global.set $~lib/nearEntry/PrimitiveHandler.I64 - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler#constructor - global.set $~lib/nearEntry/PrimitiveHandler.U32 - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler#constructor - global.set $~lib/nearEntry/PrimitiveHandler.I32 - ) - (func $~lib/array/Array#constructor (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 19 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - if - i32.const 1256 - i32.const 1368 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/nearEntry/ArrayHandler#constructor (; 86 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 32 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 1 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/stub/__retain - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 33 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace (; 89 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $assembly/model/FooBar#constructor (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 68 - i32.const 12 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 1 - i32.store offset=4 - local.get $0 - i64.const 4294967297 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const -64 - i64.store offset=24 - local.get $0 - i32.const 0 - i32.store8 offset=32 - local.get $0 - i32.const 2168 - call $~lib/rt/stub/__retain - i32.store offset=36 - local.get $0 - i32.const 0 - i32.store offset=40 - local.get $0 - i32.const 0 - i32.store offset=44 - local.get $0 - i32.const 0 - i32.store offset=48 - local.get $0 - i32.const 0 - i32.store offset=52 - local.get $0 - i32.const 0 - i32.store offset=56 - local.get $0 - i32.const 0 - i32.store offset=60 - local.get $0 - i32.const 0 - i32.store offset=64 - local.get $0 - ) - (func $assembly/model/__near_JSONHandler_FooBar#constructor (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 34 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 94 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 35 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 96 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 98 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#isWhitespace (; 100 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace (; 102 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readHexDigit (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readEscapedChar (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readString (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseKey (; 106 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseObject (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.eqz - if - i32.const 2280 - local.get $1 - call $~lib/string/String.__concat - local.tee $2 - i32.const 840 - i32.const 53 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONHandler#popArray (; 109 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseArray (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setString (; 111 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseString (; 112 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readString - local.tee $1 - call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readAndAssert (; 113 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean (; 114 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.eqz - if - i32.const 2496 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - local.get $2 - if (result i32) - i32.const 160 - call $~lib/rt/stub/__retain - local.tee $5 - else - i32.const 184 - call $~lib/rt/stub/__retain - local.tee $6 - end - call $~lib/string/String.__concat - local.tee $7 - i32.const 840 - i32.const 40 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setBoolean (; 115 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseBoolean (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/util/number/decimalCount32 (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - i32.const 2 - local.get $0 - i32.const 10 - i32.lt_u - select - return - else - i32.const 4 - i32.const 5 - local.get $0 - i32.const 10000 - i32.lt_u - select - local.set $1 - i32.const 3 - local.get $1 - local.get $0 - i32.const 1000 - i32.lt_u - select - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - i32.const 7 - local.get $0 - i32.const 1000000 - i32.lt_u - select - return - else - i32.const 9 - i32.const 10 - local.get $0 - i32.const 1000000000 - i32.lt_u - select - local.set $1 - i32.const 8 - local.get $1 - local.get $0 - i32.const 100000000 - i32.lt_u - select - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_lut (; 118 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - i32.const 3096 - i32.load offset=4 - local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end - unreachable - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $7 - local.get $1 - i32.const 100 - i32.rem_u - local.set $6 - local.get $7 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $5 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store16 - end - ) - (func $~lib/util/number/decimalCount64 (; 119 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if - local.get $0 - i64.const 1000000000000 - i64.lt_u - if - i32.const 11 - i32.const 12 - local.get $0 - i64.const 100000000000 - i64.lt_u - select - local.set $1 - i32.const 10 - local.get $1 - local.get $0 - i64.const 10000000000 - i64.lt_u - select - return - else - i32.const 14 - i32.const 15 - local.get $0 - i64.const 100000000000000 - i64.lt_u - select - local.set $1 - i32.const 13 - local.get $1 - local.get $0 - i64.const 10000000000000 - i64.lt_u - select - return - end - unreachable - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if - i32.const 16 - i32.const 17 - local.get $0 - i64.const 10000000000000000 - i64.lt_u - select - return - else - i32.const 19 - i32.const 20 - local.get $0 - i64.const -8446744073709551616 - i64.lt_u - select - local.set $1 - i32.const 18 - local.get $1 - local.get $0 - i64.const 1000000000000000000 - i64.lt_u - select - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa64_lut (; 120 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - i32.const 3096 - i32.load offset=4 - local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - i32.eqz - br_if $break|0 - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - local.get $3 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - local.get $3 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end - unreachable - end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_lut - ) - (func $~lib/util/number/itoa64 (; 121 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - local.get $0 - i64.eqz - if - i32.const 240 - call $~lib/rt/stub/__retain - return - end - local.get $0 - i64.const 0 - i64.lt_s - local.set $1 - local.get $1 - if - i64.const 0 - local.get $0 - i64.sub - local.set $0 - end - local.get $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $3 - local.get $3 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - else - local.get $0 - call $~lib/util/number/decimalCount64 - local.get $1 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_lut - end - local.get $1 - if - local.get $2 - i32.const 45 - i32.store16 - end - local.get $2 - call $~lib/rt/stub/__retain - ) - (func $~lib/util/number/itoa (; 122 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - local.get $0 - call $~lib/util/number/itoa64 - return - ) - (func $~lib/number/I64#toString (; 123 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/util/number/itoa - local.tee $1 - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger (; 124 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.eqz - if - i32.const 2608 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - local.get $2 - call $~lib/number/I64#toString - local.tee $5 - call $~lib/string/String.__concat - local.tee $6 - i32.const 840 - i32.const 49 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setInteger (; 125 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseNumber (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setNull (; 127 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseNull (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseValue (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#deserialize (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#decode (; 131 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/PrimitiveHandler<~lib/string/String>>#deserialize - local.get $0 - i32.load - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/decodeString (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - global.get $~lib/nearEntry/PrimitiveHandler.String - local.get $0 - local.get $1 - call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#decode - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/bignum/integer/u128/u128#constructor (; 133 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i64.store - local.get $0 - local.get $2 - i64.store offset=8 - local.get $0 - ) - (func $~lib/array/Array#__unchecked_get (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - ) - (func $~lib/array/Array#__get (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 0 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1368 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $~lib/bignum/globals/__multi3 (; 136 ;) (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - local.get $1 - local.set $5 - local.get $3 - local.set $6 - local.get $5 - i64.const 4294967295 - i64.and - local.set $9 - local.get $6 - i64.const 4294967295 - i64.and - local.set $10 - local.get $9 - local.get $10 - i64.mul - local.set $11 - local.get $11 - i64.const 4294967295 - i64.and - local.set $12 - local.get $5 - i64.const 32 - i64.shr_u - local.set $5 - local.get $5 - local.get $10 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.set $11 - local.get $11 - i64.const 4294967295 - i64.and - local.set $8 - local.get $11 - i64.const 32 - i64.shr_u - local.set $7 - local.get $6 - i64.const 32 - i64.shr_u - local.set $6 - local.get $9 - local.get $6 - i64.mul - local.get $8 - i64.add - local.set $11 - local.get $12 - local.get $11 - i64.const 32 - i64.shl - i64.add - local.set $13 - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.add - local.set $14 - local.get $14 - local.get $2 - local.get $3 - i64.mul - i64.add - local.set $14 - local.get $14 - local.get $1 - local.get $4 - i64.mul - i64.add - local.set $14 - local.get $14 - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.set $14 - local.get $13 - global.set $~lib/bignum/globals/__res128_lo - local.get $14 - global.set $~lib/bignum/globals/__res128_hi - ) - (func $~lib/bignum/utils/atou128 (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - (local $17 i64) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.eqz - if - i32.const 10 - local.set $1 - end - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - local.get $0 - call $~lib/rt/stub/__release - i32.const 3184 - i32.const 3232 - i32.const 133 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - i32.eqz - if - i32.const 0 - i64.const 0 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $4 - return - end - local.get $0 - i32.const 0 - call $~lib/string/String#charCodeAt - local.set $5 - local.get $2 - i32.const 1 - i32.eq - if (result i32) - local.get $5 - i32.const 48 - i32.eq - else - i32.const 0 - end - if - i32.const 0 - i64.const 0 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $4 - return - end - local.get $5 - i32.const 45 - i32.eq - local.set $6 - local.get $6 - if (result i32) - local.get $6 - else - local.get $5 - i32.const 43 - i32.eq - end - local.set $7 - local.get $0 - local.get $7 - call $~lib/string/String#charCodeAt - i32.const 48 - i32.eq - if - local.get $0 - local.get $7 - i32.const 1 - i32.add - local.tee $7 - call $~lib/string/String#charCodeAt - local.set $3 - local.get $3 - i32.const 120 - i32.eq - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 88 - i32.eq - end - if - i32.const 16 - local.set $1 - local.get $7 - i32.const 1 - i32.add - local.set $7 - else - local.get $3 - i32.const 111 - i32.eq - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 79 - i32.eq - end - if - i32.const 8 - local.set $1 - local.get $7 - i32.const 1 - i32.add - local.set $7 - else - local.get $3 - i32.const 98 - i32.eq - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 66 - i32.eq - end - if - i32.const 2 - local.set $1 - local.get $7 - i32.const 1 - i32.add - local.set $7 - end - end - end - end - i32.const 0 - i64.const 0 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $8 - global.get $~lib/bignum/utils/RadixCharsTable - call $~lib/rt/stub/__retain - local.set $9 - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $4 - local.get $4 - i32.const 2 - i32.eq - br_if $case0|0 - local.get $4 - i32.const 10 - i32.eq - br_if $case1|0 - local.get $4 - i32.const 16 - i32.eq - br_if $case2|0 - br $case3|0 - end - block $break|1 - loop $continue|1 - local.get $0 - local.get $7 - call $~lib/string/String#charCodeAt - i32.const 48 - i32.sub - local.set $4 - local.get $4 - i32.const 2 - i32.ge_u - if - br $break|1 - end - local.get $8 - call $~lib/rt/stub/__retain - local.set $11 - i32.const 1 - local.set $10 - local.get $10 - i32.const 127 - i32.and - local.set $10 - local.get $10 - i64.extend_i32_s - local.set $12 - local.get $12 - i64.const 127 - i64.add - local.get $12 - i64.or - i64.const 64 - i64.and - i64.const 6 - i64.shr_u - i64.const 1 - i64.sub - local.set $13 - local.get $12 - i64.const 6 - i64.shr_u - i64.const 1 - i64.sub - local.set $14 - local.get $12 - i64.const 63 - i64.and - local.set $12 - local.get $11 - i64.load - local.set $15 - local.get $15 - local.get $12 - i64.shl - local.set $16 - local.get $16 - local.get $14 - i64.const -1 - i64.xor - i64.and - local.set $17 - local.get $17 - local.get $11 - i64.load offset=8 - local.get $12 - i64.shl - local.get $15 - i64.const 64 - local.get $12 - i64.sub - i64.shr_u - local.get $13 - i64.and - i64.or - local.get $14 - i64.and - i64.or - local.set $17 - i32.const 0 - local.get $16 - local.get $14 - i64.and - local.get $17 - call $~lib/bignum/integer/u128/u128#constructor - local.set $18 - local.get $11 - call $~lib/rt/stub/__release - local.get $18 - local.tee $11 - local.tee $18 - local.get $8 - local.tee $10 - i32.ne - if - local.get $18 - call $~lib/rt/stub/__retain - drop - local.get $10 - call $~lib/rt/stub/__release - end - local.get $18 - local.set $8 - local.get $8 - call $~lib/rt/stub/__retain - local.set $19 - local.get $4 - i64.extend_i32_u - local.set $12 - i32.const 0 - local.get $12 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $18 - call $~lib/rt/stub/__retain - local.set $10 - i32.const 0 - local.get $19 - i64.load - local.get $10 - i64.load - i64.or - local.get $19 - i64.load offset=8 - local.get $10 - i64.load offset=8 - i64.or - call $~lib/bignum/integer/u128/u128#constructor - local.set $20 - local.get $10 - call $~lib/rt/stub/__release - local.get $19 - call $~lib/rt/stub/__release - local.get $20 - local.tee $19 - local.tee $20 - local.get $8 - local.tee $10 - i32.ne - if - local.get $20 - call $~lib/rt/stub/__retain - drop - local.get $10 - call $~lib/rt/stub/__release - end - local.get $20 - local.set $8 - local.get $7 - i32.const 1 - i32.add - local.tee $7 - local.get $2 - i32.lt_s - br_if $continue|1 - end - end - br $break|0 - end - block $break|2 - loop $continue|2 - local.get $0 - local.get $7 - call $~lib/string/String#charCodeAt - i32.const 48 - i32.sub - local.set $19 - local.get $19 - i32.const 10 - i32.ge_u - if - br $break|2 - end - local.get $8 - call $~lib/rt/stub/__retain - local.set $20 - i32.const 3 - local.set $10 - local.get $10 - i32.const 127 - i32.and - local.set $10 - local.get $10 - i64.extend_i32_s - local.set $12 - local.get $12 - i64.const 127 - i64.add - local.get $12 - i64.or - i64.const 64 - i64.and - i64.const 6 - i64.shr_u - i64.const 1 - i64.sub - local.set $17 - local.get $12 - i64.const 6 - i64.shr_u - i64.const 1 - i64.sub - local.set $16 - local.get $12 - i64.const 63 - i64.and - local.set $12 - local.get $20 - i64.load - local.set $15 - local.get $15 - local.get $12 - i64.shl - local.set $14 - local.get $14 - local.get $16 - i64.const -1 - i64.xor - i64.and - local.set $13 - local.get $13 - local.get $20 - i64.load offset=8 - local.get $12 - i64.shl - local.get $15 - i64.const 64 - local.get $12 - i64.sub - i64.shr_u - local.get $17 - i64.and - i64.or - local.get $16 - i64.and - i64.or - local.set $13 - i32.const 0 - local.get $14 - local.get $16 - i64.and - local.get $13 - call $~lib/bignum/integer/u128/u128#constructor - local.set $18 - local.get $20 - call $~lib/rt/stub/__release - local.get $18 - local.tee $20 - call $~lib/rt/stub/__retain - local.set $21 - local.get $8 - call $~lib/rt/stub/__retain - local.set $11 - i32.const 1 - local.set $4 - local.get $4 - i32.const 127 - i32.and - local.set $4 - local.get $4 - i64.extend_i32_s - local.set $13 - local.get $13 - i64.const 127 - i64.add - local.get $13 - i64.or - i64.const 64 - i64.and - i64.const 6 - i64.shr_u - i64.const 1 - i64.sub - local.set $14 - local.get $13 - i64.const 6 - i64.shr_u - i64.const 1 - i64.sub - local.set $15 - local.get $13 - i64.const 63 - i64.and - local.set $13 - local.get $11 - i64.load - local.set $16 - local.get $16 - local.get $13 - i64.shl - local.set $17 - local.get $17 - local.get $15 - i64.const -1 - i64.xor - i64.and - local.set $12 - local.get $12 - local.get $11 - i64.load offset=8 - local.get $13 - i64.shl - local.get $16 - i64.const 64 - local.get $13 - i64.sub - i64.shr_u - local.get $14 - i64.and - i64.or - local.get $15 - i64.and - i64.or - local.set $12 - i32.const 0 - local.get $17 - local.get $15 - i64.and - local.get $12 - call $~lib/bignum/integer/u128/u128#constructor - local.set $10 - local.get $11 - call $~lib/rt/stub/__release - local.get $10 - local.tee $11 - call $~lib/rt/stub/__retain - local.set $18 - local.get $18 - i64.load - local.set $12 - local.get $21 - i64.load - local.get $12 - i64.add - local.set $17 - local.get $21 - i64.load offset=8 - local.get $18 - i64.load offset=8 - i64.add - local.get $17 - local.get $12 - i64.lt_u - i64.extend_i32_u - i64.add - local.set $16 - i32.const 0 - local.get $17 - local.get $16 - call $~lib/bignum/integer/u128/u128#constructor - local.set $4 - local.get $18 - call $~lib/rt/stub/__release - local.get $21 - call $~lib/rt/stub/__release - local.get $4 - local.tee $21 - local.tee $10 - local.get $8 - local.tee $18 - i32.ne - if - local.get $10 - call $~lib/rt/stub/__retain - drop - local.get $18 - call $~lib/rt/stub/__release - end - local.get $10 - local.set $8 - local.get $8 - call $~lib/rt/stub/__retain - local.set $18 - local.get $19 - i64.extend_i32_u - local.set $13 - i32.const 0 - local.get $13 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $10 - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - i64.load - local.set $13 - local.get $18 - i64.load - local.get $13 - i64.add - local.set $16 - local.get $18 - i64.load offset=8 - local.get $4 - i64.load offset=8 - i64.add - local.get $16 - local.get $13 - i64.lt_u - i64.extend_i32_u - i64.add - local.set $17 - i32.const 0 - local.get $16 - local.get $17 - call $~lib/bignum/integer/u128/u128#constructor - local.set $22 - local.get $4 - call $~lib/rt/stub/__release - local.get $18 - call $~lib/rt/stub/__release - local.get $22 - local.tee $18 - local.tee $22 - local.get $8 - local.tee $4 - i32.ne - if - local.get $22 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $22 - local.set $8 - local.get $7 - i32.const 1 - i32.add - local.tee $7 - local.get $2 - i32.lt_s - br_if $continue|2 - end - end - br $break|0 - end - block $break|3 - loop $continue|3 - local.get $0 - local.get $7 - call $~lib/string/String#charCodeAt - i32.const 48 - i32.sub - local.set $18 - local.get $18 - i32.const 74 - i32.gt_u - if - br $break|3 - end - local.get $9 - local.get $18 - call $~lib/array/Array#__get - local.set $10 - local.get $10 - i32.const 16 - i32.ge_u - if - br $break|3 - end - local.get $8 - call $~lib/rt/stub/__retain - local.set $22 - i32.const 4 - local.set $4 - local.get $4 - i32.const 127 - i32.and - local.set $4 - local.get $4 - i64.extend_i32_s - local.set $17 - local.get $17 - i64.const 127 - i64.add - local.get $17 - i64.or - i64.const 64 - i64.and - i64.const 6 - i64.shr_u - i64.const 1 - i64.sub - local.set $16 - local.get $17 - i64.const 6 - i64.shr_u - i64.const 1 - i64.sub - local.set $13 - local.get $17 - i64.const 63 - i64.and - local.set $17 - local.get $22 - i64.load - local.set $12 - local.get $12 - local.get $17 - i64.shl - local.set $15 - local.get $15 - local.get $13 - i64.const -1 - i64.xor - i64.and - local.set $14 - local.get $14 - local.get $22 - i64.load offset=8 - local.get $17 - i64.shl - local.get $12 - i64.const 64 - local.get $17 - i64.sub - i64.shr_u - local.get $16 - i64.and - i64.or - local.get $13 - i64.and - i64.or - local.set $14 - i32.const 0 - local.get $15 - local.get $13 - i64.and - local.get $14 - call $~lib/bignum/integer/u128/u128#constructor - local.set $21 - local.get $22 - call $~lib/rt/stub/__release - local.get $21 - local.tee $22 - local.tee $19 - local.get $8 - local.tee $4 - i32.ne - if - local.get $19 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $19 - local.set $8 - local.get $8 - call $~lib/rt/stub/__retain - local.set $11 - local.get $10 - i64.extend_i32_u - local.set $17 - i32.const 0 - local.get $17 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $19 - call $~lib/rt/stub/__retain - local.set $20 - i32.const 0 - local.get $11 - i64.load - local.get $20 - i64.load - i64.or - local.get $11 - i64.load offset=8 - local.get $20 - i64.load offset=8 - i64.or - call $~lib/bignum/integer/u128/u128#constructor - local.set $4 - local.get $20 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $4 - local.tee $11 - local.tee $21 - local.get $8 - local.tee $20 - i32.ne - if - local.get $21 - call $~lib/rt/stub/__retain - drop - local.get $20 - call $~lib/rt/stub/__release - end - local.get $21 - local.set $8 - local.get $7 - i32.const 1 - i32.add - local.tee $7 - local.get $2 - i32.lt_s - br_if $continue|3 - end - end - br $break|0 - end - local.get $1 - i64.extend_i32_s - local.set $16 - i32.const 0 - local.get $16 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.set $11 - block $break|4 - loop $continue|4 - local.get $0 - local.get $7 - call $~lib/string/String#charCodeAt - i32.const 48 - i32.sub - local.set $19 - local.get $19 - i32.const 74 - i32.gt_u - if - br $break|4 - end - local.get $9 - local.get $19 - call $~lib/array/Array#__get - local.set $22 - local.get $22 - local.get $1 - i32.const 255 - i32.and - i32.ge_u - if - br $break|4 - end - local.get $8 - call $~lib/rt/stub/__retain - local.set $20 - local.get $11 - call $~lib/rt/stub/__retain - local.set $4 - i32.const 0 - local.get $20 - i64.load - local.get $20 - i64.load offset=8 - local.get $4 - i64.load - local.get $4 - i64.load offset=8 - call $~lib/bignum/globals/__multi3 - i32.const 0 - global.get $~lib/bignum/globals/__res128_lo - global.get $~lib/bignum/globals/__res128_hi - call $~lib/bignum/integer/u128/u128#constructor - local.set $10 - local.get $4 - call $~lib/rt/stub/__release - local.get $20 - call $~lib/rt/stub/__release - local.get $10 - local.tee $20 - local.tee $21 - local.get $8 - local.tee $4 - i32.ne - if - local.get $21 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $21 - local.set $8 - local.get $8 - call $~lib/rt/stub/__retain - local.set $10 - local.get $22 - i64.extend_i32_u - local.set $13 - i32.const 0 - local.get $13 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $21 - call $~lib/rt/stub/__retain - local.set $18 - local.get $18 - i64.load - local.set $13 - local.get $10 - i64.load - local.get $13 - i64.add - local.set $16 - local.get $10 - i64.load offset=8 - local.get $18 - i64.load offset=8 - i64.add - local.get $16 - local.get $13 - i64.lt_u - i64.extend_i32_u - i64.add - local.set $17 - i32.const 0 - local.get $16 - local.get $17 - call $~lib/bignum/integer/u128/u128#constructor - local.set $4 - local.get $18 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/rt/stub/__release - local.get $4 - local.tee $10 - local.tee $4 - local.get $8 - local.tee $18 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $18 - call $~lib/rt/stub/__release - end - local.get $4 - local.set $8 - local.get $7 - i32.const 1 - i32.add - local.tee $7 - local.get $2 - i32.lt_s - br_if $continue|4 - end - end - local.get $11 - call $~lib/rt/stub/__release - br $break|0 - end - local.get $6 - if (result i32) - local.get $8 - local.set $18 - local.get $18 - i64.load - i64.const -1 - i64.xor - local.set $17 - local.get $18 - i64.load offset=8 - i64.const -1 - i64.xor - local.set $16 - local.get $17 - i64.const 1 - i64.and - local.get $17 - i64.const 1 - i64.shr_u - i64.add - i64.const 63 - i64.shr_u - local.set $13 - i32.const 0 - local.get $17 - i64.const 1 - i64.add - local.get $16 - local.get $13 - i64.add - call $~lib/bignum/integer/u128/u128#constructor - local.tee $18 - local.tee $11 - else - local.get $8 - call $~lib/rt/stub/__retain - local.tee $10 - end - call $~lib/rt/stub/__retain - local.set $18 - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - local.get $18 - ) - (func $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.get $1 - call $~lib/nearEntry/decodeString - local.set $3 - i32.const 0 - local.set $4 - local.get $3 - local.get $4 - call $~lib/bignum/utils/atou128 - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - local.set $4 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - return - ) - (func $assembly/model/__near_JSONHandler_FooBar#pushObject (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne - i32.eqz - if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 2192 - i32.const 100 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 2192 - i32.const 104 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.const 2248 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> - local.set $3 - local.get $2 - i32.load offset=56 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=56 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 140 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 143 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 144 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/model/__near_JSONHandler_FooBar#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 14 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - if - i32.const 1256 - i32.const 1368 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#constructor (; 146 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 37 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 1 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/stub/__retain - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#constructor (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 38 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#isWhitespace (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace (; 151 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#constructor (; 152 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 39 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 1 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/stub/__retain - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#constructor (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 40 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar (; 154 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#isWhitespace (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace (; 157 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $~lib/nearEntry/decode<~lib/string/String> (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - global.get $~lib/nearEntry/PrimitiveHandler.String - local.get $0 - local.get $1 - call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#decode - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - ) - (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#pushObject (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=8 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.load offset=12 - call $~lib/rt/stub/__retain - local.set $3 - local.get $2 - local.get $3 - call $~lib/nearEntry/decode<~lib/string/String> - local.set $4 - local.get $0 - i32.load offset=4 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - i32.const 0 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $5 - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readHexDigit (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readEscapedChar (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readString (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseKey (; 163 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseObject (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/string/String>#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#pushArray (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u - if - local.get $0 - i32.const 0 - i32.store8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 3440 - i32.const 3496 - i32.const 276 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - local.get $0 - i32.load offset=12 - call $~lib/nearEntry/decode<~lib/string/String> - local.tee $2 - call $~lib/array/Array<~lib/string/String>#push - drop - i32.const 0 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseArray (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/string/String>#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#setString (; 167 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseString (; 168 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readString - local.tee $1 - call $~lib/nearEntry/ArrayHandler<~lib/string/String>#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readAndAssert (; 169 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#setBoolean (; 170 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseBoolean (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/nearEntry/ArrayHandler<~lib/string/String>#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/nearEntry/ArrayHandler<~lib/string/String>#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#setInteger (; 172 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseNumber (; 173 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/nearEntry/ArrayHandler<~lib/string/String>#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull (; 174 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.eqz - if - i32.const 3552 - local.get $1 - call $~lib/string/String.__concat - local.tee $2 - i32.const 840 - i32.const 44 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler<~lib/string/String>#setNull (; 175 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseNull (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $~lib/nearEntry/ArrayHandler<~lib/string/String>#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseValue (; 177 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#deserialize (; 178 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/string/String>> (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $2 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.get $3 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/string/String>#constructor - local.set $4 - i32.const 0 - local.get $4 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#constructor - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/string/String>>#deserialize - local.get $3 - local.set $6 - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/string/String>> - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#pushObject (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=8 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.load offset=12 - call $~lib/rt/stub/__retain - local.set $3 - local.get $2 - local.get $3 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> - local.set $4 - local.get $0 - i32.load offset=4 - local.get $4 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push - drop - i32.const 0 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $5 - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readHexDigit (; 183 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readEscapedChar (; 184 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readString (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseKey (; 186 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseObject (; 187 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#pushArray (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u - if - local.get $0 - i32.const 0 - i32.store8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 3440 - i32.const 3496 - i32.const 276 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - local.get $0 - i32.load offset=12 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> - local.tee $2 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push - drop - i32.const 0 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseArray (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString (; 190 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.eqz - if - i32.const 3616 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 3680 - call $~lib/string/String.__concat - local.tee $4 - local.get $2 - call $~lib/string/String.__concat - local.tee $5 - i32.const 1152 - call $~lib/string/String.__concat - local.tee $6 - i32.const 840 - i32.const 36 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setString (; 191 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseString (; 192 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readString - local.tee $1 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readAndAssert (; 193 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setBoolean (; 194 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseBoolean (; 195 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setInteger (; 196 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseNumber (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setNull (; 198 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseNull (; 199 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseValue (; 200 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#deserialize (; 201 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 202 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor - local.tee $2 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.get $3 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>#constructor - local.set $4 - i32.const 0 - local.get $4 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#constructor - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array<~lib/string/String>>>#deserialize - local.get $3 - local.set $6 - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $~lib/array/Array#constructor (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 15 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/nearEntry/ArrayHandler#constructor (; 205 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 41 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 1 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/stub/__retain - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 42 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar (; 207 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar (; 209 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace (; 210 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $~lib/nearEntry/ArrayHandler#pushObject (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit (; 212 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar (; 213 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString (; 214 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey (; 215 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject (; 216 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler#pushArray (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u - if - local.get $0 - i32.const 0 - i32.store8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 3440 - i32.const 3496 - i32.const 276 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray (; 218 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler#setString (; 219 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString (; 220 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString - local.tee $1 - call $~lib/nearEntry/ArrayHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert (; 221 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler#setBoolean (; 222 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/nearEntry/ArrayHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/nearEntry/ArrayHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/array/Array#push (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler#setInteger (; 225 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.wrap_i64 - call $~lib/array/Array#push - drop - local.get $1 - call $~lib/rt/stub/__release - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/nearEntry/ArrayHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler#setNull (; 227 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $~lib/nearEntry/ArrayHandler#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue (; 229 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize (; 230 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.tee $2 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.get $3 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler#constructor - local.set $4 - i32.const 0 - local.get $4 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize - local.get $3 - local.set $6 - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $~lib/array/Array#constructor (; 233 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 16 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/nearEntry/ArrayHandler#constructor (; 234 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 43 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 1 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/stub/__retain - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 44 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace (; 239 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $~lib/nearEntry/ArrayHandler#pushObject (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey (; 244 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject (; 245 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler#pushArray (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u - if - local.get $0 - i32.const 0 - i32.store8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 3440 - i32.const 3496 - i32.const 276 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler#setString (; 248 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString (; 249 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString - local.tee $1 - call $~lib/nearEntry/ArrayHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert (; 250 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler#setBoolean (; 251 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/nearEntry/ArrayHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/nearEntry/ArrayHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/array/Array#push (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler#setInteger (; 254 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.wrap_i64 - call $~lib/array/Array#push - drop - local.get $1 - call $~lib/rt/stub/__release - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/nearEntry/ArrayHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler#setNull (; 256 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $~lib/nearEntry/ArrayHandler#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize (; 259 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> (; 260 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.tee $2 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.get $3 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler#constructor - local.set $4 - i32.const 0 - local.get $4 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize - local.get $3 - local.set $6 - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 17 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - if - i32.const 1256 - i32.const 1368 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#constructor (; 263 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 45 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 1 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/stub/__retain - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#constructor (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 46 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#isWhitespace (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace (; 268 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $~lib/string/String#charAt (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - call $~lib/string/String#get:length - i32.ge_u - if - i32.const 656 - call $~lib/rt/stub/__retain - return - end - i32.const 2 - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $2 - call $~lib/rt/stub/__retain - ) - (func $~lib/string/String#indexOf (; 270 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $5 - local.get $5 - i32.eqz - if - i32.const -1 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - return - end - local.get $2 - local.tee $4 - i32.const 0 - local.tee $6 - local.get $4 - local.get $6 - i32.gt_s - select - local.tee $4 - local.get $5 - local.tee $6 - local.get $4 - local.get $6 - i32.lt_s - select - local.set $7 - block $break|0 - local.get $5 - local.get $3 - i32.sub - local.set $5 - loop $loop|0 - local.get $7 - local.get $5 - i32.le_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $7 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - if - local.get $7 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - return - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $loop|0 - end - unreachable - end - i32.const -1 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/near-runtime-ts/base64/base64.getByte64 (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - global.get $~lib/near-runtime-ts/base64/base64.ALPHA - local.get $0 - local.get $1 - call $~lib/string/String#charAt - local.tee $2 - i32.const 0 - call $~lib/string/String#indexOf - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8Array#__set (; 272 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 672 - i32.const 728 - i32.const 146 - i32.const 44 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/near-runtime-ts/base64/base64.decode (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $3 - local.get $0 - call $~lib/string/String#get:length - local.set $4 - local.get $4 - i32.const 0 - i32.eq - if - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint8Array#constructor - local.set $5 - local.get $0 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $0 - local.get $4 - i32.const 1 - i32.sub - call $~lib/string/String#charAt - local.tee $5 - i32.const 384 - call $~lib/string/String.__eq - if - i32.const 1 - local.set $3 - local.get $0 - local.get $4 - i32.const 2 - i32.sub - call $~lib/string/String#charAt - local.tee $6 - i32.const 384 - call $~lib/string/String.__eq - if - i32.const 2 - local.set $3 - end - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - end - local.get $4 - i32.const 4 - i32.rem_u - i32.const 0 - i32.eq - if (result i32) - local.get $4 - i32.const 4 - i32.div_u - i32.const 3 - i32.mul - else - local.get $4 - i32.const 4 - i32.div_u - i32.const 1 - i32.add - i32.const 3 - i32.mul - end - local.set $6 - local.get $3 - i32.const 0 - i32.gt_s - if (result i32) - i32.const 3 - local.get $3 - i32.sub - else - i32.const 0 - end - local.set $7 - local.get $6 - local.get $7 - i32.add - local.set $8 - i32.const 0 - local.get $8 - call $~lib/typedarray/Uint8Array#constructor - local.set $9 - i32.const 0 - local.set $10 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/near-runtime-ts/base64/base64.getByte64 - i32.const 18 - i32.shl - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/near-runtime-ts/base64/base64.getByte64 - i32.const 12 - i32.shl - i32.or - local.get $0 - local.get $1 - i32.const 2 - i32.add - call $~lib/near-runtime-ts/base64/base64.getByte64 - i32.const 6 - i32.shl - i32.or - local.get $0 - local.get $1 - i32.const 3 - i32.add - call $~lib/near-runtime-ts/base64/base64.getByte64 - i32.or - local.set $2 - local.get $9 - local.get $10 - local.tee $11 - i32.const 1 - i32.add - local.set $10 - local.get $11 - local.get $2 - i32.const 16 - i32.shr_u - call $~lib/typedarray/Uint8Array#__set - local.get $9 - local.get $10 - local.tee $11 - i32.const 1 - i32.add - local.set $10 - local.get $11 - local.get $2 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $9 - local.get $10 - local.tee $11 - i32.const 1 - i32.add - local.set $10 - local.get $11 - local.get $2 - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $loop|0 - end - unreachable - end - block $break|1 - block $case1|1 - block $case0|1 - local.get $3 - local.set $11 - local.get $11 - i32.const 1 - i32.eq - br_if $case0|1 - local.get $11 - i32.const 2 - i32.eq - br_if $case1|1 - br $break|1 - end - local.get $0 - local.get $1 - call $~lib/near-runtime-ts/base64/base64.getByte64 - i32.const 18 - i32.shl - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/near-runtime-ts/base64/base64.getByte64 - i32.const 12 - i32.shl - i32.or - local.get $0 - local.get $1 - i32.const 2 - i32.add - call $~lib/near-runtime-ts/base64/base64.getByte64 - i32.const 6 - i32.shl - i32.or - local.set $2 - local.get $9 - local.get $10 - local.tee $11 - i32.const 1 - i32.add - local.set $10 - local.get $11 - local.get $2 - i32.const 16 - i32.shr_u - call $~lib/typedarray/Uint8Array#__set - local.get $9 - local.get $10 - local.tee $11 - i32.const 1 - i32.add - local.set $10 - local.get $11 - local.get $2 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - br $break|1 - end - local.get $0 - local.get $1 - call $~lib/near-runtime-ts/base64/base64.getByte64 - i32.const 18 - i32.shl - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/near-runtime-ts/base64/base64.getByte64 - i32.const 12 - i32.shl - i32.or - local.set $2 - local.get $9 - local.get $10 - local.tee $11 - i32.const 1 - i32.add - local.set $10 - local.get $11 - local.get $2 - i32.const 16 - i32.shr_u - call $~lib/typedarray/Uint8Array#__set - br $break|1 - end - local.get $9 - local.set $11 - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $11 - ) - (func $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - global.get $~lib/nearEntry/PrimitiveHandler.String - local.get $0 - local.get $1 - call $~lib/nearEntry/PrimitiveHandler<~lib/string/String>#decode - local.tee $3 - call $~lib/near-runtime-ts/base64/base64.decode - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - return - ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#push (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#pushObject (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=8 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.load offset=12 - call $~lib/rt/stub/__retain - local.set $3 - local.get $2 - local.get $3 - call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> - local.set $4 - local.get $0 - i32.load offset=4 - local.get $4 - call $~lib/array/Array<~lib/typedarray/Uint8Array>#push - drop - i32.const 0 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $5 - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readHexDigit (; 277 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readEscapedChar (; 278 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readString (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseKey (; 280 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseObject (; 281 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#pushArray (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u - if - local.get $0 - i32.const 0 - i32.store8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 3440 - i32.const 3496 - i32.const 276 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - local.get $0 - i32.load offset=12 - call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> - local.tee $2 - call $~lib/array/Array<~lib/typedarray/Uint8Array>#push - drop - i32.const 0 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseArray (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setString (; 284 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=4 - local.get $2 - call $~lib/near-runtime-ts/base64/base64.decode - local.tee $4 - call $~lib/array/Array<~lib/typedarray/Uint8Array>#push - drop - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseString (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readString - local.tee $1 - call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readAndAssert (; 286 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setBoolean (; 287 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseBoolean (; 288 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setInteger (; 289 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseNumber (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setNull (; 291 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseNull (; 292 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseValue (; 293 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#deserialize (; 294 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor - local.tee $2 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.get $3 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>#constructor - local.set $4 - i32.const 0 - local.get $4 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#constructor - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/typedarray/Uint8Array>>#deserialize - local.get $3 - local.set $6 - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/typedarray/Uint8Array>> - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $~lib/array/Array#constructor (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 18 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/nearEntry/ArrayHandler#constructor (; 298 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 47 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 1 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/stub/__retain - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 48 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar (; 300 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 13 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar (; 302 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace (; 303 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - br $continue|0 - end - unreachable - end - ) - (func $~lib/nearEntry/ArrayHandler#pushObject (; 304 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit (; 305 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar (; 306 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString (; 307 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey (; 308 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject (; 309 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler#pushArray (; 310 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u - if - local.get $0 - i32.const 0 - i32.store8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 3440 - i32.const 3496 - i32.const 276 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray (; 311 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/util/string/isSpace (; 312 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 255 - i32.le_s - if - block $break|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 9 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 10 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 11 - i32.eq - br_if $case2|0 - local.get $1 - i32.const 12 - i32.eq - br_if $case3|0 - local.get $1 - i32.const 13 - i32.eq - br_if $case4|0 - local.get $1 - i32.const 32 - i32.eq - br_if $case5|0 - local.get $1 - i32.const 160 - i32.eq - br_if $case6|0 - br $break|0 - end - end - end - end - end - end - end - i32.const 1 - return - end - i32.const 0 - return - end - local.get $0 - i32.const 8192 - i32.ge_s - if (result i32) - local.get $0 - i32.const 8202 - i32.le_s - else - i32.const 0 - end - if - i32.const 1 - return - end - block $break|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $0 - local.set $1 - local.get $1 - i32.const 5760 - i32.eq - br_if $case0|1 - local.get $1 - i32.const 8232 - i32.eq - br_if $case1|1 - local.get $1 - i32.const 8233 - i32.eq - br_if $case2|1 - local.get $1 - i32.const 8239 - i32.eq - br_if $case3|1 - local.get $1 - i32.const 8287 - i32.eq - br_if $case4|1 - local.get $1 - i32.const 12288 - i32.eq - br_if $case5|1 - local.get $1 - i32.const 65279 - i32.eq - br_if $case6|1 - br $break|1 - end - end - end - end - end - end - end - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/util/string/strtol (; 313 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i32) - (local $8 i64) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - i32.eqz - if - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - local.set $4 - local.get $4 - i32.load16_u - local.set $5 - i64.const 1 - local.set $6 - block $break|0 - loop $continue|0 - local.get $5 - call $~lib/util/string/isSpace - i32.eqz - br_if $break|0 - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - unreachable - end - local.get $5 - i32.const 45 - i32.eq - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - if - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - i64.const -1 - local.set $6 - else - local.get $5 - i32.const 43 - i32.eq - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - if - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - end - end - local.get $1 - i32.eqz - if - local.get $5 - i32.const 48 - i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.gt_s - else - i32.const 0 - end - if - block $break|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - i32.const 2 - i32.add - i32.load16_u - local.set $7 - local.get $7 - i32.const 66 - i32.eq - br_if $case0|1 - local.get $7 - i32.const 98 - i32.eq - br_if $case1|1 - local.get $7 - i32.const 79 - i32.eq - br_if $case2|1 - local.get $7 - i32.const 111 - i32.eq - br_if $case3|1 - local.get $7 - i32.const 88 - i32.eq - br_if $case4|1 - local.get $7 - i32.const 120 - i32.eq - br_if $case5|1 - br $case6|1 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - br $break|1 - end - i32.const 10 - local.set $1 - end - else - i32.const 10 - local.set $1 - end - else - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - return - end - end - i64.const 0 - local.set $8 - block $break|2 - loop $continue|2 - local.get $2 - local.tee $7 - i32.const 1 - i32.sub - local.set $2 - local.get $7 - i32.eqz - br_if $break|2 - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.ge_s - if (result i32) - local.get $5 - i32.const 57 - i32.le_s - else - i32.const 0 - end - if - local.get $5 - i32.const 48 - i32.sub - local.set $5 - else - local.get $5 - i32.const 65 - i32.ge_s - if (result i32) - local.get $5 - i32.const 90 - i32.le_s - else - i32.const 0 - end - if - local.get $5 - i32.const 65 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - local.get $5 - i32.const 97 - i32.ge_s - if (result i32) - local.get $5 - i32.const 122 - i32.le_s - else - i32.const 0 - end - if - local.get $5 - i32.const 97 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - br $break|2 - end - end - end - local.get $5 - local.get $1 - i32.ge_s - if - br $break|2 - end - local.get $8 - local.get $1 - i64.extend_i32_s - i64.mul - local.get $5 - i64.extend_i32_s - i64.add - local.set $8 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $continue|2 - end - unreachable - end - local.get $6 - local.get $8 - i64.mul - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/number/U64.parseInt (; 314 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/array/Array#push (; 315 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $1 - i64.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler#setString (; 316 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - call $~lib/number/U64.parseInt - call $~lib/array/Array#push - drop - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString (; 317 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString - local.tee $1 - call $~lib/nearEntry/ArrayHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler#setBoolean (; 319 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean (; 320 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/nearEntry/ArrayHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/nearEntry/ArrayHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler#setInteger (; 321 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.get $2 - call $~lib/array/Array#push - drop - local.get $1 - call $~lib/rt/stub/__release - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber (; 322 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/nearEntry/ArrayHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler#setNull (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull (; 324 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $~lib/nearEntry/ArrayHandler#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue (; 325 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize (; 326 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> (; 327 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.tee $2 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.get $3 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler#constructor - local.set $4 - i32.const 0 - local.get $4 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize - local.get $3 - local.set $6 - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 328 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $assembly/model/__near_JSONHandler_FooBar#pushArray (; 329 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3416 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> - local.set $3 - local.get $2 - i32.load offset=44 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=44 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $1 - i32.const 3704 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/array/Array> - local.set $2 - local.get $3 - i32.load offset=48 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=48 - i32.const 0 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $1 - i32.const 3736 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/array/Array> - local.set $3 - local.get $2 - i32.load offset=52 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=52 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $1 - i32.const 3768 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> - local.set $2 - local.get $3 - i32.load offset=60 - call $~lib/rt/stub/__release - local.get $2 - i32.store offset=60 - i32.const 0 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $1 - i32.const 3808 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/array/Array> - local.set $3 - local.get $2 - i32.load offset=64 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=64 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 330 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/model/__near_JSONHandler_FooBar#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/number/I64.parseInt (; 331 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $assembly/model/__near_JSONHandler_FooBar#setString (; 332 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3840 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.get $2 - i32.const 0 - call $~lib/number/U64.parseInt - i64.store offset=8 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3872 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.get $2 - i32.const 0 - call $~lib/number/U64.parseInt - i64.store offset=16 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3904 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.get $2 - i32.const 0 - call $~lib/number/I64.parseInt - i64.store offset=24 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3936 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=36 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=36 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3960 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $2 - call $~lib/near-runtime-ts/base64/base64.decode - local.set $3 - local.get $4 - i32.load offset=40 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=40 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 2248 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $2 - call $~lib/rt/stub/__retain - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $3 - call $~lib/bignum/utils/atou128 - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - local.set $5 - local.get $3 - i32.load offset=56 - call $~lib/rt/stub/__release - local.get $5 - i32.store offset=56 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 333 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $assembly/model/__near_JSONHandler_FooBar#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 334 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $assembly/model/__near_JSONHandler_FooBar#setBoolean (; 335 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 4000 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.get $2 - i32.store8 offset=32 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 336 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $assembly/model/__near_JSONHandler_FooBar#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $assembly/model/__near_JSONHandler_FooBar#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/model/__near_JSONHandler_FooBar#setInteger (; 337 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 4024 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.get $2 - i32.wrap_i64 - i32.store - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 4048 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.get $2 - i32.wrap_i64 - i32.store offset=4 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 338 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $assembly/model/__near_JSONHandler_FooBar#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/model/__near_JSONHandler_FooBar#setNull (; 339 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3936 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=36 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=36 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3960 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - local.tee $2 - local.get $3 - i32.load offset=40 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - i32.store offset=40 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3416 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=44 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=44 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3704 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - local.tee $2 - local.get $3 - i32.load offset=48 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - i32.store offset=48 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3736 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=52 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=52 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 2248 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - local.tee $2 - local.get $3 - i32.load offset=56 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - i32.store offset=56 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3768 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=60 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=60 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 3808 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - local.tee $2 - local.get $3 - i32.load offset=64 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - i32.store offset=64 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 340 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/model/__near_JSONHandler_FooBar#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 341 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 342 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/model/FooBar#decode (; 343 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.get $0 - call $assembly/model/__near_JSONHandler_FooBar#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $5 - local.get $3 - local.tee $4 - local.get $5 - local.tee $6 - local.get $4 - i32.load offset=4 - local.tee $4 - i32.ne - if - local.get $6 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $6 - i32.store offset=4 - local.get $5 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $0 - call $~lib/rt/stub/__retain - local.set $6 - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/decode (; 344 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - i32.const 0 - call $assembly/model/FooBar#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - local.get $0 - local.get $1 - call $assembly/model/FooBar#decode - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - ) - (func $~lib/array/Array#push (; 345 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/nearEntry/ArrayHandler#pushObject (; 346 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=8 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.load offset=12 - call $~lib/rt/stub/__retain - local.set $3 - local.get $2 - local.get $3 - call $~lib/nearEntry/decode - local.set $4 - local.get $0 - i32.load offset=4 - local.get $4 - call $~lib/array/Array#push - drop - i32.const 0 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $5 - return - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit (; 347 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar (; 348 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey (; 350 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject (; 351 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler#pushArray (; 352 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u - if - local.get $0 - i32.const 0 - i32.store8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 3440 - i32.const 3496 - i32.const 276 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray (; 353 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/ArrayHandler#setString (; 354 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readString - local.tee $1 - call $~lib/nearEntry/ArrayHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert (; 356 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler#setBoolean (; 357 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean (; 358 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/nearEntry/ArrayHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/nearEntry/ArrayHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler#setInteger (; 359 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/nearEntry/ArrayHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler#setNull (; 361 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull (; 362 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $~lib/nearEntry/ArrayHandler#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize (; 364 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> (; 365 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.tee $2 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.get $3 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler#constructor - local.set $4 - i32.const 0 - local.get $4 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#constructor - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler>#deserialize - local.get $3 - local.set $6 - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 366 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array> - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $assembly/test/__near_ArgsParser_convertFoobars#pushArray (; 367 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 2136 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/array/Array> - local.set $3 - local.get $2 - i32.load offset=12 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=12 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 368 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/test/__near_ArgsParser_convertFoobars#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 369 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 370 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 372 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/test/__near_ArgsParser_convertFoobars#setNull (; 373 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 2136 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/test/__near_ArgsParser_convertFoobars#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 375 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 376 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/main/convertFoobars~anonymous|0 (; 377 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 4 - i32.const 49 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $0 - i32.store - local.get $3 - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/array/Array#map (; 378 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 2 - i32.const 50 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - local.tee $6 - call $~lib/rt/stub/__retain - local.set $7 - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - call $~lib/rt/stub/__retain - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $3 - ) - (func $assembly/main/convertFoobars (; 379 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.const 1 - call $~lib/array/Array#map - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $assembly/test/convertFoobars (; 380 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $assembly/main/convertFoobars - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 381 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 51 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $1 - i32.const 0 - i32.const 10 - call $~lib/array/Array#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - local.tee $2 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $1 - local.get $2 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $1 - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - call $~lib/array/Array#push - drop - local.get $0 - ) - (func $~lib/array/Array#get:length (; 382 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__unchecked_get (; 383 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (; 384 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1368 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 385 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load - call $~lib/array/Array#get:length - i32.const 1 - i32.sub - call $~lib/array/Array#__get - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 386 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/array/Array#__unchecked_set (; 387 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (; 388 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__unchecked_set - local.get $1 - local.get $3 - i32.ge_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - ) - (func $~lib/string/String#substring (; 389 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $6 - local.get $2 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $7 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 - i32.sub - local.set $3 - local.get $3 - i32.eqz - if - i32.const 656 - call $~lib/rt/stub/__retain - return - end - local.get $8 - i32.eqz - if (result i32) - local.get $9 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - i32.eq - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/stub/__retain - return - end - local.get $3 - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $10 - local.get $10 - local.get $0 - local.get $8 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $10 - call $~lib/rt/stub/__retain - ) - (func $~lib/util/number/itoa32 (; 390 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 240 - call $~lib/rt/stub/__retain - return - end - local.get $0 - i32.const 0 - i32.lt_s - local.set $1 - local.get $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.set $2 - local.get $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - local.set $6 - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - local.get $1 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/stub/__retain - ) - (func $~lib/util/number/itoa (; 391 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/util/number/itoa32 - return - ) - (func $~lib/number/I32#toString (; 392 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/util/number/itoa - local.tee $1 - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 393 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.const 1152 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - i32.const 0 - local.set $2 - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $3 - call $~lib/string/String#charCodeAt - local.set $4 - local.get $4 - i32.const 32 - i32.lt_s - local.tee $5 - if (result i32) - local.get $5 - else - local.get $4 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - end - local.tee $5 - if (result i32) - local.get $5 - else - local.get $4 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - end - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/string/String#substring - local.tee $6 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $3 - i32.const 1 - i32.add - local.set $2 - local.get $4 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 4072 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $4 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 4096 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $4 - i32.const 1656 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 4120 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $4 - i32.const 1704 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 4144 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $4 - i32.const 1752 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 4168 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $4 - i32.const 1800 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.const 4192 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - i32.const 0 - i32.eqz - if - i32.const 4216 - local.get $4 - call $~lib/number/I32#toString - local.tee $7 - call $~lib/string/String.__concat - local.tee $8 - i32.const 4304 - i32.const 108 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - end - end - end - end - end - end - local.get $6 - call $~lib/rt/stub/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|0 - end - unreachable - end - local.get $0 - local.get $1 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - call $~lib/string/String#substring - local.tee $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $0 - i32.const 1152 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $5 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 394 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey - i32.const 0 - i32.ne - i32.eqz - if - local.get $0 - i32.const 1088 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - else - local.get $0 - i32.load - local.get $0 - i32.load - call $~lib/array/Array#get:length - i32.const 1 - i32.sub - i32.const 0 - call $~lib/array/Array#__set - end - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.gt_s - else - i32.const 0 - end - if - local.get $0 - local.get $1 - local.tee $2 - if (result i32) - local.get $2 - else - unreachable - end - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString - local.get $0 - i32.const 1984 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 395 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey - local.get $0 - i32.const 216 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 396 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey - local.get $0 - i32.const 2112 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $0 - i32.load - i32.const 1 - call $~lib/array/Array#push - drop - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/array/Array#get:length (; 397 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__unchecked_get (; 398 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array#__get (; 399 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1256 - i32.const 1368 - i32.const 106 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1368 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 400 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey - local.get $0 - i32.const 928 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $0 - i32.load - i32.const 1 - call $~lib/array/Array#push - drop - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 401 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/number/I64#toString - local.tee $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 402 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/encode (; 403 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $2 - local.get $1 - i64.extend_i32_s - call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger - local.get $0 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/encode (; 404 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $2 - local.get $1 - i64.extend_i32_u - call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger - local.get $0 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/util/number/utoa64 (; 405 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - local.get $0 - i64.eqz - if - i32.const 240 - call $~lib/rt/stub/__retain - return - end - local.get $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $2 - local.get $2 - call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $1 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - else - local.get $0 - call $~lib/util/number/decimalCount64 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $1 - local.get $1 - local.set $5 - local.get $0 - local.set $7 - local.get $3 - local.set $4 - local.get $5 - local.get $7 - local.get $4 - call $~lib/util/number/utoa64_lut - end - local.get $1 - call $~lib/rt/stub/__retain - ) - (func $~lib/util/number/itoa (; 406 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - local.get $0 - call $~lib/util/number/utoa64 - return - ) - (func $~lib/number/U64#toString (; 407 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/util/number/itoa - local.tee $1 - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 408 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/encode (; 409 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $2 - local.get $1 - call $~lib/number/U64#toString - local.tee $3 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setString - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/encode (; 410 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $2 - local.get $1 - call $~lib/number/I64#toString - local.tee $3 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setString - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 411 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - if (result i32) - i32.const 160 - call $~lib/rt/stub/__retain - local.tee $2 - else - i32.const 184 - call $~lib/rt/stub/__retain - local.tee $3 - end - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 412 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/nearEntry/encode (; 413 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $2 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean - local.get $0 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/encode<~lib/string/String> (; 414 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setString - end - local.get $0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/near-runtime-ts/base64/base64.encode (; 415 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $3 - local.get $0 - call $~lib/typedarray/Uint8Array#get:length - local.get $0 - call $~lib/typedarray/Uint8Array#get:length - i32.const 3 - i32.rem_s - i32.sub - local.set $4 - local.get $0 - call $~lib/typedarray/Uint8Array#get:length - i32.const 0 - i32.eq - if - i32.const 656 - call $~lib/rt/stub/__retain - local.set $5 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - return - end - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - i32.const 16 - i32.shl - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.shl - i32.or - local.get $0 - local.get $1 - i32.const 2 - i32.add - call $~lib/typedarray/Uint8Array#__get - i32.or - local.set $2 - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.ALPHA - local.get $2 - i32.const 18 - i32.shr_u - call $~lib/string/String#charAt - local.tee $5 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.ALPHA - local.get $2 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - call $~lib/string/String#charAt - local.tee $6 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.ALPHA - local.get $2 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - call $~lib/string/String#charAt - local.tee $7 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.ALPHA - local.get $2 - i32.const 63 - i32.and - call $~lib/string/String#charAt - local.tee $8 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $1 - i32.const 3 - i32.add - local.set $1 - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - block $break|1 - block $case1|1 - block $case0|1 - local.get $0 - call $~lib/typedarray/Uint8Array#get:length - local.get $4 - i32.sub - local.set $8 - local.get $8 - i32.const 1 - i32.eq - br_if $case0|1 - local.get $8 - i32.const 2 - i32.eq - br_if $case1|1 - br $break|1 - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - i32.const 16 - i32.shl - local.set $2 - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.ALPHA - local.get $2 - i32.const 18 - i32.shr_u - call $~lib/string/String#charAt - local.tee $8 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.ALPHA - local.get $2 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - call $~lib/string/String#charAt - local.tee $7 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.PADCHAR - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.PADCHAR - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $8 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - br $break|1 - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - i32.const 16 - i32.shl - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.shl - i32.or - local.set $2 - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.ALPHA - local.get $2 - i32.const 18 - i32.shr_u - call $~lib/string/String#charAt - local.tee $7 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.ALPHA - local.get $2 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - call $~lib/string/String#charAt - local.tee $8 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.ALPHA - local.get $2 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - call $~lib/string/String#charAt - local.tee $6 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $3 - global.get $~lib/near-runtime-ts/base64/base64.PADCHAR - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - br $break|1 - end - local.get $3 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $6 - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> (; 416 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - local.get $1 - call $~lib/near-runtime-ts/base64/base64.encode - local.tee $3 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setString - local.get $3 - call $~lib/rt/stub/__release - end - local.get $0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length (; 417 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 418 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 419 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1256 - i32.const 1368 - i32.const 106 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1368 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get - ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 420 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__get (; 421 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1256 - i32.const 1368 - i32.const 106 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1368 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__unchecked_get - ) - (func $~lib/array/Array#pop (; 422 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 4424 - i32.const 1368 - i32.const 287 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 423 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 2344 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $0 - i32.load - call $~lib/array/Array#pop - drop - ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 424 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array<~lib/string/String>#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $4 - i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray - end - local.get $0 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 425 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $4 - i32.const 0 - call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray - end - local.get $0 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/array/Array#get:length (; 426 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__unchecked_get (; 427 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (; 428 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1368 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 429 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray - end - local.get $0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 430 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray - end - local.get $0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/typedarray/Int8Array#constructor (; 431 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 52 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Int8Array#get:length (; 432 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - ) - (func $~lib/typedarray/Int8Array#__get (; 433 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 672 - i32.const 728 - i32.const 27 - i32.const 44 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_s - ) - (func $~lib/typedarray/Int8Array#__set (; 434 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 672 - i32.const 728 - i32.const 38 - i32.const 44 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/bignum/utils/processU64 (; 435 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $break|0 - i32.const 63 - local.set $3 - loop $loop|0 - local.get $3 - i32.const -1 - i32.ne - i32.eqz - br_if $break|0 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $2 - i32.le_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $4 - local.get $0 - local.get $4 - call $~lib/typedarray/Int8Array#__get - local.get $0 - local.get $4 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ge_s - i32.const 3 - i32.mul - i32.add - call $~lib/typedarray/Int8Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $loop|1 - end - unreachable - end - block $break|2 - local.get $2 - local.set $4 - loop $loop|2 - local.get $4 - i32.const -1 - i32.ne - i32.eqz - br_if $break|2 - local.get $0 - local.get $4 - local.get $0 - local.get $4 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.shl - call $~lib/typedarray/Int8Array#__set - local.get $4 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.get $0 - local.get $4 - i32.const 1 - i32.add - call $~lib/typedarray/Int8Array#__get - local.get $0 - local.get $4 - call $~lib/typedarray/Int8Array#__get - i32.const 15 - i32.gt_s - i32.or - call $~lib/typedarray/Int8Array#__set - end - local.get $0 - local.get $4 - local.get $0 - local.get $4 - call $~lib/typedarray/Int8Array#__get - i32.const 15 - i32.and - call $~lib/typedarray/Int8Array#__set - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $loop|2 - end - unreachable - end - local.get $0 - i32.const 0 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - local.get $1 - i64.const 1 - local.get $3 - i64.extend_i32_s - i64.shl - i64.and - i64.const 0 - i64.ne - i32.add - call $~lib/typedarray/Int8Array#__set - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $~lib/bignum/utils/u128toa10 (; 436 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - i32.const 40 - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.set $2 - local.get $2 - local.get $0 - i64.load offset=8 - call $~lib/bignum/utils/processU64 - local.get $2 - local.get $0 - i64.load - call $~lib/bignum/utils/processU64 - i32.const 656 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.set $4 - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|0 - local.get $5 - i32.const -1 - i32.ne - i32.eqz - br_if $break|0 - local.get $4 - i32.eqz - if (result i32) - local.get $2 - local.get $5 - call $~lib/typedarray/Int8Array#__get - i32.const 0 - i32.gt_s - else - i32.const 0 - end - if - i32.const 1 - local.set $4 - end - local.get $4 - if - local.get $3 - global.get $~lib/bignum/utils/HEX_CHARS - local.get $2 - local.get $5 - call $~lib/typedarray/Int8Array#__get - call $~lib/string/String#charAt - local.tee $6 - call $~lib/string/String#concat - local.set $7 - local.get $3 - call $~lib/rt/stub/__release - local.get $7 - local.set $3 - local.get $6 - call $~lib/rt/stub/__release - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $loop|0 - end - unreachable - end - local.get $3 - local.set $5 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - ) - (func $~lib/bignum/integer/u128/u128#toString (; 437 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i32) - local.get $1 - i32.eqz - if - i32.const 10 - local.set $1 - end - local.get $1 - i32.const 10 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 16 - i32.eq - end - i32.eqz - if - i32.const 4472 - i32.const 4568 - i32.const 733 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $2 - local.get $2 - i64.load - local.get $2 - i64.load offset=8 - i64.or - i64.eqz - if - i32.const 240 - call $~lib/rt/stub/__retain - return - end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $3 - local.get $0 - local.set $2 - i32.const 0 - local.get $2 - i64.load - local.get $2 - i64.load offset=8 - call $~lib/bignum/integer/u128/u128#constructor - local.set $4 - local.get $1 - i32.const 16 - i32.eq - if - i32.const 124 - local.get $4 - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - i64.load - local.set $6 - local.get $2 - i64.load offset=8 - local.set $5 - local.get $5 - local.get $5 - i64.const 1 - i64.sub - i64.xor - i64.const 63 - i64.shr_s - local.set $7 - local.get $5 - local.get $7 - i64.const -1 - i64.xor - i64.and - local.get $6 - local.get $7 - i64.and - i64.or - i64.clz - i32.wrap_i64 - local.get $7 - i32.wrap_i64 - i32.const 64 - i32.and - i32.add - local.set $8 - local.get $2 - call $~lib/rt/stub/__release - local.get $8 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.sub - local.set $2 - block $break|0 - local.get $2 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - local.get $4 - call $~lib/rt/stub/__retain - local.set $9 - local.get $2 - local.set $8 - local.get $8 - i32.const 127 - i32.and - local.set $8 - local.get $8 - i64.extend_i32_s - local.set $7 - local.get $7 - i64.const 127 - i64.add - local.get $7 - i64.or - i64.const 64 - i64.and - i64.const 6 - i64.shr_u - i64.const 1 - i64.sub - local.set $6 - local.get $7 - i64.const 6 - i64.shr_u - i64.const 1 - i64.sub - local.set $5 - local.get $7 - i64.const 63 - i64.and - local.set $7 - local.get $9 - i64.load offset=8 - local.set $10 - local.get $10 - local.get $7 - i64.shr_u - local.set $11 - local.get $11 - local.get $5 - i64.const -1 - i64.xor - i64.and - local.set $12 - local.get $12 - local.get $9 - i64.load - local.get $7 - i64.shr_u - local.get $10 - i64.const 64 - local.get $7 - i64.sub - i64.shl - local.get $6 - i64.and - i64.or - local.get $5 - i64.and - i64.or - local.set $12 - i32.const 0 - local.get $12 - local.get $11 - local.get $5 - i64.and - call $~lib/bignum/integer/u128/u128#constructor - local.set $13 - local.get $9 - call $~lib/rt/stub/__release - local.get $13 - local.tee $9 - local.tee $13 - local.get $4 - local.tee $8 - i32.ne - if - local.get $13 - call $~lib/rt/stub/__retain - drop - local.get $8 - call $~lib/rt/stub/__release - end - local.get $13 - local.set $4 - local.get $3 - drop - unreachable - end - local.get $3 - local.set $9 - local.get $4 - call $~lib/rt/stub/__release - local.get $9 - return - else - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/bignum/utils/u128toa10 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - return - end - end - i32.const 4640 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> (; 438 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - local.set $4 - i32.const 0 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - i64.load offset=8 - local.get $3 - i64.load offset=8 - i64.eq - if (result i32) - local.get $4 - i64.load - local.get $3 - i64.load - i64.eq - else - i32.const 0 - end - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - local.get $1 - i32.const 0 - call $~lib/bignum/integer/u128/u128#toString - local.tee $4 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setString - local.get $4 - call $~lib/rt/stub/__release - end - local.get $0 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length (; 439 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get (; 440 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__get (; 441 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1256 - i32.const 1368 - i32.const 106 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1368 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get - ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 442 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $4 - i32.const 0 - call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray - end - local.get $0 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/array/Array#get:length (; 443 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__unchecked_get (; 444 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__get (; 445 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1368 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 446 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray - end - local.get $0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 447 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 1064 - call $~lib/assemblyscript-json/encoder/JSONEncoder#write - local.get $0 - i32.load - call $~lib/array/Array#pop - drop - ) - (func $assembly/model/FooBar#encode (; 448 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.ne - if (result i32) - local.get $1 - call $~lib/rt/stub/__retain - else - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - end - local.tee $3 - if (result i32) - local.get $3 - else - unreachable - end - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject - drop - local.get $3 - local.get $0 - i32.load - i32.const 4024 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=4 - i32.const 4048 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i64.load offset=8 - i32.const 3840 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i64.load offset=16 - i32.const 3872 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i64.load offset=24 - i32.const 3904 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load8_u offset=32 - i32.const 4000 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=36 - i32.const 3936 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=40 - i32.const 3960 - call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=44 - i32.const 3416 - call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=48 - i32.const 3704 - call $~lib/nearEntry/encode<~lib/array/Array> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=52 - i32.const 3736 - call $~lib/nearEntry/encode<~lib/array/Array> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=56 - i32.const 2248 - call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=60 - i32.const 3768 - call $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=64 - i32.const 3808 - call $~lib/nearEntry/encode<~lib/array/Array> - call $~lib/rt/stub/__release - local.get $3 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/nearEntry/encode (; 449 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $1 - local.get $0 - local.get $2 - call $assembly/model/FooBar#encode - call $~lib/rt/stub/__release - end - local.get $0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/model/ContainerClass#encode (; 450 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.ne - if (result i32) - local.get $1 - call $~lib/rt/stub/__retain - else - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - end - local.tee $3 - if (result i32) - local.get $3 - else - unreachable - end - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject - drop - local.get $3 - local.get $0 - i32.load - i32.const 4392 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/nearEntry/encode (; 451 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $1 - local.get $0 - local.get $2 - call $assembly/model/ContainerClass#encode - call $~lib/rt/stub/__release - end - local.get $0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 452 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - local.tee $4 - i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray - end - local.get $0 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 453 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - ) - (func $~lib/string/String.UTF8.byteLength (; 454 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.set $2 - local.get $2 - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.add - local.set $3 - local.get $1 - if (result i32) - i32.const 1 - else - i32.const 0 - end - local.set $4 + local.set $6 block $break|0 loop $continue|0 - local.get $2 local.get $3 + local.get $4 i32.lt_u i32.eqz br_if $break|0 - local.get $2 - i32.load16_u - local.set $5 - local.get $5 + local.get $3 + local.tee $7 + i32.const 1 + i32.add + local.set $3 + local.get $7 + i32.load8_u + local.set $7 + local.get $7 i32.const 128 i32.lt_u if - local.get $1 + local.get $2 if (result i32) - local.get $5 + local.get $7 i32.eqz else i32.const 0 @@ -23735,806 +3698,800 @@ if br $break|0 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $2 + local.get $6 + local.get $7 + i32.store16 + local.get $6 i32.const 2 i32.add - local.set $2 + local.set $6 else - local.get $5 - i32.const 2048 - i32.lt_u - if - local.get $4 - i32.const 2 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.add - local.set $2 - else - local.get $5 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.add - local.get $3 - i32.lt_u - else - i32.const 0 - end - if - local.get $2 - i32.load16_u offset=2 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $continue|0 - end - end - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $4 - i32.const 3 - i32.add - local.set $4 - end - end - br $continue|0 - end - unreachable - end - local.get $4 - local.set $5 - local.get $0 - call $~lib/rt/stub/__release - local.get $5 - ) - (func $~lib/string/String.UTF8.encode (; 455 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.set $2 - local.get $0 - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.add - local.set $3 - local.get $0 - local.get $1 - call $~lib/string/String.UTF8.byteLength - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $4 - local.get $4 - local.set $5 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $2 - i32.load16_u - local.set $6 - local.get $6 - i32.const 128 - i32.lt_u - if - local.get $1 + local.get $7 + i32.const 191 + i32.gt_u if (result i32) - local.get $6 - i32.eqz + local.get $7 + i32.const 224 + i32.lt_u else i32.const 0 end if - br $break|0 - end - local.get $5 - local.get $6 - i32.store8 - local.get $5 - i32.const 1 - i32.add - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - else - local.get $6 - i32.const 2048 - i32.lt_u - if - local.get $5 - local.get $6 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - i32.store8 - local.get $5 + local.get $4 + local.get $3 + i32.sub + i32.const 1 + i32.lt_u + if + br $break|0 + end local.get $6 + local.get $7 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $3 + local.tee $8 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.load8_u i32.const 63 i32.and - i32.const 128 i32.or - i32.store8 offset=1 - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $2 + i32.store16 + local.get $6 i32.const 2 i32.add - local.set $2 + local.set $6 else - local.get $6 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq + local.get $7 + i32.const 239 + i32.gt_u if (result i32) - local.get $2 - i32.const 2 - i32.add - local.get $3 + local.get $7 + i32.const 365 i32.lt_u else i32.const 0 end if - local.get $2 - i32.load16_u offset=2 - local.set $7 + local.get $4 + local.get $3 + i32.sub + i32.const 3 + i32.lt_u + if + br $break|0 + end local.get $7 - i32.const 64512 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.const 12 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=2 + i32.const 63 i32.and + i32.or + i32.const 65536 + i32.sub + local.set $7 + local.get $3 + i32.const 3 + i32.add + local.set $3 + local.get $6 + i32.const 55296 + local.get $7 + i32.const 10 + i32.shr_u + i32.add + i32.store16 + local.get $6 i32.const 56320 - i32.eq + local.get $7 + i32.const 1023 + i32.and + i32.add + i32.store16 offset=2 + local.get $6 + i32.const 4 + i32.add + local.set $6 + else + local.get $4 + local.get $3 + i32.sub + i32.const 2 + i32.lt_u if - i32.const 65536 - local.get $6 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - local.get $7 - i32.const 1023 - i32.and - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.store8 - local.get $5 - local.get $6 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $5 - local.get $6 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $5 - local.get $6 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $continue|0 + br $break|0 end + local.get $6 + local.get $7 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.or + i32.store16 + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $6 + i32.const 2 + i32.add + local.set $6 end - local.get $5 - local.get $6 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - i32.store8 - local.get $5 - local.get $6 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $5 - local.get $6 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $5 - i32.const 3 - i32.add - local.set $5 end end - br $continue|0 + br $continue|0 + end + unreachable + end + local.get $5 + local.get $6 + local.get $5 + i32.sub + call $~lib/rt/stub/__realloc + call $~lib/rt/stub/__retain + ) + (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/assemblyscript-json/util/index/Buffer.getPtr + local.get $1 + i32.add + local.get $2 + local.get $1 + i32.sub + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load offset=8 + local.get $1 + local.get $2 + i32.const 1 + i32.sub + call $~lib/assemblyscript-json/util/index/Buffer.readString + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable end - unreachable + local.get $0 + i32.load offset=4 + local.set $2 end + local.get $0 + local.get $1 + local.get $2 + call $~lib/assemblyscript-json/decoder/DecoderState#readString + ) + (func $~lib/array/Array<~lib/string/String>#get:length (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#join_str (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 + local.get $2 + i32.const 0 + i32.lt_s if - local.get $2 + i32.const 816 + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__release local.get $3 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 567 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 + return + end + local.get $0 + i32.load offset=4 + local.set $4 + local.get $2 + i32.eqz + if local.get $4 - i32.sub + i32.load + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $1 + call $~lib/string/String#get:length + local.set $5 + i32.const 0 + local.set $6 + i32.const 0 + local.set $7 + block $break|0 + i32.const 0 + local.set $3 + local.get $2 i32.const 1 i32.add - call $~lib/rt/stub/__realloc - local.set $4 - local.get $5 + local.set $8 + loop $loop|0 + local.get $3 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $10 + i32.ne + if + local.get $9 + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release + end + local.get $9 + local.set $7 + local.get $7 + i32.const 0 + i32.ne + if + local.get $6 + local.get $7 + call $~lib/string/String#get:length + i32.add + local.set $6 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + unreachable + end + i32.const 0 + local.set $11 + local.get $6 + local.get $5 + local.get $2 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $12 + block $break|1 i32.const 0 - i32.store8 - else - local.get $2 - local.get $3 - i32.eq - i32.eqz - if + local.set $8 + loop $loop|1 + local.get $8 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $4 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $7 + local.tee $3 + i32.ne + if + local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $10 + local.set $7 + local.get $7 i32.const 0 - i32.const 1488 - i32.const 571 - i32.const 8 - call $~lib/builtins/abort - unreachable + i32.ne + if + local.get $7 + call $~lib/string/String#get:length + local.set $10 + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $10 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $11 + local.get $10 + i32.add + local.set $11 + end + local.get $5 + if + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $11 + local.get $5 + i32.add + local.set $11 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $loop|1 end + unreachable + end + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $9 + local.set $7 + local.get $7 + i32.const 0 + i32.ne + if + local.get $12 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + call $~lib/memory/memory.copy end - local.get $4 - call $~lib/rt/stub/__retain - local.set $6 - local.get $0 + local.get $12 + local.set $9 + local.get $1 call $~lib/rt/stub/__release - local.get $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $9 ) - (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 456 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array<~lib/string/String>#join (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 + local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.get $0 - i32.const 0 - call $~lib/string/String.UTF8.byteLength - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $0 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.tee $2 - local.set $3 - local.get $1 - call $~lib/assemblyscript-json/util/index/Buffer.getPtr - local.get $3 local.get $0 - i32.const 0 - call $~lib/string/String.UTF8.byteLength - call $~lib/memory/memory.copy local.get $1 - local.set $4 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 457 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#toString - local.tee $1 - call $~lib/assemblyscript-json/util/index/Buffer.fromString + call $~lib/array/Array<~lib/string/String>#join_str local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 + return ) - (func $assembly/test/__wrapper_convertFoobars (; 458 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/__allocArray (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic - end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/test/__near_ArgsParser_convertFoobars#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor + i32.const 16 + local.get $2 + call $~lib/rt/stub/__alloc local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 + local.get $0 local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - call $assembly/test/convertFoobars - local.set $4 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + i32.shl local.set $5 local.get $5 - local.get $4 i32.const 0 - call $~lib/nearEntry/encode<~lib/array/Array> - call $~lib/rt/stub/__release - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + call $~lib/rt/stub/__alloc local.set $6 + local.get $4 local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s + call $~lib/rt/stub/__retain + i32.store + local.get $4 local.get $6 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + i32.store offset=4 local.get $4 - call $~lib/rt/stub/__release local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - ) - (func $assembly/test/__near_ArgsParser_getStringArrayLength#constructor (; 459 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.store offset=8 + local.get $4 local.get $0 - i32.eqz + i32.store offset=12 + local.get $3 if - i32.const 16 - i32.const 53 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 + local.get $6 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 + local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 460 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 54 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 + (local $4 i32) local.get $0 - local.tee $2 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + local.set $1 local.get $1 - local.tee $3 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + local.set $2 local.get $2 - i32.load - local.tee $2 - i32.ne + i32.const 9 + i32.gt_s if - local.get $3 - call $~lib/rt/stub/__retain - drop + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A + i32.sub + i32.const 10 + i32.add + local.set $2 local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 461 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return + i32.const 10 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 15 + i32.gt_s + end + if + local.get $1 + global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER + i32.sub + i32.const 10 + i32.add + local.set $2 + end end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 + i32.const 2 + i32.const 2 + i32.const 18 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 462 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.set $4 + local.get $4 local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + i32.const 0 + i32.ge_s if (result i32) - i32.const 1 + local.get $2 + i32.const 16 + i32.lt_s else - local.get $1 - i32.const 13 - i32.eq + i32.const 0 end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 32 - i32.eq + i32.eqz + if + i32.const 1736 + i32.const 1000 + i32.const 269 + i32.const 4 + call $~lib/builtins/abort + unreachable end + local.get $2 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 463 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s + i32.const 1114111 + i32.le_u i32.eqz if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 + i32.const 0 + i32.const 1424 + i32.const 22 + i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 + i32.const 65535 + i32.gt_s + local.set $1 + i32.const 2 + local.get $1 + i32.shl i32.const 1 - i32.add - i32.store offset=4 + call $~lib/rt/stub/__alloc + local.set $2 local.get $1 - call $~lib/typedarray/Uint8Array#__get + i32.eqz + if + local.get $2 + local.get $0 + i32.store16 + else + local.get $0 + i32.const 65536 + i32.sub + local.set $0 + local.get $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.add + local.set $3 + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.add + local.set $4 + local.get $2 + local.get $3 + i32.const 16 + i32.shl + local.get $4 + i32.or + i32.store + end + local.get $2 + call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 464 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 + (func $~lib/string/String.fromCharCode (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 0 + i32.gt_s + local.set $2 + i32.const 2 + local.get $2 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $3 + local.get $3 + local.get $0 + i32.store16 + local.get $2 + if + local.get $3 + local.get $1 + i32.store16 offset=2 + end + local.get $3 + call $~lib/rt/stub/__retain + ) + (func $~lib/string/String.fromCharCode|trampoline (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable end - unreachable + i32.const -1 + local.set $1 end + local.get $0 + local.get $1 + call $~lib/string/String.fromCharCode ) - (func $assembly/test/__near_ArgsParser_getStringArrayLength#pushObject (; 465 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - i32.load8_u offset=8 + local.get $1 i32.const 0 - i32.ne - i32.eqz + i32.eq if + i32.const 216 + local.tee $2 local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz + local.tee $3 + i32.ne if - i32.const 0 - i32.const 952 - i32.const 87 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 + local.get $2 + local.set $1 + end + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $4 + local.get $1 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $5 + local.get $4 + local.get $5 + i32.add + local.set $6 + local.get $6 + i32.const 0 + i32.eq + if + i32.const 816 + call $~lib/rt/stub/__retain local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 91 - i32.const 6 - call $~lib/builtins/abort - unreachable - end end + local.get $6 + i32.const 1 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $7 + local.get $7 local.get $0 + local.get $4 + call $~lib/memory/memory.copy + local.get $7 + local.get $4 + i32.add local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject + local.get $5 + call $~lib/memory/memory.copy + local.get $7 local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 466 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/string/String.__concat (; 86 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 + call $~lib/rt/stub/__retain + drop local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 call $~lib/rt/stub/__retain - local.set $4 - local.get $2 + drop + local.get $0 + i32.const 216 + local.get $0 i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - local.get $4 + i32.ne + select + local.get $1 + call $~lib/string/String#concat + local.set $2 + local.get $0 call $~lib/rt/stub/__release - local.get $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 467 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -24542,95 +4499,95 @@ (local $5 i32) (local $6 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar local.set $1 local.get $1 - i32.const 1152 + i32.const 1248 i32.const 0 call $~lib/string/String#charCodeAt i32.eq if - i32.const 1152 + i32.const 1248 call $~lib/rt/stub/__retain return end local.get $1 - i32.const 1584 + i32.const 1472 i32.const 0 call $~lib/string/String#charCodeAt i32.eq if - i32.const 1584 + i32.const 1472 call $~lib/rt/stub/__retain return end local.get $1 - i32.const 1608 + i32.const 1496 i32.const 0 call $~lib/string/String#charCodeAt i32.eq if - i32.const 1608 + i32.const 1496 call $~lib/rt/stub/__retain return end local.get $1 - i32.const 1632 + i32.const 1520 i32.const 0 call $~lib/string/String#charCodeAt i32.eq if - i32.const 1656 + i32.const 1544 call $~lib/rt/stub/__retain return end local.get $1 - i32.const 1680 + i32.const 1568 i32.const 0 call $~lib/string/String#charCodeAt i32.eq if - i32.const 1704 + i32.const 1592 call $~lib/rt/stub/__retain return end local.get $1 - i32.const 1728 + i32.const 1616 i32.const 0 call $~lib/string/String#charCodeAt i32.eq if - i32.const 1752 + i32.const 1640 call $~lib/rt/stub/__retain return end local.get $1 - i32.const 1776 + i32.const 1664 i32.const 0 call $~lib/string/String#charCodeAt i32.eq if - i32.const 1800 + i32.const 1688 call $~lib/rt/stub/__retain return end local.get $1 - i32.const 1824 + i32.const 1712 i32.const 0 call $~lib/string/String#charCodeAt i32.eq if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit local.set $2 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit local.set $3 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit local.set $4 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit local.set $5 local.get $2 i32.const 4096 @@ -24653,7 +4610,7 @@ i32.const 0 i32.eqz if - i32.const 1904 + i32.const 1792 i32.const 1 global.set $~lib/argc local.get $1 @@ -24662,13 +4619,13 @@ local.tee $6 call $~lib/string/String.__concat local.tee $5 - i32.const 840 + i32.const 1000 i32.const 255 i32.const 4 call $~lib/builtins/abort unreachable end - i32.const 656 + i32.const 816 call $~lib/rt/stub/__retain local.set $4 local.get $6 @@ -24677,22 +4634,22 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 468 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1152 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 1248 i32.const 0 call $~lib/string/String#charCodeAt i32.eq i32.eqz if - i32.const 1176 - i32.const 840 + i32.const 1272 + i32.const 1000 i32.const 197 i32.const 4 call $~lib/builtins/abort @@ -24708,22 +4665,22 @@ local.set $2 loop $loop|0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar local.set $3 local.get $3 i32.const 32 i32.ge_s i32.eqz if - i32.const 1416 - i32.const 840 + i32.const 1352 + i32.const 1000 i32.const 203 i32.const 6 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 1152 + i32.const 1248 i32.const 0 call $~lib/string/String#charCodeAt i32.eq @@ -24753,7 +4710,7 @@ call $~lib/array/Array<~lib/string/String>#push drop local.get $2 - i32.const 656 + i32.const 816 call $~lib/array/Array<~lib/string/String>#join local.set $5 local.get $4 @@ -24764,7 +4721,7 @@ return else local.get $3 - i32.const 1584 + i32.const 1472 i32.const 0 call $~lib/string/String#charCodeAt i32.eq @@ -24793,7 +4750,7 @@ end local.get $2 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar local.tee $4 call $~lib/array/Array<~lib/string/String>#push drop @@ -24809,16 +4766,16 @@ end unreachable ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 469 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 89 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace local.get $0 i32.load offset=4 local.tee $1 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString local.set $2 local.get $1 i32.load @@ -24826,30 +4783,77 @@ local.get $2 i32.store local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1984 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 1872 i32.const 0 call $~lib/string/String#charCodeAt i32.eq i32.eqz if - i32.const 2008 - i32.const 840 + i32.const 1896 + i32.const 1000 i32.const 159 i32.const 4 call $~lib/builtins/abort unreachable end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 470 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.lt_s + if + i32.const 2000 + i32.const 768 + i32.const 287 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $2 + ) + (func $~lib/nearEntry/Handler#popObject (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 1 + i32.gt_s + if + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#pop + call $~lib/rt/stub/__release + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 1088 i32.const 0 call $~lib/string/String#charCodeAt i32.ne @@ -24865,7 +4869,7 @@ local.get $0 i32.load offset=4 local.tee $2 - i32.const 656 + i32.const 816 local.tee $3 local.get $2 i32.load @@ -24883,20 +4887,20 @@ local.get $0 i32.load local.get $1 - call $assembly/test/__near_ArgsParser_getStringArrayLength#pushObject + call $~lib/nearEntry/Handler#pushObject if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar drop local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace i32.const 1 local.set $3 block $break|0 loop $continue|0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1064 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 1160 i32.const 0 call $~lib/string/String#charCodeAt i32.ne @@ -24906,15 +4910,15 @@ i32.eqz if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 1184 i32.const 0 call $~lib/string/String#charCodeAt i32.eq i32.eqz if - i32.const 1112 - i32.const 840 + i32.const 1208 + i32.const 1000 i32.const 142 i32.const 10 call $~lib/builtins/abort @@ -24925,24 +4929,24 @@ local.set $3 end local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue drop br $continue|0 end unreachable end local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1064 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 1160 i32.const 0 call $~lib/string/String#charCodeAt i32.eq i32.eqz if - i32.const 2048 - i32.const 840 + i32.const 1936 + i32.const 1000 i32.const 149 i32.const 6 call $~lib/builtins/abort @@ -24951,59 +4955,92 @@ end local.get $0 i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject + call $~lib/nearEntry/Handler#popObject i32.const 1 local.set $3 local.get $1 call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/test/__near_ArgsParser_getStringArrayLength#pushArray (; 471 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Arr#constructor (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 4 + i32.const 17 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/nearEntry/Value#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + local.tee $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/nearEntry/Value>#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 + i32.store + local.get $0 + ) + (func $~lib/nearEntry/Value.Array (; 94 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + call $~lib/nearEntry/Arr#constructor + ) + (func $~lib/nearEntry/Handler#pushArray (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $1 - i32.const 3416 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> - local.set $3 - local.get $2 - i32.load offset=12 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=12 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end + call $~lib/nearEntry/Value.Array + local.set $2 local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + local.get $2 + call $~lib/nearEntry/Handler#addValue + local.get $0 + i32.load + local.get $2 + call $~lib/array/Array<~lib/nearEntry/Value>#push + drop + i32.const 1 local.set $3 + local.get $2 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 472 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#popArray (; 96 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 1 + i32.gt_s + if + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#pop + call $~lib/rt/stub/__release + end + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2112 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 2048 i32.const 0 call $~lib/string/String#charCodeAt i32.ne @@ -25019,7 +5056,7 @@ local.get $0 i32.load offset=4 local.tee $2 - i32.const 656 + i32.const 816 local.tee $3 local.get $2 i32.load @@ -25037,20 +5074,20 @@ local.get $0 i32.load local.get $1 - call $assembly/test/__near_ArgsParser_getStringArrayLength#pushArray + call $~lib/nearEntry/Handler#pushArray if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar drop local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace i32.const 1 local.set $3 block $break|0 loop $continue|0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2344 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 2072 i32.const 0 call $~lib/string/String#charCodeAt i32.ne @@ -25060,15 +5097,15 @@ i32.eqz if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 1184 i32.const 0 call $~lib/string/String#charCodeAt i32.eq i32.eqz if - i32.const 1112 - i32.const 840 + i32.const 1208 + i32.const 1000 i32.const 176 i32.const 10 call $~lib/builtins/abort @@ -25079,22 +5116,22 @@ local.set $3 end local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue drop br $continue|0 end unreachable end local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2344 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + i32.const 2072 i32.const 0 call $~lib/string/String#charCodeAt i32.eq i32.eqz if - i32.const 2368 - i32.const 840 + i32.const 2096 + i32.const 1000 i32.const 182 i32.const 6 call $~lib/builtins/abort @@ -25102,20 +5139,78 @@ end end local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 + i32.load + call $~lib/nearEntry/Handler#popArray + i32.const 1 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/Str#constructor (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + if (result i32) + local.get $0 + else + i32.const 4 + i32.const 19 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/nearEntry/Value#constructor + local.set $0 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retain + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/nearEntry/Value.String (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + call $~lib/nearEntry/Str#constructor + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $~lib/nearEntry/Handler#setString (; 100 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/nearEntry/Value.String local.set $3 + local.get $0 local.get $1 - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/Handler#addValue + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 473 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1152 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 1248 i32.const 0 call $~lib/string/String#charCodeAt i32.ne @@ -25129,16 +5224,16 @@ i32.load offset=4 i32.load local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + call $~lib/nearEntry/Handler#setString i32.const 1 local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 474 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 102 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -25159,781 +5254,561 @@ local.get $2 call $~lib/string/String#charCodeAt local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar i32.eq i32.eqz if - i32.const 2432 + i32.const 2160 local.get $1 call $~lib/string/String.__concat local.tee $3 - i32.const 2472 + i32.const 2200 call $~lib/string/String.__concat local.tee $4 - i32.const 840 + i32.const 1000 i32.const 321 i32.const 6 call $~lib/builtins/abort unreachable end local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 475 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 476 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/test/__near_ArgsParser_getStringArrayLength#setNull (; 477 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 3416 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 478 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/test/__near_ArgsParser_getStringArrayLength#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 479 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end - local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 480 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop + i32.const 1 + i32.add + local.set $2 local.get $3 call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort unreachable end local.get $1 call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/util/util.toUTF8 (; 481 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/nearEntry/Bools#constructor (; 103 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain - drop + if (result i32) + local.get $0 + else + i32.const 1 + i32.const 20 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/nearEntry/Value#constructor + local.set $0 local.get $0 local.get $1 - call $~lib/string/String.UTF8.encode - local.tee $2 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release + i32.store8 local.get $0 - call $~lib/rt/stub/__release - local.get $3 ) - (func $~lib/near-runtime-ts/util/util.stringToBytes (; 482 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 1 - i32.sub - local.set $1 + (func $~lib/nearEntry/Value.Bool (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.set $2 - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 0 - call $~lib/near-runtime-ts/util/util.toUTF8 - local.get $1 - call $~lib/memory/memory.copy - local.get $2 - local.set $3 local.get $0 - call $~lib/rt/stub/__release - local.get $3 + call $~lib/nearEntry/Bools#constructor ) - (func $~lib/near-runtime-ts/logging/logging.log (; 483 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 + (func $~lib/nearEntry/Handler#setBoolean (; 105 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 call $~lib/rt/stub/__retain drop + local.get $2 + call $~lib/nearEntry/Value.Bool + local.set $3 local.get $0 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s local.get $1 - i32.load offset=4 - i64.extend_i32_u - call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 + local.get $3 + call $~lib/nearEntry/Handler#addValue + local.get $3 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__release + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 184 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/FALSE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 0 + call $~lib/nearEntry/Handler#setBoolean + i32.const 1 + return + end + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 160 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + global.get $~lib/assemblyscript-json/decoder/TRUE_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + i32.const 1 + call $~lib/nearEntry/Handler#setBoolean + i32.const 1 + return + end + i32.const 0 ) - (func $assembly/main/getStringArrayLength (; 484 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/nearEntry/Num#constructor (; 107 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 - call $~lib/rt/stub/__retain - drop + if (result i32) + local.get $0 + else + i32.const 8 + i32.const 21 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + call $~lib/nearEntry/Value#constructor + local.set $0 local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $1 - i32.const 4680 local.get $1 - call $~lib/number/I32#toString - local.tee $2 - call $~lib/string/String.__concat - local.tee $3 - call $~lib/near-runtime-ts/logging/logging.log - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $4 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + i64.store local.get $0 - call $~lib/rt/stub/__release - local.get $4 ) - (func $assembly/test/getStringArrayLength (; 485 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/Value.Number (; 108 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + i32.const 0 local.get $0 + call $~lib/nearEntry/Num#constructor + ) + (func $~lib/nearEntry/Handler#setInteger (; 109 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + local.get $1 call $~lib/rt/stub/__retain drop + local.get $2 + call $~lib/nearEntry/Value.Number + local.set $3 local.get $0 - call $assembly/main/getStringArrayLength - local.set $1 - local.get $0 + local.get $1 + local.get $3 + call $~lib/nearEntry/Handler#addValue + local.get $3 call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release ) - (func $assembly/test/__wrapper_getStringArrayLength (; 486 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i64.const 0 - call $~lib/nearEntry/input i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 + local.set $1 + i64.const 1 + local.set $2 local.get $0 - i64.const 4294967295 - i64.eq + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 2224 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq if - call $~lib/nearEntry/panic + i64.const -1 + local.set $2 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + drop end i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/test/__near_ArgsParser_getStringArrayLength#constructor local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release + block $break|0 + loop $continue|0 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.le_s + if (result i32) + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + global.get $~lib/assemblyscript-json/decoder/CHAR_9 + i32.le_s + else + i32.const 0 + end + i32.eqz + br_if $break|0 + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar + local.set $4 + local.get $1 + i64.const 10 + i64.mul + local.set $1 + local.get $1 + local.get $4 + global.get $~lib/assemblyscript-json/decoder/CHAR_0 + i32.sub + i64.extend_i32_s + i64.add + local.set $1 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $continue|0 + end + unreachable end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize local.get $3 - i32.load offset=12 - call $assembly/test/getStringArrayLength - local.set $4 i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $5 - local.get $5 - local.get $4 + i32.gt_s + if + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + local.get $1 + local.get $2 + i64.mul + call $~lib/nearEntry/Handler#setInteger + i32.const 1 + return + end i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $6 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release ) - (func $assembly/test/__near_ArgsParser_rewrapFoobar#constructor (; 487 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Null#constructor (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.eqz - if - i32.const 16 - i32.const 55 + if (result i32) + local.get $0 + else + i32.const 0 + i32.const 22 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain - local.set $0 end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + call $~lib/nearEntry/Value#constructor local.set $0 local.get $0 + ) + (func $~lib/nearEntry/Value.Null (; 112 ;) (type $FUNCSIG$i) (result i32) i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 + call $~lib/nearEntry/Null#constructor ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 488 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#setNull (; 113 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) local.get $1 call $~lib/rt/stub/__retain drop + call $~lib/nearEntry/Value.Null + local.set $2 local.get $0 - i32.eqz - if - i32.const 8 - i32.const 56 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 local.get $1 - local.tee $3 local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store + call $~lib/nearEntry/Handler#addValue + local.get $2 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 489 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar + i32.const 216 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq if - i32.const -1 + local.get $0 + global.get $~lib/assemblyscript-json/decoder/NULL_STR + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.load + call $~lib/nearEntry/Handler#setNull + i32.const 1 return end + i32.const 0 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.load offset=4 - i32.load offset=8 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 490 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject + local.tee $1 if (result i32) - i32.const 1 - else local.get $1 - i32.const 10 - i32.eq + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray end + local.tee $1 if (result i32) - i32.const 1 + local.get $1 else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString + end + local.tee $1 + if (result i32) local.get $1 - i32.const 13 - i32.eq + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean end + local.tee $1 if (result i32) - i32.const 1 + local.get $1 else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber + end + local.tee $1 + if (result i32) local.get $1 - i32.const 32 - i32.eq + else + local.get $0 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 491 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + local.set $1 local.get $0 - i32.load offset=4 - i32.load offset=4 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace + local.get $1 + ) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 116 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + i32.const 0 + i32.ne + if + local.get $0 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 + i32.store offset=4 + else + local.get $0 + local.tee $4 + i32.const 0 + local.get $1 + call $~lib/assemblyscript-json/decoder/DecoderState#constructor + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + end local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue + i32.const 0 + i32.ne i32.eqz if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 + i32.const 2248 + i32.const 1000 + i32.const 100 + i32.const 4 call $~lib/builtins/abort unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 + end local.get $1 - call $~lib/typedarray/Uint8Array#__get + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 492 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#reset (; 117 ;) (type $FUNCSIG$vi) (param $0 i32) block $break|0 loop $continue|0 local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 0 + i32.gt_s i32.eqz br_if $break|0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#pop + call $~lib/rt/stub/__release br $continue|0 end unreachable end ) - (func $assembly/model/ContainerClass#constructor (; 493 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/JSON.parse (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 - i32.eqz - if - i32.const 4 - i32.const 49 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end + call $~lib/rt/stub/__retain + drop local.get $0 + call $~lib/rt/stub/__retain + local.set $1 + global.get $~lib/nearEntry/JSON.decoder + local.get $1 i32.const 0 - i32.store + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize + global.get $~lib/nearEntry/JSON.handler + call $~lib/nearEntry/Handler#get:peek + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + global.get $~lib/nearEntry/JSON.handler + call $~lib/nearEntry/Handler#reset + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $0 + call $~lib/rt/stub/__release + local.get $4 ) - (func $assembly/model/__near_JSONHandler_ContainerClass#constructor (; 494 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $2 + call $~lib/util/hash/hashStr + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 + end + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $1 + call $~lib/rt/stub/__release + i32.const 2336 + i32.const 2392 + i32.const 103 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/nearEntry/Obj#get (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 call $~lib/rt/stub/__retain drop + local.get $0 + i32.load + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has + i32.eqz + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + return + end + local.get $0 + i32.load + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/array/Array#constructor (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else i32.const 16 - i32.const 57 + i32.const 30 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor local.set $0 local.get $0 i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 i32.store offset=12 - local.get $0 - local.tee $2 local.get $1 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.store offset=12 + local.get $0 local.get $1 - call $~lib/rt/stub/__release + i32.store offset=12 local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 495 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + (func $assembly/model/FooBar#constructor (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if - i32.const 8 - i32.const 58 + i32.const 68 + i32.const 24 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -25942,1304 +5817,2081 @@ i32.const 0 i32.store local.get $0 - i32.const 0 + i32.const 1 i32.store offset=4 local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release + i64.const 4294967297 + i64.store offset=8 local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 496 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i64.const 0 + i64.store offset=16 local.get $0 - i32.load offset=4 - i32.load offset=4 + i64.const -64 + i64.store offset=24 local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end + i32.const 0 + i32.store8 offset=32 local.get $0 - i32.load offset=4 - i32.load offset=8 + i32.const 3016 + call $~lib/rt/stub/__retain + i32.store offset=36 + local.get $0 + i32.const 0 + i32.store offset=40 + local.get $0 + i32.const 0 + i32.store offset=44 + local.get $0 + i32.const 0 + i32.store offset=48 + local.get $0 + i32.const 0 + i32.store offset=52 + local.get $0 + i32.const 0 + i32.store offset=56 + local.get $0 + i32.const 0 + i32.store offset=60 + local.get $0 + i32.const 0 + i32.store offset=64 local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 497 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 - i32.const 9 - i32.eq + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.tee $3 + i32.eqz if (result i32) - i32.const 1 + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end + if + local.get $0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release else - local.get $1 - i32.const 10 - i32.eq + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 end + local.get $2 + local.tee $6 + i32.eqz if (result i32) - i32.const 1 + i32.const 0 else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3064 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 - i32.const 13 - i32.eq + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return end + local.get $2 + local.tee $5 + i32.eqz if (result i32) - i32.const 1 + i32.const 0 else - local.get $1 - i32.const 32 - i32.eq + local.get $5 + i32.const 21 + call $~lib/rt/__instanceof end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 498 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s i32.eqz if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3088 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 526 + i32.const 4 call $~lib/builtins/abort unreachable end + local.get $2 + i64.load + i32.wrap_i64 + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 + call $~lib/rt/stub/__release local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 499 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $assembly/model/__near_JSONHandler_ContainerClass#pushObject (; 500 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - i32.load8_u offset=8 i32.const 0 - i32.ne + local.set $2 + local.get $0 + local.tee $3 i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if + local.get $0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz + i32.eq if - i32.const 0 - i32.const 2192 - i32.const 227 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 i32.const 6 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 local.set $2 - local.get $1 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 local.get $2 - return + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 else - local.get $1 + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end i32.eqz if - i32.const 0 - i32.const 2192 - i32.const 231 - i32.const 6 + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3168 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 call $~lib/builtins/abort unreachable end - end - local.get $1 - i32.const 4392 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode - local.set $3 - local.get $2 - i32.load - call $~lib/rt/stub/__release - local.get $3 - i32.store i32.const 0 - local.set $3 - local.get $1 + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release local.get $3 - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 501 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 + call $~lib/rt/stub/__release local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end + call $~lib/rt/stub/__release + local.get $7 + return end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__retain - local.set $4 local.get $2 - i32.const 0 - i32.ge_s + local.tee $5 + i32.eqz if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else i32.const 0 + else + local.get $5 + i32.const 21 + call $~lib/rt/__instanceof end i32.eqz if - i32.const 1848 - i32.const 840 - i32.const 269 + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3088 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 526 i32.const 4 call $~lib/builtins/abort unreachable end local.get $2 - local.set $3 - local.get $4 + i64.load + i32.wrap_i64 + local.set $4 + local.get $5 call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 502 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/string/isSpace (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i32.const 255 + i32.le_s if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint + block $break|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + local.set $1 + local.get $1 + i32.const 9 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 10 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 11 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 12 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 13 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 32 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 160 + i32.eq + br_if $case6|0 + br $break|0 + end + end + end + end + end + end + end + i32.const 1 + return + end + i32.const 0 return end - i32.const 0 - i32.eqz + local.get $0 + i32.const 8192 + i32.ge_s + if (result i32) + local.get $0 + i32.const 8202 + i32.le_s + else + i32.const 0 + end if - i32.const 1904 i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort - unreachable + return end - i32.const 656 - call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 + block $break|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $0 + local.set $1 + local.get $1 + i32.const 5760 + i32.eq + br_if $case0|1 + local.get $1 + i32.const 8232 + i32.eq + br_if $case1|1 + local.get $1 + i32.const 8233 + i32.eq + br_if $case2|1 + local.get $1 + i32.const 8239 + i32.eq + br_if $case3|1 + local.get $1 + i32.const 8287 + i32.eq + br_if $case4|1 + local.get $1 + i32.const 12288 + i32.eq + br_if $case5|1 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|1 + br $break|1 + end + end + end + end + end + end + end + i32.const 1 + return + end + i32.const 0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 503 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/util/string/strtol (; 126 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i64) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/stub/__retain + drop local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor + call $~lib/string/String#get:length local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + local.get $2 + i32.eqz + if + i64.const 0 local.set $3 + local.get $0 + call $~lib/rt/stub/__release local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 + return + end + local.get $0 + local.set $4 + local.get $4 + i32.load16_u + local.set $5 + i64.const 1 + local.set $6 + block $break|0 + loop $continue|0 + local.get $5 + call $~lib/util/string/isSpace + i32.eqz + br_if $break|0 local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join + i32.const 2 + i32.add + local.tee $4 + i32.load16_u local.set $5 - local.get $4 - call $~lib/rt/stub/__release local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 + end + unreachable + end + local.get $5 + i32.const 45 + i32.eq + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i64.const 0 + local.set $3 + local.get $0 call $~lib/rt/stub/__release - local.get $5 - return - else local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop + return + end + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + i64.const -1 + local.set $6 + else + local.get $5 + i32.const 43 + i32.eq + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i64.const 0 + local.set $3 local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 call $~lib/rt/stub/__release + local.get $3 + return end + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 end - br $loop|0 end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 504 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq i32.eqz if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 505 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + local.get $5 + i32.const 48 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $4 + i32.const 2 + i32.add + i32.load16_u + local.set $7 + local.get $7 + i32.const 66 + i32.eq + br_if $case0|1 + local.get $7 + i32.const 98 + i32.eq + br_if $case1|1 + local.get $7 + i32.const 79 + i32.eq + br_if $case2|1 + local.get $7 + i32.const 111 + i32.eq + br_if $case3|1 + local.get $7 + i32.const 88 + i32.eq + br_if $case4|1 + local.get $7 + i32.const 120 + i32.eq + br_if $case5|1 + br $case6|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + end + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 + end + i32.const 10 + local.set $1 + end + else + i32.const 10 + local.set $1 + end + else + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i64.const 0 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + return + end end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/model/__near_JSONHandler_ContainerClass#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1064 + i64.const 0 + local.set $8 + block $break|2 + loop $continue|2 + local.get $2 + local.tee $7 + i32.const 1 + i32.sub + local.set $2 + local.get $7 + i32.eqz + br_if $break|2 + local.get $4 + i32.load16_u + local.set $5 + local.get $5 + i32.const 48 + i32.ge_s + if (result i32) + local.get $5 + i32.const 57 + i32.le_s + else i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 + end + if + local.get $5 + i32.const 48 + i32.sub + local.set $5 + else + local.get $5 + i32.const 65 + i32.ge_s + if (result i32) + local.get $5 + i32.const 90 + i32.le_s + else i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz + end + if + local.get $5 + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + local.get $5 + i32.const 97 + i32.ge_s + if (result i32) + local.get $5 + i32.const 122 + i32.le_s + else + i32.const 0 + end if - i32.const 1112 - i32.const 840 - i32.const 142 + local.get $5 + i32.const 97 i32.const 10 - call $~lib/builtins/abort - unreachable + i32.sub + i32.sub + local.set $5 + else + br $break|2 end - else - i32.const 0 - local.set $3 end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $1 + i32.ge_s + if + br $break|2 + end + local.get $8 + local.get $1 + i64.extend_i32_s + i64.mul + local.get $5 + i64.extend_i32_s + i64.add + local.set $8 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $continue|2 end + unreachable end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 + local.get $6 + local.get $8 + i64.mul local.set $3 - local.get $1 + local.get $0 call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/model/__near_JSONHandler_ContainerClass#pushArray (; 506 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 + (func $~lib/number/I64.parseInt (; 127 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + local.get $0 call $~lib/rt/stub/__retain drop local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray + call $~lib/util/string/strtol local.set $2 - local.get $1 + local.get $0 call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 507 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decode (; 128 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load call $~lib/rt/stub/__retain - local.set $1 + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if + i32.eqz + if (result i32) + i32.const 0 + else local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end + if + local.get $0 call $~lib/rt/stub/__retain - drop + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/model/__near_JSONHandler_ContainerClass#pushArray if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3224 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort unreachable end + i32.const 0 + i64.extend_i32_u + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2344 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return + end + local.get $2 + local.tee $5 + i32.eqz + if (result i32) i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end + else + local.get $5 + i32.const 19 + call $~lib/rt/__instanceof end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 508 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i32.eqz if - i32.const 0 - return + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3248 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 521 + i32.const 6 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 + local.get $2 i32.load + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + i32.const 0 + call $~lib/number/I64.parseInt + local.set $7 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 509 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/decode (; 129 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop - block $break|0 + i32.const 0 + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end + if + local.get $0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release local.get $2 - i32.const 1 - i32.add - local.set $2 + call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - br $loop|0 + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 510 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else local.get $0 - i32.load offset=4 - i32.load + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3456 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.extend_i32_u + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 return end + local.get $2 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 19 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3248 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 521 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 i32.const 0 + call $~lib/number/I64.parseInt + local.set $7 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 511 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) + (func $~lib/nearEntry/decode (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2584 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if - i64.const -1 - local.set $2 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 + call $~lib/rt/stub/__release local.get $1 - i64.const 10 - i64.mul - local.set $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 + call $~lib/rt/stub/__release end - unreachable + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof end - local.get $3 - i32.const 0 - i32.gt_s if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3504 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load + call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 + call $~lib/rt/stub/__release + local.get $7 return end - i32.const 0 + local.get $2 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 20 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3528 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 513 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load8_u + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $assembly/model/__near_JSONHandler_ContainerClass#setNull (; 512 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/decode<~lib/string/String> (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 call $~lib/rt/stub/__retain drop local.get $1 - i32.const 4392 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if local.get $0 - i32.load offset=12 - local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 i32.const 0 - local.tee $3 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 - i32.load - local.tee $2 + local.tee $6 i32.ne if - local.get $3 + local.get $5 call $~lib/rt/stub/__retain drop - local.get $2 + local.get $6 call $~lib/rt/stub/__release end + local.get $5 + local.set $2 local.get $3 - i32.store - local.get $1 call $~lib/rt/stub/__release - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 513 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/model/__near_JSONHandler_ContainerClass#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 514 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 + local.get $4 + call $~lib/rt/stub/__release else local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 end - local.tee $1 + local.get $2 + local.tee $6 + i32.eqz if (result i32) - local.get $1 + i32.const 0 else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof end - local.tee $1 - if (result i32) - local.get $1 - else + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) + call $~lib/rt/stub/__release local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + return end - local.tee $1 + local.get $2 + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__retain + local.set $5 + local.get $3 + local.tee $6 + i32.eqz if (result i32) - local.get $1 + i32.const 0 else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof end - local.set $1 + i32.eqz + if + i32.const 2720 + local.get $5 + call $~lib/string/String.__concat + local.tee $6 + i32.const 3600 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2504 + i32.const 471 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load + call $~lib/rt/stub/__retain + local.set $7 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $7 + local.set $4 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + return + ) + (func $~lib/string/String#charAt (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const 816 + call $~lib/rt/stub/__retain + return + end + i32.const 2 + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $2 + call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 515 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/string/String#indexOf (; 133 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $2 - i32.const 0 - i32.ne + local.get $1 + call $~lib/string/String#get:length + local.set $3 + local.get $3 + i32.eqz if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 i32.const 0 + local.set $4 local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 + call $~lib/rt/stub/__release local.get $4 - i32.load offset=4 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $5 + local.get $5 + i32.eqz + if + i32.const -1 + local.set $4 + local.get $1 call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $2 + local.tee $4 + i32.const 0 + local.tee $6 + local.get $4 + local.get $6 + i32.gt_s + select + local.tee $4 + local.get $5 + local.tee $6 + local.get $4 + local.get $6 + i32.lt_s + select + local.set $7 + block $break|0 + local.get $5 local.get $3 - i32.store offset=4 + i32.sub + local.set $5 + loop $loop|0 + local.get $7 + local.get $5 + i32.le_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $7 + local.get $1 + i32.const 0 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + local.get $7 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $loop|0 + end + unreachable end + i32.const -1 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/near-runtime-ts/base64/base64.getByte64 (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue + call $~lib/rt/stub/__retain + drop + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $0 + local.get $1 + call $~lib/string/String#charAt + local.tee $2 i32.const 0 - i32.ne - i32.eqz + call $~lib/string/String#indexOf + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#__set (; 135 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 + i32.const 832 + i32.const 888 + i32.const 146 + i32.const 44 call $~lib/builtins/abort unreachable end + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/stub/__release + i32.add local.get $2 - call $~lib/rt/stub/__release + i32.store8 ) - (func $assembly/model/ContainerClass#decode (; 516 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/near-runtime-ts/base64/base64.decode (; 136 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 call $~lib/rt/stub/__retain drop i32.const 0 - local.get $0 - call $assembly/model/__near_JSONHandler_ContainerClass#constructor local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 + local.get $0 + call $~lib/string/String#get:length + local.set $4 local.get $4 - i32.load - local.tee $4 - i32.ne + i32.const 0 + i32.eq if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8Array#constructor + local.set $5 + local.get $0 call $~lib/rt/stub/__release + local.get $5 + return end - local.get $5 - i32.store - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $5 - local.get $3 - local.tee $4 - local.get $5 - local.tee $6 + local.get $0 local.get $4 - i32.load offset=4 - local.tee $4 - i32.ne + i32.const 1 + i32.sub + call $~lib/string/String#charAt + local.tee $5 + i32.const 384 + call $~lib/string/String.__eq if - local.get $6 - call $~lib/rt/stub/__retain - drop + i32.const 1 + local.set $3 + local.get $0 + local.get $4 + i32.const 2 + i32.sub + call $~lib/string/String#charAt + local.tee $6 + i32.const 384 + call $~lib/string/String.__eq + if + i32.const 2 + local.set $3 + end local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $6 call $~lib/rt/stub/__release end - local.get $6 - i32.store offset=4 - local.get $5 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $0 - call $~lib/rt/stub/__retain - local.set $6 - local.get $3 - call $~lib/rt/stub/__release + local.get $4 + i32.const 4 + i32.rem_u + i32.const 0 + i32.eq + if (result i32) + local.get $4 + i32.const 4 + i32.div_u + i32.const 3 + i32.mul + else + local.get $4 + i32.const 4 + i32.div_u + i32.const 1 + i32.add + i32.const 3 + i32.mul + end + local.set $6 + local.get $3 + i32.const 0 + i32.gt_s + if (result i32) + i32.const 3 + local.get $3 + i32.sub + else + i32.const 0 + end + local.set $7 + local.get $6 + local.get $7 + i32.add + local.set $8 + i32.const 0 + local.get $8 + call $~lib/typedarray/Uint8Array#constructor + local.set $9 + i32.const 0 + local.set $10 + block $break|0 + i32.const 0 + local.set $1 + loop $loop|0 + local.get $1 + local.get $4 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 18 + i32.shl + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 12 + i32.shl + i32.or + local.get $0 + local.get $1 + i32.const 2 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 6 + i32.shl + i32.or + local.get $0 + local.get $1 + i32.const 3 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.or + local.set $2 + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 16 + i32.shr_u + call $~lib/typedarray/Uint8Array#__set + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $loop|0 + end + unreachable + end + block $break|1 + block $case1|1 + block $case0|1 + local.get $3 + local.set $11 + local.get $11 + i32.const 1 + i32.eq + br_if $case0|1 + local.get $11 + i32.const 2 + i32.eq + br_if $case1|1 + br $break|1 + end + local.get $0 + local.get $1 + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 18 + i32.shl + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 12 + i32.shl + i32.or + local.get $0 + local.get $1 + i32.const 2 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 6 + i32.shl + i32.or + local.set $2 + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 16 + i32.shr_u + call $~lib/typedarray/Uint8Array#__set + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + br $break|1 + end + local.get $0 + local.get $1 + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 18 + i32.shl + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/near-runtime-ts/base64/base64.getByte64 + i32.const 12 + i32.shl + i32.or + local.set $2 + local.get $9 + local.get $10 + local.tee $11 + i32.const 1 + i32.add + local.set $10 + local.get $11 + local.get $2 + i32.const 16 + i32.shr_u + call $~lib/typedarray/Uint8Array#__set + br $break|1 + end + local.get $9 + local.set $11 local.get $5 call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.get $0 call $~lib/rt/stub/__release - local.get $6 + local.get $11 ) - (func $~lib/nearEntry/decode (; 517 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -27248,2643 +7900,3211 @@ drop i32.const 0 local.set $2 - i32.const 0 - call $assembly/model/ContainerClass#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - local.get $0 - local.get $1 - call $assembly/model/ContainerClass#decode - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - ) - (func $assembly/test/__near_ArgsParser_rewrapFoobar#pushObject (; 518 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne + local.tee $3 i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if + local.get $0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz + i32.eq if - i32.const 0 - i32.const 952 - i32.const 152 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 i32.const 6 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release + local.get $4 + local.tee $5 local.get $2 - return - else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz + local.tee $6 + i32.ne if - i32.const 0 - i32.const 952 - i32.const 156 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release end - end - local.get $1 - i32.const 4744 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode - local.set $3 - local.get $2 - i32.load offset=12 - call $~lib/rt/stub/__release + local.get $5 + local.set $2 local.get $3 - i32.store offset=12 - i32.const 0 - local.set $3 - local.get $1 call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 519 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz if + i32.const 2432 local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3704 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return end - i32.const 2 - i32.const 2 - i32.const 16 i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $4 + local.set $8 local.get $2 - i32.store offset=4 - local.get $3 call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - i32.const 0 - i32.ge_s + local.set $6 + local.get $1 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + local.tee $5 + i32.eqz if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else i32.const 0 + else + local.get $5 + i32.const 19 + call $~lib/rt/__instanceof end i32.eqz if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 + i32.const 2720 + local.get $7 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3600 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 471 + i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 - local.set $3 - local.get $4 + local.get $6 + i32.load + call $~lib/rt/stub/__retain + local.set $4 + local.get $7 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $5 call $~lib/rt/stub/__release local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 520 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + call $~lib/rt/stub/__release + local.get $4 + local.set $3 + local.get $3 + call $~lib/near-runtime-ts/base64/base64.decode + local.tee $5 + call $~lib/rt/stub/__retain + local.set $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__release local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $6 + return + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 25 + call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain - return end local.get $1 - i32.const 1680 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end + i32.store offset=12 local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq if - i32.const 1752 - call $~lib/rt/stub/__retain - return + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable end + local.get $0 local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return - end + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/decodeArray<~lib/string/String> (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $2 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof end - i32.const 0 i32.eqz if - i32.const 1904 - i32.const 1 - global.set $~lib/argc + i32.const 2720 local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 + local.tee $2 + i32.const 2840 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 478 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 656 - call $~lib/rt/stub/__retain + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor local.set $4 - local.get $6 + local.get $0 + i32.load + call $~lib/rt/stub/__retain + local.set $5 + block $break|0 + i32.const 0 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode<~lib/string/String> + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $4 + local.set $8 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $4 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 521 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1152 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + local.set $2 + local.get $0 + local.tee $3 i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 + if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + call $~lib/rt/stub/__retain local.set $3 local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 i32.const 0 - call $~lib/string/String#charCodeAt i32.eq if - i32.const 1 - global.set $~lib/argc local.get $0 - i32.load offset=4 + call $~lib/rt/stub/__release local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end + call $~lib/rt/stub/__release local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $4 - call $~lib/array/Array<~lib/string/String>#push + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 + local.get $6 call $~lib/rt/stub/__release - local.get $2 + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end end - br $loop|0 + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3872 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return end - unreachable + i32.const 0 + local.set $8 + i32.const 0 + i32.eqz + if + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2768 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 539 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/nearEntry/decodeArray<~lib/string/String> + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 522 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + local.get $3 + i32.const 2 + call $~lib/array/ensureSize local.get $0 i32.load offset=4 - local.tee $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 + local.get $3 + i32.store offset=12 + local.get $3 + local.set $4 local.get $1 - i32.load call $~lib/rt/stub/__release - local.get $2 - i32.store + local.get $4 + ) + (func $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + local.tee $2 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof + end i32.eqz if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 2840 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 478 + i32.const 2 call $~lib/builtins/abort unreachable end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 523 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if + i32.const 0 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor + local.set $4 + local.get $0 + i32.load + call $~lib/rt/stub/__retain + local.set $5 + block $break|0 i32.const 0 - return + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable end + local.get $4 + local.set $8 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 + ) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.load offset=4 - i32.load call $~lib/rt/stub/__retain - local.set $1 + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if + i32.eqz + if (result i32) + i32.const 0 + else local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + i32.const 8 + call $~lib/rt/__instanceof end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/test/__near_ArgsParser_rewrapFoobar#pushObject if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 + call $~lib/rt/stub/__retain local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort unreachable end + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1064 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq i32.eqz if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3768 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 call $~lib/builtins/abort unreachable end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + i32.const 0 + i32.eqz + if + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2768 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 539 + i32.const 4 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 local.get $1 + call $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> + local.set $4 + local.get $5 call $~lib/rt/stub/__release local.get $3 - ) - (func $assembly/test/__near_ArgsParser_rewrapFoobar#pushArray (; 524 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + call $~lib/rt/stub/__release local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 525 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 + (func $~lib/array/Array#constructor (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 26 + call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release end - local.get $3 - i32.store + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 local.get $0 - i32.load local.get $1 - call $assembly/test/__near_ArgsParser_rewrapFoobar#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end + i32.store offset=12 local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray + ) + (func $~lib/array/Array#push (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 i32.const 1 + i32.add local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add local.get $1 - call $~lib/rt/stub/__release + i32.store + local.get $0 + local.get $3 + i32.store offset=12 local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 526 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decodeArray (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $2 + i32.eqz + if (result i32) i32.const 0 - return + else + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 2840 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 478 + i32.const 2 + call $~lib/builtins/abort + unreachable end + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $4 local.get $0 i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 527 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 call $~lib/rt/stub/__retain - drop + local.set $5 block $break|0 i32.const 0 - local.set $2 + local.set $6 loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length i32.lt_s i32.eqz br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array#push + drop + local.get $6 i32.const 1 i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 + local.set $6 + local.get $7 call $~lib/rt/stub/__release br $loop|0 end unreachable end - local.get $1 + local.get $4 + local.set $8 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 528 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 529 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2584 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if - i64.const -1 - local.set $2 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 + call $~lib/rt/stub/__release local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else local.get $0 - i32.load offset=4 - i32.load - local.get $1 + local.tee $6 local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof end - i32.const 0 - ) - (func $assembly/test/__near_ArgsParser_rewrapFoobar#setNull (; 530 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 4744 - call $~lib/string/String.__eq if - local.get $0 - local.tee $2 i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne + i32.eqz if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3976 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $3 - i32.store offset=12 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 return end + i32.const 0 + local.set $8 + i32.const 0 + i32.eqz + if + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2768 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 539 + i32.const 4 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + call $~lib/nearEntry/decodeArray + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 531 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#constructor (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load + if (result i32) local.get $0 - i32.load offset=4 - i32.load - call $assembly/test/__near_ArgsParser_rewrapFoobar#setNull - i32.const 1 - return + else + i32.const 16 + i32.const 18 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 532 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array#push (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + ) + (func $~lib/nearEntry/decodeArray (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $2 + i32.eqz if (result i32) - local.get $1 + i32.const 0 else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof end - local.tee $1 - if (result i32) + i32.eqz + if + i32.const 2720 local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + call $~lib/string/String.__concat + local.tee $2 + i32.const 2840 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 478 + i32.const 2 + call $~lib/builtins/abort + unreachable end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $4 + local.get $0 + i32.load + call $~lib/rt/stub/__retain + local.set $5 + block $break|0 + i32.const 0 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable end - local.set $1 + local.get $4 + local.set $8 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 533 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 call $~lib/rt/stub/__retain drop - local.get $2 + local.get $1 call $~lib/rt/stub/__retain drop - local.get $2 i32.const 0 - i32.ne + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $5 call $~lib/rt/stub/__retain drop - local.get $3 + local.get $6 call $~lib/rt/stub/__release end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release local.get $4 - i32.store offset=4 + call $~lib/rt/stub/__release else local.get $0 + local.tee $6 + local.get $2 local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4048 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release local.get $4 - i32.load offset=4 call $~lib/rt/stub/__release local.get $3 - i32.store offset=4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue i32.const 0 - i32.ne + local.set $8 + i32.const 0 i32.eqz if - i32.const 3128 - i32.const 840 - i32.const 100 + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2768 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 539 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/nearEntry/decodeArray + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $assembly/model/AnotherContainerClass#constructor (; 534 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/bignum/integer/u128/u128#constructor (; 152 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) local.get $0 i32.eqz if - i32.const 4 - i32.const 59 + i32.const 16 + i32.const 5 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 end local.get $0 - i32.const 0 - i32.store + local.get $1 + i64.store + local.get $0 + local.get $2 + i64.store offset=8 local.get $0 ) - (func $assembly/main/rewrapFoobar (; 535 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/bignum/integer/u128/u128#decode (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 + local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - call $assembly/model/AnotherContainerClass#constructor - local.set $1 local.get $1 - local.tee $3 - i32.const 1 - i32.const 2 - i32.const 60 - i32.const 0 - call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 1 - i32.const 2 - i32.const 19 - i32.const 0 - call $~lib/rt/__allocArray - local.set $4 - local.get $4 - i32.load offset=4 - local.set $5 - local.get $5 local.get $0 - i32.load - call $~lib/rt/stub/__retain - i32.store - local.get $4 - call $~lib/rt/stub/__retain - i32.store local.get $2 - local.tee $4 - local.get $3 - i32.load - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store - local.get $1 - local.set $4 + i32.const 4144 + call $~lib/nearEntry/decode + i64.store local.get $0 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $assembly/test/rewrapFoobar (; 536 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + local.get $2 + i32.const 4168 + call $~lib/nearEntry/decode + i64.store offset=8 local.get $0 call $~lib/rt/stub/__retain - drop - local.get $0 - call $assembly/main/rewrapFoobar - local.set $1 - local.get $0 + local.set $3 + local.get $2 call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $3 ) - (func $~lib/array/Array<~lib/array/Array>#get:length (; 537 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 538 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 539 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1256 - i32.const 1368 - i32.const 106 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1368 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__unchecked_get - ) - (func $~lib/array/Array#get:length (; 540 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__unchecked_get (; 541 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array#__get (; 542 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1256 - i32.const 1368 - i32.const 106 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 672 - i32.const 1368 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 543 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 i32.const 0 - i32.eq + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if local.get $0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release else local.get $0 + local.tee $6 local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - local.tee $4 - i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4120 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort unreachable end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $2 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2944 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 543 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $4 + local.tee $7 + local.get $8 + local.tee $6 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release end + local.get $7 + local.set $8 + local.get $8 + local.get $2 + call $~lib/bignum/integer/u128/u128#decode + local.set $7 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $0 - local.set $4 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $8 call $~lib/rt/stub/__release - local.get $4 + local.get $7 ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> (; 544 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if + if (result i32) local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $4 - i32.const 0 - call $~lib/nearEntry/encode<~lib/array/Array> - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + i32.const 16 + i32.const 27 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 local.get $0 - local.set $4 + i32.const 0 + i32.store offset=12 local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $4 + if + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 ) - (func $assembly/model/AnotherContainerClass#encode (; 545 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#push (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop + local.get $0 + i32.load offset=12 + local.set $2 local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.ne - if (result i32) - local.get $1 - call $~lib/rt/stub/__retain - else - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - end - local.tee $3 - if (result i32) - local.get $3 - else - unreachable - end - call $~lib/rt/stub/__retain + i32.const 1 + i32.add local.set $3 + local.get $0 local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject - drop - local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $1 + call $~lib/rt/stub/__retain + i32.store local.get $0 - i32.load - i32.const 2136 - call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> - call $~lib/rt/stub/__release local.get $3 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + i32.store offset=12 local.get $3 local.set $4 local.get $1 call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 546 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + local.get $0 + local.tee $2 + i32.eqz + if (result i32) + i32.const 0 else - local.get $1 - local.get $0 local.get $2 - call $assembly/model/AnotherContainerClass#encode - call $~lib/rt/stub/__release - end - local.get $0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assembly/test/__wrapper_rewrapFoobar (; 547 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq - if - call $~lib/nearEntry/panic + i32.const 17 + call $~lib/rt/__instanceof end - i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/test/__near_ArgsParser_rewrapFoobar#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne + i32.eqz if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 2840 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 478 + i32.const 2 + call $~lib/builtins/abort + unreachable end - local.get $5 - i32.store - local.get $3 - local.tee $5 i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - call $assembly/test/rewrapFoobar + call $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor local.set $4 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.get $0 + i32.load + call $~lib/rt/stub/__retain local.set $5 - local.get $5 + block $break|0 + i32.const 0 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end local.get $4 - i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $6 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release + local.set $8 local.get $2 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - ) - (func $assembly/test/__near_ArgsParser_unwrapFoobar#constructor (; 548 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 61 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 549 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop + i32.const 0 + local.set $2 local.get $0 + local.tee $3 i32.eqz - if + if (result i32) + i32.const 0 + else + local.get $3 i32.const 8 - i32.const 62 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/__instanceof end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne if - local.get $3 + local.get $0 call $~lib/rt/stub/__retain - drop + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 550 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 551 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 else - local.get $1 - i32.const 10 - i32.eq + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 end + local.get $2 + local.tee $6 + i32.eqz if (result i32) - i32.const 1 + i32.const 0 else - local.get $1 - i32.const 13 - i32.eq + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof end - if (result i32) - i32.const 1 - else + if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4232 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 - i32.const 32 - i32.eq + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 552 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s + i32.const 0 + local.set $8 + i32.const 0 i32.eqz if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2768 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 539 + i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 + local.get $1 + call $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 + call $~lib/rt/stub/__release local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 553 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $assembly/model/__near_JSONHandler_AnotherContainerClass#constructor (; 554 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + (func $~lib/array/Array#constructor (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else i32.const 16 - i32.const 63 + i32.const 28 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor local.set $0 local.get $0 i32.const 0 - i32.store + i32.store offset=12 local.get $0 - i32.const 0 - i32.store offset=4 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#push (; 160 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.const 0 - i32.store8 offset=8 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 local.get $0 - i32.const 0 - i32.store offset=12 + local.get $3 + i32.const 3 + call $~lib/array/ensureSize local.get $0 - local.tee $2 - local.get $1 - local.tee $3 + i32.load offset=4 local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 + i32.const 3 + i32.shl + i32.add local.get $1 - call $~lib/rt/stub/__release + i64.store local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 555 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop local.get $0 + local.tee $2 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof + end i32.eqz if - i32.const 8 - i32.const 64 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 2840 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 478 + i32.const 2 + call $~lib/builtins/abort + unreachable end - local.get $0 i32.const 0 - i32.store - local.get $0 i32.const 0 - i32.store offset=4 + call $~lib/array/Array#constructor + local.set $4 local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + call $~lib/rt/stub/__retain + local.set $5 + block $break|0 + i32.const 0 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable end + local.get $4 + local.set $7 + local.get $2 + call $~lib/rt/stub/__release local.get $3 - i32.store - local.get $1 + call $~lib/rt/stub/__release + local.get $5 call $~lib/rt/stub/__release local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $7 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 556 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 + (func $~lib/nearEntry/decode<~lib/array/Array> (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 557 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + call $~lib/rt/stub/__retain + drop local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 10 - i32.eq - end + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.tee $3 + i32.eqz if (result i32) - i32.const 1 + i32.const 0 else - local.get $1 - i32.const 13 - i32.eq + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof end - if (result i32) - i32.const 1 - else + if + local.get $0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 local.get $1 - i32.const 32 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 558 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 559 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 + if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain drop - br $continue|0 + local.get $4 + call $~lib/rt/stub/__release end - unreachable + local.get $6 + local.set $2 end - ) - (func $assembly/model/__near_JSONHandler_AnotherContainerClass#pushObject (; 560 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load8_u offset=8 - i32.const 0 - i32.ne + local.get $2 + local.tee $6 i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end if - local.get $1 i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end i32.eqz if - i32.const 0 - i32.const 2192 - i32.const 269 - i32.const 6 + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4352 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 call $~lib/builtins/abort unreachable end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 + call $~lib/rt/stub/__release + local.get $7 return - else + end + i32.const 0 + local.set $8 + i32.const 0 + i32.eqz + if + i32.const 2720 local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 2192 - i32.const 273 - i32.const 6 - call $~lib/builtins/abort - unreachable - end + call $~lib/string/String.__concat + local.tee $5 + i32.const 2768 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 539 + i32.const 4 + call $~lib/builtins/abort + unreachable end local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $2 + call $~lib/nearEntry/decodeArray + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 561 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $assembly/model/FooBar#decode (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain local.set $2 + local.get $0 local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray + i32.const 3040 + call $~lib/nearEntry/decode + i32.store + local.get $0 + local.get $2 + i32.const 3144 + call $~lib/nearEntry/decode + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 3192 + call $~lib/nearEntry/decode + i64.store offset=8 + local.get $0 + local.get $2 + i32.const 3392 + call $~lib/nearEntry/decode + i64.store offset=16 + local.get $0 + local.get $2 + i32.const 3424 + call $~lib/nearEntry/decode + i64.store offset=24 + local.get $0 + local.get $2 + i32.const 3480 + call $~lib/nearEntry/decode + i32.store8 offset=32 + local.get $0 + local.tee $3 + local.get $2 + i32.const 3576 + call $~lib/nearEntry/decode<~lib/string/String> + local.set $4 + local.get $3 + i32.load offset=36 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=36 + local.get $0 + local.tee $4 + local.get $2 + i32.const 3664 + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> local.set $3 + local.get $4 + i32.load offset=40 + call $~lib/rt/stub/__release local.get $3 - i32.load offset=4 + i32.store offset=40 + local.get $0 + local.tee $3 + local.get $2 + i32.const 3744 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> local.set $4 + local.get $3 + i32.load offset=44 + call $~lib/rt/stub/__release local.get $4 - local.get $1 - i32.store - local.get $4 + i32.store offset=44 + local.get $0 + local.tee $4 local.get $2 - i32.store offset=4 + i32.const 3944 + call $~lib/nearEntry/decode<~lib/array/Array> + local.set $3 + local.get $4 + i32.load offset=48 + call $~lib/rt/stub/__release local.get $3 - call $~lib/rt/stub/__retain + i32.store offset=48 + local.get $0 + local.tee $3 + local.get $2 + i32.const 4016 + call $~lib/nearEntry/decode<~lib/array/Array> local.set $4 + local.get $3 + i32.load offset=52 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=52 + local.get $0 + local.tee $4 local.get $2 - i32.const 0 - i32.ge_s - if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else - i32.const 0 - end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + i32.const 4088 + call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> + local.set $3 + local.get $4 + i32.load offset=56 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=56 + local.get $0 + local.tee $3 + local.get $2 + i32.const 4192 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> + local.set $4 + local.get $3 + i32.load offset=60 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=60 + local.get $0 + local.tee $4 local.get $2 + i32.const 4320 + call $~lib/nearEntry/decode<~lib/array/Array> + local.set $3 + local.get $4 + i32.load offset=64 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=64 + local.get $0 + call $~lib/rt/stub/__retain local.set $3 - local.get $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 562 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decode (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__retain + drop local.get $1 - i32.const 1776 + call $~lib/rt/stub/__retain + drop i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 - call $~lib/rt/stub/__retain - return + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + call $~lib/rt/stub/__retain local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 - i32.const 4096 - i32.mul + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 local.get $3 - i32.const 256 - i32.mul - i32.add + call $~lib/rt/stub/__release local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end local.get $6 - call $~lib/string/String.fromCodePoint + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2912 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 + local.set $8 + local.get $2 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end i32.eqz if - i32.const 1904 - i32.const 1 - global.set $~lib/argc + i32.const 2720 local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 call $~lib/string/String.__concat local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 + i32.const 2944 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 543 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 656 + i32.const 0 + call $assembly/model/FooBar#constructor + local.tee $4 + local.tee $7 + local.get $8 + local.tee $6 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $8 + local.get $8 + local.get $2 + call $assembly/model/FooBar#decode + local.set $7 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + ) + (func $~lib/array/Array#push (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 call $~lib/rt/stub/__retain + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 + local.get $1 call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 563 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decodeArray (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $2 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof + end i32.eqz if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 2840 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 478 + i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 i32.const 0 i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 + call $~lib/array/Array#constructor + local.set $4 + local.get $0 + i32.load + call $~lib/rt/stub/__retain + local.set $5 + block $break|0 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode + local.set $8 local.get $4 - call $~lib/array/Array<~lib/string/String>#push + local.get $8 + call $~lib/array/Array#push drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 call $~lib/rt/stub/__release - local.get $2 + local.get $8 call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end + br $loop|0 end - br $loop|0 + unreachable end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 564 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 + local.get $4 + local.set $8 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 + call $~lib/rt/stub/__release local.get $1 - i32.load call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + local.get $8 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 565 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load call $~lib/rt/stub/__retain - local.set $1 + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if + i32.eqz + if (result i32) + i32.const 0 + else local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + i32.const 8 + call $~lib/rt/__instanceof end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/model/__near_JSONHandler_AnotherContainerClass#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop + if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 + call $~lib/rt/stub/__retain local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1064 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 i32.const 0 - call $~lib/string/String#charCodeAt i32.eq - i32.eqz if - i32.const 2048 - i32.const 840 - i32.const 149 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 i32.const 6 call $~lib/builtins/abort unreachable end + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/array/Array>#constructor (; 566 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 + local.get $2 + local.tee $6 + i32.eqz if (result i32) - local.get $0 + i32.const 0 else - i32.const 16 - i32.const 60 - call $~lib/rt/stub/__alloc + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2600 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 i32.const 0 - i32.store offset=12 - local.get $1 + local.set $8 + i32.const 0 + i32.eqz if - i32.const 1256 - i32.const 1368 - i32.const 56 - i32.const 20 + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2768 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 539 + i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 local.get $1 - i32.store offset=12 + call $~lib/nearEntry/decodeArray + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $0 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#constructor (; 567 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $4 + return + ) + (func $assembly/main/convertFoobars~anonymous|0 (; 168 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 call $~lib/rt/stub/__retain drop local.get $2 call $~lib/rt/stub/__retain drop + i32.const 4 + i32.const 23 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $0 + i32.store + local.get $3 + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/array/Array#map (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + local.tee $6 + call $~lib/rt/stub/__retain + local.set $7 + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + call $~lib/rt/stub/__retain + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end local.get $3 + ) + (func $assembly/main/convertFoobars (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 call $~lib/rt/stub/__retain drop local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 65 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 i32.const 1 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 + call $~lib/array/Array#map + local.set $1 local.get $0 + call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__retain - i32.store offset=4 + ) + (func $assembly/test/convertFoobars (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 - local.get $2 call $~lib/rt/stub/__retain - i32.store offset=8 + drop local.get $0 - local.get $3 - call $~lib/rt/stub/__retain - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + call $assembly/main/convertFoobars + local.set $1 local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#constructor (; 568 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop local.get $0 i32.eqz if i32.const 8 - i32.const 66 + i32.const 31 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -29896,1311 +11116,2024 @@ i32.const 0 i32.store offset=4 local.get $0 - local.tee $2 + local.tee $1 + i32.const 0 + i32.const 10 + call $~lib/array/Array#constructor + local.set $2 local.get $1 - local.tee $3 - local.get $2 i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 + call $~lib/rt/stub/__release + local.get $2 i32.store - local.get $1 + local.get $0 + local.tee $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $1 + local.get $2 + i32.load offset=4 call $~lib/rt/stub/__release + local.get $1 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar (; 569 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 173 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=4 - i32.load offset=4 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s + i32.const 2 + i32.shr_u + i32.ge_u if - i32.const -1 - return + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load offset=4 - i32.load offset=8 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load + call $~lib/array/Array#get:length + i32.const 1 + i32.sub + call $~lib/array/Array#__get + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 177 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load offset=4 + local.get $1 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array#__unchecked_set (; 178 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#isWhitespace (; 570 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__set (; 179 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 + local.get $0 local.get $1 - i32.const 9 - i32.eq - if (result i32) - i32.const 1 - else + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + local.get $1 + local.get $3 + i32.ge_s + if + local.get $0 local.get $1 - i32.const 10 - i32.eq + i32.const 1 + i32.add + i32.store offset=12 + end + ) + (func $~lib/string/String.__ne (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String#substring (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $6 + local.get $2 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $7 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $8 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $9 + local.get $9 + local.get $8 + i32.sub + local.set $3 + local.get $3 + i32.eqz + if + i32.const 816 + call $~lib/rt/stub/__retain + return end + local.get $8 + i32.eqz if (result i32) + local.get $9 + local.get $0 + call $~lib/string/String#get:length i32.const 1 - else - local.get $1 - i32.const 13 + i32.shl i32.eq - end - if (result i32) - i32.const 1 else - local.get $1 - i32.const 32 - i32.eq + i32.const 0 + end + if + local.get $0 + call $~lib/rt/stub/__retain + return end + local.get $3 + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $10 + local.get $10 + local.get $0 + local.get $8 + i32.add + local.get $3 + call $~lib/memory/memory.copy + local.get $10 + call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar (; 571 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 182 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz + i32.const 100000 + i32.lt_u if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort + local.get $0 + i32.const 100 + i32.lt_u + if + i32.const 1 + i32.const 2 + local.get $0 + i32.const 10 + i32.lt_u + select + return + else + i32.const 4 + i32.const 5 + local.get $0 + i32.const 10000 + i32.lt_u + select + local.set $1 + i32.const 3 + local.get $1 + local.get $0 + i32.const 1000 + i32.lt_u + select + return + end + unreachable + else + local.get $0 + i32.const 10000000 + i32.lt_u + if + i32.const 6 + i32.const 7 + local.get $0 + i32.const 1000000 + i32.lt_u + select + return + else + i32.const 9 + i32.const 10 + local.get $0 + i32.const 1000000000 + i32.lt_u + select + local.set $1 + i32.const 8 + local.get $1 + local.get $0 + i32.const 100000000 + i32.lt_u + select + return + end unreachable end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Uint8Array#__get + unreachable ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace (; 572 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/util/number/utoa32_lut (; 183 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + i32.const 5040 + i32.load offset=4 + local.set $3 block $break|0 loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#isWhitespace + local.get $1 + i32.const 10000 + i32.ge_u i32.eqz br_if $break|0 + local.get $1 + i32.const 10000 + i32.div_u + local.set $4 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $9 + local.get $2 + i32.const 4 + i32.sub + local.set $2 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - drop + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $9 + i64.const 32 + i64.shl + i64.or + i64.store br $continue|0 end unreachable end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $1 + i32.const 100 + i32.div_u + local.set $7 + local.get $1 + i32.const 100 + i32.rem_u + local.set $6 + local.get $7 + local.set $1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store + else + local.get $2 + i32.const 1 + i32.sub + local.set $2 + i32.const 48 + local.get $1 + i32.add + local.set $5 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 + end ) - (func $~lib/array/Array<~lib/array/Array>#push (; 573 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/itoa32 (; 184 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end + local.get $0 + i32.const 0 + i32.lt_s + local.set $1 local.get $1 - call $~lib/rt/stub/__retain - drop + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end local.get $0 - i32.load offset=12 + call $~lib/util/number/decimalCount32 + local.get $1 + i32.add local.set $2 local.get $2 i32.const 1 - i32.add + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc local.set $3 - local.get $0 local.get $3 - i32.const 2 - call $~lib/array/ensureSize + local.set $6 local.get $0 - i32.load offset=4 + local.set $5 local.get $2 - i32.const 2 - i32.shl - i32.add + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut local.get $1 + if + local.get $3 + i32.const 45 + i32.store16 + end + local.get $3 call $~lib/rt/stub/__retain - i32.store + ) + (func $~lib/util/number/itoa (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 + call $~lib/util/number/itoa32 + return ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#pushObject (; 574 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/I32#toString (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop local.get $0 - i32.load offset=8 + call $~lib/util/number/itoa + local.tee $1 call $~lib/rt/stub/__retain local.set $2 - local.get $0 - i32.load offset=12 - call $~lib/rt/stub/__retain - local.set $3 - local.get $2 - local.get $3 - call $~lib/nearEntry/decode<~lib/array/Array> - local.set $4 - local.get $0 - i32.load offset=4 - local.get $4 - call $~lib/array/Array<~lib/array/Array>#push - drop - i32.const 0 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $5 - return + local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readHexDigit (; 575 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 187 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - local.set $1 + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 1248 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + i32.const 0 local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 + call $~lib/string/String#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $3 + call $~lib/string/String#charCodeAt + local.set $4 + local.get $4 + i32.const 32 + i32.lt_s + local.tee $5 + if (result i32) + local.get $5 + else + local.get $4 + i32.const 1248 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + end + local.tee $5 + if (result i32) + local.get $5 + else + local.get $4 + i32.const 1472 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + end + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/string/String#substring + local.tee $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $3 + i32.const 1 + i32.add + local.set $2 + local.get $4 + i32.const 1248 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4392 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1472 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4416 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1544 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4440 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1592 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4464 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1640 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4488 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $4 + i32.const 1688 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.eq + if + local.get $0 + i32.const 4512 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + i32.const 0 + i32.eqz + if + i32.const 4536 + local.get $4 + call $~lib/number/I32#toString + local.tee $7 + call $~lib/string/String.__concat + local.tee $8 + i32.const 5072 + i32.const 108 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + end + end + end + end + end + end + local.get $6 + call $~lib/rt/stub/__release + end + local.get $3 + i32.const 1 i32.add - local.set $2 + local.set $3 + br $loop|0 end + unreachable end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 + local.get $0 local.get $1 - i32.store - local.get $4 local.get $2 - i32.store offset=4 - local.get $3 + local.get $1 + call $~lib/string/String#get:length + call $~lib/string/String#substring + local.tee $5 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.const 1248 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $5 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 188 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 call $~lib/rt/stub/__retain - local.set $4 - local.get $2 + drop + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey i32.const 0 - i32.ge_s + i32.ne + i32.eqz + if + local.get $0 + i32.const 1184 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + else + local.get $0 + i32.load + local.get $0 + i32.load + call $~lib/array/Array#get:length + i32.const 1 + i32.sub + i32.const 0 + call $~lib/array/Array#__set + end + local.get $1 + i32.const 0 + call $~lib/string/String.__ne if (result i32) - local.get $2 - i32.const 16 - i32.lt_s + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + i32.gt_s else i32.const 0 end - i32.eqz if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + local.tee $2 + if (result i32) + local.get $2 + else + unreachable + end + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString + local.get $0 + i32.const 1872 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write end - local.get $2 - local.set $3 - local.get $4 + local.get $1 call $~lib/rt/stub/__release - local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readEscapedChar (; 576 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 189 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - local.set $1 local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 216 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__retain + drop + local.get $0 local.get $1 - i32.const 1632 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return - end + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 2048 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop + i32.const 1 + local.set $2 local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/array/Array#get:length (; 191 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array#__get (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 1800 - call $~lib/rt/stub/__retain - return + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable end local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 call $~lib/builtins/abort unreachable end - i32.const 656 + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 call $~lib/rt/stub/__retain - local.set $4 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + i32.const 1088 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + i32.const 1 + call $~lib/array/Array#push + drop + i32.const 1 + local.set $2 + local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readString (; 577 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount64 (; 195 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz + i64.const 1000000000000000 + i64.lt_u if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz + i64.const 1000000000000 + i64.lt_u if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable + i32.const 11 + i32.const 12 + local.get $0 + i64.const 100000000000 + i64.lt_u + select + local.set $1 + i32.const 10 + local.get $1 + local.get $0 + i64.const 10000000000 + i64.lt_u + select + return + else + i32.const 14 + i32.const 15 + local.get $0 + i64.const 100000000000000 + i64.lt_u + select + local.set $1 + i32.const 13 + local.get $1 + local.get $0 + i64.const 10000000000000 + i64.lt_u + select + return end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + unreachable + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u if - i32.const 1 - global.set $~lib/argc + i32.const 16 + i32.const 17 local.get $0 - i32.load offset=4 + i64.const 10000000000000000 + i64.lt_u + select + return + else + i32.const 19 + i32.const 20 + local.get $0 + i64.const -8446744073709551616 + i64.lt_u + select + local.set $1 + i32.const 18 local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline + local.get $0 + i64.const 1000000000000000000 + i64.lt_u + select + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa64_lut (; 196 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + i32.const 5040 + i32.load offset=4 + local.set $3 + block $break|0 + loop $continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + i32.eqz + br_if $break|0 + local.get $1 + i64.const 100000000 + i64.div_u local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 + local.get $1 local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 local.set $5 local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release + local.set $1 local.get $5 - return - else + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $7 + local.get $6 + i32.const 100 + i32.div_u + local.set $8 + local.get $6 + i32.const 100 + i32.rem_u + local.set $9 + local.get $7 + i32.const 100 + i32.div_u + local.set $10 + local.get $7 + i32.const 100 + i32.rem_u + local.set $11 local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end + local.get $10 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $11 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + local.get $3 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $9 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 end - br $loop|0 + unreachable end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseKey (; 578 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readString - local.set $2 local.get $1 - i32.load - call $~lib/rt/stub/__release + i32.wrap_i64 local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + call $~lib/util/number/utoa32_lut ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseObject (; 579 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa64 (; 197 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i64.eqz if - i32.const 0 + i32.const 240 + call $~lib/rt/stub/__retain return end local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain + i64.const 0 + i64.lt_s local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne + local.get $1 if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + i64.const 0 + local.get $0 + i64.sub + local.set $0 end - local.get $3 - i32.store local.get $0 - i32.load - local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#pushObject + i64.const 4294967295 + i64.le_u if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - drop + i32.wrap_i64 + local.set $3 + local.get $3 + call $~lib/util/number/decimalCount32 + local.get $1 + i32.add + local.set $4 + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + local.set $7 + local.get $3 + local.set $6 + local.get $4 + local.set $5 + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_lut + else local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace + call $~lib/util/number/decimalCount64 + local.get $1 + i32.add + local.set $4 + local.get $4 i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseValue - drop - br $continue|0 - end - unreachable - end + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $2 + local.get $2 + local.set $6 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable - end + local.set $8 + local.get $4 + local.set $5 + local.get $6 + local.get $8 + local.get $5 + call $~lib/util/number/utoa64_lut + end + local.get $1 + if + local.get $2 + i32.const 45 + i32.store16 end + local.get $2 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa (; 198 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + local.get $0 + call $~lib/util/number/itoa64 + return + ) + (func $~lib/number/I64#toString (; 199 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/util/number/itoa + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 200 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/number/I64#toString + local.tee $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 201 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/encode (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 + local.get $1 + i64.extend_i32_s + call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger + local.get $0 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/encode (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 + local.get $1 + i64.extend_i32_u + call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 local.set $3 - local.get $1 + local.get $2 call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#pushArray (; 580 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/utoa64 (; 204 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) local.get $0 - i32.load8_u + i64.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end + local.get $0 + i64.const 4294967295 + i64.le_u if local.get $0 - i32.const 0 - i32.store8 - i32.const 1 + i32.wrap_i64 local.set $2 - local.get $1 - call $~lib/rt/stub/__release local.get $2 - return - end - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) + call $~lib/util/number/decimalCount32 + local.set $3 + local.get $3 + i32.const 1 + i32.shl i32.const 1 + call $~lib/rt/stub/__alloc + local.set $1 + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut else + local.get $0 + call $~lib/util/number/decimalCount64 + local.set $3 + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/stub/__alloc + local.set $1 local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 3440 - i32.const 3496 - i32.const 276 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $0 + local.set $7 + local.get $3 + local.set $4 + local.get $5 + local.get $7 + local.get $4 + call $~lib/util/number/utoa64_lut end + local.get $1 + call $~lib/rt/stub/__retain + ) + (func $~lib/util/number/itoa (; 205 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 - i32.load offset=4 + call $~lib/util/number/utoa64 + return + ) + (func $~lib/number/U64#toString (; 206 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.load offset=8 + call $~lib/util/number/itoa + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 207 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop local.get $0 - i32.load offset=12 - call $~lib/nearEntry/decode<~lib/array/Array> - local.tee $2 - call $~lib/array/Array<~lib/array/Array>#push + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeString + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/encode (; 208 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain drop - i32.const 0 + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 + local.get $1 + call $~lib/number/U64#toString + local.tee $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + local.get $3 + call $~lib/rt/stub/__release + local.get $0 local.set $3 local.get $2 call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/encode (; 209 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 local.get $1 + call $~lib/number/I64#toString + local.tee $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + local.set $3 + local.get $2 call $~lib/rt/stub/__release local.get $3 - return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseArray (; 581 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 210 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return + local.get $1 + if (result i32) + i32.const 160 + call $~lib/rt/stub/__retain + local.tee $2 + else + i32.const 184 + call $~lib/rt/stub/__retain + local.tee $3 end - local.get $0 - i32.load offset=4 - i32.load + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 211 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 call $~lib/rt/stub/__retain - local.set $1 + drop + local.get $0 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store + call $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean + local.get $1 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/encode (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $0 - i32.load + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $2 local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end + call $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 local.set $3 - local.get $1 + local.get $2 call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setString (; 582 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/encode<~lib/string/String> (; 213 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop local.get $2 call $~lib/rt/stub/__retain drop + local.get $1 i32.const 0 - local.set $3 + call $~lib/string/String.__eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + end local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + local.set $3 local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release local.get $3 - call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseString (; 583 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/base64/base64.encode (; 214 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - i32.const 1152 + call $~lib/rt/stub/__retain + drop i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $3 local.get $0 - i32.load + call $~lib/typedarray/Uint8Array#get:length local.get $0 - i32.load offset=4 - i32.load + call $~lib/typedarray/Uint8Array#get:length + i32.const 3 + i32.rem_s + i32.sub + local.set $4 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readString - local.tee $1 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readAndAssert (; 584 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + call $~lib/typedarray/Uint8Array#get:length + i32.const 0 + i32.eq + if + i32.const 816 + call $~lib/rt/stub/__retain + local.set $5 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + return + end block $break|0 i32.const 0 - local.set $2 + local.set $1 loop $loop|0 - local.get $2 local.get $1 - call $~lib/string/String#get:length + local.get $4 i32.lt_s i32.eqz br_if $break|0 + local.get $0 local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt + call $~lib/typedarray/Uint8Array#__get + i32.const 16 + i32.shl local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.get $1 i32.const 1 i32.add + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.shl + i32.or + local.get $0 + local.get $1 + i32.const 2 + i32.add + call $~lib/typedarray/Uint8Array#__get + i32.or local.set $2 local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 18 + i32.shr_u + call $~lib/string/String#charAt + local.tee $5 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $6 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $7 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $8 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $1 + i32.const 3 + i32.add + local.set $1 + local.get $5 call $~lib/rt/stub/__release - local.get $4 + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 call $~lib/rt/stub/__release br $loop|0 end unreachable end - local.get $1 + block $break|1 + block $case1|1 + block $case0|1 + local.get $0 + call $~lib/typedarray/Uint8Array#get:length + local.get $4 + i32.sub + local.set $8 + local.get $8 + i32.const 1 + i32.eq + br_if $case0|1 + local.get $8 + i32.const 2 + i32.eq + br_if $case1|1 + br $break|1 + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + i32.const 16 + i32.shl + local.set $2 + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 18 + i32.shr_u + call $~lib/string/String#charAt + local.tee $8 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $7 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.PADCHAR + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.PADCHAR + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + br $break|1 + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + i32.const 16 + i32.shl + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.shl + i32.or + local.set $2 + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 18 + i32.shr_u + call $~lib/string/String#charAt + local.tee $7 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $8 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.ALPHA + local.get $2 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + call $~lib/string/String#charAt + local.tee $6 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + global.get $~lib/near-runtime-ts/base64/base64.PADCHAR + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + br $break|1 + end + local.get $3 + i32.const 816 + call $~lib/array/Array<~lib/string/String>#join + local.set $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 call $~lib/rt/stub/__release + local.get $6 ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setBoolean (; 585 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 call $~lib/rt/stub/__retain drop - local.get $0 local.get $1 + call $~lib/rt/stub/__retain + drop local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean + call $~lib/rt/stub/__retain + drop local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseBoolean (; 586 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - i32.const 160 i32.const 0 - call $~lib/string/String#charCodeAt i32.eq if local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readAndAssert - local.get $0 - i32.load + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setBoolean - i32.const 1 - return + local.get $2 + local.get $1 + call $~lib/near-runtime-ts/base64/base64.encode + local.tee $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + local.get $3 + call $~lib/rt/stub/__release end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setInteger (; 587 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - call $~lib/rt/stub/__retain - drop local.get $0 + local.set $3 local.get $1 + call $~lib/rt/stub/__release local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - local.get $1 call $~lib/rt/stub/__release + local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseNumber (; 588 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length (; 216 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 0 - i32.gt_s + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setInteger - i32.const 1 - return + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable end - i32.const 0 - ) - (func $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setNull (; 589 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get + ) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/stub/__release + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseNull (; 590 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i32.load offset=12 + i32.ge_u if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#setNull - i32.const 1 - return + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseValue (; 591 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace + local.get $1 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseNull + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__unchecked_get + ) + (func $~lib/array/Array#pop (; 221 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 local.set $1 + local.get $1 + i32.const 1 + i32.lt_s + if + i32.const 2000 + i32.const 768 + i32.const 287 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#skipWhitespace local.get $1 + i32.store offset=12 + local.get $2 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 222 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 2072 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + call $~lib/array/Array#pop + drop ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#deserialize (; 592 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop local.get $2 call $~lib/rt/stub/__retain drop - local.get $2 + local.get $1 i32.const 0 - i32.ne + i32.eq if local.get $0 - local.tee $3 local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + local.set $4 local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/array/Array>> (; 593 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#constructor - local.tee $2 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.get $3 - local.get $0 + drop local.get $1 - call $~lib/nearEntry/ArrayHandler<~lib/array/Array>#constructor - local.set $4 i32.const 0 - local.get $4 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#constructor - local.set $5 - local.get $5 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end local.get $0 + local.set $4 local.get $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/ArrayHandler<~lib/array/Array>>#deserialize - local.get $3 - local.set $6 + call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + ) + (func $~lib/array/Array#get:length (; 225 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__release + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/stub/__release - local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> (; 594 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#__get (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 228 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -31208,1784 +13141,1821 @@ local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 - local.get $0 - local.get $1 - call $~lib/nearEntry/ArrayHandler.decode<~lib/array/Array<~lib/array/Array>> - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release local.get $2 - call $~lib/rt/stub/__release - local.get $3 - return - ) - (func $assembly/model/__near_JSONHandler_AnotherContainerClass#pushArray (; 595 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 call $~lib/rt/stub/__retain drop local.get $1 - i32.const 2136 - call $~lib/string/String.__eq + i32.const 0 + i32.eq if local.get $0 - i32.load offset=12 - local.tee $2 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else local.get $0 - i32.load + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + unreachable + end local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> - local.set $3 - local.get $2 - i32.load - call $~lib/rt/stub/__release - local.get $3 - i32.store - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray local.set $3 local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 596 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 229 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load + call $~lib/rt/stub/__retain + drop local.get $1 - call $assembly/model/__near_JSONHandler_AnotherContainerClass#pushArray + i32.const 0 + i32.eq if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $loop|0 local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end + br_if $break|0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end unreachable end local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 local.set $3 local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 597 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Int8Array#constructor (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1152 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 32 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Int8Array#get:length (; 231 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + ) + (func $~lib/typedarray/Int8Array#__get (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 - return + i32.const 832 + i32.const 888 + i32.const 27 + i32.const 44 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load - local.get $0 i32.load offset=4 - i32.load + local.get $1 + i32.add + i32.load8_s + ) + (func $~lib/typedarray/Int8Array#__set (; 233 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 + i32.load offset=8 + i32.ge_u + if + i32.const 832 + i32.const 888 + i32.const 38 + i32.const 44 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/stub/__release + i32.add local.get $2 + i32.store8 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 598 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/bignum/utils/processU64 (; 234 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + local.get $0 call $~lib/rt/stub/__retain drop + local.get $0 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $2 block $break|0 - i32.const 0 - local.set $2 + i32.const 63 + local.set $3 loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s + local.get $3 + i32.const -1 + i32.ne i32.eqz br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort + block $break|1 + i32.const 0 + local.set $4 + loop $loop|1 + local.get $4 + local.get $2 + i32.le_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $4 + local.get $0 + local.get $4 + call $~lib/typedarray/Int8Array#__get + local.get $0 + local.get $4 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ge_s + i32.const 3 + i32.mul + i32.add + call $~lib/typedarray/Int8Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $loop|1 + end + unreachable + end + block $break|2 + local.get $2 + local.set $4 + loop $loop|2 + local.get $4 + i32.const -1 + i32.ne + i32.eqz + br_if $break|2 + local.get $0 + local.get $4 + local.get $0 + local.get $4 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.shl + call $~lib/typedarray/Int8Array#__set + local.get $4 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.get $0 + local.get $4 + i32.const 1 + i32.add + call $~lib/typedarray/Int8Array#__get + local.get $0 + local.get $4 + call $~lib/typedarray/Int8Array#__get + i32.const 15 + i32.gt_s + i32.or + call $~lib/typedarray/Int8Array#__set + end + local.get $0 + local.get $4 + local.get $0 + local.get $4 + call $~lib/typedarray/Int8Array#__get + i32.const 15 + i32.and + call $~lib/typedarray/Int8Array#__set + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|2 + end unreachable end - local.get $2 - i32.const 1 + local.get $0 + i32.const 0 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + local.get $1 + i64.const 1 + local.get $3 + i64.extend_i32_s + i64.shl + i64.and + i64.const 0 + i64.ne i32.add - local.set $2 + call $~lib/typedarray/Int8Array#__set local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release + i32.const 1 + i32.sub + local.set $3 br $loop|0 end unreachable end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 599 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 600 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) + (func $~lib/bignum/utils/u128toa10 (; 235 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - i64.const 0 + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 40 local.set $1 - i64.const 1 + i32.const 0 + local.get $1 + call $~lib/typedarray/Int8Array#constructor local.set $2 + local.get $2 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 + i64.load offset=8 + call $~lib/bignum/utils/processU64 + local.get $2 + local.get $0 + i64.load + call $~lib/bignum/utils/processU64 + i32.const 816 + call $~lib/rt/stub/__retain local.set $3 + i32.const 0 + local.set $4 block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $loop|0 + local.get $5 + i32.const -1 + i32.ne + i32.eqz + br_if $break|0 + local.get $4 + i32.eqz if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s + local.get $2 + local.get $5 + call $~lib/typedarray/Int8Array#__get + i32.const 0 + i32.gt_s else i32.const 0 end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 + if + i32.const 1 + local.set $4 + end local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 + if + local.get $3 + global.get $~lib/bignum/utils/HEX_CHARS + local.get $2 + local.get $5 + call $~lib/typedarray/Int8Array#__get + call $~lib/string/String#charAt + local.tee $6 + call $~lib/string/String#concat + local.set $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + local.set $3 + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 - ) - (func $assembly/model/__near_JSONHandler_AnotherContainerClass#setNull (; 601 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 2136 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - return + i32.sub + local.set $5 + br $loop|0 + end + unreachable end + local.get $3 + local.set $5 local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull - local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 602 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + (func $~lib/bignum/integer/u128/u128#toString (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i32) + local.get $1 + i32.eqz if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/model/__near_JSONHandler_AnotherContainerClass#setNull - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 603 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString + i32.const 10 + local.set $1 end - local.tee $1 + local.get $1 + i32.const 10 + i32.eq if (result i32) - local.get $1 + i32.const 1 else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + i32.const 16 + i32.eq end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + i32.eqz + if + i32.const 5192 + i32.const 5288 + i32.const 733 + i32.const 4 + call $~lib/builtins/abort + unreachable end - local.set $1 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $1 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 604 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + local.set $2 local.get $2 - call $~lib/rt/stub/__retain - drop + i64.load local.get $2 + i64.load offset=8 + i64.or + i64.eqz + if + i32.const 240 + call $~lib/rt/stub/__retain + return + end + i32.const 816 + call $~lib/rt/stub/__retain + local.set $3 + local.get $0 + local.set $2 i32.const 0 - i32.ne + local.get $2 + i64.load + local.get $2 + i64.load offset=8 + call $~lib/bignum/integer/u128/u128#constructor + local.set $4 + local.get $1 + i32.const 16 + i32.eq if - local.get $0 - local.tee $3 + i32.const 124 + local.get $4 + call $~lib/rt/stub/__retain + local.set $2 local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if + i64.load + local.set $6 + local.get $2 + i64.load offset=8 + local.set $5 + local.get $5 + local.get $5 + i64.const 1 + i64.sub + i64.xor + i64.const 63 + i64.shr_s + local.set $7 + local.get $5 + local.get $7 + i64.const -1 + i64.xor + i64.and + local.get $6 + local.get $7 + i64.and + i64.or + i64.clz + i32.wrap_i64 + local.get $7 + i32.wrap_i64 + i32.const 64 + i32.and + i32.add + local.set $8 + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.sub + local.set $2 + block $break|0 + local.get $2 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 local.get $4 call $~lib/rt/stub/__retain - drop + local.set $9 + local.get $2 + local.set $8 + local.get $8 + i32.const 127 + i32.and + local.set $8 + local.get $8 + i64.extend_i32_s + local.set $7 + local.get $7 + i64.const 127 + i64.add + local.get $7 + i64.or + i64.const 64 + i64.and + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $6 + local.get $7 + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $5 + local.get $7 + i64.const 63 + i64.and + local.set $7 + local.get $9 + i64.load offset=8 + local.set $10 + local.get $10 + local.get $7 + i64.shr_u + local.set $11 + local.get $11 + local.get $5 + i64.const -1 + i64.xor + i64.and + local.set $12 + local.get $12 + local.get $9 + i64.load + local.get $7 + i64.shr_u + local.get $10 + i64.const 64 + local.get $7 + i64.sub + i64.shl + local.get $6 + i64.and + i64.or + local.get $5 + i64.and + i64.or + local.set $12 + i32.const 0 + local.get $12 + local.get $11 + local.get $5 + i64.and + call $~lib/bignum/integer/u128/u128#constructor + local.set $13 + local.get $9 + call $~lib/rt/stub/__release + local.get $13 + local.tee $9 + local.tee $13 + local.get $4 + local.tee $8 + i32.ne + if + local.get $13 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $13 + local.set $4 local.get $3 - call $~lib/rt/stub/__release + drop + unreachable end + local.get $3 + local.set $9 local.get $4 - i32.store offset=4 + call $~lib/rt/stub/__release + local.get $9 + return else - local.get $0 - local.tee $4 - i32.const 0 local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable + i32.const 10 + i32.eq + if + local.get $0 + call $~lib/bignum/utils/u128toa10 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + return + end end - local.get $1 + i32.const 5360 + call $~lib/rt/stub/__retain + local.set $2 + local.get $3 call $~lib/rt/stub/__release - local.get $2 + local.get $4 call $~lib/rt/stub/__release + local.get $2 ) - (func $assembly/model/AnotherContainerClass#decode (; 605 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> (; 237 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop local.get $2 call $~lib/rt/stub/__retain drop + local.get $1 + call $~lib/rt/stub/__retain + local.set $4 i32.const 0 - local.get $0 - call $assembly/model/__near_JSONHandler_AnotherContainerClass#constructor + call $~lib/rt/stub/__retain local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop + i64.load offset=8 + local.get $3 + i64.load offset=8 + i64.eq + if (result i32) local.get $4 - call $~lib/rt/stub/__release + i64.load + local.get $3 + i64.load + i64.eq + else + i32.const 0 end - local.get $5 - i32.store - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor local.set $5 local.get $3 - local.tee $4 - local.get $5 - local.tee $6 + call $~lib/rt/stub/__release local.get $4 - i32.load offset=4 - local.tee $4 - i32.ne + call $~lib/rt/stub/__release + local.get $5 if - local.get $6 - call $~lib/rt/stub/__retain - drop + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + local.get $1 + i32.const 0 + call $~lib/bignum/integer/u128/u128#toString + local.tee $4 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString local.get $4 call $~lib/rt/stub/__release end - local.get $6 - i32.store offset=4 - local.get $5 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize local.get $0 - call $~lib/rt/stub/__retain - local.set $6 - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $4 local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $4 ) - (func $~lib/nearEntry/decode (; 606 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__get (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get + ) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 - i32.const 0 - call $assembly/model/AnotherContainerClass#constructor - local.tee $3 + local.get $2 call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - local.get $0 + drop local.get $1 - call $assembly/model/AnotherContainerClass#decode - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end local.get $0 - call $~lib/rt/stub/__release + local.set $4 local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 - return + local.get $4 + ) + (func $~lib/array/Array#get:length (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 243 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#__get (; 244 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get ) - (func $assembly/test/__near_ArgsParser_unwrapFoobar#pushObject (; 607 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - i32.load8_u offset=8 + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 i32.const 0 - i32.ne - i32.eqz + i32.eq if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 952 - i32.const 217 - i32.const 6 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release local.get $2 - return + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 i32.const 0 - i32.const 952 - i32.const 221 - i32.const 6 - call $~lib/builtins/abort + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end unreachable end - end - local.get $1 - i32.const 4744 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - local.get $0 - i32.load local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode - local.set $3 - local.get $2 - i32.load offset=12 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=12 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject local.set $3 local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 608 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 246 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 1160 + call $~lib/assemblyscript-json/encoder/JSONEncoder#write + local.get $0 + i32.load + call $~lib/array/Array#pop + drop + ) + (func $assembly/model/FooBar#encode (; 247 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - local.set $2 - local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 local.get $1 - i32.store - local.get $4 - local.get $2 - i32.store offset=4 - local.get $3 call $~lib/rt/stub/__retain - local.set $4 + drop local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 i32.const 0 - i32.ge_s + i32.ne if (result i32) - local.get $2 - i32.const 16 - i32.lt_s + local.get $1 + call $~lib/rt/stub/__retain else i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor end - i32.eqz - if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 - call $~lib/builtins/abort + local.tee $3 + if (result i32) + local.get $3 + else unreachable end - local.get $2 + call $~lib/rt/stub/__retain local.set $3 - local.get $4 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 3040 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 3144 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i64.load offset=8 + i32.const 3192 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i64.load offset=16 + i32.const 3392 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i64.load offset=24 + i32.const 3424 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load8_u offset=32 + i32.const 3480 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=36 + i32.const 3576 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=40 + i32.const 3664 + call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=44 + i32.const 3744 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=48 + i32.const 3944 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=52 + i32.const 4016 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=56 + i32.const 4088 + call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=60 + i32.const 4192 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=64 + i32.const 4320 + call $~lib/nearEntry/encode<~lib/array/Array> call $~lib/rt/stub/__release local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 609 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/nearEntry/encode (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__retain + drop local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop local.get $1 - i32.const 1632 i32.const 0 - call $~lib/string/String#charCodeAt i32.eq if - i32.const 1656 - call $~lib/rt/stub/__retain - return + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + local.get $2 + call $assembly/model/FooBar#encode + call $~lib/rt/stub/__release end + local.get $0 + local.set $3 local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1704 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/model/ContainerClass#encode (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop local.get $1 - i32.const 1776 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1800 + i32.ne + if (result i32) + local.get $1 call $~lib/rt/stub/__retain - return + else + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul + local.tee $3 + if (result i32) local.get $3 - i32.const 256 - i32.mul - i32.add - local.get $4 - i32.const 16 - i32.mul - i32.add - local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint - return - end - i32.const 0 - i32.eqz - if - i32.const 1904 - i32.const 1 - global.set $~lib/argc - local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 - call $~lib/string/String.__concat - local.tee $5 - i32.const 840 - i32.const 255 - i32.const 4 - call $~lib/builtins/abort + else unreachable end - i32.const 656 call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 5160 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 local.set $4 - local.get $6 + local.get $1 call $~lib/rt/stub/__release - local.get $5 + local.get $2 call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 610 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/nearEntry/encode (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1152 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 i32.const 0 - call $~lib/string/String#charCodeAt i32.eq - i32.eqz if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $1 + local.get $0 + local.get $2 + call $assembly/model/ContainerClass#encode + call $~lib/rt/stub/__release end local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 local.get $0 - i32.load offset=4 - i32.load offset=4 local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 i32.const 1 i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 + local.set $3 local.get $4 call $~lib/rt/stub/__release + br $loop|0 end + unreachable end - br $loop|0 + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 611 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 + local.set $4 local.get $1 - i32.load call $~lib/rt/stub/__release local.get $2 - i32.store - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + i32.const 816 + call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 612 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/string/String.UTF8.byteLength (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load call $~lib/rt/stub/__retain - local.set $1 + drop local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 + local.set $2 local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store local.get $0 - i32.load + i32.const 16 + i32.sub + i32.load offset=12 + i32.add + local.set $3 local.get $1 - call $assembly/test/__near_ArgsParser_unwrapFoobar#pushObject - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + if (result i32) i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 + else + i32.const 0 + end + local.set $4 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load16_u + local.set $5 + local.get $5 + i32.const 128 + i32.lt_u + if + local.get $1 + if (result i32) + local.get $5 + i32.eqz + else i32.const 0 - call $~lib/string/String#charCodeAt + end + if + br $break|0 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $5 + i32.const 2048 + i32.lt_u + if + local.get $4 + i32.const 2 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $5 + i32.const 64512 + i32.and + i32.const 55296 i32.eq - i32.eqz + if (result i32) + local.get $2 + i32.const 2 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $4 + i32.const 4 + i32.add + local.set $4 + br $continue|0 + end end - else - i32.const 0 - local.set $3 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $4 + i32.const 3 + i32.add + local.set $4 end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 - call $~lib/builtins/abort - unreachable + br $continue|0 end + unreachable end + local.get $4 + local.set $5 local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 - local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $5 ) - (func $assembly/test/__near_ArgsParser_unwrapFoobar#pushArray (; 613 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.encode (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 call $~lib/rt/stub/__retain drop local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 614 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain - local.set $1 + i32.const 16 + i32.sub + i32.load offset=12 + i32.add + local.set $3 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + local.get $1 + call $~lib/string/String.UTF8.byteLength + i32.const 0 + call $~lib/rt/stub/__alloc + local.set $4 + local.get $4 + local.set $5 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load16_u + local.set $6 + local.get $6 + i32.const 128 + i32.lt_u + if + local.get $1 + if (result i32) + local.get $6 + i32.eqz + else + i32.const 0 + end + if + br $break|0 + end + local.get $5 + local.get $6 + i32.store8 + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $6 + i32.const 2048 + i32.lt_u + if + local.get $5 + local.get $6 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + i32.store8 + local.get $5 + local.get $6 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else + local.get $6 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if + local.get $2 + i32.load16_u offset=2 + local.set $7 + local.get $7 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + i32.const 65536 + local.get $6 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + local.get $7 + i32.const 1023 + i32.and + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.store8 + local.get $5 + local.get $6 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + local.get $6 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $5 + local.get $6 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=3 + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $5 + i32.const 4 + i32.add + local.set $5 + br $continue|0 + end + end + local.get $5 + local.get $6 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + i32.store8 + local.get $5 + local.get $6 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + local.get $6 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $5 + i32.const 3 + i32.add + local.set $5 + end + end + br $continue|0 + end + unreachable end - local.get $3 - i32.store - local.get $0 - i32.load local.get $1 - call $assembly/test/__near_ArgsParser_unwrapFoobar#pushArray if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end + local.get $2 + local.get $3 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 567 + i32.const 8 + call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2344 + local.get $4 + local.get $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + call $~lib/rt/stub/__realloc + local.set $4 + local.get $5 i32.const 0 - call $~lib/string/String#charCodeAt + i32.store8 + else + local.get $2 + local.get $3 i32.eq i32.eqz if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 + i32.const 0 + i32.const 1424 + i32.const 571 + i32.const 8 call $~lib/builtins/abort unreachable end end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 615 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 616 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 + local.get $4 call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 617 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 618 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 + local.set $6 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 - local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 - local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return - end - i32.const 0 + call $~lib/rt/stub/__release + local.get $6 ) - (func $assembly/test/__near_ArgsParser_unwrapFoobar#setNull (; 619 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - local.get $1 + (local $4 i32) + local.get $0 call $~lib/rt/stub/__retain drop + i32.const 0 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 local.get $1 - i32.const 4744 - call $~lib/string/String.__eq - if - local.get $0 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/stub/__release - return - end + call $~lib/assemblyscript-json/util/index/Buffer.getPtr + local.get $3 local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + call $~lib/memory/memory.copy local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#toString + local.tee $1 + call $~lib/assemblyscript-json/util/index/Buffer.fromString + local.set $2 local.get $1 call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 620 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/__wrapper_convertFoobars (; 257 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i64.const 4294967295 + i64.eq if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/test/__near_ArgsParser_unwrapFoobar#setNull - i32.const 1 - return + call $~lib/nearEntry/panic end i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 621 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull - end + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor local.set $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 2304 + call $~lib/nearEntry/decode<~lib/array/Array> + local.tee $4 + call $assembly/test/convertFoobars + local.set $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $6 + local.get $6 + local.get $5 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $7 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $8 + i64.extend_i32_u + call $~lib/nearEntry/value_return local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 622 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/near-runtime-ts/util/util.toUTF8 (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - local.get $1 + local.get $0 call $~lib/rt/stub/__retain drop + local.get $0 + local.get $1 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/util/util.stringToBytes (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 call $~lib/rt/stub/__retain drop - local.get $2 + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 1 + i32.sub + local.set $1 i32.const 0 - i32.ne - if - local.get $0 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store offset=4 - else - local.get $0 - local.tee $4 - i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - end + local.get $1 + call $~lib/typedarray/Uint8Array#constructor + local.set $2 + local.get $2 + i32.load offset=4 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue i32.const 0 - i32.ne - i32.eqz - if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + call $~lib/near-runtime-ts/util/util.toUTF8 + local.get $1 + call $~lib/memory/memory.copy + local.get $2 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/logging/logging.log (; 260 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $1 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $1 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/main/unwrapFoobar (; 623 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/getStringArrayLength (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $0 - i32.load - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $1 - i32.const 0 - call $~lib/array/Array#__get - local.set $2 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $1 + i32.const 5400 local.get $1 + call $~lib/number/I32#toString + local.tee $2 + call $~lib/string/String.__concat + local.tee $3 + call $~lib/near-runtime-ts/logging/logging.log + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $2 + local.get $4 ) - (func $assembly/test/unwrapFoobar (; 624 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/getStringArrayLength (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $0 - call $assembly/main/unwrapFoobar + call $assembly/main/getStringArrayLength local.set $1 local.get $0 call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/test/__wrapper_unwrapFoobar (; 625 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_getStringArrayLength (; 263 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -32994,6 +14964,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i64.const 0 call $~lib/nearEntry/input i64.const 0 @@ -33016,63 +14987,32 @@ local.tee $2 i64.extend_i32_u call $~lib/nearEntry/read_register - i32.const 0 - call $assembly/test/__near_ArgsParser_unwrapFoobar#constructor + local.get $1 + call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 + i32.const 3744 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $3 - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $4 - local.get $5 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $4 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $3 - i32.load offset=12 - call $assembly/test/unwrapFoobar - local.set $4 + call $assembly/test/getStringArrayLength + local.set $5 i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $5 + local.set $6 + local.get $6 local.get $5 - local.get $4 i32.const 0 - call $~lib/nearEntry/encode + call $~lib/nearEntry/encode call $~lib/rt/stub/__release - local.get $5 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $6 local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i64.extend_i32_s - local.get $6 + local.get $7 call $~lib/typedarray/Uint8Array#get:buffer - local.tee $7 + local.tee $8 i64.extend_i32_u call $~lib/nearEntry/value_return local.get $1 @@ -33083,213 +15023,454 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release local.get $6 call $~lib/rt/stub/__release local.get $7 call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release ) - (func $assembly/main/stringOrNull (; 626 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/model/ContainerClass#constructor (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 4 + i32.const 23 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 i32.const 0 - call $~lib/rt/stub/__retain + i32.store + local.get $0 ) - (func $assembly/test/stringOrNull (; 627 ;) (type $FUNCSIG$i) (result i32) - call $assembly/main/stringOrNull + (func $assembly/model/ContainerClass#decode (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.tee $3 + local.get $2 + i32.const 5160 + call $~lib/nearEntry/decode + local.set $4 + local.get $3 + i32.load + call $~lib/rt/stub/__release + local.get $4 + i32.store + local.get $0 + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 ) - (func $assembly/test/__wrapper_stringOrNull (; 628 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) + (func $~lib/nearEntry/decode (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - call $assembly/test/stringOrNull - local.set $0 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $1 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 - call $~lib/string/String.__eq + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end + if + local.get $0 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 5504 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $2 + local.tee $5 + i32.eqz + if (result i32) i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2720 local.get $1 - local.get $0 - local.tee $2 - if (result i32) - local.get $2 - else - unreachable - end - i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/string/String.__concat + local.tee $5 + i32.const 2944 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 543 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $assembly/model/ContainerClass#constructor + local.tee $4 + local.tee $7 + local.get $8 + local.tee $6 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $6 call $~lib/rt/stub/__release end - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $2 + local.get $7 + local.set $8 + local.get $8 local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s + call $assembly/model/ContainerClass#decode + local.set $7 local.get $2 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $3 - i64.extend_i32_u - call $~lib/nearEntry/value_return + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 + local.get $8 call $~lib/rt/stub/__release + local.get $7 ) - (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 629 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $assembly/model/AnotherContainerClass#constructor (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 268435452 - i32.gt_u + i32.eqz if - i32.const 552 - i32.const 1368 - i32.const 45 - i32.const 61 - call $~lib/builtins/abort - unreachable + i32.const 4 + i32.const 33 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end local.get $0 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.load offset=4 i32.const 0 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.fill - local.get $1 + i32.store + local.get $0 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 630 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $assembly/main/rewrapFoobar (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - local.get $2 + (local $5 i32) + local.get $0 call $~lib/rt/stub/__retain drop - local.get $0 - i32.load offset=4 + i32.const 0 + call $assembly/model/AnotherContainerClass#constructor + local.set $1 local.get $1 + local.tee $3 + i32.const 1 i32.const 2 - i32.shl - i32.add + i32.const 34 + i32.const 0 + call $~lib/rt/__allocArray + local.set $2 + local.get $2 + i32.load offset=4 local.set $3 local.get $3 - i32.load + i32.const 1 + i32.const 2 + i32.const 30 + i32.const 0 + call $~lib/rt/__allocArray local.set $4 - local.get $2 local.get $4 + i32.load offset=4 + local.set $5 + local.get $5 + local.get $0 + i32.load + call $~lib/rt/stub/__retain + i32.store + local.get $4 + call $~lib/rt/stub/__retain + i32.store + local.get $2 + local.tee $4 + local.get $3 + i32.load + local.tee $3 i32.ne if - local.get $3 - local.get $2 - call $~lib/rt/stub/__retain - i32.store local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 call $~lib/rt/stub/__release end - local.get $2 + local.get $4 + i32.store + local.get $1 + local.set $4 + local.get $0 call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 631 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 + (func $assembly/test/rewrapFoobar (; 269 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 call $~lib/rt/stub/__retain drop + local.get $0 + call $assembly/main/rewrapFoobar + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $~lib/array/Array<~lib/array/Array>#get:length (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 - local.set $3 + ) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 - local.get $3 - i32.gt_u + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/array/Array>#__get (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $2 - call $~lib/rt/stub/__release - i32.const 1256 - i32.const 1368 - i32.const 121 - i32.const 38 + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set - local.get $1 - local.get $3 - i32.ge_s + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/rt/stub/__release + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $assembly/model/FooBar#toJSON (; 632 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#get:length (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 0 - i32.const 656 - call $assembly/model/FooBar#encode - local.tee $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#toString - local.set $2 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain ) - (func $assembly/model/Nullables#constructor (; 633 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#__get (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 - i32.eqz + i32.load offset=12 + i32.ge_u if - i32.const 12 - i32.const 67 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 + i32.const 656 + i32.const 768 + i32.const 106 + i32.const 45 + call $~lib/builtins/abort + unreachable end + local.get $1 local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get ) - (func $assembly/model/Nullables#encode (; 634 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop @@ -33298,47 +15479,48 @@ drop local.get $1 i32.const 0 - i32.ne - if (result i32) - local.get $1 - call $~lib/rt/stub/__retain - else - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - end - local.tee $3 - if (result i32) - local.get $3 + i32.eq + if + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - unreachable + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject - drop - local.get $3 - local.get $0 - i32.load - i32.const 5120 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release - local.get $3 - local.get $0 - i32.load offset=4 - i32.const 5144 - call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> - call $~lib/rt/stub/__release - local.get $3 local.get $0 - i32.load offset=8 - i32.const 5168 - call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> - call $~lib/rt/stub/__release - local.get $3 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject - local.get $3 local.set $4 local.get $1 call $~lib/rt/stub/__release @@ -33346,1556 +15528,1443 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/model/Nullables#serialize (; 635 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> (; 277 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) local.get $0 - i32.const 0 - i32.const 656 - call $assembly/model/Nullables#encode - local.tee $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $2 + call $~lib/rt/stub/__retain + drop local.get $1 - call $~lib/rt/stub/__release + call $~lib/rt/stub/__retain + drop local.get $2 - ) - (func $assembly/model/__near_JSONHandler_Nullables#constructor (; 636 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - if (result i32) + local.get $1 + i32.const 0 + i32.eq + if local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - i32.const 16 - i32.const 68 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain + local.get $0 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/array/Array>#__get + local.tee $4 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store8 offset=8 local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.tee $2 + local.set $4 local.get $1 - local.tee $3 + call $~lib/rt/stub/__release local.get $2 - i32.load offset=12 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=12 - local.get $1 call $~lib/rt/stub/__release - local.get $0 + local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#constructor (; 637 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $assembly/model/AnotherContainerClass#encode (; 278 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 69 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar (; 638 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.ge_s - if - i32.const -1 - return - end - local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace (; 639 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + call $~lib/rt/stub/__retain + drop local.get $1 - i32.const 9 - i32.eq + i32.const 0 + i32.ne if (result i32) - i32.const 1 - else local.get $1 - i32.const 10 - i32.eq - end - if (result i32) - i32.const 1 + call $~lib/rt/stub/__retain else - local.get $1 - i32.const 13 - i32.eq + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor end + local.tee $3 if (result i32) - i32.const 1 + local.get $3 else - local.get $1 - i32.const 32 - i32.eq - end - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readChar (; 640 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=8 - call $~lib/typedarray/Uint8Array#get:length - i32.lt_s - i32.eqz - if - i32.const 784 - i32.const 840 - i32.const 112 - i32.const 8 - call $~lib/builtins/abort unreachable end + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 local.get $0 - i32.load offset=4 - i32.load offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 + i32.load + i32.const 2304 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 local.get $1 - call $~lib/typedarray/Uint8Array#__get - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace (; 641 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - call $~lib/assemblyscript-json/decoder/JSONDecoder#isWhitespace - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - br $continue|0 - end - unreachable - end + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 ) - (func $assembly/model/__near_JSONHandler_Nullables#pushObject (; 642 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/nearEntry/encode (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - i32.load8_u offset=8 + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 i32.const 0 - i32.ne - i32.eqz + i32.eq if - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 2192 - i32.const 185 - i32.const 6 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.const 1 - i32.store8 offset=8 - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release local.get $2 - return + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else local.get $1 - i32.const 0 - call $~lib/string/String.__ne - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.const 0 - i32.ne - end - i32.eqz - if - i32.const 0 - i32.const 2192 - i32.const 189 - i32.const 6 - call $~lib/builtins/abort - unreachable - end + local.get $0 + local.get $2 + call $assembly/model/AnotherContainerClass#encode + call $~lib/rt/stub/__release end + local.get $0 + local.set $3 local.get $1 - i32.const 5144 - call $~lib/string/String.__eq + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/test/__wrapper_rewrapFoobar (; 280 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 5464 + call $~lib/nearEntry/decode + local.tee $4 + call $assembly/test/rewrapFoobar + local.set $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $6 + local.get $6 + local.get $5 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $7 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $8 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array<~lib/array/Array>#constructor (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) local.get $0 - i32.load offset=12 - local.tee $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load offset=4 - call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> - local.set $3 - local.get $2 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=4 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return + else + i32.const 16 + i32.const 34 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable end local.get $0 local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushObject - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 + i32.store offset=12 + local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit (; 643 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array<~lib/array/Array>#push (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load offset=12 local.set $2 local.get $2 - i32.const 9 - i32.gt_s - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A - i32.sub - i32.const 10 - i32.add - local.set $2 - local.get $2 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 15 - i32.gt_s - end - if - local.get $1 - global.get $~lib/assemblyscript-json/decoder/CHAR_A_LOWER - i32.sub - i32.const 10 - i32.add - local.set $2 - end - end - i32.const 2 - i32.const 2 - i32.const 16 - i32.const 0 - call $~lib/rt/__allocArray + i32.const 1 + i32.add local.set $3 + local.get $0 local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 i32.load offset=4 - local.set $4 - local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add local.get $1 + call $~lib/rt/stub/__retain i32.store - local.get $4 - local.get $2 - i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=12 local.get $3 - call $~lib/rt/stub/__retain local.set $4 - local.get $2 - i32.const 0 - i32.ge_s + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/decodeArray<~lib/array/Array> (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $2 + i32.eqz if (result i32) - local.get $2 - i32.const 16 - i32.lt_s - else i32.const 0 + else + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof end i32.eqz if - i32.const 1848 - i32.const 840 - i32.const 269 - i32.const 4 + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 2840 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 478 + i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 - local.set $3 + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#constructor + local.set $4 + local.get $0 + i32.load + call $~lib/rt/stub/__retain + local.set $5 + block $break|0 + i32.const 0 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode<~lib/array/Array> + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array<~lib/array/Array>#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end local.get $4 + local.set $8 + local.get $2 call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar (; 644 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $1 - local.get $1 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1152 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1584 - call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1608 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1608 - call $~lib/rt/stub/__retain - return - end + call $~lib/rt/stub/__retain + drop local.get $1 - i32.const 1632 + call $~lib/rt/stub/__retain + drop i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1656 - call $~lib/rt/stub/__retain - return + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof end - local.get $1 - i32.const 1680 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq if - i32.const 1704 + local.get $0 call $~lib/rt/stub/__retain - return + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else + local.get $0 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 end - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1752 - call $~lib/rt/stub/__retain - return + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof end - local.get $1 - i32.const 1776 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq if - i32.const 1800 + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 5616 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 call $~lib/rt/stub/__retain - return - end - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $3 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $4 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readHexDigit - local.set $5 - local.get $2 - i32.const 4096 - i32.mul - local.get $3 - i32.const 256 - i32.mul - i32.add + local.set $7 + local.get $6 + call $~lib/rt/stub/__release local.get $4 - i32.const 16 - i32.mul - i32.add + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $5 - i32.add - local.set $6 - local.get $6 - call $~lib/string/String.fromCodePoint + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 + local.set $8 + i32.const 0 i32.eqz if - i32.const 1904 - i32.const 1 - global.set $~lib/argc + i32.const 2720 local.get $1 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $6 call $~lib/string/String.__concat local.tee $5 - i32.const 840 - i32.const 255 + i32.const 2768 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 539 i32.const 4 call $~lib/builtins/abort unreachable end - i32.const 656 - call $~lib/rt/stub/__retain + local.get $0 + local.get $1 + call $~lib/nearEntry/decodeArray<~lib/array/Array> local.set $4 - local.get $6 - call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release local.get $4 + return ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readString (; 645 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $assembly/model/AnotherContainerClass#decode (; 285 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 840 - i32.const 197 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain local.set $2 - loop $loop|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $3 - local.get $3 - i32.const 32 - i32.ge_s - i32.eqz - if - i32.const 1416 - i32.const 840 - i32.const 203 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.set $4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - if - local.get $4 - local.set $5 - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $2 - i32.const 656 - call $~lib/array/Array<~lib/string/String>#join - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - return - else - local.get $3 - i32.const 1584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.add - i32.gt_s - if - local.get $2 - i32.const 1 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - call $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readEscapedChar - local.tee $4 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $0 - i32.load offset=4 - i32.load offset=4 - local.set $1 - local.get $4 - call $~lib/rt/stub/__release - end - end - br $loop|0 - end - unreachable - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey (; 646 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.set $2 - local.get $1 + local.tee $3 + local.get $2 + i32.const 2304 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> + local.set $4 + local.get $3 i32.load call $~lib/rt/stub/__release - local.get $2 + local.get $4 i32.store local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1984 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2008 - i32.const 840 - i32.const 159 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/stub/__retain + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject (; 647 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decode (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 928 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=4 - i32.load call $~lib/rt/stub/__retain - local.set $1 + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if + i32.eqz + if (result i32) + i32.const 0 + else local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + i32.const 8 + call $~lib/rt/__instanceof end - local.get $3 - i32.store - local.get $0 - i32.load - local.get $1 - call $assembly/model/__near_JSONHandler_Nullables#pushObject if local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 + call $~lib/rt/stub/__retain local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1064 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 142 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseKey - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort unreachable end + local.get $4 + local.tee $5 + local.get $2 + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + else local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1064 + local.tee $6 + local.get $2 + local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq i32.eqz if - i32.const 2048 - i32.const 840 - i32.const 149 - i32.const 6 + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 5552 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 call $~lib/builtins/abort unreachable end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $2 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2944 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 543 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $assembly/model/AnotherContainerClass#constructor + local.tee $4 + local.tee $7 + local.get $8 + local.tee $6 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release end + local.get $7 + local.set $8 + local.get $8 + local.get $2 + call $assembly/model/AnotherContainerClass#decode + local.set $7 + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popObject - i32.const 1 - local.set $3 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 ) - (func $assembly/model/__near_JSONHandler_Nullables#pushArray (; 648 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/main/unwrapFoobar (; 287 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.tee $1 + i32.const 0 + call $~lib/array/Array#__get + local.set $2 local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/test/unwrapFoobar (; 288 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 call $~lib/rt/stub/__retain drop local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#pushArray - local.set $2 - local.get $1 + call $assembly/main/unwrapFoobar + local.set $1 + local.get $0 call $~lib/rt/stub/__release - local.get $2 + local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray (; 649 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/__wrapper_unwrapFoobar (; 289 ;) (type $FUNCSIG$v) + (local $0 i64) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2112 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i64.const 4294967295 + i64.eq if - i32.const 0 - return + call $~lib/nearEntry/panic end + i32.const 0 local.get $0 - i32.load offset=4 - i32.load - call $~lib/rt/stub/__retain + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor local.set $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 656 - local.tee $3 - local.get $2 - i32.load + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $0 - i32.load + i64.extend_i32_u + call $~lib/nearEntry/read_register local.get $1 - call $assembly/model/__near_JSONHandler_Nullables#pushArray - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace - i32.const 1 - local.set $3 - block $break|0 - loop $continue|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne - i32.eqz - br_if $break|0 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 1088 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 840 - i32.const 176 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - else - i32.const 0 - local.set $3 - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue - drop - br $continue|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.const 2344 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - i32.eqz - if - i32.const 2368 - i32.const 840 - i32.const 182 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - call $~lib/assemblyscript-json/decoder/JSONHandler#popArray - i32.const 1 + call $~lib/nearEntry/JSON.parse local.set $3 + local.get $3 + i32.const 5464 + call $~lib/nearEntry/decode + local.tee $4 + call $assembly/test/unwrapFoobar + local.set $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $6 + local.get $6 + local.get $5 + i32.const 0 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $7 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $8 + i64.extend_i32_u + call $~lib/nearEntry/value_return local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release ) - (func $assembly/model/__near_JSONHandler_Nullables#setString (; 650 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 + (func $assembly/main/stringOrNull (; 290 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 5120 + ) + (func $assembly/test/stringOrNull (; 291 ;) (type $FUNCSIG$i) (result i32) + call $assembly/main/stringOrNull + ) + (func $assembly/test/__wrapper_stringOrNull (; 292 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + call $assembly/test/stringOrNull + local.set $0 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $1 + local.get $0 + i32.const 0 call $~lib/string/String.__eq if - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $2 - local.tee $4 - local.get $3 - i32.load - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - i32.store local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 5144 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $2 - call $~lib/rt/stub/__retain - local.set $3 i32.const 0 - local.set $4 - local.get $3 - local.get $4 - call $~lib/bignum/utils/atou128 - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - local.set $5 - local.get $4 - i32.load offset=4 - call $~lib/rt/stub/__release - local.get $5 - i32.store offset=4 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 5168 - call $~lib/string/String.__eq - if local.get $0 - i32.load offset=12 - local.tee $5 - local.get $2 - call $~lib/near-runtime-ts/base64/base64.decode - local.set $3 - local.get $5 - i32.load offset=8 - call $~lib/rt/stub/__release - local.get $3 - i32.store offset=8 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.tee $2 + if (result i32) + local.get $2 + else + unreachable + end + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release - return end + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i64.extend_i32_u + call $~lib/nearEntry/value_return local.get $0 - local.get $1 - local.get $2 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setString + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseString (; 651 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 293 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 1152 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.ne + i32.const 268435452 + i32.gt_u if - i32.const 0 - return - end - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readString - local.tee $1 - call $assembly/model/__near_JSONHandler_Nullables#setString - i32.const 1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert (; 652 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 - local.get $2 - call $~lib/string/String#charCodeAt - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - i32.eq - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2472 - call $~lib/string/String.__concat - local.tee $4 - i32.const 840 - i32.const 321 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end + i32.const 552 + i32.const 768 + i32.const 45 + i32.const 61 + call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean (; 653 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 184 + i32.const 2 + i32.const 27 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/FALSE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 0 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 160 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/TRUE_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - i32.const 1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setBoolean - i32.const 1 - return - end + i32.store offset=12 + local.get $1 + i32.load offset=4 i32.const 0 + local.get $1 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber (; 654 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 294 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - i64.const 0 - local.set $1 - i64.const 1 - local.set $2 + local.get $2 + call $~lib/rt/stub/__retain + drop local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 2584 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq - if - i64.const -1 - local.set $2 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - drop - end - i32.const 0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add local.set $3 - block $break|0 - loop $continue|0 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.le_s - if (result i32) - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - global.get $~lib/assemblyscript-json/decoder/CHAR_9 - i32.le_s - else - i32.const 0 - end - i32.eqz - br_if $break|0 - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#readChar - local.set $4 - local.get $1 - i64.const 10 - i64.mul - local.set $1 - local.get $1 - local.get $4 - global.get $~lib/assemblyscript-json/decoder/CHAR_0 - i32.sub - i64.extend_i32_s - i64.add - local.set $1 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $continue|0 - end - unreachable - end local.get $3 - i32.const 0 - i32.gt_s + i32.load + local.set $4 + local.get $2 + local.get $4 + i32.ne if - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - local.get $1 + local.get $3 local.get $2 - i64.mul - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setInteger - i32.const 1 - return + call $~lib/rt/stub/__retain + i32.store + local.get $4 + call $~lib/rt/stub/__release end - i32.const 0 + local.get $2 + call $~lib/rt/stub/__release ) - (func $assembly/model/__near_JSONHandler_Nullables#setNull (; 655 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 295 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 + local.get $2 call $~lib/rt/stub/__retain drop + local.get $0 + i32.load offset=12 + local.set $3 local.get $1 - i32.const 5120 - call $~lib/string/String.__eq - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - return - end - local.get $1 - i32.const 5144 - call $~lib/string/String.__eq + local.get $3 + i32.gt_u if - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - local.tee $2 - local.get $3 - i32.load offset=4 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - i32.store offset=4 - local.get $1 + local.get $2 call $~lib/rt/stub/__release - return + i32.const 656 + i32.const 768 + i32.const 121 + i32.const 38 + call $~lib/builtins/abort + unreachable end + local.get $0 local.get $1 - i32.const 5168 - call $~lib/string/String.__eq + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set + local.get $1 + local.get $3 + i32.ge_s if local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 - local.tee $3 - local.get $2 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store offset=8 local.get $1 - call $~lib/rt/stub/__release - return + i32.const 1 + i32.add + i32.store offset=12 end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $assembly/model/FooBar#toJSON (; 296 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - local.get $1 - call $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#setNull + i32.const 0 + i32.const 816 + call $assembly/model/FooBar#encode + local.tee $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#toString + local.set $2 local.get $1 call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull (; 656 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#constructor (; 297 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#peekChar - i32.const 216 - i32.const 0 - call $~lib/string/String#charCodeAt - i32.eq + i32.eqz if - local.get $0 - global.get $~lib/assemblyscript-json/decoder/NULL_STR - call $~lib/assemblyscript-json/decoder/JSONDecoder#readAndAssert - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - i32.load - call $assembly/model/__near_JSONHandler_Nullables#setNull - i32.const 1 - return + i32.const 12 + i32.const 35 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 i32.const 0 - ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue (; 657 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + i32.store local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 0 + i32.store offset=4 local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseObject - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseArray - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseString - end - local.tee $1 - if (result i32) - local.get $1 - else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseBoolean - end - local.tee $1 + i32.const 0 + i32.store offset=8 + local.get $0 + ) + (func $assembly/model/Nullables#encode (; 298 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.const 0 + i32.ne if (result i32) local.get $1 + call $~lib/rt/stub/__retain else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNumber + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor end - local.tee $1 + local.tee $3 if (result i32) - local.get $1 + local.get $3 else - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseNull + unreachable end - local.set $1 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject + drop + local.get $3 + local.get $0 + i32.load + i32.const 6136 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4120 + call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> + call $~lib/rt/stub/__release + local.get $3 + local.get $0 + i32.load offset=8 + i32.const 6160 + call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> + call $~lib/rt/stub/__release + local.get $3 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $assembly/model/Nullables#serialize (; 299 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#skipWhitespace + i32.const 0 + i32.const 816 + call $assembly/model/Nullables#encode + local.tee $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize (; 658 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $assembly/model/Nullables#decode (; 300 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop + local.get $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.tee $3 + local.get $2 + i32.const 6136 + call $~lib/nearEntry/decode<~lib/string/String> + local.set $4 + local.get $3 + i32.load + call $~lib/rt/stub/__release + local.get $4 + i32.store + local.get $0 + local.tee $4 + local.get $2 + i32.const 4120 + call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> + local.set $3 + local.get $4 + i32.load offset=4 + call $~lib/rt/stub/__release + local.get $3 + i32.store offset=4 + local.get $0 + local.tee $3 + local.get $2 + i32.const 6160 + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + local.set $4 + local.get $3 + i32.load offset=8 + call $~lib/rt/stub/__release + local.get $4 + i32.store offset=8 + local.get $0 + call $~lib/rt/stub/__retain + local.set $4 local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/nearEntry/decode (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 call $~lib/rt/stub/__retain drop - local.get $2 i32.const 0 - i32.ne + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end if local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $3 + local.get $3 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2464 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2504 + i32.const 497 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.tee $5 local.get $2 - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $5 call $~lib/rt/stub/__retain drop - local.get $3 + local.get $6 call $~lib/rt/stub/__release end + local.get $5 + local.set $2 + local.get $3 + call $~lib/rt/stub/__release local.get $4 - i32.store offset=4 + call $~lib/rt/stub/__release else local.get $0 + local.tee $6 + local.get $2 local.tee $4 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $2 + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) i32.const 0 - local.get $1 - call $~lib/assemblyscript-json/decoder/DecoderState#constructor - local.set $3 + else + local.get $6 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2560 + call $~lib/string/String.__concat + local.tee $4 + i32.const 6200 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2672 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2504 + i32.const 504 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + call $~lib/rt/stub/__release local.get $4 - i32.load offset=4 call $~lib/rt/stub/__release local.get $3 - i32.store offset=4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + return end - local.get $0 - call $~lib/assemblyscript-json/decoder/JSONDecoder#parseValue i32.const 0 - i32.ne + local.set $8 + local.get $2 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end i32.eqz if - i32.const 3128 - i32.const 840 - i32.const 100 - i32.const 4 + i32.const 2720 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2944 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2504 + i32.const 543 + i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $assembly/model/Nullables#decode (; 659 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.get $0 - call $assembly/model/__near_JSONHandler_Nullables#constructor - local.set $3 - local.get $3 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store i32.const 0 - local.get $3 - call $~lib/assemblyscript-json/decoder/JSONDecoder#constructor - local.set $5 - local.get $3 + call $assembly/model/Nullables#constructor local.tee $4 - local.get $5 + local.tee $7 + local.get $8 local.tee $6 - local.get $4 - i32.load offset=4 - local.tee $4 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $6 call $~lib/rt/stub/__release end - local.get $6 - i32.store offset=4 - local.get $5 - local.get $1 + local.get $7 + local.set $8 + local.get $8 + local.get $2 + call $assembly/model/Nullables#decode + local.set $7 local.get $2 - call $~lib/assemblyscript-json/decoder/JSONDecoder#deserialize - local.get $0 - call $~lib/rt/stub/__retain - local.set $6 - local.get $3 call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/nearEntry/decode (; 660 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - i32.const 0 - call $assembly/model/Nullables#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - local.get $0 - local.get $1 - call $assembly/model/Nullables#decode - local.set $5 local.get $3 call $~lib/rt/stub/__release local.get $4 @@ -34904,12 +16973,11 @@ call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $8 call $~lib/rt/stub/__release - local.get $5 - return + local.get $7 ) - (func $assembly/test/runTest (; 661 ;) (type $FUNCSIG$v) + (func $assembly/test/runTest (; 302 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -34938,7 +17006,10 @@ (local $25 i32) (local $26 i32) (local $27 i32) - i32.const 4784 + (local $28 i32) + (local $29 i32) + (local $30 i32) + i32.const 5728 call $~lib/near-runtime-ts/logging/logging.log i32.const 0 call $assembly/model/FooBar#constructor @@ -34947,8 +17018,8 @@ local.tee $1 i32.const 2 i32.const 2 - i32.const 15 - i32.const 4832 + i32.const 26 + i32.const 5776 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $2 @@ -34977,7 +17048,7 @@ i32.store8 offset=32 local.get $0 local.tee $3 - i32.const 4024 + i32.const 3040 local.tee $1 local.get $3 i32.load offset=36 @@ -34994,7 +17065,7 @@ i32.store offset=36 local.get $0 local.tee $1 - i32.const 4856 + i32.const 5800 call $~lib/near-runtime-ts/base64/base64.decode local.set $3 local.get $1 @@ -35018,7 +17089,7 @@ local.tee $3 i32.const 2 i32.const 2 - i32.const 14 + i32.const 25 i32.const 0 call $~lib/rt/__allocArray local.set $1 @@ -35028,8 +17099,8 @@ local.get $3 i32.const 1 i32.const 2 - i32.const 13 - i32.const 4944 + i32.const 10 + i32.const 5888 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $5 @@ -35038,8 +17109,8 @@ local.get $3 i32.const 1 i32.const 2 - i32.const 13 - i32.const 5000 + i32.const 10 + i32.const 5944 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $6 @@ -35073,14 +17144,14 @@ local.get $0 i32.load offset=60 i32.const 0 - i32.const 4856 + i32.const 5800 call $~lib/near-runtime-ts/base64/base64.decode local.tee $1 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__set local.get $0 i32.load offset=60 i32.const 1 - i32.const 4856 + i32.const 5800 call $~lib/near-runtime-ts/base64/base64.decode local.tee $4 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__set @@ -35088,8 +17159,8 @@ local.tee $3 i32.const 2 i32.const 3 - i32.const 18 - i32.const 5024 + i32.const 28 + i32.const 5968 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $7 @@ -35109,10 +17180,10 @@ i32.store offset=64 local.get $0 i32.const 0 - i32.const 656 + i32.const 816 call $assembly/model/FooBar#encode local.set $8 - i32.const 5056 + i32.const 6000 local.get $8 call $~lib/assemblyscript-json/encoder/JSONEncoder#toString local.tee $3 @@ -35123,40 +17194,49 @@ call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize local.set $10 local.get $10 - i32.const 0 - call $~lib/nearEntry/decode + call $~lib/nearEntry/JSON.parse local.set $11 - i32.const 5088 local.get $11 - call $assembly/model/FooBar#toJSON + i32.load offset=4 + i32.const 6032 + call $~lib/array/Array<~lib/string/String>#join local.tee $12 + call $~lib/near-runtime-ts/logging/logging.log + local.get $11 + i32.const 816 + call $~lib/nearEntry/decode + local.set $13 + i32.const 6056 + local.get $13 + call $assembly/model/FooBar#toJSON + local.tee $14 call $~lib/string/String.__concat - local.tee $13 + local.tee $15 call $~lib/near-runtime-ts/logging/logging.log local.get $0 i32.load - local.get $11 + local.get $13 i32.load i32.eq i32.eqz if i32.const 0 - i32.const 952 - i32.const 316 + i32.const 6088 + i32.const 166 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 i32.load offset=4 - local.get $11 + local.get $13 i32.load offset=4 i32.eq i32.eqz if i32.const 0 - i32.const 952 - i32.const 317 + i32.const 6088 + i32.const 167 i32.const 2 call $~lib/builtins/abort unreachable @@ -35164,17 +17244,17 @@ local.get $0 i32.load offset=40 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $14 - local.get $11 + local.tee $16 + local.get $13 i32.load offset=40 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $15 + local.tee $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 952 - i32.const 318 + i32.const 6088 + i32.const 168 i32.const 2 call $~lib/builtins/abort unreachable @@ -35183,22 +17263,22 @@ i32.load offset=60 i32.const 0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $16 + local.tee $18 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $17 - local.get $11 + local.tee $19 + local.get $13 i32.load offset=60 i32.const 0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $18 + local.tee $20 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $19 + local.tee $21 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 952 - i32.const 319 + i32.const 6088 + i32.const 169 i32.const 2 call $~lib/builtins/abort unreachable @@ -35207,17 +17287,17 @@ i32.load offset=44 i32.const 0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $20 + local.tee $22 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $21 - i32.const 4912 + local.tee $23 + i32.const 5856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 952 - i32.const 320 + i32.const 6088 + i32.const 170 i32.const 2 call $~lib/builtins/abort unreachable @@ -35226,7 +17306,7 @@ i32.load offset=64 i32.const 0 call $~lib/array/Array#__get - local.get $11 + local.get $13 i32.load offset=64 i32.const 0 call $~lib/array/Array#__get @@ -35234,100 +17314,102 @@ i32.eqz if i32.const 0 - i32.const 952 - i32.const 321 + i32.const 6088 + i32.const 171 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 i64.load offset=16 - local.get $11 + local.get $13 i64.load offset=16 i64.eq i32.eqz if i32.const 0 - i32.const 952 - i32.const 322 + i32.const 6088 + i32.const 172 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/Nullables#constructor - local.set $22 - local.get $22 - call $assembly/model/Nullables#serialize - local.tee $23 - i32.const 0 - call $~lib/nearEntry/decode local.set $24 local.get $24 + call $assembly/model/Nullables#serialize + local.tee $25 + call $~lib/nearEntry/JSON.parse + local.tee $26 + i32.const 816 + call $~lib/nearEntry/decode + local.set $27 + local.get $27 i32.load i32.const 0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 952 - i32.const 325 + i32.const 6088 + i32.const 175 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $24 + local.get $27 i32.load offset=4 call $~lib/rt/stub/__retain - local.set $26 + local.set $29 i32.const 0 call $~lib/rt/stub/__retain - local.set $25 - local.get $26 + local.set $28 + local.get $29 i64.load offset=8 - local.get $25 + local.get $28 i64.load offset=8 i64.eq if (result i32) - local.get $26 + local.get $29 i64.load - local.get $25 + local.get $28 i64.load i64.eq else i32.const 0 end - local.set $27 - local.get $25 + local.set $30 + local.get $28 call $~lib/rt/stub/__release - local.get $26 + local.get $29 call $~lib/rt/stub/__release - local.get $27 + local.get $30 i32.const 0 i32.ne i32.eqz if i32.const 0 - i32.const 952 - i32.const 326 + i32.const 6088 + i32.const 176 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $24 + local.get $27 i32.load offset=8 i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 952 - i32.const 327 + i32.const 6088 + i32.const 177 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 5208 + i32.const 6240 call $~lib/near-runtime-ts/logging/logging.log local.get $0 call $~lib/rt/stub/__release @@ -35379,11 +17461,17 @@ call $~lib/rt/stub/__release local.get $24 call $~lib/rt/stub/__release + local.get $25 + call $~lib/rt/stub/__release + local.get $26 + call $~lib/rt/stub/__release + local.get $27 + call $~lib/rt/stub/__release ) - (func $start (; 662 ;) (type $FUNCSIG$v) + (func $start (; 303 ;) (type $FUNCSIG$v) call $start:~lib/rt/index-stub call $start:~lib/nearEntry ) - (func $null (; 663 ;) (type $FUNCSIG$v) + (func $null (; 304 ;) (type $FUNCSIG$v) ) ) From c65a05616b5dda5b8c2f413c57e31e5f0cbc5af2 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Sun, 8 Sep 2019 09:32:28 +0300 Subject: [PATCH 17/24] Update Math.random according to v8 (#826) --- std/assembly/math.ts | 9 +++-- tests/compiler/std/array.optimized.wat | 44 +++++++++++++-------- tests/compiler/std/array.untouched.wat | 51 +++++++++++++++++-------- tests/compiler/std/math.optimized.wat | 46 +++++++++++++--------- tests/compiler/std/math.untouched.wat | 53 ++++++++++++++++++-------- 5 files changed, 136 insertions(+), 67 deletions(-) diff --git a/std/assembly/math.ts b/std/assembly/math.ts index 9e4dfd9573..3b1249bb5f 100644 --- a/std/assembly/math.ts +++ b/std/assembly/math.ts @@ -1033,15 +1033,18 @@ export namespace NativeMath { } export function seedRandom(value: i64): void { - assert(value); random_seeded = true; random_state0_64 = murmurHash3(value); random_state1_64 = murmurHash3(~random_state0_64); random_state0_32 = splitMix32(value); random_state1_32 = splitMix32(random_state0_32); + assert( + random_state0_64 != 0 && random_state1_64 != 0 && + random_state0_32 != 0 && random_state1_32 != 0 + ); } - export function random(): f64 { // see: v8/src/base/random-number-generator.cc + export function random(): f64 { // see: v8/src/base/utils/random-number-generator.cc if (!random_seeded) throw new Error("PRNG must be seeded."); var s1 = random_state0_64; var s0 = random_state1_64; @@ -1051,7 +1054,7 @@ export namespace NativeMath { s1 ^= s0; s1 ^= s0 >> 26; random_state1_64 = s1; - var r = ((s0 + s1) & 0x000FFFFFFFFFFFFF) | 0x3FF0000000000000; + var r = (s0 >> 12) | 0x3FF0000000000000; return reinterpret(r) - 1; } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 4d56f59a00..77f4685abb 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4151,16 +4151,6 @@ i32.xor ) (func $~lib/math/NativeMath.seedRandom (; 97 ;) (type $FUNCSIG$vj) (param $0 i64) - local.get $0 - i64.eqz - if - i32.const 0 - i32.const 3160 - i32.const 1036 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 1 global.set $~lib/math/random_seeded local.get $0 @@ -4178,6 +4168,31 @@ global.get $~lib/math/random_state0_32 call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 + global.get $~lib/math/random_state1_32 + i32.const 0 + i32.ne + i32.const 0 + global.get $~lib/math/random_state0_32 + i32.const 0 + global.get $~lib/math/random_state1_64 + i64.const 0 + i64.ne + i32.const 0 + global.get $~lib/math/random_state0_64 + i64.const 0 + i64.ne + select + select + select + i32.eqz + if + i32.const 0 + i32.const 3160 + i32.const 1041 + i32.const 4 + call $~lib/builtins/abort + unreachable + end ) (func $~lib/util/sort/insertionSort (; 98 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -5709,7 +5724,7 @@ if i32.const 3936 i32.const 3160 - i32.const 1045 + i32.const 1048 i32.const 24 call $~lib/builtins/abort unreachable @@ -5735,13 +5750,10 @@ i64.const 26 i64.shr_u i64.xor - local.tee $0 global.set $~lib/math/random_state1_64 - local.get $0 local.get $1 - i64.add - i64.const 4503599627370495 - i64.and + i64.const 12 + i64.shr_u i64.const 4607182418800017408 i64.or f64.reinterpret_i64 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index fb392e224b..87ee293222 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -6529,16 +6529,6 @@ i32.xor ) (func $~lib/math/NativeMath.seedRandom (; 129 ;) (type $FUNCSIG$vj) (param $0 i64) - local.get $0 - i64.eqz - if - i32.const 0 - i32.const 3160 - i32.const 1036 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 1 global.set $~lib/math/random_seeded local.get $0 @@ -6556,6 +6546,39 @@ global.get $~lib/math/random_state0_32 call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 + global.get $~lib/math/random_state0_64 + i64.const 0 + i64.ne + if (result i32) + global.get $~lib/math/random_state1_64 + i64.const 0 + i64.ne + else + i32.const 0 + end + if (result i32) + global.get $~lib/math/random_state0_32 + i32.const 0 + i32.ne + else + i32.const 0 + end + if (result i32) + global.get $~lib/math/random_state1_32 + i32.const 0 + i32.ne + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 3160 + i32.const 1041 + i32.const 4 + call $~lib/builtins/abort + unreachable + end ) (func $~lib/util/sort/insertionSort (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -8842,7 +8865,7 @@ if i32.const 3936 i32.const 3160 - i32.const 1045 + i32.const 1048 i32.const 24 call $~lib/builtins/abort unreachable @@ -8878,10 +8901,8 @@ local.get $0 global.set $~lib/math/random_state1_64 local.get $1 - local.get $0 - i64.add - i64.const 4503599627370495 - i64.and + i64.const 12 + i64.shr_u i64.const 4607182418800017408 i64.or local.set $2 diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 5d2a19a59a..46f4c2ccf9 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -8039,16 +8039,6 @@ i32.xor ) (func $~lib/math/NativeMath.seedRandom (; 130 ;) (type $FUNCSIG$vj) (param $0 i64) - local.get $0 - i64.eqz - if - i32.const 0 - i32.const 144 - i32.const 1036 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 1 global.set $~lib/math/random_seeded local.get $0 @@ -8066,6 +8056,31 @@ global.get $~lib/math/random_state0_32 call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 + global.get $~lib/math/random_state1_32 + i32.const 0 + i32.ne + i32.const 0 + global.get $~lib/math/random_state0_32 + i32.const 0 + global.get $~lib/math/random_state1_64 + i64.const 0 + i64.ne + i32.const 0 + global.get $~lib/math/random_state0_64 + i64.const 0 + i64.ne + select + select + select + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 1041 + i32.const 4 + call $~lib/builtins/abort + unreachable + end ) (func $~lib/math/NativeMath.random (; 131 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) @@ -8075,7 +8090,7 @@ if i32.const 184 i32.const 144 - i32.const 1045 + i32.const 1048 i32.const 24 call $~lib/builtins/abort unreachable @@ -8101,13 +8116,10 @@ i64.const 26 i64.shr_u i64.xor - local.tee $0 global.set $~lib/math/random_state1_64 - local.get $0 local.get $1 - i64.add - i64.const 4503599627370495 - i64.and + i64.const 12 + i64.shr_u i64.const 4607182418800017408 i64.or f64.reinterpret_i64 @@ -8122,7 +8134,7 @@ if i32.const 184 i32.const 144 - i32.const 2319 + i32.const 2322 i32.const 24 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 900f3c105d..6176a2c629 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -10130,16 +10130,6 @@ i32.xor ) (func $~lib/math/NativeMath.seedRandom (; 133 ;) (type $FUNCSIG$vj) (param $0 i64) - local.get $0 - i64.eqz - if - i32.const 0 - i32.const 144 - i32.const 1036 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 1 global.set $~lib/math/random_seeded local.get $0 @@ -10157,6 +10147,39 @@ global.get $~lib/math/random_state0_32 call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 + global.get $~lib/math/random_state0_64 + i64.const 0 + i64.ne + if (result i32) + global.get $~lib/math/random_state1_64 + i64.const 0 + i64.ne + else + i32.const 0 + end + if (result i32) + global.get $~lib/math/random_state0_32 + i32.const 0 + i32.ne + else + i32.const 0 + end + if (result i32) + global.get $~lib/math/random_state1_32 + i32.const 0 + i32.ne + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 1041 + i32.const 4 + call $~lib/builtins/abort + unreachable + end ) (func $~lib/math/NativeMath.random (; 134 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) @@ -10167,7 +10190,7 @@ if i32.const 184 i32.const 144 - i32.const 1045 + i32.const 1048 i32.const 24 call $~lib/builtins/abort unreachable @@ -10203,10 +10226,8 @@ local.get $0 global.set $~lib/math/random_state1_64 local.get $1 - local.get $0 - i64.add - i64.const 4503599627370495 - i64.and + i64.const 12 + i64.shr_u i64.const 4607182418800017408 i64.or local.set $2 @@ -10224,7 +10245,7 @@ if i32.const 184 i32.const 144 - i32.const 2319 + i32.const 2322 i32.const 24 call $~lib/builtins/abort unreachable From e46d7f190aa5111f8a825489c81fbc4ae0de880e Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Sun, 8 Sep 2019 15:15:06 -0400 Subject: [PATCH 18/24] Cleaned up --- bindings/assembly/nearEntry.ts | 310 +- bindings/dist/transformerBundle.js | 9708 +---------------- bindings/src/index.ts | 221 +- tests/near-bindgen/assembly/test.ts | 3 +- tests/near-bindgen/out/assembly/hello/main.ts | 13 - .../near-bindgen/out/assembly/hello/model.ts | 40 +- tests/near-bindgen/out/assembly/model.ts | 86 +- tests/near-bindgen/out/assembly/test.ts | 7 +- tests/near-bindgen/out/hello.wat | 1951 ++-- tests/near-bindgen/out/test.wat | 4662 ++++---- 10 files changed, 3941 insertions(+), 13060 deletions(-) diff --git a/bindings/assembly/nearEntry.ts b/bindings/assembly/nearEntry.ts index e533308579..70a89abe51 100644 --- a/bindings/assembly/nearEntry.ts +++ b/bindings/assembly/nearEntry.ts @@ -1,5 +1,5 @@ -import { storage, near, base64, base58, logging } from 'near-runtime-ts'; +import { storage, near, base64, base58 } from 'near-runtime-ts'; //@ts-ignore import { Buffer } from "assemblyscript-json/util"; import { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; @@ -55,30 +55,68 @@ abstract class Value { static Object(): Value { return new Obj(); } + + toString(): string { + if (this instanceof Str){ + return (this).toString(); + } + if (this instanceof Num){ + return (this).toString(); + } + if (this instanceof Bools){ + return (this).toString(); + } + if (this instanceof Null){ + return (this).toString(); + } + if (this instanceof Arr){ + return (this).toString(); + } + if (this instanceof Obj){ + return (this).toString(); + } + return "Value"; + } } @global class Str extends Value { constructor(public _str: string) { super(); } + + toString(): string { + return "\"" + this._str + "\""; + } } @global class Num extends Value { constructor(public _num: i64) { super(); } + + toString(): string { + return this._num.toString(); + } } @global class Null extends Value { constructor() { super(); } + + toString(): string { + return "null"; + } } @global class Bools extends Value { constructor(public _bool: bool) { super(); } + + toString(): string { + return this._bool.toString(); + } } @global @@ -92,6 +130,10 @@ class Arr extends Value { push(obj: Value): void { this._arr.push(obj) } + + toString(): string { + return "[" + this._arr.map((val: Value,i: i32,_arr: Value[]): string => val.toString()).join(",") + "]"; + } } @global @@ -118,6 +160,18 @@ class Obj extends Value { } return this._obj.get(key) } + + toString(): string { + let objs: string[] = [] + for (let i: i32 = 0; i < this.keys.length; i++){ + objs.push("\"" +this.keys[i]+"\":"+ this._obj.get(this.keys[i]).toString()); + } + return "{"+ objs.join(",") + "}" + } + + has(key: string): bool { + return this._obj.has(key); + } } class Handler extends ThrowingJSONHandler { @@ -184,7 +238,7 @@ class Handler extends ThrowingJSONHandler { } addValue(name: string, obj: Value): void { - if (name.length == 0 && obj instanceof Obj) { + if (name.length == 0 && obj instanceof Obj && this.stack.length == 0) { this.stack.push(obj); return; } @@ -197,15 +251,14 @@ class Handler extends ThrowingJSONHandler { } } + @global() class JSON { - private static handler: Handler = new Handler(); - private static decoder: JSONDecoder = new JSONDecoder(JSON.handler); - static parse(str: Uint8Array): Obj { - let buffer: Uint8Array = isString(str) ? Buffer.fromString(str): str; - JSON.decoder.deserialize(buffer); - let res = JSON.handler.peek as Obj - JSON.handler.reset(); + // private static handler: Handler = new Handler(); + static parse(str: Uint8Array ): Obj { + let decoder = new JSONDecoder(new Handler()); + decoder.deserialize(str); + let res = decoder.handler.peek as Obj; return res; } } @@ -262,210 +315,6 @@ function encode(encoder: JSONEncoder, value: T, name: string | null = ""): JS return encoder; } -// class PrimitiveHandler extends ThrowingJSONHandler { -// value: T; -// decoder: JSONDecoder>; - -// constructor() { -// super(); -// this.decoder = new JSONDecoder>(this); -// } - -// static String: PrimitiveHandler = new PrimitiveHandler(); -// static Boolean: PrimitiveHandler = new PrimitiveHandler(); -// static U64: PrimitiveHandler = new PrimitiveHandler(); -// static I64: PrimitiveHandler = new PrimitiveHandler(); -// static U32: PrimitiveHandler = new PrimitiveHandler(); -// static I32: PrimitiveHandler = new PrimitiveHandler(); - -// decode(buffer: Uint8Array, state: DecoderState | null): T { -// this.decoder.deserialize(buffer, state); -// //@ts-ignore -// return this.value; -// } - -// setString(name: string, value: string): void { -// if (isString()) { -// //@ts-ignore -// this.value = (value); -// return; -// } -// if (this.value instanceof u64) { -// //@ts-ignore -// this.value = U64.parseInt(value); -// return; -// } -// if (this.value instanceof i64) { -// //@ts-ignore -// this.value = I64.parseInt(value); -// return; -// } -// super.setString(name, value); -// } - -// setBoolean(name: string, value: bool): void { -// if (isBoolean()) { -// //@ts-ignore -// this.value = (value); -// return; -// } -// super.setBoolean(name, value); -// } - -// setNull(name: string): void { -// if (isString()) { -// //@ts-ignore -// this.value = (null); -// return; -// } -// super.setNull(name); -// } - -// setInteger(name: string, value: i64): void { -// if (isInteger()) { -// //@ts-ignore -// this.value = (value); -// return; -// } -// super.setInteger(name, value); -// } - -// } - -// function decodeString(buffer: Uint8Array, state: DecoderState | null ): string { -// return PrimitiveHandler.String.decode(buffer, state); -// } -// function decodeInt(buffer: Uint8Array, state: DecoderState | null ): T { -// let val: T; -// //@ts-ignore -// if (val instanceof u32) { -// //@ts-ignore -// return PrimitiveHandler.U32.decode(buffer, state); -// } -// //@ts-ignore -// if (val instanceof i32) { -// //@ts-ignore -// return PrimitiveHandler.I32.decode(buffer, state); -// } -// //@ts-ignore -// if (val instanceof u64) { -// //@ts-ignore -// return PrimitiveHandler.U64.decode(buffer, state); -// } -// //@ts-ignore -// if (val instanceof i64) { -// //@ts-ignore -// return PrimitiveHandler.I64.decode(buffer, state); -// } -// //@ts-ignore -// return val; -// } - -// @global -// class ArrayHandler extends ThrowingJSONHandler { -// firstArrayPush: boolean = true; -// handledRoot: boolean = false; -// constructor(public value: Array, -// public buffer: Uint8Array, -// public state: DecoderState | null) { -// super(); -// } - -// static decode(buffer: Uint8Array, state: DecoderState | null = null): Arr { -// const value: Arr = instantiate(); -// //@ts-ignore -// const handler = new ArrayHandler>(value, buffer, state); -// //@ts-ignore -// const decoder = new JSONDecoder>>(handler); -// decoder.deserialize(buffer, state); -// return value; -// } - -// setString(name: string, value: string): void { -// if (isString()) { -// //@ts-ignore -// this.value.push(value); -// return; -// } -// var item: T; -// //@ts-ignore -// if (item instanceof Uint8Array) { -// //@ts-ignore -// this.value.push(base64.decode(value)); -// return; -// } -// //@ts-ignore -// if (item instanceof u64) { -// //@ts-ignore -// this.value.push(U64.parseInt(value)); -// return; -// } -// //@ts-ignore -// if (item instanceof i64) { -// //@ts-ignore -// this.value.push(I64.parseInt(value)); -// return; -// } -// super.setString(name, value); -// } - -// setBoolean(name: string, value: bool): void { -// if (isBoolean()) { -// //@ts-ignore -// this.value.push(value); -// return; -// } -// super.setBoolean(name, value); -// } - -// setNull(name: string): void { -// if (isNullable()) { -// //@ts-ignore -// this.value.push(null); -// return; -// } -// super.setNull(name); -// } - -// setInteger(name: string, value: i64): void { -// if (isInteger()) { -// //@ts-ignore -// this.value.push(value); -// return; -// } -// super.setInteger(name, value); -// } - -// pushObject(name: string): bool { -// // if (!this.handledRoot) { -// // this.handledRoot = true; -// // return true; -// // } -// // assert(name == null || name.length ==0, "name should be null.") -// if (isReference()) { -// let buffer = this.buffer; -// let state = this.state; -// let val: T = decode(buffer, state); -// this.value.push(val); -// return false; -// } -// return super.pushObject(name); -// } - -// pushArray(name: string): bool { -// if (this.firstArrayPush) { -// this.firstArrayPush = false; -// return true; -// } -// assert(name == null || name.length == 0, "name should be null."); -// if (isArrayLike()) { -// this.value.push(decode(this.buffer, this.state)); -// return false; -// } -// return super.pushArray(name); -// } -// } -//@ts-ignore @inline function getStr(val: Value, name: String): string { assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null"); @@ -490,18 +339,19 @@ function decodeArray(val: Value, name: string): Array { @global function decode(buffer: Value, name: string = ""): T { let val: Value; - if (buffer instanceof Obj){ - const obj: Obj = (buffer instanceof Uint8Array) ? JSON.parse(buffer) : buffer; + if (buffer instanceof Obj && name != ""){ + const obj: Obj = buffer; let res = obj.get(name); if (res == null){ - throw new Error("Key: " + name + " not found"); + //@ts-ignore + return null } val = res; }else { val = buffer; } if (val instanceof Null) { - assert(isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable."); + assert(isReference() || isArrayLike() || isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable."); //@ts-ignore return null; } @@ -510,7 +360,7 @@ function decode(buffer: Value, name: string = ""): T { return getStr(val, name); } if (isBoolean()) { - assert(val instanceof Bools, "Value with Key: "+ name +" is not a string"); + assert(val instanceof Bools, "Value with Key: "+ name + " with type " + nameof() +" is not a string"); //@ts-ignore return (val)._bool } @@ -518,29 +368,35 @@ function decode(buffer: Value, name: string = ""): T { if (isInteger()) { //@ts-ignore if (value instanceof u64 || value instanceof i64) { - assert(val instanceof Str, "Value with Key: "+ name +" is an 64-bit integer and is expected to be encoded as a string"); + assert(val instanceof Str, "Value with Key: "+ name + " with type " + nameof() +" is an 64-bit integer and is expected to be encoded as a string"); let str = (val)._str; //@ts-ignore return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str); } - assert(val instanceof Num, "Value with Key: "+ name +" is not an Integer"); + assert(val instanceof Num, "Value with Key: "+ name + " with type " + nameof() +" is not an Integer"); //@ts-ignore return (val)._num; } - assert(isReference(), "type must be an integer, boolean, string, object, or array"); + assert(isReference(), name + " with type " + nameof() + " must be an integer, boolean, string, object, or array"); if (isArrayLike()) { //@ts-ignore - if (value instanceof Uint8Array || value instanceof u128) { - let s = getStr(val, name); + if (value instanceof Uint8Array ) { //@ts-ignore - return value instanceof Uint8Array ? base64.decode(s) : u128.fromString(s); + return base64.decode(getStr(val, name)) } //@ts-ignore - assert(value instanceof Arr, "Value with Key: " + name + " is expected to be an array") + // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array") //@ts-ignore only checking the instance - return decodeArray>(buffer, name); + return decodeArray>(val, name); + } + if (val instanceof Str){ + //@ts-ignore + if (value instanceof u128) { + //@ts-ignore + return u128.fromString(getStr(val, name)); + } } - assert(val instanceof Obj, "Value with Key: " + name + " is not an object or null") + assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null") value = instantiate(); //@ts-ignore return value.decode(val); diff --git a/bindings/dist/transformerBundle.js b/bindings/dist/transformerBundle.js index 42c34637b4..4c7901e779 100644 --- a/bindings/dist/transformerBundle.js +++ b/bindings/dist/transformerBundle.js @@ -1,9707 +1 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["transformer"] = factory(); - else - root["transformer"] = factory(); -})(typeof self !== 'undefined' ? self : this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../node_modules/long/src/long.js": -/*!****************************************!*\ - !*** ../node_modules/long/src/long.js ***! - \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = Long; - -/** - * wasm optimizations, to do native i64 multiplication and divide - */ -var wasm = null; - -try { - wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([ - 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11 - ])), {}).exports; -} catch (e) { - // no wasm support :( -} - -/** - * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. - * See the from* functions below for more convenient ways of constructing Longs. - * @exports Long - * @class A Long class for representing a 64 bit two's-complement integer value. - * @param {number} low The low (signed) 32 bits of the long - * @param {number} high The high (signed) 32 bits of the long - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @constructor - */ -function Long(low, high, unsigned) { - - /** - * The low 32 bits as a signed value. - * @type {number} - */ - this.low = low | 0; - - /** - * The high 32 bits as a signed value. - * @type {number} - */ - this.high = high | 0; - - /** - * Whether unsigned or not. - * @type {boolean} - */ - this.unsigned = !!unsigned; -} - -// The internal representation of a long is the two given signed, 32-bit values. -// We use 32-bit pieces because these are the size of integers on which -// Javascript performs bit-operations. For operations like addition and -// multiplication, we split each number into 16 bit pieces, which can easily be -// multiplied within Javascript's floating-point representation without overflow -// or change in sign. -// -// In the algorithms below, we frequently reduce the negative case to the -// positive case by negating the input(s) and then post-processing the result. -// Note that we must ALWAYS check specially whether those values are MIN_VALUE -// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as -// a positive number, it overflows back into a negative). Not handling this -// case would often result in infinite recursion. -// -// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from* -// methods on which they depend. - -/** - * An indicator used to reliably determine if an object is a Long or not. - * @type {boolean} - * @const - * @private - */ -Long.prototype.__isLong__; - -Object.defineProperty(Long.prototype, "__isLong__", { value: true }); - -/** - * @function - * @param {*} obj Object - * @returns {boolean} - * @inner - */ -function isLong(obj) { - return (obj && obj["__isLong__"]) === true; -} - -/** - * Tests if the specified object is a Long. - * @function - * @param {*} obj Object - * @returns {boolean} - */ -Long.isLong = isLong; - -/** - * A cache of the Long representations of small integer values. - * @type {!Object} - * @inner - */ -var INT_CACHE = {}; - -/** - * A cache of the Long representations of small unsigned integer values. - * @type {!Object} - * @inner - */ -var UINT_CACHE = {}; - -/** - * @param {number} value - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromInt(value, unsigned) { - var obj, cachedObj, cache; - if (unsigned) { - value >>>= 0; - if (cache = (0 <= value && value < 256)) { - cachedObj = UINT_CACHE[value]; - if (cachedObj) - return cachedObj; - } - obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true); - if (cache) - UINT_CACHE[value] = obj; - return obj; - } else { - value |= 0; - if (cache = (-128 <= value && value < 128)) { - cachedObj = INT_CACHE[value]; - if (cachedObj) - return cachedObj; - } - obj = fromBits(value, value < 0 ? -1 : 0, false); - if (cache) - INT_CACHE[value] = obj; - return obj; - } -} - -/** - * Returns a Long representing the given 32 bit integer value. - * @function - * @param {number} value The 32 bit integer in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} The corresponding Long value - */ -Long.fromInt = fromInt; - -/** - * @param {number} value - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromNumber(value, unsigned) { - if (isNaN(value)) - return unsigned ? UZERO : ZERO; - if (unsigned) { - if (value < 0) - return UZERO; - if (value >= TWO_PWR_64_DBL) - return MAX_UNSIGNED_VALUE; - } else { - if (value <= -TWO_PWR_63_DBL) - return MIN_VALUE; - if (value + 1 >= TWO_PWR_63_DBL) - return MAX_VALUE; - } - if (value < 0) - return fromNumber(-value, unsigned).neg(); - return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); -} - -/** - * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * @function - * @param {number} value The number in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} The corresponding Long value - */ -Long.fromNumber = fromNumber; - -/** - * @param {number} lowBits - * @param {number} highBits - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromBits(lowBits, highBits, unsigned) { - return new Long(lowBits, highBits, unsigned); -} - -/** - * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is - * assumed to use 32 bits. - * @function - * @param {number} lowBits The low 32 bits - * @param {number} highBits The high 32 bits - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} The corresponding Long value - */ -Long.fromBits = fromBits; - -/** - * @function - * @param {number} base - * @param {number} exponent - * @returns {number} - * @inner - */ -var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) - -/** - * @param {string} str - * @param {(boolean|number)=} unsigned - * @param {number=} radix - * @returns {!Long} - * @inner - */ -function fromString(str, unsigned, radix) { - if (str.length === 0) - throw Error('empty string'); - if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") - return ZERO; - if (typeof unsigned === 'number') { - // For goog.math.long compatibility - radix = unsigned, - unsigned = false; - } else { - unsigned = !! unsigned; - } - radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError('radix'); - - var p; - if ((p = str.indexOf('-')) > 0) - throw Error('interior hyphen'); - else if (p === 0) { - return fromString(str.substring(1), unsigned, radix).neg(); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = fromNumber(pow_dbl(radix, 8)); - - var result = ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i), - value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = fromNumber(pow_dbl(radix, size)); - result = result.mul(power).add(fromNumber(value)); - } else { - result = result.mul(radixToPower); - result = result.add(fromNumber(value)); - } - } - result.unsigned = unsigned; - return result; -} - -/** - * Returns a Long representation of the given string, written using the specified radix. - * @function - * @param {string} str The textual representation of the Long - * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed - * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 - * @returns {!Long} The corresponding Long value - */ -Long.fromString = fromString; - -/** - * @function - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromValue(val, unsigned) { - if (typeof val === 'number') - return fromNumber(val, unsigned); - if (typeof val === 'string') - return fromString(val, unsigned); - // Throws for non-objects, converts non-instanceof Long: - return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned); -} - -/** - * Converts the specified value to a Long using the appropriate from* function for its type. - * @function - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} - */ -Long.fromValue = fromValue; - -// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be -// no runtime penalty for these. - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_16_DBL = 1 << 16; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_24_DBL = 1 << 24; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; - -/** - * @type {!Long} - * @const - * @inner - */ -var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); - -/** - * @type {!Long} - * @inner - */ -var ZERO = fromInt(0); - -/** - * Signed zero. - * @type {!Long} - */ -Long.ZERO = ZERO; - -/** - * @type {!Long} - * @inner - */ -var UZERO = fromInt(0, true); - -/** - * Unsigned zero. - * @type {!Long} - */ -Long.UZERO = UZERO; - -/** - * @type {!Long} - * @inner - */ -var ONE = fromInt(1); - -/** - * Signed one. - * @type {!Long} - */ -Long.ONE = ONE; - -/** - * @type {!Long} - * @inner - */ -var UONE = fromInt(1, true); - -/** - * Unsigned one. - * @type {!Long} - */ -Long.UONE = UONE; - -/** - * @type {!Long} - * @inner - */ -var NEG_ONE = fromInt(-1); - -/** - * Signed negative one. - * @type {!Long} - */ -Long.NEG_ONE = NEG_ONE; - -/** - * @type {!Long} - * @inner - */ -var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); - -/** - * Maximum signed value. - * @type {!Long} - */ -Long.MAX_VALUE = MAX_VALUE; - -/** - * @type {!Long} - * @inner - */ -var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); - -/** - * Maximum unsigned value. - * @type {!Long} - */ -Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; - -/** - * @type {!Long} - * @inner - */ -var MIN_VALUE = fromBits(0, 0x80000000|0, false); - -/** - * Minimum signed value. - * @type {!Long} - */ -Long.MIN_VALUE = MIN_VALUE; - -/** - * @alias Long.prototype - * @inner - */ -var LongPrototype = Long.prototype; - -/** - * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. - * @returns {number} - */ -LongPrototype.toInt = function toInt() { - return this.unsigned ? this.low >>> 0 : this.low; -}; - -/** - * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). - * @returns {number} - */ -LongPrototype.toNumber = function toNumber() { - if (this.unsigned) - return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); - return this.high * TWO_PWR_32_DBL + (this.low >>> 0); -}; - -/** - * Converts the Long to a string written in the specified radix. - * @param {number=} radix Radix (2-36), defaults to 10 - * @returns {string} - * @override - * @throws {RangeError} If `radix` is out of range - */ -LongPrototype.toString = function toString(radix) { - radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError('radix'); - if (this.isZero()) - return '0'; - if (this.isNegative()) { // Unsigned Longs are never negative - if (this.eq(MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = fromNumber(radix), - div = this.div(radixLong), - rem1 = div.mul(radixLong).sub(this); - return div.toString(radix) + rem1.toInt().toString(radix); - } else - return '-' + this.neg().toString(radix); - } - - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), - rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower), - intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, - digits = intval.toString(radix); - rem = remDiv; - if (rem.isZero()) - return digits + result; - else { - while (digits.length < 6) - digits = '0' + digits; - result = '' + digits + result; - } - } -}; - -/** - * Gets the high 32 bits as a signed integer. - * @returns {number} Signed high bits - */ -LongPrototype.getHighBits = function getHighBits() { - return this.high; -}; - -/** - * Gets the high 32 bits as an unsigned integer. - * @returns {number} Unsigned high bits - */ -LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { - return this.high >>> 0; -}; - -/** - * Gets the low 32 bits as a signed integer. - * @returns {number} Signed low bits - */ -LongPrototype.getLowBits = function getLowBits() { - return this.low; -}; - -/** - * Gets the low 32 bits as an unsigned integer. - * @returns {number} Unsigned low bits - */ -LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { - return this.low >>> 0; -}; - -/** - * Gets the number of bits needed to represent the absolute value of this Long. - * @returns {number} - */ -LongPrototype.getNumBitsAbs = function getNumBitsAbs() { - if (this.isNegative()) // Unsigned Longs are never negative - return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); - var val = this.high != 0 ? this.high : this.low; - for (var bit = 31; bit > 0; bit--) - if ((val & (1 << bit)) != 0) - break; - return this.high != 0 ? bit + 33 : bit + 1; -}; - -/** - * Tests if this Long's value equals zero. - * @returns {boolean} - */ -LongPrototype.isZero = function isZero() { - return this.high === 0 && this.low === 0; -}; - -/** - * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}. - * @returns {boolean} - */ -LongPrototype.eqz = LongPrototype.isZero; - -/** - * Tests if this Long's value is negative. - * @returns {boolean} - */ -LongPrototype.isNegative = function isNegative() { - return !this.unsigned && this.high < 0; -}; - -/** - * Tests if this Long's value is positive. - * @returns {boolean} - */ -LongPrototype.isPositive = function isPositive() { - return this.unsigned || this.high >= 0; -}; - -/** - * Tests if this Long's value is odd. - * @returns {boolean} - */ -LongPrototype.isOdd = function isOdd() { - return (this.low & 1) === 1; -}; - -/** - * Tests if this Long's value is even. - * @returns {boolean} - */ -LongPrototype.isEven = function isEven() { - return (this.low & 1) === 0; -}; - -/** - * Tests if this Long's value equals the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.equals = function equals(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) - return false; - return this.high === other.high && this.low === other.low; -}; - -/** - * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.eq = LongPrototype.equals; - -/** - * Tests if this Long's value differs from the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.notEquals = function notEquals(other) { - return !this.eq(/* validates */ other); -}; - -/** - * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.neq = LongPrototype.notEquals; - -/** - * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.ne = LongPrototype.notEquals; - -/** - * Tests if this Long's value is less than the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lessThan = function lessThan(other) { - return this.comp(/* validates */ other) < 0; -}; - -/** - * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lt = LongPrototype.lessThan; - -/** - * Tests if this Long's value is less than or equal the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { - return this.comp(/* validates */ other) <= 0; -}; - -/** - * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lte = LongPrototype.lessThanOrEqual; - -/** - * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.le = LongPrototype.lessThanOrEqual; - -/** - * Tests if this Long's value is greater than the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.greaterThan = function greaterThan(other) { - return this.comp(/* validates */ other) > 0; -}; - -/** - * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.gt = LongPrototype.greaterThan; - -/** - * Tests if this Long's value is greater than or equal the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { - return this.comp(/* validates */ other) >= 0; -}; - -/** - * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.gte = LongPrototype.greaterThanOrEqual; - -/** - * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.ge = LongPrototype.greaterThanOrEqual; - -/** - * Compares this Long's value with the specified's. - * @param {!Long|number|string} other Other value - * @returns {number} 0 if they are the same, 1 if the this is greater and -1 - * if the given one is greater - */ -LongPrototype.compare = function compare(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.eq(other)) - return 0; - var thisNeg = this.isNegative(), - otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) - return -1; - if (!thisNeg && otherNeg) - return 1; - // At this point the sign bits are the same - if (!this.unsigned) - return this.sub(other).isNegative() ? -1 : 1; - // Both are positive if at least one is unsigned - return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1; -}; - -/** - * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}. - * @function - * @param {!Long|number|string} other Other value - * @returns {number} 0 if they are the same, 1 if the this is greater and -1 - * if the given one is greater - */ -LongPrototype.comp = LongPrototype.compare; - -/** - * Negates this Long's value. - * @returns {!Long} Negated Long - */ -LongPrototype.negate = function negate() { - if (!this.unsigned && this.eq(MIN_VALUE)) - return MIN_VALUE; - return this.not().add(ONE); -}; - -/** - * Negates this Long's value. This is an alias of {@link Long#negate}. - * @function - * @returns {!Long} Negated Long - */ -LongPrototype.neg = LongPrototype.negate; - -/** - * Returns the sum of this and the specified Long. - * @param {!Long|number|string} addend Addend - * @returns {!Long} Sum - */ -LongPrototype.add = function add(addend) { - if (!isLong(addend)) - addend = fromValue(addend); - - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high >>> 16; - var a32 = this.high & 0xFFFF; - var a16 = this.low >>> 16; - var a00 = this.low & 0xFFFF; - - var b48 = addend.high >>> 16; - var b32 = addend.high & 0xFFFF; - var b16 = addend.low >>> 16; - var b00 = addend.low & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); -}; - -/** - * Returns the difference of this and the specified Long. - * @param {!Long|number|string} subtrahend Subtrahend - * @returns {!Long} Difference - */ -LongPrototype.subtract = function subtract(subtrahend) { - if (!isLong(subtrahend)) - subtrahend = fromValue(subtrahend); - return this.add(subtrahend.neg()); -}; - -/** - * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}. - * @function - * @param {!Long|number|string} subtrahend Subtrahend - * @returns {!Long} Difference - */ -LongPrototype.sub = LongPrototype.subtract; - -/** - * Returns the product of this and the specified Long. - * @param {!Long|number|string} multiplier Multiplier - * @returns {!Long} Product - */ -LongPrototype.multiply = function multiply(multiplier) { - if (this.isZero()) - return ZERO; - if (!isLong(multiplier)) - multiplier = fromValue(multiplier); - - // use wasm support if present - if (wasm) { - var low = wasm.mul(this.low, - this.high, - multiplier.low, - multiplier.high); - return fromBits(low, wasm.get_high(), this.unsigned); - } - - if (multiplier.isZero()) - return ZERO; - if (this.eq(MIN_VALUE)) - return multiplier.isOdd() ? MIN_VALUE : ZERO; - if (multiplier.eq(MIN_VALUE)) - return this.isOdd() ? MIN_VALUE : ZERO; - - if (this.isNegative()) { - if (multiplier.isNegative()) - return this.neg().mul(multiplier.neg()); - else - return this.neg().mul(multiplier).neg(); - } else if (multiplier.isNegative()) - return this.mul(multiplier.neg()).neg(); - - // If both longs are small, use float multiplication - if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) - return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); - - // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high >>> 16; - var a32 = this.high & 0xFFFF; - var a16 = this.low >>> 16; - var a00 = this.low & 0xFFFF; - - var b48 = multiplier.high >>> 16; - var b32 = multiplier.high & 0xFFFF; - var b16 = multiplier.low >>> 16; - var b00 = multiplier.low & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); -}; - -/** - * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}. - * @function - * @param {!Long|number|string} multiplier Multiplier - * @returns {!Long} Product - */ -LongPrototype.mul = LongPrototype.multiply; - -/** - * Returns this Long divided by the specified. The result is signed if this Long is signed or - * unsigned if this Long is unsigned. - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Quotient - */ -LongPrototype.divide = function divide(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - if (divisor.isZero()) - throw Error('division by zero'); - - // use wasm support if present - if (wasm) { - // guard against signed division overflow: the largest - // negative number / -1 would be 1 larger than the largest - // positive number, due to two's complement. - if (!this.unsigned && - this.high === -0x80000000 && - divisor.low === -1 && divisor.high === -1) { - // be consistent with non-wasm code path - return this; - } - var low = (this.unsigned ? wasm.div_u : wasm.div_s)( - this.low, - this.high, - divisor.low, - divisor.high - ); - return fromBits(low, wasm.get_high(), this.unsigned); - } - - if (this.isZero()) - return this.unsigned ? UZERO : ZERO; - var approx, rem, res; - if (!this.unsigned) { - // This section is only relevant for signed longs and is derived from the - // closure library as a whole. - if (this.eq(MIN_VALUE)) { - if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) - return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - else if (divisor.eq(MIN_VALUE)) - return ONE; - else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shr(1); - approx = halfThis.div(divisor).shl(1); - if (approx.eq(ZERO)) { - return divisor.isNegative() ? ONE : NEG_ONE; - } else { - rem = this.sub(divisor.mul(approx)); - res = approx.add(rem.div(divisor)); - return res; - } - } - } else if (divisor.eq(MIN_VALUE)) - return this.unsigned ? UZERO : ZERO; - if (this.isNegative()) { - if (divisor.isNegative()) - return this.neg().div(divisor.neg()); - return this.neg().div(divisor).neg(); - } else if (divisor.isNegative()) - return this.div(divisor.neg()).neg(); - res = ZERO; - } else { - // The algorithm below has not been made for unsigned longs. It's therefore - // required to take special care of the MSB prior to running it. - if (!divisor.unsigned) - divisor = divisor.toUnsigned(); - if (divisor.gt(this)) - return UZERO; - if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true - return UONE; - res = UZERO; - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - rem = this; - while (rem.gte(divisor)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2), - delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - approxRes = fromNumber(approx), - approxRem = approxRes.mul(divisor); - while (approxRem.isNegative() || approxRem.gt(rem)) { - approx -= delta; - approxRes = fromNumber(approx, this.unsigned); - approxRem = approxRes.mul(divisor); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) - approxRes = ONE; - - res = res.add(approxRes); - rem = rem.sub(approxRem); - } - return res; -}; - -/** - * Returns this Long divided by the specified. This is an alias of {@link Long#divide}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Quotient - */ -LongPrototype.div = LongPrototype.divide; - -/** - * Returns this Long modulo the specified. - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ -LongPrototype.modulo = function modulo(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - - // use wasm support if present - if (wasm) { - var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)( - this.low, - this.high, - divisor.low, - divisor.high - ); - return fromBits(low, wasm.get_high(), this.unsigned); - } - - return this.sub(this.div(divisor).mul(divisor)); -}; - -/** - * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ -LongPrototype.mod = LongPrototype.modulo; - -/** - * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ -LongPrototype.rem = LongPrototype.modulo; - -/** - * Returns the bitwise NOT of this Long. - * @returns {!Long} - */ -LongPrototype.not = function not() { - return fromBits(~this.low, ~this.high, this.unsigned); -}; - -/** - * Returns the bitwise AND of this Long and the specified. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ -LongPrototype.and = function and(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low & other.low, this.high & other.high, this.unsigned); -}; - -/** - * Returns the bitwise OR of this Long and the specified. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ -LongPrototype.or = function or(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low | other.low, this.high | other.high, this.unsigned); -}; - -/** - * Returns the bitwise XOR of this Long and the given one. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ -LongPrototype.xor = function xor(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); -}; - -/** - * Returns this Long with bits shifted to the left by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shiftLeft = function shiftLeft(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); - else - return fromBits(0, this.low << (numBits - 32), this.unsigned); -}; - -/** - * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shl = LongPrototype.shiftLeft; - -/** - * Returns this Long with bits arithmetically shifted to the right by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shiftRight = function shiftRight(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); - else - return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); -}; - -/** - * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shr = LongPrototype.shiftRight; - -/** - * Returns this Long with bits logically shifted to the right by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - numBits &= 63; - if (numBits === 0) - return this; - else { - var high = this.high; - if (numBits < 32) { - var low = this.low; - return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); - } else if (numBits === 32) - return fromBits(high, 0, this.unsigned); - else - return fromBits(high >>> (numBits - 32), 0, this.unsigned); - } -}; - -/** - * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shru = LongPrototype.shiftRightUnsigned; - -/** - * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; - -/** - * Converts this Long to signed. - * @returns {!Long} Signed long - */ -LongPrototype.toSigned = function toSigned() { - if (!this.unsigned) - return this; - return fromBits(this.low, this.high, false); -}; - -/** - * Converts this Long to unsigned. - * @returns {!Long} Unsigned long - */ -LongPrototype.toUnsigned = function toUnsigned() { - if (this.unsigned) - return this; - return fromBits(this.low, this.high, true); -}; - -/** - * Converts this Long to its byte representation. - * @param {boolean=} le Whether little or big endian, defaults to big endian - * @returns {!Array.} Byte representation - */ -LongPrototype.toBytes = function toBytes(le) { - return le ? this.toBytesLE() : this.toBytesBE(); -}; - -/** - * Converts this Long to its little endian byte representation. - * @returns {!Array.} Little endian byte representation - */ -LongPrototype.toBytesLE = function toBytesLE() { - var hi = this.high, - lo = this.low; - return [ - lo & 0xff, - lo >>> 8 & 0xff, - lo >>> 16 & 0xff, - lo >>> 24 , - hi & 0xff, - hi >>> 8 & 0xff, - hi >>> 16 & 0xff, - hi >>> 24 - ]; -}; - -/** - * Converts this Long to its big endian byte representation. - * @returns {!Array.} Big endian byte representation - */ -LongPrototype.toBytesBE = function toBytesBE() { - var hi = this.high, - lo = this.low; - return [ - hi >>> 24 , - hi >>> 16 & 0xff, - hi >>> 8 & 0xff, - hi & 0xff, - lo >>> 24 , - lo >>> 16 & 0xff, - lo >>> 8 & 0xff, - lo & 0xff - ]; -}; - -/** - * Creates a Long from its byte representation. - * @param {!Array.} bytes Byte representation - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @param {boolean=} le Whether little or big endian, defaults to big endian - * @returns {Long} The corresponding Long value - */ -Long.fromBytes = function fromBytes(bytes, unsigned, le) { - return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned); -}; - -/** - * Creates a Long from its little endian byte representation. - * @param {!Array.} bytes Little endian byte representation - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {Long} The corresponding Long value - */ -Long.fromBytesLE = function fromBytesLE(bytes, unsigned) { - return new Long( - bytes[0] | - bytes[1] << 8 | - bytes[2] << 16 | - bytes[3] << 24, - bytes[4] | - bytes[5] << 8 | - bytes[6] << 16 | - bytes[7] << 24, - unsigned - ); -}; - -/** - * Creates a Long from its big endian byte representation. - * @param {!Array.} bytes Big endian byte representation - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {Long} The corresponding Long value - */ -Long.fromBytesBE = function fromBytesBE(bytes, unsigned) { - return new Long( - bytes[4] << 24 | - bytes[5] << 16 | - bytes[6] << 8 | - bytes[7], - bytes[0] << 24 | - bytes[1] << 16 | - bytes[2] << 8 | - bytes[3], - unsigned - ); -}; - - -/***/ }), - -/***/ "../node_modules/webpack/buildin/global.js": -/*!*************************************************!*\ - !*** ../node_modules/webpack/buildin/global.js ***! - \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || new Function("return this")(); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), - -/***/ "../src/ast.ts": -/*!*********************!*\ - !*** ../src/ast.ts ***! - \*********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Abstract syntax tree representing a source file once parsed. - * @module ast - */ /***/ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var common_1 = __webpack_require__(/*! ./common */ "../src/common.ts"); -var tokenizer_1 = __webpack_require__(/*! ./tokenizer */ "../src/tokenizer.ts"); -exports.Token = tokenizer_1.Token; -exports.Range = tokenizer_1.Range; -var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); -/** Indicates the kind of a node. */ -var NodeKind; -(function (NodeKind) { - NodeKind[NodeKind["SOURCE"] = 0] = "SOURCE"; - // types - NodeKind[NodeKind["NAMEDTYPE"] = 1] = "NAMEDTYPE"; - NodeKind[NodeKind["FUNCTIONTYPE"] = 2] = "FUNCTIONTYPE"; - NodeKind[NodeKind["TYPENAME"] = 3] = "TYPENAME"; - NodeKind[NodeKind["TYPEPARAMETER"] = 4] = "TYPEPARAMETER"; - NodeKind[NodeKind["PARAMETER"] = 5] = "PARAMETER"; - // expressions - NodeKind[NodeKind["IDENTIFIER"] = 6] = "IDENTIFIER"; - NodeKind[NodeKind["ASSERTION"] = 7] = "ASSERTION"; - NodeKind[NodeKind["BINARY"] = 8] = "BINARY"; - NodeKind[NodeKind["CALL"] = 9] = "CALL"; - NodeKind[NodeKind["CLASS"] = 10] = "CLASS"; - NodeKind[NodeKind["COMMA"] = 11] = "COMMA"; - NodeKind[NodeKind["ELEMENTACCESS"] = 12] = "ELEMENTACCESS"; - NodeKind[NodeKind["FALSE"] = 13] = "FALSE"; - NodeKind[NodeKind["FUNCTION"] = 14] = "FUNCTION"; - NodeKind[NodeKind["INSTANCEOF"] = 15] = "INSTANCEOF"; - NodeKind[NodeKind["LITERAL"] = 16] = "LITERAL"; - NodeKind[NodeKind["NEW"] = 17] = "NEW"; - NodeKind[NodeKind["NULL"] = 18] = "NULL"; - NodeKind[NodeKind["PARENTHESIZED"] = 19] = "PARENTHESIZED"; - NodeKind[NodeKind["PROPERTYACCESS"] = 20] = "PROPERTYACCESS"; - NodeKind[NodeKind["TERNARY"] = 21] = "TERNARY"; - NodeKind[NodeKind["SUPER"] = 22] = "SUPER"; - NodeKind[NodeKind["THIS"] = 23] = "THIS"; - NodeKind[NodeKind["TRUE"] = 24] = "TRUE"; - NodeKind[NodeKind["CONSTRUCTOR"] = 25] = "CONSTRUCTOR"; - NodeKind[NodeKind["UNARYPOSTFIX"] = 26] = "UNARYPOSTFIX"; - NodeKind[NodeKind["UNARYPREFIX"] = 27] = "UNARYPREFIX"; - // statements - NodeKind[NodeKind["BLOCK"] = 28] = "BLOCK"; - NodeKind[NodeKind["BREAK"] = 29] = "BREAK"; - NodeKind[NodeKind["CONTINUE"] = 30] = "CONTINUE"; - NodeKind[NodeKind["DO"] = 31] = "DO"; - NodeKind[NodeKind["EMPTY"] = 32] = "EMPTY"; - NodeKind[NodeKind["EXPORT"] = 33] = "EXPORT"; - NodeKind[NodeKind["EXPORTDEFAULT"] = 34] = "EXPORTDEFAULT"; - NodeKind[NodeKind["EXPORTIMPORT"] = 35] = "EXPORTIMPORT"; - NodeKind[NodeKind["EXPRESSION"] = 36] = "EXPRESSION"; - NodeKind[NodeKind["FOR"] = 37] = "FOR"; - NodeKind[NodeKind["IF"] = 38] = "IF"; - NodeKind[NodeKind["IMPORT"] = 39] = "IMPORT"; - NodeKind[NodeKind["RETURN"] = 40] = "RETURN"; - NodeKind[NodeKind["SWITCH"] = 41] = "SWITCH"; - NodeKind[NodeKind["THROW"] = 42] = "THROW"; - NodeKind[NodeKind["TRY"] = 43] = "TRY"; - NodeKind[NodeKind["VARIABLE"] = 44] = "VARIABLE"; - NodeKind[NodeKind["VOID"] = 45] = "VOID"; - NodeKind[NodeKind["WHILE"] = 46] = "WHILE"; - // declaration statements - NodeKind[NodeKind["CLASSDECLARATION"] = 47] = "CLASSDECLARATION"; - NodeKind[NodeKind["ENUMDECLARATION"] = 48] = "ENUMDECLARATION"; - NodeKind[NodeKind["ENUMVALUEDECLARATION"] = 49] = "ENUMVALUEDECLARATION"; - NodeKind[NodeKind["FIELDDECLARATION"] = 50] = "FIELDDECLARATION"; - NodeKind[NodeKind["FUNCTIONDECLARATION"] = 51] = "FUNCTIONDECLARATION"; - NodeKind[NodeKind["IMPORTDECLARATION"] = 52] = "IMPORTDECLARATION"; - NodeKind[NodeKind["INDEXSIGNATUREDECLARATION"] = 53] = "INDEXSIGNATUREDECLARATION"; - NodeKind[NodeKind["INTERFACEDECLARATION"] = 54] = "INTERFACEDECLARATION"; - NodeKind[NodeKind["METHODDECLARATION"] = 55] = "METHODDECLARATION"; - NodeKind[NodeKind["NAMESPACEDECLARATION"] = 56] = "NAMESPACEDECLARATION"; - NodeKind[NodeKind["TYPEDECLARATION"] = 57] = "TYPEDECLARATION"; - NodeKind[NodeKind["VARIABLEDECLARATION"] = 58] = "VARIABLEDECLARATION"; - // special - NodeKind[NodeKind["DECORATOR"] = 59] = "DECORATOR"; - NodeKind[NodeKind["EXPORTMEMBER"] = 60] = "EXPORTMEMBER"; - NodeKind[NodeKind["SWITCHCASE"] = 61] = "SWITCHCASE"; - NodeKind[NodeKind["COMMENT"] = 62] = "COMMENT"; -})(NodeKind = exports.NodeKind || (exports.NodeKind = {})); -/** Checks if a node represents a constant value. */ -function nodeIsConstantValue(kind) { - switch (kind) { - case NodeKind.LITERAL: - case NodeKind.NULL: - case NodeKind.TRUE: - case NodeKind.FALSE: return true; - } - return false; -} -exports.nodeIsConstantValue = nodeIsConstantValue; -/** Checks if a node might be callable. */ -function nodeIsCallable(kind) { - switch (kind) { - case NodeKind.IDENTIFIER: - case NodeKind.ASSERTION: // if kind=NONNULL - case NodeKind.CALL: - case NodeKind.ELEMENTACCESS: - case NodeKind.PARENTHESIZED: - case NodeKind.PROPERTYACCESS: - case NodeKind.SUPER: return true; - } - return false; -} -exports.nodeIsCallable = nodeIsCallable; -/** Checks if a node might be callable with generic arguments. */ -function nodeIsGenericCallable(kind) { - switch (kind) { - case NodeKind.IDENTIFIER: - case NodeKind.PROPERTYACCESS: return true; - } - return false; -} -exports.nodeIsGenericCallable = nodeIsGenericCallable; -/** Base class of all nodes. */ -var Node = /** @class */ (function () { - function Node() { - } - // types - Node.createTypeName = function (name, range) { - var typeName = new TypeName(); - typeName.range = range; - typeName.identifier = name; - typeName.next = null; - return typeName; - }; - Node.createSimpleTypeName = function (name, range) { - return Node.createTypeName(Node.createIdentifierExpression(name, range), range); - }; - Node.createNamedType = function (name, typeArguments, isNullable, range) { - var type = new NamedTypeNode(); - type.range = range; - type.name = name; - type.typeArguments = typeArguments; - type.isNullable = isNullable; - return type; - }; - Node.createFunctionType = function (parameters, returnType, explicitThisType, isNullable, range) { - var type = new FunctionTypeNode(); - type.range = range; - type.parameters = parameters; - type.returnType = returnType; - type.explicitThisType = explicitThisType; - type.isNullable = isNullable; - return type; - }; - Node.createOmittedType = function (range) { - return Node.createNamedType(Node.createSimpleTypeName("", range), null, false, range); - }; - Node.createTypeParameter = function (name, extendsType, defaultType, range) { - var elem = new TypeParameterNode(); - elem.range = range; - elem.name = name; - elem.extendsType = extendsType; - elem.defaultType = defaultType; - return elem; - }; - Node.createParameter = function (name, type, initializer, kind, range) { - var elem = new ParameterNode(); - elem.range = range; - elem.name = name; - elem.type = type; - elem.initializer = initializer; - elem.parameterKind = kind; - return elem; - }; - // special - Node.createDecorator = function (name, args, range) { - var stmt = new DecoratorNode(); - stmt.range = range; - stmt.name = name; - stmt.arguments = args; - stmt.decoratorKind = decoratorNameToKind(name); - return stmt; - }; - Node.createComment = function (text, kind, range) { - var node = new CommentNode(); - node.range = range; - node.commentKind = kind; - node.text = text; - return node; - }; - // expressions - Node.createIdentifierExpression = function (name, range, isQuoted) { - if (isQuoted === void 0) { isQuoted = false; } - var expr = new IdentifierExpression(); - expr.range = range; - expr.text = name; // TODO: extract from range - expr.symbol = name; // TODO: Symbol.for(name) - expr.isQuoted = isQuoted; - return expr; - }; - Node.createEmptyIdentifierExpression = function (range) { - var expr = new IdentifierExpression(); - expr.range = range; - expr.text = ""; - return expr; - }; - Node.createArrayLiteralExpression = function (elements, range) { - var expr = new ArrayLiteralExpression(); - expr.range = range; - expr.elementExpressions = elements; - return expr; - }; - Node.createAssertionExpression = function (assertionKind, expression, toType, range) { - var expr = new AssertionExpression(); - expr.range = range; - expr.assertionKind = assertionKind; - expr.expression = expression; - expr.toType = toType; - return expr; - }; - Node.createBinaryExpression = function (operator, left, right, range) { - var expr = new BinaryExpression(); - expr.range = range; - expr.operator = operator; - expr.left = left; - expr.right = right; - return expr; - }; - Node.createCallExpression = function (expression, typeArgs, args, range) { - var expr = new CallExpression(); - expr.range = range; - expr.expression = expression; - expr.typeArguments = typeArgs; - expr.arguments = args; - return expr; - }; - Node.createClassExpression = function (declaration) { - var expr = new ClassExpression(); - expr.range = declaration.range; - expr.declaration = declaration; - return expr; - }; - Node.createCommaExpression = function (expressions, range) { - var expr = new CommaExpression(); - expr.range = range; - expr.expressions = expressions; - return expr; - }; - Node.createConstructorExpression = function (range) { - var expr = new ConstructorExpression(); - expr.range = range; - return expr; - }; - Node.createElementAccessExpression = function (expression, element, range) { - var expr = new ElementAccessExpression(); - expr.range = range; - expr.expression = expression; - expr.elementExpression = element; - return expr; - }; - Node.createFalseExpression = function (range) { - var expr = new FalseExpression(); - expr.range = range; - return expr; - }; - Node.createFloatLiteralExpression = function (value, range) { - var expr = new FloatLiteralExpression(); - expr.range = range; - expr.value = value; - return expr; - }; - Node.createFunctionExpression = function (declaration) { - var expr = new FunctionExpression(); - expr.range = declaration.range; - expr.declaration = declaration; - return expr; - }; - Node.createInstanceOfExpression = function (expression, isType, range) { - var expr = new InstanceOfExpression(); - expr.range = range; - expr.expression = expression; - expr.isType = isType; - return expr; - }; - Node.createIntegerLiteralExpression = function (value, range) { - var expr = new IntegerLiteralExpression(); - expr.range = range; - expr.value = value; - return expr; - }; - Node.createNewExpression = function (expression, typeArgs, args, range) { - var expr = new NewExpression(); - expr.range = range; - expr.expression = expression; - expr.typeArguments = typeArgs; - expr.arguments = args; - return expr; - }; - Node.createNullExpression = function (range) { - var expr = new NullExpression(); - expr.range = range; - return expr; - }; - Node.createObjectLiteralExpression = function (names, values, range) { - var expr = new ObjectLiteralExpression(); - expr.range = range; - expr.names = names; - expr.values = values; - return expr; - }; - Node.createParenthesizedExpression = function (expression, range) { - var expr = new ParenthesizedExpression(); - expr.range = range; - expr.expression = expression; - return expr; - }; - Node.createPropertyAccessExpression = function (expression, property, range) { - var expr = new PropertyAccessExpression(); - expr.range = range; - expr.expression = expression; - expr.property = property; - return expr; - }; - Node.createRegexpLiteralExpression = function (pattern, flags, range) { - var expr = new RegexpLiteralExpression(); - expr.range = range; - expr.pattern = pattern; - expr.patternFlags = flags; - return expr; - }; - Node.createTernaryExpression = function (condition, ifThen, ifElse, range) { - var expr = new TernaryExpression(); - expr.range = range; - expr.condition = condition; - expr.ifThen = ifThen; - expr.ifElse = ifElse; - return expr; - }; - Node.createStringLiteralExpression = function (value, range) { - var expr = new StringLiteralExpression(); - expr.range = range; - expr.value = value; - return expr; - }; - Node.createSuperExpression = function (range) { - var expr = new SuperExpression(); - expr.range = range; - return expr; - }; - Node.createThisExpression = function (range) { - var expr = new ThisExpression(); - expr.range = range; - return expr; - }; - Node.createTrueExpression = function (range) { - var expr = new TrueExpression(); - expr.range = range; - return expr; - }; - Node.createUnaryPostfixExpression = function (operator, operand, range) { - var expr = new UnaryPostfixExpression(); - expr.range = range; - expr.operator = operator; - expr.operand = operand; - return expr; - }; - Node.createUnaryPrefixExpression = function (operator, operand, range) { - var expr = new UnaryPrefixExpression(); - expr.range = range; - expr.operator = operator; - expr.operand = operand; - return expr; - }; - // statements - Node.createBlockStatement = function (statements, range) { - var stmt = new BlockStatement(); - stmt.range = range; - stmt.statements = statements; - return stmt; - }; - Node.createBreakStatement = function (label, range) { - var stmt = new BreakStatement(); - stmt.range = range; - stmt.label = label; - return stmt; - }; - Node.createClassDeclaration = function (identifier, typeParameters, extendsType, // can't be a function - implementsTypes, // can't be functions - members, decorators, flags, range) { - var stmt = new ClassDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = identifier; - stmt.typeParameters = typeParameters; - stmt.extendsType = extendsType; - stmt.implementsTypes = implementsTypes; - stmt.members = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createContinueStatement = function (label, range) { - var stmt = new ContinueStatement(); - stmt.range = range; - stmt.label = label; - return stmt; - }; - Node.createDoStatement = function (statement, condition, range) { - var stmt = new DoStatement(); - stmt.range = range; - stmt.statement = statement; - stmt.condition = condition; - return stmt; - }; - Node.createEmptyStatement = function (range) { - var stmt = new EmptyStatement(); - stmt.range = range; - return stmt; - }; - Node.createEnumDeclaration = function (name, members, decorators, flags, range) { - var stmt = new EnumDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.values = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createEnumValueDeclaration = function (name, value, flags, range) { - var stmt = new EnumValueDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.value = value; - return stmt; - }; - Node.createExportStatement = function (members, path, isDeclare, range) { - var stmt = new ExportStatement(); - stmt.range = range; - stmt.members = members; - stmt.path = path; - if (path) { - var normalizedPath = util_1.normalizePath(path.value); - if (path.value.startsWith(".")) { // relative - stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); - } - else { // absolute - if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { - normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; - } - stmt.normalizedPath = normalizedPath; - } - stmt.internalPath = mangleInternalPath(stmt.normalizedPath); - } - else { - stmt.normalizedPath = null; - stmt.internalPath = null; - } - stmt.isDeclare = isDeclare; - return stmt; - }; - Node.createExportDefaultStatement = function (declaration, range) { - var stmt = new ExportDefaultStatement(); - stmt.declaration = declaration; - stmt.range = range; - return stmt; - }; - Node.createExportImportStatement = function (name, externalName, range) { - var stmt = new ExportImportStatement(); - stmt.range = range; - stmt.name = name; - stmt.externalName = externalName; - return stmt; - }; - Node.createExportMember = function (name, externalName, range) { - var elem = new ExportMember(); - elem.range = range; - elem.localName = name; - if (!externalName) - externalName = name; - elem.exportedName = externalName; - return elem; - }; - Node.createExpressionStatement = function (expression) { - var stmt = new ExpressionStatement(); - stmt.range = expression.range; - stmt.expression = expression; - return stmt; - }; - Node.createIfStatement = function (condition, ifTrue, ifFalse, range) { - var stmt = new IfStatement(); - stmt.range = range; - stmt.condition = condition; - stmt.ifTrue = ifTrue; - stmt.ifFalse = ifFalse; - return stmt; - }; - Node.createImportStatement = function (decls, path, range) { - var stmt = new ImportStatement(); - stmt.range = range; - stmt.declarations = decls; - stmt.namespaceName = null; - stmt.path = path; - var normalizedPath = util_1.normalizePath(path.value); - if (path.value.startsWith(".")) { // relative in project - stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); - } - else { // absolute in library - if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { - normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; - } - stmt.normalizedPath = normalizedPath; - } - stmt.internalPath = mangleInternalPath(stmt.normalizedPath); - return stmt; - }; - Node.createImportStatementWithWildcard = function (identifier, path, range) { - var stmt = new ImportStatement(); - stmt.range = range; - stmt.declarations = null; - stmt.namespaceName = identifier; - stmt.path = path; - var normalizedPath = util_1.normalizePath(path.value); - if (path.value.startsWith(".")) { - stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); - } - else { - if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { - normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; - } - stmt.normalizedPath = normalizedPath; - } - stmt.internalPath = mangleInternalPath(stmt.normalizedPath); - return stmt; - }; - Node.createImportDeclaration = function (foreignName, name, range) { - var elem = new ImportDeclaration(); - elem.range = range; - elem.foreignName = foreignName; - if (!name) - name = foreignName; - elem.name = name; - return elem; - }; - Node.createInterfaceDeclaration = function (name, typeParameters, extendsType, // can't be a function - members, decorators, flags, range) { - var stmt = new InterfaceDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.extendsType = extendsType; - stmt.members = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createFieldDeclaration = function (name, type, initializer, decorators, flags, range) { - var stmt = new FieldDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.type = type; - stmt.initializer = initializer; - stmt.decorators = decorators; - return stmt; - }; - Node.createForStatement = function (initializer, condition, incrementor, statement, range) { - var stmt = new ForStatement(); - stmt.range = range; - stmt.initializer = initializer; - stmt.condition = condition; - stmt.incrementor = incrementor; - stmt.statement = statement; - return stmt; - }; - Node.createFunctionDeclaration = function (name, typeParameters, signature, body, decorators, flags, arrowKind, range) { - var stmt = new FunctionDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.signature = signature; - stmt.body = body; - stmt.decorators = decorators; - stmt.arrowKind = arrowKind; - return stmt; - }; - Node.createIndexSignatureDeclaration = function (keyType, valueType, range) { - var elem = new IndexSignatureDeclaration(); - elem.range = range; - elem.keyType = keyType; - elem.valueType = valueType; - return elem; - }; - Node.createMethodDeclaration = function (name, typeParameters, signature, body, decorators, flags, range) { - var stmt = new MethodDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.signature = signature; - stmt.body = body; - stmt.decorators = decorators; - return stmt; - }; - Node.createNamespaceDeclaration = function (name, members, decorators, flags, range) { - var stmt = new NamespaceDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.members = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createReturnStatement = function (value, range) { - var stmt = new ReturnStatement(); - stmt.range = range; - stmt.value = value; - return stmt; - }; - Node.createSwitchStatement = function (condition, cases, range) { - var stmt = new SwitchStatement(); - stmt.range = range; - stmt.condition = condition; - stmt.cases = cases; - return stmt; - }; - Node.createSwitchCase = function (label, statements, range) { - var elem = new SwitchCase(); - elem.range = range; - elem.label = label; - elem.statements = statements; - return elem; - }; - Node.createThrowStatement = function (value, range) { - var stmt = new ThrowStatement(); - stmt.range = range; - stmt.value = value; - return stmt; - }; - Node.createTryStatement = function (statements, catchVariable, catchStatements, finallyStatements, range) { - var stmt = new TryStatement(); - stmt.range = range; - stmt.statements = statements; - stmt.catchVariable = catchVariable; - stmt.catchStatements = catchStatements; - stmt.finallyStatements = finallyStatements; - return stmt; - }; - Node.createTypeDeclaration = function (name, typeParameters, alias, decorators, flags, range) { - var stmt = new TypeDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.type = alias; - stmt.decorators = decorators; - return stmt; - }; - Node.createVariableStatement = function (declarations, decorators, range) { - var stmt = new VariableStatement(); - stmt.range = range; - stmt.declarations = declarations; - stmt.decorators = decorators; - return stmt; - }; - Node.createVariableDeclaration = function (name, type, initializer, decorators, flags, range) { - var elem = new VariableDeclaration(); - elem.range = range; - elem.flags = flags; - elem.name = name; - elem.type = type; - elem.initializer = initializer; - elem.decorators = decorators; // inherited - return elem; - }; - Node.createVoidStatement = function (expression, range) { - var stmt = new VoidStatement(); - stmt.range = range; - stmt.expression = expression; - return stmt; - }; - Node.createWhileStatement = function (condition, statement, range) { - var stmt = new WhileStatement(); - stmt.range = range; - stmt.condition = condition; - stmt.statement = statement; - return stmt; - }; - return Node; -}()); -exports.Node = Node; -// types -var TypeNode = /** @class */ (function (_super) { - __extends(TypeNode, _super); - function TypeNode() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TypeNode; -}(Node)); -exports.TypeNode = TypeNode; -/** Represents a type name. */ -var TypeName = /** @class */ (function (_super) { - __extends(TypeName, _super); - function TypeName() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TYPENAME; - return _this; - } - return TypeName; -}(Node)); -exports.TypeName = TypeName; -/** Represents a named type. */ -var NamedTypeNode = /** @class */ (function (_super) { - __extends(NamedTypeNode, _super); - function NamedTypeNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NAMEDTYPE; - return _this; - } - return NamedTypeNode; -}(TypeNode)); -exports.NamedTypeNode = NamedTypeNode; -/** Represents a function type. */ -var FunctionTypeNode = /** @class */ (function (_super) { - __extends(FunctionTypeNode, _super); - function FunctionTypeNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FUNCTIONTYPE; - return _this; - } - return FunctionTypeNode; -}(TypeNode)); -exports.FunctionTypeNode = FunctionTypeNode; -/** Represents a type parameter. */ -var TypeParameterNode = /** @class */ (function (_super) { - __extends(TypeParameterNode, _super); - function TypeParameterNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TYPEPARAMETER; - return _this; - } - return TypeParameterNode; -}(Node)); -exports.TypeParameterNode = TypeParameterNode; -/** Represents the kind of a parameter. */ -var ParameterKind; -(function (ParameterKind) { - /** No specific flags. */ - ParameterKind[ParameterKind["DEFAULT"] = 0] = "DEFAULT"; - /** Is an optional parameter. */ - ParameterKind[ParameterKind["OPTIONAL"] = 1] = "OPTIONAL"; - /** Is a rest parameter. */ - ParameterKind[ParameterKind["REST"] = 2] = "REST"; -})(ParameterKind = exports.ParameterKind || (exports.ParameterKind = {})); -/** Represents a function parameter. */ -var ParameterNode = /** @class */ (function (_super) { - __extends(ParameterNode, _super); - function ParameterNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.PARAMETER; - /** Implicit field declaration, if applicable. */ - _this.implicitFieldDeclaration = null; - /** Common flags indicating specific traits. */ - _this.flags = common_1.CommonFlags.NONE; - return _this; - } - /** Tests if this node has the specified flag or flags. */ - ParameterNode.prototype.is = function (flag) { return (this.flags & flag) == flag; }; - /** Tests if this node has one of the specified flags. */ - ParameterNode.prototype.isAny = function (flag) { return (this.flags & flag) != 0; }; - /** Sets a specific flag or flags. */ - ParameterNode.prototype.set = function (flag) { this.flags |= flag; }; - return ParameterNode; -}(Node)); -exports.ParameterNode = ParameterNode; -// special -/** Built-in decorator kinds. */ -var DecoratorKind; -(function (DecoratorKind) { - DecoratorKind[DecoratorKind["CUSTOM"] = 0] = "CUSTOM"; - DecoratorKind[DecoratorKind["GLOBAL"] = 1] = "GLOBAL"; - DecoratorKind[DecoratorKind["OPERATOR"] = 2] = "OPERATOR"; - DecoratorKind[DecoratorKind["OPERATOR_BINARY"] = 3] = "OPERATOR_BINARY"; - DecoratorKind[DecoratorKind["OPERATOR_PREFIX"] = 4] = "OPERATOR_PREFIX"; - DecoratorKind[DecoratorKind["OPERATOR_POSTFIX"] = 5] = "OPERATOR_POSTFIX"; - DecoratorKind[DecoratorKind["UNMANAGED"] = 6] = "UNMANAGED"; - DecoratorKind[DecoratorKind["SEALED"] = 7] = "SEALED"; - DecoratorKind[DecoratorKind["INLINE"] = 8] = "INLINE"; - DecoratorKind[DecoratorKind["EXTERNAL"] = 9] = "EXTERNAL"; - DecoratorKind[DecoratorKind["BUILTIN"] = 10] = "BUILTIN"; - DecoratorKind[DecoratorKind["LAZY"] = 11] = "LAZY"; - DecoratorKind[DecoratorKind["UNSAFE"] = 12] = "UNSAFE"; -})(DecoratorKind = exports.DecoratorKind || (exports.DecoratorKind = {})); -/** Returns the kind of the specified decorator. Defaults to {@link DecoratorKind.CUSTOM}. */ -function decoratorNameToKind(name) { - // @global, @inline, @operator, @sealed, @unmanaged - if (name.kind == NodeKind.IDENTIFIER) { - var nameStr = name.text; - assert(nameStr.length); - switch (nameStr.charCodeAt(0)) { - case 98 /* b */: { - if (nameStr == "builtin") - return DecoratorKind.BUILTIN; - break; - } - case 101 /* e */: { - if (nameStr == "external") - return DecoratorKind.EXTERNAL; - break; - } - case 103 /* g */: { - if (nameStr == "global") - return DecoratorKind.GLOBAL; - break; - } - case 105 /* i */: { - if (nameStr == "inline") - return DecoratorKind.INLINE; - break; - } - case 108 /* l */: { - if (nameStr == "lazy") - return DecoratorKind.LAZY; - break; - } - case 111 /* o */: { - if (nameStr == "operator") - return DecoratorKind.OPERATOR; - break; - } - case 115 /* s */: { - if (nameStr == "sealed") - return DecoratorKind.SEALED; - break; - } - case 117 /* u */: { - if (nameStr == "unmanaged") - return DecoratorKind.UNMANAGED; - if (nameStr == "unsafe") - return DecoratorKind.UNSAFE; - break; - } - } - } - else if (name.kind == NodeKind.PROPERTYACCESS && - name.expression.kind == NodeKind.IDENTIFIER) { - var nameStr = name.expression.text; - assert(nameStr.length); - var propStr = name.property.text; - assert(propStr.length); - // @operator.binary, @operator.prefix, @operator.postfix - if (nameStr == "operator") { - switch (propStr.charCodeAt(0)) { - case 98 /* b */: { - if (propStr == "binary") - return DecoratorKind.OPERATOR_BINARY; - break; - } - case 112 /* p */: { - switch (propStr) { - case "prefix": return DecoratorKind.OPERATOR_PREFIX; - case "postfix": return DecoratorKind.OPERATOR_POSTFIX; - } - break; - } - } - } - } - return DecoratorKind.CUSTOM; -} -exports.decoratorNameToKind = decoratorNameToKind; -/** Represents a decorator. */ -var DecoratorNode = /** @class */ (function (_super) { - __extends(DecoratorNode, _super); - function DecoratorNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.DECORATOR; - return _this; - } - return DecoratorNode; -}(Node)); -exports.DecoratorNode = DecoratorNode; -/** Comment kinds. */ -var CommentKind; -(function (CommentKind) { - /** Line comment. */ - CommentKind[CommentKind["LINE"] = 0] = "LINE"; - /** Triple-slash comment. */ - CommentKind[CommentKind["TRIPLE"] = 1] = "TRIPLE"; - /** Block comment. */ - CommentKind[CommentKind["BLOCK"] = 2] = "BLOCK"; -})(CommentKind = exports.CommentKind || (exports.CommentKind = {})); -/** Represents a comment. */ -var CommentNode = /** @class */ (function (_super) { - __extends(CommentNode, _super); - function CommentNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.COMMENT; - return _this; - } - return CommentNode; -}(Node)); -exports.CommentNode = CommentNode; -// expressions -/** Base class of all expression nodes. */ -var Expression = /** @class */ (function (_super) { - __extends(Expression, _super); - function Expression() { - return _super !== null && _super.apply(this, arguments) || this; - } - return Expression; -}(Node)); -exports.Expression = Expression; -/** Represents an identifier expression. */ -var IdentifierExpression = /** @class */ (function (_super) { - __extends(IdentifierExpression, _super); - function IdentifierExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IDENTIFIER; - return _this; - } - return IdentifierExpression; -}(Expression)); -exports.IdentifierExpression = IdentifierExpression; -/** Indicates the kind of a literal. */ -var LiteralKind; -(function (LiteralKind) { - LiteralKind[LiteralKind["FLOAT"] = 0] = "FLOAT"; - LiteralKind[LiteralKind["INTEGER"] = 1] = "INTEGER"; - LiteralKind[LiteralKind["STRING"] = 2] = "STRING"; - LiteralKind[LiteralKind["REGEXP"] = 3] = "REGEXP"; - LiteralKind[LiteralKind["ARRAY"] = 4] = "ARRAY"; - LiteralKind[LiteralKind["OBJECT"] = 5] = "OBJECT"; -})(LiteralKind = exports.LiteralKind || (exports.LiteralKind = {})); -/** Base class of all literal expressions. */ -var LiteralExpression = /** @class */ (function (_super) { - __extends(LiteralExpression, _super); - function LiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.LITERAL; - return _this; - } - return LiteralExpression; -}(Expression)); -exports.LiteralExpression = LiteralExpression; -/** Represents an `[]` literal expression. */ -var ArrayLiteralExpression = /** @class */ (function (_super) { - __extends(ArrayLiteralExpression, _super); - function ArrayLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.ARRAY; - return _this; - } - return ArrayLiteralExpression; -}(LiteralExpression)); -exports.ArrayLiteralExpression = ArrayLiteralExpression; -/** Indicates the kind of an assertion. */ -var AssertionKind; -(function (AssertionKind) { - AssertionKind[AssertionKind["PREFIX"] = 0] = "PREFIX"; - AssertionKind[AssertionKind["AS"] = 1] = "AS"; - AssertionKind[AssertionKind["NONNULL"] = 2] = "NONNULL"; -})(AssertionKind = exports.AssertionKind || (exports.AssertionKind = {})); -/** Represents an assertion expression. */ -var AssertionExpression = /** @class */ (function (_super) { - __extends(AssertionExpression, _super); - function AssertionExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ASSERTION; - return _this; - } - return AssertionExpression; -}(Expression)); -exports.AssertionExpression = AssertionExpression; -/** Represents a binary expression. */ -var BinaryExpression = /** @class */ (function (_super) { - __extends(BinaryExpression, _super); - function BinaryExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.BINARY; - return _this; - } - return BinaryExpression; -}(Expression)); -exports.BinaryExpression = BinaryExpression; -/** Represents a call expression. */ -var CallExpression = /** @class */ (function (_super) { - __extends(CallExpression, _super); - function CallExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CALL; - return _this; - } - Object.defineProperty(CallExpression.prototype, "typeArgumentsRange", { - /** Gets the type arguments range for reporting. */ - get: function () { - var typeArguments = this.typeArguments; - var numTypeArguments; - if (typeArguments && (numTypeArguments = typeArguments.length)) { - return tokenizer_1.Range.join(typeArguments[0].range, typeArguments[numTypeArguments - 1].range); - } - return this.expression.range; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CallExpression.prototype, "argumentsRange", { - /** Gets the arguments range for reporting. */ - get: function () { - var args = this.arguments; - var numArguments = args.length; - if (numArguments) { - return tokenizer_1.Range.join(args[0].range, args[numArguments - 1].range); - } - return this.expression.range; - }, - enumerable: true, - configurable: true - }); - return CallExpression; -}(Expression)); -exports.CallExpression = CallExpression; -/** Represents a class expression using the 'class' keyword. */ -var ClassExpression = /** @class */ (function (_super) { - __extends(ClassExpression, _super); - function ClassExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CLASS; - return _this; - } - return ClassExpression; -}(Expression)); -exports.ClassExpression = ClassExpression; -/** Represents a comma expression composed of multiple expressions. */ -var CommaExpression = /** @class */ (function (_super) { - __extends(CommaExpression, _super); - function CommaExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.COMMA; - return _this; - } - return CommaExpression; -}(Expression)); -exports.CommaExpression = CommaExpression; -/** Represents a `constructor` expression. */ -var ConstructorExpression = /** @class */ (function (_super) { - __extends(ConstructorExpression, _super); - function ConstructorExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CONSTRUCTOR; - _this.text = "constructor"; - _this.symbol = common_1.CommonSymbols.constructor; - return _this; - } - return ConstructorExpression; -}(IdentifierExpression)); -exports.ConstructorExpression = ConstructorExpression; -/** Represents an element access expression, e.g., array access. */ -var ElementAccessExpression = /** @class */ (function (_super) { - __extends(ElementAccessExpression, _super); - function ElementAccessExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ELEMENTACCESS; - return _this; - } - return ElementAccessExpression; -}(Expression)); -exports.ElementAccessExpression = ElementAccessExpression; -/** Represents a float literal expression. */ -var FloatLiteralExpression = /** @class */ (function (_super) { - __extends(FloatLiteralExpression, _super); - function FloatLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.FLOAT; - return _this; - } - return FloatLiteralExpression; -}(LiteralExpression)); -exports.FloatLiteralExpression = FloatLiteralExpression; -/** Represents a function expression using the 'function' keyword. */ -var FunctionExpression = /** @class */ (function (_super) { - __extends(FunctionExpression, _super); - function FunctionExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FUNCTION; - return _this; - } - return FunctionExpression; -}(Expression)); -exports.FunctionExpression = FunctionExpression; -/** Represents an `instanceof` expression. */ -var InstanceOfExpression = /** @class */ (function (_super) { - __extends(InstanceOfExpression, _super); - function InstanceOfExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.INSTANCEOF; - return _this; - } - return InstanceOfExpression; -}(Expression)); -exports.InstanceOfExpression = InstanceOfExpression; -/** Represents an integer literal expression. */ -var IntegerLiteralExpression = /** @class */ (function (_super) { - __extends(IntegerLiteralExpression, _super); - function IntegerLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.INTEGER; - return _this; - } - return IntegerLiteralExpression; -}(LiteralExpression)); -exports.IntegerLiteralExpression = IntegerLiteralExpression; -/** Represents a `new` expression. Like a call but with its own kind. */ -var NewExpression = /** @class */ (function (_super) { - __extends(NewExpression, _super); - function NewExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NEW; - return _this; - } - return NewExpression; -}(CallExpression)); -exports.NewExpression = NewExpression; -/** Represents a `null` expression. */ -var NullExpression = /** @class */ (function (_super) { - __extends(NullExpression, _super); - function NullExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NULL; - _this.text = "null"; - _this.symbol = common_1.CommonSymbols.null_; - return _this; - } - return NullExpression; -}(IdentifierExpression)); -exports.NullExpression = NullExpression; -/** Represents an object literal expression. */ -var ObjectLiteralExpression = /** @class */ (function (_super) { - __extends(ObjectLiteralExpression, _super); - function ObjectLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.OBJECT; - return _this; - } - return ObjectLiteralExpression; -}(LiteralExpression)); -exports.ObjectLiteralExpression = ObjectLiteralExpression; -/** Represents a parenthesized expression. */ -var ParenthesizedExpression = /** @class */ (function (_super) { - __extends(ParenthesizedExpression, _super); - function ParenthesizedExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.PARENTHESIZED; - return _this; - } - return ParenthesizedExpression; -}(Expression)); -exports.ParenthesizedExpression = ParenthesizedExpression; -/** Represents a property access expression. */ -var PropertyAccessExpression = /** @class */ (function (_super) { - __extends(PropertyAccessExpression, _super); - function PropertyAccessExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.PROPERTYACCESS; - return _this; - } - return PropertyAccessExpression; -}(Expression)); -exports.PropertyAccessExpression = PropertyAccessExpression; -/** Represents a regular expression literal expression. */ -var RegexpLiteralExpression = /** @class */ (function (_super) { - __extends(RegexpLiteralExpression, _super); - function RegexpLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.REGEXP; - return _this; - } - return RegexpLiteralExpression; -}(LiteralExpression)); -exports.RegexpLiteralExpression = RegexpLiteralExpression; -/** Represents a ternary expression, i.e., short if notation. */ -var TernaryExpression = /** @class */ (function (_super) { - __extends(TernaryExpression, _super); - function TernaryExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TERNARY; - return _this; - } - return TernaryExpression; -}(Expression)); -exports.TernaryExpression = TernaryExpression; -/** Represents a string literal expression. */ -var StringLiteralExpression = /** @class */ (function (_super) { - __extends(StringLiteralExpression, _super); - function StringLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.STRING; - return _this; - } - return StringLiteralExpression; -}(LiteralExpression)); -exports.StringLiteralExpression = StringLiteralExpression; -/** Represents a `super` expression. */ -var SuperExpression = /** @class */ (function (_super) { - __extends(SuperExpression, _super); - function SuperExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.SUPER; - _this.text = "super"; - _this.symbol = common_1.CommonSymbols.super_; - return _this; - } - return SuperExpression; -}(IdentifierExpression)); -exports.SuperExpression = SuperExpression; -/** Represents a `this` expression. */ -var ThisExpression = /** @class */ (function (_super) { - __extends(ThisExpression, _super); - function ThisExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.THIS; - _this.text = "this"; - _this.symbol = common_1.CommonSymbols.this_; - return _this; - } - return ThisExpression; -}(IdentifierExpression)); -exports.ThisExpression = ThisExpression; -/** Represents a `true` expression. */ -var TrueExpression = /** @class */ (function (_super) { - __extends(TrueExpression, _super); - function TrueExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TRUE; - _this.text = "true"; - _this.symbol = common_1.CommonSymbols.true_; - return _this; - } - return TrueExpression; -}(IdentifierExpression)); -exports.TrueExpression = TrueExpression; -/** Represents a `false` expression. */ -var FalseExpression = /** @class */ (function (_super) { - __extends(FalseExpression, _super); - function FalseExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FALSE; - _this.text = "false"; - _this.symbol = common_1.CommonSymbols.false_; - return _this; - } - return FalseExpression; -}(IdentifierExpression)); -exports.FalseExpression = FalseExpression; -/** Base class of all unary expressions. */ -var UnaryExpression = /** @class */ (function (_super) { - __extends(UnaryExpression, _super); - function UnaryExpression() { - return _super !== null && _super.apply(this, arguments) || this; - } - return UnaryExpression; -}(Expression)); -exports.UnaryExpression = UnaryExpression; -/** Represents a unary postfix expression, e.g. a postfix increment. */ -var UnaryPostfixExpression = /** @class */ (function (_super) { - __extends(UnaryPostfixExpression, _super); - function UnaryPostfixExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.UNARYPOSTFIX; - return _this; - } - return UnaryPostfixExpression; -}(UnaryExpression)); -exports.UnaryPostfixExpression = UnaryPostfixExpression; -/** Represents a unary prefix expression, e.g. a negation. */ -var UnaryPrefixExpression = /** @class */ (function (_super) { - __extends(UnaryPrefixExpression, _super); - function UnaryPrefixExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.UNARYPREFIX; - return _this; - } - return UnaryPrefixExpression; -}(UnaryExpression)); -exports.UnaryPrefixExpression = UnaryPrefixExpression; -// statements -/** Base class of all statement nodes. */ -var Statement = /** @class */ (function (_super) { - __extends(Statement, _super); - function Statement() { - return _super !== null && _super.apply(this, arguments) || this; - } - return Statement; -}(Node)); -exports.Statement = Statement; -/** Indicates the specific kind of a source. */ -var SourceKind; -(function (SourceKind) { - /** User-provided file. */ - SourceKind[SourceKind["USER"] = 0] = "USER"; - /** User-provided entry file. */ - SourceKind[SourceKind["USER_ENTRY"] = 1] = "USER_ENTRY"; - /** Library-provided file. */ - SourceKind[SourceKind["LIBRARY"] = 2] = "LIBRARY"; - /** Library-provided entry file. */ - SourceKind[SourceKind["LIBRARY_ENTRY"] = 3] = "LIBRARY_ENTRY"; -})(SourceKind = exports.SourceKind || (exports.SourceKind = {})); -/** A top-level source node. */ -var Source = /** @class */ (function (_super) { - __extends(Source, _super); - /** Constructs a new source node. */ - function Source(normalizedPath, text, kind) { - var _this = _super.call(this) || this; - _this.kind = NodeKind.SOURCE; - _this.parent = null; - /** Tokenizer reference. */ - _this.tokenizer = null; - /** Source map index. */ - _this.debugInfoIndex = -1; - /** Re-exported sources. */ - _this.exportPaths = null; - _this.sourceKind = kind; - _this.normalizedPath = normalizedPath; - var internalPath = mangleInternalPath(_this.normalizedPath); - _this.internalPath = internalPath; - var pos = internalPath.lastIndexOf(common_1.PATH_DELIMITER); - _this.simplePath = pos >= 0 ? internalPath.substring(pos + 1) : internalPath; - _this.statements = new Array(); - _this.range = new tokenizer_1.Range(_this, 0, text.length); - _this.text = text; - return _this; - } - Object.defineProperty(Source.prototype, "isLibrary", { - get: function () { - var kind = this.sourceKind; - return kind == SourceKind.LIBRARY || kind == SourceKind.LIBRARY_ENTRY; - }, - enumerable: true, - configurable: true - }); - return Source; -}(Node)); -exports.Source = Source; -/** Base class of all declaration statements. */ -var DeclarationStatement = /** @class */ (function (_super) { - __extends(DeclarationStatement, _super); - function DeclarationStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - /** Array of decorators. */ - _this.decorators = null; - /** Common flags indicating specific traits. */ - _this.flags = common_1.CommonFlags.NONE; - return _this; - } - /** Tests if this node has the specified flag or flags. */ - DeclarationStatement.prototype.is = function (flag) { return (this.flags & flag) == flag; }; - /** Tests if this node has one of the specified flags. */ - DeclarationStatement.prototype.isAny = function (flag) { return (this.flags & flag) != 0; }; - /** Sets a specific flag or flags. */ - DeclarationStatement.prototype.set = function (flag) { this.flags |= flag; }; - return DeclarationStatement; -}(Statement)); -exports.DeclarationStatement = DeclarationStatement; -/** Represents an index signature declaration. */ -var IndexSignatureDeclaration = /** @class */ (function (_super) { - __extends(IndexSignatureDeclaration, _super); - function IndexSignatureDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.INDEXSIGNATUREDECLARATION; - return _this; - } - return IndexSignatureDeclaration; -}(DeclarationStatement)); -exports.IndexSignatureDeclaration = IndexSignatureDeclaration; -/** Base class of all variable-like declaration statements. */ -var VariableLikeDeclarationStatement = /** @class */ (function (_super) { - __extends(VariableLikeDeclarationStatement, _super); - function VariableLikeDeclarationStatement() { - return _super !== null && _super.apply(this, arguments) || this; - } - return VariableLikeDeclarationStatement; -}(DeclarationStatement)); -exports.VariableLikeDeclarationStatement = VariableLikeDeclarationStatement; -/** Represents a block statement. */ -var BlockStatement = /** @class */ (function (_super) { - __extends(BlockStatement, _super); - function BlockStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.BLOCK; - return _this; - } - return BlockStatement; -}(Statement)); -exports.BlockStatement = BlockStatement; -/** Represents a `break` statement. */ -var BreakStatement = /** @class */ (function (_super) { - __extends(BreakStatement, _super); - function BreakStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.BREAK; - return _this; - } - return BreakStatement; -}(Statement)); -exports.BreakStatement = BreakStatement; -/** Represents a `class` declaration. */ -var ClassDeclaration = /** @class */ (function (_super) { - __extends(ClassDeclaration, _super); - function ClassDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CLASSDECLARATION; - return _this; - } - Object.defineProperty(ClassDeclaration.prototype, "isGeneric", { - get: function () { - var typeParameters = this.typeParameters; - return typeParameters != null && typeParameters.length > 0; - }, - enumerable: true, - configurable: true - }); - return ClassDeclaration; -}(DeclarationStatement)); -exports.ClassDeclaration = ClassDeclaration; -/** Represents a `continue` statement. */ -var ContinueStatement = /** @class */ (function (_super) { - __extends(ContinueStatement, _super); - function ContinueStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CONTINUE; - return _this; - } - return ContinueStatement; -}(Statement)); -exports.ContinueStatement = ContinueStatement; -/** Represents a `do` statement. */ -var DoStatement = /** @class */ (function (_super) { - __extends(DoStatement, _super); - function DoStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.DO; - return _this; - } - return DoStatement; -}(Statement)); -exports.DoStatement = DoStatement; -/** Represents an empty statement, i.e., a semicolon terminating nothing. */ -var EmptyStatement = /** @class */ (function (_super) { - __extends(EmptyStatement, _super); - function EmptyStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EMPTY; - return _this; - } - return EmptyStatement; -}(Statement)); -exports.EmptyStatement = EmptyStatement; -/** Represents an `enum` declaration. */ -var EnumDeclaration = /** @class */ (function (_super) { - __extends(EnumDeclaration, _super); - function EnumDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ENUMDECLARATION; - return _this; - } - return EnumDeclaration; -}(DeclarationStatement)); -exports.EnumDeclaration = EnumDeclaration; -/** Represents a value of an `enum` declaration. */ -var EnumValueDeclaration = /** @class */ (function (_super) { - __extends(EnumValueDeclaration, _super); - function EnumValueDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ENUMVALUEDECLARATION; - return _this; - } - return EnumValueDeclaration; -}(VariableLikeDeclarationStatement)); -exports.EnumValueDeclaration = EnumValueDeclaration; -/** Represents an `export import` statement of an interface. */ -var ExportImportStatement = /** @class */ (function (_super) { - __extends(ExportImportStatement, _super); - function ExportImportStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORTIMPORT; - return _this; - } - return ExportImportStatement; -}(Node)); -exports.ExportImportStatement = ExportImportStatement; -/** Represents a member of an `export` statement. */ -var ExportMember = /** @class */ (function (_super) { - __extends(ExportMember, _super); - function ExportMember() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORTMEMBER; - return _this; - } - return ExportMember; -}(Node)); -exports.ExportMember = ExportMember; -/** Represents an `export` statement. */ -var ExportStatement = /** @class */ (function (_super) { - __extends(ExportStatement, _super); - function ExportStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORT; - return _this; - } - return ExportStatement; -}(Statement)); -exports.ExportStatement = ExportStatement; -/** Represents an `export default` statement. */ -var ExportDefaultStatement = /** @class */ (function (_super) { - __extends(ExportDefaultStatement, _super); - function ExportDefaultStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORTDEFAULT; - return _this; - } - return ExportDefaultStatement; -}(Statement)); -exports.ExportDefaultStatement = ExportDefaultStatement; -/** Represents an expression that is used as a statement. */ -var ExpressionStatement = /** @class */ (function (_super) { - __extends(ExpressionStatement, _super); - function ExpressionStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPRESSION; - return _this; - } - return ExpressionStatement; -}(Statement)); -exports.ExpressionStatement = ExpressionStatement; -/** Represents a field declaration within a `class`. */ -var FieldDeclaration = /** @class */ (function (_super) { - __extends(FieldDeclaration, _super); - function FieldDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FIELDDECLARATION; - /** Parameter index if declared as a constructor parameter, otherwise `-1`. */ - _this.parameterIndex = -1; - return _this; - } - return FieldDeclaration; -}(VariableLikeDeclarationStatement)); -exports.FieldDeclaration = FieldDeclaration; -/** Represents a `for` statement. */ -var ForStatement = /** @class */ (function (_super) { - __extends(ForStatement, _super); - function ForStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FOR; - return _this; - } - return ForStatement; -}(Statement)); -exports.ForStatement = ForStatement; -/** Indicates the kind of an array function. */ -var ArrowKind; -(function (ArrowKind) { - /** Not an arrow function. */ - ArrowKind[ArrowKind["NONE"] = 0] = "NONE"; - /** Parenthesized parameter list. */ - ArrowKind[ArrowKind["ARROW_PARENTHESIZED"] = 1] = "ARROW_PARENTHESIZED"; - /** Single parameter without parenthesis. */ - ArrowKind[ArrowKind["ARROW_SINGLE"] = 2] = "ARROW_SINGLE"; -})(ArrowKind = exports.ArrowKind || (exports.ArrowKind = {})); -/** Represents a `function` declaration. */ -var FunctionDeclaration = /** @class */ (function (_super) { - __extends(FunctionDeclaration, _super); - function FunctionDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FUNCTIONDECLARATION; - return _this; - } - Object.defineProperty(FunctionDeclaration.prototype, "isGeneric", { - get: function () { - var typeParameters = this.typeParameters; - return typeParameters != null && typeParameters.length > 0; - }, - enumerable: true, - configurable: true - }); - /** Clones this function declaration. */ - FunctionDeclaration.prototype.clone = function () { - return Node.createFunctionDeclaration(this.name, this.typeParameters, this.signature, this.body, this.decorators, this.flags, this.arrowKind, this.range); - }; - return FunctionDeclaration; -}(DeclarationStatement)); -exports.FunctionDeclaration = FunctionDeclaration; -/** Represents an `if` statement. */ -var IfStatement = /** @class */ (function (_super) { - __extends(IfStatement, _super); - function IfStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IF; - return _this; - } - return IfStatement; -}(Statement)); -exports.IfStatement = IfStatement; -/** Represents an `import` declaration part of an {@link ImportStatement}. */ -var ImportDeclaration = /** @class */ (function (_super) { - __extends(ImportDeclaration, _super); - function ImportDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IMPORTDECLARATION; - return _this; - } - return ImportDeclaration; -}(DeclarationStatement)); -exports.ImportDeclaration = ImportDeclaration; -/** Represents an `import` statement. */ -var ImportStatement = /** @class */ (function (_super) { - __extends(ImportStatement, _super); - function ImportStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IMPORT; - return _this; - } - return ImportStatement; -}(Statement)); -exports.ImportStatement = ImportStatement; -/** Represents an `interfarce` declaration. */ -var InterfaceDeclaration = /** @class */ (function (_super) { - __extends(InterfaceDeclaration, _super); - function InterfaceDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.INTERFACEDECLARATION; - return _this; - } - return InterfaceDeclaration; -}(ClassDeclaration)); -exports.InterfaceDeclaration = InterfaceDeclaration; -/** Represents a method declaration within a `class`. */ -var MethodDeclaration = /** @class */ (function (_super) { - __extends(MethodDeclaration, _super); - function MethodDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.METHODDECLARATION; - return _this; - } - return MethodDeclaration; -}(FunctionDeclaration)); -exports.MethodDeclaration = MethodDeclaration; -/** Represents a `namespace` declaration. */ -var NamespaceDeclaration = /** @class */ (function (_super) { - __extends(NamespaceDeclaration, _super); - function NamespaceDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NAMESPACEDECLARATION; - return _this; - } - return NamespaceDeclaration; -}(DeclarationStatement)); -exports.NamespaceDeclaration = NamespaceDeclaration; -/** Represents a `return` statement. */ -var ReturnStatement = /** @class */ (function (_super) { - __extends(ReturnStatement, _super); - function ReturnStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.RETURN; - return _this; - } - return ReturnStatement; -}(Statement)); -exports.ReturnStatement = ReturnStatement; -/** Represents a single `case` within a `switch` statement. */ -var SwitchCase = /** @class */ (function (_super) { - __extends(SwitchCase, _super); - function SwitchCase() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.SWITCHCASE; - return _this; - } - return SwitchCase; -}(Node)); -exports.SwitchCase = SwitchCase; -/** Represents a `switch` statement. */ -var SwitchStatement = /** @class */ (function (_super) { - __extends(SwitchStatement, _super); - function SwitchStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.SWITCH; - return _this; - } - return SwitchStatement; -}(Statement)); -exports.SwitchStatement = SwitchStatement; -/** Represents a `throw` statement. */ -var ThrowStatement = /** @class */ (function (_super) { - __extends(ThrowStatement, _super); - function ThrowStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.THROW; - return _this; - } - return ThrowStatement; -}(Statement)); -exports.ThrowStatement = ThrowStatement; -/** Represents a `try` statement. */ -var TryStatement = /** @class */ (function (_super) { - __extends(TryStatement, _super); - function TryStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TRY; - return _this; - } - return TryStatement; -}(Statement)); -exports.TryStatement = TryStatement; -/** Represents a `type` declaration. */ -var TypeDeclaration = /** @class */ (function (_super) { - __extends(TypeDeclaration, _super); - function TypeDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TYPEDECLARATION; - return _this; - } - return TypeDeclaration; -}(DeclarationStatement)); -exports.TypeDeclaration = TypeDeclaration; -/** Represents a variable declaration part of a {@link VariableStatement}. */ -var VariableDeclaration = /** @class */ (function (_super) { - __extends(VariableDeclaration, _super); - function VariableDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.VARIABLEDECLARATION; - return _this; - } - return VariableDeclaration; -}(VariableLikeDeclarationStatement)); -exports.VariableDeclaration = VariableDeclaration; -/** Represents a variable statement wrapping {@link VariableDeclaration}s. */ -var VariableStatement = /** @class */ (function (_super) { - __extends(VariableStatement, _super); - function VariableStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.VARIABLE; - return _this; - } - return VariableStatement; -}(Statement)); -exports.VariableStatement = VariableStatement; -/** Represents a void statement dropping an expression's value. */ -var VoidStatement = /** @class */ (function (_super) { - __extends(VoidStatement, _super); - function VoidStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.VOID; - return _this; - } - return VoidStatement; -}(Statement)); -exports.VoidStatement = VoidStatement; -/** Represents a `while` statement. */ -var WhileStatement = /** @class */ (function (_super) { - __extends(WhileStatement, _super); - function WhileStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.WHILE; - return _this; - } - return WhileStatement; -}(Statement)); -exports.WhileStatement = WhileStatement; -/** Finds the first decorator matching the specified kind. */ -function findDecorator(kind, decorators) { - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - var decorator = decorators[i]; - if (decorator.decoratorKind == kind) - return decorator; - } - } - return null; -} -exports.findDecorator = findDecorator; -/** Mangles an external to an internal path. */ -function mangleInternalPath(path) { - if (path.endsWith(".ts")) - path = path.substring(0, path.length - 3); - return path; -} -exports.mangleInternalPath = mangleInternalPath; -/** Tests if the specified type node represents an omitted type. */ -function isTypeOmitted(type) { - if (type.kind == NodeKind.NAMEDTYPE) { - var name = type.name; - return !(name.next || name.identifier.text.length); - } - return false; -} -exports.isTypeOmitted = isTypeOmitted; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHLENBQUEsS0FBSzs7Ozs7Ozs7Ozs7Ozs7O0FBRVIsbUNBS2tCO0FBRWxCLHlDQUlxQjtBQVFaLGdCQVhQLGlCQUFLLENBV087QUFBRSxnQkFUZCxpQkFBSyxDQVNjO0FBTnJCLCtCQUlnQjtBQUloQixvQ0FBb0M7QUFDcEMsSUFBWSxRQTJFWDtBQTNFRCxXQUFZLFFBQVE7SUFFbEIsMkNBQU0sQ0FBQTtJQUVOLFFBQVE7SUFDUixpREFBUyxDQUFBO0lBQ1QsdURBQVksQ0FBQTtJQUNaLCtDQUFRLENBQUE7SUFDUix5REFBYSxDQUFBO0lBQ2IsaURBQVMsQ0FBQTtJQUVULGNBQWM7SUFDZCxtREFBVSxDQUFBO0lBQ1YsaURBQVMsQ0FBQTtJQUNULDJDQUFNLENBQUE7SUFDTix1Q0FBSSxDQUFBO0lBQ0osMENBQUssQ0FBQTtJQUNMLDBDQUFLLENBQUE7SUFDTCwwREFBYSxDQUFBO0lBQ2IsMENBQUssQ0FBQTtJQUNMLGdEQUFRLENBQUE7SUFDUixvREFBVSxDQUFBO0lBQ1YsOENBQU8sQ0FBQTtJQUNQLHNDQUFHLENBQUE7SUFDSCx3Q0FBSSxDQUFBO0lBQ0osMERBQWEsQ0FBQTtJQUNiLDREQUFjLENBQUE7SUFDZCw4Q0FBTyxDQUFBO0lBQ1AsMENBQUssQ0FBQTtJQUNMLHdDQUFJLENBQUE7SUFDSix3Q0FBSSxDQUFBO0lBQ0osc0RBQVcsQ0FBQTtJQUNYLHdEQUFZLENBQUE7SUFDWixzREFBVyxDQUFBO0lBRVgsYUFBYTtJQUNiLDBDQUFLLENBQUE7SUFDTCwwQ0FBSyxDQUFBO0lBQ0wsZ0RBQVEsQ0FBQTtJQUNSLG9DQUFFLENBQUE7SUFDRiwwQ0FBSyxDQUFBO0lBQ0wsNENBQU0sQ0FBQTtJQUNOLDBEQUFhLENBQUE7SUFDYix3REFBWSxDQUFBO0lBQ1osb0RBQVUsQ0FBQTtJQUNWLHNDQUFHLENBQUE7SUFDSCxvQ0FBRSxDQUFBO0lBQ0YsNENBQU0sQ0FBQTtJQUNOLDRDQUFNLENBQUE7SUFDTiw0Q0FBTSxDQUFBO0lBQ04sMENBQUssQ0FBQTtJQUNMLHNDQUFHLENBQUE7SUFDSCxnREFBUSxDQUFBO0lBQ1Isd0NBQUksQ0FBQTtJQUNKLDBDQUFLLENBQUE7SUFFTCx5QkFBeUI7SUFDekIsZ0VBQWdCLENBQUE7SUFDaEIsOERBQWUsQ0FBQTtJQUNmLHdFQUFvQixDQUFBO0lBQ3BCLGdFQUFnQixDQUFBO0lBQ2hCLHNFQUFtQixDQUFBO0lBQ25CLGtFQUFpQixDQUFBO0lBQ2pCLGtGQUF5QixDQUFBO0lBQ3pCLHdFQUFvQixDQUFBO0lBQ3BCLGtFQUFpQixDQUFBO0lBQ2pCLHdFQUFvQixDQUFBO0lBQ3BCLDhEQUFlLENBQUE7SUFDZixzRUFBbUIsQ0FBQTtJQUVuQixVQUFVO0lBQ1Ysa0RBQVMsQ0FBQTtJQUNULHdEQUFZLENBQUE7SUFDWixvREFBVSxDQUFBO0lBQ1YsOENBQU8sQ0FBQTtBQUNULENBQUMsRUEzRVcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUEyRW5CO0FBRUQsb0RBQW9EO0FBQ3BELFNBQWdCLG1CQUFtQixDQUFDLElBQWM7SUFDaEQsUUFBUSxJQUFJLEVBQUU7UUFDWixLQUFLLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDdEIsS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ25CLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQztRQUNuQixLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztLQUNsQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVJELGtEQVFDO0FBRUQsMENBQTBDO0FBQzFDLFNBQWdCLGNBQWMsQ0FBQyxJQUFjO0lBQzNDLFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ3pCLEtBQUssUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGtCQUFrQjtRQUMzQyxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbkIsS0FBSyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQzVCLEtBQUssUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUM1QixLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDN0IsS0FBSyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7S0FDbEM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFYRCx3Q0FXQztBQUVELGlFQUFpRTtBQUNqRSxTQUFnQixxQkFBcUIsQ0FBQyxJQUFjO0lBQ2xELFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ3pCLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDO0tBQzNDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBTkQsc0RBTUM7QUFFRCwrQkFBK0I7QUFDL0I7SUFBQTtJQTY2QkEsQ0FBQztJQXQ2QkMsUUFBUTtJQUVELG1CQUFjLEdBQXJCLFVBQ0UsSUFBMEIsRUFDMUIsS0FBWTtRQUVaLElBQUksUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDOUIsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDckIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVNLHlCQUFvQixHQUEzQixVQUNFLElBQVksRUFDWixLQUFZO1FBRVosT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVNLG9CQUFlLEdBQXRCLFVBQ0UsSUFBYyxFQUNkLGFBQWdDLEVBQ2hDLFVBQWdCLEVBQ2hCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLHVCQUFrQixHQUF6QixVQUNFLFVBQTJCLEVBQzNCLFVBQW9CLEVBQ3BCLGdCQUFzQyxFQUN0QyxVQUFnQixFQUNoQixLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxzQkFBaUIsR0FBeEIsVUFDRSxLQUFZO1FBRVosT0FBTyxJQUFJLENBQUMsZUFBZSxDQUN6QixJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUNwQyxJQUFJLEVBQ0osS0FBSyxFQUNMLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVNLHdCQUFtQixHQUExQixVQUNFLElBQTBCLEVBQzFCLFdBQWlDLEVBQ2pDLFdBQWlDLEVBQ2pDLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sb0JBQWUsR0FBdEIsVUFDRSxJQUEwQixFQUMxQixJQUFjLEVBQ2QsV0FBOEIsRUFDOUIsSUFBbUIsRUFDbkIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVTtJQUVILG9CQUFlLEdBQXRCLFVBQ0UsSUFBZ0IsRUFDaEIsSUFBeUIsRUFDekIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxrQkFBYSxHQUFwQixVQUNFLElBQVksRUFDWixJQUFpQixFQUNqQixLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxjQUFjO0lBRVAsK0JBQTBCLEdBQWpDLFVBQ0UsSUFBWSxFQUNaLEtBQVksRUFDWixRQUFzQjtRQUF0Qix5QkFBQSxFQUFBLGdCQUFzQjtRQUV0QixJQUFJLElBQUksR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyx5QkFBeUI7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sb0NBQStCLEdBQXRDLFVBQ0UsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGlDQUE0QixHQUFuQyxVQUNFLFFBQStCLEVBQy9CLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSw4QkFBeUIsR0FBaEMsVUFDRSxhQUE0QixFQUM1QixVQUFzQixFQUN0QixNQUF1QixFQUN2QixLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDJCQUFzQixHQUE3QixVQUNFLFFBQWUsRUFDZixJQUFnQixFQUNoQixLQUFpQixFQUNqQixLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLHlCQUFvQixHQUEzQixVQUNFLFVBQXNCLEVBQ3RCLFFBQTJCLEVBQzNCLElBQWtCLEVBQ2xCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDBCQUFxQixHQUE1QixVQUNFLFdBQTZCO1FBRTdCLElBQUksSUFBSSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDBCQUFxQixHQUE1QixVQUNFLFdBQXlCLEVBQ3pCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGdDQUEyQixHQUFsQyxVQUNFLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sa0NBQTZCLEdBQXBDLFVBQ0UsVUFBc0IsRUFDdEIsT0FBbUIsRUFDbkIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDBCQUFxQixHQUE1QixVQUNFLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGlDQUE0QixHQUFuQyxVQUNFLEtBQVUsRUFDVixLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDZCQUF3QixHQUEvQixVQUNFLFdBQWdDO1FBRWhDLElBQUksSUFBSSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sK0JBQTBCLEdBQWpDLFVBQ0UsVUFBc0IsRUFDdEIsTUFBZ0IsRUFDaEIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxtQ0FBOEIsR0FBckMsVUFDRSxLQUFVLEVBQ1YsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSx3QkFBbUIsR0FBMUIsVUFDRSxVQUFzQixFQUN0QixRQUEyQixFQUMzQixJQUFrQixFQUNsQixLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSx5QkFBb0IsR0FBM0IsVUFDRSxLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxrQ0FBNkIsR0FBcEMsVUFDRSxLQUE2QixFQUM3QixNQUFvQixFQUNwQixLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGtDQUE2QixHQUFwQyxVQUNFLFVBQXNCLEVBQ3RCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sbUNBQThCLEdBQXJDLFVBQ0UsVUFBc0IsRUFDdEIsUUFBOEIsRUFDOUIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxrQ0FBNkIsR0FBcEMsVUFDRSxPQUFlLEVBQ2YsS0FBYSxFQUNiLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sNEJBQXVCLEdBQTlCLFVBQ0UsU0FBcUIsRUFDckIsTUFBa0IsRUFDbEIsTUFBa0IsRUFDbEIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxrQ0FBNkIsR0FBcEMsVUFDRSxLQUFhLEVBQ2IsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSwwQkFBcUIsR0FBNUIsVUFDRSxLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSx5QkFBb0IsR0FBM0IsVUFDRSxLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSx5QkFBb0IsR0FBM0IsVUFDRSxLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxpQ0FBNEIsR0FBbkMsVUFDRSxRQUFlLEVBQ2YsT0FBbUIsRUFDbkIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxnQ0FBMkIsR0FBbEMsVUFDRSxRQUFlLEVBQ2YsT0FBbUIsRUFDbkIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxhQUFhO0lBRU4seUJBQW9CLEdBQTNCLFVBQ0UsVUFBdUIsRUFDdkIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0seUJBQW9CLEdBQTNCLFVBQ0UsS0FBa0MsRUFDbEMsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sMkJBQXNCLEdBQTdCLFVBQ0UsVUFBZ0MsRUFDaEMsY0FBMEMsRUFDMUMsV0FBaUMsRUFBRSxzQkFBc0I7SUFDekQsZUFBdUMsRUFBRSxxQkFBcUI7SUFDOUQsT0FBK0IsRUFDL0IsVUFBa0MsRUFDbEMsS0FBa0IsRUFDbEIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSw0QkFBdUIsR0FBOUIsVUFDRSxLQUFrQyxFQUNsQyxLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLHNCQUFpQixHQUF4QixVQUNFLFNBQW9CLEVBQ3BCLFNBQXFCLEVBQ3JCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLHlCQUFvQixHQUEzQixVQUNFLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDBCQUFxQixHQUE1QixVQUNFLElBQTBCLEVBQzFCLE9BQStCLEVBQy9CLFVBQWtDLEVBQ2xDLEtBQWtCLEVBQ2xCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLCtCQUEwQixHQUFqQyxVQUNFLElBQTBCLEVBQzFCLEtBQXdCLEVBQ3hCLEtBQWtCLEVBQ2xCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sMEJBQXFCLEdBQTVCLFVBQ0UsT0FBOEIsRUFDOUIsSUFBb0MsRUFDcEMsU0FBZSxFQUNmLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxjQUFjLEdBQUcsb0JBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFdBQVc7Z0JBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsa0JBQVcsQ0FDL0IsY0FBYyxFQUNkLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUM1QixDQUFDO2FBQ0g7aUJBQU0sRUFBRSxXQUFXO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyx1QkFBYyxDQUFDLEVBQUU7b0JBQzlDLGNBQWMsR0FBRyx1QkFBYyxHQUFHLGNBQWMsQ0FBQztpQkFDbEQ7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7YUFDdEM7WUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUM3RDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxpQ0FBNEIsR0FBbkMsVUFDRSxXQUFpQyxFQUNqQyxLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGdDQUEyQixHQUFsQyxVQUNFLElBQTBCLEVBQzFCLFlBQWtDLEVBQ2xDLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sdUJBQWtCLEdBQXpCLFVBQ0UsSUFBMEIsRUFDMUIsWUFBeUMsRUFDekMsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVk7WUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDhCQUF5QixHQUFoQyxVQUNFLFVBQXNCO1FBRXRCLElBQUksSUFBSSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sc0JBQWlCLEdBQXhCLFVBQ0UsU0FBcUIsRUFDckIsTUFBaUIsRUFDakIsT0FBeUIsRUFDekIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sMEJBQXFCLEdBQTVCLFVBQ0UsS0FBaUMsRUFDakMsSUFBNkIsRUFDN0IsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxjQUFjLEdBQUcsb0JBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLHNCQUFzQjtZQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLGtCQUFXLENBQy9CLGNBQWMsRUFDZCxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDNUIsQ0FBQztTQUNIO2FBQU0sRUFBRSxzQkFBc0I7WUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsdUJBQWMsQ0FBQyxFQUFFO2dCQUM5QyxjQUFjLEdBQUcsdUJBQWMsR0FBRyxjQUFjLENBQUM7YUFDbEQ7WUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLHNDQUFpQyxHQUF4QyxVQUNFLFVBQWdDLEVBQ2hDLElBQTZCLEVBQzdCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksY0FBYyxHQUFHLG9CQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxrQkFBVyxDQUMvQixjQUFjLEVBQ2QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQzVCLENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsdUJBQWMsQ0FBQyxFQUFFO2dCQUM5QyxjQUFjLEdBQUcsdUJBQWMsR0FBRyxjQUFjLENBQUM7YUFDbEQ7WUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDRCQUF1QixHQUE5QixVQUNFLFdBQWlDLEVBQ2pDLElBQWlDLEVBQ2pDLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUk7WUFBRSxJQUFJLEdBQUcsV0FBVyxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLCtCQUEwQixHQUFqQyxVQUNFLElBQTBCLEVBQzFCLGNBQTBDLEVBQzFDLFdBQWlDLEVBQUUsc0JBQXNCO0lBQ3pELE9BQStCLEVBQy9CLFVBQWtDLEVBQ2xDLEtBQWtCLEVBQ2xCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sMkJBQXNCLEdBQTdCLFVBQ0UsSUFBMEIsRUFDMUIsSUFBcUIsRUFDckIsV0FBOEIsRUFDOUIsVUFBa0MsRUFDbEMsS0FBa0IsRUFDbEIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSx1QkFBa0IsR0FBekIsVUFDRSxXQUE2QixFQUM3QixTQUE0QixFQUM1QixXQUE4QixFQUM5QixTQUFvQixFQUNwQixLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSw4QkFBeUIsR0FBaEMsVUFDRSxJQUEwQixFQUMxQixjQUEwQyxFQUMxQyxTQUEyQixFQUMzQixJQUFzQixFQUN0QixVQUFrQyxFQUNsQyxLQUFrQixFQUNsQixTQUFvQixFQUNwQixLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLG9DQUErQixHQUF0QyxVQUNFLE9BQXNCLEVBQ3RCLFNBQW1CLEVBQ25CLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sNEJBQXVCLEdBQTlCLFVBQ0UsSUFBMEIsRUFDMUIsY0FBMEMsRUFDMUMsU0FBMkIsRUFDM0IsSUFBc0IsRUFDdEIsVUFBa0MsRUFDbEMsS0FBa0IsRUFDbEIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSwrQkFBMEIsR0FBakMsVUFDRSxJQUEwQixFQUMxQixPQUFvQixFQUNwQixVQUFrQyxFQUNsQyxLQUFrQixFQUNsQixLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDBCQUFxQixHQUE1QixVQUNFLEtBQXdCLEVBQ3hCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDBCQUFxQixHQUE1QixVQUNFLFNBQXFCLEVBQ3JCLEtBQW1CLEVBQ25CLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLHFCQUFnQixHQUF2QixVQUNFLEtBQXdCLEVBQ3hCLFVBQXVCLEVBQ3ZCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLHlCQUFvQixHQUEzQixVQUNFLEtBQWlCLEVBQ2pCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLHVCQUFrQixHQUF6QixVQUNFLFVBQXVCLEVBQ3ZCLGFBQTBDLEVBQzFDLGVBQW1DLEVBQ25DLGlCQUFxQyxFQUNyQyxLQUFZO1FBRVosSUFBSSxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sMEJBQXFCLEdBQTVCLFVBQ0UsSUFBMEIsRUFDMUIsY0FBMEMsRUFDMUMsS0FBZSxFQUNmLFVBQWtDLEVBQ2xDLEtBQWtCLEVBQ2xCLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDRCQUF1QixHQUE5QixVQUNFLFlBQW1DLEVBQ25DLFVBQWtDLEVBQ2xDLEtBQVk7UUFFWixJQUFJLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sOEJBQXlCLEdBQWhDLFVBQ0UsSUFBMEIsRUFDMUIsSUFBcUIsRUFDckIsV0FBOEIsRUFDOUIsVUFBa0MsRUFDbEMsS0FBa0IsRUFDbEIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLFlBQVk7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sd0JBQW1CLEdBQTFCLFVBQ0UsVUFBc0IsRUFDdEIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0seUJBQW9CLEdBQTNCLFVBQ0UsU0FBcUIsRUFDckIsU0FBb0IsRUFDcEIsS0FBWTtRQUVaLElBQUksSUFBSSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0gsV0FBQztBQUFELENBQUMsQUE3NkJELElBNjZCQztBQTc2QnFCLG9CQUFJO0FBKzZCMUIsUUFBUTtBQUVSO0lBQXVDLDRCQUFJO0lBQTNDOztJQUtBLENBQUM7SUFBRCxlQUFDO0FBQUQsQ0FBQyxBQUxELENBQXVDLElBQUksR0FLMUM7QUFMcUIsNEJBQVE7QUFPOUIsOEJBQThCO0FBQzlCO0lBQThCLDRCQUFJO0lBQWxDO1FBQUEscUVBT0M7UUFOQyxVQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQzs7SUFNM0IsQ0FBQztJQUFELGVBQUM7QUFBRCxDQUFDLEFBUEQsQ0FBOEIsSUFBSSxHQU9qQztBQVBZLDRCQUFRO0FBU3JCLCtCQUErQjtBQUMvQjtJQUFtQyxpQ0FBUTtJQUEzQztRQUFBLHFFQU9DO1FBTkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7O0lBTTVCLENBQUM7SUFBRCxvQkFBQztBQUFELENBQUMsQUFQRCxDQUFtQyxRQUFRLEdBTzFDO0FBUFksc0NBQWE7QUFTMUIsa0NBQWtDO0FBQ2xDO0lBQXNDLG9DQUFRO0lBQTlDO1FBQUEscUVBU0M7UUFSQyxVQUFJLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQzs7SUFRL0IsQ0FBQztJQUFELHVCQUFDO0FBQUQsQ0FBQyxBQVRELENBQXNDLFFBQVEsR0FTN0M7QUFUWSw0Q0FBZ0I7QUFXN0IsbUNBQW1DO0FBQ25DO0lBQXVDLHFDQUFJO0lBQTNDO1FBQUEscUVBU0M7UUFSQyxVQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQzs7SUFRaEMsQ0FBQztJQUFELHdCQUFDO0FBQUQsQ0FBQyxBQVRELENBQXVDLElBQUksR0FTMUM7QUFUWSw4Q0FBaUI7QUFXOUIsMENBQTBDO0FBQzFDLElBQVksYUFPWDtBQVBELFdBQVksYUFBYTtJQUN2Qix5QkFBeUI7SUFDekIsdURBQU8sQ0FBQTtJQUNQLGdDQUFnQztJQUNoQyx5REFBUSxDQUFBO0lBQ1IsMkJBQTJCO0lBQzNCLGlEQUFJLENBQUE7QUFDTixDQUFDLEVBUFcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFPeEI7QUFFRCx1Q0FBdUM7QUFDdkM7SUFBbUMsaUNBQUk7SUFBdkM7UUFBQSxxRUFzQkM7UUFyQkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFVMUIsaURBQWlEO1FBQ2pELDhCQUF3QixHQUE0QixJQUFJLENBQUM7UUFDekQsK0NBQStDO1FBQy9DLFdBQUssR0FBZ0Isb0JBQVcsQ0FBQyxJQUFJLENBQUM7O0lBUXhDLENBQUM7SUFOQywwREFBMEQ7SUFDMUQsMEJBQUUsR0FBRixVQUFHLElBQWlCLElBQVUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSx5REFBeUQ7SUFDekQsNkJBQUssR0FBTCxVQUFNLElBQWlCLElBQVUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxxQ0FBcUM7SUFDckMsMkJBQUcsR0FBSCxVQUFJLElBQWlCLElBQVUsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RELG9CQUFDO0FBQUQsQ0FBQyxBQXRCRCxDQUFtQyxJQUFJLEdBc0J0QztBQXRCWSxzQ0FBYTtBQXdCMUIsVUFBVTtBQUVWLGdDQUFnQztBQUNoQyxJQUFZLGFBY1g7QUFkRCxXQUFZLGFBQWE7SUFDdkIscURBQU0sQ0FBQTtJQUNOLHFEQUFNLENBQUE7SUFDTix5REFBUSxDQUFBO0lBQ1IsdUVBQWUsQ0FBQTtJQUNmLHVFQUFlLENBQUE7SUFDZix5RUFBZ0IsQ0FBQTtJQUNoQiwyREFBUyxDQUFBO0lBQ1QscURBQU0sQ0FBQTtJQUNOLHFEQUFNLENBQUE7SUFDTix5REFBUSxDQUFBO0lBQ1Isd0RBQU8sQ0FBQTtJQUNQLGtEQUFJLENBQUE7SUFDSixzREFBTSxDQUFBO0FBQ1IsQ0FBQyxFQWRXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBY3hCO0FBRUQsNkZBQTZGO0FBQzdGLFNBQWdCLG1CQUFtQixDQUFDLElBQWdCO0lBQ2xELG1EQUFtRDtJQUNuRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTtRQUNwQyxJQUFJLE9BQU8sR0FBMEIsSUFBSyxDQUFDLElBQUksQ0FBQztRQUNoRCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZCLFFBQVEsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3QixlQUFlLENBQUMsQ0FBQztnQkFDZixJQUFJLE9BQU8sSUFBSSxTQUFTO29CQUFFLE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQztnQkFDdkQsTUFBTTthQUNQO1lBQ0QsZ0JBQWUsQ0FBQyxDQUFDO2dCQUNmLElBQUksT0FBTyxJQUFJLFVBQVU7b0JBQUUsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDO2dCQUN6RCxNQUFNO2FBQ1A7WUFDRCxnQkFBZSxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxPQUFPLElBQUksUUFBUTtvQkFBRSxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3JELE1BQU07YUFDUDtZQUNELGdCQUFlLENBQUMsQ0FBQztnQkFDZixJQUFJLE9BQU8sSUFBSSxRQUFRO29CQUFFLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDckQsTUFBTTthQUNQO1lBQ0QsZ0JBQWUsQ0FBQyxDQUFDO2dCQUNmLElBQUksT0FBTyxJQUFJLE1BQU07b0JBQUUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUNqRCxNQUFNO2FBQ1A7WUFDRCxnQkFBZSxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxPQUFPLElBQUksVUFBVTtvQkFBRSxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQ3pELE1BQU07YUFDUDtZQUNELGdCQUFlLENBQUMsQ0FBQztnQkFDZixJQUFJLE9BQU8sSUFBSSxRQUFRO29CQUFFLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDckQsTUFBTTthQUNQO1lBQ0QsZ0JBQWUsQ0FBQyxDQUFDO2dCQUNmLElBQUksT0FBTyxJQUFJLFdBQVc7b0JBQUUsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDO2dCQUMzRCxJQUFJLE9BQU8sSUFBSSxRQUFRO29CQUFFLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDckQsTUFBTTthQUNQO1NBQ0Y7S0FDRjtTQUFNLElBQ0wsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsY0FBYztRQUNULElBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQ3ZFO1FBQ0EsSUFBSSxPQUFPLEdBQXFELElBQUssQ0FBQyxVQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3ZGLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsSUFBSSxPQUFPLEdBQThCLElBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzdELE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsd0RBQXdEO1FBQ3hELElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRTtZQUN6QixRQUFRLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdCLGVBQWUsQ0FBQyxDQUFDO29CQUNmLElBQUksT0FBTyxJQUFJLFFBQVE7d0JBQUUsT0FBTyxhQUFhLENBQUMsZUFBZSxDQUFDO29CQUM5RCxNQUFNO2lCQUNQO2dCQUNELGdCQUFlLENBQUMsQ0FBQztvQkFDZixRQUFRLE9BQU8sRUFBRTt3QkFDZixLQUFLLFFBQVEsQ0FBQyxDQUFDLE9BQU8sYUFBYSxDQUFDLGVBQWUsQ0FBQzt3QkFDcEQsS0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztxQkFDdkQ7b0JBQ0QsTUFBTTtpQkFDUDthQUNGO1NBQ0Y7S0FDRjtJQUNELE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQztBQUM5QixDQUFDO0FBbEVELGtEQWtFQztBQUVELDhCQUE4QjtBQUM5QjtJQUFtQyxpQ0FBSTtJQUF2QztRQUFBLHFFQVNDO1FBUkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7O0lBUTVCLENBQUM7SUFBRCxvQkFBQztBQUFELENBQUMsQUFURCxDQUFtQyxJQUFJLEdBU3RDO0FBVFksc0NBQWE7QUFXMUIscUJBQXFCO0FBQ3JCLElBQVksV0FPWDtBQVBELFdBQVksV0FBVztJQUNyQixvQkFBb0I7SUFDcEIsNkNBQUksQ0FBQTtJQUNKLDRCQUE0QjtJQUM1QixpREFBTSxDQUFBO0lBQ04scUJBQXFCO0lBQ3JCLCtDQUFLLENBQUE7QUFDUCxDQUFDLEVBUFcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUFPdEI7QUFFRCw0QkFBNEI7QUFDNUI7SUFBaUMsK0JBQUk7SUFBckM7UUFBQSxxRUFPQztRQU5DLFVBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDOztJQU0xQixDQUFDO0lBQUQsa0JBQUM7QUFBRCxDQUFDLEFBUEQsQ0FBaUMsSUFBSSxHQU9wQztBQVBZLGtDQUFXO0FBU3hCLGNBQWM7QUFFZCwwQ0FBMEM7QUFDMUM7SUFBeUMsOEJBQUk7SUFBN0M7O0lBQWdELENBQUM7SUFBRCxpQkFBQztBQUFELENBQUMsQUFBakQsQ0FBeUMsSUFBSSxHQUFJO0FBQTNCLGdDQUFVO0FBRWhDLDJDQUEyQztBQUMzQztJQUEwQyx3Q0FBVTtJQUFwRDtRQUFBLHFFQVNDO1FBUkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7O0lBUTdCLENBQUM7SUFBRCwyQkFBQztBQUFELENBQUMsQUFURCxDQUEwQyxVQUFVLEdBU25EO0FBVFksb0RBQW9CO0FBV2pDLHVDQUF1QztBQUN2QyxJQUFZLFdBT1g7QUFQRCxXQUFZLFdBQVc7SUFDckIsK0NBQUssQ0FBQTtJQUNMLG1EQUFPLENBQUE7SUFDUCxpREFBTSxDQUFBO0lBQ04saURBQU0sQ0FBQTtJQUNOLCtDQUFLLENBQUE7SUFDTCxpREFBTSxDQUFBO0FBQ1IsQ0FBQyxFQVBXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBT3RCO0FBRUQsNkNBQTZDO0FBQzdDO0lBQWdELHFDQUFVO0lBQTFEO1FBQUEscUVBS0M7UUFKQyxVQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQzs7SUFJMUIsQ0FBQztJQUFELHdCQUFDO0FBQUQsQ0FBQyxBQUxELENBQWdELFVBQVUsR0FLekQ7QUFMcUIsOENBQWlCO0FBT3ZDLDZDQUE2QztBQUM3QztJQUE0QywwQ0FBaUI7SUFBN0Q7UUFBQSxxRUFLQztRQUpDLGlCQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQzs7SUFJbEMsQ0FBQztJQUFELDZCQUFDO0FBQUQsQ0FBQyxBQUxELENBQTRDLGlCQUFpQixHQUs1RDtBQUxZLHdEQUFzQjtBQU9uQywwQ0FBMEM7QUFDMUMsSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLHFEQUFNLENBQUE7SUFDTiw2Q0FBRSxDQUFBO0lBQ0YsdURBQU8sQ0FBQTtBQUNULENBQUMsRUFKVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQUl4QjtBQUVELDBDQUEwQztBQUMxQztJQUF5Qyx1Q0FBVTtJQUFuRDtRQUFBLHFFQVNDO1FBUkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7O0lBUTVCLENBQUM7SUFBRCwwQkFBQztBQUFELENBQUMsQUFURCxDQUF5QyxVQUFVLEdBU2xEO0FBVFksa0RBQW1CO0FBV2hDLHNDQUFzQztBQUN0QztJQUFzQyxvQ0FBVTtJQUFoRDtRQUFBLHFFQVNDO1FBUkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7O0lBUXpCLENBQUM7SUFBRCx1QkFBQztBQUFELENBQUMsQUFURCxDQUFzQyxVQUFVLEdBUy9DO0FBVFksNENBQWdCO0FBVzdCLG9DQUFvQztBQUNwQztJQUFvQyxrQ0FBVTtJQUE5QztRQUFBLHFFQTZCQztRQTVCQyxVQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQzs7SUE0QnZCLENBQUM7SUFsQkMsc0JBQUksOENBQWtCO1FBRHRCLG1EQUFtRDthQUNuRDtZQUNFLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdkMsSUFBSSxnQkFBcUIsQ0FBQztZQUMxQixJQUFJLGFBQWEsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDOUQsT0FBTyxpQkFBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0RjtZQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDL0IsQ0FBQzs7O09BQUE7SUFHRCxzQkFBSSwwQ0FBYztRQURsQiw4Q0FBOEM7YUFDOUM7WUFDRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzFCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLE9BQU8saUJBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2hFO1lBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUMvQixDQUFDOzs7T0FBQTtJQUNILHFCQUFDO0FBQUQsQ0FBQyxBQTdCRCxDQUFvQyxVQUFVLEdBNkI3QztBQTdCWSx3Q0FBYztBQStCM0IsK0RBQStEO0FBQy9EO0lBQXFDLG1DQUFVO0lBQS9DO1FBQUEscUVBS0M7UUFKQyxVQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQzs7SUFJeEIsQ0FBQztJQUFELHNCQUFDO0FBQUQsQ0FBQyxBQUxELENBQXFDLFVBQVUsR0FLOUM7QUFMWSwwQ0FBZTtBQU81QixzRUFBc0U7QUFDdEU7SUFBcUMsbUNBQVU7SUFBL0M7UUFBQSxxRUFLQztRQUpDLFVBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDOztJQUl4QixDQUFDO0lBQUQsc0JBQUM7QUFBRCxDQUFDLEFBTEQsQ0FBcUMsVUFBVSxHQUs5QztBQUxZLDBDQUFlO0FBTzVCLDZDQUE2QztBQUM3QztJQUEyQyx5Q0FBb0I7SUFBL0Q7UUFBQSxxRUFJQztRQUhDLFVBQUksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzVCLFVBQUksR0FBRyxhQUFhLENBQUM7UUFDckIsWUFBTSxHQUFHLHNCQUFhLENBQUMsV0FBVyxDQUFDOztJQUNyQyxDQUFDO0lBQUQsNEJBQUM7QUFBRCxDQUFDLEFBSkQsQ0FBMkMsb0JBQW9CLEdBSTlEO0FBSlksc0RBQXFCO0FBTWxDLG1FQUFtRTtBQUNuRTtJQUE2QywyQ0FBVTtJQUF2RDtRQUFBLHFFQU9DO1FBTkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7O0lBTWhDLENBQUM7SUFBRCw4QkFBQztBQUFELENBQUMsQUFQRCxDQUE2QyxVQUFVLEdBT3REO0FBUFksMERBQXVCO0FBU3BDLDZDQUE2QztBQUM3QztJQUE0QywwQ0FBaUI7SUFBN0Q7UUFBQSxxRUFLQztRQUpDLGlCQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQzs7SUFJbEMsQ0FBQztJQUFELDZCQUFDO0FBQUQsQ0FBQyxBQUxELENBQTRDLGlCQUFpQixHQUs1RDtBQUxZLHdEQUFzQjtBQU9uQyxxRUFBcUU7QUFDckU7SUFBd0Msc0NBQVU7SUFBbEQ7UUFBQSxxRUFLQztRQUpDLFVBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDOztJQUkzQixDQUFDO0lBQUQseUJBQUM7QUFBRCxDQUFDLEFBTEQsQ0FBd0MsVUFBVSxHQUtqRDtBQUxZLGdEQUFrQjtBQU8vQiw2Q0FBNkM7QUFDN0M7SUFBMEMsd0NBQVU7SUFBcEQ7UUFBQSxxRUFPQztRQU5DLFVBQUksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDOztJQU03QixDQUFDO0lBQUQsMkJBQUM7QUFBRCxDQUFDLEFBUEQsQ0FBMEMsVUFBVSxHQU9uRDtBQVBZLG9EQUFvQjtBQVNqQyxnREFBZ0Q7QUFDaEQ7SUFBOEMsNENBQWlCO0lBQS9EO1FBQUEscUVBS0M7UUFKQyxpQkFBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7O0lBSXBDLENBQUM7SUFBRCwrQkFBQztBQUFELENBQUMsQUFMRCxDQUE4QyxpQkFBaUIsR0FLOUQ7QUFMWSw0REFBd0I7QUFPckMsd0VBQXdFO0FBQ3hFO0lBQW1DLGlDQUFjO0lBQWpEO1FBQUEscUVBRUM7UUFEQyxVQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQzs7SUFDdEIsQ0FBQztJQUFELG9CQUFDO0FBQUQsQ0FBQyxBQUZELENBQW1DLGNBQWMsR0FFaEQ7QUFGWSxzQ0FBYTtBQUkxQixzQ0FBc0M7QUFDdEM7SUFBb0Msa0NBQW9CO0lBQXhEO1FBQUEscUVBSUM7UUFIQyxVQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNyQixVQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2QsWUFBTSxHQUFHLHNCQUFhLENBQUMsS0FBSyxDQUFDOztJQUMvQixDQUFDO0lBQUQscUJBQUM7QUFBRCxDQUFDLEFBSkQsQ0FBb0Msb0JBQW9CLEdBSXZEO0FBSlksd0NBQWM7QUFNM0IsK0NBQStDO0FBQy9DO0lBQTZDLDJDQUFpQjtJQUE5RDtRQUFBLHFFQU9DO1FBTkMsaUJBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDOztJQU1uQyxDQUFDO0lBQUQsOEJBQUM7QUFBRCxDQUFDLEFBUEQsQ0FBNkMsaUJBQWlCLEdBTzdEO0FBUFksMERBQXVCO0FBU3BDLDZDQUE2QztBQUM3QztJQUE2QywyQ0FBVTtJQUF2RDtRQUFBLHFFQUtDO1FBSkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7O0lBSWhDLENBQUM7SUFBRCw4QkFBQztBQUFELENBQUMsQUFMRCxDQUE2QyxVQUFVLEdBS3REO0FBTFksMERBQXVCO0FBT3BDLCtDQUErQztBQUMvQztJQUE4Qyw0Q0FBVTtJQUF4RDtRQUFBLHFFQU9DO1FBTkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7O0lBTWpDLENBQUM7SUFBRCwrQkFBQztBQUFELENBQUMsQUFQRCxDQUE4QyxVQUFVLEdBT3ZEO0FBUFksNERBQXdCO0FBU3JDLDBEQUEwRDtBQUMxRDtJQUE2QywyQ0FBaUI7SUFBOUQ7UUFBQSxxRUFPQztRQU5DLGlCQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQzs7SUFNbkMsQ0FBQztJQUFELDhCQUFDO0FBQUQsQ0FBQyxBQVBELENBQTZDLGlCQUFpQixHQU83RDtBQVBZLDBEQUF1QjtBQVNwQyxnRUFBZ0U7QUFDaEU7SUFBdUMscUNBQVU7SUFBakQ7UUFBQSxxRUFTQztRQVJDLFVBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDOztJQVExQixDQUFDO0lBQUQsd0JBQUM7QUFBRCxDQUFDLEFBVEQsQ0FBdUMsVUFBVSxHQVNoRDtBQVRZLDhDQUFpQjtBQVc5Qiw4Q0FBOEM7QUFDOUM7SUFBNkMsMkNBQWlCO0lBQTlEO1FBQUEscUVBS0M7UUFKQyxpQkFBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7O0lBSW5DLENBQUM7SUFBRCw4QkFBQztBQUFELENBQUMsQUFMRCxDQUE2QyxpQkFBaUIsR0FLN0Q7QUFMWSwwREFBdUI7QUFPcEMsdUNBQXVDO0FBQ3ZDO0lBQXFDLG1DQUFvQjtJQUF6RDtRQUFBLHFFQUlDO1FBSEMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDdEIsVUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNmLFlBQU0sR0FBRyxzQkFBYSxDQUFDLE1BQU0sQ0FBQzs7SUFDaEMsQ0FBQztJQUFELHNCQUFDO0FBQUQsQ0FBQyxBQUpELENBQXFDLG9CQUFvQixHQUl4RDtBQUpZLDBDQUFlO0FBTTVCLHNDQUFzQztBQUN0QztJQUFvQyxrQ0FBb0I7SUFBeEQ7UUFBQSxxRUFJQztRQUhDLFVBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3JCLFVBQUksR0FBRyxNQUFNLENBQUM7UUFDZCxZQUFNLEdBQUcsc0JBQWEsQ0FBQyxLQUFLLENBQUM7O0lBQy9CLENBQUM7SUFBRCxxQkFBQztBQUFELENBQUMsQUFKRCxDQUFvQyxvQkFBb0IsR0FJdkQ7QUFKWSx3Q0FBYztBQU0zQixzQ0FBc0M7QUFDdEM7SUFBb0Msa0NBQW9CO0lBQXhEO1FBQUEscUVBSUM7UUFIQyxVQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNyQixVQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2QsWUFBTSxHQUFHLHNCQUFhLENBQUMsS0FBSyxDQUFDOztJQUMvQixDQUFDO0lBQUQscUJBQUM7QUFBRCxDQUFDLEFBSkQsQ0FBb0Msb0JBQW9CLEdBSXZEO0FBSlksd0NBQWM7QUFNM0IsdUNBQXVDO0FBQ3ZDO0lBQXFDLG1DQUFvQjtJQUF6RDtRQUFBLHFFQUlDO1FBSEMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDdEIsVUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNmLFlBQU0sR0FBRyxzQkFBYSxDQUFDLE1BQU0sQ0FBQzs7SUFDaEMsQ0FBQztJQUFELHNCQUFDO0FBQUQsQ0FBQyxBQUpELENBQXFDLG9CQUFvQixHQUl4RDtBQUpZLDBDQUFlO0FBTTVCLDJDQUEyQztBQUMzQztJQUE4QyxtQ0FBVTtJQUF4RDs7SUFNQSxDQUFDO0lBQUQsc0JBQUM7QUFBRCxDQUFDLEFBTkQsQ0FBOEMsVUFBVSxHQU12RDtBQU5xQiwwQ0FBZTtBQVFyQyx1RUFBdUU7QUFDdkU7SUFBNEMsMENBQWU7SUFBM0Q7UUFBQSxxRUFFQztRQURDLFVBQUksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDOztJQUMvQixDQUFDO0lBQUQsNkJBQUM7QUFBRCxDQUFDLEFBRkQsQ0FBNEMsZUFBZSxHQUUxRDtBQUZZLHdEQUFzQjtBQUluQyw2REFBNkQ7QUFDN0Q7SUFBMkMseUNBQWU7SUFBMUQ7UUFBQSxxRUFFQztRQURDLFVBQUksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDOztJQUM5QixDQUFDO0lBQUQsNEJBQUM7QUFBRCxDQUFDLEFBRkQsQ0FBMkMsZUFBZSxHQUV6RDtBQUZZLHNEQUFxQjtBQUlsQyxhQUFhO0FBRWIseUNBQXlDO0FBQ3pDO0lBQXdDLDZCQUFJO0lBQTVDOztJQUErQyxDQUFDO0lBQUQsZ0JBQUM7QUFBRCxDQUFDLEFBQWhELENBQXdDLElBQUksR0FBSTtBQUExQiw4QkFBUztBQUUvQiwrQ0FBK0M7QUFDL0MsSUFBWSxVQVNYO0FBVEQsV0FBWSxVQUFVO0lBQ3BCLDBCQUEwQjtJQUMxQiwyQ0FBUSxDQUFBO0lBQ1IsZ0NBQWdDO0lBQ2hDLHVEQUFjLENBQUE7SUFDZCw2QkFBNkI7SUFDN0IsaURBQVcsQ0FBQTtJQUNYLG1DQUFtQztJQUNuQyw2REFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVFcsVUFBVSxHQUFWLGtCQUFVLEtBQVYsa0JBQVUsUUFTckI7QUFFRCwrQkFBK0I7QUFDL0I7SUFBNEIsMEJBQUk7SUF1QjlCLG9DQUFvQztJQUNwQyxnQkFBWSxjQUFzQixFQUFFLElBQVksRUFBRSxJQUFnQjtRQUFsRSxZQUNFLGlCQUFPLFNBVVI7UUFsQ0QsVUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDdkIsWUFBTSxHQUFHLElBQUksQ0FBQztRQWNkLDJCQUEyQjtRQUMzQixlQUFTLEdBQXFCLElBQUksQ0FBQztRQUNuQyx3QkFBd0I7UUFDeEIsb0JBQWMsR0FBUSxDQUFDLENBQUMsQ0FBQztRQUN6QiwyQkFBMkI7UUFDM0IsaUJBQVcsR0FBdUIsSUFBSSxDQUFDO1FBS3JDLEtBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLEtBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksWUFBWSxHQUFHLGtCQUFrQixDQUFDLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRCxLQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLHVCQUFjLENBQUMsQ0FBQztRQUNuRCxLQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDNUUsS0FBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzlCLEtBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxpQkFBSyxDQUFDLEtBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLEtBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDOztJQUNuQixDQUFDO0lBRUQsc0JBQUksNkJBQVM7YUFBYjtZQUNFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDM0IsT0FBTyxJQUFJLElBQUksVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUN4RSxDQUFDOzs7T0FBQTtJQUNILGFBQUM7QUFBRCxDQUFDLEFBekNELENBQTRCLElBQUksR0F5Qy9CO0FBekNZLHdCQUFNO0FBMkNuQixnREFBZ0Q7QUFDaEQ7SUFBbUQsd0NBQVM7SUFBNUQ7UUFBQSxxRUFjQztRQVhDLDJCQUEyQjtRQUMzQixnQkFBVSxHQUEyQixJQUFJLENBQUM7UUFDMUMsK0NBQStDO1FBQy9DLFdBQUssR0FBZ0Isb0JBQVcsQ0FBQyxJQUFJLENBQUM7O0lBUXhDLENBQUM7SUFOQywwREFBMEQ7SUFDMUQsaUNBQUUsR0FBRixVQUFHLElBQWlCLElBQVUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSx5REFBeUQ7SUFDekQsb0NBQUssR0FBTCxVQUFNLElBQWlCLElBQVUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxxQ0FBcUM7SUFDckMsa0NBQUcsR0FBSCxVQUFJLElBQWlCLElBQVUsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RELDJCQUFDO0FBQUQsQ0FBQyxBQWRELENBQW1ELFNBQVMsR0FjM0Q7QUFkcUIsb0RBQW9CO0FBZ0IxQyxpREFBaUQ7QUFDakQ7SUFBK0MsNkNBQW9CO0lBQW5FO1FBQUEscUVBT0M7UUFOQyxVQUFJLEdBQUcsUUFBUSxDQUFDLHlCQUF5QixDQUFDOztJQU01QyxDQUFDO0lBQUQsZ0NBQUM7QUFBRCxDQUFDLEFBUEQsQ0FBK0Msb0JBQW9CLEdBT2xFO0FBUFksOERBQXlCO0FBU3RDLDhEQUE4RDtBQUM5RDtJQUErRCxvREFBb0I7SUFBbkY7O0lBTUEsQ0FBQztJQUFELHVDQUFDO0FBQUQsQ0FBQyxBQU5ELENBQStELG9CQUFvQixHQU1sRjtBQU5xQiw0RUFBZ0M7QUFRdEQsb0NBQW9DO0FBQ3BDO0lBQW9DLGtDQUFTO0lBQTdDO1FBQUEscUVBS0M7UUFKQyxVQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQzs7SUFJeEIsQ0FBQztJQUFELHFCQUFDO0FBQUQsQ0FBQyxBQUxELENBQW9DLFNBQVMsR0FLNUM7QUFMWSx3Q0FBYztBQU8zQixzQ0FBc0M7QUFDdEM7SUFBb0Msa0NBQVM7SUFBN0M7UUFBQSxxRUFLQztRQUpDLFVBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDOztJQUl4QixDQUFDO0lBQUQscUJBQUM7QUFBRCxDQUFDLEFBTEQsQ0FBb0MsU0FBUyxHQUs1QztBQUxZLHdDQUFjO0FBTzNCLHdDQUF3QztBQUN4QztJQUFzQyxvQ0FBb0I7SUFBMUQ7UUFBQSxxRUFnQkM7UUFmQyxVQUFJLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDOztJQWVuQyxDQUFDO0lBSkMsc0JBQUksdUNBQVM7YUFBYjtZQUNFLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDekMsT0FBTyxjQUFjLElBQUksSUFBSSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzdELENBQUM7OztPQUFBO0lBQ0gsdUJBQUM7QUFBRCxDQUFDLEFBaEJELENBQXNDLG9CQUFvQixHQWdCekQ7QUFoQlksNENBQWdCO0FBa0I3Qix5Q0FBeUM7QUFDekM7SUFBdUMscUNBQVM7SUFBaEQ7UUFBQSxxRUFLQztRQUpDLFVBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDOztJQUkzQixDQUFDO0lBQUQsd0JBQUM7QUFBRCxDQUFDLEFBTEQsQ0FBdUMsU0FBUyxHQUsvQztBQUxZLDhDQUFpQjtBQU85QixtQ0FBbUM7QUFDbkM7SUFBaUMsK0JBQVM7SUFBMUM7UUFBQSxxRUFPQztRQU5DLFVBQUksR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDOztJQU1yQixDQUFDO0lBQUQsa0JBQUM7QUFBRCxDQUFDLEFBUEQsQ0FBaUMsU0FBUyxHQU96QztBQVBZLGtDQUFXO0FBU3hCLDRFQUE0RTtBQUM1RTtJQUFvQyxrQ0FBUztJQUE3QztRQUFBLHFFQUVDO1FBREMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7O0lBQ3hCLENBQUM7SUFBRCxxQkFBQztBQUFELENBQUMsQUFGRCxDQUFvQyxTQUFTLEdBRTVDO0FBRlksd0NBQWM7QUFJM0Isd0NBQXdDO0FBQ3hDO0lBQXFDLG1DQUFvQjtJQUF6RDtRQUFBLHFFQUtDO1FBSkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7O0lBSWxDLENBQUM7SUFBRCxzQkFBQztBQUFELENBQUMsQUFMRCxDQUFxQyxvQkFBb0IsR0FLeEQ7QUFMWSwwQ0FBZTtBQU81QixtREFBbUQ7QUFDbkQ7SUFBMEMsd0NBQWdDO0lBQTFFO1FBQUEscUVBTUM7UUFMQyxVQUFJLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDOztJQUt2QyxDQUFDO0lBQUQsMkJBQUM7QUFBRCxDQUFDLEFBTkQsQ0FBMEMsZ0NBQWdDLEdBTXpFO0FBTlksb0RBQW9CO0FBUWpDLCtEQUErRDtBQUMvRDtJQUEyQyx5Q0FBSTtJQUEvQztRQUFBLHFFQU9DO1FBTkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7O0lBTS9CLENBQUM7SUFBRCw0QkFBQztBQUFELENBQUMsQUFQRCxDQUEyQyxJQUFJLEdBTzlDO0FBUFksc0RBQXFCO0FBU2xDLG9EQUFvRDtBQUNwRDtJQUFrQyxnQ0FBSTtJQUF0QztRQUFBLHFFQU9DO1FBTkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7O0lBTS9CLENBQUM7SUFBRCxtQkFBQztBQUFELENBQUMsQUFQRCxDQUFrQyxJQUFJLEdBT3JDO0FBUFksb0NBQVk7QUFTekIsd0NBQXdDO0FBQ3hDO0lBQXFDLG1DQUFTO0lBQTlDO1FBQUEscUVBYUM7UUFaQyxVQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQzs7SUFZekIsQ0FBQztJQUFELHNCQUFDO0FBQUQsQ0FBQyxBQWJELENBQXFDLFNBQVMsR0FhN0M7QUFiWSwwQ0FBZTtBQWU1QixnREFBZ0Q7QUFDaEQ7SUFBNEMsMENBQVM7SUFBckQ7UUFBQSxxRUFLQztRQUpDLFVBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDOztJQUloQyxDQUFDO0lBQUQsNkJBQUM7QUFBRCxDQUFDLEFBTEQsQ0FBNEMsU0FBUyxHQUtwRDtBQUxZLHdEQUFzQjtBQU9uQyw0REFBNEQ7QUFDNUQ7SUFBeUMsdUNBQVM7SUFBbEQ7UUFBQSxxRUFLQztRQUpDLFVBQUksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDOztJQUk3QixDQUFDO0lBQUQsMEJBQUM7QUFBRCxDQUFDLEFBTEQsQ0FBeUMsU0FBUyxHQUtqRDtBQUxZLGtEQUFtQjtBQU9oQyx1REFBdUQ7QUFDdkQ7SUFBc0Msb0NBQWdDO0lBQXRFO1FBQUEscUVBS0M7UUFKQyxVQUFJLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1FBRWpDLDhFQUE4RTtRQUM5RSxvQkFBYyxHQUFRLENBQUMsQ0FBQyxDQUFDOztJQUMzQixDQUFDO0lBQUQsdUJBQUM7QUFBRCxDQUFDLEFBTEQsQ0FBc0MsZ0NBQWdDLEdBS3JFO0FBTFksNENBQWdCO0FBTzdCLG9DQUFvQztBQUNwQztJQUFrQyxnQ0FBUztJQUEzQztRQUFBLHFFQWNDO1FBYkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7O0lBYXRCLENBQUM7SUFBRCxtQkFBQztBQUFELENBQUMsQUFkRCxDQUFrQyxTQUFTLEdBYzFDO0FBZFksb0NBQVk7QUFnQnpCLCtDQUErQztBQUMvQyxJQUFrQixTQU9qQjtBQVBELFdBQWtCLFNBQVM7SUFDekIsNkJBQTZCO0lBQzdCLHlDQUFJLENBQUE7SUFDSixvQ0FBb0M7SUFDcEMsdUVBQW1CLENBQUE7SUFDbkIsNENBQTRDO0lBQzVDLHlEQUFZLENBQUE7QUFDZCxDQUFDLEVBUGlCLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBTzFCO0FBRUQsMkNBQTJDO0FBQzNDO0lBQXlDLHVDQUFvQjtJQUE3RDtRQUFBLHFFQThCQztRQTdCQyxVQUFJLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixDQUFDOztJQTZCdEMsQ0FBQztJQWxCQyxzQkFBSSwwQ0FBUzthQUFiO1lBQ0UsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUN6QyxPQUFPLGNBQWMsSUFBSSxJQUFJLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQzs7O09BQUE7SUFFRCx3Q0FBd0M7SUFDeEMsbUNBQUssR0FBTDtRQUNFLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUNuQyxJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsS0FBSyxDQUNYLENBQUM7SUFDSixDQUFDO0lBQ0gsMEJBQUM7QUFBRCxDQUFDLEFBOUJELENBQXlDLG9CQUFvQixHQThCNUQ7QUE5Qlksa0RBQW1CO0FBZ0NoQyxvQ0FBb0M7QUFDcEM7SUFBaUMsK0JBQVM7SUFBMUM7UUFBQSxxRUFTQztRQVJDLFVBQUksR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDOztJQVFyQixDQUFDO0lBQUQsa0JBQUM7QUFBRCxDQUFDLEFBVEQsQ0FBaUMsU0FBUyxHQVN6QztBQVRZLGtDQUFXO0FBV3hCLDZFQUE2RTtBQUM3RTtJQUF1QyxxQ0FBb0I7SUFBM0Q7UUFBQSxxRUFLQztRQUpDLFVBQUksR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7O0lBSXBDLENBQUM7SUFBRCx3QkFBQztBQUFELENBQUMsQUFMRCxDQUF1QyxvQkFBb0IsR0FLMUQ7QUFMWSw4Q0FBaUI7QUFPOUIsd0NBQXdDO0FBQ3hDO0lBQXFDLG1DQUFTO0lBQTlDO1FBQUEscUVBYUM7UUFaQyxVQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQzs7SUFZekIsQ0FBQztJQUFELHNCQUFDO0FBQUQsQ0FBQyxBQWJELENBQXFDLFNBQVMsR0FhN0M7QUFiWSwwQ0FBZTtBQWU1Qiw4Q0FBOEM7QUFDOUM7SUFBMEMsd0NBQWdCO0lBQTFEO1FBQUEscUVBRUM7UUFEQyxVQUFJLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDOztJQUN2QyxDQUFDO0lBQUQsMkJBQUM7QUFBRCxDQUFDLEFBRkQsQ0FBMEMsZ0JBQWdCLEdBRXpEO0FBRlksb0RBQW9CO0FBSWpDLHdEQUF3RDtBQUN4RDtJQUF1QyxxQ0FBbUI7SUFBMUQ7UUFBQSxxRUFFQztRQURDLFVBQUksR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7O0lBQ3BDLENBQUM7SUFBRCx3QkFBQztBQUFELENBQUMsQUFGRCxDQUF1QyxtQkFBbUIsR0FFekQ7QUFGWSw4Q0FBaUI7QUFJOUIsNENBQTRDO0FBQzVDO0lBQTBDLHdDQUFvQjtJQUE5RDtRQUFBLHFFQUtDO1FBSkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQzs7SUFJdkMsQ0FBQztJQUFELDJCQUFDO0FBQUQsQ0FBQyxBQUxELENBQTBDLG9CQUFvQixHQUs3RDtBQUxZLG9EQUFvQjtBQU9qQyx1Q0FBdUM7QUFDdkM7SUFBcUMsbUNBQVM7SUFBOUM7UUFBQSxxRUFLQztRQUpDLFVBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDOztJQUl6QixDQUFDO0lBQUQsc0JBQUM7QUFBRCxDQUFDLEFBTEQsQ0FBcUMsU0FBUyxHQUs3QztBQUxZLDBDQUFlO0FBTzVCLDhEQUE4RDtBQUM5RDtJQUFnQyw4QkFBSTtJQUFwQztRQUFBLHFFQU9DO1FBTkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7O0lBTTdCLENBQUM7SUFBRCxpQkFBQztBQUFELENBQUMsQUFQRCxDQUFnQyxJQUFJLEdBT25DO0FBUFksZ0NBQVU7QUFTdkIsdUNBQXVDO0FBQ3ZDO0lBQXFDLG1DQUFTO0lBQTlDO1FBQUEscUVBT0M7UUFOQyxVQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQzs7SUFNekIsQ0FBQztJQUFELHNCQUFDO0FBQUQsQ0FBQyxBQVBELENBQXFDLFNBQVMsR0FPN0M7QUFQWSwwQ0FBZTtBQVM1QixzQ0FBc0M7QUFDdEM7SUFBb0Msa0NBQVM7SUFBN0M7UUFBQSxxRUFLQztRQUpDLFVBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDOztJQUl4QixDQUFDO0lBQUQscUJBQUM7QUFBRCxDQUFDLEFBTEQsQ0FBb0MsU0FBUyxHQUs1QztBQUxZLHdDQUFjO0FBTzNCLG9DQUFvQztBQUNwQztJQUFrQyxnQ0FBUztJQUEzQztRQUFBLHFFQVdDO1FBVkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7O0lBVXRCLENBQUM7SUFBRCxtQkFBQztBQUFELENBQUMsQUFYRCxDQUFrQyxTQUFTLEdBVzFDO0FBWFksb0NBQVk7QUFhekIsdUNBQXVDO0FBQ3ZDO0lBQXFDLG1DQUFvQjtJQUF6RDtRQUFBLHFFQU9DO1FBTkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7O0lBTWxDLENBQUM7SUFBRCxzQkFBQztBQUFELENBQUMsQUFQRCxDQUFxQyxvQkFBb0IsR0FPeEQ7QUFQWSwwQ0FBZTtBQVM1Qiw2RUFBNkU7QUFDN0U7SUFBeUMsdUNBQWdDO0lBQXpFO1FBQUEscUVBRUM7UUFEQyxVQUFJLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixDQUFDOztJQUN0QyxDQUFDO0lBQUQsMEJBQUM7QUFBRCxDQUFDLEFBRkQsQ0FBeUMsZ0NBQWdDLEdBRXhFO0FBRlksa0RBQW1CO0FBSWhDLDZFQUE2RTtBQUM3RTtJQUF1QyxxQ0FBUztJQUFoRDtRQUFBLHFFQU9DO1FBTkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7O0lBTTNCLENBQUM7SUFBRCx3QkFBQztBQUFELENBQUMsQUFQRCxDQUF1QyxTQUFTLEdBTy9DO0FBUFksOENBQWlCO0FBUzlCLGtFQUFrRTtBQUNsRTtJQUFtQyxpQ0FBUztJQUE1QztRQUFBLHFFQUtDO1FBSkMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7O0lBSXZCLENBQUM7SUFBRCxvQkFBQztBQUFELENBQUMsQUFMRCxDQUFtQyxTQUFTLEdBSzNDO0FBTFksc0NBQWE7QUFPMUIsc0NBQXNDO0FBQ3RDO0lBQW9DLGtDQUFTO0lBQTdDO1FBQUEscUVBT0M7UUFOQyxVQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQzs7SUFNeEIsQ0FBQztJQUFELHFCQUFDO0FBQUQsQ0FBQyxBQVBELENBQW9DLFNBQVMsR0FPNUM7QUFQWSx3Q0FBYztBQVMzQiw2REFBNkQ7QUFDN0QsU0FBZ0IsYUFBYSxDQUFDLElBQW1CLEVBQUUsVUFBa0M7SUFDbkYsSUFBSSxVQUFVLEVBQUU7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pELElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLFNBQVMsQ0FBQyxhQUFhLElBQUksSUFBSTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztTQUN2RDtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBUkQsc0NBUUM7QUFFRCwrQ0FBK0M7QUFDL0MsU0FBZ0Isa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBSEQsZ0RBR0M7QUFFRCxtRUFBbUU7QUFDbkUsU0FBZ0IsYUFBYSxDQUFDLElBQWM7SUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7UUFDbkMsSUFBSSxJQUFJLEdBQW1CLElBQUssQ0FBQyxJQUFJLENBQUM7UUFDdEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNwRDtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQU5ELHNDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBYnN0cmFjdCBzeW50YXggdHJlZSByZXByZXNlbnRpbmcgYSBzb3VyY2UgZmlsZSBvbmNlIHBhcnNlZC5cbiAqIEBtb2R1bGUgYXN0XG4gKi8vKioqL1xuXG5pbXBvcnQge1xuICBDb21tb25GbGFncyxcbiAgQ29tbW9uU3ltYm9scyxcbiAgUEFUSF9ERUxJTUlURVIsXG4gIExJQlJBUllfUFJFRklYXG59IGZyb20gXCIuL2NvbW1vblwiO1xuXG5pbXBvcnQge1xuICBUb2tlbixcbiAgVG9rZW5pemVyLFxuICBSYW5nZVxufSBmcm9tIFwiLi90b2tlbml6ZXJcIjtcblxuaW1wb3J0IHtcbiAgbm9ybWFsaXplUGF0aCxcbiAgcmVzb2x2ZVBhdGgsXG4gIENoYXJDb2RlXG59IGZyb20gXCIuL3V0aWxcIjtcblxuZXhwb3J0IHsgVG9rZW4sIFJhbmdlIH07XG5cbi8qKiBJbmRpY2F0ZXMgdGhlIGtpbmQgb2YgYSBub2RlLiAqL1xuZXhwb3J0IGVudW0gTm9kZUtpbmQge1xuXG4gIFNPVVJDRSxcblxuICAvLyB0eXBlc1xuICBOQU1FRFRZUEUsXG4gIEZVTkNUSU9OVFlQRSxcbiAgVFlQRU5BTUUsXG4gIFRZUEVQQVJBTUVURVIsXG4gIFBBUkFNRVRFUixcblxuICAvLyBleHByZXNzaW9uc1xuICBJREVOVElGSUVSLFxuICBBU1NFUlRJT04sXG4gIEJJTkFSWSxcbiAgQ0FMTCxcbiAgQ0xBU1MsXG4gIENPTU1BLFxuICBFTEVNRU5UQUNDRVNTLFxuICBGQUxTRSxcbiAgRlVOQ1RJT04sXG4gIElOU1RBTkNFT0YsXG4gIExJVEVSQUwsXG4gIE5FVyxcbiAgTlVMTCxcbiAgUEFSRU5USEVTSVpFRCxcbiAgUFJPUEVSVFlBQ0NFU1MsXG4gIFRFUk5BUlksXG4gIFNVUEVSLFxuICBUSElTLFxuICBUUlVFLFxuICBDT05TVFJVQ1RPUixcbiAgVU5BUllQT1NURklYLFxuICBVTkFSWVBSRUZJWCxcblxuICAvLyBzdGF0ZW1lbnRzXG4gIEJMT0NLLFxuICBCUkVBSyxcbiAgQ09OVElOVUUsXG4gIERPLFxuICBFTVBUWSxcbiAgRVhQT1JULFxuICBFWFBPUlRERUZBVUxULFxuICBFWFBPUlRJTVBPUlQsXG4gIEVYUFJFU1NJT04sXG4gIEZPUixcbiAgSUYsXG4gIElNUE9SVCxcbiAgUkVUVVJOLFxuICBTV0lUQ0gsXG4gIFRIUk9XLFxuICBUUlksXG4gIFZBUklBQkxFLFxuICBWT0lELFxuICBXSElMRSxcblxuICAvLyBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzXG4gIENMQVNTREVDTEFSQVRJT04sXG4gIEVOVU1ERUNMQVJBVElPTixcbiAgRU5VTVZBTFVFREVDTEFSQVRJT04sXG4gIEZJRUxEREVDTEFSQVRJT04sXG4gIEZVTkNUSU9OREVDTEFSQVRJT04sXG4gIElNUE9SVERFQ0xBUkFUSU9OLFxuICBJTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OLFxuICBJTlRFUkZBQ0VERUNMQVJBVElPTixcbiAgTUVUSE9EREVDTEFSQVRJT04sXG4gIE5BTUVTUEFDRURFQ0xBUkFUSU9OLFxuICBUWVBFREVDTEFSQVRJT04sXG4gIFZBUklBQkxFREVDTEFSQVRJT04sXG5cbiAgLy8gc3BlY2lhbFxuICBERUNPUkFUT1IsXG4gIEVYUE9SVE1FTUJFUixcbiAgU1dJVENIQ0FTRSxcbiAgQ09NTUVOVFxufVxuXG4vKiogQ2hlY2tzIGlmIGEgbm9kZSByZXByZXNlbnRzIGEgY29uc3RhbnQgdmFsdWUuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZUlzQ29uc3RhbnRWYWx1ZShraW5kOiBOb2RlS2luZCk6IGJvb2wge1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIE5vZGVLaW5kLkxJVEVSQUw6XG4gICAgY2FzZSBOb2RlS2luZC5OVUxMOlxuICAgIGNhc2UgTm9kZUtpbmQuVFJVRTpcbiAgICBjYXNlIE5vZGVLaW5kLkZBTFNFOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3MgaWYgYSBub2RlIG1pZ2h0IGJlIGNhbGxhYmxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGVJc0NhbGxhYmxlKGtpbmQ6IE5vZGVLaW5kKTogYm9vbCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjpcbiAgICBjYXNlIE5vZGVLaW5kLkFTU0VSVElPTjogLy8gaWYga2luZD1OT05OVUxMXG4gICAgY2FzZSBOb2RlS2luZC5DQUxMOlxuICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzpcbiAgICBjYXNlIE5vZGVLaW5kLlBBUkVOVEhFU0laRUQ6XG4gICAgY2FzZSBOb2RlS2luZC5QUk9QRVJUWUFDQ0VTUzpcbiAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3MgaWYgYSBub2RlIG1pZ2h0IGJlIGNhbGxhYmxlIHdpdGggZ2VuZXJpYyBhcmd1bWVudHMuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZUlzR2VuZXJpY0NhbGxhYmxlKGtpbmQ6IE5vZGVLaW5kKTogYm9vbCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjpcbiAgICBjYXNlIE5vZGVLaW5kLlBST1BFUlRZQUNDRVNTOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBub2Rlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOb2RlIHtcblxuICAvKiogTm9kZSBraW5kIGluZGljYXRvci4gKi9cbiAga2luZDogTm9kZUtpbmQ7XG4gIC8qKiBTb3VyY2UgcmFuZ2UuICovXG4gIHJhbmdlOiBSYW5nZTtcblxuICAvLyB0eXBlc1xuXG4gIHN0YXRpYyBjcmVhdGVUeXBlTmFtZShcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZU5hbWUge1xuICAgIHZhciB0eXBlTmFtZSA9IG5ldyBUeXBlTmFtZSgpO1xuICAgIHR5cGVOYW1lLnJhbmdlID0gcmFuZ2U7XG4gICAgdHlwZU5hbWUuaWRlbnRpZmllciA9IG5hbWU7XG4gICAgdHlwZU5hbWUubmV4dCA9IG51bGw7XG4gICAgcmV0dXJuIHR5cGVOYW1lO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVNpbXBsZVR5cGVOYW1lKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZU5hbWUge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZVR5cGVOYW1lKE5vZGUuY3JlYXRlSWRlbnRpZmllckV4cHJlc3Npb24obmFtZSwgcmFuZ2UpLCByYW5nZSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTmFtZWRUeXBlKFxuICAgIG5hbWU6IFR5cGVOYW1lLFxuICAgIHR5cGVBcmd1bWVudHM6IFR5cGVOb2RlW10gfCBudWxsLFxuICAgIGlzTnVsbGFibGU6IGJvb2wsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE5hbWVkVHlwZU5vZGUge1xuICAgIHZhciB0eXBlID0gbmV3IE5hbWVkVHlwZU5vZGUoKTtcbiAgICB0eXBlLnJhbmdlID0gcmFuZ2U7XG4gICAgdHlwZS5uYW1lID0gbmFtZTtcbiAgICB0eXBlLnR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzO1xuICAgIHR5cGUuaXNOdWxsYWJsZSA9IGlzTnVsbGFibGU7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRnVuY3Rpb25UeXBlKFxuICAgIHBhcmFtZXRlcnM6IFBhcmFtZXRlck5vZGVbXSxcbiAgICByZXR1cm5UeXBlOiBUeXBlTm9kZSxcbiAgICBleHBsaWNpdFRoaXNUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbCxcbiAgICBpc051bGxhYmxlOiBib29sLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGdW5jdGlvblR5cGVOb2RlIHtcbiAgICB2YXIgdHlwZSA9IG5ldyBGdW5jdGlvblR5cGVOb2RlKCk7XG4gICAgdHlwZS5yYW5nZSA9IHJhbmdlO1xuICAgIHR5cGUucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgdHlwZS5yZXR1cm5UeXBlID0gcmV0dXJuVHlwZTtcbiAgICB0eXBlLmV4cGxpY2l0VGhpc1R5cGUgPSBleHBsaWNpdFRoaXNUeXBlO1xuICAgIHR5cGUuaXNOdWxsYWJsZSA9IGlzTnVsbGFibGU7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlT21pdHRlZFR5cGUoXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE5hbWVkVHlwZU5vZGUge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZU5hbWVkVHlwZShcbiAgICAgIE5vZGUuY3JlYXRlU2ltcGxlVHlwZU5hbWUoXCJcIiwgcmFuZ2UpLFxuICAgICAgbnVsbCxcbiAgICAgIGZhbHNlLFxuICAgICAgcmFuZ2VcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVR5cGVQYXJhbWV0ZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZW5kc1R5cGU6IE5hbWVkVHlwZU5vZGUgfCBudWxsLFxuICAgIGRlZmF1bHRUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZVBhcmFtZXRlck5vZGUge1xuICAgIHZhciBlbGVtID0gbmV3IFR5cGVQYXJhbWV0ZXJOb2RlKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0ubmFtZSA9IG5hbWU7XG4gICAgZWxlbS5leHRlbmRzVHlwZSA9IGV4dGVuZHNUeXBlO1xuICAgIGVsZW0uZGVmYXVsdFR5cGUgPSBkZWZhdWx0VHlwZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVQYXJhbWV0ZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZTogVHlwZU5vZGUsXG4gICAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGtpbmQ6IFBhcmFtZXRlcktpbmQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFBhcmFtZXRlck5vZGUge1xuICAgIHZhciBlbGVtID0gbmV3IFBhcmFtZXRlck5vZGUoKTtcbiAgICBlbGVtLnJhbmdlID0gcmFuZ2U7XG4gICAgZWxlbS5uYW1lID0gbmFtZTtcbiAgICBlbGVtLnR5cGUgPSB0eXBlO1xuICAgIGVsZW0uaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcbiAgICBlbGVtLnBhcmFtZXRlcktpbmQgPSBraW5kO1xuICAgIHJldHVybiBlbGVtO1xuICB9XG5cbiAgLy8gc3BlY2lhbFxuXG4gIHN0YXRpYyBjcmVhdGVEZWNvcmF0b3IoXG4gICAgbmFtZTogRXhwcmVzc2lvbixcbiAgICBhcmdzOiBFeHByZXNzaW9uW10gfCBudWxsLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBEZWNvcmF0b3JOb2RlIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBEZWNvcmF0b3JOb2RlKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHN0bXQuZGVjb3JhdG9yS2luZCA9IGRlY29yYXRvck5hbWVUb0tpbmQobmFtZSk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29tbWVudChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAga2luZDogQ29tbWVudEtpbmQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbW1lbnROb2RlIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBDb21tZW50Tm9kZSgpO1xuICAgIG5vZGUucmFuZ2UgPSByYW5nZTtcbiAgICBub2RlLmNvbW1lbnRLaW5kID0ga2luZDtcbiAgICBub2RlLnRleHQgPSB0ZXh0O1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gZXhwcmVzc2lvbnNcblxuICBzdGF0aWMgY3JlYXRlSWRlbnRpZmllckV4cHJlc3Npb24oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICBpc1F1b3RlZDogYm9vbCA9IGZhbHNlXG4gICk6IElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBJZGVudGlmaWVyRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLnRleHQgPSBuYW1lOyAvLyBUT0RPOiBleHRyYWN0IGZyb20gcmFuZ2VcbiAgICBleHByLnN5bWJvbCA9IG5hbWU7IC8vIFRPRE86IFN5bWJvbC5mb3IobmFtZSlcbiAgICBleHByLmlzUXVvdGVkID0gaXNRdW90ZWQ7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRW1wdHlJZGVudGlmaWVyRXhwcmVzc2lvbihcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IElkZW50aWZpZXJFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIudGV4dCA9IFwiXCI7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihcbiAgICBlbGVtZW50czogKEV4cHJlc3Npb24gfCBudWxsKVtdLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBBcnJheUxpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBBcnJheUxpdGVyYWxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZWxlbWVudEV4cHJlc3Npb25zID0gZWxlbWVudHM7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQXNzZXJ0aW9uRXhwcmVzc2lvbihcbiAgICBhc3NlcnRpb25LaW5kOiBBc3NlcnRpb25LaW5kLFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgdG9UeXBlOiBUeXBlTm9kZSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEFzc2VydGlvbkV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEFzc2VydGlvbkV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5hc3NlcnRpb25LaW5kID0gYXNzZXJ0aW9uS2luZDtcbiAgICBleHByLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICAgIGV4cHIudG9UeXBlID0gdG9UeXBlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oXG4gICAgb3BlcmF0b3I6IFRva2VuLFxuICAgIGxlZnQ6IEV4cHJlc3Npb24sXG4gICAgcmlnaHQ6IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEJpbmFyeUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEJpbmFyeUV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgIGV4cHIubGVmdCA9IGxlZnQ7XG4gICAgZXhwci5yaWdodCA9IHJpZ2h0O1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUNhbGxFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgdHlwZUFyZ3M6IFR5cGVOb2RlW10gfCBudWxsLFxuICAgIGFyZ3M6IEV4cHJlc3Npb25bXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQ2FsbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IENhbGxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci50eXBlQXJndW1lbnRzID0gdHlwZUFyZ3M7XG4gICAgZXhwci5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUNsYXNzRXhwcmVzc2lvbihcbiAgICBkZWNsYXJhdGlvbjogQ2xhc3NEZWNsYXJhdGlvblxuICApOiBDbGFzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IENsYXNzRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSBkZWNsYXJhdGlvbi5yYW5nZTtcbiAgICBleHByLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29tbWFFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb25zOiBFeHByZXNzaW9uW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbW1hRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgQ29tbWFFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbnMgPSBleHByZXNzaW9ucztcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDb25zdHJ1Y3RvckV4cHJlc3Npb24oXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbnN0cnVjdG9yRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgQ29uc3RydWN0b3JFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgZWxlbWVudDogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci5lbGVtZW50RXhwcmVzc2lvbiA9IGVsZW1lbnQ7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRmFsc2VFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGYWxzZUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZhbHNlRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGbG9hdExpdGVyYWxFeHByZXNzaW9uKFxuICAgIHZhbHVlOiBmNjQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihcbiAgICBkZWNsYXJhdGlvbjogRnVuY3Rpb25EZWNsYXJhdGlvblxuICApOiBGdW5jdGlvbkV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZ1bmN0aW9uRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSBkZWNsYXJhdGlvbi5yYW5nZTtcbiAgICBleHByLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2VPZkV4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICBpc1R5cGU6IFR5cGVOb2RlLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBJbnN0YW5jZU9mRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgSW5zdGFuY2VPZkV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICBleHByLmlzVHlwZSA9IGlzVHlwZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oXG4gICAgdmFsdWU6IEk2NCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU5ld0V4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICB0eXBlQXJnczogVHlwZU5vZGVbXSB8IG51bGwsXG4gICAgYXJnczogRXhwcmVzc2lvbltdLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOZXdFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBOZXdFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci50eXBlQXJndW1lbnRzID0gdHlwZUFyZ3M7XG4gICAgZXhwci5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU51bGxFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOdWxsRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgTnVsbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oXG4gICAgbmFtZXM6IElkZW50aWZpZXJFeHByZXNzaW9uW10sXG4gICAgdmFsdWVzOiBFeHByZXNzaW9uW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLm5hbWVzID0gbmFtZXM7XG4gICAgZXhwci52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogUGFyZW50aGVzaXplZEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcHJvcGVydHk6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICAgIGV4cHIucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVSZWdleHBMaXRlcmFsRXhwcmVzc2lvbihcbiAgICBwYXR0ZXJuOiBzdHJpbmcsXG4gICAgZmxhZ3M6IHN0cmluZyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFJlZ2V4cExpdGVyYWxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIucGF0dGVybiA9IHBhdHRlcm47XG4gICAgZXhwci5wYXR0ZXJuRmxhZ3MgPSBmbGFncztcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUZXJuYXJ5RXhwcmVzc2lvbihcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgaWZUaGVuOiBFeHByZXNzaW9uLFxuICAgIGlmRWxzZTogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGVybmFyeUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFRlcm5hcnlFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgIGV4cHIuaWZUaGVuID0gaWZUaGVuO1xuICAgIGV4cHIuaWZFbHNlID0gaWZFbHNlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLnZhbHVlID0gdmFsdWU7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlU3VwZXJFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBTdXBlckV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFN1cGVyRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUaGlzRXhwcmVzc2lvbihcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGhpc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFRoaXNFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRydWVFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBUcnVlRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVHJ1ZUV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVW5hcnlQb3N0Zml4RXhwcmVzc2lvbihcbiAgICBvcGVyYXRvcjogVG9rZW4sXG4gICAgb3BlcmFuZDogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVW5hcnlQb3N0Zml4RXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVW5hcnlQb3N0Zml4RXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgZXhwci5vcGVyYW5kID0gb3BlcmFuZDtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVVbmFyeVByZWZpeEV4cHJlc3Npb24oXG4gICAgb3BlcmF0b3I6IFRva2VuLFxuICAgIG9wZXJhbmQ6IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFVuYXJ5UHJlZml4RXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVW5hcnlQcmVmaXhFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICBleHByLm9wZXJhbmQgPSBvcGVyYW5kO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgLy8gc3RhdGVtZW50c1xuXG4gIHN0YXRpYyBjcmVhdGVCbG9ja1N0YXRlbWVudChcbiAgICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQmxvY2tTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEJsb2NrU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoXG4gICAgbGFiZWw6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQnJlYWtTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEJyZWFrU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubGFiZWwgPSBsYWJlbDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDbGFzc0RlY2xhcmF0aW9uKFxuICAgIGlkZW50aWZpZXI6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGwsIC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgICBpbXBsZW1lbnRzVHlwZXM6IE5hbWVkVHlwZU5vZGVbXSB8IG51bGwsIC8vIGNhbid0IGJlIGZ1bmN0aW9uc1xuICAgIG1lbWJlcnM6IERlY2xhcmF0aW9uU3RhdGVtZW50W10sXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENsYXNzRGVjbGFyYXRpb24ge1xuICAgIHZhciBzdG10ID0gbmV3IENsYXNzRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IGlkZW50aWZpZXI7XG4gICAgc3RtdC50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIHN0bXQuZXh0ZW5kc1R5cGUgPSBleHRlbmRzVHlwZTtcbiAgICBzdG10LmltcGxlbWVudHNUeXBlcyA9IGltcGxlbWVudHNUeXBlcztcbiAgICBzdG10Lm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoXG4gICAgbGFiZWw6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQ29udGludWVTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IENvbnRpbnVlU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubGFiZWwgPSBsYWJlbDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVEb1N0YXRlbWVudChcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudCxcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IERvU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBEb1N0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFbXB0eVN0YXRlbWVudChcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRW1wdHlTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEVtcHR5U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUVudW1EZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICBtZW1iZXJzOiBFbnVtVmFsdWVEZWNsYXJhdGlvbltdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFbnVtRGVjbGFyYXRpb24ge1xuICAgIHZhciBzdG10ID0gbmV3IEVudW1EZWNsYXJhdGlvbigpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmZsYWdzID0gZmxhZ3M7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LnZhbHVlcyA9IG1lbWJlcnM7XG4gICAgc3RtdC5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycztcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFbnVtVmFsdWVEZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB2YWx1ZTogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFbnVtVmFsdWVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgRW51bVZhbHVlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUV4cG9ydFN0YXRlbWVudChcbiAgICBtZW1iZXJzOiBFeHBvcnRNZW1iZXJbXSB8IG51bGwsXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGlzRGVjbGFyZTogYm9vbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRXhwb3J0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5tZW1iZXJzID0gbWVtYmVycztcbiAgICBzdG10LnBhdGggPSBwYXRoO1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQYXRoKHBhdGgudmFsdWUpO1xuICAgICAgaWYgKHBhdGgudmFsdWUuc3RhcnRzV2l0aChcIi5cIikpIHsgLy8gcmVsYXRpdmVcbiAgICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoLFxuICAgICAgICAgIHJhbmdlLnNvdXJjZS5ub3JtYWxpemVkUGF0aFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHsgLy8gYWJzb2x1dGVcbiAgICAgICAgaWYgKCFub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKExJQlJBUllfUFJFRklYKSkge1xuICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoID0gTElCUkFSWV9QUkVGSVggKyBub3JtYWxpemVkUGF0aDtcbiAgICAgICAgfVxuICAgICAgICBzdG10Lm5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGg7XG4gICAgICB9XG4gICAgICBzdG10LmludGVybmFsUGF0aCA9IG1hbmdsZUludGVybmFsUGF0aChzdG10Lm5vcm1hbGl6ZWRQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IG51bGw7XG4gICAgICBzdG10LmludGVybmFsUGF0aCA9IG51bGw7XG4gICAgfVxuICAgIHN0bXQuaXNEZWNsYXJlID0gaXNEZWNsYXJlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoXG4gICAgZGVjbGFyYXRpb246IERlY2xhcmF0aW9uU3RhdGVtZW50LFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFeHBvcnREZWZhdWx0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnREZWZhdWx0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5kZWNsYXJhdGlvbiA9IGRlY2xhcmF0aW9uO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHBvcnRJbXBvcnRTdGF0ZW1lbnQoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZXJuYWxOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRXhwb3J0SW1wb3J0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LmV4dGVybmFsTmFtZSA9IGV4dGVybmFsTmFtZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHBvcnRNZW1iZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZXJuYWxOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEV4cG9ydE1lbWJlciB7XG4gICAgdmFyIGVsZW0gPSBuZXcgRXhwb3J0TWVtYmVyKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0ubG9jYWxOYW1lID0gbmFtZTtcbiAgICBpZiAoIWV4dGVybmFsTmFtZSkgZXh0ZXJuYWxOYW1lID0gbmFtZTtcbiAgICBlbGVtLmV4cG9ydGVkTmFtZSA9IGV4dGVybmFsTmFtZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb25cbiAgKTogRXhwcmVzc2lvblN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgRXhwcmVzc2lvblN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSBleHByZXNzaW9uLnJhbmdlO1xuICAgIHN0bXQuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSWZTdGF0ZW1lbnQoXG4gICAgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIGlmVHJ1ZTogU3RhdGVtZW50LFxuICAgIGlmRmFsc2U6IFN0YXRlbWVudCB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IElmU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBJZlN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICBzdG10LmlmVHJ1ZSA9IGlmVHJ1ZTtcbiAgICBzdG10LmlmRmFsc2UgPSBpZkZhbHNlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUltcG9ydFN0YXRlbWVudChcbiAgICBkZWNsczogSW1wb3J0RGVjbGFyYXRpb25bXSB8IG51bGwsXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEltcG9ydFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZGVjbGFyYXRpb25zID0gZGVjbHM7XG4gICAgc3RtdC5uYW1lc3BhY2VOYW1lID0gbnVsbDtcbiAgICBzdG10LnBhdGggPSBwYXRoO1xuICAgIHZhciBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgocGF0aC52YWx1ZSk7XG4gICAgaWYgKHBhdGgudmFsdWUuc3RhcnRzV2l0aChcIi5cIikpIHsgLy8gcmVsYXRpdmUgaW4gcHJvamVjdFxuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgcmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoXG4gICAgICApO1xuICAgIH0gZWxzZSB7IC8vIGFic29sdXRlIGluIGxpYnJhcnlcbiAgICAgIGlmICghbm9ybWFsaXplZFBhdGguc3RhcnRzV2l0aChMSUJSQVJZX1BSRUZJWCkpIHtcbiAgICAgICAgbm9ybWFsaXplZFBhdGggPSBMSUJSQVJZX1BSRUZJWCArIG5vcm1hbGl6ZWRQYXRoO1xuICAgICAgfVxuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoO1xuICAgIH1cbiAgICBzdG10LmludGVybmFsUGF0aCA9IG1hbmdsZUludGVybmFsUGF0aChzdG10Lm5vcm1hbGl6ZWRQYXRoKTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbXBvcnRTdGF0ZW1lbnRXaXRoV2lsZGNhcmQoXG4gICAgaWRlbnRpZmllcjogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEltcG9ydFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZGVjbGFyYXRpb25zID0gbnVsbDtcbiAgICBzdG10Lm5hbWVzcGFjZU5hbWUgPSBpZGVudGlmaWVyO1xuICAgIHN0bXQucGF0aCA9IHBhdGg7XG4gICAgdmFyIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUGF0aChwYXRoLnZhbHVlKTtcbiAgICBpZiAocGF0aC52YWx1ZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgcmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW5vcm1hbGl6ZWRQYXRoLnN0YXJ0c1dpdGgoTElCUkFSWV9QUkVGSVgpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWRQYXRoID0gTElCUkFSWV9QUkVGSVggKyBub3JtYWxpemVkUGF0aDtcbiAgICAgIH1cbiAgICAgIHN0bXQubm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aDtcbiAgICB9XG4gICAgc3RtdC5pbnRlcm5hbFBhdGggPSBtYW5nbGVJbnRlcm5hbFBhdGgoc3RtdC5ub3JtYWxpemVkUGF0aCk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24oXG4gICAgZm9yZWlnbk5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSW1wb3J0RGVjbGFyYXRpb24ge1xuICAgIHZhciBlbGVtID0gbmV3IEltcG9ydERlY2xhcmF0aW9uKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0uZm9yZWlnbk5hbWUgPSBmb3JlaWduTmFtZTtcbiAgICBpZiAoIW5hbWUpIG5hbWUgPSBmb3JlaWduTmFtZTtcbiAgICBlbGVtLm5hbWUgPSBuYW1lO1xuICAgIHJldHVybiBlbGVtO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUludGVyZmFjZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGwsIC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgICBtZW1iZXJzOiBEZWNsYXJhdGlvblN0YXRlbWVudFtdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBJbnRlcmZhY2VEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW50ZXJmYWNlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIHN0bXQuZXh0ZW5kc1R5cGUgPSBleHRlbmRzVHlwZTtcbiAgICBzdG10Lm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRmllbGREZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB0eXBlOiBUeXBlTm9kZSB8IG51bGwsXG4gICAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGaWVsZERlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBGaWVsZERlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZSA9IHR5cGU7XG4gICAgc3RtdC5pbml0aWFsaXplciA9IGluaXRpYWxpemVyO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRm9yU3RhdGVtZW50KFxuICAgIGluaXRpYWxpemVyOiBTdGF0ZW1lbnQgfCBudWxsLFxuICAgIGNvbmRpdGlvbjogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgaW5jcmVtZW50b3I6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50LFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGb3JTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEZvclN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXI7XG4gICAgc3RtdC5jb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgc3RtdC5pbmNyZW1lbnRvciA9IGluY3JlbWVudG9yO1xuICAgIHN0bXQuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsLFxuICAgIHNpZ25hdHVyZTogRnVuY3Rpb25UeXBlTm9kZSxcbiAgICBib2R5OiBTdGF0ZW1lbnQgfCBudWxsLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIGFycm93S2luZDogQXJyb3dLaW5kLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGdW5jdGlvbkRlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBGdW5jdGlvbkRlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICBzdG10LnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICBzdG10LmJvZHkgPSBib2R5O1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgc3RtdC5hcnJvd0tpbmQgPSBhcnJvd0tpbmQ7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbihcbiAgICBrZXlUeXBlOiBOYW1lZFR5cGVOb2RlLFxuICAgIHZhbHVlVHlwZTogVHlwZU5vZGUsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24ge1xuICAgIHZhciBlbGVtID0gbmV3IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24oKTtcbiAgICBlbGVtLnJhbmdlID0gcmFuZ2U7XG4gICAgZWxlbS5rZXlUeXBlID0ga2V5VHlwZTtcbiAgICBlbGVtLnZhbHVlVHlwZSA9IHZhbHVlVHlwZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVNZXRob2REZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB0eXBlUGFyYW1ldGVyczogVHlwZVBhcmFtZXRlck5vZGVbXSB8IG51bGwsXG4gICAgc2lnbmF0dXJlOiBGdW5jdGlvblR5cGVOb2RlLFxuICAgIGJvZHk6IFN0YXRlbWVudCB8IG51bGwsXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE1ldGhvZERlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBNZXRob2REZWNsYXJhdGlvbigpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmZsYWdzID0gZmxhZ3M7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgc3RtdC5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgc3RtdC5ib2R5ID0gYm9keTtcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU5hbWVzcGFjZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIG1lbWJlcnM6IFN0YXRlbWVudFtdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOYW1lc3BhY2VEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgTmFtZXNwYWNlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC5tZW1iZXJzID0gbWVtYmVycztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVJldHVyblN0YXRlbWVudChcbiAgICB2YWx1ZTogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFJldHVyblN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgUmV0dXJuU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoXG4gICAgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIGNhc2VzOiBTd2l0Y2hDYXNlW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFN3aXRjaFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgU3dpdGNoU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgIHN0bXQuY2FzZXMgPSBjYXNlcztcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVTd2l0Y2hDYXNlKFxuICAgIGxhYmVsOiBFeHByZXNzaW9uIHwgbnVsbCxcbiAgICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogU3dpdGNoQ2FzZSB7XG4gICAgdmFyIGVsZW0gPSBuZXcgU3dpdGNoQ2FzZSgpO1xuICAgIGVsZW0ucmFuZ2UgPSByYW5nZTtcbiAgICBlbGVtLmxhYmVsID0gbGFiZWw7XG4gICAgZWxlbS5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUaHJvd1N0YXRlbWVudChcbiAgICB2YWx1ZTogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGhyb3dTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IFRocm93U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUcnlTdGF0ZW1lbnQoXG4gICAgc3RhdGVtZW50czogU3RhdGVtZW50W10sXG4gICAgY2F0Y2hWYXJpYWJsZTogSWRlbnRpZmllckV4cHJlc3Npb24gfCBudWxsLFxuICAgIGNhdGNoU3RhdGVtZW50czogU3RhdGVtZW50W10gfCBudWxsLFxuICAgIGZpbmFsbHlTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFRyeVN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgVHJ5U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgc3RtdC5jYXRjaFZhcmlhYmxlID0gY2F0Y2hWYXJpYWJsZTtcbiAgICBzdG10LmNhdGNoU3RhdGVtZW50cyA9IGNhdGNoU3RhdGVtZW50cztcbiAgICBzdG10LmZpbmFsbHlTdGF0ZW1lbnRzID0gZmluYWxseVN0YXRlbWVudHM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVHlwZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBhbGlhczogVHlwZU5vZGUsXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFR5cGVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgVHlwZURlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICBzdG10LnR5cGUgPSBhbGlhcztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KFxuICAgIGRlY2xhcmF0aW9uczogVmFyaWFibGVEZWNsYXJhdGlvbltdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFZhcmlhYmxlU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBWYXJpYWJsZVN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmRlY2xhcmF0aW9ucyA9IGRlY2xhcmF0aW9ucztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZTogVHlwZU5vZGUgfCBudWxsLFxuICAgIGluaXRpYWxpemVyOiBFeHByZXNzaW9uIHwgbnVsbCxcbiAgICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JOb2RlW10gfCBudWxsLFxuICAgIGZsYWdzOiBDb21tb25GbGFncyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVmFyaWFibGVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIGVsZW0gPSBuZXcgVmFyaWFibGVEZWNsYXJhdGlvbigpO1xuICAgIGVsZW0ucmFuZ2UgPSByYW5nZTtcbiAgICBlbGVtLmZsYWdzID0gZmxhZ3M7XG4gICAgZWxlbS5uYW1lID0gbmFtZTtcbiAgICBlbGVtLnR5cGUgPSB0eXBlO1xuICAgIGVsZW0uaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcbiAgICBlbGVtLmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzOyAvLyBpbmhlcml0ZWRcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVWb2lkU3RhdGVtZW50KFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFZvaWRTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IFZvaWRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVXaGlsZVN0YXRlbWVudChcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFdoaWxlU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBXaGlsZVN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICBzdG10LnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxufVxuXG4vLyB0eXBlc1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHlwZU5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAgLy8ga2luZCB2YXJpZXNcblxuICAvKiogV2hldGhlciBudWxsYWJsZSBvciBub3QuICovXG4gIGlzTnVsbGFibGU6IGJvb2w7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdHlwZSBuYW1lLiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVOYW1lIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5UWVBFTkFNRTtcblxuICAvKiogSWRlbnRpZmllciBvZiB0aGlzIHBhcnQuICovXG4gIGlkZW50aWZpZXI6IElkZW50aWZpZXJFeHByZXNzaW9uO1xuICAvKiogTmV4dCBwYXJ0IG9mIHRoZSB0eXBlIG5hbWUgb3IgYG51bGxgIGlmIHRoaXMgaXMgdGhlIGxhc3QgcGFydC4gKi9cbiAgbmV4dDogVHlwZU5hbWUgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG5hbWVkIHR5cGUuICovXG5leHBvcnQgY2xhc3MgTmFtZWRUeXBlTm9kZSBleHRlbmRzIFR5cGVOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLk5BTUVEVFlQRTtcblxuICAvKiogVHlwZSBuYW1lLiAqL1xuICBuYW1lOiBUeXBlTmFtZTtcbiAgLyoqIFR5cGUgYXJndW1lbnQgcmVmZXJlbmNlcy4gKi9cbiAgdHlwZUFyZ3VtZW50czogVHlwZU5vZGVbXSB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdHlwZS4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvblR5cGVOb2RlIGV4dGVuZHMgVHlwZU5vZGUge1xuICBraW5kID0gTm9kZUtpbmQuRlVOQ1RJT05UWVBFO1xuXG4gIC8qKiBBY2NlcHRlZCBwYXJhbWV0ZXJzLiAqL1xuICBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJOb2RlW107XG4gIC8qKiBSZXR1cm4gdHlwZS4gKi9cbiAgcmV0dXJuVHlwZTogVHlwZU5vZGU7XG4gIC8qKiBFeHBsaWNpdGx5IHByb3ZpZGVkIHRoaXMgdHlwZSwgaWYgYW55LiAqL1xuICBleHBsaWNpdFRoaXNUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbDsgLy8gY2FuJ3QgYmUgYSBmdW5jdGlvblxufVxuXG4vKiogUmVwcmVzZW50cyBhIHR5cGUgcGFyYW1ldGVyLiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSO1xuXG4gIC8qKiBJZGVudGlmaWVyIHJlZmVyZW5jZS4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBFeHRlbmRlZCB0eXBlIHJlZmVyZW5jZSwgaWYgYW55LiAqL1xuICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGw7IC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgLyoqIERlZmF1bHQgdHlwZSBpZiBvbWl0dGVkLCBpZiBhbnkuICovXG4gIGRlZmF1bHRUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbDsgLy8gY2FuJ3QgYmUgYSBmdW5jdGlvblxufVxuXG4vKiogUmVwcmVzZW50cyB0aGUga2luZCBvZiBhIHBhcmFtZXRlci4gKi9cbmV4cG9ydCBlbnVtIFBhcmFtZXRlcktpbmQge1xuICAvKiogTm8gc3BlY2lmaWMgZmxhZ3MuICovXG4gIERFRkFVTFQsXG4gIC8qKiBJcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuICovXG4gIE9QVElPTkFMLFxuICAvKiogSXMgYSByZXN0IHBhcmFtZXRlci4gKi9cbiAgUkVTVFxufVxuXG4vKiogUmVwcmVzZW50cyBhIGZ1bmN0aW9uIHBhcmFtZXRlci4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5QQVJBTUVURVI7XG5cbiAgLyoqIFBhcmFtZXRlciBraW5kLiAqL1xuICBwYXJhbWV0ZXJLaW5kOiBQYXJhbWV0ZXJLaW5kO1xuICAvKiogUGFyYW1ldGVyIG5hbWUuICovXG4gIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xuICAvKiogUGFyYW1ldGVyIHR5cGUuICovXG4gIHR5cGU6IFR5cGVOb2RlO1xuICAvKiogSW5pdGlhbGl6ZXIgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4gKi9cbiAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogSW1wbGljaXQgZmllbGQgZGVjbGFyYXRpb24sIGlmIGFwcGxpY2FibGUuICovXG4gIGltcGxpY2l0RmllbGREZWNsYXJhdGlvbjogRmllbGREZWNsYXJhdGlvbiB8IG51bGwgPSBudWxsO1xuICAvKiogQ29tbW9uIGZsYWdzIGluZGljYXRpbmcgc3BlY2lmaWMgdHJhaXRzLiAqL1xuICBmbGFnczogQ29tbW9uRmxhZ3MgPSBDb21tb25GbGFncy5OT05FO1xuXG4gIC8qKiBUZXN0cyBpZiB0aGlzIG5vZGUgaGFzIHRoZSBzcGVjaWZpZWQgZmxhZyBvciBmbGFncy4gKi9cbiAgaXMoZmxhZzogQ29tbW9uRmxhZ3MpOiBib29sIHsgcmV0dXJuICh0aGlzLmZsYWdzICYgZmxhZykgPT0gZmxhZzsgfVxuICAvKiogVGVzdHMgaWYgdGhpcyBub2RlIGhhcyBvbmUgb2YgdGhlIHNwZWNpZmllZCBmbGFncy4gKi9cbiAgaXNBbnkoZmxhZzogQ29tbW9uRmxhZ3MpOiBib29sIHsgcmV0dXJuICh0aGlzLmZsYWdzICYgZmxhZykgIT0gMDsgfVxuICAvKiogU2V0cyBhIHNwZWNpZmljIGZsYWcgb3IgZmxhZ3MuICovXG4gIHNldChmbGFnOiBDb21tb25GbGFncyk6IHZvaWQgeyB0aGlzLmZsYWdzIHw9IGZsYWc7IH1cbn1cblxuLy8gc3BlY2lhbFxuXG4vKiogQnVpbHQtaW4gZGVjb3JhdG9yIGtpbmRzLiAqL1xuZXhwb3J0IGVudW0gRGVjb3JhdG9yS2luZCB7XG4gIENVU1RPTSxcbiAgR0xPQkFMLFxuICBPUEVSQVRPUixcbiAgT1BFUkFUT1JfQklOQVJZLFxuICBPUEVSQVRPUl9QUkVGSVgsXG4gIE9QRVJBVE9SX1BPU1RGSVgsXG4gIFVOTUFOQUdFRCxcbiAgU0VBTEVELFxuICBJTkxJTkUsXG4gIEVYVEVSTkFMLFxuICBCVUlMVElOLFxuICBMQVpZLFxuICBVTlNBRkVcbn1cblxuLyoqIFJldHVybnMgdGhlIGtpbmQgb2YgdGhlIHNwZWNpZmllZCBkZWNvcmF0b3IuIERlZmF1bHRzIHRvIHtAbGluayBEZWNvcmF0b3JLaW5kLkNVU1RPTX0uICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb3JhdG9yTmFtZVRvS2luZChuYW1lOiBFeHByZXNzaW9uKTogRGVjb3JhdG9yS2luZCB7XG4gIC8vIEBnbG9iYWwsIEBpbmxpbmUsIEBvcGVyYXRvciwgQHNlYWxlZCwgQHVubWFuYWdlZFxuICBpZiAobmFtZS5raW5kID09IE5vZGVLaW5kLklERU5USUZJRVIpIHtcbiAgICBsZXQgbmFtZVN0ciA9ICg8SWRlbnRpZmllckV4cHJlc3Npb24+bmFtZSkudGV4dDtcbiAgICBhc3NlcnQobmFtZVN0ci5sZW5ndGgpO1xuICAgIHN3aXRjaCAobmFtZVN0ci5jaGFyQ29kZUF0KDApKSB7XG4gICAgICBjYXNlIENoYXJDb2RlLmI6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJidWlsdGluXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLkJVSUxUSU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5lOiB7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwiZXh0ZXJuYWxcIikgcmV0dXJuIERlY29yYXRvcktpbmQuRVhURVJOQUw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5nOiB7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwiZ2xvYmFsXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLkdMT0JBTDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLmk6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJpbmxpbmVcIikgcmV0dXJuIERlY29yYXRvcktpbmQuSU5MSU5FO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUubDoge1xuICAgICAgICBpZiAobmFtZVN0ciA9PSBcImxhenlcIikgcmV0dXJuIERlY29yYXRvcktpbmQuTEFaWTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLm86IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJvcGVyYXRvclwiKSByZXR1cm4gRGVjb3JhdG9yS2luZC5PUEVSQVRPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLnM6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJzZWFsZWRcIikgcmV0dXJuIERlY29yYXRvcktpbmQuU0VBTEVEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUudToge1xuICAgICAgICBpZiAobmFtZVN0ciA9PSBcInVubWFuYWdlZFwiKSByZXR1cm4gRGVjb3JhdG9yS2luZC5VTk1BTkFHRUQ7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwidW5zYWZlXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLlVOU0FGRTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgIG5hbWUua2luZCA9PSBOb2RlS2luZC5QUk9QRVJUWUFDQ0VTUyAmJlxuICAgICg8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5hbWUpLmV4cHJlc3Npb24ua2luZCA9PSBOb2RlS2luZC5JREVOVElGSUVSXG4gICkge1xuICAgIGxldCBuYW1lU3RyID0gKDxJZGVudGlmaWVyRXhwcmVzc2lvbj4oPFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj5uYW1lKS5leHByZXNzaW9uKS50ZXh0O1xuICAgIGFzc2VydChuYW1lU3RyLmxlbmd0aCk7XG4gICAgbGV0IHByb3BTdHIgPSAoPFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj5uYW1lKS5wcm9wZXJ0eS50ZXh0O1xuICAgIGFzc2VydChwcm9wU3RyLmxlbmd0aCk7XG4gICAgLy8gQG9wZXJhdG9yLmJpbmFyeSwgQG9wZXJhdG9yLnByZWZpeCwgQG9wZXJhdG9yLnBvc3RmaXhcbiAgICBpZiAobmFtZVN0ciA9PSBcIm9wZXJhdG9yXCIpIHtcbiAgICAgIHN3aXRjaCAocHJvcFN0ci5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuYjoge1xuICAgICAgICAgIGlmIChwcm9wU3RyID09IFwiYmluYXJ5XCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLk9QRVJBVE9SX0JJTkFSWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLnA6IHtcbiAgICAgICAgICBzd2l0Y2ggKHByb3BTdHIpIHtcbiAgICAgICAgICAgIGNhc2UgXCJwcmVmaXhcIjogcmV0dXJuIERlY29yYXRvcktpbmQuT1BFUkFUT1JfUFJFRklYO1xuICAgICAgICAgICAgY2FzZSBcInBvc3RmaXhcIjogcmV0dXJuIERlY29yYXRvcktpbmQuT1BFUkFUT1JfUE9TVEZJWDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIERlY29yYXRvcktpbmQuQ1VTVE9NO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGRlY29yYXRvci4gKi9cbmV4cG9ydCBjbGFzcyBEZWNvcmF0b3JOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5ERUNPUkFUT1I7XG5cbiAgLyoqIEJ1aWx0LWluIGtpbmQsIGlmIGFwcGxpY2FibGUuICovXG4gIGRlY29yYXRvcktpbmQ6IERlY29yYXRvcktpbmQ7XG4gIC8qKiBOYW1lIGV4cHJlc3Npb24uICovXG4gIG5hbWU6IEV4cHJlc3Npb247XG4gIC8qKiBBcmd1bWVudCBleHByZXNzaW9ucy4gKi9cbiAgYXJndW1lbnRzOiBFeHByZXNzaW9uW10gfCBudWxsO1xufVxuXG4vKiogQ29tbWVudCBraW5kcy4gKi9cbmV4cG9ydCBlbnVtIENvbW1lbnRLaW5kIHtcbiAgLyoqIExpbmUgY29tbWVudC4gKi9cbiAgTElORSxcbiAgLyoqIFRyaXBsZS1zbGFzaCBjb21tZW50LiAqL1xuICBUUklQTEUsXG4gIC8qKiBCbG9jayBjb21tZW50LiAqL1xuICBCTE9DS1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNvbW1lbnQuICovXG5leHBvcnQgY2xhc3MgQ29tbWVudE5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLkNPTU1FTlQ7XG5cbiAgLyoqIENvbW1lbnQga2luZC4gKi9cbiAgY29tbWVudEtpbmQ6IENvbW1lbnRLaW5kO1xuICAvKiogQ29tbWVudCB0ZXh0LiAqL1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8vIGV4cHJlc3Npb25zXG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBleHByZXNzaW9uIG5vZGVzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV4cHJlc3Npb24gZXh0ZW5kcyBOb2RlIHsgfVxuXG4vKiogUmVwcmVzZW50cyBhbiBpZGVudGlmaWVyIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgSWRlbnRpZmllckV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklERU5USUZJRVI7XG5cbiAgLyoqIFRleHR1YWwgbmFtZS4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogU3ltYm9sLiAqL1xuICBzeW1ib2w6IHN0cmluZzsgLy8gVE9ETzogc3ltYm9sXG4gIC8qKiBXaGV0aGVyIHF1b3RlZCBvciBub3QuICovXG4gIGlzUXVvdGVkOiBib29sO1xufVxuXG4vKiogSW5kaWNhdGVzIHRoZSBraW5kIG9mIGEgbGl0ZXJhbC4gKi9cbmV4cG9ydCBlbnVtIExpdGVyYWxLaW5kIHtcbiAgRkxPQVQsXG4gIElOVEVHRVIsXG4gIFNUUklORyxcbiAgUkVHRVhQLFxuICBBUlJBWSxcbiAgT0JKRUNUXG59XG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBsaXRlcmFsIGV4cHJlc3Npb25zLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExpdGVyYWxFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5MSVRFUkFMO1xuXG4gIC8qKiBTcGVjaWZpYyBsaXRlcmFsIGtpbmQuICovXG4gIGxpdGVyYWxLaW5kOiBMaXRlcmFsS2luZDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYFtdYCBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIExpdGVyYWxFeHByZXNzaW9uIHtcbiAgbGl0ZXJhbEtpbmQgPSBMaXRlcmFsS2luZC5BUlJBWTtcblxuICAvKiogTmVzdGVkIGVsZW1lbnQgZXhwcmVzc2lvbnMuICovXG4gIGVsZW1lbnRFeHByZXNzaW9uczogKEV4cHJlc3Npb24gfCBudWxsKVtdO1xufVxuXG4vKiogSW5kaWNhdGVzIHRoZSBraW5kIG9mIGFuIGFzc2VydGlvbi4gKi9cbmV4cG9ydCBlbnVtIEFzc2VydGlvbktpbmQge1xuICBQUkVGSVgsXG4gIEFTLFxuICBOT05OVUxMXG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGFzc2VydGlvbiBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VydGlvbkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLkFTU0VSVElPTjtcblxuICAvKiogU3BlY2lmaWMga2luZCBvZiB0aGlzIGFzc2VydGlvbi4gKi9cbiAgYXNzZXJ0aW9uS2luZDogQXNzZXJ0aW9uS2luZDtcbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYXNzZXJ0ZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBUYXJnZXQgdHlwZS4gKi9cbiAgdG9UeXBlOiBUeXBlTm9kZSB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYmluYXJ5IGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQmluYXJ5RXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQklOQVJZO1xuXG4gIC8qKiBPcGVyYXRvciB0b2tlbi4gKi9cbiAgb3BlcmF0b3I6IFRva2VuO1xuICAvKiogTGVmdC1oYW5kIHNpZGUgZXhwcmVzc2lvbiAqL1xuICBsZWZ0OiBFeHByZXNzaW9uO1xuICAvKiogUmlnaHQtaGFuZCBzaWRlIGV4cHJlc3Npb24uICovXG4gIHJpZ2h0OiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNhbGwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQ0FMTDtcblxuICAvKiogQ2FsbGVkIGV4cHJlc3Npb24uIFVzdWFsbHkgYW4gaWRlbnRpZmllciBvciBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbi4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbiAgLyoqIFByb3ZpZGVkIHR5cGUgYXJndW1lbnRzLiAqL1xuICB0eXBlQXJndW1lbnRzOiBUeXBlTm9kZVtdIHwgbnVsbDtcbiAgLyoqIFByb3ZpZGVkIGFyZ3VtZW50cy4gKi9cbiAgYXJndW1lbnRzOiBFeHByZXNzaW9uW107XG5cbiAgLyoqIEdldHMgdGhlIHR5cGUgYXJndW1lbnRzIHJhbmdlIGZvciByZXBvcnRpbmcuICovXG4gIGdldCB0eXBlQXJndW1lbnRzUmFuZ2UoKTogUmFuZ2Uge1xuICAgIHZhciB0eXBlQXJndW1lbnRzID0gdGhpcy50eXBlQXJndW1lbnRzO1xuICAgIHZhciBudW1UeXBlQXJndW1lbnRzOiBpMzI7XG4gICAgaWYgKHR5cGVBcmd1bWVudHMgJiYgKG51bVR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBSYW5nZS5qb2luKHR5cGVBcmd1bWVudHNbMF0ucmFuZ2UsIHR5cGVBcmd1bWVudHNbbnVtVHlwZUFyZ3VtZW50cyAtIDFdLnJhbmdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5yYW5nZTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBhcmd1bWVudHMgcmFuZ2UgZm9yIHJlcG9ydGluZy4gKi9cbiAgZ2V0IGFyZ3VtZW50c1JhbmdlKCk6IFJhbmdlIHtcbiAgICB2YXIgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgIHZhciBudW1Bcmd1bWVudHMgPSBhcmdzLmxlbmd0aDtcbiAgICBpZiAobnVtQXJndW1lbnRzKSB7XG4gICAgICByZXR1cm4gUmFuZ2Uuam9pbihhcmdzWzBdLnJhbmdlLCBhcmdzW251bUFyZ3VtZW50cyAtIDFdLnJhbmdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5yYW5nZTtcbiAgfVxufVxuXG4vKiogUmVwcmVzZW50cyBhIGNsYXNzIGV4cHJlc3Npb24gdXNpbmcgdGhlICdjbGFzcycga2V5d29yZC4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0V4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLkNMQVNTO1xuXG4gIC8qKiBJbmxpbmUgY2xhc3MgZGVjbGFyYXRpb24uICovXG4gIGRlY2xhcmF0aW9uOiBDbGFzc0RlY2xhcmF0aW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNvbW1hIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgbXVsdGlwbGUgZXhwcmVzc2lvbnMuICovXG5leHBvcnQgY2xhc3MgQ29tbWFFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5DT01NQTtcblxuICAvKiogU2VxdWVudGlhbCBleHByZXNzaW9ucy4gKi9cbiAgZXhwcmVzc2lvbnM6IEV4cHJlc3Npb25bXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgY29uc3RydWN0b3JgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0b3JFeHByZXNzaW9uIGV4dGVuZHMgSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQ09OU1RSVUNUT1I7XG4gIHRleHQgPSBcImNvbnN0cnVjdG9yXCI7XG4gIHN5bWJvbCA9IENvbW1vblN5bWJvbHMuY29uc3RydWN0b3I7XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgYWNjZXNzIGV4cHJlc3Npb24sIGUuZy4sIGFycmF5IGFjY2Vzcy4gKi9cbmV4cG9ydCBjbGFzcyBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUztcblxuICAvKiogRXhwcmVzc2lvbiBiZWluZyBhY2Nlc3NlZC4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbiAgLyoqIEVsZW1lbnQgb2YgdGhlIGV4cHJlc3Npb24gYmVpbmcgYWNjZXNzZWQuICovXG4gIGVsZW1lbnRFeHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGZsb2F0IGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBGbG9hdExpdGVyYWxFeHByZXNzaW9uIGV4dGVuZHMgTGl0ZXJhbEV4cHJlc3Npb24ge1xuICBsaXRlcmFsS2luZCA9IExpdGVyYWxLaW5kLkZMT0FUO1xuXG4gIC8qKiBGbG9hdCB2YWx1ZS4gKi9cbiAgdmFsdWU6IGY2NDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBmdW5jdGlvbiBleHByZXNzaW9uIHVzaW5nIHRoZSAnZnVuY3Rpb24nIGtleXdvcmQuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25FeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5GVU5DVElPTjtcblxuICAvKiogSW5saW5lIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLiAqL1xuICBkZWNsYXJhdGlvbjogRnVuY3Rpb25EZWNsYXJhdGlvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGluc3RhbmNlb2ZgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VPZkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklOU1RBTkNFT0Y7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYXNzZXJ0ZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBUeXBlIHRvIHRlc3QgZm9yLiAqL1xuICBpc1R5cGU6IFR5cGVOb2RlO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBpbnRlZ2VyIGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuSU5URUdFUjtcblxuICAvKiogSW50ZWdlciB2YWx1ZS4gKi9cbiAgdmFsdWU6IEk2NDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbmV3YCBleHByZXNzaW9uLiBMaWtlIGEgY2FsbCBidXQgd2l0aCBpdHMgb3duIGtpbmQuICovXG5leHBvcnQgY2xhc3MgTmV3RXhwcmVzc2lvbiBleHRlbmRzIENhbGxFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLk5FVztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbnVsbGAgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBOdWxsRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLk5VTEw7XG4gIHRleHQgPSBcIm51bGxcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy5udWxsXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gb2JqZWN0IGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIExpdGVyYWxFeHByZXNzaW9uIHtcbiAgbGl0ZXJhbEtpbmQgPSBMaXRlcmFsS2luZC5PQkpFQ1Q7XG5cbiAgLyoqIEZpZWxkIG5hbWVzLiAqL1xuICBuYW1lczogSWRlbnRpZmllckV4cHJlc3Npb25bXTtcbiAgLyoqIEZpZWxkIHZhbHVlcy4gKi9cbiAgdmFsdWVzOiBFeHByZXNzaW9uW107XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgcGFyZW50aGVzaXplZCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5QQVJFTlRIRVNJWkVEO1xuXG4gIC8qKiBFeHByZXNzaW9uIGluIHBhcmVudGhlc2lzLiAqL1xuICBleHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHByb3BlcnR5IGFjY2VzcyBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYWNjZXNzZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBQcm9wZXJ0eSBvZiB0aGUgZXhwcmVzc2lvbiBiZWluZyBhY2Nlc3NlZC4gKi9cbiAgcHJvcGVydHk6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuUkVHRVhQO1xuXG4gIC8qKiBSZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi4gKi9cbiAgcGF0dGVybjogc3RyaW5nO1xuICAvKiogUmVndWxhciBleHByZXNzaW9uIGZsYWdzLiAqL1xuICBwYXR0ZXJuRmxhZ3M6IHN0cmluZztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB0ZXJuYXJ5IGV4cHJlc3Npb24sIGkuZS4sIHNob3J0IGlmIG5vdGF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIFRlcm5hcnlFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5URVJOQVJZO1xuXG4gIC8qKiBDb25kaXRpb24gZXhwcmVzc2lvbi4gKi9cbiAgY29uZGl0aW9uOiBFeHByZXNzaW9uO1xuICAvKiogRXhwcmVzc2lvbiBleGVjdXRlZCB3aGVuIGNvbmRpdGlvbiBpcyBgdHJ1ZWAuICovXG4gIGlmVGhlbjogRXhwcmVzc2lvbjtcbiAgLyoqIEV4cHJlc3Npb24gZXhlY3V0ZWQgd2hlbiBjb25kaXRpb24gaXMgYGZhbHNlYC4gKi9cbiAgaWZFbHNlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHN0cmluZyBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuU1RSSU5HO1xuXG4gIC8qKiBTdHJpbmcgdmFsdWUgd2l0aG91dCBxdW90ZXMuICovXG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYHN1cGVyYCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFN1cGVyRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlNVUEVSO1xuICB0ZXh0ID0gXCJzdXBlclwiO1xuICBzeW1ib2wgPSBDb21tb25TeW1ib2xzLnN1cGVyXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdGhpc2AgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBUaGlzRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlRISVM7XG4gIHRleHQgPSBcInRoaXNcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy50aGlzXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdHJ1ZWAgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBUcnVlRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlRSVUU7XG4gIHRleHQgPSBcInRydWVcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy50cnVlXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgZmFsc2VgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgRmFsc2VFeHByZXNzaW9uIGV4dGVuZHMgSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuRkFMU0U7XG4gIHRleHQgPSBcImZhbHNlXCI7XG4gIHN5bWJvbCA9IENvbW1vblN5bWJvbHMuZmFsc2VfO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgdW5hcnkgZXhwcmVzc2lvbnMuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5hcnlFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG5cbiAgLyoqIE9wZXJhdG9yIHRva2VuLiAqL1xuICBvcGVyYXRvcjogVG9rZW47XG4gIC8qKiBPcGVyYW5kIGV4cHJlc3Npb24uICovXG4gIG9wZXJhbmQ6IEV4cHJlc3Npb247XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5hcnkgcG9zdGZpeCBleHByZXNzaW9uLCBlLmcuIGEgcG9zdGZpeCBpbmNyZW1lbnQuICovXG5leHBvcnQgY2xhc3MgVW5hcnlQb3N0Zml4RXhwcmVzc2lvbiBleHRlbmRzIFVuYXJ5RXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5VTkFSWVBPU1RGSVg7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5hcnkgcHJlZml4IGV4cHJlc3Npb24sIGUuZy4gYSBuZWdhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBVbmFyeVByZWZpeEV4cHJlc3Npb24gZXh0ZW5kcyBVbmFyeUV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuVU5BUllQUkVGSVg7XG59XG5cbi8vIHN0YXRlbWVudHNcblxuLyoqIEJhc2UgY2xhc3Mgb2YgYWxsIHN0YXRlbWVudCBub2Rlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHsgfVxuXG4vKiogSW5kaWNhdGVzIHRoZSBzcGVjaWZpYyBraW5kIG9mIGEgc291cmNlLiAqL1xuZXhwb3J0IGVudW0gU291cmNlS2luZCB7XG4gIC8qKiBVc2VyLXByb3ZpZGVkIGZpbGUuICovXG4gIFVTRVIgPSAwLFxuICAvKiogVXNlci1wcm92aWRlZCBlbnRyeSBmaWxlLiAqL1xuICBVU0VSX0VOVFJZID0gMSxcbiAgLyoqIExpYnJhcnktcHJvdmlkZWQgZmlsZS4gKi9cbiAgTElCUkFSWSA9IDIsXG4gIC8qKiBMaWJyYXJ5LXByb3ZpZGVkIGVudHJ5IGZpbGUuICovXG4gIExJQlJBUllfRU5UUlkgPSAzXG59XG5cbi8qKiBBIHRvcC1sZXZlbCBzb3VyY2Ugbm9kZS4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2UgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLlNPVVJDRTtcbiAgcGFyZW50ID0gbnVsbDtcblxuICAvKiogU291cmNlIGtpbmQuICovXG4gIHNvdXJjZUtpbmQ6IFNvdXJjZUtpbmQ7XG4gIC8qKiBOb3JtYWxpemVkIHBhdGguICovXG4gIG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmc7XG4gIC8qKiBQYXRoIHVzZWQgaW50ZXJuYWxseS4gKi9cbiAgaW50ZXJuYWxQYXRoOiBzdHJpbmc7XG4gIC8qKiBTaW1wbGUgcGF0aCAobGFzdCBwYXJ0IHdpdGhvdXQgZXh0ZW5zaW9uKS4gKi9cbiAgc2ltcGxlUGF0aDogc3RyaW5nO1xuICAvKiogQ29udGFpbmVkIHN0YXRlbWVudHMuICovXG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdO1xuICAvKiogRnVsbCBzb3VyY2UgdGV4dC4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogVG9rZW5pemVyIHJlZmVyZW5jZS4gKi9cbiAgdG9rZW5pemVyOiBUb2tlbml6ZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIFNvdXJjZSBtYXAgaW5kZXguICovXG4gIGRlYnVnSW5mb0luZGV4OiBpMzIgPSAtMTtcbiAgLyoqIFJlLWV4cG9ydGVkIHNvdXJjZXMuICovXG4gIGV4cG9ydFBhdGhzOiBTZXQ8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IHNvdXJjZSBub2RlLiAqL1xuICBjb25zdHJ1Y3Rvcihub3JtYWxpemVkUGF0aDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIGtpbmQ6IFNvdXJjZUtpbmQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc291cmNlS2luZCA9IGtpbmQ7XG4gICAgdGhpcy5ub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoO1xuICAgIHZhciBpbnRlcm5hbFBhdGggPSBtYW5nbGVJbnRlcm5hbFBhdGgodGhpcy5ub3JtYWxpemVkUGF0aCk7XG4gICAgdGhpcy5pbnRlcm5hbFBhdGggPSBpbnRlcm5hbFBhdGg7XG4gICAgdmFyIHBvcyA9IGludGVybmFsUGF0aC5sYXN0SW5kZXhPZihQQVRIX0RFTElNSVRFUik7XG4gICAgdGhpcy5zaW1wbGVQYXRoID0gcG9zID49IDAgPyBpbnRlcm5hbFBhdGguc3Vic3RyaW5nKHBvcyArIDEpIDogaW50ZXJuYWxQYXRoO1xuICAgIHRoaXMuc3RhdGVtZW50cyA9IG5ldyBBcnJheSgpO1xuICAgIHRoaXMucmFuZ2UgPSBuZXcgUmFuZ2UodGhpcywgMCwgdGV4dC5sZW5ndGgpO1xuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gIH1cblxuICBnZXQgaXNMaWJyYXJ5KCk6IGJvb2wge1xuICAgIHZhciBraW5kID0gdGhpcy5zb3VyY2VLaW5kO1xuICAgIHJldHVybiBraW5kID09IFNvdXJjZUtpbmQuTElCUkFSWSB8fCBraW5kID09IFNvdXJjZUtpbmQuTElCUkFSWV9FTlRSWTtcbiAgfVxufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgZGVjbGFyYXRpb24gc3RhdGVtZW50cy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZWNsYXJhdGlvblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIC8qKiBTaW1wbGUgbmFtZSBiZWluZyBkZWNsYXJlZC4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBBcnJheSBvZiBkZWNvcmF0b3JzLiAqL1xuICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JOb2RlW10gfCBudWxsID0gbnVsbDtcbiAgLyoqIENvbW1vbiBmbGFncyBpbmRpY2F0aW5nIHNwZWNpZmljIHRyYWl0cy4gKi9cbiAgZmxhZ3M6IENvbW1vbkZsYWdzID0gQ29tbW9uRmxhZ3MuTk9ORTtcblxuICAvKiogVGVzdHMgaWYgdGhpcyBub2RlIGhhcyB0aGUgc3BlY2lmaWVkIGZsYWcgb3IgZmxhZ3MuICovXG4gIGlzKGZsYWc6IENvbW1vbkZsYWdzKTogYm9vbCB7IHJldHVybiAodGhpcy5mbGFncyAmIGZsYWcpID09IGZsYWc7IH1cbiAgLyoqIFRlc3RzIGlmIHRoaXMgbm9kZSBoYXMgb25lIG9mIHRoZSBzcGVjaWZpZWQgZmxhZ3MuICovXG4gIGlzQW55KGZsYWc6IENvbW1vbkZsYWdzKTogYm9vbCB7IHJldHVybiAodGhpcy5mbGFncyAmIGZsYWcpICE9IDA7IH1cbiAgLyoqIFNldHMgYSBzcGVjaWZpYyBmbGFnIG9yIGZsYWdzLiAqL1xuICBzZXQoZmxhZzogQ29tbW9uRmxhZ3MpOiB2b2lkIHsgdGhpcy5mbGFncyB8PSBmbGFnOyB9XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGluZGV4IHNpZ25hdHVyZSBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuSU5ERVhTSUdOQVRVUkVERUNMQVJBVElPTjtcblxuICAvKiogS2V5IHR5cGUuICovXG4gIGtleVR5cGU6IE5hbWVkVHlwZU5vZGU7XG4gIC8qKiBWYWx1ZSB0eXBlLiAqL1xuICB2YWx1ZVR5cGU6IFR5cGVOb2RlO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgdmFyaWFibGUtbGlrZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhcmlhYmxlTGlrZURlY2xhcmF0aW9uU3RhdGVtZW50IGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuXG4gIC8qKiBWYXJpYWJsZSB0eXBlLiAqL1xuICB0eXBlOiBUeXBlTm9kZSB8IG51bGw7XG4gIC8qKiBWYXJpYWJsZSBpbml0aWFsaXplci4gKi9cbiAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGJsb2NrIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBCbG9ja1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5CTE9DSztcblxuICAvKiogQ29udGFpbmVkIHN0YXRlbWVudHMuICovXG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBicmVha2Agc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEJyZWFrU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkJSRUFLO1xuXG4gIC8qKiBUYXJnZXQgbGFiZWwsIGlmIGFwcGxpY2FibGUuICovXG4gIGxhYmVsOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYGNsYXNzYCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0RlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuQ0xBU1NERUNMQVJBVElPTjtcblxuICAvKiogQWNjZXB0ZWQgdHlwZSBwYXJhbWV0ZXJzLiAqL1xuICB0eXBlUGFyYW1ldGVyczogVHlwZVBhcmFtZXRlck5vZGVbXSB8IG51bGw7XG4gIC8qKiBCYXNlIGNsYXNzIHR5cGUgYmVpbmcgZXh0ZW5kZWQsIGlmIGFueS4gKi9cbiAgZXh0ZW5kc1R5cGU6IE5hbWVkVHlwZU5vZGUgfCBudWxsOyAvLyBjYW4ndCBiZSBhIGZ1bmN0aW9uXG4gIC8qKiBJbnRlcmZhY2UgdHlwZXMgYmVpbmcgaW1wbGVtZW50ZWQsIGlmIGFueS4gKi9cbiAgaW1wbGVtZW50c1R5cGVzOiBOYW1lZFR5cGVOb2RlW10gfCBudWxsOyAvLyBjYW4ndCBiZSBmdW5jdGlvbnNcbiAgLyoqIENsYXNzIG1lbWJlciBkZWNsYXJhdGlvbnMuICovXG4gIG1lbWJlcnM6IERlY2xhcmF0aW9uU3RhdGVtZW50W107XG5cbiAgZ2V0IGlzR2VuZXJpYygpOiBib29sIHtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLnR5cGVQYXJhbWV0ZXJzO1xuICAgIHJldHVybiB0eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgY29udGludWVgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBDb250aW51ZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5DT05USU5VRTtcblxuICAvKiogVGFyZ2V0IGxhYmVsLCBpZiBhcHBsaWNhYmxlLiAqL1xuICBsYWJlbDogSWRlbnRpZmllckV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBkb2Agc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIERvU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkRPO1xuXG4gIC8qKiBTdGF0ZW1lbnQgYmVpbmcgbG9vcGVkIG92ZXIuICovXG4gIHN0YXRlbWVudDogU3RhdGVtZW50O1xuICAvKiogQ29uZGl0aW9uIHdoZW4gdG8gcmVwZWF0LiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb247XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGVtcHR5IHN0YXRlbWVudCwgaS5lLiwgYSBzZW1pY29sb24gdGVybWluYXRpbmcgbm90aGluZy4gKi9cbmV4cG9ydCBjbGFzcyBFbXB0eVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FTVBUWTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGVudW1gIGRlY2xhcmF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIEVudW1EZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVOVU1ERUNMQVJBVElPTjtcblxuICAvKiogRW51bSB2YWx1ZSBkZWNsYXJhdGlvbnMuICovXG4gIHZhbHVlczogRW51bVZhbHVlRGVjbGFyYXRpb25bXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YWx1ZSBvZiBhbiBgZW51bWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgRW51bVZhbHVlRGVjbGFyYXRpb24gZXh0ZW5kcyBWYXJpYWJsZUxpa2VEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FTlVNVkFMVUVERUNMQVJBVElPTjtcbiAgLy8gbmFtZSBpcyBpbmhlcml0ZWRcblxuICAvKiogVmFsdWUgZXhwcmVzc2lvbi4gKi9cbiAgdmFsdWU6IEV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0IGltcG9ydGAgc3RhdGVtZW50IG9mIGFuIGludGVyZmFjZS4gKi9cbmV4cG9ydCBjbGFzcyBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVElNUE9SVDtcblxuICAvKiogSWRlbnRpZmllciBiZWluZyBpbXBvcnRlZC4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBJZGVudGlmaWVyIGJlaW5nIGV4cG9ydGVkLiAqL1xuICBleHRlcm5hbE5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG1lbWJlciBvZiBhbiBgZXhwb3J0YCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0TWVtYmVyIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5FWFBPUlRNRU1CRVI7XG5cbiAgLyoqIExvY2FsIGlkZW50aWZpZXIuICovXG4gIGxvY2FsTmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBFeHBvcnRlZCBpZGVudGlmaWVyLiAqL1xuICBleHBvcnRlZE5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0YCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0U3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVDtcblxuICAvKiogQXJyYXkgb2YgbWVtYmVycyBpZiBhIHNldCBvZiBuYW1lZCBleHBvcnRzLCBvciBgbnVsbGAgaWYgYSBmaWxlIGV4cG9ydC4gKi9cbiAgbWVtYmVyczogRXhwb3J0TWVtYmVyW10gfCBudWxsO1xuICAvKiogUGF0aCBiZWluZyBleHBvcnRlZCBmcm9tLCBpZiBhcHBsaWNhYmxlLiAqL1xuICBwYXRoOiBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBOb3JtYWxpemVkIHBhdGgsIGlmIGBwYXRoYCBpcyBzZXQuICovXG4gIG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmcgfCBudWxsO1xuICAvKiogTWFuZ2xlZCBpbnRlcm5hbCBwYXRoIGJlaW5nIHJlZmVyZW5jZWQsIGlmIGBwYXRoYCBpcyBzZXQuICovXG4gIGludGVybmFsUGF0aDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhIGRlY2xhcmVkIGV4cG9ydC4gKi9cbiAgaXNEZWNsYXJlOiBib29sO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0IGRlZmF1bHRgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBFeHBvcnREZWZhdWx0U3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ7XG5cbiAgLyoqIERlY2xhcmF0aW9uIGJlaW5nIGV4cG9ydGVkIGFzIGRlZmF1bHQuICovXG4gIGRlY2xhcmF0aW9uOiBEZWNsYXJhdGlvblN0YXRlbWVudDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gZXhwcmVzc2lvbiB0aGF0IGlzIHVzZWQgYXMgYSBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FWFBSRVNTSU9OO1xuXG4gIC8qKiBFeHByZXNzaW9uIGJlaW5nIHVzZWQgYXMgYSBzdGF0ZW1lbnQuKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBmaWVsZCBkZWNsYXJhdGlvbiB3aXRoaW4gYSBgY2xhc3NgLiAqL1xuZXhwb3J0IGNsYXNzIEZpZWxkRGVjbGFyYXRpb24gZXh0ZW5kcyBWYXJpYWJsZUxpa2VEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OO1xuXG4gIC8qKiBQYXJhbWV0ZXIgaW5kZXggaWYgZGVjbGFyZWQgYXMgYSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIsIG90aGVyd2lzZSBgLTFgLiAqL1xuICBwYXJhbWV0ZXJJbmRleDogaTMyID0gLTE7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYGZvcmAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEZvclN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GT1I7XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVyIHN0YXRlbWVudCwgaWYgcHJlc2VudC5cbiAgICogRWl0aGVyIGEge0BsaW5rIFZhcmlhYmxlU3RhdGVtZW50fSBvciB7QGxpbmsgRXhwcmVzc2lvblN0YXRlbWVudH0uXG4gICAqL1xuICBpbml0aWFsaXplcjogU3RhdGVtZW50IHwgbnVsbDtcbiAgLyoqIENvbmRpdGlvbiBleHByZXNzaW9uLCBpZiBwcmVzZW50LiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogSW5jcmVtZW50b3IgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4gKi9cbiAgaW5jcmVtZW50b3I6IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogU3RhdGVtZW50IGJlaW5nIGxvb3BlZCBvdmVyLiAqL1xuICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDtcbn1cblxuLyoqIEluZGljYXRlcyB0aGUga2luZCBvZiBhbiBhcnJheSBmdW5jdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEFycm93S2luZCB7XG4gIC8qKiBOb3QgYW4gYXJyb3cgZnVuY3Rpb24uICovXG4gIE5PTkUsXG4gIC8qKiBQYXJlbnRoZXNpemVkIHBhcmFtZXRlciBsaXN0LiAqL1xuICBBUlJPV19QQVJFTlRIRVNJWkVELFxuICAvKiogU2luZ2xlIHBhcmFtZXRlciB3aXRob3V0IHBhcmVudGhlc2lzLiAqL1xuICBBUlJPV19TSU5HTEVcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgZnVuY3Rpb25gIGRlY2xhcmF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GVU5DVElPTkRFQ0xBUkFUSU9OO1xuXG4gIC8qKiBUeXBlIHBhcmFtZXRlcnMsIGlmIGFueS4gKi9cbiAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsO1xuICAvKiogRnVuY3Rpb24gc2lnbmF0dXJlLiAqL1xuICBzaWduYXR1cmU6IEZ1bmN0aW9uVHlwZU5vZGU7XG4gIC8qKiBCb2R5IHN0YXRlbWVudC4gVXN1YWxseSBhIGJsb2NrLiAqL1xuICBib2R5OiBTdGF0ZW1lbnQgfCBudWxsO1xuICAvKiogQXJyb3cgZnVuY3Rpb24ga2luZCwgaWYgYXBwbGljYWJsZS4gKi9cbiAgYXJyb3dLaW5kOiBBcnJvd0tpbmQ7XG5cbiAgZ2V0IGlzR2VuZXJpYygpOiBib29sIHtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLnR5cGVQYXJhbWV0ZXJzO1xuICAgIHJldHVybiB0eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKiogQ2xvbmVzIHRoaXMgZnVuY3Rpb24gZGVjbGFyYXRpb24uICovXG4gIGNsb25lKCk6IEZ1bmN0aW9uRGVjbGFyYXRpb24ge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgICB0aGlzLm5hbWUsXG4gICAgICB0aGlzLnR5cGVQYXJhbWV0ZXJzLFxuICAgICAgdGhpcy5zaWduYXR1cmUsXG4gICAgICB0aGlzLmJvZHksXG4gICAgICB0aGlzLmRlY29yYXRvcnMsXG4gICAgICB0aGlzLmZsYWdzLFxuICAgICAgdGhpcy5hcnJvd0tpbmQsXG4gICAgICB0aGlzLnJhbmdlXG4gICAgKTtcbiAgfVxufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaWZgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBJZlN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5JRjtcblxuICAvKiogQ29uZGl0aW9uLiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb247XG4gIC8qKiBTdGF0ZW1lbnQgZXhlY3V0ZWQgd2hlbiBjb25kaXRpb24gaXMgYHRydWVgLiAqL1xuICBpZlRydWU6IFN0YXRlbWVudDtcbiAgLyoqIFN0YXRlbWVudCBleGVjdXRlZCB3aGVuIGNvbmRpdGlvbiBpcyBgZmFsc2VgLiAqL1xuICBpZkZhbHNlOiBTdGF0ZW1lbnQgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaW1wb3J0YCBkZWNsYXJhdGlvbiBwYXJ0IG9mIGFuIHtAbGluayBJbXBvcnRTdGF0ZW1lbnR9LiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydERlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuSU1QT1JUREVDTEFSQVRJT047XG5cbiAgLyoqIElkZW50aWZpZXIgYmVpbmcgaW1wb3J0ZWQuICovXG4gIGZvcmVpZ25OYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGltcG9ydGAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydFN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5JTVBPUlQ7XG5cbiAgLyoqIEFycmF5IG9mIG1lbWJlciBkZWNsYXJhdGlvbnMgb3IgYG51bGxgIGlmIGFuIGFzdGVyaXNrIGltcG9ydC4gKi9cbiAgZGVjbGFyYXRpb25zOiBJbXBvcnREZWNsYXJhdGlvbltdIHwgbnVsbDtcbiAgLyoqIE5hbWUgb2YgdGhlIGxvY2FsIG5hbWVzcGFjZSwgaWYgYW4gYXN0ZXJpc2sgaW1wb3J0LiAqL1xuICBuYW1lc3BhY2VOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBQYXRoIGJlaW5nIGltcG9ydGVkIGZyb20uICovXG4gIHBhdGg6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uO1xuICAvKiogTm9ybWFsaXplZCBwYXRoLiAqL1xuICBub3JtYWxpemVkUGF0aDogc3RyaW5nO1xuICAvKiogTWFuZ2xlZCBpbnRlcm5hbCBwYXRoIGJlaW5nIHJlZmVyZW5jZWQuICovXG4gIGludGVybmFsUGF0aDogc3RyaW5nO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaW50ZXJmYXJjZWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgSW50ZXJmYWNlRGVjbGFyYXRpb24gZXh0ZW5kcyBDbGFzc0RlY2xhcmF0aW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklOVEVSRkFDRURFQ0xBUkFUSU9OO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiB3aXRoaW4gYSBgY2xhc3NgLiAqL1xuZXhwb3J0IGNsYXNzIE1ldGhvZERlY2xhcmF0aW9uIGV4dGVuZHMgRnVuY3Rpb25EZWNsYXJhdGlvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5NRVRIT0RERUNMQVJBVElPTjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbmFtZXNwYWNlYCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLk5BTUVTUEFDRURFQ0xBUkFUSU9OO1xuXG4gIC8qKiBBcnJheSBvZiBuYW1lc3BhY2UgbWVtYmVycy4gKi9cbiAgbWVtYmVyczogU3RhdGVtZW50W107XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYHJldHVybmAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIFJldHVyblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5SRVRVUk47XG5cbiAgLyoqIFZhbHVlIGV4cHJlc3Npb24gYmVpbmcgcmV0dXJuZWQsIGlmIHByZXNlbnQuICovXG4gIHZhbHVlOiBFeHByZXNzaW9uIHwgbnVsbDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgYGNhc2VgIHdpdGhpbiBhIGBzd2l0Y2hgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBTd2l0Y2hDYXNlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5TV0lUQ0hDQVNFO1xuXG4gIC8qKiBMYWJlbCBleHByZXNzaW9uLiBgbnVsbGAgaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGNhc2UuICovXG4gIGxhYmVsOiBFeHByZXNzaW9uIHwgbnVsbDtcbiAgLyoqIENvbnRhaW5lZCBzdGF0ZW1lbnRzLiAqL1xuICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgc3dpdGNoYCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgU3dpdGNoU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLlNXSVRDSDtcblxuICAvKiogQ29uZGl0aW9uIGV4cHJlc3Npb24uICovXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbjtcbiAgLyoqIENvbnRhaW5lZCBjYXNlcy4gKi9cbiAgY2FzZXM6IFN3aXRjaENhc2VbXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdGhyb3dgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBUaHJvd1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5USFJPVztcblxuICAvKiogVmFsdWUgZXhwcmVzc2lvbiBiZWluZyB0aHJvd24uICovXG4gIHZhbHVlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGB0cnlgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBUcnlTdGF0ZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVFJZO1xuXG4gIC8qKiBDb250YWluZWQgc3RhdGVtZW50cy4gKi9cbiAgc3RhdGVtZW50czogU3RhdGVtZW50W107XG4gIC8qKiBFeGNlcHRpb24gdmFyaWFibGUgbmFtZSwgaWYgYSBgY2F0Y2hgIGNsYXVzZSBpcyBwcmVzZW50LiAqL1xuICBjYXRjaFZhcmlhYmxlOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBTdGF0ZW1lbnRzIGJlaW5nIGV4ZWN1dGVkIG9uIGNhdGNoLCBpZiBhIGBjYXRjaGAgY2xhdXNlIGlzIHByZXNlbnQuICovXG4gIGNhdGNoU3RhdGVtZW50czogU3RhdGVtZW50W10gfCBudWxsO1xuICAvKiogU3RhdGVtZW50cyBiZWluZyBleGVjdXRlZCBhZnRlcndhcmRzLCBpZiBhIGBmaW5hbGx5YCBjbGF1c2UgaXMgcHJlc2VudC4gKi9cbiAgZmluYWxseVN0YXRlbWVudHM6IFN0YXRlbWVudFtdIHwgbnVsbDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdHlwZWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgVHlwZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OO1xuXG4gIC8qKiBUeXBlIHBhcmFtZXRlcnMsIGlmIGFueS4gKi9cbiAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsO1xuICAvKiogVHlwZSBiZWluZyBhbGlhc2VkLiAqL1xuICB0eXBlOiBUeXBlTm9kZTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBwYXJ0IG9mIGEge0BsaW5rIFZhcmlhYmxlU3RhdGVtZW50fS4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGV4dGVuZHMgVmFyaWFibGVMaWtlRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVkFSSUFCTEVERUNMQVJBVElPTjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YXJpYWJsZSBzdGF0ZW1lbnQgd3JhcHBpbmcge0BsaW5rIFZhcmlhYmxlRGVjbGFyYXRpb259cy4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5WQVJJQUJMRTtcblxuICAvKiogQXJyYXkgb2YgZGVjb3JhdG9ycy4gKi9cbiAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbDtcbiAgLyoqIEFycmF5IG9mIG1lbWJlciBkZWNsYXJhdGlvbnMuICovXG4gIGRlY2xhcmF0aW9uczogVmFyaWFibGVEZWNsYXJhdGlvbltdO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHZvaWQgc3RhdGVtZW50IGRyb3BwaW5nIGFuIGV4cHJlc3Npb24ncyB2YWx1ZS4gKi9cbmV4cG9ydCBjbGFzcyBWb2lkU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLlZPSUQ7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgZHJvcHBlZC4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgd2hpbGVgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBXaGlsZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5XSElMRTtcblxuICAvKiogQ29uZGl0aW9uIGV4cHJlc3Npb24uICovXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbjtcbiAgLyoqIFN0YXRlbWVudCBiZWluZyBsb29wZWQgb3Zlci4gKi9cbiAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ7XG59XG5cbi8qKiBGaW5kcyB0aGUgZmlyc3QgZGVjb3JhdG9yIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQga2luZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGVjb3JhdG9yKGtpbmQ6IERlY29yYXRvcktpbmQsIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwpOiBEZWNvcmF0b3JOb2RlIHwgbnVsbCB7XG4gIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgbGV0IGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICBpZiAoZGVjb3JhdG9yLmRlY29yYXRvcktpbmQgPT0ga2luZCkgcmV0dXJuIGRlY29yYXRvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKiBNYW5nbGVzIGFuIGV4dGVybmFsIHRvIGFuIGludGVybmFsIHBhdGguICovXG5leHBvcnQgZnVuY3Rpb24gbWFuZ2xlSW50ZXJuYWxQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoLmVuZHNXaXRoKFwiLnRzXCIpKSBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSAzKTtcbiAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIHR5cGUgbm9kZSByZXByZXNlbnRzIGFuIG9taXR0ZWQgdHlwZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVPbWl0dGVkKHR5cGU6IFR5cGVOb2RlKTogYm9vbCB7XG4gIGlmICh0eXBlLmtpbmQgPT0gTm9kZUtpbmQuTkFNRURUWVBFKSB7XG4gICAgbGV0IG5hbWUgPSAoPE5hbWVkVHlwZU5vZGU+dHlwZSkubmFtZTtcbiAgICByZXR1cm4gIShuYW1lLm5leHQgfHwgbmFtZS5pZGVudGlmaWVyLnRleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0= - -/***/ }), - -/***/ "../src/common.ts": -/*!************************!*\ - !*** ../src/common.ts ***! - \************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Common constants. - * @module common - */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** Indicates traits of a {@link Node} or {@link Element}. */ -var CommonFlags; -(function (CommonFlags) { - /** No flags set. */ - CommonFlags[CommonFlags["NONE"] = 0] = "NONE"; - // Basic modifiers - /** Has an `import` modifier. */ - CommonFlags[CommonFlags["IMPORT"] = 1] = "IMPORT"; - /** Has an `export` modifier. */ - CommonFlags[CommonFlags["EXPORT"] = 2] = "EXPORT"; - /** Has a `declare` modifier. */ - CommonFlags[CommonFlags["DECLARE"] = 4] = "DECLARE"; - /** Has a `const` modifier. */ - CommonFlags[CommonFlags["CONST"] = 8] = "CONST"; - /** Has a `let` modifier. */ - CommonFlags[CommonFlags["LET"] = 16] = "LET"; - /** Has a `static` modifier. */ - CommonFlags[CommonFlags["STATIC"] = 32] = "STATIC"; - /** Has a `readonly` modifier. */ - CommonFlags[CommonFlags["READONLY"] = 64] = "READONLY"; - /** Has an `abstract` modifier. */ - CommonFlags[CommonFlags["ABSTRACT"] = 128] = "ABSTRACT"; - /** Has a `public` modifier. */ - CommonFlags[CommonFlags["PUBLIC"] = 256] = "PUBLIC"; - /** Has a `private` modifier. */ - CommonFlags[CommonFlags["PRIVATE"] = 512] = "PRIVATE"; - /** Has a `protected` modifier. */ - CommonFlags[CommonFlags["PROTECTED"] = 1024] = "PROTECTED"; - /** Has a `get` modifier. */ - CommonFlags[CommonFlags["GET"] = 2048] = "GET"; - /** Has a `set` modifier. */ - CommonFlags[CommonFlags["SET"] = 4096] = "SET"; - /** Has a definite assignment assertion `!` as in `x!: i32;`. */ - CommonFlags[CommonFlags["DEFINITE_ASSIGNMENT"] = 8192] = "DEFINITE_ASSIGNMENT"; - // Extended modifiers usually derived from basic modifiers - /** Is ambient, that is either declared or nested in a declared element. */ - CommonFlags[CommonFlags["AMBIENT"] = 16384] = "AMBIENT"; - /** Is generic. */ - CommonFlags[CommonFlags["GENERIC"] = 32768] = "GENERIC"; - /** Is part of a generic context. */ - CommonFlags[CommonFlags["GENERIC_CONTEXT"] = 65536] = "GENERIC_CONTEXT"; - /** Is an instance member. */ - CommonFlags[CommonFlags["INSTANCE"] = 131072] = "INSTANCE"; - /** Is a constructor. */ - CommonFlags[CommonFlags["CONSTRUCTOR"] = 262144] = "CONSTRUCTOR"; - /** Is a module export. */ - CommonFlags[CommonFlags["MODULE_EXPORT"] = 524288] = "MODULE_EXPORT"; - /** Is a module import. */ - CommonFlags[CommonFlags["MODULE_IMPORT"] = 1048576] = "MODULE_IMPORT"; - // Compilation states - /** Is resolved. */ - CommonFlags[CommonFlags["RESOLVED"] = 2097152] = "RESOLVED"; - /** Is compiled. */ - CommonFlags[CommonFlags["COMPILED"] = 4194304] = "COMPILED"; - /** Has a constant value and is therefore inlined. */ - CommonFlags[CommonFlags["INLINED"] = 8388608] = "INLINED"; - /** Is scoped. */ - CommonFlags[CommonFlags["SCOPED"] = 16777216] = "SCOPED"; - /** Is a trampoline. */ - CommonFlags[CommonFlags["TRAMPOLINE"] = 33554432] = "TRAMPOLINE"; - /** Is a virtual method. */ - CommonFlags[CommonFlags["VIRTUAL"] = 67108864] = "VIRTUAL"; - /** Is the main function. */ - CommonFlags[CommonFlags["MAIN"] = 134217728] = "MAIN"; - // Other - /** Is quoted. */ - CommonFlags[CommonFlags["QUOTED"] = 268435456] = "QUOTED"; -})(CommonFlags = exports.CommonFlags || (exports.CommonFlags = {})); -/** Path delimiter inserted between file system levels. */ -exports.PATH_DELIMITER = "/"; -/** Substitution used to indicate the parent directory. */ -exports.PARENT_SUBST = ".."; -/** Function name prefix used for getters. */ -exports.GETTER_PREFIX = "get:"; -/** Function name prefix used for setters. */ -exports.SETTER_PREFIX = "set:"; -/** Delimiter used between class names and instance members. */ -exports.INSTANCE_DELIMITER = "#"; -/** Delimiter used between class and namespace names and static members. */ -exports.STATIC_DELIMITER = "."; -/** Delimiter used between a function and its inner elements. */ -exports.INNER_DELIMITER = "~"; -/** Substitution used to indicate a library directory. */ -exports.LIBRARY_SUBST = "~lib"; -/** Library directory prefix. */ -exports.LIBRARY_PREFIX = exports.LIBRARY_SUBST + exports.PATH_DELIMITER; -/** Path index suffix. */ -exports.INDEX_SUFFIX = exports.PATH_DELIMITER + "index"; -/** Common compiler symbols. */ -var CommonSymbols; -(function (CommonSymbols) { - // special - CommonSymbols.EMPTY = ""; - // types - CommonSymbols.i8 = "i8"; - CommonSymbols.i16 = "i16"; - CommonSymbols.i32 = "i32"; - CommonSymbols.i64 = "i64"; - CommonSymbols.isize = "isize"; - CommonSymbols.u8 = "u8"; - CommonSymbols.u16 = "u16"; - CommonSymbols.u32 = "u32"; - CommonSymbols.u64 = "u64"; - CommonSymbols.usize = "usize"; - CommonSymbols.bool = "bool"; - CommonSymbols.f32 = "f32"; - CommonSymbols.f64 = "f64"; - CommonSymbols.v128 = "v128"; - CommonSymbols.i8x16 = "i8x16"; - CommonSymbols.u8x16 = "u8x16"; - CommonSymbols.i16x8 = "i16x8"; - CommonSymbols.u16x8 = "u16x8"; - CommonSymbols.i32x4 = "i32x4"; - CommonSymbols.u32x4 = "u32x4"; - CommonSymbols.i64x2 = "i64x2"; - CommonSymbols.u64x2 = "u64x2"; - CommonSymbols.f32x4 = "f32x4"; - CommonSymbols.f64x2 = "f64x2"; - CommonSymbols.void_ = "void"; - CommonSymbols.number = "number"; - CommonSymbols.boolean = "boolean"; - CommonSymbols.string = "string"; - CommonSymbols.native = "native"; - CommonSymbols.indexof = "indexof"; - CommonSymbols.valueof = "valueof"; - CommonSymbols.returnof = "returnof"; - // aliases - CommonSymbols.null_ = "null"; - CommonSymbols.true_ = "true"; - CommonSymbols.false_ = "false"; - // objects - CommonSymbols.this_ = "this"; - CommonSymbols.super_ = "super"; - CommonSymbols.constructor = "constructor"; - // constants - CommonSymbols.ASC_TARGET = "ASC_TARGET"; - CommonSymbols.ASC_NO_TREESHAKING = "ASC_NO_TREESHAKING"; - CommonSymbols.ASC_NO_ASSERT = "ASC_NO_ASSERT"; - CommonSymbols.ASC_MEMORY_BASE = "ASC_MEMORY_BASE"; - CommonSymbols.ASC_OPTIMIZE_LEVEL = "ASC_OPTIMIZE_LEVEL"; - CommonSymbols.ASC_SHRINK_LEVEL = "ASC_SHRINK_LEVEL"; - CommonSymbols.ASC_FEATURE_MUTABLE_GLOBAL = "ASC_FEATURE_MUTABLE_GLOBAL"; - CommonSymbols.ASC_FEATURE_SIGN_EXTENSION = "ASC_FEATURE_SIGN_EXTENSION"; - CommonSymbols.ASC_FEATURE_BULK_MEMORY = "ASC_FEATURE_BULK_MEMORY"; - CommonSymbols.ASC_FEATURE_SIMD = "ASC_FEATURE_SIMD"; - CommonSymbols.ASC_FEATURE_THREADS = "ASC_FEATURE_THREADS"; - // classes - CommonSymbols.I8 = "I8"; - CommonSymbols.I16 = "I16"; - CommonSymbols.I32 = "I32"; - CommonSymbols.I64 = "I64"; - CommonSymbols.Isize = "Isize"; - CommonSymbols.U8 = "U8"; - CommonSymbols.U16 = "U16"; - CommonSymbols.U32 = "U32"; - CommonSymbols.U64 = "U64"; - CommonSymbols.Usize = "Usize"; - CommonSymbols.Bool = "Bool"; - CommonSymbols.F32 = "F32"; - CommonSymbols.F64 = "F64"; - CommonSymbols.V128 = "V128"; - CommonSymbols.String = "String"; - CommonSymbols.Array = "Array"; - CommonSymbols.FixedArray = "FixedArray"; - CommonSymbols.Set = "Set"; - CommonSymbols.Map = "Map"; - CommonSymbols.ArrayBufferView = "ArrayBufferView"; - CommonSymbols.ArrayBuffer = "ArrayBuffer"; - CommonSymbols.Math = "Math"; - CommonSymbols.Mathf = "Mathf"; - CommonSymbols.Int8Array = "Int8Array"; - CommonSymbols.Int16Array = "Int16Array"; - CommonSymbols.Int32Array = "Int32Array"; - CommonSymbols.Int64Array = "Int64Array"; - CommonSymbols.Uint8Array = "Uint8Array"; - CommonSymbols.Uint8ClampedArray = "Uint8ClampedArray"; - CommonSymbols.Uint16Array = "Uint16Array"; - CommonSymbols.Uint32Array = "Uint32Array"; - CommonSymbols.Uint64Array = "Uint64Array"; - CommonSymbols.Float32Array = "Float32Array"; - CommonSymbols.Float64Array = "Float64Array"; - // runtime - CommonSymbols.abort = "abort"; - CommonSymbols.pow = "pow"; - CommonSymbols.mod = "mod"; - CommonSymbols.alloc = "__alloc"; - CommonSymbols.realloc = "__realloc"; - CommonSymbols.free = "__free"; - CommonSymbols.retain = "__retain"; - CommonSymbols.release = "__release"; - CommonSymbols.collect = "__collect"; - CommonSymbols.typeinfo = "__typeinfo"; - CommonSymbols.instanceof_ = "__instanceof"; - CommonSymbols.visit = "__visit"; - CommonSymbols.allocArray = "__allocArray"; -})(CommonSymbols = exports.CommonSymbols || (exports.CommonSymbols = {})); -// shared -var feature_1 = __webpack_require__(/*! ../std/assembly/shared/feature */ "../std/assembly/shared/feature.ts"); -exports.Feature = feature_1.Feature; -var target_1 = __webpack_require__(/*! ../std/assembly/shared/target */ "../std/assembly/shared/target.ts"); -exports.Target = target_1.Target; -var typeinfo_1 = __webpack_require__(/*! ../std/assembly/shared/typeinfo */ "../std/assembly/shared/typeinfo.ts"); -exports.Typeinfo = typeinfo_1.Typeinfo; -exports.TypeinfoFlags = typeinfo_1.TypeinfoFlags; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHLENBQUEsS0FBSzs7QUFFUiw2REFBNkQ7QUFDN0QsSUFBWSxXQXlFWDtBQXpFRCxXQUFZLFdBQVc7SUFDckIsb0JBQW9CO0lBQ3BCLDZDQUFRLENBQUE7SUFFUixrQkFBa0I7SUFFbEIsZ0NBQWdDO0lBQ2hDLGlEQUFlLENBQUE7SUFDZixnQ0FBZ0M7SUFDaEMsaURBQWUsQ0FBQTtJQUNmLGdDQUFnQztJQUNoQyxtREFBZ0IsQ0FBQTtJQUNoQiw4QkFBOEI7SUFDOUIsK0NBQWMsQ0FBQTtJQUNkLDRCQUE0QjtJQUM1Qiw0Q0FBWSxDQUFBO0lBQ1osK0JBQStCO0lBQy9CLGtEQUFlLENBQUE7SUFDZixpQ0FBaUM7SUFDakMsc0RBQWlCLENBQUE7SUFDakIsa0NBQWtDO0lBQ2xDLHVEQUFpQixDQUFBO0lBQ2pCLCtCQUErQjtJQUMvQixtREFBZSxDQUFBO0lBQ2YsZ0NBQWdDO0lBQ2hDLHFEQUFnQixDQUFBO0lBQ2hCLGtDQUFrQztJQUNsQywwREFBbUIsQ0FBQTtJQUNuQiw0QkFBNEI7SUFDNUIsOENBQWEsQ0FBQTtJQUNiLDRCQUE0QjtJQUM1Qiw4Q0FBYSxDQUFBO0lBQ2IsZ0VBQWdFO0lBQ2hFLDhFQUE2QixDQUFBO0lBRTdCLDBEQUEwRDtJQUUxRCwyRUFBMkU7SUFDM0UsdURBQWlCLENBQUE7SUFDakIsa0JBQWtCO0lBQ2xCLHVEQUFpQixDQUFBO0lBQ2pCLG9DQUFvQztJQUNwQyx1RUFBeUIsQ0FBQTtJQUN6Qiw2QkFBNkI7SUFDN0IsMERBQWtCLENBQUE7SUFDbEIsd0JBQXdCO0lBQ3hCLGdFQUFxQixDQUFBO0lBQ3JCLDBCQUEwQjtJQUMxQixvRUFBdUIsQ0FBQTtJQUN2QiwwQkFBMEI7SUFDMUIscUVBQXVCLENBQUE7SUFFdkIscUJBQXFCO0lBRXJCLG1CQUFtQjtJQUNuQiwy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RDtBQUE5QywwQkFBQSxNQUFNLENBQUE7QUFDZiw0REFBMEU7QUFBakUsOEJBQUEsUUFBUSxDQUFBO0FBQUUsbUNBQUEsYUFBYSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gY29uc3RhbnRzLlxuICogQG1vZHVsZSBjb21tb25cbiAqLy8qKiovXG5cbi8qKiBJbmRpY2F0ZXMgdHJhaXRzIG9mIGEge0BsaW5rIE5vZGV9IG9yIHtAbGluayBFbGVtZW50fS4gKi9cbmV4cG9ydCBlbnVtIENvbW1vbkZsYWdzIHtcbiAgLyoqIE5vIGZsYWdzIHNldC4gKi9cbiAgTk9ORSA9IDAsXG5cbiAgLy8gQmFzaWMgbW9kaWZpZXJzXG5cbiAgLyoqIEhhcyBhbiBgaW1wb3J0YCBtb2RpZmllci4gKi9cbiAgSU1QT1JUID0gMSA8PCAwLFxuICAvKiogSGFzIGFuIGBleHBvcnRgIG1vZGlmaWVyLiAqL1xuICBFWFBPUlQgPSAxIDw8IDEsXG4gIC8qKiBIYXMgYSBgZGVjbGFyZWAgbW9kaWZpZXIuICovXG4gIERFQ0xBUkUgPSAxIDw8IDIsXG4gIC8qKiBIYXMgYSBgY29uc3RgIG1vZGlmaWVyLiAqL1xuICBDT05TVCA9IDEgPDwgMyxcbiAgLyoqIEhhcyBhIGBsZXRgIG1vZGlmaWVyLiAqL1xuICBMRVQgPSAxIDw8IDQsXG4gIC8qKiBIYXMgYSBgc3RhdGljYCBtb2RpZmllci4gKi9cbiAgU1RBVElDID0gMSA8PCA1LFxuICAvKiogSGFzIGEgYHJlYWRvbmx5YCBtb2RpZmllci4gKi9cbiAgUkVBRE9OTFkgPSAxIDw8IDYsXG4gIC8qKiBIYXMgYW4gYGFic3RyYWN0YCBtb2RpZmllci4gKi9cbiAgQUJTVFJBQ1QgPSAxIDw8IDcsXG4gIC8qKiBIYXMgYSBgcHVibGljYCBtb2RpZmllci4gKi9cbiAgUFVCTElDID0gMSA8PCA4LFxuICAvKiogSGFzIGEgYHByaXZhdGVgIG1vZGlmaWVyLiAqL1xuICBQUklWQVRFID0gMSA8PCA5LFxuICAvKiogSGFzIGEgYHByb3RlY3RlZGAgbW9kaWZpZXIuICovXG4gIFBST1RFQ1RFRCA9IDEgPDwgMTAsXG4gIC8qKiBIYXMgYSBgZ2V0YCBtb2RpZmllci4gKi9cbiAgR0VUID0gMSA8PCAxMSxcbiAgLyoqIEhhcyBhIGBzZXRgIG1vZGlmaWVyLiAqL1xuICBTRVQgPSAxIDw8IDEyLFxuICAvKiogSGFzIGEgZGVmaW5pdGUgYXNzaWdubWVudCBhc3NlcnRpb24gYCFgIGFzIGluIGB4ITogaTMyO2AuICovXG4gIERFRklOSVRFX0FTU0lHTk1FTlQgPSAxIDw8IDEzLFxuXG4gIC8vIEV4dGVuZGVkIG1vZGlmaWVycyB1c3VhbGx5IGRlcml2ZWQgZnJvbSBiYXNpYyBtb2RpZmllcnNcblxuICAvKiogSXMgYW1iaWVudCwgdGhhdCBpcyBlaXRoZXIgZGVjbGFyZWQgb3IgbmVzdGVkIGluIGEgZGVjbGFyZWQgZWxlbWVudC4gKi9cbiAgQU1CSUVOVCA9IDEgPDwgMTQsXG4gIC8qKiBJcyBnZW5lcmljLiAqL1xuICBHRU5FUklDID0gMSA8PCAxNSxcbiAgLyoqIElzIHBhcnQgb2YgYSBnZW5lcmljIGNvbnRleHQuICovXG4gIEdFTkVSSUNfQ09OVEVYVCA9IDEgPDwgMTYsXG4gIC8qKiBJcyBhbiBpbnN0YW5jZSBtZW1iZXIuICovXG4gIElOU1RBTkNFID0gMSA8PCAxNyxcbiAgLyoqIElzIGEgY29uc3RydWN0b3IuICovXG4gIENPTlNUUlVDVE9SID0gMSA8PCAxOCxcbiAgLyoqIElzIGEgbW9kdWxlIGV4cG9ydC4gKi9cbiAgTU9EVUxFX0VYUE9SVCA9IDEgPDwgMTksXG4gIC8qKiBJcyBhIG1vZHVsZSBpbXBvcnQuICovXG4gIE1PRFVMRV9JTVBPUlQgPSAxIDw8IDIwLFxuXG4gIC8vIENvbXBpbGF0aW9uIHN0YXRlc1xuXG4gIC8qKiBJcyByZXNvbHZlZC4gKi9cbiAgUkVTT0xWRUQgPSAxIDw8IDIxLFxuICAvKiogSXMgY29tcGlsZWQuICovXG4gIENPTVBJTEVEID0gMSA8PCAyMixcbiAgLyoqIEhhcyBhIGNvbnN0YW50IHZhbHVlIGFuZCBpcyB0aGVyZWZvcmUgaW5saW5lZC4gKi9cbiAgSU5MSU5FRCA9IDEgPDwgMjMsXG4gIC8qKiBJcyBzY29wZWQuICovXG4gIFNDT1BFRCA9IDEgPDwgMjQsXG4gIC8qKiBJcyBhIHRyYW1wb2xpbmUuICovXG4gIFRSQU1QT0xJTkUgPSAxIDw8IDI1LFxuICAvKiogSXMgYSB2aXJ0dWFsIG1ldGhvZC4gKi9cbiAgVklSVFVBTCA9IDEgPDwgMjYsXG4gIC8qKiBJcyB0aGUgbWFpbiBmdW5jdGlvbi4gKi9cbiAgTUFJTiA9IDEgPDwgMjcsXG5cbiAgLy8gT3RoZXJcblxuICAvKiogSXMgcXVvdGVkLiAqL1xuICBRVU9URUQgPSAxIDw8IDI4XG59XG5cbi8qKiBQYXRoIGRlbGltaXRlciBpbnNlcnRlZCBiZXR3ZWVuIGZpbGUgc3lzdGVtIGxldmVscy4gKi9cbmV4cG9ydCBjb25zdCBQQVRIX0RFTElNSVRFUiA9IFwiL1wiO1xuLyoqIFN1YnN0aXR1dGlvbiB1c2VkIHRvIGluZGljYXRlIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiAqL1xuZXhwb3J0IGNvbnN0IFBBUkVOVF9TVUJTVCA9IFwiLi5cIjtcbi8qKiBGdW5jdGlvbiBuYW1lIHByZWZpeCB1c2VkIGZvciBnZXR0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IEdFVFRFUl9QUkVGSVggPSBcImdldDpcIjtcbi8qKiBGdW5jdGlvbiBuYW1lIHByZWZpeCB1c2VkIGZvciBzZXR0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFNFVFRFUl9QUkVGSVggPSBcInNldDpcIjtcbi8qKiBEZWxpbWl0ZXIgdXNlZCBiZXR3ZWVuIGNsYXNzIG5hbWVzIGFuZCBpbnN0YW5jZSBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IElOU1RBTkNFX0RFTElNSVRFUiA9IFwiI1wiO1xuLyoqIERlbGltaXRlciB1c2VkIGJldHdlZW4gY2xhc3MgYW5kIG5hbWVzcGFjZSBuYW1lcyBhbmQgc3RhdGljIG1lbWJlcnMuICovXG5leHBvcnQgY29uc3QgU1RBVElDX0RFTElNSVRFUiA9IFwiLlwiO1xuLyoqIERlbGltaXRlciB1c2VkIGJldHdlZW4gYSBmdW5jdGlvbiBhbmQgaXRzIGlubmVyIGVsZW1lbnRzLiAqL1xuZXhwb3J0IGNvbnN0IElOTkVSX0RFTElNSVRFUiA9IFwiflwiO1xuLyoqIFN1YnN0aXR1dGlvbiB1c2VkIHRvIGluZGljYXRlIGEgbGlicmFyeSBkaXJlY3RvcnkuICovXG5leHBvcnQgY29uc3QgTElCUkFSWV9TVUJTVCA9IFwifmxpYlwiO1xuLyoqIExpYnJhcnkgZGlyZWN0b3J5IHByZWZpeC4gKi9cbmV4cG9ydCBjb25zdCBMSUJSQVJZX1BSRUZJWCA9IExJQlJBUllfU1VCU1QgKyBQQVRIX0RFTElNSVRFUjtcbi8qKiBQYXRoIGluZGV4IHN1ZmZpeC4gKi9cbmV4cG9ydCBjb25zdCBJTkRFWF9TVUZGSVggPSBQQVRIX0RFTElNSVRFUiArIFwiaW5kZXhcIjtcblxuLyoqIENvbW1vbiBjb21waWxlciBzeW1ib2xzLiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBDb21tb25TeW1ib2xzIHtcbiAgLy8gc3BlY2lhbFxuICBleHBvcnQgY29uc3QgRU1QVFkgPSBcIlwiO1xuICAvLyB0eXBlc1xuICBleHBvcnQgY29uc3QgaTggPSBcImk4XCI7XG4gIGV4cG9ydCBjb25zdCBpMTYgPSBcImkxNlwiO1xuICBleHBvcnQgY29uc3QgaTMyID0gXCJpMzJcIjtcbiAgZXhwb3J0IGNvbnN0IGk2NCA9IFwiaTY0XCI7XG4gIGV4cG9ydCBjb25zdCBpc2l6ZSA9IFwiaXNpemVcIjtcbiAgZXhwb3J0IGNvbnN0IHU4ID0gXCJ1OFwiO1xuICBleHBvcnQgY29uc3QgdTE2ID0gXCJ1MTZcIjtcbiAgZXhwb3J0IGNvbnN0IHUzMiA9IFwidTMyXCI7XG4gIGV4cG9ydCBjb25zdCB1NjQgPSBcInU2NFwiO1xuICBleHBvcnQgY29uc3QgdXNpemUgPSBcInVzaXplXCI7XG4gIGV4cG9ydCBjb25zdCBib29sID0gXCJib29sXCI7XG4gIGV4cG9ydCBjb25zdCBmMzIgPSBcImYzMlwiO1xuICBleHBvcnQgY29uc3QgZjY0ID0gXCJmNjRcIjtcbiAgZXhwb3J0IGNvbnN0IHYxMjggPSBcInYxMjhcIjtcbiAgZXhwb3J0IGNvbnN0IGk4eDE2ID0gXCJpOHgxNlwiO1xuICBleHBvcnQgY29uc3QgdTh4MTYgPSBcInU4eDE2XCI7XG4gIGV4cG9ydCBjb25zdCBpMTZ4OCA9IFwiaTE2eDhcIjtcbiAgZXhwb3J0IGNvbnN0IHUxNng4ID0gXCJ1MTZ4OFwiO1xuICBleHBvcnQgY29uc3QgaTMyeDQgPSBcImkzMng0XCI7XG4gIGV4cG9ydCBjb25zdCB1MzJ4NCA9IFwidTMyeDRcIjtcbiAgZXhwb3J0IGNvbnN0IGk2NHgyID0gXCJpNjR4MlwiO1xuICBleHBvcnQgY29uc3QgdTY0eDIgPSBcInU2NHgyXCI7XG4gIGV4cG9ydCBjb25zdCBmMzJ4NCA9IFwiZjMyeDRcIjtcbiAgZXhwb3J0IGNvbnN0IGY2NHgyID0gXCJmNjR4MlwiO1xuICBleHBvcnQgY29uc3Qgdm9pZF8gPSBcInZvaWRcIjtcbiAgZXhwb3J0IGNvbnN0IG51bWJlciA9IFwibnVtYmVyXCI7XG4gIGV4cG9ydCBjb25zdCBib29sZWFuID0gXCJib29sZWFuXCI7XG4gIGV4cG9ydCBjb25zdCBzdHJpbmcgPSBcInN0cmluZ1wiO1xuICBleHBvcnQgY29uc3QgbmF0aXZlID0gXCJuYXRpdmVcIjtcbiAgZXhwb3J0IGNvbnN0IGluZGV4b2YgPSBcImluZGV4b2ZcIjtcbiAgZXhwb3J0IGNvbnN0IHZhbHVlb2YgPSBcInZhbHVlb2ZcIjtcbiAgZXhwb3J0IGNvbnN0IHJldHVybm9mID0gXCJyZXR1cm5vZlwiO1xuICAvLyBhbGlhc2VzXG4gIGV4cG9ydCBjb25zdCBudWxsXyA9IFwibnVsbFwiO1xuICBleHBvcnQgY29uc3QgdHJ1ZV8gPSBcInRydWVcIjtcbiAgZXhwb3J0IGNvbnN0IGZhbHNlXyA9IFwiZmFsc2VcIjtcbiAgLy8gb2JqZWN0c1xuICBleHBvcnQgY29uc3QgdGhpc18gPSBcInRoaXNcIjtcbiAgZXhwb3J0IGNvbnN0IHN1cGVyXyA9IFwic3VwZXJcIjtcbiAgZXhwb3J0IGNvbnN0IGNvbnN0cnVjdG9yID0gXCJjb25zdHJ1Y3RvclwiO1xuICAvLyBjb25zdGFudHNcbiAgZXhwb3J0IGNvbnN0IEFTQ19UQVJHRVQgPSBcIkFTQ19UQVJHRVRcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19OT19UUkVFU0hBS0lORyA9IFwiQVNDX05PX1RSRUVTSEFLSU5HXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfTk9fQVNTRVJUID0gXCJBU0NfTk9fQVNTRVJUXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfTUVNT1JZX0JBU0UgPSBcIkFTQ19NRU1PUllfQkFTRVwiO1xuICBleHBvcnQgY29uc3QgQVNDX09QVElNSVpFX0xFVkVMID0gXCJBU0NfT1BUSU1JWkVfTEVWRUxcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19TSFJJTktfTEVWRUwgPSBcIkFTQ19TSFJJTktfTEVWRUxcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX01VVEFCTEVfR0xPQkFMID0gXCJBU0NfRkVBVFVSRV9NVVRBQkxFX0dMT0JBTFwiO1xuICBleHBvcnQgY29uc3QgQVNDX0ZFQVRVUkVfU0lHTl9FWFRFTlNJT04gPSBcIkFTQ19GRUFUVVJFX1NJR05fRVhURU5TSU9OXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfRkVBVFVSRV9CVUxLX01FTU9SWSA9IFwiQVNDX0ZFQVRVUkVfQlVMS19NRU1PUllcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX1NJTUQgPSBcIkFTQ19GRUFUVVJFX1NJTURcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX1RIUkVBRFMgPSBcIkFTQ19GRUFUVVJFX1RIUkVBRFNcIjtcbiAgLy8gY2xhc3Nlc1xuICBleHBvcnQgY29uc3QgSTggPSBcIkk4XCI7XG4gIGV4cG9ydCBjb25zdCBJMTYgPSBcIkkxNlwiO1xuICBleHBvcnQgY29uc3QgSTMyID0gXCJJMzJcIjtcbiAgZXhwb3J0IGNvbnN0IEk2NCA9IFwiSTY0XCI7XG4gIGV4cG9ydCBjb25zdCBJc2l6ZSA9IFwiSXNpemVcIjtcbiAgZXhwb3J0IGNvbnN0IFU4ID0gXCJVOFwiO1xuICBleHBvcnQgY29uc3QgVTE2ID0gXCJVMTZcIjtcbiAgZXhwb3J0IGNvbnN0IFUzMiA9IFwiVTMyXCI7XG4gIGV4cG9ydCBjb25zdCBVNjQgPSBcIlU2NFwiO1xuICBleHBvcnQgY29uc3QgVXNpemUgPSBcIlVzaXplXCI7XG4gIGV4cG9ydCBjb25zdCBCb29sID0gXCJCb29sXCI7XG4gIGV4cG9ydCBjb25zdCBGMzIgPSBcIkYzMlwiO1xuICBleHBvcnQgY29uc3QgRjY0ID0gXCJGNjRcIjtcbiAgZXhwb3J0IGNvbnN0IFYxMjggPSBcIlYxMjhcIjtcbiAgZXhwb3J0IGNvbnN0IFN0cmluZyA9IFwiU3RyaW5nXCI7XG4gIGV4cG9ydCBjb25zdCBBcnJheSA9IFwiQXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IEZpeGVkQXJyYXkgPSBcIkZpeGVkQXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IFNldCA9IFwiU2V0XCI7XG4gIGV4cG9ydCBjb25zdCBNYXAgPSBcIk1hcFwiO1xuICBleHBvcnQgY29uc3QgQXJyYXlCdWZmZXJWaWV3ID0gXCJBcnJheUJ1ZmZlclZpZXdcIjtcbiAgZXhwb3J0IGNvbnN0IEFycmF5QnVmZmVyID0gXCJBcnJheUJ1ZmZlclwiO1xuICBleHBvcnQgY29uc3QgTWF0aCA9IFwiTWF0aFwiO1xuICBleHBvcnQgY29uc3QgTWF0aGYgPSBcIk1hdGhmXCI7XG4gIGV4cG9ydCBjb25zdCBJbnQ4QXJyYXkgPSBcIkludDhBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50MTZBcnJheSA9IFwiSW50MTZBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50MzJBcnJheSA9IFwiSW50MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50NjRBcnJheSA9IFwiSW50NjRBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDhBcnJheSA9IFwiVWludDhBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDhDbGFtcGVkQXJyYXkgPSBcIlVpbnQ4Q2xhbXBlZEFycmF5XCI7XG4gIGV4cG9ydCBjb25zdCBVaW50MTZBcnJheSA9IFwiVWludDE2QXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IFVpbnQzMkFycmF5ID0gXCJVaW50MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDY0QXJyYXkgPSBcIlVpbnQ2NEFycmF5XCI7XG4gIGV4cG9ydCBjb25zdCBGbG9hdDMyQXJyYXkgPSBcIkZsb2F0MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgRmxvYXQ2NEFycmF5ID0gXCJGbG9hdDY0QXJyYXlcIjtcbiAgLy8gcnVudGltZVxuICBleHBvcnQgY29uc3QgYWJvcnQgPSBcImFib3J0XCI7XG4gIGV4cG9ydCBjb25zdCBwb3cgPSBcInBvd1wiO1xuICBleHBvcnQgY29uc3QgbW9kID0gXCJtb2RcIjtcbiAgZXhwb3J0IGNvbnN0IGFsbG9jID0gXCJfX2FsbG9jXCI7XG4gIGV4cG9ydCBjb25zdCByZWFsbG9jID0gXCJfX3JlYWxsb2NcIjtcbiAgZXhwb3J0IGNvbnN0IGZyZWUgPSBcIl9fZnJlZVwiO1xuICBleHBvcnQgY29uc3QgcmV0YWluID0gXCJfX3JldGFpblwiO1xuICBleHBvcnQgY29uc3QgcmVsZWFzZSA9IFwiX19yZWxlYXNlXCI7XG4gIGV4cG9ydCBjb25zdCBjb2xsZWN0ID0gXCJfX2NvbGxlY3RcIjtcbiAgZXhwb3J0IGNvbnN0IHR5cGVpbmZvID0gXCJfX3R5cGVpbmZvXCI7XG4gIGV4cG9ydCBjb25zdCBpbnN0YW5jZW9mXyA9IFwiX19pbnN0YW5jZW9mXCI7XG4gIGV4cG9ydCBjb25zdCB2aXNpdCA9IFwiX192aXNpdFwiO1xuICBleHBvcnQgY29uc3QgYWxsb2NBcnJheSA9IFwiX19hbGxvY0FycmF5XCI7XG59XG5cbi8vIHNoYXJlZFxuZXhwb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuLi9zdGQvYXNzZW1ibHkvc2hhcmVkL2ZlYXR1cmVcIjtcbmV4cG9ydCB7IFRhcmdldCB9IGZyb20gXCIuLi9zdGQvYXNzZW1ibHkvc2hhcmVkL3RhcmdldFwiO1xuZXhwb3J0IHsgVHlwZWluZm8sIFR5cGVpbmZvRmxhZ3MgfSBmcm9tIFwiLi4vc3RkL2Fzc2VtYmx5L3NoYXJlZC90eXBlaW5mb1wiO1xuIl19 - -/***/ }), - -/***/ "../src/diagnosticMessages.generated.ts": -/*!**********************************************!*\ - !*** ../src/diagnosticMessages.generated.ts ***! - \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Generated from diagnosticsMessages.json. Do not edit. - * @module diagnostics - */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/* tslint:disable:max-line-length */ -/** Enum of available diagnostic codes. */ -var DiagnosticCode; -(function (DiagnosticCode) { - DiagnosticCode[DiagnosticCode["Operation_not_supported"] = 100] = "Operation_not_supported"; - DiagnosticCode[DiagnosticCode["Operation_is_unsafe"] = 101] = "Operation_is_unsafe"; - DiagnosticCode[DiagnosticCode["User_defined_0"] = 102] = "User_defined_0"; - DiagnosticCode[DiagnosticCode["Conversion_from_type_0_to_1_requires_an_explicit_cast"] = 200] = "Conversion_from_type_0_to_1_requires_an_explicit_cast"; - DiagnosticCode[DiagnosticCode["Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit"] = 201] = "Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit"; - DiagnosticCode[DiagnosticCode["Type_0_cannot_be_changed_to_type_1"] = 202] = "Type_0_cannot_be_changed_to_type_1"; - DiagnosticCode[DiagnosticCode["Type_0_cannot_be_reinterpreted_as_type_1"] = 203] = "Type_0_cannot_be_reinterpreted_as_type_1"; - DiagnosticCode[DiagnosticCode["Basic_type_0_cannot_be_nullable"] = 204] = "Basic_type_0_cannot_be_nullable"; - DiagnosticCode[DiagnosticCode["Cannot_export_a_mutable_global"] = 205] = "Cannot_export_a_mutable_global"; - DiagnosticCode[DiagnosticCode["Mutable_value_cannot_be_inlined"] = 206] = "Mutable_value_cannot_be_inlined"; - DiagnosticCode[DiagnosticCode["Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa"] = 207] = "Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa"; - DiagnosticCode[DiagnosticCode["Unmanaged_classes_cannot_implement_interfaces"] = 208] = "Unmanaged_classes_cannot_implement_interfaces"; - DiagnosticCode[DiagnosticCode["Invalid_regular_expression_flags"] = 209] = "Invalid_regular_expression_flags"; - DiagnosticCode[DiagnosticCode["Implementation_0_must_match_the_signature_1"] = 210] = "Implementation_0_must_match_the_signature_1"; - DiagnosticCode[DiagnosticCode["Class_0_is_sealed_and_cannot_be_extended"] = 211] = "Class_0_is_sealed_and_cannot_be_extended"; - DiagnosticCode[DiagnosticCode["Decorator_0_is_not_valid_here"] = 212] = "Decorator_0_is_not_valid_here"; - DiagnosticCode[DiagnosticCode["Duplicate_decorator"] = 213] = "Duplicate_decorator"; - DiagnosticCode[DiagnosticCode["An_allocator_must_be_present_to_use_0"] = 214] = "An_allocator_must_be_present_to_use_0"; - DiagnosticCode[DiagnosticCode["Optional_parameter_must_have_an_initializer"] = 215] = "Optional_parameter_must_have_an_initializer"; - DiagnosticCode[DiagnosticCode["Constructor_of_class_0_must_not_require_any_arguments"] = 216] = "Constructor_of_class_0_must_not_require_any_arguments"; - DiagnosticCode[DiagnosticCode["Function_0_cannot_be_inlined_into_itself"] = 217] = "Function_0_cannot_be_inlined_into_itself"; - DiagnosticCode[DiagnosticCode["Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set"] = 218] = "Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set"; - DiagnosticCode[DiagnosticCode["Optional_properties_are_not_supported"] = 219] = "Optional_properties_are_not_supported"; - DiagnosticCode[DiagnosticCode["Expression_must_be_a_compile_time_constant"] = 220] = "Expression_must_be_a_compile_time_constant"; - DiagnosticCode[DiagnosticCode["Module_cannot_have_multiple_start_functions"] = 221] = "Module_cannot_have_multiple_start_functions"; - DiagnosticCode[DiagnosticCode["_0_must_be_a_value_between_1_and_2_inclusive"] = 222] = "_0_must_be_a_value_between_1_and_2_inclusive"; - DiagnosticCode[DiagnosticCode["_0_must_be_a_power_of_two"] = 223] = "_0_must_be_a_power_of_two"; - DiagnosticCode[DiagnosticCode["Expression_is_unsafe"] = 224] = "Expression_is_unsafe"; - DiagnosticCode[DiagnosticCode["Expression_is_never_null"] = 225] = "Expression_is_never_null"; - DiagnosticCode[DiagnosticCode["Unterminated_string_literal"] = 1002] = "Unterminated_string_literal"; - DiagnosticCode[DiagnosticCode["Identifier_expected"] = 1003] = "Identifier_expected"; - DiagnosticCode[DiagnosticCode["_0_expected"] = 1005] = "_0_expected"; - DiagnosticCode[DiagnosticCode["A_file_cannot_have_a_reference_to_itself"] = 1006] = "A_file_cannot_have_a_reference_to_itself"; - DiagnosticCode[DiagnosticCode["Trailing_comma_not_allowed"] = 1009] = "Trailing_comma_not_allowed"; - DiagnosticCode[DiagnosticCode["Unexpected_token"] = 1012] = "Unexpected_token"; - DiagnosticCode[DiagnosticCode["A_rest_parameter_must_be_last_in_a_parameter_list"] = 1014] = "A_rest_parameter_must_be_last_in_a_parameter_list"; - DiagnosticCode[DiagnosticCode["Parameter_cannot_have_question_mark_and_initializer"] = 1015] = "Parameter_cannot_have_question_mark_and_initializer"; - DiagnosticCode[DiagnosticCode["A_required_parameter_cannot_follow_an_optional_parameter"] = 1016] = "A_required_parameter_cannot_follow_an_optional_parameter"; - DiagnosticCode[DiagnosticCode["Statements_are_not_allowed_in_ambient_contexts"] = 1036] = "Statements_are_not_allowed_in_ambient_contexts"; - DiagnosticCode[DiagnosticCode["Initializers_are_not_allowed_in_ambient_contexts"] = 1039] = "Initializers_are_not_allowed_in_ambient_contexts"; - DiagnosticCode[DiagnosticCode["_0_modifier_cannot_be_used_here"] = 1042] = "_0_modifier_cannot_be_used_here"; - DiagnosticCode[DiagnosticCode["A_rest_parameter_cannot_be_optional"] = 1047] = "A_rest_parameter_cannot_be_optional"; - DiagnosticCode[DiagnosticCode["A_rest_parameter_cannot_have_an_initializer"] = 1048] = "A_rest_parameter_cannot_have_an_initializer"; - DiagnosticCode[DiagnosticCode["A_set_accessor_must_have_exactly_one_parameter"] = 1049] = "A_set_accessor_must_have_exactly_one_parameter"; - DiagnosticCode[DiagnosticCode["A_set_accessor_parameter_cannot_have_an_initializer"] = 1052] = "A_set_accessor_parameter_cannot_have_an_initializer"; - DiagnosticCode[DiagnosticCode["A_get_accessor_cannot_have_parameters"] = 1054] = "A_get_accessor_cannot_have_parameters"; - DiagnosticCode[DiagnosticCode["Enum_member_must_have_initializer"] = 1061] = "Enum_member_must_have_initializer"; - DiagnosticCode[DiagnosticCode["Type_parameters_cannot_appear_on_a_constructor_declaration"] = 1092] = "Type_parameters_cannot_appear_on_a_constructor_declaration"; - DiagnosticCode[DiagnosticCode["Type_annotation_cannot_appear_on_a_constructor_declaration"] = 1093] = "Type_annotation_cannot_appear_on_a_constructor_declaration"; - DiagnosticCode[DiagnosticCode["An_accessor_cannot_have_type_parameters"] = 1094] = "An_accessor_cannot_have_type_parameters"; - DiagnosticCode[DiagnosticCode["A_set_accessor_cannot_have_a_return_type_annotation"] = 1095] = "A_set_accessor_cannot_have_a_return_type_annotation"; - DiagnosticCode[DiagnosticCode["Type_parameter_list_cannot_be_empty"] = 1098] = "Type_parameter_list_cannot_be_empty"; - DiagnosticCode[DiagnosticCode["A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement"] = 1104] = "A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement"; - DiagnosticCode[DiagnosticCode["A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement"] = 1105] = "A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement"; - DiagnosticCode[DiagnosticCode["A_return_statement_can_only_be_used_within_a_function_body"] = 1108] = "A_return_statement_can_only_be_used_within_a_function_body"; - DiagnosticCode[DiagnosticCode["Expression_expected"] = 1109] = "Expression_expected"; - DiagnosticCode[DiagnosticCode["Type_expected"] = 1110] = "Type_expected"; - DiagnosticCode[DiagnosticCode["A_default_clause_cannot_appear_more_than_once_in_a_switch_statement"] = 1113] = "A_default_clause_cannot_appear_more_than_once_in_a_switch_statement"; - DiagnosticCode[DiagnosticCode["Duplicate_label_0"] = 1114] = "Duplicate_label_0"; - DiagnosticCode[DiagnosticCode["An_export_assignment_cannot_have_modifiers"] = 1120] = "An_export_assignment_cannot_have_modifiers"; - DiagnosticCode[DiagnosticCode["Octal_literals_are_not_allowed_in_strict_mode"] = 1121] = "Octal_literals_are_not_allowed_in_strict_mode"; - DiagnosticCode[DiagnosticCode["Digit_expected"] = 1124] = "Digit_expected"; - DiagnosticCode[DiagnosticCode["Hexadecimal_digit_expected"] = 1125] = "Hexadecimal_digit_expected"; - DiagnosticCode[DiagnosticCode["Unexpected_end_of_text"] = 1126] = "Unexpected_end_of_text"; - DiagnosticCode[DiagnosticCode["Invalid_character"] = 1127] = "Invalid_character"; - DiagnosticCode[DiagnosticCode["_case_or_default_expected"] = 1130] = "_case_or_default_expected"; - DiagnosticCode[DiagnosticCode["_super_must_be_followed_by_an_argument_list_or_member_access"] = 1034] = "_super_must_be_followed_by_an_argument_list_or_member_access"; - DiagnosticCode[DiagnosticCode["A_declare_modifier_cannot_be_used_in_an_already_ambient_context"] = 1038] = "A_declare_modifier_cannot_be_used_in_an_already_ambient_context"; - DiagnosticCode[DiagnosticCode["Type_argument_expected"] = 1140] = "Type_argument_expected"; - DiagnosticCode[DiagnosticCode["String_literal_expected"] = 1141] = "String_literal_expected"; - DiagnosticCode[DiagnosticCode["Line_break_not_permitted_here"] = 1142] = "Line_break_not_permitted_here"; - DiagnosticCode[DiagnosticCode["Declaration_expected"] = 1146] = "Declaration_expected"; - DiagnosticCode[DiagnosticCode["_const_declarations_must_be_initialized"] = 1155] = "_const_declarations_must_be_initialized"; - DiagnosticCode[DiagnosticCode["Unterminated_regular_expression_literal"] = 1161] = "Unterminated_regular_expression_literal"; - DiagnosticCode[DiagnosticCode["Interface_declaration_cannot_have_implements_clause"] = 1176] = "Interface_declaration_cannot_have_implements_clause"; - DiagnosticCode[DiagnosticCode["Binary_digit_expected"] = 1177] = "Binary_digit_expected"; - DiagnosticCode[DiagnosticCode["Octal_digit_expected"] = 1178] = "Octal_digit_expected"; - DiagnosticCode[DiagnosticCode["An_implementation_cannot_be_declared_in_ambient_contexts"] = 1183] = "An_implementation_cannot_be_declared_in_ambient_contexts"; - DiagnosticCode[DiagnosticCode["An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive"] = 1198] = "An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive"; - DiagnosticCode[DiagnosticCode["Unterminated_Unicode_escape_sequence"] = 1199] = "Unterminated_Unicode_escape_sequence"; - DiagnosticCode[DiagnosticCode["Decorators_are_not_valid_here"] = 1206] = "Decorators_are_not_valid_here"; - DiagnosticCode[DiagnosticCode["_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration"] = 1242] = "_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration"; - DiagnosticCode[DiagnosticCode["Method_0_cannot_have_an_implementation_because_it_is_marked_abstract"] = 1245] = "Method_0_cannot_have_an_implementation_because_it_is_marked_abstract"; - DiagnosticCode[DiagnosticCode["A_definite_assignment_assertion_is_not_permitted_in_this_context"] = 1255] = "A_definite_assignment_assertion_is_not_permitted_in_this_context"; - DiagnosticCode[DiagnosticCode["A_class_may_only_extend_another_class"] = 1311] = "A_class_may_only_extend_another_class"; - DiagnosticCode[DiagnosticCode["A_parameter_property_cannot_be_declared_using_a_rest_parameter"] = 1317] = "A_parameter_property_cannot_be_declared_using_a_rest_parameter"; - DiagnosticCode[DiagnosticCode["Duplicate_identifier_0"] = 2300] = "Duplicate_identifier_0"; - DiagnosticCode[DiagnosticCode["Cannot_find_name_0"] = 2304] = "Cannot_find_name_0"; - DiagnosticCode[DiagnosticCode["Module_0_has_no_exported_member_1"] = 2305] = "Module_0_has_no_exported_member_1"; - DiagnosticCode[DiagnosticCode["Generic_type_0_requires_1_type_argument_s"] = 2314] = "Generic_type_0_requires_1_type_argument_s"; - DiagnosticCode[DiagnosticCode["Type_0_is_not_generic"] = 2315] = "Type_0_is_not_generic"; - DiagnosticCode[DiagnosticCode["Type_0_is_not_assignable_to_type_1"] = 2322] = "Type_0_is_not_assignable_to_type_1"; - DiagnosticCode[DiagnosticCode["Index_signature_is_missing_in_type_0"] = 2329] = "Index_signature_is_missing_in_type_0"; - DiagnosticCode[DiagnosticCode["_this_cannot_be_referenced_in_current_location"] = 2332] = "_this_cannot_be_referenced_in_current_location"; - DiagnosticCode[DiagnosticCode["_super_can_only_be_referenced_in_a_derived_class"] = 2335] = "_super_can_only_be_referenced_in_a_derived_class"; - DiagnosticCode[DiagnosticCode["Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors"] = 2337] = "Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors"; - DiagnosticCode[DiagnosticCode["Property_0_does_not_exist_on_type_1"] = 2339] = "Property_0_does_not_exist_on_type_1"; - DiagnosticCode[DiagnosticCode["Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures"] = 2349] = "Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures"; - DiagnosticCode[DiagnosticCode["Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature"] = 2351] = "Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature"; - DiagnosticCode[DiagnosticCode["A_function_whose_declared_type_is_not_void_must_return_a_value"] = 2355] = "A_function_whose_declared_type_is_not_void_must_return_a_value"; - DiagnosticCode[DiagnosticCode["The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access"] = 2357] = "The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access"; - DiagnosticCode[DiagnosticCode["The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access"] = 2364] = "The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access"; - DiagnosticCode[DiagnosticCode["Operator_0_cannot_be_applied_to_types_1_and_2"] = 2365] = "Operator_0_cannot_be_applied_to_types_1_and_2"; - DiagnosticCode[DiagnosticCode["A_super_call_must_be_the_first_statement_in_the_constructor"] = 2376] = "A_super_call_must_be_the_first_statement_in_the_constructor"; - DiagnosticCode[DiagnosticCode["Constructors_for_derived_classes_must_contain_a_super_call"] = 2377] = "Constructors_for_derived_classes_must_contain_a_super_call"; - DiagnosticCode[DiagnosticCode["_get_and_set_accessor_must_have_the_same_type"] = 2380] = "_get_and_set_accessor_must_have_the_same_type"; - DiagnosticCode[DiagnosticCode["Constructor_implementation_is_missing"] = 2390] = "Constructor_implementation_is_missing"; - DiagnosticCode[DiagnosticCode["Function_implementation_is_missing_or_not_immediately_following_the_declaration"] = 2391] = "Function_implementation_is_missing_or_not_immediately_following_the_declaration"; - DiagnosticCode[DiagnosticCode["Multiple_constructor_implementations_are_not_allowed"] = 2392] = "Multiple_constructor_implementations_are_not_allowed"; - DiagnosticCode[DiagnosticCode["Duplicate_function_implementation"] = 2393] = "Duplicate_function_implementation"; - DiagnosticCode[DiagnosticCode["Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local"] = 2395] = "Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local"; - DiagnosticCode[DiagnosticCode["A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged"] = 2434] = "A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged"; - DiagnosticCode[DiagnosticCode["Type_0_has_no_property_1"] = 2460] = "Type_0_has_no_property_1"; - DiagnosticCode[DiagnosticCode["The_0_operator_cannot_be_applied_to_type_1"] = 2469] = "The_0_operator_cannot_be_applied_to_type_1"; - DiagnosticCode[DiagnosticCode["In_const_enum_declarations_member_initializer_must_be_constant_expression"] = 2474] = "In_const_enum_declarations_member_initializer_must_be_constant_expression"; - DiagnosticCode[DiagnosticCode["Export_declaration_conflicts_with_exported_declaration_of_0"] = 2484] = "Export_declaration_conflicts_with_exported_declaration_of_0"; - DiagnosticCode[DiagnosticCode["Object_is_possibly_null"] = 2531] = "Object_is_possibly_null"; - DiagnosticCode[DiagnosticCode["Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property"] = 2540] = "Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property"; - DiagnosticCode[DiagnosticCode["The_target_of_an_assignment_must_be_a_variable_or_a_property_access"] = 2541] = "The_target_of_an_assignment_must_be_a_variable_or_a_property_access"; - DiagnosticCode[DiagnosticCode["Index_signature_in_type_0_only_permits_reading"] = 2542] = "Index_signature_in_type_0_only_permits_reading"; - DiagnosticCode[DiagnosticCode["Expected_0_arguments_but_got_1"] = 2554] = "Expected_0_arguments_but_got_1"; - DiagnosticCode[DiagnosticCode["Expected_at_least_0_arguments_but_got_1"] = 2555] = "Expected_at_least_0_arguments_but_got_1"; - DiagnosticCode[DiagnosticCode["Expected_0_type_arguments_but_got_1"] = 2558] = "Expected_0_type_arguments_but_got_1"; - DiagnosticCode[DiagnosticCode["A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums"] = 2651] = "A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums"; - DiagnosticCode[DiagnosticCode["Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration"] = 2673] = "Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration"; - DiagnosticCode[DiagnosticCode["Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration"] = 2674] = "Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration"; - DiagnosticCode[DiagnosticCode["Namespace_0_has_no_exported_member_1"] = 2694] = "Namespace_0_has_no_exported_member_1"; - DiagnosticCode[DiagnosticCode["Required_type_parameters_may_not_follow_optional_type_parameters"] = 2706] = "Required_type_parameters_may_not_follow_optional_type_parameters"; - DiagnosticCode[DiagnosticCode["Duplicate_property_0"] = 2718] = "Duplicate_property_0"; - DiagnosticCode[DiagnosticCode["Type_0_has_no_call_signatures"] = 2757] = "Type_0_has_no_call_signatures"; - DiagnosticCode[DiagnosticCode["File_0_not_found"] = 6054] = "File_0_not_found"; - DiagnosticCode[DiagnosticCode["Numeric_separators_are_not_allowed_here"] = 6188] = "Numeric_separators_are_not_allowed_here"; - DiagnosticCode[DiagnosticCode["Multiple_consecutive_numeric_separators_are_not_permitted"] = 6189] = "Multiple_consecutive_numeric_separators_are_not_permitted"; - DiagnosticCode[DiagnosticCode["_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class"] = 17009] = "_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class"; - DiagnosticCode[DiagnosticCode["_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"] = 17011] = "_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"; -})(DiagnosticCode = exports.DiagnosticCode || (exports.DiagnosticCode = {})); -/** Translates a diagnostic code to its respective string. */ -function diagnosticCodeToString(code) { - switch (code) { - case 100: return "Operation not supported."; - case 101: return "Operation is unsafe."; - case 102: return "User-defined: {0}"; - case 200: return "Conversion from type '{0}' to '{1}' requires an explicit cast."; - case 201: return "Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit."; - case 202: return "Type '{0}' cannot be changed to type '{1}'."; - case 203: return "Type '{0}' cannot be reinterpreted as type '{1}'."; - case 204: return "Basic type '{0}' cannot be nullable."; - case 205: return "Cannot export a mutable global."; - case 206: return "Mutable value cannot be inlined."; - case 207: return "Unmanaged classes cannot extend managed classes and vice-versa."; - case 208: return "Unmanaged classes cannot implement interfaces."; - case 209: return "Invalid regular expression flags."; - case 210: return "Implementation '{0}' must match the signature '{1}'."; - case 211: return "Class '{0}' is sealed and cannot be extended."; - case 212: return "Decorator '{0}' is not valid here."; - case 213: return "Duplicate decorator."; - case 214: return "An allocator must be present to use '{0}'."; - case 215: return "Optional parameter must have an initializer."; - case 216: return "Constructor of class '{0}' must not require any arguments."; - case 217: return "Function '{0}' cannot be inlined into itself."; - case 218: return "Cannot access method '{0}' without calling it as it requires 'this' to be set."; - case 219: return "Optional properties are not supported."; - case 220: return "Expression must be a compile-time constant."; - case 221: return "Module cannot have multiple start functions."; - case 222: return "'{0}' must be a value between '{1}' and '{2}' inclusive."; - case 223: return "'{0}' must be a power of two."; - case 224: return "Expression is unsafe."; - case 225: return "Expression is never 'null'."; - case 1002: return "Unterminated string literal."; - case 1003: return "Identifier expected."; - case 1005: return "'{0}' expected."; - case 1006: return "A file cannot have a reference to itself."; - case 1009: return "Trailing comma not allowed."; - case 1012: return "Unexpected token."; - case 1014: return "A rest parameter must be last in a parameter list."; - case 1015: return "Parameter cannot have question mark and initializer."; - case 1016: return "A required parameter cannot follow an optional parameter."; - case 1036: return "Statements are not allowed in ambient contexts."; - case 1039: return "Initializers are not allowed in ambient contexts."; - case 1042: return "'{0}' modifier cannot be used here."; - case 1047: return "A rest parameter cannot be optional."; - case 1048: return "A rest parameter cannot have an initializer."; - case 1049: return "A 'set' accessor must have exactly one parameter."; - case 1052: return "A 'set' accessor parameter cannot have an initializer."; - case 1054: return "A 'get' accessor cannot have parameters."; - case 1061: return "Enum member must have initializer."; - case 1092: return "Type parameters cannot appear on a constructor declaration."; - case 1093: return "Type annotation cannot appear on a constructor declaration."; - case 1094: return "An accessor cannot have type parameters."; - case 1095: return "A 'set' accessor cannot have a return type annotation."; - case 1098: return "Type parameter list cannot be empty."; - case 1104: return "A 'continue' statement can only be used within an enclosing iteration statement."; - case 1105: return "A 'break' statement can only be used within an enclosing iteration or switch statement."; - case 1108: return "A 'return' statement can only be used within a function body."; - case 1109: return "Expression expected."; - case 1110: return "Type expected."; - case 1113: return "A 'default' clause cannot appear more than once in a 'switch' statement."; - case 1114: return "Duplicate label '{0}'."; - case 1120: return "An export assignment cannot have modifiers."; - case 1121: return "Octal literals are not allowed in strict mode."; - case 1124: return "Digit expected."; - case 1125: return "Hexadecimal digit expected."; - case 1126: return "Unexpected end of text."; - case 1127: return "Invalid character."; - case 1130: return "'case' or 'default' expected."; - case 1034: return "'super' must be followed by an argument list or member access."; - case 1038: return "A 'declare' modifier cannot be used in an already ambient context."; - case 1140: return "Type argument expected."; - case 1141: return "String literal expected."; - case 1142: return "Line break not permitted here."; - case 1146: return "Declaration expected."; - case 1155: return "'const' declarations must be initialized."; - case 1161: return "Unterminated regular expression literal."; - case 1176: return "Interface declaration cannot have 'implements' clause."; - case 1177: return "Binary digit expected."; - case 1178: return "Octal digit expected."; - case 1183: return "An implementation cannot be declared in ambient contexts."; - case 1198: return "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive."; - case 1199: return "Unterminated Unicode escape sequence."; - case 1206: return "Decorators are not valid here."; - case 1242: return "'abstract' modifier can only appear on a class, method, or property declaration."; - case 1245: return "Method '{0}' cannot have an implementation because it is marked abstract."; - case 1255: return "A definite assignment assertion '!' is not permitted in this context."; - case 1311: return "A class may only extend another class."; - case 1317: return "A parameter property cannot be declared using a rest parameter."; - case 2300: return "Duplicate identifier '{0}'."; - case 2304: return "Cannot find name '{0}'."; - case 2305: return "Module '{0}' has no exported member '{1}'."; - case 2314: return "Generic type '{0}' requires {1} type argument(s)."; - case 2315: return "Type '{0}' is not generic."; - case 2322: return "Type '{0}' is not assignable to type '{1}'."; - case 2329: return "Index signature is missing in type '{0}'."; - case 2332: return "'this' cannot be referenced in current location."; - case 2335: return "'super' can only be referenced in a derived class."; - case 2337: return "Super calls are not permitted outside constructors or in nested functions inside constructors."; - case 2339: return "Property '{0}' does not exist on type '{1}'."; - case 2349: return "Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures."; - case 2351: return "Cannot use 'new' with an expression whose type lacks a construct signature."; - case 2355: return "A function whose declared type is not 'void' must return a value."; - case 2357: return "The operand of an increment or decrement operator must be a variable or a property access."; - case 2364: return "The left-hand side of an assignment expression must be a variable or a property access."; - case 2365: return "Operator '{0}' cannot be applied to types '{1}' and '{2}'."; - case 2376: return "A 'super' call must be the first statement in the constructor."; - case 2377: return "Constructors for derived classes must contain a 'super' call."; - case 2380: return "'get' and 'set' accessor must have the same type."; - case 2390: return "Constructor implementation is missing."; - case 2391: return "Function implementation is missing or not immediately following the declaration."; - case 2392: return "Multiple constructor implementations are not allowed."; - case 2393: return "Duplicate function implementation."; - case 2395: return "Individual declarations in merged declaration '{0}' must be all exported or all local."; - case 2434: return "A namespace declaration cannot be located prior to a class or function with which it is merged."; - case 2460: return "Type '{0}' has no property '{1}'."; - case 2469: return "The '{0}' operator cannot be applied to type '{1}'."; - case 2474: return "In 'const' enum declarations member initializer must be constant expression."; - case 2484: return "Export declaration conflicts with exported declaration of '{0}'."; - case 2531: return "Object is possibly 'null'."; - case 2540: return "Cannot assign to '{0}' because it is a constant or a read-only property."; - case 2541: return "The target of an assignment must be a variable or a property access."; - case 2542: return "Index signature in type '{0}' only permits reading."; - case 2554: return "Expected {0} arguments, but got {1}."; - case 2555: return "Expected at least {0} arguments, but got {1}."; - case 2558: return "Expected {0} type arguments, but got {1}."; - case 2651: return "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums."; - case 2673: return "Constructor of class '{0}' is private and only accessible within the class declaration."; - case 2674: return "Constructor of class '{0}' is protected and only accessible within the class declaration."; - case 2694: return "Namespace '{0}' has no exported member '{1}'."; - case 2706: return "Required type parameters may not follow optional type parameters."; - case 2718: return "Duplicate property '{0}'."; - case 2757: return "Type '{0}' has no call signatures."; - case 6054: return "File '{0}' not found."; - case 6188: return "Numeric separators are not allowed here."; - case 6189: return "Multiple consecutive numeric separators are not permitted."; - case 17009: return "'super' must be called before accessing 'this' in the constructor of a derived class."; - case 17011: return "'super' must be called before accessing a property of 'super' in the constructor of a derived class."; - default: return ""; - } -} -exports.diagnosticCodeToString = diagnosticCodeToString; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY01lc3NhZ2VzLmdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWFnbm9zdGljTWVzc2FnZXMuZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0csQ0FBQSxLQUFLOztBQUVSLG9DQUFvQztBQUVwQywwQ0FBMEM7QUFDMUMsSUFBWSxjQXdJWDtBQXhJRCxXQUFZLGNBQWM7SUFDeEIsMkZBQTZCLENBQUE7SUFDN0IsbUZBQXlCLENBQUE7SUFDekIseUVBQW9CLENBQUE7SUFDcEIsdUpBQTJELENBQUE7SUFDM0QsaU9BQWdHLENBQUE7SUFDaEcsaUhBQXdDLENBQUE7SUFDeEMsNkhBQThDLENBQUE7SUFDOUMsMkdBQXFDLENBQUE7SUFDckMseUdBQW9DLENBQUE7SUFDcEMsMkdBQXFDLENBQUE7SUFDckMseUtBQW9FLENBQUE7SUFDcEUsdUlBQW1ELENBQUE7SUFDbkQsNkdBQXNDLENBQUE7SUFDdEMsbUlBQWlELENBQUE7SUFDakQsNkhBQThDLENBQUE7SUFDOUMsdUdBQW1DLENBQUE7SUFDbkMsbUZBQXlCLENBQUE7SUFDekIsdUhBQTJDLENBQUE7SUFDM0MsbUlBQWlELENBQUE7SUFDakQsdUpBQTJELENBQUE7SUFDM0QsNkhBQThDLENBQUE7SUFDOUMsMkxBQTZFLENBQUE7SUFDN0UsdUhBQTJDLENBQUE7SUFDM0MsaUlBQWdELENBQUE7SUFDaEQsbUlBQWlELENBQUE7SUFDakQscUlBQWtELENBQUE7SUFDbEQsK0ZBQStCLENBQUE7SUFDL0IscUZBQTBCLENBQUE7SUFDMUIsNkZBQThCLENBQUE7SUFDOUIsb0dBQWtDLENBQUE7SUFDbEMsb0ZBQTBCLENBQUE7SUFDMUIsb0VBQWtCLENBQUE7SUFDbEIsOEhBQStDLENBQUE7SUFDL0Msa0dBQWlDLENBQUE7SUFDakMsOEVBQXVCLENBQUE7SUFDdkIsZ0pBQXdELENBQUE7SUFDeEQsb0pBQTBELENBQUE7SUFDMUQsOEpBQStELENBQUE7SUFDL0QsMElBQXFELENBQUE7SUFDckQsOElBQXVELENBQUE7SUFDdkQsNEdBQXNDLENBQUE7SUFDdEMsb0hBQTBDLENBQUE7SUFDMUMsb0lBQWtELENBQUE7SUFDbEQsMElBQXFELENBQUE7SUFDckQsb0pBQTBELENBQUE7SUFDMUQsd0hBQTRDLENBQUE7SUFDNUMsZ0hBQXdDLENBQUE7SUFDeEMsa0tBQWlFLENBQUE7SUFDakUsa0tBQWlFLENBQUE7SUFDakUsNEhBQThDLENBQUE7SUFDOUMsb0pBQTBELENBQUE7SUFDMUQsb0hBQTBDLENBQUE7SUFDMUMsd01BQW9GLENBQUE7SUFDcEYsc05BQTJGLENBQUE7SUFDM0Ysa0tBQWlFLENBQUE7SUFDakUsb0ZBQTBCLENBQUE7SUFDMUIsd0VBQW9CLENBQUE7SUFDcEIsb0xBQTBFLENBQUE7SUFDMUUsZ0ZBQXdCLENBQUE7SUFDeEIsa0lBQWlELENBQUE7SUFDakQsd0lBQW9ELENBQUE7SUFDcEQsMEVBQXFCLENBQUE7SUFDckIsa0dBQWlDLENBQUE7SUFDakMsMEZBQTZCLENBQUE7SUFDN0IsZ0ZBQXdCLENBQUE7SUFDeEIsZ0dBQWdDLENBQUE7SUFDaEMsc0tBQW1FLENBQUE7SUFDbkUsNEtBQXNFLENBQUE7SUFDdEUsMEZBQTZCLENBQUE7SUFDN0IsNEZBQThCLENBQUE7SUFDOUIsd0dBQW9DLENBQUE7SUFDcEMsc0ZBQTJCLENBQUE7SUFDM0IsNEhBQThDLENBQUE7SUFDOUMsNEhBQThDLENBQUE7SUFDOUMsb0pBQTBELENBQUE7SUFDMUQsd0ZBQTRCLENBQUE7SUFDNUIsc0ZBQTJCLENBQUE7SUFDM0IsOEpBQStELENBQUE7SUFDL0Qsb01BQWtGLENBQUE7SUFDbEYsc0hBQTJDLENBQUE7SUFDM0Msd0dBQW9DLENBQUE7SUFDcEMsc01BQW1GLENBQUE7SUFDbkYsc0xBQTJFLENBQUE7SUFDM0UsOEtBQXVFLENBQUE7SUFDdkUsd0hBQTRDLENBQUE7SUFDNUMsMEtBQXFFLENBQUE7SUFDckUsMEZBQTZCLENBQUE7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QWtJLENBQUM7UUFDckosS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHlGQUF5RixDQUFDO1FBQzVHLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyRkFBMkYsQ0FBQztRQUM5RyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sK0NBQStDLENBQUM7UUFDbEUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG1FQUFtRSxDQUFDO1FBQ3RGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyQkFBMkIsQ0FBQztRQUM5QyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sb0NBQW9DLENBQUM7UUFDdkQsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHVCQUF1QixDQUFDO1FBQzFDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywwQ0FBMEMsQ0FBQztRQUM3RCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sNERBQTRELENBQUM7UUFDL0UsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLHVGQUF1RixDQUFDO1FBQzNHLEtBQUssS0FBSyxDQUFDLENBQUMsT0FBTyxzR0FBc0csQ0FBQztRQUMxSCxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNwQjtBQUNILENBQUM7QUEzSUQsd0RBMklDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgZnJvbSBkaWFnbm9zdGljc01lc3NhZ2VzLmpzb24uIERvIG5vdCBlZGl0LlxuICogQG1vZHVsZSBkaWFnbm9zdGljc1xuICovLyoqKi9cblxuLyogdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoICovXG5cbi8qKiBFbnVtIG9mIGF2YWlsYWJsZSBkaWFnbm9zdGljIGNvZGVzLiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0NvZGUge1xuICBPcGVyYXRpb25fbm90X3N1cHBvcnRlZCA9IDEwMCxcbiAgT3BlcmF0aW9uX2lzX3Vuc2FmZSA9IDEwMSxcbiAgVXNlcl9kZWZpbmVkXzAgPSAxMDIsXG4gIENvbnZlcnNpb25fZnJvbV90eXBlXzBfdG9fMV9yZXF1aXJlc19hbl9leHBsaWNpdF9jYXN0ID0gMjAwLFxuICBDb252ZXJzaW9uX2Zyb21fdHlwZV8wX3RvXzFfd2lsbF9yZXF1aXJlX2FuX2V4cGxpY2l0X2Nhc3Rfd2hlbl9zd2l0Y2hpbmdfYmV0d2Vlbl8zMl82NF9iaXQgPSAyMDEsXG4gIFR5cGVfMF9jYW5ub3RfYmVfY2hhbmdlZF90b190eXBlXzEgPSAyMDIsXG4gIFR5cGVfMF9jYW5ub3RfYmVfcmVpbnRlcnByZXRlZF9hc190eXBlXzEgPSAyMDMsXG4gIEJhc2ljX3R5cGVfMF9jYW5ub3RfYmVfbnVsbGFibGUgPSAyMDQsXG4gIENhbm5vdF9leHBvcnRfYV9tdXRhYmxlX2dsb2JhbCA9IDIwNSxcbiAgTXV0YWJsZV92YWx1ZV9jYW5ub3RfYmVfaW5saW5lZCA9IDIwNixcbiAgVW5tYW5hZ2VkX2NsYXNzZXNfY2Fubm90X2V4dGVuZF9tYW5hZ2VkX2NsYXNzZXNfYW5kX3ZpY2VfdmVyc2EgPSAyMDcsXG4gIFVubWFuYWdlZF9jbGFzc2VzX2Nhbm5vdF9pbXBsZW1lbnRfaW50ZXJmYWNlcyA9IDIwOCxcbiAgSW52YWxpZF9yZWd1bGFyX2V4cHJlc3Npb25fZmxhZ3MgPSAyMDksXG4gIEltcGxlbWVudGF0aW9uXzBfbXVzdF9tYXRjaF90aGVfc2lnbmF0dXJlXzEgPSAyMTAsXG4gIENsYXNzXzBfaXNfc2VhbGVkX2FuZF9jYW5ub3RfYmVfZXh0ZW5kZWQgPSAyMTEsXG4gIERlY29yYXRvcl8wX2lzX25vdF92YWxpZF9oZXJlID0gMjEyLFxuICBEdXBsaWNhdGVfZGVjb3JhdG9yID0gMjEzLFxuICBBbl9hbGxvY2F0b3JfbXVzdF9iZV9wcmVzZW50X3RvX3VzZV8wID0gMjE0LFxuICBPcHRpb25hbF9wYXJhbWV0ZXJfbXVzdF9oYXZlX2FuX2luaXRpYWxpemVyID0gMjE1LFxuICBDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX211c3Rfbm90X3JlcXVpcmVfYW55X2FyZ3VtZW50cyA9IDIxNixcbiAgRnVuY3Rpb25fMF9jYW5ub3RfYmVfaW5saW5lZF9pbnRvX2l0c2VsZiA9IDIxNyxcbiAgQ2Fubm90X2FjY2Vzc19tZXRob2RfMF93aXRob3V0X2NhbGxpbmdfaXRfYXNfaXRfcmVxdWlyZXNfdGhpc190b19iZV9zZXQgPSAyMTgsXG4gIE9wdGlvbmFsX3Byb3BlcnRpZXNfYXJlX25vdF9zdXBwb3J0ZWQgPSAyMTksXG4gIEV4cHJlc3Npb25fbXVzdF9iZV9hX2NvbXBpbGVfdGltZV9jb25zdGFudCA9IDIyMCxcbiAgTW9kdWxlX2Nhbm5vdF9oYXZlX211bHRpcGxlX3N0YXJ0X2Z1bmN0aW9ucyA9IDIyMSxcbiAgXzBfbXVzdF9iZV9hX3ZhbHVlX2JldHdlZW5fMV9hbmRfMl9pbmNsdXNpdmUgPSAyMjIsXG4gIF8wX211c3RfYmVfYV9wb3dlcl9vZl90d28gPSAyMjMsXG4gIEV4cHJlc3Npb25faXNfdW5zYWZlID0gMjI0LFxuICBFeHByZXNzaW9uX2lzX25ldmVyX251bGwgPSAyMjUsXG4gIFVudGVybWluYXRlZF9zdHJpbmdfbGl0ZXJhbCA9IDEwMDIsXG4gIElkZW50aWZpZXJfZXhwZWN0ZWQgPSAxMDAzLFxuICBfMF9leHBlY3RlZCA9IDEwMDUsXG4gIEFfZmlsZV9jYW5ub3RfaGF2ZV9hX3JlZmVyZW5jZV90b19pdHNlbGYgPSAxMDA2LFxuICBUcmFpbGluZ19jb21tYV9ub3RfYWxsb3dlZCA9IDEwMDksXG4gIFVuZXhwZWN0ZWRfdG9rZW4gPSAxMDEyLFxuICBBX3Jlc3RfcGFyYW1ldGVyX211c3RfYmVfbGFzdF9pbl9hX3BhcmFtZXRlcl9saXN0ID0gMTAxNCxcbiAgUGFyYW1ldGVyX2Nhbm5vdF9oYXZlX3F1ZXN0aW9uX21hcmtfYW5kX2luaXRpYWxpemVyID0gMTAxNSxcbiAgQV9yZXF1aXJlZF9wYXJhbWV0ZXJfY2Fubm90X2ZvbGxvd19hbl9vcHRpb25hbF9wYXJhbWV0ZXIgPSAxMDE2LFxuICBTdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzID0gMTAzNixcbiAgSW5pdGlhbGl6ZXJzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzID0gMTAzOSxcbiAgXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaGVyZSA9IDEwNDIsXG4gIEFfcmVzdF9wYXJhbWV0ZXJfY2Fubm90X2JlX29wdGlvbmFsID0gMTA0NyxcbiAgQV9yZXN0X3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplciA9IDEwNDgsXG4gIEFfc2V0X2FjY2Vzc29yX211c3RfaGF2ZV9leGFjdGx5X29uZV9wYXJhbWV0ZXIgPSAxMDQ5LFxuICBBX3NldF9hY2Nlc3Nvcl9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXIgPSAxMDUyLFxuICBBX2dldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9wYXJhbWV0ZXJzID0gMTA1NCxcbiAgRW51bV9tZW1iZXJfbXVzdF9oYXZlX2luaXRpYWxpemVyID0gMTA2MSxcbiAgVHlwZV9wYXJhbWV0ZXJzX2Nhbm5vdF9hcHBlYXJfb25fYV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IDEwOTIsXG4gIFR5cGVfYW5ub3RhdGlvbl9jYW5ub3RfYXBwZWFyX29uX2FfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSAxMDkzLFxuICBBbl9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV90eXBlX3BhcmFtZXRlcnMgPSAxMDk0LFxuICBBX3NldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9hX3JldHVybl90eXBlX2Fubm90YXRpb24gPSAxMDk1LFxuICBUeXBlX3BhcmFtZXRlcl9saXN0X2Nhbm5vdF9iZV9lbXB0eSA9IDEwOTgsXG4gIEFfY29udGludWVfc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FuX2VuY2xvc2luZ19pdGVyYXRpb25fc3RhdGVtZW50ID0gMTEwNCxcbiAgQV9icmVha19zdGF0ZW1lbnRfY2FuX29ubHlfYmVfdXNlZF93aXRoaW5fYW5fZW5jbG9zaW5nX2l0ZXJhdGlvbl9vcl9zd2l0Y2hfc3RhdGVtZW50ID0gMTEwNSxcbiAgQV9yZXR1cm5fc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FfZnVuY3Rpb25fYm9keSA9IDExMDgsXG4gIEV4cHJlc3Npb25fZXhwZWN0ZWQgPSAxMTA5LFxuICBUeXBlX2V4cGVjdGVkID0gMTExMCxcbiAgQV9kZWZhdWx0X2NsYXVzZV9jYW5ub3RfYXBwZWFyX21vcmVfdGhhbl9vbmNlX2luX2Ffc3dpdGNoX3N0YXRlbWVudCA9IDExMTMsXG4gIER1cGxpY2F0ZV9sYWJlbF8wID0gMTExNCxcbiAgQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2hhdmVfbW9kaWZpZXJzID0gMTEyMCxcbiAgT2N0YWxfbGl0ZXJhbHNfYXJlX25vdF9hbGxvd2VkX2luX3N0cmljdF9tb2RlID0gMTEyMSxcbiAgRGlnaXRfZXhwZWN0ZWQgPSAxMTI0LFxuICBIZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCA9IDExMjUsXG4gIFVuZXhwZWN0ZWRfZW5kX29mX3RleHQgPSAxMTI2LFxuICBJbnZhbGlkX2NoYXJhY3RlciA9IDExMjcsXG4gIF9jYXNlX29yX2RlZmF1bHRfZXhwZWN0ZWQgPSAxMTMwLFxuICBfc3VwZXJfbXVzdF9iZV9mb2xsb3dlZF9ieV9hbl9hcmd1bWVudF9saXN0X29yX21lbWJlcl9hY2Nlc3MgPSAxMDM0LFxuICBBX2RlY2xhcmVfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaW5fYW5fYWxyZWFkeV9hbWJpZW50X2NvbnRleHQgPSAxMDM4LFxuICBUeXBlX2FyZ3VtZW50X2V4cGVjdGVkID0gMTE0MCxcbiAgU3RyaW5nX2xpdGVyYWxfZXhwZWN0ZWQgPSAxMTQxLFxuICBMaW5lX2JyZWFrX25vdF9wZXJtaXR0ZWRfaGVyZSA9IDExNDIsXG4gIERlY2xhcmF0aW9uX2V4cGVjdGVkID0gMTE0NixcbiAgX2NvbnN0X2RlY2xhcmF0aW9uc19tdXN0X2JlX2luaXRpYWxpemVkID0gMTE1NSxcbiAgVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsID0gMTE2MSxcbiAgSW50ZXJmYWNlX2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX2ltcGxlbWVudHNfY2xhdXNlID0gMTE3NixcbiAgQmluYXJ5X2RpZ2l0X2V4cGVjdGVkID0gMTE3NyxcbiAgT2N0YWxfZGlnaXRfZXhwZWN0ZWQgPSAxMTc4LFxuICBBbl9pbXBsZW1lbnRhdGlvbl9jYW5ub3RfYmVfZGVjbGFyZWRfaW5fYW1iaWVudF9jb250ZXh0cyA9IDExODMsXG4gIEFuX2V4dGVuZGVkX1VuaWNvZGVfZXNjYXBlX3ZhbHVlX211c3RfYmVfYmV0d2Vlbl8weDBfYW5kXzB4MTBGRkZGX2luY2x1c2l2ZSA9IDExOTgsXG4gIFVudGVybWluYXRlZF9Vbmljb2RlX2VzY2FwZV9zZXF1ZW5jZSA9IDExOTksXG4gIERlY29yYXRvcnNfYXJlX25vdF92YWxpZF9oZXJlID0gMTIwNixcbiAgX2Fic3RyYWN0X21vZGlmaWVyX2Nhbl9vbmx5X2FwcGVhcl9vbl9hX2NsYXNzX21ldGhvZF9vcl9wcm9wZXJ0eV9kZWNsYXJhdGlvbiA9IDEyNDIsXG4gIE1ldGhvZF8wX2Nhbm5vdF9oYXZlX2FuX2ltcGxlbWVudGF0aW9uX2JlY2F1c2VfaXRfaXNfbWFya2VkX2Fic3RyYWN0ID0gMTI0NSxcbiAgQV9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbl9pc19ub3RfcGVybWl0dGVkX2luX3RoaXNfY29udGV4dCA9IDEyNTUsXG4gIEFfY2xhc3NfbWF5X29ubHlfZXh0ZW5kX2Fub3RoZXJfY2xhc3MgPSAxMzExLFxuICBBX3BhcmFtZXRlcl9wcm9wZXJ0eV9jYW5ub3RfYmVfZGVjbGFyZWRfdXNpbmdfYV9yZXN0X3BhcmFtZXRlciA9IDEzMTcsXG4gIER1cGxpY2F0ZV9pZGVudGlmaWVyXzAgPSAyMzAwLFxuICBDYW5ub3RfZmluZF9uYW1lXzAgPSAyMzA0LFxuICBNb2R1bGVfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEgPSAyMzA1LFxuICBHZW5lcmljX3R5cGVfMF9yZXF1aXJlc18xX3R5cGVfYXJndW1lbnRfcyA9IDIzMTQsXG4gIFR5cGVfMF9pc19ub3RfZ2VuZXJpYyA9IDIzMTUsXG4gIFR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzEgPSAyMzIyLFxuICBJbmRleF9zaWduYXR1cmVfaXNfbWlzc2luZ19pbl90eXBlXzAgPSAyMzI5LFxuICBfdGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9jdXJyZW50X2xvY2F0aW9uID0gMjMzMixcbiAgX3N1cGVyX2Nhbl9vbmx5X2JlX3JlZmVyZW5jZWRfaW5fYV9kZXJpdmVkX2NsYXNzID0gMjMzNSxcbiAgU3VwZXJfY2FsbHNfYXJlX25vdF9wZXJtaXR0ZWRfb3V0c2lkZV9jb25zdHJ1Y3RvcnNfb3JfaW5fbmVzdGVkX2Z1bmN0aW9uc19pbnNpZGVfY29uc3RydWN0b3JzID0gMjMzNyxcbiAgUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzEgPSAyMzM5LFxuICBDYW5ub3RfaW52b2tlX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9sYWNrc19hX2NhbGxfc2lnbmF0dXJlX1R5cGVfMF9oYXNfbm9fY29tcGF0aWJsZV9jYWxsX3NpZ25hdHVyZXMgPSAyMzQ5LFxuICBDYW5ub3RfdXNlX25ld193aXRoX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9sYWNrc19hX2NvbnN0cnVjdF9zaWduYXR1cmUgPSAyMzUxLFxuICBBX2Z1bmN0aW9uX3dob3NlX2RlY2xhcmVkX3R5cGVfaXNfbm90X3ZvaWRfbXVzdF9yZXR1cm5fYV92YWx1ZSA9IDIzNTUsXG4gIFRoZV9vcGVyYW5kX29mX2FuX2luY3JlbWVudF9vcl9kZWNyZW1lbnRfb3BlcmF0b3JfbXVzdF9iZV9hX3ZhcmlhYmxlX29yX2FfcHJvcGVydHlfYWNjZXNzID0gMjM1NyxcbiAgVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2Fzc2lnbm1lbnRfZXhwcmVzc2lvbl9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3MgPSAyMzY0LFxuICBPcGVyYXRvcl8wX2Nhbm5vdF9iZV9hcHBsaWVkX3RvX3R5cGVzXzFfYW5kXzIgPSAyMzY1LFxuICBBX3N1cGVyX2NhbGxfbXVzdF9iZV90aGVfZmlyc3Rfc3RhdGVtZW50X2luX3RoZV9jb25zdHJ1Y3RvciA9IDIzNzYsXG4gIENvbnN0cnVjdG9yc19mb3JfZGVyaXZlZF9jbGFzc2VzX211c3RfY29udGFpbl9hX3N1cGVyX2NhbGwgPSAyMzc3LFxuICBfZ2V0X2FuZF9zZXRfYWNjZXNzb3JfbXVzdF9oYXZlX3RoZV9zYW1lX3R5cGUgPSAyMzgwLFxuICBDb25zdHJ1Y3Rvcl9pbXBsZW1lbnRhdGlvbl9pc19taXNzaW5nID0gMjM5MCxcbiAgRnVuY3Rpb25faW1wbGVtZW50YXRpb25faXNfbWlzc2luZ19vcl9ub3RfaW1tZWRpYXRlbHlfZm9sbG93aW5nX3RoZV9kZWNsYXJhdGlvbiA9IDIzOTEsXG4gIE11bHRpcGxlX2NvbnN0cnVjdG9yX2ltcGxlbWVudGF0aW9uc19hcmVfbm90X2FsbG93ZWQgPSAyMzkyLFxuICBEdXBsaWNhdGVfZnVuY3Rpb25faW1wbGVtZW50YXRpb24gPSAyMzkzLFxuICBJbmRpdmlkdWFsX2RlY2xhcmF0aW9uc19pbl9tZXJnZWRfZGVjbGFyYXRpb25fMF9tdXN0X2JlX2FsbF9leHBvcnRlZF9vcl9hbGxfbG9jYWwgPSAyMzk1LFxuICBBX25hbWVzcGFjZV9kZWNsYXJhdGlvbl9jYW5ub3RfYmVfbG9jYXRlZF9wcmlvcl90b19hX2NsYXNzX29yX2Z1bmN0aW9uX3dpdGhfd2hpY2hfaXRfaXNfbWVyZ2VkID0gMjQzNCxcbiAgVHlwZV8wX2hhc19ub19wcm9wZXJ0eV8xID0gMjQ2MCxcbiAgVGhlXzBfb3BlcmF0b3JfY2Fubm90X2JlX2FwcGxpZWRfdG9fdHlwZV8xID0gMjQ2OSxcbiAgSW5fY29uc3RfZW51bV9kZWNsYXJhdGlvbnNfbWVtYmVyX2luaXRpYWxpemVyX211c3RfYmVfY29uc3RhbnRfZXhwcmVzc2lvbiA9IDI0NzQsXG4gIEV4cG9ydF9kZWNsYXJhdGlvbl9jb25mbGljdHNfd2l0aF9leHBvcnRlZF9kZWNsYXJhdGlvbl9vZl8wID0gMjQ4NCxcbiAgT2JqZWN0X2lzX3Bvc3NpYmx5X251bGwgPSAyNTMxLFxuICBDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX2NvbnN0YW50X29yX2FfcmVhZF9vbmx5X3Byb3BlcnR5ID0gMjU0MCxcbiAgVGhlX3RhcmdldF9vZl9hbl9hc3NpZ25tZW50X211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2VzcyA9IDI1NDEsXG4gIEluZGV4X3NpZ25hdHVyZV9pbl90eXBlXzBfb25seV9wZXJtaXRzX3JlYWRpbmcgPSAyNTQyLFxuICBFeHBlY3RlZF8wX2FyZ3VtZW50c19idXRfZ290XzEgPSAyNTU0LFxuICBFeHBlY3RlZF9hdF9sZWFzdF8wX2FyZ3VtZW50c19idXRfZ290XzEgPSAyNTU1LFxuICBFeHBlY3RlZF8wX3R5cGVfYXJndW1lbnRzX2J1dF9nb3RfMSA9IDI1NTgsXG4gIEFfbWVtYmVyX2luaXRpYWxpemVyX2luX2FfZW51bV9kZWNsYXJhdGlvbl9jYW5ub3RfcmVmZXJlbmNlX21lbWJlcnNfZGVjbGFyZWRfYWZ0ZXJfaXRfaW5jbHVkaW5nX21lbWJlcnNfZGVmaW5lZF9pbl9vdGhlcl9lbnVtcyA9IDI2NTEsXG4gIENvbnN0cnVjdG9yX29mX2NsYXNzXzBfaXNfcHJpdmF0ZV9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb24gPSAyNjczLFxuICBDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX2lzX3Byb3RlY3RlZF9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb24gPSAyNjc0LFxuICBOYW1lc3BhY2VfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEgPSAyNjk0LFxuICBSZXF1aXJlZF90eXBlX3BhcmFtZXRlcnNfbWF5X25vdF9mb2xsb3dfb3B0aW9uYWxfdHlwZV9wYXJhbWV0ZXJzID0gMjcwNixcbiAgRHVwbGljYXRlX3Byb3BlcnR5XzAgPSAyNzE4LFxuICBUeXBlXzBfaGFzX25vX2NhbGxfc2lnbmF0dXJlcyA9IDI3NTcsXG4gIEZpbGVfMF9ub3RfZm91bmQgPSA2MDU0LFxuICBOdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmUgPSA2MTg4LFxuICBNdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQgPSA2MTg5LFxuICBfc3VwZXJfbXVzdF9iZV9jYWxsZWRfYmVmb3JlX2FjY2Vzc2luZ190aGlzX2luX3RoZV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3MgPSAxNzAwOSxcbiAgX3N1cGVyX211c3RfYmVfY2FsbGVkX2JlZm9yZV9hY2Nlc3NpbmdfYV9wcm9wZXJ0eV9vZl9zdXBlcl9pbl90aGVfY29uc3RydWN0b3Jfb2ZfYV9kZXJpdmVkX2NsYXNzID0gMTcwMTFcbn1cblxuLyoqIFRyYW5zbGF0ZXMgYSBkaWFnbm9zdGljIGNvZGUgdG8gaXRzIHJlc3BlY3RpdmUgc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpYWdub3N0aWNDb2RlVG9TdHJpbmcoY29kZTogRGlhZ25vc3RpY0NvZGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIDEwMDogcmV0dXJuIFwiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQuXCI7XG4gICAgY2FzZSAxMDE6IHJldHVybiBcIk9wZXJhdGlvbiBpcyB1bnNhZmUuXCI7XG4gICAgY2FzZSAxMDI6IHJldHVybiBcIlVzZXItZGVmaW5lZDogezB9XCI7XG4gICAgY2FzZSAyMDA6IHJldHVybiBcIkNvbnZlcnNpb24gZnJvbSB0eXBlICd7MH0nIHRvICd7MX0nIHJlcXVpcmVzIGFuIGV4cGxpY2l0IGNhc3QuXCI7XG4gICAgY2FzZSAyMDE6IHJldHVybiBcIkNvbnZlcnNpb24gZnJvbSB0eXBlICd7MH0nIHRvICd7MX0nIHdpbGwgcmVxdWlyZSBhbiBleHBsaWNpdCBjYXN0IHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gMzIvNjQtYml0LlwiO1xuICAgIGNhc2UgMjAyOiByZXR1cm4gXCJUeXBlICd7MH0nIGNhbm5vdCBiZSBjaGFuZ2VkIHRvIHR5cGUgJ3sxfScuXCI7XG4gICAgY2FzZSAyMDM6IHJldHVybiBcIlR5cGUgJ3swfScgY2Fubm90IGJlIHJlaW50ZXJwcmV0ZWQgYXMgdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIwNDogcmV0dXJuIFwiQmFzaWMgdHlwZSAnezB9JyBjYW5ub3QgYmUgbnVsbGFibGUuXCI7XG4gICAgY2FzZSAyMDU6IHJldHVybiBcIkNhbm5vdCBleHBvcnQgYSBtdXRhYmxlIGdsb2JhbC5cIjtcbiAgICBjYXNlIDIwNjogcmV0dXJuIFwiTXV0YWJsZSB2YWx1ZSBjYW5ub3QgYmUgaW5saW5lZC5cIjtcbiAgICBjYXNlIDIwNzogcmV0dXJuIFwiVW5tYW5hZ2VkIGNsYXNzZXMgY2Fubm90IGV4dGVuZCBtYW5hZ2VkIGNsYXNzZXMgYW5kIHZpY2UtdmVyc2EuXCI7XG4gICAgY2FzZSAyMDg6IHJldHVybiBcIlVubWFuYWdlZCBjbGFzc2VzIGNhbm5vdCBpbXBsZW1lbnQgaW50ZXJmYWNlcy5cIjtcbiAgICBjYXNlIDIwOTogcmV0dXJuIFwiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZ3MuXCI7XG4gICAgY2FzZSAyMTA6IHJldHVybiBcIkltcGxlbWVudGF0aW9uICd7MH0nIG11c3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIxMTogcmV0dXJuIFwiQ2xhc3MgJ3swfScgaXMgc2VhbGVkIGFuZCBjYW5ub3QgYmUgZXh0ZW5kZWQuXCI7XG4gICAgY2FzZSAyMTI6IHJldHVybiBcIkRlY29yYXRvciAnezB9JyBpcyBub3QgdmFsaWQgaGVyZS5cIjtcbiAgICBjYXNlIDIxMzogcmV0dXJuIFwiRHVwbGljYXRlIGRlY29yYXRvci5cIjtcbiAgICBjYXNlIDIxNDogcmV0dXJuIFwiQW4gYWxsb2NhdG9yIG11c3QgYmUgcHJlc2VudCB0byB1c2UgJ3swfScuXCI7XG4gICAgY2FzZSAyMTU6IHJldHVybiBcIk9wdGlvbmFsIHBhcmFtZXRlciBtdXN0IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCI7XG4gICAgY2FzZSAyMTY6IHJldHVybiBcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIG11c3Qgbm90IHJlcXVpcmUgYW55IGFyZ3VtZW50cy5cIjtcbiAgICBjYXNlIDIxNzogcmV0dXJuIFwiRnVuY3Rpb24gJ3swfScgY2Fubm90IGJlIGlubGluZWQgaW50byBpdHNlbGYuXCI7XG4gICAgY2FzZSAyMTg6IHJldHVybiBcIkNhbm5vdCBhY2Nlc3MgbWV0aG9kICd7MH0nIHdpdGhvdXQgY2FsbGluZyBpdCBhcyBpdCByZXF1aXJlcyAndGhpcycgdG8gYmUgc2V0LlwiO1xuICAgIGNhc2UgMjE5OiByZXR1cm4gXCJPcHRpb25hbCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xuICAgIGNhc2UgMjIwOiByZXR1cm4gXCJFeHByZXNzaW9uIG11c3QgYmUgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuXCI7XG4gICAgY2FzZSAyMjE6IHJldHVybiBcIk1vZHVsZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBzdGFydCBmdW5jdGlvbnMuXCI7XG4gICAgY2FzZSAyMjI6IHJldHVybiBcIid7MH0nIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuICd7MX0nIGFuZCAnezJ9JyBpbmNsdXNpdmUuXCI7XG4gICAgY2FzZSAyMjM6IHJldHVybiBcIid7MH0nIG11c3QgYmUgYSBwb3dlciBvZiB0d28uXCI7XG4gICAgY2FzZSAyMjQ6IHJldHVybiBcIkV4cHJlc3Npb24gaXMgdW5zYWZlLlwiO1xuICAgIGNhc2UgMjI1OiByZXR1cm4gXCJFeHByZXNzaW9uIGlzIG5ldmVyICdudWxsJy5cIjtcbiAgICBjYXNlIDEwMDI6IHJldHVybiBcIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbC5cIjtcbiAgICBjYXNlIDEwMDM6IHJldHVybiBcIklkZW50aWZpZXIgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMDA1OiByZXR1cm4gXCInezB9JyBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDEwMDY6IHJldHVybiBcIkEgZmlsZSBjYW5ub3QgaGF2ZSBhIHJlZmVyZW5jZSB0byBpdHNlbGYuXCI7XG4gICAgY2FzZSAxMDA5OiByZXR1cm4gXCJUcmFpbGluZyBjb21tYSBub3QgYWxsb3dlZC5cIjtcbiAgICBjYXNlIDEwMTI6IHJldHVybiBcIlVuZXhwZWN0ZWQgdG9rZW4uXCI7XG4gICAgY2FzZSAxMDE0OiByZXR1cm4gXCJBIHJlc3QgcGFyYW1ldGVyIG11c3QgYmUgbGFzdCBpbiBhIHBhcmFtZXRlciBsaXN0LlwiO1xuICAgIGNhc2UgMTAxNTogcmV0dXJuIFwiUGFyYW1ldGVyIGNhbm5vdCBoYXZlIHF1ZXN0aW9uIG1hcmsgYW5kIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTAxNjogcmV0dXJuIFwiQSByZXF1aXJlZCBwYXJhbWV0ZXIgY2Fubm90IGZvbGxvdyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuXCI7XG4gICAgY2FzZSAxMDM2OiByZXR1cm4gXCJTdGF0ZW1lbnRzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiO1xuICAgIGNhc2UgMTAzOTogcmV0dXJuIFwiSW5pdGlhbGl6ZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiO1xuICAgIGNhc2UgMTA0MjogcmV0dXJuIFwiJ3swfScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgaGVyZS5cIjtcbiAgICBjYXNlIDEwNDc6IHJldHVybiBcIkEgcmVzdCBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsLlwiO1xuICAgIGNhc2UgMTA0ODogcmV0dXJuIFwiQSByZXN0IHBhcmFtZXRlciBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplci5cIjtcbiAgICBjYXNlIDEwNDk6IHJldHVybiBcIkEgJ3NldCcgYWNjZXNzb3IgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlci5cIjtcbiAgICBjYXNlIDEwNTI6IHJldHVybiBcIkEgJ3NldCcgYWNjZXNzb3IgcGFyYW1ldGVyIGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTA1NDogcmV0dXJuIFwiQSAnZ2V0JyBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzLlwiO1xuICAgIGNhc2UgMTA2MTogcmV0dXJuIFwiRW51bSBtZW1iZXIgbXVzdCBoYXZlIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTA5MjogcmV0dXJuIFwiVHlwZSBwYXJhbWV0ZXJzIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5cIjtcbiAgICBjYXNlIDEwOTM6IHJldHVybiBcIlR5cGUgYW5ub3RhdGlvbiBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uXCI7XG4gICAgY2FzZSAxMDk0OiByZXR1cm4gXCJBbiBhY2Nlc3NvciBjYW5ub3QgaGF2ZSB0eXBlIHBhcmFtZXRlcnMuXCI7XG4gICAgY2FzZSAxMDk1OiByZXR1cm4gXCJBICdzZXQnIGFjY2Vzc29yIGNhbm5vdCBoYXZlIGEgcmV0dXJuIHR5cGUgYW5ub3RhdGlvbi5cIjtcbiAgICBjYXNlIDEwOTg6IHJldHVybiBcIlR5cGUgcGFyYW1ldGVyIGxpc3QgY2Fubm90IGJlIGVtcHR5LlwiO1xuICAgIGNhc2UgMTEwNDogcmV0dXJuIFwiQSAnY29udGludWUnIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIHN0YXRlbWVudC5cIjtcbiAgICBjYXNlIDExMDU6IHJldHVybiBcIkEgJ2JyZWFrJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYW4gZW5jbG9zaW5nIGl0ZXJhdGlvbiBvciBzd2l0Y2ggc3RhdGVtZW50LlwiO1xuICAgIGNhc2UgMTEwODogcmV0dXJuIFwiQSAncmV0dXJuJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYSBmdW5jdGlvbiBib2R5LlwiO1xuICAgIGNhc2UgMTEwOTogcmV0dXJuIFwiRXhwcmVzc2lvbiBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExMTA6IHJldHVybiBcIlR5cGUgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMTEzOiByZXR1cm4gXCJBICdkZWZhdWx0JyBjbGF1c2UgY2Fubm90IGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhICdzd2l0Y2gnIHN0YXRlbWVudC5cIjtcbiAgICBjYXNlIDExMTQ6IHJldHVybiBcIkR1cGxpY2F0ZSBsYWJlbCAnezB9Jy5cIjtcbiAgICBjYXNlIDExMjA6IHJldHVybiBcIkFuIGV4cG9ydCBhc3NpZ25tZW50IGNhbm5vdCBoYXZlIG1vZGlmaWVycy5cIjtcbiAgICBjYXNlIDExMjE6IHJldHVybiBcIk9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS5cIjtcbiAgICBjYXNlIDExMjQ6IHJldHVybiBcIkRpZ2l0IGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTEyNTogcmV0dXJuIFwiSGV4YWRlY2ltYWwgZGlnaXQgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMTI2OiByZXR1cm4gXCJVbmV4cGVjdGVkIGVuZCBvZiB0ZXh0LlwiO1xuICAgIGNhc2UgMTEyNzogcmV0dXJuIFwiSW52YWxpZCBjaGFyYWN0ZXIuXCI7XG4gICAgY2FzZSAxMTMwOiByZXR1cm4gXCInY2FzZScgb3IgJ2RlZmF1bHQnIGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTAzNDogcmV0dXJuIFwiJ3N1cGVyJyBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFuIGFyZ3VtZW50IGxpc3Qgb3IgbWVtYmVyIGFjY2Vzcy5cIjtcbiAgICBjYXNlIDEwMzg6IHJldHVybiBcIkEgJ2RlY2xhcmUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIGluIGFuIGFscmVhZHkgYW1iaWVudCBjb250ZXh0LlwiO1xuICAgIGNhc2UgMTE0MDogcmV0dXJuIFwiVHlwZSBhcmd1bWVudCBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNDE6IHJldHVybiBcIlN0cmluZyBsaXRlcmFsIGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTE0MjogcmV0dXJuIFwiTGluZSBicmVhayBub3QgcGVybWl0dGVkIGhlcmUuXCI7XG4gICAgY2FzZSAxMTQ2OiByZXR1cm4gXCJEZWNsYXJhdGlvbiBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNTU6IHJldHVybiBcIidjb25zdCcgZGVjbGFyYXRpb25zIG11c3QgYmUgaW5pdGlhbGl6ZWQuXCI7XG4gICAgY2FzZSAxMTYxOiByZXR1cm4gXCJVbnRlcm1pbmF0ZWQgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwuXCI7XG4gICAgY2FzZSAxMTc2OiByZXR1cm4gXCJJbnRlcmZhY2UgZGVjbGFyYXRpb24gY2Fubm90IGhhdmUgJ2ltcGxlbWVudHMnIGNsYXVzZS5cIjtcbiAgICBjYXNlIDExNzc6IHJldHVybiBcIkJpbmFyeSBkaWdpdCBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNzg6IHJldHVybiBcIk9jdGFsIGRpZ2l0IGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTE4MzogcmV0dXJuIFwiQW4gaW1wbGVtZW50YXRpb24gY2Fubm90IGJlIGRlY2xhcmVkIGluIGFtYmllbnQgY29udGV4dHMuXCI7XG4gICAgY2FzZSAxMTk4OiByZXR1cm4gXCJBbiBleHRlbmRlZCBVbmljb2RlIGVzY2FwZSB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMHgwIGFuZCAweDEwRkZGRiBpbmNsdXNpdmUuXCI7XG4gICAgY2FzZSAxMTk5OiByZXR1cm4gXCJVbnRlcm1pbmF0ZWQgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UuXCI7XG4gICAgY2FzZSAxMjA2OiByZXR1cm4gXCJEZWNvcmF0b3JzIGFyZSBub3QgdmFsaWQgaGVyZS5cIjtcbiAgICBjYXNlIDEyNDI6IHJldHVybiBcIidhYnN0cmFjdCcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgY2xhc3MsIG1ldGhvZCwgb3IgcHJvcGVydHkgZGVjbGFyYXRpb24uXCI7XG4gICAgY2FzZSAxMjQ1OiByZXR1cm4gXCJNZXRob2QgJ3swfScgY2Fubm90IGhhdmUgYW4gaW1wbGVtZW50YXRpb24gYmVjYXVzZSBpdCBpcyBtYXJrZWQgYWJzdHJhY3QuXCI7XG4gICAgY2FzZSAxMjU1OiByZXR1cm4gXCJBIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9uICchJyBpcyBub3QgcGVybWl0dGVkIGluIHRoaXMgY29udGV4dC5cIjtcbiAgICBjYXNlIDEzMTE6IHJldHVybiBcIkEgY2xhc3MgbWF5IG9ubHkgZXh0ZW5kIGFub3RoZXIgY2xhc3MuXCI7XG4gICAgY2FzZSAxMzE3OiByZXR1cm4gXCJBIHBhcmFtZXRlciBwcm9wZXJ0eSBjYW5ub3QgYmUgZGVjbGFyZWQgdXNpbmcgYSByZXN0IHBhcmFtZXRlci5cIjtcbiAgICBjYXNlIDIzMDA6IHJldHVybiBcIkR1cGxpY2F0ZSBpZGVudGlmaWVyICd7MH0nLlwiO1xuICAgIGNhc2UgMjMwNDogcmV0dXJuIFwiQ2Fubm90IGZpbmQgbmFtZSAnezB9Jy5cIjtcbiAgICBjYXNlIDIzMDU6IHJldHVybiBcIk1vZHVsZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiO1xuICAgIGNhc2UgMjMxNDogcmV0dXJuIFwiR2VuZXJpYyB0eXBlICd7MH0nIHJlcXVpcmVzIHsxfSB0eXBlIGFyZ3VtZW50KHMpLlwiO1xuICAgIGNhc2UgMjMxNTogcmV0dXJuIFwiVHlwZSAnezB9JyBpcyBub3QgZ2VuZXJpYy5cIjtcbiAgICBjYXNlIDIzMjI6IHJldHVybiBcIlR5cGUgJ3swfScgaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIzMjk6IHJldHVybiBcIkluZGV4IHNpZ25hdHVyZSBpcyBtaXNzaW5nIGluIHR5cGUgJ3swfScuXCI7XG4gICAgY2FzZSAyMzMyOiByZXR1cm4gXCIndGhpcycgY2Fubm90IGJlIHJlZmVyZW5jZWQgaW4gY3VycmVudCBsb2NhdGlvbi5cIjtcbiAgICBjYXNlIDIzMzU6IHJldHVybiBcIidzdXBlcicgY2FuIG9ubHkgYmUgcmVmZXJlbmNlZCBpbiBhIGRlcml2ZWQgY2xhc3MuXCI7XG4gICAgY2FzZSAyMzM3OiByZXR1cm4gXCJTdXBlciBjYWxscyBhcmUgbm90IHBlcm1pdHRlZCBvdXRzaWRlIGNvbnN0cnVjdG9ycyBvciBpbiBuZXN0ZWQgZnVuY3Rpb25zIGluc2lkZSBjb25zdHJ1Y3RvcnMuXCI7XG4gICAgY2FzZSAyMzM5OiByZXR1cm4gXCJQcm9wZXJ0eSAnezB9JyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICd7MX0nLlwiO1xuICAgIGNhc2UgMjM0OTogcmV0dXJuIFwiQ2Fubm90IGludm9rZSBhbiBleHByZXNzaW9uIHdob3NlIHR5cGUgbGFja3MgYSBjYWxsIHNpZ25hdHVyZS4gVHlwZSAnezB9JyBoYXMgbm8gY29tcGF0aWJsZSBjYWxsIHNpZ25hdHVyZXMuXCI7XG4gICAgY2FzZSAyMzUxOiByZXR1cm4gXCJDYW5ub3QgdXNlICduZXcnIHdpdGggYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBlIGxhY2tzIGEgY29uc3RydWN0IHNpZ25hdHVyZS5cIjtcbiAgICBjYXNlIDIzNTU6IHJldHVybiBcIkEgZnVuY3Rpb24gd2hvc2UgZGVjbGFyZWQgdHlwZSBpcyBub3QgJ3ZvaWQnIG11c3QgcmV0dXJuIGEgdmFsdWUuXCI7XG4gICAgY2FzZSAyMzU3OiByZXR1cm4gXCJUaGUgb3BlcmFuZCBvZiBhbiBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IG9wZXJhdG9yIG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIHByb3BlcnR5IGFjY2Vzcy5cIjtcbiAgICBjYXNlIDIzNjQ6IHJldHVybiBcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGV4cHJlc3Npb24gbXVzdCBiZSBhIHZhcmlhYmxlIG9yIGEgcHJvcGVydHkgYWNjZXNzLlwiO1xuICAgIGNhc2UgMjM2NTogcmV0dXJuIFwiT3BlcmF0b3IgJ3swfScgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZXMgJ3sxfScgYW5kICd7Mn0nLlwiO1xuICAgIGNhc2UgMjM3NjogcmV0dXJuIFwiQSAnc3VwZXInIGNhbGwgbXVzdCBiZSB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjb25zdHJ1Y3Rvci5cIjtcbiAgICBjYXNlIDIzNzc6IHJldHVybiBcIkNvbnN0cnVjdG9ycyBmb3IgZGVyaXZlZCBjbGFzc2VzIG11c3QgY29udGFpbiBhICdzdXBlcicgY2FsbC5cIjtcbiAgICBjYXNlIDIzODA6IHJldHVybiBcIidnZXQnIGFuZCAnc2V0JyBhY2Nlc3NvciBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZS5cIjtcbiAgICBjYXNlIDIzOTA6IHJldHVybiBcIkNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uIGlzIG1pc3NpbmcuXCI7XG4gICAgY2FzZSAyMzkxOiByZXR1cm4gXCJGdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBpcyBtaXNzaW5nIG9yIG5vdCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIGRlY2xhcmF0aW9uLlwiO1xuICAgIGNhc2UgMjM5MjogcmV0dXJuIFwiTXVsdGlwbGUgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25zIGFyZSBub3QgYWxsb3dlZC5cIjtcbiAgICBjYXNlIDIzOTM6IHJldHVybiBcIkR1cGxpY2F0ZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi5cIjtcbiAgICBjYXNlIDIzOTU6IHJldHVybiBcIkluZGl2aWR1YWwgZGVjbGFyYXRpb25zIGluIG1lcmdlZCBkZWNsYXJhdGlvbiAnezB9JyBtdXN0IGJlIGFsbCBleHBvcnRlZCBvciBhbGwgbG9jYWwuXCI7XG4gICAgY2FzZSAyNDM0OiByZXR1cm4gXCJBIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiBjYW5ub3QgYmUgbG9jYXRlZCBwcmlvciB0byBhIGNsYXNzIG9yIGZ1bmN0aW9uIHdpdGggd2hpY2ggaXQgaXMgbWVyZ2VkLlwiO1xuICAgIGNhc2UgMjQ2MDogcmV0dXJuIFwiVHlwZSAnezB9JyBoYXMgbm8gcHJvcGVydHkgJ3sxfScuXCI7XG4gICAgY2FzZSAyNDY5OiByZXR1cm4gXCJUaGUgJ3swfScgb3BlcmF0b3IgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDI0NzQ6IHJldHVybiBcIkluICdjb25zdCcgZW51bSBkZWNsYXJhdGlvbnMgbWVtYmVyIGluaXRpYWxpemVyIG11c3QgYmUgY29uc3RhbnQgZXhwcmVzc2lvbi5cIjtcbiAgICBjYXNlIDI0ODQ6IHJldHVybiBcIkV4cG9ydCBkZWNsYXJhdGlvbiBjb25mbGljdHMgd2l0aCBleHBvcnRlZCBkZWNsYXJhdGlvbiBvZiAnezB9Jy5cIjtcbiAgICBjYXNlIDI1MzE6IHJldHVybiBcIk9iamVjdCBpcyBwb3NzaWJseSAnbnVsbCcuXCI7XG4gICAgY2FzZSAyNTQwOiByZXR1cm4gXCJDYW5ub3QgYXNzaWduIHRvICd7MH0nIGJlY2F1c2UgaXQgaXMgYSBjb25zdGFudCBvciBhIHJlYWQtb25seSBwcm9wZXJ0eS5cIjtcbiAgICBjYXNlIDI1NDE6IHJldHVybiBcIlRoZSB0YXJnZXQgb2YgYW4gYXNzaWdubWVudCBtdXN0IGJlIGEgdmFyaWFibGUgb3IgYSBwcm9wZXJ0eSBhY2Nlc3MuXCI7XG4gICAgY2FzZSAyNTQyOiByZXR1cm4gXCJJbmRleCBzaWduYXR1cmUgaW4gdHlwZSAnezB9JyBvbmx5IHBlcm1pdHMgcmVhZGluZy5cIjtcbiAgICBjYXNlIDI1NTQ6IHJldHVybiBcIkV4cGVjdGVkIHswfSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiO1xuICAgIGNhc2UgMjU1NTogcmV0dXJuIFwiRXhwZWN0ZWQgYXQgbGVhc3QgezB9IGFyZ3VtZW50cywgYnV0IGdvdCB7MX0uXCI7XG4gICAgY2FzZSAyNTU4OiByZXR1cm4gXCJFeHBlY3RlZCB7MH0gdHlwZSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiO1xuICAgIGNhc2UgMjY1MTogcmV0dXJuIFwiQSBtZW1iZXIgaW5pdGlhbGl6ZXIgaW4gYSBlbnVtIGRlY2xhcmF0aW9uIGNhbm5vdCByZWZlcmVuY2UgbWVtYmVycyBkZWNsYXJlZCBhZnRlciBpdCwgaW5jbHVkaW5nIG1lbWJlcnMgZGVmaW5lZCBpbiBvdGhlciBlbnVtcy5cIjtcbiAgICBjYXNlIDI2NzM6IHJldHVybiBcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNsYXNzIGRlY2xhcmF0aW9uLlwiO1xuICAgIGNhc2UgMjY3NDogcmV0dXJuIFwiQ29uc3RydWN0b3Igb2YgY2xhc3MgJ3swfScgaXMgcHJvdGVjdGVkIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIHRoZSBjbGFzcyBkZWNsYXJhdGlvbi5cIjtcbiAgICBjYXNlIDI2OTQ6IHJldHVybiBcIk5hbWVzcGFjZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiO1xuICAgIGNhc2UgMjcwNjogcmV0dXJuIFwiUmVxdWlyZWQgdHlwZSBwYXJhbWV0ZXJzIG1heSBub3QgZm9sbG93IG9wdGlvbmFsIHR5cGUgcGFyYW1ldGVycy5cIjtcbiAgICBjYXNlIDI3MTg6IHJldHVybiBcIkR1cGxpY2F0ZSBwcm9wZXJ0eSAnezB9Jy5cIjtcbiAgICBjYXNlIDI3NTc6IHJldHVybiBcIlR5cGUgJ3swfScgaGFzIG5vIGNhbGwgc2lnbmF0dXJlcy5cIjtcbiAgICBjYXNlIDYwNTQ6IHJldHVybiBcIkZpbGUgJ3swfScgbm90IGZvdW5kLlwiO1xuICAgIGNhc2UgNjE4ODogcmV0dXJuIFwiTnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgYWxsb3dlZCBoZXJlLlwiO1xuICAgIGNhc2UgNjE4OTogcmV0dXJuIFwiTXVsdGlwbGUgY29uc2VjdXRpdmUgbnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgcGVybWl0dGVkLlwiO1xuICAgIGNhc2UgMTcwMDk6IHJldHVybiBcIidzdXBlcicgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyAndGhpcycgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy5cIjtcbiAgICBjYXNlIDE3MDExOiByZXR1cm4gXCInc3VwZXInIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSBvZiAnc3VwZXInIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuXCI7XG4gICAgZGVmYXVsdDogcmV0dXJuIFwiXCI7XG4gIH1cbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/diagnostics.ts": -/*!*****************************!*\ - !*** ../src/diagnostics.ts ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Shared diagnostic handling inherited by the parser and the compiler. - * @module diagnostics - * @preferred - */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -var diagnosticMessages_generated_1 = __webpack_require__(/*! ./diagnosticMessages.generated */ "../src/diagnosticMessages.generated.ts"); -var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); -var diagnosticMessages_generated_2 = __webpack_require__(/*! ./diagnosticMessages.generated */ "../src/diagnosticMessages.generated.ts"); -exports.DiagnosticCode = diagnosticMessages_generated_2.DiagnosticCode; -exports.diagnosticCodeToString = diagnosticMessages_generated_2.diagnosticCodeToString; -/** Indicates the category of a {@link DiagnosticMessage}. */ -var DiagnosticCategory; -(function (DiagnosticCategory) { - /** Informatory message. */ - DiagnosticCategory[DiagnosticCategory["INFO"] = 0] = "INFO"; - /** Warning message. */ - DiagnosticCategory[DiagnosticCategory["WARNING"] = 1] = "WARNING"; - /** Error message. */ - DiagnosticCategory[DiagnosticCategory["ERROR"] = 2] = "ERROR"; -})(DiagnosticCategory = exports.DiagnosticCategory || (exports.DiagnosticCategory = {})); -/** Returns the string representation of the specified diagnostic category. */ -function diagnosticCategoryToString(category) { - switch (category) { - case DiagnosticCategory.INFO: return "INFO"; - case DiagnosticCategory.WARNING: return "WARNING"; - case DiagnosticCategory.ERROR: return "ERROR"; - default: { - assert(false); - return ""; - } - } -} -exports.diagnosticCategoryToString = diagnosticCategoryToString; -/** ANSI escape sequence for blue foreground. */ -exports.COLOR_BLUE = "\u001b[96m"; -/** ANSI escape sequence for yellow foreground. */ -exports.COLOR_YELLOW = "\u001b[93m"; -/** ANSI escape sequence for red foreground. */ -exports.COLOR_RED = "\u001b[91m"; -/** ANSI escape sequence to reset the foreground color. */ -exports.COLOR_RESET = "\u001b[0m"; -/** Returns the ANSI escape sequence for the specified category. */ -function diagnosticCategoryToColor(category) { - switch (category) { - case DiagnosticCategory.INFO: return exports.COLOR_BLUE; - case DiagnosticCategory.WARNING: return exports.COLOR_YELLOW; - case DiagnosticCategory.ERROR: return exports.COLOR_RED; - default: { - assert(false); - return ""; - } - } -} -exports.diagnosticCategoryToColor = diagnosticCategoryToColor; -/** Represents a diagnostic message. */ -var DiagnosticMessage = /** @class */ (function () { - /** Constructs a new diagnostic message. */ - function DiagnosticMessage(code, category, message) { - /** Respective source range, if any. */ - this.range = null; - /** Related range, if any. */ - this.relatedRange = null; - this.code = code; - this.category = category; - this.message = message; - } - /** Creates a new diagnostic message of the specified category. */ - DiagnosticMessage.create = function (code, category, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - var message = diagnosticMessages_generated_1.diagnosticCodeToString(code); - if (arg0 != null) - message = message.replace("{0}", arg0); - if (arg1 != null) - message = message.replace("{1}", arg1); - if (arg2 != null) - message = message.replace("{2}", arg2); - return new DiagnosticMessage(code, category, message); - }; - /** Creates a new informatory diagnostic message. */ - DiagnosticMessage.createInfo = function (code, arg0, arg1) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - return DiagnosticMessage.create(code, DiagnosticCategory.INFO, arg0, arg1); - }; - /** Creates a new warning diagnostic message. */ - DiagnosticMessage.createWarning = function (code, arg0, arg1) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - return DiagnosticMessage.create(code, DiagnosticCategory.WARNING, arg0, arg1); - }; - /** Creates a new error diagnostic message. */ - DiagnosticMessage.createError = function (code, arg0, arg1) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - return DiagnosticMessage.create(code, DiagnosticCategory.ERROR, arg0, arg1); - }; - /** Adds a source range to this message. */ - DiagnosticMessage.prototype.withRange = function (range) { - this.range = range; - return this; - }; - /** Adds a related source range to this message. */ - DiagnosticMessage.prototype.withRelatedRange = function (range) { - this.relatedRange = range; - return this; - }; - /** Converts this message to a string. */ - DiagnosticMessage.prototype.toString = function () { - if (this.range) { - return (diagnosticCategoryToString(this.category) + - " " + - this.code.toString(10) + - ": \"" + - this.message + - "\" in " + - this.range.source.normalizedPath + - ":" + - this.range.line.toString(10) + - ":" + - this.range.column.toString(10)); - } - return (diagnosticCategoryToString(this.category) + - " " + - this.code.toString(10) + - ": " + - this.message); - }; - return DiagnosticMessage; -}()); -exports.DiagnosticMessage = DiagnosticMessage; -/** Formats a diagnostic message, optionally with terminal colors and source context. */ -function formatDiagnosticMessage(message, useColors, showContext) { - if (useColors === void 0) { useColors = false; } - if (showContext === void 0) { showContext = false; } - // general information - var sb = []; - if (useColors) - sb.push(diagnosticCategoryToColor(message.category)); - sb.push(diagnosticCategoryToString(message.category)); - if (useColors) - sb.push(exports.COLOR_RESET); - sb.push(message.code < 1000 ? " AS" : " TS"); - sb.push(message.code.toString(10)); - sb.push(": "); - sb.push(message.message); - // include range information if available - if (message.range) { - // include context information if requested - var range = message.range; - if (showContext) { - sb.push("\n"); - sb.push(formatDiagnosticContext(range, useColors)); - } - sb.push("\n"); - sb.push(" in "); - sb.push(range.source.normalizedPath); - sb.push("("); - sb.push(range.line.toString(10)); - sb.push(","); - sb.push(range.column.toString(10)); - sb.push(")"); - var relatedRange = message.relatedRange; - if (relatedRange) { - if (showContext) { - sb.push("\n"); - sb.push(formatDiagnosticContext(relatedRange, useColors)); - } - sb.push("\n"); - sb.push(" in "); - sb.push(range.source.normalizedPath); - sb.push("("); - sb.push(range.line.toString(10)); - sb.push(","); - sb.push(range.column.toString(10)); - sb.push(")"); - } - } - return sb.join(""); -} -exports.formatDiagnosticMessage = formatDiagnosticMessage; -/** Formats the diagnostic context for the specified range, optionally with terminal colors. */ -function formatDiagnosticContext(range, useColors) { - if (useColors === void 0) { useColors = false; } - var text = range.source.text; - var len = text.length; - var start = range.start; - var end = range.end; - while (start > 0 && !util_1.isLineBreak(text.charCodeAt(start - 1))) - start--; - while (end < len && !util_1.isLineBreak(text.charCodeAt(end))) - end++; - var sb = [ - "\n ", - text.substring(start, end), - "\n " - ]; - while (start < range.start) { - sb.push(" "); - start++; - } - if (useColors) - sb.push(exports.COLOR_RED); - if (range.start == range.end) { - sb.push("^"); - } - else { - while (start++ < range.end) { - if (util_1.isLineBreak(text.charCodeAt(start))) { - sb.push(start == range.start + 1 ? "^" : "~"); - break; - } - sb.push("~"); - } - } - if (useColors) - sb.push(exports.COLOR_RESET); - return sb.join(""); -} -exports.formatDiagnosticContext = formatDiagnosticContext; -/** Base class of all diagnostic emitters. */ -var DiagnosticEmitter = /** @class */ (function () { - /** Initializes this diagnostic emitter. */ - function DiagnosticEmitter(diagnostics) { - if (diagnostics === void 0) { diagnostics = null; } - this.diagnostics = diagnostics ? diagnostics : new Array(); - } - /** Emits a diagnostic message of the specified category. */ - DiagnosticEmitter.prototype.emitDiagnostic = function (code, category, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - var message = DiagnosticMessage.create(code, category, arg0, arg1, arg2).withRange(range); - if (relatedRange) - message.relatedRange = relatedRange; - this.diagnostics.push(message); - // console.log(formatDiagnosticMessage(message, true, true) + "\n"); // temporary - // console.log(new Error("stack").stack); - }; - /** Emits an informatory diagnostic message. */ - DiagnosticEmitter.prototype.info = function (code, range, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.INFO, range, null, arg0, arg1, arg2); - }; - /** Emits an informatory diagnostic message with a related range. */ - DiagnosticEmitter.prototype.infoRelated = function (code, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.INFO, range, relatedRange, arg0, arg1, arg2); - }; - /** Emits a warning diagnostic message. */ - DiagnosticEmitter.prototype.warning = function (code, range, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, null, arg0, arg1, arg2); - }; - /** Emits a warning diagnostic message with a related range. */ - DiagnosticEmitter.prototype.warningRelated = function (code, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, relatedRange, arg0, arg1, arg2); - }; - /** Emits an error diagnostic message. */ - DiagnosticEmitter.prototype.error = function (code, range, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, null, arg0, arg1, arg2); - }; - /** Emits an error diagnostic message with a related range. */ - DiagnosticEmitter.prototype.errorRelated = function (code, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, relatedRange, arg0, arg1, arg2); - }; - return DiagnosticEmitter; -}()); -exports.DiagnosticEmitter = DiagnosticEmitter; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlhZ25vc3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUcsQ0FBQSxLQUFLOztBQU1SLCtFQUd3QztBQUV4QywrQkFFZ0I7QUFFaEIsK0VBR3dDO0FBRnRDLHdEQUFBLGNBQWMsQ0FBQTtBQUNkLGdFQUFBLHNCQUFzQixDQUFBO0FBR3hCLDZEQUE2RDtBQUM3RCxJQUFZLGtCQU9YO0FBUEQsV0FBWSxrQkFBa0I7SUFDNUIsMkJBQTJCO0lBQzNCLDJEQUFJLENBQUE7SUFDSix1QkFBdUI7SUFDdkIsaUVBQU8sQ0FBQTtJQUNQLHFCQUFxQjtJQUNyQiw2REFBSyxDQUFBO0FBQ1AsQ0FBQyxFQVBXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBTzdCO0FBRUQsOEVBQThFO0FBQzlFLFNBQWdCLDBCQUEwQixDQUFDLFFBQTRCO0lBQ3JFLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUM7UUFDNUMsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQztRQUNsRCxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxDQUFDO1lBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDtLQUNGO0FBQ0gsQ0FBQztBQVZELGdFQVVDO0FBRUQsZ0RBQWdEO0FBQ25DLFFBQUEsVUFBVSxHQUFXLFlBQVksQ0FBQztBQUMvQyxrREFBa0Q7QUFDckMsUUFBQSxZQUFZLEdBQVcsWUFBWSxDQUFDO0FBQ2pELCtDQUErQztBQUNsQyxRQUFBLFNBQVMsR0FBVyxZQUFZLENBQUM7QUFDOUMsMERBQTBEO0FBQzdDLFFBQUEsV0FBVyxHQUFXLFdBQVcsQ0FBQztBQUUvQyxtRUFBbUU7QUFDbkUsU0FBZ0IseUJBQXlCLENBQUMsUUFBNEI7SUFDcEUsUUFBUSxRQUFRLEVBQUU7UUFDaEIsS0FBSyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLGtCQUFVLENBQUM7UUFDaEQsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLG9CQUFZLENBQUM7UUFDckQsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLGlCQUFTLENBQUM7UUFDaEQsT0FBTyxDQUFDLENBQUM7WUFDUCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDZCxPQUFPLEVBQUUsQ0FBQztTQUNYO0tBQ0Y7QUFDSCxDQUFDO0FBVkQsOERBVUM7QUFFRCx1Q0FBdUM7QUFDdkM7SUFhRSwyQ0FBMkM7SUFDM0MsMkJBQW9CLElBQVMsRUFBRSxRQUE0QixFQUFFLE9BQWU7UUFONUUsdUNBQXVDO1FBQ3ZDLFVBQUssR0FBaUIsSUFBSSxDQUFDO1FBQzNCLDZCQUE2QjtRQUM3QixpQkFBWSxHQUFpQixJQUFJLENBQUM7UUFJaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVELGtFQUFrRTtJQUMzRCx3QkFBTSxHQUFiLFVBQ0UsSUFBb0IsRUFDcEIsUUFBNEIsRUFDNUIsSUFBMEIsRUFDMUIsSUFBMEIsRUFDMUIsSUFBMEI7UUFGMUIscUJBQUEsRUFBQSxXQUEwQjtRQUMxQixxQkFBQSxFQUFBLFdBQTBCO1FBQzFCLHFCQUFBLEVBQUEsV0FBMEI7UUFFMUIsSUFBSSxPQUFPLEdBQUcscURBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxJQUFJLElBQUksSUFBSTtZQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RCxJQUFJLElBQUksSUFBSSxJQUFJO1lBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pELElBQUksSUFBSSxJQUFJLElBQUk7WUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLGlCQUFpQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELG9EQUFvRDtJQUM3Qyw0QkFBVSxHQUFqQixVQUNFLElBQW9CLEVBQ3BCLElBQTBCLEVBQzFCLElBQTBCO1FBRDFCLHFCQUFBLEVBQUEsV0FBMEI7UUFDMUIscUJBQUEsRUFBQSxXQUEwQjtRQUUxQixPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsZ0RBQWdEO0lBQ3pDLCtCQUFhLEdBQXBCLFVBQ0UsSUFBb0IsRUFDcEIsSUFBMEIsRUFDMUIsSUFBMEI7UUFEMUIscUJBQUEsRUFBQSxXQUEwQjtRQUMxQixxQkFBQSxFQUFBLFdBQTBCO1FBRTFCLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCw4Q0FBOEM7SUFDdkMsNkJBQVcsR0FBbEIsVUFDRSxJQUFvQixFQUNwQixJQUEwQixFQUMxQixJQUEwQjtRQUQxQixxQkFBQSxFQUFBLFdBQTBCO1FBQzFCLHFCQUFBLEVBQUEsV0FBMEI7UUFFMUIsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxxQ0FBUyxHQUFULFVBQVUsS0FBWTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsNENBQWdCLEdBQWhCLFVBQWlCLEtBQVk7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLG9DQUFRLEdBQVI7UUFDRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQ0wsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDekMsR0FBRztnQkFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU07Z0JBQ04sSUFBSSxDQUFDLE9BQU87Z0JBQ1osUUFBUTtnQkFDUixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjO2dCQUNoQyxHQUFHO2dCQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLEdBQUc7Z0JBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUMvQixDQUFDO1NBQ0g7UUFDRCxPQUFPLENBQ0wsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN6QyxHQUFHO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUk7WUFDSixJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0lBQ0gsd0JBQUM7QUFBRCxDQUFDLEFBbkdELElBbUdDO0FBbkdZLDhDQUFpQjtBQXFHOUIsd0ZBQXdGO0FBQ3hGLFNBQWdCLHVCQUF1QixDQUNyQyxPQUEwQixFQUMxQixTQUF1QixFQUN2QixXQUF5QjtJQUR6QiwwQkFBQSxFQUFBLGlCQUF1QjtJQUN2Qiw0QkFBQSxFQUFBLG1CQUF5QjtJQUd6QixzQkFBc0I7SUFDdEIsSUFBSSxFQUFFLEdBQWEsRUFBRSxDQUFDO0lBQ3RCLElBQUksU0FBUztRQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDcEUsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN0RCxJQUFJLFNBQVM7UUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFXLENBQUMsQ0FBQztJQUNwQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2QsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekIseUNBQXlDO0lBQ3pDLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtRQUVqQiwyQ0FBMkM7UUFDM0MsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLFdBQVcsRUFBRTtZQUNmLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDZCxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNkLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEIsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNiLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWIsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUN4QyxJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFJLFdBQVcsRUFBRTtnQkFDZixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNkLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDM0Q7WUFDRCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2QsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNiLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2IsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDZDtLQUNGO0lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFuREQsMERBbURDO0FBRUQsK0ZBQStGO0FBQy9GLFNBQWdCLHVCQUF1QixDQUFDLEtBQVksRUFBRSxTQUF1QjtJQUF2QiwwQkFBQSxFQUFBLGlCQUF1QjtJQUMzRSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUM3QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3RCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDeEIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUNwQixPQUFPLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQUUsS0FBSyxFQUFFLENBQUM7SUFDdEUsT0FBTyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUUsR0FBRyxFQUFFLENBQUM7SUFDOUQsSUFBSSxFQUFFLEdBQWE7UUFDakIsS0FBSztRQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztRQUMxQixLQUFLO0tBQ04sQ0FBQztJQUNGLE9BQU8sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUU7UUFDMUIsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNiLEtBQUssRUFBRSxDQUFDO0tBQ1Q7SUFDRCxJQUFJLFNBQVM7UUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFTLENBQUMsQ0FBQztJQUNsQyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUM1QixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2Q7U0FBTTtRQUNMLE9BQU8sS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUMxQixJQUFJLGtCQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN2QyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUMsTUFBTTthQUNQO1lBQ0QsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNkO0tBQ0Y7SUFDRCxJQUFJLFNBQVM7UUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFXLENBQUMsQ0FBQztJQUNwQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckIsQ0FBQztBQTlCRCwwREE4QkM7QUFFRCw2Q0FBNkM7QUFDN0M7SUFLRSwyQ0FBMkM7SUFDM0MsMkJBQXNCLFdBQThDO1FBQTlDLDRCQUFBLEVBQUEsa0JBQThDO1FBQ2xFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBc0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ2xGLENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsMENBQWMsR0FBZCxVQUNFLElBQW9CLEVBQ3BCLFFBQTRCLEVBQzVCLEtBQVksRUFDWixZQUEwQixFQUMxQixJQUEwQixFQUMxQixJQUEwQixFQUMxQixJQUEwQjtRQUYxQixxQkFBQSxFQUFBLFdBQTBCO1FBQzFCLHFCQUFBLEVBQUEsV0FBMEI7UUFDMUIscUJBQUEsRUFBQSxXQUEwQjtRQUUxQixJQUFJLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRixJQUFJLFlBQVk7WUFBRSxPQUFPLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixpRkFBaUY7UUFDakYsaURBQWlEO0lBQ25ELENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsZ0NBQUksR0FBSixVQUNFLElBQW9CLEVBQ3BCLEtBQVksRUFDWixJQUEwQixFQUMxQixJQUEwQixFQUMxQixJQUEwQjtRQUYxQixxQkFBQSxFQUFBLFdBQTBCO1FBQzFCLHFCQUFBLEVBQUEsV0FBMEI7UUFDMUIscUJBQUEsRUFBQSxXQUEwQjtRQUUxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxvRUFBb0U7SUFDcEUsdUNBQVcsR0FBWCxVQUNFLElBQW9CLEVBQ3BCLEtBQVksRUFDWixZQUFtQixFQUNuQixJQUEwQixFQUMxQixJQUEwQixFQUMxQixJQUEwQjtRQUYxQixxQkFBQSxFQUFBLFdBQTBCO1FBQzFCLHFCQUFBLEVBQUEsV0FBMEI7UUFDMUIscUJBQUEsRUFBQSxXQUEwQjtRQUUxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsbUNBQU8sR0FBUCxVQUNFLElBQW9CLEVBQ3BCLEtBQVksRUFDWixJQUEwQixFQUMxQixJQUEwQixFQUMxQixJQUEwQjtRQUYxQixxQkFBQSxFQUFBLFdBQTBCO1FBQzFCLHFCQUFBLEVBQUEsV0FBMEI7UUFDMUIscUJBQUEsRUFBQSxXQUEwQjtRQUUxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsMENBQWMsR0FBZCxVQUNFLElBQW9CLEVBQ3BCLEtBQVksRUFDWixZQUFtQixFQUNuQixJQUEwQixFQUMxQixJQUEwQixFQUMxQixJQUEwQjtRQUYxQixxQkFBQSxFQUFBLFdBQTBCO1FBQzFCLHFCQUFBLEVBQUEsV0FBMEI7UUFDMUIscUJBQUEsRUFBQSxXQUEwQjtRQUUxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsaUNBQUssR0FBTCxVQUNFLElBQW9CLEVBQ3BCLEtBQVksRUFDWixJQUEwQixFQUMxQixJQUEwQixFQUMxQixJQUEwQjtRQUYxQixxQkFBQSxFQUFBLFdBQTBCO1FBQzFCLHFCQUFBLEVBQUEsV0FBMEI7UUFDMUIscUJBQUEsRUFBQSxXQUEwQjtRQUUxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsd0NBQVksR0FBWixVQUNFLElBQW9CLEVBQ3BCLEtBQVksRUFDWixZQUFtQixFQUNuQixJQUEwQixFQUMxQixJQUEwQixFQUMxQixJQUEwQjtRQUYxQixxQkFBQSxFQUFBLFdBQTBCO1FBQzFCLHFCQUFBLEVBQUEsV0FBMEI7UUFDMUIscUJBQUEsRUFBQSxXQUEwQjtRQUUxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUEvRkQsSUErRkM7QUEvRnFCLDhDQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIGRpYWdub3N0aWMgaGFuZGxpbmcgaW5oZXJpdGVkIGJ5IHRoZSBwYXJzZXIgYW5kIHRoZSBjb21waWxlci5cbiAqIEBtb2R1bGUgZGlhZ25vc3RpY3NcbiAqIEBwcmVmZXJyZWRcbiAqLy8qKiovXG5cbmltcG9ydCB7XG4gIFJhbmdlXG59IGZyb20gXCIuL2FzdFwiO1xuXG5pbXBvcnQge1xuICBEaWFnbm9zdGljQ29kZSxcbiAgZGlhZ25vc3RpY0NvZGVUb1N0cmluZ1xufSBmcm9tIFwiLi9kaWFnbm9zdGljTWVzc2FnZXMuZ2VuZXJhdGVkXCI7XG5cbmltcG9ydCB7XG4gIGlzTGluZUJyZWFrLCBDaGFyQ29kZVxufSBmcm9tIFwiLi91dGlsXCI7XG5cbmV4cG9ydCB7XG4gIERpYWdub3N0aWNDb2RlLFxuICBkaWFnbm9zdGljQ29kZVRvU3RyaW5nXG59IGZyb20gXCIuL2RpYWdub3N0aWNNZXNzYWdlcy5nZW5lcmF0ZWRcIjtcblxuLyoqIEluZGljYXRlcyB0aGUgY2F0ZWdvcnkgb2YgYSB7QGxpbmsgRGlhZ25vc3RpY01lc3NhZ2V9LiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0NhdGVnb3J5IHtcbiAgLyoqIEluZm9ybWF0b3J5IG1lc3NhZ2UuICovXG4gIElORk8sXG4gIC8qKiBXYXJuaW5nIG1lc3NhZ2UuICovXG4gIFdBUk5JTkcsXG4gIC8qKiBFcnJvciBtZXNzYWdlLiAqL1xuICBFUlJPUlxufVxuXG4vKiogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgZGlhZ25vc3RpYyBjYXRlZ29yeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFnbm9zdGljQ2F0ZWdvcnlUb1N0cmluZyhjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5KTogc3RyaW5nIHtcbiAgc3dpdGNoIChjYXRlZ29yeSkge1xuICAgIGNhc2UgRGlhZ25vc3RpY0NhdGVnb3J5LklORk86IHJldHVybiBcIklORk9cIjtcbiAgICBjYXNlIERpYWdub3N0aWNDYXRlZ29yeS5XQVJOSU5HOiByZXR1cm4gXCJXQVJOSU5HXCI7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuRVJST1I6IHJldHVybiBcIkVSUk9SXCI7XG4gICAgZGVmYXVsdDoge1xuICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfVxufVxuXG4vKiogQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIGJsdWUgZm9yZWdyb3VuZC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9CTFVFOiBzdHJpbmcgPSBcIlxcdTAwMWJbOTZtXCI7XG4vKiogQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIHllbGxvdyBmb3JlZ3JvdW5kLiAqL1xuZXhwb3J0IGNvbnN0IENPTE9SX1lFTExPVzogc3RyaW5nID0gXCJcXHUwMDFiWzkzbVwiO1xuLyoqIEFOU0kgZXNjYXBlIHNlcXVlbmNlIGZvciByZWQgZm9yZWdyb3VuZC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9SRUQ6IHN0cmluZyA9IFwiXFx1MDAxYls5MW1cIjtcbi8qKiBBTlNJIGVzY2FwZSBzZXF1ZW5jZSB0byByZXNldCB0aGUgZm9yZWdyb3VuZCBjb2xvci4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9SRVNFVDogc3RyaW5nID0gXCJcXHUwMDFiWzBtXCI7XG5cbi8qKiBSZXR1cm5zIHRoZSBBTlNJIGVzY2FwZSBzZXF1ZW5jZSBmb3IgdGhlIHNwZWNpZmllZCBjYXRlZ29yeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFnbm9zdGljQ2F0ZWdvcnlUb0NvbG9yKGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnkpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNhdGVnb3J5KSB7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuSU5GTzogcmV0dXJuIENPTE9SX0JMVUU7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuV0FSTklORzogcmV0dXJuIENPTE9SX1lFTExPVztcbiAgICBjYXNlIERpYWdub3N0aWNDYXRlZ29yeS5FUlJPUjogcmV0dXJuIENPTE9SX1JFRDtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBhc3NlcnQoZmFsc2UpO1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlLiAqL1xuZXhwb3J0IGNsYXNzIERpYWdub3N0aWNNZXNzYWdlIHtcblxuICAvKiogTWVzc2FnZSBjb2RlLiAqL1xuICBjb2RlOiBpMzI7XG4gIC8qKiBNZXNzYWdlIGNhdGVnb3J5LiAqL1xuICBjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5O1xuICAvKiogTWVzc2FnZSB0ZXh0LiAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBSZXNwZWN0aXZlIHNvdXJjZSByYW5nZSwgaWYgYW55LiAqL1xuICByYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgLyoqIFJlbGF0ZWQgcmFuZ2UsIGlmIGFueS4gKi9cbiAgcmVsYXRlZFJhbmdlOiBSYW5nZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IGRpYWdub3N0aWMgbWVzc2FnZS4gKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihjb2RlOiBpMzIsIGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnksIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkaWFnbm9zdGljIG1lc3NhZ2Ugb2YgdGhlIHNwZWNpZmllZCBjYXRlZ29yeS4gKi9cbiAgc3RhdGljIGNyZWF0ZShcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5LFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERpYWdub3N0aWNNZXNzYWdlIHtcbiAgICB2YXIgbWVzc2FnZSA9IGRpYWdub3N0aWNDb2RlVG9TdHJpbmcoY29kZSk7XG4gICAgaWYgKGFyZzAgIT0gbnVsbCkgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShcInswfVwiLCBhcmcwKTtcbiAgICBpZiAoYXJnMSAhPSBudWxsKSBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFwiezF9XCIsIGFyZzEpO1xuICAgIGlmIChhcmcyICE9IG51bGwpIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoXCJ7Mn1cIiwgYXJnMik7XG4gICAgcmV0dXJuIG5ldyBEaWFnbm9zdGljTWVzc2FnZShjb2RlLCBjYXRlZ29yeSwgbWVzc2FnZSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHN0YXRpYyBjcmVhdGVJbmZvKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERpYWdub3N0aWNNZXNzYWdlIHtcbiAgICByZXR1cm4gRGlhZ25vc3RpY01lc3NhZ2UuY3JlYXRlKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5JTkZPLCBhcmcwLCBhcmcxKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IHdhcm5pbmcgZGlhZ25vc3RpYyBtZXNzYWdlLiAqL1xuICBzdGF0aWMgY3JlYXRlV2FybmluZyhcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBEaWFnbm9zdGljTWVzc2FnZSB7XG4gICAgcmV0dXJuIERpYWdub3N0aWNNZXNzYWdlLmNyZWF0ZShjb2RlLCBEaWFnbm9zdGljQ2F0ZWdvcnkuV0FSTklORywgYXJnMCwgYXJnMSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBlcnJvciBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHN0YXRpYyBjcmVhdGVFcnJvcihcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBEaWFnbm9zdGljTWVzc2FnZSB7XG4gICAgcmV0dXJuIERpYWdub3N0aWNNZXNzYWdlLmNyZWF0ZShjb2RlLCBEaWFnbm9zdGljQ2F0ZWdvcnkuRVJST1IsIGFyZzAsIGFyZzEpO1xuICB9XG5cbiAgLyoqIEFkZHMgYSBzb3VyY2UgcmFuZ2UgdG8gdGhpcyBtZXNzYWdlLiAqL1xuICB3aXRoUmFuZ2UocmFuZ2U6IFJhbmdlKTogdGhpcyB7XG4gICAgdGhpcy5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEFkZHMgYSByZWxhdGVkIHNvdXJjZSByYW5nZSB0byB0aGlzIG1lc3NhZ2UuICovXG4gIHdpdGhSZWxhdGVkUmFuZ2UocmFuZ2U6IFJhbmdlKTogdGhpcyB7XG4gICAgdGhpcy5yZWxhdGVkUmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBDb252ZXJ0cyB0aGlzIG1lc3NhZ2UgdG8gYSBzdHJpbmcuICovXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGRpYWdub3N0aWNDYXRlZ29yeVRvU3RyaW5nKHRoaXMuY2F0ZWdvcnkpICtcbiAgICAgICAgXCIgXCIgK1xuICAgICAgICB0aGlzLmNvZGUudG9TdHJpbmcoMTApICtcbiAgICAgICAgXCI6IFxcXCJcIiArXG4gICAgICAgIHRoaXMubWVzc2FnZSArXG4gICAgICAgIFwiXFxcIiBpbiBcIiArXG4gICAgICAgIHRoaXMucmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICB0aGlzLnJhbmdlLmxpbmUudG9TdHJpbmcoMTApICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICB0aGlzLnJhbmdlLmNvbHVtbi50b1N0cmluZygxMClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBkaWFnbm9zdGljQ2F0ZWdvcnlUb1N0cmluZyh0aGlzLmNhdGVnb3J5KSArXG4gICAgICBcIiBcIiArXG4gICAgICB0aGlzLmNvZGUudG9TdHJpbmcoMTApICtcbiAgICAgIFwiOiBcIiArXG4gICAgICB0aGlzLm1lc3NhZ2VcbiAgICApO1xuICB9XG59XG5cbi8qKiBGb3JtYXRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlLCBvcHRpb25hbGx5IHdpdGggdGVybWluYWwgY29sb3JzIGFuZCBzb3VyY2UgY29udGV4dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREaWFnbm9zdGljTWVzc2FnZShcbiAgbWVzc2FnZTogRGlhZ25vc3RpY01lc3NhZ2UsXG4gIHVzZUNvbG9yczogYm9vbCA9IGZhbHNlLFxuICBzaG93Q29udGV4dDogYm9vbCA9IGZhbHNlXG4pOiBzdHJpbmcge1xuXG4gIC8vIGdlbmVyYWwgaW5mb3JtYXRpb25cbiAgdmFyIHNiOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodXNlQ29sb3JzKSBzYi5wdXNoKGRpYWdub3N0aWNDYXRlZ29yeVRvQ29sb3IobWVzc2FnZS5jYXRlZ29yeSkpO1xuICBzYi5wdXNoKGRpYWdub3N0aWNDYXRlZ29yeVRvU3RyaW5nKG1lc3NhZ2UuY2F0ZWdvcnkpKTtcbiAgaWYgKHVzZUNvbG9ycykgc2IucHVzaChDT0xPUl9SRVNFVCk7XG4gIHNiLnB1c2gobWVzc2FnZS5jb2RlIDwgMTAwMCA/IFwiIEFTXCIgOiBcIiBUU1wiKTtcbiAgc2IucHVzaChtZXNzYWdlLmNvZGUudG9TdHJpbmcoMTApKTtcbiAgc2IucHVzaChcIjogXCIpO1xuICBzYi5wdXNoKG1lc3NhZ2UubWVzc2FnZSk7XG5cbiAgLy8gaW5jbHVkZSByYW5nZSBpbmZvcm1hdGlvbiBpZiBhdmFpbGFibGVcbiAgaWYgKG1lc3NhZ2UucmFuZ2UpIHtcblxuICAgIC8vIGluY2x1ZGUgY29udGV4dCBpbmZvcm1hdGlvbiBpZiByZXF1ZXN0ZWRcbiAgICBsZXQgcmFuZ2UgPSBtZXNzYWdlLnJhbmdlO1xuICAgIGlmIChzaG93Q29udGV4dCkge1xuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICAgIHNiLnB1c2goZm9ybWF0RGlhZ25vc3RpY0NvbnRleHQocmFuZ2UsIHVzZUNvbG9ycykpO1xuICAgIH1cbiAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgIHNiLnB1c2goXCIgaW4gXCIpO1xuICAgIHNiLnB1c2gocmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoKTtcbiAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICBzYi5wdXNoKHJhbmdlLmxpbmUudG9TdHJpbmcoMTApKTtcbiAgICBzYi5wdXNoKFwiLFwiKTtcbiAgICBzYi5wdXNoKHJhbmdlLmNvbHVtbi50b1N0cmluZygxMCkpO1xuICAgIHNiLnB1c2goXCIpXCIpO1xuXG4gICAgbGV0IHJlbGF0ZWRSYW5nZSA9IG1lc3NhZ2UucmVsYXRlZFJhbmdlO1xuICAgIGlmIChyZWxhdGVkUmFuZ2UpIHtcbiAgICAgIGlmIChzaG93Q29udGV4dCkge1xuICAgICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgICBzYi5wdXNoKGZvcm1hdERpYWdub3N0aWNDb250ZXh0KHJlbGF0ZWRSYW5nZSwgdXNlQ29sb3JzKSk7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgc2IucHVzaChcIiBpbiBcIik7XG4gICAgICBzYi5wdXNoKHJhbmdlLnNvdXJjZS5ub3JtYWxpemVkUGF0aCk7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICAgIHNiLnB1c2gocmFuZ2UubGluZS50b1N0cmluZygxMCkpO1xuICAgICAgc2IucHVzaChcIixcIik7XG4gICAgICBzYi5wdXNoKHJhbmdlLmNvbHVtbi50b1N0cmluZygxMCkpO1xuICAgICAgc2IucHVzaChcIilcIik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzYi5qb2luKFwiXCIpO1xufVxuXG4vKiogRm9ybWF0cyB0aGUgZGlhZ25vc3RpYyBjb250ZXh0IGZvciB0aGUgc3BlY2lmaWVkIHJhbmdlLCBvcHRpb25hbGx5IHdpdGggdGVybWluYWwgY29sb3JzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpYWdub3N0aWNDb250ZXh0KHJhbmdlOiBSYW5nZSwgdXNlQ29sb3JzOiBib29sID0gZmFsc2UpOiBzdHJpbmcge1xuICB2YXIgdGV4dCA9IHJhbmdlLnNvdXJjZS50ZXh0O1xuICB2YXIgbGVuID0gdGV4dC5sZW5ndGg7XG4gIHZhciBzdGFydCA9IHJhbmdlLnN0YXJ0O1xuICB2YXIgZW5kID0gcmFuZ2UuZW5kO1xuICB3aGlsZSAoc3RhcnQgPiAwICYmICFpc0xpbmVCcmVhayh0ZXh0LmNoYXJDb2RlQXQoc3RhcnQgLSAxKSkpIHN0YXJ0LS07XG4gIHdoaWxlIChlbmQgPCBsZW4gJiYgIWlzTGluZUJyZWFrKHRleHQuY2hhckNvZGVBdChlbmQpKSkgZW5kKys7XG4gIHZhciBzYjogc3RyaW5nW10gPSBbXG4gICAgXCJcXG4gXCIsXG4gICAgdGV4dC5zdWJzdHJpbmcoc3RhcnQsIGVuZCksXG4gICAgXCJcXG4gXCJcbiAgXTtcbiAgd2hpbGUgKHN0YXJ0IDwgcmFuZ2Uuc3RhcnQpIHtcbiAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICBzdGFydCsrO1xuICB9XG4gIGlmICh1c2VDb2xvcnMpIHNiLnB1c2goQ09MT1JfUkVEKTtcbiAgaWYgKHJhbmdlLnN0YXJ0ID09IHJhbmdlLmVuZCkge1xuICAgIHNiLnB1c2goXCJeXCIpO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdGFydCsrIDwgcmFuZ2UuZW5kKSB7XG4gICAgICBpZiAoaXNMaW5lQnJlYWsodGV4dC5jaGFyQ29kZUF0KHN0YXJ0KSkpIHtcbiAgICAgICAgc2IucHVzaChzdGFydCA9PSByYW5nZS5zdGFydCArIDEgPyBcIl5cIiA6IFwiflwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiflwiKTtcbiAgICB9XG4gIH1cbiAgaWYgKHVzZUNvbG9ycykgc2IucHVzaChDT0xPUl9SRVNFVCk7XG4gIHJldHVybiBzYi5qb2luKFwiXCIpO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgZGlhZ25vc3RpYyBlbWl0dGVycy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEaWFnbm9zdGljRW1pdHRlciB7XG5cbiAgLyoqIERpYWdub3N0aWMgbWVzc2FnZXMgZW1pdHRlZCBzbyBmYXIuICovXG4gIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljTWVzc2FnZVtdO1xuXG4gIC8qKiBJbml0aWFsaXplcyB0aGlzIGRpYWdub3N0aWMgZW1pdHRlci4gKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGRpYWdub3N0aWNzOiBEaWFnbm9zdGljTWVzc2FnZVtdIHwgbnVsbCA9IG51bGwpIHtcbiAgICB0aGlzLmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3MgPyA8RGlhZ25vc3RpY01lc3NhZ2VbXT5kaWFnbm9zdGljcyA6IG5ldyBBcnJheSgpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlIG9mIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkuICovXG4gIGVtaXREaWFnbm9zdGljKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnksXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIHJlbGF0ZWRSYW5nZTogUmFuZ2UgfCBudWxsLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHZhciBtZXNzYWdlID0gRGlhZ25vc3RpY01lc3NhZ2UuY3JlYXRlKGNvZGUsIGNhdGVnb3J5LCBhcmcwLCBhcmcxLCBhcmcyKS53aXRoUmFuZ2UocmFuZ2UpO1xuICAgIGlmIChyZWxhdGVkUmFuZ2UpIG1lc3NhZ2UucmVsYXRlZFJhbmdlID0gcmVsYXRlZFJhbmdlO1xuICAgIHRoaXMuZGlhZ25vc3RpY3MucHVzaChtZXNzYWdlKTtcbiAgICAvLyBjb25zb2xlLmxvZyhmb3JtYXREaWFnbm9zdGljTWVzc2FnZShtZXNzYWdlLCB0cnVlLCB0cnVlKSArIFwiXFxuXCIpOyAvLyB0ZW1wb3JhcnlcbiAgICAvLyBjb25zb2xlLmxvZyg8c3RyaW5nPm5ldyBFcnJvcihcInN0YWNrXCIpLnN0YWNrKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIGluZm8oXG4gICAgY29kZTogRGlhZ25vc3RpY0NvZGUsXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LklORk8sIHJhbmdlLCBudWxsLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2Ugd2l0aCBhIHJlbGF0ZWQgcmFuZ2UuICovXG4gIGluZm9SZWxhdGVkKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICByZWxhdGVkUmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LklORk8sIHJhbmdlLCByZWxhdGVkUmFuZ2UsIGFyZzAsIGFyZzEsIGFyZzIpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgd2FybmluZyBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHdhcm5pbmcoXG4gICAgY29kZTogRGlhZ25vc3RpY0NvZGUsXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LldBUk5JTkcsIHJhbmdlLCBudWxsLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhIHdhcm5pbmcgZGlhZ25vc3RpYyBtZXNzYWdlIHdpdGggYSByZWxhdGVkIHJhbmdlLiAqL1xuICB3YXJuaW5nUmVsYXRlZChcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICByYW5nZTogUmFuZ2UsXG4gICAgcmVsYXRlZFJhbmdlOiBSYW5nZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcyOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVtaXREaWFnbm9zdGljKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5XQVJOSU5HLCByYW5nZSwgcmVsYXRlZFJhbmdlLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBlcnJvciBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIGVycm9yKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcyOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVtaXREaWFnbm9zdGljKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5FUlJPUiwgcmFuZ2UsIG51bGwsIGFyZzAsIGFyZzEsIGFyZzIpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGFuIGVycm9yIGRpYWdub3N0aWMgbWVzc2FnZSB3aXRoIGEgcmVsYXRlZCByYW5nZS4gKi9cbiAgZXJyb3JSZWxhdGVkKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICByZWxhdGVkUmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LkVSUk9SLCByYW5nZSwgcmVsYXRlZFJhbmdlLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxufVxuIl19 - -/***/ }), - -/***/ "../src/glue/js/float.js": -/*!*******************************!*\ - !*** ../src/glue/js/float.js ***! - \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {const F64 = new Float64Array(1); -const F32 = new Float32Array(F64.buffer); -const I32 = new Int32Array(F64.buffer); - -global.f32_as_i32 = function(value) { - F32[0] = value; - return I32[0]; -}; - -global.i32_as_f32 = function(value) { - I32[0] = value; - return F32[0]; -}; - -global.f64_as_i64 = function(value) { - F64[0] = value; - return i64_new(I32[0], I32[1]); -}; - -global.i64_as_f64 = function(value) { - I32[0] = i64_low(value); - I32[1] = i64_high(value); - return F64[0]; -}; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../src/glue/js/i64.js": -/*!*****************************!*\ - !*** ../src/glue/js/i64.js ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {const Long = global.Long || __webpack_require__(/*! long */ "../node_modules/long/src/long.js"); - -global.i64_zero = Long.ZERO; - -global.i64_one = Long.ONE; - -global.i64_new = function(lo, hi) { - return Long.fromBits(lo, hi); -}; - -global.i64_low = function(value) { - return value.low; -}; - -global.i64_high = function(value) { - return value.high; -}; - -global.i64_add = function(left, right) { - return left.add(right); -}; - -global.i64_sub = function(left, right) { - return left.sub(right); -}; - -global.i64_mul = function(left, right) { - return left.mul(right); -}; - -global.i64_div = function(left, right) { - return left.div(right); -}; - -global.i64_div_u = function(left, right) { - return left.toUnsigned().div(right.toUnsigned()).toSigned(); -}; - -global.i64_rem = function(left, right) { - return left.mod(right); -}; - -global.i64_rem_u = function(left, right) { - return left.toUnsigned().mod(right.toUnsigned()).toSigned(); -}; - -global.i64_and = function(left, right) { - return left.and(right); -}; - -global.i64_or = function(left, right) { - return left.or(right); -}; - -global.i64_xor = function(left, right) { - return left.xor(right); -}; - -global.i64_shl = function(left, right) { - return left.shl(right); -}; - -global.i64_shr = function(left, right) { - return left.shr(right); -}; - -global.i64_shr_u = function(left, right) { - return left.shru(right); -}; - -global.i64_not = function(value) { - return value.not(); -}; - -global.i64_eq = function(left, right) { - return left.eq(right); -}; - -global.i64_ne = function(left, right) { - return left.ne(right); -}; - -global.i64_align = function(value, alignment) { - assert(alignment && (alignment & (alignment - 1)) == 0); - var mask = Long.fromInt(alignment - 1); - return value.add(mask).and(mask.not()); -}; - -global.i64_is_i8 = function(value) { - return value.high === 0 && (value.low >= 0 && value.low <= i8.MAX_VALUE) - || value.high === -1 && (value.low >= i8.MIN_VALUE && value.low < 0); -}; - -global.i64_is_i16 = function(value) { - return value.high === 0 && (value.low >= 0 && value.low <= i16.MAX_VALUE) - || value.high === -1 && (value.low >= i16.MIN_VALUE && value.low < 0); -}; - -global.i64_is_i32 = function(value) { - return (value.high === 0 && value.low >= 0) - || (value.high === -1 && value.low < 0); -}; - -global.i64_is_u8 = function(value) { - return value.high === 0 && value.low >= 0 && value.low <= u8.MAX_VALUE; -}; - -global.i64_is_u16 = function(value) { - return value.high === 0 && value.low >= 0 && value.low <= u16.MAX_VALUE; -}; - -global.i64_is_u32 = function(value) { - return value.high === 0; -}; - -global.i64_is_bool = function(value) { - return value.high === 0 && (value.low === 0 || value.low === 1); -}; - -const minSafeF32 = Long.fromNumber(f32.MIN_SAFE_INTEGER); -const maxSafeF32 = Long.fromNumber(f32.MAX_SAFE_INTEGER); - -global.i64_is_f32 = function(value) { - return value.gte(minSafeF32) && value.lte(maxSafeF32); -}; - -const minSafeF64 = Long.fromNumber(f64.MIN_SAFE_INTEGER); -const maxSafeF64 = Long.fromNumber(f64.MAX_SAFE_INTEGER); - -global.i64_is_f64 = function(value) { - return value.gte(minSafeF64) && value.lte(maxSafeF64); -}; - -global.i64_to_f32 = function(value) { - return global.Math.fround(value.toNumber()); -}; - -global.i64_to_f64 = function(value) { - return value.toNumber(); -}; - -global.i64_to_string = function(value, unsigned) { - return (unsigned ? value.toUnsigned() : value).toString(10); -}; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../src/tokenizer.ts": -/*!***************************!*\ - !*** ../src/tokenizer.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * A TypeScript tokenizer modified for AssemblyScript. - * - * Skips over trivia and provides a general mark/reset mechanism for the parser to utilize on - * ambiguous tokens. - * - * @module tokenizer - */ /***/ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var diagnostics_1 = __webpack_require__(/*! ./diagnostics */ "../src/diagnostics.ts"); -var ast_1 = __webpack_require__(/*! ./ast */ "../src/ast.ts"); -var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); -/** Named token types. */ -var Token; -(function (Token) { - // keywords - // discarded: ANY, BOOLEAN, NEVER, NUMBER, STRING, SYMBOL, UNDEFINED, LESSTHAN_SLASH - Token[Token["ABSTRACT"] = 0] = "ABSTRACT"; - Token[Token["AS"] = 1] = "AS"; - Token[Token["ASYNC"] = 2] = "ASYNC"; - Token[Token["AWAIT"] = 3] = "AWAIT"; - Token[Token["BREAK"] = 4] = "BREAK"; - Token[Token["CASE"] = 5] = "CASE"; - Token[Token["CATCH"] = 6] = "CATCH"; - Token[Token["CLASS"] = 7] = "CLASS"; - Token[Token["CONST"] = 8] = "CONST"; - Token[Token["CONTINUE"] = 9] = "CONTINUE"; - Token[Token["CONSTRUCTOR"] = 10] = "CONSTRUCTOR"; - Token[Token["DEBUGGER"] = 11] = "DEBUGGER"; - Token[Token["DECLARE"] = 12] = "DECLARE"; - Token[Token["DEFAULT"] = 13] = "DEFAULT"; - Token[Token["DELETE"] = 14] = "DELETE"; - Token[Token["DO"] = 15] = "DO"; - Token[Token["ELSE"] = 16] = "ELSE"; - Token[Token["ENUM"] = 17] = "ENUM"; - Token[Token["EXPORT"] = 18] = "EXPORT"; - Token[Token["EXTENDS"] = 19] = "EXTENDS"; - Token[Token["FALSE"] = 20] = "FALSE"; - Token[Token["FINALLY"] = 21] = "FINALLY"; - Token[Token["FOR"] = 22] = "FOR"; - Token[Token["FROM"] = 23] = "FROM"; - Token[Token["FUNCTION"] = 24] = "FUNCTION"; - Token[Token["GET"] = 25] = "GET"; - Token[Token["IF"] = 26] = "IF"; - Token[Token["IMPLEMENTS"] = 27] = "IMPLEMENTS"; - Token[Token["IMPORT"] = 28] = "IMPORT"; - Token[Token["IN"] = 29] = "IN"; - Token[Token["INSTANCEOF"] = 30] = "INSTANCEOF"; - Token[Token["INTERFACE"] = 31] = "INTERFACE"; - Token[Token["IS"] = 32] = "IS"; - Token[Token["KEYOF"] = 33] = "KEYOF"; - Token[Token["LET"] = 34] = "LET"; - Token[Token["MODULE"] = 35] = "MODULE"; - Token[Token["NAMESPACE"] = 36] = "NAMESPACE"; - Token[Token["NEW"] = 37] = "NEW"; - Token[Token["NULL"] = 38] = "NULL"; - Token[Token["OF"] = 39] = "OF"; - Token[Token["PACKAGE"] = 40] = "PACKAGE"; - Token[Token["PRIVATE"] = 41] = "PRIVATE"; - Token[Token["PROTECTED"] = 42] = "PROTECTED"; - Token[Token["PUBLIC"] = 43] = "PUBLIC"; - Token[Token["READONLY"] = 44] = "READONLY"; - Token[Token["RETURN"] = 45] = "RETURN"; - Token[Token["SET"] = 46] = "SET"; - Token[Token["STATIC"] = 47] = "STATIC"; - Token[Token["SUPER"] = 48] = "SUPER"; - Token[Token["SWITCH"] = 49] = "SWITCH"; - Token[Token["THIS"] = 50] = "THIS"; - Token[Token["THROW"] = 51] = "THROW"; - Token[Token["TRUE"] = 52] = "TRUE"; - Token[Token["TRY"] = 53] = "TRY"; - Token[Token["TYPE"] = 54] = "TYPE"; - Token[Token["TYPEOF"] = 55] = "TYPEOF"; - Token[Token["VAR"] = 56] = "VAR"; - Token[Token["VOID"] = 57] = "VOID"; - Token[Token["WHILE"] = 58] = "WHILE"; - Token[Token["WITH"] = 59] = "WITH"; - Token[Token["YIELD"] = 60] = "YIELD"; - // punctuation - Token[Token["OPENBRACE"] = 61] = "OPENBRACE"; - Token[Token["CLOSEBRACE"] = 62] = "CLOSEBRACE"; - Token[Token["OPENPAREN"] = 63] = "OPENPAREN"; - Token[Token["CLOSEPAREN"] = 64] = "CLOSEPAREN"; - Token[Token["OPENBRACKET"] = 65] = "OPENBRACKET"; - Token[Token["CLOSEBRACKET"] = 66] = "CLOSEBRACKET"; - Token[Token["DOT"] = 67] = "DOT"; - Token[Token["DOT_DOT_DOT"] = 68] = "DOT_DOT_DOT"; - Token[Token["SEMICOLON"] = 69] = "SEMICOLON"; - Token[Token["COMMA"] = 70] = "COMMA"; - Token[Token["LESSTHAN"] = 71] = "LESSTHAN"; - Token[Token["GREATERTHAN"] = 72] = "GREATERTHAN"; - Token[Token["LESSTHAN_EQUALS"] = 73] = "LESSTHAN_EQUALS"; - Token[Token["GREATERTHAN_EQUALS"] = 74] = "GREATERTHAN_EQUALS"; - Token[Token["EQUALS_EQUALS"] = 75] = "EQUALS_EQUALS"; - Token[Token["EXCLAMATION_EQUALS"] = 76] = "EXCLAMATION_EQUALS"; - Token[Token["EQUALS_EQUALS_EQUALS"] = 77] = "EQUALS_EQUALS_EQUALS"; - Token[Token["EXCLAMATION_EQUALS_EQUALS"] = 78] = "EXCLAMATION_EQUALS_EQUALS"; - Token[Token["EQUALS_GREATERTHAN"] = 79] = "EQUALS_GREATERTHAN"; - Token[Token["PLUS"] = 80] = "PLUS"; - Token[Token["MINUS"] = 81] = "MINUS"; - Token[Token["ASTERISK_ASTERISK"] = 82] = "ASTERISK_ASTERISK"; - Token[Token["ASTERISK"] = 83] = "ASTERISK"; - Token[Token["SLASH"] = 84] = "SLASH"; - Token[Token["PERCENT"] = 85] = "PERCENT"; - Token[Token["PLUS_PLUS"] = 86] = "PLUS_PLUS"; - Token[Token["MINUS_MINUS"] = 87] = "MINUS_MINUS"; - Token[Token["LESSTHAN_LESSTHAN"] = 88] = "LESSTHAN_LESSTHAN"; - Token[Token["GREATERTHAN_GREATERTHAN"] = 89] = "GREATERTHAN_GREATERTHAN"; - Token[Token["GREATERTHAN_GREATERTHAN_GREATERTHAN"] = 90] = "GREATERTHAN_GREATERTHAN_GREATERTHAN"; - Token[Token["AMPERSAND"] = 91] = "AMPERSAND"; - Token[Token["BAR"] = 92] = "BAR"; - Token[Token["CARET"] = 93] = "CARET"; - Token[Token["EXCLAMATION"] = 94] = "EXCLAMATION"; - Token[Token["TILDE"] = 95] = "TILDE"; - Token[Token["AMPERSAND_AMPERSAND"] = 96] = "AMPERSAND_AMPERSAND"; - Token[Token["BAR_BAR"] = 97] = "BAR_BAR"; - Token[Token["QUESTION"] = 98] = "QUESTION"; - Token[Token["COLON"] = 99] = "COLON"; - Token[Token["EQUALS"] = 100] = "EQUALS"; - Token[Token["PLUS_EQUALS"] = 101] = "PLUS_EQUALS"; - Token[Token["MINUS_EQUALS"] = 102] = "MINUS_EQUALS"; - Token[Token["ASTERISK_EQUALS"] = 103] = "ASTERISK_EQUALS"; - Token[Token["ASTERISK_ASTERISK_EQUALS"] = 104] = "ASTERISK_ASTERISK_EQUALS"; - Token[Token["SLASH_EQUALS"] = 105] = "SLASH_EQUALS"; - Token[Token["PERCENT_EQUALS"] = 106] = "PERCENT_EQUALS"; - Token[Token["LESSTHAN_LESSTHAN_EQUALS"] = 107] = "LESSTHAN_LESSTHAN_EQUALS"; - Token[Token["GREATERTHAN_GREATERTHAN_EQUALS"] = 108] = "GREATERTHAN_GREATERTHAN_EQUALS"; - Token[Token["GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS"] = 109] = "GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS"; - Token[Token["AMPERSAND_EQUALS"] = 110] = "AMPERSAND_EQUALS"; - Token[Token["BAR_EQUALS"] = 111] = "BAR_EQUALS"; - Token[Token["CARET_EQUALS"] = 112] = "CARET_EQUALS"; - Token[Token["AT"] = 113] = "AT"; - // literals - Token[Token["IDENTIFIER"] = 114] = "IDENTIFIER"; - Token[Token["STRINGLITERAL"] = 115] = "STRINGLITERAL"; - Token[Token["INTEGERLITERAL"] = 116] = "INTEGERLITERAL"; - Token[Token["FLOATLITERAL"] = 117] = "FLOATLITERAL"; - // meta - Token[Token["INVALID"] = 118] = "INVALID"; - Token[Token["ENDOFFILE"] = 119] = "ENDOFFILE"; -})(Token = exports.Token || (exports.Token = {})); -var IdentifierHandling; -(function (IdentifierHandling) { - IdentifierHandling[IdentifierHandling["DEFAULT"] = 0] = "DEFAULT"; - IdentifierHandling[IdentifierHandling["PREFER"] = 1] = "PREFER"; - IdentifierHandling[IdentifierHandling["ALWAYS"] = 2] = "ALWAYS"; -})(IdentifierHandling = exports.IdentifierHandling || (exports.IdentifierHandling = {})); -function tokenFromKeyword(text) { - assert(text.length); - switch (text.charCodeAt(0)) { - case 97 /* a */: { - switch (text) { - case "abstract": return Token.ABSTRACT; - case "as": return Token.AS; - case "async": return Token.ASYNC; - case "await": return Token.AWAIT; - } - break; - } - case 98 /* b */: { - switch (text) { - case "break": return Token.BREAK; - } - break; - } - case 99 /* c */: { - switch (text) { - case "case": return Token.CASE; - case "catch": return Token.CATCH; - case "class": return Token.CLASS; - case "continue": return Token.CONTINUE; - case "const": return Token.CONST; - case "constructor": return Token.CONSTRUCTOR; - } - break; - } - case 100 /* d */: { - switch (text) { - case "debugger": return Token.DEBUGGER; - case "declare": return Token.DECLARE; - case "default": return Token.DEFAULT; - case "delete": return Token.DELETE; - case "do": return Token.DO; - } - break; - } - case 101 /* e */: { - switch (text) { - case "else": return Token.ELSE; - case "enum": return Token.ENUM; - case "export": return Token.EXPORT; - case "extends": return Token.EXTENDS; - } - break; - } - case 102 /* f */: { - switch (text) { - case "false": return Token.FALSE; - case "finally": return Token.FINALLY; - case "for": return Token.FOR; - case "from": return Token.FROM; - case "function": return Token.FUNCTION; - } - break; - } - case 103 /* g */: { - switch (text) { - case "get": return Token.GET; - } - break; - } - case 105 /* i */: { - switch (text) { - case "if": return Token.IF; - case "implements": return Token.IMPLEMENTS; - case "import": return Token.IMPORT; - case "in": return Token.IN; - case "instanceof": return Token.INSTANCEOF; - case "interface": return Token.INTERFACE; - case "is": return Token.IS; - } - break; - } - case 107 /* k */: { - switch (text) { - case "keyof": return Token.KEYOF; - } - break; - } - case 108 /* l */: { - switch (text) { - case "let": return Token.LET; - } - break; - } - case 109 /* m */: { - switch (text) { - case "module": return Token.MODULE; - } - break; - } - case 110 /* n */: { - switch (text) { - case "namespace": return Token.NAMESPACE; - case "new": return Token.NEW; - case "null": return Token.NULL; - } - break; - } - case 111 /* o */: { - switch (text) { - case "of": return Token.OF; - } - break; - } - case 112 /* p */: { - switch (text) { - case "package": return Token.PACKAGE; - case "private": return Token.PRIVATE; - case "protected": return Token.PROTECTED; - case "public": return Token.PUBLIC; - } - break; - } - case 114 /* r */: { - switch (text) { - case "readonly": return Token.READONLY; - case "return": return Token.RETURN; - } - break; - } - case 115 /* s */: { - switch (text) { - case "set": return Token.SET; - case "static": return Token.STATIC; - case "super": return Token.SUPER; - case "switch": return Token.SWITCH; - } - break; - } - case 116 /* t */: { - switch (text) { - case "this": return Token.THIS; - case "throw": return Token.THROW; - case "true": return Token.TRUE; - case "try": return Token.TRY; - case "type": return Token.TYPE; - case "typeof": return Token.TYPEOF; - } - break; - } - case 118 /* v */: { - switch (text) { - case "var": return Token.VAR; - case "void": return Token.VOID; - } - break; - } - case 119 /* w */: { - switch (text) { - case "while": return Token.WHILE; - case "with": return Token.WITH; - } - break; - } - case 121 /* y */: { - switch (text) { - case "yield": return Token.YIELD; - } - break; - } - } - return Token.INVALID; -} -exports.tokenFromKeyword = tokenFromKeyword; -function tokenIsAlsoIdentifier(token) { - switch (token) { - case Token.ABSTRACT: - case Token.AS: - case Token.CONSTRUCTOR: - case Token.DECLARE: - case Token.DELETE: - case Token.FROM: - case Token.FOR: - case Token.GET: - case Token.INSTANCEOF: - case Token.IS: - case Token.KEYOF: - case Token.MODULE: - case Token.NAMESPACE: - case Token.NULL: - case Token.READONLY: - case Token.SET: - case Token.TYPE: - case Token.VOID: return true; - default: return false; - } -} -exports.tokenIsAlsoIdentifier = tokenIsAlsoIdentifier; -function isIllegalVariableIdentifier(name) { - assert(name.length); - switch (name.charCodeAt(0)) { - case 100 /* d */: return name == "delete"; - case 102 /* f */: return name == "for"; - case 105 /* i */: return name == "instanceof"; - case 110 /* n */: return name == "null"; - case 118 /* v */: return name == "void"; - } - return false; -} -exports.isIllegalVariableIdentifier = isIllegalVariableIdentifier; -function operatorTokenToString(token) { - switch (token) { - case Token.DELETE: return "delete"; - case Token.IN: return "in"; - case Token.INSTANCEOF: return "instanceof"; - case Token.NEW: return "new"; - case Token.TYPEOF: return "typeof"; - case Token.VOID: return "void"; - case Token.YIELD: return "yield"; - case Token.DOT_DOT_DOT: return "..."; - case Token.COMMA: return ","; - case Token.LESSTHAN: return "<"; - case Token.GREATERTHAN: return ">"; - case Token.LESSTHAN_EQUALS: return "<="; - case Token.GREATERTHAN_EQUALS: return ">="; - case Token.EQUALS_EQUALS: return "=="; - case Token.EXCLAMATION_EQUALS: return "!="; - case Token.EQUALS_EQUALS_EQUALS: return "==="; - case Token.EXCLAMATION_EQUALS_EQUALS: return "!=="; - case Token.PLUS: return "+"; - case Token.MINUS: return "-"; - case Token.ASTERISK_ASTERISK: return "**"; - case Token.ASTERISK: return "*"; - case Token.SLASH: return "/"; - case Token.PERCENT: return "%"; - case Token.PLUS_PLUS: return "++"; - case Token.MINUS_MINUS: return "--"; - case Token.LESSTHAN_LESSTHAN: return "<<"; - case Token.GREATERTHAN_GREATERTHAN: return ">>"; - case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: return ">>>"; - case Token.AMPERSAND: return "&"; - case Token.BAR: return "|"; - case Token.CARET: return "^"; - case Token.EXCLAMATION: return "!"; - case Token.TILDE: return "~"; - case Token.AMPERSAND_AMPERSAND: return "&&"; - case Token.BAR_BAR: return "||"; - case Token.EQUALS: return "="; - case Token.PLUS_EQUALS: return "+="; - case Token.MINUS_EQUALS: return "-="; - case Token.ASTERISK_EQUALS: return "*="; - case Token.ASTERISK_ASTERISK_EQUALS: return "**="; - case Token.SLASH_EQUALS: return "/="; - case Token.PERCENT_EQUALS: return "%="; - case Token.LESSTHAN_LESSTHAN_EQUALS: return "<<="; - case Token.GREATERTHAN_GREATERTHAN_EQUALS: return ">>="; - case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS: return ">>>="; - case Token.AMPERSAND_EQUALS: return "&="; - case Token.BAR_EQUALS: return "|="; - case Token.CARET_EQUALS: return "^="; - default: { - assert(false); - return ""; - } - } -} -exports.operatorTokenToString = operatorTokenToString; -var Range = /** @class */ (function () { - // TODO: set these while tokenizing - // line: i32; - // column: i32; - function Range(source, start, end) { - this.debugInfoRef = 0; - this.source = source; - this.start = start; - this.end = end; - } - Range.join = function (a, b) { - if (a.source != b.source) - throw new Error("source mismatch"); - return new Range(a.source, a.start < b.start ? a.start : b.start, a.end > b.end ? a.end : b.end); - }; - Object.defineProperty(Range.prototype, "atStart", { - get: function () { - return new Range(this.source, this.start, this.start); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Range.prototype, "atEnd", { - get: function () { - return new Range(this.source, this.end, this.end); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Range.prototype, "line", { - get: function () { - var text = this.source.text; - var line = 1; - for (var pos = this.start; pos >= 0; --pos) { - if (text.charCodeAt(pos) == 10 /* LINEFEED */) - line++; - } - return line; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Range.prototype, "column", { - get: function () { - var text = this.source.text; - var column = 0; - for (var pos = this.start - 1; pos >= 0; --pos) { - if (text.charCodeAt(pos) == 10 /* LINEFEED */) - break; - ++column; - } - return column; - }, - enumerable: true, - configurable: true - }); - Range.prototype.toString = function () { - return this.source.text.substring(this.start, this.end); - }; - return Range; -}()); -exports.Range = Range; -/** Tokenizes a source to individual {@link Token}s. */ -var Tokenizer = /** @class */ (function (_super) { - __extends(Tokenizer, _super); - /** Constructs a new tokenizer. */ - function Tokenizer(source, diagnostics) { - if (diagnostics === void 0) { diagnostics = null; } - var _this = _super.call(this, diagnostics) || this; - _this.end = 0; - _this.pos = 0; - _this.token = -1; - _this.tokenPos = 0; - _this.nextToken = -1; - _this.nextTokenPos = 0; - _this.nextTokenOnNewLine = false; - _this.onComment = null; - _this.source = source; - _this.pos = 0; - _this.end = source.text.length; - _this.diagnostics = diagnostics || new Array(); - var end = _this.end; - var text = source.text; - // skip bom - if (_this.pos < end && - text.charCodeAt(_this.pos) == 65279 /* BYTEORDERMARK */) { - ++_this.pos; - } - // skip shebang - if (_this.pos + 1 < end && - text.charCodeAt(_this.pos) == 35 /* HASH */ && - text.charCodeAt(_this.pos + 1) == 33 /* EXCLAMATION */) { - _this.pos += 2; - while (_this.pos < end && - text.charCodeAt(_this.pos) != 10 /* LINEFEED */) { - ++_this.pos; - } - // 'next' now starts at lf or eof - } - return _this; - } - Tokenizer.prototype.next = function (identifierHandling) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - this.nextToken = -1; - return this.token = this.unsafeNext(identifierHandling); - }; - Tokenizer.prototype.unsafeNext = function (identifierHandling, maxTokenLength) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - if (maxTokenLength === void 0) { maxTokenLength = i32.MAX_VALUE; } - var end = this.end; - var text = this.source.text; - while (this.pos < end) { - this.tokenPos = this.pos; - var c = text.charCodeAt(this.pos); - switch (c) { - case 13 /* CARRIAGERETURN */: { - if (!(++this.pos < end && - text.charCodeAt(this.pos) == 10 /* LINEFEED */)) - break; - // otherwise fall-through - } - case 10 /* LINEFEED */: - case 9 /* TAB */: - case 11 /* VERTICALTAB */: - case 12 /* FORMFEED */: - case 32 /* SPACE */: { - ++this.pos; - break; - } - case 33 /* EXCLAMATION */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - if (maxTokenLength > 2 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.EXCLAMATION_EQUALS_EQUALS; - } - return Token.EXCLAMATION_EQUALS; - } - return Token.EXCLAMATION; - } - case 34 /* DOUBLEQUOTE */: - case 39 /* SINGLEQUOTE */: - case 96 /* BACKTICK */: { // TODO - return Token.STRINGLITERAL; // expects a call to readString - } - case 37 /* PERCENT */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.PERCENT_EQUALS; - } - return Token.PERCENT; - } - case 38 /* AMPERSAND */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 38 /* AMPERSAND */) { - ++this.pos; - return Token.AMPERSAND_AMPERSAND; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.AMPERSAND_EQUALS; - } - } - return Token.AMPERSAND; - } - case 40 /* OPENPAREN */: { - ++this.pos; - return Token.OPENPAREN; - } - case 41 /* CLOSEPAREN */: { - ++this.pos; - return Token.CLOSEPAREN; - } - case 42 /* ASTERISK */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.ASTERISK_EQUALS; - } - if (chr == 42 /* ASTERISK */) { - ++this.pos; - if (maxTokenLength > 2 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.ASTERISK_ASTERISK_EQUALS; - } - return Token.ASTERISK_ASTERISK; - } - } - return Token.ASTERISK; - } - case 43 /* PLUS */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 43 /* PLUS */) { - ++this.pos; - return Token.PLUS_PLUS; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.PLUS_EQUALS; - } - } - return Token.PLUS; - } - case 44 /* COMMA */: { - ++this.pos; - return Token.COMMA; - } - case 45 /* MINUS */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 45 /* MINUS */) { - ++this.pos; - return Token.MINUS_MINUS; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.MINUS_EQUALS; - } - } - return Token.MINUS; - } - case 46 /* DOT */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (util_1.isDecimalDigit(chr)) { - --this.pos; - return Token.FLOATLITERAL; // expects a call to readFloat - } - if (maxTokenLength > 2 && this.pos + 1 < end && - chr == 46 /* DOT */ && - text.charCodeAt(this.pos + 1) == 46 /* DOT */) { - this.pos += 2; - return Token.DOT_DOT_DOT; - } - } - return Token.DOT; - } - case 47 /* SLASH */: { - var commentStartPos = this.pos; - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 47 /* SLASH */) { // single-line - var commentKind = ast_1.CommentKind.LINE; - if (this.pos + 1 < end && - text.charCodeAt(this.pos + 1) == 47 /* SLASH */) { - ++this.pos; - commentKind = ast_1.CommentKind.TRIPLE; - } - while (++this.pos < end) { - if (text.charCodeAt(this.pos) == 10 /* LINEFEED */) { - ++this.pos; - break; - } - } - if (this.onComment) { - this.onComment(commentKind, text.substring(commentStartPos, this.pos), this.range(commentStartPos, this.pos)); - } - break; - } - if (chr == 42 /* ASTERISK */) { // multi-line - var closed = false; - while (++this.pos < end) { - c = text.charCodeAt(this.pos); - if (c == 42 /* ASTERISK */ && - this.pos + 1 < end && - text.charCodeAt(this.pos + 1) == 47 /* SLASH */) { - this.pos += 2; - closed = true; - break; - } - } - if (!closed) { - this.error(diagnostics_1.DiagnosticCode._0_expected, this.range(this.pos), "*/"); - } - else if (this.onComment) { - this.onComment(ast_1.CommentKind.BLOCK, text.substring(commentStartPos, this.pos), this.range(commentStartPos, this.pos)); - } - break; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.SLASH_EQUALS; - } - } - return Token.SLASH; - } - case 48 /* _0 */: - case 49 /* _1 */: - case 50 /* _2 */: - case 51 /* _3 */: - case 52 /* _4 */: - case 53 /* _5 */: - case 54 /* _6 */: - case 55 /* _7 */: - case 56 /* _8 */: - case 57 /* _9 */: { - return this.testInteger() - ? Token.INTEGERLITERAL // expects a call to readInteger - : Token.FLOATLITERAL; // expects a call to readFloat - } - case 58 /* COLON */: { - ++this.pos; - return Token.COLON; - } - case 59 /* SEMICOLON */: { - ++this.pos; - return Token.SEMICOLON; - } - case 60 /* LESSTHAN */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 60 /* LESSTHAN */) { - ++this.pos; - if (maxTokenLength > 2 && - this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.LESSTHAN_LESSTHAN_EQUALS; - } - return Token.LESSTHAN_LESSTHAN; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.LESSTHAN_EQUALS; - } - } - return Token.LESSTHAN; - } - case 61 /* EQUALS */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 61 /* EQUALS */) { - ++this.pos; - if (maxTokenLength > 2 && - this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.EQUALS_EQUALS_EQUALS; - } - return Token.EQUALS_EQUALS; - } - if (chr == 62 /* GREATERTHAN */) { - ++this.pos; - return Token.EQUALS_GREATERTHAN; - } - } - return Token.EQUALS; - } - case 62 /* GREATERTHAN */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 62 /* GREATERTHAN */) { - ++this.pos; - if (maxTokenLength > 2 && this.pos < end) { - chr = text.charCodeAt(this.pos); - if (chr == 62 /* GREATERTHAN */) { - ++this.pos; - if (maxTokenLength > 3 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS; - } - return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.GREATERTHAN_GREATERTHAN_EQUALS; - } - } - return Token.GREATERTHAN_GREATERTHAN; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.GREATERTHAN_EQUALS; - } - } - return Token.GREATERTHAN; - } - case 63 /* QUESTION */: { - ++this.pos; - return Token.QUESTION; - } - case 91 /* OPENBRACKET */: { - ++this.pos; - return Token.OPENBRACKET; - } - case 93 /* CLOSEBRACKET */: { - ++this.pos; - return Token.CLOSEBRACKET; - } - case 94 /* CARET */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.CARET_EQUALS; - } - return Token.CARET; - } - case 123 /* OPENBRACE */: { - ++this.pos; - return Token.OPENBRACE; - } - case 124 /* BAR */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 124 /* BAR */) { - ++this.pos; - return Token.BAR_BAR; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.BAR_EQUALS; - } - } - return Token.BAR; - } - case 125 /* CLOSEBRACE */: { - ++this.pos; - return Token.CLOSEBRACE; - } - case 126 /* TILDE */: { - ++this.pos; - return Token.TILDE; - } - case 64 /* AT */: { - ++this.pos; - return Token.AT; - } - default: { - if (util_1.isIdentifierStart(c)) { - if (util_1.isKeywordCharacter(c)) { - var posBefore = this.pos; - while (++this.pos < end && - util_1.isIdentifierPart(c = text.charCodeAt(this.pos))) { - if (!util_1.isKeywordCharacter(c)) { - this.pos = posBefore; - return Token.IDENTIFIER; - } - } - var keywordText = text.substring(posBefore, this.pos); - var keywordToken = tokenFromKeyword(keywordText); - if (keywordToken !== Token.INVALID && - identifierHandling !== IdentifierHandling.ALWAYS && - !(identifierHandling === IdentifierHandling.PREFER && - tokenIsAlsoIdentifier(keywordToken))) { - return keywordToken; - } - this.pos = posBefore; - } - return Token.IDENTIFIER; // expects a call to readIdentifier - } - else if (util_1.isWhiteSpace(c)) { - ++this.pos; - break; - } - this.error(diagnostics_1.DiagnosticCode.Invalid_character, this.range(this.pos, this.pos + 1)); - ++this.pos; - return Token.INVALID; - } - } - } - return Token.ENDOFFILE; - }; - Tokenizer.prototype.peek = function (checkOnNewLine, identifierHandling, maxCompoundLength) { - if (checkOnNewLine === void 0) { checkOnNewLine = false; } - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - if (maxCompoundLength === void 0) { maxCompoundLength = i32.MAX_VALUE; } - var text = this.source.text; - if (this.nextToken < 0) { - var posBefore = this.pos; - var tokenBefore = this.token; - var tokenPosBefore = this.tokenPos; - this.nextToken = this.unsafeNext(identifierHandling, maxCompoundLength); - this.nextTokenPos = this.tokenPos; - if (checkOnNewLine) { - this.nextTokenOnNewLine = false; - for (var pos = posBefore, end = this.nextTokenPos; pos < end; ++pos) { - if (util_1.isLineBreak(text.charCodeAt(pos))) { - this.nextTokenOnNewLine = true; - break; - } - } - } - this.pos = posBefore; - this.token = tokenBefore; - this.tokenPos = tokenPosBefore; - } - return this.nextToken; - }; - Tokenizer.prototype.skipIdentifier = function (identifierHandling) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.PREFER; } - return this.skip(Token.IDENTIFIER, identifierHandling); - }; - Tokenizer.prototype.skip = function (token, identifierHandling) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - var posBefore = this.pos; - var tokenBefore = this.token; - var tokenPosBefore = this.tokenPos; - var maxCompoundLength = i32.MAX_VALUE; - switch (token) { - case Token.GREATERTHAN: { // where parsing type arguments - maxCompoundLength = 1; - break; - } - } - this.token = this.unsafeNext(identifierHandling, maxCompoundLength); - if (this.token == token) { - this.nextToken = -1; - return true; - } - else { - this.pos = posBefore; - this.token = tokenBefore; - this.tokenPos = tokenPosBefore; - return false; - } - }; - Tokenizer.prototype.mark = function () { - var state; - if (reusableState) { - state = reusableState; - reusableState = null; - } - else { - state = new State(); - } - state.pos = this.pos; - state.token = this.token; - state.tokenPos = this.tokenPos; - return state; - }; - Tokenizer.prototype.discard = function (state) { - reusableState = state; - }; - Tokenizer.prototype.reset = function (state) { - this.pos = state.pos; - this.token = state.token; - this.tokenPos = state.tokenPos; - this.nextToken = -1; - }; - Tokenizer.prototype.range = function (start, end) { - if (start === void 0) { start = -1; } - if (end === void 0) { end = -1; } - if (start < 0) { - start = this.tokenPos; - end = this.pos; - } - else if (end < 0) { - end = start; - } - return new Range(this.source, start, end); - }; - Tokenizer.prototype.readIdentifier = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - while (++this.pos < end && - util_1.isIdentifierPart(text.charCodeAt(this.pos))) - ; - return text.substring(start, this.pos); - }; - Tokenizer.prototype.readString = function () { - var text = this.source.text; - var quote = text.charCodeAt(this.pos++); - var start = this.pos; - var end = this.end; - var result = ""; - while (true) { - if (this.pos >= end) { - result += text.substring(start, this.pos); - this.error(diagnostics_1.DiagnosticCode.Unterminated_string_literal, this.range(start - 1, end)); - break; - } - var c = text.charCodeAt(this.pos); - if (c == quote) { - result += text.substring(start, this.pos++); - break; - } - if (c == 92 /* BACKSLASH */) { - result += text.substring(start, this.pos); - result += this.readEscapeSequence(); - start = this.pos; - continue; - } - if (util_1.isLineBreak(c) && quote != 96 /* BACKTICK */) { - result += text.substring(start, this.pos); - this.error(diagnostics_1.DiagnosticCode.Unterminated_string_literal, this.range(start - 1, this.pos)); - break; - } - ++this.pos; - } - return result; - }; - Tokenizer.prototype.readEscapeSequence = function () { - var end = this.end; - if (++this.pos >= end) { - this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(end)); - return ""; - } - var text = this.source.text; - var c = text.charCodeAt(this.pos++); - switch (c) { - case 48 /* _0 */: return "\0"; - case 98 /* b */: return "\b"; - case 116 /* t */: return "\t"; - case 110 /* n */: return "\n"; - case 118 /* v */: return "\v"; - case 102 /* f */: return "\f"; - case 114 /* r */: return "\r"; - case 39 /* SINGLEQUOTE */: return "'"; - case 34 /* DOUBLEQUOTE */: return "\""; - case 117 /* u */: { - if (this.pos < end && - text.charCodeAt(this.pos) == 123 /* OPENBRACE */) { - ++this.pos; - return this.readExtendedUnicodeEscape(); // \u{DDDDDDDD} - } - return this.readUnicodeEscape(); // \uDDDD - } - case 13 /* CARRIAGERETURN */: { - if (this.pos < end && - text.charCodeAt(this.pos) == 10 /* LINEFEED */) { - ++this.pos; - } - // fall through - } - case 10 /* LINEFEED */: - case 8232 /* LINESEPARATOR */: - case 8233 /* PARAGRAPHSEPARATOR */: return ""; - default: return String.fromCharCode(c); - } - }; - Tokenizer.prototype.readRegexpPattern = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - var escaped = false; - while (true) { - if (this.pos >= end) { - this.error(diagnostics_1.DiagnosticCode.Unterminated_regular_expression_literal, this.range(start, end)); - break; - } - if (text.charCodeAt(this.pos) == 92 /* BACKSLASH */) { - ++this.pos; - escaped = true; - continue; - } - var c = text.charCodeAt(this.pos); - if (!escaped && c == 47 /* SLASH */) - break; - if (util_1.isLineBreak(c)) { - this.error(diagnostics_1.DiagnosticCode.Unterminated_regular_expression_literal, this.range(start, this.pos)); - break; - } - ++this.pos; - escaped = false; - } - return text.substring(start, this.pos); - }; - Tokenizer.prototype.readRegexpFlags = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - var flags = 0; - while (this.pos < end) { - var c = text.charCodeAt(this.pos); - if (!util_1.isIdentifierPart(c)) - break; - ++this.pos; - // make sure each supported flag is unique - switch (c) { - case 103 /* g */: { - flags |= flags & 1 ? -1 : 1; - break; - } - case 105 /* i */: { - flags |= flags & 2 ? -1 : 2; - break; - } - case 109 /* m */: { - flags |= flags & 4 ? -1 : 4; - break; - } - default: { - flags = -1; - break; - } - } - } - if (flags == -1) { - this.error(diagnostics_1.DiagnosticCode.Invalid_regular_expression_flags, this.range(start, this.pos)); - } - return text.substring(start, this.pos); - }; - Tokenizer.prototype.testInteger = function () { - var end = this.end; - var text = this.source.text; - if (this.pos + 1 < end && text.charCodeAt(this.pos) == 48 /* _0 */) { - switch (text.charCodeAt(this.pos + 2)) { - case 120 /* x */: - case 88 /* X */: - case 98 /* b */: - case 66 /* B */: - case 111 /* o */: - case 79 /* O */: return true; - } - } - var pos = this.pos; - while (pos < end) { - var c = text.charCodeAt(pos); - if (c == 46 /* DOT */ || c == 101 /* e */ || c == 69 /* E */) - return false; - if ((c < 48 /* _0 */ || c > 57 /* _9 */) && c != 95 /* _ */) - break; - // does not validate separator placement (this is done in readXYInteger) - pos++; - } - return true; - }; - Tokenizer.prototype.readInteger = function () { - var text = this.source.text; - if (this.pos + 2 < this.end && text.charCodeAt(this.pos) == 48 /* _0 */) { - switch (text.charCodeAt(this.pos + 1)) { - case 120 /* x */: - case 88 /* X */: { - this.pos += 2; - return this.readHexInteger(); - } - case 98 /* b */: - case 66 /* B */: { - this.pos += 2; - return this.readBinaryInteger(); - } - case 111 /* o */: - case 79 /* O */: { - this.pos += 2; - return this.readOctalInteger(); - } - } - if (util_1.isOctalDigit(text.charCodeAt(this.pos + 1))) { - var start = this.pos; - ++this.pos; - var value = this.readOctalInteger(); - this.error(diagnostics_1.DiagnosticCode.Octal_literals_are_not_allowed_in_strict_mode, this.range(start, this.pos)); - return value; - } - } - return this.readDecimalInteger(); - }; - Tokenizer.prototype.readHexInteger = function () { - var text = this.source.text; - var start = this.pos; - var value = i64_new(0); - var i64_4 = i64_new(4); - var sepEnd = start; - var end = this.end; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { - // value = (value << 4) + c - CharCode._0; - value = i64_add(i64_shl(value, i64_4), i64_new(c - 48 /* _0 */)); - } - else if (c >= 65 /* A */ && c <= 70 /* F */) { - // value = (value << 4) + 10 + c - CharCode.A; - value = i64_add(i64_shl(value, i64_4), i64_new(10 + c - 65 /* A */)); - } - else if (c >= 97 /* a */ && c <= 102 /* f */) { - // value = (value << 4) + 10 + c - CharCode.a; - value = i64_add(i64_shl(value, i64_4), i64_new(10 + c - 97 /* a */)); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - this.pos = pos + 1; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Hexadecimal_digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readDecimalInteger = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - var value = i64_new(0); - var i64_10 = i64_new(10); - var sepEnd = start; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { - // value = value * 10 + c - CharCode._0; - value = i64_add(i64_mul(value, i64_10), i64_new(c - 48 /* _0 */)); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - this.pos = pos + 1; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readOctalInteger = function () { - var text = this.source.text; - var start = this.pos; - var value = i64_new(0); - var i64_3 = i64_new(3); - var sepEnd = start; - var end = this.end; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c >= 48 /* _0 */ && c <= 55 /* _7 */) { - // value = (value << 3) + c - CharCode._0; - value = i64_add(i64_shl(value, i64_3), i64_new(c - 48 /* _0 */)); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - ++this.pos; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Octal_digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readBinaryInteger = function () { - var text = this.source.text; - var start = this.pos; - var value = i64_new(0); - var i64_1 = i64_new(1); - var sepEnd = start; - var end = this.end; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c == 48 /* _0 */) { - // value = (value << 1); - value = i64_shl(value, i64_1); - } - else if (c == 49 /* _1 */) { - // value = (value << 1) + 1; - value = i64_add(i64_shl(value, i64_1), i64_1); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - this.pos = pos + 1; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Binary_digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readFloat = function () { - // var text = this.source.text; - // if (text.charCodeAt(this.pos) == CharCode._0 && this.pos + 2 < this.end) { - // switch (text.charCodeAt(this.pos + 1)) { - // case CharCode.X: - // case CharCode.x: { - // this.pos += 2; - // return this.readHexFloat(); - // } - // } - // } - return this.readDecimalFloat(); - }; - Tokenizer.prototype.readDecimalFloat = function () { - // TODO: numeric separators (parseFloat can't handle these) - var start = this.pos; - var end = this.end; - var text = this.source.text; - while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { - ++this.pos; - } - if (this.pos < end && text.charCodeAt(this.pos) == 46 /* DOT */) { - ++this.pos; - while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { - ++this.pos; - } - } - if (this.pos < end) { - var c = text.charCodeAt(this.pos); - if (c == 101 /* e */ || c == 69 /* E */) { - if (++this.pos < end && - (c = text.charCodeAt(this.pos)) == 45 /* MINUS */ || c == 43 /* PLUS */ && - util_1.isDecimalDigit(text.charCodeAt(this.pos + 1))) { - ++this.pos; - } - while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { - ++this.pos; - } - } - } - return parseFloat(text.substring(start, this.pos)); - }; - Tokenizer.prototype.readHexFloat = function () { - throw new Error("not implemented"); // TBD - }; - Tokenizer.prototype.readUnicodeEscape = function () { - var remain = 4; - var value = 0; - var end = this.end; - var text = this.source.text; - while (this.pos < end) { - var c = text.charCodeAt(this.pos++); - if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { - value = (value << 4) + c - 48 /* _0 */; - } - else if (c >= 65 /* A */ && c <= 70 /* F */) { - value = (value << 4) + c + (10 - 65 /* A */); - } - else if (c >= 97 /* a */ && c <= 102 /* f */) { - value = (value << 4) + c + (10 - 97 /* a */); - } - else { - this.error(diagnostics_1.DiagnosticCode.Hexadecimal_digit_expected, this.range(this.pos - 1, this.pos)); - return ""; - } - if (--remain == 0) - break; - } - if (remain) { - this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(this.pos)); - return ""; - } - return String.fromCharCode(value); - }; - Tokenizer.prototype.readExtendedUnicodeEscape = function () { - var start = this.pos; - var value = this.readHexInteger(); - var value32 = i64_low(value); - var invalid = false; - assert(!i64_high(value)); - if (value32 > 0x10FFFF) { - this.error(diagnostics_1.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive, this.range(start, this.pos)); - invalid = true; - } - var end = this.end; - var text = this.source.text; - if (this.pos >= end) { - this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(start, end)); - invalid = true; - } - else if (text.charCodeAt(this.pos) == 125 /* CLOSEBRACE */) { - ++this.pos; - } - else { - this.error(diagnostics_1.DiagnosticCode.Unterminated_Unicode_escape_sequence, this.range(start, this.pos)); - invalid = true; - } - if (invalid) - return ""; - return value32 < 65536 - ? String.fromCharCode(value32) - : String.fromCharCode(((value32 - 65536) >>> 10) + 0xD800, ((value32 - 65536) & 1023) + 0xDC00); - }; - Tokenizer.prototype.finish = function () { - }; - return Tokenizer; -}(diagnostics_1.DiagnosticEmitter)); -exports.Tokenizer = Tokenizer; -/** Tokenizer state as returned by {@link Tokenizer#mark} and consumed by {@link Tokenizer#reset}. */ -var State = /** @class */ (function () { - function State() { - } - return State; -}()); -exports.State = State; -// Reusable state object to reduce allocations -var reusableState = null; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rva2VuaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRyxDQUFBLEtBQUs7Ozs7Ozs7Ozs7Ozs7OztBQUVSLDZDQUl1QjtBQUV2Qiw2QkFHZTtBQUVmLCtCQVNnQjtBQUVoQix5QkFBeUI7QUFDekIsSUFBWSxLQXNJWDtBQXRJRCxXQUFZLEtBQUs7SUFFZixXQUFXO0lBQ1gsb0ZBQW9GO0lBRXBGLHlDQUFRLENBQUE7SUFDUiw2QkFBRSxDQUFBO0lBQ0YsbUNBQUssQ0FBQTtJQUNMLG1DQUFLLENBQUE7SUFDTCxtQ0FBSyxDQUFBO0lBQ0wsaUNBQUksQ0FBQTtJQUNKLG1DQUFLLENBQUE7SUFDTCxtQ0FBSyxDQUFBO0lBQ0wsbUNBQUssQ0FBQTtJQUNMLHlDQUFRLENBQUE7SUFDUixnREFBVyxDQUFBO0lBQ1gsMENBQVEsQ0FBQTtJQUNSLHdDQUFPLENBQUE7SUFDUCx3Q0FBTyxDQUFBO0lBQ1Asc0NBQU0sQ0FBQTtJQUNOLDhCQUFFLENBQUE7SUFDRixrQ0FBSSxDQUFBO0lBQ0osa0NBQUksQ0FBQTtJQUNKLHNDQUFNLENBQUE7SUFDTix3Q0FBTyxDQUFBO0lBQ1Asb0NBQUssQ0FBQTtJQUNMLHdDQUFPLENBQUE7SUFDUCxnQ0FBRyxDQUFBO0lBQ0gsa0NBQUksQ0FBQTtJQUNKLDBDQUFRLENBQUE7SUFDUixnQ0FBRyxDQUFBO0lBQ0gsOEJBQUUsQ0FBQTtJQUNGLDhDQUFVLENBQUE7SUFDVixzQ0FBTSxDQUFBO0lBQ04sOEJBQUUsQ0FBQTtJQUNGLDhDQUFVLENBQUE7SUFDViw0Q0FBUyxDQUFBO0lBQ1QsOEJBQUUsQ0FBQTtJQUNGLG9DQUFLLENBQUE7SUFDTCxnQ0FBRyxDQUFBO0lBQ0gsc0NBQU0sQ0FBQTtJQUNOLDRDQUFTLENBQUE7SUFDVCxnQ0FBRyxDQUFBO0lBQ0gsa0NBQUksQ0FBQTtJQUNKLDhCQUFFLENBQUE7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QUM7SUFBRCxZQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7QUFQWSxzQkFBSztBQVNsQiw4Q0FBOEM7QUFDOUMsSUFBSSxhQUFhLEdBQWlCLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBUeXBlU2NyaXB0IHRva2VuaXplciBtb2RpZmllZCBmb3IgQXNzZW1ibHlTY3JpcHQuXG4gKlxuICogU2tpcHMgb3ZlciB0cml2aWEgYW5kIHByb3ZpZGVzIGEgZ2VuZXJhbCBtYXJrL3Jlc2V0IG1lY2hhbmlzbSBmb3IgdGhlIHBhcnNlciB0byB1dGlsaXplIG9uXG4gKiBhbWJpZ3VvdXMgdG9rZW5zLlxuICpcbiAqIEBtb2R1bGUgdG9rZW5pemVyXG4gKi8vKioqL1xuXG5pbXBvcnQge1xuICBEaWFnbm9zdGljQ29kZSxcbiAgRGlhZ25vc3RpY01lc3NhZ2UsXG4gIERpYWdub3N0aWNFbWl0dGVyXG59IGZyb20gXCIuL2RpYWdub3N0aWNzXCI7XG5cbmltcG9ydCB7XG4gIFNvdXJjZSxcbiAgQ29tbWVudEtpbmRcbn0gZnJvbSBcIi4vYXN0XCI7XG5cbmltcG9ydCB7XG4gIENoYXJDb2RlLFxuICBpc0xpbmVCcmVhayxcbiAgaXNXaGl0ZVNwYWNlLFxuICBpc0lkZW50aWZpZXJTdGFydCxcbiAgaXNJZGVudGlmaWVyUGFydCxcbiAgaXNEZWNpbWFsRGlnaXQsXG4gIGlzT2N0YWxEaWdpdCxcbiAgaXNLZXl3b3JkQ2hhcmFjdGVyXG59IGZyb20gXCIuL3V0aWxcIjtcblxuLyoqIE5hbWVkIHRva2VuIHR5cGVzLiAqL1xuZXhwb3J0IGVudW0gVG9rZW4ge1xuXG4gIC8vIGtleXdvcmRzXG4gIC8vIGRpc2NhcmRlZDogQU5ZLCBCT09MRUFOLCBORVZFUiwgTlVNQkVSLCBTVFJJTkcsIFNZTUJPTCwgVU5ERUZJTkVELCBMRVNTVEhBTl9TTEFTSFxuXG4gIEFCU1RSQUNULFxuICBBUyxcbiAgQVNZTkMsXG4gIEFXQUlULCAgICAgICAgLy8gRVMyMDE3XG4gIEJSRUFLLCAgICAgICAgLy8gRVMyMDE3XG4gIENBU0UsICAgICAgICAgLy8gRVMyMDE3XG4gIENBVENILCAgICAgICAgLy8gRVMyMDE3XG4gIENMQVNTLCAgICAgICAgLy8gRVMyMDE3XG4gIENPTlNULCAgICAgICAgLy8gRVMyMDE3XG4gIENPTlRJTlVFLCAgICAgLy8gRVMyMDE3XG4gIENPTlNUUlVDVE9SLFxuICBERUJVR0dFUiwgICAgIC8vIEVTMjAxN1xuICBERUNMQVJFLFxuICBERUZBVUxULCAgICAgIC8vIEVTMjAxN1xuICBERUxFVEUsICAgICAgIC8vIEVTMjAxN1xuICBETywgICAgICAgICAgIC8vIEVTMjAxN1xuICBFTFNFLCAgICAgICAgIC8vIEVTMjAxN1xuICBFTlVNLCAgICAgICAgIC8vIEVTMjAxNyBmdXR1cmVcbiAgRVhQT1JULCAgICAgICAvLyBFUzIwMTdcbiAgRVhURU5EUywgICAgICAvLyBFUzIwMTdcbiAgRkFMU0UsICAgICAgICAvLyBFU1xuICBGSU5BTExZLCAgICAgIC8vIEVTMjAxN1xuICBGT1IsICAgICAgICAgIC8vIEVTMjAxN1xuICBGUk9NLCAgICAgICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgRlVOQ1RJT04sICAgICAvLyBFUzIwMTdcbiAgR0VULFxuICBJRiwgICAgICAgICAgIC8vIEVTMjAxN1xuICBJTVBMRU1FTlRTLCAgIC8vIEVTMjAxNyBub24tbGV4aWNhbFxuICBJTVBPUlQsICAgICAgIC8vIEVTMjAxN1xuICBJTiwgICAgICAgICAgIC8vIEVTMjAxN1xuICBJTlNUQU5DRU9GLCAgIC8vIEVTMjAxN1xuICBJTlRFUkZBQ0UsICAgIC8vIEVTMjAxNyBub24tbGV4aWNhbFxuICBJUyxcbiAgS0VZT0YsXG4gIExFVCwgICAgICAgICAgLy8gRVMyMDE3IG5vbi1sZXhpY2FsXG4gIE1PRFVMRSwgICAgICAgLy8gQVMgcG9zc2libGUgaWRlbnRpZmllclxuICBOQU1FU1BBQ0UsICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgTkVXLCAgICAgICAgICAvLyBFUzIwMTdcbiAgTlVMTCwgICAgICAgICAvLyBFU1xuICBPRixcbiAgUEFDS0FHRSwgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFJJVkFURSwgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFJPVEVDVEVELCAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFVCTElDLCAgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUkVBRE9OTFksXG4gIFJFVFVSTiwgICAgICAgLy8gRVMyMDE3XG4gIFNFVCxcbiAgU1RBVElDLCAgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgU1VQRVIsICAgICAgICAvLyBFUzIwMTdcbiAgU1dJVENILCAgICAgICAvLyBFUzIwMTdcbiAgVEhJUywgICAgICAgICAvLyBFUzIwMTdcbiAgVEhST1csICAgICAgICAvLyBFUzIwMTdcbiAgVFJVRSwgICAgICAgICAvLyBFU1xuICBUUlksICAgICAgICAgIC8vIEVTMjAxN1xuICBUWVBFLCAgICAgICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgVFlQRU9GLCAgICAgICAvLyBFUzIwMTdcbiAgVkFSLCAgICAgICAgICAvLyBFUzIwMTdcbiAgVk9JRCwgICAgICAgICAvLyBFUzIwMTdcbiAgV0hJTEUsICAgICAgICAvLyBFUzIwMTdcbiAgV0lUSCwgICAgICAgICAvLyBFUzIwMTdcbiAgWUlFTEQsICAgICAgICAvLyBFUzIwMTdcblxuICAvLyBwdW5jdHVhdGlvblxuXG4gIE9QRU5CUkFDRSxcbiAgQ0xPU0VCUkFDRSxcbiAgT1BFTlBBUkVOLFxuICBDTE9TRVBBUkVOLFxuICBPUEVOQlJBQ0tFVCxcbiAgQ0xPU0VCUkFDS0VULFxuICBET1QsXG4gIERPVF9ET1RfRE9ULFxuICBTRU1JQ09MT04sXG4gIENPTU1BLFxuICBMRVNTVEhBTixcbiAgR1JFQVRFUlRIQU4sXG4gIExFU1NUSEFOX0VRVUFMUyxcbiAgR1JFQVRFUlRIQU5fRVFVQUxTLFxuICBFUVVBTFNfRVFVQUxTLFxuICBFWENMQU1BVElPTl9FUVVBTFMsXG4gIEVRVUFMU19FUVVBTFNfRVFVQUxTLFxuICBFWENMQU1BVElPTl9FUVVBTFNfRVFVQUxTLFxuICBFUVVBTFNfR1JFQVRFUlRIQU4sXG4gIFBMVVMsXG4gIE1JTlVTLFxuICBBU1RFUklTS19BU1RFUklTSyxcbiAgQVNURVJJU0ssXG4gIFNMQVNILFxuICBQRVJDRU5ULFxuICBQTFVTX1BMVVMsXG4gIE1JTlVTX01JTlVTLFxuICBMRVNTVEhBTl9MRVNTVEhBTixcbiAgR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU4sXG4gIEdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0dSRUFURVJUSEFOLFxuICBBTVBFUlNBTkQsXG4gIEJBUixcbiAgQ0FSRVQsXG4gIEVYQ0xBTUFUSU9OLFxuICBUSUxERSxcbiAgQU1QRVJTQU5EX0FNUEVSU0FORCxcbiAgQkFSX0JBUixcbiAgUVVFU1RJT04sXG4gIENPTE9OLFxuICBFUVVBTFMsXG4gIFBMVVNfRVFVQUxTLFxuICBNSU5VU19FUVVBTFMsXG4gIEFTVEVSSVNLX0VRVUFMUyxcbiAgQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTLFxuICBTTEFTSF9FUVVBTFMsXG4gIFBFUkNFTlRfRVFVQUxTLFxuICBMRVNTVEhBTl9MRVNTVEhBTl9FUVVBTFMsXG4gIEdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0VRVUFMUyxcbiAgR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fRVFVQUxTLFxuICBBTVBFUlNBTkRfRVFVQUxTLFxuICBCQVJfRVFVQUxTLFxuICBDQVJFVF9FUVVBTFMsXG4gIEFULFxuXG4gIC8vIGxpdGVyYWxzXG5cbiAgSURFTlRJRklFUixcbiAgU1RSSU5HTElURVJBTCxcbiAgSU5URUdFUkxJVEVSQUwsXG4gIEZMT0FUTElURVJBTCxcblxuICAvLyBtZXRhXG5cbiAgSU5WQUxJRCxcbiAgRU5ET0ZGSUxFXG59XG5cbmV4cG9ydCBlbnVtIElkZW50aWZpZXJIYW5kbGluZyB7XG4gIERFRkFVTFQsXG4gIFBSRUZFUixcbiAgQUxXQVlTXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbkZyb21LZXl3b3JkKHRleHQ6IHN0cmluZyk6IFRva2VuIHtcbiAgYXNzZXJ0KHRleHQubGVuZ3RoKTtcbiAgc3dpdGNoICh0ZXh0LmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXJDb2RlLmE6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwiYWJzdHJhY3RcIjogcmV0dXJuIFRva2VuLkFCU1RSQUNUO1xuICAgICAgICBjYXNlIFwiYXNcIjogcmV0dXJuIFRva2VuLkFTO1xuICAgICAgICBjYXNlIFwiYXN5bmNcIjogcmV0dXJuIFRva2VuLkFTWU5DO1xuICAgICAgICBjYXNlIFwiYXdhaXRcIjogcmV0dXJuIFRva2VuLkFXQUlUO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuYjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJicmVha1wiOiByZXR1cm4gVG9rZW4uQlJFQUs7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5jOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImNhc2VcIjogcmV0dXJuIFRva2VuLkNBU0U7XG4gICAgICAgIGNhc2UgXCJjYXRjaFwiOiByZXR1cm4gVG9rZW4uQ0FUQ0g7XG4gICAgICAgIGNhc2UgXCJjbGFzc1wiOiByZXR1cm4gVG9rZW4uQ0xBU1M7XG4gICAgICAgIGNhc2UgXCJjb250aW51ZVwiOiByZXR1cm4gVG9rZW4uQ09OVElOVUU7XG4gICAgICAgIGNhc2UgXCJjb25zdFwiOiByZXR1cm4gVG9rZW4uQ09OU1Q7XG4gICAgICAgIGNhc2UgXCJjb25zdHJ1Y3RvclwiOiByZXR1cm4gVG9rZW4uQ09OU1RSVUNUT1I7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5kOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImRlYnVnZ2VyXCI6IHJldHVybiBUb2tlbi5ERUJVR0dFUjtcbiAgICAgICAgY2FzZSBcImRlY2xhcmVcIjogcmV0dXJuIFRva2VuLkRFQ0xBUkU7XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0XCI6IHJldHVybiBUb2tlbi5ERUZBVUxUO1xuICAgICAgICBjYXNlIFwiZGVsZXRlXCI6IHJldHVybiBUb2tlbi5ERUxFVEU7XG4gICAgICAgIGNhc2UgXCJkb1wiOiByZXR1cm4gVG9rZW4uRE87XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5lOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImVsc2VcIjogcmV0dXJuIFRva2VuLkVMU0U7XG4gICAgICAgIGNhc2UgXCJlbnVtXCI6IHJldHVybiBUb2tlbi5FTlVNO1xuICAgICAgICBjYXNlIFwiZXhwb3J0XCI6IHJldHVybiBUb2tlbi5FWFBPUlQ7XG4gICAgICAgIGNhc2UgXCJleHRlbmRzXCI6IHJldHVybiBUb2tlbi5FWFRFTkRTO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuZjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJmYWxzZVwiOiByZXR1cm4gVG9rZW4uRkFMU0U7XG4gICAgICAgIGNhc2UgXCJmaW5hbGx5XCI6IHJldHVybiBUb2tlbi5GSU5BTExZO1xuICAgICAgICBjYXNlIFwiZm9yXCI6IHJldHVybiBUb2tlbi5GT1I7XG4gICAgICAgIGNhc2UgXCJmcm9tXCI6IHJldHVybiBUb2tlbi5GUk9NO1xuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjogcmV0dXJuIFRva2VuLkZVTkNUSU9OO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuZzoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJnZXRcIjogcmV0dXJuIFRva2VuLkdFVDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLmk6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwiaWZcIjogcmV0dXJuIFRva2VuLklGO1xuICAgICAgICBjYXNlIFwiaW1wbGVtZW50c1wiOiByZXR1cm4gVG9rZW4uSU1QTEVNRU5UUztcbiAgICAgICAgY2FzZSBcImltcG9ydFwiOiByZXR1cm4gVG9rZW4uSU1QT1JUO1xuICAgICAgICBjYXNlIFwiaW5cIjogcmV0dXJuIFRva2VuLklOO1xuICAgICAgICBjYXNlIFwiaW5zdGFuY2VvZlwiOiByZXR1cm4gVG9rZW4uSU5TVEFOQ0VPRjtcbiAgICAgICAgY2FzZSBcImludGVyZmFjZVwiOiByZXR1cm4gVG9rZW4uSU5URVJGQUNFO1xuICAgICAgICBjYXNlIFwiaXNcIjogcmV0dXJuIFRva2VuLklTO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuazoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJrZXlvZlwiOiByZXR1cm4gVG9rZW4uS0VZT0Y7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5sOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImxldFwiOiByZXR1cm4gVG9rZW4uTEVUO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUubToge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJtb2R1bGVcIjogcmV0dXJuIFRva2VuLk1PRFVMRTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLm46IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwibmFtZXNwYWNlXCI6IHJldHVybiBUb2tlbi5OQU1FU1BBQ0U7XG4gICAgICAgIGNhc2UgXCJuZXdcIjogcmV0dXJuIFRva2VuLk5FVztcbiAgICAgICAgY2FzZSBcIm51bGxcIjogcmV0dXJuIFRva2VuLk5VTEw7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5vOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcIm9mXCI6IHJldHVybiBUb2tlbi5PRjtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLnA6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwicGFja2FnZVwiOiByZXR1cm4gVG9rZW4uUEFDS0FHRTtcbiAgICAgICAgY2FzZSBcInByaXZhdGVcIjogcmV0dXJuIFRva2VuLlBSSVZBVEU7XG4gICAgICAgIGNhc2UgXCJwcm90ZWN0ZWRcIjogcmV0dXJuIFRva2VuLlBST1RFQ1RFRDtcbiAgICAgICAgY2FzZSBcInB1YmxpY1wiOiByZXR1cm4gVG9rZW4uUFVCTElDO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUucjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJyZWFkb25seVwiOiByZXR1cm4gVG9rZW4uUkVBRE9OTFk7XG4gICAgICAgIGNhc2UgXCJyZXR1cm5cIjogcmV0dXJuIFRva2VuLlJFVFVSTjtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLnM6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwic2V0XCI6IHJldHVybiBUb2tlbi5TRVQ7XG4gICAgICAgIGNhc2UgXCJzdGF0aWNcIjogcmV0dXJuIFRva2VuLlNUQVRJQztcbiAgICAgICAgY2FzZSBcInN1cGVyXCI6IHJldHVybiBUb2tlbi5TVVBFUjtcbiAgICAgICAgY2FzZSBcInN3aXRjaFwiOiByZXR1cm4gVG9rZW4uU1dJVENIO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUudDoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJ0aGlzXCI6IHJldHVybiBUb2tlbi5USElTO1xuICAgICAgICBjYXNlIFwidGhyb3dcIjogcmV0dXJuIFRva2VuLlRIUk9XO1xuICAgICAgICBjYXNlIFwidHJ1ZVwiOiByZXR1cm4gVG9rZW4uVFJVRTtcbiAgICAgICAgY2FzZSBcInRyeVwiOiByZXR1cm4gVG9rZW4uVFJZO1xuICAgICAgICBjYXNlIFwidHlwZVwiOiByZXR1cm4gVG9rZW4uVFlQRTtcbiAgICAgICAgY2FzZSBcInR5cGVvZlwiOiByZXR1cm4gVG9rZW4uVFlQRU9GO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUudjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJ2YXJcIjogcmV0dXJuIFRva2VuLlZBUjtcbiAgICAgICAgY2FzZSBcInZvaWRcIjogcmV0dXJuIFRva2VuLlZPSUQ7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS53OiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcIndoaWxlXCI6IHJldHVybiBUb2tlbi5XSElMRTtcbiAgICAgICAgY2FzZSBcIndpdGhcIjogcmV0dXJuIFRva2VuLldJVEg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS55OiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcInlpZWxkXCI6IHJldHVybiBUb2tlbi5ZSUVMRDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVG9rZW4uSU5WQUxJRDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRva2VuSXNBbHNvSWRlbnRpZmllcih0b2tlbjogVG9rZW4pOiBib29sIHtcbiAgc3dpdGNoICh0b2tlbikge1xuICAgIGNhc2UgVG9rZW4uQUJTVFJBQ1Q6XG4gICAgY2FzZSBUb2tlbi5BUzpcbiAgICBjYXNlIFRva2VuLkNPTlNUUlVDVE9SOlxuICAgIGNhc2UgVG9rZW4uREVDTEFSRTpcbiAgICBjYXNlIFRva2VuLkRFTEVURTpcbiAgICBjYXNlIFRva2VuLkZST006XG4gICAgY2FzZSBUb2tlbi5GT1I6XG4gICAgY2FzZSBUb2tlbi5HRVQ6XG4gICAgY2FzZSBUb2tlbi5JTlNUQU5DRU9GOlxuICAgIGNhc2UgVG9rZW4uSVM6XG4gICAgY2FzZSBUb2tlbi5LRVlPRjpcbiAgICBjYXNlIFRva2VuLk1PRFVMRTpcbiAgICBjYXNlIFRva2VuLk5BTUVTUEFDRTpcbiAgICBjYXNlIFRva2VuLk5VTEw6XG4gICAgY2FzZSBUb2tlbi5SRUFET05MWTpcbiAgICBjYXNlIFRva2VuLlNFVDpcbiAgICBjYXNlIFRva2VuLlRZUEU6XG4gICAgY2FzZSBUb2tlbi5WT0lEOiByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSWxsZWdhbFZhcmlhYmxlSWRlbnRpZmllcihuYW1lOiBzdHJpbmcpOiBib29sIHtcbiAgYXNzZXJ0KG5hbWUubGVuZ3RoKTtcbiAgc3dpdGNoIChuYW1lLmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXJDb2RlLmQ6IHJldHVybiBuYW1lID09IFwiZGVsZXRlXCI7XG4gICAgY2FzZSBDaGFyQ29kZS5mOiByZXR1cm4gbmFtZSA9PSBcImZvclwiO1xuICAgIGNhc2UgQ2hhckNvZGUuaTogcmV0dXJuIG5hbWUgPT0gXCJpbnN0YW5jZW9mXCI7XG4gICAgY2FzZSBDaGFyQ29kZS5uOiByZXR1cm4gbmFtZSA9PSBcIm51bGxcIjtcbiAgICBjYXNlIENoYXJDb2RlLnY6IHJldHVybiBuYW1lID09IFwidm9pZFwiO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZXJhdG9yVG9rZW5Ub1N0cmluZyh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgY2FzZSBUb2tlbi5ERUxFVEU6IHJldHVybiBcImRlbGV0ZVwiO1xuICAgIGNhc2UgVG9rZW4uSU46IHJldHVybiBcImluXCI7XG4gICAgY2FzZSBUb2tlbi5JTlNUQU5DRU9GOiByZXR1cm4gXCJpbnN0YW5jZW9mXCI7XG4gICAgY2FzZSBUb2tlbi5ORVc6IHJldHVybiBcIm5ld1wiO1xuICAgIGNhc2UgVG9rZW4uVFlQRU9GOiByZXR1cm4gXCJ0eXBlb2ZcIjtcbiAgICBjYXNlIFRva2VuLlZPSUQ6IHJldHVybiBcInZvaWRcIjtcbiAgICBjYXNlIFRva2VuLllJRUxEOiByZXR1cm4gXCJ5aWVsZFwiO1xuICAgIGNhc2UgVG9rZW4uRE9UX0RPVF9ET1Q6IHJldHVybiBcIi4uLlwiO1xuICAgIGNhc2UgVG9rZW4uQ09NTUE6IHJldHVybiBcIixcIjtcbiAgICBjYXNlIFRva2VuLkxFU1NUSEFOOiByZXR1cm4gXCI8XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTjogcmV0dXJuIFwiPlwiO1xuICAgIGNhc2UgVG9rZW4uTEVTU1RIQU5fRVFVQUxTOiByZXR1cm4gXCI8PVwiO1xuICAgIGNhc2UgVG9rZW4uR1JFQVRFUlRIQU5fRVFVQUxTOiByZXR1cm4gXCI+PVwiO1xuICAgIGNhc2UgVG9rZW4uRVFVQUxTX0VRVUFMUzogcmV0dXJuIFwiPT1cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMUzogcmV0dXJuIFwiIT1cIjtcbiAgICBjYXNlIFRva2VuLkVRVUFMU19FUVVBTFNfRVFVQUxTOiByZXR1cm4gXCI9PT1cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMU19FUVVBTFM6IHJldHVybiBcIiE9PVwiO1xuICAgIGNhc2UgVG9rZW4uUExVUzogcmV0dXJuIFwiK1wiO1xuICAgIGNhc2UgVG9rZW4uTUlOVVM6IHJldHVybiBcIi1cIjtcbiAgICBjYXNlIFRva2VuLkFTVEVSSVNLX0FTVEVSSVNLOiByZXR1cm4gXCIqKlwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0s6IHJldHVybiBcIipcIjtcbiAgICBjYXNlIFRva2VuLlNMQVNIOiByZXR1cm4gXCIvXCI7XG4gICAgY2FzZSBUb2tlbi5QRVJDRU5UOiByZXR1cm4gXCIlXCI7XG4gICAgY2FzZSBUb2tlbi5QTFVTX1BMVVM6IHJldHVybiBcIisrXCI7XG4gICAgY2FzZSBUb2tlbi5NSU5VU19NSU5VUzogcmV0dXJuIFwiLS1cIjtcbiAgICBjYXNlIFRva2VuLkxFU1NUSEFOX0xFU1NUSEFOOiByZXR1cm4gXCI8PFwiO1xuICAgIGNhc2UgVG9rZW4uR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU46IHJldHVybiBcIj4+XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTjogcmV0dXJuIFwiPj4+XCI7XG4gICAgY2FzZSBUb2tlbi5BTVBFUlNBTkQ6IHJldHVybiBcIiZcIjtcbiAgICBjYXNlIFRva2VuLkJBUjogcmV0dXJuIFwifFwiO1xuICAgIGNhc2UgVG9rZW4uQ0FSRVQ6IHJldHVybiBcIl5cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OOiByZXR1cm4gXCIhXCI7XG4gICAgY2FzZSBUb2tlbi5USUxERTogcmV0dXJuIFwiflwiO1xuICAgIGNhc2UgVG9rZW4uQU1QRVJTQU5EX0FNUEVSU0FORDogcmV0dXJuIFwiJiZcIjtcbiAgICBjYXNlIFRva2VuLkJBUl9CQVI6IHJldHVybiBcInx8XCI7XG4gICAgY2FzZSBUb2tlbi5FUVVBTFM6IHJldHVybiBcIj1cIjtcbiAgICBjYXNlIFRva2VuLlBMVVNfRVFVQUxTOiByZXR1cm4gXCIrPVwiO1xuICAgIGNhc2UgVG9rZW4uTUlOVVNfRVFVQUxTOiByZXR1cm4gXCItPVwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0tfRVFVQUxTOiByZXR1cm4gXCIqPVwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTOiByZXR1cm4gXCIqKj1cIjtcbiAgICBjYXNlIFRva2VuLlNMQVNIX0VRVUFMUzogcmV0dXJuIFwiLz1cIjtcbiAgICBjYXNlIFRva2VuLlBFUkNFTlRfRVFVQUxTOiByZXR1cm4gXCIlPVwiO1xuICAgIGNhc2UgVG9rZW4uTEVTU1RIQU5fTEVTU1RIQU5fRVFVQUxTOiByZXR1cm4gXCI8PD1cIjtcbiAgICBjYXNlIFRva2VuLkdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0VRVUFMUzogcmV0dXJuIFwiPj49XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9FUVVBTFM6IHJldHVybiBcIj4+Pj1cIjtcbiAgICBjYXNlIFRva2VuLkFNUEVSU0FORF9FUVVBTFM6IHJldHVybiBcIiY9XCI7XG4gICAgY2FzZSBUb2tlbi5CQVJfRVFVQUxTOiByZXR1cm4gXCJ8PVwiO1xuICAgIGNhc2UgVG9rZW4uQ0FSRVRfRVFVQUxTOiByZXR1cm4gXCJePVwiO1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGFzc2VydChmYWxzZSk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhbmdlIHtcblxuICBzb3VyY2U6IFNvdXJjZTtcbiAgc3RhcnQ6IGkzMjtcbiAgZW5kOiBpMzI7XG5cbiAgLy8gVE9ETzogc2V0IHRoZXNlIHdoaWxlIHRva2VuaXppbmdcbiAgLy8gbGluZTogaTMyO1xuICAvLyBjb2x1bW46IGkzMjtcblxuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IFNvdXJjZSwgc3RhcnQ6IGkzMiwgZW5kOiBpMzIpIHtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cblxuICBzdGF0aWMgam9pbihhOiBSYW5nZSwgYjogUmFuZ2UpOiBSYW5nZSB7XG4gICAgaWYgKGEuc291cmNlICE9IGIuc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoXCJzb3VyY2UgbWlzbWF0Y2hcIik7XG4gICAgcmV0dXJuIG5ldyBSYW5nZShhLnNvdXJjZSxcbiAgICAgIGEuc3RhcnQgPCBiLnN0YXJ0ID8gYS5zdGFydCA6IGIuc3RhcnQsXG4gICAgICBhLmVuZCA+IGIuZW5kID8gYS5lbmQgOiBiLmVuZFxuICAgICk7XG4gIH1cblxuICBnZXQgYXRTdGFydCgpOiBSYW5nZSB7XG4gICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnNvdXJjZSwgdGhpcy5zdGFydCwgdGhpcy5zdGFydCk7XG4gIH1cblxuICBnZXQgYXRFbmQoKTogUmFuZ2Uge1xuICAgIHJldHVybiBuZXcgUmFuZ2UodGhpcy5zb3VyY2UsIHRoaXMuZW5kLCB0aGlzLmVuZCk7XG4gIH1cblxuICBnZXQgbGluZSgpOiBpMzIge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgbGluZSA9IDE7XG4gICAgZm9yIChsZXQgcG9zID0gdGhpcy5zdGFydDsgcG9zID49IDA7IC0tcG9zKSB7XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KHBvcykgPT0gQ2hhckNvZGUuTElORUZFRUQpIGxpbmUrKztcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH1cblxuICBnZXQgY29sdW1uKCk6IGkzMiB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBjb2x1bW4gPSAwO1xuICAgIGZvciAobGV0IHBvcyA9IHRoaXMuc3RhcnQgLSAxOyBwb3MgPj0gMDsgLS1wb3MpIHtcbiAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQocG9zKSA9PSBDaGFyQ29kZS5MSU5FRkVFRCkgYnJlYWs7XG4gICAgICArK2NvbHVtbjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbHVtbjtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLnRleHQuc3Vic3RyaW5nKHRoaXMuc3RhcnQsIHRoaXMuZW5kKTtcbiAgfVxuXG4gIGRlYnVnSW5mb1JlZjogdXNpemUgPSAwO1xufVxuXG5kZWNsYXJlIGZ1bmN0aW9uIHBhcnNlRmxvYXQoc3RyOiBzdHJpbmcpOiBmNjQ7XG5cbi8qKiBIYW5kbGVyIGZvciBpbnRlcmNlcHRpbmcgY29tbWVudHMgd2hpbGUgdG9rZW5pemluZy4gKi9cbmV4cG9ydCB0eXBlIENvbW1lbnRIYW5kbGVyID0gKGtpbmQ6IENvbW1lbnRLaW5kLCB0ZXh0OiBzdHJpbmcsIHJhbmdlOiBSYW5nZSkgPT4gdm9pZDtcblxuLyoqIFRva2VuaXplcyBhIHNvdXJjZSB0byBpbmRpdmlkdWFsIHtAbGluayBUb2tlbn1zLiAqL1xuZXhwb3J0IGNsYXNzIFRva2VuaXplciBleHRlbmRzIERpYWdub3N0aWNFbWl0dGVyIHtcblxuICBzb3VyY2U6IFNvdXJjZTtcbiAgZW5kOiBpMzIgPSAwO1xuXG4gIHBvczogaTMyID0gMDtcbiAgdG9rZW46IFRva2VuID0gLTE7XG4gIHRva2VuUG9zOiBpMzIgPSAwO1xuXG4gIG5leHRUb2tlbjogVG9rZW4gPSAtMTtcbiAgbmV4dFRva2VuUG9zOiBpMzIgPSAwO1xuICBuZXh0VG9rZW5Pbk5ld0xpbmU6IGJvb2wgPSBmYWxzZTtcblxuICBvbkNvbW1lbnQ6IENvbW1lbnRIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIENvbnN0cnVjdHMgYSBuZXcgdG9rZW5pemVyLiAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IFNvdXJjZSwgZGlhZ25vc3RpY3M6IERpYWdub3N0aWNNZXNzYWdlW10gfCBudWxsID0gbnVsbCkge1xuICAgIHN1cGVyKGRpYWdub3N0aWNzKTtcblxuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgIHRoaXMucG9zID0gMDtcbiAgICB0aGlzLmVuZCA9IHNvdXJjZS50ZXh0Lmxlbmd0aDtcbiAgICB0aGlzLmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3MgfHwgbmV3IEFycmF5KCk7XG5cbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHRleHQgPSBzb3VyY2UudGV4dDtcblxuICAgIC8vIHNraXAgYm9tXG4gICAgaWYgKFxuICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuQllURU9SREVSTUFSS1xuICAgICkge1xuICAgICAgKyt0aGlzLnBvcztcbiAgICB9XG5cbiAgICAvLyBza2lwIHNoZWJhbmdcbiAgICBpZiAoXG4gICAgICB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuSEFTSCAmJlxuICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkgPT0gQ2hhckNvZGUuRVhDTEFNQVRJT05cbiAgICApIHtcbiAgICAgIHRoaXMucG9zICs9IDI7XG4gICAgICB3aGlsZSAoXG4gICAgICAgIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgIT0gQ2hhckNvZGUuTElORUZFRURcbiAgICAgICkge1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgfVxuICAgICAgLy8gJ25leHQnIG5vdyBzdGFydHMgYXQgbGYgb3IgZW9mXG4gICAgfVxuICB9XG5cbiAgbmV4dChpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxUKTogVG9rZW4ge1xuICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4gPSB0aGlzLnVuc2FmZU5leHQoaWRlbnRpZmllckhhbmRsaW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zYWZlTmV4dChcbiAgICBpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxULFxuICAgIG1heFRva2VuTGVuZ3RoOiBpMzIgPSBpMzIuTUFYX1ZBTFVFXG4gICk6IFRva2VuIHtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHdoaWxlICh0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgdGhpcy50b2tlblBvcyA9IHRoaXMucG9zO1xuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSUklBR0VSRVRVUk46IHtcbiAgICAgICAgICBpZiAoIShcbiAgICAgICAgICAgICsrdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuTElORUZFRURcbiAgICAgICAgICApKSBicmVhaztcbiAgICAgICAgICAvLyBvdGhlcndpc2UgZmFsbC10aHJvdWdoXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5UQUI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuVkVSVElDQUxUQUI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU1BBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRVhDTEFNQVRJT046IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMiAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkVRVUFMU1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5FWENMQU1BVElPTl9FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMUztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkVYQ0xBTUFUSU9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRE9VQkxFUVVPVEU6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU0lOR0xFUVVPVEU6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQkFDS1RJQ0s6IHsgLy8gVE9ET1xuICAgICAgICAgIHJldHVybiBUb2tlbi5TVFJJTkdMSVRFUkFMOyAvLyBleHBlY3RzIGEgY2FsbCB0byByZWFkU3RyaW5nXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5QRVJDRU5UOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuRVFVQUxTXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgcmV0dXJuIFRva2VuLlBFUkNFTlRfRVFVQUxTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uUEVSQ0VOVDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkFNUEVSU0FORDoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQU1QRVJTQU5EX0FNUEVSU0FORDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5BTVBFUlNBTkRfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uQU1QRVJTQU5EO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuT1BFTlBBUkVOOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uT1BFTlBBUkVOO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0xPU0VQQVJFTjoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNMT1NFUEFSRU47XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5BU1RFUklTSzoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQVNURVJJU0tfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5BU1RFUklTSykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4VG9rZW5MZW5ndGggPiAyICYmIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5BU1RFUklTS19BU1RFUklTSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkFTVEVSSVNLO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuUExVUzoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLlBMVVMpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLlBMVVNfUExVUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5QTFVTX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLlBMVVM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DT01NQToge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNPTU1BO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTUlOVVM6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5NSU5VUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVNfTUlOVVM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5ET1Q6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KGNocikpIHtcbiAgICAgICAgICAgICAgLS10aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkZMT0FUTElURVJBTDsgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEZsb2F0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMiAmJiB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgICAgICAgICAgY2hyID09IENoYXJDb2RlLkRPVCAmJlxuICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MgKyAxKSA9PSBDaGFyQ29kZS5ET1RcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uRE9UX0RPVF9ET1Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBUb2tlbi5ET1Q7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5TTEFTSDoge1xuICAgICAgICAgIGxldCBjb21tZW50U3RhcnRQb3MgPSB0aGlzLnBvcztcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5TTEFTSCkgeyAvLyBzaW5nbGUtbGluZVxuICAgICAgICAgICAgICBsZXQgY29tbWVudEtpbmQgPSBDb21tZW50S2luZC5MSU5FO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgKyAxIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkgPT0gQ2hhckNvZGUuU0xBU0hcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICBjb21tZW50S2luZCA9IENvbW1lbnRLaW5kLlRSSVBMRTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aGlsZSAoKyt0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkxJTkVGRUVEKSB7XG4gICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9uQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Db21tZW50KFxuICAgICAgICAgICAgICAgICAgY29tbWVudEtpbmQsXG4gICAgICAgICAgICAgICAgICB0ZXh0LnN1YnN0cmluZyhjb21tZW50U3RhcnRQb3MsIHRoaXMucG9zKSxcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UoY29tbWVudFN0YXJ0UG9zLCB0aGlzLnBvcylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5BU1RFUklTSykgeyAvLyBtdWx0aS1saW5lXG4gICAgICAgICAgICAgIGxldCBjbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgd2hpbGUgKCsrdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgICAgICBjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBjID09IENoYXJDb2RlLkFTVEVSSVNLICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpID09IENoYXJDb2RlLlNMQVNIXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIWNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBEaWFnbm9zdGljQ29kZS5fMF9leHBlY3RlZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UodGhpcy5wb3MpLCBcIiovXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub25Db21tZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbW1lbnQoXG4gICAgICAgICAgICAgICAgICBDb21tZW50S2luZC5CTE9DSyxcbiAgICAgICAgICAgICAgICAgIHRleHQuc3Vic3RyaW5nKGNvbW1lbnRTdGFydFBvcywgdGhpcy5wb3MpLFxuICAgICAgICAgICAgICAgICAgdGhpcy5yYW5nZShjb21tZW50U3RhcnRQb3MsIHRoaXMucG9zKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uU0xBU0hfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uU0xBU0g7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMTpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNTpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fODpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fOToge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRlc3RJbnRlZ2VyKClcbiAgICAgICAgICAgID8gVG9rZW4uSU5URUdFUkxJVEVSQUwgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEludGVnZXJcbiAgICAgICAgICAgIDogVG9rZW4uRkxPQVRMSVRFUkFMOyAgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEZsb2F0XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DT0xPTjoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNPTE9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU0VNSUNPTE9OOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uU0VNSUNPTE9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTEVTU1RIQU46IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5MRVNTVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4VG9rZW5MZW5ndGggPiAyICYmXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkVRVUFMU1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgIHJldHVybiBUb2tlbi5MRVNTVEhBTl9MRVNTVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOX0xFU1NUSEFOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5FUVVBTFMpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRVFVQUxTOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICBpZiAobWF4VG9rZW5MZW5ndGggPiAxICYmIHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICAgICAgICBsZXQgY2hyID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDIgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuRVFVQUxTXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkVRVUFMU19FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5HUkVBVEVSVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uRVFVQUxTX0dSRUFURVJUSEFOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uRVFVQUxTO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuR1JFQVRFUlRIQU46IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5HUkVBVEVSVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAobWF4VG9rZW5MZW5ndGggPiAyICYmIHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICAgICAgICAgICAgY2hyID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkdSRUFURVJUSEFOKSB7XG4gICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDMgJiYgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fRVFVQUxTO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0dSRUFURVJUSEFOO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLlFVRVNUSU9OOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uUVVFU1RJT047XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5PUEVOQlJBQ0tFVDoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLk9QRU5CUkFDS0VUO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0xPU0VCUkFDS0VUOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uQ0xPU0VCUkFDS0VUO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSRVQ6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICByZXR1cm4gVG9rZW4uQ0FSRVRfRVFVQUxTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uQ0FSRVQ7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5PUEVOQlJBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5PUEVOQlJBQ0U7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQVI6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5CQVIpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkJBUl9CQVI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQkFSX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkJBUjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkNMT1NFQlJBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5DTE9TRUJSQUNFO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuVElMREU6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5USUxERTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkFUOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uQVQ7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChjKSkge1xuICAgICAgICAgICAgaWYgKGlzS2V5d29yZENoYXJhY3RlcihjKSkge1xuICAgICAgICAgICAgICBsZXQgcG9zQmVmb3JlID0gdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICAgICArK3RoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgaXNJZGVudGlmaWVyUGFydChjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0tleXdvcmRDaGFyYWN0ZXIoYykpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9zID0gcG9zQmVmb3JlO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLklERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBrZXl3b3JkVGV4dCA9IHRleHQuc3Vic3RyaW5nKHBvc0JlZm9yZSwgdGhpcy5wb3MpO1xuICAgICAgICAgICAgICBsZXQga2V5d29yZFRva2VuID0gdG9rZW5Gcm9tS2V5d29yZChrZXl3b3JkVGV4dCk7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBrZXl3b3JkVG9rZW4gIT09IFRva2VuLklOVkFMSUQgJiZcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVySGFuZGxpbmcgIT09IElkZW50aWZpZXJIYW5kbGluZy5BTFdBWVMgJiZcbiAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgaWRlbnRpZmllckhhbmRsaW5nID09PSBJZGVudGlmaWVySGFuZGxpbmcuUFJFRkVSICYmXG4gICAgICAgICAgICAgICAgICB0b2tlbklzQWxzb0lkZW50aWZpZXIoa2V5d29yZFRva2VuKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXdvcmRUb2tlbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnBvcyA9IHBvc0JlZm9yZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBUb2tlbi5JREVOVElGSUVSOyAvLyBleHBlY3RzIGEgY2FsbCB0byByZWFkSWRlbnRpZmllclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNXaGl0ZVNwYWNlKGMpKSB7XG4gICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkX2NoYXJhY3RlcixcbiAgICAgICAgICAgIHRoaXMucmFuZ2UodGhpcy5wb3MsIHRoaXMucG9zICsgMSlcbiAgICAgICAgICApO1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLklOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFRva2VuLkVORE9GRklMRTtcbiAgfVxuXG4gIHBlZWsoXG4gICAgY2hlY2tPbk5ld0xpbmU6IGJvb2wgPSBmYWxzZSxcbiAgICBpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxULFxuICAgIG1heENvbXBvdW5kTGVuZ3RoOiBpMzIgPSBpMzIuTUFYX1ZBTFVFXG4gICk6IFRva2VuIHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMubmV4dFRva2VuIDwgMCkge1xuICAgICAgbGV0IHBvc0JlZm9yZSA9IHRoaXMucG9zO1xuICAgICAgbGV0IHRva2VuQmVmb3JlID0gdGhpcy50b2tlbjtcbiAgICAgIGxldCB0b2tlblBvc0JlZm9yZSA9IHRoaXMudG9rZW5Qb3M7XG4gICAgICB0aGlzLm5leHRUb2tlbiA9IHRoaXMudW5zYWZlTmV4dChpZGVudGlmaWVySGFuZGxpbmcsIG1heENvbXBvdW5kTGVuZ3RoKTtcbiAgICAgIHRoaXMubmV4dFRva2VuUG9zID0gdGhpcy50b2tlblBvcztcbiAgICAgIGlmIChjaGVja09uTmV3TGluZSkge1xuICAgICAgICB0aGlzLm5leHRUb2tlbk9uTmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBwb3MgPSBwb3NCZWZvcmUsIGVuZCA9IHRoaXMubmV4dFRva2VuUG9zOyBwb3MgPCBlbmQ7ICsrcG9zKSB7XG4gICAgICAgICAgaWYgKGlzTGluZUJyZWFrKHRleHQuY2hhckNvZGVBdChwb3MpKSkge1xuICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW5Pbk5ld0xpbmUgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvc0JlZm9yZTtcbiAgICAgIHRoaXMudG9rZW4gPSB0b2tlbkJlZm9yZTtcbiAgICAgIHRoaXMudG9rZW5Qb3MgPSB0b2tlblBvc0JlZm9yZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmV4dFRva2VuO1xuICB9XG5cbiAgc2tpcElkZW50aWZpZXIoaWRlbnRpZmllckhhbmRsaW5nOiBJZGVudGlmaWVySGFuZGxpbmcgPSBJZGVudGlmaWVySGFuZGxpbmcuUFJFRkVSKTogYm9vbCB7XG4gICAgcmV0dXJuIHRoaXMuc2tpcChUb2tlbi5JREVOVElGSUVSLCBpZGVudGlmaWVySGFuZGxpbmcpO1xuICB9XG5cbiAgc2tpcCh0b2tlbjogVG9rZW4sIGlkZW50aWZpZXJIYW5kbGluZzogSWRlbnRpZmllckhhbmRsaW5nID0gSWRlbnRpZmllckhhbmRsaW5nLkRFRkFVTFQpOiBib29sIHtcbiAgICB2YXIgcG9zQmVmb3JlID0gdGhpcy5wb3M7XG4gICAgdmFyIHRva2VuQmVmb3JlID0gdGhpcy50b2tlbjtcbiAgICB2YXIgdG9rZW5Qb3NCZWZvcmUgPSB0aGlzLnRva2VuUG9zO1xuICAgIHZhciBtYXhDb21wb3VuZExlbmd0aCA9IGkzMi5NQVhfVkFMVUU7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTjogeyAvLyB3aGVyZSBwYXJzaW5nIHR5cGUgYXJndW1lbnRzXG4gICAgICAgIG1heENvbXBvdW5kTGVuZ3RoID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudG9rZW4gPSB0aGlzLnVuc2FmZU5leHQoaWRlbnRpZmllckhhbmRsaW5nLCBtYXhDb21wb3VuZExlbmd0aCk7XG4gICAgaWYgKHRoaXMudG9rZW4gPT0gdG9rZW4pIHtcbiAgICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3MgPSBwb3NCZWZvcmU7XG4gICAgICB0aGlzLnRva2VuID0gdG9rZW5CZWZvcmU7XG4gICAgICB0aGlzLnRva2VuUG9zID0gdG9rZW5Qb3NCZWZvcmU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbWFyaygpOiBTdGF0ZSB7XG4gICAgdmFyIHN0YXRlOiBTdGF0ZTtcbiAgICBpZiAocmV1c2FibGVTdGF0ZSkge1xuICAgICAgc3RhdGUgPSByZXVzYWJsZVN0YXRlO1xuICAgICAgcmV1c2FibGVTdGF0ZSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlID0gbmV3IFN0YXRlKCk7XG4gICAgfVxuICAgIHN0YXRlLnBvcyA9IHRoaXMucG9zO1xuICAgIHN0YXRlLnRva2VuID0gdGhpcy50b2tlbjtcbiAgICBzdGF0ZS50b2tlblBvcyA9IHRoaXMudG9rZW5Qb3M7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgZGlzY2FyZChzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICByZXVzYWJsZVN0YXRlID0gc3RhdGU7XG4gIH1cblxuICByZXNldChzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnBvcyA9IHN0YXRlLnBvcztcbiAgICB0aGlzLnRva2VuID0gc3RhdGUudG9rZW47XG4gICAgdGhpcy50b2tlblBvcyA9IHN0YXRlLnRva2VuUG9zO1xuICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gIH1cblxuICByYW5nZShzdGFydDogaTMyID0gLTEsIGVuZDogaTMyID0gLTEpOiBSYW5nZSB7XG4gICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgc3RhcnQgPSB0aGlzLnRva2VuUG9zO1xuICAgICAgZW5kID0gdGhpcy5wb3M7XG4gICAgfSBlbHNlIGlmIChlbmQgPCAwKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnNvdXJjZSwgc3RhcnQsIGVuZCk7XG4gIH1cblxuICByZWFkSWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKFxuICAgICAgKyt0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgaXNJZGVudGlmaWVyUGFydCh0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpKVxuICAgICk7XG4gICAgcmV0dXJuIHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gIH1cblxuICByZWFkU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBxdW90ZSA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcysrKTtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmICh0aGlzLnBvcyA+PSBlbmQpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3N0cmluZ19saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQgLSAxLCBlbmQpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgaWYgKGMgPT0gcXVvdGUpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcysrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoYyA9PSBDaGFyQ29kZS5CQUNLU0xBU0gpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gICAgICAgIHJlc3VsdCArPSB0aGlzLnJlYWRFc2NhcGVTZXF1ZW5jZSgpO1xuICAgICAgICBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0xpbmVCcmVhayhjKSAmJiBxdW90ZSAhPSBDaGFyQ29kZS5CQUNLVElDSykge1xuICAgICAgICByZXN1bHQgKz0gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5VbnRlcm1pbmF0ZWRfc3RyaW5nX2xpdGVyYWwsXG4gICAgICAgICAgdGhpcy5yYW5nZShzdGFydCAtIDEsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgICsrdGhpcy5wb3M7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkRXNjYXBlU2VxdWVuY2UoKTogc3RyaW5nIHtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgaWYgKCsrdGhpcy5wb3MgPj0gZW5kKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5VbmV4cGVjdGVkX2VuZF9vZl90ZXh0LFxuICAgICAgICB0aGlzLnJhbmdlKGVuZClcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MrKyk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgICBjYXNlIENoYXJDb2RlLl8wOiByZXR1cm4gXCJcXDBcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuYjogcmV0dXJuIFwiXFxiXCI7XG4gICAgICBjYXNlIENoYXJDb2RlLnQ6IHJldHVybiBcIlxcdFwiO1xuICAgICAgY2FzZSBDaGFyQ29kZS5uOiByZXR1cm4gXCJcXG5cIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUudjogcmV0dXJuIFwiXFx2XCI7XG4gICAgICBjYXNlIENoYXJDb2RlLmY6IHJldHVybiBcIlxcZlwiO1xuICAgICAgY2FzZSBDaGFyQ29kZS5yOiByZXR1cm4gXCJcXHJcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuU0lOR0xFUVVPVEU6IHJldHVybiBcIidcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuRE9VQkxFUVVPVEU6IHJldHVybiBcIlxcXCJcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUudToge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLk9QRU5CUkFDRVxuICAgICAgICApIHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRFeHRlbmRlZFVuaWNvZGVFc2NhcGUoKTsgLy8gXFx1e0REREREREREfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRVbmljb2RlRXNjYXBlKCk7IC8vIFxcdURERERcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSUklBR0VSRVRVUk46IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5MSU5FRkVFRFxuICAgICAgICApIHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZhbGwgdGhyb3VnaFxuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICAgIGNhc2UgQ2hhckNvZGUuTElORVNFUEFSQVRPUjpcbiAgICAgIGNhc2UgQ2hhckNvZGUuUEFSQUdSQVBIU0VQQVJBVE9SOiByZXR1cm4gXCJcIjtcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRSZWdleHBQYXR0ZXJuKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgZXNjYXBlZCA9IGZhbHNlO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5wb3MgPj0gZW5kKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIGVuZClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5CQUNLU0xBU0gpIHtcbiAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgZXNjYXBlZCA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgaWYgKCFlc2NhcGVkICYmIGMgPT0gQ2hhckNvZGUuU0xBU0gpIGJyZWFrO1xuICAgICAgaWYgKGlzTGluZUJyZWFrKGMpKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgICsrdGhpcy5wb3M7XG4gICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpO1xuICB9XG5cbiAgcmVhZFJlZ2V4cEZsYWdzKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgZmxhZ3MgPSAwO1xuICAgIHdoaWxlICh0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgbGV0IGM6IGkzMiA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoYykpIGJyZWFrO1xuICAgICAgKyt0aGlzLnBvcztcblxuICAgICAgLy8gbWFrZSBzdXJlIGVhY2ggc3VwcG9ydGVkIGZsYWcgaXMgdW5pcXVlXG4gICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5nOiB7XG4gICAgICAgICAgZmxhZ3MgfD0gZmxhZ3MgJiAxID8gLTEgOiAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuaToge1xuICAgICAgICAgIGZsYWdzIHw9IGZsYWdzICYgMiA/IC0xIDogMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLm06IHtcbiAgICAgICAgICBmbGFncyB8PSBmbGFncyAmIDQgPyAtMSA6IDQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGZsYWdzID0gLTE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZsYWdzID09IC0xKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkX3JlZ3VsYXJfZXhwcmVzc2lvbl9mbGFncyxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgdGhpcy5wb3MpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgfVxuXG4gIHRlc3RJbnRlZ2VyKCk6IGJvb2wge1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMucG9zICsgMSA8IGVuZCAmJiB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLl8wKSB7XG4gICAgICBzd2l0Y2ggKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDIpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUueDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5YOlxuICAgICAgICBjYXNlIENoYXJDb2RlLmI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5vOlxuICAgICAgICBjYXNlIENoYXJDb2RlLk86IHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgcG9zID0gdGhpcy5wb3M7XG4gICAgd2hpbGUgKHBvcyA8IGVuZCkge1xuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmIChjID09IENoYXJDb2RlLkRPVCB8fCBjID09IENoYXJDb2RlLmUgfHwgYyA9PSBDaGFyQ29kZS5FKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoKGMgPCBDaGFyQ29kZS5fMCB8fCBjID4gQ2hhckNvZGUuXzkpICYmIGMgIT0gQ2hhckNvZGUuXykgYnJlYWs7XG4gICAgICAvLyBkb2VzIG5vdCB2YWxpZGF0ZSBzZXBhcmF0b3IgcGxhY2VtZW50ICh0aGlzIGlzIGRvbmUgaW4gcmVhZFhZSW50ZWdlcilcbiAgICAgIHBvcysrO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJlYWRJbnRlZ2VyKCk6IEk2NCB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIGlmICh0aGlzLnBvcyArIDIgPCB0aGlzLmVuZCAmJiB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLl8wKSB7XG4gICAgICBzd2l0Y2ggKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUueDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5YOiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkSGV4SW50ZWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuYjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5COiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkQmluYXJ5SW50ZWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUubzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5POiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkT2N0YWxJbnRlZ2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc09jdGFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpKSB7XG4gICAgICAgIGxldCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnJlYWRPY3RhbEludGVnZXIoKTtcbiAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5PY3RhbF9saXRlcmFsc19hcmVfbm90X2FsbG93ZWRfaW5fc3RyaWN0X21vZGUsXG4gICAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgdGhpcy5wb3MpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVhZERlY2ltYWxJbnRlZ2VyKCk7XG4gIH1cblxuICByZWFkSGV4SW50ZWdlcigpOiBJNjQge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgdmFsdWUgPSBpNjRfbmV3KDApO1xuICAgIHZhciBpNjRfNCA9IGk2NF9uZXcoNCk7XG4gICAgdmFyIHNlcEVuZCA9IHN0YXJ0O1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgIGxldCBwb3MgPSB0aGlzLnBvcztcbiAgICAgIGxldCBjID0gdGV4dC5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoYyA+PSBDaGFyQ29kZS5fMCAmJiBjIDw9IENoYXJDb2RlLl85KSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDQpICsgYyAtIENoYXJDb2RlLl8wO1xuICAgICAgICB2YWx1ZSA9IGk2NF9hZGQoXG4gICAgICAgICAgaTY0X3NobCh2YWx1ZSwgaTY0XzQpLFxuICAgICAgICAgIGk2NF9uZXcoYyAtIENoYXJDb2RlLl8wKVxuICAgICAgICApO1xuICAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuRikge1xuICAgICAgICAvLyB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIDEwICsgYyAtIENoYXJDb2RlLkE7XG4gICAgICAgIHZhbHVlID0gaTY0X2FkZChcbiAgICAgICAgICBpNjRfc2hsKHZhbHVlLCBpNjRfNCksXG4gICAgICAgICAgaTY0X25ldygxMCArIGMgLSBDaGFyQ29kZS5BKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID49IENoYXJDb2RlLmEgJiYgYyA8PSBDaGFyQ29kZS5mKSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDQpICsgMTAgKyBjIC0gQ2hhckNvZGUuYTtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF80KSxcbiAgICAgICAgICBpNjRfbmV3KDEwICsgYyAtIENoYXJDb2RlLmEpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGMgPT0gQ2hhckNvZGUuXykge1xuICAgICAgICBpZiAoc2VwRW5kID09IHBvcykge1xuICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICBzZXBFbmQgPT0gc3RhcnRcbiAgICAgICAgICAgICAgPyBEaWFnbm9zdGljQ29kZS5OdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmVcbiAgICAgICAgICAgICAgOiBEaWFnbm9zdGljQ29kZS5NdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQsXG4gICAgICAgICAgICB0aGlzLnJhbmdlKHBvcylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHNlcEVuZCA9IHBvcyArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMucG9zID0gcG9zICsgMTtcbiAgICB9XG4gICAgaWYgKHRoaXMucG9zID09IHN0YXJ0KSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5IZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzZXBFbmQgPT0gdGhpcy5wb3MpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxcbiAgICAgICAgdGhpcy5yYW5nZShzZXBFbmQgLSAxKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmVhZERlY2ltYWxJbnRlZ2VyKCk6IEk2NCB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdmFsdWUgPSBpNjRfbmV3KDApO1xuICAgIHZhciBpNjRfMTAgPSBpNjRfbmV3KDEwKTtcbiAgICB2YXIgc2VwRW5kID0gc3RhcnQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fOSkge1xuICAgICAgICAvLyB2YWx1ZSA9IHZhbHVlICogMTAgKyBjIC0gQ2hhckNvZGUuXzA7XG4gICAgICAgIHZhbHVlID0gaTY0X2FkZChcbiAgICAgICAgICBpNjRfbXVsKHZhbHVlLCBpNjRfMTApLFxuICAgICAgICAgIGk2NF9uZXcoYyAtIENoYXJDb2RlLl8wKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8pIHtcbiAgICAgICAgaWYgKHNlcEVuZCA9PSBwb3MpIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFxuICAgICAgICAgICAgc2VwRW5kID09IHN0YXJ0XG4gICAgICAgICAgICAgID8gRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlXG4gICAgICAgICAgICAgIDogRGlhZ25vc3RpY0NvZGUuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkLFxuICAgICAgICAgICAgdGhpcy5yYW5nZShwb3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzZXBFbmQgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvcyArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcyA9PSBzdGFydCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuRGlnaXRfZXhwZWN0ZWQsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoc2VwRW5kID09IHRoaXMucG9zKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5OdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmUsXG4gICAgICAgIHRoaXMucmFuZ2Uoc2VwRW5kIC0gMSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJlYWRPY3RhbEludGVnZXIoKTogSTY0IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gaTY0X25ldygwKTtcbiAgICB2YXIgaTY0XzMgPSBpNjRfbmV3KDMpO1xuICAgIHZhciBzZXBFbmQgPSBzdGFydDtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fNykge1xuICAgICAgICAvLyB2YWx1ZSA9ICh2YWx1ZSA8PCAzKSArIGMgLSBDaGFyQ29kZS5fMDtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF8zKSxcbiAgICAgICAgICBpNjRfbmV3KGMgLSBDaGFyQ29kZS5fMClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoYyA9PSBDaGFyQ29kZS5fKSB7XG4gICAgICAgIGlmIChzZXBFbmQgPT0gcG9zKSB7XG4gICAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICAgIHNlcEVuZCA9PSBzdGFydFxuICAgICAgICAgICAgICA/IERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZVxuICAgICAgICAgICAgICA6IERpYWdub3N0aWNDb2RlLk11bHRpcGxlX2NvbnNlY3V0aXZlX251bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X3Blcm1pdHRlZCxcbiAgICAgICAgICAgIHRoaXMucmFuZ2UocG9zKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc2VwRW5kID0gcG9zICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgKyt0aGlzLnBvcztcbiAgICB9XG4gICAgaWYgKHRoaXMucG9zID09IHN0YXJ0KSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5PY3RhbF9kaWdpdF9leHBlY3RlZCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzZXBFbmQgPT0gdGhpcy5wb3MpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxcbiAgICAgICAgdGhpcy5yYW5nZShzZXBFbmQgLSAxKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmVhZEJpbmFyeUludGVnZXIoKTogSTY0IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gaTY0X25ldygwKTtcbiAgICB2YXIgaTY0XzEgPSBpNjRfbmV3KDEpO1xuICAgIHZhciBzZXBFbmQgPSBzdGFydDtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPT0gQ2hhckNvZGUuXzApIHtcbiAgICAgICAgLy8gdmFsdWUgPSAodmFsdWUgPDwgMSk7XG4gICAgICAgIHZhbHVlID0gaTY0X3NobCh2YWx1ZSwgaTY0XzEpO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8xKSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDEpICsgMTtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF8xKSxcbiAgICAgICAgICBpNjRfMVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8pIHtcbiAgICAgICAgaWYgKHNlcEVuZCA9PSBwb3MpIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFxuICAgICAgICAgICAgc2VwRW5kID09IHN0YXJ0XG4gICAgICAgICAgICAgID8gRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlXG4gICAgICAgICAgICAgIDogRGlhZ25vc3RpY0NvZGUuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkLFxuICAgICAgICAgICAgdGhpcy5yYW5nZShwb3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzZXBFbmQgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvcyArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcyA9PSBzdGFydCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuQmluYXJ5X2RpZ2l0X2V4cGVjdGVkLFxuICAgICAgICB0aGlzLnJhbmdlKHN0YXJ0KVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNlcEVuZCA9PSB0aGlzLnBvcykge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlLFxuICAgICAgICB0aGlzLnJhbmdlKHNlcEVuZCAtIDEpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZWFkRmxvYXQoKTogZjY0IHtcbiAgICAvLyB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgLy8gaWYgKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuXzAgJiYgdGhpcy5wb3MgKyAyIDwgdGhpcy5lbmQpIHtcbiAgICAvLyAgIHN3aXRjaCAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpIHtcbiAgICAvLyAgICAgY2FzZSBDaGFyQ29kZS5YOlxuICAgIC8vICAgICBjYXNlIENoYXJDb2RlLng6IHtcbiAgICAvLyAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgIC8vICAgICAgIHJldHVybiB0aGlzLnJlYWRIZXhGbG9hdCgpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgIHJldHVybiB0aGlzLnJlYWREZWNpbWFsRmxvYXQoKTtcbiAgfVxuXG4gIHJlYWREZWNpbWFsRmxvYXQoKTogZjY0IHtcbiAgICAvLyBUT0RPOiBudW1lcmljIHNlcGFyYXRvcnMgKHBhcnNlRmxvYXQgY2FuJ3QgaGFuZGxlIHRoZXNlKVxuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kICYmIGlzRGVjaW1hbERpZ2l0KHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykpKSB7XG4gICAgICArK3RoaXMucG9zO1xuICAgIH1cbiAgICBpZiAodGhpcy5wb3MgPCBlbmQgJiYgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5ET1QpIHtcbiAgICAgICsrdGhpcy5wb3M7XG4gICAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQgJiYgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSkpIHtcbiAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICBpZiAoYyA9PSBDaGFyQ29kZS5lIHx8IGMgPT0gQ2hhckNvZGUuRSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKyt0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgIChjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSkgPT0gQ2hhckNvZGUuTUlOVVMgfHwgYyA9PSBDaGFyQ29kZS5QTFVTICYmXG4gICAgICAgICAgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpXG4gICAgICAgICkge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kICYmIGlzRGVjaW1hbERpZ2l0KHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykpKSB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VGbG9hdCh0ZXh0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpKTtcbiAgfVxuXG4gIHJlYWRIZXhGbG9hdCgpOiBmNjQge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTsgLy8gVEJEXG4gIH1cblxuICByZWFkVW5pY29kZUVzY2FwZSgpOiBzdHJpbmcge1xuICAgIHZhciByZW1haW4gPSA0O1xuICAgIHZhciB2YWx1ZSA9IDA7XG4gICAgdmFyIGVuZCA9IHRoaXMuZW5kO1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgIGxldCBjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKyspO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fOSkge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgLSBDaGFyQ29kZS5fMDtcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuRikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgKyAoMTAgLSBDaGFyQ29kZS5BKTtcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5hICYmIGMgPD0gQ2hhckNvZGUuZikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgKyAoMTAgLSBDaGFyQ29kZS5hKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuSGV4YWRlY2ltYWxfZGlnaXRfZXhwZWN0ZWQsXG4gICAgICAgICAgdGhpcy5yYW5nZSh0aGlzLnBvcyAtIDEsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGlmICgtLXJlbWFpbiA9PSAwKSBicmVhaztcbiAgICB9XG4gICAgaWYgKHJlbWFpbikge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCxcbiAgICAgICAgdGhpcy5yYW5nZSh0aGlzLnBvcylcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkRXh0ZW5kZWRVbmljb2RlRXNjYXBlKCk6IHN0cmluZyB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5yZWFkSGV4SW50ZWdlcigpO1xuICAgIHZhciB2YWx1ZTMyID0gaTY0X2xvdyh2YWx1ZSk7XG4gICAgdmFyIGludmFsaWQgPSBmYWxzZTtcblxuICAgIGFzc2VydCghaTY0X2hpZ2godmFsdWUpKTtcbiAgICBpZiAodmFsdWUzMiA+IDB4MTBGRkZGKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5Bbl9leHRlbmRlZF9Vbmljb2RlX2VzY2FwZV92YWx1ZV9tdXN0X2JlX2JldHdlZW5fMHgwX2FuZF8weDEwRkZGRl9pbmNsdXNpdmUsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMucG9zID49IGVuZCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgZW5kKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5DTE9TRUJSQUNFKSB7XG4gICAgICArK3RoaXMucG9zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5VbnRlcm1pbmF0ZWRfVW5pY29kZV9lc2NhcGVfc2VxdWVuY2UsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpbnZhbGlkKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gdmFsdWUzMiA8IDY1NTM2XG4gICAgICA/IFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWUzMilcbiAgICAgIDogU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAgICAgKCh2YWx1ZTMyIC0gNjU1MzYpID4+PiAxMCkgKyAweEQ4MDAsXG4gICAgICAgICgodmFsdWUzMiAtIDY1NTM2KSAmIDEwMjMpICsgMHhEQzAwXG4gICAgICApO1xuICB9XG5cbiAgZmluaXNoKCk6IHZvaWQge1xuICB9XG59XG5cbi8qKiBUb2tlbml6ZXIgc3RhdGUgYXMgcmV0dXJuZWQgYnkge0BsaW5rIFRva2VuaXplciNtYXJrfSBhbmQgY29uc3VtZWQgYnkge0BsaW5rIFRva2VuaXplciNyZXNldH0uICovXG5leHBvcnQgY2xhc3MgU3RhdGUge1xuICAvKiogQ3VycmVudCBwb3NpdGlvbi4gKi9cbiAgcG9zOiBpMzI7XG4gIC8qKiBDdXJyZW50IHRva2VuLiAqL1xuICB0b2tlbjogVG9rZW47XG4gIC8qKiBDdXJyZW50IHRva2VuJ3MgcG9zaXRpb24uICovXG4gIHRva2VuUG9zOiBpMzI7XG59XG5cbi8vIFJldXNhYmxlIHN0YXRlIG9iamVjdCB0byByZWR1Y2UgYWxsb2NhdGlvbnNcbnZhciByZXVzYWJsZVN0YXRlOiBTdGF0ZSB8IG51bGwgPSBudWxsO1xuIl19 - -/***/ }), - -/***/ "../src/util/binary.ts": -/*!*****************************!*\ - !*** ../src/util/binary.ts ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** Reads an 8-bit integer from the specified buffer. */ -function readI8(buffer, offset) { - return buffer[offset]; -} -exports.readI8 = readI8; -/** Writes an 8-bit integer to the specified buffer. */ -function writeI8(value, buffer, offset) { - buffer[offset] = value; -} -exports.writeI8 = writeI8; -/** Reads a 16-bit integer from the specified buffer. */ -function readI16(buffer, offset) { - return buffer[offset] - | buffer[offset + 1] << 8; -} -exports.readI16 = readI16; -/** Writes a 16-bit integer to the specified buffer. */ -function writeI16(value, buffer, offset) { - buffer[offset] = value; - buffer[offset + 1] = value >>> 8; -} -exports.writeI16 = writeI16; -/** Reads a 32-bit integer from the specified buffer. */ -function readI32(buffer, offset) { - return buffer[offset] - | buffer[offset + 1] << 8 - | buffer[offset + 2] << 16 - | buffer[offset + 3] << 24; -} -exports.readI32 = readI32; -/** Writes a 32-bit integer to the specified buffer. */ -function writeI32(value, buffer, offset) { - buffer[offset] = value; - buffer[offset + 1] = value >>> 8; - buffer[offset + 2] = value >>> 16; - buffer[offset + 3] = value >>> 24; -} -exports.writeI32 = writeI32; -/** Reads a 64-bit integer from the specified buffer. */ -function readI64(buffer, offset) { - var lo = readI32(buffer, offset); - var hi = readI32(buffer, offset + 4); - return i64_new(lo, hi); -} -exports.readI64 = readI64; -/** Writes a 64-bit integer to the specified buffer. */ -function writeI64(value, buffer, offset) { - writeI32(i64_low(value), buffer, offset); - writeI32(i64_high(value), buffer, offset + 4); -} -exports.writeI64 = writeI64; -/** Reads a 32-bit float from the specified buffer. */ -function readF32(buffer, offset) { - return i32_as_f32(readI32(buffer, offset)); -} -exports.readF32 = readF32; -/** Writes a 32-bit float to the specified buffer. */ -function writeF32(value, buffer, offset) { - writeI32(f32_as_i32(value), buffer, offset); -} -exports.writeF32 = writeF32; -/** Reads a 64-bit float from the specified buffer. */ -function readF64(buffer, offset) { - return i64_as_f64(readI64(buffer, offset)); -} -exports.readF64 = readF64; -/** Writes a 64-bit float to the specified buffer. */ -function writeF64(value, buffer, offset) { - var valueI64 = f64_as_i64(value); - writeI32(i64_low(valueI64), buffer, offset); - writeI32(i64_high(valueI64), buffer, offset + 4); -} -exports.writeF64 = writeF64; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvYmluYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBbUIsQ0FBQSxLQUFLOztBQUV4Qix3REFBd0Q7QUFDeEQsU0FBZ0IsTUFBTSxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNwRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRkQsd0JBRUM7QUFFRCx1REFBdUQ7QUFDdkQsU0FBZ0IsT0FBTyxDQUFDLEtBQVUsRUFBRSxNQUFrQixFQUFFLE1BQVc7SUFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDO0FBRkQsMEJBRUM7QUFFRCx3REFBd0Q7QUFDeEQsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNyRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUs7VUFDbEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUhELDBCQUdDO0FBRUQsdURBQXVEO0FBQ3ZELFNBQWdCLFFBQVEsQ0FBQyxLQUFVLEVBQUUsTUFBa0IsRUFBRSxNQUFXO0lBQ2xFLE1BQU0sQ0FBQyxNQUFNLENBQUssR0FBRyxLQUFLLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFIRCw0QkFHQztBQUVELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBSztVQUNsQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7VUFDdkIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFO1VBQ3hCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFMRCwwQkFLQztBQUVELHVEQUF1RDtBQUN2RCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxNQUFNLENBQUMsTUFBTSxDQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNqQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7SUFDbEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQ3BDLENBQUM7QUFMRCw0QkFLQztBQUVELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ3JELElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsT0FBTyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFKRCwwQkFJQztBQUVELHVEQUF1RDtBQUN2RCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUhELDRCQUdDO0FBRUQsc0RBQXNEO0FBQ3RELFNBQWdCLE9BQU8sQ0FBQyxNQUFrQixFQUFFLE1BQVc7SUFDckQsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFGRCwwQkFFQztBQUVELHFEQUFxRDtBQUNyRCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRkQsNEJBRUM7QUFFRCxzREFBc0Q7QUFDdEQsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNyRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUZELDBCQUVDO0FBRUQscURBQXFEO0FBQ3JELFNBQWdCLFFBQVEsQ0FBQyxLQUFVLEVBQUUsTUFBa0IsRUFBRSxNQUFXO0lBQ2xFLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUpELDRCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgdXRpbCAqLy8qKiovXG5cbi8qKiBSZWFkcyBhbiA4LWJpdCBpbnRlZ2VyIGZyb20gdGhlIHNwZWNpZmllZCBidWZmZXIuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEk4KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBpMzIge1xuICByZXR1cm4gYnVmZmVyW29mZnNldF07XG59XG5cbi8qKiBXcml0ZXMgYW4gOC1iaXQgaW50ZWdlciB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUk4KHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldF0gPSB2YWx1ZTtcbn1cblxuLyoqIFJlYWRzIGEgMTYtYml0IGludGVnZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSTE2KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBpMzIge1xuICByZXR1cm4gYnVmZmVyW29mZnNldCAgICBdXG4gICAgICAgfCBidWZmZXJbb2Zmc2V0ICsgMV0gPDwgODtcbn1cblxuLyoqIFdyaXRlcyBhIDE2LWJpdCBpbnRlZ2VyIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSTE2KHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCAgICBdID0gdmFsdWU7XG4gIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IHZhbHVlID4+PiA4O1xufVxuXG4vKiogUmVhZHMgYSAzMi1iaXQgaW50ZWdlciBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJMzIoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGkzMiB7XG4gIHJldHVybiBidWZmZXJbb2Zmc2V0ICAgIF1cbiAgICAgICB8IGJ1ZmZlcltvZmZzZXQgKyAxXSA8PCA4XG4gICAgICAgfCBidWZmZXJbb2Zmc2V0ICsgMl0gPDwgMTZcbiAgICAgICB8IGJ1ZmZlcltvZmZzZXQgKyAzXSA8PCAyNDtcbn1cblxuLyoqIFdyaXRlcyBhIDMyLWJpdCBpbnRlZ2VyIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSTMyKHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCAgICBdID0gdmFsdWU7XG4gIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IHZhbHVlID4+PiA4O1xuICBidWZmZXJbb2Zmc2V0ICsgMl0gPSB2YWx1ZSA+Pj4gMTY7XG4gIGJ1ZmZlcltvZmZzZXQgKyAzXSA9IHZhbHVlID4+PiAyNDtcbn1cblxuLyoqIFJlYWRzIGEgNjQtYml0IGludGVnZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSTY0KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBJNjQge1xuICB2YXIgbG8gPSByZWFkSTMyKGJ1ZmZlciwgb2Zmc2V0KTtcbiAgdmFyIGhpID0gcmVhZEkzMihidWZmZXIsIG9mZnNldCArIDQpO1xuICByZXR1cm4gaTY0X25ldyhsbywgaGkpO1xufVxuXG4vKiogV3JpdGVzIGEgNjQtYml0IGludGVnZXIgdG8gdGhlIHNwZWNpZmllZCBidWZmZXIuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVJNjQodmFsdWU6IEk2NCwgYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IHZvaWQge1xuICB3cml0ZUkzMihpNjRfbG93KHZhbHVlKSwgYnVmZmVyLCBvZmZzZXQpO1xuICB3cml0ZUkzMihpNjRfaGlnaCh2YWx1ZSksIGJ1ZmZlciwgb2Zmc2V0ICsgNCk7XG59XG5cbi8qKiBSZWFkcyBhIDMyLWJpdCBmbG9hdCBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGMzIoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGYzMiB7XG4gIHJldHVybiBpMzJfYXNfZjMyKHJlYWRJMzIoYnVmZmVyLCBvZmZzZXQpKTtcbn1cblxuLyoqIFdyaXRlcyBhIDMyLWJpdCBmbG9hdCB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUYzMih2YWx1ZTogZjMyLCBidWZmZXI6IFVpbnQ4QXJyYXksIG9mZnNldDogaTMyKTogdm9pZCB7XG4gIHdyaXRlSTMyKGYzMl9hc19pMzIodmFsdWUpLCBidWZmZXIsIG9mZnNldCk7XG59XG5cbi8qKiBSZWFkcyBhIDY0LWJpdCBmbG9hdCBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGNjQoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGY2NCB7XG4gIHJldHVybiBpNjRfYXNfZjY0KHJlYWRJNjQoYnVmZmVyLCBvZmZzZXQpKTtcbn1cblxuLyoqIFdyaXRlcyBhIDY0LWJpdCBmbG9hdCB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUY2NCh2YWx1ZTogZjY0LCBidWZmZXI6IFVpbnQ4QXJyYXksIG9mZnNldDogaTMyKTogdm9pZCB7XG4gIHZhciB2YWx1ZUk2NCA9IGY2NF9hc19pNjQodmFsdWUpO1xuICB3cml0ZUkzMihpNjRfbG93KHZhbHVlSTY0KSwgYnVmZmVyLCBvZmZzZXQpO1xuICB3cml0ZUkzMihpNjRfaGlnaCh2YWx1ZUk2NCksIGJ1ZmZlciwgb2Zmc2V0ICsgNCk7XG59XG4iXX0= - -/***/ }), - -/***/ "../src/util/bitset.ts": -/*!*****************************!*\ - !*** ../src/util/bitset.ts ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** Tests if the bit at the specified index is set within a 64-bit map. */ -function bitsetIs(map, index) { - assert(index >= 0 && index < 64); - return i64_ne(i64_and(map, i64_shl(i64_one, i64_new(index))), i64_zero); -} -exports.bitsetIs = bitsetIs; -/** Sets or unsets the bit at the specified index within a 64-bit map and returns the new map. */ -function bitsetSet(map, index, isSet) { - assert(index >= 0 && index < 64); - return isSet - ? i64_or(map, i64_shl(i64_one, i64_new(index))) - : i64_and(map, i64_not(i64_shl(i64_one, i64_new(index)))); -} -exports.bitsetSet = bitsetSet; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0c2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvYml0c2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBbUIsQ0FBQSxLQUFLOztBQUV4QiwwRUFBMEU7QUFDMUUsU0FBZ0IsUUFBUSxDQUFDLEdBQVEsRUFBRSxLQUFVO0lBQzNDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLE1BQU0sQ0FDWCxPQUFPLENBQ0wsR0FBRyxFQUNILE9BQU8sQ0FDTCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNmLENBQ0YsRUFDRCxRQUFRLENBQ1QsQ0FBQztBQUNKLENBQUM7QUFaRCw0QkFZQztBQUVELGlHQUFpRztBQUNqRyxTQUFnQixTQUFTLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxLQUFXO0lBQ3pELE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLEtBQUs7UUFDVixDQUFDLENBQUMsTUFBTSxDQUNKLEdBQUcsRUFDSCxPQUFPLENBQ0wsT0FBTyxFQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FDZixDQUNGO1FBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FDTCxHQUFHLEVBQ0gsT0FBTyxDQUNMLE9BQU8sQ0FDTCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNmLENBQ0YsQ0FDRixDQUFDO0FBQ1IsQ0FBQztBQW5CRCw4QkFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuLyoqIFRlc3RzIGlmIHRoZSBiaXQgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBpcyBzZXQgd2l0aGluIGEgNjQtYml0IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaXRzZXRJcyhtYXA6IEk2NCwgaW5kZXg6IGkzMik6IGJvb2wge1xuICBhc3NlcnQoaW5kZXggPj0gMCAmJiBpbmRleCA8IDY0KTtcbiAgcmV0dXJuIGk2NF9uZShcbiAgICBpNjRfYW5kKFxuICAgICAgbWFwLFxuICAgICAgaTY0X3NobChcbiAgICAgICAgaTY0X29uZSxcbiAgICAgICAgaTY0X25ldyhpbmRleClcbiAgICAgIClcbiAgICApLFxuICAgIGk2NF96ZXJvXG4gICk7XG59XG5cbi8qKiBTZXRzIG9yIHVuc2V0cyB0aGUgYml0IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggd2l0aGluIGEgNjQtYml0IG1hcCBhbmQgcmV0dXJucyB0aGUgbmV3IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaXRzZXRTZXQobWFwOiBJNjQsIGluZGV4OiBpMzIsIGlzU2V0OiBib29sKTogSTY0IHtcbiAgYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPCA2NCk7XG4gIHJldHVybiBpc1NldFxuICAgID8gaTY0X29yKFxuICAgICAgICBtYXAsXG4gICAgICAgIGk2NF9zaGwoXG4gICAgICAgICAgaTY0X29uZSxcbiAgICAgICAgICBpNjRfbmV3KGluZGV4KVxuICAgICAgICApXG4gICAgICApXG4gICAgOiBpNjRfYW5kKFxuICAgICAgICBtYXAsXG4gICAgICAgIGk2NF9ub3QoXG4gICAgICAgICAgaTY0X3NobChcbiAgICAgICAgICAgIGk2NF9vbmUsXG4gICAgICAgICAgICBpNjRfbmV3KGluZGV4KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/util/charcode.ts": -/*!*******************************!*\ - !*** ../src/util/charcode.ts ***! - \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** An enum of named character codes. */ -var CharCode; -(function (CharCode) { - CharCode[CharCode["NULL"] = 0] = "NULL"; - CharCode[CharCode["LINEFEED"] = 10] = "LINEFEED"; - CharCode[CharCode["CARRIAGERETURN"] = 13] = "CARRIAGERETURN"; - CharCode[CharCode["LINESEPARATOR"] = 8232] = "LINESEPARATOR"; - CharCode[CharCode["PARAGRAPHSEPARATOR"] = 8233] = "PARAGRAPHSEPARATOR"; - CharCode[CharCode["NEXTLINE"] = 133] = "NEXTLINE"; - CharCode[CharCode["SPACE"] = 32] = "SPACE"; - CharCode[CharCode["NONBREAKINGSPACE"] = 160] = "NONBREAKINGSPACE"; - CharCode[CharCode["ENQUAD"] = 8192] = "ENQUAD"; - CharCode[CharCode["EMQUAD"] = 8193] = "EMQUAD"; - CharCode[CharCode["ENSPACE"] = 8194] = "ENSPACE"; - CharCode[CharCode["EMSPACE"] = 8195] = "EMSPACE"; - CharCode[CharCode["THREEPEREMSPACE"] = 8196] = "THREEPEREMSPACE"; - CharCode[CharCode["FOURPEREMSPACE"] = 8197] = "FOURPEREMSPACE"; - CharCode[CharCode["SIXPEREMSPACE"] = 8198] = "SIXPEREMSPACE"; - CharCode[CharCode["FIGURESPACE"] = 8199] = "FIGURESPACE"; - CharCode[CharCode["PUNCTUATIONSPACE"] = 8200] = "PUNCTUATIONSPACE"; - CharCode[CharCode["THINSPACE"] = 8201] = "THINSPACE"; - CharCode[CharCode["HAIRSPACE"] = 8202] = "HAIRSPACE"; - CharCode[CharCode["ZEROWIDTHSPACE"] = 8203] = "ZEROWIDTHSPACE"; - CharCode[CharCode["NARROWNOBREAKSPACE"] = 8239] = "NARROWNOBREAKSPACE"; - CharCode[CharCode["IDEOGRAPHICSPACE"] = 12288] = "IDEOGRAPHICSPACE"; - CharCode[CharCode["MATHEMATICALSPACE"] = 8287] = "MATHEMATICALSPACE"; - CharCode[CharCode["OGHAM"] = 5760] = "OGHAM"; - CharCode[CharCode["_"] = 95] = "_"; - CharCode[CharCode["_0"] = 48] = "_0"; - CharCode[CharCode["_1"] = 49] = "_1"; - CharCode[CharCode["_2"] = 50] = "_2"; - CharCode[CharCode["_3"] = 51] = "_3"; - CharCode[CharCode["_4"] = 52] = "_4"; - CharCode[CharCode["_5"] = 53] = "_5"; - CharCode[CharCode["_6"] = 54] = "_6"; - CharCode[CharCode["_7"] = 55] = "_7"; - CharCode[CharCode["_8"] = 56] = "_8"; - CharCode[CharCode["_9"] = 57] = "_9"; - CharCode[CharCode["a"] = 97] = "a"; - CharCode[CharCode["b"] = 98] = "b"; - CharCode[CharCode["c"] = 99] = "c"; - CharCode[CharCode["d"] = 100] = "d"; - CharCode[CharCode["e"] = 101] = "e"; - CharCode[CharCode["f"] = 102] = "f"; - CharCode[CharCode["g"] = 103] = "g"; - CharCode[CharCode["h"] = 104] = "h"; - CharCode[CharCode["i"] = 105] = "i"; - CharCode[CharCode["j"] = 106] = "j"; - CharCode[CharCode["k"] = 107] = "k"; - CharCode[CharCode["l"] = 108] = "l"; - CharCode[CharCode["m"] = 109] = "m"; - CharCode[CharCode["n"] = 110] = "n"; - CharCode[CharCode["o"] = 111] = "o"; - CharCode[CharCode["p"] = 112] = "p"; - CharCode[CharCode["q"] = 113] = "q"; - CharCode[CharCode["r"] = 114] = "r"; - CharCode[CharCode["s"] = 115] = "s"; - CharCode[CharCode["t"] = 116] = "t"; - CharCode[CharCode["u"] = 117] = "u"; - CharCode[CharCode["v"] = 118] = "v"; - CharCode[CharCode["w"] = 119] = "w"; - CharCode[CharCode["x"] = 120] = "x"; - CharCode[CharCode["y"] = 121] = "y"; - CharCode[CharCode["z"] = 122] = "z"; - CharCode[CharCode["A"] = 65] = "A"; - CharCode[CharCode["B"] = 66] = "B"; - CharCode[CharCode["C"] = 67] = "C"; - CharCode[CharCode["D"] = 68] = "D"; - CharCode[CharCode["E"] = 69] = "E"; - CharCode[CharCode["F"] = 70] = "F"; - CharCode[CharCode["G"] = 71] = "G"; - CharCode[CharCode["H"] = 72] = "H"; - CharCode[CharCode["I"] = 73] = "I"; - CharCode[CharCode["J"] = 74] = "J"; - CharCode[CharCode["K"] = 75] = "K"; - CharCode[CharCode["L"] = 76] = "L"; - CharCode[CharCode["M"] = 77] = "M"; - CharCode[CharCode["N"] = 78] = "N"; - CharCode[CharCode["O"] = 79] = "O"; - CharCode[CharCode["P"] = 80] = "P"; - CharCode[CharCode["Q"] = 81] = "Q"; - CharCode[CharCode["R"] = 82] = "R"; - CharCode[CharCode["S"] = 83] = "S"; - CharCode[CharCode["T"] = 84] = "T"; - CharCode[CharCode["U"] = 85] = "U"; - CharCode[CharCode["V"] = 86] = "V"; - CharCode[CharCode["W"] = 87] = "W"; - CharCode[CharCode["X"] = 88] = "X"; - CharCode[CharCode["Y"] = 89] = "Y"; - CharCode[CharCode["Z"] = 90] = "Z"; - CharCode[CharCode["AMPERSAND"] = 38] = "AMPERSAND"; - CharCode[CharCode["ASTERISK"] = 42] = "ASTERISK"; - CharCode[CharCode["AT"] = 64] = "AT"; - CharCode[CharCode["BACKSLASH"] = 92] = "BACKSLASH"; - CharCode[CharCode["BACKTICK"] = 96] = "BACKTICK"; - CharCode[CharCode["BAR"] = 124] = "BAR"; - CharCode[CharCode["CARET"] = 94] = "CARET"; - CharCode[CharCode["CLOSEBRACE"] = 125] = "CLOSEBRACE"; - CharCode[CharCode["CLOSEBRACKET"] = 93] = "CLOSEBRACKET"; - CharCode[CharCode["CLOSEPAREN"] = 41] = "CLOSEPAREN"; - CharCode[CharCode["COLON"] = 58] = "COLON"; - CharCode[CharCode["COMMA"] = 44] = "COMMA"; - CharCode[CharCode["DOLLAR"] = 36] = "DOLLAR"; - CharCode[CharCode["DOT"] = 46] = "DOT"; - CharCode[CharCode["DOUBLEQUOTE"] = 34] = "DOUBLEQUOTE"; - CharCode[CharCode["EQUALS"] = 61] = "EQUALS"; - CharCode[CharCode["EXCLAMATION"] = 33] = "EXCLAMATION"; - CharCode[CharCode["GREATERTHAN"] = 62] = "GREATERTHAN"; - CharCode[CharCode["HASH"] = 35] = "HASH"; - CharCode[CharCode["LESSTHAN"] = 60] = "LESSTHAN"; - CharCode[CharCode["MINUS"] = 45] = "MINUS"; - CharCode[CharCode["OPENBRACE"] = 123] = "OPENBRACE"; - CharCode[CharCode["OPENBRACKET"] = 91] = "OPENBRACKET"; - CharCode[CharCode["OPENPAREN"] = 40] = "OPENPAREN"; - CharCode[CharCode["PERCENT"] = 37] = "PERCENT"; - CharCode[CharCode["PLUS"] = 43] = "PLUS"; - CharCode[CharCode["QUESTION"] = 63] = "QUESTION"; - CharCode[CharCode["SEMICOLON"] = 59] = "SEMICOLON"; - CharCode[CharCode["SINGLEQUOTE"] = 39] = "SINGLEQUOTE"; - CharCode[CharCode["SLASH"] = 47] = "SLASH"; - CharCode[CharCode["TILDE"] = 126] = "TILDE"; - CharCode[CharCode["BACKSPACE"] = 8] = "BACKSPACE"; - CharCode[CharCode["FORMFEED"] = 12] = "FORMFEED"; - CharCode[CharCode["BYTEORDERMARK"] = 65279] = "BYTEORDERMARK"; - CharCode[CharCode["TAB"] = 9] = "TAB"; - CharCode[CharCode["VERTICALTAB"] = 11] = "VERTICALTAB"; -})(CharCode = exports.CharCode || (exports.CharCode = {})); -/** Tests if the specified character code is some sort of line break. */ -function isLineBreak(c) { - switch (c) { - case 10 /* LINEFEED */: - case 13 /* CARRIAGERETURN */: - case 8232 /* LINESEPARATOR */: - case 8233 /* PARAGRAPHSEPARATOR */: { - return true; - } - default: { - return false; - } - } -} -exports.isLineBreak = isLineBreak; -/** Tests if the specified character code is some sort of white space. */ -function isWhiteSpace(c) { - switch (c) { - case 32 /* SPACE */: - case 9 /* TAB */: - case 11 /* VERTICALTAB */: - case 12 /* FORMFEED */: - case 160 /* NONBREAKINGSPACE */: - case 133 /* NEXTLINE */: - case 5760 /* OGHAM */: - case 8239 /* NARROWNOBREAKSPACE */: - case 8287 /* MATHEMATICALSPACE */: - case 12288 /* IDEOGRAPHICSPACE */: - case 65279 /* BYTEORDERMARK */: { - return true; - } - default: { - return c >= 8192 /* ENQUAD */ && c <= 8203 /* ZEROWIDTHSPACE */; - } - } -} -exports.isWhiteSpace = isWhiteSpace; -/** Tests if the specified character code is a valid decimal digit. */ -function isDecimalDigit(c) { - return c >= 48 /* _0 */ && c <= 57 /* _9 */; -} -exports.isDecimalDigit = isDecimalDigit; -/** Tests if the specified character code is a valid octal digit. */ -function isOctalDigit(c) { - return c >= 48 /* _0 */ && c <= 55 /* _7 */; -} -exports.isOctalDigit = isOctalDigit; -/** Tests if the specified character code is a valid start of an identifier. */ -function isIdentifierStart(c) { - return c >= 97 /* a */ && c <= 122 /* z */ - || c >= 65 /* A */ && c <= 90 /* Z */ - || c == 95 /* _ */ - || c == 36 /* DOLLAR */ - || c > 0x7f && isUnicodeIdentifierStart(c); -} -exports.isIdentifierStart = isIdentifierStart; -/** Tests if the specified character code is a valid keyword character. */ -function isKeywordCharacter(c) { - return c >= 97 /* a */ && c <= 122 /* z */; -} -exports.isKeywordCharacter = isKeywordCharacter; -/** Tests if the specified character code is a valid part of an identifier. */ -function isIdentifierPart(c) { - return c >= 97 /* a */ && c <= 122 /* z */ - || c >= 65 /* A */ && c <= 90 /* Z */ - || c >= 48 /* _0 */ && c <= 57 /* _9 */ - || c == 95 /* _ */ - || c == 36 /* DOLLAR */ - || c > 0x7f && isUnicodeIdentifierPart(c); -} -exports.isIdentifierPart = isIdentifierPart; -// storing as u16 to save memory -var unicodeIdentifierStart = [ - 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, - 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, - 908, 908, 910, 929, 931, - 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, - 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, - 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, - 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, - 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, - 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, - 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, - 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, - 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, - 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, - 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, - 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, - 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, - 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, - 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, - 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, - 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, - 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, - 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, - 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, - 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, - 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, - 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, - 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, - 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, - 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, - 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, - 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, - 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, - 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, - 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, - 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, - 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, - 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, - 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, - 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, - 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, - 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, - 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, - 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, - 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, - 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, - 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, - 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, - 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, - 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, - 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015, - 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, - 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, - 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, - 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, - 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, - 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, - 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, - 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, - 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, - 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, - 65479, 65482, 65487, 65490, 65495, 65498, 65500, -]; -var unicodeIdentifierPart = [ - 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, - 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, - 908, 908, 910, 929, 931, - 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, - 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, - 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, - 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, - 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, - 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, - 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, - 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, - 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, - 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, - 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, - 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, - 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, - 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, - 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, - 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, - 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, - 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, - 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, - 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, - 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, - 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, - 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, - 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, - 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, - 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, - 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, - 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, - 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, - 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, - 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, - 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, - 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, - 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, - 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, - 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, - 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, - 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, - 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, - 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, - 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, - 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, - 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, - 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, - 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, - 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, - 8521, 8526, 8526, 8544, 8584, - 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, - 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, - 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, - 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, - 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, - 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, - 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, - 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, - 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072, - 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, - 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, - 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, - 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, - 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, - 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, - 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, - 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, - 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, - 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, - 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, -]; -function lookupInUnicodeMap(code, map) { - if (code < map[0]) - return false; - var lo = 0; - var hi = map.length; - var mid; - var midVal; - while (lo + 1 < hi) { - mid = lo + ((hi - lo) >> 1); - mid -= (mid & 1); - midVal = map[mid]; - if (midVal <= code && code <= map[mid + 1]) { - return true; - } - if (code < midVal) { - hi = mid; - } - else { - lo = mid + 2; - } - } - return false; -} -function isUnicodeIdentifierStart(code) { - return code < 0 || code > 0xffff ? false - : lookupInUnicodeMap(code, unicodeIdentifierStart); -} -function isUnicodeIdentifierPart(code) { - return code < 0 || code > 0xffff ? false - : lookupInUnicodeMap(code, unicodeIdentifierPart); -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmNvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9jaGFyY29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsbUJBQW1CLENBQUEsS0FBSzs7QUFFeEIsd0NBQXdDO0FBQ3hDLElBQWtCLFFBb0lqQjtBQXBJRCxXQUFrQixRQUFRO0lBRXhCLHVDQUFRLENBQUE7SUFDUixnREFBZSxDQUFBO0lBQ2YsNERBQXFCLENBQUE7SUFDckIsNERBQXNCLENBQUE7SUFDdEIsc0VBQTJCLENBQUE7SUFDM0IsaURBQWlCLENBQUE7SUFFakIsMENBQVksQ0FBQTtJQUNaLGlFQUF1QixDQUFBO0lBQ3ZCLDhDQUFlLENBQUE7SUFDZiw4Q0FBZSxDQUFBO0lBQ2YsZ0RBQWdCLENBQUE7SUFDaEIsZ0RBQWdCLENBQUE7SUFDaEIsZ0VBQXdCLENBQUE7SUFDeEIsOERBQXVCLENBQUE7SUFDdkIsNERBQXNCLENBQUE7SUFDdEIsd0RBQW9CLENBQUE7SUFDcEIsa0VBQXlCLENBQUE7SUFDekIsb0RBQWtCLENBQUE7SUFDbEIsb0RBQWtCLENBQUE7SUFDbEIsOERBQXVCLENBQUE7SUFDdkIsc0VBQTJCLENBQUE7SUFDM0IsbUVBQXlCLENBQUE7SUFDekIsb0VBQTBCLENBQUE7SUFDMUIsNENBQWMsQ0FBQTtJQUVkLGtDQUFRLENBQUE7SUFFUixvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBRVQsa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FB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NENBT0M7QUFFRCxnQ0FBZ0M7QUFDaEMsSUFBTSxzQkFBc0IsR0FBVTtJQUNwQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDOUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztDQUNoRCxDQUFDO0FBQ0YsSUFBTSxxQkFBcUIsR0FBVTtJQUNuQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0NBQzlELENBQUM7QUFFRixTQUFTLGtCQUFrQixDQUFDLElBQVMsRUFBRSxHQUFVO0lBQy9DLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUVoQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWCxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3BCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxNQUFXLENBQUM7SUFFaEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNsQixHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUIsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksR0FBRyxNQUFNLEVBQUU7WUFDakIsRUFBRSxHQUFHLEdBQUcsQ0FBQztTQUNWO2FBQU07WUFDTCxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztTQUNkO0tBQ0Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLElBQVM7SUFDekMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQVcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLElBQVM7SUFDeEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQVcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuLyoqIEFuIGVudW0gb2YgbmFtZWQgY2hhcmFjdGVyIGNvZGVzLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQ2hhckNvZGUge1xuXG4gIE5VTEwgPSAwLFxuICBMSU5FRkVFRCA9IDB4MEEsXG4gIENBUlJJQUdFUkVUVVJOID0gMHgwRCxcbiAgTElORVNFUEFSQVRPUiA9IDB4MjAyOCxcbiAgUEFSQUdSQVBIU0VQQVJBVE9SID0gMHgyMDI5LFxuICBORVhUTElORSA9IDB4MDA4NSxcblxuICBTUEFDRSA9IDB4MjAsXG4gIE5PTkJSRUFLSU5HU1BBQ0UgPSAweEEwLFxuICBFTlFVQUQgPSAweDIwMDAsXG4gIEVNUVVBRCA9IDB4MjAwMSxcbiAgRU5TUEFDRSA9IDB4MjAwMixcbiAgRU1TUEFDRSA9IDB4MjAwMyxcbiAgVEhSRUVQRVJFTVNQQUNFID0gMHgyMDA0LFxuICBGT1VSUEVSRU1TUEFDRSA9IDB4MjAwNSxcbiAgU0lYUEVSRU1TUEFDRSA9IDB4MjAwNixcbiAgRklHVVJFU1BBQ0UgPSAweDIwMDcsXG4gIFBVTkNUVUFUSU9OU1BBQ0UgPSAweDIwMDgsXG4gIFRISU5TUEFDRSA9IDB4MjAwOSxcbiAgSEFJUlNQQUNFID0gMHgyMDBBLFxuICBaRVJPV0lEVEhTUEFDRSA9IDB4MjAwQixcbiAgTkFSUk9XTk9CUkVBS1NQQUNFID0gMHgyMDJGLFxuICBJREVPR1JBUEhJQ1NQQUNFID0gMHgzMDAwLFxuICBNQVRIRU1BVElDQUxTUEFDRSA9IDB4MjA1RixcbiAgT0dIQU0gPSAweDE2ODAsXG5cbiAgXyA9IDB4NUYsXG5cbiAgXzAgPSAweDMwLFxuICBfMSA9IDB4MzEsXG4gIF8yID0gMHgzMixcbiAgXzMgPSAweDMzLFxuICBfNCA9IDB4MzQsXG4gIF81ID0gMHgzNSxcbiAgXzYgPSAweDM2LFxuICBfNyA9IDB4MzcsXG4gIF84ID0gMHgzOCxcbiAgXzkgPSAweDM5LFxuXG4gIGEgPSAweDYxLFxuICBiID0gMHg2MixcbiAgYyA9IDB4NjMsXG4gIGQgPSAweDY0LFxuICBlID0gMHg2NSxcbiAgZiA9IDB4NjYsXG4gIGcgPSAweDY3LFxuICBoID0gMHg2OCxcbiAgaSA9IDB4NjksXG4gIGogPSAweDZBLFxuICBrID0gMHg2QixcbiAgbCA9IDB4NkMsXG4gIG0gPSAweDZELFxuICBuID0gMHg2RSxcbiAgbyA9IDB4NkYsXG4gIHAgPSAweDcwLFxuICBxID0gMHg3MSxcbiAgciA9IDB4NzIsXG4gIHMgPSAweDczLFxuICB0ID0gMHg3NCxcbiAgdSA9IDB4NzUsXG4gIHYgPSAweDc2LFxuICB3ID0gMHg3NyxcbiAgeCA9IDB4NzgsXG4gIHkgPSAweDc5LFxuICB6ID0gMHg3QSxcblxuICBBID0gMHg0MSxcbiAgQiA9IDB4NDIsXG4gIEMgPSAweDQzLFxuICBEID0gMHg0NCxcbiAgRSA9IDB4NDUsXG4gIEYgPSAweDQ2LFxuICBHID0gMHg0NyxcbiAgSCA9IDB4NDgsXG4gIEkgPSAweDQ5LFxuICBKID0gMHg0QSxcbiAgSyA9IDB4NEIsXG4gIEwgPSAweDRDLFxuICBNID0gMHg0RCxcbiAgTiA9IDB4NEUsXG4gIE8gPSAweDRGLFxuICBQID0gMHg1MCxcbiAgUSA9IDB4NTEsXG4gIFIgPSAweDUyLFxuICBTID0gMHg1MyxcbiAgVCA9IDB4NTQsXG4gIFUgPSAweDU1LFxuICBWID0gMHg1NixcbiAgVyA9IDB4NTcsXG4gIFggPSAweDU4LFxuICBZID0gMHg1OSxcbiAgWiA9IDB4NWEsXG5cbiAgQU1QRVJTQU5EID0gMHgyNixcbiAgQVNURVJJU0sgPSAweDJBLFxuICBBVCA9IDB4NDAsXG4gIEJBQ0tTTEFTSCA9IDB4NUMsXG4gIEJBQ0tUSUNLID0gMHg2MCxcbiAgQkFSID0gMHg3QyxcbiAgQ0FSRVQgPSAweDVFLFxuICBDTE9TRUJSQUNFID0gMHg3RCxcbiAgQ0xPU0VCUkFDS0VUID0gMHg1RCxcbiAgQ0xPU0VQQVJFTiA9IDB4MjksXG4gIENPTE9OID0gMHgzQSxcbiAgQ09NTUEgPSAweDJDLFxuICBET0xMQVIgPSAweDI0LFxuICBET1QgPSAweDJFLFxuICBET1VCTEVRVU9URSA9IDB4MjIsXG4gIEVRVUFMUyA9IDB4M0QsXG4gIEVYQ0xBTUFUSU9OID0gMHgyMSxcbiAgR1JFQVRFUlRIQU4gPSAweDNFLFxuICBIQVNIID0gMHgyMyxcbiAgTEVTU1RIQU4gPSAweDNDLFxuICBNSU5VUyA9IDB4MkQsXG4gIE9QRU5CUkFDRSA9IDB4N0IsXG4gIE9QRU5CUkFDS0VUID0gMHg1QixcbiAgT1BFTlBBUkVOID0gMHgyOCxcbiAgUEVSQ0VOVCA9IDB4MjUsXG4gIFBMVVMgPSAweDJCLFxuICBRVUVTVElPTiA9IDB4M0YsXG4gIFNFTUlDT0xPTiA9IDB4M0IsXG4gIFNJTkdMRVFVT1RFID0gMHgyNyxcbiAgU0xBU0ggPSAweDJGLFxuICBUSUxERSA9IDB4N0UsXG5cbiAgQkFDS1NQQUNFID0gMHgwOCxcbiAgRk9STUZFRUQgPSAweDBDLFxuICBCWVRFT1JERVJNQVJLID0gMHhGRUZGLFxuICBUQUIgPSAweDA5LFxuICBWRVJUSUNBTFRBQiA9IDB4MEJcbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgc29tZSBzb3J0IG9mIGxpbmUgYnJlYWsuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lQnJlYWsoYzogQ2hhckNvZGUpOiBib29sIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICBjYXNlIENoYXJDb2RlLkNBUlJJQUdFUkVUVVJOOlxuICAgIGNhc2UgQ2hhckNvZGUuTElORVNFUEFSQVRPUjpcbiAgICBjYXNlIENoYXJDb2RlLlBBUkFHUkFQSFNFUEFSQVRPUjoge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgc29tZSBzb3J0IG9mIHdoaXRlIHNwYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjOiBpMzIpOiBib29sIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSBDaGFyQ29kZS5TUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLlRBQjpcbiAgICBjYXNlIENoYXJDb2RlLlZFUlRJQ0FMVEFCOlxuICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6XG4gICAgY2FzZSBDaGFyQ29kZS5OT05CUkVBS0lOR1NQQUNFOlxuICAgIGNhc2UgQ2hhckNvZGUuTkVYVExJTkU6XG4gICAgY2FzZSBDaGFyQ29kZS5PR0hBTTpcbiAgICBjYXNlIENoYXJDb2RlLk5BUlJPV05PQlJFQUtTUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLk1BVEhFTUFUSUNBTFNQQUNFOlxuICAgIGNhc2UgQ2hhckNvZGUuSURFT0dSQVBISUNTUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLkJZVEVPUkRFUk1BUks6IHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gYyA+PSBDaGFyQ29kZS5FTlFVQUQgJiYgYyA8PSBDaGFyQ29kZS5aRVJPV0lEVEhTUEFDRTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgYSB2YWxpZCBkZWNpbWFsIGRpZ2l0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVjaW1hbERpZ2l0KGM6IGkzMik6IGJvb2wge1xuICByZXR1cm4gYyA+PSBDaGFyQ29kZS5fMCAmJiBjIDw9IENoYXJDb2RlLl85O1xufVxuXG4vKiogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZSBpcyBhIHZhbGlkIG9jdGFsIGRpZ2l0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2N0YWxEaWdpdChjOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fNztcbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgYSB2YWxpZCBzdGFydCBvZiBhbiBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbnRpZmllclN0YXJ0KGM6IGkzMik6IGJvb2wge1xuICByZXR1cm4gYyA+PSBDaGFyQ29kZS5hICYmIGMgPD0gQ2hhckNvZGUuelxuICAgICAgfHwgYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuWlxuICAgICAgfHwgYyA9PSBDaGFyQ29kZS5fXG4gICAgICB8fCBjID09IENoYXJDb2RlLkRPTExBUlxuICAgICAgfHwgYyA+IDB4N2YgJiYgaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGMpO1xufVxuXG4vKiogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZSBpcyBhIHZhbGlkIGtleXdvcmQgY2hhcmFjdGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzS2V5d29yZENoYXJhY3RlcihjOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGMgPj0gQ2hhckNvZGUuYSAmJiBjIDw9IENoYXJDb2RlLno7XG59XG5cbi8qKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBjb2RlIGlzIGEgdmFsaWQgcGFydCBvZiBhbiBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbnRpZmllclBhcnQoYzogaTMyKTogYm9vbCB7XG4gIHJldHVybiBjID49IENoYXJDb2RlLmEgJiYgYyA8PSBDaGFyQ29kZS56XG4gICAgICB8fCBjID49IENoYXJDb2RlLkEgJiYgYyA8PSBDaGFyQ29kZS5aXG4gICAgICB8fCBjID49IENoYXJDb2RlLl8wICYmIGMgPD0gQ2hhckNvZGUuXzlcbiAgICAgIHx8IGMgPT0gQ2hhckNvZGUuX1xuICAgICAgfHwgYyA9PSBDaGFyQ29kZS5ET0xMQVJcbiAgICAgIHx8IGMgPiAweDdmICYmIGlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGMpO1xufVxuXG4vLyBzdG9yaW5nIGFzIHUxNiB0byBzYXZlIG1lbW9yeVxuY29uc3QgdW5pY29kZUlkZW50aWZpZXJTdGFydDogdTE2W10gPSBbXG4gIDE3MCwgMTcwLCAxODEsIDE4MSwgMTg2LCAxODYsIDE5MiwgMjE0LCAyMTYsIDI0NiwgMjQ4LCA3MDUsIDcxMCwgNzIxLCA3MzYsXG4gIDc0MCwgNzQ4LCA3NDgsIDc1MCwgNzUwLCA4ODAsIDg4NCwgODg2LCA4ODcsIDg5MCwgODkzLCA5MDIsIDkwMiwgOTA0LCA5MDYsXG4gIDkwOCwgOTA4LCA5MTAsIDkyOSwgOTMxLFxuICAxMDEzLCAxMDE1LCAxMTUzLCAxMTYyLCAxMzE5LCAxMzI5LCAxMzY2LCAxMzY5LCAxMzY5LCAxMzc3LCAxNDE1LCAxNDg4LCAxNTE0LFxuICAxNTIwLCAxNTIyLCAxNTY4LCAxNjEwLCAxNjQ2LCAxNjQ3LCAxNjQ5LCAxNzQ3LCAxNzQ5LCAxNzQ5LCAxNzY1LCAxNzY2LCAxNzc0LFxuICAxNzc1LCAxNzg2LCAxNzg4LCAxNzkxLCAxNzkxLCAxODA4LCAxODA4LCAxODEwLCAxODM5LCAxODY5LCAxOTU3LCAxOTY5LCAxOTY5LFxuICAxOTk0LCAyMDI2LCAyMDM2LCAyMDM3LCAyMDQyLCAyMDQyLCAyMDQ4LCAyMDY5LCAyMDc0LCAyMDc0LCAyMDg0LCAyMDg0LCAyMDg4LFxuICAyMDg4LCAyMTEyLCAyMTM2LCAyMjA4LCAyMjA4LCAyMjEwLCAyMjIwLCAyMzA4LCAyMzYxLCAyMzY1LCAyMzY1LCAyMzg0LCAyMzg0LFxuICAyMzkyLCAyNDAxLCAyNDE3LCAyNDIzLCAyNDI1LCAyNDMxLCAyNDM3LCAyNDQ0LCAyNDQ3LCAyNDQ4LCAyNDUxLCAyNDcyLCAyNDc0LFxuICAyNDgwLCAyNDgyLCAyNDgyLCAyNDg2LCAyNDg5LCAyNDkzLCAyNDkzLCAyNTEwLCAyNTEwLCAyNTI0LCAyNTI1LCAyNTI3LCAyNTI5LFxuICAyNTQ0LCAyNTQ1LCAyNTY1LCAyNTcwLCAyNTc1LCAyNTc2LCAyNTc5LCAyNjAwLCAyNjAyLCAyNjA4LCAyNjEwLCAyNjExLCAyNjEzLFxuICAyNjE0LCAyNjE2LCAyNjE3LCAyNjQ5LCAyNjUyLCAyNjU0LCAyNjU0LCAyNjc0LCAyNjc2LCAyNjkzLCAyNzAxLCAyNzAzLCAyNzA1LFxuICAyNzA3LCAyNzI4LCAyNzMwLCAyNzM2LCAyNzM4LCAyNzM5LCAyNzQxLCAyNzQ1LCAyNzQ5LCAyNzQ5LCAyNzY4LCAyNzY4LCAyNzg0LFxuICAyNzg1LCAyODIxLCAyODI4LCAyODMxLCAyODMyLCAyODM1LCAyODU2LCAyODU4LCAyODY0LCAyODY2LCAyODY3LCAyODY5LCAyODczLFxuICAyODc3LCAyODc3LCAyOTA4LCAyOTA5LCAyOTExLCAyOTEzLCAyOTI5LCAyOTI5LCAyOTQ3LCAyOTQ3LCAyOTQ5LCAyOTU0LCAyOTU4LFxuICAyOTYwLCAyOTYyLCAyOTY1LCAyOTY5LCAyOTcwLCAyOTcyLCAyOTcyLCAyOTc0LCAyOTc1LCAyOTc5LCAyOTgwLCAyOTg0LCAyOTg2LFxuICAyOTkwLCAzMDAxLCAzMDI0LCAzMDI0LCAzMDc3LCAzMDg0LCAzMDg2LCAzMDg4LCAzMDkwLCAzMTEyLCAzMTE0LCAzMTIzLCAzMTI1LFxuICAzMTI5LCAzMTMzLCAzMTMzLCAzMTYwLCAzMTYxLCAzMTY4LCAzMTY5LCAzMjA1LCAzMjEyLCAzMjE0LCAzMjE2LCAzMjE4LCAzMjQwLFxuICAzMjQyLCAzMjUxLCAzMjUzLCAzMjU3LCAzMjYxLCAzMjYxLCAzMjk0LCAzMjk0LCAzMjk2LCAzMjk3LCAzMzEzLCAzMzE0LCAzMzMzLFxuICAzMzQwLCAzMzQyLCAzMzQ0LCAzMzQ2LCAzMzg2LCAzMzg5LCAzMzg5LCAzNDA2LCAzNDA2LCAzNDI0LCAzNDI1LCAzNDUwLCAzNDU1LFxuICAzNDYxLCAzNDc4LCAzNDgyLCAzNTA1LCAzNTA3LCAzNTE1LCAzNTE3LCAzNTE3LCAzNTIwLCAzNTI2LCAzNTg1LCAzNjMyLCAzNjM0LFxuICAzNjM1LCAzNjQ4LCAzNjU0LCAzNzEzLCAzNzE0LCAzNzE2LCAzNzE2LCAzNzE5LCAzNzIwLCAzNzIyLCAzNzIyLCAzNzI1LCAzNzI1LFxuICAzNzMyLCAzNzM1LCAzNzM3LCAzNzQzLCAzNzQ1LCAzNzQ3LCAzNzQ5LCAzNzQ5LCAzNzUxLCAzNzUxLCAzNzU0LCAzNzU1LCAzNzU3LFxuICAzNzYwLCAzNzYyLCAzNzYzLCAzNzczLCAzNzczLCAzNzc2LCAzNzgwLCAzNzgyLCAzNzgyLCAzODA0LCAzODA3LCAzODQwLCAzODQwLFxuICAzOTA0LCAzOTExLCAzOTEzLCAzOTQ4LCAzOTc2LCAzOTgwLCA0MDk2LCA0MTM4LCA0MTU5LCA0MTU5LCA0MTc2LCA0MTgxLCA0MTg2LFxuICA0MTg5LCA0MTkzLCA0MTkzLCA0MTk3LCA0MTk4LCA0MjA2LCA0MjA4LCA0MjEzLCA0MjI1LCA0MjM4LCA0MjM4LCA0MjU2LCA0MjkzLFxuICA0Mjk1LCA0Mjk1LCA0MzAxLCA0MzAxLCA0MzA0LCA0MzQ2LCA0MzQ4LCA0NjgwLCA0NjgyLCA0Njg1LCA0Njg4LCA0Njk0LCA0Njk2LFxuICA0Njk2LCA0Njk4LCA0NzAxLCA0NzA0LCA0NzQ0LCA0NzQ2LCA0NzQ5LCA0NzUyLCA0Nzg0LCA0Nzg2LCA0Nzg5LCA0NzkyLCA0Nzk4LFxuICA0ODAwLCA0ODAwLCA0ODAyLCA0ODA1LCA0ODA4LCA0ODIyLCA0ODI0LCA0ODgwLCA0ODgyLCA0ODg1LCA0ODg4LCA0OTU0LCA0OTkyLFxuICA1MDA3LCA1MDI0LCA1MTA4LCA1MTIxLCA1NzQwLCA1NzQzLCA1NzU5LCA1NzYxLCA1Nzg2LCA1NzkyLCA1ODY2LCA1ODcwLCA1ODcyLFxuICA1ODg4LCA1OTAwLCA1OTAyLCA1OTA1LCA1OTIwLCA1OTM3LCA1OTUyLCA1OTY5LCA1OTg0LCA1OTk2LCA1OTk4LCA2MDAwLCA2MDE2LFxuICA2MDY3LCA2MTAzLCA2MTAzLCA2MTA4LCA2MTA4LCA2MTc2LCA2MjYzLCA2MjcyLCA2MzEyLCA2MzE0LCA2MzE0LCA2MzIwLCA2Mzg5LFxuICA2NDAwLCA2NDI4LCA2NDgwLCA2NTA5LCA2NTEyLCA2NTE2LCA2NTI4LCA2NTcxLCA2NTkzLCA2NTk5LCA2NjU2LCA2Njc4LCA2Njg4LFxuICA2NzQwLCA2ODIzLCA2ODIzLCA2OTE3LCA2OTYzLCA2OTgxLCA2OTg3LCA3MDQzLCA3MDcyLCA3MDg2LCA3MDg3LCA3MDk4LCA3MTQxLFxuICA3MTY4LCA3MjAzLCA3MjQ1LCA3MjQ3LCA3MjU4LCA3MjkzLCA3NDAxLCA3NDA0LCA3NDA2LCA3NDA5LCA3NDEzLCA3NDE0LCA3NDI0LFxuICA3NjE1LCA3NjgwLCA3OTU3LCA3OTYwLCA3OTY1LCA3OTY4LCA4MDA1LCA4MDA4LCA4MDEzLCA4MDE2LCA4MDIzLCA4MDI1LCA4MDI1LFxuICA4MDI3LCA4MDI3LCA4MDI5LCA4MDI5LCA4MDMxLCA4MDYxLCA4MDY0LCA4MTE2LCA4MTE4LCA4MTI0LCA4MTI2LCA4MTI2LCA4MTMwLFxuICA4MTMyLCA4MTM0LCA4MTQwLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTU1LCA4MTYwLCA4MTcyLCA4MTc4LCA4MTgwLCA4MTgyLCA4MTg4LFxuICA4MzA1LCA4MzA1LCA4MzE5LCA4MzE5LCA4MzM2LCA4MzQ4LCA4NDUwLCA4NDUwLCA4NDU1LCA4NDU1LCA4NDU4LCA4NDY3LCA4NDY5LFxuICA4NDY5LCA4NDczLCA4NDc3LCA4NDg0LCA4NDg0LCA4NDg2LCA4NDg2LCA4NDg4LCA4NDg4LCA4NDkwLCA4NDkzLCA4NDk1LCA4NTA1LFxuICA4NTA4LCA4NTExLCA4NTE3LCA4NTIxLCA4NTI2LCA4NTI2LCA4NTQ0LCA4NTg0LFxuICAxMTI2NCwgMTEzMTAsIDExMzEyLCAxMTM1OCwgMTEzNjAsIDExNDkyLCAxMTQ5OSwgMTE1MDIsIDExNTA2LCAxMTUwNywgMTE1MjAsXG4gIDExNTU3LCAxMTU1OSwgMTE1NTksIDExNTY1LCAxMTU2NSwgMTE1NjgsIDExNjIzLCAxMTYzMSwgMTE2MzEsIDExNjQ4LCAxMTY3MCxcbiAgMTE2ODAsIDExNjg2LCAxMTY4OCwgMTE2OTQsIDExNjk2LCAxMTcwMiwgMTE3MDQsIDExNzEwLCAxMTcxMiwgMTE3MTgsIDExNzIwLFxuICAxMTcyNiwgMTE3MjgsIDExNzM0LCAxMTczNiwgMTE3NDIsIDExODIzLCAxMTgyMywgMTIyOTMsIDEyMjk1LCAxMjMyMSwgMTIzMjksXG4gIDEyMzM3LCAxMjM0MSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTI0MzgsIDEyNDQ1LCAxMjQ0NywgMTI0NDksIDEyNTM4LCAxMjU0MCxcbiAgMTI1NDMsIDEyNTQ5LCAxMjU4OSwgMTI1OTMsIDEyNjg2LCAxMjcwNCwgMTI3MzAsIDEyNzg0LCAxMjc5OSwgMTMzMTIsIDE5ODkzLFxuICAxOTk2OCwgNDA5MDgsIDQwOTYwLCA0MjEyNCwgNDIxOTIsIDQyMjM3LCA0MjI0MCwgNDI1MDgsIDQyNTEyLCA0MjUyNywgNDI1MzgsXG4gIDQyNTM5LCA0MjU2MCwgNDI2MDYsIDQyNjIzLCA0MjY0NywgNDI2NTYsIDQyNzM1LCA0Mjc3NSwgNDI3ODMsIDQyNzg2LCA0Mjg4OCxcbiAgNDI4OTEsIDQyODk0LCA0Mjg5NiwgNDI4OTksIDQyOTEyLCA0MjkyMiwgNDMwMDAsIDQzMDA5LCA0MzAxMSwgNDMwMTMsIDQzMDE1LFxuICA0MzAxOCwgNDMwMjAsIDQzMDQyLCA0MzA3MiwgNDMxMjMsIDQzMTM4LCA0MzE4NywgNDMyNTAsIDQzMjU1LCA0MzI1OSwgNDMyNTksXG4gIDQzMjc0LCA0MzMwMSwgNDMzMTIsIDQzMzM0LCA0MzM2MCwgNDMzODgsIDQzMzk2LCA0MzQ0MiwgNDM0NzEsIDQzNDcxLCA0MzUyMCxcbiAgNDM1NjAsIDQzNTg0LCA0MzU4NiwgNDM1ODgsIDQzNTk1LCA0MzYxNiwgNDM2MzgsIDQzNjQyLCA0MzY0MiwgNDM2NDgsIDQzNjk1LFxuICA0MzY5NywgNDM2OTcsIDQzNzAxLCA0MzcwMiwgNDM3MDUsIDQzNzA5LCA0MzcxMiwgNDM3MTIsIDQzNzE0LCA0MzcxNCwgNDM3MzksXG4gIDQzNzQxLCA0Mzc0NCwgNDM3NTQsIDQzNzYyLCA0Mzc2NCwgNDM3NzcsIDQzNzgyLCA0Mzc4NSwgNDM3OTAsIDQzNzkzLCA0Mzc5OCxcbiAgNDM4MDgsIDQzODE0LCA0MzgxNiwgNDM4MjIsIDQzOTY4LCA0NDAwMiwgNDQwMzIsIDU1MjAzLCA1NTIxNiwgNTUyMzgsIDU1MjQzLFxuICA1NTI5MSwgNjM3NDQsIDY0MTA5LCA2NDExMiwgNjQyMTcsIDY0MjU2LCA2NDI2MiwgNjQyNzUsIDY0Mjc5LCA2NDI4NSwgNjQyODUsXG4gIDY0Mjg3LCA2NDI5NiwgNjQyOTgsIDY0MzEwLCA2NDMxMiwgNjQzMTYsIDY0MzE4LCA2NDMxOCwgNjQzMjAsIDY0MzIxLCA2NDMyMyxcbiAgNjQzMjQsIDY0MzI2LCA2NDQzMywgNjQ0NjcsIDY0ODI5LCA2NDg0OCwgNjQ5MTEsIDY0OTE0LCA2NDk2NywgNjUwMDgsIDY1MDE5LFxuICA2NTEzNiwgNjUxNDAsIDY1MTQyLCA2NTI3NiwgNjUzMTMsIDY1MzM4LCA2NTM0NSwgNjUzNzAsIDY1MzgyLCA2NTQ3MCwgNjU0NzQsXG4gIDY1NDc5LCA2NTQ4MiwgNjU0ODcsIDY1NDkwLCA2NTQ5NSwgNjU0OTgsIDY1NTAwLFxuXTtcbmNvbnN0IHVuaWNvZGVJZGVudGlmaWVyUGFydDogdTE2W10gPSBbXG4gIDE3MCwgMTcwLCAxODEsIDE4MSwgMTg2LCAxODYsIDE5MiwgMjE0LCAyMTYsIDI0NiwgMjQ4LCA3MDUsIDcxMCwgNzIxLCA3MzYsXG4gIDc0MCwgNzQ4LCA3NDgsIDc1MCwgNzUwLCA3NjgsIDg4NCwgODg2LCA4ODcsIDg5MCwgODkzLCA5MDIsIDkwMiwgOTA0LCA5MDYsXG4gIDkwOCwgOTA4LCA5MTAsIDkyOSwgOTMxLFxuICAxMDEzLCAxMDE1LCAxMTUzLCAxMTU1LCAxMTU5LCAxMTYyLCAxMzE5LCAxMzI5LCAxMzY2LCAxMzY5LCAxMzY5LCAxMzc3LCAxNDE1LFxuICAxNDI1LCAxNDY5LCAxNDcxLCAxNDcxLCAxNDczLCAxNDc0LCAxNDc2LCAxNDc3LCAxNDc5LCAxNDc5LCAxNDg4LCAxNTE0LCAxNTIwLFxuICAxNTIyLCAxNTUyLCAxNTYyLCAxNTY4LCAxNjQxLCAxNjQ2LCAxNzQ3LCAxNzQ5LCAxNzU2LCAxNzU5LCAxNzY4LCAxNzcwLCAxNzg4LFxuICAxNzkxLCAxNzkxLCAxODA4LCAxODY2LCAxODY5LCAxOTY5LCAxOTg0LCAyMDM3LCAyMDQyLCAyMDQyLCAyMDQ4LCAyMDkzLCAyMTEyLFxuICAyMTM5LCAyMjA4LCAyMjA4LCAyMjEwLCAyMjIwLCAyMjc2LCAyMzAyLCAyMzA0LCAyNDAzLCAyNDA2LCAyNDE1LCAyNDE3LCAyNDIzLFxuICAyNDI1LCAyNDMxLCAyNDMzLCAyNDM1LCAyNDM3LCAyNDQ0LCAyNDQ3LCAyNDQ4LCAyNDUxLCAyNDcyLCAyNDc0LCAyNDgwLCAyNDgyLFxuICAyNDgyLCAyNDg2LCAyNDg5LCAyNDkyLCAyNTAwLCAyNTAzLCAyNTA0LCAyNTA3LCAyNTEwLCAyNTE5LCAyNTE5LCAyNTI0LCAyNTI1LFxuICAyNTI3LCAyNTMxLCAyNTM0LCAyNTQ1LCAyNTYxLCAyNTYzLCAyNTY1LCAyNTcwLCAyNTc1LCAyNTc2LCAyNTc5LCAyNjAwLCAyNjAyLFxuICAyNjA4LCAyNjEwLCAyNjExLCAyNjEzLCAyNjE0LCAyNjE2LCAyNjE3LCAyNjIwLCAyNjIwLCAyNjIyLCAyNjI2LCAyNjMxLCAyNjMyLFxuICAyNjM1LCAyNjM3LCAyNjQxLCAyNjQxLCAyNjQ5LCAyNjUyLCAyNjU0LCAyNjU0LCAyNjYyLCAyNjc3LCAyNjg5LCAyNjkxLCAyNjkzLFxuICAyNzAxLCAyNzAzLCAyNzA1LCAyNzA3LCAyNzI4LCAyNzMwLCAyNzM2LCAyNzM4LCAyNzM5LCAyNzQxLCAyNzQ1LCAyNzQ4LCAyNzU3LFxuICAyNzU5LCAyNzYxLCAyNzYzLCAyNzY1LCAyNzY4LCAyNzY4LCAyNzg0LCAyNzg3LCAyNzkwLCAyNzk5LCAyODE3LCAyODE5LCAyODIxLFxuICAyODI4LCAyODMxLCAyODMyLCAyODM1LCAyODU2LCAyODU4LCAyODY0LCAyODY2LCAyODY3LCAyODY5LCAyODczLCAyODc2LCAyODg0LFxuICAyODg3LCAyODg4LCAyODkxLCAyODkzLCAyOTAyLCAyOTAzLCAyOTA4LCAyOTA5LCAyOTExLCAyOTE1LCAyOTE4LCAyOTI3LCAyOTI5LFxuICAyOTI5LCAyOTQ2LCAyOTQ3LCAyOTQ5LCAyOTU0LCAyOTU4LCAyOTYwLCAyOTYyLCAyOTY1LCAyOTY5LCAyOTcwLCAyOTcyLCAyOTcyLFxuICAyOTc0LCAyOTc1LCAyOTc5LCAyOTgwLCAyOTg0LCAyOTg2LCAyOTkwLCAzMDAxLCAzMDA2LCAzMDEwLCAzMDE0LCAzMDE2LCAzMDE4LFxuICAzMDIxLCAzMDI0LCAzMDI0LCAzMDMxLCAzMDMxLCAzMDQ2LCAzMDU1LCAzMDczLCAzMDc1LCAzMDc3LCAzMDg0LCAzMDg2LCAzMDg4LFxuICAzMDkwLCAzMTEyLCAzMTE0LCAzMTIzLCAzMTI1LCAzMTI5LCAzMTMzLCAzMTQwLCAzMTQyLCAzMTQ0LCAzMTQ2LCAzMTQ5LCAzMTU3LFxuICAzMTU4LCAzMTYwLCAzMTYxLCAzMTY4LCAzMTcxLCAzMTc0LCAzMTgzLCAzMjAyLCAzMjAzLCAzMjA1LCAzMjEyLCAzMjE0LCAzMjE2LFxuICAzMjE4LCAzMjQwLCAzMjQyLCAzMjUxLCAzMjUzLCAzMjU3LCAzMjYwLCAzMjY4LCAzMjcwLCAzMjcyLCAzMjc0LCAzMjc3LCAzMjg1LFxuICAzMjg2LCAzMjk0LCAzMjk0LCAzMjk2LCAzMjk5LCAzMzAyLCAzMzExLCAzMzEzLCAzMzE0LCAzMzMwLCAzMzMxLCAzMzMzLCAzMzQwLFxuICAzMzQyLCAzMzQ0LCAzMzQ2LCAzMzg2LCAzMzg5LCAzMzk2LCAzMzk4LCAzNDAwLCAzNDAyLCAzNDA2LCAzNDE1LCAzNDE1LCAzNDI0LFxuICAzNDI3LCAzNDMwLCAzNDM5LCAzNDUwLCAzNDU1LCAzNDU4LCAzNDU5LCAzNDYxLCAzNDc4LCAzNDgyLCAzNTA1LCAzNTA3LCAzNTE1LFxuICAzNTE3LCAzNTE3LCAzNTIwLCAzNTI2LCAzNTMwLCAzNTMwLCAzNTM1LCAzNTQwLCAzNTQyLCAzNTQyLCAzNTQ0LCAzNTUxLCAzNTcwLFxuICAzNTcxLCAzNTg1LCAzNjQyLCAzNjQ4LCAzNjYyLCAzNjY0LCAzNjczLCAzNzEzLCAzNzE0LCAzNzE2LCAzNzE2LCAzNzE5LCAzNzIwLFxuICAzNzIyLCAzNzIyLCAzNzI1LCAzNzI1LCAzNzMyLCAzNzM1LCAzNzM3LCAzNzQzLCAzNzQ1LCAzNzQ3LCAzNzQ5LCAzNzQ5LCAzNzUxLFxuICAzNzUxLCAzNzU0LCAzNzU1LCAzNzU3LCAzNzY5LCAzNzcxLCAzNzczLCAzNzc2LCAzNzgwLCAzNzgyLCAzNzgyLCAzNzg0LCAzNzg5LFxuICAzNzkyLCAzODAxLCAzODA0LCAzODA3LCAzODQwLCAzODQwLCAzODY0LCAzODY1LCAzODcyLCAzODgxLCAzODkzLCAzODkzLCAzODk1LFxuICAzODk1LCAzODk3LCAzODk3LCAzOTAyLCAzOTExLCAzOTEzLCAzOTQ4LCAzOTUzLCAzOTcyLCAzOTc0LCAzOTkxLCAzOTkzLCA0MDI4LFxuICA0MDM4LCA0MDM4LCA0MDk2LCA0MTY5LCA0MTc2LCA0MjUzLCA0MjU2LCA0MjkzLCA0Mjk1LCA0Mjk1LCA0MzAxLCA0MzAxLCA0MzA0LFxuICA0MzQ2LCA0MzQ4LCA0NjgwLCA0NjgyLCA0Njg1LCA0Njg4LCA0Njk0LCA0Njk2LCA0Njk2LCA0Njk4LCA0NzAxLCA0NzA0LCA0NzQ0LFxuICA0NzQ2LCA0NzQ5LCA0NzUyLCA0Nzg0LCA0Nzg2LCA0Nzg5LCA0NzkyLCA0Nzk4LCA0ODAwLCA0ODAwLCA0ODAyLCA0ODA1LCA0ODA4LFxuICA0ODIyLCA0ODI0LCA0ODgwLCA0ODgyLCA0ODg1LCA0ODg4LCA0OTU0LCA0OTU3LCA0OTU5LCA0OTkyLCA1MDA3LCA1MDI0LCA1MTA4LFxuICA1MTIxLCA1NzQwLCA1NzQzLCA1NzU5LCA1NzYxLCA1Nzg2LCA1NzkyLCA1ODY2LCA1ODcwLCA1ODcyLCA1ODg4LCA1OTAwLCA1OTAyLFxuICA1OTA4LCA1OTIwLCA1OTQwLCA1OTUyLCA1OTcxLCA1OTg0LCA1OTk2LCA1OTk4LCA2MDAwLCA2MDAyLCA2MDAzLCA2MDE2LCA2MDk5LFxuICA2MTAzLCA2MTAzLCA2MTA4LCA2MTA5LCA2MTEyLCA2MTIxLCA2MTU1LCA2MTU3LCA2MTYwLCA2MTY5LCA2MTc2LCA2MjYzLCA2MjcyLFxuICA2MzE0LCA2MzIwLCA2Mzg5LCA2NDAwLCA2NDI4LCA2NDMyLCA2NDQzLCA2NDQ4LCA2NDU5LCA2NDcwLCA2NTA5LCA2NTEyLCA2NTE2LFxuICA2NTI4LCA2NTcxLCA2NTc2LCA2NjAxLCA2NjA4LCA2NjE3LCA2NjU2LCA2NjgzLCA2Njg4LCA2NzUwLCA2NzUyLCA2NzgwLCA2NzgzLFxuICA2NzkzLCA2ODAwLCA2ODA5LCA2ODIzLCA2ODIzLCA2OTEyLCA2OTg3LCA2OTkyLCA3MDAxLCA3MDE5LCA3MDI3LCA3MDQwLCA3MTU1LFxuICA3MTY4LCA3MjIzLCA3MjMyLCA3MjQxLCA3MjQ1LCA3MjkzLCA3Mzc2LCA3Mzc4LCA3MzgwLCA3NDE0LCA3NDI0LCA3NjU0LCA3Njc2LFxuICA3OTU3LCA3OTYwLCA3OTY1LCA3OTY4LCA4MDA1LCA4MDA4LCA4MDEzLCA4MDE2LCA4MDIzLCA4MDI1LCA4MDI1LCA4MDI3LCA4MDI3LFxuICA4MDI5LCA4MDI5LCA4MDMxLCA4MDYxLCA4MDY0LCA4MTE2LCA4MTE4LCA4MTI0LCA4MTI2LCA4MTI2LCA4MTMwLCA4MTMyLCA4MTM0LFxuICA4MTQwLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTU1LCA4MTYwLCA4MTcyLCA4MTc4LCA4MTgwLCA4MTgyLCA4MTg4LCA4MjA0LCA4MjA1LFxuICA4MjU1LCA4MjU2LCA4Mjc2LCA4Mjc2LCA4MzA1LCA4MzA1LCA4MzE5LCA4MzE5LCA4MzM2LCA4MzQ4LCA4NDAwLCA4NDEyLCA4NDE3LFxuICA4NDE3LCA4NDIxLCA4NDMyLCA4NDUwLCA4NDUwLCA4NDU1LCA4NDU1LCA4NDU4LCA4NDY3LCA4NDY5LCA4NDY5LCA4NDczLCA4NDc3LFxuICA4NDg0LCA4NDg0LCA4NDg2LCA4NDg2LCA4NDg4LCA4NDg4LCA4NDkwLCA4NDkzLCA4NDk1LCA4NTA1LCA4NTA4LCA4NTExLCA4NTE3LFxuICA4NTIxLCA4NTI2LCA4NTI2LCA4NTQ0LCA4NTg0LFxuICAxMTI2NCwgMTEzMTAsIDExMzEyLCAxMTM1OCwgMTEzNjAsIDExNDkyLCAxMTQ5OSwgMTE1MDcsIDExNTIwLCAxMTU1NywgMTE1NTksXG4gIDExNTU5LCAxMTU2NSwgMTE1NjUsIDExNTY4LCAxMTYyMywgMTE2MzEsIDExNjMxLCAxMTY0NywgMTE2NzAsIDExNjgwLCAxMTY4NixcbiAgMTE2ODgsIDExNjk0LCAxMTY5NiwgMTE3MDIsIDExNzA0LCAxMTcxMCwgMTE3MTIsIDExNzE4LCAxMTcyMCwgMTE3MjYsIDExNzI4LFxuICAxMTczNCwgMTE3MzYsIDExNzQyLCAxMTc0NCwgMTE3NzUsIDExODIzLCAxMTgyMywgMTIyOTMsIDEyMjk1LCAxMjMyMSwgMTIzMzUsXG4gIDEyMzM3LCAxMjM0MSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTI0MzgsIDEyNDQxLCAxMjQ0MiwgMTI0NDUsIDEyNDQ3LCAxMjQ0OSxcbiAgMTI1MzgsIDEyNTQwLCAxMjU0MywgMTI1NDksIDEyNTg5LCAxMjU5MywgMTI2ODYsIDEyNzA0LCAxMjczMCwgMTI3ODQsIDEyNzk5LFxuICAxMzMxMiwgMTk4OTMsIDE5OTY4LCA0MDkwOCwgNDA5NjAsIDQyMTI0LCA0MjE5MiwgNDIyMzcsIDQyMjQwLCA0MjUwOCwgNDI1MTIsXG4gIDQyNTM5LCA0MjU2MCwgNDI2MDcsIDQyNjEyLCA0MjYyMSwgNDI2MjMsIDQyNjQ3LCA0MjY1NSwgNDI3MzcsIDQyNzc1LCA0Mjc4MyxcbiAgNDI3ODYsIDQyODg4LCA0Mjg5MSwgNDI4OTQsIDQyODk2LCA0Mjg5OSwgNDI5MTIsIDQyOTIyLCA0MzAwMCwgNDMwNDcsIDQzMDcyLFxuICA0MzEyMywgNDMxMzYsIDQzMjA0LCA0MzIxNiwgNDMyMjUsIDQzMjMyLCA0MzI1NSwgNDMyNTksIDQzMjU5LCA0MzI2NCwgNDMzMDksXG4gIDQzMzEyLCA0MzM0NywgNDMzNjAsIDQzMzg4LCA0MzM5MiwgNDM0NTYsIDQzNDcxLCA0MzQ4MSwgNDM1MjAsIDQzNTc0LCA0MzU4NCxcbiAgNDM1OTcsIDQzNjAwLCA0MzYwOSwgNDM2MTYsIDQzNjM4LCA0MzY0MiwgNDM2NDMsIDQzNjQ4LCA0MzcxNCwgNDM3MzksIDQzNzQxLFxuICA0Mzc0NCwgNDM3NTksIDQzNzYyLCA0Mzc2NiwgNDM3NzcsIDQzNzgyLCA0Mzc4NSwgNDM3OTAsIDQzNzkzLCA0Mzc5OCwgNDM4MDgsXG4gIDQzODE0LCA0MzgxNiwgNDM4MjIsIDQzOTY4LCA0NDAxMCwgNDQwMTIsIDQ0MDEzLCA0NDAxNiwgNDQwMjUsIDQ0MDMyLCA1NTIwMyxcbiAgNTUyMTYsIDU1MjM4LCA1NTI0MywgNTUyOTEsIDYzNzQ0LCA2NDEwOSwgNjQxMTIsIDY0MjE3LCA2NDI1NiwgNjQyNjIsIDY0Mjc1LFxuICA2NDI3OSwgNjQyODUsIDY0Mjk2LCA2NDI5OCwgNjQzMTAsIDY0MzEyLCA2NDMxNiwgNjQzMTgsIDY0MzE4LCA2NDMyMCwgNjQzMjEsXG4gIDY0MzIzLCA2NDMyNCwgNjQzMjYsIDY0NDMzLCA2NDQ2NywgNjQ4MjksIDY0ODQ4LCA2NDkxMSwgNjQ5MTQsIDY0OTY3LCA2NTAwOCxcbiAgNjUwMTksIDY1MDI0LCA2NTAzOSwgNjUwNTYsIDY1MDYyLCA2NTA3NSwgNjUwNzYsIDY1MTAxLCA2NTEwMywgNjUxMzYsIDY1MTQwLFxuICA2NTE0MiwgNjUyNzYsIDY1Mjk2LCA2NTMwNSwgNjUzMTMsIDY1MzM4LCA2NTM0MywgNjUzNDMsIDY1MzQ1LCA2NTM3MCwgNjUzODIsXG4gIDY1NDcwLCA2NTQ3NCwgNjU0NzksIDY1NDgyLCA2NTQ4NywgNjU0OTAsIDY1NDk1LCA2NTQ5OCwgNjU1MDAsXG5dO1xuXG5mdW5jdGlvbiBsb29rdXBJblVuaWNvZGVNYXAoY29kZTogdTE2LCBtYXA6IHUxNltdKTogYm9vbCB7XG4gIGlmIChjb2RlIDwgbWFwWzBdKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGxvID0gMDtcbiAgdmFyIGhpID0gbWFwLmxlbmd0aDtcbiAgdmFyIG1pZDogaTMyO1xuICB2YXIgbWlkVmFsOiB1MTY7XG5cbiAgd2hpbGUgKGxvICsgMSA8IGhpKSB7XG4gICAgbWlkID0gbG8gKyAoKGhpIC0gbG8pID4+IDEpO1xuICAgIG1pZCAtPSAobWlkICYgMSk7XG4gICAgbWlkVmFsID0gbWFwW21pZF07XG4gICAgaWYgKG1pZFZhbCA8PSBjb2RlICYmIGNvZGUgPD0gbWFwW21pZCArIDFdKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPCBtaWRWYWwpIHtcbiAgICAgIGhpID0gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBsbyA9IG1pZCArIDI7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGNvZGU6IGkzMik6IGJvb2wge1xuICByZXR1cm4gY29kZSA8IDAgfHwgY29kZSA+IDB4ZmZmZiA/IGZhbHNlXG4gICAgICAgOiBsb29rdXBJblVuaWNvZGVNYXAoY29kZSBhcyB1MTYsIHVuaWNvZGVJZGVudGlmaWVyU3RhcnQpO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVJZGVudGlmaWVyUGFydChjb2RlOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGNvZGUgPCAwIHx8IGNvZGUgPiAweGZmZmYgPyBmYWxzZVxuICAgICAgIDogbG9va3VwSW5Vbmljb2RlTWFwKGNvZGUgYXMgdTE2LCB1bmljb2RlSWRlbnRpZmllclBhcnQpO1xufVxuIl19 - -/***/ }), - -/***/ "../src/util/collections.ts": -/*!**********************************!*\ - !*** ../src/util/collections.ts ***! - \**********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; -var __read = (this && this.__read) || function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -function makeArray(original) { - if (original === void 0) { original = null; } - if (original) { - var cloned = new Array(original.length); - for (var i = 0, k = original.length; i < k; ++i) - unchecked(cloned[i] = original[i]); - return cloned; - } - return new Array(); -} -exports.makeArray = makeArray; -function makeSet(original) { - var e_1, _a; - if (original === void 0) { original = null; } - if (original) { - var cloned = new Set(); - try { - for (var original_1 = __values(original), original_1_1 = original_1.next(); !original_1_1.done; original_1_1 = original_1.next()) { - var v = original_1_1.value; - cloned.add(v); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (original_1_1 && !original_1_1.done && (_a = original_1.return)) _a.call(original_1); - } - finally { if (e_1) throw e_1.error; } - } - return cloned; - } - return new Set(); -} -exports.makeSet = makeSet; -function makeMap(original, overrides) { - var e_2, _a, e_3, _b, e_4, _c; - if (original === void 0) { original = null; } - if (overrides === void 0) { overrides = null; } - var cloned = new Map(); - if (original) { - try { - for (var original_2 = __values(original), original_2_1 = original_2.next(); !original_2_1.done; original_2_1 = original_2.next()) { - var _d = __read(original_2_1.value, 2), k = _d[0], v = _d[1]; - cloned.set(k, v); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (original_2_1 && !original_2_1.done && (_a = original_2.return)) _a.call(original_2); - } - finally { if (e_2) throw e_2.error; } - } - if (overrides) - try { - for (var overrides_1 = __values(overrides), overrides_1_1 = overrides_1.next(); !overrides_1_1.done; overrides_1_1 = overrides_1.next()) { - var _e = __read(overrides_1_1.value, 2), k = _e[0], v = _e[1]; - cloned.set(k, v); - } - } - catch (e_3_1) { e_3 = { error: e_3_1 }; } - finally { - try { - if (overrides_1_1 && !overrides_1_1.done && (_b = overrides_1.return)) _b.call(overrides_1); - } - finally { if (e_3) throw e_3.error; } - } - } - else if (overrides) { - try { - for (var overrides_2 = __values(overrides), overrides_2_1 = overrides_2.next(); !overrides_2_1.done; overrides_2_1 = overrides_2.next()) { - var _f = __read(overrides_2_1.value, 2), k = _f[0], v = _f[1]; - cloned.set(k, v); - } - } - catch (e_4_1) { e_4 = { error: e_4_1 }; } - finally { - try { - if (overrides_2_1 && !overrides_2_1.done && (_c = overrides_2.return)) _c.call(overrides_2); - } - finally { if (e_4) throw e_4.error; } - } - } - return cloned; -} -exports.makeMap = makeMap; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9jb2xsZWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBZ0IsU0FBUyxDQUFJLFFBQWdDO0lBQWhDLHlCQUFBLEVBQUEsZUFBZ0M7SUFDM0QsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLElBQUksS0FBSyxFQUFLLENBQUM7QUFDeEIsQ0FBQztBQVBELDhCQU9DO0FBRUQsU0FBZ0IsT0FBTyxDQUFJLFFBQThCOztJQUE5Qix5QkFBQSxFQUFBLGVBQThCO0lBQ3ZELElBQUksUUFBUSxFQUFFO1FBQ1osSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUssQ0FBQzs7WUFDMUIsS0FBYyxJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQWpCLElBQUksQ0FBQyxxQkFBQTtnQkFBYyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQUE7Ozs7Ozs7OztRQUN0QyxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQ0QsT0FBTyxJQUFJLEdBQUcsRUFBSyxDQUFDO0FBQ3RCLENBQUM7QUFQRCwwQkFPQztBQUVELFNBQWdCLE9BQU8sQ0FBTSxRQUFnQyxFQUFFLFNBQWlDOztJQUFuRSx5QkFBQSxFQUFBLGVBQWdDO0lBQUUsMEJBQUEsRUFBQSxnQkFBaUM7SUFDOUYsSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQU8sQ0FBQztJQUM1QixJQUFJLFFBQVEsRUFBRTs7WUFDWixLQUFtQixJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQWxCLElBQUEsa0NBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFBZSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUFBOzs7Ozs7Ozs7UUFDOUMsSUFBSSxTQUFTOztnQkFBRSxLQUFtQixJQUFBLGNBQUEsU0FBQSxTQUFTLENBQUEsb0NBQUE7b0JBQW5CLElBQUEsbUNBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztvQkFBZ0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQUE7Ozs7Ozs7O2FBQUE7S0FDL0Q7U0FBTSxJQUFJLFNBQVMsRUFBRTs7WUFDcEIsS0FBbUIsSUFBQSxjQUFBLFNBQUEsU0FBUyxDQUFBLG9DQUFBO2dCQUFuQixJQUFBLG1DQUFNLEVBQUwsU0FBQyxFQUFFLFNBQUM7Z0JBQWdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQUE7Ozs7Ozs7OztLQUNoRDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFURCwwQkFTQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBtYWtlQXJyYXk8Vj4ob3JpZ2luYWw6IEFycmF5PFY+IHwgbnVsbCA9IG51bGwpOiBBcnJheTxWPiB7XG4gIGlmIChvcmlnaW5hbCkge1xuICAgIGxldCBjbG9uZWQgPSBuZXcgQXJyYXk8Vj4ob3JpZ2luYWwubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMCwgayA9IG9yaWdpbmFsLmxlbmd0aDsgaSA8IGs7ICsraSkgdW5jaGVja2VkKGNsb25lZFtpXSA9IG9yaWdpbmFsW2ldKTtcbiAgICByZXR1cm4gY2xvbmVkO1xuICB9XG4gIHJldHVybiBuZXcgQXJyYXk8Vj4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VTZXQ8Vj4ob3JpZ2luYWw6IFNldDxWPiB8IG51bGwgPSBudWxsKTogU2V0PFY+IHtcbiAgaWYgKG9yaWdpbmFsKSB7XG4gICAgbGV0IGNsb25lZCA9IG5ldyBTZXQ8Vj4oKTtcbiAgICBmb3IgKGxldCB2IG9mIG9yaWdpbmFsKSBjbG9uZWQuYWRkKHYpO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cbiAgcmV0dXJuIG5ldyBTZXQ8Vj4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VNYXA8SyxWPihvcmlnaW5hbDogTWFwPEssVj4gfCBudWxsID0gbnVsbCwgb3ZlcnJpZGVzOiBNYXA8SyxWPiB8IG51bGwgPSBudWxsKTogTWFwPEssVj4ge1xuICB2YXIgY2xvbmVkID0gbmV3IE1hcDxLLFY+KCk7XG4gIGlmIChvcmlnaW5hbCkge1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiBvcmlnaW5hbCkgY2xvbmVkLnNldChrLCB2KTtcbiAgICBpZiAob3ZlcnJpZGVzKSBmb3IgKGxldCBbaywgdl0gb2Ygb3ZlcnJpZGVzKSBjbG9uZWQuc2V0KGssIHYpO1xuICB9IGVsc2UgaWYgKG92ZXJyaWRlcykge1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiBvdmVycmlkZXMpIGNsb25lZC5zZXQoaywgdik7XG4gIH1cbiAgcmV0dXJuIGNsb25lZDtcbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/util/index.ts": -/*!****************************!*\ - !*** ../src/util/index.ts ***! - \****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Various compiler utilities. - * @module util - * @preferred - */ /***/ -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -Object.defineProperty(exports, "__esModule", { value: true }); -__export(__webpack_require__(/*! ./bitset */ "../src/util/bitset.ts")); -__export(__webpack_require__(/*! ./charcode */ "../src/util/charcode.ts")); -__export(__webpack_require__(/*! ./collections */ "../src/util/collections.ts")); -__export(__webpack_require__(/*! ./path */ "../src/util/path.ts")); -__export(__webpack_require__(/*! ./text */ "../src/util/text.ts")); -__export(__webpack_require__(/*! ./binary */ "../src/util/binary.ts")); -/** Tests if `x` is a power of two. */ -function isPowerOf2(x) { - return x != 0 && (x & (x - 1)) == 0; -} -exports.isPowerOf2 = isPowerOf2; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRyxDQUFBLEtBQUs7Ozs7O0FBRVIsOEJBQXlCO0FBQ3pCLGdDQUEyQjtBQUMzQixtQ0FBOEI7QUFDOUIsNEJBQXVCO0FBQ3ZCLDRCQUF1QjtBQUN2Qiw4QkFBeUI7QUFFekIsc0NBQXNDO0FBQ3RDLFNBQWdCLFVBQVUsQ0FBQyxDQUFNO0lBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsZ0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZhcmlvdXMgY29tcGlsZXIgdXRpbGl0aWVzLlxuICogQG1vZHVsZSB1dGlsXG4gKiBAcHJlZmVycmVkXG4gKi8vKioqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9iaXRzZXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NoYXJjb2RlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb2xsZWN0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGF0aFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmluYXJ5XCI7XG5cbi8qKiBUZXN0cyBpZiBgeGAgaXMgYSBwb3dlciBvZiB0d28uICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb3dlck9mMih4OiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIHggIT0gMCAmJiAoeCAmICh4IC0gMSkpID09IDA7XG59XG4iXX0= - -/***/ }), - -/***/ "../src/util/path.ts": -/*!***************************!*\ - !*** ../src/util/path.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -var common_1 = __webpack_require__(/*! ../common */ "../src/common.ts"); -var separator = 47 /* SLASH */; -/** - * Normalizes the specified path, removing interior placeholders. - * Expects a posix-compatible relative path (not Windows compatible). - */ -function normalizePath(path) { - var pos = 0; - var len = path.length; - // trim leading './' - while (pos + 1 < len && - path.charCodeAt(pos) == 46 /* DOT */ && - path.charCodeAt(pos + 1) == separator) { - pos += 2; - } - if (pos > 0 || len < path.length) { - path = path.substring(pos, len); - len -= pos; - pos = 0; - } - var atEnd; - while (pos + 1 < len) { - atEnd = false; - // we are only interested in '/.' sequences ... - if (path.charCodeAt(pos) == separator && - path.charCodeAt(pos + 1) == 46 /* DOT */) { - // '/.' ( '/' | $ ) - atEnd = pos + 2 == len; - if (atEnd || - pos + 2 < len && - path.charCodeAt(pos + 2) == separator) { - path = atEnd - ? path.substring(0, pos) - : path.substring(0, pos) + path.substring(pos + 2); - len -= 2; - continue; - } - // '/.' ( './' | '.' $ ) - atEnd = pos + 3 == len; - if (atEnd && path.charCodeAt(pos + 2) == 46 /* DOT */ || - pos + 3 < len && - path.charCodeAt(pos + 2) == 46 /* DOT */ && - path.charCodeAt(pos + 3) == separator) { - // find preceeding '/' - var ipos = pos; - while (--ipos >= 0) { - if (path.charCodeAt(ipos) == separator) { - if (pos - ipos != 3 || - path.charCodeAt(ipos + 1) != 46 /* DOT */ || - path.charCodeAt(ipos + 2) != 46 /* DOT */) { // exclude '..' itself - path = atEnd - ? path.substring(0, ipos) - : path.substring(0, ipos) + path.substring(pos + 3); - len -= pos + 3 - ipos; - pos = ipos - 1; // incremented again at end of loop - } - break; - } - } - // if there's no preceeding '/', trim start if non-empty - if (ipos < 0 && pos > 0) { - if (pos != 2 || - path.charCodeAt(0) != 46 /* DOT */ || - path.charCodeAt(1) != 46 /* DOT */) { // exclude '..' itself - path = path.substring(pos + 4); - len = path.length; - continue; - } - } - } - } - pos++; - } - return len > 0 ? path : "."; -} -exports.normalizePath = normalizePath; -/** Resolves the specified path relative to the specified origin. */ -function resolvePath(normalizedPath, origin) { - if (normalizedPath.startsWith("std/")) { - return normalizedPath; - } - return normalizePath(dirname(origin) + common_1.PATH_DELIMITER + normalizedPath); -} -exports.resolvePath = resolvePath; -/** Obtains the directory portion of a normalized path. */ -function dirname(normalizedPath) { - var pos = normalizedPath.length; - if (pos <= 1) { - if (pos == 0) - return "."; - if (normalizedPath.charCodeAt(0) == separator) { - return normalizedPath; - } - } - while (--pos > 0) { - if (normalizedPath.charCodeAt(pos) == separator) { - return normalizedPath.substring(0, pos); - } - } - return "."; -} -exports.dirname = dirname; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQixDQUFBLEtBQUs7O0FBTXhCLG9DQUVtQjtBQUVuQixJQUFNLFNBQVMsaUJBQWlCLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLElBQVk7SUFDeEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUV0QixvQkFBb0I7SUFDcEIsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsRUFDckM7UUFDQSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ1Y7SUFFRCxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDaEMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDWCxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQ1Q7SUFFRCxJQUFJLEtBQVcsQ0FBQztJQUNoQixPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFO1FBQ3BCLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFZCwrQ0FBK0M7UUFDL0MsSUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUN4QztZQUNBLG1CQUFtQjtZQUNuQixLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMs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QUM7S0FDdkI7SUFDRCxPQUFPLGFBQWEsQ0FDbEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLHVCQUFjLEdBQUcsY0FBYyxDQUNsRCxDQUFDO0FBQ0osQ0FBQztBQVBELGtDQU9DO0FBRUQsMERBQTBEO0FBQzFELFNBQWdCLE9BQU8sQ0FBQyxjQUFzQjtJQUM1QyxJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtRQUNaLElBQUksR0FBRyxJQUFJLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUN6QixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQzdDLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO0tBQ0Y7SUFDRCxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRTtRQUNoQixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQy9DLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDekM7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQWRELDBCQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgdXRpbCAqLy8qKiovXG5cbmltcG9ydCB7XG4gIENoYXJDb2RlXG59IGZyb20gXCIuL2NoYXJjb2RlXCI7XG5cbmltcG9ydCB7XG4gIFBBVEhfREVMSU1JVEVSXG59IGZyb20gXCIuLi9jb21tb25cIjtcblxuY29uc3Qgc2VwYXJhdG9yID0gQ2hhckNvZGUuU0xBU0g7XG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgc3BlY2lmaWVkIHBhdGgsIHJlbW92aW5nIGludGVyaW9yIHBsYWNlaG9sZGVycy5cbiAqIEV4cGVjdHMgYSBwb3NpeC1jb21wYXRpYmxlIHJlbGF0aXZlIHBhdGggKG5vdCBXaW5kb3dzIGNvbXBhdGlibGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcG9zID0gMDtcbiAgdmFyIGxlbiA9IHBhdGgubGVuZ3RoO1xuXG4gIC8vIHRyaW0gbGVhZGluZyAnLi8nXG4gIHdoaWxlIChwb3MgKyAxIDwgbGVuICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gQ2hhckNvZGUuRE9UICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDEpID09IHNlcGFyYXRvclxuICApIHtcbiAgICBwb3MgKz0gMjtcbiAgfVxuXG4gIGlmIChwb3MgPiAwIHx8IGxlbiA8IHBhdGgubGVuZ3RoKSB7XG4gICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBvcywgbGVuKTtcbiAgICBsZW4gLT0gcG9zO1xuICAgIHBvcyA9IDA7XG4gIH1cblxuICB2YXIgYXRFbmQ6IGJvb2w7XG4gIHdoaWxlIChwb3MgKyAxIDwgbGVuKSB7XG4gICAgYXRFbmQgPSBmYWxzZTtcblxuICAgIC8vIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gJy8uJyBzZXF1ZW5jZXMgLi4uXG4gICAgaWYgKFxuICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gc2VwYXJhdG9yICYmXG4gICAgICBwYXRoLmNoYXJDb2RlQXQocG9zICsgMSkgPT0gQ2hhckNvZGUuRE9UXG4gICAgKSB7XG4gICAgICAvLyAnLy4nICggJy8nIHwgJCApXG4gICAgICBhdEVuZCA9IHBvcyArIDIgPT0gbGVuO1xuICAgICAgaWYgKGF0RW5kIHx8XG4gICAgICAgIHBvcyArIDIgPCBsZW4gJiZcbiAgICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDIpID09IHNlcGFyYXRvclxuICAgICAgKSB7XG4gICAgICAgIHBhdGggPSBhdEVuZFxuICAgICAgICAgID8gcGF0aC5zdWJzdHJpbmcoMCwgcG9zKVxuICAgICAgICAgIDogcGF0aC5zdWJzdHJpbmcoMCwgcG9zKSArIHBhdGguc3Vic3RyaW5nKHBvcyArIDIpO1xuICAgICAgICBsZW4gLT0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vICcvLicgKCAnLi8nIHwgJy4nICQgKVxuICAgICAgYXRFbmQgPSBwb3MgKyAzID09IGxlbjtcbiAgICAgIGlmIChhdEVuZCAmJiBwYXRoLmNoYXJDb2RlQXQocG9zICsgMikgPT0gQ2hhckNvZGUuRE9UIHx8XG4gICAgICAgIHBvcyArIDMgPCBsZW4gJiZcbiAgICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDIpID09IENoYXJDb2RlLkRPVCAmJlxuICAgICAgICBwYXRoLmNoYXJDb2RlQXQocG9zICsgMykgPT0gc2VwYXJhdG9yXG4gICAgICApIHtcbiAgICAgICAgLy8gZmluZCBwcmVjZWVkaW5nICcvJ1xuICAgICAgICBsZXQgaXBvcyA9IHBvcztcbiAgICAgICAgd2hpbGUgKC0taXBvcyA+PSAwKSB7XG4gICAgICAgICAgaWYgKHBhdGguY2hhckNvZGVBdChpcG9zKSA9PSBzZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGlmIChwb3MgLSBpcG9zICE9IDMgfHxcbiAgICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KGlwb3MgKyAxKSAhPSBDaGFyQ29kZS5ET1QgfHxcbiAgICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KGlwb3MgKyAyKSAhPSBDaGFyQ29kZS5ET1RcbiAgICAgICAgICAgICkgeyAvLyBleGNsdWRlICcuLicgaXRzZWxmXG4gICAgICAgICAgICAgIHBhdGggPSBhdEVuZFxuICAgICAgICAgICAgICAgID8gcGF0aC5zdWJzdHJpbmcoMCwgaXBvcylcbiAgICAgICAgICAgICAgICA6IHBhdGguc3Vic3RyaW5nKDAsIGlwb3MpICsgcGF0aC5zdWJzdHJpbmcocG9zICsgMyk7XG4gICAgICAgICAgICAgIGxlbiAtPSBwb3MgKyAzIC0gaXBvcztcbiAgICAgICAgICAgICAgcG9zID0gaXBvcyAtIDE7IC8vIGluY3JlbWVudGVkIGFnYWluIGF0IGVuZCBvZiBsb29wXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGVyZSdzIG5vIHByZWNlZWRpbmcgJy8nLCB0cmltIHN0YXJ0IGlmIG5vbi1lbXB0eVxuICAgICAgICBpZiAoaXBvcyA8IDAgJiYgcG9zID4gMCkge1xuICAgICAgICAgIGlmIChwb3MgIT0gMiB8fFxuICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KDApICE9IENoYXJDb2RlLkRPVCB8fFxuICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KDEpICE9IENoYXJDb2RlLkRPVFxuICAgICAgICAgICkgeyAvLyBleGNsdWRlICcuLicgaXRzZWxmXG4gICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocG9zICsgNCk7XG4gICAgICAgICAgICBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBwb3MrKztcbiAgfVxuICByZXR1cm4gbGVuID4gMCA/IHBhdGggOiBcIi5cIjtcbn1cblxuLyoqIFJlc29sdmVzIHRoZSBzcGVjaWZpZWQgcGF0aCByZWxhdGl2ZSB0byB0aGUgc3BlY2lmaWVkIG9yaWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGF0aChub3JtYWxpemVkUGF0aDogc3RyaW5nLCBvcmlnaW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKFwic3RkL1wiKSkge1xuICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplUGF0aChcbiAgICBkaXJuYW1lKG9yaWdpbikgKyBQQVRIX0RFTElNSVRFUiArIG5vcm1hbGl6ZWRQYXRoXG4gICk7XG59XG5cbi8qKiBPYnRhaW5zIHRoZSBkaXJlY3RvcnkgcG9ydGlvbiBvZiBhIG5vcm1hbGl6ZWQgcGF0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcG9zID0gbm9ybWFsaXplZFBhdGgubGVuZ3RoO1xuICBpZiAocG9zIDw9IDEpIHtcbiAgICBpZiAocG9zID09IDApIHJldHVybiBcIi5cIjtcbiAgICBpZiAobm9ybWFsaXplZFBhdGguY2hhckNvZGVBdCgwKSA9PSBzZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKC0tcG9zID4gMCkge1xuICAgIGlmIChub3JtYWxpemVkUGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gc2VwYXJhdG9yKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplZFBhdGguc3Vic3RyaW5nKDAsIHBvcyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBcIi5cIjtcbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/util/text.ts": -/*!***************************!*\ - !*** ../src/util/text.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -var indentX1 = " "; -var indentX2 = " "; -var indentX4 = " "; -/** Creates an indentation matching the number of specified levels. */ -function indent(sb, level) { - while (level >= 4) { - sb.push(indentX4); - level -= 4; - } - if (level >= 2) { - sb.push(indentX2); - level -= 2; - } - if (level) { - sb.push(indentX1); - } -} -exports.indent = indent; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3RleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQixDQUFBLEtBQUs7O0FBRXhCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QixJQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFDeEIsSUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBRTVCLHNFQUFzRTtBQUN0RSxTQUFnQixNQUFNLENBQUMsRUFBWSxFQUFFLEtBQVU7SUFDN0MsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2pCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEIsS0FBSyxJQUFJLENBQUMsQ0FBQztLQUNaO0lBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2QsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQixLQUFLLElBQUksQ0FBQyxDQUFDO0tBQ1o7SUFDRCxJQUFJLEtBQUssRUFBRTtRQUNULEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbkI7QUFDSCxDQUFDO0FBWkQsd0JBWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuY29uc3QgaW5kZW50WDEgPSBcIiAgXCI7XG5jb25zdCBpbmRlbnRYMiA9IFwiICAgIFwiO1xuY29uc3QgaW5kZW50WDQgPSBcIiAgICAgICAgXCI7XG5cbi8qKiBDcmVhdGVzIGFuIGluZGVudGF0aW9uIG1hdGNoaW5nIHRoZSBudW1iZXIgb2Ygc3BlY2lmaWVkIGxldmVscy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRlbnQoc2I6IHN0cmluZ1tdLCBsZXZlbDogaTMyKTogdm9pZCB7XG4gIHdoaWxlIChsZXZlbCA+PSA0KSB7XG4gICAgc2IucHVzaChpbmRlbnRYNCk7XG4gICAgbGV2ZWwgLT0gNDtcbiAgfVxuICBpZiAobGV2ZWwgPj0gMikge1xuICAgIHNiLnB1c2goaW5kZW50WDIpO1xuICAgIGxldmVsIC09IDI7XG4gIH1cbiAgaWYgKGxldmVsKSB7XG4gICAgc2IucHVzaChpbmRlbnRYMSk7XG4gIH1cbn1cbiJdfQ== - -/***/ }), - -/***/ "../std/assembly/shared/feature.ts": -/*!*****************************************!*\ - !*** ../std/assembly/shared/feature.ts ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// This file is shared with the compiler and must remain portable -Object.defineProperty(exports, "__esModule", { value: true }); -/** Indicates specific features to activate. */ -var Feature; -(function (Feature) { - /** No additional features. */ - Feature[Feature["NONE"] = 0] = "NONE"; - /** Sign extension operations. */ - Feature[Feature["SIGN_EXTENSION"] = 1] = "SIGN_EXTENSION"; - /** Mutable global imports and exports. */ - Feature[Feature["MUTABLE_GLOBAL"] = 2] = "MUTABLE_GLOBAL"; - /** Bulk memory operations. */ - Feature[Feature["BULK_MEMORY"] = 4] = "BULK_MEMORY"; - /** SIMD types and operations. */ - Feature[Feature["SIMD"] = 8] = "SIMD"; - /** Threading and atomic operations. */ - Feature[Feature["THREADS"] = 16] = "THREADS"; // see: https://github.com/WebAssembly/threads -})(Feature = exports.Feature || (exports.Feature = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3N0ZC9hc3NlbWJseS9zaGFyZWQvZmVhdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUVBQWlFOztBQUVqRSwrQ0FBK0M7QUFDL0MsSUFBa0IsT0FhakI7QUFiRCxXQUFrQixPQUFPO0lBQ3ZCLDhCQUE4QjtJQUM5QixxQ0FBUSxDQUFBO0lBQ1IsaUNBQWlDO0lBQ2pDLHlEQUF1QixDQUFBO0lBQ3ZCLDBDQUEwQztJQUMxQyx5REFBdUIsQ0FBQTtJQUN2Qiw4QkFBOEI7SUFDOUIsbURBQW9CLENBQUE7SUFDcEIsaUNBQWlDO0lBQ2pDLHFDQUFhLENBQUE7SUFDYix1Q0FBdUM7SUFDdkMsNENBQWdCLENBQUEsQ0FBQyw4Q0FBOEM7QUFDakUsQ0FBQyxFQWJpQixPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFheEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgc2hhcmVkIHdpdGggdGhlIGNvbXBpbGVyIGFuZCBtdXN0IHJlbWFpbiBwb3J0YWJsZVxuXG4vKiogSW5kaWNhdGVzIHNwZWNpZmljIGZlYXR1cmVzIHRvIGFjdGl2YXRlLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gRmVhdHVyZSB7XG4gIC8qKiBObyBhZGRpdGlvbmFsIGZlYXR1cmVzLiAqL1xuICBOT05FID0gMCxcbiAgLyoqIFNpZ24gZXh0ZW5zaW9uIG9wZXJhdGlvbnMuICovXG4gIFNJR05fRVhURU5TSU9OID0gMSA8PCAwLCAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9zaWduLWV4dGVuc2lvbi1vcHNcbiAgLyoqIE11dGFibGUgZ2xvYmFsIGltcG9ydHMgYW5kIGV4cG9ydHMuICovXG4gIE1VVEFCTEVfR0xPQkFMID0gMSA8PCAxLCAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9tdXRhYmxlLWdsb2JhbFxuICAvKiogQnVsayBtZW1vcnkgb3BlcmF0aW9ucy4gKi9cbiAgQlVMS19NRU1PUlkgPSAxIDw8IDIsIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2J1bGstbWVtb3J5LW9wZXJhdGlvbnNcbiAgLyoqIFNJTUQgdHlwZXMgYW5kIG9wZXJhdGlvbnMuICovXG4gIFNJTUQgPSAxIDw8IDMsIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L3NpbWRcbiAgLyoqIFRocmVhZGluZyBhbmQgYXRvbWljIG9wZXJhdGlvbnMuICovXG4gIFRIUkVBRFMgPSAxIDw8IDQgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvdGhyZWFkc1xufVxuIl19 - -/***/ }), - -/***/ "../std/assembly/shared/target.ts": -/*!****************************************!*\ - !*** ../std/assembly/shared/target.ts ***! - \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// This file is shared with the compiler and must remain portable -Object.defineProperty(exports, "__esModule", { value: true }); -/** Compilation target. */ -var Target; -(function (Target) { - /** WebAssembly with 32-bit pointers. */ - Target[Target["WASM32"] = 0] = "WASM32"; - /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */ - Target[Target["WASM64"] = 1] = "WASM64"; - /** Portable. */ - Target[Target["JS"] = 2] = "JS"; -})(Target = exports.Target || (exports.Target = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3RkL2Fzc2VtYmx5L3NoYXJlZC90YXJnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlFQUFpRTs7QUFFakUsMEJBQTBCO0FBQzFCLElBQVksTUFPWDtBQVBELFdBQVksTUFBTTtJQUNoQix3Q0FBd0M7SUFDeEMsdUNBQU0sQ0FBQTtJQUNOLDJGQUEyRjtJQUMzRix1Q0FBTSxDQUFBO0lBQ04sZ0JBQWdCO0lBQ2hCLCtCQUFFLENBQUE7QUFDSixDQUFDLEVBUFcsTUFBTSxHQUFOLGNBQU0sS0FBTixjQUFNLFFBT2pCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIHNoYXJlZCB3aXRoIHRoZSBjb21waWxlciBhbmQgbXVzdCByZW1haW4gcG9ydGFibGVcblxuLyoqIENvbXBpbGF0aW9uIHRhcmdldC4gKi9cbmV4cG9ydCBlbnVtIFRhcmdldCB7XG4gIC8qKiBXZWJBc3NlbWJseSB3aXRoIDMyLWJpdCBwb2ludGVycy4gKi9cbiAgV0FTTTMyLFxuICAvKiogV2ViQXNzZW1ibHkgd2l0aCA2NC1iaXQgcG9pbnRlcnMuIEV4cGVyaW1lbnRhbCBhbmQgbm90IHN1cHBvcnRlZCBieSBhbnkgcnVudGltZSB5ZXQuICovXG4gIFdBU002NCxcbiAgLyoqIFBvcnRhYmxlLiAqL1xuICBKU1xufVxuIl19 - -/***/ }), - -/***/ "../std/assembly/shared/typeinfo.ts": -/*!******************************************!*\ - !*** ../std/assembly/shared/typeinfo.ts ***! - \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// This file is shared with the compiler and must remain portable -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕ -// 3 2 1 -// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits -// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base -// │ count │ -// ╞═══════════════════════════════════════════════════════════════╡ ┐ -// │ Typeinfo#flags [id=0] │ id < count -// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ -// │ Typeinfo#base [id=0] │ -// ├───────────────────────────────────────────────────────────────┤ -// │ ... │ -/** Runtime type information data structure. */ -var Typeinfo = /** @class */ (function () { - function Typeinfo() { - } - Typeinfo = __decorate([ - (()=>{}) - ], Typeinfo); - return Typeinfo; -}()); -exports.Typeinfo = Typeinfo; -/** Runtime type information flags. */ -var TypeinfoFlags; -(function (TypeinfoFlags) { - /** No specific flags. */ - TypeinfoFlags[TypeinfoFlags["NONE"] = 0] = "NONE"; - /** Type is an `ArrayBufferView`. */ - TypeinfoFlags[TypeinfoFlags["ARRAYBUFFERVIEW"] = 1] = "ARRAYBUFFERVIEW"; - /** Type is an `Array`. */ - TypeinfoFlags[TypeinfoFlags["ARRAY"] = 2] = "ARRAY"; - /** Type is a `Set`. */ - TypeinfoFlags[TypeinfoFlags["SET"] = 4] = "SET"; - /** Type is a `Map`. */ - TypeinfoFlags[TypeinfoFlags["MAP"] = 8] = "MAP"; - /** Type is inherently acyclic. */ - TypeinfoFlags[TypeinfoFlags["ACYCLIC"] = 16] = "ACYCLIC"; - /** Value alignment of 1 byte. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_0"] = 32] = "VALUE_ALIGN_0"; - /** Value alignment of 2 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_1"] = 64] = "VALUE_ALIGN_1"; - /** Value alignment of 4 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_2"] = 128] = "VALUE_ALIGN_2"; - /** Value alignment of 8 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_3"] = 256] = "VALUE_ALIGN_3"; - /** Value alignment of 16 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_4"] = 512] = "VALUE_ALIGN_4"; - /** Value is a signed type. */ - TypeinfoFlags[TypeinfoFlags["VALUE_SIGNED"] = 1024] = "VALUE_SIGNED"; - /** Value is a float type. */ - TypeinfoFlags[TypeinfoFlags["VALUE_FLOAT"] = 2048] = "VALUE_FLOAT"; - /** Value type is nullable. */ - TypeinfoFlags[TypeinfoFlags["VALUE_NULLABLE"] = 4096] = "VALUE_NULLABLE"; - /** Value type is managed. */ - TypeinfoFlags[TypeinfoFlags["VALUE_MANAGED"] = 8192] = "VALUE_MANAGED"; - /** Key alignment of 1 byte. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_0"] = 16384] = "KEY_ALIGN_0"; - /** Key alignment of 2 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_1"] = 32768] = "KEY_ALIGN_1"; - /** Key alignment of 4 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_2"] = 65536] = "KEY_ALIGN_2"; - /** Key alignment of 8 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_3"] = 131072] = "KEY_ALIGN_3"; - /** Key alignment of 16 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_4"] = 262144] = "KEY_ALIGN_4"; - /** Key is a signed type. */ - TypeinfoFlags[TypeinfoFlags["KEY_SIGNED"] = 524288] = "KEY_SIGNED"; - /** Key is a float type. */ - TypeinfoFlags[TypeinfoFlags["KEY_FLOAT"] = 1048576] = "KEY_FLOAT"; - /** Key type is nullable. */ - TypeinfoFlags[TypeinfoFlags["KEY_NULLABLE"] = 2097152] = "KEY_NULLABLE"; - /** Key type is managed. */ - TypeinfoFlags[TypeinfoFlags["KEY_MANAGED"] = 4194304] = "KEY_MANAGED"; -})(TypeinfoFlags = exports.TypeinfoFlags || (exports.TypeinfoFlags = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zdGQvYXNzZW1ibHkvc2hhcmVkL3R5cGVpbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpRUFBaUU7Ozs7Ozs7O0FBRWpFLG9FQUFvRTtBQUNwRSwrQ0FBK0M7QUFDL0MseUVBQXlFO0FBQ3pFLG1GQUFtRjtBQUNuRixvRUFBb0U7QUFDcEUsc0VBQXNFO0FBQ3RFLCtFQUErRTtBQUMvRSxvRUFBb0U7QUFDcEUsb0VBQW9FO0FBQ3BFLG9FQUFvRTtBQUNwRSxvRUFBb0U7QUFFcEUsK0NBQStDO0FBRS9DO0lBQUE7SUFLQSxDQUFDO0lBTFksUUFBUTtRQURwQixTQUFTO09BQ0csUUFBUSxDQUtwQjtJQUFELGVBQUM7Q0FBQSxBQUxELElBS0M7QUFMWSw0QkFBUTtBQU9yQixzQ0FBc0M7QUFDdEMsSUFBa0IsYUFpRGpCO0FBakRELFdBQWtCLGFBQWE7SUFDN0IseUJBQXlCO0lBQ3pCLGlEQUFRLENBQUE7SUFDUixvQ0FBb0M7SUFDcEMsdUVBQXdCLENBQUE7SUFDeEIsMEJBQTBCO0lBQzFCLG1EQUFjLENBQUE7SUFDZCx1QkFBdUI7SUFDdkIsK0NBQVksQ0FBQTtJQUNaLHVCQUF1QjtJQUN2QiwrQ0FBWSxDQUFBO0lBQ1osa0NBQWtDO0lBQ2xDLHdEQUFnQixDQUFBO0lBQ2hCLGlDQUFpQztJQUNqQyxvRUFBc0IsQ0FBQTtJQUN0QixrQ0FBa0M7SUFDbEMsb0VBQXNCLENBQUE7SUFDdEIsa0NBQWtDO0lBQ2xDLHFFQUFzQixDQUFBO0lBQ3RCLGtDQUFrQztJQUNsQyxxRUFBc0IsQ0FBQTtJQUN0QixtQ0FBbUM7SUFDbkMscUVBQXNCLENBQUE7SUFDdEIsOEJBQThCO0lBQzlCLG9FQUFzQixDQUFBO0lBQ3RCLDZCQUE2QjtJQUM3QixrRUFBcUIsQ0FBQTtJQUNyQiw4QkFBOEI7SUFDOUIsd0VBQXdCLENBQUE7SUFDeEIsNkJBQTZCO0lBQzdCLHNFQUF1QixDQUFBO0lBQ3ZCLCtCQUErQjtJQUMvQixtRUFBcUIsQ0FBQTtJQUNyQixnQ0FBZ0M7SUFDaEMsbUVBQXFCLENBQUE7SUFDckIsZ0NBQWdDO0lBQ2hDLG1FQUFxQixDQUFBO0lBQ3JCLGdDQUFnQztJQUNoQyxvRUFBcUIsQ0FBQTtJQUNyQixpQ0FBaUM7SUFDakMsb0VBQXFCLENBQUE7SUFDckIsNEJBQTRCO0lBQzVCLGtFQUFvQixDQUFBO0lBQ3BCLDJCQUEyQjtJQUMzQixpRUFBbUIsQ0FBQTtJQUNuQiw0QkFBNEI7SUFDNUIsdUVBQXNCLENBQUE7SUFDdEIsMkJBQTJCO0lBQzNCLHFFQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFqRGlCLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBaUQ5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBzaGFyZWQgd2l0aCB0aGUgY29tcGlsZXIgYW5kIG11c3QgcmVtYWluIHBvcnRhYmxlXG5cbi8vIOKVkuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCBUeXBlaW5mbyBpbnRlcnByZXRhdGlvbiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZVcbi8vICAgIDMgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAxXG4vLyAgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwICBiaXRzXG4vLyDilJzilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilKQg4peE4pSAIF9fcnR0aV9iYXNlXG4vLyDilIIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIJcbi8vIOKVnuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoSDilJBcbi8vIOKUgiAgICAgICAgICAgICAgICAgICAgICBUeXBlaW5mbyNmbGFncyBbaWQ9MF0gICAgICAgICAgICAgICAgICAgIOKUgiBpZCA8IGNvdW50XG4vLyDilJwg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUpFxuLy8g4pSCICAgICAgICAgICAgICAgICAgICAgIFR5cGVpbmZvI2Jhc2UgIFtpZD0wXSAgICAgICAgICAgICAgICAgICAg4pSCXG4vLyDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbi8vIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUglxuXG4vKiogUnVudGltZSB0eXBlIGluZm9ybWF0aW9uIGRhdGEgc3RydWN0dXJlLiAqL1xuQHVubWFuYWdlZFxuZXhwb3J0IGNsYXNzIFR5cGVpbmZvIHtcbiAgLyoqIEZsYWdzIGRlc2NyaWJpbmcgdGhlIHNoYXBlIG9mIHRoaXMgY2xhc3MgdHlwZS4gKi9cbiAgZmxhZ3M6IFR5cGVpbmZvRmxhZ3M7XG4gIC8qKiBCYXNlIGNsYXNzIGlkIG9yIGAwYCBpZiBub25lLiAqL1xuICBiYXNlOiB1MzI7XG59XG5cbi8qKiBSdW50aW1lIHR5cGUgaW5mb3JtYXRpb24gZmxhZ3MuICovXG5leHBvcnQgY29uc3QgZW51bSBUeXBlaW5mb0ZsYWdzIHtcbiAgLyoqIE5vIHNwZWNpZmljIGZsYWdzLiAqL1xuICBOT05FID0gMCxcbiAgLyoqIFR5cGUgaXMgYW4gYEFycmF5QnVmZmVyVmlld2AuICovXG4gIEFSUkFZQlVGRkVSVklFVyA9IDEgPDwgMCxcbiAgLyoqIFR5cGUgaXMgYW4gYEFycmF5YC4gKi9cbiAgQVJSQVkgPSAxIDw8IDEsXG4gIC8qKiBUeXBlIGlzIGEgYFNldGAuICovXG4gIFNFVCA9IDEgPDwgMixcbiAgLyoqIFR5cGUgaXMgYSBgTWFwYC4gKi9cbiAgTUFQID0gMSA8PCAzLFxuICAvKiogVHlwZSBpcyBpbmhlcmVudGx5IGFjeWNsaWMuICovXG4gIEFDWUNMSUMgPSAxIDw8IDQsXG4gIC8qKiBWYWx1ZSBhbGlnbm1lbnQgb2YgMSBieXRlLiAqL1xuICBWQUxVRV9BTElHTl8wID0gMSA8PCA1LFxuICAvKiogVmFsdWUgYWxpZ25tZW50IG9mIDIgYnl0ZXMuICovXG4gIFZBTFVFX0FMSUdOXzEgPSAxIDw8IDYsXG4gIC8qKiBWYWx1ZSBhbGlnbm1lbnQgb2YgNCBieXRlcy4gKi9cbiAgVkFMVUVfQUxJR05fMiA9IDEgPDwgNyxcbiAgLyoqIFZhbHVlIGFsaWdubWVudCBvZiA4IGJ5dGVzLiAqL1xuICBWQUxVRV9BTElHTl8zID0gMSA8PCA4LFxuICAvKiogVmFsdWUgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAqL1xuICBWQUxVRV9BTElHTl80ID0gMSA8PCA5LFxuICAvKiogVmFsdWUgaXMgYSBzaWduZWQgdHlwZS4gKi9cbiAgVkFMVUVfU0lHTkVEID0gMSA8PCAxMCxcbiAgLyoqIFZhbHVlIGlzIGEgZmxvYXQgdHlwZS4gKi9cbiAgVkFMVUVfRkxPQVQgPSAxIDw8IDExLFxuICAvKiogVmFsdWUgdHlwZSBpcyBudWxsYWJsZS4gKi9cbiAgVkFMVUVfTlVMTEFCTEUgPSAxIDw8IDEyLFxuICAvKiogVmFsdWUgdHlwZSBpcyBtYW5hZ2VkLiAqL1xuICBWQUxVRV9NQU5BR0VEID0gMSA8PCAxMyxcbiAgLyoqIEtleSBhbGlnbm1lbnQgb2YgMSBieXRlLiAqL1xuICBLRVlfQUxJR05fMCA9IDEgPDwgMTQsXG4gIC8qKiBLZXkgYWxpZ25tZW50IG9mIDIgYnl0ZXMuICovXG4gIEtFWV9BTElHTl8xID0gMSA8PCAxNSxcbiAgLyoqIEtleSBhbGlnbm1lbnQgb2YgNCBieXRlcy4gKi9cbiAgS0VZX0FMSUdOXzIgPSAxIDw8IDE2LFxuICAvKiogS2V5IGFsaWdubWVudCBvZiA4IGJ5dGVzLiAqL1xuICBLRVlfQUxJR05fMyA9IDEgPDwgMTcsXG4gIC8qKiBLZXkgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAqL1xuICBLRVlfQUxJR05fNCA9IDEgPDwgMTgsXG4gIC8qKiBLZXkgaXMgYSBzaWduZWQgdHlwZS4gKi9cbiAgS0VZX1NJR05FRCA9IDEgPDwgMTksXG4gIC8qKiBLZXkgaXMgYSBmbG9hdCB0eXBlLiAqL1xuICBLRVlfRkxPQVQgPSAxIDw8IDIwLFxuICAvKiogS2V5IHR5cGUgaXMgbnVsbGFibGUuICovXG4gIEtFWV9OVUxMQUJMRSA9IDEgPDwgMjEsXG4gIC8qKiBLZXkgdHlwZSBpcyBtYW5hZ2VkLiAqL1xuICBLRVlfTUFOQUdFRCA9IDEgPDwgMjJcbn1cbiJdfQ== - -/***/ }), - -/***/ "../std/portable/index.js": -/*!********************************!*\ - !*** ../std/portable/index.js ***! - \********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {/** @module std/portable *//***/ - -var globalScope = typeof window !== "undefined" && window || typeof global !== "undefined" && global || self; - -globalScope.ASC_TARGET = 2; // Target.JS -globalScope.ASC_NO_ASSERT = false; -globalScope.ASC_MEMORY_BASE = 0; -globalScope.ASC_OPTIMIZE_LEVEL = 3; -globalScope.ASC_SHRINK_LEVEL = 0; -globalScope.ASC_FEATURE_MUTABLE_GLOBAL = false; -globalScope.ASC_FEATURE_SIGN_EXTENSION = false; -globalScope.ASC_FEATURE_BULK_MEMORY = false; -globalScope.ASC_FEATURE_SIMD = false; -globalScope.ASC_FEATURE_THREADS = false; - -var F64 = new Float64Array(1); -var U64 = new Uint32Array(F64.buffer); - -Object.defineProperties( - globalScope["i8"] = function i8(value) { return value << 24 >> 24; } -, { - "MIN_VALUE": { value: -128, writable: false }, - "MAX_VALUE": { value: 127, writable: false } -}); - -Object.defineProperties( - globalScope["i16"] = function i16(value) { return value << 16 >> 16; } -, { - "MIN_VALUE": { value: -32768, writable: false }, - "MAX_VALUE": { value: 32767, writable: false } -}); - -Object.defineProperties( - globalScope["i32"] = globalScope["isize"] = function i32(value) { return value | 0; } -, { - "MIN_VALUE": { value: -2147483648, writable: false }, - "MAX_VALUE": { value: 2147483647, writable: false } -}); - -Object.defineProperties( - globalScope["u8"] = function u8(value) { return value & 0xff; } -, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 255, writable: false } -}); - -Object.defineProperties( - globalScope["u16"] = function u16(value) { return value & 0xffff; } -, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 65535, writable: false } -}); - -Object.defineProperties( - globalScope["u32"] = globalScope["usize"] = function u32(value) { return value >>> 0; } -, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 4294967295, writable: false } -}); - -Object.defineProperties( - globalScope["bool"] = function bool(value) { return !!value; } -, { - "MIN_VALUE": { value: false, writable: false }, - "MAX_VALUE": { value: true, writable: false } -}); - -Object.defineProperties( - globalScope["f32"] = function f32(value) { return Math.fround(value); } -, { - "EPSILON": { value: Math.fround(1.1920929e-07), writable: false }, - "MIN_VALUE": { value: Math.fround(1.4012985e-45), writable: false }, - "MAX_VALUE": { value: Math.fround(3.4028235e+38), writable: false }, - "MIN_NORMAL_VALUE": { value: Math.fround(1.17549435e-38), writable: false }, - "MIN_SAFE_INTEGER": { value: -16777215, writable: false }, - "MAX_SAFE_INTEGER": { value: 16777215, writable: false } -}); - -Object.defineProperties( - globalScope["f64"] = function f64(value) { return +value; } -, { - "EPSILON": { value: 2.2204460492503131e-16, writable: false }, - "MIN_VALUE": { value: 5e-324, writable: false }, - "MAX_VALUE": { value: 1.7976931348623157e+308, writable: false }, - "MIN_NORMAL_VALUE": { value: 2.2250738585072014e-308 , writable: false }, - "MIN_SAFE_INTEGER": { value: -9007199254740991, writable: false }, - "MAX_SAFE_INTEGER": { value: 9007199254740991, writable: false } -}); - -globalScope["clz"] = Math.clz32; - -globalScope["ctz"] = function ctz(value) { - var c = Math.clz32(value & -value); - return value ? 31 - c : c; -}; - -globalScope["popcnt"] = function popcnt(value) { - value -= value >>> 1 & 0x55555555; - value = (value & 0x33333333) + (value >>> 2 & 0x33333333); - return (((value + (value >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24; -}; - -globalScope["rotl"] = function rotl(value, shift) { - shift &= 31; - return (value << shift) | (value >>> (32 - shift)); -}; - -globalScope["rotr"] = function rotr(value, shift) { - shift &= 31; - return (value >>> shift) | (value << (32 - shift)); -}; - -globalScope["abs"] = Math.abs; - -globalScope["max"] = Math.max; - -globalScope["min"] = Math.min; - -globalScope["ceil"] = Math.ceil; - -globalScope["floor"] = Math.floor; - -// Adopt code from https://github.com/rfk/wasm-polyfill -globalScope["nearest"] = function nearest(value) { - if (Math.abs(value - Math.trunc(value)) === 0.5) { - return 2.0 * Math.round(value * 0.5); - } - return Math.round(value); -}; - -globalScope["select"] = function select(ifTrue, ifFalse, condition) { - return condition ? ifTrue : ifFalse; -}; - -globalScope["sqrt"] = Math.sqrt; - -globalScope["trunc"] = Math.trunc; - -globalScope["copysign"] = function copysign(x, y) { - return Math.abs(x) * Math.sign(y); -}; - -globalScope["bswap"] = function bswap(value) { - var a = value >> 8 & 0x00FF00FF; - var b = (value & 0x00FF00FF) << 8; - value = a | b; - a = value >> 16 & 0x0000FFFF; - b = (value & 0x0000FFFF) << 16; - return a | b; -}; - -globalScope["bswap16"] = function bswap16(value) { - return ((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000); -}; - -function UnreachableError() { - if (Error.captureStackTrace) { - Error.captureStackTrace(this, UnreachableError); - } else { - this.stack = this.name + ": " + this.message + "\n" + new Error().stack; - } -} -UnreachableError.prototype = Object.create(Error.prototype); -UnreachableError.prototype.name = "UnreachableError"; -UnreachableError.prototype.message = "unreachable"; - -globalScope["unreachable"] = function unreachable() { - throw new UnreachableError(); -}; - -function AssertionError(message) { - this.message = message || "assertion failed"; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, AssertionError); - } else { - this.stack = this.name + ": " + this.message + "\n" + new Error().stack; - } -} -AssertionError.prototype = Object.create(Error.prototype); -AssertionError.prototype.name = "AssertionError"; - -globalScope["assert"] = function assert(isTrueish, message) { - if (isTrueish) return isTrueish; - throw new AssertionError(message); -}; - -globalScope["changetype"] = function changetype(value) { - return value; -}; - -String["fromCharCodes"] = function fromCharCodes(arr) { - return String.fromCharCode.apply(String, arr); -}; - -String["fromCodePoints"] = function fromCodePoints(arr) { - return String.fromCodePoint.apply(String, arr); -}; - -if (!String.prototype.replaceAll) { - Object.defineProperty(String.prototype, "replaceAll", { - value: function replaceAll(search, replacment) { - var res = this.split(search).join(replacment); - if (!search.length) res = replacment + res + replacment; - return res; - } - }); -} - -globalScope["isInteger"] = Number.isInteger; - -globalScope["isFloat"] = function isFloat(arg) { - return typeof arg === "number"; -}; - -globalScope["isNullable"] = function isNullable(arg) { - return true; -} - -globalScope["isReference"] = function isReference(arg) { - return typeof arg === "object" || typeof arg === "string"; -}; - -globalScope["isFunction"] = function isFunction(arg) { - return typeof arg === "function"; -} - -globalScope["isString"] = function isString(arg) { - return typeof arg === "string" || arg instanceof String; -}; - -globalScope["isArray"] = Array.isArray; -globalScope["isArrayLike"] = function isArrayLike(expr) { - return expr - && typeof expr === 'object' - && typeof expr.length === 'number' - && expr.length >= 0 - && Math.trunc(expr.length) === expr.length; -}; - -Array.create = function(capacity) { - var arr = new Array(capacity); - arr.length = 0; - return arr; -}; - -globalScope["isDefined"] = function isDefined(expr) { - return typeof expr !== "undefined"; -} - -globalScope["isConstant"] = function isConstant(expr) { - return false; -}; - -globalScope["unchecked"] = function unchecked(expr) { - return expr; -}; - -globalScope["fmod"] = function fmod(x, y) { - return x % y; -}; - -globalScope["fmodf"] = function fmodf(x, y) { - return Math.fround(x % y); -}; - -globalScope["JSMath"] = Math; - -try { -Object.defineProperties(globalScope["JSMath"], { - sincos_sin: { value: 0.0, writable: true }, - sincos_cos: { value: 0.0, writable: true }, - signbit: { - value: function signbit(x) { - F64[0] = x; return Boolean((U64[1] >>> 31) & (x == x)); - } - }, - sincos: { - value: function sincos(x) { - this.sincos_sin = Math.sin(x); - this.sincos_cos = Math.cos(x); - } - } -}); -}catch (e) {} - -globalScope["memory"] = (() => { - var HEAP = new Uint8Array(0); - var HEAP_OFFSET = 0; - return { - allocate: globalScope["__memory_allocate"] || function allocate(size) { - if (!(size >>>= 0)) return 0; - if (HEAP_OFFSET + size > HEAP.length) { - var oldHeap = HEAP; - HEAP = new Uint8Array(Math.max(65536, HEAP.length + size, HEAP.length * 2)); - HEAP.set(oldHeap); - } - var ptr = HEAP_OFFSET; - if ((HEAP_OFFSET += size) & 7) HEAP_OFFSET = (HEAP_OFFSET | 7) + 1; - return ptr; - }, - fill: globalScope["__memory_fill"] || function fill(dest, value, size) { - HEAP.fill(value, dest, dest + size); - }, - free: globalScope["__memory_free"] || function free(ptr) { }, - copy: globalScope["__memory_copy"] || function copy(dest, src, size) { - HEAP.copyWithin(dest, src, src + size); - }, - reset: globalScope["__memory_reset"] || function reset() { - HEAP = new Uint8Array(0); - HEAP_OFFSET = 0; - } - }; -})(); - -globalScope["store"] = globalScope["__store"] || function store(ptr, value, offset) { - HEAP[(ptr | 0) + (offset | 0)] = value; -}; - -globalScope["load"] = globalScope["__load"] || function load(ptr, offset) { - return HEAP[(ptr | 0) + (offset | 0)]; -}; - -globalScope["unmanaged"] = function() {}; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "./src/base.ts": -/*!*********************!*\ - !*** ./src/base.ts ***! - \*********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); -var visitor_1 = __webpack_require__(/*! ./visitor */ "./src/visitor.ts"); -var BaseVisitor = /** @class */ (function (_super) { - __extends(BaseVisitor, _super); - function BaseVisitor(writer) { - var _this = _super.call(this, writer) || this; - _this.depth = 0; - return _this; - } - BaseVisitor.prototype._visit = function (node) { - switch (node.kind) { - case ast_1.NodeKind.SOURCE: { - this.visitSource(node); - break; - } - // types - case ast_1.NodeKind.NAMEDTYPE: { - this.visitNamedTypeNode(node); - break; - } - case ast_1.NodeKind.FUNCTIONTYPE: { - this.visitFunctionTypeNode(node); - break; - } - case ast_1.NodeKind.TYPENAME: { - this.visitTypeName(node); - } - case ast_1.NodeKind.TYPEPARAMETER: { - this.visitTypeParameter(node); - break; - } - // expressions - case ast_1.NodeKind.FALSE: - case ast_1.NodeKind.NULL: - case ast_1.NodeKind.SUPER: - case ast_1.NodeKind.THIS: - case ast_1.NodeKind.TRUE: - case ast_1.NodeKind.CONSTRUCTOR: - case ast_1.NodeKind.IDENTIFIER: { - this.visitIdentifierExpression(node); - break; - } - case ast_1.NodeKind.ASSERTION: { - this.visitAssertionExpression(node); - break; - } - case ast_1.NodeKind.BINARY: { - this.visitBinaryExpression(node); - break; - } - case ast_1.NodeKind.CALL: { - this.visitCallExpression(node); - break; - } - case ast_1.NodeKind.CLASS: { - this.visitClassExpression(node); - break; - } - case ast_1.NodeKind.COMMA: { - this.visitCommaExpression(node); - break; - } - case ast_1.NodeKind.ELEMENTACCESS: { - this.visitElementAccessExpression(node); - break; - } - case ast_1.NodeKind.FUNCTION: { - this.visitFunctionExpression(node); - break; - } - case ast_1.NodeKind.INSTANCEOF: { - this.visitInstanceOfExpression(node); - break; - } - case ast_1.NodeKind.LITERAL: { - this.visitLiteralExpression(node); - break; - } - case ast_1.NodeKind.NEW: { - this.visitNewExpression(node); - break; - } - case ast_1.NodeKind.PARENTHESIZED: { - this.visitParenthesizedExpression(node); - break; - } - case ast_1.NodeKind.PROPERTYACCESS: { - this.visitPropertyAccessExpression(node); - break; - } - case ast_1.NodeKind.TERNARY: { - this.visitTernaryExpression(node); - break; - } - case ast_1.NodeKind.UNARYPOSTFIX: { - this.visitUnaryPostfixExpression(node); - break; - } - case ast_1.NodeKind.UNARYPREFIX: { - this.visitUnaryPrefixExpression(node); - break; - } - // statements - case ast_1.NodeKind.BLOCK: { - this.visitBlockStatement(node); - break; - } - case ast_1.NodeKind.BREAK: { - this.visitBreakStatement(node); - break; - } - case ast_1.NodeKind.CONTINUE: { - this.visitContinueStatement(node); - break; - } - case ast_1.NodeKind.DO: { - this.visitDoStatement(node); - break; - } - case ast_1.NodeKind.EMPTY: { - this.visitEmptyStatement(node); - break; - } - case ast_1.NodeKind.EXPORT: { - this.visitExportStatement(node); - break; - } - case ast_1.NodeKind.EXPORTDEFAULT: { - this.visitExportDefaultStatement(node); - break; - } - case ast_1.NodeKind.EXPORTIMPORT: { - this.visitExportImportStatement(node); - break; - } - case ast_1.NodeKind.EXPRESSION: { - this.visitExpressionStatement(node); - break; - } - case ast_1.NodeKind.FOR: { - this.visitForStatement(node); - break; - } - case ast_1.NodeKind.IF: { - this.visitIfStatement(node); - break; - } - case ast_1.NodeKind.IMPORT: { - this.visitImportStatement(node); - break; - } - case ast_1.NodeKind.RETURN: { - this.visitReturnStatement(node); - break; - } - case ast_1.NodeKind.SWITCH: { - this.visitSwitchStatement(node); - break; - } - case ast_1.NodeKind.THROW: { - this.visitThrowStatement(node); - break; - } - case ast_1.NodeKind.TRY: { - this.visitTryStatement(node); - break; - } - case ast_1.NodeKind.VARIABLE: { - this.visitVariableStatement(node); - break; - } - case ast_1.NodeKind.WHILE: { - this.visitWhileStatement(node); - break; - } - // declaration statements - case ast_1.NodeKind.CLASSDECLARATION: { - this.visitClassDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMDECLARATION: { - this.visitEnumDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMVALUEDECLARATION: { - this.visitEnumValueDeclaration(node); - break; - } - case ast_1.NodeKind.FIELDDECLARATION: { - this.visitFieldDeclaration(node); - break; - } - case ast_1.NodeKind.FUNCTIONDECLARATION: { - this.visitFunctionDeclaration(node); - break; - } - case ast_1.NodeKind.IMPORTDECLARATION: { - this.visitImportDeclaration(node); - break; - } - case ast_1.NodeKind.INDEXSIGNATUREDECLARATION: { - this.visitIndexSignatureDeclaration(node); - break; - } - case ast_1.NodeKind.INTERFACEDECLARATION: { - this.visitInterfaceDeclaration(node); - break; - } - case ast_1.NodeKind.METHODDECLARATION: { - this.visitMethodDeclaration(node); - break; - } - case ast_1.NodeKind.NAMESPACEDECLARATION: { - this.visitNamespaceDeclaration(node); - break; - } - case ast_1.NodeKind.TYPEDECLARATION: { - this.visitTypeDeclaration(node); - break; - } - case ast_1.NodeKind.VARIABLEDECLARATION: { - this.visitVariableDeclaration(node); - break; - } - // other - case ast_1.NodeKind.DECORATOR: { - this.visitDecoratorNode(node); - break; - } - case ast_1.NodeKind.EXPORTMEMBER: { - this.visitExportMember(node); - break; - } - case ast_1.NodeKind.PARAMETER: { - this.visitParameter(node); - break; - } - case ast_1.NodeKind.SWITCHCASE: { - this.visitSwitchCase(node); - break; - } - default: assert(false); - } - }; - BaseVisitor.prototype.visitSource = function (node) { - var e_1, _a; - try { - for (var _b = __values(node.statements), _c = _b.next(); !_c.done; _c = _b.next()) { - var stmt = _c.value; - this.depth++; - this.visit(stmt); - this.depth--; - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_1) throw e_1.error; } - } - }; - BaseVisitor.prototype.visitTypeNode = function (node) { }; - BaseVisitor.prototype.visitTypeName = function (node) { - this.visit(node.identifier); - if (node.next) { - this.visit(node); - } - }; - BaseVisitor.prototype.visitNamedTypeNode = function (node) { - this.visit(node.name); - this.visit(node.typeArguments); - }; - BaseVisitor.prototype.visitFunctionTypeNode = function (node) { - var e_2, _a; - try { - for (var _b = __values(node.parameters), _c = _b.next(); !_c.done; _c = _b.next()) { - var param = _c.value; - this.visit(param); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_2) throw e_2.error; } - } - this.visit(node.returnType); - }; - BaseVisitor.prototype.visitTypeParameter = function (node) { - this.visit(node.name); - if (node.extendsType) - this.visit(node.extendsType); - if (node.defaultType) - this.visit(node.defaultType); - }; - BaseVisitor.prototype.visitIdentifierExpression = function (node) { }; - BaseVisitor.prototype.visitArrayLiteralExpression = function (node) { - var _this = this; - node.elementExpressions.map(function (e) { - if (e) - _this.visit(e); - }); - }; - BaseVisitor.prototype.visitObjectLiteralExpression = function (node) { - if (node.values && node.names) { - assert(node.values.length == node.names.length); - for (var i = 0; i < node.values.length; i++) { - this.visit(node.names[i]); - this.visit(node.values[i]); - } - } - }; - BaseVisitor.prototype.visitAssertionExpression = function (node) { - if (node.toType) - this.visit(node.toType); - this.visit(node.expression); - }; - BaseVisitor.prototype.visitBinaryExpression = function (node) { - this.visit(node.left); - this.visit(node.right); - }; - BaseVisitor.prototype.visitCallExpression = function (node) { - this.visit(node.expression); - this.visit(node.typeArguments); - this.visit(node.arguments); - }; - BaseVisitor.prototype.visitClassExpression = function (node) { - this.visit(node.declaration); - }; - BaseVisitor.prototype.visitCommaExpression = function (node) { - this.visit(node.expressions); - }; - BaseVisitor.prototype.visitElementAccessExpression = function (node) { - this.visit(node.elementExpression); - this.visit(node.expression); - }; - BaseVisitor.prototype.visitFunctionExpression = function (node) { - this.visit(node.declaration); - }; - BaseVisitor.prototype.visitLiteralExpression = function (node) { - // node. - }; - BaseVisitor.prototype.visitFloatLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitInstanceOfExpression = function (node) { - this.visit(node.expression); - this.visit(node.isType); - }; - BaseVisitor.prototype.visitIntegerLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitStringLiteral = function (str, singleQuoted) { }; - BaseVisitor.prototype.visitStringLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitRegexpLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitNewExpression = function (node) { - this.visit(node.expression); - this.visit(node.typeArguments); - this.visit(node.arguments); - }; - BaseVisitor.prototype.visitParenthesizedExpression = function (node) { - this.visit(node.expression); - }; - BaseVisitor.prototype.visitPropertyAccessExpression = function (node) { - this.visit(node.property); - this.visit(node.expression); - }; - BaseVisitor.prototype.visitTernaryExpression = function (node) { - this.visit(node.condition); - this.visit(node.ifThen); - this.visit(node.ifElse); - }; - BaseVisitor.prototype.visitUnaryExpression = function (node) { - this.visit(node.operand); - }; - BaseVisitor.prototype.visitUnaryPostfixExpression = function (node) { - this.visit(node.operand); - }; - BaseVisitor.prototype.visitUnaryPrefixExpression = function (node) { - this.visit(node.operand); - }; - BaseVisitor.prototype.visitSuperExpression = function (node) { }; - BaseVisitor.prototype.visitFalseExpression = function (node) { }; - BaseVisitor.prototype.visitTrueExpression = function (node) { }; - BaseVisitor.prototype.visitThisExpression = function (node) { }; - BaseVisitor.prototype.visitNullExperssion = function (node) { }; - BaseVisitor.prototype.visitConstructorExpression = function (node) { }; - BaseVisitor.prototype.visitNodeAndTerminate = function (statement) { }; - BaseVisitor.prototype.visitBlockStatement = function (node) { - this.depth++; - this.visit(node.statements); - this.depth--; - }; - BaseVisitor.prototype.visitBreakStatement = function (node) { - if (node.label) { - this.visit(node.label); - } - }; - BaseVisitor.prototype.visitContinueStatement = function (node) { - if (node.label) { - this.visit(node.label); - } - }; - BaseVisitor.prototype.visitClassDeclaration = function (node, isDefault) { - this.visit(node.name); - this.depth++; - this.visit(node.decorators); - assert(node.isGeneric ? node.typeParameters != null : node.typeParameters == null); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - if (node.extendsType) { - this.visit(node.extendsType); - } - this.visit(node.implementsTypes); - this.visit(node.members); - this.depth--; - }; - BaseVisitor.prototype.visitDoStatement = function (node) { - this.visit(node.condition); - this.visit(node.statement); - }; - BaseVisitor.prototype.visitEmptyStatement = function (node) { }; - BaseVisitor.prototype.visitEnumDeclaration = function (node, isDefault) { - this.visit(node.name); - this.visit(node.decorators); - this.visit(node.values); - }; - BaseVisitor.prototype.visitEnumValueDeclaration = function (node) { - this.visit(node.name); - if (node.initializer) { - this.visit(node.initializer); - } - }; - BaseVisitor.prototype.visitExportImportStatement = function (node) { - this.visit(node.name); - this.visit(node.externalName); - }; - BaseVisitor.prototype.visitExportMember = function (node) { - this.visit(node.localName); - this.visit(node.exportedName); - }; - BaseVisitor.prototype.visitExportStatement = function (node) { - if (node.path) { - this.visit(node.path); - } - this.visit(node.members); - }; - BaseVisitor.prototype.visitExportDefaultStatement = function (node) { - this.visit(node.declaration); - }; - BaseVisitor.prototype.visitExpressionStatement = function (node) { - this.visit(node.expression); - }; - BaseVisitor.prototype.visitFieldDeclaration = function (node) { - this.visit(node.name); - if (node.type) { - this.visit(node.type); - } - if (node.initializer) { - this.visit(node.initializer); - } - this.visit(node.decorators); - }; - BaseVisitor.prototype.visitForStatement = function (node) { - if (node.initializer) - this.visit(node.initializer); - if (node.condition) - this.visit(node.condition); - if (node.incrementor) - this.visit(node.incrementor); - this.visit(node.statement); - }; - BaseVisitor.prototype.visitFunctionDeclaration = function (node, isDefault) { - this.visit(node.name); - this.visit(node.decorators); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - this.visit(node.signature); - this.depth++; - if (node.body) - this.visit(node.body); - this.depth--; - }; - BaseVisitor.prototype.visitFunctionCommon = function (node) { - // this.visit(node.name) - }; - BaseVisitor.prototype.visitIfStatement = function (node) { - this.visit(node.condition); - this.visit(node.ifTrue); - if (node.ifFalse) - this.visit(node.ifFalse); - }; - BaseVisitor.prototype.visitImportDeclaration = function (node) { - this.visit(node.foreignName); - this.visit(node.name); - this.visit(node.decorators); - }; - BaseVisitor.prototype.visitImportStatement = function (node) { - if (node.namespaceName) - this.visit(node.namespaceName); - this.visit(node.declarations); - }; - BaseVisitor.prototype.visitIndexSignatureDeclaration = function (node) { - // this.visit(node.name); - // this.visit(node.keyType); - // this.visit(node.valueType); - }; - BaseVisitor.prototype.visitInterfaceDeclaration = function (node, isDefault) { - this.visit(node.name); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - this.visit(node.implementsTypes); - if (node.extendsType) - this.visit(node.extendsType); - this.depth++; - this.visit(node.members); - this.depth--; - }; - BaseVisitor.prototype.visitMethodDeclaration = function (node) { - this.visit(node.name); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - this.visit(node.signature); - this.visit(node.decorators); - this.depth++; - if (node.body) - this.visit(node.body); - this.depth--; - }; - BaseVisitor.prototype.visitNamespaceDeclaration = function (node, isDefault) { - this.visit(node.name); - this.visit(node.decorators); - this.visit(node.members); - }; - BaseVisitor.prototype.visitReturnStatement = function (node) { - if (node.value) - this.visit(node.value); - }; - BaseVisitor.prototype.visitSwitchCase = function (node) { - if (node.label) - this.visit(node.label); - this.visit(node.statements); - }; - BaseVisitor.prototype.visitSwitchStatement = function (node) { - this.visit(node.condition); - this.depth++; - this.visit(node.cases); - this.depth--; - }; - BaseVisitor.prototype.visitThrowStatement = function (node) { - this.visit(node.value); - }; - BaseVisitor.prototype.visitTryStatement = function (node) { - this.visit(node.statements); - if (node.catchVariable) - this.visit(node.catchVariable); - this.visit(node.catchStatements); - this.visit(node.finallyStatements); - }; - BaseVisitor.prototype.visitTypeDeclaration = function (node) { - this.visit(node.name); - this.visit(node.decorators); - this.visit(node.type); - this.visit(node.typeParameters); - }; - BaseVisitor.prototype.visitVariableDeclaration = function (node) { - this.visit(node.name); - if (node.type) - this.visit(node.type); - if (node.initializer) - this.visit(node.initializer); - }; - BaseVisitor.prototype.visitVariableStatement = function (node) { - this.visit(node.decorators); - this.visit(node.declarations); - }; - BaseVisitor.prototype.visitWhileStatement = function (node) { - this.visit(node.condition); - this.depth++; - this.visit(node.statement); - this.depth--; - }; - BaseVisitor.prototype.visitVoidStatement = function (node) { }; - BaseVisitor.prototype.visitComment = function (node) { }; - BaseVisitor.prototype.visitDecoratorNode = function (node) { - this.visit(node.name); - this.visit(node.arguments); - }; - BaseVisitor.prototype.visitParameter = function (node) { - this.visit(node.name); - if (node.implicitFieldDeclaration) { - this.visit(node.implicitFieldDeclaration); - } - if (node.initializer) - this.visit(node.initializer); - this.visit(node.type); - }; - return BaseVisitor; -}(visitor_1.AbstractVisitor)); -exports.BaseVisitor = BaseVisitor; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQ0E0RXVCO0FBRXZCLHFDQUFvRDtBQUVwRDtJQUFpQywrQkFBcUI7SUFHcEQscUJBQVksTUFBcUI7UUFBakMsWUFDRSxrQkFBTSxNQUFNLENBQUMsU0FDZDtRQUpELFdBQUssR0FBVyxDQUFDLENBQUM7O0lBSWxCLENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sSUFBVTtRQUNmLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLGNBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBUyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsTUFBTTthQUNQO1lBRUQsUUFBUTtZQUVSLEtBQUssY0FBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQWdCLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxNQUFNO2FBQ1A7WUFDRCxLQUFLLGNBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLHFCQUFxQixDQUFtQixJQUFJLENBQUMsQ0FBQztnQkFDbkQsTUFBTTthQUNQO1lBQ0QsS0FBSyxjQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLENBQVcsSUFBSSxDQUFDLENBQUM7YUFDcEM7WUFDRCxLQUFLLGNBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFvQixJQUFJLENBQUMsQ0FBQztnQkFDakQsTUFBTTthQUNQO1lBRUQsY0FBYztZQUVkLEtBQUssY0FBUSxDQUFDLEtBQUssQ0FBQztZQUNwQixLQUFLLGNBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbkIsS0FBSyxjQUFRLENBQUMsS0FBSyxDQUFDO1lB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QUFDO0lBQzdCLENBQUM7SUFFRCxvQ0FBYyxHQUFkLFVBQWUsSUFBbUI7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUgsa0JBQUM7QUFBRCxDQUFDLEFBNW9CRCxDQUFpQyx5QkFBZSxHQTRvQi9DO0FBNW9CWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNvdXJjZSxcbiAgVHlwZU5vZGUsXG4gIFR5cGVOYW1lLFxuICBOYW1lZFR5cGVOb2RlLFxuICBGdW5jdGlvblR5cGVOb2RlLFxuICBUeXBlUGFyYW1ldGVyTm9kZSxcbiAgSWRlbnRpZmllckV4cHJlc3Npb24sXG4gIEFycmF5TGl0ZXJhbEV4cHJlc3Npb24sXG4gIE9iamVjdExpdGVyYWxFeHByZXNzaW9uLFxuICBBc3NlcnRpb25FeHByZXNzaW9uLFxuICBCaW5hcnlFeHByZXNzaW9uLFxuICBDYWxsRXhwcmVzc2lvbixcbiAgQ2xhc3NFeHByZXNzaW9uLFxuICBDb21tYUV4cHJlc3Npb24sXG4gIEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLFxuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIExpdGVyYWxFeHByZXNzaW9uLFxuICBGbG9hdExpdGVyYWxFeHByZXNzaW9uLFxuICBJbnN0YW5jZU9mRXhwcmVzc2lvbixcbiAgSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uLFxuICBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbixcbiAgUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24sXG4gIE5ld0V4cHJlc3Npb24sXG4gIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uLFxuICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24sXG4gIFRlcm5hcnlFeHByZXNzaW9uLFxuICBVbmFyeUV4cHJlc3Npb24sXG4gIFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24sXG4gIFVuYXJ5UHJlZml4RXhwcmVzc2lvbixcbiAgU3VwZXJFeHByZXNzaW9uLFxuICBGYWxzZUV4cHJlc3Npb24sXG4gIFRydWVFeHByZXNzaW9uLFxuICBUaGlzRXhwcmVzc2lvbixcbiAgTnVsbEV4cHJlc3Npb24sXG4gIENvbnN0cnVjdG9yRXhwcmVzc2lvbixcbiAgU3RhdGVtZW50LFxuICBCbG9ja1N0YXRlbWVudCxcbiAgQnJlYWtTdGF0ZW1lbnQsXG4gIENvbnRpbnVlU3RhdGVtZW50LFxuICBDbGFzc0RlY2xhcmF0aW9uLFxuICBEb1N0YXRlbWVudCxcbiAgRW1wdHlTdGF0ZW1lbnQsXG4gIEVudW1EZWNsYXJhdGlvbixcbiAgRW51bVZhbHVlRGVjbGFyYXRpb24sXG4gIEV4cG9ydEltcG9ydFN0YXRlbWVudCxcbiAgRXhwb3J0TWVtYmVyLFxuICBFeHBvcnRTdGF0ZW1lbnQsXG4gIEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQsXG4gIEV4cHJlc3Npb25TdGF0ZW1lbnQsXG4gIEZpZWxkRGVjbGFyYXRpb24sXG4gIEZvclN0YXRlbWVudCxcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgSWZTdGF0ZW1lbnQsXG4gIEltcG9ydERlY2xhcmF0aW9uLFxuICBJbXBvcnRTdGF0ZW1lbnQsXG4gIEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24sXG4gIEludGVyZmFjZURlY2xhcmF0aW9uLFxuICBNZXRob2REZWNsYXJhdGlvbixcbiAgTmFtZXNwYWNlRGVjbGFyYXRpb24sXG4gIFJldHVyblN0YXRlbWVudCxcbiAgU3dpdGNoQ2FzZSxcbiAgU3dpdGNoU3RhdGVtZW50LFxuICBUaHJvd1N0YXRlbWVudCxcbiAgVHJ5U3RhdGVtZW50LFxuICBUeXBlRGVjbGFyYXRpb24sXG4gIFZhcmlhYmxlRGVjbGFyYXRpb24sXG4gIFZhcmlhYmxlU3RhdGVtZW50LFxuICBXaGlsZVN0YXRlbWVudCxcbiAgVm9pZFN0YXRlbWVudCxcbiAgQ29tbWVudE5vZGUsXG4gIERlY29yYXRvck5vZGUsXG4gIFBhcmFtZXRlck5vZGUsXG4gIE5vZGUsXG4gIE5vZGVLaW5kLFxuICBFeHByZXNzaW9uXG59IGZyb20gXCIuLi8uLi9zcmMvYXN0XCI7XG5cbmltcG9ydCB7IEFic3RyYWN0VmlzaXRvciwgV3JpdGVyIH0gZnJvbSBcIi4vdmlzaXRvclwiO1xuXG5leHBvcnQgY2xhc3MgQmFzZVZpc2l0b3IgZXh0ZW5kcyBBYnN0cmFjdFZpc2l0b3I8Tm9kZT4ge1xuICBkZXB0aDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih3cml0ZXI/OiBXcml0ZXI8Tm9kZT4pIHtcbiAgICBzdXBlcih3cml0ZXIpO1xuICB9XG5cbiAgX3Zpc2l0KG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBOb2RlS2luZC5TT1VSQ0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFNvdXJjZSg8U291cmNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gdHlwZXNcblxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FRFRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVkVHlwZU5vZGUoPE5hbWVkVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GVU5DVElPTlRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uVHlwZU5vZGUoPEZ1bmN0aW9uVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFTkFNRToge1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5hbWUoPFR5cGVOYW1lPm5vZGUpO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKDxUeXBlUGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGV4cHJlc3Npb25zXG5cbiAgICAgIGNhc2UgTm9kZUtpbmQuRkFMU0U6XG4gICAgICBjYXNlIE5vZGVLaW5kLk5VTEw6XG4gICAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOlxuICAgICAgY2FzZSBOb2RlS2luZC5USElTOlxuICAgICAgY2FzZSBOb2RlS2luZC5UUlVFOlxuICAgICAgY2FzZSBOb2RlS2luZC5DT05TVFJVQ1RPUjpcbiAgICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjoge1xuICAgICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24oPElkZW50aWZpZXJFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQVNTRVJUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRBc3NlcnRpb25FeHByZXNzaW9uKDxBc3NlcnRpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQklOQVJZOiB7XG4gICAgICAgIHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKDxCaW5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0FMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24oPENhbGxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0xBU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdENsYXNzRXhwcmVzc2lvbig8Q2xhc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09NTUE6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbW1hRXhwcmVzc2lvbig8Q29tbWFFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzoge1xuICAgICAgICB0aGlzLnZpc2l0RWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oPEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbig8RnVuY3Rpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5TVEFOQ0VPRjoge1xuICAgICAgICB0aGlzLnZpc2l0SW5zdGFuY2VPZkV4cHJlc3Npb24oPEluc3RhbmNlT2ZFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTElURVJBTDoge1xuICAgICAgICB0aGlzLnZpc2l0TGl0ZXJhbEV4cHJlc3Npb24oPExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkVXOiB7XG4gICAgICAgIHRoaXMudmlzaXROZXdFeHByZXNzaW9uKDxOZXdFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUEFSRU5USEVTSVpFRDoge1xuICAgICAgICB0aGlzLnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oPFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbig8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEVSTkFSWToge1xuICAgICAgICB0aGlzLnZpc2l0VGVybmFyeUV4cHJlc3Npb24oPFRlcm5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdGVtZW50c1xuXG4gICAgICBjYXNlIE5vZGVLaW5kLkJMT0NLOiB7XG4gICAgICAgIHRoaXMudmlzaXRCbG9ja1N0YXRlbWVudCg8QmxvY2tTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5CUkVBSzoge1xuICAgICAgICB0aGlzLnZpc2l0QnJlYWtTdGF0ZW1lbnQoPEJyZWFrU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09OVElOVUU6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbnRpbnVlU3RhdGVtZW50KDxDb250aW51ZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkRPOiB7XG4gICAgICAgIHRoaXMudmlzaXREb1N0YXRlbWVudCg8RG9TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FTVBUWToge1xuICAgICAgICB0aGlzLnZpc2l0RW1wdHlTdGF0ZW1lbnQoPEVtcHR5U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRFeHBvcnRTdGF0ZW1lbnQoPEV4cG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoPEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FWFBPUlRJTVBPUlQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudCg8RXhwb3J0SW1wb3J0U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQUkVTU0lPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwcmVzc2lvblN0YXRlbWVudCg8RXhwcmVzc2lvblN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZPUjoge1xuICAgICAgICB0aGlzLnZpc2l0Rm9yU3RhdGVtZW50KDxGb3JTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JRjoge1xuICAgICAgICB0aGlzLnZpc2l0SWZTdGF0ZW1lbnQoPElmU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU1QT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnRTdGF0ZW1lbnQoPEltcG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlJFVFVSTjoge1xuICAgICAgICB0aGlzLnZpc2l0UmV0dXJuU3RhdGVtZW50KDxSZXR1cm5TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0g6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaFN0YXRlbWVudCg8U3dpdGNoU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEhST1c6IHtcbiAgICAgICAgdGhpcy52aXNpdFRocm93U3RhdGVtZW50KDxUaHJvd1N0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlRSWToge1xuICAgICAgICB0aGlzLnZpc2l0VHJ5U3RhdGVtZW50KDxUcnlTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5WQVJJQUJMRToge1xuICAgICAgICB0aGlzLnZpc2l0VmFyaWFibGVTdGF0ZW1lbnQoPFZhcmlhYmxlU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuV0hJTEU6IHtcbiAgICAgICAgdGhpcy52aXNpdFdoaWxlU3RhdGVtZW50KDxXaGlsZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2xhcmF0aW9uIHN0YXRlbWVudHNcblxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRU5VTURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtRGVjbGFyYXRpb24oPEVudW1EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1WQUxVRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbig8RW51bVZhbHVlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRGaWVsZERlY2xhcmF0aW9uKDxGaWVsZERlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklNUE9SVERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbig8SW1wb3J0RGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKDxJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5URVJGQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEludGVyZmFjZURlY2xhcmF0aW9uKDxJbnRlcmZhY2VEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLk1FVEhPRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRNZXRob2REZWNsYXJhdGlvbig8TWV0aG9kRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FU1BBQ0VERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oPE5hbWVzcGFjZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlRGVjbGFyYXRpb24oPFR5cGVEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlZBUklBQkxFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oPFZhcmlhYmxlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBvdGhlclxuXG4gICAgICBjYXNlIE5vZGVLaW5kLkRFQ09SQVRPUjoge1xuICAgICAgICB0aGlzLnZpc2l0RGVjb3JhdG9yTm9kZSg8RGVjb3JhdG9yTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVE1FTUJFUjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwb3J0TWVtYmVyKDxFeHBvcnRNZW1iZXI+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5QQVJBTUVURVI6IHtcbiAgICAgICAgdGhpcy52aXNpdFBhcmFtZXRlcig8UGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlNXSVRDSENBU0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaENhc2UoPFN3aXRjaENhc2U+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFNvdXJjZShub2RlOiBTb3VyY2UpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN0bXQgb2Ygbm9kZS5zdGF0ZW1lbnRzKSB7XG4gICAgICB0aGlzLmRlcHRoKys7XG4gICAgICB0aGlzLnZpc2l0KHN0bXQpO1xuICAgICAgdGhpcy5kZXB0aC0tO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VHlwZU5vZGUobm9kZTogVHlwZU5vZGUpOiB2b2lkIHt9XG5cbiAgdmlzaXRUeXBlTmFtZShub2RlOiBUeXBlTmFtZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5pZGVudGlmaWVyKTtcbiAgICBpZiAobm9kZS5uZXh0KSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0TmFtZWRUeXBlTm9kZShub2RlOiBOYW1lZFR5cGVOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlQXJndW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25UeXBlTm9kZShub2RlOiBGdW5jdGlvblR5cGVOb2RlKTogdm9pZCB7XG4gICAgZm9yIChsZXQgcGFyYW0gb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLnZpc2l0KHBhcmFtKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLnJldHVyblR5cGUpO1xuICB9XG5cbiAgdmlzaXRUeXBlUGFyYW1ldGVyKG5vZGU6IFR5cGVQYXJhbWV0ZXJOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIGlmIChub2RlLmRlZmF1bHRUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZGVmYXVsdFR5cGUpO1xuICB9XG5cbiAgdmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlOiBJZGVudGlmaWVyRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdEFycmF5TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogQXJyYXlMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIG5vZGUuZWxlbWVudEV4cHJlc3Npb25zLm1hcCgoZTogRXhwcmVzc2lvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKGUpIHRoaXMudmlzaXQoZSk7XG4gICAgfSk7XG4gIH1cblxuICB2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKG5vZGUudmFsdWVzICYmIG5vZGUubmFtZXMpIHtcbiAgICAgIGFzc2VydChub2RlLnZhbHVlcy5sZW5ndGggPT0gbm9kZS5uYW1lcy5sZW5ndGgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLnZpc2l0KG5vZGUubmFtZXNbaV0pO1xuICAgICAgICB0aGlzLnZpc2l0KG5vZGUudmFsdWVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2aXNpdEFzc2VydGlvbkV4cHJlc3Npb24obm9kZTogQXNzZXJ0aW9uRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmIChub2RlLnRvVHlwZSkgdGhpcy52aXNpdChub2RlLnRvVHlwZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdmlzaXRCaW5hcnlFeHByZXNzaW9uKG5vZGU6IEJpbmFyeUV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubGVmdCk7XG4gICAgdGhpcy52aXNpdChub2RlLnJpZ2h0KTtcbiAgfVxuXG4gIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZTogQ2FsbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGVBcmd1bWVudHMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5hcmd1bWVudHMpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0V4cHJlc3Npb24obm9kZTogQ2xhc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHZpc2l0Q29tbWFFeHByZXNzaW9uKG5vZGU6IENvbW1hRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5leHByZXNzaW9ucyk7XG4gIH1cblxuICB2aXNpdEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKG5vZGU6IEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmVsZW1lbnRFeHByZXNzaW9uKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbihub2RlOiBGdW5jdGlvbkV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjbGFyYXRpb24pO1xuICB9XG5cbiAgdmlzaXRMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIC8vIG5vZGUuXG4gIH1cblxuICB2aXNpdEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogRmxvYXRMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdEluc3RhbmNlT2ZFeHByZXNzaW9uKG5vZGU6IEluc3RhbmNlT2ZFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pc1R5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24obm9kZTogSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0U3RyaW5nTGl0ZXJhbChzdHI6IHN0cmluZywgc2luZ2xlUXVvdGVkPzogYm9vbGVhbik6IHZvaWQge31cblxuICB2aXNpdFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKG5vZGU6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0UmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24obm9kZTogUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXROZXdFeHByZXNzaW9uKG5vZGU6IE5ld0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGVBcmd1bWVudHMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5hcmd1bWVudHMpO1xuICB9XG5cbiAgdmlzaXRQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihub2RlOiBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5leHByZXNzaW9uKTtcbiAgfVxuXG4gIHZpc2l0UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGU6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5wcm9wZXJ0eSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlOiBUZXJuYXJ5RXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pZlRoZW4pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pZkVsc2UpO1xuICB9XG5cbiAgdmlzaXRVbmFyeUV4cHJlc3Npb24obm9kZTogVW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm9wZXJhbmQpO1xuICB9XG5cbiAgdmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKG5vZGU6IFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUub3BlcmFuZCk7XG4gIH1cblxuICB2aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbihub2RlOiBVbmFyeVByZWZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUub3BlcmFuZCk7XG4gIH1cblxuICB2aXNpdFN1cGVyRXhwcmVzc2lvbihub2RlOiBTdXBlckV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXRGYWxzZUV4cHJlc3Npb24obm9kZTogRmFsc2VFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0VHJ1ZUV4cHJlc3Npb24obm9kZTogVHJ1ZUV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXRUaGlzRXhwcmVzc2lvbihub2RlOiBUaGlzRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdE51bGxFeHBlcnNzaW9uKG5vZGU6IE51bGxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0Q29uc3RydWN0b3JFeHByZXNzaW9uKG5vZGU6IENvbnN0cnVjdG9yRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50OiBTdGF0ZW1lbnQpOiB2b2lkIHt9XG5cbiAgdmlzaXRCbG9ja1N0YXRlbWVudChub2RlOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50cyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXRCcmVha1N0YXRlbWVudChub2RlOiBCcmVha1N0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLmxhYmVsKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUubGFiZWwpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0Q29udGludWVTdGF0ZW1lbnQobm9kZTogQ29udGludWVTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5sYWJlbCkge1xuICAgICAgdGhpcy52aXNpdChub2RlLmxhYmVsKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbiwgaXNEZWZhdWx0PzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIGFzc2VydChcbiAgICAgIG5vZGUuaXNHZW5lcmljID8gbm9kZS50eXBlUGFyYW1ldGVycyAhPSBudWxsIDogbm9kZS50eXBlUGFyYW1ldGVycyA9PSBudWxsXG4gICAgKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0KG5vZGUuaW1wbGVtZW50c1R5cGVzKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUubWVtYmVycyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXREb1N0YXRlbWVudChub2RlOiBEb1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgdmlzaXRFbXB0eVN0YXRlbWVudChub2RlOiBFbXB0eVN0YXRlbWVudCk6IHZvaWQge31cblxuICB2aXNpdEVudW1EZWNsYXJhdGlvbihub2RlOiBFbnVtRGVjbGFyYXRpb24sIGlzRGVmYXVsdD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS52YWx1ZXMpO1xuICB9XG5cbiAgdmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbihub2RlOiBFbnVtVmFsdWVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplcikge1xuICAgICAgdGhpcy52aXNpdChub2RlLmluaXRpYWxpemVyKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudChub2RlOiBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4dGVybmFsTmFtZSk7XG4gIH1cblxuICB2aXNpdEV4cG9ydE1lbWJlcihub2RlOiBFeHBvcnRNZW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubG9jYWxOYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwb3J0ZWROYW1lKTtcbiAgfVxuXG4gIHZpc2l0RXhwb3J0U3RhdGVtZW50KG5vZGU6IEV4cG9ydFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLnBhdGgpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS5wYXRoKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLm1lbWJlcnMpO1xuICB9XG5cbiAgdmlzaXRFeHBvcnREZWZhdWx0U3RhdGVtZW50KG5vZGU6IEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjbGFyYXRpb24pO1xuICB9XG5cbiAgdmlzaXRFeHByZXNzaW9uU3RhdGVtZW50KG5vZGU6IEV4cHJlc3Npb25TdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZpZWxkRGVjbGFyYXRpb24obm9kZTogRmllbGREZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS50eXBlKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUudHlwZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmluaXRpYWxpemVyKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjb3JhdG9ycyk7XG4gIH1cblxuICB2aXNpdEZvclN0YXRlbWVudChub2RlOiBGb3JTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplcikgdGhpcy52aXNpdChub2RlLmluaXRpYWxpemVyKTtcbiAgICBpZiAobm9kZS5jb25kaXRpb24pIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIGlmIChub2RlLmluY3JlbWVudG9yKSB0aGlzLnZpc2l0KG5vZGUuaW5jcmVtZW50b3IpO1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkRlY2xhcmF0aW9uKFxuICAgIG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24sXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIGlmIChub2RlLmlzR2VuZXJpYykge1xuICAgICAgdGhpcy52aXNpdChub2RlLnR5cGVQYXJhbWV0ZXJzKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLnNpZ25hdHVyZSk7XG4gICAgdGhpcy5kZXB0aCsrO1xuICAgIGlmIChub2RlLmJvZHkpIHRoaXMudmlzaXQobm9kZS5ib2R5KTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uQ29tbW9uKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpc2l0KG5vZGUubmFtZSlcbiAgfVxuXG4gIHZpc2l0SWZTdGF0ZW1lbnQobm9kZTogSWZTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuY29uZGl0aW9uKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuaWZUcnVlKTtcbiAgICBpZiAobm9kZS5pZkZhbHNlKSB0aGlzLnZpc2l0KG5vZGUuaWZGYWxzZSk7XG4gIH1cblxuICB2aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IEltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmZvcmVpZ25OYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICB9XG5cbiAgdmlzaXRJbXBvcnRTdGF0ZW1lbnQobm9kZTogSW1wb3J0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKG5vZGUubmFtZXNwYWNlTmFtZSkgdGhpcy52aXNpdChub2RlLm5hbWVzcGFjZU5hbWUpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNsYXJhdGlvbnMpO1xuICB9XG5cbiAgdmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG5vZGU6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgLy8gdGhpcy52aXNpdChub2RlLmtleVR5cGUpO1xuICAgIC8vIHRoaXMudmlzaXQobm9kZS52YWx1ZVR5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbihcbiAgICBub2RlOiBJbnRlcmZhY2VEZWNsYXJhdGlvbixcbiAgICBpc0RlZmF1bHQ/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIHRoaXMudmlzaXQobm9kZS5pbXBsZW1lbnRzVHlwZXMpO1xuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUubWVtYmVycyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXRNZXRob2REZWNsYXJhdGlvbihub2RlOiBNZXRob2REZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIHRoaXMudmlzaXQobm9kZS5zaWduYXR1cmUpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNvcmF0b3JzKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgaWYgKG5vZGUuYm9keSkgdGhpcy52aXNpdChub2RlLmJvZHkpO1xuICAgIHRoaXMuZGVwdGgtLTtcbiAgfVxuXG4gIHZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oXG4gICAgbm9kZTogTmFtZXNwYWNlRGVjbGFyYXRpb24sXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5tZW1iZXJzKTtcbiAgfVxuXG4gIHZpc2l0UmV0dXJuU3RhdGVtZW50KG5vZGU6IFJldHVyblN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLnZhbHVlKSB0aGlzLnZpc2l0KG5vZGUudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRTd2l0Y2hDYXNlKG5vZGU6IFN3aXRjaENhc2UpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5sYWJlbCkgdGhpcy52aXNpdChub2RlLmxhYmVsKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50cyk7XG4gIH1cblxuICB2aXNpdFN3aXRjaFN0YXRlbWVudChub2RlOiBTd2l0Y2hTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuY29uZGl0aW9uKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgdGhpcy52aXNpdChub2RlLmNhc2VzKTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdFRocm93U3RhdGVtZW50KG5vZGU6IFRocm93U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLnZhbHVlKTtcbiAgfVxuXG4gIHZpc2l0VHJ5U3RhdGVtZW50KG5vZGU6IFRyeVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnRzKTtcbiAgICBpZiAobm9kZS5jYXRjaFZhcmlhYmxlKSB0aGlzLnZpc2l0KG5vZGUuY2F0Y2hWYXJpYWJsZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmNhdGNoU3RhdGVtZW50cyk7XG4gICAgdGhpcy52aXNpdChub2RlLmZpbmFsbHlTdGF0ZW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0VHlwZURlY2xhcmF0aW9uKG5vZGU6IFR5cGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjb3JhdG9ycyk7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGUpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24obm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS50eXBlKSB0aGlzLnZpc2l0KG5vZGUudHlwZSk7XG4gICAgaWYgKG5vZGUuaW5pdGlhbGl6ZXIpIHRoaXMudmlzaXQobm9kZS5pbml0aWFsaXplcik7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlU3RhdGVtZW50KG5vZGU6IFZhcmlhYmxlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNsYXJhdGlvbnMpO1xuICB9XG5cbiAgdmlzaXRXaGlsZVN0YXRlbWVudChub2RlOiBXaGlsZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50KTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdFZvaWRTdGF0ZW1lbnQobm9kZTogVm9pZFN0YXRlbWVudCk6IHZvaWQge31cblxuICB2aXNpdENvbW1lbnQobm9kZTogQ29tbWVudE5vZGUpOiB2b2lkIHt9XG5cbiAgdmlzaXREZWNvcmF0b3JOb2RlKG5vZGU6IERlY29yYXRvck5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmFyZ3VtZW50cyk7XG4gIH1cblxuICB2aXNpdFBhcmFtZXRlcihub2RlOiBQYXJhbWV0ZXJOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIGlmIChub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbikge1xuICAgICAgdGhpcy52aXNpdChub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbik7XG4gICAgfVxuICAgIGlmIChub2RlLmluaXRpYWxpemVyKSB0aGlzLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlKTtcbiAgfVxuXG59XG4iXX0= - -/***/ }), - -/***/ "./src/index.ts": -/*!**********************!*\ - !*** ./src/index.ts ***! - \**********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -// tslint:disable: no-void-expression as-types as-variables -var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); -var common_1 = __webpack_require__(/*! ../../src/common */ "../src/common.ts"); -var sourceBuilder_1 = __webpack_require__(/*! ./sourceBuilder */ "./src/sourceBuilder.ts"); -var base_1 = __webpack_require__(/*! ./base */ "./src/base.ts"); -var preamble_1 = __webpack_require__(/*! ./preamble */ "./src/preamble.ts"); -function returnsVoid(node) { - return toString(node.signature.returnType) === "void"; -} -function numOfParameters(node) { - return node.signature.parameters.length; -} -function isComment(stmt) { - return stmt.kind == ast_1.NodeKind.COMMENT; -} -function hasNearDecorator(stmt) { - return stmt.text.includes("@nearfile") || isEntry(stmt); -} -function toString(node) { - return sourceBuilder_1.ASTBuilder.build(node); -} -function isEntry(source) { - var _source = ((source.kind == ast_1.NodeKind.SOURCE) ? source : source.range.source); - return _source.sourceKind == ast_1.SourceKind.USER_ENTRY; -} -function isArrayType(type) { - return !!((type.kind == ast_1.NodeKind.NAMEDTYPE) && - toString(type).startsWith("Array") && - type.typeArguments && - type.typeArguments.length > 0); -} -function isClass(type) { - return type.kind == ast_1.NodeKind.CLASSDECLARATION; -} -function isField(mem) { - return mem.kind == ast_1.NodeKind.FIELDDECLARATION; -} -function isReference(type) { - var simpleTypes = [ - "i32", - "u32", - "bool", - "i64", - "u64", - "boolean", - ]; - return !simpleTypes.includes(toString(type)); -} -// TODO: Extract this into separate module, preferrable pluggable -var NEARBindingsBuilder = /** @class */ (function (_super) { - __extends(NEARBindingsBuilder, _super); - function NEARBindingsBuilder() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.typeMapping = { - i32: "Integer", - u32: "Integer", - i64: "String", - u64: "String", - string: "String", - bool: "Boolean", - Uint8Array: "String", - }; - _this.nonNullableTypes = ["i32", "u32", "i64", "u64", "bool", "boolean"]; - _this.sb = []; - _this.exportedClasses = new Map(); - _this.wrappedFuncs = new Set(); - return _this; - } - NEARBindingsBuilder.build = function (parser, source) { - return (new NEARBindingsBuilder().build(source)); - }; - NEARBindingsBuilder.nearFiles = function (parser) { - return parser.program.sources.filter(hasNearDecorator); - }; - NEARBindingsBuilder.prototype.visitClassDeclaration = function (node) { - if (this.exportedClasses.has(toString(node.name))) - return; - this.generateHandler(node); - this.exportedClasses.set(toString(node.name), node); - }; - NEARBindingsBuilder.prototype.visitFunctionDeclaration = function (node) { - if (!isEntry(node) - || this.wrappedFuncs.has(toString(node.name)) - || !node.is(common_1.CommonFlags.EXPORT) - || (numOfParameters(node) == 0 && returnsVoid(node))) { - _super.prototype.visitFunctionDeclaration.call(this, node); - return; - } - // if (numOfParameters(node) > 0){ - // this.generateArgsParser(node); - // } - this.generateWrapperFunction(node); - // Change function to not be an export - node.flags = node.flags ^ common_1.CommonFlags.EXPORT; - this.wrappedFuncs.add(toString(node.name)); - }; - NEARBindingsBuilder.prototype.generateArgsParser = function (node) { - var _this = this; - var signature = node.signature; - var name = toString(node.name); - var args = signature.parameters.map(function (param) { - var name = toString(param.name); - var type = param.type; - return { name: name, - type: type, - isGeneric: node.typeParameters != null && node.typeParameters.some(function (T) { return toString(T) == toString(type); }) - }; - }); - this.sb.push("\nclass __near_ArgsParser_" + name + " extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_ArgsParser_" + name + ">;\n handledRoot: boolean = false;"); - if (args.length > 0) { - args.forEach(function (arg) { - _this.sb.push(" __near_param_" + arg.name + ": " + _this.typeName(arg.type) + ";"); - }); - this.generateHandlerMethods("this.__near_param_", args); - } - else { - this.generateHandlerMethods("this.__near_param_", []); - } - this.sb.push("}"); - }; - /* - Create a wrapper function that will be export in the function's place. - */ - NEARBindingsBuilder.prototype.generateWrapperFunction = function (func) { - var signature = func.signature; - var params = signature.parameters; - var returnType = signature.returnType; - var returnTypeName = toString(returnType).split("|").filter(function (name) { return name.trim() !== "null"; }).join("|"); - var hasNull = toString(returnType).includes("null"); - var name = func.name.symbol; - this.sb.push("\n//@ts-ignore\nfunction __wrapper_" + name + "(): void {"); - if (params.length > 0) { - this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);\n "); - } - if (toString(returnType) !== "void") { - this.sb.push(" let result: " + toString(returnType) + " = " + name + "("); - } - else { - this.sb.push(" " + name + "("); - } - if (params.length > 0) { - this.sb[this.sb.length - 1] += (params - .map(function (param) { return createDecodeStatement(param); }) - .join(", ")); - } - this.sb[this.sb.length - 1] += ");"; - if (toString(returnType) !== "void") { - this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<" + returnTypeName + ">() || isNullable<" + returnTypeName + ">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<" + returnTypeName + ">(encoder, result" + (hasNull ? "!" : "") + ", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"); - } - this.sb.push("}\n\nexport { __wrapper_" + name + " as " + name + " }\n"); - }; - NEARBindingsBuilder.prototype.generateHandlerMethods = function (valuePrefix, fields) { - var _this = this; - var fieldsWithTypes = function (types) { - return fields.filter(function (field) { - return types.indexOf(_this.typeName(field.type)) != -1 || field.isGeneric; - }); - }; - this.generateBasicSetterHandlers(valuePrefix, "Integer", "i64", fieldsWithTypes(["i32", "u32"])); - this.generateBasicSetterHandlers(valuePrefix, "String", "string", fieldsWithTypes(["string", "i64", "u64", "Uint8Array", "u128"])); - this.generateBasicSetterHandlers(valuePrefix, "Boolean", "bool", fieldsWithTypes(["bool"])); - var nonBasicFields = fields.filter(function (field) { return isReference(field.type) || field.isGeneric; }); - this.sb.push(" setNull(name: string): void {"); - nonBasicFields.forEach(function (field) { - _this.sb.push(" if (name == \"" + field.name + "\") {"); - var setter = "" + valuePrefix + field.name + " = <" + _this.typeName(field.type) + ">null"; - if (field.isGeneric) { - _this.sb.push(" if (isNullable<" + _this.typeName(field.type) + ">()){\n " + setter + "\n return;\n }"); - } - else { - _this.sb.push(" " + setter + "\n return;"); - } - _this.sb.push(" }"); - }); - this.sb.push("\n super.setNull(name);\n }"); - this.sb.push("\n pushObject(name: string): bool {"); - this.sb.push("if (!this.handledRoot) {\n assert(name == null || name.length == 0);\n this.handledRoot = true;\n return true;\n } else {\n assert(name != null || name.length != 0);\n }"); - this.generatePushHandler(valuePrefix, nonBasicFields.filter(function (field) { return !isArrayType(field.type); })); - this.sb.push("\n return super.pushObject(name);\n }"); - this.sb.push("\n pushArray(name: string): bool {"); - this.generatePushHandler(valuePrefix, nonBasicFields.filter(function (field) { return isArrayType(field.type); })); - this.sb.push("\n return super.pushArray(name);\n }"); - }; - NEARBindingsBuilder.prototype.generateBasicSetterHandlers = function (valuePrefix, setterType, setterValueType, matchingFields) { - var _this = this; - if (matchingFields.length > 0) { - this.sb.push(" set" + setterType + "(name: string, value: " + setterValueType + "): void {"); - matchingFields.forEach(function (field) { - // tslint:disable-next-line: as-variables - var fieldTypeName = _this.typeName(field.type); - if (setterType == "String" && fieldTypeName != "string") { - if (fieldTypeName == "Uint8Array") { - _this.sb.push(" if (name == \"" + field.name + "\") {\n " + valuePrefix + field.name + " = base64.decode(value);\n return;\n }"); - } - else if (fieldTypeName === "u128") { - _this.sb.push(" if (name == \"" + field.name + "\") {\n " + valuePrefix + field.name + " = u128.fromString(value);\n return;\n }"); - } - else { - var className = _this.typeName(field.type) === "u64" ? "U64" : "I64"; - _this.sb.push(" if (name == \"" + field.name + "\") {\n " + valuePrefix + field.name + " = " + (field.isGeneric ? "<" + toString(field.type) + ">" : "") + className + ".parseInt(value);\n return;\n }"); - } - } - else { - _this.sb.push(" if (name == \"" + field.name + "\") {\n " + valuePrefix + field.name + " = <" + fieldTypeName + ">value;\n return;\n }"); - } - if (field.isGeneric) { - _this.sb.push(" assert(is" + setterType + "<" + fieldTypeName + ">(), \"" + field.name + " is not a " + setterType + "\")"); - } - }); - this.sb.push(" super.set" + setterType + "(name, value);\n }"); - } - }; - NEARBindingsBuilder.prototype.generatePushHandler = function (valuePrefix, fields) { - var _this = this; - fields.forEach(function (field) { - if (!(_this.typeName(field.type) in _this.typeMapping)) { - var referenceCheck = field.isGeneric ? " && isReference<" + _this.typeName(field.type) + ">()" : ""; - _this.sb.push(" if (name == \"" + field.name + "\"" + referenceCheck + ") {\n " + valuePrefix + field.name + " = decode<" + toString(field.type) + ">(this.buffer, this.decoder.state);\n return false;\n }"); - } - }); - }; - NEARBindingsBuilder.prototype.generateHandler = function (type) { - if (isArrayType(type)) { - return; - } - var typeName = this.typeName(type); - this.sb - .push("export class __near_JSONHandler_" + typeName + " extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_JSONHandler_" + typeName + ">;\n handledRoot: boolean = false;\n value: " + this.typeName(type) + ";\n\n constructor(value_: " + this.typeName(type) + ") {\n super();\n this.value = value_;\n }\n "); - this.generateHandlerMethods("this.value.", this.getFields(type)); - this.sb.push("}\n"); - }; - NEARBindingsBuilder.prototype.typeName = function (type) { - if (!isClass(type)) { - return sourceBuilder_1.ASTBuilder.build(type); - } - type = (type); - var className = toString(type.name); - if (type.isGeneric) { - className += "<" + type.typeParameters.map(toString).join(", ") + ">"; - } - return className; - }; - NEARBindingsBuilder.prototype.getFields = function (type) { - var _class = ((isClass(type)) - ? type - : this.exportedClasses.get(toString(type))); - if (_class == null) { - return []; - } - return _class.members - .filter(function (member) { return member.kind == ast_1.NodeKind.FIELDDECLARATION; }) - .map(function (field) { - return { name: toString(field.name), type: field.type, isGeneric: isGeneric(_class, field) }; - }); - }; - NEARBindingsBuilder.prototype.build = function (source) { - var _this = this; - this.sb = [preamble_1.preamble]; - this.visit(source); - var sourceText = source.statements.map(function (stmt) { - var str = sourceBuilder_1.ASTBuilder.build(stmt); - if (isClass(stmt)) { - var _class = stmt; - str = str.slice(0, str.lastIndexOf("}")); - var fields = _class.members.filter(isField).map(function (field) { return field; }); - if (fields.some(function (field) { return field.type == null; })) { - throw new Error("All Fields must have explict type declaration."); - } - var className = _this.typeName(_class); - str += "\n static decode(json: Uint8Array): " + className + " {\n let value = instantiate<" + className + ">(); // Allocate without constructor\n value.decode(JSON.parse(json));\n return value;\n }\n\n decode(json: Obj): " + className + " {\n let obj: Obj = json;\n " + createDecodeStatements(_class) + "\n return this;\n }\n\n \n\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n " + createEncodeStatements(_class).join("\n ") + "\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"; - } - return str; - }); - return this.sb.concat(sourceText).join("\n"); - }; - return NEARBindingsBuilder; -}(base_1.BaseVisitor)); -function createDecodeStatements(_class) { - var res = _class.members.filter(isField).map(function (field) { return createDecodeStatement(field, "this." + toString(field.name) + " = "); }).join(";\n "); - return res + (res.length > 0 ? ";" : ""); -} -function createDecodeStatement(field, setterPrefix) { - if (setterPrefix === void 0) { setterPrefix = ""; } - var T = toString(field.type); - var name = toString(field.name); - return setterPrefix + "decode<" + T + ">(obj, \"" + name + "\")"; -} -function createEncodeStatements(_class) { - return _class.members.filter(isField).map(function (field) { - var T = toString(field.type); - var name = toString(field.name); - return "encode<" + T + ">(encoder, this." + name + ", \"" + name + "\");"; - }); -} -// TODO: Make work for non-simple generics e.g. field: Array -function isGeneric(_class, field) { - if (_class.typeParameters == null) { - return false; - } - return _class.typeParameters.some(function (param) { return toString(param.name) == toString(field.type); }); -} -function afterParse(parser, writeFile, baseDir) { - var files = NEARBindingsBuilder.nearFiles(parser); - files.forEach(function (source) { - var writeOut = source.text.substr(0, source.text.indexOf("\n")).includes("out"); - // Remove from logs in parser - parser.donelog.delete(source.internalPath); - parser.seenlog.delete(source.internalPath); - // Remove from programs sources - parser.program.sources = parser.program.sources.filter(function (_source) { return _source !== source; }); - // Build new Source - var sourceText = NEARBindingsBuilder.build(parser, source); - if (writeOut) { - writeFile("out/" + source.normalizedPath, sourceText, baseDir); - } - // Parses file and any new imports added to the source - parser.parseFile(sourceText, (isEntry(source) ? "" : "./") + source.normalizedPath, isEntry(source)); - }); -} -exports.afterParse = afterParse; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQTJEO0FBQzNELHFDQWN1QjtBQUN2QiwyQ0FBK0M7QUFHL0MsaURBQTZDO0FBQzdDLCtCQUFxQztBQUNyQyx1Q0FBc0M7QUFRdEMsU0FBUyxXQUFXLENBQUMsSUFBeUI7SUFDNUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUM7QUFDeEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLElBQXlCO0lBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFlO0lBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxjQUFRLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQVk7SUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVU7SUFDMUIsT0FBTywwQkFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsTUFBcUI7SUFDcEMsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksY0FBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEYsT0FBTyxPQUFPLENBQUMsVUFBVSxJQUFJLGdCQUFVLENBQUMsVUFBVSxDQUFDO0FB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QUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMvRDtRQUNELHNEQUFzRDtRQUN0RCxNQUFNLENBQUMsU0FBUyxDQUNkLFVBQVUsRUFDVixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUNyRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQ2hCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUVMLENBQUM7QUF4QkQsZ0NBd0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6IG5vLXZvaWQtZXhwcmVzc2lvbiBhcy10eXBlcyBhcy12YXJpYWJsZXNcbmltcG9ydCB7XG4gIFNvdXJjZSxcbiAgTm9kZUtpbmQsXG4gIENsYXNzRGVjbGFyYXRpb24sXG4gIEZ1bmN0aW9uRGVjbGFyYXRpb24sXG4gIFR5cGVOb2RlLFxuICBGaWVsZERlY2xhcmF0aW9uLFxuICBTdGF0ZW1lbnQsXG4gIE5vZGUsXG4gIE5hbWVkVHlwZU5vZGUsXG4gIFNvdXJjZUtpbmQsXG4gIERlY2xhcmF0aW9uU3RhdGVtZW50LFxuICBUeXBlTmFtZSxcbiAgUGFyYW1ldGVyTm9kZVxufSBmcm9tIFwiLi4vLi4vc3JjL2FzdFwiO1xuaW1wb3J0IHsgQ29tbW9uRmxhZ3MgfSBmcm9tIFwiLi4vLi4vc3JjL2NvbW1vblwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4vbW9ja1R5cGVzXCI7XG5cbmltcG9ydCB7IEFTVEJ1aWxkZXIgfSBmcm9tIFwiLi9zb3VyY2VCdWlsZGVyXCI7XG5pbXBvcnQgeyBCYXNlVmlzaXRvciB9IGZyb20gXCIuL2Jhc2VcIjtcbmltcG9ydCB7IHByZWFtYmxlIH0gZnJvbSBcIi4vcHJlYW1ibGVcIjtcblxuaW50ZXJmYWNlIFNpbXBsZUZpZWxkIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBUeXBlTm9kZTtcbiAgaXNHZW5lcmljOiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiByZXR1cm5zVm9pZChub2RlOiBGdW5jdGlvbkRlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiB0b1N0cmluZyhub2RlLnNpZ25hdHVyZS5yZXR1cm5UeXBlKSA9PT0gXCJ2b2lkXCI7XG59XG5cbmZ1bmN0aW9uIG51bU9mUGFyYW1ldGVycyhub2RlOiBGdW5jdGlvbkRlY2xhcmF0aW9uKTogbnVtYmVyIHtcbiAgcmV0dXJuIG5vZGUuc2lnbmF0dXJlLnBhcmFtZXRlcnMubGVuZ3RoO1xufVxuXG5mdW5jdGlvbiBpc0NvbW1lbnQoc3RtdDogU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBzdG10LmtpbmQgPT0gTm9kZUtpbmQuQ09NTUVOVDtcbn1cblxuZnVuY3Rpb24gaGFzTmVhckRlY29yYXRvcihzdG10OiBTb3VyY2UpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0bXQudGV4dC5pbmNsdWRlcyhcIkBuZWFyZmlsZVwiKSB8fCBpc0VudHJ5KHN0bXQpO1xufVxuXG5mdW5jdGlvbiB0b1N0cmluZyhub2RlOiBOb2RlKTogc3RyaW5nIHtcbiAgcmV0dXJuIEFTVEJ1aWxkZXIuYnVpbGQobm9kZSk7XG59XG5cbmZ1bmN0aW9uIGlzRW50cnkoc291cmNlOiBTb3VyY2UgfCBOb2RlKTogYm9vbGVhbiB7XG4gIGxldCBfc291cmNlID0gPFNvdXJjZT4oKHNvdXJjZS5raW5kID09IE5vZGVLaW5kLlNPVVJDRSkgPyBzb3VyY2UgOiBzb3VyY2UucmFuZ2Uuc291cmNlKTtcbiAgcmV0dXJuIF9zb3VyY2Uuc291cmNlS2luZCA9PSBTb3VyY2VLaW5kLlVTRVJfRU5UUlk7XG59XG5cbmZ1bmN0aW9uIGlzQXJyYXlUeXBlKHR5cGU6IFR5cGVOb2RlIHwgQ2xhc3NEZWNsYXJhdGlvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gISEoXG4gICAgKHR5cGUua2luZCA9PSBOb2RlS2luZC5OQU1FRFRZUEUpICYmXG4gICAgdG9TdHJpbmcodHlwZSkuc3RhcnRzV2l0aChcIkFycmF5XCIpICYmXG4gICAgKDxOYW1lZFR5cGVOb2RlPnR5cGUpLnR5cGVBcmd1bWVudHMgJiZcbiAgICAoPE5hbWVkVHlwZU5vZGU+dHlwZSkudHlwZUFyZ3VtZW50cyEubGVuZ3RoID4gMFxuICApO1xufVxuXG5mdW5jdGlvbiBpc0NsYXNzKHR5cGU6IE5vZGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUua2luZCA9PSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OO1xufVxuXG5mdW5jdGlvbiBpc0ZpZWxkKG1lbTogRGVjbGFyYXRpb25TdGF0ZW1lbnQpIHtcbiAgcmV0dXJuIG1lbS5raW5kID09IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT047XG59XG5cbmZ1bmN0aW9uIGlzUmVmZXJlbmNlKHR5cGU6IFR5cGVOb2RlKTogYm9vbGVhbiB7XG4gIGxldCBzaW1wbGVUeXBlcyA9IFtcbiAgICBcImkzMlwiLFxuICAgIFwidTMyXCIsXG4gICAgXCJib29sXCIsXG4gICAgXCJpNjRcIixcbiAgICBcInU2NFwiLFxuICAgIFwiYm9vbGVhblwiLFxuICBdO1xuICByZXR1cm4gIXNpbXBsZVR5cGVzLmluY2x1ZGVzKHRvU3RyaW5nKHR5cGUpKTtcbn1cblxuLy8gVE9ETzogRXh0cmFjdCB0aGlzIGludG8gc2VwYXJhdGUgbW9kdWxlLCBwcmVmZXJyYWJsZSBwbHVnZ2FibGVcbmNsYXNzIE5FQVJCaW5kaW5nc0J1aWxkZXIgZXh0ZW5kcyBCYXNlVmlzaXRvciB7XG4gIHByaXZhdGUgdHlwZU1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgaTMyOiBcIkludGVnZXJcIixcbiAgICB1MzI6IFwiSW50ZWdlclwiLFxuICAgIGk2NDogXCJTdHJpbmdcIixcbiAgICB1NjQ6IFwiU3RyaW5nXCIsXG4gICAgc3RyaW5nOiBcIlN0cmluZ1wiLFxuICAgIGJvb2w6IFwiQm9vbGVhblwiLFxuICAgIFVpbnQ4QXJyYXk6IFwiU3RyaW5nXCIsXG4gIH07XG5cbiAgcHJpdmF0ZSBub25OdWxsYWJsZVR5cGVzID0gW1wiaTMyXCIsIFwidTMyXCIsIFwiaTY0XCIsIFwidTY0XCIsIFwiYm9vbFwiLCBcImJvb2xlYW5cIl07XG5cbiAgcHJpdmF0ZSBzYjogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBleHBvcnRlZENsYXNzZXM6IE1hcDxzdHJpbmcsIENsYXNzRGVjbGFyYXRpb24+ID0gbmV3IE1hcCgpO1xuICB3cmFwcGVkRnVuY3M6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuXG4gIHN0YXRpYyBidWlsZChwYXJzZXI6IFBhcnNlciwgc291cmNlOiBTb3VyY2UpOiBzdHJpbmcge1xuICAgIHJldHVybiAobmV3IE5FQVJCaW5kaW5nc0J1aWxkZXIoKS5idWlsZChzb3VyY2UpKTtcbiAgfVxuXG4gIHN0YXRpYyBuZWFyRmlsZXMocGFyc2VyOiBQYXJzZXIpOiBTb3VyY2VbXSB7XG4gICAgcmV0dXJuIHBhcnNlci5wcm9ncmFtLnNvdXJjZXMuZmlsdGVyKGhhc05lYXJEZWNvcmF0b3IpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0RlY2xhcmF0aW9uKG5vZGU6IENsYXNzRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5leHBvcnRlZENsYXNzZXMuaGFzKHRvU3RyaW5nKG5vZGUubmFtZSkpKSByZXR1cm47XG4gICAgdGhpcy5nZW5lcmF0ZUhhbmRsZXIobm9kZSk7XG4gICAgdGhpcy5leHBvcnRlZENsYXNzZXMuc2V0KHRvU3RyaW5nKG5vZGUubmFtZSksIG5vZGUpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkRlY2xhcmF0aW9uKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICBpZiAoIWlzRW50cnkobm9kZSlcbiAgICAgICAgfHwgdGhpcy53cmFwcGVkRnVuY3MuaGFzKHRvU3RyaW5nKG5vZGUubmFtZSkpXG4gICAgICAgIHx8ICFub2RlLmlzKENvbW1vbkZsYWdzLkVYUE9SVClcbiAgICAgICAgfHwgKG51bU9mUGFyYW1ldGVycyhub2RlKSA9PSAwICYmIHJldHVybnNWb2lkKG5vZGUpKVxuICAgICAgICApIHtcbiAgICAgICAgc3VwZXIudmlzaXRGdW5jdGlvbkRlY2xhcmF0aW9uKG5vZGUpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGlmIChudW1PZlBhcmFtZXRlcnMobm9kZSkgPiAwKXtcbiAgICAvLyAgIHRoaXMuZ2VuZXJhdGVBcmdzUGFyc2VyKG5vZGUpO1xuICAgIC8vIH1cbiAgICB0aGlzLmdlbmVyYXRlV3JhcHBlckZ1bmN0aW9uKG5vZGUpO1xuICAgIC8vIENoYW5nZSBmdW5jdGlvbiB0byBub3QgYmUgYW4gZXhwb3J0XG4gICAgbm9kZS5mbGFncyA9IG5vZGUuZmxhZ3MgXiBDb21tb25GbGFncy5FWFBPUlQ7XG4gICAgdGhpcy53cmFwcGVkRnVuY3MuYWRkKHRvU3RyaW5nKG5vZGUubmFtZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUFyZ3NQYXJzZXIobm9kZTogRnVuY3Rpb25EZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBzaWduYXR1cmUgPSBub2RlLnNpZ25hdHVyZTtcbiAgICBsZXQgbmFtZSA9IHRvU3RyaW5nKG5vZGUubmFtZSk7XG4gICAgdmFyIGFyZ3M6IFNpbXBsZUZpZWxkW10gPSBzaWduYXR1cmUucGFyYW1ldGVycy5tYXAocGFyYW0gPT4ge1xuICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhwYXJhbS5uYW1lKTtcbiAgICAgIGxldCB0eXBlID0gcGFyYW0udHlwZTtcbiAgICAgIHJldHVybiB7IG5hbWUsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGlzR2VuZXJpYzogbm9kZS50eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIG5vZGUudHlwZVBhcmFtZXRlcnMuc29tZShUID0+IHRvU3RyaW5nKFQpID09IHRvU3RyaW5nKHR5cGUpKVxuICAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLnNiLnB1c2goYFxuY2xhc3MgX19uZWFyX0FyZ3NQYXJzZXJfJHtuYW1lfSBleHRlbmRzIFRocm93aW5nSlNPTkhhbmRsZXIge1xuICBidWZmZXI6IFVpbnQ4QXJyYXk7XG4gIGRlY29kZXI6IEpTT05EZWNvZGVyPF9fbmVhcl9BcmdzUGFyc2VyXyR7bmFtZX0+O1xuICBoYW5kbGVkUm9vdDogYm9vbGVhbiA9IGZhbHNlO2ApO1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGFyZ3MuZm9yRWFjaChhcmcgPT4ge1xuICAgICAgICB0aGlzLnNiLnB1c2goXG5gICBfX25lYXJfcGFyYW1fJHthcmcubmFtZX06ICR7dGhpcy50eXBlTmFtZShhcmcudHlwZSl9O2BcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5nZW5lcmF0ZUhhbmRsZXJNZXRob2RzKFwidGhpcy5fX25lYXJfcGFyYW1fXCIsIGFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdlbmVyYXRlSGFuZGxlck1ldGhvZHMoXCJ0aGlzLl9fbmVhcl9wYXJhbV9cIiwgW10pO1xuICAgIH1cbiAgICB0aGlzLnNiLnB1c2goYH1gKTtcbiAgfVxuXG4gIC8qXG4gIENyZWF0ZSBhIHdyYXBwZXIgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGV4cG9ydCBpbiB0aGUgZnVuY3Rpb24ncyBwbGFjZS5cbiAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZVdyYXBwZXJGdW5jdGlvbihmdW5jOiBGdW5jdGlvbkRlY2xhcmF0aW9uKSB7XG4gICAgbGV0IHNpZ25hdHVyZSA9IGZ1bmMuc2lnbmF0dXJlO1xuICAgIGxldCBwYXJhbXMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICBsZXQgcmV0dXJuVHlwZSA9IHNpZ25hdHVyZS5yZXR1cm5UeXBlO1xuICAgIGxldCByZXR1cm5UeXBlTmFtZSA9IHRvU3RyaW5nKHJldHVyblR5cGUpLnNwbGl0KFwifFwiKS5maWx0ZXIobmFtZSA9PiBuYW1lLnRyaW0oKSAhPT0gXCJudWxsXCIpLmpvaW4oXCJ8XCIpO1xuICAgIGxldCBoYXNOdWxsID0gdG9TdHJpbmcocmV0dXJuVHlwZSkuaW5jbHVkZXMoXCJudWxsXCIpO1xuICAgIGxldCBuYW1lID0gZnVuYy5uYW1lLnN5bWJvbDtcbiAgICB0aGlzLnNiLnB1c2goYFxuLy9AdHMtaWdub3JlXG5mdW5jdGlvbiBfX3dyYXBwZXJfJHtuYW1lfSgpOiB2b2lkIHtgKTtcbiAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCl7XG4gICAgIHRoaXMuc2IucHVzaChcbmAgIC8vIFJlYWRpbmcgaW5wdXQgYnl0ZXMuXG4gIGlucHV0KDApO1xuICBsZXQganNvbl9sZW4gPSByZWdpc3Rlcl9sZW4oMCk7XG4gIGlmIChqc29uX2xlbiA9PSBVMzIuTUFYX1ZBTFVFKSB7XG4gICAgcGFuaWMoKTtcbiAgfVxuICBsZXQganNvbiA9IG5ldyBVaW50OEFycmF5KGpzb25fbGVuIGFzIHUzMik7XG4gIHJlYWRfcmVnaXN0ZXIoMCwgPHVzaXplPmpzb24uYnVmZmVyKTtcbiAgY29uc3Qgb2JqOiBPYmogPSBKU09OLnBhcnNlKGpzb24pO1xuICBgKTtcbiAgICB9XG4gICAgaWYgKHRvU3RyaW5nKHJldHVyblR5cGUpICE9PSBcInZvaWRcIikge1xuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgbGV0IHJlc3VsdDogJHt0b1N0cmluZyhyZXR1cm5UeXBlKX0gPSAke25hbWV9KGApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNiLnB1c2goXG5gICAke25hbWV9KGApO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2JbdGhpcy5zYi5sZW5ndGggLSAxXSArPSAoXG4gICAgICAgIHBhcmFtc1xuICAgICAgICAgIC5tYXAoKHBhcmFtKSA9PiBjcmVhdGVEZWNvZGVTdGF0ZW1lbnQocGFyYW0pKVxuICAgICAgICAgIC5qb2luKFwiLCBcIilcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuc2JbdGhpcy5zYi5sZW5ndGggLSAxXSArPSBcIik7XCI7XG4gICAgaWYgKHRvU3RyaW5nKHJldHVyblR5cGUpICE9PSBcInZvaWRcIikge1xuICAgICAgdGhpcy5zYi5wdXNoKGBcbiAgbGV0IGVuY29kZXIgPSBuZXcgSlNPTkVuY29kZXIoKTtcbiAgaWYgKChpc1N0cmluZzwke3JldHVyblR5cGVOYW1lfT4oKSB8fCBpc051bGxhYmxlPCR7cmV0dXJuVHlwZU5hbWV9PigpKSAmJiByZXN1bHQgPT0gbnVsbCkge1xuICAgIGVuY29kZXIuc2V0TnVsbChudWxsKTtcbiAgfSBlbHNlIHtcbiAgICBlbmNvZGU8JHtyZXR1cm5UeXBlTmFtZX0+KGVuY29kZXIsIHJlc3VsdCR7aGFzTnVsbCA/IFwiIVwiIDogXCJcIn0sIG51bGwpO1xuICB9XG4gIGxldCB2YWw6IFVpbnQ4QXJyYXkgPSBlbmNvZGVyLnNlcmlhbGl6ZSgpO1xuICB2YWx1ZV9yZXR1cm4odmFsLmJ5dGVMZW5ndGgsIDx1c2l6ZT52YWwuYnVmZmVyKTtgKTtcbiAgICB9XG4gICAgdGhpcy5zYi5wdXNoKGB9XG5cbmV4cG9ydCB7IF9fd3JhcHBlcl8ke25hbWV9IGFzICR7bmFtZX0gfVxuYCk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlSGFuZGxlck1ldGhvZHMoXG4gICAgdmFsdWVQcmVmaXg6IHN0cmluZyxcbiAgICBmaWVsZHM6IFNpbXBsZUZpZWxkW11cbiAgKTogdm9pZCB7XG4gICAgdmFyIGZpZWxkc1dpdGhUeXBlcyA9ICh0eXBlczogc3RyaW5nW10pOiBTaW1wbGVGaWVsZFtdID0+XG4gICAgICBmaWVsZHMuZmlsdGVyKGZpZWxkID0+XG4gICAgICAgICAgICB0eXBlcy5pbmRleE9mKHRoaXMudHlwZU5hbWUoZmllbGQudHlwZSkpICE9IC0xIHx8IGZpZWxkLmlzR2VuZXJpYyk7XG5cbiAgICB0aGlzLmdlbmVyYXRlQmFzaWNTZXR0ZXJIYW5kbGVycyhcbiAgICAgIHZhbHVlUHJlZml4LFxuICAgICAgXCJJbnRlZ2VyXCIsXG4gICAgICBcImk2NFwiLFxuICAgICAgZmllbGRzV2l0aFR5cGVzKFtcImkzMlwiLCBcInUzMlwiXSlcbiAgICApO1xuICAgIHRoaXMuZ2VuZXJhdGVCYXNpY1NldHRlckhhbmRsZXJzKFxuICAgICAgdmFsdWVQcmVmaXgsXG4gICAgICBcIlN0cmluZ1wiLFxuICAgICAgXCJzdHJpbmdcIixcbiAgICAgIGZpZWxkc1dpdGhUeXBlcyhbXCJzdHJpbmdcIiwgXCJpNjRcIiwgXCJ1NjRcIiwgXCJVaW50OEFycmF5XCIsIFwidTEyOFwiXSlcbiAgICApO1xuICAgIHRoaXMuZ2VuZXJhdGVCYXNpY1NldHRlckhhbmRsZXJzKFxuICAgICAgdmFsdWVQcmVmaXgsXG4gICAgICBcIkJvb2xlYW5cIixcbiAgICAgIFwiYm9vbFwiLFxuICAgICAgZmllbGRzV2l0aFR5cGVzKFtcImJvb2xcIl0pXG4gICAgKTtcblxuICAgIHZhciBub25CYXNpY0ZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gaXNSZWZlcmVuY2UoZmllbGQudHlwZSkgfHwgZmllbGQuaXNHZW5lcmljKTtcblxuICAgIHRoaXMuc2IucHVzaChgICBzZXROdWxsKG5hbWU6IHN0cmluZyk6IHZvaWQge2ApO1xuICAgIG5vbkJhc2ljRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgICBpZiAobmFtZSA9PSBcIiR7ZmllbGQubmFtZX1cIikge2ApO1xuICAgICAgbGV0IHNldHRlciA9IGAke3ZhbHVlUHJlZml4fSR7ZmllbGQubmFtZX0gPSA8JHt0aGlzLnR5cGVOYW1lKGZpZWxkLnR5cGUpfT5udWxsYDtcbiAgICAgIGlmIChmaWVsZC5pc0dlbmVyaWMpIHtcbiAgICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgICAgICBpZiAoaXNOdWxsYWJsZTwke3RoaXMudHlwZU5hbWUoZmllbGQudHlwZSl9PigpKXtcbiAgICAgICAgICR7c2V0dGVyfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgIH1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNiLnB1c2goXG5gICAgICAgICAke3NldHRlcn1cbiAgICAgICAgIHJldHVybjtgKTtcbiAgICAgICAgfVxuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgICAgIH1gKTtcbiAgICB9KTtcbiAgICB0aGlzLnNiLnB1c2goYFxuICAgIHN1cGVyLnNldE51bGwobmFtZSk7XG4gIH1gKTtcblxuICAgIHRoaXMuc2IucHVzaChgXG4gIHB1c2hPYmplY3QobmFtZTogc3RyaW5nKTogYm9vbCB7YCk7XG4gICAgdGhpcy5zYi5wdXNoKFxuICAgIGBpZiAoIXRoaXMuaGFuZGxlZFJvb3QpIHtcbiAgICAgIGFzc2VydChuYW1lID09IG51bGwgfHwgbmFtZS5sZW5ndGggPT0gMCk7XG4gICAgICB0aGlzLmhhbmRsZWRSb290ID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobmFtZSAhPSBudWxsIHx8IG5hbWUubGVuZ3RoICE9IDApO1xuICAgIH1gKTtcbiAgICB0aGlzLmdlbmVyYXRlUHVzaEhhbmRsZXIoXG4gICAgICB2YWx1ZVByZWZpeCxcbiAgICAgIG5vbkJhc2ljRmllbGRzLmZpbHRlcihmaWVsZCA9PiAhaXNBcnJheVR5cGUoZmllbGQudHlwZSkpXG4gICAgKTtcbiAgICB0aGlzLnNiLnB1c2goYFxuICAgIHJldHVybiBzdXBlci5wdXNoT2JqZWN0KG5hbWUpO1xuICB9YCk7XG4gICAgdGhpcy5zYi5wdXNoKGBcbiAgcHVzaEFycmF5KG5hbWU6IHN0cmluZyk6IGJvb2wge2ApO1xuICAgIHRoaXMuZ2VuZXJhdGVQdXNoSGFuZGxlcihcbiAgICAgIHZhbHVlUHJlZml4LFxuICAgICAgbm9uQmFzaWNGaWVsZHMuZmlsdGVyKGZpZWxkID0+IGlzQXJyYXlUeXBlKGZpZWxkLnR5cGUpKVxuICAgICk7XG4gICAgdGhpcy5zYi5wdXNoKGBcbiAgICByZXR1cm4gc3VwZXIucHVzaEFycmF5KG5hbWUpO1xuICB9YCk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQmFzaWNTZXR0ZXJIYW5kbGVycyhcbiAgICB2YWx1ZVByZWZpeDogc3RyaW5nLFxuICAgIHNldHRlclR5cGU6IHN0cmluZyxcbiAgICBzZXR0ZXJWYWx1ZVR5cGU6IHN0cmluZyxcbiAgICBtYXRjaGluZ0ZpZWxkczogU2ltcGxlRmllbGRbXVxuICApIHtcbiAgICBpZiAobWF0Y2hpbmdGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgc2V0JHtzZXR0ZXJUeXBlfShuYW1lOiBzdHJpbmcsIHZhbHVlOiAke3NldHRlclZhbHVlVHlwZX0pOiB2b2lkIHtgXG4gICAgICApO1xuICAgICAgbWF0Y2hpbmdGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogYXMtdmFyaWFibGVzXG4gICAgICAgIGxldCBmaWVsZFR5cGVOYW1lID0gdGhpcy50eXBlTmFtZShmaWVsZC50eXBlKTtcbiAgICAgICAgaWYgKHNldHRlclR5cGUgPT0gXCJTdHJpbmdcIiAmJiBmaWVsZFR5cGVOYW1lICE9IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBpZiAoZmllbGRUeXBlTmFtZSA9PSBcIlVpbnQ4QXJyYXlcIikge1xuICAgICAgICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgICBpZiAobmFtZSA9PSBcIiR7ZmllbGQubmFtZX1cIikge1xuICAgICAgICR7dmFsdWVQcmVmaXh9JHtmaWVsZC5uYW1lfSA9IGJhc2U2NC5kZWNvZGUodmFsdWUpO1xuICAgICAgIHJldHVybjtcbiAgICAgfWApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRUeXBlTmFtZSA9PT0gXCJ1MTI4XCIpIHtcbiAgICAgICAgICAgIHRoaXMuc2IucHVzaChcbmAgICAgaWYgKG5hbWUgPT0gXCIke2ZpZWxkLm5hbWV9XCIpIHtcbiAgICAgICR7dmFsdWVQcmVmaXh9JHtmaWVsZC5uYW1lfSA9IHUxMjguZnJvbVN0cmluZyh2YWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgIH1gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGNsYXNzTmFtZSA9IHRoaXMudHlwZU5hbWUoZmllbGQudHlwZSkgPT09IFwidTY0XCIgPyBcIlU2NFwiIDogXCJJNjRcIjtcbiAgICAgICAgICAgIHRoaXMuc2IucHVzaChcbmAgICAgaWYgKG5hbWUgPT0gXCIke2ZpZWxkLm5hbWV9XCIpIHtcbiAgICAgICR7dmFsdWVQcmVmaXh9JHtmaWVsZC5uYW1lfSA9ICR7ZmllbGQuaXNHZW5lcmljID8gXCI8XCIgKyB0b1N0cmluZyhmaWVsZC50eXBlKSArIFwiPlwiIDogXCJcIn0ke2NsYXNzTmFtZX0ucGFyc2VJbnQodmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgICB9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2IucHVzaChcbmAgICAgaWYgKG5hbWUgPT0gXCIke2ZpZWxkLm5hbWV9XCIpIHtcbiAgICAgICR7dmFsdWVQcmVmaXh9JHtmaWVsZC5uYW1lfSA9IDwke2ZpZWxkVHlwZU5hbWV9PnZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgICB9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmlzR2VuZXJpYykge1xuICAgICAgICAgIHRoaXMuc2IucHVzaChcbmAgICAgYXNzZXJ0KGlzJHtzZXR0ZXJUeXBlfTwke2ZpZWxkVHlwZU5hbWV9PigpLCBcIiR7ZmllbGQubmFtZX0gaXMgbm90IGEgJHtzZXR0ZXJUeXBlfVwiKWApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgICBzdXBlci5zZXQke3NldHRlclR5cGV9KG5hbWUsIHZhbHVlKTtcbiAgICB9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVB1c2hIYW5kbGVyKHZhbHVlUHJlZml4OiBzdHJpbmcsIGZpZWxkczogU2ltcGxlRmllbGRbXSkge1xuICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGlmICghKHRoaXMudHlwZU5hbWUoZmllbGQudHlwZSkgaW4gdGhpcy50eXBlTWFwcGluZykpIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZUNoZWNrID0gZmllbGQuaXNHZW5lcmljID8gYCAmJiBpc1JlZmVyZW5jZTwke3RoaXMudHlwZU5hbWUoZmllbGQudHlwZSl9PigpYCA6IFwiXCI7XG4gICAgICAgIHRoaXMuc2IucHVzaChcbmAgICAgICAgaWYgKG5hbWUgPT0gXCIke2ZpZWxkLm5hbWV9XCIke3JlZmVyZW5jZUNoZWNrfSkge1xuICAgICAgICAgICR7dmFsdWVQcmVmaXh9JHtmaWVsZC5uYW1lfSA9IGRlY29kZTwke3RvU3RyaW5nKGZpZWxkLnR5cGUpfT4odGhpcy5idWZmZXIsIHRoaXMuZGVjb2Rlci5zdGF0ZSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlSGFuZGxlcih0eXBlOiBUeXBlTm9kZSB8IENsYXNzRGVjbGFyYXRpb24pIHtcbiAgICBpZiAoaXNBcnJheVR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHR5cGVOYW1lID0gdGhpcy50eXBlTmFtZSh0eXBlKTtcbiAgICB0aGlzLnNiXG4gICAgICAucHVzaChgZXhwb3J0IGNsYXNzIF9fbmVhcl9KU09OSGFuZGxlcl8ke3R5cGVOYW1lfSBleHRlbmRzIFRocm93aW5nSlNPTkhhbmRsZXIge1xuICBidWZmZXI6IFVpbnQ4QXJyYXk7XG4gIGRlY29kZXI6IEpTT05EZWNvZGVyPF9fbmVhcl9KU09OSGFuZGxlcl8ke3R5cGVOYW1lfT47XG4gIGhhbmRsZWRSb290OiBib29sZWFuID0gZmFsc2U7XG4gIHZhbHVlOiAke3RoaXMudHlwZU5hbWUodHlwZSl9O1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlXzogJHt0aGlzLnR5cGVOYW1lKHR5cGUpfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXztcbiAgfVxuICAgICAgYCk7XG5cbiAgICB0aGlzLmdlbmVyYXRlSGFuZGxlck1ldGhvZHMoXCJ0aGlzLnZhbHVlLlwiLCB0aGlzLmdldEZpZWxkcyh0eXBlKSk7XG4gICAgdGhpcy5zYi5wdXNoKFwifVxcblwiKTtcbiAgfVxuXG4gIHByaXZhdGUgdHlwZU5hbWUodHlwZTogVHlwZU5vZGUgfCBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzQ2xhc3ModHlwZSkpIHtcbiAgICAgIHJldHVybiBBU1RCdWlsZGVyLmJ1aWxkKHR5cGUpO1xuICAgIH1cbiAgICB0eXBlID0gPENsYXNzRGVjbGFyYXRpb24+KHR5cGUpO1xuICAgIGxldCBjbGFzc05hbWUgPSB0b1N0cmluZyh0eXBlLm5hbWUpO1xuICAgIGlmICh0eXBlLmlzR2VuZXJpYykge1xuICAgICAgY2xhc3NOYW1lICs9IFwiPFwiICsgdHlwZS50eXBlUGFyYW1ldGVycyEubWFwKHRvU3RyaW5nKS5qb2luKFwiLCBcIikgKyBcIj5cIjtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRzKHR5cGU6IFR5cGVOb2RlIHwgQ2xhc3NEZWNsYXJhdGlvbik6IFNpbXBsZUZpZWxkW10ge1xuICAgIGxldCBfY2xhc3MgPSA8Q2xhc3NEZWNsYXJhdGlvbj4gKChpc0NsYXNzKHR5cGUpKVxuICAgICAgICA/IHR5cGVcbiAgICAgICAgOiB0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5nZXQodG9TdHJpbmcodHlwZSkpKTtcbiAgICBpZiAoX2NsYXNzID09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gX2NsYXNzLm1lbWJlcnNcbiAgICAgIC5maWx0ZXIobWVtYmVyID0+IG1lbWJlci5raW5kID09IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT04pXG4gICAgICAubWFwKFxuICAgICAgICAoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24pOiBTaW1wbGVGaWVsZCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgbmFtZTogdG9TdHJpbmcoZmllbGQubmFtZSksIHR5cGU6IGZpZWxkLnR5cGUhLCBpc0dlbmVyaWM6IGlzR2VuZXJpYyhfY2xhc3MsIGZpZWxkKX07XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBidWlsZChzb3VyY2U6IFNvdXJjZSk6IHN0cmluZyB7XG4gICAgICB0aGlzLnNiID0gW3ByZWFtYmxlXTtcbiAgICAgIHRoaXMudmlzaXQoc291cmNlKTtcbiAgICAgIGxldCBzb3VyY2VUZXh0ID0gc291cmNlLnN0YXRlbWVudHMubWFwKHN0bXQgPT4ge1xuICAgICAgICBsZXQgc3RyID0gQVNUQnVpbGRlci5idWlsZChzdG10KTtcbiAgICAgICAgaWYgKGlzQ2xhc3Moc3RtdCkpIHtcbiAgICAgICAgICBsZXQgX2NsYXNzID0gPENsYXNzRGVjbGFyYXRpb24+IHN0bXQ7XG4gICAgICAgICAgc3RyID0gc3RyLnNsaWNlKDAsIHN0ci5sYXN0SW5kZXhPZihcIn1cIikpO1xuICAgICAgICAgIGxldCBmaWVsZHMgPSBfY2xhc3MubWVtYmVycy5maWx0ZXIoaXNGaWVsZCkubWFwKChmaWVsZDogRmllbGREZWNsYXJhdGlvbikgPT4gZmllbGQpO1xuICAgICAgICAgIGlmIChmaWVsZHMuc29tZShmaWVsZCA9PiBmaWVsZC50eXBlID09IG51bGwpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbGwgRmllbGRzIG11c3QgaGF2ZSBleHBsaWN0IHR5cGUgZGVjbGFyYXRpb24uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgY2xhc3NOYW1lID0gdGhpcy50eXBlTmFtZShfY2xhc3MpO1xuICAgICAgICAgIHN0ciArPSBgXG4gIHN0YXRpYyBkZWNvZGUoanNvbjogVWludDhBcnJheSk6ICR7Y2xhc3NOYW1lfSB7XG4gICAgbGV0IHZhbHVlID0gaW5zdGFudGlhdGU8JHtjbGFzc05hbWV9PigpOyAvLyBBbGxvY2F0ZSB3aXRob3V0IGNvbnN0cnVjdG9yXG4gICAgdmFsdWUuZGVjb2RlKEpTT04ucGFyc2UoanNvbikpO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGRlY29kZShqc29uOiBPYmopOiAke2NsYXNzTmFtZX0ge1xuICAgIGxldCBvYmo6IE9iaiA9IGpzb247XG4gICAgJHtjcmVhdGVEZWNvZGVTdGF0ZW1lbnRzKF9jbGFzcyl9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBcblxuICBlbmNvZGUoX2VuY29kZXI6IEpTT05FbmNvZGVyIHwgbnVsbCA9IG51bGwsIG5hbWU6IHN0cmluZyB8IG51bGwgPSBcIlwiKTogSlNPTkVuY29kZXIge1xuICAgIGxldCBlbmNvZGVyID0gKF9lbmNvZGVyICE9IG51bGwgPyBfZW5jb2RlciA6IG5ldyBKU09ORW5jb2RlcigpKSE7XG4gICAgZW5jb2Rlci5wdXNoT2JqZWN0KG5hbWUpO1xuICAgICR7Y3JlYXRlRW5jb2RlU3RhdGVtZW50cyhfY2xhc3MpLmpvaW4oXCJcXG4gICAgXCIpfVxuICAgIGVuY29kZXIucG9wT2JqZWN0KCk7XG4gICAgcmV0dXJuIGVuY29kZXJcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5lbmNvZGUoKS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVuY29kZSgpLnRvU3RyaW5nKCk7XG4gIH1cbn1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRoaXMuc2IuY29uY2F0KHNvdXJjZVRleHQpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY29kZVN0YXRlbWVudHMoX2NsYXNzOiBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nIHtcbiAgbGV0IHJlcyA9IF9jbGFzcy5tZW1iZXJzLmZpbHRlcihpc0ZpZWxkKS5tYXAoICAgIFxuICAgIChmaWVsZDogRmllbGREZWNsYXJhdGlvbik6IHN0cmluZyAgPT4gY3JlYXRlRGVjb2RlU3RhdGVtZW50KGZpZWxkLCBgdGhpcy4ke3RvU3RyaW5nKGZpZWxkLm5hbWUpfSA9IGApXG4gICkuam9pbihcIjtcXG4gICAgXCIpO1xuICByZXR1cm4gcmVzICsgKHJlcy5sZW5ndGg+MCA/IFwiO1wiOiBcIlwiKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNvZGVTdGF0ZW1lbnQoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24gfCBQYXJhbWV0ZXJOb2RlLCBzZXR0ZXJQcmVmaXg6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xuICBsZXQgVCA9IHRvU3RyaW5nKGZpZWxkLnR5cGUhKTtcbiAgbGV0IG5hbWUgPSB0b1N0cmluZyhmaWVsZC5uYW1lKTtcbiAgcmV0dXJuIGAke3NldHRlclByZWZpeH1kZWNvZGU8JHtUfT4ob2JqLCBcIiR7bmFtZX1cIilgO1xuXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVuY29kZVN0YXRlbWVudHMoX2NsYXNzOiBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nW10ge1xuICByZXR1cm4gX2NsYXNzLm1lbWJlcnMuZmlsdGVyKGlzRmllbGQpLm1hcChcbiAgICAoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24pOiBzdHJpbmcgID0+IHtcbiAgICAgIGxldCBUID0gdG9TdHJpbmcoZmllbGQudHlwZSEpO1xuICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhmaWVsZC5uYW1lKTtcbiAgICAgIHJldHVybiBgZW5jb2RlPCR7VH0+KGVuY29kZXIsIHRoaXMuJHtuYW1lfSwgXCIke25hbWV9XCIpO2A7XG4gICAgfVxuICApO1xufVxuLy8gVE9ETzogTWFrZSB3b3JrIGZvciBub24tc2ltcGxlIGdlbmVyaWNzIGUuZy4gZmllbGQ6IEFycmF5PFQ+XG5mdW5jdGlvbiBpc0dlbmVyaWMoX2NsYXNzOiBDbGFzc0RlY2xhcmF0aW9uLCBmaWVsZDogRmllbGREZWNsYXJhdGlvbik6IGJvb2xlYW4ge1xuICBpZiAoX2NsYXNzLnR5cGVQYXJhbWV0ZXJzID09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIF9jbGFzcy50eXBlUGFyYW1ldGVycy5zb21lKHBhcmFtID0+IHRvU3RyaW5nKHBhcmFtLm5hbWUpID09IHRvU3RyaW5nKGZpZWxkLnR5cGUhKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZnRlclBhcnNlKHBhcnNlcjogUGFyc2VyLCB3cml0ZUZpbGU6IEZpbGVXcml0ZXIsIGJhc2VEaXI6IHN0cmluZyk6IHZvaWQge1xuICBsZXQgZmlsZXMgPSBORUFSQmluZGluZ3NCdWlsZGVyLm5lYXJGaWxlcyhwYXJzZXIpO1xuICBmaWxlcy5mb3JFYWNoKHNvdXJjZSA9PiB7XG4gICAgbGV0IHdyaXRlT3V0ID0gc291cmNlLnRleHQuc3Vic3RyKDAsIHNvdXJjZS50ZXh0LmluZGV4T2YoXCJcXG5cIikpLmluY2x1ZGVzKFwib3V0XCIpO1xuICAgIC8vIFJlbW92ZSBmcm9tIGxvZ3MgaW4gcGFyc2VyXG4gICAgcGFyc2VyLmRvbmVsb2cuZGVsZXRlKHNvdXJjZS5pbnRlcm5hbFBhdGgpO1xuICAgIHBhcnNlci5zZWVubG9nLmRlbGV0ZShzb3VyY2UuaW50ZXJuYWxQYXRoKTtcbiAgICAvLyBSZW1vdmUgZnJvbSBwcm9ncmFtcyBzb3VyY2VzXG4gICAgcGFyc2VyLnByb2dyYW0uc291cmNlcyA9IHBhcnNlci5wcm9ncmFtLnNvdXJjZXMuZmlsdGVyKFxuICAgICAgKF9zb3VyY2U6IFNvdXJjZSkgPT4gX3NvdXJjZSAhPT0gc291cmNlXG4gICAgKTtcbiAgICAvLyBCdWlsZCBuZXcgU291cmNlXG4gICAgbGV0IHNvdXJjZVRleHQgPSBORUFSQmluZGluZ3NCdWlsZGVyLmJ1aWxkKHBhcnNlciwgc291cmNlKTtcbiAgICBpZiAod3JpdGVPdXQpIHtcbiAgICAgd3JpdGVGaWxlKFwib3V0L1wiICsgc291cmNlLm5vcm1hbGl6ZWRQYXRoLCBzb3VyY2VUZXh0LCBiYXNlRGlyKTtcbiAgICB9XG4gICAgLy8gUGFyc2VzIGZpbGUgYW5kIGFueSBuZXcgaW1wb3J0cyBhZGRlZCB0byB0aGUgc291cmNlXG4gICAgcGFyc2VyLnBhcnNlRmlsZShcbiAgICAgIHNvdXJjZVRleHQsXG4gICAgICAoaXNFbnRyeShzb3VyY2UpID8gXCJcIiA6IFwiLi9cIikgKyBzb3VyY2Uubm9ybWFsaXplZFBhdGgsXG4gICAgICBpc0VudHJ5KHNvdXJjZSlcbiAgICApO1xuICB9KTtcblxufVxuIl19 - -/***/ }), - -/***/ "./src/preamble.ts": -/*!*************************!*\ - !*** ./src/preamble.ts ***! - \*************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -exports.preamble = "import { base64 } from \"near-runtime-ts\";\nimport { JSONEncoder } from \"assemblyscript-json\";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\n"; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYW1ibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJlYW1ibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDYSxRQUFBLFFBQVEsR0FBRyw4TEFHdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNvbnN0IHByZWFtYmxlID0gYGltcG9ydCB7IGJhc2U2NCB9IGZyb20gXCJuZWFyLXJ1bnRpbWUtdHNcIjtcbmltcG9ydCB7IEpTT05FbmNvZGVyIH0gZnJvbSBcImFzc2VtYmx5c2NyaXB0LWpzb25cIjtcbmltcG9ydCB7IEpTT05EZWNvZGVyLCBUaHJvd2luZ0pTT05IYW5kbGVyLCBEZWNvZGVyU3RhdGUgfSBmcm9tIFwiYXNzZW1ibHlzY3JpcHQtanNvblwiO1xuYDtcbiJdfQ== - -/***/ }), - -/***/ "./src/sourceBuilder.ts": -/*!******************************!*\ - !*** ./src/sourceBuilder.ts ***! - \******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); -__webpack_require__(/*! ../../std/portable/index */ "../std/portable/index.js"); -__webpack_require__(/*! ../../src/glue/js/float */ "../src/glue/js/float.js"); -__webpack_require__(/*! ../../src/glue/js/i64 */ "../src/glue/js/i64.js"); -var common_1 = __webpack_require__(/*! ../../src/common */ "../src/common.ts"); -var util_1 = __webpack_require__(/*! ../../src/util */ "../src/util/index.ts"); -var tokenizer_1 = __webpack_require__(/*! ../../src/tokenizer */ "../src/tokenizer.ts"); -/** An AST builder. */ -var ASTBuilder = /** @class */ (function () { - function ASTBuilder() { - this.sb = []; - this.indentLevel = 0; - } - /** Rebuilds the textual source from the specified AST, as far as possible. */ - ASTBuilder.build = function (node) { - var builder = new ASTBuilder(); - builder.visitNode(node); - return builder.finish(); - }; - ASTBuilder.prototype.visitNode = function (node) { - switch (node.kind) { - case ast_1.NodeKind.SOURCE: { - this.visitSource(node); - break; - } - // types - case ast_1.NodeKind.NAMEDTYPE: { - this.visitNamedTypeNode(node); - break; - } - case ast_1.NodeKind.FUNCTIONTYPE: { - this.visitFunctionTypeNode(node); - break; - } - case ast_1.NodeKind.TYPEPARAMETER: { - this.visitTypeParameter(node); - break; - } - // expressions - case ast_1.NodeKind.FALSE: - case ast_1.NodeKind.NULL: - case ast_1.NodeKind.SUPER: - case ast_1.NodeKind.THIS: - case ast_1.NodeKind.TRUE: - case ast_1.NodeKind.CONSTRUCTOR: - case ast_1.NodeKind.IDENTIFIER: { - this.visitIdentifierExpression(node); - break; - } - case ast_1.NodeKind.ASSERTION: { - this.visitAssertionExpression(node); - break; - } - case ast_1.NodeKind.BINARY: { - this.visitBinaryExpression(node); - break; - } - case ast_1.NodeKind.CALL: { - this.visitCallExpression(node); - break; - } - case ast_1.NodeKind.CLASS: { - this.visitClassExpression(node); - break; - } - case ast_1.NodeKind.COMMA: { - this.visitCommaExpression(node); - break; - } - case ast_1.NodeKind.ELEMENTACCESS: { - this.visitElementAccessExpression(node); - break; - } - case ast_1.NodeKind.FUNCTION: { - this.visitFunctionExpression(node); - break; - } - case ast_1.NodeKind.INSTANCEOF: { - this.visitInstanceOfExpression(node); - break; - } - case ast_1.NodeKind.LITERAL: { - this.visitLiteralExpression(node); - break; - } - case ast_1.NodeKind.NEW: { - this.visitNewExpression(node); - break; - } - case ast_1.NodeKind.PARENTHESIZED: { - this.visitParenthesizedExpression(node); - break; - } - case ast_1.NodeKind.PROPERTYACCESS: { - this.visitPropertyAccessExpression(node); - break; - } - case ast_1.NodeKind.TERNARY: { - this.visitTernaryExpression(node); - break; - } - case ast_1.NodeKind.UNARYPOSTFIX: { - this.visitUnaryPostfixExpression(node); - break; - } - case ast_1.NodeKind.UNARYPREFIX: { - this.visitUnaryPrefixExpression(node); - break; - } - // statements - case ast_1.NodeKind.BLOCK: { - this.visitBlockStatement(node); - break; - } - case ast_1.NodeKind.BREAK: { - this.visitBreakStatement(node); - break; - } - case ast_1.NodeKind.CONTINUE: { - this.visitContinueStatement(node); - break; - } - case ast_1.NodeKind.DO: { - this.visitDoStatement(node); - break; - } - case ast_1.NodeKind.EMPTY: { - this.visitEmptyStatement(node); - break; - } - case ast_1.NodeKind.EXPORT: { - this.visitExportStatement(node); - break; - } - case ast_1.NodeKind.EXPORTDEFAULT: { - this.visitExportDefaultStatement(node); - break; - } - case ast_1.NodeKind.EXPORTIMPORT: { - this.visitExportImportStatement(node); - break; - } - case ast_1.NodeKind.EXPRESSION: { - this.visitExpressionStatement(node); - break; - } - case ast_1.NodeKind.FOR: { - this.visitForStatement(node); - break; - } - case ast_1.NodeKind.IF: { - this.visitIfStatement(node); - break; - } - case ast_1.NodeKind.IMPORT: { - this.visitImportStatement(node); - break; - } - case ast_1.NodeKind.RETURN: { - this.visitReturnStatement(node); - break; - } - case ast_1.NodeKind.SWITCH: { - this.visitSwitchStatement(node); - break; - } - case ast_1.NodeKind.THROW: { - this.visitThrowStatement(node); - break; - } - case ast_1.NodeKind.TRY: { - this.visitTryStatement(node); - break; - } - case ast_1.NodeKind.VARIABLE: { - this.visitVariableStatement(node); - break; - } - case ast_1.NodeKind.WHILE: { - this.visitWhileStatement(node); - break; - } - // declaration statements - case ast_1.NodeKind.CLASSDECLARATION: { - this.visitClassDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMDECLARATION: { - this.visitEnumDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMVALUEDECLARATION: { - this.visitEnumValueDeclaration(node); - break; - } - case ast_1.NodeKind.FIELDDECLARATION: { - this.visitFieldDeclaration(node); - break; - } - case ast_1.NodeKind.FUNCTIONDECLARATION: { - this.visitFunctionDeclaration(node); - break; - } - case ast_1.NodeKind.IMPORTDECLARATION: { - this.visitImportDeclaration(node); - break; - } - case ast_1.NodeKind.INDEXSIGNATUREDECLARATION: { - this.visitIndexSignatureDeclaration(node); - break; - } - case ast_1.NodeKind.INTERFACEDECLARATION: { - this.visitInterfaceDeclaration(node); - break; - } - case ast_1.NodeKind.METHODDECLARATION: { - this.visitMethodDeclaration(node); - break; - } - case ast_1.NodeKind.NAMESPACEDECLARATION: { - this.visitNamespaceDeclaration(node); - break; - } - case ast_1.NodeKind.TYPEDECLARATION: { - this.visitTypeDeclaration(node); - break; - } - case ast_1.NodeKind.VARIABLEDECLARATION: { - this.visitVariableDeclaration(node); - break; - } - // other - case ast_1.NodeKind.DECORATOR: { - this.serializeDecorator(node); - break; - } - case ast_1.NodeKind.EXPORTMEMBER: { - this.visitExportMember(node); - break; - } - case ast_1.NodeKind.PARAMETER: { - this.serializeParameter(node); - break; - } - case ast_1.NodeKind.SWITCHCASE: { - this.visitSwitchCase(node); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitSource = function (source) { - var statements = source.statements; - for (var i = 0, k = statements.length; i < k; ++i) { - this.visitNodeAndTerminate(statements[i]); - } - }; - // types - ASTBuilder.prototype.visitTypeNode = function (node) { - switch (node.kind) { - case ast_1.NodeKind.NAMEDTYPE: { - this.visitNamedTypeNode(node); - break; - } - case ast_1.NodeKind.FUNCTIONTYPE: { - this.visitFunctionTypeNode(node); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitTypeName = function (node) { - this.visitIdentifierExpression(node.identifier); - var sb = this.sb; - var current = node.next; - while (current) { - sb.push("."); - this.visitIdentifierExpression(current.identifier); - current = current.next; - } - }; - ASTBuilder.prototype.visitNamedTypeNode = function (node) { - this.visitTypeName(node.name); - var typeArguments = node.typeArguments; - if (typeArguments) { - var numTypeArguments = typeArguments.length; - var sb = this.sb; - if (numTypeArguments) { - sb.push("<"); - this.visitTypeNode(typeArguments[0]); - for (var i = 1; i < numTypeArguments; ++i) { - sb.push(", "); - this.visitTypeNode(typeArguments[i]); - } - sb.push(">"); - } - if (node.isNullable) - sb.push(" | null"); - } - }; - ASTBuilder.prototype.visitFunctionTypeNode = function (node) { - var isNullable = node.isNullable; - var sb = this.sb; - sb.push(isNullable ? "((" : "("); - var explicitThisType = node.explicitThisType; - if (explicitThisType) { - sb.push("this: "); - this.visitTypeNode(explicitThisType); - } - var parameters = node.parameters; - var numParameters = parameters.length; - if (numParameters) { - if (explicitThisType) - sb.push(", "); - this.serializeParameter(parameters[0]); - for (var i = 1; i < numParameters; ++i) { - sb.push(", "); - this.serializeParameter(parameters[i]); - } - } - var returnType = node.returnType; - if (returnType) { - sb.push(") => "); - this.visitTypeNode(returnType); - } - else { - sb.push(") => void"); - } - if (isNullable) - sb.push(") | null"); - }; - ASTBuilder.prototype.visitTypeParameter = function (node) { - this.visitIdentifierExpression(node.name); - var extendsType = node.extendsType; - if (extendsType) { - this.sb.push(" extends "); - this.visitTypeNode(extendsType); - } - var defaultType = node.defaultType; - if (defaultType) { - this.sb.push("="); - this.visitTypeNode(defaultType); - } - }; - // expressions - ASTBuilder.prototype.visitIdentifierExpression = function (node) { - if (node.isQuoted) - this.visitStringLiteral(node.text); - else - this.sb.push(node.text); - }; - ASTBuilder.prototype.visitArrayLiteralExpression = function (node) { - var sb = this.sb; - sb.push("["); - var elements = node.elementExpressions; - var numElements = elements.length; - if (numElements) { - if (elements[0]) - this.visitNode(elements[0]); - for (var i = 1; i < numElements; ++i) { - sb.push(", "); - if (elements[i]) - this.visitNode(elements[i]); - } - } - sb.push("]"); - }; - ASTBuilder.prototype.visitObjectLiteralExpression = function (node) { - var sb = this.sb; - var names = node.names; - var values = node.values; - var numElements = names.length; - assert(numElements == values.length); - if (numElements) { - sb.push("{\n"); - util_1.indent(sb, ++this.indentLevel); - this.visitNode(names[0]); - sb.push(": "); - this.visitNode(values[0]); - for (var i = 1; i < numElements; ++i) { - sb.push(",\n"); - util_1.indent(sb, this.indentLevel); - var name = names[i]; - var value = values[i]; - if (name === value) { - this.visitNode(name); - } - else { - this.visitNode(name); - sb.push(": "); - this.visitNode(value); - } - } - sb.push("\n"); - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push("{}"); - } - }; - ASTBuilder.prototype.visitAssertionExpression = function (node) { - var sb = this.sb; - switch (node.assertionKind) { - case ast_1.AssertionKind.PREFIX: { - sb.push("<"); - this.visitTypeNode(assert(node.toType)); - sb.push(">"); - this.visitNode(node.expression); - break; - } - case ast_1.AssertionKind.AS: { - this.visitNode(node.expression); - sb.push(" as "); - this.visitTypeNode(assert(node.toType)); - break; - } - case ast_1.AssertionKind.NONNULL: { - this.visitNode(node.expression); - sb.push("!"); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitBinaryExpression = function (node) { - var sb = this.sb; - this.visitNode(node.left); - sb.push(" "); - sb.push(tokenizer_1.operatorTokenToString(node.operator)); - sb.push(" "); - this.visitNode(node.right); - }; - ASTBuilder.prototype.visitCallExpression = function (node) { - var sb = this.sb; - this.visitNode(node.expression); - var typeArguments = node.typeArguments; - if (typeArguments) { - var numTypeArguments = typeArguments.length; - if (numTypeArguments) { - sb.push("<"); - this.visitTypeNode(typeArguments[0]); - for (var i = 1; i < numTypeArguments; ++i) { - sb.push(", "); - this.visitTypeNode(typeArguments[i]); - } - sb.push(">("); - } - } - else { - sb.push("("); - } - var args = node.arguments; - var numArgs = args.length; - if (numArgs) { - this.visitNode(args[0]); - for (var i = 1; i < numArgs; ++i) { - sb.push(", "); - this.visitNode(args[i]); - } - } - sb.push(")"); - }; - ASTBuilder.prototype.visitClassExpression = function (node) { - var declaration = node.declaration; - this.visitClassDeclaration(declaration); - }; - ASTBuilder.prototype.visitCommaExpression = function (node) { - var expressions = node.expressions; - var numExpressions = assert(expressions.length); - this.visitNode(expressions[0]); - var sb = this.sb; - for (var i = 1; i < numExpressions; ++i) { - sb.push(","); - this.visitNode(expressions[i]); - } - }; - ASTBuilder.prototype.visitElementAccessExpression = function (node) { - var sb = this.sb; - this.visitNode(node.expression); - sb.push("["); - this.visitNode(node.elementExpression); - sb.push("]"); - }; - ASTBuilder.prototype.visitFunctionExpression = function (node) { - var declaration = node.declaration; - if (!declaration.arrowKind) { - if (declaration.name.text.length) { - this.sb.push("function "); - } - else { - this.sb.push("function"); - } - } - else { - assert(declaration.name.text.length == 0); - } - this.visitFunctionCommon(declaration); - }; - ASTBuilder.prototype.visitLiteralExpression = function (node) { - switch (node.literalKind) { - case ast_1.LiteralKind.FLOAT: { - this.visitFloatLiteralExpression(node); - break; - } - case ast_1.LiteralKind.INTEGER: { - this.visitIntegerLiteralExpression(node); - break; - } - case ast_1.LiteralKind.STRING: { - this.visitStringLiteralExpression(node); - break; - } - case ast_1.LiteralKind.REGEXP: { - this.visitRegexpLiteralExpression(node); - break; - } - case ast_1.LiteralKind.ARRAY: { - this.visitArrayLiteralExpression(node); - break; - } - case ast_1.LiteralKind.OBJECT: { - this.visitObjectLiteralExpression(node); - break; - } - default: { - assert(false); - break; - } - } - }; - ASTBuilder.prototype.visitFloatLiteralExpression = function (node) { - this.sb.push(node.value.toString(10)); - }; - ASTBuilder.prototype.visitInstanceOfExpression = function (node) { - this.visitNode(node.expression); - this.sb.push(" instanceof "); - this.visitTypeNode(node.isType); - }; - ASTBuilder.prototype.visitIntegerLiteralExpression = function (node) { - this.sb.push(i64_to_string(node.value)); - }; - ASTBuilder.prototype.visitStringLiteral = function (str, singleQuoted) { - if (singleQuoted === void 0) { singleQuoted = false; } - var sb = this.sb; - var off = 0; - var quote = singleQuoted ? "'" : "\""; - sb.push(quote); - var i = 0; - for (var k = str.length; i < k;) { - switch (str.charCodeAt(i)) { - case 0 /* NULL */: { - if (i > off) - sb.push(str.substring(off, off = i + 1)); - sb.push("\\0"); - off = ++i; - break; - } - case 8 /* BACKSPACE */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\b"); - break; - } - case 9 /* TAB */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\t"); - break; - } - case 10 /* LINEFEED */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\n"); - break; - } - case 11 /* VERTICALTAB */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\v"); - break; - } - case 12 /* FORMFEED */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\f"); - break; - } - case 13 /* CARRIAGERETURN */: { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\r"); - off = ++i; - break; - } - case 34 /* DOUBLEQUOTE */: { - if (!singleQuoted) { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\\""); - off = ++i; - } - else { - ++i; - } - break; - } - case 39 /* SINGLEQUOTE */: { - if (singleQuoted) { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\'"); - off = ++i; - } - else { - ++i; - } - break; - } - case 92 /* BACKSLASH */: { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\\\"); - off = ++i; - break; - } - default: { - ++i; - break; - } - } - } - if (i > off) - sb.push(str.substring(off, i)); - sb.push(quote); - }; - ASTBuilder.prototype.visitStringLiteralExpression = function (node) { - this.visitStringLiteral(node.value); - }; - ASTBuilder.prototype.visitRegexpLiteralExpression = function (node) { - var sb = this.sb; - sb.push("/"); - sb.push(node.pattern); - sb.push("/"); - sb.push(node.patternFlags); - }; - ASTBuilder.prototype.visitNewExpression = function (node) { - this.sb.push("new "); - this.visitCallExpression(node); - }; - ASTBuilder.prototype.visitParenthesizedExpression = function (node) { - var sb = this.sb; - sb.push("("); - this.visitNode(node.expression); - sb.push(")"); - }; - ASTBuilder.prototype.visitPropertyAccessExpression = function (node) { - this.visitNode(node.expression); - this.sb.push("."); - this.visitIdentifierExpression(node.property); - }; - ASTBuilder.prototype.visitTernaryExpression = function (node) { - var sb = this.sb; - this.visitNode(node.condition); - sb.push(" ? "); - this.visitNode(node.ifThen); - sb.push(" : "); - this.visitNode(node.ifElse); - }; - ASTBuilder.prototype.visitUnaryExpression = function (node) { - switch (node.kind) { - case ast_1.NodeKind.UNARYPOSTFIX: { - this.visitUnaryPostfixExpression(node); - break; - } - case ast_1.NodeKind.UNARYPREFIX: { - this.visitUnaryPrefixExpression(node); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitUnaryPostfixExpression = function (node) { - this.visitNode(node.operand); - this.sb.push(tokenizer_1.operatorTokenToString(node.operator)); - }; - ASTBuilder.prototype.visitUnaryPrefixExpression = function (node) { - this.sb.push(tokenizer_1.operatorTokenToString(node.operator)); - this.visitNode(node.operand); - }; - // statements - ASTBuilder.prototype.visitNodeAndTerminate = function (statement) { - this.visitNode(statement); - var sb = this.sb; - if (!sb.length || // leading EmptyStatement - statement.kind == ast_1.NodeKind.VARIABLE || // potentially assigns a FunctionExpression - statement.kind == ast_1.NodeKind.EXPRESSION // potentially assigns a FunctionExpression - ) { - sb.push(";\n"); - } - else { - var last = sb[sb.length - 1]; - var lastCharPos = last.length - 1; - if (lastCharPos >= 0 && (last.charCodeAt(lastCharPos) == 125 /* CLOSEBRACE */ || - last.charCodeAt(lastCharPos) == 59 /* SEMICOLON */)) { - sb.push("\n"); - } - else { - sb.push(";\n"); - } - } - }; - ASTBuilder.prototype.visitBlockStatement = function (node) { - var sb = this.sb; - var statements = node.statements; - var numStatements = statements.length; - if (numStatements) { - sb.push("{\n"); - var indentLevel = ++this.indentLevel; - for (var i = 0; i < numStatements; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[i]); - } - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push("{}"); - } - }; - ASTBuilder.prototype.visitBreakStatement = function (node) { - var label = node.label; - if (label) { - this.sb.push("break "); - this.visitIdentifierExpression(label); - } - else { - this.sb.push("break"); - } - }; - ASTBuilder.prototype.visitContinueStatement = function (node) { - var label = node.label; - if (label) { - this.sb.push("continue "); - this.visitIdentifierExpression(label); - } - else { - this.sb.push("continue"); - } - }; - ASTBuilder.prototype.visitClassDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - if (node.is(common_1.CommonFlags.ABSTRACT)) - sb.push("abstract "); - if (node.name.text.length) { - sb.push("class "); - this.visitIdentifierExpression(node.name); - } - else { - sb.push("class"); - } - var typeParameters = node.typeParameters; - if (typeParameters && typeParameters.length) { - sb.push("<"); - this.visitTypeParameter(typeParameters[0]); - for (var i = 1, k = typeParameters.length; i < k; ++i) { - sb.push(", "); - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - var extendsType = node.extendsType; - if (extendsType) { - sb.push(" extends "); - this.visitTypeNode(extendsType); - } - var implementsTypes = node.implementsTypes; - if (implementsTypes) { - var numImplementsTypes = implementsTypes.length; - if (numImplementsTypes) { - sb.push(" implements "); - this.visitTypeNode(implementsTypes[0]); - for (var i = 1; i < numImplementsTypes; ++i) { - sb.push(", "); - this.visitTypeNode(implementsTypes[i]); - } - } - } - var members = node.members; - var numMembers = members.length; - if (numMembers) { - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - for (var i = 0, k = members.length; i < k; ++i) { - var member = members[i]; - if (member.kind != ast_1.NodeKind.FIELDDECLARATION || member.parameterIndex < 0) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(member); - } - } - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push(" {}"); - } - }; - ASTBuilder.prototype.visitDoStatement = function (node) { - var sb = this.sb; - sb.push("do "); - this.visitNode(node.statement); - if (node.statement.kind == ast_1.NodeKind.BLOCK) { - sb.push(" while ("); - } - else { - sb.push(";\n"); - util_1.indent(sb, this.indentLevel); - sb.push("while ("); - } - this.visitNode(node.condition); - sb.push(")"); - }; - ASTBuilder.prototype.visitEmptyStatement = function (node) { - }; - ASTBuilder.prototype.visitEnumDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - if (node.is(common_1.CommonFlags.CONST)) - sb.push("const "); - sb.push("enum "); - this.visitIdentifierExpression(node.name); - var values = node.values; - var numValues = values.length; - if (numValues) { - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitEnumValueDeclaration(node.values[0]); - for (var i = 1; i < numValues; ++i) { - sb.push(",\n"); - util_1.indent(sb, indentLevel); - this.visitEnumValueDeclaration(node.values[i]); - } - sb.push("\n"); - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push(" {}"); - } - }; - ASTBuilder.prototype.visitEnumValueDeclaration = function (node) { - this.visitIdentifierExpression(node.name); - if (node.value) { - this.sb.push(" = "); - this.visitNode(node.value); - } - }; - ASTBuilder.prototype.visitExportImportStatement = function (node) { - var sb = this.sb; - sb.push("export import "); - this.visitIdentifierExpression(node.externalName); - sb.push(" = "); - this.visitIdentifierExpression(node.name); - }; - ASTBuilder.prototype.visitExportMember = function (node) { - this.visitIdentifierExpression(node.localName); - if (node.exportedName.text != node.localName.text) { - this.sb.push(" as "); - this.visitIdentifierExpression(node.exportedName); - } - }; - ASTBuilder.prototype.visitExportStatement = function (node) { - var sb = this.sb; - if (node.isDeclare) { - sb.push("declare "); - } - var members = node.members; - if (members && members.length) { - var numMembers = members.length; - sb.push("export {\n"); - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitExportMember(members[0]); - for (var i = 1; i < numMembers; ++i) { - sb.push(",\n"); - util_1.indent(sb, indentLevel); - this.visitExportMember(members[i]); - } - --this.indentLevel; - sb.push("\n}"); - } - else { - sb.push("export {}"); - } - var path = node.path; - if (path) { - sb.push(" from "); - this.visitStringLiteralExpression(path); - } - sb.push(";"); - }; - ASTBuilder.prototype.visitExportDefaultStatement = function (node) { - var declaration = node.declaration; - switch (declaration.kind) { - case ast_1.NodeKind.ENUMDECLARATION: { - this.visitEnumDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.FUNCTIONDECLARATION: { - this.visitFunctionDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.CLASSDECLARATION: { - this.visitClassDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.INTERFACEDECLARATION: { - this.visitInterfaceDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.NAMESPACEDECLARATION: { - this.visitNamespaceDeclaration(declaration, true); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitExpressionStatement = function (node) { - this.visitNode(node.expression); - }; - ASTBuilder.prototype.visitFieldDeclaration = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - this.serializeAccessModifiers(node); - this.visitIdentifierExpression(node.name); - var sb = this.sb; - if (node.flags & common_1.CommonFlags.DEFINITE_ASSIGNMENT) { - sb.push("!"); - } - var type = node.type; - if (type) { - sb.push(": "); - this.visitTypeNode(type); - } - var initializer = node.initializer; - if (initializer) { - sb.push(" = "); - this.visitNode(initializer); - } - }; - ASTBuilder.prototype.visitForStatement = function (node) { - var sb = this.sb; - sb.push("for ("); - var initializer = node.initializer; - if (initializer) { - this.visitNode(initializer); - } - var condition = node.condition; - if (condition) { - sb.push("; "); - this.visitNode(condition); - } - else { - sb.push(";"); - } - var incrementor = node.incrementor; - if (incrementor) { - sb.push("; "); - this.visitNode(incrementor); - } - else { - sb.push(";"); - } - sb.push(") "); - this.visitNode(node.statement); - }; - ASTBuilder.prototype.visitFunctionDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var sb = this.sb; - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - this.serializeAccessModifiers(node); - } - if (node.name.text.length) { - sb.push("function "); - } - else { - sb.push("function"); - } - this.visitFunctionCommon(node); - }; - ASTBuilder.prototype.visitFunctionCommon = function (node) { - var sb = this.sb; - this.visitIdentifierExpression(node.name); - var signature = node.signature; - var typeParameters = node.typeParameters; - if (typeParameters) { - var numTypeParameters = typeParameters.length; - if (numTypeParameters) { - sb.push("<"); - this.visitTypeParameter(typeParameters[0]); - for (var i = 1; i < numTypeParameters; ++i) { - sb.push(", "); - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - } - if (node.arrowKind == 2 /* ARROW_SINGLE */) { - var parameters = signature.parameters; - assert(parameters.length == 1); - assert(!signature.explicitThisType); - this.serializeParameter(parameters[0]); - } - else { - sb.push("("); - var parameters = signature.parameters; - var numParameters = parameters.length; - var explicitThisType = signature.explicitThisType; - if (explicitThisType) { - sb.push("this: "); - this.visitTypeNode(explicitThisType); - } - if (numParameters) { - if (explicitThisType) - sb.push(", "); - this.serializeParameter(parameters[0]); - for (var i = 1; i < numParameters; ++i) { - sb.push(", "); - this.serializeParameter(parameters[i]); - } - } - } - var body = node.body; - var returnType = signature.returnType; - if (node.arrowKind) { - if (body) { - if (node.arrowKind == 2 /* ARROW_SINGLE */) { - assert(ast_1.isTypeOmitted(returnType)); - } - else { - if (ast_1.isTypeOmitted(returnType)) { - sb.push(")"); - } - else { - sb.push("): "); - this.visitTypeNode(returnType); - } - } - sb.push(" => "); - this.visitNode(body); - } - else { - assert(!ast_1.isTypeOmitted(returnType)); - sb.push(" => "); - this.visitTypeNode(returnType); - } - } - else { - if (!ast_1.isTypeOmitted(returnType) && - !node.isAny(common_1.CommonFlags.CONSTRUCTOR | common_1.CommonFlags.SET)) { - sb.push("): "); - this.visitTypeNode(returnType); - } - else { - sb.push(")"); - } - if (body) { - sb.push(" "); - this.visitNode(body); - } - } - }; - ASTBuilder.prototype.visitIfStatement = function (node) { - var sb = this.sb; - sb.push("if ("); - this.visitNode(node.condition); - sb.push(") "); - var ifTrue = node.ifTrue; - this.visitNode(ifTrue); - if (ifTrue.kind != ast_1.NodeKind.BLOCK) { - sb.push(";\n"); - } - var ifFalse = node.ifFalse; - if (ifFalse) { - if (ifTrue.kind == ast_1.NodeKind.BLOCK) { - sb.push(" else "); - } - else { - sb.push("else "); - } - this.visitNode(ifFalse); - } - }; - ASTBuilder.prototype.visitImportDeclaration = function (node) { - var externalName = node.foreignName; - var name = node.name; - this.visitIdentifierExpression(externalName); - if (externalName.text != name.text) { - this.sb.push(" as "); - this.visitIdentifierExpression(name); - } - }; - ASTBuilder.prototype.visitImportStatement = function (node) { - var sb = this.sb; - sb.push("import "); - var declarations = node.declarations; - var namespaceName = node.namespaceName; - if (declarations) { - var numDeclarations = declarations.length; - if (numDeclarations) { - sb.push("{\n"); - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitImportDeclaration(declarations[0]); - for (var i = 1; i < numDeclarations; ++i) { - sb.push(",\n"); - util_1.indent(sb, indentLevel); - this.visitImportDeclaration(declarations[i]); - } - --this.indentLevel; - sb.push("\n} from "); - } - else { - sb.push("{} from "); - } - } - else if (namespaceName) { - sb.push("* as "); - this.visitIdentifierExpression(namespaceName); - sb.push(" from "); - } - this.visitStringLiteralExpression(node.path); - }; - ASTBuilder.prototype.visitIndexSignatureDeclaration = function (node) { - var sb = this.sb; - sb.push("[key: "); - this.visitTypeNode(node.keyType); - sb.push("]: "); - this.visitTypeNode(node.valueType); - }; - ASTBuilder.prototype.visitInterfaceDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - sb.push("interface "); - this.visitIdentifierExpression(node.name); - var typeParameters = node.typeParameters; - if (typeParameters && typeParameters.length) { - sb.push("<"); - this.visitTypeParameter(typeParameters[0]); - for (var i = 1, k = typeParameters.length; i < k; ++i) { - sb.push(", "); - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - var extendsType = node.extendsType; - if (extendsType) { - sb.push(" extends "); - this.visitTypeNode(extendsType); - } - // must not have implementsTypes - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - var members = node.members; - for (var i = 0, k = members.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(members[i]); - } - --this.indentLevel; - sb.push("}"); - }; - ASTBuilder.prototype.visitMethodDeclaration = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - this.serializeAccessModifiers(node); - if (node.is(common_1.CommonFlags.GET)) { - this.sb.push("get "); - } - else if (node.is(common_1.CommonFlags.SET)) { - this.sb.push("set "); - } - this.visitFunctionCommon(node); - }; - ASTBuilder.prototype.visitNamespaceDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - sb.push("namespace "); - this.visitIdentifierExpression(node.name); - var members = node.members; - var numMembers = members.length; - if (numMembers) { - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - for (var i = 0, k = members.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(members[i]); - } - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push(" {}"); - } - }; - ASTBuilder.prototype.visitReturnStatement = function (node) { - var value = node.value; - if (value) { - this.sb.push("return "); - this.visitNode(value); - } - else { - this.sb.push("return"); - } - }; - ASTBuilder.prototype.visitSwitchCase = function (node) { - var sb = this.sb; - var label = node.label; - if (label) { - sb.push("case "); - this.visitNode(label); - sb.push(":\n"); - } - else { - sb.push("default:\n"); - } - var statements = node.statements; - var numStatements = statements.length; - if (numStatements) { - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[0]); - for (var i = 1; i < numStatements; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[i]); - } - --this.indentLevel; - } - }; - ASTBuilder.prototype.visitSwitchStatement = function (node) { - var sb = this.sb; - sb.push("switch ("); - this.visitNode(node.condition); - sb.push(") {\n"); - var indentLevel = ++this.indentLevel; - var cases = node.cases; - for (var i = 0, k = cases.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitSwitchCase(cases[i]); - sb.push("\n"); - } - --this.indentLevel; - sb.push("}"); - }; - ASTBuilder.prototype.visitThrowStatement = function (node) { - this.sb.push("throw "); - this.visitNode(node.value); - }; - ASTBuilder.prototype.visitTryStatement = function (node) { - var sb = this.sb; - sb.push("try {\n"); - var indentLevel = ++this.indentLevel; - var statements = node.statements; - for (var i = 0, k = statements.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[i]); - } - var catchVariable = node.catchVariable; - if (catchVariable) { - util_1.indent(sb, indentLevel - 1); - sb.push("} catch ("); - this.visitIdentifierExpression(catchVariable); - sb.push(") {\n"); - var catchStatements = node.catchStatements; - if (catchStatements) { - for (var i = 0, k = catchStatements.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(catchStatements[i]); - } - } - } - var finallyStatements = node.finallyStatements; - if (finallyStatements) { - util_1.indent(sb, indentLevel - 1); - sb.push("} finally {\n"); - for (var i = 0, k = finallyStatements.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(finallyStatements[i]); - } - } - util_1.indent(sb, indentLevel - 1); - sb.push("}"); - }; - ASTBuilder.prototype.visitTypeDeclaration = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - this.serializeExternalModifiers(node); - sb.push("type "); - this.visitIdentifierExpression(node.name); - var typeParameters = node.typeParameters; - if (typeParameters) { - var numTypeParameters = typeParameters.length; - if (numTypeParameters) { - sb.push("<"); - for (var i = 0; i < numTypeParameters; ++i) { - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - } - sb.push(" = "); - this.visitTypeNode(node.type); - }; - ASTBuilder.prototype.visitVariableDeclaration = function (node) { - this.visitIdentifierExpression(node.name); - var type = node.type; - var sb = this.sb; - if (node.flags & common_1.CommonFlags.DEFINITE_ASSIGNMENT) { - sb.push("!"); - } - if (type) { - sb.push(": "); - this.visitTypeNode(type); - } - var initializer = node.initializer; - if (initializer) { - sb.push(" = "); - this.visitNode(initializer); - } - }; - ASTBuilder.prototype.visitVariableStatement = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - var declarations = node.declarations; - var numDeclarations = assert(declarations.length); - var firstDeclaration = declarations[0]; - this.serializeExternalModifiers(firstDeclaration); - sb.push(firstDeclaration.is(common_1.CommonFlags.CONST) ? "const " : firstDeclaration.is(common_1.CommonFlags.LET) ? "let " : "var "); - this.visitVariableDeclaration(node.declarations[0]); - for (var i = 1; i < numDeclarations; ++i) { - sb.push(", "); - this.visitVariableDeclaration(node.declarations[i]); - } - }; - ASTBuilder.prototype.visitWhileStatement = function (node) { - var sb = this.sb; - sb.push("while ("); - this.visitNode(node.condition); - var statement = node.statement; - if (statement.kind == ast_1.NodeKind.EMPTY) { - sb.push(")"); - } - else { - sb.push(") "); - this.visitNode(node.statement); - } - }; - // other - ASTBuilder.prototype.serializeDecorator = function (node) { - var sb = this.sb; - sb.push("@"); - this.visitNode(node.name); - var args = node.arguments; - if (args) { - sb.push("("); - var numArgs = args.length; - if (numArgs) { - this.visitNode(args[0]); - for (var i = 1; i < numArgs; ++i) { - sb.push(", "); - this.visitNode(args[i]); - } - } - sb.push(")\n"); - } - else { - sb.push("\n"); - } - util_1.indent(sb, this.indentLevel); - }; - ASTBuilder.prototype.serializeParameter = function (node) { - var sb = this.sb; - var kind = node.parameterKind; - var implicitFieldDeclaration = node.implicitFieldDeclaration; - if (implicitFieldDeclaration) { - this.serializeAccessModifiers(implicitFieldDeclaration); - } - if (kind == ast_1.ParameterKind.REST) { - sb.push("..."); - } - this.visitIdentifierExpression(node.name); - var type = node.type; - var initializer = node.initializer; - if (type) { - if (kind == ast_1.ParameterKind.OPTIONAL && !initializer) - sb.push("?"); - if (!ast_1.isTypeOmitted(type)) { - sb.push(": "); - this.visitTypeNode(type); - } - } - if (initializer) { - sb.push(" = "); - this.visitNode(initializer); - } - }; - ASTBuilder.prototype.serializeExternalModifiers = function (node) { - var sb = this.sb; - if (node.is(common_1.CommonFlags.EXPORT)) { - sb.push("export "); - } - else if (node.is(common_1.CommonFlags.IMPORT)) { - sb.push("import "); - } - else if (node.is(common_1.CommonFlags.DECLARE)) { - sb.push("declare "); - } - }; - ASTBuilder.prototype.serializeAccessModifiers = function (node) { - var sb = this.sb; - if (node.is(common_1.CommonFlags.PUBLIC)) { - sb.push("public "); - } - else if (node.is(common_1.CommonFlags.PRIVATE)) { - sb.push("private "); - } - else if (node.is(common_1.CommonFlags.PROTECTED)) { - sb.push("protected "); - } - if (node.is(common_1.CommonFlags.STATIC)) { - sb.push("static "); - } - else if (node.is(common_1.CommonFlags.ABSTRACT)) { - sb.push("abstract "); - } - if (node.is(common_1.CommonFlags.READONLY)) { - sb.push("readonly "); - } - }; - ASTBuilder.prototype.finish = function () { - var ret = this.sb.join(""); - this.sb = []; - return ret; - }; - return ASTBuilder; -}()); -exports.ASTBuilder = ASTBuilder; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb3VyY2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUNBMEV1QjtBQUV2QixvQ0FBa0M7QUFDbEMsbUNBQWlDO0FBQ2pDLGlDQUErQjtBQUUvQiwyQ0FBK0M7QUFFL0MsdUNBQWtEO0FBRWxELGlEQUE4RDtBQUM5RCxzQkFBc0I7QUFDdEI7SUFBQTtRQVNVLE9BQUUsR0FBYSxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBUSxDQUFDLENBQUM7SUE2K0MvQixDQUFDO0lBci9DQyw4RUFBOEU7SUFDdkUsZ0JBQUssR0FBWixVQUFhLElBQVU7UUFDckIsSUFBSSxPQUFPLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMvQixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFLRCw4QkFBUyxHQUFULFVBQVUsSUFBVTtRQUNsQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxjQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQVMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07YUFDUDtZQUVELFFBQVE7WUFFUixLQUFLLGNBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFnQixJQUFJLENBQUMsQ0FBQztnQkFDN0MsTUFBTTthQUNQO1lBQ0QsS0FBSyxjQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxxQkFBcUIsQ0FBbUIsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELE1BQU07YUFDUDtZQUNELEtBQUssY0FBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQW9CLElBQUks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QztTQUN0QjtJQUNILENBQUM7SUFFRCwyQkFBTSxHQUFOO1FBQ0UsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDSCxpQkFBQztBQUFELENBQUMsQUF2L0NELElBdS9DQztBQXYvQ1ksZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZWNsYXJhdGlvblN0YXRlbWVudCxcbiAgTm9kZSxcbiAgTm9kZUtpbmQsXG4gIFNvdXJjZSxcbiAgTmFtZWRUeXBlTm9kZSxcbiAgRnVuY3Rpb25UeXBlTm9kZSxcbiAgVHlwZVBhcmFtZXRlck5vZGUsXG4gIElkZW50aWZpZXJFeHByZXNzaW9uLFxuICBBc3NlcnRpb25FeHByZXNzaW9uLFxuICBCaW5hcnlFeHByZXNzaW9uLFxuICBDYWxsRXhwcmVzc2lvbixcbiAgQ2xhc3NFeHByZXNzaW9uLFxuICBDb21tYUV4cHJlc3Npb24sXG4gIEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLFxuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIEluc3RhbmNlT2ZFeHByZXNzaW9uLFxuICBMaXRlcmFsRXhwcmVzc2lvbixcbiAgTmV3RXhwcmVzc2lvbixcbiAgUGFyZW50aGVzaXplZEV4cHJlc3Npb24sXG4gIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbixcbiAgVGVybmFyeUV4cHJlc3Npb24sXG4gIFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24sXG4gIFVuYXJ5UHJlZml4RXhwcmVzc2lvbixcbiAgQmxvY2tTdGF0ZW1lbnQsXG4gIEJyZWFrU3RhdGVtZW50LFxuICBDb250aW51ZVN0YXRlbWVudCxcbiAgRG9TdGF0ZW1lbnQsXG4gIEVtcHR5U3RhdGVtZW50LFxuICBFeHBvcnRTdGF0ZW1lbnQsXG4gIEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQsXG4gIEV4cG9ydEltcG9ydFN0YXRlbWVudCxcbiAgRXhwcmVzc2lvblN0YXRlbWVudCxcbiAgRm9yU3RhdGVtZW50LFxuICBJZlN0YXRlbWVudCxcbiAgSW1wb3J0U3RhdGVtZW50LFxuICBSZXR1cm5TdGF0ZW1lbnQsXG4gIFN3aXRjaFN0YXRlbWVudCxcbiAgVGhyb3dTdGF0ZW1lbnQsXG4gIFRyeVN0YXRlbWVudCxcbiAgVmFyaWFibGVTdGF0ZW1lbnQsXG4gIFdoaWxlU3RhdGVtZW50LFxuICBDbGFzc0RlY2xhcmF0aW9uLFxuICBFbnVtRGVjbGFyYXRpb24sXG4gIEVudW1WYWx1ZURlY2xhcmF0aW9uLFxuICBGaWVsZERlY2xhcmF0aW9uLFxuICBGdW5jdGlvbkRlY2xhcmF0aW9uLFxuICBJbXBvcnREZWNsYXJhdGlvbixcbiAgSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbixcbiAgSW50ZXJmYWNlRGVjbGFyYXRpb24sXG4gIE1ldGhvZERlY2xhcmF0aW9uLFxuICBOYW1lc3BhY2VEZWNsYXJhdGlvbixcbiAgVHlwZURlY2xhcmF0aW9uLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uLFxuICBEZWNvcmF0b3JOb2RlLFxuICBFeHBvcnRNZW1iZXIsXG4gIFBhcmFtZXRlck5vZGUsXG4gIFN3aXRjaENhc2UsXG4gIFR5cGVOb2RlLFxuICBUeXBlTmFtZSxcbiAgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbixcbiAgRXhwcmVzc2lvbixcbiAgT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sXG4gIEFzc2VydGlvbktpbmQsXG4gIExpdGVyYWxLaW5kLFxuICBGbG9hdExpdGVyYWxFeHByZXNzaW9uLFxuICBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24sXG4gIFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uLFxuICBSZWdleHBMaXRlcmFsRXhwcmVzc2lvbixcbiAgVW5hcnlFeHByZXNzaW9uLFxuICBTdGF0ZW1lbnQsXG4gIEFycm93S2luZCxcbiAgaXNUeXBlT21pdHRlZCxcbiAgUGFyYW1ldGVyS2luZFxufSBmcm9tIFwiLi4vLi4vc3JjL2FzdFwiO1xuXG5pbXBvcnQgXCIuLi8uLi9zdGQvcG9ydGFibGUvaW5kZXhcIjtcbmltcG9ydCBcIi4uLy4uL3NyYy9nbHVlL2pzL2Zsb2F0XCI7XG5pbXBvcnQgXCIuLi8uLi9zcmMvZ2x1ZS9qcy9pNjRcIjtcblxuaW1wb3J0IHsgQ29tbW9uRmxhZ3MgfSBmcm9tIFwiLi4vLi4vc3JjL2NvbW1vblwiO1xuXG5pbXBvcnQgeyBpbmRlbnQsIENoYXJDb2RlIH0gZnJvbSBcIi4uLy4uL3NyYy91dGlsXCI7XG5cbmltcG9ydCB7ICBvcGVyYXRvclRva2VuVG9TdHJpbmcsIH0gZnJvbSBcIi4uLy4uL3NyYy90b2tlbml6ZXJcIjtcbi8qKiBBbiBBU1QgYnVpbGRlci4gKi9cbmV4cG9ydCBjbGFzcyBBU1RCdWlsZGVyIHtcblxuICAvKiogUmVidWlsZHMgdGhlIHRleHR1YWwgc291cmNlIGZyb20gdGhlIHNwZWNpZmllZCBBU1QsIGFzIGZhciBhcyBwb3NzaWJsZS4gKi9cbiAgc3RhdGljIGJ1aWxkKG5vZGU6IE5vZGUpOiBzdHJpbmcge1xuICAgIHZhciBidWlsZGVyID0gbmV3IEFTVEJ1aWxkZXIoKTtcbiAgICBidWlsZGVyLnZpc2l0Tm9kZShub2RlKTtcbiAgICByZXR1cm4gYnVpbGRlci5maW5pc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgc2I6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaW5kZW50TGV2ZWw6IGkzMiA9IDA7XG5cbiAgdmlzaXROb2RlKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBOb2RlS2luZC5TT1VSQ0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFNvdXJjZSg8U291cmNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gdHlwZXNcblxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FRFRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVkVHlwZU5vZGUoPE5hbWVkVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GVU5DVElPTlRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uVHlwZU5vZGUoPEZ1bmN0aW9uVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKDxUeXBlUGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGV4cHJlc3Npb25zXG5cbiAgICAgIGNhc2UgTm9kZUtpbmQuRkFMU0U6XG4gICAgICBjYXNlIE5vZGVLaW5kLk5VTEw6XG4gICAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOlxuICAgICAgY2FzZSBOb2RlS2luZC5USElTOlxuICAgICAgY2FzZSBOb2RlS2luZC5UUlVFOlxuICAgICAgY2FzZSBOb2RlS2luZC5DT05TVFJVQ1RPUjpcbiAgICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjoge1xuICAgICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24oPElkZW50aWZpZXJFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQVNTRVJUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRBc3NlcnRpb25FeHByZXNzaW9uKDxBc3NlcnRpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQklOQVJZOiB7XG4gICAgICAgIHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKDxCaW5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0FMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24oPENhbGxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0xBU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdENsYXNzRXhwcmVzc2lvbig8Q2xhc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09NTUE6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbW1hRXhwcmVzc2lvbig8Q29tbWFFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzoge1xuICAgICAgICB0aGlzLnZpc2l0RWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oPEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbig8RnVuY3Rpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5TVEFOQ0VPRjoge1xuICAgICAgICB0aGlzLnZpc2l0SW5zdGFuY2VPZkV4cHJlc3Npb24oPEluc3RhbmNlT2ZFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTElURVJBTDoge1xuICAgICAgICB0aGlzLnZpc2l0TGl0ZXJhbEV4cHJlc3Npb24oPExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkVXOiB7XG4gICAgICAgIHRoaXMudmlzaXROZXdFeHByZXNzaW9uKDxOZXdFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUEFSRU5USEVTSVpFRDoge1xuICAgICAgICB0aGlzLnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oPFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbig8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEVSTkFSWToge1xuICAgICAgICB0aGlzLnZpc2l0VGVybmFyeUV4cHJlc3Npb24oPFRlcm5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdGVtZW50c1xuXG4gICAgICBjYXNlIE5vZGVLaW5kLkJMT0NLOiB7XG4gICAgICAgIHRoaXMudmlzaXRCbG9ja1N0YXRlbWVudCg8QmxvY2tTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5CUkVBSzoge1xuICAgICAgICB0aGlzLnZpc2l0QnJlYWtTdGF0ZW1lbnQoPEJyZWFrU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09OVElOVUU6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbnRpbnVlU3RhdGVtZW50KDxDb250aW51ZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkRPOiB7XG4gICAgICAgIHRoaXMudmlzaXREb1N0YXRlbWVudCg8RG9TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FTVBUWToge1xuICAgICAgICB0aGlzLnZpc2l0RW1wdHlTdGF0ZW1lbnQoPEVtcHR5U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRFeHBvcnRTdGF0ZW1lbnQoPEV4cG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoPEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FWFBPUlRJTVBPUlQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudCg8RXhwb3J0SW1wb3J0U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQUkVTU0lPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwcmVzc2lvblN0YXRlbWVudCg8RXhwcmVzc2lvblN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZPUjoge1xuICAgICAgICB0aGlzLnZpc2l0Rm9yU3RhdGVtZW50KDxGb3JTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JRjoge1xuICAgICAgICB0aGlzLnZpc2l0SWZTdGF0ZW1lbnQoPElmU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU1QT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnRTdGF0ZW1lbnQoPEltcG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlJFVFVSTjoge1xuICAgICAgICB0aGlzLnZpc2l0UmV0dXJuU3RhdGVtZW50KDxSZXR1cm5TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0g6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaFN0YXRlbWVudCg8U3dpdGNoU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEhST1c6IHtcbiAgICAgICAgdGhpcy52aXNpdFRocm93U3RhdGVtZW50KDxUaHJvd1N0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlRSWToge1xuICAgICAgICB0aGlzLnZpc2l0VHJ5U3RhdGVtZW50KDxUcnlTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5WQVJJQUJMRToge1xuICAgICAgICB0aGlzLnZpc2l0VmFyaWFibGVTdGF0ZW1lbnQoPFZhcmlhYmxlU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuV0hJTEU6IHtcbiAgICAgICAgdGhpcy52aXNpdFdoaWxlU3RhdGVtZW50KDxXaGlsZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2xhcmF0aW9uIHN0YXRlbWVudHNcblxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRU5VTURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtRGVjbGFyYXRpb24oPEVudW1EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1WQUxVRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbig8RW51bVZhbHVlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRGaWVsZERlY2xhcmF0aW9uKDxGaWVsZERlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklNUE9SVERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbig8SW1wb3J0RGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKDxJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5URVJGQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEludGVyZmFjZURlY2xhcmF0aW9uKDxJbnRlcmZhY2VEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLk1FVEhPRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRNZXRob2REZWNsYXJhdGlvbig8TWV0aG9kRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FU1BBQ0VERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oPE5hbWVzcGFjZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlRGVjbGFyYXRpb24oPFR5cGVEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlZBUklBQkxFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oPFZhcmlhYmxlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBvdGhlclxuXG4gICAgICBjYXNlIE5vZGVLaW5kLkRFQ09SQVRPUjoge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcig8RGVjb3JhdG9yTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVE1FTUJFUjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwb3J0TWVtYmVyKDxFeHBvcnRNZW1iZXI+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5QQVJBTUVURVI6IHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIoPFBhcmFtZXRlck5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0hDQVNFOiB7XG4gICAgICAgIHRoaXMudmlzaXRTd2l0Y2hDYXNlKDxTd2l0Y2hDYXNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTb3VyY2Uoc291cmNlOiBTb3VyY2UpOiB2b2lkIHtcbiAgICB2YXIgc3RhdGVtZW50cyA9IHNvdXJjZS5zdGF0ZW1lbnRzO1xuICAgIGZvciAobGV0IGkgPSAwLCBrID0gc3RhdGVtZW50cy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKHN0YXRlbWVudHNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHR5cGVzXG5cbiAgdmlzaXRUeXBlTm9kZShub2RlOiBUeXBlTm9kZSk6IHZvaWQge1xuICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICBjYXNlIE5vZGVLaW5kLk5BTUVEVFlQRToge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZWRUeXBlTm9kZSg8TmFtZWRUeXBlTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZVTkNUSU9OVFlQRToge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25UeXBlTm9kZSg8RnVuY3Rpb25UeXBlTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VHlwZU5hbWUobm9kZTogVHlwZU5hbWUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5pZGVudGlmaWVyKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBjdXJyZW50ID0gbm9kZS5uZXh0O1xuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBzYi5wdXNoKFwiLlwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihjdXJyZW50LmlkZW50aWZpZXIpO1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG4gIH1cblxuICB2aXNpdE5hbWVkVHlwZU5vZGUobm9kZTogTmFtZWRUeXBlTm9kZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXRUeXBlTmFtZShub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlQXJndW1lbnRzID0gbm9kZS50eXBlQXJndW1lbnRzO1xuICAgIGlmICh0eXBlQXJndW1lbnRzKSB7XG4gICAgICBsZXQgbnVtVHlwZUFyZ3VtZW50cyA9IHR5cGVBcmd1bWVudHMubGVuZ3RoO1xuICAgICAgbGV0IHNiID0gdGhpcy5zYjtcbiAgICAgIGlmIChudW1UeXBlQXJndW1lbnRzKSB7XG4gICAgICAgIHNiLnB1c2goXCI8XCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZUFyZ3VtZW50c1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVHlwZUFyZ3VtZW50czsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZSh0eXBlQXJndW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmlzTnVsbGFibGUpIHNiLnB1c2goXCIgfCBudWxsXCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25UeXBlTm9kZShub2RlOiBGdW5jdGlvblR5cGVOb2RlKTogdm9pZCB7XG4gICAgdmFyIGlzTnVsbGFibGUgPSBub2RlLmlzTnVsbGFibGU7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKGlzTnVsbGFibGUgPyBcIigoXCIgOiBcIihcIik7XG4gICAgdmFyIGV4cGxpY2l0VGhpc1R5cGUgPSBub2RlLmV4cGxpY2l0VGhpc1R5cGU7XG4gICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHtcbiAgICAgIHNiLnB1c2goXCJ0aGlzOiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZXhwbGljaXRUaGlzVHlwZSk7XG4gICAgfVxuICAgIHZhciBwYXJhbWV0ZXJzID0gbm9kZS5wYXJhbWV0ZXJzO1xuICAgIHZhciBudW1QYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgaWYgKG51bVBhcmFtZXRlcnMpIHtcbiAgICAgIGlmIChleHBsaWNpdFRoaXNUeXBlKSBzYi5wdXNoKFwiLCBcIik7XG4gICAgICB0aGlzLnNlcmlhbGl6ZVBhcmFtZXRlcihwYXJhbWV0ZXJzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciByZXR1cm5UeXBlID0gbm9kZS5yZXR1cm5UeXBlO1xuICAgIGlmIChyZXR1cm5UeXBlKSB7XG4gICAgICBzYi5wdXNoKFwiKSA9PiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIpID0+IHZvaWRcIik7XG4gICAgfVxuICAgIGlmIChpc051bGxhYmxlKSBzYi5wdXNoKFwiKSB8IG51bGxcIik7XG4gIH1cblxuICB2aXNpdFR5cGVQYXJhbWV0ZXIobm9kZTogVHlwZVBhcmFtZXRlck5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgZXh0ZW5kc1R5cGUgPSBub2RlLmV4dGVuZHNUeXBlO1xuICAgIGlmIChleHRlbmRzVHlwZSkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiIGV4dGVuZHMgXCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGV4dGVuZHNUeXBlKTtcbiAgICB9XG4gICAgdmFyIGRlZmF1bHRUeXBlID0gbm9kZS5kZWZhdWx0VHlwZTtcbiAgICBpZiAoZGVmYXVsdFR5cGUpIHtcbiAgICAgIHRoaXMuc2IucHVzaChcIj1cIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZGVmYXVsdFR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGV4cHJlc3Npb25zXG5cbiAgdmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlOiBJZGVudGlmaWVyRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmIChub2RlLmlzUXVvdGVkKSB0aGlzLnZpc2l0U3RyaW5nTGl0ZXJhbChub2RlLnRleHQpO1xuICAgIGVsc2UgdGhpcy5zYi5wdXNoKG5vZGUudGV4dCk7XG4gIH1cblxuICB2aXNpdEFycmF5TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogQXJyYXlMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIltcIik7XG4gICAgdmFyIGVsZW1lbnRzID0gbm9kZS5lbGVtZW50RXhwcmVzc2lvbnM7XG4gICAgdmFyIG51bUVsZW1lbnRzID0gZWxlbWVudHMubGVuZ3RoO1xuICAgIGlmIChudW1FbGVtZW50cykge1xuICAgICAgaWYgKGVsZW1lbnRzWzBdKSB0aGlzLnZpc2l0Tm9kZSg8RXhwcmVzc2lvbj5lbGVtZW50c1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bUVsZW1lbnRzOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICBpZiAoZWxlbWVudHNbaV0pIHRoaXMudmlzaXROb2RlKDxFeHByZXNzaW9uPmVsZW1lbnRzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2IucHVzaChcIl1cIik7XG4gIH1cblxuICB2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB2YXIgbmFtZXMgPSBub2RlLm5hbWVzO1xuICAgIHZhciB2YWx1ZXMgPSBub2RlLnZhbHVlcztcbiAgICB2YXIgbnVtRWxlbWVudHMgPSBuYW1lcy5sZW5ndGg7XG4gICAgYXNzZXJ0KG51bUVsZW1lbnRzID09IHZhbHVlcy5sZW5ndGgpO1xuICAgIGlmIChudW1FbGVtZW50cykge1xuICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsICsrdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShuYW1lc1swXSk7XG4gICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZXNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1FbGVtZW50czsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsXFxuXCIpO1xuICAgICAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICBsZXQgdmFsdWUgPSB2YWx1ZXNbaV07XG4gICAgICAgIGlmIChuYW1lID09PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5hbWUpO1xuICAgICAgICAgIHNiLnB1c2goXCI6IFwiKTtcbiAgICAgICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCJcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsIC0tdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICBzYi5wdXNoKFwifVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcInt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QXNzZXJ0aW9uRXhwcmVzc2lvbihub2RlOiBBc3NlcnRpb25FeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzd2l0Y2ggKG5vZGUuYXNzZXJ0aW9uS2luZCkge1xuICAgICAgY2FzZSBBc3NlcnRpb25LaW5kLlBSRUZJWDoge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGFzc2VydChub2RlLnRvVHlwZSkpO1xuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFzc2VydGlvbktpbmQuQVM6IHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgc2IucHVzaChcIiBhcyBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZShhc3NlcnQobm9kZS50b1R5cGUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFzc2VydGlvbktpbmQuTk9OTlVMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgICAgICBzYi5wdXNoKFwiIVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QmluYXJ5RXhwcmVzc2lvbihub2RlOiBCaW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmxlZnQpO1xuICAgIHNiLnB1c2goXCIgXCIpO1xuICAgIHNiLnB1c2gob3BlcmF0b3JUb2tlblRvU3RyaW5nKG5vZGUub3BlcmF0b3IpKTtcbiAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnJpZ2h0KTtcbiAgfVxuXG4gIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZTogQ2FsbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdmFyIHR5cGVBcmd1bWVudHMgPSBub2RlLnR5cGVBcmd1bWVudHM7XG4gICAgaWYgKHR5cGVBcmd1bWVudHMpIHtcbiAgICAgIGxldCBudW1UeXBlQXJndW1lbnRzID0gdHlwZUFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICBpZiAobnVtVHlwZUFyZ3VtZW50cykge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHR5cGVBcmd1bWVudHNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVR5cGVBcmd1bWVudHM7ICsraSkge1xuICAgICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZUFyZ3VtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgc2IucHVzaChcIj4oXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICB9XG4gICAgdmFyIGFyZ3MgPSBub2RlLmFyZ3VtZW50cztcbiAgICB2YXIgbnVtQXJncyA9IGFyZ3MubGVuZ3RoO1xuICAgIGlmIChudW1BcmdzKSB7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShhcmdzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtQXJnczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUoYXJnc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNiLnB1c2goXCIpXCIpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0V4cHJlc3Npb24obm9kZTogQ2xhc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIGRlY2xhcmF0aW9uID0gbm9kZS5kZWNsYXJhdGlvbjtcbiAgICB0aGlzLnZpc2l0Q2xhc3NEZWNsYXJhdGlvbihkZWNsYXJhdGlvbik7XG4gIH1cblxuICB2aXNpdENvbW1hRXhwcmVzc2lvbihub2RlOiBDb21tYUV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgZXhwcmVzc2lvbnMgPSBub2RlLmV4cHJlc3Npb25zO1xuICAgIHZhciBudW1FeHByZXNzaW9ucyA9IGFzc2VydChleHByZXNzaW9ucy5sZW5ndGgpO1xuICAgIHRoaXMudmlzaXROb2RlKGV4cHJlc3Npb25zWzBdKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtRXhwcmVzc2lvbnM7ICsraSkge1xuICAgICAgc2IucHVzaChcIixcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShleHByZXNzaW9uc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihub2RlOiBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICBzYi5wdXNoKFwiW1wiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmVsZW1lbnRFeHByZXNzaW9uKTtcbiAgICBzYi5wdXNoKFwiXVwiKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25FeHByZXNzaW9uKG5vZGU6IEZ1bmN0aW9uRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBkZWNsYXJhdGlvbiA9IG5vZGUuZGVjbGFyYXRpb247XG4gICAgaWYgKCFkZWNsYXJhdGlvbi5hcnJvd0tpbmQpIHtcbiAgICAgIGlmIChkZWNsYXJhdGlvbi5uYW1lLnRleHQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc2IucHVzaChcImZ1bmN0aW9uIFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2IucHVzaChcImZ1bmN0aW9uXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQoZGVjbGFyYXRpb24ubmFtZS50ZXh0Lmxlbmd0aCA9PSAwKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdEZ1bmN0aW9uQ29tbW9uKGRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHZpc2l0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUubGl0ZXJhbEtpbmQpIHtcbiAgICAgIGNhc2UgTGl0ZXJhbEtpbmQuRkxPQVQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24oPEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBMaXRlcmFsS2luZC5JTlRFR0VSOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oPEludGVnZXJMaXRlcmFsRXhwcmVzc2lvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIExpdGVyYWxLaW5kLlNUUklORzoge1xuICAgICAgICB0aGlzLnZpc2l0U3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24oPFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTGl0ZXJhbEtpbmQuUkVHRVhQOiB7XG4gICAgICAgIHRoaXMudmlzaXRSZWdleHBMaXRlcmFsRXhwcmVzc2lvbig8UmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBMaXRlcmFsS2luZC5BUlJBWToge1xuICAgICAgICB0aGlzLnZpc2l0QXJyYXlMaXRlcmFsRXhwcmVzc2lvbig8QXJyYXlMaXRlcmFsRXhwcmVzc2lvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIExpdGVyYWxLaW5kLk9CSkVDVDoge1xuICAgICAgICB0aGlzLnZpc2l0T2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oPE9iamVjdExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRGbG9hdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2gobm9kZS52YWx1ZS50b1N0cmluZygxMCkpO1xuICB9XG5cbiAgdmlzaXRJbnN0YW5jZU9mRXhwcmVzc2lvbihub2RlOiBJbnN0YW5jZU9mRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy5zYi5wdXNoKFwiIGluc3RhbmNlb2YgXCIpO1xuICAgIHRoaXMudmlzaXRUeXBlTm9kZShub2RlLmlzVHlwZSk7XG4gIH1cblxuICB2aXNpdEludGVnZXJMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2goaTY0X3RvX3N0cmluZyhub2RlLnZhbHVlKSk7XG4gIH1cblxuICB2aXNpdFN0cmluZ0xpdGVyYWwoc3RyOiBzdHJpbmcsIHNpbmdsZVF1b3RlZDogYm9vbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgcXVvdGUgPSBzaW5nbGVRdW90ZWQgPyBcIidcIiA6IFwiXFxcIlwiO1xuICAgIHNiLnB1c2gocXVvdGUpO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKGxldCBrID0gc3RyLmxlbmd0aDsgaSA8IGs7KSB7XG4gICAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTlVMTDoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBvZmYgPSBpICsgMSkpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcMFwiKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQUNLU1BBQ0U6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXGJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5UQUI6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXHRcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgb2ZmID0gKytpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcblwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLlZFUlRJQ0FMVEFCOiB7XG4gICAgICAgICAgaWYgKGkgPiBvZmYpIHNiLnB1c2goc3RyLnN1YnN0cmluZyhvZmYsIGkpKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgc2IucHVzaChcIlxcXFx2XCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXGZcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DQVJSSUFHRVJFVFVSTjoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgc2IucHVzaChcIlxcXFxyXCIpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkRPVUJMRVFVT1RFOiB7XG4gICAgICAgICAgaWYgKCFzaW5nbGVRdW90ZWQpIHtcbiAgICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgICBzYi5wdXNoKFwiXFxcXFxcXCJcIik7XG4gICAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICsraTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5TSU5HTEVRVU9URToge1xuICAgICAgICAgIGlmIChzaW5nbGVRdW90ZWQpIHtcbiAgICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgICBzYi5wdXNoKFwiXFxcXCdcIik7XG4gICAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICsraTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQUNLU0xBU0g6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcXFxcXFwiKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICsraTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgIHNiLnB1c2gocXVvdGUpO1xuICB9XG5cbiAgdmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsKG5vZGUudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRSZWdleHBMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBSZWdleHBMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIi9cIik7XG4gICAgc2IucHVzaChub2RlLnBhdHRlcm4pO1xuICAgIHNiLnB1c2goXCIvXCIpO1xuICAgIHNiLnB1c2gobm9kZS5wYXR0ZXJuRmxhZ3MpO1xuICB9XG5cbiAgdmlzaXROZXdFeHByZXNzaW9uKG5vZGU6IE5ld0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2goXCJuZXcgXCIpO1xuICAgIHRoaXMudmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKTtcbiAgfVxuXG4gIHZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24obm9kZTogUGFyZW50aGVzaXplZEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCIoXCIpO1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgc2IucHVzaChcIilcIik7XG4gIH1cblxuICB2aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgIHRoaXMuc2IucHVzaChcIi5cIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUucHJvcGVydHkpO1xuICB9XG5cbiAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlOiBUZXJuYXJ5RXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIgPyBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5pZlRoZW4pO1xuICAgIHNiLnB1c2goXCIgOiBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5pZkVsc2UpO1xuICB9XG5cbiAgdmlzaXRVbmFyeUV4cHJlc3Npb24obm9kZTogVW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKG5vZGU6IFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9wZXJhbmQpO1xuICAgIHRoaXMuc2IucHVzaChvcGVyYXRvclRva2VuVG9TdHJpbmcobm9kZS5vcGVyYXRvcikpO1xuICB9XG5cbiAgdmlzaXRVbmFyeVByZWZpeEV4cHJlc3Npb24obm9kZTogVW5hcnlQcmVmaXhFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy5zYi5wdXNoKG9wZXJhdG9yVG9rZW5Ub1N0cmluZyhub2RlLm9wZXJhdG9yKSk7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcGVyYW5kKTtcbiAgfVxuXG4gIC8vIHN0YXRlbWVudHNcblxuICB2aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50OiBTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShzdGF0ZW1lbnQpO1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgaWYgKFxuICAgICAgIXNiLmxlbmd0aCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVhZGluZyBFbXB0eVN0YXRlbWVudFxuICAgICAgc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuVkFSSUFCTEUgfHwgLy8gcG90ZW50aWFsbHkgYXNzaWducyBhIEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgICAgc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuRVhQUkVTU0lPTiAgLy8gcG90ZW50aWFsbHkgYXNzaWducyBhIEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgICkge1xuICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsYXN0ID0gc2Jbc2IubGVuZ3RoIC0gMV07XG4gICAgICBsZXQgbGFzdENoYXJQb3MgPSBsYXN0Lmxlbmd0aCAtIDE7XG4gICAgICBpZiAobGFzdENoYXJQb3MgPj0gMCAmJiAoXG4gICAgICAgIGxhc3QuY2hhckNvZGVBdChsYXN0Q2hhclBvcykgPT0gQ2hhckNvZGUuQ0xPU0VCUkFDRSB8fFxuICAgICAgICBsYXN0LmNoYXJDb2RlQXQobGFzdENoYXJQb3MpID09IENoYXJDb2RlLlNFTUlDT0xPTilcbiAgICAgICkge1xuICAgICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRCbG9ja1N0YXRlbWVudChub2RlOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIHN0YXRlbWVudHMgPSBub2RlLnN0YXRlbWVudHM7XG4gICAgdmFyIG51bVN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzLmxlbmd0aDtcbiAgICBpZiAobnVtU3RhdGVtZW50cykge1xuICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICBsZXQgaW5kZW50TGV2ZWwgPSArK3RoaXMuaW5kZW50TGV2ZWw7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVN0YXRlbWVudHM7ICsraSkge1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICBpbmRlbnQoc2IsIC0tdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICBzYi5wdXNoKFwifVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcInt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QnJlYWtTdGF0ZW1lbnQobm9kZTogQnJlYWtTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgbGFiZWwgPSBub2RlLmxhYmVsO1xuICAgIGlmIChsYWJlbCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiYnJlYWsgXCIpO1xuICAgICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKGxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiYnJlYWtcIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRDb250aW51ZVN0YXRlbWVudChub2RlOiBDb250aW51ZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBsYWJlbCA9IG5vZGUubGFiZWw7XG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJjb250aW51ZSBcIik7XG4gICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJjb250aW51ZVwiKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgZGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycztcbiAgICBpZiAoZGVjb3JhdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcihkZWNvcmF0b3JzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5BQlNUUkFDVCkpIHNiLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgaWYgKG5vZGUubmFtZS50ZXh0Lmxlbmd0aCkge1xuICAgICAgc2IucHVzaChcImNsYXNzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiY2xhc3NcIik7XG4gICAgfVxuICAgIHZhciB0eXBlUGFyYW1ldGVycyA9IG5vZGUudHlwZVBhcmFtZXRlcnM7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCkge1xuICAgICAgc2IucHVzaChcIjxcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZVBhcmFtZXRlcih0eXBlUGFyYW1ldGVyc1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMSwgayA9IHR5cGVQYXJhbWV0ZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKHR5cGVQYXJhbWV0ZXJzW2ldKTtcbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCI+XCIpO1xuICAgIH1cbiAgICB2YXIgZXh0ZW5kc1R5cGUgPSBub2RlLmV4dGVuZHNUeXBlO1xuICAgIGlmIChleHRlbmRzVHlwZSkge1xuICAgICAgc2IucHVzaChcIiBleHRlbmRzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRUeXBlTm9kZShleHRlbmRzVHlwZSk7XG4gICAgfVxuICAgIHZhciBpbXBsZW1lbnRzVHlwZXMgPSBub2RlLmltcGxlbWVudHNUeXBlcztcbiAgICBpZiAoaW1wbGVtZW50c1R5cGVzKSB7XG4gICAgICBsZXQgbnVtSW1wbGVtZW50c1R5cGVzID0gaW1wbGVtZW50c1R5cGVzLmxlbmd0aDtcbiAgICAgIGlmIChudW1JbXBsZW1lbnRzVHlwZXMpIHtcbiAgICAgICAgc2IucHVzaChcIiBpbXBsZW1lbnRzIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGltcGxlbWVudHNUeXBlc1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtSW1wbGVtZW50c1R5cGVzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGltcGxlbWVudHNUeXBlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1lbWJlcnMgPSBub2RlLm1lbWJlcnM7XG4gICAgdmFyIG51bU1lbWJlcnMgPSBtZW1iZXJzLmxlbmd0aDtcbiAgICBpZiAobnVtTWVtYmVycykge1xuICAgICAgc2IucHVzaChcIiB7XFxuXCIpO1xuICAgICAgbGV0IGluZGVudExldmVsID0gKyt0aGlzLmluZGVudExldmVsO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBtZW1iZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICBsZXQgbWVtYmVyID0gbWVtYmVyc1tpXTtcbiAgICAgICAgaWYgKG1lbWJlci5raW5kICE9IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT04gfHwgKDxGaWVsZERlY2xhcmF0aW9uPm1lbWJlcikucGFyYW1ldGVySW5kZXggPCAwKSB7XG4gICAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUobWVtYmVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW5kZW50KHNiLCAtLXRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIn1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIge31cIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXREb1N0YXRlbWVudChub2RlOiBEb1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImRvIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gICAgaWYgKG5vZGUuc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuQkxPQ0spIHtcbiAgICAgIHNiLnB1c2goXCIgd2hpbGUgKFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIndoaWxlIChcIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29uZGl0aW9uKTtcbiAgICBzYi5wdXNoKFwiKVwiKTtcbiAgfVxuXG4gIHZpc2l0RW1wdHlTdGF0ZW1lbnQobm9kZTogRW1wdHlTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgfVxuXG4gIHZpc2l0RW51bURlY2xhcmF0aW9uKG5vZGU6IEVudW1EZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQgZGVmYXVsdCBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLkNPTlNUKSkgc2IucHVzaChcImNvbnN0IFwiKTtcbiAgICBzYi5wdXNoKFwiZW51bSBcIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubmFtZSk7XG4gICAgdmFyIHZhbHVlcyA9IG5vZGUudmFsdWVzO1xuICAgIHZhciBudW1WYWx1ZXMgPSB2YWx1ZXMubGVuZ3RoO1xuICAgIGlmIChudW1WYWx1ZXMpIHtcbiAgICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdEVudW1WYWx1ZURlY2xhcmF0aW9uKG5vZGUudmFsdWVzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVmFsdWVzOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIixcXG5cIik7XG4gICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLnZpc2l0RW51bVZhbHVlRGVjbGFyYXRpb24obm9kZS52YWx1ZXNbaV0pO1xuICAgICAgfVxuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICAgIGluZGVudChzYiwgLS10aGlzLmluZGVudExldmVsKTtcbiAgICAgIHNiLnB1c2goXCJ9XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiIHt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RW51bVZhbHVlRGVjbGFyYXRpb24obm9kZTogRW51bVZhbHVlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS52YWx1ZSkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFeHBvcnRJbXBvcnRTdGF0ZW1lbnQobm9kZTogRXhwb3J0SW1wb3J0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKFwiZXhwb3J0IGltcG9ydCBcIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUuZXh0ZXJuYWxOYW1lKTtcbiAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICB9XG5cbiAgdmlzaXRFeHBvcnRNZW1iZXIobm9kZTogRXhwb3J0TWVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubG9jYWxOYW1lKTtcbiAgICBpZiAobm9kZS5leHBvcnRlZE5hbWUudGV4dCAhPSBub2RlLmxvY2FsTmFtZS50ZXh0KSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCIgYXMgXCIpO1xuICAgICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUuZXhwb3J0ZWROYW1lKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cG9ydFN0YXRlbWVudChub2RlOiBFeHBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChub2RlLmlzRGVjbGFyZSkge1xuICAgICAgc2IucHVzaChcImRlY2xhcmUgXCIpO1xuICAgIH1cbiAgICB2YXIgbWVtYmVycyA9IG5vZGUubWVtYmVycztcbiAgICBpZiAobWVtYmVycyAmJiBtZW1iZXJzLmxlbmd0aCkge1xuICAgICAgbGV0IG51bU1lbWJlcnMgPSBtZW1iZXJzLmxlbmd0aDtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdEV4cG9ydE1lbWJlcihtZW1iZXJzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtTWVtYmVyczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsXFxuXCIpO1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydE1lbWJlcihtZW1iZXJzW2ldKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIHNiLnB1c2goXCJcXG59XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IHt9XCIpO1xuICAgIH1cbiAgICB2YXIgcGF0aCA9IG5vZGUucGF0aDtcbiAgICBpZiAocGF0aCkge1xuICAgICAgc2IucHVzaChcIiBmcm9tIFwiKTtcbiAgICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihwYXRoKTtcbiAgICB9XG4gICAgc2IucHVzaChcIjtcIik7XG4gIH1cblxuICB2aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQobm9kZTogRXhwb3J0RGVmYXVsdFN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBkZWNsYXJhdGlvbiA9IG5vZGUuZGVjbGFyYXRpb247XG4gICAgc3dpdGNoIChkZWNsYXJhdGlvbi5raW5kKSB7XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RW51bURlY2xhcmF0aW9uKDxFbnVtRGVjbGFyYXRpb24+ZGVjbGFyYXRpb24sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5kZWNsYXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPmRlY2xhcmF0aW9uLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklOVEVSRkFDRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbig8SW50ZXJmYWNlRGVjbGFyYXRpb24+ZGVjbGFyYXRpb24sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkFNRVNQQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVzcGFjZURlY2xhcmF0aW9uKDxOYW1lc3BhY2VEZWNsYXJhdGlvbj5kZWNsYXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cHJlc3Npb25TdGF0ZW1lbnQobm9kZTogRXhwcmVzc2lvblN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZpZWxkRGVjbGFyYXRpb24obm9kZTogRmllbGREZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhub2RlKTtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChub2RlLmZsYWdzICYgQ29tbW9uRmxhZ3MuREVGSU5JVEVfQVNTSUdOTUVOVCkge1xuICAgICAgc2IucHVzaChcIiFcIik7XG4gICAgfVxuICAgIHZhciB0eXBlID0gbm9kZS50eXBlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZSk7XG4gICAgfVxuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUoaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0Rm9yU3RhdGVtZW50KG5vZGU6IEZvclN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImZvciAoXCIpO1xuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShpbml0aWFsaXplcik7XG4gICAgfVxuICAgIHZhciBjb25kaXRpb24gPSBub2RlLmNvbmRpdGlvbjtcbiAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICBzYi5wdXNoKFwiOyBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShjb25kaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiO1wiKTtcbiAgICB9XG4gICAgdmFyIGluY3JlbWVudG9yID0gbm9kZS5pbmNyZW1lbnRvcjtcbiAgICBpZiAoaW5jcmVtZW50b3IpIHtcbiAgICAgIHNiLnB1c2goXCI7IFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGluY3JlbWVudG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcIjtcIik7XG4gICAgfVxuICAgIHNiLnB1c2goXCIpIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZTogRnVuY3Rpb25EZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgICAgdGhpcy5zZXJpYWxpemVBY2Nlc3NNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLm5hbWUudGV4dC5sZW5ndGgpIHtcbiAgICAgIHNiLnB1c2goXCJmdW5jdGlvbiBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCJmdW5jdGlvblwiKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdEZ1bmN0aW9uQ29tbW9uKG5vZGUpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkNvbW1vbihub2RlOiBGdW5jdGlvbkRlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgc2lnbmF0dXJlID0gbm9kZS5zaWduYXR1cmU7XG4gICAgdmFyIHR5cGVQYXJhbWV0ZXJzID0gbm9kZS50eXBlUGFyYW1ldGVycztcbiAgICBpZiAodHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgIGxldCBudW1UeXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICAgIGlmIChudW1UeXBlUGFyYW1ldGVycykge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVR5cGVQYXJhbWV0ZXJzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHNiLnB1c2goXCI+XCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5hcnJvd0tpbmQgPT0gQXJyb3dLaW5kLkFSUk9XX1NJTkdMRSkge1xuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICAgIGFzc2VydChwYXJhbWV0ZXJzLmxlbmd0aCA9PSAxKTtcbiAgICAgIGFzc2VydCghc2lnbmF0dXJlLmV4cGxpY2l0VGhpc1R5cGUpO1xuICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIoXCIpO1xuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICAgIGxldCBudW1QYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBsZXQgZXhwbGljaXRUaGlzVHlwZSA9IHNpZ25hdHVyZS5leHBsaWNpdFRoaXNUeXBlO1xuICAgICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHtcbiAgICAgICAgc2IucHVzaChcInRoaXM6IFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGV4cGxpY2l0VGhpc1R5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKG51bVBhcmFtZXRlcnMpIHtcbiAgICAgICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICAgIHRoaXMuc2VyaWFsaXplUGFyYW1ldGVyKHBhcmFtZXRlcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBib2R5ID0gbm9kZS5ib2R5O1xuICAgIHZhciByZXR1cm5UeXBlID0gc2lnbmF0dXJlLnJldHVyblR5cGU7XG4gICAgaWYgKG5vZGUuYXJyb3dLaW5kKSB7XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBpZiAobm9kZS5hcnJvd0tpbmQgPT0gQXJyb3dLaW5kLkFSUk9XX1NJTkdMRSkge1xuICAgICAgICAgIGFzc2VydChpc1R5cGVPbWl0dGVkKHJldHVyblR5cGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNUeXBlT21pdHRlZChyZXR1cm5UeXBlKSkge1xuICAgICAgICAgICAgc2IucHVzaChcIilcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNiLnB1c2goXCIpOiBcIik7XG4gICAgICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNiLnB1c2goXCIgPT4gXCIpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShib2R5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VydCghaXNUeXBlT21pdHRlZChyZXR1cm5UeXBlKSk7XG4gICAgICAgIHNiLnB1c2goXCIgPT4gXCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzVHlwZU9taXR0ZWQocmV0dXJuVHlwZSkgJiZcbiAgICAgICAgIW5vZGUuaXNBbnkoQ29tbW9uRmxhZ3MuQ09OU1RSVUNUT1IgfCBDb21tb25GbGFncy5TRVQpXG4gICAgICApIHtcbiAgICAgICAgc2IucHVzaChcIik6IFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHJldHVyblR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2IucHVzaChcIilcIik7XG4gICAgICB9XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUoYm9keSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRJZlN0YXRlbWVudChub2RlOiBJZlN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImlmIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIpIFwiKTtcbiAgICB2YXIgaWZUcnVlID0gbm9kZS5pZlRydWU7XG4gICAgdGhpcy52aXNpdE5vZGUoaWZUcnVlKTtcbiAgICBpZiAoaWZUcnVlLmtpbmQgIT0gTm9kZUtpbmQuQkxPQ0spIHtcbiAgICAgIHNiLnB1c2goXCI7XFxuXCIpO1xuICAgIH1cbiAgICB2YXIgaWZGYWxzZSA9IG5vZGUuaWZGYWxzZTtcbiAgICBpZiAoaWZGYWxzZSkge1xuICAgICAgaWYgKGlmVHJ1ZS5raW5kID09IE5vZGVLaW5kLkJMT0NLKSB7XG4gICAgICAgIHNiLnB1c2goXCIgZWxzZSBcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzYi5wdXNoKFwiZWxzZSBcIik7XG4gICAgICB9XG4gICAgICB0aGlzLnZpc2l0Tm9kZShpZkZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IEltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdmFyIGV4dGVybmFsTmFtZSA9IG5vZGUuZm9yZWlnbk5hbWU7XG4gICAgdmFyIG5hbWUgPSBub2RlLm5hbWU7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKGV4dGVybmFsTmFtZSk7XG4gICAgaWYgKGV4dGVybmFsTmFtZS50ZXh0ICE9IG5hbWUudGV4dCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiIGFzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihuYW1lKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEltcG9ydFN0YXRlbWVudChub2RlOiBJbXBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCJpbXBvcnQgXCIpO1xuICAgIHZhciBkZWNsYXJhdGlvbnMgPSBub2RlLmRlY2xhcmF0aW9ucztcbiAgICB2YXIgbmFtZXNwYWNlTmFtZSA9IG5vZGUubmFtZXNwYWNlTmFtZTtcbiAgICBpZiAoZGVjbGFyYXRpb25zKSB7XG4gICAgICBsZXQgbnVtRGVjbGFyYXRpb25zID0gZGVjbGFyYXRpb25zLmxlbmd0aDtcbiAgICAgIGlmIChudW1EZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbihkZWNsYXJhdGlvbnNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bURlY2xhcmF0aW9uczsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIixcXG5cIik7XG4gICAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgICAgdGhpcy52aXNpdEltcG9ydERlY2xhcmF0aW9uKGRlY2xhcmF0aW9uc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgLS10aGlzLmluZGVudExldmVsO1xuICAgICAgICBzYi5wdXNoKFwiXFxufSBmcm9tIFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNiLnB1c2goXCJ7fSBmcm9tIFwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZU5hbWUpIHtcbiAgICAgIHNiLnB1c2goXCIqIGFzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihuYW1lc3BhY2VOYW1lKTtcbiAgICAgIHNiLnB1c2goXCIgZnJvbSBcIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihub2RlLnBhdGgpO1xuICB9XG5cbiAgdmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG5vZGU6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCJba2V5OiBcIik7XG4gICAgdGhpcy52aXNpdFR5cGVOb2RlKG5vZGUua2V5VHlwZSk7XG4gICAgc2IucHVzaChcIl06IFwiKTtcbiAgICB0aGlzLnZpc2l0VHlwZU5vZGUobm9kZS52YWx1ZVR5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbihub2RlOiBJbnRlcmZhY2VEZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgZGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycztcbiAgICBpZiAoZGVjb3JhdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcihkZWNvcmF0b3JzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgIH1cbiAgICBzYi5wdXNoKFwiaW50ZXJmYWNlIFwiKTtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSBub2RlLnR5cGVQYXJhbWV0ZXJzO1xuICAgIGlmICh0eXBlUGFyYW1ldGVycyAmJiB0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgIHNiLnB1c2goXCI8XCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDEsIGsgPSB0eXBlUGFyYW1ldGVycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZVBhcmFtZXRlcih0eXBlUGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICB9XG4gICAgdmFyIGV4dGVuZHNUeXBlID0gbm9kZS5leHRlbmRzVHlwZTtcbiAgICBpZiAoZXh0ZW5kc1R5cGUpIHtcbiAgICAgIHNiLnB1c2goXCIgZXh0ZW5kcyBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZXh0ZW5kc1R5cGUpO1xuICAgIH1cbiAgICAvLyBtdXN0IG5vdCBoYXZlIGltcGxlbWVudHNUeXBlc1xuICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICB2YXIgaW5kZW50TGV2ZWwgPSArK3RoaXMuaW5kZW50TGV2ZWw7XG4gICAgdmFyIG1lbWJlcnMgPSBub2RlLm1lbWJlcnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBtZW1iZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICB0aGlzLnZpc2l0Tm9kZUFuZFRlcm1pbmF0ZShtZW1iZXJzW2ldKTtcbiAgICB9XG4gICAgLS10aGlzLmluZGVudExldmVsO1xuICAgIHNiLnB1c2goXCJ9XCIpO1xuICB9XG5cbiAgdmlzaXRNZXRob2REZWNsYXJhdGlvbihub2RlOiBNZXRob2REZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhub2RlKTtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5HRVQpKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJnZXQgXCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5pcyhDb21tb25GbGFncy5TRVQpKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJzZXQgXCIpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0RnVuY3Rpb25Db21tb24obm9kZSk7XG4gIH1cblxuICB2aXNpdE5hbWVzcGFjZURlY2xhcmF0aW9uKG5vZGU6IE5hbWVzcGFjZURlY2xhcmF0aW9uLCBpc0RlZmF1bHQ6IGJvb2wgPSBmYWxzZSk6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQgZGVmYXVsdCBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIHNiLnB1c2goXCJuYW1lc3BhY2UgXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciBtZW1iZXJzID0gbm9kZS5tZW1iZXJzO1xuICAgIHZhciBudW1NZW1iZXJzID0gbWVtYmVycy5sZW5ndGg7XG4gICAgaWYgKG51bU1lbWJlcnMpIHtcbiAgICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gbWVtYmVycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKG1lbWJlcnNbaV0pO1xuICAgICAgfVxuICAgICAgaW5kZW50KHNiLCAtLXRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIn1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIge31cIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRSZXR1cm5TdGF0ZW1lbnQobm9kZTogUmV0dXJuU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHZhbHVlID0gbm9kZS52YWx1ZTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2IucHVzaChcInJldHVybiBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2IucHVzaChcInJldHVyblwiKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFN3aXRjaENhc2Uobm9kZTogU3dpdGNoQ2FzZSk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIGxhYmVsID0gbm9kZS5sYWJlbDtcbiAgICBpZiAobGFiZWwpIHtcbiAgICAgIHNiLnB1c2goXCJjYXNlIFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGxhYmVsKTtcbiAgICAgIHNiLnB1c2goXCI6XFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiZGVmYXVsdDpcXG5cIik7XG4gICAgfVxuICAgIHZhciBzdGF0ZW1lbnRzID0gbm9kZS5zdGF0ZW1lbnRzO1xuICAgIHZhciBudW1TdGF0ZW1lbnRzID0gc3RhdGVtZW50cy5sZW5ndGg7XG4gICAgaWYgKG51bVN0YXRlbWVudHMpIHtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVN0YXRlbWVudHM7ICsraSkge1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICAtLXRoaXMuaW5kZW50TGV2ZWw7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTd2l0Y2hTdGF0ZW1lbnQobm9kZTogU3dpdGNoU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKFwic3dpdGNoIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIpIHtcXG5cIik7XG4gICAgdmFyIGluZGVudExldmVsID0gKyt0aGlzLmluZGVudExldmVsO1xuICAgIHZhciBjYXNlcyA9IG5vZGUuY2FzZXM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBjYXNlcy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdFN3aXRjaENhc2UoY2FzZXNbaV0pO1xuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICB9XG4gICAgLS10aGlzLmluZGVudExldmVsO1xuICAgIHNiLnB1c2goXCJ9XCIpO1xuICB9XG5cbiAgdmlzaXRUaHJvd1N0YXRlbWVudChub2RlOiBUaHJvd1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuc2IucHVzaChcInRocm93IFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnZhbHVlKTtcbiAgfVxuXG4gIHZpc2l0VHJ5U3RhdGVtZW50KG5vZGU6IFRyeVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcInRyeSB7XFxuXCIpO1xuICAgIHZhciBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICB2YXIgc3RhdGVtZW50cyA9IG5vZGUuc3RhdGVtZW50cztcbiAgICBmb3IgKGxldCBpID0gMCwgayA9IHN0YXRlbWVudHMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKHN0YXRlbWVudHNbaV0pO1xuICAgIH1cbiAgICB2YXIgY2F0Y2hWYXJpYWJsZSA9IG5vZGUuY2F0Y2hWYXJpYWJsZTtcbiAgICBpZiAoY2F0Y2hWYXJpYWJsZSkge1xuICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCAtIDEpO1xuICAgICAgc2IucHVzaChcIn0gY2F0Y2ggKFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihjYXRjaFZhcmlhYmxlKTtcbiAgICAgIHNiLnB1c2goXCIpIHtcXG5cIik7XG4gICAgICBsZXQgY2F0Y2hTdGF0ZW1lbnRzID0gbm9kZS5jYXRjaFN0YXRlbWVudHM7XG4gICAgICBpZiAoY2F0Y2hTdGF0ZW1lbnRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gY2F0Y2hTdGF0ZW1lbnRzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKGNhdGNoU3RhdGVtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGZpbmFsbHlTdGF0ZW1lbnRzID0gbm9kZS5maW5hbGx5U3RhdGVtZW50cztcbiAgICBpZiAoZmluYWxseVN0YXRlbWVudHMpIHtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwgLSAxKTtcbiAgICAgIHNiLnB1c2goXCJ9IGZpbmFsbHkge1xcblwiKTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gZmluYWxseVN0YXRlbWVudHMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZUFuZFRlcm1pbmF0ZShmaW5hbGx5U3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwgLSAxKTtcbiAgICBzYi5wdXNoKFwifVwiKTtcbiAgfVxuXG4gIHZpc2l0VHlwZURlY2xhcmF0aW9uKG5vZGU6IFR5cGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgc2IucHVzaChcInR5cGUgXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlUGFyYW1ldGVycyA9IG5vZGUudHlwZVBhcmFtZXRlcnM7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzKSB7XG4gICAgICBsZXQgbnVtVHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBpZiAobnVtVHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgICAgc2IucHVzaChcIjxcIik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtVHlwZVBhcmFtZXRlcnM7ICsraSkge1xuICAgICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKHR5cGVQYXJhbWV0ZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2IucHVzaChcIiA9IFwiKTtcbiAgICB0aGlzLnZpc2l0VHlwZU5vZGUobm9kZS50eXBlKTtcbiAgfVxuXG4gIHZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbihub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubmFtZSk7XG4gICAgdmFyIHR5cGUgPSBub2RlLnR5cGU7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5mbGFncyAmIENvbW1vbkZsYWdzLkRFRklOSVRFX0FTU0lHTk1FTlQpIHtcbiAgICAgIHNiLnB1c2goXCIhXCIpO1xuICAgIH1cbiAgICBpZiAodHlwZSkge1xuICAgICAgc2IucHVzaChcIjogXCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHR5cGUpO1xuICAgIH1cbiAgICB2YXIgaW5pdGlhbGl6ZXIgPSBub2RlLmluaXRpYWxpemVyO1xuICAgIGlmIChpbml0aWFsaXplcikge1xuICAgICAgc2IucHVzaChcIiA9IFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGluaXRpYWxpemVyKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlU3RhdGVtZW50KG5vZGU6IFZhcmlhYmxlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIGRlY29yYXRvcnMgPSBub2RlLmRlY29yYXRvcnM7XG4gICAgaWYgKGRlY29yYXRvcnMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gZGVjb3JhdG9ycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVEZWNvcmF0b3IoZGVjb3JhdG9yc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIGRlY2xhcmF0aW9ucyA9IG5vZGUuZGVjbGFyYXRpb25zO1xuICAgIHZhciBudW1EZWNsYXJhdGlvbnMgPSBhc3NlcnQoZGVjbGFyYXRpb25zLmxlbmd0aCk7XG4gICAgdmFyIGZpcnN0RGVjbGFyYXRpb24gPSBkZWNsYXJhdGlvbnNbMF07XG4gICAgdGhpcy5zZXJpYWxpemVFeHRlcm5hbE1vZGlmaWVycyhmaXJzdERlY2xhcmF0aW9uKTtcbiAgICBzYi5wdXNoKGZpcnN0RGVjbGFyYXRpb24uaXMoQ29tbW9uRmxhZ3MuQ09OU1QpID8gXCJjb25zdCBcIiA6IGZpcnN0RGVjbGFyYXRpb24uaXMoQ29tbW9uRmxhZ3MuTEVUKSA/IFwibGV0IFwiIDogXCJ2YXIgXCIpO1xuICAgIHRoaXMudmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUuZGVjbGFyYXRpb25zWzBdKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bURlY2xhcmF0aW9uczsgKytpKSB7XG4gICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICB0aGlzLnZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbihub2RlLmRlY2xhcmF0aW9uc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRXaGlsZVN0YXRlbWVudChub2RlOiBXaGlsZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIndoaWxlIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHZhciBzdGF0ZW1lbnQgPSBub2RlLnN0YXRlbWVudDtcbiAgICBpZiAoc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuRU1QVFkpIHtcbiAgICAgIHNiLnB1c2goXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiKSBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gb3RoZXJcblxuICBzZXJpYWxpemVEZWNvcmF0b3Iobm9kZTogRGVjb3JhdG9yTm9kZSk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIkBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICB2YXIgYXJncyA9IG5vZGUuYXJndW1lbnRzO1xuICAgIGlmIChhcmdzKSB7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICAgIGxldCBudW1BcmdzID0gYXJncy5sZW5ndGg7XG4gICAgICBpZiAobnVtQXJncykge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShhcmdzWzBdKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1BcmdzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdE5vZGUoYXJnc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCIpXFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgIH1cbiAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICB9XG5cbiAgc2VyaWFsaXplUGFyYW1ldGVyKG5vZGU6IFBhcmFtZXRlck5vZGUpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBraW5kID0gbm9kZS5wYXJhbWV0ZXJLaW5kO1xuICAgIHZhciBpbXBsaWNpdEZpZWxkRGVjbGFyYXRpb24gPSBub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbjtcbiAgICBpZiAoaW1wbGljaXRGaWVsZERlY2xhcmF0aW9uKSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhpbXBsaWNpdEZpZWxkRGVjbGFyYXRpb24pO1xuICAgIH1cbiAgICBpZiAoa2luZCA9PSBQYXJhbWV0ZXJLaW5kLlJFU1QpIHtcbiAgICAgIHNiLnB1c2goXCIuLi5cIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlID0gbm9kZS50eXBlO1xuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGlmIChraW5kID09IFBhcmFtZXRlcktpbmQuT1BUSU9OQUwgJiYgIWluaXRpYWxpemVyKSBzYi5wdXNoKFwiP1wiKTtcbiAgICAgIGlmICghaXNUeXBlT21pdHRlZCh0eXBlKSkge1xuICAgICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZSh0eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUoaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGU6IERlY2xhcmF0aW9uU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5FWFBPUlQpKSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuSU1QT1JUKSkge1xuICAgICAgc2IucHVzaChcImltcG9ydCBcIik7XG4gICAgfSBlbHNlIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLkRFQ0xBUkUpKSB7XG4gICAgICBzYi5wdXNoKFwiZGVjbGFyZSBcIik7XG4gICAgfVxuICB9XG5cbiAgc2VyaWFsaXplQWNjZXNzTW9kaWZpZXJzKG5vZGU6IERlY2xhcmF0aW9uU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5QVUJMSUMpKSB7XG4gICAgICBzYi5wdXNoKFwicHVibGljIFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuUFJJVkFURSkpIHtcbiAgICAgIHNiLnB1c2goXCJwcml2YXRlIFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuUFJPVEVDVEVEKSkge1xuICAgICAgc2IucHVzaChcInByb3RlY3RlZCBcIik7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLlNUQVRJQykpIHtcbiAgICAgIHNiLnB1c2goXCJzdGF0aWMgXCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5pcyhDb21tb25GbGFncy5BQlNUUkFDVCkpIHtcbiAgICAgIHNiLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLlJFQURPTkxZKSkge1xuICAgICAgc2IucHVzaChcInJlYWRvbmx5IFwiKTtcbiAgICB9XG4gIH1cblxuICBmaW5pc2goKTogc3RyaW5nIHtcbiAgICB2YXIgcmV0ID0gdGhpcy5zYi5qb2luKFwiXCIpO1xuICAgIHRoaXMuc2IgPSBbXTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG4iXX0= - -/***/ }), - -/***/ "./src/visitor.ts": -/*!************************!*\ - !*** ./src/visitor.ts ***! - \************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; -var __read = (this && this.__read) || function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// export type Collection = NonNullCollection| null; -var isIterable = function (object) { - //@ts-ignore - return object != null && typeof object[Symbol.iterator] === "function"; -}; -var DefaultWriter = /** @class */ (function () { - function DefaultWriter() { - } - DefaultWriter.prototype.writeString = function (s) { }; - DefaultWriter.prototype.writeNode = function (node) { }; - return DefaultWriter; -}()); -exports.DefaultWriter = DefaultWriter; -var AbstractVisitor = /** @class */ (function () { - function AbstractVisitor(writer) { - if (writer === void 0) { writer = new DefaultWriter(); } - this.writer = writer; - } - AbstractVisitor.prototype.writeString = function (str) { - return this.writeString(str); - }; - AbstractVisitor.prototype.writeNode = function (item) { - this.writer.writeNode(item); - }; - AbstractVisitor.prototype.visit = function (node) { - var e_1, _a, e_2, _b; - var _this = this; - if (node == null) - return; - if (node instanceof Array) { - node.map(function (node) { _this.visit(node); }); - } - else if (node instanceof Map) { - try { - for (var _c = __values(node.entries()), _d = _c.next(); !_d.done; _d = _c.next()) { - var _e = __read(_d.value, 2), key = _e[0], _node = _e[1]; - this.visit(_node); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_d && !_d.done && (_a = _c.return)) _a.call(_c); - } - finally { if (e_1) throw e_1.error; } - } - //@ts-ignore Need a better way to test type - } - else if (isIterable(node)) { - try { - //TODO: Find better way to test if iterable - for (var node_1 = __values(node), node_1_1 = node_1.next(); !node_1_1.done; node_1_1 = node_1.next()) { - var _node = node_1_1.value; - this.visit(_node); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (node_1_1 && !node_1_1.done && (_b = node_1.return)) _b.call(node_1); - } - finally { if (e_2) throw e_2.error; } - } - } - else { - //@ts-ignore Node is not iterable. - this._visit(node); - } - }; - return AbstractVisitor; -}()); -exports.AbstractVisitor = AbstractVisitor; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aXNpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSwwREFBMEQ7QUFFMUQsSUFBTSxVQUFVLEdBQUcsVUFBQyxNQUFjO0lBQ2hDLFlBQVk7SUFDWixPQUFBLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVU7QUFBL0QsQ0FBK0QsQ0FBQztBQU9sRTtJQUFBO0lBSUEsQ0FBQztJQUhDLG1DQUFXLEdBQVgsVUFBWSxDQUFTLElBQVUsQ0FBQztJQUNoQyxpQ0FBUyxHQUFULFVBQVUsSUFBbUIsSUFBUyxDQUFDO0lBRXpDLG9CQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7QUFKWSxzQ0FBYTtBQU0xQjtJQUVFLHlCQUFzQixNQUEwQztRQUExQyx1QkFBQSxFQUFBLGFBQXdCLGFBQWEsRUFBSztRQUExQyxXQUFNLEdBQU4sTUFBTSxDQUFvQztJQUFHLENBQUM7SUFFcEUscUNBQVcsR0FBWCxVQUFZLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxtQ0FBUyxHQUFULFVBQVUsSUFBbUI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELCtCQUFLLEdBQUwsVUFBTSxJQUEwQjs7UUFBaEMsaUJBa0JDO1FBakJDLElBQUksSUFBSSxJQUFJLElBQUk7WUFBRSxPQUFPO1FBQ3pCLElBQUksSUFBSSxZQUFZLEtBQUssRUFBRTtZQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUMsSUFBTyxJQUFhLEtBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRDthQUFNLElBQUksSUFBSSxZQUFZLEdBQUcsRUFBRTs7Z0JBQzlCLEtBQXlCLElBQUEsS0FBQSxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBaEMsSUFBQSx3QkFBWSxFQUFYLFdBQUcsRUFBRSxhQUFLO29CQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNuQjs7Ozs7Ozs7O1lBQ0QsMkNBQTJDO1NBQzVDO2FBQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7O2dCQUN6QiwyQ0FBMkM7Z0JBQzdDLEtBQWtCLElBQUEsU0FBQSxTQUFBLElBQUksQ0FBQSwwQkFBQSw0Q0FBRTtvQkFBbkIsSUFBSSxLQUFLLGlCQUFBO29CQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3JCOzs7Ozs7Ozs7U0FDRjthQUFNO1lBQ0wsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBR0gsc0JBQUM7QUFBRCxDQUFDLEFBakNELElBaUNDO0FBakNxQiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvbjxUPiA9IFQgfCBUW10gfCBNYXA8c3RyaW5nLCBUIHwgVFtdIHwgSXRlcmFibGU8VD4+IHwgSXRlcmFibGU8VD47XG4vLyBleHBvcnQgdHlwZSBDb2xsZWN0aW9uPFQ+ID0gTm9uTnVsbENvbGxlY3Rpb248VD58IG51bGw7XG5cbmNvbnN0IGlzSXRlcmFibGUgPSAob2JqZWN0OiBvYmplY3QpOiBib29sZWFuID0+XG4gIC8vQHRzLWlnbm9yZVxuICBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0W1N5bWJvbC5pdGVyYXRvcl0gPT09IFwiZnVuY3Rpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZXI8VD4ge1xuICB3cml0ZVN0cmluZyh4OiBDb2xsZWN0aW9uPFQ+IHwgc3RyaW5nKTogdm9pZDtcbiAgd3JpdGVOb2RlKHg6IENvbGxlY3Rpb248VD4pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFdyaXRlcjxUPiBpbXBsZW1lbnRzIFdyaXRlcjxUPiB7XG4gIHdyaXRlU3RyaW5nKHM6IHN0cmluZyk6IHZvaWQgeyB9XG4gIHdyaXRlTm9kZShub2RlOiBDb2xsZWN0aW9uPFQ+KTogdm9pZCB7fVxuXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZpc2l0b3I8VD4ge1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB3cml0ZXI6IFdyaXRlcjxUPiA9IG5ldyBEZWZhdWx0V3JpdGVyPFQ+KCkpIHt9XG5cbiAgd3JpdGVTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLndyaXRlU3RyaW5nKHN0cik7XG4gIH1cblxuICB3cml0ZU5vZGUoaXRlbTogQ29sbGVjdGlvbjxUPiApOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlci53cml0ZU5vZGUoaXRlbSk7XG4gIH1cblxuICB2aXNpdChub2RlOiBDb2xsZWN0aW9uPFQ+IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChub2RlID09IG51bGwpIHJldHVybjtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBub2RlLm1hcCgobm9kZTogVCk6IHZvaWQgPT4geyB0aGlzLnZpc2l0KG5vZGUpOyB9KTtcbiAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgIGZvciAobGV0IFtrZXksIF9ub2RlXSBvZiBub2RlLmVudHJpZXMoKSkge1xuICAgICAgICB0aGlzLnZpc2l0KF9ub2RlKTtcbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZSBOZWVkIGEgYmV0dGVyIHdheSB0byB0ZXN0IHR5cGVcbiAgICB9IGVsc2UgaWYgKGlzSXRlcmFibGUobm9kZSkpIHtcbiAgICAgICAgLy9UT0RPOiBGaW5kIGJldHRlciB3YXkgdG8gdGVzdCBpZiBpdGVyYWJsZVxuICAgICAgZm9yIChsZXQgX25vZGUgb2Ygbm9kZSkge1xuICAgICAgICAgIHRoaXMudmlzaXQoX25vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvL0B0cy1pZ25vcmUgTm9kZSBpcyBub3QgaXRlcmFibGUuXG4gICAgICB0aGlzLl92aXNpdChub2RlKTtcbiAgICB9XG4gIH1cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF92aXNpdChub2RlOiBUKTogdm9pZDtcblxufVxuIl19 - -/***/ }) - -/******/ }); -}); -//# sourceMappingURL=transformerBundle.js.map \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.transformer=t():e.transformer=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=6)}([function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]="SOURCE",e[e.NAMEDTYPE=1]="NAMEDTYPE",e[e.FUNCTIONTYPE=2]="FUNCTIONTYPE",e[e.TYPENAME=3]="TYPENAME",e[e.TYPEPARAMETER=4]="TYPEPARAMETER",e[e.PARAMETER=5]="PARAMETER",e[e.IDENTIFIER=6]="IDENTIFIER",e[e.ASSERTION=7]="ASSERTION",e[e.BINARY=8]="BINARY",e[e.CALL=9]="CALL",e[e.CLASS=10]="CLASS",e[e.COMMA=11]="COMMA",e[e.ELEMENTACCESS=12]="ELEMENTACCESS",e[e.FALSE=13]="FALSE",e[e.FUNCTION=14]="FUNCTION",e[e.INSTANCEOF=15]="INSTANCEOF",e[e.LITERAL=16]="LITERAL",e[e.NEW=17]="NEW",e[e.NULL=18]="NULL",e[e.PARENTHESIZED=19]="PARENTHESIZED",e[e.PROPERTYACCESS=20]="PROPERTYACCESS",e[e.TERNARY=21]="TERNARY",e[e.SUPER=22]="SUPER",e[e.THIS=23]="THIS",e[e.TRUE=24]="TRUE",e[e.CONSTRUCTOR=25]="CONSTRUCTOR",e[e.UNARYPOSTFIX=26]="UNARYPOSTFIX",e[e.UNARYPREFIX=27]="UNARYPREFIX",e[e.BLOCK=28]="BLOCK",e[e.BREAK=29]="BREAK",e[e.CONTINUE=30]="CONTINUE",e[e.DO=31]="DO",e[e.EMPTY=32]="EMPTY",e[e.EXPORT=33]="EXPORT",e[e.EXPORTDEFAULT=34]="EXPORTDEFAULT",e[e.EXPORTIMPORT=35]="EXPORTIMPORT",e[e.EXPRESSION=36]="EXPRESSION",e[e.FOR=37]="FOR",e[e.IF=38]="IF",e[e.IMPORT=39]="IMPORT",e[e.RETURN=40]="RETURN",e[e.SWITCH=41]="SWITCH",e[e.THROW=42]="THROW",e[e.TRY=43]="TRY",e[e.VARIABLE=44]="VARIABLE",e[e.VOID=45]="VOID",e[e.WHILE=46]="WHILE",e[e.CLASSDECLARATION=47]="CLASSDECLARATION",e[e.ENUMDECLARATION=48]="ENUMDECLARATION",e[e.ENUMVALUEDECLARATION=49]="ENUMVALUEDECLARATION",e[e.FIELDDECLARATION=50]="FIELDDECLARATION",e[e.FUNCTIONDECLARATION=51]="FUNCTIONDECLARATION",e[e.IMPORTDECLARATION=52]="IMPORTDECLARATION",e[e.INDEXSIGNATUREDECLARATION=53]="INDEXSIGNATUREDECLARATION",e[e.INTERFACEDECLARATION=54]="INTERFACEDECLARATION",e[e.METHODDECLARATION=55]="METHODDECLARATION",e[e.NAMESPACEDECLARATION=56]="NAMESPACEDECLARATION",e[e.TYPEDECLARATION=57]="TYPEDECLARATION",e[e.VARIABLEDECLARATION=58]="VARIABLEDECLARATION",e[e.DECORATOR=59]="DECORATOR",e[e.EXPORTMEMBER=60]="EXPORTMEMBER",e[e.SWITCHCASE=61]="SWITCHCASE",e[e.COMMENT=62]="COMMENT"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName("",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text="",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new Q;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(".")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]="DEFAULT",e[e.OPTIONAL=1]="OPTIONAL",e[e.REST=2]="REST"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if("builtin"==t)return E.BUILTIN;break;case 101:if("external"==t)return E.EXTERNAL;break;case 103:if("global"==t)return E.GLOBAL;break;case 105:if("inline"==t)return E.INLINE;break;case 108:if("lazy"==t)return E.LAZY;break;case 111:if("operator"==t)return E.OPERATOR;break;case 115:if("sealed"==t)return E.SEALED;break;case 117:if("unmanaged"==t)return E.UNMANAGED;if("unsafe"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),"operator"==t)switch(i.charCodeAt(0)){case 98:if("binary"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case"prefix":return E.OPERATOR_PREFIX;case"postfix":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]="CUSTOM",e[e.GLOBAL=1]="GLOBAL",e[e.OPERATOR=2]="OPERATOR",e[e.OPERATOR_BINARY=3]="OPERATOR_BINARY",e[e.OPERATOR_PREFIX=4]="OPERATOR_PREFIX",e[e.OPERATOR_POSTFIX=5]="OPERATOR_POSTFIX",e[e.UNMANAGED=6]="UNMANAGED",e[e.SEALED=7]="SEALED",e[e.INLINE=8]="INLINE",e[e.EXTERNAL=9]="EXTERNAL",e[e.BUILTIN=10]="BUILTIN",e[e.LAZY=11]="LAZY",e[e.UNSAFE=12]="UNSAFE"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]="LINE",e[e.TRIPLE=1]="TRIPLE",e[e.BLOCK=2]="BLOCK"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]="FLOAT",e[e.INTEGER=1]="INTEGER",e[e.STRING=2]="STRING",e[e.REGEXP=3]="REGEXP",e[e.ARRAY=4]="ARRAY",e[e.OBJECT=5]="OBJECT"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]="PREFIX",e[e.AS=1]="AS",e[e.NONNULL=2]="NONNULL"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,"typeArgumentsRange",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"argumentsRange",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text="constructor",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text="null",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text="super",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text="this",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text="true",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var Q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text="false",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=Q;var j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=j;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(j);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(j);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]="USER",e[e.USER_ENTRY=1]="USER_ENTRY",e[e.LIBRARY=2]="LIBRARY",e[e.LIBRARY_ENTRY=3]="LIBRARY_ENTRY"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i";case s.LESSTHAN_EQUALS:return"<=";case s.GREATERTHAN_EQUALS:return">=";case s.EQUALS_EQUALS:return"==";case s.EXCLAMATION_EQUALS:return"!=";case s.EQUALS_EQUALS_EQUALS:return"===";case s.EXCLAMATION_EQUALS_EQUALS:return"!==";case s.PLUS:return"+";case s.MINUS:return"-";case s.ASTERISK_ASTERISK:return"**";case s.ASTERISK:return"*";case s.SLASH:return"/";case s.PERCENT:return"%";case s.PLUS_PLUS:return"++";case s.MINUS_MINUS:return"--";case s.LESSTHAN_LESSTHAN:return"<<";case s.GREATERTHAN_GREATERTHAN:return">>";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case s.AMPERSAND:return"&";case s.BAR:return"|";case s.CARET:return"^";case s.EXCLAMATION:return"!";case s.TILDE:return"~";case s.AMPERSAND_AMPERSAND:return"&&";case s.BAR_BAR:return"||";case s.EQUALS:return"=";case s.PLUS_EQUALS:return"+=";case s.MINUS_EQUALS:return"-=";case s.ASTERISK_EQUALS:return"*=";case s.ASTERISK_ASTERISK_EQUALS:return"**=";case s.SLASH_EQUALS:return"/=";case s.PERCENT_EQUALS:return"%=";case s.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case s.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case s.AMPERSAND_EQUALS:return"&=";case s.BAR_EQUALS:return"|=";case s.CARET_EQUALS:return"^=";default:return assert(!1),""}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error("source mismatch");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes("@nearfile")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},t.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return"void"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),s=p(n).includes("null"),a=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+a+"(): void {"),i.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==p(n)?this.sb.push(" let result: "+p(n)+" = "+a+"("):this.sb.push(" "+a+"("),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==p(n)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+r+">() || isNullable<"+r+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+r+">(encoder, result"+(s?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+a+" as "+a+" }\n")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+="<"+e.typeParameters.map(p).join(", ")+">"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf("}")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var r=t.typeName(n);i+="\n static decode(json: Uint8Array): "+r+" {\n let value = instantiate<"+r+">(); // Allocate without constructor\n value.decode(JSON.parse(json));\n return value;\n }\n\n decode(obj: Obj): "+r+" {\n "+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,"this."+t+' = obj.has("'+t+'") ? ')+": this."+t+";"})}(n).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return"encode<"+t+">(encoder, this."+i+', "'+i+'");'})}(n).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return i});return this.sb.concat(i).join("\n")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=""),t+"decode<"+p(e.type)+'>(obj, "'+p(e.name)+'")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf("\n")).includes("out");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t("out/"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?"":"./")+n.normalizedPath,h(n))})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(t.Feature||(t.Feature={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(t.Target||(t.Target={}))},function(e,t,i){"use strict";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),""}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE="",t.COLOR_YELLOW="",t.COLOR_RED="",t.COLOR_RESET="",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace("{0}",n)),null!=s&&(o=o.replace("{1}",s)),null!=a&&(o=o.replace("{2}",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:"."}function a(e){var t=e.length;if(t<=1){if(0==t)return".";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return"."}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith("std/")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=" ",r=" ",s=" ";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){"use strict";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i")}e.isNullable&&n.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?"((":"(");var n=e.explicitThisType;n&&(i.push("this: "),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(", "),this.serializeParameter(r[0]);for(var a=1;a "),this.visitTypeNode(o)):i.push(") => void"),t&&i.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(" extends "),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push("="),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push("[");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(" as "),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(" "),t.push(a.operatorTokenToString(e.operator)),t.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push("<"),this.visitTypeNode(i[0]);for(var r=1;r(")}}else t.push("(");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push("\\0"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\b");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\t");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\n");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\v");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\f");break;case 13:s>n&&i.push(e.substring(n,s)),i.push("\\r"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push("\\'"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push("\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push("/"),t.push(e.pattern),t.push("/"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push("("),this.visitNode(e.expression),t.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(" ? "),this.visitNode(e.ifThen),t.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push("\n"):t.push(";\n")}else t.push(";\n")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push("{\n");for(var r=++this.indentLevel,a=0;a")}var _=e.extendsType;_&&(u.push(" extends "),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(" implements "),this.visitTypeNode(p[0]);for(a=1;a")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push("(");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push("this: "),this.visitTypeNode(_)),c){_&&t.push(", "),this.serializeParameter(u[0]);for(o=1;o "),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(" => "),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(")"):(t.push("): "),this.visitTypeNode(h)),p&&(t.push(" "),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push("if ("),this.visitNode(e.condition),t.push(") ");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(";\n");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(" else "):t.push("else "),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(" as "),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push("import ");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push("{\n");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o")}var u=e.extendsType;u&&(a.push(" extends "),this.visitTypeNode(u)),a.push(" {\n");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n")}}r.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push("!"),t&&(i.push(": "),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(" = "),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name="UnreachableError",r.prototype.message="unreachable",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name="AssertionError",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return"number"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return"object"==typeof e||"string"==typeof e},t.isFunction=function(e){return"function"==typeof e},t.isString=function(e){return"string"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return A;if("number"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error("division by zero");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&"function"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])}); \ No newline at end of file diff --git a/bindings/src/index.ts b/bindings/src/index.ts index 6bf078bf48..e086977784 100644 --- a/bindings/src/index.ts +++ b/bindings/src/index.ts @@ -109,7 +109,6 @@ class NEARBindingsBuilder extends BaseVisitor { visitClassDeclaration(node: ClassDeclaration): void { if (this.exportedClasses.has(toString(node.name))) return; - this.generateHandler(node); this.exportedClasses.set(toString(node.name), node); } @@ -131,36 +130,6 @@ class NEARBindingsBuilder extends BaseVisitor { this.wrappedFuncs.add(toString(node.name)); } - private generateArgsParser(node: FunctionDeclaration): void { - var signature = node.signature; - let name = toString(node.name); - var args: SimpleField[] = signature.parameters.map(param => { - let name = toString(param.name); - let type = param.type; - return { name, - type, - isGeneric: node.typeParameters != null && node.typeParameters.some(T => toString(T) == toString(type)) - }; - }); - - this.sb.push(` -class __near_ArgsParser_${name} extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_ArgsParser_${name}>; - handledRoot: boolean = false;`); - if (args.length > 0) { - args.forEach(arg => { - this.sb.push( -` __near_param_${arg.name}: ${this.typeName(arg.type)};` - ); - }); - this.generateHandlerMethods("this.__near_param_", args); - } else { - this.generateHandlerMethods("this.__near_param_", []); - } - this.sb.push(`}`); - } - /* Create a wrapper function that will be export in the function's place. */ @@ -184,8 +153,7 @@ function __wrapper_${name}(): void {`); } let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); - const obj: Obj = JSON.parse(json); - `); + const obj: Obj = JSON.parse(json);`); } if (toString(returnType) !== "void") { this.sb.push( @@ -218,175 +186,7 @@ function __wrapper_${name}(): void {`); export { __wrapper_${name} as ${name} } `); } - - private generateHandlerMethods( - valuePrefix: string, - fields: SimpleField[] - ): void { - var fieldsWithTypes = (types: string[]): SimpleField[] => - fields.filter(field => - types.indexOf(this.typeName(field.type)) != -1 || field.isGeneric); - - this.generateBasicSetterHandlers( - valuePrefix, - "Integer", - "i64", - fieldsWithTypes(["i32", "u32"]) - ); - this.generateBasicSetterHandlers( - valuePrefix, - "String", - "string", - fieldsWithTypes(["string", "i64", "u64", "Uint8Array", "u128"]) - ); - this.generateBasicSetterHandlers( - valuePrefix, - "Boolean", - "bool", - fieldsWithTypes(["bool"]) - ); - - var nonBasicFields = fields.filter(field => isReference(field.type) || field.isGeneric); - - this.sb.push(` setNull(name: string): void {`); - nonBasicFields.forEach(field => { - this.sb.push( -` if (name == "${field.name}") {`); - let setter = `${valuePrefix}${field.name} = <${this.typeName(field.type)}>null`; - if (field.isGeneric) { - this.sb.push( -` if (isNullable<${this.typeName(field.type)}>()){ - ${setter} - return; - }`); - } else { - this.sb.push( -` ${setter} - return;`); - } - this.sb.push( -` }`); - }); - this.sb.push(` - super.setNull(name); - }`); - - this.sb.push(` - pushObject(name: string): bool {`); - this.sb.push( - `if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - }`); - this.generatePushHandler( - valuePrefix, - nonBasicFields.filter(field => !isArrayType(field.type)) - ); - this.sb.push(` - return super.pushObject(name); - }`); - this.sb.push(` - pushArray(name: string): bool {`); - this.generatePushHandler( - valuePrefix, - nonBasicFields.filter(field => isArrayType(field.type)) - ); - this.sb.push(` - return super.pushArray(name); - }`); - } - - private generateBasicSetterHandlers( - valuePrefix: string, - setterType: string, - setterValueType: string, - matchingFields: SimpleField[] - ) { - if (matchingFields.length > 0) { - this.sb.push( -` set${setterType}(name: string, value: ${setterValueType}): void {` - ); - matchingFields.forEach(field => { - // tslint:disable-next-line: as-variables - let fieldTypeName = this.typeName(field.type); - if (setterType == "String" && fieldTypeName != "string") { - if (fieldTypeName == "Uint8Array") { - this.sb.push( -` if (name == "${field.name}") { - ${valuePrefix}${field.name} = base64.decode(value); - return; - }`); - } else if (fieldTypeName === "u128") { - this.sb.push( -` if (name == "${field.name}") { - ${valuePrefix}${field.name} = u128.fromString(value); - return; - }`); - } else { - let className = this.typeName(field.type) === "u64" ? "U64" : "I64"; - this.sb.push( -` if (name == "${field.name}") { - ${valuePrefix}${field.name} = ${field.isGeneric ? "<" + toString(field.type) + ">" : ""}${className}.parseInt(value); - return; - }`); - } - } else { - this.sb.push( -` if (name == "${field.name}") { - ${valuePrefix}${field.name} = <${fieldTypeName}>value; - return; - }`); - } - if (field.isGeneric) { - this.sb.push( -` assert(is${setterType}<${fieldTypeName}>(), "${field.name} is not a ${setterType}")`); - } - }); - - this.sb.push( -` super.set${setterType}(name, value); - }`); - } - } - - private generatePushHandler(valuePrefix: string, fields: SimpleField[]) { - fields.forEach(field => { - if (!(this.typeName(field.type) in this.typeMapping)) { - let referenceCheck = field.isGeneric ? ` && isReference<${this.typeName(field.type)}>()` : ""; - this.sb.push( -` if (name == "${field.name}"${referenceCheck}) { - ${valuePrefix}${field.name} = decode<${toString(field.type)}>(this.buffer, this.decoder.state); - return false; - }`); - } - }); - } - - private generateHandler(type: TypeNode | ClassDeclaration) { - if (isArrayType(type)) { - return; - } - let typeName = this.typeName(type); - this.sb - .push(`export class __near_JSONHandler_${typeName} extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_${typeName}>; - handledRoot: boolean = false; - value: ${this.typeName(type)}; - - constructor(value_: ${this.typeName(type)}) { - super(); - this.value = value_; - } - `); - - this.generateHandlerMethods("this.value.", this.getFields(type)); - this.sb.push("}\n"); - } - + private typeName(type: TypeNode | ClassDeclaration): string { if (!isClass(type)) { return ASTBuilder.build(type); @@ -436,14 +236,11 @@ export { __wrapper_${name} as ${name} } return value; } - decode(json: Obj): ${className} { - let obj: Obj = json; - ${createDecodeStatements(_class)} + decode(obj: Obj): ${className} { + ${createDecodeStatements(_class).join("\n ")} return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -469,11 +266,11 @@ export { __wrapper_${name} as ${name} } } -function createDecodeStatements(_class: ClassDeclaration): string { - let res = _class.members.filter(isField).map( - (field: FieldDeclaration): string => createDecodeStatement(field, `this.${toString(field.name)} = `) - ).join(";\n "); - return res + (res.length>0 ? ";": "") +function createDecodeStatements(_class: ClassDeclaration): string[] { + return _class.members.filter(isField).map((field: FieldDeclaration): string => { + const name = toString(field.name); + return createDecodeStatement(field, `this.${name} = obj.has("${name}") ? `) + `: this.${name};` + }) } function createDecodeStatement(field: FieldDeclaration | ParameterNode, setterPrefix: string = ""): string { diff --git a/tests/near-bindgen/assembly/test.ts b/tests/near-bindgen/assembly/test.ts index c6d5028671..22b0b3d7ef 100644 --- a/tests/near-bindgen/assembly/test.ts +++ b/tests/near-bindgen/assembly/test.ts @@ -25,10 +25,9 @@ export function runTest(): void { //@ts-ignore const encoded = encoder.serialize(); let obj = JSON.parse(encoded); - logging.log(obj.keys.join(", ")); //@ts-ignore let decoded: FooBar = decode(obj); - logging.log("After: "+ decoded.toJSON()); + logging.log("After: "+ decoded.toJSON()); assert(original.foo == decoded.foo); assert(original.bar == decoded.bar); assert(base64.encode(original.uint8array) == base64.encode(decoded.uint8array)); diff --git a/tests/near-bindgen/out/assembly/hello/main.ts b/tests/near-bindgen/out/assembly/hello/main.ts index 5f73bf6fcb..6c5959d12f 100644 --- a/tests/near-bindgen/out/assembly/hello/main.ts +++ b/tests/near-bindgen/out/assembly/hello/main.ts @@ -14,7 +14,6 @@ function __wrapper_hello(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = hello(decode(obj, "name")); let encoder = new JSONEncoder(); @@ -41,7 +40,6 @@ function __wrapper_setKeyValue(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - setKeyValue(decode(obj, "key"), decode(obj, "value")); } @@ -59,7 +57,6 @@ function __wrapper_getValueByKey(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = getValueByKey(decode(obj, "key")); let encoder = new JSONEncoder(); @@ -86,7 +83,6 @@ function __wrapper_setValue(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = setValue(decode(obj, "value")); let encoder = new JSONEncoder(); @@ -164,7 +160,6 @@ function __wrapper_benchmark_storage(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = benchmark_storage(decode(obj, "n")); let encoder = new JSONEncoder(); @@ -191,7 +186,6 @@ function __wrapper_limited_storage(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = limited_storage(decode(obj, "max_storage")); let encoder = new JSONEncoder(); @@ -218,7 +212,6 @@ function __wrapper_benchmark_sum_n(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = benchmark_sum_n(decode(obj, "n")); let encoder = new JSONEncoder(); @@ -262,7 +255,6 @@ function __wrapper_testSetRemove(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - testSetRemove(decode(obj, "value")); } @@ -280,7 +272,6 @@ function __wrapper_insertStrings(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - insertStrings(decode(obj, "from"), decode(obj, "to")); } @@ -298,7 +289,6 @@ function __wrapper_deleteStrings(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - deleteStrings(decode(obj, "from"), decode(obj, "to")); } @@ -316,7 +306,6 @@ function __wrapper_recurse(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: i32 = recurse(decode(obj, "n")); let encoder = new JSONEncoder(); @@ -343,7 +332,6 @@ function __wrapper_callPromise(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - callPromise(decode(obj, "args")); } @@ -361,7 +349,6 @@ function __wrapper_callbackWithName(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: MyCallbackResult = callbackWithName(decode(obj, "args")); let encoder = new JSONEncoder(); diff --git a/tests/near-bindgen/out/assembly/hello/model.ts b/tests/near-bindgen/out/assembly/hello/model.ts index b2cb77f7ef..df9f3635fe 100644 --- a/tests/near-bindgen/out/assembly/hello/model.ts +++ b/tests/near-bindgen/out/assembly/hello/model.ts @@ -259,17 +259,16 @@ export class PromiseArgs { return value; } - decode(json: Obj): PromiseArgs { - let obj: Obj = json; - this.receiver = decode(obj, "receiver"); - this.methodName = decode(obj, "methodName"); - this.args = decode(obj, "args"); - this.gas = decode(obj, "gas"); - this.balance = decode(obj, "balance"); - this.callback = decode(obj, "callback"); - this.callbackArgs = decode(obj, "callbackArgs"); - this.callbackBalance = decode(obj, "callbackBalance"); - this.callbackGas = decode(obj, "callbackGas"); + decode(obj: Obj): PromiseArgs { + this.receiver = obj.has("receiver") ? decode(obj, "receiver"): this.receiver; + this.methodName = obj.has("methodName") ? decode(obj, "methodName"): this.methodName; + this.args = obj.has("args") ? decode(obj, "args"): this.args; + this.gas = obj.has("gas") ? decode(obj, "gas"): this.gas; + this.balance = obj.has("balance") ? decode(obj, "balance"): this.balance; + this.callback = obj.has("callback") ? decode(obj, "callback"): this.callback; + this.callbackArgs = obj.has("callbackArgs") ? decode(obj, "callbackArgs"): this.callbackArgs; + this.callbackBalance = obj.has("callbackBalance") ? decode(obj, "callbackBalance"): this.callbackBalance; + this.callbackGas = obj.has("callbackGas") ? decode(obj, "callbackGas"): this.callbackGas; return this; } @@ -308,9 +307,8 @@ export class InputPromiseArgs { return value; } - decode(json: Obj): InputPromiseArgs { - let obj: Obj = json; - this.args = decode(obj, "args"); + decode(obj: Obj): InputPromiseArgs { + this.args = obj.has("args") ? decode(obj, "args"): this.args; return this; } @@ -342,10 +340,9 @@ export class MyContractPromiseResult { return value; } - decode(json: Obj): MyContractPromiseResult { - let obj: Obj = json; - this.ok = decode(obj, "ok"); - this.r = decode(obj, "r"); + decode(obj: Obj): MyContractPromiseResult { + this.ok = obj.has("ok") ? decode(obj, "ok"): this.ok; + this.r = obj.has("r") ? decode(obj, "r"): this.r; return this; } @@ -378,10 +375,9 @@ export class MyCallbackResult { return value; } - decode(json: Obj): MyCallbackResult { - let obj: Obj = json; - this.rs = decode>(obj, "rs"); - this.n = decode(obj, "n"); + decode(obj: Obj): MyCallbackResult { + this.rs = obj.has("rs") ? decode>(obj, "rs"): this.rs; + this.n = obj.has("n") ? decode(obj, "n"): this.n; return this; } diff --git a/tests/near-bindgen/out/assembly/model.ts b/tests/near-bindgen/out/assembly/model.ts index 8f73ea3fc0..424abd2680 100644 --- a/tests/near-bindgen/out/assembly/model.ts +++ b/tests/near-bindgen/out/assembly/model.ts @@ -572,22 +572,21 @@ export class FooBar { return value; } - decode(json: Obj): FooBar { - let obj: Obj = json; - this.foo = decode(obj, "foo"); - this.bar = decode(obj, "bar"); - this.u64Val = decode(obj, "u64Val"); - this.u64_zero = decode(obj, "u64_zero"); - this.i64Val = decode(obj, "i64Val"); - this.flag = decode(obj, "flag"); - this.baz = decode(obj, "baz"); - this.uint8array = decode(obj, "uint8array"); - this.arr = decode>>(obj, "arr"); - this.u32Arr = decode>(obj, "u32Arr"); - this.i32Arr = decode>(obj, "i32Arr"); - this.u128Val = decode(obj, "u128Val"); - this.uint8arrays = decode>(obj, "uint8arrays"); - this.u64Arr = decode>(obj, "u64Arr"); + decode(obj: Obj): FooBar { + this.foo = obj.has("foo") ? decode(obj, "foo"): this.foo; + this.bar = obj.has("bar") ? decode(obj, "bar"): this.bar; + this.u64Val = obj.has("u64Val") ? decode(obj, "u64Val"): this.u64Val; + this.u64_zero = obj.has("u64_zero") ? decode(obj, "u64_zero"): this.u64_zero; + this.i64Val = obj.has("i64Val") ? decode(obj, "i64Val"): this.i64Val; + this.flag = obj.has("flag") ? decode(obj, "flag"): this.flag; + this.baz = obj.has("baz") ? decode(obj, "baz"): this.baz; + this.uint8array = obj.has("uint8array") ? decode(obj, "uint8array"): this.uint8array; + this.arr = obj.has("arr") ? decode>>(obj, "arr"): this.arr; + this.u32Arr = obj.has("u32Arr") ? decode>(obj, "u32Arr"): this.u32Arr; + this.i32Arr = obj.has("i32Arr") ? decode>(obj, "i32Arr"): this.i32Arr; + this.u128Val = obj.has("u128Val") ? decode(obj, "u128Val"): this.u128Val; + this.uint8arrays = obj.has("uint8arrays") ? decode>(obj, "uint8arrays"): this.uint8arrays; + this.u64Arr = obj.has("u64Arr") ? decode>(obj, "u64Arr"): this.u64Arr; return this; } @@ -633,11 +632,10 @@ export class Nullables { return value; } - decode(json: Obj): Nullables { - let obj: Obj = json; - this.str = decode(obj, "str"); - this.u128 = decode(obj, "u128"); - this.uint8Array = decode(obj, "uint8Array"); + decode(obj: Obj): Nullables { + this.str = obj.has("str") ? decode(obj, "str"): this.str; + this.u128 = obj.has("u128") ? decode(obj, "u128"): this.u128; + this.uint8Array = obj.has("uint8Array") ? decode(obj, "uint8Array"): this.uint8Array; return this; } @@ -670,9 +668,8 @@ export class ContainerClass { return value; } - decode(json: Obj): ContainerClass { - let obj: Obj = json; - this.foobar = decode(obj, "foobar"); + decode(obj: Obj): ContainerClass { + this.foobar = obj.has("foobar") ? decode(obj, "foobar"): this.foobar; return this; } @@ -703,9 +700,8 @@ export class AnotherContainerClass { return value; } - decode(json: Obj): AnotherContainerClass { - let obj: Obj = json; - this.foobars = decode>>(obj, "foobars"); + decode(obj: Obj): AnotherContainerClass { + this.foobars = obj.has("foobars") ? decode>>(obj, "foobars"): this.foobars; return this; } @@ -742,15 +738,14 @@ export class PromiseArgs { return value; } - decode(json: Obj): PromiseArgs { - let obj: Obj = json; - this.receiver = decode(obj, "receiver"); - this.methodName = decode(obj, "methodName"); - this.args = decode(obj, "args"); - this.balance = decode(obj, "balance"); - this.callback = decode(obj, "callback"); - this.callbackArgs = decode(obj, "callbackArgs"); - this.callbackBalance = decode(obj, "callbackBalance"); + decode(obj: Obj): PromiseArgs { + this.receiver = obj.has("receiver") ? decode(obj, "receiver"): this.receiver; + this.methodName = obj.has("methodName") ? decode(obj, "methodName"): this.methodName; + this.args = obj.has("args") ? decode(obj, "args"): this.args; + this.balance = obj.has("balance") ? decode(obj, "balance"): this.balance; + this.callback = obj.has("callback") ? decode(obj, "callback"): this.callback; + this.callbackArgs = obj.has("callbackArgs") ? decode(obj, "callbackArgs"): this.callbackArgs; + this.callbackBalance = obj.has("callbackBalance") ? decode(obj, "callbackBalance"): this.callbackBalance; return this; } @@ -788,10 +783,9 @@ export class MyContractPromiseResult { return value; } - decode(json: Obj): MyContractPromiseResult { - let obj: Obj = json; - this.ok = decode(obj, "ok"); - this.r = decode(obj, "r"); + decode(obj: Obj): MyContractPromiseResult { + this.ok = obj.has("ok") ? decode(obj, "ok"): this.ok; + this.r = obj.has("r") ? decode(obj, "r"): this.r; return this; } @@ -824,10 +818,9 @@ export class MyCallbackResult { return value; } - decode(json: Obj): MyCallbackResult { - let obj: Obj = json; - this.rs = decode>(obj, "rs"); - this.n = decode(obj, "n"); + decode(obj: Obj): MyCallbackResult { + this.rs = obj.has("rs") ? decode>(obj, "rs"): this.rs; + this.n = obj.has("n") ? decode(obj, "n"): this.n; return this; } @@ -859,9 +852,8 @@ export class Generic { return value; } - decode(json: Obj): Generic { - let obj: Obj = json; - this.value = decode(obj, "value"); + decode(obj: Obj): Generic { + this.value = obj.has("value") ? decode(obj, "value"): this.value; return this; } diff --git a/tests/near-bindgen/out/assembly/test.ts b/tests/near-bindgen/out/assembly/test.ts index a23b7e6911..9af9add842 100644 --- a/tests/near-bindgen/out/assembly/test.ts +++ b/tests/near-bindgen/out/assembly/test.ts @@ -14,7 +14,6 @@ function __wrapper_convertFoobars(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: Array = convertFoobars(decode>(obj, "foobars")); let encoder = new JSONEncoder(); @@ -41,7 +40,6 @@ function __wrapper_getStringArrayLength(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: i32 = getStringArrayLength(decode>(obj, "arr")); let encoder = new JSONEncoder(); @@ -68,7 +66,6 @@ function __wrapper_rewrapFoobar(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: AnotherContainerClass = rewrapFoobar(decode(obj, "container")); let encoder = new JSONEncoder(); @@ -95,7 +92,6 @@ function __wrapper_unwrapFoobar(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: FooBar = unwrapFoobar(decode(obj, "container")); let encoder = new JSONEncoder(); @@ -160,9 +156,8 @@ export function runTest(): void { logging.log("Before: " + encoder.toString()); const encoded = encoder.serialize(); let obj = JSON.parse(encoded); - logging.log(obj.keys.join(", ")); let decoded: FooBar = decode(obj); - logging.log("After: " + decoded.toJSON()); + logging.log("After: " + decoded.toJSON()); assert(original.foo == decoded.foo); assert(original.bar == decoded.bar); assert(base64.encode(original.uint8array) == base64.encode(decoded.uint8array)); diff --git a/tests/near-bindgen/out/hello.wat b/tests/near-bindgen/out/hello.wat index a2853c6254..893bef7e60 100644 --- a/tests/near-bindgen/out/hello.wat +++ b/tests/near-bindgen/out/hello.wat @@ -112,68 +112,65 @@ (data (i32.const 2288) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00a\00m\00e\00") (data (i32.const 2312) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") (data (i32.const 2368) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 2408) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00K\00e\00y\00:\00 \00") - (data (i32.const 2440) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00 \00n\00o\00t\00 \00f\00o\00u\00n\00d\00") - (data (i32.const 2480) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00~\00l\00i\00b\00/\00n\00e\00a\00r\00E\00n\00t\00r\00y\00.\00t\00s\00") - (data (i32.const 2536) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00V\00a\00l\00u\00e\00 \00w\00i\00t\00h\00 \00K\00e\00y\00:\00 \00") - (data (i32.const 2584) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00 \00o\00r\00 \00n\00u\00l\00l\00") - (data (i32.const 2648) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00h\00e\00l\00l\00o\00 \00") - (data (i32.const 2680) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\"\00") - (data (i32.const 2704) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\\\00") - (data (i32.const 2728) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00b\00") - (data (i32.const 2752) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00n\00") - (data (i32.const 2776) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00r\00") - (data (i32.const 2800) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00t\00") - (data (i32.const 2824) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00U\00n\00s\00u\00p\00p\00o\00r\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00c\00o\00d\00e\00:\00 \00") - (data (i32.const 2912) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 3328) "\10\00\00\00\01\00\00\00\18\00\00\00\10\00\00\00p\0b\00\00p\0b\00\00\90\01\00\00d\00\00\00") - (data (i32.const 3360) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00e\00n\00c\00o\00d\00e\00r\00.\00t\00s\00") - (data (i32.const 3448) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\00y\00") - (data (i32.const 3472) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00v\00a\00l\00u\00e\00") - (data (i32.const 3504) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00h\00e\00l\00l\00o\00/\00m\00a\00i\00n\00.\00t\00s\00") - (data (i32.const 3568) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\001\002\003\00") - (data (i32.const 3600) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00 \00w\00i\00t\00h\00 \00t\00y\00p\00e\00 \00") - (data (i32.const 3640) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\003\002\00") - (data (i32.const 3664) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00s\00 \00n\00o\00t\00 \00n\00u\00l\00l\00a\00b\00l\00e\00.\00") - (data (i32.const 3712) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00I\00n\00t\00e\00g\00e\00r\00") - (data (i32.const 3768) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00m\00a\00x\00_\00s\00t\00o\00r\00a\00g\00e\00") - (data (i32.const 3808) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\006\004\00") - (data (i32.const 3832) "~\00\00\00\01\00\00\00\01\00\00\00~\00\00\00 \00i\00s\00 \00a\00n\00 \006\004\00-\00b\00i\00t\00 \00i\00n\00t\00e\00g\00e\00r\00 \00a\00n\00d\00 \00i\00s\00 \00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00b\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00a\00s\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 3976) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00l\00o\00o\00o\00o\00g\001\00") - (data (i32.const 4008) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00l\00o\00o\00o\00o\00g\002\00") - (data (i32.const 4040) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00H\00i\00") - (data (i32.const 4064) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") - (data (i32.const 4088) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00t\00e\00m\00 \00m\00u\00s\00t\00 \00b\00e\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 4144) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00r\00o\00m\00") - (data (i32.const 4168) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00t\00o\00") - (data (i32.const 4192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") - (data (i32.const 4216) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00r\00g\00s\00") - (data (i32.const 4240) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00P\00r\00o\00m\00i\00s\00e\00A\00r\00g\00s\00") - (data (i32.const 4280) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00o\00b\00j\00e\00c\00t\00 \00o\00r\00 \00n\00u\00l\00l\00") - (data (i32.const 4352) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00r\00e\00c\00e\00i\00v\00e\00r\00") - (data (i32.const 4384) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00t\00h\00o\00d\00N\00a\00m\00e\00") - (data (i32.const 4424) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00g\00a\00s\00") - (data (i32.const 4448) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00a\00l\00a\00n\00c\00e\00") - (data (i32.const 4480) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00") - (data (i32.const 4512) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00A\00r\00g\00s\00") - (data (i32.const 4552) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00B\00a\00l\00a\00n\00c\00e\00") - (data (i32.const 4600) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00G\00a\00s\00") - (data (i32.const 4640) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00r\00s\00") - (data (i32.const 4664) "f\00\00\00\01\00\00\00\01\00\00\00f\00\00\00A\00r\00r\00a\00y\00<\00a\00s\00s\00e\00m\00b\00l\00y\00/\00h\00e\00l\00l\00o\00/\00m\00o\00d\00e\00l\00/\00M\00y\00C\00o\00n\00t\00r\00a\00c\00t\00P\00r\00o\00m\00i\00s\00e\00R\00e\00s\00u\00l\00t\00>\00") - (data (i32.const 4784) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00 \00i\00s\00 \00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00b\00e\00 \00a\00n\00 \00a\00r\00r\00a\00y\00") - (data (i32.const 4856) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00a\00r\00r\00a\00y\00 \00o\00r\00 \00n\00u\00l\00l\00.\00") - (data (i32.const 4928) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00M\00y\00C\00o\00n\00t\00r\00a\00c\00t\00P\00r\00o\00m\00i\00s\00e\00R\00e\00s\00u\00l\00t\00") - (data (i32.const 4992) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00o\00k\00") - (data (i32.const 5016) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l\00") - (data (i32.const 5040) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 5088) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00M\00y\00C\00a\00l\00l\00b\00a\00c\00k\00R\00e\00s\00u\00l\00t\00") - (data (i32.const 5136) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00a\00s\00t\00R\00e\00s\00u\00l\00t\00") - (data (i32.const 5176) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00i\00t\00e\00m\00") - (data (i32.const 5200) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00l\00o\00g\001\00") - (data (i32.const 5224) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00l\00o\00g\002\00") - (data (i32.const 5248) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00l\00o\00g\00 \00b\00e\00f\00o\00r\00e\00 \00a\00s\00s\00e\00r\00t\00") - (data (i32.const 5304) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00f\00a\00i\00l\00") - (data (i32.const 5352) "!\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\98 A\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\0b\00\00\00\10\00\00\00\0c\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\93\04\00\00\02\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\00\00\00\00\93\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\83 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00") + (data (i32.const 2408) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00V\00a\00l\00u\00e\00 \00w\00i\00t\00h\00 \00K\00e\00y\00:\00 \00") + (data (i32.const 2456) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00 \00o\00r\00 \00n\00u\00l\00l\00") + (data (i32.const 2520) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00~\00l\00i\00b\00/\00n\00e\00a\00r\00E\00n\00t\00r\00y\00.\00t\00s\00") + (data (i32.const 2576) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00h\00e\00l\00l\00o\00 \00") + (data (i32.const 2608) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\"\00") + (data (i32.const 2632) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\\\00") + (data (i32.const 2656) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00b\00") + (data (i32.const 2680) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00n\00") + (data (i32.const 2704) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00r\00") + (data (i32.const 2728) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00t\00") + (data (i32.const 2752) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00U\00n\00s\00u\00p\00p\00o\00r\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00c\00o\00d\00e\00:\00 \00") + (data (i32.const 2840) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 3256) "\10\00\00\00\01\00\00\00\18\00\00\00\10\00\00\00(\0b\00\00(\0b\00\00\90\01\00\00d\00\00\00") + (data (i32.const 3288) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00e\00n\00c\00o\00d\00e\00r\00.\00t\00s\00") + (data (i32.const 3376) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\00y\00") + (data (i32.const 3400) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00v\00a\00l\00u\00e\00") + (data (i32.const 3432) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00h\00e\00l\00l\00o\00/\00m\00a\00i\00n\00.\00t\00s\00") + (data (i32.const 3496) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\001\002\003\00") + (data (i32.const 3528) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00K\00e\00y\00:\00 \00") + (data (i32.const 3560) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00 \00w\00i\00t\00h\00 \00t\00y\00p\00e\00 \00") + (data (i32.const 3600) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\003\002\00") + (data (i32.const 3624) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00s\00 \00n\00o\00t\00 \00n\00u\00l\00l\00a\00b\00l\00e\00.\00") + (data (i32.const 3672) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00I\00n\00t\00e\00g\00e\00r\00") + (data (i32.const 3728) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00m\00a\00x\00_\00s\00t\00o\00r\00a\00g\00e\00") + (data (i32.const 3768) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\006\004\00") + (data (i32.const 3792) "~\00\00\00\01\00\00\00\01\00\00\00~\00\00\00 \00i\00s\00 \00a\00n\00 \006\004\00-\00b\00i\00t\00 \00i\00n\00t\00e\00g\00e\00r\00 \00a\00n\00d\00 \00i\00s\00 \00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00b\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00a\00s\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 3936) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00l\00o\00o\00o\00o\00g\001\00") + (data (i32.const 3968) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00l\00o\00o\00o\00o\00g\002\00") + (data (i32.const 4000) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00H\00i\00") + (data (i32.const 4024) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") + (data (i32.const 4048) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00t\00e\00m\00 \00m\00u\00s\00t\00 \00b\00e\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 4104) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00r\00o\00m\00") + (data (i32.const 4128) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00t\00o\00") + (data (i32.const 4152) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") + (data (i32.const 4176) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00r\00g\00s\00") + (data (i32.const 4200) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00P\00r\00o\00m\00i\00s\00e\00A\00r\00g\00s\00") + (data (i32.const 4240) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00o\00b\00j\00e\00c\00t\00 \00o\00r\00 \00n\00u\00l\00l\00") + (data (i32.const 4312) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00r\00e\00c\00e\00i\00v\00e\00r\00") + (data (i32.const 4344) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00t\00h\00o\00d\00N\00a\00m\00e\00") + (data (i32.const 4384) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00g\00a\00s\00") + (data (i32.const 4408) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00a\00l\00a\00n\00c\00e\00") + (data (i32.const 4440) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00") + (data (i32.const 4472) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00A\00r\00g\00s\00") + (data (i32.const 4512) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00B\00a\00l\00a\00n\00c\00e\00") + (data (i32.const 4560) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00c\00a\00l\00l\00b\00a\00c\00k\00G\00a\00s\00") + (data (i32.const 4600) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00r\00s\00") + (data (i32.const 4624) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00a\00r\00r\00a\00y\00 \00o\00r\00 \00n\00u\00l\00l\00.\00") + (data (i32.const 4696) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00M\00y\00C\00o\00n\00t\00r\00a\00c\00t\00P\00r\00o\00m\00i\00s\00e\00R\00e\00s\00u\00l\00t\00") + (data (i32.const 4760) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00o\00k\00") + (data (i32.const 4784) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l\00") + (data (i32.const 4808) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 4856) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00M\00y\00C\00a\00l\00l\00b\00a\00c\00k\00R\00e\00s\00u\00l\00t\00") + (data (i32.const 4904) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00a\00s\00t\00R\00e\00s\00u\00l\00t\00") + (data (i32.const 4944) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00i\00t\00e\00m\00") + (data (i32.const 4968) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00l\00o\00g\001\00") + (data (i32.const 4992) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00l\00o\00g\002\00") + (data (i32.const 5016) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00l\00o\00g\00 \00b\00e\00f\00o\00r\00e\00 \00a\00s\00s\00e\00r\00t\00") + (data (i32.const 5072) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00f\00a\00i\00l\00") + (data (i32.const 5120) "!\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\98 A\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\0b\00\00\00\10\00\00\00\0c\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\93\04\00\00\02\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\00\00\00\00\93\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\83 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -206,12 +203,10 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/number/U32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/nearEntry/JSON.handler (mut i32) (i32.const 0)) - (global $~lib/nearEntry/JSON.decoder (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/rt/__rtti_base i32 (i32.const 5352)) - (global $~lib/heap/__heap_base i32 (i32.const 5620)) + (global $~lib/rt/__rtti_base i32 (i32.const 5120)) + (global $~lib/heap/__heap_base i32 (i32.const 5388)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -817,7 +812,49 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 15 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -829,7 +866,7 @@ end local.get $0 ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -844,7 +881,7 @@ local.set $0 local.get $0 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -875,7 +912,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Handler#constructor (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#constructor (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -905,58 +942,7 @@ i32.store local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 15 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $start:~lib/nearEntry (; 48 ;) (type $FUNCSIG$v) - i32.const 0 - call $~lib/nearEntry/Handler#constructor - global.set $~lib/nearEntry/JSON.handler - i32.const 0 - global.get $~lib/nearEntry/JSON.handler - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor - global.set $~lib/nearEntry/JSON.decoder - ) - (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -984,15 +970,15 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Uint8Array#get:length (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#__get (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -1011,7 +997,7 @@ i32.add i32.load8_u ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.load offset=4 @@ -1032,7 +1018,7 @@ i32.load offset=4 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 i32.const 9 i32.eq @@ -1058,7 +1044,7 @@ i32.eq end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1092,7 +1078,7 @@ local.get $1 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 55 ;) (type $FUNCSIG$vi) (param $0 i32) block $break|0 loop $continue|0 local.get $0 @@ -1109,7 +1095,7 @@ unreachable end ) - (func $~lib/nearEntry/Value#constructor (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value#constructor (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1121,7 +1107,7 @@ end local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 @@ -1145,7 +1131,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 59 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1185,7 +1171,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1217,7 +1203,7 @@ call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -1248,7 +1234,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Obj#constructor (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Obj#constructor (; 61 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1291,11 +1277,11 @@ i32.store offset=4 local.get $0 ) - (func $~lib/nearEntry/Value.Object (; 63 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Object (; 62 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Obj#constructor ) - (func $~lib/rt/__instanceof (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1332,6 +1318,10 @@ end i32.const 0 ) + (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) (func $~lib/util/memory/memcpy (; 65 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2823,11 +2813,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2837,7 +2823,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -2868,7 +2854,7 @@ local.get $1 call $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get ) - (func $~lib/nearEntry/Handler#get:peek (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#get:peek (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -2878,7 +2864,7 @@ i32.sub call $~lib/array/Array<~lib/nearEntry/Value>#__get ) - (func $~lib/util/hash/hashStr (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2929,7 +2915,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/string/compareImpl (; 75 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 74 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -2994,7 +2980,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/string/String.__eq (; 76 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3067,7 +3053,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -3127,7 +3113,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3155,7 +3141,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#push (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3191,7 +3177,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 80 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3353,7 +3339,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3484,7 +3470,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Obj#set (; 82 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Obj#set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3513,7 +3499,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Arr#push (; 83 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Arr#push (; 82 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3525,7 +3511,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#addValue (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#addValue (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3553,6 +3539,15 @@ else i32.const 0 end + if (result i32) + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 0 + i32.eq + else + i32.const 0 + end if local.get $0 i32.load @@ -3618,7 +3613,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#pushObject (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushObject (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3643,7 +3638,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 86 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 85 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3655,7 +3650,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/string/String.UTF8.decodeUnsafe (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.decodeUnsafe (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3884,7 +3879,7 @@ call $~lib/rt/stub/__realloc call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3903,7 +3898,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load offset=8 local.get $1 @@ -3912,7 +3907,7 @@ i32.sub call $~lib/assemblyscript-json/util/index/Buffer.readString ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -3932,11 +3927,11 @@ local.get $2 call $~lib/assemblyscript-json/decoder/DecoderState#readString ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 91 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4171,7 +4166,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $~lib/array/Array<~lib/string/String>#join (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4185,7 +4180,7 @@ local.get $2 return ) - (func $~lib/rt/__allocArray (; 94 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 93 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -4223,7 +4218,7 @@ end local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4307,7 +4302,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/string/String.fromCodePoint (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4368,7 +4363,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 96 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -4393,7 +4388,7 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode|trampoline (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -4411,7 +4406,7 @@ local.get $1 call $~lib/string/String.fromCharCode ) - (func $~lib/string/String#concat (; 99 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4487,7 +4482,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String.__concat (; 100 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 99 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -4510,7 +4505,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 100 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4653,7 +4648,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4785,7 +4780,7 @@ end unreachable ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 103 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 102 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4819,7 +4814,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4853,7 +4848,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/nearEntry/Handler#popObject (; 105 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popObject (; 104 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -4866,7 +4861,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4981,7 +4976,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Arr#constructor (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Arr#constructor (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5011,11 +5006,11 @@ i32.store local.get $0 ) - (func $~lib/nearEntry/Value.Array (; 108 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Array (; 107 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Arr#constructor ) - (func $~lib/nearEntry/Handler#pushArray (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushArray (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -5040,7 +5035,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Handler#popArray (; 110 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popArray (; 109 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -5053,7 +5048,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5166,7 +5161,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Str#constructor (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Str#constructor (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -5189,7 +5184,7 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/nearEntry/Value.String (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.String (; 112 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -5202,7 +5197,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/nearEntry/Handler#setString (; 114 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setString (; 113 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5224,7 +5219,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5252,7 +5247,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 116 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 115 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5305,7 +5300,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Bools#constructor (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Bools#constructor (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5322,12 +5317,12 @@ i32.store8 local.get $0 ) - (func $~lib/nearEntry/Value.Bool (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.Bool (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Bools#constructor ) - (func $~lib/nearEntry/Handler#setBoolean (; 119 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setBoolean (; 118 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5344,7 +5339,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 120 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 184 @@ -5387,7 +5382,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Num#constructor (; 121 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/nearEntry/Num#constructor (; 120 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 if (result i32) local.get $0 @@ -5404,12 +5399,12 @@ i64.store local.get $0 ) - (func $~lib/nearEntry/Value.Number (; 122 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/nearEntry/Value.Number (; 121 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Num#constructor ) - (func $~lib/nearEntry/Handler#setInteger (; 123 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/nearEntry/Handler#setInteger (; 122 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5426,7 +5421,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i64) (local $2 i64) (local $3 i32) @@ -5506,7 +5501,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Null#constructor (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Null#constructor (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5520,11 +5515,11 @@ local.set $0 local.get $0 ) - (func $~lib/nearEntry/Value.Null (; 126 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Null (; 125 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Null#constructor ) - (func $~lib/nearEntry/Handler#setNull (; 127 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Handler#setNull (; 126 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5540,7 +5535,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 216 @@ -5562,7 +5557,7 @@ end i32.const 0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace @@ -5608,7 +5603,7 @@ call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 129 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $1 @@ -5669,58 +5664,63 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#reset (; 131 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - i32.load - call $~lib/array/Array<~lib/nearEntry/Value>#get:length - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 - local.get $0 - i32.load - call $~lib/array/Array<~lib/nearEntry/Value>#pop - call $~lib/rt/stub/__release - br $continue|0 - end - unreachable - end - ) - (func $~lib/nearEntry/JSON.parse (; 132 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/JSON.parse (; 130 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop + i32.const 0 + i32.const 0 + call $~lib/nearEntry/Handler#constructor + local.tee $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor + local.set $2 + local.get $2 local.get $0 - call $~lib/rt/stub/__retain - local.set $1 - global.get $~lib/nearEntry/JSON.decoder - local.get $1 i32.const 0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize - global.get $~lib/nearEntry/JSON.handler + local.get $2 + i32.load call $~lib/nearEntry/Handler#get:peek - local.tee $2 + local.tee $3 call $~lib/rt/stub/__retain - local.set $3 - global.get $~lib/nearEntry/JSON.handler - call $~lib/nearEntry/Handler#reset - local.get $3 local.set $4 + local.get $4 + local.set $5 local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + ) + (func $~lib/string/String.__ne (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5763,7 +5763,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/Obj#get (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#get (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5791,7 +5791,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode<~lib/string/String> (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/string/String> (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5816,6 +5816,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -5828,6 +5835,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -5838,18 +5848,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2496 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -5926,15 +5926,15 @@ end i32.eqz if - i32.const 2552 + i32.const 2424 local.get $5 call $~lib/string/String.__concat local.tee $6 - i32.const 2600 + i32.const 2472 call $~lib/string/String.__concat local.tee $4 - i32.const 2496 - i32.const 471 + i32.const 2536 + i32.const 320 i32.const 2 call $~lib/builtins/abort unreachable @@ -5962,13 +5962,13 @@ local.get $4 return ) - (func $assembly/hello/main/hello (; 136 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/hello (; 135 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain drop - i32.const 2664 + i32.const 2592 local.get $0 call $~lib/string/String.__concat local.tee $1 @@ -5980,7 +5980,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#constructor (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -6002,7 +6002,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#push (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -6029,7 +6029,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6076,11 +6076,11 @@ drop local.get $0 ) - (func $~lib/array/Array#get:length (; 140 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -6089,7 +6089,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6108,7 +6108,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -6118,7 +6118,7 @@ i32.sub call $~lib/array/Array#__get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 144 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 143 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -6130,7 +6130,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/array/Array#__unchecked_set (; 145 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 144 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -6140,7 +6140,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 146 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 145 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -6166,26 +6166,7 @@ i32.store offset=12 end ) - (func $~lib/string/String.__ne (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/string/String#substring (; 148 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6292,7 +6273,7 @@ local.get $10 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/decimalCount32 (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -6358,7 +6339,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 150 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 148 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6366,7 +6347,7 @@ (local $7 i32) (local $8 i64) (local $9 i64) - i32.const 3344 + i32.const 3272 i32.load offset=4 local.set $3 block $break|0 @@ -6500,7 +6481,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6555,12 +6536,12 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 152 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6572,7 +6553,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 154 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 152 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6646,7 +6627,7 @@ i32.eq if local.get $0 - i32.const 2696 + i32.const 2624 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else local.get $4 @@ -6656,7 +6637,7 @@ i32.eq if local.get $0 - i32.const 2720 + i32.const 2648 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else local.get $4 @@ -6666,7 +6647,7 @@ i32.eq if local.get $0 - i32.const 2744 + i32.const 2672 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else local.get $4 @@ -6676,7 +6657,7 @@ i32.eq if local.get $0 - i32.const 2768 + i32.const 2696 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else local.get $4 @@ -6686,7 +6667,7 @@ i32.eq if local.get $0 - i32.const 2792 + i32.const 2720 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else local.get $4 @@ -6696,19 +6677,19 @@ i32.eq if local.get $0 - i32.const 2816 + i32.const 2744 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else i32.const 0 i32.eqz if - i32.const 2840 + i32.const 2768 local.get $4 call $~lib/number/I32#toString local.tee $7 call $~lib/string/String.__concat local.tee $8 - i32.const 3376 + i32.const 3304 i32.const 108 i32.const 20 call $~lib/builtins/abort @@ -6751,7 +6732,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 155 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 153 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -6804,7 +6785,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 156 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 154 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -6817,7 +6798,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 157 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 155 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -6835,7 +6816,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode<~lib/string/String> (; 158 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/string/String> (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -6867,13 +6848,13 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.const 816 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/string/String.UTF8.byteLength (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.byteLength (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6996,7 +6977,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/string/String.UTF8.encode (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.encode (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7248,7 +7229,7 @@ call $~lib/rt/stub/__release local.get $6 ) - (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7282,7 +7263,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7294,7 +7275,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/__wrapper_hello (; 164 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_hello (; 162 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7380,7 +7361,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/util/util.toUTF8 (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.toUTF8 (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -7397,7 +7378,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/util/util.stringToBytes (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.stringToBytes (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7427,7 +7408,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/storage/Storage#setString (; 167 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/near-runtime-ts/storage/Storage#setString (; 165 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i64) @@ -7467,7 +7448,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/setKeyValue (; 168 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/main/setKeyValue (; 166 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -7483,7 +7464,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_setKeyValue (; 169 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_setKeyValue (; 167 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7516,11 +7497,11 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 3464 + i32.const 3392 call $~lib/nearEntry/decode<~lib/string/String> local.tee $4 local.get $3 - i32.const 3488 + i32.const 3416 call $~lib/nearEntry/decode<~lib/string/String> local.tee $5 call $assembly/hello/main/setKeyValue @@ -7535,7 +7516,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/storage/Storage#_internalReadBytes (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#_internalReadBytes (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i64) (local $4 i64) @@ -7594,20 +7575,20 @@ end unreachable ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 169 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 173 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 171 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7690,7 +7671,7 @@ local.get $7 call $~lib/rt/stub/__retain ) - (func $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7714,7 +7695,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String.UTF8.decode (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.decode (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -7729,7 +7710,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/near-runtime-ts/util/util.bytesToString (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.bytesToString (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7759,7 +7740,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/near-runtime-ts/storage/Storage#getString (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#getString (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -7777,7 +7758,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/main/getValueByKey (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/getValueByKey (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -7797,7 +7778,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/hello/main/__wrapper_getValueByKey (; 179 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getValueByKey (; 177 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7833,7 +7814,7 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 3464 + i32.const 3392 call $~lib/nearEntry/decode<~lib/string/String> local.tee $4 call $assembly/hello/main/getValueByKey @@ -7883,7 +7864,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/setValue (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/setValue (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -7893,7 +7874,7 @@ call $~lib/near-runtime-ts/storage/Storage#setString local.get $0 ) - (func $assembly/hello/main/__wrapper_setValue (; 181 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_setValue (; 179 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7929,7 +7910,7 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 3488 + i32.const 3416 call $~lib/nearEntry/decode<~lib/string/String> local.tee $4 call $assembly/hello/main/setValue @@ -7979,7 +7960,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/getValue (; 182 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/getValue (; 180 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) global.get $~lib/near-runtime-ts/storage/storage i32.const 2304 @@ -7992,7 +7973,7 @@ end call $~lib/rt/stub/__retain ) - (func $assembly/hello/main/__wrapper_getValue (; 183 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getValue (; 181 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8036,7 +8017,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/storage/Storage#_fetchIter (; 184 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#_fetchIter (; 182 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i64) @@ -8101,7 +8082,7 @@ end local.get $3 ) - (func $~lib/near-runtime-ts/storage/Storage#keys (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#keys (; 183 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -8130,7 +8111,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/near-runtime-ts/storage/Storage#keys|trampoline (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#keys|trampoline (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -8149,7 +8130,7 @@ local.get $2 call $~lib/near-runtime-ts/storage/Storage#keys ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8159,7 +8140,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -8190,7 +8171,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $assembly/hello/main/getAllKeys (; 189 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/getAllKeys (; 187 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8208,8 +8189,8 @@ i32.eqz if i32.const 0 - i32.const 3520 - i32.const 430 + i32.const 3448 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -8223,8 +8204,8 @@ i32.eqz if i32.const 0 - i32.const 3520 - i32.const 431 + i32.const 3448 + i32.const 418 i32.const 2 call $~lib/builtins/abort unreachable @@ -8235,7 +8216,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -8257,7 +8238,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#pop (; 191 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8290,7 +8271,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 192 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 190 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 2072 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -8299,7 +8280,7 @@ call $~lib/array/Array#pop drop ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -8362,7 +8343,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/hello/main/__wrapper_getAllKeys (; 194 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getAllKeys (; 192 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8397,7 +8378,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/benchmark (; 195 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/benchmark (; 193 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 0 @@ -8413,7 +8394,7 @@ local.get $0 call $~lib/number/I32#toString local.tee $1 - i32.const 3584 + i32.const 3512 call $~lib/near-runtime-ts/storage/Storage#setString local.get $0 i32.const 1 @@ -8432,7 +8413,7 @@ i32.const 0 call $~lib/near-runtime-ts/storage/Storage#keys|trampoline ) - (func $assembly/hello/main/__wrapper_benchmark (; 196 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_benchmark (; 194 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8467,7 +8448,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/decode (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8493,6 +8474,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -8505,6 +8493,8 @@ i32.const 0 i32.eq if + i32.const 0 + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8515,18 +8505,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2496 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -8576,21 +8556,21 @@ i32.const 0 i32.eqz if - i32.const 2424 + i32.const 3544 local.get $1 call $~lib/string/String.__concat local.tee $6 - i32.const 3616 + i32.const 3576 call $~lib/string/String.__concat local.tee $4 - i32.const 3656 + i32.const 3616 call $~lib/string/String.__concat local.tee $3 - i32.const 3680 + i32.const 3640 call $~lib/string/String.__concat local.tee $5 - i32.const 2496 - i32.const 504 + i32.const 2536 + i32.const 354 i32.const 4 call $~lib/builtins/abort unreachable @@ -8626,15 +8606,21 @@ end i32.eqz if - i32.const 2552 + i32.const 2424 local.get $1 call $~lib/string/String.__concat local.tee $5 - i32.const 3728 + i32.const 3576 call $~lib/string/String.__concat local.tee $3 - i32.const 2496 - i32.const 526 + i32.const 3616 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3688 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2536 + i32.const 376 i32.const 4 call $~lib/builtins/abort unreachable @@ -8642,21 +8628,25 @@ local.get $2 i64.load i32.wrap_i64 - local.set $4 + local.set $7 local.get $5 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $4 + local.get $7 return ) - (func $~lib/util/string/isSpace (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/string/isSpace (; 196 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 255 @@ -8779,7 +8769,7 @@ end i32.const 0 ) - (func $~lib/util/string/strtol (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtol (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9098,7 +9088,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/number/I32.parseInt (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/I32.parseInt (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -9111,7 +9101,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/util/number/decimalCount64 (; 201 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 199 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -9184,7 +9174,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 202 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 200 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -9196,7 +9186,7 @@ (local $11 i32) (local $12 i64) (local $13 i64) - i32.const 3344 + i32.const 3272 i32.load offset=4 local.set $3 block $break|0 @@ -9311,7 +9301,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 203 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 201 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9376,12 +9366,12 @@ local.get $1 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 204 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 202 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/number/U64#toString (; 205 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/U64#toString (; 203 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9393,7 +9383,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/benchmark_storage (; 206 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/benchmark_storage (; 204 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9468,7 +9458,7 @@ local.get $4 call $~lib/number/U64#toString ) - (func $assembly/hello/main/__wrapper_benchmark_storage (; 207 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_benchmark_storage (; 205 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -9550,7 +9540,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $~lib/util/string/strtol (; 208 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/util/string/strtol (; 206 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -9872,7 +9862,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/number/I64.parseInt (; 209 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/number/I64.parseInt (; 207 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $0 call $~lib/rt/stub/__retain @@ -9885,14 +9875,15 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode (; 210 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/nearEntry/decode (; 208 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) - (local $7 i64) + (local $7 i32) (local $8 i64) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -9911,6 +9902,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -9923,6 +9921,9 @@ i32.const 0 i32.eq if + i32.const 0 + i64.extend_i32_u + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -9933,32 +9934,22 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2496 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 - local.tee $5 - local.get $2 local.tee $6 + local.get $2 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 + local.get $6 local.set $2 local.get $3 call $~lib/rt/stub/__release @@ -9966,27 +9957,27 @@ call $~lib/rt/stub/__release else local.get $0 - local.tee $6 + local.tee $7 local.get $2 local.tee $4 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop local.get $4 call $~lib/rt/stub/__release end - local.get $6 + local.get $7 local.set $2 end local.get $2 - local.tee $6 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -9994,35 +9985,35 @@ i32.const 0 i32.eqz if - i32.const 2424 + i32.const 3544 local.get $1 call $~lib/string/String.__concat - local.tee $6 - i32.const 3616 + local.tee $7 + i32.const 3576 call $~lib/string/String.__concat local.tee $4 - i32.const 3824 + i32.const 3784 call $~lib/string/String.__concat local.tee $3 - i32.const 3680 + i32.const 3640 call $~lib/string/String.__concat - local.tee $5 - i32.const 2496 - i32.const 504 + local.tee $6 + i32.const 2536 + i32.const 354 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 i64.extend_i32_u - local.set $7 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -10030,30 +10021,36 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $5 return end local.get $2 - local.tee $5 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 19 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2552 + i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 3848 + local.tee $6 + i32.const 3576 call $~lib/string/String.__concat local.tee $3 - i32.const 2496 - i32.const 521 + i32.const 3784 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3808 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2536 + i32.const 371 i32.const 6 call $~lib/builtins/abort unreachable @@ -10061,30 +10058,34 @@ local.get $2 i32.load call $~lib/rt/stub/__retain - local.set $4 - local.get $4 + local.set $9 + local.get $9 i32.const 0 call $~lib/number/I64.parseInt - local.set $7 - local.get $5 + local.set $5 + local.get $6 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $5 return ) - (func $~lib/near-runtime-ts/contract/Context#get:storageUsage (; 211 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/near-runtime-ts/contract/Context#get:storageUsage (; 209 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_usage ) - (func $~lib/near-runtime-ts/storage/Storage#delete (; 212 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/near-runtime-ts/storage/Storage#delete (; 210 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -10106,7 +10107,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/limited_storage (; 213 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $assembly/hello/main/limited_storage (; 211 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10156,7 +10157,7 @@ local.get $1 call $~lib/number/I32#toString ) - (func $assembly/hello/main/__wrapper_limited_storage (; 214 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_limited_storage (; 212 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10191,7 +10192,7 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 3784 + i32.const 3744 call $~lib/nearEntry/decode call $assembly/hello/main/limited_storage local.set $4 @@ -10238,7 +10239,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/benchmark_sum_n (; 215 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/benchmark_sum_n (; 213 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i64) i32.const 0 @@ -10268,7 +10269,7 @@ local.get $2 call $~lib/number/U64#toString ) - (func $assembly/hello/main/__wrapper_benchmark_sum_n (; 216 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_benchmark_sum_n (; 214 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10350,7 +10351,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/logging/logging.log (; 217 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/near-runtime-ts/logging/logging.log (; 215 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -10370,15 +10371,15 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/returnHiWithLogs (; 218 ;) (type $FUNCSIG$i) (result i32) - i32.const 3992 + (func $assembly/hello/main/returnHiWithLogs (; 216 ;) (type $FUNCSIG$i) (result i32) + i32.const 3952 call $~lib/near-runtime-ts/logging/logging.log - i32.const 4024 + i32.const 3984 call $~lib/near-runtime-ts/logging/logging.log - i32.const 4056 + i32.const 4016 call $~lib/rt/stub/__retain ) - (func $assembly/hello/main/__wrapper_returnHiWithLogs (; 219 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_returnHiWithLogs (; 217 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10422,29 +10423,29 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/testSetRemove (; 220 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $assembly/hello/main/testSetRemove (; 218 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain drop global.get $~lib/near-runtime-ts/storage/storage - i32.const 4080 + i32.const 4040 local.get $0 call $~lib/near-runtime-ts/storage/Storage#setString global.get $~lib/near-runtime-ts/storage/storage - i32.const 4080 + i32.const 4040 call $~lib/near-runtime-ts/storage/Storage#delete global.get $~lib/near-runtime-ts/storage/storage - i32.const 4080 + i32.const 4040 call $~lib/near-runtime-ts/storage/Storage#getString local.tee $1 i32.const 0 call $~lib/string/String.__eq i32.eqz if - i32.const 4104 - i32.const 3520 - i32.const 494 + i32.const 4064 + i32.const 3448 + i32.const 481 i32.const 2 call $~lib/builtins/abort unreachable @@ -10454,7 +10455,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_testSetRemove (; 221 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_testSetRemove (; 219 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10486,7 +10487,7 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 3488 + i32.const 3416 call $~lib/nearEntry/decode<~lib/string/String> local.tee $4 call $assembly/hello/main/testSetRemove @@ -10499,7 +10500,7 @@ local.get $4 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/buildString (; 222 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/buildString (; 220 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10512,8 +10513,8 @@ i32.eqz if i32.const 0 - i32.const 3520 - i32.const 497 + i32.const 3448 + i32.const 484 i32.const 2 call $~lib/builtins/abort unreachable @@ -10585,7 +10586,7 @@ end local.get $1 ) - (func $~lib/string/String#substr (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substr (; 221 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10657,7 +10658,7 @@ local.get $9 call $~lib/rt/stub/__retain ) - (func $assembly/hello/main/insertStrings (; 224 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/main/insertStrings (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10685,7 +10686,7 @@ i32.const 1520 call $~lib/string/String.__concat local.tee $5 - i32.const 4208 + i32.const 4168 call $~lib/near-runtime-ts/storage/Storage#setString local.get $3 i32.const 1 @@ -10702,7 +10703,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_insertStrings (; 225 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_insertStrings (; 223 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10733,10 +10734,10 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 4160 + i32.const 4120 call $~lib/nearEntry/decode local.get $3 - i32.const 4184 + i32.const 4144 call $~lib/nearEntry/decode call $assembly/hello/main/insertStrings local.get $1 @@ -10746,7 +10747,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/deleteStrings (; 226 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/main/deleteStrings (; 224 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10792,7 +10793,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_deleteStrings (; 227 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_deleteStrings (; 225 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10823,10 +10824,10 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 4160 + i32.const 4120 call $~lib/nearEntry/decode local.get $3 - i32.const 4184 + i32.const 4144 call $~lib/nearEntry/decode call $assembly/hello/main/deleteStrings local.get $1 @@ -10836,7 +10837,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/recurse (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/recurse (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 i32.le_s @@ -10851,7 +10852,7 @@ i32.const 1 i32.add ) - (func $~lib/util/number/itoa64 (; 229 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 227 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10938,12 +10939,12 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 230 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 228 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/number/I64#toString (; 231 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/I64#toString (; 229 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -10955,7 +10956,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 232 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 230 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) local.get $0 local.get $1 @@ -10965,7 +10966,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 233 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 231 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 call $~lib/rt/stub/__retain drop @@ -10978,7 +10979,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -10997,7 +10998,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/main/__wrapper_recurse (; 235 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_recurse (; 233 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -11068,7 +11069,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $assembly/hello/model/PromiseArgs#constructor (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#constructor (; 234 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -11107,101 +11108,186 @@ i32.store offset=32 local.get $0 ) - (func $assembly/hello/model/PromiseArgs#decode (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#has (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop + local.get $0 + i32.load local.get $1 - call $~lib/rt/stub/__retain + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/hello/model/PromiseArgs#decode (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 4328 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4328 + call $~lib/nearEntry/decode<~lib/string/String> + else + local.get $0 + i32.load + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 4368 - call $~lib/nearEntry/decode<~lib/string/String> - local.set $4 - local.get $3 i32.load call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store local.get $0 - local.tee $4 - local.get $2 - i32.const 4400 - call $~lib/nearEntry/decode<~lib/string/String> - local.set $3 - local.get $4 + local.tee $3 + local.get $1 + i32.const 4360 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4360 + call $~lib/nearEntry/decode<~lib/string/String> + else + local.get $0 + i32.load offset=4 + call $~lib/rt/stub/__retain + end + local.set $2 + local.get $3 i32.load offset=4 call $~lib/rt/stub/__release - local.get $3 + local.get $2 i32.store offset=4 local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 4192 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4192 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load offset=8 + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 4232 - call $~lib/nearEntry/decode - local.set $4 - local.get $3 i32.load offset=8 call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store offset=8 local.get $0 - local.get $2 - i32.const 4440 - call $~lib/nearEntry/decode + local.get $1 + i32.const 4400 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4400 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load offset=12 + end i32.store offset=12 local.get $0 - local.get $2 - i32.const 4464 - call $~lib/nearEntry/decode + local.get $1 + i32.const 4424 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4424 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load offset=16 + end i32.store offset=16 local.get $0 - local.tee $4 - local.get $2 - i32.const 4496 - call $~lib/nearEntry/decode<~lib/string/String> - local.set $3 - local.get $4 + local.tee $3 + local.get $1 + i32.const 4456 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4456 + call $~lib/nearEntry/decode<~lib/string/String> + else + local.get $0 + i32.load offset=20 + call $~lib/rt/stub/__retain + end + local.set $2 + local.get $3 i32.load offset=20 call $~lib/rt/stub/__release - local.get $3 + local.get $2 i32.store offset=20 local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 4488 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4488 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load offset=24 + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 4528 - call $~lib/nearEntry/decode - local.set $4 - local.get $3 i32.load offset=24 call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store offset=24 local.get $0 - local.get $2 - i32.const 4568 - call $~lib/nearEntry/decode + local.get $1 + i32.const 4528 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4528 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load offset=28 + end i32.store offset=28 local.get $0 - local.get $2 - i32.const 4616 - call $~lib/nearEntry/decode + local.get $1 + i32.const 4576 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4576 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load offset=32 + end i32.store offset=32 local.get $0 call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $3 ) - (func $~lib/nearEntry/decode (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11209,6 +11295,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -11227,6 +11315,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -11239,6 +11334,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -11249,18 +11347,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2496 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -11307,112 +11395,105 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 3616 - call $~lib/string/String.__concat - local.tee $4 - i32.const 4256 - call $~lib/string/String.__concat - local.tee $3 - i32.const 3680 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2496 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 + local.set $7 local.get $2 - local.tee $5 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 - i32.const 8 - call $~lib/rt/__instanceof + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 8 + call $~lib/rt/__instanceof end i32.eqz if - i32.const 2552 + i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 4296 + local.tee $6 + i32.const 3576 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4216 call $~lib/string/String.__concat local.tee $3 - i32.const 2496 - i32.const 543 + i32.const 4256 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2536 + i32.const 399 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/hello/model/PromiseArgs#constructor - local.tee $4 - local.tee $7 - local.get $8 - local.tee $6 + local.tee $8 + local.tee $9 + local.get $7 + local.tee $10 i32.ne if - local.get $7 + local.get $9 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $10 call $~lib/rt/stub/__release end + local.get $9 + local.set $7 local.get $7 - local.set $8 - local.get $8 local.get $2 call $assembly/hello/model/PromiseArgs#decode - local.set $7 + local.set $9 local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $8 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release local.get $7 + call $~lib/rt/stub/__release + local.get $9 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -11434,7 +11515,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 240 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 239 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 1160 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -11443,7 +11524,7 @@ call $~lib/array/Array#pop drop ) - (func $assembly/hello/model/PromiseArgs#encode (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#encode (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -11477,55 +11558,55 @@ local.get $3 local.get $0 i32.load - i32.const 4368 + i32.const 4328 call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=4 - i32.const 4400 + i32.const 4360 call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=8 - i32.const 4232 + i32.const 4192 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=12 - i32.const 4440 + i32.const 4400 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=16 - i32.const 4464 + i32.const 4424 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=20 - i32.const 4496 + i32.const 4456 call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=24 - i32.const 4528 + i32.const 4488 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=28 - i32.const 4568 + i32.const 4528 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=32 - i32.const 4616 + i32.const 4576 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 @@ -11538,7 +11619,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -11571,7 +11652,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/model/InputPromiseArgs#encode (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/InputPromiseArgs#encode (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -11605,7 +11686,7 @@ local.get $3 local.get $0 i32.load - i32.const 4232 + i32.const 4192 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 @@ -11618,7 +11699,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/bignum/integer/u128/u128#constructor (; 244 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + (func $~lib/bignum/integer/u128/u128#constructor (; 243 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) local.get $0 i32.eqz if @@ -11636,7 +11717,7 @@ i64.store offset=8 local.get $0 ) - (func $~lib/polyfills/bswap (; 245 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 244 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -11675,7 +11756,7 @@ i64.rotr return ) - (func $~lib/bignum/integer/u128/u128#toArrayBufferBE (; 246 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/bignum/integer/u128/u128#toArrayBufferBE (; 245 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 local.get $0 i64.load offset=8 @@ -11687,7 +11768,7 @@ call $~lib/polyfills/bswap i64.store offset=8 ) - (func $~lib/bignum/integer/u128/u128#toArrayBufferLE (; 247 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/bignum/integer/u128/u128#toArrayBufferLE (; 246 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 local.get $0 i64.load @@ -11697,7 +11778,7 @@ i64.load offset=8 i64.store offset=8 ) - (func $~lib/bignum/integer/u128/u128#toArrayBuffer (; 248 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/bignum/integer/u128/u128#toArrayBuffer (; 247 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 if local.get $0 @@ -11709,7 +11790,7 @@ call $~lib/bignum/integer/u128/u128#toArrayBufferLE end ) - (func $~lib/near-runtime-ts/contract/ContractPromise.create (; 249 ;) (type $FUNCSIG$iiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (func $~lib/near-runtime-ts/contract/ContractPromise.create (; 248 ;) (type $FUNCSIG$iiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -11805,7 +11886,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString (; 250 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString (; 249 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) i32.const 0 @@ -11833,14 +11914,14 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/contract/Context#get:contractName (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/contract/Context#get:contractName (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i64.const 0 call $~lib/near-runtime-ts/runtime_api/runtime_api.current_account_id local.get $0 i64.const 0 call $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString ) - (func $~lib/near-runtime-ts/contract/ContractPromise#then (; 252 ;) (type $FUNCSIG$iiiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (func $~lib/near-runtime-ts/contract/ContractPromise#then (; 251 ;) (type $FUNCSIG$iiiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -11938,12 +12019,12 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult (; 253 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult (; 252 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i64.load call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_return ) - (func $assembly/hello/main/callPromise (; 254 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $assembly/hello/main/callPromise (; 253 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i64) @@ -12077,7 +12158,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_callPromise (; 255 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_callPromise (; 254 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -12109,7 +12190,7 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 4232 + i32.const 4192 call $~lib/nearEntry/decode local.tee $4 call $assembly/hello/main/callPromise @@ -12122,7 +12203,7 @@ local.get $4 call $~lib/rt/stub/__release ) - (func $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -12153,7 +12234,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set (; 257 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set (; 256 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -12183,7 +12264,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set (; 258 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set (; 257 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -12227,7 +12308,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/contract/ContractPromise.getResults (; 259 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/near-runtime-ts/contract/ContractPromise.getResults (; 258 ;) (type $FUNCSIG$i) (result i32) (local $0 i64) (local $1 i32) (local $2 i32) @@ -12322,11 +12403,11 @@ end local.get $1 ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array.create (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -12357,7 +12438,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $assembly/hello/model/MyContractPromiseResult#constructor (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#constructor (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -12375,7 +12456,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 263 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 262 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -12405,7 +12486,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array#__set (; 264 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 263 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -12449,7 +12530,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12459,7 +12540,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -12490,7 +12571,7 @@ local.get $1 call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get ) - (func $~lib/array/Array#__unchecked_get (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12500,7 +12581,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -12531,7 +12612,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $assembly/hello/model/MyCallbackResult#constructor (; 269 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#constructor (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -12549,7 +12630,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/Array#constructor (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -12580,7 +12661,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/decode (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12605,6 +12686,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -12617,6 +12705,8 @@ i32.const 0 i32.eq if + i32.const 0 + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -12627,18 +12717,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2496 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -12688,21 +12768,21 @@ i32.const 0 i32.eqz if - i32.const 2424 + i32.const 3544 local.get $1 call $~lib/string/String.__concat local.tee $6 - i32.const 3616 + i32.const 3576 call $~lib/string/String.__concat local.tee $4 - i32.const 5032 + i32.const 4800 call $~lib/string/String.__concat local.tee $3 - i32.const 3680 + i32.const 3640 call $~lib/string/String.__concat local.tee $5 - i32.const 2496 - i32.const 504 + i32.const 2536 + i32.const 354 i32.const 4 call $~lib/builtins/abort unreachable @@ -12738,36 +12818,46 @@ end i32.eqz if - i32.const 2552 + i32.const 2424 local.get $1 call $~lib/string/String.__concat local.tee $5 - i32.const 5056 + i32.const 3576 call $~lib/string/String.__concat local.tee $3 - i32.const 2496 - i32.const 513 + i32.const 4800 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4824 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2536 + i32.const 363 i32.const 4 call $~lib/builtins/abort unreachable end local.get $2 i32.load8_u - local.set $4 + local.set $7 local.get $5 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $4 + local.get $7 return ) - (func $~lib/nearEntry/decode (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12775,6 +12865,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -12793,6 +12885,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -12805,6 +12904,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -12815,18 +12917,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2496 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -12873,147 +12965,151 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 3616 - call $~lib/string/String.__concat - local.tee $4 - i32.const 5104 - call $~lib/string/String.__concat - local.tee $3 - i32.const 3680 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2496 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 + local.set $7 local.get $2 - local.tee $5 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 i32.const 8 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2552 + i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 4296 + local.tee $6 + i32.const 3576 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4872 call $~lib/string/String.__concat local.tee $3 - i32.const 2496 - i32.const 543 + i32.const 4256 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2536 + i32.const 399 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/hello/model/MyCallbackResult#constructor - local.tee $4 - local.tee $7 - local.get $8 - local.tee $6 + local.tee $8 + local.tee $9 + local.get $7 + local.tee $10 i32.ne if - local.get $7 + local.get $9 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $10 call $~lib/rt/stub/__release end + local.get $9 + local.set $7 local.get $7 - local.set $8 - local.get $8 local.get $2 call $assembly/hello/model/MyCallbackResult#decode - local.set $7 + local.set $9 local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $8 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release local.get $7 + call $~lib/rt/stub/__release + local.get $9 ) - (func $assembly/hello/model/MyContractPromiseResult#decode (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#decode (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 - local.get $2 - i32.const 5008 - call $~lib/nearEntry/decode + local.get $1 + i32.const 4776 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4776 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load8_u + end i32.store8 local.get $0 - local.tee $3 - local.get $2 + local.tee $2 + local.get $1 i32.const 1616 - call $~lib/nearEntry/decode - local.set $4 - local.get $3 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 1616 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load offset=4 + call $~lib/rt/stub/__retain + end + local.set $3 + local.get $2 i32.load offset=4 call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store offset=4 local.get $0 call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $3 ) - (func $~lib/nearEntry/decode (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13021,6 +13117,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -13039,6 +13137,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -13051,6 +13156,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -13061,18 +13169,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2496 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -13119,112 +13217,105 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 3616 - call $~lib/string/String.__concat - local.tee $4 - i32.const 4944 - call $~lib/string/String.__concat - local.tee $3 - i32.const 3680 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2496 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 + local.set $7 local.get $2 - local.tee $5 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 i32.const 8 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2552 + i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 4296 + local.tee $6 + i32.const 3576 + call $~lib/string/String.__concat + local.tee $4 + i32.const 4712 call $~lib/string/String.__concat local.tee $3 - i32.const 2496 - i32.const 543 + i32.const 4256 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2536 + i32.const 399 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/hello/model/MyContractPromiseResult#constructor - local.tee $4 - local.tee $7 - local.get $8 - local.tee $6 + local.tee $8 + local.tee $9 + local.get $7 + local.tee $10 i32.ne if - local.get $7 + local.get $9 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $10 call $~lib/rt/stub/__release end + local.get $9 + local.set $7 local.get $7 - local.set $8 - local.get $8 local.get $2 call $assembly/hello/model/MyContractPromiseResult#decode - local.set $7 + local.set $9 local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $8 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release local.get $7 + call $~lib/rt/stub/__release + local.get $9 ) - (func $~lib/array/Array#push (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13260,7 +13351,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13286,15 +13377,15 @@ end i32.eqz if - i32.const 2552 + i32.const 2424 local.get $1 call $~lib/string/String.__concat local.tee $2 - i32.const 4872 + i32.const 4640 call $~lib/string/String.__concat local.tee $3 - i32.const 2496 - i32.const 478 + i32.const 2536 + i32.const 327 i32.const 2 call $~lib/builtins/abort unreachable @@ -13354,14 +13445,13 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -13380,6 +13470,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -13392,6 +13489,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -13402,18 +13502,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2456 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2496 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -13460,127 +13550,89 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2424 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 3616 - call $~lib/string/String.__concat - local.tee $4 - i32.const 4680 - call $~lib/string/String.__concat - local.tee $3 - i32.const 3680 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2496 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 - i32.const 0 - i32.eqz - if - i32.const 2552 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 4800 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2496 - i32.const 539 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $7 + local.get $2 local.get $1 call $~lib/nearEntry/decodeArray - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $6 return ) - (func $assembly/hello/model/MyCallbackResult#decode (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#decode (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 4616 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4616 + call $~lib/nearEntry/decode<~lib/array/Array> + else + local.get $0 + i32.load + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 4656 - call $~lib/nearEntry/decode<~lib/array/Array> - local.set $4 - local.get $3 i32.load call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store local.get $0 - local.tee $4 - local.get $2 + local.tee $3 + local.get $1 i32.const 1568 - call $~lib/nearEntry/decode<~lib/string/String> - local.set $3 - local.get $4 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 1568 + call $~lib/nearEntry/decode<~lib/string/String> + else + local.get $0 + i32.load offset=4 + call $~lib/rt/stub/__retain + end + local.set $2 + local.get $3 i32.load offset=4 call $~lib/rt/stub/__release - local.get $3 + local.get $2 i32.store offset=4 local.get $0 call $~lib/rt/stub/__retain - local.set $3 - local.get $2 - call $~lib/rt/stub/__release + local.set $2 local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $2 ) - (func $assembly/hello/model/MyCallbackResult.decode (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult.decode (; 278 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13609,11 +13661,11 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#get:length (; 280 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 281 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 280 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -13629,7 +13681,7 @@ end call $~lib/assemblyscript-json/encoder/JSONEncoder#write ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 282 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 281 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -13642,7 +13694,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13660,7 +13712,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13693,7 +13745,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/model/MyContractPromiseResult#encode (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#encode (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -13727,7 +13779,7 @@ local.get $3 local.get $0 i32.load8_u - i32.const 5008 + i32.const 4776 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 @@ -13746,7 +13798,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13779,7 +13831,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -13842,7 +13894,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/hello/model/MyCallbackResult#encode (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#encode (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -13876,7 +13928,7 @@ local.get $3 local.get $0 i32.load - i32.const 4656 + i32.const 4616 call $~lib/nearEntry/encode<~lib/array/Array> call $~lib/rt/stub/__release local.get $3 @@ -13895,7 +13947,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/near-runtime-ts/storage/Storage#setBytes (; 289 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/near-runtime-ts/storage/Storage#setBytes (; 288 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) local.get $1 @@ -13929,7 +13981,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/callbackWithName (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/callbackWithName (; 289 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14077,7 +14129,7 @@ call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize local.set $3 global.get $~lib/near-runtime-ts/storage/storage - i32.const 5152 + i32.const 4920 local.get $3 call $~lib/near-runtime-ts/storage/Storage#setBytes local.get $5 @@ -14098,7 +14150,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $assembly/hello/main/__wrapper_callbackWithName (; 291 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_callbackWithName (; 290 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -14134,7 +14186,7 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 4232 + i32.const 4192 call $~lib/nearEntry/decode local.tee $4 call $assembly/hello/main/callbackWithName @@ -14175,7 +14227,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/storage/Storage#getBytes (; 292 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#getBytes (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -14188,11 +14240,11 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/getLastResult (; 293 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/getLastResult (; 292 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) global.get $~lib/near-runtime-ts/storage/storage - i32.const 5152 + i32.const 4920 call $~lib/near-runtime-ts/storage/Storage#getBytes local.tee $0 call $assembly/hello/model/MyCallbackResult.decode @@ -14201,7 +14253,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/hello/main/__wrapper_getLastResult (; 294 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getLastResult (; 293 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14236,34 +14288,33 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/generateLogs (; 295 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/generateLogs (; 294 ;) (type $FUNCSIG$v) global.get $~lib/near-runtime-ts/storage/storage - i32.const 5192 - i32.const 3488 + i32.const 4960 + i32.const 3416 call $~lib/near-runtime-ts/storage/Storage#setString - i32.const 5216 + i32.const 4984 call $~lib/near-runtime-ts/logging/logging.log - i32.const 5240 + i32.const 5008 call $~lib/near-runtime-ts/logging/logging.log ) - (func $assembly/hello/main/triggerAssert (; 296 ;) (type $FUNCSIG$v) - i32.const 5264 + (func $assembly/hello/main/triggerAssert (; 295 ;) (type $FUNCSIG$v) + i32.const 5032 call $~lib/near-runtime-ts/logging/logging.log i32.const 0 i32.eqz if - i32.const 5320 - i32.const 3520 - i32.const 489 + i32.const 5088 + i32.const 3448 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end ) - (func $start (; 297 ;) (type $FUNCSIG$v) + (func $start (; 296 ;) (type $FUNCSIG$v) call $start:~lib/rt/index-stub - call $start:~lib/nearEntry ) - (func $null (; 298 ;) (type $FUNCSIG$v) + (func $null (; 297 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/near-bindgen/out/test.wat b/tests/near-bindgen/out/test.wat index 0f222a1906..e0ef130bf8 100644 --- a/tests/near-bindgen/out/test.wat +++ b/tests/near-bindgen/out/test.wat @@ -18,6 +18,7 @@ (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$iijj (func (param i32 i64 i64) (result i32))) + (type $FUNCSIG$vijjjj (func (param i32 i64 i64 i64 i64))) (type $FUNCSIG$vij (func (param i32 i64))) (type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) @@ -89,87 +90,79 @@ (data (i32.const 2288) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00f\00o\00o\00b\00a\00r\00s\00") (data (i32.const 2320) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") (data (i32.const 2376) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 2416) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00K\00e\00y\00:\00 \00") - (data (i32.const 2448) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00 \00n\00o\00t\00 \00f\00o\00u\00n\00d\00") - (data (i32.const 2488) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00~\00l\00i\00b\00/\00n\00e\00a\00r\00E\00n\00t\00r\00y\00.\00t\00s\00") - (data (i32.const 2544) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00 \00w\00i\00t\00h\00 \00t\00y\00p\00e\00 \00") - (data (i32.const 2584) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00A\00r\00r\00a\00y\00<\00a\00s\00s\00e\00m\00b\00l\00y\00/\00m\00o\00d\00e\00l\00/\00F\00o\00o\00B\00a\00r\00>\00") - (data (i32.const 2656) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00s\00 \00n\00o\00t\00 \00n\00u\00l\00l\00a\00b\00l\00e\00.\00") - (data (i32.const 2704) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00V\00a\00l\00u\00e\00 \00w\00i\00t\00h\00 \00K\00e\00y\00:\00 \00") - (data (i32.const 2752) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00 \00i\00s\00 \00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00b\00e\00 \00a\00n\00 \00a\00r\00r\00a\00y\00") - (data (i32.const 2824) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00a\00r\00r\00a\00y\00 \00o\00r\00 \00n\00u\00l\00l\00.\00") - (data (i32.const 2896) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00F\00o\00o\00B\00a\00r\00") - (data (i32.const 2928) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00o\00b\00j\00e\00c\00t\00 \00o\00r\00 \00n\00u\00l\00l\00") - (data (i32.const 3000) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 3024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\00o\00o\00") - (data (i32.const 3048) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\003\002\00") - (data (i32.const 3072) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00I\00n\00t\00e\00g\00e\00r\00") - (data (i32.const 3128) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00r\00") - (data (i32.const 3152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\003\002\00") - (data (i32.const 3176) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\006\004\00V\00a\00l\00") - (data (i32.const 3208) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\006\004\00") - (data (i32.const 3232) "~\00\00\00\01\00\00\00\01\00\00\00~\00\00\00 \00i\00s\00 \00a\00n\00 \006\004\00-\00b\00i\00t\00 \00i\00n\00t\00e\00g\00e\00r\00 \00a\00n\00d\00 \00i\00s\00 \00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00b\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00a\00s\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 3376) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00u\006\004\00_\00z\00e\00r\00o\00") - (data (i32.const 3408) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00i\006\004\00V\00a\00l\00") - (data (i32.const 3440) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\006\004\00") - (data (i32.const 3464) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00l\00a\00g\00") - (data (i32.const 3488) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l\00") - (data (i32.const 3512) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 3560) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00z\00") - (data (i32.const 3584) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00 \00o\00r\00 \00n\00u\00l\00l\00") - (data (i32.const 3648) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00a\00r\00r\00a\00y\00") - (data (i32.const 3688) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00") - (data (i32.const 3728) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00r\00r\00") - (data (i32.const 3752) "V\00\00\00\01\00\00\00\01\00\00\00V\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00/\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>\00>\00") - (data (i32.const 3856) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>\00") - (data (i32.const 3928) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\003\002\00A\00r\00r\00") - (data (i32.const 3960) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00A\00r\00r\00a\00y\00<\00u\003\002\00>\00") - (data (i32.const 4000) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00i\003\002\00A\00r\00r\00") - (data (i32.const 4032) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00A\00r\00r\00a\00y\00<\00i\003\002\00>\00") - (data (i32.const 4072) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00u\001\002\008\00V\00a\00l\00") - (data (i32.const 4104) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00u\001\002\008\00") - (data (i32.const 4128) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00l\00o\00") - (data (i32.const 4152) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") - (data (i32.const 4176) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00i\00n\00t\008\00a\00r\00r\00a\00y\00s\00") - (data (i32.const 4216) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00/\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00>\00") - (data (i32.const 4304) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\006\004\00A\00r\00r\00") - (data (i32.const 4336) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00A\00r\00r\00a\00y\00<\00u\006\004\00>\00") - (data (i32.const 4376) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\"\00") - (data (i32.const 4400) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\\\00") - (data (i32.const 4424) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00b\00") - (data (i32.const 4448) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00n\00") - (data (i32.const 4472) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00r\00") - (data (i32.const 4496) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00t\00") - (data (i32.const 4520) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00U\00n\00s\00u\00p\00p\00o\00r\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00c\00o\00d\00e\00:\00 \00") - (data (i32.const 4608) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 5024) "\10\00\00\00\01\00\00\00\1a\00\00\00\10\00\00\00\10\12\00\00\10\12\00\00\90\01\00\00d\00\00\00") - (data (i32.const 5056) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00e\00n\00c\00o\00d\00e\00r\00.\00t\00s\00") - (data (i32.const 5144) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00o\00b\00a\00r\00") - (data (i32.const 5176) "N\00\00\00\01\00\00\00\01\00\00\00N\00\00\00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \001\000\00 \00o\00r\00 \001\006\00") - (data (i32.const 5272) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00~\00l\00i\00b\00/\00b\00i\00g\00n\00u\00m\00/\00i\00n\00t\00e\00g\00e\00r\00/\00u\001\002\008\00.\00t\00s\00") - (data (i32.const 5344) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00") - (data (i32.const 5384) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00g\00e\00t\00S\00t\00r\00i\00n\00g\00A\00r\00r\00a\00y\00L\00e\00n\00g\00t\00h\00:\00 \00") - (data (i32.const 5448) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00c\00o\00n\00t\00a\00i\00n\00e\00r\00") - (data (i32.const 5488) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00C\00o\00n\00t\00a\00i\00n\00e\00r\00C\00l\00a\00s\00s\00") - (data (i32.const 5536) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\00A\00n\00o\00t\00h\00e\00r\00C\00o\00n\00t\00a\00i\00n\00e\00r\00C\00l\00a\00s\00s\00") - (data (i32.const 5600) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00/\00A\00r\00r\00a\00y\00<\00a\00s\00s\00e\00m\00b\00l\00y\00/\00m\00o\00d\00e\00l\00/\00F\00o\00o\00B\00a\00r\00>\00>\00") - (data (i32.const 5712) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00a\00r\00t\00i\00n\00g\00 \00t\00e\00s\00t\00") - (data (i32.const 5760) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00*\00\00\00\0b\00\00\00") - (data (i32.const 5784) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00G\00V\00s\00b\00G\008\00s\00I\00H\00d\00v\00c\00m\00x\00k\00I\00Q\00=\00=\00") - (data (i32.const 5840) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00H\00e\00l\00l\00o\00") - (data (i32.const 5872) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\e0\16\00\00") - (data (i32.const 5896) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00W\00o\00r\00l\00d\00") - (data (i32.const 5928) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\18\17\00\00") - (data (i32.const 5952) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\e4\0bT\02\00\00\00\00\e8vH\17\00\00\00") - (data (i32.const 5984) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00B\00e\00f\00o\00r\00e\00:\00 \00") - (data (i32.const 6016) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00") - (data (i32.const 6040) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00A\00f\00t\00e\00r\00:\00 \00") - (data (i32.const 6072) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00t\00e\00s\00t\00.\00t\00s\00") - (data (i32.const 6120) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00t\00r\00") - (data (i32.const 6144) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00A\00r\00r\00a\00y\00") - (data (i32.const 6184) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00N\00u\00l\00l\00a\00b\00l\00e\00s\00") - (data (i32.const 6224) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00T\00e\00s\00t\00 \00P\00a\00s\00s\00e\00d\00") - (data (i32.const 6264) "$\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\98 A\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\0b\00\00\00\10\00\00\00\0c\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\93\04\00\00\02\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93\00\00\00\02\00\00\00\93 \00\00\02\00\00\00\13\01\00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 2416) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00V\00a\00l\00u\00e\00 \00w\00i\00t\00h\00 \00K\00e\00y\00:\00 \00") + (data (i32.const 2464) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00a\00r\00r\00a\00y\00 \00o\00r\00 \00n\00u\00l\00l\00.\00") + (data (i32.const 2536) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00~\00l\00i\00b\00/\00n\00e\00a\00r\00E\00n\00t\00r\00y\00.\00t\00s\00") + (data (i32.const 2592) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00 \00w\00i\00t\00h\00 \00t\00y\00p\00e\00 \00") + (data (i32.const 2632) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00F\00o\00o\00B\00a\00r\00") + (data (i32.const 2664) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00o\00b\00j\00e\00c\00t\00 \00o\00r\00 \00n\00u\00l\00l\00") + (data (i32.const 2736) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") + (data (i32.const 2760) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\00o\00o\00") + (data (i32.const 2784) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00K\00e\00y\00:\00 \00") + (data (i32.const 2816) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\003\002\00") + (data (i32.const 2840) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00s\00 \00n\00o\00t\00 \00n\00u\00l\00l\00a\00b\00l\00e\00.\00") + (data (i32.const 2888) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00n\00 \00I\00n\00t\00e\00g\00e\00r\00") + (data (i32.const 2944) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00r\00") + (data (i32.const 2968) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\003\002\00") + (data (i32.const 2992) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\006\004\00V\00a\00l\00") + (data (i32.const 3024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\006\004\00") + (data (i32.const 3048) "~\00\00\00\01\00\00\00\01\00\00\00~\00\00\00 \00i\00s\00 \00a\00n\00 \006\004\00-\00b\00i\00t\00 \00i\00n\00t\00e\00g\00e\00r\00 \00a\00n\00d\00 \00i\00s\00 \00e\00x\00p\00e\00c\00t\00e\00d\00 \00t\00o\00 \00b\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00a\00s\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 3192) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00u\006\004\00_\00z\00e\00r\00o\00") + (data (i32.const 3224) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00i\006\004\00V\00a\00l\00") + (data (i32.const 3256) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\006\004\00") + (data (i32.const 3280) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00l\00a\00g\00") + (data (i32.const 3304) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l\00") + (data (i32.const 3328) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") + (data (i32.const 3376) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00z\00") + (data (i32.const 3400) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00 \00i\00s\00 \00n\00o\00t\00 \00a\00 \00s\00t\00r\00i\00n\00g\00 \00o\00r\00 \00n\00u\00l\00l\00") + (data (i32.const 3464) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00a\00r\00r\00a\00y\00") + (data (i32.const 3504) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00r\00r\00") + (data (i32.const 3528) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\003\002\00A\00r\00r\00") + (data (i32.const 3560) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00i\003\002\00A\00r\00r\00") + (data (i32.const 3592) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00u\001\002\008\00V\00a\00l\00") + (data (i32.const 3624) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00r\00a\00d\00i\00x\00") + (data (i32.const 3672) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00~\00l\00i\00b\00/\00b\00i\00g\00n\00u\00m\00/\00u\00t\00i\00l\00s\00.\00t\00s\00") + (data (i32.const 3728) "K\00\00\00\01\00\00\00\00\00\00\00K\00\00\00\00\01\02\03\04\05\06\07\08\t$$$$$$$\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$$$$$$\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#") + (data (i32.const 3824) "\10\00\00\00\01\00\00\00\1f\00\00\00\10\00\00\00\a0\0e\00\00\a0\0e\00\00K\00\00\00K\00\00\00") + (data (i32.const 3856) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00u\001\002\008\00") + (data (i32.const 3880) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00l\00o\00") + (data (i32.const 3904) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") + (data (i32.const 3928) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00i\00n\00t\008\00a\00r\00r\00a\00y\00s\00") + (data (i32.const 3968) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00u\006\004\00A\00r\00r\00") + (data (i32.const 4000) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\"\00") + (data (i32.const 4024) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00\\\00") + (data (i32.const 4048) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00b\00") + (data (i32.const 4072) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00n\00") + (data (i32.const 4096) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00r\00") + (data (i32.const 4120) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\\\00t\00") + (data (i32.const 4144) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00U\00n\00s\00u\00p\00p\00o\00r\00t\00e\00d\00 \00c\00o\00n\00t\00r\00o\00l\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00c\00o\00d\00e\00:\00 \00") + (data (i32.const 4232) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 4648) "\10\00\00\00\01\00\00\00\1a\00\00\00\10\00\00\00\98\10\00\00\98\10\00\00\90\01\00\00d\00\00\00") + (data (i32.const 4680) "F\00\00\00\01\00\00\00\01\00\00\00F\00\00\00~\00l\00i\00b\00/\00a\00s\00s\00e\00m\00b\00l\00y\00s\00c\00r\00i\00p\00t\00-\00j\00s\00o\00n\00/\00e\00n\00c\00o\00d\00e\00r\00.\00t\00s\00") + (data (i32.const 4768) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00o\00b\00a\00r\00") + (data (i32.const 4800) "N\00\00\00\01\00\00\00\01\00\00\00N\00\00\00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \001\000\00 \00o\00r\00 \001\006\00") + (data (i32.const 4896) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00~\00l\00i\00b\00/\00b\00i\00g\00n\00u\00m\00/\00i\00n\00t\00e\00g\00e\00r\00/\00u\001\002\008\00.\00t\00s\00") + (data (i32.const 4968) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00") + (data (i32.const 5008) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00g\00e\00t\00S\00t\00r\00i\00n\00g\00A\00r\00r\00a\00y\00L\00e\00n\00g\00t\00h\00:\00 \00") + (data (i32.const 5072) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00c\00o\00n\00t\00a\00i\00n\00e\00r\00") + (data (i32.const 5112) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00C\00o\00n\00t\00a\00i\00n\00e\00r\00C\00l\00a\00s\00s\00") + (data (i32.const 5160) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\00A\00n\00o\00t\00h\00e\00r\00C\00o\00n\00t\00a\00i\00n\00e\00r\00C\00l\00a\00s\00s\00") + (data (i32.const 5224) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00a\00r\00t\00i\00n\00g\00 \00t\00e\00s\00t\00") + (data (i32.const 5272) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00*\00\00\00\0b\00\00\00") + (data (i32.const 5296) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00G\00V\00s\00b\00G\008\00s\00I\00H\00d\00v\00c\00m\00x\00k\00I\00Q\00=\00=\00") + (data (i32.const 5352) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00H\00e\00l\00l\00o\00") + (data (i32.const 5384) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\f8\14\00\00") + (data (i32.const 5408) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00W\00o\00r\00l\00d\00") + (data (i32.const 5440) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\000\15\00\00") + (data (i32.const 5464) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\e4\0bT\02\00\00\00\00\e8vH\17\00\00\00") + (data (i32.const 5496) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00B\00e\00f\00o\00r\00e\00:\00 \00") + (data (i32.const 5528) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00A\00f\00t\00e\00r\00:\00 \00 \00") + (data (i32.const 5560) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00t\00e\00s\00t\00.\00t\00s\00") + (data (i32.const 5608) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00t\00r\00") + (data (i32.const 5632) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00A\00r\00r\00a\00y\00") + (data (i32.const 5672) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00N\00u\00l\00l\00a\00b\00l\00e\00s\00") + (data (i32.const 5712) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00T\00e\00s\00t\00 \00P\00a\00s\00s\00e\00d\00") + (data (i32.const 5752) "%\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\98 A\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\0b\00\00\00\10\00\00\00\0c\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\93\04\00\00\02\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93\00\00\00\02\00\00\00\93 \00\00\02\00\00\00\13\01\00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\003\00\00\00\02\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 0) $null $assembly/main/convertFoobars~anonymous|0) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -202,11 +195,10 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/number/U32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/nearEntry/JSON.handler (mut i32) (i32.const 0)) - (global $~lib/nearEntry/JSON.decoder (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 6264)) - (global $~lib/heap/__heap_base i32 (i32.const 6556)) + (global $~lib/bignum/utils/RadixCharsTable i32 (i32.const 3840)) + (global $~lib/rt/__rtti_base i32 (i32.const 5752)) + (global $~lib/heap/__heap_base i32 (i32.const 6052)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -798,7 +790,49 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 15 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -810,7 +844,7 @@ end local.get $0 ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -825,7 +859,7 @@ local.set $0 local.get $0 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -856,7 +890,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Handler#constructor (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#constructor (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -886,58 +920,7 @@ i32.store local.get $0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 15 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $start:~lib/nearEntry (; 34 ;) (type $FUNCSIG$v) - i32.const 0 - call $~lib/nearEntry/Handler#constructor - global.set $~lib/nearEntry/JSON.handler - i32.const 0 - global.get $~lib/nearEntry/JSON.handler - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor - global.set $~lib/nearEntry/JSON.decoder - ) - (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -965,15 +948,15 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Uint8Array#get:length (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#__get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -992,7 +975,7 @@ i32.add i32.load8_u ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.load offset=4 @@ -1013,7 +996,7 @@ i32.load offset=4 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 i32.const 9 i32.eq @@ -1039,7 +1022,7 @@ i32.eq end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1073,7 +1056,7 @@ local.get $1 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) block $break|0 loop $continue|0 local.get $0 @@ -1090,7 +1073,7 @@ unreachable end ) - (func $~lib/nearEntry/Value#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value#constructor (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1102,7 +1085,7 @@ end local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 @@ -1126,7 +1109,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 45 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1166,7 +1149,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1198,7 +1181,7 @@ call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -1229,7 +1212,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Obj#constructor (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Obj#constructor (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1272,11 +1255,11 @@ i32.store offset=4 local.get $0 ) - (func $~lib/nearEntry/Value.Object (; 49 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Object (; 48 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Obj#constructor ) - (func $~lib/rt/__instanceof (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1313,6 +1296,10 @@ end i32.const 0 ) + (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) (func $~lib/util/memory/memcpy (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2804,11 +2791,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2818,7 +2801,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -2849,7 +2832,7 @@ local.get $1 call $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get ) - (func $~lib/nearEntry/Handler#get:peek (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#get:peek (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -2859,7 +2842,7 @@ i32.sub call $~lib/array/Array<~lib/nearEntry/Value>#__get ) - (func $~lib/util/hash/hashStr (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2910,7 +2893,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/string/compareImpl (; 61 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 60 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -2975,7 +2958,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/string/String.__eq (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3048,7 +3031,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -3108,7 +3091,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3136,7 +3119,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#push (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3172,7 +3155,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 66 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3334,7 +3317,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3465,7 +3448,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Obj#set (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Obj#set (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3494,7 +3477,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Arr#push (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Arr#push (; 68 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3506,7 +3489,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#addValue (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#addValue (; 69 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3534,6 +3517,15 @@ else i32.const 0 end + if (result i32) + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 0 + i32.eq + else + i32.const 0 + end if local.get $0 i32.load @@ -3599,7 +3591,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#pushObject (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushObject (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3624,7 +3616,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3636,7 +3628,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/string/String.UTF8.decodeUnsafe (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.decodeUnsafe (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3865,7 +3857,7 @@ call $~lib/rt/stub/__realloc call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3884,7 +3876,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load offset=8 local.get $1 @@ -3893,7 +3885,7 @@ i32.sub call $~lib/assemblyscript-json/util/index/Buffer.readString ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -3913,11 +3905,11 @@ local.get $2 call $~lib/assemblyscript-json/decoder/DecoderState#readString ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4152,7 +4144,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $~lib/array/Array<~lib/string/String>#join (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4166,7 +4158,7 @@ local.get $2 return ) - (func $~lib/rt/__allocArray (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 79 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -4204,7 +4196,7 @@ end local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 80 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4288,7 +4280,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/string/String.fromCodePoint (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4349,7 +4341,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -4374,7 +4366,7 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode|trampoline (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -4392,7 +4384,7 @@ local.get $1 call $~lib/string/String.fromCharCode ) - (func $~lib/string/String#concat (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4468,7 +4460,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String.__concat (; 86 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -4491,7 +4483,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 86 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4634,7 +4626,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4766,7 +4758,7 @@ end unreachable ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 89 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 88 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4800,7 +4792,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 89 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4834,7 +4826,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/nearEntry/Handler#popObject (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popObject (; 90 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -4847,7 +4839,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4962,7 +4954,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Arr#constructor (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Arr#constructor (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4992,11 +4984,11 @@ i32.store local.get $0 ) - (func $~lib/nearEntry/Value.Array (; 94 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Array (; 93 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Arr#constructor ) - (func $~lib/nearEntry/Handler#pushArray (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushArray (; 94 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -5021,7 +5013,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Handler#popArray (; 96 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popArray (; 95 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -5034,7 +5026,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5147,7 +5139,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Str#constructor (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Str#constructor (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -5170,7 +5162,7 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/nearEntry/Value.String (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.String (; 98 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -5183,7 +5175,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/nearEntry/Handler#setString (; 100 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setString (; 99 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5205,7 +5197,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 100 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5233,7 +5225,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 102 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 101 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5286,7 +5278,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Bools#constructor (; 103 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Bools#constructor (; 102 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5303,12 +5295,12 @@ i32.store8 local.get $0 ) - (func $~lib/nearEntry/Value.Bool (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.Bool (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Bools#constructor ) - (func $~lib/nearEntry/Handler#setBoolean (; 105 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setBoolean (; 104 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5325,7 +5317,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 184 @@ -5368,7 +5360,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Num#constructor (; 107 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/nearEntry/Num#constructor (; 106 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 if (result i32) local.get $0 @@ -5385,12 +5377,12 @@ i64.store local.get $0 ) - (func $~lib/nearEntry/Value.Number (; 108 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/nearEntry/Value.Number (; 107 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Num#constructor ) - (func $~lib/nearEntry/Handler#setInteger (; 109 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/nearEntry/Handler#setInteger (; 108 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5407,7 +5399,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i64) (local $2 i64) (local $3 i32) @@ -5487,7 +5479,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Null#constructor (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Null#constructor (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5501,11 +5493,11 @@ local.set $0 local.get $0 ) - (func $~lib/nearEntry/Value.Null (; 112 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Null (; 111 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Null#constructor ) - (func $~lib/nearEntry/Handler#setNull (; 113 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Handler#setNull (; 112 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5521,7 +5513,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 216 @@ -5543,7 +5535,7 @@ end i32.const 0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace @@ -5589,7 +5581,7 @@ call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 116 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 115 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $1 @@ -5650,58 +5642,63 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#reset (; 117 ;) (type $FUNCSIG$vi) (param $0 i32) - block $break|0 - loop $continue|0 - local.get $0 - i32.load - call $~lib/array/Array<~lib/nearEntry/Value>#get:length - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 - local.get $0 - i32.load - call $~lib/array/Array<~lib/nearEntry/Value>#pop - call $~lib/rt/stub/__release - br $continue|0 - end - unreachable - end - ) - (func $~lib/nearEntry/JSON.parse (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/JSON.parse (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop + i32.const 0 + i32.const 0 + call $~lib/nearEntry/Handler#constructor + local.tee $1 + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor + local.set $2 + local.get $2 local.get $0 - call $~lib/rt/stub/__retain - local.set $1 - global.get $~lib/nearEntry/JSON.decoder - local.get $1 i32.const 0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize - global.get $~lib/nearEntry/JSON.handler + local.get $2 + i32.load call $~lib/nearEntry/Handler#get:peek - local.tee $2 + local.tee $3 call $~lib/rt/stub/__retain - local.set $3 - global.get $~lib/nearEntry/JSON.handler - call $~lib/nearEntry/Handler#reset - local.get $3 local.set $4 + local.get $4 + local.set $5 local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + ) + (func $~lib/string/String.__ne (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5744,7 +5741,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/Obj#get (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#get (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5772,7 +5769,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#constructor (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5803,7 +5800,7 @@ i32.store offset=12 local.get $0 ) - (func $assembly/model/FooBar#constructor (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/FooBar#constructor (; 121 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -5832,7 +5829,7 @@ i32.const 0 i32.store8 offset=32 local.get $0 - i32.const 3016 + i32.const 2752 call $~lib/rt/stub/__retain i32.store offset=36 local.get $0 @@ -5858,6 +5855,20 @@ i32.store offset=64 local.get $0 ) + (func $~lib/nearEntry/Obj#has (; 122 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.load + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) (func $~lib/nearEntry/decode (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -5884,6 +5895,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -5896,6 +5914,8 @@ i32.const 0 i32.eq if + i32.const 0 + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -5906,18 +5926,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -5967,21 +5977,21 @@ i32.const 0 i32.eqz if - i32.const 2432 + i32.const 2800 local.get $1 call $~lib/string/String.__concat local.tee $6 - i32.const 2560 + i32.const 2608 call $~lib/string/String.__concat local.tee $4 - i32.const 3064 + i32.const 2832 call $~lib/string/String.__concat local.tee $3 - i32.const 2672 + i32.const 2856 call $~lib/string/String.__concat local.tee $5 - i32.const 2504 - i32.const 504 + i32.const 2552 + i32.const 354 i32.const 4 call $~lib/builtins/abort unreachable @@ -6017,15 +6027,21 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $5 - i32.const 3088 + i32.const 2608 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 526 + i32.const 2832 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2904 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2552 + i32.const 376 i32.const 4 call $~lib/builtins/abort unreachable @@ -6033,18 +6049,22 @@ local.get $2 i64.load i32.wrap_i64 - local.set $4 + local.set $7 local.get $5 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $4 + local.get $7 return ) (func $~lib/nearEntry/decode (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -6073,6 +6093,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -6085,6 +6112,8 @@ i32.const 0 i32.eq if + i32.const 0 + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -6095,18 +6124,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -6156,21 +6175,21 @@ i32.const 0 i32.eqz if - i32.const 2432 + i32.const 2800 local.get $1 call $~lib/string/String.__concat local.tee $6 - i32.const 2560 + i32.const 2608 call $~lib/string/String.__concat local.tee $4 - i32.const 3168 + i32.const 2984 call $~lib/string/String.__concat local.tee $3 - i32.const 2672 + i32.const 2856 call $~lib/string/String.__concat local.tee $5 - i32.const 2504 - i32.const 504 + i32.const 2552 + i32.const 354 i32.const 4 call $~lib/builtins/abort unreachable @@ -6206,15 +6225,21 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $5 - i32.const 3088 + i32.const 2608 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 526 + i32.const 2984 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2904 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2552 + i32.const 376 i32.const 4 call $~lib/builtins/abort unreachable @@ -6222,18 +6247,22 @@ local.get $2 i64.load i32.wrap_i64 - local.set $4 + local.set $7 local.get $5 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $4 + local.get $7 return ) (func $~lib/util/string/isSpace (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -6698,10 +6727,11 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) - (local $7 i64) + (local $7 i32) (local $8 i64) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -6720,6 +6750,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -6732,6 +6769,9 @@ i32.const 0 i32.eq if + i32.const 0 + i64.extend_i32_u + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -6742,32 +6782,22 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 - local.tee $5 - local.get $2 local.tee $6 + local.get $2 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 + local.get $6 local.set $2 local.get $3 call $~lib/rt/stub/__release @@ -6775,27 +6805,27 @@ call $~lib/rt/stub/__release else local.get $0 - local.tee $6 + local.tee $7 local.get $2 local.tee $4 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop local.get $4 call $~lib/rt/stub/__release end - local.get $6 + local.get $7 local.set $2 end local.get $2 - local.tee $6 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -6803,35 +6833,35 @@ i32.const 0 i32.eqz if - i32.const 2432 + i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 + local.tee $7 + i32.const 2608 call $~lib/string/String.__concat local.tee $4 - i32.const 3224 + i32.const 3040 call $~lib/string/String.__concat local.tee $3 - i32.const 2672 + i32.const 2856 call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 + local.tee $6 + i32.const 2552 + i32.const 354 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 i64.extend_i32_u - local.set $7 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6839,30 +6869,36 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $5 return end local.get $2 - local.tee $5 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 19 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 3248 + local.tee $6 + i32.const 2608 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 521 + i32.const 3040 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3064 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2552 + i32.const 371 i32.const 6 call $~lib/builtins/abort unreachable @@ -6870,34 +6906,39 @@ local.get $2 i32.load call $~lib/rt/stub/__retain - local.set $4 - local.get $4 + local.set $9 + local.get $9 i32.const 0 call $~lib/number/I64.parseInt - local.set $7 - local.get $5 + local.set $5 + local.get $6 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $5 return ) (func $~lib/nearEntry/decode (; 129 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) - (local $7 i64) + (local $7 i32) (local $8 i64) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -6916,6 +6957,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -6928,6 +6976,9 @@ i32.const 0 i32.eq if + i32.const 0 + i64.extend_i32_u + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -6938,32 +6989,22 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 - local.tee $5 - local.get $2 local.tee $6 + local.get $2 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 + local.get $6 local.set $2 local.get $3 call $~lib/rt/stub/__release @@ -6971,27 +7012,27 @@ call $~lib/rt/stub/__release else local.get $0 - local.tee $6 + local.tee $7 local.get $2 local.tee $4 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop local.get $4 call $~lib/rt/stub/__release end - local.get $6 + local.get $7 local.set $2 end local.get $2 - local.tee $6 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -6999,35 +7040,35 @@ i32.const 0 i32.eqz if - i32.const 2432 + i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 + local.tee $7 + i32.const 2608 call $~lib/string/String.__concat local.tee $4 - i32.const 3456 + i32.const 3272 call $~lib/string/String.__concat local.tee $3 - i32.const 2672 + i32.const 2856 call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 + local.tee $6 + i32.const 2552 + i32.const 354 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 i64.extend_i32_u - local.set $7 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -7035,30 +7076,36 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $5 return end local.get $2 - local.tee $5 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 19 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 3248 + local.tee $6 + i32.const 2608 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 521 + i32.const 3272 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3064 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2552 + i32.const 371 i32.const 6 call $~lib/builtins/abort unreachable @@ -7066,24 +7113,28 @@ local.get $2 i32.load call $~lib/rt/stub/__retain - local.set $4 - local.get $4 + local.set $9 + local.get $9 i32.const 0 call $~lib/number/I64.parseInt - local.set $7 - local.get $5 + local.set $5 + local.get $6 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $5 return ) (func $~lib/nearEntry/decode (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -7111,6 +7162,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -7123,6 +7181,8 @@ i32.const 0 i32.eq if + i32.const 0 + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -7133,18 +7193,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -7194,21 +7244,21 @@ i32.const 0 i32.eqz if - i32.const 2432 + i32.const 2800 local.get $1 call $~lib/string/String.__concat local.tee $6 - i32.const 2560 + i32.const 2608 call $~lib/string/String.__concat local.tee $4 - i32.const 3504 + i32.const 3320 call $~lib/string/String.__concat local.tee $3 - i32.const 2672 + i32.const 2856 call $~lib/string/String.__concat local.tee $5 - i32.const 2504 - i32.const 504 + i32.const 2552 + i32.const 354 i32.const 4 call $~lib/builtins/abort unreachable @@ -7244,33 +7294,43 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $5 - i32.const 3528 + i32.const 2608 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 513 + i32.const 3320 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3344 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2552 + i32.const 363 i32.const 4 call $~lib/builtins/abort unreachable end local.get $2 i32.load8_u - local.set $4 + local.set $7 local.get $5 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $4 + local.get $7 return ) (func $~lib/nearEntry/decode<~lib/string/String> (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -7298,6 +7358,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -7310,6 +7377,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -7320,18 +7390,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -7408,15 +7468,15 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $5 call $~lib/string/String.__concat local.tee $6 - i32.const 3600 + i32.const 3416 call $~lib/string/String.__concat local.tee $4 - i32.const 2504 - i32.const 471 + i32.const 2552 + i32.const 320 i32.const 2 call $~lib/builtins/abort unreachable @@ -7910,6 +7970,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -7922,6 +7989,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -7932,18 +8002,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -7990,103 +8050,68 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 3704 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 + local.set $7 local.get $2 call $~lib/rt/stub/__retain - local.set $6 + local.set $3 local.get $1 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - local.tee $5 + local.set $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 19 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2720 - local.get $7 + i32.const 2432 + local.get $5 call $~lib/string/String.__concat - local.tee $5 - i32.const 3600 + local.tee $6 + i32.const 3416 call $~lib/string/String.__concat - local.tee $3 - i32.const 2504 - i32.const 471 + local.tee $4 + i32.const 2552 + i32.const 320 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.load call $~lib/rt/stub/__retain - local.set $4 - local.get $7 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release + local.set $8 local.get $5 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release local.get $4 - local.set $3 - local.get $3 + call $~lib/rt/stub/__release + local.get $8 + local.tee $4 call $~lib/near-runtime-ts/base64/base64.decode - local.tee $5 - call $~lib/rt/stub/__retain local.set $6 - local.get $3 - call $~lib/rt/stub/__release - local.get $5 + local.get $4 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -8094,7 +8119,7 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 call $~lib/rt/stub/__release local.get $6 return @@ -8156,15 +8181,15 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $2 - i32.const 2840 + i32.const 2480 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 478 + i32.const 2552 + i32.const 327 i32.const 2 call $~lib/builtins/abort unreachable @@ -8231,7 +8256,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -8250,6 +8274,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -8262,6 +8293,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8272,18 +8306,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -8330,83 +8354,33 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 3872 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 - i32.const 0 - i32.eqz - if - i32.const 2720 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2768 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2504 - i32.const 539 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $7 + local.get $2 local.get $1 call $~lib/nearEntry/decodeArray<~lib/string/String> - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $6 return ) (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -8471,15 +8445,15 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $2 - i32.const 2840 + i32.const 2480 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 478 + i32.const 2552 + i32.const 327 i32.const 2 call $~lib/builtins/abort unreachable @@ -8546,7 +8520,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -8565,6 +8538,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -8577,6 +8557,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8587,18 +8570,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -8645,83 +8618,33 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 3768 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 - i32.const 0 - i32.eqz - if - i32.const 2720 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2768 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2504 - i32.const 539 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $7 + local.get $2 local.get $1 call $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $6 return ) (func $~lib/array/Array#constructor (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -8799,15 +8722,15 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $2 - i32.const 2840 + i32.const 2480 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 478 + i32.const 2552 + i32.const 327 i32.const 2 call $~lib/builtins/abort unreachable @@ -8872,7 +8795,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -8891,6 +8813,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -8903,6 +8832,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8913,18 +8845,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -8971,83 +8893,33 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 3976 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 - i32.const 0 - i32.eqz - if - i32.const 2720 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2768 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2504 - i32.const 539 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $7 + local.get $2 local.get $1 call $~lib/nearEntry/decodeArray - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $6 return ) (func $~lib/array/Array#constructor (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -9125,15 +8997,15 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $2 - i32.const 2840 + i32.const 2480 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 478 + i32.const 2552 + i32.const 327 i32.const 2 call $~lib/builtins/abort unreachable @@ -9198,7 +9070,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -9217,6 +9088,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -9229,6 +9107,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -9239,18 +9120,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -9297,83 +9168,33 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 4048 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 - i32.const 0 - i32.eqz - if - i32.const 2720 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2768 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2504 - i32.const 539 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $7 + local.get $2 local.get $1 call $~lib/nearEntry/decodeArray - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $6 return ) (func $~lib/bignum/integer/u128/u128#constructor (; 152 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) @@ -9394,35 +9215,131 @@ i64.store offset=8 local.get $0 ) - (func $~lib/bignum/integer/u128/u128#decode (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/Array#__unchecked_get (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/stub/__retain - drop + i32.const 0 + i32.shl + i32.add + i32.load8_u + ) + (func $~lib/array/Array#__get (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $2 - i32.const 4144 - call $~lib/nearEntry/decode - i64.store local.get $0 - local.get $2 - i32.const 4168 - call $~lib/nearEntry/decode - i64.store offset=8 + i32.load offset=8 + i32.const 0 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/rt/stub/__retain - local.set $3 - local.get $2 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/bignum/globals/__multi3 (; 155 ;) (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + local.get $1 + local.set $5 + local.get $3 + local.set $6 + local.get $5 + i64.const 4294967295 + i64.and + local.set $9 + local.get $6 + i64.const 4294967295 + i64.and + local.set $10 + local.get $9 + local.get $10 + i64.mul + local.set $11 + local.get $11 + i64.const 4294967295 + i64.and + local.set $12 + local.get $5 + i64.const 32 + i64.shr_u + local.set $5 + local.get $5 + local.get $10 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.set $11 + local.get $11 + i64.const 4294967295 + i64.and + local.set $8 + local.get $11 + i64.const 32 + i64.shr_u + local.set $7 + local.get $6 + i64.const 32 + i64.shr_u + local.set $6 + local.get $9 + local.get $6 + i64.mul + local.get $8 + i64.add + local.set $11 + local.get $12 + local.get $11 + i64.const 32 + i64.shl + i64.add + local.set $13 + local.get $5 + local.get $6 + i64.mul + local.get $7 + i64.add + local.set $14 + local.get $14 + local.get $2 local.get $3 + i64.mul + i64.add + local.set $14 + local.get $14 + local.get $1 + local.get $4 + i64.mul + i64.add + local.set $14 + local.get $14 + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.set $14 + local.get $13 + global.set $~lib/bignum/globals/__res128_lo + local.get $14 + global.set $~lib/bignum/globals/__res128_hi ) - (func $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/bignum/utils/atou128 (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9430,23 +9347,1082 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) + (local $17 i64) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.tee $3 i32.eqz + if + i32.const 10 + local.set $1 + end + local.get $1 + i32.const 2 + i32.lt_s if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + local.get $0 + call $~lib/rt/stub/__release + i32.const 3640 + i32.const 3688 + i32.const 133 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $0 + i32.const 0 + call $~lib/string/String#charCodeAt + local.set $5 + local.get $2 + i32.const 1 + i32.eq + if (result i32) + local.get $5 + i32.const 48 + i32.eq else + i32.const 0 + end + if + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 local.get $3 - i32.const 8 - call $~lib/rt/__instanceof + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $5 + i32.const 45 + i32.eq + local.set $6 + local.get $6 + if (result i32) + local.get $6 + else + local.get $5 + i32.const 43 + i32.eq + end + local.set $7 + local.get $0 + local.get $7 + call $~lib/string/String#charCodeAt + i32.const 48 + i32.eq + if + local.get $0 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + call $~lib/string/String#charCodeAt + local.set $3 + local.get $3 + i32.const 120 + i32.eq + if (result i32) + i32.const 1 + else + local.get $3 + i32.const 88 + i32.eq + end + if + i32.const 16 + local.set $1 + local.get $7 + i32.const 1 + i32.add + local.set $7 + else + local.get $3 + i32.const 111 + i32.eq + if (result i32) + i32.const 1 + else + local.get $3 + i32.const 79 + i32.eq + end + if + i32.const 8 + local.set $1 + local.get $7 + i32.const 1 + i32.add + local.set $7 + else + local.get $3 + i32.const 98 + i32.eq + if (result i32) + i32.const 1 + else + local.get $3 + i32.const 66 + i32.eq + end + if + i32.const 2 + local.set $1 + local.get $7 + i32.const 1 + i32.add + local.set $7 + end + end + end + end + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $8 + global.get $~lib/bignum/utils/RadixCharsTable + call $~lib/rt/stub/__retain + local.set $9 + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $4 + local.get $4 + i32.const 2 + i32.eq + br_if $case0|0 + local.get $4 + i32.const 10 + i32.eq + br_if $case1|0 + local.get $4 + i32.const 16 + i32.eq + br_if $case2|0 + br $case3|0 + end + block $break|1 + loop $continue|1 + local.get $0 + local.get $7 + call $~lib/string/String#charCodeAt + i32.const 48 + i32.sub + local.set $4 + local.get $4 + i32.const 2 + i32.ge_u + if + br $break|1 + end + local.get $8 + call $~lib/rt/stub/__retain + local.set $11 + i32.const 1 + local.set $10 + local.get $10 + i32.const 127 + i32.and + local.set $10 + local.get $10 + i64.extend_i32_s + local.set $12 + local.get $12 + i64.const 127 + i64.add + local.get $12 + i64.or + i64.const 64 + i64.and + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $13 + local.get $12 + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $14 + local.get $12 + i64.const 63 + i64.and + local.set $12 + local.get $11 + i64.load + local.set $15 + local.get $15 + local.get $12 + i64.shl + local.set $16 + local.get $16 + local.get $14 + i64.const -1 + i64.xor + i64.and + local.set $17 + local.get $17 + local.get $11 + i64.load offset=8 + local.get $12 + i64.shl + local.get $15 + i64.const 64 + local.get $12 + i64.sub + i64.shr_u + local.get $13 + i64.and + i64.or + local.get $14 + i64.and + i64.or + local.set $17 + i32.const 0 + local.get $16 + local.get $14 + i64.and + local.get $17 + call $~lib/bignum/integer/u128/u128#constructor + local.set $18 + local.get $11 + call $~lib/rt/stub/__release + local.get $18 + local.tee $11 + local.tee $18 + local.get $8 + local.tee $10 + i32.ne + if + local.get $18 + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release + end + local.get $18 + local.set $8 + local.get $8 + call $~lib/rt/stub/__retain + local.set $19 + local.get $4 + i64.extend_i32_u + local.set $12 + i32.const 0 + local.get $12 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $18 + call $~lib/rt/stub/__retain + local.set $10 + i32.const 0 + local.get $19 + i64.load + local.get $10 + i64.load + i64.or + local.get $19 + i64.load offset=8 + local.get $10 + i64.load offset=8 + i64.or + call $~lib/bignum/integer/u128/u128#constructor + local.set $20 + local.get $10 + call $~lib/rt/stub/__release + local.get $19 + call $~lib/rt/stub/__release + local.get $20 + local.tee $19 + local.tee $20 + local.get $8 + local.tee $10 + i32.ne + if + local.get $20 + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release + end + local.get $20 + local.set $8 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + local.get $2 + i32.lt_s + br_if $continue|1 + end + end + br $break|0 + end + block $break|2 + loop $continue|2 + local.get $0 + local.get $7 + call $~lib/string/String#charCodeAt + i32.const 48 + i32.sub + local.set $19 + local.get $19 + i32.const 10 + i32.ge_u + if + br $break|2 + end + local.get $8 + call $~lib/rt/stub/__retain + local.set $20 + i32.const 3 + local.set $10 + local.get $10 + i32.const 127 + i32.and + local.set $10 + local.get $10 + i64.extend_i32_s + local.set $12 + local.get $12 + i64.const 127 + i64.add + local.get $12 + i64.or + i64.const 64 + i64.and + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $17 + local.get $12 + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $16 + local.get $12 + i64.const 63 + i64.and + local.set $12 + local.get $20 + i64.load + local.set $15 + local.get $15 + local.get $12 + i64.shl + local.set $14 + local.get $14 + local.get $16 + i64.const -1 + i64.xor + i64.and + local.set $13 + local.get $13 + local.get $20 + i64.load offset=8 + local.get $12 + i64.shl + local.get $15 + i64.const 64 + local.get $12 + i64.sub + i64.shr_u + local.get $17 + i64.and + i64.or + local.get $16 + i64.and + i64.or + local.set $13 + i32.const 0 + local.get $14 + local.get $16 + i64.and + local.get $13 + call $~lib/bignum/integer/u128/u128#constructor + local.set $18 + local.get $20 + call $~lib/rt/stub/__release + local.get $18 + local.tee $20 + call $~lib/rt/stub/__retain + local.set $21 + local.get $8 + call $~lib/rt/stub/__retain + local.set $11 + i32.const 1 + local.set $4 + local.get $4 + i32.const 127 + i32.and + local.set $4 + local.get $4 + i64.extend_i32_s + local.set $13 + local.get $13 + i64.const 127 + i64.add + local.get $13 + i64.or + i64.const 64 + i64.and + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $14 + local.get $13 + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $15 + local.get $13 + i64.const 63 + i64.and + local.set $13 + local.get $11 + i64.load + local.set $16 + local.get $16 + local.get $13 + i64.shl + local.set $17 + local.get $17 + local.get $15 + i64.const -1 + i64.xor + i64.and + local.set $12 + local.get $12 + local.get $11 + i64.load offset=8 + local.get $13 + i64.shl + local.get $16 + i64.const 64 + local.get $13 + i64.sub + i64.shr_u + local.get $14 + i64.and + i64.or + local.get $15 + i64.and + i64.or + local.set $12 + i32.const 0 + local.get $17 + local.get $15 + i64.and + local.get $12 + call $~lib/bignum/integer/u128/u128#constructor + local.set $10 + local.get $11 + call $~lib/rt/stub/__release + local.get $10 + local.tee $11 + call $~lib/rt/stub/__retain + local.set $18 + local.get $18 + i64.load + local.set $12 + local.get $21 + i64.load + local.get $12 + i64.add + local.set $17 + local.get $21 + i64.load offset=8 + local.get $18 + i64.load offset=8 + i64.add + local.get $17 + local.get $12 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $16 + i32.const 0 + local.get $17 + local.get $16 + call $~lib/bignum/integer/u128/u128#constructor + local.set $4 + local.get $18 + call $~lib/rt/stub/__release + local.get $21 + call $~lib/rt/stub/__release + local.get $4 + local.tee $21 + local.tee $10 + local.get $8 + local.tee $18 + i32.ne + if + local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $18 + call $~lib/rt/stub/__release + end + local.get $10 + local.set $8 + local.get $8 + call $~lib/rt/stub/__retain + local.set $18 + local.get $19 + i64.extend_i32_u + local.set $13 + i32.const 0 + local.get $13 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $10 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + i64.load + local.set $13 + local.get $18 + i64.load + local.get $13 + i64.add + local.set $16 + local.get $18 + i64.load offset=8 + local.get $4 + i64.load offset=8 + i64.add + local.get $16 + local.get $13 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $17 + i32.const 0 + local.get $16 + local.get $17 + call $~lib/bignum/integer/u128/u128#constructor + local.set $22 + local.get $4 + call $~lib/rt/stub/__release + local.get $18 + call $~lib/rt/stub/__release + local.get $22 + local.tee $18 + local.tee $22 + local.get $8 + local.tee $4 + i32.ne + if + local.get $22 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $22 + local.set $8 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + local.get $2 + i32.lt_s + br_if $continue|2 + end + end + br $break|0 + end + block $break|3 + loop $continue|3 + local.get $0 + local.get $7 + call $~lib/string/String#charCodeAt + i32.const 48 + i32.sub + local.set $18 + local.get $18 + i32.const 74 + i32.gt_u + if + br $break|3 + end + local.get $9 + local.get $18 + call $~lib/array/Array#__get + local.set $10 + local.get $10 + i32.const 16 + i32.ge_u + if + br $break|3 + end + local.get $8 + call $~lib/rt/stub/__retain + local.set $22 + i32.const 4 + local.set $4 + local.get $4 + i32.const 127 + i32.and + local.set $4 + local.get $4 + i64.extend_i32_s + local.set $17 + local.get $17 + i64.const 127 + i64.add + local.get $17 + i64.or + i64.const 64 + i64.and + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $16 + local.get $17 + i64.const 6 + i64.shr_u + i64.const 1 + i64.sub + local.set $13 + local.get $17 + i64.const 63 + i64.and + local.set $17 + local.get $22 + i64.load + local.set $12 + local.get $12 + local.get $17 + i64.shl + local.set $15 + local.get $15 + local.get $13 + i64.const -1 + i64.xor + i64.and + local.set $14 + local.get $14 + local.get $22 + i64.load offset=8 + local.get $17 + i64.shl + local.get $12 + i64.const 64 + local.get $17 + i64.sub + i64.shr_u + local.get $16 + i64.and + i64.or + local.get $13 + i64.and + i64.or + local.set $14 + i32.const 0 + local.get $15 + local.get $13 + i64.and + local.get $14 + call $~lib/bignum/integer/u128/u128#constructor + local.set $21 + local.get $22 + call $~lib/rt/stub/__release + local.get $21 + local.tee $22 + local.tee $19 + local.get $8 + local.tee $4 + i32.ne + if + local.get $19 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $19 + local.set $8 + local.get $8 + call $~lib/rt/stub/__retain + local.set $11 + local.get $10 + i64.extend_i32_u + local.set $17 + i32.const 0 + local.get $17 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $19 + call $~lib/rt/stub/__retain + local.set $20 + i32.const 0 + local.get $11 + i64.load + local.get $20 + i64.load + i64.or + local.get $11 + i64.load offset=8 + local.get $20 + i64.load offset=8 + i64.or + call $~lib/bignum/integer/u128/u128#constructor + local.set $4 + local.get $20 + call $~lib/rt/stub/__release + local.get $11 + call $~lib/rt/stub/__release + local.get $4 + local.tee $11 + local.tee $21 + local.get $8 + local.tee $20 + i32.ne + if + local.get $21 + call $~lib/rt/stub/__retain + drop + local.get $20 + call $~lib/rt/stub/__release + end + local.get $21 + local.set $8 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + local.get $2 + i32.lt_s + br_if $continue|3 + end + end + br $break|0 + end + local.get $1 + i64.extend_i32_s + local.set $16 + i32.const 0 + local.get $16 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.set $11 + block $break|4 + loop $continue|4 + local.get $0 + local.get $7 + call $~lib/string/String#charCodeAt + i32.const 48 + i32.sub + local.set $19 + local.get $19 + i32.const 74 + i32.gt_u + if + br $break|4 + end + local.get $9 + local.get $19 + call $~lib/array/Array#__get + local.set $22 + local.get $22 + local.get $1 + i32.const 255 + i32.and + i32.ge_u + if + br $break|4 + end + local.get $8 + call $~lib/rt/stub/__retain + local.set $20 + local.get $11 + call $~lib/rt/stub/__retain + local.set $4 + i32.const 0 + local.get $20 + i64.load + local.get $20 + i64.load offset=8 + local.get $4 + i64.load + local.get $4 + i64.load offset=8 + call $~lib/bignum/globals/__multi3 + i32.const 0 + global.get $~lib/bignum/globals/__res128_lo + global.get $~lib/bignum/globals/__res128_hi + call $~lib/bignum/integer/u128/u128#constructor + local.set $10 + local.get $4 + call $~lib/rt/stub/__release + local.get $20 + call $~lib/rt/stub/__release + local.get $10 + local.tee $20 + local.tee $21 + local.get $8 + local.tee $4 + i32.ne + if + local.get $21 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $21 + local.set $8 + local.get $8 + call $~lib/rt/stub/__retain + local.set $10 + local.get $22 + i64.extend_i32_u + local.set $13 + i32.const 0 + local.get $13 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $21 + call $~lib/rt/stub/__retain + local.set $18 + local.get $18 + i64.load + local.set $13 + local.get $10 + i64.load + local.get $13 + i64.add + local.set $16 + local.get $10 + i64.load offset=8 + local.get $18 + i64.load offset=8 + i64.add + local.get $16 + local.get $13 + i64.lt_u + i64.extend_i32_u + i64.add + local.set $17 + i32.const 0 + local.get $16 + local.get $17 + call $~lib/bignum/integer/u128/u128#constructor + local.set $4 + local.get $18 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $4 + local.tee $10 + local.tee $4 + local.get $8 + local.tee $18 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $18 + call $~lib/rt/stub/__release + end + local.get $4 + local.set $8 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + local.get $2 + i32.lt_s + br_if $continue|4 + end + end + local.get $11 + call $~lib/rt/stub/__release + br $break|0 + end + local.get $6 + if (result i32) + local.get $8 + local.set $18 + local.get $18 + i64.load + i64.const -1 + i64.xor + local.set $17 + local.get $18 + i64.load offset=8 + i64.const -1 + i64.xor + local.set $16 + local.get $17 + i64.const 1 + i64.and + local.get $17 + i64.const 1 + i64.shr_u + i64.add + i64.const 63 + i64.shr_u + local.set $13 + i32.const 0 + local.get $17 + i64.const 1 + i64.add + local.get $16 + local.get $13 + i64.add + call $~lib/bignum/integer/u128/u128#constructor + local.tee $18 + local.tee $11 + else + local.get $8 + call $~lib/rt/stub/__retain + local.tee $10 + end + call $~lib/rt/stub/__retain + local.set $18 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $18 + ) + (func $~lib/bignum/integer/u128/u128#decode (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + i32.const 3896 + call $~lib/nearEntry/Obj#has + if (result i64) + local.get $1 + i32.const 3896 + call $~lib/nearEntry/decode + else + local.get $0 + i64.load + end + i64.store + local.get $0 + local.get $1 + i32.const 3920 + call $~lib/nearEntry/Obj#has + if (result i64) + local.get $1 + i32.const 3920 + call $~lib/nearEntry/decode + else + local.get $0 + i64.load offset=8 + end + i64.store offset=8 + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $0 + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 end if local.get $0 @@ -9460,6 +10436,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -9470,18 +10449,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -9529,38 +10498,85 @@ end if i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $6 + return + end + i32.const 0 + local.set $7 + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__retain + local.set $5 + local.get $3 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof + end i32.eqz if i32.const 2432 - local.get $1 + local.get $5 call $~lib/string/String.__concat local.tee $6 - i32.const 2560 + i32.const 3416 call $~lib/string/String.__concat local.tee $4 - i32.const 4120 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 + i32.const 2552 + i32.const 320 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 0 + local.get $3 + i32.load call $~lib/rt/stub/__retain - local.set $7 + local.set $8 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 + local.get $8 + local.set $8 + i32.const 0 + local.set $4 + local.get $8 + local.get $4 + call $~lib/bignum/utils/atou128 + local.set $6 + local.get $8 call $~lib/rt/stub/__release + local.get $6 + local.set $4 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -9568,31 +10584,37 @@ local.get $2 call $~lib/rt/stub/__release local.get $7 + call $~lib/rt/stub/__release + local.get $4 return end - i32.const 0 - local.set $8 local.get $2 - local.tee $5 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 2944 + local.tee $4 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $8 + i32.const 3872 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2680 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 543 + i32.const 2552 + i32.const 399 i32.const 2 call $~lib/builtins/abort unreachable @@ -9601,41 +10623,45 @@ i64.const 0 i64.const 0 call $~lib/bignum/integer/u128/u128#constructor - local.tee $4 - local.tee $7 - local.get $8 - local.tee $6 + local.tee $5 + local.tee $9 + local.get $7 + local.tee $10 i32.ne if - local.get $7 + local.get $9 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $10 call $~lib/rt/stub/__release end + local.get $9 + local.set $7 local.get $7 - local.set $8 - local.get $8 local.get $2 call $~lib/bignum/integer/u128/u128#decode - local.set $7 + local.set $9 local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $6 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release local.get $7 + call $~lib/rt/stub/__release + local.get $9 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -9666,7 +10692,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#push (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#push (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9702,7 +10728,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9728,15 +10754,15 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $2 - i32.const 2840 + i32.const 2480 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 478 + i32.const 2552 + i32.const 327 i32.const 2 call $~lib/builtins/abort unreachable @@ -9796,14 +10822,13 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -9822,6 +10847,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -9834,6 +10866,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -9844,18 +10879,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -9902,86 +10927,36 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 4232 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 - i32.const 0 - i32.eqz - if - i32.const 2720 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2768 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2504 - i32.const 539 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $7 + local.get $2 local.get $1 call $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $6 return ) - (func $~lib/array/Array#constructor (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -10003,7 +10978,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#push (; 160 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/array/Array#push (; 164 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -10030,7 +11005,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/nearEntry/decodeArray (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10056,15 +11031,15 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $2 - i32.const 2840 + i32.const 2480 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 478 + i32.const 2552 + i32.const 327 i32.const 2 call $~lib/builtins/abort unreachable @@ -10122,14 +11097,13 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -10148,6 +11122,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -10160,6 +11141,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -10170,18 +11154,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -10228,223 +11202,287 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 4352 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 - i32.const 0 - i32.eqz - if - i32.const 2720 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2768 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2504 - i32.const 539 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $7 + local.get $2 local.get $1 call $~lib/nearEntry/decodeArray - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $6 return ) - (func $assembly/model/FooBar#decode (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/FooBar#decode (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 - local.get $2 - i32.const 3040 - call $~lib/nearEntry/decode + local.get $1 + i32.const 2776 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 2776 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load + end i32.store local.get $0 - local.get $2 - i32.const 3144 - call $~lib/nearEntry/decode + local.get $1 + i32.const 2960 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 2960 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load offset=4 + end i32.store offset=4 local.get $0 - local.get $2 - i32.const 3192 - call $~lib/nearEntry/decode + local.get $1 + i32.const 3008 + call $~lib/nearEntry/Obj#has + if (result i64) + local.get $1 + i32.const 3008 + call $~lib/nearEntry/decode + else + local.get $0 + i64.load offset=8 + end i64.store offset=8 local.get $0 - local.get $2 - i32.const 3392 - call $~lib/nearEntry/decode + local.get $1 + i32.const 3208 + call $~lib/nearEntry/Obj#has + if (result i64) + local.get $1 + i32.const 3208 + call $~lib/nearEntry/decode + else + local.get $0 + i64.load offset=16 + end i64.store offset=16 local.get $0 - local.get $2 - i32.const 3424 - call $~lib/nearEntry/decode + local.get $1 + i32.const 3240 + call $~lib/nearEntry/Obj#has + if (result i64) + local.get $1 + i32.const 3240 + call $~lib/nearEntry/decode + else + local.get $0 + i64.load offset=24 + end i64.store offset=24 local.get $0 - local.get $2 - i32.const 3480 - call $~lib/nearEntry/decode + local.get $1 + i32.const 3296 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 3296 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load8_u offset=32 + end i32.store8 offset=32 local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 3392 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 3392 + call $~lib/nearEntry/decode<~lib/string/String> + else + local.get $0 + i32.load offset=36 + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 3576 - call $~lib/nearEntry/decode<~lib/string/String> - local.set $4 - local.get $3 i32.load offset=36 call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store offset=36 local.get $0 - local.tee $4 - local.get $2 - i32.const 3664 - call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> - local.set $3 - local.get $4 + local.tee $3 + local.get $1 + i32.const 3480 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 3480 + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + else + local.get $0 + i32.load offset=40 + call $~lib/rt/stub/__retain + end + local.set $2 + local.get $3 i32.load offset=40 call $~lib/rt/stub/__release - local.get $3 + local.get $2 i32.store offset=40 local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 3520 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 3520 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> + else + local.get $0 + i32.load offset=44 + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 3744 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> - local.set $4 - local.get $3 i32.load offset=44 call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store offset=44 local.get $0 - local.tee $4 - local.get $2 - i32.const 3944 - call $~lib/nearEntry/decode<~lib/array/Array> - local.set $3 - local.get $4 + local.tee $3 + local.get $1 + i32.const 3544 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 3544 + call $~lib/nearEntry/decode<~lib/array/Array> + else + local.get $0 + i32.load offset=48 + call $~lib/rt/stub/__retain + end + local.set $2 + local.get $3 i32.load offset=48 call $~lib/rt/stub/__release - local.get $3 + local.get $2 i32.store offset=48 local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 3576 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 3576 + call $~lib/nearEntry/decode<~lib/array/Array> + else + local.get $0 + i32.load offset=52 + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 4016 - call $~lib/nearEntry/decode<~lib/array/Array> - local.set $4 - local.get $3 i32.load offset=52 call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store offset=52 local.get $0 - local.tee $4 - local.get $2 - i32.const 4088 - call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> - local.set $3 - local.get $4 + local.tee $3 + local.get $1 + i32.const 3608 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 3608 + call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> + else + local.get $0 + i32.load offset=56 + call $~lib/rt/stub/__retain + end + local.set $2 + local.get $3 i32.load offset=56 call $~lib/rt/stub/__release - local.get $3 + local.get $2 i32.store offset=56 local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 3944 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 3944 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> + else + local.get $0 + i32.load offset=60 + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 4192 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> - local.set $4 - local.get $3 i32.load offset=60 call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store offset=60 local.get $0 - local.tee $4 - local.get $2 - i32.const 4320 - call $~lib/nearEntry/decode<~lib/array/Array> - local.set $3 - local.get $4 + local.tee $3 + local.get $1 + i32.const 3984 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 3984 + call $~lib/nearEntry/decode<~lib/array/Array> + else + local.get $0 + i32.load offset=64 + call $~lib/rt/stub/__retain + end + local.set $2 + local.get $3 i32.load offset=64 call $~lib/rt/stub/__release - local.get $3 + local.get $2 i32.store offset=64 local.get $0 call $~lib/rt/stub/__retain - local.set $3 - local.get $2 - call $~lib/rt/stub/__release + local.set $2 local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $2 ) - (func $~lib/nearEntry/decode (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10452,6 +11490,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -10470,6 +11510,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -10482,6 +11529,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -10492,18 +11542,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -10540,122 +11580,115 @@ local.set $2 end local.get $2 - local.tee $6 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $6 - i32.const 22 - call $~lib/rt/__instanceof - end - if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 2912 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + local.tee $6 + i32.eqz + if (result i32) i32.const 0 - call $~lib/rt/stub/__retain - local.set $7 + else local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 + local.set $7 local.get $2 - local.tee $5 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 i32.const 8 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 2944 + local.tee $6 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2648 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 543 + i32.const 2680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2552 + i32.const 399 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/FooBar#constructor - local.tee $4 - local.tee $7 - local.get $8 - local.tee $6 + local.tee $8 + local.tee $9 + local.get $7 + local.tee $10 i32.ne if - local.get $7 + local.get $9 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $10 call $~lib/rt/stub/__release end + local.get $9 + local.set $7 local.get $7 - local.set $8 - local.get $8 local.get $2 call $assembly/model/FooBar#decode - local.set $7 + local.set $9 local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $8 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release local.get $7 + call $~lib/rt/stub/__release + local.get $9 ) - (func $~lib/array/Array#push (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10691,7 +11724,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10717,15 +11750,15 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $2 - i32.const 2840 + i32.const 2480 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 478 + i32.const 2552 + i32.const 327 i32.const 2 call $~lib/builtins/abort unreachable @@ -10785,14 +11818,13 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array> (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -10811,6 +11843,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -10823,6 +11862,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -10833,18 +11875,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -10891,86 +11923,36 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 2600 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 - i32.const 0 - i32.eqz - if - i32.const 2720 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2768 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2504 - i32.const 539 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $7 + local.get $2 local.get $1 call $~lib/nearEntry/decodeArray - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $6 return ) - (func $assembly/main/convertFoobars~anonymous|0 (; 168 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/main/convertFoobars~anonymous|0 (; 172 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -10997,7 +11979,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#map (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11072,7 +12054,7 @@ end local.get $3 ) - (func $assembly/main/convertFoobars (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/convertFoobars (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -11085,7 +12067,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/test/convertFoobars (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/convertFoobars (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -11097,14 +12079,14 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 i32.eqz if i32.const 8 - i32.const 31 + i32.const 32 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -11144,11 +12126,11 @@ drop local.get $0 ) - (func $~lib/array/Array#get:length (; 173 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 177 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -11157,7 +12139,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -11176,7 +12158,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -11186,7 +12168,7 @@ i32.sub call $~lib/array/Array#__get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 177 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 181 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -11198,7 +12180,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/array/Array#__unchecked_set (; 178 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 182 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -11208,7 +12190,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 179 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 183 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -11234,26 +12216,7 @@ i32.store offset=12 end ) - (func $~lib/string/String.__ne (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/string/String#substring (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11360,7 +12323,7 @@ local.get $10 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/decimalCount32 (; 182 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -11426,7 +12389,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 183 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 186 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11434,7 +12397,7 @@ (local $7 i32) (local $8 i64) (local $9 i64) - i32.const 5040 + i32.const 4664 i32.load offset=4 local.set $3 block $break|0 @@ -11568,7 +12531,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 184 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 187 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11623,12 +12586,12 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 188 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -11640,7 +12603,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 187 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 190 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11714,7 +12677,7 @@ i32.eq if local.get $0 - i32.const 4392 + i32.const 4016 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else local.get $4 @@ -11724,7 +12687,7 @@ i32.eq if local.get $0 - i32.const 4416 + i32.const 4040 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else local.get $4 @@ -11734,7 +12697,7 @@ i32.eq if local.get $0 - i32.const 4440 + i32.const 4064 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else local.get $4 @@ -11744,7 +12707,7 @@ i32.eq if local.get $0 - i32.const 4464 + i32.const 4088 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else local.get $4 @@ -11754,7 +12717,7 @@ i32.eq if local.get $0 - i32.const 4488 + i32.const 4112 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else local.get $4 @@ -11764,19 +12727,19 @@ i32.eq if local.get $0 - i32.const 4512 + i32.const 4136 call $~lib/assemblyscript-json/encoder/JSONEncoder#write else i32.const 0 i32.eqz if - i32.const 4536 + i32.const 4160 local.get $4 call $~lib/number/I32#toString local.tee $7 call $~lib/string/String.__concat local.tee $8 - i32.const 5072 + i32.const 4696 i32.const 108 i32.const 20 call $~lib/builtins/abort @@ -11819,7 +12782,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 188 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 191 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -11872,7 +12835,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 189 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 192 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -11885,7 +12848,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -11907,11 +12870,11 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#get:length (; 191 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -11921,7 +12884,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -11952,7 +12915,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -11974,7 +12937,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/util/number/decimalCount64 (; 195 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 198 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -12047,7 +13010,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 196 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 199 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -12059,7 +13022,7 @@ (local $11 i32) (local $12 i64) (local $13 i64) - i32.const 5040 + i32.const 4664 i32.load offset=4 local.set $3 block $break|0 @@ -12174,7 +13137,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/itoa64 (; 197 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 200 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12261,12 +13224,12 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 198 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 201 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/number/I64#toString (; 199 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/I64#toString (; 202 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12278,7 +13241,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 200 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 203 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) local.get $0 local.get $1 @@ -12288,7 +13251,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 201 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 204 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 call $~lib/rt/stub/__retain drop @@ -12301,7 +13264,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 205 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12320,7 +13283,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12339,7 +13302,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/number/utoa64 (; 204 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 207 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12404,12 +13367,12 @@ local.get $1 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 205 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 208 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/number/U64#toString (; 206 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/U64#toString (; 209 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12421,7 +13384,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 207 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 210 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -12439,7 +13402,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 208 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 211 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12461,7 +13424,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 209 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 212 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12483,7 +13446,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 210 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 213 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -12499,7 +13462,7 @@ end call $~lib/assemblyscript-json/encoder/JSONEncoder#write ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 211 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 214 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -12512,7 +13475,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12530,7 +13493,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/string/String> (; 213 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/string/String> (; 216 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12562,7 +13525,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/base64/base64.encode (; 214 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/base64/base64.encode (; 217 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12811,7 +13774,7 @@ call $~lib/rt/stub/__release local.get $6 ) - (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> (; 218 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12847,11 +13810,11 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length (; 216 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length (; 219 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12861,7 +13824,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -12892,7 +13855,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12902,7 +13865,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -12933,7 +13896,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $~lib/array/Array#pop (; 221 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 224 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12966,7 +13929,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 222 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 225 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 2072 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -12975,7 +13938,7 @@ call $~lib/array/Array#pop drop ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 226 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -13038,7 +14001,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -13101,11 +14064,11 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#get:length (; 225 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -13114,7 +14077,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -13133,7 +14096,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 228 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13192,7 +14155,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 229 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13251,13 +14214,13 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#constructor (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#constructor (; 233 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 32 + i32.const 33 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end @@ -13267,11 +14230,11 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Int8Array#get:length (; 231 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:length (; 234 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Int8Array#__get (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -13290,7 +14253,7 @@ i32.add i32.load8_s ) - (func $~lib/typedarray/Int8Array#__set (; 233 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#__set (; 236 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -13310,7 +14273,7 @@ local.get $2 i32.store8 ) - (func $~lib/bignum/utils/processU64 (; 234 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/bignum/utils/processU64 (; 237 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13442,7 +14405,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $~lib/bignum/utils/u128toa10 (; 235 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/bignum/utils/u128toa10 (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13532,7 +14495,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/bignum/integer/u128/u128#toString (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/bignum/integer/u128/u128#toString (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13563,8 +14526,8 @@ end i32.eqz if - i32.const 5192 - i32.const 5288 + i32.const 4816 + i32.const 4912 i32.const 733 i32.const 4 call $~lib/builtins/abort @@ -13763,7 +14726,7 @@ return end end - i32.const 5360 + i32.const 4984 call $~lib/rt/stub/__retain local.set $2 local.get $3 @@ -13772,7 +14735,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> (; 237 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13834,11 +14797,11 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -13848,7 +14811,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__get (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__get (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -13879,7 +14842,7 @@ local.get $1 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -13942,11 +14905,11 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#get:length (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 245 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 243 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 246 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -13955,7 +14918,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 244 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 247 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -13974,7 +14937,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14033,7 +14996,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 246 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 249 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 1160 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -14042,7 +15005,7 @@ call $~lib/array/Array#pop drop ) - (func $assembly/model/FooBar#encode (; 247 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/FooBar#encode (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -14076,85 +15039,85 @@ local.get $3 local.get $0 i32.load - i32.const 3040 + i32.const 2776 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=4 - i32.const 3144 + i32.const 2960 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i64.load offset=8 - i32.const 3192 + i32.const 3008 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i64.load offset=16 - i32.const 3392 + i32.const 3208 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i64.load offset=24 - i32.const 3424 + i32.const 3240 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load8_u offset=32 - i32.const 3480 + i32.const 3296 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=36 - i32.const 3576 + i32.const 3392 call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=40 - i32.const 3664 + i32.const 3480 call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=44 - i32.const 3744 + i32.const 3520 call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=48 - i32.const 3944 + i32.const 3544 call $~lib/nearEntry/encode<~lib/array/Array> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=52 - i32.const 4016 + i32.const 3576 call $~lib/nearEntry/encode<~lib/array/Array> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=56 - i32.const 4088 + i32.const 3608 call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=60 - i32.const 4192 + i32.const 3944 call $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=64 - i32.const 4320 + i32.const 3984 call $~lib/nearEntry/encode<~lib/array/Array> call $~lib/rt/stub/__release local.get $3 @@ -14167,7 +15130,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14200,7 +15163,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/model/ContainerClass#encode (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/ContainerClass#encode (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -14234,7 +15197,7 @@ local.get $3 local.get $0 i32.load - i32.const 5160 + i32.const 4784 call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 @@ -14247,7 +15210,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14280,7 +15243,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 254 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -14343,13 +15306,13 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.const 816 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/string/String.UTF8.byteLength (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.byteLength (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14472,7 +15435,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/string/String.UTF8.encode (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.encode (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14724,7 +15687,7 @@ call $~lib/rt/stub/__release local.get $6 ) - (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14758,7 +15721,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -14770,7 +15733,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/test/__wrapper_convertFoobars (; 257 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_convertFoobars (; 260 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -14847,7 +15810,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/util/util.toUTF8 (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.toUTF8 (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -14864,7 +15827,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/util/util.stringToBytes (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.stringToBytes (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14894,7 +15857,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/logging/logging.log (; 260 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/near-runtime-ts/logging/logging.log (; 263 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14914,7 +15877,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/main/getStringArrayLength (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/getStringArrayLength (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14925,7 +15888,7 @@ local.get $0 call $~lib/array/Array<~lib/string/String>#get:length local.set $1 - i32.const 5400 + i32.const 5024 local.get $1 call $~lib/number/I32#toString local.tee $2 @@ -14943,7 +15906,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/test/getStringArrayLength (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/getStringArrayLength (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14955,7 +15918,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/test/__wrapper_getStringArrayLength (; 263 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_getStringArrayLength (; 266 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -14991,7 +15954,7 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 3744 + i32.const 3520 call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> local.tee $4 call $assembly/test/getStringArrayLength @@ -15030,7 +15993,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/model/ContainerClass#constructor (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/ContainerClass#constructor (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -15045,37 +16008,40 @@ i32.store local.get $0 ) - (func $assembly/model/ContainerClass#decode (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/ContainerClass#decode (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 4784 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 4784 + call $~lib/nearEntry/decode + else + local.get $0 + i32.load + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 5160 - call $~lib/nearEntry/decode - local.set $4 - local.get $3 i32.load call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store local.get $0 call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $3 ) - (func $~lib/nearEntry/decode (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15083,6 +16049,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -15101,6 +16069,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -15113,6 +16088,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -15123,18 +16101,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -15181,117 +16149,110 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 5504 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 + local.set $7 local.get $2 - local.tee $5 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 i32.const 8 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 2944 + local.tee $6 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $4 + i32.const 5128 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 543 + i32.const 2680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2552 + i32.const 399 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/ContainerClass#constructor - local.tee $4 - local.tee $7 - local.get $8 - local.tee $6 + local.tee $8 + local.tee $9 + local.get $7 + local.tee $10 i32.ne if - local.get $7 + local.get $9 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $10 call $~lib/rt/stub/__release end + local.get $9 + local.set $7 local.get $7 - local.set $8 - local.get $8 local.get $2 call $assembly/model/ContainerClass#decode - local.set $7 + local.set $9 local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $8 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release local.get $7 + call $~lib/rt/stub/__release + local.get $9 ) - (func $assembly/model/AnotherContainerClass#constructor (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/AnotherContainerClass#constructor (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - i32.const 33 + i32.const 34 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -15301,7 +16262,7 @@ i32.store local.get $0 ) - (func $assembly/main/rewrapFoobar (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/rewrapFoobar (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15317,7 +16278,7 @@ local.tee $3 i32.const 1 i32.const 2 - i32.const 34 + i32.const 35 i32.const 0 call $~lib/rt/__allocArray local.set $2 @@ -15363,7 +16324,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/test/rewrapFoobar (; 269 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/rewrapFoobar (; 272 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -15375,11 +16336,11 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#get:length (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#get:length (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -15389,7 +16350,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -15420,11 +16381,11 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $~lib/array/Array#get:length (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 276 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -15434,7 +16395,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -15465,7 +16426,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -15528,7 +16489,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> (; 277 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -15591,7 +16552,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/model/AnotherContainerClass#encode (; 278 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/AnotherContainerClass#encode (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -15638,7 +16599,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -15671,7 +16632,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/test/__wrapper_rewrapFoobar (; 280 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_rewrapFoobar (; 283 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -15707,7 +16668,7 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 5464 + i32.const 5088 call $~lib/nearEntry/decode local.tee $4 call $assembly/test/rewrapFoobar @@ -15748,13 +16709,13 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/array/Array>#constructor (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#constructor (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else i32.const 16 - i32.const 34 + i32.const 35 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end @@ -15779,7 +16740,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#push (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#push (; 285 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15815,7 +16776,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray<~lib/array/Array> (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/array/Array> (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15841,15 +16802,15 @@ end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat local.tee $2 - i32.const 2840 + i32.const 2480 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 478 + i32.const 2552 + i32.const 327 i32.const 2 call $~lib/builtins/abort unreachable @@ -15909,14 +16870,13 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -15935,6 +16895,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -15947,6 +16914,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -15957,18 +16927,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -16015,116 +16975,69 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 5616 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 - i32.const 0 - i32.eqz - if - i32.const 2720 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2768 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2504 - i32.const 539 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $7 + local.get $2 local.get $1 call $~lib/nearEntry/decodeArray<~lib/array/Array> - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $6 return ) - (func $assembly/model/AnotherContainerClass#decode (; 285 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/AnotherContainerClass#decode (; 288 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 - local.tee $3 - local.get $2 + local.tee $2 + local.get $1 i32.const 2304 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> - local.set $4 - local.get $3 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 2304 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> + else + local.get $0 + i32.load + call $~lib/rt/stub/__retain + end + local.set $3 + local.get $2 i32.load call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store local.get $0 call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $3 ) - (func $~lib/nearEntry/decode (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16132,6 +17045,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -16150,6 +17065,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -16162,6 +17084,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -16172,18 +17097,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -16230,112 +17145,105 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 5552 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 + local.set $7 local.get $2 - local.tee $5 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 i32.const 8 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 2944 + local.tee $6 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $4 + i32.const 5176 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 543 + i32.const 2680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2552 + i32.const 399 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/AnotherContainerClass#constructor - local.tee $4 - local.tee $7 - local.get $8 - local.tee $6 + local.tee $8 + local.tee $9 + local.get $7 + local.tee $10 i32.ne if - local.get $7 + local.get $9 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $10 call $~lib/rt/stub/__release end - local.get $7 - local.set $8 - local.get $8 + local.get $9 + local.set $7 + local.get $7 local.get $2 call $assembly/model/AnotherContainerClass#decode - local.set $7 + local.set $9 local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $8 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release local.get $7 + call $~lib/rt/stub/__release + local.get $9 ) - (func $assembly/main/unwrapFoobar (; 287 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/unwrapFoobar (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -16355,7 +17263,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/test/unwrapFoobar (; 288 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/unwrapFoobar (; 291 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -16367,7 +17275,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/test/__wrapper_unwrapFoobar (; 289 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_unwrapFoobar (; 292 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -16403,7 +17311,7 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 5464 + i32.const 5088 call $~lib/nearEntry/decode local.tee $4 call $assembly/test/unwrapFoobar @@ -16444,14 +17352,14 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/main/stringOrNull (; 290 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/main/stringOrNull (; 293 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/rt/stub/__retain ) - (func $assembly/test/stringOrNull (; 291 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/test/stringOrNull (; 294 ;) (type $FUNCSIG$i) (result i32) call $assembly/main/stringOrNull ) - (func $assembly/test/__wrapper_stringOrNull (; 292 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_stringOrNull (; 295 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16501,7 +17409,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 293 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 296 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -16532,7 +17440,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 294 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 297 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -16562,7 +17470,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 295 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 298 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -16606,7 +17514,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/model/FooBar#toJSON (; 296 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/FooBar#toJSON (; 299 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -16620,12 +17528,12 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/model/Nullables#constructor (; 297 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#constructor (; 300 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 12 - i32.const 35 + i32.const 36 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -16641,7 +17549,7 @@ i32.store offset=8 local.get $0 ) - (func $assembly/model/Nullables#encode (; 298 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/Nullables#encode (; 301 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -16675,19 +17583,19 @@ local.get $3 local.get $0 i32.load - i32.const 6136 + i32.const 5624 call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=4 - i32.const 4120 + i32.const 3872 call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> call $~lib/rt/stub/__release local.get $3 local.get $0 i32.load offset=8 - i32.const 6160 + i32.const 5648 call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> call $~lib/rt/stub/__release local.get $3 @@ -16700,7 +17608,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/model/Nullables#serialize (; 299 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#serialize (; 302 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -16714,59 +17622,80 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/model/Nullables#decode (; 300 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/Nullables#decode (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $1 call $~lib/rt/stub/__retain drop - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 5624 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 5624 + call $~lib/nearEntry/decode<~lib/string/String> + else + local.get $0 + i32.load + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 6136 - call $~lib/nearEntry/decode<~lib/string/String> - local.set $4 - local.get $3 i32.load call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store local.get $0 - local.tee $4 - local.get $2 - i32.const 4120 - call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> - local.set $3 - local.get $4 + local.tee $3 + local.get $1 + i32.const 3872 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 3872 + call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> + else + local.get $0 + i32.load offset=4 + call $~lib/rt/stub/__retain + end + local.set $2 + local.get $3 i32.load offset=4 call $~lib/rt/stub/__release - local.get $3 + local.get $2 i32.store offset=4 local.get $0 - local.tee $3 + local.tee $2 + local.get $1 + i32.const 5648 + call $~lib/nearEntry/Obj#has + if (result i32) + local.get $1 + i32.const 5648 + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + else + local.get $0 + i32.load offset=8 + call $~lib/rt/stub/__retain + end + local.set $3 local.get $2 - i32.const 6160 - call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> - local.set $4 - local.get $3 i32.load offset=8 call $~lib/rt/stub/__release - local.get $4 + local.get $3 i32.store offset=8 local.get $0 call $~lib/rt/stub/__retain - local.set $4 - local.get $2 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $3 ) - (func $~lib/nearEntry/decode (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 304 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16774,6 +17703,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -16792,6 +17723,13 @@ i32.const 8 call $~lib/rt/__instanceof end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end if local.get $0 call $~lib/rt/stub/__retain @@ -16804,6 +17742,9 @@ i32.const 0 i32.eq if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -16814,18 +17755,8 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2464 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2504 - i32.const 497 - i32.const 6 - call $~lib/builtins/abort - unreachable + local.get $5 + return end local.get $4 local.tee $5 @@ -16872,112 +17803,105 @@ call $~lib/rt/__instanceof end if - i32.const 0 - i32.eqz - if - i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $6 - i32.const 2560 - call $~lib/string/String.__concat - local.tee $4 - i32.const 6200 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2672 - call $~lib/string/String.__concat - local.tee $5 - i32.const 2504 - i32.const 504 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $6 return end i32.const 0 - local.set $8 + local.set $7 local.get $2 - local.tee $5 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $2 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 i32.const 8 call $~lib/rt/__instanceof end i32.eqz if - i32.const 2720 + i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 - i32.const 2944 + local.tee $6 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $4 + i32.const 5688 call $~lib/string/String.__concat local.tee $3 - i32.const 2504 - i32.const 543 + i32.const 2680 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2552 + i32.const 399 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/Nullables#constructor - local.tee $4 - local.tee $7 - local.get $8 - local.tee $6 + local.tee $8 + local.tee $9 + local.get $7 + local.tee $10 i32.ne if - local.get $7 + local.get $9 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $10 call $~lib/rt/stub/__release end + local.get $9 + local.set $7 local.get $7 - local.set $8 - local.get $8 local.get $2 call $assembly/model/Nullables#decode - local.set $7 + local.set $9 local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $8 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release local.get $7 + call $~lib/rt/stub/__release + local.get $9 ) - (func $assembly/test/runTest (; 302 ;) (type $FUNCSIG$v) + (func $assembly/test/runTest (; 305 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17008,8 +17932,7 @@ (local $27 i32) (local $28 i32) (local $29 i32) - (local $30 i32) - i32.const 5728 + i32.const 5240 call $~lib/near-runtime-ts/logging/logging.log i32.const 0 call $assembly/model/FooBar#constructor @@ -17019,7 +17942,7 @@ i32.const 2 i32.const 2 i32.const 26 - i32.const 5776 + i32.const 5288 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $2 @@ -17048,7 +17971,7 @@ i32.store8 offset=32 local.get $0 local.tee $3 - i32.const 3040 + i32.const 2776 local.tee $1 local.get $3 i32.load offset=36 @@ -17065,7 +17988,7 @@ i32.store offset=36 local.get $0 local.tee $1 - i32.const 5800 + i32.const 5312 call $~lib/near-runtime-ts/base64/base64.decode local.set $3 local.get $1 @@ -17100,7 +18023,7 @@ i32.const 1 i32.const 2 i32.const 10 - i32.const 5888 + i32.const 5400 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $5 @@ -17110,7 +18033,7 @@ i32.const 1 i32.const 2 i32.const 10 - i32.const 5944 + i32.const 5456 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $6 @@ -17144,14 +18067,14 @@ local.get $0 i32.load offset=60 i32.const 0 - i32.const 5800 + i32.const 5312 call $~lib/near-runtime-ts/base64/base64.decode local.tee $1 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__set local.get $0 i32.load offset=60 i32.const 1 - i32.const 5800 + i32.const 5312 call $~lib/near-runtime-ts/base64/base64.decode local.tee $4 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__set @@ -17160,7 +18083,7 @@ i32.const 2 i32.const 3 i32.const 28 - i32.const 5968 + i32.const 5480 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $7 @@ -17183,7 +18106,7 @@ i32.const 816 call $assembly/model/FooBar#encode local.set $8 - i32.const 6000 + i32.const 5512 local.get $8 call $~lib/assemblyscript-json/encoder/JSONEncoder#toString local.tee $3 @@ -17197,46 +18120,40 @@ call $~lib/nearEntry/JSON.parse local.set $11 local.get $11 - i32.load offset=4 - i32.const 6032 - call $~lib/array/Array<~lib/string/String>#join - local.tee $12 - call $~lib/near-runtime-ts/logging/logging.log - local.get $11 i32.const 816 call $~lib/nearEntry/decode - local.set $13 - i32.const 6056 - local.get $13 + local.set $12 + i32.const 5544 + local.get $12 call $assembly/model/FooBar#toJSON - local.tee $14 + local.tee $13 call $~lib/string/String.__concat - local.tee $15 + local.tee $14 call $~lib/near-runtime-ts/logging/logging.log local.get $0 i32.load - local.get $13 + local.get $12 i32.load i32.eq i32.eqz if i32.const 0 - i32.const 6088 - i32.const 166 + i32.const 5576 + i32.const 161 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 i32.load offset=4 - local.get $13 + local.get $12 i32.load offset=4 i32.eq i32.eqz if i32.const 0 - i32.const 6088 - i32.const 167 + i32.const 5576 + i32.const 162 i32.const 2 call $~lib/builtins/abort unreachable @@ -17244,17 +18161,17 @@ local.get $0 i32.load offset=40 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $16 - local.get $13 + local.tee $15 + local.get $12 i32.load offset=40 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $17 + local.tee $16 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6088 - i32.const 168 + i32.const 5576 + i32.const 163 i32.const 2 call $~lib/builtins/abort unreachable @@ -17263,22 +18180,22 @@ i32.load offset=60 i32.const 0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $18 + local.tee $17 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $19 - local.get $13 + local.tee $18 + local.get $12 i32.load offset=60 i32.const 0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $20 + local.tee $19 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $21 + local.tee $20 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6088 - i32.const 169 + i32.const 5576 + i32.const 164 i32.const 2 call $~lib/builtins/abort unreachable @@ -17287,17 +18204,17 @@ i32.load offset=44 i32.const 0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $22 + local.tee $21 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $23 - i32.const 5856 + local.tee $22 + i32.const 5368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6088 - i32.const 170 + i32.const 5576 + i32.const 165 i32.const 2 call $~lib/builtins/abort unreachable @@ -17306,7 +18223,7 @@ i32.load offset=64 i32.const 0 call $~lib/array/Array#__get - local.get $13 + local.get $12 i32.load offset=64 i32.const 0 call $~lib/array/Array#__get @@ -17314,102 +18231,102 @@ i32.eqz if i32.const 0 - i32.const 6088 - i32.const 171 + i32.const 5576 + i32.const 166 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 i64.load offset=16 - local.get $13 + local.get $12 i64.load offset=16 i64.eq i32.eqz if i32.const 0 - i32.const 6088 - i32.const 172 + i32.const 5576 + i32.const 167 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/Nullables#constructor - local.set $24 - local.get $24 + local.set $23 + local.get $23 call $assembly/model/Nullables#serialize - local.tee $25 + local.tee $24 call $~lib/nearEntry/JSON.parse - local.tee $26 + local.tee $25 i32.const 816 call $~lib/nearEntry/decode - local.set $27 - local.get $27 + local.set $26 + local.get $26 i32.load i32.const 0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6088 - i32.const 175 + i32.const 5576 + i32.const 170 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $27 + local.get $26 i32.load offset=4 call $~lib/rt/stub/__retain - local.set $29 + local.set $28 i32.const 0 call $~lib/rt/stub/__retain - local.set $28 - local.get $29 - i64.load offset=8 + local.set $27 local.get $28 i64.load offset=8 + local.get $27 + i64.load offset=8 i64.eq if (result i32) - local.get $29 - i64.load local.get $28 i64.load + local.get $27 + i64.load i64.eq else i32.const 0 end - local.set $30 + local.set $29 + local.get $27 + call $~lib/rt/stub/__release local.get $28 call $~lib/rt/stub/__release local.get $29 - call $~lib/rt/stub/__release - local.get $30 i32.const 0 i32.ne i32.eqz if i32.const 0 - i32.const 6088 - i32.const 176 + i32.const 5576 + i32.const 171 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $27 + local.get $26 i32.load offset=8 i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 6088 - i32.const 177 + i32.const 5576 + i32.const 172 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 6240 + i32.const 5728 call $~lib/near-runtime-ts/logging/logging.log local.get $0 call $~lib/rt/stub/__release @@ -17465,13 +18382,10 @@ call $~lib/rt/stub/__release local.get $26 call $~lib/rt/stub/__release - local.get $27 - call $~lib/rt/stub/__release ) - (func $start (; 303 ;) (type $FUNCSIG$v) + (func $start (; 306 ;) (type $FUNCSIG$v) call $start:~lib/rt/index-stub - call $start:~lib/nearEntry ) - (func $null (; 304 ;) (type $FUNCSIG$v) + (func $null (; 307 ;) (type $FUNCSIG$v) ) ) From a0e43c3dd23edc30176a4e23e22da566111e264d Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Sun, 8 Sep 2019 16:22:37 -0400 Subject: [PATCH 19/24] Can decode arguments with type aliases --- dist/asc.js | 2 +- dist/asc.js.map | 2 +- dist/assemblyscript.d.ts | 94 ++- dist/assemblyscript.js | 2 +- dist/assemblyscript.js.map | 2 +- tests/near-bindgen/assembly/test.ts | 6 + .../near-bindgen/out/assembly/hello/model.ts | 248 -------- tests/near-bindgen/out/assembly/model.ts | 558 ------------------ tests/near-bindgen/out/assembly/test.ts | 30 + tests/near-bindgen/out/test.wat | 244 +++++--- tests/near-bindgen/test.js | 3 +- 11 files changed, 310 insertions(+), 881 deletions(-) diff --git a/dist/asc.js b/dist/asc.js index 4125155960..37338027ba 100644 --- a/dist/asc.js +++ b/dist/asc.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e.assemblyscript)}("undefined"!=typeof self?self:this,function(__WEBPACK_EXTERNAL_MODULE__11__){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=4)}([function(e,n,t){var r,i;n.nextTick=function(e){var n=Array.prototype.slice.call(arguments);n.shift(),setTimeout(function(){e.apply(null,n)},0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(1)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!=typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!=typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(0))},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n){},function(e,n,t){e.exports=t(5)},function(module,exports,__webpack_require__){(function(process,global){process.browser&&(process.cwd=function(){return"."});const fs=__webpack_require__(3),path=__webpack_require__(1),utf8=__webpack_require__(6),colorsUtil=__webpack_require__(7),optionsUtil=__webpack_require__(8),mkdirp=__webpack_require__(9),EOL="win32"===process.platform?"\r\n":"\n",SEP="win32"===process.platform?"\\":"/",nearBindings=__webpack_require__(10),nearLibEntry=path.join(".","..","bindings","assembly","nearEntry.ts");process.removeAllListeners&&process.removeAllListeners("uncaughtException");var assemblyscript,isDev=!1;function checkDiagnostics(e,n){for(var t,r=!1;null!=(t=assemblyscript.nextDiagnostic(e));)n&&n.write(assemblyscript.formatDiagnostic(t,n.isTTY,!0)+EOL+EOL),assemblyscript.isError(t)&&(r=!0);return r}function createStats(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function measure(e){const n=process.hrtime();e();const t=process.hrtime(n);return 1e9*t[0]+t[1]}function formatTime(e){return e?(e/1e6).toFixed(3)+" ms":"N/A"}function printStats(e,n){function t(e,n){return formatTime(e)}(n||process.stdout).write(["I/O Read : "+t(e.readTime,e.readCount),"I/O Write : "+t(e.writeTime,e.writeCount),"Parse : "+t(e.parseTime,e.parseCount),"Compile : "+t(e.compileTime,e.compileCount),"Emit : "+t(e.emitTime,e.emitCount),"Validate : "+t(e.validateTime,e.validateCount),"Optimize : "+t(e.optimizeTime,e.optimizeCount)].join(EOL)+EOL)}function printRTTI(e,n){n||(n=process.stderr),n.write("# Runtime type information (RTTI)\n"),n.write(assemblyscript.buildRTTI(e))}(()=>{try{assemblyscript=__webpack_require__(11)}catch(e){try{__webpack_require__(!function(){var e=new Error("Cannot find module 'ts-node'");throw e.code="MODULE_NOT_FOUND",e}()).register({project:path.join(".","..","src","tsconfig.json")}),__webpack_require__(!function(){var e=new Error("Cannot find module '../src/glue/js'");throw e.code="MODULE_NOT_FOUND",e}()),assemblyscript=__webpack_require__(!function(){var e=new Error("Cannot find module '../src'");throw e.code="MODULE_NOT_FOUND",e}()),isDev=!0}catch(e_ts){try{assemblyscript=eval("require('./assemblyscript')")}catch(e){throw e.stack=e_ts.stack+"\n---\n"+e.stack,e}}}})(),exports.isBundle=!0,exports.isDev=isDev,exports.version=exports.isBundle?"0.7.0-near-preview1":__webpack_require__(!function(){var e=new Error("Cannot find module '../package.json'");throw e.code="MODULE_NOT_FOUND",e}()).version,exports.options=__webpack_require__(12),exports.sourceMapRoot="assemblyscript:///",exports.libraryPrefix=assemblyscript.LIBRARY_PREFIX,exports.defaultOptimizeLevel=3,exports.defaultShrinkLevel=1,exports.libraryFiles=exports.isBundle?Object({nearEntry:'\nimport { storage, near, base64, base58, logging } from \'near-runtime-ts\';\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\nimport { u128 } from "bignum";\n// Runtime functions\n// tslint:disable: no-unsafe-any\n\n\n\ntype Usize = u64;\n//@ts-ignore\n@global\n@external("env", "read_register")\ndeclare function read_register(register_id: Usize, ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "register_len")\ndeclare function register_len(register_id: Usize): Usize;\n\n//@ts-ignore\n@global\n@external("env", "input")\ndeclare function input(register_id: Usize): void;\n//@ts-ignore\n@global\n@external("env", "value_return")\ndeclare function value_return(value_len: Usize, value_ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "panic")\ndeclare function panic(): void;\n\n//@ts-ignore\n@global\nfunction encode(encoder: JSONEncoder, value: T, name: string | null = ""): JSONEncoder {\n if (isBoolean()) {\n //@ts-ignore\n encoder.setBoolean(name, value);\n } else if (isInteger()) {\n if (value instanceof i64 || value instanceof u64) {\n //@ts-ignore\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n encoder.setInteger(name, value);\n }\n //@ts-ignore\n } else if (value == null) {\n encoder.setNull(name);\n } else if (isString()) {\n //@ts-ignore\n encoder.setString(name, value);\n } else if (isReference()) {\n if (isArrayLike(value)) {\n if (value instanceof Uint8Array) {\n //@ts-ignore\n encoder.setString(name, base64.encode( value));\n } else {\n encoder.pushArray(name);\n for (let i: i32 = 0; i < value.length; i++) {\n //@ts-ignore\n encode(encoder, value[i], null);\n }\n encoder.popArray();\n }\n } else { // Is an object\n if (value instanceof u128){\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n value.encode(encoder, name);\n }\n }\n } else {\n throw new Error("Encoding failed");\n }\n return encoder;\n}\n\nclass PrimitiveHandler extends ThrowingJSONHandler {\n value: T;\n decoder: JSONDecoder>;\n\n constructor() {\n super();\n this.decoder = new JSONDecoder>(this);\n }\n\n static String: PrimitiveHandler = new PrimitiveHandler();\n static Boolean: PrimitiveHandler = new PrimitiveHandler();\n static U64: PrimitiveHandler = new PrimitiveHandler();\n static I64: PrimitiveHandler = new PrimitiveHandler();\n static U32: PrimitiveHandler = new PrimitiveHandler();\n static I32: PrimitiveHandler = new PrimitiveHandler();\n\n decode(buffer: Uint8Array, state: DecoderState | null): T {\n this.decoder.deserialize(buffer, state);\n //@ts-ignore\n return this.value;\n }\n\n setString(name: string, value: string): void {\n if (isString()) {\n //@ts-ignore\n this.value = (value);\n return;\n }\n if (this.value instanceof u64) {\n //@ts-ignore\n this.value = U64.parseInt(value);\n return;\n }\n if (this.value instanceof i64) {\n //@ts-ignore\n this.value = I64.parseInt(value);\n return;\n }\n super.setString(name, value);\n }\n\n setBoolean(name: string, value: bool): void {\n if (isBoolean()) {\n //@ts-ignore\n this.value = (value);\n return;\n }\n super.setBoolean(name, value);\n }\n\n setNull(name: string): void {\n if (isString()) {\n //@ts-ignore\n this.value = (null);\n return;\n }\n super.setNull(name);\n }\n\n setInteger(name: string, value: i64): void {\n if (isInteger()) {\n //@ts-ignore\n this.value = (value);\n return;\n }\n super.setInteger(name, value);\n }\n\n}\n\nfunction decodeString(buffer: Uint8Array, state: DecoderState | null ): string {\n return PrimitiveHandler.String.decode(buffer, state);\n}\nfunction decodeInt(buffer: Uint8Array, state: DecoderState | null ): T {\n let val: T;\n //@ts-ignore\n if (val instanceof u32) {\n //@ts-ignore\n return PrimitiveHandler.U32.decode(buffer, state);\n } \n //@ts-ignore\n if (val instanceof i32) {\n //@ts-ignore\n return PrimitiveHandler.I32.decode(buffer, state);\n } \n //@ts-ignore\n if (val instanceof u64) {\n //@ts-ignore\n return PrimitiveHandler.U64.decode(buffer, state);\n } \n //@ts-ignore\n if (val instanceof i64) {\n //@ts-ignore\n return PrimitiveHandler.I64.decode(buffer, state);\n }\n //@ts-ignore\n return val;\n}\n\n@global\nclass ArrayHandler extends ThrowingJSONHandler {\n firstArrayPush: boolean = true;\n handledRoot: boolean = false;\n constructor(public value: Array,\n public buffer: Uint8Array,\n public state: DecoderState | null) {\n super();\n }\n\n static decode(buffer: Uint8Array, state: DecoderState | null): Arr {\n const value: Arr = instantiate();\n //@ts-ignore\n const handler = new ArrayHandler>(value, buffer, state);\n //@ts-ignore\n const decoder = new JSONDecoder>>(handler);\n decoder.deserialize(buffer, state);\n return value;\n }\n\n setString(name: string, value: string): void {\n if (isString()) {\n //@ts-ignore\n this.value.push(value);\n return;\n }\n var item: T;\n //@ts-ignore\n if (item instanceof Uint8Array) {\n //@ts-ignore\n this.value.push(base64.decode(value));\n return;\n }\n //@ts-ignore\n if (item instanceof u64) {\n //@ts-ignore\n this.value.push(U64.parseInt(value));\n return;\n }\n //@ts-ignore\n if (item instanceof i64) {\n //@ts-ignore\n this.value.push(I64.parseInt(value));\n return;\n }\n super.setString(name, value);\n }\n\n setBoolean(name: string, value: bool): void {\n if (isBoolean()) {\n //@ts-ignore\n this.value.push(value);\n return;\n }\n super.setBoolean(name, value);\n }\n\n setNull(name: string): void {\n if (isNullable()) {\n //@ts-ignore\n this.value.push(null);\n return;\n }\n super.setNull(name);\n }\n\n setInteger(name: string, value: i64): void {\n if (isInteger()) {\n //@ts-ignore\n this.value.push(value);\n return;\n }\n super.setInteger(name, value);\n }\n\n pushObject(name: string): bool {\n // if (!this.handledRoot) {\n // this.handledRoot = true;\n // return true;\n // }\n // assert(name == null || name.length ==0, "name should be null.")\n if (isReference()) {\n let buffer = this.buffer;\n let state = this.state;\n let val: T = decode(buffer, state);\n this.value.push(val);\n return false;\n }\n return super.pushObject(name);\n }\n\n pushArray(name: string): bool {\n if (this.firstArrayPush) {\n this.firstArrayPush = false;\n return true;\n }\n assert(name == null || name.length == 0, "name should be null.");\n if (isArrayLike()) {\n this.value.push(decode(this.buffer, this.state));\n return false;\n }\n return super.pushArray(name);\n }\n}\n\n//@ts-ignore\n@global\nfunction decode(buffer: Uint8Array, state: DecoderState | null = null): T {\n if (isString()) {\n //@ts-ignore\n return PrimitiveHandler.String.decode(buffer, state);\n }\n if (isBoolean()) {\n //@ts-ignore\n return PrimitiveHandler.Boolean.decode(buffer, state);\n }\n if (isInteger()) {\n //@ts-ignore\n return decodeInt(buffer, state);\n }\n assert(isReference(), "type must be an integer, boolean, string, object, or array");\n var value: T;\n if (isArrayLike()) {\n //@ts-ignore only checking the instance\n if (value instanceof Uint8Array) {\n //@ts-ignore\n return base64.decode(PrimitiveHandler.String.decode(buffer, state));\n }\n return ArrayHandler.decode(buffer, state);\n } else {\n //@ts-ignore\n if (value instanceof u128) {\n //@ts-ignore\n return u128.fromString(decodeString(buffer, state));\n }\n let value = instantiate();\n //@ts-ignore\n return value.decode(buffer, state);\n }\n}\n',array:'/// \n\nimport { BLOCK_MAXSIZE } from "./rt/common";\nimport { COMPARATOR, SORT } from "./util/sort";\nimport { ArrayBuffer, ArrayBufferView } from "./arraybuffer";\nimport { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";\nimport { idof, isArray as builtin_isArray } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error";\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureSize(array: usize, minSize: usize, alignLog2: u32): void {\n var oldCapacity = changetype(array).dataLength;\n if (minSize > oldCapacity >>> alignLog2) {\n if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).data);\n let newCapacity = minSize << alignLog2;\n let newData = __realloc(oldData, newCapacity);\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n if (newData !== oldData) { // oldData has been free\'d\n store(changetype(array), __retain(newData), offsetof("data"));\n changetype(array).dataStart = newData;\n }\n changetype(array).dataLength = newCapacity;\n }\n}\n\nexport class Array extends ArrayBufferView {\n [key: number]: T;\n\n // Implementing ArrayBufferView isn\'t strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).\n\n // Also note that Array with non-nullable T must guard against implicit null values whenever\n // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn\'t be\n // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return builtin_isArray(value) && value !== null;\n }\n\n static create(capacity: i32 = 0): Array {\n if (capacity > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n var array = changetype>(__allocArray(capacity, alignof(), idof())); // retains\n changetype>(array).length_ = 0; // safe even if T is a non-nullable reference\n memory.fill(array.dataStart, 0, array.dataLength);\n return array;\n }\n\n constructor(length: i32 = 0) {\n super(length, alignof());\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n this.length_ = length;\n }\n\n @unsafe get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n var oldLength = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (newLength > oldLength) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) { // release no longer used refs\n if (oldLength > newLength) {\n let dataStart = this.dataStart;\n do __release(load(dataStart + (--oldLength << alignof())));\n while (oldLength > newLength);\n // no need to zero memory on shrink -> is zeroed on grow\n }\n }\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (!fn(load(this.dataStart + (index << alignof())), index, this)) return false;\n }\n return true;\n }\n\n findIndex(predicate: (value: T, index: i32, array: Array) => bool): i32 {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (predicate(load(this.dataStart + (index << alignof())), index, this)) return index;\n }\n return -1;\n }\n\n @operator("[]") private __get(index: i32): T {\n if (isReference()) {\n if (!isNullable()) {\n if (index >= this.length_) throw new Error(E_HOLEYARRAY);\n }\n }\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n var length = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (index > length) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), index + 1, alignof());\n this.__unchecked_set(index, value);\n if (index >= length) this.length_ = index + 1;\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = this.dataStart + (index << alignof());\n let oldRef: usize = load(offset);\n if (changetype(value) != oldRef) {\n store(offset, __retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n store(this.dataStart + (index << alignof()), value);\n }\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (isManaged()) {\n for (; start < end; ++start) {\n let oldRef: usize = load(dataStart + (start << alignof()));\n if (changetype(value) != oldRef) {\n store(dataStart + (start << alignof()), __retain(changetype(value)));\n __release(oldRef);\n }\n }\n } else if (sizeof() == 1) {\n if (start < end) {\n memory.fill(\n dataStart + start,\n u8(value),\n (end - start)\n );\n }\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n return this.indexOf(value, fromIndex) >= 0;\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var length = this.length_;\n if (length == 0 || fromIndex >= length) return -1;\n if (fromIndex < 0) fromIndex = max(length + fromIndex, 0);\n var dataStart = this.dataStart;\n while (fromIndex < length) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var length = this.length_;\n if (length == 0) return -1;\n if (fromIndex < 0) fromIndex = length + fromIndex;\n else if (fromIndex >= length) fromIndex = length - 1;\n var dataStart = this.dataStart;\n while (fromIndex >= 0) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var length = this.length_;\n var newLength = length + 1;\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) {\n store(this.dataStart + (length << alignof()), __retain(changetype(value)));\n } else {\n store(this.dataStart + (length << alignof()), value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = select(0, other.length_, other === null);\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, __retain(ref));\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, __retain(ref));\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n if (isManaged()) {\n if (from < to && to < (from + count)) { // right to left\n from += count - 1;\n to += count - 1;\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n --from, --to, --count;\n }\n } else { // left to right\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n ++from, ++to, --count;\n }\n }\n } else {\n memory.copy( // is memmove\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n }\n return this;\n }\n\n pop(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var element = load(this.dataStart + ((--length) << alignof()));\n this.length_ = length;\n return element; // no need to retain -> is moved\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n fn(load(this.dataStart + (index << alignof())), index, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var length = this.length_;\n var out = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n for (let index = 0; index < min(length, this.length_); ++index) {\n let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains\n if (isManaged()) {\n store(outStart + (index << alignof()), __retain(changetype(result)));\n } else {\n store(outStart + (index << alignof()), result);\n }\n // releases result\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n let value = load(this.dataStart + (index << alignof()));\n if (fn(value, index, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = this.length_ - 1; index >= 0; --index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n shift(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = length - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n store(base + (lastIndex << alignof()),\n // @ts-ignore: cast\n null\n );\n this.length_ = lastIndex;\n return element; // no need to retain -> is moved\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (fn(load(this.dataStart + (index << alignof())), index, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var newLength = this.length_ + 1;\n ensureSize(changetype(this), newLength, alignof());\n var dataStart = this.dataStart;\n memory.copy(\n dataStart + sizeof(),\n dataStart,\n (newLength - 1) << alignof()\n );\n if (isManaged()) {\n store(dataStart, __retain(changetype(value)));\n } else {\n store(dataStart, value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(start + length, 0) : min(start, length);\n end = end < 0 ? max(end + length, 0) : min(end , length);\n length = max(end - start, 0);\n var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = length << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, __retain(ref));\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, length << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n deleteCount = max(min(deleteCount, length - start), 0);\n var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n if (isManaged()) {\n for (let i = 0; i < deleteCount; ++i) {\n store(resultStart + (i << alignof()),\n load(thisBase + (i << alignof()))\n );\n // no need to retain -> is moved\n }\n } else {\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n }\n var offset = start + deleteCount;\n if (length != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (length - offset) << alignof()\n );\n }\n this.length_ = length - deleteCount;\n return result;\n }\n\n reverse(): Array {\n var length = this.length_;\n if (length) {\n let front = this.dataStart;\n let back = this.dataStart + ((length - 1) << alignof());\n while (front < back) {\n let temp = load(front);\n store(front, load(back));\n store(back, temp);\n front += sizeof();\n back -= sizeof();\n }\n }\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this {\n var length = this.length_;\n if (length <= 1) return this;\n var base = this.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b;\n store(base, a); // arr[0] = a;\n }\n return this;\n }\n SORT(base, length, comparator);\n return this;\n }\n\n join(separator: string = ","): string {\n if (isBoolean()) return this.join_bool(separator);\n if (isInteger()) return this.join_int(separator);\n if (isFloat()) return this.join_flt(separator);\n if (isString()) return this.join_str(separator);\n if (isArray()) return this.join_arr(separator);\n if (isReference()) return this.join_ref(separator);\n ERROR("unspported element type");\n return unreachable();\n }\n\n private join_bool(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return select("true", "false", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len("false")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_int(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n // @ts-ignore: type\n if (!lastIndex) return changetype(itoa(load(dataStart))); // retains\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_flt(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n ); // retains\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_str(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return load(dataStart);\n\n var sepLen = separator.length;\n var estLen = 0;\n var value: string | null;\n for (let i = 0, len = lastIndex + 1; i < len; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) estLen += value.length;\n }\n var offset = 0;\n var result = changetype(__alloc((estLen + sepLen * lastIndex) << 1, idof())); // retains\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) {\n let valueLen = changetype(value).length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (value !== null) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n changetype(value).length << 1\n );\n }\n return result;\n }\n\n private join_arr(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n\n var result = "";\n var sepLen = separator.length;\n var base = this.dataStart;\n var value: T;\n if (!lastIndex) {\n value = load(base);\n // @ts-ignore: type\n return value ? value.join(separator) : "";\n }\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n if (sepLen) result += separator;\n }\n value = load(base + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n return result; // registered by concatenation (FIXME: lots of garbage)\n }\n\n private join_ref(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var base = this.dataStart;\n if (!lastIndex) return "[object Object]";\n\n const valueLen = 15; // max possible length of element len("[object Object]")\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n if (value) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n if (load(base + (lastIndex << alignof()))) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n // automatically visits ArrayBufferView (.data) next\n }\n}\n',arraybuffer:'/// \n\nimport { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INVALIDLENGTH } from "./util/error";\n\nexport abstract class ArrayBufferView {\n\n @unsafe data: ArrayBuffer;\n @unsafe dataStart: usize;\n @unsafe dataLength: u32;\n\n protected constructor(length: i32, alignLog2: i32) {\n if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length = length << alignLog2, idof());\n memory.fill(buffer, 0, length);\n this.data = changetype(buffer); // retains\n this.dataStart = buffer;\n this.dataLength = length;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n get length(): i32 {\n ERROR("missing implementation: subclasses must implement ArrayBufferView#length");\n return unreachable();\n }\n}\n\n@sealed export class ArrayBuffer {\n\n static isView(value: T): bool {\n if (value) {\n if (value instanceof Int8Array) return true;\n if (value instanceof Uint8Array) return true;\n if (value instanceof Uint8ClampedArray) return true;\n if (value instanceof Int16Array) return true;\n if (value instanceof Uint16Array) return true;\n if (value instanceof Int32Array) return true;\n if (value instanceof Uint32Array) return true;\n if (value instanceof Int64Array) return true;\n if (value instanceof Uint64Array) return true;\n if (value instanceof Float32Array) return true;\n if (value instanceof Float64Array) return true;\n if (value instanceof DataView) return true;\n }\n return false;\n }\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length, idof());\n memory.fill(buffer, 0, length);\n return changetype(buffer); // retains\n }\n\n get byteLength(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n }\n\n slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer {\n var length = this.byteLength;\n begin = begin < 0 ? max(length + begin, 0) : min(begin, length);\n end = end < 0 ? max(length + end , 0) : min(end , length);\n var outSize = max(end - begin, 0);\n var out = __alloc(outSize, idof());\n memory.copy(out, changetype(this) + begin, outSize);\n return changetype(out); // retains\n }\n\n toString(): string {\n return "[object ArrayBuffer]";\n }\n}\n',"bindings/Date":"export declare function UTC(\n // NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for\n // converting the value to the WASM/JS boundary.\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: f64\n): f64;\nexport declare function now(): f64;\n","bindings/Math":"export declare const E: f64;\nexport declare const LN2: f64;\nexport declare const LN10: f64;\nexport declare const LOG2E: f64;\nexport declare const LOG10E: f64;\nexport declare const PI: f64;\nexport declare const SQRT1_2: f64;\nexport declare const SQRT2: f64;\n\nexport declare function abs(x: f64): f64;\nexport declare function acos(x: f64): f64;\nexport declare function acosh(x: f64): f64;\nexport declare function asin(x: f64): f64;\nexport declare function asinh(x: f64): f64;\nexport declare function atan(x: f64): f64;\nexport declare function atan2(y: f64, x: f64): f64;\nexport declare function atanh(x: f64): f64;\nexport declare function cbrt(x: f64): f64;\nexport declare function ceil(x: f64): f64;\nexport declare function clz32(x: f64): f64;\nexport declare function cos(x: f64): f64;\nexport declare function cosh(x: f64): f64;\nexport declare function exp(x: f64): f64;\nexport declare function expm1(x: f64): f64;\nexport declare function floor(x: f64): f64;\nexport declare function fround(x: f64): f32;\nexport declare function hypot(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function imul(a: f64, b: f64): f64;\nexport declare function log(x: f64): f64;\nexport declare function log10(x: f64): f64;\nexport declare function log1p(x: f64): f64;\nexport declare function log2(x: f64): f64;\nexport declare function max(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function min(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function pow(base: f64, exponent: f64): f64;\nexport declare function random(): f64;\nexport declare function round(x: f64): f64;\nexport declare function sign(x: f64): f64;\nexport declare function sin(x: f64): f64;\nexport declare function sinh(x: f64): f64;\nexport declare function sqrt(x: f64): f64;\nexport declare function tan(x: f64): f64;\nexport declare function tanh(x: f64): f64;\nexport declare function trunc(x: f64): f64;\n","bindings/wasi_unstable":"// see: https://wasi.dev\n\n/* tslint:disable:max-line-length */\n\n// helper types to be more explicit\ntype char = u8;\ntype ptr = usize; // all pointers are usize'd\ntype struct = T; // structs are references already in AS\n\n/** Read command-line argument data. */\nexport declare function args_get(\n /** Input: Pointer to a buffer to write the argument pointers. */\n argv: ptr>,\n /** Input: Pointer to a buffer to write the argument string data. */\n argv_buf: ptr\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function args_sizes_get(\n /** Output: Number of arguments. */\n argc: ptr,\n /** Output: Size of the argument string data. */\n argv_buf_size: ptr\n): errno;\n\n/** Return the resolution of a clock. */\nexport declare function clock_res_get(\n /** Input: The clock for which to return the resolution. */\n clock: clockid,\n /** Output: The resolution of the clock. */\n resolution: ptr\n): errno;\n\n/** Return the time value of a clock. */\nexport declare function clock_time_get(\n /** Input: Cock for which to return the time. */\n clock: clockid,\n /** Input: Maximum lag (exclusive) that the returned time value may have, compared to its actual value. */\n precision: timestamp,\n /** Output: Time value of the clock. */\n time: ptr\n): errno;\n\n/** Read environment variable data. */\nexport declare function environ_get(\n /** Input: Pointer to a buffer to write the environment variable pointers. */\n environ: ptr,\n /** Input: Pointer to a buffer to write the environment variable string data. */\n environ_buf: usize\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function environ_sizes_get(\n /** Output: The number of environment variables. */\n environ_count: ptr,\n /** Output: The size of the environment variable string data. */\n environ_buf_size: ptr\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_advise(\n /** Input: The file descriptor for the file for which to provide file advisory information. */\n fd: fd,\n /** Input: The offset within the file to which the advisory applies. */\n offset: filesize,\n /** Input: The length of the region to which the advisory applies. */\n len: filesize,\n /** Input: The advice. */\n advice: advice\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_allocate(\n /** Input: The file descriptor for the file in which to allocate space. */\n fd: fd,\n /** Input: The offset at which to start the allocation. */\n offset: filesize,\n /** Input: The length of the area that is allocated. */\n len: filesize\n): errno;\n\n/** Close a file descriptor. */\nexport declare function fd_close(\n /** Input: The file descriptor to close. */\n fd: fd\n): errno;\n\n/** Synchronize the data of a file to disk. */\nexport declare function fd_datasync(\n /** Input: The file descriptor of the file to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Get the attributes of a file descriptor. */\nexport declare function fd_fdstat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file descriptor's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the flags associated with a file descriptor. */\nexport declare function fd_fdstat_set_flags(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the file descriptor flags. */\n flags: fdflags\n): errno;\n\n/** Adjust the rights associated with a file descriptor. */\nexport declare function fd_fdstat_set_rights(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_base: rights,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_inheriting: rights\n): errno;\n\n/** Return the attributes of an open file. */\nexport declare function fd_filestat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */\nexport declare function fd_filestat_set_size(\n /** Input: A file descriptor for the file to adjust. */\n fd: fd,\n /** Input: The desired file size. */\n size: filesize\n): errno;\n\n/** Adjust the timestamps of an open file or directory. */\nexport declare function fd_filestat_set_times(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Read from a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pread(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors in which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors in which to store data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to read. */\n offset: filesize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_get(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: The buffer where the description is stored. */\n buf: struct\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_dir_name(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: Buffer into which to write the preopened directory name. */\n path: ptr,\n /** Input: Length of the buffer into which to write the preopened directory name. */\n path_len: usize\n): errno;\n\n/** Write to a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pwrite(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to write. */\n offset: filesize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/** Read from a file descriptor. */\nexport declare function fd_read(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors to which to store data. */\n iovs_len: usize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Read directory entries from a directory. */\nexport declare function fd_readdir(\n /** Input: Directory from which to read the directory entries. */\n fd: fd,\n /** Input: Buffer where directory entries are stored. */\n buf: ptr>,\n /** Input: Length of the buffer where directory entries are stored. */\n buf_len: usize,\n /** Input: Location within the directory to start reading. */\n cookie: dircookie,\n /** Output: Number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. */\n buf_used: ptr\n): errno;\n\n/** Atomically replace a file descriptor by renumbering another file descriptor. */\nexport declare function fd_renumber(\n /** Input: The file descriptor to renumber. */\n from: fd,\n /** Input: The file descriptor to overwrite. */\n to: fd\n): errno;\n\n/** Move the offset of a file descriptor. */\nexport declare function fd_seek(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The number of bytes to move. */\n offset: filedelta,\n /** Input: The base from which the offset is relative. */\n whence: whence,\n /** Output: The new offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Synchronize the data and metadata of a file to disk. */\nexport declare function fd_sync(\n /** Input: The file descriptor of the file containing the data and metadata to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Return the current offset of a file descriptor. */\nexport declare function fd_tell(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Output: The current offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Write to a file descriptor. */\nexport declare function fd_write(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/* Create a directory. */\nexport declare function path_create_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path at which to create the directory. */\n path: ptr,\n /** Input: The path at which to create the directory. */\n path_len: usize\n): errno;\n\n/** Return the attributes of a file or directory. */\nexport declare function path_filestat_get(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to inspect. */\n path: ptr,\n /** Input: The path of the file or directory to inspect. */\n path_len: usize,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the timestamps of a file or directory. */\nexport declare function path_filestat_set_times(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to operate on. */\n path: ptr,\n /** Input: The path of the file or directory to operate on. */\n path_len: usize,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Create a hard link. */\nexport declare function path_link(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n old_flags: lookupflags,\n /** Input: The source path from which to link. */\n old_path: ptr,\n /** Input: The source path from which to link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path at which to create the hard link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the hard link. */\n new_path_len: usize\n): errno;\n\n/** Open a file or directory. */\nexport declare function path_open(\n /** Input: The working directory at which the resolution of the path starts. */\n dirfd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n dirflags: lookupflags,\n /** Input: The path of the file or directory to open. */\n path: ptr,\n /** Input: The length of the path of the file or directory to open. */\n path_len: usize,\n /** Input: The method by which to open the file. */\n oflags: oflags,\n /** Input: The initial base rights that apply to operations using the file descriptor itself. */\n fs_rights_base: rights,\n /** Input: The initial inheriting rights that apply to file descriptors derived from it. */\n fs_rights_inheriting: rights,\n /** Input: The initial flags of the file descriptor. */\n fs_flags: fdflags,\n /** Output: The file descriptor of the file that has been opened. */\n fd: ptr\n): errno;\n\n/** Read the contents of a symbolic link. */\nexport declare function path_readlink(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path of the symbolic link from which to read. */\n path: ptr,\n /** Input: The length of the path of the symbolic link from which to read. */\n path_len: usize,\n /** Input: The buffer to which to write the contents of the symbolic link. */\n buf: ptr,\n /** Input: The length of the buffer to which to write the contents of the symbolic link. */\n buf_len: usize,\n /** Output: The number of bytes placed in the buffer. */\n buf_used: ptr\n): errno;\n\n/** Remove a directory. */\nexport declare function path_remove_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a directory to remove. */\n path: ptr,\n /** Input: The length of the path to a directory to remove. */\n path_len: usize\n): errno;\n\n/** Rename a file or directory. */\nexport declare function path_rename(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: The source path of the file or directory to rename. */\n old_path: ptr,\n /** Input: The length of the source path of the file or directory to rename. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path to which to rename the file or directory. */\n new_path: ptr,\n /** Input: The length of the destination path to which to rename the file or directory. */\n new_path_len: usize\n): errno;\n\n/** Create a symbolic link. */\nexport declare function path_symlink(\n /** Input: The contents of the symbolic link. */\n old_path: ptr,\n /** Input: The length of the contents of the symbolic link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The destination path at which to create the symbolic link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the symbolic link. */\n new_path_len: usize\n): errno;\n\n/** Unlink a file. */\nexport declare function path_unlink_file(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a file to unlink. */\n path: ptr,\n /** Input: The length of the path to a file to unlink. */\n path_len: usize\n): errno;\n\n/** Concurrently poll for the occurrence of a set of events. */\nexport declare function poll_oneoff(\n /** Input: The events to which to subscribe. */\n in_: ptr>,\n /** Input: The events that have occurred. */\n out: ptr>,\n /** Input: Both the number of subscriptions and events. */\n nsubscriptions: usize,\n /** Output: The number of events stored. */\n nevents: ptr\n): errno;\n\n/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */\nexport declare function proc_exit(\n /** Input: The exit code returned by the process. */\n rval: u32\n): void;\n\n/** Send a signal to the process of the calling thread. */\nexport declare function proc_raise(\n /** Input: The signal condition to trigger. */\n sig: signal\n): errno;\n\n/** Write high-quality random data into a buffer. */\nexport declare function random_get(\n /** Input: The buffer to fill with random data. */\n buf: usize,\n /** Input: The length of the buffer to fill with random data. */\n buf_len: usize\n): errno;\n\n/** Temporarily yield execution of the calling thread. */\nexport declare function sched_yield(): errno;\n\n/** Receive a message from a socket. */\nexport declare function sock_recv(\n /** Input: The socket on which to receive data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n ri_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to store data. */\n ri_data_len: usize,\n /** Input: Message flags. */\n ri_flags: riflags,\n /** Output: Number of bytes stored in `ri_data`. */\n ro_datalen: ptr,\n /** Output: Message flags. */\n ro_flags: ptr\n): errno;\n\n/** Send a message on a socket. */\nexport declare function sock_send(\n /** Input: The socket on which to send data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to retrieve data */\n si_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to retrieve data */\n si_data_len: usize,\n /** Input: Message flags. */\n si_flags: siflags,\n /** Output: Number of bytes transmitted. */\n so_datalen: ptr\n): errno;\n\n/** Shut down socket send and receive channels. */\nexport declare function sock_shutdown(\n /** Input: The socket on which to shutdown channels. */\n sock: fd,\n /** Input: Which channels on the socket to shut down. */\n how: sdflags\n): errno;\n\n// === Types ======================================================================================\n\n/** File or memory access pattern advisory information. */\nexport namespace advice {\n /** The application has no advice to give on its behavior with respect to the specified data. */\n // @ts-ignore: decorator\n @inline\n export const NORMAL: advice = 0;\n /** The application expects to access the specified data sequentially from lower offsets to higher offsets. */\n // @ts-ignore: decorator\n @inline\n export const SEQUENTIAL : advice = 1;\n /** The application expects to access the specified data in a random order. */\n // @ts-ignore: decorator\n @inline\n export const RANDOM: advice = 2;\n /** The application expects to access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const WILLNEED: advice = 3;\n /** The application expects that it will not access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const DONTNEED: advice = 4;\n /** The application expects to access the specified data once and then not reuse it thereafter. */\n // @ts-ignore: decorator\n @inline\n export const NOREUSE: advice = 5;\n}\nexport type advice = u8;\n\n/** Identifiers for clocks. */\nexport namespace clockid {\n /** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */\n // @ts-ignore: decorator\n @inline\n export const REALTIME: clockid = 0;\n /** The store-wide monotonic clock. Absolute value has no meaning. */\n // @ts-ignore: decorator\n @inline\n export const MONOTONIC: clockid = 1;\n /** The CPU-time clock associated with the current process. */\n // @ts-ignore: decorator\n @inline\n export const PROCESS_CPUTIME_ID: clockid = 2;\n /** The CPU-time clock associated with the current thread. */\n // @ts-ignore: decorator\n @inline\n export const THREAD_CPUTIME_ID: clockid = 3;\n}\nexport type clockid = u32;\n\n/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */\nexport type device = u64;\n\n/** A reference to the offset of a directory entry. */\nexport type dircookie = u64;\n\n/** A directory entry. */\n@unmanaged export class dirent {\n /** The offset of the next directory entry stored in this directory. */\n next: dircookie;\n /** The serial number of the file referred to by this directory entry. */\n ino: inode;\n /** The length of the name of the directory entry. */\n namlen: u32;\n /** The type of the file referred to by this directory entry. */\n type: filetype;\n private __padding0: u16;\n}\n\n/** Error codes returned by functions. */\nexport namespace errno {\n /** No error occurred. System call completed successfully. */\n // @ts-ignore: decorator\n @inline\n export const SUCCESS: errno = 0;\n /** Argument list too long. */\n // @ts-ignore: decorator\n @inline\n export const TOOBIG: errno = 1;\n /** Permission denied. */\n // @ts-ignore: decorator\n @inline\n export const ACCES: errno = 2;\n /** Address in use. */\n // @ts-ignore: decorator\n @inline\n export const ADDRINUSE: errno = 3;\n /** Address not available. */\n // @ts-ignore: decorator\n @inline\n export const ADDRNOTAVAIL: errno = 4;\n /** Address family not supported. */\n // @ts-ignore: decorator\n @inline\n export const AFNOSUPPORT: errno = 5;\n /** Resource unavailable, or operation would block. */\n // @ts-ignore: decorator\n @inline\n export const AGAIN: errno = 6;\n /** Connection already in progress. */\n // @ts-ignore: decorator\n @inline\n export const ALREADY: errno = 7;\n /** Bad file descriptor. */\n // @ts-ignore: decorator\n @inline\n export const BADF: errno = 8;\n /** Bad message. */\n // @ts-ignore: decorator\n @inline\n export const BADMSG: errno = 9;\n /** Device or resource busy. */\n // @ts-ignore: decorator\n @inline\n export const BUSY: errno = 10;\n /** Operation canceled. */\n // @ts-ignore: decorator\n @inline\n export const CANCELED: errno = 11;\n /** No child processes. */\n // @ts-ignore: decorator\n @inline\n export const CHILD: errno = 12;\n /** Connection aborted. */\n // @ts-ignore: decorator\n @inline\n export const CONNABORTED: errno = 13;\n /** Connection refused. */\n // @ts-ignore: decorator\n @inline\n export const CONNREFUSED: errno = 14;\n /** Connection reset. */\n // @ts-ignore: decorator\n @inline\n export const CONNRESET: errno = 15;\n /** Resource deadlock would occur. */\n // @ts-ignore: decorator\n @inline\n export const DEADLK: errno = 16;\n /** Destination address required. */\n // @ts-ignore: decorator\n @inline\n export const DESTADDRREQ: errno = 17;\n /** Mathematics argument out of domain of function. */\n // @ts-ignore: decorator\n @inline\n export const DOM: errno = 18;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const DQUOT: errno = 19;\n /** File exists. */\n // @ts-ignore: decorator\n @inline\n export const EXIST: errno = 20;\n /** Bad address. */\n // @ts-ignore: decorator\n @inline\n export const FAULT: errno = 21;\n /** File too large. */\n // @ts-ignore: decorator\n @inline\n export const FBIG: errno = 22;\n /** Host is unreachable. */\n // @ts-ignore: decorator\n @inline\n export const HOSTUNREACH: errno = 23;\n /** Identifier removed. */\n // @ts-ignore: decorator\n @inline\n export const IDRM: errno = 24;\n /** Illegal byte sequence. */\n // @ts-ignore: decorator\n @inline\n export const ILSEQ: errno = 25;\n /** Operation in progress. */\n // @ts-ignore: decorator\n @inline\n export const INPROGRESS: errno = 26;\n /** Interrupted function. */\n // @ts-ignore: decorator\n @inline\n export const INTR: errno = 27;\n /** Invalid argument. */\n // @ts-ignore: decorator\n @inline\n export const INVAL: errno = 28;\n /** I/O error. */\n // @ts-ignore: decorator\n @inline\n export const IO: errno = 29;\n /** Socket is connected. */\n // @ts-ignore: decorator\n @inline\n export const ISCONN: errno = 30;\n /** Is a directory. */\n // @ts-ignore: decorator\n @inline\n export const ISDIR: errno = 31;\n /** Too many levels of symbolic links. */\n // @ts-ignore: decorator\n @inline\n export const LOOP: errno = 32;\n /** File descriptor value too large. */\n // @ts-ignore: decorator\n @inline\n export const MFILE: errno = 33;\n /** Too many links. */\n // @ts-ignore: decorator\n @inline\n export const MLINK: errno = 34;\n /** Message too large. */\n // @ts-ignore: decorator\n @inline\n export const MSGSIZE: errno = 35;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const MULTIHOP: errno = 36;\n /** Filename too long. */\n // @ts-ignore: decorator\n @inline\n export const NAMETOOLONG: errno = 37;\n /** Network is down. */\n // @ts-ignore: decorator\n @inline\n export const NETDOWN: errno = 38;\n /** Connection aborted by network. */\n // @ts-ignore: decorator\n @inline\n export const NETRESET: errno = 39;\n /** Network unreachable. */\n // @ts-ignore: decorator\n @inline\n export const NETUNREACH: errno = 40;\n /** Too many files open in system. */\n // @ts-ignore: decorator\n @inline\n export const NFILE: errno = 41;\n /** No buffer space available. */\n // @ts-ignore: decorator\n @inline\n export const NOBUFS: errno = 42;\n /** No such device. */\n // @ts-ignore: decorator\n @inline\n export const NODEV: errno = 43;\n /** No such file or directory. */\n // @ts-ignore: decorator\n @inline\n export const NOENT: errno = 44;\n /** Executable file format error. */\n // @ts-ignore: decorator\n @inline\n export const NOEXEC: errno = 45;\n /** No locks available. */\n // @ts-ignore: decorator\n @inline\n export const NOLCK: errno = 46;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const NOLINK: errno = 47;\n /** Not enough space. */\n // @ts-ignore: decorator\n @inline\n export const NOMEM: errno = 48;\n /** No message of the desired type. */\n // @ts-ignore: decorator\n @inline\n export const NOMSG: errno = 49;\n /** Protocol not available. */\n // @ts-ignore: decorator\n @inline\n export const NOPROTOOPT: errno = 50;\n /** No space left on device. */\n // @ts-ignore: decorator\n @inline\n export const NOSPC: errno = 51;\n /** Function not supported. */\n // @ts-ignore: decorator\n @inline\n export const NOSYS: errno = 52;\n /** The socket is not connected. */\n // @ts-ignore: decorator\n @inline\n export const NOTCONN: errno = 53;\n /** Not a directory or a symbolic link to a directory. */\n // @ts-ignore: decorator\n @inline\n export const NOTDIR: errno = 54;\n /** Directory not empty. */\n // @ts-ignore: decorator\n @inline\n export const NOTEMPTY: errno = 55;\n /** State not recoverable. */\n // @ts-ignore: decorator\n @inline\n export const NOTRECOVERABLE: errno = 56;\n /** Not a socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSOCK: errno = 57;\n /** Not supported, or operation not supported on socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSUP: errno = 58;\n /** Inappropriate I/O control operation. */\n // @ts-ignore: decorator\n @inline\n export const NOTTY: errno = 59;\n /** No such device or address. */\n // @ts-ignore: decorator\n @inline\n export const NXIO: errno = 60;\n /** Value too large to be stored in data type. */\n // @ts-ignore: decorator\n @inline\n export const OVERFLOW: errno = 61;\n /** Previous owner died. */\n // @ts-ignore: decorator\n @inline\n export const OWNERDEAD: errno = 62;\n /** Operation not permitted. */\n // @ts-ignore: decorator\n @inline\n export const PERM: errno = 63;\n /** Broken pipe. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: errno = 64;\n /** Protocol error. */\n // @ts-ignore: decorator\n @inline\n export const PROTO: errno = 65;\n /** Protocol not supported. */\n // @ts-ignore: decorator\n @inline\n export const PROTONOSUPPORT: errno = 66;\n /** Protocol wrong type for socket. */\n // @ts-ignore: decorator\n @inline\n export const PROTOTYPE: errno = 67;\n /** Result too large. */\n // @ts-ignore: decorator\n @inline\n export const RANGE: errno = 68;\n /** Read-only file system. */\n // @ts-ignore: decorator\n @inline\n export const ROFS: errno = 69;\n /** Invalid seek. */\n // @ts-ignore: decorator\n @inline\n export const SPIPE: errno = 70;\n /** No such process. */\n // @ts-ignore: decorator\n @inline\n export const SRCH: errno = 71;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const STALE: errno = 72;\n /** Connection timed out. */\n // @ts-ignore: decorator\n @inline\n export const TIMEDOUT: errno = 73;\n /** Text file busy. */\n // @ts-ignore: decorator\n @inline\n export const TXTBSY: errno = 74;\n /** Cross-device link. */\n // @ts-ignore: decorator\n @inline\n export const XDEV: errno = 75;\n /** Extension: Capabilities insufficient. */\n // @ts-ignore: decorator\n @inline\n export const NOTCAPABLE: errno = 76;\n}\nexport type errno = u16;\n\n/** An event that occurred. */\n@unmanaged export abstract class event {\n /** User-provided value that got attached to `subscription#userdata`. */\n userdata: userdata;\n /** If non-zero, an error that occurred while processing the subscription request. */\n error: errno;\n /* The type of the event that occurred. */\n type: eventtype;\n private __padding0: u16;\n}\n\n/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\n@unmanaged export class rwevent extends event {\n /* The number of bytes available for reading or writing. */\n nbytes: filesize;\n /* The state of the file descriptor. */\n flags: eventrwflags;\n private __padding1: u32;\n}\n\n/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\nexport namespace eventrwflags {\n /** The peer of this socket has closed or disconnected. */\n // @ts-ignore: decorator\n @inline\n export const HANGUP: eventrwflags = 1;\n}\nexport type eventrwflags = u16;\n\n/** Type of a subscription to an event or its occurrence. */\nexport namespace eventtype {\n /** The time value of clock has reached the timestamp. */\n // @ts-ignore: decorator\n @inline\n export const CLOCK: eventtype = 0;\n /** File descriptor has data available for reading. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: eventtype = 1;\n /** File descriptor has capacity available for writing */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: eventtype = 2;\n}\nexport type eventtype = u8;\n\n/** Exit code generated by a process when exiting. */\nexport type exitcode = u32;\n\n/** A file descriptor number. */\nexport type fd = u32;\n\n/** File descriptor flags. */\nexport namespace fdflags {\n /** Append mode: Data written to the file is always appended to the file's end. */\n // @ts-ignore: decorator\n @inline\n export const APPEND: fdflags = 1;\n /** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */\n // @ts-ignore: decorator\n @inline\n export const DSYNC: fdflags = 2;\n /** Non-blocking mode. */\n // @ts-ignore: decorator\n @inline\n export const NONBLOCK: fdflags = 4;\n /** Synchronized read I/O operations. */\n // @ts-ignore: decorator\n @inline\n export const RSYNC: fdflags = 8;\n /** Write according to synchronized I/O file integrity completion. */\n // @ts-ignore: decorator\n @inline\n export const SYNC: fdflags = 16;\n}\nexport type fdflags = u16;\n\n/** File descriptor attributes. */\n@unmanaged export class fdstat {\n /** File type. */\n filetype: filetype;\n /** File descriptor flags. */\n flags: fdflags;\n /** Rights that apply to this file descriptor. */\n rights_base: rights;\n /** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */\n rights_inheriting: rights;\n}\n\n/** Relative offset within a file. */\nexport type filedelta = i64;\n\n/** Non-negative file size or length of a region within a file. */\nexport type filesize = u64;\n\n/** File attributes. */\n@unmanaged export class filestat {\n /** Device ID of device containing the file. */\n dev: device;\n /** File serial number. */\n ino: inode;\n /** File type. */\n filetype: filetype;\n /** Number of hard links to the file. */\n nlink: linkcount;\n /** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */\n size: filesize;\n /** Last data access timestamp. */\n atim: timestamp;\n /** Last data modification timestamp. */\n mtim: timestamp;\n /** Last file status change timestamp. */\n ctim: timestamp;\n}\n\n/** The type of a file descriptor or file. */\nexport namespace filetype {\n /** The type of the file descriptor or file is unknown or is different from any of the other types specified. */\n // @ts-ignore: decorator\n @inline\n export const UNKNOWN: filetype = 0;\n /** The file descriptor or file refers to a block device inode. */\n // @ts-ignore: decorator\n @inline\n export const BLOCK_DEVICE: filetype = 1;\n /** The file descriptor or file refers to a character device inode. */\n // @ts-ignore: decorator\n @inline\n export const CHARACTER_DEVICE: filetype = 2;\n /** The file descriptor or file refers to a directory inode. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: filetype = 3;\n /** The file descriptor or file refers to a regular file inode. */\n // @ts-ignore: decorator\n @inline\n export const REGULAR_FILE: filetype = 4;\n /** The file descriptor or file refers to a datagram socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_DGRAM: filetype = 5;\n /** The file descriptor or file refers to a byte-stream socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_STREAM: filetype = 6;\n /** The file refers to a symbolic link inode. */\n // @ts-ignore: decorator\n @inline\n export const SYMBOLIC_LINK: filetype = 7;\n}\nexport type filetype = u8;\n\n/** Which file time attributes to adjust. */\nexport namespace fstflags {\n /** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM: fstflags = 1;\n /** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM_NOW: fstflags = 2;\n /** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM: fstflags = 4;\n /** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM_NOW: fstflags = 8;\n}\nexport type fstflags = u16;\n\n/** File serial number that is unique within its file system. */\nexport type inode = u64;\n\n/** A region of memory for scatter/gather reads. */\n@unmanaged export class iovec {\n /** The address of the buffer to be filled. */\n buf: usize;\n /** The length of the buffer to be filled. */\n buf_len: usize;\n}\n\n/** Number of hard links to an inode. */\nexport type linkcount = u32;\n\n/** Flags determining the method of how paths are resolved. */\nexport namespace lookupflags {\n /** As long as the resolved path corresponds to a symbolic link, it is expanded. */\n // @ts-ignore: decorator\n @inline\n export const SYMLINK_FOLLOW: lookupflags = 1;\n}\nexport type lookupflags = u32;\n\n/** Open flags. */\nexport namespace oflags {\n /** Create file if it does not exist. */\n // @ts-ignore: decorator\n @inline\n export const CREAT: oflags = 1;\n /** Fail if not a directory. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: oflags = 2;\n /** Fail if file already exists. */\n // @ts-ignore: decorator\n @inline\n export const EXCL: oflags = 4;\n /** Truncate file to size 0. */\n // @ts-ignore: decorator\n @inline\n export const TRUNC: oflags = 8;\n}\nexport type oflags = u16;\n\n// TODO: undocumented\nexport namespace preopentype {\n // @ts-ignore: decorator\n @inline\n export const DIR: preopentype = 0;\n}\nexport type preopentype = u8;\n\n// TODO: undocumented\nexport abstract class prestat {\n type: preopentype;\n}\n\n// TODO: undocumented\nexport class dirprestat extends prestat {\n name_len: usize;\n}\n\n/** Flags provided to `sock_recv`. */\nexport namespace riflags {\n /** Returns the message without removing it from the socket's receive queue. */\n // @ts-ignore: decorator\n @inline\n export const PEEK: riflags = 1;\n /** On byte-stream sockets, block until the full amount of data can be returned. */\n // @ts-ignore: decorator\n @inline\n export const WAITALL: riflags = 2;\n}\nexport type riflags = u16;\n\n/** File descriptor rights, determining which actions may be performed. */\nexport namespace rights {\n /** The right to invoke `fd_datasync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_DATASYNC: rights = 1;\n /** The right to invoke `fd_read` and `sock_recv`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: rights = 2;\n /** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SEEK: rights = 4;\n /** The right to invoke `fd_fdstat_set_flags`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FDSTAT_SET_FLAGS: rights = 8;\n /** The right to invoke `fd_sync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SYNC: rights = 16;\n /** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */\n // @ts-ignore: decorator\n @inline\n export const FD_TELL: rights = 32;\n /** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: rights = 64;\n /** The right to invoke `fd_advise`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ADVISE: rights = 128;\n /** The right to invoke `fd_allocate`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ALLOCATE: rights = 256;\n /** The right to invoke `path_create_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_DIRECTORY: rights = 512;\n /** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_FILE: rights = 1024;\n /** The right to invoke `path_link` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_SOURCE: rights = 2048;\n /** The right to invoke `path_link` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_TARGET: rights = 4096;\n /** The right to invoke `path_open`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_OPEN: rights = 8192;\n /** The right to invoke `fd_readdir`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READDIR: rights = 16384;\n /** The right to invoke `path_readlink`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_READLINK: rights = 32768;\n /** The right to invoke `path_rename` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_SOURCE: rights = 65536;\n /** The right to invoke `path_rename` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_TARGET: rights = 131072;\n /** The right to invoke `path_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_GET: rights = 262144;\n /** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_SIZE: rights = 524288;\n /** The right to invoke `path_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_TIMES: rights = 1048576;\n /** The right to invoke `fd_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_GET: rights = 2097152;\n /** The right to invoke `fd_filestat_set_size`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_SIZE: rights = 4194304;\n /** The right to invoke `fd_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_TIMES: rights = 8388608;\n /** The right to invoke `path_symlink`. */\n // @ts-ignore: decorator\n @inline\n export const RIGHT_PATH_SYMLINK: rights = 16777216;\n /** The right to invoke `path_remove_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_REMOVE_DIRECTORY: rights = 33554432;\n /** The right to invoke `path_unlink_file`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_UNLINK_FILE: rights = 67108864;\n /** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */\n // @ts-ignore: decorator\n @inline\n export const POLL_FD_READWRITE: rights = 134217728;\n /** The right to invoke `sock_shutdown`. */\n // @ts-ignore: decorator\n @inline\n export const SOCK_SHUTDOWN: rights = 268435456;\n}\nexport type rights = u64;\n\n/** Flags returned by `sock_recv`. */\nexport namespace roflags {\n /** Message data has been truncated. */\n // @ts-ignore: decorator\n @inline\n export const DATA_TRUNCATED: roflags = 1;\n}\nexport type roflags = u16;\n\n/** Which channels on a socket to shut down. */\nexport namespace sdflags {\n /** Disables further receive operations. */\n // @ts-ignore: decorator\n @inline\n export const RD: sdflags = 1;\n /** Disables further send operations. */\n // @ts-ignore: decorator\n @inline\n export const WR: sdflags = 2;\n}\nexport type sdflags = u8;\n\n/** Flags provided to `sock_send`. */\nexport namespace siflags {\n // As there are currently no flags defined, it must be set to zero.\n}\nexport type siflags = u16;\n\n/** Signal condition. */\nexport namespace signal {\n /** Hangup. */\n // @ts-ignore: decorator\n @inline\n export const HUP: signal = 1;\n /** Terminate interrupt signal. */\n // @ts-ignore: decorator\n @inline\n export const INT: signal = 2;\n /** Terminal quit signal. */\n // @ts-ignore: decorator\n @inline\n export const QUIT: signal = 3;\n /** Illegal instruction. */\n // @ts-ignore: decorator\n @inline\n export const ILL: signal = 4;\n /** Trace/breakpoint trap. */\n // @ts-ignore: decorator\n @inline\n export const TRAP: signal = 5;\n /** Process abort signal. */\n // @ts-ignore: decorator\n @inline\n export const ABRT: signal = 6;\n /** Access to an undefined portion of a memory object. */\n // @ts-ignore: decorator\n @inline\n export const BUS: signal = 7;\n /** Erroneous arithmetic operation. */\n // @ts-ignore: decorator\n @inline\n export const FPE: signal = 8;\n /** Kill. */\n // @ts-ignore: decorator\n @inline\n export const KILL: signal = 9;\n /** User-defined signal 1. */\n // @ts-ignore: decorator\n @inline\n export const USR1: signal = 10;\n /** Invalid memory reference. */\n // @ts-ignore: decorator\n @inline\n export const SEGV: signal = 11;\n /** User-defined signal 2. */\n // @ts-ignore: decorator\n @inline\n export const USR2: signal = 12;\n /** Write on a pipe with no one to read it. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: signal = 13;\n /** Alarm clock. */\n // @ts-ignore: decorator\n @inline\n export const ALRM: signal = 14;\n /** Termination signal. */\n // @ts-ignore: decorator\n @inline\n export const TERM: signal = 15;\n /** Child process terminated, stopped, or continued. */\n // @ts-ignore: decorator\n @inline\n export const CHLD: signal = 16;\n /** Continue executing, if stopped. */\n // @ts-ignore: decorator\n @inline\n export const CONT: signal = 17;\n /** Stop executing. */\n // @ts-ignore: decorator\n @inline\n export const STOP: signal = 18;\n /** Terminal stop signal. */\n // @ts-ignore: decorator\n @inline\n export const TSTP: signal = 19;\n /** Background process attempting read. */\n // @ts-ignore: decorator\n @inline\n export const TTIN: signal = 20;\n /** Background process attempting write. */\n // @ts-ignore: decorator\n @inline\n export const TTOU: signal = 21;\n /** High bandwidth data is available at a socket. */\n // @ts-ignore: decorator\n @inline\n export const URG: signal = 22;\n /** CPU time limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XCPU: signal = 23;\n /** File size limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XFSZ: signal = 24;\n /** Virtual timer expired. */\n // @ts-ignore: decorator\n @inline\n export const VTALRM: signal = 25;\n // @ts-ignore: decorator\n @inline\n export const PROF: signal = 26;\n // @ts-ignore: decorator\n @inline\n export const WINCH: signal = 27;\n // @ts-ignore: decorator\n @inline\n export const POLL: signal = 28;\n // @ts-ignore: decorator\n @inline\n export const PWR: signal = 29;\n /** Bad system call. */\n // @ts-ignore: decorator\n @inline\n export const SYS: signal = 30;\n}\nexport type signal = u8;\n\n/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */\nexport namespace subclockflags {\n /** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */\n // @ts-ignore: decorator\n @inline\n export const ABSTIME: subclockflags = 1;\n}\nexport type subclockflags = u16;\n\n/** Subscription to an event. */\n@unmanaged export abstract class subscription {\n /** User-provided value that is attached to the subscription. */\n userdata: userdata;\n /** The type of the event to which to subscribe. */\n type: eventtype;\n private __padding0: u32;\n}\n\n/* Subscription to an event of type `eventtype.CLOCK`.**/\n@unmanaged export class clocksubscription extends subscription {\n /** The user-defined unique identifier of the clock. */\n identifier: userdata;\n /** The clock against which to compare the timestamp. */\n clock_id: clockid;\n /** The absolute or relative timestamp. */\n timeout: timestamp;\n /** The amount of time that the implementation may wait additionally to coalesce with other events. */\n precision: timestamp;\n /** Flags specifying whether the timeout is absolute or relative. */\n flags: subclockflags;\n private __padding1: u32;\n}\n\n/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/\n@unmanaged export class fdsubscription extends subscription {\n /** The file descriptor on which to wait for it to become ready for reading or writing. */\n fd: fd;\n}\n\n/** Timestamp in nanoseconds. */\nexport type timestamp = u64;\n\n/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */\nexport type userdata = u64;\n\n/** The position relative to which to set the offset of the file descriptor. */\nexport namespace whence {\n /** Seek relative to current position. */\n // @ts-ignore: decorator\n @inline\n export const CUR: whence = 0;\n /** Seek relative to end-of-file. */\n // @ts-ignore: decorator\n @inline\n export const END: whence = 1;\n /** Seek relative to start-of-file. */\n // @ts-ignore: decorator\n @inline\n export const SET: whence = 2;\n}\nexport type whence = u8;\n","bindings/wasi":'export * from "./wasi_unstable";\n',builtins:'// @ts-ignore: decorator\n@builtin\nexport declare function isInteger(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFloat(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isBoolean(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isSigned(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isReference(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isString(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArray(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArrayLike(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFunction(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isNullable(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isDefined(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isConstant(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isManaged(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isVoid(): boolean;\n\n// @ts-ignore\n@builtin\nexport declare function lengthof(func?: T): i32;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function clz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ctz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function popcnt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function abs(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function max(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function min(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ceil(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function floor(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function nearest(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function reinterpret(value: number): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sqrt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function trunc(value: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function load(offset: usize, immOffset?: usize, immAlign?: usize): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function store(offset: usize, value: void, immOffset?: usize, immAlign?: usize): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sizeof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function alignof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function offsetof(fieldName?: string): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function idof(): u32;\n\n// @ts-ignore\n@builtin\nexport declare function nameof(): string;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unreachable(): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function changetype(value: void): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unchecked(expr: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_indirect(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_direct(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function instantiate(...args: void[]): T;\n\nexport namespace atomic {\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: T, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n\n // @ts-ignore: decorator\n @builtin\n export declare function notify(ptr: usize, count: i32): i32;\n}\n\n// @ts-ignore: decorator\n@lazy\nexport const enum AtomicWaitResult {\n OK = 0,\n NOT_EQUAL = 1,\n TIMED_OUT = 2\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8(value: void): i8;\n\nexport namespace i8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i8 = -128;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i8 = 127;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16(value: void): i16;\n\nexport namespace i16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i16 = -32768;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i16 = 32767;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32(value: void): i32;\n\nexport namespace i32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i32 = -2147483648;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i32 = 2147483647;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f32(value: f32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64(value: void): i64;\n\nexport namespace i64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i64 = -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i64 = 9223372036854775807;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f64(value: f64): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw32 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isize(value: void): isize;\n\nexport namespace isize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u8(value: void): u8;\n\nexport namespace u8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u8 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u8 = 255;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u16(value: void): u16;\n\nexport namespace u16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u16 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u16 = 65535;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u32(value: void): u32;\n\nexport namespace u32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u32 = 4294967295;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u64(value: void): u64;\n\nexport namespace u64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function usize(value: void): usize;\n\nexport namespace usize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: usize = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function bool(value: void): bool;\n\nexport namespace bool {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: bool = false;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: bool = true;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32(value: void): f32;\n\nexport namespace f32 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x34000000); // 0x1p-23f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x00000001); // 0x0.000001p+0f\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7F7FFFFF); // 0x1.fffffep+127f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x00800000); // 0x1p-126f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f32, y: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i32(value: i32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f32): f32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f32): f32;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64(value: void): f64;\n\nexport namespace f64 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x3CB0000000000000); // 0x1p-52\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x0000000000000001); // 0x0.0000000000001p+0\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7FEFFFFFFFFFFFFF); // 0x1.fffffffffffffp+1023\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x0010000000000000); // 0x1p-1022\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f64, y: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i64(value: i64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f64): f64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f64): f64;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function v128(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace v128 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128; // except i64\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function not(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function bitselect(v1: v128, v2: v128, c: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8x16(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace i8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\n\nexport namespace i16x8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\n\nexport namespace i32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f32x4_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f32x4_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64x2(a: i64, b: i64): v128;\n\nexport namespace i64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f64x2_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f64x2_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\n\nexport namespace f32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i32x4(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i32x4(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64x2(a: f64, b: f64): v128;\n\nexport namespace f64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i64x2(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i64x2(a: v128): v128;\n}\n\nexport namespace v8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(\n a: v128, b: v128,\n l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8,\n l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8\n ): v128;\n}\n\n// @ts-ignore: decorator\n@external("env", "abort")\ndeclare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n// @ts-ignore: decorator\n@external("env", "trace")\ndeclare function trace(\n message: string,\n n?: i32,\n a0?: f64,\n a1?: f64,\n a2?: f64,\n a3?: f64,\n a4?: f64\n): void;\n',compat:"\nexport type ReturnType = returnof;\n",dataview:'import { BLOCK_MAXSIZE } from "./rt/common";\nimport { ArrayBuffer } from "./arraybuffer";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\n\n// TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte\n\nexport class DataView {\n\n private data: ArrayBuffer;\n private dataStart: usize;\n private dataLength: i32;\n\n constructor(\n buffer: ArrayBuffer,\n byteOffset: i32 = 0,\n byteLength: i32 = buffer.byteLength\n ) {\n if (\n i32(byteLength > BLOCK_MAXSIZE) |\n i32(byteOffset + byteLength > buffer.byteLength)\n ) throw new RangeError(E_INVALIDLENGTH);\n this.data = buffer; // retains\n var dataStart = changetype(buffer) + byteOffset;\n this.dataStart = dataStart;\n this.dataLength = byteLength;\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n getFloat32(byteOffset: i32, littleEndian: boolean = false): f32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getFloat64(byteOffset: i32, littleEndian: boolean = false): f64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getInt8(byteOffset: i32): i8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getInt16(byteOffset: i32, littleEndian: boolean = false): i16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getInt32(byteOffset: i32, littleEndian: boolean = false): i32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint8(byteOffset: i32): u8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getUint16(byteOffset: i32, littleEndian: boolean = false): u16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint32(byteOffset: i32, littleEndian: boolean = false): u32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setFloat32(byteOffset: i32, value: f32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setFloat64(byteOffset: i32, value: f64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setInt8(byteOffset: i32, value: i8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setInt16(byteOffset: i32, value: i16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setInt32(byteOffset: i32, value: i32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint8(byteOffset: i32, value: u8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setUint16(byteOffset: i32, value: u16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint32(byteOffset: i32, value: u32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n // Non-standard additions that make sense in WebAssembly, but won\'t work in JS:\n\n getInt64(byteOffset: i32, littleEndian: boolean = false): i64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i64 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint64(byteOffset: i32, littleEndian: boolean = false): u64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setInt64(byteOffset: i32, value: i64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint64(byteOffset: i32, value: u64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n toString(): string {\n return "[object DataView]";\n }\n}\n',date:'import {\n UTC as Date_UTC,\n now as Date_now\n} from "./bindings/Date";\n\nexport class Date {\n\n @inline static UTC(\n year: i32,\n month: i32 = 0,\n day: i32 = 1,\n hour: i32 = 0,\n minute: i32 = 0,\n second: i32 = 0,\n millisecond: i64 = 0\n ): i64 {\n return Date_UTC(year, month, day, hour, minute, second, millisecond);\n }\n\n @inline static now(): i64 {\n return Date_now();\n }\n\n private value: i64;\n\n constructor(value: i64) {\n this.value = value;\n }\n\n getTime(): i64 {\n return this.value;\n }\n\n setTime(value: i64): i64 {\n this.value = value;\n return value;\n }\n}\n',diagnostics:"// @ts-ignore: decorator\n@builtin\nexport declare function ERROR(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function WARNING(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function INFO(message?: string): void;\n",error:'export class Error {\n\n name: string = "Error";\n stack: string = ""; // TODO\n\n constructor(\n public message: string = ""\n ) {}\n\n toString(): string {\n var message = this.message;\n return message.length\n ? this.name + ": " + message\n : this.name;\n }\n}\n\nexport class RangeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "RangeError";\n }\n}\n\nexport class TypeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "TypeError";\n }\n}\n\nexport class SyntaxError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "SyntaxError";\n }\n}\n',fixedarray:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";\n\n// NOTE: DO NOT USE YET!\n\n// TODO: FixedArray with S being the static size, i.e. `new FixedArray`.\n// Then hard-wire this special type to the compiler and do static length checks instead :)\n\nexport class FixedArray {\n [key: number]: T;\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n var outSize = length << alignof();\n var out = __alloc(outSize, idof>());\n memory.fill(out, 0, outSize);\n return changetype>(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof();\n }\n\n @operator("[]") private __get(index: i32): T {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n this.__unchecked_set(index, value);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(changetype(this) + (index << alignof()));\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = changetype(this) + (index << alignof());\n let oldValue = load(offset);\n if (changetype(value) != oldValue) {\n store(offset, __retain(changetype(value)));\n __release(changetype(oldValue));\n }\n } else {\n store(changetype(this) + (index << alignof()), value);\n }\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = changetype(this);\n let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n }\n}\n',heap:"// @ts-ignore: decorator\n@builtin\nexport declare const __heap_base: usize;\n",iterator:"export abstract class Iterable {\n // ?\n}\n\n@sealed\nexport abstract class Iterator {\n\n // private constructor(iterable: Iterable) {\n // }\n\n // TODO: these need to evaluate the classId at the respective reference in order to obtain the\n // next value, i.e. arrays work differently than maps. we'd then have:\n //\n // ╒═══════════════════ Iterator layout (32-bit) ══════════════════╕\n // 3 2 1\n // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n // │ index │\n // ├─────────────────────────────────────────────────────────┬───┬─┤\n // │ reference │ 0 │D│\n // └─────────────────────────────────────────────────────────┴───┴─┘\n // D: Done flag\n\n // get value(this: u64): T {\n // ?\n // }\n\n // next(this: u64): Iterator {\n // ?\n // }\n\n done(this: u64): bool {\n return (this & 1);\n }\n}\n",map:'/// \n\nimport { HASH } from "./util/hash";\nimport { E_KEYNOTFOUND } from "util/error";\n\n// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a map entry. */\n@unmanaged class MapEntry {\n key: K;\n value: V;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K/V is <= 32-bits\n const maxkv = sizeof() > sizeof() ? sizeof() : sizeof();\n const align = (maxkv > sizeof() ? maxkv : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Map {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // MapEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() {\n this.clear();\n }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: K, hashCode: u32): MapEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n has(key: K): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n @operator("[]")\n get(key: K): V {\n var entry = this.find(key, HASH(key));\n if (!entry) throw new Error(E_KEYNOTFOUND); // cannot represent `undefined`\n return entry.value;\n }\n\n @operator("[]=")\n set(key: K, value: V): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (entry) {\n if (isManaged()) {\n let oldRef = changetype(entry.value);\n if (changetype(value) != oldRef) {\n entry.value = changetype(__retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n entry.value = value;\n }\n } else {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n let entries = this.entries;\n entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE());\n // link with the map\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n entry.value = isManaged()\n ? changetype(__retain(changetype(value)))\n : value;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n delete(key: K): bool {\n var entry = this.find(key, HASH(key));\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key));\n if (isManaged()) __release(changetype(entry.value));\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr);\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr);\n newEntry.key = oldEntry.key;\n newEntry.value = oldEntry.value;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n keys(): K[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var keys = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n keys.push(entry.key);\n }\n }\n return keys;\n }\n\n values(): V[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.value);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Map]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged() || isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n if (isManaged()) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n if (isManaged()) {\n let val = changetype(entry.value);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',math:'import * as JSMath from "./bindings/Math";\nexport { JSMath };\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from "./builtins";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n// TODO: sin, cos, tan for Math namespace\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n return NativeMath.exp(x - kln2) * scale * scale;\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7ff;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u >> 63);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_32: u32;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx >> 31) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var e = reinterpret(x) >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n if (hx >> 31) return -x;\n return x;\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var s = u >> 63;\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n switch (m) {\n case 0: return PI / 4;\n case 1: return -PI / 4;\n case 2: return 3 * PI / 4;\n case 3: return -3 * PI / 4;\n }\n } else {\n switch (m) {\n case 0: return 0.0;\n case 1: return -0.0;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // TODO\n return JSMath.cos(x);\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var hx = (reinterpret(x) >> 32);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n var hi: f64, lo: f64 = 0;\n var k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n var xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n var xq = xs * xs;\n var c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n var y = 1.0 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32 & 0x7FFFFFFF);\n var k = 0, sign_ = (u >> 63);\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign_) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = (ux >> 52);\n var ey = (uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || (hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = (u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = (hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln2hi;\n var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n var y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n var u_ = reinterpret(x);\n var hx = (u_ >> 32);\n var lx = u_;\n u_ = reinterpret(y);\n var hy = (u_ >> 32);\n var ly = u_;\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n var yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let kcond = k > 20;\n let offset = select(52, 20, kcond) - k;\n let Ly = select(ly, iy, kcond);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n var ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n var s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n var t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n var j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret((((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n var y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = (u_ >> 32);\n var i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret((n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = (reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n\n export function seedRandom(value: i64): void {\n assert(value);\n random_seeded = true;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n }\n\n export function random(): f64 { // see: v8/src/base/random-number-generator.cc\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = ((s0 + s1) & 0x000FFFFFFFFFFFFF) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f64): f64 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n // In ECMAScript all NaN values are indistinguishable from each other\n // so we need handle NaN and negative NaN in similar way\n return ((reinterpret(x) >>> 63) & i32(x == x));\n }\n\n export function sin(x: f64): f64 { // TODO\n return JSMath.sin(x);\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var absx = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n t = expm1(absx);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // TODO\n return JSMath.tan(x);\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n /* make sure final n < -53 to avoid double\n rounding in the subnormal range */\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx << 63;\n return reinterpret(ux);\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = (ux >> 63);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return sx ? -x : x;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy\nconst PIO2_TABLE: u64[] = [\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n];\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret((0x7F + (k >> 1)) << 23);\n return NativeMathf.exp(x - kln2) * scale * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n const bits = PIO2_TABLE;\n\n var offset = (u >> 23) - 152;\n var index = offset >> 6;\n var shift = offset & 63;\n\n var b0 = unchecked(bits[index + 0]);\n var b1 = unchecked(bits[index + 1]);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = unchecked(bits[index + 2]);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product: u64 = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q: i32 = ((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const pi2hi = reinterpret(0x3FF921FB50000000); // 1.57079631090164184570\n const pi2lo = reinterpret(0x3E5110B4611A6263); // 1.58932547735281966916e-8\n const _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { /* π * 0x1p28 */\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const S1 = reinterpret(0xBFC5555554CBAC77); // -0x15555554cbac77.0p-55\n const S2 = reinterpret(0x3F811110896EFBB2); // 0x111110896efbb2.0p-59\n const S3 = reinterpret(0xBF2A00F9E2CAE774); // -0x1a00f9e2cae774.0p-65\n const S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return ((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const C0 = reinterpret(0xBFDFFFFFFD0C5E81); // -0x1ffffffd0c5e81.0p-54\n const C1 = reinterpret(0x3FA55553E1053A42); // 0x155553e1053a42.0p-57\n const C2 = reinterpret(0xBF56C087E80F1E27); // -0x16c087e80f1e27.0p-62\n const C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return (((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n\n const T0 = reinterpret(0x3FD5554D3418C99F); /* 0x15554d3418c99f.0p-54 */\n const T1 = reinterpret(0x3FC112FD38999F72); /* 0x1112fd38999f72.0p-55 */\n const T2 = reinterpret(0x3FAB54C91D865AFE); /* 0x1b54c91d865afe.0p-57 */\n const T3 = reinterpret(0x3F991DF3908C33CE); /* 0x191df3908c33ce.0p-58 */\n const T4 = reinterpret(0x3F685DADFCECF44E); /* 0x185dadfcecf44e.0p-61 */\n const T5 = reinterpret(0x3F8362B9BF971BCD); /* 0x1362b9bf971bcd.0p-59 */\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return (odd ? -1 / r : r);\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000);\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx >> 31) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) {\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (a < 0x3F800000 + (12 << 23)) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000);\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = (pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000);\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = (((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n switch (m) {\n case 0: return pi / 4;\n case 1: return -pi / 4;\n case 2: return 3 * pi / 4;\n case 3: return -3 * pi / 4;\n }\n } else {\n switch (m) {\n case 0: return 0;\n case 1: return -0;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const c1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const c2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const c3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n /* raise inexact if x != 0 */\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix > 0x4016cbe3) { /* |x| ~> 3π/4 */\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix > 0x40afeddf) { /* |x| ~> 7π/4 */\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n /* cos(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000);\n var hx = reinterpret(x);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx >= 0x42B17218) {\n if (!sign_) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n var hi: f32, lo: f32;\n var k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n var xx = x * x;\n var c = x - xx * (P1 + xx * P2);\n var y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x42B17180), // 8.8721679688e+01f\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign_ = (u >> 31);\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign_) return -1;\n if (x > o_threshold) {\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt((x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n var u = reinterpret(x);\n var k = 0;\n if (u < 0x00800000 || (u >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (u >> 31) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) return x;\n else if (u == 0x3F800000) return 0;\n u += 0x3F800000 - 0x3F3504F3;\n k += (u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ix = reinterpret(hi);\n ix &= 0xFFFFF000;\n hi = reinterpret(ix);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n var ix = reinterpret(x);\n var c: f32 = 0, f: f32 = 0;\n var k: i32 = 1;\n if (ix < 0x3ED413D0 || (ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = (iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k: i32 = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n var u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n var lo: f32 = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 { // see: musl/src/math/powf.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3F15C000), // 5.84960938e-01f\n dp_l1 = reinterpret(0x35D1CFDC), // 1.56322085e-06f\n two24 = reinterpret(0x4B800000), // 16777216f\n huge = reinterpret(0x7149F2CA), // 1.0e+30f\n tiny = reinterpret(0x0DA24260), // 1.0e-30f\n L1 = reinterpret(0x3F19999A), // 6.0000002384e-01f\n L2 = reinterpret(0x3EDB6DB7), // 4.2857143283e-01f\n L3 = reinterpret(0x3EAAAAAB), // 3.3333334327e-01f\n L4 = reinterpret(0x3E8BA305), // 2.7272811532e-01f\n L5 = reinterpret(0x3E6C3255), // 2.3066075146e-01f\n L6 = reinterpret(0x3E53F142), // 2.0697501302e-01f\n P1 = reinterpret(0x3E2AAAAB), // 1.6666667163e-01f\n P2 = reinterpret(0xBB360B61), // -2.7777778450e-03f\n P3 = reinterpret(0x388AB355), // 6.6137559770e-05f\n P4 = reinterpret(0xB5DDEA0E), // -1.6533901999e-06f\n P5 = reinterpret(0x3331BB4C), // 4.1381369442e-08f\n lg2 = reinterpret(0x3F317218), // 6.9314718246e-01f\n lg2_h = reinterpret(0x3F317200), // 6.93145752e-01f\n lg2_l = reinterpret(0x35BFBE8C), // 1.42860654e-06f\n ovt = reinterpret(0x3338AA3C), // 4.2995665694e-08f\n cp = reinterpret(0x3F76384F), // 9.6179670095e-01\n cp_h = reinterpret(0x3F764000), // 9.6191406250e-01\n cp_l = reinterpret(0xB8F623C6), // -1.1736857402e-04\n ivln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00\n ivln2_h = reinterpret(0x3FB8AA00), // 1.4426879883e+00\n ivln2_l = reinterpret(0x36ECA570), // 7.0526075433e-06\n inv3 = reinterpret(0x3EAAAAAB); // 0.333333333333\n var hx = reinterpret(x);\n var hy = reinterpret(y);\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if (iy == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3F800000) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if (ix > 0x7F800000 || iy > 0x7F800000) return x + y; // NaN if either arg is NaN\n var yisint = 0, j: i32, k: i32;\n if (hx < 0) {\n if (iy >= 0x4B800000) yisint = 2;\n else if (iy >= 0x3F800000) {\n k = (iy >> 23) - 0x7F;\n let ki = 23 - k;\n j = iy >> ki;\n if ((j << ki) == iy) yisint = 2 - (j & 1);\n }\n }\n if (iy == 0x7F800000) { // y is +-inf\n if (ix == 0x3F800000) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix > 0x3F800000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3F800000) return hy >= 0 ? x : 1.0 / x;\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3F000000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n var ax = builtin_abs(x);\n var z: f32;\n if (ix == 0x7F800000 || ix == 0 || ix == 0x3F800000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3F800000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n }\n else if (yisint == 1) z = -z;\n }\n return z;\n }\n var sn = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) sn = -1.0;\n }\n var t1: f32, t2: f32, r: f32, s: f32, t: f32, u: f32, v: f32, w: f32, p_h: f32, p_l: f32;\n var n: i32, is: i32;\n if (iy > 0x4D000000) {\n if (ix < 0x3F7FFFF8) return hy < 0 ? sn * huge * huge : sn * tiny * tiny;\n if (ix > 0x3F800007) return hy > 0 ? sn * huge * huge : sn * tiny * tiny;\n t = ax - 1;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = v - (t1 - u);\n } else {\n let s2: f32, s_h: f32, s_l: f32, t_h: f32, t_l: f32;\n n = 0;\n if (ix < 0x00800000) {\n ax *= two24;\n n -= 24;\n ix = reinterpret(ax);\n }\n n += (ix >> 23) - 0x7F;\n j = ix & 0x007FFFFF;\n ix = j | 0x3F800000;\n if (j <= 0x1CC471) k = 0;\n else if (j < 0x5DB3D7) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00800000;\n }\n ax = reinterpret(ix);\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n s = u * v;\n s_h = s;\n is = reinterpret(s_h);\n s_h = reinterpret(is & 0xFFFFF000);\n is = ((ix >> 1) & 0xFFFFF000) | 0x20000000;\n t_h = reinterpret(is + 0x00400000 + (k << 21));\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = s * s;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + s);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n is = reinterpret(t_h);\n t_h = reinterpret(is & 0xFFFFF000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * s;\n p_h = u + v;\n is = reinterpret(p_h);\n p_h = reinterpret(is & 0xFFFFF000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = (((z_h + z_l) + dp_h) + t);\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n is = reinterpret(y);\n var y1 = reinterpret(is & 0xFFFFF000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n j = reinterpret(z);\n if (j > 0x43000000) {\n return sn * huge * huge;\n } else if (j == 0x43000000) {\n if (p_l + ovt > z - p_h) return sn * huge * huge;\n } else if ((j & 0x7FFFFFFF) > 0x43160000) {\n return sn * tiny * tiny;\n } else if (j == 0xC3160000) {\n if (p_l <= z - p_h) return sn * tiny * tiny;\n }\n var i = j & 0x7FFFFFFF;\n k = (i >> 23) - 0x7F;\n n = 0;\n if (i > 0x3F000000) {\n n = j + (0x00800000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 23) - 0x7F;\n t = reinterpret(n & ~(0x007FFFFF >> k));\n n = ((n & 0x007FFFFF) | 0x00800000) >> (23 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n is = reinterpret(t);\n t = reinterpret(is & 0xFFFF8000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = reinterpret(z);\n j += n << 23;\n if ((j >> 23) <= 0) z = scalbn(z, n);\n else z = reinterpret(j);\n return sn * z;\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f32): f32 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n // @ts-ignore: type\n return ((reinterpret(x) >>> 31) & (x == x));\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const s2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var absx = reinterpret(u);\n var t: f32;\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n t = expm1(absx);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2f(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const t1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const t2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const t3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n /* tan(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* argument reduction */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx;\n return reinterpret(ux);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = (ux >> 31);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // q++;\n }\n return sx ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const s2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7fffffff;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n /* -sin(x + c) is not correct if x+c could be 0: -0 vs +0 */\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n\n switch (n & 3) {\n case 0: {\n sincos_sin = s;\n sincos_cos = c;\n break;\n }\n case 1: {\n sincos_sin = c;\n sincos_cos = -s;\n break;\n }\n case 2: {\n sincos_sin = -s;\n sincos_cos = -c;\n break;\n }\n case 3:\n default: {\n sincos_sin = -c;\n sincos_cos = s;\n break;\n }\n }\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 5) {\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i32): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 6) {\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow32f(x: f32, e: i32): f32 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out: f32 = 1;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n\nexport function ipow64f(x: f64, e: i32): f64 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out = 1.0;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n',memory:'import { memcmp, memmove, memset } from "./util/memory";\nimport { E_NOTIMPLEMENTED } from "./util/error";\n\n/** Memory manager interface. */\nexport namespace memory {\n\n /** Gets the size of the memory in pages. */\n // @ts-ignore: decorator\n @builtin\n export declare function size(): i32;\n\n /** Grows the memory by the given size in pages and returns the previous size in pages. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function grow(pages: i32): i32;\n\n /** Fills a section in memory with the specified byte value. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function fill(dst: usize, c: u8, n: usize): void {\n memset(dst, c, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Copies a section of memory to another. Has move semantics. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function copy(dst: usize, src: usize, n: usize): void {\n memmove(dst, src, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Initializes a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Drops a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function drop(segmentIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Repeats a section of memory at a specific address. */\n // @ts-ignore: decorator\n @unsafe\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void {\n var index: usize = 0;\n var total = srcLength * count;\n while (index < total) {\n memory.copy(dst + index, src, srcLength);\n index += srcLength;\n }\n }\n\n /** Compares a section of memory to another. */\n // @ts-ignore: decorator\n @inline\n export function compare(vl: usize, vr: usize, n: usize): i32 {\n return memcmp(vl, vr, n);\n }\n}\n',number:'import { itoa, dtoa } from "./util/number";\nimport { strtol } from "./util/string";\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const NaN: f64 = 0 / 0;\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const Infinity: f64 = 1 / 0;\n\nexport function isNaN(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value != value;\n}\n\nexport function isFinite(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value - value == 0;\n}\n\n@sealed @unmanaged\nexport abstract class I8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i8 = i8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i8 = i8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i8 {\n return strtol(value, radix);\n }\n\n toString(this: i8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i16 = i16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i16 = i16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i16 {\n return strtol(value, radix);\n }\n\n toString(this: i16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i32 = i32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i32 = i32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i32 {\n return strtol(value, radix);\n }\n\n toString(this: i32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i64 = i64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i64 = i64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i64 {\n return strtol(value, radix);\n }\n\n toString(this: i64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Isize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: isize = isize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: isize = isize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): isize {\n return strtol(value, radix);\n }\n\n toString(this: isize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u8 = u8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u8 = u8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u8 {\n return strtol(value, radix);\n }\n\n toString(this: u8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u16 = u16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u16 = u16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u16 {\n return strtol(value, radix);\n }\n\n toString(this: u16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u32 = u32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u32 = u32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u32 {\n return strtol(value, radix);\n }\n\n toString(this: u32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u64 = u64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u64 = u64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u64 {\n return strtol(value, radix);\n }\n\n toString(this: u64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Usize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: usize = usize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: usize = usize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): usize {\n return strtol(value, radix);\n }\n\n toString(this: usize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Bool {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: bool = bool.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: bool = bool.MAX_VALUE;\n\n toString(this: bool): String {\n // TODO: radix?\n return this ? "true" : "false";\n }\n}\n\nexport { Bool as Boolean };\n\n@sealed @unmanaged\nexport abstract class F32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f32 = f32.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f32 = f32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f32 = f32.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f32 = f32.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f32 = f32.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f32 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f32 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f32 = NaN;\n\n static isNaN(value: f32): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f32): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f32): bool {\n return abs(value) <= f32.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f32): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f32 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f32 {\n return parseFloat(value);\n }\n\n toString(this: f32): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class F64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f64 = f64.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f64 = f64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f64 = f64.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f64 = f64.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f64 = f64.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f64 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f64 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f64 = NaN;\n\n static isNaN(value: f64): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f64): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f64): bool {\n return abs(value) <= f64.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f64): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f64 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f64 {\n return parseFloat(value);\n }\n\n toString(this: f64, radix: i32 = 0): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\nexport { F64 as Number };\n',polyfills:"export function bswap(value: T): T {\n if (isInteger()) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n }\n if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n }\n if (sizeof() == 8) {\n let a = (value >> 8) & 0x00FF00FF00FF00FF;\n let b = (value & 0x00FF00FF00FF00FF) << 8;\n let v = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n }\n assert(false);\n return value;\n}\n\nexport function bswap16(value: T): T {\n if (isInteger() && sizeof() <= 4) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n } else if (sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n }\n assert(false);\n return value;\n}\n",regexp:'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',rt:'import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo";\nimport { E_INDEXOUTOFRANGE } from "./util/error";\nimport { BLOCK, BLOCK_OVERHEAD } from "./rt/common";\nimport { ArrayBufferView } from "./arraybuffer";\n\n// @ts-ignore: decorator\n@builtin\nexport declare const __rtti_base: usize;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_globals(cookie: u32): void;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_members(ref: usize, cookie: u32): void;\n\n// @ts-ignore: decorator\n@unsafe\nexport function __typeinfo(id: u32): TypeinfoFlags {\n var ptr = __rtti_base;\n if (id > load(ptr)) throw new Error(E_INDEXOUTOFRANGE);\n return changetype(ptr + sizeof() + id * offsetof()).flags;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __instanceof(ref: usize, superId: u32): bool { // keyword\n var id = changetype(ref - BLOCK_OVERHEAD).rtId;\n var ptr = __rtti_base;\n if (id <= load(ptr)) {\n do if (id == superId) return true;\n while (id = changetype(ptr + sizeof() + id * offsetof()).base);\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize {\n var array = __alloc(offsetof(), id);\n var bufferSize = length << alignLog2;\n var buffer = __alloc(bufferSize, idof());\n store(array, __retain(buffer), offsetof("data"));\n changetype(array).dataStart = buffer;\n changetype(array).dataLength = bufferSize;\n store(changetype(array), length, offsetof("length_"));\n if (data) memory.copy(buffer, data, bufferSize);\n return array;\n}\n\n// These are provided by the respective implementation, included as another entry file by asc:\n\n// @builtin @unsafe\n// export declare function __alloc(size: usize, id: u32): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __realloc(ref: usize, size: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __free(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __retain(ref: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __release(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __collect(): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __visit(ref: usize, cookie: u32): void;\n',"rt/common":"// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n\n// ╒════════════════ Common block layout (32-bit) ═════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime size │ -4\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ ... │ ref\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize; // WASM64 needs adaption\n /** Garbage collector info. */\n gcInfo: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD = (offsetof() + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n","rt/index-full":'export { __alloc } from "rt/tlsf";\nexport { __retain, __release, __collect } from "rt/pure";\nexport { __rtti_base } from "rt";\n',"rt/index-half":'import "rt/index-full";\n',"rt/index-none":'import "rt/index-stub";\n',"rt/index-stub":'export { __alloc, __retain, __release, __collect } from "rt/stub";\nexport { __rtti_base } from "rt";\n',"rt/pure":'import { DEBUG, BLOCK_OVERHEAD } from "rt/common";\nimport { Block, freeBlock, ROOT } from "rt/tlsf";\nimport { TypeinfoFlags } from "shared/typeinfo";\nimport { onincrement, ondecrement, onfree, onalloc } from "./rtrace";\n\n/////////////////////////// A Pure Reference Counting Garbage Collector ///////////////////////////\n// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf\n\n// ╒══════════════════════ GC Info structure ══════════════════════╕\n// │ 3 2 1 │\n// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│\n// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │B│color│ refCount │\n// └─┴─────┴───────────────────────────────────────────────────────┘\n// B: buffered\n\n// @ts-ignore: decorator\n@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1);\n// @ts-ignore: decorator\n@inline const COLOR_BITS = 3;\n// @ts-ignore: decorator\n@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS;\n// @ts-ignore: decorator\n@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1;\n\n// ╒════════╤═══════════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├────────┼──────────────────────────────────────────────────────┤\n// │ BLACK │ In use or free │\n// │ GRAY │ Possible member of cycle │\n// │ WHITE │ Member of garbage cycle │\n// │ PURPLE │ Possible root of cycle │\n// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │\n// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │\n// └────────┴──────────────────────────────────────────────────────┘\n// Acyclic detection has been decoupled, hence no GREEN.\n\n// @ts-ignore: decorator\n@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_RED: u32 = 4 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT;\n\n// @ts-ignore: decorator\n@inline const VISIT_DECREMENT = 1; // guard 0\n// @ts-ignore: decorator\n@inline const VISIT_MARKGRAY = 2;\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 3;\n// @ts-ignore: decorator\n@inline const VISIT_SCANBLACK = 4;\n// @ts-ignore: decorator\n@inline const VISIT_COLLECTWHITE = 5;\n\n// @ts-ignore: decorator\n@global @unsafe\nfunction __visit(ref: usize, cookie: i32): void {\n if (ref < __heap_base) return;\n var s = changetype(ref - BLOCK_OVERHEAD);\n switch (cookie) {\n case VISIT_DECREMENT: {\n decrement(s);\n break;\n }\n case VISIT_MARKGRAY: {\n if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0);\n s.gcInfo = s.gcInfo - 1;\n markGray(s);\n break;\n }\n case VISIT_SCAN: {\n scan(s);\n break;\n }\n case VISIT_SCANBLACK: {\n let info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if ((info & COLOR_MASK) != COLOR_BLACK) {\n scanBlack(s);\n }\n break;\n }\n case VISIT_COLLECTWHITE: {\n collectWhite(s);\n break;\n }\n default: if (DEBUG) assert(false);\n }\n}\n\n/** Increments the reference count of the specified block by one.*/\nfunction increment(s: Block): void {\n var info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if (isDefined(ASC_RTRACE)) onincrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n}\n\n/** Decrements the reference count of the specified block by one, possibly freeing it. */\nfunction decrement(s: Block): void {\n var info = s.gcInfo;\n var rc = info & REFCOUNT_MASK;\n if (isDefined(ASC_RTRACE)) ondecrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n if (rc == 1) {\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT);\n if (!(info & BUFFERED_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0;\n }\n } else {\n if (DEBUG) assert(rc > 0);\n if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) {\n s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1);\n if (!(info & BUFFERED_MASK)) {\n appendRoot(s);\n }\n } else {\n s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1);\n }\n }\n}\n\n/** Buffer of possible roots. */\n// @ts-ignore: decorator\n@lazy var ROOTS: usize;\n/** Current absolute offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var CUR: usize = 0;\n/** Current absolute end offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var END: usize = 0;\n\n/** Appends a block to possible roots. */\nfunction appendRoot(s: Block): void {\n var cur = CUR;\n if (cur >= END) {\n growRoots(); // TBD: either that or pick a default and force collection on overflow\n cur = CUR;\n }\n store(cur, s);\n CUR = cur + sizeof();\n}\n\n/** Grows the roots buffer if it ran full. */\nfunction growRoots(): void {\n var oldRoots = ROOTS;\n var oldSize = CUR - oldRoots;\n var newSize = max(oldSize * 2, 64 << alignof());\n var newRoots = __alloc(newSize, 0);\n if (isDefined(ASC_RTRACE)) onfree(changetype(newRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n memory.copy(newRoots, oldRoots, oldSize);\n if (oldRoots) {\n if (isDefined(ASC_RTRACE)) onalloc(changetype(oldRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n __free(oldRoots);\n }\n ROOTS = newRoots;\n CUR = newRoots + oldSize;\n END = newRoots + newSize;\n}\n\n/** Collects cyclic garbage. */\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n\n // markRoots\n var roots = ROOTS;\n var cur = roots;\n for (let pos = cur, end = CUR; pos < end; pos += sizeof()) {\n let s = load(pos);\n let info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) {\n markGray(s);\n store(cur, s);\n cur += sizeof();\n } else {\n if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = info & ~BUFFERED_MASK;\n }\n }\n }\n CUR = cur;\n\n // scanRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n scan(load(pos));\n }\n\n // collectRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n let s = load(pos);\n s.gcInfo = s.gcInfo & ~BUFFERED_MASK;\n collectWhite(s);\n }\n CUR = roots;\n}\n\n/** Marks a block as gray (possible member of cycle) during the collection phase. */\nfunction markGray(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) != COLOR_GRAY) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY);\n }\n}\n\n/** Scans a block during the collection phase, determining whether it is garbage or not. */\nfunction scan(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_GRAY) {\n if ((info & REFCOUNT_MASK) > 0) {\n scanBlack(s);\n } else {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN);\n }\n }\n}\n\n/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */\nfunction scanBlack(s: Block): void {\n s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK);\n}\n\n/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */\nfunction collectWhite(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE);\n freeBlock(ROOT, s);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n if (ref > __heap_base) increment(changetype(ref - BLOCK_OVERHEAD));\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n if (ref > __heap_base) decrement(changetype(ref - BLOCK_OVERHEAD));\n}\n',"rt/rtrace":'import { BLOCK } from "./common";\n\nexport declare function onalloc(s: BLOCK): void;\nexport declare function onincrement(s: BLOCK): void;\nexport declare function ondecrement(s: BLOCK): void;\nexport declare function onfree(s: BLOCK): void;\n',"rt/stub":'import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "rt/common";\n\n// @ts-ignore: decorator\n@lazy\nvar startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@lazy\nvar offset: usize = startOffset;\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __alloc(size: usize, id: u32): usize {\n if (size > BLOCK_MAXSIZE) unreachable();\n var ptr = offset + BLOCK_OVERHEAD;\n var newPtr = (ptr + max(size, 1) + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n if (newPtr > pagesBefore << 16) {\n let pagesNeeded = ((newPtr - ptr + 0xffff) & ~0xffff) >>> 16;\n let pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory\n }\n }\n offset = newPtr;\n var block = changetype(ptr - BLOCK_OVERHEAD);\n block.rtId = id;\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __realloc(ref: usize, size: usize): usize {\n var block = changetype(ref - BLOCK_OVERHEAD);\n var oldSize = block.rtSize;\n if (size > oldSize) {\n let newRef = __alloc(size, block.rtId);\n memory.copy(newRef, ref, oldSize);\n ref = newRef;\n } else {\n block.rtSize = size;\n }\n return ref;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __free(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nfunction __reset(): void { // special\n offset = startOffset;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ref: usize, cookie: u32): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n}\n',"rt/tlsf":"import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"rt/common\";\nimport { onfree, onalloc } from \"./rtrace\";\nimport { REFCOUNT_MASK } from \"./pure\";\n\n/////////////////////// The TLSF (Two-Level Segregate Fit) memory allocator ///////////////////////\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: usize = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: usize = (SL_BITS + AL_BITS);\n// @ts-ignore: decorator\n@inline const SB_SIZE: usize = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐\n// │ size │0│L│F│ ◄─┐ info\n// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │\n// │ │ │\n// │ ... additional runtime overhead ... │ │\n// │ │ │\n// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ = 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n let newSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = (blockInfo & TAGS_MASK) | newSize;\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n let newSize = (leftInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, left);\n left.mmInfo = blockInfo = (leftInfo & TAGS_MASK) | newSize;\n block = left;\n // 'back' is set below\n }\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) {\n assert(\n start <= end && // must be valid\n !(start & AL_MASK) && // must be aligned\n !(end & AL_MASK) // must be aligned\n );\n }\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n if (start - BLOCK_OVERHEAD == changetype(tail)) {\n start -= BLOCK_OVERHEAD;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - (BLOCK_OVERHEAD << 1);\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + size - BLOCK_OVERHEAD);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size >= BLOCK_MAXSIZE) throw new Error(\"allocation too large\");\n return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size\n}\n\n/** Initilizes the root structure. */\nexport function initializeRoot(): void {\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n addMemory(root, (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK, memory.size() << 16);\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = searchBlock(root, payloadSize);\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n block.gcInfo = 0; // RC=0\n // block.rtId = 0; // set by the caller (__alloc)\n block.rtSize = size;\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n if (DEBUG) {\n assert(\n !(blockInfo & FREE) && // must be used\n !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK\n );\n }\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= (blockInfo & ~TAGS_MASK)) {\n prepareBlock(root, block, payloadSize);\n block.rtSize = size;\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which\n // is immediately split though. does this trigger any assertions / issues?\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n block.rtSize = size;\n prepareBlock(root, block, payloadSize);\n return block;\n }\n }\n\n // otherwise move the block\n var newBlock = allocateBlock(root, size);\n newBlock.rtId = block.rtId;\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size);\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n assert(!(blockInfo & FREE)); // must be used (user might call through to this)\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize, id: u32): usize {\n var root = ROOT;\n if (!root) {\n initializeRoot();\n root = ROOT;\n }\n var block = allocateBlock(root, size);\n block.rtId = id;\n return changetype(block) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ref: usize, size: usize): usize {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n return changetype(reallocateBlock(ROOT, changetype(ref - BLOCK_OVERHEAD), size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ref: usize): void {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n freeBlock(ROOT, changetype(ref - BLOCK_OVERHEAD));\n}\n",set:'/// \n\nimport { HASH } from "./util/hash";\n\n// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a set entry. */\n@unmanaged class SetEntry {\n key: K;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K is <= 32-bits\n const align = (sizeof() > sizeof() ? sizeof() : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Set {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // SetEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() { this.clear(); }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: T, hashCode: u32): SetEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n @operator("[]")\n has(key: T): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n add(key: T): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (!entry) {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n entry = changetype>(changetype(this.entries) + this.entriesOffset++ * ENTRY_SIZE());\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n @operator("[]=")\n private __set(key: T, value: bool): void {\n if (value) this.add(key);\n else this.delete(key);\n }\n\n delete(key: T): bool {\n var entry = this.find(key, HASH(key)); // unmanaged!\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key)); // exact \'key\'\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr); // unmanaged!\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr); // unmanaged!\n newEntry.key = oldEntry.key;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n values(): T[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.key);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Set]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',"shared/feature":"// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","shared/target":"// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","shared/typeinfo":"// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n",string:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { compareImpl, strtol, strtod, isSpace } from "./util/string";\nimport { E_INVALIDLENGTH } from "./util/error";\nimport { ArrayBufferView } from "./arraybuffer";\nimport { idof } from "./builtins";\n\n@sealed export abstract class String {\n\n @lazy static readonly MAX_LENGTH: i32 = BLOCK_MAXSIZE >>> alignof();\n\n static fromCharCode(unit: i32, surr: i32 = -1): string {\n var hasSur = surr > 0;\n var out = __alloc(2 << i32(hasSur), idof());\n store(out, unit);\n if (hasSur) store(out, surr, 2);\n return changetype(out); // retains\n }\n\n static fromCodePoint(code: i32): string {\n assert(code <= 0x10FFFF);\n var hasSur = code > 0xFFFF;\n var out = __alloc(2 << i32(hasSur), idof());\n if (!hasSur) {\n store(out, code);\n } else {\n code -= 0x10000;\n let hi: u32 = (code >>> 10) + 0xD800;\n let lo: u32 = (code & 0x3FF) + 0xDC00;\n store(out, (hi << 16) | lo);\n }\n return changetype(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1;\n }\n\n @operator("[]") charAt(pos: i32): String {\n if (pos >= this.length) return changetype("");\n var out = __alloc(2, idof());\n store(out, load(changetype(this) + (pos << 1)));\n return changetype(out); // retains\n }\n\n charCodeAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (NaN)\n return load(changetype(this) + (pos << 1));\n }\n\n codePointAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (undefined)\n var first = load(changetype(this) + (pos << 1));\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) return first;\n var second = load(changetype(this) + ((pos + 1) << 1));\n if (second < 0xDC00 || second > 0xDFFF) return first;\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+") private static __concat(left: String, right: String): String {\n return select(left, changetype("null"), left !== null).concat(right);\n }\n\n concat(other: String): String {\n if (other === null) other = changetype("null");\n var thisSize: isize = this.length << 1;\n var otherSize: isize = other.length << 1;\n var outSize: usize = thisSize + otherSize;\n if (outSize == 0) return changetype("");\n var out = changetype(__alloc(outSize, idof())); // retains\n memory.copy(changetype(out), changetype(this), thisSize);\n memory.copy(changetype(out) + thisSize, changetype(other), otherSize);\n return out;\n }\n\n endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {\n if (search === null) return false;\n end = min(max(end, 0), this.length);\n var searchLength = search.length;\n var searchStart = end - searchLength;\n if (searchStart < 0) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n @operator("==") private static __eq(left: String | null, right: String | null): bool {\n if (left === right) return true;\n if (left === null || right === null) return false;\n var leftLength = left.length;\n if (leftLength != right.length) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(left, 0, right, 0, leftLength);\n }\n\n @operator.prefix("!")\n private static __not(str: String | null): bool {\n return str === null || !str.length;\n }\n\n @operator("!=")\n private static __ne(left: String | null, right: String | null): bool {\n return !this.__eq(left, right);\n }\n\n @operator(">") private static __gt(left: String | null, right: String | null): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!leftLength) return false;\n if (!rightLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0;\n }\n\n @operator(">=") private static __gte(left: String, right: String): bool {\n return !this.__lt(left, right);\n }\n\n @operator("<") private static __lt(left: String, right: String): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!rightLength) return false;\n if (!leftLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0;\n }\n\n @operator("<=") private static __lte(left: String, right: String): bool {\n return !this.__gt(left, right);\n }\n\n includes(search: String, start: i32 = 0): bool {\n return this.indexOf(search, start) != -1;\n }\n\n indexOf(search: String, start: i32 = 0): i32 {\n var searchLen = search.length;\n if (!searchLen) return 0;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len);\n for (len -= searchLen; searchStart <= len; ++searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n lastIndexOf(search: String, start: i32 = i32.MAX_VALUE): i32 {\n var searchLen = search.length;\n if (!searchLen) return this.length;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len - searchLen);\n for (; searchStart >= 0; --searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n startsWith(search: String, start: i32 = 0): bool {\n if (search === null) search = changetype("null");\n var len = this.length;\n var searchStart = min(max(start, 0), len);\n var searchLength = search.length;\n if (searchLength + searchStart > len) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) intStart = max(size + intStart, 0);\n var resultLength = min(max(end, 0), size - intStart);\n if (resultLength <= 0) return changetype("");\n var out = __alloc(resultLength << 1, idof());\n memory.copy(out, changetype(this) + intStart, resultLength);\n return changetype(out); // retains\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len: isize = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var fromPos = min(finalStart, finalEnd) << 1;\n var toPos = max(finalStart, finalEnd) << 1;\n len = toPos - fromPos;\n if (!len) return changetype("");\n if (!fromPos && toPos == this.length << 1) return this;\n var out = __alloc(len, idof());\n memory.copy(out, changetype(this) + fromPos, len);\n return changetype(out); // retains\n }\n\n trim(): String {\n var length = this.length;\n var size: usize = length << 1;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2; size -= 2;\n }\n if (!size) return changetype("");\n if (!offset && size == length << 1) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n @inline\n trimLeft(): String {\n return this.trimStart();\n }\n\n @inline\n trimRight(): String {\n return this.trimEnd();\n }\n\n trimStart(): String {\n var size = this.length << 1;\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2;\n }\n if (!offset) return this;\n size -= offset;\n if (!size) return changetype("");\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n trimEnd(): String {\n var originalSize = this.length << 1;\n var size = originalSize;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n if (!size) return changetype("");\n if (size == originalSize) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n return changetype(out); // retains\n }\n\n padStart(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var prependSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n if (prependSize > padSize) {\n let repeatCount = (prependSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = prependSize - restBase;\n memory.repeat(out, changetype(pad), padSize, repeatCount);\n memory.copy(out + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out, changetype(pad), prependSize);\n }\n memory.copy(out + prependSize, changetype(this), thisSize);\n return changetype(out); // retains\n }\n\n padEnd(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var appendSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n memory.copy(out, changetype(this), thisSize);\n if (appendSize > padSize) {\n let repeatCount = (appendSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = appendSize - restBase;\n memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount);\n memory.copy(out + thisSize + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out + thisSize, changetype(pad), appendSize);\n }\n return changetype(out); // retains\n }\n\n repeat(count: i32 = 0): String {\n var length = this.length;\n\n // Most browsers can\'t handle strings 1 << 28 chars or longer\n if (count < 0 || length * count > (1 << 28)) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n\n if (count == 0 || !length) return changetype("");\n if (count == 1) return this;\n var out = __alloc((length * count) << 1, idof());\n memory.repeat(out, changetype(this), length << 1, count);\n return changetype(out); // retains\n }\n\n replace(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var index: isize = this.indexOf(search);\n if (~index) {\n let rlen: usize = replacement.length;\n len -= slen;\n let olen = len + rlen;\n if (olen) {\n let out = __alloc(olen << 1, idof());\n memory.copy(out, changetype(this), index << 1);\n memory.copy(\n out + (index << 1),\n changetype(replacement),\n rlen << 1\n );\n memory.copy(\n out + ((index + rlen) << 1),\n changetype(this) + ((index + slen) << 1),\n (len - index) << 1\n );\n return changetype(out);\n }\n }\n return this;\n }\n\n replaceAll(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var rlen: usize = replacement.length;\n if (!slen) {\n if (!rlen) return this;\n // Special case: \'abc\'.replaceAll(\'\', \'-\') -> \'-a-b-c-\'\n let out = __alloc((len + (len + 1) * rlen) << 1, idof());\n memory.copy(out, changetype(replacement), rlen << 1);\n let offset = rlen;\n for (let i: usize = 0; i < len; ++i) {\n store(\n changetype(out) + (offset++ << 1),\n load(changetype(this) + (i << 1))\n );\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n }\n return changetype(out);\n }\n var prev: isize = 0, next: isize = 0;\n if (slen == rlen) {\n // Fast path when search and replacement have same length\n let size = len << 1;\n let out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n while (~(next = this.indexOf(search, prev))) {\n memory.copy(out + (next << 1), changetype(replacement), rlen << 1);\n prev = next + slen;\n }\n return changetype(out);\n }\n var out: usize = 0, offset: usize = 0, resLen = len;\n while (~(next = this.indexOf(search, prev))) {\n if (!out) out = __alloc(len << 1, idof());\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let chunk = next - prev;\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n chunk << 1\n );\n offset += chunk;\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n prev = next + slen;\n }\n if (offset) {\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let rest = len - prev;\n if (rest) {\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n rest << 1\n );\n }\n rest += offset;\n if (resLen > rest) out = __realloc(out, rest << 1);\n return changetype(out);\n }\n return this;\n }\n\n slice(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len = this.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end, len);\n len = end - start;\n if (len <= 0) return changetype("");\n var out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n return changetype(out); // retains\n }\n\n split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {\n if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n if (separator === null) return [this];\n var length: isize = this.length;\n var sepLen: isize = separator.length;\n if (limit < 0) limit = i32.MAX_VALUE;\n if (!sepLen) {\n if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n // split by chars\n length = min(length, limit);\n let result = __allocArray(length, alignof(), idof>());\n let resultStart = changetype(result).dataStart;\n for (let i: isize = 0; i < length; ++i) {\n let charStr = __alloc(2, idof());\n store(charStr, load(changetype(this) + (i << 1)));\n store(resultStart + (i << alignof()), charStr); // result[i] = charStr\n if (isManaged()) __retain(charStr);\n }\n return changetype>(result); // retains\n } else if (!length) {\n let result = __allocArray(1, alignof(), idof>());\n store(changetype(result).dataStart, changetype("")); // static ""\n return changetype>(result); // retains\n }\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n var end = 0, start = 0, i = 0;\n while (~(end = this.indexOf(separator, start))) {\n let len = end - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out));\n } else {\n result.push(changetype(""));\n }\n if (++i == limit) return changetype>(result); // retains\n start = end + sepLen;\n }\n if (!start) { // also means: loop above didn\'t do anything\n result.push(this);\n return changetype>(result); // retains\n }\n var len = length - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out)); // retains\n } else {\n result.push(changetype("")); // static ""\n }\n return changetype>(result); // retains\n // releases result\n }\n\n toString(): String {\n return this;\n }\n}\n\n// @ts-ignore: nolib\nexport type string = String;\n\nexport function parseInt(str: string, radix: i32 = 0): f64 {\n return strtol(str, radix);\n}\n\nexport function parseFloat(str: string): f64 {\n return strtod(str);\n}\n\n// Encoding helpers\nexport namespace String {\n\n export namespace UTF8 {\n\n export function byteLength(str: string, nullTerminated: bool = false): i32 {\n var strOff = changetype(str);\n var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var bufLen = nullTerminated ? 1 : 0;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n bufLen += 1; strOff += 2;\n } else if (c1 < 2048) {\n bufLen += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n if ((load(strOff, 2) & 0xFC00) == 0xDC00) {\n strOff += 4; bufLen += 4;\n continue;\n }\n }\n strOff += 2; bufLen += 3;\n }\n }\n return bufLen;\n }\n\n export function encode(str: string, nullTerminated: bool = false): ArrayBuffer {\n var strOff = changetype(str);\n var strEnd = changetype(str) + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(UTF8.byteLength(str, nullTerminated), idof());\n var bufOff = buf;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n store(bufOff, c1);\n bufOff += 1; strOff += 2;\n } else if (c1 < 2048) {\n store(bufOff, c1 >> 6 | 192);\n store(bufOff, c1 & 63 | 128, 1);\n bufOff += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n let c2 = load(strOff, 2);\n if ((c2 & 0xFC00) == 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n store(bufOff, c1 >> 18 | 240);\n store(bufOff, c1 >> 12 & 63 | 128, 1);\n store(bufOff, c1 >> 6 & 63 | 128, 2);\n store(bufOff, c1 & 63 | 128, 3);\n strOff += 4; bufOff += 4;\n continue;\n }\n }\n store(bufOff, c1 >> 12 | 224);\n store(bufOff, c1 >> 6 & 63 | 128, 1);\n store(bufOff, c1 & 63 | 128, 2);\n strOff += 2; bufOff += 3;\n }\n }\n if (nullTerminated) {\n assert(strOff <= strEnd);\n buf = __realloc(buf, bufOff - buf + 1);\n store(bufOff, 0);\n } else {\n assert(strOff == strEnd);\n }\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer, nullTerminated: bool = false): string {\n return decodeUnsafe(changetype(buf), buf.byteLength, nullTerminated);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated: bool = false): string {\n var bufOff = buf;\n var bufEnd = buf + len;\n assert(bufEnd >= bufOff); // guard wraparound\n var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte\n var strOff = str;\n while (bufOff < bufEnd) {\n let cp = load(bufOff++);\n if (cp < 128) {\n if (nullTerminated && !cp) break;\n store(strOff, cp);\n strOff += 2;\n } else if (cp > 191 && cp < 224) {\n if (bufEnd - bufOff < 1) break;\n store(strOff, (cp & 31) << 6 | load(bufOff++) & 63);\n strOff += 2;\n } else if (cp > 239 && cp < 365) {\n if (bufEnd - bufOff < 3) break;\n cp = (\n (cp & 7) << 18 |\n (load(bufOff) & 63) << 12 |\n (load(bufOff, 1) & 63) << 6 |\n load(bufOff, 2) & 63\n ) - 0x10000;\n bufOff += 3;\n store(strOff, 0xD800 + (cp >> 10));\n store(strOff, 0xDC00 + (cp & 1023), 2);\n strOff += 4;\n } else {\n if (bufEnd - bufOff < 2) break;\n store(strOff,\n (cp & 15) << 12 |\n (load(bufOff) & 63) << 6 |\n load(bufOff, 1) & 63\n );\n bufOff += 2; strOff += 2;\n }\n }\n return changetype(__realloc(str, strOff - str)); // retains\n }\n }\n\n export namespace UTF16 {\n\n export function byteLength(str: string): i32 {\n return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n }\n\n export function encode(str: string): ArrayBuffer {\n var size = changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(size, idof());\n memory.copy(buf, changetype(str), size);\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer): string {\n return decodeUnsafe(changetype(buf), buf.byteLength);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize): string {\n var str = __alloc(len &= ~1, idof());\n memory.copy(str, buf, len);\n return changetype(str); // retains\n }\n }\n}\n',symbol:'import { Map } from "./map";\n\n// @ts-ignore: decorator\n@lazy\nvar stringToId: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar idToString: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar nextId: usize = 12; // Symbol.unscopables + 1\n\n@unmanaged @sealed abstract class _Symbol {\n\n // TODO: all of the following default symbols are unused currently yet add to\n // binary size if #toString becomes compiled. Ultimately we\'ll most likely want\n // to remove the unsupported ones and only keep what\'s actually supported.\n\n // @ts-ignore: decorator\n @lazy\n static readonly hasInstance: symbol = changetype(1);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isConcatSpreadable: symbol = changetype(2);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isRegExp: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly iterator: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly match: symbol = changetype(4);\n\n // @ts-ignore: decorator\n @lazy\n static readonly replace: symbol = changetype(5);\n\n // @ts-ignore: decorator\n @lazy\n static readonly search: symbol = changetype(6);\n\n // @ts-ignore: decorator\n @lazy\n static readonly species: symbol = changetype(7);\n\n // @ts-ignore: decorator\n @lazy\n static readonly split: symbol = changetype(8);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toPrimitive: symbol = changetype(9);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toStringTag: symbol = changetype(10);\n\n // @ts-ignore: decorator\n @lazy\n static readonly unscopables: symbol = changetype(11);\n\n static for(key: string): symbol {\n if (!stringToId) { stringToId = new Map(); idToString = new Map(); }\n else if (stringToId.has(key)) return changetype(stringToId.get(key));\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n stringToId.set(key, id);\n idToString.set(id, key);\n return changetype(id);\n }\n\n static keyFor(sym: symbol): string | null {\n return idToString !== null && idToString.has(changetype(sym))\n ? idToString.get(changetype(sym))\n : null;\n }\n\n toString(): string {\n var id = changetype(this);\n var str = "";\n switch (id) {\n case 1: { str = "hasInstance"; break; }\n case 2: { str = "isConcatSpreadable"; break; }\n case 3: { str = "isRegExp"; break; }\n case 4: { str = "match"; break; }\n case 5: { str = "replace"; break; }\n case 6: { str = "search"; break; }\n case 7: { str = "species"; break; }\n case 8: { str = "split"; break; }\n case 9: { str = "toPrimitive"; break; }\n case 10: { str = "toStringTag"; break; }\n case 11: { str = "unscopables"; break; }\n default: {\n if (idToString !== null && idToString.has(id)) str = idToString.get(id);\n break;\n }\n }\n return "Symbol(" + str + ")";\n }\n}\n\nexport function Symbol(description: string | null = null): symbol {\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n return changetype(id);\n}\n\nexport type Symbol = _Symbol;\n\n// @ts-ignore: nolib\nexport type symbol = _Symbol;\n',table:'import { E_NOTIMPLEMENTED } from "./util/error";\n\nexport namespace table {\n\n export function copy(dst: u32, src: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function drop(elementIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n}\n',typedarray:'import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\nimport { idof } from "./builtins";\nimport { ArrayBufferView } from "./arraybuffer";\n\nexport class Int8Array extends ArrayBufferView {\n [key: number]: i8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): i8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: i8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8Array extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8ClampedArray extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return FILL(this, value, start, end);\n }\n\n sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray {\n return SORT(this, fn);\n }\n\n subarray(start: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray {\n return SUBARRAY(this, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int16Array extends ArrayBufferView {\n [key: number]: i16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint16Array extends ArrayBufferView {\n [key: number]: u16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int32Array extends ArrayBufferView {\n [key: number]: i32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint32Array extends ArrayBufferView {\n [key: number]: u32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int64Array extends ArrayBufferView {\n [key: number]: i64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint64Array extends ArrayBufferView {\n [key: number]: u64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float32Array extends ArrayBufferView {\n [key: number]: f32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float64Array extends ArrayBufferView {\n [key: number]: f64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILL(\n array: TArray,\n value: native,\n start: i32,\n end: i32\n): TArray {\n var dataStart = array.dataStart;\n var length = array.length;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (sizeof() == 1) {\n if (start < end) memory.fill(dataStart + start, value, (end - start));\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SORT(\n array: TArray,\n comparator: (a: T, b: T) => i32\n): TArray {\n var length = array.length;\n if (length <= 1) return array;\n var base = array.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b\n store(base, a); // arr[0] = a\n }\n return array;\n }\n SORT_IMPL(base, length, comparator);\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SUBARRAY(\n array: TArray,\n begin: i32,\n end: i32\n): TArray {\n var len = array.length;\n begin = begin < 0 ? max(len + begin, 0) : min(begin, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n end = max(end, begin);\n var out = changetype(__alloc(offsetof(), idof())); // retains\n out.data = array.data; // retains\n out.dataStart = array.dataStart + (begin << alignof());\n out.dataLength = (end - begin) << alignof();\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE_RIGHT(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = array.length - 1; i >= 0; i--) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction MAP(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => T,\n): TArray {\n var length = array.length;\n var dataStart = array.dataStart;\n var out = instantiate(length);\n var outDataStart = out.dataStart;\n for (let i = 0; i < length; i++) {\n store(\n outDataStart + (i << alignof()),\n fn(load(dataStart + (i << alignof())), i, array)\n );\n }\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FIND_INDEX(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): i32 {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return i;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INCLUDES(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): bool {\n return INDEX_OF(array, searchElement, fromIndex) >= 0;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0 || index >= length) return -1;\n if (index < 0) index = max(length + index, 0);\n var dataStart = array.dataStart;\n while (index < length) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n ++index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction LAST_INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0) return -1;\n if (index < 0) index = length + index; // no need to clamp\n else if (index >= length) index = length - 1;\n var dataStart = array.dataStart;\n while (index >= 0) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n --index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SOME(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return true;\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction EVERY(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) continue;\n return false;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FOREACH(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => void,\n): void {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n fn(load(dataStart + (i << alignof())), i, array);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REVERSE(array: TArray): TArray {\n var dataStart = array.dataStart;\n for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) {\n let frontPtr = dataStart + (front << alignof());\n let backPtr = dataStart + (back << alignof());\n let temp = load(frontPtr);\n store(frontPtr, load(backPtr));\n store(backPtr, temp);\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction WRAP(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): TArray {\n var bufferByteLength = buffer.byteLength;\n if (byteOffset >= bufferByteLength) {\n throw new RangeError(E_INDEXOUTOFRANGE);\n }\n var byteLength: i32;\n if (length < 0) {\n if (length == -1) {\n const mask = (1 << alignof() - 1);\n if (buffer.byteLength & mask) {\n throw new RangeError(E_INVALIDLENGTH);\n } else {\n byteLength = buffer.byteLength;\n }\n } else {\n throw new RangeError(E_INVALIDLENGTH);\n }\n } else {\n byteLength = length << alignof();\n }\n if (byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n var out = changetype(__alloc(offsetof(), idof()));\n out.data = buffer;\n out.dataLength = byteLength;\n out.dataStart = changetype(buffer) + byteOffset;\n return out;\n}\n',"util/error":'// Common error messages for use accross the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = "Index out of range";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = "Invalid length";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = "Array is empty";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = "Element type must be nullable if array is holey";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = "Not implemented";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = "Key does not exist";\n',"util/hash":"// @ts-ignore: decorator\n@inline\nexport function HASH(key: T): u32 {\n if (isString()) {\n return hashStr(changetype(key));\n } else if (isReference()) {\n if (sizeof() == 4) return hash32(changetype(key));\n if (sizeof() == 8) return hash64(changetype(key));\n } else if (isFloat()) {\n if (sizeof() == 4) return hash32(reinterpret(f32(key)));\n if (sizeof() == 8) return hash64(reinterpret(f64(key)));\n } else {\n if (sizeof() == 1) return hash8 (u32(key));\n if (sizeof() == 2) return hash16(u32(key));\n if (sizeof() == 4) return hash32(u32(key));\n if (sizeof() == 8) return hash64(u64(key));\n }\n return unreachable();\n}\n\n// FNV-1a 32-bit as a starting point, see: http://isthe.com/chongo/tech/comp/fnv/\n\n// @ts-ignore: decorator\n@inline\nconst FNV_OFFSET: u32 = 2166136261;\n\n// @ts-ignore: decorator\n@inline\nconst FNV_PRIME: u32 = 16777619;\n\nfunction hash8(key: u32): u32 {\n return (FNV_OFFSET ^ key) * FNV_PRIME;\n}\n\nfunction hash16(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 8 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash32(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash64(key: u64): u32 {\n var l = key;\n var h = (key >>> 32);\n var v = FNV_OFFSET;\n v = (v ^ ( l & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( l >> 24 )) * FNV_PRIME;\n v = (v ^ ( h & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( h >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hashStr(key: string): u32 {\n var v = FNV_OFFSET;\n if (key !== null) {\n for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) {\n v = (v ^ load(changetype(key) + i)) * FNV_PRIME;\n }\n }\n return v;\n}\n","util/memory":"export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n let w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 2: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 3: {\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c\n if (dest === src) return;\n if (ASC_SHRINK_LEVEL < 1) {\n if (src + n <= dest || dest + n <= src) {\n memcpy(dest, src, n);\n return;\n }\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, c);\n --n;\n }\n } else {\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n let k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n let c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n let c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c\n if (vl == vr) return 0;\n while (n != 0 && load(vl) == load(vr)) {\n n--; vl++; vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","util/number":'/// \n\nimport { idof } from "../builtins";\nimport { CharCode } from "./string";\nimport { ArrayBufferView } from "../arraybuffer";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline\nconst POWERS10: u32[] = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\n "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\n "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\n "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\n "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\n "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\n "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\n "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\n "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\n "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"\n*/\n// @ts-ignore: decorator\n@lazy @inline\nconst DIGITS: u32[] = [\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n];\n\n// @ts-ignore: decorator\n@lazy @inline\nconst EXP_POWERS: i16[] = [\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n];\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline\nconst FRC_POWERS: u64[] = [\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n];\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return select(1, 2, value < 10);\n } else {\n let m = select(4, 5, value < 10000);\n return select(3, m, value < 1000);\n }\n } else {\n if (value < 10000000) {\n return select(6, 7, value < 1000000);\n } else {\n let m = select(9, 10, value < 1000000000);\n return select(8, m, value < 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n let m = select(11, 12, value < 100000000000);\n return select(10, m, value < 10000000000);\n } else {\n let m = select(14, 15, value < 100000000000000);\n return select(13, m, value < 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return select(16, 17, value < 10000000000000000);\n } else {\n let m = select(19, 20, value < 10000000000000000000);\n return select(18, m, value < 1000000000000000000);\n }\n }\n}\n\nfunction utoa32_lut(buffer: usize, num: u32, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(lut + (d1 << alignof()));\n let digits2 = load(lut + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(lut + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(lut + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_lut(buffer: usize, num: u64, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(lut + (c1 << alignof()));\n let digits2 = load(lut + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(lut + (b1 << alignof()));\n digits2 = load(lut + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_lut(buffer, num, offset);\n}\n\nfunction utoa_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset -= 1;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_core(buffer: usize, num: u32, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa32_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa64_core(buffer: usize, num: u64, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa64_lut(buffer, num, offset);\n }\n}\n\nexport function utoa32(value: u32): String {\n if (!value) return "0";\n\n var decimals = decimalCount32(value);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n return changetype(out); // retains\n}\n\nexport function itoa32(value: i32): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var decimals = decimalCount32(value) + u32(sign);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n if (sign) store(out, CharCode.MINUS);\n return changetype(out); // retains\n}\n\nexport function utoa64(value: u64): String {\n if (!value) return "0";\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n return changetype(out); // retains\n}\n\nexport function itoa64(value: i64): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n if (sign) store(out, CharCode.MINUS);\n\n return changetype(out); // retains\n}\n\nexport function itoa(value: T): String {\n if (!isInteger()) ERROR("integer type expected");\n if (isSigned()) {\n if (sizeof() <= 4) {\n return itoa32(value);\n } else {\n return itoa64(value);\n }\n } else {\n if (sizeof() <= 4) {\n return utoa32(value);\n } else {\n return utoa64(value);\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = unchecked(FRC_POWERS[index]);\n _exp_pow = unchecked(EXP_POWERS[index]);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = ((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp != 0) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n var wp_w_exp = mp_exp;\n\n var p1 = (mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n var lut = changetype(POWERS10).dataStart;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(lut + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (1) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(lut + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n\n return len;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nexport function dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\nexport function dtoa(value: f64): String {\n if (value == 0) return "0.0";\n if (!isFinite(value)) {\n if (isNaN(value)) return "NaN";\n return select("-Infinity", "Infinity", value < 0);\n }\n var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof());\n var length = dtoa_core(buffer, value);\n if (length == MAX_DOUBLE_LENGTH) return changetype(buffer);\n var result = changetype(buffer).substring(0, length);\n __free(buffer);\n return result;\n}\n\nexport function itoa_stream(buffer: usize, offset: usize, value: T): u32 {\n buffer += (offset << 1);\n if (!value) {\n store(buffer, CharCode._0);\n return 1;\n }\n var decimals: u32 = 0;\n if (isSigned()) {\n let sign = i32(value < 0);\n if (sign) value = changetype(-value);\n if (sizeof() <= 4) {\n decimals = decimalCount32(value) + sign;\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32) + sign;\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value) + sign;\n utoa64_core(buffer, value, decimals);\n }\n }\n if (sign) store(buffer, CharCode.MINUS);\n } else {\n if (sizeof() <= 4) {\n decimals = decimalCount32(value);\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value);\n utoa64_core(buffer, value, decimals);\n }\n }\n }\n return decimals;\n}\n\nexport function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {\n buffer += (offset << 1);\n if (value == 0.0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = i32(value < 0);\n let len = 8 + sign;\n memory.copy(buffer, changetype(select("-Infinity", "Infinity", sign)), len << 1);\n return len;\n }\n }\n return dtoa_core(buffer, value);\n}\n',"util/sort":'import { compareImpl } from "./string";\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): (a: T, b: T) => i32 {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a: T, b: T): i32 => (i32(a) - i32(b));\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= (ia >> 31) >>> 1;\n ib ^= (ib >> 31) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= (ia >> 63) >>> 1;\n ib ^= (ib >> 63) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a: T, b: T): i32 => {\n if (a === b || a === null || b === null) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!alen && !blen) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n return compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen));\n };\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function SORT(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n if (isReference()) {\n // TODO replace this to faster stable sort (TimSort) when it implemented\n insertionSort(dataStart, length, comparator);\n } else {\n if (length < 256) {\n insertionSort(dataStart, length, comparator);\n } else {\n weakHeapSort(dataStart, length, comparator);\n }\n }\n}\n\nfunction insertionSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n for (let i = 0; i < length; i++) {\n let a: T = load(dataStart + (i << alignof())); // a = arr[i]\n let j = i - 1;\n while (j >= 0) {\n let b: T = load(dataStart + (j << alignof())); // b = arr[j]\n if (comparator(a, b) < 0) {\n store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b\n } else break;\n }\n store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a\n }\n}\n\nfunction weakHeapSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n const shift32 = alignof();\n\n var bitsetSize = (length + 31) >> 5 << shift32;\n var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below\n memory.fill(bitset, 0, bitsetSize);\n\n // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf\n\n for (let i = length - 1; i > 0; i--) {\n let j = i;\n while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1;\n\n let p = j >> 1;\n let a: T = load(dataStart + (p << alignof())); // a = arr[p]\n let b: T = load(dataStart + (i << alignof())); // b = arr[i]\n if (comparator(a, b) < 0) {\n store(\n bitset + (i >> 5 << shift32),\n load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31))\n );\n store(dataStart + (i << alignof()), a); // arr[i] = a\n store(dataStart + (p << alignof()), b); // arr[p] = b\n }\n }\n\n for (let i = length - 1; i >= 2; i--) {\n let a: T = load(dataStart); // a = arr[0]\n store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i]\n store(dataStart + (i << alignof()), a); // arr[i] = a\n\n let x = 1, y: i32;\n while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y;\n\n while (x > 0) {\n a = load(dataStart); // a = arr[0]\n let b: T = load(dataStart + (x << alignof())); // b = arr[x]\n\n if (comparator(a, b) < 0) {\n store(\n bitset + (x >> 5 << shift32),\n load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31))\n );\n store(dataStart + (x << alignof()), a); // arr[x] = a\n store(dataStart, b); // arr[0] = b\n }\n x >>= 1;\n }\n }\n\n __free(bitset);\n\n var t: T = load(dataStart, sizeof()); // t = arr[1]\n store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0]\n store(dataStart, t); // arr[0] = t\n}\n',"util/string":"export function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var result = 0;\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n while (len && !(result = load(ptr1) - load(ptr2))) {\n --len, ptr1 += 2, ptr2 += 2;\n }\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function isSpace(c: i32): bool {\n if (c <= 0xFF) {\n switch (c) {\n case 0x09: // \n case 0x0A: // \n case 0x0B: // \n case 0x0C: // \n case 0x0D: // \n case 0x20: // \n case 0xA0: return true; // \n }\n return false;\n }\n if (c >= 0x2000 && c <= 0x200A) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // determine sign\n // @ts-ignore: cast\n var sign: T = 1;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n // @ts-ignore: type\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2)) {\n case CharCode.B:\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.O:\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.X:\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n default: radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n while (len--) {\n code = load(ptr);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else break;\n if (code >= radix) break;\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\n// FIXME: naive implementation\nexport function strtod(str: string): f64 {\n var len: i32 = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n // determine sign\n var sign = 1.0;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1.0;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // calculate value\n var num = 0.0;\n while (len--) {\n code = load(ptr);\n if (code == CharCode.DOT) {\n ptr += 2;\n let fac = 0.1; // precision :(\n while (len--) {\n code = load(ptr);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) break;\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) break;\n num = num * 10 + code;\n ptr += 2;\n }\n return sign * num;\n}\n",vector:"/** Vector abstraction. */\n@sealed @unmanaged\nexport abstract class V128 {\n}\n"}):(()=>{const e=path.join(".","..","std","assembly"),n=__webpack_require__(!function(){var e=new Error("Cannot find module 'glob'");throw e.code="MODULE_NOT_FOUND",e}()).sync("**/!(*.d).ts",{cwd:e}),t={nearEntry:fs.readFileSync(nearLibEntry,"utf8")};return n.forEach(n=>t[n.replace(/\.ts$/,"")]=fs.readFileSync(path.join(e,n),"utf8")),t})(),exports.definitionFiles=exports.isBundle?Object({assembly:'/**\n * Environment definitions for compiling AssemblyScript to WebAssembly using asc.\n * @module std/assembly\n *//***/\n\n/// \n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = boolean | number;\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n/** A 128-bit vector. */\ndeclare type v128 = object;\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n/** Whether the bulk memory feature is enabled. */\ndeclare const ASC_FEATURE_BULK_MEMORY: bool;\n/** Whether the SIMD feature is enabled. */\ndeclare const ASC_FEATURE_SIMD: bool;\n/** Whether the threads feature is enabled. */\ndeclare const ASC_FEATURE_THREADS: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, immOffset?: usize, immAlign?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const __heap_base: usize;\n/** Determines the byte size of the specified underlying core type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Determines the alignment (log2) of the specified underlying core type. Compiles to a constant. */\ndeclare function alignof(): usize;\n/** Determines the end offset of the given class type. Compiles to a constant. */\ndeclare function offsetof(): usize;\n/** Determines the offset of the specified field within the given class type. Compiles to a constant. */\ndeclare function offsetof(fieldName: keyof T | string): usize;\n/** Determines the offset of the specified field within the given class type. Returns the class type\'s end offset if field name has been omitted. Compiles to a constant. */\ndeclare function offsetof(fieldName?: string): usize;\n/** Determines the name of a given type. */\ndeclare function nameof(value?: T): string;\n/** Determines the unique runtime id of a class type. Compiles to a constant. */\ndeclare function idof(): u32;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Emits a `call_indirect` instruction, calling the specified function in the function table by index with the specified arguments. Does result in a runtime error if the arguments do not match the called function. */\ndeclare function call_indirect(target: Function | u32, ...args: any[]): T;\n/** Emits a `call` instruction, calling the specified function in the function table directly with the specified arguments. Function index must be a compile-time constant. */\ndeclare function call_direct(target: Function | u32, ...args: any[]): T;\n/** Instantiates a new instance of `T` using the specified constructor arguments. */\ndeclare function instantiate(...args: any[]): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */\ndeclare function isInteger(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */\ndeclare function isFloat(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a boolean type. */\ndeclare function isBoolean(value?: any): value is number;\n/** Tests if the specified type *or* expression can represent negative numbers. Compiles to a constant. */\ndeclare function isSigned(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a reference type. Compiles to a constant. */\ndeclare function isReference(value?: any): value is object | string;\n/** Tests if the specified type *or* expression can be used as a string. Compiles to a constant. */\ndeclare function isString(value?: any): value is string | String;\n/** Tests if the specified type *or* expression can be used as an array. Compiles to a constant. */\ndeclare function isArray(value?: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. Compiles to a constant. */\ndeclare function isArrayLike(value?: any): value is ArrayLike;\n/** Tests if the specified type *or* expression is of a function type. Compiles to a constant. */\ndeclare function isFunction(value?: any): value is (...args: any) => any;\n/** Tests if the specified type *or* expression is of a nullable reference type. Compiles to a constant. */\ndeclare function isNullable(value?: any): bool;\n/** Tests if the specified expression resolves to a defined element. Compiles to a constant. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. Compiles to a constant. */\ndeclare function isConstant(expression: any): bool;\n/** Tests if the specified type *or* expression is of a managed type. Compiles to a constant. */\ndeclare function isManaged(value?: any): bool;\n/** Tests if the specified type is void. Compiles to a constant. */\ndeclare function isVoid(): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n/** Returns the number of parameters in the given function signature type. */\ndeclare function lengthof any>(func?: T): i32;\n\n/** Atomic operations. */\ndeclare namespace atomic {\n /** Atomically loads an integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): T;\n /** Atomically stores an integer value to memory. */\n export function store(offset: usize, value: T, immOffset?: usize): void;\n /** Atomically adds an integer value in memory. */\n export function add(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically subtracts an integer value in memory. */\n export function sub(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise AND operation on an integer value in memory. */\n export function and(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise OR operation on an integer value in memory. */\n export function or(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise XOR operation on an integer value in memory. */\n export function xor(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically exchanges an integer value in memory. */\n export function xchg(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically compares and exchanges an integer value in memory if the condition is met. */\n export function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n /** Performs a wait operation on an address in memory suspending this agent if the integer condition is met. */\n export function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n /** Performs a notify operation on an address in memory waking up suspended agents. */\n export function notify(ptr: usize, count: i32): i32;\n}\n\n/** Describes the result of an atomic wait operation. */\ndeclare enum AtomicWaitResult {\n /** Woken by another agent. */\n OK,\n /** Loaded value did not match the expected value. */\n NOT_EQUAL,\n /** Not woken before the timeout expired. */\n TIMED_OUT\n}\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i8;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Loads an 8-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 32-bit integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 32-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 32-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i32;\n /** Atomically stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize): void;\n /** Performs a wait operation on a 32-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n /** Atomic 32-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 32-bit integer value in memory. */\n export function add(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts a 32-bit integer value in memory. */\n export function sub(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 32-bit integer value in memory. */\n export function and(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 32-bit integer value in memory. */\n export function or(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 32-bit integer value in memory. */\n export function xor(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 32-bit integer value in memory. */\n export function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 32-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: any): i64;\ndeclare namespace i64 {\n /** Smallest representable value. */\n export const MIN_VALUE: i64;\n /** Largest representable value. */\n export const MAX_VALUE: i64;\n /** Loads an 8-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 64-bit unsigned integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 64-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 64-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i64;\n /** Atomically stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize): void;\n /** Performs a wait operation on a 64-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n /** Atomic 64-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 32-bit values. */\n export namespace rmw32 {\n /** Atomically adds a 32-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 32-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 32-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 32-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 32-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 32-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 32-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 64-bit integer value in memory. */\n export function add(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 64-bit integer value in memory. */\n export function sub(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 64-bit integer value in memory. */\n export function and(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 64-bit integer value in memory. */\n export function or(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 64-bit integer value in memory. */\n export function xor(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 64-bit integer value in memory. */\n export function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 64-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare var isize: typeof i32 | typeof i64;\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): i8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): i8;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): i32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: any): i64;\ndeclare namespace u64 {\n /** Smallest representable value. */\n export const MIN_VALUE: u64;\n /** Largest representable value. */\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare var usize: typeof u32 | typeof u64;\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Loads a 32-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n /** Stores a 32-bit float to memory. */\n export function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Loads a 64-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n /** Stores a 64-bit float to memory. */\n export function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function v128(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace v128 {\n /** Creates a 128-bit vector with identical lanes. */\n export function splat(x: T): v128;\n /** Extracts one lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): T;\n /** Replaces one lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: T): v128;\n /** Selects lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n /** Loads a 128-bit vector from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n /** Stores a 128-bit vector to memory. */\n export function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n /** Adds each lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128; // except i64\n /** Divides each lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each lane of two 128-bit vectors using saturation. */\n export function add_saturate(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors using saturation. */\n export function sub_saturate(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise right shift on each lane of a 128-bit vector by a scalar. */\n export function shr(a: v128, b: i32): v128;\n /** Performs the bitwise AND operation on each lane of two 128-bit vectors. */\n export function and(a: v128, b: v128): v128;\n /** Performs the bitwise OR operation on each lane of two 128-bit vectors. */\n export function or(a: v128, b: v128): v128;\n /** Performs the bitwise XOR operation on each lane of two 128-bit vectors. */\n export function xor(a: v128, b: v128): v128;\n /** Performs the bitwise NOT operation on each lane of a 128-bit vector. */\n export function not(a: v128): v128;\n /** Selects bits of either 128-bit vector according to the specified mask. */\n export function bitselect(v1: v128, v2: v128, mask: v128): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes the minimum of each lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each lane of a 128-bit vector from integer to floating point. */\n export function convert(a: v128): v128;\n /** Truncates each lane of a 128-bit vector from floating point to integer with saturation. */\n export function trunc(a: v128): v128;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace i8x16 {\n /** Creates a vector with sixteen identical 8-bit integer lanes. */\n export function splat(x: i8): v128;\n /** Extracts one 8-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i8;\n /** Extracts one 8-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u8;\n /** Replaces one 8-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i8): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 8-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 8-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */\ndeclare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\ndeclare namespace i16x8 {\n /** Creates a vector with eight identical 16-bit integer lanes. */\n export function splat(x: i16): v128;\n /** Extracts one 16-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i16;\n /** Extracts one 16-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u16;\n /** Replaces one 16-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i16): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 16-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 16-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */\ndeclare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\ndeclare namespace i32x4 {\n /** Creates a 128-bit vector with four identical 32-bit integer lanes. */\n export function splat(x: i32): v128;\n /** Extracts one 32-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i32;\n /** Replaces one 32-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i32): v128;\n /** Adds each 32-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 32-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f32x4_sat(a: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f32x4_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */\ndeclare function i64x2(a: i64, b: i64): v128;\ndeclare namespace i64x2 {\n /** Creates a 128-bit vector with two identical 64-bit integer lanes. */\n export function splat(x: i64): v128;\n /** Extracts one 64-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i64;\n /** Replaces one 64-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i64): v128;\n /** Adds each 64-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 64-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Truncates each 64-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f64x2_sat(a: v128): v128;\n /** Truncates each 64-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f64x2_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */\ndeclare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\ndeclare namespace f32x4 {\n /** Creates a 128-bit vector with four identical 32-bit float lanes. */\n export function splat(x: f32): v128;\n /** Extracts one 32-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f32;\n /** Replaces one 32-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f32): v128;\n /** Adds each 32-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 32-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 32-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 32-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 32-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 32-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 32-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 32-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i32x4(a: v128): v128;\n /** Converts each 32-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i32x4(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */\ndeclare function f64x2(a: f64, b: f64): v128;\ndeclare namespace f64x2 {\n /** Creates a 128-bit vector with two identical 64-bit float lanes. */\n export function splat(x: f64): v128;\n /** Extracts one 64-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f64;\n /** Replaces one 64-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f64): v128;\n /** Adds each 64-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 64-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 64-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 64-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 64-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 64-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 64-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 64-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i64x2(a: v128): v128;\n /** Converts each 64-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i64x2(a: v128): v128;\n}\ndeclare namespace v8x16 {\n /** Selects 8-bit lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128;\n}\n/** Macro type evaluating to the underlying native WebAssembly type. */\ndeclare type native = T;\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type ReturnType any> = T extends (...args: any) => infer R ? R : any;\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type returnof any> = ReturnType;\n\n/** Pseudo-class representing the backing class of integer types. */\ndeclare class _Integer {\n /** Smallest representable value. */\n static readonly MIN_VALUE: number;\n /** Largest representable value. */\n static readonly MAX_VALUE: number;\n /** Converts a string to an integer of this type. */\n static parseInt(value: string, radix?: number): number;\n /** Converts this integer to a string. */\n toString(): string;\n}\n\n/** Pseudo-class representing the backing class of floating-point types. */\ndeclare class _Float {\n /** Difference between 1 and the smallest representable value greater than 1. */\n static readonly EPSILON: f32 | f64;\n /** Smallest representable value. */\n static readonly MIN_VALUE: f32 | f64;\n /** Largest representable value. */\n static readonly MAX_VALUE: f32 | f64;\n /** Smallest safely representable integer value. */\n static readonly MIN_SAFE_INTEGER: f32 | f64;\n /** Largest safely representable integer value. */\n static readonly MAX_SAFE_INTEGER: f32 | f64;\n /** Value representing positive infinity. */\n static readonly POSITIVE_INFINITY: f32 | f64;\n /** Value representing negative infinity. */\n static readonly NEGATIVE_INFINITY: f32 | f64;\n /** Value representing \'not a number\'. */\n static readonly NaN: f32 | f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n static isNaN(value: f32 | f64): bool;\n /** Returns true if passed value is finite. */\n static isFinite(value: f32 | f64): bool;\n /** Returns true if the value passed is a safe integer. */\n static isSafeInteger(value: f32 | f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n static isInteger(value: f32 | f64): bool;\n /** Converts a string to an integer. */\n static parseInt(value: string, radix?: i32): f32 | f64;\n /** Converts a string to a floating-point number. */\n static parseFloat(value: string): f32 | f64;\n /** Converts this floating-point number to a string. */\n toString(this: f64): string;\n}\n\n/** Backing class of signed 8-bit integers. */\ndeclare const I8: typeof _Integer;\n/** Backing class of signed 16-bit integers. */\ndeclare const I16: typeof _Integer;\n/** Backing class of signed 32-bit integers. */\ndeclare const I32: typeof _Integer;\n/** Backing class of signed 64-bit integers. */\ndeclare const I64: typeof _Integer;\n/** Backing class of signed size integers. */\ndeclare const Isize: typeof _Integer;\n/** Backing class of unsigned 8-bit integers. */\ndeclare const U8: typeof _Integer;\n/** Backing class of unsigned 16-bit integers. */\ndeclare const U16: typeof _Integer;\n/** Backing class of unsigned 32-bit integers. */\ndeclare const U32: typeof _Integer;\n/** Backing class of unsigned 64-bit integers. */\ndeclare const U64: typeof _Integer;\n/** Backing class of unsigned size integers. */\ndeclare const Usize: typeof _Integer;\n/** Backing class of 32-bit floating-point values. */\ndeclare const F32: typeof _Float;\n/** Backing class of 64-bit floating-point values. */\ndeclare const F64: typeof _Float;\n\n// User-defined diagnostic macros\n\n/** Emits a user-defined diagnostic error when encountered. */\ndeclare function ERROR(message?: any): void;\n/** Emits a user-defined diagnostic warning when encountered. */\ndeclare function WARNING(message?: any): void;\n/** Emits a user-defined diagnostic info when encountered. */\ndeclare function INFO(message?: any): void;\n\n// Polyfills\n\n/** Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Whether the memory managed interface is implemented. */\n export const implemented: bool;\n /** Returns the current memory size in units of pages. One page is 64kb. */\n export function size(): i32;\n /** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\n export function grow(value: i32): i32;\n /** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\n export function fill(dst: usize, value: u8, count: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n export function copy(dst: usize, src: usize, n: usize): void;\n /** Repeats `src` of length `srcLength` `count` times at `dst`. */\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void;\n /** Copies elements from a passive element segment to a table. */\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void;\n /** Prevents further use of a passive element segment. */\n export function drop(segmentIndex: u32): void;\n /** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\n export function compare(vl: usize, vr: usize, n: usize): i32;\n}\n\n/** Garbage collector operations. */\ndeclare namespace gc {\n /** Whether the garbage collector interface is implemented. */\n export const implemented: bool;\n /** Performs a full garbage collection cycle. */\n export function collect(): void;\n /** Retains a reference, making sure that it doesn\'t become collected. */\n export function retain(ref: usize): void;\n /** Releases a reference, allowing it to become collected. */\n export function release(ref: usize): void;\n}\n\n/** Table operations. */\ndeclare namespace table {\n /** Copies elements from a passive element segment to a table. */\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void;\n /** Prevents further use of a passive element segment. */\n export function drop(elementIndex: u32): void;\n /** Copies elements from one region of a table to another region. */\n export function copy(dest: u32, src: u32, n: u32): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer\'s bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform\'s endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getInt64()` method gets a signed 64-bit integer (long long) at the specified byte offset from the start of the `DataView`. */\n getInt64(byteOffset: i32, littleEndian?: boolean): i64;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `getUint64()` method gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the `DataView`. */\n getUint64(byteOffset: i32, littleEndian?: boolean): u64;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setInt64()` method stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the `DataView`. */\n setInt64(byteOffset: i32, value: i64, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** The `setUint64()` method stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the `DataView`. */\n setUint64(byteOffset: i32, value: u64, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ninterface ArrayLike {\n length: i32;\n // [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\n/* @internal */\ndeclare abstract class TypedArray implements ArrayBufferView {\n [key: number]: T;\n /** Number of bytes per element. */\n static readonly BYTES_PER_ELEMENT: usize;\n /** Wrap an ArrayBuffer */\n static wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray;\n /** Constructs a new typed array. */\n constructor(length: i32);\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n /** The length (in elements). */\n readonly length: i32;\n /** The includes() method determines whether a typed array includes a certain element, returning true or false as appropriate. */\n includes(searchElement: T, fromIndex?: i32): bool;\n /** The indexOf() method returns the first index at which a given element can be found in the typed array, or -1 if it is not present. */\n indexOf(searchElement: T, fromIndex?: i32): i32;\n /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */\n subarray(begin?: i32, end?: i32): this;\n /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */\n reduce(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */\n reduceRight(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/\n some(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/\n map(callbackfn: (value: T, index: i32, self: this) => T): this;\n /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */\n sort(callback?: (a: T, b: T) => i32): this;\n /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */\n fill(value: T, start?: i32, end?: i32): this;\n /** The findIndex() method returns an index in the typed array, if an element in the typed array satisfies the provided testing function. Otherwise -1 is returned. See also the find() [not implemented] method, which returns the value of a found element in the typed array instead of its index. */\n findIndex(callbackfn: (value: T, index: i32, self: this) => bool): i32;\n /** The every() method tests whether all elements in the typed array pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.every(). */\n every(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The forEach() method executes a provided function once per array element. This method has the same algorithm as Array.prototype.forEach().*/\n forEach(callbackfn: (value: T, index: i32, self: this) => void): void;\n /** The reverse() method reverses a typed array in place. The first typed array element becomes the last and the last becomes the first. This method has the same algorithm as Array.prototype.reverse(). */\n reverse(): this;\n}\n\n/** An array of twos-complement 8-bit signed integers. */\ndeclare class Int8Array extends TypedArray {}\n/** An array of 8-bit unsigned integers. */\ndeclare class Uint8Array extends TypedArray {}\n/** A clamped array of 8-bit unsigned integers. */\ndeclare class Uint8ClampedArray extends TypedArray {}\n/** An array of twos-complement 16-bit signed integers. */\ndeclare class Int16Array extends TypedArray {}\n/** An array of 16-bit unsigned integers. */\ndeclare class Uint16Array extends TypedArray {}\n/** An array of twos-complement 32-bit signed integers. */\ndeclare class Int32Array extends TypedArray {}\n/** An array of 32-bit unsigned integers. */\ndeclare class Uint32Array extends TypedArray {}\n/** An array of twos-complement 64-bit signed integers. */\ndeclare class Int64Array extends TypedArray {}\n/** An array of 64-bit unsigned integers. */\ndeclare class Uint64Array extends TypedArray {}\n/** An array of 32-bit floating point numbers. */\ndeclare class Float32Array extends TypedArray {}\n/** An array of 64-bit floating point numbers. */\ndeclare class Float64Array extends TypedArray {}\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n\n /** Tests if a value is an array. */\n static isArray(value: any): value is Array;\n /** Creates a new array with at least the specified capacity and length zero. */\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\n/** Class representing a fixed sequence of values of type `T`. */\ndeclare class FixedArray {\n [key: number]: T;\n readonly length: i32;\n constructor(capacity?: i32);\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(start: i32, end?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n repeat(count?: i32): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\ndeclare namespace String {\n /** Encoding helpers for UTF-8. */\n export namespace UTF8 {\n /** Calculates the byte length of the specified string when encoded as UTF-8, optionally null terminated. */\n export function byteLength(str: string, nullTerminated?: bool): i32;\n /** Encodes the specified string to UTF-8 bytes, optionally null terminated. */\n export function encode(str: string, nullTerminated?: bool): ArrayBuffer;\n /** Decodes the specified buffer from UTF-8 bytes to a string, optionally null terminated. */\n export function decode(buf: ArrayBuffer, nullTerminated?: bool): string;\n /** Decodes raw UTF-8 bytes to a string, optionally null terminated. */\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated?: bool): string;\n }\n /** Encoding helpers for UTF-16. */\n export namespace UTF16 {\n /** Calculates the byte length of the specified string when encoded as UTF-16. */\n export function byteLength(str: string): i32;\n /** Encodes the specified string to UTF-16 bytes. */\n export function encode(str: string): ArrayBuffer;\n /** Decodes the specified buffer from UTF-16 bytes to a string. */\n export function decode(buf: ArrayBuffer): string;\n /** Decodes raw UTF-16 bytes to a string. */\n export function decodeUnsafe(buf: usize, len: usize): string;\n }\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ninterface Boolean {\n toString(): string;\n}\ninterface Function {}\ninterface IArguments {}\ninterface Number {\n toString(radix?: number): string;\n}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Map {\n readonly size: i32;\n has(key: K): bool;\n set(key: K, value: V): void;\n get(key: K): V;\n delete(key: K): bool;\n clear(): void;\n keys(): K[]; // preliminary\n values(): V[]; // preliminary\n toString(): string;\n}\n\ndeclare class Set {\n readonly size: i32;\n has(value: K): bool;\n add(value: K): void;\n delete(value: K): bool;\n clear(): void;\n values(): K[]; // preliminary\n toString(): string;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\n\ndeclare const Symbol: SymbolConstructor;\n\ninterface IMath {\n /** The base of natural logarithms, e, approximately 2.718. */\n readonly E: T;\n /** The natural logarithm of 2, approximately 0.693. */\n readonly LN2: T;\n /** The natural logarithm of 10, approximately 2.302. */\n readonly LN10: T;\n /** The base 2 logarithm of e, approximately 1.442. */\n readonly LOG2E: T;\n /** The base 10 logarithm of e, approximately 0.434. */\n readonly LOG10E: T;\n /** The ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n readonly PI: T;\n /** The square root of 1/2, approximately 0.707. */\n readonly SQRT1_2: T;\n /** The square root of 2, approximately 1.414. */\n readonly SQRT2: T;\n /** Returns the absolute value of `x`. */\n abs(x: T): T;\n /** Returns the arccosine (in radians) of `x`. */\n acos(x: T): T;\n /** Returns the hyperbolic arc-cosine of `x`. */\n acosh(x: T): T;\n /** Returns the arcsine (in radians) of `x`. */\n asin(x: T): T;\n /** Returns the hyperbolic arcsine of `x`. */\n asinh(x: T): T;\n /** Returns the arctangent (in radians) of `x`. */\n atan(x: T): T;\n /** Returns the arctangent of the quotient of its arguments. */\n atan2(y: T, x: T): T;\n /** Returns the hyperbolic arctangent of `x`. */\n atanh(x: T): T;\n /** Returns the cube root of `x`. */\n cbrt(x: T): T;\n /** Returns the smallest integer greater than or equal to `x`. */\n ceil(x: T): T;\n /** Returns the number of leading zero bits in the 32-bit binary representation of `x`. */\n clz32(x: T): T;\n /** Returns the cosine (in radians) of `x`. */\n cos(x: T): T;\n /** Returns the hyperbolic cosine of `x`. */\n cosh(x: T): T;\n /** Returns e to the power of `x`. */\n exp(x: T): T;\n /** Returns e to the power of `x`, minus 1. */\n expm1(x: T): T;\n /** Returns the largest integer less than or equal to `x`. */\n floor(x: T): T;\n /** Returns the nearest 32-bit single precision float representation of `x`. */\n fround(x: T): T;\n /** Returns the square root of the sum of squares of its arguments. */\n hypot(value1: T, value2: T): T; // TODO: rest\n /** Returns the result of the C-like 32-bit multiplication of `a` and `b`. */\n imul(a: T, b: T): T;\n /** Returns the natural logarithm (base e) of `x`. */\n log(x: T): T;\n /** Returns the base 10 logarithm of `x`. */\n log10(x: T): T;\n /** Returns the natural logarithm (base e) of 1 + `x`. */\n log1p(x: T): T;\n /** Returns the base 2 logarithm of `x`. */\n log2(x: T): T;\n /** Returns the largest-valued number of its arguments. */\n max(value1: T, value2: T): T; // TODO: rest\n /** Returns the lowest-valued number of its arguments. */\n min(value1: T, value2: T): T; // TODO: rest\n /** Returns `base` to the power of `exponent`. */\n pow(base: T, exponent: T): T;\n /** Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0. */\n random(): T;\n /** Returns the value of `x` rounded to the nearest integer. */\n round(x: T): T;\n /** Returns the sign of `x`, indicating whether the number is positive, negative or zero. */\n sign(x: T): T;\n /** Returns whether the sign bit of `x` is set. */\n signbit(x: T): bool;\n /** Returns the sine of `x`. */\n sin(x: T): T;\n /** Returns the hyperbolic sine of `x`. */\n sinh(x: T): T;\n /** Returns the square root of `x`. */\n sqrt(x: T): T;\n /** Returns the tangent of `x`. */\n tan(x: T): T;\n /** Returns the hyperbolic tangent of `x`. */\n tanh(x: T): T;\n /** Returns the integer part of `x` by removing any fractional digits. */\n trunc(x: T): T;\n}\n\ninterface INativeMath extends IMath {\n /** Contains sin value produced after Math/Mathf.sincos */\n sincos_sin: T;\n /** Contains cos value produced after Math/Mathf.sincos */\n sincos_cos: T;\n /** Seeds the random number generator. */\n seedRandom(value: i64): void;\n /** Returns the floating-point remainder of `x / y` (rounded towards zero). */\n mod(x: T, y: T): T;\n /** Returns the floating-point remainder of `x / y` (rounded to nearest). */\n rem(x: T, y: T): T;\n /** Returns sin and cos simultaneously for same angle. Results stored to `sincos_s32/64` and `sincos_c32/64` globals */\n sincos(x: T): void;\n}\n\n/** Double precision math imported from JavaScript. */\ndeclare const JSMath: IMath;\n/** Double precision math implemented natively. */\ndeclare const NativeMath: INativeMath;\n/** Single precision math implemented natively. */\ndeclare const NativeMathf: INativeMath;\n/** Alias of {@link NativeMath} or {@link JSMath} respectively. Defaults to `NativeMath`. */\ndeclare const Math: IMath;\n/** Alias of {@link NativeMathf} or {@link JSMath} respectively. Defaults to `NativeMathf`. */\ndeclare const Mathf: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): i64;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): i64;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: i64);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): i64;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: i64): i64;\n}\n\n/** Environmental tracing function for debugging purposes. */\ndeclare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: f64, a4?: f64): void;\n\n// Decorators\n\ninterface TypedPropertyDescriptor {\n configurable?: boolean;\n enumerable?: boolean;\n writable?: boolean;\n value?: T;\n get?(): T;\n set?(value: T): void;\n}\n\n/** Annotates a method as a binary operator overload for the specified `token`. */\ndeclare function operator(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n) => TypedPropertyDescriptor | void;\n\ndeclare namespace operator {\n /** Annotates a method as a binary operator overload for the specified `token`. */\n export function binary(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n ): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary prefix operator overload for the specified `token`. */\n export function prefix(token: "!" | "~" | "+" | "-" | "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary postfix operator overload for the specified `token`. */\n export function postfix(token: "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n}\n\n/** Annotates an element as a program global. */\ndeclare function global(...args: any[]): any;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n\n/** Annotates a class as being sealed / non-derivable. */\ndeclare function sealed(constructor: Function): void;\n\n/** Annotates a method, function or constant global as always inlined. */\ndeclare function inline(...args: any[]): any;\n\n/** Annotates a method, function or constant global as unsafe. */\ndeclare function unsafe(...args: any[]): any;\n\n/** Annotates an explicit external name of a function or global. */\ndeclare function external(...args: any[]): any;\n\n/** Annotates a global for lazy compilation. */\ndeclare function lazy(...args: any[]): any;\n\n/** Annotates a function as the explicit start function. */\ndeclare function start(...args: any[]): any;\n',portable:"/**\n * Environment definitions for compiling AssemblyScript to JavaScript using tsc.\n *\n * Note that semantic differences require additional explicit conversions for full compatibility.\n * For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n * result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n *\n * Note that i64's are not portable (JS numbers are IEEE754 doubles with a maximum safe integer\n * value of 2^53-1) and instead require a compatibility layer to work in JS as well, as for example\n * {@link glue/js/i64} respectively {@link glue/wasm/i64}.\n *\n * @module std/portable\n *//***/\n\n/// \n\n// Types\n\ndeclare type bool = boolean;\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified value is a valid integer. Can't distinguish an integer from an integral float. */\ndeclare function isInteger(value: any): value is number;\n/** Tests if the specified value is a valid float. Can't distinguish a float from an integer. */\ndeclare function isFloat(value: any): value is number;\n/** Tests if the specified value is of a nullable reference type. */\ndeclare function isNullable(value: any): bool;\n/** Tests if the specified value is of a reference type. */\ndeclare function isReference(value: any): value is object | string;\n/** Tests if the specified value is of a function type */\ndeclare function isFunction(value: any): value is Function;\n/** Tests if the specified value can be used as a string. */\ndeclare function isString(value: any): value is string | String;\n/** Tests if the specified value can be used as an array. */\ndeclare function isArray(value: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. */\ndeclare function isArrayLike(value: any): value is ArrayLike;\n/** Tests if the specified expression resolves to a defined element. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. */\ndeclare function isConstant(expression: any): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T | null, message?: string): T;\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i16;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: any): isize;\ndeclare namespace isize {\n /** Smallest representable value. */\n export const MIN_VALUE: isize;\n /** Largest representable value. */\n export const MAX_VALUE: isize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): isize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): u8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): u16;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): u32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: any): isize;\ndeclare namespace usize {\n /** Smallest representable value. */\n export const MIN_VALUE: usize;\n /** Largest representable value. */\n export const MAX_VALUE: usize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): usize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f32): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f32): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f64): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f64;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f64;\n}\n\n// Polyfills\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Allocates a chunk of memory of the specified size and returns a pointer to it. */\n function allocate(size: usize): usize;\n /** Disposes a chunk of memory by its pointer. */\n function free(ptr: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n function copy(dst: usize, src: usize, n: usize): void;\n /** Fills size bytes from from the specified destination by same value in memory. */\n function fill(dst: usize, value: u8, size: usize): void;\n /** Resets the allocator to its initial state, if supported. */\n function reset(): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer's bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform's endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ndeclare class Array {\n\n static isArray(value: any): value is Array;\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from?: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint8ClampedArray extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ninterface ArrayLike {\n length: i32;\n [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: i32;\n\n private constructor();\n\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n endsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(from: i32, to?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n repeat(count?: i32): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ndeclare class Set {\n constructor(entries?: T[]);\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n toString(): string;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n delete(key: K): bool;\n toString(): string;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\ndeclare const Symbol: SymbolConstructor;\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ninterface IMath {\n readonly E: f64;\n readonly LN2: f64;\n readonly LN10: f64;\n readonly LOG2E: f64;\n readonly LOG10E: f64;\n readonly PI: f64;\n readonly SQRT1_2: f64;\n readonly SQRT2: f64;\n\n sincos_sin: f64;\n sincos_cos: f64;\n\n abs(x: f64): f64;\n acos(x: f64): f64;\n acosh(x: f64): f64;\n asin(x: f64): f64;\n asinh(x: f64): f64;\n atan(x: f64): f64;\n atan2(y: f64, x: f64): f64;\n atanh(x: f64): f64;\n cbrt(x: f64): f64;\n ceil(x: f64): f64;\n clz32(x: f64): i32;\n cos(x: f64): f64;\n cosh(x: f64): f64;\n exp(x: f64): f64;\n expm1(x: f64): f64;\n floor(x: f64): f64;\n fround(x: f64): f32;\n hypot(value1: f64, value2: f64): f64; // TODO: see std/math\n imul(a: f64, b: f64): i32;\n log(x: f64): f64;\n log10(x: f64): f64;\n log1p(x: f64): f64;\n log2(x: f64): f64;\n max(value1: f64, value2: f64): f64; // TODO: see std/math\n min(value1: f64, value2: f64): f64; // TODO: see std/math\n pow(base: f64, exponent: f64): f64;\n random(): f64;\n round(x: f64): f64;\n sign(x: f64): f64;\n signbit(x: f64): bool;\n sin(x: f64): f64;\n sincos(x: f64): f64;\n sinh(x: f64): f64;\n sqrt(x: f64): f64;\n tan(x: f64): f64;\n tanh(x: f64): f64;\n trunc(x: f64): f64;\n}\n\ndeclare const Math: IMath;\ndeclare const Mathf: IMath;\ndeclare const JSMath: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): number;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): number;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: number);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): number;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: number): number;\n}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n"}):(()=>{const e=path.join(".","..","std");return{assembly:fs.readFileSync(path.join(e,"assembly","index.d.ts"),"utf8"),portable:fs.readFileSync(path.join(e,"portable","index.d.ts"),"utf8")}})(),exports.compileString=(e,n)=>{"string"==typeof e&&(e={"input.ts":e});const t=Object.create({stdout:createMemoryStream(),stderr:createMemoryStream()});var r=["--binaryFile","binary","--textFile","text"];return Object.keys(n||{}).forEach(e=>{var t=n[e];Array.isArray(t)?t.forEach(n=>r.push("--"+e,String(n))):r.push("--"+e,String(t))}),exports.main(r.concat(Object.keys(e)),{stdout:t.stdout,stderr:t.stderr,readFile:n=>e.hasOwnProperty(n)?e[n]:null,writeFile:(e,n)=>t[e]=n,listFiles:()=>[]}),t},exports.main=function(e,n,t){"function"==typeof n?(t=n,n={}):n||(n={});const r=n.stdout||process.stdout,i=n.stderr||process.stderr,a=n.readFile||O,o=n.writeFile||N,s=n.listFiles||R,u=n.stats||createStats();if(!r)throw Error("'options.stdout' must be specified");if(!i)throw Error("'options.stderr' must be specified");const l=optionsUtil.parse(e,exports.options),f=l.options;if(e=l.arguments,f.noColors?colorsUtil.stdout.supported=colorsUtil.stderr.supported=!1:(colorsUtil.stdout=colorsUtil.from(r),colorsUtil.stderr=colorsUtil.from(i)),l.unknown.length&&l.unknown.forEach(e=>{i.write(colorsUtil.stderr.yellow("WARN: ")+"Unknown option '"+e+"'"+EOL)}),l.trailing.length&&i.write(colorsUtil.stderr.yellow("WARN: ")+"Unsupported trailing arguments: "+l.trailing.join(" ")+EOL),t||(t=function(e){var n=0;return e&&(i.write(colorsUtil.stderr.red("ERROR: ")+e.stack.replace(/^ERROR: /i,"")+EOL),n=1),n}),f.version)return r.write("Version "+exports.version+(isDev?"-dev":"")+EOL),t(null);if(f.help||!e.length){var c=f.help?r:i,d=f.help?colorsUtil.stdout:colorsUtil.stderr;return c.write([d.white("SYNTAX")," "+d.cyan("asc")+" [entryFile ...] [options]","",d.white("EXAMPLES")," "+d.cyan("asc")+" hello.ts"," "+d.cyan("asc")+" hello.ts -b hello.wasm -t hello.wat"," "+d.cyan("asc")+" hello1.ts hello2.ts -b -O > hello.wasm","",d.white("OPTIONS")].concat(optionsUtil.help(exports.options,24,EOL)).join(EOL)+EOL),t(null)}if(!fs.readFileSync){if(a===O)throw Error("'options.readFile' must be specified");if(o===N)throw Error("'options.writeFile' must be specified");if(s===R)throw Error("'options.listFiles' must be specified")}const p=f.baseDir?path.resolve(f.baseDir):".",h=f.notNear?[]:[nearBindings];f.transform&&f.transform.forEach(e=>h.push(__webpack_require__(13)(path.isAbsolute(e=e.trim())?e:path.join(process.cwd(),e))));var g=null,x=new Map,v=new Map;Object.keys(exports.libraryFiles).forEach(e=>{e.indexOf("/")>=0||(u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(exports.libraryFiles[e],exports.libraryPrefix+e+".ts",!1,g)}))});const m=[];if(f.lib){let e=f.lib;"string"==typeof e&&(e=e.split(",")),Array.prototype.push.apply(m,e.map(e=>e.trim()));for(let e=0,n=m.length;e{g=assemblyscript.parseFile(o,exports.libraryPrefix+i,!1,g)})}}}function _(e,n){return e.split(SEP).map((e,t,r)=>{let i=r.slice(0,t+1).join(SEP)||SEP,a=path.relative(p,i);return path.join(a,n)}).filter(e=>s(e,p)).reverse()}function y(e){let n=f.path.map(n=>_(e,n));return _(e,"node_modules").concat(...n)}function b(){for(var e,n,r;null!=(e=g.nextFile());){if(dependee=v.get(assemblyscript.getDependee(g,e))||p,n=null,r=null,e.startsWith(exports.libraryPrefix)){const t=e.substring(exports.libraryPrefix.length),i=e.substring(exports.libraryPrefix.length)+"/index";if(exports.libraryFiles.hasOwnProperty(t))n=exports.libraryFiles[t],e=exports.libraryPrefix+t+".ts";else if(exports.libraryFiles.hasOwnProperty(i))n=exports.libraryFiles[i],e=exports.libraryPrefix+i+".ts";else for(let o=0,s=m.length;o{if(x.has(o))return x.get(o);let e=path.join(s,o,"package.json"),n=a(e,p);if(n){let r;try{r=JSON.parse(n)}catch(n){return t(Error("Parsing "+e+" failed"))}let i=r.ascMain;if(i&&"string"==typeof i){let e=i.replace(/(.*)\/index\.ts/,"$1");return x.set(o,e),e}}return"assembly"})(),l=e=>{e.startsWith(exports.libraryPrefix)&&(e=e.substring(exports.libraryPrefix.length));let n=e.substring(0,e.indexOf("/")),t=e.substring(e.indexOf("/")+1);return path.join(s,n,u,t)};f.traceResolution&&i.write(" in '"+l(e)+"'");const c=e,d=e+"/index";if(null!==(n=a(l(c)+".ts",p))?e=c+".ts":null!==(n=a(l(d)+".ts",p))&&(e=d+".ts"),null!==n){f.traceResolution&&i.write(EOL+" -> '"+l(e)+"'"+EOL),r=path.join(s,o);break}f.traceResolution&&i.write(EOL)}}if(null==n)return t(Error("Import file '"+e+".ts' not found."));v.set(e.replace(/\.ts$/,""),r),u.parseCount++,u.parseTime+=measure(()=>{assemblyscript.parseFile(n,e,!1,g)})}if(checkDiagnostics(g,i))return t(Error("Parse error"))}f.path=f.path||[];{let e=String(f.runtime),n="rt/index-"+e,r=exports.libraryFiles[n];if(null==r){if(null==(r=a((n=e)+".ts",p)))return t(Error("Runtime '"+e+"' not found."))}else n="~lib/"+n;u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(r,n,!0,g)})}for(let n=0,r=e.length;n{g=assemblyscript.parseFile(o,i,!0,g)})}{let e=b();if(e)return e}!function(e,...n){h.forEach(t=>{"function"==typeof t[e]&&t[e](...n)})}("afterParse",g,o,p);{let e=b();if(e)return e}const E=assemblyscript.finishParsing(g);if(f.listFiles)return i.write(E.sources.map(e=>e.normalizedPath).sort().join(EOL)+EOL),t(null);var T=0,A=0;f.optimize&&(T=exports.defaultOptimizeLevel,A=exports.defaultShrinkLevel),"number"==typeof f.optimizeLevel&&(T=f.optimizeLevel),"number"==typeof f.shrinkLevel&&(A=f.shrinkLevel),T=Math.min(Math.max(T,0),3),A=Math.min(Math.max(A,0),2);const S=assemblyscript.createOptions();if(assemblyscript.setTarget(S,0),assemblyscript.setNoAssert(S,f.noAssert),assemblyscript.setImportMemory(S,f.importMemory),assemblyscript.setSharedMemory(S,f.sharedMemory),assemblyscript.setImportTable(S,f.importTable),assemblyscript.setExplicitStart(S,f.explicitStart),assemblyscript.setMemoryBase(S,f.memoryBase>>>0),assemblyscript.setSourceMap(S,null!=f.sourceMap),assemblyscript.setOptimizeLevelHints(S,T,A),assemblyscript.setNoUnsafe(S,f.noUnsafe),assemblyscript.setGlobalAlias(S,"Math","NativeMath"),assemblyscript.setGlobalAlias(S,"Mathf","NativeMathf"),assemblyscript.setGlobalAlias(S,"abort","~lib/builtins/abort"),assemblyscript.setGlobalAlias(S,"trace","~lib/builtins/trace"),f.use){let e=f.use;for(let n=0,r=e.length;n{F=assemblyscript.compileProgram(E,S)})}catch(e){return t(e)}if(checkDiagnostics(g,i))return F&&F.dispose(),t(Error("Compile error"));if(f.validate&&(u.validateCount++,u.validateTime+=measure(()=>{if(!F.validate())return F.dispose(),t(Error("Validate error"))})),"clamp"===f.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-clamp"])});else if("js"===f.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-js"])});else if("allow"!==f.trapMode)return F.dispose(),t(Error("Unsupported trap mode"));(T>=3||A>=2)&&(T=4),F.setOptimizeLevel(T),F.setShrinkLevel(A),F.setDebugInfo(f.debug);var z=[];if(f.runPasses&&("string"==typeof f.runPasses&&(f.runPasses=f.runPasses.split(",")),f.runPasses.length&&f.runPasses.forEach(e=>{z.indexOf(e)<0&&z.push(e)})),(T>0||A>0)&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.optimize()})),z.length&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(z.map(e=>e.trim()))})),!f.noEmit){let e=!1,n=!1;if(null!=f.outFile&&(/\.was?t$/.test(f.outFile)&&null==f.textFile?f.textFile=f.outFile:/\.js$/.test(f.outFile)&&null==f.asmjsFile?f.asmjsFile=f.outFile:null==f.binaryFile&&(f.binaryFile=f.outFile)),null!=f.binaryFile){let r,s=null!=f.sourceMap?f.sourceMap.length?f.sourceMap:path.basename(f.binaryFile)+".map":null;if(u.emitCount++,u.emitTime+=measure(()=>{r=F.toBinary(s)}),f.binaryFile.length?o(f.binaryFile,r.output,p):(C(r.output),e=!0),n=!0,null!=r.sourceMap)if(f.binaryFile.length){let e=JSON.parse(r.sourceMap);e.sourceRoot=exports.sourceMapRoot,e.sources.forEach((n,r)=>{let i=null;if(n.startsWith(exports.libraryPrefix)){let e=n.substring(exports.libraryPrefix.length).replace(/\.ts$/,"");if(exports.libraryFiles.hasOwnProperty(e))i=exports.libraryFiles[e];else for(let e=0,t=m.length;e{t=F.toAsmjs()}),o(f.asmjsFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=F.toAsmjs()}),C(t),e=!0),n=!0}if(null!=f.idlFile){let t;f.idlFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),o(f.idlFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),C(t),e=!0),n=!0}if(null!=f.tsdFile){let t;f.tsdFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),o(f.tsdFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),C(t),e=!0),n=!0}if(null!=f.textFile||!n){let n;f.textFile&&f.textFile.length?(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),o(f.textFile,n,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),C(n))}}return F.dispose(),f.measure&&printStats(u,i),f.printrtti&&printRTTI(E,i),t(null);function O(e,n){let t=path.resolve(n,e);try{let e;return u.readCount++,u.readTime+=measure(()=>{e=fs.readFileSync(t,{encoding:"utf8"})}),e}catch(e){return null}}function N(e,n,t){try{return u.writeCount++,u.writeTime+=measure(()=>{mkdirp(path.join(t,path.dirname(e))),"string"==typeof n?fs.writeFileSync(path.join(t,e),n,{encoding:"utf8"}):fs.writeFileSync(path.join(t,e),n)}),!0}catch(e){return!1}}function R(e,n){var t;try{return u.readTime+=measure(()=>{t=fs.readdirSync(path.join(n,e)).filter(e=>/^(?!.*\.d\.ts$).*\.ts$/.test(e))}),t}catch(e){return null}}function C(e){C.used||(u.writeCount++,C.used=!0),u.writeTime+=measure(()=>{"string"==typeof e?r.write(e,{encoding:"utf8"}):r.write(e)})}},exports.checkDiagnostics=checkDiagnostics,exports.createStats=createStats,process.hrtime||(process.hrtime=__webpack_require__(14)),exports.measure=measure,exports.formatTime=formatTime,exports.printStats=printStats,exports.printRTTI=printRTTI;var allocBuffer=void 0!==global&&global.Buffer?global.Buffer.allocUnsafe||function(e){return new global.Buffer(e)}:function(e){return new Uint8Array(e)};function createMemoryStream(e){var n=[];return n.write=function(n){if(e&&e(n),"string"==typeof n){let e=allocBuffer(utf8.length(n));utf8.write(n,e,0),n=e}this.push(n)},n.reset=function(){n.length=0},n.toBuffer=function(){for(var e=0,n=0,t=this.length;n191&&r<224?a[o++]=(31&r)<<6|63&e[n++]:r>239&&r<365?(r=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[n++])<<6|63&e[n++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},r.write=function(e,n,t){for(var r,i,a=t,o=0;o>6|192,n[t++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,n[t++]=r>>18|240,n[t++]=r>>12&63|128,n[t++]=r>>6&63|128,n[t++]=63&r|128):(n[t++]=r>>12|224,n[t++]=r>>6&63|128,n[t++]=63&r|128);return t-a}},function(e,n,t){(function(e){var t=void 0!==e&&e||{},r=t.env&&"CI"in t.env;function i(e,t){var i=t||{};return i.supported=e&&!!e.isTTY||r,i.gray=e=>i.supported?n.GRAY+e+n.RESET:e,i.red=e=>i.supported?n.RED+e+n.RESET:e,i.green=e=>i.supported?n.GREEN+e+n.RESET:e,i.yellow=e=>i.supported?n.YELLOW+e+n.RESET:e,i.blue=e=>i.supported?n.BLUE+e+n.RESET:e,i.magenta=e=>i.supported?n.MAGENTA+e+n.RESET:e,i.cyan=e=>i.supported?n.CYAN+e+n.RESET:e,i.white=e=>i.supported?n.WHITE+e+n.RESET:e,i}n.stdout=i(t.stdout,n),n.stderr=i(t.stderr),n.from=i,n.GRAY="",n.RED="",n.GREEN="",n.YELLOW="",n.BLUE="",n.MAGENTA="",n.CYAN="",n.WHITE="",n.RESET=""}).call(this,t(0))},function(e,n){n.parse=function(e,n){var t={},r=[],arguments=[],i=[],a={};Object.keys(n).forEach(e=>{if(!e.startsWith(" ")){var r=n[e];null!=r.alias&&("string"==typeof r.alias?a[r.alias]=e:Array.isArray(r.alias)&&r.alias.forEach(n=>a[n]=e)),null!=r.default&&(t[e]=r.default)}});for(var o=0,s=(e=e.slice()).length;ot[e]=s.value[e])}else r.push(i)}for(;o{var o=e[n];if(null!=o.description){for(var s="";s.length{for(let n=0;n=0?u.substring(l+1):u,i.statements=new Array,i.range=new o.Range(i,0,t.length),i.text=t,i}return i(n,e),Object.defineProperty(n.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),n}(l);n.Source=$;var ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.decorators=null,n.flags=a.CommonFlags.NONE,n}return i(n,e),n.prototype.is=function(e){return(this.flags&e)==e},n.prototype.isAny=function(e){return 0!=(this.flags&e)},n.prototype.set=function(e){this.flags|=e},n}(J);n.DeclarationStatement=ee;var ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INDEXSIGNATUREDECLARATION,n}return i(n,e),n}(ee);n.IndexSignatureDeclaration=ne;var te=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i(n,e),n}(ee);n.VariableLikeDeclarationStatement=te;var re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BLOCK,n}return i(n,e),n}(J);n.BlockStatement=re;var ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BREAK,n}return i(n,e),n}(J);n.BreakStatement=ie;var ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CLASSDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n}(ee);n.ClassDeclaration=ae;var oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CONTINUE,n}return i(n,e),n}(J);n.ContinueStatement=oe;var se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.DO,n}return i(n,e),n}(J);n.DoStatement=se;var ue=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EMPTY,n}return i(n,e),n}(J);n.EmptyStatement=ue;var le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMDECLARATION,n}return i(n,e),n}(ee);n.EnumDeclaration=le;var fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMVALUEDECLARATION,n}return i(n,e),n}(te);n.EnumValueDeclaration=fe;var ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTIMPORT,n}return i(n,e),n}(l);n.ExportImportStatement=ce;var de=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTMEMBER,n}return i(n,e),n}(l);n.ExportMember=de;var pe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORT,n}return i(n,e),n}(J);n.ExportStatement=pe;var he=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTDEFAULT,n}return i(n,e),n}(J);n.ExportDefaultStatement=he;var ge=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPRESSION,n}return i(n,e),n}(J);n.ExpressionStatement=ge;var xe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FIELDDECLARATION,n.parameterIndex=-1,n}return i(n,e),n}(te);n.FieldDeclaration=xe;var ve=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FOR,n}return i(n,e),n}(J);n.ForStatement=ve,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(n.ArrowKind||(n.ArrowKind={}));var me=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FUNCTIONDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},n}(ee);n.FunctionDeclaration=me;var _e=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IF,n}return i(n,e),n}(J);n.IfStatement=_e;var ye=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORTDECLARATION,n}return i(n,e),n}(ee);n.ImportDeclaration=ye;var be=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORT,n}return i(n,e),n}(J);n.ImportStatement=be;var Ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INTERFACEDECLARATION,n}return i(n,e),n}(ae);n.InterfaceDeclaration=Ee;var Te=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.METHODDECLARATION,n}return i(n,e),n}(me);n.MethodDeclaration=Te;var Ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.NAMESPACEDECLARATION,n}return i(n,e),n}(ee);n.NamespaceDeclaration=Ae;var Se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.RETURN,n}return i(n,e),n}(J);n.ReturnStatement=Se;var Fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCHCASE,n}return i(n,e),n}(l);n.SwitchCase=Fe;var Ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCH,n}return i(n,e),n}(J);n.SwitchStatement=Ie;var ze=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.THROW,n}return i(n,e),n}(J);n.ThrowStatement=ze;var Oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TRY,n}return i(n,e),n}(J);n.TryStatement=Oe;var Ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TYPEDECLARATION,n}return i(n,e),n}(ee);n.TypeDeclaration=Ne;var Re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLEDECLARATION,n}return i(n,e),n}(te);n.VariableDeclaration=Re;var Ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLE,n}return i(n,e),n}(J);n.VariableStatement=Ce;var Le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VOID,n}return i(n,e),n}(J);n.VoidStatement=Le;var we=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.WHILE,n}return i(n,e),n}(J);function ke(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}n.WhileStatement=we,n.findDecorator=function(e,n){if(n)for(var t=0,r=n.length;t";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var d=function(){function e(e,n,t){this.debugInfoRef=0,this.source=e,this.start=n,this.end=t}return e.join=function(n,t){if(n.source!=t.source)throw new Error("source mismatch");return new e(n.source,n.startt.end?n.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,n=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&n++;return n},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,n=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++n;return n},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();n.Range=d;var p=function(e){function n(n,t){void 0===t&&(t=null);var r=e.call(this,t)||this;r.end=0,r.pos=0,r.token=-1,r.tokenPos=0,r.nextToken=-1,r.nextTokenPos=0,r.nextTokenOnNewLine=!1,r.onComment=null,r.source=n,r.pos=0,r.end=n.text.length,r.diagnostics=t||new Array;var i=r.end,a=n.text;if(r.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=r){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,r));break}var a=e.charCodeAt(this.pos);if(a==n){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=n){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},n.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var n=this.source.text,t=n.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!r&&47==i)break;if(l.isLineBreak(i)){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(n,this.pos)},n.prototype.readRegexpFlags=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=0;this.pos57)&&95!=r)break;t++}return!0},n.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)t=i64_add(i64_shl(t,r),i64_new(u-48));else if(u>=65&&u<=70)t=i64_add(i64_shl(t,r),i64_new(10+u-65));else if(u>=97&&u<=102)t=i64_add(i64_shl(t,r),i64_new(10+u-97));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readDecimalInteger=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=i64_new(0),i=i64_new(10),a=n;this.pos=48&&u<=57)r=i64_add(i64_mul(r,i),i64_new(u-48));else{if(95!=u)break;a==o&&this.error(a==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),a=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Digit_expected,this.range(n)):a==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),r},n.prototype.readOctalInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(3),i=n,a=this.end;this.pos=48&&u<=55)t=i64_add(i64_shl(t,r),i64_new(u-48));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}++this.pos}return this.pos==n?this.error(s.DiagnosticCode.Octal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readBinaryInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(1),i=n,a=this.end;this.pos=48&&i<=57)n=(n<<4)+i-48;else if(i>=65&&i<=70)n=(n<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";n=(n<<4)+i+-87}if(0==--e)break}return e?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(n)},n.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,n=this.readHexInteger(),t=i64_low(n),r=!1;assert(!i64_high(n)),t>1114111&&(this.error(s.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),r=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),r=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(s.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),r=!0),r?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},n.prototype.finish=function(){},n}(s.DiagnosticEmitter);n.Tokenizer=p;var h=function(){};n.State=h;var g=null},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(n.DiagnosticCode||(n.DiagnosticCode={})),n.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)});Object.defineProperty(n,"__esModule",{value:!0});var a=t(0),o=t(1),s=t(17),u=t(22),l=t(24);function f(e){return e.signature.parameters.length}function c(e){return e.text.includes("@nearfile")||p(e)}function d(e){return s.ASTBuilder.build(e)}function p(e){return(e.kind==a.NodeKind.SOURCE?e:e.range.source).sourceKind==a.SourceKind.USER_ENTRY}function h(e){return!!(e.kind==a.NodeKind.NAMEDTYPE&&d(e).startsWith("Array")&&e.typeArguments&&e.typeArguments.length>0)}function g(e){return e.kind==a.NodeKind.CLASSDECLARATION}function x(e){return e.kind==a.NodeKind.FIELDDECLARATION}var v=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},n.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],n.sb=[],n.exportedClasses=new Map,n.wrappedFuncs=new Set,n}return i(n,e),n.build=function(e,t){return(new n).build(t)},n.nearFiles=function(e){return e.program.sources.filter(c)},n.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(d(e.name))||(this.generateHandler(e),this.exportedClasses.set(d(e.name),e))},n.prototype.visitFunctionDeclaration=function(n){!p(n)||this.wrappedFuncs.has(d(n.name))||!n.is(o.CommonFlags.EXPORT)||0==f(n)&&"void"===d(n.signature.returnType)?e.prototype.visitFunctionDeclaration.call(this,n):(f(n)>0&&this.generateArgsParser(n),this.generateWrapperFunction(n),n.flags=n.flags^o.CommonFlags.EXPORT,this.wrappedFuncs.add(d(n.name)))},n.prototype.generateArgsParser=function(e){var n=this,t=e.signature,r=d(e.name),i=t.parameters.map(function(n){var t=d(n.name),r=n.type;return{name:t,type:r,isGeneric:null!=e.typeParameters&&e.typeParameters.some(function(e){return d(e)==d(r)})}});this.sb.push("\nexport class __near_ArgsParser_"+r+" extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_ArgsParser_"+r+">;\n handledRoot: boolean = false;"),i.length>0?(i.forEach(function(e){n.sb.push(" __near_param_"+e.name+": "+n.typeName(e.type)+";")}),this.generateHandlerMethods("this.__near_param_",i)):this.generateHandlerMethods("this.__near_param_",[]),this.sb.push("}")},n.prototype.generateWrapperFunction=function(e){var n=e.signature,t=n.parameters,r=n.returnType,i=d(r).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),a=d(r).includes("null"),o=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+o+"(): void {"),t.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n let handler = new __near_ArgsParser_"+o+"();\n handler.buffer = json;\n handler.decoder = new JSONDecoder<__near_ArgsParser_"+o+">(handler);\n handler.decoder.deserialize(json);"),"void"!==d(r)?this.sb.push(" let result: "+d(r)+" = "+o+"("):this.sb.push(" "+o+"("),t.length>0&&(this.sb[this.sb.length-1]+=t.map(function(e){return"handler.__near_param_"+e.name.symbol}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==d(r)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+i+">() || isNullable<"+i+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+i+">(encoder, result"+(a?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+o+" as "+o+" }\n")},n.prototype.generateHandlerMethods=function(e,n){var t=this,r=function(e){return n.filter(function(n){return-1!=e.indexOf(t.typeName(n.type))||n.isGeneric})};this.generateBasicSetterHandlers(e,"Integer","i64",r(["i32","u32"])),this.generateBasicSetterHandlers(e,"String","string",r(["string","i64","u64","Uint8Array","u128"])),this.generateBasicSetterHandlers(e,"Boolean","bool",r(["bool"]));var i=n.filter(function(e){return n=e.type,!["i32","u32","bool","i64","u64","boolean"].includes(d(n))||e.isGeneric;var n});this.sb.push(" setNull(name: string): void {"),i.forEach(function(n){t.sb.push(' if (name == "'+n.name+'") {');var r=""+e+n.name+" = <"+t.typeName(n.type)+">null";n.isGeneric?t.sb.push(" if (isNullable<"+t.typeName(n.type)+">()){\n "+r+"\n return;\n }"):t.sb.push(" "+r+"\n return;"),t.sb.push(" }")}),this.sb.push("\n super.setNull(name);\n }"),this.sb.push("\n pushObject(name: string): bool {"),this.sb.push("if (!this.handledRoot) {\n assert(name == null || name.length == 0);\n this.handledRoot = true;\n return true;\n } else {\n assert(name != null || name.length != 0);\n }"),this.generatePushHandler(e,i.filter(function(e){return!h(e.type)})),this.sb.push("\n return super.pushObject(name);\n }"),this.sb.push("\n pushArray(name: string): bool {"),this.generatePushHandler(e,i.filter(function(e){return h(e.type)})),this.sb.push("\n return super.pushArray(name);\n }")},n.prototype.generateBasicSetterHandlers=function(e,n,t,r){var i=this;r.length>0&&(this.sb.push(" set"+n+"(name: string, value: "+t+"): void {"),r.forEach(function(t){var r=i.typeName(t.type);if("String"==n&&"string"!=r)if("Uint8Array"==r)i.sb.push(' if (name == "'+t.name+'") {\n '+e+t.name+" = base64.decode(value);\n return;\n }");else if("u128"===r)i.sb.push(' if (name == "'+t.name+'") {\n '+e+t.name+" = u128.fromString(value);\n return;\n }");else{var a="u64"===i.typeName(t.type)?"U64":"I64";i.sb.push(' if (name == "'+t.name+'") {\n '+e+t.name+" = "+(t.isGeneric?"<"+d(t.type)+">":"")+a+".parseInt(value);\n return;\n }")}else i.sb.push(' if (name == "'+t.name+'") {\n '+e+t.name+" = <"+r+">value;\n return;\n }");t.isGeneric&&i.sb.push(" assert(is"+n+"<"+r+'>(), "'+t.name+" is not a "+n+'")')}),this.sb.push(" super.set"+n+"(name, value);\n }"))},n.prototype.generatePushHandler=function(e,n){var t=this;n.forEach(function(n){if(!(t.typeName(n.type)in t.typeMapping)){var r=n.isGeneric?" && isReference<"+t.typeName(n.type)+">()":"";t.sb.push(' if (name == "'+n.name+'"'+r+") {\n "+e+n.name+" = decode<"+d(n.type)+">(this.buffer, this.decoder.state);\n return false;\n }")}})},n.prototype.generateHandler=function(e){if(!h(e)){var n=this.typeName(e);this.sb.push("export class __near_JSONHandler_"+n+" extends ThrowingJSONHandler {\n buffer: Uint8Array;\n decoder: JSONDecoder<__near_JSONHandler_"+n+">;\n handledRoot: boolean = false;\n value: "+this.typeName(e)+";\n\n constructor(value_: "+this.typeName(e)+") {\n super();\n this.value = value_;\n }\n "),this.generateHandlerMethods("this.value.",this.getFields(e)),this.sb.push("}\n")}},n.prototype.typeName=function(e){if(!g(e))return s.ASTBuilder.build(e);var n=d((e=e).name);return e.isGeneric&&(n+="<"+e.typeParameters.map(d).join(", ")+">"),n},n.prototype.getFields=function(e){var n=g(e)?e:this.exportedClasses.get(d(e));return null==n?[]:n.members.filter(function(e){return e.kind==a.NodeKind.FIELDDECLARATION}).map(function(e){return{name:d(e.name),type:e.type,isGeneric:m(n,e)}})},n.prototype.build=function(e){var n=this;this.sb=[l.preamble],this.visit(e);var t=e.statements.map(function(e){var t=s.ASTBuilder.build(e);if(g(e)){var r=e;if(t=t.slice(0,t.lastIndexOf("}")),r.members.filter(x).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var i=n.typeName(r);t+="\n static decode(json: Uint8Array, state: DecoderState | null = null): "+i+" {\n let value = instantiate<"+i+">(); // Allocate without constructor\n value.decode(json, state);\n return value;\n }\n\n decode(json: Uint8Array, state: DecoderState | null): "+i+" {\n let handler: __near_JSONHandler_"+i+" = new __near_JSONHandler_"+i+"(this);\n handler.buffer = json;\n let decoder = new JSONDecoder<__near_JSONHandler_"+i+'>(handler);\n handler.decoder = decoder;\n decoder.deserialize(json, state);\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+r.members.filter(x).map(function(e){var n=d(e.type),t=d(e.name);return"encode<"+n+">(encoder, this."+t+', "'+t+'");'}).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return t});return this.sb.concat(t).join("\n")},n}(u.BaseVisitor);function m(e,n){return null!=e.typeParameters&&e.typeParameters.some(function(e){return d(e.name)==d(n.type)})}n.afterParse=function(e,n,t){v.nearFiles(e).forEach(function(r){var i=r.text.substr(0,r.text.indexOf("\n")).includes("out");e.donelog.delete(r.internalPath),e.seenlog.delete(r.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==r});var a=v.build(e,r);i&&n("out/"+r.normalizedPath,a,t),e.parseFile(a,(p(r)?"":"./")+r.normalizedPath,p(r))})}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(n.Feature||(n.Feature={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(n.Target||(n.Target={}))},function(e,n,t){"use strict";var r=this&&this.__decorate||function(e,n,t,r){var i,a=arguments.length,o=a<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,n,t,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(n,t,o):i(n,t))||o);return a>3&&o&&Object.defineProperty(n,t,o),o};Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(){}return r([()=>{}],e)}();n.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(n.TypeinfoFlags||(n.TypeinfoFlags={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i=t(5),a=t(2),o=t(5);function s(e){switch(e){case r.INFO:return"INFO";case r.WARNING:return"WARNING";case r.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case r.INFO:return n.COLOR_BLUE;case r.WARNING:return n.COLOR_YELLOW;case r.ERROR:return n.COLOR_RED;default:return assert(!1),""}}n.DiagnosticCode=o.DiagnosticCode,n.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(r=n.DiagnosticCategory||(n.DiagnosticCategory={})),n.diagnosticCategoryToString=s,n.COLOR_BLUE="",n.COLOR_YELLOW="",n.COLOR_RED="",n.COLOR_RESET="",n.diagnosticCategoryToColor=u;var l=function(){function e(e,n,t){this.range=null,this.relatedRange=null,this.code=e,this.category=n,this.message=t}return e.create=function(n,t,r,a,o){void 0===r&&(r=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(n);return null!=r&&(s=s.replace("{0}",r)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(n,t,s)},e.createInfo=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.INFO,t,i)},e.createWarning=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.WARNING,t,i)},e.createError=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function f(e,t){void 0===t&&(t=!1);for(var r=e.source.text,i=r.length,o=e.start,s=e.end;o>0&&!a.isLineBreak(r.charCodeAt(o-1));)o--;for(;s=0&&n<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(n))),i64_zero)},n.bitsetSet=function(e,n,t){return assert(n>=0&&n<64),t?i64_or(e,i64_shl(i64_one,i64_new(n))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(n))))}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(n.CharCode||(n.CharCode={})),n.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},n.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},n.isDecimalDigit=function(e){return e>=48&&e<=57},n.isOctalDigit=function(e){return e>=48&&e<=55},n.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,r);var n},n.isKeywordCharacter=function(e){return e>=97&&e<=122},n.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,i);var n};var r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,n){if(e>1),(r=n[t-=1&t])<=e&&e<=n[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0}),n.makeArray=function(e){if(void 0===e&&(e=null),e){for(var n=new Array(e.length),t=0,r=e.length;t0||r=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=n?e.substring(0,a):e.substring(0,a)+e.substring(t+3),r-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){r=(e=e.substring(t+4)).length;continue}}}t++}return r>0?e:"."}function o(e){var n=e.length;if(n<=1){if(0==n)return".";if(e.charCodeAt(0)==i)return e}for(;--n>0;)if(e.charCodeAt(n)==i)return e.substring(0,n);return"."}n.normalizePath=a,n.resolvePath=function(e,n){return e.startsWith("std/")?e:a(o(n)+r.PATH_DELIMITER+e)},n.dirname=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.indent=function(e,n){for(;n>=4;)e.push(" "),n-=4;n>=2&&(e.push(" "),n-=2),n&&e.push(" ")}},function(e,n,t){"use strict";function r(e,n){return e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24}function i(e,n,t){n[t]=e,n[t+1]=e>>>8,n[t+2]=e>>>16,n[t+3]=e>>>24}function a(e,n){var t=r(e,n),i=r(e,n+4);return i64_new(t,i)}Object.defineProperty(n,"__esModule",{value:!0}),n.readI8=function(e,n){return e[n]},n.writeI8=function(e,n,t){n[t]=e},n.readI16=function(e,n){return e[n]|e[n+1]<<8},n.writeI16=function(e,n,t){n[t]=e,n[t+1]=e>>>8},n.readI32=r,n.writeI32=i,n.readI64=a,n.writeI64=function(e,n,t){i(i64_low(e),n,t),i(i64_high(e),n,t+4)},n.readF32=function(e,n){return i32_as_f32(r(e,n))},n.writeF32=function(e,n,t){i(f32_as_i32(e),n,t)},n.readF64=function(e,n){return i64_as_f64(a(e,n))},n.writeF64=function(e,n,t){var r=f64_as_i64(e);i(i64_low(r),n,t),i(i64_high(r),n,t+4)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(0);t(18),t(19),t(20);var i=t(1),a=t(2),o=t(4),s=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(n){var t=new e;return t.visitNode(n),t.finish()},e.prototype.visitNode=function(e){switch(e.kind){case r.NodeKind.SOURCE:this.visitSource(e);break;case r.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case r.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case r.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case r.NodeKind.FALSE:case r.NodeKind.NULL:case r.NodeKind.SUPER:case r.NodeKind.THIS:case r.NodeKind.TRUE:case r.NodeKind.CONSTRUCTOR:case r.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case r.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case r.NodeKind.BINARY:this.visitBinaryExpression(e);break;case r.NodeKind.CALL:this.visitCallExpression(e);break;case r.NodeKind.CLASS:this.visitClassExpression(e);break;case r.NodeKind.COMMA:this.visitCommaExpression(e);break;case r.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case r.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case r.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case r.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case r.NodeKind.NEW:this.visitNewExpression(e);break;case r.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case r.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case r.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case r.NodeKind.BLOCK:this.visitBlockStatement(e);break;case r.NodeKind.BREAK:this.visitBreakStatement(e);break;case r.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case r.NodeKind.DO:this.visitDoStatement(e);break;case r.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case r.NodeKind.EXPORT:this.visitExportStatement(e);break;case r.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case r.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case r.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case r.NodeKind.FOR:this.visitForStatement(e);break;case r.NodeKind.IF:this.visitIfStatement(e);break;case r.NodeKind.IMPORT:this.visitImportStatement(e);break;case r.NodeKind.RETURN:this.visitReturnStatement(e);break;case r.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case r.NodeKind.THROW:this.visitThrowStatement(e);break;case r.NodeKind.TRY:this.visitTryStatement(e);break;case r.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case r.NodeKind.WHILE:this.visitWhileStatement(e);break;case r.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case r.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case r.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case r.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case r.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case r.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case r.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case r.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case r.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case r.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case r.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case r.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case r.NodeKind.DECORATOR:this.serializeDecorator(e);break;case r.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case r.NodeKind.PARAMETER:this.serializeParameter(e);break;case r.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var n=e.statements,t=0,r=n.length;t")}e.isNullable&&r.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var n=e.isNullable,t=this.sb;t.push(n?"((":"(");var r=e.explicitThisType;r&&(t.push("this: "),this.visitTypeNode(r));var i=e.parameters,a=i.length;if(a){r&&t.push(", "),this.serializeParameter(i[0]);for(var o=1;o "),this.visitTypeNode(s)):t.push(") => void"),n&&t.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var n=e.extendsType;n&&(this.sb.push(" extends "),this.visitTypeNode(n));var t=e.defaultType;t&&(this.sb.push("="),this.visitTypeNode(t))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var n=this.sb;n.push("[");var t=e.elementExpressions,r=t.length;if(r){t[0]&&this.visitNode(t[0]);for(var i=1;i"),this.visitNode(e.expression);break;case r.AssertionKind.AS:this.visitNode(e.expression),n.push(" as "),this.visitTypeNode(assert(e.toType));break;case r.AssertionKind.NONNULL:this.visitNode(e.expression),n.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var n=this.sb;this.visitNode(e.left),n.push(" "),n.push(o.operatorTokenToString(e.operator)),n.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var n=this.sb;this.visitNode(e.expression);var t=e.typeArguments;if(t){var r=t.length;if(r){n.push("<"),this.visitTypeNode(t[0]);for(var i=1;i(")}}else n.push("(");var a=e.arguments,o=a.length;if(o)for(this.visitNode(a[0]),i=1;ir&&t.push(e.substring(r,r=a+1)),t.push("\\0"),r=++a;break;case 8:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\b");break;case 9:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\t");break;case 10:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\n");break;case 11:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\v");break;case 12:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\f");break;case 13:a>r&&t.push(e.substring(r,a)),t.push("\\r"),r=++a;break;case 34:n?++a:(a>r&&t.push(e.substring(r,a)),t.push('\\"'),r=++a);break;case 39:n?(a>r&&t.push(e.substring(r,a)),t.push("\\'"),r=++a):++a;break;case 92:a>r&&t.push(e.substring(r,a)),t.push("\\\\"),r=++a;break;default:++a}a>r&&t.push(e.substring(r,a)),t.push(i)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var n=this.sb;n.push("/"),n.push(e.pattern),n.push("/"),n.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var n=this.sb;n.push("("),this.visitNode(e.expression),n.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var n=this.sb;this.visitNode(e.condition),n.push(" ? "),this.visitNode(e.ifThen),n.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(o.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(o.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var n=this.sb;if(n.length&&e.kind!=r.NodeKind.VARIABLE&&e.kind!=r.NodeKind.EXPRESSION){var t=n[n.length-1],i=t.length-1;i>=0&&(125==t.charCodeAt(i)||59==t.charCodeAt(i))?n.push("\n"):n.push(";\n")}else n.push(";\n")},e.prototype.visitBlockStatement=function(e){var n=this.sb,t=e.statements,r=t.length;if(r){n.push("{\n");for(var i=++this.indentLevel,o=0;o")}var f=e.extendsType;f&&(u.push(" extends "),this.visitTypeNode(f));var c=e.implementsTypes;if(c){var d=c.length;if(d)for(u.push(" implements "),this.visitTypeNode(c[0]),o=1;o")}}if(2==e.arrowKind){var u=t.parameters;assert(1==u.length),assert(!t.explicitThisType),this.serializeParameter(u[0])}else{n.push("(");var l=(u=t.parameters).length,f=t.explicitThisType;if(f&&(n.push("this: "),this.visitTypeNode(f)),l)for(f&&n.push(", "),this.serializeParameter(u[0]),s=1;s "),this.visitNode(c)):(assert(!r.isTypeOmitted(d)),n.push(" => "),this.visitTypeNode(d)):(r.isTypeOmitted(d)||e.isAny(i.CommonFlags.CONSTRUCTOR|i.CommonFlags.SET)?n.push(")"):(n.push("): "),this.visitTypeNode(d)),c&&(n.push(" "),this.visitNode(c)))},e.prototype.visitIfStatement=function(e){var n=this.sb;n.push("if ("),this.visitNode(e.condition),n.push(") ");var t=e.ifTrue;this.visitNode(t),t.kind!=r.NodeKind.BLOCK&&n.push(";\n");var i=e.ifFalse;i&&(t.kind==r.NodeKind.BLOCK?n.push(" else "):n.push("else "),this.visitNode(i))},e.prototype.visitImportDeclaration=function(e){var n=e.foreignName,t=e.name;this.visitIdentifierExpression(n),n.text!=t.text&&(this.sb.push(" as "),this.visitIdentifierExpression(t))},e.prototype.visitImportStatement=function(e){var n=this.sb;n.push("import ");var t=e.declarations,r=e.namespaceName;if(t){var i=t.length;if(i){n.push("{\n");var o=++this.indentLevel;a.indent(n,o),this.visitImportDeclaration(t[0]);for(var s=1;s")}var u=e.extendsType;u&&(o.push(" extends "),this.visitTypeNode(u)),o.push(" {\n");var l=++this.indentLevel,f=e.members;for(r=0,i=f.length;r")}}i.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var n=e.type,t=this.sb;e.flags&i.CommonFlags.DEFINITE_ASSIGNMENT&&t.push("!"),n&&(t.push(": "),this.visitTypeNode(n));var r=e.initializer;r&&(t.push(" = "),this.visitNode(r))},e.prototype.visitVariableStatement=function(e){var n=e.decorators;if(n)for(var t=0,r=n.length;t>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(n.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(n.i32=n.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(n.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(n.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(n.u32=n.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(n.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(n.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(n.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),n.clz=Math.clz32,n.ctz=function(e){var n=Math.clz32(e&-e);return e?31-n:n},n.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},n.rotl=function(e,n){return e<<(n&=31)|e>>>32-n},n.rotr=function(e,n){return e>>>(n&=31)|e<<32-n},n.abs=Math.abs,n.max=Math.max,n.min=Math.min,n.ceil=Math.ceil,n.floor=Math.floor,n.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},n.select=function(e,n,t){return t?e:n},n.sqrt=Math.sqrt,n.trunc=Math.trunc,n.copysign=function(e,n){return Math.abs(e)*Math.sign(n)},n.bswap=function(e){var n=e>>8&16711935,t=(16711935&e)<<8;return(n=(e=n|t)>>16&65535)|(65535&e)<<16},n.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",n.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",n.assert=function(e,n){if(e)return e;throw new a(n)},n.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,n){var t=this.split(e).join(n);return e.length||(t=n+t+n),t}}),n.isInteger=Number.isInteger,n.isFloat=function(e){return"number"==typeof e},n.isNullable=function(e){return!0},n.isReference=function(e){return"object"==typeof e||"string"==typeof e},n.isFunction=function(e){return"function"==typeof e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isArray=Array.isArray,n.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var n=new Array(e);return n.length=0,n},n.isDefined=function(e){return void 0!==e},n.isConstant=function(e){return!1},n.unchecked=function(e){return e},n.fmod=function(e,n){return e%n},n.fmodf=function(e,n){return Math.fround(e%n)},n.JSMath=Math;try{Object.defineProperties(n.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(r[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}n.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:n.__memory_allocate||function(n){if(!(n>>>=0))return 0;if(t+n>e.length){var r=e;(e=new Uint8Array(Math.max(65536,e.length+n,2*e.length))).set(r)}var i=t;return 7&(t+=n)&&(t=1+(7|t)),i},fill:n.__memory_fill||function(n,t,r){e.fill(t,n,n+r)},free:n.__memory_free||function(e){},copy:n.__memory_copy||function(n,t,r){e.copyWithin(n,t,t+r)},reset:n.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),n.store=n.__store||function(e,n,t){HEAP[(0|e)+(0|t)]=n},n.load=n.__load||function(e,n){return HEAP[(0|e)+(0|n)]},n.unmanaged=function(){}}).call(this,t(3))},function(e,n,t){(function(e){const n=new Float64Array(1),t=new Float32Array(n.buffer),r=new Int32Array(n.buffer);e.f32_as_i32=function(e){return t[0]=e,r[0]},e.i32_as_f32=function(e){return r[0]=e,t[0]},e.f64_as_i64=function(e){return n[0]=e,i64_new(r[0],r[1])},e.i64_as_f64=function(e){return r[0]=i64_low(e),r[1]=i64_high(e),n[0]}}).call(this,t(3))},function(e,n,t){(function(e){const n=e.Long||t(21);e.i64_zero=n.ZERO,e.i64_one=n.ONE,e.i64_new=function(e,t){return n.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,n){return e.add(n)},e.i64_sub=function(e,n){return e.sub(n)},e.i64_mul=function(e,n){return e.mul(n)},e.i64_div=function(e,n){return e.div(n)},e.i64_div_u=function(e,n){return e.toUnsigned().div(n.toUnsigned()).toSigned()},e.i64_rem=function(e,n){return e.mod(n)},e.i64_rem_u=function(e,n){return e.toUnsigned().mod(n.toUnsigned()).toSigned()},e.i64_and=function(e,n){return e.and(n)},e.i64_or=function(e,n){return e.or(n)},e.i64_xor=function(e,n){return e.xor(n)},e.i64_shl=function(e,n){return e.shl(n)},e.i64_shr=function(e,n){return e.shr(n)},e.i64_shr_u=function(e,n){return e.shru(n)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,n){return e.eq(n)},e.i64_ne=function(e,n){return e.ne(n)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var r=n.fromInt(t-1);return e.add(r).and(r.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const r=n.fromNumber(f32.MIN_SAFE_INTEGER),i=n.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(r)&&e.lte(i)};const a=n.fromNumber(f64.MIN_SAFE_INTEGER),o=n.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(n){return e.Math.fround(n.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,n){return(n?e.toUnsigned():e).toString(10)}}).call(this,t(3))},function(e,n){e.exports=r;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function r(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0}),r.isLong=i;var a={},o={};function s(e,n){var t,r,i;return n?(i=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(t=l(e,(0|e)<0?-1:0,!0),i&&(o[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function u(e,n){if(isNaN(e))return n?m:v;if(n){if(e<0)return m;if(e>=h)return T}else{if(e<=-g)return A;if(e+1>=g)return E}return e<0?u(-e,n).neg():l(e%p|0,e/p|0,n)}function l(e,n,t){return new r(e,n,t)}r.fromInt=s,r.fromNumber=u,r.fromBits=l;var f=Math.pow;function c(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return v;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return c(e.substring(1),n,t).neg();for(var i=u(f(t,8)),a=v,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return l+o;for(;l.length<6;)l="0"+l;o=""+l+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(A)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,n=31;n>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=d(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=d(e)),this.eq(e))return 0;var n=this.isNegative(),t=e.isNegative();return n&&!t?-1:!n&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(A)?A:this.not().add(_)},S.neg=S.negate,S.add=function(e){i(e)||(e=d(e));var n=this.high>>>16,t=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,u=e.low>>>16,f=0,c=0,p=0,h=0;return p+=(h+=a+(65535&e.low))>>>16,c+=(p+=r+u)>>>16,f+=(c+=t+s)>>>16,f+=n+o,l((p&=65535)<<16|(h&=65535),(f&=65535)<<16|(c&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=d(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return v;if(i(e)||(e=d(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return v;if(this.eq(A))return e.isOdd()?A:v;if(e.eq(A))return this.isOdd()?A:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(x)&&e.lt(x))return u(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,r=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,f=65535&e.high,c=e.low>>>16,p=65535&e.low,h=0,g=0,m=0,_=0;return m+=(_+=o*p)>>>16,g+=(m+=a*p)>>>16,m&=65535,g+=(m+=o*c)>>>16,h+=(g+=r*p)>>>16,g&=65535,h+=(g+=a*c)>>>16,g&=65535,h+=(g+=o*f)>>>16,h+=n*p+r*c+a*f+o*s,l((m&=65535)<<16|(_&=65535),(h&=65535)<<16|(g&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=d(e)),e.isZero())throw Error("division by zero");var n,r,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return m;if(e.gt(this.shru(1)))return y;a=m}else{if(this.eq(A))return e.eq(_)||e.eq(b)?A:e.eq(A)?_:(n=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?_:b:(r=this.sub(e.mul(n)),a=n.add(r.div(e)));if(e.eq(A))return this.unsigned?m:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=v}for(r=this;r.gte(e);){n=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),s=o<=48?1:f(2,o-48),c=u(n),p=c.mul(e);p.isNegative()||p.gt(r);)p=(c=u(n-=s,this.unsigned)).mul(e);c.isZero()&&(c=_),a=a.add(c),r=r.sub(p)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=d(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return l(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=d(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=d(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=d(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0==(e&=63))return this;var n=this.high;return e<32?l(this.low>>>e|n<<32-e,n>>>e,this.unsigned):l(32===e?n:n>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,n=this.low;return[255&n,n>>>8&255,n>>>16&255,n>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,n>>>24,n>>>16&255,n>>>8&255,255&n]},r.fromBytes=function(e,n,t){return t?r.fromBytesLE(e,n):r.fromBytesBE(e,n)},r.fromBytesLE=function(e,n){return new r(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},r.fromBytesBE=function(e,n){return new r(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}),a=this&&this.__values||function(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(n,"__esModule",{value:!0});var o=t(0),s=function(e){function n(n){var t=e.call(this,n)||this;return t.depth=0,t}return i(n,e),n.prototype._visit=function(e){switch(e.kind){case o.NodeKind.SOURCE:this.visitSource(e);break;case o.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case o.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case o.NodeKind.TYPENAME:this.visitTypeName(e);case o.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case o.NodeKind.FALSE:case o.NodeKind.NULL:case o.NodeKind.SUPER:case o.NodeKind.THIS:case o.NodeKind.TRUE:case o.NodeKind.CONSTRUCTOR:case o.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case o.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case o.NodeKind.BINARY:this.visitBinaryExpression(e);break;case o.NodeKind.CALL:this.visitCallExpression(e);break;case o.NodeKind.CLASS:this.visitClassExpression(e);break;case o.NodeKind.COMMA:this.visitCommaExpression(e);break;case o.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case o.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case o.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case o.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case o.NodeKind.NEW:this.visitNewExpression(e);break;case o.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case o.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case o.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case o.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case o.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case o.NodeKind.BLOCK:this.visitBlockStatement(e);break;case o.NodeKind.BREAK:this.visitBreakStatement(e);break;case o.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case o.NodeKind.DO:this.visitDoStatement(e);break;case o.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case o.NodeKind.EXPORT:this.visitExportStatement(e);break;case o.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case o.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case o.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case o.NodeKind.FOR:this.visitForStatement(e);break;case o.NodeKind.IF:this.visitIfStatement(e);break;case o.NodeKind.IMPORT:this.visitImportStatement(e);break;case o.NodeKind.RETURN:this.visitReturnStatement(e);break;case o.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case o.NodeKind.THROW:this.visitThrowStatement(e);break;case o.NodeKind.TRY:this.visitTryStatement(e);break;case o.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case o.NodeKind.WHILE:this.visitWhileStatement(e);break;case o.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case o.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case o.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case o.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case o.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case o.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case o.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case o.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case o.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case o.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case o.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case o.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case o.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case o.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case o.NodeKind.PARAMETER:this.visitParameter(e);break;case o.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},n.prototype.visitSource=function(e){var n,t;try{for(var r=a(e.statements),i=r.next();!i.done;i=r.next()){var o=i.value;this.depth++,this.visit(o),this.depth--}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}},n.prototype.visitTypeNode=function(e){},n.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},n.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},n.prototype.visitFunctionTypeNode=function(e){var n,t;try{for(var r=a(e.parameters),i=r.next();!i.done;i=r.next()){var o=i.value;this.visit(o)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}this.visit(e.returnType)},n.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},n.prototype.visitIdentifierExpression=function(e){},n.prototype.visitArrayLiteralExpression=function(e){var n=this;e.elementExpressions.map(function(e){e&&n.visit(e)})},n.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var n=0;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();n.DefaultWriter=a;var o=function(){function e(e){void 0===e&&(e=new a),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var n,t,a,o,s,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var l=r(e.entries()),f=l.next();!f.done;f=l.next()){var c=i(f.value,2),d=(c[0],c[1]);this.visit(d)}}catch(e){n={error:e}}finally{try{f&&!f.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}else if(null!=(s=e)&&"function"==typeof s[Symbol.iterator])try{for(var p=r(e),h=p.next();!h.done;h=p.next())d=h.value,this.visit(d)}catch(e){a={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(a)throw a.error}}else this._visit(e)},e}();n.AbstractVisitor=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.preamble='import { storage, near, base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])},function(e,n){if(void 0===__WEBPACK_EXTERNAL_MODULE__11__){var t=new Error("Cannot find module 'assemblyscript'");throw t.code="MODULE_NOT_FOUND",t}e.exports=__WEBPACK_EXTERNAL_MODULE__11__},function(e){e.exports=JSON.parse('{"version":{"description":"Prints just the compiler\'s version and exits.","type":"b","alias":"v"},"help":{"description":"Prints this message and exits.","type":"b","alias":"h"},"optimize":{"description":["Optimizes the module. Also has the usual shorthands:",""," -O Uses defaults. Equivalent to -O3s"," -O0 Equivalent to --optimizeLevel 0"," -O1 Equivalent to --optimizeLevel 1"," -O2 Equivalent to --optimizeLevel 2"," -O3 Equivalent to --optimizeLevel 3"," -Oz Equivalent to -O but with --shrinkLevel 2"," -O3s Equivalent to -O3 with --shrinkLevel 1 etc.",""],"type":"b","alias":"O"},"optimizeLevel":{"description":"How much to focus on optimizing code. [0-3]","type":"i"},"shrinkLevel":{"description":"How much to focus on shrinking code size. [0-2, s=1, z=2]","type":"i"},"validate":{"description":"Validates the module using Binaryen. Exits if invalid.","type":"b","alias":"c","default":false},"baseDir":{"description":"Specifies the base directory of input and output files.","type":"s","default":"."},"outFile":{"description":"Specifies the output file. File extension indicates format.","type":"s","alias":"o"},"binaryFile":{"description":"Specifies the binary output file (.wasm).","type":"s","alias":"b"},"textFile":{"description":"Specifies the text output file (.wat).","type":"s","alias":"t"},"asmjsFile":{"description":"Specifies the asm.js output file (.js).","type":"s","alias":"a"},"idlFile":{"description":"Specifies the WebIDL output file (.webidl).","type":"s","alias":"i"},"tsdFile":{"description":"Specifies the TypeScript definition output file (.d.ts).","type":"s","alias":"d"},"sourceMap":{"description":["Enables source map generation. Optionally takes the URL","used to reference the source map from the binary file."],"type":"s"},"runtime":{"description":["Specifies the runtime variant to include in the program.",""," full Default runtime based on TLSF and reference counting."," half Same as \'full\', but not exported to the host."," stub Minimal stub implementation without free/GC support."," none Same as \'stub\', but not exported to the host.",""],"type":"s","default":"full"},"noUnsafe":{"description":["Disallows the use of unsafe features in user code.","Does not affect library files and external modules."],"type":"b","default":false},"debug":{"description":"Enables debug information in emitted binaries.","type":"b","default":false},"noAssert":{"description":"Replaces assertions with just their value without trapping.","type":"b","default":false},"noEmit":{"description":"Performs compilation as usual but does not emit code.","type":"b","default":false},"importMemory":{"description":"Imports the memory instance provided by the embedder.","type":"b","default":false},"sharedMemory":{"description":"Declare memory as shared by settings the max shared memory.","type":"i","default":0},"memoryBase":{"description":"Sets the start offset of compiler-generated static memory.","type":"i","default":0},"importTable":{"description":"Imports the function table instance provided by the embedder.","type":"b","default":false},"explicitStart":{"description":"Exports an explicit start function to be called manually.","type":"b","default":false},"lib":{"description":["Adds one or multiple paths to custom library components and","uses exports of all top-level files at this path as globals."],"type":"s"},"path":{"description":["Comma separated paths to look for dependencies.","Looks for folders with package.json that includes a \'ascMain\' field","or defaults to having an \'/assembly\' folder."],"type":"S"},"use":{"description":["Aliases a global object under another name, e.g., to switch","the default \'Math\' implementation used: --use Math=JSMath"],"type":"S","alias":"u"},"trapMode":{"description":["Sets the trap mode to use.",""," allow Allow trapping operations. This is the default."," clamp Replace trapping operations with clamping semantics."," js Replace trapping operations with JS semantics.",""],"type":"s","default":"allow"},"runPasses":{"description":["Specifies additional Binaryen passes to run after other","optimizations, if any. See: Binaryen/src/passes/pass.cpp"],"type":"s"},"enable":{"description":["Enables additional (experimental) WebAssembly features.",""," sign-extension Enables sign-extension operations"," mutable-global Enables mutable global imports and exports"," bulk-memory Enables bulk memory operations"," simd Enables SIMD types and operations."," threads Enables threading and atomic operations.",""],"type":"s"},"transform":{"description":"Specifies the path to a custom transform to \'require\'.","type":"S"},"traceResolution":{"description":"Enable tracing of package resolution.","type":"b","default":false},"listFiles":{"description":"List files to be compiled and exit.","type":"b","default":false},"measure":{"description":"Prints measuring information on I/O and compile times.","type":"b","default":false},"printrtti":{"description":"Prints the module\'s runtime type information to stderr.","type":"b","default":false},"noColors":{"description":"Disables terminal colors.","type":"b","default":false}," ...":{"description":"Specifies node.js options (CLI only). See: node --help"},"-Os":{"value":{"optimize":true,"shrinkLevel":1}},"-Oz":{"value":{"optimize":true,"shrinkLevel":2}},"-O0":{"value":{"optimizeLevel":0,"shrinkLevel":0}},"-O1":{"value":{"optimizeLevel":1,"shrinkLevel":0}},"-O2":{"value":{"optimizeLevel":2,"shrinkLevel":0}},"-O3":{"value":{"optimizeLevel":3,"shrinkLevel":0}},"-O0s":{"value":{"optimizeLevel":0,"shrinkLevel":1}},"-O1s":{"value":{"optimizeLevel":1,"shrinkLevel":1}},"-O2s":{"value":{"optimizeLevel":2,"shrinkLevel":1}},"-O3s":{"value":{"optimizeLevel":3,"shrinkLevel":1}},"-O0z":{"value":{"optimizeLevel":0,"shrinkLevel":2}},"-O1z":{"value":{"optimizeLevel":1,"shrinkLevel":2}},"-O2z":{"value":{"optimizeLevel":2,"shrinkLevel":2}},"-O3z":{"value":{"optimizeLevel":3,"shrinkLevel":2}},"notNear":{"description":"Prevent the instrumentation of the binding code for near","type":"b","default":false}}')},function(e,n){function t(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=13},function(e,n,t){(function(n,t){e.exports=n.hrtime||function(e){var n=.001*i.call(r),t=Math.floor(n),a=Math.floor(n%1*1e9);e&&(t-=e[0],(a-=e[1])<0&&(t--,a+=1e9));return[t,a]};var r=t.performance||{},i=r.now||r.mozNow||r.msNow||r.oNow||r.webkitNow||function(){return(new Date).getTime()}}).call(this,t(0),t(2))}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e.assemblyscript)}("undefined"!=typeof self?self:this,function(__WEBPACK_EXTERNAL_MODULE__11__){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=4)}([function(e,n,t){var r,i;n.nextTick=function(e){var n=Array.prototype.slice.call(arguments);n.shift(),setTimeout(function(){e.apply(null,n)},0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(1)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!=typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!=typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(0))},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n){},function(e,n,t){e.exports=t(5)},function(module,exports,__webpack_require__){(function(process,global){process.browser&&(process.cwd=function(){return"."});const fs=__webpack_require__(3),path=__webpack_require__(1),utf8=__webpack_require__(6),colorsUtil=__webpack_require__(7),optionsUtil=__webpack_require__(8),mkdirp=__webpack_require__(9),EOL="win32"===process.platform?"\r\n":"\n",SEP="win32"===process.platform?"\\":"/",nearBindings=__webpack_require__(10),nearLibEntry=path.join(".","..","bindings","assembly","nearEntry.ts");process.removeAllListeners&&process.removeAllListeners("uncaughtException");var assemblyscript,isDev=!1;function checkDiagnostics(e,n){for(var t,r=!1;null!=(t=assemblyscript.nextDiagnostic(e));)n&&n.write(assemblyscript.formatDiagnostic(t,n.isTTY,!0)+EOL+EOL),assemblyscript.isError(t)&&(r=!0);return r}function createStats(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function measure(e){const n=process.hrtime();e();const t=process.hrtime(n);return 1e9*t[0]+t[1]}function formatTime(e){return e?(e/1e6).toFixed(3)+" ms":"N/A"}function printStats(e,n){function t(e,n){return formatTime(e)}(n||process.stdout).write(["I/O Read : "+t(e.readTime,e.readCount),"I/O Write : "+t(e.writeTime,e.writeCount),"Parse : "+t(e.parseTime,e.parseCount),"Compile : "+t(e.compileTime,e.compileCount),"Emit : "+t(e.emitTime,e.emitCount),"Validate : "+t(e.validateTime,e.validateCount),"Optimize : "+t(e.optimizeTime,e.optimizeCount)].join(EOL)+EOL)}function printRTTI(e,n){n||(n=process.stderr),n.write("# Runtime type information (RTTI)\n"),n.write(assemblyscript.buildRTTI(e))}(()=>{try{assemblyscript=__webpack_require__(11)}catch(e){try{__webpack_require__(!function(){var e=new Error("Cannot find module 'ts-node'");throw e.code="MODULE_NOT_FOUND",e}()).register({project:path.join(".","..","src","tsconfig.json")}),__webpack_require__(!function(){var e=new Error("Cannot find module '../src/glue/js'");throw e.code="MODULE_NOT_FOUND",e}()),assemblyscript=__webpack_require__(!function(){var e=new Error("Cannot find module '../src'");throw e.code="MODULE_NOT_FOUND",e}()),isDev=!0}catch(e_ts){try{assemblyscript=eval("require('./assemblyscript')")}catch(e){throw e.stack=e_ts.stack+"\n---\n"+e.stack,e}}}})(),exports.isBundle=!0,exports.isDev=isDev,exports.version=exports.isBundle?"0.7.0":__webpack_require__(!function(){var e=new Error("Cannot find module '../package.json'");throw e.code="MODULE_NOT_FOUND",e}()).version,exports.options=__webpack_require__(12),exports.sourceMapRoot="assemblyscript:///",exports.libraryPrefix=assemblyscript.LIBRARY_PREFIX,exports.defaultOptimizeLevel=3,exports.defaultShrinkLevel=1,exports.libraryFiles=exports.isBundle?Object({nearEntry:'\nimport { storage, near, base64, base58 } from \'near-runtime-ts\';\n//@ts-ignore\nimport { Buffer } from "assemblyscript-json/util";\nimport { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\nimport { u128 } from "bignum";\n// Runtime functions\n// tslint:disable: no-unsafe-any\n\n\n\ntype Usize = u64;\n//@ts-ignore\n@global\n@external("env", "read_register")\ndeclare function read_register(register_id: Usize, ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "register_len")\ndeclare function register_len(register_id: Usize): Usize;\n\n//@ts-ignore\n@global\n@external("env", "input")\ndeclare function input(register_id: Usize): void;\n//@ts-ignore\n@global\n@external("env", "value_return")\ndeclare function value_return(value_len: Usize, value_ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "panic")\ndeclare function panic(): void;\n\n\n\n/// \n\nabstract class Value {\n static String(str: string): Value {\n return new Str(str)\n }\n static Number(num: i64): Value {\n return new Num(num)\n }\n static Bool(b: bool): Value {\n return new Bools(b)\n }\n static Null(): Value {\n return new Null();\n }\n static Array(): Value {\n return new Arr();\n }\n static Object(): Value {\n return new Obj();\n }\n\n toString(): string {\n if (this instanceof Str){\n return (this).toString();\n }\n if (this instanceof Num){\n return (this).toString();\n }\n if (this instanceof Bools){\n return (this).toString();\n }\n if (this instanceof Null){\n return (this).toString();\n }\n if (this instanceof Arr){\n return (this).toString();\n }\n if (this instanceof Obj){\n return (this).toString();\n }\n return "Value";\n }\n}\n@global\nclass Str extends Value {\n constructor(public _str: string) {\n super();\n }\n\n toString(): string {\n return "\\"" + this._str + "\\"";\n }\n}\n@global\nclass Num extends Value {\n constructor(public _num: i64) {\n super();\n }\n\n toString(): string {\n return this._num.toString();\n }\n}\n@global\nclass Null extends Value {\n constructor() {\n super();\n }\n\n toString(): string {\n return "null";\n }\n}\n\n@global class Bools extends Value {\n constructor(public _bool: bool) {\n super();\n }\n\n toString(): string {\n return this._bool.toString();\n }\n}\n\n@global\nclass Arr extends Value {\n _arr: Array;\n constructor() {\n super();\n this._arr = new Array();\n }\n\n push(obj: Value): void {\n this._arr.push(obj)\n }\n\n toString(): string {\n return "[" + this._arr.map((val: Value,i: i32,_arr: Value[]): string => val.toString()).join(",") + "]";\n }\n}\n\n@global\nclass Obj extends Value {\n _obj: Map;\n keys: Array;\n\n constructor() {\n super();\n this._obj = new Map();\n this.keys = new Array();\n }\n\n set(key: string, value: Value): void {\n if (!this._obj.has(key)) {\n this.keys.push(key);\n }\n this._obj.set(key, value);\n }\n\n get(key: string): Value | null {\n if (!this._obj.has(key)) {\n return null;\n }\n return this._obj.get(key)\n }\n\n toString(): string {\n let objs: string[] = []\n for (let i: i32 = 0; i < this.keys.length; i++){\n objs.push("\\"" +this.keys[i]+"\\":"+ this._obj.get(this.keys[i]).toString());\n }\n return "{"+ objs.join(",") + "}"\n }\n\n has(key: string): bool {\n return this._obj.has(key);\n }\n}\n\nclass Handler extends ThrowingJSONHandler {\n stack: Value[];\n constructor() {\n super();\n this.stack = new Array();\n }\n\n reset(): void {\n while (this.stack.length > 0){\n this.stack.pop();\n }\n }\n\n get peek(): Value {\n return this.stack[this.stack.length - 1];\n }\n\n setString(name: string, value: string): void {\n let obj: Value = Value.String(value);\n this.addValue(name, obj);\n }\n\n setBoolean(name: string, value: bool): void {\n let obj = Value.Bool(value);\n this.addValue(name, obj);\n }\n\n setNull(name: string): void {\n let obj = Value.Null();\n this.addValue(name, obj);\n }\n\n setInteger(name: string, value: i64): void {\n let obj = Value.Number(value);\n this.addValue(name, obj);\n }\n\n pushArray(name: string): bool {\n let obj: Value = Value.Array();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popArray(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n pushObject(name: string): bool {\n let obj: Value = Value.Object();\n this.addValue(name, obj);\n this.stack.push(obj)\n return true;\n }\n\n popObject(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n addValue(name: string, obj: Value): void {\n if (name.length == 0 && obj instanceof Obj && this.stack.length == 0) {\n this.stack.push(obj);\n return;\n }\n if (this.peek instanceof Obj) {\n (this.peek as Obj).set(name, obj)\n }\n else if (this.peek instanceof Arr) {\n (this.peek).push(obj);\n }\n }\n}\n\n\n@global()\nclass JSON {\n // private static handler: Handler = new Handler();\n static parse(str: Uint8Array ): Obj {\n let decoder = new JSONDecoder(new Handler());\n decoder.deserialize(str);\n let res = decoder.handler.peek as Obj;\n return res;\n }\n}\n\n\n\n\n\n\n//@ts-ignore\n@global\nfunction encode(encoder: JSONEncoder, value: T, name: string | null = ""): JSONEncoder {\n if (isBoolean()) {\n //@ts-ignore\n encoder.setBoolean(name, value);\n } else if (isInteger()) {\n if (value instanceof i64 || value instanceof u64) {\n //@ts-ignore\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n encoder.setInteger(name, value);\n }\n //@ts-ignore\n } else if (value == null) {\n encoder.setNull(name);\n } else if (isString()) {\n //@ts-ignore\n encoder.setString(name, value);\n } else if (isReference()) {\n if (isArrayLike(value)) {\n if (value instanceof Uint8Array) {\n //@ts-ignore\n encoder.setString(name, base64.encode( value));\n } else {\n encoder.pushArray(name);\n for (let i: i32 = 0; i < value.length; i++) {\n //@ts-ignore\n encode(encoder, value[i], null);\n }\n encoder.popArray();\n }\n } else { // Is an object\n if (value instanceof u128){\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n value.encode(encoder, name);\n }\n }\n } else {\n throw new Error("Encoding failed");\n }\n return encoder;\n}\n\n@inline\nfunction getStr(val: Value, name: String): string {\n assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null");\n return (val)._str;\n \n \n}\n\nfunction decodeArray(val: Value, name: string): Array {\n assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null.");\n let res = new Array();\n let arr = (val)._arr;\n for (let i: i32 = 0; i < arr.length; i++){\n let item: T = decode(arr[i]);\n res.push(item);\n }\n return res;\n}\n\n\n//@ts-ignore\n@global\nfunction decode(buffer: Value, name: string = ""): T {\n let val: Value;\n if (buffer instanceof Obj && name != ""){\n const obj: Obj = buffer;\n let res = obj.get(name);\n if (res == null){\n //@ts-ignore\n return null\n }\n val = res;\n }else {\n val = buffer;\n }\n if (val instanceof Null) {\n assert(isReference() || isArrayLike() || isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable.");\n //@ts-ignore\n return null;\n }\n if (isString()) {\n //@ts-ignore\n return getStr(val, name);\n }\n if (isBoolean()) {\n assert(val instanceof Bools, "Value with Key: "+ name + " with type " + nameof() +" is not a string");\n //@ts-ignore\n return (val)._bool\n }\n var value: T;\n if (isInteger()) {\n //@ts-ignore\n if (value instanceof u64 || value instanceof i64) {\n assert(val instanceof Str, "Value with Key: "+ name + " with type " + nameof() +" is an 64-bit integer and is expected to be encoded as a string");\n let str = (val)._str;\n //@ts-ignore\n return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str);\n }\n assert(val instanceof Num, "Value with Key: "+ name + " with type " + nameof() +" is not an Integer");\n //@ts-ignore\n return (val)._num;\n }\n assert(isReference(), name + " with type " + nameof() + " must be an integer, boolean, string, object, or array");\n if (isArrayLike()) {\n //@ts-ignore\n if (value instanceof Uint8Array ) {\n //@ts-ignore\n return base64.decode(getStr(val, name)) \n }\n //@ts-ignore\n // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array")\n //@ts-ignore only checking the instance\n return decodeArray>(val, name);\n }\n if (val instanceof Str){\n //@ts-ignore\n if (value instanceof u128) {\n //@ts-ignore\n return u128.fromString(getStr(val, name));\n }\n }\n assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null")\n value = instantiate();\n //@ts-ignore\n return value.decode(val);\n}\n',array:'/// \n\nimport { BLOCK_MAXSIZE } from "./rt/common";\nimport { COMPARATOR, SORT } from "./util/sort";\nimport { ArrayBuffer, ArrayBufferView } from "./arraybuffer";\nimport { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";\nimport { idof, isArray as builtin_isArray } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error";\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureSize(array: usize, minSize: usize, alignLog2: u32): void {\n var oldCapacity = changetype(array).dataLength;\n if (minSize > oldCapacity >>> alignLog2) {\n if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).data);\n let newCapacity = minSize << alignLog2;\n let newData = __realloc(oldData, newCapacity);\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n if (newData !== oldData) { // oldData has been free\'d\n store(changetype(array), __retain(newData), offsetof("data"));\n changetype(array).dataStart = newData;\n }\n changetype(array).dataLength = newCapacity;\n }\n}\n\nexport class Array extends ArrayBufferView {\n [key: number]: T;\n\n // Implementing ArrayBufferView isn\'t strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).\n\n // Also note that Array with non-nullable T must guard against implicit null values whenever\n // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn\'t be\n // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return builtin_isArray(value) && value !== null;\n }\n\n static create(capacity: i32 = 0): Array {\n if (capacity > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n var array = changetype>(__allocArray(capacity, alignof(), idof())); // retains\n changetype>(array).length_ = 0; // safe even if T is a non-nullable reference\n memory.fill(array.dataStart, 0, array.dataLength);\n return array;\n }\n\n constructor(length: i32 = 0) {\n super(length, alignof());\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n this.length_ = length;\n }\n\n @unsafe get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n var oldLength = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (newLength > oldLength) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) { // release no longer used refs\n if (oldLength > newLength) {\n let dataStart = this.dataStart;\n do __release(load(dataStart + (--oldLength << alignof())));\n while (oldLength > newLength);\n // no need to zero memory on shrink -> is zeroed on grow\n }\n }\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (!fn(load(this.dataStart + (index << alignof())), index, this)) return false;\n }\n return true;\n }\n\n findIndex(predicate: (value: T, index: i32, array: Array) => bool): i32 {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (predicate(load(this.dataStart + (index << alignof())), index, this)) return index;\n }\n return -1;\n }\n\n @operator("[]") private __get(index: i32): T {\n if (isReference()) {\n if (!isNullable()) {\n if (index >= this.length_) throw new Error(E_HOLEYARRAY);\n }\n }\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n var length = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (index > length) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), index + 1, alignof());\n this.__unchecked_set(index, value);\n if (index >= length) this.length_ = index + 1;\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = this.dataStart + (index << alignof());\n let oldRef: usize = load(offset);\n if (changetype(value) != oldRef) {\n store(offset, __retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n store(this.dataStart + (index << alignof()), value);\n }\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (isManaged()) {\n for (; start < end; ++start) {\n let oldRef: usize = load(dataStart + (start << alignof()));\n if (changetype(value) != oldRef) {\n store(dataStart + (start << alignof()), __retain(changetype(value)));\n __release(oldRef);\n }\n }\n } else if (sizeof() == 1) {\n if (start < end) {\n memory.fill(\n dataStart + start,\n u8(value),\n (end - start)\n );\n }\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n return this.indexOf(value, fromIndex) >= 0;\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var length = this.length_;\n if (length == 0 || fromIndex >= length) return -1;\n if (fromIndex < 0) fromIndex = max(length + fromIndex, 0);\n var dataStart = this.dataStart;\n while (fromIndex < length) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var length = this.length_;\n if (length == 0) return -1;\n if (fromIndex < 0) fromIndex = length + fromIndex;\n else if (fromIndex >= length) fromIndex = length - 1;\n var dataStart = this.dataStart;\n while (fromIndex >= 0) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var length = this.length_;\n var newLength = length + 1;\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) {\n store(this.dataStart + (length << alignof()), __retain(changetype(value)));\n } else {\n store(this.dataStart + (length << alignof()), value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = select(0, other.length_, other === null);\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, __retain(ref));\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, __retain(ref));\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n if (isManaged()) {\n if (from < to && to < (from + count)) { // right to left\n from += count - 1;\n to += count - 1;\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n --from, --to, --count;\n }\n } else { // left to right\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n ++from, ++to, --count;\n }\n }\n } else {\n memory.copy( // is memmove\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n }\n return this;\n }\n\n pop(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var element = load(this.dataStart + ((--length) << alignof()));\n this.length_ = length;\n return element; // no need to retain -> is moved\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n fn(load(this.dataStart + (index << alignof())), index, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var length = this.length_;\n var out = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n for (let index = 0; index < min(length, this.length_); ++index) {\n let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains\n if (isManaged()) {\n store(outStart + (index << alignof()), __retain(changetype(result)));\n } else {\n store(outStart + (index << alignof()), result);\n }\n // releases result\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n let value = load(this.dataStart + (index << alignof()));\n if (fn(value, index, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = this.length_ - 1; index >= 0; --index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n shift(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = length - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n store(base + (lastIndex << alignof()),\n // @ts-ignore: cast\n null\n );\n this.length_ = lastIndex;\n return element; // no need to retain -> is moved\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (fn(load(this.dataStart + (index << alignof())), index, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var newLength = this.length_ + 1;\n ensureSize(changetype(this), newLength, alignof());\n var dataStart = this.dataStart;\n memory.copy(\n dataStart + sizeof(),\n dataStart,\n (newLength - 1) << alignof()\n );\n if (isManaged()) {\n store(dataStart, __retain(changetype(value)));\n } else {\n store(dataStart, value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(start + length, 0) : min(start, length);\n end = end < 0 ? max(end + length, 0) : min(end , length);\n length = max(end - start, 0);\n var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = length << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, __retain(ref));\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, length << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n deleteCount = max(min(deleteCount, length - start), 0);\n var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n if (isManaged()) {\n for (let i = 0; i < deleteCount; ++i) {\n store(resultStart + (i << alignof()),\n load(thisBase + (i << alignof()))\n );\n // no need to retain -> is moved\n }\n } else {\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n }\n var offset = start + deleteCount;\n if (length != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (length - offset) << alignof()\n );\n }\n this.length_ = length - deleteCount;\n return result;\n }\n\n reverse(): Array {\n var length = this.length_;\n if (length) {\n let front = this.dataStart;\n let back = this.dataStart + ((length - 1) << alignof());\n while (front < back) {\n let temp = load(front);\n store(front, load(back));\n store(back, temp);\n front += sizeof();\n back -= sizeof();\n }\n }\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this {\n var length = this.length_;\n if (length <= 1) return this;\n var base = this.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b;\n store(base, a); // arr[0] = a;\n }\n return this;\n }\n SORT(base, length, comparator);\n return this;\n }\n\n join(separator: string = ","): string {\n if (isBoolean()) return this.join_bool(separator);\n if (isInteger()) return this.join_int(separator);\n if (isFloat()) return this.join_flt(separator);\n if (isString()) return this.join_str(separator);\n if (isArray()) return this.join_arr(separator);\n if (isReference()) return this.join_ref(separator);\n ERROR("unspported element type");\n return unreachable();\n }\n\n private join_bool(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return select("true", "false", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len("false")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_int(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n // @ts-ignore: type\n if (!lastIndex) return changetype(itoa(load(dataStart))); // retains\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_flt(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n ); // retains\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_str(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return load(dataStart);\n\n var sepLen = separator.length;\n var estLen = 0;\n var value: string | null;\n for (let i = 0, len = lastIndex + 1; i < len; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) estLen += value.length;\n }\n var offset = 0;\n var result = changetype(__alloc((estLen + sepLen * lastIndex) << 1, idof())); // retains\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) {\n let valueLen = changetype(value).length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (value !== null) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n changetype(value).length << 1\n );\n }\n return result;\n }\n\n private join_arr(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n\n var result = "";\n var sepLen = separator.length;\n var base = this.dataStart;\n var value: T;\n if (!lastIndex) {\n value = load(base);\n // @ts-ignore: type\n return value ? value.join(separator) : "";\n }\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n if (sepLen) result += separator;\n }\n value = load(base + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n return result; // registered by concatenation (FIXME: lots of garbage)\n }\n\n private join_ref(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var base = this.dataStart;\n if (!lastIndex) return "[object Object]";\n\n const valueLen = 15; // max possible length of element len("[object Object]")\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n if (value) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n if (load(base + (lastIndex << alignof()))) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n // automatically visits ArrayBufferView (.data) next\n }\n}\n',arraybuffer:'/// \n\nimport { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INVALIDLENGTH } from "./util/error";\n\nexport abstract class ArrayBufferView {\n\n @unsafe data: ArrayBuffer;\n @unsafe dataStart: usize;\n @unsafe dataLength: u32;\n\n protected constructor(length: i32, alignLog2: i32) {\n if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length = length << alignLog2, idof());\n memory.fill(buffer, 0, length);\n this.data = changetype(buffer); // retains\n this.dataStart = buffer;\n this.dataLength = length;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n get length(): i32 {\n ERROR("missing implementation: subclasses must implement ArrayBufferView#length");\n return unreachable();\n }\n}\n\n@sealed export class ArrayBuffer {\n\n static isView(value: T): bool {\n if (value) {\n if (value instanceof Int8Array) return true;\n if (value instanceof Uint8Array) return true;\n if (value instanceof Uint8ClampedArray) return true;\n if (value instanceof Int16Array) return true;\n if (value instanceof Uint16Array) return true;\n if (value instanceof Int32Array) return true;\n if (value instanceof Uint32Array) return true;\n if (value instanceof Int64Array) return true;\n if (value instanceof Uint64Array) return true;\n if (value instanceof Float32Array) return true;\n if (value instanceof Float64Array) return true;\n if (value instanceof DataView) return true;\n }\n return false;\n }\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length, idof());\n memory.fill(buffer, 0, length);\n return changetype(buffer); // retains\n }\n\n get byteLength(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n }\n\n slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer {\n var length = this.byteLength;\n begin = begin < 0 ? max(length + begin, 0) : min(begin, length);\n end = end < 0 ? max(length + end , 0) : min(end , length);\n var outSize = max(end - begin, 0);\n var out = __alloc(outSize, idof());\n memory.copy(out, changetype(this) + begin, outSize);\n return changetype(out); // retains\n }\n\n toString(): string {\n return "[object ArrayBuffer]";\n }\n}\n',"bindings/Date":"export declare function UTC(\n // NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for\n // converting the value to the WASM/JS boundary.\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: f64\n): f64;\nexport declare function now(): f64;\n","bindings/Math":"export declare const E: f64;\nexport declare const LN2: f64;\nexport declare const LN10: f64;\nexport declare const LOG2E: f64;\nexport declare const LOG10E: f64;\nexport declare const PI: f64;\nexport declare const SQRT1_2: f64;\nexport declare const SQRT2: f64;\n\nexport declare function abs(x: f64): f64;\nexport declare function acos(x: f64): f64;\nexport declare function acosh(x: f64): f64;\nexport declare function asin(x: f64): f64;\nexport declare function asinh(x: f64): f64;\nexport declare function atan(x: f64): f64;\nexport declare function atan2(y: f64, x: f64): f64;\nexport declare function atanh(x: f64): f64;\nexport declare function cbrt(x: f64): f64;\nexport declare function ceil(x: f64): f64;\nexport declare function clz32(x: f64): f64;\nexport declare function cos(x: f64): f64;\nexport declare function cosh(x: f64): f64;\nexport declare function exp(x: f64): f64;\nexport declare function expm1(x: f64): f64;\nexport declare function floor(x: f64): f64;\nexport declare function fround(x: f64): f32;\nexport declare function hypot(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function imul(a: f64, b: f64): f64;\nexport declare function log(x: f64): f64;\nexport declare function log10(x: f64): f64;\nexport declare function log1p(x: f64): f64;\nexport declare function log2(x: f64): f64;\nexport declare function max(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function min(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function pow(base: f64, exponent: f64): f64;\nexport declare function random(): f64;\nexport declare function round(x: f64): f64;\nexport declare function sign(x: f64): f64;\nexport declare function sin(x: f64): f64;\nexport declare function sinh(x: f64): f64;\nexport declare function sqrt(x: f64): f64;\nexport declare function tan(x: f64): f64;\nexport declare function tanh(x: f64): f64;\nexport declare function trunc(x: f64): f64;\n","bindings/wasi_unstable":"// see: https://wasi.dev\n\n/* tslint:disable:max-line-length */\n\n// helper types to be more explicit\ntype char = u8;\ntype ptr = usize; // all pointers are usize'd\ntype struct = T; // structs are references already in AS\n\n/** Read command-line argument data. */\nexport declare function args_get(\n /** Input: Pointer to a buffer to write the argument pointers. */\n argv: ptr>,\n /** Input: Pointer to a buffer to write the argument string data. */\n argv_buf: ptr\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function args_sizes_get(\n /** Output: Number of arguments. */\n argc: ptr,\n /** Output: Size of the argument string data. */\n argv_buf_size: ptr\n): errno;\n\n/** Return the resolution of a clock. */\nexport declare function clock_res_get(\n /** Input: The clock for which to return the resolution. */\n clock: clockid,\n /** Output: The resolution of the clock. */\n resolution: ptr\n): errno;\n\n/** Return the time value of a clock. */\nexport declare function clock_time_get(\n /** Input: Cock for which to return the time. */\n clock: clockid,\n /** Input: Maximum lag (exclusive) that the returned time value may have, compared to its actual value. */\n precision: timestamp,\n /** Output: Time value of the clock. */\n time: ptr\n): errno;\n\n/** Read environment variable data. */\nexport declare function environ_get(\n /** Input: Pointer to a buffer to write the environment variable pointers. */\n environ: ptr,\n /** Input: Pointer to a buffer to write the environment variable string data. */\n environ_buf: usize\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function environ_sizes_get(\n /** Output: The number of environment variables. */\n environ_count: ptr,\n /** Output: The size of the environment variable string data. */\n environ_buf_size: ptr\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_advise(\n /** Input: The file descriptor for the file for which to provide file advisory information. */\n fd: fd,\n /** Input: The offset within the file to which the advisory applies. */\n offset: filesize,\n /** Input: The length of the region to which the advisory applies. */\n len: filesize,\n /** Input: The advice. */\n advice: advice\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_allocate(\n /** Input: The file descriptor for the file in which to allocate space. */\n fd: fd,\n /** Input: The offset at which to start the allocation. */\n offset: filesize,\n /** Input: The length of the area that is allocated. */\n len: filesize\n): errno;\n\n/** Close a file descriptor. */\nexport declare function fd_close(\n /** Input: The file descriptor to close. */\n fd: fd\n): errno;\n\n/** Synchronize the data of a file to disk. */\nexport declare function fd_datasync(\n /** Input: The file descriptor of the file to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Get the attributes of a file descriptor. */\nexport declare function fd_fdstat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file descriptor's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the flags associated with a file descriptor. */\nexport declare function fd_fdstat_set_flags(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the file descriptor flags. */\n flags: fdflags\n): errno;\n\n/** Adjust the rights associated with a file descriptor. */\nexport declare function fd_fdstat_set_rights(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_base: rights,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_inheriting: rights\n): errno;\n\n/** Return the attributes of an open file. */\nexport declare function fd_filestat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */\nexport declare function fd_filestat_set_size(\n /** Input: A file descriptor for the file to adjust. */\n fd: fd,\n /** Input: The desired file size. */\n size: filesize\n): errno;\n\n/** Adjust the timestamps of an open file or directory. */\nexport declare function fd_filestat_set_times(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Read from a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pread(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors in which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors in which to store data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to read. */\n offset: filesize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_get(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: The buffer where the description is stored. */\n buf: struct\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_dir_name(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: Buffer into which to write the preopened directory name. */\n path: ptr,\n /** Input: Length of the buffer into which to write the preopened directory name. */\n path_len: usize\n): errno;\n\n/** Write to a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pwrite(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to write. */\n offset: filesize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/** Read from a file descriptor. */\nexport declare function fd_read(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors to which to store data. */\n iovs_len: usize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Read directory entries from a directory. */\nexport declare function fd_readdir(\n /** Input: Directory from which to read the directory entries. */\n fd: fd,\n /** Input: Buffer where directory entries are stored. */\n buf: ptr>,\n /** Input: Length of the buffer where directory entries are stored. */\n buf_len: usize,\n /** Input: Location within the directory to start reading. */\n cookie: dircookie,\n /** Output: Number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. */\n buf_used: ptr\n): errno;\n\n/** Atomically replace a file descriptor by renumbering another file descriptor. */\nexport declare function fd_renumber(\n /** Input: The file descriptor to renumber. */\n from: fd,\n /** Input: The file descriptor to overwrite. */\n to: fd\n): errno;\n\n/** Move the offset of a file descriptor. */\nexport declare function fd_seek(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The number of bytes to move. */\n offset: filedelta,\n /** Input: The base from which the offset is relative. */\n whence: whence,\n /** Output: The new offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Synchronize the data and metadata of a file to disk. */\nexport declare function fd_sync(\n /** Input: The file descriptor of the file containing the data and metadata to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Return the current offset of a file descriptor. */\nexport declare function fd_tell(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Output: The current offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Write to a file descriptor. */\nexport declare function fd_write(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/* Create a directory. */\nexport declare function path_create_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path at which to create the directory. */\n path: ptr,\n /** Input: The path at which to create the directory. */\n path_len: usize\n): errno;\n\n/** Return the attributes of a file or directory. */\nexport declare function path_filestat_get(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to inspect. */\n path: ptr,\n /** Input: The path of the file or directory to inspect. */\n path_len: usize,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the timestamps of a file or directory. */\nexport declare function path_filestat_set_times(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to operate on. */\n path: ptr,\n /** Input: The path of the file or directory to operate on. */\n path_len: usize,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Create a hard link. */\nexport declare function path_link(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n old_flags: lookupflags,\n /** Input: The source path from which to link. */\n old_path: ptr,\n /** Input: The source path from which to link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path at which to create the hard link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the hard link. */\n new_path_len: usize\n): errno;\n\n/** Open a file or directory. */\nexport declare function path_open(\n /** Input: The working directory at which the resolution of the path starts. */\n dirfd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n dirflags: lookupflags,\n /** Input: The path of the file or directory to open. */\n path: ptr,\n /** Input: The length of the path of the file or directory to open. */\n path_len: usize,\n /** Input: The method by which to open the file. */\n oflags: oflags,\n /** Input: The initial base rights that apply to operations using the file descriptor itself. */\n fs_rights_base: rights,\n /** Input: The initial inheriting rights that apply to file descriptors derived from it. */\n fs_rights_inheriting: rights,\n /** Input: The initial flags of the file descriptor. */\n fs_flags: fdflags,\n /** Output: The file descriptor of the file that has been opened. */\n fd: ptr\n): errno;\n\n/** Read the contents of a symbolic link. */\nexport declare function path_readlink(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path of the symbolic link from which to read. */\n path: ptr,\n /** Input: The length of the path of the symbolic link from which to read. */\n path_len: usize,\n /** Input: The buffer to which to write the contents of the symbolic link. */\n buf: ptr,\n /** Input: The length of the buffer to which to write the contents of the symbolic link. */\n buf_len: usize,\n /** Output: The number of bytes placed in the buffer. */\n buf_used: ptr\n): errno;\n\n/** Remove a directory. */\nexport declare function path_remove_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a directory to remove. */\n path: ptr,\n /** Input: The length of the path to a directory to remove. */\n path_len: usize\n): errno;\n\n/** Rename a file or directory. */\nexport declare function path_rename(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: The source path of the file or directory to rename. */\n old_path: ptr,\n /** Input: The length of the source path of the file or directory to rename. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path to which to rename the file or directory. */\n new_path: ptr,\n /** Input: The length of the destination path to which to rename the file or directory. */\n new_path_len: usize\n): errno;\n\n/** Create a symbolic link. */\nexport declare function path_symlink(\n /** Input: The contents of the symbolic link. */\n old_path: ptr,\n /** Input: The length of the contents of the symbolic link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The destination path at which to create the symbolic link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the symbolic link. */\n new_path_len: usize\n): errno;\n\n/** Unlink a file. */\nexport declare function path_unlink_file(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a file to unlink. */\n path: ptr,\n /** Input: The length of the path to a file to unlink. */\n path_len: usize\n): errno;\n\n/** Concurrently poll for the occurrence of a set of events. */\nexport declare function poll_oneoff(\n /** Input: The events to which to subscribe. */\n in_: ptr>,\n /** Input: The events that have occurred. */\n out: ptr>,\n /** Input: Both the number of subscriptions and events. */\n nsubscriptions: usize,\n /** Output: The number of events stored. */\n nevents: ptr\n): errno;\n\n/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */\nexport declare function proc_exit(\n /** Input: The exit code returned by the process. */\n rval: u32\n): void;\n\n/** Send a signal to the process of the calling thread. */\nexport declare function proc_raise(\n /** Input: The signal condition to trigger. */\n sig: signal\n): errno;\n\n/** Write high-quality random data into a buffer. */\nexport declare function random_get(\n /** Input: The buffer to fill with random data. */\n buf: usize,\n /** Input: The length of the buffer to fill with random data. */\n buf_len: usize\n): errno;\n\n/** Temporarily yield execution of the calling thread. */\nexport declare function sched_yield(): errno;\n\n/** Receive a message from a socket. */\nexport declare function sock_recv(\n /** Input: The socket on which to receive data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n ri_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to store data. */\n ri_data_len: usize,\n /** Input: Message flags. */\n ri_flags: riflags,\n /** Output: Number of bytes stored in `ri_data`. */\n ro_datalen: ptr,\n /** Output: Message flags. */\n ro_flags: ptr\n): errno;\n\n/** Send a message on a socket. */\nexport declare function sock_send(\n /** Input: The socket on which to send data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to retrieve data */\n si_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to retrieve data */\n si_data_len: usize,\n /** Input: Message flags. */\n si_flags: siflags,\n /** Output: Number of bytes transmitted. */\n so_datalen: ptr\n): errno;\n\n/** Shut down socket send and receive channels. */\nexport declare function sock_shutdown(\n /** Input: The socket on which to shutdown channels. */\n sock: fd,\n /** Input: Which channels on the socket to shut down. */\n how: sdflags\n): errno;\n\n// === Types ======================================================================================\n\n/** File or memory access pattern advisory information. */\nexport namespace advice {\n /** The application has no advice to give on its behavior with respect to the specified data. */\n // @ts-ignore: decorator\n @inline\n export const NORMAL: advice = 0;\n /** The application expects to access the specified data sequentially from lower offsets to higher offsets. */\n // @ts-ignore: decorator\n @inline\n export const SEQUENTIAL : advice = 1;\n /** The application expects to access the specified data in a random order. */\n // @ts-ignore: decorator\n @inline\n export const RANDOM: advice = 2;\n /** The application expects to access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const WILLNEED: advice = 3;\n /** The application expects that it will not access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const DONTNEED: advice = 4;\n /** The application expects to access the specified data once and then not reuse it thereafter. */\n // @ts-ignore: decorator\n @inline\n export const NOREUSE: advice = 5;\n}\nexport type advice = u8;\n\n/** Identifiers for clocks. */\nexport namespace clockid {\n /** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */\n // @ts-ignore: decorator\n @inline\n export const REALTIME: clockid = 0;\n /** The store-wide monotonic clock. Absolute value has no meaning. */\n // @ts-ignore: decorator\n @inline\n export const MONOTONIC: clockid = 1;\n /** The CPU-time clock associated with the current process. */\n // @ts-ignore: decorator\n @inline\n export const PROCESS_CPUTIME_ID: clockid = 2;\n /** The CPU-time clock associated with the current thread. */\n // @ts-ignore: decorator\n @inline\n export const THREAD_CPUTIME_ID: clockid = 3;\n}\nexport type clockid = u32;\n\n/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */\nexport type device = u64;\n\n/** A reference to the offset of a directory entry. */\nexport type dircookie = u64;\n\n/** A directory entry. */\n@unmanaged export class dirent {\n /** The offset of the next directory entry stored in this directory. */\n next: dircookie;\n /** The serial number of the file referred to by this directory entry. */\n ino: inode;\n /** The length of the name of the directory entry. */\n namlen: u32;\n /** The type of the file referred to by this directory entry. */\n type: filetype;\n private __padding0: u16;\n}\n\n/** Error codes returned by functions. */\nexport namespace errno {\n /** No error occurred. System call completed successfully. */\n // @ts-ignore: decorator\n @inline\n export const SUCCESS: errno = 0;\n /** Argument list too long. */\n // @ts-ignore: decorator\n @inline\n export const TOOBIG: errno = 1;\n /** Permission denied. */\n // @ts-ignore: decorator\n @inline\n export const ACCES: errno = 2;\n /** Address in use. */\n // @ts-ignore: decorator\n @inline\n export const ADDRINUSE: errno = 3;\n /** Address not available. */\n // @ts-ignore: decorator\n @inline\n export const ADDRNOTAVAIL: errno = 4;\n /** Address family not supported. */\n // @ts-ignore: decorator\n @inline\n export const AFNOSUPPORT: errno = 5;\n /** Resource unavailable, or operation would block. */\n // @ts-ignore: decorator\n @inline\n export const AGAIN: errno = 6;\n /** Connection already in progress. */\n // @ts-ignore: decorator\n @inline\n export const ALREADY: errno = 7;\n /** Bad file descriptor. */\n // @ts-ignore: decorator\n @inline\n export const BADF: errno = 8;\n /** Bad message. */\n // @ts-ignore: decorator\n @inline\n export const BADMSG: errno = 9;\n /** Device or resource busy. */\n // @ts-ignore: decorator\n @inline\n export const BUSY: errno = 10;\n /** Operation canceled. */\n // @ts-ignore: decorator\n @inline\n export const CANCELED: errno = 11;\n /** No child processes. */\n // @ts-ignore: decorator\n @inline\n export const CHILD: errno = 12;\n /** Connection aborted. */\n // @ts-ignore: decorator\n @inline\n export const CONNABORTED: errno = 13;\n /** Connection refused. */\n // @ts-ignore: decorator\n @inline\n export const CONNREFUSED: errno = 14;\n /** Connection reset. */\n // @ts-ignore: decorator\n @inline\n export const CONNRESET: errno = 15;\n /** Resource deadlock would occur. */\n // @ts-ignore: decorator\n @inline\n export const DEADLK: errno = 16;\n /** Destination address required. */\n // @ts-ignore: decorator\n @inline\n export const DESTADDRREQ: errno = 17;\n /** Mathematics argument out of domain of function. */\n // @ts-ignore: decorator\n @inline\n export const DOM: errno = 18;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const DQUOT: errno = 19;\n /** File exists. */\n // @ts-ignore: decorator\n @inline\n export const EXIST: errno = 20;\n /** Bad address. */\n // @ts-ignore: decorator\n @inline\n export const FAULT: errno = 21;\n /** File too large. */\n // @ts-ignore: decorator\n @inline\n export const FBIG: errno = 22;\n /** Host is unreachable. */\n // @ts-ignore: decorator\n @inline\n export const HOSTUNREACH: errno = 23;\n /** Identifier removed. */\n // @ts-ignore: decorator\n @inline\n export const IDRM: errno = 24;\n /** Illegal byte sequence. */\n // @ts-ignore: decorator\n @inline\n export const ILSEQ: errno = 25;\n /** Operation in progress. */\n // @ts-ignore: decorator\n @inline\n export const INPROGRESS: errno = 26;\n /** Interrupted function. */\n // @ts-ignore: decorator\n @inline\n export const INTR: errno = 27;\n /** Invalid argument. */\n // @ts-ignore: decorator\n @inline\n export const INVAL: errno = 28;\n /** I/O error. */\n // @ts-ignore: decorator\n @inline\n export const IO: errno = 29;\n /** Socket is connected. */\n // @ts-ignore: decorator\n @inline\n export const ISCONN: errno = 30;\n /** Is a directory. */\n // @ts-ignore: decorator\n @inline\n export const ISDIR: errno = 31;\n /** Too many levels of symbolic links. */\n // @ts-ignore: decorator\n @inline\n export const LOOP: errno = 32;\n /** File descriptor value too large. */\n // @ts-ignore: decorator\n @inline\n export const MFILE: errno = 33;\n /** Too many links. */\n // @ts-ignore: decorator\n @inline\n export const MLINK: errno = 34;\n /** Message too large. */\n // @ts-ignore: decorator\n @inline\n export const MSGSIZE: errno = 35;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const MULTIHOP: errno = 36;\n /** Filename too long. */\n // @ts-ignore: decorator\n @inline\n export const NAMETOOLONG: errno = 37;\n /** Network is down. */\n // @ts-ignore: decorator\n @inline\n export const NETDOWN: errno = 38;\n /** Connection aborted by network. */\n // @ts-ignore: decorator\n @inline\n export const NETRESET: errno = 39;\n /** Network unreachable. */\n // @ts-ignore: decorator\n @inline\n export const NETUNREACH: errno = 40;\n /** Too many files open in system. */\n // @ts-ignore: decorator\n @inline\n export const NFILE: errno = 41;\n /** No buffer space available. */\n // @ts-ignore: decorator\n @inline\n export const NOBUFS: errno = 42;\n /** No such device. */\n // @ts-ignore: decorator\n @inline\n export const NODEV: errno = 43;\n /** No such file or directory. */\n // @ts-ignore: decorator\n @inline\n export const NOENT: errno = 44;\n /** Executable file format error. */\n // @ts-ignore: decorator\n @inline\n export const NOEXEC: errno = 45;\n /** No locks available. */\n // @ts-ignore: decorator\n @inline\n export const NOLCK: errno = 46;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const NOLINK: errno = 47;\n /** Not enough space. */\n // @ts-ignore: decorator\n @inline\n export const NOMEM: errno = 48;\n /** No message of the desired type. */\n // @ts-ignore: decorator\n @inline\n export const NOMSG: errno = 49;\n /** Protocol not available. */\n // @ts-ignore: decorator\n @inline\n export const NOPROTOOPT: errno = 50;\n /** No space left on device. */\n // @ts-ignore: decorator\n @inline\n export const NOSPC: errno = 51;\n /** Function not supported. */\n // @ts-ignore: decorator\n @inline\n export const NOSYS: errno = 52;\n /** The socket is not connected. */\n // @ts-ignore: decorator\n @inline\n export const NOTCONN: errno = 53;\n /** Not a directory or a symbolic link to a directory. */\n // @ts-ignore: decorator\n @inline\n export const NOTDIR: errno = 54;\n /** Directory not empty. */\n // @ts-ignore: decorator\n @inline\n export const NOTEMPTY: errno = 55;\n /** State not recoverable. */\n // @ts-ignore: decorator\n @inline\n export const NOTRECOVERABLE: errno = 56;\n /** Not a socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSOCK: errno = 57;\n /** Not supported, or operation not supported on socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSUP: errno = 58;\n /** Inappropriate I/O control operation. */\n // @ts-ignore: decorator\n @inline\n export const NOTTY: errno = 59;\n /** No such device or address. */\n // @ts-ignore: decorator\n @inline\n export const NXIO: errno = 60;\n /** Value too large to be stored in data type. */\n // @ts-ignore: decorator\n @inline\n export const OVERFLOW: errno = 61;\n /** Previous owner died. */\n // @ts-ignore: decorator\n @inline\n export const OWNERDEAD: errno = 62;\n /** Operation not permitted. */\n // @ts-ignore: decorator\n @inline\n export const PERM: errno = 63;\n /** Broken pipe. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: errno = 64;\n /** Protocol error. */\n // @ts-ignore: decorator\n @inline\n export const PROTO: errno = 65;\n /** Protocol not supported. */\n // @ts-ignore: decorator\n @inline\n export const PROTONOSUPPORT: errno = 66;\n /** Protocol wrong type for socket. */\n // @ts-ignore: decorator\n @inline\n export const PROTOTYPE: errno = 67;\n /** Result too large. */\n // @ts-ignore: decorator\n @inline\n export const RANGE: errno = 68;\n /** Read-only file system. */\n // @ts-ignore: decorator\n @inline\n export const ROFS: errno = 69;\n /** Invalid seek. */\n // @ts-ignore: decorator\n @inline\n export const SPIPE: errno = 70;\n /** No such process. */\n // @ts-ignore: decorator\n @inline\n export const SRCH: errno = 71;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const STALE: errno = 72;\n /** Connection timed out. */\n // @ts-ignore: decorator\n @inline\n export const TIMEDOUT: errno = 73;\n /** Text file busy. */\n // @ts-ignore: decorator\n @inline\n export const TXTBSY: errno = 74;\n /** Cross-device link. */\n // @ts-ignore: decorator\n @inline\n export const XDEV: errno = 75;\n /** Extension: Capabilities insufficient. */\n // @ts-ignore: decorator\n @inline\n export const NOTCAPABLE: errno = 76;\n}\nexport type errno = u16;\n\n/** An event that occurred. */\n@unmanaged export abstract class event {\n /** User-provided value that got attached to `subscription#userdata`. */\n userdata: userdata;\n /** If non-zero, an error that occurred while processing the subscription request. */\n error: errno;\n /* The type of the event that occurred. */\n type: eventtype;\n private __padding0: u16;\n}\n\n/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\n@unmanaged export class rwevent extends event {\n /* The number of bytes available for reading or writing. */\n nbytes: filesize;\n /* The state of the file descriptor. */\n flags: eventrwflags;\n private __padding1: u32;\n}\n\n/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\nexport namespace eventrwflags {\n /** The peer of this socket has closed or disconnected. */\n // @ts-ignore: decorator\n @inline\n export const HANGUP: eventrwflags = 1;\n}\nexport type eventrwflags = u16;\n\n/** Type of a subscription to an event or its occurrence. */\nexport namespace eventtype {\n /** The time value of clock has reached the timestamp. */\n // @ts-ignore: decorator\n @inline\n export const CLOCK: eventtype = 0;\n /** File descriptor has data available for reading. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: eventtype = 1;\n /** File descriptor has capacity available for writing */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: eventtype = 2;\n}\nexport type eventtype = u8;\n\n/** Exit code generated by a process when exiting. */\nexport type exitcode = u32;\n\n/** A file descriptor number. */\nexport type fd = u32;\n\n/** File descriptor flags. */\nexport namespace fdflags {\n /** Append mode: Data written to the file is always appended to the file's end. */\n // @ts-ignore: decorator\n @inline\n export const APPEND: fdflags = 1;\n /** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */\n // @ts-ignore: decorator\n @inline\n export const DSYNC: fdflags = 2;\n /** Non-blocking mode. */\n // @ts-ignore: decorator\n @inline\n export const NONBLOCK: fdflags = 4;\n /** Synchronized read I/O operations. */\n // @ts-ignore: decorator\n @inline\n export const RSYNC: fdflags = 8;\n /** Write according to synchronized I/O file integrity completion. */\n // @ts-ignore: decorator\n @inline\n export const SYNC: fdflags = 16;\n}\nexport type fdflags = u16;\n\n/** File descriptor attributes. */\n@unmanaged export class fdstat {\n /** File type. */\n filetype: filetype;\n /** File descriptor flags. */\n flags: fdflags;\n /** Rights that apply to this file descriptor. */\n rights_base: rights;\n /** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */\n rights_inheriting: rights;\n}\n\n/** Relative offset within a file. */\nexport type filedelta = i64;\n\n/** Non-negative file size or length of a region within a file. */\nexport type filesize = u64;\n\n/** File attributes. */\n@unmanaged export class filestat {\n /** Device ID of device containing the file. */\n dev: device;\n /** File serial number. */\n ino: inode;\n /** File type. */\n filetype: filetype;\n /** Number of hard links to the file. */\n nlink: linkcount;\n /** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */\n size: filesize;\n /** Last data access timestamp. */\n atim: timestamp;\n /** Last data modification timestamp. */\n mtim: timestamp;\n /** Last file status change timestamp. */\n ctim: timestamp;\n}\n\n/** The type of a file descriptor or file. */\nexport namespace filetype {\n /** The type of the file descriptor or file is unknown or is different from any of the other types specified. */\n // @ts-ignore: decorator\n @inline\n export const UNKNOWN: filetype = 0;\n /** The file descriptor or file refers to a block device inode. */\n // @ts-ignore: decorator\n @inline\n export const BLOCK_DEVICE: filetype = 1;\n /** The file descriptor or file refers to a character device inode. */\n // @ts-ignore: decorator\n @inline\n export const CHARACTER_DEVICE: filetype = 2;\n /** The file descriptor or file refers to a directory inode. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: filetype = 3;\n /** The file descriptor or file refers to a regular file inode. */\n // @ts-ignore: decorator\n @inline\n export const REGULAR_FILE: filetype = 4;\n /** The file descriptor or file refers to a datagram socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_DGRAM: filetype = 5;\n /** The file descriptor or file refers to a byte-stream socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_STREAM: filetype = 6;\n /** The file refers to a symbolic link inode. */\n // @ts-ignore: decorator\n @inline\n export const SYMBOLIC_LINK: filetype = 7;\n}\nexport type filetype = u8;\n\n/** Which file time attributes to adjust. */\nexport namespace fstflags {\n /** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM: fstflags = 1;\n /** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM_NOW: fstflags = 2;\n /** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM: fstflags = 4;\n /** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM_NOW: fstflags = 8;\n}\nexport type fstflags = u16;\n\n/** File serial number that is unique within its file system. */\nexport type inode = u64;\n\n/** A region of memory for scatter/gather reads. */\n@unmanaged export class iovec {\n /** The address of the buffer to be filled. */\n buf: usize;\n /** The length of the buffer to be filled. */\n buf_len: usize;\n}\n\n/** Number of hard links to an inode. */\nexport type linkcount = u32;\n\n/** Flags determining the method of how paths are resolved. */\nexport namespace lookupflags {\n /** As long as the resolved path corresponds to a symbolic link, it is expanded. */\n // @ts-ignore: decorator\n @inline\n export const SYMLINK_FOLLOW: lookupflags = 1;\n}\nexport type lookupflags = u32;\n\n/** Open flags. */\nexport namespace oflags {\n /** Create file if it does not exist. */\n // @ts-ignore: decorator\n @inline\n export const CREAT: oflags = 1;\n /** Fail if not a directory. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: oflags = 2;\n /** Fail if file already exists. */\n // @ts-ignore: decorator\n @inline\n export const EXCL: oflags = 4;\n /** Truncate file to size 0. */\n // @ts-ignore: decorator\n @inline\n export const TRUNC: oflags = 8;\n}\nexport type oflags = u16;\n\n// TODO: undocumented\nexport namespace preopentype {\n // @ts-ignore: decorator\n @inline\n export const DIR: preopentype = 0;\n}\nexport type preopentype = u8;\n\n// TODO: undocumented\nexport abstract class prestat {\n type: preopentype;\n}\n\n// TODO: undocumented\nexport class dirprestat extends prestat {\n name_len: usize;\n}\n\n/** Flags provided to `sock_recv`. */\nexport namespace riflags {\n /** Returns the message without removing it from the socket's receive queue. */\n // @ts-ignore: decorator\n @inline\n export const PEEK: riflags = 1;\n /** On byte-stream sockets, block until the full amount of data can be returned. */\n // @ts-ignore: decorator\n @inline\n export const WAITALL: riflags = 2;\n}\nexport type riflags = u16;\n\n/** File descriptor rights, determining which actions may be performed. */\nexport namespace rights {\n /** The right to invoke `fd_datasync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_DATASYNC: rights = 1;\n /** The right to invoke `fd_read` and `sock_recv`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: rights = 2;\n /** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SEEK: rights = 4;\n /** The right to invoke `fd_fdstat_set_flags`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FDSTAT_SET_FLAGS: rights = 8;\n /** The right to invoke `fd_sync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SYNC: rights = 16;\n /** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */\n // @ts-ignore: decorator\n @inline\n export const FD_TELL: rights = 32;\n /** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: rights = 64;\n /** The right to invoke `fd_advise`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ADVISE: rights = 128;\n /** The right to invoke `fd_allocate`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ALLOCATE: rights = 256;\n /** The right to invoke `path_create_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_DIRECTORY: rights = 512;\n /** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_FILE: rights = 1024;\n /** The right to invoke `path_link` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_SOURCE: rights = 2048;\n /** The right to invoke `path_link` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_TARGET: rights = 4096;\n /** The right to invoke `path_open`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_OPEN: rights = 8192;\n /** The right to invoke `fd_readdir`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READDIR: rights = 16384;\n /** The right to invoke `path_readlink`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_READLINK: rights = 32768;\n /** The right to invoke `path_rename` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_SOURCE: rights = 65536;\n /** The right to invoke `path_rename` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_TARGET: rights = 131072;\n /** The right to invoke `path_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_GET: rights = 262144;\n /** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_SIZE: rights = 524288;\n /** The right to invoke `path_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_TIMES: rights = 1048576;\n /** The right to invoke `fd_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_GET: rights = 2097152;\n /** The right to invoke `fd_filestat_set_size`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_SIZE: rights = 4194304;\n /** The right to invoke `fd_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_TIMES: rights = 8388608;\n /** The right to invoke `path_symlink`. */\n // @ts-ignore: decorator\n @inline\n export const RIGHT_PATH_SYMLINK: rights = 16777216;\n /** The right to invoke `path_remove_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_REMOVE_DIRECTORY: rights = 33554432;\n /** The right to invoke `path_unlink_file`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_UNLINK_FILE: rights = 67108864;\n /** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */\n // @ts-ignore: decorator\n @inline\n export const POLL_FD_READWRITE: rights = 134217728;\n /** The right to invoke `sock_shutdown`. */\n // @ts-ignore: decorator\n @inline\n export const SOCK_SHUTDOWN: rights = 268435456;\n}\nexport type rights = u64;\n\n/** Flags returned by `sock_recv`. */\nexport namespace roflags {\n /** Message data has been truncated. */\n // @ts-ignore: decorator\n @inline\n export const DATA_TRUNCATED: roflags = 1;\n}\nexport type roflags = u16;\n\n/** Which channels on a socket to shut down. */\nexport namespace sdflags {\n /** Disables further receive operations. */\n // @ts-ignore: decorator\n @inline\n export const RD: sdflags = 1;\n /** Disables further send operations. */\n // @ts-ignore: decorator\n @inline\n export const WR: sdflags = 2;\n}\nexport type sdflags = u8;\n\n/** Flags provided to `sock_send`. */\nexport namespace siflags {\n // As there are currently no flags defined, it must be set to zero.\n}\nexport type siflags = u16;\n\n/** Signal condition. */\nexport namespace signal {\n /** Hangup. */\n // @ts-ignore: decorator\n @inline\n export const HUP: signal = 1;\n /** Terminate interrupt signal. */\n // @ts-ignore: decorator\n @inline\n export const INT: signal = 2;\n /** Terminal quit signal. */\n // @ts-ignore: decorator\n @inline\n export const QUIT: signal = 3;\n /** Illegal instruction. */\n // @ts-ignore: decorator\n @inline\n export const ILL: signal = 4;\n /** Trace/breakpoint trap. */\n // @ts-ignore: decorator\n @inline\n export const TRAP: signal = 5;\n /** Process abort signal. */\n // @ts-ignore: decorator\n @inline\n export const ABRT: signal = 6;\n /** Access to an undefined portion of a memory object. */\n // @ts-ignore: decorator\n @inline\n export const BUS: signal = 7;\n /** Erroneous arithmetic operation. */\n // @ts-ignore: decorator\n @inline\n export const FPE: signal = 8;\n /** Kill. */\n // @ts-ignore: decorator\n @inline\n export const KILL: signal = 9;\n /** User-defined signal 1. */\n // @ts-ignore: decorator\n @inline\n export const USR1: signal = 10;\n /** Invalid memory reference. */\n // @ts-ignore: decorator\n @inline\n export const SEGV: signal = 11;\n /** User-defined signal 2. */\n // @ts-ignore: decorator\n @inline\n export const USR2: signal = 12;\n /** Write on a pipe with no one to read it. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: signal = 13;\n /** Alarm clock. */\n // @ts-ignore: decorator\n @inline\n export const ALRM: signal = 14;\n /** Termination signal. */\n // @ts-ignore: decorator\n @inline\n export const TERM: signal = 15;\n /** Child process terminated, stopped, or continued. */\n // @ts-ignore: decorator\n @inline\n export const CHLD: signal = 16;\n /** Continue executing, if stopped. */\n // @ts-ignore: decorator\n @inline\n export const CONT: signal = 17;\n /** Stop executing. */\n // @ts-ignore: decorator\n @inline\n export const STOP: signal = 18;\n /** Terminal stop signal. */\n // @ts-ignore: decorator\n @inline\n export const TSTP: signal = 19;\n /** Background process attempting read. */\n // @ts-ignore: decorator\n @inline\n export const TTIN: signal = 20;\n /** Background process attempting write. */\n // @ts-ignore: decorator\n @inline\n export const TTOU: signal = 21;\n /** High bandwidth data is available at a socket. */\n // @ts-ignore: decorator\n @inline\n export const URG: signal = 22;\n /** CPU time limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XCPU: signal = 23;\n /** File size limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XFSZ: signal = 24;\n /** Virtual timer expired. */\n // @ts-ignore: decorator\n @inline\n export const VTALRM: signal = 25;\n // @ts-ignore: decorator\n @inline\n export const PROF: signal = 26;\n // @ts-ignore: decorator\n @inline\n export const WINCH: signal = 27;\n // @ts-ignore: decorator\n @inline\n export const POLL: signal = 28;\n // @ts-ignore: decorator\n @inline\n export const PWR: signal = 29;\n /** Bad system call. */\n // @ts-ignore: decorator\n @inline\n export const SYS: signal = 30;\n}\nexport type signal = u8;\n\n/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */\nexport namespace subclockflags {\n /** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */\n // @ts-ignore: decorator\n @inline\n export const ABSTIME: subclockflags = 1;\n}\nexport type subclockflags = u16;\n\n/** Subscription to an event. */\n@unmanaged export abstract class subscription {\n /** User-provided value that is attached to the subscription. */\n userdata: userdata;\n /** The type of the event to which to subscribe. */\n type: eventtype;\n private __padding0: u32;\n}\n\n/* Subscription to an event of type `eventtype.CLOCK`.**/\n@unmanaged export class clocksubscription extends subscription {\n /** The user-defined unique identifier of the clock. */\n identifier: userdata;\n /** The clock against which to compare the timestamp. */\n clock_id: clockid;\n /** The absolute or relative timestamp. */\n timeout: timestamp;\n /** The amount of time that the implementation may wait additionally to coalesce with other events. */\n precision: timestamp;\n /** Flags specifying whether the timeout is absolute or relative. */\n flags: subclockflags;\n private __padding1: u32;\n}\n\n/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/\n@unmanaged export class fdsubscription extends subscription {\n /** The file descriptor on which to wait for it to become ready for reading or writing. */\n fd: fd;\n}\n\n/** Timestamp in nanoseconds. */\nexport type timestamp = u64;\n\n/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */\nexport type userdata = u64;\n\n/** The position relative to which to set the offset of the file descriptor. */\nexport namespace whence {\n /** Seek relative to current position. */\n // @ts-ignore: decorator\n @inline\n export const CUR: whence = 0;\n /** Seek relative to end-of-file. */\n // @ts-ignore: decorator\n @inline\n export const END: whence = 1;\n /** Seek relative to start-of-file. */\n // @ts-ignore: decorator\n @inline\n export const SET: whence = 2;\n}\nexport type whence = u8;\n","bindings/wasi":'export * from "./wasi_unstable";\n',builtins:'// @ts-ignore: decorator\n@builtin\nexport declare function isInteger(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFloat(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isBoolean(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isSigned(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isReference(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isString(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArray(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArrayLike(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFunction(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isNullable(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isDefined(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isConstant(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isManaged(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isVoid(): boolean;\n\n// @ts-ignore\n@builtin\nexport declare function lengthof(func?: T): i32;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function clz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ctz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function popcnt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function abs(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function max(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function min(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ceil(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function floor(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function nearest(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function reinterpret(value: number): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sqrt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function trunc(value: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function load(offset: usize, immOffset?: usize, immAlign?: usize): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function store(offset: usize, value: void, immOffset?: usize, immAlign?: usize): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sizeof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function alignof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function offsetof(fieldName?: string): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function idof(): u32;\n\n// @ts-ignore\n@builtin\nexport declare function nameof(): string;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unreachable(): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function changetype(value: void): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unchecked(expr: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_indirect(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_direct(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function instantiate(...args: void[]): T;\n\nexport namespace atomic {\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: T, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n\n // @ts-ignore: decorator\n @builtin\n export declare function notify(ptr: usize, count: i32): i32;\n}\n\n// @ts-ignore: decorator\n@lazy\nexport const enum AtomicWaitResult {\n OK = 0,\n NOT_EQUAL = 1,\n TIMED_OUT = 2\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8(value: void): i8;\n\nexport namespace i8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i8 = -128;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i8 = 127;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16(value: void): i16;\n\nexport namespace i16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i16 = -32768;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i16 = 32767;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32(value: void): i32;\n\nexport namespace i32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i32 = -2147483648;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i32 = 2147483647;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f32(value: f32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64(value: void): i64;\n\nexport namespace i64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i64 = -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i64 = 9223372036854775807;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f64(value: f64): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw32 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isize(value: void): isize;\n\nexport namespace isize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u8(value: void): u8;\n\nexport namespace u8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u8 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u8 = 255;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u16(value: void): u16;\n\nexport namespace u16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u16 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u16 = 65535;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u32(value: void): u32;\n\nexport namespace u32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u32 = 4294967295;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u64(value: void): u64;\n\nexport namespace u64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function usize(value: void): usize;\n\nexport namespace usize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: usize = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function bool(value: void): bool;\n\nexport namespace bool {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: bool = false;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: bool = true;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32(value: void): f32;\n\nexport namespace f32 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x34000000); // 0x1p-23f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x00000001); // 0x0.000001p+0f\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7F7FFFFF); // 0x1.fffffep+127f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x00800000); // 0x1p-126f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f32, y: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i32(value: i32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f32): f32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f32): f32;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64(value: void): f64;\n\nexport namespace f64 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x3CB0000000000000); // 0x1p-52\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x0000000000000001); // 0x0.0000000000001p+0\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7FEFFFFFFFFFFFFF); // 0x1.fffffffffffffp+1023\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x0010000000000000); // 0x1p-1022\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f64, y: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i64(value: i64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f64): f64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f64): f64;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function v128(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace v128 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128; // except i64\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function not(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function bitselect(v1: v128, v2: v128, c: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8x16(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace i8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\n\nexport namespace i16x8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\n\nexport namespace i32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f32x4_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f32x4_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64x2(a: i64, b: i64): v128;\n\nexport namespace i64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f64x2_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f64x2_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\n\nexport namespace f32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i32x4(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i32x4(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64x2(a: f64, b: f64): v128;\n\nexport namespace f64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i64x2(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i64x2(a: v128): v128;\n}\n\nexport namespace v8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(\n a: v128, b: v128,\n l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8,\n l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8\n ): v128;\n}\n\n// @ts-ignore: decorator\n@external("env", "abort")\ndeclare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n// @ts-ignore: decorator\n@external("env", "trace")\ndeclare function trace(\n message: string,\n n?: i32,\n a0?: f64,\n a1?: f64,\n a2?: f64,\n a3?: f64,\n a4?: f64\n): void;\n',compat:"\nexport type ReturnType = returnof;\n",dataview:'import { BLOCK_MAXSIZE } from "./rt/common";\nimport { ArrayBuffer } from "./arraybuffer";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\n\n// TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte\n\nexport class DataView {\n\n private data: ArrayBuffer;\n private dataStart: usize;\n private dataLength: i32;\n\n constructor(\n buffer: ArrayBuffer,\n byteOffset: i32 = 0,\n byteLength: i32 = buffer.byteLength\n ) {\n if (\n i32(byteLength > BLOCK_MAXSIZE) |\n i32(byteOffset + byteLength > buffer.byteLength)\n ) throw new RangeError(E_INVALIDLENGTH);\n this.data = buffer; // retains\n var dataStart = changetype(buffer) + byteOffset;\n this.dataStart = dataStart;\n this.dataLength = byteLength;\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n getFloat32(byteOffset: i32, littleEndian: boolean = false): f32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getFloat64(byteOffset: i32, littleEndian: boolean = false): f64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getInt8(byteOffset: i32): i8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getInt16(byteOffset: i32, littleEndian: boolean = false): i16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getInt32(byteOffset: i32, littleEndian: boolean = false): i32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint8(byteOffset: i32): u8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getUint16(byteOffset: i32, littleEndian: boolean = false): u16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint32(byteOffset: i32, littleEndian: boolean = false): u32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setFloat32(byteOffset: i32, value: f32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setFloat64(byteOffset: i32, value: f64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setInt8(byteOffset: i32, value: i8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setInt16(byteOffset: i32, value: i16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setInt32(byteOffset: i32, value: i32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint8(byteOffset: i32, value: u8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setUint16(byteOffset: i32, value: u16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint32(byteOffset: i32, value: u32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n // Non-standard additions that make sense in WebAssembly, but won\'t work in JS:\n\n getInt64(byteOffset: i32, littleEndian: boolean = false): i64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i64 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint64(byteOffset: i32, littleEndian: boolean = false): u64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setInt64(byteOffset: i32, value: i64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint64(byteOffset: i32, value: u64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n toString(): string {\n return "[object DataView]";\n }\n}\n',date:'import {\n UTC as Date_UTC,\n now as Date_now\n} from "./bindings/Date";\n\nexport class Date {\n\n @inline static UTC(\n year: i32,\n month: i32 = 0,\n day: i32 = 1,\n hour: i32 = 0,\n minute: i32 = 0,\n second: i32 = 0,\n millisecond: i64 = 0\n ): i64 {\n return Date_UTC(year, month, day, hour, minute, second, millisecond);\n }\n\n @inline static now(): i64 {\n return Date_now();\n }\n\n private value: i64;\n\n constructor(value: i64) {\n this.value = value;\n }\n\n getTime(): i64 {\n return this.value;\n }\n\n setTime(value: i64): i64 {\n this.value = value;\n return value;\n }\n}\n',diagnostics:"// @ts-ignore: decorator\n@builtin\nexport declare function ERROR(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function WARNING(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function INFO(message?: string): void;\n",error:'export class Error {\n\n name: string = "Error";\n stack: string = ""; // TODO\n\n constructor(\n public message: string = ""\n ) {}\n\n toString(): string {\n var message = this.message;\n return message.length\n ? this.name + ": " + message\n : this.name;\n }\n}\n\nexport class RangeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "RangeError";\n }\n}\n\nexport class TypeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "TypeError";\n }\n}\n\nexport class SyntaxError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "SyntaxError";\n }\n}\n',fixedarray:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";\n\n// NOTE: DO NOT USE YET!\n\n// TODO: FixedArray with S being the static size, i.e. `new FixedArray`.\n// Then hard-wire this special type to the compiler and do static length checks instead :)\n\nexport class FixedArray {\n [key: number]: T;\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n var outSize = length << alignof();\n var out = __alloc(outSize, idof>());\n memory.fill(out, 0, outSize);\n return changetype>(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof();\n }\n\n @operator("[]") private __get(index: i32): T {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n this.__unchecked_set(index, value);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(changetype(this) + (index << alignof()));\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = changetype(this) + (index << alignof());\n let oldValue = load(offset);\n if (changetype(value) != oldValue) {\n store(offset, __retain(changetype(value)));\n __release(changetype(oldValue));\n }\n } else {\n store(changetype(this) + (index << alignof()), value);\n }\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = changetype(this);\n let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n }\n}\n',heap:"// @ts-ignore: decorator\n@builtin\nexport declare const __heap_base: usize;\n",iterator:"export abstract class Iterable {\n // ?\n}\n\n@sealed\nexport abstract class Iterator {\n\n // private constructor(iterable: Iterable) {\n // }\n\n // TODO: these need to evaluate the classId at the respective reference in order to obtain the\n // next value, i.e. arrays work differently than maps. we'd then have:\n //\n // ╒═══════════════════ Iterator layout (32-bit) ══════════════════╕\n // 3 2 1\n // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n // │ index │\n // ├─────────────────────────────────────────────────────────┬───┬─┤\n // │ reference │ 0 │D│\n // └─────────────────────────────────────────────────────────┴───┴─┘\n // D: Done flag\n\n // get value(this: u64): T {\n // ?\n // }\n\n // next(this: u64): Iterator {\n // ?\n // }\n\n done(this: u64): bool {\n return (this & 1);\n }\n}\n",map:'/// \n\nimport { HASH } from "./util/hash";\nimport { E_KEYNOTFOUND } from "util/error";\n\n// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a map entry. */\n@unmanaged class MapEntry {\n key: K;\n value: V;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K/V is <= 32-bits\n const maxkv = sizeof() > sizeof() ? sizeof() : sizeof();\n const align = (maxkv > sizeof() ? maxkv : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Map {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // MapEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() {\n this.clear();\n }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: K, hashCode: u32): MapEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n has(key: K): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n @operator("[]")\n get(key: K): V {\n var entry = this.find(key, HASH(key));\n if (!entry) throw new Error(E_KEYNOTFOUND); // cannot represent `undefined`\n return entry.value;\n }\n\n @operator("[]=")\n set(key: K, value: V): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (entry) {\n if (isManaged()) {\n let oldRef = changetype(entry.value);\n if (changetype(value) != oldRef) {\n entry.value = changetype(__retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n entry.value = value;\n }\n } else {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n let entries = this.entries;\n entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE());\n // link with the map\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n entry.value = isManaged()\n ? changetype(__retain(changetype(value)))\n : value;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n delete(key: K): bool {\n var entry = this.find(key, HASH(key));\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key));\n if (isManaged()) __release(changetype(entry.value));\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr);\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr);\n newEntry.key = oldEntry.key;\n newEntry.value = oldEntry.value;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n keys(): K[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var keys = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n keys.push(entry.key);\n }\n }\n return keys;\n }\n\n values(): V[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.value);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Map]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged() || isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n if (isManaged()) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n if (isManaged()) {\n let val = changetype(entry.value);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',math:'import * as JSMath from "./bindings/Math";\nexport { JSMath };\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from "./builtins";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n// TODO: sin, cos, tan for Math namespace\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n return NativeMath.exp(x - kln2) * scale * scale;\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7ff;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u >> 63);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_32: u32;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx >> 31) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var e = reinterpret(x) >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n if (hx >> 31) return -x;\n return x;\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var s = u >> 63;\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n switch (m) {\n case 0: return PI / 4;\n case 1: return -PI / 4;\n case 2: return 3 * PI / 4;\n case 3: return -3 * PI / 4;\n }\n } else {\n switch (m) {\n case 0: return 0.0;\n case 1: return -0.0;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // TODO\n return JSMath.cos(x);\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var hx = (reinterpret(x) >> 32);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n var hi: f64, lo: f64 = 0;\n var k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n var xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n var xq = xs * xs;\n var c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n var y = 1.0 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32 & 0x7FFFFFFF);\n var k = 0, sign_ = (u >> 63);\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign_) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = (ux >> 52);\n var ey = (uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || (hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = (u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = (hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln2hi;\n var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n var y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n var u_ = reinterpret(x);\n var hx = (u_ >> 32);\n var lx = u_;\n u_ = reinterpret(y);\n var hy = (u_ >> 32);\n var ly = u_;\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n var yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let kcond = k > 20;\n let offset = select(52, 20, kcond) - k;\n let Ly = select(ly, iy, kcond);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n var ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n var s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n var t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n var j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret((((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n var y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = (u_ >> 32);\n var i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret((n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = (reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n\n export function seedRandom(value: i64): void {\n assert(value);\n random_seeded = true;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n }\n\n export function random(): f64 { // see: v8/src/base/random-number-generator.cc\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = ((s0 + s1) & 0x000FFFFFFFFFFFFF) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f64): f64 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n // In ECMAScript all NaN values are indistinguishable from each other\n // so we need handle NaN and negative NaN in similar way\n return ((reinterpret(x) >>> 63) & i32(x == x));\n }\n\n export function sin(x: f64): f64 { // TODO\n return JSMath.sin(x);\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var absx = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n t = expm1(absx);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // TODO\n return JSMath.tan(x);\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n /* make sure final n < -53 to avoid double\n rounding in the subnormal range */\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx << 63;\n return reinterpret(ux);\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = (ux >> 63);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return sx ? -x : x;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy\nconst PIO2_TABLE: u64[] = [\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n];\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret((0x7F + (k >> 1)) << 23);\n return NativeMathf.exp(x - kln2) * scale * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n const bits = PIO2_TABLE;\n\n var offset = (u >> 23) - 152;\n var index = offset >> 6;\n var shift = offset & 63;\n\n var b0 = unchecked(bits[index + 0]);\n var b1 = unchecked(bits[index + 1]);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = unchecked(bits[index + 2]);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product: u64 = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q: i32 = ((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const pi2hi = reinterpret(0x3FF921FB50000000); // 1.57079631090164184570\n const pi2lo = reinterpret(0x3E5110B4611A6263); // 1.58932547735281966916e-8\n const _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { /* π * 0x1p28 */\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const S1 = reinterpret(0xBFC5555554CBAC77); // -0x15555554cbac77.0p-55\n const S2 = reinterpret(0x3F811110896EFBB2); // 0x111110896efbb2.0p-59\n const S3 = reinterpret(0xBF2A00F9E2CAE774); // -0x1a00f9e2cae774.0p-65\n const S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return ((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const C0 = reinterpret(0xBFDFFFFFFD0C5E81); // -0x1ffffffd0c5e81.0p-54\n const C1 = reinterpret(0x3FA55553E1053A42); // 0x155553e1053a42.0p-57\n const C2 = reinterpret(0xBF56C087E80F1E27); // -0x16c087e80f1e27.0p-62\n const C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return (((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n\n const T0 = reinterpret(0x3FD5554D3418C99F); /* 0x15554d3418c99f.0p-54 */\n const T1 = reinterpret(0x3FC112FD38999F72); /* 0x1112fd38999f72.0p-55 */\n const T2 = reinterpret(0x3FAB54C91D865AFE); /* 0x1b54c91d865afe.0p-57 */\n const T3 = reinterpret(0x3F991DF3908C33CE); /* 0x191df3908c33ce.0p-58 */\n const T4 = reinterpret(0x3F685DADFCECF44E); /* 0x185dadfcecf44e.0p-61 */\n const T5 = reinterpret(0x3F8362B9BF971BCD); /* 0x1362b9bf971bcd.0p-59 */\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return (odd ? -1 / r : r);\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000);\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx >> 31) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) {\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (a < 0x3F800000 + (12 << 23)) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000);\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = (pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000);\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = (((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n switch (m) {\n case 0: return pi / 4;\n case 1: return -pi / 4;\n case 2: return 3 * pi / 4;\n case 3: return -3 * pi / 4;\n }\n } else {\n switch (m) {\n case 0: return 0;\n case 1: return -0;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const c1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const c2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const c3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n /* raise inexact if x != 0 */\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix > 0x4016cbe3) { /* |x| ~> 3π/4 */\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix > 0x40afeddf) { /* |x| ~> 7π/4 */\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n /* cos(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000);\n var hx = reinterpret(x);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx >= 0x42B17218) {\n if (!sign_) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n var hi: f32, lo: f32;\n var k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n var xx = x * x;\n var c = x - xx * (P1 + xx * P2);\n var y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x42B17180), // 8.8721679688e+01f\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign_ = (u >> 31);\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign_) return -1;\n if (x > o_threshold) {\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt((x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n var u = reinterpret(x);\n var k = 0;\n if (u < 0x00800000 || (u >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (u >> 31) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) return x;\n else if (u == 0x3F800000) return 0;\n u += 0x3F800000 - 0x3F3504F3;\n k += (u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ix = reinterpret(hi);\n ix &= 0xFFFFF000;\n hi = reinterpret(ix);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n var ix = reinterpret(x);\n var c: f32 = 0, f: f32 = 0;\n var k: i32 = 1;\n if (ix < 0x3ED413D0 || (ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = (iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k: i32 = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n var u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n var lo: f32 = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 { // see: musl/src/math/powf.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3F15C000), // 5.84960938e-01f\n dp_l1 = reinterpret(0x35D1CFDC), // 1.56322085e-06f\n two24 = reinterpret(0x4B800000), // 16777216f\n huge = reinterpret(0x7149F2CA), // 1.0e+30f\n tiny = reinterpret(0x0DA24260), // 1.0e-30f\n L1 = reinterpret(0x3F19999A), // 6.0000002384e-01f\n L2 = reinterpret(0x3EDB6DB7), // 4.2857143283e-01f\n L3 = reinterpret(0x3EAAAAAB), // 3.3333334327e-01f\n L4 = reinterpret(0x3E8BA305), // 2.7272811532e-01f\n L5 = reinterpret(0x3E6C3255), // 2.3066075146e-01f\n L6 = reinterpret(0x3E53F142), // 2.0697501302e-01f\n P1 = reinterpret(0x3E2AAAAB), // 1.6666667163e-01f\n P2 = reinterpret(0xBB360B61), // -2.7777778450e-03f\n P3 = reinterpret(0x388AB355), // 6.6137559770e-05f\n P4 = reinterpret(0xB5DDEA0E), // -1.6533901999e-06f\n P5 = reinterpret(0x3331BB4C), // 4.1381369442e-08f\n lg2 = reinterpret(0x3F317218), // 6.9314718246e-01f\n lg2_h = reinterpret(0x3F317200), // 6.93145752e-01f\n lg2_l = reinterpret(0x35BFBE8C), // 1.42860654e-06f\n ovt = reinterpret(0x3338AA3C), // 4.2995665694e-08f\n cp = reinterpret(0x3F76384F), // 9.6179670095e-01\n cp_h = reinterpret(0x3F764000), // 9.6191406250e-01\n cp_l = reinterpret(0xB8F623C6), // -1.1736857402e-04\n ivln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00\n ivln2_h = reinterpret(0x3FB8AA00), // 1.4426879883e+00\n ivln2_l = reinterpret(0x36ECA570), // 7.0526075433e-06\n inv3 = reinterpret(0x3EAAAAAB); // 0.333333333333\n var hx = reinterpret(x);\n var hy = reinterpret(y);\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if (iy == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3F800000) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if (ix > 0x7F800000 || iy > 0x7F800000) return x + y; // NaN if either arg is NaN\n var yisint = 0, j: i32, k: i32;\n if (hx < 0) {\n if (iy >= 0x4B800000) yisint = 2;\n else if (iy >= 0x3F800000) {\n k = (iy >> 23) - 0x7F;\n let ki = 23 - k;\n j = iy >> ki;\n if ((j << ki) == iy) yisint = 2 - (j & 1);\n }\n }\n if (iy == 0x7F800000) { // y is +-inf\n if (ix == 0x3F800000) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix > 0x3F800000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3F800000) return hy >= 0 ? x : 1.0 / x;\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3F000000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n var ax = builtin_abs(x);\n var z: f32;\n if (ix == 0x7F800000 || ix == 0 || ix == 0x3F800000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3F800000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n }\n else if (yisint == 1) z = -z;\n }\n return z;\n }\n var sn = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) sn = -1.0;\n }\n var t1: f32, t2: f32, r: f32, s: f32, t: f32, u: f32, v: f32, w: f32, p_h: f32, p_l: f32;\n var n: i32, is: i32;\n if (iy > 0x4D000000) {\n if (ix < 0x3F7FFFF8) return hy < 0 ? sn * huge * huge : sn * tiny * tiny;\n if (ix > 0x3F800007) return hy > 0 ? sn * huge * huge : sn * tiny * tiny;\n t = ax - 1;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = v - (t1 - u);\n } else {\n let s2: f32, s_h: f32, s_l: f32, t_h: f32, t_l: f32;\n n = 0;\n if (ix < 0x00800000) {\n ax *= two24;\n n -= 24;\n ix = reinterpret(ax);\n }\n n += (ix >> 23) - 0x7F;\n j = ix & 0x007FFFFF;\n ix = j | 0x3F800000;\n if (j <= 0x1CC471) k = 0;\n else if (j < 0x5DB3D7) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00800000;\n }\n ax = reinterpret(ix);\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n s = u * v;\n s_h = s;\n is = reinterpret(s_h);\n s_h = reinterpret(is & 0xFFFFF000);\n is = ((ix >> 1) & 0xFFFFF000) | 0x20000000;\n t_h = reinterpret(is + 0x00400000 + (k << 21));\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = s * s;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + s);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n is = reinterpret(t_h);\n t_h = reinterpret(is & 0xFFFFF000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * s;\n p_h = u + v;\n is = reinterpret(p_h);\n p_h = reinterpret(is & 0xFFFFF000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = (((z_h + z_l) + dp_h) + t);\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n is = reinterpret(y);\n var y1 = reinterpret(is & 0xFFFFF000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n j = reinterpret(z);\n if (j > 0x43000000) {\n return sn * huge * huge;\n } else if (j == 0x43000000) {\n if (p_l + ovt > z - p_h) return sn * huge * huge;\n } else if ((j & 0x7FFFFFFF) > 0x43160000) {\n return sn * tiny * tiny;\n } else if (j == 0xC3160000) {\n if (p_l <= z - p_h) return sn * tiny * tiny;\n }\n var i = j & 0x7FFFFFFF;\n k = (i >> 23) - 0x7F;\n n = 0;\n if (i > 0x3F000000) {\n n = j + (0x00800000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 23) - 0x7F;\n t = reinterpret(n & ~(0x007FFFFF >> k));\n n = ((n & 0x007FFFFF) | 0x00800000) >> (23 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n is = reinterpret(t);\n t = reinterpret(is & 0xFFFF8000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = reinterpret(z);\n j += n << 23;\n if ((j >> 23) <= 0) z = scalbn(z, n);\n else z = reinterpret(j);\n return sn * z;\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f32): f32 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n // @ts-ignore: type\n return ((reinterpret(x) >>> 31) & (x == x));\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const s2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var absx = reinterpret(u);\n var t: f32;\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n t = expm1(absx);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2f(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const t1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const t2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const t3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n /* tan(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* argument reduction */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx;\n return reinterpret(ux);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = (ux >> 31);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // q++;\n }\n return sx ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const s2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7fffffff;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n /* -sin(x + c) is not correct if x+c could be 0: -0 vs +0 */\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n\n switch (n & 3) {\n case 0: {\n sincos_sin = s;\n sincos_cos = c;\n break;\n }\n case 1: {\n sincos_sin = c;\n sincos_cos = -s;\n break;\n }\n case 2: {\n sincos_sin = -s;\n sincos_cos = -c;\n break;\n }\n case 3:\n default: {\n sincos_sin = -c;\n sincos_cos = s;\n break;\n }\n }\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 5) {\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i32): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 6) {\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow32f(x: f32, e: i32): f32 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out: f32 = 1;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n\nexport function ipow64f(x: f64, e: i32): f64 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out = 1.0;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n',memory:'import { memcmp, memmove, memset } from "./util/memory";\nimport { E_NOTIMPLEMENTED } from "./util/error";\n\n/** Memory manager interface. */\nexport namespace memory {\n\n /** Gets the size of the memory in pages. */\n // @ts-ignore: decorator\n @builtin\n export declare function size(): i32;\n\n /** Grows the memory by the given size in pages and returns the previous size in pages. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function grow(pages: i32): i32;\n\n /** Fills a section in memory with the specified byte value. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function fill(dst: usize, c: u8, n: usize): void {\n memset(dst, c, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Copies a section of memory to another. Has move semantics. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function copy(dst: usize, src: usize, n: usize): void {\n memmove(dst, src, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Initializes a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Drops a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function drop(segmentIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Repeats a section of memory at a specific address. */\n // @ts-ignore: decorator\n @unsafe\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void {\n var index: usize = 0;\n var total = srcLength * count;\n while (index < total) {\n memory.copy(dst + index, src, srcLength);\n index += srcLength;\n }\n }\n\n /** Compares a section of memory to another. */\n // @ts-ignore: decorator\n @inline\n export function compare(vl: usize, vr: usize, n: usize): i32 {\n return memcmp(vl, vr, n);\n }\n}\n',number:'import { itoa, dtoa } from "./util/number";\nimport { strtol } from "./util/string";\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const NaN: f64 = 0 / 0;\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const Infinity: f64 = 1 / 0;\n\nexport function isNaN(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value != value;\n}\n\nexport function isFinite(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value - value == 0;\n}\n\n@sealed @unmanaged\nexport abstract class I8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i8 = i8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i8 = i8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i8 {\n return strtol(value, radix);\n }\n\n toString(this: i8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i16 = i16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i16 = i16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i16 {\n return strtol(value, radix);\n }\n\n toString(this: i16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i32 = i32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i32 = i32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i32 {\n return strtol(value, radix);\n }\n\n toString(this: i32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i64 = i64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i64 = i64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i64 {\n return strtol(value, radix);\n }\n\n toString(this: i64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Isize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: isize = isize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: isize = isize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): isize {\n return strtol(value, radix);\n }\n\n toString(this: isize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u8 = u8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u8 = u8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u8 {\n return strtol(value, radix);\n }\n\n toString(this: u8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u16 = u16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u16 = u16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u16 {\n return strtol(value, radix);\n }\n\n toString(this: u16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u32 = u32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u32 = u32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u32 {\n return strtol(value, radix);\n }\n\n toString(this: u32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u64 = u64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u64 = u64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u64 {\n return strtol(value, radix);\n }\n\n toString(this: u64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Usize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: usize = usize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: usize = usize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): usize {\n return strtol(value, radix);\n }\n\n toString(this: usize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Bool {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: bool = bool.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: bool = bool.MAX_VALUE;\n\n toString(this: bool): String {\n // TODO: radix?\n return this ? "true" : "false";\n }\n}\n\nexport { Bool as Boolean };\n\n@sealed @unmanaged\nexport abstract class F32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f32 = f32.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f32 = f32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f32 = f32.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f32 = f32.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f32 = f32.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f32 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f32 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f32 = NaN;\n\n static isNaN(value: f32): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f32): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f32): bool {\n return abs(value) <= f32.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f32): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f32 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f32 {\n return parseFloat(value);\n }\n\n toString(this: f32): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class F64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f64 = f64.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f64 = f64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f64 = f64.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f64 = f64.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f64 = f64.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f64 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f64 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f64 = NaN;\n\n static isNaN(value: f64): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f64): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f64): bool {\n return abs(value) <= f64.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f64): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f64 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f64 {\n return parseFloat(value);\n }\n\n toString(this: f64, radix: i32 = 0): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\nexport { F64 as Number };\n',polyfills:"export function bswap(value: T): T {\n if (isInteger()) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n }\n if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n }\n if (sizeof() == 8) {\n let a = (value >> 8) & 0x00FF00FF00FF00FF;\n let b = (value & 0x00FF00FF00FF00FF) << 8;\n let v = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n }\n assert(false);\n return value;\n}\n\nexport function bswap16(value: T): T {\n if (isInteger() && sizeof() <= 4) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n } else if (sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n }\n assert(false);\n return value;\n}\n",regexp:'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',rt:'import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo";\nimport { E_INDEXOUTOFRANGE } from "./util/error";\nimport { BLOCK, BLOCK_OVERHEAD } from "./rt/common";\nimport { ArrayBufferView } from "./arraybuffer";\n\n// @ts-ignore: decorator\n@builtin\nexport declare const __rtti_base: usize;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_globals(cookie: u32): void;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_members(ref: usize, cookie: u32): void;\n\n// @ts-ignore: decorator\n@unsafe\nexport function __typeinfo(id: u32): TypeinfoFlags {\n var ptr = __rtti_base;\n if (id > load(ptr)) throw new Error(E_INDEXOUTOFRANGE);\n return changetype(ptr + sizeof() + id * offsetof()).flags;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __instanceof(ref: usize, superId: u32): bool { // keyword\n var id = changetype(ref - BLOCK_OVERHEAD).rtId;\n var ptr = __rtti_base;\n if (id <= load(ptr)) {\n do if (id == superId) return true;\n while (id = changetype(ptr + sizeof() + id * offsetof()).base);\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize {\n var array = __alloc(offsetof(), id);\n var bufferSize = length << alignLog2;\n var buffer = __alloc(bufferSize, idof());\n store(array, __retain(buffer), offsetof("data"));\n changetype(array).dataStart = buffer;\n changetype(array).dataLength = bufferSize;\n store(changetype(array), length, offsetof("length_"));\n if (data) memory.copy(buffer, data, bufferSize);\n return array;\n}\n\n// These are provided by the respective implementation, included as another entry file by asc:\n\n// @builtin @unsafe\n// export declare function __alloc(size: usize, id: u32): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __realloc(ref: usize, size: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __free(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __retain(ref: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __release(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __collect(): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __visit(ref: usize, cookie: u32): void;\n',"rt/common":"// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n\n// ╒════════════════ Common block layout (32-bit) ═════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime size │ -4\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ ... │ ref\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize; // WASM64 needs adaption\n /** Garbage collector info. */\n gcInfo: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD = (offsetof() + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n","rt/index-full":'export { __alloc } from "rt/tlsf";\nexport { __retain, __release, __collect } from "rt/pure";\nexport { __rtti_base } from "rt";\n',"rt/index-half":'import "rt/index-full";\n',"rt/index-none":'import "rt/index-stub";\n',"rt/index-stub":'export { __alloc, __retain, __release, __collect } from "rt/stub";\nexport { __rtti_base } from "rt";\n',"rt/pure":'import { DEBUG, BLOCK_OVERHEAD } from "rt/common";\nimport { Block, freeBlock, ROOT } from "rt/tlsf";\nimport { TypeinfoFlags } from "shared/typeinfo";\nimport { onincrement, ondecrement, onfree, onalloc } from "./rtrace";\n\n/////////////////////////// A Pure Reference Counting Garbage Collector ///////////////////////////\n// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf\n\n// ╒══════════════════════ GC Info structure ══════════════════════╕\n// │ 3 2 1 │\n// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│\n// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │B│color│ refCount │\n// └─┴─────┴───────────────────────────────────────────────────────┘\n// B: buffered\n\n// @ts-ignore: decorator\n@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1);\n// @ts-ignore: decorator\n@inline const COLOR_BITS = 3;\n// @ts-ignore: decorator\n@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS;\n// @ts-ignore: decorator\n@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1;\n\n// ╒════════╤═══════════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├────────┼──────────────────────────────────────────────────────┤\n// │ BLACK │ In use or free │\n// │ GRAY │ Possible member of cycle │\n// │ WHITE │ Member of garbage cycle │\n// │ PURPLE │ Possible root of cycle │\n// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │\n// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │\n// └────────┴──────────────────────────────────────────────────────┘\n// Acyclic detection has been decoupled, hence no GREEN.\n\n// @ts-ignore: decorator\n@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_RED: u32 = 4 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT;\n\n// @ts-ignore: decorator\n@inline const VISIT_DECREMENT = 1; // guard 0\n// @ts-ignore: decorator\n@inline const VISIT_MARKGRAY = 2;\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 3;\n// @ts-ignore: decorator\n@inline const VISIT_SCANBLACK = 4;\n// @ts-ignore: decorator\n@inline const VISIT_COLLECTWHITE = 5;\n\n// @ts-ignore: decorator\n@global @unsafe\nfunction __visit(ref: usize, cookie: i32): void {\n if (ref < __heap_base) return;\n var s = changetype(ref - BLOCK_OVERHEAD);\n switch (cookie) {\n case VISIT_DECREMENT: {\n decrement(s);\n break;\n }\n case VISIT_MARKGRAY: {\n if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0);\n s.gcInfo = s.gcInfo - 1;\n markGray(s);\n break;\n }\n case VISIT_SCAN: {\n scan(s);\n break;\n }\n case VISIT_SCANBLACK: {\n let info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if ((info & COLOR_MASK) != COLOR_BLACK) {\n scanBlack(s);\n }\n break;\n }\n case VISIT_COLLECTWHITE: {\n collectWhite(s);\n break;\n }\n default: if (DEBUG) assert(false);\n }\n}\n\n/** Increments the reference count of the specified block by one.*/\nfunction increment(s: Block): void {\n var info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if (isDefined(ASC_RTRACE)) onincrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n}\n\n/** Decrements the reference count of the specified block by one, possibly freeing it. */\nfunction decrement(s: Block): void {\n var info = s.gcInfo;\n var rc = info & REFCOUNT_MASK;\n if (isDefined(ASC_RTRACE)) ondecrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n if (rc == 1) {\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT);\n if (!(info & BUFFERED_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0;\n }\n } else {\n if (DEBUG) assert(rc > 0);\n if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) {\n s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1);\n if (!(info & BUFFERED_MASK)) {\n appendRoot(s);\n }\n } else {\n s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1);\n }\n }\n}\n\n/** Buffer of possible roots. */\n// @ts-ignore: decorator\n@lazy var ROOTS: usize;\n/** Current absolute offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var CUR: usize = 0;\n/** Current absolute end offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var END: usize = 0;\n\n/** Appends a block to possible roots. */\nfunction appendRoot(s: Block): void {\n var cur = CUR;\n if (cur >= END) {\n growRoots(); // TBD: either that or pick a default and force collection on overflow\n cur = CUR;\n }\n store(cur, s);\n CUR = cur + sizeof();\n}\n\n/** Grows the roots buffer if it ran full. */\nfunction growRoots(): void {\n var oldRoots = ROOTS;\n var oldSize = CUR - oldRoots;\n var newSize = max(oldSize * 2, 64 << alignof());\n var newRoots = __alloc(newSize, 0);\n if (isDefined(ASC_RTRACE)) onfree(changetype(newRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n memory.copy(newRoots, oldRoots, oldSize);\n if (oldRoots) {\n if (isDefined(ASC_RTRACE)) onalloc(changetype(oldRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n __free(oldRoots);\n }\n ROOTS = newRoots;\n CUR = newRoots + oldSize;\n END = newRoots + newSize;\n}\n\n/** Collects cyclic garbage. */\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n\n // markRoots\n var roots = ROOTS;\n var cur = roots;\n for (let pos = cur, end = CUR; pos < end; pos += sizeof()) {\n let s = load(pos);\n let info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) {\n markGray(s);\n store(cur, s);\n cur += sizeof();\n } else {\n if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = info & ~BUFFERED_MASK;\n }\n }\n }\n CUR = cur;\n\n // scanRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n scan(load(pos));\n }\n\n // collectRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n let s = load(pos);\n s.gcInfo = s.gcInfo & ~BUFFERED_MASK;\n collectWhite(s);\n }\n CUR = roots;\n}\n\n/** Marks a block as gray (possible member of cycle) during the collection phase. */\nfunction markGray(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) != COLOR_GRAY) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY);\n }\n}\n\n/** Scans a block during the collection phase, determining whether it is garbage or not. */\nfunction scan(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_GRAY) {\n if ((info & REFCOUNT_MASK) > 0) {\n scanBlack(s);\n } else {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN);\n }\n }\n}\n\n/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */\nfunction scanBlack(s: Block): void {\n s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK);\n}\n\n/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */\nfunction collectWhite(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE);\n freeBlock(ROOT, s);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n if (ref > __heap_base) increment(changetype(ref - BLOCK_OVERHEAD));\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n if (ref > __heap_base) decrement(changetype(ref - BLOCK_OVERHEAD));\n}\n',"rt/rtrace":'import { BLOCK } from "./common";\n\nexport declare function onalloc(s: BLOCK): void;\nexport declare function onincrement(s: BLOCK): void;\nexport declare function ondecrement(s: BLOCK): void;\nexport declare function onfree(s: BLOCK): void;\n',"rt/stub":'import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common";\n\n// @ts-ignore: decorator\n@lazy\nvar startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@lazy\nvar offset: usize = startOffset;\n\nfunction maybeGrowMemory(newOffset: usize): void {\n // assumes newOffset is aligned\n var pagesBefore = memory.size();\n var maxOffset = pagesBefore << 16;\n if (newOffset > maxOffset) {\n let pagesNeeded = ((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16;\n let pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory\n }\n }\n offset = newOffset;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __alloc(size: usize, id: u32): usize {\n if (size > BLOCK_MAXSIZE) unreachable();\n var ptr = offset + BLOCK_OVERHEAD;\n var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE);\n maybeGrowMemory(ptr + actualSize);\n var block = changetype(ptr - BLOCK_OVERHEAD);\n block.mmInfo = actualSize;\n if (DEBUG) block.gcInfo = -1;\n block.rtId = id;\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __realloc(ptr: usize, size: usize): usize {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n var actualSize = block.mmInfo;\n if (DEBUG) assert(block.gcInfo == -1);\n if (size > actualSize) {\n if (ptr + actualSize == offset) { // last block: grow\n if (size > BLOCK_MAXSIZE) unreachable();\n actualSize = (size + AL_MASK) & ~AL_MASK;\n maybeGrowMemory(ptr + actualSize);\n block.mmInfo = actualSize;\n } else { // copy to new block at least double the size\n actualSize = max((size + AL_MASK) & ~AL_MASK, actualSize << 1);\n let newPtr = __alloc(actualSize, block.rtId);\n memory.copy(newPtr, ptr, block.rtSize);\n block = changetype((ptr = newPtr) - BLOCK_OVERHEAD);\n }\n } else if (ptr + actualSize == offset) { // last block: shrink\n actualSize = (size + AL_MASK) & ~AL_MASK;\n offset = ptr + actualSize;\n block.mmInfo = actualSize;\n }\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __free(ptr: usize): void {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n if (DEBUG) assert(block.gcInfo == -1);\n if (ptr + block.mmInfo == offset) { // last block: discard\n offset = changetype(block);\n }\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nfunction __reset(): void { // special\n offset = startOffset;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ref: usize, cookie: u32): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n}\n',"rt/tlsf":"import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"rt/common\";\nimport { onfree, onalloc } from \"./rtrace\";\nimport { REFCOUNT_MASK } from \"./pure\";\n\n/////////////////////// The TLSF (Two-Level Segregate Fit) memory allocator ///////////////////////\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: usize = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: usize = (SL_BITS + AL_BITS);\n// @ts-ignore: decorator\n@inline const SB_SIZE: usize = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐\n// │ size │0│L│F│ ◄─┐ info\n// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │\n// │ │ │\n// │ ... additional runtime overhead ... │ │\n// │ │ │\n// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ = 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n let newSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = (blockInfo & TAGS_MASK) | newSize;\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n let newSize = (leftInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, left);\n left.mmInfo = blockInfo = (leftInfo & TAGS_MASK) | newSize;\n block = left;\n // 'back' is set below\n }\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) {\n assert(\n start <= end && // must be valid\n !(start & AL_MASK) && // must be aligned\n !(end & AL_MASK) // must be aligned\n );\n }\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n if (start - BLOCK_OVERHEAD == changetype(tail)) {\n start -= BLOCK_OVERHEAD;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - (BLOCK_OVERHEAD << 1);\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + size - BLOCK_OVERHEAD);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size >= BLOCK_MAXSIZE) throw new Error(\"allocation too large\");\n return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size\n}\n\n/** Initilizes the root structure. */\nexport function initializeRoot(): void {\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n addMemory(root, (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK, memory.size() << 16);\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = searchBlock(root, payloadSize);\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n block.gcInfo = 0; // RC=0\n // block.rtId = 0; // set by the caller (__alloc)\n block.rtSize = size;\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n if (DEBUG) {\n assert(\n !(blockInfo & FREE) && // must be used\n !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK\n );\n }\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= (blockInfo & ~TAGS_MASK)) {\n prepareBlock(root, block, payloadSize);\n block.rtSize = size;\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which\n // is immediately split though. does this trigger any assertions / issues?\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n block.rtSize = size;\n prepareBlock(root, block, payloadSize);\n return block;\n }\n }\n\n // otherwise move the block\n var newBlock = allocateBlock(root, size);\n newBlock.rtId = block.rtId;\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size);\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n assert(!(blockInfo & FREE)); // must be used (user might call through to this)\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize, id: u32): usize {\n var root = ROOT;\n if (!root) {\n initializeRoot();\n root = ROOT;\n }\n var block = allocateBlock(root, size);\n block.rtId = id;\n return changetype(block) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ref: usize, size: usize): usize {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n return changetype(reallocateBlock(ROOT, changetype(ref - BLOCK_OVERHEAD), size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ref: usize): void {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n freeBlock(ROOT, changetype(ref - BLOCK_OVERHEAD));\n}\n",set:'/// \n\nimport { HASH } from "./util/hash";\n\n// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a set entry. */\n@unmanaged class SetEntry {\n key: K;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K is <= 32-bits\n const align = (sizeof() > sizeof() ? sizeof() : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Set {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // SetEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() { this.clear(); }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: T, hashCode: u32): SetEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n @operator("[]")\n has(key: T): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n add(key: T): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (!entry) {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n entry = changetype>(changetype(this.entries) + this.entriesOffset++ * ENTRY_SIZE());\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n @operator("[]=")\n private __set(key: T, value: bool): void {\n if (value) this.add(key);\n else this.delete(key);\n }\n\n delete(key: T): bool {\n var entry = this.find(key, HASH(key)); // unmanaged!\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key)); // exact \'key\'\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr); // unmanaged!\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr); // unmanaged!\n newEntry.key = oldEntry.key;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n values(): T[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.key);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Set]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',"shared/feature":"// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","shared/target":"// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","shared/typeinfo":"// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n",string:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { compareImpl, strtol, strtod, isSpace } from "./util/string";\nimport { E_INVALIDLENGTH } from "./util/error";\nimport { ArrayBufferView } from "./arraybuffer";\nimport { idof } from "./builtins";\n\n@sealed export abstract class String {\n\n @lazy static readonly MAX_LENGTH: i32 = BLOCK_MAXSIZE >>> alignof();\n\n static fromCharCode(unit: i32, surr: i32 = -1): string {\n var hasSur = surr > 0;\n var out = __alloc(2 << i32(hasSur), idof());\n store(out, unit);\n if (hasSur) store(out, surr, 2);\n return changetype(out); // retains\n }\n\n static fromCodePoint(code: i32): string {\n assert(code <= 0x10FFFF);\n var hasSur = code > 0xFFFF;\n var out = __alloc(2 << i32(hasSur), idof());\n if (!hasSur) {\n store(out, code);\n } else {\n code -= 0x10000;\n let hi: u32 = (code >>> 10) + 0xD800;\n let lo: u32 = (code & 0x3FF) + 0xDC00;\n store(out, (hi << 16) | lo);\n }\n return changetype(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1;\n }\n\n @operator("[]") charAt(pos: i32): String {\n if (pos >= this.length) return changetype("");\n var out = __alloc(2, idof());\n store(out, load(changetype(this) + (pos << 1)));\n return changetype(out); // retains\n }\n\n charCodeAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (NaN)\n return load(changetype(this) + (pos << 1));\n }\n\n codePointAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (undefined)\n var first = load(changetype(this) + (pos << 1));\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) return first;\n var second = load(changetype(this) + ((pos + 1) << 1));\n if (second < 0xDC00 || second > 0xDFFF) return first;\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+") private static __concat(left: String, right: String): String {\n return select(left, changetype("null"), left !== null).concat(right);\n }\n\n concat(other: String): String {\n if (other === null) other = changetype("null");\n var thisSize: isize = this.length << 1;\n var otherSize: isize = other.length << 1;\n var outSize: usize = thisSize + otherSize;\n if (outSize == 0) return changetype("");\n var out = changetype(__alloc(outSize, idof())); // retains\n memory.copy(changetype(out), changetype(this), thisSize);\n memory.copy(changetype(out) + thisSize, changetype(other), otherSize);\n return out;\n }\n\n endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {\n if (search === null) return false;\n end = min(max(end, 0), this.length);\n var searchLength = search.length;\n var searchStart = end - searchLength;\n if (searchStart < 0) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n @operator("==") private static __eq(left: String | null, right: String | null): bool {\n if (left === right) return true;\n if (left === null || right === null) return false;\n var leftLength = left.length;\n if (leftLength != right.length) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(left, 0, right, 0, leftLength);\n }\n\n @operator.prefix("!")\n private static __not(str: String | null): bool {\n return str === null || !str.length;\n }\n\n @operator("!=")\n private static __ne(left: String | null, right: String | null): bool {\n return !this.__eq(left, right);\n }\n\n @operator(">") private static __gt(left: String | null, right: String | null): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!leftLength) return false;\n if (!rightLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0;\n }\n\n @operator(">=") private static __gte(left: String, right: String): bool {\n return !this.__lt(left, right);\n }\n\n @operator("<") private static __lt(left: String, right: String): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!rightLength) return false;\n if (!leftLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0;\n }\n\n @operator("<=") private static __lte(left: String, right: String): bool {\n return !this.__gt(left, right);\n }\n\n includes(search: String, start: i32 = 0): bool {\n return this.indexOf(search, start) != -1;\n }\n\n indexOf(search: String, start: i32 = 0): i32 {\n var searchLen = search.length;\n if (!searchLen) return 0;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len);\n for (len -= searchLen; searchStart <= len; ++searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n lastIndexOf(search: String, start: i32 = i32.MAX_VALUE): i32 {\n var searchLen = search.length;\n if (!searchLen) return this.length;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len - searchLen);\n for (; searchStart >= 0; --searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n startsWith(search: String, start: i32 = 0): bool {\n if (search === null) search = changetype("null");\n var len = this.length;\n var searchStart = min(max(start, 0), len);\n var searchLength = search.length;\n if (searchLength + searchStart > len) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) intStart = max(size + intStart, 0);\n var resultLength = min(max(end, 0), size - intStart);\n if (resultLength <= 0) return changetype("");\n var out = __alloc(resultLength << 1, idof());\n memory.copy(out, changetype(this) + intStart, resultLength);\n return changetype(out); // retains\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len: isize = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var fromPos = min(finalStart, finalEnd) << 1;\n var toPos = max(finalStart, finalEnd) << 1;\n len = toPos - fromPos;\n if (!len) return changetype("");\n if (!fromPos && toPos == this.length << 1) return this;\n var out = __alloc(len, idof());\n memory.copy(out, changetype(this) + fromPos, len);\n return changetype(out); // retains\n }\n\n trim(): String {\n var length = this.length;\n var size: usize = length << 1;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2; size -= 2;\n }\n if (!size) return changetype("");\n if (!offset && size == length << 1) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n @inline\n trimLeft(): String {\n return this.trimStart();\n }\n\n @inline\n trimRight(): String {\n return this.trimEnd();\n }\n\n trimStart(): String {\n var size = this.length << 1;\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2;\n }\n if (!offset) return this;\n size -= offset;\n if (!size) return changetype("");\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n trimEnd(): String {\n var originalSize = this.length << 1;\n var size = originalSize;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n if (!size) return changetype("");\n if (size == originalSize) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n return changetype(out); // retains\n }\n\n padStart(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var prependSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n if (prependSize > padSize) {\n let repeatCount = (prependSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = prependSize - restBase;\n memory.repeat(out, changetype(pad), padSize, repeatCount);\n memory.copy(out + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out, changetype(pad), prependSize);\n }\n memory.copy(out + prependSize, changetype(this), thisSize);\n return changetype(out); // retains\n }\n\n padEnd(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var appendSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n memory.copy(out, changetype(this), thisSize);\n if (appendSize > padSize) {\n let repeatCount = (appendSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = appendSize - restBase;\n memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount);\n memory.copy(out + thisSize + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out + thisSize, changetype(pad), appendSize);\n }\n return changetype(out); // retains\n }\n\n repeat(count: i32 = 0): String {\n var length = this.length;\n\n // Most browsers can\'t handle strings 1 << 28 chars or longer\n if (count < 0 || length * count > (1 << 28)) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n\n if (count == 0 || !length) return changetype("");\n if (count == 1) return this;\n var out = __alloc((length * count) << 1, idof());\n memory.repeat(out, changetype(this), length << 1, count);\n return changetype(out); // retains\n }\n\n replace(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var index: isize = this.indexOf(search);\n if (~index) {\n let rlen: usize = replacement.length;\n len -= slen;\n let olen = len + rlen;\n if (olen) {\n let out = __alloc(olen << 1, idof());\n memory.copy(out, changetype(this), index << 1);\n memory.copy(\n out + (index << 1),\n changetype(replacement),\n rlen << 1\n );\n memory.copy(\n out + ((index + rlen) << 1),\n changetype(this) + ((index + slen) << 1),\n (len - index) << 1\n );\n return changetype(out);\n }\n }\n return this;\n }\n\n replaceAll(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var rlen: usize = replacement.length;\n if (!slen) {\n if (!rlen) return this;\n // Special case: \'abc\'.replaceAll(\'\', \'-\') -> \'-a-b-c-\'\n let out = __alloc((len + (len + 1) * rlen) << 1, idof());\n memory.copy(out, changetype(replacement), rlen << 1);\n let offset = rlen;\n for (let i: usize = 0; i < len; ++i) {\n store(\n changetype(out) + (offset++ << 1),\n load(changetype(this) + (i << 1))\n );\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n }\n return changetype(out);\n }\n var prev: isize = 0, next: isize = 0;\n if (slen == rlen) {\n // Fast path when search and replacement have same length\n let size = len << 1;\n let out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n while (~(next = this.indexOf(search, prev))) {\n memory.copy(out + (next << 1), changetype(replacement), rlen << 1);\n prev = next + slen;\n }\n return changetype(out);\n }\n var out: usize = 0, offset: usize = 0, resLen = len;\n while (~(next = this.indexOf(search, prev))) {\n if (!out) out = __alloc(len << 1, idof());\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let chunk = next - prev;\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n chunk << 1\n );\n offset += chunk;\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n prev = next + slen;\n }\n if (offset) {\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let rest = len - prev;\n if (rest) {\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n rest << 1\n );\n }\n rest += offset;\n if (resLen > rest) out = __realloc(out, rest << 1);\n return changetype(out);\n }\n return this;\n }\n\n slice(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len = this.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end, len);\n len = end - start;\n if (len <= 0) return changetype("");\n var out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n return changetype(out); // retains\n }\n\n split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {\n if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n if (separator === null) return [this];\n var length: isize = this.length;\n var sepLen: isize = separator.length;\n if (limit < 0) limit = i32.MAX_VALUE;\n if (!sepLen) {\n if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n // split by chars\n length = min(length, limit);\n let result = __allocArray(length, alignof(), idof>());\n let resultStart = changetype(result).dataStart;\n for (let i: isize = 0; i < length; ++i) {\n let charStr = __alloc(2, idof());\n store(charStr, load(changetype(this) + (i << 1)));\n store(resultStart + (i << alignof()), charStr); // result[i] = charStr\n if (isManaged()) __retain(charStr);\n }\n return changetype>(result); // retains\n } else if (!length) {\n let result = __allocArray(1, alignof(), idof>());\n store(changetype(result).dataStart, changetype("")); // static ""\n return changetype>(result); // retains\n }\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n var end = 0, start = 0, i = 0;\n while (~(end = this.indexOf(separator, start))) {\n let len = end - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out));\n } else {\n result.push(changetype(""));\n }\n if (++i == limit) return changetype>(result); // retains\n start = end + sepLen;\n }\n if (!start) { // also means: loop above didn\'t do anything\n result.push(this);\n return changetype>(result); // retains\n }\n var len = length - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out)); // retains\n } else {\n result.push(changetype("")); // static ""\n }\n return changetype>(result); // retains\n // releases result\n }\n\n toString(): String {\n return this;\n }\n}\n\n// @ts-ignore: nolib\nexport type string = String;\n\nexport function parseInt(str: string, radix: i32 = 0): f64 {\n return strtol(str, radix);\n}\n\nexport function parseFloat(str: string): f64 {\n return strtod(str);\n}\n\n// Encoding helpers\nexport namespace String {\n\n export namespace UTF8 {\n\n export function byteLength(str: string, nullTerminated: bool = false): i32 {\n var strOff = changetype(str);\n var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var bufLen = nullTerminated ? 1 : 0;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n bufLen += 1; strOff += 2;\n } else if (c1 < 2048) {\n bufLen += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n if ((load(strOff, 2) & 0xFC00) == 0xDC00) {\n strOff += 4; bufLen += 4;\n continue;\n }\n }\n strOff += 2; bufLen += 3;\n }\n }\n return bufLen;\n }\n\n export function encode(str: string, nullTerminated: bool = false): ArrayBuffer {\n var strOff = changetype(str);\n var strEnd = changetype(str) + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(UTF8.byteLength(str, nullTerminated), idof());\n var bufOff = buf;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n store(bufOff, c1);\n bufOff += 1; strOff += 2;\n } else if (c1 < 2048) {\n store(bufOff, c1 >> 6 | 192);\n store(bufOff, c1 & 63 | 128, 1);\n bufOff += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n let c2 = load(strOff, 2);\n if ((c2 & 0xFC00) == 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n store(bufOff, c1 >> 18 | 240);\n store(bufOff, c1 >> 12 & 63 | 128, 1);\n store(bufOff, c1 >> 6 & 63 | 128, 2);\n store(bufOff, c1 & 63 | 128, 3);\n strOff += 4; bufOff += 4;\n continue;\n }\n }\n store(bufOff, c1 >> 12 | 224);\n store(bufOff, c1 >> 6 & 63 | 128, 1);\n store(bufOff, c1 & 63 | 128, 2);\n strOff += 2; bufOff += 3;\n }\n }\n if (nullTerminated) {\n assert(strOff <= strEnd);\n buf = __realloc(buf, bufOff - buf + 1);\n store(bufOff, 0);\n } else {\n assert(strOff == strEnd);\n }\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer, nullTerminated: bool = false): string {\n return decodeUnsafe(changetype(buf), buf.byteLength, nullTerminated);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated: bool = false): string {\n var bufOff = buf;\n var bufEnd = buf + len;\n assert(bufEnd >= bufOff); // guard wraparound\n var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte\n var strOff = str;\n while (bufOff < bufEnd) {\n let cp = load(bufOff++);\n if (cp < 128) {\n if (nullTerminated && !cp) break;\n store(strOff, cp);\n strOff += 2;\n } else if (cp > 191 && cp < 224) {\n if (bufEnd - bufOff < 1) break;\n store(strOff, (cp & 31) << 6 | load(bufOff++) & 63);\n strOff += 2;\n } else if (cp > 239 && cp < 365) {\n if (bufEnd - bufOff < 3) break;\n cp = (\n (cp & 7) << 18 |\n (load(bufOff) & 63) << 12 |\n (load(bufOff, 1) & 63) << 6 |\n load(bufOff, 2) & 63\n ) - 0x10000;\n bufOff += 3;\n store(strOff, 0xD800 + (cp >> 10));\n store(strOff, 0xDC00 + (cp & 1023), 2);\n strOff += 4;\n } else {\n if (bufEnd - bufOff < 2) break;\n store(strOff,\n (cp & 15) << 12 |\n (load(bufOff) & 63) << 6 |\n load(bufOff, 1) & 63\n );\n bufOff += 2; strOff += 2;\n }\n }\n return changetype(__realloc(str, strOff - str)); // retains\n }\n }\n\n export namespace UTF16 {\n\n export function byteLength(str: string): i32 {\n return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n }\n\n export function encode(str: string): ArrayBuffer {\n var size = changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(size, idof());\n memory.copy(buf, changetype(str), size);\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer): string {\n return decodeUnsafe(changetype(buf), buf.byteLength);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize): string {\n var str = __alloc(len &= ~1, idof());\n memory.copy(str, buf, len);\n return changetype(str); // retains\n }\n }\n}\n',symbol:'import { Map } from "./map";\n\n// @ts-ignore: decorator\n@lazy\nvar stringToId: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar idToString: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar nextId: usize = 12; // Symbol.unscopables + 1\n\n@unmanaged @sealed abstract class _Symbol {\n\n // TODO: all of the following default symbols are unused currently yet add to\n // binary size if #toString becomes compiled. Ultimately we\'ll most likely want\n // to remove the unsupported ones and only keep what\'s actually supported.\n\n // @ts-ignore: decorator\n @lazy\n static readonly hasInstance: symbol = changetype(1);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isConcatSpreadable: symbol = changetype(2);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isRegExp: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly iterator: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly match: symbol = changetype(4);\n\n // @ts-ignore: decorator\n @lazy\n static readonly replace: symbol = changetype(5);\n\n // @ts-ignore: decorator\n @lazy\n static readonly search: symbol = changetype(6);\n\n // @ts-ignore: decorator\n @lazy\n static readonly species: symbol = changetype(7);\n\n // @ts-ignore: decorator\n @lazy\n static readonly split: symbol = changetype(8);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toPrimitive: symbol = changetype(9);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toStringTag: symbol = changetype(10);\n\n // @ts-ignore: decorator\n @lazy\n static readonly unscopables: symbol = changetype(11);\n\n static for(key: string): symbol {\n if (!stringToId) { stringToId = new Map(); idToString = new Map(); }\n else if (stringToId.has(key)) return changetype(stringToId.get(key));\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n stringToId.set(key, id);\n idToString.set(id, key);\n return changetype(id);\n }\n\n static keyFor(sym: symbol): string | null {\n return idToString !== null && idToString.has(changetype(sym))\n ? idToString.get(changetype(sym))\n : null;\n }\n\n toString(): string {\n var id = changetype(this);\n var str = "";\n switch (id) {\n case 1: { str = "hasInstance"; break; }\n case 2: { str = "isConcatSpreadable"; break; }\n case 3: { str = "isRegExp"; break; }\n case 4: { str = "match"; break; }\n case 5: { str = "replace"; break; }\n case 6: { str = "search"; break; }\n case 7: { str = "species"; break; }\n case 8: { str = "split"; break; }\n case 9: { str = "toPrimitive"; break; }\n case 10: { str = "toStringTag"; break; }\n case 11: { str = "unscopables"; break; }\n default: {\n if (idToString !== null && idToString.has(id)) str = idToString.get(id);\n break;\n }\n }\n return "Symbol(" + str + ")";\n }\n}\n\nexport function Symbol(description: string | null = null): symbol {\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n return changetype(id);\n}\n\nexport type Symbol = _Symbol;\n\n// @ts-ignore: nolib\nexport type symbol = _Symbol;\n',table:'import { E_NOTIMPLEMENTED } from "./util/error";\n\nexport namespace table {\n\n export function copy(dst: u32, src: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function drop(elementIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n}\n',typedarray:'import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\nimport { idof } from "./builtins";\nimport { ArrayBufferView } from "./arraybuffer";\n\nexport class Int8Array extends ArrayBufferView {\n [key: number]: i8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): i8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: i8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8Array extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8ClampedArray extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return FILL(this, value, start, end);\n }\n\n sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray {\n return SORT(this, fn);\n }\n\n subarray(start: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray {\n return SUBARRAY(this, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int16Array extends ArrayBufferView {\n [key: number]: i16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint16Array extends ArrayBufferView {\n [key: number]: u16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int32Array extends ArrayBufferView {\n [key: number]: i32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint32Array extends ArrayBufferView {\n [key: number]: u32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int64Array extends ArrayBufferView {\n [key: number]: i64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint64Array extends ArrayBufferView {\n [key: number]: u64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float32Array extends ArrayBufferView {\n [key: number]: f32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float64Array extends ArrayBufferView {\n [key: number]: f64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILL(\n array: TArray,\n value: native,\n start: i32,\n end: i32\n): TArray {\n var dataStart = array.dataStart;\n var length = array.length;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (sizeof() == 1) {\n if (start < end) memory.fill(dataStart + start, value, (end - start));\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SORT(\n array: TArray,\n comparator: (a: T, b: T) => i32\n): TArray {\n var length = array.length;\n if (length <= 1) return array;\n var base = array.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b\n store(base, a); // arr[0] = a\n }\n return array;\n }\n SORT_IMPL(base, length, comparator);\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SUBARRAY(\n array: TArray,\n begin: i32,\n end: i32\n): TArray {\n var len = array.length;\n begin = begin < 0 ? max(len + begin, 0) : min(begin, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n end = max(end, begin);\n var out = changetype(__alloc(offsetof(), idof())); // retains\n out.data = array.data; // retains\n out.dataStart = array.dataStart + (begin << alignof());\n out.dataLength = (end - begin) << alignof();\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE_RIGHT(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = array.length - 1; i >= 0; i--) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction MAP(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => T,\n): TArray {\n var length = array.length;\n var dataStart = array.dataStart;\n var out = instantiate(length);\n var outDataStart = out.dataStart;\n for (let i = 0; i < length; i++) {\n store(\n outDataStart + (i << alignof()),\n fn(load(dataStart + (i << alignof())), i, array)\n );\n }\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FIND_INDEX(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): i32 {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return i;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INCLUDES(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): bool {\n return INDEX_OF(array, searchElement, fromIndex) >= 0;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0 || index >= length) return -1;\n if (index < 0) index = max(length + index, 0);\n var dataStart = array.dataStart;\n while (index < length) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n ++index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction LAST_INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0) return -1;\n if (index < 0) index = length + index; // no need to clamp\n else if (index >= length) index = length - 1;\n var dataStart = array.dataStart;\n while (index >= 0) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n --index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SOME(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return true;\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction EVERY(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) continue;\n return false;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FOREACH(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => void,\n): void {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n fn(load(dataStart + (i << alignof())), i, array);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REVERSE(array: TArray): TArray {\n var dataStart = array.dataStart;\n for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) {\n let frontPtr = dataStart + (front << alignof());\n let backPtr = dataStart + (back << alignof());\n let temp = load(frontPtr);\n store(frontPtr, load(backPtr));\n store(backPtr, temp);\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction WRAP(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): TArray {\n var bufferByteLength = buffer.byteLength;\n if (byteOffset >= bufferByteLength) {\n throw new RangeError(E_INDEXOUTOFRANGE);\n }\n var byteLength: i32;\n if (length < 0) {\n if (length == -1) {\n const mask = (1 << alignof() - 1);\n if (buffer.byteLength & mask) {\n throw new RangeError(E_INVALIDLENGTH);\n } else {\n byteLength = buffer.byteLength;\n }\n } else {\n throw new RangeError(E_INVALIDLENGTH);\n }\n } else {\n byteLength = length << alignof();\n }\n if (byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n var out = changetype(__alloc(offsetof(), idof()));\n out.data = buffer;\n out.dataLength = byteLength;\n out.dataStart = changetype(buffer) + byteOffset;\n return out;\n}\n',"util/error":'// Common error messages for use accross the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = "Index out of range";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = "Invalid length";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = "Array is empty";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = "Element type must be nullable if array is holey";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = "Not implemented";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = "Key does not exist";\n',"util/hash":"// @ts-ignore: decorator\n@inline\nexport function HASH(key: T): u32 {\n if (isString()) {\n return hashStr(changetype(key));\n } else if (isReference()) {\n if (sizeof() == 4) return hash32(changetype(key));\n if (sizeof() == 8) return hash64(changetype(key));\n } else if (isFloat()) {\n if (sizeof() == 4) return hash32(reinterpret(f32(key)));\n if (sizeof() == 8) return hash64(reinterpret(f64(key)));\n } else {\n if (sizeof() == 1) return hash8 (u32(key));\n if (sizeof() == 2) return hash16(u32(key));\n if (sizeof() == 4) return hash32(u32(key));\n if (sizeof() == 8) return hash64(u64(key));\n }\n return unreachable();\n}\n\n// FNV-1a 32-bit as a starting point, see: http://isthe.com/chongo/tech/comp/fnv/\n\n// @ts-ignore: decorator\n@inline\nconst FNV_OFFSET: u32 = 2166136261;\n\n// @ts-ignore: decorator\n@inline\nconst FNV_PRIME: u32 = 16777619;\n\nfunction hash8(key: u32): u32 {\n return (FNV_OFFSET ^ key) * FNV_PRIME;\n}\n\nfunction hash16(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 8 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash32(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash64(key: u64): u32 {\n var l = key;\n var h = (key >>> 32);\n var v = FNV_OFFSET;\n v = (v ^ ( l & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( l >> 24 )) * FNV_PRIME;\n v = (v ^ ( h & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( h >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hashStr(key: string): u32 {\n var v = FNV_OFFSET;\n if (key !== null) {\n for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) {\n v = (v ^ load(changetype(key) + i)) * FNV_PRIME;\n }\n }\n return v;\n}\n","util/memory":"export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n let w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 2: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 3: {\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c\n if (dest === src) return;\n if (ASC_SHRINK_LEVEL < 1) {\n if (src + n <= dest || dest + n <= src) {\n memcpy(dest, src, n);\n return;\n }\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, c);\n --n;\n }\n } else {\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n let k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n let c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n let c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c\n if (vl == vr) return 0;\n while (n != 0 && load(vl) == load(vr)) {\n n--; vl++; vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","util/number":'/// \n\nimport { idof } from "../builtins";\nimport { CharCode } from "./string";\nimport { ArrayBufferView } from "../arraybuffer";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline\nconst POWERS10: u32[] = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\n "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\n "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\n "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\n "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\n "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\n "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\n "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\n "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\n "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"\n*/\n// @ts-ignore: decorator\n@lazy @inline\nconst DIGITS: u32[] = [\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n];\n\n// @ts-ignore: decorator\n@lazy @inline\nconst EXP_POWERS: i16[] = [\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n];\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline\nconst FRC_POWERS: u64[] = [\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n];\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return select(1, 2, value < 10);\n } else {\n let m = select(4, 5, value < 10000);\n return select(3, m, value < 1000);\n }\n } else {\n if (value < 10000000) {\n return select(6, 7, value < 1000000);\n } else {\n let m = select(9, 10, value < 1000000000);\n return select(8, m, value < 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n let m = select(11, 12, value < 100000000000);\n return select(10, m, value < 10000000000);\n } else {\n let m = select(14, 15, value < 100000000000000);\n return select(13, m, value < 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return select(16, 17, value < 10000000000000000);\n } else {\n let m = select(19, 20, value < 10000000000000000000);\n return select(18, m, value < 1000000000000000000);\n }\n }\n}\n\nfunction utoa32_lut(buffer: usize, num: u32, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(lut + (d1 << alignof()));\n let digits2 = load(lut + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(lut + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(lut + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_lut(buffer: usize, num: u64, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(lut + (c1 << alignof()));\n let digits2 = load(lut + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(lut + (b1 << alignof()));\n digits2 = load(lut + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_lut(buffer, num, offset);\n}\n\nfunction utoa_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset -= 1;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_core(buffer: usize, num: u32, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa32_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa64_core(buffer: usize, num: u64, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa64_lut(buffer, num, offset);\n }\n}\n\nexport function utoa32(value: u32): String {\n if (!value) return "0";\n\n var decimals = decimalCount32(value);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n return changetype(out); // retains\n}\n\nexport function itoa32(value: i32): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var decimals = decimalCount32(value) + u32(sign);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n if (sign) store(out, CharCode.MINUS);\n return changetype(out); // retains\n}\n\nexport function utoa64(value: u64): String {\n if (!value) return "0";\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n return changetype(out); // retains\n}\n\nexport function itoa64(value: i64): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n if (sign) store(out, CharCode.MINUS);\n\n return changetype(out); // retains\n}\n\nexport function itoa(value: T): String {\n if (!isInteger()) ERROR("integer type expected");\n if (isSigned()) {\n if (sizeof() <= 4) {\n return itoa32(value);\n } else {\n return itoa64(value);\n }\n } else {\n if (sizeof() <= 4) {\n return utoa32(value);\n } else {\n return utoa64(value);\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = unchecked(FRC_POWERS[index]);\n _exp_pow = unchecked(EXP_POWERS[index]);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = ((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp != 0) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n var wp_w_exp = mp_exp;\n\n var p1 = (mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n var lut = changetype(POWERS10).dataStart;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(lut + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (1) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(lut + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n\n return len;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nexport function dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\nexport function dtoa(value: f64): String {\n if (value == 0) return "0.0";\n if (!isFinite(value)) {\n if (isNaN(value)) return "NaN";\n return select("-Infinity", "Infinity", value < 0);\n }\n var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof());\n var length = dtoa_core(buffer, value);\n if (length == MAX_DOUBLE_LENGTH) return changetype(buffer);\n var result = changetype(buffer).substring(0, length);\n __free(buffer);\n return result;\n}\n\nexport function itoa_stream(buffer: usize, offset: usize, value: T): u32 {\n buffer += (offset << 1);\n if (!value) {\n store(buffer, CharCode._0);\n return 1;\n }\n var decimals: u32 = 0;\n if (isSigned()) {\n let sign = i32(value < 0);\n if (sign) value = changetype(-value);\n if (sizeof() <= 4) {\n decimals = decimalCount32(value) + sign;\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32) + sign;\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value) + sign;\n utoa64_core(buffer, value, decimals);\n }\n }\n if (sign) store(buffer, CharCode.MINUS);\n } else {\n if (sizeof() <= 4) {\n decimals = decimalCount32(value);\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value);\n utoa64_core(buffer, value, decimals);\n }\n }\n }\n return decimals;\n}\n\nexport function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {\n buffer += (offset << 1);\n if (value == 0.0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = i32(value < 0);\n let len = 8 + sign;\n memory.copy(buffer, changetype(select("-Infinity", "Infinity", sign)), len << 1);\n return len;\n }\n }\n return dtoa_core(buffer, value);\n}\n',"util/sort":'import { compareImpl } from "./string";\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): (a: T, b: T) => i32 {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a: T, b: T): i32 => (i32(a) - i32(b));\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= (ia >> 31) >>> 1;\n ib ^= (ib >> 31) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= (ia >> 63) >>> 1;\n ib ^= (ib >> 63) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a: T, b: T): i32 => {\n if (a === b || a === null || b === null) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!alen && !blen) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n return compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen));\n };\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function SORT(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n if (isReference()) {\n // TODO replace this to faster stable sort (TimSort) when it implemented\n insertionSort(dataStart, length, comparator);\n } else {\n if (length < 256) {\n insertionSort(dataStart, length, comparator);\n } else {\n weakHeapSort(dataStart, length, comparator);\n }\n }\n}\n\nfunction insertionSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n for (let i = 0; i < length; i++) {\n let a: T = load(dataStart + (i << alignof())); // a = arr[i]\n let j = i - 1;\n while (j >= 0) {\n let b: T = load(dataStart + (j << alignof())); // b = arr[j]\n if (comparator(a, b) < 0) {\n store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b\n } else break;\n }\n store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a\n }\n}\n\nfunction weakHeapSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n const shift32 = alignof();\n\n var bitsetSize = (length + 31) >> 5 << shift32;\n var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below\n memory.fill(bitset, 0, bitsetSize);\n\n // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf\n\n for (let i = length - 1; i > 0; i--) {\n let j = i;\n while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1;\n\n let p = j >> 1;\n let a: T = load(dataStart + (p << alignof())); // a = arr[p]\n let b: T = load(dataStart + (i << alignof())); // b = arr[i]\n if (comparator(a, b) < 0) {\n store(\n bitset + (i >> 5 << shift32),\n load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31))\n );\n store(dataStart + (i << alignof()), a); // arr[i] = a\n store(dataStart + (p << alignof()), b); // arr[p] = b\n }\n }\n\n for (let i = length - 1; i >= 2; i--) {\n let a: T = load(dataStart); // a = arr[0]\n store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i]\n store(dataStart + (i << alignof()), a); // arr[i] = a\n\n let x = 1, y: i32;\n while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y;\n\n while (x > 0) {\n a = load(dataStart); // a = arr[0]\n let b: T = load(dataStart + (x << alignof())); // b = arr[x]\n\n if (comparator(a, b) < 0) {\n store(\n bitset + (x >> 5 << shift32),\n load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31))\n );\n store(dataStart + (x << alignof()), a); // arr[x] = a\n store(dataStart, b); // arr[0] = b\n }\n x >>= 1;\n }\n }\n\n __free(bitset);\n\n var t: T = load(dataStart, sizeof()); // t = arr[1]\n store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0]\n store(dataStart, t); // arr[0] = t\n}\n',"util/string":"export function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var result = 0;\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n while (len && !(result = load(ptr1) - load(ptr2))) {\n --len, ptr1 += 2, ptr2 += 2;\n }\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function isSpace(c: i32): bool {\n if (c <= 0xFF) {\n switch (c) {\n case 0x09: // \n case 0x0A: // \n case 0x0B: // \n case 0x0C: // \n case 0x0D: // \n case 0x20: // \n case 0xA0: return true; // \n }\n return false;\n }\n if (c >= 0x2000 && c <= 0x200A) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // determine sign\n // @ts-ignore: cast\n var sign: T = 1;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n // @ts-ignore: type\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2)) {\n case CharCode.B:\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.O:\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.X:\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n default: radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n while (len--) {\n code = load(ptr);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else break;\n if (code >= radix) break;\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\n// FIXME: naive implementation\nexport function strtod(str: string): f64 {\n var len: i32 = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n // determine sign\n var sign = 1.0;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1.0;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // calculate value\n var num = 0.0;\n while (len--) {\n code = load(ptr);\n if (code == CharCode.DOT) {\n ptr += 2;\n let fac = 0.1; // precision :(\n while (len--) {\n code = load(ptr);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) break;\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) break;\n num = num * 10 + code;\n ptr += 2;\n }\n return sign * num;\n}\n",vector:"/** Vector abstraction. */\n@sealed @unmanaged\nexport abstract class V128 {\n}\n"}):(()=>{const e=path.join(".","..","std","assembly"),n=__webpack_require__(!function(){var e=new Error("Cannot find module 'glob'");throw e.code="MODULE_NOT_FOUND",e}()).sync("**/!(*.d).ts",{cwd:e}),t={nearEntry:fs.readFileSync(nearLibEntry,"utf8")};return n.forEach(n=>t[n.replace(/\.ts$/,"")]=fs.readFileSync(path.join(e,n),"utf8")),t})(),exports.definitionFiles=exports.isBundle?Object({assembly:'/**\n * Environment definitions for compiling AssemblyScript to WebAssembly using asc.\n * @module std/assembly\n *//***/\n\n/// \n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = boolean | number;\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n/** A 128-bit vector. */\ndeclare type v128 = object;\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n/** Whether the bulk memory feature is enabled. */\ndeclare const ASC_FEATURE_BULK_MEMORY: bool;\n/** Whether the SIMD feature is enabled. */\ndeclare const ASC_FEATURE_SIMD: bool;\n/** Whether the threads feature is enabled. */\ndeclare const ASC_FEATURE_THREADS: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, immOffset?: usize, immAlign?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const __heap_base: usize;\n/** Determines the byte size of the specified underlying core type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Determines the alignment (log2) of the specified underlying core type. Compiles to a constant. */\ndeclare function alignof(): usize;\n/** Determines the end offset of the given class type. Compiles to a constant. */\ndeclare function offsetof(): usize;\n/** Determines the offset of the specified field within the given class type. Compiles to a constant. */\ndeclare function offsetof(fieldName: keyof T | string): usize;\n/** Determines the offset of the specified field within the given class type. Returns the class type\'s end offset if field name has been omitted. Compiles to a constant. */\ndeclare function offsetof(fieldName?: string): usize;\n/** Determines the name of a given type. */\ndeclare function nameof(value?: T): string;\n/** Determines the unique runtime id of a class type. Compiles to a constant. */\ndeclare function idof(): u32;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Emits a `call_indirect` instruction, calling the specified function in the function table by index with the specified arguments. Does result in a runtime error if the arguments do not match the called function. */\ndeclare function call_indirect(target: Function | u32, ...args: any[]): T;\n/** Emits a `call` instruction, calling the specified function in the function table directly with the specified arguments. Function index must be a compile-time constant. */\ndeclare function call_direct(target: Function | u32, ...args: any[]): T;\n/** Instantiates a new instance of `T` using the specified constructor arguments. */\ndeclare function instantiate(...args: any[]): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */\ndeclare function isInteger(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */\ndeclare function isFloat(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a boolean type. */\ndeclare function isBoolean(value?: any): value is number;\n/** Tests if the specified type *or* expression can represent negative numbers. Compiles to a constant. */\ndeclare function isSigned(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a reference type. Compiles to a constant. */\ndeclare function isReference(value?: any): value is object | string;\n/** Tests if the specified type *or* expression can be used as a string. Compiles to a constant. */\ndeclare function isString(value?: any): value is string | String;\n/** Tests if the specified type *or* expression can be used as an array. Compiles to a constant. */\ndeclare function isArray(value?: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. Compiles to a constant. */\ndeclare function isArrayLike(value?: any): value is ArrayLike;\n/** Tests if the specified type *or* expression is of a function type. Compiles to a constant. */\ndeclare function isFunction(value?: any): value is (...args: any) => any;\n/** Tests if the specified type *or* expression is of a nullable reference type. Compiles to a constant. */\ndeclare function isNullable(value?: any): bool;\n/** Tests if the specified expression resolves to a defined element. Compiles to a constant. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. Compiles to a constant. */\ndeclare function isConstant(expression: any): bool;\n/** Tests if the specified type *or* expression is of a managed type. Compiles to a constant. */\ndeclare function isManaged(value?: any): bool;\n/** Tests if the specified type is void. Compiles to a constant. */\ndeclare function isVoid(): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n/** Returns the number of parameters in the given function signature type. */\ndeclare function lengthof any>(func?: T): i32;\n\n/** Atomic operations. */\ndeclare namespace atomic {\n /** Atomically loads an integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): T;\n /** Atomically stores an integer value to memory. */\n export function store(offset: usize, value: T, immOffset?: usize): void;\n /** Atomically adds an integer value in memory. */\n export function add(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically subtracts an integer value in memory. */\n export function sub(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise AND operation on an integer value in memory. */\n export function and(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise OR operation on an integer value in memory. */\n export function or(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise XOR operation on an integer value in memory. */\n export function xor(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically exchanges an integer value in memory. */\n export function xchg(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically compares and exchanges an integer value in memory if the condition is met. */\n export function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n /** Performs a wait operation on an address in memory suspending this agent if the integer condition is met. */\n export function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n /** Performs a notify operation on an address in memory waking up suspended agents. */\n export function notify(ptr: usize, count: i32): i32;\n}\n\n/** Describes the result of an atomic wait operation. */\ndeclare enum AtomicWaitResult {\n /** Woken by another agent. */\n OK,\n /** Loaded value did not match the expected value. */\n NOT_EQUAL,\n /** Not woken before the timeout expired. */\n TIMED_OUT\n}\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i8;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Loads an 8-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 32-bit integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 32-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 32-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i32;\n /** Atomically stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize): void;\n /** Performs a wait operation on a 32-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n /** Atomic 32-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 32-bit integer value in memory. */\n export function add(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts a 32-bit integer value in memory. */\n export function sub(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 32-bit integer value in memory. */\n export function and(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 32-bit integer value in memory. */\n export function or(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 32-bit integer value in memory. */\n export function xor(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 32-bit integer value in memory. */\n export function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 32-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: any): i64;\ndeclare namespace i64 {\n /** Smallest representable value. */\n export const MIN_VALUE: i64;\n /** Largest representable value. */\n export const MAX_VALUE: i64;\n /** Loads an 8-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 64-bit unsigned integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 64-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 64-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i64;\n /** Atomically stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize): void;\n /** Performs a wait operation on a 64-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n /** Atomic 64-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 32-bit values. */\n export namespace rmw32 {\n /** Atomically adds a 32-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 32-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 32-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 32-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 32-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 32-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 32-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 64-bit integer value in memory. */\n export function add(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 64-bit integer value in memory. */\n export function sub(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 64-bit integer value in memory. */\n export function and(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 64-bit integer value in memory. */\n export function or(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 64-bit integer value in memory. */\n export function xor(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 64-bit integer value in memory. */\n export function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 64-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare var isize: typeof i32 | typeof i64;\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): i8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): i8;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): i32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: any): i64;\ndeclare namespace u64 {\n /** Smallest representable value. */\n export const MIN_VALUE: u64;\n /** Largest representable value. */\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare var usize: typeof u32 | typeof u64;\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Loads a 32-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n /** Stores a 32-bit float to memory. */\n export function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Loads a 64-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n /** Stores a 64-bit float to memory. */\n export function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function v128(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace v128 {\n /** Creates a 128-bit vector with identical lanes. */\n export function splat(x: T): v128;\n /** Extracts one lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): T;\n /** Replaces one lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: T): v128;\n /** Selects lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n /** Loads a 128-bit vector from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n /** Stores a 128-bit vector to memory. */\n export function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n /** Adds each lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128; // except i64\n /** Divides each lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each lane of two 128-bit vectors using saturation. */\n export function add_saturate(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors using saturation. */\n export function sub_saturate(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise right shift on each lane of a 128-bit vector by a scalar. */\n export function shr(a: v128, b: i32): v128;\n /** Performs the bitwise AND operation on each lane of two 128-bit vectors. */\n export function and(a: v128, b: v128): v128;\n /** Performs the bitwise OR operation on each lane of two 128-bit vectors. */\n export function or(a: v128, b: v128): v128;\n /** Performs the bitwise XOR operation on each lane of two 128-bit vectors. */\n export function xor(a: v128, b: v128): v128;\n /** Performs the bitwise NOT operation on each lane of a 128-bit vector. */\n export function not(a: v128): v128;\n /** Selects bits of either 128-bit vector according to the specified mask. */\n export function bitselect(v1: v128, v2: v128, mask: v128): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes the minimum of each lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each lane of a 128-bit vector from integer to floating point. */\n export function convert(a: v128): v128;\n /** Truncates each lane of a 128-bit vector from floating point to integer with saturation. */\n export function trunc(a: v128): v128;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace i8x16 {\n /** Creates a vector with sixteen identical 8-bit integer lanes. */\n export function splat(x: i8): v128;\n /** Extracts one 8-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i8;\n /** Extracts one 8-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u8;\n /** Replaces one 8-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i8): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 8-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 8-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */\ndeclare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\ndeclare namespace i16x8 {\n /** Creates a vector with eight identical 16-bit integer lanes. */\n export function splat(x: i16): v128;\n /** Extracts one 16-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i16;\n /** Extracts one 16-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u16;\n /** Replaces one 16-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i16): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 16-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 16-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */\ndeclare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\ndeclare namespace i32x4 {\n /** Creates a 128-bit vector with four identical 32-bit integer lanes. */\n export function splat(x: i32): v128;\n /** Extracts one 32-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i32;\n /** Replaces one 32-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i32): v128;\n /** Adds each 32-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 32-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f32x4_sat(a: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f32x4_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */\ndeclare function i64x2(a: i64, b: i64): v128;\ndeclare namespace i64x2 {\n /** Creates a 128-bit vector with two identical 64-bit integer lanes. */\n export function splat(x: i64): v128;\n /** Extracts one 64-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i64;\n /** Replaces one 64-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i64): v128;\n /** Adds each 64-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 64-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Truncates each 64-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f64x2_sat(a: v128): v128;\n /** Truncates each 64-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f64x2_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */\ndeclare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\ndeclare namespace f32x4 {\n /** Creates a 128-bit vector with four identical 32-bit float lanes. */\n export function splat(x: f32): v128;\n /** Extracts one 32-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f32;\n /** Replaces one 32-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f32): v128;\n /** Adds each 32-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 32-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 32-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 32-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 32-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 32-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 32-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 32-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i32x4(a: v128): v128;\n /** Converts each 32-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i32x4(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */\ndeclare function f64x2(a: f64, b: f64): v128;\ndeclare namespace f64x2 {\n /** Creates a 128-bit vector with two identical 64-bit float lanes. */\n export function splat(x: f64): v128;\n /** Extracts one 64-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f64;\n /** Replaces one 64-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f64): v128;\n /** Adds each 64-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 64-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 64-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 64-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 64-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 64-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 64-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 64-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i64x2(a: v128): v128;\n /** Converts each 64-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i64x2(a: v128): v128;\n}\ndeclare namespace v8x16 {\n /** Selects 8-bit lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128;\n}\n/** Macro type evaluating to the underlying native WebAssembly type. */\ndeclare type native = T;\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type ReturnType any> = T extends (...args: any) => infer R ? R : any;\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type returnof any> = ReturnType;\n\n/** Pseudo-class representing the backing class of integer types. */\ndeclare class _Integer {\n /** Smallest representable value. */\n static readonly MIN_VALUE: number;\n /** Largest representable value. */\n static readonly MAX_VALUE: number;\n /** Converts a string to an integer of this type. */\n static parseInt(value: string, radix?: number): number;\n /** Converts this integer to a string. */\n toString(): string;\n}\n\n/** Pseudo-class representing the backing class of floating-point types. */\ndeclare class _Float {\n /** Difference between 1 and the smallest representable value greater than 1. */\n static readonly EPSILON: f32 | f64;\n /** Smallest representable value. */\n static readonly MIN_VALUE: f32 | f64;\n /** Largest representable value. */\n static readonly MAX_VALUE: f32 | f64;\n /** Smallest safely representable integer value. */\n static readonly MIN_SAFE_INTEGER: f32 | f64;\n /** Largest safely representable integer value. */\n static readonly MAX_SAFE_INTEGER: f32 | f64;\n /** Value representing positive infinity. */\n static readonly POSITIVE_INFINITY: f32 | f64;\n /** Value representing negative infinity. */\n static readonly NEGATIVE_INFINITY: f32 | f64;\n /** Value representing \'not a number\'. */\n static readonly NaN: f32 | f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n static isNaN(value: f32 | f64): bool;\n /** Returns true if passed value is finite. */\n static isFinite(value: f32 | f64): bool;\n /** Returns true if the value passed is a safe integer. */\n static isSafeInteger(value: f32 | f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n static isInteger(value: f32 | f64): bool;\n /** Converts a string to an integer. */\n static parseInt(value: string, radix?: i32): f32 | f64;\n /** Converts a string to a floating-point number. */\n static parseFloat(value: string): f32 | f64;\n /** Converts this floating-point number to a string. */\n toString(this: f64): string;\n}\n\n/** Backing class of signed 8-bit integers. */\ndeclare const I8: typeof _Integer;\n/** Backing class of signed 16-bit integers. */\ndeclare const I16: typeof _Integer;\n/** Backing class of signed 32-bit integers. */\ndeclare const I32: typeof _Integer;\n/** Backing class of signed 64-bit integers. */\ndeclare const I64: typeof _Integer;\n/** Backing class of signed size integers. */\ndeclare const Isize: typeof _Integer;\n/** Backing class of unsigned 8-bit integers. */\ndeclare const U8: typeof _Integer;\n/** Backing class of unsigned 16-bit integers. */\ndeclare const U16: typeof _Integer;\n/** Backing class of unsigned 32-bit integers. */\ndeclare const U32: typeof _Integer;\n/** Backing class of unsigned 64-bit integers. */\ndeclare const U64: typeof _Integer;\n/** Backing class of unsigned size integers. */\ndeclare const Usize: typeof _Integer;\n/** Backing class of 32-bit floating-point values. */\ndeclare const F32: typeof _Float;\n/** Backing class of 64-bit floating-point values. */\ndeclare const F64: typeof _Float;\n\n// User-defined diagnostic macros\n\n/** Emits a user-defined diagnostic error when encountered. */\ndeclare function ERROR(message?: any): void;\n/** Emits a user-defined diagnostic warning when encountered. */\ndeclare function WARNING(message?: any): void;\n/** Emits a user-defined diagnostic info when encountered. */\ndeclare function INFO(message?: any): void;\n\n// Polyfills\n\n/** Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Whether the memory managed interface is implemented. */\n export const implemented: bool;\n /** Returns the current memory size in units of pages. One page is 64kb. */\n export function size(): i32;\n /** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\n export function grow(value: i32): i32;\n /** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\n export function fill(dst: usize, value: u8, count: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n export function copy(dst: usize, src: usize, n: usize): void;\n /** Repeats `src` of length `srcLength` `count` times at `dst`. */\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void;\n /** Copies elements from a passive element segment to a table. */\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void;\n /** Prevents further use of a passive element segment. */\n export function drop(segmentIndex: u32): void;\n /** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\n export function compare(vl: usize, vr: usize, n: usize): i32;\n}\n\n/** Garbage collector operations. */\ndeclare namespace gc {\n /** Whether the garbage collector interface is implemented. */\n export const implemented: bool;\n /** Performs a full garbage collection cycle. */\n export function collect(): void;\n /** Retains a reference, making sure that it doesn\'t become collected. */\n export function retain(ref: usize): void;\n /** Releases a reference, allowing it to become collected. */\n export function release(ref: usize): void;\n}\n\n/** Table operations. */\ndeclare namespace table {\n /** Copies elements from a passive element segment to a table. */\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void;\n /** Prevents further use of a passive element segment. */\n export function drop(elementIndex: u32): void;\n /** Copies elements from one region of a table to another region. */\n export function copy(dest: u32, src: u32, n: u32): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer\'s bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform\'s endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getInt64()` method gets a signed 64-bit integer (long long) at the specified byte offset from the start of the `DataView`. */\n getInt64(byteOffset: i32, littleEndian?: boolean): i64;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `getUint64()` method gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the `DataView`. */\n getUint64(byteOffset: i32, littleEndian?: boolean): u64;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setInt64()` method stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the `DataView`. */\n setInt64(byteOffset: i32, value: i64, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** The `setUint64()` method stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the `DataView`. */\n setUint64(byteOffset: i32, value: u64, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ninterface ArrayLike {\n length: i32;\n // [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\n/* @internal */\ndeclare abstract class TypedArray implements ArrayBufferView {\n [key: number]: T;\n /** Number of bytes per element. */\n static readonly BYTES_PER_ELEMENT: usize;\n /** Wrap an ArrayBuffer */\n static wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray;\n /** Constructs a new typed array. */\n constructor(length: i32);\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n /** The length (in elements). */\n readonly length: i32;\n /** The includes() method determines whether a typed array includes a certain element, returning true or false as appropriate. */\n includes(searchElement: T, fromIndex?: i32): bool;\n /** The indexOf() method returns the first index at which a given element can be found in the typed array, or -1 if it is not present. */\n indexOf(searchElement: T, fromIndex?: i32): i32;\n /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */\n subarray(begin?: i32, end?: i32): this;\n /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */\n reduce(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */\n reduceRight(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/\n some(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/\n map(callbackfn: (value: T, index: i32, self: this) => T): this;\n /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */\n sort(callback?: (a: T, b: T) => i32): this;\n /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */\n fill(value: T, start?: i32, end?: i32): this;\n /** The findIndex() method returns an index in the typed array, if an element in the typed array satisfies the provided testing function. Otherwise -1 is returned. See also the find() [not implemented] method, which returns the value of a found element in the typed array instead of its index. */\n findIndex(callbackfn: (value: T, index: i32, self: this) => bool): i32;\n /** The every() method tests whether all elements in the typed array pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.every(). */\n every(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The forEach() method executes a provided function once per array element. This method has the same algorithm as Array.prototype.forEach().*/\n forEach(callbackfn: (value: T, index: i32, self: this) => void): void;\n /** The reverse() method reverses a typed array in place. The first typed array element becomes the last and the last becomes the first. This method has the same algorithm as Array.prototype.reverse(). */\n reverse(): this;\n}\n\n/** An array of twos-complement 8-bit signed integers. */\ndeclare class Int8Array extends TypedArray {}\n/** An array of 8-bit unsigned integers. */\ndeclare class Uint8Array extends TypedArray {}\n/** A clamped array of 8-bit unsigned integers. */\ndeclare class Uint8ClampedArray extends TypedArray {}\n/** An array of twos-complement 16-bit signed integers. */\ndeclare class Int16Array extends TypedArray {}\n/** An array of 16-bit unsigned integers. */\ndeclare class Uint16Array extends TypedArray {}\n/** An array of twos-complement 32-bit signed integers. */\ndeclare class Int32Array extends TypedArray {}\n/** An array of 32-bit unsigned integers. */\ndeclare class Uint32Array extends TypedArray {}\n/** An array of twos-complement 64-bit signed integers. */\ndeclare class Int64Array extends TypedArray {}\n/** An array of 64-bit unsigned integers. */\ndeclare class Uint64Array extends TypedArray {}\n/** An array of 32-bit floating point numbers. */\ndeclare class Float32Array extends TypedArray {}\n/** An array of 64-bit floating point numbers. */\ndeclare class Float64Array extends TypedArray {}\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n\n /** Tests if a value is an array. */\n static isArray(value: any): value is Array;\n /** Creates a new array with at least the specified capacity and length zero. */\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\n/** Class representing a fixed sequence of values of type `T`. */\ndeclare class FixedArray {\n [key: number]: T;\n readonly length: i32;\n constructor(capacity?: i32);\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(start: i32, end?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n repeat(count?: i32): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\ndeclare namespace String {\n /** Encoding helpers for UTF-8. */\n export namespace UTF8 {\n /** Calculates the byte length of the specified string when encoded as UTF-8, optionally null terminated. */\n export function byteLength(str: string, nullTerminated?: bool): i32;\n /** Encodes the specified string to UTF-8 bytes, optionally null terminated. */\n export function encode(str: string, nullTerminated?: bool): ArrayBuffer;\n /** Decodes the specified buffer from UTF-8 bytes to a string, optionally null terminated. */\n export function decode(buf: ArrayBuffer, nullTerminated?: bool): string;\n /** Decodes raw UTF-8 bytes to a string, optionally null terminated. */\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated?: bool): string;\n }\n /** Encoding helpers for UTF-16. */\n export namespace UTF16 {\n /** Calculates the byte length of the specified string when encoded as UTF-16. */\n export function byteLength(str: string): i32;\n /** Encodes the specified string to UTF-16 bytes. */\n export function encode(str: string): ArrayBuffer;\n /** Decodes the specified buffer from UTF-16 bytes to a string. */\n export function decode(buf: ArrayBuffer): string;\n /** Decodes raw UTF-16 bytes to a string. */\n export function decodeUnsafe(buf: usize, len: usize): string;\n }\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ninterface Boolean {\n toString(): string;\n}\ninterface Function {}\ninterface IArguments {}\ninterface Number {\n toString(radix?: number): string;\n}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Map {\n readonly size: i32;\n has(key: K): bool;\n set(key: K, value: V): void;\n get(key: K): V;\n delete(key: K): bool;\n clear(): void;\n keys(): K[]; // preliminary\n values(): V[]; // preliminary\n toString(): string;\n}\n\ndeclare class Set {\n readonly size: i32;\n has(value: K): bool;\n add(value: K): void;\n delete(value: K): bool;\n clear(): void;\n values(): K[]; // preliminary\n toString(): string;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\n\ndeclare const Symbol: SymbolConstructor;\n\ninterface IMath {\n /** The base of natural logarithms, e, approximately 2.718. */\n readonly E: T;\n /** The natural logarithm of 2, approximately 0.693. */\n readonly LN2: T;\n /** The natural logarithm of 10, approximately 2.302. */\n readonly LN10: T;\n /** The base 2 logarithm of e, approximately 1.442. */\n readonly LOG2E: T;\n /** The base 10 logarithm of e, approximately 0.434. */\n readonly LOG10E: T;\n /** The ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n readonly PI: T;\n /** The square root of 1/2, approximately 0.707. */\n readonly SQRT1_2: T;\n /** The square root of 2, approximately 1.414. */\n readonly SQRT2: T;\n /** Returns the absolute value of `x`. */\n abs(x: T): T;\n /** Returns the arccosine (in radians) of `x`. */\n acos(x: T): T;\n /** Returns the hyperbolic arc-cosine of `x`. */\n acosh(x: T): T;\n /** Returns the arcsine (in radians) of `x`. */\n asin(x: T): T;\n /** Returns the hyperbolic arcsine of `x`. */\n asinh(x: T): T;\n /** Returns the arctangent (in radians) of `x`. */\n atan(x: T): T;\n /** Returns the arctangent of the quotient of its arguments. */\n atan2(y: T, x: T): T;\n /** Returns the hyperbolic arctangent of `x`. */\n atanh(x: T): T;\n /** Returns the cube root of `x`. */\n cbrt(x: T): T;\n /** Returns the smallest integer greater than or equal to `x`. */\n ceil(x: T): T;\n /** Returns the number of leading zero bits in the 32-bit binary representation of `x`. */\n clz32(x: T): T;\n /** Returns the cosine (in radians) of `x`. */\n cos(x: T): T;\n /** Returns the hyperbolic cosine of `x`. */\n cosh(x: T): T;\n /** Returns e to the power of `x`. */\n exp(x: T): T;\n /** Returns e to the power of `x`, minus 1. */\n expm1(x: T): T;\n /** Returns the largest integer less than or equal to `x`. */\n floor(x: T): T;\n /** Returns the nearest 32-bit single precision float representation of `x`. */\n fround(x: T): T;\n /** Returns the square root of the sum of squares of its arguments. */\n hypot(value1: T, value2: T): T; // TODO: rest\n /** Returns the result of the C-like 32-bit multiplication of `a` and `b`. */\n imul(a: T, b: T): T;\n /** Returns the natural logarithm (base e) of `x`. */\n log(x: T): T;\n /** Returns the base 10 logarithm of `x`. */\n log10(x: T): T;\n /** Returns the natural logarithm (base e) of 1 + `x`. */\n log1p(x: T): T;\n /** Returns the base 2 logarithm of `x`. */\n log2(x: T): T;\n /** Returns the largest-valued number of its arguments. */\n max(value1: T, value2: T): T; // TODO: rest\n /** Returns the lowest-valued number of its arguments. */\n min(value1: T, value2: T): T; // TODO: rest\n /** Returns `base` to the power of `exponent`. */\n pow(base: T, exponent: T): T;\n /** Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0. */\n random(): T;\n /** Returns the value of `x` rounded to the nearest integer. */\n round(x: T): T;\n /** Returns the sign of `x`, indicating whether the number is positive, negative or zero. */\n sign(x: T): T;\n /** Returns whether the sign bit of `x` is set. */\n signbit(x: T): bool;\n /** Returns the sine of `x`. */\n sin(x: T): T;\n /** Returns the hyperbolic sine of `x`. */\n sinh(x: T): T;\n /** Returns the square root of `x`. */\n sqrt(x: T): T;\n /** Returns the tangent of `x`. */\n tan(x: T): T;\n /** Returns the hyperbolic tangent of `x`. */\n tanh(x: T): T;\n /** Returns the integer part of `x` by removing any fractional digits. */\n trunc(x: T): T;\n}\n\ninterface INativeMath extends IMath {\n /** Contains sin value produced after Math/Mathf.sincos */\n sincos_sin: T;\n /** Contains cos value produced after Math/Mathf.sincos */\n sincos_cos: T;\n /** Seeds the random number generator. */\n seedRandom(value: i64): void;\n /** Returns the floating-point remainder of `x / y` (rounded towards zero). */\n mod(x: T, y: T): T;\n /** Returns the floating-point remainder of `x / y` (rounded to nearest). */\n rem(x: T, y: T): T;\n /** Returns sin and cos simultaneously for same angle. Results stored to `sincos_s32/64` and `sincos_c32/64` globals */\n sincos(x: T): void;\n}\n\n/** Double precision math imported from JavaScript. */\ndeclare const JSMath: IMath;\n/** Double precision math implemented natively. */\ndeclare const NativeMath: INativeMath;\n/** Single precision math implemented natively. */\ndeclare const NativeMathf: INativeMath;\n/** Alias of {@link NativeMath} or {@link JSMath} respectively. Defaults to `NativeMath`. */\ndeclare const Math: IMath;\n/** Alias of {@link NativeMathf} or {@link JSMath} respectively. Defaults to `NativeMathf`. */\ndeclare const Mathf: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): i64;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): i64;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: i64);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): i64;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: i64): i64;\n}\n\n/** Environmental tracing function for debugging purposes. */\ndeclare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: f64, a4?: f64): void;\n\n// Decorators\n\ninterface TypedPropertyDescriptor {\n configurable?: boolean;\n enumerable?: boolean;\n writable?: boolean;\n value?: T;\n get?(): T;\n set?(value: T): void;\n}\n\n/** Annotates a method as a binary operator overload for the specified `token`. */\ndeclare function operator(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n) => TypedPropertyDescriptor | void;\n\ndeclare namespace operator {\n /** Annotates a method as a binary operator overload for the specified `token`. */\n export function binary(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n ): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary prefix operator overload for the specified `token`. */\n export function prefix(token: "!" | "~" | "+" | "-" | "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary postfix operator overload for the specified `token`. */\n export function postfix(token: "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n}\n\n/** Annotates an element as a program global. */\ndeclare function global(...args: any[]): any;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n\n/** Annotates a class as being sealed / non-derivable. */\ndeclare function sealed(constructor: Function): void;\n\n/** Annotates a method, function or constant global as always inlined. */\ndeclare function inline(...args: any[]): any;\n\n/** Annotates a method, function or constant global as unsafe. */\ndeclare function unsafe(...args: any[]): any;\n\n/** Annotates an explicit external name of a function or global. */\ndeclare function external(...args: any[]): any;\n\n/** Annotates a global for lazy compilation. */\ndeclare function lazy(...args: any[]): any;\n\n/** Annotates a function as the explicit start function. */\ndeclare function start(...args: any[]): any;\n',portable:"/**\n * Environment definitions for compiling AssemblyScript to JavaScript using tsc.\n *\n * Note that semantic differences require additional explicit conversions for full compatibility.\n * For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n * result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n *\n * Note that i64's are not portable (JS numbers are IEEE754 doubles with a maximum safe integer\n * value of 2^53-1) and instead require a compatibility layer to work in JS as well, as for example\n * {@link glue/js/i64} respectively {@link glue/wasm/i64}.\n *\n * @module std/portable\n *//***/\n\n/// \n\n// Types\n\ndeclare type bool = boolean;\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified value is a valid integer. Can't distinguish an integer from an integral float. */\ndeclare function isInteger(value: any): value is number;\n/** Tests if the specified value is a valid float. Can't distinguish a float from an integer. */\ndeclare function isFloat(value: any): value is number;\n/** Tests if the specified value is of a nullable reference type. */\ndeclare function isNullable(value: any): bool;\n/** Tests if the specified value is of a reference type. */\ndeclare function isReference(value: any): value is object | string;\n/** Tests if the specified value is of a function type */\ndeclare function isFunction(value: any): value is Function;\n/** Tests if the specified value can be used as a string. */\ndeclare function isString(value: any): value is string | String;\n/** Tests if the specified value can be used as an array. */\ndeclare function isArray(value: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. */\ndeclare function isArrayLike(value: any): value is ArrayLike;\n/** Tests if the specified expression resolves to a defined element. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. */\ndeclare function isConstant(expression: any): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T | null, message?: string): T;\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i16;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: any): isize;\ndeclare namespace isize {\n /** Smallest representable value. */\n export const MIN_VALUE: isize;\n /** Largest representable value. */\n export const MAX_VALUE: isize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): isize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): u8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): u16;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): u32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: any): isize;\ndeclare namespace usize {\n /** Smallest representable value. */\n export const MIN_VALUE: usize;\n /** Largest representable value. */\n export const MAX_VALUE: usize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): usize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f32): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f32): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f64): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f64;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f64;\n}\n\n// Polyfills\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Allocates a chunk of memory of the specified size and returns a pointer to it. */\n function allocate(size: usize): usize;\n /** Disposes a chunk of memory by its pointer. */\n function free(ptr: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n function copy(dst: usize, src: usize, n: usize): void;\n /** Fills size bytes from from the specified destination by same value in memory. */\n function fill(dst: usize, value: u8, size: usize): void;\n /** Resets the allocator to its initial state, if supported. */\n function reset(): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer's bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform's endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ndeclare class Array {\n\n static isArray(value: any): value is Array;\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from?: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint8ClampedArray extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ninterface ArrayLike {\n length: i32;\n [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: i32;\n\n private constructor();\n\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n endsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(from: i32, to?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n repeat(count?: i32): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ndeclare class Set {\n constructor(entries?: T[]);\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n toString(): string;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n delete(key: K): bool;\n toString(): string;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\ndeclare const Symbol: SymbolConstructor;\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ninterface IMath {\n readonly E: f64;\n readonly LN2: f64;\n readonly LN10: f64;\n readonly LOG2E: f64;\n readonly LOG10E: f64;\n readonly PI: f64;\n readonly SQRT1_2: f64;\n readonly SQRT2: f64;\n\n sincos_sin: f64;\n sincos_cos: f64;\n\n abs(x: f64): f64;\n acos(x: f64): f64;\n acosh(x: f64): f64;\n asin(x: f64): f64;\n asinh(x: f64): f64;\n atan(x: f64): f64;\n atan2(y: f64, x: f64): f64;\n atanh(x: f64): f64;\n cbrt(x: f64): f64;\n ceil(x: f64): f64;\n clz32(x: f64): i32;\n cos(x: f64): f64;\n cosh(x: f64): f64;\n exp(x: f64): f64;\n expm1(x: f64): f64;\n floor(x: f64): f64;\n fround(x: f64): f32;\n hypot(value1: f64, value2: f64): f64; // TODO: see std/math\n imul(a: f64, b: f64): i32;\n log(x: f64): f64;\n log10(x: f64): f64;\n log1p(x: f64): f64;\n log2(x: f64): f64;\n max(value1: f64, value2: f64): f64; // TODO: see std/math\n min(value1: f64, value2: f64): f64; // TODO: see std/math\n pow(base: f64, exponent: f64): f64;\n random(): f64;\n round(x: f64): f64;\n sign(x: f64): f64;\n signbit(x: f64): bool;\n sin(x: f64): f64;\n sincos(x: f64): f64;\n sinh(x: f64): f64;\n sqrt(x: f64): f64;\n tan(x: f64): f64;\n tanh(x: f64): f64;\n trunc(x: f64): f64;\n}\n\ndeclare const Math: IMath;\ndeclare const Mathf: IMath;\ndeclare const JSMath: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): number;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): number;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: number);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): number;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: number): number;\n}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n"}):(()=>{const e=path.join(".","..","std");return{assembly:fs.readFileSync(path.join(e,"assembly","index.d.ts"),"utf8"),portable:fs.readFileSync(path.join(e,"portable","index.d.ts"),"utf8")}})(),exports.compileString=(e,n)=>{"string"==typeof e&&(e={"input.ts":e});const t=Object.create({stdout:createMemoryStream(),stderr:createMemoryStream()});var r=["--binaryFile","binary","--textFile","text"];return Object.keys(n||{}).forEach(e=>{var t=n[e];Array.isArray(t)?t.forEach(n=>r.push("--"+e,String(n))):r.push("--"+e,String(t))}),exports.main(r.concat(Object.keys(e)),{stdout:t.stdout,stderr:t.stderr,readFile:n=>e.hasOwnProperty(n)?e[n]:null,writeFile:(e,n)=>t[e]=n,listFiles:()=>[]}),t},exports.main=function(e,n,t){"function"==typeof n?(t=n,n={}):n||(n={});const r=n.stdout||process.stdout,i=n.stderr||process.stderr,a=n.readFile||O,o=n.writeFile||N,s=n.listFiles||R,u=n.stats||createStats();if(!r)throw Error("'options.stdout' must be specified");if(!i)throw Error("'options.stderr' must be specified");const l=optionsUtil.parse(e,exports.options),c=l.options;if(e=l.arguments,c.noColors?colorsUtil.stdout.supported=colorsUtil.stderr.supported=!1:(colorsUtil.stdout=colorsUtil.from(r),colorsUtil.stderr=colorsUtil.from(i)),l.unknown.length&&l.unknown.forEach(e=>{i.write(colorsUtil.stderr.yellow("WARN: ")+"Unknown option '"+e+"'"+EOL)}),l.trailing.length&&i.write(colorsUtil.stderr.yellow("WARN: ")+"Unsupported trailing arguments: "+l.trailing.join(" ")+EOL),t||(t=function(e){var n=0;return e&&(i.write(colorsUtil.stderr.red("ERROR: ")+e.stack.replace(/^ERROR: /i,"")+EOL),n=1),n}),c.version)return r.write("Version "+exports.version+(isDev?"-dev":"")+EOL),t(null);if(c.help||!e.length){var f=c.help?r:i,d=c.help?colorsUtil.stdout:colorsUtil.stderr;return f.write([d.white("SYNTAX")," "+d.cyan("asc")+" [entryFile ...] [options]","",d.white("EXAMPLES")," "+d.cyan("asc")+" hello.ts"," "+d.cyan("asc")+" hello.ts -b hello.wasm -t hello.wat"," "+d.cyan("asc")+" hello1.ts hello2.ts -b -O > hello.wasm","",d.white("OPTIONS")].concat(optionsUtil.help(exports.options,24,EOL)).join(EOL)+EOL),t(null)}if(!fs.readFileSync){if(a===O)throw Error("'options.readFile' must be specified");if(o===N)throw Error("'options.writeFile' must be specified");if(s===R)throw Error("'options.listFiles' must be specified")}const p=c.baseDir?path.resolve(c.baseDir):".",h=c.notNear?[]:[nearBindings];c.transform&&c.transform.forEach(e=>h.push(__webpack_require__(13)(path.isAbsolute(e=e.trim())?e:path.join(process.cwd(),e))));var g=null,x=new Map,v=new Map;Object.keys(exports.libraryFiles).forEach(e=>{e.indexOf("/")>=0||(u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(exports.libraryFiles[e],exports.libraryPrefix+e+".ts",!1,g)}))});const m=[];if(c.lib){let e=c.lib;"string"==typeof e&&(e=e.split(",")),Array.prototype.push.apply(m,e.map(e=>e.trim()));for(let e=0,n=m.length;e{g=assemblyscript.parseFile(o,exports.libraryPrefix+i,!1,g)})}}}function _(e,n){return e.split(SEP).map((e,t,r)=>{let i=r.slice(0,t+1).join(SEP)||SEP,a=path.relative(p,i);return path.join(a,n)}).filter(e=>s(e,p)).reverse()}function y(e){let n=c.path.map(n=>_(e,n));return _(e,"node_modules").concat(...n)}function b(){for(var e,n,r;null!=(e=g.nextFile());){if(dependee=v.get(assemblyscript.getDependee(g,e))||p,n=null,r=null,e.startsWith(exports.libraryPrefix)){const t=e.substring(exports.libraryPrefix.length),i=e.substring(exports.libraryPrefix.length)+"/index";if(exports.libraryFiles.hasOwnProperty(t))n=exports.libraryFiles[t],e=exports.libraryPrefix+t+".ts";else if(exports.libraryFiles.hasOwnProperty(i))n=exports.libraryFiles[i],e=exports.libraryPrefix+i+".ts";else for(let o=0,s=m.length;o{if(x.has(o))return x.get(o);let e=path.join(s,o,"package.json"),n=a(e,p);if(n){let r;try{r=JSON.parse(n)}catch(n){return t(Error("Parsing "+e+" failed"))}let i=r.ascMain;if(i&&"string"==typeof i){let e=i.replace(/(.*)\/index\.ts/,"$1");return x.set(o,e),e}}return"assembly"})(),l=e=>{e.startsWith(exports.libraryPrefix)&&(e=e.substring(exports.libraryPrefix.length));let n=e.substring(0,e.indexOf("/")),t=e.substring(e.indexOf("/")+1);return path.join(s,n,u,t)};c.traceResolution&&i.write(" in '"+l(e)+"'");const f=e,d=e+"/index";if(null!==(n=a(l(f)+".ts",p))?e=f+".ts":null!==(n=a(l(d)+".ts",p))&&(e=d+".ts"),null!==n){c.traceResolution&&i.write(EOL+" -> '"+l(e)+"'"+EOL),r=path.join(s,o);break}c.traceResolution&&i.write(EOL)}}if(null==n)return t(Error("Import file '"+e+".ts' not found."));v.set(e.replace(/\.ts$/,""),r),u.parseCount++,u.parseTime+=measure(()=>{assemblyscript.parseFile(n,e,!1,g)})}if(checkDiagnostics(g,i))return t(Error("Parse error"))}c.path=c.path||[];{let e=String(c.runtime),n="rt/index-"+e,r=exports.libraryFiles[n];if(null==r){if(null==(r=a((n=e)+".ts",p)))return t(Error("Runtime '"+e+"' not found."))}else n="~lib/"+n;u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(r,n,!0,g)})}for(let n=0,r=e.length;n{g=assemblyscript.parseFile(o,i,!0,g)})}{let e=b();if(e)return e}!function(e,...n){h.forEach(t=>{"function"==typeof t[e]&&t[e](...n)})}("afterParse",g,o,p);{let e=b();if(e)return e}const E=assemblyscript.finishParsing(g);if(c.listFiles)return i.write(E.sources.map(e=>e.normalizedPath).sort().join(EOL)+EOL),t(null);var T=0,A=0;c.optimize&&(T=exports.defaultOptimizeLevel,A=exports.defaultShrinkLevel),"number"==typeof c.optimizeLevel&&(T=c.optimizeLevel),"number"==typeof c.shrinkLevel&&(A=c.shrinkLevel),T=Math.min(Math.max(T,0),3),A=Math.min(Math.max(A,0),2);const S=assemblyscript.createOptions();if(assemblyscript.setTarget(S,0),assemblyscript.setNoAssert(S,c.noAssert),assemblyscript.setImportMemory(S,c.importMemory),assemblyscript.setSharedMemory(S,c.sharedMemory),assemblyscript.setImportTable(S,c.importTable),assemblyscript.setExplicitStart(S,c.explicitStart),assemblyscript.setMemoryBase(S,c.memoryBase>>>0),assemblyscript.setSourceMap(S,null!=c.sourceMap),assemblyscript.setOptimizeLevelHints(S,T,A),assemblyscript.setNoUnsafe(S,c.noUnsafe),assemblyscript.setGlobalAlias(S,"Math","NativeMath"),assemblyscript.setGlobalAlias(S,"Mathf","NativeMathf"),assemblyscript.setGlobalAlias(S,"abort","~lib/builtins/abort"),assemblyscript.setGlobalAlias(S,"trace","~lib/builtins/trace"),c.use){let e=c.use;for(let n=0,r=e.length;n{F=assemblyscript.compileProgram(E,S)})}catch(e){return t(e)}if(checkDiagnostics(g,i))return F&&F.dispose(),t(Error("Compile error"));if(c.validate&&(u.validateCount++,u.validateTime+=measure(()=>{if(!F.validate())return F.dispose(),t(Error("Validate error"))})),"clamp"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-clamp"])});else if("js"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-js"])});else if("allow"!==c.trapMode)return F.dispose(),t(Error("Unsupported trap mode"));(T>=3||A>=2)&&(T=4),F.setOptimizeLevel(T),F.setShrinkLevel(A),F.setDebugInfo(c.debug);var z=[];if(c.runPasses&&("string"==typeof c.runPasses&&(c.runPasses=c.runPasses.split(",")),c.runPasses.length&&c.runPasses.forEach(e=>{z.indexOf(e)<0&&z.push(e)})),(T>0||A>0)&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.optimize()})),z.length&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(z.map(e=>e.trim()))})),!c.noEmit){let e=!1,n=!1;if(null!=c.outFile&&(/\.was?t$/.test(c.outFile)&&null==c.textFile?c.textFile=c.outFile:/\.js$/.test(c.outFile)&&null==c.asmjsFile?c.asmjsFile=c.outFile:null==c.binaryFile&&(c.binaryFile=c.outFile)),null!=c.binaryFile){let r,s=null!=c.sourceMap?c.sourceMap.length?c.sourceMap:path.basename(c.binaryFile)+".map":null;if(u.emitCount++,u.emitTime+=measure(()=>{r=F.toBinary(s)}),c.binaryFile.length?o(c.binaryFile,r.output,p):(C(r.output),e=!0),n=!0,null!=r.sourceMap)if(c.binaryFile.length){let e=JSON.parse(r.sourceMap);e.sourceRoot=exports.sourceMapRoot,e.sources.forEach((n,r)=>{let i=null;if(n.startsWith(exports.libraryPrefix)){let e=n.substring(exports.libraryPrefix.length).replace(/\.ts$/,"");if(exports.libraryFiles.hasOwnProperty(e))i=exports.libraryFiles[e];else for(let e=0,t=m.length;e{t=F.toAsmjs()}),o(c.asmjsFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=F.toAsmjs()}),C(t),e=!0),n=!0}if(null!=c.idlFile){let t;c.idlFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),o(c.idlFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),C(t),e=!0),n=!0}if(null!=c.tsdFile){let t;c.tsdFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),o(c.tsdFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),C(t),e=!0),n=!0}if(null!=c.textFile||!n){let n;c.textFile&&c.textFile.length?(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),o(c.textFile,n,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),C(n))}}return F.dispose(),c.measure&&printStats(u,i),c.printrtti&&printRTTI(E,i),t(null);function O(e,n){let t=path.resolve(n,e);try{let e;return u.readCount++,u.readTime+=measure(()=>{e=fs.readFileSync(t,{encoding:"utf8"})}),e}catch(e){return null}}function N(e,n,t){try{return u.writeCount++,u.writeTime+=measure(()=>{mkdirp(path.join(t,path.dirname(e))),"string"==typeof n?fs.writeFileSync(path.join(t,e),n,{encoding:"utf8"}):fs.writeFileSync(path.join(t,e),n)}),!0}catch(e){return!1}}function R(e,n){var t;try{return u.readTime+=measure(()=>{t=fs.readdirSync(path.join(n,e)).filter(e=>/^(?!.*\.d\.ts$).*\.ts$/.test(e))}),t}catch(e){return null}}function C(e){C.used||(u.writeCount++,C.used=!0),u.writeTime+=measure(()=>{"string"==typeof e?r.write(e,{encoding:"utf8"}):r.write(e)})}},exports.checkDiagnostics=checkDiagnostics,exports.createStats=createStats,process.hrtime||(process.hrtime=__webpack_require__(14)),exports.measure=measure,exports.formatTime=formatTime,exports.printStats=printStats,exports.printRTTI=printRTTI;var allocBuffer=void 0!==global&&global.Buffer?global.Buffer.allocUnsafe||function(e){return new global.Buffer(e)}:function(e){return new Uint8Array(e)};function createMemoryStream(e){var n=[];return n.write=function(n){if(e&&e(n),"string"==typeof n){let e=allocBuffer(utf8.length(n));utf8.write(n,e,0),n=e}this.push(n)},n.reset=function(){n.length=0},n.toBuffer=function(){for(var e=0,n=0,t=this.length;n191&&r<224?a[o++]=(31&r)<<6|63&e[n++]:r>239&&r<365?(r=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[n++])<<6|63&e[n++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},r.write=function(e,n,t){for(var r,i,a=t,o=0;o>6|192,n[t++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,n[t++]=r>>18|240,n[t++]=r>>12&63|128,n[t++]=r>>6&63|128,n[t++]=63&r|128):(n[t++]=r>>12|224,n[t++]=r>>6&63|128,n[t++]=63&r|128);return t-a}},function(e,n,t){(function(e){var t=void 0!==e&&e||{},r=t.env&&"CI"in t.env;function i(e,t){var i=t||{};return i.supported=e&&!!e.isTTY||r,i.gray=e=>i.supported?n.GRAY+e+n.RESET:e,i.red=e=>i.supported?n.RED+e+n.RESET:e,i.green=e=>i.supported?n.GREEN+e+n.RESET:e,i.yellow=e=>i.supported?n.YELLOW+e+n.RESET:e,i.blue=e=>i.supported?n.BLUE+e+n.RESET:e,i.magenta=e=>i.supported?n.MAGENTA+e+n.RESET:e,i.cyan=e=>i.supported?n.CYAN+e+n.RESET:e,i.white=e=>i.supported?n.WHITE+e+n.RESET:e,i}n.stdout=i(t.stdout,n),n.stderr=i(t.stderr),n.from=i,n.GRAY="",n.RED="",n.GREEN="",n.YELLOW="",n.BLUE="",n.MAGENTA="",n.CYAN="",n.WHITE="",n.RESET=""}).call(this,t(0))},function(e,n){n.parse=function(e,n){var t={},r=[],arguments=[],i=[],a={};Object.keys(n).forEach(e=>{if(!e.startsWith(" ")){var r=n[e];null!=r.alias&&("string"==typeof r.alias?a[r.alias]=e:Array.isArray(r.alias)&&r.alias.forEach(n=>a[n]=e)),null!=r.default&&(t[e]=r.default)}});for(var o=0,s=(e=e.slice()).length;ot[e]=s.value[e])}else r.push(i)}for(;o{var o=e[n];if(null!=o.description){for(var s="";s.length{for(let n=0;n=0?u.substring(l+1):u,i.statements=new Array,i.range=new o.Range(i,0,t.length),i.text=t,i}return i(n,e),Object.defineProperty(n.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),n}(l);n.Source=$;var ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.decorators=null,n.flags=a.CommonFlags.NONE,n}return i(n,e),n.prototype.is=function(e){return(this.flags&e)==e},n.prototype.isAny=function(e){return 0!=(this.flags&e)},n.prototype.set=function(e){this.flags|=e},n}(J);n.DeclarationStatement=ee;var ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INDEXSIGNATUREDECLARATION,n}return i(n,e),n}(ee);n.IndexSignatureDeclaration=ne;var te=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i(n,e),n}(ee);n.VariableLikeDeclarationStatement=te;var re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BLOCK,n}return i(n,e),n}(J);n.BlockStatement=re;var ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BREAK,n}return i(n,e),n}(J);n.BreakStatement=ie;var ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CLASSDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n}(ee);n.ClassDeclaration=ae;var oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CONTINUE,n}return i(n,e),n}(J);n.ContinueStatement=oe;var se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.DO,n}return i(n,e),n}(J);n.DoStatement=se;var ue=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EMPTY,n}return i(n,e),n}(J);n.EmptyStatement=ue;var le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMDECLARATION,n}return i(n,e),n}(ee);n.EnumDeclaration=le;var ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMVALUEDECLARATION,n}return i(n,e),n}(te);n.EnumValueDeclaration=ce;var fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTIMPORT,n}return i(n,e),n}(l);n.ExportImportStatement=fe;var de=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTMEMBER,n}return i(n,e),n}(l);n.ExportMember=de;var pe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORT,n}return i(n,e),n}(J);n.ExportStatement=pe;var he=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTDEFAULT,n}return i(n,e),n}(J);n.ExportDefaultStatement=he;var ge=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPRESSION,n}return i(n,e),n}(J);n.ExpressionStatement=ge;var xe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FIELDDECLARATION,n.parameterIndex=-1,n}return i(n,e),n}(te);n.FieldDeclaration=xe;var ve=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FOR,n}return i(n,e),n}(J);n.ForStatement=ve,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(n.ArrowKind||(n.ArrowKind={}));var me=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FUNCTIONDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},n}(ee);n.FunctionDeclaration=me;var _e=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IF,n}return i(n,e),n}(J);n.IfStatement=_e;var ye=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORTDECLARATION,n}return i(n,e),n}(ee);n.ImportDeclaration=ye;var be=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORT,n}return i(n,e),n}(J);n.ImportStatement=be;var Ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INTERFACEDECLARATION,n}return i(n,e),n}(ae);n.InterfaceDeclaration=Ee;var Te=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.METHODDECLARATION,n}return i(n,e),n}(me);n.MethodDeclaration=Te;var Ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.NAMESPACEDECLARATION,n}return i(n,e),n}(ee);n.NamespaceDeclaration=Ae;var Se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.RETURN,n}return i(n,e),n}(J);n.ReturnStatement=Se;var Fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCHCASE,n}return i(n,e),n}(l);n.SwitchCase=Fe;var Ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCH,n}return i(n,e),n}(J);n.SwitchStatement=Ie;var ze=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.THROW,n}return i(n,e),n}(J);n.ThrowStatement=ze;var Oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TRY,n}return i(n,e),n}(J);n.TryStatement=Oe;var Ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TYPEDECLARATION,n}return i(n,e),n}(ee);n.TypeDeclaration=Ne;var Re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLEDECLARATION,n}return i(n,e),n}(te);n.VariableDeclaration=Re;var Ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLE,n}return i(n,e),n}(J);n.VariableStatement=Ce;var Le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VOID,n}return i(n,e),n}(J);n.VoidStatement=Le;var we=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.WHILE,n}return i(n,e),n}(J);function ke(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}n.WhileStatement=we,n.findDecorator=function(e,n){if(n)for(var t=0,r=n.length;t";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var d=function(){function e(e,n,t){this.debugInfoRef=0,this.source=e,this.start=n,this.end=t}return e.join=function(n,t){if(n.source!=t.source)throw new Error("source mismatch");return new e(n.source,n.startt.end?n.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,n=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&n++;return n},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,n=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++n;return n},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();n.Range=d;var p=function(e){function n(n,t){void 0===t&&(t=null);var r=e.call(this,t)||this;r.end=0,r.pos=0,r.token=-1,r.tokenPos=0,r.nextToken=-1,r.nextTokenPos=0,r.nextTokenOnNewLine=!1,r.onComment=null,r.source=n,r.pos=0,r.end=n.text.length,r.diagnostics=t||new Array;var i=r.end,a=n.text;if(r.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=r){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,r));break}var a=e.charCodeAt(this.pos);if(a==n){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=n){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},n.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var n=this.source.text,t=n.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!r&&47==i)break;if(l.isLineBreak(i)){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(n,this.pos)},n.prototype.readRegexpFlags=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=0;this.pos57)&&95!=r)break;t++}return!0},n.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)t=i64_add(i64_shl(t,r),i64_new(u-48));else if(u>=65&&u<=70)t=i64_add(i64_shl(t,r),i64_new(10+u-65));else if(u>=97&&u<=102)t=i64_add(i64_shl(t,r),i64_new(10+u-97));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readDecimalInteger=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=i64_new(0),i=i64_new(10),a=n;this.pos=48&&u<=57)r=i64_add(i64_mul(r,i),i64_new(u-48));else{if(95!=u)break;a==o&&this.error(a==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),a=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Digit_expected,this.range(n)):a==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),r},n.prototype.readOctalInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(3),i=n,a=this.end;this.pos=48&&u<=55)t=i64_add(i64_shl(t,r),i64_new(u-48));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}++this.pos}return this.pos==n?this.error(s.DiagnosticCode.Octal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readBinaryInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(1),i=n,a=this.end;this.pos=48&&i<=57)n=(n<<4)+i-48;else if(i>=65&&i<=70)n=(n<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";n=(n<<4)+i+-87}if(0==--e)break}return e?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(n)},n.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,n=this.readHexInteger(),t=i64_low(n),r=!1;assert(!i64_high(n)),t>1114111&&(this.error(s.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),r=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),r=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(s.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),r=!0),r?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},n.prototype.finish=function(){},n}(s.DiagnosticEmitter);n.Tokenizer=p;var h=function(){};n.State=h;var g=null},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(n.DiagnosticCode||(n.DiagnosticCode={})),n.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)});Object.defineProperty(n,"__esModule",{value:!0});var a=t(0),o=t(1),s=t(17),u=t(22),l=t(24);function c(e){return e.text.includes("@nearfile")||d(e)}function f(e){return s.ASTBuilder.build(e)}function d(e){return(e.kind==a.NodeKind.SOURCE?e:e.range.source).sourceKind==a.SourceKind.USER_ENTRY}function p(e){return e.kind==a.NodeKind.CLASSDECLARATION}function h(e){return e.kind==a.NodeKind.FIELDDECLARATION}var g=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},n.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],n.sb=[],n.exportedClasses=new Map,n.wrappedFuncs=new Set,n}return i(n,e),n.build=function(e,t){return(new n).build(t)},n.nearFiles=function(e){return e.program.sources.filter(c)},n.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(f(e.name))||this.exportedClasses.set(f(e.name),e)},n.prototype.visitFunctionDeclaration=function(n){!d(n)||this.wrappedFuncs.has(f(n.name))||!n.is(o.CommonFlags.EXPORT)||0==n.signature.parameters.length&&"void"===f(n.signature.returnType)?e.prototype.visitFunctionDeclaration.call(this,n):(this.generateWrapperFunction(n),n.flags=n.flags^o.CommonFlags.EXPORT,this.wrappedFuncs.add(f(n.name)))},n.prototype.generateWrapperFunction=function(e){var n=e.signature,t=n.parameters,r=n.returnType,i=f(r).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),a=f(r).includes("null"),o=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+o+"(): void {"),t.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==f(r)?this.sb.push(" let result: "+f(r)+" = "+o+"("):this.sb.push(" "+o+"("),t.length>0&&(this.sb[this.sb.length-1]+=t.map(function(e){return x(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==f(r)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+i+">() || isNullable<"+i+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+i+">(encoder, result"+(a?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+o+" as "+o+" }\n")},n.prototype.typeName=function(e){if(!p(e))return s.ASTBuilder.build(e);var n=f((e=e).name);return e.isGeneric&&(n+="<"+e.typeParameters.map(f).join(", ")+">"),n},n.prototype.getFields=function(e){var n=p(e)?e:this.exportedClasses.get(f(e));return null==n?[]:n.members.filter(function(e){return e.kind==a.NodeKind.FIELDDECLARATION}).map(function(e){return{name:f(e.name),type:e.type,isGeneric:v(n,e)}})},n.prototype.build=function(e){var n=this;this.sb=[l.preamble],this.visit(e);var t=e.statements.map(function(e){var t=s.ASTBuilder.build(e);if(p(e)){var r=e;if(t=t.slice(0,t.lastIndexOf("}")),r.members.filter(h).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var i=n.typeName(r);t+="\n static decode(json: Uint8Array): "+i+" {\n let value = instantiate<"+i+">(); // Allocate without constructor\n value.decode(JSON.parse(json));\n return value;\n }\n\n decode(obj: Obj): "+i+" {\n "+r.members.filter(h).map(function(e){var n=f(e.name);return x(e,"this."+n+' = obj.has("'+n+'") ? ')+": this."+n+";"}).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+r.members.filter(h).map(function(e){var n=f(e.type),t=f(e.name);return"encode<"+n+">(encoder, this."+t+', "'+t+'");'}).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return t});return this.sb.concat(t).join("\n")},n}(u.BaseVisitor);function x(e,n){return void 0===n&&(n=""),n+"decode<"+f(e.type)+'>(obj, "'+f(e.name)+'")'}function v(e,n){return null!=e.typeParameters&&e.typeParameters.some(function(e){return f(e.name)==f(n.type)})}n.afterParse=function(e,n,t){g.nearFiles(e).forEach(function(r){var i=r.text.substr(0,r.text.indexOf("\n")).includes("out");e.donelog.delete(r.internalPath),e.seenlog.delete(r.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==r});var a=g.build(e,r);i&&n("out/"+r.normalizedPath,a,t),e.parseFile(a,(d(r)?"":"./")+r.normalizedPath,d(r))})}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(n.Feature||(n.Feature={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(n.Target||(n.Target={}))},function(e,n,t){"use strict";var r=this&&this.__decorate||function(e,n,t,r){var i,a=arguments.length,o=a<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,n,t,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(n,t,o):i(n,t))||o);return a>3&&o&&Object.defineProperty(n,t,o),o};Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(){}return r([()=>{}],e)}();n.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(n.TypeinfoFlags||(n.TypeinfoFlags={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i=t(5),a=t(2),o=t(5);function s(e){switch(e){case r.INFO:return"INFO";case r.WARNING:return"WARNING";case r.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case r.INFO:return n.COLOR_BLUE;case r.WARNING:return n.COLOR_YELLOW;case r.ERROR:return n.COLOR_RED;default:return assert(!1),""}}n.DiagnosticCode=o.DiagnosticCode,n.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(r=n.DiagnosticCategory||(n.DiagnosticCategory={})),n.diagnosticCategoryToString=s,n.COLOR_BLUE="",n.COLOR_YELLOW="",n.COLOR_RED="",n.COLOR_RESET="",n.diagnosticCategoryToColor=u;var l=function(){function e(e,n,t){this.range=null,this.relatedRange=null,this.code=e,this.category=n,this.message=t}return e.create=function(n,t,r,a,o){void 0===r&&(r=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(n);return null!=r&&(s=s.replace("{0}",r)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(n,t,s)},e.createInfo=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.INFO,t,i)},e.createWarning=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.WARNING,t,i)},e.createError=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function c(e,t){void 0===t&&(t=!1);for(var r=e.source.text,i=r.length,o=e.start,s=e.end;o>0&&!a.isLineBreak(r.charCodeAt(o-1));)o--;for(;s=0&&n<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(n))),i64_zero)},n.bitsetSet=function(e,n,t){return assert(n>=0&&n<64),t?i64_or(e,i64_shl(i64_one,i64_new(n))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(n))))}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(n.CharCode||(n.CharCode={})),n.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},n.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},n.isDecimalDigit=function(e){return e>=48&&e<=57},n.isOctalDigit=function(e){return e>=48&&e<=55},n.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,r);var n},n.isKeywordCharacter=function(e){return e>=97&&e<=122},n.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,i);var n};var r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,n){if(e>1),(r=n[t-=1&t])<=e&&e<=n[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0}),n.makeArray=function(e){if(void 0===e&&(e=null),e){for(var n=new Array(e.length),t=0,r=e.length;t0||r=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=n?e.substring(0,a):e.substring(0,a)+e.substring(t+3),r-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){r=(e=e.substring(t+4)).length;continue}}}t++}return r>0?e:"."}function o(e){var n=e.length;if(n<=1){if(0==n)return".";if(e.charCodeAt(0)==i)return e}for(;--n>0;)if(e.charCodeAt(n)==i)return e.substring(0,n);return"."}n.normalizePath=a,n.resolvePath=function(e,n){return e.startsWith("std/")?e:a(o(n)+r.PATH_DELIMITER+e)},n.dirname=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.indent=function(e,n){for(;n>=4;)e.push(" "),n-=4;n>=2&&(e.push(" "),n-=2),n&&e.push(" ")}},function(e,n,t){"use strict";function r(e,n){return e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24}function i(e,n,t){n[t]=e,n[t+1]=e>>>8,n[t+2]=e>>>16,n[t+3]=e>>>24}function a(e,n){var t=r(e,n),i=r(e,n+4);return i64_new(t,i)}Object.defineProperty(n,"__esModule",{value:!0}),n.readI8=function(e,n){return e[n]},n.writeI8=function(e,n,t){n[t]=e},n.readI16=function(e,n){return e[n]|e[n+1]<<8},n.writeI16=function(e,n,t){n[t]=e,n[t+1]=e>>>8},n.readI32=r,n.writeI32=i,n.readI64=a,n.writeI64=function(e,n,t){i(i64_low(e),n,t),i(i64_high(e),n,t+4)},n.readF32=function(e,n){return i32_as_f32(r(e,n))},n.writeF32=function(e,n,t){i(f32_as_i32(e),n,t)},n.readF64=function(e,n){return i64_as_f64(a(e,n))},n.writeF64=function(e,n,t){var r=f64_as_i64(e);i(i64_low(r),n,t),i(i64_high(r),n,t+4)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(0);t(18),t(19),t(20);var i=t(1),a=t(2),o=t(4),s=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(n){var t=new e;return t.visitNode(n),t.finish()},e.prototype.visitNode=function(e){switch(e.kind){case r.NodeKind.SOURCE:this.visitSource(e);break;case r.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case r.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case r.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case r.NodeKind.FALSE:case r.NodeKind.NULL:case r.NodeKind.SUPER:case r.NodeKind.THIS:case r.NodeKind.TRUE:case r.NodeKind.CONSTRUCTOR:case r.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case r.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case r.NodeKind.BINARY:this.visitBinaryExpression(e);break;case r.NodeKind.CALL:this.visitCallExpression(e);break;case r.NodeKind.CLASS:this.visitClassExpression(e);break;case r.NodeKind.COMMA:this.visitCommaExpression(e);break;case r.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case r.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case r.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case r.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case r.NodeKind.NEW:this.visitNewExpression(e);break;case r.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case r.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case r.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case r.NodeKind.BLOCK:this.visitBlockStatement(e);break;case r.NodeKind.BREAK:this.visitBreakStatement(e);break;case r.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case r.NodeKind.DO:this.visitDoStatement(e);break;case r.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case r.NodeKind.EXPORT:this.visitExportStatement(e);break;case r.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case r.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case r.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case r.NodeKind.FOR:this.visitForStatement(e);break;case r.NodeKind.IF:this.visitIfStatement(e);break;case r.NodeKind.IMPORT:this.visitImportStatement(e);break;case r.NodeKind.RETURN:this.visitReturnStatement(e);break;case r.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case r.NodeKind.THROW:this.visitThrowStatement(e);break;case r.NodeKind.TRY:this.visitTryStatement(e);break;case r.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case r.NodeKind.WHILE:this.visitWhileStatement(e);break;case r.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case r.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case r.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case r.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case r.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case r.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case r.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case r.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case r.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case r.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case r.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case r.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case r.NodeKind.DECORATOR:this.serializeDecorator(e);break;case r.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case r.NodeKind.PARAMETER:this.serializeParameter(e);break;case r.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var n=e.statements,t=0,r=n.length;t")}e.isNullable&&r.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var n=e.isNullable,t=this.sb;t.push(n?"((":"(");var r=e.explicitThisType;r&&(t.push("this: "),this.visitTypeNode(r));var i=e.parameters,a=i.length;if(a){r&&t.push(", "),this.serializeParameter(i[0]);for(var o=1;o "),this.visitTypeNode(s)):t.push(") => void"),n&&t.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var n=e.extendsType;n&&(this.sb.push(" extends "),this.visitTypeNode(n));var t=e.defaultType;t&&(this.sb.push("="),this.visitTypeNode(t))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var n=this.sb;n.push("[");var t=e.elementExpressions,r=t.length;if(r){t[0]&&this.visitNode(t[0]);for(var i=1;i"),this.visitNode(e.expression);break;case r.AssertionKind.AS:this.visitNode(e.expression),n.push(" as "),this.visitTypeNode(assert(e.toType));break;case r.AssertionKind.NONNULL:this.visitNode(e.expression),n.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var n=this.sb;this.visitNode(e.left),n.push(" "),n.push(o.operatorTokenToString(e.operator)),n.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var n=this.sb;this.visitNode(e.expression);var t=e.typeArguments;if(t){var r=t.length;if(r){n.push("<"),this.visitTypeNode(t[0]);for(var i=1;i(")}}else n.push("(");var a=e.arguments,o=a.length;if(o)for(this.visitNode(a[0]),i=1;ir&&t.push(e.substring(r,r=a+1)),t.push("\\0"),r=++a;break;case 8:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\b");break;case 9:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\t");break;case 10:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\n");break;case 11:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\v");break;case 12:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\f");break;case 13:a>r&&t.push(e.substring(r,a)),t.push("\\r"),r=++a;break;case 34:n?++a:(a>r&&t.push(e.substring(r,a)),t.push('\\"'),r=++a);break;case 39:n?(a>r&&t.push(e.substring(r,a)),t.push("\\'"),r=++a):++a;break;case 92:a>r&&t.push(e.substring(r,a)),t.push("\\\\"),r=++a;break;default:++a}a>r&&t.push(e.substring(r,a)),t.push(i)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var n=this.sb;n.push("/"),n.push(e.pattern),n.push("/"),n.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var n=this.sb;n.push("("),this.visitNode(e.expression),n.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var n=this.sb;this.visitNode(e.condition),n.push(" ? "),this.visitNode(e.ifThen),n.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(o.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(o.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var n=this.sb;if(n.length&&e.kind!=r.NodeKind.VARIABLE&&e.kind!=r.NodeKind.EXPRESSION){var t=n[n.length-1],i=t.length-1;i>=0&&(125==t.charCodeAt(i)||59==t.charCodeAt(i))?n.push("\n"):n.push(";\n")}else n.push(";\n")},e.prototype.visitBlockStatement=function(e){var n=this.sb,t=e.statements,r=t.length;if(r){n.push("{\n");for(var i=++this.indentLevel,o=0;o")}var c=e.extendsType;c&&(u.push(" extends "),this.visitTypeNode(c));var f=e.implementsTypes;if(f){var d=f.length;if(d)for(u.push(" implements "),this.visitTypeNode(f[0]),o=1;o")}}if(2==e.arrowKind){var u=t.parameters;assert(1==u.length),assert(!t.explicitThisType),this.serializeParameter(u[0])}else{n.push("(");var l=(u=t.parameters).length,c=t.explicitThisType;if(c&&(n.push("this: "),this.visitTypeNode(c)),l)for(c&&n.push(", "),this.serializeParameter(u[0]),s=1;s "),this.visitNode(f)):(assert(!r.isTypeOmitted(d)),n.push(" => "),this.visitTypeNode(d)):(r.isTypeOmitted(d)||e.isAny(i.CommonFlags.CONSTRUCTOR|i.CommonFlags.SET)?n.push(")"):(n.push("): "),this.visitTypeNode(d)),f&&(n.push(" "),this.visitNode(f)))},e.prototype.visitIfStatement=function(e){var n=this.sb;n.push("if ("),this.visitNode(e.condition),n.push(") ");var t=e.ifTrue;this.visitNode(t),t.kind!=r.NodeKind.BLOCK&&n.push(";\n");var i=e.ifFalse;i&&(t.kind==r.NodeKind.BLOCK?n.push(" else "):n.push("else "),this.visitNode(i))},e.prototype.visitImportDeclaration=function(e){var n=e.foreignName,t=e.name;this.visitIdentifierExpression(n),n.text!=t.text&&(this.sb.push(" as "),this.visitIdentifierExpression(t))},e.prototype.visitImportStatement=function(e){var n=this.sb;n.push("import ");var t=e.declarations,r=e.namespaceName;if(t){var i=t.length;if(i){n.push("{\n");var o=++this.indentLevel;a.indent(n,o),this.visitImportDeclaration(t[0]);for(var s=1;s")}var u=e.extendsType;u&&(o.push(" extends "),this.visitTypeNode(u)),o.push(" {\n");var l=++this.indentLevel,c=e.members;for(r=0,i=c.length;r")}}i.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var n=e.type,t=this.sb;e.flags&i.CommonFlags.DEFINITE_ASSIGNMENT&&t.push("!"),n&&(t.push(": "),this.visitTypeNode(n));var r=e.initializer;r&&(t.push(" = "),this.visitNode(r))},e.prototype.visitVariableStatement=function(e){var n=e.decorators;if(n)for(var t=0,r=n.length;t>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(n.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(n.i32=n.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(n.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(n.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(n.u32=n.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(n.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(n.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(n.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),n.clz=Math.clz32,n.ctz=function(e){var n=Math.clz32(e&-e);return e?31-n:n},n.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},n.rotl=function(e,n){return e<<(n&=31)|e>>>32-n},n.rotr=function(e,n){return e>>>(n&=31)|e<<32-n},n.abs=Math.abs,n.max=Math.max,n.min=Math.min,n.ceil=Math.ceil,n.floor=Math.floor,n.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},n.select=function(e,n,t){return t?e:n},n.sqrt=Math.sqrt,n.trunc=Math.trunc,n.copysign=function(e,n){return Math.abs(e)*Math.sign(n)},n.bswap=function(e){var n=e>>8&16711935,t=(16711935&e)<<8;return(n=(e=n|t)>>16&65535)|(65535&e)<<16},n.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",n.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",n.assert=function(e,n){if(e)return e;throw new a(n)},n.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,n){var t=this.split(e).join(n);return e.length||(t=n+t+n),t}}),n.isInteger=Number.isInteger,n.isFloat=function(e){return"number"==typeof e},n.isNullable=function(e){return!0},n.isReference=function(e){return"object"==typeof e||"string"==typeof e},n.isFunction=function(e){return"function"==typeof e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isArray=Array.isArray,n.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var n=new Array(e);return n.length=0,n},n.isDefined=function(e){return void 0!==e},n.isConstant=function(e){return!1},n.unchecked=function(e){return e},n.fmod=function(e,n){return e%n},n.fmodf=function(e,n){return Math.fround(e%n)},n.JSMath=Math;try{Object.defineProperties(n.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(r[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}n.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:n.__memory_allocate||function(n){if(!(n>>>=0))return 0;if(t+n>e.length){var r=e;(e=new Uint8Array(Math.max(65536,e.length+n,2*e.length))).set(r)}var i=t;return 7&(t+=n)&&(t=1+(7|t)),i},fill:n.__memory_fill||function(n,t,r){e.fill(t,n,n+r)},free:n.__memory_free||function(e){},copy:n.__memory_copy||function(n,t,r){e.copyWithin(n,t,t+r)},reset:n.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),n.store=n.__store||function(e,n,t){HEAP[(0|e)+(0|t)]=n},n.load=n.__load||function(e,n){return HEAP[(0|e)+(0|n)]},n.unmanaged=function(){}}).call(this,t(3))},function(e,n,t){(function(e){const n=new Float64Array(1),t=new Float32Array(n.buffer),r=new Int32Array(n.buffer);e.f32_as_i32=function(e){return t[0]=e,r[0]},e.i32_as_f32=function(e){return r[0]=e,t[0]},e.f64_as_i64=function(e){return n[0]=e,i64_new(r[0],r[1])},e.i64_as_f64=function(e){return r[0]=i64_low(e),r[1]=i64_high(e),n[0]}}).call(this,t(3))},function(e,n,t){(function(e){const n=e.Long||t(21);e.i64_zero=n.ZERO,e.i64_one=n.ONE,e.i64_new=function(e,t){return n.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,n){return e.add(n)},e.i64_sub=function(e,n){return e.sub(n)},e.i64_mul=function(e,n){return e.mul(n)},e.i64_div=function(e,n){return e.div(n)},e.i64_div_u=function(e,n){return e.toUnsigned().div(n.toUnsigned()).toSigned()},e.i64_rem=function(e,n){return e.mod(n)},e.i64_rem_u=function(e,n){return e.toUnsigned().mod(n.toUnsigned()).toSigned()},e.i64_and=function(e,n){return e.and(n)},e.i64_or=function(e,n){return e.or(n)},e.i64_xor=function(e,n){return e.xor(n)},e.i64_shl=function(e,n){return e.shl(n)},e.i64_shr=function(e,n){return e.shr(n)},e.i64_shr_u=function(e,n){return e.shru(n)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,n){return e.eq(n)},e.i64_ne=function(e,n){return e.ne(n)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var r=n.fromInt(t-1);return e.add(r).and(r.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const r=n.fromNumber(f32.MIN_SAFE_INTEGER),i=n.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(r)&&e.lte(i)};const a=n.fromNumber(f64.MIN_SAFE_INTEGER),o=n.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(n){return e.Math.fround(n.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,n){return(n?e.toUnsigned():e).toString(10)}}).call(this,t(3))},function(e,n){e.exports=r;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function r(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0}),r.isLong=i;var a={},o={};function s(e,n){var t,r,i;return n?(i=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(t=l(e,(0|e)<0?-1:0,!0),i&&(o[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function u(e,n){if(isNaN(e))return n?m:v;if(n){if(e<0)return m;if(e>=h)return T}else{if(e<=-g)return A;if(e+1>=g)return E}return e<0?u(-e,n).neg():l(e%p|0,e/p|0,n)}function l(e,n,t){return new r(e,n,t)}r.fromInt=s,r.fromNumber=u,r.fromBits=l;var c=Math.pow;function f(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return v;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return f(e.substring(1),n,t).neg();for(var i=u(c(t,8)),a=v,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return l+o;for(;l.length<6;)l="0"+l;o=""+l+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(A)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,n=31;n>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=d(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=d(e)),this.eq(e))return 0;var n=this.isNegative(),t=e.isNegative();return n&&!t?-1:!n&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(A)?A:this.not().add(_)},S.neg=S.negate,S.add=function(e){i(e)||(e=d(e));var n=this.high>>>16,t=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,u=e.low>>>16,c=0,f=0,p=0,h=0;return p+=(h+=a+(65535&e.low))>>>16,f+=(p+=r+u)>>>16,c+=(f+=t+s)>>>16,c+=n+o,l((p&=65535)<<16|(h&=65535),(c&=65535)<<16|(f&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=d(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return v;if(i(e)||(e=d(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return v;if(this.eq(A))return e.isOdd()?A:v;if(e.eq(A))return this.isOdd()?A:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(x)&&e.lt(x))return u(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,r=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,h=0,g=0,m=0,_=0;return m+=(_+=o*p)>>>16,g+=(m+=a*p)>>>16,m&=65535,g+=(m+=o*f)>>>16,h+=(g+=r*p)>>>16,g&=65535,h+=(g+=a*f)>>>16,g&=65535,h+=(g+=o*c)>>>16,h+=n*p+r*f+a*c+o*s,l((m&=65535)<<16|(_&=65535),(h&=65535)<<16|(g&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=d(e)),e.isZero())throw Error("division by zero");var n,r,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return m;if(e.gt(this.shru(1)))return y;a=m}else{if(this.eq(A))return e.eq(_)||e.eq(b)?A:e.eq(A)?_:(n=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?_:b:(r=this.sub(e.mul(n)),a=n.add(r.div(e)));if(e.eq(A))return this.unsigned?m:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=v}for(r=this;r.gte(e);){n=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),s=o<=48?1:c(2,o-48),f=u(n),p=f.mul(e);p.isNegative()||p.gt(r);)p=(f=u(n-=s,this.unsigned)).mul(e);f.isZero()&&(f=_),a=a.add(f),r=r.sub(p)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=d(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return l(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=d(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=d(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=d(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0==(e&=63))return this;var n=this.high;return e<32?l(this.low>>>e|n<<32-e,n>>>e,this.unsigned):l(32===e?n:n>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,n=this.low;return[255&n,n>>>8&255,n>>>16&255,n>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,n>>>24,n>>>16&255,n>>>8&255,255&n]},r.fromBytes=function(e,n,t){return t?r.fromBytesLE(e,n):r.fromBytesBE(e,n)},r.fromBytesLE=function(e,n){return new r(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},r.fromBytesBE=function(e,n){return new r(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}),a=this&&this.__values||function(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(n,"__esModule",{value:!0});var o=t(0),s=function(e){function n(n){var t=e.call(this,n)||this;return t.depth=0,t}return i(n,e),n.prototype._visit=function(e){switch(e.kind){case o.NodeKind.SOURCE:this.visitSource(e);break;case o.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case o.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case o.NodeKind.TYPENAME:this.visitTypeName(e);case o.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case o.NodeKind.FALSE:case o.NodeKind.NULL:case o.NodeKind.SUPER:case o.NodeKind.THIS:case o.NodeKind.TRUE:case o.NodeKind.CONSTRUCTOR:case o.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case o.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case o.NodeKind.BINARY:this.visitBinaryExpression(e);break;case o.NodeKind.CALL:this.visitCallExpression(e);break;case o.NodeKind.CLASS:this.visitClassExpression(e);break;case o.NodeKind.COMMA:this.visitCommaExpression(e);break;case o.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case o.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case o.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case o.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case o.NodeKind.NEW:this.visitNewExpression(e);break;case o.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case o.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case o.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case o.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case o.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case o.NodeKind.BLOCK:this.visitBlockStatement(e);break;case o.NodeKind.BREAK:this.visitBreakStatement(e);break;case o.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case o.NodeKind.DO:this.visitDoStatement(e);break;case o.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case o.NodeKind.EXPORT:this.visitExportStatement(e);break;case o.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case o.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case o.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case o.NodeKind.FOR:this.visitForStatement(e);break;case o.NodeKind.IF:this.visitIfStatement(e);break;case o.NodeKind.IMPORT:this.visitImportStatement(e);break;case o.NodeKind.RETURN:this.visitReturnStatement(e);break;case o.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case o.NodeKind.THROW:this.visitThrowStatement(e);break;case o.NodeKind.TRY:this.visitTryStatement(e);break;case o.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case o.NodeKind.WHILE:this.visitWhileStatement(e);break;case o.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case o.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case o.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case o.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case o.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case o.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case o.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case o.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case o.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case o.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case o.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case o.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case o.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case o.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case o.NodeKind.PARAMETER:this.visitParameter(e);break;case o.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},n.prototype.visitSource=function(e){var n,t;try{for(var r=a(e.statements),i=r.next();!i.done;i=r.next()){var o=i.value;this.depth++,this.visit(o),this.depth--}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}},n.prototype.visitTypeNode=function(e){},n.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},n.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},n.prototype.visitFunctionTypeNode=function(e){var n,t;try{for(var r=a(e.parameters),i=r.next();!i.done;i=r.next()){var o=i.value;this.visit(o)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}this.visit(e.returnType)},n.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},n.prototype.visitIdentifierExpression=function(e){},n.prototype.visitArrayLiteralExpression=function(e){var n=this;e.elementExpressions.map(function(e){e&&n.visit(e)})},n.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var n=0;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();n.DefaultWriter=a;var o=function(){function e(e){void 0===e&&(e=new a),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var n,t,a,o,s,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var l=r(e.entries()),c=l.next();!c.done;c=l.next()){var f=i(c.value,2),d=(f[0],f[1]);this.visit(d)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}else if(null!=(s=e)&&"function"==typeof s[Symbol.iterator])try{for(var p=r(e),h=p.next();!h.done;h=p.next())d=h.value,this.visit(d)}catch(e){a={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(a)throw a.error}}else this._visit(e)},e}();n.AbstractVisitor=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])},function(e,n){if(void 0===__WEBPACK_EXTERNAL_MODULE__11__){var t=new Error("Cannot find module 'assemblyscript'");throw t.code="MODULE_NOT_FOUND",t}e.exports=__WEBPACK_EXTERNAL_MODULE__11__},function(e){e.exports=JSON.parse('{"version":{"description":"Prints just the compiler\'s version and exits.","type":"b","alias":"v"},"help":{"description":"Prints this message and exits.","type":"b","alias":"h"},"optimize":{"description":["Optimizes the module. Also has the usual shorthands:",""," -O Uses defaults. Equivalent to -O3s"," -O0 Equivalent to --optimizeLevel 0"," -O1 Equivalent to --optimizeLevel 1"," -O2 Equivalent to --optimizeLevel 2"," -O3 Equivalent to --optimizeLevel 3"," -Oz Equivalent to -O but with --shrinkLevel 2"," -O3s Equivalent to -O3 with --shrinkLevel 1 etc.",""],"type":"b","alias":"O"},"optimizeLevel":{"description":"How much to focus on optimizing code. [0-3]","type":"i"},"shrinkLevel":{"description":"How much to focus on shrinking code size. [0-2, s=1, z=2]","type":"i"},"validate":{"description":"Validates the module using Binaryen. Exits if invalid.","type":"b","alias":"c","default":false},"baseDir":{"description":"Specifies the base directory of input and output files.","type":"s","default":"."},"outFile":{"description":"Specifies the output file. File extension indicates format.","type":"s","alias":"o"},"binaryFile":{"description":"Specifies the binary output file (.wasm).","type":"s","alias":"b"},"textFile":{"description":"Specifies the text output file (.wat).","type":"s","alias":"t"},"asmjsFile":{"description":"Specifies the asm.js output file (.js).","type":"s","alias":"a"},"idlFile":{"description":"Specifies the WebIDL output file (.webidl).","type":"s","alias":"i"},"tsdFile":{"description":"Specifies the TypeScript definition output file (.d.ts).","type":"s","alias":"d"},"sourceMap":{"description":["Enables source map generation. Optionally takes the URL","used to reference the source map from the binary file."],"type":"s"},"runtime":{"description":["Specifies the runtime variant to include in the program.",""," full Default runtime based on TLSF and reference counting."," half Same as \'full\', but not exported to the host."," stub Minimal stub implementation without free/GC support."," none Same as \'stub\', but not exported to the host.",""],"type":"s","default":"full"},"noUnsafe":{"description":["Disallows the use of unsafe features in user code.","Does not affect library files and external modules."],"type":"b","default":false},"debug":{"description":"Enables debug information in emitted binaries.","type":"b","default":false},"noAssert":{"description":"Replaces assertions with just their value without trapping.","type":"b","default":false},"noEmit":{"description":"Performs compilation as usual but does not emit code.","type":"b","default":false},"importMemory":{"description":"Imports the memory instance provided by the embedder.","type":"b","default":false},"sharedMemory":{"description":"Declare memory as shared by settings the max shared memory.","type":"i","default":0},"memoryBase":{"description":"Sets the start offset of compiler-generated static memory.","type":"i","default":0},"importTable":{"description":"Imports the function table instance provided by the embedder.","type":"b","default":false},"explicitStart":{"description":"Exports an explicit start function to be called manually.","type":"b","default":false},"lib":{"description":["Adds one or multiple paths to custom library components and","uses exports of all top-level files at this path as globals."],"type":"s"},"path":{"description":["Comma separated paths to look for dependencies.","Looks for folders with package.json that includes a \'ascMain\' field","or defaults to having an \'/assembly\' folder."],"type":"S"},"use":{"description":["Aliases a global object under another name, e.g., to switch","the default \'Math\' implementation used: --use Math=JSMath"],"type":"S","alias":"u"},"trapMode":{"description":["Sets the trap mode to use.",""," allow Allow trapping operations. This is the default."," clamp Replace trapping operations with clamping semantics."," js Replace trapping operations with JS semantics.",""],"type":"s","default":"allow"},"runPasses":{"description":["Specifies additional Binaryen passes to run after other","optimizations, if any. See: Binaryen/src/passes/pass.cpp"],"type":"s"},"enable":{"description":["Enables additional (experimental) WebAssembly features.",""," sign-extension Enables sign-extension operations"," mutable-global Enables mutable global imports and exports"," bulk-memory Enables bulk memory operations"," simd Enables SIMD types and operations."," threads Enables threading and atomic operations.",""],"type":"s"},"transform":{"description":"Specifies the path to a custom transform to \'require\'.","type":"S"},"traceResolution":{"description":"Enable tracing of package resolution.","type":"b","default":false},"listFiles":{"description":"List files to be compiled and exit.","type":"b","default":false},"measure":{"description":"Prints measuring information on I/O and compile times.","type":"b","default":false},"printrtti":{"description":"Prints the module\'s runtime type information to stderr.","type":"b","default":false},"noColors":{"description":"Disables terminal colors.","type":"b","default":false}," ...":{"description":"Specifies node.js options (CLI only). See: node --help"},"-Os":{"value":{"optimize":true,"shrinkLevel":1}},"-Oz":{"value":{"optimize":true,"shrinkLevel":2}},"-O0":{"value":{"optimizeLevel":0,"shrinkLevel":0}},"-O1":{"value":{"optimizeLevel":1,"shrinkLevel":0}},"-O2":{"value":{"optimizeLevel":2,"shrinkLevel":0}},"-O3":{"value":{"optimizeLevel":3,"shrinkLevel":0}},"-O0s":{"value":{"optimizeLevel":0,"shrinkLevel":1}},"-O1s":{"value":{"optimizeLevel":1,"shrinkLevel":1}},"-O2s":{"value":{"optimizeLevel":2,"shrinkLevel":1}},"-O3s":{"value":{"optimizeLevel":3,"shrinkLevel":1}},"-O0z":{"value":{"optimizeLevel":0,"shrinkLevel":2}},"-O1z":{"value":{"optimizeLevel":1,"shrinkLevel":2}},"-O2z":{"value":{"optimizeLevel":2,"shrinkLevel":2}},"-O3z":{"value":{"optimizeLevel":3,"shrinkLevel":2}},"notNear":{"description":"Prevent the instrumentation of the binding code for near","type":"b","default":false}}')},function(e,n){function t(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=13},function(e,n,t){(function(n,t){e.exports=n.hrtime||function(e){var n=.001*i.call(r),t=Math.floor(n),a=Math.floor(n%1*1e9);e&&(t-=e[0],(a-=e[1])<0&&(t--,a+=1e9));return[t,a]};var r=t.performance||{},i=r.now||r.mozNow||r.msNow||r.oNow||r.webkitNow||function(){return(new Date).getTime()}}).call(this,t(0),t(2))}])}); //# sourceMappingURL=asc.js.map \ No newline at end of file diff --git a/dist/asc.js.map b/dist/asc.js.map index 09f24f57d8..bb3da0a3b5 100644 --- a/dist/asc.js.map +++ b/dist/asc.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/./asc.js","webpack://asc/../node_modules/@protobufjs/utf8/index.js","webpack://asc/./util/colors.js","webpack://asc/./util/options.js","webpack://asc/./util/mkdirp.js","webpack://asc/../bindings/dist/transformerBundle.js","webpack://asc/external \"assemblyscript\"","webpack://asc/. sync","webpack://asc/../node_modules/browser-process-hrtime/index.js"],"names":["root","factory","exports","module","require","e","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__11__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","args","Array","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","g","Function","window","global","fs","utf8","colorsUtil","optionsUtil","mkdirp","EOL","SEP","nearBindings","nearLibEntry","removeAllListeners","assemblyscript","isDev","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","write","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","hrtime","times","formatTime","time","toFixed","printStats","stats","output","format","count","stdout","printRTTI","program","buildRTTI","register","project","e_ts","eval","stack","isBundle","version","options","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","nearEntry","array","arraybuffer","bindings/Date","bindings/Math","bindings/wasi_unstable","bindings/wasi","builtins","compat","dataview","date","diagnostics","error","fixedarray","heap","iterator","map","math","memory","number","polyfills","regexp","rt","rt/common","rt/index-full","rt/index-half","rt/index-none","rt/index-stub","rt/pure","rt/rtrace","rt/stub","rt/tlsf","set","shared/feature","shared/target","shared/typeinfo","string","symbol","table","typedarray","util/error","util/hash","util/memory","util/number","util/sort","util/string","vector","libDir","libFiles","sync","bundled","readFileSync","forEach","file","replace","definitionFiles","assembly","portable","stdDir","compileString","sources","input.ts","createMemoryStream","keys","val","isArray","String","main","readFile","writeFile","contents","listFiles","callback","readFileNode","writeFileNode","listFilesNode","opts","parse","noColors","supported","unknown","arg","yellow","trailing","err","red","help","out","color","white","cyan","baseDir","transforms","notNear","transform","parser","packages","Map","importPathMap","libPath","indexOf","parseFile","customLibDirs","lib","k","endsWith","j","libText","nodePaths","basePath","_path","_","dirFrom","reverse","getPaths","parseBacklog","sourcePath","sourceText","sysPath","nextFile","dependee","getDependee","startsWith","plainName","substring","indexName","traceResolution","_package","ascMain","has","package_json","JSON","mainFile","newPackage","realPath","_p","first","second","runtimeName","runtime","runtimePath","runtimeText","filename","applyTransform","finishParsing","normalizedPath","sort","optimizeLevel","shrinkLevel","optimize","max","compilerOptions","createOptions","setTarget","setNoAssert","noAssert","setImportMemory","importMemory","setSharedMemory","sharedMemory","setImportTable","importTable","setExplicitStart","explicitStart","setMemoryBase","memoryBase","setSourceMap","sourceMap","setOptimizeLevelHints","setNoUnsafe","noUnsafe","setGlobalAlias","use","aliases","part","alias","enable","flag","toUpperCase","enableFeature","compileProgram","dispose","validate","trapMode","runPasses","setOptimizeLevel","setShrinkLevel","setDebugInfo","debug","pass","noEmit","hasStdout","hasOutput","outFile","test","textFile","asmjsFile","binaryFile","wasm","sourceMapURL","toBinary","writeStdout","sourceRoot","text","stdName","sourceContents","stringify","asm","toAsmjs","idlFile","idl","buildIDL","tsdFile","tsd","buildTSD","wat","toText","printrtti","encoding","writeFileSync","files","readdirSync","used","allocBuffer","Buffer","allocUnsafe","Uint8Array","stream","chunk","buffer","reset","toBuffer","offset","toString","read","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","target","noLib","types","allowJs","fromCharCode","c1","c2","proc","isCI","base","colors","gray","GRAY","RESET","RED","green","GREEN","YELLOW","blue","BLUE","magenta","MAGENTA","CYAN","WHITE","config","option","default","match","exec","type","parseInt","parseFloat","indent","padding","eol","sb","description","line","_0777","made","undefined","mkdirSync","err0","stat","statSync","err1","isDirectory","__extends","setPrototypeOf","__proto__","constructor","a","Token","Range","u","SOURCE","NAMEDTYPE","FUNCTIONTYPE","TYPENAME","TYPEPARAMETER","PARAMETER","IDENTIFIER","ASSERTION","BINARY","CALL","CLASS","COMMA","ELEMENTACCESS","FALSE","FUNCTION","INSTANCEOF","LITERAL","NEW","NULL","PARENTHESIZED","PROPERTYACCESS","TERNARY","SUPER","THIS","TRUE","CONSTRUCTOR","UNARYPOSTFIX","UNARYPREFIX","BLOCK","BREAK","CONTINUE","DO","EMPTY","EXPORT","EXPORTDEFAULT","EXPORTIMPORT","EXPRESSION","FOR","IF","IMPORT","RETURN","SWITCH","THROW","TRY","VARIABLE","VOID","WHILE","CLASSDECLARATION","ENUMDECLARATION","ENUMVALUEDECLARATION","FIELDDECLARATION","FUNCTIONDECLARATION","IMPORTDECLARATION","INDEXSIGNATUREDECLARATION","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","TYPEDECLARATION","VARIABLEDECLARATION","DECORATOR","EXPORTMEMBER","SWITCHCASE","COMMENT","NodeKind","nodeIsConstantValue","nodeIsCallable","nodeIsGenericCallable","createTypeName","range","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","h","typeArguments","isNullable","createFunctionType","parameters","returnType","explicitThisType","createOmittedType","createTypeParameter","extendsType","defaultType","createParameter","initializer","parameterKind","createDecorator","v","decoratorKind","A","createComment","commentKind","y","isQuoted","createEmptyIdentifierExpression","createArrayLiteralExpression","S","elementExpressions","createAssertionExpression","R","assertionKind","expression","toType","createBinaryExpression","b","operator","left","right","createCallExpression","I","createClassExpression","L","declaration","createCommaExpression","C","expressions","createConstructorExpression","O","createElementAccessExpression","x","elementExpression","createFalseExpression","Q","createFloatLiteralExpression","P","createFunctionExpression","D","createInstanceOfExpression","U","isType","createIntegerLiteralExpression","w","createNewExpression","M","createNullExpression","createObjectLiteralExpression","F","names","values","createParenthesizedExpression","K","createPropertyAccessExpression","B","createRegexpLiteralExpression","H","pattern","patternFlags","createTernaryExpression","G","condition","ifThen","ifElse","createStringLiteralExpression","Y","createSuperExpression","V","createThisExpression","z","createTrueExpression","X","createUnaryPostfixExpression","W","operand","createUnaryPrefixExpression","q","createBlockStatement","ne","statements","createBreakStatement","re","label","createClassDeclaration","se","flags","typeParameters","implementsTypes","members","decorators","createContinueStatement","ae","createDoStatement","oe","statement","createEmptyStatement","ue","createEnumDeclaration","ce","createEnumValueDeclaration","_e","createExportStatement","le","normalizePath","resolvePath","source","internalPath","we","isDeclare","createExportDefaultStatement","de","createExportImportStatement","pe","externalName","createExportMember","he","localName","exportedName","createExpressionStatement","Ee","createIfStatement","me","ifTrue","ifFalse","createImportStatement","Ne","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","Te","foreignName","createInterfaceDeclaration","ye","createFieldDeclaration","fe","createForStatement","Ae","incrementor","createFunctionDeclaration","ve","signature","body","arrowKind","createIndexSignatureDeclaration","te","keyType","valueType","createMethodDeclaration","ge","createNamespaceDeclaration","Se","createReturnStatement","Re","createSwitchStatement","Ie","cases","createSwitchCase","be","createThrowStatement","Le","createTryStatement","Ce","catchVariable","catchStatements","finallyStatements","createTypeDeclaration","Oe","createVariableStatement","Pe","createVariableDeclaration","xe","createVoidStatement","De","createWhileStatement","Ue","Node","TypeNode","kind","TypeName","NamedTypeNode","FunctionTypeNode","TypeParameterNode","DEFAULT","OPTIONAL","REST","ParameterKind","E","implicitFieldDeclaration","CommonFlags","NONE","is","isAny","assert","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","ParameterNode","DecoratorKind","decoratorNameToKind","DecoratorNode","LINE","TRIPLE","CommentKind","CommentNode","T","Expression","N","IdentifierExpression","FLOAT","INTEGER","STRING","REGEXP","ARRAY","OBJECT","LiteralKind","LiteralExpression","literalKind","ArrayLiteralExpression","PREFIX","AS","NONNULL","AssertionKind","AssertionExpression","BinaryExpression","configurable","CallExpression","ClassExpression","CommaExpression","CommonSymbols","ConstructorExpression","ElementAccessExpression","FloatLiteralExpression","FunctionExpression","InstanceOfExpression","IntegerLiteralExpression","NewExpression","null_","NullExpression","ObjectLiteralExpression","ParenthesizedExpression","PropertyAccessExpression","RegexpLiteralExpression","TernaryExpression","StringLiteralExpression","super_","SuperExpression","this_","ThisExpression","true_","TrueExpression","false_","FalseExpression","UnaryExpression","UnaryPostfixExpression","UnaryPrefixExpression","Z","J","Statement","USER","USER_ENTRY","LIBRARY","LIBRARY_ENTRY","SourceKind","$","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","lastIndexOf","PATH_DELIMITER","simplePath","Source","ee","DeclarationStatement","IndexSignatureDeclaration","ie","VariableLikeDeclarationStatement","BlockStatement","BreakStatement","ClassDeclaration","ContinueStatement","DoStatement","EmptyStatement","EnumDeclaration","EnumValueDeclaration","ExportImportStatement","ExportMember","ExportStatement","ExportDefaultStatement","ExpressionStatement","parameterIndex","FieldDeclaration","ForStatement","ARROW_PARENTHESIZED","ARROW_SINGLE","ArrowKind","clone","FunctionDeclaration","IfStatement","ImportDeclaration","ImportStatement","InterfaceDeclaration","MethodDeclaration","NamespaceDeclaration","ReturnStatement","SwitchCase","SwitchStatement","ThrowStatement","TryStatement","TypeDeclaration","VariableDeclaration","VariableStatement","VoidStatement","WhileStatement","findDecorator","mangleInternalPath","isTypeOmitted","DECLARE","CONST","LET","STATIC","READONLY","ABSTRACT","PUBLIC","PRIVATE","PROTECTED","GET","SET","DEFINITE_ASSIGNMENT","AMBIENT","GENERIC","GENERIC_CONTEXT","INSTANCE","MODULE_EXPORT","MODULE_IMPORT","RESOLVED","COMPILED","INLINED","SCOPED","TRAMPOLINE","VIRTUAL","MAIN","QUOTED","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","INDEX_SUFFIX","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","boolean","native","indexof","valueof","returnof","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","FixedArray","Set","ArrayBufferView","ArrayBuffer","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","Feature","Target","Typeinfo","TypeinfoFlags","isPowerOf2","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DELETE","ELSE","ENUM","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","INTERFACE","IS","KEYOF","MODULE","NAMESPACE","OF","PACKAGE","TYPE","TYPEOF","VAR","WITH","YIELD","INVALID","OPENBRACE","CLOSEBRACE","OPENPAREN","CLOSEPAREN","OPENBRACKET","CLOSEBRACKET","DOT","DOT_DOT_DOT","SEMICOLON","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","EQUALS_GREATERTHAN","PLUS","MINUS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","QUESTION","COLON","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","AT","STRINGLITERAL","INTEGERLITERAL","FLOATLITERAL","ENDOFFILE","PREFER","ALWAYS","IdentifierHandling","tokenFromKeyword","tokenIsAlsoIdentifier","isIllegalVariableIdentifier","operatorTokenToString","debugInfoRef","pos","token","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","unsafeNext","MAX_VALUE","isDecimalDigit","DiagnosticCode","_0_expected","testInteger","isIdentifierStart","isKeywordCharacter","isIdentifierPart","isWhiteSpace","Invalid_character","peek","isLineBreak","skipIdentifier","skip","mark","discard","readIdentifier","readString","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","readRegexpPattern","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_new","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_mul","Digit_expected","Octal_digit_expected","Binary_digit_expected","readFloat","readDecimalFloat","readHexFloat","i64_low","i64_high","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","DiagnosticEmitter","Tokenizer","State","Operation_not_supported","Operation_is_unsafe","User_defined_0","Conversion_from_type_0_to_1_requires_an_explicit_cast","Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit","Type_0_cannot_be_changed_to_type_1","Type_0_cannot_be_reinterpreted_as_type_1","Basic_type_0_cannot_be_nullable","Cannot_export_a_mutable_global","Mutable_value_cannot_be_inlined","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","Unmanaged_classes_cannot_implement_interfaces","Implementation_0_must_match_the_signature_1","Class_0_is_sealed_and_cannot_be_extended","Decorator_0_is_not_valid_here","Duplicate_decorator","An_allocator_must_be_present_to_use_0","Optional_parameter_must_have_an_initializer","Constructor_of_class_0_must_not_require_any_arguments","Function_0_cannot_be_inlined_into_itself","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","Optional_properties_are_not_supported","Expression_must_be_a_compile_time_constant","Module_cannot_have_multiple_start_functions","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","Expression_is_unsafe","Expression_is_never_null","Identifier_expected","A_file_cannot_have_a_reference_to_itself","Trailing_comma_not_allowed","Unexpected_token","A_rest_parameter_must_be_last_in_a_parameter_list","Parameter_cannot_have_question_mark_and_initializer","A_required_parameter_cannot_follow_an_optional_parameter","Statements_are_not_allowed_in_ambient_contexts","Initializers_are_not_allowed_in_ambient_contexts","_0_modifier_cannot_be_used_here","A_rest_parameter_cannot_be_optional","A_rest_parameter_cannot_have_an_initializer","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","Enum_member_must_have_initializer","Type_parameters_cannot_appear_on_a_constructor_declaration","Type_annotation_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","A_set_accessor_cannot_have_a_return_type_annotation","Type_parameter_list_cannot_be_empty","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_return_statement_can_only_be_used_within_a_function_body","Expression_expected","Type_expected","A_default_clause_cannot_appear_more_than_once_in_a_switch_statement","Duplicate_label_0","An_export_assignment_cannot_have_modifiers","_case_or_default_expected","_super_must_be_followed_by_an_argument_list_or_member_access","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","Type_argument_expected","String_literal_expected","Line_break_not_permitted_here","Declaration_expected","_const_declarations_must_be_initialized","Interface_declaration_cannot_have_implements_clause","An_implementation_cannot_be_declared_in_ambient_contexts","Decorators_are_not_valid_here","_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","A_definite_assignment_assertion_is_not_permitted_in_this_context","A_class_may_only_extend_another_class","A_parameter_property_cannot_be_declared_using_a_rest_parameter","Duplicate_identifier_0","Cannot_find_name_0","Module_0_has_no_exported_member_1","Generic_type_0_requires_1_type_argument_s","Type_0_is_not_generic","Type_0_is_not_assignable_to_type_1","Index_signature_is_missing_in_type_0","_this_cannot_be_referenced_in_current_location","_super_can_only_be_referenced_in_a_derived_class","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","Property_0_does_not_exist_on_type_1","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","A_function_whose_declared_type_is_not_void_must_return_a_value","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access","Operator_0_cannot_be_applied_to_types_1_and_2","A_super_call_must_be_the_first_statement_in_the_constructor","Constructors_for_derived_classes_must_contain_a_super_call","_get_and_set_accessor_must_have_the_same_type","Constructor_implementation_is_missing","Function_implementation_is_missing_or_not_immediately_following_the_declaration","Multiple_constructor_implementations_are_not_allowed","Duplicate_function_implementation","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged","Type_0_has_no_property_1","The_0_operator_cannot_be_applied_to_type_1","In_const_enum_declarations_member_initializer_must_be_constant_expression","Export_declaration_conflicts_with_exported_declaration_of_0","Object_is_possibly_null","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","The_target_of_an_assignment_must_be_a_variable_or_a_property_access","Index_signature_in_type_0_only_permits_reading","Expected_0_arguments_but_got_1","Expected_at_least_0_arguments_but_got_1","Expected_0_type_arguments_but_got_1","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","Namespace_0_has_no_exported_member_1","Required_type_parameters_may_not_follow_optional_type_parameters","Duplicate_property_0","Type_0_has_no_call_signatures","File_0_not_found","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","diagnosticCodeToString","includes","ASTBuilder","build","typeMapping","nonNullableTypes","exportedClasses","wrappedFuncs","nearFiles","visitClassDeclaration","generateHandler","visitFunctionDeclaration","generateArgsParser","generateWrapperFunction","add","isGeneric","some","typeName","generateHandlerMethods","generateBasicSetterHandlers","generatePushHandler","getFields","preamble","BaseVisitor","afterParse","donelog","delete","seenlog","SIGN_EXTENSION","MUTABLE_GLOBAL","BULK_MEMORY","SIMD","THREADS","WASM32","WASM64","JS","__decorate","getOwnPropertyDescriptor","Reflect","decorate","ARRAYBUFFERVIEW","MAP","ACYCLIC","VALUE_ALIGN_0","VALUE_ALIGN_1","VALUE_ALIGN_2","VALUE_ALIGN_3","VALUE_ALIGN_4","VALUE_SIGNED","VALUE_FLOAT","VALUE_NULLABLE","VALUE_MANAGED","KEY_ALIGN_0","KEY_ALIGN_1","KEY_ALIGN_2","KEY_ALIGN_3","KEY_ALIGN_4","KEY_SIGNED","KEY_FLOAT","KEY_NULLABLE","KEY_MANAGED","INFO","WARNING","ERROR","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCategory","diagnosticCategoryToString","COLOR_RESET","diagnosticCategoryToColor","relatedRange","category","message","createInfo","createWarning","createError","withRange","withRelatedRange","column","DiagnosticMessage","formatDiagnosticMessage","formatDiagnosticContext","emitDiagnostic","info","infoRelated","warning","warningRelated","errorRelated","bitsetIs","i64_ne","i64_and","i64_one","i64_zero","bitsetSet","i64_or","i64_not","LINEFEED","CARRIAGERETURN","LINESEPARATOR","PARAGRAPHSEPARATOR","NEXTLINE","SPACE","NONBREAKINGSPACE","ENQUAD","EMQUAD","ENSPACE","EMSPACE","THREEPEREMSPACE","FOURPEREMSPACE","SIXPEREMSPACE","FIGURESPACE","PUNCTUATIONSPACE","THINSPACE","HAIRSPACE","ZEROWIDTHSPACE","NARROWNOBREAKSPACE","IDEOGRAPHICSPACE","MATHEMATICALSPACE","OGHAM","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","BACKSLASH","BACKTICK","DOLLAR","DOUBLEQUOTE","HASH","SINGLEQUOTE","BACKSPACE","FORMFEED","BYTEORDERMARK","TAB","VERTICALTAB","CharCode","__values","done","__read","return","makeArray","unchecked","makeSet","makeMap","readI8","writeI8","readI16","writeI16","readI32","writeI32","readI64","writeI64","readF32","i32_as_f32","writeF32","f32_as_i32","readF64","i64_as_f64","writeF64","f64_as_i64","indentLevel","visitNode","visitSource","visitNamedTypeNode","visitFunctionTypeNode","visitTypeParameter","visitIdentifierExpression","visitAssertionExpression","visitBinaryExpression","visitCallExpression","visitClassExpression","visitCommaExpression","visitElementAccessExpression","visitFunctionExpression","visitInstanceOfExpression","visitLiteralExpression","visitNewExpression","visitParenthesizedExpression","visitPropertyAccessExpression","visitTernaryExpression","visitUnaryPostfixExpression","visitUnaryPrefixExpression","visitBlockStatement","visitBreakStatement","visitContinueStatement","visitDoStatement","visitEmptyStatement","visitExportStatement","visitExportDefaultStatement","visitExportImportStatement","visitExpressionStatement","visitForStatement","visitIfStatement","visitImportStatement","visitReturnStatement","visitSwitchStatement","visitThrowStatement","visitTryStatement","visitVariableStatement","visitWhileStatement","visitEnumDeclaration","visitEnumValueDeclaration","visitFieldDeclaration","visitImportDeclaration","visitIndexSignatureDeclaration","visitInterfaceDeclaration","visitMethodDeclaration","visitNamespaceDeclaration","visitTypeDeclaration","visitVariableDeclaration","serializeDecorator","visitExportMember","serializeParameter","visitSwitchCase","visitNodeAndTerminate","visitTypeNode","visitTypeName","visitStringLiteral","visitArrayLiteralExpression","visitObjectLiteralExpression","visitFunctionCommon","visitFloatLiteralExpression","visitIntegerLiteralExpression","visitStringLiteralExpression","visitRegexpLiteralExpression","i64_to_string","visitUnaryExpression","serializeExternalModifiers","serializeAccessModifiers","captureStackTrace","defineProperties","MIN_VALUE","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz","clz32","ctz","popcnt","rotl","rotr","abs","ceil","floor","nearest","trunc","round","select","sqrt","copysign","sign","bswap","bswap16","unreachable","changetype","fromCharCodes","fromCodePoints","fromCodePoint","replaceAll","isInteger","Number","isFloat","isReference","isFunction","isString","isArrayLike","isDefined","isConstant","fmod","fmodf","JSMath","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","allocate","__memory_allocate","fill","__memory_fill","__memory_free","copy","__memory_copy","copyWithin","__memory_reset","store","__store","HEAP","load","__load","unmanaged","Long","ZERO","ONE","fromBits","low","high","i64_sub","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","and","or","i64_xor","xor","shl","i64_shr","shr","i64_shr_u","shru","not","i64_eq","eq","i64_align","fromInt","i64_is_i8","i64_is_i16","i64_is_i32","i64_is_u8","i64_is_u16","i64_is_u32","i64_is_bool","fromNumber","i64_is_f32","gte","lte","i64_is_f64","i64_to_f32","toNumber","i64_to_f64","WebAssembly","Instance","Module","unsigned","__isLong__","isLong","isNaN","neg","RangeError","fromString","fromValue","UZERO","UONE","NEG_ONE","MAX_UNSIGNED_VALUE","toInt","isZero","isNegative","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","greaterThan","gt","greaterThanOrEqual","compare","negate","subtract","multiply","get_high","divide","div_u","div_s","log","LN2","modulo","rem_u","rem_s","rem","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","depth","_visit","visitDecoratorNode","visitParameter","visitSuperExpression","visitFalseExpression","visitTrueExpression","visitThisExpression","visitNullExperssion","visitConstructorExpression","visitVoidStatement","visitComment","AbstractVisitor","writeString","writeNode","DefaultWriter","writer","entries","webpackEmptyContext","req","id","previousTimestamp","clocktime","performanceNow","performance","seconds","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime"],"mappings":"CAAA,SAAAA,EAAAC,GACA,iBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,EAAA,WAA0E,IAAM,OAAAG,QAAA,kBAAoC,MAAAC,KAApH,IACA,mBAAAC,eAAAC,IACAD,OAAA,mBAAAL,GACA,iBAAAC,QACAA,QAAA,IAAAD,EAAA,WAA0E,IAAM,OAAAG,QAAA,kBAAoC,MAAAC,KAApH,IAEAL,EAAA,IAAAC,EAAAD,EAAA,gBARA,CASC,oBAAAQ,UAAAC,KAAA,SAAAC,iCACD,mBCTA,IAAAC,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAX,QAGA,IAAAC,EAAAQ,EAAAE,GAAA,CACAC,EAAAD,EACAE,GAAA,EACAb,QAAA,IAUA,OANAc,EAAAH,GAAAI,KAAAd,EAAAD,QAAAC,IAAAD,QAAAU,GAGAT,EAAAY,GAAA,EAGAZ,EAAAD,QA0DA,OArDAU,EAAAM,EAAAF,EAGAJ,EAAAO,EAAAR,EAGAC,EAAAQ,EAAA,SAAAlB,EAAAmB,EAAAC,GACAV,EAAAW,EAAArB,EAAAmB,IACAG,OAAAC,eAAAvB,EAAAmB,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CV,EAAAgB,EAAA,SAAA1B,GACA,oBAAA2B,eAAAC,aACAN,OAAAC,eAAAvB,EAAA2B,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAvB,EAAA,cAAiD6B,OAAA,KAQjDnB,EAAAoB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAAnB,EAAAmB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFAxB,EAAAgB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAAnB,EAAAQ,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAvB,EAAA2B,EAAA,SAAApC,GACA,IAAAmB,EAAAnB,KAAA+B,WACA,WAA2B,OAAA/B,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAS,EAAAQ,EAAAE,EAAA,IAAAA,GACAA,GAIAV,EAAAW,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD7B,EAAAgC,EAAA,GAIAhC,IAAAiC,EAAA,qBC/DA,IAEAC,EADAC,EApBA7C,EAAA8C,SAAA,SAAAC,GACA,IAAAC,EAAAC,MAAAT,UAAAU,MAAAnC,KAAAoC,WACAH,EAAAI,QACAC,WAAA,WACAN,EAAAO,MAAA,KAAAN,IACK,IAGLhD,EAAAuD,SAAAvD,EAAAwD,KACAxD,EAAAyD,SAAAzD,EAAA0D,MAAA,UACA1D,EAAA2D,IAAA,EACA3D,EAAA4D,SAAA,EACA5D,EAAA6D,IAAA,GACA7D,EAAA8D,KAAA,GAEA9D,EAAA+D,QAAA,SAAA5C,GACA,UAAA6C,MAAA,8CAIAnB,EAAA,IAEA7C,EAAA6C,IAAA,WAA+B,OAAAA,GAC/B7C,EAAAiE,MAAA,SAAAC,GACAtB,MAA0BlC,EAAQ,IAClCmC,EAAAD,EAAAuB,QAAAD,EAAArB,IAIA7C,EAAAoE,KAAApE,EAAAqE,KACArE,EAAAsE,MAAAtE,EAAAuE,OACAvE,EAAAwE,OAAAxE,EAAAyE,YACAzE,EAAA0E,WAAA,aACA1E,EAAA2E,SAAA,qBCjCA,SAAAC,GA4BA,SAAAC,EAAAC,EAAAC,GAGA,IADA,IAAAC,EAAA,EACApE,EAAAkE,EAAAG,OAAA,EAAgCrE,GAAA,EAAQA,IAAA,CACxC,IAAAsE,EAAAJ,EAAAlE,GACA,MAAAsE,EACAJ,EAAAK,OAAAvE,EAAA,GACK,OAAAsE,GACLJ,EAAAK,OAAAvE,EAAA,GACAoE,KACKA,IACLF,EAAAK,OAAAvE,EAAA,GACAoE,KAKA,GAAAD,EACA,KAAUC,IAAMA,EAChBF,EAAAM,QAAA,MAIA,OAAAN,EA0OA,SAAAO,EAAAC,EAAAC,GACA,GAAAD,EAAAD,OAAA,OAAAC,EAAAD,OAAAE,GAEA,IADA,IAAAC,EAAA,GACA5E,EAAA,EAAmBA,EAAA0E,EAAAL,OAAerE,IAClC2E,EAAAD,EAAA1E,KAAA0E,IAAAE,EAAAC,KAAAH,EAAA1E,IAEA,OAAA4E,EA3OAxF,EAAAmE,QAAA,WAIA,IAHA,IAAAuB,EAAA,GACAC,GAAA,EAEA/E,EAAAuC,UAAA8B,OAAA,EAAoCrE,IAAA,IAAA+E,EAA8B/E,IAAA,CAClE,IAAAgC,EAAAhC,GAAA,EAAAuC,UAAAvC,GAAAgE,EAAA/B,MAGA,oBAAAD,EACA,UAAAgD,UAAA,6CACKhD,IAIL8C,EAAA9C,EAAA,IAAA8C,EACAC,EAAA,MAAA/C,EAAAiD,OAAA,IAWA,OAAAF,EAAA,SAJAD,EAAAb,EAAAQ,EAAAK,EAAAI,MAAA,cAAApD,GACA,QAAAA,KACGiD,GAAAI,KAAA,OAEH,KAKA/F,EAAAgG,UAAA,SAAApD,GACA,IAAAqD,EAAAjG,EAAAiG,WAAArD,GACAsD,EAAA,MAAAC,EAAAvD,GAAA,GAcA,OAXAA,EAAAiC,EAAAQ,EAAAzC,EAAAkD,MAAA,cAAApD,GACA,QAAAA,KACGuD,GAAAF,KAAA,OAEHE,IACArD,EAAA,KAEAA,GAAAsD,IACAtD,GAAA,MAGAqD,EAAA,QAAArD,GAIA5C,EAAAiG,WAAA,SAAArD,GACA,YAAAA,EAAAiD,OAAA,IAIA7F,EAAA+F,KAAA,WACA,IAAAK,EAAAnD,MAAAT,UAAAU,MAAAnC,KAAAoC,UAAA,GACA,OAAAnD,EAAAgG,UAAAX,EAAAe,EAAA,SAAA1D,EAAA2D,GACA,oBAAA3D,EACA,UAAAkD,UAAA,0CAEA,OAAAlD,IACGqD,KAAA,OAMH/F,EAAAsG,SAAA,SAAAC,EAAAC,GAIA,SAAAC,EAAAC,GAEA,IADA,IAAAC,EAAA,EACUA,EAAAD,EAAAzB,QACV,KAAAyB,EAAAC,GAD8BA,KAK9B,IADA,IAAAC,EAAAF,EAAAzB,OAAA,EACU2B,GAAA,GACV,KAAAF,EAAAE,GADoBA,KAIpB,OAAAD,EAAAC,EAAA,GACAF,EAAAxD,MAAAyD,EAAAC,EAAAD,EAAA,GAfAJ,EAAAvG,EAAAmE,QAAAoC,GAAAJ,OAAA,GACAK,EAAAxG,EAAAmE,QAAAqC,GAAAL,OAAA,GAsBA,IALA,IAAAU,EAAAJ,EAAAF,EAAAT,MAAA,MACAgB,EAAAL,EAAAD,EAAAV,MAAA,MAEAb,EAAA8B,KAAAC,IAAAH,EAAA5B,OAAA6B,EAAA7B,QACAgC,EAAAhC,EACArE,EAAA,EAAiBA,EAAAqE,EAAYrE,IAC7B,GAAAiG,EAAAjG,KAAAkG,EAAAlG,GAAA,CACAqG,EAAArG,EACA,MAIA,IAAAsG,EAAA,GACA,IAAAtG,EAAAqG,EAA+BrG,EAAAiG,EAAA5B,OAAsBrE,IACrDsG,EAAAzB,KAAA,MAKA,OAFAyB,IAAAC,OAAAL,EAAA5D,MAAA+D,KAEAlB,KAAA,MAGA/F,EAAAoH,IAAA,IACApH,EAAAqH,UAAA,IAEArH,EAAAsH,QAAA,SAAA1E,GAEA,GADA,iBAAAA,OAAA,IACA,IAAAA,EAAAqC,OAAA,UAKA,IAJA,IAAAsC,EAAA3E,EAAA4E,WAAA,GACAC,EAAA,KAAAF,EACAX,GAAA,EACAc,GAAA,EACA9G,EAAAgC,EAAAqC,OAAA,EAA+BrE,GAAA,IAAQA,EAEvC,SADA2G,EAAA3E,EAAA4E,WAAA5G,KAEA,IAAA8G,EAAA,CACAd,EAAAhG,EACA,YAIA8G,GAAA,EAIA,WAAAd,EAAAa,EAAA,QACAA,GAAA,IAAAb,EAGA,IAEAhE,EAAAM,MAAA,EAAA0D,IAiCA5G,EAAA2H,SAAA,SAAA/E,EAAAgF,GACA,IAAArC,EA/BA,SAAA3C,GACA,iBAAAA,OAAA,IAEA,IAGAhC,EAHA+F,EAAA,EACAC,GAAA,EACAc,GAAA,EAGA,IAAA9G,EAAAgC,EAAAqC,OAAA,EAA2BrE,GAAA,IAAQA,EACnC,QAAAgC,EAAA4E,WAAA5G,IAGA,IAAA8G,EAAA,CACAf,EAAA/F,EAAA,EACA,YAEO,IAAAgG,IAGPc,GAAA,EACAd,EAAAhG,EAAA,GAIA,WAAAgG,EAAA,GACAhE,EAAAM,MAAAyD,EAAAC,GAMAe,CAAA/E,GAIA,OAHAgF,GAAArC,EAAAY,QAAA,EAAAyB,EAAA3C,UAAA2C,IACArC,IAAAY,OAAA,EAAAZ,EAAAN,OAAA2C,EAAA3C,SAEAM,GAGAvF,EAAA6H,QAAA,SAAAjF,GACA,iBAAAA,OAAA,IAQA,IAPA,IAAAkF,GAAA,EACAC,EAAA,EACAnB,GAAA,EACAc,GAAA,EAGAM,EAAA,EACApH,EAAAgC,EAAAqC,OAAA,EAA+BrE,GAAA,IAAQA,EAAA,CACvC,IAAA2G,EAAA3E,EAAA4E,WAAA5G,GACA,QAAA2G,GASA,IAAAX,IAGAc,GAAA,EACAd,EAAAhG,EAAA,GAEA,KAAA2G,GAEA,IAAAO,EACAA,EAAAlH,EACA,IAAAoH,IACAA,EAAA,IACK,IAAAF,IAGLE,GAAA,QArBA,IAAAN,EAAA,CACAK,EAAAnH,EAAA,EACA,OAuBA,WAAAkH,IAAA,IAAAlB,GAEA,IAAAoB,GAEA,IAAAA,GAAAF,IAAAlB,EAAA,GAAAkB,IAAAC,EAAA,EACA,GAEAnF,EAAAM,MAAA4E,EAAAlB,IAaA,IAAAT,EAAA,WAAAA,QAAA,GACA,SAAA8B,EAAAtB,EAAAuB,GAAkC,OAAAD,EAAA9B,OAAAQ,EAAAuB,IAClC,SAAAD,EAAAtB,EAAAuB,GAEA,OADAvB,EAAA,IAAAA,EAAAsB,EAAAhD,OAAA0B,GACAsB,EAAA9B,OAAAQ,EAAAuB,qCC3SA,IAAAC,EAGAA,EAAA,WACA,OAAA5H,KADA,GAIA,IAEA4H,KAAA,IAAAC,SAAA,iBACC,MAAAjI,GAED,iBAAAkI,SAAAF,EAAAE,QAOApI,EAAAD,QAAAmI,iGCnBA,SAAAvD,QAAA0D,QAcA1D,QAAAhB,UAAAgB,QAAA/B,IAAA,WAA+C,YAE/C,MAAA0F,GAAW7H,oBAAQ,GACnBkC,KAAalC,oBAAQ,GACrB8H,KAAa9H,oBAAQ,GACrB+H,WAAmB/H,oBAAQ,GAC3BgI,YAAoBhI,oBAAQ,GAC5BiI,OAAejI,oBAAQ,GACvBkI,IAAA,UAAAhE,QAAArB,SAAA,YACAsF,IAAA,UAAAjE,QAAArB,SAAA,SACAuF,aAAqBpI,oBAAQ,IAC7BqI,aAAAnG,KAAAmD,KAA+B,IAAS,2CAKxCnB,QAAAoE,oBAAApE,QAAAoE,mBAAA,qBAGA,IAAAC,eAAAC,OAAA,EAw1BA,SAAAC,iBAAAC,EAAAC,GAGA,IAFA,IAAAC,EACAC,GAAA,EACA,OAAAD,EAAAL,eAAAO,eAAAJ,KACAC,GACAA,EAAAI,MACAR,eAAAS,iBAAAJ,EAAAD,EAAAM,OAAA,GACAf,SAGAK,eAAAW,QAAAN,KAAAC,GAAA,GAEA,OAAAA,EAMA,SAAAM,cACA,OACAC,SAAA,EACAC,UAAA,EACAC,UAAA,EACAC,WAAA,EACAC,UAAA,EACAC,WAAA,EACAC,YAAA,EACAC,aAAA,EACAC,SAAA,EACAC,UAAA,EACAC,aAAA,EACAC,cAAA,EACAC,aAAA,EACAC,cAAA,GASA,SAAAC,QAAA7H,GACA,MAAA4D,EAAA/B,QAAAiG,SACA9H,IACA,MAAA+H,EAAAlG,QAAAiG,OAAAlE,GACA,WAAAmE,EAAA,GAAAA,EAAA,GAMA,SAAAC,WAAAC,GACA,OAAAA,KAAA,KAAAC,QAAA,eAMA,SAAAC,WAAAC,EAAAC,GACA,SAAAC,EAAAL,EAAAM,GACA,OAAAP,WAAAC,IAEAI,GAAAxG,QAAA2G,QAAA9B,MAAA,CACA,eAAA4B,EAAAF,EAAArB,SAAAqB,EAAApB,WACA,eAAAsB,EAAAF,EAAAnB,UAAAmB,EAAAlB,YACA,eAAAoB,EAAAF,EAAAjB,UAAAiB,EAAAhB,YACA,eAAAkB,EAAAF,EAAAf,YAAAe,EAAAd,cACA,eAAAgB,EAAAF,EAAAb,SAAAa,EAAAZ,WACA,eAAAc,EAAAF,EAAAX,aAAAW,EAAAV,eACA,eAAAY,EAAAF,EAAAT,aAAAS,EAAAR,gBACA5E,KAAA6C,UAMA,SAAA4C,UAAAC,EAAAL,GACAA,MAAAxG,QAAAyE,QACA+B,EAAA3B,MAAA,uCACA2B,EAAA3B,MAAAR,eAAAyC,UAAAD,IAv6BA,MACA,IACAxC,eAAqBvI,oBAAQ,IAC1B,MAAAP,GACH,IACQO,qBAAQ,eAAAP,EAAA,IAAA6D,MAAA,sCAAA7D,EAAAoH,KAAA,mBAAApH,EAAA,IAASwL,SAAA,CAAYC,QAAAhJ,KAAAmD,KAAoB,IAAS,8BAC1DrF,qBAAQ,eAAAP,EAAA,IAAA6D,MAAA,6CAAA7D,EAAAoH,KAAA,mBAAApH,EAAA,IAChB8I,eAAyBvI,qBAAQ,eAAAP,EAAA,IAAA6D,MAAA,qCAAA7D,EAAAoH,KAAA,mBAAApH,EAAA,IACjC+I,OAAA,EACG,MAAA2C,MACH,IACA5C,eAAA6C,KAAA,+BACG,MAAA3L,GAGH,MADAA,EAAA4L,MAAAF,KAAAE,MAAA,UAAA5L,EAAA4L,MACA5L,MAfA,GAsBAH,QAAAgM,UAAmB,EAGnBhM,QAAAkJ,YAGAlJ,QAAAiM,QAAAjM,QAAAgM,SAAqC,sBAAiBtL,qBAAQ,eAAAP,EAAA,IAAA6D,MAAA,8CAAA7D,EAAAoH,KAAA,mBAAApH,EAAA,IAAiB8L,QAG/EjM,QAAAkM,QAAkBxL,oBAAQ,IAG1BV,QAAAmM,cAAA,qBAGAnM,QAAAoM,cAAAnD,eAAAoD,eAGArM,QAAAsM,qBAAA,EAGAtM,QAAAuM,mBAAA,EAGAvM,QAAAwM,aAAAxM,QAAAgM,SAA0C1K,OAAA,CAAAmL,UAAA,m0QAAAC,MAAA,o3zBAAAC,YAAA,ysFAAAC,gBAAA,iVAAAC,gBAAA,q5DAAAC,yBAAA,ko+CAAAC,gBAAA,qCAAAC,SAAA,on4CAAAC,OAAA,+CAAAC,SAAA,k2OAAAC,KAAA,upBAAAC,YAAA,4RAAAC,MAAA,itBAAAC,WAAA,88EAAAC,KAAA,iFAAAC,SAAA,ukCAAAC,IAAA,2xQAAAC,KAAA,6w6FAAAC,OAAA,q7DAAAC,OAAA,+hQAAAC,UAAA,ilCAAAC,OAAA,2YAAAC,GAAA,6mFAAAC,YAAA,qtDAAAC,gBAAA,qIAAAC,gBAAA,4BAAAC,gBAAA,4BAAAC,gBAAA,0GAAAC,UAAA,isRAAAC,YAAA,uPAAAC,UAAA,86DAAAC,UAAA,wzqBAAAC,IAAA,4xNAAAC,iBAAA,6wBAAAC,gBAAA,wTAAAC,kBAAA,8gFAAAC,OAAA,glvBAAAC,OAAA,yyGAAAC,MAAA,2aAAAC,WAAA,w21CAAAC,aAAA,kzBAAAC,YAAA,0qEAAAC,cAAA,y5PAAAC,cAAA,2upBAAAC,YAAA,8iJAAAC,cAAA,q4JAAAC,OAAA,sFAAc,MACxD,MAAAC,EAAA5M,KAAAmD,KAA2B,IAAS,uBACpC0J,EAAmB/O,qBAAQ,eAAAP,EAAA,IAAA6D,MAAA,mCAAA7D,EAAAoH,KAAA,mBAAApH,EAAA,IAAMuP,KAAA,gBAAwB7M,IAAA2M,IACzDG,EAAA,CACAlD,UAAAlE,GAAAqH,aAAA7G,aAAA,SAGA,OADA0G,EAAAI,QAAAC,GAAAH,EAAAG,EAAAC,QAAA,aAAAxH,GAAAqH,aAAAhN,KAAAmD,KAAAyJ,EAAAM,GAAA,SACAH,GAPwD,GAWxD3P,QAAAgQ,gBAAAhQ,QAAAgM,SAA6C1K,OAAA,CAAA2O,SAAA,26yFAAAC,SAAA,+g4BAAkB,MAC/D,MAAAC,EAAAvN,KAAAmD,KAA2B,IAAS,YACpC,OACAkK,SAAA1H,GAAAqH,aAAAhN,KAAAmD,KAAAoK,EAAA,iCACAD,SAAA3H,GAAAqH,aAAAhN,KAAAmD,KAAAoK,EAAA,mCAJ+D,GAS/DnQ,QAAAoQ,cAAA,CAAAC,EAAAnE,KACA,iBAAAmE,MAAA,CAA8CC,WAAAD,IAC9C,MAAAjF,EAAA9J,OAAAY,OAAA,CACAqJ,OAAAgF,qBACAlH,OAAAkH,uBAEA,IAAAzM,EAAA,CACA,wBACA,qBAcA,OAZAxC,OAAAkP,KAAAtE,GAAA,IAA2B2D,QAAA1N,IAC3B,IAAAsO,EAAAvE,EAAA/J,GACAc,MAAAyN,QAAAD,KAAAZ,QAAAY,GAAA3M,EAAA2B,KAAA,KAAAtD,EAAAwO,OAAAF,KACA3M,EAAA2B,KAAA,KAAAtD,EAAAwO,OAAAF,MAEAzQ,QAAA4Q,KAAA9M,EAAAqD,OAAA7F,OAAAkP,KAAAH,IAAA,CACA9E,OAAAH,EAAAG,OACAlC,OAAA+B,EAAA/B,OACAwH,SAAA1P,GAAAkP,EAAA5N,eAAAtB,GAAAkP,EAAAlP,GAAA,KACA2P,UAAA,CAAA3P,EAAA4P,IAAA3F,EAAAjK,GAAA4P,EACAC,UAAA,SAEA5F,GAIApL,QAAA4Q,KAAA,SAAA9M,EAAAoI,EAAA+E,GACA,mBAAA/E,GACA+E,EAAA/E,EACAA,EAAA,IACGA,IACHA,EAAA,IAGA,MAAAX,EAAAW,EAAAX,QAAA3G,QAAA2G,OACAlC,EAAA6C,EAAA7C,QAAAzE,QAAAyE,OACAwH,EAAA3E,EAAA2E,UAAAK,EACAJ,EAAA5E,EAAA4E,WAAAK,EACAH,EAAA9E,EAAA8E,WAAAI,EACAjG,EAAAe,EAAAf,OAAAtB,cAGA,IAAA0B,EAAA,MAAAvH,MAAA,sCACA,IAAAqF,EAAA,MAAArF,MAAA,sCAEA,MAAAqN,EAAA3I,YAAA4I,MAAAxN,EAAA9D,QAAAkM,SACAlJ,EAAAqO,EAAAnF,QAiCA,GAhCApI,EAAAuN,EAAAlO,UACAH,EAAAuO,SACA9I,WAAA8C,OAAAiG,UACA/I,WAAAY,OAAAmI,WAAA,GAEA/I,WAAA8C,OAAA9C,WAAAlC,KAAAgF,GACA9C,WAAAY,OAAAZ,WAAAlC,KAAA8C,IAIAgI,EAAAI,QAAAxM,QACAoM,EAAAI,QAAA5B,QAAA6B,IACArI,EAAAI,MAAAhB,WAAAY,OAAAsI,OAAA,6BAAAD,EAAA,IAAA9I,OAKAyI,EAAAO,SAAA3M,QACAoE,EAAAI,MAAAhB,WAAAY,OAAAsI,OAAA,6CAAAN,EAAAO,SAAA7L,KAAA,KAAA6C,KAIAqI,MAAA,SAAAY,GACA,IAAAtK,EAAA,EAKA,OAJAsK,IACAxI,EAAAI,MAAAhB,WAAAY,OAAAyI,IAAA,WAAAD,EAAA9F,MAAAgE,QAAA,gBAAAnH,KACArB,EAAA,GAEAA,IAIAvE,EAAAiJ,QAEA,OADAV,EAAA9B,MAAA,WAAAzJ,QAAAiM,SAAA/C,MAAA,WAAAN,KACAqI,EAAA,MAGA,GAAAjO,EAAA+O,OAAAjO,EAAAmB,OAAA,CACA,IAAA+M,EAAAhP,EAAA+O,KAAAxG,EAAAlC,EACA4I,EAAAjP,EAAA+O,KAAAtJ,WAAA8C,OAAA9C,WAAAY,OAcA,OAbA2I,EAAAvI,MAAA,CACAwI,EAAAC,MAAA,UACA,KAAAD,EAAAE,KAAA,oCACA,GACAF,EAAAC,MAAA,YACA,KAAAD,EAAAE,KAAA,mBACA,KAAAF,EAAAE,KAAA,8CACA,KAAAF,EAAAE,KAAA,iDACA,GACAF,EAAAC,MAAA,YACA/K,OACAuB,YAAAqJ,KAAA/R,QAAAkM,QAAA,GAAAtD,MACA7C,KAAA6C,UACAqI,EAAA,MAIA,IAAA1I,GAAAqH,aAAA,CACA,GAAAiB,IAAAK,EAAA,MAAAlN,MAAA,wCACA,GAAA8M,IAAAK,EAAA,MAAAnN,MAAA,yCACA,GAAAgN,IAAAI,EAAA,MAAApN,MAAA,yCAIA,MAAAoO,EAAApP,EAAAoP,QAAAxP,KAAAuB,QAAAnB,EAAAoP,SAAA,IAGAC,EAAArP,EAAAsP,QAAA,IAAAxJ,cAEA9F,EAAAuP,WACAvP,EAAAuP,UAAA1C,QAAA0C,GACAF,EAAA5M,KACQ/E,oBAAA,GAAAA,CACEkC,KAAAqD,WAAAsM,IAAA9L,QACV8L,EACA3P,KAAAmD,KAAAnB,QAAA/B,MAAA0P,MAYA,IAAAC,EAAA,KAGAC,EAAA,IAAAC,IACAC,EAAA,IAAAD,IAGApR,OAAAkP,KAAAxQ,QAAAwM,cAAAqD,QAAA+C,IACAA,EAAAC,QAAA,UACA1H,EAAAhB,aACAgB,EAAAjB,WAAAU,QAAA,KACA4H,EAAAvJ,eAAA6J,UACA9S,QAAAwM,aAAAoG,GACA5S,QAAAoM,cAAAwG,EAAA,OACA,EACAJ,QAIA,MAAAO,EAAA,GACA,GAAA/P,EAAAgQ,IAAA,CACA,IAAAA,EAAAhQ,EAAAgQ,IACA,iBAAAA,QAAAlN,MAAA,MACA7C,MAAAT,UAAAiD,KAAAnC,MAAAyP,EAAAC,EAAAvF,IAAAuF,KAAAvM,SACA,QAAA7F,EAAA,EAAAqS,EAAAF,EAAA9N,OAA6CrE,EAAAqS,IAAOrS,EAAA,CACpD,IACA6O,EADAD,EAAAuD,EAAAnS,GAEA4O,EAAA0D,SAAA,QACAzD,EAAA,CAAA7M,KAAA+E,SAAA6H,IACAA,EAAA5M,KAAA0E,QAAAkI,IAEAC,EAAAuB,EAAAxB,EAAA4C,IAAA,GAEA,QAAAe,EAAA,EAAAtS,EAAA4O,EAAAxK,OAA0CkO,EAAAtS,IAAOsS,EAAA,CACjD,IAAAP,EAAAnD,EAAA0D,GACAC,EAAAvC,EAAA+B,EAAApD,GACA,UAAA4D,EAAA,OAAAnC,EAAAjN,MAAA,iBAAA4O,EAAA,iBACAzH,EAAAhB,aACAnK,QAAAwM,aAAAoG,EAAA7C,QAAA,aAAAqD,EACAjI,EAAAjB,WAAAU,QAAA,KACA4H,EAAAvJ,eAAA6J,UACAM,EACApT,QAAAoM,cAAAwG,GACA,EACAJ,OAQA,SAAAa,EAAAC,EAAAC,GACA,OAAAD,EAAAxN,MAAA+C,KACA4E,IAAA,CAAA+F,EAAA5S,EAAA8F,KACA,IAAAxC,EAAAwC,EAAAxD,MAAA,EAAAtC,EAAA,GAAAmF,KAAA8C,UACA4K,EAAA7Q,KAAA0D,SAAA8L,EAAAlO,GACA,OAAAtB,KAAAmD,KAAA0N,EAAAF,KAEAlO,OAAAnB,GAAA8M,EAAA9M,EAAAkO,IACAsB,UAEA,SAAAC,EAAAL,GACA,IAAAlN,EAAApD,EAAAJ,KAAA6K,IAAA/K,GAAA2Q,EAAAC,EAAA5Q,IACA,OAAA2Q,EAAAC,EAAA,gBAAAnM,UAAAf,GAIA,SAAAwN,IAGA,IAFA,IAAAC,EAAAC,EAAAC,EAEA,OAAAF,EAAArB,EAAAwB,aAAA,CAMA,GALAC,SAAAtB,EAAAlR,IAAAwH,eAAAiL,YAAA1B,EAAAqB,KAAAzB,EACA0B,EAAA,KACAC,EAAA,KAGAF,EAAAM,WAAAnU,QAAAoM,eAAA,CACA,MAAAgI,EAAAP,EAAAQ,UAAArU,QAAAoM,cAAAnH,QACAqP,EAAAT,EAAAQ,UAAArU,QAAAoM,cAAAnH,QAAA,SACA,GAAAjF,QAAAwM,aAAA/J,eAAA2R,GACAN,EAAA9T,QAAAwM,aAAA4H,GACAP,EAAA7T,QAAAoM,cAAAgI,EAAA,WACS,GAAApU,QAAAwM,aAAA/J,eAAA6R,GACTR,EAAA9T,QAAAwM,aAAA8H,GACAT,EAAA7T,QAAAoM,cAAAkI,EAAA,WAEA,QAAA1T,EAAA,EAAAqS,EAAAF,EAAA9N,OAAmDrE,EAAAqS,IAAOrS,EAAA,CAE1D,WADAkT,EAAAjD,EAAAuD,EAAA,MAAArB,EAAAnS,KACA,CACAiT,EAAA7T,QAAAoM,cAAAgI,EAAA,MACAL,EAAAnR,KAAAmD,KAAAgN,EAAAnS,GAAAwT,EAAA,OACA,MAGA,WADAN,EAAAjD,EAAAyD,EAAA,MAAAvB,EAAAnS,KACA,CACAiT,EAAA7T,QAAAoM,cAAAkI,EAAA,MACAP,EAAAnR,KAAAmD,KAAAgN,EAAAnS,GAAA0T,EAAA,OACA,YAOO,CACP,MAAAF,EAAAP,EACAS,EAAAT,EAAA,SAEA,WADAC,EAAAjD,EAAAuD,EAAA,MAAAhC,IAEAyB,EAAAO,EAAA,MACAL,EAAAnR,KAAAmD,KAAAqM,EAAAyB,QAGA,WADAC,EAAAjD,EAAAyD,EAAA,MAAAlC,IAEAyB,EAAAS,EAAA,WACW,IAAAF,EAAAD,WAAA,KACX,GAAAnU,QAAAwM,aAAA/J,eAAA2R,GACAN,EAAA9T,QAAAwM,aAAA4H,GACAP,EAAA7T,QAAAoM,cAAAgI,EAAA,WACa,GAAApU,QAAAwM,aAAA/J,eAAA6R,GACbR,EAAA9T,QAAAwM,aAAA8H,GACAT,EAAA7T,QAAAoM,cAAAkI,EAAA,WAEA,QAAA1T,EAAA,EAAAqS,EAAAF,EAAA9N,OAAuDrE,EAAAqS,IAAOrS,EAAA,CAC9D,MAAAsD,EAAA6O,EAAAnS,GAEA,WADAkT,EAAAjD,EAAAuD,EAAA,MAAAlQ,IACA,CACA2P,EAAA7T,QAAAoM,cAAAgI,EAAA,MACAL,EAAAnR,KAAAmD,KAAA7B,EAAAkQ,EAAA,OACA,MAGA,WADAN,EAAAjD,EAAAyD,EAAA,MAAApQ,IACA,CACA2P,EAAA7T,QAAAoM,cAAAkI,EAAA,MACAP,EAAAnR,KAAAmD,KAAA7B,EAAAoQ,EAAA,OACA,QAWA,SAAAR,EAAA,CACA9Q,EAAAuR,iBACAlL,EAAAI,MAAA,gBAAAoK,EAAA,kBAAAI,SAAA,IAAArL,KAEAxC,MAAAuN,EAAA/Q,KAAAmD,KAAAqM,EAAA6B,WACA,IAAAO,EAAAX,EAAA9D,QAAA,0BACA,QAAAwD,KAAAnN,MAAA,CACA,IAAAqO,EAAA,MACA,GAAAhC,EAAAiC,IAAAF,GACA,OAAA/B,EAAAhR,IAAA+S,GAEA,IAAA9R,EAAAE,KAAAmD,KAAAwN,EAAAiB,EAAA,gBACAhP,EAAAqL,EAAAnO,EAAA0P,GACA,GAAA5M,EAAA,CACA,IAAAmP,EACA,IACAA,EAAAC,KAAAtD,MAAA9L,GACe,MAAArF,GACf,OAAA8Q,EAAAjN,MAAA,WAAAtB,EAAA,YAEA,IAAAmS,EAAAF,EAAAF,QACA,GAAAI,GAAA,iBAAAA,EAAA,CACA,IAAAC,EAAAD,EAAA9E,QAAA,wBAEA,OADA0C,EAAAhE,IAAA+F,EAAAM,GACAA,GAGA,kBApBA,GAsBAC,EAAAC,IACAA,EAAAb,WAAAnU,QAAAoM,iBACA4I,IAAAX,UAAArU,QAAAoM,cAAAnH,SAEA,IAAAgQ,EAAAD,EAAAX,UAAA,EAAAW,EAAAnC,QAAA,MACAqC,EAAAF,EAAAX,UAAAW,EAAAnC,QAAA,QACA,OAAAjQ,KAAAmD,KAAAwN,EAAA0B,EAAAR,EAAAS,IAEAlS,EAAAuR,iBACAlL,EAAAI,MAAA,SAAAsL,EAAAlB,GAAA,KAEA,MAAAO,EAAAP,EACAS,EAAAT,EAAA,SAUA,GARA,QADAC,EAAAjD,EAAAkE,EAAAX,GAAA,MAAAhC,IAEAyB,EAAAO,EAAA,MAGA,QADAN,EAAAjD,EAAAkE,EAAAT,GAAA,MAAAlC,MAEAyB,EAAAS,EAAA,OAGA,OAAAR,EAAA,CACA9Q,EAAAuR,iBACAlL,EAAAI,MAAAb,IAAA,SAAAmM,EAAAlB,GAAA,IAAAjL,KAGAmL,EADAnR,KAAAmD,KAAAwN,EAAAiB,GAEA,MAEAxR,EAAAuR,iBACAlL,EAAAI,MAAAb,MAIA,SAAAkL,EACA,OAAA7C,EAAAjN,MAAA,gBAAA6P,EAAA,oBAEAlB,EAAAlE,IAAAoF,EAAA9D,QAAA,YAAAgE,GACA5I,EAAAhB,aACAgB,EAAAjB,WAAAU,QAAA,KACA3B,eAAA6J,UAAAgB,EAAAD,GAAA,EAAArB,KAGA,GAAArJ,iBAAAqJ,EAAAnJ,GACA,OAAA4H,EAAAjN,MAAA,gBA3KAhB,EAAAJ,KAAAI,EAAAJ,MAAA,GAgLA,CACA,IAAAuS,EAAAxE,OAAA3N,EAAAoS,SACAC,EAAA,YAAAF,EACAG,EAAAtV,QAAAwM,aAAA6I,GACA,SAAAC,GAGA,UADAA,EAAAzE,GADAwE,EAAAF,GACA,MAAA/C,IAEA,OAAAnB,EAAAjN,MAAA,YAAAmR,EAAA,sBAGAE,EAAA,QAAAA,EAEAlK,EAAAhB,aACAgB,EAAAjB,WAAAU,QAAA,KACA4H,EAAAvJ,eAAA6J,UAAAwC,EAAAD,GAAA,EAAA7C,KAKA,QAAA5R,EAAA,EAAAqS,EAAAnP,EAAAmB,OAAkCrE,EAAAqS,IAAOrS,EAAA,CACzC,MAAA2U,EAAAzR,EAAAlD,GAEA,IAAAiT,EAAAlD,OAAA4E,GAAAxF,QAAA,WAAAA,QAAA,iBAEA8D,EAAAjR,KAAAqD,WAAA4N,GAAAjR,KAAA0D,SAAA8L,EAAAyB,KAGA,IAAAC,EAAAjD,EAAAgD,EAAA,MAAAzB,GACA,UAAA0B,EAAA,CAEA,WADAA,EAAAjD,EAAAgD,EAAA,YAAAzB,IAEA,OAAAnB,EAAAjN,MAAA,eAAA6P,EAAA,oBAEAA,GAAA,iBAGAA,GAAA,MAGA1I,EAAAhB,aACAgB,EAAAjB,WAAAU,QAAA,KACA4H,EAAAvJ,eAAA6J,UAAAgB,EAAAD,GAAA,EAAArB,KAKA,CACA,IAAAjL,EAAAqM,IACA,GAAArM,EAAA,OAAAA,GA1RA,SAAApG,KAAA6B,GACAqP,EAAAxC,QAAA0C,IACA,mBAAAA,EAAApR,IAAAoR,EAAApR,MAAA6B,KA4RAwS,CAAA,aAAAhD,EAAA1B,EAAAsB,GAGA,CACA,IAAA7K,EAAAqM,IACA,GAAArM,EAAA,OAAAA,EAIA,MAAAkE,EAAAxC,eAAAwM,cAAAjD,GAGA,GAAAxP,EAAAgO,UAEA,OADA3H,EAAAI,MAAAgC,EAAA4E,QAAA5C,IAAA9K,KAAA+S,gBAAAC,OAAA5P,KAAA6C,UACAqI,EAAA,MAIA,IAAA2E,EAAA,EACAC,EAAA,EACA7S,EAAA8S,WACAF,EAAA5V,QAAAsM,qBACAuJ,EAAA7V,QAAAuM,oBAEA,iBAAAvJ,EAAA4S,gBACAA,EAAA5S,EAAA4S,eAEA,iBAAA5S,EAAA6S,cACAA,EAAA7S,EAAA6S,aAEAD,EAAA7O,KAAAC,IAAAD,KAAAgP,IAAAH,EAAA,MACAC,EAAA9O,KAAAC,IAAAD,KAAAgP,IAAAF,EAAA,MAGA,MAAAG,EAAA/M,eAAAgN,gBAmBA,GAlBAhN,eAAAiN,UAAAF,EAAA,GACA/M,eAAAkN,YAAAH,EAAAhT,EAAAoT,UACAnN,eAAAoN,gBAAAL,EAAAhT,EAAAsT,cACArN,eAAAsN,gBAAAP,EAAAhT,EAAAwT,cACAvN,eAAAwN,eAAAT,EAAAhT,EAAA0T,aACAzN,eAAA0N,iBAAAX,EAAAhT,EAAA4T,eACA3N,eAAA4N,cAAAb,EAAAhT,EAAA8T,aAAA,GACA7N,eAAA8N,aAAAf,EAAA,MAAAhT,EAAAgU,WACA/N,eAAAgO,sBAAAjB,EAAAJ,EAAAC,GACA5M,eAAAiO,YAAAlB,EAAAhT,EAAAmU,UAGAlO,eAAAmO,eAAApB,EAAA,qBACA/M,eAAAmO,eAAApB,EAAA,uBACA/M,eAAAmO,eAAApB,EAAA,+BACA/M,eAAAmO,eAAApB,EAAA,+BAGAhT,EAAAqU,IAAA,CACA,IAAAC,EAAAtU,EAAAqU,IACA,QAAAzW,EAAA,EAAAqS,EAAAqE,EAAArS,OAAuCrE,EAAAqS,IAAOrS,EAAA,CAC9C,IAAA2W,EAAAD,EAAA1W,GACA8B,EAAA6U,EAAA1E,QAAA,KACA,GAAAnQ,EAAA,SAAAuO,EAAAjN,MAAA,iBAAAuT,EAAA,kBACA,IAAAC,EAAAD,EAAAlD,UAAA,EAAA3R,GAAA+D,OACAtF,EAAAoW,EAAAlD,UAAA3R,EAAA,GAAA+D,OACA,IAAA+Q,EAAAvS,OAAA,OAAAgM,EAAAjN,MAAA,iBAAAuT,EAAA,kBACAtO,eAAAmO,eAAApB,EAAAwB,EAAArW,IAKA,IAWAlB,EAXA0E,EAAA3B,EAAAyU,OACA,SAAA9S,EAAA,CACA,iBAAAA,QAAAmB,MAAA,MACA,QAAAlF,EAAA,EAAAqS,EAAAtO,EAAAM,OAAwCrE,EAAAqS,IAAOrS,EAAA,CAC/C,IAAAO,EAAAwD,EAAA/D,GAAA6F,OACAiR,EAAAzO,eAAA,WAAA9H,EAAA4O,QAAA,WAAA4H,eACA,IAAAD,EAAA,OAAAzG,EAAAjN,MAAA,YAAA7C,EAAA,kBACA8H,eAAA2O,cAAA5B,EAAA0B,IAKAvM,EAAAd,eACA,IACAc,EAAAf,aAAAQ,QAAA,KACA3K,EAAAgJ,eAAA4O,eAAApM,EAAAuK,KAEG,MAAA7V,GACH,OAAA8Q,EAAA9Q,GAEA,GAAAgJ,iBAAAqJ,EAAAnJ,GAEA,OADApJ,KAAA6X,UACA7G,EAAAjN,MAAA,kBAeA,GAXAhB,EAAA+U,WACA5M,EAAAV,gBACAU,EAAAX,cAAAI,QAAA,KACA,IAAA3K,EAAA8X,WAEA,OADA9X,EAAA6X,UACA7G,EAAAjN,MAAA,sBAMA,UAAAhB,EAAAgV,SACA7M,EAAAR,gBACAQ,EAAAT,cAAAE,QAAA,KACA3K,EAAAgY,UAAA,4BAEG,UAAAjV,EAAAgV,SACH7M,EAAAR,gBACAQ,EAAAT,cAAAE,QAAA,KACA3K,EAAAgY,UAAA,yBAEG,aAAAjV,EAAAgV,SAEH,OADA/X,EAAA6X,UACA7G,EAAAjN,MAAA,2BAKA4R,GAAA,GAAAC,GAAA,KAAAD,EAAA,GAEA3V,EAAAiY,iBAAAtC,GACA3V,EAAAkY,eAAAtC,GACA5V,EAAAmY,aAAApV,EAAAqV,OAEA,IAAAJ,EAAA,GA8BA,GA7BAjV,EAAAiV,YACA,iBAAAjV,EAAAiV,YACAjV,EAAAiV,UAAAjV,EAAAiV,UAAAnS,MAAA,MAEA9C,EAAAiV,UAAAhT,QACAjC,EAAAiV,UAAApI,QAAAyI,IACAL,EAAApF,QAAAyF,GAAA,GACAL,EAAAxS,KAAA6S,OAMA1C,EAAA,GAAAC,EAAA,KACA1K,EAAAR,gBACAQ,EAAAT,cAAAE,QAAA,KACA3K,EAAA6V,cAKAmC,EAAAhT,SACAkG,EAAAR,gBACAQ,EAAAT,cAAAE,QAAA,KACA3K,EAAAgY,YAAAxK,IAAA6K,KAAA7R,aAKAzD,EAAAuV,OAAA,CACA,IAAAC,GAAA,EACAC,GAAA,EAaA,GAXA,MAAAzV,EAAA0V,UACA,WAAAC,KAAA3V,EAAA0V,UAAA,MAAA1V,EAAA4V,SACA5V,EAAA4V,SAAA5V,EAAA0V,QACO,QAAAC,KAAA3V,EAAA0V,UAAA,MAAA1V,EAAA6V,UACP7V,EAAA6V,UAAA7V,EAAA0V,QACO,MAAA1V,EAAA8V,aACP9V,EAAA8V,WAAA9V,EAAA0V,UAKA,MAAA1V,EAAA8V,WAAA,CACA,IAMAC,EANAC,EAAA,MAAAhW,EAAAgU,UACAhU,EAAAgU,UAAA/R,OACAjC,EAAAgU,UACApU,KAAA+E,SAAA3E,EAAA8V,YAAA,OACA,KAiBA,GAdA3N,EAAAZ,YACAY,EAAAb,UAAAM,QAAA,KACAmO,EAAA9Y,EAAAgZ,SAAAD,KAGAhW,EAAA8V,WAAA7T,OACA6L,EAAA9N,EAAA8V,WAAAC,EAAA3N,OAAAgH,IAEA8G,EAAAH,EAAA3N,QACAoN,GAAA,GAEAC,GAAA,EAGA,MAAAM,EAAA/B,UACA,GAAAhU,EAAA8V,WAAA7T,OAAA,CACA,IAAA+R,EAAApC,KAAAtD,MAAAyH,EAAA/B,WACAA,EAAAmC,WAAAnZ,QAAAmM,cACA6K,EAAA3G,QAAAR,QAAA,CAAA1O,EAAAkF,KACA,IAAA+S,EAAA,KACA,GAAAjY,EAAAgT,WAAAnU,QAAAoM,eAAA,CACA,IAAAiN,EAAAlY,EAAAkT,UAAArU,QAAAoM,cAAAnH,QAAA8K,QAAA,YACA,GAAA/P,QAAAwM,aAAA/J,eAAA4W,GACAD,EAAApZ,QAAAwM,aAAA6M,QAEA,QAAAzY,EAAA,EAAAqS,EAAAF,EAAA9N,OAAyDrE,EAAAqS,GAEzD,QADAmG,EAAAvI,EAAA1P,EAAAkT,UAAArU,QAAAoM,cAAAnH,QAAA8N,EAAAnS,OADgEA,SAMhEwY,EAAAvI,EAAA1P,EAAAiR,GAEA,UAAAgH,EACA,OAAAnI,EAAAjN,MAAA,gBAAA7C,EAAA,iBAEA6V,EAAAsC,iBAAAtC,EAAAsC,eAAA,IACAtC,EAAAsC,eAAAjT,GAAA+S,IAEAtI,EAAAlO,KAAAmD,KACAnD,KAAA0E,QAAAtE,EAAA8V,YACAlW,KAAA+E,SAAAqR,IACAjJ,QAAA,YAAA6E,KAAA2E,UAAAvC,GAAA5E,QAEA/I,EAAAI,MAAA,+CAAAb,KAMA,SAAA5F,EAAA6V,UAAA,CACA,IAAAW,EACAxW,EAAA6V,UAAA5T,QACAkG,EAAAZ,YACAY,EAAAb,UAAAM,QAAA,KACA4O,EAAAvZ,EAAAwZ,YAEA3I,EAAA9N,EAAA6V,UAAAW,EAAApH,IACOoG,IACPrN,EAAAZ,YACAY,EAAAb,UAAAM,QAAA,KACA4O,EAAAvZ,EAAAwZ,YAEAP,EAAAM,GACAhB,GAAA,GAEAC,GAAA,EAIA,SAAAzV,EAAA0W,QAAA,CACA,IAAAC,EACA3W,EAAA0W,QAAAzU,QACAkG,EAAAZ,YACAY,EAAAb,UAAAM,QAAA,KACA+O,EAAA1Q,eAAA2Q,SAAAnO,KAEAqF,EAAA9N,EAAA0W,QAAAC,EAAAvH,IACOoG,IACPrN,EAAAZ,YACAY,EAAAb,UAAAM,QAAA,KACA+O,EAAA1Q,eAAA2Q,SAAAnO,KAEAyN,EAAAS,GACAnB,GAAA,GAEAC,GAAA,EAIA,SAAAzV,EAAA6W,QAAA,CACA,IAAAC,EACA9W,EAAA6W,QAAA5U,QACAkG,EAAAZ,YACAY,EAAAb,UAAAM,QAAA,KACAkP,EAAA7Q,eAAA8Q,SAAAtO,KAEAqF,EAAA9N,EAAA6W,QAAAC,EAAA1H,IACOoG,IACPrN,EAAAZ,YACAY,EAAAb,UAAAM,QAAA,KACAkP,EAAA7Q,eAAA8Q,SAAAtO,KAEAyN,EAAAY,GACAtB,GAAA,GAEAC,GAAA,EAIA,SAAAzV,EAAA4V,WAAAH,EAAA,CACA,IAAAuB,EACAhX,EAAA4V,UAAA5V,EAAA4V,SAAA3T,QACAkG,EAAAZ,YACAY,EAAAb,UAAAM,QAAA,KACAoP,EAAA/Z,EAAAga,WAEAnJ,EAAA9N,EAAA4V,SAAAoB,EAAA5H,IACOoG,IACPrN,EAAAZ,YACAY,EAAAb,UAAAM,QAAA,KACAoP,EAAA/Z,EAAAga,WAEAf,EAAAc,KAYA,OAPA/Z,EAAA6X,UACA9U,EAAA4H,SACAM,WAAAC,EAAA9B,GAEArG,EAAAkX,WACA1O,UAAAC,EAAApC,GAEA4H,EAAA,MAEA,SAAAC,EAAAqE,EAAAnD,GACA,IAAAjR,EAAAyB,KAAAuB,QAAAiO,EAAAmD,GACA,IACA,IAAA6D,EAKA,OAJAjO,EAAApB,YACAoB,EAAArB,UAAAc,QAAA,KACAwO,EAAA7Q,GAAAqH,aAAAzO,EAAA,CAAsCgZ,SAAA,WAEtCf,EACK,MAAAjZ,GACL,aAIA,SAAAgR,EAAAoE,EAAAxE,EAAAqB,GACA,IAUA,OATAjH,EAAAlB,aACAkB,EAAAnB,WAAAY,QAAA,KACAjC,OAAA/F,KAAAmD,KAAAqM,EAAAxP,KAAA0E,QAAAiO,KACA,iBAAAxE,EACAxI,GAAA6R,cAAAxX,KAAAmD,KAAAqM,EAAAmD,GAAAxE,EAAA,CAAoEoJ,SAAA,SAEpE5R,GAAA6R,cAAAxX,KAAAmD,KAAAqM,EAAAmD,GAAAxE,MAGA,EACK,MAAA5Q,GACL,UAIA,SAAAiR,EAAA9J,EAAA8K,GACA,IAAAiI,EACA,IAIA,OAHAlP,EAAArB,UAAAc,QAAA,KACAyP,EAAA9R,GAAA+R,YAAA1X,KAAAmD,KAAAqM,EAAA9K,IAAAjC,OAAAyK,GAAA,yBAAA6I,KAAA7I,MAEAuK,EACK,MAAAla,GACL,aAIA,SAAA+Y,EAAAnI,GACAmI,EAAAqB,OACApP,EAAAlB,aACAiP,EAAAqB,MAAA,GAEApP,EAAAnB,WAAAY,QAAA,KACA,iBAAAmG,EACAxF,EAAA9B,MAAAsH,EAAA,CAAgCoJ,SAAA,SAEhC5O,EAAA9B,MAAAsH,OAsBA/Q,QAAAmJ,kCAsBAnJ,QAAA6J,wBAEAjF,QAAAiG,SAAAjG,QAAAiG,OAAsCnK,oBAAQ,KAU9CV,QAAA4K,gBAOA5K,QAAA+K,sBAkBA/K,QAAAkL,sBASAlL,QAAAwL,oBAEA,IAAAgP,iBAAA,IAAAlS,eAAAmS,OACAnS,OAAAmS,OAAAC,aAAA,SAAAxS,GAAgD,WAAAI,OAAAmS,OAAAvS,IAChD,SAAAA,GAAmB,WAAAyS,WAAAzS,IAGnB,SAAAqI,mBAAAxN,GACA,IAAA6X,EAAA,GA6BA,OA5BAA,EAAAnR,MAAA,SAAAoR,GAEA,GADA9X,KAAA8X,GACA,iBAAAA,EAAA,CACA,IAAAC,EAAAN,YAAAhS,KAAAvD,OAAA4V,IACArS,KAAAiB,MAAAoR,EAAAC,EAAA,GACAD,EAAAC,EAEAva,KAAAkF,KAAAoV,IAEAD,EAAAG,MAAA,WACAH,EAAA3V,OAAA,GAEA2V,EAAAI,SAAA,WAEA,IADA,IAAAC,EAAA,EAAAra,EAAA,EAAAqS,EAAA1S,KAAA0E,OACArE,EAAAqS,GAAAgI,GAAA1a,KAAAK,KAAAqE,OACA,IAAA6V,EAAAN,YAAAS,GAEA,IADAA,EAAAra,EAAA,EACAA,EAAAqS,GACA6H,EAAArM,IAAAlO,KAAAK,GAAAqa,GACAA,GAAA1a,KAAAK,GAAAqE,SACArE,EAEA,OAAAka,GAEAF,EAAAM,SAAA,WACA,IAAAJ,EAAAva,KAAAya,WACA,OAAAxS,KAAA2S,KAAAL,EAAA,EAAAA,EAAA7V,SAEA2V,EAGA5a,QAAAuQ,sCAGAvQ,QAAAob,WAAA,CACAC,cAAA,EACAC,eAAA,EACAC,mBAAA,EACAC,gBAAA,EACAC,eAAA,EACAC,kBAAA,EACAC,wBAAA,EACAC,OAAA,SACA3b,OAAA,WACA4b,OAAA,EACAC,MAAA,GACAC,SAAA,4FC5/BA,IAAAvT,EAAAxI,EAOAwI,EAAAvD,OAAA,SAAA4J,GAGA,IAFA,IAAA3G,EAAA,EACAjH,EAAA,EACAL,EAAA,EAAmBA,EAAAiO,EAAA5J,SAAmBrE,GACtCK,EAAA4N,EAAArH,WAAA5G,IACA,IACAsH,GAAA,EACAjH,EAAA,KACAiH,GAAA,EACA,cAAAjH,IAAA,cAAA4N,EAAArH,WAAA5G,EAAA,OACAA,EACAsH,GAAA,GAEAA,GAAA,EAEA,OAAAA,GAUAM,EAAA2S,KAAA,SAAAL,EAAAnU,EAAAC,GAEA,GADAA,EAAAD,EACA,EACA,SAKA,IAJA,IAGA7E,EAHAgD,EAAA,KACA+V,EAAA,GACAja,EAAA,EAEA+F,EAAAC,IACA9E,EAAAgZ,EAAAnU,MACA,IACAkU,EAAAja,KAAAkB,EACAA,EAAA,KAAAA,EAAA,IACA+Y,EAAAja,MAAA,GAAAkB,IAAA,KAAAgZ,EAAAnU,KACA7E,EAAA,KAAAA,EAAA,KACAA,IAAA,EAAAA,IAAA,OAAAgZ,EAAAnU,OAAA,OAAAmU,EAAAnU,OAAA,KAAAmU,EAAAnU,MAAA,MACAkU,EAAAja,KAAA,OAAAkB,GAAA,IACA+Y,EAAAja,KAAA,YAAAkB,IAEA+Y,EAAAja,MAAA,GAAAkB,IAAA,OAAAgZ,EAAAnU,OAAA,KAAAmU,EAAAnU,KACA/F,EAAA,QACAkE,MAAA,KAAAW,KAAAkL,OAAAqL,aAAA1Y,MAAAqN,OAAAkK,IACAja,EAAA,GAGA,OAAAkE,GACAlE,GACAkE,EAAAW,KAAAkL,OAAAqL,aAAA1Y,MAAAqN,OAAAkK,EAAA3X,MAAA,EAAAtC,KACAkE,EAAAiB,KAAA,KAEA4K,OAAAqL,aAAA1Y,MAAAqN,OAAAkK,EAAA3X,MAAA,EAAAtC,KAUA4H,EAAAiB,MAAA,SAAAoF,EAAAiM,EAAAG,GAIA,IAHA,IACAgB,EACAC,EAFAvV,EAAAsU,EAGAra,EAAA,EAAmBA,EAAAiO,EAAA5J,SAAmBrE,GACtCqb,EAAApN,EAAArH,WAAA5G,IACA,IACAka,EAAAG,KAAAgB,EACSA,EAAA,MACTnB,EAAAG,KAAAgB,GAAA,MACAnB,EAAAG,KAAA,GAAAgB,EAAA,KACS,cAAAA,IAAA,eAAAC,EAAArN,EAAArH,WAAA5G,EAAA,MACTqb,EAAA,aAAAA,IAAA,UAAAC,KACAtb,EACAka,EAAAG,KAAAgB,GAAA,OACAnB,EAAAG,KAAAgB,GAAA,UACAnB,EAAAG,KAAAgB,GAAA,SACAnB,EAAAG,KAAA,GAAAgB,EAAA,MAEAnB,EAAAG,KAAAgB,GAAA,OACAnB,EAAAG,KAAAgB,GAAA,SACAnB,EAAAG,KAAA,GAAAgB,EAAA,KAGA,OAAAhB,EAAAtU,qBCvGA,SAAA/B,GAAA,IAAAuX,OAAA,IAAAvX,MAAA,GACAwX,EAAAD,EAAAtY,KAAA,OAAAsY,EAAAtY,IAEA,SAAA0C,EAAAqU,EAAAyB,GACA,IAAAC,EAAAD,GAAA,GAUA,OATAC,EAAA9K,UAAAoJ,OAAAjR,OAAAyS,EACAE,EAAAC,KAAAnD,GAAAkD,EAAA9K,UAAAxR,EAAAwc,KAAApD,EAAApZ,EAAAyc,MAAArD,EACAkD,EAAAxK,IAAAsH,GAAAkD,EAAA9K,UAAAxR,EAAA0c,IAAAtD,EAAApZ,EAAAyc,MAAArD,EACAkD,EAAAK,MAAAvD,GAAAkD,EAAA9K,UAAAxR,EAAA4c,MAAAxD,EAAApZ,EAAAyc,MAAArD,EACAkD,EAAA3K,OAAAyH,GAAAkD,EAAA9K,UAAAxR,EAAA6c,OAAAzD,EAAApZ,EAAAyc,MAAArD,EACAkD,EAAAQ,KAAA1D,GAAAkD,EAAA9K,UAAAxR,EAAA+c,KAAA3D,EAAApZ,EAAAyc,MAAArD,EACAkD,EAAAU,QAAA5D,GAAAkD,EAAA9K,UAAAxR,EAAAid,QAAA7D,EAAApZ,EAAAyc,MAAArD,EACAkD,EAAAnK,KAAAiH,GAAAkD,EAAA9K,UAAAxR,EAAAkd,KAAA9D,EAAApZ,EAAAyc,MAAArD,EACAkD,EAAApK,MAAAkH,GAAAkD,EAAA9K,UAAAxR,EAAAmd,MAAA/D,EAAApZ,EAAAyc,MAAArD,EACAkD,EAGAtc,EAAAuL,OAAAhF,EAAA4V,EAAA5Q,OAAAvL,GACAA,EAAAqJ,OAAA9C,EAAA4V,EAAA9S,QACArJ,EAAAuG,OAEAvG,EAAAwc,KAAA,QACAxc,EAAA0c,IAAA,QACA1c,EAAA4c,MAAA,QACA5c,EAAA6c,OAAA,QACA7c,EAAA+c,KAAA,QACA/c,EAAAid,QAAA,QACAjd,EAAAkd,KAAA,QACAld,EAAAmd,MAAA,QACAnd,EAAAyc,MAAA,wCCmDAzc,EAAAsR,MArEA,SAAAxN,EAAAsZ,GACA,IAAAlR,EAAA,GACAuF,EAAA,GACAtO,UAAA,GACAyO,EAAA,GAGA0F,EAAA,GACAhW,OAAAkP,KAAA4M,GAAAvN,QAAA1N,IACA,IAAAA,EAAAgS,WAAA,MACA,IAAAkJ,EAAAD,EAAAjb,GACA,MAAAkb,EAAA7F,QACA,iBAAA6F,EAAA7F,MAAAF,EAAA+F,EAAA7F,OAAArV,EACAc,MAAAyN,QAAA2M,EAAA7F,QAAA6F,EAAA7F,MAAA3H,QAAA2H,GAAAF,EAAAE,GAAArV,IAEA,MAAAkb,EAAAC,UAAApR,EAAA/J,GAAAkb,EAAAC,YAIA,QAAA1c,EAAA,EAAAqS,GAAAnP,IAAAZ,SAAA+B,OAAmDrE,EAAAqS,IAAOrS,EAAA,CAC1D,IAAA8Q,EAAA5N,EAAAlD,GACA,SAAA8Q,EAAA,GAAsB9Q,EAAK,MAC3B,IAAiDyc,EAAAlb,EAAjDob,EAAA,gDAAiDC,KAAA9L,GACjD,GAAA6L,EACAH,EAAA1L,GAAA2L,EAAAD,EAAAjb,EAAAuP,GACA,MAAA6L,EAAA,IACAF,EAAAD,EAAAjb,EAAAmV,EAAAiG,EAAA,GAAAlJ,UAAA,OACA,MAAAkJ,EAAA,KAAAzZ,EAAAlD,KAAA2c,EAAA,IACO,MAAAA,EAAA,KACPF,EAAAD,EAAAjb,EAAAob,EAAA,GAAAlJ,UAAA,MACA,MAAAkJ,EAAA,KAAAzZ,EAAAlD,KAAA2c,EAAA,QAEK,CACL,OAAA7L,EAAAlK,WAAA,GACA,CAAYrE,UAAAsC,KAAAiM,GAAqB,SADjC2L,EAAAD,EAAAjb,EAAAuP,GAGA,GAAA2L,EAAA,CACA,SAAAA,EAAAI,MAAA,MAAAJ,EAAAI,KAAAvR,EAAA/J,IAAA,OAEA,GAAAvB,EAAA,EAAAkD,EAAAmB,QAAA,IAAAnB,EAAAlD,EAAA,GAAA4G,WAAA,GACA,OAAA6V,EAAAI,MACA,QAAAvR,EAAA/J,GAAAub,SAAA5Z,IAAAlD,GAAA,IAA6D,MAC7D,QAAAsL,EAAA/J,IAAA+J,EAAA/J,IAAA,IAAAgF,OAAAuW,SAAA5Z,IAAAlD,GAAA,KAA0F,MAC1F,QAAAsL,EAAA/J,GAAAwb,WAAA7Z,IAAAlD,IAA2D,MAC3D,QAAAsL,EAAA/J,IAAA+J,EAAA/J,IAAA,IAAAgF,OAAAwW,WAAA7Z,IAAAlD,KAAwF,MACxF,QAAAsL,EAAA/J,GAAAwO,OAAA7M,IAAAlD,IAAuD,MACvD,QAAAsL,EAAA/J,IAAA+J,EAAA/J,IAAA,IAAAgF,OAAArD,IAAAlD,GAAAkF,MAAA,MAAuF,MACvF,QAAA2L,EAAAhM,KAAAiM,KAAuC9Q,OAGvC,OAAAyc,EAAAI,MACA,QACA,QAAAvR,EAAA/J,GAAAkb,EAAAC,SAAA,EAAyD,MACzD,QAAApR,EAAA/J,GAAAkb,EAAAC,SAAA,GAA0D,MAC1D,QACA,QACA,QAAApR,EAAA/J,GAAA+J,EAAAoR,SAAA,GAA2D,MAC3D,QAAA7L,EAAAhM,KAAAiM,GAIA2L,EAAAxb,OAAAP,OAAAkP,KAAA6M,EAAAxb,OAAAgO,QAAAoD,GAAA/G,EAAA+G,GAAAoK,EAAAxb,MAAAoR,SACKxB,EAAAhM,KAAAiM,GAEL,KAAA9Q,EAAAqS,GAAArB,EAAAnM,KAAA3B,EAAAlD,MAEA,OAAUsL,UAAAuF,UAAAtO,oBAAAyO,aA8BV5R,EAAA+R,KAxBA,SAAAqL,EAAAlR,GACAA,MAAA,IACA,IAAA0R,EAAA1R,EAAA0R,QAAA,EACAC,EAAA3R,EAAA2R,SAAA,GACAC,EAAA5R,EAAA4R,KAAA,KACAC,EAAA,GAgBA,OAfAzc,OAAAkP,KAAA4M,GAAAvN,QAAA1N,IACA,IAAAkb,EAAAD,EAAAjb,GACA,SAAAkb,EAAAW,YAAA,CAEA,IADA,IAAA5E,EAAA,GACAA,EAAAnU,OAAA2Y,GAAAxE,GAAA,IAGA,IAFAA,GAAA,KAAAjX,EACAkb,EAAA7F,QAAA4B,GAAA,MAAAiE,EAAA7F,OACA4B,EAAAnU,OAAA4Y,GAAAzE,GAAA,IACAnW,MAAAyN,QAAA2M,EAAAW,aACAD,EAAAtY,KAAA2T,EAAAiE,EAAAW,YAAA,GAAAX,EAAAW,YAAA9a,MAAA,GAAAuK,IAAAwQ,IACA,QAAArd,EAAA,EAAuBA,EAAAid,IAAajd,EAAAqd,EAAA,IAAAA,EACpC,OAAAH,EAAAG,IACOlY,KAAA,KACFgY,EAAAtY,KAAA2T,EAAAiE,EAAAW,gBAELD,EAAAhY,KAAA+X,sBCxGA,SAAAlZ,GAwBA,IAAAhC,EAAWlC,EAAQ,GACnB6H,EAAS7H,EAAQ,GACjBwd,EAAAR,SAAA,UAEAzd,EAAAD,QAAA,SAAA2I,EAAAjG,EAAA2O,EAAA8M,GACA9M,GAAA,iBAAAA,IACAA,EAAA,CAAYtP,KAAAsP,IAEZ,IAAAtP,EAAAsP,EAAAtP,UACAqc,IAAArc,IACAA,EAAAmc,GAAAtZ,EAAAN,SAEA6Z,MAAA,MACAzb,EAAAE,EAAAuB,QAAAzB,GACA,IACA6F,EAAA8V,UAAA3b,EAAAX,GACAoc,KAAAzb,EACG,MAAA4b,GACH,OAAAA,EAAA/W,MACA,aACA4W,EAAAxV,EAAA/F,EAAA0E,QAAA5E,GAAA2O,EAAA8M,GACAxV,EAAAjG,EAAA2O,EAAA8M,GACA,MACA,QACA,IAAAI,EACA,IACAA,EAAAhW,EAAAiW,SAAA9b,GACS,MAAA+b,GACT,MAAAH,EAEA,IAAAC,EAAAG,cAAA,MAAAJ,GAIA,OAAAH,sCC1D0M,oBAAA7d,WAA1IL,EAAAD,QAAyL,SAAAG,GAAmB,IAAA2B,EAAA,GAAS,SAAAlB,EAAAyB,GAAc,GAAAP,EAAAO,GAAA,OAAAP,EAAAO,GAAArC,QAA4B,IAAA0B,EAAAI,EAAAO,GAAA,CAAYzB,EAAAyB,EAAAxB,GAAA,EAAAb,QAAA,IAAqB,OAAAG,EAAAkC,GAAAtB,KAAAW,EAAA1B,QAAA0B,IAAA1B,QAAAY,GAAAc,EAAAb,GAAA,EAAAa,EAAA1B,QAA2D,OAAAY,EAAAI,EAAAb,EAAAS,EAAAK,EAAAa,EAAAlB,EAAAM,EAAA,SAAAf,EAAA2B,EAAAO,GAAuCzB,EAAAS,EAAAlB,EAAA2B,IAAAR,OAAAC,eAAApB,EAAA2B,EAAA,CAAqCN,YAAA,EAAAC,IAAAY,KAAsBzB,EAAAc,EAAA,SAAAvB,GAAiB,oBAAAwB,eAAAC,aAAAN,OAAAC,eAAApB,EAAAwB,OAAAC,YAAA,CAA4FC,MAAA,WAAeP,OAAAC,eAAApB,EAAA,cAAwC0B,OAAA,KAAWjB,EAAAkB,EAAA,SAAA3B,EAAA2B,GAAmB,KAAAA,IAAA3B,EAAAS,EAAAT,IAAA,EAAA2B,EAAA,OAAA3B,EAA8B,KAAA2B,GAAA,iBAAA3B,QAAA6B,WAAA,OAAA7B,EAAqD,IAAAkC,EAAAf,OAAAY,OAAA,MAA0B,GAAAtB,EAAAc,EAAAW,GAAAf,OAAAC,eAAAc,EAAA,WAA6Cb,YAAA,EAAAK,MAAA1B,IAAsB,EAAA2B,GAAA,iBAAA3B,EAAA,QAAAuB,KAAAvB,EAAAS,EAAAM,EAAAmB,EAAAX,EAAA,SAAAI,GAA6D,OAAA3B,EAAA2B,IAAYM,KAAA,KAAAV,IAAe,OAAAW,GAASzB,EAAAyB,EAAA,SAAAlC,GAAiB,IAAA2B,EAAA3B,KAAA6B,WAAA,WAAiC,OAAA7B,EAAAmd,SAAiB,WAAY,OAAAnd,GAAU,OAAAS,EAAAM,EAAAY,EAAA,IAAAA,MAAsBlB,EAAAS,EAAA,SAAAlB,EAAA2B,GAAmB,OAAAR,OAAAkB,UAAAC,eAAA1B,KAAAZ,EAAA2B,IAAiDlB,EAAA8B,EAAA,GAAA9B,IAAA+B,EAAA,GAA14B,CAA25B,UAAAxC,EAAA2B,EAAAlB,GAAkB,aAAa,IAAAyB,EAAAX,EAAAnB,WAAAoe,YAAAtc,EAAA,SAAAlC,EAAA2B,GAA+C,OAAAO,EAAAf,OAAAsd,gBAAA,CAAiCC,UAAA,cAAa5b,OAAA,SAAA9C,EAAA2B,GAAgC3B,EAAA0e,UAAA/c,IAAc,SAAA3B,EAAA2B,GAAgB,QAAAlB,KAAAkB,IAAAW,eAAA7B,KAAAT,EAAAS,GAAAkB,EAAAlB,MAAgDT,EAAA2B,IAAO,SAAA3B,EAAA2B,GAAe,SAAAlB,IAAaL,KAAAue,YAAA3e,EAAmBkC,EAAAlC,EAAA2B,GAAA3B,EAAAqC,UAAA,OAAAV,EAAAR,OAAAY,OAAAJ,IAAAlB,EAAA4B,UAAAV,EAAAU,UAAA,IAAA5B,KAA+EU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAW,IAAAc,EAAA/B,EAAA,GAAAme,EAAAne,EAAA,GAAkBkB,EAAAkd,MAAAD,EAAAC,MAAAld,EAAAmd,MAAAF,EAAAE,MAAgC,IAAA5d,EAAA6d,EAAAte,EAAA,IAAa,SAAAT,GAAaA,IAAAgf,OAAA,YAAAhf,IAAAif,UAAA,eAAAjf,IAAAkf,aAAA,kBAAAlf,IAAAmf,SAAA,cAAAnf,IAAAof,cAAA,mBAAApf,IAAAqf,UAAA,eAAArf,IAAAsf,WAAA,gBAAAtf,IAAAuf,UAAA,eAAAvf,IAAAwf,OAAA,YAAAxf,IAAAyf,KAAA,UAAAzf,IAAA0f,MAAA,YAAA1f,IAAA2f,MAAA,YAAA3f,IAAA4f,cAAA,oBAAA5f,IAAA6f,MAAA,YAAA7f,IAAA8f,SAAA,eAAA9f,IAAA+f,WAAA,iBAAA/f,IAAAggB,QAAA,cAAAhgB,IAAAigB,IAAA,UAAAjgB,IAAAkgB,KAAA,WAAAlgB,IAAAmgB,cAAA,oBAAAngB,IAAAogB,eAAA,qBAAApgB,IAAAqgB,QAAA,cAAArgB,IAAAsgB,MAAA,YAAAtgB,IAAAugB,KAAA,WAAAvgB,IAAAwgB,KAAA,WAAAxgB,IAAAygB,YAAA,kBAAAzgB,IAAA0gB,aAAA,mBAAA1gB,IAAA2gB,YAAA,kBAAA3gB,IAAA4gB,MAAA,YAAA5gB,IAAA6gB,MAAA,YAAA7gB,IAAA8gB,SAAA,eAAA9gB,IAAA+gB,GAAA,SAAA/gB,IAAAghB,MAAA,YAAAhhB,IAAAihB,OAAA,aAAAjhB,IAAAkhB,cAAA,oBAAAlhB,IAAAmhB,aAAA,mBAAAnhB,IAAAohB,WAAA,iBAAAphB,IAAAqhB,IAAA,UAAArhB,IAAAshB,GAAA,SAAAthB,IAAAuhB,OAAA,aAAAvhB,IAAAwhB,OAAA,aAAAxhB,IAAAyhB,OAAA,aAAAzhB,IAAA0hB,MAAA,YAAA1hB,IAAA2hB,IAAA,UAAA3hB,IAAA4hB,SAAA,eAAA5hB,IAAA6hB,KAAA,WAAA7hB,IAAA8hB,MAAA,YAAA9hB,IAAA+hB,iBAAA,uBAAA/hB,IAAAgiB,gBAAA,sBAAAhiB,IAAAiiB,qBAAA,2BAAAjiB,IAAAkiB,iBAAA,uBAAAliB,IAAAmiB,oBAAA,0BAAAniB,IAAAoiB,kBAAA,wBAAApiB,IAAAqiB,0BAAA,gCAAAriB,IAAAsiB,qBAAA,2BAAAtiB,IAAAuiB,kBAAA,wBAAAviB,IAAAwiB,qBAAA,2BAAAxiB,IAAAyiB,gBAAA,sBAAAziB,IAAA0iB,oBAAA,0BAAA1iB,IAAA2iB,UAAA,gBAAA3iB,IAAA4iB,aAAA,mBAAA5iB,IAAA6iB,WAAA,iBAAA7iB,IAAA8iB,QAAA,cAAb,CAAm6D5hB,EAAAS,EAAAohB,WAAAphB,EAAAohB,SAAA,KAA6BphB,EAAAqhB,oBAAA,SAAAhjB,GAAqC,OAAAA,GAAU,KAAAkB,EAAA8e,QAAA,KAAA9e,EAAAgf,KAAA,KAAAhf,EAAAsf,KAAA,KAAAtf,EAAA2e,MAAA,SAA6D,UAASle,EAAAshB,eAAA,SAAAjjB,GAA8B,OAAAA,GAAU,KAAAkB,EAAAoe,WAAA,KAAApe,EAAAqe,UAAA,KAAAre,EAAAue,KAAA,KAAAve,EAAA0e,cAAA,KAAA1e,EAAAif,cAAA,KAAAjf,EAAAkf,eAAA,KAAAlf,EAAAof,MAAA,SAAqI,UAAS3e,EAAAuhB,sBAAA,SAAAljB,GAAqC,OAAAA,GAAU,KAAAkB,EAAAoe,WAAA,KAAApe,EAAAkf,eAAA,SAAiD,UAAU,IAAAtf,EAAA,WAAiB,SAAAd,KAAc,OAAAA,EAAAmjB,eAAA,SAAAnjB,EAAA2B,GAAsC,IAAAlB,EAAA,IAAA8B,EAAY,OAAA9B,EAAA2iB,MAAAzhB,EAAAlB,EAAA4iB,WAAArjB,EAAAS,EAAA6iB,KAAA,KAAA7iB,GAA8CT,EAAAujB,qBAAA,SAAA5hB,EAAAlB,GAAsC,OAAAT,EAAAmjB,eAAAnjB,EAAAwjB,2BAAA7hB,EAAAlB,OAA6DT,EAAAyjB,gBAAA,SAAAzjB,EAAA2B,EAAAlB,EAAAyB,GAAqC,IAAAX,EAAA,IAAAmiB,EAAY,OAAAniB,EAAA6hB,MAAAlhB,EAAAX,EAAAP,KAAAhB,EAAAuB,EAAAoiB,cAAAhiB,EAAAJ,EAAAqiB,WAAAnjB,EAAAc,GAA6DvB,EAAA6jB,mBAAA,SAAA7jB,EAAA2B,EAAAlB,EAAAyB,EAAAX,GAA0C,IAAAiB,EAAA,IAAA9B,EAAY,OAAA8B,EAAA4gB,MAAA7hB,EAAAiB,EAAAshB,WAAA9jB,EAAAwC,EAAAuhB,WAAApiB,EAAAa,EAAAwhB,iBAAAvjB,EAAA+B,EAAAohB,WAAA1hB,EAAAM,GAAqFxC,EAAAikB,kBAAA,SAAAtiB,GAAiC,OAAA3B,EAAAyjB,gBAAAzjB,EAAAujB,qBAAA,GAAA5hB,GAAA,QAAAA,IAAiE3B,EAAAkkB,oBAAA,SAAAlkB,EAAA2B,EAAAlB,EAAAyB,GAAyC,IAAAX,EAAA,IAAAR,EAAY,OAAAQ,EAAA6hB,MAAAlhB,EAAAX,EAAAP,KAAAhB,EAAAuB,EAAA4iB,YAAAxiB,EAAAJ,EAAA6iB,YAAA3jB,EAAAc,GAA4DvB,EAAAqkB,gBAAA,SAAArkB,EAAA2B,EAAAlB,EAAAyB,EAAAX,GAAuC,IAAAiB,EAAA,IAAA4C,EAAY,OAAA5C,EAAA4gB,MAAA7hB,EAAAiB,EAAAxB,KAAAhB,EAAAwC,EAAA8a,KAAA3b,EAAAa,EAAA8hB,YAAA7jB,EAAA+B,EAAA+hB,cAAAriB,EAAAM,GAAuExC,EAAAwkB,gBAAA,SAAAxkB,EAAA2B,EAAAlB,GAAmC,IAAAyB,EAAA,IAAAuiB,EAAY,OAAAviB,EAAAkhB,MAAA3iB,EAAAyB,EAAAlB,KAAAhB,EAAAkC,EAAAc,UAAArB,EAAAO,EAAAwiB,cAAAC,EAAA3kB,GAAAkC,GAA+DlC,EAAA4kB,cAAA,SAAA5kB,EAAA2B,EAAAlB,GAAiC,IAAAyB,EAAA,IAAArB,EAAY,OAAAqB,EAAAkhB,MAAA3iB,EAAAyB,EAAA2iB,YAAAljB,EAAAO,EAAA+W,KAAAjZ,EAAAkC,GAA4ClC,EAAAwjB,2BAAA,SAAAxjB,EAAA2B,EAAAlB,QAA8C,IAAAA,OAAA,GAAmB,IAAAyB,EAAA,IAAA4iB,EAAY,OAAA5iB,EAAAkhB,MAAAzhB,EAAAO,EAAA+W,KAAAjZ,EAAAkC,EAAAyM,OAAA3O,EAAAkC,EAAA6iB,SAAAtkB,EAAAyB,GAAoDlC,EAAAglB,gCAAA,SAAAhlB,GAA+C,IAAA2B,EAAA,IAAAmjB,EAAY,OAAAnjB,EAAAyhB,MAAApjB,EAAA2B,EAAAsX,KAAA,GAAAtX,GAA6B3B,EAAAilB,6BAAA,SAAAjlB,EAAA2B,GAA8C,IAAAlB,EAAA,IAAAykB,EAAY,OAAAzkB,EAAA2iB,MAAAzhB,EAAAlB,EAAA0kB,mBAAAnlB,EAAAS,GAA0CT,EAAAolB,0BAAA,SAAAplB,EAAA2B,EAAAlB,EAAAyB,GAA+C,IAAAX,EAAA,IAAA8jB,EAAY,OAAA9jB,EAAA6hB,MAAAlhB,EAAAX,EAAA+jB,cAAAtlB,EAAAuB,EAAAgkB,WAAA5jB,EAAAJ,EAAAikB,OAAA/kB,EAAAc,GAA+DvB,EAAAylB,uBAAA,SAAAzlB,EAAA2B,EAAAlB,EAAAyB,GAA4C,IAAAX,EAAA,IAAAmkB,EAAY,OAAAnkB,EAAA6hB,MAAAlhB,EAAAX,EAAAokB,SAAA3lB,EAAAuB,EAAAqkB,KAAAjkB,EAAAJ,EAAAskB,MAAAplB,EAAAc,GAAmDvB,EAAA8lB,qBAAA,SAAA9lB,EAAA2B,EAAAlB,EAAAyB,GAA0C,IAAAX,EAAA,IAAAwkB,EAAY,OAAAxkB,EAAA6hB,MAAAlhB,EAAAX,EAAAgkB,WAAAvlB,EAAAuB,EAAAoiB,cAAAhiB,EAAAJ,EAAAyB,UAAAvC,EAAAc,GAAkEvB,EAAAgmB,sBAAA,SAAAhmB,GAAqC,IAAA2B,EAAA,IAAAskB,EAAY,OAAAtkB,EAAAyhB,MAAApjB,EAAAojB,MAAAzhB,EAAAukB,YAAAlmB,EAAA2B,GAAyC3B,EAAAmmB,sBAAA,SAAAnmB,EAAA2B,GAAuC,IAAAlB,EAAA,IAAA2lB,EAAY,OAAA3lB,EAAA2iB,MAAAzhB,EAAAlB,EAAA4lB,YAAArmB,EAAAS,GAAmCT,EAAAsmB,4BAAA,SAAAtmB,GAA2C,IAAA2B,EAAA,IAAA4kB,EAAY,OAAA5kB,EAAAyhB,MAAApjB,EAAA2B,GAAmB3B,EAAAwmB,8BAAA,SAAAxmB,EAAA2B,EAAAlB,GAAiD,IAAAyB,EAAA,IAAAukB,EAAY,OAAAvkB,EAAAkhB,MAAA3iB,EAAAyB,EAAAqjB,WAAAvlB,EAAAkC,EAAAwkB,kBAAA/kB,EAAAO,GAAwDlC,EAAA2mB,sBAAA,SAAA3mB,GAAqC,IAAA2B,EAAA,IAAAilB,EAAY,OAAAjlB,EAAAyhB,MAAApjB,EAAA2B,GAAmB3B,EAAA6mB,6BAAA,SAAA7mB,EAAA2B,GAA8C,IAAAlB,EAAA,IAAAqmB,EAAY,OAAArmB,EAAA2iB,MAAAzhB,EAAAlB,EAAAiB,MAAA1B,EAAAS,GAA6BT,EAAA+mB,yBAAA,SAAA/mB,GAAwC,IAAA2B,EAAA,IAAAqlB,EAAY,OAAArlB,EAAAyhB,MAAApjB,EAAAojB,MAAAzhB,EAAAukB,YAAAlmB,EAAA2B,GAAyC3B,EAAAinB,2BAAA,SAAAjnB,EAAA2B,EAAAlB,GAA8C,IAAAyB,EAAA,IAAAglB,EAAY,OAAAhlB,EAAAkhB,MAAA3iB,EAAAyB,EAAAqjB,WAAAvlB,EAAAkC,EAAAilB,OAAAxlB,EAAAO,GAA6ClC,EAAAonB,+BAAA,SAAApnB,EAAA2B,GAAgD,IAAAlB,EAAA,IAAA4mB,EAAY,OAAA5mB,EAAA2iB,MAAAzhB,EAAAlB,EAAAiB,MAAA1B,EAAAS,GAA6BT,EAAAsnB,oBAAA,SAAAtnB,EAAA2B,EAAAlB,EAAAyB,GAAyC,IAAAX,EAAA,IAAAgmB,EAAY,OAAAhmB,EAAA6hB,MAAAlhB,EAAAX,EAAAgkB,WAAAvlB,EAAAuB,EAAAoiB,cAAAhiB,EAAAJ,EAAAyB,UAAAvC,EAAAc,GAAkEvB,EAAAwnB,qBAAA,SAAAxnB,GAAoC,IAAA2B,EAAA,IAAAmR,EAAY,OAAAnR,EAAAyhB,MAAApjB,EAAA2B,GAAmB3B,EAAAynB,8BAAA,SAAAznB,EAAA2B,EAAAlB,GAAiD,IAAAyB,EAAA,IAAAwlB,EAAY,OAAAxlB,EAAAkhB,MAAA3iB,EAAAyB,EAAAylB,MAAA3nB,EAAAkC,EAAA0lB,OAAAjmB,EAAAO,GAAwClC,EAAA6nB,8BAAA,SAAA7nB,EAAA2B,GAA+C,IAAAlB,EAAA,IAAAqnB,EAAY,OAAArnB,EAAA2iB,MAAAzhB,EAAAlB,EAAA8kB,WAAAvlB,EAAAS,GAAkCT,EAAA+nB,+BAAA,SAAA/nB,EAAA2B,EAAAlB,GAAkD,IAAAyB,EAAA,IAAA8lB,EAAY,OAAA9lB,EAAAkhB,MAAA3iB,EAAAyB,EAAAqjB,WAAAvlB,EAAAkC,EAAAE,SAAAT,EAAAO,GAA+ClC,EAAAioB,8BAAA,SAAAjoB,EAAA2B,EAAAlB,GAAiD,IAAAyB,EAAA,IAAAgmB,EAAY,OAAAhmB,EAAAkhB,MAAA3iB,EAAAyB,EAAAimB,QAAAnoB,EAAAkC,EAAAkmB,aAAAzmB,EAAAO,GAAgDlC,EAAAqoB,wBAAA,SAAAroB,EAAA2B,EAAAlB,EAAAyB,GAA6C,IAAAX,EAAA,IAAA+mB,EAAY,OAAA/mB,EAAA6hB,MAAAlhB,EAAAX,EAAAgnB,UAAAvoB,EAAAuB,EAAAinB,OAAA7mB,EAAAJ,EAAAknB,OAAAhoB,EAAAc,GAAuDvB,EAAA0oB,8BAAA,SAAA1oB,EAAA2B,GAA+C,IAAAlB,EAAA,IAAAkoB,EAAY,OAAAloB,EAAA2iB,MAAAzhB,EAAAlB,EAAAiB,MAAA1B,EAAAS,GAA6BT,EAAA4oB,sBAAA,SAAA5oB,GAAqC,IAAA2B,EAAA,IAAAknB,EAAY,OAAAlnB,EAAAyhB,MAAApjB,EAAA2B,GAAmB3B,EAAA8oB,qBAAA,SAAA9oB,GAAoC,IAAA2B,EAAA,IAAAonB,EAAY,OAAApnB,EAAAyhB,MAAApjB,EAAA2B,GAAmB3B,EAAAgpB,qBAAA,SAAAhpB,GAAoC,IAAA2B,EAAA,IAAAsnB,EAAY,OAAAtnB,EAAAyhB,MAAApjB,EAAA2B,GAAmB3B,EAAAkpB,6BAAA,SAAAlpB,EAAA2B,EAAAlB,GAAgD,IAAAyB,EAAA,IAAAinB,EAAY,OAAAjnB,EAAAkhB,MAAA3iB,EAAAyB,EAAAyjB,SAAA3lB,EAAAkC,EAAAknB,QAAAznB,EAAAO,GAA4ClC,EAAAqpB,4BAAA,SAAArpB,EAAA2B,EAAAlB,GAA+C,IAAAyB,EAAA,IAAAonB,EAAY,OAAApnB,EAAAkhB,MAAA3iB,EAAAyB,EAAAyjB,SAAA3lB,EAAAkC,EAAAknB,QAAAznB,EAAAO,GAA4ClC,EAAAupB,qBAAA,SAAAvpB,EAAA2B,GAAsC,IAAAlB,EAAA,IAAA+oB,GAAa,OAAA/oB,EAAA2iB,MAAAzhB,EAAAlB,EAAAgpB,WAAAzpB,EAAAS,GAAkCT,EAAA0pB,qBAAA,SAAA1pB,EAAA2B,GAAsC,IAAAlB,EAAA,IAAAkpB,GAAa,OAAAlpB,EAAA2iB,MAAAzhB,EAAAlB,EAAAmpB,MAAA5pB,EAAAS,GAA6BT,EAAA6pB,uBAAA,SAAA7pB,EAAA2B,EAAAlB,EAAAyB,EAAAX,EAAAiB,EAAAoc,EAAA1d,GAAoD,IAAA6d,EAAA,IAAA+K,GAAa,OAAA/K,EAAAqE,MAAAliB,EAAA6d,EAAAgL,MAAAnL,EAAAG,EAAA/d,KAAAhB,EAAA+e,EAAAiL,eAAAroB,EAAAod,EAAAoF,YAAA1jB,EAAAse,EAAAkL,gBAAA/nB,EAAA6c,EAAAmL,QAAA3oB,EAAAwd,EAAAoL,WAAA3nB,EAAAuc,GAAwH/e,EAAAoqB,wBAAA,SAAApqB,EAAA2B,GAAyC,IAAAlB,EAAA,IAAA4pB,GAAa,OAAA5pB,EAAA2iB,MAAAzhB,EAAAlB,EAAAmpB,MAAA5pB,EAAAS,GAA6BT,EAAAsqB,kBAAA,SAAAtqB,EAAA2B,EAAAlB,GAAqC,IAAAyB,EAAA,IAAAqoB,GAAa,OAAAroB,EAAAkhB,MAAA3iB,EAAAyB,EAAAsoB,UAAAxqB,EAAAkC,EAAAqmB,UAAA5mB,EAAAO,GAA+ClC,EAAAyqB,qBAAA,SAAAzqB,GAAoC,IAAA2B,EAAA,IAAA+oB,GAAa,OAAA/oB,EAAAyhB,MAAApjB,EAAA2B,GAAmB3B,EAAA2qB,sBAAA,SAAA3qB,EAAA2B,EAAAlB,EAAAyB,EAAAX,GAA6C,IAAAiB,EAAA,IAAAooB,GAAa,OAAApoB,EAAA4gB,MAAA7hB,EAAAiB,EAAAunB,MAAA7nB,EAAAM,EAAAxB,KAAAhB,EAAAwC,EAAAolB,OAAAjmB,EAAAa,EAAA2nB,WAAA1pB,EAAA+B,GAAgExC,EAAA6qB,2BAAA,SAAA7qB,EAAA2B,EAAAlB,EAAAyB,GAAgD,IAAAX,EAAA,IAAAupB,GAAa,OAAAvpB,EAAA6hB,MAAAlhB,EAAAX,EAAAwoB,MAAAtpB,EAAAc,EAAAP,KAAAhB,EAAAuB,EAAAG,MAAAC,EAAAJ,GAAgDvB,EAAA+qB,sBAAA,SAAA/qB,EAAA2B,EAAAlB,EAAAyB,GAA2C,IAAAX,EAAA,IAAAypB,GAAa,GAAAzpB,EAAA6hB,MAAAlhB,EAAAX,EAAA2oB,QAAAlqB,EAAAuB,EAAAkB,KAAAd,IAAA,CAAqC,IAAAid,EAAAG,EAAAkM,cAAAtpB,EAAAD,OAA+BC,EAAAD,MAAAsS,WAAA,KAAAzS,EAAAgU,eAAAwJ,EAAAmM,YAAAtM,EAAA1c,EAAAipB,OAAA5V,iBAAAqJ,EAAA5K,WAAAxR,EAAA0J,kBAAA0S,EAAApc,EAAA0J,eAAA0S,GAAArd,EAAAgU,eAAAqJ,GAAArd,EAAA6pB,aAAAC,GAAA9pB,EAAAgU,qBAAkMhU,EAAAgU,eAAA,KAAAhU,EAAA6pB,aAAA,KAA+C,OAAA7pB,EAAA+pB,UAAA7qB,EAAAc,GAAuBvB,EAAAurB,6BAAA,SAAAvrB,EAAA2B,GAA8C,IAAAlB,EAAA,IAAA+qB,GAAa,OAAA/qB,EAAAylB,YAAAlmB,EAAAS,EAAA2iB,MAAAzhB,EAAAlB,GAAmCT,EAAAyrB,4BAAA,SAAAzrB,EAAA2B,EAAAlB,GAA+C,IAAAyB,EAAA,IAAAwpB,GAAa,OAAAxpB,EAAAkhB,MAAA3iB,EAAAyB,EAAAlB,KAAAhB,EAAAkC,EAAAypB,aAAAhqB,EAAAO,GAA6ClC,EAAA4rB,mBAAA,SAAA5rB,EAAA2B,EAAAlB,GAAsC,IAAAyB,EAAA,IAAA2pB,GAAa,OAAA3pB,EAAAkhB,MAAA3iB,EAAAyB,EAAA4pB,UAAA9rB,EAAA2B,MAAA3B,GAAAkC,EAAA6pB,aAAApqB,EAAAO,GAA2DlC,EAAAgsB,0BAAA,SAAAhsB,GAAyC,IAAA2B,EAAA,IAAAsqB,GAAa,OAAAtqB,EAAAyhB,MAAApjB,EAAAojB,MAAAzhB,EAAA4jB,WAAAvlB,EAAA2B,GAAwC3B,EAAAksB,kBAAA,SAAAlsB,EAAA2B,EAAAlB,EAAAyB,GAAuC,IAAAX,EAAA,IAAA4qB,GAAa,OAAA5qB,EAAA6hB,MAAAlhB,EAAAX,EAAAgnB,UAAAvoB,EAAAuB,EAAA6qB,OAAAzqB,EAAAJ,EAAA8qB,QAAA5rB,EAAAc,GAAwDvB,EAAAssB,sBAAA,SAAAtsB,EAAA2B,EAAAlB,GAAyC,IAAAyB,EAAA,IAAAqqB,GAAarqB,EAAAkhB,MAAA3iB,EAAAyB,EAAAsqB,aAAAxsB,EAAAkC,EAAAuqB,cAAA,KAAAvqB,EAAAO,KAAAd,EAAyD,IAAAJ,EAAAwd,EAAAkM,cAAAtpB,EAAAD,OAA+B,OAAAC,EAAAD,MAAAsS,WAAA,KAAA9R,EAAAqT,eAAAwJ,EAAAmM,YAAA3pB,EAAAd,EAAA0qB,OAAA5V,iBAAAhU,EAAAyS,WAAAxR,EAAA0J,kBAAA3K,EAAAiB,EAAA0J,eAAA3K,GAAAW,EAAAqT,eAAAhU,GAAAW,EAAAkpB,aAAAC,GAAAnpB,EAAAqT,gBAAArT,GAA2MlC,EAAA0sB,kCAAA,SAAA1sB,EAAA2B,EAAAlB,GAAqD,IAAAyB,EAAA,IAAAqqB,GAAarqB,EAAAkhB,MAAA3iB,EAAAyB,EAAAsqB,aAAA,KAAAtqB,EAAAuqB,cAAAzsB,EAAAkC,EAAAO,KAAAd,EAAyD,IAAAJ,EAAAwd,EAAAkM,cAAAtpB,EAAAD,OAA+B,OAAAC,EAAAD,MAAAsS,WAAA,KAAA9R,EAAAqT,eAAAwJ,EAAAmM,YAAA3pB,EAAAd,EAAA0qB,OAAA5V,iBAAAhU,EAAAyS,WAAAxR,EAAA0J,kBAAA3K,EAAAiB,EAAA0J,eAAA3K,GAAAW,EAAAqT,eAAAhU,GAAAW,EAAAkpB,aAAAC,GAAAnpB,EAAAqT,gBAAArT,GAA2MlC,EAAA2sB,wBAAA,SAAA3sB,EAAA2B,EAAAlB,GAA2C,IAAAyB,EAAA,IAAA0qB,GAAa,OAAA1qB,EAAAkhB,MAAA3iB,EAAAyB,EAAA2qB,YAAA7sB,EAAA2B,MAAA3B,GAAAkC,EAAAlB,KAAAW,EAAAO,GAAqDlC,EAAA8sB,2BAAA,SAAA9sB,EAAA2B,EAAAlB,EAAAyB,EAAAX,EAAAiB,EAAAoc,GAAsD,IAAA1d,EAAA,IAAA6rB,GAAa,OAAA7rB,EAAAkiB,MAAAxE,EAAA1d,EAAA6oB,MAAAvnB,EAAAtB,EAAAF,KAAAhB,EAAAkB,EAAA8oB,eAAAroB,EAAAT,EAAAijB,YAAA1jB,EAAAS,EAAAgpB,QAAAhoB,EAAAhB,EAAAipB,WAAA5oB,EAAAL,GAAoGlB,EAAAgtB,uBAAA,SAAAhtB,EAAA2B,EAAAlB,EAAAyB,EAAAX,EAAAiB,GAAgD,IAAAoc,EAAA,IAAAqO,GAAa,OAAArO,EAAAwE,MAAA5gB,EAAAoc,EAAAmL,MAAAxoB,EAAAqd,EAAA5d,KAAAhB,EAAA4e,EAAAtB,KAAA3b,EAAAid,EAAA0F,YAAA7jB,EAAAme,EAAAuL,WAAAjoB,EAAA0c,GAA8E5e,EAAAktB,mBAAA,SAAAltB,EAAA2B,EAAAlB,EAAAyB,EAAAX,GAA0C,IAAAiB,EAAA,IAAA2qB,GAAa,OAAA3qB,EAAA4gB,MAAA7hB,EAAAiB,EAAA8hB,YAAAtkB,EAAAwC,EAAA+lB,UAAA5mB,EAAAa,EAAA4qB,YAAA3sB,EAAA+B,EAAAgoB,UAAAtoB,EAAAM,GAA+ExC,EAAAqtB,0BAAA,SAAArtB,EAAA2B,EAAAlB,EAAAyB,EAAAX,EAAAiB,EAAAoc,EAAA1d,GAAuD,IAAA6d,EAAA,IAAAuO,GAAa,OAAAvO,EAAAqE,MAAAliB,EAAA6d,EAAAgL,MAAAvnB,EAAAuc,EAAA/d,KAAAhB,EAAA+e,EAAAiL,eAAAroB,EAAAod,EAAAwO,UAAA9sB,EAAAse,EAAAyO,KAAAtrB,EAAA6c,EAAAoL,WAAA5oB,EAAAwd,EAAA0O,UAAA7O,EAAAG,GAA6G/e,EAAA0tB,gCAAA,SAAA1tB,EAAA2B,EAAAlB,GAAmD,IAAAyB,EAAA,IAAAyrB,GAAa,OAAAzrB,EAAAkhB,MAAA3iB,EAAAyB,EAAA0rB,QAAA5tB,EAAAkC,EAAA2rB,UAAAlsB,EAAAO,GAA6ClC,EAAA8tB,wBAAA,SAAA9tB,EAAA2B,EAAAlB,EAAAyB,EAAAX,EAAAiB,EAAAoc,GAAmD,IAAA1d,EAAA,IAAA6sB,GAAa,OAAA7sB,EAAAkiB,MAAAxE,EAAA1d,EAAA6oB,MAAAvnB,EAAAtB,EAAAF,KAAAhB,EAAAkB,EAAA8oB,eAAAroB,EAAAT,EAAAqsB,UAAA9sB,EAAAS,EAAAssB,KAAAtrB,EAAAhB,EAAAipB,WAAA5oB,EAAAL,GAA+FlB,EAAAguB,2BAAA,SAAAhuB,EAAA2B,EAAAlB,EAAAyB,EAAAX,GAAkD,IAAAiB,EAAA,IAAAyrB,GAAa,OAAAzrB,EAAA4gB,MAAA7hB,EAAAiB,EAAAunB,MAAA7nB,EAAAM,EAAAxB,KAAAhB,EAAAwC,EAAA0nB,QAAAvoB,EAAAa,EAAA2nB,WAAA1pB,EAAA+B,GAAiExC,EAAAkuB,sBAAA,SAAAluB,EAAA2B,GAAuC,IAAAlB,EAAA,IAAA0tB,GAAa,OAAA1tB,EAAA2iB,MAAAzhB,EAAAlB,EAAAiB,MAAA1B,EAAAS,GAA6BT,EAAAouB,sBAAA,SAAApuB,EAAA2B,EAAAlB,GAAyC,IAAAyB,EAAA,IAAAmsB,GAAa,OAAAnsB,EAAAkhB,MAAA3iB,EAAAyB,EAAAqmB,UAAAvoB,EAAAkC,EAAAosB,MAAA3sB,EAAAO,GAA2ClC,EAAAuuB,iBAAA,SAAAvuB,EAAA2B,EAAAlB,GAAoC,IAAAyB,EAAA,IAAAssB,GAAa,OAAAtsB,EAAAkhB,MAAA3iB,EAAAyB,EAAA0nB,MAAA5pB,EAAAkC,EAAAunB,WAAA9nB,EAAAO,GAA4ClC,EAAAyuB,qBAAA,SAAAzuB,EAAA2B,GAAsC,IAAAlB,EAAA,IAAAiuB,GAAa,OAAAjuB,EAAA2iB,MAAAzhB,EAAAlB,EAAAiB,MAAA1B,EAAAS,GAA6BT,EAAA2uB,mBAAA,SAAA3uB,EAAA2B,EAAAlB,EAAAyB,EAAAX,GAA0C,IAAAiB,EAAA,IAAAosB,GAAa,OAAApsB,EAAA4gB,MAAA7hB,EAAAiB,EAAAinB,WAAAzpB,EAAAwC,EAAAqsB,cAAAltB,EAAAa,EAAAssB,gBAAAruB,EAAA+B,EAAAusB,kBAAA7sB,EAAAM,GAA8FxC,EAAAgvB,sBAAA,SAAAhvB,EAAA2B,EAAAlB,EAAAyB,EAAAX,EAAAiB,GAA+C,IAAAoc,EAAA,IAAAqQ,GAAa,OAAArQ,EAAAwE,MAAA5gB,EAAAoc,EAAAmL,MAAAxoB,EAAAqd,EAAA5d,KAAAhB,EAAA4e,EAAAoL,eAAAroB,EAAAid,EAAAtB,KAAA7c,EAAAme,EAAAuL,WAAAjoB,EAAA0c,GAAiF5e,EAAAkvB,wBAAA,SAAAlvB,EAAA2B,EAAAlB,GAA2C,IAAAyB,EAAA,IAAAitB,GAAa,OAAAjtB,EAAAkhB,MAAA3iB,EAAAyB,EAAAsqB,aAAAxsB,EAAAkC,EAAAioB,WAAAxoB,EAAAO,GAAmDlC,EAAAovB,0BAAA,SAAApvB,EAAA2B,EAAAlB,EAAAyB,EAAAX,EAAAiB,GAAmD,IAAAoc,EAAA,IAAAyQ,GAAa,OAAAzQ,EAAAwE,MAAA5gB,EAAAoc,EAAAmL,MAAAxoB,EAAAqd,EAAA5d,KAAAhB,EAAA4e,EAAAtB,KAAA3b,EAAAid,EAAA0F,YAAA7jB,EAAAme,EAAAuL,WAAAjoB,EAAA0c,GAA8E5e,EAAAsvB,oBAAA,SAAAtvB,EAAA2B,GAAqC,IAAAlB,EAAA,IAAA8uB,GAAa,OAAA9uB,EAAA2iB,MAAAzhB,EAAAlB,EAAA8kB,WAAAvlB,EAAAS,GAAkCT,EAAAwvB,qBAAA,SAAAxvB,EAAA2B,EAAAlB,GAAwC,IAAAyB,EAAA,IAAAutB,GAAa,OAAAvtB,EAAAkhB,MAAA3iB,EAAAyB,EAAAqmB,UAAAvoB,EAAAkC,EAAAsoB,UAAA7oB,EAAAO,GAA+ClC,EAAznQ,GAA+nQ2B,EAAA+tB,KAAA5uB,EAAS,IAAAuS,EAAA,SAAArT,GAAkB,SAAA2B,IAAa,cAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA+C,OAAAmB,EAAAI,EAAA3B,GAAA2B,EAA9E,CAA8Fb,GAAIa,EAAAguB,SAAAtc,EAAa,IAAA9Q,EAAA,SAAAvC,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAie,SAAAxd,EAA2B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAxG,CAAwHb,GAAIa,EAAAkuB,SAAAttB,EAAa,IAAAmhB,EAAA,SAAA1jB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA+d,UAAAtd,EAA4B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAzG,CAAyH0R,GAAI1R,EAAAmuB,cAAApM,EAAkB,IAAAhjB,EAAA,SAAAV,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAge,aAAAvd,EAA+B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA5G,CAA4H0R,GAAI1R,EAAAouB,iBAAArvB,EAAqB,IAAAK,EAAA,SAAAf,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAke,cAAAzd,EAAgC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA7G,CAA6Hb,GAAIa,EAAAquB,kBAAAjvB,EAAA,SAAAf,GAAkCA,IAAAiwB,QAAA,aAAAjwB,IAAAkwB,SAAA,cAAAlwB,IAAAmwB,KAAA,UAAlC,CAAyGxuB,EAAAyuB,gBAAAzuB,EAAAyuB,cAAA,KAAwC,IAAAC,EAAAjrB,EAAA,SAAApF,GAAoB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAme,UAAA1d,EAAA2uB,yBAAA,KAAA3uB,EAAAooB,MAAAvnB,EAAA+tB,YAAAC,KAAA7uB,EAAuF,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAAU,UAAAouB,GAAA,SAAAzwB,GAAyC,OAAAI,KAAA2pB,MAAA/pB,OAAwB2B,EAAAU,UAAAquB,MAAA,SAAA1wB,GAA+B,WAAAI,KAAA2pB,MAAA/pB,IAAyB2B,EAAAU,UAAAiM,IAAA,SAAAtO,GAA6BI,KAAA2pB,OAAA/pB,GAAc2B,EAA1U,CAA6Ub,GAAI,SAAA6jB,EAAA3kB,GAAc,GAAAA,EAAA4vB,MAAA1uB,EAAAoe,WAAA,CAAyB,IAAA3d,EAAA3B,EAAAiZ,KAAa,OAAA0X,OAAAhvB,EAAAmD,QAAAnD,EAAA0F,WAAA,IAAyC,sBAAA1F,EAAA,OAAA0uB,EAAAO,QAAyC,MAAM,wBAAAjvB,EAAA,OAAA0uB,EAAAQ,SAA4C,MAAM,sBAAAlvB,EAAA,OAAA0uB,EAAAS,OAAwC,MAAM,sBAAAnvB,EAAA,OAAA0uB,EAAAU,OAAwC,MAAM,oBAAApvB,EAAA,OAAA0uB,EAAAW,KAAoC,MAAM,wBAAArvB,EAAA,OAAA0uB,EAAAY,SAA4C,MAAM,sBAAAtvB,EAAA,OAAA0uB,EAAAa,OAAwC,MAAM,yBAAAvvB,EAAA,OAAA0uB,EAAAc,UAA8C,aAAAxvB,EAAA,OAAA0uB,EAAAe,aAAgC,GAAApxB,EAAA4vB,MAAA1uB,EAAAkf,gBAAApgB,EAAAulB,WAAAqK,MAAA1uB,EAAAoe,WAAA,CAAmE3d,EAAA3B,EAAAulB,WAAAtM,KAAoB0X,OAAAhvB,EAAAmD,QAAiB,IAAArE,EAAAT,EAAAoC,SAAA6W,KAAsB,GAAA0X,OAAAlwB,EAAAqE,QAAA,YAAAnD,EAAA,OAAAlB,EAAA4G,WAAA,IAA0D,qBAAA5G,EAAA,OAAA4vB,EAAAgB,gBAAgD,MAAM,gBAAA5wB,GAAmB,oBAAA4vB,EAAAiB,gBAAsC,qBAAAjB,EAAAkB,mBAA0C,OAAAlB,EAAAmB,OAAgB7vB,EAAA8vB,cAAArsB,EAAA,SAAApF,GAA8BA,IAAAwxB,OAAA,YAAAxxB,IAAA8wB,OAAA,YAAA9wB,IAAAixB,SAAA,cAAAjxB,IAAAqxB,gBAAA,qBAAArxB,IAAAsxB,gBAAA,qBAAAtxB,IAAAuxB,iBAAA,sBAAAvxB,IAAAmxB,UAAA,eAAAnxB,IAAAkxB,OAAA,YAAAlxB,IAAA+wB,OAAA,YAAA/wB,IAAA6wB,SAAA,cAAA7wB,IAAA4wB,QAAA,cAAA5wB,IAAAgxB,KAAA,WAAAhxB,IAAAoxB,OAAA,aAA9B,CAAgZf,EAAA1uB,EAAA+vB,gBAAA/vB,EAAA+vB,cAAA,KAAuC/vB,EAAAgwB,oBAAAhN,EAA2B,IAAAF,EAAA,SAAAzkB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAyhB,UAAAhhB,EAA4B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAzG,CAAyHb,GAAIa,EAAAiwB,cAAAnN,EAAA,SAAAzkB,GAA8BA,IAAA6xB,KAAA,UAAA7xB,IAAA8xB,OAAA,YAAA9xB,IAAA4gB,MAAA,WAA9B,CAA6Fjf,EAAAowB,cAAApwB,EAAAowB,YAAA,KAAoC,IAAAlxB,EAAA,SAAAb,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA4hB,QAAAnhB,EAA0B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAvG,CAAuHb,GAAIa,EAAAqwB,YAAAnxB,EAAgB,IAAAoxB,EAAA,SAAAjyB,GAAkB,SAAA2B,IAAa,cAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA+C,OAAAmB,EAAAI,EAAA3B,GAAA2B,EAA9E,CAA8Fb,GAAIa,EAAAuwB,WAAAD,EAAe,IAAAE,EAAArN,EAAA,SAAA9kB,GAAoB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAoe,WAAA3d,EAA6B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA5G,CAA4HswB,GAAItwB,EAAAywB,qBAAAtN,EAAA,SAAA9kB,GAAqCA,IAAAqyB,MAAA,WAAAryB,IAAAsyB,QAAA,aAAAtyB,IAAAuyB,OAAA,YAAAvyB,IAAAwyB,OAAA,YAAAxyB,IAAAyyB,MAAA,WAAAzyB,IAAA0yB,OAAA,YAArC,CAA6KP,EAAAxwB,EAAAgxB,cAAAhxB,EAAAgxB,YAAA,KAAsC,IAAA3qB,EAAA,SAAAhI,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA8e,QAAAre,EAA0B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAvG,CAAuHswB,GAAItwB,EAAAixB,kBAAA5qB,EAAsB,IAAAkd,EAAA,SAAAllB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAkxB,YAAAV,EAAAM,MAAA9wB,EAA+B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA5G,CAA4HqG,GAAIrG,EAAAmxB,uBAAA5N,EAAA,SAAAllB,GAAuCA,IAAA+yB,OAAA,YAAA/yB,IAAAgzB,GAAA,QAAAhzB,IAAAizB,QAAA,aAAvC,CAAsGtxB,EAAAuxB,gBAAAvxB,EAAAuxB,cAAA,KAAwC,IAAA7N,EAAA,SAAArlB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAqe,UAAA5d,EAA4B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAzG,CAAyHswB,GAAItwB,EAAAwxB,oBAAA9N,EAAwB,IAAAK,EAAA,SAAA1lB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAse,OAAA7d,EAAyB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAtG,CAAsHswB,GAAItwB,EAAAyxB,iBAAA1N,EAAqB,IAAAK,EAAA,SAAA/lB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAue,KAAA9d,EAAuB,OAAAJ,EAAAI,EAAA3B,GAAAmB,OAAAC,eAAAO,EAAAU,UAAA,sBAAsEf,IAAA,WAAe,IAAAtB,EAAA2B,EAAAvB,KAAAujB,cAA2B,OAAAhiB,IAAA3B,EAAA2B,EAAAmD,QAAA8Z,EAAAE,MAAAlZ,KAAAjE,EAAA,GAAAyhB,MAAAzhB,EAAA3B,EAAA,GAAAojB,OAAAhjB,KAAAmlB,WAAAnC,OAAmF/hB,YAAA,EAAAgyB,cAAA,IAA+BlyB,OAAAC,eAAAO,EAAAU,UAAA,kBAAsDf,IAAA,WAAe,IAAAtB,EAAAI,KAAA4C,UAAArB,EAAA3B,EAAA8E,OAAgC,OAAAnD,EAAAid,EAAAE,MAAAlZ,KAAA5F,EAAA,GAAAojB,MAAApjB,EAAA2B,EAAA,GAAAyhB,OAAAhjB,KAAAmlB,WAAAnC,OAAqE/hB,YAAA,EAAAgyB,cAAA,IAA+B1xB,EAA/gB,CAAmhBswB,GAAItwB,EAAA2xB,eAAAvN,EAAmB,IAAAE,EAAA,SAAAjmB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAwe,MAAA/d,EAAwB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAArG,CAAqHswB,GAAItwB,EAAA4xB,gBAAAtN,EAAoB,IAAAG,EAAA,SAAApmB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAye,MAAAhe,EAAwB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAArG,CAAqHswB,GAAItwB,EAAA6xB,gBAAApN,EAAoB,IAAAG,EAAA,SAAAvmB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAuf,YAAA9e,EAAAsX,KAAA,cAAAtX,EAAAgN,OAAAnM,EAAAixB,cAAA9U,YAAAhd,EAAwF,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAArK,CAAqLmjB,GAAInjB,EAAA+xB,sBAAAnN,EAA0B,IAAAE,EAAA,SAAAzmB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA0e,cAAAje,EAAgC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA7G,CAA6HswB,GAAItwB,EAAAgyB,wBAAAlN,EAA4B,IAAAK,EAAA,SAAA9mB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAkxB,YAAAV,EAAAE,MAAA1wB,EAA+B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA5G,CAA4HqG,GAAIrG,EAAAiyB,uBAAA9M,EAA2B,IAAAE,EAAA,SAAAhnB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA4e,SAAAne,EAA2B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAxG,CAAwHswB,GAAItwB,EAAAkyB,mBAAA7M,EAAuB,IAAAE,EAAA,SAAAlnB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA6e,WAAApe,EAA6B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA1G,CAA0HswB,GAAItwB,EAAAmyB,qBAAA5M,EAAyB,IAAAG,EAAA,SAAArnB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAkxB,YAAAV,EAAAG,QAAA3wB,EAAiC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA9G,CAA8HqG,GAAIrG,EAAAoyB,yBAAA1M,EAA6B,IAAAE,EAAA,SAAAvnB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA+e,IAAAte,EAAsB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAnG,CAAmHokB,GAAIpkB,EAAAqyB,cAAAzM,EAAkB,IAAAzU,EAAA,SAAA9S,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAgf,KAAAve,EAAAsX,KAAA,OAAAtX,EAAAgN,OAAAnM,EAAAixB,cAAAQ,MAAAtyB,EAAoE,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAjJ,CAAiKmjB,GAAInjB,EAAAuyB,eAAAphB,EAAmB,IAAA4U,EAAA,SAAA1nB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAkxB,YAAAV,EAAAO,OAAA/wB,EAAgC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA7G,CAA6HqG,GAAIrG,EAAAwyB,wBAAAzM,EAA4B,IAAAI,EAAA,SAAA9nB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAif,cAAAxe,EAAgC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA7G,CAA6HswB,GAAItwB,EAAAyyB,wBAAAtM,EAA4B,IAAAE,EAAA,SAAAhoB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAkf,eAAAze,EAAiC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA9G,CAA8HswB,GAAItwB,EAAA0yB,yBAAArM,EAA6B,IAAAE,EAAA,SAAAloB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAkxB,YAAAV,EAAAK,OAAA7wB,EAAgC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA7G,CAA6HqG,GAAIrG,EAAA2yB,wBAAApM,EAA4B,IAAAI,EAAA,SAAAtoB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAmf,QAAA1e,EAA0B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAvG,CAAuHswB,GAAItwB,EAAA4yB,kBAAAjM,EAAsB,IAAAK,EAAA,SAAA3oB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAkxB,YAAAV,EAAAI,OAAA5wB,EAAgC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA7G,CAA6HqG,GAAIrG,EAAA6yB,wBAAA7L,EAA4B,IAAAE,EAAA,SAAA7oB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAof,MAAA3e,EAAAsX,KAAA,QAAAtX,EAAAgN,OAAAnM,EAAAixB,cAAAgB,OAAA9yB,EAAuE,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAApJ,CAAoKmjB,GAAInjB,EAAA+yB,gBAAA7L,EAAoB,IAAAE,EAAA,SAAA/oB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAqf,KAAA5e,EAAAsX,KAAA,OAAAtX,EAAAgN,OAAAnM,EAAAixB,cAAAkB,MAAAhzB,EAAoE,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAjJ,CAAiKmjB,GAAInjB,EAAAizB,eAAA7L,EAAmB,IAAAE,EAAA,SAAAjpB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAsf,KAAA7e,EAAAsX,KAAA,OAAAtX,EAAAgN,OAAAnM,EAAAixB,cAAAoB,MAAAlzB,EAAoE,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAjJ,CAAiKmjB,GAAInjB,EAAAmzB,eAAA7L,EAAmB,IAAArC,EAAA,SAAA5mB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA2e,MAAAle,EAAAsX,KAAA,QAAAtX,EAAAgN,OAAAnM,EAAAixB,cAAAsB,OAAApzB,EAAuE,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAApJ,CAAoKmjB,GAAInjB,EAAAqzB,gBAAApO,EAAoB,IAAA5T,EAAA,SAAAhT,GAAkB,SAAA2B,IAAa,cAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA+C,OAAAmB,EAAAI,EAAA3B,GAAA2B,EAA9E,CAA8FswB,GAAItwB,EAAAszB,gBAAAjiB,EAAoB,IAAAmW,EAAA,SAAAnpB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAwf,aAAA/e,EAA+B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA5G,CAA4HqR,GAAIrR,EAAAuzB,uBAAA/L,EAA2B,IAAAG,EAAA,SAAAtpB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAyf,YAAAhf,EAA8B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA3G,CAA2HqR,GAAIrR,EAAAwzB,sBAAA7L,EAA0B,IAAA8L,EAAAC,EAAA,SAAAr1B,GAAoB,SAAA2B,IAAa,cAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA+C,OAAAmB,EAAAI,EAAA3B,GAAA2B,EAAhF,CAAgGb,GAAIa,EAAA2zB,UAAAD,EAAA,SAAAr1B,GAA0BA,IAAAu1B,KAAA,UAAAv1B,IAAAw1B,WAAA,gBAAAx1B,IAAAy1B,QAAA,aAAAz1B,IAAA01B,cAAA,mBAA1B,CAA0IN,EAAAzzB,EAAAg0B,aAAAh0B,EAAAg0B,WAAA,KAAoC,IAAAC,EAAA,SAAA51B,GAAkB,SAAA2B,IAAAlB,EAAAyB,GAAkB,IAAAX,EAAAvB,EAAAY,KAAAR,YAAyBmB,EAAAquB,KAAA1uB,EAAA8d,OAAAzd,EAAAs0B,OAAA,KAAAt0B,EAAAu0B,UAAA,KAAAv0B,EAAAw0B,gBAAA,EAAAx0B,EAAAy0B,YAAA,KAAAz0B,EAAA00B,WAAA/zB,EAAAX,EAAAgU,eAAA5T,EAAwH,IAAAod,EAAAsM,GAAA9pB,EAAAgU,gBAA2BhU,EAAA6pB,aAAArM,EAAiB,IAAAje,EAAAie,EAAAmX,YAAA1zB,EAAA2zB,gBAAsC,OAAA50B,EAAA60B,WAAAt1B,GAAA,EAAAie,EAAA7K,UAAApT,EAAA,GAAAie,EAAAxd,EAAAkoB,WAAA,IAAA3mB,MAAAvB,EAAA6hB,MAAA,IAAAxE,EAAAE,MAAAvd,EAAA,EAAAd,EAAAqE,QAAAvD,EAAA0X,KAAAxY,EAAAc,EAAgH,OAAAA,EAAAI,EAAA3B,GAAAmB,OAAAC,eAAAO,EAAAU,UAAA,aAA6Df,IAAA,WAAe,IAAAtB,EAAAI,KAAA61B,WAAsB,OAAAj2B,GAAAo1B,EAAAK,SAAAz1B,GAAAo1B,EAAAM,eAAwCr0B,YAAA,EAAAgyB,cAAA,IAA+B1xB,EAAhiB,CAAoiBb,GAAIa,EAAA00B,OAAAT,EAAW,IAAAU,GAAA,SAAAt2B,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAwoB,WAAA,KAAAxoB,EAAAooB,MAAAvnB,EAAA+tB,YAAAC,KAAA7uB,EAAsD,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAAU,UAAAouB,GAAA,SAAAzwB,GAAyC,OAAAI,KAAA2pB,MAAA/pB,OAAwB2B,EAAAU,UAAAquB,MAAA,SAAA1wB,GAA+B,WAAAI,KAAA2pB,MAAA/pB,IAAyB2B,EAAAU,UAAAiM,IAAA,SAAAtO,GAA6BI,KAAA2pB,OAAA/pB,GAAc2B,EAAxS,CAA2S0zB,GAAI1zB,EAAA40B,qBAAAD,GAA0B,IAAA3I,GAAA,SAAA3tB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAmhB,0BAAA1gB,EAA4C,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA1H,CAA0I20B,IAAK30B,EAAA60B,0BAAA7I,GAA+B,IAAA8I,GAAA,SAAAz2B,GAAmB,SAAA2B,IAAa,cAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA+C,OAAAmB,EAAAI,EAAA3B,GAAA2B,EAA/E,CAA+F20B,IAAK30B,EAAA+0B,iCAAAD,GAAsC,IAAAjN,GAAA,SAAAxpB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA0f,MAAAjf,EAAwB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAtG,CAAsH0zB,GAAI1zB,EAAAg1B,eAAAnN,GAAoB,IAAAG,GAAA,SAAA3pB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA2f,MAAAlf,EAAwB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAtG,CAAsH0zB,GAAI1zB,EAAAi1B,eAAAjN,GAAoB,IAAAG,GAAA,SAAA9pB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA6gB,iBAAApgB,EAAmC,OAAAJ,EAAAI,EAAA3B,GAAAmB,OAAAC,eAAAO,EAAAU,UAAA,aAA6Df,IAAA,WAAe,IAAAtB,EAAAI,KAAA4pB,eAA0B,aAAAhqB,KAAA8E,OAAA,GAA2BzD,YAAA,EAAAgyB,cAAA,IAA+B1xB,EAAjR,CAAqR20B,IAAK30B,EAAAk1B,iBAAA/M,GAAsB,IAAAO,GAAA,SAAArqB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA4f,SAAAnf,EAA2B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAzG,CAAyH0zB,GAAI1zB,EAAAm1B,kBAAAzM,GAAuB,IAAAE,GAAA,SAAAvqB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA6f,GAAApf,EAAqB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAnG,CAAmH0zB,GAAI1zB,EAAAo1B,YAAAxM,GAAiB,IAAAG,GAAA,SAAA1qB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA8f,MAAArf,EAAwB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAtG,CAAsH0zB,GAAI1zB,EAAAq1B,eAAAtM,GAAoB,IAAAE,GAAA,SAAA5qB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA8gB,gBAAArgB,EAAkC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAhH,CAAgI20B,IAAK30B,EAAAs1B,gBAAArM,GAAqB,IAAAE,GAAA,SAAA9qB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA+gB,qBAAAtgB,EAAuC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAArH,CAAqI80B,IAAK90B,EAAAu1B,qBAAApM,GAA0B,IAAAY,GAAA,SAAA1rB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAigB,aAAAxf,EAA+B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA7G,CAA6Hb,GAAIa,EAAAw1B,sBAAAzL,GAA2B,IAAAG,GAAA,SAAA7rB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA0hB,aAAAjhB,EAA+B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA7G,CAA6Hb,GAAIa,EAAAy1B,aAAAvL,GAAkB,IAAAb,GAAA,SAAAhrB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA+f,OAAAtf,EAAyB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAvG,CAAuH0zB,GAAI1zB,EAAA01B,gBAAArM,GAAqB,IAAAQ,GAAA,SAAAxrB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAggB,cAAAvf,EAAgC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA9G,CAA8H0zB,GAAI1zB,EAAA21B,uBAAA9L,GAA4B,IAAAS,GAAA,SAAAjsB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAkgB,WAAAzf,EAA6B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA3G,CAA2H0zB,GAAI1zB,EAAA41B,oBAAAtL,GAAyB,IAAAgB,GAAA,SAAAjtB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAghB,iBAAAvgB,EAAA61B,gBAAA,EAAA71B,EAAuD,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAArI,CAAqJ80B,IAAK90B,EAAA81B,iBAAAxK,GAAsB,IAAAE,GAAA,SAAAntB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAmgB,IAAA1f,EAAsB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAApG,CAAoH0zB,GAAI1zB,EAAA+1B,aAAAvK,GAAA,SAAAntB,GAA8BA,IAAAwwB,KAAA,UAAAxwB,IAAA23B,oBAAA,yBAAA33B,IAAA43B,aAAA,kBAA9B,CAAqIj2B,EAAAk2B,YAAAl2B,EAAAk2B,UAAA,KAAgC,IAAAvK,GAAA,SAAAttB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAihB,oBAAAxgB,EAAsC,OAAAJ,EAAAI,EAAA3B,GAAAmB,OAAAC,eAAAO,EAAAU,UAAA,aAA6Df,IAAA,WAAe,IAAAtB,EAAAI,KAAA4pB,eAA0B,aAAAhqB,KAAA8E,OAAA,GAA2BzD,YAAA,EAAAgyB,cAAA,IAA+B1xB,EAAAU,UAAAy1B,MAAA,WAA+B,OAAAh3B,EAAAusB,0BAAAjtB,KAAAY,KAAAZ,KAAA4pB,eAAA5pB,KAAAmtB,UAAAntB,KAAAotB,KAAAptB,KAAA+pB,WAAA/pB,KAAA2pB,MAAA3pB,KAAAqtB,UAAArtB,KAAAgjB,QAAgJzhB,EAAnc,CAAsc20B,IAAK30B,EAAAo2B,oBAAAzK,GAAyB,IAAAnB,GAAA,SAAAnsB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAogB,GAAA3f,EAAqB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAnG,CAAmH0zB,GAAI1zB,EAAAq2B,YAAA7L,GAAiB,IAAAS,GAAA,SAAA5sB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAkhB,kBAAAzgB,EAAoC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAlH,CAAkI20B,IAAK30B,EAAAs2B,kBAAArL,GAAuB,IAAAL,GAAA,SAAAvsB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAqgB,OAAA5f,EAAyB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAvG,CAAuH0zB,GAAI1zB,EAAAu2B,gBAAA3L,GAAqB,IAAAQ,GAAA,SAAA/sB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAohB,qBAAA3gB,EAAuC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAArH,CAAqImoB,IAAKnoB,EAAAw2B,qBAAApL,GAA0B,IAAAgB,GAAA,SAAA/tB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAqhB,kBAAA5gB,EAAoC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAlH,CAAkI2rB,IAAK3rB,EAAAy2B,kBAAArK,GAAuB,IAAAE,GAAA,SAAAjuB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAshB,qBAAA7gB,EAAuC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAArH,CAAqI20B,IAAK30B,EAAA02B,qBAAApK,GAA0B,IAAAE,GAAA,SAAAnuB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAsgB,OAAA7f,EAAyB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAvG,CAAuH0zB,GAAI1zB,EAAA22B,gBAAAnK,GAAqB,IAAAK,GAAA,SAAAxuB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA2hB,WAAAlhB,EAA6B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAA3G,CAA2Hb,GAAIa,EAAA42B,WAAA/J,GAAgB,IAAAH,GAAA,SAAAruB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAugB,OAAA9f,EAAyB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAvG,CAAuH0zB,GAAI1zB,EAAA62B,gBAAAnK,GAAqB,IAAAK,GAAA,SAAA1uB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAwgB,MAAA/f,EAAwB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAtG,CAAsH0zB,GAAI1zB,EAAA82B,eAAA/J,GAAoB,IAAAE,GAAA,SAAA5uB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAygB,IAAAhgB,EAAsB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAApG,CAAoH0zB,GAAI1zB,EAAA+2B,aAAA9J,GAAkB,IAAAK,GAAA,SAAAjvB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAuhB,gBAAA9gB,EAAkC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAhH,CAAgI20B,IAAK30B,EAAAg3B,gBAAA1J,GAAqB,IAAAI,GAAA,SAAArvB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAAwhB,oBAAA/gB,EAAsC,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAApH,CAAoI80B,IAAK90B,EAAAi3B,oBAAAvJ,GAAyB,IAAAF,GAAA,SAAAnvB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA0gB,SAAAjgB,EAA2B,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAzG,CAAyH0zB,GAAI1zB,EAAAk3B,kBAAA1J,GAAuB,IAAAI,GAAA,SAAAvvB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA2gB,KAAAlgB,EAAuB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAArG,CAAqH0zB,GAAI1zB,EAAAm3B,cAAAvJ,GAAmB,IAAAE,GAAA,SAAAzvB,GAAmB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAiuB,KAAA1uB,EAAA4gB,MAAAngB,EAAwB,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAtG,CAAsH0zB,GAAI,SAAAhK,GAAArrB,GAAe,OAAAA,EAAA+S,SAAA,SAAA/S,IAAAkU,UAAA,EAAAlU,EAAA8E,OAAA,IAAA9E,EAA0D2B,EAAAo3B,eAAAtJ,GAAA9tB,EAAAq3B,cAAA,SAAAh5B,EAAA2B,GAAkD,GAAAA,EAAA,QAAAlB,EAAA,EAAAyB,EAAAP,EAAAmD,OAA4BrE,EAAAyB,IAAIzB,EAAA,CAAK,IAAAc,EAAAI,EAAAlB,GAAW,GAAAc,EAAAmjB,eAAA1kB,EAAA,OAAAuB,EAA+B,aAAYI,EAAAs3B,mBAAA5N,GAAA1pB,EAAAu3B,cAAA,SAAAl5B,GAAqD,GAAAA,EAAA4vB,MAAA1uB,EAAA+d,UAAA,CAAwB,IAAAtd,EAAA3B,EAAAgB,KAAa,QAAAW,EAAA2hB,MAAA3hB,EAAA0hB,WAAApK,KAAAnU,QAA0C,WAAU,SAAA9E,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAS,SAAA1B,GAAcA,IAAAwwB,KAAA,UAAAxwB,IAAAuhB,OAAA,YAAAvhB,IAAAihB,OAAA,YAAAjhB,IAAAm5B,QAAA,aAAAn5B,IAAAo5B,MAAA,WAAAp5B,IAAAq5B,IAAA,UAAAr5B,IAAAs5B,OAAA,aAAAt5B,IAAAu5B,SAAA,eAAAv5B,IAAAw5B,SAAA,gBAAAx5B,IAAAy5B,OAAA,cAAAz5B,IAAA05B,QAAA,eAAA15B,IAAA25B,UAAA,kBAAA35B,IAAA45B,IAAA,YAAA55B,IAAA65B,IAAA,YAAA75B,IAAA85B,oBAAA,4BAAA95B,IAAA+5B,QAAA,iBAAA/5B,IAAAg6B,QAAA,iBAAAh6B,IAAAi6B,gBAAA,yBAAAj6B,IAAAk6B,SAAA,mBAAAl6B,IAAAygB,YAAA,sBAAAzgB,IAAAm6B,cAAA,wBAAAn6B,IAAAo6B,cAAA,yBAAAp6B,IAAAq6B,SAAA,oBAAAr6B,IAAAs6B,SAAA,oBAAAt6B,IAAAu6B,QAAA,mBAAAv6B,IAAAw6B,OAAA,mBAAAx6B,IAAAy6B,WAAA,uBAAAz6B,IAAA06B,QAAA,oBAAA16B,IAAA26B,KAAA,kBAAA36B,IAAA46B,OAAA,oBAAd,CAAi5Bj5B,EAAA4uB,cAAA5uB,EAAA4uB,YAAA,KAAiC5uB,EAAAw0B,eAAA,IAAAx0B,EAAAk5B,aAAA,KAAAl5B,EAAAm5B,cAAA,OAAAn5B,EAAAo5B,cAAA,OAAAp5B,EAAAq5B,mBAAA,IAAAr5B,EAAAs5B,iBAAA,IAAAt5B,EAAAu5B,gBAAA,IAAAv5B,EAAAw5B,cAAA,OAAAx5B,EAAAuK,eAAAvK,EAAAw5B,cAAAx5B,EAAAw0B,eAAAx0B,EAAAy5B,aAAAz5B,EAAAw0B,eAAA,iBAAAn2B,GAA6RA,EAAAghB,MAAA,GAAAhhB,EAAAq7B,GAAA,KAAAr7B,EAAAs7B,IAAA,MAAAt7B,EAAAu7B,IAAA,MAAAv7B,EAAAw7B,IAAA,MAAAx7B,EAAAy7B,MAAA,QAAAz7B,EAAA07B,GAAA,KAAA17B,EAAA27B,IAAA,MAAA37B,EAAA47B,IAAA,MAAA57B,EAAA67B,IAAA,MAAA77B,EAAA87B,MAAA,QAAA97B,EAAA+7B,KAAA,OAAA/7B,EAAAg8B,IAAA,MAAAh8B,EAAAi8B,IAAA,MAAAj8B,EAAAk8B,KAAA,OAAAl8B,EAAAm8B,MAAA,QAAAn8B,EAAAo8B,MAAA,QAAAp8B,EAAAq8B,MAAA,QAAAr8B,EAAAs8B,MAAA,QAAAt8B,EAAAu8B,MAAA,QAAAv8B,EAAAw8B,MAAA,QAAAx8B,EAAAy8B,MAAA,QAAAz8B,EAAA08B,MAAA,QAAA18B,EAAA28B,MAAA,QAAA38B,EAAA48B,MAAA,QAAA58B,EAAA68B,MAAA,OAAA78B,EAAAyN,OAAA,SAAAzN,EAAA88B,QAAA,UAAA98B,EAAA0O,OAAA,SAAA1O,EAAA+8B,OAAA,SAAA/8B,EAAAg9B,QAAA,UAAAh9B,EAAAi9B,QAAA,UAAAj9B,EAAAk9B,SAAA,WAAAl9B,EAAAi0B,MAAA,OAAAj0B,EAAA60B,MAAA,OAAA70B,EAAA+0B,OAAA,QAAA/0B,EAAA20B,MAAA,OAAA30B,EAAAy0B,OAAA,QAAAz0B,EAAA2e,YAAA,cAAA3e,EAAAm9B,WAAA,aAAAn9B,EAAAo9B,mBAAA,qBAAAp9B,EAAAq9B,cAAA,gBAAAr9B,EAAAs9B,gBAAA,kBAAAt9B,EAAAu9B,mBAAA,qBAAAv9B,EAAAw9B,iBAAA,mBAAAx9B,EAAAy9B,2BAAA,6BAAAz9B,EAAA09B,2BAAA,6BAAA19B,EAAA29B,wBAAA,0BAAA39B,EAAA49B,iBAAA,mBAAA59B,EAAA69B,oBAAA,sBAAA79B,EAAA89B,GAAA,KAAA99B,EAAA+9B,IAAA,MAAA/9B,EAAAg+B,IAAA,MAAAh+B,EAAAi+B,IAAA,MAAAj+B,EAAAk+B,MAAA,QAAAl+B,EAAAm+B,GAAA,KAAAn+B,EAAAo+B,IAAA,MAAAp+B,EAAAq+B,IAAA,MAAAr+B,EAAAs+B,IAAA,MAAAt+B,EAAAu+B,MAAA,QAAAv+B,EAAAw+B,KAAA,OAAAx+B,EAAAy+B,IAAA,MAAAz+B,EAAA0+B,IAAA,MAAA1+B,EAAA2+B,KAAA,OAAA3+B,EAAAwQ,OAAA,SAAAxQ,EAAA8C,MAAA,QAAA9C,EAAA4+B,WAAA,aAAA5+B,EAAA6+B,IAAA,MAAA7+B,EAAAuS,IAAA,MAAAvS,EAAA8+B,gBAAA,kBAAA9+B,EAAA++B,YAAA,cAAA/+B,EAAA4G,KAAA,OAAA5G,EAAAg/B,MAAA,QAAAh/B,EAAAi/B,UAAA,YAAAj/B,EAAAk/B,WAAA,aAAAl/B,EAAAm/B,WAAA,aAAAn/B,EAAAo/B,WAAA,aAAAp/B,EAAAwa,WAAA,aAAAxa,EAAAq/B,kBAAA,oBAAAr/B,EAAAs/B,YAAA,cAAAt/B,EAAAu/B,YAAA,cAAAv/B,EAAAw/B,YAAA,cAAAx/B,EAAAy/B,aAAA,eAAAz/B,EAAA0/B,aAAA,eAAA1/B,EAAA2/B,MAAA,QAAA3/B,EAAA4/B,IAAA,MAAA5/B,EAAA6/B,IAAA,MAAA7/B,EAAA8/B,MAAA,UAAA9/B,EAAA+/B,QAAA,YAAA//B,EAAAggC,KAAA,SAAAhgC,EAAAigC,OAAA,WAAAjgC,EAAAkgC,QAAA,YAAAlgC,EAAAmgC,QAAA,YAAAngC,EAAAogC,SAAA,aAAApgC,EAAAqgC,YAAA,eAAArgC,EAAAsgC,MAAA,UAAAtgC,EAAAugC,WAAA,eAA7R,CAAyuE5+B,EAAA8xB,gBAAA9xB,EAAA8xB,cAAA,KAAwC,IAAAvxB,EAAAzB,EAAA,GAAWkB,EAAA6+B,QAAAt+B,EAAAs+B,QAAoB,IAAAj/B,EAAAd,EAAA,GAAWkB,EAAA8+B,OAAAl/B,EAAAk/B,OAAkB,IAAAj+B,EAAA/B,EAAA,GAAWkB,EAAA++B,SAAAl+B,EAAAk+B,SAAA/+B,EAAAg/B,cAAAn+B,EAAAm+B,eAAsD,SAAA3gC,EAAA2B,EAAAlB,GAAiB,aAAa,SAAAyB,EAAAlC,GAAc,QAAAS,KAAAT,EAAA2B,EAAAW,eAAA7B,KAAAkB,EAAAlB,GAAAT,EAAAS,IAAgDU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAASQ,EAAAzB,EAAA,KAAAyB,EAAAzB,EAAA,KAAAyB,EAAAzB,EAAA,KAAAyB,EAAAzB,EAAA,KAAAyB,EAAAzB,EAAA,KAAAyB,EAAAzB,EAAA,KAAAkB,EAAAi/B,WAAA,SAAA5gC,GAAiF,UAAAA,GAAA,IAAAA,IAAA,KAAyB,SAAAA,EAAA2B,GAAe,IAAAlB,EAAMA,EAAA,WAAa,OAAAL,KAAb,GAA4B,IAAIK,KAAA,IAAAwH,SAAA,iBAAmC,MAAAjI,GAAS,iBAAAkI,SAAAzH,EAAAyH,QAAoClI,EAAAH,QAAAY,GAAY,SAAAT,EAAA2B,EAAAlB,GAAiB,aAAa,IAAAyB,EAAAX,EAAAnB,WAAAoe,YAAAtc,EAAA,SAAAlC,EAAA2B,GAA+C,OAAAO,EAAAf,OAAAsd,gBAAA,CAAiCC,UAAA,cAAa5b,OAAA,SAAA9C,EAAA2B,GAAgC3B,EAAA0e,UAAA/c,IAAc,SAAA3B,EAAA2B,GAAgB,QAAAlB,KAAAkB,IAAAW,eAAA7B,KAAAT,EAAAS,GAAAkB,EAAAlB,MAAgDT,EAAA2B,IAAO,SAAA3B,EAAA2B,GAAe,SAAAlB,IAAaL,KAAAue,YAAA3e,EAAmBkC,EAAAlC,EAAA2B,GAAA3B,EAAAqC,UAAA,OAAAV,EAAAR,OAAAY,OAAAJ,IAAAlB,EAAA4B,UAAAV,EAAAU,UAAA,IAAA5B,KAA+EU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAW,IAAAc,EAAAoc,EAAA1d,EAAAT,EAAA,IAAAse,EAAAte,EAAA,GAAAK,EAAAL,EAAA,GAA8B,SAAA4S,EAAArT,GAAc,OAAA2wB,OAAA3wB,EAAA8E,QAAA9E,EAAAqH,WAAA,IAAyC,eAAArH,GAAkB,sBAAAwC,EAAAg3B,SAAiC,gBAAAh3B,EAAAwwB,GAAqB,mBAAAxwB,EAAAq+B,MAA2B,mBAAAr+B,EAAAs+B,MAA2B,MAAM,eAAA9gC,GAAkB,mBAAAwC,EAAAqe,MAA2B,MAAM,eAAA7gB,GAAkB,kBAAAwC,EAAAu+B,KAAyB,mBAAAv+B,EAAAw+B,MAA2B,mBAAAx+B,EAAAkd,MAA2B,sBAAAld,EAAAse,SAAiC,mBAAAte,EAAA42B,MAA2B,yBAAA52B,EAAAie,YAAuC,MAAM,gBAAAzgB,GAAmB,sBAAAwC,EAAAy+B,SAAiC,qBAAAz+B,EAAA22B,QAA+B,qBAAA32B,EAAAytB,QAA+B,oBAAAztB,EAAA0+B,OAA6B,gBAAA1+B,EAAAue,GAAqB,MAAM,gBAAA/gB,GAAmB,kBAAAwC,EAAA2+B,KAAyB,kBAAA3+B,EAAA4+B,KAAyB,oBAAA5+B,EAAAye,OAA6B,qBAAAze,EAAA6+B,QAA+B,MAAM,gBAAArhC,GAAmB,mBAAAwC,EAAAqd,MAA2B,qBAAArd,EAAA8+B,QAA+B,iBAAA9+B,EAAA6e,IAAuB,kBAAA7e,EAAA++B,KAAyB,sBAAA/+B,EAAAsd,SAAiC,MAAM,gBAAA9f,GAAmB,iBAAAwC,EAAAo3B,IAAuB,MAAM,gBAAA55B,GAAmB,gBAAAwC,EAAA8e,GAAqB,wBAAA9e,EAAAg/B,WAAqC,oBAAAh/B,EAAA+e,OAA6B,gBAAA/e,EAAAi/B,GAAqB,wBAAAj/B,EAAAud,WAAqC,uBAAAvd,EAAAk/B,UAAmC,gBAAAl/B,EAAAm/B,GAAqB,MAAM,gBAAA3hC,GAAmB,mBAAAwC,EAAAo/B,MAA2B,MAAM,gBAAA5hC,GAAmB,iBAAAwC,EAAA62B,IAAuB,MAAM,gBAAAr5B,GAAmB,oBAAAwC,EAAAq/B,OAA6B,MAAM,gBAAA7hC,GAAmB,uBAAAwC,EAAAs/B,UAAmC,iBAAAt/B,EAAAyd,IAAuB,kBAAAzd,EAAA0d,KAAyB,MAAM,gBAAAlgB,GAAmB,gBAAAwC,EAAAu/B,GAAqB,MAAM,gBAAA/hC,GAAmB,qBAAAwC,EAAAw/B,QAA+B,qBAAAx/B,EAAAk3B,QAA+B,uBAAAl3B,EAAAm3B,UAAmC,oBAAAn3B,EAAAi3B,OAA6B,MAAM,gBAAAz5B,GAAmB,sBAAAwC,EAAA+2B,SAAiC,oBAAA/2B,EAAAgf,OAA6B,MAAM,gBAAAxhB,GAAmB,iBAAAwC,EAAAq3B,IAAuB,oBAAAr3B,EAAA82B,OAA6B,mBAAA92B,EAAA8d,MAA2B,oBAAA9d,EAAAif,OAA6B,MAAM,gBAAAzhB,GAAmB,kBAAAwC,EAAA+d,KAAyB,mBAAA/d,EAAAkf,MAA2B,kBAAAlf,EAAAge,KAAyB,iBAAAhe,EAAAmf,IAAuB,kBAAAnf,EAAAy/B,KAAyB,oBAAAz/B,EAAA0/B,OAA6B,MAAM,gBAAAliC,GAAmB,iBAAAwC,EAAA2/B,IAAuB,kBAAA3/B,EAAAqf,KAAyB,MAAM,gBAAA7hB,GAAmB,mBAAAwC,EAAAsf,MAA2B,kBAAAtf,EAAA4/B,KAAyB,MAAM,gBAAApiC,GAAmB,mBAAAwC,EAAA6/B,OAA4B,OAAA7/B,EAAA8/B,QAAiB,SAAA//B,EAAAvC,GAAc,OAAAA,GAAU,KAAAwC,EAAAg3B,SAAA,KAAAh3B,EAAAwwB,GAAA,KAAAxwB,EAAAie,YAAA,KAAAje,EAAA22B,QAAA,KAAA32B,EAAA0+B,OAAA,KAAA1+B,EAAA++B,KAAA,KAAA/+B,EAAA6e,IAAA,KAAA7e,EAAAo3B,IAAA,KAAAp3B,EAAAud,WAAA,KAAAvd,EAAAm/B,GAAA,KAAAn/B,EAAAo/B,MAAA,KAAAp/B,EAAAq/B,OAAA,KAAAr/B,EAAAs/B,UAAA,KAAAt/B,EAAA0d,KAAA,KAAA1d,EAAA+2B,SAAA,KAAA/2B,EAAAq3B,IAAA,KAAAr3B,EAAAy/B,KAAA,KAAAz/B,EAAAqf,KAAA,SAA4P,mBAAkB,SAAA7hB,GAAaA,IAAAw5B,SAAA,cAAAx5B,IAAAgzB,GAAA,QAAAhzB,IAAA6gC,MAAA,WAAA7gC,IAAA8gC,MAAA,WAAA9gC,IAAA6gB,MAAA,WAAA7gB,IAAA+gC,KAAA,UAAA/gC,IAAAghC,MAAA,WAAAhhC,IAAA0f,MAAA,WAAA1f,IAAAo5B,MAAA,WAAAp5B,IAAA8gB,SAAA,cAAA9gB,IAAAygB,YAAA,kBAAAzgB,IAAAihC,SAAA,eAAAjhC,IAAAm5B,QAAA,cAAAn5B,IAAAiwB,QAAA,cAAAjwB,IAAAkhC,OAAA,aAAAlhC,IAAA+gB,GAAA,SAAA/gB,IAAAmhC,KAAA,WAAAnhC,IAAAohC,KAAA,WAAAphC,IAAAihB,OAAA,aAAAjhB,IAAAqhC,QAAA,cAAArhC,IAAA6f,MAAA,YAAA7f,IAAAshC,QAAA,cAAAthC,IAAAqhB,IAAA,UAAArhB,IAAAuhC,KAAA,WAAAvhC,IAAA8f,SAAA,eAAA9f,IAAA45B,IAAA,UAAA55B,IAAAshB,GAAA,SAAAthB,IAAAwhC,WAAA,iBAAAxhC,IAAAuhB,OAAA,aAAAvhB,IAAAyhC,GAAA,SAAAzhC,IAAA+f,WAAA,iBAAA/f,IAAA0hC,UAAA,gBAAA1hC,IAAA2hC,GAAA,SAAA3hC,IAAA4hC,MAAA,YAAA5hC,IAAAq5B,IAAA,UAAAr5B,IAAA6hC,OAAA,aAAA7hC,IAAA8hC,UAAA,gBAAA9hC,IAAAigB,IAAA,UAAAjgB,IAAAkgB,KAAA,WAAAlgB,IAAA+hC,GAAA,SAAA/hC,IAAAgiC,QAAA,cAAAhiC,IAAA05B,QAAA,cAAA15B,IAAA25B,UAAA,gBAAA35B,IAAAy5B,OAAA,aAAAz5B,IAAAu5B,SAAA,eAAAv5B,IAAAwhB,OAAA,aAAAxhB,IAAA65B,IAAA,UAAA75B,IAAAs5B,OAAA,aAAAt5B,IAAAsgB,MAAA,YAAAtgB,IAAAyhB,OAAA,aAAAzhB,IAAAugB,KAAA,WAAAvgB,IAAA0hB,MAAA,YAAA1hB,IAAAwgB,KAAA,WAAAxgB,IAAA2hB,IAAA,UAAA3hB,IAAAiiC,KAAA,WAAAjiC,IAAAkiC,OAAA,aAAAliC,IAAAmiC,IAAA,UAAAniC,IAAA6hB,KAAA,WAAA7hB,IAAA8hB,MAAA,YAAA9hB,IAAAoiC,KAAA,WAAApiC,IAAAqiC,MAAA,YAAAriC,IAAAuiC,UAAA,gBAAAviC,IAAAwiC,WAAA,iBAAAxiC,IAAAyiC,UAAA,gBAAAziC,IAAA0iC,WAAA,iBAAA1iC,IAAA2iC,YAAA,kBAAA3iC,IAAA4iC,aAAA,mBAAA5iC,IAAA6iC,IAAA,UAAA7iC,IAAA8iC,YAAA,kBAAA9iC,IAAA+iC,UAAA,gBAAA/iC,IAAA2f,MAAA,YAAA3f,IAAAgjC,SAAA,eAAAhjC,IAAAijC,YAAA,kBAAAjjC,IAAAkjC,gBAAA,sBAAAljC,IAAAmjC,mBAAA,yBAAAnjC,IAAAojC,cAAA,oBAAApjC,IAAAqjC,mBAAA,yBAAArjC,IAAAsjC,qBAAA,2BAAAtjC,IAAAujC,0BAAA,gCAAAvjC,IAAAwjC,mBAAA,yBAAAxjC,IAAAyjC,KAAA,WAAAzjC,IAAA0jC,MAAA,YAAA1jC,IAAA2jC,kBAAA,wBAAA3jC,IAAA4jC,SAAA,eAAA5jC,IAAA6jC,MAAA,YAAA7jC,IAAA8jC,QAAA,cAAA9jC,IAAA+jC,UAAA,gBAAA/jC,IAAAgkC,YAAA,kBAAAhkC,IAAAikC,kBAAA,wBAAAjkC,IAAAkkC,wBAAA,8BAAAlkC,IAAAmkC,oCAAA,0CAAAnkC,IAAAokC,UAAA,gBAAApkC,IAAAqkC,IAAA,UAAArkC,IAAAskC,MAAA,YAAAtkC,IAAAukC,YAAA,kBAAAvkC,IAAAwkC,MAAA,YAAAxkC,IAAAykC,oBAAA,0BAAAzkC,IAAA0kC,QAAA,cAAA1kC,IAAA2kC,SAAA,eAAA3kC,IAAA4kC,MAAA,YAAA5kC,IAAA6kC,OAAA,cAAA7kC,IAAA8kC,YAAA,mBAAA9kC,IAAA+kC,aAAA,oBAAA/kC,IAAAglC,gBAAA,uBAAAhlC,IAAAilC,yBAAA,gCAAAjlC,IAAAklC,aAAA,oBAAAllC,IAAAmlC,eAAA,sBAAAnlC,IAAAolC,yBAAA,gCAAAplC,IAAAqlC,+BAAA,sCAAArlC,IAAAslC,2CAAA,kDAAAtlC,IAAAulC,iBAAA,wBAAAvlC,IAAAwlC,WAAA,kBAAAxlC,IAAAylC,aAAA,oBAAAzlC,IAAA0lC,GAAA,UAAA1lC,IAAAsf,WAAA,kBAAAtf,IAAA2lC,cAAA,qBAAA3lC,IAAA4lC,eAAA,sBAAA5lC,IAAA6lC,aAAA,oBAAA7lC,IAAAsiC,QAAA,eAAAtiC,IAAA8lC,UAAA,iBAAb,CAAmhHtjC,EAAAb,EAAAkd,QAAAld,EAAAkd,MAAA,KAAuB,SAAA7e,GAAeA,IAAAiwB,QAAA,aAAAjwB,IAAA+lC,OAAA,YAAA/lC,IAAAgmC,OAAA,YAAf,CAAsFpnB,EAAAjd,EAAAskC,qBAAAtkC,EAAAskC,mBAAA,KAAiDtkC,EAAAukC,iBAAA7yB,EAAA1R,EAAAwkC,sBAAA5jC,EAAAZ,EAAAykC,4BAAA,SAAApmC,GAA4F,OAAA2wB,OAAA3wB,EAAA8E,QAAA9E,EAAAqH,WAAA,IAAyC,yBAAArH,EAA2B,sBAAAA,EAAwB,6BAAAA,EAA+B,uBAAAA,EAAyB,uBAAAA,EAAyB,UAAS2B,EAAA0kC,sBAAA,SAAArmC,GAAqC,OAAAA,GAAU,KAAAwC,EAAA0+B,OAAA,eAA6B,KAAA1+B,EAAAi/B,GAAA,WAAqB,KAAAj/B,EAAAud,WAAA,mBAAqC,KAAAvd,EAAAyd,IAAA,YAAuB,KAAAzd,EAAA0/B,OAAA,eAA6B,KAAA1/B,EAAAqf,KAAA,aAAyB,KAAArf,EAAA6/B,MAAA,cAA2B,KAAA7/B,EAAAsgC,YAAA,YAA+B,KAAAtgC,EAAAmd,MAAA,UAAuB,KAAAnd,EAAAwgC,SAAA,UAA0B,KAAAxgC,EAAAygC,YAAA,UAA6B,KAAAzgC,EAAA0gC,gBAAA,WAAkC,KAAA1gC,EAAA2gC,mBAAA,WAAqC,KAAA3gC,EAAA4gC,cAAA,WAAgC,KAAA5gC,EAAA6gC,mBAAA,WAAqC,KAAA7gC,EAAA8gC,qBAAA,YAAwC,KAAA9gC,EAAA+gC,0BAAA,YAA6C,KAAA/gC,EAAAihC,KAAA,UAAsB,KAAAjhC,EAAAkhC,MAAA,UAAuB,KAAAlhC,EAAAmhC,kBAAA,WAAoC,KAAAnhC,EAAAohC,SAAA,UAA0B,KAAAphC,EAAAqhC,MAAA,UAAuB,KAAArhC,EAAAshC,QAAA,UAAyB,KAAAthC,EAAAuhC,UAAA,WAA4B,KAAAvhC,EAAAwhC,YAAA,WAA8B,KAAAxhC,EAAAyhC,kBAAA,WAAoC,KAAAzhC,EAAA0hC,wBAAA,WAA0C,KAAA1hC,EAAA2hC,oCAAA,YAAuD,KAAA3hC,EAAA4hC,UAAA,UAA2B,KAAA5hC,EAAA6hC,IAAA,UAAqB,KAAA7hC,EAAA8hC,MAAA,UAAuB,KAAA9hC,EAAA+hC,YAAA,UAA6B,KAAA/hC,EAAAgiC,MAAA,UAAuB,KAAAhiC,EAAAiiC,oBAAA,WAAsC,KAAAjiC,EAAAkiC,QAAA,WAA0B,KAAAliC,EAAAqiC,OAAA,UAAwB,KAAAriC,EAAAsiC,YAAA,WAA8B,KAAAtiC,EAAAuiC,aAAA,WAA+B,KAAAviC,EAAAwiC,gBAAA,WAAkC,KAAAxiC,EAAAyiC,yBAAA,YAA4C,KAAAziC,EAAA0iC,aAAA,WAA+B,KAAA1iC,EAAA2iC,eAAA,WAAiC,KAAA3iC,EAAA4iC,yBAAA,YAA4C,KAAA5iC,EAAA6iC,+BAAA,YAAkD,KAAA7iC,EAAA8iC,2CAAA,aAA+D,KAAA9iC,EAAA+iC,iBAAA,WAAmC,KAAA/iC,EAAAgjC,WAAA,WAA6B,KAAAhjC,EAAAijC,aAAA,WAA+B,eAAA9U,QAAA,QAA+B,IAAAjN,EAAA,WAAiB,SAAA1jB,IAAA2B,EAAAlB,GAAkBL,KAAAkmC,aAAA,EAAAlmC,KAAA+qB,OAAAnrB,EAAAI,KAAAoG,MAAA7E,EAAAvB,KAAAqG,IAAAhG,EAA0D,OAAAT,EAAA4F,KAAA,SAAAjE,EAAAlB,GAA4B,GAAAkB,EAAAwpB,QAAA1qB,EAAA0qB,OAAA,UAAAtnB,MAAA,mBAAyD,WAAA7D,EAAA2B,EAAAwpB,OAAAxpB,EAAA6E,MAAA/F,EAAA+F,MAAA7E,EAAA6E,MAAA/F,EAAA+F,MAAA7E,EAAA8E,IAAAhG,EAAAgG,IAAA9E,EAAA8E,IAAAhG,EAAAgG,MAA+EtF,OAAAC,eAAApB,EAAAqC,UAAA,WAA8Cf,IAAA,WAAe,WAAAtB,EAAAI,KAAA+qB,OAAA/qB,KAAAoG,MAAApG,KAAAoG,QAAgDnF,YAAA,EAAAgyB,cAAA,IAA+BlyB,OAAAC,eAAApB,EAAAqC,UAAA,SAA6Cf,IAAA,WAAe,WAAAtB,EAAAI,KAAA+qB,OAAA/qB,KAAAqG,IAAArG,KAAAqG,MAA4CpF,YAAA,EAAAgyB,cAAA,IAA+BlyB,OAAAC,eAAApB,EAAAqC,UAAA,QAA4Cf,IAAA,WAAe,QAAAtB,EAAAI,KAAA+qB,OAAAlS,KAAAtX,EAAA,EAAAlB,EAAAL,KAAAoG,MAA4C/F,GAAA,IAAKA,EAAA,IAAAT,EAAAqH,WAAA5G,IAAAkB,IAA6B,OAAAA,GAASN,YAAA,EAAAgyB,cAAA,IAA+BlyB,OAAAC,eAAApB,EAAAqC,UAAA,UAA8Cf,IAAA,WAAe,QAAAtB,EAAAI,KAAA+qB,OAAAlS,KAAAtX,EAAA,EAAAlB,EAAAL,KAAAoG,MAAA,EAA8C/F,GAAA,OAAAT,EAAAqH,WAAA5G,KAA0BA,IAAAkB,EAAQ,OAAAA,GAASN,YAAA,EAAAgyB,cAAA,IAA+BrzB,EAAAqC,UAAA0Y,SAAA,WAAkC,OAAA3a,KAAA+qB,OAAAlS,KAAA/E,UAAA9T,KAAAoG,MAAApG,KAAAqG,MAAuDzG,EAAn9B,GAAy9B2B,EAAAmd,MAAA4E,EAAU,IAAAhjB,EAAA,SAAAV,GAAkB,SAAA2B,IAAAlB,QAAgB,IAAAA,MAAA,MAAqB,IAAAyB,EAAAlC,EAAAY,KAAAR,KAAAK,IAAAL,KAA2B8B,EAAAuE,IAAA,EAAAvE,EAAAqkC,IAAA,EAAArkC,EAAAskC,OAAA,EAAAtkC,EAAAukC,SAAA,EAAAvkC,EAAAwkC,WAAA,EAAAxkC,EAAAykC,aAAA,EAAAzkC,EAAA0kC,oBAAA,EAAA1kC,EAAA2kC,UAAA,KAAA3kC,EAAAipB,OAAAxpB,EAAAO,EAAAqkC,IAAA,EAAArkC,EAAAuE,IAAA9E,EAAAsX,KAAAnU,OAAA5C,EAAA+K,YAAAxM,GAAA,IAAAqC,MAAmL,IAAAvB,EAAAW,EAAAuE,IAAAjE,EAAAb,EAAAsX,KAAqB,GAAA/W,EAAAqkC,IAAAhlC,GAAA,OAAAiB,EAAA6E,WAAAnF,EAAAqkC,QAAArkC,EAAAqkC,IAAArkC,EAAAqkC,IAAA,EAAAhlC,GAAA,IAAAiB,EAAA6E,WAAAnF,EAAAqkC,MAAA,IAAA/jC,EAAA6E,WAAAnF,EAAAqkC,IAAA,OAAArkC,EAAAqkC,KAAA,EAA2HrkC,EAAAqkC,IAAAhlC,GAAA,IAAAiB,EAAA6E,WAAAnF,EAAAqkC,QAAiCrkC,EAAAqkC,IAAS,OAAArkC,EAAS,OAAAX,EAAAI,EAAA3B,GAAA2B,EAAAU,UAAAihB,KAAA,SAAAtjB,GAA2C,gBAAAA,MAAA4e,EAAAqR,SAAA7vB,KAAAsmC,WAAA,EAAAtmC,KAAAomC,MAAApmC,KAAA0mC,WAAA9mC,IAAiF2B,EAAAU,UAAAykC,WAAA,SAAA9mC,EAAA2B,QAAsC,IAAA3B,MAAA4e,EAAAqR,cAAA,IAAAtuB,MAAA45B,IAAAwL,WAAwD,QAAAtmC,EAAAL,KAAAqG,IAAAvE,EAAA9B,KAAA+qB,OAAAlS,KAAsC7Y,KAAAmmC,IAAA9lC,GAAW,CAAEL,KAAAqmC,SAAArmC,KAAAmmC,IAAuB,IAAAhlC,EAAAW,EAAAmF,WAAAjH,KAAAmmC,KAA6B,OAAAhlC,GAAU,eAAAnB,KAAAmmC,IAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,MAAA,MAA6D,yCAAAnmC,KAAAmmC,IAAkD,MAAM,gBAAAnmC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,QAAAnmC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,QAAAnmC,KAAAmmC,IAAA/jC,EAAA+gC,2BAAA/gC,EAAA6gC,oBAAA7gC,EAAA+hC,YAA0M,+BAAA/hC,EAAAmjC,cAA+C,gBAAAvlC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,QAAAnmC,KAAAmmC,IAAA/jC,EAAA2iC,gBAAA3iC,EAAAshC,QAA6G,aAAA1jC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAAuC,QAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,MAAA,QAAAnmC,KAAAmmC,IAAA/jC,EAAAiiC,oBAAyE,OAAA/gB,EAAA,QAAAtjB,KAAAmmC,IAAA/jC,EAAA+iC,iBAA6C,OAAA/iC,EAAA4hC,UAAmB,gBAAAhkC,KAAAmmC,IAAA/jC,EAAAigC,UAAqC,gBAAAriC,KAAAmmC,IAAA/jC,EAAAkgC,WAAsC,aAAAtiC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAAuC,QAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,MAAA,QAAAnmC,KAAAmmC,IAAA/jC,EAAAwiC,gBAAqE,OAAAthB,EAAA,QAAAtjB,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,QAAAnmC,KAAAmmC,IAAA/jC,EAAAyiC,0BAAAziC,EAAAmhC,kBAAkI,OAAAnhC,EAAAohC,SAAkB,aAAAxjC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAAuC,QAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,MAAA,QAAAnmC,KAAAmmC,IAAA/jC,EAAAuhC,UAA+D,OAAArgB,EAAA,QAAAtjB,KAAAmmC,IAAA/jC,EAAAsiC,YAAwC,OAAAtiC,EAAAihC,KAAc,gBAAArjC,KAAAmmC,IAAA/jC,EAAAmd,MAAiC,aAAAvf,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAAuC,QAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,MAAA,QAAAnmC,KAAAmmC,IAAA/jC,EAAAwhC,YAAiE,OAAAtgB,EAAA,QAAAtjB,KAAAmmC,IAAA/jC,EAAAuiC,aAAyC,OAAAviC,EAAAkhC,MAAe,aAAAtjC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAAuC,IAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,KAA6B,GAAAzlC,EAAAkmC,eAAAtjB,GAAA,QAAAtjB,KAAAmmC,IAAA/jC,EAAAqjC,aAAuD,GAAAlkC,EAAA,GAAAvB,KAAAmmC,IAAA,EAAA9lC,GAAA,IAAAijB,GAAA,IAAAxhB,EAAAmF,WAAAjH,KAAAmmC,IAAA,UAAAnmC,KAAAmmC,KAAA,EAAA/jC,EAAAsgC,YAA2F,OAAAtgC,EAAAqgC,IAAa,YAAAniC,EAAAN,KAAAmmC,IAAuB,KAAAnmC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAA+B,QAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,MAAA,CAAmC,IAAAxlC,EAAAge,EAAAgT,YAAAF,KAAyB,IAAAzxB,KAAAmmC,IAAA,EAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,IAAA,OAAAnmC,KAAAmmC,IAAAxlC,EAAAge,EAAAgT,YAAAD,UAAoF1xB,KAAAmmC,IAAA9lC,GAAa,OAAAyB,EAAAmF,WAAAjH,KAAAmmC,KAAA,GAAgCnmC,KAAAmmC,IAAW,MAAMnmC,KAAAymC,WAAAzmC,KAAAymC,UAAA9lC,EAAAmB,EAAAgS,UAAAxT,EAAAN,KAAAmmC,KAAAnmC,KAAAgjB,MAAA1iB,EAAAN,KAAAmmC,MAAiF,MAAM,OAAA7iB,EAAA,CAAU,QAAA2M,GAAA,IAAajwB,KAAAmmC,IAAA9lC,GAAa,QAAAc,EAAAW,EAAAmF,WAAAjH,KAAAmmC,OAAAnmC,KAAAmmC,IAAA,EAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,IAAA,IAAgFnmC,KAAAmmC,KAAA,EAAAlW,GAAA,EAAiB,MAAMA,EAAAjwB,KAAAymC,WAAAzmC,KAAAymC,UAAA9nB,EAAAgT,YAAAnR,MAAA1e,EAAAgS,UAAAxT,EAAAN,KAAAmmC,KAAAnmC,KAAAgjB,MAAA1iB,EAAAN,KAAAmmC,MAAAnmC,KAAA8M,MAAAhM,EAAA+lC,eAAAC,YAAA9mC,KAAAgjB,MAAAhjB,KAAAmmC,KAAA,MAAwK,MAAM,OAAA7iB,EAAA,QAAAtjB,KAAAmmC,IAAA/jC,EAAA0iC,aAAyC,OAAA1iC,EAAAqhC,MAAe,uFAAAzjC,KAAA+mC,cAAA3kC,EAAAojC,eAAApjC,EAAAqjC,aAA0I,gBAAAzlC,KAAAmmC,IAAA/jC,EAAAoiC,MAAiC,gBAAAxkC,KAAAmmC,IAAA/jC,EAAAugC,UAAqC,aAAA3iC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAAuC,QAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,MAAA,QAAAnmC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,QAAAnmC,KAAAmmC,IAAA/jC,EAAA4iC,0BAAA5iC,EAAAyhC,kBAA2J,OAAAvgB,EAAA,QAAAtjB,KAAAmmC,IAAA/jC,EAAA0gC,gBAA4C,OAAA1gC,EAAAwgC,SAAkB,aAAA5iC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAAuC,QAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,MAAA,QAAAnmC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,QAAAnmC,KAAAmmC,IAAA/jC,EAAA8gC,sBAAA9gC,EAAA4gC,cAAmJ,OAAA1f,EAAA,QAAAtjB,KAAAmmC,IAAA/jC,EAAAghC,mBAA+C,OAAAhhC,EAAAqiC,OAAgB,aAAAzkC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAAuC,QAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,MAAA,CAAmC,KAAAnmC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAA+B,QAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,MAAA,QAAAnmC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,QAAAnmC,KAAAmmC,IAAA/jC,EAAA8iC,4CAAA9iC,EAAA2hC,oCAA+L,OAAAzgB,EAAA,QAAAtjB,KAAAmmC,IAAA/jC,EAAA6iC,+BAA2D,OAAA7iC,EAAA0hC,wBAAiC,OAAAxgB,EAAA,QAAAtjB,KAAAmmC,IAAA/jC,EAAA2gC,mBAA+C,OAAA3gC,EAAAygC,YAAqB,gBAAA7iC,KAAAmmC,IAAA/jC,EAAAmiC,SAAoC,gBAAAvkC,KAAAmmC,IAAA/jC,EAAAmgC,YAAuC,gBAAAviC,KAAAmmC,IAAA/jC,EAAAogC,aAAwC,gBAAAxiC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,GAAA,IAAAyB,EAAAmF,WAAAjH,KAAAmmC,QAAAnmC,KAAAmmC,IAAA/jC,EAAAijC,cAAAjjC,EAAA8hC,MAAyG,iBAAAlkC,KAAAmmC,IAAA/jC,EAAA+/B,UAAsC,cAAAniC,KAAAmmC,IAAA5kC,EAAA,GAAAvB,KAAAmmC,IAAA9lC,EAAA,CAAwC,SAAAijB,EAAAxhB,EAAAmF,WAAAjH,KAAAmmC,MAAA,QAAAnmC,KAAAmmC,IAAA/jC,EAAAkiC,QAA8D,OAAAhhB,EAAA,QAAAtjB,KAAAmmC,IAAA/jC,EAAAgjC,WAAuC,OAAAhjC,EAAA6hC,IAAa,iBAAAjkC,KAAAmmC,IAAA/jC,EAAAggC,WAAuC,iBAAApiC,KAAAmmC,IAAA/jC,EAAAgiC,MAAkC,gBAAApkC,KAAAmmC,IAAA/jC,EAAAkjC,GAA8B,WAAA5kC,EAAAsmC,kBAAA7lC,GAAA,CAAmC,GAAAT,EAAAumC,mBAAA9lC,GAAA,CAA4B,QAAA6D,EAAAhF,KAAAmmC,MAAmBnmC,KAAAmmC,IAAA9lC,GAAAK,EAAAwmC,iBAAA/lC,EAAAW,EAAAmF,WAAAjH,KAAAmmC,OAA2D,IAAAzlC,EAAAumC,mBAAA9lC,GAAA,OAAAnB,KAAAmmC,IAAAnhC,EAAA5C,EAAA8c,WAA4D,IAAAqF,EAAAtR,EAAAnR,EAAAgS,UAAA9O,EAAAhF,KAAAmmC,MAAiC,GAAA5hB,IAAAniB,EAAA8/B,SAAAtiC,IAAA4e,EAAAonB,SAAAhmC,IAAA4e,EAAAmnB,SAAAxjC,EAAAoiB,IAAA,OAAAA,EAA+DvkB,KAAAmmC,IAAAnhC,EAAW,OAAA5C,EAAA8c,WAAoB,GAAAxe,EAAAymC,aAAAhmC,GAAA,GAAsBnB,KAAAmmC,IAAW,MAAM,OAAAnmC,KAAA8M,MAAAhM,EAAA+lC,eAAAO,kBAAApnC,KAAAgjB,MAAAhjB,KAAAmmC,IAAAnmC,KAAAmmC,IAAA,MAAAnmC,KAAAmmC,IAAA/jC,EAAA8/B,SAA4G,OAAA9/B,EAAAsjC,WAAmBnkC,EAAAU,UAAAolC,KAAA,SAAAznC,EAAA2B,EAAAlB,QAAkC,IAAAT,OAAA,YAAA2B,MAAAid,EAAAqR,cAAA,IAAAxvB,MAAA86B,IAAAwL,WAA2E,IAAA7kC,EAAA9B,KAAA+qB,OAAAlS,KAAuB,GAAA7Y,KAAAsmC,UAAA,GAAqB,IAAAnlC,EAAAnB,KAAAmmC,IAAA/jC,EAAApC,KAAAomC,MAAAtlC,EAAAd,KAAAqmC,SAA4C,GAAArmC,KAAAsmC,UAAAtmC,KAAA0mC,WAAAnlC,EAAAlB,GAAAL,KAAAumC,aAAAvmC,KAAAqmC,SAAAzmC,EAAA,CAA0EI,KAAAwmC,oBAAA,EAA2B,QAAA7nB,EAAAxd,EAAA8R,EAAAjT,KAAAumC,aAAgC5nB,EAAA1L,IAAI0L,EAAA,GAAAje,EAAA4mC,YAAAxlC,EAAAmF,WAAA0X,IAAA,CAAuC3e,KAAAwmC,oBAAA,EAA2B,OAAOxmC,KAAAmmC,IAAAhlC,EAAAnB,KAAAomC,MAAAhkC,EAAApC,KAAAqmC,SAAAvlC,EAAwC,OAAAd,KAAAsmC,WAAsB/kC,EAAAU,UAAAslC,eAAA,SAAA3nC,GAAwC,gBAAAA,MAAA4e,EAAAmnB,QAAA3lC,KAAAwnC,KAAAplC,EAAA8c,WAAAtf,IAA0D2B,EAAAU,UAAAulC,KAAA,SAAA5nC,EAAA2B,QAAgC,IAAAA,MAAAid,EAAAqR,SAA0B,IAAAxvB,EAAAL,KAAAmmC,IAAArkC,EAAA9B,KAAAomC,MAAAjlC,EAAAnB,KAAAqmC,SAAAvlC,EAAAq6B,IAAAwL,UAA4D,OAAA/mC,GAAU,KAAAwC,EAAAygC,YAAA/hC,EAAA,EAAuB,OAAAd,KAAAomC,MAAApmC,KAAA0mC,WAAAnlC,EAAAT,GAAAd,KAAAomC,OAAAxmC,GAAAI,KAAAsmC,WAAA,OAAAtmC,KAAAmmC,IAAA9lC,EAAAL,KAAAomC,MAAAtkC,EAAA9B,KAAAqmC,SAAAllC,GAAA,IAAyHI,EAAAU,UAAAwlC,KAAA,WAA6B,IAAA7nC,EAAM,OAAAqwB,GAAArwB,EAAAqwB,IAAA,MAAArwB,EAAA,IAAAe,EAAAf,EAAAumC,IAAAnmC,KAAAmmC,IAAAvmC,EAAAwmC,MAAApmC,KAAAomC,MAAAxmC,EAAAymC,SAAArmC,KAAAqmC,SAAAzmC,GAA2F2B,EAAAU,UAAAylC,QAAA,SAAA9nC,GAAiCqwB,EAAArwB,GAAI2B,EAAAU,UAAAuY,MAAA,SAAA5a,GAA+BI,KAAAmmC,IAAAvmC,EAAAumC,IAAAnmC,KAAAomC,MAAAxmC,EAAAwmC,MAAApmC,KAAAqmC,SAAAzmC,EAAAymC,SAAArmC,KAAAsmC,WAAA,GAA6E/kC,EAAAU,UAAA+gB,MAAA,SAAApjB,EAAA2B,GAAiC,gBAAA3B,OAAA,YAAA2B,OAAA,GAAA3B,EAAA,GAAAA,EAAAI,KAAAqmC,SAAA9kC,EAAAvB,KAAAmmC,KAAA5kC,EAAA,IAAAA,EAAA3B,GAAA,IAAA0jB,EAAAtjB,KAAA+qB,OAAAnrB,EAAA2B,IAAgHA,EAAAU,UAAA0lC,eAAA,WAAuC,QAAA/nC,EAAAI,KAAA+qB,OAAAlS,KAAAtX,EAAAvB,KAAAmmC,IAAA9lC,EAAAL,KAAAqG,MAAiDrG,KAAAmmC,IAAA9lC,GAAAK,EAAAwmC,iBAAAtnC,EAAAqH,WAAAjH,KAAAmmC,QAA2D,OAAAvmC,EAAAkU,UAAAvS,EAAAvB,KAAAmmC,MAA+B5kC,EAAAU,UAAA2lC,WAAA,WAAmC,QAAAhoC,EAAAI,KAAA+qB,OAAAlS,KAAAtX,EAAA3B,EAAAqH,WAAAjH,KAAAmmC,OAAA9lC,EAAAL,KAAAmmC,IAAArkC,EAAA9B,KAAAqG,IAAAlF,EAAA,KAAkF,CAAE,GAAAnB,KAAAmmC,KAAArkC,EAAA,CAAgBX,GAAAvB,EAAAkU,UAAAzT,EAAAL,KAAAmmC,KAAAnmC,KAAA8M,MAAAhM,EAAA+lC,eAAAgB,4BAAA7nC,KAAAgjB,MAAA3iB,EAAA,EAAAyB,IAAsG,MAAM,IAAAM,EAAAxC,EAAAqH,WAAAjH,KAAAmmC,KAA6B,GAAA/jC,GAAAb,EAAA,CAASJ,GAAAvB,EAAAkU,UAAAzT,EAAAL,KAAAmmC,OAA6B,MAAM,OAAA/jC,EAAA,CAAU,GAAA1B,EAAA4mC,YAAAllC,IAAA,IAAAb,EAAA,CAA4BJ,GAAAvB,EAAAkU,UAAAzT,EAAAL,KAAAmmC,KAAAnmC,KAAA8M,MAAAhM,EAAA+lC,eAAAgB,4BAAA7nC,KAAAgjB,MAAA3iB,EAAA,EAAAL,KAAAmmC,MAA6G,QAAMnmC,KAAAmmC,SAAWhlC,GAAAvB,EAAAkU,UAAAzT,EAAAL,KAAAmmC,KAAAhlC,GAAAnB,KAAA8nC,qBAAAznC,EAAAL,KAAAmmC,IAAwE,OAAAhlC,GAASI,EAAAU,UAAA6lC,mBAAA,WAA2C,IAAAloC,EAAAI,KAAAqG,IAAe,KAAArG,KAAAmmC,KAAAvmC,EAAA,OAAAI,KAAA8M,MAAAhM,EAAA+lC,eAAAkB,uBAAA/nC,KAAAgjB,MAAApjB,IAAA,GAA6F,IAAA2B,EAAAvB,KAAA+qB,OAAAlS,KAAAxY,EAAAkB,EAAA0F,WAAAjH,KAAAmmC,OAAkD,OAAA9lC,GAAU,mBAAmB,mBAAmB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,kBAAkB,kBAAkB,gBAAAL,KAAAmmC,IAAAvmC,GAAA,KAAA2B,EAAA0F,WAAAjH,KAAAmmC,QAAAnmC,KAAAmmC,IAAAnmC,KAAAgoC,6BAAAhoC,KAAAioC,oBAA+H,QAAAjoC,KAAAmmC,IAAAvmC,GAAA,IAAA2B,EAAA0F,WAAAjH,KAAAmmC,QAAAnmC,KAAAmmC,IAA2D,qCAAqC,eAAA/1B,OAAAqL,aAAApb,KAAuCkB,EAAAU,UAAAimC,kBAAA,WAA0C,QAAAtoC,EAAAI,KAAA+qB,OAAAlS,KAAAtX,EAAAvB,KAAAmmC,IAAA9lC,EAAAL,KAAAqG,IAAAvE,GAAA,IAAuD,CAAE,GAAA9B,KAAAmmC,KAAA9lC,EAAA,CAAgBL,KAAA8M,MAAAhM,EAAA+lC,eAAAsB,wCAAAnoC,KAAAgjB,MAAAzhB,EAAAlB,IAAqF,MAAM,OAAAT,EAAAqH,WAAAjH,KAAAmmC,KAAA,CAA+B,IAAAhlC,EAAAvB,EAAAqH,WAAAjH,KAAAmmC,KAA6B,IAAArkC,GAAA,IAAAX,EAAA,MAAmB,GAAAT,EAAA4mC,YAAAnmC,GAAA,CAAqBnB,KAAA8M,MAAAhM,EAAA+lC,eAAAsB,wCAAAnoC,KAAAgjB,MAAAzhB,EAAAvB,KAAAmmC,MAA4F,QAAMnmC,KAAAmmC,IAAArkC,GAAA,QAAgB9B,KAAAmmC,IAAArkC,GAAA,EAAoB,OAAAlC,EAAAkU,UAAAvS,EAAAvB,KAAAmmC,MAA+B5kC,EAAAU,UAAAmmC,gBAAA,WAAwC,QAAAxoC,EAAAI,KAAA+qB,OAAAlS,KAAAtX,EAAAvB,KAAAmmC,IAAA9lC,EAAAL,KAAAqG,IAAAvE,EAAA,EAAqD9B,KAAAmmC,IAAA9lC,GAAW,CAAE,IAAAc,EAAAvB,EAAAqH,WAAAjH,KAAAmmC,KAA6B,IAAAzlC,EAAAwmC,iBAAA/lC,GAAA,MAAgC,SAAAnB,KAAAmmC,IAAAhlC,GAAqB,SAAAW,GAAA,EAAAA,GAAA,IAAqB,MAAM,SAAAA,GAAA,EAAAA,GAAA,IAAqB,MAAM,SAAAA,GAAA,EAAAA,GAAA,IAAqB,MAAM,QAAAA,GAAA,GAAc,UAAAA,GAAA9B,KAAA8M,MAAAhM,EAAA+lC,eAAAwB,iCAAAroC,KAAAgjB,MAAAzhB,EAAAvB,KAAAmmC,MAAAvmC,EAAAkU,UAAAvS,EAAAvB,KAAAmmC,MAA0H5kC,EAAAU,UAAA8kC,YAAA,WAAoC,IAAAnnC,EAAAI,KAAAqG,IAAA9E,EAAAvB,KAAA+qB,OAAAlS,KAAkC,GAAA7Y,KAAAmmC,IAAA,EAAAvmC,GAAA,IAAA2B,EAAA0F,WAAAjH,KAAAmmC,KAAA,OAAA5kC,EAAA0F,WAAAjH,KAAAmmC,IAAA,IAA6E,2DAA2D,QAAA9lC,EAAAL,KAAAmmC,IAAmB9lC,EAAAT,GAAI,CAAE,IAAAkC,EAAAP,EAAA0F,WAAA5G,GAAsB,OAAAyB,GAAA,KAAAA,GAAA,IAAAA,EAAA,SAAiC,IAAAA,EAAA,IAAAA,EAAA,SAAAA,EAAA,MAA6BzB,IAAI,UAASkB,EAAAU,UAAAqmC,YAAA,WAAoC,IAAA1oC,EAAAI,KAAA+qB,OAAAlS,KAAuB,GAAA7Y,KAAAmmC,IAAA,EAAAnmC,KAAAqG,KAAA,IAAAzG,EAAAqH,WAAAjH,KAAAmmC,KAAA,CAAoD,OAAAvmC,EAAAqH,WAAAjH,KAAAmmC,IAAA,IAAiC,wBAAAnmC,KAAAmmC,KAAA,EAAAnmC,KAAAuoC,iBAA0D,uBAAAvoC,KAAAmmC,KAAA,EAAAnmC,KAAAwoC,oBAA4D,wBAAAxoC,KAAAmmC,KAAA,EAAAnmC,KAAAyoC,mBAA4D,GAAA/nC,EAAAgoC,aAAA9oC,EAAAqH,WAAAjH,KAAAmmC,IAAA,KAA6C,IAAA5kC,EAAAvB,KAAAmmC,MAAenmC,KAAAmmC,IAAW,IAAA9lC,EAAAL,KAAAyoC,mBAA8B,OAAAzoC,KAAA8M,MAAAhM,EAAA+lC,eAAA8B,8CAAA3oC,KAAAgjB,MAAAzhB,EAAAvB,KAAAmmC,MAAA9lC,GAA4G,OAAAL,KAAA4oC,sBAAiCrnC,EAAAU,UAAAsmC,eAAA,WAAuC,QAAA3oC,EAAAI,KAAA+qB,OAAAlS,KAAAtX,EAAAvB,KAAAmmC,IAAA9lC,EAAAwoC,QAAA,GAAA/mC,EAAA+mC,QAAA,GAAA1nC,EAAAI,EAAAa,EAAApC,KAAAqG,IAA+ErG,KAAAmmC,IAAA/jC,GAAW,CAAE,IAAAoc,EAAAxe,KAAAmmC,IAAAxnB,EAAA/e,EAAAqH,WAAAuX,GAAiC,GAAAG,GAAA,IAAAA,GAAA,GAAAte,EAAAyoC,QAAAC,QAAA1oC,EAAAyB,GAAA+mC,QAAAlqB,EAAA,UAAsD,GAAAA,GAAA,IAAAA,GAAA,GAAAte,EAAAyoC,QAAAC,QAAA1oC,EAAAyB,GAAA+mC,QAAA,GAAAlqB,EAAA,UAA8D,GAAAA,GAAA,IAAAA,GAAA,IAAAte,EAAAyoC,QAAAC,QAAA1oC,EAAAyB,GAAA+mC,QAAA,GAAAlqB,EAAA,SAA+D,CAAK,OAAAA,EAAA,MAAexd,GAAAqd,GAAAxe,KAAA8M,MAAA3L,GAAAI,EAAAT,EAAA+lC,eAAAmC,wCAAAloC,EAAA+lC,eAAAoC,0DAAAjpC,KAAAgjB,MAAAxE,IAAArd,EAAAqd,EAAA,EAA+Kxe,KAAAmmC,IAAA3nB,EAAA,EAAa,OAAAxe,KAAAmmC,KAAA5kC,EAAAvB,KAAA8M,MAAAhM,EAAA+lC,eAAAqC,2BAAAlpC,KAAAgjB,MAAAzhB,IAAAJ,GAAAnB,KAAAmmC,KAAAnmC,KAAA8M,MAAAhM,EAAA+lC,eAAAmC,wCAAAhpC,KAAAgjB,MAAA7hB,EAAA,IAAAd,GAA6LkB,EAAAU,UAAA2mC,mBAAA,WAA2C,QAAAhpC,EAAAI,KAAA+qB,OAAAlS,KAAAtX,EAAAvB,KAAAmmC,IAAA9lC,EAAAL,KAAAqG,IAAAvE,EAAA+mC,QAAA,GAAA1nC,EAAA0nC,QAAA,IAAAzmC,EAAAb,EAAgFvB,KAAAmmC,IAAA9lC,GAAW,CAAE,IAAAme,EAAAxe,KAAAmmC,IAAAxnB,EAAA/e,EAAAqH,WAAAuX,GAAiC,GAAAG,GAAA,IAAAA,GAAA,GAAA7c,EAAAgnC,QAAAK,QAAArnC,EAAAX,GAAA0nC,QAAAlqB,EAAA,SAAsD,CAAK,OAAAA,EAAA,MAAevc,GAAAoc,GAAAxe,KAAA8M,MAAA1K,GAAAb,EAAAT,EAAA+lC,eAAAmC,wCAAAloC,EAAA+lC,eAAAoC,0DAAAjpC,KAAAgjB,MAAAxE,IAAApc,EAAAoc,EAAA,EAA+Kxe,KAAAmmC,IAAA3nB,EAAA,EAAa,OAAAxe,KAAAmmC,KAAA5kC,EAAAvB,KAAA8M,MAAAhM,EAAA+lC,eAAAuC,eAAAppC,KAAAgjB,MAAAzhB,IAAAa,GAAApC,KAAAmmC,KAAAnmC,KAAA8M,MAAAhM,EAAA+lC,eAAAmC,wCAAAhpC,KAAAgjB,MAAA5gB,EAAA,IAAAN,GAAiLP,EAAAU,UAAAwmC,iBAAA,WAAyC,QAAA7oC,EAAAI,KAAA+qB,OAAAlS,KAAAtX,EAAAvB,KAAAmmC,IAAA9lC,EAAAwoC,QAAA,GAAA/mC,EAAA+mC,QAAA,GAAA1nC,EAAAI,EAAAa,EAAApC,KAAAqG,IAA+ErG,KAAAmmC,IAAA/jC,GAAW,CAAE,IAAAoc,EAAAxe,KAAAmmC,IAAAxnB,EAAA/e,EAAAqH,WAAAuX,GAAiC,GAAAG,GAAA,IAAAA,GAAA,GAAAte,EAAAyoC,QAAAC,QAAA1oC,EAAAyB,GAAA+mC,QAAAlqB,EAAA,SAAsD,CAAK,OAAAA,EAAA,MAAexd,GAAAqd,GAAAxe,KAAA8M,MAAA3L,GAAAI,EAAAT,EAAA+lC,eAAAmC,wCAAAloC,EAAA+lC,eAAAoC,0DAAAjpC,KAAAgjB,MAAAxE,IAAArd,EAAAqd,EAAA,IAA+Kxe,KAAAmmC,IAAW,OAAAnmC,KAAAmmC,KAAA5kC,EAAAvB,KAAA8M,MAAAhM,EAAA+lC,eAAAwC,qBAAArpC,KAAAgjB,MAAAzhB,IAAAJ,GAAAnB,KAAAmmC,KAAAnmC,KAAA8M,MAAAhM,EAAA+lC,eAAAmC,wCAAAhpC,KAAAgjB,MAAA7hB,EAAA,IAAAd,GAAuLkB,EAAAU,UAAAumC,kBAAA,WAA0C,QAAA5oC,EAAAI,KAAA+qB,OAAAlS,KAAAtX,EAAAvB,KAAAmmC,IAAA9lC,EAAAwoC,QAAA,GAAA/mC,EAAA+mC,QAAA,GAAA1nC,EAAAI,EAAAa,EAAApC,KAAAqG,IAA+ErG,KAAAmmC,IAAA/jC,GAAW,CAAE,IAAAoc,EAAAxe,KAAAmmC,IAAAxnB,EAAA/e,EAAAqH,WAAAuX,GAAiC,OAAAG,EAAAte,EAAA0oC,QAAA1oC,EAAAyB,QAAwB,OAAA6c,EAAAte,EAAAyoC,QAAAC,QAAA1oC,EAAAyB,UAAwC,CAAK,OAAA6c,EAAA,MAAexd,GAAAqd,GAAAxe,KAAA8M,MAAA3L,GAAAI,EAAAT,EAAA+lC,eAAAmC,wCAAAloC,EAAA+lC,eAAAoC,0DAAAjpC,KAAAgjB,MAAAxE,IAAArd,EAAAqd,EAAA,EAA+Kxe,KAAAmmC,IAAA3nB,EAAA,EAAa,OAAAxe,KAAAmmC,KAAA5kC,EAAAvB,KAAA8M,MAAAhM,EAAA+lC,eAAAyC,sBAAAtpC,KAAAgjB,MAAAzhB,IAAAJ,GAAAnB,KAAAmmC,KAAAnmC,KAAA8M,MAAAhM,EAAA+lC,eAAAmC,wCAAAhpC,KAAAgjB,MAAA7hB,EAAA,IAAAd,GAAwLkB,EAAAU,UAAAsnC,UAAA,WAAkC,OAAAvpC,KAAAwpC,oBAA+BjoC,EAAAU,UAAAunC,iBAAA,WAAyC,QAAA5pC,EAAAI,KAAAmmC,IAAA5kC,EAAAvB,KAAAqG,IAAAhG,EAAAL,KAAA+qB,OAAAlS,KAAiD7Y,KAAAmmC,IAAA5kC,GAAAb,EAAAkmC,eAAAvmC,EAAA4G,WAAAjH,KAAAmmC,SAAqDnmC,KAAAmmC,IAAY,GAAAnmC,KAAAmmC,IAAA5kC,GAAA,IAAAlB,EAAA4G,WAAAjH,KAAAmmC,KAAA,MAAAnmC,KAAAmmC,IAAyDnmC,KAAAmmC,IAAA5kC,GAAAb,EAAAkmC,eAAAvmC,EAAA4G,WAAAjH,KAAAmmC,SAAqDnmC,KAAAmmC,IAAY,GAAAnmC,KAAAmmC,IAAA5kC,EAAA,CAAe,IAAAO,EAAAzB,EAAA4G,WAAAjH,KAAAmmC,KAA6B,QAAArkC,GAAA,IAAAA,EAAA,OAAA9B,KAAAmmC,IAAA5kC,GAAA,KAAAO,EAAAzB,EAAA4G,WAAAjH,KAAAmmC,OAAA,IAAArkC,GAAApB,EAAAkmC,eAAAvmC,EAAA4G,WAAAjH,KAAAmmC,IAAA,QAAAnmC,KAAAmmC,IAAmInmC,KAAAmmC,IAAA5kC,GAAAb,EAAAkmC,eAAAvmC,EAAA4G,WAAAjH,KAAAmmC,SAAqDnmC,KAAAmmC,IAAY,OAAA/oB,WAAA/c,EAAAyT,UAAAlU,EAAAI,KAAAmmC,OAA2C5kC,EAAAU,UAAAwnC,aAAA,WAAqC,UAAAhmC,MAAA,oBAAmClC,EAAAU,UAAAgmC,kBAAA,WAA0C,QAAAroC,EAAA,EAAA2B,EAAA,EAAAlB,EAAAL,KAAAqG,IAAAvE,EAAA9B,KAAA+qB,OAAAlS,KAA8C7Y,KAAAmmC,IAAA9lC,GAAW,CAAE,IAAAc,EAAAW,EAAAmF,WAAAjH,KAAAmmC,OAA+B,GAAAhlC,GAAA,IAAAA,GAAA,GAAAI,MAAA,GAAAJ,EAAA,QAA8B,GAAAA,GAAA,IAAAA,GAAA,GAAAI,MAAA,GAAAJ,GAAA,OAAoC,CAAK,KAAAA,GAAA,IAAAA,GAAA,YAAAnB,KAAA8M,MAAAhM,EAAA+lC,eAAAqC,2BAAAlpC,KAAAgjB,MAAAhjB,KAAAmmC,IAAA,EAAAnmC,KAAAmmC,MAAA,GAAsH5kC,MAAA,GAAAJ,GAAA,GAAe,QAAAvB,EAAA,MAAgB,OAAAA,GAAAI,KAAA8M,MAAAhM,EAAA+lC,eAAAkB,uBAAA/nC,KAAAgjB,MAAAhjB,KAAAmmC,MAAA,IAAA/1B,OAAAqL,aAAAla,IAA8GA,EAAAU,UAAA+lC,0BAAA,WAAkD,IAAApoC,EAAAI,KAAAmmC,IAAA5kC,EAAAvB,KAAAuoC,iBAAAloC,EAAAqpC,QAAAnoC,GAAAO,GAAA,EAAyDyuB,QAAAoZ,SAAApoC,IAAAlB,EAAA,UAAAL,KAAA8M,MAAAhM,EAAA+lC,eAAA+C,4EAAA5pC,KAAAgjB,MAAApjB,EAAAI,KAAAmmC,MAAArkC,GAAA,GAAuK,IAAAX,EAAAnB,KAAAqG,IAAAjE,EAAApC,KAAA+qB,OAAAlS,KAAkC,OAAA7Y,KAAAmmC,KAAAhlC,GAAAnB,KAAA8M,MAAAhM,EAAA+lC,eAAAkB,uBAAA/nC,KAAAgjB,MAAApjB,EAAAuB,IAAAW,GAAA,QAAAM,EAAA6E,WAAAjH,KAAAmmC,OAAAnmC,KAAAmmC,KAAAnmC,KAAA8M,MAAAhM,EAAA+lC,eAAAgD,qCAAA7pC,KAAAgjB,MAAApjB,EAAAI,KAAAmmC,MAAArkC,GAAA,GAAAA,EAAA,GAAAzB,EAAA,MAAA+P,OAAAqL,aAAApb,GAAA+P,OAAAqL,aAAA,OAAApb,EAAA,mBAAAA,EAAA,cAAwUkB,EAAAU,UAAA6nC,OAAA,aAAgCvoC,EAAvub,CAA0ubT,EAAAipC,mBAAsBxoC,EAAAyoC,UAAA1pC,EAAc,IAAAK,EAAA,aAAmBY,EAAA0oC,MAAAtpC,EAAU,IAAAsvB,EAAA,MAAW,SAAArwB,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAS,SAAA1B,GAAcA,IAAAsqC,wBAAA,+BAAAtqC,IAAAuqC,oBAAA,2BAAAvqC,IAAAwqC,eAAA,sBAAAxqC,IAAAyqC,sDAAA,6DAAAzqC,IAAA0qC,2FAAA,kGAAA1qC,IAAA2qC,mCAAA,0CAAA3qC,IAAA4qC,yCAAA,gDAAA5qC,IAAA6qC,gCAAA,uCAAA7qC,IAAA8qC,+BAAA,sCAAA9qC,IAAA+qC,gCAAA,uCAAA/qC,IAAAgrC,+DAAA,sEAAAhrC,IAAAirC,8CAAA,qDAAAjrC,IAAAyoC,iCAAA,wCAAAzoC,IAAAkrC,4CAAA,mDAAAlrC,IAAAmrC,yCAAA,gDAAAnrC,IAAAorC,8BAAA,qCAAAprC,IAAAqrC,oBAAA,2BAAArrC,IAAAsrC,sCAAA,6CAAAtrC,IAAAurC,4CAAA,mDAAAvrC,IAAAwrC,sDAAA,6DAAAxrC,IAAAyrC,yCAAA,gDAAAzrC,IAAA0rC,wEAAA,+EAAA1rC,IAAA2rC,sCAAA,6CAAA3rC,IAAA4rC,2CAAA,kDAAA5rC,IAAA6rC,4CAAA,mDAAA7rC,IAAA8rC,6CAAA,oDAAA9rC,IAAA+rC,0BAAA,iCAAA/rC,IAAAgsC,qBAAA,4BAAAhsC,IAAAisC,yBAAA,gCAAAjsC,IAAAioC,4BAAA,oCAAAjoC,IAAAksC,oBAAA,4BAAAlsC,IAAAknC,YAAA,oBAAAlnC,IAAAmsC,yCAAA,iDAAAnsC,IAAAosC,2BAAA,mCAAApsC,IAAAqsC,iBAAA,yBAAArsC,IAAAssC,kDAAA,0DAAAtsC,IAAAusC,oDAAA,4DAAAvsC,IAAAwsC,yDAAA,iEAAAxsC,IAAAysC,+CAAA,uDAAAzsC,IAAA0sC,iDAAA,yDAAA1sC,IAAA2sC,gCAAA,wCAAA3sC,IAAA4sC,oCAAA,4CAAA5sC,IAAA6sC,4CAAA,oDAAA7sC,IAAA8sC,+CAAA,uDAAA9sC,IAAA+sC,oDAAA,4DAAA/sC,IAAAgtC,sCAAA,8CAAAhtC,IAAAitC,kCAAA,0CAAAjtC,IAAAktC,2DAAA,mEAAAltC,IAAAmtC,2DAAA,mEAAAntC,IAAAotC,wCAAA,gDAAAptC,IAAAqtC,oDAAA,4DAAArtC,IAAAstC,oCAAA,4CAAAttC,IAAAutC,8EAAA,sFAAAvtC,IAAAwtC,qFAAA,6FAAAxtC,IAAAytC,2DAAA,mEAAAztC,IAAA0tC,oBAAA,4BAAA1tC,IAAA2tC,cAAA,sBAAA3tC,IAAA4tC,oEAAA,4EAAA5tC,IAAA6tC,kBAAA,0BAAA7tC,IAAA8tC,2CAAA,mDAAA9tC,IAAA+oC,8CAAA,sDAAA/oC,IAAAwpC,eAAA,uBAAAxpC,IAAAspC,2BAAA,mCAAAtpC,IAAAmoC,uBAAA,+BAAAnoC,IAAAwnC,kBAAA,0BAAAxnC,IAAA+tC,0BAAA,kCAAA/tC,IAAAguC,6DAAA,qEAAAhuC,IAAAiuC,gEAAA,wEAAAjuC,IAAAkuC,uBAAA,+BAAAluC,IAAAmuC,wBAAA,gCAAAnuC,IAAAouC,8BAAA,sCAAApuC,IAAAquC,qBAAA,6BAAAruC,IAAAsuC,wCAAA,gDAAAtuC,IAAAuoC,wCAAA,gDAAAvoC,IAAAuuC,oDAAA,4DAAAvuC,IAAA0pC,sBAAA,8BAAA1pC,IAAAypC,qBAAA,6BAAAzpC,IAAAwuC,yDAAA,iEAAAxuC,IAAAgqC,4EAAA,oFAAAhqC,IAAAiqC,qCAAA,6CAAAjqC,IAAAyuC,8BAAA,sCAAAzuC,IAAA0uC,6EAAA,qFAAA1uC,IAAA2uC,qEAAA,6EAAA3uC,IAAA4uC,iEAAA,yEAAA5uC,IAAA6uC,sCAAA,8CAAA7uC,IAAA8uC,+DAAA,uEAAA9uC,IAAA+uC,uBAAA,+BAAA/uC,IAAAgvC,mBAAA,2BAAAhvC,IAAAivC,kCAAA,0CAAAjvC,IAAAkvC,0CAAA,kDAAAlvC,IAAAmvC,sBAAA,8BAAAnvC,IAAAovC,mCAAA,2CAAApvC,IAAAqvC,qCAAA,6CAAArvC,IAAAsvC,+CAAA,uDAAAtvC,IAAAuvC,iDAAA,yDAAAvvC,IAAAwvC,8FAAA,sGAAAxvC,IAAAyvC,oCAAA,4CAAAzvC,IAAA0vC,uGAAA,+GAAA1vC,IAAA2vC,yEAAA,iFAAA3vC,IAAA4vC,+DAAA,uEAAA5vC,IAAA6vC,0FAAA,kGAAA7vC,IAAA8vC,uFAAA,+FAAA9vC,IAAA+vC,8CAAA,sDAAA/vC,IAAAgwC,4DAAA,oEAAAhwC,IAAAiwC,2DAAA,mEAAAjwC,IAAAkwC,8CAAA,sDAAAlwC,IAAAmwC,sCAAA,8CAAAnwC,IAAAowC,gFAAA,wFAAApwC,IAAAqwC,qDAAA,6DAAArwC,IAAAswC,kCAAA,0CAAAtwC,IAAAuwC,kFAAA,0FAAAvwC,IAAAwwC,+FAAA,uGAAAxwC,IAAAywC,yBAAA,iCAAAzwC,IAAA0wC,2CAAA,mDAAA1wC,IAAA2wC,0EAAA,kFAAA3wC,IAAA4wC,4DAAA,oEAAA5wC,IAAA6wC,wBAAA,gCAAA7wC,IAAA8wC,oEAAA,4EAAA9wC,IAAA+wC,oEAAA,4EAAA/wC,IAAAgxC,+CAAA,uDAAAhxC,IAAAixC,+BAAA,uCAAAjxC,IAAAkxC,wCAAA,gDAAAlxC,IAAAmxC,oCAAA,4CAAAnxC,IAAAoxC,+HAAA,uIAAApxC,IAAAqxC,mFAAA,2FAAArxC,IAAAsxC,qFAAA,6FAAAtxC,IAAAuxC,qCAAA,6CAAAvxC,IAAAwxC,iEAAA,yEAAAxxC,IAAAyxC,qBAAA,6BAAAzxC,IAAA0xC,8BAAA,sCAAA1xC,IAAA2xC,iBAAA,yBAAA3xC,IAAAopC,wCAAA,gDAAAppC,IAAAqpC,0DAAA,kEAAArpC,IAAA4xC,kFAAA,2FAAA5xC,IAAA6xC,iGAAA,0GAAd,CAA6ublwC,EAAAslC,iBAAAtlC,EAAAslC,eAAA,KAAuCtlC,EAAAmwC,uBAAA,SAAA9xC,GAAwC,OAAAA,GAAU,0CAA0C,sCAAsC,mCAAmC,gFAAgF,qHAAqH,6DAA6D,mEAAmE,sDAAsD,iDAAiD,kDAAkD,iFAAiF,gEAAgE,mDAAmD,sEAAsE,+DAA+D,oDAAoD,sCAAsC,4DAA4D,8DAA8D,4EAA4E,+DAA+D,gGAAgG,wDAAwD,6DAA6D,8DAA8D,0EAA0E,+CAA+C,uCAAuC,6CAA6C,+CAA+C,uCAAuC,kCAAkC,4DAA4D,8CAA8C,oCAAoC,qEAAqE,uEAAuE,4EAA4E,kEAAkE,oEAAoE,sDAAsD,uDAAuD,+DAA+D,oEAAoE,yEAAyE,2DAA2D,qDAAqD,8EAA8E,8EAA8E,2DAA2D,yEAAyE,uDAAuD,mGAAmG,0GAA0G,gFAAgF,uCAAuC,iCAAiC,2FAA2F,yCAAyC,8DAA8D,iEAAiE,kCAAkC,8CAA8C,0CAA0C,qCAAqC,gDAAgD,iFAAiF,qFAAqF,0CAA0C,2CAA2C,iDAAiD,wCAAwC,4DAA4D,2DAA2D,yEAAyE,yCAAyC,wCAAwC,4EAA4E,+FAA+F,wDAAwD,iDAAiD,mGAAmG,4FAA4F,wFAAwF,yDAAyD,kFAAkF,8CAA8C,0CAA0C,6DAA6D,oEAAoE,6CAA6C,8DAA8D,4DAA4D,mEAAmE,qEAAqE,iHAAiH,+DAA+D,+HAA+H,8FAA8F,oFAAoF,6GAA6G,0GAA0G,6EAA6E,iFAAiF,gFAAgF,oEAAoE,yDAAyD,mGAAmG,wEAAwE,qDAAqD,yGAAyG,kHAAkH,oDAAoD,sEAAsE,+FAA+F,mFAAmF,6CAA6C,2FAA2F,uFAAuF,sEAAsE,uDAAuD,gEAAgE,4DAA4D,mJAAmJ,0GAA0G,4GAA4G,gEAAgE,oFAAoF,4CAA4C,qDAAqD,wCAAwC,2DAA2D,6EAA6E,yGAAyG,wHAAwH,oBAAmB,SAAAA,EAAA2B,EAAAlB,GAAiB,aAAa,IAAAyB,EAAAX,EAAAnB,WAAAoe,YAAAtc,EAAA,SAAAlC,EAAA2B,GAA+C,OAAAO,EAAAf,OAAAsd,gBAAA,CAAiCC,UAAA,cAAa5b,OAAA,SAAA9C,EAAA2B,GAAgC3B,EAAA0e,UAAA/c,IAAc,SAAA3B,EAAA2B,GAAgB,QAAAlB,KAAAkB,IAAAW,eAAA7B,KAAAT,EAAAS,GAAAkB,EAAAlB,MAAgDT,EAAA2B,IAAO,SAAA3B,EAAA2B,GAAe,SAAAlB,IAAaL,KAAAue,YAAA3e,EAAmBkC,EAAAlC,EAAA2B,GAAA3B,EAAAqC,UAAA,OAAAV,EAAAR,OAAAY,OAAAJ,IAAAlB,EAAA4B,UAAAV,EAAAU,UAAA,IAAA5B,KAA+EU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAW,IAAAc,EAAA/B,EAAA,GAAAme,EAAAne,EAAA,GAAAS,EAAAT,EAAA,IAAAse,EAAAte,EAAA,IAAAK,EAAAL,EAAA,IAA0C,SAAA4S,EAAArT,GAAc,OAAAA,EAAAutB,UAAAzJ,WAAAhf,OAAqC,SAAAvC,EAAAvC,GAAc,OAAAA,EAAAiZ,KAAA84B,SAAA,cAAArxC,EAAAV,GAA0C,SAAA0jB,EAAA1jB,GAAc,OAAAkB,EAAA8wC,WAAAC,MAAAjyC,GAA6B,SAAAU,EAAAV,GAAc,OAAAA,EAAA4vB,MAAAptB,EAAAugB,SAAA/D,OAAAhf,IAAAojB,MAAA+H,QAAA8K,YAAAzzB,EAAAmzB,WAAAH,WAAuF,SAAAz0B,EAAAf,GAAc,SAAAA,EAAA4vB,MAAAptB,EAAAugB,SAAA9D,WAAAyE,EAAA1jB,GAAAgU,WAAA,UAAAhU,EAAA2jB,eAAA3jB,EAAA2jB,cAAA7e,OAAA,GAA4G,SAAAurB,EAAArwB,GAAc,OAAAA,EAAA4vB,MAAAptB,EAAAugB,SAAAhB,iBAA2C,SAAA3c,EAAApF,GAAc,OAAAA,EAAA4vB,MAAAptB,EAAAugB,SAAAb,iBAA2C,IAAAyC,EAAA,SAAA3kB,GAAkB,SAAA2B,IAAa,IAAAA,EAAA,OAAA3B,KAAAmD,MAAA/C,KAAA4C,YAAA5C,KAA8C,OAAAuB,EAAAuwC,YAAA,CAAsB3W,IAAA,UAAAK,IAAA,UAAAJ,IAAA,SAAAK,IAAA,SAAAntB,OAAA,SAAAqtB,KAAA,UAAAvhB,WAAA,UAAyG7Y,EAAAwwC,iBAAA,2CAAAxwC,EAAAic,GAAA,GAAAjc,EAAAywC,gBAAA,IAAA7/B,IAAA5Q,EAAA0wC,aAAA,IAAAxT,IAAAl9B,EAA0H,OAAAJ,EAAAI,EAAA3B,GAAA2B,EAAAswC,MAAA,SAAAjyC,EAAAS,GAAoC,WAAAkB,GAAAswC,MAAAxxC,IAAuBkB,EAAA2wC,UAAA,SAAAtyC,GAAyB,OAAAA,EAAAsL,QAAA4E,QAAAhL,OAAA3C,IAAmCZ,EAAAU,UAAAkwC,sBAAA,SAAAvyC,GAA+CI,KAAAgyC,gBAAA79B,IAAAmP,EAAA1jB,EAAAgB,SAAAZ,KAAAoyC,gBAAAxyC,GAAAI,KAAAgyC,gBAAA9jC,IAAAoV,EAAA1jB,EAAAgB,MAAAhB,KAAqG2B,EAAAU,UAAAowC,yBAAA,SAAA9wC,IAAkDjB,EAAAiB,IAAAvB,KAAAiyC,aAAA99B,IAAAmP,EAAA/hB,EAAAX,SAAAW,EAAA8uB,GAAA7R,EAAA2R,YAAAtP,SAAA,GAAA5N,EAAA1R,IAA2F,SAAA+hB,EAAyC/hB,EAAzC4rB,UAAAxJ,YAAyC/jB,EAAAqC,UAAAowC,yBAAA7xC,KAAAR,KAAAuB,IAAA0R,EAAA1R,GAAA,GAAAvB,KAAAsyC,mBAAA/wC,GAAAvB,KAAAuyC,wBAAAhxC,KAAAooB,MAAApoB,EAAAooB,MAAAnL,EAAA2R,YAAAtP,OAAA7gB,KAAAiyC,aAAAO,IAAAlvB,EAAA/hB,EAAAX,SAAiMW,EAAAU,UAAAqwC,mBAAA,SAAA1yC,GAA4C,IAAA2B,EAAAvB,KAAAK,EAAAT,EAAAutB,UAAArrB,EAAAwhB,EAAA1jB,EAAAgB,MAAAO,EAAAd,EAAAqjB,WAAAxW,IAAA,SAAA3L,GAAoE,IAAAlB,EAAAijB,EAAA/hB,EAAAX,MAAAkB,EAAAP,EAAA2b,KAAyB,OAAOtc,KAAAP,EAAA6c,KAAApb,EAAA2wC,UAAA,MAAA7yC,EAAAgqB,gBAAAhqB,EAAAgqB,eAAA8oB,KAAA,SAAA9yC,GAAkF,OAAA0jB,EAAA1jB,IAAA0jB,EAAAxhB,QAAuB9B,KAAAwd,GAAAtY,KAAA,oCAAApD,EAAA,mGAAyGA,EAAA,uCAAmFX,EAAAuD,OAAA,GAAAvD,EAAAmO,QAAA,SAAA1P,GAAqC2B,EAAAic,GAAAtY,KAAA,kBAAAtF,EAAAgB,KAAA,KAAAW,EAAAoxC,SAAA/yC,EAAAsd,MAAA,OAAgEld,KAAA4yC,uBAAA,qBAAAzxC,IAAAnB,KAAA4yC,uBAAA,yBAAA5yC,KAAAwd,GAAAtY,KAAA,MAA8H3D,EAAAU,UAAAswC,wBAAA,SAAA3yC,GAAiD,IAAA2B,EAAA3B,EAAAutB,UAAA9sB,EAAAkB,EAAAmiB,WAAA5hB,EAAAP,EAAAoiB,WAAAxiB,EAAAmiB,EAAAxhB,GAAAyD,MAAA,KAAAT,OAAA,SAAAlF,GAAqF,eAAAA,EAAAsG,SAAwBV,KAAA,KAAApD,EAAAkhB,EAAAxhB,GAAA6vC,SAAA,QAAAnzB,EAAA5e,EAAAgB,KAAA2N,OAAoDvO,KAAAwd,GAAAtY,KAAA,sCAAAsZ,EAAA,cAAgEne,EAAAqE,OAAA,GAAA1E,KAAAwd,GAAAtY,KAAA,mQAAqPsZ,EAAA,wFAA0EA,EAAA,qDAA8G,SAAA8E,EAAAxhB,GAAA9B,KAAAwd,GAAAtY,KAAA,iBAAAoe,EAAAxhB,GAAA,MAAA0c,EAAA,KAAAxe,KAAAwd,GAAAtY,KAAA,KAAAsZ,EAAA,KAAAne,EAAAqE,OAAA,IAAA1E,KAAAwd,GAAAxd,KAAAwd,GAAA9Y,OAAA,IAAArE,EAAA6M,IAAA,SAAAtN,GAAoJ,8BAAAA,EAAAgB,KAAA2N,SAA4C/I,KAAA,OAAAxF,KAAAwd,GAAAxd,KAAAwd,GAAA9Y,OAAA,SAA4C,SAAA4e,EAAAxhB,IAAA9B,KAAAwd,GAAAtY,KAAA,yDAAmE/D,EAAA,qBAAAA,EAAA,iFAA+GA,EAAA,qBAAAiB,EAAA,2HAAgKpC,KAAAwd,GAAAtY,KAAA,2BAA8BsZ,EAAA,OAAAA,EAAA,SAAgCjd,EAAAU,UAAA2wC,uBAAA,SAAAhzC,EAAA2B,GAAkD,IAAAlB,EAAAL,KAAA8B,EAAA,SAAAlC,GAAyB,OAAA2B,EAAAuD,OAAA,SAAAvD,GAA4B,UAAA3B,EAAA0S,QAAAjS,EAAAsyC,SAAApxC,EAAA2b,QAAA3b,EAAAkxC,aAAwDzyC,KAAA6yC,4BAAAjzC,EAAA,gBAAAkC,EAAA,gBAAA9B,KAAA6yC,4BAAAjzC,EAAA,kBAAAkC,EAAA,6CAAA9B,KAAA6yC,4BAAAjzC,EAAA,iBAAAkC,EAAA,WAA0O,IAAAX,EAAAI,EAAAuD,OAAA,SAAAlF,GAA2B,OAAA2B,EAAA3B,EAAAsd,MAAA,2CAAAy0B,SAAAruB,EAAA/hB,KAAA3B,EAAA6yC,UAAwF,IAAAlxC,IAAQvB,KAAAwd,GAAAtY,KAAA,mCAA6C/D,EAAAmO,QAAA,SAAA/N,GAAyBlB,EAAAmd,GAAAtY,KAAA,oBAAA3D,EAAAX,KAAA,QAA6C,IAAAkB,EAAA,GAAAlC,EAAA2B,EAAAX,KAAA,OAAAP,EAAAsyC,SAAApxC,EAAA2b,MAAA,QAAoD3b,EAAAkxC,UAAApyC,EAAAmd,GAAAtY,KAAA,yBAAA7E,EAAAsyC,SAAApxC,EAAA2b,MAAA,mBAAwEpb,EAAA,mCAA+CzB,EAAAmd,GAAAtY,KAAA,WAAApD,EAAA,sBAA6CzB,EAAAmd,GAAAtY,KAAA,aAAwBlF,KAAAwd,GAAAtY,KAAA,mCAA+ClF,KAAAwd,GAAAtY,KAAA,wCAAqDlF,KAAAwd,GAAAtY,KAAA,uMAAoNlF,KAAA8yC,oBAAAlzC,EAAAuB,EAAA2D,OAAA,SAAAlF,GAAmD,OAAAe,EAAAf,EAAAsd,SAAiBld,KAAAwd,GAAAtY,KAAA,6CAA0DlF,KAAAwd,GAAAtY,KAAA,uCAAoDlF,KAAA8yC,oBAAAlzC,EAAAuB,EAAA2D,OAAA,SAAAlF,GAAmD,OAAAe,EAAAf,EAAAsd,SAAiBld,KAAAwd,GAAAtY,KAAA,6CAA4D3D,EAAAU,UAAA4wC,4BAAA,SAAAjzC,EAAA2B,EAAAlB,EAAAyB,GAA2D,IAAAX,EAAAnB,KAAW8B,EAAA4C,OAAA,IAAA1E,KAAAwd,GAAAtY,KAAA,QAAA3D,EAAA,yBAAAlB,EAAA,aAAyEyB,EAAAwN,QAAA,SAAAjP,GAAyB,IAAAyB,EAAAX,EAAAwxC,SAAAtyC,EAAA6c,MAAyB,aAAA3b,GAAA,UAAAO,EAAA,iBAAAA,EAAAX,EAAAqc,GAAAtY,KAAA,oBAAA7E,EAAAO,KAAA,gBAAyFhB,EAAAS,EAAAO,KAAA,yDAAwE,YAAAkB,EAAAX,EAAAqc,GAAAtY,KAAA,oBAAA7E,EAAAO,KAAA,eAA6DhB,EAAAS,EAAAO,KAAA,yDAAwE,CAAK,IAAAwB,EAAA,QAAAjB,EAAAwxC,SAAAtyC,EAAA6c,MAAA,YAA6C/b,EAAAqc,GAAAtY,KAAA,oBAAA7E,EAAAO,KAAA,eAA0ChB,EAAAS,EAAAO,KAAA,OAAAP,EAAAoyC,UAAA,IAAAnvB,EAAAjjB,EAAA6c,MAAA,QAAA9a,EAAA,iDAA0GjB,EAAAqc,GAAAtY,KAAA,oBAAA7E,EAAAO,KAAA,eAA+ChB,EAAAS,EAAAO,KAAA,OAAAkB,EAAA,kCAA8DzB,EAAAoyC,WAAAtxC,EAAAqc,GAAAtY,KAAA,gBAAA3D,EAAA,IAAAO,EAAA,SAAAzB,EAAAO,KAAA,aAAAW,EAAA,QAAoFvB,KAAAwd,GAAAtY,KAAA,gBAAA3D,EAAA,2BAA2DA,EAAAU,UAAA6wC,oBAAA,SAAAlzC,EAAA2B,GAA+C,IAAAlB,EAAAL,KAAWuB,EAAA+N,QAAA,SAAA/N,GAAsB,KAAAlB,EAAAsyC,SAAApxC,EAAA2b,QAAA7c,EAAAyxC,aAAA,CAA0C,IAAAhwC,EAAAP,EAAAkxC,UAAA,mBAAApyC,EAAAsyC,SAAApxC,EAAA2b,MAAA,SAAiE7c,EAAAmd,GAAAtY,KAAA,uBAAA3D,EAAAX,KAAA,IAAAkB,EAAA,kBAAkDlC,EAAA2B,EAAAX,KAAA,aAAA0iB,EAAA/hB,EAAA2b,MAAA,+EAA4H3b,EAAAU,UAAAmwC,gBAAA,SAAAxyC,GAAyC,IAAAe,EAAAf,GAAA,CAAU,IAAA2B,EAAAvB,KAAA2yC,SAAA/yC,GAAuBI,KAAAwd,GAAAtY,KAAA,mCAAA3D,EAAA,oGAAwGA,EAAA,iDAAoFvB,KAAA2yC,SAAA/yC,GAAA,8BAAgCI,KAAA2yC,SAAA/yC,GAAA,4DAA8FI,KAAA4yC,uBAAA,cAAA5yC,KAAA+yC,UAAAnzC,IAAAI,KAAAwd,GAAAtY,KAAA,SAA6F3D,EAAAU,UAAA0wC,SAAA,SAAA/yC,GAAkC,IAAAqwB,EAAArwB,GAAA,OAAAkB,EAAA8wC,WAAAC,MAAAjyC,GAAsC,IAAA2B,EAAA+hB,GAAA1jB,KAAAgB,MAAoB,OAAAhB,EAAA6yC,YAAAlxC,GAAA,IAAA3B,EAAAgqB,eAAA1c,IAAAoW,GAAA9d,KAAA,WAAAjE,GAAsEA,EAAAU,UAAA8wC,UAAA,SAAAnzC,GAAmC,IAAA2B,EAAA0uB,EAAArwB,KAAAI,KAAAgyC,gBAAA9wC,IAAAoiB,EAAA1jB,IAA4C,aAAA2B,EAAA,GAAAA,EAAAuoB,QAAAhlB,OAAA,SAAAlF,GAA+C,OAAAA,EAAA4vB,MAAAptB,EAAAugB,SAAAb,mBAA2C5U,IAAA,SAAAtN,GAAkB,OAAOgB,KAAA0iB,EAAA1jB,EAAAgB,MAAAsc,KAAAtd,EAAAsd,KAAAu1B,UAAApuB,EAAA9iB,EAAA3B,OAA+C2B,EAAAU,UAAA4vC,MAAA,SAAAjyC,GAA+B,IAAA2B,EAAAvB,KAAWA,KAAAwd,GAAA,CAAA9c,EAAAsyC,UAAAhzC,KAAAkgC,MAAAtgC,GAAmC,IAAAS,EAAAT,EAAAypB,WAAAnc,IAAA,SAAAtN,GAAmC,IAAAS,EAAAS,EAAA8wC,WAAAC,MAAAjyC,GAA4B,GAAAqwB,EAAArwB,GAAA,CAAS,IAAAkC,EAAAlC,EAAQ,GAAAS,IAAAsC,MAAA,EAAAtC,EAAAy1B,YAAA,MAA+Bh0B,EAAAgoB,QAAAhlB,OAAAE,GAAAkI,IAAA,SAAAtN,GAAwC,OAAAA,IAAS8yC,KAAA,SAAA9yC,GAAmB,aAAAA,EAAAsd,OAAoB,UAAAzZ,MAAA,kDAAoE,IAAAtC,EAAAI,EAAAoxC,SAAA7wC,GAAoBzB,GAAA,2EAAAc,EAAA,mCAAmFA,EAAA,2JAA+HA,EAAA,2CAAmEA,EAAA,6BAAAA,EAAA,6FAA6GA,EAAA,kTAAufW,EAA9HgoB,QAAAhlB,OAAAE,GAAAkI,IAAA,SAAAtN,GAA2C,IAAA2B,EAAA+hB,EAAA1jB,EAAAsd,MAAA7c,EAAAijB,EAAA1jB,EAAAgB,MAA4B,gBAAAW,EAAA,mBAAAlB,EAAA,MAAAA,EAAA,QAAuDmF,KAAA,iNAA0N,OAAAnF,IAAW,OAAAL,KAAAwd,GAAA5W,OAAAvG,GAAAmF,KAAA,OAAoCjE,EAAh+P,CAAm+Pod,EAAAs0B,aAAgB,SAAA5uB,EAAAzkB,EAAA2B,GAAgB,aAAA3B,EAAAgqB,gBAAAhqB,EAAAgqB,eAAA8oB,KAAA,SAAA9yC,GAAiE,OAAA0jB,EAAA1jB,EAAAgB,OAAA0iB,EAAA/hB,EAAA2b,QAA8B3b,EAAA2xC,WAAA,SAAAtzC,EAAA2B,EAAAlB,GAA6BkkB,EAAA2tB,UAAAtyC,GAAA0P,QAAA,SAAAxN,GAAmC,IAAAX,EAAAW,EAAA+W,KAAAjT,OAAA,EAAA9D,EAAA+W,KAAAvG,QAAA,OAAAq/B,SAAA,OAA4D/xC,EAAAuzC,QAAAC,OAAAtxC,EAAAkpB,cAAAprB,EAAAyzC,QAAAD,OAAAtxC,EAAAkpB,cAAAprB,EAAAsL,QAAA4E,QAAAlQ,EAAAsL,QAAA4E,QAAAhL,OAAA,SAAAlF,GAAyH,OAAAA,IAAAkC,IAAe,IAAAM,EAAAmiB,EAAAstB,MAAAjyC,EAAAkC,GAAmBX,GAAAI,EAAA,OAAAO,EAAAqT,eAAA/S,EAAA/B,GAAAT,EAAA2S,UAAAnQ,GAAA9B,EAAAwB,GAAA,SAAAA,EAAAqT,eAAA7U,EAAAwB,QAAyF,SAAAlC,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAS,SAAA1B,GAAcA,IAAAwwB,KAAA,UAAAxwB,IAAA0zC,eAAA,oBAAA1zC,IAAA2zC,eAAA,oBAAA3zC,IAAA4zC,YAAA,iBAAA5zC,IAAA6zC,KAAA,UAAA7zC,IAAA8zC,QAAA,cAAd,CAA6LnyC,EAAA6+B,UAAA7+B,EAAA6+B,QAAA,MAA4B,SAAAxgC,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAS,SAAA1B,GAAcA,IAAA+zC,OAAA,YAAA/zC,IAAAg0C,OAAA,YAAAh0C,IAAAi0C,GAAA,QAAd,CAA2EtyC,EAAA8+B,SAAA9+B,EAAA8+B,OAAA,MAA0B,SAAAzgC,EAAA2B,EAAAlB,GAAiB,aAAa,IAAAyB,EAAA9B,WAAA8zC,YAAA,SAAAl0C,EAAA2B,EAAAlB,EAAAyB,GAA+C,IAAAX,EAAAiB,EAAAQ,UAAA8B,OAAA8Z,EAAApc,EAAA,EAAAb,EAAA,OAAAO,IAAAf,OAAAgzC,yBAAAxyC,EAAAlB,GAAAyB,EAAmF,oBAAAkyC,SAAA,mBAAAA,QAAAC,SAAAz1B,EAAAw1B,QAAAC,SAAAr0C,EAAA2B,EAAAlB,EAAAyB,QAA6F,QAAAhB,EAAAlB,EAAA8E,OAAA,EAA0B5D,GAAA,EAAKA,KAAAK,EAAAvB,EAAAkB,MAAA0d,GAAApc,EAAA,EAAAjB,EAAAqd,GAAApc,EAAA,EAAAjB,EAAAI,EAAAlB,EAAAme,GAAArd,EAAAI,EAAAlB,KAAAme,GAAoD,OAAApc,EAAA,GAAAoc,GAAAzd,OAAAC,eAAAO,EAAAlB,EAAAme,MAA+Czd,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAW,IAAAH,EAAA,WAAiB,SAAAvB,KAAc,OAAAkC,EAAA,SAAkBlC,GAAjD,GAAyD2B,EAAA++B,SAAAn/B,EAAA,SAAAvB,GAAyBA,IAAAwwB,KAAA,UAAAxwB,IAAAs0C,gBAAA,qBAAAt0C,IAAAyyB,MAAA,WAAAzyB,IAAA65B,IAAA,SAAA75B,IAAAu0C,IAAA,SAAAv0C,IAAAw0C,QAAA,cAAAx0C,IAAAy0C,cAAA,oBAAAz0C,IAAA00C,cAAA,oBAAA10C,IAAA20C,cAAA,qBAAA30C,IAAA40C,cAAA,qBAAA50C,IAAA60C,cAAA,qBAAA70C,IAAA80C,aAAA,qBAAA90C,IAAA+0C,YAAA,oBAAA/0C,IAAAg1C,eAAA,uBAAAh1C,IAAAi1C,cAAA,sBAAAj1C,IAAAk1C,YAAA,qBAAAl1C,IAAAm1C,YAAA,qBAAAn1C,IAAAo1C,YAAA,qBAAAp1C,IAAAq1C,YAAA,sBAAAr1C,IAAAs1C,YAAA,sBAAAt1C,IAAAu1C,WAAA,qBAAAv1C,IAAAw1C,UAAA,qBAAAx1C,IAAAy1C,aAAA,wBAAAz1C,IAAA01C,YAAA,uBAAzB,CAAq1B/zC,EAAAg/B,gBAAAh/B,EAAAg/B,cAAA,MAAwC,SAAA3gC,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAW,IAAAQ,EAAAX,EAAAd,EAAA,GAAA+B,EAAA/B,EAAA,GAAAme,EAAAne,EAAA,GAA2B,SAAAS,EAAAlB,GAAc,OAAAA,GAAU,KAAAkC,EAAAyzC,KAAA,aAAyB,KAAAzzC,EAAA0zC,QAAA,gBAA+B,KAAA1zC,EAAA2zC,MAAA,cAA2B,eAAAllB,QAAA,OAA8B,SAAA5R,EAAA/e,GAAc,OAAAA,GAAU,KAAAkC,EAAAyzC,KAAA,OAAAh0C,EAAAm0C,WAAgC,KAAA5zC,EAAA0zC,QAAA,OAAAj0C,EAAAo0C,aAAqC,KAAA7zC,EAAA2zC,MAAA,OAAAl0C,EAAAq0C,UAAgC,eAAArlB,QAAA,OAA8BhvB,EAAAslC,eAAAroB,EAAAqoB,eAAAtlC,EAAAmwC,uBAAAlzB,EAAAkzB,uBAAA,SAAA9xC,GAAgGA,IAAA21C,KAAA,UAAA31C,IAAA41C,QAAA,aAAA51C,IAAA61C,MAAA,WAAhG,CAAiK3zC,EAAAP,EAAAs0C,qBAAAt0C,EAAAs0C,mBAAA,KAAiDt0C,EAAAu0C,2BAAAh1C,EAAAS,EAAAm0C,WAAA,QAAAn0C,EAAAo0C,aAAA,QAAAp0C,EAAAq0C,UAAA,QAAAr0C,EAAAw0C,YAAA,OAAAx0C,EAAAy0C,0BAAAr3B,EAAqJ,IAAAje,EAAA,WAAiB,SAAAd,IAAA2B,EAAAlB,GAAkBL,KAAAgjB,MAAA,KAAAhjB,KAAAi2C,aAAA,KAAAj2C,KAAAgH,KAAApH,EAAAI,KAAAk2C,SAAA30C,EAAAvB,KAAAm2C,QAAA91C,EAAkF,OAAAT,EAAA+B,OAAA,SAAAJ,EAAAlB,EAAAyB,EAAAM,EAAAoc,QAAoC,IAAA1c,MAAA,eAAAM,MAAA,eAAAoc,MAAA,MAA+D,IAAA1d,EAAAK,EAAAuwC,uBAAAnwC,GAAkC,aAAAO,IAAAhB,IAAA0O,QAAA,MAAiC1N,IAAA,MAAAM,IAAAtB,IAAA0O,QAAA,MAAgCpN,IAAA,MAAAoc,IAAA1d,IAAA0O,QAAA,MAAgCgP,IAAA,IAAA5e,EAAA2B,EAAAlB,EAAAS,IAAmBlB,EAAAw2C,WAAA,SAAA70C,EAAAlB,EAAAc,GAA8B,gBAAAd,MAAA,eAAAc,MAAA,MAAAvB,EAAA+B,OAAAJ,EAAAO,EAAAyzC,KAAAl1C,EAAAc,IAAwEvB,EAAAy2C,cAAA,SAAA90C,EAAAlB,EAAAc,GAAiC,gBAAAd,MAAA,eAAAc,MAAA,MAAAvB,EAAA+B,OAAAJ,EAAAO,EAAA0zC,QAAAn1C,EAAAc,IAA2EvB,EAAA02C,YAAA,SAAA/0C,EAAAlB,EAAAc,GAA+B,gBAAAd,MAAA,eAAAc,MAAA,MAAAvB,EAAA+B,OAAAJ,EAAAO,EAAA2zC,MAAAp1C,EAAAc,IAAyEvB,EAAAqC,UAAAs0C,UAAA,SAAA32C,GAAmC,OAAAI,KAAAgjB,MAAApjB,EAAAI,MAAyBJ,EAAAqC,UAAAu0C,iBAAA,SAAA52C,GAA0C,OAAAI,KAAAi2C,aAAAr2C,EAAAI,MAAgCJ,EAAAqC,UAAA0Y,SAAA,WAAiC,OAAA3a,KAAAgjB,MAAAliB,EAAAd,KAAAk2C,UAAA,IAAAl2C,KAAAgH,KAAA2T,SAAA,UAAA3a,KAAAm2C,QAAA,QAAAn2C,KAAAgjB,MAAA+H,OAAA5V,eAAA,IAAAnV,KAAAgjB,MAAAtF,KAAA/C,SAAA,QAAA3a,KAAAgjB,MAAAyzB,OAAA97B,SAAA,IAAA7Z,EAAAd,KAAAk2C,UAAA,IAAAl2C,KAAAgH,KAAA2T,SAAA,SAAA3a,KAAAm2C,SAA4Pv2C,EAA3kC,GAAilC,SAAAqT,EAAArT,EAAAS,QAAgB,IAAAA,OAAA,GAAmB,QAAAyB,EAAAlC,EAAAmrB,OAAAlS,KAAA1X,EAAAW,EAAA4C,OAAA8Z,EAAA5e,EAAAwG,MAAAtF,EAAAlB,EAAAyG,IAAqDmY,EAAA,IAAApc,EAAAklC,YAAAxlC,EAAAmF,WAAAuX,EAAA,KAAuCA,IAAK,KAAK1d,EAAAK,IAAAiB,EAAAklC,YAAAxlC,EAAAmF,WAAAnG,KAAqCA,IAAK,QAAA6d,EAAA,OAAA7c,EAAAgS,UAAA0K,EAAA1d,GAAA,OAAyC0d,EAAA5e,EAAAwG,OAAUuY,EAAAzZ,KAAA,KAAAsZ,IAAiB,GAAAne,GAAAse,EAAAzZ,KAAA3D,EAAAq0C,WAAAh2C,EAAAwG,OAAAxG,EAAAyG,IAAAsY,EAAAzZ,KAAA,UAAqD,KAAUsZ,IAAA5e,EAAAyG,KAAU,CAAE,GAAAjE,EAAAklC,YAAAxlC,EAAAmF,WAAAuX,IAAA,CAAmCG,EAAAzZ,KAAAsZ,GAAA5e,EAAAwG,MAAA,WAA6B,MAAMuY,EAAAzZ,KAAA,KAAY,OAAA7E,GAAAse,EAAAzZ,KAAA3D,EAAAw0C,aAAAp3B,EAAAnZ,KAAA,IAA2CjE,EAAAm1C,kBAAAh2C,EAAAa,EAAAo1C,wBAAA,SAAA/2C,EAAAS,EAAAyB,QAAgE,IAAAzB,OAAA,YAAAyB,OAAA,GAAsC,IAAAX,EAAA,GAAS,GAAAd,GAAAc,EAAA+D,KAAAyZ,EAAA/e,EAAAs2C,WAAA/0C,EAAA+D,KAAApE,EAAAlB,EAAAs2C,WAAA71C,GAAAc,EAAA+D,KAAA3D,EAAAw0C,aAAA50C,EAAA+D,KAAAtF,EAAAoH,KAAA,iBAAA7F,EAAA+D,KAAAtF,EAAAoH,KAAA2T,SAAA,KAAAxZ,EAAA+D,KAAA,MAAA/D,EAAA+D,KAAAtF,EAAAu2C,SAAAv2C,EAAAojB,MAAA,CAA8K,IAAA5gB,EAAAxC,EAAAojB,MAAclhB,IAAAX,EAAA+D,KAAA,MAAA/D,EAAA+D,KAAA+N,EAAA7Q,EAAA/B,KAAAc,EAAA+D,KAAA,MAAA/D,EAAA+D,KAAA,QAAA/D,EAAA+D,KAAA9C,EAAA2oB,OAAA5V,gBAAAhU,EAAA+D,KAAA,KAAA/D,EAAA+D,KAAA9C,EAAAsb,KAAA/C,SAAA,KAAAxZ,EAAA+D,KAAA,KAAA/D,EAAA+D,KAAA9C,EAAAq0C,OAAA97B,SAAA,KAAAxZ,EAAA+D,KAAA,KAA2L,IAAAsZ,EAAA5e,EAAAq2C,aAAqBz3B,IAAA1c,IAAAX,EAAA+D,KAAA,MAAA/D,EAAA+D,KAAA+N,EAAAuL,EAAAne,KAAAc,EAAA+D,KAAA,MAAA/D,EAAA+D,KAAA,QAAA/D,EAAA+D,KAAA9C,EAAA2oB,OAAA5V,gBAAAhU,EAAA+D,KAAA,KAAA/D,EAAA+D,KAAA9C,EAAAsb,KAAA/C,SAAA,KAAAxZ,EAAA+D,KAAA,KAAA/D,EAAA+D,KAAA9C,EAAAq0C,OAAA97B,SAAA,KAAAxZ,EAAA+D,KAAA,MAAgM,OAAA/D,EAAAqE,KAAA,KAAkBjE,EAAAq1C,wBAAA3jC,EAA6B,IAAA9Q,EAAA,WAAiB,SAAAvC,UAAc,IAAAA,MAAA,MAAAI,KAAA6M,YAAAjN,GAAA,IAAA8C,MAAmD,OAAA9C,EAAAqC,UAAA40C,eAAA,SAAAj3C,EAAA2B,EAAAlB,EAAAyB,EAAAX,EAAAiB,EAAAoc,QAA0D,IAAArd,MAAA,eAAAiB,MAAA,eAAAoc,MAAA,MAA+D,IAAA1d,EAAAJ,EAAAiB,OAAA/B,EAAA2B,EAAAJ,EAAAiB,EAAAoc,GAAA+3B,UAAAl2C,GAAuCyB,IAAAhB,EAAAm1C,aAAAn0C,GAAA9B,KAAA6M,YAAA3H,KAAApE,IAA+ClB,EAAAqC,UAAA60C,KAAA,SAAAl3C,EAAA2B,EAAAlB,EAAAc,EAAAiB,QAAsC,IAAA/B,MAAA,eAAAc,MAAA,eAAAiB,MAAA,MAAApC,KAAA62C,eAAAj3C,EAAAkC,EAAAyzC,KAAAh0C,EAAA,KAAAlB,EAAAc,EAAAiB,IAA0GxC,EAAAqC,UAAA80C,YAAA,SAAAn3C,EAAA2B,EAAAlB,EAAAc,EAAAiB,EAAAoc,QAA+C,IAAArd,MAAA,eAAAiB,MAAA,eAAAoc,MAAA,MAAAxe,KAAA62C,eAAAj3C,EAAAkC,EAAAyzC,KAAAh0C,EAAAlB,EAAAc,EAAAiB,EAAAoc,IAAuG5e,EAAAqC,UAAA+0C,QAAA,SAAAp3C,EAAA2B,EAAAlB,EAAAc,EAAAiB,QAAyC,IAAA/B,MAAA,eAAAc,MAAA,eAAAiB,MAAA,MAAApC,KAAA62C,eAAAj3C,EAAAkC,EAAA0zC,QAAAj0C,EAAA,KAAAlB,EAAAc,EAAAiB,IAA6GxC,EAAAqC,UAAAg1C,eAAA,SAAAr3C,EAAA2B,EAAAlB,EAAAc,EAAAiB,EAAAoc,QAAkD,IAAArd,MAAA,eAAAiB,MAAA,eAAAoc,MAAA,MAAAxe,KAAA62C,eAAAj3C,EAAAkC,EAAA0zC,QAAAj0C,EAAAlB,EAAAc,EAAAiB,EAAAoc,IAA0G5e,EAAAqC,UAAA6K,MAAA,SAAAlN,EAAA2B,EAAAlB,EAAAc,EAAAiB,QAAuC,IAAA/B,MAAA,eAAAc,MAAA,eAAAiB,MAAA,MAAApC,KAAA62C,eAAAj3C,EAAAkC,EAAA2zC,MAAAl0C,EAAA,KAAAlB,EAAAc,EAAAiB,IAA2GxC,EAAAqC,UAAAi1C,aAAA,SAAAt3C,EAAA2B,EAAAlB,EAAAc,EAAAiB,EAAAoc,QAAgD,IAAArd,MAAA,eAAAiB,MAAA,eAAAoc,MAAA,MAAAxe,KAAA62C,eAAAj3C,EAAAkC,EAAA2zC,MAAAl0C,EAAAlB,EAAAc,EAAAiB,EAAAoc,IAAwG5e,EAAnqC,GAAyqC2B,EAAAwoC,kBAAA5nC,GAAsB,SAAAvC,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAASC,EAAA41C,SAAA,SAAAv3C,EAAA2B,GAA2B,OAAAgvB,OAAAhvB,GAAA,GAAAA,EAAA,IAAA61C,OAAAC,QAAAz3C,EAAAmpC,QAAAuO,QAAAzO,QAAAtnC,KAAAg2C,WAAkFh2C,EAAAi2C,UAAA,SAAA53C,EAAA2B,EAAAlB,GAA6B,OAAAkwB,OAAAhvB,GAAA,GAAAA,EAAA,IAAAlB,EAAAo3C,OAAA73C,EAAAmpC,QAAAuO,QAAAzO,QAAAtnC,KAAA81C,QAAAz3C,EAAA83C,QAAA3O,QAAAuO,QAAAzO,QAAAtnC,QAAmH,SAAA3B,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAS,SAAA1B,GAAcA,IAAAkgB,KAAA,UAAAlgB,IAAA+3C,SAAA,eAAA/3C,IAAAg4C,eAAA,qBAAAh4C,IAAAi4C,cAAA,sBAAAj4C,IAAAk4C,mBAAA,2BAAAl4C,IAAAm4C,SAAA,gBAAAn4C,IAAAo4C,MAAA,YAAAp4C,IAAAq4C,iBAAA,wBAAAr4C,IAAAs4C,OAAA,eAAAt4C,IAAAu4C,OAAA,eAAAv4C,IAAAw4C,QAAA,gBAAAx4C,IAAAy4C,QAAA,gBAAAz4C,IAAA04C,gBAAA,wBAAA14C,IAAA24C,eAAA,uBAAA34C,IAAA44C,cAAA,sBAAA54C,IAAA64C,YAAA,oBAAA74C,IAAA84C,iBAAA,yBAAA94C,IAAA+4C,UAAA,kBAAA/4C,IAAAg5C,UAAA,kBAAAh5C,IAAAi5C,eAAA,uBAAAj5C,IAAAk5C,mBAAA,2BAAAl5C,IAAAm5C,iBAAA,0BAAAn5C,IAAAo5C,kBAAA,0BAAAp5C,IAAAq5C,MAAA,cAAAr5C,IAAAqT,EAAA,QAAArT,IAAAs5C,GAAA,SAAAt5C,IAAAu5C,GAAA,SAAAv5C,IAAAw5C,GAAA,SAAAx5C,IAAAy5C,GAAA,SAAAz5C,IAAA05C,GAAA,SAAA15C,IAAA25C,GAAA,SAAA35C,IAAA45C,GAAA,SAAA55C,IAAA65C,GAAA,SAAA75C,IAAA85C,GAAA,SAAA95C,IAAA+5C,GAAA,SAAA/5C,IAAA4e,EAAA,QAAA5e,IAAA0lB,EAAA,QAAA1lB,IAAAc,EAAA,QAAAd,IAAAe,EAAA,SAAAf,MAAA,SAAAA,IAAAoF,EAAA,SAAApF,IAAAgI,EAAA,SAAAhI,IAAA0jB,EAAA,SAAA1jB,IAAAS,EAAA,SAAAT,IAAAgT,EAAA,SAAAhT,IAAA8S,EAAA,SAAA9S,IAAAU,EAAA,SAAAV,IAAAa,EAAA,SAAAb,IAAAkC,EAAA,SAAAlC,IAAAkB,EAAA,SAAAlB,IAAAuC,EAAA,SAAAvC,IAAAspB,EAAA,SAAAtpB,IAAAuB,EAAA,SAAAvB,IAAAwC,EAAA,SAAAxC,IAAA2B,EAAA,SAAA3B,IAAA+e,EAAA,SAAA/e,IAAAykB,EAAA,SAAAzkB,IAAAqnB,EAAA,SAAArnB,IAAAymB,EAAA,SAAAzmB,IAAA8kB,EAAA,SAAA9kB,IAAA+oB,EAAA,SAAA/oB,IAAA2kB,EAAA,QAAA3kB,IAAAgoB,EAAA,QAAAhoB,IAAAomB,EAAA,QAAApmB,IAAAgnB,EAAA,QAAAhnB,IAAAqwB,EAAA,QAAArwB,IAAA0nB,EAAA,QAAA1nB,IAAAsoB,EAAA,QAAAtoB,IAAAkoB,EAAA,QAAAloB,IAAA+lB,EAAA,QAAA/lB,IAAAq1B,EAAA,QAAAr1B,IAAA8nB,EAAA,QAAA9nB,IAAAimB,EAAA,QAAAjmB,IAAAunB,EAAA,QAAAvnB,IAAAmyB,EAAA,QAAAnyB,IAAAumB,EAAA,QAAAvmB,IAAA8mB,EAAA,QAAA9mB,IAAA4mB,EAAA,QAAA5mB,IAAAqlB,EAAA,QAAArlB,IAAAklB,EAAA,QAAAllB,IAAAiyB,EAAA,QAAAjyB,IAAAknB,EAAA,QAAAlnB,IAAA6oB,EAAA,QAAA7oB,IAAAmpB,EAAA,QAAAnpB,IAAAipB,EAAA,QAAAjpB,IAAA2oB,EAAA,QAAA3oB,IAAAo1B,EAAA,QAAAp1B,IAAAokC,UAAA,gBAAApkC,IAAA4jC,SAAA,eAAA5jC,IAAA0lC,GAAA,SAAA1lC,IAAAg6C,UAAA,gBAAAh6C,IAAAi6C,SAAA,eAAAj6C,IAAAqkC,IAAA,WAAArkC,IAAAskC,MAAA,YAAAtkC,IAAAwiC,WAAA,kBAAAxiC,IAAA4iC,aAAA,mBAAA5iC,IAAA0iC,WAAA,iBAAA1iC,IAAA4kC,MAAA,YAAA5kC,IAAA2f,MAAA,YAAA3f,IAAAk6C,OAAA,aAAAl6C,IAAA6iC,IAAA,UAAA7iC,IAAAm6C,YAAA,kBAAAn6C,IAAA6kC,OAAA,aAAA7kC,IAAAukC,YAAA,kBAAAvkC,IAAAijC,YAAA,kBAAAjjC,IAAAo6C,KAAA,WAAAp6C,IAAAgjC,SAAA,eAAAhjC,IAAA0jC,MAAA,YAAA1jC,IAAAuiC,UAAA,iBAAAviC,IAAA2iC,YAAA,kBAAA3iC,IAAAyiC,UAAA,gBAAAziC,IAAA8jC,QAAA,cAAA9jC,IAAAyjC,KAAA,WAAAzjC,IAAA2kC,SAAA,eAAA3kC,IAAA+iC,UAAA,gBAAA/iC,IAAAq6C,YAAA,kBAAAr6C,IAAA6jC,MAAA,YAAA7jC,IAAAwkC,MAAA,aAAAxkC,IAAAs6C,UAAA,eAAAt6C,IAAAu6C,SAAA,eAAAv6C,IAAAw6C,cAAA,uBAAAx6C,IAAAy6C,IAAA,SAAAz6C,IAAA06C,YAAA,kBAAd,CAAkuF/4C,EAAAg5C,WAAAh5C,EAAAg5C,SAAA,KAA2Bh5C,EAAA+lC,YAAA,SAAA1nC,GAA6B,OAAAA,GAAU,6CAA6C,mBAAkB2B,EAAA4lC,aAAA,SAAAvnC,GAA4B,OAAAA,GAAU,8GAA8G,eAAAA,GAAA,MAAAA,GAAA,OAAiC2B,EAAAqlC,eAAA,SAAAhnC,GAA8B,OAAAA,GAAA,IAAAA,GAAA,IAAoB2B,EAAAmnC,aAAA,SAAA9oC,GAA4B,OAAAA,GAAA,IAAAA,GAAA,IAAoB2B,EAAAylC,kBAAA,SAAApnC,GAAiC,OAAAA,GAAA,IAAAA,GAAA,KAAAA,GAAA,IAAAA,GAAA,QAAAA,GAAA,IAAAA,KAAA,QAAA2B,EAAA3B,GAAA,GAAA2B,EAAA,QAAAa,EAAAb,EAAAO,GAAuF,IAAAP,GAAMA,EAAA0lC,mBAAA,SAAArnC,GAAkC,OAAAA,GAAA,IAAAA,GAAA,KAAqB2B,EAAA2lC,iBAAA,SAAAtnC,GAAgC,OAAAA,GAAA,IAAAA,GAAA,KAAAA,GAAA,IAAAA,GAAA,IAAAA,GAAA,IAAAA,GAAA,QAAAA,GAAA,IAAAA,KAAA,QAAA2B,EAAA3B,GAAA,GAAA2B,EAAA,QAAAa,EAAAb,EAAAJ,GAAqG,IAAAI,GAAO,IAAAO,EAAA,yyHAAAX,EAAA,+2IAAgqQ,SAAAiB,EAAAxC,EAAA2B,GAAgB,GAAA3B,EAAA2B,EAAA,YAAmB,QAAAlB,EAAAyB,EAAAX,EAAA,EAAAiB,EAAAb,EAAAmD,OAA2BvD,EAAA,EAAAiB,GAAM,CAAE,GAAA/B,EAAAc,GAAAiB,EAAAjB,GAAA,IAAAW,EAAAP,EAAAlB,GAAA,EAAAA,KAAAT,MAAA2B,EAAAlB,EAAA,YAAqDT,EAAAkC,EAAAM,EAAA/B,EAAAc,EAAAd,EAAA,EAAc,WAAU,SAAAT,EAAA2B,EAAAlB,GAAiB,aAAa,IAAAyB,EAAA9B,WAAAw6C,UAAA,SAAA56C,GAAuC,IAAA2B,EAAA,mBAAAH,QAAAxB,EAAAwB,OAAA6L,UAAA5M,EAAA,EAAwD,OAAAkB,IAAAf,KAAAZ,GAAA,CAAoBsjB,KAAA,WAAgB,OAAAtjB,GAAAS,GAAAT,EAAA8E,SAAA9E,OAAA,IAAmC0B,MAAA1B,KAAAS,KAAAo6C,MAAA76C,MAA2BuB,EAAAnB,WAAA06C,QAAA,SAAA96C,EAAA2B,GAAoC,IAAAlB,EAAA,mBAAAe,QAAAxB,EAAAwB,OAAA6L,UAAoD,IAAA5M,EAAA,OAAAT,EAAe,IAAAkC,EAAAX,EAAAiB,EAAA/B,EAAAG,KAAAZ,GAAA4e,EAAA,GAAyB,IAAI,WAAK,IAAAjd,QAAA,MAAAO,EAAAM,EAAA8gB,QAAAu3B,MAAyCj8B,EAAAtZ,KAAApD,EAAAR,OAAiB,MAAA1B,GAASuB,EAAA,CAAG2L,MAAAlN,GAAS,QAAQ,IAAIkC,MAAA24C,OAAAp6C,EAAA+B,EAAAu4C,SAAAt6C,EAAAG,KAAA4B,GAAoC,QAAQ,GAAAjB,EAAA,MAAAA,EAAA2L,OAAoB,OAAA0R,GAAUzd,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAASC,EAAAq5C,UAAA,SAAAh7C,GAA0B,YAAAA,MAAA,MAAAA,EAAA,CAA2B,QAAA2B,EAAA,IAAAmB,MAAA9C,EAAA8E,QAAArE,EAAA,EAAAyB,EAAAlC,EAAA8E,OAA6CrE,EAAAyB,IAAIzB,EAAAw6C,UAAAt5C,EAAAlB,GAAAT,EAAAS,IAAyB,OAAAkB,EAAS,WAAAmB,OAAiBnB,EAAAu5C,QAAA,SAAAl7C,GAAuB,IAAA2B,EAAAlB,EAAQ,YAAAT,MAAA,MAAAA,EAAA,CAA2B,IAAAuB,EAAA,IAAAs9B,IAAc,IAAI,QAAAr8B,EAAAN,EAAAlC,GAAA4e,EAAApc,EAAA8gB,QAA0B1E,EAAAi8B,KAAQj8B,EAAApc,EAAA8gB,OAAA,CAAY,IAAApiB,EAAA0d,EAAAld,MAAcH,EAAAqxC,IAAA1xC,IAAU,MAAAlB,GAAS2B,EAAA,CAAGuL,MAAAlN,GAAS,QAAQ,IAAI4e,MAAAi8B,OAAAp6C,EAAA+B,EAAAu4C,SAAAt6C,EAAAG,KAAA4B,GAAoC,QAAQ,GAAAb,EAAA,MAAAA,EAAAuL,OAAoB,OAAA3L,EAAS,WAAAs9B,KAAel9B,EAAAw5C,QAAA,SAAAn7C,EAAA2B,GAAyB,IAAAlB,EAAA+B,EAAAoc,EAAA1d,EAAA6d,EAAAje,OAAgB,IAAAd,MAAA,eAAA2B,MAAA,MAA0C,IAAA0R,EAAA,IAAAd,IAAc,GAAAvS,EAAA,CAAM,IAAI,QAAAuC,EAAAL,EAAAlC,GAAA0jB,EAAAnhB,EAAA+gB,QAA0BI,EAAAm3B,KAAQn3B,EAAAnhB,EAAA+gB,OAAA,CAAY,IAAA5iB,EAAAa,EAAAmiB,EAAAhiB,MAAA,GAAAX,EAAAL,EAAA,GAAA2vB,EAAA3vB,EAAA,GAAiC2S,EAAA/E,IAAAvN,EAAAsvB,IAAY,MAAArwB,GAASS,EAAA,CAAGyM,MAAAlN,GAAS,QAAQ,IAAI0jB,MAAAm3B,OAAAr4C,EAAAD,EAAAw4C,SAAAv4C,EAAA5B,KAAA2B,GAAoC,QAAQ,GAAA9B,EAAA,MAAAA,EAAAyM,OAAoB,GAAAvL,EAAA,IAAS,QAAAyD,EAAAlD,EAAAP,GAAAgjB,EAAAvf,EAAAke,QAA0BqB,EAAAk2B,KAAQl2B,EAAAvf,EAAAke,OAAA,CAAY,IAAAmB,EAAAljB,EAAAojB,EAAAjjB,MAAA,GAAmBX,EAAA0jB,EAAA,GAAA4L,EAAA5L,EAAA,GAAcpR,EAAA/E,IAAAvN,EAAAsvB,IAAY,MAAArwB,GAAS4e,EAAA,CAAG1R,MAAAlN,GAAS,QAAQ,IAAI2kB,MAAAk2B,OAAA35C,EAAAkE,EAAA21C,SAAA75C,EAAAN,KAAAwE,GAAoC,QAAQ,GAAAwZ,EAAA,MAAAA,EAAA1R,aAAqB,GAAAvL,EAAA,IAAc,QAAAd,EAAAqB,EAAAP,GAAAswB,EAAApxB,EAAAyiB,QAA0B2O,EAAA4oB,KAAQ5oB,EAAApxB,EAAAyiB,OAAA,CAAY,IAAA6O,EAAA5wB,EAAA0wB,EAAAvwB,MAAA,GAAmBX,EAAAoxB,EAAA,GAAA9B,EAAA8B,EAAA,GAAc9e,EAAA/E,IAAAvN,EAAAsvB,IAAY,MAAArwB,GAAS+e,EAAA,CAAG7R,MAAAlN,GAAS,QAAQ,IAAIiyB,MAAA4oB,OAAA/5C,EAAAD,EAAAk6C,SAAAj6C,EAAAF,KAAAC,GAAoC,QAAQ,GAAAke,EAAA,MAAAA,EAAA7R,OAAoB,OAAAmG,IAAU,SAAArT,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAW,IAAAQ,EAAAzB,EAAA,GAAAc,EAAA,GAAgB,SAAAiB,EAAAxC,GAAc,QAAA2B,EAAAlB,EAAA,EAAAyB,EAAAlC,EAAA8E,OAAyBrE,EAAA,EAAAyB,GAAA,IAAAlC,EAAAqH,WAAA5G,IAAAT,EAAAqH,WAAA5G,EAAA,IAAAc,GAAiDd,GAAA,EAAM,KAAAA,EAAA,GAAAyB,EAAAlC,EAAA8E,UAAA9E,IAAAkU,UAAAzT,EAAAyB,MAAAzB,IAAA,GAAqDA,EAAA,EAAAyB,GAAM,CAAE,GAAAP,GAAA,EAAA3B,EAAAqH,WAAA5G,IAAAc,GAAA,IAAAvB,EAAAqH,WAAA5G,EAAA,IAAmD,IAAAkB,EAAAlB,EAAA,GAAAyB,IAAAzB,EAAA,EAAAyB,GAAAlC,EAAAqH,WAAA5G,EAAA,IAAAc,EAAA,CAA4CvB,EAAA2B,EAAA3B,EAAAkU,UAAA,EAAAzT,GAAAT,EAAAkU,UAAA,EAAAzT,GAAAT,EAAAkU,UAAAzT,EAAA,GAAAyB,GAAA,EAA4D,SAAS,IAAAP,EAAAlB,EAAA,GAAAyB,IAAA,IAAAlC,EAAAqH,WAAA5G,EAAA,IAAAA,EAAA,EAAAyB,GAAA,IAAAlC,EAAAqH,WAAA5G,EAAA,IAAAT,EAAAqH,WAAA5G,EAAA,IAAAc,EAAA,CAA0F,QAAAiB,EAAA/B,IAAY+B,GAAA,GAAO,GAAAxC,EAAAqH,WAAA7E,IAAAjB,EAAA,CAAwBd,EAAA+B,GAAA,OAAAxC,EAAAqH,WAAA7E,EAAA,QAAAxC,EAAAqH,WAAA7E,EAAA,KAAAxC,EAAA2B,EAAA3B,EAAAkU,UAAA,EAAA1R,GAAAxC,EAAAkU,UAAA,EAAA1R,GAAAxC,EAAAkU,UAAAzT,EAAA,GAAAyB,GAAAzB,EAAA,EAAA+B,EAAA/B,EAAA+B,EAAA,GAA8H,MAAM,GAAAA,EAAA,GAAA/B,EAAA,OAAAA,GAAA,IAAAT,EAAAqH,WAAA,QAAArH,EAAAqH,WAAA,KAA+DnF,GAAAlC,IAAAkU,UAAAzT,EAAA,IAAAqE,OAA8B,WAAWrE,IAAI,OAAAyB,EAAA,EAAAlC,EAAA,IAAiB,SAAA4e,EAAA5e,GAAc,IAAA2B,EAAA3B,EAAA8E,OAAe,GAAAnD,GAAA,GAAS,MAAAA,EAAA,UAAkB,GAAA3B,EAAAqH,WAAA,IAAA9F,EAAA,OAAAvB,EAA+B,OAAK2B,EAAA,GAAM,GAAA3B,EAAAqH,WAAA1F,IAAAJ,EAAA,OAAAvB,EAAAkU,UAAA,EAAAvS,GAA+C,UAAUA,EAAAspB,cAAAzoB,EAAAb,EAAAupB,YAAA,SAAAlrB,EAAA2B,GAA8C,OAAA3B,EAAAgU,WAAA,QAAAhU,EAAAwC,EAAAoc,EAAAjd,GAAAO,EAAAi0B,eAAAn2B,IAAyD2B,EAAAwF,QAAAyX,GAAa,SAAA5e,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAA4CC,EAAA8b,OAAA,SAAAzd,EAAA2B,GAAuB,KAAKA,GAAA,GAAK3B,EAAAsF,KAAlE,YAAkE3D,GAAA,EAAgBA,GAAA,IAAA3B,EAAAsF,KAAlF,QAAkF3D,GAAA,GAAAA,GAAA3B,EAAAsF,KAAlF,QAAuH,SAAAtF,EAAA2B,EAAAlB,GAAiB,aAAa,SAAAyB,EAAAlC,EAAA2B,GAAgB,OAAA3B,EAAA2B,GAAA3B,EAAA2B,EAAA,MAAA3B,EAAA2B,EAAA,OAAA3B,EAAA2B,EAAA,OAA4C,SAAAJ,EAAAvB,EAAA2B,EAAAlB,GAAkBkB,EAAAlB,GAAAT,EAAA2B,EAAAlB,EAAA,GAAAT,IAAA,EAAA2B,EAAAlB,EAAA,GAAAT,IAAA,GAAA2B,EAAAlB,EAAA,GAAAT,IAAA,GAAgD,SAAAwC,EAAAxC,EAAA2B,GAAgB,IAAAlB,EAAAyB,EAAAlC,EAAA2B,GAAAJ,EAAAW,EAAAlC,EAAA2B,EAAA,GAAwB,OAAAsnC,QAAAxoC,EAAAc,GAAoBJ,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAASC,EAAAy5C,OAAA,SAAAp7C,EAAA2B,GAAyB,OAAA3B,EAAA2B,IAAYA,EAAA05C,QAAA,SAAAr7C,EAAA2B,EAAAlB,GAA2BkB,EAAAlB,GAAAT,GAAO2B,EAAA25C,QAAA,SAAAt7C,EAAA2B,GAAyB,OAAA3B,EAAA2B,GAAA3B,EAAA2B,EAAA,OAAsBA,EAAA45C,SAAA,SAAAv7C,EAAA2B,EAAAlB,GAA4BkB,EAAAlB,GAAAT,EAAA2B,EAAAlB,EAAA,GAAAT,IAAA,GAAoB2B,EAAA65C,QAAAt5C,EAAAP,EAAA85C,SAAAl6C,EAAAI,EAAA+5C,QAAAl5C,EAAAb,EAAAg6C,SAAA,SAAA37C,EAAA2B,EAAAlB,GAAiEc,EAAAuoC,QAAA9pC,GAAA2B,EAAAlB,GAAAc,EAAAwoC,SAAA/pC,GAAA2B,EAAAlB,EAAA,IAAuCkB,EAAAi6C,QAAA,SAAA57C,EAAA2B,GAAyB,OAAAk6C,WAAA35C,EAAAlC,EAAA2B,KAA0BA,EAAAm6C,SAAA,SAAA97C,EAAA2B,EAAAlB,GAA4Bc,EAAAw6C,WAAA/7C,GAAA2B,EAAAlB,IAAqBkB,EAAAq6C,QAAA,SAAAh8C,EAAA2B,GAAyB,OAAAs6C,WAAAz5C,EAAAxC,EAAA2B,KAA0BA,EAAAu6C,SAAA,SAAAl8C,EAAA2B,EAAAlB,GAA4B,IAAAyB,EAAAi6C,WAAAn8C,GAAoBuB,EAAAuoC,QAAA5nC,GAAAP,EAAAlB,GAAAc,EAAAwoC,SAAA7nC,GAAAP,EAAAlB,EAAA,KAAwC,SAAAT,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAW,IAAAQ,EAAAzB,EAAA,GAAWA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAkB,IAAAc,EAAAd,EAAA,GAAA+B,EAAA/B,EAAA,GAAAme,EAAAne,EAAA,GAAAS,EAAA,WAAsC,SAAAlB,IAAaI,KAAAwd,GAAA,GAAAxd,KAAAg8C,YAAA,EAA8B,OAAAp8C,EAAAiyC,MAAA,SAAAtwC,GAA2B,IAAAlB,EAAA,IAAAT,EAAY,OAAAS,EAAA47C,UAAA16C,GAAAlB,EAAAypC,UAAiClqC,EAAAqC,UAAAg6C,UAAA,SAAAr8C,GAAmC,OAAAA,EAAA4vB,MAAe,KAAA1tB,EAAA6gB,SAAA/D,OAAA5e,KAAAk8C,YAAAt8C,GAA2C,MAAM,KAAAkC,EAAA6gB,SAAA9D,UAAA7e,KAAAm8C,mBAAAv8C,GAAqD,MAAM,KAAAkC,EAAA6gB,SAAA7D,aAAA9e,KAAAo8C,sBAAAx8C,GAA2D,MAAM,KAAAkC,EAAA6gB,SAAA3D,cAAAhf,KAAAq8C,mBAAAz8C,GAAyD,MAAM,KAAAkC,EAAA6gB,SAAAlD,MAAA,KAAA3d,EAAA6gB,SAAA7C,KAAA,KAAAhe,EAAA6gB,SAAAzC,MAAA,KAAApe,EAAA6gB,SAAAxC,KAAA,KAAAre,EAAA6gB,SAAAvC,KAAA,KAAAte,EAAA6gB,SAAAtC,YAAA,KAAAve,EAAA6gB,SAAAzD,WAAAlf,KAAAs8C,0BAAA18C,GAAoM,MAAM,KAAAkC,EAAA6gB,SAAAxD,UAAAnf,KAAAu8C,yBAAA38C,GAA2D,MAAM,KAAAkC,EAAA6gB,SAAAvD,OAAApf,KAAAw8C,sBAAA58C,GAAqD,MAAM,KAAAkC,EAAA6gB,SAAAtD,KAAArf,KAAAy8C,oBAAA78C,GAAiD,MAAM,KAAAkC,EAAA6gB,SAAArD,MAAAtf,KAAA08C,qBAAA98C,GAAmD,MAAM,KAAAkC,EAAA6gB,SAAApD,MAAAvf,KAAA28C,qBAAA/8C,GAAmD,MAAM,KAAAkC,EAAA6gB,SAAAnD,cAAAxf,KAAA48C,6BAAAh9C,GAAmE,MAAM,KAAAkC,EAAA6gB,SAAAjD,SAAA1f,KAAA68C,wBAAAj9C,GAAyD,MAAM,KAAAkC,EAAA6gB,SAAAhD,WAAA3f,KAAA88C,0BAAAl9C,GAA6D,MAAM,KAAAkC,EAAA6gB,SAAA/C,QAAA5f,KAAA+8C,uBAAAn9C,GAAuD,MAAM,KAAAkC,EAAA6gB,SAAA9C,IAAA7f,KAAAg9C,mBAAAp9C,GAA+C,MAAM,KAAAkC,EAAA6gB,SAAA5C,cAAA/f,KAAAi9C,6BAAAr9C,GAAmE,MAAM,KAAAkC,EAAA6gB,SAAA3C,eAAAhgB,KAAAk9C,8BAAAt9C,GAAqE,MAAM,KAAAkC,EAAA6gB,SAAA1C,QAAAjgB,KAAAm9C,uBAAAv9C,GAAuD,MAAM,KAAAkC,EAAA6gB,SAAArC,aAAAtgB,KAAAo9C,4BAAAx9C,GAAiE,MAAM,KAAAkC,EAAA6gB,SAAApC,YAAAvgB,KAAAq9C,2BAAAz9C,GAA+D,MAAM,KAAAkC,EAAA6gB,SAAAnC,MAAAxgB,KAAAs9C,oBAAA19C,GAAkD,MAAM,KAAAkC,EAAA6gB,SAAAlC,MAAAzgB,KAAAu9C,oBAAA39C,GAAkD,MAAM,KAAAkC,EAAA6gB,SAAAjC,SAAA1gB,KAAAw9C,uBAAA59C,GAAwD,MAAM,KAAAkC,EAAA6gB,SAAAhC,GAAA3gB,KAAAy9C,iBAAA79C,GAA4C,MAAM,KAAAkC,EAAA6gB,SAAA/B,MAAA5gB,KAAA09C,oBAAA99C,GAAkD,MAAM,KAAAkC,EAAA6gB,SAAA9B,OAAA7gB,KAAA29C,qBAAA/9C,GAAoD,MAAM,KAAAkC,EAAA6gB,SAAA7B,cAAA9gB,KAAA49C,4BAAAh+C,GAAkE,MAAM,KAAAkC,EAAA6gB,SAAA5B,aAAA/gB,KAAA69C,2BAAAj+C,GAAgE,MAAM,KAAAkC,EAAA6gB,SAAA3B,WAAAhhB,KAAA89C,yBAAAl+C,GAA4D,MAAM,KAAAkC,EAAA6gB,SAAA1B,IAAAjhB,KAAA+9C,kBAAAn+C,GAA8C,MAAM,KAAAkC,EAAA6gB,SAAAzB,GAAAlhB,KAAAg+C,iBAAAp+C,GAA4C,MAAM,KAAAkC,EAAA6gB,SAAAxB,OAAAnhB,KAAAi+C,qBAAAr+C,GAAoD,MAAM,KAAAkC,EAAA6gB,SAAAvB,OAAAphB,KAAAk+C,qBAAAt+C,GAAoD,MAAM,KAAAkC,EAAA6gB,SAAAtB,OAAArhB,KAAAm+C,qBAAAv+C,GAAoD,MAAM,KAAAkC,EAAA6gB,SAAArB,MAAAthB,KAAAo+C,oBAAAx+C,GAAkD,MAAM,KAAAkC,EAAA6gB,SAAApB,IAAAvhB,KAAAq+C,kBAAAz+C,GAA8C,MAAM,KAAAkC,EAAA6gB,SAAAnB,SAAAxhB,KAAAs+C,uBAAA1+C,GAAwD,MAAM,KAAAkC,EAAA6gB,SAAAjB,MAAA1hB,KAAAu+C,oBAAA3+C,GAAkD,MAAM,KAAAkC,EAAA6gB,SAAAhB,iBAAA3hB,KAAAmyC,sBAAAvyC,GAA+D,MAAM,KAAAkC,EAAA6gB,SAAAf,gBAAA5hB,KAAAw+C,qBAAA5+C,GAA6D,MAAM,KAAAkC,EAAA6gB,SAAAd,qBAAA7hB,KAAAy+C,0BAAA7+C,GAAuE,MAAM,KAAAkC,EAAA6gB,SAAAb,iBAAA9hB,KAAA0+C,sBAAA9+C,GAA+D,MAAM,KAAAkC,EAAA6gB,SAAAZ,oBAAA/hB,KAAAqyC,yBAAAzyC,GAAqE,MAAM,KAAAkC,EAAA6gB,SAAAX,kBAAAhiB,KAAA2+C,uBAAA/+C,GAAiE,MAAM,KAAAkC,EAAA6gB,SAAAV,0BAAAjiB,KAAA4+C,+BAAAh/C,GAAiF,MAAM,KAAAkC,EAAA6gB,SAAAT,qBAAAliB,KAAA6+C,0BAAAj/C,GAAuE,MAAM,KAAAkC,EAAA6gB,SAAAR,kBAAAniB,KAAA8+C,uBAAAl/C,GAAiE,MAAM,KAAAkC,EAAA6gB,SAAAP,qBAAApiB,KAAA++C,0BAAAn/C,GAAuE,MAAM,KAAAkC,EAAA6gB,SAAAN,gBAAAriB,KAAAg/C,qBAAAp/C,GAA6D,MAAM,KAAAkC,EAAA6gB,SAAAL,oBAAAtiB,KAAAi/C,yBAAAr/C,GAAqE,MAAM,KAAAkC,EAAA6gB,SAAAJ,UAAAviB,KAAAk/C,mBAAAt/C,GAAqD,MAAM,KAAAkC,EAAA6gB,SAAAH,aAAAxiB,KAAAm/C,kBAAAv/C,GAAuD,MAAM,KAAAkC,EAAA6gB,SAAA1D,UAAAjf,KAAAo/C,mBAAAx/C,GAAqD,MAAM,KAAAkC,EAAA6gB,SAAAF,WAAAziB,KAAAq/C,gBAAAz/C,GAAmD,MAAM,QAAA2wB,QAAA,KAAoB3wB,EAAAqC,UAAAi6C,YAAA,SAAAt8C,GAAqC,QAAA2B,EAAA3B,EAAAypB,WAAAhpB,EAAA,EAAAyB,EAAAP,EAAAmD,OAAsCrE,EAAAyB,IAAIzB,EAAAL,KAAAs/C,sBAAA/9C,EAAAlB,KAAqCT,EAAAqC,UAAAs9C,cAAA,SAAA3/C,GAAuC,OAAAA,EAAA4vB,MAAe,KAAA1tB,EAAA6gB,SAAA9D,UAAA7e,KAAAm8C,mBAAAv8C,GAAqD,MAAM,KAAAkC,EAAA6gB,SAAA7D,aAAA9e,KAAAo8C,sBAAAx8C,GAA2D,MAAM,QAAA2wB,QAAA,KAAoB3wB,EAAAqC,UAAAu9C,cAAA,SAAA5/C,GAAuCI,KAAAs8C,0BAAA18C,EAAAqjB,YAA6C,QAAA1hB,EAAAvB,KAAAwd,GAAAnd,EAAAT,EAAAsjB,KAA2B7iB,GAAEkB,EAAA2D,KAAA,KAAAlF,KAAAs8C,0BAAAj8C,EAAA4iB,YAAA5iB,IAAA6iB,MAAmEtjB,EAAAqC,UAAAk6C,mBAAA,SAAAv8C,GAA4CI,KAAAw/C,cAAA5/C,EAAAgB,MAA2B,IAAAW,EAAA3B,EAAA2jB,cAAsB,GAAAhiB,EAAA,CAAM,IAAAlB,EAAAkB,EAAAmD,OAAA5C,EAAA9B,KAAAwd,GAAyB,GAAAnd,EAAA,CAAMyB,EAAAoD,KAAA,KAAAlF,KAAAu/C,cAAAh+C,EAAA,IAAqC,QAAAJ,EAAA,EAAYA,EAAAd,IAAIc,EAAAW,EAAAoD,KAAA,MAAAlF,KAAAu/C,cAAAh+C,EAAAJ,IAA0CW,EAAAoD,KAAA,KAAYtF,EAAA4jB,YAAA1hB,EAAAoD,KAAA,aAAiCtF,EAAAqC,UAAAm6C,sBAAA,SAAAx8C,GAA+C,IAAA2B,EAAA3B,EAAA4jB,WAAAnjB,EAAAL,KAAAwd,GAA6Bnd,EAAA6E,KAAA3D,EAAA,UAAmB,IAAAO,EAAAlC,EAAAgkB,iBAAyB9hB,IAAAzB,EAAA6E,KAAA,UAAAlF,KAAAu/C,cAAAz9C,IAA4C,IAAAX,EAAAvB,EAAA8jB,WAAAthB,EAAAjB,EAAAuD,OAA8B,GAAAtC,EAAA,CAAMN,GAAAzB,EAAA6E,KAAA,MAAAlF,KAAAo/C,mBAAAj+C,EAAA,IAA8C,QAAAqd,EAAA,EAAYA,EAAApc,IAAIoc,EAAAne,EAAA6E,KAAA,MAAAlF,KAAAo/C,mBAAAj+C,EAAAqd,IAA+C,IAAA1d,EAAAlB,EAAA+jB,WAAmB7iB,GAAAT,EAAA6E,KAAA,SAAAlF,KAAAu/C,cAAAz+C,IAAAT,EAAA6E,KAAA,aAAA3D,GAAAlB,EAAA6E,KAAA,aAAoFtF,EAAAqC,UAAAo6C,mBAAA,SAAAz8C,GAA4CI,KAAAs8C,0BAAA18C,EAAAgB,MAAuC,IAAAW,EAAA3B,EAAAmkB,YAAoBxiB,IAAAvB,KAAAwd,GAAAtY,KAAA,aAAAlF,KAAAu/C,cAAAh+C,IAAqD,IAAAlB,EAAAT,EAAAokB,YAAoB3jB,IAAAL,KAAAwd,GAAAtY,KAAA,KAAAlF,KAAAu/C,cAAAl/C,KAA6CT,EAAAqC,UAAAq6C,0BAAA,SAAA18C,GAAmDA,EAAA+kB,SAAA3kB,KAAAy/C,mBAAA7/C,EAAAiZ,MAAA7Y,KAAAwd,GAAAtY,KAAAtF,EAAAiZ,OAAgEjZ,EAAAqC,UAAAy9C,4BAAA,SAAA9/C,GAAqD,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,KAAY,IAAA7E,EAAAT,EAAAmlB,mBAAAjjB,EAAAzB,EAAAqE,OAAsC,GAAA5C,EAAA,CAAMzB,EAAA,IAAAL,KAAAi8C,UAAA57C,EAAA,IAA2B,QAAAc,EAAA,EAAYA,EAAAW,IAAIX,EAAAI,EAAA2D,KAAA,MAAA7E,EAAAc,IAAAnB,KAAAi8C,UAAA57C,EAAAc,IAA4CI,EAAA2D,KAAA,MAAYtF,EAAAqC,UAAA09C,6BAAA,SAAA//C,GAAsD,IAAA2B,EAAAvB,KAAAwd,GAAAnd,EAAAT,EAAA2nB,MAAAzlB,EAAAlC,EAAA4nB,OAAArmB,EAAAd,EAAAqE,OAA8C,GAAA6rB,OAAApvB,GAAAW,EAAA4C,QAAAvD,EAAA,CAA0BI,EAAA2D,KAAA,OAAS9C,EAAAib,OAAA9b,IAAAvB,KAAAg8C,aAAAh8C,KAAAi8C,UAAA57C,EAAA,IAAAkB,EAAA2D,KAAA,MAAAlF,KAAAi8C,UAAAn6C,EAAA,IAA2F,QAAA0c,EAAA,EAAYA,EAAArd,IAAIqd,EAAA,CAAKjd,EAAA2D,KAAA,OAAA9C,EAAAib,OAAA9b,EAAAvB,KAAAg8C,aAA2C,IAAAl7C,EAAAT,EAAAme,GAAAG,EAAA7c,EAAA0c,GAAkB1d,IAAA6d,EAAA3e,KAAAi8C,UAAAn7C,IAAAd,KAAAi8C,UAAAn7C,GAAAS,EAAA2D,KAAA,MAAAlF,KAAAi8C,UAAAt9B,IAA2Epd,EAAA2D,KAAA,MAAA9C,EAAAib,OAAA9b,IAAAvB,KAAAg8C,aAAAz6C,EAAA2D,KAAA,UAAwD3D,EAAA2D,KAAA,OAAkBtF,EAAAqC,UAAAs6C,yBAAA,SAAA38C,GAAkD,IAAA2B,EAAAvB,KAAAwd,GAAc,OAAA5d,EAAAslB,eAAwB,KAAApjB,EAAAgxB,cAAAH,OAAApxB,EAAA2D,KAAA,KAAAlF,KAAAu/C,cAAAhvB,OAAA3wB,EAAAwlB,SAAA7jB,EAAA2D,KAAA,KAAAlF,KAAAi8C,UAAAr8C,EAAAulB,YAAsH,MAAM,KAAArjB,EAAAgxB,cAAAF,GAAA5yB,KAAAi8C,UAAAr8C,EAAAulB,YAAA5jB,EAAA2D,KAAA,QAAAlF,KAAAu/C,cAAAhvB,OAAA3wB,EAAAwlB,SAAyG,MAAM,KAAAtjB,EAAAgxB,cAAAD,QAAA7yB,KAAAi8C,UAAAr8C,EAAAulB,YAAA5jB,EAAA2D,KAAA,KAAsE,MAAM,QAAAqrB,QAAA,KAAoB3wB,EAAAqC,UAAAu6C,sBAAA,SAAA58C,GAA+C,IAAA2B,EAAAvB,KAAAwd,GAAcxd,KAAAi8C,UAAAr8C,EAAA4lB,MAAAjkB,EAAA2D,KAAA,KAAA3D,EAAA2D,KAAAsZ,EAAAynB,sBAAArmC,EAAA2lB,WAAAhkB,EAAA2D,KAAA,KAAAlF,KAAAi8C,UAAAr8C,EAAA6lB,QAAmH7lB,EAAAqC,UAAAw6C,oBAAA,SAAA78C,GAA6C,IAAA2B,EAAAvB,KAAAwd,GAAcxd,KAAAi8C,UAAAr8C,EAAAulB,YAA6B,IAAA9kB,EAAAT,EAAA2jB,cAAsB,GAAAljB,EAAA,CAAM,IAAAyB,EAAAzB,EAAAqE,OAAe,GAAA5C,EAAA,CAAMP,EAAA2D,KAAA,KAAAlF,KAAAu/C,cAAAl/C,EAAA,IAAqC,QAAAc,EAAA,EAAYA,EAAAW,IAAIX,EAAAI,EAAA2D,KAAA,MAAAlF,KAAAu/C,cAAAl/C,EAAAc,IAA0CI,EAAA2D,KAAA,YAAc3D,EAAA2D,KAAA,KAAiB,IAAA9C,EAAAxC,EAAAgD,UAAA4b,EAAApc,EAAAsC,OAA6B,GAAA8Z,EAA2B,IAArBxe,KAAAi8C,UAAA75C,EAAA,IAAqBjB,EAAA,EAAQA,EAAAqd,IAAIrd,EAAAI,EAAA2D,KAAA,MAAAlF,KAAAi8C,UAAA75C,EAAAjB,IAAsCI,EAAA2D,KAAA,MAAYtF,EAAAqC,UAAAy6C,qBAAA,SAAA98C,GAA8C,IAAA2B,EAAA3B,EAAAkmB,YAAoB9lB,KAAAmyC,sBAAA5wC,IAA8B3B,EAAAqC,UAAA06C,qBAAA,SAAA/8C,GAA8C,IAAA2B,EAAA3B,EAAAqmB,YAAA5lB,EAAAkwB,OAAAhvB,EAAAmD,QAAuC1E,KAAAi8C,UAAA16C,EAAA,IAAqB,QAAAO,EAAA9B,KAAAwd,GAAArc,EAAA,EAAsBA,EAAAd,IAAIc,EAAAW,EAAAoD,KAAA,KAAAlF,KAAAi8C,UAAA16C,EAAAJ,KAAqCvB,EAAAqC,UAAA26C,6BAAA,SAAAh9C,GAAsD,IAAA2B,EAAAvB,KAAAwd,GAAcxd,KAAAi8C,UAAAr8C,EAAAulB,YAAA5jB,EAAA2D,KAAA,KAAAlF,KAAAi8C,UAAAr8C,EAAA0mB,mBAAA/kB,EAAA2D,KAAA,MAAyFtF,EAAAqC,UAAA46C,wBAAA,SAAAj9C,GAAiD,IAAA2B,EAAA3B,EAAAkmB,YAAoBvkB,EAAA8rB,UAAAkD,OAAA,GAAAhvB,EAAAX,KAAAiY,KAAAnU,QAAAnD,EAAAX,KAAAiY,KAAAnU,OAAA1E,KAAAwd,GAAAtY,KAAA,aAAAlF,KAAAwd,GAAAtY,KAAA,YAAAlF,KAAA4/C,oBAAAr+C,IAA4I3B,EAAAqC,UAAA86C,uBAAA,SAAAn9C,GAAgD,OAAAA,EAAA6yB,aAAsB,KAAA3wB,EAAAywB,YAAAN,MAAAjyB,KAAA6/C,4BAAAjgD,GAA6D,MAAM,KAAAkC,EAAAywB,YAAAL,QAAAlyB,KAAA8/C,8BAAAlgD,GAAiE,MAAM,KAAAkC,EAAAywB,YAAAJ,OAAAnyB,KAAA+/C,6BAAAngD,GAA+D,MAAM,KAAAkC,EAAAywB,YAAAH,OAAApyB,KAAAggD,6BAAApgD,GAA+D,MAAM,KAAAkC,EAAAywB,YAAAF,MAAAryB,KAAA0/C,4BAAA9/C,GAA6D,MAAM,KAAAkC,EAAAywB,YAAAD,OAAAtyB,KAAA2/C,6BAAA//C,GAA+D,MAAM,QAAA2wB,QAAA,KAAoB3wB,EAAAqC,UAAA49C,4BAAA,SAAAjgD,GAAqDI,KAAAwd,GAAAtY,KAAAtF,EAAA0B,MAAAqZ,SAAA,MAAmC/a,EAAAqC,UAAA66C,0BAAA,SAAAl9C,GAAmDI,KAAAi8C,UAAAr8C,EAAAulB,YAAAnlB,KAAAwd,GAAAtY,KAAA,gBAAAlF,KAAAu/C,cAAA3/C,EAAAmnB,SAAuFnnB,EAAAqC,UAAA69C,8BAAA,SAAAlgD,GAAuDI,KAAAwd,GAAAtY,KAAA+6C,cAAArgD,EAAA0B,SAAqC1B,EAAAqC,UAAAw9C,mBAAA,SAAA7/C,EAAA2B,QAA8C,IAAAA,OAAA,GAAmB,IAAAlB,EAAAL,KAAAwd,GAAA1b,EAAA,EAAAX,EAAAI,EAAA,QAA8BlB,EAAA6E,KAAA/D,GAAU,QAAAiB,EAAA,EAAAoc,EAAA5e,EAAA8E,OAAuBtC,EAAAoc,GAAI,OAAA5e,EAAAqH,WAAA7E,IAAyB,OAAAA,EAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,IAAAM,EAAA,IAAA/B,EAAA6E,KAAA,OAAApD,IAAAM,EAA6D,MAAM,OAAAA,EAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,EAAAM,IAAAN,IAAAM,EAAA/B,EAAA6E,KAAA,OAAyD,MAAM,OAAA9C,EAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,EAAAM,IAAAN,IAAAM,EAAA/B,EAAA6E,KAAA,OAAyD,MAAM,QAAA9C,EAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,EAAAM,IAAAN,IAAAM,EAAA/B,EAAA6E,KAAA,OAA0D,MAAM,QAAA9C,EAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,EAAAM,IAAAN,IAAAM,EAAA/B,EAAA6E,KAAA,OAA0D,MAAM,QAAA9C,EAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,EAAAM,IAAAN,IAAAM,EAAA/B,EAAA6E,KAAA,OAA0D,MAAM,QAAA9C,EAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,EAAAM,IAAA/B,EAAA6E,KAAA,OAAApD,IAAAM,EAA0D,MAAM,QAAAb,IAAAa,KAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,EAAAM,IAAA/B,EAAA6E,KAAA,OAAApD,IAAAM,GAAkE,MAAM,QAAAb,GAAAa,EAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,EAAAM,IAAA/B,EAAA6E,KAAA,OAAApD,IAAAM,OAAkE,MAAM,QAAAA,EAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,EAAAM,IAAA/B,EAAA6E,KAAA,QAAApD,IAAAM,EAA2D,MAAM,UAAAA,EAAYA,EAAAN,GAAAzB,EAAA6E,KAAAtF,EAAAkU,UAAAhS,EAAAM,IAAA/B,EAAA6E,KAAA/D,IAAwCvB,EAAAqC,UAAA89C,6BAAA,SAAAngD,GAAsDI,KAAAy/C,mBAAA7/C,EAAA0B,QAAiC1B,EAAAqC,UAAA+9C,6BAAA,SAAApgD,GAAsD,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,KAAA3D,EAAA2D,KAAAtF,EAAAmoB,SAAAxmB,EAAA2D,KAAA,KAAA3D,EAAA2D,KAAAtF,EAAAooB,eAAiEpoB,EAAAqC,UAAA+6C,mBAAA,SAAAp9C,GAA4CI,KAAAwd,GAAAtY,KAAA,QAAAlF,KAAAy8C,oBAAA78C,IAAiDA,EAAAqC,UAAAg7C,6BAAA,SAAAr9C,GAAsD,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,KAAAlF,KAAAi8C,UAAAr8C,EAAAulB,YAAA5jB,EAAA2D,KAAA,MAAqDtF,EAAAqC,UAAAi7C,8BAAA,SAAAt9C,GAAuDI,KAAAi8C,UAAAr8C,EAAAulB,YAAAnlB,KAAAwd,GAAAtY,KAAA,KAAAlF,KAAAs8C,0BAAA18C,EAAAoC,WAA0FpC,EAAAqC,UAAAk7C,uBAAA,SAAAv9C,GAAgD,IAAA2B,EAAAvB,KAAAwd,GAAcxd,KAAAi8C,UAAAr8C,EAAAuoB,WAAA5mB,EAAA2D,KAAA,OAAAlF,KAAAi8C,UAAAr8C,EAAAwoB,QAAA7mB,EAAA2D,KAAA,OAAAlF,KAAAi8C,UAAAr8C,EAAAyoB,SAA0GzoB,EAAAqC,UAAAi+C,qBAAA,SAAAtgD,GAA8C,OAAAA,EAAA4vB,MAAe,KAAA1tB,EAAA6gB,SAAArC,aAAAtgB,KAAAo9C,4BAAAx9C,GAAiE,MAAM,KAAAkC,EAAA6gB,SAAApC,YAAAvgB,KAAAq9C,2BAAAz9C,GAA+D,MAAM,QAAA2wB,QAAA,KAAoB3wB,EAAAqC,UAAAm7C,4BAAA,SAAAx9C,GAAqDI,KAAAi8C,UAAAr8C,EAAAopB,SAAAhpB,KAAAwd,GAAAtY,KAAAsZ,EAAAynB,sBAAArmC,EAAA2lB,YAA4E3lB,EAAAqC,UAAAo7C,2BAAA,SAAAz9C,GAAoDI,KAAAwd,GAAAtY,KAAAsZ,EAAAynB,sBAAArmC,EAAA2lB,WAAAvlB,KAAAi8C,UAAAr8C,EAAAopB,UAA4EppB,EAAAqC,UAAAq9C,sBAAA,SAAA1/C,GAA+CI,KAAAi8C,UAAAr8C,GAAkB,IAAA2B,EAAAvB,KAAAwd,GAAc,GAAAjc,EAAAmD,QAAA9E,EAAA4vB,MAAA1tB,EAAA6gB,SAAAnB,UAAA5hB,EAAA4vB,MAAA1tB,EAAA6gB,SAAA3B,WAAA,CAAyE,IAAA3gB,EAAAkB,IAAAmD,OAAA,GAAAvD,EAAAd,EAAAqE,OAAA,EAAiCvD,GAAA,SAAAd,EAAA4G,WAAA9F,IAAA,IAAAd,EAAA4G,WAAA9F,IAAAI,EAAA2D,KAAA,MAAA3D,EAAA2D,KAAA,YAA6E3D,EAAA2D,KAAA,QAAmBtF,EAAAqC,UAAAq7C,oBAAA,SAAA19C,GAA6C,IAAA2B,EAAAvB,KAAAwd,GAAAnd,EAAAT,EAAAypB,WAAAvnB,EAAAzB,EAAAqE,OAAwC,GAAA5C,EAAA,CAAMP,EAAA2D,KAAA,OAAc,QAAA/D,IAAAnB,KAAAg8C,YAAAx9B,EAAA,EAAiCA,EAAA1c,IAAI0c,EAAApc,EAAAib,OAAA9b,EAAAJ,GAAAnB,KAAAs/C,sBAAAj/C,EAAAme,IAAmDpc,EAAAib,OAAA9b,IAAAvB,KAAAg8C,aAAAz6C,EAAA2D,KAAA,UAA2C3D,EAAA2D,KAAA,OAAkBtF,EAAAqC,UAAAs7C,oBAAA,SAAA39C,GAA6C,IAAA2B,EAAA3B,EAAA4pB,MAAcjoB,GAAAvB,KAAAwd,GAAAtY,KAAA,UAAAlF,KAAAs8C,0BAAA/6C,IAAAvB,KAAAwd,GAAAtY,KAAA,UAAmFtF,EAAAqC,UAAAu7C,uBAAA,SAAA59C,GAAgD,IAAA2B,EAAA3B,EAAA4pB,MAAcjoB,GAAAvB,KAAAwd,GAAAtY,KAAA,aAAAlF,KAAAs8C,0BAAA/6C,IAAAvB,KAAAwd,GAAAtY,KAAA,aAAyFtF,EAAAqC,UAAAkwC,sBAAA,SAAAvyC,EAAA2B,QAAiD,IAAAA,OAAA,GAAmB,IAAAlB,EAAAT,EAAAmqB,WAAmB,GAAA1pB,EAAA,QAAAme,EAAA,EAAA1d,EAAAT,EAAAqE,OAA4B8Z,EAAA1d,IAAI0d,EAAAxe,KAAAk/C,mBAAA7+C,EAAAme,IAAkC,IAAAG,EAAA3e,KAAAwd,GAAcjc,EAAAod,EAAAzZ,KAAA,mBAAAlF,KAAAmgD,2BAAAvgD,KAAAywB,GAAAlvB,EAAAgvB,YAAAiJ,WAAAza,EAAAzZ,KAAA,aAAAtF,EAAAgB,KAAAiY,KAAAnU,QAAAia,EAAAzZ,KAAA,UAAAlF,KAAAs8C,0BAAA18C,EAAAgB,OAAA+d,EAAAzZ,KAAA,SAA8M,IAAAxE,EAAAd,EAAAgqB,eAAuB,GAAAlpB,KAAAgE,OAAA,CAA0D,IAA1Cia,EAAAzZ,KAAA,KAAAlF,KAAAq8C,mBAAA37C,EAAA,IAA0C8d,EAAA,EAAA1d,EAAAJ,EAAAgE,OAAmB8Z,EAAA1d,IAAI0d,EAAAG,EAAAzZ,KAAA,MAAAlF,KAAAq8C,mBAAA37C,EAAA8d,IAA+CG,EAAAzZ,KAAA,KAAY,IAAA+N,EAAArT,EAAAmkB,YAAoB9Q,IAAA0L,EAAAzZ,KAAA,aAAAlF,KAAAu/C,cAAAtsC,IAA+C,IAAA9Q,EAAAvC,EAAAiqB,gBAAwB,GAAA1nB,EAAA,CAAM,IAAAmhB,EAAAnhB,EAAAuC,OAAe,GAAA4e,EAAsD,IAAhD3E,EAAAzZ,KAAA,gBAAAlF,KAAAu/C,cAAAp9C,EAAA,IAAgDqc,EAAA,EAAQA,EAAA8E,IAAI9E,EAAAG,EAAAzZ,KAAA,MAAAlF,KAAAu/C,cAAAp9C,EAAAqc,IAA2C,IAAAle,EAAAV,EAAAkqB,QAAgB,GAAAxpB,EAAAoE,OAAA,CAAaia,EAAAzZ,KAAA,QAAe,IAAAvE,IAAAX,KAAAg8C,YAAyB,IAAAx9B,EAAA,EAAA1d,EAAAR,EAAAoE,OAAmB8Z,EAAA1d,IAAI0d,EAAA,CAAK,IAAAyR,EAAA3vB,EAAAke,IAAWyR,EAAAT,MAAA1tB,EAAA6gB,SAAAb,kBAAAmO,EAAAmH,eAAA,KAAAh1B,EAAAib,OAAAsB,EAAAhe,GAAAX,KAAAs/C,sBAAArvB,IAAyG7tB,EAAAib,OAAAsB,IAAA3e,KAAAg8C,aAAAr9B,EAAAzZ,KAAA,UAA2CyZ,EAAAzZ,KAAA,QAAmBtF,EAAAqC,UAAAw7C,iBAAA,SAAA79C,GAA0C,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,OAAAlF,KAAAi8C,UAAAr8C,EAAAwqB,WAAAxqB,EAAAwqB,UAAAoF,MAAA1tB,EAAA6gB,SAAAnC,MAAAjf,EAAA2D,KAAA,aAAA3D,EAAA2D,KAAA,OAA0G9C,EAAAib,OAAA9b,EAAAvB,KAAAg8C,aAAAz6C,EAAA2D,KAAA,YAAAlF,KAAAi8C,UAAAr8C,EAAAuoB,WAAA5mB,EAAA2D,KAAA,MAA6FtF,EAAAqC,UAAAy7C,oBAAA,SAAA99C,KAA8CA,EAAAqC,UAAAu8C,qBAAA,SAAA5+C,EAAA2B,QAAgD,IAAAA,OAAA,GAAmB,IAAAlB,EAAAL,KAAAwd,GAAcjc,EAAAlB,EAAA6E,KAAA,mBAAAlF,KAAAmgD,2BAAAvgD,KAAAywB,GAAAlvB,EAAAgvB,YAAA6I,QAAA34B,EAAA6E,KAAA,UAAA7E,EAAA6E,KAAA,SAAAlF,KAAAs8C,0BAAA18C,EAAAgB,MAAkK,IAAAkB,EAAAlC,EAAA4nB,OAAA9iB,OAAsB,GAAA5C,EAAA,CAAMzB,EAAA6E,KAAA,QAAe,IAAAsZ,IAAAxe,KAAAg8C,YAAyB55C,EAAAib,OAAAhd,EAAAme,GAAAxe,KAAAy+C,0BAAA7+C,EAAA4nB,OAAA,IAA0D,QAAA1mB,EAAA,EAAYA,EAAAgB,IAAIhB,EAAAT,EAAA6E,KAAA,OAAA9C,EAAAib,OAAAhd,EAAAme,GAAAxe,KAAAy+C,0BAAA7+C,EAAA4nB,OAAA1mB,IAA4ET,EAAA6E,KAAA,MAAA9C,EAAAib,OAAAhd,IAAAL,KAAAg8C,aAAA37C,EAAA6E,KAAA,UAAwD7E,EAAA6E,KAAA,QAAmBtF,EAAAqC,UAAAw8C,0BAAA,SAAA7+C,GAAmDI,KAAAs8C,0BAAA18C,EAAAgB,MAAAhB,EAAA0B,QAAAtB,KAAAwd,GAAAtY,KAAA,OAAAlF,KAAAi8C,UAAAr8C,EAAA0B,SAA8F1B,EAAAqC,UAAA47C,2BAAA,SAAAj+C,GAAoD,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,kBAAAlF,KAAAs8C,0BAAA18C,EAAA2rB,cAAAhqB,EAAA2D,KAAA,OAAAlF,KAAAs8C,0BAAA18C,EAAAgB,OAA6HhB,EAAAqC,UAAAk9C,kBAAA,SAAAv/C,GAA2CI,KAAAs8C,0BAAA18C,EAAA8rB,WAAA9rB,EAAA+rB,aAAA9S,MAAAjZ,EAAA8rB,UAAA7S,OAAA7Y,KAAAwd,GAAAtY,KAAA,QAAAlF,KAAAs8C,0BAAA18C,EAAA+rB,gBAAyJ/rB,EAAAqC,UAAA07C,qBAAA,SAAA/9C,GAA8C,IAAA2B,EAAAvB,KAAAwd,GAAc5d,EAAAsrB,WAAA3pB,EAAA2D,KAAA,YAAgC,IAAA7E,EAAAT,EAAAkqB,QAAgB,GAAAzpB,KAAAqE,OAAA,CAAgB,IAAA5C,EAAAzB,EAAAqE,OAAenD,EAAA2D,KAAA,cAAqB,IAAA/D,IAAAnB,KAAAg8C,YAAyB55C,EAAAib,OAAA9b,EAAAJ,GAAAnB,KAAAm/C,kBAAA9+C,EAAA,IAA2C,QAAAme,EAAA,EAAYA,EAAA1c,IAAI0c,EAAAjd,EAAA2D,KAAA,OAAA9C,EAAAib,OAAA9b,EAAAJ,GAAAnB,KAAAm/C,kBAAA9+C,EAAAme,MAA6Dxe,KAAAg8C,YAAAz6C,EAAA2D,KAAA,YAAiC3D,EAAA2D,KAAA,aAAyB,IAAApE,EAAAlB,EAAAyC,KAAavB,IAAAS,EAAA2D,KAAA,UAAAlF,KAAA+/C,6BAAAj/C,IAAAS,EAAA2D,KAAA,MAAuEtF,EAAAqC,UAAA27C,4BAAA,SAAAh+C,GAAqD,IAAA2B,EAAA3B,EAAAkmB,YAAoB,OAAAvkB,EAAAiuB,MAAe,KAAA1tB,EAAA6gB,SAAAf,gBAAA5hB,KAAAw+C,qBAAAj9C,GAAA,GAAgE,MAAM,KAAAO,EAAA6gB,SAAAZ,oBAAA/hB,KAAAqyC,yBAAA9wC,GAAA,GAAwE,MAAM,KAAAO,EAAA6gB,SAAAhB,iBAAA3hB,KAAAmyC,sBAAA5wC,GAAA,GAAkE,MAAM,KAAAO,EAAA6gB,SAAAT,qBAAAliB,KAAA6+C,0BAAAt9C,GAAA,GAA0E,MAAM,KAAAO,EAAA6gB,SAAAP,qBAAApiB,KAAA++C,0BAAAx9C,GAAA,GAA0E,MAAM,QAAAgvB,QAAA,KAAoB3wB,EAAAqC,UAAA67C,yBAAA,SAAAl+C,GAAkDI,KAAAi8C,UAAAr8C,EAAAulB,aAA6BvlB,EAAAqC,UAAAy8C,sBAAA,SAAA9+C,GAA+C,IAAA2B,EAAA3B,EAAAmqB,WAAmB,GAAAxoB,EAAA,QAAAlB,EAAA,EAAAyB,EAAAP,EAAAmD,OAA4BrE,EAAAyB,IAAIzB,EAAAL,KAAAk/C,mBAAA39C,EAAAlB,IAAkCL,KAAAogD,yBAAAxgD,GAAAI,KAAAs8C,0BAAA18C,EAAAgB,MAAwE,IAAAwB,EAAApC,KAAAwd,GAAc5d,EAAA+pB,MAAAxoB,EAAAgvB,YAAAuJ,qBAAAt3B,EAAA8C,KAAA,KAAuD,IAAAsZ,EAAA5e,EAAAsd,KAAasB,IAAApc,EAAA8C,KAAA,MAAAlF,KAAAu/C,cAAA/gC,IAAwC,IAAA1d,EAAAlB,EAAAskB,YAAoBpjB,IAAAsB,EAAA8C,KAAA,OAAAlF,KAAAi8C,UAAAn7C,KAAqClB,EAAAqC,UAAA87C,kBAAA,SAAAn+C,GAA2C,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,SAAgB,IAAA7E,EAAAT,EAAAskB,YAAoB7jB,GAAAL,KAAAi8C,UAAA57C,GAAqB,IAAAyB,EAAAlC,EAAAuoB,UAAkBrmB,GAAAP,EAAA2D,KAAA,MAAYlF,KAAAi8C,UAAAn6C,IAAAP,EAAA2D,KAAA,KAAmC,IAAA/D,EAAAvB,EAAAotB,YAAoB7rB,GAAAI,EAAA2D,KAAA,MAAYlF,KAAAi8C,UAAA96C,IAAAI,EAAA2D,KAAA,KAAgC3D,EAAA2D,KAAA,MAAAlF,KAAAi8C,UAAAr8C,EAAAwqB,YAA4CxqB,EAAAqC,UAAAowC,yBAAA,SAAAzyC,EAAA2B,QAAoD,IAAAA,OAAA,GAAmB,IAAAlB,EAAAL,KAAAwd,GAAA1b,EAAAlC,EAAAmqB,WAA6B,GAAAjoB,EAAA,QAAAX,EAAA,EAAAiB,EAAAN,EAAA4C,OAA4BvD,EAAAiB,IAAIjB,EAAAnB,KAAAk/C,mBAAAp9C,EAAAX,IAAkCI,EAAAlB,EAAA6E,KAAA,oBAAAlF,KAAAmgD,2BAAAvgD,GAAAI,KAAAogD,yBAAAxgD,MAAAgB,KAAAiY,KAAAnU,OAAArE,EAAA6E,KAAA,aAAA7E,EAAA6E,KAAA,YAAAlF,KAAA4/C,oBAAAhgD,IAAwLA,EAAAqC,UAAA29C,oBAAA,SAAAhgD,GAA6C,IAAA2B,EAAAvB,KAAAwd,GAAcxd,KAAAs8C,0BAAA18C,EAAAgB,MAAuC,IAAAP,EAAAT,EAAAutB,UAAA/qB,EAAAxC,EAAAgqB,eAAqC,GAAAxnB,EAAA,CAAM,IAAAoc,EAAApc,EAAAsC,OAAe,GAAA8Z,EAAA,CAAMjd,EAAA2D,KAAA,KAAAlF,KAAAq8C,mBAAAj6C,EAAA,IAA0C,QAAAtB,EAAA,EAAYA,EAAA0d,IAAI1d,EAAAS,EAAA2D,KAAA,MAAAlF,KAAAq8C,mBAAAj6C,EAAAtB,IAA+CS,EAAA2D,KAAA,MAAa,MAAAtF,EAAAytB,UAAA,CAAmB,IAAA1O,EAAAte,EAAAqjB,WAAmB6M,OAAA,GAAA5R,EAAAja,QAAA6rB,QAAAlwB,EAAAujB,kBAAA5jB,KAAAo/C,mBAAAzgC,EAAA,QAA8E,CAAKpd,EAAA2D,KAAA,KAAY,IAAAxE,GAAAie,EAAAte,EAAAqjB,YAAAhf,OAAAuO,EAAA5S,EAAAujB,iBAAmD,GAAA3Q,IAAA1R,EAAA2D,KAAA,UAAAlF,KAAAu/C,cAAAtsC,IAAAvS,EAAgG,IAA9CuS,GAAA1R,EAAA2D,KAAA,MAAAlF,KAAAo/C,mBAAAzgC,EAAA,IAA8C7d,EAAA,EAAQA,EAAAJ,IAAII,EAAAS,EAAA2D,KAAA,MAAAlF,KAAAo/C,mBAAAzgC,EAAA7d,IAAgD,IAAAqB,EAAAvC,EAAAwtB,KAAA9J,EAAAjjB,EAAAsjB,WAA4B/jB,EAAAytB,UAAAlrB,GAAA,GAAAvC,EAAAytB,UAAAkD,OAAAzuB,EAAAg3B,cAAAxV,IAAAxhB,EAAAg3B,cAAAxV,GAAA/hB,EAAA2D,KAAA,MAAA3D,EAAA2D,KAAA,OAAAlF,KAAAu/C,cAAAj8B,IAAA/hB,EAAA2D,KAAA,QAAAlF,KAAAi8C,UAAA95C,KAAAouB,QAAAzuB,EAAAg3B,cAAAxV,IAAA/hB,EAAA2D,KAAA,QAAAlF,KAAAu/C,cAAAj8B,KAAAxhB,EAAAg3B,cAAAxV,IAAA1jB,EAAA0wB,MAAAnvB,EAAAgvB,YAAA9P,YAAAlf,EAAAgvB,YAAAsJ,KAAAl4B,EAAA2D,KAAA,MAAA3D,EAAA2D,KAAA,OAAAlF,KAAAu/C,cAAAj8B,IAAAnhB,IAAAZ,EAAA2D,KAAA,KAAAlF,KAAAi8C,UAAA95C,MAAmYvC,EAAAqC,UAAA+7C,iBAAA,SAAAp+C,GAA0C,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,QAAAlF,KAAAi8C,UAAAr8C,EAAAuoB,WAAA5mB,EAAA2D,KAAA,MAAwD,IAAA7E,EAAAT,EAAAosB,OAAehsB,KAAAi8C,UAAA57C,KAAAmvB,MAAA1tB,EAAA6gB,SAAAnC,OAAAjf,EAAA2D,KAAA,OAA0D,IAAA/D,EAAAvB,EAAAqsB,QAAgB9qB,IAAAd,EAAAmvB,MAAA1tB,EAAA6gB,SAAAnC,MAAAjf,EAAA2D,KAAA,UAAA3D,EAAA2D,KAAA,SAAAlF,KAAAi8C,UAAA96C,KAAiFvB,EAAAqC,UAAA08C,uBAAA,SAAA/+C,GAAgD,IAAA2B,EAAA3B,EAAA6sB,YAAApsB,EAAAT,EAAAgB,KAA6BZ,KAAAs8C,0BAAA/6C,KAAAsX,MAAAxY,EAAAwY,OAAA7Y,KAAAwd,GAAAtY,KAAA,QAAAlF,KAAAs8C,0BAAAj8C,KAA2GT,EAAAqC,UAAAg8C,qBAAA,SAAAr+C,GAA8C,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,WAAkB,IAAA7E,EAAAT,EAAAwsB,aAAAtqB,EAAAlC,EAAAysB,cAAuC,GAAAhsB,EAAA,CAAM,IAAAc,EAAAd,EAAAqE,OAAe,GAAAvD,EAAA,CAAMI,EAAA2D,KAAA,OAAc,IAAAsZ,IAAAxe,KAAAg8C,YAAyB55C,EAAAib,OAAA9b,EAAAid,GAAAxe,KAAA2+C,uBAAAt+C,EAAA,IAAgD,QAAAS,EAAA,EAAYA,EAAAK,IAAIL,EAAAS,EAAA2D,KAAA,OAAA9C,EAAAib,OAAA9b,EAAAid,GAAAxe,KAAA2+C,uBAAAt+C,EAAAS,MAAkEd,KAAAg8C,YAAAz6C,EAAA2D,KAAA,kBAAuC3D,EAAA2D,KAAA,iBAAwBpD,IAAAP,EAAA2D,KAAA,SAAAlF,KAAAs8C,0BAAAx6C,GAAAP,EAAA2D,KAAA,WAA6ElF,KAAA+/C,6BAAAngD,EAAAyC,OAA0CzC,EAAAqC,UAAA28C,+BAAA,SAAAh/C,GAAwD,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,UAAAlF,KAAAu/C,cAAA3/C,EAAA4tB,SAAAjsB,EAAA2D,KAAA,OAAAlF,KAAAu/C,cAAA3/C,EAAA6tB,YAA6F7tB,EAAAqC,UAAA48C,0BAAA,SAAAj/C,EAAA2B,QAAqD,IAAAA,OAAA,GAAmB,IAAAlB,EAAAT,EAAAmqB,WAAmB,GAAA1pB,EAAA,QAAAyB,EAAA,EAAAX,EAAAd,EAAAqE,OAA4B5C,EAAAX,IAAIW,EAAA9B,KAAAk/C,mBAAA7+C,EAAAyB,IAAkC,IAAA0c,EAAAxe,KAAAwd,GAAcjc,EAAAid,EAAAtZ,KAAA,mBAAAlF,KAAAmgD,2BAAAvgD,GAAA4e,EAAAtZ,KAAA,cAAAlF,KAAAs8C,0BAAA18C,EAAAgB,MAA2H,IAAAE,EAAAlB,EAAAgqB,eAAuB,GAAA9oB,KAAA4D,OAAA,CAA0D,IAA1C8Z,EAAAtZ,KAAA,KAAAlF,KAAAq8C,mBAAAv7C,EAAA,IAA0CgB,EAAA,EAAAX,EAAAL,EAAA4D,OAAmB5C,EAAAX,IAAIW,EAAA0c,EAAAtZ,KAAA,MAAAlF,KAAAq8C,mBAAAv7C,EAAAgB,IAA+C0c,EAAAtZ,KAAA,KAAY,IAAAyZ,EAAA/e,EAAAmkB,YAAoBpF,IAAAH,EAAAtZ,KAAA,aAAAlF,KAAAu/C,cAAA5gC,IAAAH,EAAAtZ,KAAA,QAA8D,IAAAxE,IAAAV,KAAAg8C,YAAA/oC,EAAArT,EAAAkqB,QAAqC,IAAAhoB,EAAA,EAAAX,EAAA8R,EAAAvO,OAAmB5C,EAAAX,IAAIW,EAAAM,EAAAib,OAAAmB,EAAA9d,GAAAV,KAAAs/C,sBAAArsC,EAAAnR,MAAmD9B,KAAAg8C,YAAAx9B,EAAAtZ,KAAA,MAA+BtF,EAAAqC,UAAA68C,uBAAA,SAAAl/C,GAAgD,IAAA2B,EAAA3B,EAAAmqB,WAAmB,GAAAxoB,EAAA,QAAAlB,EAAA,EAAAyB,EAAAP,EAAAmD,OAA4BrE,EAAAyB,IAAIzB,EAAAL,KAAAk/C,mBAAA39C,EAAAlB,IAAkCL,KAAAogD,yBAAAxgD,KAAAywB,GAAAlvB,EAAAgvB,YAAAqJ,KAAAx5B,KAAAwd,GAAAtY,KAAA,QAAAtF,EAAAywB,GAAAlvB,EAAAgvB,YAAAsJ,MAAAz5B,KAAAwd,GAAAtY,KAAA,QAAAlF,KAAA4/C,oBAAAhgD,IAAwJA,EAAAqC,UAAA88C,0BAAA,SAAAn/C,EAAA2B,QAAqD,IAAAA,OAAA,GAAmB,IAAAlB,EAAAT,EAAAmqB,WAAmB,GAAA1pB,EAAA,QAAAyB,EAAA,EAAAX,EAAAd,EAAAqE,OAA4B5C,EAAAX,IAAIW,EAAA9B,KAAAk/C,mBAAA7+C,EAAAyB,IAAkC,IAAA0c,EAAAxe,KAAAwd,GAAcjc,EAAAid,EAAAtZ,KAAA,mBAAAlF,KAAAmgD,2BAAAvgD,GAAA4e,EAAAtZ,KAAA,cAAAlF,KAAAs8C,0BAAA18C,EAAAgB,MAA2H,IAAAE,EAAAlB,EAAAkqB,QAAgB,GAAAhpB,EAAA4D,OAAA,CAAa8Z,EAAAtZ,KAAA,QAAe,IAAAyZ,IAAA3e,KAAAg8C,YAAyB,IAAAl6C,EAAA,EAAAX,EAAAL,EAAA4D,OAAmB5C,EAAAX,IAAIW,EAAAM,EAAAib,OAAAmB,EAAAG,GAAA3e,KAAAs/C,sBAAAx+C,EAAAgB,IAAmDM,EAAAib,OAAAmB,IAAAxe,KAAAg8C,aAAAx9B,EAAAtZ,KAAA,UAA2CsZ,EAAAtZ,KAAA,QAAmBtF,EAAAqC,UAAAi8C,qBAAA,SAAAt+C,GAA8C,IAAA2B,EAAA3B,EAAA0B,MAAcC,GAAAvB,KAAAwd,GAAAtY,KAAA,WAAAlF,KAAAi8C,UAAA16C,IAAAvB,KAAAwd,GAAAtY,KAAA,WAAqEtF,EAAAqC,UAAAo9C,gBAAA,SAAAz/C,GAAyC,IAAA2B,EAAAvB,KAAAwd,GAAAnd,EAAAT,EAAA4pB,MAAwBnpB,GAAAkB,EAAA2D,KAAA,SAAAlF,KAAAi8C,UAAA57C,GAAAkB,EAAA2D,KAAA,QAAA3D,EAAA2D,KAAA,cAAyE,IAAApD,EAAAlC,EAAAypB,WAAAloB,EAAAW,EAAA4C,OAA8B,GAAAvD,EAAA,CAAM,IAAAqd,IAAAxe,KAAAg8C,YAAyB55C,EAAAib,OAAA9b,EAAAid,GAAAxe,KAAAs/C,sBAAAx9C,EAAA,IAA+C,QAAAhB,EAAA,EAAYA,EAAAK,IAAIL,EAAAsB,EAAAib,OAAA9b,EAAAid,GAAAxe,KAAAs/C,sBAAAx9C,EAAAhB,MAAmDd,KAAAg8C,cAAoBp8C,EAAAqC,UAAAk8C,qBAAA,SAAAv+C,GAA8C,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,YAAAlF,KAAAi8C,UAAAr8C,EAAAuoB,WAAA5mB,EAAA2D,KAAA,SAA+D,QAAA7E,IAAAL,KAAAg8C,YAAAl6C,EAAAlC,EAAAsuB,MAAA/sB,EAAA,EAAAqd,EAAA1c,EAAA4C,OAAsDvD,EAAAqd,IAAIrd,EAAAiB,EAAAib,OAAA9b,EAAAlB,GAAAL,KAAAq/C,gBAAAv9C,EAAAX,IAAAI,EAAA2D,KAAA,QAA0DlF,KAAAg8C,YAAAz6C,EAAA2D,KAAA,MAA+BtF,EAAAqC,UAAAm8C,oBAAA,SAAAx+C,GAA6CI,KAAAwd,GAAAtY,KAAA,UAAAlF,KAAAi8C,UAAAr8C,EAAA0B,QAA+C1B,EAAAqC,UAAAo8C,kBAAA,SAAAz+C,GAA2C,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,WAAkB,QAAA7E,IAAAL,KAAAg8C,YAAAl6C,EAAAlC,EAAAypB,WAAAloB,EAAA,EAAAqd,EAAA1c,EAAA4C,OAA2DvD,EAAAqd,IAAIrd,EAAAiB,EAAAib,OAAA9b,EAAAlB,GAAAL,KAAAs/C,sBAAAx9C,EAAAX,IAAmD,IAAAL,EAAAlB,EAAA6uB,cAAsB,GAAA3tB,EAAA,CAAMsB,EAAAib,OAAA9b,EAAAlB,EAAA,GAAAkB,EAAA2D,KAAA,aAAyBlF,KAAAs8C,0BAAAx7C,GAAAS,EAAA2D,KAAA,SAA6D,IAAAyZ,EAAA/e,EAAA8uB,gBAAwB,GAAA/P,EAAA,IAAAxd,EAAA,EAAAqd,EAAAG,EAAAja,OAAwBvD,EAAAqd,IAAIrd,EAAAiB,EAAAib,OAAA9b,EAAAlB,GAAAL,KAAAs/C,sBAAA3gC,EAAAxd,IAAmD,IAAAT,EAAAd,EAAA+uB,kBAA0B,GAAAjuB,EAA8C,IAAxC0B,EAAAib,OAAA9b,EAAAlB,EAAA,GAAAkB,EAAA2D,KAAA,iBAAwC/D,EAAA,EAAAqd,EAAA9d,EAAAgE,OAAmBvD,EAAAqd,IAAIrd,EAAAiB,EAAAib,OAAA9b,EAAAlB,GAAAL,KAAAs/C,sBAAA5+C,EAAAS,IAAmDiB,EAAAib,OAAA9b,EAAAlB,EAAA,GAAAkB,EAAA2D,KAAA,MAA4BtF,EAAAqC,UAAA+8C,qBAAA,SAAAp/C,GAA8C,IAAA2B,EAAA3B,EAAAmqB,WAAmB,GAAAxoB,EAAA,QAAAlB,EAAA,EAAAyB,EAAAP,EAAAmD,OAA4BrE,EAAAyB,IAAIzB,EAAAL,KAAAk/C,mBAAA39C,EAAAlB,IAAkC,IAAAc,EAAAnB,KAAAwd,GAAcxd,KAAAmgD,2BAAAvgD,GAAAuB,EAAA+D,KAAA,SAAAlF,KAAAs8C,0BAAA18C,EAAAgB,MAA0F,IAAAwB,EAAAxC,EAAAgqB,eAAuB,GAAAxnB,EAAA,CAAM,IAAAoc,EAAApc,EAAAsC,OAAe,GAAA8Z,EAAA,CAAkB,IAAZrd,EAAA+D,KAAA,KAAY7E,EAAA,EAAQA,EAAAme,IAAIne,EAAAL,KAAAq8C,mBAAAj6C,EAAA/B,IAAkCc,EAAA+D,KAAA,MAAa/D,EAAA+D,KAAA,OAAAlF,KAAAu/C,cAAA3/C,EAAAsd,OAAyCtd,EAAAqC,UAAAg9C,yBAAA,SAAAr/C,GAAkDI,KAAAs8C,0BAAA18C,EAAAgB,MAAuC,IAAAW,EAAA3B,EAAAsd,KAAA7c,EAAAL,KAAAwd,GAAuB5d,EAAA+pB,MAAAxoB,EAAAgvB,YAAAuJ,qBAAAr5B,EAAA6E,KAAA,KAAA3D,IAAAlB,EAAA6E,KAAA,MAAAlF,KAAAu/C,cAAAh+C,IAA+F,IAAAO,EAAAlC,EAAAskB,YAAoBpiB,IAAAzB,EAAA6E,KAAA,OAAAlF,KAAAi8C,UAAAn6C,KAAqClC,EAAAqC,UAAAq8C,uBAAA,SAAA1+C,GAAgD,IAAA2B,EAAA3B,EAAAmqB,WAAmB,GAAAxoB,EAAA,QAAAlB,EAAA,EAAAyB,EAAAP,EAAAmD,OAA4BrE,EAAAyB,IAAIzB,EAAAL,KAAAk/C,mBAAA39C,EAAAlB,IAAkC,IAAA+B,EAAApC,KAAAwd,GAAAgB,EAAA5e,EAAAwsB,aAAAtrB,EAAAyvB,OAAA/R,EAAA9Z,QAAAia,EAAAH,EAAA,GAA8N,IAArKxe,KAAAmgD,2BAAAxhC,GAAAvc,EAAA8C,KAAAyZ,EAAA0R,GAAAlvB,EAAAgvB,YAAA6I,OAAA,SAAAra,EAAA0R,GAAAlvB,EAAAgvB,YAAA8I,KAAA,eAAAj5B,KAAAi/C,yBAAAr/C,EAAAwsB,aAAA,IAAqK/rB,EAAA,EAAQA,EAAAS,IAAIT,EAAA+B,EAAA8C,KAAA,MAAAlF,KAAAi/C,yBAAAr/C,EAAAwsB,aAAA/rB,KAAkET,EAAAqC,UAAAs8C,oBAAA,SAAA3+C,GAA6C,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,WAAAlF,KAAAi8C,UAAAr8C,EAAAuoB,WAAAvoB,EAAAwqB,UAAAoF,MAAA1tB,EAAA6gB,SAAA/B,MAAArf,EAAA2D,KAAA,MAAA3D,EAAA2D,KAAA,MAAAlF,KAAAi8C,UAAAr8C,EAAAwqB,aAAwIxqB,EAAAqC,UAAAi9C,mBAAA,SAAAt/C,GAA4C,IAAA2B,EAAAvB,KAAAwd,GAAcjc,EAAA2D,KAAA,KAAAlF,KAAAi8C,UAAAr8C,EAAAgB,MAAmC,IAAAP,EAAAT,EAAAgD,UAAkB,GAAAvC,EAAA,CAAMkB,EAAA2D,KAAA,KAAY,IAAApD,EAAAzB,EAAAqE,OAAe,GAAA5C,EAAA,CAAM9B,KAAAi8C,UAAA57C,EAAA,IAAqB,QAAAc,EAAA,EAAYA,EAAAW,IAAIX,EAAAI,EAAA2D,KAAA,MAAAlF,KAAAi8C,UAAA57C,EAAAc,IAAsCI,EAAA2D,KAAA,YAAc3D,EAAA2D,KAAA,MAAkB9C,EAAAib,OAAA9b,EAAAvB,KAAAg8C,cAA6Bp8C,EAAAqC,UAAAm9C,mBAAA,SAAAx/C,GAA4C,IAAA2B,EAAAvB,KAAAwd,GAAAnd,EAAAT,EAAAukB,cAAAhjB,EAAAvB,EAAAswB,yBAA6D/uB,GAAAnB,KAAAogD,yBAAAj/C,GAAAd,GAAAyB,EAAAkuB,cAAAD,MAAAxuB,EAAA2D,KAAA,OAAAlF,KAAAs8C,0BAAA18C,EAAAgB,MAAkH,IAAAwB,EAAAxC,EAAAsd,KAAAsB,EAAA5e,EAAAskB,YAA6B9hB,IAAA/B,GAAAyB,EAAAkuB,cAAAF,UAAAtR,GAAAjd,EAAA2D,KAAA,KAAApD,EAAAg3B,cAAA12B,KAAAb,EAAA2D,KAAA,MAAAlF,KAAAu/C,cAAAn9C,KAAAoc,IAAAjd,EAAA2D,KAAA,OAAAlF,KAAAi8C,UAAAz9B,KAA+I5e,EAAAqC,UAAAk+C,2BAAA,SAAAvgD,GAAoD,IAAA2B,EAAAvB,KAAAwd,GAAc5d,EAAAywB,GAAAlvB,EAAAgvB,YAAAtP,QAAAtf,EAAA2D,KAAA,WAAAtF,EAAAywB,GAAAlvB,EAAAgvB,YAAAhP,QAAA5f,EAAA2D,KAAA,WAAAtF,EAAAywB,GAAAlvB,EAAAgvB,YAAA4I,UAAAx3B,EAAA2D,KAAA,aAA0ItF,EAAAqC,UAAAm+C,yBAAA,SAAAxgD,GAAkD,IAAA2B,EAAAvB,KAAAwd,GAAc5d,EAAAywB,GAAAlvB,EAAAgvB,YAAAkJ,QAAA93B,EAAA2D,KAAA,WAAAtF,EAAAywB,GAAAlvB,EAAAgvB,YAAAmJ,SAAA/3B,EAAA2D,KAAA,YAAAtF,EAAAywB,GAAAlvB,EAAAgvB,YAAAoJ,YAAAh4B,EAAA2D,KAAA,cAAAtF,EAAAywB,GAAAlvB,EAAAgvB,YAAA+I,QAAA33B,EAAA2D,KAAA,WAAAtF,EAAAywB,GAAAlvB,EAAAgvB,YAAAiJ,WAAA73B,EAAA2D,KAAA,aAAAtF,EAAAywB,GAAAlvB,EAAAgvB,YAAAgJ,WAAA53B,EAAA2D,KAAA,cAAiStF,EAAAqC,UAAA6nC,OAAA,WAA+B,IAAAlqC,EAAAI,KAAAwd,GAAAhY,KAAA,IAAuB,OAAAxF,KAAAwd,GAAA,GAAA5d,GAAoBA,EAAx1tB,GAA81tB2B,EAAAqwC,WAAA9wC,GAAe,SAAAlB,EAAA2B,EAAAlB,IAAiB,SAAAT,GAAa,IAAA2B,EAAA,oBAAAuG,qBAAA,IAAAlI,MAAAG,KAA8DwB,EAAAw7B,WAAA,EAAAx7B,EAAA07B,eAAA,EAAA17B,EAAA27B,gBAAA,EAAA37B,EAAA47B,mBAAA,EAAA57B,EAAA67B,iBAAA,EAAA77B,EAAA87B,4BAAA,EAAA97B,EAAA+7B,4BAAA,EAAA/7B,EAAAg8B,yBAAA,EAAAh8B,EAAAi8B,kBAAA,EAAAj8B,EAAAk8B,qBAAA,EAA8O,IAAAp9B,EAAA,IAAAi/B,aAAA,GAAAx9B,EAAA,IAAAq9B,YAAA9+B,EAAAka,QAAsD,SAAApZ,IAAasC,MAAA48C,kBAAA58C,MAAA48C,kBAAArgD,KAAAmB,GAAAnB,KAAAwL,MAAAxL,KAAAY,KAAA,KAAAZ,KAAAm2C,QAAA,UAAA1yC,OAAA+H,MAAsH,SAAApJ,EAAAxC,GAAcI,KAAAm2C,QAAAv2C,GAAA,mBAAA6D,MAAA48C,kBAAA58C,MAAA48C,kBAAArgD,KAAAoC,GAAApC,KAAAwL,MAAAxL,KAAAY,KAAA,KAAAZ,KAAAm2C,QAAA,UAAA1yC,OAAA+H,MAAyJzK,OAAAu/C,iBAAA/+C,EAAA05B,GAAA,SAAAr7B,GAAyC,OAAAA,GAAA,QAAiB,CAAE2gD,UAAA,CAAWj/C,OAAA,IAAAk/C,UAAA,GAAuB7Z,UAAA,CAAYrlC,MAAA,IAAAk/C,UAAA,KAAuBz/C,OAAAu/C,iBAAA/+C,EAAA25B,IAAA,SAAAt7B,GAA4C,OAAAA,GAAA,QAAiB,CAAE2gD,UAAA,CAAWj/C,OAAA,MAAAk/C,UAAA,GAAyB7Z,UAAA,CAAYrlC,MAAA,MAAAk/C,UAAA,KAAyBz/C,OAAAu/C,iBAAA/+C,EAAA45B,IAAA55B,EAAA85B,MAAA,SAAAz7B,GAAoD,SAAAA,GAAW,CAAE2gD,UAAA,CAAWj/C,OAAA,WAAAk/C,UAAA,GAA8B7Z,UAAA,CAAYrlC,MAAA,WAAAk/C,UAAA,KAA8Bz/C,OAAAu/C,iBAAA/+C,EAAA+5B,GAAA,SAAA17B,GAA2C,WAAAA,GAAa,CAAE2gD,UAAA,CAAWj/C,MAAA,EAAAk/C,UAAA,GAAoB7Z,UAAA,CAAYrlC,MAAA,IAAAk/C,UAAA,KAAuBz/C,OAAAu/C,iBAAA/+C,EAAAg6B,IAAA,SAAA37B,GAA4C,aAAAA,GAAe,CAAE2gD,UAAA,CAAWj/C,MAAA,EAAAk/C,UAAA,GAAoB7Z,UAAA,CAAYrlC,MAAA,MAAAk/C,UAAA,KAAyBz/C,OAAAu/C,iBAAA/+C,EAAAi6B,IAAAj6B,EAAAm6B,MAAA,SAAA97B,GAAoD,OAAAA,IAAA,GAAa,CAAE2gD,UAAA,CAAWj/C,MAAA,EAAAk/C,UAAA,GAAoB7Z,UAAA,CAAYrlC,MAAA,WAAAk/C,UAAA,KAA8Bz/C,OAAAu/C,iBAAA/+C,EAAAo6B,KAAA,SAAA/7B,GAA6C,QAAAA,GAAU,CAAE2gD,UAAA,CAAWj/C,OAAA,EAAAk/C,UAAA,GAAqB7Z,UAAA,CAAYrlC,OAAA,EAAAk/C,UAAA,KAAsBz/C,OAAAu/C,iBAAA/+C,EAAAq6B,IAAA,SAAAh8B,GAA4C,OAAA4G,KAAAi6C,OAAA7gD,IAAsB,CAAE8gD,QAAA,CAASp/C,MAAAkF,KAAAi6C,OAAA,cAAAD,UAAA,GAA4CD,UAAA,CAAYj/C,MAAAkF,KAAAi6C,OAAA,cAAAD,UAAA,GAA4C7Z,UAAA,CAAYrlC,MAAAkF,KAAAi6C,OAAA,aAAAD,UAAA,GAA2CG,iBAAA,CAAmBr/C,MAAAkF,KAAAi6C,OAAA,eAAAD,UAAA,GAA6CI,iBAAA,CAAmBt/C,OAAA,SAAAk/C,UAAA,GAA4BK,iBAAA,CAAmBv/C,MAAA,SAAAk/C,UAAA,KAA4Bz/C,OAAAu/C,iBAAA/+C,EAAAs6B,IAAA,SAAAj8B,GAA4C,OAAAA,GAAS,CAAE8gD,QAAA,CAASp/C,MAAA,qBAAAk/C,UAAA,GAAuCD,UAAA,CAAYj/C,MAAA,OAAAk/C,UAAA,GAAyB7Z,UAAA,CAAYrlC,MAAA,sBAAAk/C,UAAA,GAAwCG,iBAAA,CAAmBr/C,MAAA,uBAAAk/C,UAAA,GAAyCI,iBAAA,CAAmBt/C,OAAA,iBAAAk/C,UAAA,GAAoCK,iBAAA,CAAmBv/C,MAAA,iBAAAk/C,UAAA,KAAoCj/C,EAAAu/C,IAAAt6C,KAAAu6C,MAAAx/C,EAAAy/C,IAAA,SAAAphD,GAAqC,IAAA2B,EAAAiF,KAAAu6C,MAAAnhD,MAAuB,OAAAA,EAAA,GAAA2B,KAAgBA,EAAA0/C,OAAA,SAAArhD,GAAsB,kBAAAA,GAAA,WAAAA,OAAA,gBAAAA,IAAA,eAAAA,IAAA,oBAAiG2B,EAAA2/C,KAAA,SAAAthD,EAAA2B,GAAsB,OAAA3B,IAAA2B,GAAA,IAAA3B,IAAA,GAAA2B,GAA2BA,EAAA4/C,KAAA,SAAAvhD,EAAA2B,GAAsB,OAAA3B,KAAA2B,GAAA,IAAA3B,GAAA,GAAA2B,GAA2BA,EAAA6/C,IAAA56C,KAAA46C,IAAA7/C,EAAAiU,IAAAhP,KAAAgP,IAAAjU,EAAAkF,IAAAD,KAAAC,IAAAlF,EAAA8/C,KAAA76C,KAAA66C,KAAA9/C,EAAA+/C,MAAA96C,KAAA86C,MAAA//C,EAAAggD,QAAA,SAAA3hD,GAAwG,WAAA4G,KAAA46C,IAAAxhD,EAAA4G,KAAAg7C,MAAA5hD,IAAA,EAAA4G,KAAAi7C,MAAA,GAAA7hD,GAAA4G,KAAAi7C,MAAA7hD,IAAsE2B,EAAAmgD,OAAA,SAAA9hD,EAAA2B,EAAAlB,GAA0B,OAAAA,EAAAT,EAAA2B,GAAaA,EAAAogD,KAAAn7C,KAAAm7C,KAAApgD,EAAAigD,MAAAh7C,KAAAg7C,MAAAjgD,EAAAqgD,SAAA,SAAAhiD,EAAA2B,GAA8D,OAAAiF,KAAA46C,IAAAxhD,GAAA4G,KAAAq7C,KAAAtgD,IAAgCA,EAAAugD,MAAA,SAAAliD,GAAqB,IAAA2B,EAAA3B,GAAA,WAAAS,GAAA,SAAAT,IAAA,EAAsC,OAAA2B,GAAA3B,EAAA2B,EAAAlB,IAAA,iBAAAT,IAAA,IAA8C2B,EAAAwgD,QAAA,SAAAniD,GAAuB,OAAAA,GAAA,QAAAA,GAAA,iBAAAA,GAAwCuB,EAAAc,UAAAlB,OAAAY,OAAA8B,MAAAxB,WAAAd,EAAAc,UAAArB,KAAA,mBAAAO,EAAAc,UAAAk0C,QAAA,cAAA50C,EAAAygD,YAAA,WAA2I,UAAA7gD,GAAYiB,EAAAH,UAAAlB,OAAAY,OAAA8B,MAAAxB,WAAAG,EAAAH,UAAArB,KAAA,iBAAAW,EAAAgvB,OAAA,SAAA3wB,EAAA2B,GAAqG,GAAA3B,EAAA,OAAAA,EAAc,UAAAwC,EAAAb,IAAeA,EAAA0gD,WAAA,SAAAriD,GAA0B,OAAAA,GAASwQ,OAAA8xC,cAAA,SAAAtiD,GAAkC,OAAAwQ,OAAAqL,aAAA1Y,MAAAqN,OAAAxQ,IAA2CwQ,OAAA+xC,eAAA,SAAAviD,GAAmC,OAAAwQ,OAAAgyC,cAAAr/C,MAAAqN,OAAAxQ,IAA4CwQ,OAAAnO,UAAAogD,YAAAthD,OAAAC,eAAAoP,OAAAnO,UAAA,cAAmFX,MAAA,SAAA1B,EAAA2B,GAAoB,IAAAlB,EAAAL,KAAAuF,MAAA3F,GAAA4F,KAAAjE,GAA4B,OAAA3B,EAAA8E,SAAArE,EAAAkB,EAAAlB,EAAAkB,GAAAlB,KAA8BkB,EAAA+gD,UAAAC,OAAAD,UAAA/gD,EAAAihD,QAAA,SAAA5iD,GAAqD,uBAAAA,GAAyB2B,EAAAiiB,WAAA,SAAA5jB,GAA0B,UAAS2B,EAAAkhD,YAAA,SAAA7iD,GAA2B,uBAAAA,GAAA,iBAAAA,GAA6C2B,EAAAmhD,WAAA,SAAA9iD,GAA0B,yBAAAA,GAA2B2B,EAAAohD,SAAA,SAAA/iD,GAAwB,uBAAAA,gBAAAwQ,QAA8C7O,EAAA4O,QAAAzN,MAAAyN,QAAA5O,EAAAqhD,YAAA,SAAAhjD,GAAmD,OAAAA,GAAA,iBAAAA,GAAA,iBAAAA,EAAA8E,QAAA9E,EAAA8E,QAAA,GAAA8B,KAAAg7C,MAAA5hD,EAAA8E,UAAA9E,EAAA8E,QAAsGhC,MAAAf,OAAA,SAAA/B,GAA0B,IAAA2B,EAAA,IAAAmB,MAAA9C,GAAmB,OAAA2B,EAAAmD,OAAA,EAAAnD,GAAoBA,EAAAshD,UAAA,SAAAjjD,GAAyB,gBAAAA,GAAkB2B,EAAAuhD,WAAA,SAAAljD,GAA0B,UAAS2B,EAAAs5C,UAAA,SAAAj7C,GAAyB,OAAAA,GAAS2B,EAAAwhD,KAAA,SAAAnjD,EAAA2B,GAAsB,OAAA3B,EAAA2B,GAAWA,EAAAyhD,MAAA,SAAApjD,EAAA2B,GAAuB,OAAAiF,KAAAi6C,OAAA7gD,EAAA2B,IAAwBA,EAAA0hD,OAAAz8C,KAAe,IAAIzF,OAAAu/C,iBAAA/+C,EAAA0hD,OAAA,CAAkCC,WAAA,CAAY5hD,MAAA,EAAAk/C,UAAA,GAAoB2C,WAAA,CAAa7hD,MAAA,EAAAk/C,UAAA,GAAoB4C,QAAA,CAAU9hD,MAAA,SAAA1B,GAAkB,OAAAS,EAAA,GAAAT,EAAAyjD,QAAAvhD,EAAA,QAAAlC,QAAuC0jD,OAAA,CAAShiD,MAAA,SAAA1B,GAAkBI,KAAAkjD,WAAA18C,KAAA+8C,IAAA3jD,GAAAI,KAAAmjD,WAAA38C,KAAAg9C,IAAA5jD,OAA4D,MAAAA,IAAU2B,EAAA6L,OAAA,MAAe,IAAAxN,EAAA,IAAAwa,WAAA,GAAA/Z,EAAA,EAA4B,OAAOojD,SAAAliD,EAAAmiD,mBAAA,SAAAniD,GAA0C,KAAAA,KAAA,YAAsB,GAAAlB,EAAAkB,EAAA3B,EAAA8E,OAAA,CAAiB,IAAA5C,EAAAlC,GAAQA,EAAA,IAAAwa,WAAA5T,KAAAgP,IAAA,MAAA5V,EAAA8E,OAAAnD,EAAA,EAAA3B,EAAA8E,UAAAwJ,IAAApM,GAAiE,IAAAX,EAAAd,EAAQ,UAAAA,GAAAkB,KAAAlB,EAAA,KAAAA,IAAAc,GAA+BwiD,KAAApiD,EAAAqiD,eAAA,SAAAriD,EAAAlB,EAAAyB,GAAuClC,EAAA+jD,KAAAtjD,EAAAkB,IAAAO,IAAgB89B,KAAAr+B,EAAAsiD,eAAA,SAAAjkD,KAAoCkkD,KAAAviD,EAAAwiD,eAAA,SAAAxiD,EAAAlB,EAAAyB,GAAuClC,EAAAokD,WAAAziD,EAAAlB,IAAAyB,IAAsB0Y,MAAAjZ,EAAA0iD,gBAAA,WAAoCrkD,EAAA,IAAAwa,WAAA,GAAA/Z,EAAA,KAA/a,GAAyckB,EAAA2iD,MAAA3iD,EAAA4iD,SAAA,SAAAvkD,EAAA2B,EAAAlB,GAAuC+jD,MAAA,EAAAxkD,IAAA,EAAAS,IAAAkB,GAAoBA,EAAA8iD,KAAA9iD,EAAA+iD,QAAA,SAAA1kD,EAAA2B,GAAgC,OAAA6iD,MAAA,EAAAxkD,IAAA,EAAA2B,KAAyBA,EAAAgjD,UAAA,eAA0B/jD,KAAAR,KAAAK,EAAA,KAAkB,SAAAT,EAAA2B,EAAAlB,IAAiB,SAAAT,GAAa,MAAA2B,EAAA,IAAA+9B,aAAA,GAAAj/B,EAAA,IAAAg/B,aAAA99B,EAAAgZ,QAAAzY,EAAA,IAAAi9B,WAAAx9B,EAAAgZ,QAAoF3a,EAAA+7C,WAAA,SAAA/7C,GAAyB,OAAAS,EAAA,GAAAT,EAAAkC,EAAA,IAAmBlC,EAAA67C,WAAA,SAAA77C,GAA0B,OAAAkC,EAAA,GAAAlC,EAAAS,EAAA,IAAmBT,EAAAm8C,WAAA,SAAAn8C,GAA0B,OAAA2B,EAAA,GAAA3B,EAAAipC,QAAA/mC,EAAA,GAAAA,EAAA,KAAiClC,EAAAi8C,WAAA,SAAAj8C,GAA0B,OAAAkC,EAAA,GAAA4nC,QAAA9pC,GAAAkC,EAAA,GAAA6nC,SAAA/pC,GAAA2B,EAAA,MAA8Cf,KAAAR,KAAAK,EAAA,KAAkB,SAAAT,EAAA2B,EAAAlB,IAAiB,SAAAT,GAAa,MAAA2B,EAAA3B,EAAA4kD,MAAAnkD,EAAA,IAAsBT,EAAA23C,SAAAh2C,EAAAkjD,KAAA7kD,EAAA03C,QAAA/1C,EAAAmjD,IAAA9kD,EAAAipC,QAAA,SAAAjpC,EAAAS,GAA0D,OAAAkB,EAAAojD,SAAA/kD,EAAAS,IAAuBT,EAAA8pC,QAAA,SAAA9pC,GAAuB,OAAAA,EAAAglD,KAAahlD,EAAA+pC,SAAA,SAAA/pC,GAAwB,OAAAA,EAAAilD,MAAcjlD,EAAAkpC,QAAA,SAAAlpC,EAAA2B,GAAyB,OAAA3B,EAAA4yC,IAAAjxC,IAAgB3B,EAAAklD,QAAA,SAAAllD,EAAA2B,GAAyB,OAAA3B,EAAAmlD,IAAAxjD,IAAgB3B,EAAAupC,QAAA,SAAAvpC,EAAA2B,GAAyB,OAAA3B,EAAAolD,IAAAzjD,IAAgB3B,EAAAqlD,QAAA,SAAArlD,EAAA2B,GAAyB,OAAA3B,EAAAslD,IAAA3jD,IAAgB3B,EAAAulD,UAAA,SAAAvlD,EAAA2B,GAA2B,OAAA3B,EAAAwlD,aAAAF,IAAA3jD,EAAA6jD,cAAAC,YAAqDzlD,EAAA0lD,QAAA,SAAA1lD,EAAA2B,GAAyB,OAAA3B,EAAA6/B,IAAAl+B,IAAgB3B,EAAA2lD,UAAA,SAAA3lD,EAAA2B,GAA2B,OAAA3B,EAAAwlD,aAAA3lB,IAAAl+B,EAAA6jD,cAAAC,YAAqDzlD,EAAAy3C,QAAA,SAAAz3C,EAAA2B,GAAyB,OAAA3B,EAAA4lD,IAAAjkD,IAAgB3B,EAAA63C,OAAA,SAAA73C,EAAA2B,GAAwB,OAAA3B,EAAA6lD,GAAAlkD,IAAe3B,EAAA8lD,QAAA,SAAA9lD,EAAA2B,GAAyB,OAAA3B,EAAA+lD,IAAApkD,IAAgB3B,EAAAmpC,QAAA,SAAAnpC,EAAA2B,GAAyB,OAAA3B,EAAAgmD,IAAArkD,IAAgB3B,EAAAimD,QAAA,SAAAjmD,EAAA2B,GAAyB,OAAA3B,EAAAkmD,IAAAvkD,IAAgB3B,EAAAmmD,UAAA,SAAAnmD,EAAA2B,GAA2B,OAAA3B,EAAAomD,KAAAzkD,IAAiB3B,EAAA83C,QAAA,SAAA93C,GAAuB,OAAAA,EAAAqmD,OAAermD,EAAAsmD,OAAA,SAAAtmD,EAAA2B,GAAwB,OAAA3B,EAAAumD,GAAA5kD,IAAe3B,EAAAw3C,OAAA,SAAAx3C,EAAA2B,GAAwB,OAAA3B,EAAAwpB,GAAA7nB,IAAe3B,EAAAwmD,UAAA,SAAAxmD,EAAAS,GAA2BkwB,OAAAlwB,GAAA,IAAAA,IAAA,IAAsB,IAAAyB,EAAAP,EAAA8kD,QAAAhmD,EAAA,GAAqB,OAAAT,EAAA4yC,IAAA1wC,GAAA0jD,IAAA1jD,EAAAmkD,QAA6BrmD,EAAA0mD,UAAA,SAAA1mD,GAAyB,WAAAA,EAAAilD,MAAAjlD,EAAAglD,KAAA,GAAAhlD,EAAAglD,KAAA3pB,GAAA0L,YAAA,IAAA/mC,EAAAilD,MAAAjlD,EAAAglD,KAAA3pB,GAAAslB,WAAA3gD,EAAAglD,IAAA,GAA4FhlD,EAAA2mD,WAAA,SAAA3mD,GAA0B,WAAAA,EAAAilD,MAAAjlD,EAAAglD,KAAA,GAAAhlD,EAAAglD,KAAA1pB,IAAAyL,YAAA,IAAA/mC,EAAAilD,MAAAjlD,EAAAglD,KAAA1pB,IAAAqlB,WAAA3gD,EAAAglD,IAAA,GAA8FhlD,EAAA4mD,WAAA,SAAA5mD,GAA0B,WAAAA,EAAAilD,MAAAjlD,EAAAglD,KAAA,QAAAhlD,EAAAilD,MAAAjlD,EAAAglD,IAAA,GAAkDhlD,EAAA6mD,UAAA,SAAA7mD,GAAyB,WAAAA,EAAAilD,MAAAjlD,EAAAglD,KAAA,GAAAhlD,EAAAglD,KAAAtpB,GAAAqL,WAAiD/mC,EAAA8mD,WAAA,SAAA9mD,GAA0B,WAAAA,EAAAilD,MAAAjlD,EAAAglD,KAAA,GAAAhlD,EAAAglD,KAAArpB,IAAAoL,WAAkD/mC,EAAA+mD,WAAA,SAAA/mD,GAA0B,WAAAA,EAAAilD,MAAkBjlD,EAAAgnD,YAAA,SAAAhnD,GAA2B,WAAAA,EAAAilD,OAAA,IAAAjlD,EAAAglD,KAAA,IAAAhlD,EAAAglD,MAA2C,MAAA9iD,EAAAP,EAAAslD,WAAAjrB,IAAAglB,kBAAAz/C,EAAAI,EAAAslD,WAAAjrB,IAAAilB,kBAAgFjhD,EAAAknD,WAAA,SAAAlnD,GAAyB,OAAAA,EAAAmnD,IAAAjlD,IAAAlC,EAAAonD,IAAA7lD,IAA2B,MAAAiB,EAAAb,EAAAslD,WAAAhrB,IAAA+kB,kBAAApiC,EAAAjd,EAAAslD,WAAAhrB,IAAAglB,kBAAgFjhD,EAAAqnD,WAAA,SAAArnD,GAAyB,OAAAA,EAAAmnD,IAAA3kD,IAAAxC,EAAAonD,IAAAxoC,IAA0B5e,EAAAsnD,WAAA,SAAA3lD,GAA0B,OAAA3B,EAAA4G,KAAAi6C,OAAAl/C,EAAA4lD,aAAmCvnD,EAAAwnD,WAAA,SAAAxnD,GAA0B,OAAAA,EAAAunD,YAAoBvnD,EAAAqgD,cAAA,SAAArgD,EAAA2B,GAA+B,OAAAA,EAAA3B,EAAAwlD,aAAAxlD,GAAA+a,SAAA,OAAyCna,KAAAR,KAAAK,EAAA,KAAkB,SAAAT,EAAA2B,GAAe3B,EAAAH,QAAAqC,EAAY,IAAAzB,EAAA,KAAW,IAAIA,EAAA,IAAAgnD,YAAAC,SAAA,IAAAD,YAAAE,OAAA,IAAAntC,WAAA,w2BAAu6B3a,QAAU,MAAAG,IAAU,SAAAkC,EAAAlC,EAAA2B,EAAAlB,GAAkBL,KAAA4kD,IAAA,EAAAhlD,EAAAI,KAAA6kD,KAAA,EAAAtjD,EAAAvB,KAAAwnD,WAAAnnD,EAA6C,SAAAc,EAAAvB,GAAc,YAAAA,KAAA6nD,YAA6B3lD,EAAAG,UAAAwlD,WAAA1mD,OAAAC,eAAAc,EAAAG,UAAA,cAAuEX,OAAA,IAASQ,EAAA4lD,OAAAvmD,EAAa,IAAAiB,EAAA,GAAQoc,EAAA,GAAM,SAAA1d,EAAAlB,EAAA2B,GAAgB,IAAAlB,EAAAyB,EAAAX,EAAU,OAAAI,GAAAJ,EAAA,IAAAvB,KAAA,IAAAA,EAAA,OAAAkC,EAAA0c,EAAA5e,IAAAkC,GAAAzB,EAAAK,EAAAd,GAAA,EAAAA,GAAA,WAAAuB,IAAAqd,EAAA5e,GAAAS,OAAAc,GAAA,MAAAvB,GAAA,IAAAA,EAAA,OAAAkC,EAAAM,EAAAxC,IAAAkC,GAAAzB,EAAAK,EAAAd,IAAA,WAAAuB,IAAAiB,EAAAxC,GAAAS,MAA0J,SAAAse,EAAA/e,EAAA2B,GAAgB,GAAAomD,MAAA/nD,GAAA,OAAA2B,EAAA8iB,EAAAE,EAAyB,GAAAhjB,EAAA,CAAM,GAAA3B,EAAA,SAAAykB,EAAgB,GAAAzkB,GAAAe,EAAA,OAAAiH,MAAiB,CAAK,GAAAhI,IAAAqwB,EAAA,OAAAnL,EAAkB,GAAAllB,EAAA,GAAAqwB,EAAA,OAAAvL,EAAmB,OAAA9kB,EAAA,EAAA+e,GAAA/e,EAAA2B,GAAAqmD,MAAAlnD,EAAAd,EAAAU,EAAA,EAAAV,EAAAU,EAAA,EAAAiB,GAA0C,SAAAb,EAAAd,EAAA2B,EAAAlB,GAAkB,WAAAyB,EAAAlC,EAAA2B,EAAAlB,GAAoByB,EAAAukD,QAAAvlD,EAAAgB,EAAA+kD,WAAAloC,EAAA7c,EAAA6iD,SAAAjkD,EAAwC,IAAAuS,EAAAzM,KAAAg5B,IAAe,SAAAr9B,EAAAvC,EAAA2B,EAAAlB,GAAkB,OAAAT,EAAA8E,OAAA,MAAAjB,MAAA,gBAA4C,WAAA7D,GAAA,aAAAA,GAAA,cAAAA,GAAA,cAAAA,EAAA,OAAA2kB,EAAwE,oBAAAhjB,GAAAlB,EAAAkB,KAAA,GAAAA,OAAAlB,KAAA,UAAAA,EAAA,MAAAwnD,WAAA,SAAmF,IAAA/lD,EAAM,IAAAA,EAAAlC,EAAA0S,QAAA,cAAA7O,MAAA,mBAAuD,OAAA3B,EAAA,OAAAK,EAAAvC,EAAAkU,UAAA,GAAAvS,EAAAlB,GAAAunD,MAA4C,QAAAzmD,EAAAwd,EAAA1L,EAAA5S,EAAA,IAAA+B,EAAAmiB,EAAA/F,EAAA,EAA4BA,EAAA5e,EAAA8E,OAAW8Z,GAAA,GAAM,IAAA1d,EAAA0F,KAAAC,IAAA,EAAA7G,EAAA8E,OAAA8Z,GAAA9d,EAAAyc,SAAAvd,EAAAkU,UAAA0K,IAAA1d,GAAAT,GAA8D,GAAAS,EAAA,GAAQ,IAAAwiB,EAAA3E,EAAA1L,EAAA5S,EAAAS,IAAgBsB,IAAA4iD,IAAA1hC,GAAAkvB,IAAA7zB,EAAAje,SAAqB0B,OAAA4iD,IAAA7jD,IAAAqxC,IAAA7zB,EAAAje,IAA8B,OAAA0B,EAAAolD,SAAAjmD,EAAAa,EAAsB,SAAAkhB,EAAA1jB,EAAA2B,GAAgB,uBAAA3B,EAAA+e,EAAA/e,EAAA2B,GAAA,iBAAA3B,EAAAuC,EAAAvC,EAAA2B,GAAAb,EAAAd,EAAAglD,IAAAhlD,EAAAilD,KAAA,kBAAAtjD,IAAA3B,EAAA4nD,UAA2G1lD,EAAAgmD,WAAA3lD,EAAAL,EAAAimD,UAAAzkC,EAA6B,IAAAhjB,EAAA,WAAAK,EAAAL,IAAA2vB,EAAAtvB,EAAA,EAAAqE,EAAAlE,EAAA,OAAAyjB,EAAAzjB,EAAA,GAA+CgB,EAAA2iD,KAAAlgC,EAAS,IAAAF,EAAAvjB,EAAA,MAAcgB,EAAAkmD,MAAA3jC,EAAU,IAAA5jB,EAAAK,EAAA,GAAWgB,EAAA4iD,IAAAjkD,EAAQ,IAAAoxB,EAAA/wB,EAAA,MAAcgB,EAAAmmD,KAAAp2B,EAAS,IAAAE,EAAAjxB,GAAA,GAAYgB,EAAAomD,QAAAn2B,EAAY,IAAArN,EAAAhkB,GAAA,iBAA0BoB,EAAA6kC,UAAAjiB,EAAc,IAAA9c,EAAAlH,GAAA,SAAkBoB,EAAAqmD,mBAAAvgD,EAAuB,IAAAkd,EAAApkB,EAAA,kBAA0BoB,EAAAy+C,UAAAz7B,EAAc,IAAAG,EAAAnjB,EAAAG,UAAkBgjB,EAAAmjC,MAAA,WAAmB,OAAApoD,KAAAwnD,SAAAxnD,KAAA4kD,MAAA,EAAA5kD,KAAA4kD,KAA2C3/B,EAAAkiC,SAAA,WAAuB,OAAAnnD,KAAAwnD,UAAAxnD,KAAA6kD,OAAA,GAAAvkD,GAAAN,KAAA4kD,MAAA,GAAA5kD,KAAA6kD,KAAAvkD,GAAAN,KAAA4kD,MAAA,IAAiF3/B,EAAAtK,SAAA,SAAA/a,GAAwB,IAAAA,KAAA,UAAAA,EAAA,MAAAioD,WAAA,SAA+C,GAAA7nD,KAAAqoD,SAAA,UAA2B,GAAAroD,KAAAsoD,aAAA,CAAsB,GAAAtoD,KAAAmmD,GAAArhC,GAAA,CAAe,IAAAvjB,EAAAod,EAAA/e,GAAAS,EAAAL,KAAAklD,IAAA3jD,GAAAO,EAAAzB,EAAA2kD,IAAAzjD,GAAAwjD,IAAA/kD,MAA8C,OAAAK,EAAAsa,SAAA/a,GAAAkC,EAAAsmD,QAAAztC,SAAA/a,GAA2C,UAAAI,KAAA4nD,MAAAjtC,SAAA/a,GAAiC,QAAAuB,EAAAwd,EAAA1L,EAAArT,EAAA,GAAAI,KAAAwnD,UAAAplD,EAAApC,KAAAwe,EAAA,KAA+C,CAAE,IAAA1d,EAAAsB,EAAA8iD,IAAA/jD,GAAAT,GAAA0B,EAAA2iD,IAAAjkD,EAAAkkD,IAAA7jD,IAAAinD,UAAA,GAAAztC,SAAA/a,GAA2D,IAAAwC,EAAAtB,GAAAunD,SAAA,OAAA3nD,EAAA8d,EAA6B,KAAK9d,EAAAgE,OAAA,GAAWhE,EAAA,IAAAA,EAAS8d,EAAA,GAAA9d,EAAA8d,IAAUyG,EAAAsjC,YAAA,WAA0B,OAAAvoD,KAAA6kD,MAAiB5/B,EAAAujC,oBAAA,WAAkC,OAAAxoD,KAAA6kD,OAAA,GAAqB5/B,EAAAwjC,WAAA,WAAyB,OAAAzoD,KAAA4kD,KAAgB3/B,EAAAyjC,mBAAA,WAAiC,OAAA1oD,KAAA4kD,MAAA,GAAoB3/B,EAAA0jC,cAAA,WAA4B,GAAA3oD,KAAAsoD,aAAA,OAAAtoD,KAAAmmD,GAAArhC,GAAA,GAAA9kB,KAAA4nD,MAAAe,gBAAqE,QAAA/oD,EAAA,GAAAI,KAAA6kD,KAAA7kD,KAAA6kD,KAAA7kD,KAAA4kD,IAAArjD,EAAA,GAA+CA,EAAA,OAAA3B,EAAA,GAAA2B,GAAiBA,KAAK,UAAAvB,KAAA6kD,KAAAtjD,EAAA,GAAAA,EAAA,GAA6B0jB,EAAAojC,OAAA,WAAqB,WAAAroD,KAAA6kD,MAAA,IAAA7kD,KAAA4kD,KAAmC3/B,EAAA2jC,IAAA3jC,EAAAojC,OAAApjC,EAAAqjC,WAAA,WAAwC,OAAAtoD,KAAAwnD,UAAAxnD,KAAA6kD,KAAA,GAAkC5/B,EAAA4jC,WAAA,WAAyB,OAAA7oD,KAAAwnD,UAAAxnD,KAAA6kD,MAAA,GAAmC5/B,EAAA6jC,MAAA,WAAoB,aAAA9oD,KAAA4kD,MAAuB3/B,EAAA8jC,OAAA,WAAqB,aAAA/oD,KAAA4kD,MAAuB3/B,EAAA+jC,OAAA,SAAAppD,GAAsB,OAAAuB,EAAAvB,OAAA0jB,EAAA1jB,KAAAI,KAAAwnD,WAAA5nD,EAAA4nD,UAAAxnD,KAAA6kD,OAAA,OAAAjlD,EAAAilD,OAAA,QAAA7kD,KAAA6kD,OAAAjlD,EAAAilD,MAAA7kD,KAAA4kD,MAAAhlD,EAAAglD,KAA8H3/B,EAAAkhC,GAAAlhC,EAAA+jC,OAAA/jC,EAAAgkC,UAAA,SAAArpD,GAAuC,OAAAI,KAAAmmD,GAAAvmD,IAAkBqlB,EAAAikC,IAAAjkC,EAAAgkC,UAAAhkC,EAAAmE,GAAAnE,EAAAgkC,UAAAhkC,EAAAkkC,SAAA,SAAAvpD,GAA2D,OAAAI,KAAAopD,KAAAxpD,GAAA,GAAsBqlB,EAAAokC,GAAApkC,EAAAkkC,SAAAlkC,EAAAqkC,gBAAA,SAAA1pD,GAA+C,OAAAI,KAAAopD,KAAAxpD,IAAA,GAAuBqlB,EAAA+hC,IAAA/hC,EAAAqkC,gBAAArkC,EAAA2F,GAAA3F,EAAAqkC,gBAAArkC,EAAAskC,YAAA,SAAA3pD,GAA0E,OAAAI,KAAAopD,KAAAxpD,GAAA,GAAsBqlB,EAAAukC,GAAAvkC,EAAAskC,YAAAtkC,EAAAwkC,mBAAA,SAAA7pD,GAAqD,OAAAI,KAAAopD,KAAAxpD,IAAA,GAAuBqlB,EAAA8hC,IAAA9hC,EAAAwkC,mBAAAxkC,EAAA0I,GAAA1I,EAAAwkC,mBAAAxkC,EAAAykC,QAAA,SAAA9pD,GAA4E,GAAAuB,EAAAvB,OAAA0jB,EAAA1jB,IAAAI,KAAAmmD,GAAAvmD,GAAA,SAAsC,IAAA2B,EAAAvB,KAAAsoD,aAAAjoD,EAAAT,EAAA0oD,aAAyC,OAAA/mD,IAAAlB,GAAA,GAAAkB,GAAAlB,EAAA,EAAAL,KAAAwnD,SAAA5nD,EAAAilD,OAAA,EAAA7kD,KAAA6kD,OAAA,GAAAjlD,EAAAilD,OAAA7kD,KAAA6kD,MAAAjlD,EAAAglD,MAAA,EAAA5kD,KAAA4kD,MAAA,OAAA5kD,KAAA+kD,IAAAnlD,GAAA0oD,cAAA,KAA8IrjC,EAAAmkC,KAAAnkC,EAAAykC,QAAAzkC,EAAA0kC,OAAA,WAAsC,OAAA3pD,KAAAwnD,UAAAxnD,KAAAmmD,GAAArhC,KAAA9kB,KAAAimD,MAAAzT,IAAA/xC,IAAqDwkB,EAAA2iC,IAAA3iC,EAAA0kC,OAAA1kC,EAAAutB,IAAA,SAAA5yC,GAAkCuB,EAAAvB,OAAA0jB,EAAA1jB,IAAe,IAAA2B,EAAAvB,KAAA6kD,OAAA,GAAAxkD,EAAA,MAAAL,KAAA6kD,KAAA/iD,EAAA9B,KAAA4kD,MAAA,GAAAxiD,EAAA,MAAApC,KAAA4kD,IAAApmC,EAAA5e,EAAAilD,OAAA,GAAA/jD,EAAA,MAAAlB,EAAAilD,KAAAlmC,EAAA/e,EAAAglD,MAAA,GAAA3xC,EAAA,EAAA9Q,EAAA,EAAA7B,EAAA,EAAAK,EAAA,EAAkI,OAAAL,IAAAK,GAAAyB,GAAA,MAAAxC,EAAAglD,QAAA,GAAAziD,IAAA7B,GAAAwB,EAAA6c,KAAA,GAAA1L,IAAA9Q,GAAA9B,EAAAS,KAAA,GAAAmS,GAAA1R,EAAAid,EAAA9d,GAAAJ,GAAA,YAAAK,GAAA,QAAAsS,GAAA,YAAA9Q,GAAA,OAAAnC,KAAAwnD,WAAkJviC,EAAA2kC,SAAA,SAAAhqD,GAAwB,OAAAuB,EAAAvB,OAAA0jB,EAAA1jB,IAAAI,KAAAwyC,IAAA5yC,EAAAgoD,QAAwC3iC,EAAA8/B,IAAA9/B,EAAA2kC,SAAA3kC,EAAA4kC,SAAA,SAAAjqD,GAAyC,GAAAI,KAAAqoD,SAAA,OAAA9jC,EAA0B,GAAApjB,EAAAvB,OAAA0jB,EAAA1jB,IAAAS,EAAA,OAAAK,EAAAL,EAAA2kD,IAAAhlD,KAAA4kD,IAAA5kD,KAAA6kD,KAAAjlD,EAAAglD,IAAAhlD,EAAAilD,MAAAxkD,EAAAypD,WAAA9pD,KAAAwnD,UAAgG,GAAA5nD,EAAAyoD,SAAA,OAAA9jC,EAAuB,GAAAvkB,KAAAmmD,GAAArhC,GAAA,OAAAllB,EAAAkpD,QAAAhkC,EAAAP,EAAmC,GAAA3kB,EAAAumD,GAAArhC,GAAA,OAAA9kB,KAAA8oD,QAAAhkC,EAAAP,EAAmC,GAAAvkB,KAAAsoD,aAAA,OAAA1oD,EAAA0oD,aAAAtoD,KAAA4nD,MAAA5C,IAAAplD,EAAAgoD,OAAA5nD,KAAA4nD,MAAA5C,IAAAplD,GAAAgoD,MAA2F,GAAAhoD,EAAA0oD,aAAA,OAAAtoD,KAAAglD,IAAAplD,EAAAgoD,aAAiD,GAAA5nD,KAAAqpD,GAAArkD,IAAApF,EAAAypD,GAAArkD,GAAA,OAAA2Z,EAAA3e,KAAAmnD,WAAAvnD,EAAAunD,WAAAnnD,KAAAwnD,UAA4E,IAAAjmD,EAAAvB,KAAA6kD,OAAA,GAAA/iD,EAAA,MAAA9B,KAAA6kD,KAAAziD,EAAApC,KAAA4kD,MAAA,GAAApmC,EAAA,MAAAxe,KAAA4kD,IAAA9jD,EAAAlB,EAAAilD,OAAA,GAAA5xC,EAAA,MAAArT,EAAAilD,KAAA1iD,EAAAvC,EAAAglD,MAAA,GAAAtkD,EAAA,MAAAV,EAAAglD,IAAAjkD,EAAA,EAAAsvB,EAAA,EAAA5L,EAAA,EAAA5jB,EAAA,EAAgJ,OAAA4jB,IAAA5jB,GAAA+d,EAAAle,KAAA,GAAA2vB,IAAA5L,GAAAjiB,EAAA9B,KAAA,GAAA+jB,GAAA,MAAA4L,IAAA5L,GAAA7F,EAAArc,KAAA,GAAAxB,IAAAsvB,GAAAnuB,EAAAxB,KAAA,GAAA2vB,GAAA,MAAAtvB,IAAAsvB,GAAA7tB,EAAAD,KAAA,GAAA8tB,GAAA,MAAAtvB,IAAAsvB,GAAAzR,EAAAvL,KAAA,GAAAtS,GAAAY,EAAAjB,EAAAwB,EAAAK,EAAAC,EAAA6Q,EAAAuL,EAAA1d,EAAAJ,GAAA2jB,GAAA,YAAA5jB,GAAA,QAAAE,GAAA,YAAAsvB,GAAA,OAAAjwB,KAAAwnD,WAAgOviC,EAAA+/B,IAAA//B,EAAA4kC,SAAA5kC,EAAA8kC,OAAA,SAAAnqD,GAAuC,GAAAuB,EAAAvB,OAAA0jB,EAAA1jB,MAAAyoD,SAAA,MAAA5kD,MAAA,oBAA6D,IAAAlC,EAAAO,EAAAM,EAAU,GAAA/B,EAAA,OAAAL,KAAAwnD,WAAA,aAAAxnD,KAAA6kD,OAAA,IAAAjlD,EAAAglD,MAAA,IAAAhlD,EAAAilD,KAAAnkD,GAAAV,KAAAwnD,SAAAnnD,EAAA2pD,MAAA3pD,EAAA4pD,OAAAjqD,KAAA4kD,IAAA5kD,KAAA6kD,KAAAjlD,EAAAglD,IAAAhlD,EAAAilD,MAAAxkD,EAAAypD,WAAA9pD,KAAAwnD,UAAAxnD,KAAgL,GAAAA,KAAAqoD,SAAA,OAAAroD,KAAAwnD,SAAAnjC,EAAAE,EAA0C,GAAAvkB,KAAAwnD,SAAA,CAAkB,GAAA5nD,EAAA4nD,WAAA5nD,IAAAwlD,cAAAxlD,EAAA4pD,GAAAxpD,MAAA,OAAAqkB,EAAsD,GAAAzkB,EAAA4pD,GAAAxpD,KAAAgmD,KAAA,WAAAn0B,EAA+BzvB,EAAAiiB,MAAI,CAAK,GAAArkB,KAAAmmD,GAAArhC,GAAA,OAAAllB,EAAAumD,GAAA1lD,IAAAb,EAAAumD,GAAAp0B,GAAAjN,EAAAllB,EAAAumD,GAAArhC,GAAArkB,GAAAc,EAAAvB,KAAA8lD,IAAA,GAAAZ,IAAAtlD,GAAAgmD,IAAA,IAAAO,GAAA5hC,GAAA3kB,EAAA0oD,aAAA7nD,EAAAsxB,GAAAjwB,EAAA9B,KAAA+kD,IAAAnlD,EAAAolD,IAAAzjD,IAAAa,EAAAb,EAAAixC,IAAA1wC,EAAAojD,IAAAtlD,KAAkJ,GAAAA,EAAAumD,GAAArhC,GAAA,OAAA9kB,KAAAwnD,SAAAnjC,EAAAE,EAAoC,GAAAvkB,KAAAsoD,aAAA,OAAA1oD,EAAA0oD,aAAAtoD,KAAA4nD,MAAA1C,IAAAtlD,EAAAgoD,OAAA5nD,KAAA4nD,MAAA1C,IAAAtlD,GAAAgoD,MAA2F,GAAAhoD,EAAA0oD,aAAA,OAAAtoD,KAAAklD,IAAAtlD,EAAAgoD,aAAiDxlD,EAAAmiB,EAAI,IAAAziB,EAAA9B,KAAW8B,EAAAilD,IAAAnnD,IAAS,CAAE2B,EAAAiF,KAAAgP,IAAA,EAAAhP,KAAA86C,MAAAx/C,EAAAqlD,WAAAvnD,EAAAunD,aAAoD,QAAA3oC,EAAAhY,KAAA66C,KAAA76C,KAAA0jD,IAAA3oD,GAAAiF,KAAA2jD,KAAArpD,EAAA0d,GAAA,KAAAvL,EAAA,EAAAuL,EAAA,IAAArc,EAAAwc,EAAApd,GAAAjB,EAAA6B,EAAA6iD,IAAAplD,GAAgFU,EAAAgoD,cAAAhoD,EAAAkpD,GAAA1nD,IAAwBxB,GAAA6B,EAAAwc,EAAApd,GAAAT,EAAAd,KAAAwnD,WAAAxC,IAAAplD,GAAoCuC,EAAAkmD,WAAAlmD,EAAA1B,GAAA2B,IAAAowC,IAAArwC,GAAAL,IAAAijD,IAAAzkD,GAAwC,OAAA8B,GAAS6iB,EAAAigC,IAAAjgC,EAAA8kC,OAAA9kC,EAAAmlC,OAAA,SAAAxqD,GAAqC,OAAAuB,EAAAvB,OAAA0jB,EAAA1jB,IAAAS,EAAAK,GAAAV,KAAAwnD,SAAAnnD,EAAAgqD,MAAAhqD,EAAAiqD,OAAAtqD,KAAA4kD,IAAA5kD,KAAA6kD,KAAAjlD,EAAAglD,IAAAhlD,EAAAilD,MAAAxkD,EAAAypD,WAAA9pD,KAAAwnD,UAAAxnD,KAAA+kD,IAAA/kD,KAAAklD,IAAAtlD,GAAAolD,IAAAplD,KAAoJqlB,EAAAwa,IAAAxa,EAAAmlC,OAAAnlC,EAAAslC,IAAAtlC,EAAAmlC,OAAAnlC,EAAAghC,IAAA,WAAgD,OAAAvlD,GAAAV,KAAA4kD,KAAA5kD,KAAA6kD,KAAA7kD,KAAAwnD,WAA6CviC,EAAAugC,IAAA,SAAA5lD,GAAmB,OAAAuB,EAAAvB,OAAA0jB,EAAA1jB,IAAAc,EAAAV,KAAA4kD,IAAAhlD,EAAAglD,IAAA5kD,KAAA6kD,KAAAjlD,EAAAilD,KAAA7kD,KAAAwnD,WAAuEviC,EAAAwgC,GAAA,SAAA7lD,GAAkB,OAAAuB,EAAAvB,OAAA0jB,EAAA1jB,IAAAc,EAAAV,KAAA4kD,IAAAhlD,EAAAglD,IAAA5kD,KAAA6kD,KAAAjlD,EAAAilD,KAAA7kD,KAAAwnD,WAAuEviC,EAAA0gC,IAAA,SAAA/lD,GAAmB,OAAAuB,EAAAvB,OAAA0jB,EAAA1jB,IAAAc,EAAAV,KAAA4kD,IAAAhlD,EAAAglD,IAAA5kD,KAAA6kD,KAAAjlD,EAAAilD,KAAA7kD,KAAAwnD,WAAuEviC,EAAAulC,UAAA,SAAA5qD,GAAyB,OAAAuB,EAAAvB,SAAAwoD,SAAA,IAAAxoD,GAAA,IAAAI,KAAAJ,EAAA,GAAAc,EAAAV,KAAA4kD,KAAAhlD,EAAAI,KAAA6kD,MAAAjlD,EAAAI,KAAA4kD,MAAA,GAAAhlD,EAAAI,KAAAwnD,UAAA9mD,EAAA,EAAAV,KAAA4kD,KAAAhlD,EAAA,GAAAI,KAAAwnD,WAA4IviC,EAAA2gC,IAAA3gC,EAAAulC,UAAAvlC,EAAAwlC,WAAA,SAAA7qD,GAA4C,OAAAuB,EAAAvB,SAAAwoD,SAAA,IAAAxoD,GAAA,IAAAI,KAAAJ,EAAA,GAAAc,EAAAV,KAAA4kD,MAAAhlD,EAAAI,KAAA6kD,MAAA,GAAAjlD,EAAAI,KAAA6kD,MAAAjlD,EAAAI,KAAAwnD,UAAA9mD,EAAAV,KAAA6kD,MAAAjlD,EAAA,GAAAI,KAAA6kD,MAAA,OAAA7kD,KAAAwnD,WAA8JviC,EAAA6gC,IAAA7gC,EAAAwlC,WAAAxlC,EAAAylC,mBAAA,SAAA9qD,GAAqD,GAAAuB,EAAAvB,SAAAwoD,SAAA,IAAAxoD,GAAA,WAAAI,KAA+C,IAAAuB,EAAAvB,KAAA6kD,KAAgB,OAAAjlD,EAAA,GAAAc,EAAAV,KAAA4kD,MAAAhlD,EAAA2B,GAAA,GAAA3B,EAAA2B,IAAA3B,EAAAI,KAAAwnD,UAAA9mD,EAAA,KAAAd,EAAA2B,MAAA3B,EAAA,KAAAI,KAAAwnD,WAA6FviC,EAAA+gC,KAAA/gC,EAAAylC,mBAAAzlC,EAAA0lC,MAAA1lC,EAAAylC,mBAAAzlC,EAAAogC,SAAA,WAAgF,OAAArlD,KAAAwnD,SAAA9mD,EAAAV,KAAA4kD,IAAA5kD,KAAA6kD,MAAA,GAAA7kD,MAAmDilB,EAAAmgC,WAAA,WAAyB,OAAAplD,KAAAwnD,SAAAxnD,KAAAU,EAAAV,KAAA4kD,IAAA5kD,KAAA6kD,MAAA,IAAmD5/B,EAAA2lC,QAAA,SAAAhrD,GAAuB,OAAAA,EAAAI,KAAA6qD,YAAA7qD,KAAA8qD,aAA2C7lC,EAAA4lC,UAAA,WAAwB,IAAAjrD,EAAAI,KAAA6kD,KAAAtjD,EAAAvB,KAAA4kD,IAA2B,WAAArjD,MAAA,MAAAA,IAAA,OAAAA,IAAA,OAAA3B,MAAA,MAAAA,IAAA,OAAAA,IAAA,KAA4EqlB,EAAA6lC,UAAA,WAAwB,IAAAlrD,EAAAI,KAAA6kD,KAAAtjD,EAAAvB,KAAA4kD,IAA2B,OAAAhlD,IAAA,GAAAA,IAAA,OAAAA,IAAA,UAAAA,EAAA2B,IAAA,GAAAA,IAAA,OAAAA,IAAA,UAAAA,IAA4EO,EAAAipD,UAAA,SAAAnrD,EAAA2B,EAAAlB,GAA6B,OAAAA,EAAAyB,EAAAkpD,YAAAprD,EAAA2B,GAAAO,EAAAmpD,YAAArrD,EAAA2B,IAA+CO,EAAAkpD,YAAA,SAAAprD,EAAA2B,GAA6B,WAAAO,EAAAlC,EAAA,GAAAA,EAAA,MAAAA,EAAA,OAAAA,EAAA,OAAAA,EAAA,GAAAA,EAAA,MAAAA,EAAA,OAAAA,EAAA,OAAA2B,IAA8EO,EAAAmpD,YAAA,SAAArrD,EAAA2B,GAA6B,WAAAO,EAAAlC,EAAA,OAAAA,EAAA,OAAAA,EAAA,MAAAA,EAAA,GAAAA,EAAA,OAAAA,EAAA,OAAAA,EAAA,MAAAA,EAAA,GAAA2B,KAA+E,SAAA3B,EAAA2B,EAAAlB,GAAiB,aAAa,IAAAyB,EAAAX,EAAAnB,WAAAoe,YAAAtc,EAAA,SAAAlC,EAAA2B,GAA+C,OAAAO,EAAAf,OAAAsd,gBAAA,CAAiCC,UAAA,cAAa5b,OAAA,SAAA9C,EAAA2B,GAAgC3B,EAAA0e,UAAA/c,IAAc,SAAA3B,EAAA2B,GAAgB,QAAAlB,KAAAkB,IAAAW,eAAA7B,KAAAT,EAAAS,GAAAkB,EAAAlB,MAAgDT,EAAA2B,IAAO,SAAA3B,EAAA2B,GAAe,SAAAlB,IAAaL,KAAAue,YAAA3e,EAAmBkC,EAAAlC,EAAA2B,GAAA3B,EAAAqC,UAAA,OAAAV,EAAAR,OAAAY,OAAAJ,IAAAlB,EAAA4B,UAAAV,EAAAU,UAAA,IAAA5B,KAA6E+B,EAAApC,WAAAw6C,UAAA,SAAA56C,GAAqC,IAAA2B,EAAA,mBAAAH,QAAAxB,EAAAwB,OAAA6L,UAAA5M,EAAA,EAAwD,OAAAkB,IAAAf,KAAAZ,GAAA,CAAoBsjB,KAAA,WAAgB,OAAAtjB,GAAAS,GAAAT,EAAA8E,SAAA9E,OAAA,IAAmC0B,MAAA1B,KAAAS,KAAAo6C,MAAA76C,MAA4BmB,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAW,IAAAkd,EAAAne,EAAA,GAAAS,EAAA,SAAAlB,GAAyB,SAAA2B,KAAc,IAAAlB,EAAAT,EAAAY,KAAAR,KAAAuB,IAAAvB,KAA2B,OAAAK,EAAA6qD,MAAA,EAAA7qD,EAAmB,OAAAc,EAAAI,EAAA3B,GAAA2B,EAAAU,UAAAkpD,OAAA,SAAAvrD,GAA6C,OAAAA,EAAA4vB,MAAe,KAAAhR,EAAAmE,SAAA/D,OAAA5e,KAAAk8C,YAAAt8C,GAA2C,MAAM,KAAA4e,EAAAmE,SAAA9D,UAAA7e,KAAAm8C,mBAAAv8C,GAAqD,MAAM,KAAA4e,EAAAmE,SAAA7D,aAAA9e,KAAAo8C,sBAAAx8C,GAA2D,MAAM,KAAA4e,EAAAmE,SAAA5D,SAAA/e,KAAAw/C,cAAA5/C,GAA+C,KAAA4e,EAAAmE,SAAA3D,cAAAhf,KAAAq8C,mBAAAz8C,GAAyD,MAAM,KAAA4e,EAAAmE,SAAAlD,MAAA,KAAAjB,EAAAmE,SAAA7C,KAAA,KAAAtB,EAAAmE,SAAAzC,MAAA,KAAA1B,EAAAmE,SAAAxC,KAAA,KAAA3B,EAAAmE,SAAAvC,KAAA,KAAA5B,EAAAmE,SAAAtC,YAAA,KAAA7B,EAAAmE,SAAAzD,WAAAlf,KAAAs8C,0BAAA18C,GAAoM,MAAM,KAAA4e,EAAAmE,SAAAxD,UAAAnf,KAAAu8C,yBAAA38C,GAA2D,MAAM,KAAA4e,EAAAmE,SAAAvD,OAAApf,KAAAw8C,sBAAA58C,GAAqD,MAAM,KAAA4e,EAAAmE,SAAAtD,KAAArf,KAAAy8C,oBAAA78C,GAAiD,MAAM,KAAA4e,EAAAmE,SAAArD,MAAAtf,KAAA08C,qBAAA98C,GAAmD,MAAM,KAAA4e,EAAAmE,SAAApD,MAAAvf,KAAA28C,qBAAA/8C,GAAmD,MAAM,KAAA4e,EAAAmE,SAAAnD,cAAAxf,KAAA48C,6BAAAh9C,GAAmE,MAAM,KAAA4e,EAAAmE,SAAAjD,SAAA1f,KAAA68C,wBAAAj9C,GAAyD,MAAM,KAAA4e,EAAAmE,SAAAhD,WAAA3f,KAAA88C,0BAAAl9C,GAA6D,MAAM,KAAA4e,EAAAmE,SAAA/C,QAAA5f,KAAA+8C,uBAAAn9C,GAAuD,MAAM,KAAA4e,EAAAmE,SAAA9C,IAAA7f,KAAAg9C,mBAAAp9C,GAA+C,MAAM,KAAA4e,EAAAmE,SAAA5C,cAAA/f,KAAAi9C,6BAAAr9C,GAAmE,MAAM,KAAA4e,EAAAmE,SAAA3C,eAAAhgB,KAAAk9C,8BAAAt9C,GAAqE,MAAM,KAAA4e,EAAAmE,SAAA1C,QAAAjgB,KAAAm9C,uBAAAv9C,GAAuD,MAAM,KAAA4e,EAAAmE,SAAArC,aAAAtgB,KAAAo9C,4BAAAx9C,GAAiE,MAAM,KAAA4e,EAAAmE,SAAApC,YAAAvgB,KAAAq9C,2BAAAz9C,GAA+D,MAAM,KAAA4e,EAAAmE,SAAAnC,MAAAxgB,KAAAs9C,oBAAA19C,GAAkD,MAAM,KAAA4e,EAAAmE,SAAAlC,MAAAzgB,KAAAu9C,oBAAA39C,GAAkD,MAAM,KAAA4e,EAAAmE,SAAAjC,SAAA1gB,KAAAw9C,uBAAA59C,GAAwD,MAAM,KAAA4e,EAAAmE,SAAAhC,GAAA3gB,KAAAy9C,iBAAA79C,GAA4C,MAAM,KAAA4e,EAAAmE,SAAA/B,MAAA5gB,KAAA09C,oBAAA99C,GAAkD,MAAM,KAAA4e,EAAAmE,SAAA9B,OAAA7gB,KAAA29C,qBAAA/9C,GAAoD,MAAM,KAAA4e,EAAAmE,SAAA7B,cAAA9gB,KAAA49C,4BAAAh+C,GAAkE,MAAM,KAAA4e,EAAAmE,SAAA5B,aAAA/gB,KAAA69C,2BAAAj+C,GAAgE,MAAM,KAAA4e,EAAAmE,SAAA3B,WAAAhhB,KAAA89C,yBAAAl+C,GAA4D,MAAM,KAAA4e,EAAAmE,SAAA1B,IAAAjhB,KAAA+9C,kBAAAn+C,GAA8C,MAAM,KAAA4e,EAAAmE,SAAAzB,GAAAlhB,KAAAg+C,iBAAAp+C,GAA4C,MAAM,KAAA4e,EAAAmE,SAAAxB,OAAAnhB,KAAAi+C,qBAAAr+C,GAAoD,MAAM,KAAA4e,EAAAmE,SAAAvB,OAAAphB,KAAAk+C,qBAAAt+C,GAAoD,MAAM,KAAA4e,EAAAmE,SAAAtB,OAAArhB,KAAAm+C,qBAAAv+C,GAAoD,MAAM,KAAA4e,EAAAmE,SAAArB,MAAAthB,KAAAo+C,oBAAAx+C,GAAkD,MAAM,KAAA4e,EAAAmE,SAAApB,IAAAvhB,KAAAq+C,kBAAAz+C,GAA8C,MAAM,KAAA4e,EAAAmE,SAAAnB,SAAAxhB,KAAAs+C,uBAAA1+C,GAAwD,MAAM,KAAA4e,EAAAmE,SAAAjB,MAAA1hB,KAAAu+C,oBAAA3+C,GAAkD,MAAM,KAAA4e,EAAAmE,SAAAhB,iBAAA3hB,KAAAmyC,sBAAAvyC,GAA+D,MAAM,KAAA4e,EAAAmE,SAAAf,gBAAA5hB,KAAAw+C,qBAAA5+C,GAA6D,MAAM,KAAA4e,EAAAmE,SAAAd,qBAAA7hB,KAAAy+C,0BAAA7+C,GAAuE,MAAM,KAAA4e,EAAAmE,SAAAb,iBAAA9hB,KAAA0+C,sBAAA9+C,GAA+D,MAAM,KAAA4e,EAAAmE,SAAAZ,oBAAA/hB,KAAAqyC,yBAAAzyC,GAAqE,MAAM,KAAA4e,EAAAmE,SAAAX,kBAAAhiB,KAAA2+C,uBAAA/+C,GAAiE,MAAM,KAAA4e,EAAAmE,SAAAV,0BAAAjiB,KAAA4+C,+BAAAh/C,GAAiF,MAAM,KAAA4e,EAAAmE,SAAAT,qBAAAliB,KAAA6+C,0BAAAj/C,GAAuE,MAAM,KAAA4e,EAAAmE,SAAAR,kBAAAniB,KAAA8+C,uBAAAl/C,GAAiE,MAAM,KAAA4e,EAAAmE,SAAAP,qBAAApiB,KAAA++C,0BAAAn/C,GAAuE,MAAM,KAAA4e,EAAAmE,SAAAN,gBAAAriB,KAAAg/C,qBAAAp/C,GAA6D,MAAM,KAAA4e,EAAAmE,SAAAL,oBAAAtiB,KAAAi/C,yBAAAr/C,GAAqE,MAAM,KAAA4e,EAAAmE,SAAAJ,UAAAviB,KAAAorD,mBAAAxrD,GAAqD,MAAM,KAAA4e,EAAAmE,SAAAH,aAAAxiB,KAAAm/C,kBAAAv/C,GAAuD,MAAM,KAAA4e,EAAAmE,SAAA1D,UAAAjf,KAAAqrD,eAAAzrD,GAAiD,MAAM,KAAA4e,EAAAmE,SAAAF,WAAAziB,KAAAq/C,gBAAAz/C,GAAmD,MAAM,QAAA2wB,QAAA,KAAoBhvB,EAAAU,UAAAi6C,YAAA,SAAAt8C,GAAqC,IAAA2B,EAAAlB,EAAQ,IAAI,QAAAyB,EAAAM,EAAAxC,EAAAypB,YAAAloB,EAAAW,EAAAohB,QAAqC/hB,EAAAs5C,KAAQt5C,EAAAW,EAAAohB,OAAA,CAAY,IAAA1E,EAAArd,EAAAG,MAActB,KAAAkrD,QAAAlrD,KAAAkgC,MAAA1hB,GAAAxe,KAAAkrD,SAAyC,MAAAtrD,GAAS2B,EAAA,CAAGuL,MAAAlN,GAAS,QAAQ,IAAIuB,MAAAs5C,OAAAp6C,EAAAyB,EAAA64C,SAAAt6C,EAAAG,KAAAsB,GAAoC,QAAQ,GAAAP,EAAA,MAAAA,EAAAuL,SAAqBvL,EAAAU,UAAAs9C,cAAA,SAAA3/C,KAAwC2B,EAAAU,UAAAu9C,cAAA,SAAA5/C,GAAuCI,KAAAkgC,MAAAtgC,EAAAqjB,YAAArjB,EAAAsjB,MAAAljB,KAAAkgC,MAAAtgC,IAA+C2B,EAAAU,UAAAk6C,mBAAA,SAAAv8C,GAA4CI,KAAAkgC,MAAAtgC,EAAAgB,MAAAZ,KAAAkgC,MAAAtgC,EAAA2jB,gBAA+ChiB,EAAAU,UAAAm6C,sBAAA,SAAAx8C,GAA+C,IAAA2B,EAAAlB,EAAQ,IAAI,QAAAyB,EAAAM,EAAAxC,EAAA8jB,YAAAviB,EAAAW,EAAAohB,QAAqC/hB,EAAAs5C,KAAQt5C,EAAAW,EAAAohB,OAAA,CAAY,IAAA1E,EAAArd,EAAAG,MAActB,KAAAkgC,MAAA1hB,IAAe,MAAA5e,GAAS2B,EAAA,CAAGuL,MAAAlN,GAAS,QAAQ,IAAIuB,MAAAs5C,OAAAp6C,EAAAyB,EAAA64C,SAAAt6C,EAAAG,KAAAsB,GAAoC,QAAQ,GAAAP,EAAA,MAAAA,EAAAuL,OAAoB9M,KAAAkgC,MAAAtgC,EAAA+jB,aAAyBpiB,EAAAU,UAAAo6C,mBAAA,SAAAz8C,GAA4CI,KAAAkgC,MAAAtgC,EAAAgB,MAAAhB,EAAAmkB,aAAA/jB,KAAAkgC,MAAAtgC,EAAAmkB,aAAAnkB,EAAAokB,aAAAhkB,KAAAkgC,MAAAtgC,EAAAokB,cAAqGziB,EAAAU,UAAAq6C,0BAAA,SAAA18C,KAAoD2B,EAAAU,UAAAy9C,4BAAA,SAAA9/C,GAAqD,IAAA2B,EAAAvB,KAAWJ,EAAAmlB,mBAAA7X,IAAA,SAAAtN,GAAqCA,GAAA2B,EAAA2+B,MAAAtgC,MAAgB2B,EAAAU,UAAA09C,6BAAA,SAAA//C,GAAsD,GAAAA,EAAA4nB,QAAA5nB,EAAA2nB,MAAA,CAAsBgJ,OAAA3wB,EAAA4nB,OAAA9iB,QAAA9E,EAAA2nB,MAAA7iB,QAAwC,QAAAnD,EAAA,EAAYA,EAAA3B,EAAA4nB,OAAA9iB,OAAkBnD,IAAAvB,KAAAkgC,MAAAtgC,EAAA2nB,MAAAhmB,IAAAvB,KAAAkgC,MAAAtgC,EAAA4nB,OAAAjmB,MAAoDA,EAAAU,UAAAs6C,yBAAA,SAAA38C,GAAkDA,EAAAwlB,QAAAplB,KAAAkgC,MAAAtgC,EAAAwlB,QAAAplB,KAAAkgC,MAAAtgC,EAAAulB,aAAwD5jB,EAAAU,UAAAu6C,sBAAA,SAAA58C,GAA+CI,KAAAkgC,MAAAtgC,EAAA4lB,MAAAxlB,KAAAkgC,MAAAtgC,EAAA6lB,QAAuClkB,EAAAU,UAAAw6C,oBAAA,SAAA78C,GAA6CI,KAAAkgC,MAAAtgC,EAAAulB,YAAAnlB,KAAAkgC,MAAAtgC,EAAA2jB,eAAAvjB,KAAAkgC,MAAAtgC,EAAAgD,YAA6ErB,EAAAU,UAAAy6C,qBAAA,SAAA98C,GAA8CI,KAAAkgC,MAAAtgC,EAAAkmB,cAA0BvkB,EAAAU,UAAA06C,qBAAA,SAAA/8C,GAA8CI,KAAAkgC,MAAAtgC,EAAAqmB,cAA0B1kB,EAAAU,UAAA26C,6BAAA,SAAAh9C,GAAsDI,KAAAkgC,MAAAtgC,EAAA0mB,mBAAAtmB,KAAAkgC,MAAAtgC,EAAAulB,aAAyD5jB,EAAAU,UAAA46C,wBAAA,SAAAj9C,GAAiDI,KAAAkgC,MAAAtgC,EAAAkmB,cAA0BvkB,EAAAU,UAAA86C,uBAAA,SAAAn9C,KAAiD2B,EAAAU,UAAA49C,4BAAA,SAAAjgD,KAAsD2B,EAAAU,UAAA66C,0BAAA,SAAAl9C,GAAmDI,KAAAkgC,MAAAtgC,EAAAulB,YAAAnlB,KAAAkgC,MAAAtgC,EAAAmnB,SAA8CxlB,EAAAU,UAAA69C,8BAAA,SAAAlgD,KAAwD2B,EAAAU,UAAAw9C,mBAAA,SAAA7/C,EAAA2B,KAA+CA,EAAAU,UAAA89C,6BAAA,SAAAngD,KAAuD2B,EAAAU,UAAA+9C,6BAAA,SAAApgD,KAAuD2B,EAAAU,UAAA+6C,mBAAA,SAAAp9C,GAA4CI,KAAAkgC,MAAAtgC,EAAAulB,YAAAnlB,KAAAkgC,MAAAtgC,EAAA2jB,eAAAvjB,KAAAkgC,MAAAtgC,EAAAgD,YAA6ErB,EAAAU,UAAAg7C,6BAAA,SAAAr9C,GAAsDI,KAAAkgC,MAAAtgC,EAAAulB,aAAyB5jB,EAAAU,UAAAi7C,8BAAA,SAAAt9C,GAAuDI,KAAAkgC,MAAAtgC,EAAAoC,UAAAhC,KAAAkgC,MAAAtgC,EAAAulB,aAAgD5jB,EAAAU,UAAAk7C,uBAAA,SAAAv9C,GAAgDI,KAAAkgC,MAAAtgC,EAAAuoB,WAAAnoB,KAAAkgC,MAAAtgC,EAAAwoB,QAAApoB,KAAAkgC,MAAAtgC,EAAAyoB,SAAkE9mB,EAAAU,UAAAi+C,qBAAA,SAAAtgD,GAA8CI,KAAAkgC,MAAAtgC,EAAAopB,UAAsBznB,EAAAU,UAAAm7C,4BAAA,SAAAx9C,GAAqDI,KAAAkgC,MAAAtgC,EAAAopB,UAAsBznB,EAAAU,UAAAo7C,2BAAA,SAAAz9C,GAAoDI,KAAAkgC,MAAAtgC,EAAAopB,UAAsBznB,EAAAU,UAAAqpD,qBAAA,SAAA1rD,KAA+C2B,EAAAU,UAAAspD,qBAAA,SAAA3rD,KAA+C2B,EAAAU,UAAAupD,oBAAA,SAAA5rD,KAA8C2B,EAAAU,UAAAwpD,oBAAA,SAAA7rD,KAA8C2B,EAAAU,UAAAypD,oBAAA,SAAA9rD,KAA8C2B,EAAAU,UAAA0pD,2BAAA,SAAA/rD,KAAqD2B,EAAAU,UAAAq9C,sBAAA,SAAA1/C,KAAgD2B,EAAAU,UAAAq7C,oBAAA,SAAA19C,GAA6CI,KAAAkrD,QAAAlrD,KAAAkgC,MAAAtgC,EAAAypB,YAAArpB,KAAAkrD,SAAmD3pD,EAAAU,UAAAs7C,oBAAA,SAAA39C,GAA6CA,EAAA4pB,OAAAxpB,KAAAkgC,MAAAtgC,EAAA4pB,QAA6BjoB,EAAAU,UAAAu7C,uBAAA,SAAA59C,GAAgDA,EAAA4pB,OAAAxpB,KAAAkgC,MAAAtgC,EAAA4pB,QAA6BjoB,EAAAU,UAAAkwC,sBAAA,SAAAvyC,EAAA2B,GAAiDvB,KAAAkgC,MAAAtgC,EAAAgB,MAAAZ,KAAAkrD,QAAAlrD,KAAAkgC,MAAAtgC,EAAAmqB,YAAAwG,OAAA3wB,EAAA6yC,UAAA,MAAA7yC,EAAAgqB,eAAA,MAAAhqB,EAAAgqB,gBAAAhqB,EAAA6yC,WAAAzyC,KAAAkgC,MAAAtgC,EAAAgqB,gBAAAhqB,EAAAmkB,aAAA/jB,KAAAkgC,MAAAtgC,EAAAmkB,aAAA/jB,KAAAkgC,MAAAtgC,EAAAiqB,iBAAA7pB,KAAAkgC,MAAAtgC,EAAAkqB,SAAA9pB,KAAAkrD,SAA+Q3pD,EAAAU,UAAAw7C,iBAAA,SAAA79C,GAA0CI,KAAAkgC,MAAAtgC,EAAAuoB,WAAAnoB,KAAAkgC,MAAAtgC,EAAAwqB,YAAgD7oB,EAAAU,UAAAy7C,oBAAA,SAAA99C,KAA8C2B,EAAAU,UAAAu8C,qBAAA,SAAA5+C,EAAA2B,GAAgDvB,KAAAkgC,MAAAtgC,EAAAgB,MAAAZ,KAAAkgC,MAAAtgC,EAAAmqB,YAAA/pB,KAAAkgC,MAAAtgC,EAAA4nB,SAAiEjmB,EAAAU,UAAAw8C,0BAAA,SAAA7+C,GAAmDI,KAAAkgC,MAAAtgC,EAAAgB,MAAAhB,EAAAskB,aAAAlkB,KAAAkgC,MAAAtgC,EAAAskB,cAA4D3iB,EAAAU,UAAA47C,2BAAA,SAAAj+C,GAAoDI,KAAAkgC,MAAAtgC,EAAAgB,MAAAZ,KAAAkgC,MAAAtgC,EAAA2rB,eAA8ChqB,EAAAU,UAAAk9C,kBAAA,SAAAv/C,GAA2CI,KAAAkgC,MAAAtgC,EAAA8rB,WAAA1rB,KAAAkgC,MAAAtgC,EAAA+rB,eAAmDpqB,EAAAU,UAAA07C,qBAAA,SAAA/9C,GAA8CA,EAAAyC,MAAArC,KAAAkgC,MAAAtgC,EAAAyC,MAAArC,KAAAkgC,MAAAtgC,EAAAkqB,UAAiDvoB,EAAAU,UAAA27C,4BAAA,SAAAh+C,GAAqDI,KAAAkgC,MAAAtgC,EAAAkmB,cAA0BvkB,EAAAU,UAAA67C,yBAAA,SAAAl+C,GAAkDI,KAAAkgC,MAAAtgC,EAAAulB,aAAyB5jB,EAAAU,UAAAy8C,sBAAA,SAAA9+C,GAA+CI,KAAAkgC,MAAAtgC,EAAAgB,MAAAhB,EAAAsd,MAAAld,KAAAkgC,MAAAtgC,EAAAsd,MAAAtd,EAAAskB,aAAAlkB,KAAAkgC,MAAAtgC,EAAAskB,aAAAlkB,KAAAkgC,MAAAtgC,EAAAmqB,aAAgHxoB,EAAAU,UAAA87C,kBAAA,SAAAn+C,GAA2CA,EAAAskB,aAAAlkB,KAAAkgC,MAAAtgC,EAAAskB,aAAAtkB,EAAAuoB,WAAAnoB,KAAAkgC,MAAAtgC,EAAAuoB,WAAAvoB,EAAAotB,aAAAhtB,KAAAkgC,MAAAtgC,EAAAotB,aAAAhtB,KAAAkgC,MAAAtgC,EAAAwqB,YAA+I7oB,EAAAU,UAAAowC,yBAAA,SAAAzyC,EAAA2B,GAAoDvB,KAAAkgC,MAAAtgC,EAAAgB,MAAAZ,KAAAkgC,MAAAtgC,EAAAmqB,YAAAnqB,EAAA6yC,WAAAzyC,KAAAkgC,MAAAtgC,EAAAgqB,gBAAA5pB,KAAAkgC,MAAAtgC,EAAAutB,WAAAntB,KAAAkrD,QAAAtrD,EAAAwtB,MAAAptB,KAAAkgC,MAAAtgC,EAAAwtB,MAAAptB,KAAAkrD,SAAmK3pD,EAAAU,UAAA29C,oBAAA,SAAAhgD,KAA8C2B,EAAAU,UAAA+7C,iBAAA,SAAAp+C,GAA0CI,KAAAkgC,MAAAtgC,EAAAuoB,WAAAnoB,KAAAkgC,MAAAtgC,EAAAosB,QAAApsB,EAAAqsB,SAAAjsB,KAAAkgC,MAAAtgC,EAAAqsB,UAA8E1qB,EAAAU,UAAA08C,uBAAA,SAAA/+C,GAAgDI,KAAAkgC,MAAAtgC,EAAA6sB,aAAAzsB,KAAAkgC,MAAAtgC,EAAAgB,MAAAZ,KAAAkgC,MAAAtgC,EAAAmqB,aAAsExoB,EAAAU,UAAAg8C,qBAAA,SAAAr+C,GAA8CA,EAAAysB,eAAArsB,KAAAkgC,MAAAtgC,EAAAysB,eAAArsB,KAAAkgC,MAAAtgC,EAAAwsB,eAAwE7qB,EAAAU,UAAA28C,+BAAA,SAAAh/C,KAAyD2B,EAAAU,UAAA48C,0BAAA,SAAAj/C,EAAA2B,GAAqDvB,KAAAkgC,MAAAtgC,EAAAgB,MAAAhB,EAAA6yC,WAAAzyC,KAAAkgC,MAAAtgC,EAAAgqB,gBAAA5pB,KAAAkgC,MAAAtgC,EAAAiqB,iBAAAjqB,EAAAmkB,aAAA/jB,KAAAkgC,MAAAtgC,EAAAmkB,aAAA/jB,KAAAkrD,QAAAlrD,KAAAkgC,MAAAtgC,EAAAkqB,SAAA9pB,KAAAkrD,SAAoL3pD,EAAAU,UAAA68C,uBAAA,SAAAl/C,GAAgDI,KAAAkgC,MAAAtgC,EAAAgB,MAAAhB,EAAA6yC,WAAAzyC,KAAAkgC,MAAAtgC,EAAAgqB,gBAAA5pB,KAAAkgC,MAAAtgC,EAAAutB,WAAAntB,KAAAkgC,MAAAtgC,EAAAmqB,YAAA/pB,KAAAkrD,QAAAtrD,EAAAwtB,MAAAptB,KAAAkgC,MAAAtgC,EAAAwtB,MAAAptB,KAAAkrD,SAAmK3pD,EAAAU,UAAA88C,0BAAA,SAAAn/C,EAAA2B,GAAqDvB,KAAAkgC,MAAAtgC,EAAAgB,MAAAZ,KAAAkgC,MAAAtgC,EAAAmqB,YAAA/pB,KAAAkgC,MAAAtgC,EAAAkqB,UAAkEvoB,EAAAU,UAAAi8C,qBAAA,SAAAt+C,GAA8CA,EAAA0B,OAAAtB,KAAAkgC,MAAAtgC,EAAA0B,QAA6BC,EAAAU,UAAAo9C,gBAAA,SAAAz/C,GAAyCA,EAAA4pB,OAAAxpB,KAAAkgC,MAAAtgC,EAAA4pB,OAAAxpB,KAAAkgC,MAAAtgC,EAAAypB,aAAsD9nB,EAAAU,UAAAk8C,qBAAA,SAAAv+C,GAA8CI,KAAAkgC,MAAAtgC,EAAAuoB,WAAAnoB,KAAAkrD,QAAAlrD,KAAAkgC,MAAAtgC,EAAAsuB,OAAAluB,KAAAkrD,SAAsE3pD,EAAAU,UAAAm8C,oBAAA,SAAAx+C,GAA6CI,KAAAkgC,MAAAtgC,EAAA0B,QAAoBC,EAAAU,UAAAo8C,kBAAA,SAAAz+C,GAA2CI,KAAAkgC,MAAAtgC,EAAAypB,YAAAzpB,EAAA6uB,eAAAzuB,KAAAkgC,MAAAtgC,EAAA6uB,eAAAzuB,KAAAkgC,MAAAtgC,EAAA8uB,iBAAA1uB,KAAAkgC,MAAAtgC,EAAA+uB,oBAAoIptB,EAAAU,UAAA+8C,qBAAA,SAAAp/C,GAA8CI,KAAAkgC,MAAAtgC,EAAAgB,MAAAZ,KAAAkgC,MAAAtgC,EAAAmqB,YAAA/pB,KAAAkgC,MAAAtgC,EAAAsd,MAAAld,KAAAkgC,MAAAtgC,EAAAgqB,iBAA4FroB,EAAAU,UAAAg9C,yBAAA,SAAAr/C,GAAkDI,KAAAkgC,MAAAtgC,EAAAgB,MAAAhB,EAAAsd,MAAAld,KAAAkgC,MAAAtgC,EAAAsd,MAAAtd,EAAAskB,aAAAlkB,KAAAkgC,MAAAtgC,EAAAskB,cAAuF3iB,EAAAU,UAAAq8C,uBAAA,SAAA1+C,GAAgDI,KAAAkgC,MAAAtgC,EAAAmqB,YAAA/pB,KAAAkgC,MAAAtgC,EAAAwsB,eAAoD7qB,EAAAU,UAAAs8C,oBAAA,SAAA3+C,GAA6CI,KAAAkgC,MAAAtgC,EAAAuoB,WAAAnoB,KAAAkrD,QAAAlrD,KAAAkgC,MAAAtgC,EAAAwqB,WAAApqB,KAAAkrD,SAA0E3pD,EAAAU,UAAA2pD,mBAAA,SAAAhsD,KAA6C2B,EAAAU,UAAA4pD,aAAA,SAAAjsD,KAAuC2B,EAAAU,UAAAmpD,mBAAA,SAAAxrD,GAA4CI,KAAAkgC,MAAAtgC,EAAAgB,MAAAZ,KAAAkgC,MAAAtgC,EAAAgD,YAA2CrB,EAAAU,UAAAopD,eAAA,SAAAzrD,GAAwCI,KAAAkgC,MAAAtgC,EAAAgB,MAAAhB,EAAAswB,0BAAAlwB,KAAAkgC,MAAAtgC,EAAAswB,0BAAAtwB,EAAAskB,aAAAlkB,KAAAkgC,MAAAtgC,EAAAskB,aAAAlkB,KAAAkgC,MAAAtgC,EAAAsd,OAAkJ3b,EAAjnW,CAAonWlB,EAAA,IAAAyrD,iBAAwBvqD,EAAA0xC,YAAAnyC,GAAgB,SAAAlB,EAAA2B,EAAAlB,GAAiB,aAAa,IAAAyB,EAAA9B,WAAAw6C,UAAA,SAAA56C,GAAuC,IAAA2B,EAAA,mBAAAH,QAAAxB,EAAAwB,OAAA6L,UAAA5M,EAAA,EAAwD,OAAAkB,IAAAf,KAAAZ,GAAA,CAAoBsjB,KAAA,WAAgB,OAAAtjB,GAAAS,GAAAT,EAAA8E,SAAA9E,OAAA,IAAmC0B,MAAA1B,KAAAS,KAAAo6C,MAAA76C,MAA2BuB,EAAAnB,WAAA06C,QAAA,SAAA96C,EAAA2B,GAAoC,IAAAlB,EAAA,mBAAAe,QAAAxB,EAAAwB,OAAA6L,UAAoD,IAAA5M,EAAA,OAAAT,EAAe,IAAAkC,EAAAX,EAAAiB,EAAA/B,EAAAG,KAAAZ,GAAA4e,EAAA,GAAyB,IAAI,WAAK,IAAAjd,QAAA,MAAAO,EAAAM,EAAA8gB,QAAAu3B,MAAyCj8B,EAAAtZ,KAAApD,EAAAR,OAAiB,MAAA1B,GAASuB,EAAA,CAAG2L,MAAAlN,GAAS,QAAQ,IAAIkC,MAAA24C,OAAAp6C,EAAA+B,EAAAu4C,SAAAt6C,EAAAG,KAAA4B,GAAoC,QAAQ,GAAAjB,EAAA,MAAAA,EAAA2L,OAAoB,OAAA0R,GAAUzd,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAAW,IAAAc,EAAA,WAAiB,SAAAxC,KAAc,OAAAA,EAAAqC,UAAA8pD,YAAA,SAAAnsD,KAA4CA,EAAAqC,UAAA+pD,UAAA,SAAApsD,KAAoCA,EAA/G,GAAqH2B,EAAA0qD,cAAA7pD,EAAkB,IAAAoc,EAAA,WAAiB,SAAA5e,UAAc,IAAAA,MAAA,IAAAwC,GAAApC,KAAAksD,OAAAtsD,EAAoC,OAAAA,EAAAqC,UAAA8pD,YAAA,SAAAnsD,GAA2C,OAAAI,KAAA+rD,YAAAnsD,IAA2BA,EAAAqC,UAAA+pD,UAAA,SAAApsD,GAAmCI,KAAAksD,OAAAF,UAAApsD,IAAyBA,EAAAqC,UAAAi+B,MAAA,SAAAtgC,GAA+B,IAAA2B,EAAAlB,EAAA+B,EAAAoc,EAAA1d,EAAA6d,EAAA3e,KAAqB,SAAAJ,EAAA,GAAAA,aAAA8C,MAAA9C,EAAAsN,IAAA,SAAAtN,GAAmD+e,EAAAuhB,MAAAtgC,UAAa,GAAAA,aAAAuS,IAAA,IAA6B,QAAAzR,EAAAoB,EAAAlC,EAAAusD,WAAAl5C,EAAAvS,EAAAwiB,QAAoCjQ,EAAAwnC,KAAQxnC,EAAAvS,EAAAwiB,OAAA,CAAY,IAAA/gB,EAAAhB,EAAA8R,EAAA3R,MAAA,GAAAgiB,GAAAnhB,EAAA,GAAAA,EAAA,IAAiCnC,KAAAkgC,MAAA5c,IAAe,MAAA1jB,GAAS2B,EAAA,CAAGuL,MAAAlN,GAAS,QAAQ,IAAIqT,MAAAwnC,OAAAp6C,EAAAK,EAAAi6C,SAAAt6C,EAAAG,KAAAE,GAAoC,QAAQ,GAAAa,EAAA,MAAAA,EAAAuL,YAAoB,UAAAhM,EAAAlB,IAAA,mBAAAkB,EAAAM,OAAA6L,UAAA,IAA+D,QAAA3M,EAAAwB,EAAAlC,GAAAe,EAAAL,EAAA4iB,QAA0BviB,EAAA85C,KAAQ95C,EAAAL,EAAA4iB,OAAYI,EAAA3iB,EAAAW,MAAUtB,KAAAkgC,MAAA5c,GAAe,MAAA1jB,GAASwC,EAAA,CAAG0K,MAAAlN,GAAS,QAAQ,IAAIe,MAAA85C,OAAAj8B,EAAAle,EAAAq6C,SAAAn8B,EAAAhe,KAAAF,GAAoC,QAAQ,GAAA8B,EAAA,MAAAA,EAAA0K,YAAoB9M,KAAAmrD,OAAAvrD,IAAoBA,EAA1xB,GAAgyB2B,EAAAuqD,gBAAAttC,GAAoB,SAAA5e,EAAA2B,EAAAlB,GAAiB,aAAaU,OAAAC,eAAAO,EAAA,cAAsCD,OAAA,IAASC,EAAAyxC,SAAA,0NCA3whK,YAAA/yC,gCAAA,CAA4D,IAAAL,EAAA,IAAA6D,MAAA,uCAAsF,MAA7B7D,EAAAoH,KAAA,mBAA6BpH,EAClJF,EAAAD,QAAAQ,shMCDA,SAAAmsD,EAAAC,GACA,IAAAzsD,EAAA,IAAA6D,MAAA,uBAAA4oD,EAAA,KAEA,MADAzsD,EAAAoH,KAAA,mBACApH,EAEAwsD,EAAAn8C,KAAA,WAAuC,UACvCm8C,EAAAxoD,QAAAwoD,EACA1sD,EAAAD,QAAA2sD,EACAA,EAAAE,GAAA,qBCRA,SAAAjoD,EAAA0D,GAAArI,EAAAD,QAAA4E,EAAAiG,QAcA,SAAAiiD,GACA,IAAAC,EAAA,KAAAC,EAAAjsD,KAAAksD,GACAC,EAAAnmD,KAAA86C,MAAAkL,GACAI,EAAApmD,KAAA86C,MAAAkL,EAAA,OACAD,IACAI,GAAAJ,EAAA,IACAK,GAAAL,EAAA,IACA,IACAI,IACAC,GAAA,MAGA,OAAAD,EAAAC,IAvBA,IAAAF,EAAA3kD,EAAA2kD,aAAA,GACAD,EACAC,EAAAG,KACAH,EAAAI,QACAJ,EAAAK,OACAL,EAAAM,MACAN,EAAAO,WACA,WAAa,WAAAC,MAAAC","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"assemblyscript\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__11__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Compiler frontend for node.js\n *\n * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to\n * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources\n * directly through ts-node if distribution files are not present (indicated by a `-dev` version).\n *\n * Can also be packaged as a bundle suitable for in-browser use with the standard library injected\n * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details.\n *\n * @module cli/asc\n */\n\n// Use \".\" instead of \"/\" as cwd in browsers\nif (process.browser) process.cwd = function() { return \".\"; };\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst utf8 = require(\"@protobufjs/utf8\");\nconst colorsUtil = require(\"./util/colors\");\nconst optionsUtil = require(\"./util/options\");\nconst mkdirp = require(\"./util/mkdirp\");\nconst EOL = process.platform === \"win32\" ? \"\\r\\n\" : \"\\n\";\nconst SEP = process.platform === \"win32\" ? \"\\\\\" : \"/\";\nconst nearBindings = require(\"../bindings/dist/transformerBundle.js\");\nconst nearLibEntry = path.join(__dirname, \"..\", \"bindings\", \"assembly\", \"nearEntry.ts\");\n// global.Binaryen = require(\"../lib/binaryen\");\n\n// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional\n// useless code fragment on top of an actual error. suppress this:\nif (process.removeAllListeners) process.removeAllListeners(\"uncaughtException\");\n\n// Use distribution files if present, otherwise run the sources directly\nvar assemblyscript, isDev = false;\n(() => {\n try { // `asc` on the command line\n assemblyscript = require(\"../dist/assemblyscript.js\");\n } catch (e) {\n try { // `asc` on the command line without dist files\n require(\"ts-node\").register({ project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\") });\n require(\"../src/glue/js\");\n assemblyscript = require(\"../src\");\n isDev = true;\n } catch (e_ts) {\n try { // `require(\"dist/asc.js\")` in explicit browser tests\n assemblyscript = eval(\"require('./assemblyscript')\");\n } catch (e) {\n // combine both errors that lead us here\n e.stack = e_ts.stack + \"\\n---\\n\" + e.stack;\n throw e;\n }\n }\n }\n})();\n\n/** Whether this is a webpack bundle or not. */\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\n\n/** Whether asc runs the sources directly or not. */\nexports.isDev = isDev;\n\n/** AssemblyScript version. */\nexports.version = exports.isBundle ? BUNDLE_VERSION : require(\"../package.json\").version;\n\n/** Available CLI options. */\nexports.options = require(\"./asc.json\");\n\n/** Common root used in source maps. */\nexports.sourceMapRoot = \"assemblyscript:///\";\n\n/** Prefix used for library files. */\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\n\n/** Default Binaryen optimization level. */\nexports.defaultOptimizeLevel = 3;\n\n/** Default Binaryen shrink level. */\nexports.defaultShrinkLevel = 1;\n\n/** Bundled library files. */\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle\n const libDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\n const libFiles = require(\"glob\").sync(\"**/!(*.d).ts\", { cwd: libDir })\n const bundled = {\n \"nearEntry\": fs.readFileSync(nearLibEntry, \"utf8\")\n };\n libFiles.forEach(file => bundled[file.replace(/\\.ts$/, \"\")] = fs.readFileSync(path.join(libDir, file), \"utf8\" ));\n return bundled;\n})();\n\n/** Bundled definition files. */\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle\n const stdDir = path.join(__dirname, \"..\", \"std\");\n return {\n \"assembly\": fs.readFileSync(path.join(stdDir, \"assembly\", \"index.d.ts\"), \"utf8\"),\n \"portable\": fs.readFileSync(path.join(stdDir, \"portable\", \"index.d.ts\"), \"utf8\")\n };\n})();\n\n/** Convenience function that parses and compiles source strings directly. */\nexports.compileString = (sources, options) => {\n if (typeof sources === \"string\") sources = { \"input.ts\": sources };\n const output = Object.create({\n stdout: createMemoryStream(),\n stderr: createMemoryStream()\n });\n var argv = [\n \"--binaryFile\", \"binary\",\n \"--textFile\", \"text\",\n ];\n Object.keys(options || {}).forEach(key => {\n var val = options[key];\n if (Array.isArray(val)) val.forEach(val => argv.push(\"--\" + key, String(val)));\n else argv.push(\"--\" + key, String(val));\n });\n exports.main(argv.concat(Object.keys(sources)), {\n stdout: output.stdout,\n stderr: output.stderr,\n readFile: name => sources.hasOwnProperty(name) ? sources[name] : null,\n writeFile: (name, contents) => output[name] = contents,\n listFiles: () => []\n });\n return output;\n}\n\n/** Runs the command line utility using the specified arguments array. */\nexports.main = function main(argv, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (!options) {\n options = {};\n }\n\n const stdout = options.stdout || process.stdout;\n const stderr = options.stderr || process.stderr;\n const readFile = options.readFile || readFileNode;\n const writeFile = options.writeFile || writeFileNode;\n const listFiles = options.listFiles || listFilesNode;\n const stats = options.stats || createStats();\n\n // Output must be specified if not present in the environment\n if (!stdout) throw Error(\"'options.stdout' must be specified\");\n if (!stderr) throw Error(\"'options.stderr' must be specified\");\n\n const opts = optionsUtil.parse(argv, exports.options);\n const args = opts.options;\n argv = opts.arguments;\n if (args.noColors) {\n colorsUtil.stdout.supported =\n colorsUtil.stderr.supported = false;\n } else {\n colorsUtil.stdout = colorsUtil.from(stdout);\n colorsUtil.stderr = colorsUtil.from(stderr);\n }\n\n // Check for unknown arguments\n if (opts.unknown.length) {\n opts.unknown.forEach(arg => {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unknown option '\" + arg + \"'\" + EOL);\n });\n }\n\n // Check for trailing arguments\n if (opts.trailing.length) {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unsupported trailing arguments: \" + opts.trailing.join(\" \") + EOL);\n }\n\n // Use default callback if none is provided\n if (!callback) callback = function defaultCallback(err) {\n var code = 0;\n if (err) {\n stderr.write(colorsUtil.stderr.red(\"ERROR: \") + err.stack.replace(/^ERROR: /i, \"\") + EOL);\n code = 1;\n }\n return code;\n };\n\n // Just print the version if requested\n if (args.version) {\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + EOL);\n return callback(null);\n }\n // Print the help message if requested or no source files are provided\n if (args.help || !argv.length) {\n var out = args.help ? stdout : stderr;\n var color = args.help ? colorsUtil.stdout : colorsUtil.stderr;\n out.write([\n color.white(\"SYNTAX\"),\n \" \" + color.cyan(\"asc\") + \" [entryFile ...] [options]\",\n \"\",\n color.white(\"EXAMPLES\"),\n \" \" + color.cyan(\"asc\") + \" hello.ts\",\n \" \" + color.cyan(\"asc\") + \" hello.ts -b hello.wasm -t hello.wat\",\n \" \" + color.cyan(\"asc\") + \" hello1.ts hello2.ts -b -O > hello.wasm\",\n \"\",\n color.white(\"OPTIONS\"),\n ].concat(\n optionsUtil.help(exports.options, 24, EOL)\n ).join(EOL) + EOL);\n return callback(null);\n }\n\n // I/O must be specified if not present in the environment\n if (!fs.readFileSync) {\n if (readFile === readFileNode) throw Error(\"'options.readFile' must be specified\");\n if (writeFile === writeFileNode) throw Error(\"'options.writeFile' must be specified\");\n if (listFiles === listFilesNode) throw Error(\"'options.listFiles' must be specified\");\n }\n\n // Set up base directory\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : \".\";\n\n // Set up transforms\n const transforms = args.notNear ? [] : [nearBindings];\n //Add near's bindings by default\n if (args.transform) {\n args.transform.forEach(transform =>\n transforms.push(\n require(\n path.isAbsolute(transform = transform.trim())\n ? transform\n : path.join(process.cwd(), transform)\n )\n )\n );\n }\n function applyTransform(name, ...args) {\n transforms.forEach(transform => {\n if (typeof transform[name] === \"function\") transform[name](...args);\n });\n }\n\n // Begin parsing\n var parser = null;\n\n // Maps package names to parent directory\n var packages = new Map();\n var importPathMap = new Map();\n\n // Include library files\n Object.keys(exports.libraryFiles).forEach(libPath => {\n if (libPath.indexOf(\"/\") >= 0) return; // in sub-directory: imported on demand\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n exports.libraryFiles[libPath],\n exports.libraryPrefix + libPath + \".ts\",\n false,\n parser\n );\n });\n });\n const customLibDirs = [];\n if (args.lib) {\n let lib = args.lib;\n if (typeof lib === \"string\") lib = lib.split(\",\");\n Array.prototype.push.apply(customLibDirs, lib.map(lib => lib.trim()));\n for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom\n let libDir = customLibDirs[i];\n let libFiles;\n if (libDir.endsWith(\".ts\")) {\n libFiles = [ path.basename(libDir) ];\n libDir = path.dirname(libDir);\n } else {\n libFiles = listFiles(libDir, baseDir) || [];\n }\n for (let j = 0, l = libFiles.length; j < l; ++j) {\n let libPath = libFiles[j];\n let libText = readFile(libPath, libDir);\n if (libText === null) return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\n stats.parseCount++;\n exports.libraryFiles[libPath.replace(/\\.ts$/, \"\")] = libText;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n libText,\n exports.libraryPrefix + libPath,\n false,\n parser\n );\n });\n }\n }\n }\n args.path = args.path || [];\n // Find all valid node_module paths starting at baseDir\n function nodePaths(basePath, _path) {\n return basePath.split(SEP)\n .map((_, i, arr) => {\n let dir = arr.slice(0, i + 1).join(SEP) || SEP;\n let dirFrom = path.relative(baseDir, dir);\n return path.join(dirFrom, _path);\n })\n .filter(dir => listFiles(dir, baseDir))\n .reverse();\n }\n function getPaths(basePath) {\n let paths = args.path.map(p => nodePaths(basePath, p));\n return nodePaths(basePath, \"node_modules\").concat(...paths)\n }\n\n // Parses the backlog of imported files after including entry files\n function parseBacklog() {\n var sourcePath, sourceText, sysPath;\n // dependee is the path of the file that depends on sourcePath\n while ((sourcePath = parser.nextFile()) != null) {\n dependee = importPathMap.get(assemblyscript.getDependee(parser, sourcePath)) || baseDir;\n sourceText = null;\n sysPath = null;\n \n // Load library file if explicitly requested\n if (sourcePath.startsWith(exports.libraryPrefix)) {\n const plainName = sourcePath.substring(exports.libraryPrefix.length);\n const indexName = sourcePath.substring(exports.libraryPrefix.length) + \"/index\";\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n sourceText = readFile(plainName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(customLibDirs[i], plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(customLibDirs[i], indexName + \".ts\");\n break;\n }\n }\n }\n }\n\n // Otherwise try nextFile.ts, nextFile/index.ts, ~lib/nextFile.ts, ~lib/nextFile/index.ts\n } else {\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(plainName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n sysPath = path.join(baseDir, sourcePath);\n } else {\n sourceText = readFile(indexName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n } else if (!plainName.startsWith(\".\")) {\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n const dir = customLibDirs[i];\n sourceText = readFile(plainName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(dir, plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(dir, indexName + \".ts\");\n break;\n }\n }\n }\n }\n }\n }\n }\n /*\n In this case the library wasn't found so we check paths\n */\n if (sourceText == null) {\n if (args.traceResolution) {\n stderr.write(\"Looking for '\" + sourcePath + \"' imported by '\" + dependee + \"'\" + EOL);\n }\n paths = getPaths(path.join(baseDir, dependee));\n let _package = sourcePath.replace(/\\~lib\\/([^\\/]*).*/, \"$1\");\n for (let _path of paths) {\n let ascMain = (() => {\n if (packages.has(_package)) {\n return packages.get(_package);\n }\n let p = path.join(_path, _package, \"package.json\");\n let res = readFile(p, baseDir);\n if (res) {\n let package_json;\n try {\n package_json = JSON.parse(res);\n } catch (e) {\n return callback(Error(\"Parsing \" + p + \" failed\"));\n }\n let mainFile = package_json.ascMain;\n if (mainFile && (typeof mainFile === 'string')) {\n let newPackage = mainFile.replace(/(.*)\\/index\\.ts/, '$1');\n packages.set(_package, newPackage);\n return newPackage;\n }\n }\n return \"assembly\";\n })()\n let realPath = (_p) => {\n if (_p.startsWith(exports.libraryPrefix)){\n _p = _p.substring(exports.libraryPrefix.length);\n }\n let first = _p.substring(0, _p.indexOf(\"/\"));\n let second = _p.substring(_p.indexOf(\"/\") + 1);\n return path.join(_path, first, ascMain, second);\n }\n if (args.traceResolution) {\n stderr.write(\" in '\" + realPath(sourcePath) + \"'\");\n }\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(realPath(plainName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n } else {\n sourceText = readFile(realPath(indexName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n }\n }\n if (sourceText !== null) {\n if (args.traceResolution) {\n stderr.write(EOL + \" -> '\" + realPath(sourcePath) + \"'\" + EOL);\n }\n let newPath = path.join(_path, _package);\n sysPath = newPath;\n break;\n }\n if (args.traceResolution) {\n stderr.write(EOL);\n }\n }\n }\n if (sourceText == null) {\n return callback(Error(\"Import file '\" + sourcePath + \".ts' not found.\"));\n }\n importPathMap.set(sourcePath.replace(/\\.ts$/, \"\"), sysPath);\n stats.parseCount++;\n stats.parseTime += measure(() => {\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\n });\n }\n if (checkDiagnostics(parser, stderr)) {\n return callback(Error(\"Parse error\"));\n }\n }\n\n // Include runtime template before entry files so its setup runs first\n {\n let runtimeName = String(args.runtime);\n let runtimePath = \"rt/index-\" + runtimeName;\n let runtimeText = exports.libraryFiles[runtimePath];\n if (runtimeText == null) {\n runtimePath = runtimeName;\n runtimeText = readFile(runtimePath + \".ts\", baseDir);\n if (runtimeText == null) {\n return callback(Error(\"Runtime '\" + runtimeName + \"' not found.\"));\n }\n } else {\n runtimePath = \"~lib/\" + runtimePath;\n }\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser);\n });\n }\n\n // Include entry files\n for (let i = 0, k = argv.length; i < k; ++i) {\n const filename = argv[i];\n\n let sourcePath = String(filename).replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\n // Setting the path to relative path\n sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath) : sourcePath;\n\n // Try entryPath.ts, then entryPath/index.ts\n let sourceText = readFile(sourcePath + \".ts\", baseDir);\n if (sourceText === null) {\n sourceText = readFile(sourcePath + \"/index.ts\", baseDir);\n if (sourceText === null) {\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\n } else {\n sourcePath += \"/index.ts\";\n }\n } else {\n sourcePath += \".ts\";\n }\n\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\n });\n }\n\n // Parse entry files\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Call afterParse transform hook\n applyTransform(\"afterParse\", parser, writeFile, baseDir);\n\n // Parse additional files, if any\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Finish parsing\n const program = assemblyscript.finishParsing(parser);\n\n // Print files and exit if listFiles\n if (args.listFiles) {\n stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL);\n return callback(null);\n }\n\n // Set up optimization levels\n var optimizeLevel = 0;\n var shrinkLevel = 0;\n if (args.optimize) {\n optimizeLevel = exports.defaultOptimizeLevel;\n shrinkLevel = exports.defaultShrinkLevel;\n }\n if (typeof args.optimizeLevel === \"number\") {\n optimizeLevel = args.optimizeLevel;\n }\n if (typeof args.shrinkLevel === \"number\") {\n shrinkLevel = args.shrinkLevel;\n }\n optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3);\n shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2);\n\n // Begin compilation\n const compilerOptions = assemblyscript.createOptions();\n assemblyscript.setTarget(compilerOptions, 0);\n assemblyscript.setNoAssert(compilerOptions, args.noAssert);\n assemblyscript.setImportMemory(compilerOptions, args.importMemory);\n assemblyscript.setSharedMemory(compilerOptions, args.sharedMemory);\n assemblyscript.setImportTable(compilerOptions, args.importTable);\n assemblyscript.setExplicitStart(compilerOptions, args.explicitStart);\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\n assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel);\n assemblyscript.setNoUnsafe(compilerOptions, args.noUnsafe);\n\n // Initialize default aliases\n assemblyscript.setGlobalAlias(compilerOptions, \"Math\", \"NativeMath\");\n assemblyscript.setGlobalAlias(compilerOptions, \"Mathf\", \"NativeMathf\");\n assemblyscript.setGlobalAlias(compilerOptions, \"abort\", \"~lib/builtins/abort\");\n assemblyscript.setGlobalAlias(compilerOptions, \"trace\", \"~lib/builtins/trace\");\n\n // Add or override aliases if specified\n if (args.use) {\n let aliases = args.use;\n for (let i = 0, k = aliases.length; i < k; ++i) {\n let part = aliases[i];\n let p = part.indexOf(\"=\");\n if (p < 0) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n let alias = part.substring(0, p).trim();\n let name = part.substring(p + 1).trim();\n if (!alias.length) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n assemblyscript.setGlobalAlias(compilerOptions, alias, name);\n }\n }\n\n // Enable additional features if specified\n var features = args.enable;\n if (features != null) {\n if (typeof features === \"string\") features = features.split(\",\");\n for (let i = 0, k = features.length; i < k; ++i) {\n let name = features[i].trim();\n let flag = assemblyscript[\"FEATURE_\" + name.replace(/\\-/g, \"_\").toUpperCase()];\n if (!flag) return callback(Error(\"Feature '\" + name + \"' is unknown.\"));\n assemblyscript.enableFeature(compilerOptions, flag);\n }\n }\n\n var module;\n stats.compileCount++;\n try {\n stats.compileTime += measure(() => {\n module = assemblyscript.compileProgram(program, compilerOptions);\n });\n } catch (e) {\n return callback(e);\n }\n if (checkDiagnostics(parser, stderr)) {\n if (module) module.dispose();\n return callback(Error(\"Compile error\"));\n }\n\n // Validate the module if requested\n if (args.validate) {\n stats.validateCount++;\n stats.validateTime += measure(() => {\n if (!module.validate()) {\n module.dispose();\n return callback(Error(\"Validate error\"));\n }\n });\n }\n\n // Set Binaryen-specific options\n if (args.trapMode === \"clamp\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-clamp\" ]);\n });\n } else if (args.trapMode === \"js\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-js\" ]);\n });\n } else if (args.trapMode !== \"allow\") {\n module.dispose();\n return callback(Error(\"Unsupported trap mode\"));\n }\n\n // Implicitly run costly non-LLVM optimizations on -O3 or -Oz\n // see: https://github.com/WebAssembly/binaryen/pull/1596\n if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;\n\n module.setOptimizeLevel(optimizeLevel);\n module.setShrinkLevel(shrinkLevel);\n module.setDebugInfo(args.debug);\n\n var runPasses = [];\n if (args.runPasses) {\n if (typeof args.runPasses === \"string\") {\n args.runPasses = args.runPasses.split(\",\");\n }\n if (args.runPasses.length) {\n args.runPasses.forEach(pass => {\n if (runPasses.indexOf(pass) < 0)\n runPasses.push(pass);\n });\n }\n }\n\n // Optimize the module if requested\n if (optimizeLevel > 0 || shrinkLevel > 0) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.optimize();\n });\n }\n\n // Run additional passes if requested\n if (runPasses.length) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses(runPasses.map(pass => pass.trim()));\n });\n }\n\n // Prepare output\n if (!args.noEmit) {\n let hasStdout = false;\n let hasOutput = false;\n\n if (args.outFile != null) {\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null) {\n args.textFile = args.outFile;\n } else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null) {\n args.asmjsFile = args.outFile;\n } else if (args.binaryFile == null) {\n args.binaryFile = args.outFile;\n }\n }\n\n // Write binary\n if (args.binaryFile != null) {\n let sourceMapURL = args.sourceMap != null\n ? args.sourceMap.length\n ? args.sourceMap\n : path.basename(args.binaryFile) + \".map\"\n : null;\n\n let wasm;\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wasm = module.toBinary(sourceMapURL)\n });\n\n if (args.binaryFile.length) {\n writeFile(args.binaryFile, wasm.output, baseDir);\n } else {\n writeStdout(wasm.output);\n hasStdout = true;\n }\n hasOutput = true;\n\n // Post-process source map\n if (wasm.sourceMap != null) {\n if (args.binaryFile.length) {\n let sourceMap = JSON.parse(wasm.sourceMap);\n sourceMap.sourceRoot = exports.sourceMapRoot;\n sourceMap.sources.forEach((name, index) => {\n let text = null;\n if (name.startsWith(exports.libraryPrefix)) {\n let stdName = name.substring(exports.libraryPrefix.length).replace(/\\.ts$/, \"\");\n if (exports.libraryFiles.hasOwnProperty(stdName)) {\n text = exports.libraryFiles[stdName];\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n text = readFile(name.substring(exports.libraryPrefix.length), customLibDirs[i]);\n if (text !== null) break;\n }\n }\n } else {\n text = readFile(name, baseDir);\n }\n if (text === null) {\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\n }\n if (!sourceMap.sourceContents) sourceMap.sourceContents = [];\n sourceMap.sourceContents[index] = text;\n });\n writeFile(path.join(\n path.dirname(args.binaryFile),\n path.basename(sourceMapURL)\n ).replace(/^\\.\\//, \"\"), JSON.stringify(sourceMap), baseDir);\n } else {\n stderr.write(\"Skipped source map (stdout already occupied)\" + EOL);\n }\n }\n }\n\n // Write asm.js\n if (args.asmjsFile != null) {\n let asm;\n if (args.asmjsFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeFile(args.asmjsFile, asm, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeStdout(asm);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write WebIDL\n if (args.idlFile != null) {\n let idl;\n if (args.idlFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeFile(args.idlFile, idl, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeStdout(idl);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write TypeScript definition\n if (args.tsdFile != null) {\n let tsd;\n if (args.tsdFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeFile(args.tsdFile, tsd, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeStdout(tsd);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write text (must be last)\n if (args.textFile != null || !hasOutput) {\n let wat;\n if (args.textFile && args.textFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText();\n });\n writeFile(args.textFile, wat, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText()\n });\n writeStdout(wat);\n }\n }\n }\n\n module.dispose();\n if (args.measure) {\n printStats(stats, stderr);\n }\n if (args.printrtti) {\n printRTTI(program, stderr);\n }\n return callback(null);\n\n function readFileNode(filename, baseDir) {\n let name = path.resolve(baseDir, filename);\n try {\n let text;\n stats.readCount++;\n stats.readTime += measure(() => {\n text = fs.readFileSync(name, { encoding: \"utf8\" });\n });\n return text;\n } catch (e) {\n return null;\n }\n }\n\n function writeFileNode(filename, contents, baseDir) {\n try {\n stats.writeCount++;\n stats.writeTime += measure(() => {\n mkdirp(path.join(baseDir, path.dirname(filename)));\n if (typeof contents === \"string\") {\n fs.writeFileSync(path.join(baseDir, filename), contents, { encoding: \"utf8\" } );\n } else {\n fs.writeFileSync(path.join(baseDir, filename), contents);\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function listFilesNode(dirname, baseDir) {\n var files;\n try {\n stats.readTime += measure(() => {\n files = fs.readdirSync(path.join(baseDir, dirname)).filter(file => /^(?!.*\\.d\\.ts$).*\\.ts$/.test(file));\n });\n return files;\n } catch (e) {\n return null;\n }\n }\n\n function writeStdout(contents) {\n if (!writeStdout.used) {\n stats.writeCount++;\n writeStdout.used = true;\n }\n stats.writeTime += measure(() => {\n if (typeof contents === \"string\") {\n stdout.write(contents, { encoding: \"utf8\" });\n } else {\n stdout.write(contents);\n }\n });\n }\n}\n\n/** Checks diagnostics emitted so far for errors. */\nfunction checkDiagnostics(emitter, stderr) {\n var diagnostic;\n var hasErrors = false;\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\n if (stderr) {\n stderr.write(\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\n EOL + EOL\n );\n }\n if (assemblyscript.isError(diagnostic)) hasErrors = true;\n }\n return hasErrors;\n}\n\nexports.checkDiagnostics = checkDiagnostics;\n\n/** Creates an empty set of stats. */\nfunction createStats() {\n return {\n readTime: 0,\n readCount: 0,\n writeTime: 0,\n writeCount: 0,\n parseTime: 0,\n parseCount: 0,\n compileTime: 0,\n compileCount: 0,\n emitTime: 0,\n emitCount: 0,\n validateTime: 0,\n validateCount: 0,\n optimizeTime: 0,\n optimizeCount: 0\n };\n}\n\nexports.createStats = createStats;\n\nif (!process.hrtime) process.hrtime = require(\"browser-process-hrtime\");\n\n/** Measures the execution time of the specified function. */\nfunction measure(fn) {\n const start = process.hrtime();\n fn();\n const times = process.hrtime(start);\n return times[0] * 1e9 + times[1];\n}\n\nexports.measure = measure;\n\n/** Formats a high resolution time to a human readable string. */\nfunction formatTime(time) {\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\n}\n\nexports.formatTime = formatTime;\n\n/** Formats and prints out the contents of a set of stats. */\nfunction printStats(stats, output) {\n function format(time, count) {\n return formatTime(time);\n }\n (output || process.stdout).write([\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\n ].join(EOL) + EOL);\n}\n\nexports.printStats = printStats;\n\n/** Prints runtime type information. */\nfunction printRTTI(program, output) {\n if (!output) output = process.stderr;\n output.write(\"# Runtime type information (RTTI)\\n\");\n output.write(assemblyscript.buildRTTI(program));\n}\n\nexports.printRTTI = printRTTI;\n\nvar allocBuffer = typeof global !== \"undefined\" && global.Buffer\n ? global.Buffer.allocUnsafe || function(len) { return new global.Buffer(len); }\n : function(len) { return new Uint8Array(len) };\n\n/** Creates a memory stream that can be used in place of stdout/stderr. */\nfunction createMemoryStream(fn) {\n var stream = [];\n stream.write = function(chunk) {\n if (fn) fn(chunk);\n if (typeof chunk === \"string\") {\n let buffer = allocBuffer(utf8.length(chunk));\n utf8.write(chunk, buffer, 0);\n chunk = buffer;\n }\n this.push(chunk);\n };\n stream.reset = function() {\n stream.length = 0;\n };\n stream.toBuffer = function() {\n var offset = 0, i = 0, k = this.length;\n while (i < k) offset += this[i++].length;\n var buffer = allocBuffer(offset);\n offset = i = 0;\n while (i < k) {\n buffer.set(this[i], offset);\n offset += this[i].length;\n ++i;\n }\n return buffer;\n };\n stream.toString = function() {\n var buffer = this.toBuffer();\n return utf8.read(buffer, 0, buffer.length);\n };\n return stream;\n}\n\nexports.createMemoryStream = createMemoryStream;\n\n/** Compatible TypeScript compiler options for syntax highlighting etc. */\nexports.tscOptions = {\n alwaysStrict: true,\n noImplicitAny: true,\n noImplicitReturns: true,\n noImplicitThis: true,\n noEmitOnError: true,\n strictNullChecks: true,\n experimentalDecorators: true,\n target: \"esnext\",\n module: \"commonjs\",\n noLib: true,\n types: [],\n allowJs: false\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var proc = typeof process !== \"undefined\" && process || {};\nvar isCI = proc.env && \"CI\" in proc.env; // doesn't work when bundled because 'process' is a mock\n\nfunction from(stream, base) {\n var colors = base || {};\n colors.supported = (stream && !!stream.isTTY) || isCI;\n colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text;\n colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text;\n colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text;\n colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text;\n colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text;\n colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text;\n colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text;\n colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text;\n return colors;\n}\n\nexports.stdout = from(proc.stdout, exports);\nexports.stderr = from(proc.stderr);\nexports.from = from;\n\nexports.GRAY = \"\\u001b[90m\";\nexports.RED = \"\\u001b[91m\";\nexports.GREEN = \"\\u001b[92m\";\nexports.YELLOW = \"\\u001b[93m\";\nexports.BLUE = \"\\u001b[94m\";\nexports.MAGENTA = \"\\u001b[95m\";\nexports.CYAN = \"\\u001b[96m\";\nexports.WHITE = \"\\u001b[97m\";\nexports.RESET = \"\\u001b[0m\";\n","// type | meaning\n// -----|---------------\n// b | boolean\n// i | integer\n// f | float\n// s | string\n// I | integer array\n// F | float array\n// S | string array\n\n/** Parses the specified command line arguments according to the given configuration. */\nfunction parse(argv, config) {\n var options = {};\n var unknown = [];\n var arguments = [];\n var trailing = [];\n\n // make an alias map and initialize defaults\n var aliases = {};\n Object.keys(config).forEach(key => {\n if (key.startsWith(\" \")) return;\n var option = config[key];\n if (option.alias != null) {\n if (typeof option.alias === \"string\") aliases[option.alias] = key;\n else if (Array.isArray(option.alias)) option.alias.forEach(alias => aliases[alias] = key);\n }\n if (option.default != null) options[key] = option.default;\n });\n\n // iterate over argv\n for (var i = 0, k = (argv = argv.slice()).length; i < k; ++i) {\n let arg = argv[i];\n if (arg == \"--\") { ++i; break; }\n let match = /^(?:(\\-\\w)(?:=(.*))?|(\\-\\-\\w{2,})(?:=(.*))?)$/.exec(arg), option, key;\n if (match) {\n if (config[arg]) option = config[key = arg]; // exact\n else if (match[1] != null) { // alias\n option = config[key = aliases[match[1].substring(1)]];\n if (option && match[2] != null) argv[i--] = match[2];\n } else if (match[3] != null) { // full\n option = config[key = match[3].substring(2)];\n if (option && match[4] != null) argv[i--] = match[4];\n }\n } else {\n if (arg.charCodeAt(0) == 45) option = config[key = arg]; // exact\n else { arguments.push(arg); continue; } // argument\n }\n if (option) {\n if (option.type == null || option.type === \"b\") options[key] = true; // flag\n else {\n if (i + 1 < argv.length && argv[i + 1].charCodeAt(0) != 45) { // present\n switch (option.type) {\n case \"i\": options[key] = parseInt(argv[++i], 10); break;\n case \"I\": options[key] = (options[key] || []).concat(parseInt(argv[++i], 10)); break;\n case \"f\": options[key] = parseFloat(argv[++i]); break;\n case \"F\": options[key] = (options[key] || []).concat(parseFloat(argv[++i])); break;\n case \"s\": options[key] = String(argv[++i]); break;\n case \"S\": options[key] = (options[key] || []).concat(argv[++i].split(\",\")); break;\n default: unknown.push(arg); --i;\n }\n } else { // omitted\n switch (option.type) {\n case \"i\":\n case \"f\": options[key] = option.default || 0; break;\n case \"s\": options[key] = option.default || \"\"; break;\n case \"I\":\n case \"F\":\n case \"S\": options[key] = options.default || []; break;\n default: unknown.push(arg);\n }\n }\n }\n if (option.value) Object.keys(option.value).forEach(k => options[k] = option.value[k]);\n } else unknown.push(arg);\n }\n while (i < k) trailing.push(argv[i++]); // trailing\n\n return { options, unknown, arguments, trailing };\n}\n\nexports.parse = parse;\n\n/** Generates the help text for the specified configuration. */\nfunction help(config, options) {\n if (!options) options = {};\n var indent = options.indent || 2;\n var padding = options.padding || 24;\n var eol = options.eol || \"\\n\";\n var sb = [];\n Object.keys(config).forEach(key => {\n var option = config[key];\n if (option.description == null) return;\n var text = \"\";\n while (text.length < indent) text += \" \";\n text += \"--\" + key;\n if (option.alias) text += \", -\" + option.alias;\n while (text.length < padding) text += \" \";\n if (Array.isArray(option.description)) {\n sb.push(text + option.description[0] + option.description.slice(1).map(line => {\n for (let i = 0; i < padding; ++i) line = \" \" + line;\n return eol + line;\n }).join(\"\"));\n } else sb.push(text + option.description);\n });\n return sb.join(eol);\n}\n\nexports.help = help;\n","/*\nCopyright 2010 James Halliday (mail@substack.net)\n\nThis project is free software released under the MIT/X11 license:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nvar path = require(\"path\");\nvar fs = require(\"fs\");\nvar _0777 = parseInt(\"0777\", 8);\n\nmodule.exports = function mkdirp(p, opts, made) {\n if (!opts || typeof opts !== \"object\") {\n opts = { mode: opts };\n }\n var mode = opts.mode;\n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n p = path.resolve(p);\n try {\n fs.mkdirSync(p, mode);\n made = made || p;\n } catch (err0) {\n switch (err0.code) {\n case \"ENOENT\":\n made = mkdirp(path.dirname(p), opts, made);\n mkdirp(p, opts, made);\n break;\n default:\n var stat;\n try {\n stat = fs.statSync(p);\n } catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n return made;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.transformer=t():e.transformer=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=6)}([function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]=\"SOURCE\",e[e.NAMEDTYPE=1]=\"NAMEDTYPE\",e[e.FUNCTIONTYPE=2]=\"FUNCTIONTYPE\",e[e.TYPENAME=3]=\"TYPENAME\",e[e.TYPEPARAMETER=4]=\"TYPEPARAMETER\",e[e.PARAMETER=5]=\"PARAMETER\",e[e.IDENTIFIER=6]=\"IDENTIFIER\",e[e.ASSERTION=7]=\"ASSERTION\",e[e.BINARY=8]=\"BINARY\",e[e.CALL=9]=\"CALL\",e[e.CLASS=10]=\"CLASS\",e[e.COMMA=11]=\"COMMA\",e[e.ELEMENTACCESS=12]=\"ELEMENTACCESS\",e[e.FALSE=13]=\"FALSE\",e[e.FUNCTION=14]=\"FUNCTION\",e[e.INSTANCEOF=15]=\"INSTANCEOF\",e[e.LITERAL=16]=\"LITERAL\",e[e.NEW=17]=\"NEW\",e[e.NULL=18]=\"NULL\",e[e.PARENTHESIZED=19]=\"PARENTHESIZED\",e[e.PROPERTYACCESS=20]=\"PROPERTYACCESS\",e[e.TERNARY=21]=\"TERNARY\",e[e.SUPER=22]=\"SUPER\",e[e.THIS=23]=\"THIS\",e[e.TRUE=24]=\"TRUE\",e[e.CONSTRUCTOR=25]=\"CONSTRUCTOR\",e[e.UNARYPOSTFIX=26]=\"UNARYPOSTFIX\",e[e.UNARYPREFIX=27]=\"UNARYPREFIX\",e[e.BLOCK=28]=\"BLOCK\",e[e.BREAK=29]=\"BREAK\",e[e.CONTINUE=30]=\"CONTINUE\",e[e.DO=31]=\"DO\",e[e.EMPTY=32]=\"EMPTY\",e[e.EXPORT=33]=\"EXPORT\",e[e.EXPORTDEFAULT=34]=\"EXPORTDEFAULT\",e[e.EXPORTIMPORT=35]=\"EXPORTIMPORT\",e[e.EXPRESSION=36]=\"EXPRESSION\",e[e.FOR=37]=\"FOR\",e[e.IF=38]=\"IF\",e[e.IMPORT=39]=\"IMPORT\",e[e.RETURN=40]=\"RETURN\",e[e.SWITCH=41]=\"SWITCH\",e[e.THROW=42]=\"THROW\",e[e.TRY=43]=\"TRY\",e[e.VARIABLE=44]=\"VARIABLE\",e[e.VOID=45]=\"VOID\",e[e.WHILE=46]=\"WHILE\",e[e.CLASSDECLARATION=47]=\"CLASSDECLARATION\",e[e.ENUMDECLARATION=48]=\"ENUMDECLARATION\",e[e.ENUMVALUEDECLARATION=49]=\"ENUMVALUEDECLARATION\",e[e.FIELDDECLARATION=50]=\"FIELDDECLARATION\",e[e.FUNCTIONDECLARATION=51]=\"FUNCTIONDECLARATION\",e[e.IMPORTDECLARATION=52]=\"IMPORTDECLARATION\",e[e.INDEXSIGNATUREDECLARATION=53]=\"INDEXSIGNATUREDECLARATION\",e[e.INTERFACEDECLARATION=54]=\"INTERFACEDECLARATION\",e[e.METHODDECLARATION=55]=\"METHODDECLARATION\",e[e.NAMESPACEDECLARATION=56]=\"NAMESPACEDECLARATION\",e[e.TYPEDECLARATION=57]=\"TYPEDECLARATION\",e[e.VARIABLEDECLARATION=58]=\"VARIABLEDECLARATION\",e[e.DECORATOR=59]=\"DECORATOR\",e[e.EXPORTMEMBER=60]=\"EXPORTMEMBER\",e[e.SWITCHCASE=61]=\"SWITCHCASE\",e[e.COMMENT=62]=\"COMMENT\"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName(\"\",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text=\"\",t},e.createArrayLiteralExpression=function(e,t){var i=new S;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new R;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new b;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new I;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new Q;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(\".\")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new ge;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Se;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new Re;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new Ie;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new be;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]=\"DEFAULT\",e[e.OPTIONAL=1]=\"OPTIONAL\",e[e.REST=2]=\"REST\"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if(\"builtin\"==t)return E.BUILTIN;break;case 101:if(\"external\"==t)return E.EXTERNAL;break;case 103:if(\"global\"==t)return E.GLOBAL;break;case 105:if(\"inline\"==t)return E.INLINE;break;case 108:if(\"lazy\"==t)return E.LAZY;break;case 111:if(\"operator\"==t)return E.OPERATOR;break;case 115:if(\"sealed\"==t)return E.SEALED;break;case 117:if(\"unmanaged\"==t)return E.UNMANAGED;if(\"unsafe\"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),\"operator\"==t)switch(i.charCodeAt(0)){case 98:if(\"binary\"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case\"prefix\":return E.OPERATOR_PREFIX;case\"postfix\":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]=\"CUSTOM\",e[e.GLOBAL=1]=\"GLOBAL\",e[e.OPERATOR=2]=\"OPERATOR\",e[e.OPERATOR_BINARY=3]=\"OPERATOR_BINARY\",e[e.OPERATOR_PREFIX=4]=\"OPERATOR_PREFIX\",e[e.OPERATOR_POSTFIX=5]=\"OPERATOR_POSTFIX\",e[e.UNMANAGED=6]=\"UNMANAGED\",e[e.SEALED=7]=\"SEALED\",e[e.INLINE=8]=\"INLINE\",e[e.EXTERNAL=9]=\"EXTERNAL\",e[e.BUILTIN=10]=\"BUILTIN\",e[e.LAZY=11]=\"LAZY\",e[e.UNSAFE=12]=\"UNSAFE\"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]=\"LINE\",e[e.TRIPLE=1]=\"TRIPLE\",e[e.BLOCK=2]=\"BLOCK\"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]=\"FLOAT\",e[e.INTEGER=1]=\"INTEGER\",e[e.STRING=2]=\"STRING\",e[e.REGEXP=3]=\"REGEXP\",e[e.ARRAY=4]=\"ARRAY\",e[e.OBJECT=5]=\"OBJECT\"}(N=t.LiteralKind||(t.LiteralKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=g;var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(g);t.ArrayLiteralExpression=S,function(e){e[e.PREFIX=0]=\"PREFIX\",e[e.AS=1]=\"AS\",e[e.NONNULL=2]=\"NONNULL\"}(t.AssertionKind||(t.AssertionKind={}));var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=R;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=b;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,\"typeArgumentsRange\",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"argumentsRange\",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=I;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text=\"constructor\",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(g);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(g);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(I);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text=\"null\",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(g);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(g);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(g);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text=\"super\",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text=\"this\",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text=\"true\",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var Q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text=\"false\",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=Q;var j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=j;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(j);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(j);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]=\"USER\",e[e.USER_ENTRY=1]=\"USER_ENTRY\",e[e.LIBRARY=2]=\"LIBRARY\",e[e.LIBRARY_ENTRY=3]=\"LIBRARY_ENTRY\"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,\"isLibrary\",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]=\"NONE\",e[e.ARROW_PARENTHESIZED=1]=\"ARROW_PARENTHESIZED\",e[e.ARROW_SINGLE=2]=\"ARROW_SINGLE\"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=ge;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=Re;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=be;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=Ie;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(\".ts\")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i\";case s.LESSTHAN_EQUALS:return\"<=\";case s.GREATERTHAN_EQUALS:return\">=\";case s.EQUALS_EQUALS:return\"==\";case s.EXCLAMATION_EQUALS:return\"!=\";case s.EQUALS_EQUALS_EQUALS:return\"===\";case s.EXCLAMATION_EQUALS_EQUALS:return\"!==\";case s.PLUS:return\"+\";case s.MINUS:return\"-\";case s.ASTERISK_ASTERISK:return\"**\";case s.ASTERISK:return\"*\";case s.SLASH:return\"/\";case s.PERCENT:return\"%\";case s.PLUS_PLUS:return\"++\";case s.MINUS_MINUS:return\"--\";case s.LESSTHAN_LESSTHAN:return\"<<\";case s.GREATERTHAN_GREATERTHAN:return\">>\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return\">>>\";case s.AMPERSAND:return\"&\";case s.BAR:return\"|\";case s.CARET:return\"^\";case s.EXCLAMATION:return\"!\";case s.TILDE:return\"~\";case s.AMPERSAND_AMPERSAND:return\"&&\";case s.BAR_BAR:return\"||\";case s.EQUALS:return\"=\";case s.PLUS_EQUALS:return\"+=\";case s.MINUS_EQUALS:return\"-=\";case s.ASTERISK_EQUALS:return\"*=\";case s.ASTERISK_ASTERISK_EQUALS:return\"**=\";case s.SLASH_EQUALS:return\"/=\";case s.PERCENT_EQUALS:return\"%=\";case s.LESSTHAN_LESSTHAN_EQUALS:return\"<<=\";case s.GREATERTHAN_GREATERTHAN_EQUALS:return\">>=\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return\">>>=\";case s.AMPERSAND_EQUALS:return\"&=\";case s.BAR_EQUALS:return\"|=\";case s.CARET_EQUALS:return\"^=\";default:return assert(!1),\"\"}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error(\"source mismatch\");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,\"atStart\",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"atEnd\",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"line\",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"column\",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),\"\";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return\"\\0\";case 98:return\"\\b\";case 116:return\"\\t\";case 110:return\"\\n\";case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),\"\";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),\"\"):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?\"\":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Operation_not_supported=100]=\"Operation_not_supported\",e[e.Operation_is_unsafe=101]=\"Operation_is_unsafe\",e[e.User_defined_0=102]=\"User_defined_0\",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]=\"Conversion_from_type_0_to_1_requires_an_explicit_cast\",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]=\"Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit\",e[e.Type_0_cannot_be_changed_to_type_1=202]=\"Type_0_cannot_be_changed_to_type_1\",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]=\"Type_0_cannot_be_reinterpreted_as_type_1\",e[e.Basic_type_0_cannot_be_nullable=204]=\"Basic_type_0_cannot_be_nullable\",e[e.Cannot_export_a_mutable_global=205]=\"Cannot_export_a_mutable_global\",e[e.Mutable_value_cannot_be_inlined=206]=\"Mutable_value_cannot_be_inlined\",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]=\"Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa\",e[e.Unmanaged_classes_cannot_implement_interfaces=208]=\"Unmanaged_classes_cannot_implement_interfaces\",e[e.Invalid_regular_expression_flags=209]=\"Invalid_regular_expression_flags\",e[e.Implementation_0_must_match_the_signature_1=210]=\"Implementation_0_must_match_the_signature_1\",e[e.Class_0_is_sealed_and_cannot_be_extended=211]=\"Class_0_is_sealed_and_cannot_be_extended\",e[e.Decorator_0_is_not_valid_here=212]=\"Decorator_0_is_not_valid_here\",e[e.Duplicate_decorator=213]=\"Duplicate_decorator\",e[e.An_allocator_must_be_present_to_use_0=214]=\"An_allocator_must_be_present_to_use_0\",e[e.Optional_parameter_must_have_an_initializer=215]=\"Optional_parameter_must_have_an_initializer\",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]=\"Constructor_of_class_0_must_not_require_any_arguments\",e[e.Function_0_cannot_be_inlined_into_itself=217]=\"Function_0_cannot_be_inlined_into_itself\",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]=\"Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set\",e[e.Optional_properties_are_not_supported=219]=\"Optional_properties_are_not_supported\",e[e.Expression_must_be_a_compile_time_constant=220]=\"Expression_must_be_a_compile_time_constant\",e[e.Module_cannot_have_multiple_start_functions=221]=\"Module_cannot_have_multiple_start_functions\",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]=\"_0_must_be_a_value_between_1_and_2_inclusive\",e[e._0_must_be_a_power_of_two=223]=\"_0_must_be_a_power_of_two\",e[e.Expression_is_unsafe=224]=\"Expression_is_unsafe\",e[e.Expression_is_never_null=225]=\"Expression_is_never_null\",e[e.Unterminated_string_literal=1002]=\"Unterminated_string_literal\",e[e.Identifier_expected=1003]=\"Identifier_expected\",e[e._0_expected=1005]=\"_0_expected\",e[e.A_file_cannot_have_a_reference_to_itself=1006]=\"A_file_cannot_have_a_reference_to_itself\",e[e.Trailing_comma_not_allowed=1009]=\"Trailing_comma_not_allowed\",e[e.Unexpected_token=1012]=\"Unexpected_token\",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]=\"A_rest_parameter_must_be_last_in_a_parameter_list\",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]=\"Parameter_cannot_have_question_mark_and_initializer\",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]=\"A_required_parameter_cannot_follow_an_optional_parameter\",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]=\"Statements_are_not_allowed_in_ambient_contexts\",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]=\"Initializers_are_not_allowed_in_ambient_contexts\",e[e._0_modifier_cannot_be_used_here=1042]=\"_0_modifier_cannot_be_used_here\",e[e.A_rest_parameter_cannot_be_optional=1047]=\"A_rest_parameter_cannot_be_optional\",e[e.A_rest_parameter_cannot_have_an_initializer=1048]=\"A_rest_parameter_cannot_have_an_initializer\",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]=\"A_set_accessor_must_have_exactly_one_parameter\",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]=\"A_set_accessor_parameter_cannot_have_an_initializer\",e[e.A_get_accessor_cannot_have_parameters=1054]=\"A_get_accessor_cannot_have_parameters\",e[e.Enum_member_must_have_initializer=1061]=\"Enum_member_must_have_initializer\",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]=\"Type_parameters_cannot_appear_on_a_constructor_declaration\",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]=\"Type_annotation_cannot_appear_on_a_constructor_declaration\",e[e.An_accessor_cannot_have_type_parameters=1094]=\"An_accessor_cannot_have_type_parameters\",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]=\"A_set_accessor_cannot_have_a_return_type_annotation\",e[e.Type_parameter_list_cannot_be_empty=1098]=\"Type_parameter_list_cannot_be_empty\",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]=\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement\",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]=\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement\",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]=\"A_return_statement_can_only_be_used_within_a_function_body\",e[e.Expression_expected=1109]=\"Expression_expected\",e[e.Type_expected=1110]=\"Type_expected\",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]=\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement\",e[e.Duplicate_label_0=1114]=\"Duplicate_label_0\",e[e.An_export_assignment_cannot_have_modifiers=1120]=\"An_export_assignment_cannot_have_modifiers\",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]=\"Octal_literals_are_not_allowed_in_strict_mode\",e[e.Digit_expected=1124]=\"Digit_expected\",e[e.Hexadecimal_digit_expected=1125]=\"Hexadecimal_digit_expected\",e[e.Unexpected_end_of_text=1126]=\"Unexpected_end_of_text\",e[e.Invalid_character=1127]=\"Invalid_character\",e[e._case_or_default_expected=1130]=\"_case_or_default_expected\",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]=\"_super_must_be_followed_by_an_argument_list_or_member_access\",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]=\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context\",e[e.Type_argument_expected=1140]=\"Type_argument_expected\",e[e.String_literal_expected=1141]=\"String_literal_expected\",e[e.Line_break_not_permitted_here=1142]=\"Line_break_not_permitted_here\",e[e.Declaration_expected=1146]=\"Declaration_expected\",e[e._const_declarations_must_be_initialized=1155]=\"_const_declarations_must_be_initialized\",e[e.Unterminated_regular_expression_literal=1161]=\"Unterminated_regular_expression_literal\",e[e.Interface_declaration_cannot_have_implements_clause=1176]=\"Interface_declaration_cannot_have_implements_clause\",e[e.Binary_digit_expected=1177]=\"Binary_digit_expected\",e[e.Octal_digit_expected=1178]=\"Octal_digit_expected\",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]=\"An_implementation_cannot_be_declared_in_ambient_contexts\",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]=\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive\",e[e.Unterminated_Unicode_escape_sequence=1199]=\"Unterminated_Unicode_escape_sequence\",e[e.Decorators_are_not_valid_here=1206]=\"Decorators_are_not_valid_here\",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]=\"_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration\",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]=\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract\",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]=\"A_definite_assignment_assertion_is_not_permitted_in_this_context\",e[e.A_class_may_only_extend_another_class=1311]=\"A_class_may_only_extend_another_class\",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]=\"A_parameter_property_cannot_be_declared_using_a_rest_parameter\",e[e.Duplicate_identifier_0=2300]=\"Duplicate_identifier_0\",e[e.Cannot_find_name_0=2304]=\"Cannot_find_name_0\",e[e.Module_0_has_no_exported_member_1=2305]=\"Module_0_has_no_exported_member_1\",e[e.Generic_type_0_requires_1_type_argument_s=2314]=\"Generic_type_0_requires_1_type_argument_s\",e[e.Type_0_is_not_generic=2315]=\"Type_0_is_not_generic\",e[e.Type_0_is_not_assignable_to_type_1=2322]=\"Type_0_is_not_assignable_to_type_1\",e[e.Index_signature_is_missing_in_type_0=2329]=\"Index_signature_is_missing_in_type_0\",e[e._this_cannot_be_referenced_in_current_location=2332]=\"_this_cannot_be_referenced_in_current_location\",e[e._super_can_only_be_referenced_in_a_derived_class=2335]=\"_super_can_only_be_referenced_in_a_derived_class\",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]=\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors\",e[e.Property_0_does_not_exist_on_type_1=2339]=\"Property_0_does_not_exist_on_type_1\",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]=\"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures\",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]=\"Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature\",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]=\"A_function_whose_declared_type_is_not_void_must_return_a_value\",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]=\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access\",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]=\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access\",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]=\"Operator_0_cannot_be_applied_to_types_1_and_2\",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]=\"A_super_call_must_be_the_first_statement_in_the_constructor\",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]=\"Constructors_for_derived_classes_must_contain_a_super_call\",e[e._get_and_set_accessor_must_have_the_same_type=2380]=\"_get_and_set_accessor_must_have_the_same_type\",e[e.Constructor_implementation_is_missing=2390]=\"Constructor_implementation_is_missing\",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]=\"Function_implementation_is_missing_or_not_immediately_following_the_declaration\",e[e.Multiple_constructor_implementations_are_not_allowed=2392]=\"Multiple_constructor_implementations_are_not_allowed\",e[e.Duplicate_function_implementation=2393]=\"Duplicate_function_implementation\",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]=\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local\",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]=\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged\",e[e.Type_0_has_no_property_1=2460]=\"Type_0_has_no_property_1\",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]=\"The_0_operator_cannot_be_applied_to_type_1\",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]=\"In_const_enum_declarations_member_initializer_must_be_constant_expression\",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]=\"Export_declaration_conflicts_with_exported_declaration_of_0\",e[e.Object_is_possibly_null=2531]=\"Object_is_possibly_null\",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]=\"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property\",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]=\"The_target_of_an_assignment_must_be_a_variable_or_a_property_access\",e[e.Index_signature_in_type_0_only_permits_reading=2542]=\"Index_signature_in_type_0_only_permits_reading\",e[e.Expected_0_arguments_but_got_1=2554]=\"Expected_0_arguments_but_got_1\",e[e.Expected_at_least_0_arguments_but_got_1=2555]=\"Expected_at_least_0_arguments_but_got_1\",e[e.Expected_0_type_arguments_but_got_1=2558]=\"Expected_0_type_arguments_but_got_1\",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]=\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums\",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]=\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration\",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]=\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration\",e[e.Namespace_0_has_no_exported_member_1=2694]=\"Namespace_0_has_no_exported_member_1\",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]=\"Required_type_parameters_may_not_follow_optional_type_parameters\",e[e.Duplicate_property_0=2718]=\"Duplicate_property_0\",e[e.Type_0_has_no_call_signatures=2757]=\"Type_0_has_no_call_signatures\",e[e.File_0_not_found=6054]=\"File_0_not_found\",e[e.Numeric_separators_are_not_allowed_here=6188]=\"Numeric_separators_are_not_allowed_here\",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]=\"Multiple_consecutive_numeric_separators_are_not_permitted\",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]=\"_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class\",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]=\"_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class\"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return\"Operation not supported.\";case 101:return\"Operation is unsafe.\";case 102:return\"User-defined: {0}\";case 200:return\"Conversion from type '{0}' to '{1}' requires an explicit cast.\";case 201:return\"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";case 202:return\"Type '{0}' cannot be changed to type '{1}'.\";case 203:return\"Type '{0}' cannot be reinterpreted as type '{1}'.\";case 204:return\"Basic type '{0}' cannot be nullable.\";case 205:return\"Cannot export a mutable global.\";case 206:return\"Mutable value cannot be inlined.\";case 207:return\"Unmanaged classes cannot extend managed classes and vice-versa.\";case 208:return\"Unmanaged classes cannot implement interfaces.\";case 209:return\"Invalid regular expression flags.\";case 210:return\"Implementation '{0}' must match the signature '{1}'.\";case 211:return\"Class '{0}' is sealed and cannot be extended.\";case 212:return\"Decorator '{0}' is not valid here.\";case 213:return\"Duplicate decorator.\";case 214:return\"An allocator must be present to use '{0}'.\";case 215:return\"Optional parameter must have an initializer.\";case 216:return\"Constructor of class '{0}' must not require any arguments.\";case 217:return\"Function '{0}' cannot be inlined into itself.\";case 218:return\"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";case 219:return\"Optional properties are not supported.\";case 220:return\"Expression must be a compile-time constant.\";case 221:return\"Module cannot have multiple start functions.\";case 222:return\"'{0}' must be a value between '{1}' and '{2}' inclusive.\";case 223:return\"'{0}' must be a power of two.\";case 224:return\"Expression is unsafe.\";case 225:return\"Expression is never 'null'.\";case 1002:return\"Unterminated string literal.\";case 1003:return\"Identifier expected.\";case 1005:return\"'{0}' expected.\";case 1006:return\"A file cannot have a reference to itself.\";case 1009:return\"Trailing comma not allowed.\";case 1012:return\"Unexpected token.\";case 1014:return\"A rest parameter must be last in a parameter list.\";case 1015:return\"Parameter cannot have question mark and initializer.\";case 1016:return\"A required parameter cannot follow an optional parameter.\";case 1036:return\"Statements are not allowed in ambient contexts.\";case 1039:return\"Initializers are not allowed in ambient contexts.\";case 1042:return\"'{0}' modifier cannot be used here.\";case 1047:return\"A rest parameter cannot be optional.\";case 1048:return\"A rest parameter cannot have an initializer.\";case 1049:return\"A 'set' accessor must have exactly one parameter.\";case 1052:return\"A 'set' accessor parameter cannot have an initializer.\";case 1054:return\"A 'get' accessor cannot have parameters.\";case 1061:return\"Enum member must have initializer.\";case 1092:return\"Type parameters cannot appear on a constructor declaration.\";case 1093:return\"Type annotation cannot appear on a constructor declaration.\";case 1094:return\"An accessor cannot have type parameters.\";case 1095:return\"A 'set' accessor cannot have a return type annotation.\";case 1098:return\"Type parameter list cannot be empty.\";case 1104:return\"A 'continue' statement can only be used within an enclosing iteration statement.\";case 1105:return\"A 'break' statement can only be used within an enclosing iteration or switch statement.\";case 1108:return\"A 'return' statement can only be used within a function body.\";case 1109:return\"Expression expected.\";case 1110:return\"Type expected.\";case 1113:return\"A 'default' clause cannot appear more than once in a 'switch' statement.\";case 1114:return\"Duplicate label '{0}'.\";case 1120:return\"An export assignment cannot have modifiers.\";case 1121:return\"Octal literals are not allowed in strict mode.\";case 1124:return\"Digit expected.\";case 1125:return\"Hexadecimal digit expected.\";case 1126:return\"Unexpected end of text.\";case 1127:return\"Invalid character.\";case 1130:return\"'case' or 'default' expected.\";case 1034:return\"'super' must be followed by an argument list or member access.\";case 1038:return\"A 'declare' modifier cannot be used in an already ambient context.\";case 1140:return\"Type argument expected.\";case 1141:return\"String literal expected.\";case 1142:return\"Line break not permitted here.\";case 1146:return\"Declaration expected.\";case 1155:return\"'const' declarations must be initialized.\";case 1161:return\"Unterminated regular expression literal.\";case 1176:return\"Interface declaration cannot have 'implements' clause.\";case 1177:return\"Binary digit expected.\";case 1178:return\"Octal digit expected.\";case 1183:return\"An implementation cannot be declared in ambient contexts.\";case 1198:return\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";case 1199:return\"Unterminated Unicode escape sequence.\";case 1206:return\"Decorators are not valid here.\";case 1242:return\"'abstract' modifier can only appear on a class, method, or property declaration.\";case 1245:return\"Method '{0}' cannot have an implementation because it is marked abstract.\";case 1255:return\"A definite assignment assertion '!' is not permitted in this context.\";case 1311:return\"A class may only extend another class.\";case 1317:return\"A parameter property cannot be declared using a rest parameter.\";case 2300:return\"Duplicate identifier '{0}'.\";case 2304:return\"Cannot find name '{0}'.\";case 2305:return\"Module '{0}' has no exported member '{1}'.\";case 2314:return\"Generic type '{0}' requires {1} type argument(s).\";case 2315:return\"Type '{0}' is not generic.\";case 2322:return\"Type '{0}' is not assignable to type '{1}'.\";case 2329:return\"Index signature is missing in type '{0}'.\";case 2332:return\"'this' cannot be referenced in current location.\";case 2335:return\"'super' can only be referenced in a derived class.\";case 2337:return\"Super calls are not permitted outside constructors or in nested functions inside constructors.\";case 2339:return\"Property '{0}' does not exist on type '{1}'.\";case 2349:return\"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";case 2351:return\"Cannot use 'new' with an expression whose type lacks a construct signature.\";case 2355:return\"A function whose declared type is not 'void' must return a value.\";case 2357:return\"The operand of an increment or decrement operator must be a variable or a property access.\";case 2364:return\"The left-hand side of an assignment expression must be a variable or a property access.\";case 2365:return\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";case 2376:return\"A 'super' call must be the first statement in the constructor.\";case 2377:return\"Constructors for derived classes must contain a 'super' call.\";case 2380:return\"'get' and 'set' accessor must have the same type.\";case 2390:return\"Constructor implementation is missing.\";case 2391:return\"Function implementation is missing or not immediately following the declaration.\";case 2392:return\"Multiple constructor implementations are not allowed.\";case 2393:return\"Duplicate function implementation.\";case 2395:return\"Individual declarations in merged declaration '{0}' must be all exported or all local.\";case 2434:return\"A namespace declaration cannot be located prior to a class or function with which it is merged.\";case 2460:return\"Type '{0}' has no property '{1}'.\";case 2469:return\"The '{0}' operator cannot be applied to type '{1}'.\";case 2474:return\"In 'const' enum declarations member initializer must be constant expression.\";case 2484:return\"Export declaration conflicts with exported declaration of '{0}'.\";case 2531:return\"Object is possibly 'null'.\";case 2540:return\"Cannot assign to '{0}' because it is a constant or a read-only property.\";case 2541:return\"The target of an assignment must be a variable or a property access.\";case 2542:return\"Index signature in type '{0}' only permits reading.\";case 2554:return\"Expected {0} arguments, but got {1}.\";case 2555:return\"Expected at least {0} arguments, but got {1}.\";case 2558:return\"Expected {0} type arguments, but got {1}.\";case 2651:return\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";case 2673:return\"Constructor of class '{0}' is private and only accessible within the class declaration.\";case 2674:return\"Constructor of class '{0}' is protected and only accessible within the class declaration.\";case 2694:return\"Namespace '{0}' has no exported member '{1}'.\";case 2706:return\"Required type parameters may not follow optional type parameters.\";case 2718:return\"Duplicate property '{0}'.\";case 2757:return\"Type '{0}' has no call signatures.\";case 6054:return\"File '{0}' not found.\";case 6188:return\"Numeric separators are not allowed here.\";case 6189:return\"Multiple consecutive numeric separators are not permitted.\";case 17009:return\"'super' must be called before accessing 'this' in the constructor of a derived class.\";case 17011:return\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";default:return\"\"}}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.signature.parameters.length}function p(e){return e.text.includes(\"@nearfile\")||l(e)}function h(e){return o.ASTBuilder.build(e)}function l(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function d(e){return!!(e.kind==s.NodeKind.NAMEDTYPE&&h(e).startsWith(\"Array\")&&e.typeArguments&&e.typeArguments.length>0)}function E(e){return e.kind==s.NodeKind.CLASSDECLARATION}function f(e){return e.kind==s.NodeKind.FIELDDECLARATION}var A=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:\"Integer\",u32:\"Integer\",i64:\"String\",u64:\"String\",string:\"String\",bool:\"Boolean\",Uint8Array:\"String\"},t.nonNullableTypes=[\"i32\",\"u32\",\"i64\",\"u64\",\"bool\",\"boolean\"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(p)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(h(e.name))||(this.generateHandler(e),this.exportedClasses.set(h(e.name),e))},t.prototype.visitFunctionDeclaration=function(t){!l(t)||this.wrappedFuncs.has(h(t.name))||!t.is(a.CommonFlags.EXPORT)||0==_(t)&&function(e){return\"void\"===h(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(_(t)>0&&this.generateArgsParser(t),this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(h(t.name)))},t.prototype.generateArgsParser=function(e){var t=this,i=e.signature,n=h(e.name),r=i.parameters.map(function(t){var i=h(t.name),n=t.type;return{name:i,type:n,isGeneric:null!=e.typeParameters&&e.typeParameters.some(function(e){return h(e)==h(n)})}});this.sb.push(\"\\nexport class __near_ArgsParser_\"+n+\" extends ThrowingJSONHandler {\\n buffer: Uint8Array;\\n decoder: JSONDecoder<__near_ArgsParser_\"+n+\">;\\n handledRoot: boolean = false;\"),r.length>0?(r.forEach(function(e){t.sb.push(\" __near_param_\"+e.name+\": \"+t.typeName(e.type)+\";\")}),this.generateHandlerMethods(\"this.__near_param_\",r)):this.generateHandlerMethods(\"this.__near_param_\",[]),this.sb.push(\"}\")},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=h(n).split(\"|\").filter(function(e){return\"null\"!==e.trim()}).join(\"|\"),s=h(n).includes(\"null\"),a=e.name.symbol;this.sb.push(\"\\n//@ts-ignore\\nfunction __wrapper_\"+a+\"(): void {\"),i.length>0&&this.sb.push(\" // Reading input bytes.\\n input(0);\\n let json_len = register_len(0);\\n if (json_len == U32.MAX_VALUE) {\\n panic();\\n }\\n let json = new Uint8Array(json_len as u32);\\n read_register(0, json.buffer);\\n let handler = new __near_ArgsParser_\"+a+\"();\\n handler.buffer = json;\\n handler.decoder = new JSONDecoder<__near_ArgsParser_\"+a+\">(handler);\\n handler.decoder.deserialize(json);\"),\"void\"!==h(n)?this.sb.push(\" let result: \"+h(n)+\" = \"+a+\"(\"):this.sb.push(\" \"+a+\"(\"),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return\"handler.__near_param_\"+e.name.symbol}).join(\", \")),this.sb[this.sb.length-1]+=\");\",\"void\"!==h(n)&&this.sb.push(\"\\n let encoder = new JSONEncoder();\\n if ((isString<\"+r+\">() || isNullable<\"+r+\">()) && result == null) {\\n encoder.setNull(null);\\n } else {\\n encode<\"+r+\">(encoder, result\"+(s?\"!\":\"\")+\", null);\\n }\\n let val: Uint8Array = encoder.serialize();\\n value_return(val.byteLength, val.buffer);\"),this.sb.push(\"}\\n\\nexport { __wrapper_\"+a+\" as \"+a+\" }\\n\")},t.prototype.generateHandlerMethods=function(e,t){var i=this,n=function(e){return t.filter(function(t){return-1!=e.indexOf(i.typeName(t.type))||t.isGeneric})};this.generateBasicSetterHandlers(e,\"Integer\",\"i64\",n([\"i32\",\"u32\"])),this.generateBasicSetterHandlers(e,\"String\",\"string\",n([\"string\",\"i64\",\"u64\",\"Uint8Array\",\"u128\"])),this.generateBasicSetterHandlers(e,\"Boolean\",\"bool\",n([\"bool\"]));var r=t.filter(function(e){return t=e.type,![\"i32\",\"u32\",\"bool\",\"i64\",\"u64\",\"boolean\"].includes(h(t))||e.isGeneric;var t});this.sb.push(\" setNull(name: string): void {\"),r.forEach(function(t){i.sb.push(' if (name == \"'+t.name+'\") {');var n=\"\"+e+t.name+\" = <\"+i.typeName(t.type)+\">null\";t.isGeneric?i.sb.push(\" if (isNullable<\"+i.typeName(t.type)+\">()){\\n \"+n+\"\\n return;\\n }\"):i.sb.push(\" \"+n+\"\\n return;\"),i.sb.push(\" }\")}),this.sb.push(\"\\n super.setNull(name);\\n }\"),this.sb.push(\"\\n pushObject(name: string): bool {\"),this.sb.push(\"if (!this.handledRoot) {\\n assert(name == null || name.length == 0);\\n this.handledRoot = true;\\n return true;\\n } else {\\n assert(name != null || name.length != 0);\\n }\"),this.generatePushHandler(e,r.filter(function(e){return!d(e.type)})),this.sb.push(\"\\n return super.pushObject(name);\\n }\"),this.sb.push(\"\\n pushArray(name: string): bool {\"),this.generatePushHandler(e,r.filter(function(e){return d(e.type)})),this.sb.push(\"\\n return super.pushArray(name);\\n }\")},t.prototype.generateBasicSetterHandlers=function(e,t,i,n){var r=this;n.length>0&&(this.sb.push(\" set\"+t+\"(name: string, value: \"+i+\"): void {\"),n.forEach(function(i){var n=r.typeName(i.type);if(\"String\"==t&&\"string\"!=n)if(\"Uint8Array\"==n)r.sb.push(' if (name == \"'+i.name+'\") {\\n '+e+i.name+\" = base64.decode(value);\\n return;\\n }\");else if(\"u128\"===n)r.sb.push(' if (name == \"'+i.name+'\") {\\n '+e+i.name+\" = u128.fromString(value);\\n return;\\n }\");else{var s=\"u64\"===r.typeName(i.type)?\"U64\":\"I64\";r.sb.push(' if (name == \"'+i.name+'\") {\\n '+e+i.name+\" = \"+(i.isGeneric?\"<\"+h(i.type)+\">\":\"\")+s+\".parseInt(value);\\n return;\\n }\")}else r.sb.push(' if (name == \"'+i.name+'\") {\\n '+e+i.name+\" = <\"+n+\">value;\\n return;\\n }\");i.isGeneric&&r.sb.push(\" assert(is\"+t+\"<\"+n+'>(), \"'+i.name+\" is not a \"+t+'\")')}),this.sb.push(\" super.set\"+t+\"(name, value);\\n }\"))},t.prototype.generatePushHandler=function(e,t){var i=this;t.forEach(function(t){if(!(i.typeName(t.type)in i.typeMapping)){var n=t.isGeneric?\" && isReference<\"+i.typeName(t.type)+\">()\":\"\";i.sb.push(' if (name == \"'+t.name+'\"'+n+\") {\\n \"+e+t.name+\" = decode<\"+h(t.type)+\">(this.buffer, this.decoder.state);\\n return false;\\n }\")}})},t.prototype.generateHandler=function(e){if(!d(e)){var t=this.typeName(e);this.sb.push(\"export class __near_JSONHandler_\"+t+\" extends ThrowingJSONHandler {\\n buffer: Uint8Array;\\n decoder: JSONDecoder<__near_JSONHandler_\"+t+\">;\\n handledRoot: boolean = false;\\n value: \"+this.typeName(e)+\";\\n\\n constructor(value_: \"+this.typeName(e)+\") {\\n super();\\n this.value = value_;\\n }\\n \"),this.generateHandlerMethods(\"this.value.\",this.getFields(e)),this.sb.push(\"}\\n\")}},t.prototype.typeName=function(e){if(!E(e))return o.ASTBuilder.build(e);var t=h((e=e).name);return e.isGeneric&&(t+=\"<\"+e.typeParameters.map(h).join(\", \")+\">\"),t},t.prototype.getFields=function(e){var t=E(e)?e:this.exportedClasses.get(h(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:h(e.name),type:e.type,isGeneric:v(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(E(e)){var n=e;if(i=i.slice(0,i.lastIndexOf(\"}\")),n.members.filter(f).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error(\"All Fields must have explict type declaration.\");var r=t.typeName(n);i+=\"\\n static decode(json: Uint8Array, state: DecoderState | null = null): \"+r+\" {\\n let value = instantiate<\"+r+\">(); // Allocate without constructor\\n value.decode(json, state);\\n return value;\\n }\\n\\n decode(json: Uint8Array, state: DecoderState | null): \"+r+\" {\\n let handler: __near_JSONHandler_\"+r+\" = new __near_JSONHandler_\"+r+\"(this);\\n handler.buffer = json;\\n let decoder = new JSONDecoder<__near_JSONHandler_\"+r+'>(handler);\\n handler.decoder = decoder;\\n decoder.deserialize(json, state);\\n return this;\\n }\\n\\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\\n encoder.pushObject(name);\\n '+function(e){return e.members.filter(f).map(function(e){var t=h(e.type),i=h(e.name);return\"encode<\"+t+\">(encoder, this.\"+i+', \"'+i+'\");'})}(n).join(\"\\n \")+\"\\n encoder.popObject();\\n return encoder\\n }\\n\\n serialize(): Uint8Array {\\n return this.encode().serialize();\\n }\\n\\n toJSON(): string {\\n return this.encode().toString();\\n }\\n}\"}return i});return this.sb.concat(i).join(\"\\n\")},t}(u.BaseVisitor);function v(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return h(e.name)==h(t.type)})}t.afterParse=function(e,t,i){A.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf(\"\\n\")).includes(\"out\");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=A.build(e,n);r&&t(\"out/\"+n.normalizedPath,s,i),e.parseFile(s,(l(n)?\"\":\"./\")+n.normalizedPath,l(n))})}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NONE=0]=\"NONE\",e[e.SIGN_EXTENSION=1]=\"SIGN_EXTENSION\",e[e.MUTABLE_GLOBAL=2]=\"MUTABLE_GLOBAL\",e[e.BULK_MEMORY=4]=\"BULK_MEMORY\",e[e.SIMD=8]=\"SIMD\",e[e.THREADS=16]=\"THREADS\"}(t.Feature||(t.Feature={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.WASM32=0]=\"WASM32\",e[e.WASM64=1]=\"WASM64\",e[e.JS=2]=\"JS\"}(t.Target||(t.Target={}))},function(e,t,i){\"use strict\";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]=\"NONE\",e[e.ARRAYBUFFERVIEW=1]=\"ARRAYBUFFERVIEW\",e[e.ARRAY=2]=\"ARRAY\",e[e.SET=4]=\"SET\",e[e.MAP=8]=\"MAP\",e[e.ACYCLIC=16]=\"ACYCLIC\",e[e.VALUE_ALIGN_0=32]=\"VALUE_ALIGN_0\",e[e.VALUE_ALIGN_1=64]=\"VALUE_ALIGN_1\",e[e.VALUE_ALIGN_2=128]=\"VALUE_ALIGN_2\",e[e.VALUE_ALIGN_3=256]=\"VALUE_ALIGN_3\",e[e.VALUE_ALIGN_4=512]=\"VALUE_ALIGN_4\",e[e.VALUE_SIGNED=1024]=\"VALUE_SIGNED\",e[e.VALUE_FLOAT=2048]=\"VALUE_FLOAT\",e[e.VALUE_NULLABLE=4096]=\"VALUE_NULLABLE\",e[e.VALUE_MANAGED=8192]=\"VALUE_MANAGED\",e[e.KEY_ALIGN_0=16384]=\"KEY_ALIGN_0\",e[e.KEY_ALIGN_1=32768]=\"KEY_ALIGN_1\",e[e.KEY_ALIGN_2=65536]=\"KEY_ALIGN_2\",e[e.KEY_ALIGN_3=131072]=\"KEY_ALIGN_3\",e[e.KEY_ALIGN_4=262144]=\"KEY_ALIGN_4\",e[e.KEY_SIGNED=524288]=\"KEY_SIGNED\",e[e.KEY_FLOAT=1048576]=\"KEY_FLOAT\",e[e.KEY_NULLABLE=2097152]=\"KEY_NULLABLE\",e[e.KEY_MANAGED=4194304]=\"KEY_MANAGED\"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return\"INFO\";case n.WARNING:return\"WARNING\";case n.ERROR:return\"ERROR\";default:return assert(!1),\"\"}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),\"\"}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]=\"INFO\",e[e.WARNING=1]=\"WARNING\",e[e.ERROR=2]=\"ERROR\"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE=\"\u001b[96m\",t.COLOR_YELLOW=\"\u001b[93m\",t.COLOR_RED=\"\u001b[91m\",t.COLOR_RESET=\"\u001b[0m\",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace(\"{0}\",n)),null!=s&&(o=o.replace(\"{1}\",s)),null!=a&&(o=o.replace(\"{2}\",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+\" \"+this.code.toString(10)+': \"'+this.message+'\" in '+this.range.source.normalizedPath+\":\"+this.range.line.toString(10)+\":\"+this.range.column.toString(10):o(this.category)+\" \"+this.code.toString(10)+\": \"+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NULL=0]=\"NULL\",e[e.LINEFEED=10]=\"LINEFEED\",e[e.CARRIAGERETURN=13]=\"CARRIAGERETURN\",e[e.LINESEPARATOR=8232]=\"LINESEPARATOR\",e[e.PARAGRAPHSEPARATOR=8233]=\"PARAGRAPHSEPARATOR\",e[e.NEXTLINE=133]=\"NEXTLINE\",e[e.SPACE=32]=\"SPACE\",e[e.NONBREAKINGSPACE=160]=\"NONBREAKINGSPACE\",e[e.ENQUAD=8192]=\"ENQUAD\",e[e.EMQUAD=8193]=\"EMQUAD\",e[e.ENSPACE=8194]=\"ENSPACE\",e[e.EMSPACE=8195]=\"EMSPACE\",e[e.THREEPEREMSPACE=8196]=\"THREEPEREMSPACE\",e[e.FOURPEREMSPACE=8197]=\"FOURPEREMSPACE\",e[e.SIXPEREMSPACE=8198]=\"SIXPEREMSPACE\",e[e.FIGURESPACE=8199]=\"FIGURESPACE\",e[e.PUNCTUATIONSPACE=8200]=\"PUNCTUATIONSPACE\",e[e.THINSPACE=8201]=\"THINSPACE\",e[e.HAIRSPACE=8202]=\"HAIRSPACE\",e[e.ZEROWIDTHSPACE=8203]=\"ZEROWIDTHSPACE\",e[e.NARROWNOBREAKSPACE=8239]=\"NARROWNOBREAKSPACE\",e[e.IDEOGRAPHICSPACE=12288]=\"IDEOGRAPHICSPACE\",e[e.MATHEMATICALSPACE=8287]=\"MATHEMATICALSPACE\",e[e.OGHAM=5760]=\"OGHAM\",e[e._=95]=\"_\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.AMPERSAND=38]=\"AMPERSAND\",e[e.ASTERISK=42]=\"ASTERISK\",e[e.AT=64]=\"AT\",e[e.BACKSLASH=92]=\"BACKSLASH\",e[e.BACKTICK=96]=\"BACKTICK\",e[e.BAR=124]=\"BAR\",e[e.CARET=94]=\"CARET\",e[e.CLOSEBRACE=125]=\"CLOSEBRACE\",e[e.CLOSEBRACKET=93]=\"CLOSEBRACKET\",e[e.CLOSEPAREN=41]=\"CLOSEPAREN\",e[e.COLON=58]=\"COLON\",e[e.COMMA=44]=\"COMMA\",e[e.DOLLAR=36]=\"DOLLAR\",e[e.DOT=46]=\"DOT\",e[e.DOUBLEQUOTE=34]=\"DOUBLEQUOTE\",e[e.EQUALS=61]=\"EQUALS\",e[e.EXCLAMATION=33]=\"EXCLAMATION\",e[e.GREATERTHAN=62]=\"GREATERTHAN\",e[e.HASH=35]=\"HASH\",e[e.LESSTHAN=60]=\"LESSTHAN\",e[e.MINUS=45]=\"MINUS\",e[e.OPENBRACE=123]=\"OPENBRACE\",e[e.OPENBRACKET=91]=\"OPENBRACKET\",e[e.OPENPAREN=40]=\"OPENPAREN\",e[e.PERCENT=37]=\"PERCENT\",e[e.PLUS=43]=\"PLUS\",e[e.QUESTION=63]=\"QUESTION\",e[e.SEMICOLON=59]=\"SEMICOLON\",e[e.SINGLEQUOTE=39]=\"SINGLEQUOTE\",e[e.SLASH=47]=\"SLASH\",e[e.TILDE=126]=\"TILDE\",e[e.BACKSPACE=8]=\"BACKSPACE\",e[e.FORMFEED=12]=\"FORMFEED\",e[e.BYTEORDERMARK=65279]=\"BYTEORDERMARK\",e[e.TAB=9]=\"TAB\",e[e.VERTICALTAB=11]=\"VERTICALTAB\"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:\".\"}function a(e){var t=e.length;if(t<=1){if(0==t)return\".\";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return\".\"}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith(\"std/\")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=\" \",r=\" \",s=\" \";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){\"use strict\";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i\")}e.isNullable&&n.push(\" | null\")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?\"((\":\"(\");var n=e.explicitThisType;n&&(i.push(\"this: \"),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(\", \"),this.serializeParameter(r[0]);for(var a=1;a \"),this.visitTypeNode(o)):i.push(\") => void\"),t&&i.push(\") | null\")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(\" extends \"),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push(\"=\"),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push(\"[\");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r\"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(\" as \"),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push(\"!\");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(\" \"),t.push(a.operatorTokenToString(e.operator)),t.push(\" \"),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push(\"<\"),this.visitTypeNode(i[0]);for(var r=1;r(\")}}else t.push(\"(\");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push(\"\\\\0\"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\b\");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\t\");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\n\");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\v\");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\f\");break;case 13:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\r\"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\\\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push(\"\\\\'\"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\\\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push(\"/\"),t.push(e.pattern),t.push(\"/\"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push(\"new \"),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push(\"(\"),this.visitNode(e.expression),t.push(\")\")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push(\".\"),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(\" ? \"),this.visitNode(e.ifThen),t.push(\" : \"),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push(\"\\n\"):t.push(\";\\n\")}else t.push(\";\\n\")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push(\"{\\n\");for(var r=++this.indentLevel,a=0;a\")}var _=e.extendsType;_&&(u.push(\" extends \"),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(\" implements \"),this.visitTypeNode(p[0]);for(a=1;a\")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push(\"(\");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push(\"this: \"),this.visitTypeNode(_)),c){_&&t.push(\", \"),this.serializeParameter(u[0]);for(o=1;o \"),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(\" => \"),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(\")\"):(t.push(\"): \"),this.visitTypeNode(h)),p&&(t.push(\" \"),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push(\"if (\"),this.visitNode(e.condition),t.push(\") \");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(\";\\n\");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(\" else \"):t.push(\"else \"),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(\" as \"),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push(\"import \");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push(\"{\\n\");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o\")}var u=e.extendsType;u&&(a.push(\" extends \"),this.visitTypeNode(u)),a.push(\" {\\n\");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n\")}}r.push(\" = \"),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push(\"!\"),t&&(i.push(\": \"),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(\" = \"),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name=\"UnreachableError\",r.prototype.message=\"unreachable\",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name=\"AssertionError\",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,\"replaceAll\",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return\"number\"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return\"object\"==typeof e||\"string\"==typeof e},t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"string\"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,\"__isLong__\",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return g}else{if(e<=-E)return S;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error(\"empty string\");if(\"NaN\"===e||\"Infinity\"===e||\"+Infinity\"===e||\"-Infinity\"===e)return A;if(\"number\"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error(\"interior hyphen\");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},R.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},R.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c=\"0\"+c;a=\"\"+c+a}},R.getHighBits=function(){return this.high},R.getHighBitsUnsigned=function(){return this.high>>>0},R.getLowBits=function(){return this.low},R.getLowBitsUnsigned=function(){return this.low>>>0},R.getNumBitsAbs=function(){if(this.isNegative())return this.eq(S)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},R.isOdd=function(){return 1==(1&this.low)},R.isEven=function(){return 0==(1&this.low)},R.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},R.eq=R.equals,R.notEquals=function(e){return!this.eq(e)},R.neq=R.notEquals,R.ne=R.notEquals,R.lessThan=function(e){return this.comp(e)<0},R.lt=R.lessThan,R.lessThanOrEqual=function(e){return this.comp(e)<=0},R.lte=R.lessThanOrEqual,R.le=R.lessThanOrEqual,R.greaterThan=function(e){return this.comp(e)>0},R.gt=R.greaterThan,R.greaterThanOrEqual=function(e){return this.comp(e)>=0},R.gte=R.greaterThanOrEqual,R.ge=R.greaterThanOrEqual,R.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},R.comp=R.compare,R.negate=function(){return!this.unsigned&&this.eq(S)?S:this.not().add(m)},R.neg=R.negate,R.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},R.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},R.sub=R.subtract,R.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(S))return e.isOdd()?S:A;if(e.eq(S))return this.isOdd()?S:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},R.mul=R.multiply,R.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error(\"division by zero\");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(S))return e.eq(m)||e.eq(N)?S:e.eq(S)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(S))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},R.div=R.divide,R.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},R.mod=R.modulo,R.rem=R.modulo,R.not=function(){return c(~this.low,~this.high,this.unsigned)},R.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},R.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},R.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},R.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},R.shr=R.shiftRight,R.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},R.shru=R.shiftRightUnsigned,R.shr_u=R.shiftRightUnsigned,R.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},R.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},R.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},R.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},R.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&\"function\"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.preamble='import { storage, near, base64 } from \"near-runtime-ts\";\\nimport { JSONEncoder } from \"assemblyscript-json\";\\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\\n'}])});","if(typeof __WEBPACK_EXTERNAL_MODULE__11__ === 'undefined') {var e = new Error(\"Cannot find module 'assemblyscript'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__11__;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 13;","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/./asc.js","webpack://asc/../node_modules/@protobufjs/utf8/index.js","webpack://asc/./util/colors.js","webpack://asc/./util/options.js","webpack://asc/./util/mkdirp.js","webpack://asc/../bindings/dist/transformerBundle.js","webpack://asc/external \"assemblyscript\"","webpack://asc/. sync","webpack://asc/../node_modules/browser-process-hrtime/index.js"],"names":["root","factory","exports","module","require","e","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__11__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","args","Array","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","g","Function","window","global","fs","utf8","colorsUtil","optionsUtil","mkdirp","EOL","SEP","nearBindings","nearLibEntry","removeAllListeners","assemblyscript","isDev","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","write","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","hrtime","times","formatTime","time","toFixed","printStats","stats","output","format","count","stdout","printRTTI","program","buildRTTI","register","project","e_ts","eval","stack","isBundle","version","options","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","nearEntry","array","arraybuffer","bindings/Date","bindings/Math","bindings/wasi_unstable","bindings/wasi","builtins","compat","dataview","date","diagnostics","error","fixedarray","heap","iterator","map","math","memory","number","polyfills","regexp","rt","rt/common","rt/index-full","rt/index-half","rt/index-none","rt/index-stub","rt/pure","rt/rtrace","rt/stub","rt/tlsf","set","shared/feature","shared/target","shared/typeinfo","string","symbol","table","typedarray","util/error","util/hash","util/memory","util/number","util/sort","util/string","vector","libDir","libFiles","sync","bundled","readFileSync","forEach","file","replace","definitionFiles","assembly","portable","stdDir","compileString","sources","input.ts","createMemoryStream","keys","val","isArray","String","main","readFile","writeFile","contents","listFiles","callback","readFileNode","writeFileNode","listFilesNode","opts","parse","noColors","supported","unknown","arg","yellow","trailing","err","red","help","out","color","white","cyan","baseDir","transforms","notNear","transform","parser","packages","Map","importPathMap","libPath","indexOf","parseFile","customLibDirs","lib","k","endsWith","j","libText","nodePaths","basePath","_path","_","dirFrom","reverse","getPaths","parseBacklog","sourcePath","sourceText","sysPath","nextFile","dependee","getDependee","startsWith","plainName","substring","indexName","traceResolution","_package","ascMain","has","package_json","JSON","mainFile","newPackage","realPath","_p","first","second","runtimeName","runtime","runtimePath","runtimeText","filename","applyTransform","finishParsing","normalizedPath","sort","optimizeLevel","shrinkLevel","optimize","max","compilerOptions","createOptions","setTarget","setNoAssert","noAssert","setImportMemory","importMemory","setSharedMemory","sharedMemory","setImportTable","importTable","setExplicitStart","explicitStart","setMemoryBase","memoryBase","setSourceMap","sourceMap","setOptimizeLevelHints","setNoUnsafe","noUnsafe","setGlobalAlias","use","aliases","part","alias","enable","flag","toUpperCase","enableFeature","compileProgram","dispose","validate","trapMode","runPasses","setOptimizeLevel","setShrinkLevel","setDebugInfo","debug","pass","noEmit","hasStdout","hasOutput","outFile","test","textFile","asmjsFile","binaryFile","wasm","sourceMapURL","toBinary","writeStdout","sourceRoot","text","stdName","sourceContents","stringify","asm","toAsmjs","idlFile","idl","buildIDL","tsdFile","tsd","buildTSD","wat","toText","printrtti","encoding","writeFileSync","files","readdirSync","used","allocBuffer","Buffer","allocUnsafe","Uint8Array","stream","chunk","buffer","reset","toBuffer","offset","toString","read","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","target","noLib","types","allowJs","fromCharCode","c1","c2","proc","isCI","base","colors","gray","GRAY","RESET","RED","green","GREEN","YELLOW","blue","BLUE","magenta","MAGENTA","CYAN","WHITE","config","option","default","match","exec","type","parseInt","parseFloat","indent","padding","eol","sb","description","line","_0777","made","undefined","mkdirSync","err0","stat","statSync","err1","isDirectory","__extends","setPrototypeOf","__proto__","constructor","a","Token","Range","u","SOURCE","NAMEDTYPE","FUNCTIONTYPE","TYPENAME","TYPEPARAMETER","PARAMETER","IDENTIFIER","ASSERTION","BINARY","CALL","CLASS","COMMA","ELEMENTACCESS","FALSE","FUNCTION","INSTANCEOF","LITERAL","NEW","NULL","PARENTHESIZED","PROPERTYACCESS","TERNARY","SUPER","THIS","TRUE","CONSTRUCTOR","UNARYPOSTFIX","UNARYPREFIX","BLOCK","BREAK","CONTINUE","DO","EMPTY","EXPORT","EXPORTDEFAULT","EXPORTIMPORT","EXPRESSION","FOR","IF","IMPORT","RETURN","SWITCH","THROW","TRY","VARIABLE","VOID","WHILE","CLASSDECLARATION","ENUMDECLARATION","ENUMVALUEDECLARATION","FIELDDECLARATION","FUNCTIONDECLARATION","IMPORTDECLARATION","INDEXSIGNATUREDECLARATION","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","TYPEDECLARATION","VARIABLEDECLARATION","DECORATOR","EXPORTMEMBER","SWITCHCASE","COMMENT","NodeKind","nodeIsConstantValue","nodeIsCallable","nodeIsGenericCallable","createTypeName","range","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","h","typeArguments","isNullable","createFunctionType","parameters","returnType","explicitThisType","createOmittedType","createTypeParameter","extendsType","defaultType","createParameter","initializer","parameterKind","createDecorator","v","decoratorKind","A","createComment","commentKind","y","isQuoted","createEmptyIdentifierExpression","createArrayLiteralExpression","R","elementExpressions","createAssertionExpression","assertionKind","expression","toType","createBinaryExpression","I","operator","left","right","createCallExpression","b","createClassExpression","L","declaration","createCommaExpression","C","expressions","createConstructorExpression","O","createElementAccessExpression","x","elementExpression","createFalseExpression","Q","createFloatLiteralExpression","P","createFunctionExpression","D","createInstanceOfExpression","U","isType","createIntegerLiteralExpression","w","createNewExpression","M","createNullExpression","createObjectLiteralExpression","F","names","values","createParenthesizedExpression","K","createPropertyAccessExpression","B","createRegexpLiteralExpression","H","pattern","patternFlags","createTernaryExpression","G","condition","ifThen","ifElse","createStringLiteralExpression","Y","createSuperExpression","V","createThisExpression","z","createTrueExpression","X","createUnaryPostfixExpression","W","operand","createUnaryPrefixExpression","q","createBlockStatement","ne","statements","createBreakStatement","re","label","createClassDeclaration","se","flags","typeParameters","implementsTypes","members","decorators","createContinueStatement","ae","createDoStatement","oe","statement","createEmptyStatement","ue","createEnumDeclaration","ce","createEnumValueDeclaration","_e","createExportStatement","le","normalizePath","resolvePath","source","internalPath","we","isDeclare","createExportDefaultStatement","de","createExportImportStatement","pe","externalName","createExportMember","he","localName","exportedName","createExpressionStatement","Ee","createIfStatement","me","ifTrue","ifFalse","createImportStatement","Ne","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","Te","foreignName","createInterfaceDeclaration","ye","createFieldDeclaration","fe","createForStatement","Ae","incrementor","createFunctionDeclaration","ve","signature","body","arrowKind","createIndexSignatureDeclaration","te","keyType","valueType","createMethodDeclaration","Se","createNamespaceDeclaration","Re","createReturnStatement","ge","createSwitchStatement","be","cases","createSwitchCase","Ie","createThrowStatement","Le","createTryStatement","Ce","catchVariable","catchStatements","finallyStatements","createTypeDeclaration","Oe","createVariableStatement","Pe","createVariableDeclaration","xe","createVoidStatement","De","createWhileStatement","Ue","Node","TypeNode","kind","TypeName","NamedTypeNode","FunctionTypeNode","TypeParameterNode","DEFAULT","OPTIONAL","REST","ParameterKind","E","implicitFieldDeclaration","CommonFlags","NONE","is","isAny","assert","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","ParameterNode","DecoratorKind","decoratorNameToKind","DecoratorNode","LINE","TRIPLE","CommentKind","CommentNode","T","Expression","N","IdentifierExpression","FLOAT","INTEGER","STRING","REGEXP","ARRAY","OBJECT","LiteralKind","S","LiteralExpression","literalKind","ArrayLiteralExpression","PREFIX","AS","NONNULL","AssertionKind","AssertionExpression","BinaryExpression","configurable","CallExpression","ClassExpression","CommaExpression","CommonSymbols","ConstructorExpression","ElementAccessExpression","FloatLiteralExpression","FunctionExpression","InstanceOfExpression","IntegerLiteralExpression","NewExpression","null_","NullExpression","ObjectLiteralExpression","ParenthesizedExpression","PropertyAccessExpression","RegexpLiteralExpression","TernaryExpression","StringLiteralExpression","super_","SuperExpression","this_","ThisExpression","true_","TrueExpression","false_","FalseExpression","UnaryExpression","UnaryPostfixExpression","UnaryPrefixExpression","Z","J","Statement","USER","USER_ENTRY","LIBRARY","LIBRARY_ENTRY","SourceKind","$","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","lastIndexOf","PATH_DELIMITER","simplePath","Source","ee","DeclarationStatement","IndexSignatureDeclaration","ie","VariableLikeDeclarationStatement","BlockStatement","BreakStatement","ClassDeclaration","ContinueStatement","DoStatement","EmptyStatement","EnumDeclaration","EnumValueDeclaration","ExportImportStatement","ExportMember","ExportStatement","ExportDefaultStatement","ExpressionStatement","parameterIndex","FieldDeclaration","ForStatement","ARROW_PARENTHESIZED","ARROW_SINGLE","ArrowKind","clone","FunctionDeclaration","IfStatement","ImportDeclaration","ImportStatement","InterfaceDeclaration","MethodDeclaration","NamespaceDeclaration","ReturnStatement","SwitchCase","SwitchStatement","ThrowStatement","TryStatement","TypeDeclaration","VariableDeclaration","VariableStatement","VoidStatement","WhileStatement","findDecorator","mangleInternalPath","isTypeOmitted","DECLARE","CONST","LET","STATIC","READONLY","ABSTRACT","PUBLIC","PRIVATE","PROTECTED","GET","SET","DEFINITE_ASSIGNMENT","AMBIENT","GENERIC","GENERIC_CONTEXT","INSTANCE","MODULE_EXPORT","MODULE_IMPORT","RESOLVED","COMPILED","INLINED","SCOPED","TRAMPOLINE","VIRTUAL","MAIN","QUOTED","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","INDEX_SUFFIX","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","boolean","native","indexof","valueof","returnof","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","FixedArray","Set","ArrayBufferView","ArrayBuffer","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","Feature","Target","Typeinfo","TypeinfoFlags","isPowerOf2","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DELETE","ELSE","ENUM","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","INTERFACE","IS","KEYOF","MODULE","NAMESPACE","OF","PACKAGE","TYPE","TYPEOF","VAR","WITH","YIELD","INVALID","OPENBRACE","CLOSEBRACE","OPENPAREN","CLOSEPAREN","OPENBRACKET","CLOSEBRACKET","DOT","DOT_DOT_DOT","SEMICOLON","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","EQUALS_GREATERTHAN","PLUS","MINUS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","QUESTION","COLON","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","AT","STRINGLITERAL","INTEGERLITERAL","FLOATLITERAL","ENDOFFILE","PREFER","ALWAYS","IdentifierHandling","tokenFromKeyword","tokenIsAlsoIdentifier","isIllegalVariableIdentifier","operatorTokenToString","debugInfoRef","pos","token","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","unsafeNext","MAX_VALUE","isDecimalDigit","DiagnosticCode","_0_expected","testInteger","isIdentifierStart","isKeywordCharacter","isIdentifierPart","isWhiteSpace","Invalid_character","peek","isLineBreak","skipIdentifier","skip","mark","discard","readIdentifier","readString","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","readRegexpPattern","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_new","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_mul","Digit_expected","Octal_digit_expected","Binary_digit_expected","readFloat","readDecimalFloat","readHexFloat","i64_low","i64_high","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","DiagnosticEmitter","Tokenizer","State","Operation_not_supported","Operation_is_unsafe","User_defined_0","Conversion_from_type_0_to_1_requires_an_explicit_cast","Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit","Type_0_cannot_be_changed_to_type_1","Type_0_cannot_be_reinterpreted_as_type_1","Basic_type_0_cannot_be_nullable","Cannot_export_a_mutable_global","Mutable_value_cannot_be_inlined","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","Unmanaged_classes_cannot_implement_interfaces","Implementation_0_must_match_the_signature_1","Class_0_is_sealed_and_cannot_be_extended","Decorator_0_is_not_valid_here","Duplicate_decorator","An_allocator_must_be_present_to_use_0","Optional_parameter_must_have_an_initializer","Constructor_of_class_0_must_not_require_any_arguments","Function_0_cannot_be_inlined_into_itself","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","Optional_properties_are_not_supported","Expression_must_be_a_compile_time_constant","Module_cannot_have_multiple_start_functions","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","Expression_is_unsafe","Expression_is_never_null","Identifier_expected","A_file_cannot_have_a_reference_to_itself","Trailing_comma_not_allowed","Unexpected_token","A_rest_parameter_must_be_last_in_a_parameter_list","Parameter_cannot_have_question_mark_and_initializer","A_required_parameter_cannot_follow_an_optional_parameter","Statements_are_not_allowed_in_ambient_contexts","Initializers_are_not_allowed_in_ambient_contexts","_0_modifier_cannot_be_used_here","A_rest_parameter_cannot_be_optional","A_rest_parameter_cannot_have_an_initializer","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","Enum_member_must_have_initializer","Type_parameters_cannot_appear_on_a_constructor_declaration","Type_annotation_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","A_set_accessor_cannot_have_a_return_type_annotation","Type_parameter_list_cannot_be_empty","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_return_statement_can_only_be_used_within_a_function_body","Expression_expected","Type_expected","A_default_clause_cannot_appear_more_than_once_in_a_switch_statement","Duplicate_label_0","An_export_assignment_cannot_have_modifiers","_case_or_default_expected","_super_must_be_followed_by_an_argument_list_or_member_access","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","Type_argument_expected","String_literal_expected","Line_break_not_permitted_here","Declaration_expected","_const_declarations_must_be_initialized","Interface_declaration_cannot_have_implements_clause","An_implementation_cannot_be_declared_in_ambient_contexts","Decorators_are_not_valid_here","_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","A_definite_assignment_assertion_is_not_permitted_in_this_context","A_class_may_only_extend_another_class","A_parameter_property_cannot_be_declared_using_a_rest_parameter","Duplicate_identifier_0","Cannot_find_name_0","Module_0_has_no_exported_member_1","Generic_type_0_requires_1_type_argument_s","Type_0_is_not_generic","Type_0_is_not_assignable_to_type_1","Index_signature_is_missing_in_type_0","_this_cannot_be_referenced_in_current_location","_super_can_only_be_referenced_in_a_derived_class","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","Property_0_does_not_exist_on_type_1","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","A_function_whose_declared_type_is_not_void_must_return_a_value","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access","Operator_0_cannot_be_applied_to_types_1_and_2","A_super_call_must_be_the_first_statement_in_the_constructor","Constructors_for_derived_classes_must_contain_a_super_call","_get_and_set_accessor_must_have_the_same_type","Constructor_implementation_is_missing","Function_implementation_is_missing_or_not_immediately_following_the_declaration","Multiple_constructor_implementations_are_not_allowed","Duplicate_function_implementation","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged","Type_0_has_no_property_1","The_0_operator_cannot_be_applied_to_type_1","In_const_enum_declarations_member_initializer_must_be_constant_expression","Export_declaration_conflicts_with_exported_declaration_of_0","Object_is_possibly_null","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","The_target_of_an_assignment_must_be_a_variable_or_a_property_access","Index_signature_in_type_0_only_permits_reading","Expected_0_arguments_but_got_1","Expected_at_least_0_arguments_but_got_1","Expected_0_type_arguments_but_got_1","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","Namespace_0_has_no_exported_member_1","Required_type_parameters_may_not_follow_optional_type_parameters","Duplicate_property_0","Type_0_has_no_call_signatures","File_0_not_found","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","diagnosticCodeToString","includes","ASTBuilder","build","typeMapping","nonNullableTypes","exportedClasses","wrappedFuncs","nearFiles","visitClassDeclaration","visitFunctionDeclaration","generateWrapperFunction","add","typeName","isGeneric","getFields","preamble","some","BaseVisitor","afterParse","donelog","delete","seenlog","SIGN_EXTENSION","MUTABLE_GLOBAL","BULK_MEMORY","SIMD","THREADS","WASM32","WASM64","JS","__decorate","getOwnPropertyDescriptor","Reflect","decorate","ARRAYBUFFERVIEW","MAP","ACYCLIC","VALUE_ALIGN_0","VALUE_ALIGN_1","VALUE_ALIGN_2","VALUE_ALIGN_3","VALUE_ALIGN_4","VALUE_SIGNED","VALUE_FLOAT","VALUE_NULLABLE","VALUE_MANAGED","KEY_ALIGN_0","KEY_ALIGN_1","KEY_ALIGN_2","KEY_ALIGN_3","KEY_ALIGN_4","KEY_SIGNED","KEY_FLOAT","KEY_NULLABLE","KEY_MANAGED","INFO","WARNING","ERROR","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCategory","diagnosticCategoryToString","COLOR_RESET","diagnosticCategoryToColor","relatedRange","category","message","createInfo","createWarning","createError","withRange","withRelatedRange","column","DiagnosticMessage","formatDiagnosticMessage","formatDiagnosticContext","emitDiagnostic","info","infoRelated","warning","warningRelated","errorRelated","bitsetIs","i64_ne","i64_and","i64_one","i64_zero","bitsetSet","i64_or","i64_not","LINEFEED","CARRIAGERETURN","LINESEPARATOR","PARAGRAPHSEPARATOR","NEXTLINE","SPACE","NONBREAKINGSPACE","ENQUAD","EMQUAD","ENSPACE","EMSPACE","THREEPEREMSPACE","FOURPEREMSPACE","SIXPEREMSPACE","FIGURESPACE","PUNCTUATIONSPACE","THINSPACE","HAIRSPACE","ZEROWIDTHSPACE","NARROWNOBREAKSPACE","IDEOGRAPHICSPACE","MATHEMATICALSPACE","OGHAM","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","BACKSLASH","BACKTICK","DOLLAR","DOUBLEQUOTE","HASH","SINGLEQUOTE","BACKSPACE","FORMFEED","BYTEORDERMARK","TAB","VERTICALTAB","CharCode","__values","done","__read","return","makeArray","unchecked","makeSet","makeMap","readI8","writeI8","readI16","writeI16","readI32","writeI32","readI64","writeI64","readF32","i32_as_f32","writeF32","f32_as_i32","readF64","i64_as_f64","writeF64","f64_as_i64","indentLevel","visitNode","visitSource","visitNamedTypeNode","visitFunctionTypeNode","visitTypeParameter","visitIdentifierExpression","visitAssertionExpression","visitBinaryExpression","visitCallExpression","visitClassExpression","visitCommaExpression","visitElementAccessExpression","visitFunctionExpression","visitInstanceOfExpression","visitLiteralExpression","visitNewExpression","visitParenthesizedExpression","visitPropertyAccessExpression","visitTernaryExpression","visitUnaryPostfixExpression","visitUnaryPrefixExpression","visitBlockStatement","visitBreakStatement","visitContinueStatement","visitDoStatement","visitEmptyStatement","visitExportStatement","visitExportDefaultStatement","visitExportImportStatement","visitExpressionStatement","visitForStatement","visitIfStatement","visitImportStatement","visitReturnStatement","visitSwitchStatement","visitThrowStatement","visitTryStatement","visitVariableStatement","visitWhileStatement","visitEnumDeclaration","visitEnumValueDeclaration","visitFieldDeclaration","visitImportDeclaration","visitIndexSignatureDeclaration","visitInterfaceDeclaration","visitMethodDeclaration","visitNamespaceDeclaration","visitTypeDeclaration","visitVariableDeclaration","serializeDecorator","visitExportMember","serializeParameter","visitSwitchCase","visitNodeAndTerminate","visitTypeNode","visitTypeName","visitStringLiteral","visitArrayLiteralExpression","visitObjectLiteralExpression","visitFunctionCommon","visitFloatLiteralExpression","visitIntegerLiteralExpression","visitStringLiteralExpression","visitRegexpLiteralExpression","i64_to_string","visitUnaryExpression","serializeExternalModifiers","serializeAccessModifiers","captureStackTrace","defineProperties","MIN_VALUE","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz","clz32","ctz","popcnt","rotl","rotr","abs","ceil","floor","nearest","trunc","round","select","sqrt","copysign","sign","bswap","bswap16","unreachable","changetype","fromCharCodes","fromCodePoints","fromCodePoint","replaceAll","isInteger","Number","isFloat","isReference","isFunction","isString","isArrayLike","isDefined","isConstant","fmod","fmodf","JSMath","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","allocate","__memory_allocate","fill","__memory_fill","__memory_free","copy","__memory_copy","copyWithin","__memory_reset","store","__store","HEAP","load","__load","unmanaged","Long","ZERO","ONE","fromBits","low","high","i64_sub","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","and","or","i64_xor","xor","shl","i64_shr","shr","i64_shr_u","shru","not","i64_eq","eq","i64_align","fromInt","i64_is_i8","i64_is_i16","i64_is_i32","i64_is_u8","i64_is_u16","i64_is_u32","i64_is_bool","fromNumber","i64_is_f32","gte","lte","i64_is_f64","i64_to_f32","toNumber","i64_to_f64","WebAssembly","Instance","Module","unsigned","__isLong__","isLong","isNaN","neg","RangeError","fromString","fromValue","UZERO","UONE","NEG_ONE","MAX_UNSIGNED_VALUE","toInt","isZero","isNegative","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","greaterThan","gt","greaterThanOrEqual","compare","negate","subtract","multiply","get_high","divide","div_u","div_s","log","LN2","modulo","rem_u","rem_s","rem","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","depth","_visit","visitDecoratorNode","visitParameter","visitSuperExpression","visitFalseExpression","visitTrueExpression","visitThisExpression","visitNullExperssion","visitConstructorExpression","visitVoidStatement","visitComment","AbstractVisitor","writeString","writeNode","DefaultWriter","writer","entries","webpackEmptyContext","req","id","previousTimestamp","clocktime","performanceNow","performance","seconds","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"assemblyscript\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__11__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Compiler frontend for node.js\n *\n * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to\n * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources\n * directly through ts-node if distribution files are not present (indicated by a `-dev` version).\n *\n * Can also be packaged as a bundle suitable for in-browser use with the standard library injected\n * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details.\n *\n * @module cli/asc\n */\n\n// Use \".\" instead of \"/\" as cwd in browsers\nif (process.browser) process.cwd = function() { return \".\"; };\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst utf8 = require(\"@protobufjs/utf8\");\nconst colorsUtil = require(\"./util/colors\");\nconst optionsUtil = require(\"./util/options\");\nconst mkdirp = require(\"./util/mkdirp\");\nconst EOL = process.platform === \"win32\" ? \"\\r\\n\" : \"\\n\";\nconst SEP = process.platform === \"win32\" ? \"\\\\\" : \"/\";\nconst nearBindings = require(\"../bindings/dist/transformerBundle.js\");\nconst nearLibEntry = path.join(__dirname, \"..\", \"bindings\", \"assembly\", \"nearEntry.ts\");\n// global.Binaryen = require(\"../lib/binaryen\");\n\n// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional\n// useless code fragment on top of an actual error. suppress this:\nif (process.removeAllListeners) process.removeAllListeners(\"uncaughtException\");\n\n// Use distribution files if present, otherwise run the sources directly\nvar assemblyscript, isDev = false;\n(() => {\n try { // `asc` on the command line\n assemblyscript = require(\"../dist/assemblyscript.js\");\n } catch (e) {\n try { // `asc` on the command line without dist files\n require(\"ts-node\").register({ project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\") });\n require(\"../src/glue/js\");\n assemblyscript = require(\"../src\");\n isDev = true;\n } catch (e_ts) {\n try { // `require(\"dist/asc.js\")` in explicit browser tests\n assemblyscript = eval(\"require('./assemblyscript')\");\n } catch (e) {\n // combine both errors that lead us here\n e.stack = e_ts.stack + \"\\n---\\n\" + e.stack;\n throw e;\n }\n }\n }\n})();\n\n/** Whether this is a webpack bundle or not. */\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\n\n/** Whether asc runs the sources directly or not. */\nexports.isDev = isDev;\n\n/** AssemblyScript version. */\nexports.version = exports.isBundle ? BUNDLE_VERSION : require(\"../package.json\").version;\n\n/** Available CLI options. */\nexports.options = require(\"./asc.json\");\n\n/** Common root used in source maps. */\nexports.sourceMapRoot = \"assemblyscript:///\";\n\n/** Prefix used for library files. */\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\n\n/** Default Binaryen optimization level. */\nexports.defaultOptimizeLevel = 3;\n\n/** Default Binaryen shrink level. */\nexports.defaultShrinkLevel = 1;\n\n/** Bundled library files. */\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle\n const libDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\n const libFiles = require(\"glob\").sync(\"**/!(*.d).ts\", { cwd: libDir })\n const bundled = {\n \"nearEntry\": fs.readFileSync(nearLibEntry, \"utf8\")\n };\n libFiles.forEach(file => bundled[file.replace(/\\.ts$/, \"\")] = fs.readFileSync(path.join(libDir, file), \"utf8\" ));\n return bundled;\n})();\n\n/** Bundled definition files. */\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle\n const stdDir = path.join(__dirname, \"..\", \"std\");\n return {\n \"assembly\": fs.readFileSync(path.join(stdDir, \"assembly\", \"index.d.ts\"), \"utf8\"),\n \"portable\": fs.readFileSync(path.join(stdDir, \"portable\", \"index.d.ts\"), \"utf8\")\n };\n})();\n\n/** Convenience function that parses and compiles source strings directly. */\nexports.compileString = (sources, options) => {\n if (typeof sources === \"string\") sources = { \"input.ts\": sources };\n const output = Object.create({\n stdout: createMemoryStream(),\n stderr: createMemoryStream()\n });\n var argv = [\n \"--binaryFile\", \"binary\",\n \"--textFile\", \"text\",\n ];\n Object.keys(options || {}).forEach(key => {\n var val = options[key];\n if (Array.isArray(val)) val.forEach(val => argv.push(\"--\" + key, String(val)));\n else argv.push(\"--\" + key, String(val));\n });\n exports.main(argv.concat(Object.keys(sources)), {\n stdout: output.stdout,\n stderr: output.stderr,\n readFile: name => sources.hasOwnProperty(name) ? sources[name] : null,\n writeFile: (name, contents) => output[name] = contents,\n listFiles: () => []\n });\n return output;\n}\n\n/** Runs the command line utility using the specified arguments array. */\nexports.main = function main(argv, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (!options) {\n options = {};\n }\n\n const stdout = options.stdout || process.stdout;\n const stderr = options.stderr || process.stderr;\n const readFile = options.readFile || readFileNode;\n const writeFile = options.writeFile || writeFileNode;\n const listFiles = options.listFiles || listFilesNode;\n const stats = options.stats || createStats();\n\n // Output must be specified if not present in the environment\n if (!stdout) throw Error(\"'options.stdout' must be specified\");\n if (!stderr) throw Error(\"'options.stderr' must be specified\");\n\n const opts = optionsUtil.parse(argv, exports.options);\n const args = opts.options;\n argv = opts.arguments;\n if (args.noColors) {\n colorsUtil.stdout.supported =\n colorsUtil.stderr.supported = false;\n } else {\n colorsUtil.stdout = colorsUtil.from(stdout);\n colorsUtil.stderr = colorsUtil.from(stderr);\n }\n\n // Check for unknown arguments\n if (opts.unknown.length) {\n opts.unknown.forEach(arg => {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unknown option '\" + arg + \"'\" + EOL);\n });\n }\n\n // Check for trailing arguments\n if (opts.trailing.length) {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unsupported trailing arguments: \" + opts.trailing.join(\" \") + EOL);\n }\n\n // Use default callback if none is provided\n if (!callback) callback = function defaultCallback(err) {\n var code = 0;\n if (err) {\n stderr.write(colorsUtil.stderr.red(\"ERROR: \") + err.stack.replace(/^ERROR: /i, \"\") + EOL);\n code = 1;\n }\n return code;\n };\n\n // Just print the version if requested\n if (args.version) {\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + EOL);\n return callback(null);\n }\n // Print the help message if requested or no source files are provided\n if (args.help || !argv.length) {\n var out = args.help ? stdout : stderr;\n var color = args.help ? colorsUtil.stdout : colorsUtil.stderr;\n out.write([\n color.white(\"SYNTAX\"),\n \" \" + color.cyan(\"asc\") + \" [entryFile ...] [options]\",\n \"\",\n color.white(\"EXAMPLES\"),\n \" \" + color.cyan(\"asc\") + \" hello.ts\",\n \" \" + color.cyan(\"asc\") + \" hello.ts -b hello.wasm -t hello.wat\",\n \" \" + color.cyan(\"asc\") + \" hello1.ts hello2.ts -b -O > hello.wasm\",\n \"\",\n color.white(\"OPTIONS\"),\n ].concat(\n optionsUtil.help(exports.options, 24, EOL)\n ).join(EOL) + EOL);\n return callback(null);\n }\n\n // I/O must be specified if not present in the environment\n if (!fs.readFileSync) {\n if (readFile === readFileNode) throw Error(\"'options.readFile' must be specified\");\n if (writeFile === writeFileNode) throw Error(\"'options.writeFile' must be specified\");\n if (listFiles === listFilesNode) throw Error(\"'options.listFiles' must be specified\");\n }\n\n // Set up base directory\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : \".\";\n\n // Set up transforms\n const transforms = args.notNear ? [] : [nearBindings];\n //Add near's bindings by default\n if (args.transform) {\n args.transform.forEach(transform =>\n transforms.push(\n require(\n path.isAbsolute(transform = transform.trim())\n ? transform\n : path.join(process.cwd(), transform)\n )\n )\n );\n }\n function applyTransform(name, ...args) {\n transforms.forEach(transform => {\n if (typeof transform[name] === \"function\") transform[name](...args);\n });\n }\n\n // Begin parsing\n var parser = null;\n\n // Maps package names to parent directory\n var packages = new Map();\n var importPathMap = new Map();\n\n // Include library files\n Object.keys(exports.libraryFiles).forEach(libPath => {\n if (libPath.indexOf(\"/\") >= 0) return; // in sub-directory: imported on demand\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n exports.libraryFiles[libPath],\n exports.libraryPrefix + libPath + \".ts\",\n false,\n parser\n );\n });\n });\n const customLibDirs = [];\n if (args.lib) {\n let lib = args.lib;\n if (typeof lib === \"string\") lib = lib.split(\",\");\n Array.prototype.push.apply(customLibDirs, lib.map(lib => lib.trim()));\n for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom\n let libDir = customLibDirs[i];\n let libFiles;\n if (libDir.endsWith(\".ts\")) {\n libFiles = [ path.basename(libDir) ];\n libDir = path.dirname(libDir);\n } else {\n libFiles = listFiles(libDir, baseDir) || [];\n }\n for (let j = 0, l = libFiles.length; j < l; ++j) {\n let libPath = libFiles[j];\n let libText = readFile(libPath, libDir);\n if (libText === null) return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\n stats.parseCount++;\n exports.libraryFiles[libPath.replace(/\\.ts$/, \"\")] = libText;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n libText,\n exports.libraryPrefix + libPath,\n false,\n parser\n );\n });\n }\n }\n }\n args.path = args.path || [];\n // Find all valid node_module paths starting at baseDir\n function nodePaths(basePath, _path) {\n return basePath.split(SEP)\n .map((_, i, arr) => {\n let dir = arr.slice(0, i + 1).join(SEP) || SEP;\n let dirFrom = path.relative(baseDir, dir);\n return path.join(dirFrom, _path);\n })\n .filter(dir => listFiles(dir, baseDir))\n .reverse();\n }\n function getPaths(basePath) {\n let paths = args.path.map(p => nodePaths(basePath, p));\n return nodePaths(basePath, \"node_modules\").concat(...paths)\n }\n\n // Parses the backlog of imported files after including entry files\n function parseBacklog() {\n var sourcePath, sourceText, sysPath;\n // dependee is the path of the file that depends on sourcePath\n while ((sourcePath = parser.nextFile()) != null) {\n dependee = importPathMap.get(assemblyscript.getDependee(parser, sourcePath)) || baseDir;\n sourceText = null;\n sysPath = null;\n \n // Load library file if explicitly requested\n if (sourcePath.startsWith(exports.libraryPrefix)) {\n const plainName = sourcePath.substring(exports.libraryPrefix.length);\n const indexName = sourcePath.substring(exports.libraryPrefix.length) + \"/index\";\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n sourceText = readFile(plainName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(customLibDirs[i], plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(customLibDirs[i], indexName + \".ts\");\n break;\n }\n }\n }\n }\n\n // Otherwise try nextFile.ts, nextFile/index.ts, ~lib/nextFile.ts, ~lib/nextFile/index.ts\n } else {\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(plainName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n sysPath = path.join(baseDir, sourcePath);\n } else {\n sourceText = readFile(indexName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n } else if (!plainName.startsWith(\".\")) {\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n const dir = customLibDirs[i];\n sourceText = readFile(plainName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(dir, plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(dir, indexName + \".ts\");\n break;\n }\n }\n }\n }\n }\n }\n }\n /*\n In this case the library wasn't found so we check paths\n */\n if (sourceText == null) {\n if (args.traceResolution) {\n stderr.write(\"Looking for '\" + sourcePath + \"' imported by '\" + dependee + \"'\" + EOL);\n }\n paths = getPaths(path.join(baseDir, dependee));\n let _package = sourcePath.replace(/\\~lib\\/([^\\/]*).*/, \"$1\");\n for (let _path of paths) {\n let ascMain = (() => {\n if (packages.has(_package)) {\n return packages.get(_package);\n }\n let p = path.join(_path, _package, \"package.json\");\n let res = readFile(p, baseDir);\n if (res) {\n let package_json;\n try {\n package_json = JSON.parse(res);\n } catch (e) {\n return callback(Error(\"Parsing \" + p + \" failed\"));\n }\n let mainFile = package_json.ascMain;\n if (mainFile && (typeof mainFile === 'string')) {\n let newPackage = mainFile.replace(/(.*)\\/index\\.ts/, '$1');\n packages.set(_package, newPackage);\n return newPackage;\n }\n }\n return \"assembly\";\n })()\n let realPath = (_p) => {\n if (_p.startsWith(exports.libraryPrefix)){\n _p = _p.substring(exports.libraryPrefix.length);\n }\n let first = _p.substring(0, _p.indexOf(\"/\"));\n let second = _p.substring(_p.indexOf(\"/\") + 1);\n return path.join(_path, first, ascMain, second);\n }\n if (args.traceResolution) {\n stderr.write(\" in '\" + realPath(sourcePath) + \"'\");\n }\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(realPath(plainName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n } else {\n sourceText = readFile(realPath(indexName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n }\n }\n if (sourceText !== null) {\n if (args.traceResolution) {\n stderr.write(EOL + \" -> '\" + realPath(sourcePath) + \"'\" + EOL);\n }\n let newPath = path.join(_path, _package);\n sysPath = newPath;\n break;\n }\n if (args.traceResolution) {\n stderr.write(EOL);\n }\n }\n }\n if (sourceText == null) {\n return callback(Error(\"Import file '\" + sourcePath + \".ts' not found.\"));\n }\n importPathMap.set(sourcePath.replace(/\\.ts$/, \"\"), sysPath);\n stats.parseCount++;\n stats.parseTime += measure(() => {\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\n });\n }\n if (checkDiagnostics(parser, stderr)) {\n return callback(Error(\"Parse error\"));\n }\n }\n\n // Include runtime template before entry files so its setup runs first\n {\n let runtimeName = String(args.runtime);\n let runtimePath = \"rt/index-\" + runtimeName;\n let runtimeText = exports.libraryFiles[runtimePath];\n if (runtimeText == null) {\n runtimePath = runtimeName;\n runtimeText = readFile(runtimePath + \".ts\", baseDir);\n if (runtimeText == null) {\n return callback(Error(\"Runtime '\" + runtimeName + \"' not found.\"));\n }\n } else {\n runtimePath = \"~lib/\" + runtimePath;\n }\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser);\n });\n }\n\n // Include entry files\n for (let i = 0, k = argv.length; i < k; ++i) {\n const filename = argv[i];\n\n let sourcePath = String(filename).replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\n // Setting the path to relative path\n sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath) : sourcePath;\n\n // Try entryPath.ts, then entryPath/index.ts\n let sourceText = readFile(sourcePath + \".ts\", baseDir);\n if (sourceText === null) {\n sourceText = readFile(sourcePath + \"/index.ts\", baseDir);\n if (sourceText === null) {\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\n } else {\n sourcePath += \"/index.ts\";\n }\n } else {\n sourcePath += \".ts\";\n }\n\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\n });\n }\n\n // Parse entry files\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Call afterParse transform hook\n applyTransform(\"afterParse\", parser, writeFile, baseDir);\n\n // Parse additional files, if any\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Finish parsing\n const program = assemblyscript.finishParsing(parser);\n\n // Print files and exit if listFiles\n if (args.listFiles) {\n stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL);\n return callback(null);\n }\n\n // Set up optimization levels\n var optimizeLevel = 0;\n var shrinkLevel = 0;\n if (args.optimize) {\n optimizeLevel = exports.defaultOptimizeLevel;\n shrinkLevel = exports.defaultShrinkLevel;\n }\n if (typeof args.optimizeLevel === \"number\") {\n optimizeLevel = args.optimizeLevel;\n }\n if (typeof args.shrinkLevel === \"number\") {\n shrinkLevel = args.shrinkLevel;\n }\n optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3);\n shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2);\n\n // Begin compilation\n const compilerOptions = assemblyscript.createOptions();\n assemblyscript.setTarget(compilerOptions, 0);\n assemblyscript.setNoAssert(compilerOptions, args.noAssert);\n assemblyscript.setImportMemory(compilerOptions, args.importMemory);\n assemblyscript.setSharedMemory(compilerOptions, args.sharedMemory);\n assemblyscript.setImportTable(compilerOptions, args.importTable);\n assemblyscript.setExplicitStart(compilerOptions, args.explicitStart);\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\n assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel);\n assemblyscript.setNoUnsafe(compilerOptions, args.noUnsafe);\n\n // Initialize default aliases\n assemblyscript.setGlobalAlias(compilerOptions, \"Math\", \"NativeMath\");\n assemblyscript.setGlobalAlias(compilerOptions, \"Mathf\", \"NativeMathf\");\n assemblyscript.setGlobalAlias(compilerOptions, \"abort\", \"~lib/builtins/abort\");\n assemblyscript.setGlobalAlias(compilerOptions, \"trace\", \"~lib/builtins/trace\");\n\n // Add or override aliases if specified\n if (args.use) {\n let aliases = args.use;\n for (let i = 0, k = aliases.length; i < k; ++i) {\n let part = aliases[i];\n let p = part.indexOf(\"=\");\n if (p < 0) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n let alias = part.substring(0, p).trim();\n let name = part.substring(p + 1).trim();\n if (!alias.length) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n assemblyscript.setGlobalAlias(compilerOptions, alias, name);\n }\n }\n\n // Enable additional features if specified\n var features = args.enable;\n if (features != null) {\n if (typeof features === \"string\") features = features.split(\",\");\n for (let i = 0, k = features.length; i < k; ++i) {\n let name = features[i].trim();\n let flag = assemblyscript[\"FEATURE_\" + name.replace(/\\-/g, \"_\").toUpperCase()];\n if (!flag) return callback(Error(\"Feature '\" + name + \"' is unknown.\"));\n assemblyscript.enableFeature(compilerOptions, flag);\n }\n }\n\n var module;\n stats.compileCount++;\n try {\n stats.compileTime += measure(() => {\n module = assemblyscript.compileProgram(program, compilerOptions);\n });\n } catch (e) {\n return callback(e);\n }\n if (checkDiagnostics(parser, stderr)) {\n if (module) module.dispose();\n return callback(Error(\"Compile error\"));\n }\n\n // Validate the module if requested\n if (args.validate) {\n stats.validateCount++;\n stats.validateTime += measure(() => {\n if (!module.validate()) {\n module.dispose();\n return callback(Error(\"Validate error\"));\n }\n });\n }\n\n // Set Binaryen-specific options\n if (args.trapMode === \"clamp\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-clamp\" ]);\n });\n } else if (args.trapMode === \"js\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-js\" ]);\n });\n } else if (args.trapMode !== \"allow\") {\n module.dispose();\n return callback(Error(\"Unsupported trap mode\"));\n }\n\n // Implicitly run costly non-LLVM optimizations on -O3 or -Oz\n // see: https://github.com/WebAssembly/binaryen/pull/1596\n if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;\n\n module.setOptimizeLevel(optimizeLevel);\n module.setShrinkLevel(shrinkLevel);\n module.setDebugInfo(args.debug);\n\n var runPasses = [];\n if (args.runPasses) {\n if (typeof args.runPasses === \"string\") {\n args.runPasses = args.runPasses.split(\",\");\n }\n if (args.runPasses.length) {\n args.runPasses.forEach(pass => {\n if (runPasses.indexOf(pass) < 0)\n runPasses.push(pass);\n });\n }\n }\n\n // Optimize the module if requested\n if (optimizeLevel > 0 || shrinkLevel > 0) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.optimize();\n });\n }\n\n // Run additional passes if requested\n if (runPasses.length) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses(runPasses.map(pass => pass.trim()));\n });\n }\n\n // Prepare output\n if (!args.noEmit) {\n let hasStdout = false;\n let hasOutput = false;\n\n if (args.outFile != null) {\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null) {\n args.textFile = args.outFile;\n } else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null) {\n args.asmjsFile = args.outFile;\n } else if (args.binaryFile == null) {\n args.binaryFile = args.outFile;\n }\n }\n\n // Write binary\n if (args.binaryFile != null) {\n let sourceMapURL = args.sourceMap != null\n ? args.sourceMap.length\n ? args.sourceMap\n : path.basename(args.binaryFile) + \".map\"\n : null;\n\n let wasm;\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wasm = module.toBinary(sourceMapURL)\n });\n\n if (args.binaryFile.length) {\n writeFile(args.binaryFile, wasm.output, baseDir);\n } else {\n writeStdout(wasm.output);\n hasStdout = true;\n }\n hasOutput = true;\n\n // Post-process source map\n if (wasm.sourceMap != null) {\n if (args.binaryFile.length) {\n let sourceMap = JSON.parse(wasm.sourceMap);\n sourceMap.sourceRoot = exports.sourceMapRoot;\n sourceMap.sources.forEach((name, index) => {\n let text = null;\n if (name.startsWith(exports.libraryPrefix)) {\n let stdName = name.substring(exports.libraryPrefix.length).replace(/\\.ts$/, \"\");\n if (exports.libraryFiles.hasOwnProperty(stdName)) {\n text = exports.libraryFiles[stdName];\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n text = readFile(name.substring(exports.libraryPrefix.length), customLibDirs[i]);\n if (text !== null) break;\n }\n }\n } else {\n text = readFile(name, baseDir);\n }\n if (text === null) {\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\n }\n if (!sourceMap.sourceContents) sourceMap.sourceContents = [];\n sourceMap.sourceContents[index] = text;\n });\n writeFile(path.join(\n path.dirname(args.binaryFile),\n path.basename(sourceMapURL)\n ).replace(/^\\.\\//, \"\"), JSON.stringify(sourceMap), baseDir);\n } else {\n stderr.write(\"Skipped source map (stdout already occupied)\" + EOL);\n }\n }\n }\n\n // Write asm.js\n if (args.asmjsFile != null) {\n let asm;\n if (args.asmjsFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeFile(args.asmjsFile, asm, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeStdout(asm);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write WebIDL\n if (args.idlFile != null) {\n let idl;\n if (args.idlFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeFile(args.idlFile, idl, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeStdout(idl);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write TypeScript definition\n if (args.tsdFile != null) {\n let tsd;\n if (args.tsdFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeFile(args.tsdFile, tsd, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeStdout(tsd);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write text (must be last)\n if (args.textFile != null || !hasOutput) {\n let wat;\n if (args.textFile && args.textFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText();\n });\n writeFile(args.textFile, wat, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText()\n });\n writeStdout(wat);\n }\n }\n }\n\n module.dispose();\n if (args.measure) {\n printStats(stats, stderr);\n }\n if (args.printrtti) {\n printRTTI(program, stderr);\n }\n return callback(null);\n\n function readFileNode(filename, baseDir) {\n let name = path.resolve(baseDir, filename);\n try {\n let text;\n stats.readCount++;\n stats.readTime += measure(() => {\n text = fs.readFileSync(name, { encoding: \"utf8\" });\n });\n return text;\n } catch (e) {\n return null;\n }\n }\n\n function writeFileNode(filename, contents, baseDir) {\n try {\n stats.writeCount++;\n stats.writeTime += measure(() => {\n mkdirp(path.join(baseDir, path.dirname(filename)));\n if (typeof contents === \"string\") {\n fs.writeFileSync(path.join(baseDir, filename), contents, { encoding: \"utf8\" } );\n } else {\n fs.writeFileSync(path.join(baseDir, filename), contents);\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function listFilesNode(dirname, baseDir) {\n var files;\n try {\n stats.readTime += measure(() => {\n files = fs.readdirSync(path.join(baseDir, dirname)).filter(file => /^(?!.*\\.d\\.ts$).*\\.ts$/.test(file));\n });\n return files;\n } catch (e) {\n return null;\n }\n }\n\n function writeStdout(contents) {\n if (!writeStdout.used) {\n stats.writeCount++;\n writeStdout.used = true;\n }\n stats.writeTime += measure(() => {\n if (typeof contents === \"string\") {\n stdout.write(contents, { encoding: \"utf8\" });\n } else {\n stdout.write(contents);\n }\n });\n }\n}\n\n/** Checks diagnostics emitted so far for errors. */\nfunction checkDiagnostics(emitter, stderr) {\n var diagnostic;\n var hasErrors = false;\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\n if (stderr) {\n stderr.write(\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\n EOL + EOL\n );\n }\n if (assemblyscript.isError(diagnostic)) hasErrors = true;\n }\n return hasErrors;\n}\n\nexports.checkDiagnostics = checkDiagnostics;\n\n/** Creates an empty set of stats. */\nfunction createStats() {\n return {\n readTime: 0,\n readCount: 0,\n writeTime: 0,\n writeCount: 0,\n parseTime: 0,\n parseCount: 0,\n compileTime: 0,\n compileCount: 0,\n emitTime: 0,\n emitCount: 0,\n validateTime: 0,\n validateCount: 0,\n optimizeTime: 0,\n optimizeCount: 0\n };\n}\n\nexports.createStats = createStats;\n\nif (!process.hrtime) process.hrtime = require(\"browser-process-hrtime\");\n\n/** Measures the execution time of the specified function. */\nfunction measure(fn) {\n const start = process.hrtime();\n fn();\n const times = process.hrtime(start);\n return times[0] * 1e9 + times[1];\n}\n\nexports.measure = measure;\n\n/** Formats a high resolution time to a human readable string. */\nfunction formatTime(time) {\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\n}\n\nexports.formatTime = formatTime;\n\n/** Formats and prints out the contents of a set of stats. */\nfunction printStats(stats, output) {\n function format(time, count) {\n return formatTime(time);\n }\n (output || process.stdout).write([\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\n ].join(EOL) + EOL);\n}\n\nexports.printStats = printStats;\n\n/** Prints runtime type information. */\nfunction printRTTI(program, output) {\n if (!output) output = process.stderr;\n output.write(\"# Runtime type information (RTTI)\\n\");\n output.write(assemblyscript.buildRTTI(program));\n}\n\nexports.printRTTI = printRTTI;\n\nvar allocBuffer = typeof global !== \"undefined\" && global.Buffer\n ? global.Buffer.allocUnsafe || function(len) { return new global.Buffer(len); }\n : function(len) { return new Uint8Array(len) };\n\n/** Creates a memory stream that can be used in place of stdout/stderr. */\nfunction createMemoryStream(fn) {\n var stream = [];\n stream.write = function(chunk) {\n if (fn) fn(chunk);\n if (typeof chunk === \"string\") {\n let buffer = allocBuffer(utf8.length(chunk));\n utf8.write(chunk, buffer, 0);\n chunk = buffer;\n }\n this.push(chunk);\n };\n stream.reset = function() {\n stream.length = 0;\n };\n stream.toBuffer = function() {\n var offset = 0, i = 0, k = this.length;\n while (i < k) offset += this[i++].length;\n var buffer = allocBuffer(offset);\n offset = i = 0;\n while (i < k) {\n buffer.set(this[i], offset);\n offset += this[i].length;\n ++i;\n }\n return buffer;\n };\n stream.toString = function() {\n var buffer = this.toBuffer();\n return utf8.read(buffer, 0, buffer.length);\n };\n return stream;\n}\n\nexports.createMemoryStream = createMemoryStream;\n\n/** Compatible TypeScript compiler options for syntax highlighting etc. */\nexports.tscOptions = {\n alwaysStrict: true,\n noImplicitAny: true,\n noImplicitReturns: true,\n noImplicitThis: true,\n noEmitOnError: true,\n strictNullChecks: true,\n experimentalDecorators: true,\n target: \"esnext\",\n module: \"commonjs\",\n noLib: true,\n types: [],\n allowJs: false\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var proc = typeof process !== \"undefined\" && process || {};\nvar isCI = proc.env && \"CI\" in proc.env; // doesn't work when bundled because 'process' is a mock\n\nfunction from(stream, base) {\n var colors = base || {};\n colors.supported = (stream && !!stream.isTTY) || isCI;\n colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text;\n colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text;\n colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text;\n colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text;\n colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text;\n colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text;\n colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text;\n colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text;\n return colors;\n}\n\nexports.stdout = from(proc.stdout, exports);\nexports.stderr = from(proc.stderr);\nexports.from = from;\n\nexports.GRAY = \"\\u001b[90m\";\nexports.RED = \"\\u001b[91m\";\nexports.GREEN = \"\\u001b[92m\";\nexports.YELLOW = \"\\u001b[93m\";\nexports.BLUE = \"\\u001b[94m\";\nexports.MAGENTA = \"\\u001b[95m\";\nexports.CYAN = \"\\u001b[96m\";\nexports.WHITE = \"\\u001b[97m\";\nexports.RESET = \"\\u001b[0m\";\n","// type | meaning\n// -----|---------------\n// b | boolean\n// i | integer\n// f | float\n// s | string\n// I | integer array\n// F | float array\n// S | string array\n\n/** Parses the specified command line arguments according to the given configuration. */\nfunction parse(argv, config) {\n var options = {};\n var unknown = [];\n var arguments = [];\n var trailing = [];\n\n // make an alias map and initialize defaults\n var aliases = {};\n Object.keys(config).forEach(key => {\n if (key.startsWith(\" \")) return;\n var option = config[key];\n if (option.alias != null) {\n if (typeof option.alias === \"string\") aliases[option.alias] = key;\n else if (Array.isArray(option.alias)) option.alias.forEach(alias => aliases[alias] = key);\n }\n if (option.default != null) options[key] = option.default;\n });\n\n // iterate over argv\n for (var i = 0, k = (argv = argv.slice()).length; i < k; ++i) {\n let arg = argv[i];\n if (arg == \"--\") { ++i; break; }\n let match = /^(?:(\\-\\w)(?:=(.*))?|(\\-\\-\\w{2,})(?:=(.*))?)$/.exec(arg), option, key;\n if (match) {\n if (config[arg]) option = config[key = arg]; // exact\n else if (match[1] != null) { // alias\n option = config[key = aliases[match[1].substring(1)]];\n if (option && match[2] != null) argv[i--] = match[2];\n } else if (match[3] != null) { // full\n option = config[key = match[3].substring(2)];\n if (option && match[4] != null) argv[i--] = match[4];\n }\n } else {\n if (arg.charCodeAt(0) == 45) option = config[key = arg]; // exact\n else { arguments.push(arg); continue; } // argument\n }\n if (option) {\n if (option.type == null || option.type === \"b\") options[key] = true; // flag\n else {\n if (i + 1 < argv.length && argv[i + 1].charCodeAt(0) != 45) { // present\n switch (option.type) {\n case \"i\": options[key] = parseInt(argv[++i], 10); break;\n case \"I\": options[key] = (options[key] || []).concat(parseInt(argv[++i], 10)); break;\n case \"f\": options[key] = parseFloat(argv[++i]); break;\n case \"F\": options[key] = (options[key] || []).concat(parseFloat(argv[++i])); break;\n case \"s\": options[key] = String(argv[++i]); break;\n case \"S\": options[key] = (options[key] || []).concat(argv[++i].split(\",\")); break;\n default: unknown.push(arg); --i;\n }\n } else { // omitted\n switch (option.type) {\n case \"i\":\n case \"f\": options[key] = option.default || 0; break;\n case \"s\": options[key] = option.default || \"\"; break;\n case \"I\":\n case \"F\":\n case \"S\": options[key] = options.default || []; break;\n default: unknown.push(arg);\n }\n }\n }\n if (option.value) Object.keys(option.value).forEach(k => options[k] = option.value[k]);\n } else unknown.push(arg);\n }\n while (i < k) trailing.push(argv[i++]); // trailing\n\n return { options, unknown, arguments, trailing };\n}\n\nexports.parse = parse;\n\n/** Generates the help text for the specified configuration. */\nfunction help(config, options) {\n if (!options) options = {};\n var indent = options.indent || 2;\n var padding = options.padding || 24;\n var eol = options.eol || \"\\n\";\n var sb = [];\n Object.keys(config).forEach(key => {\n var option = config[key];\n if (option.description == null) return;\n var text = \"\";\n while (text.length < indent) text += \" \";\n text += \"--\" + key;\n if (option.alias) text += \", -\" + option.alias;\n while (text.length < padding) text += \" \";\n if (Array.isArray(option.description)) {\n sb.push(text + option.description[0] + option.description.slice(1).map(line => {\n for (let i = 0; i < padding; ++i) line = \" \" + line;\n return eol + line;\n }).join(\"\"));\n } else sb.push(text + option.description);\n });\n return sb.join(eol);\n}\n\nexports.help = help;\n","/*\nCopyright 2010 James Halliday (mail@substack.net)\n\nThis project is free software released under the MIT/X11 license:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nvar path = require(\"path\");\nvar fs = require(\"fs\");\nvar _0777 = parseInt(\"0777\", 8);\n\nmodule.exports = function mkdirp(p, opts, made) {\n if (!opts || typeof opts !== \"object\") {\n opts = { mode: opts };\n }\n var mode = opts.mode;\n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n p = path.resolve(p);\n try {\n fs.mkdirSync(p, mode);\n made = made || p;\n } catch (err0) {\n switch (err0.code) {\n case \"ENOENT\":\n made = mkdirp(path.dirname(p), opts, made);\n mkdirp(p, opts, made);\n break;\n default:\n var stat;\n try {\n stat = fs.statSync(p);\n } catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n return made;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.transformer=t():e.transformer=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=6)}([function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]=\"SOURCE\",e[e.NAMEDTYPE=1]=\"NAMEDTYPE\",e[e.FUNCTIONTYPE=2]=\"FUNCTIONTYPE\",e[e.TYPENAME=3]=\"TYPENAME\",e[e.TYPEPARAMETER=4]=\"TYPEPARAMETER\",e[e.PARAMETER=5]=\"PARAMETER\",e[e.IDENTIFIER=6]=\"IDENTIFIER\",e[e.ASSERTION=7]=\"ASSERTION\",e[e.BINARY=8]=\"BINARY\",e[e.CALL=9]=\"CALL\",e[e.CLASS=10]=\"CLASS\",e[e.COMMA=11]=\"COMMA\",e[e.ELEMENTACCESS=12]=\"ELEMENTACCESS\",e[e.FALSE=13]=\"FALSE\",e[e.FUNCTION=14]=\"FUNCTION\",e[e.INSTANCEOF=15]=\"INSTANCEOF\",e[e.LITERAL=16]=\"LITERAL\",e[e.NEW=17]=\"NEW\",e[e.NULL=18]=\"NULL\",e[e.PARENTHESIZED=19]=\"PARENTHESIZED\",e[e.PROPERTYACCESS=20]=\"PROPERTYACCESS\",e[e.TERNARY=21]=\"TERNARY\",e[e.SUPER=22]=\"SUPER\",e[e.THIS=23]=\"THIS\",e[e.TRUE=24]=\"TRUE\",e[e.CONSTRUCTOR=25]=\"CONSTRUCTOR\",e[e.UNARYPOSTFIX=26]=\"UNARYPOSTFIX\",e[e.UNARYPREFIX=27]=\"UNARYPREFIX\",e[e.BLOCK=28]=\"BLOCK\",e[e.BREAK=29]=\"BREAK\",e[e.CONTINUE=30]=\"CONTINUE\",e[e.DO=31]=\"DO\",e[e.EMPTY=32]=\"EMPTY\",e[e.EXPORT=33]=\"EXPORT\",e[e.EXPORTDEFAULT=34]=\"EXPORTDEFAULT\",e[e.EXPORTIMPORT=35]=\"EXPORTIMPORT\",e[e.EXPRESSION=36]=\"EXPRESSION\",e[e.FOR=37]=\"FOR\",e[e.IF=38]=\"IF\",e[e.IMPORT=39]=\"IMPORT\",e[e.RETURN=40]=\"RETURN\",e[e.SWITCH=41]=\"SWITCH\",e[e.THROW=42]=\"THROW\",e[e.TRY=43]=\"TRY\",e[e.VARIABLE=44]=\"VARIABLE\",e[e.VOID=45]=\"VOID\",e[e.WHILE=46]=\"WHILE\",e[e.CLASSDECLARATION=47]=\"CLASSDECLARATION\",e[e.ENUMDECLARATION=48]=\"ENUMDECLARATION\",e[e.ENUMVALUEDECLARATION=49]=\"ENUMVALUEDECLARATION\",e[e.FIELDDECLARATION=50]=\"FIELDDECLARATION\",e[e.FUNCTIONDECLARATION=51]=\"FUNCTIONDECLARATION\",e[e.IMPORTDECLARATION=52]=\"IMPORTDECLARATION\",e[e.INDEXSIGNATUREDECLARATION=53]=\"INDEXSIGNATUREDECLARATION\",e[e.INTERFACEDECLARATION=54]=\"INTERFACEDECLARATION\",e[e.METHODDECLARATION=55]=\"METHODDECLARATION\",e[e.NAMESPACEDECLARATION=56]=\"NAMESPACEDECLARATION\",e[e.TYPEDECLARATION=57]=\"TYPEDECLARATION\",e[e.VARIABLEDECLARATION=58]=\"VARIABLEDECLARATION\",e[e.DECORATOR=59]=\"DECORATOR\",e[e.EXPORTMEMBER=60]=\"EXPORTMEMBER\",e[e.SWITCHCASE=61]=\"SWITCHCASE\",e[e.COMMENT=62]=\"COMMENT\"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName(\"\",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text=\"\",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new Q;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(\".\")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]=\"DEFAULT\",e[e.OPTIONAL=1]=\"OPTIONAL\",e[e.REST=2]=\"REST\"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if(\"builtin\"==t)return E.BUILTIN;break;case 101:if(\"external\"==t)return E.EXTERNAL;break;case 103:if(\"global\"==t)return E.GLOBAL;break;case 105:if(\"inline\"==t)return E.INLINE;break;case 108:if(\"lazy\"==t)return E.LAZY;break;case 111:if(\"operator\"==t)return E.OPERATOR;break;case 115:if(\"sealed\"==t)return E.SEALED;break;case 117:if(\"unmanaged\"==t)return E.UNMANAGED;if(\"unsafe\"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),\"operator\"==t)switch(i.charCodeAt(0)){case 98:if(\"binary\"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case\"prefix\":return E.OPERATOR_PREFIX;case\"postfix\":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]=\"CUSTOM\",e[e.GLOBAL=1]=\"GLOBAL\",e[e.OPERATOR=2]=\"OPERATOR\",e[e.OPERATOR_BINARY=3]=\"OPERATOR_BINARY\",e[e.OPERATOR_PREFIX=4]=\"OPERATOR_PREFIX\",e[e.OPERATOR_POSTFIX=5]=\"OPERATOR_POSTFIX\",e[e.UNMANAGED=6]=\"UNMANAGED\",e[e.SEALED=7]=\"SEALED\",e[e.INLINE=8]=\"INLINE\",e[e.EXTERNAL=9]=\"EXTERNAL\",e[e.BUILTIN=10]=\"BUILTIN\",e[e.LAZY=11]=\"LAZY\",e[e.UNSAFE=12]=\"UNSAFE\"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]=\"LINE\",e[e.TRIPLE=1]=\"TRIPLE\",e[e.BLOCK=2]=\"BLOCK\"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]=\"FLOAT\",e[e.INTEGER=1]=\"INTEGER\",e[e.STRING=2]=\"STRING\",e[e.REGEXP=3]=\"REGEXP\",e[e.ARRAY=4]=\"ARRAY\",e[e.OBJECT=5]=\"OBJECT\"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]=\"PREFIX\",e[e.AS=1]=\"AS\",e[e.NONNULL=2]=\"NONNULL\"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,\"typeArgumentsRange\",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"argumentsRange\",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text=\"constructor\",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text=\"null\",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text=\"super\",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text=\"this\",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text=\"true\",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var Q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text=\"false\",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=Q;var j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=j;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(j);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(j);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]=\"USER\",e[e.USER_ENTRY=1]=\"USER_ENTRY\",e[e.LIBRARY=2]=\"LIBRARY\",e[e.LIBRARY_ENTRY=3]=\"LIBRARY_ENTRY\"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,\"isLibrary\",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]=\"NONE\",e[e.ARROW_PARENTHESIZED=1]=\"ARROW_PARENTHESIZED\",e[e.ARROW_SINGLE=2]=\"ARROW_SINGLE\"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(\".ts\")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i\";case s.LESSTHAN_EQUALS:return\"<=\";case s.GREATERTHAN_EQUALS:return\">=\";case s.EQUALS_EQUALS:return\"==\";case s.EXCLAMATION_EQUALS:return\"!=\";case s.EQUALS_EQUALS_EQUALS:return\"===\";case s.EXCLAMATION_EQUALS_EQUALS:return\"!==\";case s.PLUS:return\"+\";case s.MINUS:return\"-\";case s.ASTERISK_ASTERISK:return\"**\";case s.ASTERISK:return\"*\";case s.SLASH:return\"/\";case s.PERCENT:return\"%\";case s.PLUS_PLUS:return\"++\";case s.MINUS_MINUS:return\"--\";case s.LESSTHAN_LESSTHAN:return\"<<\";case s.GREATERTHAN_GREATERTHAN:return\">>\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return\">>>\";case s.AMPERSAND:return\"&\";case s.BAR:return\"|\";case s.CARET:return\"^\";case s.EXCLAMATION:return\"!\";case s.TILDE:return\"~\";case s.AMPERSAND_AMPERSAND:return\"&&\";case s.BAR_BAR:return\"||\";case s.EQUALS:return\"=\";case s.PLUS_EQUALS:return\"+=\";case s.MINUS_EQUALS:return\"-=\";case s.ASTERISK_EQUALS:return\"*=\";case s.ASTERISK_ASTERISK_EQUALS:return\"**=\";case s.SLASH_EQUALS:return\"/=\";case s.PERCENT_EQUALS:return\"%=\";case s.LESSTHAN_LESSTHAN_EQUALS:return\"<<=\";case s.GREATERTHAN_GREATERTHAN_EQUALS:return\">>=\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return\">>>=\";case s.AMPERSAND_EQUALS:return\"&=\";case s.BAR_EQUALS:return\"|=\";case s.CARET_EQUALS:return\"^=\";default:return assert(!1),\"\"}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error(\"source mismatch\");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,\"atStart\",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"atEnd\",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"line\",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"column\",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),\"\";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return\"\\0\";case 98:return\"\\b\";case 116:return\"\\t\";case 110:return\"\\n\";case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),\"\";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),\"\"):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?\"\":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Operation_not_supported=100]=\"Operation_not_supported\",e[e.Operation_is_unsafe=101]=\"Operation_is_unsafe\",e[e.User_defined_0=102]=\"User_defined_0\",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]=\"Conversion_from_type_0_to_1_requires_an_explicit_cast\",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]=\"Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit\",e[e.Type_0_cannot_be_changed_to_type_1=202]=\"Type_0_cannot_be_changed_to_type_1\",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]=\"Type_0_cannot_be_reinterpreted_as_type_1\",e[e.Basic_type_0_cannot_be_nullable=204]=\"Basic_type_0_cannot_be_nullable\",e[e.Cannot_export_a_mutable_global=205]=\"Cannot_export_a_mutable_global\",e[e.Mutable_value_cannot_be_inlined=206]=\"Mutable_value_cannot_be_inlined\",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]=\"Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa\",e[e.Unmanaged_classes_cannot_implement_interfaces=208]=\"Unmanaged_classes_cannot_implement_interfaces\",e[e.Invalid_regular_expression_flags=209]=\"Invalid_regular_expression_flags\",e[e.Implementation_0_must_match_the_signature_1=210]=\"Implementation_0_must_match_the_signature_1\",e[e.Class_0_is_sealed_and_cannot_be_extended=211]=\"Class_0_is_sealed_and_cannot_be_extended\",e[e.Decorator_0_is_not_valid_here=212]=\"Decorator_0_is_not_valid_here\",e[e.Duplicate_decorator=213]=\"Duplicate_decorator\",e[e.An_allocator_must_be_present_to_use_0=214]=\"An_allocator_must_be_present_to_use_0\",e[e.Optional_parameter_must_have_an_initializer=215]=\"Optional_parameter_must_have_an_initializer\",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]=\"Constructor_of_class_0_must_not_require_any_arguments\",e[e.Function_0_cannot_be_inlined_into_itself=217]=\"Function_0_cannot_be_inlined_into_itself\",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]=\"Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set\",e[e.Optional_properties_are_not_supported=219]=\"Optional_properties_are_not_supported\",e[e.Expression_must_be_a_compile_time_constant=220]=\"Expression_must_be_a_compile_time_constant\",e[e.Module_cannot_have_multiple_start_functions=221]=\"Module_cannot_have_multiple_start_functions\",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]=\"_0_must_be_a_value_between_1_and_2_inclusive\",e[e._0_must_be_a_power_of_two=223]=\"_0_must_be_a_power_of_two\",e[e.Expression_is_unsafe=224]=\"Expression_is_unsafe\",e[e.Expression_is_never_null=225]=\"Expression_is_never_null\",e[e.Unterminated_string_literal=1002]=\"Unterminated_string_literal\",e[e.Identifier_expected=1003]=\"Identifier_expected\",e[e._0_expected=1005]=\"_0_expected\",e[e.A_file_cannot_have_a_reference_to_itself=1006]=\"A_file_cannot_have_a_reference_to_itself\",e[e.Trailing_comma_not_allowed=1009]=\"Trailing_comma_not_allowed\",e[e.Unexpected_token=1012]=\"Unexpected_token\",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]=\"A_rest_parameter_must_be_last_in_a_parameter_list\",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]=\"Parameter_cannot_have_question_mark_and_initializer\",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]=\"A_required_parameter_cannot_follow_an_optional_parameter\",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]=\"Statements_are_not_allowed_in_ambient_contexts\",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]=\"Initializers_are_not_allowed_in_ambient_contexts\",e[e._0_modifier_cannot_be_used_here=1042]=\"_0_modifier_cannot_be_used_here\",e[e.A_rest_parameter_cannot_be_optional=1047]=\"A_rest_parameter_cannot_be_optional\",e[e.A_rest_parameter_cannot_have_an_initializer=1048]=\"A_rest_parameter_cannot_have_an_initializer\",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]=\"A_set_accessor_must_have_exactly_one_parameter\",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]=\"A_set_accessor_parameter_cannot_have_an_initializer\",e[e.A_get_accessor_cannot_have_parameters=1054]=\"A_get_accessor_cannot_have_parameters\",e[e.Enum_member_must_have_initializer=1061]=\"Enum_member_must_have_initializer\",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]=\"Type_parameters_cannot_appear_on_a_constructor_declaration\",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]=\"Type_annotation_cannot_appear_on_a_constructor_declaration\",e[e.An_accessor_cannot_have_type_parameters=1094]=\"An_accessor_cannot_have_type_parameters\",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]=\"A_set_accessor_cannot_have_a_return_type_annotation\",e[e.Type_parameter_list_cannot_be_empty=1098]=\"Type_parameter_list_cannot_be_empty\",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]=\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement\",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]=\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement\",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]=\"A_return_statement_can_only_be_used_within_a_function_body\",e[e.Expression_expected=1109]=\"Expression_expected\",e[e.Type_expected=1110]=\"Type_expected\",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]=\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement\",e[e.Duplicate_label_0=1114]=\"Duplicate_label_0\",e[e.An_export_assignment_cannot_have_modifiers=1120]=\"An_export_assignment_cannot_have_modifiers\",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]=\"Octal_literals_are_not_allowed_in_strict_mode\",e[e.Digit_expected=1124]=\"Digit_expected\",e[e.Hexadecimal_digit_expected=1125]=\"Hexadecimal_digit_expected\",e[e.Unexpected_end_of_text=1126]=\"Unexpected_end_of_text\",e[e.Invalid_character=1127]=\"Invalid_character\",e[e._case_or_default_expected=1130]=\"_case_or_default_expected\",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]=\"_super_must_be_followed_by_an_argument_list_or_member_access\",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]=\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context\",e[e.Type_argument_expected=1140]=\"Type_argument_expected\",e[e.String_literal_expected=1141]=\"String_literal_expected\",e[e.Line_break_not_permitted_here=1142]=\"Line_break_not_permitted_here\",e[e.Declaration_expected=1146]=\"Declaration_expected\",e[e._const_declarations_must_be_initialized=1155]=\"_const_declarations_must_be_initialized\",e[e.Unterminated_regular_expression_literal=1161]=\"Unterminated_regular_expression_literal\",e[e.Interface_declaration_cannot_have_implements_clause=1176]=\"Interface_declaration_cannot_have_implements_clause\",e[e.Binary_digit_expected=1177]=\"Binary_digit_expected\",e[e.Octal_digit_expected=1178]=\"Octal_digit_expected\",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]=\"An_implementation_cannot_be_declared_in_ambient_contexts\",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]=\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive\",e[e.Unterminated_Unicode_escape_sequence=1199]=\"Unterminated_Unicode_escape_sequence\",e[e.Decorators_are_not_valid_here=1206]=\"Decorators_are_not_valid_here\",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]=\"_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration\",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]=\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract\",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]=\"A_definite_assignment_assertion_is_not_permitted_in_this_context\",e[e.A_class_may_only_extend_another_class=1311]=\"A_class_may_only_extend_another_class\",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]=\"A_parameter_property_cannot_be_declared_using_a_rest_parameter\",e[e.Duplicate_identifier_0=2300]=\"Duplicate_identifier_0\",e[e.Cannot_find_name_0=2304]=\"Cannot_find_name_0\",e[e.Module_0_has_no_exported_member_1=2305]=\"Module_0_has_no_exported_member_1\",e[e.Generic_type_0_requires_1_type_argument_s=2314]=\"Generic_type_0_requires_1_type_argument_s\",e[e.Type_0_is_not_generic=2315]=\"Type_0_is_not_generic\",e[e.Type_0_is_not_assignable_to_type_1=2322]=\"Type_0_is_not_assignable_to_type_1\",e[e.Index_signature_is_missing_in_type_0=2329]=\"Index_signature_is_missing_in_type_0\",e[e._this_cannot_be_referenced_in_current_location=2332]=\"_this_cannot_be_referenced_in_current_location\",e[e._super_can_only_be_referenced_in_a_derived_class=2335]=\"_super_can_only_be_referenced_in_a_derived_class\",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]=\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors\",e[e.Property_0_does_not_exist_on_type_1=2339]=\"Property_0_does_not_exist_on_type_1\",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]=\"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures\",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]=\"Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature\",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]=\"A_function_whose_declared_type_is_not_void_must_return_a_value\",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]=\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access\",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]=\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access\",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]=\"Operator_0_cannot_be_applied_to_types_1_and_2\",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]=\"A_super_call_must_be_the_first_statement_in_the_constructor\",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]=\"Constructors_for_derived_classes_must_contain_a_super_call\",e[e._get_and_set_accessor_must_have_the_same_type=2380]=\"_get_and_set_accessor_must_have_the_same_type\",e[e.Constructor_implementation_is_missing=2390]=\"Constructor_implementation_is_missing\",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]=\"Function_implementation_is_missing_or_not_immediately_following_the_declaration\",e[e.Multiple_constructor_implementations_are_not_allowed=2392]=\"Multiple_constructor_implementations_are_not_allowed\",e[e.Duplicate_function_implementation=2393]=\"Duplicate_function_implementation\",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]=\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local\",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]=\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged\",e[e.Type_0_has_no_property_1=2460]=\"Type_0_has_no_property_1\",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]=\"The_0_operator_cannot_be_applied_to_type_1\",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]=\"In_const_enum_declarations_member_initializer_must_be_constant_expression\",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]=\"Export_declaration_conflicts_with_exported_declaration_of_0\",e[e.Object_is_possibly_null=2531]=\"Object_is_possibly_null\",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]=\"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property\",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]=\"The_target_of_an_assignment_must_be_a_variable_or_a_property_access\",e[e.Index_signature_in_type_0_only_permits_reading=2542]=\"Index_signature_in_type_0_only_permits_reading\",e[e.Expected_0_arguments_but_got_1=2554]=\"Expected_0_arguments_but_got_1\",e[e.Expected_at_least_0_arguments_but_got_1=2555]=\"Expected_at_least_0_arguments_but_got_1\",e[e.Expected_0_type_arguments_but_got_1=2558]=\"Expected_0_type_arguments_but_got_1\",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]=\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums\",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]=\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration\",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]=\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration\",e[e.Namespace_0_has_no_exported_member_1=2694]=\"Namespace_0_has_no_exported_member_1\",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]=\"Required_type_parameters_may_not_follow_optional_type_parameters\",e[e.Duplicate_property_0=2718]=\"Duplicate_property_0\",e[e.Type_0_has_no_call_signatures=2757]=\"Type_0_has_no_call_signatures\",e[e.File_0_not_found=6054]=\"File_0_not_found\",e[e.Numeric_separators_are_not_allowed_here=6188]=\"Numeric_separators_are_not_allowed_here\",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]=\"Multiple_consecutive_numeric_separators_are_not_permitted\",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]=\"_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class\",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]=\"_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class\"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return\"Operation not supported.\";case 101:return\"Operation is unsafe.\";case 102:return\"User-defined: {0}\";case 200:return\"Conversion from type '{0}' to '{1}' requires an explicit cast.\";case 201:return\"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";case 202:return\"Type '{0}' cannot be changed to type '{1}'.\";case 203:return\"Type '{0}' cannot be reinterpreted as type '{1}'.\";case 204:return\"Basic type '{0}' cannot be nullable.\";case 205:return\"Cannot export a mutable global.\";case 206:return\"Mutable value cannot be inlined.\";case 207:return\"Unmanaged classes cannot extend managed classes and vice-versa.\";case 208:return\"Unmanaged classes cannot implement interfaces.\";case 209:return\"Invalid regular expression flags.\";case 210:return\"Implementation '{0}' must match the signature '{1}'.\";case 211:return\"Class '{0}' is sealed and cannot be extended.\";case 212:return\"Decorator '{0}' is not valid here.\";case 213:return\"Duplicate decorator.\";case 214:return\"An allocator must be present to use '{0}'.\";case 215:return\"Optional parameter must have an initializer.\";case 216:return\"Constructor of class '{0}' must not require any arguments.\";case 217:return\"Function '{0}' cannot be inlined into itself.\";case 218:return\"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";case 219:return\"Optional properties are not supported.\";case 220:return\"Expression must be a compile-time constant.\";case 221:return\"Module cannot have multiple start functions.\";case 222:return\"'{0}' must be a value between '{1}' and '{2}' inclusive.\";case 223:return\"'{0}' must be a power of two.\";case 224:return\"Expression is unsafe.\";case 225:return\"Expression is never 'null'.\";case 1002:return\"Unterminated string literal.\";case 1003:return\"Identifier expected.\";case 1005:return\"'{0}' expected.\";case 1006:return\"A file cannot have a reference to itself.\";case 1009:return\"Trailing comma not allowed.\";case 1012:return\"Unexpected token.\";case 1014:return\"A rest parameter must be last in a parameter list.\";case 1015:return\"Parameter cannot have question mark and initializer.\";case 1016:return\"A required parameter cannot follow an optional parameter.\";case 1036:return\"Statements are not allowed in ambient contexts.\";case 1039:return\"Initializers are not allowed in ambient contexts.\";case 1042:return\"'{0}' modifier cannot be used here.\";case 1047:return\"A rest parameter cannot be optional.\";case 1048:return\"A rest parameter cannot have an initializer.\";case 1049:return\"A 'set' accessor must have exactly one parameter.\";case 1052:return\"A 'set' accessor parameter cannot have an initializer.\";case 1054:return\"A 'get' accessor cannot have parameters.\";case 1061:return\"Enum member must have initializer.\";case 1092:return\"Type parameters cannot appear on a constructor declaration.\";case 1093:return\"Type annotation cannot appear on a constructor declaration.\";case 1094:return\"An accessor cannot have type parameters.\";case 1095:return\"A 'set' accessor cannot have a return type annotation.\";case 1098:return\"Type parameter list cannot be empty.\";case 1104:return\"A 'continue' statement can only be used within an enclosing iteration statement.\";case 1105:return\"A 'break' statement can only be used within an enclosing iteration or switch statement.\";case 1108:return\"A 'return' statement can only be used within a function body.\";case 1109:return\"Expression expected.\";case 1110:return\"Type expected.\";case 1113:return\"A 'default' clause cannot appear more than once in a 'switch' statement.\";case 1114:return\"Duplicate label '{0}'.\";case 1120:return\"An export assignment cannot have modifiers.\";case 1121:return\"Octal literals are not allowed in strict mode.\";case 1124:return\"Digit expected.\";case 1125:return\"Hexadecimal digit expected.\";case 1126:return\"Unexpected end of text.\";case 1127:return\"Invalid character.\";case 1130:return\"'case' or 'default' expected.\";case 1034:return\"'super' must be followed by an argument list or member access.\";case 1038:return\"A 'declare' modifier cannot be used in an already ambient context.\";case 1140:return\"Type argument expected.\";case 1141:return\"String literal expected.\";case 1142:return\"Line break not permitted here.\";case 1146:return\"Declaration expected.\";case 1155:return\"'const' declarations must be initialized.\";case 1161:return\"Unterminated regular expression literal.\";case 1176:return\"Interface declaration cannot have 'implements' clause.\";case 1177:return\"Binary digit expected.\";case 1178:return\"Octal digit expected.\";case 1183:return\"An implementation cannot be declared in ambient contexts.\";case 1198:return\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";case 1199:return\"Unterminated Unicode escape sequence.\";case 1206:return\"Decorators are not valid here.\";case 1242:return\"'abstract' modifier can only appear on a class, method, or property declaration.\";case 1245:return\"Method '{0}' cannot have an implementation because it is marked abstract.\";case 1255:return\"A definite assignment assertion '!' is not permitted in this context.\";case 1311:return\"A class may only extend another class.\";case 1317:return\"A parameter property cannot be declared using a rest parameter.\";case 2300:return\"Duplicate identifier '{0}'.\";case 2304:return\"Cannot find name '{0}'.\";case 2305:return\"Module '{0}' has no exported member '{1}'.\";case 2314:return\"Generic type '{0}' requires {1} type argument(s).\";case 2315:return\"Type '{0}' is not generic.\";case 2322:return\"Type '{0}' is not assignable to type '{1}'.\";case 2329:return\"Index signature is missing in type '{0}'.\";case 2332:return\"'this' cannot be referenced in current location.\";case 2335:return\"'super' can only be referenced in a derived class.\";case 2337:return\"Super calls are not permitted outside constructors or in nested functions inside constructors.\";case 2339:return\"Property '{0}' does not exist on type '{1}'.\";case 2349:return\"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";case 2351:return\"Cannot use 'new' with an expression whose type lacks a construct signature.\";case 2355:return\"A function whose declared type is not 'void' must return a value.\";case 2357:return\"The operand of an increment or decrement operator must be a variable or a property access.\";case 2364:return\"The left-hand side of an assignment expression must be a variable or a property access.\";case 2365:return\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";case 2376:return\"A 'super' call must be the first statement in the constructor.\";case 2377:return\"Constructors for derived classes must contain a 'super' call.\";case 2380:return\"'get' and 'set' accessor must have the same type.\";case 2390:return\"Constructor implementation is missing.\";case 2391:return\"Function implementation is missing or not immediately following the declaration.\";case 2392:return\"Multiple constructor implementations are not allowed.\";case 2393:return\"Duplicate function implementation.\";case 2395:return\"Individual declarations in merged declaration '{0}' must be all exported or all local.\";case 2434:return\"A namespace declaration cannot be located prior to a class or function with which it is merged.\";case 2460:return\"Type '{0}' has no property '{1}'.\";case 2469:return\"The '{0}' operator cannot be applied to type '{1}'.\";case 2474:return\"In 'const' enum declarations member initializer must be constant expression.\";case 2484:return\"Export declaration conflicts with exported declaration of '{0}'.\";case 2531:return\"Object is possibly 'null'.\";case 2540:return\"Cannot assign to '{0}' because it is a constant or a read-only property.\";case 2541:return\"The target of an assignment must be a variable or a property access.\";case 2542:return\"Index signature in type '{0}' only permits reading.\";case 2554:return\"Expected {0} arguments, but got {1}.\";case 2555:return\"Expected at least {0} arguments, but got {1}.\";case 2558:return\"Expected {0} type arguments, but got {1}.\";case 2651:return\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";case 2673:return\"Constructor of class '{0}' is private and only accessible within the class declaration.\";case 2674:return\"Constructor of class '{0}' is protected and only accessible within the class declaration.\";case 2694:return\"Namespace '{0}' has no exported member '{1}'.\";case 2706:return\"Required type parameters may not follow optional type parameters.\";case 2718:return\"Duplicate property '{0}'.\";case 2757:return\"Type '{0}' has no call signatures.\";case 6054:return\"File '{0}' not found.\";case 6188:return\"Numeric separators are not allowed here.\";case 6189:return\"Multiple consecutive numeric separators are not permitted.\";case 17009:return\"'super' must be called before accessing 'this' in the constructor of a derived class.\";case 17011:return\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";default:return\"\"}}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes(\"@nearfile\")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:\"Integer\",u32:\"Integer\",i64:\"String\",u64:\"String\",string:\"String\",bool:\"Boolean\",Uint8Array:\"String\"},t.nonNullableTypes=[\"i32\",\"u32\",\"i64\",\"u64\",\"bool\",\"boolean\"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return\"void\"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split(\"|\").filter(function(e){return\"null\"!==e.trim()}).join(\"|\"),s=p(n).includes(\"null\"),a=e.name.symbol;this.sb.push(\"\\n//@ts-ignore\\nfunction __wrapper_\"+a+\"(): void {\"),i.length>0&&this.sb.push(\" // Reading input bytes.\\n input(0);\\n let json_len = register_len(0);\\n if (json_len == U32.MAX_VALUE) {\\n panic();\\n }\\n let json = new Uint8Array(json_len as u32);\\n read_register(0, json.buffer);\\n const obj: Obj = JSON.parse(json);\"),\"void\"!==p(n)?this.sb.push(\" let result: \"+p(n)+\" = \"+a+\"(\"):this.sb.push(\" \"+a+\"(\"),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(\", \")),this.sb[this.sb.length-1]+=\");\",\"void\"!==p(n)&&this.sb.push(\"\\n let encoder = new JSONEncoder();\\n if ((isString<\"+r+\">() || isNullable<\"+r+\">()) && result == null) {\\n encoder.setNull(null);\\n } else {\\n encode<\"+r+\">(encoder, result\"+(s?\"!\":\"\")+\", null);\\n }\\n let val: Uint8Array = encoder.serialize();\\n value_return(val.byteLength, val.buffer);\"),this.sb.push(\"}\\n\\nexport { __wrapper_\"+a+\" as \"+a+\" }\\n\")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+=\"<\"+e.typeParameters.map(p).join(\", \")+\">\"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf(\"}\")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error(\"All Fields must have explict type declaration.\");var r=t.typeName(n);i+=\"\\n static decode(json: Uint8Array): \"+r+\" {\\n let value = instantiate<\"+r+\">(); // Allocate without constructor\\n value.decode(JSON.parse(json));\\n return value;\\n }\\n\\n decode(obj: Obj): \"+r+\" {\\n \"+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,\"this.\"+t+' = obj.has(\"'+t+'\") ? ')+\": this.\"+t+\";\"})}(n).join(\"\\n \")+'\\n return this;\\n }\\n\\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\\n encoder.pushObject(name);\\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return\"encode<\"+t+\">(encoder, this.\"+i+', \"'+i+'\");'})}(n).join(\"\\n \")+\"\\n encoder.popObject();\\n return encoder\\n }\\n\\n serialize(): Uint8Array {\\n return this.encode().serialize();\\n }\\n\\n toJSON(): string {\\n return this.encode().toString();\\n }\\n}\"}return i});return this.sb.concat(i).join(\"\\n\")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=\"\"),t+\"decode<\"+p(e.type)+'>(obj, \"'+p(e.name)+'\")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf(\"\\n\")).includes(\"out\");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t(\"out/\"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?\"\":\"./\")+n.normalizedPath,h(n))})}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NONE=0]=\"NONE\",e[e.SIGN_EXTENSION=1]=\"SIGN_EXTENSION\",e[e.MUTABLE_GLOBAL=2]=\"MUTABLE_GLOBAL\",e[e.BULK_MEMORY=4]=\"BULK_MEMORY\",e[e.SIMD=8]=\"SIMD\",e[e.THREADS=16]=\"THREADS\"}(t.Feature||(t.Feature={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.WASM32=0]=\"WASM32\",e[e.WASM64=1]=\"WASM64\",e[e.JS=2]=\"JS\"}(t.Target||(t.Target={}))},function(e,t,i){\"use strict\";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]=\"NONE\",e[e.ARRAYBUFFERVIEW=1]=\"ARRAYBUFFERVIEW\",e[e.ARRAY=2]=\"ARRAY\",e[e.SET=4]=\"SET\",e[e.MAP=8]=\"MAP\",e[e.ACYCLIC=16]=\"ACYCLIC\",e[e.VALUE_ALIGN_0=32]=\"VALUE_ALIGN_0\",e[e.VALUE_ALIGN_1=64]=\"VALUE_ALIGN_1\",e[e.VALUE_ALIGN_2=128]=\"VALUE_ALIGN_2\",e[e.VALUE_ALIGN_3=256]=\"VALUE_ALIGN_3\",e[e.VALUE_ALIGN_4=512]=\"VALUE_ALIGN_4\",e[e.VALUE_SIGNED=1024]=\"VALUE_SIGNED\",e[e.VALUE_FLOAT=2048]=\"VALUE_FLOAT\",e[e.VALUE_NULLABLE=4096]=\"VALUE_NULLABLE\",e[e.VALUE_MANAGED=8192]=\"VALUE_MANAGED\",e[e.KEY_ALIGN_0=16384]=\"KEY_ALIGN_0\",e[e.KEY_ALIGN_1=32768]=\"KEY_ALIGN_1\",e[e.KEY_ALIGN_2=65536]=\"KEY_ALIGN_2\",e[e.KEY_ALIGN_3=131072]=\"KEY_ALIGN_3\",e[e.KEY_ALIGN_4=262144]=\"KEY_ALIGN_4\",e[e.KEY_SIGNED=524288]=\"KEY_SIGNED\",e[e.KEY_FLOAT=1048576]=\"KEY_FLOAT\",e[e.KEY_NULLABLE=2097152]=\"KEY_NULLABLE\",e[e.KEY_MANAGED=4194304]=\"KEY_MANAGED\"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return\"INFO\";case n.WARNING:return\"WARNING\";case n.ERROR:return\"ERROR\";default:return assert(!1),\"\"}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),\"\"}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]=\"INFO\",e[e.WARNING=1]=\"WARNING\",e[e.ERROR=2]=\"ERROR\"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE=\"\u001b[96m\",t.COLOR_YELLOW=\"\u001b[93m\",t.COLOR_RED=\"\u001b[91m\",t.COLOR_RESET=\"\u001b[0m\",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace(\"{0}\",n)),null!=s&&(o=o.replace(\"{1}\",s)),null!=a&&(o=o.replace(\"{2}\",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+\" \"+this.code.toString(10)+': \"'+this.message+'\" in '+this.range.source.normalizedPath+\":\"+this.range.line.toString(10)+\":\"+this.range.column.toString(10):o(this.category)+\" \"+this.code.toString(10)+\": \"+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NULL=0]=\"NULL\",e[e.LINEFEED=10]=\"LINEFEED\",e[e.CARRIAGERETURN=13]=\"CARRIAGERETURN\",e[e.LINESEPARATOR=8232]=\"LINESEPARATOR\",e[e.PARAGRAPHSEPARATOR=8233]=\"PARAGRAPHSEPARATOR\",e[e.NEXTLINE=133]=\"NEXTLINE\",e[e.SPACE=32]=\"SPACE\",e[e.NONBREAKINGSPACE=160]=\"NONBREAKINGSPACE\",e[e.ENQUAD=8192]=\"ENQUAD\",e[e.EMQUAD=8193]=\"EMQUAD\",e[e.ENSPACE=8194]=\"ENSPACE\",e[e.EMSPACE=8195]=\"EMSPACE\",e[e.THREEPEREMSPACE=8196]=\"THREEPEREMSPACE\",e[e.FOURPEREMSPACE=8197]=\"FOURPEREMSPACE\",e[e.SIXPEREMSPACE=8198]=\"SIXPEREMSPACE\",e[e.FIGURESPACE=8199]=\"FIGURESPACE\",e[e.PUNCTUATIONSPACE=8200]=\"PUNCTUATIONSPACE\",e[e.THINSPACE=8201]=\"THINSPACE\",e[e.HAIRSPACE=8202]=\"HAIRSPACE\",e[e.ZEROWIDTHSPACE=8203]=\"ZEROWIDTHSPACE\",e[e.NARROWNOBREAKSPACE=8239]=\"NARROWNOBREAKSPACE\",e[e.IDEOGRAPHICSPACE=12288]=\"IDEOGRAPHICSPACE\",e[e.MATHEMATICALSPACE=8287]=\"MATHEMATICALSPACE\",e[e.OGHAM=5760]=\"OGHAM\",e[e._=95]=\"_\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.AMPERSAND=38]=\"AMPERSAND\",e[e.ASTERISK=42]=\"ASTERISK\",e[e.AT=64]=\"AT\",e[e.BACKSLASH=92]=\"BACKSLASH\",e[e.BACKTICK=96]=\"BACKTICK\",e[e.BAR=124]=\"BAR\",e[e.CARET=94]=\"CARET\",e[e.CLOSEBRACE=125]=\"CLOSEBRACE\",e[e.CLOSEBRACKET=93]=\"CLOSEBRACKET\",e[e.CLOSEPAREN=41]=\"CLOSEPAREN\",e[e.COLON=58]=\"COLON\",e[e.COMMA=44]=\"COMMA\",e[e.DOLLAR=36]=\"DOLLAR\",e[e.DOT=46]=\"DOT\",e[e.DOUBLEQUOTE=34]=\"DOUBLEQUOTE\",e[e.EQUALS=61]=\"EQUALS\",e[e.EXCLAMATION=33]=\"EXCLAMATION\",e[e.GREATERTHAN=62]=\"GREATERTHAN\",e[e.HASH=35]=\"HASH\",e[e.LESSTHAN=60]=\"LESSTHAN\",e[e.MINUS=45]=\"MINUS\",e[e.OPENBRACE=123]=\"OPENBRACE\",e[e.OPENBRACKET=91]=\"OPENBRACKET\",e[e.OPENPAREN=40]=\"OPENPAREN\",e[e.PERCENT=37]=\"PERCENT\",e[e.PLUS=43]=\"PLUS\",e[e.QUESTION=63]=\"QUESTION\",e[e.SEMICOLON=59]=\"SEMICOLON\",e[e.SINGLEQUOTE=39]=\"SINGLEQUOTE\",e[e.SLASH=47]=\"SLASH\",e[e.TILDE=126]=\"TILDE\",e[e.BACKSPACE=8]=\"BACKSPACE\",e[e.FORMFEED=12]=\"FORMFEED\",e[e.BYTEORDERMARK=65279]=\"BYTEORDERMARK\",e[e.TAB=9]=\"TAB\",e[e.VERTICALTAB=11]=\"VERTICALTAB\"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:\".\"}function a(e){var t=e.length;if(t<=1){if(0==t)return\".\";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return\".\"}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith(\"std/\")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=\" \",r=\" \",s=\" \";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){\"use strict\";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i\")}e.isNullable&&n.push(\" | null\")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?\"((\":\"(\");var n=e.explicitThisType;n&&(i.push(\"this: \"),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(\", \"),this.serializeParameter(r[0]);for(var a=1;a \"),this.visitTypeNode(o)):i.push(\") => void\"),t&&i.push(\") | null\")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(\" extends \"),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push(\"=\"),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push(\"[\");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r\"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(\" as \"),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push(\"!\");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(\" \"),t.push(a.operatorTokenToString(e.operator)),t.push(\" \"),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push(\"<\"),this.visitTypeNode(i[0]);for(var r=1;r(\")}}else t.push(\"(\");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push(\"\\\\0\"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\b\");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\t\");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\n\");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\v\");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\f\");break;case 13:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\r\"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\\\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push(\"\\\\'\"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\\\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push(\"/\"),t.push(e.pattern),t.push(\"/\"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push(\"new \"),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push(\"(\"),this.visitNode(e.expression),t.push(\")\")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push(\".\"),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(\" ? \"),this.visitNode(e.ifThen),t.push(\" : \"),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push(\"\\n\"):t.push(\";\\n\")}else t.push(\";\\n\")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push(\"{\\n\");for(var r=++this.indentLevel,a=0;a\")}var _=e.extendsType;_&&(u.push(\" extends \"),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(\" implements \"),this.visitTypeNode(p[0]);for(a=1;a\")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push(\"(\");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push(\"this: \"),this.visitTypeNode(_)),c){_&&t.push(\", \"),this.serializeParameter(u[0]);for(o=1;o \"),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(\" => \"),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(\")\"):(t.push(\"): \"),this.visitTypeNode(h)),p&&(t.push(\" \"),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push(\"if (\"),this.visitNode(e.condition),t.push(\") \");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(\";\\n\");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(\" else \"):t.push(\"else \"),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(\" as \"),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push(\"import \");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push(\"{\\n\");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o\")}var u=e.extendsType;u&&(a.push(\" extends \"),this.visitTypeNode(u)),a.push(\" {\\n\");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n\")}}r.push(\" = \"),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push(\"!\"),t&&(i.push(\": \"),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(\" = \"),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name=\"UnreachableError\",r.prototype.message=\"unreachable\",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name=\"AssertionError\",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,\"replaceAll\",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return\"number\"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return\"object\"==typeof e||\"string\"==typeof e},t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"string\"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,\"__isLong__\",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error(\"empty string\");if(\"NaN\"===e||\"Infinity\"===e||\"+Infinity\"===e||\"-Infinity\"===e)return A;if(\"number\"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error(\"interior hyphen\");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c=\"0\"+c;a=\"\"+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error(\"division by zero\");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&\"function\"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.preamble='import { base64 } from \"near-runtime-ts\";\\nimport { JSONEncoder } from \"assemblyscript-json\";\\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\\n'}])});","if(typeof __WEBPACK_EXTERNAL_MODULE__11__ === 'undefined') {var e = new Error(\"Cannot find module 'assemblyscript'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__11__;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 13;","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/assemblyscript.d.ts b/dist/assemblyscript.d.ts index 46f4a10322..29117ecb84 100644 --- a/dist/assemblyscript.d.ts +++ b/dist/assemblyscript.d.ts @@ -4851,7 +4851,7 @@ declare module 'assemblyscript/src/index' { export * from 'assemblyscript/src/resolver'; export * from 'assemblyscript/src/tokenizer'; export * from 'assemblyscript/src/types'; - export * from 'assemblyscript/src/util'; + export * from 'assemblyscript/src/util/index'; } declare module 'assemblyscript/src/extra/ast' { @@ -5648,3 +5648,95 @@ declare function i64_is_f64(value: I64): bool; declare function i64_to_f32(value: I64): f64; declare function i64_to_f64(value: I64): f64; declare function i64_to_string(value: I64, unsigned?: bool): string; + +declare module 'assemblyscript/std/assembly/shared/feature' { + /** Indicates specific features to activate. */ + export const enum Feature { + /** No additional features. */ + NONE = 0, + /** Sign extension operations. */ + SIGN_EXTENSION = 1, + /** Mutable global imports and exports. */ + MUTABLE_GLOBAL = 2, + /** Bulk memory operations. */ + BULK_MEMORY = 4, + /** SIMD types and operations. */ + SIMD = 8, + /** Threading and atomic operations. */ + THREADS = 16 + } + +} +declare module 'assemblyscript/std/assembly/shared/target' { + /** Compilation target. */ + export enum Target { + /** WebAssembly with 32-bit pointers. */ + WASM32 = 0, + /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */ + WASM64 = 1, + /** Portable. */ + JS = 2 + } + +} +declare module 'assemblyscript/std/assembly/shared/typeinfo' { + /** Runtime type information data structure. */ + export class Typeinfo { + /** Flags describing the shape of this class type. */ + flags: TypeinfoFlags; + /** Base class id or `0` if none. */ + base: u32; + } + /** Runtime type information flags. */ + export const enum TypeinfoFlags { + /** No specific flags. */ + NONE = 0, + /** Type is an `ArrayBufferView`. */ + ARRAYBUFFERVIEW = 1, + /** Type is an `Array`. */ + ARRAY = 2, + /** Type is a `Set`. */ + SET = 4, + /** Type is a `Map`. */ + MAP = 8, + /** Type is inherently acyclic. */ + ACYCLIC = 16, + /** Value alignment of 1 byte. */ + VALUE_ALIGN_0 = 32, + /** Value alignment of 2 bytes. */ + VALUE_ALIGN_1 = 64, + /** Value alignment of 4 bytes. */ + VALUE_ALIGN_2 = 128, + /** Value alignment of 8 bytes. */ + VALUE_ALIGN_3 = 256, + /** Value alignment of 16 bytes. */ + VALUE_ALIGN_4 = 512, + /** Value is a signed type. */ + VALUE_SIGNED = 1024, + /** Value is a float type. */ + VALUE_FLOAT = 2048, + /** Value type is nullable. */ + VALUE_NULLABLE = 4096, + /** Value type is managed. */ + VALUE_MANAGED = 8192, + /** Key alignment of 1 byte. */ + KEY_ALIGN_0 = 16384, + /** Key alignment of 2 bytes. */ + KEY_ALIGN_1 = 32768, + /** Key alignment of 4 bytes. */ + KEY_ALIGN_2 = 65536, + /** Key alignment of 8 bytes. */ + KEY_ALIGN_3 = 131072, + /** Key alignment of 16 bytes. */ + KEY_ALIGN_4 = 262144, + /** Key is a signed type. */ + KEY_SIGNED = 524288, + /** Key is a float type. */ + KEY_FLOAT = 1048576, + /** Key type is nullable. */ + KEY_NULLABLE = 2097152, + /** Key type is managed. */ + KEY_MANAGED = 4194304 + } + +} diff --git a/dist/assemblyscript.js b/dist/assemblyscript.js index fd892eb678..902acbcaa7 100644 --- a/dist/assemblyscript.js +++ b/dist/assemblyscript.js @@ -1,2 +1,2 @@ -!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("binaryen")):"function"==typeof define&&define.amd?define(["binaryen"],r):"object"==typeof exports?exports.assemblyscript=r(require("binaryen")):e.assemblyscript=r(e.binaryen)}("undefined"!=typeof self?self:this,function(e){return function(e){var r={};function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var i in e)t.d(n,i,function(r){return e[r]}.bind(null,i));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=17)}([function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.IMPORT=1]="IMPORT",e[e.EXPORT=2]="EXPORT",e[e.DECLARE=4]="DECLARE",e[e.CONST=8]="CONST",e[e.LET=16]="LET",e[e.STATIC=32]="STATIC",e[e.READONLY=64]="READONLY",e[e.ABSTRACT=128]="ABSTRACT",e[e.PUBLIC=256]="PUBLIC",e[e.PRIVATE=512]="PRIVATE",e[e.PROTECTED=1024]="PROTECTED",e[e.GET=2048]="GET",e[e.SET=4096]="SET",e[e.DEFINITE_ASSIGNMENT=8192]="DEFINITE_ASSIGNMENT",e[e.AMBIENT=16384]="AMBIENT",e[e.GENERIC=32768]="GENERIC",e[e.GENERIC_CONTEXT=65536]="GENERIC_CONTEXT",e[e.INSTANCE=131072]="INSTANCE",e[e.CONSTRUCTOR=262144]="CONSTRUCTOR",e[e.MODULE_EXPORT=524288]="MODULE_EXPORT",e[e.MODULE_IMPORT=1048576]="MODULE_IMPORT",e[e.RESOLVED=2097152]="RESOLVED",e[e.COMPILED=4194304]="COMPILED",e[e.INLINED=8388608]="INLINED",e[e.SCOPED=16777216]="SCOPED",e[e.TRAMPOLINE=33554432]="TRAMPOLINE",e[e.VIRTUAL=67108864]="VIRTUAL",e[e.MAIN=134217728]="MAIN",e[e.QUOTED=268435456]="QUOTED"}(r.CommonFlags||(r.CommonFlags={})),r.PATH_DELIMITER="/",r.PARENT_SUBST="..",r.GETTER_PREFIX="get:",r.SETTER_PREFIX="set:",r.INSTANCE_DELIMITER="#",r.STATIC_DELIMITER=".",r.INNER_DELIMITER="~",r.LIBRARY_SUBST="~lib",r.LIBRARY_PREFIX=r.LIBRARY_SUBST+r.PATH_DELIMITER,r.INDEX_SUFFIX=r.PATH_DELIMITER+"index",function(e){e.EMPTY="",e.i8="i8",e.i16="i16",e.i32="i32",e.i64="i64",e.isize="isize",e.u8="u8",e.u16="u16",e.u32="u32",e.u64="u64",e.usize="usize",e.bool="bool",e.f32="f32",e.f64="f64",e.v128="v128",e.i8x16="i8x16",e.u8x16="u8x16",e.i16x8="i16x8",e.u16x8="u16x8",e.i32x4="i32x4",e.u32x4="u32x4",e.i64x2="i64x2",e.u64x2="u64x2",e.f32x4="f32x4",e.f64x2="f64x2",e.void_="void",e.number="number",e.boolean="boolean",e.string="string",e.native="native",e.indexof="indexof",e.valueof="valueof",e.returnof="returnof",e.null_="null",e.true_="true",e.false_="false",e.this_="this",e.super_="super",e.constructor="constructor",e.ASC_TARGET="ASC_TARGET",e.ASC_NO_TREESHAKING="ASC_NO_TREESHAKING",e.ASC_NO_ASSERT="ASC_NO_ASSERT",e.ASC_MEMORY_BASE="ASC_MEMORY_BASE",e.ASC_OPTIMIZE_LEVEL="ASC_OPTIMIZE_LEVEL",e.ASC_SHRINK_LEVEL="ASC_SHRINK_LEVEL",e.ASC_FEATURE_MUTABLE_GLOBAL="ASC_FEATURE_MUTABLE_GLOBAL",e.ASC_FEATURE_SIGN_EXTENSION="ASC_FEATURE_SIGN_EXTENSION",e.ASC_FEATURE_BULK_MEMORY="ASC_FEATURE_BULK_MEMORY",e.ASC_FEATURE_SIMD="ASC_FEATURE_SIMD",e.ASC_FEATURE_THREADS="ASC_FEATURE_THREADS",e.I8="I8",e.I16="I16",e.I32="I32",e.I64="I64",e.Isize="Isize",e.U8="U8",e.U16="U16",e.U32="U32",e.U64="U64",e.Usize="Usize",e.Bool="Bool",e.F32="F32",e.F64="F64",e.V128="V128",e.String="String",e.Array="Array",e.FixedArray="FixedArray",e.Set="Set",e.Map="Map",e.ArrayBufferView="ArrayBufferView",e.ArrayBuffer="ArrayBuffer",e.Math="Math",e.Mathf="Mathf",e.Int8Array="Int8Array",e.Int16Array="Int16Array",e.Int32Array="Int32Array",e.Int64Array="Int64Array",e.Uint8Array="Uint8Array",e.Uint8ClampedArray="Uint8ClampedArray",e.Uint16Array="Uint16Array",e.Uint32Array="Uint32Array",e.Uint64Array="Uint64Array",e.Float32Array="Float32Array",e.Float64Array="Float64Array",e.abort="abort",e.pow="pow",e.mod="mod",e.alloc="__alloc",e.realloc="__realloc",e.free="__free",e.retain="__retain",e.release="__release",e.collect="__collect",e.typeinfo="__typeinfo",e.instanceof_="__instanceof",e.visit="__visit",e.allocArray="__allocArray"}(r.CommonSymbols||(r.CommonSymbols={}));var n=t(25);r.Feature=n.Feature;var i=t(26);r.Target=i.Target;var a=t(27);r.Typeinfo=a.Typeinfo,r.TypeinfoFlags=a.TypeinfoFlags},function(e,r,t){"use strict";function n(e){for(var t in e)r.hasOwnProperty(t)||(r[t]=e[t])}Object.defineProperty(r,"__esModule",{value:!0}),n(t(29)),n(t(30)),n(t(31)),n(t(32)),n(t(33)),n(t(34)),r.isPowerOf2=function(e){return 0!=e&&0==(e&e-1)}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,i=t(12),a=t(1),s=t(12);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function c(e){switch(e){case n.INFO:return r.COLOR_BLUE;case n.WARNING:return r.COLOR_YELLOW;case n.ERROR:return r.COLOR_RED;default:return assert(!1),""}}r.DiagnosticCode=s.DiagnosticCode,r.diagnosticCodeToString=s.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=r.DiagnosticCategory||(r.DiagnosticCategory={})),r.diagnosticCategoryToString=o,r.COLOR_BLUE="",r.COLOR_YELLOW="",r.COLOR_RED="",r.COLOR_RESET="",r.diagnosticCategoryToColor=c;var l=function(){function e(e,r,t){this.range=null,this.relatedRange=null,this.code=e,this.category=r,this.message=t}return e.create=function(r,t,n,a,s){void 0===n&&(n=null),void 0===a&&(a=null),void 0===s&&(s=null);var o=i.diagnosticCodeToString(r);return null!=n&&(o=o.replace("{0}",n)),null!=a&&(o=o.replace("{1}",a)),null!=s&&(o=o.replace("{2}",s)),new e(r,t,o)},e.createInfo=function(r,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(r,n.INFO,t,i)},e.createWarning=function(r,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(r,n.WARNING,t,i)},e.createError=function(r,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(r,n.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function u(e,t){void 0===t&&(t=!1);for(var n=e.source.text,i=n.length,s=e.start,o=e.end;s>0&&!a.isLineBreak(n.charCodeAt(s-1));)s--;for(;o=0?c.substring(l+1):c,i.statements=new Array,i.range=new s.Range(i,0,t.length),i.text=t,i}return i(r,e),Object.defineProperty(r.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),r}(l);r.Source=$;var ee=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.decorators=null,r.flags=a.CommonFlags.NONE,r}return i(r,e),r.prototype.is=function(e){return(this.flags&e)==e},r.prototype.isAny=function(e){return 0!=(this.flags&e)},r.prototype.set=function(e){this.flags|=e},r}(J);r.DeclarationStatement=ee;var re=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.INDEXSIGNATUREDECLARATION,r}return i(r,e),r}(ee);r.IndexSignatureDeclaration=re;var te=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return i(r,e),r}(ee);r.VariableLikeDeclarationStatement=te;var ne=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.BLOCK,r}return i(r,e),r}(J);r.BlockStatement=ne;var ie=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.BREAK,r}return i(r,e),r}(J);r.BreakStatement=ie;var ae=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.CLASSDECLARATION,r}return i(r,e),Object.defineProperty(r.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),r}(ee);r.ClassDeclaration=ae;var se=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.CONTINUE,r}return i(r,e),r}(J);r.ContinueStatement=se;var oe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.DO,r}return i(r,e),r}(J);r.DoStatement=oe;var ce=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EMPTY,r}return i(r,e),r}(J);r.EmptyStatement=ce;var le=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.ENUMDECLARATION,r}return i(r,e),r}(ee);r.EnumDeclaration=le;var ue=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.ENUMVALUEDECLARATION,r}return i(r,e),r}(te);r.EnumValueDeclaration=ue;var pe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EXPORTIMPORT,r}return i(r,e),r}(l);r.ExportImportStatement=pe;var _e=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EXPORTMEMBER,r}return i(r,e),r}(l);r.ExportMember=_e;var he=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EXPORT,r}return i(r,e),r}(J);r.ExportStatement=he;var de=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EXPORTDEFAULT,r}return i(r,e),r}(J);r.ExportDefaultStatement=de;var ye=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EXPRESSION,r}return i(r,e),r}(J);r.ExpressionStatement=ye;var me=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.FIELDDECLARATION,r.parameterIndex=-1,r}return i(r,e),r}(te);r.FieldDeclaration=me;var fe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.FOR,r}return i(r,e),r}(J);r.ForStatement=fe,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(r.ArrowKind||(r.ArrowKind={}));var Te=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.FUNCTIONDECLARATION,r}return i(r,e),Object.defineProperty(r.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),r.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},r}(ee);r.FunctionDeclaration=Te;var ge=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.IF,r}return i(r,e),r}(J);r.IfStatement=ge;var Ee=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.IMPORTDECLARATION,r}return i(r,e),r}(ee);r.ImportDeclaration=Ee;var ve=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.IMPORT,r}return i(r,e),r}(J);r.ImportStatement=ve;var be=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.INTERFACEDECLARATION,r}return i(r,e),r}(ae);r.InterfaceDeclaration=be;var Ie=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.METHODDECLARATION,r}return i(r,e),r}(Te);r.MethodDeclaration=Ie;var xe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.NAMESPACEDECLARATION,r}return i(r,e),r}(ee);r.NamespaceDeclaration=xe;var Ae=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.RETURN,r}return i(r,e),r}(J);r.ReturnStatement=Ae;var Ne=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.SWITCHCASE,r}return i(r,e),r}(l);r.SwitchCase=Ne;var Se=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.SWITCH,r}return i(r,e),r}(J);r.SwitchStatement=Se;var Oe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.THROW,r}return i(r,e),r}(J);r.ThrowStatement=Oe;var Ce=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.TRY,r}return i(r,e),r}(J);r.TryStatement=Ce;var ke=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.TYPEDECLARATION,r}return i(r,e),r}(ee);r.TypeDeclaration=ke;var Re=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.VARIABLEDECLARATION,r}return i(r,e),r}(te);r.VariableDeclaration=Re;var Le=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.VARIABLE,r}return i(r,e),r}(J);r.VariableStatement=Le;var Fe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.VOID,r}return i(r,e),r}(J);r.VoidStatement=Fe;var De=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.WHILE,r}return i(r,e),r}(J);function Be(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}r.WhileStatement=De,r.findDecorator=function(e,r){if(r)for(var t=0,n=r.length;t=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},s=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0});var o,c=t(0),l=t(2),u=t(6),p=t(3),_=t(1),h=t(9),d=t(10),y=function(e,r,t,n,i){this.localFile=e,this.localIdentifier=r,this.foreignIdentifier=t,this.foreignPath=n,this.foreignPathAlt=i},m=function(e,r,t,n){this.localIdentifier=e,this.foreignIdentifier=r,this.foreignPath=t,this.foreignPathAlt=n},f=function(e,r,t){this.foreignPath=e,this.foreignPathAlt=r,this.pathLiteral=t};function T(e,r){switch(assert(r.length),e){case p.DecoratorKind.OPERATOR:case p.DecoratorKind.OPERATOR_BINARY:switch(r.charCodeAt(0)){case 91:if("[]"==r)return o.INDEXED_GET;if("[]="==r)return o.INDEXED_SET;break;case 123:if("{}"==r)return o.UNCHECKED_INDEXED_GET;if("{}="==r)return o.UNCHECKED_INDEXED_SET;break;case 43:if("+"==r)return o.ADD;break;case 45:if("-"==r)return o.SUB;break;case 42:if("*"==r)return o.MUL;if("**"==r)return o.POW;break;case 47:if("/"==r)return o.DIV;break;case 37:if("%"==r)return o.REM;break;case 38:if("&"==r)return o.BITWISE_AND;break;case 124:if("|"==r)return o.BITWISE_OR;break;case 94:if("^"==r)return o.BITWISE_XOR;break;case 61:if("=="==r)return o.EQ;break;case 33:if("!="==r)return o.NE;break;case 62:if(">"==r)return o.GT;if(">="==r)return o.GE;if(">>"==r)return o.BITWISE_SHR;if(">>>"==r)return o.BITWISE_SHR_U;break;case 60:if("<"==r)return o.LT;if("<="==r)return o.LE;if("<<"==r)return o.BITWISE_SHL}break;case p.DecoratorKind.OPERATOR_PREFIX:switch(r.charCodeAt(0)){case 43:if("+"==r)return o.PLUS;if("++"==r)return o.PREFIX_INC;break;case 45:if("-"==r)return o.MINUS;if("--"==r)return o.PREFIX_DEC;break;case 33:if("!"==r)return o.NOT;break;case 126:if("~"==r)return o.BITWISE_NOT}break;case p.DecoratorKind.OPERATOR_POSTFIX:switch(r.charCodeAt(0)){case 43:if("++"==r)return o.POSTFIX_INC;break;case 45:if("--"==r)return o.POSTFIX_DEC}}return o.INVALID}!function(e){e[e.INVALID=0]="INVALID",e[e.INDEXED_GET=1]="INDEXED_GET",e[e.INDEXED_SET=2]="INDEXED_SET",e[e.UNCHECKED_INDEXED_GET=3]="UNCHECKED_INDEXED_GET",e[e.UNCHECKED_INDEXED_SET=4]="UNCHECKED_INDEXED_SET",e[e.ADD=5]="ADD",e[e.SUB=6]="SUB",e[e.MUL=7]="MUL",e[e.DIV=8]="DIV",e[e.REM=9]="REM",e[e.POW=10]="POW",e[e.BITWISE_AND=11]="BITWISE_AND",e[e.BITWISE_OR=12]="BITWISE_OR",e[e.BITWISE_XOR=13]="BITWISE_XOR",e[e.BITWISE_SHL=14]="BITWISE_SHL",e[e.BITWISE_SHR=15]="BITWISE_SHR",e[e.BITWISE_SHR_U=16]="BITWISE_SHR_U",e[e.EQ=17]="EQ",e[e.NE=18]="NE",e[e.GT=19]="GT",e[e.GE=20]="GE",e[e.LT=21]="LT",e[e.LE=22]="LE",e[e.PLUS=23]="PLUS",e[e.MINUS=24]="MINUS",e[e.NOT=25]="NOT",e[e.BITWISE_NOT=26]="BITWISE_NOT",e[e.PREFIX_INC=27]="PREFIX_INC",e[e.PREFIX_DEC=28]="PREFIX_DEC",e[e.POSTFIX_INC=29]="POSTFIX_INC",e[e.POSTFIX_DEC=30]="POSTFIX_DEC"}(o=r.OperatorKind||(r.OperatorKind={}));var g,E,v=function(e){function r(r){void 0===r&&(r=null);var t=e.call(this,r)||this;t.sources=[],t.diagnosticsOffset=0,t.filesByName=new Map,t.elementsByName=new Map,t.elementsByDeclaration=new Map,t.instancesByName=new Map,t.typeClasses=new Map,t.managedClasses=new Map,t.uniqueSignatures=new Array(0),t.nextClassId=0,t.nextSignatureId=0,t.nativeDummySignature=null;var n=new p.Source(c.LIBRARY_SUBST,"[native code]",p.SourceKind.LIBRARY_ENTRY);t.nativeSource=n;var i=new N(t,n);return t.nativeFile=i,t.filesByName.set(i.internalName,i),t.resolver=new h.Resolver(t),t}return i(r,e),r.prototype.writeRuntimeHeader=function(e,r,t,n){assert(n<1<<28),_.writeI32(n,e,r),_.writeI32(1,e,r+4),_.writeI32(t.id,e,r+8),_.writeI32(n,e,r+12)},Object.defineProperty(r.prototype,"runtimeHeaderSize",{get:function(){return 16},enumerable:!0,configurable:!0}),r.prototype.makeNativeVariableDeclaration=function(e,r){void 0===r&&(r=c.CommonFlags.NONE);var t=this.nativeSource.range;return p.Node.createVariableDeclaration(p.Node.createIdentifierExpression(e,t),null,null,null,r,t)},r.prototype.makeNativeTypeDeclaration=function(e,r){void 0===r&&(r=c.CommonFlags.NONE);var t=this.nativeSource.range,n=p.Node.createIdentifierExpression(e,t);return p.Node.createTypeDeclaration(n,null,p.Node.createOmittedType(t),null,r,t)},r.prototype.makeNativeFunctionDeclaration=function(e,r){void 0===r&&(r=c.CommonFlags.NONE);var t=this.nativeSource.range;return p.Node.createFunctionDeclaration(p.Node.createIdentifierExpression(e,t),null,this.nativeDummySignature||(this.nativeDummySignature=p.Node.createFunctionType([],p.Node.createNamedType(p.Node.createSimpleTypeName(c.CommonSymbols.void_,t),null,!1,t),null,!1,t)),null,null,r,0,t)},r.prototype.makeNativeNamespaceDeclaration=function(e,r){void 0===r&&(r=c.CommonFlags.NONE);var t=this.nativeSource.range;return p.Node.createNamespaceDeclaration(p.Node.createIdentifierExpression(e,t),[],null,r,t)},r.prototype.makeNativeFunction=function(e,r,t,n,i){return void 0===t&&(t=this.nativeFile),void 0===n&&(n=c.CommonFlags.NONE),void 0===i&&(i=E.NONE),new P(e,new B(e,t,this.makeNativeFunctionDeclaration(e,n),i),r)},r.prototype.getElementByDeclaration=function(e){var r=this.elementsByDeclaration;return assert(r.has(e)),r.get(e)},r.prototype.initialize=function(e){var r,t,n,i,o,_,h,d,y,m,f,T;this.options=e,this.registerNativeType(c.CommonSymbols.i8,u.Type.i8),this.registerNativeType(c.CommonSymbols.i16,u.Type.i16),this.registerNativeType(c.CommonSymbols.i32,u.Type.i32),this.registerNativeType(c.CommonSymbols.i64,u.Type.i64),this.registerNativeType(c.CommonSymbols.isize,e.isizeType),this.registerNativeType(c.CommonSymbols.u8,u.Type.u8),this.registerNativeType(c.CommonSymbols.u16,u.Type.u16),this.registerNativeType(c.CommonSymbols.u32,u.Type.u32),this.registerNativeType(c.CommonSymbols.u64,u.Type.u64),this.registerNativeType(c.CommonSymbols.usize,e.usizeType),this.registerNativeType(c.CommonSymbols.bool,u.Type.bool),this.registerNativeType(c.CommonSymbols.f32,u.Type.f32),this.registerNativeType(c.CommonSymbols.f64,u.Type.f64),this.registerNativeType(c.CommonSymbols.void_,u.Type.void),this.registerNativeType(c.CommonSymbols.number,u.Type.f64),this.registerNativeType(c.CommonSymbols.boolean,u.Type.bool),this.nativeFile.add(c.CommonSymbols.native,new S(c.CommonSymbols.native,this.nativeFile,this.makeNativeTypeDeclaration(c.CommonSymbols.native,c.CommonFlags.EXPORT|c.CommonFlags.GENERIC),E.BUILTIN)),this.nativeFile.add(c.CommonSymbols.indexof,new S(c.CommonSymbols.indexof,this.nativeFile,this.makeNativeTypeDeclaration(c.CommonSymbols.indexof,c.CommonFlags.EXPORT|c.CommonFlags.GENERIC),E.BUILTIN)),this.nativeFile.add(c.CommonSymbols.valueof,new S(c.CommonSymbols.valueof,this.nativeFile,this.makeNativeTypeDeclaration(c.CommonSymbols.valueof,c.CommonFlags.EXPORT|c.CommonFlags.GENERIC),E.BUILTIN)),this.nativeFile.add(c.CommonSymbols.returnof,new S(c.CommonSymbols.returnof,this.nativeFile,this.makeNativeTypeDeclaration(c.CommonSymbols.returnof,c.CommonFlags.EXPORT|c.CommonFlags.GENERIC),E.BUILTIN)),e.hasFeature(8)&&this.registerNativeType(c.CommonSymbols.v128,u.Type.v128),this.registerConstantInteger(c.CommonSymbols.ASC_TARGET,u.Type.i32,i64_new(e.isWasm64?c.Target.WASM64:c.Target.WASM32)),this.registerConstantInteger(c.CommonSymbols.ASC_NO_ASSERT,u.Type.bool,i64_new(e.noAssert?1:0,0)),this.registerConstantInteger(c.CommonSymbols.ASC_MEMORY_BASE,u.Type.i32,i64_new(e.memoryBase,0)),this.registerConstantInteger(c.CommonSymbols.ASC_OPTIMIZE_LEVEL,u.Type.i32,i64_new(e.optimizeLevelHint,0)),this.registerConstantInteger(c.CommonSymbols.ASC_SHRINK_LEVEL,u.Type.i32,i64_new(e.shrinkLevelHint,0)),this.registerConstantInteger(c.CommonSymbols.ASC_FEATURE_MUTABLE_GLOBAL,u.Type.bool,i64_new(e.hasFeature(2)?1:0,0)),this.registerConstantInteger(c.CommonSymbols.ASC_FEATURE_SIGN_EXTENSION,u.Type.bool,i64_new(e.hasFeature(1)?1:0,0)),this.registerConstantInteger(c.CommonSymbols.ASC_FEATURE_BULK_MEMORY,u.Type.bool,i64_new(e.hasFeature(4)?1:0,0)),this.registerConstantInteger(c.CommonSymbols.ASC_FEATURE_SIMD,u.Type.bool,i64_new(e.hasFeature(8)?1:0,0)),this.registerConstantInteger(c.CommonSymbols.ASC_FEATURE_THREADS,u.Type.bool,i64_new(e.hasFeature(16)?1:0,0));for(var v=new Array,b=new Map,I=new Map,A=new Array,O=new Array,C=0,k=this.sources.length;C=48&&ye<=57)this.registerConstantInteger(he,u.Type.i32,i64_new(parseInt(de,10)));else{var me=this.elementsByName;if(!(ve=me.get(de)))throw new Error("no such global element: "+de);if(me.has(he))throw new Error("duplicate global element: "+de);me.set(he,ve)}}}}catch(e){h={error:e}}finally{try{pe&&!pe.done&&(d=ue.return)&&d.call(ue)}finally{if(h)throw h.error}}this.arrayPrototype=this.require(c.CommonSymbols.Array,g.CLASS_PROTOTYPE),this.fixedArrayPrototype=this.require(c.CommonSymbols.FixedArray,g.CLASS_PROTOTYPE),this.setPrototype=this.require(c.CommonSymbols.Set,g.CLASS_PROTOTYPE),this.mapPrototype=this.require(c.CommonSymbols.Map,g.CLASS_PROTOTYPE),this.abortInstance=this.lookupFunction(c.CommonSymbols.abort),this.allocInstance=this.requireFunction(c.CommonSymbols.alloc),this.reallocInstance=this.requireFunction(c.CommonSymbols.realloc),this.freeInstance=this.requireFunction(c.CommonSymbols.free),this.retainInstance=this.requireFunction(c.CommonSymbols.retain),this.releaseInstance=this.requireFunction(c.CommonSymbols.release),this.collectInstance=this.requireFunction(c.CommonSymbols.collect),this.typeinfoInstance=this.requireFunction(c.CommonSymbols.typeinfo),this.instanceofInstance=this.requireFunction(c.CommonSymbols.instanceof_),this.visitInstance=this.requireFunction(c.CommonSymbols.visit),this.allocArrayInstance=this.requireFunction(c.CommonSymbols.allocArray);try{for(var fe=a(this.filesByName.values()),Te=fe.next();!Te.done;Te=fe.next()){if(null!==(j=(L=Te.value).exports)&&L.source.sourceKind==p.SourceKind.USER_ENTRY)try{for(var ge=(f=void 0,a(j.values())),Ee=ge.next();!Ee.done;Ee=ge.next()){var ve=Ee.value;this.markModuleExport(ve)}}catch(e){f={error:e}}finally{try{Ee&&!Ee.done&&(T=ge.return)&&T.call(ge)}finally{if(f)throw f.error}}}}catch(e){y={error:e}}finally{try{Te&&!Te.done&&(m=fe.return)&&m.call(fe)}finally{if(y)throw y.error}}},r.prototype.require=function(e,r){var t=this.lookupGlobal(e);if(!t)throw new Error("missing "+e);if(t.kind!=r)throw new Error("unexpected "+e);return t},r.prototype.requireClass=function(e){var r=this.require(e,g.CLASS_PROTOTYPE),t=this.resolver.resolveClass(r,null);if(!t)throw new Error("invalid "+e);return t},r.prototype.lookupFunction=function(e){var r=this.lookupGlobal(e);return r&&r.kind==g.FUNCTION_PROTOTYPE?this.resolver.resolveFunction(r,null):null},r.prototype.requireFunction=function(e){var r=this.require(e,g.FUNCTION_PROTOTYPE),t=this.resolver.resolveFunction(r,null);if(!t)throw new Error("invalid "+e);return t},r.prototype.markModuleExport=function(e){var r,t,n,i;switch(e.set(c.CommonFlags.MODULE_EXPORT),e.kind){case g.CLASS_PROTOTYPE:var s=e.instanceMembers;if(s)try{for(var o=a(s.values()),l=o.next();!l.done;l=o.next()){var u=l.value;this.markModuleExport(u)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(t=o.return)&&t.call(o)}finally{if(r)throw r.error}}break;case g.PROPERTY_PROTOTYPE:var p=e.getterPrototype;p&&this.markModuleExport(p);var _=e.setterPrototype;_&&this.markModuleExport(_);break;case g.PROPERTY:case g.FUNCTION:case g.FIELD:case g.CLASS:assert(!1)}var h=e.members;if(h)try{for(var d=a(h.values()),y=d.next();!y.done;y=d.next()){u=y.value;this.markModuleExport(u)}}catch(e){n={error:e}}finally{try{y&&!y.done&&(i=d.return)&&i.call(d)}finally{if(n)throw n.error}}},r.prototype.registerNativeType=function(e,r){var t=new S(e,this.nativeFile,this.makeNativeTypeDeclaration(e,c.CommonFlags.EXPORT),E.BUILTIN);t.setType(r),this.nativeFile.add(e,t)},r.prototype.registerNativeTypeClass=function(e,r){assert(!this.typeClasses.has(e));var t=this.lookupGlobal(r);if(t){assert(t.kind==g.CLASS_PROTOTYPE);var n=this.resolver.resolveClass(t,null);n&&this.typeClasses.set(e,n)}},r.prototype.registerConstantInteger=function(e,r,t){assert(r.is(4));var n=new L(e,this.nativeFile,E.NONE,this.makeNativeVariableDeclaration(e,c.CommonFlags.CONST|c.CommonFlags.EXPORT));n.setConstantIntegerValue(t,r),this.nativeFile.add(e,n)},r.prototype.registerConstantFloat=function(e,r,t){assert(r.is(8));var n=new L(e,this.nativeFile,E.NONE,this.makeNativeVariableDeclaration(e,c.CommonFlags.CONST|c.CommonFlags.EXPORT));n.setConstantFloatValue(t,r),this.nativeFile.add(e,n)},r.prototype.ensureGlobal=function(e,r){var t=this.elementsByName;if(t.has(e)&&t.get(e)!==r){var n=q(t.get(e),r);if(!n)return this.error(l.DiagnosticCode.Duplicate_identifier_0,r.identifierNode.range,e),r;r=n}return t.set(e,r),r},r.prototype.lookupGlobal=function(e){var r=this.elementsByName;return r.has(e)?r.get(e):null},r.prototype.requireGlobal=function(e){var r=this.elementsByName;if(r.has(e))return r.get(e);throw new Error("missing global")},r.prototype.lookupForeignFile=function(e,r){var t=this.filesByName;return t.has(e)?t.get(e):t.has(r)?t.get(r):null},r.prototype.lookupForeign=function(e,r,t,n){for(;;){var i=this.lookupForeignFile(r,t);if(!i)return null;var a=i.lookupExport(e);if(a)return a;if(n.has(i)){var s=n.get(i);if(s.has(e)){var o=s.get(e);if(o.foreignPath){e=o.localIdentifier.text,r=o.foreignPath,t=assert(o.foreignPathAlt);continue}if(a=i.lookupInSelf(o.localIdentifier.text))return a}}break}return null},r.prototype.checkDecorators=function(e,r){var t=E.NONE;if(e)for(var n=0,i=e.length;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(r,"__esModule",{value:!0});var i,a,s=t(0);!function(e){e[e.None=_BinaryenTypeNone()]="None",e[e.I32=_BinaryenTypeInt32()]="I32",e[e.I64=_BinaryenTypeInt64()]="I64",e[e.F32=_BinaryenTypeFloat32()]="F32",e[e.F64=_BinaryenTypeFloat64()]="F64",e[e.V128=_BinaryenTypeVec128()]="V128",e[e.Unreachable=_BinaryenTypeUnreachable()]="Unreachable",e[e.Auto=_BinaryenTypeAuto()]="Auto"}(i=r.NativeType||(r.NativeType={})),function(e){e[e.Atomics=_BinaryenFeatureAtomics()]="Atomics",e[e.MutableGloabls=_BinaryenFeatureMutableGlobals()]="MutableGloabls",e[e.NontrappingFPToInt=_BinaryenFeatureNontrappingFPToInt()]="NontrappingFPToInt",e[e.SIMD128=_BinaryenFeatureSIMD128()]="SIMD128",e[e.BulkMemory=_BinaryenFeatureBulkMemory()]="BulkMemory",e[e.SignExt=_BinaryenFeatureSignExt()]="SignExt",e[e.ExceptionHandling=_BinaryenFeatureExceptionHandling()]="ExceptionHandling"}(r.FeatureFlags||(r.FeatureFlags={})),function(e){e[e.Invalid=_BinaryenInvalidId()]="Invalid",e[e.Block=_BinaryenBlockId()]="Block",e[e.If=_BinaryenIfId()]="If",e[e.Loop=_BinaryenLoopId()]="Loop",e[e.Break=_BinaryenBreakId()]="Break",e[e.Switch=_BinaryenSwitchId()]="Switch",e[e.Call=_BinaryenCallId()]="Call",e[e.CallIndirect=_BinaryenCallIndirectId()]="CallIndirect",e[e.LocalGet=_BinaryenLocalGetId()]="LocalGet",e[e.LocalSet=_BinaryenLocalSetId()]="LocalSet",e[e.GlobalGet=_BinaryenGlobalGetId()]="GlobalGet",e[e.GlobalSet=_BinaryenGlobalSetId()]="GlobalSet",e[e.Load=_BinaryenLoadId()]="Load",e[e.Store=_BinaryenStoreId()]="Store",e[e.Const=_BinaryenConstId()]="Const",e[e.Unary=_BinaryenUnaryId()]="Unary",e[e.Binary=_BinaryenBinaryId()]="Binary",e[e.Select=_BinaryenSelectId()]="Select",e[e.Drop=_BinaryenDropId()]="Drop",e[e.Return=_BinaryenReturnId()]="Return",e[e.Host=_BinaryenHostId()]="Host",e[e.Nop=_BinaryenNopId()]="Nop",e[e.Unreachable=_BinaryenUnreachableId()]="Unreachable",e[e.AtomicCmpxchg=_BinaryenAtomicCmpxchgId()]="AtomicCmpxchg",e[e.AtomicRMW=_BinaryenAtomicRMWId()]="AtomicRMW",e[e.AtomicWait=_BinaryenAtomicWaitId()]="AtomicWait",e[e.AtomicNotify=_BinaryenAtomicNotifyId()]="AtomicNotify",e[e.SIMDExtract=_BinaryenSIMDExtractId()]="SIMDExtract",e[e.SIMDReplace=_BinaryenSIMDReplaceId()]="SIMDReplace",e[e.SIMDShuffle=_BinaryenSIMDShuffleId()]="SIMDShuffle",e[e.SIMDBitselect=_BinaryenSIMDBitselectId()]="SIMDBitselect",e[e.SIMDShift=_BinaryenSIMDShiftId()]="SIMDShift",e[e.MemoryInit=_BinaryenMemoryInitId()]="MemoryInit",e[e.DataDrop=_BinaryenDataDropId()]="DataDrop",e[e.MemoryCopy=_BinaryenMemoryCopyId()]="MemoryCopy",e[e.MemoryFill=_BinaryenMemoryFillId()]="MemoryFill"}(a=r.ExpressionId||(r.ExpressionId={})),function(e){e[e.ClzI32=_BinaryenClzInt32()]="ClzI32",e[e.CtzI32=_BinaryenCtzInt32()]="CtzI32",e[e.PopcntI32=_BinaryenPopcntInt32()]="PopcntI32",e[e.NegF32=_BinaryenNegFloat32()]="NegF32",e[e.AbsF32=_BinaryenAbsFloat32()]="AbsF32",e[e.CeilF32=_BinaryenCeilFloat32()]="CeilF32",e[e.FloorF32=_BinaryenFloorFloat32()]="FloorF32",e[e.TruncF32=_BinaryenTruncFloat32()]="TruncF32",e[e.NearestF32=_BinaryenNearestFloat32()]="NearestF32",e[e.SqrtF32=_BinaryenSqrtFloat32()]="SqrtF32",e[e.EqzI32=_BinaryenEqZInt32()]="EqzI32",e[e.ClzI64=_BinaryenClzInt64()]="ClzI64",e[e.CtzI64=_BinaryenCtzInt64()]="CtzI64",e[e.PopcntI64=_BinaryenPopcntInt64()]="PopcntI64",e[e.NegF64=_BinaryenNegFloat64()]="NegF64",e[e.AbsF64=_BinaryenAbsFloat64()]="AbsF64",e[e.CeilF64=_BinaryenCeilFloat64()]="CeilF64",e[e.FloorF64=_BinaryenFloorFloat64()]="FloorF64",e[e.TruncF64=_BinaryenTruncFloat64()]="TruncF64",e[e.NearestF64=_BinaryenNearestFloat64()]="NearestF64",e[e.SqrtF64=_BinaryenSqrtFloat64()]="SqrtF64",e[e.EqzI64=_BinaryenEqZInt64()]="EqzI64",e[e.ExtendI32=_BinaryenExtendSInt32()]="ExtendI32",e[e.ExtendU32=_BinaryenExtendUInt32()]="ExtendU32",e[e.WrapI64=_BinaryenWrapInt64()]="WrapI64",e[e.TruncF32ToI32=_BinaryenTruncSFloat32ToInt32()]="TruncF32ToI32",e[e.TruncF32ToI64=_BinaryenTruncSFloat32ToInt64()]="TruncF32ToI64",e[e.TruncF32ToU32=_BinaryenTruncUFloat32ToInt32()]="TruncF32ToU32",e[e.TruncF32ToU64=_BinaryenTruncUFloat32ToInt64()]="TruncF32ToU64",e[e.TruncF64ToI32=_BinaryenTruncSFloat64ToInt32()]="TruncF64ToI32",e[e.TruncF64ToI64=_BinaryenTruncSFloat64ToInt64()]="TruncF64ToI64",e[e.TruncF64ToU32=_BinaryenTruncUFloat64ToInt32()]="TruncF64ToU32",e[e.TruncF64ToU64=_BinaryenTruncUFloat64ToInt64()]="TruncF64ToU64",e[e.ReinterpretF32=_BinaryenReinterpretFloat32()]="ReinterpretF32",e[e.ReinterpretF64=_BinaryenReinterpretFloat64()]="ReinterpretF64",e[e.ConvertI32ToF32=_BinaryenConvertSInt32ToFloat32()]="ConvertI32ToF32",e[e.ConvertI32ToF64=_BinaryenConvertSInt32ToFloat64()]="ConvertI32ToF64",e[e.ConvertU32ToF32=_BinaryenConvertUInt32ToFloat32()]="ConvertU32ToF32",e[e.ConvertU32ToF64=_BinaryenConvertUInt32ToFloat64()]="ConvertU32ToF64",e[e.ConvertI64ToF32=_BinaryenConvertSInt64ToFloat32()]="ConvertI64ToF32",e[e.ConvertI64ToF64=_BinaryenConvertSInt64ToFloat64()]="ConvertI64ToF64",e[e.ConvertU64ToF32=_BinaryenConvertUInt64ToFloat32()]="ConvertU64ToF32",e[e.ConvertU64ToF64=_BinaryenConvertUInt64ToFloat64()]="ConvertU64ToF64",e[e.PromoteF32=_BinaryenPromoteFloat32()]="PromoteF32",e[e.DemoteF64=_BinaryenDemoteFloat64()]="DemoteF64",e[e.ReinterpretI32=_BinaryenReinterpretInt32()]="ReinterpretI32",e[e.ReinterpretI64=_BinaryenReinterpretInt64()]="ReinterpretI64",e[e.ExtendI8ToI32=_BinaryenExtendS8Int32()]="ExtendI8ToI32",e[e.ExtendI16ToI32=_BinaryenExtendS16Int32()]="ExtendI16ToI32",e[e.ExtendI8ToI64=_BinaryenExtendS8Int64()]="ExtendI8ToI64",e[e.ExtendI16ToI64=_BinaryenExtendS16Int64()]="ExtendI16ToI64",e[e.ExtendI32ToI64=_BinaryenExtendS32Int64()]="ExtendI32ToI64",e[e.SplatVecI8x16=_BinaryenSplatVecI8x16()]="SplatVecI8x16",e[e.SplatVecI16x8=_BinaryenSplatVecI16x8()]="SplatVecI16x8",e[e.SplatVecI32x4=_BinaryenSplatVecI32x4()]="SplatVecI32x4",e[e.SplatVecI64x2=_BinaryenSplatVecI64x2()]="SplatVecI64x2",e[e.SplatVecF32x4=_BinaryenSplatVecF32x4()]="SplatVecF32x4",e[e.SplatVecF64x2=_BinaryenSplatVecF64x2()]="SplatVecF64x2",e[e.NotVec128=_BinaryenNotVec128()]="NotVec128",e[e.NegVecI8x16=_BinaryenNegVecI8x16()]="NegVecI8x16",e[e.AnyTrueVecI8x16=_BinaryenAnyTrueVecI8x16()]="AnyTrueVecI8x16",e[e.AllTrueVecI8x16=_BinaryenAllTrueVecI8x16()]="AllTrueVecI8x16",e[e.NegVecI16x8=_BinaryenNegVecI16x8()]="NegVecI16x8",e[e.AnyTrueVecI16x8=_BinaryenAnyTrueVecI16x8()]="AnyTrueVecI16x8",e[e.AllTrueVecI16x8=_BinaryenAllTrueVecI16x8()]="AllTrueVecI16x8",e[e.NegVecI32x4=_BinaryenNegVecI32x4()]="NegVecI32x4",e[e.AnyTrueVecI32x4=_BinaryenAnyTrueVecI32x4()]="AnyTrueVecI32x4",e[e.AllTrueVecI32x4=_BinaryenAllTrueVecI32x4()]="AllTrueVecI32x4",e[e.NegVecI64x2=_BinaryenNegVecI64x2()]="NegVecI64x2",e[e.AnyTrueVecI64x2=_BinaryenAnyTrueVecI64x2()]="AnyTrueVecI64x2",e[e.AllTrueVecI64x2=_BinaryenAllTrueVecI64x2()]="AllTrueVecI64x2",e[e.AbsVecF32x4=_BinaryenAbsVecF32x4()]="AbsVecF32x4",e[e.NegVecF32x4=_BinaryenNegVecF32x4()]="NegVecF32x4",e[e.SqrtVecF32x4=_BinaryenSqrtVecF32x4()]="SqrtVecF32x4",e[e.AbsVecF64x2=_BinaryenAbsVecF64x2()]="AbsVecF64x2",e[e.NegVecF64x2=_BinaryenNegVecF64x2()]="NegVecF64x2",e[e.SqrtVecF64x2=_BinaryenSqrtVecF64x2()]="SqrtVecF64x2",e[e.TruncSatSVecF32x4ToVecI32x4=_BinaryenTruncSatSVecF32x4ToVecI32x4()]="TruncSatSVecF32x4ToVecI32x4",e[e.TruncSatUVecF32x4ToVecI32x4=_BinaryenTruncSatUVecF32x4ToVecI32x4()]="TruncSatUVecF32x4ToVecI32x4",e[e.TruncSatSVecF64x2ToVecI64x2=_BinaryenTruncSatSVecF64x2ToVecI64x2()]="TruncSatSVecF64x2ToVecI64x2",e[e.TruncSatUVecF64x2ToVecI64x2=_BinaryenTruncSatUVecF64x2ToVecI64x2()]="TruncSatUVecF64x2ToVecI64x2",e[e.ConvertSVecI32x4ToVecF32x4=_BinaryenConvertSVecI32x4ToVecF32x4()]="ConvertSVecI32x4ToVecF32x4",e[e.ConvertUVecI32x4ToVecF32x4=_BinaryenConvertUVecI32x4ToVecF32x4()]="ConvertUVecI32x4ToVecF32x4",e[e.ConvertSVecI64x2ToVecF64x2=_BinaryenConvertSVecI64x2ToVecF64x2()]="ConvertSVecI64x2ToVecF64x2",e[e.ConvertUVecI64x2ToVecF64x2=_BinaryenConvertUVecI64x2ToVecF64x2()]="ConvertUVecI64x2ToVecF64x2"}(r.UnaryOp||(r.UnaryOp={})),function(e){e[e.AddI32=_BinaryenAddInt32()]="AddI32",e[e.SubI32=_BinaryenSubInt32()]="SubI32",e[e.MulI32=_BinaryenMulInt32()]="MulI32",e[e.DivI32=_BinaryenDivSInt32()]="DivI32",e[e.DivU32=_BinaryenDivUInt32()]="DivU32",e[e.RemI32=_BinaryenRemSInt32()]="RemI32",e[e.RemU32=_BinaryenRemUInt32()]="RemU32",e[e.AndI32=_BinaryenAndInt32()]="AndI32",e[e.OrI32=_BinaryenOrInt32()]="OrI32",e[e.XorI32=_BinaryenXorInt32()]="XorI32",e[e.ShlI32=_BinaryenShlInt32()]="ShlI32",e[e.ShrU32=_BinaryenShrUInt32()]="ShrU32",e[e.ShrI32=_BinaryenShrSInt32()]="ShrI32",e[e.RotlI32=_BinaryenRotLInt32()]="RotlI32",e[e.RotrI32=_BinaryenRotRInt32()]="RotrI32",e[e.EqI32=_BinaryenEqInt32()]="EqI32",e[e.NeI32=_BinaryenNeInt32()]="NeI32",e[e.LtI32=_BinaryenLtSInt32()]="LtI32",e[e.LtU32=_BinaryenLtUInt32()]="LtU32",e[e.LeI32=_BinaryenLeSInt32()]="LeI32",e[e.LeU32=_BinaryenLeUInt32()]="LeU32",e[e.GtI32=_BinaryenGtSInt32()]="GtI32",e[e.GtU32=_BinaryenGtUInt32()]="GtU32",e[e.GeI32=_BinaryenGeSInt32()]="GeI32",e[e.GeU32=_BinaryenGeUInt32()]="GeU32",e[e.AddI64=_BinaryenAddInt64()]="AddI64",e[e.SubI64=_BinaryenSubInt64()]="SubI64",e[e.MulI64=_BinaryenMulInt64()]="MulI64",e[e.DivI64=_BinaryenDivSInt64()]="DivI64",e[e.DivU64=_BinaryenDivUInt64()]="DivU64",e[e.RemI64=_BinaryenRemSInt64()]="RemI64",e[e.RemU64=_BinaryenRemUInt64()]="RemU64",e[e.AndI64=_BinaryenAndInt64()]="AndI64",e[e.OrI64=_BinaryenOrInt64()]="OrI64",e[e.XorI64=_BinaryenXorInt64()]="XorI64",e[e.ShlI64=_BinaryenShlInt64()]="ShlI64",e[e.ShrU64=_BinaryenShrUInt64()]="ShrU64",e[e.ShrI64=_BinaryenShrSInt64()]="ShrI64",e[e.RotlI64=_BinaryenRotLInt64()]="RotlI64",e[e.RotrI64=_BinaryenRotRInt64()]="RotrI64",e[e.EqI64=_BinaryenEqInt64()]="EqI64",e[e.NeI64=_BinaryenNeInt64()]="NeI64",e[e.LtI64=_BinaryenLtSInt64()]="LtI64",e[e.LtU64=_BinaryenLtUInt64()]="LtU64",e[e.LeI64=_BinaryenLeSInt64()]="LeI64",e[e.LeU64=_BinaryenLeUInt64()]="LeU64",e[e.GtI64=_BinaryenGtSInt64()]="GtI64",e[e.GtU64=_BinaryenGtUInt64()]="GtU64",e[e.GeI64=_BinaryenGeSInt64()]="GeI64",e[e.GeU64=_BinaryenGeUInt64()]="GeU64",e[e.AddF32=_BinaryenAddFloat32()]="AddF32",e[e.SubF32=_BinaryenSubFloat32()]="SubF32",e[e.MulF32=_BinaryenMulFloat32()]="MulF32",e[e.DivF32=_BinaryenDivFloat32()]="DivF32",e[e.CopysignF32=_BinaryenCopySignFloat32()]="CopysignF32",e[e.MinF32=_BinaryenMinFloat32()]="MinF32",e[e.MaxF32=_BinaryenMaxFloat32()]="MaxF32",e[e.EqF32=_BinaryenEqFloat32()]="EqF32",e[e.NeF32=_BinaryenNeFloat32()]="NeF32",e[e.LtF32=_BinaryenLtFloat32()]="LtF32",e[e.LeF32=_BinaryenLeFloat32()]="LeF32",e[e.GtF32=_BinaryenGtFloat32()]="GtF32",e[e.GeF32=_BinaryenGeFloat32()]="GeF32",e[e.AddF64=_BinaryenAddFloat64()]="AddF64",e[e.SubF64=_BinaryenSubFloat64()]="SubF64",e[e.MulF64=_BinaryenMulFloat64()]="MulF64",e[e.DivF64=_BinaryenDivFloat64()]="DivF64",e[e.CopysignF64=_BinaryenCopySignFloat64()]="CopysignF64",e[e.MinF64=_BinaryenMinFloat64()]="MinF64",e[e.MaxF64=_BinaryenMaxFloat64()]="MaxF64",e[e.EqF64=_BinaryenEqFloat64()]="EqF64",e[e.NeF64=_BinaryenNeFloat64()]="NeF64",e[e.LtF64=_BinaryenLtFloat64()]="LtF64",e[e.LeF64=_BinaryenLeFloat64()]="LeF64",e[e.GtF64=_BinaryenGtFloat64()]="GtF64",e[e.GeF64=_BinaryenGeFloat64()]="GeF64",e[e.EqVecI8x16=_BinaryenEqVecI8x16()]="EqVecI8x16",e[e.NeVecI8x16=_BinaryenNeVecI8x16()]="NeVecI8x16",e[e.LtSVecI8x16=_BinaryenLtSVecI8x16()]="LtSVecI8x16",e[e.LtUVecI8x16=_BinaryenLtUVecI8x16()]="LtUVecI8x16",e[e.LeSVecI8x16=_BinaryenLeSVecI8x16()]="LeSVecI8x16",e[e.LeUVecI8x16=_BinaryenLeUVecI8x16()]="LeUVecI8x16",e[e.GtSVecI8x16=_BinaryenGtSVecI8x16()]="GtSVecI8x16",e[e.GtUVecI8x16=_BinaryenGtUVecI8x16()]="GtUVecI8x16",e[e.GeSVecI8x16=_BinaryenGeSVecI8x16()]="GeSVecI8x16",e[e.GeUVecI8x16=_BinaryenGeUVecI8x16()]="GeUVecI8x16",e[e.EqVecI16x8=_BinaryenEqVecI16x8()]="EqVecI16x8",e[e.NeVecI16x8=_BinaryenNeVecI16x8()]="NeVecI16x8",e[e.LtSVecI16x8=_BinaryenLtSVecI16x8()]="LtSVecI16x8",e[e.LtUVecI16x8=_BinaryenLtUVecI16x8()]="LtUVecI16x8",e[e.LeSVecI16x8=_BinaryenLeSVecI16x8()]="LeSVecI16x8",e[e.LeUVecI16x8=_BinaryenLeUVecI16x8()]="LeUVecI16x8",e[e.GtSVecI16x8=_BinaryenGtSVecI16x8()]="GtSVecI16x8",e[e.GtUVecI16x8=_BinaryenGtUVecI16x8()]="GtUVecI16x8",e[e.GeSVecI16x8=_BinaryenGeSVecI16x8()]="GeSVecI16x8",e[e.GeUVecI16x8=_BinaryenGeUVecI16x8()]="GeUVecI16x8",e[e.EqVecI32x4=_BinaryenEqVecI32x4()]="EqVecI32x4",e[e.NeVecI32x4=_BinaryenNeVecI32x4()]="NeVecI32x4",e[e.LtSVecI32x4=_BinaryenLtSVecI32x4()]="LtSVecI32x4",e[e.LtUVecI32x4=_BinaryenLtUVecI32x4()]="LtUVecI32x4",e[e.LeSVecI32x4=_BinaryenLeSVecI32x4()]="LeSVecI32x4",e[e.LeUVecI32x4=_BinaryenLeUVecI32x4()]="LeUVecI32x4",e[e.GtSVecI32x4=_BinaryenGtSVecI32x4()]="GtSVecI32x4",e[e.GtUVecI32x4=_BinaryenGtUVecI32x4()]="GtUVecI32x4",e[e.GeSVecI32x4=_BinaryenGeSVecI32x4()]="GeSVecI32x4",e[e.GeUVecI32x4=_BinaryenGeUVecI32x4()]="GeUVecI32x4",e[e.EqVecF32x4=_BinaryenEqVecF32x4()]="EqVecF32x4",e[e.NeVecF32x4=_BinaryenNeVecF32x4()]="NeVecF32x4",e[e.LtVecF32x4=_BinaryenLtVecF32x4()]="LtVecF32x4",e[e.LeVecF32x4=_BinaryenLeVecF32x4()]="LeVecF32x4",e[e.GtVecF32x4=_BinaryenGtVecF32x4()]="GtVecF32x4",e[e.GeVecF32x4=_BinaryenGeVecF32x4()]="GeVecF32x4",e[e.EqVecF64x2=_BinaryenEqVecF64x2()]="EqVecF64x2",e[e.NeVecF64x2=_BinaryenNeVecF64x2()]="NeVecF64x2",e[e.LtVecF64x2=_BinaryenLtVecF64x2()]="LtVecF64x2",e[e.LeVecF64x2=_BinaryenLeVecF64x2()]="LeVecF64x2",e[e.GtVecF64x2=_BinaryenGtVecF64x2()]="GtVecF64x2",e[e.GeVecF64x2=_BinaryenGeVecF64x2()]="GeVecF64x2",e[e.AndVec128=_BinaryenAndVec128()]="AndVec128",e[e.OrVec128=_BinaryenOrVec128()]="OrVec128",e[e.XorVec128=_BinaryenXorVec128()]="XorVec128",e[e.AddVecI8x16=_BinaryenAddVecI8x16()]="AddVecI8x16",e[e.AddSatSVecI8x16=_BinaryenAddSatSVecI8x16()]="AddSatSVecI8x16",e[e.AddSatUVecI8x16=_BinaryenAddSatUVecI8x16()]="AddSatUVecI8x16",e[e.SubVecI8x16=_BinaryenSubVecI8x16()]="SubVecI8x16",e[e.SubSatSVecI8x16=_BinaryenSubSatSVecI8x16()]="SubSatSVecI8x16",e[e.SubSatUVecI8x16=_BinaryenSubSatUVecI8x16()]="SubSatUVecI8x16",e[e.MulVecI8x16=_BinaryenMulVecI8x16()]="MulVecI8x16",e[e.AddVecI16x8=_BinaryenAddVecI16x8()]="AddVecI16x8",e[e.AddSatSVecI16x8=_BinaryenAddSatSVecI16x8()]="AddSatSVecI16x8",e[e.AddSatUVecI16x8=_BinaryenAddSatUVecI16x8()]="AddSatUVecI16x8",e[e.SubVecI16x8=_BinaryenSubVecI16x8()]="SubVecI16x8",e[e.SubSatSVecI16x8=_BinaryenSubSatSVecI16x8()]="SubSatSVecI16x8",e[e.SubSatUVecI16x8=_BinaryenSubSatUVecI16x8()]="SubSatUVecI16x8",e[e.MulVecI16x8=_BinaryenMulVecI16x8()]="MulVecI16x8",e[e.AddVecI32x4=_BinaryenAddVecI32x4()]="AddVecI32x4",e[e.SubVecI32x4=_BinaryenSubVecI32x4()]="SubVecI32x4",e[e.MulVecI32x4=_BinaryenMulVecI32x4()]="MulVecI32x4",e[e.AddVecI64x2=_BinaryenAddVecI64x2()]="AddVecI64x2",e[e.SubVecI64x2=_BinaryenSubVecI64x2()]="SubVecI64x2",e[e.AddVecF32x4=_BinaryenAddVecF32x4()]="AddVecF32x4",e[e.SubVecF32x4=_BinaryenSubVecF32x4()]="SubVecF32x4",e[e.MulVecF32x4=_BinaryenMulVecF32x4()]="MulVecF32x4",e[e.DivVecF32x4=_BinaryenDivVecF32x4()]="DivVecF32x4",e[e.MinVecF32x4=_BinaryenMinVecF32x4()]="MinVecF32x4",e[e.MaxVecF32x4=_BinaryenMaxVecF32x4()]="MaxVecF32x4",e[e.AddVecF64x2=_BinaryenAddVecF64x2()]="AddVecF64x2",e[e.SubVecF64x2=_BinaryenSubVecF64x2()]="SubVecF64x2",e[e.MulVecF64x2=_BinaryenMulVecF64x2()]="MulVecF64x2",e[e.DivVecF64x2=_BinaryenDivVecF64x2()]="DivVecF64x2",e[e.MinVecF64x2=_BinaryenMinVecF64x2()]="MinVecF64x2",e[e.MaxVecF64x2=_BinaryenMaxVecF64x2()]="MaxVecF64x2"}(r.BinaryOp||(r.BinaryOp={})),function(e){e[e.MemorySize=_BinaryenMemorySize()]="MemorySize",e[e.MemoryGrow=_BinaryenMemoryGrow()]="MemoryGrow"}(r.HostOp||(r.HostOp={})),function(e){e[e.Add=_BinaryenAtomicRMWAdd()]="Add",e[e.Sub=_BinaryenAtomicRMWSub()]="Sub",e[e.And=_BinaryenAtomicRMWAnd()]="And",e[e.Or=_BinaryenAtomicRMWOr()]="Or",e[e.Xor=_BinaryenAtomicRMWXor()]="Xor",e[e.Xchg=_BinaryenAtomicRMWXchg()]="Xchg"}(r.AtomicRMWOp||(r.AtomicRMWOp={})),function(e){e[e.ExtractLaneSVecI8x16=_BinaryenExtractLaneSVecI8x16()]="ExtractLaneSVecI8x16",e[e.ExtractLaneUVecI8x16=_BinaryenExtractLaneUVecI8x16()]="ExtractLaneUVecI8x16",e[e.ExtractLaneSVecI16x8=_BinaryenExtractLaneSVecI16x8()]="ExtractLaneSVecI16x8",e[e.ExtractLaneUVecI16x8=_BinaryenExtractLaneUVecI16x8()]="ExtractLaneUVecI16x8",e[e.ExtractLaneVecI32x4=_BinaryenExtractLaneVecI32x4()]="ExtractLaneVecI32x4",e[e.ExtractLaneVecI64x2=_BinaryenExtractLaneVecI64x2()]="ExtractLaneVecI64x2",e[e.ExtractLaneVecF32x4=_BinaryenExtractLaneVecF32x4()]="ExtractLaneVecF32x4",e[e.ExtractLaneVecF64x2=_BinaryenExtractLaneVecF64x2()]="ExtractLaneVecF64x2"}(r.SIMDExtractOp||(r.SIMDExtractOp={})),function(e){e[e.ReplaceLaneVecI8x16=_BinaryenReplaceLaneVecI8x16()]="ReplaceLaneVecI8x16",e[e.ReplaceLaneVecI16x8=_BinaryenReplaceLaneVecI16x8()]="ReplaceLaneVecI16x8",e[e.ReplaceLaneVecI32x4=_BinaryenReplaceLaneVecI32x4()]="ReplaceLaneVecI32x4",e[e.ReplaceLaneVecI64x2=_BinaryenReplaceLaneVecI64x2()]="ReplaceLaneVecI64x2",e[e.ReplaceLaneVecF32x4=_BinaryenReplaceLaneVecF32x4()]="ReplaceLaneVecF32x4",e[e.ReplaceLaneVecF64x2=_BinaryenReplaceLaneVecF64x2()]="ReplaceLaneVecF64x2"}(r.SIMDReplaceOp||(r.SIMDReplaceOp={})),function(e){e[e.ShlVecI8x16=_BinaryenShlVecI8x16()]="ShlVecI8x16",e[e.ShrSVecI8x16=_BinaryenShrSVecI8x16()]="ShrSVecI8x16",e[e.ShrUVecI8x16=_BinaryenShrUVecI8x16()]="ShrUVecI8x16",e[e.ShlVecI16x8=_BinaryenShlVecI16x8()]="ShlVecI16x8",e[e.ShrSVecI16x8=_BinaryenShrSVecI16x8()]="ShrSVecI16x8",e[e.ShrUVecI16x8=_BinaryenShrUVecI16x8()]="ShrUVecI16x8",e[e.ShlVecI32x4=_BinaryenShlVecI32x4()]="ShlVecI32x4",e[e.ShrSVecI32x4=_BinaryenShrSVecI32x4()]="ShrSVecI32x4",e[e.ShrUVecI32x4=_BinaryenShrUVecI32x4()]="ShrUVecI32x4",e[e.ShlVecI64x2=_BinaryenShlVecI64x2()]="ShlVecI64x2",e[e.ShrSVecI64x2=_BinaryenShrSVecI64x2()]="ShrSVecI64x2",e[e.ShrUVecI64x2=_BinaryenShrUVecI64x2()]="ShrUVecI64x2"}(r.SIMDShiftOp||(r.SIMDShiftOp={}));var o=function(){function e(){}return e.create=function(r,t){var n=new e;return n.buffer=r,n.offset=t,n},e}();r.MemorySegment=o;var c=function(){function e(){this.hasTemporaryFunction=!1,this.cachedPrecomputeNames=0,this.cachedStrings=new Map}return e.create=function(){var r=new e;return r.ref=_BinaryenModuleCreate(),r.lit=memory.allocate(_BinaryenSizeofLiteral()),r},e.createFrom=function(r){var t=p(r);try{var n=new e;return n.ref=_BinaryenModuleRead(t,r.length),n.lit=memory.allocate(_BinaryenSizeofLiteral()),n}finally{memory.free(changetype(t))}},e.prototype.addFunctionType=function(e,r,t){var n=this.allocStringCached(e),i=_(t);try{return _BinaryenAddFunctionType(this.ref,n,r,i,t?t.length:0)}finally{memory.free(i)}},e.prototype.getFunctionTypeBySignature=function(e,r){var t=_(r);try{return _BinaryenGetFunctionTypeBySignature(this.ref,e,t,r?r.length:0)}finally{memory.free(t)}},e.prototype.removeFunctionType=function(e){var r=this.allocStringCached(e);_BinaryenRemoveFunctionType(this.ref,r)},e.prototype.i32=function(e){var r=this.lit;return _BinaryenLiteralInt32(r,e),_BinaryenConst(this.ref,r)},e.prototype.i64=function(e,r){void 0===r&&(r=0);var t=this.lit;return _BinaryenLiteralInt64(t,e,r),_BinaryenConst(this.ref,t)},e.prototype.f32=function(e){var r=this.lit;return _BinaryenLiteralFloat32(r,e),_BinaryenConst(this.ref,r)},e.prototype.f64=function(e){var r=this.lit;return _BinaryenLiteralFloat64(r,e),_BinaryenConst(this.ref,r)},e.prototype.v128=function(e){assert(16==e.length);for(var r=this.lit,t=0;t<16;++t)store(r+t,e[t]);return _BinaryenLiteralVec128(r,r),_BinaryenConst(this.ref,r)},e.prototype.unary=function(e,r){return _BinaryenUnary(this.ref,e,r)},e.prototype.binary=function(e,r,t){return _BinaryenBinary(this.ref,e,r,t)},e.prototype.host=function(e,r,t){void 0===r&&(r=null),void 0===t&&(t=null);var n=this.allocStringCached(r),i=h(t);try{return _BinaryenHost(this.ref,e,n,i,t?t.length:0)}finally{memory.free(i)}},e.prototype.local_get=function(e,r){return _BinaryenLocalGet(this.ref,e,r)},e.prototype.local_tee=function(e,r){return _BinaryenLocalTee(this.ref,e,r)},e.prototype.global_get=function(e,r){var t=this.allocStringCached(e);return _BinaryenGlobalGet(this.ref,t,r)},e.prototype.load=function(e,r,t,n,i,a){return void 0===i&&(i=0),void 0===a&&(a=e),_BinaryenLoad(this.ref,e,r?1:0,i,a,n,t)},e.prototype.store=function(e,r,t,n,a,s){if(void 0===a&&(a=0),void 0===s&&(s=e),ni.V128)throw new Error("here: "+n);return _BinaryenStore(this.ref,e,a,s,r,t,n)},e.prototype.atomic_load=function(e,r,t,n){return void 0===n&&(n=0),_BinaryenAtomicLoad(this.ref,e,n,t,r)},e.prototype.atomic_store=function(e,r,t,n,i){return void 0===i&&(i=0),_BinaryenAtomicStore(this.ref,e,i,r,t,n)},e.prototype.atomic_rmw=function(e,r,t,n,i,a){return _BinaryenAtomicRMW(this.ref,e,r,t,n,i,a)},e.prototype.atomic_cmpxchg=function(e,r,t,n,i,a){return _BinaryenAtomicCmpxchg(this.ref,e,r,t,n,i,a)},e.prototype.atomic_wait=function(e,r,t,n){return _BinaryenAtomicWait(this.ref,e,r,t,n)},e.prototype.atomic_notify=function(e,r){return _BinaryenAtomicNotify(this.ref,e,r)},e.prototype.local_set=function(e,r){return _BinaryenLocalSet(this.ref,e,r)},e.prototype.global_set=function(e,r){var t=this.allocStringCached(e);return _BinaryenGlobalSet(this.ref,t,r)},e.prototype.block=function(e,r,t){void 0===t&&(t=i.None);var n=this.allocStringCached(e),a=h(r);try{return _BinaryenBlock(this.ref,n,a,r.length,t)}finally{memory.free(a)}},e.prototype.br=function(e,r,t){void 0===r&&(r=0),void 0===t&&(t=0);var n=this.allocStringCached(e);return _BinaryenBreak(this.ref,n,r,t)},e.prototype.drop=function(e){return _BinaryenDrop(this.ref,e)},e.prototype.loop=function(e,r){var t=this.allocStringCached(e);return _BinaryenLoop(this.ref,t,r)},e.prototype.if=function(e,r,t){return void 0===t&&(t=0),_BinaryenIf(this.ref,e,r,t)},e.prototype.nop=function(){return _BinaryenNop(this.ref)},e.prototype.return=function(e){return void 0===e&&(e=0),_BinaryenReturn(this.ref,e)},e.prototype.select=function(e,r,t){return _BinaryenSelect(this.ref,t,e,r)},e.prototype.switch=function(e,r,t,n){void 0===n&&(n=0);for(var i=e.length,a=new Array(i),s=0;s=0;--y)memory.free(l[y])}},e.prototype.setFunctionTable=function(e,r,t){for(var n=t.length,i=new Array(n),a=0;a=0;--i)memory.free(n[i])}},e.prototype.precomputeExpression=function(e){var r=_BinaryenGetOptimizeLevel(),t=_BinaryenGetShrinkLevel(),n=_BinaryenGetDebugInfo();_BinaryenSetOptimizeLevel(4),_BinaryenSetShrinkLevel(0),_BinaryenSetDebugInfo(!1);var i=_BinaryenExpressionGetType(e),s=this.addTemporaryFunction(i,null,e),o=this.cachedPrecomputeNames;return o||(this.cachedPrecomputeNames=o=_([this.allocStringCached("vacuum"),this.allocStringCached("precompute")])),_BinaryenFunctionRunPasses(s,this.ref,o,2),e=_BinaryenFunctionGetBody(s),_BinaryenExpressionGetId(e)==a.Return&&(e=_BinaryenReturnGetValue(e)),this.removeTemporaryFunction(),_BinaryenSetOptimizeLevel(r),_BinaryenSetShrinkLevel(t),_BinaryenSetDebugInfo(n),e},e.prototype.validate=function(){return 1==_BinaryenModuleValidate(this.ref)},e.prototype.interpret=function(){_BinaryenModuleInterpret(this.ref)},e.prototype.toBinary=function(e){var r=this.lit;assert(_BinaryenSizeofLiteral()>=12);var t=d(e),n=0,i=0;try{_BinaryenModuleAllocateAndWrite(r,this.ref,t),n=y(r);var a=y(r+4);i=y(r+8);var s=new f;return s.output=function(e,r){for(var t=new Uint8Array(r),n=0;n>8&255),store(t+2,a>>16&255),store(t+3,a>>>24),t+=4}return r}function h(e){return _(e)}function d(e){if(null==e)return 0;for(var r=memory.allocate(function(e){for(var r=0,t=0,n=e.length;t=55296&&i<=57343&&t+1=55296&&a<=57343&&n+1>>6),store(t++,128|63&a)):a<=65535?(store(t++,224|a>>>12),store(t++,128|a>>>6&63),store(t++,128|63&a)):a<=2097151?(store(t++,240|a>>>18),store(t++,128|a>>>12&63),store(t++,128|a>>>6&63),store(t++,128|63&a)):a<=67108863?(store(t++,248|a>>>24),store(t++,128|a>>>18&63),store(t++,128|a>>>12&63),store(t++,128|a>>>6&63),store(t++,128|63&a)):(store(t++,252|a>>>30),store(t++,128|a>>>24&63),store(t++,128|a>>>18&63),store(t++,128|a>>>12&63),store(t++,128|a>>>6&63),store(t++,128|63&a))}return store(t,0),r}function y(e){return load(e)|load(e+1)<<8|load(e+2)<<16|load(e+3)<<24}function m(e){if(!e)return null;for(var r,t,n,i,a,s=new Array;r=load(e++);)128&r?(t=63&load(e++),192!=(224&r)?(n=63&load(e++),224==(240&r)?r=(15&r)<<12|t<<6|n:(i=63&load(e++),240==(248&r)?r=(7&r)<<18|t<<12|n<<6|i:(a=63&load(e++),r=248==(252&r)?(3&r)<<24|t<<18|n<<12|i<<6|a:(1&r)<<30|t<<24|n<<18|i<<12|a<<6|63&load(e++))),s.push(r)):s.push((31&r)<<6|t)):s.push(r);return String.fromCodePoints(s)}r.Relooper=u,r.readString=m;var f=function(){};r.BinaryModule=f,r.needsExplicitUnreachable=function e(r){if(_BinaryenExpressionGetType(r)!=i.Unreachable)return!1;switch(_BinaryenExpressionGetId(r)){case a.Unreachable:case a.Return:return!1;case a.Break:return 0!=_BinaryenBreakGetCondition(r);case a.Block:if(!_BinaryenBlockGetName(r)){var t=_BinaryenBlockGetNumChildren(r);return t>0&&e(_BinaryenBlockGetChild(r,t-1))}}return!0},r.traverse=function(e,r,t){switch(l(e)){case a.Block:for(var n=0,i=_BinaryenBlockGetNumChildren(e);n>>e.size-r},e.prototype.is=function(e){return(this.flags&e)==e},e.prototype.isAny=function(e){return 0!=(this.flags&e)},e.prototype.asClass=function(r){assert(9==this.kind&&!this.classReference);var t=new e(this.kind,-129&this.flags|256,this.size);return t.classReference=r,t},e.prototype.asFunction=function(r){assert(7==this.kind&&!this.signatureReference);var t=new e(this.kind,-129&this.flags|256,this.size);return t.signatureReference=r,t},e.prototype.asNullable=function(){return assert(this.is(256)),this.cachedNullableType||(assert(!this.is(512)),this.cachedNullableType=new e(this.kind,512|this.flags,this.size),this.cachedNullableType.nonNullableType=this,this.cachedNullableType.classReference=this.classReference,this.cachedNullableType.signatureReference=this.signatureReference),this.cachedNullableType},e.prototype.isAssignableTo=function(r,t){var n,i,a,s;if(void 0===t&&(t=!1),this.is(256)){if(r.is(256)&&(!this.is(512)||r.is(512)))if(n=this.classReference){if(i=r.classReference)return n.isAssignableTo(i)}else if((a=this.signatureReference)&&(s=r.signatureReference))return a.isAssignableTo(s)}else if(!r.is(256))if(this.is(4))if(r.is(4)){if(!t||this==e.bool||this.is(1)==r.is(1))return this.size<=r.size}else{if(11==r.kind)return this.size<=23;if(12==r.kind)return this.size<=52}else if(this.is(8)){if(r.is(8))return this.size<=r.size}else if(this.is(1024)&&r.is(1024))return this.size==r.size;return!1},e.prototype.isStrictlyAssignableTo=function(e,r){return void 0===r&&(r=!1),this.is(256)?this.isAssignableTo(e):!e.is(256)&&(this.is(4)?e.is(4)&&e.size==this.size&&(!r||this.is(1)==e.is(1)):this.kind==e.kind)},e.commonDenominator=function(e,r,t){return r.isAssignableTo(e,t)?e:e.isAssignableTo(r,t)?r:null},e.prototype.toString=function(){if(this.is(256)){var e=this.classReference;if(e)return this.is(512)?e.internalName+" | null":e.internalName;var r=this.signatureReference;if(r)return this.is(512)?"("+r.toString()+") | null":r.toString();assert(!1)}switch(this.kind){case 0:return"i8";case 1:return"i16";case 2:return"i32";case 3:return"i64";case 4:return"isize";case 5:return"u8";case 6:return"u16";case 7:return"u32";case 8:return"u64";case 9:return"usize";case 10:return"bool";case 11:return"f32";case 12:return"f64";case 13:return"v128";default:assert(!1);case 14:return"void"}},e.prototype.toNativeType=function(){switch(this.kind){default:return i.NativeType.I32;case 3:case 8:return i.NativeType.I64;case 4:case 9:return 64==this.size?i.NativeType.I64:i.NativeType.I32;case 11:return i.NativeType.F32;case 12:return i.NativeType.F64;case 13:return i.NativeType.V128;case 14:return i.NativeType.None}},e.prototype.toNativeZero=function(e){switch(this.kind){case 14:assert(!1);default:return e.i32(0);case 4:case 9:if(64!=this.size)return e.i32(0);case 3:case 8:return e.i64(0);case 11:return e.f32(0);case 12:return e.f64(0);case 13:return e.v128(a)}},e.prototype.toNativeOne=function(e){switch(this.kind){case 13:case 14:assert(!1);default:return e.i32(1);case 4:case 9:if(64!=this.size)return e.i32(1);case 3:case 8:return e.i64(1);case 11:return e.f32(1);case 12:return e.f64(1)}},e.prototype.toNativeNegOne=function(e){switch(this.kind){case 13:case 14:assert(!1);default:return e.i32(-1);case 4:case 9:if(64!=this.size)return e.i32(-1);case 3:case 8:return e.i64(-1,-1);case 11:return e.f32(-1);case 12:return e.f64(-1)}},e.prototype.toSignatureString=function(){switch(this.kind){case 0:case 5:case 1:case 6:case 2:case 7:case 10:return"i";case 3:case 8:return"j";case 4:case 9:return 64==this.size?"j":"i";case 11:return"f";case 12:return"d";case 13:return"V";case 14:return"v";default:assert(!1)}return"i"},e.i8=new e(0,165,8),e.i16=new e(1,165,16),e.i32=new e(2,133,32),e.i64=new e(3,197,64),e.isize32=new e(4,149,32),e.isize64=new e(4,213,64),e.u8=new e(5,166,8),e.u16=new e(6,166,16),e.u32=new e(7,134,32),e.u64=new e(8,198,64),e.usize32=new e(9,150,32),e.usize64=new e(9,214,64),e.bool=new e(10,166,1),e.f32=new e(11,137,32),e.f64=new e(12,201,64),e.v128=new e(13,1152,128),e.void=new e(14,0,0),e.auto=new e(e.i32.kind,e.i32.flags,e.i32.size),e}();r.Type=s,r.typesToNativeTypes=function(e){for(var r=e.length,t=new Array(r),n=0;ne?r[e]:l(e)},e.prototype.isAssignableTo=function(e){return this.equals(e)},e.prototype.equals=function(e){var r=this.thisType,t=e.thisType;if(r){if(!t||!r.isAssignableTo(t))return!1}else if(t)return!1;if(this.hasRest!=e.hasRest)return!1;var n=this.parameterTypes,i=e.parameterTypes,a=n.length;if(a!=i.length)return!1;for(var s=0;s=o&&u!=c?e.push("?: "):e.push(": "),e.push(n[u].toString());return e.push(") => "),e.push(this.returnType.toString()),e.join("")},e}();r.Signature=o;var c=null;function l(e){c||(c=[]);for(var r=c.length;r<=e;++r)c.push("arg$"+r.toString(10));return c[e-1]}r.getDefaultParameterName=l},function(e,r,t){"use strict";var n,i=this&&this.__extends||(n=function(e,r){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t])})(e,r)},function(e,r){function t(){this.constructor=e}n(e,r),e.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)});Object.defineProperty(r,"__esModule",{value:!0});var a,s,o=t(2),c=t(3),l=t(1);function u(e){switch(assert(e.length),e.charCodeAt(0)){case 97:switch(e){case"abstract":return a.ABSTRACT;case"as":return a.AS;case"async":return a.ASYNC;case"await":return a.AWAIT}break;case 98:switch(e){case"break":return a.BREAK}break;case 99:switch(e){case"case":return a.CASE;case"catch":return a.CATCH;case"class":return a.CLASS;case"continue":return a.CONTINUE;case"const":return a.CONST;case"constructor":return a.CONSTRUCTOR}break;case 100:switch(e){case"debugger":return a.DEBUGGER;case"declare":return a.DECLARE;case"default":return a.DEFAULT;case"delete":return a.DELETE;case"do":return a.DO}break;case 101:switch(e){case"else":return a.ELSE;case"enum":return a.ENUM;case"export":return a.EXPORT;case"extends":return a.EXTENDS}break;case 102:switch(e){case"false":return a.FALSE;case"finally":return a.FINALLY;case"for":return a.FOR;case"from":return a.FROM;case"function":return a.FUNCTION}break;case 103:switch(e){case"get":return a.GET}break;case 105:switch(e){case"if":return a.IF;case"implements":return a.IMPLEMENTS;case"import":return a.IMPORT;case"in":return a.IN;case"instanceof":return a.INSTANCEOF;case"interface":return a.INTERFACE;case"is":return a.IS}break;case 107:switch(e){case"keyof":return a.KEYOF}break;case 108:switch(e){case"let":return a.LET}break;case 109:switch(e){case"module":return a.MODULE}break;case 110:switch(e){case"namespace":return a.NAMESPACE;case"new":return a.NEW;case"null":return a.NULL}break;case 111:switch(e){case"of":return a.OF}break;case 112:switch(e){case"package":return a.PACKAGE;case"private":return a.PRIVATE;case"protected":return a.PROTECTED;case"public":return a.PUBLIC}break;case 114:switch(e){case"readonly":return a.READONLY;case"return":return a.RETURN}break;case 115:switch(e){case"set":return a.SET;case"static":return a.STATIC;case"super":return a.SUPER;case"switch":return a.SWITCH}break;case 116:switch(e){case"this":return a.THIS;case"throw":return a.THROW;case"true":return a.TRUE;case"try":return a.TRY;case"type":return a.TYPE;case"typeof":return a.TYPEOF}break;case 118:switch(e){case"var":return a.VAR;case"void":return a.VOID}break;case 119:switch(e){case"while":return a.WHILE;case"with":return a.WITH}break;case 121:switch(e){case"yield":return a.YIELD}}return a.INVALID}function p(e){switch(e){case a.ABSTRACT:case a.AS:case a.CONSTRUCTOR:case a.DECLARE:case a.DELETE:case a.FROM:case a.FOR:case a.GET:case a.INSTANCEOF:case a.IS:case a.KEYOF:case a.MODULE:case a.NAMESPACE:case a.NULL:case a.READONLY:case a.SET:case a.TYPE:case a.VOID:return!0;default:return!1}}!function(e){e[e.ABSTRACT=0]="ABSTRACT",e[e.AS=1]="AS",e[e.ASYNC=2]="ASYNC",e[e.AWAIT=3]="AWAIT",e[e.BREAK=4]="BREAK",e[e.CASE=5]="CASE",e[e.CATCH=6]="CATCH",e[e.CLASS=7]="CLASS",e[e.CONST=8]="CONST",e[e.CONTINUE=9]="CONTINUE",e[e.CONSTRUCTOR=10]="CONSTRUCTOR",e[e.DEBUGGER=11]="DEBUGGER",e[e.DECLARE=12]="DECLARE",e[e.DEFAULT=13]="DEFAULT",e[e.DELETE=14]="DELETE",e[e.DO=15]="DO",e[e.ELSE=16]="ELSE",e[e.ENUM=17]="ENUM",e[e.EXPORT=18]="EXPORT",e[e.EXTENDS=19]="EXTENDS",e[e.FALSE=20]="FALSE",e[e.FINALLY=21]="FINALLY",e[e.FOR=22]="FOR",e[e.FROM=23]="FROM",e[e.FUNCTION=24]="FUNCTION",e[e.GET=25]="GET",e[e.IF=26]="IF",e[e.IMPLEMENTS=27]="IMPLEMENTS",e[e.IMPORT=28]="IMPORT",e[e.IN=29]="IN",e[e.INSTANCEOF=30]="INSTANCEOF",e[e.INTERFACE=31]="INTERFACE",e[e.IS=32]="IS",e[e.KEYOF=33]="KEYOF",e[e.LET=34]="LET",e[e.MODULE=35]="MODULE",e[e.NAMESPACE=36]="NAMESPACE",e[e.NEW=37]="NEW",e[e.NULL=38]="NULL",e[e.OF=39]="OF",e[e.PACKAGE=40]="PACKAGE",e[e.PRIVATE=41]="PRIVATE",e[e.PROTECTED=42]="PROTECTED",e[e.PUBLIC=43]="PUBLIC",e[e.READONLY=44]="READONLY",e[e.RETURN=45]="RETURN",e[e.SET=46]="SET",e[e.STATIC=47]="STATIC",e[e.SUPER=48]="SUPER",e[e.SWITCH=49]="SWITCH",e[e.THIS=50]="THIS",e[e.THROW=51]="THROW",e[e.TRUE=52]="TRUE",e[e.TRY=53]="TRY",e[e.TYPE=54]="TYPE",e[e.TYPEOF=55]="TYPEOF",e[e.VAR=56]="VAR",e[e.VOID=57]="VOID",e[e.WHILE=58]="WHILE",e[e.WITH=59]="WITH",e[e.YIELD=60]="YIELD",e[e.OPENBRACE=61]="OPENBRACE",e[e.CLOSEBRACE=62]="CLOSEBRACE",e[e.OPENPAREN=63]="OPENPAREN",e[e.CLOSEPAREN=64]="CLOSEPAREN",e[e.OPENBRACKET=65]="OPENBRACKET",e[e.CLOSEBRACKET=66]="CLOSEBRACKET",e[e.DOT=67]="DOT",e[e.DOT_DOT_DOT=68]="DOT_DOT_DOT",e[e.SEMICOLON=69]="SEMICOLON",e[e.COMMA=70]="COMMA",e[e.LESSTHAN=71]="LESSTHAN",e[e.GREATERTHAN=72]="GREATERTHAN",e[e.LESSTHAN_EQUALS=73]="LESSTHAN_EQUALS",e[e.GREATERTHAN_EQUALS=74]="GREATERTHAN_EQUALS",e[e.EQUALS_EQUALS=75]="EQUALS_EQUALS",e[e.EXCLAMATION_EQUALS=76]="EXCLAMATION_EQUALS",e[e.EQUALS_EQUALS_EQUALS=77]="EQUALS_EQUALS_EQUALS",e[e.EXCLAMATION_EQUALS_EQUALS=78]="EXCLAMATION_EQUALS_EQUALS",e[e.EQUALS_GREATERTHAN=79]="EQUALS_GREATERTHAN",e[e.PLUS=80]="PLUS",e[e.MINUS=81]="MINUS",e[e.ASTERISK_ASTERISK=82]="ASTERISK_ASTERISK",e[e.ASTERISK=83]="ASTERISK",e[e.SLASH=84]="SLASH",e[e.PERCENT=85]="PERCENT",e[e.PLUS_PLUS=86]="PLUS_PLUS",e[e.MINUS_MINUS=87]="MINUS_MINUS",e[e.LESSTHAN_LESSTHAN=88]="LESSTHAN_LESSTHAN",e[e.GREATERTHAN_GREATERTHAN=89]="GREATERTHAN_GREATERTHAN",e[e.GREATERTHAN_GREATERTHAN_GREATERTHAN=90]="GREATERTHAN_GREATERTHAN_GREATERTHAN",e[e.AMPERSAND=91]="AMPERSAND",e[e.BAR=92]="BAR",e[e.CARET=93]="CARET",e[e.EXCLAMATION=94]="EXCLAMATION",e[e.TILDE=95]="TILDE",e[e.AMPERSAND_AMPERSAND=96]="AMPERSAND_AMPERSAND",e[e.BAR_BAR=97]="BAR_BAR",e[e.QUESTION=98]="QUESTION",e[e.COLON=99]="COLON",e[e.EQUALS=100]="EQUALS",e[e.PLUS_EQUALS=101]="PLUS_EQUALS",e[e.MINUS_EQUALS=102]="MINUS_EQUALS",e[e.ASTERISK_EQUALS=103]="ASTERISK_EQUALS",e[e.ASTERISK_ASTERISK_EQUALS=104]="ASTERISK_ASTERISK_EQUALS",e[e.SLASH_EQUALS=105]="SLASH_EQUALS",e[e.PERCENT_EQUALS=106]="PERCENT_EQUALS",e[e.LESSTHAN_LESSTHAN_EQUALS=107]="LESSTHAN_LESSTHAN_EQUALS",e[e.GREATERTHAN_GREATERTHAN_EQUALS=108]="GREATERTHAN_GREATERTHAN_EQUALS",e[e.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS=109]="GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS",e[e.AMPERSAND_EQUALS=110]="AMPERSAND_EQUALS",e[e.BAR_EQUALS=111]="BAR_EQUALS",e[e.CARET_EQUALS=112]="CARET_EQUALS",e[e.AT=113]="AT",e[e.IDENTIFIER=114]="IDENTIFIER",e[e.STRINGLITERAL=115]="STRINGLITERAL",e[e.INTEGERLITERAL=116]="INTEGERLITERAL",e[e.FLOATLITERAL=117]="FLOATLITERAL",e[e.INVALID=118]="INVALID",e[e.ENDOFFILE=119]="ENDOFFILE"}(a=r.Token||(r.Token={})),function(e){e[e.DEFAULT=0]="DEFAULT",e[e.PREFER=1]="PREFER",e[e.ALWAYS=2]="ALWAYS"}(s=r.IdentifierHandling||(r.IdentifierHandling={})),r.tokenFromKeyword=u,r.tokenIsAlsoIdentifier=p,r.isIllegalVariableIdentifier=function(e){switch(assert(e.length),e.charCodeAt(0)){case 100:return"delete"==e;case 102:return"for"==e;case 105:return"instanceof"==e;case 110:return"null"==e;case 118:return"void"==e}return!1},r.operatorTokenToString=function(e){switch(e){case a.DELETE:return"delete";case a.IN:return"in";case a.INSTANCEOF:return"instanceof";case a.NEW:return"new";case a.TYPEOF:return"typeof";case a.VOID:return"void";case a.YIELD:return"yield";case a.DOT_DOT_DOT:return"...";case a.COMMA:return",";case a.LESSTHAN:return"<";case a.GREATERTHAN:return">";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var _=function(){function e(e,r,t){this.debugInfoRef=0,this.source=e,this.start=r,this.end=t}return e.join=function(r,t){if(r.source!=t.source)throw new Error("source mismatch");return new e(r.source,r.startt.end?r.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,r=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&r++;return r},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,r=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++r;return r},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();r.Range=_;var h=function(e){function r(r,t){void 0===t&&(t=null);var n=e.call(this,t)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=r,n.pos=0,n.end=r.text.length,n.diagnostics=t||new Array;var i=n.end,a=r.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){i+=e.substring(t,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(t-1,n));break}var a=e.charCodeAt(this.pos);if(a==r){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=r){i+=e.substring(t,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},r.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var r=this.source.text,t=r.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(r,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!n&&47==i)break;if(l.isLineBreak(i)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(r,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(r,this.pos)},r.prototype.readRegexpFlags=function(){for(var e=this.source.text,r=this.pos,t=this.end,n=0;this.pos57)&&95!=n)break;t++}return!0},r.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&c<=57)t=i64_add(i64_shl(t,n),i64_new(c-48));else if(c>=65&&c<=70)t=i64_add(i64_shl(t,n),i64_new(10+c-65));else if(c>=97&&c<=102)t=i64_add(i64_shl(t,n),i64_new(10+c-97));else{if(95!=c)break;i==s&&this.error(i==r?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(s)),i=s+1}this.pos=s+1}return this.pos==r?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(r)):i==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},r.prototype.readDecimalInteger=function(){for(var e=this.source.text,r=this.pos,t=this.end,n=i64_new(0),i=i64_new(10),a=r;this.pos=48&&c<=57)n=i64_add(i64_mul(n,i),i64_new(c-48));else{if(95!=c)break;a==s&&this.error(a==r?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(s)),a=s+1}this.pos=s+1}return this.pos==r?this.error(o.DiagnosticCode.Digit_expected,this.range(r)):a==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),n},r.prototype.readOctalInteger=function(){for(var e=this.source.text,r=this.pos,t=i64_new(0),n=i64_new(3),i=r,a=this.end;this.pos=48&&c<=55)t=i64_add(i64_shl(t,n),i64_new(c-48));else{if(95!=c)break;i==s&&this.error(i==r?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(s)),i=s+1}++this.pos}return this.pos==r?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(r)):i==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},r.prototype.readBinaryInteger=function(){for(var e=this.source.text,r=this.pos,t=i64_new(0),n=i64_new(1),i=r,a=this.end;this.pos=48&&i<=57)r=(r<<4)+i-48;else if(i>=65&&i<=70)r=(r<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";r=(r<<4)+i+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(r)},r.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,r=this.readHexInteger(),t=i64_low(r),n=!1;assert(!i64_high(r)),t>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),n=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},r.prototype.finish=function(){},r}(o.DiagnosticEmitter);r.Tokenizer=h;var d=function(){};r.State=d;var y=null},function(e,r){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,r,t){"use strict";var n,i=this&&this.__extends||(n=function(e,r){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t])})(e,r)},function(e,r){function t(){this.constructor=e}n(e,r),e.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)}),a=this&&this.__values||function(e){var r="function"==typeof Symbol&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},s=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0});var o,c=t(2),l=t(4),u=t(3),p=t(6),_=t(0),h=t(1),d=t(7),y=t(13);!function(e){e[e.REPORT=0]="REPORT",e[e.SWALLOW=1]="SWALLOW"}(o=r.ReportMode||(r.ReportMode={}));var m=function(e){function r(r){var t=e.call(this,r.diagnostics)||this;return t.currentThisExpression=null,t.currentElementExpression=null,t.program=r,t}return i(r,e),r.prototype.resolveType=function(e,r,t,n){switch(void 0===t&&(t=null),void 0===n&&(n=o.REPORT),e.kind){case u.NodeKind.NAMEDTYPE:return this.resolveNamedType(e,r,t,n);case u.NodeKind.FUNCTIONTYPE:return this.resolveFunctionType(e,r,t,n);default:assert(!1)}return null},r.prototype.resolveNamedType=function(e,r,t,n){void 0===t&&(t=null),void 0===n&&(n=o.REPORT);var i=e.name,a=e.typeArguments,s=!i.next;if(s){var u=i.identifier.text;if(null!==t&&t.has(u)){var d=t.get(u);return null!==a&&a.length&&n==o.REPORT&&this.error(c.DiagnosticCode.Type_0_is_not_generic,e.range,d.toString()),e.isNullable?(d.is(256)||n==o.REPORT&&this.error(c.DiagnosticCode.Basic_type_0_cannot_be_nullable,e.range,d.toString()),d.asNullable()):d}}var y=this.resolveTypeName(i,r,n);if(!y)return null;if(y.shadowType)y=y.shadowType;else{if(y.kind==l.ElementKind.ENUM)return null!==a&&a.length&&n==o.REPORT&&this.error(c.DiagnosticCode.Type_0_is_not_generic,e.range,y.internalName),e.isNullable&&n==o.REPORT&&this.error(c.DiagnosticCode.Basic_type_0_cannot_be_nullable,e.range,y.name+"/i32"),p.Type.i32;if(y.kind==l.ElementKind.CLASS_PROTOTYPE){var m=this.resolveClassInclTypeArguments(y,a,r,h.makeMap(t),e,n);return m?e.isNullable?m.type.asNullable():m.type:null}}if(y.kind==l.ElementKind.TYPEDEFINITION){if(y.is(_.CommonFlags.RESOLVED)){null!==a&&a.length&&n==o.REPORT&&this.error(c.DiagnosticCode.Type_0_is_not_generic,e.range,y.internalName);var f=y.type;if(e.isNullable){if(f.is(256))return f.asNullable();n==o.REPORT&&this.error(c.DiagnosticCode.Basic_type_0_cannot_be_nullable,i.range,i.identifier.text)}return f}if(s)switch(i.identifier.symbol){case _.CommonSymbols.native:return this.resolveBuiltinNativeType(e,r,t,n);case _.CommonSymbols.indexof:return this.resolveBuiltinIndexofType(e,r,t,n);case _.CommonSymbols.valueof:return this.resolveBuiltinValueofType(e,r,t,n);case _.CommonSymbols.returnof:return this.resolveBuiltinReturnTypeType(e,r,t,n)}var T=y.typeParameterNodes;if(T){if(!this.resolveTypeArguments(T,a,r,t=h.makeMap(t),e,n))return null}else a&&a.length&&this.error(c.DiagnosticCode.Type_0_is_not_generic,e.range,i.identifier.text);if(!(d=this.resolveType(y.typeNode,y,t,n)))return null;if(e.isNullable){if(d.is(256))return d.asNullable();n==o.REPORT&&this.error(c.DiagnosticCode.Basic_type_0_cannot_be_nullable,i.range,i.identifier.text)}return d}return n==o.REPORT&&this.error(c.DiagnosticCode.Cannot_find_name_0,i.range,i.identifier.text),null},r.prototype.resolveFunctionType=function(e,r,t,n){void 0===t&&(t=null),void 0===n&&(n=o.REPORT);var i=e.explicitThisType,a=null;if(i&&!(a=this.resolveType(i,r,t,n)))return null;for(var s=e.parameters,l=s.length,_=new Array(l),h=new Array(l),d=0,y=!1,m=0;ml)return this.error(c.DiagnosticCode.Expected_0_type_arguments_but_got_1,d?u.Range.join(r[0].range,r[d-1].range):assert(i).range,(d0)return this.resolveExpression(e.arguments[0],r,t,n);var s=this.resolveFunctionInclTypeArguments(a,e.typeArguments,r.actualFunction,h.makeMap(r.contextualTypeArguments),e,n);if(!s)return null;var u=s.signature.returnType,_=u.classReference;if(_)return _;var d=u.signatureReference;if(d)return d.asFunctionTarget(this.program);var m=this.program.typeClasses;return!u.is(256)&&m.has(u.kind)?m.get(u.kind):(n==o.REPORT&&this.error(c.DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,i.range,a.internalName),null)}return n==o.REPORT&&this.error(c.DiagnosticCode.Operation_not_supported,e.range),null},r.prototype.resolveFunction=function(e,r,t,n){void 0===t&&(t=h.makeMap()),void 0===n&&(n=o.REPORT);var i=e.parent.kind==l.ElementKind.PROPERTY_PROTOTYPE?e.parent.parent:e.parent,a=null,s=r?p.typesToString(r):"";if(e.is(_.CommonFlags.INSTANCE)){if(assert(i.kind==l.ElementKind.CLASS),a=i,g=e.getResolvedInstance(s))return g;var d=a.typeArguments;if(d){var y=assert(a.prototype.typeParameterNodes),m=y.length;assert(m==y.length);for(var f=0;f");var w=new l.Function(P,e,B,t);return e.setResolvedInstance(s,w),w},r.prototype.resolveFunctionInclTypeArguments=function(e,r,t,n,i,a){void 0===a&&(a=o.REPORT);var s=e.parent.kind==l.ElementKind.PROPERTY_PROTOTYPE?e.parent.parent:e.parent,u=null;if(e.is(_.CommonFlags.GENERIC)){if(e.is(_.CommonFlags.INSTANCE)){assert(s.kind==l.ElementKind.CLASS);var p=s.typeArguments;if(p){var h=assert(s.prototype.typeParameterNodes),d=p.length;assert(d==h.length);for(var y=0;y"),(g=new l.Class(S,e,r,A)).contextualTypeArguments=t,e.setResolvedInstance(T,g);var O=0;if(A){if(G=A.members){(U=g.members)||(g.members=U=new Map);try{for(var C=a(G),k=C.next();!k.done;k=C.next()){var R=s(k.value,2),L=R[0],F=R[1];U.set(L,F)}}catch(e){i={error:e}}finally{try{k&&!k.done&&(u=C.return)&&u.call(C)}finally{if(i)throw i.error}}}O=A.currentMemoryOffset}var D=e.instanceMembers;if(D)try{for(var B=a(D.values()),P=B.next();!P.done;P=B.next()){var w=P.value;switch(w.kind){case l.ElementKind.FIELD_PROTOTYPE:var U;if(U=g.members){if(U.has(w.name)){this.error(c.DiagnosticCode.Duplicate_identifier_0,w.identifierNode.range,w.name);break}}else g.members=U=new Map;var M=w.typeNode,V=null;if(M)V=this.resolveType(M,e.parent,g.contextualTypeArguments,n);else{var G;if(A)if((G=A.members)&&G.has(w.name)){var K=G.get(w.name);K.is(_.CommonFlags.PRIVATE)||(assert(K.kind==l.ElementKind.FIELD),V=K.type)}V||n==o.REPORT&&this.error(c.DiagnosticCode.Type_expected,w.identifierNode.range.atEnd)}if(!V)break;var z=new l.Field(w,g,V);assert(h.isPowerOf2(V.byteSize));var Y=V.byteSize-1;O&Y&&(O=1+(O|Y)),z.memoryOffset=O,O+=V.byteSize,g.add(w.name,z);break;case l.ElementKind.FUNCTION_PROTOTYPE:var H=w.toBound(g);g.add(H.name,H);break;case l.ElementKind.PROPERTY_PROTOTYPE:var W=new l.Property(w,g),X=w.getterPrototype;if(X){var q=this.resolveFunction(X.toBound(g),null,h.makeMap(g.contextualTypeArguments),n);q&&(W.getterInstance=q,W.setType(q.signature.returnType))}var Q=w.setterPrototype;if(Q){var j=this.resolveFunction(Q.toBound(g),null,h.makeMap(g.contextualTypeArguments),n);j&&(W.setterInstance=j,W.is(_.CommonFlags.RESOLVED)||(assert(1==j.signature.parameterTypes.length),W.setType(j.signature.parameterTypes[0])))}g.add(W.name,W);break;default:assert(!1)}}}catch(e){d={error:e}}finally{try{P&&!P.done&&(y=B.return)&&y.call(B)}finally{if(d)throw d.error}}g.currentMemoryOffset=O;var Z=g.lookupInSelf(_.CommonSymbols.constructor);if(Z&&Z.parent===g){assert(Z.kind==l.ElementKind.FUNCTION_PROTOTYPE);var J=this.resolveFunction(Z,null,g.contextualTypeArguments,n);J&&(g.constructorInstance=J)}try{for(var $=a(e.overloadPrototypes),ee=$.next();!ee.done;ee=$.next()){var re=s(ee.value,2),te=re[0],ne=re[1];assert(te!=l.OperatorKind.INVALID);var ie=void 0;if(ne.is(_.CommonFlags.INSTANCE)){H=ne.toBound(g);ie=this.resolveFunction(H,null,h.makeMap(),n)}else ie=this.resolveFunction(ne,null,h.makeMap(),n);if(ie){var ae=g.overloads;ae||(g.overloads=ae=new Map),ae.set(te,ie)}}}catch(e){m={error:e}}finally{try{ee&&!ee.done&&(f=$.return)&&f.call($)}finally{if(m)throw m.error}}return g},r.prototype.resolveClassInclTypeArguments=function(e,r,t,n,i,a){void 0===a&&(a=o.REPORT);var s=null;if(e.is(_.CommonFlags.GENERIC)){if(!(s=this.resolveTypeArguments(assert(e.typeParameterNodes),r,t,n,i,a)))return null}else if(null!==r&&r.length)return a==o.REPORT&&this.error(c.DiagnosticCode.Type_0_is_not_generic,i.range,e.internalName),null;return this.resolveClass(e,s,n,a)},r}(c.DiagnosticEmitter);r.Resolver=m},function(e,r,t){"use strict";var n=this&&this.__values||function(e){var r="function"==typeof Symbol&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(r,"__esModule",{value:!0});var i,a=t(6),s=t(4),o=t(5),c=t(0),l=t(2);!function(e){e[e.NONE=0]="NONE",e[e.RETURNS=1]="RETURNS",e[e.RETURNS_WRAPPED=2]="RETURNS_WRAPPED",e[e.RETURNS_NONNULL=4]="RETURNS_NONNULL",e[e.THROWS=8]="THROWS",e[e.BREAKS=16]="BREAKS",e[e.CONTINUES=32]="CONTINUES",e[e.ALLOCATES=64]="ALLOCATES",e[e.CALLS_SUPER=128]="CALLS_SUPER",e[e.TERMINATES=256]="TERMINATES",e[e.CONDITIONALLY_RETURNS=512]="CONDITIONALLY_RETURNS",e[e.CONDITIONALLY_THROWS=1024]="CONDITIONALLY_THROWS",e[e.CONDITIONALLY_TERMINATES=2048]="CONDITIONALLY_TERMINATES",e[e.CONDITIONALLY_BREAKS=4096]="CONDITIONALLY_BREAKS",e[e.CONDITIONALLY_CONTINUES=8192]="CONDITIONALLY_CONTINUES",e[e.CONDITIONALLY_ALLOCATES=16384]="CONDITIONALLY_ALLOCATES",e[e.INLINE_CONTEXT=32768]="INLINE_CONTEXT",e[e.UNCHECKED_CONTEXT=65536]="UNCHECKED_CONTEXT",e[e.ANY_CATEGORICAL=511]="ANY_CATEGORICAL",e[e.ANY_CONDITIONAL=30208]="ANY_CONDITIONAL"}(r.FlowFlags||(r.FlowFlags={})),function(e){e[e.NONE=0]="NONE",e[e.CONSTANT=1]="CONSTANT",e[e.WRAPPED=2]="WRAPPED",e[e.NONNULL=4]="NONNULL",e[e.READFROM=8]="READFROM",e[e.WRITTENTO=16]="WRITTENTO",e[e.RETAINED=32]="RETAINED",e[e.CONDITIONALLY_READFROM=64]="CONDITIONALLY_READFROM",e[e.CONDITIONALLY_WRITTENTO=128]="CONDITIONALLY_WRITTENTO",e[e.CONDITIONALLY_RETAINED=256]="CONDITIONALLY_RETAINED",e[e.ANY_CATEGORICAL=63]="ANY_CATEGORICAL",e[e.ANY_CONDITIONAL=480]="ANY_CONDITIONAL",e[e.ANY_RETAINED=288]="ANY_RETAINED"}(i=r.LocalFlags||(r.LocalFlags={})),function(e){e.join=function(r,t){return r&e.ANY_CATEGORICAL&t&e.ANY_CATEGORICAL|r&e.ANY_CONDITIONAL|t&e.ANY_CONDITIONAL}}(i=r.LocalFlags||(r.LocalFlags={})),function(e){e[e.NONE=0]="NONE",e[e.INITIALIZED=1]="INITIALIZED",e[e.CONDITIONALLY_INITIALIZED=2]="CONDITIONALLY_INITIALIZED",e[e.ANY_CATEGORICAL=1]="ANY_CATEGORICAL",e[e.ANY_CONDITIONAL=2]="ANY_CONDITIONAL"}(r.FieldFlags||(r.FieldFlags={})),function(e){e.join=function(r,t){return r&e.ANY_CATEGORICAL&t&e.ANY_CATEGORICAL|r&e.ANY_CONDITIONAL|t&e.ANY_CONDITIONAL}}(r.FieldFlags||(r.FieldFlags={}));var u=function(){function e(){this.scopedLocals=null,this.fieldFlags=null}return e.create=function(r){var t=new e;return t.parent=null,t.flags=0,t.parentFunction=r,t.continueLabel=null,t.breakLabel=null,t.returnType=r.signature.returnType,t.contextualTypeArguments=r.contextualTypeArguments,t.localFlags=[],t.inlineFunction=null,t.inlineReturnLabel=null,t},e.createInline=function(r,t){var n=e.create(r);return n.set(32768),n.inlineFunction=t,n.inlineReturnLabel=t.internalName+"|inlined."+(t.nextInlineId++).toString(10),n.returnType=t.signature.returnType,n.contextualTypeArguments=t.contextualTypeArguments,n},Object.defineProperty(e.prototype,"actualFunction",{get:function(){return this.inlineFunction||this.parentFunction},enumerable:!0,configurable:!0}),e.prototype.is=function(e){return(this.flags&e)==e},e.prototype.isAny=function(e){return 0!=(this.flags&e)},e.prototype.set=function(e){this.flags|=e},e.prototype.unset=function(e){this.flags&=~e},e.prototype.fork=function(){var r=new e;return r.parent=this,r.flags=this.flags,r.parentFunction=this.parentFunction,r.continueLabel=this.continueLabel,r.breakLabel=this.breakLabel,r.returnType=this.returnType,r.contextualTypeArguments=this.contextualTypeArguments,r.localFlags=this.localFlags.slice(),r.inlineFunction=this.inlineFunction,r.inlineReturnLabel=this.inlineReturnLabel,r},e.prototype.getTempLocal=function(e,r){void 0===r&&(r=null);var t,n,i=this.parentFunction;switch(e.toNativeType()){case o.NativeType.I32:t=i.tempI32s;break;case o.NativeType.I64:t=i.tempI64s;break;case o.NativeType.F32:t=i.tempF32s;break;case o.NativeType.F64:t=i.tempF64s;break;case o.NativeType.V128:t=i.tempV128s;break;default:throw new Error("concrete type expected")}if(r){if(t&&t.length)for(var a=0,s=t.length;a=0);var r,t=this.parentFunction;switch(assert(null!=e.type),e.type.toNativeType()){case o.NativeType.I32:r=t.tempI32s||(t.tempI32s=[]);break;case o.NativeType.I64:r=t.tempI64s||(t.tempI64s=[]);break;case o.NativeType.F32:r=t.tempF32s||(t.tempF32s=[]);break;case o.NativeType.F64:r=t.tempF64s||(t.tempF64s=[]);break;case o.NativeType.V128:r=t.tempV128s||(t.tempV128s=[]);break;default:throw new Error("concrete type expected")}assert(e.index>=0),r.push(e)}},e.prototype.getAndFreeTempLocal=function(e,r){void 0===r&&(r=null);var t=this.getTempLocal(e,r);return this.freeTempLocal(t),t},e.prototype.getScopedLocal=function(e){var r=this.scopedLocals;return r&&r.has(e)?r.get(e):null},e.prototype.addScopedLocal=function(e,r,t){void 0===t&&(t=null);var n=this.getTempLocal(r,t),i=this.scopedLocals;return i?assert(!i.has(e)):this.scopedLocals=i=new Map,n.set(c.CommonFlags.SCOPED),i.set(e,n),n},e.prototype.addScopedAlias=function(e,r,t,n){if(void 0===n&&(n=null),this.scopedLocals){var i=this.scopedLocals.get(e);if(i)return n&&this.parentFunction.program.error(l.DiagnosticCode.Duplicate_identifier_0,n.range),i}else this.scopedLocals=new Map;assert(t1?e.breakLabel=r[t-2].toString(10):(e.breakLabel=null,e.breakStack=null)},e.prototype.inherit=function(e){this.flags|=30719&e.flags,this.localFlags=e.localFlags},e.prototype.inheritConditional=function(e){e.is(1)&&this.set(512),e.is(8)&&this.set(1024),e.is(16)&&e.breakLabel==this.breakLabel&&this.set(4096),e.is(32)&&e.continueLabel==this.continueLabel&&this.set(8192),e.is(64)&&this.set(16384);for(var r=e.localFlags,t=0,n=r.length;tl):this.canOverflow(o.getBinaryLeft(e),r)&&!(o.getExpressionId(t=o.getBinaryRight(e))==o.ExpressionId.Const&&o.getConstValueI32(t)>=l);case o.BinaryOp.DivU32:case o.BinaryOp.RemI32:case o.BinaryOp.RemU32:return this.canOverflow(o.getBinaryLeft(e),r)||this.canOverflow(o.getBinaryRight(e),r)}break;case o.ExpressionId.Unary:switch(o.getUnaryOp(e)){case o.UnaryOp.EqzI32:case o.UnaryOp.EqzI64:return!1;case o.UnaryOp.ClzI32:case o.UnaryOp.CtzI32:case o.UnaryOp.PopcntI32:return r.size<7}break;case o.ExpressionId.Const:var u=0;switch(o.getExpressionType(e)){case o.NativeType.I32:u=o.getConstValueI32(e);break;case o.NativeType.I64:u=o.getConstValueI64Low(e);break;case o.NativeType.F32:u=i32(o.getConstValueF32(e));break;case o.NativeType.F64:u=i32(o.getConstValueF64(e));break;default:assert(!1)}switch(r.kind){case 0:return ui8.MAX_VALUE;case 1:return ui16.MAX_VALUE;case 5:return u<0||u>u8.MAX_VALUE;case 6:return u<0||u>u16.MAX_VALUE;case 10:return 0!=(-2&u)}break;case o.ExpressionId.Load:var _=void 0,h=o.isLoadSigned(e);switch(o.getLoadBytes(e)){case 1:_=h?a.Type.i8:a.Type.u8;break;case 2:_=h?a.Type.i16:a.Type.u16;break;default:_=h?a.Type.i32:a.Type.u32}return p(_,r);case o.ExpressionId.Block:if(!o.getBlockName(e)){var d=assert(o.getBlockChildCount(e)),y=o.getBlockChild(e,d-1);return this.canOverflow(y,r)}break;case o.ExpressionId.If:return this.canOverflow(o.getIfTrue(e),r)||this.canOverflow(assert(o.getIfFalse(e)),r);case o.ExpressionId.Select:return this.canOverflow(o.getSelectThen(e),r)||this.canOverflow(o.getSelectElse(e),r);case o.ExpressionId.Call:var m=this.parentFunction.program.instancesByName,f=assert(o.getCallTarget(e));if(m.has(f)){var T=m.get(f);assert(T.kind==s.ElementKind.FUNCTION);var g=T.signature.returnType;return!T.flow.is(2)||p(g,r)}return!1;case o.ExpressionId.Unreachable:return!1}return!0},e.prototype.toString=function(){for(var e=0,r=this.parent;r;)r=r.parent,++e;return"Flow("+this.actualFunction+")["+e.toString()+"]"},e}();function p(e,r){return!e.is(4)||e.size>r.size||e.is(1)!=r.is(1)}function _(e,r){switch(o.getExpressionId(e)){case o.ExpressionId.LocalGet:r.add(o.getLocalGetIndex(e));break;case o.ExpressionId.LocalSet:r.add(o.getLocalSetIndex(e));default:o.traverse(e,r,_)}}r.Flow=u,r.findUsedLocals=function(e,r){return void 0===r&&(r=new Set),o.traverse(e,r,_),r}},function(e,r,t){"use strict";var n,i=this&&this.__extends||(n=function(e,r){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t])})(e,r)},function(e,r){function t(){this.constructor=e}n(e,r),e.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)}),a=this&&this.__values||function(e){var r="function"==typeof Symbol&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},s=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0});var o=t(13),c=t(2),l=t(5),u=t(0),p=t(4),_=t(10),h=t(9),d=t(7),y=t(3),m=t(6),f=t(1),T=function(){function e(){this.target=u.Target.WASM32,this.noAssert=!1,this.importMemory=!1,this.sharedMemory=0,this.importTable=!1,this.sourceMap=!1,this.explicitStart=!1,this.memoryBase=0,this.globalAliases=null,this.features=0,this.noUnsafe=!1,this.optimizeLevelHint=0,this.shrinkLevelHint=0}return Object.defineProperty(e.prototype,"isWasm64",{get:function(){return this.target==u.Target.WASM64},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"usizeType",{get:function(){return this.target==u.Target.WASM64?m.Type.usize64:m.Type.usize32},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isizeType",{get:function(){return this.target==u.Target.WASM64?m.Type.isize64:m.Type.isize32},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nativeSizeType",{get:function(){return this.target==u.Target.WASM64?l.NativeType.I64:l.NativeType.I32},enumerable:!0,configurable:!0}),e.prototype.hasFeature=function(e){return 0!=(this.features&e)},e}();r.Options=T,function(e){e[e.NONE=0]="NONE",e[e.CONV_IMPLICIT=1]="CONV_IMPLICIT",e[e.CONV_EXPLICIT=2]="CONV_EXPLICIT",e[e.MUST_WRAP=4]="MUST_WRAP",e[e.WILL_DROP=8]="WILL_DROP",e[e.WILL_RETAIN=16]="WILL_RETAIN",e[e.PREFER_STATIC=32]="PREFER_STATIC"}(r.Constraints||(r.Constraints={})),function(e){e[e.NONE=0]="NONE",e[e.HEAP=1]="HEAP",e[e.RTTI=2]="RTTI",e[e.visitGlobals=4]="visitGlobals",e[e.visitMembers=8]="visitMembers"}(r.RuntimeFeatures||(r.RuntimeFeatures={}));var g,E,v=function(e){function r(r,t){void 0===t&&(t=null);var n=e.call(this,r.diagnostics)||this;n.currentInlineFunctions=[],n.currentEnum=null,n.currentType=m.Type.void,n.memorySegments=[],n.stringSegments=new Map,n.functionTable=["null"],n.argcVar=0,n.argcSet=0,n.runtimeFeatures=0,n.skippedAutoreleases=new Set,n.f32ModInstance=null,n.f64ModInstance=null,n.f32PowInstance=null,n.f64PowInstance=null,n.program=r,t||(t=new T),n.options=t,n.memoryOffset=i64_new(max(t.memoryBase,8)),n.module=l.Module.create();var i=0;return n.options.hasFeature(16)&&(i|=l.FeatureFlags.Atomics),n.options.hasFeature(2)&&(i|=l.FeatureFlags.MutableGloabls),n.options.hasFeature(8)&&(i|=l.FeatureFlags.SIMD128),n.options.hasFeature(4)&&(i|=l.FeatureFlags.BulkMemory),n.options.hasFeature(1)&&(i|=l.FeatureFlags.SignExt),n.module.setFeatures(i),n}return i(r,e),Object.defineProperty(r.prototype,"resolver",{get:function(){return this.program.resolver},enumerable:!0,configurable:!0}),r.compile=function(e,t){return void 0===t&&(t=null),new r(e,t).compile()},r.prototype.compile=function(){var e,r,t,n,i=this.options,s=this.module,c=this.program;c.initialize(i);var u=c.makeNativeFunction("start",new m.Signature(c,[],m.Type.void));u.internalName="start";var p=new Array;this.currentFlow=u.flow,this.currentBody=p,i.isWasm64?(s.addGlobal(o.BuiltinSymbols.heap_base,l.NativeType.I64,!0,s.i64(0)),s.addGlobal(o.BuiltinSymbols.rtti_base,l.NativeType.I64,!0,s.i64(0))):(s.addGlobal(o.BuiltinSymbols.heap_base,l.NativeType.I32,!0,s.i32(0)),s.addGlobal(o.BuiltinSymbols.rtti_base,l.NativeType.I32,!0,s.i32(0)));var _=c.filesByName;try{for(var h=a(_.values()),d=h.next();!d.done;d=h.next()){(N=d.value).source.sourceKind==y.SourceKind.USER_ENTRY&&(this.compileFile(N),this.compileExports(N))}}catch(r){e={error:r}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(e)throw e.error}}var f=!p.length,T=i.explicitStart;if(!f||T){var g=u.signature;!f&&T&&(s.addGlobal(o.BuiltinSymbols.started,l.NativeType.I32,!0,s.i32(0)),p.unshift(s.if(s.global_get(o.BuiltinSymbols.started,l.NativeType.I32),s.return(),s.global_set(o.BuiltinSymbols.started,s.i32(1)))));var E=s.addFunction(u.internalName,this.ensureFunctionType(g.parameterTypes,g.returnType,g.thisType),m.typesToNativeTypes(u.additionalLocals),s.block(null,p));u.finalize(s,E),T?s.addFunctionExport(u.internalName,"__start"):s.setStart(E)}4&this.runtimeFeatures&&o.compileVisitGlobals(this),8&this.runtimeFeatures&&o.compileVisitMembers(this),s.removeGlobal(o.BuiltinSymbols.rtti_base),2&this.runtimeFeatures&&o.compileRTTI(this);var v=this.memoryOffset;v=i64_align(v,i.usizeType.byteSize),this.memoryOffset=v,s.removeGlobal(o.BuiltinSymbols.heap_base),1&this.runtimeFeatures&&(i.isWasm64?s.addGlobal(o.BuiltinSymbols.heap_base,l.NativeType.I64,!1,s.i64(i64_low(v),i64_high(v))):s.addGlobal(o.BuiltinSymbols.heap_base,l.NativeType.I32,!1,s.i32(i64_low(v))));var b=i.hasFeature(16)&&i.sharedMemory>0;s.setMemory(this.options.memoryBase||this.memorySegments.length?i64_low(i64_shr_u(i64_align(v,65536),i64_new(16,0))):0,b?i.sharedMemory:l.Module.UNLIMITED_MEMORY,this.memorySegments,i.target,"memory",b),i.importMemory&&s.addMemoryImport("0","env","memory",b);var I=this.functionTable;s.setFunctionTable(I.length,4294967295,I),s.addFunction("null",this.ensureFunctionType(null,m.Type.void),null,s.block(null,[])),i.importTable&&s.addTableImport("0","env","table");try{for(var x=a(this.program.filesByName.values()),A=x.next();!A.done;A=x.next()){var N;(N=A.value).source.sourceKind==y.SourceKind.USER_ENTRY&&this.ensureModuleExports(N)}}catch(e){t={error:e}}finally{try{A&&!A.done&&(n=x.return)&&n.call(x)}finally{if(t)throw t.error}}return s},r.prototype.ensureModuleExports=function(e){var r,t,n=e.exports;if(n)try{for(var i=a(n),o=i.next();!o.done;o=i.next()){var c=s(o.value,2),l=c[0],u=c[1];this.ensureModuleExport(l,u)}}catch(e){r={error:e}}finally{try{o&&!o.done&&(t=i.return)&&t.call(i)}finally{if(r)throw r.error}}var p=e.exportsStar;if(p)for(var _=0,h=p.length;_1?p.block(null,n):n[0]),t.push(p.call(r.internalName,null,l.NativeType.None))}}},r.prototype.compileGlobal=function(e){if(e.is(u.CommonFlags.COMPILED))return!0;e.set(u.CommonFlags.COMPILED);var r=this.module,t=0,n=!1,i=e.typeNode,a=e.initializerNode;if(!e.is(u.CommonFlags.RESOLVED))if(i){var s=this.resolver.resolveType(i,e.parent);if(!s)return!1;if(s==m.Type.void)return this.error(c.DiagnosticCode.Type_expected,i.range),!1;e.setType(s)}else{if(!a)return this.error(c.DiagnosticCode.Type_expected,e.identifierNode.range.atEnd),!1;var _=this.currentFlow;if(e.hasDecorator(p.DecoratorFlags.LAZY)&&(this.currentFlow=e.file.startFunction.flow),t=this.compileExpression(a,m.Type.auto,20),this.skippedAutoreleases.has(t)&&(n=!0),this.currentFlow=_,this.currentType==m.Type.void)return this.error(c.DiagnosticCode.Type_0_is_not_assignable_to_type_1,a.range,this.currentType.toString(),""),!1;e.setType(this.currentType)}if(e.is(u.CommonFlags.AMBIENT)&&e.hasDecorator(p.DecoratorFlags.BUILTIN))return e.internalName==o.BuiltinSymbols.heap_base?this.runtimeFeatures|=1:e.internalName==o.BuiltinSymbols.rtti_base&&(this.runtimeFeatures|=2),!0;var h=e.type,d=h.toNativeType(),f=e.is(u.CommonFlags.CONST)||e.is(u.CommonFlags.STATIC|u.CommonFlags.READONLY),T=e.hasDecorator(p.DecoratorFlags.INLINE);if(e.is(u.CommonFlags.AMBIENT))return f||this.options.hasFeature(2)?(e.set(u.CommonFlags.MODULE_IMPORT),b(e,e.declaration),r.addGlobalImport(e.internalName,g,E,d),e.set(u.CommonFlags.COMPILED),!0):(this.error(c.DiagnosticCode.Operation_not_supported,e.declaration.range),!1);var v=!1;if(a){if(!t){_=this.currentFlow;e.hasDecorator(p.DecoratorFlags.LAZY)&&(this.currentFlow=e.file.startFunction.flow),t=this.compileExpression(a,h,53),this.skippedAutoreleases.has(t)&&(n=!0),this.currentFlow=_}if(l.getExpressionId(t)!=l.ExpressionId.Const&&(f?(t=r.precomputeExpression(t),l.getExpressionId(t)!=l.ExpressionId.Const&&(v=!0)):v=!0),T)if(v)this.warning(c.DiagnosticCode.Mutable_value_cannot_be_inlined,a.range);else{switch(assert(l.getExpressionId(t)==l.ExpressionId.Const),l.getExpressionType(t)){case l.NativeType.I32:e.constantValueKind=1,e.constantIntegerValue=i64_new(l.getConstValueI32(t),0);break;case l.NativeType.I64:e.constantValueKind=1,e.constantIntegerValue=i64_new(l.getConstValueI64Low(t),l.getConstValueI64High(t));break;case l.NativeType.F32:e.constantValueKind=2,e.constantFloatValue=l.getConstValueF32(t);break;case l.NativeType.F64:e.constantValueKind=2,e.constantFloatValue=l.getConstValueF64(t);break;default:return assert(!1),!1}e.set(u.CommonFlags.INLINED)}}else t=h.toNativeZero(r);var I=e.internalName;return v?(T&&this.error(c.DiagnosticCode.Decorator_0_is_not_valid_here,assert(y.findDecorator(y.DecoratorKind.INLINE,e.decoratorNodes)).range,"inline"),r.addGlobal(I,d,!0,h.toNativeZero(r)),h.isManaged&&!n&&(t=this.makeRetain(t)),this.currentBody.push(r.global_set(I,t))):T||r.addGlobal(I,d,!f,t),!0},r.prototype.compileEnum=function(e){var r,t;if(e.is(u.CommonFlags.COMPILED))return!0;e.set(u.CommonFlags.COMPILED);var n=this.module;this.currentEnum=e;var i=null,s=!1,o=e.is(u.CommonFlags.CONST)||e.hasDecorator(p.DecoratorFlags.INLINE);if(e.members)try{for(var _=a(e.members.values()),h=_.next();!h.done;h=_.next()){var d=h.value;if(d.kind==p.ElementKind.ENUMVALUE){var y=!1,f=d,T=f.valueNode;f.set(u.CommonFlags.COMPILED);var g=this.currentFlow;e.hasDecorator(p.DecoratorFlags.LAZY)&&(this.currentFlow=e.file.startFunction.flow);var E=void 0;T?(E=this.compileExpression(T,m.Type.i32,1),l.getExpressionId(E)!=l.ExpressionId.Const&&(E=n.precomputeExpression(E),l.getExpressionId(E)!=l.ExpressionId.Const&&(e.is(u.CommonFlags.CONST)&&this.error(c.DiagnosticCode.In_const_enum_declarations_member_initializer_must_be_constant_expression,T.range),y=!0))):null==i?E=n.i32(0):(s&&this.error(c.DiagnosticCode.Enum_member_must_have_initializer,d.identifierNode.range.atEnd),E=n.binary(l.BinaryOp.AddI32,n.global_get(i.internalName,l.NativeType.I32),n.i32(1)),E=n.precomputeExpression(E),l.getExpressionId(E)!=l.ExpressionId.Const&&(e.is(u.CommonFlags.CONST)&&this.error(c.DiagnosticCode.In_const_enum_declarations_member_initializer_must_be_constant_expression,d.declaration.range),y=!0)),this.currentFlow=g,y?(n.addGlobal(f.internalName,l.NativeType.I32,!0,n.i32(0)),this.currentBody.push(this.makeGlobalAssignment(f,E,!1)),s=!0):(o?(f.setConstantIntegerValue(i64_new(l.getConstValueI32(E)),m.Type.i32),f.is(u.CommonFlags.MODULE_EXPORT)&&n.addGlobal(f.internalName,l.NativeType.I32,!1,E)):n.addGlobal(f.internalName,l.NativeType.I32,!1,E),f.isImmutable=!0,s=!1),i=f}}}catch(e){r={error:e}}finally{try{h&&!h.done&&(t=_.return)&&t.call(_)}finally{if(r)throw r.error}}return this.currentEnum=null,!0},r.prototype.compileFunctionUsingTypeArguments=function(e,r,t,n){if(void 0===t&&(t=f.makeMap()),void 0===n&&(n=null),e.hasDecorator(p.DecoratorFlags.BUILTIN))return null;var i=this.resolver.resolveFunctionInclTypeArguments(e,r,e.parent,t,n||e.declaration);return i&&this.compileFunction(i)?i:null},r.prototype.ensureFunctionType=function(e,r,t){void 0===t&&(t=null);var n,i=e?e.length:0,a=0;if(t?((n=new Array(1+i))[0]=t.toNativeType(),a=1):n=new Array(i),e)for(var s=0;so){var f=a.getAndFreeTempLocal(i);h||a.setLocalFlag(f.index,_.LocalFlags.WRAPPED),d&&a.setLocalFlag(f.index,_.LocalFlags.NONNULL),r[o-1]=t.local_set(f.index,s),r.push(t.local_get(f.index,i.toNativeType()))}h||a.set(2),d&&a.set(4),a.set(257)}}if(e.is(u.CommonFlags.CONSTRUCTOR)){var T=this.options.nativeSizeType;assert(e.is(u.CommonFlags.INSTANCE));var g=assert(e.parent);if(assert(g.kind==p.ElementKind.CLASS),!a.is(256)){var E=assert(a.lookupLocal(u.CommonSymbols.this_));a.is(64)||(r.push(t.if(t.unary(T==l.NativeType.I64?l.UnaryOp.EqzI64:l.UnaryOp.EqzI32,t.local_get(E.index,T)),t.local_set(E.index,this.makeRetain(this.makeAllocation(g))))),this.makeFieldInitialization(g,r)),this.performAutoreleases(a,r),this.finishAutoreleases(a,r),r.push(t.local_get(E.index,this.options.nativeSizeType)),a.set(261)}g.base&&!a.is(128)&&this.error(c.DiagnosticCode.Constructors_for_derived_classes_must_contain_a_super_call,e.prototype.declaration.range)}else i==m.Type.void||a.is(256)||this.error(c.DiagnosticCode.A_function_whose_declared_type_is_not_void_must_return_a_value,e.prototype.functionTypeNode.returnType.range);return r},r.prototype.compileFunction=function(e){if(e.is(u.CommonFlags.COMPILED))return!0;assert(!(e.is(u.CommonFlags.AMBIENT)&&e.hasDecorator(p.DecoratorFlags.BUILTIN)));var r=this.currentType;e.set(u.CommonFlags.COMPILED);var t,n=this.module,i=e.signature,a=e.prototype.bodyNode,s=this.ensureFunctionType(i.parameterTypes,i.returnType,i.thisType);if(a){if(e.is(u.CommonFlags.AMBIENT)&&this.error(c.DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,e.identifierNode.range),e.hasDecorator(p.DecoratorFlags.EXTERNAL)){var o=e.decoratorNodes,l=assert(y.findDecorator(y.DecoratorKind.EXTERNAL,o));this.error(c.DiagnosticCode.Operation_not_supported,l.range)}var h=this.currentFlow,d=e.flow;this.currentFlow=d;var f=new Array,T=0;i.thisType&&++T;for(var v=i.parameterTypes,x=0,A=v.length;x=0)return e.functionTableIndex;var r=this.functionTable,t=r.length;return!e.is(u.CommonFlags.TRAMPOLINE)&&e.signature.requiredParameters1||l.getExpressionId(g[0])!=l.ExpressionId.Break)&&S.push(r.block(d,g));else for(var O=0,C=g.length;O=0?"case"+p.toString(10):"break")+"|"+a);var d=r.block("case0|"+a,c,l.NativeType.None),y=511,f=0;for(_=0;_=0&&(i.flags|=-17&y),i.flags|=-4097&f,d},r.prototype.compileThrowStatement=function(e){var r=this.currentFlow;r.set(264);var t=new Array;this.finishAutoreleases(r,t);var n=e.value,i=null;if(n.kind==y.NodeKind.NEW){var a=n.arguments;a.length&&(i=a[0])}return t.push(o.compileAbort(this,i,e)),I(this.module,t,l.NativeType.None)},r.prototype.compileTryStatement=function(e){return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()},r.prototype.compileVariableStatement=function(e){for(var r=this.module,t=e.declarations,n=t.length,i=this.currentFlow,a=new Array,s=this.resolver,o=0;o");continue}y=this.currentType}var g=h.is(u.CommonFlags.CONST),E=!1;if(g)if(f){if(f=r.precomputeExpression(f),l.getExpressionId(f)==l.ExpressionId.Const){var v=new p.Local(d,-1,y,i.parentFunction);switch(l.getExpressionType(f)){case l.NativeType.I32:v.setConstantIntegerValue(i64_new(l.getConstValueI32(f),0),y);break;case l.NativeType.I64:v.setConstantIntegerValue(i64_new(l.getConstValueI64Low(f),l.getConstValueI64High(f)),y);break;case l.NativeType.F32:v.setConstantFloatValue(l.getConstValueF32(f),y);break;case l.NativeType.F64:v.setConstantFloatValue(l.getConstValueF64(f),y);break;default:return assert(!1),r.unreachable()}var b=i.scopedLocals;if(b){if(b.has(d))return this.error(c.DiagnosticCode.Duplicate_identifier_0,h.name.range,d),this.module.unreachable()}else i.scopedLocals=b=new Map;b.set(d,v),E=!0}}else this.error(c.DiagnosticCode._const_declarations_must_be_initialized,h.range);if(!E){v=void 0;if(h.isAny(u.CommonFlags.LET|u.CommonFlags.CONST)||i.is(32768)){var x=i.getScopedLocal(d);x?(this.error(c.DiagnosticCode.Duplicate_identifier_0,h.name.range,h.name.text),v=x):v=i.addScopedLocal(d,y),g&&i.setLocalFlag(v.index,_.LocalFlags.CONSTANT)}else{if(i.lookupLocal(d)){this.error(c.DiagnosticCode.Duplicate_identifier_0,h.name.range,d);continue}v=i.parentFunction.addLocal(y,d,h),g&&i.setLocalFlag(v.index,_.LocalFlags.CONSTANT)}var A=y.isManaged;f?(i.isNonnull(f,y)&&i.setLocalFlag(v.index,_.LocalFlags.NONNULL),A?(i.setLocalFlag(v.index,_.LocalFlags.RETAINED),a.push(r.local_set(v.index,T?f:this.makeRetain(f)))):(a.push(r.local_set(v.index,f)),v.type.is(36)&&(i.canOverflow(f,y)?i.unsetLocalFlag(v.index,_.LocalFlags.WRAPPED):i.setLocalFlag(v.index,_.LocalFlags.WRAPPED)))):A?(a.push(r.local_set(v.index,y.toNativeZero(r))),i.setLocalFlag(v.index,_.LocalFlags.CONDITIONALLY_RETAINED)):v.type.is(36)&&i.setLocalFlag(v.index,_.LocalFlags.WRAPPED)}}return 0==a.length?0:I(r,a,l.NativeType.None)},r.prototype.compileVoidStatement=function(e){return this.compileExpression(e.expression,m.Type.void,10)},r.prototype.compileWhileStatement=function(e){var r=this.module,t=this.currentFlow,n=r.precomputeExpression(this.makeIsTrueish(this.compileExpression(e.condition,m.Type.bool),this.currentType)),i=!1;if(l.getExpressionId(n)==l.ExpressionId.Const){if(assert(l.getExpressionType(n)==l.NativeType.I32),!l.getConstValueI32(n))return r.nop();i=!0}var a=t.pushBreakLabel(),s=t.fork();this.currentFlow=s;var o="break|"+a;s.breakLabel=o;var c="continue|"+a;s.continueLabel=c,s.inheritNonnullIfTrue(n);var u=new Array;e.statement.kind==y.NodeKind.BLOCK?this.compileStatements(e.statement.statements,!1,u):u.push(this.compileStatement(e.statement));var p=!s.is(256)&&!s.is(16);p&&(this.performAutoreleases(s,u),u.push(r.br(c))),i||u.unshift(r.br(o,r.unary(l.UnaryOp.EqzI32,n)));var _=I(r,u,l.NativeType.None);return(p||s.isAny(8224))&&(_=r.loop(c,_)),i&&!s.isAny(4112)||(_=r.block(o,[_])),s.freeScopedLocals(),t.popBreakLabel(),s.unset(12336),i?t.inherit(s):t.inheritConditional(s),this.currentFlow=t,_},r.prototype.compileInlineConstant=function(e,r,t){assert(e.is(u.CommonFlags.INLINED));var n=e.type;switch(!(3&t)&&n.is(4)&&r.is(4)&&n.size>i:0);case 5:case 6:case 10:var a=e.type.computeSmallIntegerMask(m.Type.i32);return this.module.i32(1==e.constantValueKind?i64_low(e.constantIntegerValue)&a:0);case 2:case 7:return this.module.i32(1==e.constantValueKind?i64_low(e.constantIntegerValue):0);case 4:case 9:if(!e.program.options.isWasm64)return this.module.i32(1==e.constantValueKind?i64_low(e.constantIntegerValue):0);case 3:case 8:return 1==e.constantValueKind?this.module.i64(i64_low(e.constantIntegerValue),i64_high(e.constantIntegerValue)):this.module.i64(0);case 12:if(!e.hasDecorator(p.DecoratorFlags.BUILTIN)||r!=m.Type.f32)return this.module.f64(e.constantFloatValue);this.currentType=m.Type.f32;case 11:return this.module.f32(e.constantFloatValue);default:return assert(!1),this.module.unreachable()}},r.prototype.compileExpression=function(e,r,t){var n;switch(void 0===t&&(t=0),this.currentType=r,r==m.Type.void&&(t|=8),e.kind){case y.NodeKind.ASSERTION:n=this.compileAssertionExpression(e,r,t);break;case y.NodeKind.BINARY:n=this.compileBinaryExpression(e,r,t);break;case y.NodeKind.CALL:n=this.compileCallExpression(e,r,t);break;case y.NodeKind.COMMA:n=this.compileCommaExpression(e,r,t);break;case y.NodeKind.ELEMENTACCESS:n=this.compileElementAccessExpression(e,r,t);break;case y.NodeKind.FUNCTION:n=this.compileFunctionExpression(e,r.signatureReference,t);break;case y.NodeKind.IDENTIFIER:case y.NodeKind.FALSE:case y.NodeKind.NULL:case y.NodeKind.THIS:case y.NodeKind.SUPER:case y.NodeKind.TRUE:n=this.compileIdentifierExpression(e,r,t);break;case y.NodeKind.INSTANCEOF:n=this.compileInstanceOfExpression(e,r,t);break;case y.NodeKind.LITERAL:n=this.compileLiteralExpression(e,r,t);break;case y.NodeKind.NEW:n=this.compileNewExpression(e,r,t);break;case y.NodeKind.PARENTHESIZED:n=this.compileExpression(e.expression,r,t);break;case y.NodeKind.PROPERTYACCESS:n=this.compilePropertyAccessExpression(e,r,t);break;case y.NodeKind.TERNARY:n=this.compileTernaryExpression(e,r,t);break;case y.NodeKind.UNARYPOSTFIX:n=this.compileUnaryPostfixExpression(e,r,t);break;case y.NodeKind.UNARYPREFIX:n=this.compileUnaryPrefixExpression(e,r,t);break;default:this.error(c.DiagnosticCode.Operation_not_supported,e.range),n=this.module.unreachable()}var i=this.currentType,a=0!=(4&t);return i!=r&&(2&t?(n=this.convertExpression(n,i,r,!0,a,e),a=!1,this.currentType=r):1&t&&(n=this.convertExpression(n,i,r,!1,a,e),a=!1,this.currentType=r)),a&&(n=this.ensureSmallIntegerWrap(n,i)),this.options.sourceMap&&this.addDebugLocation(n,e.range),n},r.prototype.precomputeExpression=function(e,r,t){return void 0===t&&(t=0),this.module.precomputeExpression(this.compileExpression(e,r,t))},r.prototype.convertExpression=function(e,r,t,n,i,a){var s=this.module;return 14==r.kind?(assert(14!=t.kind),this.error(c.DiagnosticCode.Type_0_is_not_assignable_to_type_1,a.range,r.toString(),t.toString()),s.unreachable()):14==t.kind?s.drop(e):(this.currentFlow.isNonnull(e,r)&&(r=r.nonNullableType),r.isAssignableTo(t)||n||(r.nonNullableType==t?this.error(c.DiagnosticCode.Object_is_possibly_null,a.range):this.error(c.DiagnosticCode.Conversion_from_type_0_to_1_requires_an_explicit_cast,a.range,r.toString(),t.toString())),r.is(8)?t.is(8)?11==r.kind?12==t.kind&&(e=s.unary(l.UnaryOp.PromoteF32,e)):11==t.kind&&(e=s.unary(l.UnaryOp.DemoteF64,e)):t.is(4)?11==r.kind?t==m.Type.bool?(e=s.binary(l.BinaryOp.NeF32,e,s.f32(0)),i=!1):e=t.is(1)?t.is(64)?s.unary(l.UnaryOp.TruncF32ToI64,e):s.unary(l.UnaryOp.TruncF32ToI32,e):t.is(64)?s.unary(l.UnaryOp.TruncF32ToU64,e):s.unary(l.UnaryOp.TruncF32ToU32,e):t==m.Type.bool?(e=s.binary(l.BinaryOp.NeF64,e,s.f64(0)),i=!1):e=t.is(1)?t.is(64)?s.unary(l.UnaryOp.TruncF64ToI64,e):s.unary(l.UnaryOp.TruncF64ToI32,e):t.is(64)?s.unary(l.UnaryOp.TruncF64ToU64,e):s.unary(l.UnaryOp.TruncF64ToU32,e):(assert(0==t.flags,"void type expected"),e=s.drop(e)):r.is(4)&&t.is(8)?e=11==t.kind?r.is(64)?s.unary(r.is(1)?l.UnaryOp.ConvertI64ToF32:l.UnaryOp.ConvertU64ToF32,e):s.unary(r.is(1)?l.UnaryOp.ConvertI32ToF32:l.UnaryOp.ConvertU32ToF32,e):r.is(64)?s.unary(r.is(1)?l.UnaryOp.ConvertI64ToF64:l.UnaryOp.ConvertU64ToF64,e):s.unary(r.is(1)?l.UnaryOp.ConvertI32ToF64:l.UnaryOp.ConvertU32ToF64,e):r.is(64)?t==m.Type.bool?(e=s.binary(l.BinaryOp.NeI64,e,s.i64(0)),i=!1):t.is(64)||(e=s.unary(l.UnaryOp.WrapI64,e)):t.is(64)?(e=s.unary(r.is(1)?l.UnaryOp.ExtendI32:l.UnaryOp.ExtendU32,this.ensureSmallIntegerWrap(e,r)),i=!1):r.is(32)&&r.size",i.toString(),s.toString()),this.currentType=r,y.unreachable();switch(n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T),o.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.GtI32,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.GtI64:l.BinaryOp.GtI32,n,a);break;case 3:h=y.binary(l.BinaryOp.GtI64,n,a);break;case 5:case 6:case 7:case 10:h=y.binary(l.BinaryOp.GtU32,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.GtU64:l.BinaryOp.GtU32,n,a);break;case 8:h=y.binary(l.BinaryOp.GtU64,n,a);break;case 11:h=y.binary(l.BinaryOp.GtF32,n,a);break;case 12:h=y.binary(l.BinaryOp.GtF64,n,a);break;default:assert(!1),h=y.unreachable()}this.currentType=m.Type.bool;break;case d.Token.LESSTHAN_EQUALS:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.LE)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!0)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"<=",i.toString(),s.toString()),this.currentType=r,y.unreachable();switch(n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T),o.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.LeI32,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.LeI64:l.BinaryOp.LeI32,n,a);break;case 3:h=y.binary(l.BinaryOp.LeI64,n,a);break;case 5:case 6:case 7:case 10:h=y.binary(l.BinaryOp.LeU32,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.LeU64:l.BinaryOp.LeU32,n,a);break;case 8:h=y.binary(l.BinaryOp.LeU64,n,a);break;case 11:h=y.binary(l.BinaryOp.LeF32,n,a);break;case 12:h=y.binary(l.BinaryOp.LeF64,n,a);break;default:assert(!1),h=y.unreachable()}this.currentType=m.Type.bool;break;case d.Token.GREATERTHAN_EQUALS:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.GE)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!0)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,">=",i.toString(),s.toString()),this.currentType=r,y.unreachable();switch(n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T),o.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.GeI32,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.GeI64:l.BinaryOp.GeI32,n,a);break;case 3:h=y.binary(l.BinaryOp.GeI64,n,a);break;case 5:case 6:case 7:case 10:h=y.binary(l.BinaryOp.GeU32,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.GeU64:l.BinaryOp.GeU32,n,a);break;case 8:h=y.binary(l.BinaryOp.GeU64,n,a);break;case 11:h=y.binary(l.BinaryOp.GeF32,n,a);break;case 12:h=y.binary(l.BinaryOp.GeF64,n,a);break;default:assert(!1),h=y.unreachable()}this.currentType=m.Type.bool;break;case d.Token.EQUALS_EQUALS_EQUALS:case d.Token.EQUALS_EQUALS:if(n=this.compileExpression(f,r),i=this.currentType,E==d.Token.EQUALS_EQUALS&&this.currentType.is(256))if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.EQ)){h=this.compileBinaryOverload(A,f,n,T,e);break}if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,d.operatorTokenToString(e.operator),i.toString(),s.toString()),this.currentType=r,y.unreachable();switch(n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T),o.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:h=y.binary(l.BinaryOp.EqI32,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.EqI64:l.BinaryOp.EqI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.EqI64,n,a);break;case 11:h=y.binary(l.BinaryOp.EqF32,n,a);break;case 12:h=y.binary(l.BinaryOp.EqF64,n,a);break;case 13:h=y.unary(l.UnaryOp.AllTrueVecI8x16,y.binary(l.BinaryOp.EqVecI8x16,n,a));break;default:assert(!1),h=y.unreachable()}this.currentType=m.Type.bool;break;case d.Token.EXCLAMATION_EQUALS_EQUALS:case d.Token.EXCLAMATION_EQUALS:if(n=this.compileExpression(f,r),i=this.currentType,E==d.Token.EXCLAMATION_EQUALS&&this.currentType.is(256))if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.NE)){h=this.compileBinaryOverload(A,f,n,T,e);break}if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,d.operatorTokenToString(e.operator),i.toString(),s.toString()),this.currentType=r,y.unreachable();switch(n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T),o.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:h=y.binary(l.BinaryOp.NeI32,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.NeI64:l.BinaryOp.NeI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.NeI64,n,a);break;case 11:h=y.binary(l.BinaryOp.NeF32,n,a);break;case 12:h=y.binary(l.BinaryOp.NeF64,n,a);break;case 13:h=y.unary(l.UnaryOp.AnyTrueVecI8x16,y.binary(l.BinaryOp.NeVecI8x16,n,a));break;default:assert(!1),h=y.unreachable()}this.currentType=m.Type.bool;break;case d.Token.EQUALS:return this.compileAssignment(f,T,r);case d.Token.PLUS_EQUALS:g=!0;case d.Token.PLUS:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.ADD)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)a=this.compileExpression(T,i,1);else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"+",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:case 2:case 7:h=y.binary(l.BinaryOp.AddI32,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.AddI64:l.BinaryOp.AddI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.AddI64,n,a);break;case 11:h=y.binary(l.BinaryOp.AddF32,n,a);break;case 12:h=y.binary(l.BinaryOp.AddF64,n,a);break;default:assert(!1),h=y.unreachable()}break;case d.Token.MINUS_EQUALS:g=!0;case d.Token.MINUS:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.SUB)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"-",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:case 2:case 7:h=y.binary(l.BinaryOp.SubI32,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.SubI64:l.BinaryOp.SubI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.SubI64,n,a);break;case 11:h=y.binary(l.BinaryOp.SubF32,n,a);break;case 12:h=y.binary(l.BinaryOp.SubF64,n,a);break;default:assert(!1),h=y.unreachable()}break;case d.Token.ASTERISK_EQUALS:g=!0;case d.Token.ASTERISK:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.MUL)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)n=this.ensureSmallIntegerWrap(n,i),a=this.compileExpression(T,i,1);else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"*",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:case 2:case 7:h=y.binary(l.BinaryOp.MulI32,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.MulI64:l.BinaryOp.MulI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.MulI64,n,a);break;case 11:h=y.binary(l.BinaryOp.MulF32,n,a);break;case 12:h=y.binary(l.BinaryOp.MulF64,n,a);break;default:assert(!1),h=y.unreachable()}break;case d.Token.ASTERISK_ASTERISK_EQUALS:g=!0;case d.Token.ASTERISK_ASTERISK:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.POW)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}var v=void 0;if(11==this.currentType.kind){if(a=this.compileExpression(T,m.Type.f32,1),s=this.currentType,!(v=this.f32PowInstance)){if(!(b=this.program.lookupGlobal(u.CommonSymbols.Mathf))){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Mathf"),h=y.unreachable();break}if(!(I=b.members?b.members.get(u.CommonSymbols.pow):null)){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Mathf.pow"),h=y.unreachable();break}assert(I.kind==p.ElementKind.FUNCTION_PROTOTYPE),this.f32PowInstance=v=this.resolver.resolveFunction(I,null)}}else if(n=this.convertExpression(n,this.currentType,m.Type.f64,!1,!1,f),i=this.currentType,a=this.compileExpression(T,m.Type.f64,1),s=this.currentType,!(v=this.f64PowInstance)){if(!(b=this.program.lookupGlobal(u.CommonSymbols.Math))){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Math"),h=y.unreachable();break}if(!(I=b.members?b.members.get(u.CommonSymbols.pow):null)){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Math.pow"),h=y.unreachable();break}assert(I.kind==p.ElementKind.FUNCTION_PROTOTYPE),this.f64PowInstance=v=this.resolver.resolveFunction(I,null)}h=v&&this.compileFunction(v)?this.makeCallDirect(v,[n,a],e):y.unreachable();break;case d.Token.SLASH_EQUALS:g=!0;case d.Token.SLASH:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.DIV)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)n=this.ensureSmallIntegerWrap(n,i),a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"/",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T)}switch(this.currentType.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.DivI32,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.DivI64:l.BinaryOp.DivI32,n,a);break;case 3:h=y.binary(l.BinaryOp.DivI64,n,a);break;case 5:case 6:case 10:case 7:h=y.binary(l.BinaryOp.DivU32,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.DivU64:l.BinaryOp.DivU32,n,a);break;case 8:h=y.binary(l.BinaryOp.DivU64,n,a);break;case 11:h=y.binary(l.BinaryOp.DivF32,n,a);break;case 12:h=y.binary(l.BinaryOp.DivF64,n,a);break;default:assert(!1),h=y.unreachable()}break;case d.Token.PERCENT_EQUALS:g=!0;case d.Token.PERCENT:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.REM)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)n=this.ensureSmallIntegerWrap(n,i),a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"%",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T)}switch(this.currentType.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.RemI32,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.RemI64:l.BinaryOp.RemI32,n,a);break;case 3:h=y.binary(l.BinaryOp.RemI64,n,a);break;case 5:case 6:case 10:case 7:h=y.binary(l.BinaryOp.RemU32,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.RemU64:l.BinaryOp.RemU32,n,a);break;case 8:h=y.binary(l.BinaryOp.RemU64,n,a);break;case 11:if(!(v=this.f32ModInstance)){if(!(b=this.program.lookupGlobal(u.CommonSymbols.Mathf))){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Mathf"),h=y.unreachable();break}if(!(I=b.members?b.members.get(u.CommonSymbols.mod):null)){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Mathf.mod"),h=y.unreachable();break}assert(I.kind==p.ElementKind.FUNCTION_PROTOTYPE),this.f32ModInstance=v=this.resolver.resolveFunction(I,null)}h=v&&this.compileFunction(v)?this.makeCallDirect(v,[n,a],e):y.unreachable();break;case 12:if(!(v=this.f64ModInstance)){var b,I;if(!(b=this.program.lookupGlobal(u.CommonSymbols.Math))){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Math"),h=y.unreachable();break}if(!(I=b.members?b.members.get(u.CommonSymbols.mod):null)){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Math.mod"),h=y.unreachable();break}assert(I.kind==p.ElementKind.FUNCTION_PROTOTYPE),this.f64ModInstance=v=this.resolver.resolveFunction(I,null)}h=v&&this.compileFunction(v)?this.makeCallDirect(v,[n,a],e):y.unreachable();break;default:assert(!1),h=y.unreachable()}break;case d.Token.LESSTHAN_LESSTHAN_EQUALS:g=!0;case d.Token.LESSTHAN_LESSTHAN:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_SHL)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}switch(a=this.compileExpression(T,i,1),s=this.currentType,this.currentType.kind){case 0:case 1:case 5:case 6:case 10:case 2:case 7:h=y.binary(l.BinaryOp.ShlI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.ShlI64,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.ShlI64:l.BinaryOp.ShlI32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.GREATERTHAN_GREATERTHAN_EQUALS:g=!0;case d.Token.GREATERTHAN_GREATERTHAN:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_SHR)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}switch(n=this.ensureSmallIntegerWrap(n,i),a=this.compileExpression(T,i,1),s=this.currentType,this.currentType.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.ShrI32,n,a);break;case 3:h=y.binary(l.BinaryOp.ShrI64,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.ShrI64:l.BinaryOp.ShrI32,n,a);break;case 5:case 6:case 10:case 7:h=y.binary(l.BinaryOp.ShrU32,n,a);break;case 8:h=y.binary(l.BinaryOp.ShrU64,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.ShrU64:l.BinaryOp.ShrU32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:g=!0;case d.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_SHR_U)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}switch(n=this.ensureSmallIntegerWrap(n,i),a=this.compileExpression(T,i,1),s=this.currentType,this.currentType.kind){case 5:case 6:case 10:h=y.binary(l.BinaryOp.ShrU32,n,a);case 0:case 1:case 2:case 7:h=y.binary(l.BinaryOp.ShrU32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.ShrU64,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.ShrU64:l.BinaryOp.ShrU32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.AMPERSAND_EQUALS:g=!0;case d.Token.AMPERSAND:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_AND)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"&",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 10:case 7:h=y.binary(l.BinaryOp.AndI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.AndI64,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.AndI64:l.BinaryOp.AndI32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.BAR_EQUALS:g=!0;case d.Token.BAR:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_OR)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"|",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:h=y.binary(l.BinaryOp.OrI32,n,a);break;case 2:case 7:h=y.binary(l.BinaryOp.OrI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.OrI64,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.OrI64:l.BinaryOp.OrI32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.CARET_EQUALS:g=!0;case d.Token.CARET:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){var x,A;if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_XOR)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"^",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:h=y.binary(l.BinaryOp.XorI32,n,a);break;case 2:case 7:h=y.binary(l.BinaryOp.XorI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.XorI64,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.XorI64:l.BinaryOp.XorI32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.AMPERSAND_AMPERSAND:var N=this.currentFlow,S=20&t;n=this.compileExpression(f,r.exceptVoid,S),i=this.currentType;var O=N.fork();if(this.currentFlow=O,O.inheritNonnullIfTrue(n),a=this.compileExpression(T,i,1|S),s=i,r==m.Type.bool||r==m.Type.void)a=this.performAutoreleasesWithValue(O,a,s),O.freeScopedLocals(),this.currentFlow=N,this.currentType=m.Type.bool,h=y.if(this.makeIsTrueish(n,i),this.makeIsTrueish(a,s),y.i32(0));else if(i.isManaged){var C=this.skippedAutoreleases.has(n),k=this.skippedAutoreleases.has(a),R=N.getTempLocal(i);n=y.local_tee(R.index,n);var L=!1;C!=k?C?(a=this.makeRetain(a),k=!0):L=!0:16&t||(a=this.moveAutorelease(a,O,N));var F=new Array;C&&F.unshift(this.makeRelease(y.local_get(R.index,i.toNativeType()))),a=this.performAutoreleasesWithValue(O,a,s,F),O.freeScopedLocals(),this.currentFlow=N,h=y.if(this.makeIsTrueish(n,i),a,L?this.makeRetain(y.local_get(R.index,i.toNativeType())):y.local_get(R.index,i.toNativeType())),(C||k)&&this.skippedAutoreleases.add(h),R&&N.freeTempLocal(R)}else if(a=this.performAutoreleasesWithValue(O,a,s),O.freeScopedLocals(),this.currentFlow=N,h=y.cloneExpression(n,!0,0))h=y.if(this.makeIsTrueish(n,this.currentType),a,h);else{var D=N.getTempLocal(i);N.canOverflow(n,i)||N.setLocalFlag(D.index,_.LocalFlags.WRAPPED),N.isNonnull(n,i)&&N.setLocalFlag(D.index,_.LocalFlags.NONNULL),h=y.if(this.makeIsTrueish(y.local_tee(D.index,n),i),a,y.local_get(D.index,i.toNativeType()))}this.currentType=i;break;case d.Token.BAR_BAR:N=this.currentFlow,S=20&t;n=this.compileExpression(f,r.exceptVoid,S),i=this.currentType;O=N.fork();if(this.currentFlow=O,O.inheritNonnullIfFalse(n),a=this.compileExpression(T,i,1|S),s=i,r==m.Type.bool||r==m.Type.void)a=this.performAutoreleasesWithValue(O,a,i),O.freeScopedLocals(),this.currentFlow=N,this.currentType=m.Type.bool,h=y.if(this.makeIsTrueish(n,i),y.i32(1),this.makeIsTrueish(a,s));else if(i.isManaged){C=this.skippedAutoreleases.has(n),k=this.skippedAutoreleases.has(a),R=N.getTempLocal(i);n=y.local_tee(R.index,n);var B=!1;C!=k?C?(a=this.makeRetain(a),k=!0):B=!0:16&t||(a=this.moveAutorelease(a,O,N));F=new Array;C&&F.unshift(this.makeRelease(y.local_get(R.index,i.toNativeType()))),a=this.performAutoreleasesWithValue(O,a,s,F),O.freeScopedLocals(),this.currentFlow=N,h=y.if(this.makeIsTrueish(n,i),B?this.makeRetain(y.local_get(R.index,i.toNativeType())):y.local_get(R.index,i.toNativeType()),a),(C||k)&&this.skippedAutoreleases.add(h),R&&N.freeTempLocal(R)}else if(a=this.performAutoreleasesWithValue(O,a,s),O.freeScopedLocals(),this.currentFlow=N,h=y.cloneExpression(n,!0,0))h=y.if(this.makeIsTrueish(n,i),h,a);else{D=N.getAndFreeTempLocal(i);N.canOverflow(n,i)||N.setLocalFlag(D.index,_.LocalFlags.WRAPPED),N.isNonnull(n,i)&&N.setLocalFlag(D.index,_.LocalFlags.NONNULL),h=y.if(this.makeIsTrueish(y.local_tee(D.index,n),i),y.local_get(D.index,i.toNativeType()),a)}this.currentType=i;break;default:assert(!1),h=this.module.unreachable()}if(!g)return h;var P=this.resolver,w=P.resolveExpression(f,this.currentFlow);return w?this.makeAssignment(w,h,f,P.currentThisExpression,P.currentElementExpression,r!=m.Type.void):y.unreachable()},r.prototype.compileUnaryOverload=function(e,r,t,n){return this.makeCallDirect(e,[t],n,!1)},r.prototype.compileBinaryOverload=function(e,r,t,n,i){var a;if(e.is(u.CommonFlags.INSTANCE)){var s=assert(e.parent);assert(s.kind==p.ElementKind.CLASS),a=e.signature.parameterTypes[0]}else a=e.signature.parameterTypes[1];var o=this.compileExpression(n,a,1);return this.makeCallDirect(e,[t,o],i)},r.prototype.compileAssignment=function(e,r,t){var n=this.program.resolver,i=this.currentFlow,a=n.resolveExpression(e,i);if(!a)return this.module.unreachable();var s,o=n.currentThisExpression,l=n.currentElementExpression;switch(a.kind){case p.ElementKind.GLOBAL:if(!this.compileGlobal(a))return this.module.unreachable();case p.ElementKind.LOCAL:case p.ElementKind.FIELD:s=a.type,a.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(e);break;case p.ElementKind.PROPERTY_PROTOTYPE:var u=a.setterPrototype;if(!u)return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,e.range,a.internalName),this.module.unreachable();if(!(_=this.resolver.resolveFunction(u,null,f.makeMap(),h.ReportMode.REPORT)))return this.module.unreachable();assert(1==_.signature.parameterTypes.length),s=_.signature.parameterTypes[0],u.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(e);break;case p.ElementKind.PROPERTY:var _;if(!(_=a.setterInstance))return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,e.range,a.internalName),this.module.unreachable();assert(1==_.signature.parameterTypes.length),s=_.signature.parameterTypes[0],_.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(e);break;case p.ElementKind.CLASS:if(l){var d=i.is(65536),y=a.lookupOverload(p.OperatorKind.INDEXED_SET,d);if(!y)return a.lookupOverload(p.OperatorKind.INDEXED_GET,d)?this.error(c.DiagnosticCode.Index_signature_in_type_0_only_permits_reading,e.range,a.internalName):this.error(c.DiagnosticCode.Index_signature_is_missing_in_type_0,e.range,a.internalName),this.module.unreachable();assert(2==y.signature.parameterTypes.length),s=y.signature.parameterTypes[1],y.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(e);break}default:return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}return assert(s!=m.Type.void),this.makeAssignment(a,this.compileExpression(r,s,17),e,o,l,t!=m.Type.void)},r.prototype.makeAssignment=function(e,r,t,n,i,a){var s=this.module,o=this.currentFlow;switch(e.kind){case p.ElementKind.LOCAL:return o.isLocalFlag(e.index,_.LocalFlags.CONSTANT,!0)?(this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,t.range,e.internalName),this.currentType=a?e.type:m.Type.void,s.unreachable()):this.makeLocalAssignment(e,r,a);case p.ElementKind.GLOBAL:return this.compileGlobal(e)?e.isAny(u.CommonFlags.CONST|u.CommonFlags.READONLY)?(this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,t.range,e.internalName),this.currentType=a?e.type:m.Type.void,s.unreachable()):this.makeGlobalAssignment(e,r,a):s.unreachable();case p.ElementKind.FIELD:var l=e.initializerNode;return!e.is(u.CommonFlags.READONLY)||o.actualFunction.is(u.CommonFlags.CONSTRUCTOR)||l?this.makeFieldAssignment(e,r,this.compileExpression(assert(n),this.options.usizeType),a):(this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,t.range,e.internalName),s.unreachable());case p.ElementKind.PROPERTY_PROTOTYPE:this.skippedAutoreleases.has(r)&&(r=this.makeAutorelease(r,o));var d=e.setterPrototype;if(!d)return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,t.range,e.internalName),s.unreachable();if(!(g=this.resolver.resolveFunction(d,null,f.makeMap(),h.ReportMode.REPORT)))return s.unreachable();if(!a)return this.makeCallDirect(g,[r],t);var y=assert(e.getterPrototype);if(!(v=this.resolver.resolveFunction(y,null,f.makeMap(),h.ReportMode.REPORT)))return s.unreachable();var T=(R=v.signature.returnType).toNativeType();return s.block(null,[this.makeCallDirect(g,[r],t),this.makeCallDirect(v,null,t)],T);case p.ElementKind.PROPERTY:var g;if(this.skippedAutoreleases.has(r)&&(r=this.makeAutorelease(r,o)),!(g=e.setterInstance))return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,t.range,e.internalName),s.unreachable();if(!a){var E=this.compileExpression(assert(n),this.options.usizeType);return this.makeCallDirect(g,[E,r],t)}T=(R=(v=assert(e.getterInstance)).signature.returnType).toNativeType();var v,b=this.compileExpression(assert(n),this.options.usizeType),I=o.getAndFreeTempLocal(R).index;return s.block(null,[this.makeCallDirect(g,[s.local_tee(I,b),r],t),this.makeCallDirect(v,[s.local_get(I,T)],t)],T);case p.ElementKind.CLASS:if(this.skippedAutoreleases.has(r)&&(r=this.makeAutorelease(r,o)),i){var x=o.is(65536),A=e.lookupOverload(p.OperatorKind.INDEXED_GET,x);if(!A)return this.error(c.DiagnosticCode.Index_signature_is_missing_in_type_0,t.range,e.internalName),s.unreachable();var N=e.lookupOverload(p.OperatorKind.INDEXED_SET,x);if(!N)return this.error(c.DiagnosticCode.Index_signature_in_type_0_only_permits_reading,t.range,e.internalName),this.currentType=a?A.signature.returnType:m.Type.void,s.unreachable();var S=e.type,O=(b=this.compileExpression(assert(n),this.options.usizeType),this.compileExpression(i,m.Type.i32,1));if(a){var C=o.getTempLocal(S),k=o.getAndFreeTempLocal(this.currentType),R=A.signature.returnType;return o.freeTempLocal(C),s.block(null,[this.makeCallDirect(N,[s.local_tee(C.index,b),s.local_tee(k.index,O),r],t),this.makeCallDirect(A,[s.local_get(C.index,C.type.toNativeType()),s.local_get(k.index,k.type.toNativeType())],t)],R.toNativeType())}return this.makeCallDirect(N,[b,O,r],t)}}return this.error(c.DiagnosticCode.Operation_not_supported,t.range),s.unreachable()},r.prototype.makeLocalAssignment=function(e,r,t){var n=e.type;assert(n!=m.Type.void);var i=this.currentFlow,a=e.index;if(n.is(512)&&(i.isNonnull(r,n)?i.setLocalFlag(a,_.LocalFlags.NONNULL):i.unsetLocalFlag(a,_.LocalFlags.NONNULL)),i.setLocalFlag(a,_.LocalFlags.WRITTENTO),n.isManaged){var s=this.module,o=n.toNativeType();return i.isAnyLocalFlag(a,_.LocalFlags.ANY_RETAINED)?this.skippedAutoreleases.has(r)?(r=this.makeSkippedRelease(s.local_get(a,o),r),t?(this.currentType=n,s.local_tee(a,r)):(this.currentType=m.Type.void,s.local_set(a,r))):(r=this.makeRetainRelease(s.local_get(a,o),r),t?(this.currentType=n,s.local_tee(a,r)):(this.currentType=m.Type.void,s.local_set(a,r))):(i.unsetLocalFlag(a,_.LocalFlags.CONDITIONALLY_RETAINED),i.setLocalFlag(a,_.LocalFlags.RETAINED),this.skippedAutoreleases.has(r)||(r=this.makeRetain(r)),t?(this.currentType=n,s.local_tee(a,r)):(this.currentType=m.Type.void,s.local_set(a,r)))}return n.is(36)&&(i.canOverflow(r,n)?i.unsetLocalFlag(a,_.LocalFlags.WRAPPED):i.setLocalFlag(a,_.LocalFlags.WRAPPED)),t?(this.currentType=n,this.module.local_tee(a,r)):(this.currentType=m.Type.void,this.module.local_set(a,r))},r.prototype.makeGlobalAssignment=function(e,r,t){var n=this.module,i=e.type;assert(i!=m.Type.void);var a=i.toNativeType();return i.isManaged?this.skippedAutoreleases.has(r)?t?(this.currentType=i,n.block(null,[n.global_set(e.internalName,this.makeSkippedRelease(n.global_get(e.internalName,a),r)),n.global_get(e.internalName,a)],a)):(this.currentType=m.Type.void,n.global_set(e.internalName,this.makeSkippedRelease(n.global_get(e.internalName,a),r))):t?(this.currentType=i,n.block(null,[n.global_set(e.internalName,this.makeRetainRelease(n.global_get(e.internalName,a),r)),n.global_get(e.internalName,a)],a)):(this.currentType=m.Type.void,n.global_set(e.internalName,this.makeRetainRelease(n.global_get(e.internalName,a),r))):(r=this.ensureSmallIntegerWrap(r,i),t?(this.currentType=i,n.block(null,[n.global_set(e.internalName,r),n.global_get(e.internalName,a)],a)):(this.currentType=m.Type.void,n.global_set(e.internalName,r)))},r.prototype.makeFieldAssignment=function(e,r,t,n){var i=this.module,a=this.currentFlow,s=e.type,o=s.toNativeType();assert(e.parent.kind==p.ElementKind.CLASS);var c=e.parent.type,l=c.toNativeType();if(s.isManaged&&c.isManaged){var u=a.getTempLocal(c);if(this.skippedAutoreleases.has(r)){if(n){var h=a.getAndFreeTempLocal(s);return a.canOverflow(r,s)||a.setLocalFlag(h.index,_.LocalFlags.WRAPPED),a.isNonnull(r,s)&&a.setLocalFlag(h.index,_.LocalFlags.NONNULL),a.freeTempLocal(u),this.currentType=s,i.block(null,[i.store(s.byteSize,i.local_tee(u.index,t),this.makeSkippedRelease(i.load(s.byteSize,s.is(1),i.local_get(u.index,l),o,e.memoryOffset),i.local_tee(h.index,r)),o,e.memoryOffset),i.local_get(h.index,o)],o)}return a.freeTempLocal(u),this.currentType=m.Type.void,i.store(s.byteSize,i.local_tee(u.index,t),this.makeSkippedRelease(i.load(s.byteSize,s.is(1),i.local_get(u.index,l),o,e.memoryOffset),r),o,e.memoryOffset)}if(n){h=a.getAndFreeTempLocal(s);return a.canOverflow(r,s)||a.setLocalFlag(h.index,_.LocalFlags.WRAPPED),a.isNonnull(r,s)&&a.setLocalFlag(h.index,_.LocalFlags.NONNULL),a.freeTempLocal(u),this.currentType=s,i.block(null,[i.store(s.byteSize,i.local_tee(u.index,t),this.makeRetainRelease(i.load(s.byteSize,s.is(1),i.local_get(u.index,l),o,e.memoryOffset),i.local_tee(h.index,r)),o,e.memoryOffset),i.local_get(h.index,o)],o)}return a.freeTempLocal(u),this.currentType=m.Type.void,i.store(s.byteSize,i.local_tee(u.index,t),this.makeRetainRelease(i.load(s.byteSize,s.is(1),i.local_get(u.index,l),o,e.memoryOffset),r),o,e.memoryOffset)}if(n){h=a.getAndFreeTempLocal(s);return a.canOverflow(r,s)||a.setLocalFlag(h.index,_.LocalFlags.WRAPPED),a.isNonnull(r,s)&&a.setLocalFlag(h.index,_.LocalFlags.NONNULL),this.currentType=s,i.block(null,[i.store(s.byteSize,t,i.local_tee(h.index,r),o,e.memoryOffset),i.local_get(h.index,o)],o)}return this.currentType=m.Type.void,i.store(s.byteSize,t,r,o,e.memoryOffset)},r.prototype.compileCallExpression=function(e,r,t){var n=this.module,i=this.currentFlow;if(e.expression.kind==y.NodeKind.SUPER){var a=this.currentFlow,s=a.actualFunction;if(!s.is(u.CommonFlags.CONSTRUCTOR))return this.error(c.DiagnosticCode.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors,e.range),n.unreachable();var o=assert(s.parent);assert(o.kind==p.ElementKind.CLASS);var _=assert(o.base),h=assert(a.lookupLocal(u.CommonSymbols.this_)),d=this.options.nativeSizeType,T=this.compileCallDirect(this.ensureConstructor(_,e),e.arguments,e,n.if(n.local_get(h.index,d),n.local_get(h.index,d),this.makeRetain(this.makeAllocation(o))),16);assert(this.skippedAutoreleases.has(T));var g=[n.local_set(h.index,T)];return this.makeFieldInitialization(o,g),a.isAny(16448)?(this.error(c.DiagnosticCode._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class,e.range),n.unreachable()):(a.set(192),this.currentType=m.Type.void,n.block(null,g))}var E,v,b=this.resolver.resolveExpression(e.expression,i);if(!b)return n.unreachable();switch(b.kind){case p.ElementKind.FUNCTION_PROTOTYPE:var I=b,x=e.typeArguments;if(I.hasDecorator(p.DecoratorFlags.BUILTIN))return this.compileCallExpressionBuiltin(I,e,r);var A=null;if(x){if(!I.is(u.CommonFlags.GENERIC))return this.error(c.DiagnosticCode.Type_0_is_not_generic,e.expression.range,I.internalName),n.unreachable();A=this.resolver.resolveFunctionInclTypeArguments(I,x,i.actualFunction.parent,f.makeMap(i.contextualTypeArguments),e)}else{if(I.is(u.CommonFlags.GENERIC)){for(var N=new Map,S=assert(I.typeParameterNodes),O=S.length,C=0;Cs&&!i)||(this.error(c.DiagnosticCode.Expected_0_arguments_but_got_1,n.range,s.toString(),r.toString()),!1)},r.prototype.checkUnsafe=function(e){this.options.noUnsafe&&!e.range.source.isLibrary&&this.error(c.DiagnosticCode.Expression_is_unsafe,e.range)},r.prototype.compileCallDirect=function(e,r,t,n,i){void 0===n&&(n=0),void 0===i&&(i=0);var a=r.length,s=e.signature;if(!this.checkCallSignature(s,a,0!=n,t))return this.currentType=s.returnType,this.module.unreachable();if(e.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(t),e.hasDecorator(p.DecoratorFlags.INLINE)){if(assert(!e.is(u.CommonFlags.TRAMPOLINE)),!this.currentInlineFunctions.includes(e)){this.currentInlineFunctions.push(e);var o=s.parameterTypes;assert(a<=o.length);for(var l=new Array(a),_=0;_=0;--f){var T=r[f],g=o[f],E=h.addScopedLocal(s.getParameterName(f),g,y);_.findUsedLocals(T,y),l.canOverflow(T,g)||h.setLocalFlag(E.index,_.LocalFlags.WRAPPED),h.isNonnull(T,g)&&h.setLocalFlag(E.index,_.LocalFlags.NONNULL),g.isManaged&&(this.skippedAutoreleases.has(T)||(T=this.makeRetain(T)),h.setLocalFlag(E.index,_.LocalFlags.RETAINED)),d.unshift(i.local_set(E.index,T))}if(t){var v=assert(e.parent);assert(v.kind==p.ElementKind.CLASS);var b=assert(e.signature.thisType),I=h.addScopedLocal(u.CommonSymbols.this_,b,y);d.unshift(i.local_set(I.index,t));var x=v.base;x&&h.addScopedAlias(u.CommonSymbols.super_,x.type,I.index)}else assert(!e.signature.thisType);this.currentFlow=h;for(f=a;fa){var s=t.toNativeType(),o=e.getAndFreeTempLocal(t);e.canOverflow(r,t)||e.setLocalFlag(o.index,_.LocalFlags.WRAPPED),e.isNonnull(r,t)&&e.setLocalFlag(o.index,_.LocalFlags.NONNULL);var c=this.module;return n[a-1]=c.local_set(o.index,r),n.push(c.local_get(o.index,s)),c.block(null,n,s)}return n.length>1?(n[a-1]=r,this.module.block(null,n,t.toNativeType())):r},r.prototype.finishAutoreleases=function(e,r){var t,n,i=this.module;if(e.is(32768)){for(var s=void 0;s=e.parent;)e=s;this.performAutoreleases(e,r,!1)}else try{for(var o=a(e.parentFunction.localsByIndex),c=o.next();!c.done;c=o.next()){var l=c.value,u=l.index;e.isAnyLocalFlag(u,_.LocalFlags.ANY_RETAINED)&&(e.unsetLocalFlag(u,_.LocalFlags.ANY_RETAINED),r.push(this.makeRelease(i.local_get(u,l.type.toNativeType()))))}}catch(e){t={error:e}}finally{try{c&&!c.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}},r.prototype.makeCallDirect=function(e,r,t,n,i){if(void 0===n&&(n=!1),void 0===i&&(i=!1),e.hasDecorator(p.DecoratorFlags.INLINE)){if(assert(!e.is(u.CommonFlags.TRAMPOLINE)),!this.currentInlineFunctions.includes(e)){var a;if(this.currentInlineFunctions.push(e),e.is(u.CommonFlags.INSTANCE)){var s=assert(r);assert(s.length),a=this.makeCallInline(e,s.slice(1),s[0],n)}else a=this.makeCallInline(e,r,0,n);return this.currentType.isManaged&&(i?this.skippedAutoreleases.add(a):a=this.makeAutorelease(a,this.currentFlow)),this.currentInlineFunctions.pop(),a}this.warning(c.DiagnosticCode.Function_0_cannot_be_inlined_into_itself,t.range,e.internalName)}var o=r?r.length:0,l=o,_=e.signature.requiredParameters,h=e.signature.parameterTypes.length,d=h;e.is(u.CommonFlags.INSTANCE)&&(++_,++d,--l),assert(o>=_);var f=this.module;if(!this.compileFunction(e))return f.unreachable();var T=e.signature.returnType,g=e.is(u.CommonFlags.MODULE_IMPORT);if(o=s),this.ensureFunctionType(e.parameterTypes,e.returnType,e.thisType);var l=this.module;if(iT)return this.error(c.DiagnosticCode.Expected_0_arguments_but_got_1,e.range,T.toString(),h.toString()),this.module.unreachable();for(var g=new Array(h),E=0;E=0),O.is(512)&&i.isLocalFlag(C,_.LocalFlags.NONNULL,!1)&&(O=O.nonNullableType),this.currentType=O,this.module.local_get(C,O.toNativeType());case p.ElementKind.GLOBAL:if(!this.compileGlobal(S))return this.module.unreachable();O=S.type;return assert(O!=m.Type.void),S.is(u.CommonFlags.INLINED)?this.compileInlineConstant(S,r,t):(this.currentType=O,this.module.global_get(S.internalName,O.toNativeType()));case p.ElementKind.ENUMVALUE:return S.is(u.CommonFlags.COMPILED)?(this.currentType=m.Type.i32,S.is(u.CommonFlags.INLINED)?(assert(1==S.constantValueKind),this.module.i32(i64_low(S.constantIntegerValue))):this.module.global_get(S.internalName,l.NativeType.I32)):(this.error(c.DiagnosticCode.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums,e.range),this.currentType=m.Type.i32,this.module.unreachable());case p.ElementKind.FUNCTION_PROTOTYPE:var k=this.resolver.resolveFunction(S,null,f.makeMap(i.contextualTypeArguments));if(!k||!this.compileFunction(k))return n.unreachable();var R=this.ensureFunctionTableEntry(k);return this.currentType=k.signature.type,this.module.i32(R)}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()},r.prototype.compileInstanceOfExpression=function(e,r,t){var n=this.module,i=this.compileExpression(e.expression,this.options.usizeType),a=this.currentType,s=this.resolver.resolveType(e.isType,this.currentFlow.actualFunction);if(this.currentType=m.Type.bool,!s)return n.unreachable();if(!s.is(256))return n.block(null,[n.drop(i),n.i32(a==s?1:0)],l.NativeType.I32);if(!a.is(256))return n.block(null,[n.drop(i),n.i32(0)],l.NativeType.I32);var o=a.toNativeType();if(a.is(512)&&!s.is(512)){if(a.nonNullableType.isAssignableTo(s))return n.binary(o==l.NativeType.I64?l.BinaryOp.NeI64:l.BinaryOp.NeI32,i,a.toNativeZero(n));if(s.isAssignableTo(a)){var u=this.program;if(!a.isUnmanaged&&!s.isUnmanaged){var p=this.currentFlow.getAndFreeTempLocal(a),_=assert(u.instanceofInstance);return this.compileFunction(_),n.if(n.unary(o==l.NativeType.I64?l.UnaryOp.EqzI64:l.UnaryOp.EqzI32,n.local_tee(p.index,i)),n.i32(0),this.makeCallDirect(_,[n.local_get(p.index,o),n.i32(s.classReference.id)],e))}this.error(c.DiagnosticCode.Operation_not_supported,e.range)}}else{if(a.isAssignableTo(s))return n.block(null,[this.convertExpression(i,a,m.Type.void,!1,!1,e.expression),n.i32(1)],l.NativeType.I32);if(s.isAssignableTo(a)){u=this.program;if(!a.isUnmanaged&&!s.isUnmanaged){p=this.currentFlow.getAndFreeTempLocal(a),_=assert(u.instanceofInstance);return this.compileFunction(_),n.if(n.unary(o==l.NativeType.I64?l.UnaryOp.EqzI64:l.UnaryOp.EqzI32,n.local_tee(p.index,i)),n.i32(0),this.makeCallDirect(_,[n.local_get(p.index,o),n.i32(s.classReference.id)],e))}this.error(c.DiagnosticCode.Operation_not_supported,e.range)}}return n.block(null,[n.drop(i),n.i32(0)],l.NativeType.I32)},r.prototype.compileLiteralExpression=function(e,r,t,n){void 0===n&&(n=!1);var i=this.module;switch(e.literalKind){case y.LiteralKind.ARRAY:assert(!n);var a=r.classReference;return a&&a.prototype==this.program.arrayPrototype?this.compileArrayLiteral(assert(a.typeArguments)[0],e.elementExpressions,t,e):(this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable());case y.LiteralKind.FLOAT:var s=e.value;return n&&(s=-s),r==m.Type.f32?i.f32(s):(this.currentType=m.Type.f64,i.f64(s));case y.LiteralKind.INTEGER:var o=e.value;n&&(o=i64_sub(i64_new(0),o));var l=this.resolver.determineIntegerLiteralType(o,r);switch(this.currentType=l,l.kind){case 4:if(!this.options.isWasm64)return i.i32(i64_low(o));case 3:return i.i64(i64_low(o),i64_high(o));case 9:if(!this.options.isWasm64)return i.i32(i64_low(o));case 8:return i.i64(i64_low(o),i64_high(o));case 11:return i.f32(i64_to_f32(o));case 12:return i.f64(i64_to_f64(o));default:return i.i32(i64_low(o))}case y.LiteralKind.STRING:return assert(!n),this.compileStringLiteral(e);case y.LiteralKind.OBJECT:return assert(!n),this.compileObjectLiteral(e,r)}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.currentType=r,i.unreachable()},r.prototype.compileStringLiteral=function(e){return this.ensureStaticString(e.value)},r.prototype.compileArrayLiteral=function(e,r,t,n){for(var i=this.module,a=this.program,s=assert(a.arrayPrototype),o=assert(this.resolver.resolveClass(s,[e])),u=assert(a.arrayBufferInstance),_=o.type,h=this.currentFlow,d=h.getTempLocal(_),y=h.getTempLocal(u.type),m=r.length,f=new Array(m),T=!0,g=e.toNativeType(),E=0;E",r.toString()),t.unreachable();var i=n.constructorInstance;if(i){if(i.signature.requiredParameters)return this.error(c.DiagnosticCode.Constructor_of_class_0_must_not_require_any_arguments,e.range,n.toString()),t.unreachable();if(i.is(u.CommonFlags.PRIVATE))return this.error(c.DiagnosticCode.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration,e.range,n.toString()),t.unreachable();if(i.is(u.CommonFlags.PROTECTED))return this.error(c.DiagnosticCode.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration,e.range,n.toString()),t.unreachable();i.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(e)}var a=e.names,s=a.length,o=e.values,l=n.members,_=!1,h=new Array(s+2),d=this.currentFlow.getAutoreleaseLocal(this.options.usizeType);assert(s==o.length);for(var y=0,m=s;yx)for(g=x;g=0);var _=this.compileExpression(assert(this.resolver.currentThisExpression),this.options.usizeType);return this.currentType=a.type,n.load(a.type.byteSize,a.type.is(5),_,a.type.toNativeType(),a.memoryOffset);case p.ElementKind.PROPERTY_PROTOTYPE:var h=a.getterPrototype;if(h){var d=this.resolver.resolveFunction(h,null);if(d)return this.compileCallDirect(d,[],e,0)}return n.unreachable();case p.ElementKind.PROPERTY:var y=assert(a.getterInstance);return this.compileCallDirect(y,[],e,this.compileExpression(assert(this.resolver.currentThisExpression),this.options.usizeType));case p.ElementKind.FUNCTION_PROTOTYPE:var T=a;if(T.is(u.CommonFlags.STATIC)){var g=this.compileFunctionUsingTypeArguments(T,[],f.makeMap(),e);return null==g?n.unreachable():(this.currentType=g.type,n.i32(this.ensureFunctionTableEntry(g)))}return this.error(c.DiagnosticCode.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set,e.range,T.name),n.unreachable()}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),n.unreachable()},r.prototype.compileTernaryExpression=function(e,r,t){var n=e.ifThen,i=e.ifElse,a=this.currentFlow,s=this.module.precomputeExpression(this.makeIsTrueish(this.compileExpression(e.condition,m.Type.bool),this.currentType));if(l.getExpressionId(s)==l.ExpressionId.Const&&l.getExpressionType(s)==l.NativeType.I32)return l.getConstValueI32(s)?this.compileExpression(n,r):this.compileExpression(i,r);var o=16&t,u=a.fork();this.currentFlow=u;var p=this.compileExpression(n,r,o),_=this.currentType,h=this.skippedAutoreleases.has(p),d=a.fork();this.currentFlow=d;var y=this.compileExpression(i,r,o),f=this.currentType,T=this.skippedAutoreleases.has(y),g=m.Type.commonDenominator(_,f,!1);if(!g)return this.error(c.DiagnosticCode.Type_0_is_not_assignable_to_type_1,i.range,f.toString(),_.toString()),this.currentType=r,this.module.unreachable();p=this.convertExpression(p,_,g,!1,!1,n),y=this.convertExpression(y,f,g,!1,!1,i),this.currentType=g,h!=T?h?(y=this.makeRetain(y),T=!0):(p=this.makeRetain(p),h=!0):!h&&g.isManaged&&(p=this.moveAutorelease(p,u,a),y=this.moveAutorelease(y,d,a)),p=this.performAutoreleasesWithValue(u,p,g),u.freeScopedLocals(),y=this.performAutoreleasesWithValue(d,y,g),d.freeScopedLocals(),this.currentFlow=a,a.inheritMutual(u,d);var E=this.module.if(s,p,y);return assert(h==T),h&&this.skippedAutoreleases.add(E),E},r.prototype.compileUnaryPostfixExpression=function(e,r,t){var n=this.module,i=this.currentFlow,a=this.compileExpression(e.operand,r.exceptVoid,0);if(l.getExpressionId(a)==l.ExpressionId.Unreachable)return a;var s,o=null;switch(r!=m.Type.void&&(o=i.getTempLocal(this.currentType),a=n.local_tee(o.index,a)),e.operator){case d.Token.PLUS_PLUS:switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:s=n.binary(l.BinaryOp.AddI32,a,n.i32(1));break;case 9:if(this.currentType.is(256)){if(_=this.currentType.classReference)if(h=_.lookupOverload(p.OperatorKind.POSTFIX_INC)){s=this.compileUnaryOverload(h,e.operand,a,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),n.unreachable()}case 4:var u=this.options;s=n.binary(u.isWasm64?l.BinaryOp.AddI64:l.BinaryOp.AddI32,a,this.currentType.toNativeOne(n));break;case 3:case 8:s=n.binary(l.BinaryOp.AddI64,a,n.i64(1));break;case 11:s=n.binary(l.BinaryOp.AddF32,a,n.f32(1));break;case 12:s=n.binary(l.BinaryOp.AddF64,a,n.f64(1));break;default:return assert(!1),n.unreachable()}break;case d.Token.MINUS_MINUS:switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:s=n.binary(l.BinaryOp.SubI32,a,n.i32(1));break;case 9:if(this.currentType.is(256)){var _,h;if(_=this.currentType.classReference)if(h=_.lookupOverload(p.OperatorKind.POSTFIX_DEC)){s=this.compileUnaryOverload(h,e.operand,a,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),n.unreachable()}case 4:u=this.options;s=n.binary(u.isWasm64?l.BinaryOp.SubI64:l.BinaryOp.SubI32,a,this.currentType.toNativeOne(n));break;case 3:case 8:s=n.binary(l.BinaryOp.SubI64,a,n.i64(1));break;case 11:s=n.binary(l.BinaryOp.SubF32,a,n.f32(1));break;case 12:s=n.binary(l.BinaryOp.SubF64,a,n.f64(1));break;default:return assert(!1),n.unreachable()}break;default:return assert(!1),n.unreachable()}var y=this.resolver,f=y.resolveExpression(e.operand,i);if(!o)return this.currentType=m.Type.void,f?this.makeAssignment(f,s,e.operand,y.currentThisExpression,y.currentElementExpression,!1):n.unreachable();if(!f)return n.unreachable();var T=this.makeAssignment(f,s,e.operand,y.currentThisExpression,y.currentElementExpression,!1);this.currentType=o.type,i.freeTempLocal(o);var g=o.type.toNativeType();return n.block(null,[T,n.local_get(o.index,g)],g)},r.prototype.compileUnaryPrefixExpression=function(e,r,t){var n,i=this.module,a=!1;switch(e.operator){case d.Token.PLUS:if(n=this.compileExpression(e.operand,r.exceptVoid,0),this.currentType.is(256)){if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.PLUS)){n=this.compileUnaryOverload(o,e.operand,n,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable()}break;case d.Token.MINUS:if(e.operand.kind==y.NodeKind.LITERAL&&(e.operand.literalKind==y.LiteralKind.INTEGER||e.operand.literalKind==y.LiteralKind.FLOAT)){n=this.compileLiteralExpression(e.operand,r,0,!0),this.options.sourceMap&&this.addDebugLocation(n,e.range);break}if(n=this.compileExpression(e.operand,r.exceptVoid,0),this.currentType.is(256)){if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.MINUS)){n=this.compileUnaryOverload(o,e.operand,n,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable()}switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:n=i.binary(l.BinaryOp.SubI32,i.i32(0),n);break;case 9:case 4:n=i.binary(this.options.isWasm64?l.BinaryOp.SubI64:l.BinaryOp.SubI32,this.currentType.toNativeZero(i),n);break;case 3:case 8:n=i.binary(l.BinaryOp.SubI64,i.i64(0),n);break;case 11:n=i.unary(l.UnaryOp.NegF32,n);break;case 12:n=i.unary(l.UnaryOp.NegF64,n);break;default:assert(!1),n=i.unreachable()}break;case d.Token.PLUS_PLUS:if(a=!0,n=this.compileExpression(e.operand,r.exceptVoid,0),this.currentType.is(256)){if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.PREFIX_INC)){n=this.compileUnaryOverload(o,e.operand,n,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable()}switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:n=i.binary(l.BinaryOp.AddI32,n,this.module.i32(1));break;case 9:case 4:n=i.binary(this.options.isWasm64?l.BinaryOp.AddI64:l.BinaryOp.AddI32,n,this.currentType.toNativeOne(i));break;case 3:case 8:n=i.binary(l.BinaryOp.AddI64,n,i.i64(1));break;case 11:n=i.binary(l.BinaryOp.AddF32,n,i.f32(1));break;case 12:n=i.binary(l.BinaryOp.AddF64,n,i.f64(1));break;default:assert(!1),n=i.unreachable()}break;case d.Token.MINUS_MINUS:if(a=!0,n=this.compileExpression(e.operand,r.exceptVoid,0),this.currentType.is(256)){if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.PREFIX_DEC)){n=this.compileUnaryOverload(o,e.operand,n,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable()}switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:n=i.binary(l.BinaryOp.SubI32,n,i.i32(1));break;case 9:case 4:n=i.binary(this.options.isWasm64?l.BinaryOp.SubI64:l.BinaryOp.SubI32,n,this.currentType.toNativeOne(i));break;case 3:case 8:n=i.binary(l.BinaryOp.SubI64,n,i.i64(1));break;case 11:n=i.binary(l.BinaryOp.SubF32,n,i.f32(1));break;case 12:n=i.binary(l.BinaryOp.SubF64,n,i.f64(1));break;default:assert(!1),n=i.unreachable()}break;case d.Token.EXCLAMATION:if(n=this.compileExpression(e.operand,r.exceptVoid,0),this.currentType.is(256))if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.NOT)){n=this.compileUnaryOverload(o,e.operand,n,e);break}n=this.makeIsFalseish(n,this.currentType),this.currentType=m.Type.bool;break;case d.Token.TILDE:if(n=this.compileExpression(e.operand,r==m.Type.void?m.Type.i32:r.is(8)?m.Type.i64:r,0),this.currentType.is(256)){var s,o;if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.BITWISE_NOT)){n=this.compileUnaryOverload(o,e.operand,n,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable()}switch(n=this.convertExpression(n,this.currentType,this.currentType.intType,!1,!1,e.operand),this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:n=i.binary(l.BinaryOp.XorI32,n,i.i32(-1));break;case 9:case 4:n=i.binary(this.options.isWasm64?l.BinaryOp.XorI64:l.BinaryOp.XorI32,n,this.currentType.toNativeNegOne(i));break;case 3:case 8:n=i.binary(l.BinaryOp.XorI64,n,i.i64(-1,-1));break;default:assert(!1),n=i.unreachable()}break;case d.Token.TYPEOF:return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable();default:return assert(!1),i.unreachable()}if(!a)return n;var u=this.resolver,_=u.resolveExpression(e.operand,this.currentFlow);return _?this.makeAssignment(_,n,e.operand,u.currentThisExpression,u.currentElementExpression,r!=m.Type.void):i.unreachable()},r.prototype.ensureSmallIntegerWrap=function(e,r){var t=this.module,n=this.currentFlow;switch(r.kind){case 0:n.canOverflow(e,r)&&(e=this.options.hasFeature(1)?t.unary(l.UnaryOp.ExtendI8ToI32,e):t.binary(l.BinaryOp.ShrI32,t.binary(l.BinaryOp.ShlI32,e,t.i32(24)),t.i32(24)));break;case 1:n.canOverflow(e,r)&&(e=this.options.hasFeature(1)?t.unary(l.UnaryOp.ExtendI16ToI32,e):t.binary(l.BinaryOp.ShrI32,t.binary(l.BinaryOp.ShlI32,e,t.i32(16)),t.i32(16)));break;case 5:n.canOverflow(e,r)&&(e=t.binary(l.BinaryOp.AndI32,e,t.i32(255)));break;case 6:n.canOverflow(e,r)&&(e=t.binary(l.BinaryOp.AndI32,e,t.i32(65535)));break;case 10:n.canOverflow(e,r)&&(e=t.binary(l.BinaryOp.NeI32,e,t.i32(0)))}return e},r.prototype.addDebugLocation=function(e,r){var t=this.currentFlow.parentFunction,n=r.source;n.debugInfoIndex<0&&(n.debugInfoIndex=this.module.addDebugInfoFile(n.normalizedPath)),r.debugInfoRef=e,t.debugLocations.push(r)},r.prototype.makeIsFalseish=function(e,r){var t=this.module;switch(r.kind){case 0:case 1:case 5:case 6:case 10:e=this.ensureSmallIntegerWrap(e,r);case 2:case 7:return t.unary(l.UnaryOp.EqzI32,e);case 3:case 8:return t.unary(l.UnaryOp.EqzI64,e);case 9:this.skippedAutoreleases.has(e)&&(e=this.makeAutorelease(e));case 4:return t.unary(64==r.size?l.UnaryOp.EqzI64:l.UnaryOp.EqzI32,e);case 11:return t.binary(l.BinaryOp.EqF32,e,t.f32(0));case 12:return t.binary(l.BinaryOp.EqF64,e,t.f64(0));default:return assert(!1),t.i32(1)}},r.prototype.makeIsTrueish=function(e,r){var t=this.module;switch(r.kind){case 0:case 1:case 5:case 6:e=this.ensureSmallIntegerWrap(e,r);case 10:case 2:case 7:return e;case 3:case 8:return t.binary(l.BinaryOp.NeI64,e,t.i64(0));case 9:this.skippedAutoreleases.has(e)&&(e=this.makeAutorelease(e));case 4:return 64==r.size?t.binary(l.BinaryOp.NeI64,e,t.i64(0)):e;case 11:return t.binary(l.BinaryOp.NeF32,e,t.f32(0));case 12:return t.binary(l.BinaryOp.NeF64,e,t.f64(0));default:return assert(!1),t.i32(0)}},r.prototype.makeAllocation=function(e){var r=this.program;assert(e.program==r);var t=this.module,n=this.options;this.currentType=e.type;var i=r.allocInstance;return this.compileFunction(i),t.call(i.internalName,[n.isWasm64?t.i64(e.currentMemoryOffset):t.i32(e.currentMemoryOffset),t.i32(e.hasDecorator(p.DecoratorFlags.UNMANAGED)?0:e.id)],n.nativeSizeType)},r.prototype.makeFieldInitialization=function(e,r){var t,n;void 0===r&&(r=[]);var i=e.members;if(!i)return[];var s=this.module,o=this.currentFlow,c=o.is(32768),l=c?assert(o.lookupLocal(u.CommonSymbols.this_)).index:0,_=this.options.nativeSizeType;try{for(var h=a(i.values()),d=h.next();!d.done;d=h.next()){var y=d.value;if(y.kind==p.ElementKind.FIELD&&y.parent==e){var m=y;assert(!m.isAny(u.CommonFlags.CONST));var f=m.type,T=f.toNativeType(),g=m.prototype,E=g.initializerNode,v=g.parameterIndex,b=void 0;E?(b=this.compileExpression(E,f,17),f.isManaged&&!this.skippedAutoreleases.has(b)&&(b=this.makeRetain(b))):v>=0?(b=s.local_get(c?assert(o.lookupLocal(m.name)).index:1+v,T),f.isManaged&&(b=this.makeRetain(b))):b=f.toNativeZero(s),r.push(s.store(f.byteSize,s.local_get(l,_),b,T,m.memoryOffset))}}}catch(e){t={error:e}}finally{try{d&&!d.done&&(n=h.return)&&n.call(h)}finally{if(t)throw t.error}}return r},r.prototype.makeInstanceOfClass=function(e,r){var t=this.module,n=this.currentFlow,i=n.getTempLocal(m.Type.i32),a=t.load(4,!1,t.binary(l.BinaryOp.SubI32,e,t.i32(this.program.runtimeHeaderSize)),l.NativeType.I32),s="instanceof_"+r.name+"|"+n.pushBreakLabel(),o=[];return o.push(t.drop(t.br(s,t.binary(l.BinaryOp.EqI32,t.local_tee(i.index,a),t.i32(r.id)),t.i32(1)))),o.push(t.i32(0)),n.freeTempLocal(i),n.popBreakLabel(),t.block(s,o,l.NativeType.I32)},r}(c.DiagnosticEmitter);function b(e,r){if(g=r.range.source.simplePath,E=p.mangleInternalName(e.name,e.parent,e.is(u.CommonFlags.INSTANCE),!0),e.hasDecorator(p.DecoratorFlags.EXTERNAL)){var t=e.program,n=assert(y.findDecorator(y.DecoratorKind.EXTERNAL,r.decorators)),i=n.arguments;if(i&&i.length){var a=i[0];a.kind==y.NodeKind.LITERAL&&a.literalKind==y.LiteralKind.STRING?(E=a.value,i.length>=2&&((a=i[1]).kind==y.NodeKind.LITERAL&&a.literalKind==y.LiteralKind.STRING?(g=E,E=a.value,i.length>2&&t.error(c.DiagnosticCode.Expected_0_arguments_but_got_1,n.range,"2",i.length.toString())):t.error(c.DiagnosticCode.String_literal_expected,a.range))):t.error(c.DiagnosticCode.String_literal_expected,a.range)}else t.error(c.DiagnosticCode.Expected_at_least_0_arguments_but_got_1,n.range,"1","0")}}function I(e,r,t){var n=r.length;if(0==n)return e.nop();if(1==n){var i=r[0];if(l.getExpressionType(i)==t)return i;if(l.getExpressionId(i)==l.ExpressionId.Block){for(var a=l.getBlockChildCount(i),s=new Array(a),o=0;o=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0});var a,s=t(11),o=t(2),c=t(3),l=t(6),u=t(5),p=t(4),_=t(10),h=t(9),d=t(0),y=t(1);function m(e,r,t,n,i,s,d){void 0===d&&(d=!1);var m=e.module,g=!1;switch(r.internalName){case a.isInteger:var S=E(e,t,n,s);return e.currentType=l.Type.bool,S?S.is(4)&&!S.is(256)?m.i32(1):m.i32(0):m.unreachable();case a.isFloat:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?S.is(8)?m.i32(1):m.i32(0):m.unreachable();case a.isBoolean:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?S==l.Type.bool?m.i32(1):m.i32(0):m.unreachable();case a.isSigned:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?S.is(1)?m.i32(1):m.i32(0):m.unreachable();case a.isReference:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?S.is(256)?m.i32(1):m.i32(0):m.unreachable();case a.isString:S=E(e,t,n,s);if(e.currentType=l.Type.bool,!S)return m.unreachable();if(B=S.classReference){var O=e.program.stringInstance;if(O&&B.isAssignableTo(O))return m.i32(1)}return m.i32(0);case a.isArray:S=E(e,t,n,s);if(e.currentType=l.Type.bool,!S)return m.unreachable();if(!(we=S.classReference))return m.i32(0);var C=we.prototype;return m.i32(C.extends(e.program.arrayPrototype)?1:0);case a.isArrayLike:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?(we=S.classReference)?m.i32(we.isArrayLike?1:0):m.i32(0):m.unreachable();case a.isFunction:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?m.i32(S.signatureReference?1:0):m.unreachable();case a.isNullable:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?m.i32(S.is(512)?1:0):m.unreachable();case a.isDefined:if(e.currentType=l.Type.bool,x(t,s,r)|A(n,1,s,e))return m.unreachable();var k=e.resolver.resolveExpression(n[0],e.currentFlow,l.Type.auto,h.ReportMode.SWALLOW);return m.i32(k?1:0);case a.isConstant:if(e.currentType=l.Type.bool,x(t,s,r)|A(n,1,s,e))return m.unreachable();var R=e.compileExpression(n[0],l.Type.auto);return e.currentType=l.Type.bool,m.i32(u.getExpressionId(R)==u.ExpressionId.Const?1:0);case a.isManaged:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?m.i32(S.isManaged?1:0):m.unreachable();case a.isVoid:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?m.i32(14==S.kind?1:0):m.unreachable();case a.lengthof:S=E(e,t,n,s);if(e.currentType=l.Type.i32,!S)return m.unreachable();if(!(Ue=S.signatureReference))return e.error(o.DiagnosticCode.Type_0_has_no_call_signatures,s.range,"1",(t?t.length:1).toString(10)),m.unreachable();var L=Ue.parameterNames;return m.i32(L?L.length:0);case a.sizeof:if(e.currentType=e.options.usizeType,b(t,s,e)|A(n,0,s,e))return m.unreachable();var F=t[0].byteSize,R=void 0;return e.options.isWasm64?i.is(4)&&i.size<=32?(e.currentType=l.Type.u32,R=m.i32(F)):R=m.i64(F,0):i.is(4)&&64==i.size?(e.currentType=l.Type.u64,R=m.i64(F,0)):R=m.i32(F),R;case a.alignof:if(e.currentType=e.options.usizeType,b(t,s,e)|A(n,0,s,e))return m.unreachable();F=t[0].byteSize;assert(y.isPowerOf2(F));var D=ctz(F);R=void 0;return e.options.isWasm64?i.is(4)&&i.size<=32?(e.currentType=l.Type.u32,R=m.i32(D)):R=m.i64(D,0):i.is(4)&&64==i.size?(e.currentType=l.Type.u64,R=m.i64(D,0)):R=m.i32(D),R;case a.offsetof:if(e.currentType=e.options.usizeType,b(t,s,e)|N(n,0,1,s,e))return m.unreachable();var B;if(!(B=t[0].classReference))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();var P=void 0;if(n.length){if(n[0].kind!=c.NodeKind.LITERAL||n[0].literalKind!=c.LiteralKind.STRING)return e.error(o.DiagnosticCode.String_literal_expected,n[0].range),m.unreachable();var w=n[0].value,U=B.members?B.members.get(w):null;if(!U||U.kind!=p.ElementKind.FIELD)return e.error(o.DiagnosticCode.Type_0_has_no_property_1,n[0].range,B.internalName,w),m.unreachable();P=U.memoryOffset}else P=B.currentMemoryOffset;return e.options.isWasm64?i.is(4)&&i.size<=32?(e.currentType=l.Type.u32,m.i32(P)):m.i64(P):i.is(4)&&64==i.size?(e.currentType=l.Type.u64,m.i64(P)):m.i32(P);case a.nameof:var M=E(e,t,n,s);if(!M)return m.unreachable();var V=void 0;if(M.is(256))(we=M.classReference)?V=we.name:(assert(M.signatureReference),V="Function");else switch(M.kind){case 10:V="bool";break;case 0:V="i8";break;case 5:V="u8";break;case 1:V="i16";break;case 6:V="u16";break;case 2:V="i32";break;case 7:V="u32";break;case 11:V="f32";break;case 3:V="i64";break;case 8:V="u64";break;case 12:V="f64";break;case 4:V="isize";break;case 9:V="usize";break;case 13:V="v128";break;default:assert(!1);case 14:V="void"}return e.ensureStaticString(V);case a.clz:case a.ctz:case a.popcnt:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();var G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.i32,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();var K=-1;switch(r.internalName){case a.clz:switch(S.kind){case 10:case 0:case 5:case 1:case 6:case 2:case 7:K=u.UnaryOp.ClzI32;break;case 9:case 4:K=e.options.isWasm64?u.UnaryOp.ClzI64:u.UnaryOp.ClzI32;break;case 3:case 8:K=u.UnaryOp.ClzI64}break;case a.ctz:switch(S.kind){case 10:case 0:case 5:case 1:case 6:case 2:case 7:K=u.UnaryOp.CtzI32;break;case 9:case 4:K=e.options.isWasm64?u.UnaryOp.CtzI64:u.UnaryOp.CtzI32;break;case 3:case 8:K=u.UnaryOp.CtzI64}break;case a.popcnt:switch(e.currentType.kind){case 10:case 0:case 5:case 1:case 6:case 2:case 7:K=u.UnaryOp.PopcntI32;break;case 9:case 4:K=e.options.isWasm64?u.UnaryOp.PopcntI64:u.UnaryOp.PopcntI32;break;case 3:case 8:K=u.UnaryOp.PopcntI64}}return-1==K?(e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable()):m.unary(K,G);case a.rotl:if(I(t,s,e,!0)|A(n,2,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.i32,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();var z=e.compileExpression(n[1],S,1);R=void 0;switch(S.kind){case 0:case 1:case 5:case 6:case 10:R=e.ensureSmallIntegerWrap(m.binary(u.BinaryOp.RotlI32,G,z),S);case 2:case 7:R=m.binary(u.BinaryOp.RotlI32,G,z);break;case 9:case 4:R=m.binary(e.options.isWasm64?u.BinaryOp.RotlI64:u.BinaryOp.RotlI32,G,z);break;case 3:case 8:R=m.binary(u.BinaryOp.RotlI64,G,z);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.rotr:if(I(t,s,e,!0)|A(n,2,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.i32,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();z=e.compileExpression(n[1],S,1),R=void 0;switch(S.kind){case 0:case 1:case 5:case 6:case 10:R=e.ensureSmallIntegerWrap(m.binary(u.BinaryOp.RotrI32,G,z),S);break;case 2:case 7:R=m.binary(u.BinaryOp.RotrI32,G,z);break;case 9:case 4:R=m.binary(e.options.isWasm64?u.BinaryOp.RotrI64:u.BinaryOp.RotrI32,G,z);break;case 3:case 8:R=m.binary(u.BinaryOp.RotrI64,G,z);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.abs:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.f64,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();R=void 0;switch(S.kind){case 0:case 1:case 2:var Y=(q=e.currentFlow).getTempLocal(l.Type.i32),H=q.getAndFreeTempLocal(l.Type.i32).index,W=Y.index;R=m.binary(u.BinaryOp.XorI32,m.binary(u.BinaryOp.AddI32,m.local_tee(H,m.binary(u.BinaryOp.ShrI32,m.local_tee(W,G),m.i32(31))),m.local_get(W,u.NativeType.I32)),m.local_get(H,u.NativeType.I32)),q.freeTempLocal(Y);break;case 4:var X=e.options,q=e.currentFlow,Q=X.isWasm64;Y=q.getTempLocal(X.usizeType),H=q.getAndFreeTempLocal(X.usizeType).index,W=Y.index;R=m.binary(Q?u.BinaryOp.XorI64:u.BinaryOp.XorI32,m.binary(Q?u.BinaryOp.AddI64:u.BinaryOp.AddI32,m.local_tee(H,m.binary(Q?u.BinaryOp.ShrI64:u.BinaryOp.ShrI32,m.local_tee(W,G),Q?m.i64(63):m.i32(31))),m.local_get(W,X.nativeSizeType)),m.local_get(H,X.nativeSizeType)),q.freeTempLocal(Y);break;case 3:Y=(q=e.currentFlow).getTempLocal(l.Type.i64),H=q.getAndFreeTempLocal(l.Type.i64).index,W=Y.index;R=m.binary(u.BinaryOp.XorI64,m.binary(u.BinaryOp.AddI64,m.local_tee(H,m.binary(u.BinaryOp.ShrI64,m.local_tee(W,G),m.i64(63))),m.local_get(W,u.NativeType.I64)),m.local_get(H,u.NativeType.I64)),q.freeTempLocal(Y);break;case 9:case 5:case 6:case 7:case 8:case 10:R=G;break;case 11:R=m.unary(u.UnaryOp.AbsF32,G);break;case 12:R=m.unary(u.UnaryOp.AbsF64,G);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.max:if(I(t,s,e,!0)|A(n,2,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.f64,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();z=e.compileExpression(n[1],S,5),K=void 0;switch(S.kind){case 0:case 1:case 2:K=u.BinaryOp.GtI32;break;case 5:case 6:case 7:case 10:K=u.BinaryOp.GtU32;break;case 3:K=u.BinaryOp.GtI64;break;case 8:K=u.BinaryOp.GtU64;break;case 4:K=e.options.isWasm64?u.BinaryOp.GtI64:u.BinaryOp.GtI32;break;case 9:K=e.options.isWasm64?u.BinaryOp.GtU64:u.BinaryOp.GtU32;break;case 11:return m.binary(u.BinaryOp.MaxF32,G,z);case 12:return m.binary(u.BinaryOp.MaxF64,G,z);default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable()}q=e.currentFlow;var j=S.toNativeType(),Z=q.getTempLocal(S);q.setLocalFlag(Z.index,_.LocalFlags.WRAPPED);Y=q.getAndFreeTempLocal(S);return q.setLocalFlag(Y.index,_.LocalFlags.WRAPPED),q.freeTempLocal(Z),m.select(m.local_tee(Z.index,G),m.local_tee(Y.index,z),m.binary(K,m.local_get(Z.index,j),m.local_get(Y.index,j)));case a.min:if(I(t,s,e,!0)|A(n,2,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.f64,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();z=e.compileExpression(n[1],S,5),K=void 0;switch(S.kind){case 0:case 1:case 2:K=u.BinaryOp.LtI32;break;case 5:case 6:case 7:case 10:K=u.BinaryOp.LtU32;break;case 3:K=u.BinaryOp.LtI64;break;case 8:K=u.BinaryOp.LtU64;break;case 4:K=e.options.isWasm64?u.BinaryOp.LtI64:u.BinaryOp.LtI32;break;case 9:K=e.options.isWasm64?u.BinaryOp.LtU64:u.BinaryOp.LtU32;break;case 11:return m.binary(u.BinaryOp.MinF32,G,z);case 12:return m.binary(u.BinaryOp.MinF64,G,z);default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable()}q=e.currentFlow,j=S.toNativeType(),Z=q.getTempLocal(S);q.setLocalFlag(Z.index,_.LocalFlags.WRAPPED);Y=q.getAndFreeTempLocal(S);return q.setLocalFlag(Y.index,_.LocalFlags.WRAPPED),q.freeTempLocal(Z),m.select(m.local_tee(Z.index,G),m.local_tee(Y.index,z),m.binary(K,m.local_get(Z.index,j),m.local_get(Y.index,j)));case a.ceil:case a.floor:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],1):e.compileExpression(n[0],l.Type.f64,0);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();K=void 0;switch(S.kind){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:return G;case 11:K=r.internalName==a.ceil?u.UnaryOp.CeilF32:u.UnaryOp.FloorF32;break;case 12:K=r.internalName==a.ceil?u.UnaryOp.CeilF64:u.UnaryOp.FloorF64;break;default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable()}return m.unary(K,G);case a.copysign:if(I(t,s,e,!0)|A(n,2,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],1):e.compileExpression(n[0],l.Type.f64,0);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();z=e.compileExpression(n[1],S,1),K=void 0;switch(S.kind){case 11:K=u.BinaryOp.CopysignF32;break;case 12:K=u.BinaryOp.CopysignF64;break;default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable()}return m.binary(K,G,z);case a.nearest:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],1):e.compileExpression(n[0],l.Type.f64,0);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();R=void 0;switch(S.kind){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:R=G;break;case 11:R=m.unary(u.UnaryOp.NearestF32,G);break;case 12:R=m.unary(u.UnaryOp.NearestF64,G);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.reinterpret:if(b(t,s,e,!0)|A(n,1,s,e))return m.unreachable();if((S=t[0]).is(256))return e.currentType=S,e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();R=void 0;switch(S.kind){case 2:case 7:G=e.compileExpression(n[0],l.Type.f32,1);R=m.unary(u.UnaryOp.ReinterpretF32,G);break;case 3:case 8:G=e.compileExpression(n[0],l.Type.f64,1);R=m.unary(u.UnaryOp.ReinterpretF64,G);break;case 4:case 9:G=e.compileExpression(n[0],e.options.isWasm64?l.Type.f64:l.Type.f32,1);R=m.unary(e.options.isWasm64?u.UnaryOp.ReinterpretF64:u.UnaryOp.ReinterpretF32,G);break;case 11:G=e.compileExpression(n[0],l.Type.i32,1);R=m.unary(u.UnaryOp.ReinterpretI32,G);break;case 12:G=e.compileExpression(n[0],l.Type.i64,1);R=m.unary(u.UnaryOp.ReinterpretI64,G);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return e.currentType=S,R;case a.sqrt:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],1):e.compileExpression(n[0],l.Type.f64,0);if((S=e.currentType).is(256))return e.currentType=S,e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();R=void 0;switch(S.kind){case 11:R=m.unary(u.UnaryOp.SqrtF32,G);break;case 12:R=m.unary(u.UnaryOp.SqrtF64,G);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.trunc:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],1):e.compileExpression(n[0],l.Type.f64,0);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.range),m.unreachable();R=void 0;switch(S.kind){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:R=G;break;case 11:R=m.unary(u.UnaryOp.TruncF32,G);break;case 12:R=m.unary(u.UnaryOp.TruncF64,G);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.load:if(b(t,s,e,!0)|N(n,1,3,s,e))return m.unreachable();S=t[0];var J=i!=l.Type.auto&&S.is(4)&&i.is(4)&&i.size>S.size?i:S;G=e.compileExpression(n[0],e.options.usizeType,1);if((te=(he=n.length)>=2?v(n[1],e):0)<0)return e.currentType=J,m.unreachable();var $=void 0,ee=S.byteSize;if(3==he){if(($=v(n[2],e))<0)return e.currentType=J,m.unreachable();if($>ee)return e.error(o.DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,n[2].range,"Alignment","0",ee.toString()),e.currentType=J,m.unreachable();if(!y.isPowerOf2($))return e.error(o.DiagnosticCode._0_must_be_a_power_of_two,n[2].range,"Alignment"),e.currentType=J,m.unreachable()}else $=ee;return e.currentType=J,m.load(S.byteSize,S.is(5),G,J.toNativeType(),te,$);case a.store:if(e.currentType=l.Type.void,b(t,s,e)|N(n,2,4,s,e))return m.unreachable();S=t[0],G=e.compileExpression(n[0],e.options.usizeType,1),z=d?e.compileExpression(n[1],i,1):e.compileExpression(n[1],S,S.is(4)?0:1);var re=e.currentType;if(S.is(4)&&(!re.is(4)||re.size=3?v(n[2],e):0)<0)return e.currentType=l.Type.void,m.unreachable();$=void 0,ee=S.byteSize;if(4==n.length){if(($=v(n[3],e))<0)return e.currentType=l.Type.void,m.unreachable();if($>ee)return e.error(o.DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,n[3].range,"Alignment","0",ee.toString()),e.currentType=l.Type.void,m.unreachable();if(!y.isPowerOf2($))return e.error(o.DiagnosticCode._0_must_be_a_power_of_two,n[3].range,"Alignment"),e.currentType=l.Type.void,m.unreachable()}else $=ee;return e.currentType=l.Type.void,m.store(S.byteSize,G,z,re.toNativeType(),te,$);case a.atomic_load:if(!e.options.hasFeature(16))break;if(b(t,s,e,!0)|N(n,1,2,s,e))return m.unreachable();J=(S=t[0]).is(4)&&i.is(4)&&i.size>S.size?i:S;if(!S.is(4))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=J,m.unreachable();G=e.compileExpression(n[0],e.options.usizeType,1);return(te=2==n.length?v(n[1],e):0)<0?(e.currentType=J,m.unreachable()):(e.currentType=J,m.atomic_load(S.byteSize,G,J.toNativeType(),te));case a.atomic_store:if(!e.options.hasFeature(16))break;if(e.currentType=l.Type.void,b(t,s,e)|N(n,2,3,s,e))return m.unreachable();if(!(S=t[0]).is(4)||S.size<8)return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();G=e.compileExpression(n[0],e.options.usizeType,1),z=d?e.compileExpression(n[1],i,1):e.compileExpression(n[1],S,S.is(4)?0:1),re=e.currentType;return S.is(4)&&(!re.is(4)||re.size=0&&beOe?(e.error(o.DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,n[1].range,"Lane index","0",Oe.toString()),m.unreachable()):m.simd_extract(K,G,Le);case a.v128_replace_lane:if(!e.options.hasFeature(8))break;if(b(t,s,e)|A(n,3,s,e))return e.currentType=l.Type.v128,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();K=void 0;switch(S.kind){case 0:case 5:K=u.SIMDReplaceOp.ReplaceLaneVecI8x16;break;case 1:case 6:K=u.SIMDReplaceOp.ReplaceLaneVecI16x8;break;case 2:case 7:K=u.SIMDReplaceOp.ReplaceLaneVecI32x4;break;case 3:case 8:K=u.SIMDReplaceOp.ReplaceLaneVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.SIMDReplaceOp.ReplaceLaneVecI64x2:u.SIMDReplaceOp.ReplaceLaneVecI32x4;break;case 11:K=u.SIMDReplaceOp.ReplaceLaneVecF32x4;break;case 12:K=u.SIMDReplaceOp.ReplaceLaneVecF64x2;break;default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable()}G=e.compileExpression(n[0],l.Type.v128,1),z=e.precomputeExpression(n[1],l.Type.u8,1);if(u.getExpressionId(z)!=u.ExpressionId.Const)return e.error(o.DiagnosticCode.Expression_must_be_a_compile_time_constant,n[1].range),e.currentType=l.Type.v128,m.unreachable();assert(u.getExpressionType(z)==u.NativeType.I32);Oe=16/S.byteSize-1;if((Le=u.getConstValueI32(z))<0||Le>Oe)return e.error(o.DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,n[1].range,"Lane index","0",Oe.toString()),m.unreachable();ne=e.compileExpression(n[2],S,1);return e.currentType=l.Type.v128,m.simd_replace(K,G,Le,ne);case a.v128_shuffle:if(!e.options.hasFeature(8))break;if(b(t,s,e))return e.currentType=l.Type.v128,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();var Ce=S.byteSize,ke=16/Ce;if(assert(isInteger(ke)&&y.isPowerOf2(ke)),A(n,2+ke,s,e))return e.currentType=l.Type.v128,m.unreachable();switch(S.kind){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 11:case 12:break;default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable()}G=e.compileExpression(n[0],l.Type.v128,1),z=e.compileExpression(n[1],l.Type.v128,1);var Re=new Uint8Array(16);for(Oe=(ke<<1)-1,Te=0;TeOe)return e.error(o.DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,Fe.range,"Lane index","0",Oe.toString()),e.currentType=l.Type.v128,m.unreachable();switch(Ce){case 1:y.writeI8(Le,Re,Te);break;case 2:var Be=Te<<1,Pe=Le<<1;y.writeI8(Pe,Re,Be),y.writeI8(Pe+1,Re,Be+1);break;case 4:Be=Te<<2,Pe=Le<<2;y.writeI8(Pe,Re,Be),y.writeI8(Pe+1,Re,Be+1),y.writeI8(Pe+2,Re,Be+2),y.writeI8(Pe+3,Re,Be+3);break;case 8:Be=Te<<3,Pe=Le<<3;y.writeI8(Pe,Re,Be),y.writeI8(Pe+1,Re,Be+1),y.writeI8(Pe+2,Re,Be+2),y.writeI8(Pe+3,Re,Be+3),y.writeI8(Pe+4,Re,Be+4),y.writeI8(Pe+5,Re,Be+5),y.writeI8(Pe+6,Re,Be+6),y.writeI8(Pe+7,Re,Be+7);break;default:assert(!1)}}return e.currentType=l.Type.v128,m.simd_shuffle(G,z,Re);case a.v128_add:case a.v128_sub:case a.v128_mul:case a.v128_div:case a.v128_add_saturate:case a.v128_sub_saturate:case a.v128_min:case a.v128_max:case a.v128_eq:case a.v128_ne:case a.v128_lt:case a.v128_le:case a.v128_gt:case a.v128_ge:if(!e.options.hasFeature(8))break;if(b(t,s,e)|A(n,2,s,e))return e.currentType=l.Type.v128,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();K=-1;switch(r.internalName){case a.v128_add:switch(S.kind){case 0:case 5:K=u.BinaryOp.AddVecI8x16;break;case 1:case 6:K=u.BinaryOp.AddVecI16x8;break;case 2:case 7:K=u.BinaryOp.AddVecI32x4;break;case 3:case 8:K=u.BinaryOp.AddVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.BinaryOp.AddVecI64x2:u.BinaryOp.AddVecI32x4;break;case 11:K=u.BinaryOp.AddVecF32x4;break;case 12:K=u.BinaryOp.AddVecF64x2}break;case a.v128_sub:switch(S.kind){case 0:case 5:K=u.BinaryOp.SubVecI8x16;break;case 1:case 6:K=u.BinaryOp.SubVecI16x8;break;case 2:case 7:K=u.BinaryOp.SubVecI32x4;break;case 3:case 8:K=u.BinaryOp.SubVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.BinaryOp.SubVecI64x2:u.BinaryOp.SubVecI32x4;break;case 11:K=u.BinaryOp.SubVecF32x4;break;case 12:K=u.BinaryOp.SubVecF64x2}break;case a.v128_mul:switch(S.kind){case 0:case 5:K=u.BinaryOp.MulVecI8x16;break;case 1:case 6:K=u.BinaryOp.MulVecI16x8;break;case 2:case 7:K=u.BinaryOp.MulVecI32x4;break;case 11:K=u.BinaryOp.MulVecF32x4;break;case 12:K=u.BinaryOp.MulVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=u.BinaryOp.MulVecI32x4)}break;case a.v128_div:switch(S.kind){case 11:K=u.BinaryOp.DivVecF32x4;break;case 12:K=u.BinaryOp.DivVecF64x2}break;case a.v128_add_saturate:switch(S.kind){case 0:K=u.BinaryOp.AddSatSVecI8x16;break;case 5:K=u.BinaryOp.AddSatUVecI8x16;break;case 1:K=u.BinaryOp.AddSatSVecI16x8;break;case 6:K=u.BinaryOp.AddSatUVecI16x8}break;case a.v128_sub_saturate:switch(S.kind){case 0:K=u.BinaryOp.SubSatSVecI8x16;break;case 5:K=u.BinaryOp.SubSatUVecI8x16;break;case 1:K=u.BinaryOp.SubSatSVecI16x8;break;case 6:K=u.BinaryOp.SubSatUVecI16x8}break;case a.v128_min:switch(S.kind){case 11:K=u.BinaryOp.MinVecF32x4;break;case 12:K=u.BinaryOp.MinVecF64x2}break;case a.v128_max:switch(S.kind){case 11:K=u.BinaryOp.MaxVecF32x4;break;case 12:K=u.BinaryOp.MaxVecF64x2}break;case a.v128_eq:switch(S.kind){case 0:case 5:K=u.BinaryOp.EqVecI8x16;break;case 1:case 6:K=u.BinaryOp.EqVecI16x8;break;case 2:case 7:K=u.BinaryOp.EqVecI32x4;break;case 11:K=u.BinaryOp.EqVecF32x4;break;case 12:K=u.BinaryOp.EqVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=u.BinaryOp.EqVecI32x4)}break;case a.v128_ne:switch(S.kind){case 0:case 5:K=u.BinaryOp.NeVecI8x16;break;case 1:case 6:K=u.BinaryOp.NeVecI16x8;break;case 2:case 7:K=u.BinaryOp.NeVecI32x4;break;case 11:K=u.BinaryOp.NeVecF32x4;break;case 12:K=u.BinaryOp.NeVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=u.BinaryOp.NeVecI32x4)}break;case a.v128_lt:switch(S.kind){case 0:K=u.BinaryOp.LtSVecI8x16;break;case 5:K=u.BinaryOp.LtUVecI8x16;break;case 1:K=u.BinaryOp.LtSVecI16x8;break;case 6:K=u.BinaryOp.LtUVecI16x8;break;case 2:K=u.BinaryOp.LtSVecI32x4;break;case 7:K=u.BinaryOp.LtUVecI32x4;break;case 11:K=u.BinaryOp.LtVecF32x4;break;case 12:K=u.BinaryOp.LtVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=4==S.kind?u.BinaryOp.LtSVecI32x4:u.BinaryOp.LtUVecI32x4)}break;case a.v128_le:switch(S.kind){case 0:K=u.BinaryOp.LeSVecI8x16;break;case 5:K=u.BinaryOp.LeUVecI8x16;break;case 1:K=u.BinaryOp.LeSVecI16x8;break;case 6:K=u.BinaryOp.LeUVecI16x8;break;case 2:K=u.BinaryOp.LeSVecI32x4;break;case 7:K=u.BinaryOp.LeUVecI32x4;break;case 11:K=u.BinaryOp.LeVecF32x4;break;case 12:K=u.BinaryOp.LeVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=4==S.kind?u.BinaryOp.LeSVecI32x4:u.BinaryOp.LeUVecI32x4)}break;case a.v128_gt:switch(S.kind){case 0:K=u.BinaryOp.GtSVecI8x16;break;case 5:K=u.BinaryOp.GtUVecI8x16;break;case 1:K=u.BinaryOp.GtSVecI16x8;break;case 6:K=u.BinaryOp.GtUVecI16x8;break;case 2:K=u.BinaryOp.GtSVecI32x4;break;case 7:K=u.BinaryOp.GtUVecI32x4;break;case 11:K=u.BinaryOp.GtVecF32x4;break;case 12:K=u.BinaryOp.GtVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=4==S.kind?u.BinaryOp.GtSVecI32x4:u.BinaryOp.GtUVecI32x4)}break;case a.v128_ge:switch(S.kind){case 0:K=u.BinaryOp.GeSVecI8x16;break;case 5:K=u.BinaryOp.GeUVecI8x16;break;case 1:K=u.BinaryOp.GeSVecI16x8;break;case 6:K=u.BinaryOp.GeUVecI16x8;break;case 2:K=u.BinaryOp.GeSVecI32x4;break;case 7:K=u.BinaryOp.GeUVecI32x4;break;case 11:K=u.BinaryOp.GeVecF32x4;break;case 12:K=u.BinaryOp.GeVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=4==S.kind?u.BinaryOp.GeSVecI32x4:u.BinaryOp.GeUVecI32x4)}}if(-1==K)return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1),z=e.compileExpression(n[1],l.Type.v128,1);return e.currentType=l.Type.v128,m.binary(K,G,z);case a.v128_neg:case a.v128_abs:case a.v128_sqrt:case a.v128_convert:case a.v128_trunc:if(!e.options.hasFeature(8))break;if(b(t,s,e)|A(n,1,s,e))return e.currentType=l.Type.v128,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.range),e.currentType=l.Type.v128,m.unreachable();K=-1;switch(r.internalName){case a.v128_neg:switch(S.kind){case 0:case 5:K=u.UnaryOp.NegVecI8x16;break;case 1:case 6:K=u.UnaryOp.NegVecI16x8;break;case 2:case 7:K=u.UnaryOp.NegVecI32x4;break;case 3:case 8:K=u.UnaryOp.NegVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.UnaryOp.NegVecI64x2:u.UnaryOp.NegVecI32x4;break;case 11:K=u.UnaryOp.NegVecF32x4;break;case 12:K=u.UnaryOp.NegVecF64x2}break;case a.v128_abs:switch(S.kind){case 11:K=u.UnaryOp.AbsVecF32x4;break;case 12:K=u.UnaryOp.AbsVecF64x2}break;case a.v128_sqrt:switch(S.kind){case 11:K=u.UnaryOp.SqrtVecF32x4;break;case 12:K=u.UnaryOp.SqrtVecF64x2}break;case a.v128_convert:switch(S.kind){case 2:K=u.UnaryOp.ConvertSVecI32x4ToVecF32x4;break;case 7:K=u.UnaryOp.ConvertUVecI32x4ToVecF32x4;break;case 3:K=u.UnaryOp.ConvertSVecI64x2ToVecF64x2;break;case 8:K=u.UnaryOp.ConvertUVecI64x2ToVecF64x2}break;case a.v128_trunc:switch(S.kind){case 2:K=u.UnaryOp.TruncSatSVecF32x4ToVecI32x4;break;case 7:K=u.UnaryOp.TruncSatUVecF32x4ToVecI32x4;break;case 3:K=u.UnaryOp.TruncSatSVecF64x2ToVecI64x2;break;case 8:K=u.UnaryOp.TruncSatUVecF64x2ToVecI64x2}}if(-1==K)return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1);return e.currentType=l.Type.v128,m.unary(K,G);case a.v128_shl:case a.v128_shr:if(!e.options.hasFeature(8))break;if(b(t,s,e)|A(n,2,s,e))return e.currentType=l.Type.v128,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();K=-1;switch(r.internalName){case a.v128_shl:switch(S.kind){case 0:case 5:K=u.SIMDShiftOp.ShlVecI8x16;break;case 1:case 6:K=u.SIMDShiftOp.ShlVecI16x8;break;case 2:case 7:K=u.SIMDShiftOp.ShlVecI32x4;break;case 3:case 8:K=u.SIMDShiftOp.ShlVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.SIMDShiftOp.ShlVecI64x2:u.SIMDShiftOp.ShlVecI32x4}break;case a.v128_shr:switch(S.kind){case 0:K=u.SIMDShiftOp.ShrSVecI8x16;break;case 5:K=u.SIMDShiftOp.ShrUVecI8x16;break;case 1:K=u.SIMDShiftOp.ShrSVecI16x8;break;case 6:K=u.SIMDShiftOp.ShrUVecI16x8;break;case 2:K=u.SIMDShiftOp.ShrSVecI32x4;break;case 7:K=u.SIMDShiftOp.ShrUVecI32x4;break;case 3:K=u.SIMDShiftOp.ShrSVecI64x2;break;case 8:K=u.SIMDShiftOp.ShrUVecI64x2;break;case 4:K=e.options.isWasm64?u.SIMDShiftOp.ShrSVecI64x2:u.SIMDShiftOp.ShrSVecI32x4;break;case 9:K=e.options.isWasm64?u.SIMDShiftOp.ShrUVecI64x2:u.SIMDShiftOp.ShrUVecI32x4}}if(-1==K)return e.error(o.DiagnosticCode.Operation_not_supported,s.range),e.currentType=l.Type.v128,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1),z=e.compileExpression(n[1],l.Type.i32,1);return e.currentType=l.Type.v128,m.simd_shift(K,G,z);case a.v128_and:case a.v128_or:case a.v128_xor:if(!e.options.hasFeature(8))break;if(x(t,s,r)|A(n,2,s,e))return e.currentType=l.Type.v128,m.unreachable();K=-1;switch(r.internalName){default:assert(!1);case a.v128_and:K=u.BinaryOp.AndVec128;break;case a.v128_or:K=u.BinaryOp.OrVec128;break;case a.v128_xor:K=u.BinaryOp.XorVec128}G=e.compileExpression(n[0],l.Type.v128,1),z=e.compileExpression(n[1],l.Type.v128,1);return m.binary(K,G,z);case a.v128_not:if(!e.options.hasFeature(8))break;if(x(t,s,r)|A(n,1,s,e))return e.currentType=l.Type.v128,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1);return m.unary(u.UnaryOp.NotVec128,G);case a.v128_bitselect:if(!e.options.hasFeature(8))break;if(x(t,s,r)|A(n,3,s,e))return e.currentType=l.Type.v128,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1),z=e.compileExpression(n[1],l.Type.v128,1),ne=e.compileExpression(n[2],l.Type.v128,1);return m.simd_bitselect(G,z,ne);case a.v128_any_true:case a.v128_all_true:if(!e.options.hasFeature(8))break;if(b(t,s,e)|A(n,1,s,e))return e.currentType=l.Type.bool,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();K=-1;switch(r.internalName){default:assert(!1);case a.v128_any_true:switch(S.kind){case 0:case 5:K=u.UnaryOp.AnyTrueVecI8x16;break;case 1:case 6:K=u.UnaryOp.AnyTrueVecI16x8;break;case 2:case 7:K=u.UnaryOp.AnyTrueVecI32x4;break;case 3:case 8:K=u.UnaryOp.AnyTrueVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.UnaryOp.AnyTrueVecI64x2:u.UnaryOp.AnyTrueVecI32x4}break;case a.v128_all_true:switch(S.kind){case 0:case 5:K=u.UnaryOp.AllTrueVecI8x16;break;case 1:case 6:K=u.UnaryOp.AllTrueVecI16x8;break;case 2:case 7:K=u.UnaryOp.AllTrueVecI32x4;break;case 3:case 8:K=u.UnaryOp.AllTrueVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.UnaryOp.AllTrueVecI64x2:u.UnaryOp.AllTrueVecI32x4}}if(-1==K)return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.bool,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1);return e.currentType=l.Type.bool,m.unary(K,G);case a.idof:S=E(e,t,n,s);if(e.currentType=l.Type.u32,!S)return m.unreachable();var we,Ue=S.signatureReference;return S.is(256)&&null!==Ue?m.i32(Ue.id):!(we=S.classReference)||we.hasDecorator(p.DecoratorFlags.UNMANAGED)?(e.error(o.DiagnosticCode.Operation_not_supported,s.range),m.unreachable()):m.i32(we.id);case a.visit_globals:if(x(t,s,r)|A(n,1,s,e))return e.currentType=l.Type.void,m.unreachable();G=e.compileExpression(n[0],l.Type.u32,1);return e.runtimeFeatures|=4,e.currentType=l.Type.void,m.call(a.visit_globals,[G],u.NativeType.None);case a.visit_members:if(x(t,s,r)|A(n,2,s,e))return e.currentType=l.Type.void,m.unreachable();G=e.compileExpression(n[0],e.options.usizeType,1),z=e.compileExpression(n[1],l.Type.u32,1);return e.runtimeFeatures|=8,e.currentType=l.Type.void,m.call(a.visit_members,[G,z],u.NativeType.None)}return(R=function(e,r,t,n){switch(r.internalName){case a.i32_clz:return f(a.clz,e,l.Type.i32,t,l.Type.i32,n);case a.i64_clz:return f(a.clz,e,l.Type.i64,t,l.Type.i64,n);case a.i32_ctz:return f(a.ctz,e,l.Type.i32,t,l.Type.i32,n);case a.i64_ctz:return f(a.ctz,e,l.Type.i64,t,l.Type.i64,n);case a.i32_popcnt:return f(a.popcnt,e,l.Type.i32,t,l.Type.i32,n);case a.i64_popcnt:return f(a.popcnt,e,l.Type.i64,t,l.Type.i64,n);case a.i32_rotl:return f(a.rotl,e,l.Type.i32,t,l.Type.i32,n);case a.i64_rotl:return f(a.rotl,e,l.Type.i64,t,l.Type.i64,n);case a.i32_rotr:return f(a.rotr,e,l.Type.i32,t,l.Type.i32,n);case a.i64_rotr:return f(a.rotr,e,l.Type.i64,t,l.Type.i64,n);case a.f32_abs:return f(a.abs,e,l.Type.f32,t,l.Type.f32,n);case a.f64_abs:return f(a.abs,e,l.Type.f64,t,l.Type.f64,n);case a.f32_max:return f(a.max,e,l.Type.f32,t,l.Type.f32,n);case a.f64_max:return f(a.max,e,l.Type.f64,t,l.Type.f64,n);case a.f32_min:return f(a.min,e,l.Type.f32,t,l.Type.f32,n);case a.f64_min:return f(a.min,e,l.Type.f64,t,l.Type.f64,n);case a.f32_ceil:return f(a.ceil,e,l.Type.f32,t,l.Type.f32,n);case a.f64_ceil:return f(a.ceil,e,l.Type.f64,t,l.Type.f64,n);case a.f32_floor:return f(a.floor,e,l.Type.f32,t,l.Type.f32,n);case a.f64_floor:return f(a.floor,e,l.Type.f64,t,l.Type.f64,n);case a.f32_copysign:return f(a.copysign,e,l.Type.f32,t,l.Type.f32,n);case a.f64_copysign:return f(a.copysign,e,l.Type.f64,t,l.Type.f64,n);case a.f32_nearest:return f(a.nearest,e,l.Type.f32,t,l.Type.f32,n);case a.f64_nearest:return f(a.nearest,e,l.Type.f64,t,l.Type.f64,n);case a.i32_reinterpret_f32:return f(a.reinterpret,e,l.Type.i32,t,l.Type.f32,n);case a.i64_reinterpret_f64:return f(a.reinterpret,e,l.Type.i64,t,l.Type.f64,n);case a.f32_reinterpret_i32:return f(a.reinterpret,e,l.Type.f32,t,l.Type.i32,n);case a.f64_reinterpret_i64:return f(a.reinterpret,e,l.Type.f64,t,l.Type.i64,n);case a.f32_sqrt:return f(a.sqrt,e,l.Type.f32,t,l.Type.f32,n);case a.f64_sqrt:return f(a.sqrt,e,l.Type.f64,t,l.Type.f64,n);case a.f32_trunc:return f(a.trunc,e,l.Type.f32,t,l.Type.f32,n);case a.f64_trunc:return f(a.trunc,e,l.Type.f64,t,l.Type.f64,n);case a.i32_load8_s:return f(a.load,e,l.Type.i8,t,l.Type.i32,n);case a.i32_load8_u:return f(a.load,e,l.Type.u8,t,l.Type.i32,n);case a.i32_load16_s:return f(a.load,e,l.Type.i16,t,l.Type.i32,n);case a.i32_load16_u:return f(a.load,e,l.Type.u16,t,l.Type.i32,n);case a.i32_load:return f(a.load,e,l.Type.i32,t,l.Type.i32,n);case a.i64_load8_s:return f(a.load,e,l.Type.i8,t,l.Type.i64,n);case a.i64_load8_u:return f(a.load,e,l.Type.u8,t,l.Type.i64,n);case a.i64_load16_s:return f(a.load,e,l.Type.i16,t,l.Type.i64,n);case a.i64_load16_u:return f(a.load,e,l.Type.u16,t,l.Type.i64,n);case a.i64_load32_s:return f(a.load,e,l.Type.i32,t,l.Type.i64,n);case a.i64_load32_u:return f(a.load,e,l.Type.u32,t,l.Type.i64,n);case a.i64_load:return f(a.load,e,l.Type.i64,t,l.Type.i64,n);case a.f32_load:return f(a.load,e,l.Type.f32,t,l.Type.f32,n);case a.f64_load:return f(a.load,e,l.Type.f64,t,l.Type.f64,n);case a.i32_store8:return f(a.store,e,l.Type.i8,t,l.Type.i32,n);case a.i32_store16:return f(a.store,e,l.Type.i16,t,l.Type.i32,n);case a.i32_store:return f(a.store,e,l.Type.i32,t,l.Type.i32,n);case a.i64_store8:return f(a.store,e,l.Type.i8,t,l.Type.i64,n);case a.i64_store16:return f(a.store,e,l.Type.i16,t,l.Type.i64,n);case a.i64_store32:return f(a.store,e,l.Type.i32,t,l.Type.i64,n);case a.i64_store:return f(a.store,e,l.Type.i64,t,l.Type.i64,n);case a.f32_store:return f(a.store,e,l.Type.f32,t,l.Type.f32,n);case a.f64_store:return f(a.store,e,l.Type.f64,t,l.Type.f64,n)}if(e.options.hasFeature(16))switch(r.internalName){case a.i32_atomic_load8_u:return f(a.atomic_load,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_load16_u:return f(a.atomic_load,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_load:return f(a.atomic_load,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_load8_u:return f(a.atomic_load,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_load16_u:return f(a.atomic_load,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_load32_u:return f(a.atomic_load,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_load:return f(a.atomic_load,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_store8:return f(a.atomic_store,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_store16:return f(a.atomic_store,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_store:return f(a.atomic_store,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_store8:return f(a.atomic_store,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_store16:return f(a.atomic_store,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_store32:return f(a.atomic_store,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_store:return f(a.atomic_store,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_add_u:return f(a.atomic_add,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_add_u:return f(a.atomic_add,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_add:return f(a.atomic_add,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_add_u:return f(a.atomic_add,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_add_u:return f(a.atomic_add,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_add_u:return f(a.atomic_add,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_add:return f(a.atomic_add,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_sub_u:return f(a.atomic_sub,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_sub_u:return f(a.atomic_sub,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_sub:return f(a.atomic_sub,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_sub_u:return f(a.atomic_sub,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_sub_u:return f(a.atomic_sub,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_sub_u:return f(a.atomic_sub,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_sub:return f(a.atomic_sub,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_and_u:return f(a.atomic_and,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_and_u:return f(a.atomic_and,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_and:return f(a.atomic_and,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_and_u:return f(a.atomic_and,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_and_u:return f(a.atomic_and,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_and_u:return f(a.atomic_and,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_and:return f(a.atomic_and,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_or_u:return f(a.atomic_or,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_or_u:return f(a.atomic_or,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_or:return f(a.atomic_or,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_or_u:return f(a.atomic_or,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_or_u:return f(a.atomic_or,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_or_u:return f(a.atomic_or,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_or:return f(a.atomic_or,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_u_xor:return f(a.atomic_xor,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_u_xor:return f(a.atomic_xor,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_xor:return f(a.atomic_xor,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_xor_u:return f(a.atomic_xor,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_xor_u:return f(a.atomic_xor,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_xor_u:return f(a.atomic_xor,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_xor:return f(a.atomic_xor,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_xchg_u:return f(a.atomic_xchg,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_xchg_u:return f(a.atomic_xchg,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_xchg:return f(a.atomic_xchg,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_xchg_u:return f(a.atomic_xchg,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_xchg_u:return f(a.atomic_xchg,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_xchg_u:return f(a.atomic_xchg,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_xchg:return f(a.atomic_xchg,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_cmpxchg_u:return f(a.atomic_cmpxchg,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_cmpxchg_u:return f(a.atomic_cmpxchg,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_cmpxchg:return f(a.atomic_cmpxchg,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_cmpxchg_u:return f(a.atomic_cmpxchg,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_cmpxchg_u:return f(a.atomic_cmpxchg,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_cmpxchg_u:return f(a.atomic_cmpxchg,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_cmpxchg:return f(a.atomic_cmpxchg,e,l.Type.i64,t,l.Type.i64,n);case a.i32_wait:return f(a.atomic_wait,e,l.Type.i32,t,l.Type.i32,n);case a.i64_wait:return f(a.atomic_wait,e,l.Type.i64,t,l.Type.i32,n)}if(e.options.hasFeature(8))switch(r.internalName){case a.v128_load:return f(a.load,e,l.Type.v128,t,l.Type.v128,n);case a.v128_store:return f(a.store,e,l.Type.v128,t,l.Type.void,n);case a.i8x16_splat:return f(a.v128_splat,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_extract_lane_s:return f(a.v128_extract_lane,e,l.Type.i8,t,l.Type.i8,n);case a.i8x16_extract_lane_u:return f(a.v128_extract_lane,e,l.Type.u8,t,l.Type.u8,n);case a.i8x16_replace_lane:return f(a.v128_replace_lane,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_add:return f(a.v128_add,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_sub:return f(a.v128_sub,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_mul:return f(a.v128_mul,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_neg:return f(a.v128_neg,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_add_saturate_s:return f(a.v128_add_saturate,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_add_saturate_u:return f(a.v128_add_saturate,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_sub_saturate_s:return f(a.v128_sub_saturate,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_sub_saturate_u:return f(a.v128_sub_saturate,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_shl:return f(a.v128_shl,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_shr_s:return f(a.v128_shr,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_shr_u:return f(a.v128_shr,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_any_true:return f(a.v128_any_true,e,l.Type.i8,t,l.Type.i32,n);case a.i8x16_all_true:return f(a.v128_all_true,e,l.Type.i8,t,l.Type.i32,n);case a.i8x16_eq:return f(a.v128_eq,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_ne:return f(a.v128_ne,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_lt_s:return f(a.v128_lt,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_lt_u:return f(a.v128_lt,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_le_s:return f(a.v128_le,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_le_u:return f(a.v128_le,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_gt_s:return f(a.v128_gt,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_gt_u:return f(a.v128_gt,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_ge_s:return f(a.v128_ge,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_ge_u:return f(a.v128_ge,e,l.Type.u8,t,l.Type.v128,n);case a.i16x8_splat:return f(a.v128_splat,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_extract_lane_s:return f(a.v128_extract_lane,e,l.Type.i16,t,l.Type.i16,n);case a.i16x8_extract_lane_u:return f(a.v128_extract_lane,e,l.Type.u16,t,l.Type.u16,n);case a.i16x8_replace_lane:return f(a.v128_replace_lane,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_add:return f(a.v128_add,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_sub:return f(a.v128_sub,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_mul:return f(a.v128_mul,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_neg:return f(a.v128_neg,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_add_saturate_s:return f(a.v128_add_saturate,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_add_saturate_u:return f(a.v128_add_saturate,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_sub_saturate_s:return f(a.v128_sub_saturate,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_sub_saturate_u:return f(a.v128_sub_saturate,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_shl:return f(a.v128_shl,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_shr_s:return f(a.v128_shr,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_shr_u:return f(a.v128_shr,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_any_true:return f(a.v128_any_true,e,l.Type.i16,t,l.Type.i32,n);case a.i16x8_all_true:return f(a.v128_all_true,e,l.Type.i16,t,l.Type.i32,n);case a.i16x8_eq:return f(a.v128_eq,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_ne:return f(a.v128_ne,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_lt_s:return f(a.v128_lt,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_lt_u:return f(a.v128_lt,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_le_s:return f(a.v128_le,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_le_u:return f(a.v128_le,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_gt_s:return f(a.v128_gt,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_gt_u:return f(a.v128_gt,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_ge_s:return f(a.v128_ge,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_ge_u:return f(a.v128_ge,e,l.Type.u16,t,l.Type.v128,n);case a.i32x4_splat:return f(a.v128_splat,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_extract_lane:return f(a.v128_extract_lane,e,l.Type.i32,t,l.Type.i32,n);case a.i32x4_replace_lane:return f(a.v128_replace_lane,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_add:return f(a.v128_add,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_sub:return f(a.v128_sub,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_mul:return f(a.v128_mul,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_neg:return f(a.v128_neg,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_shl:return f(a.v128_shl,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_shr_s:return f(a.v128_shr,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_shr_u:return f(a.v128_shr,e,l.Type.u32,t,l.Type.v128,n);case a.i32x4_any_true:return f(a.v128_any_true,e,l.Type.i32,t,l.Type.i32,n);case a.i32x4_all_true:return f(a.v128_all_true,e,l.Type.i32,t,l.Type.i32,n);case a.i32x4_eq:return f(a.v128_eq,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_ne:return f(a.v128_ne,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_lt_s:return f(a.v128_lt,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_lt_u:return f(a.v128_lt,e,l.Type.u32,t,l.Type.v128,n);case a.i32x4_le_s:return f(a.v128_le,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_le_u:return f(a.v128_le,e,l.Type.u32,t,l.Type.v128,n);case a.i32x4_gt_s:return f(a.v128_gt,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_gt_u:return f(a.v128_gt,e,l.Type.u32,t,l.Type.v128,n);case a.i32x4_ge_s:return f(a.v128_ge,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_ge_u:return f(a.v128_ge,e,l.Type.u32,t,l.Type.v128,n);case a.i32x4_trunc_s_f32x4_sat:return f(a.v128_trunc,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_trunc_u_f32x4_sat:return f(a.v128_trunc,e,l.Type.u32,t,l.Type.v128,n);case a.i64x2_splat:return f(a.v128_splat,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_extract_lane:return f(a.v128_extract_lane,e,l.Type.i64,t,l.Type.i64,n);case a.i64x2_replace_lane:return f(a.v128_replace_lane,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_add:return f(a.v128_add,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_sub:return f(a.v128_sub,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_neg:return f(a.v128_neg,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_shl:return f(a.v128_shl,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_shr_s:return f(a.v128_shr,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_shr_u:return f(a.v128_shr,e,l.Type.u64,t,l.Type.v128,n);case a.i64x2_any_true:return f(a.v128_any_true,e,l.Type.i64,t,l.Type.i32,n);case a.i64x2_all_true:return f(a.v128_all_true,e,l.Type.i64,t,l.Type.i32,n);case a.i64x2_trunc_s_f64x2_sat:return f(a.v128_trunc,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_trunc_u_f64x2_sat:return f(a.v128_trunc,e,l.Type.u64,t,l.Type.v128,n);case a.f32x4_splat:return f(a.v128_splat,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_extract_lane:return f(a.v128_extract_lane,e,l.Type.f32,t,l.Type.f32,n);case a.f32x4_replace_lane:return f(a.v128_replace_lane,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_add:return f(a.v128_add,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_sub:return f(a.v128_sub,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_mul:return f(a.v128_mul,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_div:return f(a.v128_div,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_neg:return f(a.v128_neg,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_min:return f(a.v128_min,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_max:return f(a.v128_max,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_abs:return f(a.v128_abs,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_sqrt:return f(a.v128_sqrt,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_eq:return f(a.v128_eq,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_ne:return f(a.v128_ne,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_lt:return f(a.v128_lt,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_le:return f(a.v128_le,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_gt:return f(a.v128_gt,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_ge:return f(a.v128_ge,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_convert_s_i32x4:return f(a.v128_convert,e,l.Type.i32,t,l.Type.v128,n);case a.f32x4_convert_u_i32x4:return f(a.v128_convert,e,l.Type.u32,t,l.Type.v128,n);case a.f64x2_splat:return f(a.v128_splat,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_extract_lane:return f(a.v128_extract_lane,e,l.Type.f64,t,l.Type.f64,n);case a.f64x2_replace_lane:return f(a.v128_replace_lane,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_add:return f(a.v128_add,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_sub:return f(a.v128_sub,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_mul:return f(a.v128_mul,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_div:return f(a.v128_div,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_neg:return f(a.v128_neg,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_min:return f(a.v128_min,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_max:return f(a.v128_max,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_abs:return f(a.v128_abs,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_sqrt:return f(a.v128_sqrt,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_eq:return f(a.v128_eq,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_ne:return f(a.v128_ne,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_lt:return f(a.v128_lt,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_le:return f(a.v128_le,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_gt:return f(a.v128_gt,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_ge:return f(a.v128_ge,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_convert_s_i64x2:return f(a.v128_convert,e,l.Type.i64,t,l.Type.v128,n);case a.f64x2_convert_u_i64x2:return f(a.v128_convert,e,l.Type.u64,t,l.Type.v128,n);case a.v8x16_shuffle:return f(a.v128_shuffle,e,l.Type.i8,t,l.Type.v128,n)}return 0}(e,r,n,s))?(t&&e.error(o.DiagnosticCode.Type_0_is_not_generic,s.typeArgumentsRange,r.internalName),R):(e.error(o.DiagnosticCode.Cannot_find_name_0,s.expression.range,r.internalName),m.unreachable())}function f(e,r,t,n,i,a){assert(r.program.elementsByName.has(e));var s=r.program.elementsByName.get(e);return assert(s.kind==p.ElementKind.FUNCTION_PROTOTYPE),m(r,s,[t],n,i,a,!0)}function T(e,r,t){var n=e.program,i=e.module,a=e.program.stringInstance;if(!a)return i.unreachable();var s,o=n.abortInstance;if(!o||!e.compileFunction(o))return i.unreachable();s=null!==r?e.compileExpression(r,a.type,17):a.type.toNativeZero(i);var c=e.ensureStaticString(t.range.source.normalizedPath);return e.currentType=l.Type.void,i.block(null,[i.call(o.internalName,[s,c,i.i32(t.range.line),i.i32(t.range.column)],u.NativeType.None),i.unreachable()])}function g(e){var r=32*(1<1)return e.error(o.DiagnosticCode.Expected_0_type_arguments_but_got_1,n.typeArgumentsRange,"1",r.length.toString(10)),null;e.compileExpression(t[0],r[0],1)}else e.compileExpression(t[0],l.Type.auto);return e.currentType}return r&&r.length>1&&e.error(o.DiagnosticCode.Expected_0_type_arguments_but_got_1,n.typeArgumentsRange,"1",r.length.toString(10)),e.error(o.DiagnosticCode.Expected_0_arguments_but_got_1,n.argumentsRange,"1",t.length.toString(10)),null}function v(e,r){var t,n;return r.options.isWasm64?(t=r.precomputeExpression(e,l.Type.usize64,1),(u.getExpressionId(t)!=u.ExpressionId.Const||u.getExpressionType(t)!=u.NativeType.I64||0!=u.getConstValueI64High(t)||(n=u.getConstValueI64Low(t))<0)&&(r.error(o.DiagnosticCode.Expression_must_be_a_compile_time_constant,e.range),n=-1)):(t=r.precomputeExpression(e,l.Type.usize32,1),(u.getExpressionId(t)!=u.ExpressionId.Const||u.getExpressionType(t)!=u.NativeType.I32||(n=u.getConstValueI32(t))<0)&&(r.error(o.DiagnosticCode.Expression_must_be_a_compile_time_constant,e.range),n=-1)),n}function b(e,r,t,n){if(void 0===n&&(n=!1),e){var i=e.length;if(1==i)return 0;assert(i),n&&(t.currentType=e[0]),t.error(o.DiagnosticCode.Expected_0_type_arguments_but_got_1,r.typeArgumentsRange,"1",i.toString())}else t.error(o.DiagnosticCode.Expected_0_type_arguments_but_got_1,r.range,"1","0");return 1}function I(e,r,t,n){if(void 0===n&&(n=!1),e){var i=e.length;return 1==i?0:(assert(i),n&&(t.currentType=e[0]),t.error(o.DiagnosticCode.Expected_0_type_arguments_but_got_1,r.typeArgumentsRange,"1",i.toString()),1)}return 0}function x(e,r,t){return e?(t.program.error(o.DiagnosticCode.Type_0_is_not_generic,r.typeArgumentsRange,t.internalName),1):0}function A(e,r,t,n){return e.length!=r?(n.error(o.DiagnosticCode.Expected_0_arguments_but_got_1,t.range,r.toString(),e.length.toString()),1):0}function N(e,r,t,n,i){var a=e.length;return at?(i.error(o.DiagnosticCode.Expected_0_arguments_but_got_1,n.range,t.toString(),a.toString()),1):0}!function(e){e.isInteger="~lib/builtins/isInteger",e.isFloat="~lib/builtins/isFloat",e.isBoolean="~lib/builtins/isBoolean",e.isSigned="~lib/builtins/isSigned",e.isReference="~lib/builtins/isReference",e.isString="~lib/builtins/isString",e.isArray="~lib/builtins/isArray",e.isArrayLike="~lib/builtins/isArrayLike",e.isFunction="~lib/builtins/isFunction",e.isNullable="~lib/builtins/isNullable",e.isDefined="~lib/builtins/isDefined",e.isConstant="~lib/builtins/isConstant",e.isManaged="~lib/builtins/isManaged",e.isVoid="~lib/builtins/isVoid",e.clz="~lib/builtins/clz",e.ctz="~lib/builtins/ctz",e.popcnt="~lib/builtins/popcnt",e.rotl="~lib/builtins/rotl",e.rotr="~lib/builtins/rotr",e.abs="~lib/builtins/abs",e.max="~lib/builtins/max",e.min="~lib/builtins/min",e.ceil="~lib/builtins/ceil",e.floor="~lib/builtins/floor",e.copysign="~lib/builtins/copysign",e.nearest="~lib/builtins/nearest",e.reinterpret="~lib/builtins/reinterpret",e.sqrt="~lib/builtins/sqrt",e.trunc="~lib/builtins/trunc",e.load="~lib/builtins/load",e.store="~lib/builtins/store",e.atomic_load="~lib/builtins/atomic.load",e.atomic_store="~lib/builtins/atomic.store",e.atomic_add="~lib/builtins/atomic.add",e.atomic_sub="~lib/builtins/atomic.sub",e.atomic_and="~lib/builtins/atomic.and",e.atomic_or="~lib/builtins/atomic.or",e.atomic_xor="~lib/builtins/atomic.xor",e.atomic_xchg="~lib/builtins/atomic.xchg",e.atomic_cmpxchg="~lib/builtins/atomic.cmpxchg",e.atomic_wait="~lib/builtins/atomic.wait",e.atomic_notify="~lib/builtins/atomic.notify",e.sizeof="~lib/builtins/sizeof",e.alignof="~lib/builtins/alignof",e.offsetof="~lib/builtins/offsetof",e.nameof="~lib/builtins/nameof",e.lengthof="~lib/builtins/lengthof",e.select="~lib/builtins/select",e.unreachable="~lib/builtins/unreachable",e.changetype="~lib/builtins/changetype",e.assert="~lib/builtins/assert",e.unchecked="~lib/builtins/unchecked",e.call_direct="~lib/builtins/call_direct",e.call_indirect="~lib/builtins/call_indirect",e.instantiate="~lib/builtins/instantiate",e.idof="~lib/builtins/idof",e.i8="~lib/builtins/i8",e.i16="~lib/builtins/i16",e.i32="~lib/builtins/i32",e.i64="~lib/builtins/i64",e.isize="~lib/builtins/isize",e.u8="~lib/builtins/u8",e.u16="~lib/builtins/u16",e.u32="~lib/builtins/u32",e.u64="~lib/builtins/u64",e.usize="~lib/builtins/usize",e.bool="~lib/builtins/bool",e.f32="~lib/builtins/f32",e.f64="~lib/builtins/f64",e.v128="~lib/builtins/v128",e.void_="~lib/builtins/void",e.i32_clz="~lib/builtins/i32.clz",e.i64_clz="~lib/builtins/i64.clz",e.i32_ctz="~lib/builtins/i32.ctz",e.i64_ctz="~lib/builtins/i64.ctz",e.i32_popcnt="~lib/builtins/i32.popcnt",e.i64_popcnt="~lib/builtins/i64.popcnt",e.i32_rotl="~lib/builtins/i32.rotl",e.i64_rotl="~lib/builtins/i64.rotl",e.i32_rotr="~lib/builtins/i32.rotr",e.i64_rotr="~lib/builtins/i64.rotr",e.f32_abs="~lib/builtins/f32.abs",e.f64_abs="~lib/builtins/f64.abs",e.f32_max="~lib/builtins/f32.max",e.f64_max="~lib/builtins/f64.max",e.f32_min="~lib/builtins/f32.min",e.f64_min="~lib/builtins/f64.min",e.f32_ceil="~lib/builtins/f32.ceil",e.f64_ceil="~lib/builtins/f64.ceil",e.f32_floor="~lib/builtins/f32.floor",e.f64_floor="~lib/builtins/f64.floor",e.f32_copysign="~lib/builtins/f32.copysign",e.f64_copysign="~lib/builtins/f64.copysign",e.f32_nearest="~lib/builtins/f32.nearest",e.f64_nearest="~lib/builtins/f64.nearest",e.i32_reinterpret_f32="~lib/builtins/i32.reinterpret_f32",e.i64_reinterpret_f64="~lib/builtins/i64.reinterpret_f64",e.f32_reinterpret_i32="~lib/builtins/f32.reinterpret_i32",e.f64_reinterpret_i64="~lib/builtins/f64.reinterpret_i64",e.f32_sqrt="~lib/builtins/f32.sqrt",e.f64_sqrt="~lib/builtins/f64.sqrt",e.f32_trunc="~lib/builtins/f32.trunc",e.f64_trunc="~lib/builtins/f64.trunc",e.i32_load8_s="~lib/builtins/i32.load8_s",e.i32_load8_u="~lib/builtins/i32.load8_u",e.i32_load16_s="~lib/builtins/i32.load16_s",e.i32_load16_u="~lib/builtins/i32.load16_u",e.i32_load="~lib/builtins/i32.load",e.i64_load8_s="~lib/builtins/i64.load8_s",e.i64_load8_u="~lib/builtins/i64.load8_u",e.i64_load16_s="~lib/builtins/i64.load16_s",e.i64_load16_u="~lib/builtins/i64.load16_u",e.i64_load32_s="~lib/builtins/i64.load32_s",e.i64_load32_u="~lib/builtins/i64.load32_u",e.i64_load="~lib/builtins/i64.load",e.f32_load="~lib/builtins/f32.load",e.f64_load="~lib/builtins/f64.load",e.i32_store8="~lib/builtins/i32.store8",e.i32_store16="~lib/builtins/i32.store16",e.i32_store="~lib/builtins/i32.store",e.i64_store8="~lib/builtins/i64.store8",e.i64_store16="~lib/builtins/i64.store16",e.i64_store32="~lib/builtins/i64.store32",e.i64_store="~lib/builtins/i64.store",e.f32_store="~lib/builtins/f32.store",e.f64_store="~lib/builtins/f64.store",e.i32_atomic_load8_u="~lib/builtins/i32.atomic.load8_u",e.i32_atomic_load16_u="~lib/builtins/i32.atomic.load16_u",e.i32_atomic_load="~lib/builtins/i32.atomic.load",e.i64_atomic_load8_u="~lib/builtins/i64.atomic.load8_u",e.i64_atomic_load16_u="~lib/builtins/i64.atomic.load16_u",e.i64_atomic_load32_u="~lib/builtins/i64.atomic.load32_u",e.i64_atomic_load="~lib/builtins/i64.atomic.load",e.i32_atomic_store8="~lib/builtins/i32.atomic.store8",e.i32_atomic_store16="~lib/builtins/i32.atomic.store16",e.i32_atomic_store="~lib/builtins/i32.atomic.store",e.i64_atomic_store8="~lib/builtins/i64.atomic.store8",e.i64_atomic_store16="~lib/builtins/i64.atomic.store16",e.i64_atomic_store32="~lib/builtins/i64.atomic.store32",e.i64_atomic_store="~lib/builtins/i64.atomic.store",e.i32_atomic_rmw8_add_u="~lib/builtins/i32.atomic.rmw8.add_u",e.i32_atomic_rmw16_add_u="~lib/builtins/i32.atomic.rmw16.add_u",e.i32_atomic_rmw_add="~lib/builtins/i32.atomic.rmw.add",e.i64_atomic_rmw8_add_u="~lib/builtins/i64.atomic.rmw8.add_u",e.i64_atomic_rmw16_add_u="~lib/builtins/i64.atomic.rmw16.add_u",e.i64_atomic_rmw32_add_u="~lib/builtins/i64.atomic.rmw32.add_u",e.i64_atomic_rmw_add="~lib/builtins/i64.atomic.rmw.add",e.i32_atomic_rmw8_sub_u="~lib/builtins/i32.atomic.rmw8.sub_u",e.i32_atomic_rmw16_sub_u="~lib/builtins/i32.atomic.rmw16.sub_u",e.i32_atomic_rmw_sub="~lib/builtins/i32.atomic.rmw.sub",e.i64_atomic_rmw8_sub_u="~lib/builtins/i64.atomic.rmw8.sub_u",e.i64_atomic_rmw16_sub_u="~lib/builtins/i64.atomic.rmw16.sub_u",e.i64_atomic_rmw32_sub_u="~lib/builtins/i64.atomic.rmw32.sub_u",e.i64_atomic_rmw_sub="~lib/builtins/i64.atomic.rmw.sub",e.i32_atomic_rmw8_and_u="~lib/builtins/i32.atomic.rmw8.and_u",e.i32_atomic_rmw16_and_u="~lib/builtins/i32.atomic.rmw16.and_u",e.i32_atomic_rmw_and="~lib/builtins/i32.atomic.rmw.and",e.i64_atomic_rmw8_and_u="~lib/builtins/i64.atomic.rmw8.and_u",e.i64_atomic_rmw16_and_u="~lib/builtins/i64.atomic.rmw16.and_u",e.i64_atomic_rmw32_and_u="~lib/builtins/i64.atomic.rmw32.and_u",e.i64_atomic_rmw_and="~lib/builtins/i64.atomic.rmw.and",e.i32_atomic_rmw8_or_u="~lib/builtins/i32.atomic.rmw8.or_u",e.i32_atomic_rmw16_or_u="~lib/builtins/i32.atomic.rmw16.or_u",e.i32_atomic_rmw_or="~lib/builtins/i32.atomic.rmw.or",e.i64_atomic_rmw8_or_u="~lib/builtins/i64.atomic.rmw8.or_u",e.i64_atomic_rmw16_or_u="~lib/builtins/i64.atomic.rmw16.or_u",e.i64_atomic_rmw32_or_u="~lib/builtins/i64.atomic.rmw32.or_u",e.i64_atomic_rmw_or="~lib/builtins/i64.atomic.rmw.or",e.i32_atomic_rmw8_u_xor="~lib/builtins/i32.atomic.rmw8.xor_u",e.i32_atomic_rmw16_u_xor="~lib/builtins/i32.atomic.rmw16.xor_u",e.i32_atomic_rmw_xor="~lib/builtins/i32.atomic.rmw.xor",e.i64_atomic_rmw8_xor_u="~lib/builtins/i64.atomic.rmw8.xor_u",e.i64_atomic_rmw16_xor_u="~lib/builtins/i64.atomic.rmw16.xor_u",e.i64_atomic_rmw32_xor_u="~lib/builtins/i64.atomic.rmw32.xor_u",e.i64_atomic_rmw_xor="~lib/builtins/i64.atomic.rmw.xor",e.i32_atomic_rmw8_xchg_u="~lib/builtins/i32.atomic.rmw8.xchg_u",e.i32_atomic_rmw16_xchg_u="~lib/builtins/i32.atomic.rmw16.xchg_u",e.i32_atomic_rmw_xchg="~lib/builtins/i32.atomic.rmw.xchg",e.i64_atomic_rmw8_xchg_u="~lib/builtins/i64.atomic.rmw8.xchg_u",e.i64_atomic_rmw16_xchg_u="~lib/builtins/i64.atomic.rmw16.xchg_u",e.i64_atomic_rmw32_xchg_u="~lib/builtins/i64.atomic.rmw32.xchg_u",e.i64_atomic_rmw_xchg="~lib/builtins/i64.atomic.rmw.xchg",e.i32_atomic_rmw8_cmpxchg_u="~lib/builtins/i32.atomic.rmw8.cmpxchg_u",e.i32_atomic_rmw16_cmpxchg_u="~lib/builtins/i32.atomic.rmw16.cmpxchg_u",e.i32_atomic_rmw_cmpxchg="~lib/builtins/i32.atomic.rmw.cmpxchg",e.i64_atomic_rmw8_cmpxchg_u="~lib/builtins/i64.atomic.rmw8.cmpxchg_u",e.i64_atomic_rmw16_cmpxchg_u="~lib/builtins/i64.atomic.rmw16.cmpxchg_u",e.i64_atomic_rmw32_cmpxchg_u="~lib/builtins/i64.atomic.rmw32.cmpxchg_u",e.i64_atomic_rmw_cmpxchg="~lib/builtins/i64.atomic.rmw.cmpxchg",e.i32_wait="~lib/builtins/i32.wait",e.i64_wait="~lib/builtins/i64.wait",e.v128_splat="~lib/builtins/v128.splat",e.v128_extract_lane="~lib/builtins/v128.extract_lane",e.v128_replace_lane="~lib/builtins/v128.replace_lane",e.v128_shuffle="~lib/builtins/v128.shuffle",e.v128_load="~lib/builtins/v128.load",e.v128_store="~lib/builtins/v128.store",e.v128_add="~lib/builtins/v128.add",e.v128_sub="~lib/builtins/v128.sub",e.v128_mul="~lib/builtins/v128.mul",e.v128_div="~lib/builtins/v128.div",e.v128_neg="~lib/builtins/v128.neg",e.v128_add_saturate="~lib/builtins/v128.add_saturate",e.v128_sub_saturate="~lib/builtins/v128.sub_saturate",e.v128_shl="~lib/builtins/v128.shl",e.v128_shr="~lib/builtins/v128.shr",e.v128_and="~lib/builtins/v128.and",e.v128_or="~lib/builtins/v128.or",e.v128_xor="~lib/builtins/v128.xor",e.v128_not="~lib/builtins/v128.not",e.v128_bitselect="~lib/builtins/v128.bitselect",e.v128_any_true="~lib/builtins/v128.any_true",e.v128_all_true="~lib/builtins/v128.all_true",e.v128_min="~lib/builtins/v128.min",e.v128_max="~lib/builtins/v128.max",e.v128_abs="~lib/builtins/v128.abs",e.v128_sqrt="~lib/builtins/v128.sqrt",e.v128_eq="~lib/builtins/v128.eq",e.v128_ne="~lib/builtins/v128.ne",e.v128_lt="~lib/builtins/v128.lt",e.v128_le="~lib/builtins/v128.le",e.v128_gt="~lib/builtins/v128.gt",e.v128_ge="~lib/builtins/v128.ge",e.v128_convert="~lib/builtins/v128.convert",e.v128_trunc="~lib/builtins/v128.trunc",e.i8x16="~lib/builtins/i8x16",e.i16x8="~lib/builtins/i16x8",e.i32x4="~lib/builtins/i32x4",e.i64x2="~lib/builtins/i64x2",e.f32x4="~lib/builtins/f32x4",e.f64x2="~lib/builtins/f64x2",e.i8x16_splat="~lib/builtins/i8x16.splat",e.i8x16_extract_lane_s="~lib/builtins/i8x16.extract_lane_s",e.i8x16_extract_lane_u="~lib/builtins/i8x16.extract_lane_u",e.i8x16_replace_lane="~lib/builtins/i8x16.replace_lane",e.i8x16_add="~lib/builtins/i8x16.add",e.i8x16_sub="~lib/builtins/i8x16.sub",e.i8x16_mul="~lib/builtins/i8x16.mul",e.i8x16_neg="~lib/builtins/i8x16.neg",e.i8x16_add_saturate_s="~lib/builtins/i8x16.add_saturate_s",e.i8x16_add_saturate_u="~lib/builtins/i8x16.add_saturate_u",e.i8x16_sub_saturate_s="~lib/builtins/i8x16.sub_saturate_s",e.i8x16_sub_saturate_u="~lib/builtins/i8x16.sub_saturate_u",e.i8x16_shl="~lib/builtins/i8x16.shl",e.i8x16_shr_s="~lib/builtins/i8x16.shr_s",e.i8x16_shr_u="~lib/builtins/i8x16.shr_u",e.i8x16_any_true="~lib/builtins/i8x16.any_true",e.i8x16_all_true="~lib/builtins/i8x16.all_true",e.i8x16_eq="~lib/builtins/i8x16.eq",e.i8x16_ne="~lib/builtins/i8x16.ne",e.i8x16_lt_s="~lib/builtins/i8x16.lt_s",e.i8x16_lt_u="~lib/builtins/i8x16.lt_u",e.i8x16_le_s="~lib/builtins/i8x16.le_s",e.i8x16_le_u="~lib/builtins/i8x16.le_u",e.i8x16_gt_s="~lib/builtins/i8x16.gt_s",e.i8x16_gt_u="~lib/builtins/i8x16.gt_u",e.i8x16_ge_s="~lib/builtins/i8x16.ge_s",e.i8x16_ge_u="~lib/builtins/i8x16.ge_u",e.i16x8_splat="~lib/builtins/i16x8.splat",e.i16x8_extract_lane_s="~lib/builtins/i16x8.extract_lane_s",e.i16x8_extract_lane_u="~lib/builtins/i16x8.extract_lane_u",e.i16x8_replace_lane="~lib/builtins/i16x8.replace_lane",e.i16x8_add="~lib/builtins/i16x8.add",e.i16x8_sub="~lib/builtins/i16x8.sub",e.i16x8_mul="~lib/builtins/i16x8.mul",e.i16x8_neg="~lib/builtins/i16x8.neg",e.i16x8_add_saturate_s="~lib/builtins/i16x8.add_saturate_s",e.i16x8_add_saturate_u="~lib/builtins/i16x8.add_saturate_u",e.i16x8_sub_saturate_s="~lib/builtins/i16x8.sub_saturate_s",e.i16x8_sub_saturate_u="~lib/builtins/i16x8.sub_saturate_u",e.i16x8_shl="~lib/builtins/i16x8.shl",e.i16x8_shr_s="~lib/builtins/i16x8.shr_s",e.i16x8_shr_u="~lib/builtins/i16x8.shr_u",e.i16x8_any_true="~lib/builtins/i16x8.any_true",e.i16x8_all_true="~lib/builtins/i16x8.all_true",e.i16x8_eq="~lib/builtins/i16x8.eq",e.i16x8_ne="~lib/builtins/i16x8.ne",e.i16x8_lt_s="~lib/builtins/i16x8.lt_s",e.i16x8_lt_u="~lib/builtins/i16x8.lt_u",e.i16x8_le_s="~lib/builtins/i16x8.le_s",e.i16x8_le_u="~lib/builtins/i16x8.le_u",e.i16x8_gt_s="~lib/builtins/i16x8.gt_s",e.i16x8_gt_u="~lib/builtins/i16x8.gt_u",e.i16x8_ge_s="~lib/builtins/i16x8.ge_s",e.i16x8_ge_u="~lib/builtins/i16x8.ge_u",e.i32x4_splat="~lib/builtins/i32x4.splat",e.i32x4_extract_lane="~lib/builtins/i32x4.extract_lane",e.i32x4_replace_lane="~lib/builtins/i32x4.replace_lane",e.i32x4_add="~lib/builtins/i32x4.add",e.i32x4_sub="~lib/builtins/i32x4.sub",e.i32x4_mul="~lib/builtins/i32x4.mul",e.i32x4_neg="~lib/builtins/i32x4.neg",e.i32x4_shl="~lib/builtins/i32x4.shl",e.i32x4_shr_s="~lib/builtins/i32x4.shr_s",e.i32x4_shr_u="~lib/builtins/i32x4.shr_u",e.i32x4_any_true="~lib/builtins/i32x4.any_true",e.i32x4_all_true="~lib/builtins/i32x4.all_true",e.i32x4_eq="~lib/builtins/i32x4.eq",e.i32x4_ne="~lib/builtins/i32x4.ne",e.i32x4_lt_s="~lib/builtins/i32x4.lt_s",e.i32x4_lt_u="~lib/builtins/i32x4.lt_u",e.i32x4_le_s="~lib/builtins/i32x4.le_s",e.i32x4_le_u="~lib/builtins/i32x4.le_u",e.i32x4_gt_s="~lib/builtins/i32x4.gt_s",e.i32x4_gt_u="~lib/builtins/i32x4.gt_u",e.i32x4_ge_s="~lib/builtins/i32x4.ge_s",e.i32x4_ge_u="~lib/builtins/i32x4.ge_u",e.i32x4_trunc_s_f32x4_sat="~lib/builtins/i32x4.trunc_s_f32x4_sat",e.i32x4_trunc_u_f32x4_sat="~lib/builtins/i32x4.trunc_u_f32x4_sat",e.i64x2_splat="~lib/builtins/i64x2.splat",e.i64x2_extract_lane="~lib/builtins/i64x2.extract_lane",e.i64x2_replace_lane="~lib/builtins/i64x2.replace_lane",e.i64x2_add="~lib/builtins/i64x2.add",e.i64x2_sub="~lib/builtins/i64x2.sub",e.i64x2_neg="~lib/builtins/i64x2.neg",e.i64x2_shl="~lib/builtins/i64x2.shl",e.i64x2_shr_s="~lib/builtins/i64x2.shr_s",e.i64x2_shr_u="~lib/builtins/i64x2.shr_u",e.i64x2_any_true="~lib/builtins/i64x2.any_true",e.i64x2_all_true="~lib/builtins/i64x2.all_true",e.i64x2_trunc_s_f64x2_sat="~lib/builtins/i64x2.trunc_s_f64x2_sat",e.i64x2_trunc_u_f64x2_sat="~lib/builtins/i64x2.trunc_u_f64x2_sat",e.f32x4_splat="~lib/builtins/f32x4.splat",e.f32x4_extract_lane="~lib/builtins/f32x4.extract_lane",e.f32x4_replace_lane="~lib/builtins/f32x4.replace_lane",e.f32x4_add="~lib/builtins/f32x4.add",e.f32x4_sub="~lib/builtins/f32x4.sub",e.f32x4_mul="~lib/builtins/f32x4.mul",e.f32x4_div="~lib/builtins/f32x4.div",e.f32x4_neg="~lib/builtins/f32x4.neg",e.f32x4_min="~lib/builtins/f32x4.min",e.f32x4_max="~lib/builtins/f32x4.max",e.f32x4_abs="~lib/builtins/f32x4.abs",e.f32x4_sqrt="~lib/builtins/f32x4.sqrt",e.f32x4_eq="~lib/builtins/f32x4.eq",e.f32x4_ne="~lib/builtins/f32x4.ne",e.f32x4_lt="~lib/builtins/f32x4.lt",e.f32x4_le="~lib/builtins/f32x4.le",e.f32x4_gt="~lib/builtins/f32x4.gt",e.f32x4_ge="~lib/builtins/f32x4.ge",e.f32x4_convert_s_i32x4="~lib/builtins/f32x4.convert_s_i32x4",e.f32x4_convert_u_i32x4="~lib/builtins/f32x4.convert_u_i32x4",e.f64x2_splat="~lib/builtins/f64x2.splat",e.f64x2_extract_lane="~lib/builtins/f64x2.extract_lane",e.f64x2_replace_lane="~lib/builtins/f64x2.replace_lane",e.f64x2_add="~lib/builtins/f64x2.add",e.f64x2_sub="~lib/builtins/f64x2.sub",e.f64x2_mul="~lib/builtins/f64x2.mul",e.f64x2_div="~lib/builtins/f64x2.div",e.f64x2_neg="~lib/builtins/f64x2.neg",e.f64x2_min="~lib/builtins/f64x2.min",e.f64x2_max="~lib/builtins/f64x2.max",e.f64x2_abs="~lib/builtins/f64x2.abs",e.f64x2_sqrt="~lib/builtins/f64x2.sqrt",e.f64x2_eq="~lib/builtins/f64x2.eq",e.f64x2_ne="~lib/builtins/f64x2.ne",e.f64x2_lt="~lib/builtins/f64x2.lt",e.f64x2_le="~lib/builtins/f64x2.le",e.f64x2_gt="~lib/builtins/f64x2.gt",e.f64x2_ge="~lib/builtins/f64x2.ge",e.f64x2_convert_s_i64x2="~lib/builtins/f64x2.convert_s_i64x2",e.f64x2_convert_u_i64x2="~lib/builtins/f64x2.convert_u_i64x2",e.v8x16_shuffle="~lib/builtins/v8x16.shuffle",e.heap_base="~lib/heap/__heap_base",e.rtti_base="~lib/rt/__rtti_base",e.visit_globals="~lib/rt/__visit_globals",e.visit_members="~lib/rt/__visit_members",e.ERROR="~lib/diagnostics/ERROR",e.WARNING="~lib/diagnostics/WARNING",e.INFO="~lib/diagnostics/INFO",e.memory_size="~lib/memory/memory.size",e.memory_grow="~lib/memory/memory.grow",e.memory_copy="~lib/memory/memory.copy",e.memory_fill="~lib/memory/memory.fill",e.memory_allocate="~lib/memory/memory.allocate",e.memory_free="~lib/memory/memory.free",e.memory_reset="~lib/memory/memory.reset",e.runtime_instanceof="~lib/runtime/runtime.instanceof",e.runtime_flags="~lib/runtime/runtime.flags",e.runtime_allocate="~lib/util/runtime/allocate",e.runtime_reallocate="~lib/util/runtime/reallocate",e.runtime_register="~lib/util/runtime/register",e.runtime_discard="~lib/util/runtime/discard",e.runtime_makeArray="~lib/util/runtime/makeArray",e.Int8Array="~lib/typedarray/Int8Array",e.Uint8Array="~lib/typedarray/Uint8Array",e.Int16Array="~lib/typedarray/Int16Array",e.Uint16Array="~lib/typedarray/Uint16Array",e.Int32Array="~lib/typedarray/Int32Array",e.Uint32Array="~lib/typedarray/Uint32Array",e.Int64Array="~lib/typedarray/Int64Array",e.Uint64Array="~lib/typedarray/Uint64Array",e.Uint8ClampedArray="~lib/typedarray/Uint8ClampedArray",e.Float32Array="~lib/typedarray/Float32Array",e.Float64Array="~lib/typedarray/Float64Array",e.started="~lib/started",e.argc="~lib/argc",e.setargc="~lib/setargc",e.capabilities="~lib/capabilities"}(a=r.BuiltinSymbols||(r.BuiltinSymbols={})),r.compileCall=m,r.compileAbort=T,r.compileVisitGlobals=function(e){var r,t,i=e.module,s=new Array,o=e.ensureFunctionType([l.Type.u32],l.Type.void),c=e.options.nativeSizeType,_=assert(e.program.visitInstance);e.compileFunction(_);try{for(var h=n(e.program.elementsByName.values()),y=h.next();!y.done;y=h.next()){var m=y.value;if(m.kind==p.ElementKind.GLOBAL){var f=m,T=f.type.classReference;if(f.is(d.CommonFlags.COMPILED)&&null!==T&&!T.hasDecorator(p.DecoratorFlags.UNMANAGED))if(f.is(d.CommonFlags.INLINED)){var g=f.constantIntegerValue;(i64_low(g)||i64_high(g))&&s.push(i.call(_.internalName,[e.options.isWasm64?i.i64(i64_low(g),i64_high(g)):i.i32(i64_low(g))],u.NativeType.None))}else s.push(i.if(i.local_tee(1,i.global_get(f.internalName,c)),i.call(_.internalName,[i.local_get(1,c),i.local_get(0,u.NativeType.I32)],u.NativeType.None)))}}}catch(e){r={error:e}}finally{try{y&&!y.done&&(t=h.return)&&t.call(h)}finally{if(r)throw r.error}}i.addFunction(a.visit_globals,o,[c],s.length?i.block(null,s):i.nop())},r.compileVisitMembers=function(e){var r,t,o,c,_,h,d=e.program,y=e.module,m=d.options.usizeType,f=m.toNativeType(),T=m.byteSize,g=e.ensureFunctionType([m,l.Type.i32],l.Type.void),E=d.managedClasses,v=assert(d.visitInstance),b=new Array,I=u.Relooper.create(y),x=I.addBlockWithSwitch(y.nop(),y.load(T,!1,f==u.NativeType.I64?y.binary(u.BinaryOp.SubI64,y.local_get(0,f),y.i64(8)):y.binary(u.BinaryOp.SubI32,y.local_get(0,f),y.i32(8)),u.NativeType.I32,0)),A=0;try{for(var N=n(E),S=N.next();!S.done;S=N.next()){var O=i(S.value,2),C=O[0],k=O[1];assert(k.type.isManaged),assert(C==A++);var R=void 0,L=new Array;if(k.isDeclaredInLibrary&&(R=k.lookupInSelf("__visit_impl"))){assert(R.kind==p.ElementKind.FUNCTION_PROTOTYPE);var F=d.resolver.resolveFunction(R,null);if(F&&e.compileFunction(F)){var D=F.signature;assert(1==D.parameterTypes.length&&D.parameterTypes[0]==l.Type.u32&&D.returnType==l.Type.void&&D.thisType==k.type),L.push(y.call(F.internalName,[y.local_get(0,f),y.local_get(1,u.NativeType.I32)],u.NativeType.None))}else L.push(y.unreachable())}else{var B=k.members;if(B)try{for(var P=(o=void 0,n(B.values())),w=P.next();!w.done;w=P.next()){var U=w.value;if(U.kind==p.ElementKind.FIELD)if(U.parent===k)if(U.type.isManaged){var M=U.memoryOffset;assert(M>=0),L.push(y.if(y.local_tee(2,y.load(T,!1,y.local_get(0,f),f,M)),y.call(v.internalName,[y.local_get(2,f),y.local_get(1,u.NativeType.I32)],u.NativeType.None)))}}}catch(e){o={error:e}}finally{try{w&&!w.done&&(c=P.return)&&c.call(P)}finally{if(o)throw o.error}}}k.base||L.push(y.return());var V=I.addBlock(s.flatten(y,L,u.NativeType.None));I.addBranchForSwitch(x,V,[C]),b.push(V)}}catch(e){r={error:e}}finally{try{S&&!S.done&&(t=N.return)&&t.call(N)}finally{if(r)throw r.error}}try{for(var G=n(E),K=G.next();!K.done;K=G.next()){var z=i(K.value,2),Y=(C=z[0],(k=z[1]).base);Y&&I.addBranch(b[C],b[Y.id])}}catch(e){_={error:e}}finally{try{K&&!K.done&&(h=G.return)&&h.call(G)}finally{if(_)throw _.error}}b.push(I.addBlock(y.unreachable())),I.addBranchForSwitch(x,b[b.length-1],[]),e.compileFunction(v),y.addFunction(a.visit_members,g,[f],I.renderAndDispose(x,2))},r.compileRTTI=function(e){var r,t,s=e.program,o=e.module,c=s.managedClasses,l=c.size,p=4+8*l,_=new Uint8Array(p);y.writeI32(l,_,0);var h=4,d=s.arrayBufferViewInstance,m=d.prototype,f=s.arrayPrototype,T=s.setPrototype,E=s.mapPrototype,v=0;try{for(var b=n(c),I=b.next();!I.done;I=b.next()){var x=i(I.value,2),A=x[0],N=x[1];assert(A==v++);var S=0;if(N.isAcyclic&&(S|=16),N!==d&&N.extends(m)){var O=N.getArrayValueType();S|=1,N.extends(f)&&(S|=2),S|=32*g(O)}else if(N.extends(T)){var C=assert(N.getTypeArgumentsTo(T));assert(1==C.length),S|=4,S|=32*g(C[0])}else if(N.extends(E)){C=assert(N.getTypeArgumentsTo(E));assert(2==C.length),S|=8,S|=16384*g(C[0]),S|=32*g(C[1])}y.writeI32(S,_,h),h+=4,N.rttiFlags=S;var k=N.base;y.writeI32(k?k.id:0,_,h),h+=4}}catch(e){r={error:e}}finally{try{I&&!I.done&&(t=b.return)&&t.call(b)}finally{if(r)throw r.error}}assert(h==p);var R=s.options.usizeType,L=e.addMemorySegment(_);if(8==R.size){var F=L.offset;o.addGlobal(a.rtti_base,u.NativeType.I64,!1,o.i64(i64_low(F),i64_high(F)))}else o.addGlobal(a.rtti_base,u.NativeType.I32,!1,o.i32(i64_low(L.offset)))}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=t(5),i=function(){function e(){this.text=[],this.functionId=0}return e.decompile=function(r){var t=new e;return t.decompile(r),t.finish()},e.prototype.decompile=function(e){throw new Error("not implemented")},e.prototype.decompileFunction=function(e){var r=n.getFunctionName(e)||"$"+this.functionId.toString(10),t=n.getFunctionBody(e);this.push("function "),this.push(r),this.push("(");for(var i=0,s=n.getFunctionParamCount(e);i0&&this.push(", "),this.push("$"),this.push(i.toString(10)),this.push(": "),this.push(a(n.getFunctionParamType(e,i)));this.push("): "),this.push(a(n.getFunctionResultType(e))),this.push(" "),n.getExpressionId(t)!=n.ExpressionId.Block&&this.push("{\n"),this.decompileExpression(t),n.getExpressionId(t)!=n.ExpressionId.Block&&this.push("\n}\n"),++this.functionId},e.prototype.decompileExpression=function(e){var r,t,i,s,o=n.getExpressionId(e),c=n.getExpressionType(e);switch(o){case n.ExpressionId.Block:for(null!=(t=n.getBlockName(e))&&(this.push(t),this.push(": ")),this.push("{\n"),s=n.getBlockChildCount(e),i=0;i("),this.push(n.getLoadOffset(e).toString(10)),this.push(" + "),this.decompileExpression(n.getLoadPtr(e)),void this.push(")");case n.ExpressionId.Store:return this.push("store<"),this.push(a(c)),this.push(">("),this.push(n.getStoreOffset(e).toString(10)),this.push(" + "),this.decompileExpression(n.getStorePtr(e)),this.push(", "),this.decompileExpression(n.getStoreValue(e)),void this.push(")");case n.ExpressionId.Const:switch(c){case n.NativeType.I32:return void this.push(n.getConstValueI32(e).toString(10));case n.NativeType.I64:return void this.push(i64_to_string(i64_new(n.getConstValueI64Low(e),n.getConstValueI64High(e))));case n.NativeType.F32:return void this.push(n.getConstValueF32(e).toString(10));case n.NativeType.F64:return void this.push(n.getConstValueF64(e).toString(10))}break;case n.ExpressionId.Unary:switch(n.getUnaryOp(e)){case n.UnaryOp.ClzI32:return this.push("clz("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.CtzI32:return this.push("ctz("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.PopcntI32:return this.push("popcnt("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.NegF32:case n.UnaryOp.NegF64:return this.push("-"),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.AbsF32:return this.push("abs("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.CeilF32:return this.push("ceil("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.FloorF32:return this.push("floor("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.TruncF32:return this.push("trunc("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.NearestF32:return this.push("nearest("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.SqrtF32:return this.push("sqrt("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.EqzI32:case n.UnaryOp.EqzI64:return this.push("!"),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ClzI64:return this.push("clz("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.CtzI64:return this.push("ctz("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.PopcntI64:return this.push("popcnt("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.AbsF64:return this.push("abs("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.CeilF64:return this.push("ceil("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.FloorF64:return this.push("floor("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.TruncF64:return this.push("trunc("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.NearestF64:return this.push("nearest("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.SqrtF64:return this.push("sqrt("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.ExtendI32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ExtendU32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.WrapI64:case n.UnaryOp.TruncF32ToI32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF32ToI64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF32ToU32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF32ToU64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF64ToI32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF64ToI64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF64ToU32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF64ToU64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ReinterpretF32:return this.push("reinterpret("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.ReinterpretF64:return this.push("reinterpret("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.ConvertI32ToF32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertI32ToF64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertU32ToF32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertU32ToF64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertI64ToF32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertI64ToF64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertU64ToF32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertU64ToF64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.PromoteF32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.DemoteF64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ReinterpretI32:return this.push("reinterpret("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.ReinterpretI64:return this.push("reinterpret("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")")}break;case n.ExpressionId.Binary:switch(n.getBinaryOp(e)){case n.BinaryOp.AddI32:case n.BinaryOp.AddI64:case n.BinaryOp.AddF32:case n.BinaryOp.AddF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" + "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.SubI32:case n.BinaryOp.SubI64:case n.BinaryOp.SubF32:case n.BinaryOp.SubF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" - "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.MulI32:case n.BinaryOp.MulI64:case n.BinaryOp.MulF32:case n.BinaryOp.MulF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" * "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.DivI32:case n.BinaryOp.DivI64:case n.BinaryOp.DivF32:case n.BinaryOp.DivF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" / "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.DivU32:return this.push("("),this.decompileExpression(n.getBinaryLeft(e)),this.push(" / "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.RemI32:case n.BinaryOp.RemI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" % "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.RemU32:return this.push("("),this.decompileExpression(n.getBinaryLeft(e)),this.push(" / "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.AndI32:case n.BinaryOp.AndI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" & "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.OrI32:case n.BinaryOp.OrI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" | "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.XorI32:case n.BinaryOp.XorI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" ^ "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.ShlI32:case n.BinaryOp.ShlI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" << "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.ShrU32:case n.BinaryOp.ShrU64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" >>> "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.ShrI32:case n.BinaryOp.ShrI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" >> "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.RotlI32:return this.push("rotl("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.RotrI32:return this.push("rotr("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.EqI32:case n.BinaryOp.EqI64:case n.BinaryOp.EqF32:case n.BinaryOp.EqF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" == "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.NeI32:case n.BinaryOp.NeI64:case n.BinaryOp.NeF32:case n.BinaryOp.NeF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" != "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.LtI32:case n.BinaryOp.LtI64:case n.BinaryOp.LtF32:case n.BinaryOp.LtF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" < "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.LtU32:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" < "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.LeI32:case n.BinaryOp.LeI64:case n.BinaryOp.LeF32:case n.BinaryOp.LeF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" <= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.LeU32:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" <= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GtI32:case n.BinaryOp.GtI64:case n.BinaryOp.GtF32:case n.BinaryOp.GtF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" > "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GtU32:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" > "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GeI32:case n.BinaryOp.GeI64:case n.BinaryOp.GeF32:case n.BinaryOp.GeF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" >= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GeU32:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" >= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.DivU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" / "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.RemU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" % "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.RotlI64:return this.push("rotl("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.RotrI64:return this.push("rotr("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.LtU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" < "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.LeU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" <= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GtU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" > "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GeU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" >= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.CopysignF32:return this.push("copysign("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.MinF32:return this.push("min("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.MaxF32:return this.push("max("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.CopysignF64:return this.push("copysign("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.MinF64:return this.push("min("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.MaxF64:return this.push("max("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")")}return;case n.ExpressionId.Select:return this.push("select<"),this.push(a(c)),this.push(">("),this.decompileExpression(n.getSelectThen(e)),this.push(", "),this.decompileExpression(n.getSelectElse(e)),this.push(", "),this.decompileExpression(n.getSelectCondition(e)),void this.push(")");case n.ExpressionId.Drop:return this.decompileExpression(n.getDropValue(e)),void this.push(";\n");case n.ExpressionId.Return:return void((r=n.getReturnValue(e))?(this.push("return "),this.decompileExpression(r),this.push(";\n")):this.push("return;\n"));case n.ExpressionId.Host:switch(n.getHostOp(e)){case n.HostOp.MemorySize:return void this.push("memory.size()");case n.HostOp.MemoryGrow:return this.push("memory.grow("),this.decompileExpression(n.getHostOperand(e,0)),void this.push(")")}break;case n.ExpressionId.Nop:return void this.push(";\n");case n.ExpressionId.Unreachable:return void this.push("unreachable()");case n.ExpressionId.AtomicCmpxchg:case n.ExpressionId.AtomicRMW:case n.ExpressionId.AtomicWait:case n.ExpressionId.AtomicNotify:}throw new Error("not implemented")},e.prototype.push=function(e){this.text.push(e)},e.prototype.finish=function(){var e=this.text.join("");return this.text=[],e},e}();function a(e){switch(e){case n.NativeType.None:return"void";case n.NativeType.I32:return"i32";case n.NativeType.I64:return"i64";case n.NativeType.F32:return"f32";case n.NativeType.F64:return"f64";case n.NativeType.V128:return"v128";case n.NativeType.Unreachable:throw new Error("unreachable type");case n.NativeType.Auto:throw new Error("auto type");default:throw new Error("unexpected type")}}r.Decompiler=i},function(e,r,t){"use strict";var n,i=this&&this.__extends||(n=function(e,r){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t])})(e,r)},function(e,r){function t(){this.constructor=e}n(e,r),e.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)}),a=this&&this.__values||function(e){var r="function"==typeof Symbol&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},s=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0});var o=t(0),c=t(4),l=t(3),u=t(1),p=function(){function e(e,r){void 0===r&&(r=!1),this.seen=new Map,this.program=e,this.includePrivate}return e.prototype.walk=function(){var e,r;try{for(var t=a(this.program.filesByName.values()),n=t.next();!n.done;n=t.next()){var i=n.value;i.source.sourceKind==l.SourceKind.USER_ENTRY&&this.visitFile(i)}}catch(r){e={error:r}}finally{try{n&&!n.done&&(r=t.return)&&r.call(t)}finally{if(e)throw e.error}}},e.prototype.visitFile=function(e){var r,t,n,i,o=e.exports;if(o)try{for(var c=a(o),l=c.next();!l.done;l=c.next()){var u=s(l.value,2),p=u[0],_=u[1];this.visitElement(p,_)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(t=c.return)&&t.call(c)}finally{if(r)throw r.error}}var h=e.exportsStar;if(h)try{for(var d=a(h),y=d.next();!y.done;y=d.next()){var m=y.value;this.visitFile(m)}}catch(e){n={error:e}}finally{try{y&&!y.done&&(i=d.return)&&i.call(d)}finally{if(n)throw n.error}}},e.prototype.visitElement=function(e,r){if(!r.is(o.CommonFlags.PRIVATE)||this.includePrivate){var t=this.seen;if(t.has(r))this.visitAlias(e,r,t.get(r));else switch(t.set(r,e),r.kind){case c.ElementKind.GLOBAL:r.is(o.CommonFlags.COMPILED)&&this.visitGlobal(e,r);break;case c.ElementKind.ENUM:r.is(o.CommonFlags.COMPILED)&&this.visitEnum(e,r);break;case c.ElementKind.FUNCTION_PROTOTYPE:this.visitFunctionInstances(e,r);break;case c.ElementKind.CLASS_PROTOTYPE:this.visitClassInstances(e,r);break;case c.ElementKind.FIELD:r.is(o.CommonFlags.COMPILED)&&this.visitField(e,r);break;case c.ElementKind.PROPERTY_PROTOTYPE:this.visitPropertyInstances(e,r);break;case c.ElementKind.PROPERTY:var n=r,i=n.getterInstance;i&&this.visitFunction(e,i);var s=n.setterInstance;s&&this.visitFunction(e,s);break;case c.ElementKind.NAMESPACE:(function e(r){var t,n,i,s,l,u;var p=r.members;if(p)try{for(var _=a(p.values()),h=_.next();!h.done;h=_.next()){var d=h.value;switch(d.kind){case c.ElementKind.FUNCTION_PROTOTYPE:var y=d.instances;if(y)try{for(var m=(i=void 0,a(y.values())),f=m.next();!f.done;f=m.next()){var T=f.value;if(T.is(o.CommonFlags.COMPILED))return!0}}catch(e){i={error:e}}finally{try{f&&!f.done&&(s=m.return)&&s.call(m)}finally{if(i)throw i.error}}break;case c.ElementKind.CLASS_PROTOTYPE:var y=d.instances;if(y)try{for(var g=(l=void 0,a(y.values())),E=g.next();!E.done;E=g.next()){var T=E.value;if(T.is(o.CommonFlags.COMPILED))return!0}}catch(e){l={error:e}}finally{try{E&&!E.done&&(u=g.return)&&u.call(g)}finally{if(l)throw l.error}}break;default:if(d.is(o.CommonFlags.COMPILED)||e(d))return!0}}}catch(e){t={error:e}}finally{try{h&&!h.done&&(n=_.return)&&n.call(_)}finally{if(t)throw t.error}}return!1})(r)&&this.visitNamespace(e,r);break;case c.ElementKind.TYPEDEFINITION:break;default:assert(!1)}}},e.prototype.visitFunctionInstances=function(e,r){var t,n,i=r.instances;if(i)try{for(var s=a(i.values()),c=s.next();!c.done;c=s.next()){var l=c.value;l.is(o.CommonFlags.COMPILED)&&this.visitFunction(e,l)}}catch(e){t={error:e}}finally{try{c&&!c.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}},e.prototype.visitClassInstances=function(e,r){var t,n,i=r.instances;if(i)try{for(var s=a(i.values()),c=s.next();!c.done;c=s.next()){var l=c.value;l.is(o.CommonFlags.COMPILED)&&this.visitClass(e,l)}}catch(e){t={error:e}}finally{try{c&&!c.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}},e.prototype.visitPropertyInstances=function(e,r){assert(!1)},e}(),_=function(e){function r(r,t){void 0===t&&(t=!1);var n=e.call(this,r,t)||this;return n.sb=[],n.indentLevel=0,n}return i(r,e),r.build=function(e){return new r(e).build()},r.prototype.visitGlobal=function(e,r){var t=this.sb,n=r.is(o.CommonFlags.INLINED);if(u.indent(t,this.indentLevel),n&&t.push("const "),t.push(this.typeToString(r.type)),t.push(" "),t.push(e),n)switch(r.constantValueKind){case 1:t.push(" = "),t.push(i64_to_string(r.constantIntegerValue));break;case 2:t.push(" = "),t.push(r.constantFloatValue.toString());break;default:assert(!1)}t.push(";\n")},r.prototype.visitEnum=function(e,r){var t,n,i,l,p=this.sb;u.indent(p,this.indentLevel++),p.push("interface "),p.push(e),p.push(" {\n");var _=r.members;if(_){try{for(var h=a(_),d=h.next();!d.done;d=h.next()){var y=s(d.value,2),m=y[0];if((E=y[1]).kind==c.ElementKind.ENUMVALUE){var f=E.is(o.CommonFlags.INLINED);u.indent(p,this.indentLevel),f?p.push("const "):p.push("readonly "),p.push("unsigned long "),p.push(m),f&&(p.push(" = "),assert(1==E.constantValueKind),p.push(i64_low(E.constantIntegerValue).toString(10))),p.push(";\n")}}}catch(e){t={error:e}}finally{try{d&&!d.done&&(n=h.return)&&n.call(h)}finally{if(t)throw t.error}}try{for(var T=a(_.values()),g=T.next();!g.done;g=T.next()){var E;(E=g.value).kind!=c.ElementKind.ENUMVALUE&&this.visitElement(E.name,E)}}catch(e){i={error:e}}finally{try{g&&!g.done&&(l=T.return)&&l.call(T)}finally{if(i)throw i.error}}}u.indent(p,--this.indentLevel),p.push("}\n")},r.prototype.visitFunction=function(e,r){var t,n,i=this.sb,s=r.signature;u.indent(i,this.indentLevel),i.push(this.typeToString(s.returnType)),i.push(" "),i.push(e),i.push("(");for(var o=s.parameterTypes,c=o.length,l=0;l"),null}for(;e.skip(o.Token.BAR);){if(!e.skip(o.Token.NULL))return t||this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"null"),null;y=!0}n=u.Node.createNamedType(_,d||[],y,e.range(a,e.pos))}for(;e.skip(o.Token.OPENBRACKET);){var T=e.tokenPos;if(!e.skip(o.Token.CLOSEBRACKET))return t||this.error(c.DiagnosticCode._0_expected,e.range(),"]"),null;var g=e.range(T,e.pos);y=!1;if(e.skip(o.Token.BAR)){if(!e.skip(o.Token.NULL))return t||this.error(c.DiagnosticCode._0_expected,e.range(),"null"),null;y=!0}if(n=u.Node.createNamedType(u.Node.createSimpleTypeName("Array",g),[n],y,e.range(a,e.pos)),y)break}return n},r.prototype.tryParseFunctionType=function(e){var r,t=e.mark(),n=e.tokenPos,i=null,a=null,s=!1;if(e.skip(o.Token.CLOSEPAREN))s=!0,e.discard(t),i=[];else{s=!1;do{var l=u.ParameterKind.DEFAULT;if(e.skip(o.Token.DOT_DOT_DOT)&&(s=!0,e.discard(t),l=u.ParameterKind.REST),e.skip(o.Token.THIS)){if(!e.skip(o.Token.COLON))return e.reset(t),this.tryParseSignatureIsSignature=!1,null;s=!0,e.discard(t);var p=this.parseType(e,!1);if(!p)return null;if(p.kind!=u.NodeKind.NAMEDTYPE)return this.error(c.DiagnosticCode.Operation_not_supported,p.range),this.tryParseSignatureIsSignature=!0,null;a=p}else{if(!e.skipIdentifier())return s?this.error(c.DiagnosticCode.Identifier_expected,e.range()):e.reset(t),this.tryParseSignatureIsSignature=s,null;var _=u.Node.createIdentifierExpression(e.readIdentifier(),e.range(e.tokenPos,e.pos));if(e.skip(o.Token.QUESTION)&&(s=!0,e.discard(t),l==u.ParameterKind.REST?this.error(c.DiagnosticCode.A_rest_parameter_cannot_be_optional,e.range()):l=u.ParameterKind.OPTIONAL),e.skip(o.Token.COLON)){s=!0,e.discard(t);var h=this.parseType(e);if(!h)return this.tryParseSignatureIsSignature=s,null;var d=new u.ParameterNode;d.parameterKind=l,d.name=_,d.type=h,i?i.push(d):i=[d]}else s&&this.error(c.DiagnosticCode.Type_expected,e.range())}}while(e.skip(o.Token.COMMA));if(!e.skip(o.Token.CLOSEPAREN))return s?this.error(c.DiagnosticCode._0_expected,e.range(),")"):e.reset(t),this.tryParseSignatureIsSignature=s,null}return e.skip(o.Token.EQUALS_GREATERTHAN)?(s=!0,e.discard(t),(r=this.parseType(e))?(this.tryParseSignatureIsSignature=!0,u.Node.createFunctionType(i||[],r,a,!1,e.range(n,e.pos))):(this.tryParseSignatureIsSignature=s,null)):(s?this.error(c.DiagnosticCode._0_expected,e.range(),"=>"):e.reset(t),this.tryParseSignatureIsSignature=s,null)},r.prototype.parseDecorator=function(e){var r=e.tokenPos;if(e.skipIdentifier()){for(var t=e.readIdentifier(),n=u.Node.createIdentifierExpression(t,e.range(r,e.pos));e.skip(o.Token.DOT);){if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;t=e.readIdentifier(),n=u.Node.createPropertyAccessExpression(n,u.Node.createIdentifierExpression(t,e.range()),e.range(r,e.pos))}var i=void 0;if(!e.skip(o.Token.OPENPAREN))return u.Node.createDecorator(n,null,e.range(r,e.pos));if(i=this.parseArguments(e))return u.Node.createDecorator(n,i,e.range(r,e.pos))}else this.error(c.DiagnosticCode.Identifier_expected,e.range());return null},r.prototype.parseVariable=function(e,r,t,n){var i=new Array;do{var a=this.parseVariableDeclaration(e,r,t);if(!a)return null;i.push(a)}while(e.skip(o.Token.COMMA));var s=u.Node.createVariableStatement(i,t,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),s},r.prototype.parseVariableDeclaration=function(e,r,t){if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;var n=u.Node.createIdentifierExpression(e.readIdentifier(),e.range());o.isIllegalVariableIdentifier(n.text)&&this.error(c.DiagnosticCode.Identifier_expected,n.range);var i=r;e.skip(o.Token.EXCLAMATION)&&(i|=a.CommonFlags.DEFINITE_ASSIGNMENT);var s=null;e.skip(o.Token.COLON)&&(s=this.parseType(e));var l=null;if(e.skip(o.Token.EQUALS)){if(i&a.CommonFlags.AMBIENT&&this.error(c.DiagnosticCode.Initializers_are_not_allowed_in_ambient_contexts,e.range()),!(l=this.parseExpression(e,2)))return null}else i&a.CommonFlags.CONST?i&a.CommonFlags.AMBIENT||this.error(c.DiagnosticCode._const_declarations_must_be_initialized,n.range):s||this.error(c.DiagnosticCode.Type_expected,e.range(e.pos));var p=o.Range.join(n.range,e.range());return i&a.CommonFlags.DEFINITE_ASSIGNMENT&&l&&this.error(c.DiagnosticCode.A_definite_assignment_assertion_is_not_permitted_in_this_context,p),u.Node.createVariableDeclaration(n,s,l,t,i,p)},r.prototype.parseEnum=function(e,r,t,n){if(e.next()!=o.Token.IDENTIFIER)return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;var i=u.Node.createIdentifierExpression(e.readIdentifier(),e.range());if(e.next()!=o.Token.OPENBRACE)return this.error(c.DiagnosticCode._0_expected,e.range(),"{"),null;for(var s=new Array;!e.skip(o.Token.CLOSEBRACE);){var l=this.parseEnumValue(e,a.CommonFlags.NONE);if(!l)return null;if(s.push(l),!e.skip(o.Token.COMMA)){if(e.skip(o.Token.CLOSEBRACE))break;return this.error(c.DiagnosticCode._0_expected,e.range(),"}"),null}}var p=u.Node.createEnumDeclaration(i,s,t,r,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),p},r.prototype.parseEnumValue=function(e,r){if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;var t=u.Node.createIdentifierExpression(e.readIdentifier(),e.range()),n=null;return e.skip(o.Token.EQUALS)&&!(n=this.parseExpression(e,2))?null:u.Node.createEnumValueDeclaration(t,n,r,o.Range.join(t.range,e.range()))},r.prototype.parseReturn=function(e){var r=null;if(e.peek(!0)!=o.Token.SEMICOLON&&e.nextToken!=o.Token.CLOSEBRACE&&!e.nextTokenOnNewLine&&!(r=this.parseExpression(e)))return null;var t=u.Node.createReturnStatement(r,e.range());return e.skip(o.Token.SEMICOLON),t},r.prototype.parseTypeParameters=function(e){for(var r=null,t=!1;!e.skip(o.Token.GREATERTHAN);){var n=this.parseTypeParameter(e);if(!n)return null;if(null!==n.defaultType?t=!0:t&&(this.error(c.DiagnosticCode.Required_type_parameters_may_not_follow_optional_type_parameters,n.range),n.defaultType=null),r?r.push(n):r=[n],!e.skip(o.Token.COMMA)){if(e.skip(o.Token.GREATERTHAN))break;return this.error(c.DiagnosticCode._0_expected,e.range(),">"),null}}return r&&r.length||this.error(c.DiagnosticCode.Type_parameter_list_cannot_be_empty,e.range()),r},r.prototype.parseTypeParameter=function(e){if(e.next()==o.Token.IDENTIFIER){var r=u.Node.createIdentifierExpression(e.readIdentifier(),e.range()),t=null;if(e.skip(o.Token.EXTENDS)){if(!(i=this.parseType(e)))return null;if(i.kind!=u.NodeKind.NAMEDTYPE)return this.error(c.DiagnosticCode.Operation_not_supported,i.range),null;t=i}var n=null;if(e.skip(o.Token.EQUALS)){var i;if(!(i=this.parseType(e)))return null;if(i.kind!=u.NodeKind.NAMEDTYPE)return this.error(c.DiagnosticCode.Operation_not_supported,i.range),null;n=i}return u.Node.createTypeParameter(r,t,n,o.Range.join(r.range,e.range()))}return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null},r.prototype.parseParameters=function(e,r){void 0===r&&(r=!1);var t=new Array,n=null,i=!1,a=!1,s=null;if(this.parseParametersThis=null,e.skip(o.Token.THIS)){if(!e.skip(o.Token.COLON))return this.error(c.DiagnosticCode._0_expected,e.range(),":"),null;if(!(s=this.parseType(e)))return null;if(s.kind==u.NodeKind.NAMEDTYPE?this.parseParametersThis=s:this.error(c.DiagnosticCode.Operation_not_supported,s.range),!e.skip(o.Token.COMMA))return e.skip(o.Token.CLOSEPAREN)?t:(this.error(c.DiagnosticCode._0_expected,e.range(),")"),null)}for(;!e.skip(o.Token.CLOSEPAREN);){var l=this.parseParameter(e,r);if(!l)return null;switch(n&&!a&&(this.error(c.DiagnosticCode.A_rest_parameter_must_be_last_in_a_parameter_list,n.name.range),a=!0),l.parameterKind){default:i&&this.error(c.DiagnosticCode.A_required_parameter_cannot_follow_an_optional_parameter,l.name.range);break;case u.ParameterKind.OPTIONAL:i=!0;break;case u.ParameterKind.REST:n=l}if(t.push(l),!e.skip(o.Token.COMMA)){if(e.skip(o.Token.CLOSEPAREN))break;return this.error(c.DiagnosticCode._0_expected,e.range(),")"),null}}return t},r.prototype.parseParameter=function(e,r){void 0===r&&(r=!1);var t=!1,n=!1,i=null,s=a.CommonFlags.NONE;if(r&&(e.skip(o.Token.PUBLIC)?(i=e.range(),s|=a.CommonFlags.PUBLIC):e.skip(o.Token.PROTECTED)?(i=e.range(),s|=a.CommonFlags.PROTECTED):e.skip(o.Token.PRIVATE)&&(i=e.range(),s|=a.CommonFlags.PRIVATE),e.peek()==o.Token.READONLY)){var l=e.mark();e.next(),e.peek()!=o.Token.COLON?(e.discard(l),i||(i=e.range()),s|=a.CommonFlags.READONLY):e.reset(l)}if(e.skip(o.Token.DOT_DOT_DOT)&&(s?this.error(c.DiagnosticCode.A_parameter_property_cannot_be_declared_using_a_rest_parameter,e.range()):i=e.range(),t=!0),e.skipIdentifier()){t||(i=e.range());var p=u.Node.createIdentifierExpression(e.readIdentifier(),e.range()),_=null;if((n=e.skip(o.Token.QUESTION))&&t&&this.error(c.DiagnosticCode.A_rest_parameter_cannot_be_optional,p.range),e.skip(o.Token.COLON)){if(!(_=this.parseType(e)))return null}else _=u.Node.createOmittedType(e.range(e.pos));var h=null;if(e.skip(o.Token.EQUALS)&&(t&&this.error(c.DiagnosticCode.A_rest_parameter_cannot_have_an_initializer,p.range),n?this.error(c.DiagnosticCode.Parameter_cannot_have_question_mark_and_initializer,p.range):n=!0,!(h=this.parseExpression(e,2))))return null;var d=u.Node.createParameter(p,_,h,t?u.ParameterKind.REST:n?u.ParameterKind.OPTIONAL:u.ParameterKind.DEFAULT,o.Range.join(i,e.range()));return d.flags|=s,d}return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null},r.prototype.parseFunction=function(e,r,t,n){if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range(e.pos)),null;var i=u.Node.createIdentifierExpression(e.readIdentifier(),e.range()),s=-1,l=null;if(e.skip(o.Token.LESSTHAN)){if(s=e.tokenPos,!(l=this.parseTypeParameters(e)))return null;r|=a.CommonFlags.GENERIC}if(!e.skip(o.Token.OPENPAREN))return this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"("),null;s<0&&(s=e.tokenPos);var p=this.parseParameters(e);if(!p)return null;var _=this.parseParametersThis,h=0!=(r&a.CommonFlags.SET);h&&(1!=p.length&&this.error(c.DiagnosticCode.A_set_accessor_must_have_exactly_one_parameter,i.range),p.length&&p[0].initializer&&this.error(c.DiagnosticCode.A_set_accessor_parameter_cannot_have_an_initializer,i.range)),r&a.CommonFlags.GET&&p.length&&this.error(c.DiagnosticCode.A_get_accessor_cannot_have_parameters,i.range);var d=null;if(e.skip(o.Token.COLON)&&!(d=this.parseType(e,!0,h)))return null;d||(d=u.Node.createOmittedType(e.range(e.pos)),h||this.error(c.DiagnosticCode.Type_expected,d.range));var y=u.Node.createFunctionType(p,d,_,!1,e.range(s,e.pos)),m=null;if(e.skip(o.Token.OPENBRACE)){if(r&a.CommonFlags.AMBIENT&&this.error(c.DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,e.range()),!(m=this.parseBlockStatement(e,!1)))return null}else r&a.CommonFlags.AMBIENT||this.error(c.DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,e.range(e.pos));var f=u.Node.createFunctionDeclaration(i,l,y,m,t,r,0,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),f},r.prototype.parseFunctionExpression=function(e){var r,t=e.tokenPos,n=0;if(e.token==o.Token.FUNCTION){if(r=e.skipIdentifier()?u.Node.createIdentifierExpression(e.readIdentifier(),e.range()):u.Node.createEmptyIdentifierExpression(e.range(e.pos)),!e.skip(o.Token.OPENPAREN))return this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"("),null}else n=1,assert(e.token==o.Token.OPENPAREN),r=u.Node.createEmptyIdentifierExpression(e.range(e.tokenPos));var i=e.pos,a=this.parseParameters(e);return a?this.parseFunctionExpressionCommon(e,r,a,n,t,i):null},r.prototype.parseFunctionExpressionCommon=function(e,r,t,n,i,s){void 0===i&&(i=-1),void 0===s&&(s=-1),i<0&&(i=r.range.start),s<0&&(s=i);var l=null;if(2!=n&&e.skip(o.Token.COLON)){if(!(l=this.parseType(e)))return null}else l=u.Node.createOmittedType(e.range(e.pos));if(n&&!e.skip(o.Token.EQUALS_GREATERTHAN))return this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"=>"),null;var p=u.Node.createFunctionType(t,l,null,!1,e.range(s,e.pos)),_=null;if(n)if(e.skip(o.Token.OPENBRACE))_=this.parseBlockStatement(e,!1);else{var h=this.parseExpression(e,2);h&&(_=u.Node.createExpressionStatement(h))}else{if(!e.skip(o.Token.OPENBRACE))return this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"{"),null;_=this.parseBlockStatement(e,!1)}if(!_)return null;var d=u.Node.createFunctionDeclaration(r,null,p,_,null,a.CommonFlags.NONE,n,e.range(i,e.pos));return u.Node.createFunctionExpression(d)},r.prototype.parseClassOrInterface=function(e,r,t,n){var i=e.token==o.Token.INTERFACE;if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;var s=u.Node.createIdentifierExpression(e.readIdentifier(),e.range()),l=null;if(e.skip(o.Token.LESSTHAN)){if(!(l=this.parseTypeParameters(e)))return null;r|=a.CommonFlags.GENERIC}var p=null;if(e.skip(o.Token.EXTENDS)){var _=this.parseType(e);if(!_)return null;if(_.kind!=u.NodeKind.NAMEDTYPE)return this.error(c.DiagnosticCode.Operation_not_supported,_.range),null;p=_}var h=null;if(e.skip(o.Token.IMPLEMENTS)){i&&this.error(c.DiagnosticCode.Interface_declaration_cannot_have_implements_clause,e.range());do{var d=this.parseType(e);if(!d)return null;i||(h?h.push(d):h=[d])}while(e.skip(o.Token.COMMA))}if(!e.skip(o.Token.OPENBRACE))return this.error(c.DiagnosticCode._0_expected,e.range(),"{"),null;var y,m=new Array;if(i?(assert(!h),y=u.Node.createInterfaceDeclaration(s,l,p,m,t,r,e.range(n,e.pos))):y=u.Node.createClassDeclaration(s,l,p,h,m,t,r,e.range(n,e.pos)),!e.skip(o.Token.CLOSEBRACE))do{var f=this.parseClassMember(e,y);if(f)m.push(f);else if(this.skipStatement(e),e.skip(o.Token.ENDOFFILE))return this.error(c.DiagnosticCode._0_expected,e.range(),"}"),null}while(!e.skip(o.Token.CLOSEBRACE));return y.range.end=e.pos,y},r.prototype.parseClassExpression=function(e){var r,t=e.tokenPos;if(r=e.skipIdentifier()?u.Node.createIdentifierExpression(e.readIdentifier(),e.range()):u.Node.createEmptyIdentifierExpression(e.range(e.pos)),!e.skip(o.Token.OPENBRACE))return this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"{"),null;var n=new Array,i=u.Node.createClassDeclaration(r,[],null,null,n,null,a.CommonFlags.NONE,e.range(t,e.pos));if(!e.skip(o.Token.CLOSEBRACE))do{var s=this.parseClassMember(e,i);if(s)n.push(s);else if(this.skipStatement(e),e.skip(o.Token.ENDOFFILE))return this.error(c.DiagnosticCode._0_expected,e.range(),"}"),null}while(!e.skip(o.Token.CLOSEBRACE));return i.range.end=e.pos,u.Node.createClassExpression(i)},r.prototype.parseClassMember=function(e,r){var t=e.pos,n=r.kind==u.NodeKind.INTERFACEDECLARATION,i=null;if(e.skip(o.Token.AT)){do{var s=this.parseDecorator(e);if(!s)break;i?i.push(s):i=[s]}while(e.skip(o.Token.AT));i&&n&&this.error(c.DiagnosticCode.Decorators_are_not_valid_here,o.Range.join(i[0].range,i[i.length-1].range))}var l=r.flags&a.CommonFlags.AMBIENT;n&&(l|=a.CommonFlags.VIRTUAL);var p=0,_=0;e.skip(o.Token.PUBLIC)?(n&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(),"public"),l|=a.CommonFlags.PUBLIC,p=e.tokenPos,_=e.pos):e.skip(o.Token.PRIVATE)?(n&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(),"private"),l|=a.CommonFlags.PRIVATE,p=e.tokenPos,_=e.pos):e.skip(o.Token.PROTECTED)&&(n&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(),"protected"),l|=a.CommonFlags.PROTECTED,p=e.tokenPos,_=e.pos);var h=0,d=0,y=0,m=0;e.skip(o.Token.STATIC)?(n&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(),"static"),l|=a.CommonFlags.STATIC,h=e.tokenPos,d=e.pos):(l|=a.CommonFlags.INSTANCE,e.skip(o.Token.ABSTRACT)&&(n&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(),"abstract"),l|=a.CommonFlags.ABSTRACT,y=e.tokenPos,m=e.pos),r.flags&a.CommonFlags.GENERIC&&(l|=a.CommonFlags.GENERIC_CONTEXT));var f=0,T=0;if(e.peek()==o.Token.READONLY){var g=e.mark();e.next(),e.peek()!=o.Token.COLON?(e.discard(g),l|=a.CommonFlags.READONLY,f=e.tokenPos,T=e.pos):e.reset(g)}var E,v=e.mark(),b=!1,I=!1,x=!1,A=0,N=0;if(n||(e.skip(o.Token.GET)?e.peek(!0,o.IdentifierHandling.PREFER)!=o.Token.IDENTIFIER||e.nextTokenOnNewLine?e.reset(v):(l|=a.CommonFlags.GET,I=!0,A=e.tokenPos,N=e.pos,l&a.CommonFlags.READONLY&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(f,T),"readonly")):e.skip(o.Token.SET)?e.peek(!0,o.IdentifierHandling.PREFER)!=o.Token.IDENTIFIER||e.nextTokenOnNewLine?e.reset(v):(l|=a.CommonFlags.SET,x=!0,A=e.tokenPos,N=e.pos,l&a.CommonFlags.READONLY&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(f,T),"readonly")):e.skip(o.Token.CONSTRUCTOR)&&(b=!0,(l|=a.CommonFlags.CONSTRUCTOR)&a.CommonFlags.STATIC&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(h,d),"static"),l&a.CommonFlags.ABSTRACT&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(y,m),"abstract"),l&a.CommonFlags.READONLY&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(f,T),"readonly"))),b)E=u.Node.createConstructorExpression(e.range());else{if(!I&&!x&&e.skip(o.Token.OPENBRACKET)){l&a.CommonFlags.PUBLIC?this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(p,_),"public"):l&a.CommonFlags.PROTECTED?this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(p,_),"protected"):l&a.CommonFlags.PRIVATE&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(p,_),"protected"),l&a.CommonFlags.STATIC&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(h,d),"static"),l&a.CommonFlags.ABSTRACT&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(y,m),"abstract"),l&a.CommonFlags.READONLY&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(f,T),"readonly");var S=this.parseIndexSignatureDeclaration(e,i);return S?(e.skip(o.Token.SEMICOLON),S):null}if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;E=u.Node.createIdentifierExpression(e.readIdentifier(),e.range())}var O=null;if(e.skip(o.Token.LESSTHAN)){var C=e.tokenPos;if(!(O=this.parseTypeParameters(e)))return null;b?this.error(c.DiagnosticCode.Type_parameters_cannot_appear_on_a_constructor_declaration,e.range(C,e.pos)):I||x?this.error(c.DiagnosticCode.An_accessor_cannot_have_type_parameters,e.range(C,e.pos)):l|=a.CommonFlags.GENERIC}if(e.skip(o.Token.OPENPAREN)){var k=e.tokenPos,R=this.parseParameters(e,b);if(!R)return null;var L=this.parseParametersThis;if(b)for(var F=0,D=R.length;F"),null):null;case o.Token.IDENTIFIER:var T=e.readIdentifier();if("null"==T)return u.Node.createNullExpression(e.range());var g=u.Node.createIdentifierExpression(T,e.range(t,e.pos));return e.peek(!0)!=o.Token.EQUALS_GREATERTHAN||e.nextTokenOnNewLine?g:this.parseFunctionExpressionCommon(e,u.Node.createEmptyIdentifierExpression(e.range(t)),[u.Node.createParameter(g,u.Node.createOmittedType(g.range.atEnd),null,u.ParameterKind.DEFAULT,g.range)],2,t);case o.Token.THIS:return u.Node.createThisExpression(e.range(t,e.pos));case o.Token.CONSTRUCTOR:return u.Node.createConstructorExpression(e.range(t,e.pos));case o.Token.SUPER:return e.peek()!=o.Token.DOT&&e.nextToken!=o.Token.OPENPAREN&&this.error(c.DiagnosticCode._super_must_be_followed_by_an_argument_list_or_member_access,e.range()),u.Node.createSuperExpression(e.range(t,e.pos));case o.Token.STRINGLITERAL:return u.Node.createStringLiteralExpression(e.readString(),e.range(t,e.pos));case o.Token.INTEGERLITERAL:return u.Node.createIntegerLiteralExpression(e.readInteger(),e.range(t,e.pos));case o.Token.FLOATLITERAL:return u.Node.createFloatLiteralExpression(e.readFloat(),e.range(t,e.pos));case o.Token.SLASH:var E=e.readRegexpPattern();return e.skip(o.Token.SLASH)?u.Node.createRegexpLiteralExpression(E,e.readRegexpFlags(),e.range(t,e.pos)):(this.error(c.DiagnosticCode._0_expected,e.range(),"/"),null);case o.Token.FUNCTION:return this.parseFunctionExpression(e);case o.Token.CLASS:return this.parseClassExpression(e);default:return r==o.Token.ENDOFFILE?this.error(c.DiagnosticCode.Unexpected_end_of_text,e.range(t)):this.error(c.DiagnosticCode.Expression_expected,e.range()),null}},r.prototype.tryParseTypeArgumentsBeforeArguments=function(e){var r=e.mark();if(!e.skip(o.Token.LESSTHAN))return null;var t=null;do{if(e.peek()===o.Token.GREATERTHAN)break;var n=this.parseType(e,!0,!0);if(!n)return e.reset(r),null;t?t.push(n):t=[n]}while(e.skip(o.Token.COMMA));return e.skip(o.Token.GREATERTHAN)&&e.skip(o.Token.OPENPAREN)?t:(e.reset(r),null)},r.prototype.parseArguments=function(e){for(var r=new Array;!e.skip(o.Token.CLOSEPAREN);){var t=this.parseExpression(e,2);if(!t)return null;if(r.push(t),!e.skip(o.Token.COMMA)){if(e.skip(o.Token.CLOSEPAREN))break;return this.error(c.DiagnosticCode._0_expected,e.range(),")"),null}}return r},r.prototype.parseExpression=function(e,r){void 0===r&&(r=1),assert(0!=r);var t=this.parseExpressionStart(e);if(!t)return null;for(var n,i,a=(t=this.maybeParseCallExpression(e,t)).range.start,s=null;(i=_(n=e.peek()))>=r;){switch(e.next(),n){case o.Token.AS:var l=this.parseType(e);if(!l)return null;t=u.Node.createAssertionExpression(u.AssertionKind.AS,t,l,e.range(a,e.pos));break;case o.Token.EXCLAMATION:t=u.Node.createAssertionExpression(u.AssertionKind.NONNULL,t,null,e.range(a,e.pos));break;case o.Token.INSTANCEOF:var p=this.parseType(e);if(!p)return null;t=u.Node.createInstanceOfExpression(t,p,e.range(a,e.pos));break;case o.Token.OPENBRACKET:if(!(s=this.parseExpression(e)))return null;if(!e.skip(o.Token.CLOSEBRACKET))return this.error(c.DiagnosticCode._0_expected,e.range(),"]"),null;t=u.Node.createElementAccessExpression(t,s,e.range(a,e.pos));break;case o.Token.PLUS_PLUS:case o.Token.MINUS_MINUS:t.kind!=u.NodeKind.IDENTIFIER&&t.kind!=u.NodeKind.ELEMENTACCESS&&t.kind!=u.NodeKind.PROPERTYACCESS&&this.error(c.DiagnosticCode.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,t.range),t=u.Node.createUnaryPostfixExpression(n,t,e.range(a,e.pos));break;case o.Token.QUESTION:var d=this.parseExpression(e);if(!d)return null;if(!e.skip(o.Token.COLON))return this.error(c.DiagnosticCode._0_expected,e.range(),":"),null;var y=this.parseExpression(e,r>1?2:1);if(!y)return null;t=u.Node.createTernaryExpression(t,d,y,e.range(a,e.pos));break;case o.Token.COMMA:var m=[t];do{if(!(t=this.parseExpression(e,2)))return null;m.push(t)}while(e.skip(o.Token.COMMA));t=u.Node.createCommaExpression(m,e.range(a,e.pos));break;default:if(n==o.Token.DOT){if(e.skipIdentifier())s=u.Node.createIdentifierExpression(e.readIdentifier(),e.range());else if(!(s=this.parseExpression(e,h(n)?i:i+1)))return null;if(s.kind==u.NodeKind.IDENTIFIER)t=u.Node.createPropertyAccessExpression(t,s,e.range(a,e.pos));else{if(s.kind!=u.NodeKind.CALL)return this.error(c.DiagnosticCode.Identifier_expected,s.range),null;if(!(t=this.joinPropertyCall(e,a,t,s)))return null}}else{if(!(s=this.parseExpression(e,h(n)?i:i+1)))return null;t=u.Node.createBinaryExpression(n,t,s,e.range(a,e.pos))}}t=this.maybeParseCallExpression(e,t)}return t},r.prototype.joinPropertyCall=function(e,r,t,n){var i=n.expression;switch(i.kind){case u.NodeKind.IDENTIFIER:n.expression=u.Node.createPropertyAccessExpression(t,i,e.range(r,e.pos));break;case u.NodeKind.CALL:var a=this.joinPropertyCall(e,r,t,i);if(!a)return null;n.expression=a,n.range=e.range(r,e.pos);break;default:return this.error(c.DiagnosticCode.Identifier_expected,n.range),null}return n},r.prototype.maybeParseCallExpression=function(e,r){if(u.nodeIsCallable(r.kind))for(var t=null;e.skip(o.Token.OPENPAREN)||u.nodeIsGenericCallable(r.kind)&&null!==(t=this.tryParseTypeArgumentsBeforeArguments(e));){var n=this.parseArguments(e);if(!n)break;r=u.Node.createCallExpression(r,t,n,e.range(r.range.start,e.pos))}return r},r.prototype.skipStatement=function(e){for(e.peek(!0),e.nextTokenOnNewLine&&e.next();;){var r=e.peek(!0);if(r==o.Token.ENDOFFILE||r==o.Token.SEMICOLON){e.next();break}if(e.nextTokenOnNewLine)break;switch(e.next()){case o.Token.IDENTIFIER:e.readIdentifier();break;case o.Token.STRINGLITERAL:e.readString();break;case o.Token.INTEGERLITERAL:e.readInteger();break;case o.Token.FLOATLITERAL:e.readFloat();break;case o.Token.OPENBRACE:this.skipBlock(e)}}},r.prototype.skipBlock=function(e){var r=1,t=!0;do{switch(e.next()){case o.Token.ENDOFFILE:this.error(c.DiagnosticCode._0_expected,e.range(),"}"),t=!1;break;case o.Token.OPENBRACE:++r;break;case o.Token.CLOSEBRACE:--r||(t=!1);break;case o.Token.IDENTIFIER:e.readIdentifier();break;case o.Token.STRINGLITERAL:e.readString();break;case o.Token.INTEGERLITERAL:e.readInteger();break;case o.Token.FLOATLITERAL:e.readFloat()}}while(t)},r}(c.DiagnosticEmitter);function _(e){switch(e){case o.Token.COMMA:return 1;case o.Token.EQUALS:case o.Token.PLUS_EQUALS:case o.Token.MINUS_EQUALS:case o.Token.ASTERISK_ASTERISK_EQUALS:case o.Token.ASTERISK_EQUALS:case o.Token.SLASH_EQUALS:case o.Token.PERCENT_EQUALS:case o.Token.LESSTHAN_LESSTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.AMPERSAND_EQUALS:case o.Token.CARET_EQUALS:case o.Token.BAR_EQUALS:return 4;case o.Token.QUESTION:return 5;case o.Token.BAR_BAR:return 6;case o.Token.AMPERSAND_AMPERSAND:return 7;case o.Token.BAR:return 8;case o.Token.CARET:return 9;case o.Token.AMPERSAND:return 10;case o.Token.EQUALS_EQUALS:case o.Token.EXCLAMATION_EQUALS:case o.Token.EQUALS_EQUALS_EQUALS:case o.Token.EXCLAMATION_EQUALS_EQUALS:return 11;case o.Token.AS:case o.Token.IN:case o.Token.INSTANCEOF:case o.Token.LESSTHAN:case o.Token.GREATERTHAN:case o.Token.LESSTHAN_EQUALS:case o.Token.GREATERTHAN_EQUALS:return 12;case o.Token.LESSTHAN_LESSTHAN:case o.Token.GREATERTHAN_GREATERTHAN:case o.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN:return 13;case o.Token.PLUS:case o.Token.MINUS:return 14;case o.Token.ASTERISK:case o.Token.SLASH:case o.Token.PERCENT:return 15;case o.Token.ASTERISK_ASTERISK:return 16;case o.Token.PLUS_PLUS:case o.Token.MINUS_MINUS:return 18;case o.Token.DOT:case o.Token.NEW:case o.Token.OPENBRACKET:case o.Token.EXCLAMATION:return 20}return 0}function h(e){switch(e){case o.Token.EQUALS:case o.Token.PLUS_EQUALS:case o.Token.MINUS_EQUALS:case o.Token.ASTERISK_ASTERISK_EQUALS:case o.Token.ASTERISK_EQUALS:case o.Token.SLASH_EQUALS:case o.Token.PERCENT_EQUALS:case o.Token.LESSTHAN_LESSTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.AMPERSAND_EQUALS:case o.Token.CARET_EQUALS:case o.Token.BAR_EQUALS:case o.Token.QUESTION:case o.Token.ASTERISK_ASTERISK:return!0;default:return!1}}r.Parser=p,function(e){e[e.NONE=0]="NONE",e[e.COMMA=1]="COMMA",e[e.SPREAD=2]="SPREAD",e[e.YIELD=3]="YIELD",e[e.ASSIGNMENT=4]="ASSIGNMENT",e[e.CONDITIONAL=5]="CONDITIONAL",e[e.LOGICAL_OR=6]="LOGICAL_OR",e[e.LOGICAL_AND=7]="LOGICAL_AND",e[e.BITWISE_OR=8]="BITWISE_OR",e[e.BITWISE_XOR=9]="BITWISE_XOR",e[e.BITWISE_AND=10]="BITWISE_AND",e[e.EQUALITY=11]="EQUALITY",e[e.RELATIONAL=12]="RELATIONAL",e[e.SHIFT=13]="SHIFT",e[e.ADDITIVE=14]="ADDITIVE",e[e.MULTIPLICATIVE=15]="MULTIPLICATIVE",e[e.EXPONENTIATED=16]="EXPONENTIATED",e[e.UNARY_PREFIX=17]="UNARY_PREFIX",e[e.UNARY_POSTFIX=18]="UNARY_POSTFIX",e[e.CALL=19]="CALL",e[e.MEMBERACCESS=20]="MEMBERACCESS",e[e.GROUPING=21]="GROUPING"}(r.Precedence||(r.Precedence={}))},function(e,r,t){t(18),e.exports=t(28)},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),t(19),t(21),t(22),t(23);var n=t(5);n.Module.prototype.toText=function(){return binaryen.wrapModule(this.ref).emitStackIR(!0)},n.Module.prototype.toAsmjs=function(){return binaryen.wrapModule(this.ref).emitAsmjs()}},function(e,r,t){(function(e){const r=e.Binaryen||t(20);for(var n in e.binaryen=r,r)(n.startsWith("_Binaryen")||n.startsWith("_Relooper"))&&(e[n]=r[n]);e.__memory_allocate=r._malloc,e.__memory_free=r._free,e.__memory_copy=r._memmove,e.__store=function(e,t){r.HEAPU8[e]=t},e.__load=function(e){return r.HEAPU8[e]}}).call(this,t(8))},function(r,t){r.exports=e},function(e,r,t){(function(e){var r="undefined"!=typeof window&&window||void 0!==e&&e||self;r.ASC_TARGET=2,r.ASC_NO_ASSERT=!1,r.ASC_MEMORY_BASE=0,r.ASC_OPTIMIZE_LEVEL=3,r.ASC_SHRINK_LEVEL=0,r.ASC_FEATURE_MUTABLE_GLOBAL=!1,r.ASC_FEATURE_SIGN_EXTENSION=!1,r.ASC_FEATURE_BULK_MEMORY=!1,r.ASC_FEATURE_SIMD=!1,r.ASC_FEATURE_THREADS=!1;var t=new Float64Array(1),n=new Uint32Array(t.buffer);function i(){Error.captureStackTrace?Error.captureStackTrace(this,i):this.stack=this.name+": "+this.message+"\n"+(new Error).stack}function a(e){this.message=e||"assertion failed",Error.captureStackTrace?Error.captureStackTrace(this,a):this.stack=this.name+": "+this.message+"\n"+(new Error).stack}Object.defineProperties(r.i8=function(e){return e<<24>>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(r.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(r.i32=r.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(r.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(r.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(r.u32=r.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(r.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(r.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(r.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),r.clz=Math.clz32,r.ctz=function(e){var r=Math.clz32(e&-e);return e?31-r:r},r.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},r.rotl=function(e,r){return e<<(r&=31)|e>>>32-r},r.rotr=function(e,r){return e>>>(r&=31)|e<<32-r},r.abs=Math.abs,r.max=Math.max,r.min=Math.min,r.ceil=Math.ceil,r.floor=Math.floor,r.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},r.select=function(e,r,t){return t?e:r},r.sqrt=Math.sqrt,r.trunc=Math.trunc,r.copysign=function(e,r){return Math.abs(e)*Math.sign(r)},r.bswap=function(e){var r=e>>8&16711935,t=(16711935&e)<<8;return(r=(e=r|t)>>16&65535)|(t=(65535&e)<<16)},r.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",r.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",r.assert=function(e,r){if(e)return e;throw new a(r)},r.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,r){var t=this.split(e).join(r);return e.length||(t=r+t+r),t}}),r.isInteger=Number.isInteger,r.isFloat=function(e){return"number"==typeof e},r.isNullable=function(e){return!0},r.isReference=function(e){return"object"==typeof e||"string"==typeof e},r.isFunction=function(e){return"function"==typeof e},r.isString=function(e){return"string"==typeof e||e instanceof String},r.isArray=Array.isArray,r.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var r=new Array(e);return r.length=0,r},r.isDefined=function(e){return void 0!==e},r.isConstant=function(e){return!1},r.unchecked=function(e){return e},r.fmod=function(e,r){return e%r},r.fmodf=function(e,r){return Math.fround(e%r)},r.JSMath=Math;try{Object.defineProperties(r.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}r.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:r.__memory_allocate||function(r){if(!(r>>>=0))return 0;if(t+r>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+r,2*e.length))).set(n)}var i=t;return 7&(t+=r)&&(t=1+(7|t)),i},fill:r.__memory_fill||function(r,t,n){e.fill(t,r,r+n)},free:r.__memory_free||function(e){},copy:r.__memory_copy||function(r,t,n){e.copyWithin(r,t,t+n)},reset:r.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),r.store=r.__store||function(e,r,t){HEAP[(0|e)+(0|t)]=r},r.load=r.__load||function(e,r){return HEAP[(0|e)+(0|r)]},r.unmanaged=function(){}}).call(this,t(8))},function(e,r,t){(function(e){const r=new Float64Array(1),t=new Float32Array(r.buffer),n=new Int32Array(r.buffer);e.f32_as_i32=function(e){return t[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,t[0]},e.f64_as_i64=function(e){return r[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),r[0]}}).call(this,t(8))},function(e,r,t){(function(e){const r=e.Long||t(24);e.i64_zero=r.ZERO,e.i64_one=r.ONE,e.i64_new=function(e,t){return r.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,r){return e.add(r)},e.i64_sub=function(e,r){return e.sub(r)},e.i64_mul=function(e,r){return e.mul(r)},e.i64_div=function(e,r){return e.div(r)},e.i64_div_u=function(e,r){return e.toUnsigned().div(r.toUnsigned()).toSigned()},e.i64_rem=function(e,r){return e.mod(r)},e.i64_rem_u=function(e,r){return e.toUnsigned().mod(r.toUnsigned()).toSigned()},e.i64_and=function(e,r){return e.and(r)},e.i64_or=function(e,r){return e.or(r)},e.i64_xor=function(e,r){return e.xor(r)},e.i64_shl=function(e,r){return e.shl(r)},e.i64_shr=function(e,r){return e.shr(r)},e.i64_shr_u=function(e,r){return e.shru(r)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,r){return e.eq(r)},e.i64_ne=function(e,r){return e.ne(r)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var n=r.fromInt(t-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=r.fromNumber(f32.MIN_SAFE_INTEGER),i=r.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(i)};const a=r.fromNumber(f64.MIN_SAFE_INTEGER),s=r.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(s)},e.i64_to_f32=function(r){return e.Math.fround(r.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,r){return(r?e.toUnsigned():e).toString(10)}}).call(this,t(8))},function(e,r){e.exports=n;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,r,t){this.low=0|e,this.high=0|r,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=i;var a={},s={};function o(e,r){var t,n,i;return r?(i=0<=(e>>>=0)&&e<256)&&(n=s[e])?n:(t=l(e,(0|e)<0?-1:0,!0),i&&(s[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(n=a[e])?n:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function c(e,r){if(isNaN(e))return r?T:f;if(r){if(e<0)return T;if(e>=d)return I}else{if(e<=-y)return x;if(e+1>=y)return b}return e<0?c(-e,r).neg():l(e%h|0,e/h|0,r)}function l(e,r,t){return new n(e,r,t)}n.fromInt=o,n.fromNumber=c,n.fromBits=l;var u=Math.pow;function p(e,r,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return f;if("number"==typeof r?(t=r,r=!1):r=!!r,(t=t||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),r,t).neg();for(var i=c(u(t,8)),a=f,s=0;s>>0:this.low},A.toNumber=function(){return this.unsigned?(this.high>>>0)*h+(this.low>>>0):this.high*h+(this.low>>>0)},A.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=o).isZero())return l+s;for(;l.length<6;)l="0"+l;s=""+l+s}},A.getHighBits=function(){return this.high},A.getHighBitsUnsigned=function(){return this.high>>>0},A.getLowBits=function(){return this.low},A.getLowBitsUnsigned=function(){return this.low>>>0},A.getNumBitsAbs=function(){if(this.isNegative())return this.eq(x)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,r=31;r>0&&0==(e&1<=0},A.isOdd=function(){return 1==(1&this.low)},A.isEven=function(){return 0==(1&this.low)},A.equals=function(e){return i(e)||(e=_(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},A.eq=A.equals,A.notEquals=function(e){return!this.eq(e)},A.neq=A.notEquals,A.ne=A.notEquals,A.lessThan=function(e){return this.comp(e)<0},A.lt=A.lessThan,A.lessThanOrEqual=function(e){return this.comp(e)<=0},A.lte=A.lessThanOrEqual,A.le=A.lessThanOrEqual,A.greaterThan=function(e){return this.comp(e)>0},A.gt=A.greaterThan,A.greaterThanOrEqual=function(e){return this.comp(e)>=0},A.gte=A.greaterThanOrEqual,A.ge=A.greaterThanOrEqual,A.compare=function(e){if(i(e)||(e=_(e)),this.eq(e))return 0;var r=this.isNegative(),t=e.isNegative();return r&&!t?-1:!r&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},A.comp=A.compare,A.negate=function(){return!this.unsigned&&this.eq(x)?x:this.not().add(g)},A.neg=A.negate,A.add=function(e){i(e)||(e=_(e));var r=this.high>>>16,t=65535&this.high,n=this.low>>>16,a=65535&this.low,s=e.high>>>16,o=65535&e.high,c=e.low>>>16,u=0,p=0,h=0,d=0;return h+=(d+=a+(65535&e.low))>>>16,p+=(h+=n+c)>>>16,u+=(p+=t+o)>>>16,u+=r+s,l((h&=65535)<<16|(d&=65535),(u&=65535)<<16|(p&=65535),this.unsigned)},A.subtract=function(e){return i(e)||(e=_(e)),this.add(e.neg())},A.sub=A.subtract,A.multiply=function(e){if(this.isZero())return f;if(i(e)||(e=_(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return f;if(this.eq(x))return e.isOdd()?x:f;if(e.eq(x))return this.isOdd()?x:f;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(m)&&e.lt(m))return c(this.toNumber()*e.toNumber(),this.unsigned);var r=this.high>>>16,n=65535&this.high,a=this.low>>>16,s=65535&this.low,o=e.high>>>16,u=65535&e.high,p=e.low>>>16,h=65535&e.low,d=0,y=0,T=0,g=0;return T+=(g+=s*h)>>>16,y+=(T+=a*h)>>>16,T&=65535,y+=(T+=s*p)>>>16,d+=(y+=n*h)>>>16,y&=65535,d+=(y+=a*p)>>>16,y&=65535,d+=(y+=s*u)>>>16,d+=r*h+n*p+a*u+s*o,l((T&=65535)<<16|(g&=65535),(d&=65535)<<16|(y&=65535),this.unsigned)},A.mul=A.multiply,A.divide=function(e){if(i(e)||(e=_(e)),e.isZero())throw Error("division by zero");var r,n,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?T:f;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return T;if(e.gt(this.shru(1)))return E;a=T}else{if(this.eq(x))return e.eq(g)||e.eq(v)?x:e.eq(x)?g:(r=this.shr(1).div(e).shl(1)).eq(f)?e.isNegative()?g:v:(n=this.sub(e.mul(r)),a=r.add(n.div(e)));if(e.eq(x))return this.unsigned?T:f;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=f}for(n=this;n.gte(e);){r=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var s=Math.ceil(Math.log(r)/Math.LN2),o=s<=48?1:u(2,s-48),p=c(r),h=p.mul(e);h.isNegative()||h.gt(n);)h=(p=c(r-=o,this.unsigned)).mul(e);p.isZero()&&(p=g),a=a.add(p),n=n.sub(h)}return a},A.div=A.divide,A.modulo=function(e){return i(e)||(e=_(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},A.mod=A.modulo,A.rem=A.modulo,A.not=function(){return l(~this.low,~this.high,this.unsigned)},A.and=function(e){return i(e)||(e=_(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},A.or=function(e){return i(e)||(e=_(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},A.xor=function(e){return i(e)||(e=_(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},A.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},A.shr=A.shiftRight,A.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0===(e&=63))return this;var r=this.high;return e<32?l(this.low>>>e|r<<32-e,r>>>e,this.unsigned):l(32===e?r:r>>>e-32,0,this.unsigned)},A.shru=A.shiftRightUnsigned,A.shr_u=A.shiftRightUnsigned,A.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},A.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},A.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},A.toBytesLE=function(){var e=this.high,r=this.low;return[255&r,r>>>8&255,r>>>16&255,r>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},A.toBytesBE=function(){var e=this.high,r=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,r>>>24,r>>>16&255,r>>>8&255,255&r]},n.fromBytes=function(e,r,t){return t?n.fromBytesLE(e,r):n.fromBytesBE(e,r)},n.fromBytesLE=function(e,r){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,r)},n.fromBytesBE=function(e,r){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],r)}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(r.Feature||(r.Feature={}))},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(r.Target||(r.Target={}))},function(e,r,t){"use strict";var n=this&&this.__decorate||function(e,r,t,n){var i,a=arguments.length,s=a<3?r:null===n?n=Object.getOwnPropertyDescriptor(r,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,r,t,n);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(r,t,s):i(r,t))||s);return a>3&&s&&Object.defineProperty(r,t,s),s};Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(){}return e=n([unmanaged],e)}();r.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(r.TypeinfoFlags||(r.TypeinfoFlags={}))},function(e,r,t){"use strict";var n=this&&this.__values||function(e){var r="function"==typeof Symbol&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};function i(e){for(var t in e)r.hasOwnProperty(t)||(r[t]=e[t])}Object.defineProperty(r,"__esModule",{value:!0});var a=t(11),s=t(14),o=t(15),c=t(2);r.formatDiagnostic=c.formatDiagnosticMessage;var l=t(16);r.parseFile=function(e,r,t,n){return void 0===t&&(t=!1),void 0===n&&(n=null),n||(n=new l.Parser),n.parseFile(e,r,t),n},r.nextFile=function(e){return e.nextFile()},r.getDependee=function(e,r){return e.getDependee(r)},r.nextDiagnostic=function(e){var r=e.program;return r.diagnosticsOffset=0&&r<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(r))),i64_zero)},r.bitsetSet=function(e,r,t){return assert(r>=0&&r<64),t?i64_or(e,i64_shl(i64_one,i64_new(r))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(r))))}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(r.CharCode||(r.CharCode={})),r.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},r.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},r.isDecimalDigit=function(e){return e>=48&&e<=57},r.isOctalDigit=function(e){return e>=48&&e<=55},r.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((r=e)<0||r>65535)&&a(r,n));var r},r.isKeywordCharacter=function(e){return e>=97&&e<=122},r.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((r=e)<0||r>65535)&&a(r,i));var r};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,r){if(e>1),(n=r[t-=1&t])<=e&&e<=r[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0}),r.makeArray=function(e){if(void 0===e&&(e=null),e){for(var r=new Array(e.length),t=0,n=e.length;t0||n=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=r?e.substring(0,a):e.substring(0,a)+e.substring(t+3),n-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(t+4)).length;continue}}}t++}return n>0?e:"."}function s(e){var r=e.length;if(r<=1){if(0==r)return".";if(e.charCodeAt(0)==i)return e}for(;--r>0;)if(e.charCodeAt(r)==i)return e.substring(0,r);return"."}r.normalizePath=a,r.resolvePath=function(e,r){return e.startsWith("std/")?e:a(s(r)+n.PATH_DELIMITER+e)},r.dirname=s},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=" ",i=" ",a=" ";r.indent=function(e,r){for(;r>=4;)e.push(a),r-=4;r>=2&&(e.push(i),r-=2),r&&e.push(n)}},function(e,r,t){"use strict";function n(e,r){return e[r]|e[r+1]<<8|e[r+2]<<16|e[r+3]<<24}function i(e,r,t){r[t]=e,r[t+1]=e>>>8,r[t+2]=e>>>16,r[t+3]=e>>>24}function a(e,r){var t=n(e,r),i=n(e,r+4);return i64_new(t,i)}Object.defineProperty(r,"__esModule",{value:!0}),r.readI8=function(e,r){return e[r]},r.writeI8=function(e,r,t){r[t]=e},r.readI16=function(e,r){return e[r]|e[r+1]<<8},r.writeI16=function(e,r,t){r[t]=e,r[t+1]=e>>>8},r.readI32=n,r.writeI32=i,r.readI64=a,r.writeI64=function(e,r,t){i(i64_low(e),r,t),i(i64_high(e),r,t+4)},r.readF32=function(e,r){return i32_as_f32(n(e,r))},r.writeF32=function(e,r,t){i(f32_as_i32(e),r,t)},r.readF64=function(e,r){return i64_as_f64(a(e,r))},r.writeF64=function(e,r,t){var n=f64_as_i64(e);i(i64_low(n),r,t),i(i64_high(n),r,t+4)}}])}); +!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("binaryen")):"function"==typeof define&&define.amd?define(["binaryen"],r):"object"==typeof exports?exports.assemblyscript=r(require("binaryen")):e.assemblyscript=r(e.binaryen)}("undefined"!=typeof self?self:this,function(e){return function(e){var r={};function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var i in e)t.d(n,i,function(r){return e[r]}.bind(null,i));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=17)}([function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.IMPORT=1]="IMPORT",e[e.EXPORT=2]="EXPORT",e[e.DECLARE=4]="DECLARE",e[e.CONST=8]="CONST",e[e.LET=16]="LET",e[e.STATIC=32]="STATIC",e[e.READONLY=64]="READONLY",e[e.ABSTRACT=128]="ABSTRACT",e[e.PUBLIC=256]="PUBLIC",e[e.PRIVATE=512]="PRIVATE",e[e.PROTECTED=1024]="PROTECTED",e[e.GET=2048]="GET",e[e.SET=4096]="SET",e[e.DEFINITE_ASSIGNMENT=8192]="DEFINITE_ASSIGNMENT",e[e.AMBIENT=16384]="AMBIENT",e[e.GENERIC=32768]="GENERIC",e[e.GENERIC_CONTEXT=65536]="GENERIC_CONTEXT",e[e.INSTANCE=131072]="INSTANCE",e[e.CONSTRUCTOR=262144]="CONSTRUCTOR",e[e.MODULE_EXPORT=524288]="MODULE_EXPORT",e[e.MODULE_IMPORT=1048576]="MODULE_IMPORT",e[e.RESOLVED=2097152]="RESOLVED",e[e.COMPILED=4194304]="COMPILED",e[e.INLINED=8388608]="INLINED",e[e.SCOPED=16777216]="SCOPED",e[e.TRAMPOLINE=33554432]="TRAMPOLINE",e[e.VIRTUAL=67108864]="VIRTUAL",e[e.MAIN=134217728]="MAIN",e[e.QUOTED=268435456]="QUOTED"}(r.CommonFlags||(r.CommonFlags={})),r.PATH_DELIMITER="/",r.PARENT_SUBST="..",r.GETTER_PREFIX="get:",r.SETTER_PREFIX="set:",r.INSTANCE_DELIMITER="#",r.STATIC_DELIMITER=".",r.INNER_DELIMITER="~",r.LIBRARY_SUBST="~lib",r.LIBRARY_PREFIX=r.LIBRARY_SUBST+r.PATH_DELIMITER,r.INDEX_SUFFIX=r.PATH_DELIMITER+"index",function(e){e.EMPTY="",e.i8="i8",e.i16="i16",e.i32="i32",e.i64="i64",e.isize="isize",e.u8="u8",e.u16="u16",e.u32="u32",e.u64="u64",e.usize="usize",e.bool="bool",e.f32="f32",e.f64="f64",e.v128="v128",e.i8x16="i8x16",e.u8x16="u8x16",e.i16x8="i16x8",e.u16x8="u16x8",e.i32x4="i32x4",e.u32x4="u32x4",e.i64x2="i64x2",e.u64x2="u64x2",e.f32x4="f32x4",e.f64x2="f64x2",e.void_="void",e.number="number",e.boolean="boolean",e.string="string",e.native="native",e.indexof="indexof",e.valueof="valueof",e.returnof="returnof",e.null_="null",e.true_="true",e.false_="false",e.this_="this",e.super_="super",e.constructor="constructor",e.ASC_TARGET="ASC_TARGET",e.ASC_NO_TREESHAKING="ASC_NO_TREESHAKING",e.ASC_NO_ASSERT="ASC_NO_ASSERT",e.ASC_MEMORY_BASE="ASC_MEMORY_BASE",e.ASC_OPTIMIZE_LEVEL="ASC_OPTIMIZE_LEVEL",e.ASC_SHRINK_LEVEL="ASC_SHRINK_LEVEL",e.ASC_FEATURE_MUTABLE_GLOBAL="ASC_FEATURE_MUTABLE_GLOBAL",e.ASC_FEATURE_SIGN_EXTENSION="ASC_FEATURE_SIGN_EXTENSION",e.ASC_FEATURE_BULK_MEMORY="ASC_FEATURE_BULK_MEMORY",e.ASC_FEATURE_SIMD="ASC_FEATURE_SIMD",e.ASC_FEATURE_THREADS="ASC_FEATURE_THREADS",e.I8="I8",e.I16="I16",e.I32="I32",e.I64="I64",e.Isize="Isize",e.U8="U8",e.U16="U16",e.U32="U32",e.U64="U64",e.Usize="Usize",e.Bool="Bool",e.F32="F32",e.F64="F64",e.V128="V128",e.String="String",e.Array="Array",e.FixedArray="FixedArray",e.Set="Set",e.Map="Map",e.ArrayBufferView="ArrayBufferView",e.ArrayBuffer="ArrayBuffer",e.Math="Math",e.Mathf="Mathf",e.Int8Array="Int8Array",e.Int16Array="Int16Array",e.Int32Array="Int32Array",e.Int64Array="Int64Array",e.Uint8Array="Uint8Array",e.Uint8ClampedArray="Uint8ClampedArray",e.Uint16Array="Uint16Array",e.Uint32Array="Uint32Array",e.Uint64Array="Uint64Array",e.Float32Array="Float32Array",e.Float64Array="Float64Array",e.abort="abort",e.pow="pow",e.mod="mod",e.alloc="__alloc",e.realloc="__realloc",e.free="__free",e.retain="__retain",e.release="__release",e.collect="__collect",e.typeinfo="__typeinfo",e.instanceof_="__instanceof",e.visit="__visit",e.allocArray="__allocArray"}(r.CommonSymbols||(r.CommonSymbols={}));var n=t(25);r.Feature=n.Feature;var i=t(26);r.Target=i.Target;var a=t(27);r.Typeinfo=a.Typeinfo,r.TypeinfoFlags=a.TypeinfoFlags},function(e,r,t){"use strict";function n(e){for(var t in e)r.hasOwnProperty(t)||(r[t]=e[t])}Object.defineProperty(r,"__esModule",{value:!0}),n(t(29)),n(t(30)),n(t(31)),n(t(32)),n(t(33)),n(t(34)),r.isPowerOf2=function(e){return 0!=e&&0==(e&e-1)}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,i=t(12),a=t(1),s=t(12);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function c(e){switch(e){case n.INFO:return r.COLOR_BLUE;case n.WARNING:return r.COLOR_YELLOW;case n.ERROR:return r.COLOR_RED;default:return assert(!1),""}}r.DiagnosticCode=s.DiagnosticCode,r.diagnosticCodeToString=s.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=r.DiagnosticCategory||(r.DiagnosticCategory={})),r.diagnosticCategoryToString=o,r.COLOR_BLUE="",r.COLOR_YELLOW="",r.COLOR_RED="",r.COLOR_RESET="",r.diagnosticCategoryToColor=c;var l=function(){function e(e,r,t){this.range=null,this.relatedRange=null,this.code=e,this.category=r,this.message=t}return e.create=function(r,t,n,a,s){void 0===n&&(n=null),void 0===a&&(a=null),void 0===s&&(s=null);var o=i.diagnosticCodeToString(r);return null!=n&&(o=o.replace("{0}",n)),null!=a&&(o=o.replace("{1}",a)),null!=s&&(o=o.replace("{2}",s)),new e(r,t,o)},e.createInfo=function(r,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(r,n.INFO,t,i)},e.createWarning=function(r,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(r,n.WARNING,t,i)},e.createError=function(r,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(r,n.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function u(e,t){void 0===t&&(t=!1);for(var n=e.source.text,i=n.length,s=e.start,o=e.end;s>0&&!a.isLineBreak(n.charCodeAt(s-1));)s--;for(;o=0?c.substring(l+1):c,i.statements=new Array,i.range=new s.Range(i,0,t.length),i.text=t,i}return i(r,e),Object.defineProperty(r.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),r}(l);r.Source=$;var ee=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.decorators=null,r.flags=a.CommonFlags.NONE,r}return i(r,e),r.prototype.is=function(e){return(this.flags&e)==e},r.prototype.isAny=function(e){return 0!=(this.flags&e)},r.prototype.set=function(e){this.flags|=e},r}(J);r.DeclarationStatement=ee;var re=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.INDEXSIGNATUREDECLARATION,r}return i(r,e),r}(ee);r.IndexSignatureDeclaration=re;var te=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return i(r,e),r}(ee);r.VariableLikeDeclarationStatement=te;var ne=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.BLOCK,r}return i(r,e),r}(J);r.BlockStatement=ne;var ie=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.BREAK,r}return i(r,e),r}(J);r.BreakStatement=ie;var ae=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.CLASSDECLARATION,r}return i(r,e),Object.defineProperty(r.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),r}(ee);r.ClassDeclaration=ae;var se=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.CONTINUE,r}return i(r,e),r}(J);r.ContinueStatement=se;var oe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.DO,r}return i(r,e),r}(J);r.DoStatement=oe;var ce=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EMPTY,r}return i(r,e),r}(J);r.EmptyStatement=ce;var le=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.ENUMDECLARATION,r}return i(r,e),r}(ee);r.EnumDeclaration=le;var ue=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.ENUMVALUEDECLARATION,r}return i(r,e),r}(te);r.EnumValueDeclaration=ue;var pe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EXPORTIMPORT,r}return i(r,e),r}(l);r.ExportImportStatement=pe;var _e=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EXPORTMEMBER,r}return i(r,e),r}(l);r.ExportMember=_e;var he=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EXPORT,r}return i(r,e),r}(J);r.ExportStatement=he;var de=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EXPORTDEFAULT,r}return i(r,e),r}(J);r.ExportDefaultStatement=de;var ye=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.EXPRESSION,r}return i(r,e),r}(J);r.ExpressionStatement=ye;var me=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.FIELDDECLARATION,r.parameterIndex=-1,r}return i(r,e),r}(te);r.FieldDeclaration=me;var fe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.FOR,r}return i(r,e),r}(J);r.ForStatement=fe,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(r.ArrowKind||(r.ArrowKind={}));var Te=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.FUNCTIONDECLARATION,r}return i(r,e),Object.defineProperty(r.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),r.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},r}(ee);r.FunctionDeclaration=Te;var ge=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.IF,r}return i(r,e),r}(J);r.IfStatement=ge;var Ee=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.IMPORTDECLARATION,r}return i(r,e),r}(ee);r.ImportDeclaration=Ee;var ve=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.IMPORT,r}return i(r,e),r}(J);r.ImportStatement=ve;var be=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.INTERFACEDECLARATION,r}return i(r,e),r}(ae);r.InterfaceDeclaration=be;var Ie=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.METHODDECLARATION,r}return i(r,e),r}(Te);r.MethodDeclaration=Ie;var xe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.NAMESPACEDECLARATION,r}return i(r,e),r}(ee);r.NamespaceDeclaration=xe;var Ae=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.RETURN,r}return i(r,e),r}(J);r.ReturnStatement=Ae;var Ne=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.SWITCHCASE,r}return i(r,e),r}(l);r.SwitchCase=Ne;var Se=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.SWITCH,r}return i(r,e),r}(J);r.SwitchStatement=Se;var Oe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.THROW,r}return i(r,e),r}(J);r.ThrowStatement=Oe;var Ce=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.TRY,r}return i(r,e),r}(J);r.TryStatement=Ce;var ke=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.TYPEDECLARATION,r}return i(r,e),r}(ee);r.TypeDeclaration=ke;var Re=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.VARIABLEDECLARATION,r}return i(r,e),r}(te);r.VariableDeclaration=Re;var Le=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.VARIABLE,r}return i(r,e),r}(J);r.VariableStatement=Le;var Fe=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.VOID,r}return i(r,e),r}(J);r.VoidStatement=Fe;var De=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.kind=o.WHILE,r}return i(r,e),r}(J);function Be(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}r.WhileStatement=De,r.findDecorator=function(e,r){if(r)for(var t=0,n=r.length;t=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},s=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0});var o,c=t(0),l=t(2),u=t(6),p=t(3),_=t(1),h=t(9),d=t(10),y=function(e,r,t,n,i){this.localFile=e,this.localIdentifier=r,this.foreignIdentifier=t,this.foreignPath=n,this.foreignPathAlt=i},m=function(e,r,t,n){this.localIdentifier=e,this.foreignIdentifier=r,this.foreignPath=t,this.foreignPathAlt=n},f=function(e,r,t){this.foreignPath=e,this.foreignPathAlt=r,this.pathLiteral=t};function T(e,r){switch(assert(r.length),e){case p.DecoratorKind.OPERATOR:case p.DecoratorKind.OPERATOR_BINARY:switch(r.charCodeAt(0)){case 91:if("[]"==r)return o.INDEXED_GET;if("[]="==r)return o.INDEXED_SET;break;case 123:if("{}"==r)return o.UNCHECKED_INDEXED_GET;if("{}="==r)return o.UNCHECKED_INDEXED_SET;break;case 43:if("+"==r)return o.ADD;break;case 45:if("-"==r)return o.SUB;break;case 42:if("*"==r)return o.MUL;if("**"==r)return o.POW;break;case 47:if("/"==r)return o.DIV;break;case 37:if("%"==r)return o.REM;break;case 38:if("&"==r)return o.BITWISE_AND;break;case 124:if("|"==r)return o.BITWISE_OR;break;case 94:if("^"==r)return o.BITWISE_XOR;break;case 61:if("=="==r)return o.EQ;break;case 33:if("!="==r)return o.NE;break;case 62:if(">"==r)return o.GT;if(">="==r)return o.GE;if(">>"==r)return o.BITWISE_SHR;if(">>>"==r)return o.BITWISE_SHR_U;break;case 60:if("<"==r)return o.LT;if("<="==r)return o.LE;if("<<"==r)return o.BITWISE_SHL}break;case p.DecoratorKind.OPERATOR_PREFIX:switch(r.charCodeAt(0)){case 43:if("+"==r)return o.PLUS;if("++"==r)return o.PREFIX_INC;break;case 45:if("-"==r)return o.MINUS;if("--"==r)return o.PREFIX_DEC;break;case 33:if("!"==r)return o.NOT;break;case 126:if("~"==r)return o.BITWISE_NOT}break;case p.DecoratorKind.OPERATOR_POSTFIX:switch(r.charCodeAt(0)){case 43:if("++"==r)return o.POSTFIX_INC;break;case 45:if("--"==r)return o.POSTFIX_DEC}}return o.INVALID}!function(e){e[e.INVALID=0]="INVALID",e[e.INDEXED_GET=1]="INDEXED_GET",e[e.INDEXED_SET=2]="INDEXED_SET",e[e.UNCHECKED_INDEXED_GET=3]="UNCHECKED_INDEXED_GET",e[e.UNCHECKED_INDEXED_SET=4]="UNCHECKED_INDEXED_SET",e[e.ADD=5]="ADD",e[e.SUB=6]="SUB",e[e.MUL=7]="MUL",e[e.DIV=8]="DIV",e[e.REM=9]="REM",e[e.POW=10]="POW",e[e.BITWISE_AND=11]="BITWISE_AND",e[e.BITWISE_OR=12]="BITWISE_OR",e[e.BITWISE_XOR=13]="BITWISE_XOR",e[e.BITWISE_SHL=14]="BITWISE_SHL",e[e.BITWISE_SHR=15]="BITWISE_SHR",e[e.BITWISE_SHR_U=16]="BITWISE_SHR_U",e[e.EQ=17]="EQ",e[e.NE=18]="NE",e[e.GT=19]="GT",e[e.GE=20]="GE",e[e.LT=21]="LT",e[e.LE=22]="LE",e[e.PLUS=23]="PLUS",e[e.MINUS=24]="MINUS",e[e.NOT=25]="NOT",e[e.BITWISE_NOT=26]="BITWISE_NOT",e[e.PREFIX_INC=27]="PREFIX_INC",e[e.PREFIX_DEC=28]="PREFIX_DEC",e[e.POSTFIX_INC=29]="POSTFIX_INC",e[e.POSTFIX_DEC=30]="POSTFIX_DEC"}(o=r.OperatorKind||(r.OperatorKind={}));var g,E,v=function(e){function r(r){void 0===r&&(r=null);var t=e.call(this,r)||this;t.sources=[],t.diagnosticsOffset=0,t.filesByName=new Map,t.elementsByName=new Map,t.elementsByDeclaration=new Map,t.instancesByName=new Map,t.typeClasses=new Map,t.managedClasses=new Map,t.uniqueSignatures=new Array(0),t.nextClassId=0,t.nextSignatureId=0,t.nativeDummySignature=null;var n=new p.Source(c.LIBRARY_SUBST,"[native code]",p.SourceKind.LIBRARY_ENTRY);t.nativeSource=n;var i=new N(t,n);return t.nativeFile=i,t.filesByName.set(i.internalName,i),t.resolver=new h.Resolver(t),t}return i(r,e),r.prototype.writeRuntimeHeader=function(e,r,t,n){assert(n<1<<28),_.writeI32(n,e,r),_.writeI32(1,e,r+4),_.writeI32(t.id,e,r+8),_.writeI32(n,e,r+12)},Object.defineProperty(r.prototype,"runtimeHeaderSize",{get:function(){return 16},enumerable:!0,configurable:!0}),r.prototype.makeNativeVariableDeclaration=function(e,r){void 0===r&&(r=c.CommonFlags.NONE);var t=this.nativeSource.range;return p.Node.createVariableDeclaration(p.Node.createIdentifierExpression(e,t),null,null,null,r,t)},r.prototype.makeNativeTypeDeclaration=function(e,r){void 0===r&&(r=c.CommonFlags.NONE);var t=this.nativeSource.range,n=p.Node.createIdentifierExpression(e,t);return p.Node.createTypeDeclaration(n,null,p.Node.createOmittedType(t),null,r,t)},r.prototype.makeNativeFunctionDeclaration=function(e,r){void 0===r&&(r=c.CommonFlags.NONE);var t=this.nativeSource.range;return p.Node.createFunctionDeclaration(p.Node.createIdentifierExpression(e,t),null,this.nativeDummySignature||(this.nativeDummySignature=p.Node.createFunctionType([],p.Node.createNamedType(p.Node.createSimpleTypeName(c.CommonSymbols.void_,t),null,!1,t),null,!1,t)),null,null,r,0,t)},r.prototype.makeNativeNamespaceDeclaration=function(e,r){void 0===r&&(r=c.CommonFlags.NONE);var t=this.nativeSource.range;return p.Node.createNamespaceDeclaration(p.Node.createIdentifierExpression(e,t),[],null,r,t)},r.prototype.makeNativeFunction=function(e,r,t,n,i){return void 0===t&&(t=this.nativeFile),void 0===n&&(n=c.CommonFlags.NONE),void 0===i&&(i=E.NONE),new P(e,new B(e,t,this.makeNativeFunctionDeclaration(e,n),i),r)},r.prototype.getElementByDeclaration=function(e){var r=this.elementsByDeclaration;return assert(r.has(e)),r.get(e)},r.prototype.initialize=function(e){var r,t,n,i,o,_,h,d,y,m,f,T;this.options=e,this.registerNativeType(c.CommonSymbols.i8,u.Type.i8),this.registerNativeType(c.CommonSymbols.i16,u.Type.i16),this.registerNativeType(c.CommonSymbols.i32,u.Type.i32),this.registerNativeType(c.CommonSymbols.i64,u.Type.i64),this.registerNativeType(c.CommonSymbols.isize,e.isizeType),this.registerNativeType(c.CommonSymbols.u8,u.Type.u8),this.registerNativeType(c.CommonSymbols.u16,u.Type.u16),this.registerNativeType(c.CommonSymbols.u32,u.Type.u32),this.registerNativeType(c.CommonSymbols.u64,u.Type.u64),this.registerNativeType(c.CommonSymbols.usize,e.usizeType),this.registerNativeType(c.CommonSymbols.bool,u.Type.bool),this.registerNativeType(c.CommonSymbols.f32,u.Type.f32),this.registerNativeType(c.CommonSymbols.f64,u.Type.f64),this.registerNativeType(c.CommonSymbols.void_,u.Type.void),this.registerNativeType(c.CommonSymbols.number,u.Type.f64),this.registerNativeType(c.CommonSymbols.boolean,u.Type.bool),this.nativeFile.add(c.CommonSymbols.native,new S(c.CommonSymbols.native,this.nativeFile,this.makeNativeTypeDeclaration(c.CommonSymbols.native,c.CommonFlags.EXPORT|c.CommonFlags.GENERIC),E.BUILTIN)),this.nativeFile.add(c.CommonSymbols.indexof,new S(c.CommonSymbols.indexof,this.nativeFile,this.makeNativeTypeDeclaration(c.CommonSymbols.indexof,c.CommonFlags.EXPORT|c.CommonFlags.GENERIC),E.BUILTIN)),this.nativeFile.add(c.CommonSymbols.valueof,new S(c.CommonSymbols.valueof,this.nativeFile,this.makeNativeTypeDeclaration(c.CommonSymbols.valueof,c.CommonFlags.EXPORT|c.CommonFlags.GENERIC),E.BUILTIN)),this.nativeFile.add(c.CommonSymbols.returnof,new S(c.CommonSymbols.returnof,this.nativeFile,this.makeNativeTypeDeclaration(c.CommonSymbols.returnof,c.CommonFlags.EXPORT|c.CommonFlags.GENERIC),E.BUILTIN)),e.hasFeature(8)&&this.registerNativeType(c.CommonSymbols.v128,u.Type.v128),this.registerConstantInteger(c.CommonSymbols.ASC_TARGET,u.Type.i32,i64_new(e.isWasm64?c.Target.WASM64:c.Target.WASM32)),this.registerConstantInteger(c.CommonSymbols.ASC_NO_ASSERT,u.Type.bool,i64_new(e.noAssert?1:0,0)),this.registerConstantInteger(c.CommonSymbols.ASC_MEMORY_BASE,u.Type.i32,i64_new(e.memoryBase,0)),this.registerConstantInteger(c.CommonSymbols.ASC_OPTIMIZE_LEVEL,u.Type.i32,i64_new(e.optimizeLevelHint,0)),this.registerConstantInteger(c.CommonSymbols.ASC_SHRINK_LEVEL,u.Type.i32,i64_new(e.shrinkLevelHint,0)),this.registerConstantInteger(c.CommonSymbols.ASC_FEATURE_MUTABLE_GLOBAL,u.Type.bool,i64_new(e.hasFeature(2)?1:0,0)),this.registerConstantInteger(c.CommonSymbols.ASC_FEATURE_SIGN_EXTENSION,u.Type.bool,i64_new(e.hasFeature(1)?1:0,0)),this.registerConstantInteger(c.CommonSymbols.ASC_FEATURE_BULK_MEMORY,u.Type.bool,i64_new(e.hasFeature(4)?1:0,0)),this.registerConstantInteger(c.CommonSymbols.ASC_FEATURE_SIMD,u.Type.bool,i64_new(e.hasFeature(8)?1:0,0)),this.registerConstantInteger(c.CommonSymbols.ASC_FEATURE_THREADS,u.Type.bool,i64_new(e.hasFeature(16)?1:0,0));for(var v=new Array,b=new Map,I=new Map,A=new Array,O=new Array,C=0,k=this.sources.length;C=48&&ye<=57)this.registerConstantInteger(he,u.Type.i32,i64_new(parseInt(de,10)));else{var me=this.elementsByName;if(!(ve=me.get(de)))throw new Error("no such global element: "+de);if(me.has(he))throw new Error("duplicate global element: "+de);me.set(he,ve)}}}}catch(e){h={error:e}}finally{try{pe&&!pe.done&&(d=ue.return)&&d.call(ue)}finally{if(h)throw h.error}}this.arrayPrototype=this.require(c.CommonSymbols.Array,g.CLASS_PROTOTYPE),this.fixedArrayPrototype=this.require(c.CommonSymbols.FixedArray,g.CLASS_PROTOTYPE),this.setPrototype=this.require(c.CommonSymbols.Set,g.CLASS_PROTOTYPE),this.mapPrototype=this.require(c.CommonSymbols.Map,g.CLASS_PROTOTYPE),this.abortInstance=this.lookupFunction(c.CommonSymbols.abort),this.allocInstance=this.requireFunction(c.CommonSymbols.alloc),this.reallocInstance=this.requireFunction(c.CommonSymbols.realloc),this.freeInstance=this.requireFunction(c.CommonSymbols.free),this.retainInstance=this.requireFunction(c.CommonSymbols.retain),this.releaseInstance=this.requireFunction(c.CommonSymbols.release),this.collectInstance=this.requireFunction(c.CommonSymbols.collect),this.typeinfoInstance=this.requireFunction(c.CommonSymbols.typeinfo),this.instanceofInstance=this.requireFunction(c.CommonSymbols.instanceof_),this.visitInstance=this.requireFunction(c.CommonSymbols.visit),this.allocArrayInstance=this.requireFunction(c.CommonSymbols.allocArray);try{for(var fe=a(this.filesByName.values()),Te=fe.next();!Te.done;Te=fe.next()){if(null!==(j=(L=Te.value).exports)&&L.source.sourceKind==p.SourceKind.USER_ENTRY)try{for(var ge=(f=void 0,a(j.values())),Ee=ge.next();!Ee.done;Ee=ge.next()){var ve=Ee.value;this.markModuleExport(ve)}}catch(e){f={error:e}}finally{try{Ee&&!Ee.done&&(T=ge.return)&&T.call(ge)}finally{if(f)throw f.error}}}}catch(e){y={error:e}}finally{try{Te&&!Te.done&&(m=fe.return)&&m.call(fe)}finally{if(y)throw y.error}}},r.prototype.require=function(e,r){var t=this.lookupGlobal(e);if(!t)throw new Error("missing "+e);if(t.kind!=r)throw new Error("unexpected "+e);return t},r.prototype.requireClass=function(e){var r=this.require(e,g.CLASS_PROTOTYPE),t=this.resolver.resolveClass(r,null);if(!t)throw new Error("invalid "+e);return t},r.prototype.lookupFunction=function(e){var r=this.lookupGlobal(e);return r&&r.kind==g.FUNCTION_PROTOTYPE?this.resolver.resolveFunction(r,null):null},r.prototype.requireFunction=function(e){var r=this.require(e,g.FUNCTION_PROTOTYPE),t=this.resolver.resolveFunction(r,null);if(!t)throw new Error("invalid "+e);return t},r.prototype.markModuleExport=function(e){var r,t,n,i;switch(e.set(c.CommonFlags.MODULE_EXPORT),e.kind){case g.CLASS_PROTOTYPE:var s=e.instanceMembers;if(s)try{for(var o=a(s.values()),l=o.next();!l.done;l=o.next()){var u=l.value;this.markModuleExport(u)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(t=o.return)&&t.call(o)}finally{if(r)throw r.error}}break;case g.PROPERTY_PROTOTYPE:var p=e.getterPrototype;p&&this.markModuleExport(p);var _=e.setterPrototype;_&&this.markModuleExport(_);break;case g.PROPERTY:case g.FUNCTION:case g.FIELD:case g.CLASS:assert(!1)}var h=e.members;if(h)try{for(var d=a(h.values()),y=d.next();!y.done;y=d.next()){u=y.value;this.markModuleExport(u)}}catch(e){n={error:e}}finally{try{y&&!y.done&&(i=d.return)&&i.call(d)}finally{if(n)throw n.error}}},r.prototype.registerNativeType=function(e,r){var t=new S(e,this.nativeFile,this.makeNativeTypeDeclaration(e,c.CommonFlags.EXPORT),E.BUILTIN);t.setType(r),this.nativeFile.add(e,t)},r.prototype.registerNativeTypeClass=function(e,r){assert(!this.typeClasses.has(e));var t=this.lookupGlobal(r);if(t){assert(t.kind==g.CLASS_PROTOTYPE);var n=this.resolver.resolveClass(t,null);n&&this.typeClasses.set(e,n)}},r.prototype.registerConstantInteger=function(e,r,t){assert(r.is(4));var n=new L(e,this.nativeFile,E.NONE,this.makeNativeVariableDeclaration(e,c.CommonFlags.CONST|c.CommonFlags.EXPORT));n.setConstantIntegerValue(t,r),this.nativeFile.add(e,n)},r.prototype.registerConstantFloat=function(e,r,t){assert(r.is(8));var n=new L(e,this.nativeFile,E.NONE,this.makeNativeVariableDeclaration(e,c.CommonFlags.CONST|c.CommonFlags.EXPORT));n.setConstantFloatValue(t,r),this.nativeFile.add(e,n)},r.prototype.ensureGlobal=function(e,r){var t=this.elementsByName;if(t.has(e)&&t.get(e)!==r){var n=q(t.get(e),r);if(!n)return this.error(l.DiagnosticCode.Duplicate_identifier_0,r.identifierNode.range,e),r;r=n}return t.set(e,r),r},r.prototype.lookupGlobal=function(e){var r=this.elementsByName;return r.has(e)?r.get(e):null},r.prototype.requireGlobal=function(e){var r=this.elementsByName;if(r.has(e))return r.get(e);throw new Error("missing global")},r.prototype.lookupForeignFile=function(e,r){var t=this.filesByName;return t.has(e)?t.get(e):t.has(r)?t.get(r):null},r.prototype.lookupForeign=function(e,r,t,n){for(;;){var i=this.lookupForeignFile(r,t);if(!i)return null;var a=i.lookupExport(e);if(a)return a;if(n.has(i)){var s=n.get(i);if(s.has(e)){var o=s.get(e);if(o.foreignPath){e=o.localIdentifier.text,r=o.foreignPath,t=assert(o.foreignPathAlt);continue}if(a=i.lookupInSelf(o.localIdentifier.text))return a}}break}return null},r.prototype.checkDecorators=function(e,r){var t=E.NONE;if(e)for(var n=0,i=e.length;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(r,"__esModule",{value:!0});var i,a,s=t(0);!function(e){e[e.None=_BinaryenTypeNone()]="None",e[e.I32=_BinaryenTypeInt32()]="I32",e[e.I64=_BinaryenTypeInt64()]="I64",e[e.F32=_BinaryenTypeFloat32()]="F32",e[e.F64=_BinaryenTypeFloat64()]="F64",e[e.V128=_BinaryenTypeVec128()]="V128",e[e.Unreachable=_BinaryenTypeUnreachable()]="Unreachable",e[e.Auto=_BinaryenTypeAuto()]="Auto"}(i=r.NativeType||(r.NativeType={})),function(e){e[e.Atomics=_BinaryenFeatureAtomics()]="Atomics",e[e.MutableGloabls=_BinaryenFeatureMutableGlobals()]="MutableGloabls",e[e.NontrappingFPToInt=_BinaryenFeatureNontrappingFPToInt()]="NontrappingFPToInt",e[e.SIMD128=_BinaryenFeatureSIMD128()]="SIMD128",e[e.BulkMemory=_BinaryenFeatureBulkMemory()]="BulkMemory",e[e.SignExt=_BinaryenFeatureSignExt()]="SignExt",e[e.ExceptionHandling=_BinaryenFeatureExceptionHandling()]="ExceptionHandling"}(r.FeatureFlags||(r.FeatureFlags={})),function(e){e[e.Invalid=_BinaryenInvalidId()]="Invalid",e[e.Block=_BinaryenBlockId()]="Block",e[e.If=_BinaryenIfId()]="If",e[e.Loop=_BinaryenLoopId()]="Loop",e[e.Break=_BinaryenBreakId()]="Break",e[e.Switch=_BinaryenSwitchId()]="Switch",e[e.Call=_BinaryenCallId()]="Call",e[e.CallIndirect=_BinaryenCallIndirectId()]="CallIndirect",e[e.LocalGet=_BinaryenLocalGetId()]="LocalGet",e[e.LocalSet=_BinaryenLocalSetId()]="LocalSet",e[e.GlobalGet=_BinaryenGlobalGetId()]="GlobalGet",e[e.GlobalSet=_BinaryenGlobalSetId()]="GlobalSet",e[e.Load=_BinaryenLoadId()]="Load",e[e.Store=_BinaryenStoreId()]="Store",e[e.Const=_BinaryenConstId()]="Const",e[e.Unary=_BinaryenUnaryId()]="Unary",e[e.Binary=_BinaryenBinaryId()]="Binary",e[e.Select=_BinaryenSelectId()]="Select",e[e.Drop=_BinaryenDropId()]="Drop",e[e.Return=_BinaryenReturnId()]="Return",e[e.Host=_BinaryenHostId()]="Host",e[e.Nop=_BinaryenNopId()]="Nop",e[e.Unreachable=_BinaryenUnreachableId()]="Unreachable",e[e.AtomicCmpxchg=_BinaryenAtomicCmpxchgId()]="AtomicCmpxchg",e[e.AtomicRMW=_BinaryenAtomicRMWId()]="AtomicRMW",e[e.AtomicWait=_BinaryenAtomicWaitId()]="AtomicWait",e[e.AtomicNotify=_BinaryenAtomicNotifyId()]="AtomicNotify",e[e.SIMDExtract=_BinaryenSIMDExtractId()]="SIMDExtract",e[e.SIMDReplace=_BinaryenSIMDReplaceId()]="SIMDReplace",e[e.SIMDShuffle=_BinaryenSIMDShuffleId()]="SIMDShuffle",e[e.SIMDBitselect=_BinaryenSIMDBitselectId()]="SIMDBitselect",e[e.SIMDShift=_BinaryenSIMDShiftId()]="SIMDShift",e[e.MemoryInit=_BinaryenMemoryInitId()]="MemoryInit",e[e.DataDrop=_BinaryenDataDropId()]="DataDrop",e[e.MemoryCopy=_BinaryenMemoryCopyId()]="MemoryCopy",e[e.MemoryFill=_BinaryenMemoryFillId()]="MemoryFill"}(a=r.ExpressionId||(r.ExpressionId={})),function(e){e[e.ClzI32=_BinaryenClzInt32()]="ClzI32",e[e.CtzI32=_BinaryenCtzInt32()]="CtzI32",e[e.PopcntI32=_BinaryenPopcntInt32()]="PopcntI32",e[e.NegF32=_BinaryenNegFloat32()]="NegF32",e[e.AbsF32=_BinaryenAbsFloat32()]="AbsF32",e[e.CeilF32=_BinaryenCeilFloat32()]="CeilF32",e[e.FloorF32=_BinaryenFloorFloat32()]="FloorF32",e[e.TruncF32=_BinaryenTruncFloat32()]="TruncF32",e[e.NearestF32=_BinaryenNearestFloat32()]="NearestF32",e[e.SqrtF32=_BinaryenSqrtFloat32()]="SqrtF32",e[e.EqzI32=_BinaryenEqZInt32()]="EqzI32",e[e.ClzI64=_BinaryenClzInt64()]="ClzI64",e[e.CtzI64=_BinaryenCtzInt64()]="CtzI64",e[e.PopcntI64=_BinaryenPopcntInt64()]="PopcntI64",e[e.NegF64=_BinaryenNegFloat64()]="NegF64",e[e.AbsF64=_BinaryenAbsFloat64()]="AbsF64",e[e.CeilF64=_BinaryenCeilFloat64()]="CeilF64",e[e.FloorF64=_BinaryenFloorFloat64()]="FloorF64",e[e.TruncF64=_BinaryenTruncFloat64()]="TruncF64",e[e.NearestF64=_BinaryenNearestFloat64()]="NearestF64",e[e.SqrtF64=_BinaryenSqrtFloat64()]="SqrtF64",e[e.EqzI64=_BinaryenEqZInt64()]="EqzI64",e[e.ExtendI32=_BinaryenExtendSInt32()]="ExtendI32",e[e.ExtendU32=_BinaryenExtendUInt32()]="ExtendU32",e[e.WrapI64=_BinaryenWrapInt64()]="WrapI64",e[e.TruncF32ToI32=_BinaryenTruncSFloat32ToInt32()]="TruncF32ToI32",e[e.TruncF32ToI64=_BinaryenTruncSFloat32ToInt64()]="TruncF32ToI64",e[e.TruncF32ToU32=_BinaryenTruncUFloat32ToInt32()]="TruncF32ToU32",e[e.TruncF32ToU64=_BinaryenTruncUFloat32ToInt64()]="TruncF32ToU64",e[e.TruncF64ToI32=_BinaryenTruncSFloat64ToInt32()]="TruncF64ToI32",e[e.TruncF64ToI64=_BinaryenTruncSFloat64ToInt64()]="TruncF64ToI64",e[e.TruncF64ToU32=_BinaryenTruncUFloat64ToInt32()]="TruncF64ToU32",e[e.TruncF64ToU64=_BinaryenTruncUFloat64ToInt64()]="TruncF64ToU64",e[e.ReinterpretF32=_BinaryenReinterpretFloat32()]="ReinterpretF32",e[e.ReinterpretF64=_BinaryenReinterpretFloat64()]="ReinterpretF64",e[e.ConvertI32ToF32=_BinaryenConvertSInt32ToFloat32()]="ConvertI32ToF32",e[e.ConvertI32ToF64=_BinaryenConvertSInt32ToFloat64()]="ConvertI32ToF64",e[e.ConvertU32ToF32=_BinaryenConvertUInt32ToFloat32()]="ConvertU32ToF32",e[e.ConvertU32ToF64=_BinaryenConvertUInt32ToFloat64()]="ConvertU32ToF64",e[e.ConvertI64ToF32=_BinaryenConvertSInt64ToFloat32()]="ConvertI64ToF32",e[e.ConvertI64ToF64=_BinaryenConvertSInt64ToFloat64()]="ConvertI64ToF64",e[e.ConvertU64ToF32=_BinaryenConvertUInt64ToFloat32()]="ConvertU64ToF32",e[e.ConvertU64ToF64=_BinaryenConvertUInt64ToFloat64()]="ConvertU64ToF64",e[e.PromoteF32=_BinaryenPromoteFloat32()]="PromoteF32",e[e.DemoteF64=_BinaryenDemoteFloat64()]="DemoteF64",e[e.ReinterpretI32=_BinaryenReinterpretInt32()]="ReinterpretI32",e[e.ReinterpretI64=_BinaryenReinterpretInt64()]="ReinterpretI64",e[e.ExtendI8ToI32=_BinaryenExtendS8Int32()]="ExtendI8ToI32",e[e.ExtendI16ToI32=_BinaryenExtendS16Int32()]="ExtendI16ToI32",e[e.ExtendI8ToI64=_BinaryenExtendS8Int64()]="ExtendI8ToI64",e[e.ExtendI16ToI64=_BinaryenExtendS16Int64()]="ExtendI16ToI64",e[e.ExtendI32ToI64=_BinaryenExtendS32Int64()]="ExtendI32ToI64",e[e.SplatVecI8x16=_BinaryenSplatVecI8x16()]="SplatVecI8x16",e[e.SplatVecI16x8=_BinaryenSplatVecI16x8()]="SplatVecI16x8",e[e.SplatVecI32x4=_BinaryenSplatVecI32x4()]="SplatVecI32x4",e[e.SplatVecI64x2=_BinaryenSplatVecI64x2()]="SplatVecI64x2",e[e.SplatVecF32x4=_BinaryenSplatVecF32x4()]="SplatVecF32x4",e[e.SplatVecF64x2=_BinaryenSplatVecF64x2()]="SplatVecF64x2",e[e.NotVec128=_BinaryenNotVec128()]="NotVec128",e[e.NegVecI8x16=_BinaryenNegVecI8x16()]="NegVecI8x16",e[e.AnyTrueVecI8x16=_BinaryenAnyTrueVecI8x16()]="AnyTrueVecI8x16",e[e.AllTrueVecI8x16=_BinaryenAllTrueVecI8x16()]="AllTrueVecI8x16",e[e.NegVecI16x8=_BinaryenNegVecI16x8()]="NegVecI16x8",e[e.AnyTrueVecI16x8=_BinaryenAnyTrueVecI16x8()]="AnyTrueVecI16x8",e[e.AllTrueVecI16x8=_BinaryenAllTrueVecI16x8()]="AllTrueVecI16x8",e[e.NegVecI32x4=_BinaryenNegVecI32x4()]="NegVecI32x4",e[e.AnyTrueVecI32x4=_BinaryenAnyTrueVecI32x4()]="AnyTrueVecI32x4",e[e.AllTrueVecI32x4=_BinaryenAllTrueVecI32x4()]="AllTrueVecI32x4",e[e.NegVecI64x2=_BinaryenNegVecI64x2()]="NegVecI64x2",e[e.AnyTrueVecI64x2=_BinaryenAnyTrueVecI64x2()]="AnyTrueVecI64x2",e[e.AllTrueVecI64x2=_BinaryenAllTrueVecI64x2()]="AllTrueVecI64x2",e[e.AbsVecF32x4=_BinaryenAbsVecF32x4()]="AbsVecF32x4",e[e.NegVecF32x4=_BinaryenNegVecF32x4()]="NegVecF32x4",e[e.SqrtVecF32x4=_BinaryenSqrtVecF32x4()]="SqrtVecF32x4",e[e.AbsVecF64x2=_BinaryenAbsVecF64x2()]="AbsVecF64x2",e[e.NegVecF64x2=_BinaryenNegVecF64x2()]="NegVecF64x2",e[e.SqrtVecF64x2=_BinaryenSqrtVecF64x2()]="SqrtVecF64x2",e[e.TruncSatSVecF32x4ToVecI32x4=_BinaryenTruncSatSVecF32x4ToVecI32x4()]="TruncSatSVecF32x4ToVecI32x4",e[e.TruncSatUVecF32x4ToVecI32x4=_BinaryenTruncSatUVecF32x4ToVecI32x4()]="TruncSatUVecF32x4ToVecI32x4",e[e.TruncSatSVecF64x2ToVecI64x2=_BinaryenTruncSatSVecF64x2ToVecI64x2()]="TruncSatSVecF64x2ToVecI64x2",e[e.TruncSatUVecF64x2ToVecI64x2=_BinaryenTruncSatUVecF64x2ToVecI64x2()]="TruncSatUVecF64x2ToVecI64x2",e[e.ConvertSVecI32x4ToVecF32x4=_BinaryenConvertSVecI32x4ToVecF32x4()]="ConvertSVecI32x4ToVecF32x4",e[e.ConvertUVecI32x4ToVecF32x4=_BinaryenConvertUVecI32x4ToVecF32x4()]="ConvertUVecI32x4ToVecF32x4",e[e.ConvertSVecI64x2ToVecF64x2=_BinaryenConvertSVecI64x2ToVecF64x2()]="ConvertSVecI64x2ToVecF64x2",e[e.ConvertUVecI64x2ToVecF64x2=_BinaryenConvertUVecI64x2ToVecF64x2()]="ConvertUVecI64x2ToVecF64x2"}(r.UnaryOp||(r.UnaryOp={})),function(e){e[e.AddI32=_BinaryenAddInt32()]="AddI32",e[e.SubI32=_BinaryenSubInt32()]="SubI32",e[e.MulI32=_BinaryenMulInt32()]="MulI32",e[e.DivI32=_BinaryenDivSInt32()]="DivI32",e[e.DivU32=_BinaryenDivUInt32()]="DivU32",e[e.RemI32=_BinaryenRemSInt32()]="RemI32",e[e.RemU32=_BinaryenRemUInt32()]="RemU32",e[e.AndI32=_BinaryenAndInt32()]="AndI32",e[e.OrI32=_BinaryenOrInt32()]="OrI32",e[e.XorI32=_BinaryenXorInt32()]="XorI32",e[e.ShlI32=_BinaryenShlInt32()]="ShlI32",e[e.ShrU32=_BinaryenShrUInt32()]="ShrU32",e[e.ShrI32=_BinaryenShrSInt32()]="ShrI32",e[e.RotlI32=_BinaryenRotLInt32()]="RotlI32",e[e.RotrI32=_BinaryenRotRInt32()]="RotrI32",e[e.EqI32=_BinaryenEqInt32()]="EqI32",e[e.NeI32=_BinaryenNeInt32()]="NeI32",e[e.LtI32=_BinaryenLtSInt32()]="LtI32",e[e.LtU32=_BinaryenLtUInt32()]="LtU32",e[e.LeI32=_BinaryenLeSInt32()]="LeI32",e[e.LeU32=_BinaryenLeUInt32()]="LeU32",e[e.GtI32=_BinaryenGtSInt32()]="GtI32",e[e.GtU32=_BinaryenGtUInt32()]="GtU32",e[e.GeI32=_BinaryenGeSInt32()]="GeI32",e[e.GeU32=_BinaryenGeUInt32()]="GeU32",e[e.AddI64=_BinaryenAddInt64()]="AddI64",e[e.SubI64=_BinaryenSubInt64()]="SubI64",e[e.MulI64=_BinaryenMulInt64()]="MulI64",e[e.DivI64=_BinaryenDivSInt64()]="DivI64",e[e.DivU64=_BinaryenDivUInt64()]="DivU64",e[e.RemI64=_BinaryenRemSInt64()]="RemI64",e[e.RemU64=_BinaryenRemUInt64()]="RemU64",e[e.AndI64=_BinaryenAndInt64()]="AndI64",e[e.OrI64=_BinaryenOrInt64()]="OrI64",e[e.XorI64=_BinaryenXorInt64()]="XorI64",e[e.ShlI64=_BinaryenShlInt64()]="ShlI64",e[e.ShrU64=_BinaryenShrUInt64()]="ShrU64",e[e.ShrI64=_BinaryenShrSInt64()]="ShrI64",e[e.RotlI64=_BinaryenRotLInt64()]="RotlI64",e[e.RotrI64=_BinaryenRotRInt64()]="RotrI64",e[e.EqI64=_BinaryenEqInt64()]="EqI64",e[e.NeI64=_BinaryenNeInt64()]="NeI64",e[e.LtI64=_BinaryenLtSInt64()]="LtI64",e[e.LtU64=_BinaryenLtUInt64()]="LtU64",e[e.LeI64=_BinaryenLeSInt64()]="LeI64",e[e.LeU64=_BinaryenLeUInt64()]="LeU64",e[e.GtI64=_BinaryenGtSInt64()]="GtI64",e[e.GtU64=_BinaryenGtUInt64()]="GtU64",e[e.GeI64=_BinaryenGeSInt64()]="GeI64",e[e.GeU64=_BinaryenGeUInt64()]="GeU64",e[e.AddF32=_BinaryenAddFloat32()]="AddF32",e[e.SubF32=_BinaryenSubFloat32()]="SubF32",e[e.MulF32=_BinaryenMulFloat32()]="MulF32",e[e.DivF32=_BinaryenDivFloat32()]="DivF32",e[e.CopysignF32=_BinaryenCopySignFloat32()]="CopysignF32",e[e.MinF32=_BinaryenMinFloat32()]="MinF32",e[e.MaxF32=_BinaryenMaxFloat32()]="MaxF32",e[e.EqF32=_BinaryenEqFloat32()]="EqF32",e[e.NeF32=_BinaryenNeFloat32()]="NeF32",e[e.LtF32=_BinaryenLtFloat32()]="LtF32",e[e.LeF32=_BinaryenLeFloat32()]="LeF32",e[e.GtF32=_BinaryenGtFloat32()]="GtF32",e[e.GeF32=_BinaryenGeFloat32()]="GeF32",e[e.AddF64=_BinaryenAddFloat64()]="AddF64",e[e.SubF64=_BinaryenSubFloat64()]="SubF64",e[e.MulF64=_BinaryenMulFloat64()]="MulF64",e[e.DivF64=_BinaryenDivFloat64()]="DivF64",e[e.CopysignF64=_BinaryenCopySignFloat64()]="CopysignF64",e[e.MinF64=_BinaryenMinFloat64()]="MinF64",e[e.MaxF64=_BinaryenMaxFloat64()]="MaxF64",e[e.EqF64=_BinaryenEqFloat64()]="EqF64",e[e.NeF64=_BinaryenNeFloat64()]="NeF64",e[e.LtF64=_BinaryenLtFloat64()]="LtF64",e[e.LeF64=_BinaryenLeFloat64()]="LeF64",e[e.GtF64=_BinaryenGtFloat64()]="GtF64",e[e.GeF64=_BinaryenGeFloat64()]="GeF64",e[e.EqVecI8x16=_BinaryenEqVecI8x16()]="EqVecI8x16",e[e.NeVecI8x16=_BinaryenNeVecI8x16()]="NeVecI8x16",e[e.LtSVecI8x16=_BinaryenLtSVecI8x16()]="LtSVecI8x16",e[e.LtUVecI8x16=_BinaryenLtUVecI8x16()]="LtUVecI8x16",e[e.LeSVecI8x16=_BinaryenLeSVecI8x16()]="LeSVecI8x16",e[e.LeUVecI8x16=_BinaryenLeUVecI8x16()]="LeUVecI8x16",e[e.GtSVecI8x16=_BinaryenGtSVecI8x16()]="GtSVecI8x16",e[e.GtUVecI8x16=_BinaryenGtUVecI8x16()]="GtUVecI8x16",e[e.GeSVecI8x16=_BinaryenGeSVecI8x16()]="GeSVecI8x16",e[e.GeUVecI8x16=_BinaryenGeUVecI8x16()]="GeUVecI8x16",e[e.EqVecI16x8=_BinaryenEqVecI16x8()]="EqVecI16x8",e[e.NeVecI16x8=_BinaryenNeVecI16x8()]="NeVecI16x8",e[e.LtSVecI16x8=_BinaryenLtSVecI16x8()]="LtSVecI16x8",e[e.LtUVecI16x8=_BinaryenLtUVecI16x8()]="LtUVecI16x8",e[e.LeSVecI16x8=_BinaryenLeSVecI16x8()]="LeSVecI16x8",e[e.LeUVecI16x8=_BinaryenLeUVecI16x8()]="LeUVecI16x8",e[e.GtSVecI16x8=_BinaryenGtSVecI16x8()]="GtSVecI16x8",e[e.GtUVecI16x8=_BinaryenGtUVecI16x8()]="GtUVecI16x8",e[e.GeSVecI16x8=_BinaryenGeSVecI16x8()]="GeSVecI16x8",e[e.GeUVecI16x8=_BinaryenGeUVecI16x8()]="GeUVecI16x8",e[e.EqVecI32x4=_BinaryenEqVecI32x4()]="EqVecI32x4",e[e.NeVecI32x4=_BinaryenNeVecI32x4()]="NeVecI32x4",e[e.LtSVecI32x4=_BinaryenLtSVecI32x4()]="LtSVecI32x4",e[e.LtUVecI32x4=_BinaryenLtUVecI32x4()]="LtUVecI32x4",e[e.LeSVecI32x4=_BinaryenLeSVecI32x4()]="LeSVecI32x4",e[e.LeUVecI32x4=_BinaryenLeUVecI32x4()]="LeUVecI32x4",e[e.GtSVecI32x4=_BinaryenGtSVecI32x4()]="GtSVecI32x4",e[e.GtUVecI32x4=_BinaryenGtUVecI32x4()]="GtUVecI32x4",e[e.GeSVecI32x4=_BinaryenGeSVecI32x4()]="GeSVecI32x4",e[e.GeUVecI32x4=_BinaryenGeUVecI32x4()]="GeUVecI32x4",e[e.EqVecF32x4=_BinaryenEqVecF32x4()]="EqVecF32x4",e[e.NeVecF32x4=_BinaryenNeVecF32x4()]="NeVecF32x4",e[e.LtVecF32x4=_BinaryenLtVecF32x4()]="LtVecF32x4",e[e.LeVecF32x4=_BinaryenLeVecF32x4()]="LeVecF32x4",e[e.GtVecF32x4=_BinaryenGtVecF32x4()]="GtVecF32x4",e[e.GeVecF32x4=_BinaryenGeVecF32x4()]="GeVecF32x4",e[e.EqVecF64x2=_BinaryenEqVecF64x2()]="EqVecF64x2",e[e.NeVecF64x2=_BinaryenNeVecF64x2()]="NeVecF64x2",e[e.LtVecF64x2=_BinaryenLtVecF64x2()]="LtVecF64x2",e[e.LeVecF64x2=_BinaryenLeVecF64x2()]="LeVecF64x2",e[e.GtVecF64x2=_BinaryenGtVecF64x2()]="GtVecF64x2",e[e.GeVecF64x2=_BinaryenGeVecF64x2()]="GeVecF64x2",e[e.AndVec128=_BinaryenAndVec128()]="AndVec128",e[e.OrVec128=_BinaryenOrVec128()]="OrVec128",e[e.XorVec128=_BinaryenXorVec128()]="XorVec128",e[e.AddVecI8x16=_BinaryenAddVecI8x16()]="AddVecI8x16",e[e.AddSatSVecI8x16=_BinaryenAddSatSVecI8x16()]="AddSatSVecI8x16",e[e.AddSatUVecI8x16=_BinaryenAddSatUVecI8x16()]="AddSatUVecI8x16",e[e.SubVecI8x16=_BinaryenSubVecI8x16()]="SubVecI8x16",e[e.SubSatSVecI8x16=_BinaryenSubSatSVecI8x16()]="SubSatSVecI8x16",e[e.SubSatUVecI8x16=_BinaryenSubSatUVecI8x16()]="SubSatUVecI8x16",e[e.MulVecI8x16=_BinaryenMulVecI8x16()]="MulVecI8x16",e[e.AddVecI16x8=_BinaryenAddVecI16x8()]="AddVecI16x8",e[e.AddSatSVecI16x8=_BinaryenAddSatSVecI16x8()]="AddSatSVecI16x8",e[e.AddSatUVecI16x8=_BinaryenAddSatUVecI16x8()]="AddSatUVecI16x8",e[e.SubVecI16x8=_BinaryenSubVecI16x8()]="SubVecI16x8",e[e.SubSatSVecI16x8=_BinaryenSubSatSVecI16x8()]="SubSatSVecI16x8",e[e.SubSatUVecI16x8=_BinaryenSubSatUVecI16x8()]="SubSatUVecI16x8",e[e.MulVecI16x8=_BinaryenMulVecI16x8()]="MulVecI16x8",e[e.AddVecI32x4=_BinaryenAddVecI32x4()]="AddVecI32x4",e[e.SubVecI32x4=_BinaryenSubVecI32x4()]="SubVecI32x4",e[e.MulVecI32x4=_BinaryenMulVecI32x4()]="MulVecI32x4",e[e.AddVecI64x2=_BinaryenAddVecI64x2()]="AddVecI64x2",e[e.SubVecI64x2=_BinaryenSubVecI64x2()]="SubVecI64x2",e[e.AddVecF32x4=_BinaryenAddVecF32x4()]="AddVecF32x4",e[e.SubVecF32x4=_BinaryenSubVecF32x4()]="SubVecF32x4",e[e.MulVecF32x4=_BinaryenMulVecF32x4()]="MulVecF32x4",e[e.DivVecF32x4=_BinaryenDivVecF32x4()]="DivVecF32x4",e[e.MinVecF32x4=_BinaryenMinVecF32x4()]="MinVecF32x4",e[e.MaxVecF32x4=_BinaryenMaxVecF32x4()]="MaxVecF32x4",e[e.AddVecF64x2=_BinaryenAddVecF64x2()]="AddVecF64x2",e[e.SubVecF64x2=_BinaryenSubVecF64x2()]="SubVecF64x2",e[e.MulVecF64x2=_BinaryenMulVecF64x2()]="MulVecF64x2",e[e.DivVecF64x2=_BinaryenDivVecF64x2()]="DivVecF64x2",e[e.MinVecF64x2=_BinaryenMinVecF64x2()]="MinVecF64x2",e[e.MaxVecF64x2=_BinaryenMaxVecF64x2()]="MaxVecF64x2"}(r.BinaryOp||(r.BinaryOp={})),function(e){e[e.MemorySize=_BinaryenMemorySize()]="MemorySize",e[e.MemoryGrow=_BinaryenMemoryGrow()]="MemoryGrow"}(r.HostOp||(r.HostOp={})),function(e){e[e.Add=_BinaryenAtomicRMWAdd()]="Add",e[e.Sub=_BinaryenAtomicRMWSub()]="Sub",e[e.And=_BinaryenAtomicRMWAnd()]="And",e[e.Or=_BinaryenAtomicRMWOr()]="Or",e[e.Xor=_BinaryenAtomicRMWXor()]="Xor",e[e.Xchg=_BinaryenAtomicRMWXchg()]="Xchg"}(r.AtomicRMWOp||(r.AtomicRMWOp={})),function(e){e[e.ExtractLaneSVecI8x16=_BinaryenExtractLaneSVecI8x16()]="ExtractLaneSVecI8x16",e[e.ExtractLaneUVecI8x16=_BinaryenExtractLaneUVecI8x16()]="ExtractLaneUVecI8x16",e[e.ExtractLaneSVecI16x8=_BinaryenExtractLaneSVecI16x8()]="ExtractLaneSVecI16x8",e[e.ExtractLaneUVecI16x8=_BinaryenExtractLaneUVecI16x8()]="ExtractLaneUVecI16x8",e[e.ExtractLaneVecI32x4=_BinaryenExtractLaneVecI32x4()]="ExtractLaneVecI32x4",e[e.ExtractLaneVecI64x2=_BinaryenExtractLaneVecI64x2()]="ExtractLaneVecI64x2",e[e.ExtractLaneVecF32x4=_BinaryenExtractLaneVecF32x4()]="ExtractLaneVecF32x4",e[e.ExtractLaneVecF64x2=_BinaryenExtractLaneVecF64x2()]="ExtractLaneVecF64x2"}(r.SIMDExtractOp||(r.SIMDExtractOp={})),function(e){e[e.ReplaceLaneVecI8x16=_BinaryenReplaceLaneVecI8x16()]="ReplaceLaneVecI8x16",e[e.ReplaceLaneVecI16x8=_BinaryenReplaceLaneVecI16x8()]="ReplaceLaneVecI16x8",e[e.ReplaceLaneVecI32x4=_BinaryenReplaceLaneVecI32x4()]="ReplaceLaneVecI32x4",e[e.ReplaceLaneVecI64x2=_BinaryenReplaceLaneVecI64x2()]="ReplaceLaneVecI64x2",e[e.ReplaceLaneVecF32x4=_BinaryenReplaceLaneVecF32x4()]="ReplaceLaneVecF32x4",e[e.ReplaceLaneVecF64x2=_BinaryenReplaceLaneVecF64x2()]="ReplaceLaneVecF64x2"}(r.SIMDReplaceOp||(r.SIMDReplaceOp={})),function(e){e[e.ShlVecI8x16=_BinaryenShlVecI8x16()]="ShlVecI8x16",e[e.ShrSVecI8x16=_BinaryenShrSVecI8x16()]="ShrSVecI8x16",e[e.ShrUVecI8x16=_BinaryenShrUVecI8x16()]="ShrUVecI8x16",e[e.ShlVecI16x8=_BinaryenShlVecI16x8()]="ShlVecI16x8",e[e.ShrSVecI16x8=_BinaryenShrSVecI16x8()]="ShrSVecI16x8",e[e.ShrUVecI16x8=_BinaryenShrUVecI16x8()]="ShrUVecI16x8",e[e.ShlVecI32x4=_BinaryenShlVecI32x4()]="ShlVecI32x4",e[e.ShrSVecI32x4=_BinaryenShrSVecI32x4()]="ShrSVecI32x4",e[e.ShrUVecI32x4=_BinaryenShrUVecI32x4()]="ShrUVecI32x4",e[e.ShlVecI64x2=_BinaryenShlVecI64x2()]="ShlVecI64x2",e[e.ShrSVecI64x2=_BinaryenShrSVecI64x2()]="ShrSVecI64x2",e[e.ShrUVecI64x2=_BinaryenShrUVecI64x2()]="ShrUVecI64x2"}(r.SIMDShiftOp||(r.SIMDShiftOp={}));var o=function(){function e(){}return e.create=function(r,t){var n=new e;return n.buffer=r,n.offset=t,n},e}();r.MemorySegment=o;var c=function(){function e(){this.hasTemporaryFunction=!1,this.cachedPrecomputeNames=0,this.cachedStrings=new Map}return e.create=function(){var r=new e;return r.ref=_BinaryenModuleCreate(),r.lit=memory.allocate(_BinaryenSizeofLiteral()),r},e.createFrom=function(r){var t=p(r);try{var n=new e;return n.ref=_BinaryenModuleRead(t,r.length),n.lit=memory.allocate(_BinaryenSizeofLiteral()),n}finally{memory.free(changetype(t))}},e.prototype.addFunctionType=function(e,r,t){var n=this.allocStringCached(e),i=_(t);try{return _BinaryenAddFunctionType(this.ref,n,r,i,t?t.length:0)}finally{memory.free(i)}},e.prototype.getFunctionTypeBySignature=function(e,r){var t=_(r);try{return _BinaryenGetFunctionTypeBySignature(this.ref,e,t,r?r.length:0)}finally{memory.free(t)}},e.prototype.removeFunctionType=function(e){var r=this.allocStringCached(e);_BinaryenRemoveFunctionType(this.ref,r)},e.prototype.i32=function(e){var r=this.lit;return _BinaryenLiteralInt32(r,e),_BinaryenConst(this.ref,r)},e.prototype.i64=function(e,r){void 0===r&&(r=0);var t=this.lit;return _BinaryenLiteralInt64(t,e,r),_BinaryenConst(this.ref,t)},e.prototype.f32=function(e){var r=this.lit;return _BinaryenLiteralFloat32(r,e),_BinaryenConst(this.ref,r)},e.prototype.f64=function(e){var r=this.lit;return _BinaryenLiteralFloat64(r,e),_BinaryenConst(this.ref,r)},e.prototype.v128=function(e){assert(16==e.length);for(var r=this.lit,t=0;t<16;++t)store(r+t,e[t]);return _BinaryenLiteralVec128(r,r),_BinaryenConst(this.ref,r)},e.prototype.unary=function(e,r){return _BinaryenUnary(this.ref,e,r)},e.prototype.binary=function(e,r,t){return _BinaryenBinary(this.ref,e,r,t)},e.prototype.host=function(e,r,t){void 0===r&&(r=null),void 0===t&&(t=null);var n=this.allocStringCached(r),i=h(t);try{return _BinaryenHost(this.ref,e,n,i,t?t.length:0)}finally{memory.free(i)}},e.prototype.local_get=function(e,r){return _BinaryenLocalGet(this.ref,e,r)},e.prototype.local_tee=function(e,r){return _BinaryenLocalTee(this.ref,e,r)},e.prototype.global_get=function(e,r){var t=this.allocStringCached(e);return _BinaryenGlobalGet(this.ref,t,r)},e.prototype.load=function(e,r,t,n,i,a){return void 0===i&&(i=0),void 0===a&&(a=e),_BinaryenLoad(this.ref,e,r?1:0,i,a,n,t)},e.prototype.store=function(e,r,t,n,a,s){if(void 0===a&&(a=0),void 0===s&&(s=e),ni.V128)throw new Error("here: "+n);return _BinaryenStore(this.ref,e,a,s,r,t,n)},e.prototype.atomic_load=function(e,r,t,n){return void 0===n&&(n=0),_BinaryenAtomicLoad(this.ref,e,n,t,r)},e.prototype.atomic_store=function(e,r,t,n,i){return void 0===i&&(i=0),_BinaryenAtomicStore(this.ref,e,i,r,t,n)},e.prototype.atomic_rmw=function(e,r,t,n,i,a){return _BinaryenAtomicRMW(this.ref,e,r,t,n,i,a)},e.prototype.atomic_cmpxchg=function(e,r,t,n,i,a){return _BinaryenAtomicCmpxchg(this.ref,e,r,t,n,i,a)},e.prototype.atomic_wait=function(e,r,t,n){return _BinaryenAtomicWait(this.ref,e,r,t,n)},e.prototype.atomic_notify=function(e,r){return _BinaryenAtomicNotify(this.ref,e,r)},e.prototype.local_set=function(e,r){return _BinaryenLocalSet(this.ref,e,r)},e.prototype.global_set=function(e,r){var t=this.allocStringCached(e);return _BinaryenGlobalSet(this.ref,t,r)},e.prototype.block=function(e,r,t){void 0===t&&(t=i.None);var n=this.allocStringCached(e),a=h(r);try{return _BinaryenBlock(this.ref,n,a,r.length,t)}finally{memory.free(a)}},e.prototype.br=function(e,r,t){void 0===r&&(r=0),void 0===t&&(t=0);var n=this.allocStringCached(e);return _BinaryenBreak(this.ref,n,r,t)},e.prototype.drop=function(e){return _BinaryenDrop(this.ref,e)},e.prototype.loop=function(e,r){var t=this.allocStringCached(e);return _BinaryenLoop(this.ref,t,r)},e.prototype.if=function(e,r,t){return void 0===t&&(t=0),_BinaryenIf(this.ref,e,r,t)},e.prototype.nop=function(){return _BinaryenNop(this.ref)},e.prototype.return=function(e){return void 0===e&&(e=0),_BinaryenReturn(this.ref,e)},e.prototype.select=function(e,r,t){return _BinaryenSelect(this.ref,t,e,r)},e.prototype.switch=function(e,r,t,n){void 0===n&&(n=0);for(var i=e.length,a=new Array(i),s=0;s=0;--y)memory.free(l[y])}},e.prototype.setFunctionTable=function(e,r,t){for(var n=t.length,i=new Array(n),a=0;a=0;--i)memory.free(n[i])}},e.prototype.precomputeExpression=function(e){var r=_BinaryenGetOptimizeLevel(),t=_BinaryenGetShrinkLevel(),n=_BinaryenGetDebugInfo();_BinaryenSetOptimizeLevel(4),_BinaryenSetShrinkLevel(0),_BinaryenSetDebugInfo(!1);var i=_BinaryenExpressionGetType(e),s=this.addTemporaryFunction(i,null,e),o=this.cachedPrecomputeNames;return o||(this.cachedPrecomputeNames=o=_([this.allocStringCached("vacuum"),this.allocStringCached("precompute")])),_BinaryenFunctionRunPasses(s,this.ref,o,2),e=_BinaryenFunctionGetBody(s),_BinaryenExpressionGetId(e)==a.Return&&(e=_BinaryenReturnGetValue(e)),this.removeTemporaryFunction(),_BinaryenSetOptimizeLevel(r),_BinaryenSetShrinkLevel(t),_BinaryenSetDebugInfo(n),e},e.prototype.validate=function(){return 1==_BinaryenModuleValidate(this.ref)},e.prototype.interpret=function(){_BinaryenModuleInterpret(this.ref)},e.prototype.toBinary=function(e){var r=this.lit;assert(_BinaryenSizeofLiteral()>=12);var t=d(e),n=0,i=0;try{_BinaryenModuleAllocateAndWrite(r,this.ref,t),n=y(r);var a=y(r+4);i=y(r+8);var s=new f;return s.output=function(e,r){for(var t=new Uint8Array(r),n=0;n>8&255),store(t+2,a>>16&255),store(t+3,a>>>24),t+=4}return r}function h(e){return _(e)}function d(e){if(null==e)return 0;for(var r=memory.allocate(function(e){for(var r=0,t=0,n=e.length;t=55296&&i<=57343&&t+1=55296&&a<=57343&&n+1>>6),store(t++,128|63&a)):a<=65535?(store(t++,224|a>>>12),store(t++,128|a>>>6&63),store(t++,128|63&a)):a<=2097151?(store(t++,240|a>>>18),store(t++,128|a>>>12&63),store(t++,128|a>>>6&63),store(t++,128|63&a)):a<=67108863?(store(t++,248|a>>>24),store(t++,128|a>>>18&63),store(t++,128|a>>>12&63),store(t++,128|a>>>6&63),store(t++,128|63&a)):(store(t++,252|a>>>30),store(t++,128|a>>>24&63),store(t++,128|a>>>18&63),store(t++,128|a>>>12&63),store(t++,128|a>>>6&63),store(t++,128|63&a))}return store(t,0),r}function y(e){return load(e)|load(e+1)<<8|load(e+2)<<16|load(e+3)<<24}function m(e){if(!e)return null;for(var r,t,n,i,a,s=new Array;r=load(e++);)128&r?(t=63&load(e++),192!=(224&r)?(n=63&load(e++),224==(240&r)?r=(15&r)<<12|t<<6|n:(i=63&load(e++),240==(248&r)?r=(7&r)<<18|t<<12|n<<6|i:(a=63&load(e++),r=248==(252&r)?(3&r)<<24|t<<18|n<<12|i<<6|a:(1&r)<<30|t<<24|n<<18|i<<12|a<<6|63&load(e++))),s.push(r)):s.push((31&r)<<6|t)):s.push(r);return String.fromCodePoints(s)}r.Relooper=u,r.readString=m;var f=function(){};r.BinaryModule=f,r.needsExplicitUnreachable=function e(r){if(_BinaryenExpressionGetType(r)!=i.Unreachable)return!1;switch(_BinaryenExpressionGetId(r)){case a.Unreachable:case a.Return:return!1;case a.Break:return 0!=_BinaryenBreakGetCondition(r);case a.Block:if(!_BinaryenBlockGetName(r)){var t=_BinaryenBlockGetNumChildren(r);return t>0&&e(_BinaryenBlockGetChild(r,t-1))}}return!0},r.traverse=function(e,r,t){switch(l(e)){case a.Block:for(var n=0,i=_BinaryenBlockGetNumChildren(e);n>>e.size-r},e.prototype.is=function(e){return(this.flags&e)==e},e.prototype.isAny=function(e){return 0!=(this.flags&e)},e.prototype.asClass=function(r){assert(9==this.kind&&!this.classReference);var t=new e(this.kind,-129&this.flags|256,this.size);return t.classReference=r,t},e.prototype.asFunction=function(r){assert(7==this.kind&&!this.signatureReference);var t=new e(this.kind,-129&this.flags|256,this.size);return t.signatureReference=r,t},e.prototype.asNullable=function(){return assert(this.is(256)),this.cachedNullableType||(assert(!this.is(512)),this.cachedNullableType=new e(this.kind,512|this.flags,this.size),this.cachedNullableType.nonNullableType=this,this.cachedNullableType.classReference=this.classReference,this.cachedNullableType.signatureReference=this.signatureReference),this.cachedNullableType},e.prototype.isAssignableTo=function(r,t){var n,i,a,s;if(void 0===t&&(t=!1),this.is(256)){if(r.is(256)&&(!this.is(512)||r.is(512)))if(n=this.classReference){if(i=r.classReference)return n.isAssignableTo(i)}else if((a=this.signatureReference)&&(s=r.signatureReference))return a.isAssignableTo(s)}else if(!r.is(256))if(this.is(4))if(r.is(4)){if(!t||this==e.bool||this.is(1)==r.is(1))return this.size<=r.size}else{if(11==r.kind)return this.size<=23;if(12==r.kind)return this.size<=52}else if(this.is(8)){if(r.is(8))return this.size<=r.size}else if(this.is(1024)&&r.is(1024))return this.size==r.size;return!1},e.prototype.isStrictlyAssignableTo=function(e,r){return void 0===r&&(r=!1),this.is(256)?this.isAssignableTo(e):!e.is(256)&&(this.is(4)?e.is(4)&&e.size==this.size&&(!r||this.is(1)==e.is(1)):this.kind==e.kind)},e.commonDenominator=function(e,r,t){return r.isAssignableTo(e,t)?e:e.isAssignableTo(r,t)?r:null},e.prototype.toString=function(){if(this.is(256)){var e=this.classReference;if(e)return this.is(512)?e.internalName+" | null":e.internalName;var r=this.signatureReference;if(r)return this.is(512)?"("+r.toString()+") | null":r.toString();assert(!1)}switch(this.kind){case 0:return"i8";case 1:return"i16";case 2:return"i32";case 3:return"i64";case 4:return"isize";case 5:return"u8";case 6:return"u16";case 7:return"u32";case 8:return"u64";case 9:return"usize";case 10:return"bool";case 11:return"f32";case 12:return"f64";case 13:return"v128";default:assert(!1);case 14:return"void"}},e.prototype.toNativeType=function(){switch(this.kind){default:return i.NativeType.I32;case 3:case 8:return i.NativeType.I64;case 4:case 9:return 64==this.size?i.NativeType.I64:i.NativeType.I32;case 11:return i.NativeType.F32;case 12:return i.NativeType.F64;case 13:return i.NativeType.V128;case 14:return i.NativeType.None}},e.prototype.toNativeZero=function(e){switch(this.kind){case 14:assert(!1);default:return e.i32(0);case 4:case 9:if(64!=this.size)return e.i32(0);case 3:case 8:return e.i64(0);case 11:return e.f32(0);case 12:return e.f64(0);case 13:return e.v128(a)}},e.prototype.toNativeOne=function(e){switch(this.kind){case 13:case 14:assert(!1);default:return e.i32(1);case 4:case 9:if(64!=this.size)return e.i32(1);case 3:case 8:return e.i64(1);case 11:return e.f32(1);case 12:return e.f64(1)}},e.prototype.toNativeNegOne=function(e){switch(this.kind){case 13:case 14:assert(!1);default:return e.i32(-1);case 4:case 9:if(64!=this.size)return e.i32(-1);case 3:case 8:return e.i64(-1,-1);case 11:return e.f32(-1);case 12:return e.f64(-1)}},e.prototype.toSignatureString=function(){switch(this.kind){case 0:case 5:case 1:case 6:case 2:case 7:case 10:return"i";case 3:case 8:return"j";case 4:case 9:return 64==this.size?"j":"i";case 11:return"f";case 12:return"d";case 13:return"V";case 14:return"v";default:assert(!1)}return"i"},e.i8=new e(0,165,8),e.i16=new e(1,165,16),e.i32=new e(2,133,32),e.i64=new e(3,197,64),e.isize32=new e(4,149,32),e.isize64=new e(4,213,64),e.u8=new e(5,166,8),e.u16=new e(6,166,16),e.u32=new e(7,134,32),e.u64=new e(8,198,64),e.usize32=new e(9,150,32),e.usize64=new e(9,214,64),e.bool=new e(10,166,1),e.f32=new e(11,137,32),e.f64=new e(12,201,64),e.v128=new e(13,1152,128),e.void=new e(14,0,0),e.auto=new e(e.i32.kind,e.i32.flags,e.i32.size),e}();r.Type=s,r.typesToNativeTypes=function(e){for(var r=e.length,t=new Array(r),n=0;ne?r[e]:l(e)},e.prototype.isAssignableTo=function(e){return this.equals(e)},e.prototype.equals=function(e){var r=this.thisType,t=e.thisType;if(r){if(!t||!r.isAssignableTo(t))return!1}else if(t)return!1;if(this.hasRest!=e.hasRest)return!1;var n=this.parameterTypes,i=e.parameterTypes,a=n.length;if(a!=i.length)return!1;for(var s=0;s=o&&u!=c?e.push("?: "):e.push(": "),e.push(n[u].toString());return e.push(") => "),e.push(this.returnType.toString()),e.join("")},e}();r.Signature=o;var c=null;function l(e){c||(c=[]);for(var r=c.length;r<=e;++r)c.push("arg$"+r.toString(10));return c[e-1]}r.getDefaultParameterName=l},function(e,r,t){"use strict";var n,i=this&&this.__extends||(n=function(e,r){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t])})(e,r)},function(e,r){function t(){this.constructor=e}n(e,r),e.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)});Object.defineProperty(r,"__esModule",{value:!0});var a,s,o=t(2),c=t(3),l=t(1);function u(e){switch(assert(e.length),e.charCodeAt(0)){case 97:switch(e){case"abstract":return a.ABSTRACT;case"as":return a.AS;case"async":return a.ASYNC;case"await":return a.AWAIT}break;case 98:switch(e){case"break":return a.BREAK}break;case 99:switch(e){case"case":return a.CASE;case"catch":return a.CATCH;case"class":return a.CLASS;case"continue":return a.CONTINUE;case"const":return a.CONST;case"constructor":return a.CONSTRUCTOR}break;case 100:switch(e){case"debugger":return a.DEBUGGER;case"declare":return a.DECLARE;case"default":return a.DEFAULT;case"delete":return a.DELETE;case"do":return a.DO}break;case 101:switch(e){case"else":return a.ELSE;case"enum":return a.ENUM;case"export":return a.EXPORT;case"extends":return a.EXTENDS}break;case 102:switch(e){case"false":return a.FALSE;case"finally":return a.FINALLY;case"for":return a.FOR;case"from":return a.FROM;case"function":return a.FUNCTION}break;case 103:switch(e){case"get":return a.GET}break;case 105:switch(e){case"if":return a.IF;case"implements":return a.IMPLEMENTS;case"import":return a.IMPORT;case"in":return a.IN;case"instanceof":return a.INSTANCEOF;case"interface":return a.INTERFACE;case"is":return a.IS}break;case 107:switch(e){case"keyof":return a.KEYOF}break;case 108:switch(e){case"let":return a.LET}break;case 109:switch(e){case"module":return a.MODULE}break;case 110:switch(e){case"namespace":return a.NAMESPACE;case"new":return a.NEW;case"null":return a.NULL}break;case 111:switch(e){case"of":return a.OF}break;case 112:switch(e){case"package":return a.PACKAGE;case"private":return a.PRIVATE;case"protected":return a.PROTECTED;case"public":return a.PUBLIC}break;case 114:switch(e){case"readonly":return a.READONLY;case"return":return a.RETURN}break;case 115:switch(e){case"set":return a.SET;case"static":return a.STATIC;case"super":return a.SUPER;case"switch":return a.SWITCH}break;case 116:switch(e){case"this":return a.THIS;case"throw":return a.THROW;case"true":return a.TRUE;case"try":return a.TRY;case"type":return a.TYPE;case"typeof":return a.TYPEOF}break;case 118:switch(e){case"var":return a.VAR;case"void":return a.VOID}break;case 119:switch(e){case"while":return a.WHILE;case"with":return a.WITH}break;case 121:switch(e){case"yield":return a.YIELD}}return a.INVALID}function p(e){switch(e){case a.ABSTRACT:case a.AS:case a.CONSTRUCTOR:case a.DECLARE:case a.DELETE:case a.FROM:case a.FOR:case a.GET:case a.INSTANCEOF:case a.IS:case a.KEYOF:case a.MODULE:case a.NAMESPACE:case a.NULL:case a.READONLY:case a.SET:case a.TYPE:case a.VOID:return!0;default:return!1}}!function(e){e[e.ABSTRACT=0]="ABSTRACT",e[e.AS=1]="AS",e[e.ASYNC=2]="ASYNC",e[e.AWAIT=3]="AWAIT",e[e.BREAK=4]="BREAK",e[e.CASE=5]="CASE",e[e.CATCH=6]="CATCH",e[e.CLASS=7]="CLASS",e[e.CONST=8]="CONST",e[e.CONTINUE=9]="CONTINUE",e[e.CONSTRUCTOR=10]="CONSTRUCTOR",e[e.DEBUGGER=11]="DEBUGGER",e[e.DECLARE=12]="DECLARE",e[e.DEFAULT=13]="DEFAULT",e[e.DELETE=14]="DELETE",e[e.DO=15]="DO",e[e.ELSE=16]="ELSE",e[e.ENUM=17]="ENUM",e[e.EXPORT=18]="EXPORT",e[e.EXTENDS=19]="EXTENDS",e[e.FALSE=20]="FALSE",e[e.FINALLY=21]="FINALLY",e[e.FOR=22]="FOR",e[e.FROM=23]="FROM",e[e.FUNCTION=24]="FUNCTION",e[e.GET=25]="GET",e[e.IF=26]="IF",e[e.IMPLEMENTS=27]="IMPLEMENTS",e[e.IMPORT=28]="IMPORT",e[e.IN=29]="IN",e[e.INSTANCEOF=30]="INSTANCEOF",e[e.INTERFACE=31]="INTERFACE",e[e.IS=32]="IS",e[e.KEYOF=33]="KEYOF",e[e.LET=34]="LET",e[e.MODULE=35]="MODULE",e[e.NAMESPACE=36]="NAMESPACE",e[e.NEW=37]="NEW",e[e.NULL=38]="NULL",e[e.OF=39]="OF",e[e.PACKAGE=40]="PACKAGE",e[e.PRIVATE=41]="PRIVATE",e[e.PROTECTED=42]="PROTECTED",e[e.PUBLIC=43]="PUBLIC",e[e.READONLY=44]="READONLY",e[e.RETURN=45]="RETURN",e[e.SET=46]="SET",e[e.STATIC=47]="STATIC",e[e.SUPER=48]="SUPER",e[e.SWITCH=49]="SWITCH",e[e.THIS=50]="THIS",e[e.THROW=51]="THROW",e[e.TRUE=52]="TRUE",e[e.TRY=53]="TRY",e[e.TYPE=54]="TYPE",e[e.TYPEOF=55]="TYPEOF",e[e.VAR=56]="VAR",e[e.VOID=57]="VOID",e[e.WHILE=58]="WHILE",e[e.WITH=59]="WITH",e[e.YIELD=60]="YIELD",e[e.OPENBRACE=61]="OPENBRACE",e[e.CLOSEBRACE=62]="CLOSEBRACE",e[e.OPENPAREN=63]="OPENPAREN",e[e.CLOSEPAREN=64]="CLOSEPAREN",e[e.OPENBRACKET=65]="OPENBRACKET",e[e.CLOSEBRACKET=66]="CLOSEBRACKET",e[e.DOT=67]="DOT",e[e.DOT_DOT_DOT=68]="DOT_DOT_DOT",e[e.SEMICOLON=69]="SEMICOLON",e[e.COMMA=70]="COMMA",e[e.LESSTHAN=71]="LESSTHAN",e[e.GREATERTHAN=72]="GREATERTHAN",e[e.LESSTHAN_EQUALS=73]="LESSTHAN_EQUALS",e[e.GREATERTHAN_EQUALS=74]="GREATERTHAN_EQUALS",e[e.EQUALS_EQUALS=75]="EQUALS_EQUALS",e[e.EXCLAMATION_EQUALS=76]="EXCLAMATION_EQUALS",e[e.EQUALS_EQUALS_EQUALS=77]="EQUALS_EQUALS_EQUALS",e[e.EXCLAMATION_EQUALS_EQUALS=78]="EXCLAMATION_EQUALS_EQUALS",e[e.EQUALS_GREATERTHAN=79]="EQUALS_GREATERTHAN",e[e.PLUS=80]="PLUS",e[e.MINUS=81]="MINUS",e[e.ASTERISK_ASTERISK=82]="ASTERISK_ASTERISK",e[e.ASTERISK=83]="ASTERISK",e[e.SLASH=84]="SLASH",e[e.PERCENT=85]="PERCENT",e[e.PLUS_PLUS=86]="PLUS_PLUS",e[e.MINUS_MINUS=87]="MINUS_MINUS",e[e.LESSTHAN_LESSTHAN=88]="LESSTHAN_LESSTHAN",e[e.GREATERTHAN_GREATERTHAN=89]="GREATERTHAN_GREATERTHAN",e[e.GREATERTHAN_GREATERTHAN_GREATERTHAN=90]="GREATERTHAN_GREATERTHAN_GREATERTHAN",e[e.AMPERSAND=91]="AMPERSAND",e[e.BAR=92]="BAR",e[e.CARET=93]="CARET",e[e.EXCLAMATION=94]="EXCLAMATION",e[e.TILDE=95]="TILDE",e[e.AMPERSAND_AMPERSAND=96]="AMPERSAND_AMPERSAND",e[e.BAR_BAR=97]="BAR_BAR",e[e.QUESTION=98]="QUESTION",e[e.COLON=99]="COLON",e[e.EQUALS=100]="EQUALS",e[e.PLUS_EQUALS=101]="PLUS_EQUALS",e[e.MINUS_EQUALS=102]="MINUS_EQUALS",e[e.ASTERISK_EQUALS=103]="ASTERISK_EQUALS",e[e.ASTERISK_ASTERISK_EQUALS=104]="ASTERISK_ASTERISK_EQUALS",e[e.SLASH_EQUALS=105]="SLASH_EQUALS",e[e.PERCENT_EQUALS=106]="PERCENT_EQUALS",e[e.LESSTHAN_LESSTHAN_EQUALS=107]="LESSTHAN_LESSTHAN_EQUALS",e[e.GREATERTHAN_GREATERTHAN_EQUALS=108]="GREATERTHAN_GREATERTHAN_EQUALS",e[e.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS=109]="GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS",e[e.AMPERSAND_EQUALS=110]="AMPERSAND_EQUALS",e[e.BAR_EQUALS=111]="BAR_EQUALS",e[e.CARET_EQUALS=112]="CARET_EQUALS",e[e.AT=113]="AT",e[e.IDENTIFIER=114]="IDENTIFIER",e[e.STRINGLITERAL=115]="STRINGLITERAL",e[e.INTEGERLITERAL=116]="INTEGERLITERAL",e[e.FLOATLITERAL=117]="FLOATLITERAL",e[e.INVALID=118]="INVALID",e[e.ENDOFFILE=119]="ENDOFFILE"}(a=r.Token||(r.Token={})),function(e){e[e.DEFAULT=0]="DEFAULT",e[e.PREFER=1]="PREFER",e[e.ALWAYS=2]="ALWAYS"}(s=r.IdentifierHandling||(r.IdentifierHandling={})),r.tokenFromKeyword=u,r.tokenIsAlsoIdentifier=p,r.isIllegalVariableIdentifier=function(e){switch(assert(e.length),e.charCodeAt(0)){case 100:return"delete"==e;case 102:return"for"==e;case 105:return"instanceof"==e;case 110:return"null"==e;case 118:return"void"==e}return!1},r.operatorTokenToString=function(e){switch(e){case a.DELETE:return"delete";case a.IN:return"in";case a.INSTANCEOF:return"instanceof";case a.NEW:return"new";case a.TYPEOF:return"typeof";case a.VOID:return"void";case a.YIELD:return"yield";case a.DOT_DOT_DOT:return"...";case a.COMMA:return",";case a.LESSTHAN:return"<";case a.GREATERTHAN:return">";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var _=function(){function e(e,r,t){this.debugInfoRef=0,this.source=e,this.start=r,this.end=t}return e.join=function(r,t){if(r.source!=t.source)throw new Error("source mismatch");return new e(r.source,r.startt.end?r.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,r=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&r++;return r},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,r=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++r;return r},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();r.Range=_;var h=function(e){function r(r,t){void 0===t&&(t=null);var n=e.call(this,t)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=r,n.pos=0,n.end=r.text.length,n.diagnostics=t||new Array;var i=n.end,a=r.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){i+=e.substring(t,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(t-1,n));break}var a=e.charCodeAt(this.pos);if(a==r){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=r){i+=e.substring(t,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},r.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var r=this.source.text,t=r.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(r,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!n&&47==i)break;if(l.isLineBreak(i)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(r,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(r,this.pos)},r.prototype.readRegexpFlags=function(){for(var e=this.source.text,r=this.pos,t=this.end,n=0;this.pos57)&&95!=n)break;t++}return!0},r.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&c<=57)t=i64_add(i64_shl(t,n),i64_new(c-48));else if(c>=65&&c<=70)t=i64_add(i64_shl(t,n),i64_new(10+c-65));else if(c>=97&&c<=102)t=i64_add(i64_shl(t,n),i64_new(10+c-97));else{if(95!=c)break;i==s&&this.error(i==r?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(s)),i=s+1}this.pos=s+1}return this.pos==r?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(r)):i==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},r.prototype.readDecimalInteger=function(){for(var e=this.source.text,r=this.pos,t=this.end,n=i64_new(0),i=i64_new(10),a=r;this.pos=48&&c<=57)n=i64_add(i64_mul(n,i),i64_new(c-48));else{if(95!=c)break;a==s&&this.error(a==r?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(s)),a=s+1}this.pos=s+1}return this.pos==r?this.error(o.DiagnosticCode.Digit_expected,this.range(r)):a==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),n},r.prototype.readOctalInteger=function(){for(var e=this.source.text,r=this.pos,t=i64_new(0),n=i64_new(3),i=r,a=this.end;this.pos=48&&c<=55)t=i64_add(i64_shl(t,n),i64_new(c-48));else{if(95!=c)break;i==s&&this.error(i==r?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(s)),i=s+1}++this.pos}return this.pos==r?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(r)):i==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},r.prototype.readBinaryInteger=function(){for(var e=this.source.text,r=this.pos,t=i64_new(0),n=i64_new(1),i=r,a=this.end;this.pos=48&&i<=57)r=(r<<4)+i-48;else if(i>=65&&i<=70)r=(r<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";r=(r<<4)+i+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(r)},r.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,r=this.readHexInteger(),t=i64_low(r),n=!1;assert(!i64_high(r)),t>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),n=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},r.prototype.finish=function(){},r}(o.DiagnosticEmitter);r.Tokenizer=h;var d=function(){};r.State=d;var y=null},function(e,r){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,r,t){"use strict";var n,i=this&&this.__extends||(n=function(e,r){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t])})(e,r)},function(e,r){function t(){this.constructor=e}n(e,r),e.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)}),a=this&&this.__values||function(e){var r="function"==typeof Symbol&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},s=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0});var o,c=t(2),l=t(4),u=t(3),p=t(6),_=t(0),h=t(1),d=t(7),y=t(13);!function(e){e[e.REPORT=0]="REPORT",e[e.SWALLOW=1]="SWALLOW"}(o=r.ReportMode||(r.ReportMode={}));var m=function(e){function r(r){var t=e.call(this,r.diagnostics)||this;return t.currentThisExpression=null,t.currentElementExpression=null,t.program=r,t}return i(r,e),r.prototype.resolveType=function(e,r,t,n){switch(void 0===t&&(t=null),void 0===n&&(n=o.REPORT),e.kind){case u.NodeKind.NAMEDTYPE:return this.resolveNamedType(e,r,t,n);case u.NodeKind.FUNCTIONTYPE:return this.resolveFunctionType(e,r,t,n);default:assert(!1)}return null},r.prototype.resolveNamedType=function(e,r,t,n){void 0===t&&(t=null),void 0===n&&(n=o.REPORT);var i=e.name,a=e.typeArguments,s=!i.next;if(s){var u=i.identifier.text;if(null!==t&&t.has(u)){var d=t.get(u);return null!==a&&a.length&&n==o.REPORT&&this.error(c.DiagnosticCode.Type_0_is_not_generic,e.range,d.toString()),e.isNullable?(d.is(256)||n==o.REPORT&&this.error(c.DiagnosticCode.Basic_type_0_cannot_be_nullable,e.range,d.toString()),d.asNullable()):d}}var y=this.resolveTypeName(i,r,n);if(!y)return null;if(y.shadowType)y=y.shadowType;else{if(y.kind==l.ElementKind.ENUM)return null!==a&&a.length&&n==o.REPORT&&this.error(c.DiagnosticCode.Type_0_is_not_generic,e.range,y.internalName),e.isNullable&&n==o.REPORT&&this.error(c.DiagnosticCode.Basic_type_0_cannot_be_nullable,e.range,y.name+"/i32"),p.Type.i32;if(y.kind==l.ElementKind.CLASS_PROTOTYPE){var m=this.resolveClassInclTypeArguments(y,a,r,h.makeMap(t),e,n);return m?e.isNullable?m.type.asNullable():m.type:null}}if(y.kind==l.ElementKind.TYPEDEFINITION){if(y.is(_.CommonFlags.RESOLVED)){null!==a&&a.length&&n==o.REPORT&&this.error(c.DiagnosticCode.Type_0_is_not_generic,e.range,y.internalName);var f=y.type;if(e.isNullable){if(f.is(256))return f.asNullable();n==o.REPORT&&this.error(c.DiagnosticCode.Basic_type_0_cannot_be_nullable,i.range,i.identifier.text)}return f}if(s)switch(i.identifier.symbol){case _.CommonSymbols.native:return this.resolveBuiltinNativeType(e,r,t,n);case _.CommonSymbols.indexof:return this.resolveBuiltinIndexofType(e,r,t,n);case _.CommonSymbols.valueof:return this.resolveBuiltinValueofType(e,r,t,n);case _.CommonSymbols.returnof:return this.resolveBuiltinReturnTypeType(e,r,t,n)}var T=y.typeParameterNodes;if(T){if(!this.resolveTypeArguments(T,a,r,t=h.makeMap(t),e,n))return null}else a&&a.length&&this.error(c.DiagnosticCode.Type_0_is_not_generic,e.range,i.identifier.text);if(!(d=this.resolveType(y.typeNode,y,t,n)))return null;if(e.isNullable){if(d.is(256))return d.asNullable();n==o.REPORT&&this.error(c.DiagnosticCode.Basic_type_0_cannot_be_nullable,i.range,i.identifier.text)}return d}return n==o.REPORT&&this.error(c.DiagnosticCode.Cannot_find_name_0,i.range,i.identifier.text),null},r.prototype.resolveFunctionType=function(e,r,t,n){void 0===t&&(t=null),void 0===n&&(n=o.REPORT);var i=e.explicitThisType,a=null;if(i&&!(a=this.resolveType(i,r,t,n)))return null;for(var s=e.parameters,l=s.length,_=new Array(l),h=new Array(l),d=0,y=!1,m=0;ml)return this.error(c.DiagnosticCode.Expected_0_type_arguments_but_got_1,d?u.Range.join(r[0].range,r[d-1].range):assert(i).range,(d0)return this.resolveExpression(e.arguments[0],r,t,n);var s=this.resolveFunctionInclTypeArguments(a,e.typeArguments,r.actualFunction,h.makeMap(r.contextualTypeArguments),e,n);if(!s)return null;var u=s.signature.returnType,_=u.classReference;if(_)return _;var d=u.signatureReference;if(d)return d.asFunctionTarget(this.program);var m=this.program.typeClasses;return!u.is(256)&&m.has(u.kind)?m.get(u.kind):(n==o.REPORT&&this.error(c.DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,i.range,a.internalName),null)}return n==o.REPORT&&this.error(c.DiagnosticCode.Operation_not_supported,e.range),null},r.prototype.resolveFunction=function(e,r,t,n){void 0===t&&(t=h.makeMap()),void 0===n&&(n=o.REPORT);var i=e.parent.kind==l.ElementKind.PROPERTY_PROTOTYPE?e.parent.parent:e.parent,a=null,s=r?p.typesToString(r):"";if(e.is(_.CommonFlags.INSTANCE)){if(assert(i.kind==l.ElementKind.CLASS),a=i,g=e.getResolvedInstance(s))return g;var d=a.typeArguments;if(d){var y=assert(a.prototype.typeParameterNodes),m=y.length;assert(m==y.length);for(var f=0;f");var w=new l.Function(P,e,B,t);return e.setResolvedInstance(s,w),w},r.prototype.resolveFunctionInclTypeArguments=function(e,r,t,n,i,a){void 0===a&&(a=o.REPORT);var s=e.parent.kind==l.ElementKind.PROPERTY_PROTOTYPE?e.parent.parent:e.parent,u=null;if(e.is(_.CommonFlags.GENERIC)){if(e.is(_.CommonFlags.INSTANCE)){assert(s.kind==l.ElementKind.CLASS);var p=s.typeArguments;if(p){var h=assert(s.prototype.typeParameterNodes),d=p.length;assert(d==h.length);for(var y=0;y"),(g=new l.Class(S,e,r,A)).contextualTypeArguments=t,e.setResolvedInstance(T,g);var O=0;if(A){if(G=A.members){(U=g.members)||(g.members=U=new Map);try{for(var C=a(G),k=C.next();!k.done;k=C.next()){var R=s(k.value,2),L=R[0],F=R[1];U.set(L,F)}}catch(e){i={error:e}}finally{try{k&&!k.done&&(u=C.return)&&u.call(C)}finally{if(i)throw i.error}}}O=A.currentMemoryOffset}var D=e.instanceMembers;if(D)try{for(var B=a(D.values()),P=B.next();!P.done;P=B.next()){var w=P.value;switch(w.kind){case l.ElementKind.FIELD_PROTOTYPE:var U;if(U=g.members){if(U.has(w.name)){this.error(c.DiagnosticCode.Duplicate_identifier_0,w.identifierNode.range,w.name);break}}else g.members=U=new Map;var M=w.typeNode,V=null;if(M)V=this.resolveType(M,e.parent,g.contextualTypeArguments,n);else{var G;if(A)if((G=A.members)&&G.has(w.name)){var K=G.get(w.name);K.is(_.CommonFlags.PRIVATE)||(assert(K.kind==l.ElementKind.FIELD),V=K.type)}V||n==o.REPORT&&this.error(c.DiagnosticCode.Type_expected,w.identifierNode.range.atEnd)}if(!V)break;var z=new l.Field(w,g,V);assert(h.isPowerOf2(V.byteSize));var Y=V.byteSize-1;O&Y&&(O=1+(O|Y)),z.memoryOffset=O,O+=V.byteSize,g.add(w.name,z);break;case l.ElementKind.FUNCTION_PROTOTYPE:var H=w.toBound(g);g.add(H.name,H);break;case l.ElementKind.PROPERTY_PROTOTYPE:var W=new l.Property(w,g),X=w.getterPrototype;if(X){var q=this.resolveFunction(X.toBound(g),null,h.makeMap(g.contextualTypeArguments),n);q&&(W.getterInstance=q,W.setType(q.signature.returnType))}var Q=w.setterPrototype;if(Q){var j=this.resolveFunction(Q.toBound(g),null,h.makeMap(g.contextualTypeArguments),n);j&&(W.setterInstance=j,W.is(_.CommonFlags.RESOLVED)||(assert(1==j.signature.parameterTypes.length),W.setType(j.signature.parameterTypes[0])))}g.add(W.name,W);break;default:assert(!1)}}}catch(e){d={error:e}}finally{try{P&&!P.done&&(y=B.return)&&y.call(B)}finally{if(d)throw d.error}}g.currentMemoryOffset=O;var Z=g.lookupInSelf(_.CommonSymbols.constructor);if(Z&&Z.parent===g){assert(Z.kind==l.ElementKind.FUNCTION_PROTOTYPE);var J=this.resolveFunction(Z,null,g.contextualTypeArguments,n);J&&(g.constructorInstance=J)}try{for(var $=a(e.overloadPrototypes),ee=$.next();!ee.done;ee=$.next()){var re=s(ee.value,2),te=re[0],ne=re[1];assert(te!=l.OperatorKind.INVALID);var ie=void 0;if(ne.is(_.CommonFlags.INSTANCE)){H=ne.toBound(g);ie=this.resolveFunction(H,null,h.makeMap(),n)}else ie=this.resolveFunction(ne,null,h.makeMap(),n);if(ie){var ae=g.overloads;ae||(g.overloads=ae=new Map),ae.set(te,ie)}}}catch(e){m={error:e}}finally{try{ee&&!ee.done&&(f=$.return)&&f.call($)}finally{if(m)throw m.error}}return g},r.prototype.resolveClassInclTypeArguments=function(e,r,t,n,i,a){void 0===a&&(a=o.REPORT);var s=null;if(e.is(_.CommonFlags.GENERIC)){if(!(s=this.resolveTypeArguments(assert(e.typeParameterNodes),r,t,n,i,a)))return null}else if(null!==r&&r.length)return a==o.REPORT&&this.error(c.DiagnosticCode.Type_0_is_not_generic,i.range,e.internalName),null;return this.resolveClass(e,s,n,a)},r}(c.DiagnosticEmitter);r.Resolver=m},function(e,r,t){"use strict";var n=this&&this.__values||function(e){var r="function"==typeof Symbol&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(r,"__esModule",{value:!0});var i,a=t(6),s=t(4),o=t(5),c=t(0),l=t(2);!function(e){e[e.NONE=0]="NONE",e[e.RETURNS=1]="RETURNS",e[e.RETURNS_WRAPPED=2]="RETURNS_WRAPPED",e[e.RETURNS_NONNULL=4]="RETURNS_NONNULL",e[e.THROWS=8]="THROWS",e[e.BREAKS=16]="BREAKS",e[e.CONTINUES=32]="CONTINUES",e[e.ALLOCATES=64]="ALLOCATES",e[e.CALLS_SUPER=128]="CALLS_SUPER",e[e.TERMINATES=256]="TERMINATES",e[e.CONDITIONALLY_RETURNS=512]="CONDITIONALLY_RETURNS",e[e.CONDITIONALLY_THROWS=1024]="CONDITIONALLY_THROWS",e[e.CONDITIONALLY_TERMINATES=2048]="CONDITIONALLY_TERMINATES",e[e.CONDITIONALLY_BREAKS=4096]="CONDITIONALLY_BREAKS",e[e.CONDITIONALLY_CONTINUES=8192]="CONDITIONALLY_CONTINUES",e[e.CONDITIONALLY_ALLOCATES=16384]="CONDITIONALLY_ALLOCATES",e[e.INLINE_CONTEXT=32768]="INLINE_CONTEXT",e[e.UNCHECKED_CONTEXT=65536]="UNCHECKED_CONTEXT",e[e.ANY_CATEGORICAL=511]="ANY_CATEGORICAL",e[e.ANY_CONDITIONAL=30208]="ANY_CONDITIONAL"}(r.FlowFlags||(r.FlowFlags={})),function(e){e[e.NONE=0]="NONE",e[e.CONSTANT=1]="CONSTANT",e[e.WRAPPED=2]="WRAPPED",e[e.NONNULL=4]="NONNULL",e[e.READFROM=8]="READFROM",e[e.WRITTENTO=16]="WRITTENTO",e[e.RETAINED=32]="RETAINED",e[e.CONDITIONALLY_READFROM=64]="CONDITIONALLY_READFROM",e[e.CONDITIONALLY_WRITTENTO=128]="CONDITIONALLY_WRITTENTO",e[e.CONDITIONALLY_RETAINED=256]="CONDITIONALLY_RETAINED",e[e.ANY_CATEGORICAL=63]="ANY_CATEGORICAL",e[e.ANY_CONDITIONAL=480]="ANY_CONDITIONAL",e[e.ANY_RETAINED=288]="ANY_RETAINED"}(i=r.LocalFlags||(r.LocalFlags={})),function(e){e.join=function(r,t){return r&e.ANY_CATEGORICAL&t&e.ANY_CATEGORICAL|r&e.ANY_CONDITIONAL|t&e.ANY_CONDITIONAL}}(i=r.LocalFlags||(r.LocalFlags={})),function(e){e[e.NONE=0]="NONE",e[e.INITIALIZED=1]="INITIALIZED",e[e.CONDITIONALLY_INITIALIZED=2]="CONDITIONALLY_INITIALIZED",e[e.ANY_CATEGORICAL=1]="ANY_CATEGORICAL",e[e.ANY_CONDITIONAL=2]="ANY_CONDITIONAL"}(r.FieldFlags||(r.FieldFlags={})),function(e){e.join=function(r,t){return r&e.ANY_CATEGORICAL&t&e.ANY_CATEGORICAL|r&e.ANY_CONDITIONAL|t&e.ANY_CONDITIONAL}}(r.FieldFlags||(r.FieldFlags={}));var u=function(){function e(){this.scopedLocals=null,this.fieldFlags=null}return e.create=function(r){var t=new e;return t.parent=null,t.flags=0,t.parentFunction=r,t.continueLabel=null,t.breakLabel=null,t.returnType=r.signature.returnType,t.contextualTypeArguments=r.contextualTypeArguments,t.localFlags=[],t.inlineFunction=null,t.inlineReturnLabel=null,t},e.createInline=function(r,t){var n=e.create(r);return n.set(32768),n.inlineFunction=t,n.inlineReturnLabel=t.internalName+"|inlined."+(t.nextInlineId++).toString(10),n.returnType=t.signature.returnType,n.contextualTypeArguments=t.contextualTypeArguments,n},Object.defineProperty(e.prototype,"actualFunction",{get:function(){return this.inlineFunction||this.parentFunction},enumerable:!0,configurable:!0}),e.prototype.is=function(e){return(this.flags&e)==e},e.prototype.isAny=function(e){return 0!=(this.flags&e)},e.prototype.set=function(e){this.flags|=e},e.prototype.unset=function(e){this.flags&=~e},e.prototype.fork=function(){var r=new e;return r.parent=this,r.flags=this.flags,r.parentFunction=this.parentFunction,r.continueLabel=this.continueLabel,r.breakLabel=this.breakLabel,r.returnType=this.returnType,r.contextualTypeArguments=this.contextualTypeArguments,r.localFlags=this.localFlags.slice(),r.inlineFunction=this.inlineFunction,r.inlineReturnLabel=this.inlineReturnLabel,r},e.prototype.getTempLocal=function(e,r){void 0===r&&(r=null);var t,n,i=this.parentFunction;switch(e.toNativeType()){case o.NativeType.I32:t=i.tempI32s;break;case o.NativeType.I64:t=i.tempI64s;break;case o.NativeType.F32:t=i.tempF32s;break;case o.NativeType.F64:t=i.tempF64s;break;case o.NativeType.V128:t=i.tempV128s;break;default:throw new Error("concrete type expected")}if(r){if(t&&t.length)for(var a=0,s=t.length;a=0);var r,t=this.parentFunction;switch(assert(null!=e.type),e.type.toNativeType()){case o.NativeType.I32:r=t.tempI32s||(t.tempI32s=[]);break;case o.NativeType.I64:r=t.tempI64s||(t.tempI64s=[]);break;case o.NativeType.F32:r=t.tempF32s||(t.tempF32s=[]);break;case o.NativeType.F64:r=t.tempF64s||(t.tempF64s=[]);break;case o.NativeType.V128:r=t.tempV128s||(t.tempV128s=[]);break;default:throw new Error("concrete type expected")}assert(e.index>=0),r.push(e)}},e.prototype.getAndFreeTempLocal=function(e,r){void 0===r&&(r=null);var t=this.getTempLocal(e,r);return this.freeTempLocal(t),t},e.prototype.getScopedLocal=function(e){var r=this.scopedLocals;return r&&r.has(e)?r.get(e):null},e.prototype.addScopedLocal=function(e,r,t){void 0===t&&(t=null);var n=this.getTempLocal(r,t),i=this.scopedLocals;return i?assert(!i.has(e)):this.scopedLocals=i=new Map,n.set(c.CommonFlags.SCOPED),i.set(e,n),n},e.prototype.addScopedAlias=function(e,r,t,n){if(void 0===n&&(n=null),this.scopedLocals){var i=this.scopedLocals.get(e);if(i)return n&&this.parentFunction.program.error(l.DiagnosticCode.Duplicate_identifier_0,n.range),i}else this.scopedLocals=new Map;assert(t1?e.breakLabel=r[t-2].toString(10):(e.breakLabel=null,e.breakStack=null)},e.prototype.inherit=function(e){this.flags|=30719&e.flags,this.localFlags=e.localFlags},e.prototype.inheritConditional=function(e){e.is(1)&&this.set(512),e.is(8)&&this.set(1024),e.is(16)&&e.breakLabel==this.breakLabel&&this.set(4096),e.is(32)&&e.continueLabel==this.continueLabel&&this.set(8192),e.is(64)&&this.set(16384);for(var r=e.localFlags,t=0,n=r.length;tl):this.canOverflow(o.getBinaryLeft(e),r)&&!(o.getExpressionId(t=o.getBinaryRight(e))==o.ExpressionId.Const&&o.getConstValueI32(t)>=l);case o.BinaryOp.DivU32:case o.BinaryOp.RemI32:case o.BinaryOp.RemU32:return this.canOverflow(o.getBinaryLeft(e),r)||this.canOverflow(o.getBinaryRight(e),r)}break;case o.ExpressionId.Unary:switch(o.getUnaryOp(e)){case o.UnaryOp.EqzI32:case o.UnaryOp.EqzI64:return!1;case o.UnaryOp.ClzI32:case o.UnaryOp.CtzI32:case o.UnaryOp.PopcntI32:return r.size<7}break;case o.ExpressionId.Const:var u=0;switch(o.getExpressionType(e)){case o.NativeType.I32:u=o.getConstValueI32(e);break;case o.NativeType.I64:u=o.getConstValueI64Low(e);break;case o.NativeType.F32:u=i32(o.getConstValueF32(e));break;case o.NativeType.F64:u=i32(o.getConstValueF64(e));break;default:assert(!1)}switch(r.kind){case 0:return ui8.MAX_VALUE;case 1:return ui16.MAX_VALUE;case 5:return u<0||u>u8.MAX_VALUE;case 6:return u<0||u>u16.MAX_VALUE;case 10:return 0!=(-2&u)}break;case o.ExpressionId.Load:var _=void 0,h=o.isLoadSigned(e);switch(o.getLoadBytes(e)){case 1:_=h?a.Type.i8:a.Type.u8;break;case 2:_=h?a.Type.i16:a.Type.u16;break;default:_=h?a.Type.i32:a.Type.u32}return p(_,r);case o.ExpressionId.Block:if(!o.getBlockName(e)){var d=assert(o.getBlockChildCount(e)),y=o.getBlockChild(e,d-1);return this.canOverflow(y,r)}break;case o.ExpressionId.If:return this.canOverflow(o.getIfTrue(e),r)||this.canOverflow(assert(o.getIfFalse(e)),r);case o.ExpressionId.Select:return this.canOverflow(o.getSelectThen(e),r)||this.canOverflow(o.getSelectElse(e),r);case o.ExpressionId.Call:var m=this.parentFunction.program.instancesByName,f=assert(o.getCallTarget(e));if(m.has(f)){var T=m.get(f);assert(T.kind==s.ElementKind.FUNCTION);var g=T.signature.returnType;return!T.flow.is(2)||p(g,r)}return!1;case o.ExpressionId.Unreachable:return!1}return!0},e.prototype.toString=function(){for(var e=0,r=this.parent;r;)r=r.parent,++e;return"Flow("+this.actualFunction+")["+e.toString()+"]"},e}();function p(e,r){return!e.is(4)||e.size>r.size||e.is(1)!=r.is(1)}function _(e,r){switch(o.getExpressionId(e)){case o.ExpressionId.LocalGet:r.add(o.getLocalGetIndex(e));break;case o.ExpressionId.LocalSet:r.add(o.getLocalSetIndex(e));default:o.traverse(e,r,_)}}r.Flow=u,r.findUsedLocals=function(e,r){return void 0===r&&(r=new Set),o.traverse(e,r,_),r}},function(e,r,t){"use strict";var n,i=this&&this.__extends||(n=function(e,r){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t])})(e,r)},function(e,r){function t(){this.constructor=e}n(e,r),e.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)}),a=this&&this.__values||function(e){var r="function"==typeof Symbol&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},s=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0});var o=t(13),c=t(2),l=t(5),u=t(0),p=t(4),_=t(10),h=t(9),d=t(7),y=t(3),m=t(6),f=t(1),T=function(){function e(){this.target=u.Target.WASM32,this.noAssert=!1,this.importMemory=!1,this.sharedMemory=0,this.importTable=!1,this.sourceMap=!1,this.explicitStart=!1,this.memoryBase=0,this.globalAliases=null,this.features=0,this.noUnsafe=!1,this.optimizeLevelHint=0,this.shrinkLevelHint=0}return Object.defineProperty(e.prototype,"isWasm64",{get:function(){return this.target==u.Target.WASM64},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"usizeType",{get:function(){return this.target==u.Target.WASM64?m.Type.usize64:m.Type.usize32},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isizeType",{get:function(){return this.target==u.Target.WASM64?m.Type.isize64:m.Type.isize32},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nativeSizeType",{get:function(){return this.target==u.Target.WASM64?l.NativeType.I64:l.NativeType.I32},enumerable:!0,configurable:!0}),e.prototype.hasFeature=function(e){return 0!=(this.features&e)},e}();r.Options=T,function(e){e[e.NONE=0]="NONE",e[e.CONV_IMPLICIT=1]="CONV_IMPLICIT",e[e.CONV_EXPLICIT=2]="CONV_EXPLICIT",e[e.MUST_WRAP=4]="MUST_WRAP",e[e.WILL_DROP=8]="WILL_DROP",e[e.WILL_RETAIN=16]="WILL_RETAIN",e[e.PREFER_STATIC=32]="PREFER_STATIC"}(r.Constraints||(r.Constraints={})),function(e){e[e.NONE=0]="NONE",e[e.HEAP=1]="HEAP",e[e.RTTI=2]="RTTI",e[e.visitGlobals=4]="visitGlobals",e[e.visitMembers=8]="visitMembers"}(r.RuntimeFeatures||(r.RuntimeFeatures={}));var g,E,v=function(e){function r(r,t){void 0===t&&(t=null);var n=e.call(this,r.diagnostics)||this;n.currentInlineFunctions=[],n.currentEnum=null,n.currentType=m.Type.void,n.memorySegments=[],n.stringSegments=new Map,n.functionTable=["null"],n.argcVar=0,n.argcSet=0,n.runtimeFeatures=0,n.skippedAutoreleases=new Set,n.f32ModInstance=null,n.f64ModInstance=null,n.f32PowInstance=null,n.f64PowInstance=null,n.program=r,t||(t=new T),n.options=t,n.memoryOffset=i64_new(max(t.memoryBase,8)),n.module=l.Module.create();var i=0;return n.options.hasFeature(16)&&(i|=l.FeatureFlags.Atomics),n.options.hasFeature(2)&&(i|=l.FeatureFlags.MutableGloabls),n.options.hasFeature(8)&&(i|=l.FeatureFlags.SIMD128),n.options.hasFeature(4)&&(i|=l.FeatureFlags.BulkMemory),n.options.hasFeature(1)&&(i|=l.FeatureFlags.SignExt),n.module.setFeatures(i),n}return i(r,e),Object.defineProperty(r.prototype,"resolver",{get:function(){return this.program.resolver},enumerable:!0,configurable:!0}),r.compile=function(e,t){return void 0===t&&(t=null),new r(e,t).compile()},r.prototype.compile=function(){var e,r,t,n,i=this.options,s=this.module,c=this.program;c.initialize(i);var u=c.makeNativeFunction("start",new m.Signature(c,[],m.Type.void));u.internalName="start";var p=new Array;this.currentFlow=u.flow,this.currentBody=p,i.isWasm64?(s.addGlobal(o.BuiltinSymbols.heap_base,l.NativeType.I64,!0,s.i64(0)),s.addGlobal(o.BuiltinSymbols.rtti_base,l.NativeType.I64,!0,s.i64(0))):(s.addGlobal(o.BuiltinSymbols.heap_base,l.NativeType.I32,!0,s.i32(0)),s.addGlobal(o.BuiltinSymbols.rtti_base,l.NativeType.I32,!0,s.i32(0)));var _=c.filesByName;try{for(var h=a(_.values()),d=h.next();!d.done;d=h.next()){(N=d.value).source.sourceKind==y.SourceKind.USER_ENTRY&&(this.compileFile(N),this.compileExports(N))}}catch(r){e={error:r}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(e)throw e.error}}var f=!p.length,T=i.explicitStart;if(!f||T){var g=u.signature;!f&&T&&(s.addGlobal(o.BuiltinSymbols.started,l.NativeType.I32,!0,s.i32(0)),p.unshift(s.if(s.global_get(o.BuiltinSymbols.started,l.NativeType.I32),s.return(),s.global_set(o.BuiltinSymbols.started,s.i32(1)))));var E=s.addFunction(u.internalName,this.ensureFunctionType(g.parameterTypes,g.returnType,g.thisType),m.typesToNativeTypes(u.additionalLocals),s.block(null,p));u.finalize(s,E),T?s.addFunctionExport(u.internalName,"__start"):s.setStart(E)}4&this.runtimeFeatures&&o.compileVisitGlobals(this),8&this.runtimeFeatures&&o.compileVisitMembers(this),s.removeGlobal(o.BuiltinSymbols.rtti_base),2&this.runtimeFeatures&&o.compileRTTI(this);var v=this.memoryOffset;v=i64_align(v,i.usizeType.byteSize),this.memoryOffset=v,s.removeGlobal(o.BuiltinSymbols.heap_base),1&this.runtimeFeatures&&(i.isWasm64?s.addGlobal(o.BuiltinSymbols.heap_base,l.NativeType.I64,!1,s.i64(i64_low(v),i64_high(v))):s.addGlobal(o.BuiltinSymbols.heap_base,l.NativeType.I32,!1,s.i32(i64_low(v))));var b=i.hasFeature(16)&&i.sharedMemory>0;s.setMemory(this.options.memoryBase||this.memorySegments.length?i64_low(i64_shr_u(i64_align(v,65536),i64_new(16,0))):0,b?i.sharedMemory:l.Module.UNLIMITED_MEMORY,this.memorySegments,i.target,"memory",b),i.importMemory&&s.addMemoryImport("0","env","memory",b);var I=this.functionTable;s.setFunctionTable(I.length,4294967295,I),s.addFunction("null",this.ensureFunctionType(null,m.Type.void),null,s.block(null,[])),i.importTable&&s.addTableImport("0","env","table");try{for(var x=a(this.program.filesByName.values()),A=x.next();!A.done;A=x.next()){var N;(N=A.value).source.sourceKind==y.SourceKind.USER_ENTRY&&this.ensureModuleExports(N)}}catch(e){t={error:e}}finally{try{A&&!A.done&&(n=x.return)&&n.call(x)}finally{if(t)throw t.error}}return s},r.prototype.ensureModuleExports=function(e){var r,t,n=e.exports;if(n)try{for(var i=a(n),o=i.next();!o.done;o=i.next()){var c=s(o.value,2),l=c[0],u=c[1];this.ensureModuleExport(l,u)}}catch(e){r={error:e}}finally{try{o&&!o.done&&(t=i.return)&&t.call(i)}finally{if(r)throw r.error}}var p=e.exportsStar;if(p)for(var _=0,h=p.length;_1?p.block(null,n):n[0]),t.push(p.call(r.internalName,null,l.NativeType.None))}}},r.prototype.compileGlobal=function(e){if(e.is(u.CommonFlags.COMPILED))return!0;e.set(u.CommonFlags.COMPILED);var r=this.module,t=0,n=!1,i=e.typeNode,a=e.initializerNode;if(!e.is(u.CommonFlags.RESOLVED))if(i){var s=this.resolver.resolveType(i,e.parent);if(!s)return!1;if(s==m.Type.void)return this.error(c.DiagnosticCode.Type_expected,i.range),!1;e.setType(s)}else{if(!a)return this.error(c.DiagnosticCode.Type_expected,e.identifierNode.range.atEnd),!1;var _=this.currentFlow;if(e.hasDecorator(p.DecoratorFlags.LAZY)&&(this.currentFlow=e.file.startFunction.flow),t=this.compileExpression(a,m.Type.auto,20),this.skippedAutoreleases.has(t)&&(n=!0),this.currentFlow=_,this.currentType==m.Type.void)return this.error(c.DiagnosticCode.Type_0_is_not_assignable_to_type_1,a.range,this.currentType.toString(),""),!1;e.setType(this.currentType)}if(e.is(u.CommonFlags.AMBIENT)&&e.hasDecorator(p.DecoratorFlags.BUILTIN))return e.internalName==o.BuiltinSymbols.heap_base?this.runtimeFeatures|=1:e.internalName==o.BuiltinSymbols.rtti_base&&(this.runtimeFeatures|=2),!0;var h=e.type,d=h.toNativeType(),f=e.is(u.CommonFlags.CONST)||e.is(u.CommonFlags.STATIC|u.CommonFlags.READONLY),T=e.hasDecorator(p.DecoratorFlags.INLINE);if(e.is(u.CommonFlags.AMBIENT))return f||this.options.hasFeature(2)?(e.set(u.CommonFlags.MODULE_IMPORT),b(e,e.declaration),r.addGlobalImport(e.internalName,g,E,d),e.set(u.CommonFlags.COMPILED),!0):(this.error(c.DiagnosticCode.Operation_not_supported,e.declaration.range),!1);var v=!1;if(a){if(!t){_=this.currentFlow;e.hasDecorator(p.DecoratorFlags.LAZY)&&(this.currentFlow=e.file.startFunction.flow),t=this.compileExpression(a,h,53),this.skippedAutoreleases.has(t)&&(n=!0),this.currentFlow=_}if(l.getExpressionId(t)!=l.ExpressionId.Const&&(f?(t=r.precomputeExpression(t),l.getExpressionId(t)!=l.ExpressionId.Const&&(v=!0)):v=!0),T)if(v)this.warning(c.DiagnosticCode.Mutable_value_cannot_be_inlined,a.range);else{switch(assert(l.getExpressionId(t)==l.ExpressionId.Const),l.getExpressionType(t)){case l.NativeType.I32:e.constantValueKind=1,e.constantIntegerValue=i64_new(l.getConstValueI32(t),0);break;case l.NativeType.I64:e.constantValueKind=1,e.constantIntegerValue=i64_new(l.getConstValueI64Low(t),l.getConstValueI64High(t));break;case l.NativeType.F32:e.constantValueKind=2,e.constantFloatValue=l.getConstValueF32(t);break;case l.NativeType.F64:e.constantValueKind=2,e.constantFloatValue=l.getConstValueF64(t);break;default:return assert(!1),!1}e.set(u.CommonFlags.INLINED)}}else t=h.toNativeZero(r);var I=e.internalName;return v?(T&&this.error(c.DiagnosticCode.Decorator_0_is_not_valid_here,assert(y.findDecorator(y.DecoratorKind.INLINE,e.decoratorNodes)).range,"inline"),r.addGlobal(I,d,!0,h.toNativeZero(r)),h.isManaged&&!n&&(t=this.makeRetain(t)),this.currentBody.push(r.global_set(I,t))):T||r.addGlobal(I,d,!f,t),!0},r.prototype.compileEnum=function(e){var r,t;if(e.is(u.CommonFlags.COMPILED))return!0;e.set(u.CommonFlags.COMPILED);var n=this.module;this.currentEnum=e;var i=null,s=!1,o=e.is(u.CommonFlags.CONST)||e.hasDecorator(p.DecoratorFlags.INLINE);if(e.members)try{for(var _=a(e.members.values()),h=_.next();!h.done;h=_.next()){var d=h.value;if(d.kind==p.ElementKind.ENUMVALUE){var y=!1,f=d,T=f.valueNode;f.set(u.CommonFlags.COMPILED);var g=this.currentFlow;e.hasDecorator(p.DecoratorFlags.LAZY)&&(this.currentFlow=e.file.startFunction.flow);var E=void 0;T?(E=this.compileExpression(T,m.Type.i32,1),l.getExpressionId(E)!=l.ExpressionId.Const&&(E=n.precomputeExpression(E),l.getExpressionId(E)!=l.ExpressionId.Const&&(e.is(u.CommonFlags.CONST)&&this.error(c.DiagnosticCode.In_const_enum_declarations_member_initializer_must_be_constant_expression,T.range),y=!0))):null==i?E=n.i32(0):(s&&this.error(c.DiagnosticCode.Enum_member_must_have_initializer,d.identifierNode.range.atEnd),E=n.binary(l.BinaryOp.AddI32,n.global_get(i.internalName,l.NativeType.I32),n.i32(1)),E=n.precomputeExpression(E),l.getExpressionId(E)!=l.ExpressionId.Const&&(e.is(u.CommonFlags.CONST)&&this.error(c.DiagnosticCode.In_const_enum_declarations_member_initializer_must_be_constant_expression,d.declaration.range),y=!0)),this.currentFlow=g,y?(n.addGlobal(f.internalName,l.NativeType.I32,!0,n.i32(0)),this.currentBody.push(this.makeGlobalAssignment(f,E,!1)),s=!0):(o?(f.setConstantIntegerValue(i64_new(l.getConstValueI32(E)),m.Type.i32),f.is(u.CommonFlags.MODULE_EXPORT)&&n.addGlobal(f.internalName,l.NativeType.I32,!1,E)):n.addGlobal(f.internalName,l.NativeType.I32,!1,E),f.isImmutable=!0,s=!1),i=f}}}catch(e){r={error:e}}finally{try{h&&!h.done&&(t=_.return)&&t.call(_)}finally{if(r)throw r.error}}return this.currentEnum=null,!0},r.prototype.compileFunctionUsingTypeArguments=function(e,r,t,n){if(void 0===t&&(t=f.makeMap()),void 0===n&&(n=null),e.hasDecorator(p.DecoratorFlags.BUILTIN))return null;var i=this.resolver.resolveFunctionInclTypeArguments(e,r,e.parent,t,n||e.declaration);return i&&this.compileFunction(i)?i:null},r.prototype.ensureFunctionType=function(e,r,t){void 0===t&&(t=null);var n,i=e?e.length:0,a=0;if(t?((n=new Array(1+i))[0]=t.toNativeType(),a=1):n=new Array(i),e)for(var s=0;so){var f=a.getAndFreeTempLocal(i);h||a.setLocalFlag(f.index,_.LocalFlags.WRAPPED),d&&a.setLocalFlag(f.index,_.LocalFlags.NONNULL),r[o-1]=t.local_set(f.index,s),r.push(t.local_get(f.index,i.toNativeType()))}h||a.set(2),d&&a.set(4),a.set(257)}}if(e.is(u.CommonFlags.CONSTRUCTOR)){var T=this.options.nativeSizeType;assert(e.is(u.CommonFlags.INSTANCE));var g=assert(e.parent);if(assert(g.kind==p.ElementKind.CLASS),!a.is(256)){var E=assert(a.lookupLocal(u.CommonSymbols.this_));a.is(64)||(r.push(t.if(t.unary(T==l.NativeType.I64?l.UnaryOp.EqzI64:l.UnaryOp.EqzI32,t.local_get(E.index,T)),t.local_set(E.index,this.makeRetain(this.makeAllocation(g))))),this.makeFieldInitialization(g,r)),this.performAutoreleases(a,r),this.finishAutoreleases(a,r),r.push(t.local_get(E.index,this.options.nativeSizeType)),a.set(261)}g.base&&!a.is(128)&&this.error(c.DiagnosticCode.Constructors_for_derived_classes_must_contain_a_super_call,e.prototype.declaration.range)}else i==m.Type.void||a.is(256)||this.error(c.DiagnosticCode.A_function_whose_declared_type_is_not_void_must_return_a_value,e.prototype.functionTypeNode.returnType.range);return r},r.prototype.compileFunction=function(e){if(e.is(u.CommonFlags.COMPILED))return!0;assert(!(e.is(u.CommonFlags.AMBIENT)&&e.hasDecorator(p.DecoratorFlags.BUILTIN)));var r=this.currentType;e.set(u.CommonFlags.COMPILED);var t,n=this.module,i=e.signature,a=e.prototype.bodyNode,s=this.ensureFunctionType(i.parameterTypes,i.returnType,i.thisType);if(a){if(e.is(u.CommonFlags.AMBIENT)&&this.error(c.DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,e.identifierNode.range),e.hasDecorator(p.DecoratorFlags.EXTERNAL)){var o=e.decoratorNodes,l=assert(y.findDecorator(y.DecoratorKind.EXTERNAL,o));this.error(c.DiagnosticCode.Operation_not_supported,l.range)}var h=this.currentFlow,d=e.flow;this.currentFlow=d;var f=new Array,T=0;i.thisType&&++T;for(var v=i.parameterTypes,x=0,A=v.length;x=0)return e.functionTableIndex;var r=this.functionTable,t=r.length;return!e.is(u.CommonFlags.TRAMPOLINE)&&e.signature.requiredParameters1||l.getExpressionId(g[0])!=l.ExpressionId.Break)&&S.push(r.block(d,g));else for(var O=0,C=g.length;O=0?"case"+p.toString(10):"break")+"|"+a);var d=r.block("case0|"+a,c,l.NativeType.None),y=511,f=0;for(_=0;_=0&&(i.flags|=-17&y),i.flags|=-4097&f,d},r.prototype.compileThrowStatement=function(e){var r=this.currentFlow;r.set(264);var t=new Array;this.finishAutoreleases(r,t);var n=e.value,i=null;if(n.kind==y.NodeKind.NEW){var a=n.arguments;a.length&&(i=a[0])}return t.push(o.compileAbort(this,i,e)),I(this.module,t,l.NativeType.None)},r.prototype.compileTryStatement=function(e){return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()},r.prototype.compileVariableStatement=function(e){for(var r=this.module,t=e.declarations,n=t.length,i=this.currentFlow,a=new Array,s=this.resolver,o=0;o");continue}y=this.currentType}var g=h.is(u.CommonFlags.CONST),E=!1;if(g)if(f){if(f=r.precomputeExpression(f),l.getExpressionId(f)==l.ExpressionId.Const){var v=new p.Local(d,-1,y,i.parentFunction);switch(l.getExpressionType(f)){case l.NativeType.I32:v.setConstantIntegerValue(i64_new(l.getConstValueI32(f),0),y);break;case l.NativeType.I64:v.setConstantIntegerValue(i64_new(l.getConstValueI64Low(f),l.getConstValueI64High(f)),y);break;case l.NativeType.F32:v.setConstantFloatValue(l.getConstValueF32(f),y);break;case l.NativeType.F64:v.setConstantFloatValue(l.getConstValueF64(f),y);break;default:return assert(!1),r.unreachable()}var b=i.scopedLocals;if(b){if(b.has(d))return this.error(c.DiagnosticCode.Duplicate_identifier_0,h.name.range,d),this.module.unreachable()}else i.scopedLocals=b=new Map;b.set(d,v),E=!0}}else this.error(c.DiagnosticCode._const_declarations_must_be_initialized,h.range);if(!E){v=void 0;if(h.isAny(u.CommonFlags.LET|u.CommonFlags.CONST)||i.is(32768)){var x=i.getScopedLocal(d);x?(this.error(c.DiagnosticCode.Duplicate_identifier_0,h.name.range,h.name.text),v=x):v=i.addScopedLocal(d,y),g&&i.setLocalFlag(v.index,_.LocalFlags.CONSTANT)}else{if(i.lookupLocal(d)){this.error(c.DiagnosticCode.Duplicate_identifier_0,h.name.range,d);continue}v=i.parentFunction.addLocal(y,d,h),g&&i.setLocalFlag(v.index,_.LocalFlags.CONSTANT)}var A=y.isManaged;f?(i.isNonnull(f,y)&&i.setLocalFlag(v.index,_.LocalFlags.NONNULL),A?(i.setLocalFlag(v.index,_.LocalFlags.RETAINED),a.push(r.local_set(v.index,T?f:this.makeRetain(f)))):(a.push(r.local_set(v.index,f)),v.type.is(36)&&(i.canOverflow(f,y)?i.unsetLocalFlag(v.index,_.LocalFlags.WRAPPED):i.setLocalFlag(v.index,_.LocalFlags.WRAPPED)))):A?(a.push(r.local_set(v.index,y.toNativeZero(r))),i.setLocalFlag(v.index,_.LocalFlags.CONDITIONALLY_RETAINED)):v.type.is(36)&&i.setLocalFlag(v.index,_.LocalFlags.WRAPPED)}}return 0==a.length?0:I(r,a,l.NativeType.None)},r.prototype.compileVoidStatement=function(e){return this.compileExpression(e.expression,m.Type.void,10)},r.prototype.compileWhileStatement=function(e){var r=this.module,t=this.currentFlow,n=r.precomputeExpression(this.makeIsTrueish(this.compileExpression(e.condition,m.Type.bool),this.currentType)),i=!1;if(l.getExpressionId(n)==l.ExpressionId.Const){if(assert(l.getExpressionType(n)==l.NativeType.I32),!l.getConstValueI32(n))return r.nop();i=!0}var a=t.pushBreakLabel(),s=t.fork();this.currentFlow=s;var o="break|"+a;s.breakLabel=o;var c="continue|"+a;s.continueLabel=c,s.inheritNonnullIfTrue(n);var u=new Array;e.statement.kind==y.NodeKind.BLOCK?this.compileStatements(e.statement.statements,!1,u):u.push(this.compileStatement(e.statement));var p=!s.is(256)&&!s.is(16);p&&(this.performAutoreleases(s,u),u.push(r.br(c))),i||u.unshift(r.br(o,r.unary(l.UnaryOp.EqzI32,n)));var _=I(r,u,l.NativeType.None);return(p||s.isAny(8224))&&(_=r.loop(c,_)),i&&!s.isAny(4112)||(_=r.block(o,[_])),s.freeScopedLocals(),t.popBreakLabel(),s.unset(12336),i?t.inherit(s):t.inheritConditional(s),this.currentFlow=t,_},r.prototype.compileInlineConstant=function(e,r,t){assert(e.is(u.CommonFlags.INLINED));var n=e.type;switch(!(3&t)&&n.is(4)&&r.is(4)&&n.size>i:0);case 5:case 6:case 10:var a=e.type.computeSmallIntegerMask(m.Type.i32);return this.module.i32(1==e.constantValueKind?i64_low(e.constantIntegerValue)&a:0);case 2:case 7:return this.module.i32(1==e.constantValueKind?i64_low(e.constantIntegerValue):0);case 4:case 9:if(!e.program.options.isWasm64)return this.module.i32(1==e.constantValueKind?i64_low(e.constantIntegerValue):0);case 3:case 8:return 1==e.constantValueKind?this.module.i64(i64_low(e.constantIntegerValue),i64_high(e.constantIntegerValue)):this.module.i64(0);case 12:if(!e.hasDecorator(p.DecoratorFlags.BUILTIN)||r!=m.Type.f32)return this.module.f64(e.constantFloatValue);this.currentType=m.Type.f32;case 11:return this.module.f32(e.constantFloatValue);default:return assert(!1),this.module.unreachable()}},r.prototype.compileExpression=function(e,r,t){var n;switch(void 0===t&&(t=0),this.currentType=r,r==m.Type.void&&(t|=8),e.kind){case y.NodeKind.ASSERTION:n=this.compileAssertionExpression(e,r,t);break;case y.NodeKind.BINARY:n=this.compileBinaryExpression(e,r,t);break;case y.NodeKind.CALL:n=this.compileCallExpression(e,r,t);break;case y.NodeKind.COMMA:n=this.compileCommaExpression(e,r,t);break;case y.NodeKind.ELEMENTACCESS:n=this.compileElementAccessExpression(e,r,t);break;case y.NodeKind.FUNCTION:n=this.compileFunctionExpression(e,r.signatureReference,t);break;case y.NodeKind.IDENTIFIER:case y.NodeKind.FALSE:case y.NodeKind.NULL:case y.NodeKind.THIS:case y.NodeKind.SUPER:case y.NodeKind.TRUE:n=this.compileIdentifierExpression(e,r,t);break;case y.NodeKind.INSTANCEOF:n=this.compileInstanceOfExpression(e,r,t);break;case y.NodeKind.LITERAL:n=this.compileLiteralExpression(e,r,t);break;case y.NodeKind.NEW:n=this.compileNewExpression(e,r,t);break;case y.NodeKind.PARENTHESIZED:n=this.compileExpression(e.expression,r,t);break;case y.NodeKind.PROPERTYACCESS:n=this.compilePropertyAccessExpression(e,r,t);break;case y.NodeKind.TERNARY:n=this.compileTernaryExpression(e,r,t);break;case y.NodeKind.UNARYPOSTFIX:n=this.compileUnaryPostfixExpression(e,r,t);break;case y.NodeKind.UNARYPREFIX:n=this.compileUnaryPrefixExpression(e,r,t);break;default:this.error(c.DiagnosticCode.Operation_not_supported,e.range),n=this.module.unreachable()}var i=this.currentType,a=0!=(4&t);return i!=r&&(2&t?(n=this.convertExpression(n,i,r,!0,a,e),a=!1,this.currentType=r):1&t&&(n=this.convertExpression(n,i,r,!1,a,e),a=!1,this.currentType=r)),a&&(n=this.ensureSmallIntegerWrap(n,i)),this.options.sourceMap&&this.addDebugLocation(n,e.range),n},r.prototype.precomputeExpression=function(e,r,t){return void 0===t&&(t=0),this.module.precomputeExpression(this.compileExpression(e,r,t))},r.prototype.convertExpression=function(e,r,t,n,i,a){var s=this.module;return 14==r.kind?(assert(14!=t.kind),this.error(c.DiagnosticCode.Type_0_is_not_assignable_to_type_1,a.range,r.toString(),t.toString()),s.unreachable()):14==t.kind?s.drop(e):(this.currentFlow.isNonnull(e,r)&&(r=r.nonNullableType),r.isAssignableTo(t)||n||(r.nonNullableType==t?this.error(c.DiagnosticCode.Object_is_possibly_null,a.range):this.error(c.DiagnosticCode.Conversion_from_type_0_to_1_requires_an_explicit_cast,a.range,r.toString(),t.toString())),r.is(8)?t.is(8)?11==r.kind?12==t.kind&&(e=s.unary(l.UnaryOp.PromoteF32,e)):11==t.kind&&(e=s.unary(l.UnaryOp.DemoteF64,e)):t.is(4)?11==r.kind?t==m.Type.bool?(e=s.binary(l.BinaryOp.NeF32,e,s.f32(0)),i=!1):e=t.is(1)?t.is(64)?s.unary(l.UnaryOp.TruncF32ToI64,e):s.unary(l.UnaryOp.TruncF32ToI32,e):t.is(64)?s.unary(l.UnaryOp.TruncF32ToU64,e):s.unary(l.UnaryOp.TruncF32ToU32,e):t==m.Type.bool?(e=s.binary(l.BinaryOp.NeF64,e,s.f64(0)),i=!1):e=t.is(1)?t.is(64)?s.unary(l.UnaryOp.TruncF64ToI64,e):s.unary(l.UnaryOp.TruncF64ToI32,e):t.is(64)?s.unary(l.UnaryOp.TruncF64ToU64,e):s.unary(l.UnaryOp.TruncF64ToU32,e):(assert(0==t.flags,"void type expected"),e=s.drop(e)):r.is(4)&&t.is(8)?e=11==t.kind?r.is(64)?s.unary(r.is(1)?l.UnaryOp.ConvertI64ToF32:l.UnaryOp.ConvertU64ToF32,e):s.unary(r.is(1)?l.UnaryOp.ConvertI32ToF32:l.UnaryOp.ConvertU32ToF32,e):r.is(64)?s.unary(r.is(1)?l.UnaryOp.ConvertI64ToF64:l.UnaryOp.ConvertU64ToF64,e):s.unary(r.is(1)?l.UnaryOp.ConvertI32ToF64:l.UnaryOp.ConvertU32ToF64,e):r.is(64)?t==m.Type.bool?(e=s.binary(l.BinaryOp.NeI64,e,s.i64(0)),i=!1):t.is(64)||(e=s.unary(l.UnaryOp.WrapI64,e)):t.is(64)?(e=s.unary(r.is(1)?l.UnaryOp.ExtendI32:l.UnaryOp.ExtendU32,this.ensureSmallIntegerWrap(e,r)),i=!1):r.is(32)&&r.size",i.toString(),s.toString()),this.currentType=r,y.unreachable();switch(n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T),o.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.GtI32,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.GtI64:l.BinaryOp.GtI32,n,a);break;case 3:h=y.binary(l.BinaryOp.GtI64,n,a);break;case 5:case 6:case 7:case 10:h=y.binary(l.BinaryOp.GtU32,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.GtU64:l.BinaryOp.GtU32,n,a);break;case 8:h=y.binary(l.BinaryOp.GtU64,n,a);break;case 11:h=y.binary(l.BinaryOp.GtF32,n,a);break;case 12:h=y.binary(l.BinaryOp.GtF64,n,a);break;default:assert(!1),h=y.unreachable()}this.currentType=m.Type.bool;break;case d.Token.LESSTHAN_EQUALS:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.LE)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!0)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"<=",i.toString(),s.toString()),this.currentType=r,y.unreachable();switch(n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T),o.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.LeI32,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.LeI64:l.BinaryOp.LeI32,n,a);break;case 3:h=y.binary(l.BinaryOp.LeI64,n,a);break;case 5:case 6:case 7:case 10:h=y.binary(l.BinaryOp.LeU32,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.LeU64:l.BinaryOp.LeU32,n,a);break;case 8:h=y.binary(l.BinaryOp.LeU64,n,a);break;case 11:h=y.binary(l.BinaryOp.LeF32,n,a);break;case 12:h=y.binary(l.BinaryOp.LeF64,n,a);break;default:assert(!1),h=y.unreachable()}this.currentType=m.Type.bool;break;case d.Token.GREATERTHAN_EQUALS:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.GE)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!0)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,">=",i.toString(),s.toString()),this.currentType=r,y.unreachable();switch(n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T),o.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.GeI32,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.GeI64:l.BinaryOp.GeI32,n,a);break;case 3:h=y.binary(l.BinaryOp.GeI64,n,a);break;case 5:case 6:case 7:case 10:h=y.binary(l.BinaryOp.GeU32,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.GeU64:l.BinaryOp.GeU32,n,a);break;case 8:h=y.binary(l.BinaryOp.GeU64,n,a);break;case 11:h=y.binary(l.BinaryOp.GeF32,n,a);break;case 12:h=y.binary(l.BinaryOp.GeF64,n,a);break;default:assert(!1),h=y.unreachable()}this.currentType=m.Type.bool;break;case d.Token.EQUALS_EQUALS_EQUALS:case d.Token.EQUALS_EQUALS:if(n=this.compileExpression(f,r),i=this.currentType,E==d.Token.EQUALS_EQUALS&&this.currentType.is(256))if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.EQ)){h=this.compileBinaryOverload(A,f,n,T,e);break}if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,d.operatorTokenToString(e.operator),i.toString(),s.toString()),this.currentType=r,y.unreachable();switch(n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T),o.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:h=y.binary(l.BinaryOp.EqI32,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.EqI64:l.BinaryOp.EqI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.EqI64,n,a);break;case 11:h=y.binary(l.BinaryOp.EqF32,n,a);break;case 12:h=y.binary(l.BinaryOp.EqF64,n,a);break;case 13:h=y.unary(l.UnaryOp.AllTrueVecI8x16,y.binary(l.BinaryOp.EqVecI8x16,n,a));break;default:assert(!1),h=y.unreachable()}this.currentType=m.Type.bool;break;case d.Token.EXCLAMATION_EQUALS_EQUALS:case d.Token.EXCLAMATION_EQUALS:if(n=this.compileExpression(f,r),i=this.currentType,E==d.Token.EXCLAMATION_EQUALS&&this.currentType.is(256))if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.NE)){h=this.compileBinaryOverload(A,f,n,T,e);break}if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,d.operatorTokenToString(e.operator),i.toString(),s.toString()),this.currentType=r,y.unreachable();switch(n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T),o.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:h=y.binary(l.BinaryOp.NeI32,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.NeI64:l.BinaryOp.NeI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.NeI64,n,a);break;case 11:h=y.binary(l.BinaryOp.NeF32,n,a);break;case 12:h=y.binary(l.BinaryOp.NeF64,n,a);break;case 13:h=y.unary(l.UnaryOp.AnyTrueVecI8x16,y.binary(l.BinaryOp.NeVecI8x16,n,a));break;default:assert(!1),h=y.unreachable()}this.currentType=m.Type.bool;break;case d.Token.EQUALS:return this.compileAssignment(f,T,r);case d.Token.PLUS_EQUALS:g=!0;case d.Token.PLUS:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.ADD)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)a=this.compileExpression(T,i,1);else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"+",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:case 2:case 7:h=y.binary(l.BinaryOp.AddI32,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.AddI64:l.BinaryOp.AddI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.AddI64,n,a);break;case 11:h=y.binary(l.BinaryOp.AddF32,n,a);break;case 12:h=y.binary(l.BinaryOp.AddF64,n,a);break;default:assert(!1),h=y.unreachable()}break;case d.Token.MINUS_EQUALS:g=!0;case d.Token.MINUS:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.SUB)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"-",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:case 2:case 7:h=y.binary(l.BinaryOp.SubI32,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.SubI64:l.BinaryOp.SubI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.SubI64,n,a);break;case 11:h=y.binary(l.BinaryOp.SubF32,n,a);break;case 12:h=y.binary(l.BinaryOp.SubF64,n,a);break;default:assert(!1),h=y.unreachable()}break;case d.Token.ASTERISK_EQUALS:g=!0;case d.Token.ASTERISK:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.MUL)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)n=this.ensureSmallIntegerWrap(n,i),a=this.compileExpression(T,i,1);else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"*",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:case 2:case 7:h=y.binary(l.BinaryOp.MulI32,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.MulI64:l.BinaryOp.MulI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.MulI64,n,a);break;case 11:h=y.binary(l.BinaryOp.MulF32,n,a);break;case 12:h=y.binary(l.BinaryOp.MulF64,n,a);break;default:assert(!1),h=y.unreachable()}break;case d.Token.ASTERISK_ASTERISK_EQUALS:g=!0;case d.Token.ASTERISK_ASTERISK:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.POW)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}var v=void 0;if(11==this.currentType.kind){if(a=this.compileExpression(T,m.Type.f32,1),s=this.currentType,!(v=this.f32PowInstance)){if(!(b=this.program.lookupGlobal(u.CommonSymbols.Mathf))){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Mathf"),h=y.unreachable();break}if(!(I=b.members?b.members.get(u.CommonSymbols.pow):null)){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Mathf.pow"),h=y.unreachable();break}assert(I.kind==p.ElementKind.FUNCTION_PROTOTYPE),this.f32PowInstance=v=this.resolver.resolveFunction(I,null)}}else if(n=this.convertExpression(n,this.currentType,m.Type.f64,!1,!1,f),i=this.currentType,a=this.compileExpression(T,m.Type.f64,1),s=this.currentType,!(v=this.f64PowInstance)){if(!(b=this.program.lookupGlobal(u.CommonSymbols.Math))){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Math"),h=y.unreachable();break}if(!(I=b.members?b.members.get(u.CommonSymbols.pow):null)){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Math.pow"),h=y.unreachable();break}assert(I.kind==p.ElementKind.FUNCTION_PROTOTYPE),this.f64PowInstance=v=this.resolver.resolveFunction(I,null)}h=v&&this.compileFunction(v)?this.makeCallDirect(v,[n,a],e):y.unreachable();break;case d.Token.SLASH_EQUALS:g=!0;case d.Token.SLASH:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.DIV)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)n=this.ensureSmallIntegerWrap(n,i),a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"/",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T)}switch(this.currentType.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.DivI32,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.DivI64:l.BinaryOp.DivI32,n,a);break;case 3:h=y.binary(l.BinaryOp.DivI64,n,a);break;case 5:case 6:case 10:case 7:h=y.binary(l.BinaryOp.DivU32,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.DivU64:l.BinaryOp.DivU32,n,a);break;case 8:h=y.binary(l.BinaryOp.DivU64,n,a);break;case 11:h=y.binary(l.BinaryOp.DivF32,n,a);break;case 12:h=y.binary(l.BinaryOp.DivF64,n,a);break;default:assert(!1),h=y.unreachable()}break;case d.Token.PERCENT_EQUALS:g=!0;case d.Token.PERCENT:if(n=this.compileExpression(f,r),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.REM)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)n=this.ensureSmallIntegerWrap(n,i),a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"%",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!0,f),a=this.convertExpression(a,s,s=o,!1,!0,T)}switch(this.currentType.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.RemI32,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.RemI64:l.BinaryOp.RemI32,n,a);break;case 3:h=y.binary(l.BinaryOp.RemI64,n,a);break;case 5:case 6:case 10:case 7:h=y.binary(l.BinaryOp.RemU32,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.RemU64:l.BinaryOp.RemU32,n,a);break;case 8:h=y.binary(l.BinaryOp.RemU64,n,a);break;case 11:if(!(v=this.f32ModInstance)){if(!(b=this.program.lookupGlobal(u.CommonSymbols.Mathf))){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Mathf"),h=y.unreachable();break}if(!(I=b.members?b.members.get(u.CommonSymbols.mod):null)){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Mathf.mod"),h=y.unreachable();break}assert(I.kind==p.ElementKind.FUNCTION_PROTOTYPE),this.f32ModInstance=v=this.resolver.resolveFunction(I,null)}h=v&&this.compileFunction(v)?this.makeCallDirect(v,[n,a],e):y.unreachable();break;case 12:if(!(v=this.f64ModInstance)){var b,I;if(!(b=this.program.lookupGlobal(u.CommonSymbols.Math))){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Math"),h=y.unreachable();break}if(!(I=b.members?b.members.get(u.CommonSymbols.mod):null)){this.error(c.DiagnosticCode.Cannot_find_name_0,e.range,"Math.mod"),h=y.unreachable();break}assert(I.kind==p.ElementKind.FUNCTION_PROTOTYPE),this.f64ModInstance=v=this.resolver.resolveFunction(I,null)}h=v&&this.compileFunction(v)?this.makeCallDirect(v,[n,a],e):y.unreachable();break;default:assert(!1),h=y.unreachable()}break;case d.Token.LESSTHAN_LESSTHAN_EQUALS:g=!0;case d.Token.LESSTHAN_LESSTHAN:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_SHL)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}switch(a=this.compileExpression(T,i,1),s=this.currentType,this.currentType.kind){case 0:case 1:case 5:case 6:case 10:case 2:case 7:h=y.binary(l.BinaryOp.ShlI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.ShlI64,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.ShlI64:l.BinaryOp.ShlI32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.GREATERTHAN_GREATERTHAN_EQUALS:g=!0;case d.Token.GREATERTHAN_GREATERTHAN:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_SHR)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}switch(n=this.ensureSmallIntegerWrap(n,i),a=this.compileExpression(T,i,1),s=this.currentType,this.currentType.kind){case 0:case 1:case 2:h=y.binary(l.BinaryOp.ShrI32,n,a);break;case 3:h=y.binary(l.BinaryOp.ShrI64,n,a);break;case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.ShrI64:l.BinaryOp.ShrI32,n,a);break;case 5:case 6:case 10:case 7:h=y.binary(l.BinaryOp.ShrU32,n,a);break;case 8:h=y.binary(l.BinaryOp.ShrU64,n,a);break;case 9:h=y.binary(this.options.isWasm64?l.BinaryOp.ShrU64:l.BinaryOp.ShrU32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:g=!0;case d.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_SHR_U)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}switch(n=this.ensureSmallIntegerWrap(n,i),a=this.compileExpression(T,i,1),s=this.currentType,this.currentType.kind){case 5:case 6:case 10:h=y.binary(l.BinaryOp.ShrU32,n,a);case 0:case 1:case 2:case 7:h=y.binary(l.BinaryOp.ShrU32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.ShrU64,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.ShrU64:l.BinaryOp.ShrU32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.AMPERSAND_EQUALS:g=!0;case d.Token.AMPERSAND:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_AND)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"&",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 10:case 7:h=y.binary(l.BinaryOp.AndI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.AndI64,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.AndI64:l.BinaryOp.AndI32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.BAR_EQUALS:g=!0;case d.Token.BAR:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_OR)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"|",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:h=y.binary(l.BinaryOp.OrI32,n,a);break;case 2:case 7:h=y.binary(l.BinaryOp.OrI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.OrI64,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.OrI64:l.BinaryOp.OrI32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.CARET_EQUALS:g=!0;case d.Token.CARET:if(n=this.compileExpression(f,r.intType),i=this.currentType,this.currentType.is(256)){var x,A;if(x=i.classReference)if(A=x.lookupOverload(p.OperatorKind.BITWISE_XOR)){h=this.compileBinaryOverload(A,f,n,T,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}if(g)a=this.compileExpression(T,i,1),s=this.currentType;else{if(a=this.compileExpression(T,i),s=this.currentType,!(o=m.Type.commonDenominator(i,s,!1)))return this.error(c.DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,e.range,"^",i.toString(),s.toString()),this.currentType=r,y.unreachable();n=this.convertExpression(n,i,i=o,!1,!1,f),a=this.convertExpression(a,s,s=o,!1,!1,T)}switch(this.currentType.kind){case 0:case 1:case 5:case 6:case 10:h=y.binary(l.BinaryOp.XorI32,n,a);break;case 2:case 7:h=y.binary(l.BinaryOp.XorI32,n,a);break;case 3:case 8:h=y.binary(l.BinaryOp.XorI64,n,a);break;case 9:case 4:h=y.binary(this.options.isWasm64?l.BinaryOp.XorI64:l.BinaryOp.XorI32,n,a);break;case 11:case 12:return this.error(c.DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,e.range,d.operatorTokenToString(e.operator),this.currentType.toString()),y.unreachable();default:assert(!1),h=y.unreachable()}break;case d.Token.AMPERSAND_AMPERSAND:var N=this.currentFlow,S=20&t;n=this.compileExpression(f,r.exceptVoid,S),i=this.currentType;var O=N.fork();if(this.currentFlow=O,O.inheritNonnullIfTrue(n),a=this.compileExpression(T,i,1|S),s=i,r==m.Type.bool||r==m.Type.void)a=this.performAutoreleasesWithValue(O,a,s),O.freeScopedLocals(),this.currentFlow=N,this.currentType=m.Type.bool,h=y.if(this.makeIsTrueish(n,i),this.makeIsTrueish(a,s),y.i32(0));else if(i.isManaged){var C=this.skippedAutoreleases.has(n),k=this.skippedAutoreleases.has(a),R=N.getTempLocal(i);n=y.local_tee(R.index,n);var L=!1;C!=k?C?(a=this.makeRetain(a),k=!0):L=!0:16&t||(a=this.moveAutorelease(a,O,N));var F=new Array;C&&F.unshift(this.makeRelease(y.local_get(R.index,i.toNativeType()))),a=this.performAutoreleasesWithValue(O,a,s,F),O.freeScopedLocals(),this.currentFlow=N,h=y.if(this.makeIsTrueish(n,i),a,L?this.makeRetain(y.local_get(R.index,i.toNativeType())):y.local_get(R.index,i.toNativeType())),(C||k)&&this.skippedAutoreleases.add(h),R&&N.freeTempLocal(R)}else if(a=this.performAutoreleasesWithValue(O,a,s),O.freeScopedLocals(),this.currentFlow=N,h=y.cloneExpression(n,!0,0))h=y.if(this.makeIsTrueish(n,this.currentType),a,h);else{var D=N.getTempLocal(i);N.canOverflow(n,i)||N.setLocalFlag(D.index,_.LocalFlags.WRAPPED),N.isNonnull(n,i)&&N.setLocalFlag(D.index,_.LocalFlags.NONNULL),h=y.if(this.makeIsTrueish(y.local_tee(D.index,n),i),a,y.local_get(D.index,i.toNativeType()))}this.currentType=i;break;case d.Token.BAR_BAR:N=this.currentFlow,S=20&t;n=this.compileExpression(f,r.exceptVoid,S),i=this.currentType;O=N.fork();if(this.currentFlow=O,O.inheritNonnullIfFalse(n),a=this.compileExpression(T,i,1|S),s=i,r==m.Type.bool||r==m.Type.void)a=this.performAutoreleasesWithValue(O,a,i),O.freeScopedLocals(),this.currentFlow=N,this.currentType=m.Type.bool,h=y.if(this.makeIsTrueish(n,i),y.i32(1),this.makeIsTrueish(a,s));else if(i.isManaged){C=this.skippedAutoreleases.has(n),k=this.skippedAutoreleases.has(a),R=N.getTempLocal(i);n=y.local_tee(R.index,n);var B=!1;C!=k?C?(a=this.makeRetain(a),k=!0):B=!0:16&t||(a=this.moveAutorelease(a,O,N));F=new Array;C&&F.unshift(this.makeRelease(y.local_get(R.index,i.toNativeType()))),a=this.performAutoreleasesWithValue(O,a,s,F),O.freeScopedLocals(),this.currentFlow=N,h=y.if(this.makeIsTrueish(n,i),B?this.makeRetain(y.local_get(R.index,i.toNativeType())):y.local_get(R.index,i.toNativeType()),a),(C||k)&&this.skippedAutoreleases.add(h),R&&N.freeTempLocal(R)}else if(a=this.performAutoreleasesWithValue(O,a,s),O.freeScopedLocals(),this.currentFlow=N,h=y.cloneExpression(n,!0,0))h=y.if(this.makeIsTrueish(n,i),h,a);else{D=N.getAndFreeTempLocal(i);N.canOverflow(n,i)||N.setLocalFlag(D.index,_.LocalFlags.WRAPPED),N.isNonnull(n,i)&&N.setLocalFlag(D.index,_.LocalFlags.NONNULL),h=y.if(this.makeIsTrueish(y.local_tee(D.index,n),i),y.local_get(D.index,i.toNativeType()),a)}this.currentType=i;break;default:assert(!1),h=this.module.unreachable()}if(!g)return h;var P=this.resolver,w=P.resolveExpression(f,this.currentFlow);return w?this.makeAssignment(w,h,f,P.currentThisExpression,P.currentElementExpression,r!=m.Type.void):y.unreachable()},r.prototype.compileUnaryOverload=function(e,r,t,n){return this.makeCallDirect(e,[t],n,!1)},r.prototype.compileBinaryOverload=function(e,r,t,n,i){var a;if(e.is(u.CommonFlags.INSTANCE)){var s=assert(e.parent);assert(s.kind==p.ElementKind.CLASS),a=e.signature.parameterTypes[0]}else a=e.signature.parameterTypes[1];var o=this.compileExpression(n,a,1);return this.makeCallDirect(e,[t,o],i)},r.prototype.compileAssignment=function(e,r,t){var n=this.program.resolver,i=this.currentFlow,a=n.resolveExpression(e,i);if(!a)return this.module.unreachable();var s,o=n.currentThisExpression,l=n.currentElementExpression;switch(a.kind){case p.ElementKind.GLOBAL:if(!this.compileGlobal(a))return this.module.unreachable();case p.ElementKind.LOCAL:case p.ElementKind.FIELD:s=a.type,a.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(e);break;case p.ElementKind.PROPERTY_PROTOTYPE:var u=a.setterPrototype;if(!u)return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,e.range,a.internalName),this.module.unreachable();if(!(_=this.resolver.resolveFunction(u,null,f.makeMap(),h.ReportMode.REPORT)))return this.module.unreachable();assert(1==_.signature.parameterTypes.length),s=_.signature.parameterTypes[0],u.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(e);break;case p.ElementKind.PROPERTY:var _;if(!(_=a.setterInstance))return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,e.range,a.internalName),this.module.unreachable();assert(1==_.signature.parameterTypes.length),s=_.signature.parameterTypes[0],_.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(e);break;case p.ElementKind.CLASS:if(l){var d=i.is(65536),y=a.lookupOverload(p.OperatorKind.INDEXED_SET,d);if(!y)return a.lookupOverload(p.OperatorKind.INDEXED_GET,d)?this.error(c.DiagnosticCode.Index_signature_in_type_0_only_permits_reading,e.range,a.internalName):this.error(c.DiagnosticCode.Index_signature_is_missing_in_type_0,e.range,a.internalName),this.module.unreachable();assert(2==y.signature.parameterTypes.length),s=y.signature.parameterTypes[1],y.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(e);break}default:return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()}return assert(s!=m.Type.void),this.makeAssignment(a,this.compileExpression(r,s,17),e,o,l,t!=m.Type.void)},r.prototype.makeAssignment=function(e,r,t,n,i,a){var s=this.module,o=this.currentFlow;switch(e.kind){case p.ElementKind.LOCAL:return o.isLocalFlag(e.index,_.LocalFlags.CONSTANT,!0)?(this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,t.range,e.internalName),this.currentType=a?e.type:m.Type.void,s.unreachable()):this.makeLocalAssignment(e,r,a);case p.ElementKind.GLOBAL:return this.compileGlobal(e)?e.isAny(u.CommonFlags.CONST|u.CommonFlags.READONLY)?(this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,t.range,e.internalName),this.currentType=a?e.type:m.Type.void,s.unreachable()):this.makeGlobalAssignment(e,r,a):s.unreachable();case p.ElementKind.FIELD:var l=e.initializerNode;return!e.is(u.CommonFlags.READONLY)||o.actualFunction.is(u.CommonFlags.CONSTRUCTOR)||l?this.makeFieldAssignment(e,r,this.compileExpression(assert(n),this.options.usizeType),a):(this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,t.range,e.internalName),s.unreachable());case p.ElementKind.PROPERTY_PROTOTYPE:this.skippedAutoreleases.has(r)&&(r=this.makeAutorelease(r,o));var d=e.setterPrototype;if(!d)return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,t.range,e.internalName),s.unreachable();if(!(g=this.resolver.resolveFunction(d,null,f.makeMap(),h.ReportMode.REPORT)))return s.unreachable();if(!a)return this.makeCallDirect(g,[r],t);var y=assert(e.getterPrototype);if(!(v=this.resolver.resolveFunction(y,null,f.makeMap(),h.ReportMode.REPORT)))return s.unreachable();var T=(R=v.signature.returnType).toNativeType();return s.block(null,[this.makeCallDirect(g,[r],t),this.makeCallDirect(v,null,t)],T);case p.ElementKind.PROPERTY:var g;if(this.skippedAutoreleases.has(r)&&(r=this.makeAutorelease(r,o)),!(g=e.setterInstance))return this.error(c.DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,t.range,e.internalName),s.unreachable();if(!a){var E=this.compileExpression(assert(n),this.options.usizeType);return this.makeCallDirect(g,[E,r],t)}T=(R=(v=assert(e.getterInstance)).signature.returnType).toNativeType();var v,b=this.compileExpression(assert(n),this.options.usizeType),I=o.getAndFreeTempLocal(R).index;return s.block(null,[this.makeCallDirect(g,[s.local_tee(I,b),r],t),this.makeCallDirect(v,[s.local_get(I,T)],t)],T);case p.ElementKind.CLASS:if(this.skippedAutoreleases.has(r)&&(r=this.makeAutorelease(r,o)),i){var x=o.is(65536),A=e.lookupOverload(p.OperatorKind.INDEXED_GET,x);if(!A)return this.error(c.DiagnosticCode.Index_signature_is_missing_in_type_0,t.range,e.internalName),s.unreachable();var N=e.lookupOverload(p.OperatorKind.INDEXED_SET,x);if(!N)return this.error(c.DiagnosticCode.Index_signature_in_type_0_only_permits_reading,t.range,e.internalName),this.currentType=a?A.signature.returnType:m.Type.void,s.unreachable();var S=e.type,O=(b=this.compileExpression(assert(n),this.options.usizeType),this.compileExpression(i,m.Type.i32,1));if(a){var C=o.getTempLocal(S),k=o.getAndFreeTempLocal(this.currentType),R=A.signature.returnType;return o.freeTempLocal(C),s.block(null,[this.makeCallDirect(N,[s.local_tee(C.index,b),s.local_tee(k.index,O),r],t),this.makeCallDirect(A,[s.local_get(C.index,C.type.toNativeType()),s.local_get(k.index,k.type.toNativeType())],t)],R.toNativeType())}return this.makeCallDirect(N,[b,O,r],t)}}return this.error(c.DiagnosticCode.Operation_not_supported,t.range),s.unreachable()},r.prototype.makeLocalAssignment=function(e,r,t){var n=e.type;assert(n!=m.Type.void);var i=this.currentFlow,a=e.index;if(n.is(512)&&(i.isNonnull(r,n)?i.setLocalFlag(a,_.LocalFlags.NONNULL):i.unsetLocalFlag(a,_.LocalFlags.NONNULL)),i.setLocalFlag(a,_.LocalFlags.WRITTENTO),n.isManaged){var s=this.module,o=n.toNativeType();return i.isAnyLocalFlag(a,_.LocalFlags.ANY_RETAINED)?this.skippedAutoreleases.has(r)?(r=this.makeSkippedRelease(s.local_get(a,o),r),t?(this.currentType=n,s.local_tee(a,r)):(this.currentType=m.Type.void,s.local_set(a,r))):(r=this.makeRetainRelease(s.local_get(a,o),r),t?(this.currentType=n,s.local_tee(a,r)):(this.currentType=m.Type.void,s.local_set(a,r))):(i.unsetLocalFlag(a,_.LocalFlags.CONDITIONALLY_RETAINED),i.setLocalFlag(a,_.LocalFlags.RETAINED),this.skippedAutoreleases.has(r)||(r=this.makeRetain(r)),t?(this.currentType=n,s.local_tee(a,r)):(this.currentType=m.Type.void,s.local_set(a,r)))}return n.is(36)&&(i.canOverflow(r,n)?i.unsetLocalFlag(a,_.LocalFlags.WRAPPED):i.setLocalFlag(a,_.LocalFlags.WRAPPED)),t?(this.currentType=n,this.module.local_tee(a,r)):(this.currentType=m.Type.void,this.module.local_set(a,r))},r.prototype.makeGlobalAssignment=function(e,r,t){var n=this.module,i=e.type;assert(i!=m.Type.void);var a=i.toNativeType();return i.isManaged?this.skippedAutoreleases.has(r)?t?(this.currentType=i,n.block(null,[n.global_set(e.internalName,this.makeSkippedRelease(n.global_get(e.internalName,a),r)),n.global_get(e.internalName,a)],a)):(this.currentType=m.Type.void,n.global_set(e.internalName,this.makeSkippedRelease(n.global_get(e.internalName,a),r))):t?(this.currentType=i,n.block(null,[n.global_set(e.internalName,this.makeRetainRelease(n.global_get(e.internalName,a),r)),n.global_get(e.internalName,a)],a)):(this.currentType=m.Type.void,n.global_set(e.internalName,this.makeRetainRelease(n.global_get(e.internalName,a),r))):(r=this.ensureSmallIntegerWrap(r,i),t?(this.currentType=i,n.block(null,[n.global_set(e.internalName,r),n.global_get(e.internalName,a)],a)):(this.currentType=m.Type.void,n.global_set(e.internalName,r)))},r.prototype.makeFieldAssignment=function(e,r,t,n){var i=this.module,a=this.currentFlow,s=e.type,o=s.toNativeType();assert(e.parent.kind==p.ElementKind.CLASS);var c=e.parent.type,l=c.toNativeType();if(s.isManaged&&c.isManaged){var u=a.getTempLocal(c);if(this.skippedAutoreleases.has(r)){if(n){var h=a.getAndFreeTempLocal(s);return a.canOverflow(r,s)||a.setLocalFlag(h.index,_.LocalFlags.WRAPPED),a.isNonnull(r,s)&&a.setLocalFlag(h.index,_.LocalFlags.NONNULL),a.freeTempLocal(u),this.currentType=s,i.block(null,[i.store(s.byteSize,i.local_tee(u.index,t),this.makeSkippedRelease(i.load(s.byteSize,s.is(1),i.local_get(u.index,l),o,e.memoryOffset),i.local_tee(h.index,r)),o,e.memoryOffset),i.local_get(h.index,o)],o)}return a.freeTempLocal(u),this.currentType=m.Type.void,i.store(s.byteSize,i.local_tee(u.index,t),this.makeSkippedRelease(i.load(s.byteSize,s.is(1),i.local_get(u.index,l),o,e.memoryOffset),r),o,e.memoryOffset)}if(n){h=a.getAndFreeTempLocal(s);return a.canOverflow(r,s)||a.setLocalFlag(h.index,_.LocalFlags.WRAPPED),a.isNonnull(r,s)&&a.setLocalFlag(h.index,_.LocalFlags.NONNULL),a.freeTempLocal(u),this.currentType=s,i.block(null,[i.store(s.byteSize,i.local_tee(u.index,t),this.makeRetainRelease(i.load(s.byteSize,s.is(1),i.local_get(u.index,l),o,e.memoryOffset),i.local_tee(h.index,r)),o,e.memoryOffset),i.local_get(h.index,o)],o)}return a.freeTempLocal(u),this.currentType=m.Type.void,i.store(s.byteSize,i.local_tee(u.index,t),this.makeRetainRelease(i.load(s.byteSize,s.is(1),i.local_get(u.index,l),o,e.memoryOffset),r),o,e.memoryOffset)}if(n){h=a.getAndFreeTempLocal(s);return a.canOverflow(r,s)||a.setLocalFlag(h.index,_.LocalFlags.WRAPPED),a.isNonnull(r,s)&&a.setLocalFlag(h.index,_.LocalFlags.NONNULL),this.currentType=s,i.block(null,[i.store(s.byteSize,t,i.local_tee(h.index,r),o,e.memoryOffset),i.local_get(h.index,o)],o)}return this.currentType=m.Type.void,i.store(s.byteSize,t,r,o,e.memoryOffset)},r.prototype.compileCallExpression=function(e,r,t){var n=this.module,i=this.currentFlow;if(e.expression.kind==y.NodeKind.SUPER){var a=this.currentFlow,s=a.actualFunction;if(!s.is(u.CommonFlags.CONSTRUCTOR))return this.error(c.DiagnosticCode.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors,e.range),n.unreachable();var o=assert(s.parent);assert(o.kind==p.ElementKind.CLASS);var _=assert(o.base),h=assert(a.lookupLocal(u.CommonSymbols.this_)),d=this.options.nativeSizeType,T=this.compileCallDirect(this.ensureConstructor(_,e),e.arguments,e,n.if(n.local_get(h.index,d),n.local_get(h.index,d),this.makeRetain(this.makeAllocation(o))),16);assert(this.skippedAutoreleases.has(T));var g=[n.local_set(h.index,T)];return this.makeFieldInitialization(o,g),a.isAny(16448)?(this.error(c.DiagnosticCode._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class,e.range),n.unreachable()):(a.set(192),this.currentType=m.Type.void,n.block(null,g))}var E,v,b=this.resolver.resolveExpression(e.expression,i);if(!b)return n.unreachable();switch(b.kind){case p.ElementKind.FUNCTION_PROTOTYPE:var I=b,x=e.typeArguments;if(I.hasDecorator(p.DecoratorFlags.BUILTIN))return this.compileCallExpressionBuiltin(I,e,r);var A=null;if(x){if(!I.is(u.CommonFlags.GENERIC))return this.error(c.DiagnosticCode.Type_0_is_not_generic,e.expression.range,I.internalName),n.unreachable();A=this.resolver.resolveFunctionInclTypeArguments(I,x,i.actualFunction.parent,f.makeMap(i.contextualTypeArguments),e)}else{if(I.is(u.CommonFlags.GENERIC)){for(var N=new Map,S=assert(I.typeParameterNodes),O=S.length,C=0;Cs&&!i)||(this.error(c.DiagnosticCode.Expected_0_arguments_but_got_1,n.range,s.toString(),r.toString()),!1)},r.prototype.checkUnsafe=function(e){this.options.noUnsafe&&!e.range.source.isLibrary&&this.error(c.DiagnosticCode.Expression_is_unsafe,e.range)},r.prototype.compileCallDirect=function(e,r,t,n,i){void 0===n&&(n=0),void 0===i&&(i=0);var a=r.length,s=e.signature;if(!this.checkCallSignature(s,a,0!=n,t))return this.currentType=s.returnType,this.module.unreachable();if(e.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(t),e.hasDecorator(p.DecoratorFlags.INLINE)){if(assert(!e.is(u.CommonFlags.TRAMPOLINE)),!this.currentInlineFunctions.includes(e)){this.currentInlineFunctions.push(e);var o=s.parameterTypes;assert(a<=o.length);for(var l=new Array(a),_=0;_=0;--f){var T=r[f],g=o[f],E=h.addScopedLocal(s.getParameterName(f),g,y);_.findUsedLocals(T,y),l.canOverflow(T,g)||h.setLocalFlag(E.index,_.LocalFlags.WRAPPED),h.isNonnull(T,g)&&h.setLocalFlag(E.index,_.LocalFlags.NONNULL),g.isManaged&&(this.skippedAutoreleases.has(T)||(T=this.makeRetain(T)),h.setLocalFlag(E.index,_.LocalFlags.RETAINED)),d.unshift(i.local_set(E.index,T))}if(t){var v=assert(e.parent);assert(v.kind==p.ElementKind.CLASS);var b=assert(e.signature.thisType),I=h.addScopedLocal(u.CommonSymbols.this_,b,y);d.unshift(i.local_set(I.index,t));var x=v.base;x&&h.addScopedAlias(u.CommonSymbols.super_,x.type,I.index)}else assert(!e.signature.thisType);this.currentFlow=h;for(f=a;fa){var s=t.toNativeType(),o=e.getAndFreeTempLocal(t);e.canOverflow(r,t)||e.setLocalFlag(o.index,_.LocalFlags.WRAPPED),e.isNonnull(r,t)&&e.setLocalFlag(o.index,_.LocalFlags.NONNULL);var c=this.module;return n[a-1]=c.local_set(o.index,r),n.push(c.local_get(o.index,s)),c.block(null,n,s)}return n.length>1?(n[a-1]=r,this.module.block(null,n,t.toNativeType())):r},r.prototype.finishAutoreleases=function(e,r){var t,n,i=this.module;if(e.is(32768)){for(var s=void 0;s=e.parent;)e=s;this.performAutoreleases(e,r,!1)}else try{for(var o=a(e.parentFunction.localsByIndex),c=o.next();!c.done;c=o.next()){var l=c.value,u=l.index;e.isAnyLocalFlag(u,_.LocalFlags.ANY_RETAINED)&&(e.unsetLocalFlag(u,_.LocalFlags.ANY_RETAINED),r.push(this.makeRelease(i.local_get(u,l.type.toNativeType()))))}}catch(e){t={error:e}}finally{try{c&&!c.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}},r.prototype.makeCallDirect=function(e,r,t,n,i){if(void 0===n&&(n=!1),void 0===i&&(i=!1),e.hasDecorator(p.DecoratorFlags.INLINE)){if(assert(!e.is(u.CommonFlags.TRAMPOLINE)),!this.currentInlineFunctions.includes(e)){var a;if(this.currentInlineFunctions.push(e),e.is(u.CommonFlags.INSTANCE)){var s=assert(r);assert(s.length),a=this.makeCallInline(e,s.slice(1),s[0],n)}else a=this.makeCallInline(e,r,0,n);return this.currentType.isManaged&&(i?this.skippedAutoreleases.add(a):a=this.makeAutorelease(a,this.currentFlow)),this.currentInlineFunctions.pop(),a}this.warning(c.DiagnosticCode.Function_0_cannot_be_inlined_into_itself,t.range,e.internalName)}var o=r?r.length:0,l=o,_=e.signature.requiredParameters,h=e.signature.parameterTypes.length,d=h;e.is(u.CommonFlags.INSTANCE)&&(++_,++d,--l),assert(o>=_);var f=this.module;if(!this.compileFunction(e))return f.unreachable();var T=e.signature.returnType,g=e.is(u.CommonFlags.MODULE_IMPORT);if(o=s),this.ensureFunctionType(e.parameterTypes,e.returnType,e.thisType);var l=this.module;if(iT)return this.error(c.DiagnosticCode.Expected_0_arguments_but_got_1,e.range,T.toString(),h.toString()),this.module.unreachable();for(var g=new Array(h),E=0;E=0),O.is(512)&&i.isLocalFlag(C,_.LocalFlags.NONNULL,!1)&&(O=O.nonNullableType),this.currentType=O,this.module.local_get(C,O.toNativeType());case p.ElementKind.GLOBAL:if(!this.compileGlobal(S))return this.module.unreachable();O=S.type;return assert(O!=m.Type.void),S.is(u.CommonFlags.INLINED)?this.compileInlineConstant(S,r,t):(this.currentType=O,this.module.global_get(S.internalName,O.toNativeType()));case p.ElementKind.ENUMVALUE:return S.is(u.CommonFlags.COMPILED)?(this.currentType=m.Type.i32,S.is(u.CommonFlags.INLINED)?(assert(1==S.constantValueKind),this.module.i32(i64_low(S.constantIntegerValue))):this.module.global_get(S.internalName,l.NativeType.I32)):(this.error(c.DiagnosticCode.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums,e.range),this.currentType=m.Type.i32,this.module.unreachable());case p.ElementKind.FUNCTION_PROTOTYPE:var k=this.resolver.resolveFunction(S,null,f.makeMap(i.contextualTypeArguments));if(!k||!this.compileFunction(k))return n.unreachable();var R=this.ensureFunctionTableEntry(k);return this.currentType=k.signature.type,this.module.i32(R)}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.module.unreachable()},r.prototype.compileInstanceOfExpression=function(e,r,t){var n=this.module,i=this.compileExpression(e.expression,this.options.usizeType),a=this.currentType,s=this.resolver.resolveType(e.isType,this.currentFlow.actualFunction);if(this.currentType=m.Type.bool,!s)return n.unreachable();if(!s.is(256))return n.block(null,[n.drop(i),n.i32(a==s?1:0)],l.NativeType.I32);if(!a.is(256))return n.block(null,[n.drop(i),n.i32(0)],l.NativeType.I32);var o=a.toNativeType();if(a.is(512)&&!s.is(512)){if(a.nonNullableType.isAssignableTo(s))return n.binary(o==l.NativeType.I64?l.BinaryOp.NeI64:l.BinaryOp.NeI32,i,a.toNativeZero(n));if(s.isAssignableTo(a)){var u=this.program;if(!a.isUnmanaged&&!s.isUnmanaged){var p=this.currentFlow.getAndFreeTempLocal(a),_=assert(u.instanceofInstance);return this.compileFunction(_),n.if(n.unary(o==l.NativeType.I64?l.UnaryOp.EqzI64:l.UnaryOp.EqzI32,n.local_tee(p.index,i)),n.i32(0),this.makeCallDirect(_,[n.local_get(p.index,o),n.i32(s.classReference.id)],e))}this.error(c.DiagnosticCode.Operation_not_supported,e.range)}}else{if(a.isAssignableTo(s))return n.block(null,[this.convertExpression(i,a,m.Type.void,!1,!1,e.expression),n.i32(1)],l.NativeType.I32);if(s.isAssignableTo(a)){u=this.program;if(!a.isUnmanaged&&!s.isUnmanaged){p=this.currentFlow.getAndFreeTempLocal(a),_=assert(u.instanceofInstance);return this.compileFunction(_),n.if(n.unary(o==l.NativeType.I64?l.UnaryOp.EqzI64:l.UnaryOp.EqzI32,n.local_tee(p.index,i)),n.i32(0),this.makeCallDirect(_,[n.local_get(p.index,o),n.i32(s.classReference.id)],e))}this.error(c.DiagnosticCode.Operation_not_supported,e.range)}}return n.block(null,[n.drop(i),n.i32(0)],l.NativeType.I32)},r.prototype.compileLiteralExpression=function(e,r,t,n){void 0===n&&(n=!1);var i=this.module;switch(e.literalKind){case y.LiteralKind.ARRAY:assert(!n);var a=r.classReference;return a&&a.prototype==this.program.arrayPrototype?this.compileArrayLiteral(assert(a.typeArguments)[0],e.elementExpressions,t,e):(this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable());case y.LiteralKind.FLOAT:var s=e.value;return n&&(s=-s),r==m.Type.f32?i.f32(s):(this.currentType=m.Type.f64,i.f64(s));case y.LiteralKind.INTEGER:var o=e.value;n&&(o=i64_sub(i64_new(0),o));var l=this.resolver.determineIntegerLiteralType(o,r);switch(this.currentType=l,l.kind){case 4:if(!this.options.isWasm64)return i.i32(i64_low(o));case 3:return i.i64(i64_low(o),i64_high(o));case 9:if(!this.options.isWasm64)return i.i32(i64_low(o));case 8:return i.i64(i64_low(o),i64_high(o));case 11:return i.f32(i64_to_f32(o));case 12:return i.f64(i64_to_f64(o));default:return i.i32(i64_low(o))}case y.LiteralKind.STRING:return assert(!n),this.compileStringLiteral(e);case y.LiteralKind.OBJECT:return assert(!n),this.compileObjectLiteral(e,r)}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),this.currentType=r,i.unreachable()},r.prototype.compileStringLiteral=function(e){return this.ensureStaticString(e.value)},r.prototype.compileArrayLiteral=function(e,r,t,n){for(var i=this.module,a=this.program,s=assert(a.arrayPrototype),o=assert(this.resolver.resolveClass(s,[e])),u=assert(a.arrayBufferInstance),_=o.type,h=this.currentFlow,d=h.getTempLocal(_),y=h.getTempLocal(u.type),m=r.length,f=new Array(m),T=!0,g=e.toNativeType(),E=0;E",r.toString()),t.unreachable();var i=n.constructorInstance;if(i){if(i.signature.requiredParameters)return this.error(c.DiagnosticCode.Constructor_of_class_0_must_not_require_any_arguments,e.range,n.toString()),t.unreachable();if(i.is(u.CommonFlags.PRIVATE))return this.error(c.DiagnosticCode.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration,e.range,n.toString()),t.unreachable();if(i.is(u.CommonFlags.PROTECTED))return this.error(c.DiagnosticCode.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration,e.range,n.toString()),t.unreachable();i.hasDecorator(p.DecoratorFlags.UNSAFE)&&this.checkUnsafe(e)}var a=e.names,s=a.length,o=e.values,l=n.members,_=!1,h=new Array(s+2),d=this.currentFlow.getAutoreleaseLocal(this.options.usizeType);assert(s==o.length);for(var y=0,m=s;yx)for(g=x;g=0);var _=this.compileExpression(assert(this.resolver.currentThisExpression),this.options.usizeType);return this.currentType=a.type,n.load(a.type.byteSize,a.type.is(5),_,a.type.toNativeType(),a.memoryOffset);case p.ElementKind.PROPERTY_PROTOTYPE:var h=a.getterPrototype;if(h){var d=this.resolver.resolveFunction(h,null);if(d)return this.compileCallDirect(d,[],e,0)}return n.unreachable();case p.ElementKind.PROPERTY:var y=assert(a.getterInstance);return this.compileCallDirect(y,[],e,this.compileExpression(assert(this.resolver.currentThisExpression),this.options.usizeType));case p.ElementKind.FUNCTION_PROTOTYPE:var T=a;if(T.is(u.CommonFlags.STATIC)){var g=this.compileFunctionUsingTypeArguments(T,[],f.makeMap(),e);return null==g?n.unreachable():(this.currentType=g.type,n.i32(this.ensureFunctionTableEntry(g)))}return this.error(c.DiagnosticCode.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set,e.range,T.name),n.unreachable()}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),n.unreachable()},r.prototype.compileTernaryExpression=function(e,r,t){var n=e.ifThen,i=e.ifElse,a=this.currentFlow,s=this.module.precomputeExpression(this.makeIsTrueish(this.compileExpression(e.condition,m.Type.bool),this.currentType));if(l.getExpressionId(s)==l.ExpressionId.Const&&l.getExpressionType(s)==l.NativeType.I32)return l.getConstValueI32(s)?this.compileExpression(n,r):this.compileExpression(i,r);var o=16&t,u=a.fork();this.currentFlow=u;var p=this.compileExpression(n,r,o),_=this.currentType,h=this.skippedAutoreleases.has(p),d=a.fork();this.currentFlow=d;var y=this.compileExpression(i,r,o),f=this.currentType,T=this.skippedAutoreleases.has(y),g=m.Type.commonDenominator(_,f,!1);if(!g)return this.error(c.DiagnosticCode.Type_0_is_not_assignable_to_type_1,i.range,f.toString(),_.toString()),this.currentType=r,this.module.unreachable();p=this.convertExpression(p,_,g,!1,!1,n),y=this.convertExpression(y,f,g,!1,!1,i),this.currentType=g,h!=T?h?(y=this.makeRetain(y),T=!0):(p=this.makeRetain(p),h=!0):!h&&g.isManaged&&(p=this.moveAutorelease(p,u,a),y=this.moveAutorelease(y,d,a)),p=this.performAutoreleasesWithValue(u,p,g),u.freeScopedLocals(),y=this.performAutoreleasesWithValue(d,y,g),d.freeScopedLocals(),this.currentFlow=a,a.inheritMutual(u,d);var E=this.module.if(s,p,y);return assert(h==T),h&&this.skippedAutoreleases.add(E),E},r.prototype.compileUnaryPostfixExpression=function(e,r,t){var n=this.module,i=this.currentFlow,a=this.compileExpression(e.operand,r.exceptVoid,0);if(l.getExpressionId(a)==l.ExpressionId.Unreachable)return a;var s,o=null;switch(r!=m.Type.void&&(o=i.getTempLocal(this.currentType),a=n.local_tee(o.index,a)),e.operator){case d.Token.PLUS_PLUS:switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:s=n.binary(l.BinaryOp.AddI32,a,n.i32(1));break;case 9:if(this.currentType.is(256)){if(_=this.currentType.classReference)if(h=_.lookupOverload(p.OperatorKind.POSTFIX_INC)){s=this.compileUnaryOverload(h,e.operand,a,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),n.unreachable()}case 4:var u=this.options;s=n.binary(u.isWasm64?l.BinaryOp.AddI64:l.BinaryOp.AddI32,a,this.currentType.toNativeOne(n));break;case 3:case 8:s=n.binary(l.BinaryOp.AddI64,a,n.i64(1));break;case 11:s=n.binary(l.BinaryOp.AddF32,a,n.f32(1));break;case 12:s=n.binary(l.BinaryOp.AddF64,a,n.f64(1));break;default:return assert(!1),n.unreachable()}break;case d.Token.MINUS_MINUS:switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:s=n.binary(l.BinaryOp.SubI32,a,n.i32(1));break;case 9:if(this.currentType.is(256)){var _,h;if(_=this.currentType.classReference)if(h=_.lookupOverload(p.OperatorKind.POSTFIX_DEC)){s=this.compileUnaryOverload(h,e.operand,a,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),n.unreachable()}case 4:u=this.options;s=n.binary(u.isWasm64?l.BinaryOp.SubI64:l.BinaryOp.SubI32,a,this.currentType.toNativeOne(n));break;case 3:case 8:s=n.binary(l.BinaryOp.SubI64,a,n.i64(1));break;case 11:s=n.binary(l.BinaryOp.SubF32,a,n.f32(1));break;case 12:s=n.binary(l.BinaryOp.SubF64,a,n.f64(1));break;default:return assert(!1),n.unreachable()}break;default:return assert(!1),n.unreachable()}var y=this.resolver,f=y.resolveExpression(e.operand,i);if(!o)return this.currentType=m.Type.void,f?this.makeAssignment(f,s,e.operand,y.currentThisExpression,y.currentElementExpression,!1):n.unreachable();if(!f)return n.unreachable();var T=this.makeAssignment(f,s,e.operand,y.currentThisExpression,y.currentElementExpression,!1);this.currentType=o.type,i.freeTempLocal(o);var g=o.type.toNativeType();return n.block(null,[T,n.local_get(o.index,g)],g)},r.prototype.compileUnaryPrefixExpression=function(e,r,t){var n,i=this.module,a=!1;switch(e.operator){case d.Token.PLUS:if(n=this.compileExpression(e.operand,r.exceptVoid,0),this.currentType.is(256)){if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.PLUS)){n=this.compileUnaryOverload(o,e.operand,n,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable()}break;case d.Token.MINUS:if(e.operand.kind==y.NodeKind.LITERAL&&(e.operand.literalKind==y.LiteralKind.INTEGER||e.operand.literalKind==y.LiteralKind.FLOAT)){n=this.compileLiteralExpression(e.operand,r,0,!0),this.options.sourceMap&&this.addDebugLocation(n,e.range);break}if(n=this.compileExpression(e.operand,r.exceptVoid,0),this.currentType.is(256)){if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.MINUS)){n=this.compileUnaryOverload(o,e.operand,n,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable()}switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:n=i.binary(l.BinaryOp.SubI32,i.i32(0),n);break;case 9:case 4:n=i.binary(this.options.isWasm64?l.BinaryOp.SubI64:l.BinaryOp.SubI32,this.currentType.toNativeZero(i),n);break;case 3:case 8:n=i.binary(l.BinaryOp.SubI64,i.i64(0),n);break;case 11:n=i.unary(l.UnaryOp.NegF32,n);break;case 12:n=i.unary(l.UnaryOp.NegF64,n);break;default:assert(!1),n=i.unreachable()}break;case d.Token.PLUS_PLUS:if(a=!0,n=this.compileExpression(e.operand,r.exceptVoid,0),this.currentType.is(256)){if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.PREFIX_INC)){n=this.compileUnaryOverload(o,e.operand,n,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable()}switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:n=i.binary(l.BinaryOp.AddI32,n,this.module.i32(1));break;case 9:case 4:n=i.binary(this.options.isWasm64?l.BinaryOp.AddI64:l.BinaryOp.AddI32,n,this.currentType.toNativeOne(i));break;case 3:case 8:n=i.binary(l.BinaryOp.AddI64,n,i.i64(1));break;case 11:n=i.binary(l.BinaryOp.AddF32,n,i.f32(1));break;case 12:n=i.binary(l.BinaryOp.AddF64,n,i.f64(1));break;default:assert(!1),n=i.unreachable()}break;case d.Token.MINUS_MINUS:if(a=!0,n=this.compileExpression(e.operand,r.exceptVoid,0),this.currentType.is(256)){if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.PREFIX_DEC)){n=this.compileUnaryOverload(o,e.operand,n,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable()}switch(this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:n=i.binary(l.BinaryOp.SubI32,n,i.i32(1));break;case 9:case 4:n=i.binary(this.options.isWasm64?l.BinaryOp.SubI64:l.BinaryOp.SubI32,n,this.currentType.toNativeOne(i));break;case 3:case 8:n=i.binary(l.BinaryOp.SubI64,n,i.i64(1));break;case 11:n=i.binary(l.BinaryOp.SubF32,n,i.f32(1));break;case 12:n=i.binary(l.BinaryOp.SubF64,n,i.f64(1));break;default:assert(!1),n=i.unreachable()}break;case d.Token.EXCLAMATION:if(n=this.compileExpression(e.operand,r.exceptVoid,0),this.currentType.is(256))if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.NOT)){n=this.compileUnaryOverload(o,e.operand,n,e);break}n=this.makeIsFalseish(n,this.currentType),this.currentType=m.Type.bool;break;case d.Token.TILDE:if(n=this.compileExpression(e.operand,r==m.Type.void?m.Type.i32:r.is(8)?m.Type.i64:r,0),this.currentType.is(256)){var s,o;if(s=this.currentType.classReference)if(o=s.lookupOverload(p.OperatorKind.BITWISE_NOT)){n=this.compileUnaryOverload(o,e.operand,n,e);break}return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable()}switch(n=this.convertExpression(n,this.currentType,this.currentType.intType,!1,!1,e.operand),this.currentType.kind){case 0:case 1:case 2:case 5:case 6:case 7:case 10:n=i.binary(l.BinaryOp.XorI32,n,i.i32(-1));break;case 9:case 4:n=i.binary(this.options.isWasm64?l.BinaryOp.XorI64:l.BinaryOp.XorI32,n,this.currentType.toNativeNegOne(i));break;case 3:case 8:n=i.binary(l.BinaryOp.XorI64,n,i.i64(-1,-1));break;default:assert(!1),n=i.unreachable()}break;case d.Token.TYPEOF:return this.error(c.DiagnosticCode.Operation_not_supported,e.range),i.unreachable();default:return assert(!1),i.unreachable()}if(!a)return n;var u=this.resolver,_=u.resolveExpression(e.operand,this.currentFlow);return _?this.makeAssignment(_,n,e.operand,u.currentThisExpression,u.currentElementExpression,r!=m.Type.void):i.unreachable()},r.prototype.ensureSmallIntegerWrap=function(e,r){var t=this.module,n=this.currentFlow;switch(r.kind){case 0:n.canOverflow(e,r)&&(e=this.options.hasFeature(1)?t.unary(l.UnaryOp.ExtendI8ToI32,e):t.binary(l.BinaryOp.ShrI32,t.binary(l.BinaryOp.ShlI32,e,t.i32(24)),t.i32(24)));break;case 1:n.canOverflow(e,r)&&(e=this.options.hasFeature(1)?t.unary(l.UnaryOp.ExtendI16ToI32,e):t.binary(l.BinaryOp.ShrI32,t.binary(l.BinaryOp.ShlI32,e,t.i32(16)),t.i32(16)));break;case 5:n.canOverflow(e,r)&&(e=t.binary(l.BinaryOp.AndI32,e,t.i32(255)));break;case 6:n.canOverflow(e,r)&&(e=t.binary(l.BinaryOp.AndI32,e,t.i32(65535)));break;case 10:n.canOverflow(e,r)&&(e=t.binary(l.BinaryOp.NeI32,e,t.i32(0)))}return e},r.prototype.addDebugLocation=function(e,r){var t=this.currentFlow.parentFunction,n=r.source;n.debugInfoIndex<0&&(n.debugInfoIndex=this.module.addDebugInfoFile(n.normalizedPath)),r.debugInfoRef=e,t.debugLocations.push(r)},r.prototype.makeIsFalseish=function(e,r){var t=this.module;switch(r.kind){case 0:case 1:case 5:case 6:case 10:e=this.ensureSmallIntegerWrap(e,r);case 2:case 7:return t.unary(l.UnaryOp.EqzI32,e);case 3:case 8:return t.unary(l.UnaryOp.EqzI64,e);case 9:this.skippedAutoreleases.has(e)&&(e=this.makeAutorelease(e));case 4:return t.unary(64==r.size?l.UnaryOp.EqzI64:l.UnaryOp.EqzI32,e);case 11:return t.binary(l.BinaryOp.EqF32,e,t.f32(0));case 12:return t.binary(l.BinaryOp.EqF64,e,t.f64(0));default:return assert(!1),t.i32(1)}},r.prototype.makeIsTrueish=function(e,r){var t=this.module;switch(r.kind){case 0:case 1:case 5:case 6:e=this.ensureSmallIntegerWrap(e,r);case 10:case 2:case 7:return e;case 3:case 8:return t.binary(l.BinaryOp.NeI64,e,t.i64(0));case 9:this.skippedAutoreleases.has(e)&&(e=this.makeAutorelease(e));case 4:return 64==r.size?t.binary(l.BinaryOp.NeI64,e,t.i64(0)):e;case 11:return t.binary(l.BinaryOp.NeF32,e,t.f32(0));case 12:return t.binary(l.BinaryOp.NeF64,e,t.f64(0));default:return assert(!1),t.i32(0)}},r.prototype.makeAllocation=function(e){var r=this.program;assert(e.program==r);var t=this.module,n=this.options;this.currentType=e.type;var i=r.allocInstance;return this.compileFunction(i),t.call(i.internalName,[n.isWasm64?t.i64(e.currentMemoryOffset):t.i32(e.currentMemoryOffset),t.i32(e.hasDecorator(p.DecoratorFlags.UNMANAGED)?0:e.id)],n.nativeSizeType)},r.prototype.makeFieldInitialization=function(e,r){var t,n;void 0===r&&(r=[]);var i=e.members;if(!i)return[];var s=this.module,o=this.currentFlow,c=o.is(32768),l=c?assert(o.lookupLocal(u.CommonSymbols.this_)).index:0,_=this.options.nativeSizeType;try{for(var h=a(i.values()),d=h.next();!d.done;d=h.next()){var y=d.value;if(y.kind==p.ElementKind.FIELD&&y.parent==e){var m=y;assert(!m.isAny(u.CommonFlags.CONST));var f=m.type,T=f.toNativeType(),g=m.prototype,E=g.initializerNode,v=g.parameterIndex,b=void 0;E?(b=this.compileExpression(E,f,17),f.isManaged&&!this.skippedAutoreleases.has(b)&&(b=this.makeRetain(b))):v>=0?(b=s.local_get(c?assert(o.lookupLocal(m.name)).index:1+v,T),f.isManaged&&(b=this.makeRetain(b))):b=f.toNativeZero(s),r.push(s.store(f.byteSize,s.local_get(l,_),b,T,m.memoryOffset))}}}catch(e){t={error:e}}finally{try{d&&!d.done&&(n=h.return)&&n.call(h)}finally{if(t)throw t.error}}return r},r.prototype.makeInstanceOfClass=function(e,r){var t=this.module,n=this.currentFlow,i=n.getTempLocal(m.Type.i32),a=t.load(4,!1,t.binary(l.BinaryOp.SubI32,e,t.i32(this.program.runtimeHeaderSize)),l.NativeType.I32),s="instanceof_"+r.name+"|"+n.pushBreakLabel(),o=[];return o.push(t.drop(t.br(s,t.binary(l.BinaryOp.EqI32,t.local_tee(i.index,a),t.i32(r.id)),t.i32(1)))),o.push(t.i32(0)),n.freeTempLocal(i),n.popBreakLabel(),t.block(s,o,l.NativeType.I32)},r}(c.DiagnosticEmitter);function b(e,r){if(g=r.range.source.simplePath,E=p.mangleInternalName(e.name,e.parent,e.is(u.CommonFlags.INSTANCE),!0),e.hasDecorator(p.DecoratorFlags.EXTERNAL)){var t=e.program,n=assert(y.findDecorator(y.DecoratorKind.EXTERNAL,r.decorators)),i=n.arguments;if(i&&i.length){var a=i[0];a.kind==y.NodeKind.LITERAL&&a.literalKind==y.LiteralKind.STRING?(E=a.value,i.length>=2&&((a=i[1]).kind==y.NodeKind.LITERAL&&a.literalKind==y.LiteralKind.STRING?(g=E,E=a.value,i.length>2&&t.error(c.DiagnosticCode.Expected_0_arguments_but_got_1,n.range,"2",i.length.toString())):t.error(c.DiagnosticCode.String_literal_expected,a.range))):t.error(c.DiagnosticCode.String_literal_expected,a.range)}else t.error(c.DiagnosticCode.Expected_at_least_0_arguments_but_got_1,n.range,"1","0")}}function I(e,r,t){var n=r.length;if(0==n)return e.nop();if(1==n){var i=r[0];if(l.getExpressionType(i)==t)return i;if(l.getExpressionId(i)==l.ExpressionId.Block){for(var a=l.getBlockChildCount(i),s=new Array(a),o=0;o=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0});var a,s=t(11),o=t(2),c=t(3),l=t(6),u=t(5),p=t(4),_=t(10),h=t(9),d=t(0),y=t(1);function m(e,r,t,n,i,s,d){void 0===d&&(d=!1);var m=e.module,g=!1;switch(r.internalName){case a.isInteger:var S=E(e,t,n,s);return e.currentType=l.Type.bool,S?S.is(4)&&!S.is(256)?m.i32(1):m.i32(0):m.unreachable();case a.isFloat:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?S.is(8)?m.i32(1):m.i32(0):m.unreachable();case a.isBoolean:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?S==l.Type.bool?m.i32(1):m.i32(0):m.unreachable();case a.isSigned:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?S.is(1)?m.i32(1):m.i32(0):m.unreachable();case a.isReference:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?S.is(256)?m.i32(1):m.i32(0):m.unreachable();case a.isString:S=E(e,t,n,s);if(e.currentType=l.Type.bool,!S)return m.unreachable();if(B=S.classReference){var O=e.program.stringInstance;if(O&&B.isAssignableTo(O))return m.i32(1)}return m.i32(0);case a.isArray:S=E(e,t,n,s);if(e.currentType=l.Type.bool,!S)return m.unreachable();if(!(we=S.classReference))return m.i32(0);var C=we.prototype;return m.i32(C.extends(e.program.arrayPrototype)?1:0);case a.isArrayLike:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?(we=S.classReference)?m.i32(we.isArrayLike?1:0):m.i32(0):m.unreachable();case a.isFunction:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?m.i32(S.signatureReference?1:0):m.unreachable();case a.isNullable:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?m.i32(S.is(512)?1:0):m.unreachable();case a.isDefined:if(e.currentType=l.Type.bool,x(t,s,r)|A(n,1,s,e))return m.unreachable();var k=e.resolver.resolveExpression(n[0],e.currentFlow,l.Type.auto,h.ReportMode.SWALLOW);return m.i32(k?1:0);case a.isConstant:if(e.currentType=l.Type.bool,x(t,s,r)|A(n,1,s,e))return m.unreachable();var R=e.compileExpression(n[0],l.Type.auto);return e.currentType=l.Type.bool,m.i32(u.getExpressionId(R)==u.ExpressionId.Const?1:0);case a.isManaged:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?m.i32(S.isManaged?1:0):m.unreachable();case a.isVoid:S=E(e,t,n,s);return e.currentType=l.Type.bool,S?m.i32(14==S.kind?1:0):m.unreachable();case a.lengthof:S=E(e,t,n,s);if(e.currentType=l.Type.i32,!S)return m.unreachable();if(!(Ue=S.signatureReference))return e.error(o.DiagnosticCode.Type_0_has_no_call_signatures,s.range,"1",(t?t.length:1).toString(10)),m.unreachable();var L=Ue.parameterNames;return m.i32(L?L.length:0);case a.sizeof:if(e.currentType=e.options.usizeType,b(t,s,e)|A(n,0,s,e))return m.unreachable();var F=t[0].byteSize,R=void 0;return e.options.isWasm64?i.is(4)&&i.size<=32?(e.currentType=l.Type.u32,R=m.i32(F)):R=m.i64(F,0):i.is(4)&&64==i.size?(e.currentType=l.Type.u64,R=m.i64(F,0)):R=m.i32(F),R;case a.alignof:if(e.currentType=e.options.usizeType,b(t,s,e)|A(n,0,s,e))return m.unreachable();F=t[0].byteSize;assert(y.isPowerOf2(F));var D=ctz(F);R=void 0;return e.options.isWasm64?i.is(4)&&i.size<=32?(e.currentType=l.Type.u32,R=m.i32(D)):R=m.i64(D,0):i.is(4)&&64==i.size?(e.currentType=l.Type.u64,R=m.i64(D,0)):R=m.i32(D),R;case a.offsetof:if(e.currentType=e.options.usizeType,b(t,s,e)|N(n,0,1,s,e))return m.unreachable();var B;if(!(B=t[0].classReference))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();var P=void 0;if(n.length){if(n[0].kind!=c.NodeKind.LITERAL||n[0].literalKind!=c.LiteralKind.STRING)return e.error(o.DiagnosticCode.String_literal_expected,n[0].range),m.unreachable();var w=n[0].value,U=B.members?B.members.get(w):null;if(!U||U.kind!=p.ElementKind.FIELD)return e.error(o.DiagnosticCode.Type_0_has_no_property_1,n[0].range,B.internalName,w),m.unreachable();P=U.memoryOffset}else P=B.currentMemoryOffset;return e.options.isWasm64?i.is(4)&&i.size<=32?(e.currentType=l.Type.u32,m.i32(P)):m.i64(P):i.is(4)&&64==i.size?(e.currentType=l.Type.u64,m.i64(P)):m.i32(P);case a.nameof:var M=E(e,t,n,s);if(!M)return m.unreachable();var V=void 0;if(M.is(256))(we=M.classReference)?V=we.name:(assert(M.signatureReference),V="Function");else switch(M.kind){case 10:V="bool";break;case 0:V="i8";break;case 5:V="u8";break;case 1:V="i16";break;case 6:V="u16";break;case 2:V="i32";break;case 7:V="u32";break;case 11:V="f32";break;case 3:V="i64";break;case 8:V="u64";break;case 12:V="f64";break;case 4:V="isize";break;case 9:V="usize";break;case 13:V="v128";break;default:assert(!1);case 14:V="void"}return e.ensureStaticString(V);case a.clz:case a.ctz:case a.popcnt:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();var G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.i32,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();var K=-1;switch(r.internalName){case a.clz:switch(S.kind){case 10:case 0:case 5:case 1:case 6:case 2:case 7:K=u.UnaryOp.ClzI32;break;case 9:case 4:K=e.options.isWasm64?u.UnaryOp.ClzI64:u.UnaryOp.ClzI32;break;case 3:case 8:K=u.UnaryOp.ClzI64}break;case a.ctz:switch(S.kind){case 10:case 0:case 5:case 1:case 6:case 2:case 7:K=u.UnaryOp.CtzI32;break;case 9:case 4:K=e.options.isWasm64?u.UnaryOp.CtzI64:u.UnaryOp.CtzI32;break;case 3:case 8:K=u.UnaryOp.CtzI64}break;case a.popcnt:switch(e.currentType.kind){case 10:case 0:case 5:case 1:case 6:case 2:case 7:K=u.UnaryOp.PopcntI32;break;case 9:case 4:K=e.options.isWasm64?u.UnaryOp.PopcntI64:u.UnaryOp.PopcntI32;break;case 3:case 8:K=u.UnaryOp.PopcntI64}}return-1==K?(e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable()):m.unary(K,G);case a.rotl:if(I(t,s,e,!0)|A(n,2,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.i32,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();var z=e.compileExpression(n[1],S,1);R=void 0;switch(S.kind){case 0:case 1:case 5:case 6:case 10:R=e.ensureSmallIntegerWrap(m.binary(u.BinaryOp.RotlI32,G,z),S);case 2:case 7:R=m.binary(u.BinaryOp.RotlI32,G,z);break;case 9:case 4:R=m.binary(e.options.isWasm64?u.BinaryOp.RotlI64:u.BinaryOp.RotlI32,G,z);break;case 3:case 8:R=m.binary(u.BinaryOp.RotlI64,G,z);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.rotr:if(I(t,s,e,!0)|A(n,2,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.i32,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();z=e.compileExpression(n[1],S,1),R=void 0;switch(S.kind){case 0:case 1:case 5:case 6:case 10:R=e.ensureSmallIntegerWrap(m.binary(u.BinaryOp.RotrI32,G,z),S);break;case 2:case 7:R=m.binary(u.BinaryOp.RotrI32,G,z);break;case 9:case 4:R=m.binary(e.options.isWasm64?u.BinaryOp.RotrI64:u.BinaryOp.RotrI32,G,z);break;case 3:case 8:R=m.binary(u.BinaryOp.RotrI64,G,z);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.abs:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.f64,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();R=void 0;switch(S.kind){case 0:case 1:case 2:var Y=(q=e.currentFlow).getTempLocal(l.Type.i32),H=q.getAndFreeTempLocal(l.Type.i32).index,W=Y.index;R=m.binary(u.BinaryOp.XorI32,m.binary(u.BinaryOp.AddI32,m.local_tee(H,m.binary(u.BinaryOp.ShrI32,m.local_tee(W,G),m.i32(31))),m.local_get(W,u.NativeType.I32)),m.local_get(H,u.NativeType.I32)),q.freeTempLocal(Y);break;case 4:var X=e.options,q=e.currentFlow,Q=X.isWasm64;Y=q.getTempLocal(X.usizeType),H=q.getAndFreeTempLocal(X.usizeType).index,W=Y.index;R=m.binary(Q?u.BinaryOp.XorI64:u.BinaryOp.XorI32,m.binary(Q?u.BinaryOp.AddI64:u.BinaryOp.AddI32,m.local_tee(H,m.binary(Q?u.BinaryOp.ShrI64:u.BinaryOp.ShrI32,m.local_tee(W,G),Q?m.i64(63):m.i32(31))),m.local_get(W,X.nativeSizeType)),m.local_get(H,X.nativeSizeType)),q.freeTempLocal(Y);break;case 3:Y=(q=e.currentFlow).getTempLocal(l.Type.i64),H=q.getAndFreeTempLocal(l.Type.i64).index,W=Y.index;R=m.binary(u.BinaryOp.XorI64,m.binary(u.BinaryOp.AddI64,m.local_tee(H,m.binary(u.BinaryOp.ShrI64,m.local_tee(W,G),m.i64(63))),m.local_get(W,u.NativeType.I64)),m.local_get(H,u.NativeType.I64)),q.freeTempLocal(Y);break;case 9:case 5:case 6:case 7:case 8:case 10:R=G;break;case 11:R=m.unary(u.UnaryOp.AbsF32,G);break;case 12:R=m.unary(u.UnaryOp.AbsF64,G);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.max:if(I(t,s,e,!0)|A(n,2,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.f64,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();z=e.compileExpression(n[1],S,5),K=void 0;switch(S.kind){case 0:case 1:case 2:K=u.BinaryOp.GtI32;break;case 5:case 6:case 7:case 10:K=u.BinaryOp.GtU32;break;case 3:K=u.BinaryOp.GtI64;break;case 8:K=u.BinaryOp.GtU64;break;case 4:K=e.options.isWasm64?u.BinaryOp.GtI64:u.BinaryOp.GtI32;break;case 9:K=e.options.isWasm64?u.BinaryOp.GtU64:u.BinaryOp.GtU32;break;case 11:return m.binary(u.BinaryOp.MaxF32,G,z);case 12:return m.binary(u.BinaryOp.MaxF64,G,z);default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable()}q=e.currentFlow;var j=S.toNativeType(),Z=q.getTempLocal(S);q.setLocalFlag(Z.index,_.LocalFlags.WRAPPED);Y=q.getAndFreeTempLocal(S);return q.setLocalFlag(Y.index,_.LocalFlags.WRAPPED),q.freeTempLocal(Z),m.select(m.local_tee(Z.index,G),m.local_tee(Y.index,z),m.binary(K,m.local_get(Z.index,j),m.local_get(Y.index,j)));case a.min:if(I(t,s,e,!0)|A(n,2,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],5):e.compileExpression(n[0],l.Type.f64,4);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();z=e.compileExpression(n[1],S,5),K=void 0;switch(S.kind){case 0:case 1:case 2:K=u.BinaryOp.LtI32;break;case 5:case 6:case 7:case 10:K=u.BinaryOp.LtU32;break;case 3:K=u.BinaryOp.LtI64;break;case 8:K=u.BinaryOp.LtU64;break;case 4:K=e.options.isWasm64?u.BinaryOp.LtI64:u.BinaryOp.LtI32;break;case 9:K=e.options.isWasm64?u.BinaryOp.LtU64:u.BinaryOp.LtU32;break;case 11:return m.binary(u.BinaryOp.MinF32,G,z);case 12:return m.binary(u.BinaryOp.MinF64,G,z);default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable()}q=e.currentFlow,j=S.toNativeType(),Z=q.getTempLocal(S);q.setLocalFlag(Z.index,_.LocalFlags.WRAPPED);Y=q.getAndFreeTempLocal(S);return q.setLocalFlag(Y.index,_.LocalFlags.WRAPPED),q.freeTempLocal(Z),m.select(m.local_tee(Z.index,G),m.local_tee(Y.index,z),m.binary(K,m.local_get(Z.index,j),m.local_get(Y.index,j)));case a.ceil:case a.floor:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],1):e.compileExpression(n[0],l.Type.f64,0);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();K=void 0;switch(S.kind){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:return G;case 11:K=r.internalName==a.ceil?u.UnaryOp.CeilF32:u.UnaryOp.FloorF32;break;case 12:K=r.internalName==a.ceil?u.UnaryOp.CeilF64:u.UnaryOp.FloorF64;break;default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable()}return m.unary(K,G);case a.copysign:if(I(t,s,e,!0)|A(n,2,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],1):e.compileExpression(n[0],l.Type.f64,0);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();z=e.compileExpression(n[1],S,1),K=void 0;switch(S.kind){case 11:K=u.BinaryOp.CopysignF32;break;case 12:K=u.BinaryOp.CopysignF64;break;default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable()}return m.binary(K,G,z);case a.nearest:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],1):e.compileExpression(n[0],l.Type.f64,0);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();R=void 0;switch(S.kind){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:R=G;break;case 11:R=m.unary(u.UnaryOp.NearestF32,G);break;case 12:R=m.unary(u.UnaryOp.NearestF64,G);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.reinterpret:if(b(t,s,e,!0)|A(n,1,s,e))return m.unreachable();if((S=t[0]).is(256))return e.currentType=S,e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();R=void 0;switch(S.kind){case 2:case 7:G=e.compileExpression(n[0],l.Type.f32,1);R=m.unary(u.UnaryOp.ReinterpretF32,G);break;case 3:case 8:G=e.compileExpression(n[0],l.Type.f64,1);R=m.unary(u.UnaryOp.ReinterpretF64,G);break;case 4:case 9:G=e.compileExpression(n[0],e.options.isWasm64?l.Type.f64:l.Type.f32,1);R=m.unary(e.options.isWasm64?u.UnaryOp.ReinterpretF64:u.UnaryOp.ReinterpretF32,G);break;case 11:G=e.compileExpression(n[0],l.Type.i32,1);R=m.unary(u.UnaryOp.ReinterpretI32,G);break;case 12:G=e.compileExpression(n[0],l.Type.i64,1);R=m.unary(u.UnaryOp.ReinterpretI64,G);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return e.currentType=S,R;case a.sqrt:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],1):e.compileExpression(n[0],l.Type.f64,0);if((S=e.currentType).is(256))return e.currentType=S,e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();R=void 0;switch(S.kind){case 11:R=m.unary(u.UnaryOp.SqrtF32,G);break;case 12:R=m.unary(u.UnaryOp.SqrtF64,G);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.trunc:if(I(t,s,e,!0)|A(n,1,s,e))return m.unreachable();G=t?e.compileExpression(n[0],t[0],1):e.compileExpression(n[0],l.Type.f64,0);if((S=e.currentType).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.range),m.unreachable();R=void 0;switch(S.kind){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:R=G;break;case 11:R=m.unary(u.UnaryOp.TruncF32,G);break;case 12:R=m.unary(u.UnaryOp.TruncF64,G);break;default:e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),R=m.unreachable()}return R;case a.load:if(b(t,s,e,!0)|N(n,1,3,s,e))return m.unreachable();S=t[0];var J=i!=l.Type.auto&&S.is(4)&&i.is(4)&&i.size>S.size?i:S;G=e.compileExpression(n[0],e.options.usizeType,1);if((te=(he=n.length)>=2?v(n[1],e):0)<0)return e.currentType=J,m.unreachable();var $=void 0,ee=S.byteSize;if(3==he){if(($=v(n[2],e))<0)return e.currentType=J,m.unreachable();if($>ee)return e.error(o.DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,n[2].range,"Alignment","0",ee.toString()),e.currentType=J,m.unreachable();if(!y.isPowerOf2($))return e.error(o.DiagnosticCode._0_must_be_a_power_of_two,n[2].range,"Alignment"),e.currentType=J,m.unreachable()}else $=ee;return e.currentType=J,m.load(S.byteSize,S.is(5),G,J.toNativeType(),te,$);case a.store:if(e.currentType=l.Type.void,b(t,s,e)|N(n,2,4,s,e))return m.unreachable();S=t[0],G=e.compileExpression(n[0],e.options.usizeType,1),z=d?e.compileExpression(n[1],i,1):e.compileExpression(n[1],S,S.is(4)?0:1);var re=e.currentType;if(S.is(4)&&(!re.is(4)||re.size=3?v(n[2],e):0)<0)return e.currentType=l.Type.void,m.unreachable();$=void 0,ee=S.byteSize;if(4==n.length){if(($=v(n[3],e))<0)return e.currentType=l.Type.void,m.unreachable();if($>ee)return e.error(o.DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,n[3].range,"Alignment","0",ee.toString()),e.currentType=l.Type.void,m.unreachable();if(!y.isPowerOf2($))return e.error(o.DiagnosticCode._0_must_be_a_power_of_two,n[3].range,"Alignment"),e.currentType=l.Type.void,m.unreachable()}else $=ee;return e.currentType=l.Type.void,m.store(S.byteSize,G,z,re.toNativeType(),te,$);case a.atomic_load:if(!e.options.hasFeature(16))break;if(b(t,s,e,!0)|N(n,1,2,s,e))return m.unreachable();J=(S=t[0]).is(4)&&i.is(4)&&i.size>S.size?i:S;if(!S.is(4))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=J,m.unreachable();G=e.compileExpression(n[0],e.options.usizeType,1);return(te=2==n.length?v(n[1],e):0)<0?(e.currentType=J,m.unreachable()):(e.currentType=J,m.atomic_load(S.byteSize,G,J.toNativeType(),te));case a.atomic_store:if(!e.options.hasFeature(16))break;if(e.currentType=l.Type.void,b(t,s,e)|N(n,2,3,s,e))return m.unreachable();if(!(S=t[0]).is(4)||S.size<8)return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();G=e.compileExpression(n[0],e.options.usizeType,1),z=d?e.compileExpression(n[1],i,1):e.compileExpression(n[1],S,S.is(4)?0:1),re=e.currentType;return S.is(4)&&(!re.is(4)||re.size=0&&beOe?(e.error(o.DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,n[1].range,"Lane index","0",Oe.toString()),m.unreachable()):m.simd_extract(K,G,Le);case a.v128_replace_lane:if(!e.options.hasFeature(8))break;if(b(t,s,e)|A(n,3,s,e))return e.currentType=l.Type.v128,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();K=void 0;switch(S.kind){case 0:case 5:K=u.SIMDReplaceOp.ReplaceLaneVecI8x16;break;case 1:case 6:K=u.SIMDReplaceOp.ReplaceLaneVecI16x8;break;case 2:case 7:K=u.SIMDReplaceOp.ReplaceLaneVecI32x4;break;case 3:case 8:K=u.SIMDReplaceOp.ReplaceLaneVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.SIMDReplaceOp.ReplaceLaneVecI64x2:u.SIMDReplaceOp.ReplaceLaneVecI32x4;break;case 11:K=u.SIMDReplaceOp.ReplaceLaneVecF32x4;break;case 12:K=u.SIMDReplaceOp.ReplaceLaneVecF64x2;break;default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable()}G=e.compileExpression(n[0],l.Type.v128,1),z=e.precomputeExpression(n[1],l.Type.u8,1);if(u.getExpressionId(z)!=u.ExpressionId.Const)return e.error(o.DiagnosticCode.Expression_must_be_a_compile_time_constant,n[1].range),e.currentType=l.Type.v128,m.unreachable();assert(u.getExpressionType(z)==u.NativeType.I32);Oe=16/S.byteSize-1;if((Le=u.getConstValueI32(z))<0||Le>Oe)return e.error(o.DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,n[1].range,"Lane index","0",Oe.toString()),m.unreachable();ne=e.compileExpression(n[2],S,1);return e.currentType=l.Type.v128,m.simd_replace(K,G,Le,ne);case a.v128_shuffle:if(!e.options.hasFeature(8))break;if(b(t,s,e))return e.currentType=l.Type.v128,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();var Ce=S.byteSize,ke=16/Ce;if(assert(isInteger(ke)&&y.isPowerOf2(ke)),A(n,2+ke,s,e))return e.currentType=l.Type.v128,m.unreachable();switch(S.kind){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 11:case 12:break;default:return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable()}G=e.compileExpression(n[0],l.Type.v128,1),z=e.compileExpression(n[1],l.Type.v128,1);var Re=new Uint8Array(16);for(Oe=(ke<<1)-1,Te=0;TeOe)return e.error(o.DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,Fe.range,"Lane index","0",Oe.toString()),e.currentType=l.Type.v128,m.unreachable();switch(Ce){case 1:y.writeI8(Le,Re,Te);break;case 2:var Be=Te<<1,Pe=Le<<1;y.writeI8(Pe,Re,Be),y.writeI8(Pe+1,Re,Be+1);break;case 4:Be=Te<<2,Pe=Le<<2;y.writeI8(Pe,Re,Be),y.writeI8(Pe+1,Re,Be+1),y.writeI8(Pe+2,Re,Be+2),y.writeI8(Pe+3,Re,Be+3);break;case 8:Be=Te<<3,Pe=Le<<3;y.writeI8(Pe,Re,Be),y.writeI8(Pe+1,Re,Be+1),y.writeI8(Pe+2,Re,Be+2),y.writeI8(Pe+3,Re,Be+3),y.writeI8(Pe+4,Re,Be+4),y.writeI8(Pe+5,Re,Be+5),y.writeI8(Pe+6,Re,Be+6),y.writeI8(Pe+7,Re,Be+7);break;default:assert(!1)}}return e.currentType=l.Type.v128,m.simd_shuffle(G,z,Re);case a.v128_add:case a.v128_sub:case a.v128_mul:case a.v128_div:case a.v128_add_saturate:case a.v128_sub_saturate:case a.v128_min:case a.v128_max:case a.v128_eq:case a.v128_ne:case a.v128_lt:case a.v128_le:case a.v128_gt:case a.v128_ge:if(!e.options.hasFeature(8))break;if(b(t,s,e)|A(n,2,s,e))return e.currentType=l.Type.v128,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();K=-1;switch(r.internalName){case a.v128_add:switch(S.kind){case 0:case 5:K=u.BinaryOp.AddVecI8x16;break;case 1:case 6:K=u.BinaryOp.AddVecI16x8;break;case 2:case 7:K=u.BinaryOp.AddVecI32x4;break;case 3:case 8:K=u.BinaryOp.AddVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.BinaryOp.AddVecI64x2:u.BinaryOp.AddVecI32x4;break;case 11:K=u.BinaryOp.AddVecF32x4;break;case 12:K=u.BinaryOp.AddVecF64x2}break;case a.v128_sub:switch(S.kind){case 0:case 5:K=u.BinaryOp.SubVecI8x16;break;case 1:case 6:K=u.BinaryOp.SubVecI16x8;break;case 2:case 7:K=u.BinaryOp.SubVecI32x4;break;case 3:case 8:K=u.BinaryOp.SubVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.BinaryOp.SubVecI64x2:u.BinaryOp.SubVecI32x4;break;case 11:K=u.BinaryOp.SubVecF32x4;break;case 12:K=u.BinaryOp.SubVecF64x2}break;case a.v128_mul:switch(S.kind){case 0:case 5:K=u.BinaryOp.MulVecI8x16;break;case 1:case 6:K=u.BinaryOp.MulVecI16x8;break;case 2:case 7:K=u.BinaryOp.MulVecI32x4;break;case 11:K=u.BinaryOp.MulVecF32x4;break;case 12:K=u.BinaryOp.MulVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=u.BinaryOp.MulVecI32x4)}break;case a.v128_div:switch(S.kind){case 11:K=u.BinaryOp.DivVecF32x4;break;case 12:K=u.BinaryOp.DivVecF64x2}break;case a.v128_add_saturate:switch(S.kind){case 0:K=u.BinaryOp.AddSatSVecI8x16;break;case 5:K=u.BinaryOp.AddSatUVecI8x16;break;case 1:K=u.BinaryOp.AddSatSVecI16x8;break;case 6:K=u.BinaryOp.AddSatUVecI16x8}break;case a.v128_sub_saturate:switch(S.kind){case 0:K=u.BinaryOp.SubSatSVecI8x16;break;case 5:K=u.BinaryOp.SubSatUVecI8x16;break;case 1:K=u.BinaryOp.SubSatSVecI16x8;break;case 6:K=u.BinaryOp.SubSatUVecI16x8}break;case a.v128_min:switch(S.kind){case 11:K=u.BinaryOp.MinVecF32x4;break;case 12:K=u.BinaryOp.MinVecF64x2}break;case a.v128_max:switch(S.kind){case 11:K=u.BinaryOp.MaxVecF32x4;break;case 12:K=u.BinaryOp.MaxVecF64x2}break;case a.v128_eq:switch(S.kind){case 0:case 5:K=u.BinaryOp.EqVecI8x16;break;case 1:case 6:K=u.BinaryOp.EqVecI16x8;break;case 2:case 7:K=u.BinaryOp.EqVecI32x4;break;case 11:K=u.BinaryOp.EqVecF32x4;break;case 12:K=u.BinaryOp.EqVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=u.BinaryOp.EqVecI32x4)}break;case a.v128_ne:switch(S.kind){case 0:case 5:K=u.BinaryOp.NeVecI8x16;break;case 1:case 6:K=u.BinaryOp.NeVecI16x8;break;case 2:case 7:K=u.BinaryOp.NeVecI32x4;break;case 11:K=u.BinaryOp.NeVecF32x4;break;case 12:K=u.BinaryOp.NeVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=u.BinaryOp.NeVecI32x4)}break;case a.v128_lt:switch(S.kind){case 0:K=u.BinaryOp.LtSVecI8x16;break;case 5:K=u.BinaryOp.LtUVecI8x16;break;case 1:K=u.BinaryOp.LtSVecI16x8;break;case 6:K=u.BinaryOp.LtUVecI16x8;break;case 2:K=u.BinaryOp.LtSVecI32x4;break;case 7:K=u.BinaryOp.LtUVecI32x4;break;case 11:K=u.BinaryOp.LtVecF32x4;break;case 12:K=u.BinaryOp.LtVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=4==S.kind?u.BinaryOp.LtSVecI32x4:u.BinaryOp.LtUVecI32x4)}break;case a.v128_le:switch(S.kind){case 0:K=u.BinaryOp.LeSVecI8x16;break;case 5:K=u.BinaryOp.LeUVecI8x16;break;case 1:K=u.BinaryOp.LeSVecI16x8;break;case 6:K=u.BinaryOp.LeUVecI16x8;break;case 2:K=u.BinaryOp.LeSVecI32x4;break;case 7:K=u.BinaryOp.LeUVecI32x4;break;case 11:K=u.BinaryOp.LeVecF32x4;break;case 12:K=u.BinaryOp.LeVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=4==S.kind?u.BinaryOp.LeSVecI32x4:u.BinaryOp.LeUVecI32x4)}break;case a.v128_gt:switch(S.kind){case 0:K=u.BinaryOp.GtSVecI8x16;break;case 5:K=u.BinaryOp.GtUVecI8x16;break;case 1:K=u.BinaryOp.GtSVecI16x8;break;case 6:K=u.BinaryOp.GtUVecI16x8;break;case 2:K=u.BinaryOp.GtSVecI32x4;break;case 7:K=u.BinaryOp.GtUVecI32x4;break;case 11:K=u.BinaryOp.GtVecF32x4;break;case 12:K=u.BinaryOp.GtVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=4==S.kind?u.BinaryOp.GtSVecI32x4:u.BinaryOp.GtUVecI32x4)}break;case a.v128_ge:switch(S.kind){case 0:K=u.BinaryOp.GeSVecI8x16;break;case 5:K=u.BinaryOp.GeUVecI8x16;break;case 1:K=u.BinaryOp.GeSVecI16x8;break;case 6:K=u.BinaryOp.GeUVecI16x8;break;case 2:K=u.BinaryOp.GeSVecI32x4;break;case 7:K=u.BinaryOp.GeUVecI32x4;break;case 11:K=u.BinaryOp.GeVecF32x4;break;case 12:K=u.BinaryOp.GeVecF64x2;break;case 4:case 9:e.options.isWasm64||(K=4==S.kind?u.BinaryOp.GeSVecI32x4:u.BinaryOp.GeUVecI32x4)}}if(-1==K)return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1),z=e.compileExpression(n[1],l.Type.v128,1);return e.currentType=l.Type.v128,m.binary(K,G,z);case a.v128_neg:case a.v128_abs:case a.v128_sqrt:case a.v128_convert:case a.v128_trunc:if(!e.options.hasFeature(8))break;if(b(t,s,e)|A(n,1,s,e))return e.currentType=l.Type.v128,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.range),e.currentType=l.Type.v128,m.unreachable();K=-1;switch(r.internalName){case a.v128_neg:switch(S.kind){case 0:case 5:K=u.UnaryOp.NegVecI8x16;break;case 1:case 6:K=u.UnaryOp.NegVecI16x8;break;case 2:case 7:K=u.UnaryOp.NegVecI32x4;break;case 3:case 8:K=u.UnaryOp.NegVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.UnaryOp.NegVecI64x2:u.UnaryOp.NegVecI32x4;break;case 11:K=u.UnaryOp.NegVecF32x4;break;case 12:K=u.UnaryOp.NegVecF64x2}break;case a.v128_abs:switch(S.kind){case 11:K=u.UnaryOp.AbsVecF32x4;break;case 12:K=u.UnaryOp.AbsVecF64x2}break;case a.v128_sqrt:switch(S.kind){case 11:K=u.UnaryOp.SqrtVecF32x4;break;case 12:K=u.UnaryOp.SqrtVecF64x2}break;case a.v128_convert:switch(S.kind){case 2:K=u.UnaryOp.ConvertSVecI32x4ToVecF32x4;break;case 7:K=u.UnaryOp.ConvertUVecI32x4ToVecF32x4;break;case 3:K=u.UnaryOp.ConvertSVecI64x2ToVecF64x2;break;case 8:K=u.UnaryOp.ConvertUVecI64x2ToVecF64x2}break;case a.v128_trunc:switch(S.kind){case 2:K=u.UnaryOp.TruncSatSVecF32x4ToVecI32x4;break;case 7:K=u.UnaryOp.TruncSatUVecF32x4ToVecI32x4;break;case 3:K=u.UnaryOp.TruncSatSVecF64x2ToVecI64x2;break;case 8:K=u.UnaryOp.TruncSatUVecF64x2ToVecI64x2}}if(-1==K)return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1);return e.currentType=l.Type.v128,m.unary(K,G);case a.v128_shl:case a.v128_shr:if(!e.options.hasFeature(8))break;if(b(t,s,e)|A(n,2,s,e))return e.currentType=l.Type.v128,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.v128,m.unreachable();K=-1;switch(r.internalName){case a.v128_shl:switch(S.kind){case 0:case 5:K=u.SIMDShiftOp.ShlVecI8x16;break;case 1:case 6:K=u.SIMDShiftOp.ShlVecI16x8;break;case 2:case 7:K=u.SIMDShiftOp.ShlVecI32x4;break;case 3:case 8:K=u.SIMDShiftOp.ShlVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.SIMDShiftOp.ShlVecI64x2:u.SIMDShiftOp.ShlVecI32x4}break;case a.v128_shr:switch(S.kind){case 0:K=u.SIMDShiftOp.ShrSVecI8x16;break;case 5:K=u.SIMDShiftOp.ShrUVecI8x16;break;case 1:K=u.SIMDShiftOp.ShrSVecI16x8;break;case 6:K=u.SIMDShiftOp.ShrUVecI16x8;break;case 2:K=u.SIMDShiftOp.ShrSVecI32x4;break;case 7:K=u.SIMDShiftOp.ShrUVecI32x4;break;case 3:K=u.SIMDShiftOp.ShrSVecI64x2;break;case 8:K=u.SIMDShiftOp.ShrUVecI64x2;break;case 4:K=e.options.isWasm64?u.SIMDShiftOp.ShrSVecI64x2:u.SIMDShiftOp.ShrSVecI32x4;break;case 9:K=e.options.isWasm64?u.SIMDShiftOp.ShrUVecI64x2:u.SIMDShiftOp.ShrUVecI32x4}}if(-1==K)return e.error(o.DiagnosticCode.Operation_not_supported,s.range),e.currentType=l.Type.v128,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1),z=e.compileExpression(n[1],l.Type.i32,1);return e.currentType=l.Type.v128,m.simd_shift(K,G,z);case a.v128_and:case a.v128_or:case a.v128_xor:if(!e.options.hasFeature(8))break;if(x(t,s,r)|A(n,2,s,e))return e.currentType=l.Type.v128,m.unreachable();K=-1;switch(r.internalName){default:assert(!1);case a.v128_and:K=u.BinaryOp.AndVec128;break;case a.v128_or:K=u.BinaryOp.OrVec128;break;case a.v128_xor:K=u.BinaryOp.XorVec128}G=e.compileExpression(n[0],l.Type.v128,1),z=e.compileExpression(n[1],l.Type.v128,1);return m.binary(K,G,z);case a.v128_not:if(!e.options.hasFeature(8))break;if(x(t,s,r)|A(n,1,s,e))return e.currentType=l.Type.v128,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1);return m.unary(u.UnaryOp.NotVec128,G);case a.v128_bitselect:if(!e.options.hasFeature(8))break;if(x(t,s,r)|A(n,3,s,e))return e.currentType=l.Type.v128,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1),z=e.compileExpression(n[1],l.Type.v128,1),ne=e.compileExpression(n[2],l.Type.v128,1);return m.simd_bitselect(G,z,ne);case a.v128_any_true:case a.v128_all_true:if(!e.options.hasFeature(8))break;if(b(t,s,e)|A(n,1,s,e))return e.currentType=l.Type.bool,m.unreachable();if((S=t[0]).is(256))return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),m.unreachable();K=-1;switch(r.internalName){default:assert(!1);case a.v128_any_true:switch(S.kind){case 0:case 5:K=u.UnaryOp.AnyTrueVecI8x16;break;case 1:case 6:K=u.UnaryOp.AnyTrueVecI16x8;break;case 2:case 7:K=u.UnaryOp.AnyTrueVecI32x4;break;case 3:case 8:K=u.UnaryOp.AnyTrueVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.UnaryOp.AnyTrueVecI64x2:u.UnaryOp.AnyTrueVecI32x4}break;case a.v128_all_true:switch(S.kind){case 0:case 5:K=u.UnaryOp.AllTrueVecI8x16;break;case 1:case 6:K=u.UnaryOp.AllTrueVecI16x8;break;case 2:case 7:K=u.UnaryOp.AllTrueVecI32x4;break;case 3:case 8:K=u.UnaryOp.AllTrueVecI64x2;break;case 4:case 9:K=e.options.isWasm64?u.UnaryOp.AllTrueVecI64x2:u.UnaryOp.AllTrueVecI32x4}}if(-1==K)return e.error(o.DiagnosticCode.Operation_not_supported,s.typeArgumentsRange),e.currentType=l.Type.bool,m.unreachable();G=e.compileExpression(n[0],l.Type.v128,1);return e.currentType=l.Type.bool,m.unary(K,G);case a.idof:S=E(e,t,n,s);if(e.currentType=l.Type.u32,!S)return m.unreachable();var we,Ue=S.signatureReference;return S.is(256)&&null!==Ue?m.i32(Ue.id):!(we=S.classReference)||we.hasDecorator(p.DecoratorFlags.UNMANAGED)?(e.error(o.DiagnosticCode.Operation_not_supported,s.range),m.unreachable()):m.i32(we.id);case a.visit_globals:if(x(t,s,r)|A(n,1,s,e))return e.currentType=l.Type.void,m.unreachable();G=e.compileExpression(n[0],l.Type.u32,1);return e.runtimeFeatures|=4,e.currentType=l.Type.void,m.call(a.visit_globals,[G],u.NativeType.None);case a.visit_members:if(x(t,s,r)|A(n,2,s,e))return e.currentType=l.Type.void,m.unreachable();G=e.compileExpression(n[0],e.options.usizeType,1),z=e.compileExpression(n[1],l.Type.u32,1);return e.runtimeFeatures|=8,e.currentType=l.Type.void,m.call(a.visit_members,[G,z],u.NativeType.None)}return(R=function(e,r,t,n){switch(r.internalName){case a.i32_clz:return f(a.clz,e,l.Type.i32,t,l.Type.i32,n);case a.i64_clz:return f(a.clz,e,l.Type.i64,t,l.Type.i64,n);case a.i32_ctz:return f(a.ctz,e,l.Type.i32,t,l.Type.i32,n);case a.i64_ctz:return f(a.ctz,e,l.Type.i64,t,l.Type.i64,n);case a.i32_popcnt:return f(a.popcnt,e,l.Type.i32,t,l.Type.i32,n);case a.i64_popcnt:return f(a.popcnt,e,l.Type.i64,t,l.Type.i64,n);case a.i32_rotl:return f(a.rotl,e,l.Type.i32,t,l.Type.i32,n);case a.i64_rotl:return f(a.rotl,e,l.Type.i64,t,l.Type.i64,n);case a.i32_rotr:return f(a.rotr,e,l.Type.i32,t,l.Type.i32,n);case a.i64_rotr:return f(a.rotr,e,l.Type.i64,t,l.Type.i64,n);case a.f32_abs:return f(a.abs,e,l.Type.f32,t,l.Type.f32,n);case a.f64_abs:return f(a.abs,e,l.Type.f64,t,l.Type.f64,n);case a.f32_max:return f(a.max,e,l.Type.f32,t,l.Type.f32,n);case a.f64_max:return f(a.max,e,l.Type.f64,t,l.Type.f64,n);case a.f32_min:return f(a.min,e,l.Type.f32,t,l.Type.f32,n);case a.f64_min:return f(a.min,e,l.Type.f64,t,l.Type.f64,n);case a.f32_ceil:return f(a.ceil,e,l.Type.f32,t,l.Type.f32,n);case a.f64_ceil:return f(a.ceil,e,l.Type.f64,t,l.Type.f64,n);case a.f32_floor:return f(a.floor,e,l.Type.f32,t,l.Type.f32,n);case a.f64_floor:return f(a.floor,e,l.Type.f64,t,l.Type.f64,n);case a.f32_copysign:return f(a.copysign,e,l.Type.f32,t,l.Type.f32,n);case a.f64_copysign:return f(a.copysign,e,l.Type.f64,t,l.Type.f64,n);case a.f32_nearest:return f(a.nearest,e,l.Type.f32,t,l.Type.f32,n);case a.f64_nearest:return f(a.nearest,e,l.Type.f64,t,l.Type.f64,n);case a.i32_reinterpret_f32:return f(a.reinterpret,e,l.Type.i32,t,l.Type.f32,n);case a.i64_reinterpret_f64:return f(a.reinterpret,e,l.Type.i64,t,l.Type.f64,n);case a.f32_reinterpret_i32:return f(a.reinterpret,e,l.Type.f32,t,l.Type.i32,n);case a.f64_reinterpret_i64:return f(a.reinterpret,e,l.Type.f64,t,l.Type.i64,n);case a.f32_sqrt:return f(a.sqrt,e,l.Type.f32,t,l.Type.f32,n);case a.f64_sqrt:return f(a.sqrt,e,l.Type.f64,t,l.Type.f64,n);case a.f32_trunc:return f(a.trunc,e,l.Type.f32,t,l.Type.f32,n);case a.f64_trunc:return f(a.trunc,e,l.Type.f64,t,l.Type.f64,n);case a.i32_load8_s:return f(a.load,e,l.Type.i8,t,l.Type.i32,n);case a.i32_load8_u:return f(a.load,e,l.Type.u8,t,l.Type.i32,n);case a.i32_load16_s:return f(a.load,e,l.Type.i16,t,l.Type.i32,n);case a.i32_load16_u:return f(a.load,e,l.Type.u16,t,l.Type.i32,n);case a.i32_load:return f(a.load,e,l.Type.i32,t,l.Type.i32,n);case a.i64_load8_s:return f(a.load,e,l.Type.i8,t,l.Type.i64,n);case a.i64_load8_u:return f(a.load,e,l.Type.u8,t,l.Type.i64,n);case a.i64_load16_s:return f(a.load,e,l.Type.i16,t,l.Type.i64,n);case a.i64_load16_u:return f(a.load,e,l.Type.u16,t,l.Type.i64,n);case a.i64_load32_s:return f(a.load,e,l.Type.i32,t,l.Type.i64,n);case a.i64_load32_u:return f(a.load,e,l.Type.u32,t,l.Type.i64,n);case a.i64_load:return f(a.load,e,l.Type.i64,t,l.Type.i64,n);case a.f32_load:return f(a.load,e,l.Type.f32,t,l.Type.f32,n);case a.f64_load:return f(a.load,e,l.Type.f64,t,l.Type.f64,n);case a.i32_store8:return f(a.store,e,l.Type.i8,t,l.Type.i32,n);case a.i32_store16:return f(a.store,e,l.Type.i16,t,l.Type.i32,n);case a.i32_store:return f(a.store,e,l.Type.i32,t,l.Type.i32,n);case a.i64_store8:return f(a.store,e,l.Type.i8,t,l.Type.i64,n);case a.i64_store16:return f(a.store,e,l.Type.i16,t,l.Type.i64,n);case a.i64_store32:return f(a.store,e,l.Type.i32,t,l.Type.i64,n);case a.i64_store:return f(a.store,e,l.Type.i64,t,l.Type.i64,n);case a.f32_store:return f(a.store,e,l.Type.f32,t,l.Type.f32,n);case a.f64_store:return f(a.store,e,l.Type.f64,t,l.Type.f64,n)}if(e.options.hasFeature(16))switch(r.internalName){case a.i32_atomic_load8_u:return f(a.atomic_load,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_load16_u:return f(a.atomic_load,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_load:return f(a.atomic_load,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_load8_u:return f(a.atomic_load,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_load16_u:return f(a.atomic_load,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_load32_u:return f(a.atomic_load,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_load:return f(a.atomic_load,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_store8:return f(a.atomic_store,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_store16:return f(a.atomic_store,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_store:return f(a.atomic_store,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_store8:return f(a.atomic_store,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_store16:return f(a.atomic_store,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_store32:return f(a.atomic_store,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_store:return f(a.atomic_store,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_add_u:return f(a.atomic_add,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_add_u:return f(a.atomic_add,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_add:return f(a.atomic_add,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_add_u:return f(a.atomic_add,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_add_u:return f(a.atomic_add,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_add_u:return f(a.atomic_add,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_add:return f(a.atomic_add,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_sub_u:return f(a.atomic_sub,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_sub_u:return f(a.atomic_sub,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_sub:return f(a.atomic_sub,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_sub_u:return f(a.atomic_sub,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_sub_u:return f(a.atomic_sub,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_sub_u:return f(a.atomic_sub,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_sub:return f(a.atomic_sub,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_and_u:return f(a.atomic_and,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_and_u:return f(a.atomic_and,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_and:return f(a.atomic_and,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_and_u:return f(a.atomic_and,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_and_u:return f(a.atomic_and,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_and_u:return f(a.atomic_and,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_and:return f(a.atomic_and,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_or_u:return f(a.atomic_or,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_or_u:return f(a.atomic_or,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_or:return f(a.atomic_or,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_or_u:return f(a.atomic_or,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_or_u:return f(a.atomic_or,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_or_u:return f(a.atomic_or,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_or:return f(a.atomic_or,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_u_xor:return f(a.atomic_xor,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_u_xor:return f(a.atomic_xor,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_xor:return f(a.atomic_xor,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_xor_u:return f(a.atomic_xor,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_xor_u:return f(a.atomic_xor,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_xor_u:return f(a.atomic_xor,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_xor:return f(a.atomic_xor,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_xchg_u:return f(a.atomic_xchg,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_xchg_u:return f(a.atomic_xchg,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_xchg:return f(a.atomic_xchg,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_xchg_u:return f(a.atomic_xchg,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_xchg_u:return f(a.atomic_xchg,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_xchg_u:return f(a.atomic_xchg,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_xchg:return f(a.atomic_xchg,e,l.Type.i64,t,l.Type.i64,n);case a.i32_atomic_rmw8_cmpxchg_u:return f(a.atomic_cmpxchg,e,l.Type.u8,t,l.Type.i32,n);case a.i32_atomic_rmw16_cmpxchg_u:return f(a.atomic_cmpxchg,e,l.Type.u16,t,l.Type.i32,n);case a.i32_atomic_rmw_cmpxchg:return f(a.atomic_cmpxchg,e,l.Type.i32,t,l.Type.i32,n);case a.i64_atomic_rmw8_cmpxchg_u:return f(a.atomic_cmpxchg,e,l.Type.u8,t,l.Type.i64,n);case a.i64_atomic_rmw16_cmpxchg_u:return f(a.atomic_cmpxchg,e,l.Type.u16,t,l.Type.i64,n);case a.i64_atomic_rmw32_cmpxchg_u:return f(a.atomic_cmpxchg,e,l.Type.u32,t,l.Type.i64,n);case a.i64_atomic_rmw_cmpxchg:return f(a.atomic_cmpxchg,e,l.Type.i64,t,l.Type.i64,n);case a.i32_wait:return f(a.atomic_wait,e,l.Type.i32,t,l.Type.i32,n);case a.i64_wait:return f(a.atomic_wait,e,l.Type.i64,t,l.Type.i32,n)}if(e.options.hasFeature(8))switch(r.internalName){case a.v128_load:return f(a.load,e,l.Type.v128,t,l.Type.v128,n);case a.v128_store:return f(a.store,e,l.Type.v128,t,l.Type.v128,n);case a.i8x16_splat:return f(a.v128_splat,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_extract_lane_s:return f(a.v128_extract_lane,e,l.Type.i8,t,l.Type.i8,n);case a.i8x16_extract_lane_u:return f(a.v128_extract_lane,e,l.Type.u8,t,l.Type.u8,n);case a.i8x16_replace_lane:return f(a.v128_replace_lane,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_add:return f(a.v128_add,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_sub:return f(a.v128_sub,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_mul:return f(a.v128_mul,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_neg:return f(a.v128_neg,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_add_saturate_s:return f(a.v128_add_saturate,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_add_saturate_u:return f(a.v128_add_saturate,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_sub_saturate_s:return f(a.v128_sub_saturate,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_sub_saturate_u:return f(a.v128_sub_saturate,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_shl:return f(a.v128_shl,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_shr_s:return f(a.v128_shr,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_shr_u:return f(a.v128_shr,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_any_true:return f(a.v128_any_true,e,l.Type.i8,t,l.Type.i32,n);case a.i8x16_all_true:return f(a.v128_all_true,e,l.Type.i8,t,l.Type.i32,n);case a.i8x16_eq:return f(a.v128_eq,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_ne:return f(a.v128_ne,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_lt_s:return f(a.v128_lt,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_lt_u:return f(a.v128_lt,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_le_s:return f(a.v128_le,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_le_u:return f(a.v128_le,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_gt_s:return f(a.v128_gt,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_gt_u:return f(a.v128_gt,e,l.Type.u8,t,l.Type.v128,n);case a.i8x16_ge_s:return f(a.v128_ge,e,l.Type.i8,t,l.Type.v128,n);case a.i8x16_ge_u:return f(a.v128_ge,e,l.Type.u8,t,l.Type.v128,n);case a.i16x8_splat:return f(a.v128_splat,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_extract_lane_s:return f(a.v128_extract_lane,e,l.Type.i16,t,l.Type.i16,n);case a.i16x8_extract_lane_u:return f(a.v128_extract_lane,e,l.Type.u16,t,l.Type.u16,n);case a.i16x8_replace_lane:return f(a.v128_replace_lane,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_add:return f(a.v128_add,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_sub:return f(a.v128_sub,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_mul:return f(a.v128_mul,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_neg:return f(a.v128_neg,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_add_saturate_s:return f(a.v128_add_saturate,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_add_saturate_u:return f(a.v128_add_saturate,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_sub_saturate_s:return f(a.v128_sub_saturate,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_sub_saturate_u:return f(a.v128_sub_saturate,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_shl:return f(a.v128_shl,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_shr_s:return f(a.v128_shr,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_shr_u:return f(a.v128_shr,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_any_true:return f(a.v128_any_true,e,l.Type.i16,t,l.Type.i32,n);case a.i16x8_all_true:return f(a.v128_all_true,e,l.Type.i16,t,l.Type.i32,n);case a.i16x8_eq:return f(a.v128_eq,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_ne:return f(a.v128_ne,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_lt_s:return f(a.v128_lt,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_lt_u:return f(a.v128_lt,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_le_s:return f(a.v128_le,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_le_u:return f(a.v128_le,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_gt_s:return f(a.v128_gt,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_gt_u:return f(a.v128_gt,e,l.Type.u16,t,l.Type.v128,n);case a.i16x8_ge_s:return f(a.v128_ge,e,l.Type.i16,t,l.Type.v128,n);case a.i16x8_ge_u:return f(a.v128_ge,e,l.Type.u16,t,l.Type.v128,n);case a.i32x4_splat:return f(a.v128_splat,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_extract_lane:return f(a.v128_extract_lane,e,l.Type.i32,t,l.Type.i32,n);case a.i32x4_replace_lane:return f(a.v128_replace_lane,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_add:return f(a.v128_add,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_sub:return f(a.v128_sub,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_mul:return f(a.v128_mul,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_neg:return f(a.v128_neg,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_shl:return f(a.v128_shl,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_shr_s:return f(a.v128_shr,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_shr_u:return f(a.v128_shr,e,l.Type.u32,t,l.Type.v128,n);case a.i32x4_any_true:return f(a.v128_any_true,e,l.Type.i32,t,l.Type.i32,n);case a.i32x4_all_true:return f(a.v128_all_true,e,l.Type.i32,t,l.Type.i32,n);case a.i32x4_eq:return f(a.v128_eq,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_ne:return f(a.v128_ne,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_lt_s:return f(a.v128_lt,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_lt_u:return f(a.v128_lt,e,l.Type.u32,t,l.Type.v128,n);case a.i32x4_le_s:return f(a.v128_le,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_le_u:return f(a.v128_le,e,l.Type.u32,t,l.Type.v128,n);case a.i32x4_gt_s:return f(a.v128_gt,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_gt_u:return f(a.v128_gt,e,l.Type.u32,t,l.Type.v128,n);case a.i32x4_ge_s:return f(a.v128_ge,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_ge_u:return f(a.v128_ge,e,l.Type.u32,t,l.Type.v128,n);case a.i32x4_trunc_s_f32x4_sat:return f(a.v128_trunc,e,l.Type.i32,t,l.Type.v128,n);case a.i32x4_trunc_u_f32x4_sat:return f(a.v128_trunc,e,l.Type.u32,t,l.Type.v128,n);case a.i64x2_splat:return f(a.v128_splat,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_extract_lane:return f(a.v128_extract_lane,e,l.Type.i64,t,l.Type.i64,n);case a.i64x2_replace_lane:return f(a.v128_replace_lane,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_add:return f(a.v128_add,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_sub:return f(a.v128_sub,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_neg:return f(a.v128_neg,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_shl:return f(a.v128_shl,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_shr_s:return f(a.v128_shr,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_shr_u:return f(a.v128_shr,e,l.Type.u64,t,l.Type.v128,n);case a.i64x2_any_true:return f(a.v128_any_true,e,l.Type.i64,t,l.Type.i32,n);case a.i64x2_all_true:return f(a.v128_all_true,e,l.Type.i64,t,l.Type.i32,n);case a.i64x2_trunc_s_f64x2_sat:return f(a.v128_trunc,e,l.Type.i64,t,l.Type.v128,n);case a.i64x2_trunc_u_f64x2_sat:return f(a.v128_trunc,e,l.Type.u64,t,l.Type.v128,n);case a.f32x4_splat:return f(a.v128_splat,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_extract_lane:return f(a.v128_extract_lane,e,l.Type.f32,t,l.Type.f32,n);case a.f32x4_replace_lane:return f(a.v128_replace_lane,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_add:return f(a.v128_add,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_sub:return f(a.v128_sub,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_mul:return f(a.v128_mul,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_div:return f(a.v128_div,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_neg:return f(a.v128_neg,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_min:return f(a.v128_min,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_max:return f(a.v128_max,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_abs:return f(a.v128_abs,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_sqrt:return f(a.v128_sqrt,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_eq:return f(a.v128_eq,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_ne:return f(a.v128_ne,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_lt:return f(a.v128_lt,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_le:return f(a.v128_le,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_gt:return f(a.v128_gt,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_ge:return f(a.v128_ge,e,l.Type.f32,t,l.Type.v128,n);case a.f32x4_convert_s_i32x4:return f(a.v128_convert,e,l.Type.i32,t,l.Type.v128,n);case a.f32x4_convert_u_i32x4:return f(a.v128_convert,e,l.Type.u32,t,l.Type.v128,n);case a.f64x2_splat:return f(a.v128_splat,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_extract_lane:return f(a.v128_extract_lane,e,l.Type.f64,t,l.Type.f64,n);case a.f64x2_replace_lane:return f(a.v128_replace_lane,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_add:return f(a.v128_add,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_sub:return f(a.v128_sub,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_mul:return f(a.v128_mul,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_div:return f(a.v128_div,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_neg:return f(a.v128_neg,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_min:return f(a.v128_min,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_max:return f(a.v128_max,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_abs:return f(a.v128_abs,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_sqrt:return f(a.v128_sqrt,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_eq:return f(a.v128_eq,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_ne:return f(a.v128_ne,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_lt:return f(a.v128_lt,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_le:return f(a.v128_le,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_gt:return f(a.v128_gt,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_ge:return f(a.v128_ge,e,l.Type.f64,t,l.Type.v128,n);case a.f64x2_convert_s_i64x2:return f(a.v128_convert,e,l.Type.i64,t,l.Type.v128,n);case a.f64x2_convert_u_i64x2:return f(a.v128_convert,e,l.Type.u64,t,l.Type.v128,n);case a.v8x16_shuffle:return f(a.v128_shuffle,e,l.Type.i8,t,l.Type.v128,n)}return 0}(e,r,n,s))?(t&&e.error(o.DiagnosticCode.Type_0_is_not_generic,s.typeArgumentsRange,r.internalName),R):(e.error(o.DiagnosticCode.Cannot_find_name_0,s.expression.range,r.internalName),m.unreachable())}function f(e,r,t,n,i,a){assert(r.program.elementsByName.has(e));var s=r.program.elementsByName.get(e);return assert(s.kind==p.ElementKind.FUNCTION_PROTOTYPE),m(r,s,[t],n,i,a,!0)}function T(e,r,t){var n=e.program,i=e.module,a=e.program.stringInstance;if(!a)return i.unreachable();var s,o=n.abortInstance;if(!o||!e.compileFunction(o))return i.unreachable();s=null!==r?e.compileExpression(r,a.type,17):a.type.toNativeZero(i);var c=e.ensureStaticString(t.range.source.normalizedPath);return e.currentType=l.Type.void,i.block(null,[i.call(o.internalName,[s,c,i.i32(t.range.line),i.i32(t.range.column)],u.NativeType.None),i.unreachable()])}function g(e){var r=32*(1<1)return e.error(o.DiagnosticCode.Expected_0_type_arguments_but_got_1,n.typeArgumentsRange,"1",r.length.toString(10)),null;e.compileExpression(t[0],r[0],1)}else e.compileExpression(t[0],l.Type.auto);return e.currentType}return r&&r.length>1&&e.error(o.DiagnosticCode.Expected_0_type_arguments_but_got_1,n.typeArgumentsRange,"1",r.length.toString(10)),e.error(o.DiagnosticCode.Expected_0_arguments_but_got_1,n.argumentsRange,"1",t.length.toString(10)),null}function v(e,r){var t,n;return r.options.isWasm64?(t=r.precomputeExpression(e,l.Type.usize64,1),(u.getExpressionId(t)!=u.ExpressionId.Const||u.getExpressionType(t)!=u.NativeType.I64||0!=u.getConstValueI64High(t)||(n=u.getConstValueI64Low(t))<0)&&(r.error(o.DiagnosticCode.Expression_must_be_a_compile_time_constant,e.range),n=-1)):(t=r.precomputeExpression(e,l.Type.usize32,1),(u.getExpressionId(t)!=u.ExpressionId.Const||u.getExpressionType(t)!=u.NativeType.I32||(n=u.getConstValueI32(t))<0)&&(r.error(o.DiagnosticCode.Expression_must_be_a_compile_time_constant,e.range),n=-1)),n}function b(e,r,t,n){if(void 0===n&&(n=!1),e){var i=e.length;if(1==i)return 0;assert(i),n&&(t.currentType=e[0]),t.error(o.DiagnosticCode.Expected_0_type_arguments_but_got_1,r.typeArgumentsRange,"1",i.toString())}else t.error(o.DiagnosticCode.Expected_0_type_arguments_but_got_1,r.range,"1","0");return 1}function I(e,r,t,n){if(void 0===n&&(n=!1),e){var i=e.length;return 1==i?0:(assert(i),n&&(t.currentType=e[0]),t.error(o.DiagnosticCode.Expected_0_type_arguments_but_got_1,r.typeArgumentsRange,"1",i.toString()),1)}return 0}function x(e,r,t){return e?(t.program.error(o.DiagnosticCode.Type_0_is_not_generic,r.typeArgumentsRange,t.internalName),1):0}function A(e,r,t,n){return e.length!=r?(n.error(o.DiagnosticCode.Expected_0_arguments_but_got_1,t.range,r.toString(),e.length.toString()),1):0}function N(e,r,t,n,i){var a=e.length;return at?(i.error(o.DiagnosticCode.Expected_0_arguments_but_got_1,n.range,t.toString(),a.toString()),1):0}!function(e){e.isInteger="~lib/builtins/isInteger",e.isFloat="~lib/builtins/isFloat",e.isBoolean="~lib/builtins/isBoolean",e.isSigned="~lib/builtins/isSigned",e.isReference="~lib/builtins/isReference",e.isString="~lib/builtins/isString",e.isArray="~lib/builtins/isArray",e.isArrayLike="~lib/builtins/isArrayLike",e.isFunction="~lib/builtins/isFunction",e.isNullable="~lib/builtins/isNullable",e.isDefined="~lib/builtins/isDefined",e.isConstant="~lib/builtins/isConstant",e.isManaged="~lib/builtins/isManaged",e.isVoid="~lib/builtins/isVoid",e.clz="~lib/builtins/clz",e.ctz="~lib/builtins/ctz",e.popcnt="~lib/builtins/popcnt",e.rotl="~lib/builtins/rotl",e.rotr="~lib/builtins/rotr",e.abs="~lib/builtins/abs",e.max="~lib/builtins/max",e.min="~lib/builtins/min",e.ceil="~lib/builtins/ceil",e.floor="~lib/builtins/floor",e.copysign="~lib/builtins/copysign",e.nearest="~lib/builtins/nearest",e.reinterpret="~lib/builtins/reinterpret",e.sqrt="~lib/builtins/sqrt",e.trunc="~lib/builtins/trunc",e.load="~lib/builtins/load",e.store="~lib/builtins/store",e.atomic_load="~lib/builtins/atomic.load",e.atomic_store="~lib/builtins/atomic.store",e.atomic_add="~lib/builtins/atomic.add",e.atomic_sub="~lib/builtins/atomic.sub",e.atomic_and="~lib/builtins/atomic.and",e.atomic_or="~lib/builtins/atomic.or",e.atomic_xor="~lib/builtins/atomic.xor",e.atomic_xchg="~lib/builtins/atomic.xchg",e.atomic_cmpxchg="~lib/builtins/atomic.cmpxchg",e.atomic_wait="~lib/builtins/atomic.wait",e.atomic_notify="~lib/builtins/atomic.notify",e.sizeof="~lib/builtins/sizeof",e.alignof="~lib/builtins/alignof",e.offsetof="~lib/builtins/offsetof",e.nameof="~lib/builtins/nameof",e.lengthof="~lib/builtins/lengthof",e.select="~lib/builtins/select",e.unreachable="~lib/builtins/unreachable",e.changetype="~lib/builtins/changetype",e.assert="~lib/builtins/assert",e.unchecked="~lib/builtins/unchecked",e.call_direct="~lib/builtins/call_direct",e.call_indirect="~lib/builtins/call_indirect",e.instantiate="~lib/builtins/instantiate",e.idof="~lib/builtins/idof",e.i8="~lib/builtins/i8",e.i16="~lib/builtins/i16",e.i32="~lib/builtins/i32",e.i64="~lib/builtins/i64",e.isize="~lib/builtins/isize",e.u8="~lib/builtins/u8",e.u16="~lib/builtins/u16",e.u32="~lib/builtins/u32",e.u64="~lib/builtins/u64",e.usize="~lib/builtins/usize",e.bool="~lib/builtins/bool",e.f32="~lib/builtins/f32",e.f64="~lib/builtins/f64",e.v128="~lib/builtins/v128",e.void_="~lib/builtins/void",e.i32_clz="~lib/builtins/i32.clz",e.i64_clz="~lib/builtins/i64.clz",e.i32_ctz="~lib/builtins/i32.ctz",e.i64_ctz="~lib/builtins/i64.ctz",e.i32_popcnt="~lib/builtins/i32.popcnt",e.i64_popcnt="~lib/builtins/i64.popcnt",e.i32_rotl="~lib/builtins/i32.rotl",e.i64_rotl="~lib/builtins/i64.rotl",e.i32_rotr="~lib/builtins/i32.rotr",e.i64_rotr="~lib/builtins/i64.rotr",e.f32_abs="~lib/builtins/f32.abs",e.f64_abs="~lib/builtins/f64.abs",e.f32_max="~lib/builtins/f32.max",e.f64_max="~lib/builtins/f64.max",e.f32_min="~lib/builtins/f32.min",e.f64_min="~lib/builtins/f64.min",e.f32_ceil="~lib/builtins/f32.ceil",e.f64_ceil="~lib/builtins/f64.ceil",e.f32_floor="~lib/builtins/f32.floor",e.f64_floor="~lib/builtins/f64.floor",e.f32_copysign="~lib/builtins/f32.copysign",e.f64_copysign="~lib/builtins/f64.copysign",e.f32_nearest="~lib/builtins/f32.nearest",e.f64_nearest="~lib/builtins/f64.nearest",e.i32_reinterpret_f32="~lib/builtins/i32.reinterpret_f32",e.i64_reinterpret_f64="~lib/builtins/i64.reinterpret_f64",e.f32_reinterpret_i32="~lib/builtins/f32.reinterpret_i32",e.f64_reinterpret_i64="~lib/builtins/f64.reinterpret_i64",e.f32_sqrt="~lib/builtins/f32.sqrt",e.f64_sqrt="~lib/builtins/f64.sqrt",e.f32_trunc="~lib/builtins/f32.trunc",e.f64_trunc="~lib/builtins/f64.trunc",e.i32_load8_s="~lib/builtins/i32.load8_s",e.i32_load8_u="~lib/builtins/i32.load8_u",e.i32_load16_s="~lib/builtins/i32.load16_s",e.i32_load16_u="~lib/builtins/i32.load16_u",e.i32_load="~lib/builtins/i32.load",e.i64_load8_s="~lib/builtins/i64.load8_s",e.i64_load8_u="~lib/builtins/i64.load8_u",e.i64_load16_s="~lib/builtins/i64.load16_s",e.i64_load16_u="~lib/builtins/i64.load16_u",e.i64_load32_s="~lib/builtins/i64.load32_s",e.i64_load32_u="~lib/builtins/i64.load32_u",e.i64_load="~lib/builtins/i64.load",e.f32_load="~lib/builtins/f32.load",e.f64_load="~lib/builtins/f64.load",e.i32_store8="~lib/builtins/i32.store8",e.i32_store16="~lib/builtins/i32.store16",e.i32_store="~lib/builtins/i32.store",e.i64_store8="~lib/builtins/i64.store8",e.i64_store16="~lib/builtins/i64.store16",e.i64_store32="~lib/builtins/i64.store32",e.i64_store="~lib/builtins/i64.store",e.f32_store="~lib/builtins/f32.store",e.f64_store="~lib/builtins/f64.store",e.i32_atomic_load8_u="~lib/builtins/i32.atomic.load8_u",e.i32_atomic_load16_u="~lib/builtins/i32.atomic.load16_u",e.i32_atomic_load="~lib/builtins/i32.atomic.load",e.i64_atomic_load8_u="~lib/builtins/i64.atomic.load8_u",e.i64_atomic_load16_u="~lib/builtins/i64.atomic.load16_u",e.i64_atomic_load32_u="~lib/builtins/i64.atomic.load32_u",e.i64_atomic_load="~lib/builtins/i64.atomic.load",e.i32_atomic_store8="~lib/builtins/i32.atomic.store8",e.i32_atomic_store16="~lib/builtins/i32.atomic.store16",e.i32_atomic_store="~lib/builtins/i32.atomic.store",e.i64_atomic_store8="~lib/builtins/i64.atomic.store8",e.i64_atomic_store16="~lib/builtins/i64.atomic.store16",e.i64_atomic_store32="~lib/builtins/i64.atomic.store32",e.i64_atomic_store="~lib/builtins/i64.atomic.store",e.i32_atomic_rmw8_add_u="~lib/builtins/i32.atomic.rmw8.add_u",e.i32_atomic_rmw16_add_u="~lib/builtins/i32.atomic.rmw16.add_u",e.i32_atomic_rmw_add="~lib/builtins/i32.atomic.rmw.add",e.i64_atomic_rmw8_add_u="~lib/builtins/i64.atomic.rmw8.add_u",e.i64_atomic_rmw16_add_u="~lib/builtins/i64.atomic.rmw16.add_u",e.i64_atomic_rmw32_add_u="~lib/builtins/i64.atomic.rmw32.add_u",e.i64_atomic_rmw_add="~lib/builtins/i64.atomic.rmw.add",e.i32_atomic_rmw8_sub_u="~lib/builtins/i32.atomic.rmw8.sub_u",e.i32_atomic_rmw16_sub_u="~lib/builtins/i32.atomic.rmw16.sub_u",e.i32_atomic_rmw_sub="~lib/builtins/i32.atomic.rmw.sub",e.i64_atomic_rmw8_sub_u="~lib/builtins/i64.atomic.rmw8.sub_u",e.i64_atomic_rmw16_sub_u="~lib/builtins/i64.atomic.rmw16.sub_u",e.i64_atomic_rmw32_sub_u="~lib/builtins/i64.atomic.rmw32.sub_u",e.i64_atomic_rmw_sub="~lib/builtins/i64.atomic.rmw.sub",e.i32_atomic_rmw8_and_u="~lib/builtins/i32.atomic.rmw8.and_u",e.i32_atomic_rmw16_and_u="~lib/builtins/i32.atomic.rmw16.and_u",e.i32_atomic_rmw_and="~lib/builtins/i32.atomic.rmw.and",e.i64_atomic_rmw8_and_u="~lib/builtins/i64.atomic.rmw8.and_u",e.i64_atomic_rmw16_and_u="~lib/builtins/i64.atomic.rmw16.and_u",e.i64_atomic_rmw32_and_u="~lib/builtins/i64.atomic.rmw32.and_u",e.i64_atomic_rmw_and="~lib/builtins/i64.atomic.rmw.and",e.i32_atomic_rmw8_or_u="~lib/builtins/i32.atomic.rmw8.or_u",e.i32_atomic_rmw16_or_u="~lib/builtins/i32.atomic.rmw16.or_u",e.i32_atomic_rmw_or="~lib/builtins/i32.atomic.rmw.or",e.i64_atomic_rmw8_or_u="~lib/builtins/i64.atomic.rmw8.or_u",e.i64_atomic_rmw16_or_u="~lib/builtins/i64.atomic.rmw16.or_u",e.i64_atomic_rmw32_or_u="~lib/builtins/i64.atomic.rmw32.or_u",e.i64_atomic_rmw_or="~lib/builtins/i64.atomic.rmw.or",e.i32_atomic_rmw8_u_xor="~lib/builtins/i32.atomic.rmw8.xor_u",e.i32_atomic_rmw16_u_xor="~lib/builtins/i32.atomic.rmw16.xor_u",e.i32_atomic_rmw_xor="~lib/builtins/i32.atomic.rmw.xor",e.i64_atomic_rmw8_xor_u="~lib/builtins/i64.atomic.rmw8.xor_u",e.i64_atomic_rmw16_xor_u="~lib/builtins/i64.atomic.rmw16.xor_u",e.i64_atomic_rmw32_xor_u="~lib/builtins/i64.atomic.rmw32.xor_u",e.i64_atomic_rmw_xor="~lib/builtins/i64.atomic.rmw.xor",e.i32_atomic_rmw8_xchg_u="~lib/builtins/i32.atomic.rmw8.xchg_u",e.i32_atomic_rmw16_xchg_u="~lib/builtins/i32.atomic.rmw16.xchg_u",e.i32_atomic_rmw_xchg="~lib/builtins/i32.atomic.rmw.xchg",e.i64_atomic_rmw8_xchg_u="~lib/builtins/i64.atomic.rmw8.xchg_u",e.i64_atomic_rmw16_xchg_u="~lib/builtins/i64.atomic.rmw16.xchg_u",e.i64_atomic_rmw32_xchg_u="~lib/builtins/i64.atomic.rmw32.xchg_u",e.i64_atomic_rmw_xchg="~lib/builtins/i64.atomic.rmw.xchg",e.i32_atomic_rmw8_cmpxchg_u="~lib/builtins/i32.atomic.rmw8.cmpxchg_u",e.i32_atomic_rmw16_cmpxchg_u="~lib/builtins/i32.atomic.rmw16.cmpxchg_u",e.i32_atomic_rmw_cmpxchg="~lib/builtins/i32.atomic.rmw.cmpxchg",e.i64_atomic_rmw8_cmpxchg_u="~lib/builtins/i64.atomic.rmw8.cmpxchg_u",e.i64_atomic_rmw16_cmpxchg_u="~lib/builtins/i64.atomic.rmw16.cmpxchg_u",e.i64_atomic_rmw32_cmpxchg_u="~lib/builtins/i64.atomic.rmw32.cmpxchg_u",e.i64_atomic_rmw_cmpxchg="~lib/builtins/i64.atomic.rmw.cmpxchg",e.i32_wait="~lib/builtins/i32.wait",e.i64_wait="~lib/builtins/i64.wait",e.v128_splat="~lib/builtins/v128.splat",e.v128_extract_lane="~lib/builtins/v128.extract_lane",e.v128_replace_lane="~lib/builtins/v128.replace_lane",e.v128_shuffle="~lib/builtins/v128.shuffle",e.v128_load="~lib/builtins/v128.load",e.v128_store="~lib/builtins/v128.store",e.v128_add="~lib/builtins/v128.add",e.v128_sub="~lib/builtins/v128.sub",e.v128_mul="~lib/builtins/v128.mul",e.v128_div="~lib/builtins/v128.div",e.v128_neg="~lib/builtins/v128.neg",e.v128_add_saturate="~lib/builtins/v128.add_saturate",e.v128_sub_saturate="~lib/builtins/v128.sub_saturate",e.v128_shl="~lib/builtins/v128.shl",e.v128_shr="~lib/builtins/v128.shr",e.v128_and="~lib/builtins/v128.and",e.v128_or="~lib/builtins/v128.or",e.v128_xor="~lib/builtins/v128.xor",e.v128_not="~lib/builtins/v128.not",e.v128_bitselect="~lib/builtins/v128.bitselect",e.v128_any_true="~lib/builtins/v128.any_true",e.v128_all_true="~lib/builtins/v128.all_true",e.v128_min="~lib/builtins/v128.min",e.v128_max="~lib/builtins/v128.max",e.v128_abs="~lib/builtins/v128.abs",e.v128_sqrt="~lib/builtins/v128.sqrt",e.v128_eq="~lib/builtins/v128.eq",e.v128_ne="~lib/builtins/v128.ne",e.v128_lt="~lib/builtins/v128.lt",e.v128_le="~lib/builtins/v128.le",e.v128_gt="~lib/builtins/v128.gt",e.v128_ge="~lib/builtins/v128.ge",e.v128_convert="~lib/builtins/v128.convert",e.v128_trunc="~lib/builtins/v128.trunc",e.i8x16="~lib/builtins/i8x16",e.i16x8="~lib/builtins/i16x8",e.i32x4="~lib/builtins/i32x4",e.i64x2="~lib/builtins/i64x2",e.f32x4="~lib/builtins/f32x4",e.f64x2="~lib/builtins/f64x2",e.i8x16_splat="~lib/builtins/i8x16.splat",e.i8x16_extract_lane_s="~lib/builtins/i8x16.extract_lane_s",e.i8x16_extract_lane_u="~lib/builtins/i8x16.extract_lane_u",e.i8x16_replace_lane="~lib/builtins/i8x16.replace_lane",e.i8x16_add="~lib/builtins/i8x16.add",e.i8x16_sub="~lib/builtins/i8x16.sub",e.i8x16_mul="~lib/builtins/i8x16.mul",e.i8x16_neg="~lib/builtins/i8x16.neg",e.i8x16_add_saturate_s="~lib/builtins/i8x16.add_saturate_s",e.i8x16_add_saturate_u="~lib/builtins/i8x16.add_saturate_u",e.i8x16_sub_saturate_s="~lib/builtins/i8x16.sub_saturate_s",e.i8x16_sub_saturate_u="~lib/builtins/i8x16.sub_saturate_u",e.i8x16_shl="~lib/builtins/i8x16.shl",e.i8x16_shr_s="~lib/builtins/i8x16.shr_s",e.i8x16_shr_u="~lib/builtins/i8x16.shr_u",e.i8x16_any_true="~lib/builtins/i8x16.any_true",e.i8x16_all_true="~lib/builtins/i8x16.all_true",e.i8x16_eq="~lib/builtins/i8x16.eq",e.i8x16_ne="~lib/builtins/i8x16.ne",e.i8x16_lt_s="~lib/builtins/i8x16.lt_s",e.i8x16_lt_u="~lib/builtins/i8x16.lt_u",e.i8x16_le_s="~lib/builtins/i8x16.le_s",e.i8x16_le_u="~lib/builtins/i8x16.le_u",e.i8x16_gt_s="~lib/builtins/i8x16.gt_s",e.i8x16_gt_u="~lib/builtins/i8x16.gt_u",e.i8x16_ge_s="~lib/builtins/i8x16.ge_s",e.i8x16_ge_u="~lib/builtins/i8x16.ge_u",e.i16x8_splat="~lib/builtins/i16x8.splat",e.i16x8_extract_lane_s="~lib/builtins/i16x8.extract_lane_s",e.i16x8_extract_lane_u="~lib/builtins/i16x8.extract_lane_u",e.i16x8_replace_lane="~lib/builtins/i16x8.replace_lane",e.i16x8_add="~lib/builtins/i16x8.add",e.i16x8_sub="~lib/builtins/i16x8.sub",e.i16x8_mul="~lib/builtins/i16x8.mul",e.i16x8_neg="~lib/builtins/i16x8.neg",e.i16x8_add_saturate_s="~lib/builtins/i16x8.add_saturate_s",e.i16x8_add_saturate_u="~lib/builtins/i16x8.add_saturate_u",e.i16x8_sub_saturate_s="~lib/builtins/i16x8.sub_saturate_s",e.i16x8_sub_saturate_u="~lib/builtins/i16x8.sub_saturate_u",e.i16x8_shl="~lib/builtins/i16x8.shl",e.i16x8_shr_s="~lib/builtins/i16x8.shr_s",e.i16x8_shr_u="~lib/builtins/i16x8.shr_u",e.i16x8_any_true="~lib/builtins/i16x8.any_true",e.i16x8_all_true="~lib/builtins/i16x8.all_true",e.i16x8_eq="~lib/builtins/i16x8.eq",e.i16x8_ne="~lib/builtins/i16x8.ne",e.i16x8_lt_s="~lib/builtins/i16x8.lt_s",e.i16x8_lt_u="~lib/builtins/i16x8.lt_u",e.i16x8_le_s="~lib/builtins/i16x8.le_s",e.i16x8_le_u="~lib/builtins/i16x8.le_u",e.i16x8_gt_s="~lib/builtins/i16x8.gt_s",e.i16x8_gt_u="~lib/builtins/i16x8.gt_u",e.i16x8_ge_s="~lib/builtins/i16x8.ge_s",e.i16x8_ge_u="~lib/builtins/i16x8.ge_u",e.i32x4_splat="~lib/builtins/i32x4.splat",e.i32x4_extract_lane="~lib/builtins/i32x4.extract_lane",e.i32x4_replace_lane="~lib/builtins/i32x4.replace_lane",e.i32x4_add="~lib/builtins/i32x4.add",e.i32x4_sub="~lib/builtins/i32x4.sub",e.i32x4_mul="~lib/builtins/i32x4.mul",e.i32x4_neg="~lib/builtins/i32x4.neg",e.i32x4_shl="~lib/builtins/i32x4.shl",e.i32x4_shr_s="~lib/builtins/i32x4.shr_s",e.i32x4_shr_u="~lib/builtins/i32x4.shr_u",e.i32x4_any_true="~lib/builtins/i32x4.any_true",e.i32x4_all_true="~lib/builtins/i32x4.all_true",e.i32x4_eq="~lib/builtins/i32x4.eq",e.i32x4_ne="~lib/builtins/i32x4.ne",e.i32x4_lt_s="~lib/builtins/i32x4.lt_s",e.i32x4_lt_u="~lib/builtins/i32x4.lt_u",e.i32x4_le_s="~lib/builtins/i32x4.le_s",e.i32x4_le_u="~lib/builtins/i32x4.le_u",e.i32x4_gt_s="~lib/builtins/i32x4.gt_s",e.i32x4_gt_u="~lib/builtins/i32x4.gt_u",e.i32x4_ge_s="~lib/builtins/i32x4.ge_s",e.i32x4_ge_u="~lib/builtins/i32x4.ge_u",e.i32x4_trunc_s_f32x4_sat="~lib/builtins/i32x4.trunc_s_f32x4_sat",e.i32x4_trunc_u_f32x4_sat="~lib/builtins/i32x4.trunc_u_f32x4_sat",e.i64x2_splat="~lib/builtins/i64x2.splat",e.i64x2_extract_lane="~lib/builtins/i64x2.extract_lane",e.i64x2_replace_lane="~lib/builtins/i64x2.replace_lane",e.i64x2_add="~lib/builtins/i64x2.add",e.i64x2_sub="~lib/builtins/i64x2.sub",e.i64x2_neg="~lib/builtins/i64x2.neg",e.i64x2_shl="~lib/builtins/i64x2.shl",e.i64x2_shr_s="~lib/builtins/i64x2.shr_s",e.i64x2_shr_u="~lib/builtins/i64x2.shr_u",e.i64x2_any_true="~lib/builtins/i64x2.any_true",e.i64x2_all_true="~lib/builtins/i64x2.all_true",e.i64x2_trunc_s_f64x2_sat="~lib/builtins/i64x2.trunc_s_f64x2_sat",e.i64x2_trunc_u_f64x2_sat="~lib/builtins/i64x2.trunc_u_f64x2_sat",e.f32x4_splat="~lib/builtins/f32x4.splat",e.f32x4_extract_lane="~lib/builtins/f32x4.extract_lane",e.f32x4_replace_lane="~lib/builtins/f32x4.replace_lane",e.f32x4_add="~lib/builtins/f32x4.add",e.f32x4_sub="~lib/builtins/f32x4.sub",e.f32x4_mul="~lib/builtins/f32x4.mul",e.f32x4_div="~lib/builtins/f32x4.div",e.f32x4_neg="~lib/builtins/f32x4.neg",e.f32x4_min="~lib/builtins/f32x4.min",e.f32x4_max="~lib/builtins/f32x4.max",e.f32x4_abs="~lib/builtins/f32x4.abs",e.f32x4_sqrt="~lib/builtins/f32x4.sqrt",e.f32x4_eq="~lib/builtins/f32x4.eq",e.f32x4_ne="~lib/builtins/f32x4.ne",e.f32x4_lt="~lib/builtins/f32x4.lt",e.f32x4_le="~lib/builtins/f32x4.le",e.f32x4_gt="~lib/builtins/f32x4.gt",e.f32x4_ge="~lib/builtins/f32x4.ge",e.f32x4_convert_s_i32x4="~lib/builtins/f32x4.convert_s_i32x4",e.f32x4_convert_u_i32x4="~lib/builtins/f32x4.convert_u_i32x4",e.f64x2_splat="~lib/builtins/f64x2.splat",e.f64x2_extract_lane="~lib/builtins/f64x2.extract_lane",e.f64x2_replace_lane="~lib/builtins/f64x2.replace_lane",e.f64x2_add="~lib/builtins/f64x2.add",e.f64x2_sub="~lib/builtins/f64x2.sub",e.f64x2_mul="~lib/builtins/f64x2.mul",e.f64x2_div="~lib/builtins/f64x2.div",e.f64x2_neg="~lib/builtins/f64x2.neg",e.f64x2_min="~lib/builtins/f64x2.min",e.f64x2_max="~lib/builtins/f64x2.max",e.f64x2_abs="~lib/builtins/f64x2.abs",e.f64x2_sqrt="~lib/builtins/f64x2.sqrt",e.f64x2_eq="~lib/builtins/f64x2.eq",e.f64x2_ne="~lib/builtins/f64x2.ne",e.f64x2_lt="~lib/builtins/f64x2.lt",e.f64x2_le="~lib/builtins/f64x2.le",e.f64x2_gt="~lib/builtins/f64x2.gt",e.f64x2_ge="~lib/builtins/f64x2.ge",e.f64x2_convert_s_i64x2="~lib/builtins/f64x2.convert_s_i64x2",e.f64x2_convert_u_i64x2="~lib/builtins/f64x2.convert_u_i64x2",e.v8x16_shuffle="~lib/builtins/v8x16.shuffle",e.heap_base="~lib/heap/__heap_base",e.rtti_base="~lib/rt/__rtti_base",e.visit_globals="~lib/rt/__visit_globals",e.visit_members="~lib/rt/__visit_members",e.ERROR="~lib/diagnostics/ERROR",e.WARNING="~lib/diagnostics/WARNING",e.INFO="~lib/diagnostics/INFO",e.memory_size="~lib/memory/memory.size",e.memory_grow="~lib/memory/memory.grow",e.memory_copy="~lib/memory/memory.copy",e.memory_fill="~lib/memory/memory.fill",e.memory_allocate="~lib/memory/memory.allocate",e.memory_free="~lib/memory/memory.free",e.memory_reset="~lib/memory/memory.reset",e.runtime_instanceof="~lib/runtime/runtime.instanceof",e.runtime_flags="~lib/runtime/runtime.flags",e.runtime_allocate="~lib/util/runtime/allocate",e.runtime_reallocate="~lib/util/runtime/reallocate",e.runtime_register="~lib/util/runtime/register",e.runtime_discard="~lib/util/runtime/discard",e.runtime_makeArray="~lib/util/runtime/makeArray",e.Int8Array="~lib/typedarray/Int8Array",e.Uint8Array="~lib/typedarray/Uint8Array",e.Int16Array="~lib/typedarray/Int16Array",e.Uint16Array="~lib/typedarray/Uint16Array",e.Int32Array="~lib/typedarray/Int32Array",e.Uint32Array="~lib/typedarray/Uint32Array",e.Int64Array="~lib/typedarray/Int64Array",e.Uint64Array="~lib/typedarray/Uint64Array",e.Uint8ClampedArray="~lib/typedarray/Uint8ClampedArray",e.Float32Array="~lib/typedarray/Float32Array",e.Float64Array="~lib/typedarray/Float64Array",e.started="~lib/started",e.argc="~lib/argc",e.setargc="~lib/setargc",e.capabilities="~lib/capabilities"}(a=r.BuiltinSymbols||(r.BuiltinSymbols={})),r.compileCall=m,r.compileAbort=T,r.compileVisitGlobals=function(e){var r,t,i=e.module,s=new Array,o=e.ensureFunctionType([l.Type.u32],l.Type.void),c=e.options.nativeSizeType,_=assert(e.program.visitInstance);e.compileFunction(_);try{for(var h=n(e.program.elementsByName.values()),y=h.next();!y.done;y=h.next()){var m=y.value;if(m.kind==p.ElementKind.GLOBAL){var f=m,T=f.type.classReference;if(f.is(d.CommonFlags.COMPILED)&&null!==T&&!T.hasDecorator(p.DecoratorFlags.UNMANAGED))if(f.is(d.CommonFlags.INLINED)){var g=f.constantIntegerValue;(i64_low(g)||i64_high(g))&&s.push(i.call(_.internalName,[e.options.isWasm64?i.i64(i64_low(g),i64_high(g)):i.i32(i64_low(g))],u.NativeType.None))}else s.push(i.if(i.local_tee(1,i.global_get(f.internalName,c)),i.call(_.internalName,[i.local_get(1,c),i.local_get(0,u.NativeType.I32)],u.NativeType.None)))}}}catch(e){r={error:e}}finally{try{y&&!y.done&&(t=h.return)&&t.call(h)}finally{if(r)throw r.error}}i.addFunction(a.visit_globals,o,[c],s.length?i.block(null,s):i.nop())},r.compileVisitMembers=function(e){var r,t,o,c,_,h,d=e.program,y=e.module,m=d.options.usizeType,f=m.toNativeType(),T=m.byteSize,g=e.ensureFunctionType([m,l.Type.i32],l.Type.void),E=d.managedClasses,v=assert(d.visitInstance),b=new Array,I=u.Relooper.create(y),x=I.addBlockWithSwitch(y.nop(),y.load(T,!1,f==u.NativeType.I64?y.binary(u.BinaryOp.SubI64,y.local_get(0,f),y.i64(8)):y.binary(u.BinaryOp.SubI32,y.local_get(0,f),y.i32(8)),u.NativeType.I32,0)),A=0;try{for(var N=n(E),S=N.next();!S.done;S=N.next()){var O=i(S.value,2),C=O[0],k=O[1];assert(k.type.isManaged),assert(C==A++);var R=void 0,L=new Array;if(k.isDeclaredInLibrary&&(R=k.lookupInSelf("__visit_impl"))){assert(R.kind==p.ElementKind.FUNCTION_PROTOTYPE);var F=d.resolver.resolveFunction(R,null);if(F&&e.compileFunction(F)){var D=F.signature;assert(1==D.parameterTypes.length&&D.parameterTypes[0]==l.Type.u32&&D.returnType==l.Type.void&&D.thisType==k.type),L.push(y.call(F.internalName,[y.local_get(0,f),y.local_get(1,u.NativeType.I32)],u.NativeType.None))}else L.push(y.unreachable())}else{var B=k.members;if(B)try{for(var P=(o=void 0,n(B.values())),w=P.next();!w.done;w=P.next()){var U=w.value;if(U.kind==p.ElementKind.FIELD)if(U.parent===k)if(U.type.isManaged){var M=U.memoryOffset;assert(M>=0),L.push(y.if(y.local_tee(2,y.load(T,!1,y.local_get(0,f),f,M)),y.call(v.internalName,[y.local_get(2,f),y.local_get(1,u.NativeType.I32)],u.NativeType.None)))}}}catch(e){o={error:e}}finally{try{w&&!w.done&&(c=P.return)&&c.call(P)}finally{if(o)throw o.error}}}k.base||L.push(y.return());var V=I.addBlock(s.flatten(y,L,u.NativeType.None));I.addBranchForSwitch(x,V,[C]),b.push(V)}}catch(e){r={error:e}}finally{try{S&&!S.done&&(t=N.return)&&t.call(N)}finally{if(r)throw r.error}}try{for(var G=n(E),K=G.next();!K.done;K=G.next()){var z=i(K.value,2),Y=(C=z[0],(k=z[1]).base);Y&&I.addBranch(b[C],b[Y.id])}}catch(e){_={error:e}}finally{try{K&&!K.done&&(h=G.return)&&h.call(G)}finally{if(_)throw _.error}}b.push(I.addBlock(y.unreachable())),I.addBranchForSwitch(x,b[b.length-1],[]),e.compileFunction(v),y.addFunction(a.visit_members,g,[f],I.renderAndDispose(x,2))},r.compileRTTI=function(e){var r,t,s=e.program,o=e.module,c=s.managedClasses,l=c.size,p=4+8*l,_=new Uint8Array(p);y.writeI32(l,_,0);var h=4,d=s.arrayBufferViewInstance,m=d.prototype,f=s.arrayPrototype,T=s.setPrototype,E=s.mapPrototype,v=0;try{for(var b=n(c),I=b.next();!I.done;I=b.next()){var x=i(I.value,2),A=x[0],N=x[1];assert(A==v++);var S=0;if(N.isAcyclic&&(S|=16),N!==d&&N.extends(m)){var O=N.getArrayValueType();S|=1,N.extends(f)&&(S|=2),S|=32*g(O)}else if(N.extends(T)){var C=assert(N.getTypeArgumentsTo(T));assert(1==C.length),S|=4,S|=32*g(C[0])}else if(N.extends(E)){C=assert(N.getTypeArgumentsTo(E));assert(2==C.length),S|=8,S|=16384*g(C[0]),S|=32*g(C[1])}y.writeI32(S,_,h),h+=4,N.rttiFlags=S;var k=N.base;y.writeI32(k?k.id:0,_,h),h+=4}}catch(e){r={error:e}}finally{try{I&&!I.done&&(t=b.return)&&t.call(b)}finally{if(r)throw r.error}}assert(h==p);var R=s.options.usizeType,L=e.addMemorySegment(_);if(8==R.size){var F=L.offset;o.addGlobal(a.rtti_base,u.NativeType.I64,!1,o.i64(i64_low(F),i64_high(F)))}else o.addGlobal(a.rtti_base,u.NativeType.I32,!1,o.i32(i64_low(L.offset)))}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=t(5),i=function(){function e(){this.text=[],this.functionId=0}return e.decompile=function(r){var t=new e;return t.decompile(r),t.finish()},e.prototype.decompile=function(e){throw new Error("not implemented")},e.prototype.decompileFunction=function(e){var r=n.getFunctionName(e)||"$"+this.functionId.toString(10),t=n.getFunctionBody(e);this.push("function "),this.push(r),this.push("(");for(var i=0,s=n.getFunctionParamCount(e);i0&&this.push(", "),this.push("$"),this.push(i.toString(10)),this.push(": "),this.push(a(n.getFunctionParamType(e,i)));this.push("): "),this.push(a(n.getFunctionResultType(e))),this.push(" "),n.getExpressionId(t)!=n.ExpressionId.Block&&this.push("{\n"),this.decompileExpression(t),n.getExpressionId(t)!=n.ExpressionId.Block&&this.push("\n}\n"),++this.functionId},e.prototype.decompileExpression=function(e){var r,t,i,s,o=n.getExpressionId(e),c=n.getExpressionType(e);switch(o){case n.ExpressionId.Block:for(null!=(t=n.getBlockName(e))&&(this.push(t),this.push(": ")),this.push("{\n"),s=n.getBlockChildCount(e),i=0;i("),this.push(n.getLoadOffset(e).toString(10)),this.push(" + "),this.decompileExpression(n.getLoadPtr(e)),void this.push(")");case n.ExpressionId.Store:return this.push("store<"),this.push(a(c)),this.push(">("),this.push(n.getStoreOffset(e).toString(10)),this.push(" + "),this.decompileExpression(n.getStorePtr(e)),this.push(", "),this.decompileExpression(n.getStoreValue(e)),void this.push(")");case n.ExpressionId.Const:switch(c){case n.NativeType.I32:return void this.push(n.getConstValueI32(e).toString(10));case n.NativeType.I64:return void this.push(i64_to_string(i64_new(n.getConstValueI64Low(e),n.getConstValueI64High(e))));case n.NativeType.F32:return void this.push(n.getConstValueF32(e).toString(10));case n.NativeType.F64:return void this.push(n.getConstValueF64(e).toString(10))}break;case n.ExpressionId.Unary:switch(n.getUnaryOp(e)){case n.UnaryOp.ClzI32:return this.push("clz("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.CtzI32:return this.push("ctz("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.PopcntI32:return this.push("popcnt("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.NegF32:case n.UnaryOp.NegF64:return this.push("-"),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.AbsF32:return this.push("abs("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.CeilF32:return this.push("ceil("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.FloorF32:return this.push("floor("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.TruncF32:return this.push("trunc("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.NearestF32:return this.push("nearest("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.SqrtF32:return this.push("sqrt("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.EqzI32:case n.UnaryOp.EqzI64:return this.push("!"),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ClzI64:return this.push("clz("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.CtzI64:return this.push("ctz("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.PopcntI64:return this.push("popcnt("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.AbsF64:return this.push("abs("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.CeilF64:return this.push("ceil("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.FloorF64:return this.push("floor("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.TruncF64:return this.push("trunc("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.NearestF64:return this.push("nearest("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.SqrtF64:return this.push("sqrt("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.ExtendI32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ExtendU32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.WrapI64:case n.UnaryOp.TruncF32ToI32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF32ToI64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF32ToU32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF32ToU64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF64ToI32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF64ToI64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF64ToU32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.TruncF64ToU64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ReinterpretF32:return this.push("reinterpret("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.ReinterpretF64:return this.push("reinterpret("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.ConvertI32ToF32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertI32ToF64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertU32ToF32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertU32ToF64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertI64ToF32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertI64ToF64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertU64ToF32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ConvertU64ToF64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.PromoteF32:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.DemoteF64:return this.push(""),void this.decompileExpression(n.getUnaryValue(e));case n.UnaryOp.ReinterpretI32:return this.push("reinterpret("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")");case n.UnaryOp.ReinterpretI64:return this.push("reinterpret("),this.decompileExpression(n.getUnaryValue(e)),void this.push(")")}break;case n.ExpressionId.Binary:switch(n.getBinaryOp(e)){case n.BinaryOp.AddI32:case n.BinaryOp.AddI64:case n.BinaryOp.AddF32:case n.BinaryOp.AddF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" + "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.SubI32:case n.BinaryOp.SubI64:case n.BinaryOp.SubF32:case n.BinaryOp.SubF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" - "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.MulI32:case n.BinaryOp.MulI64:case n.BinaryOp.MulF32:case n.BinaryOp.MulF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" * "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.DivI32:case n.BinaryOp.DivI64:case n.BinaryOp.DivF32:case n.BinaryOp.DivF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" / "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.DivU32:return this.push("("),this.decompileExpression(n.getBinaryLeft(e)),this.push(" / "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.RemI32:case n.BinaryOp.RemI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" % "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.RemU32:return this.push("("),this.decompileExpression(n.getBinaryLeft(e)),this.push(" / "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.AndI32:case n.BinaryOp.AndI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" & "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.OrI32:case n.BinaryOp.OrI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" | "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.XorI32:case n.BinaryOp.XorI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" ^ "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.ShlI32:case n.BinaryOp.ShlI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" << "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.ShrU32:case n.BinaryOp.ShrU64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" >>> "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.ShrI32:case n.BinaryOp.ShrI64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" >> "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.RotlI32:return this.push("rotl("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.RotrI32:return this.push("rotr("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.EqI32:case n.BinaryOp.EqI64:case n.BinaryOp.EqF32:case n.BinaryOp.EqF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" == "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.NeI32:case n.BinaryOp.NeI64:case n.BinaryOp.NeF32:case n.BinaryOp.NeF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" != "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.LtI32:case n.BinaryOp.LtI64:case n.BinaryOp.LtF32:case n.BinaryOp.LtF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" < "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.LtU32:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" < "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.LeI32:case n.BinaryOp.LeI64:case n.BinaryOp.LeF32:case n.BinaryOp.LeF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" <= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.LeU32:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" <= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GtI32:case n.BinaryOp.GtI64:case n.BinaryOp.GtF32:case n.BinaryOp.GtF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" > "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GtU32:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" > "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GeI32:case n.BinaryOp.GeI64:case n.BinaryOp.GeF32:case n.BinaryOp.GeF64:return this.decompileExpression(n.getBinaryLeft(e)),this.push(" >= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GeU32:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" >= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.DivU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" / "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.RemU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" % "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.RotlI64:return this.push("rotl("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.RotrI64:return this.push("rotr("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.LtU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" < "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.LeU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" <= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GtU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" > "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.GeU64:return this.push(""),this.decompileExpression(n.getBinaryLeft(e)),this.push(" >= "),void this.decompileExpression(n.getBinaryRight(e));case n.BinaryOp.CopysignF32:return this.push("copysign("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.MinF32:return this.push("min("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.MaxF32:return this.push("max("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.CopysignF64:return this.push("copysign("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.MinF64:return this.push("min("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")");case n.BinaryOp.MaxF64:return this.push("max("),this.decompileExpression(n.getBinaryLeft(e)),this.push(", "),this.decompileExpression(n.getBinaryRight(e)),void this.push(")")}return;case n.ExpressionId.Select:return this.push("select<"),this.push(a(c)),this.push(">("),this.decompileExpression(n.getSelectThen(e)),this.push(", "),this.decompileExpression(n.getSelectElse(e)),this.push(", "),this.decompileExpression(n.getSelectCondition(e)),void this.push(")");case n.ExpressionId.Drop:return this.decompileExpression(n.getDropValue(e)),void this.push(";\n");case n.ExpressionId.Return:return void((r=n.getReturnValue(e))?(this.push("return "),this.decompileExpression(r),this.push(";\n")):this.push("return;\n"));case n.ExpressionId.Host:switch(n.getHostOp(e)){case n.HostOp.MemorySize:return void this.push("memory.size()");case n.HostOp.MemoryGrow:return this.push("memory.grow("),this.decompileExpression(n.getHostOperand(e,0)),void this.push(")")}break;case n.ExpressionId.Nop:return void this.push(";\n");case n.ExpressionId.Unreachable:return void this.push("unreachable()");case n.ExpressionId.AtomicCmpxchg:case n.ExpressionId.AtomicRMW:case n.ExpressionId.AtomicWait:case n.ExpressionId.AtomicNotify:}throw new Error("not implemented")},e.prototype.push=function(e){this.text.push(e)},e.prototype.finish=function(){var e=this.text.join("");return this.text=[],e},e}();function a(e){switch(e){case n.NativeType.None:return"void";case n.NativeType.I32:return"i32";case n.NativeType.I64:return"i64";case n.NativeType.F32:return"f32";case n.NativeType.F64:return"f64";case n.NativeType.V128:return"v128";case n.NativeType.Unreachable:throw new Error("unreachable type");case n.NativeType.Auto:throw new Error("auto type");default:throw new Error("unexpected type")}}r.Decompiler=i},function(e,r,t){"use strict";var n,i=this&&this.__extends||(n=function(e,r){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t])})(e,r)},function(e,r){function t(){this.constructor=e}n(e,r),e.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)}),a=this&&this.__values||function(e){var r="function"==typeof Symbol&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},s=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0});var o=t(0),c=t(4),l=t(3),u=t(1),p=function(){function e(e,r){void 0===r&&(r=!1),this.seen=new Map,this.program=e,this.includePrivate}return e.prototype.walk=function(){var e,r;try{for(var t=a(this.program.filesByName.values()),n=t.next();!n.done;n=t.next()){var i=n.value;i.source.sourceKind==l.SourceKind.USER_ENTRY&&this.visitFile(i)}}catch(r){e={error:r}}finally{try{n&&!n.done&&(r=t.return)&&r.call(t)}finally{if(e)throw e.error}}},e.prototype.visitFile=function(e){var r,t,n,i,o=e.exports;if(o)try{for(var c=a(o),l=c.next();!l.done;l=c.next()){var u=s(l.value,2),p=u[0],_=u[1];this.visitElement(p,_)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(t=c.return)&&t.call(c)}finally{if(r)throw r.error}}var h=e.exportsStar;if(h)try{for(var d=a(h),y=d.next();!y.done;y=d.next()){var m=y.value;this.visitFile(m)}}catch(e){n={error:e}}finally{try{y&&!y.done&&(i=d.return)&&i.call(d)}finally{if(n)throw n.error}}},e.prototype.visitElement=function(e,r){if(!r.is(o.CommonFlags.PRIVATE)||this.includePrivate){var t=this.seen;if(t.has(r))this.visitAlias(e,r,t.get(r));else switch(t.set(r,e),r.kind){case c.ElementKind.GLOBAL:r.is(o.CommonFlags.COMPILED)&&this.visitGlobal(e,r);break;case c.ElementKind.ENUM:r.is(o.CommonFlags.COMPILED)&&this.visitEnum(e,r);break;case c.ElementKind.FUNCTION_PROTOTYPE:this.visitFunctionInstances(e,r);break;case c.ElementKind.CLASS_PROTOTYPE:this.visitClassInstances(e,r);break;case c.ElementKind.FIELD:r.is(o.CommonFlags.COMPILED)&&this.visitField(e,r);break;case c.ElementKind.PROPERTY_PROTOTYPE:this.visitPropertyInstances(e,r);break;case c.ElementKind.PROPERTY:var n=r,i=n.getterInstance;i&&this.visitFunction(e,i);var s=n.setterInstance;s&&this.visitFunction(e,s);break;case c.ElementKind.NAMESPACE:(function e(r){var t,n,i,s,l,u;var p=r.members;if(p)try{for(var _=a(p.values()),h=_.next();!h.done;h=_.next()){var d=h.value;switch(d.kind){case c.ElementKind.FUNCTION_PROTOTYPE:var y=d.instances;if(y)try{for(var m=(i=void 0,a(y.values())),f=m.next();!f.done;f=m.next()){var T=f.value;if(T.is(o.CommonFlags.COMPILED))return!0}}catch(e){i={error:e}}finally{try{f&&!f.done&&(s=m.return)&&s.call(m)}finally{if(i)throw i.error}}break;case c.ElementKind.CLASS_PROTOTYPE:var y=d.instances;if(y)try{for(var g=(l=void 0,a(y.values())),E=g.next();!E.done;E=g.next()){var T=E.value;if(T.is(o.CommonFlags.COMPILED))return!0}}catch(e){l={error:e}}finally{try{E&&!E.done&&(u=g.return)&&u.call(g)}finally{if(l)throw l.error}}break;default:if(d.is(o.CommonFlags.COMPILED)||e(d))return!0}}}catch(e){t={error:e}}finally{try{h&&!h.done&&(n=_.return)&&n.call(_)}finally{if(t)throw t.error}}return!1})(r)&&this.visitNamespace(e,r);break;case c.ElementKind.TYPEDEFINITION:break;default:assert(!1)}}},e.prototype.visitFunctionInstances=function(e,r){var t,n,i=r.instances;if(i)try{for(var s=a(i.values()),c=s.next();!c.done;c=s.next()){var l=c.value;l.is(o.CommonFlags.COMPILED)&&this.visitFunction(e,l)}}catch(e){t={error:e}}finally{try{c&&!c.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}},e.prototype.visitClassInstances=function(e,r){var t,n,i=r.instances;if(i)try{for(var s=a(i.values()),c=s.next();!c.done;c=s.next()){var l=c.value;l.is(o.CommonFlags.COMPILED)&&this.visitClass(e,l)}}catch(e){t={error:e}}finally{try{c&&!c.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}},e.prototype.visitPropertyInstances=function(e,r){assert(!1)},e}(),_=function(e){function r(r,t){void 0===t&&(t=!1);var n=e.call(this,r,t)||this;return n.sb=[],n.indentLevel=0,n}return i(r,e),r.build=function(e){return new r(e).build()},r.prototype.visitGlobal=function(e,r){var t=this.sb,n=r.is(o.CommonFlags.INLINED);if(u.indent(t,this.indentLevel),n&&t.push("const "),t.push(this.typeToString(r.type)),t.push(" "),t.push(e),n)switch(r.constantValueKind){case 1:t.push(" = "),t.push(i64_to_string(r.constantIntegerValue));break;case 2:t.push(" = "),t.push(r.constantFloatValue.toString());break;default:assert(!1)}t.push(";\n")},r.prototype.visitEnum=function(e,r){var t,n,i,l,p=this.sb;u.indent(p,this.indentLevel++),p.push("interface "),p.push(e),p.push(" {\n");var _=r.members;if(_){try{for(var h=a(_),d=h.next();!d.done;d=h.next()){var y=s(d.value,2),m=y[0];if((E=y[1]).kind==c.ElementKind.ENUMVALUE){var f=E.is(o.CommonFlags.INLINED);u.indent(p,this.indentLevel),f?p.push("const "):p.push("readonly "),p.push("unsigned long "),p.push(m),f&&(p.push(" = "),assert(1==E.constantValueKind),p.push(i64_low(E.constantIntegerValue).toString(10))),p.push(";\n")}}}catch(e){t={error:e}}finally{try{d&&!d.done&&(n=h.return)&&n.call(h)}finally{if(t)throw t.error}}try{for(var T=a(_.values()),g=T.next();!g.done;g=T.next()){var E;(E=g.value).kind!=c.ElementKind.ENUMVALUE&&this.visitElement(E.name,E)}}catch(e){i={error:e}}finally{try{g&&!g.done&&(l=T.return)&&l.call(T)}finally{if(i)throw i.error}}}u.indent(p,--this.indentLevel),p.push("}\n")},r.prototype.visitFunction=function(e,r){var t,n,i=this.sb,s=r.signature;u.indent(i,this.indentLevel),i.push(this.typeToString(s.returnType)),i.push(" "),i.push(e),i.push("(");for(var o=s.parameterTypes,c=o.length,l=0;l"),null}for(;e.skip(o.Token.BAR);){if(!e.skip(o.Token.NULL))return t||this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"null"),null;y=!0}n=u.Node.createNamedType(_,d||[],y,e.range(a,e.pos))}for(;e.skip(o.Token.OPENBRACKET);){var T=e.tokenPos;if(!e.skip(o.Token.CLOSEBRACKET))return t||this.error(c.DiagnosticCode._0_expected,e.range(),"]"),null;var g=e.range(T,e.pos);y=!1;if(e.skip(o.Token.BAR)){if(!e.skip(o.Token.NULL))return t||this.error(c.DiagnosticCode._0_expected,e.range(),"null"),null;y=!0}if(n=u.Node.createNamedType(u.Node.createSimpleTypeName("Array",g),[n],y,e.range(a,e.pos)),y)break}return n},r.prototype.tryParseFunctionType=function(e){var r,t=e.mark(),n=e.tokenPos,i=null,a=null,s=!1;if(e.skip(o.Token.CLOSEPAREN))s=!0,e.discard(t),i=[];else{s=!1;do{var l=u.ParameterKind.DEFAULT;if(e.skip(o.Token.DOT_DOT_DOT)&&(s=!0,e.discard(t),l=u.ParameterKind.REST),e.skip(o.Token.THIS)){if(!e.skip(o.Token.COLON))return e.reset(t),this.tryParseSignatureIsSignature=!1,null;s=!0,e.discard(t);var p=this.parseType(e,!1);if(!p)return null;if(p.kind!=u.NodeKind.NAMEDTYPE)return this.error(c.DiagnosticCode.Operation_not_supported,p.range),this.tryParseSignatureIsSignature=!0,null;a=p}else{if(!e.skipIdentifier())return s?this.error(c.DiagnosticCode.Identifier_expected,e.range()):e.reset(t),this.tryParseSignatureIsSignature=s,null;var _=u.Node.createIdentifierExpression(e.readIdentifier(),e.range(e.tokenPos,e.pos));if(e.skip(o.Token.QUESTION)&&(s=!0,e.discard(t),l==u.ParameterKind.REST?this.error(c.DiagnosticCode.A_rest_parameter_cannot_be_optional,e.range()):l=u.ParameterKind.OPTIONAL),e.skip(o.Token.COLON)){s=!0,e.discard(t);var h=this.parseType(e);if(!h)return this.tryParseSignatureIsSignature=s,null;var d=new u.ParameterNode;d.parameterKind=l,d.name=_,d.type=h,i?i.push(d):i=[d]}else s&&this.error(c.DiagnosticCode.Type_expected,e.range())}}while(e.skip(o.Token.COMMA));if(!e.skip(o.Token.CLOSEPAREN))return s?this.error(c.DiagnosticCode._0_expected,e.range(),")"):e.reset(t),this.tryParseSignatureIsSignature=s,null}return e.skip(o.Token.EQUALS_GREATERTHAN)?(s=!0,e.discard(t),(r=this.parseType(e))?(this.tryParseSignatureIsSignature=!0,u.Node.createFunctionType(i||[],r,a,!1,e.range(n,e.pos))):(this.tryParseSignatureIsSignature=s,null)):(s?this.error(c.DiagnosticCode._0_expected,e.range(),"=>"):e.reset(t),this.tryParseSignatureIsSignature=s,null)},r.prototype.parseDecorator=function(e){var r=e.tokenPos;if(e.skipIdentifier()){for(var t=e.readIdentifier(),n=u.Node.createIdentifierExpression(t,e.range(r,e.pos));e.skip(o.Token.DOT);){if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;t=e.readIdentifier(),n=u.Node.createPropertyAccessExpression(n,u.Node.createIdentifierExpression(t,e.range()),e.range(r,e.pos))}var i=void 0;if(!e.skip(o.Token.OPENPAREN))return u.Node.createDecorator(n,null,e.range(r,e.pos));if(i=this.parseArguments(e))return u.Node.createDecorator(n,i,e.range(r,e.pos))}else this.error(c.DiagnosticCode.Identifier_expected,e.range());return null},r.prototype.parseVariable=function(e,r,t,n){var i=new Array;do{var a=this.parseVariableDeclaration(e,r,t);if(!a)return null;i.push(a)}while(e.skip(o.Token.COMMA));var s=u.Node.createVariableStatement(i,t,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),s},r.prototype.parseVariableDeclaration=function(e,r,t){if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;var n=u.Node.createIdentifierExpression(e.readIdentifier(),e.range());o.isIllegalVariableIdentifier(n.text)&&this.error(c.DiagnosticCode.Identifier_expected,n.range);var i=r;e.skip(o.Token.EXCLAMATION)&&(i|=a.CommonFlags.DEFINITE_ASSIGNMENT);var s=null;e.skip(o.Token.COLON)&&(s=this.parseType(e));var l=null;if(e.skip(o.Token.EQUALS)){if(i&a.CommonFlags.AMBIENT&&this.error(c.DiagnosticCode.Initializers_are_not_allowed_in_ambient_contexts,e.range()),!(l=this.parseExpression(e,2)))return null}else i&a.CommonFlags.CONST?i&a.CommonFlags.AMBIENT||this.error(c.DiagnosticCode._const_declarations_must_be_initialized,n.range):s||this.error(c.DiagnosticCode.Type_expected,e.range(e.pos));var p=o.Range.join(n.range,e.range());return i&a.CommonFlags.DEFINITE_ASSIGNMENT&&l&&this.error(c.DiagnosticCode.A_definite_assignment_assertion_is_not_permitted_in_this_context,p),u.Node.createVariableDeclaration(n,s,l,t,i,p)},r.prototype.parseEnum=function(e,r,t,n){if(e.next()!=o.Token.IDENTIFIER)return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;var i=u.Node.createIdentifierExpression(e.readIdentifier(),e.range());if(e.next()!=o.Token.OPENBRACE)return this.error(c.DiagnosticCode._0_expected,e.range(),"{"),null;for(var s=new Array;!e.skip(o.Token.CLOSEBRACE);){var l=this.parseEnumValue(e,a.CommonFlags.NONE);if(!l)return null;if(s.push(l),!e.skip(o.Token.COMMA)){if(e.skip(o.Token.CLOSEBRACE))break;return this.error(c.DiagnosticCode._0_expected,e.range(),"}"),null}}var p=u.Node.createEnumDeclaration(i,s,t,r,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),p},r.prototype.parseEnumValue=function(e,r){if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;var t=u.Node.createIdentifierExpression(e.readIdentifier(),e.range()),n=null;return e.skip(o.Token.EQUALS)&&!(n=this.parseExpression(e,2))?null:u.Node.createEnumValueDeclaration(t,n,r,o.Range.join(t.range,e.range()))},r.prototype.parseReturn=function(e){var r=null;if(e.peek(!0)!=o.Token.SEMICOLON&&e.nextToken!=o.Token.CLOSEBRACE&&!e.nextTokenOnNewLine&&!(r=this.parseExpression(e)))return null;var t=u.Node.createReturnStatement(r,e.range());return e.skip(o.Token.SEMICOLON),t},r.prototype.parseTypeParameters=function(e){for(var r=null,t=!1;!e.skip(o.Token.GREATERTHAN);){var n=this.parseTypeParameter(e);if(!n)return null;if(null!==n.defaultType?t=!0:t&&(this.error(c.DiagnosticCode.Required_type_parameters_may_not_follow_optional_type_parameters,n.range),n.defaultType=null),r?r.push(n):r=[n],!e.skip(o.Token.COMMA)){if(e.skip(o.Token.GREATERTHAN))break;return this.error(c.DiagnosticCode._0_expected,e.range(),">"),null}}return r&&r.length||this.error(c.DiagnosticCode.Type_parameter_list_cannot_be_empty,e.range()),r},r.prototype.parseTypeParameter=function(e){if(e.next()==o.Token.IDENTIFIER){var r=u.Node.createIdentifierExpression(e.readIdentifier(),e.range()),t=null;if(e.skip(o.Token.EXTENDS)){if(!(i=this.parseType(e)))return null;if(i.kind!=u.NodeKind.NAMEDTYPE)return this.error(c.DiagnosticCode.Operation_not_supported,i.range),null;t=i}var n=null;if(e.skip(o.Token.EQUALS)){var i;if(!(i=this.parseType(e)))return null;if(i.kind!=u.NodeKind.NAMEDTYPE)return this.error(c.DiagnosticCode.Operation_not_supported,i.range),null;n=i}return u.Node.createTypeParameter(r,t,n,o.Range.join(r.range,e.range()))}return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null},r.prototype.parseParameters=function(e,r){void 0===r&&(r=!1);var t=new Array,n=null,i=!1,a=!1,s=null;if(this.parseParametersThis=null,e.skip(o.Token.THIS)){if(!e.skip(o.Token.COLON))return this.error(c.DiagnosticCode._0_expected,e.range(),":"),null;if(!(s=this.parseType(e)))return null;if(s.kind==u.NodeKind.NAMEDTYPE?this.parseParametersThis=s:this.error(c.DiagnosticCode.Operation_not_supported,s.range),!e.skip(o.Token.COMMA))return e.skip(o.Token.CLOSEPAREN)?t:(this.error(c.DiagnosticCode._0_expected,e.range(),")"),null)}for(;!e.skip(o.Token.CLOSEPAREN);){var l=this.parseParameter(e,r);if(!l)return null;switch(n&&!a&&(this.error(c.DiagnosticCode.A_rest_parameter_must_be_last_in_a_parameter_list,n.name.range),a=!0),l.parameterKind){default:i&&this.error(c.DiagnosticCode.A_required_parameter_cannot_follow_an_optional_parameter,l.name.range);break;case u.ParameterKind.OPTIONAL:i=!0;break;case u.ParameterKind.REST:n=l}if(t.push(l),!e.skip(o.Token.COMMA)){if(e.skip(o.Token.CLOSEPAREN))break;return this.error(c.DiagnosticCode._0_expected,e.range(),")"),null}}return t},r.prototype.parseParameter=function(e,r){void 0===r&&(r=!1);var t=!1,n=!1,i=null,s=a.CommonFlags.NONE;if(r&&(e.skip(o.Token.PUBLIC)?(i=e.range(),s|=a.CommonFlags.PUBLIC):e.skip(o.Token.PROTECTED)?(i=e.range(),s|=a.CommonFlags.PROTECTED):e.skip(o.Token.PRIVATE)&&(i=e.range(),s|=a.CommonFlags.PRIVATE),e.peek()==o.Token.READONLY)){var l=e.mark();e.next(),e.peek()!=o.Token.COLON?(e.discard(l),i||(i=e.range()),s|=a.CommonFlags.READONLY):e.reset(l)}if(e.skip(o.Token.DOT_DOT_DOT)&&(s?this.error(c.DiagnosticCode.A_parameter_property_cannot_be_declared_using_a_rest_parameter,e.range()):i=e.range(),t=!0),e.skipIdentifier()){t||(i=e.range());var p=u.Node.createIdentifierExpression(e.readIdentifier(),e.range()),_=null;if((n=e.skip(o.Token.QUESTION))&&t&&this.error(c.DiagnosticCode.A_rest_parameter_cannot_be_optional,p.range),e.skip(o.Token.COLON)){if(!(_=this.parseType(e)))return null}else _=u.Node.createOmittedType(e.range(e.pos));var h=null;if(e.skip(o.Token.EQUALS)&&(t&&this.error(c.DiagnosticCode.A_rest_parameter_cannot_have_an_initializer,p.range),n?this.error(c.DiagnosticCode.Parameter_cannot_have_question_mark_and_initializer,p.range):n=!0,!(h=this.parseExpression(e,2))))return null;var d=u.Node.createParameter(p,_,h,t?u.ParameterKind.REST:n?u.ParameterKind.OPTIONAL:u.ParameterKind.DEFAULT,o.Range.join(i,e.range()));return d.flags|=s,d}return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null},r.prototype.parseFunction=function(e,r,t,n){if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range(e.pos)),null;var i=u.Node.createIdentifierExpression(e.readIdentifier(),e.range()),s=-1,l=null;if(e.skip(o.Token.LESSTHAN)){if(s=e.tokenPos,!(l=this.parseTypeParameters(e)))return null;r|=a.CommonFlags.GENERIC}if(!e.skip(o.Token.OPENPAREN))return this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"("),null;s<0&&(s=e.tokenPos);var p=this.parseParameters(e);if(!p)return null;var _=this.parseParametersThis,h=0!=(r&a.CommonFlags.SET);h&&(1!=p.length&&this.error(c.DiagnosticCode.A_set_accessor_must_have_exactly_one_parameter,i.range),p.length&&p[0].initializer&&this.error(c.DiagnosticCode.A_set_accessor_parameter_cannot_have_an_initializer,i.range)),r&a.CommonFlags.GET&&p.length&&this.error(c.DiagnosticCode.A_get_accessor_cannot_have_parameters,i.range);var d=null;if(e.skip(o.Token.COLON)&&!(d=this.parseType(e,!0,h)))return null;d||(d=u.Node.createOmittedType(e.range(e.pos)),h||this.error(c.DiagnosticCode.Type_expected,d.range));var y=u.Node.createFunctionType(p,d,_,!1,e.range(s,e.pos)),m=null;if(e.skip(o.Token.OPENBRACE)){if(r&a.CommonFlags.AMBIENT&&this.error(c.DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,e.range()),!(m=this.parseBlockStatement(e,!1)))return null}else r&a.CommonFlags.AMBIENT||this.error(c.DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,e.range(e.pos));var f=u.Node.createFunctionDeclaration(i,l,y,m,t,r,0,e.range(n,e.pos));return e.skip(o.Token.SEMICOLON),f},r.prototype.parseFunctionExpression=function(e){var r,t=e.tokenPos,n=0;if(e.token==o.Token.FUNCTION){if(r=e.skipIdentifier()?u.Node.createIdentifierExpression(e.readIdentifier(),e.range()):u.Node.createEmptyIdentifierExpression(e.range(e.pos)),!e.skip(o.Token.OPENPAREN))return this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"("),null}else n=1,assert(e.token==o.Token.OPENPAREN),r=u.Node.createEmptyIdentifierExpression(e.range(e.tokenPos));var i=e.pos,a=this.parseParameters(e);return a?this.parseFunctionExpressionCommon(e,r,a,n,t,i):null},r.prototype.parseFunctionExpressionCommon=function(e,r,t,n,i,s){void 0===i&&(i=-1),void 0===s&&(s=-1),i<0&&(i=r.range.start),s<0&&(s=i);var l=null;if(2!=n&&e.skip(o.Token.COLON)){if(!(l=this.parseType(e)))return null}else l=u.Node.createOmittedType(e.range(e.pos));if(n&&!e.skip(o.Token.EQUALS_GREATERTHAN))return this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"=>"),null;var p=u.Node.createFunctionType(t,l,null,!1,e.range(s,e.pos)),_=null;if(n)if(e.skip(o.Token.OPENBRACE))_=this.parseBlockStatement(e,!1);else{var h=this.parseExpression(e,2);h&&(_=u.Node.createExpressionStatement(h))}else{if(!e.skip(o.Token.OPENBRACE))return this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"{"),null;_=this.parseBlockStatement(e,!1)}if(!_)return null;var d=u.Node.createFunctionDeclaration(r,null,p,_,null,a.CommonFlags.NONE,n,e.range(i,e.pos));return u.Node.createFunctionExpression(d)},r.prototype.parseClassOrInterface=function(e,r,t,n){var i=e.token==o.Token.INTERFACE;if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;var s=u.Node.createIdentifierExpression(e.readIdentifier(),e.range()),l=null;if(e.skip(o.Token.LESSTHAN)){if(!(l=this.parseTypeParameters(e)))return null;r|=a.CommonFlags.GENERIC}var p=null;if(e.skip(o.Token.EXTENDS)){var _=this.parseType(e);if(!_)return null;if(_.kind!=u.NodeKind.NAMEDTYPE)return this.error(c.DiagnosticCode.Operation_not_supported,_.range),null;p=_}var h=null;if(e.skip(o.Token.IMPLEMENTS)){i&&this.error(c.DiagnosticCode.Interface_declaration_cannot_have_implements_clause,e.range());do{var d=this.parseType(e);if(!d)return null;i||(h?h.push(d):h=[d])}while(e.skip(o.Token.COMMA))}if(!e.skip(o.Token.OPENBRACE))return this.error(c.DiagnosticCode._0_expected,e.range(),"{"),null;var y,m=new Array;if(i?(assert(!h),y=u.Node.createInterfaceDeclaration(s,l,p,m,t,r,e.range(n,e.pos))):y=u.Node.createClassDeclaration(s,l,p,h,m,t,r,e.range(n,e.pos)),!e.skip(o.Token.CLOSEBRACE))do{var f=this.parseClassMember(e,y);if(f)m.push(f);else if(this.skipStatement(e),e.skip(o.Token.ENDOFFILE))return this.error(c.DiagnosticCode._0_expected,e.range(),"}"),null}while(!e.skip(o.Token.CLOSEBRACE));return y.range.end=e.pos,y},r.prototype.parseClassExpression=function(e){var r,t=e.tokenPos;if(r=e.skipIdentifier()?u.Node.createIdentifierExpression(e.readIdentifier(),e.range()):u.Node.createEmptyIdentifierExpression(e.range(e.pos)),!e.skip(o.Token.OPENBRACE))return this.error(c.DiagnosticCode._0_expected,e.range(e.pos),"{"),null;var n=new Array,i=u.Node.createClassDeclaration(r,[],null,null,n,null,a.CommonFlags.NONE,e.range(t,e.pos));if(!e.skip(o.Token.CLOSEBRACE))do{var s=this.parseClassMember(e,i);if(s)n.push(s);else if(this.skipStatement(e),e.skip(o.Token.ENDOFFILE))return this.error(c.DiagnosticCode._0_expected,e.range(),"}"),null}while(!e.skip(o.Token.CLOSEBRACE));return i.range.end=e.pos,u.Node.createClassExpression(i)},r.prototype.parseClassMember=function(e,r){var t=e.pos,n=r.kind==u.NodeKind.INTERFACEDECLARATION,i=null;if(e.skip(o.Token.AT)){do{var s=this.parseDecorator(e);if(!s)break;i?i.push(s):i=[s]}while(e.skip(o.Token.AT));i&&n&&this.error(c.DiagnosticCode.Decorators_are_not_valid_here,o.Range.join(i[0].range,i[i.length-1].range))}var l=r.flags&a.CommonFlags.AMBIENT;n&&(l|=a.CommonFlags.VIRTUAL);var p=0,_=0;e.skip(o.Token.PUBLIC)?(n&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(),"public"),l|=a.CommonFlags.PUBLIC,p=e.tokenPos,_=e.pos):e.skip(o.Token.PRIVATE)?(n&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(),"private"),l|=a.CommonFlags.PRIVATE,p=e.tokenPos,_=e.pos):e.skip(o.Token.PROTECTED)&&(n&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(),"protected"),l|=a.CommonFlags.PROTECTED,p=e.tokenPos,_=e.pos);var h=0,d=0,y=0,m=0;e.skip(o.Token.STATIC)?(n&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(),"static"),l|=a.CommonFlags.STATIC,h=e.tokenPos,d=e.pos):(l|=a.CommonFlags.INSTANCE,e.skip(o.Token.ABSTRACT)&&(n&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(),"abstract"),l|=a.CommonFlags.ABSTRACT,y=e.tokenPos,m=e.pos),r.flags&a.CommonFlags.GENERIC&&(l|=a.CommonFlags.GENERIC_CONTEXT));var f=0,T=0;if(e.peek()==o.Token.READONLY){var g=e.mark();e.next(),e.peek()!=o.Token.COLON?(e.discard(g),l|=a.CommonFlags.READONLY,f=e.tokenPos,T=e.pos):e.reset(g)}var E,v=e.mark(),b=!1,I=!1,x=!1,A=0,N=0;if(n||(e.skip(o.Token.GET)?e.peek(!0,o.IdentifierHandling.PREFER)!=o.Token.IDENTIFIER||e.nextTokenOnNewLine?e.reset(v):(l|=a.CommonFlags.GET,I=!0,A=e.tokenPos,N=e.pos,l&a.CommonFlags.READONLY&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(f,T),"readonly")):e.skip(o.Token.SET)?e.peek(!0,o.IdentifierHandling.PREFER)!=o.Token.IDENTIFIER||e.nextTokenOnNewLine?e.reset(v):(l|=a.CommonFlags.SET,x=!0,A=e.tokenPos,N=e.pos,l&a.CommonFlags.READONLY&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(f,T),"readonly")):e.skip(o.Token.CONSTRUCTOR)&&(b=!0,(l|=a.CommonFlags.CONSTRUCTOR)&a.CommonFlags.STATIC&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(h,d),"static"),l&a.CommonFlags.ABSTRACT&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(y,m),"abstract"),l&a.CommonFlags.READONLY&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(f,T),"readonly"))),b)E=u.Node.createConstructorExpression(e.range());else{if(!I&&!x&&e.skip(o.Token.OPENBRACKET)){l&a.CommonFlags.PUBLIC?this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(p,_),"public"):l&a.CommonFlags.PROTECTED?this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(p,_),"protected"):l&a.CommonFlags.PRIVATE&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(p,_),"protected"),l&a.CommonFlags.STATIC&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(h,d),"static"),l&a.CommonFlags.ABSTRACT&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(y,m),"abstract"),l&a.CommonFlags.READONLY&&this.error(c.DiagnosticCode._0_modifier_cannot_be_used_here,e.range(f,T),"readonly");var S=this.parseIndexSignatureDeclaration(e,i);return S?(e.skip(o.Token.SEMICOLON),S):null}if(!e.skipIdentifier())return this.error(c.DiagnosticCode.Identifier_expected,e.range()),null;E=u.Node.createIdentifierExpression(e.readIdentifier(),e.range())}var O=null;if(e.skip(o.Token.LESSTHAN)){var C=e.tokenPos;if(!(O=this.parseTypeParameters(e)))return null;b?this.error(c.DiagnosticCode.Type_parameters_cannot_appear_on_a_constructor_declaration,e.range(C,e.pos)):I||x?this.error(c.DiagnosticCode.An_accessor_cannot_have_type_parameters,e.range(C,e.pos)):l|=a.CommonFlags.GENERIC}if(e.skip(o.Token.OPENPAREN)){var k=e.tokenPos,R=this.parseParameters(e,b);if(!R)return null;var L=this.parseParametersThis;if(b)for(var F=0,D=R.length;F"),null):null;case o.Token.IDENTIFIER:var T=e.readIdentifier();if("null"==T)return u.Node.createNullExpression(e.range());var g=u.Node.createIdentifierExpression(T,e.range(t,e.pos));return e.peek(!0)!=o.Token.EQUALS_GREATERTHAN||e.nextTokenOnNewLine?g:this.parseFunctionExpressionCommon(e,u.Node.createEmptyIdentifierExpression(e.range(t)),[u.Node.createParameter(g,u.Node.createOmittedType(g.range.atEnd),null,u.ParameterKind.DEFAULT,g.range)],2,t);case o.Token.THIS:return u.Node.createThisExpression(e.range(t,e.pos));case o.Token.CONSTRUCTOR:return u.Node.createConstructorExpression(e.range(t,e.pos));case o.Token.SUPER:return e.peek()!=o.Token.DOT&&e.nextToken!=o.Token.OPENPAREN&&this.error(c.DiagnosticCode._super_must_be_followed_by_an_argument_list_or_member_access,e.range()),u.Node.createSuperExpression(e.range(t,e.pos));case o.Token.STRINGLITERAL:return u.Node.createStringLiteralExpression(e.readString(),e.range(t,e.pos));case o.Token.INTEGERLITERAL:return u.Node.createIntegerLiteralExpression(e.readInteger(),e.range(t,e.pos));case o.Token.FLOATLITERAL:return u.Node.createFloatLiteralExpression(e.readFloat(),e.range(t,e.pos));case o.Token.SLASH:var E=e.readRegexpPattern();return e.skip(o.Token.SLASH)?u.Node.createRegexpLiteralExpression(E,e.readRegexpFlags(),e.range(t,e.pos)):(this.error(c.DiagnosticCode._0_expected,e.range(),"/"),null);case o.Token.FUNCTION:return this.parseFunctionExpression(e);case o.Token.CLASS:return this.parseClassExpression(e);default:return r==o.Token.ENDOFFILE?this.error(c.DiagnosticCode.Unexpected_end_of_text,e.range(t)):this.error(c.DiagnosticCode.Expression_expected,e.range()),null}},r.prototype.tryParseTypeArgumentsBeforeArguments=function(e){var r=e.mark();if(!e.skip(o.Token.LESSTHAN))return null;var t=null;do{if(e.peek()===o.Token.GREATERTHAN)break;var n=this.parseType(e,!0,!0);if(!n)return e.reset(r),null;t?t.push(n):t=[n]}while(e.skip(o.Token.COMMA));return e.skip(o.Token.GREATERTHAN)&&e.skip(o.Token.OPENPAREN)?t:(e.reset(r),null)},r.prototype.parseArguments=function(e){for(var r=new Array;!e.skip(o.Token.CLOSEPAREN);){var t=this.parseExpression(e,2);if(!t)return null;if(r.push(t),!e.skip(o.Token.COMMA)){if(e.skip(o.Token.CLOSEPAREN))break;return this.error(c.DiagnosticCode._0_expected,e.range(),")"),null}}return r},r.prototype.parseExpression=function(e,r){void 0===r&&(r=1),assert(0!=r);var t=this.parseExpressionStart(e);if(!t)return null;for(var n,i,a=(t=this.maybeParseCallExpression(e,t)).range.start,s=null;(i=_(n=e.peek()))>=r;){switch(e.next(),n){case o.Token.AS:var l=this.parseType(e);if(!l)return null;t=u.Node.createAssertionExpression(u.AssertionKind.AS,t,l,e.range(a,e.pos));break;case o.Token.EXCLAMATION:t=u.Node.createAssertionExpression(u.AssertionKind.NONNULL,t,null,e.range(a,e.pos));break;case o.Token.INSTANCEOF:var p=this.parseType(e);if(!p)return null;t=u.Node.createInstanceOfExpression(t,p,e.range(a,e.pos));break;case o.Token.OPENBRACKET:if(!(s=this.parseExpression(e)))return null;if(!e.skip(o.Token.CLOSEBRACKET))return this.error(c.DiagnosticCode._0_expected,e.range(),"]"),null;t=u.Node.createElementAccessExpression(t,s,e.range(a,e.pos));break;case o.Token.PLUS_PLUS:case o.Token.MINUS_MINUS:t.kind!=u.NodeKind.IDENTIFIER&&t.kind!=u.NodeKind.ELEMENTACCESS&&t.kind!=u.NodeKind.PROPERTYACCESS&&this.error(c.DiagnosticCode.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,t.range),t=u.Node.createUnaryPostfixExpression(n,t,e.range(a,e.pos));break;case o.Token.QUESTION:var d=this.parseExpression(e);if(!d)return null;if(!e.skip(o.Token.COLON))return this.error(c.DiagnosticCode._0_expected,e.range(),":"),null;var y=this.parseExpression(e,r>1?2:1);if(!y)return null;t=u.Node.createTernaryExpression(t,d,y,e.range(a,e.pos));break;case o.Token.COMMA:var m=[t];do{if(!(t=this.parseExpression(e,2)))return null;m.push(t)}while(e.skip(o.Token.COMMA));t=u.Node.createCommaExpression(m,e.range(a,e.pos));break;default:if(n==o.Token.DOT){if(e.skipIdentifier())s=u.Node.createIdentifierExpression(e.readIdentifier(),e.range());else if(!(s=this.parseExpression(e,h(n)?i:i+1)))return null;if(s.kind==u.NodeKind.IDENTIFIER)t=u.Node.createPropertyAccessExpression(t,s,e.range(a,e.pos));else{if(s.kind!=u.NodeKind.CALL)return this.error(c.DiagnosticCode.Identifier_expected,s.range),null;if(!(t=this.joinPropertyCall(e,a,t,s)))return null}}else{if(!(s=this.parseExpression(e,h(n)?i:i+1)))return null;t=u.Node.createBinaryExpression(n,t,s,e.range(a,e.pos))}}t=this.maybeParseCallExpression(e,t)}return t},r.prototype.joinPropertyCall=function(e,r,t,n){var i=n.expression;switch(i.kind){case u.NodeKind.IDENTIFIER:n.expression=u.Node.createPropertyAccessExpression(t,i,e.range(r,e.pos));break;case u.NodeKind.CALL:var a=this.joinPropertyCall(e,r,t,i);if(!a)return null;n.expression=a,n.range=e.range(r,e.pos);break;default:return this.error(c.DiagnosticCode.Identifier_expected,n.range),null}return n},r.prototype.maybeParseCallExpression=function(e,r){if(u.nodeIsCallable(r.kind))for(var t=null;e.skip(o.Token.OPENPAREN)||u.nodeIsGenericCallable(r.kind)&&null!==(t=this.tryParseTypeArgumentsBeforeArguments(e));){var n=this.parseArguments(e);if(!n)break;r=u.Node.createCallExpression(r,t,n,e.range(r.range.start,e.pos))}return r},r.prototype.skipStatement=function(e){for(e.peek(!0),e.nextTokenOnNewLine&&e.next();;){var r=e.peek(!0);if(r==o.Token.ENDOFFILE||r==o.Token.SEMICOLON){e.next();break}if(e.nextTokenOnNewLine)break;switch(e.next()){case o.Token.IDENTIFIER:e.readIdentifier();break;case o.Token.STRINGLITERAL:e.readString();break;case o.Token.INTEGERLITERAL:e.readInteger();break;case o.Token.FLOATLITERAL:e.readFloat();break;case o.Token.OPENBRACE:this.skipBlock(e)}}},r.prototype.skipBlock=function(e){var r=1,t=!0;do{switch(e.next()){case o.Token.ENDOFFILE:this.error(c.DiagnosticCode._0_expected,e.range(),"}"),t=!1;break;case o.Token.OPENBRACE:++r;break;case o.Token.CLOSEBRACE:--r||(t=!1);break;case o.Token.IDENTIFIER:e.readIdentifier();break;case o.Token.STRINGLITERAL:e.readString();break;case o.Token.INTEGERLITERAL:e.readInteger();break;case o.Token.FLOATLITERAL:e.readFloat()}}while(t)},r}(c.DiagnosticEmitter);function _(e){switch(e){case o.Token.COMMA:return 1;case o.Token.EQUALS:case o.Token.PLUS_EQUALS:case o.Token.MINUS_EQUALS:case o.Token.ASTERISK_ASTERISK_EQUALS:case o.Token.ASTERISK_EQUALS:case o.Token.SLASH_EQUALS:case o.Token.PERCENT_EQUALS:case o.Token.LESSTHAN_LESSTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.AMPERSAND_EQUALS:case o.Token.CARET_EQUALS:case o.Token.BAR_EQUALS:return 4;case o.Token.QUESTION:return 5;case o.Token.BAR_BAR:return 6;case o.Token.AMPERSAND_AMPERSAND:return 7;case o.Token.BAR:return 8;case o.Token.CARET:return 9;case o.Token.AMPERSAND:return 10;case o.Token.EQUALS_EQUALS:case o.Token.EXCLAMATION_EQUALS:case o.Token.EQUALS_EQUALS_EQUALS:case o.Token.EXCLAMATION_EQUALS_EQUALS:return 11;case o.Token.AS:case o.Token.IN:case o.Token.INSTANCEOF:case o.Token.LESSTHAN:case o.Token.GREATERTHAN:case o.Token.LESSTHAN_EQUALS:case o.Token.GREATERTHAN_EQUALS:return 12;case o.Token.LESSTHAN_LESSTHAN:case o.Token.GREATERTHAN_GREATERTHAN:case o.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN:return 13;case o.Token.PLUS:case o.Token.MINUS:return 14;case o.Token.ASTERISK:case o.Token.SLASH:case o.Token.PERCENT:return 15;case o.Token.ASTERISK_ASTERISK:return 16;case o.Token.PLUS_PLUS:case o.Token.MINUS_MINUS:return 18;case o.Token.DOT:case o.Token.NEW:case o.Token.OPENBRACKET:case o.Token.EXCLAMATION:return 20}return 0}function h(e){switch(e){case o.Token.EQUALS:case o.Token.PLUS_EQUALS:case o.Token.MINUS_EQUALS:case o.Token.ASTERISK_ASTERISK_EQUALS:case o.Token.ASTERISK_EQUALS:case o.Token.SLASH_EQUALS:case o.Token.PERCENT_EQUALS:case o.Token.LESSTHAN_LESSTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:case o.Token.AMPERSAND_EQUALS:case o.Token.CARET_EQUALS:case o.Token.BAR_EQUALS:case o.Token.QUESTION:case o.Token.ASTERISK_ASTERISK:return!0;default:return!1}}r.Parser=p,function(e){e[e.NONE=0]="NONE",e[e.COMMA=1]="COMMA",e[e.SPREAD=2]="SPREAD",e[e.YIELD=3]="YIELD",e[e.ASSIGNMENT=4]="ASSIGNMENT",e[e.CONDITIONAL=5]="CONDITIONAL",e[e.LOGICAL_OR=6]="LOGICAL_OR",e[e.LOGICAL_AND=7]="LOGICAL_AND",e[e.BITWISE_OR=8]="BITWISE_OR",e[e.BITWISE_XOR=9]="BITWISE_XOR",e[e.BITWISE_AND=10]="BITWISE_AND",e[e.EQUALITY=11]="EQUALITY",e[e.RELATIONAL=12]="RELATIONAL",e[e.SHIFT=13]="SHIFT",e[e.ADDITIVE=14]="ADDITIVE",e[e.MULTIPLICATIVE=15]="MULTIPLICATIVE",e[e.EXPONENTIATED=16]="EXPONENTIATED",e[e.UNARY_PREFIX=17]="UNARY_PREFIX",e[e.UNARY_POSTFIX=18]="UNARY_POSTFIX",e[e.CALL=19]="CALL",e[e.MEMBERACCESS=20]="MEMBERACCESS",e[e.GROUPING=21]="GROUPING"}(r.Precedence||(r.Precedence={}))},function(e,r,t){t(18),e.exports=t(28)},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),t(19),t(21),t(22),t(23);var n=t(5);n.Module.prototype.toText=function(){return binaryen.wrapModule(this.ref).emitStackIR(!0)},n.Module.prototype.toAsmjs=function(){return binaryen.wrapModule(this.ref).emitAsmjs()}},function(e,r,t){(function(e){const r=e.Binaryen||t(20);for(var n in e.binaryen=r,r)(n.startsWith("_Binaryen")||n.startsWith("_Relooper"))&&(e[n]=r[n]);e.__memory_allocate=r._malloc,e.__memory_free=r._free,e.__memory_copy=r._memmove,e.__store=function(e,t){r.HEAPU8[e]=t},e.__load=function(e){return r.HEAPU8[e]}}).call(this,t(8))},function(r,t){r.exports=e},function(e,r,t){(function(e){var r="undefined"!=typeof window&&window||void 0!==e&&e||self;r.ASC_TARGET=2,r.ASC_NO_ASSERT=!1,r.ASC_MEMORY_BASE=0,r.ASC_OPTIMIZE_LEVEL=3,r.ASC_SHRINK_LEVEL=0,r.ASC_FEATURE_MUTABLE_GLOBAL=!1,r.ASC_FEATURE_SIGN_EXTENSION=!1,r.ASC_FEATURE_BULK_MEMORY=!1,r.ASC_FEATURE_SIMD=!1,r.ASC_FEATURE_THREADS=!1;var t=new Float64Array(1),n=new Uint32Array(t.buffer);function i(){Error.captureStackTrace?Error.captureStackTrace(this,i):this.stack=this.name+": "+this.message+"\n"+(new Error).stack}function a(e){this.message=e||"assertion failed",Error.captureStackTrace?Error.captureStackTrace(this,a):this.stack=this.name+": "+this.message+"\n"+(new Error).stack}Object.defineProperties(r.i8=function(e){return e<<24>>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(r.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(r.i32=r.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(r.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(r.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(r.u32=r.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(r.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(r.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(r.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),r.clz=Math.clz32,r.ctz=function(e){var r=Math.clz32(e&-e);return e?31-r:r},r.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},r.rotl=function(e,r){return e<<(r&=31)|e>>>32-r},r.rotr=function(e,r){return e>>>(r&=31)|e<<32-r},r.abs=Math.abs,r.max=Math.max,r.min=Math.min,r.ceil=Math.ceil,r.floor=Math.floor,r.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},r.select=function(e,r,t){return t?e:r},r.sqrt=Math.sqrt,r.trunc=Math.trunc,r.copysign=function(e,r){return Math.abs(e)*Math.sign(r)},r.bswap=function(e){var r=e>>8&16711935,t=(16711935&e)<<8;return(r=(e=r|t)>>16&65535)|(t=(65535&e)<<16)},r.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",r.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",r.assert=function(e,r){if(e)return e;throw new a(r)},r.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,r){var t=this.split(e).join(r);return e.length||(t=r+t+r),t}}),r.isInteger=Number.isInteger,r.isFloat=function(e){return"number"==typeof e},r.isNullable=function(e){return!0},r.isReference=function(e){return"object"==typeof e||"string"==typeof e},r.isFunction=function(e){return"function"==typeof e},r.isString=function(e){return"string"==typeof e||e instanceof String},r.isArray=Array.isArray,r.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var r=new Array(e);return r.length=0,r},r.isDefined=function(e){return void 0!==e},r.isConstant=function(e){return!1},r.unchecked=function(e){return e},r.fmod=function(e,r){return e%r},r.fmodf=function(e,r){return Math.fround(e%r)},r.JSMath=Math;try{Object.defineProperties(r.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}r.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:r.__memory_allocate||function(r){if(!(r>>>=0))return 0;if(t+r>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+r,2*e.length))).set(n)}var i=t;return 7&(t+=r)&&(t=1+(7|t)),i},fill:r.__memory_fill||function(r,t,n){e.fill(t,r,r+n)},free:r.__memory_free||function(e){},copy:r.__memory_copy||function(r,t,n){e.copyWithin(r,t,t+n)},reset:r.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),r.store=r.__store||function(e,r,t){HEAP[(0|e)+(0|t)]=r},r.load=r.__load||function(e,r){return HEAP[(0|e)+(0|r)]},r.unmanaged=function(){}}).call(this,t(8))},function(e,r,t){(function(e){const r=new Float64Array(1),t=new Float32Array(r.buffer),n=new Int32Array(r.buffer);e.f32_as_i32=function(e){return t[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,t[0]},e.f64_as_i64=function(e){return r[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),r[0]}}).call(this,t(8))},function(e,r,t){(function(e){const r=e.Long||t(24);e.i64_zero=r.ZERO,e.i64_one=r.ONE,e.i64_new=function(e,t){return r.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,r){return e.add(r)},e.i64_sub=function(e,r){return e.sub(r)},e.i64_mul=function(e,r){return e.mul(r)},e.i64_div=function(e,r){return e.div(r)},e.i64_div_u=function(e,r){return e.toUnsigned().div(r.toUnsigned()).toSigned()},e.i64_rem=function(e,r){return e.mod(r)},e.i64_rem_u=function(e,r){return e.toUnsigned().mod(r.toUnsigned()).toSigned()},e.i64_and=function(e,r){return e.and(r)},e.i64_or=function(e,r){return e.or(r)},e.i64_xor=function(e,r){return e.xor(r)},e.i64_shl=function(e,r){return e.shl(r)},e.i64_shr=function(e,r){return e.shr(r)},e.i64_shr_u=function(e,r){return e.shru(r)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,r){return e.eq(r)},e.i64_ne=function(e,r){return e.ne(r)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var n=r.fromInt(t-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=r.fromNumber(f32.MIN_SAFE_INTEGER),i=r.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(i)};const a=r.fromNumber(f64.MIN_SAFE_INTEGER),s=r.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(s)},e.i64_to_f32=function(r){return e.Math.fround(r.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,r){return(r?e.toUnsigned():e).toString(10)}}).call(this,t(8))},function(e,r){e.exports=n;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,r,t){this.low=0|e,this.high=0|r,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=i;var a={},s={};function o(e,r){var t,n,i;return r?(i=0<=(e>>>=0)&&e<256)&&(n=s[e])?n:(t=l(e,(0|e)<0?-1:0,!0),i&&(s[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(n=a[e])?n:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function c(e,r){if(isNaN(e))return r?T:f;if(r){if(e<0)return T;if(e>=d)return I}else{if(e<=-y)return x;if(e+1>=y)return b}return e<0?c(-e,r).neg():l(e%h|0,e/h|0,r)}function l(e,r,t){return new n(e,r,t)}n.fromInt=o,n.fromNumber=c,n.fromBits=l;var u=Math.pow;function p(e,r,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return f;if("number"==typeof r?(t=r,r=!1):r=!!r,(t=t||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),r,t).neg();for(var i=c(u(t,8)),a=f,s=0;s>>0:this.low},A.toNumber=function(){return this.unsigned?(this.high>>>0)*h+(this.low>>>0):this.high*h+(this.low>>>0)},A.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=o).isZero())return l+s;for(;l.length<6;)l="0"+l;s=""+l+s}},A.getHighBits=function(){return this.high},A.getHighBitsUnsigned=function(){return this.high>>>0},A.getLowBits=function(){return this.low},A.getLowBitsUnsigned=function(){return this.low>>>0},A.getNumBitsAbs=function(){if(this.isNegative())return this.eq(x)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,r=31;r>0&&0==(e&1<=0},A.isOdd=function(){return 1==(1&this.low)},A.isEven=function(){return 0==(1&this.low)},A.equals=function(e){return i(e)||(e=_(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},A.eq=A.equals,A.notEquals=function(e){return!this.eq(e)},A.neq=A.notEquals,A.ne=A.notEquals,A.lessThan=function(e){return this.comp(e)<0},A.lt=A.lessThan,A.lessThanOrEqual=function(e){return this.comp(e)<=0},A.lte=A.lessThanOrEqual,A.le=A.lessThanOrEqual,A.greaterThan=function(e){return this.comp(e)>0},A.gt=A.greaterThan,A.greaterThanOrEqual=function(e){return this.comp(e)>=0},A.gte=A.greaterThanOrEqual,A.ge=A.greaterThanOrEqual,A.compare=function(e){if(i(e)||(e=_(e)),this.eq(e))return 0;var r=this.isNegative(),t=e.isNegative();return r&&!t?-1:!r&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},A.comp=A.compare,A.negate=function(){return!this.unsigned&&this.eq(x)?x:this.not().add(g)},A.neg=A.negate,A.add=function(e){i(e)||(e=_(e));var r=this.high>>>16,t=65535&this.high,n=this.low>>>16,a=65535&this.low,s=e.high>>>16,o=65535&e.high,c=e.low>>>16,u=0,p=0,h=0,d=0;return h+=(d+=a+(65535&e.low))>>>16,p+=(h+=n+c)>>>16,u+=(p+=t+o)>>>16,u+=r+s,l((h&=65535)<<16|(d&=65535),(u&=65535)<<16|(p&=65535),this.unsigned)},A.subtract=function(e){return i(e)||(e=_(e)),this.add(e.neg())},A.sub=A.subtract,A.multiply=function(e){if(this.isZero())return f;if(i(e)||(e=_(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return f;if(this.eq(x))return e.isOdd()?x:f;if(e.eq(x))return this.isOdd()?x:f;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(m)&&e.lt(m))return c(this.toNumber()*e.toNumber(),this.unsigned);var r=this.high>>>16,n=65535&this.high,a=this.low>>>16,s=65535&this.low,o=e.high>>>16,u=65535&e.high,p=e.low>>>16,h=65535&e.low,d=0,y=0,T=0,g=0;return T+=(g+=s*h)>>>16,y+=(T+=a*h)>>>16,T&=65535,y+=(T+=s*p)>>>16,d+=(y+=n*h)>>>16,y&=65535,d+=(y+=a*p)>>>16,y&=65535,d+=(y+=s*u)>>>16,d+=r*h+n*p+a*u+s*o,l((T&=65535)<<16|(g&=65535),(d&=65535)<<16|(y&=65535),this.unsigned)},A.mul=A.multiply,A.divide=function(e){if(i(e)||(e=_(e)),e.isZero())throw Error("division by zero");var r,n,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?T:f;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return T;if(e.gt(this.shru(1)))return E;a=T}else{if(this.eq(x))return e.eq(g)||e.eq(v)?x:e.eq(x)?g:(r=this.shr(1).div(e).shl(1)).eq(f)?e.isNegative()?g:v:(n=this.sub(e.mul(r)),a=r.add(n.div(e)));if(e.eq(x))return this.unsigned?T:f;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=f}for(n=this;n.gte(e);){r=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var s=Math.ceil(Math.log(r)/Math.LN2),o=s<=48?1:u(2,s-48),p=c(r),h=p.mul(e);h.isNegative()||h.gt(n);)h=(p=c(r-=o,this.unsigned)).mul(e);p.isZero()&&(p=g),a=a.add(p),n=n.sub(h)}return a},A.div=A.divide,A.modulo=function(e){return i(e)||(e=_(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},A.mod=A.modulo,A.rem=A.modulo,A.not=function(){return l(~this.low,~this.high,this.unsigned)},A.and=function(e){return i(e)||(e=_(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},A.or=function(e){return i(e)||(e=_(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},A.xor=function(e){return i(e)||(e=_(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},A.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},A.shr=A.shiftRight,A.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0===(e&=63))return this;var r=this.high;return e<32?l(this.low>>>e|r<<32-e,r>>>e,this.unsigned):l(32===e?r:r>>>e-32,0,this.unsigned)},A.shru=A.shiftRightUnsigned,A.shr_u=A.shiftRightUnsigned,A.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},A.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},A.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},A.toBytesLE=function(){var e=this.high,r=this.low;return[255&r,r>>>8&255,r>>>16&255,r>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},A.toBytesBE=function(){var e=this.high,r=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,r>>>24,r>>>16&255,r>>>8&255,255&r]},n.fromBytes=function(e,r,t){return t?n.fromBytesLE(e,r):n.fromBytesBE(e,r)},n.fromBytesLE=function(e,r){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,r)},n.fromBytesBE=function(e,r){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],r)}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(r.Feature||(r.Feature={}))},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(r.Target||(r.Target={}))},function(e,r,t){"use strict";var n=this&&this.__decorate||function(e,r,t,n){var i,a=arguments.length,s=a<3?r:null===n?n=Object.getOwnPropertyDescriptor(r,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,r,t,n);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(r,t,s):i(r,t))||s);return a>3&&s&&Object.defineProperty(r,t,s),s};Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(){}return e=n([unmanaged],e)}();r.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(r.TypeinfoFlags||(r.TypeinfoFlags={}))},function(e,r,t){"use strict";var n=this&&this.__values||function(e){var r="function"==typeof Symbol&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};function i(e){for(var t in e)r.hasOwnProperty(t)||(r[t]=e[t])}Object.defineProperty(r,"__esModule",{value:!0});var a=t(11),s=t(14),o=t(15),c=t(2);r.formatDiagnostic=c.formatDiagnosticMessage;var l=t(16);r.parseFile=function(e,r,t,n){return void 0===t&&(t=!1),void 0===n&&(n=null),n||(n=new l.Parser),n.parseFile(e,r,t),n},r.nextFile=function(e){return e.nextFile()},r.getDependee=function(e,r){return e.getDependee(r)},r.nextDiagnostic=function(e){var r=e.program;return r.diagnosticsOffset=0&&r<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(r))),i64_zero)},r.bitsetSet=function(e,r,t){return assert(r>=0&&r<64),t?i64_or(e,i64_shl(i64_one,i64_new(r))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(r))))}},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(r.CharCode||(r.CharCode={})),r.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},r.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},r.isDecimalDigit=function(e){return e>=48&&e<=57},r.isOctalDigit=function(e){return e>=48&&e<=55},r.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((r=e)<0||r>65535)&&a(r,n));var r},r.isKeywordCharacter=function(e){return e>=97&&e<=122},r.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((r=e)<0||r>65535)&&a(r,i));var r};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,r){if(e>1),(n=r[t-=1&t])<=e&&e<=r[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,i,a=t.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return s};Object.defineProperty(r,"__esModule",{value:!0}),r.makeArray=function(e){if(void 0===e&&(e=null),e){for(var r=new Array(e.length),t=0,n=e.length;t0||n=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=r?e.substring(0,a):e.substring(0,a)+e.substring(t+3),n-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(t+4)).length;continue}}}t++}return n>0?e:"."}function s(e){var r=e.length;if(r<=1){if(0==r)return".";if(e.charCodeAt(0)==i)return e}for(;--r>0;)if(e.charCodeAt(r)==i)return e.substring(0,r);return"."}r.normalizePath=a,r.resolvePath=function(e,r){return e.startsWith("std/")?e:a(s(r)+n.PATH_DELIMITER+e)},r.dirname=s},function(e,r,t){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=" ",i=" ",a=" ";r.indent=function(e,r){for(;r>=4;)e.push(a),r-=4;r>=2&&(e.push(i),r-=2),r&&e.push(n)}},function(e,r,t){"use strict";function n(e,r){return e[r]|e[r+1]<<8|e[r+2]<<16|e[r+3]<<24}function i(e,r,t){r[t]=e,r[t+1]=e>>>8,r[t+2]=e>>>16,r[t+3]=e>>>24}function a(e,r){var t=n(e,r),i=n(e,r+4);return i64_new(t,i)}Object.defineProperty(r,"__esModule",{value:!0}),r.readI8=function(e,r){return e[r]},r.writeI8=function(e,r,t){r[t]=e},r.readI16=function(e,r){return e[r]|e[r+1]<<8},r.writeI16=function(e,r,t){r[t]=e,r[t+1]=e>>>8},r.readI32=n,r.writeI32=i,r.readI64=a,r.writeI64=function(e,r,t){i(i64_low(e),r,t),i(i64_high(e),r,t+4)},r.readF32=function(e,r){return i32_as_f32(n(e,r))},r.writeF32=function(e,r,t){i(f32_as_i32(e),r,t)},r.readF64=function(e,r){return i64_as_f64(a(e,r))},r.writeF64=function(e,r,t){var n=f64_as_i64(e);i(i64_low(n),r,t),i(i64_high(n),r,t+4)}}])}); //# sourceMappingURL=assemblyscript.js.map \ No newline at end of file diff --git a/dist/assemblyscript.js.map b/dist/assemblyscript.js.map index fe87b27628..932b013369 100644 --- a/dist/assemblyscript.js.map +++ b/dist/assemblyscript.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://assemblyscript/webpack/universalModuleDefinition","webpack://assemblyscript/webpack/bootstrap","webpack://assemblyscript/./src/common.ts","webpack://assemblyscript/./src/util/index.ts","webpack://assemblyscript/./src/diagnostics.ts","webpack://assemblyscript/./src/ast.ts","webpack://assemblyscript/./src/program.ts","webpack://assemblyscript/./src/module.ts","webpack://assemblyscript/./src/types.ts","webpack://assemblyscript/./src/tokenizer.ts","webpack://assemblyscript/(webpack)/buildin/global.js","webpack://assemblyscript/./src/resolver.ts","webpack://assemblyscript/./src/flow.ts","webpack://assemblyscript/./src/compiler.ts","webpack://assemblyscript/./src/diagnosticMessages.generated.ts","webpack://assemblyscript/./src/builtins.ts","webpack://assemblyscript/./src/decompiler.ts","webpack://assemblyscript/./src/definitions.ts","webpack://assemblyscript/./src/parser.ts","webpack://assemblyscript/./src/glue/js/index.ts","webpack://assemblyscript/./src/glue/js/binaryen.js","webpack://assemblyscript/external \"binaryen\"","webpack://assemblyscript/./std/portable/index.js","webpack://assemblyscript/./src/glue/js/float.js","webpack://assemblyscript/./src/glue/js/i64.js","webpack://assemblyscript/./node_modules/long/src/long.js","webpack://assemblyscript/./std/assembly/shared/feature.ts","webpack://assemblyscript/./std/assembly/shared/target.ts","webpack://assemblyscript/./std/assembly/shared/typeinfo.ts","webpack://assemblyscript/./src/index.ts","webpack://assemblyscript/./src/util/bitset.ts","webpack://assemblyscript/./src/util/charcode.ts","webpack://assemblyscript/./src/util/collections.ts","webpack://assemblyscript/./src/util/path.ts","webpack://assemblyscript/./src/util/text.ts","webpack://assemblyscript/./src/util/binary.ts"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__20__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","CommonFlags","PATH_DELIMITER","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","LIBRARY_PREFIX","INDEX_SUFFIX","CommonSymbols","EMPTY","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","number","boolean","string","native","indexof","valueof","returnof","null_","true_","false_","this_","super_","constructor","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","String","Array","FixedArray","Set","Map","ArrayBufferView","ArrayBuffer","Math","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","feature_1","Feature","target_1","Target","typeinfo_1","Typeinfo","TypeinfoFlags","__export","isPowerOf2","x","DiagnosticCategory","diagnosticMessages_generated_1","util_1","diagnosticMessages_generated_2","diagnosticCategoryToString","category","INFO","WARNING","ERROR","assert","diagnosticCategoryToColor","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCode","diagnosticCodeToString","COLOR_RESET","DiagnosticMessage","code","message","range","relatedRange","arg0","arg1","arg2","replace","createInfo","createWarning","createError","withRange","withRelatedRange","toString","source","normalizedPath","line","column","formatDiagnosticContext","useColors","text","len","length","start","end","isLineBreak","charCodeAt","sb","substring","push","join","formatDiagnosticMessage","showContext","DiagnosticEmitter","diagnostics","emitDiagnostic","info","infoRelated","warning","warningRelated","error","errorRelated","common_1","tokenizer_1","Token","Range","NodeKind","nodeIsConstantValue","kind","LITERAL","NULL","TRUE","FALSE","nodeIsCallable","IDENTIFIER","ASSERTION","CALL","ELEMENTACCESS","PARENTHESIZED","PROPERTYACCESS","SUPER","nodeIsGenericCallable","Node","createTypeName","typeName","TypeName","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","typeArguments","isNullable","type","NamedTypeNode","createFunctionType","parameters","returnType","explicitThisType","FunctionTypeNode","createOmittedType","createTypeParameter","extendsType","defaultType","elem","TypeParameterNode","createParameter","initializer","ParameterNode","parameterKind","createDecorator","args","stmt","DecoratorNode","arguments","decoratorKind","decoratorNameToKind","createComment","node","CommentNode","commentKind","isQuoted","expr","IdentifierExpression","symbol","createEmptyIdentifierExpression","createArrayLiteralExpression","elements","ArrayLiteralExpression","elementExpressions","createAssertionExpression","assertionKind","expression","toType","AssertionExpression","createBinaryExpression","operator","left","right","BinaryExpression","createCallExpression","typeArgs","CallExpression","createClassExpression","declaration","ClassExpression","createCommaExpression","expressions","CommaExpression","createConstructorExpression","ConstructorExpression","createElementAccessExpression","element","ElementAccessExpression","elementExpression","createFalseExpression","FalseExpression","createFloatLiteralExpression","FloatLiteralExpression","createFunctionExpression","FunctionExpression","createInstanceOfExpression","isType","InstanceOfExpression","createIntegerLiteralExpression","IntegerLiteralExpression","createNewExpression","NewExpression","createNullExpression","NullExpression","createObjectLiteralExpression","names","values","ObjectLiteralExpression","createParenthesizedExpression","ParenthesizedExpression","createPropertyAccessExpression","PropertyAccessExpression","createRegexpLiteralExpression","pattern","flags","RegexpLiteralExpression","patternFlags","createTernaryExpression","condition","ifThen","ifElse","TernaryExpression","createStringLiteralExpression","StringLiteralExpression","createSuperExpression","SuperExpression","createThisExpression","ThisExpression","createTrueExpression","TrueExpression","createUnaryPostfixExpression","operand","UnaryPostfixExpression","createUnaryPrefixExpression","UnaryPrefixExpression","createBlockStatement","statements","BlockStatement","createBreakStatement","label","BreakStatement","createClassDeclaration","typeParameters","implementsTypes","members","decorators","ClassDeclaration","createContinueStatement","ContinueStatement","createDoStatement","statement","DoStatement","createEmptyStatement","EmptyStatement","createEnumDeclaration","EnumDeclaration","createEnumValueDeclaration","EnumValueDeclaration","createExportStatement","path","isDeclare","ExportStatement","normalizePath","startsWith","resolvePath","internalPath","mangleInternalPath","createExportDefaultStatement","ExportDefaultStatement","createExportImportStatement","externalName","ExportImportStatement","createExportMember","ExportMember","localName","exportedName","createExpressionStatement","ExpressionStatement","createIfStatement","ifTrue","ifFalse","IfStatement","createImportStatement","decls","ImportStatement","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","foreignName","ImportDeclaration","createInterfaceDeclaration","InterfaceDeclaration","createFieldDeclaration","FieldDeclaration","createForStatement","incrementor","ForStatement","createFunctionDeclaration","signature","body","arrowKind","FunctionDeclaration","createIndexSignatureDeclaration","keyType","valueType","IndexSignatureDeclaration","createMethodDeclaration","MethodDeclaration","createNamespaceDeclaration","NamespaceDeclaration","createReturnStatement","ReturnStatement","createSwitchStatement","cases","SwitchStatement","createSwitchCase","SwitchCase","createThrowStatement","ThrowStatement","createTryStatement","catchVariable","catchStatements","finallyStatements","TryStatement","createTypeDeclaration","alias","TypeDeclaration","createVariableStatement","VariableStatement","createVariableDeclaration","VariableDeclaration","createVoidStatement","VoidStatement","createWhileStatement","WhileStatement","TypeNode","_super","__extends","_this","apply","TYPENAME","NAMEDTYPE","FUNCTIONTYPE","TYPEPARAMETER","ParameterKind","DecoratorKind","PARAMETER","implicitFieldDeclaration","NONE","is","flag","isAny","set","nameStr","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","propStr","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","DECORATOR","CommentKind","COMMENT","Expression","LiteralKind","LiteralExpression","literalKind","ARRAY","AssertionKind","BINARY","numTypeArguments","numArguments","CLASS","COMMA","CONSTRUCTOR","FLOAT","FUNCTION","INSTANCEOF","INTEGER","NEW","OBJECT","REGEXP","TERNARY","STRING","THIS","UnaryExpression","UNARYPOSTFIX","UNARYPREFIX","SourceKind","Statement","Source","SOURCE","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","pos","lastIndexOf","simplePath","LIBRARY","LIBRARY_ENTRY","DeclarationStatement","INDEXSIGNATUREDECLARATION","VariableLikeDeclarationStatement","BLOCK","BREAK","CLASSDECLARATION","CONTINUE","DO","ENUMDECLARATION","ENUMVALUEDECLARATION","EXPORTIMPORT","EXPORTMEMBER","EXPORT","EXPORTDEFAULT","EXPRESSION","FIELDDECLARATION","parameterIndex","FOR","ArrowKind","FUNCTIONDECLARATION","clone","IF","IMPORTDECLARATION","IMPORT","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","RETURN","SWITCHCASE","SWITCH","THROW","TRY","TYPEDECLARATION","VARIABLEDECLARATION","VARIABLE","VOID","WHILE","endsWith","findDecorator","k","decorator","isTypeOmitted","OperatorKind","diagnostics_1","types_1","ast_1","resolver_1","flow_1","QueuedImport","localFile","localIdentifier","foreignIdentifier","foreignPath","foreignPathAlt","QueuedExport","QueuedExportStar","pathLiteral","operatorKindFromDecorator","arg","INDEXED_GET","INDEXED_SET","UNCHECKED_INDEXED_GET","UNCHECKED_INDEXED_SET","ADD","SUB","MUL","POW","DIV","REM","BITWISE_AND","BITWISE_OR","BITWISE_XOR","EQ","NE","GT","GE","BITWISE_SHR","BITWISE_SHR_U","LT","LE","BITWISE_SHL","PLUS","PREFIX_INC","MINUS","PREFIX_DEC","NOT","BITWISE_NOT","POSTFIX_INC","POSTFIX_DEC","INVALID","ElementKind","DecoratorFlags","Program","sources","diagnosticsOffset","filesByName","elementsByName","elementsByDeclaration","instancesByName","typeClasses","managedClasses","uniqueSignatures","nextClassId","nextSignatureId","nativeDummySignature","nativeSource","nativeFile","File","internalName","resolver","Resolver","writeRuntimeHeader","buffer","offset","classInstance","payloadSize","writeI32","id","makeNativeVariableDeclaration","makeNativeTypeDeclaration","makeNativeFunctionDeclaration","makeNativeNamespaceDeclaration","makeNativeFunction","decoratorFlags","Function","FunctionPrototype","getElementByDeclaration","has","initialize","options","registerNativeType","Type","isizeType","usizeType","void","add","TypeDefinition","GENERIC","hasFeature","registerConstantInteger","i64_new","isWasm64","WASM64","WASM32","noAssert","memoryBase","optimizeLevelHint","shrinkLevelHint","queuedImports","queuedExports","queuedExportsStar","queuedExtends","queuedImplements","file","j","initializeExports","initializeExportDefault","initializeImports","initializeVariables","initializeClass","initializeEnum","initializeFunction","initializeInterface","initializeNamespace","initializeTypeDefinition","queuedExportsStar_1","__values","queuedExportsStar_1_1","done","_g","__read","exportsStar","exportStar","foreignFile","lookupForeignFile","ensureExportStar","File_0_not_found","queuedImport","lookupForeign","Module_0_has_no_exported_member_1","asImportedNamespace","queuedExports_1","queuedExports_1_1","_h","exports_1","e_3","exports_1_1","_j","exportName","queuedExport","ensureExport","lookupInSelf","globalElement","lookupGlobal","DeclaredElement","arrayBufferInstance","requireClass","stringInstance","arrayBufferViewInstance","registerNativeTypeClass","i8ArrayPrototype","CLASS_PROTOTYPE","i16ArrayPrototype","i32ArrayPrototype","i64ArrayPrototype","u8ArrayPrototype","u8ClampedArrayPrototype","u16ArrayPrototype","u32ArrayPrototype","u64ArrayPrototype","f32ArrayPrototype","f64ArrayPrototype","thisPrototype","extendsNode","baseElement","resolveTypeName","basePrototype","hasDecorator","Class_0_is_sealed_and_cannot_be_extended","identifierNode","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","A_class_may_only_extend_another_class","globalAliases","globalAliases_1","globalAliases_1_1","_k","firstChar","parseInt","Error","arrayPrototype","fixedArrayPrototype","setPrototype","mapPrototype","abortInstance","lookupFunction","allocInstance","requireFunction","reallocInstance","freeInstance","retainInstance","releaseInstance","collectInstance","typeinfoInstance","instanceofInstance","visitInstance","allocArrayInstance","_l","_m","USER_ENTRY","_o","e_6","_p","markModuleExport","resolved","resolveClass","FUNCTION_PROTOTYPE","resolveFunction","MODULE_EXPORT","instanceMembers","_c","_d","member","PROPERTY_PROTOTYPE","getterPrototype","setterPrototype","PROPERTY","FIELD","_e","_f","setType","typeKind","className","classElement","global","Global","CONST","setConstantIntegerValue","registerConstantFloat","setConstantFloatValue","ensureGlobal","merged","tryMerge","Duplicate_identifier_0","requireGlobal","lookupExport","fileQueuedExports","checkDecorators","acceptedFlags","decoratorKindToFlag","isLibrary","Decorator_0_is_not_valid_here","Duplicate_decorator","ClassPrototype","numImplementsTypes","Unmanaged_classes_cannot_implement_interfaces","Operation_not_supported","memberDeclarations","memberDeclaration","initializeField","GET","SET","initializeProperty","initializeMethod","STATIC","INTERFACE_PROTOTYPE","READONLY","ABSTRACT","FieldPrototype","addInstance","isStatic","checkOperatorOverloads","classPrototype","numArgs","firstArg","overloads","overloadPrototypes","Duplicate_function_implementation","operatorKind","String_literal_expected","Expected_0_arguments_but_got_1","ensureProperty","parentMembers","PropertyPrototype","Duplicate_property_0","isGetter","Enum","initializeEnumValue","EnumValue","initializeExport","queued","Export_declaration_conflicts_with_exported_declaration_of_0","initializeImport","validDecorators","AMBIENT","INSTANCE","InterfacePrototype","original","Namespace","copyMembers","DECLARE","Element","program","shadowType","FILE","current","unset","originalDeclaration","actual","isBound","TypedElement","RESOLVED","startFunction","Signature","isImport","lookup","includes","exports_2","exports_2_1","_b","memberName","TYPEDEFINITION","mangleInternalName","NAMESPACE","ENUM","ConstantValueKind","VariableLikeElement","constantValueKind","constantIntegerValue","INLINED","constantFloatValue","ENUMVALUE","isImmutable","Parameter","Local","index","LOCAL","instances","boundPrototypes","toBound","bound","getResolvedInstance","instanceKey","setResolvedInstance","instance","nameInclTypeParameters","contextualTypeArguments","localsByName","localsByIndex","additionalLocals","debugLocations","ref","functionTableIndex","trampoline","nextInlineId","nextAnonymousId","nextAutoreleaseId","tempI32s","tempI64s","tempF32s","tempF64s","tempV128s","nextBreakId","breakStack","breakLabel","asFunction","localIndex","local","thisType","parameterTypes","parameterType","parameterName","getParameterName","flow","Flow","registerConcreteElement","addLocal","locals","finalize","sourceMap","debugLocation","setDebugLocation","debugInfoRef","FunctionTarget","__s","FUNCTION_TARGET","toSignatureString","FIELD_PROTOTYPE","Field","memoryOffset","firstDeclaration","Property","getterInstance","setterInstance","AcyclicState","_isInterface","constructorPrototype","extends","basePtototype","Class","base","INTERFACE","currentMemoryOffset","constructorInstance","_id","_acyclic","rttiFlags","asClass","inheritedTypeArguments","inheritedTypeArguments_1","inheritedTypeArguments_1_1","baseName","baseType","typeParameterNodes","isBuiltinArray","lengthField","lookupOverload","isAssignableTo","target","unchecked","uncheckedOverload","overload","offsetof","fieldName","field","writeField","baseOffset","writeI8","writeI16","writeF32","writeF64","getTypeArgumentsTo","extendedPrototype","getArrayValueType","abvInstance","acyclic","hasCycle","cyclesTo","other","except","classReference","Interface","older","newer","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","src","dest","srcMembers","destMembers","srcMembers_1","srcMembers_1_1","isInstance","asGlobal","NativeType","ExpressionId","_BinaryenTypeNone","_BinaryenTypeInt32","_BinaryenTypeInt64","_BinaryenTypeFloat32","_BinaryenTypeFloat64","_BinaryenTypeVec128","_BinaryenTypeUnreachable","_BinaryenTypeAuto","FeatureFlags","_BinaryenFeatureAtomics","_BinaryenFeatureMutableGlobals","_BinaryenFeatureNontrappingFPToInt","_BinaryenFeatureSIMD128","_BinaryenFeatureBulkMemory","_BinaryenFeatureSignExt","_BinaryenFeatureExceptionHandling","_BinaryenInvalidId","_BinaryenBlockId","_BinaryenIfId","_BinaryenLoopId","_BinaryenBreakId","_BinaryenSwitchId","_BinaryenCallId","_BinaryenCallIndirectId","_BinaryenLocalGetId","_BinaryenLocalSetId","_BinaryenGlobalGetId","_BinaryenGlobalSetId","_BinaryenLoadId","_BinaryenStoreId","_BinaryenConstId","_BinaryenUnaryId","_BinaryenBinaryId","_BinaryenSelectId","_BinaryenDropId","_BinaryenReturnId","_BinaryenHostId","_BinaryenNopId","_BinaryenUnreachableId","_BinaryenAtomicCmpxchgId","_BinaryenAtomicRMWId","_BinaryenAtomicWaitId","_BinaryenAtomicNotifyId","_BinaryenSIMDExtractId","_BinaryenSIMDReplaceId","_BinaryenSIMDShuffleId","_BinaryenSIMDBitselectId","_BinaryenSIMDShiftId","_BinaryenMemoryInitId","_BinaryenDataDropId","_BinaryenMemoryCopyId","_BinaryenMemoryFillId","UnaryOp","_BinaryenClzInt32","_BinaryenCtzInt32","_BinaryenPopcntInt32","_BinaryenNegFloat32","_BinaryenAbsFloat32","_BinaryenCeilFloat32","_BinaryenFloorFloat32","_BinaryenTruncFloat32","_BinaryenNearestFloat32","_BinaryenSqrtFloat32","_BinaryenEqZInt32","_BinaryenClzInt64","_BinaryenCtzInt64","_BinaryenPopcntInt64","_BinaryenNegFloat64","_BinaryenAbsFloat64","_BinaryenCeilFloat64","_BinaryenFloorFloat64","_BinaryenTruncFloat64","_BinaryenNearestFloat64","_BinaryenSqrtFloat64","_BinaryenEqZInt64","_BinaryenExtendSInt32","_BinaryenExtendUInt32","_BinaryenWrapInt64","_BinaryenTruncSFloat32ToInt32","_BinaryenTruncSFloat32ToInt64","_BinaryenTruncUFloat32ToInt32","_BinaryenTruncUFloat32ToInt64","_BinaryenTruncSFloat64ToInt32","_BinaryenTruncSFloat64ToInt64","_BinaryenTruncUFloat64ToInt32","_BinaryenTruncUFloat64ToInt64","_BinaryenReinterpretFloat32","_BinaryenReinterpretFloat64","_BinaryenConvertSInt32ToFloat32","_BinaryenConvertSInt32ToFloat64","_BinaryenConvertUInt32ToFloat32","_BinaryenConvertUInt32ToFloat64","_BinaryenConvertSInt64ToFloat32","_BinaryenConvertSInt64ToFloat64","_BinaryenConvertUInt64ToFloat32","_BinaryenConvertUInt64ToFloat64","_BinaryenPromoteFloat32","_BinaryenDemoteFloat64","_BinaryenReinterpretInt32","_BinaryenReinterpretInt64","_BinaryenExtendS8Int32","_BinaryenExtendS16Int32","_BinaryenExtendS8Int64","_BinaryenExtendS16Int64","_BinaryenExtendS32Int64","_BinaryenSplatVecI8x16","_BinaryenSplatVecI16x8","_BinaryenSplatVecI32x4","_BinaryenSplatVecI64x2","_BinaryenSplatVecF32x4","_BinaryenSplatVecF64x2","_BinaryenNotVec128","_BinaryenNegVecI8x16","_BinaryenAnyTrueVecI8x16","_BinaryenAllTrueVecI8x16","_BinaryenNegVecI16x8","_BinaryenAnyTrueVecI16x8","_BinaryenAllTrueVecI16x8","_BinaryenNegVecI32x4","_BinaryenAnyTrueVecI32x4","_BinaryenAllTrueVecI32x4","_BinaryenNegVecI64x2","_BinaryenAnyTrueVecI64x2","_BinaryenAllTrueVecI64x2","_BinaryenAbsVecF32x4","_BinaryenNegVecF32x4","_BinaryenSqrtVecF32x4","_BinaryenAbsVecF64x2","_BinaryenNegVecF64x2","_BinaryenSqrtVecF64x2","_BinaryenTruncSatSVecF32x4ToVecI32x4","_BinaryenTruncSatUVecF32x4ToVecI32x4","_BinaryenTruncSatSVecF64x2ToVecI64x2","_BinaryenTruncSatUVecF64x2ToVecI64x2","_BinaryenConvertSVecI32x4ToVecF32x4","_BinaryenConvertUVecI32x4ToVecF32x4","_BinaryenConvertSVecI64x2ToVecF64x2","_BinaryenConvertUVecI64x2ToVecF64x2","BinaryOp","_BinaryenAddInt32","_BinaryenSubInt32","_BinaryenMulInt32","_BinaryenDivSInt32","_BinaryenDivUInt32","_BinaryenRemSInt32","_BinaryenRemUInt32","_BinaryenAndInt32","_BinaryenOrInt32","_BinaryenXorInt32","_BinaryenShlInt32","_BinaryenShrUInt32","_BinaryenShrSInt32","_BinaryenRotLInt32","_BinaryenRotRInt32","_BinaryenEqInt32","_BinaryenNeInt32","_BinaryenLtSInt32","_BinaryenLtUInt32","_BinaryenLeSInt32","_BinaryenLeUInt32","_BinaryenGtSInt32","_BinaryenGtUInt32","_BinaryenGeSInt32","_BinaryenGeUInt32","_BinaryenAddInt64","_BinaryenSubInt64","_BinaryenMulInt64","_BinaryenDivSInt64","_BinaryenDivUInt64","_BinaryenRemSInt64","_BinaryenRemUInt64","_BinaryenAndInt64","_BinaryenOrInt64","_BinaryenXorInt64","_BinaryenShlInt64","_BinaryenShrUInt64","_BinaryenShrSInt64","_BinaryenRotLInt64","_BinaryenRotRInt64","_BinaryenEqInt64","_BinaryenNeInt64","_BinaryenLtSInt64","_BinaryenLtUInt64","_BinaryenLeSInt64","_BinaryenLeUInt64","_BinaryenGtSInt64","_BinaryenGtUInt64","_BinaryenGeSInt64","_BinaryenGeUInt64","_BinaryenAddFloat32","_BinaryenSubFloat32","_BinaryenMulFloat32","_BinaryenDivFloat32","_BinaryenCopySignFloat32","_BinaryenMinFloat32","_BinaryenMaxFloat32","_BinaryenEqFloat32","_BinaryenNeFloat32","_BinaryenLtFloat32","_BinaryenLeFloat32","_BinaryenGtFloat32","_BinaryenGeFloat32","_BinaryenAddFloat64","_BinaryenSubFloat64","_BinaryenMulFloat64","_BinaryenDivFloat64","_BinaryenCopySignFloat64","_BinaryenMinFloat64","_BinaryenMaxFloat64","_BinaryenEqFloat64","_BinaryenNeFloat64","_BinaryenLtFloat64","_BinaryenLeFloat64","_BinaryenGtFloat64","_BinaryenGeFloat64","_BinaryenEqVecI8x16","_BinaryenNeVecI8x16","_BinaryenLtSVecI8x16","_BinaryenLtUVecI8x16","_BinaryenLeSVecI8x16","_BinaryenLeUVecI8x16","_BinaryenGtSVecI8x16","_BinaryenGtUVecI8x16","_BinaryenGeSVecI8x16","_BinaryenGeUVecI8x16","_BinaryenEqVecI16x8","_BinaryenNeVecI16x8","_BinaryenLtSVecI16x8","_BinaryenLtUVecI16x8","_BinaryenLeSVecI16x8","_BinaryenLeUVecI16x8","_BinaryenGtSVecI16x8","_BinaryenGtUVecI16x8","_BinaryenGeSVecI16x8","_BinaryenGeUVecI16x8","_BinaryenEqVecI32x4","_BinaryenNeVecI32x4","_BinaryenLtSVecI32x4","_BinaryenLtUVecI32x4","_BinaryenLeSVecI32x4","_BinaryenLeUVecI32x4","_BinaryenGtSVecI32x4","_BinaryenGtUVecI32x4","_BinaryenGeSVecI32x4","_BinaryenGeUVecI32x4","_BinaryenEqVecF32x4","_BinaryenNeVecF32x4","_BinaryenLtVecF32x4","_BinaryenLeVecF32x4","_BinaryenGtVecF32x4","_BinaryenGeVecF32x4","_BinaryenEqVecF64x2","_BinaryenNeVecF64x2","_BinaryenLtVecF64x2","_BinaryenLeVecF64x2","_BinaryenGtVecF64x2","_BinaryenGeVecF64x2","_BinaryenAndVec128","_BinaryenOrVec128","_BinaryenXorVec128","_BinaryenAddVecI8x16","_BinaryenAddSatSVecI8x16","_BinaryenAddSatUVecI8x16","_BinaryenSubVecI8x16","_BinaryenSubSatSVecI8x16","_BinaryenSubSatUVecI8x16","_BinaryenMulVecI8x16","_BinaryenAddVecI16x8","_BinaryenAddSatSVecI16x8","_BinaryenAddSatUVecI16x8","_BinaryenSubVecI16x8","_BinaryenSubSatSVecI16x8","_BinaryenSubSatUVecI16x8","_BinaryenMulVecI16x8","_BinaryenAddVecI32x4","_BinaryenSubVecI32x4","_BinaryenMulVecI32x4","_BinaryenAddVecI64x2","_BinaryenSubVecI64x2","_BinaryenAddVecF32x4","_BinaryenSubVecF32x4","_BinaryenMulVecF32x4","_BinaryenDivVecF32x4","_BinaryenMinVecF32x4","_BinaryenMaxVecF32x4","_BinaryenAddVecF64x2","_BinaryenSubVecF64x2","_BinaryenMulVecF64x2","_BinaryenDivVecF64x2","_BinaryenMinVecF64x2","_BinaryenMaxVecF64x2","HostOp","_BinaryenMemorySize","_BinaryenMemoryGrow","AtomicRMWOp","_BinaryenAtomicRMWAdd","_BinaryenAtomicRMWSub","_BinaryenAtomicRMWAnd","_BinaryenAtomicRMWOr","_BinaryenAtomicRMWXor","_BinaryenAtomicRMWXchg","SIMDExtractOp","_BinaryenExtractLaneSVecI8x16","_BinaryenExtractLaneUVecI8x16","_BinaryenExtractLaneSVecI16x8","_BinaryenExtractLaneUVecI16x8","_BinaryenExtractLaneVecI32x4","_BinaryenExtractLaneVecI64x2","_BinaryenExtractLaneVecF32x4","_BinaryenExtractLaneVecF64x2","SIMDReplaceOp","_BinaryenReplaceLaneVecI8x16","_BinaryenReplaceLaneVecI16x8","_BinaryenReplaceLaneVecI32x4","_BinaryenReplaceLaneVecI64x2","_BinaryenReplaceLaneVecF32x4","_BinaryenReplaceLaneVecF64x2","SIMDShiftOp","_BinaryenShlVecI8x16","_BinaryenShrSVecI8x16","_BinaryenShrUVecI8x16","_BinaryenShlVecI16x8","_BinaryenShrSVecI16x8","_BinaryenShrUVecI16x8","_BinaryenShlVecI32x4","_BinaryenShrSVecI32x4","_BinaryenShrUVecI32x4","_BinaryenShlVecI64x2","_BinaryenShrSVecI64x2","_BinaryenShrUVecI64x2","MemorySegment","segment","Module","hasTemporaryFunction","cachedPrecomputeNames","cachedStrings","_BinaryenModuleCreate","lit","memory","allocate","_BinaryenSizeofLiteral","createFrom","cArr","allocU8Array","_BinaryenModuleRead","changetype","addFunctionType","result","paramTypes","cStr","allocStringCached","allocI32Array","_BinaryenAddFunctionType","getFunctionTypeBySignature","_BinaryenGetFunctionTypeBySignature","removeFunctionType","_BinaryenRemoveFunctionType","out","_BinaryenLiteralInt32","_BinaryenConst","valueLow","valueHigh","_BinaryenLiteralInt64","_BinaryenLiteralFloat32","_BinaryenLiteralFloat64","bytes","store","_BinaryenLiteralVec128","unary","op","_BinaryenUnary","binary","_BinaryenBinary","host","operands","allocPtrArray","_BinaryenHost","local_get","_BinaryenLocalGet","local_tee","_BinaryenLocalTee","global_get","_BinaryenGlobalGet","load","signed","ptr","align","_BinaryenLoad","None","_BinaryenStore","atomic_load","_BinaryenAtomicLoad","atomic_store","_BinaryenAtomicStore","atomic_rmw","_BinaryenAtomicRMW","atomic_cmpxchg","expected","replacement","_BinaryenAtomicCmpxchg","atomic_wait","timeout","expectedType","_BinaryenAtomicWait","atomic_notify","notifyCount","_BinaryenAtomicNotify","local_set","_BinaryenLocalSet","global_set","_BinaryenGlobalSet","block","children","_BinaryenBlock","br","_BinaryenBreak","drop","_BinaryenDrop","loop","_BinaryenLoop","if","_BinaryenIf","nop","_BinaryenNop","return","_BinaryenReturn","select","_BinaryenSelect","switch","defaultName","numNames","strs","_BinaryenSwitch","_BinaryenCall","call_indirect","_BinaryenCallIndirect","unreachable","_BinaryenUnreachable","memory_copy","size","_BinaryenMemoryCopy","memory_fill","_BinaryenMemoryFill","simd_extract","vec","idx","_BinaryenSIMDExtract","simd_replace","_BinaryenSIMDReplace","simd_shuffle","vec1","vec2","mask","_BinaryenSIMDShuffle","simd_bitselect","cond","_BinaryenSIMDBitselect","simd_shift","shift","_BinaryenSIMDShift","addGlobal","mutable","_BinaryenAddGlobal","removeGlobal","_BinaryenRemoveGlobal","addFunction","varTypes","_BinaryenAddFunction","removeFunction","_BinaryenRemoveFunction","addTemporaryFunction","tempName","typeRef","removeTemporaryFunction","addFunctionExport","cStr1","cStr2","_BinaryenAddFunctionExport","addTableExport","_BinaryenAddTableExport","addMemoryExport","_BinaryenAddMemoryExport","addGlobalExport","_BinaryenAddGlobalExport","removeExport","_BinaryenRemoveExport","addFunctionImport","externalModuleName","externalBaseName","functionType","cStr3","_BinaryenAddFunctionImport","addTableImport","_BinaryenAddTableImport","addMemoryImport","shared","_BinaryenAddMemoryImport","addGlobalImport","globalType","_BinaryenAddGlobalImport","setMemory","initial","maximum","segments","segs","psvs","offs","sizs","i64_low","i64_high","cArr1","cArr2","cArr3","cArr4","_BinaryenSetMemory","setFunctionTable","funcs","_BinaryenSetFunctionTable","setStart","func","_BinaryenSetStart","getOptimizeLevel","_BinaryenGetOptimizeLevel","setOptimizeLevel","level","_BinaryenSetOptimizeLevel","getShrinkLevel","_BinaryenGetShrinkLevel","setShrinkLevel","_BinaryenSetShrinkLevel","setDebugInfo","on","_BinaryenSetDebugInfo","getFeatures","_BinaryenModuleGetFeatures","setFeatures","featureFlags","_BinaryenModuleSetFeatures","optimize","_BinaryenFunctionOptimize","_BinaryenModuleOptimize","runPasses","passes","allocString","_BinaryenFunctionRunPasses","_BinaryenModuleRunPasses","precomputeExpression","previousOptimizeLevel","previousShrinkLevel","previousDebugInfo","_BinaryenGetDebugInfo","_BinaryenExpressionGetType","_BinaryenFunctionGetBody","_BinaryenExpressionGetId","Return","_BinaryenReturnGetValue","validate","_BinaryenModuleValidate","interpret","_BinaryenModuleInterpret","toBinary","sourceMapUrl","binaryPtr","sourceMapPtr","_BinaryenModuleAllocateAndWrite","readInt","binaryBytes","ret","BinaryModule","output","readBuffer","readString","toText","toAsmjs","str","dispose","_BinaryenModuleDispose","createRelooper","Relooper","cloneExpression","noSideEffects","maxDepth","MAX_VALUE","nested1","nested2","Const","_BinaryenConstGetValueI32","_BinaryenConstGetValueI64Low","_BinaryenConstGetValueI64High","_BinaryenConstGetValueF32","_BinaryenConstGetValueF64","LocalGet","_BinaryenLocalGetGetIndex","GlobalGet","globalName","_BinaryenGlobalGetGetName","Load","_BinaryenLoadGetPtr","_BinaryenLoadIsAtomic","_BinaryenLoadGetBytes","_BinaryenLoadGetOffset","_BinaryenLoadIsSigned","_BinaryenLoadGetAlign","Unary","_BinaryenUnaryGetValue","_BinaryenUnaryGetOp","Binary","_BinaryenBinaryGetLeft","_BinaryenBinaryGetRight","_BinaryenBinaryGetOp","addDebugInfoFile","_BinaryenModuleAddDebugInfoFileName","getDebugInfoFile","_BinaryenModuleGetDebugInfoFileName","fileIndex","lineNumber","columnNumber","_BinaryenFunctionSetDebugLocation","UNLIMITED_MEMORY","getExpressionId","getExpressionType","getConstValueI32","getConstValueI64Low","getConstValueI64High","getConstValueF32","getConstValueF64","getLocalGetIndex","getLocalSetIndex","_BinaryenLocalSetGetIndex","getLocalSetValue","_BinaryenLocalSetGetValue","isLocalTee","_BinaryenLocalSetIsTee","getGlobalGetName","getBinaryOp","getBinaryLeft","getBinaryRight","getUnaryOp","getUnaryValue","getLoadBytes","getLoadOffset","getLoadPtr","isLoadSigned","getStoreBytes","_BinaryenStoreGetBytes","getStoreOffset","_BinaryenStoreGetOffset","getStorePtr","_BinaryenStoreGetPtr","getStoreValue","_BinaryenStoreGetValue","getBlockName","_BinaryenBlockGetName","getBlockChildCount","_BinaryenBlockGetNumChildren","getBlockChild","_BinaryenBlockGetChild","getIfCondition","_BinaryenIfGetCondition","getIfTrue","_BinaryenIfGetIfTrue","getIfFalse","_BinaryenIfGetIfFalse","getLoopName","_BinaryenLoopGetName","getLoopBody","_BinaryenLoopGetBody","getBreakName","_BinaryenBreakGetName","getBreakCondition","_BinaryenBreakGetCondition","getSelectThen","_BinaryenSelectGetIfTrue","getSelectElse","_BinaryenSelectGetIfFalse","getSelectCondition","_BinaryenSelectGetCondition","getDropValue","_BinaryenDropGetValue","getReturnValue","getCallTarget","_BinaryenCallGetTarget","getCallOperandCount","_BinaryenCallGetNumOperands","getCallOperand","_BinaryenCallGetOperand","getHostOp","_BinaryenHostGetOp","getHostOperandCount","_BinaryenHostGetNumOperands","getHostOperand","_BinaryenHostGetOperand","getHostName","_BinaryenHostGetNameOperand","getFunctionBody","getFunctionName","_BinaryenFunctionGetName","getFunctionParamCount","_BinaryenFunctionGetNumParams","getFunctionParamType","_BinaryenFunctionGetParam","getFunctionResultType","_BinaryenFunctionGetResult","relooper","_RelooperCreate","addBlock","_RelooperAddBlock","addBranch","from","to","_RelooperAddBranch","addBlockWithSwitch","_RelooperAddBlockWithSwitch","addBranchForSwitch","indexes","_RelooperAddBranchForSwitch","renderAndDispose","entry","labelHelper","_RelooperRenderAndDispose","u8s","numValues","i32s","val","ptrs","u","stringLengthUTF8","cp","u1","u2","u3","u4","arr","fromCodePoints","needsExplicitUnreachable","Unreachable","Break","Block","numChildren","traverse","data","If","Loop","Switch","_BinaryenSwitchGetCondition","Call","CallIndirect","_BinaryenCallIndirectGetNumOperands","_BinaryenCallIndirectGetOperand","LocalSet","GlobalSet","_BinaryenGlobalSetGetValue","Store","AtomicRMW","_BinaryenAtomicRMWGetPtr","_BinaryenAtomicRMWGetValue","AtomicCmpxchg","_BinaryenAtomicCmpxchgGetPtr","_BinaryenAtomicCmpxchgGetExpected","_BinaryenAtomicCmpxchgGetReplacement","AtomicWait","_BinaryenAtomicWaitGetPtr","_BinaryenAtomicWaitGetExpected","_BinaryenAtomicWaitGetTimeout","AtomicNotify","_BinaryenAtomicNotifyGetPtr","SIMDExtract","_BinaryenSIMDExtractGetVec","SIMDReplace","_BinaryenSIMDReplaceGetVec","_BinaryenSIMDReplaceGetValue","SIMDShuffle","_BinaryenSIMDShuffleGetLeft","_BinaryenSIMDShuffleGetRight","SIMDBitselect","_BinaryenSIMDBitselectGetLeft","_BinaryenSIMDBitselectGetRight","_BinaryenSIMDBitselectGetCond","SIMDShift","_BinaryenSIMDShiftGetVec","_BinaryenSIMDShiftGetShift","MemoryInit","_BinaryenMemoryInitGetDest","_BinaryenMemoryInitGetOffset","_BinaryenMemoryInitGetSize","DataDrop","MemoryCopy","_BinaryenMemoryCopyGetDest","_BinaryenMemoryCopyGetSource","_BinaryenMemoryCopyGetSize","MemoryFill","_BinaryenMemoryFillGetDest","_BinaryenMemoryFillGetValue","_BinaryenMemoryFillGetSize","Select","Drop","Host","Nop","program_1","module_1","TypeKind","TypeFlags","v128_zero","cachedNullableType","byteSize","ceil","signatureReference","nonNullableType","isize64","isize32","usize64","usize32","auto","clz","computeSmallIntegerShift","targetType","computeSmallIntegerMask","classType","asNullable","signednessIsRelevant","currentClass","targetClass","currentFunction","targetFunction","isStrictlyAssignableTo","commonDenominator","signednessIsImportant","toNativeType","toNativeZero","toNativeOne","toNativeNegOne","typesToNativeTypes","types","numTypes","typesToString","cachedFunctionTarget","parameterNames","requiredParameters","hasRest","signatureTypes","compare","equals","asFunctionTarget","getDefaultParameterName","thisThisType","targetThisType","thisParameterTypes","targetParameterTypes","numParameters","thisParameterType","targetParameterType","thisReturnType","targetReturnType","makeSignatureString","optionalStart","restIndex","cachedDefaultParameterNames","IdentifierHandling","tokenFromKeyword","AS","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DEFAULT","DELETE","ELSE","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","IS","KEYOF","LET","MODULE","OF","PACKAGE","PRIVATE","PROTECTED","PUBLIC","TYPE","TYPEOF","VAR","WITH","YIELD","tokenIsAlsoIdentifier","token","isIllegalVariableIdentifier","operatorTokenToString","DOT_DOT_DOT","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","a","b","Tokenizer","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","identifierHandling","unsafeNext","maxTokenLength","STRINGLITERAL","chr","OPENPAREN","CLOSEPAREN","isDecimalDigit","FLOATLITERAL","DOT","commentStartPos","LINE","TRIPLE","closed","_0_expected","testInteger","INTEGERLITERAL","COLON","SEMICOLON","EQUALS_GREATERTHAN","QUESTION","OPENBRACKET","CLOSEBRACKET","OPENBRACE","CLOSEBRACE","AT","isIdentifierStart","isKeywordCharacter","posBefore","isIdentifierPart","keywordToken","ALWAYS","PREFER","isWhiteSpace","Invalid_character","ENDOFFILE","peek","checkOnNewLine","maxCompoundLength","tokenBefore","tokenPosBefore","skipIdentifier","skip","mark","state","reusableState","State","discard","reset","readIdentifier","quote","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","fromCharCode","readRegexpPattern","escaped","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_4","sepEnd","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_10","i64_mul","Digit_expected","i64_3","Octal_digit_expected","i64_1","Binary_digit_expected","readFloat","readDecimalFloat","parseFloat","readHexFloat","remain","value32","invalid","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","g","e","window","ReportMode","builtins_1","currentThisExpression","currentElementExpression","resolveType","ctxElement","ctxTypes","reportMode","REPORT","resolveNamedType","resolveFunctionType","nameNode","typeArgumentNodes","isSimpleType","simpleName","Type_0_is_not_generic","Basic_type_0_cannot_be_nullable","resolveClassInclTypeArguments","makeMap","type_1","resolveBuiltinNativeType","resolveBuiltinIndexofType","resolveBuiltinValueofType","resolveBuiltinReturnTypeType","resolveTypeArguments","typeNode","Cannot_find_name_0","parameterNodes","parameterNode","REST","parameterTypeNode","Type_expected","returnTypeNode","Expected_0_type_arguments_but_got_1","typeArgument","Index_signature_is_missing_in_type_0","Type_0_has_no_call_signatures","prev","Property_0_does_not_exist_on_type_1","alternativeReportNode","minParameterCount","maxParameterCount","argumentCount","resolveExpression","ctxFlow","ctxType","resolveAssertionExpression","resolveUnaryPrefixExpression","resolveUnaryPostfixExpression","resolveBinaryExpression","resolveThisExpression","resolveSuperExpression","resolveIdentifier","actualFunction","resolveLiteralExpression","resolvePropertyAccessExpression","resolveElementAccessExpression","resolveCallExpression","ensureResolvedLazyGlobal","targetNode","propertyName","indexedGet","arrayType","resolvedType","targetExpression","determineIntegerLiteralType","intValue","i64_is_i8","i64_is_u8","i64_is_i16","i64_is_u16","i64_is_i32","i64_is_u32","i64_is_bool","NONNULL","i64_sub","i64_zero","thisLocal","lookupLocal","_this_cannot_be_referenced_in_current_location","superLocal","_super_can_only_be_referenced_in_a_derived_class","literalType","BuiltinSymbols","resolveFunctionInclTypeArguments","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","actualParent","resolvedInstance","classTypeArguments","classTypeParameters","numClassTypeArguments","classTypeParameterName","numFunctionTypeArguments","signatureNode","functionTypeNode","signatureParameters","numSignatureParameters","parameterDeclaration","reportNode","resolvedTypeArguments","numTypeParameters","baseClass","nameInclTypeParamters","baseMembers","baseMembers_1","baseMembers_1_1","baseMemberName","baseMember","instanceMemberPrototypes","fieldTypeNode","fieldType","baseField","atEnd","fieldInstance","boundPrototype","propertyInstance","ctorPrototype","ctorInstance","overloadPrototype","operatorInstance","LocalFlags","FlowFlags","ANY_CATEGORICAL","ANY_CONDITIONAL","FieldFlags","scopedLocals","fieldFlags","parentFunction","continueLabel","localFlags","inlineFunction","inlineReturnLabel","createInline","fork","branch","slice","getTempLocal","temps","k_1","unsetLocalFlag","pop","getAutoreleaseLocal","SCOPED","setLocalFlag","RETAINED","freeTempLocal","getAndFreeTempLocal","getScopedLocal","addScopedLocal","scopedLocal","addScopedAlias","existingLocal","scopedAlias","freeScopedLocals","scope","isLocalFlag","defaultIfInlined","isAnyLocalFlag","pushBreakLabel","stack","popBreakLabel","inherit","inheritConditional","CONDITIONALLY_RETAINED","READFROM","CONDITIONALLY_READFROM","WRITTENTO","CONDITIONALLY_WRITTENTO","inheritMutual","leftLocalFlags","numLeftLocalFlags","rightLocalFlags","numRightLocalFlags","combinedFlags","max","isNonnull","inheritNonnullIfTrue","EqzI32","EqzI64","inheritNonnullIfFalse","EqI32","EqI64","NeI32","NeI64","canOverflow","WRAPPED","canConversionOverflow","global_1","EqF32","EqF64","NeF32","NeF64","LtI32","LtU32","LtI64","LtU64","LtF32","LtF64","LeI32","LeU32","LeI64","LeU64","LeF32","LeF64","GtI32","GtU32","GtI64","GtU64","GtF32","GtF64","GeI32","GeU32","GeI64","GeU64","GeF32","GeF64","MulI32","AndI32","ShlI32","ShrI32","ShrU32","DivU32","RemI32","RemU32","ClzI32","CtzI32","PopcntI32","MIN_VALUE","fromType","last","instanceName","levels","findUsedLocalsVisit","used","findUsedLocals","Options","importMemory","sharedMemory","importTable","explicitStart","features","noUnsafe","feature","Constraints","RuntimeFeatures","mangleImportName_moduleName","mangleImportName_elementName","Compiler","currentInlineFunctions","currentEnum","currentType","memorySegments","stringSegments","functionTable","argcVar","argcSet","runtimeFeatures","skippedAutoreleases","f32ModInstance","f64ModInstance","f32PowInstance","f64PowInstance","Atomics","MutableGloabls","SIMD128","BulkMemory","SignExt","compile","startFunctionInstance","startFunctionBody","currentFlow","currentBody","heap_base","rtti_base","files","compileFile","compileExports","startIsEmpty","started","unshift","funcRef","ensureFunctionType","compileVisitGlobals","compileVisitMembers","compileRTTI","i64_align","isSharedMemory","i64_shr_u","ensureModuleExports","members_1","members_1_1","ensureModuleExport","prefix","fullName","setter","Cannot_export_a_mutable_global","ensureTrampoline","ensureArgcSet","COMPILED","ensureModuleFieldGetter","ensureModuleFieldSetter","isUnmanaged","subPrefix","loadExpr","isManaged","makeRetain","nativeType","nativeSizeType","valueExpr","makeRetainRelease","compileElement","compileMembers","compileGlobal","compileEnum","compileFunctionUsingTypeArguments","compileClassUsingTypeArguments","element_1","exportsStar_1","exportsStar_1_1","compileFileByPath","normalizedPathWithoutExtension","pathWithIndex","previousBody","previousFlow","compileTopLevelStatement","finishAutoreleases","numLocals","initExpr","initAutoreleaseSkipped","initializerNode","compileExpression","Type_0_is_not_assignable_to_type_1","isDeclaredConstant","isDeclaredInline","MODULE_IMPORT","mangleImportName","initializeInStart","Mutable_value_cannot_be_inlined","decoratorNodes","previousValue","previousValueIsMut","isInline","initInStart","valueNode","In_const_enum_declarations_member_initializer_must_be_constant_expression","Enum_member_must_have_initializer","AddI32","makeGlobalAssignment","compileFunction","resultType","compileFunctionBody","stmts","bodyNode","compileStatements","MAIN","indexBefore","performAutoreleases","nonNull","temp","makeAllocation","makeFieldInitialization","Constructors_for_derived_classes_must_contain_a_super_call","A_function_whose_declared_type_is_not_void_must_return_a_value","previousType","An_implementation_cannot_be_declared_in_ambient_contexts","flatten","Function_implementation_is_missing_or_not_immediately_following_the_declaration","compileClass","staticMembers","compileInterfaceDeclaration","addMemorySegment","alignment","ensureStaticString","stringValue","stringSegment","rtHeaderSize","runtimeHeaderSize","ensureStaticArrayBuffer","elementType","byteLength","bufferInstance","buf","writeI64","ensureStaticArrayHeader","bufferSegment","arrayInstance","arrayInstanceSize","bufferLength","arrayLength","bufferAddress32","ensureFunctionTableEntry","TRAMPOLINE","memberStatements","compileStatement","isLastInBody","compileBlockStatement","compileBreakStatement","compileContinueStatement","compileDoStatement","compileEmptyStatement","compileExpressionStatement","compileForStatement","compileIfStatement","compileReturnStatement","compileSwitchStatement","compileThrowStatement","compileTryStatement","compileVariableStatement","compileVoidStatement","compileWhileStatement","addDebugLocation","isBody","numStatements","outerFlow","innerFlow","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","condExpr","makeIsTrueish","alwaysFalse","terminates","continues","breaks","fallsThrough","alwaysTrue","stmts_1","incrExpr","loopLabel","bodyStatement","needsLabel","ifTrueStmts","ifTrueFlow","ifFalseFlow","ifFalseStmts","valueExpression","constraints","ANY_RETAINED","numCases","context","tempLocal","tempLocalIndex","breakIndex","defaultIndex","currentBlock","commonCategorical","commonConditional","isLast","nextLabel","count","newArgs","compileAbort","numDeclarations","initializers","isConst","_const_declarations_must_be_initialized","CONSTANT","compileInlineConstant","contextualType","compileAssertionExpression","compileBinaryExpression","compileCallExpression","compileCommaExpression","compileElementAccessExpression","compileFunctionExpression","compileIdentifierExpression","compileInstanceOfExpression","compileLiteralExpression","compileNewExpression","compilePropertyAccessExpression","compileTernaryExpression","compileUnaryPostfixExpression","compileUnaryPrefixExpression","wrap","convertExpression","ensureSmallIntegerWrap","explicit","Object_is_possibly_null","Conversion_from_type_0_to_1_requires_an_explicit_cast","PromoteF32","DemoteF64","TruncF32ToI64","TruncF32ToI32","TruncF32ToU64","TruncF32ToU32","TruncF64ToI64","TruncF64ToI32","TruncF64ToU64","TruncF64ToU32","ConvertI64ToF32","ConvertU64ToF32","ConvertI32ToF32","ConvertU32ToF32","ConvertI64ToF64","ConvertU64ToF64","ConvertI32ToF64","ConvertU32ToF64","WrapI64","ExtendI32","ExtendU32","inheritedConstraints","PREFIX","exceptVoid","Expression_is_never_null","tempIndex","leftExpr","leftType","rightExpr","rightType","commonType","compound","compileBinaryOverload","Operator_0_cannot_be_applied_to_types_1_and_2","AllTrueVecI8x16","EqVecI8x16","AnyTrueVecI8x16","NeVecI8x16","compileAssignment","AddI64","AddF32","AddF64","SubI32","SubI64","SubF32","SubF64","MulI64","MulF32","MulF64","namespace","makeCallDirect","DivI32","DivI64","DivU64","DivF32","DivF64","RemI64","RemU64","intType","ShlI64","The_0_operator_cannot_be_applied_to_type_1","ShrI64","ShrU64","AndI64","OrI32","OrI64","XorI32","XorI64","rightFlow","performAutoreleasesWithValue","leftAutoreleaseSkipped","rightAutoreleaseSkipped","retainLeftInElse","moveAutorelease","rightStmts","makeRelease","retainLeftInThen","makeAssignment","compileUnaryOverload","thisExpression","checkUnsafe","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","isUnchecked","indexedSet","Index_signature_in_type_0_only_permits_reading","indexExpression","tee","makeLocalAssignment","makeFieldAssignment","makeAutorelease","nativeReturnType","thisExpr_1","thisExpr","elementExpr","tempLocalTarget","tempLocalElement","makeSkippedRelease","nativeFieldType","nativeThisType","tempThis","tempValue","flow_2","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","baseClassInstance","theCall","compileCallDirect","ensureConstructor","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","indexArg","compileCallExpressionBuiltin","inferredTypes","argumentNodes","argumentExprs","templateName","argumentExpression","inferredType","concreteType","Type_argument_expected","compileCallIndirect","compileCall","checkCallSignature","hasThis","minimum","Expected_at_least_0_arguments_but_got_1","Expression_is_unsafe","argumentExpressions","thisArg","parameterTypes_1","makeCallInline","Function_0_cannot_be_inlined_into_itself","numArgumentsInclThis","immediatelyDropped","usedLocals","paramExpr","paramType","argumentLocal","baseInstance","initType","originalSignature","originalName","originalParameterTypes","originalParameterDeclarations","minArguments","minOperands","maxArguments","maxOperands","numOptional","forwardedOperands","operandIndex","trampolineSignature","ofN","argc","Optional_parameter_must_have_an_initializer","ensureArgcVar","setargc","oldExpr","newExpr","temp1","temp2","undoAutorelease","fromInnerFlow","toOuterFlow","clearFlags","lengthBefore","skipAutorelease","expr_1","theOperands","numOperands","isCallImport","allOptionalsAreConstant","expr_2","makeCallIndirect","numExpressions","exprs","contextualSignature","numPresentParameters","thisTypeNode","maybeCompileEnclosingSource","flow_3","actualFunction_1","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","scopedThis","superType","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","actualType","implicitlyNegate","compileArrayLiteral","floatValue","i64_to_f32","i64_to_f64","compileStringLiteral","compileObjectLiteral","tempDataStart","nativeElementType","bufferAddress","arraySegment","arrayAddress","alignLog2","nativeArrayType","dataStart","ctor","Constructor_of_class_0_must_not_require_any_arguments","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","hasErrors","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","compileInstantiate","baseCtor","allocExpr","propertyAccess","theEnum","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","ifThenFlow","ifThenExpr","ifThenType","IfThenAutoreleaseSkipped","ifElseFlow","ifElseExpr","ifElseType","ifElseAutoreleaseSkipped","getValue","setValue","NegF32","NegF64","makeIsFalseish","ExtendI8ToI32","ExtendI16ToI32","thisLocalIndex","fieldPrototype","makeInstanceOfClass","idTemp","idExpr","conditions","single","Auto","compiler_1","compiler","isAsm","directize","isInteger","evaluateConstantType","isFloat","isBoolean","isSigned","isReference","isString","isArray","isArrayLike","isFunction","isDefined","checkTypeAbsent","checkArgsRequired","SWALLOW","isConstant","isVoid","lengthof","sizeof","checkTypeRequired","alignof","ctz","checkArgsOptional","typeArgumentsRange","Type_0_has_no_property_1","nameof","popcnt","checkTypeOptional","ClzI64","CtzI64","PopcntI64","rotl","RotlI32","RotlI64","rotr","RotrI32","RotrI64","abs","tempLocal1","tempLocalIndex2","tempLocalIndex1","wasm64","AbsF32","AbsF64","MaxF32","MaxF64","tempLocal0","min","MinF32","MinF64","floor","CeilF32","FloorF32","CeilF64","FloorF64","copysign","CopysignF32","CopysignF64","nearest","NearestF32","NearestF64","reinterpret","ReinterpretF32","ReinterpretF64","ReinterpretI32","ReinterpretI64","sqrt","SqrtF32","SqrtF64","trunc","TruncF32","TruncF64","outType","immOffset","evaluateImmediateOffset","immAlign","naturalAlign","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","inType","atomic_add","atomic_sub","atomic_and","atomic_or","atomic_xor","atomic_xchg","Add","Sub","And","Or","Xor","Xchg","memory_size","MemorySize","memory_grow","MemoryGrow","alreadyUnchecked","call_direct","arg0Type","operandExprs","nativeParamTypes","operandType","instantiate","User_defined_0","Expression_must_be_a_compile_time_constant","off","v128_splat","SplatVecI8x16","SplatVecI16x8","SplatVecI32x4","SplatVecI64x2","SplatVecF32x4","SplatVecF64x2","v128_extract_lane","ExtractLaneSVecI8x16","ExtractLaneUVecI8x16","ExtractLaneSVecI16x8","ExtractLaneUVecI16x8","ExtractLaneVecI32x4","ExtractLaneVecI64x2","ExtractLaneVecF32x4","ExtractLaneVecF64x2","maxIdx","v128_replace_lane","ReplaceLaneVecI8x16","ReplaceLaneVecI16x8","ReplaceLaneVecI32x4","ReplaceLaneVecI64x2","ReplaceLaneVecF32x4","ReplaceLaneVecF64x2","v128_shuffle","laneWidth","laneCount","argN","off8","idx8","v128_add","v128_sub","v128_mul","v128_div","v128_add_saturate","v128_sub_saturate","v128_min","v128_max","v128_eq","v128_ne","v128_lt","v128_le","v128_gt","v128_ge","AddVecI8x16","AddVecI16x8","AddVecI32x4","AddVecI64x2","AddVecF32x4","AddVecF64x2","SubVecI8x16","SubVecI16x8","SubVecI32x4","SubVecI64x2","SubVecF32x4","SubVecF64x2","MulVecI8x16","MulVecI16x8","MulVecI32x4","MulVecF32x4","MulVecF64x2","DivVecF32x4","DivVecF64x2","AddSatSVecI8x16","AddSatUVecI8x16","AddSatSVecI16x8","AddSatUVecI16x8","SubSatSVecI8x16","SubSatUVecI8x16","SubSatSVecI16x8","SubSatUVecI16x8","MinVecF32x4","MinVecF64x2","MaxVecF32x4","MaxVecF64x2","EqVecI16x8","EqVecI32x4","EqVecF32x4","EqVecF64x2","NeVecI16x8","NeVecI32x4","NeVecF32x4","NeVecF64x2","LtSVecI8x16","LtUVecI8x16","LtSVecI16x8","LtUVecI16x8","LtSVecI32x4","LtUVecI32x4","LtVecF32x4","LtVecF64x2","LeSVecI8x16","LeUVecI8x16","LeSVecI16x8","LeUVecI16x8","LeSVecI32x4","LeUVecI32x4","LeVecF32x4","LeVecF64x2","GtSVecI8x16","GtUVecI8x16","GtSVecI16x8","GtUVecI16x8","GtSVecI32x4","GtUVecI32x4","GtVecF32x4","GtVecF64x2","GeSVecI8x16","GeUVecI8x16","GeSVecI16x8","GeUVecI16x8","GeSVecI32x4","GeUVecI32x4","GeVecF32x4","GeVecF64x2","v128_neg","v128_abs","v128_sqrt","v128_convert","v128_trunc","NegVecI8x16","NegVecI16x8","NegVecI32x4","NegVecI64x2","NegVecF32x4","NegVecF64x2","AbsVecF32x4","AbsVecF64x2","SqrtVecF32x4","SqrtVecF64x2","ConvertSVecI32x4ToVecF32x4","ConvertUVecI32x4ToVecF32x4","ConvertSVecI64x2ToVecF64x2","ConvertUVecI64x2ToVecF64x2","TruncSatSVecF32x4ToVecI32x4","TruncSatUVecF32x4ToVecI32x4","TruncSatSVecF64x2ToVecI64x2","TruncSatUVecF64x2ToVecI64x2","v128_shl","v128_shr","ShlVecI8x16","ShlVecI16x8","ShlVecI32x4","ShlVecI64x2","ShrSVecI8x16","ShrUVecI8x16","ShrSVecI16x8","ShrUVecI16x8","ShrSVecI32x4","ShrUVecI32x4","ShrSVecI64x2","ShrUVecI64x2","v128_and","v128_or","v128_xor","AndVec128","OrVec128","XorVec128","v128_not","NotVec128","v128_bitselect","v128_any_true","v128_all_true","AnyTrueVecI16x8","AnyTrueVecI32x4","AnyTrueVecI64x2","AllTrueVecI16x8","AllTrueVecI32x4","AllTrueVecI64x2","idof","visit_globals","visit_members","i32_clz","deferASM","i64_clz","i32_ctz","i64_ctz","i32_popcnt","i64_popcnt","i32_rotl","i64_rotl","i32_rotr","i64_rotr","f32_abs","f64_abs","f32_max","f64_max","f32_min","f64_min","f32_ceil","f64_ceil","f32_floor","f64_floor","f32_copysign","f64_copysign","f32_nearest","f64_nearest","i32_reinterpret_f32","i64_reinterpret_f64","f32_reinterpret_i32","f64_reinterpret_i64","f32_sqrt","f64_sqrt","f32_trunc","f64_trunc","i32_load8_s","i32_load8_u","i32_load16_s","i32_load16_u","i32_load","i64_load8_s","i64_load8_u","i64_load16_s","i64_load16_u","i64_load32_s","i64_load32_u","i64_load","f32_load","f64_load","i32_store8","i32_store16","i32_store","i64_store8","i64_store16","i64_store32","i64_store","f32_store","f64_store","i32_atomic_load8_u","i32_atomic_load16_u","i32_atomic_load","i64_atomic_load8_u","i64_atomic_load16_u","i64_atomic_load32_u","i64_atomic_load","i32_atomic_store8","i32_atomic_store16","i32_atomic_store","i64_atomic_store8","i64_atomic_store16","i64_atomic_store32","i64_atomic_store","i32_atomic_rmw8_add_u","i32_atomic_rmw16_add_u","i32_atomic_rmw_add","i64_atomic_rmw8_add_u","i64_atomic_rmw16_add_u","i64_atomic_rmw32_add_u","i64_atomic_rmw_add","i32_atomic_rmw8_sub_u","i32_atomic_rmw16_sub_u","i32_atomic_rmw_sub","i64_atomic_rmw8_sub_u","i64_atomic_rmw16_sub_u","i64_atomic_rmw32_sub_u","i64_atomic_rmw_sub","i32_atomic_rmw8_and_u","i32_atomic_rmw16_and_u","i32_atomic_rmw_and","i64_atomic_rmw8_and_u","i64_atomic_rmw16_and_u","i64_atomic_rmw32_and_u","i64_atomic_rmw_and","i32_atomic_rmw8_or_u","i32_atomic_rmw16_or_u","i32_atomic_rmw_or","i64_atomic_rmw8_or_u","i64_atomic_rmw16_or_u","i64_atomic_rmw32_or_u","i64_atomic_rmw_or","i32_atomic_rmw8_u_xor","i32_atomic_rmw16_u_xor","i32_atomic_rmw_xor","i64_atomic_rmw8_xor_u","i64_atomic_rmw16_xor_u","i64_atomic_rmw32_xor_u","i64_atomic_rmw_xor","i32_atomic_rmw8_xchg_u","i32_atomic_rmw16_xchg_u","i32_atomic_rmw_xchg","i64_atomic_rmw8_xchg_u","i64_atomic_rmw16_xchg_u","i64_atomic_rmw32_xchg_u","i64_atomic_rmw_xchg","i32_atomic_rmw8_cmpxchg_u","i32_atomic_rmw16_cmpxchg_u","i32_atomic_rmw_cmpxchg","i64_atomic_rmw8_cmpxchg_u","i64_atomic_rmw16_cmpxchg_u","i64_atomic_rmw32_cmpxchg_u","i64_atomic_rmw_cmpxchg","i32_wait","i64_wait","v128_load","v128_store","i8x16_splat","i8x16_extract_lane_s","i8x16_extract_lane_u","i8x16_replace_lane","i8x16_add","i8x16_sub","i8x16_mul","i8x16_neg","i8x16_add_saturate_s","i8x16_add_saturate_u","i8x16_sub_saturate_s","i8x16_sub_saturate_u","i8x16_shl","i8x16_shr_s","i8x16_shr_u","i8x16_any_true","i8x16_all_true","i8x16_eq","i8x16_ne","i8x16_lt_s","i8x16_lt_u","i8x16_le_s","i8x16_le_u","i8x16_gt_s","i8x16_gt_u","i8x16_ge_s","i8x16_ge_u","i16x8_splat","i16x8_extract_lane_s","i16x8_extract_lane_u","i16x8_replace_lane","i16x8_add","i16x8_sub","i16x8_mul","i16x8_neg","i16x8_add_saturate_s","i16x8_add_saturate_u","i16x8_sub_saturate_s","i16x8_sub_saturate_u","i16x8_shl","i16x8_shr_s","i16x8_shr_u","i16x8_any_true","i16x8_all_true","i16x8_eq","i16x8_ne","i16x8_lt_s","i16x8_lt_u","i16x8_le_s","i16x8_le_u","i16x8_gt_s","i16x8_gt_u","i16x8_ge_s","i16x8_ge_u","i32x4_splat","i32x4_extract_lane","i32x4_replace_lane","i32x4_add","i32x4_sub","i32x4_mul","i32x4_neg","i32x4_shl","i32x4_shr_s","i32x4_shr_u","i32x4_any_true","i32x4_all_true","i32x4_eq","i32x4_ne","i32x4_lt_s","i32x4_lt_u","i32x4_le_s","i32x4_le_u","i32x4_gt_s","i32x4_gt_u","i32x4_ge_s","i32x4_ge_u","i32x4_trunc_s_f32x4_sat","i32x4_trunc_u_f32x4_sat","i64x2_splat","i64x2_extract_lane","i64x2_replace_lane","i64x2_add","i64x2_sub","i64x2_neg","i64x2_shl","i64x2_shr_s","i64x2_shr_u","i64x2_any_true","i64x2_all_true","i64x2_trunc_s_f64x2_sat","i64x2_trunc_u_f64x2_sat","f32x4_splat","f32x4_extract_lane","f32x4_replace_lane","f32x4_add","f32x4_sub","f32x4_mul","f32x4_div","f32x4_neg","f32x4_min","f32x4_max","f32x4_abs","f32x4_sqrt","f32x4_eq","f32x4_ne","f32x4_lt","f32x4_le","f32x4_gt","f32x4_ge","f32x4_convert_s_i32x4","f32x4_convert_u_i32x4","f64x2_splat","f64x2_extract_lane","f64x2_replace_lane","f64x2_add","f64x2_sub","f64x2_mul","f64x2_div","f64x2_neg","f64x2_min","f64x2_max","f64x2_abs","f64x2_sqrt","f64x2_eq","f64x2_ne","f64x2_lt","f64x2_le","f64x2_gt","f64x2_ge","f64x2_convert_s_i64x2","f64x2_convert_u_i64x2","v8x16_shuffle","tryDeferASM","messageArg","filenameArg","typeToRuntimeFlags","argumentsRange","setCurrentTypeOnError","expectedMinimum","expectedMaximum","memory_allocate","memory_free","memory_reset","runtime_instanceof","runtime_flags","runtime_allocate","runtime_reallocate","runtime_register","runtime_discard","runtime_makeArray","capabilities","nativeSizeSize","ftype","blocks","outer","lastId","managedClasses_1","managedClasses_1_1","visitImpl","isDeclaredInLibrary","visitFunc","visitSig","fieldOffset","managedClasses_2","managedClasses_2_1","abvPrototype","managedClasses_3","managedClasses_3_1","isAcyclic","Decompiler","functionId","decompile","decompiler","decompileFunction","nativeTypeToType","decompileExpression","nested","i64_to_string","ExportsWalker","includePrivate","seen","walk","visitFile","visitElement","visitAlias","visitGlobal","visitEnum","visitFunctionInstances","visitClassInstances","visitField","visitPropertyInstances","prop","visitFunction","hasCompiledMember","e_15","e_16","visitNamespace","visitClass","IDLBuilder","indentLevel","build","indent","typeToString","members_2","members_2_1","name_1","visitInterface","TSDBuilder","unknown","numMembers","members_3","members_3_1","name_2","isInterface","Parser","backlog","seenlog","donelog","dependees","tryParseSignatureIsSignature","parseParametersThis","parseFile","isEntry","indexOf","USER","currentSource","tn","parseTopLevelStatement","startPos","parseDecorator","skipStatement","exportStart","exportEnd","defaultStart","defaultEnd","declareStart","declareEnd","contextIsAmbient","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","first","parseEnum","parseVariable","parseFunction","parseStatement","parseClassOrInterface","parseNamespace","parseExportImport","parseImport","parseTypeDeclaration","An_export_assignment_cannot_have_modifiers","parseExportDefaultAlias","parseExport","_0_modifier_cannot_be_used_here","Decorators_are_not_valid_here","nextFile","getDependee","dependent","clear","parseType","acceptParenthesized","suppressErrors","isNullableSignature","tryParseFunctionType","Unexpected_token","innerType","Identifier_expected","nullable","parameter","bracketStart","bracketRange","isSignature","A_rest_parameter_cannot_be_optional","OPTIONAL","param","parseArguments","parseVariableDeclaration","parentFlags","parentDecorators","DEFINITE_ASSIGNMENT","Initializers_are_not_allowed_in_ambient_contexts","parseExpression","A_definite_assignment_assertion_is_not_permitted_in_this_context","parseEnumValue","parseReturn","parseTypeParameters","seenOptional","typeParameter","parseTypeParameter","Required_type_parameters_may_not_follow_optional_type_parameters","Type_parameter_list_cannot_be_empty","parseParameters","isConstructor","seenRest","reportedRest","parseParameter","A_rest_parameter_must_be_last_in_a_parameter_list","A_required_parameter_cannot_follow_an_optional_parameter","isRest","isOptional","startRange","accessFlags","A_parameter_property_cannot_be_declared_using_a_rest_parameter","A_rest_parameter_cannot_have_an_initializer","Parameter_cannot_have_question_mark_and_initializer","signatureStart","isSetter","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","parseBlockStatement","parseFunctionExpression","parseFunctionExpressionCommon","bodyExpression","Interface_declaration_cannot_have_implements_clause","parseClassMember","parseClassExpression","VIRTUAL","accessStart","accessEnd","staticStart","staticEnd","abstractStart","abstractEnd","GENERIC_CONTEXT","readonlyStart","readonlyEnd","state_1","setEnd","retIndex","parseIndexSignatureDeclaration","typeParametersStart","Type_parameters_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","Type_annotation_cannot_appear_on_a_constructor_declaration","A_set_accessor_cannot_have_a_return_type_annotation","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","retMethod","Constructor_implementation_is_missing","Optional_properties_are_not_supported","retField","parseExportMember","asIdentifier","skipFrom","parseImportDeclaration","topLevel","parseBreak","parseContinue","parseDoStatement","parseForStatement","parseIfStatement","A_return_statement_can_only_be_used_within_a_function_body","parseSwitchStatement","parseThrowStatement","parseTryStatement","parseVoidStatement","parseWhileStatement","parseExpressionStatement","elseStatement","case_","parseSwitchCase","_case_or_default_expected","parseExpressionStart","precedence","determinePrecedenceStart","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","again","startPos_1","identifierText","_super_must_be_followed_by_an_argument_list_or_member_access","regexpPattern","Expression_expected","tryParseTypeArgumentsBeforeArguments","nextPrecedence","maybeParseCallExpression","determinePrecedence","commaExprs","isRightAssociative","joinPropertyCall","callee","inner","skipBlock","depth","Precedence","binaryen","wrapModule","emitStackIR","emitAsmjs","Binaryen","__memory_allocate","_malloc","__memory_free","_free","__memory_copy","_memmove","__store","HEAPU8","__load","globalScope","UnreachableError","captureStackTrace","AssertionError","defineProperties","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz32","round","y","sign","isTrueish","fromCodePoint","replaceAll","search","replacment","res","split","Number","capacity","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","HEAP","HEAP_OFFSET","oldHeap","fill","copy","copyWithin","f32_as_i32","i32_as_f32","f64_as_i64","i64_as_f64","Long","ZERO","i64_one","ONE","lo","hi","fromBits","low","high","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","i64_and","and","i64_or","or","i64_xor","xor","shl","i64_shr","shr","shru","i64_not","not","i64_eq","eq","i64_ne","ne","fromInt","minSafeF32","fromNumber","maxSafeF32","i64_is_f32","gte","lte","minSafeF64","maxSafeF64","i64_is_f64","toNumber","unsigned","wasm","WebAssembly","Instance","isLong","obj","__isLong__","INT_CACHE","UINT_CACHE","cachedObj","cache","isNaN","UZERO","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","neg","TWO_PWR_32_DBL","lowBits","highBits","pow_dbl","fromString","radix","RangeError","radixToPower","power","fromValue","TWO_PWR_16_DBL","TWO_PWR_24","UONE","NEG_ONE","LongPrototype","toInt","isZero","isNegative","radixLong","rem1","rem","remDiv","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","bit","eqz","isPositive","isOdd","isEven","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","le","greaterThan","gt","greaterThanOrEqual","ge","thisNeg","otherNeg","negate","addend","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","subtract","subtrahend","multiply","multiplier","get_high","b00","divide","divisor","approx","div_u","div_s","log2","log","LN2","delta","approxRes","approxRem","modulo","rem_u","rem_s","shiftLeft","numBits","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","__decorate","unmanaged","decompiler_1","definitions_1","formatDiagnostic","parser_1","parser","nextDiagnostic","isInfo","isWarning","isError","createOptions","setTarget","setNoAssert","setImportMemory","setSharedMemory","setImportTable","setSourceMap","setMemoryBase","setGlobalAlias","setExplicitStart","setNoUnsafe","FEATURE_SIGN_EXTENSION","FEATURE_MUTABLE_GLOBAL","FEATURE_BULK_MEMORY","FEATURE_SIMD","FEATURE_THREADS","enableFeature","setOptimizeLevelHints","optimizeLevel","shrinkLevel","finishParsing","compileProgram","decompileModule","buildIDL","buildTSD","buildRTTI","cls","bitsetIs","map","bitsetSet","isSet","CharCode","lookupInUnicodeMap","unicodeIdentifierStart","unicodeIdentifierPart","mid","midVal","makeArray","cloned","makeSet","original_1","original_1_1","v","overrides","original_2","original_2_1","overrides_1","overrides_1_1","overrides_2","overrides_2_1","separator","ipos","dirname","origin","indentX1","indentX2","indentX4","readI32","readI64","readI8","readI16","readF32","readF64","valueI64"],"mappings":"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AK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IACpB,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC1C,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAEtCC,EAA+B,CACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IACpB,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KACxB,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO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","file":"assemblyscript.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"binaryen\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"binaryen\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"assemblyscript\"] = factory(require(\"binaryen\"));\n\telse\n\t\troot[\"assemblyscript\"] = factory(root[\"binaryen\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__20__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 17);\n","/**\n * Common constants.\n * @module common\n *//***/\n\n/** Indicates traits of a {@link Node} or {@link Element}. */\nexport enum CommonFlags {\n /** No flags set. */\n NONE = 0,\n\n // Basic modifiers\n\n /** Has an `import` modifier. */\n IMPORT = 1 << 0,\n /** Has an `export` modifier. */\n EXPORT = 1 << 1,\n /** Has a `declare` modifier. */\n DECLARE = 1 << 2,\n /** Has a `const` modifier. */\n CONST = 1 << 3,\n /** Has a `let` modifier. */\n LET = 1 << 4,\n /** Has a `static` modifier. */\n STATIC = 1 << 5,\n /** Has a `readonly` modifier. */\n READONLY = 1 << 6,\n /** Has an `abstract` modifier. */\n ABSTRACT = 1 << 7,\n /** Has a `public` modifier. */\n PUBLIC = 1 << 8,\n /** Has a `private` modifier. */\n PRIVATE = 1 << 9,\n /** Has a `protected` modifier. */\n PROTECTED = 1 << 10,\n /** Has a `get` modifier. */\n GET = 1 << 11,\n /** Has a `set` modifier. */\n SET = 1 << 12,\n /** Has a definite assignment assertion `!` as in `x!: i32;`. */\n DEFINITE_ASSIGNMENT = 1 << 13,\n\n // Extended modifiers usually derived from basic modifiers\n\n /** Is ambient, that is either declared or nested in a declared element. */\n AMBIENT = 1 << 14,\n /** Is generic. */\n GENERIC = 1 << 15,\n /** Is part of a generic context. */\n GENERIC_CONTEXT = 1 << 16,\n /** Is an instance member. */\n INSTANCE = 1 << 17,\n /** Is a constructor. */\n CONSTRUCTOR = 1 << 18,\n /** Is a module export. */\n MODULE_EXPORT = 1 << 19,\n /** Is a module import. */\n MODULE_IMPORT = 1 << 20,\n\n // Compilation states\n\n /** Is resolved. */\n RESOLVED = 1 << 21,\n /** Is compiled. */\n COMPILED = 1 << 22,\n /** Has a constant value and is therefore inlined. */\n INLINED = 1 << 23,\n /** Is scoped. */\n SCOPED = 1 << 24,\n /** Is a trampoline. */\n TRAMPOLINE = 1 << 25,\n /** Is a virtual method. */\n VIRTUAL = 1 << 26,\n /** Is the main function. */\n MAIN = 1 << 27,\n\n // Other\n\n /** Is quoted. */\n QUOTED = 1 << 28\n}\n\n/** Path delimiter inserted between file system levels. */\nexport const PATH_DELIMITER = \"/\";\n/** Substitution used to indicate the parent directory. */\nexport const PARENT_SUBST = \"..\";\n/** Function name prefix used for getters. */\nexport const GETTER_PREFIX = \"get:\";\n/** Function name prefix used for setters. */\nexport const SETTER_PREFIX = \"set:\";\n/** Delimiter used between class names and instance members. */\nexport const INSTANCE_DELIMITER = \"#\";\n/** Delimiter used between class and namespace names and static members. */\nexport const STATIC_DELIMITER = \".\";\n/** Delimiter used between a function and its inner elements. */\nexport const INNER_DELIMITER = \"~\";\n/** Substitution used to indicate a library directory. */\nexport const LIBRARY_SUBST = \"~lib\";\n/** Library directory prefix. */\nexport const LIBRARY_PREFIX = LIBRARY_SUBST + PATH_DELIMITER;\n/** Path index suffix. */\nexport const INDEX_SUFFIX = PATH_DELIMITER + \"index\";\n\n/** Common compiler symbols. */\nexport namespace CommonSymbols {\n // special\n export const EMPTY = \"\";\n // types\n export const i8 = \"i8\";\n export const i16 = \"i16\";\n export const i32 = \"i32\";\n export const i64 = \"i64\";\n export const isize = \"isize\";\n export const u8 = \"u8\";\n export const u16 = \"u16\";\n export const u32 = \"u32\";\n export const u64 = \"u64\";\n export const usize = \"usize\";\n export const bool = \"bool\";\n export const f32 = \"f32\";\n export const f64 = \"f64\";\n export const v128 = \"v128\";\n export const i8x16 = \"i8x16\";\n export const u8x16 = \"u8x16\";\n export const i16x8 = \"i16x8\";\n export const u16x8 = \"u16x8\";\n export const i32x4 = \"i32x4\";\n export const u32x4 = \"u32x4\";\n export const i64x2 = \"i64x2\";\n export const u64x2 = \"u64x2\";\n export const f32x4 = \"f32x4\";\n export const f64x2 = \"f64x2\";\n export const void_ = \"void\";\n export const number = \"number\";\n export const boolean = \"boolean\";\n export const string = \"string\";\n export const native = \"native\";\n export const indexof = \"indexof\";\n export const valueof = \"valueof\";\n export const returnof = \"returnof\";\n // aliases\n export const null_ = \"null\";\n export const true_ = \"true\";\n export const false_ = \"false\";\n // objects\n export const this_ = \"this\";\n export const super_ = \"super\";\n export const constructor = \"constructor\";\n // constants\n export const ASC_TARGET = \"ASC_TARGET\";\n export const ASC_NO_TREESHAKING = \"ASC_NO_TREESHAKING\";\n export const ASC_NO_ASSERT = \"ASC_NO_ASSERT\";\n export const ASC_MEMORY_BASE = \"ASC_MEMORY_BASE\";\n export const ASC_OPTIMIZE_LEVEL = \"ASC_OPTIMIZE_LEVEL\";\n export const ASC_SHRINK_LEVEL = \"ASC_SHRINK_LEVEL\";\n export const ASC_FEATURE_MUTABLE_GLOBAL = \"ASC_FEATURE_MUTABLE_GLOBAL\";\n export const ASC_FEATURE_SIGN_EXTENSION = \"ASC_FEATURE_SIGN_EXTENSION\";\n export const ASC_FEATURE_BULK_MEMORY = \"ASC_FEATURE_BULK_MEMORY\";\n export const ASC_FEATURE_SIMD = \"ASC_FEATURE_SIMD\";\n export const ASC_FEATURE_THREADS = \"ASC_FEATURE_THREADS\";\n // classes\n export const I8 = \"I8\";\n export const I16 = \"I16\";\n export const I32 = \"I32\";\n export const I64 = \"I64\";\n export const Isize = \"Isize\";\n export const U8 = \"U8\";\n export const U16 = \"U16\";\n export const U32 = \"U32\";\n export const U64 = \"U64\";\n export const Usize = \"Usize\";\n export const Bool = \"Bool\";\n export const F32 = \"F32\";\n export const F64 = \"F64\";\n export const V128 = \"V128\";\n export const String = \"String\";\n export const Array = \"Array\";\n export const FixedArray = \"FixedArray\";\n export const Set = \"Set\";\n export const Map = \"Map\";\n export const ArrayBufferView = \"ArrayBufferView\";\n export const ArrayBuffer = \"ArrayBuffer\";\n export const Math = \"Math\";\n export const Mathf = \"Mathf\";\n export const Int8Array = \"Int8Array\";\n export const Int16Array = \"Int16Array\";\n export const Int32Array = \"Int32Array\";\n export const Int64Array = \"Int64Array\";\n export const Uint8Array = \"Uint8Array\";\n export const Uint8ClampedArray = \"Uint8ClampedArray\";\n export const Uint16Array = \"Uint16Array\";\n export const Uint32Array = \"Uint32Array\";\n export const Uint64Array = \"Uint64Array\";\n export const Float32Array = \"Float32Array\";\n export const Float64Array = \"Float64Array\";\n // runtime\n export const abort = \"abort\";\n export const pow = \"pow\";\n export const mod = \"mod\";\n export const alloc = \"__alloc\";\n export const realloc = \"__realloc\";\n export const free = \"__free\";\n export const retain = \"__retain\";\n export const release = \"__release\";\n export const collect = \"__collect\";\n export const typeinfo = \"__typeinfo\";\n export const instanceof_ = \"__instanceof\";\n export const visit = \"__visit\";\n export const allocArray = \"__allocArray\";\n}\n\n// shared\nexport { Feature } from \"../std/assembly/shared/feature\";\nexport { Target } from \"../std/assembly/shared/target\";\nexport { Typeinfo, TypeinfoFlags } from \"../std/assembly/shared/typeinfo\";\n","/**\n * Various compiler utilities.\n * @module util\n * @preferred\n *//***/\n\nexport * from \"./bitset\";\nexport * from \"./charcode\";\nexport * from \"./collections\";\nexport * from \"./path\";\nexport * from \"./text\";\nexport * from \"./binary\";\n\n/** Tests if `x` is a power of two. */\nexport function isPowerOf2(x: i32): bool {\n return x != 0 && (x & (x - 1)) == 0;\n}\n","/**\n * Shared diagnostic handling inherited by the parser and the compiler.\n * @module diagnostics\n * @preferred\n *//***/\n\nimport {\n Range\n} from \"./ast\";\n\nimport {\n DiagnosticCode,\n diagnosticCodeToString\n} from \"./diagnosticMessages.generated\";\n\nimport {\n isLineBreak, CharCode\n} from \"./util\";\n\nexport {\n DiagnosticCode,\n diagnosticCodeToString\n} from \"./diagnosticMessages.generated\";\n\n/** Indicates the category of a {@link DiagnosticMessage}. */\nexport enum DiagnosticCategory {\n /** Informatory message. */\n INFO,\n /** Warning message. */\n WARNING,\n /** Error message. */\n ERROR\n}\n\n/** Returns the string representation of the specified diagnostic category. */\nexport function diagnosticCategoryToString(category: DiagnosticCategory): string {\n switch (category) {\n case DiagnosticCategory.INFO: return \"INFO\";\n case DiagnosticCategory.WARNING: return \"WARNING\";\n case DiagnosticCategory.ERROR: return \"ERROR\";\n default: {\n assert(false);\n return \"\";\n }\n }\n}\n\n/** ANSI escape sequence for blue foreground. */\nexport const COLOR_BLUE: string = \"\\u001b[96m\";\n/** ANSI escape sequence for yellow foreground. */\nexport const COLOR_YELLOW: string = \"\\u001b[93m\";\n/** ANSI escape sequence for red foreground. */\nexport const COLOR_RED: string = \"\\u001b[91m\";\n/** ANSI escape sequence to reset the foreground color. */\nexport const COLOR_RESET: string = \"\\u001b[0m\";\n\n/** Returns the ANSI escape sequence for the specified category. */\nexport function diagnosticCategoryToColor(category: DiagnosticCategory): string {\n switch (category) {\n case DiagnosticCategory.INFO: return COLOR_BLUE;\n case DiagnosticCategory.WARNING: return COLOR_YELLOW;\n case DiagnosticCategory.ERROR: return COLOR_RED;\n default: {\n assert(false);\n return \"\";\n }\n }\n}\n\n/** Represents a diagnostic message. */\nexport class DiagnosticMessage {\n\n /** Message code. */\n code: i32;\n /** Message category. */\n category: DiagnosticCategory;\n /** Message text. */\n message: string;\n /** Respective source range, if any. */\n range: Range | null = null;\n /** Related range, if any. */\n relatedRange: Range | null = null;\n\n /** Constructs a new diagnostic message. */\n private constructor(code: i32, category: DiagnosticCategory, message: string) {\n this.code = code;\n this.category = category;\n this.message = message;\n }\n\n /** Creates a new diagnostic message of the specified category. */\n static create(\n code: DiagnosticCode,\n category: DiagnosticCategory,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): DiagnosticMessage {\n var message = diagnosticCodeToString(code);\n if (arg0 != null) message = message.replace(\"{0}\", arg0);\n if (arg1 != null) message = message.replace(\"{1}\", arg1);\n if (arg2 != null) message = message.replace(\"{2}\", arg2);\n return new DiagnosticMessage(code, category, message);\n }\n\n /** Creates a new informatory diagnostic message. */\n static createInfo(\n code: DiagnosticCode,\n arg0: string | null = null,\n arg1: string | null = null\n ): DiagnosticMessage {\n return DiagnosticMessage.create(code, DiagnosticCategory.INFO, arg0, arg1);\n }\n\n /** Creates a new warning diagnostic message. */\n static createWarning(\n code: DiagnosticCode,\n arg0: string | null = null,\n arg1: string | null = null\n ): DiagnosticMessage {\n return DiagnosticMessage.create(code, DiagnosticCategory.WARNING, arg0, arg1);\n }\n\n /** Creates a new error diagnostic message. */\n static createError(\n code: DiagnosticCode,\n arg0: string | null = null,\n arg1: string | null = null\n ): DiagnosticMessage {\n return DiagnosticMessage.create(code, DiagnosticCategory.ERROR, arg0, arg1);\n }\n\n /** Adds a source range to this message. */\n withRange(range: Range): this {\n this.range = range;\n return this;\n }\n\n /** Adds a related source range to this message. */\n withRelatedRange(range: Range): this {\n this.relatedRange = range;\n return this;\n }\n\n /** Converts this message to a string. */\n toString(): string {\n if (this.range) {\n return (\n diagnosticCategoryToString(this.category) +\n \" \" +\n this.code.toString(10) +\n \": \\\"\" +\n this.message +\n \"\\\" in \" +\n this.range.source.normalizedPath +\n \":\" +\n this.range.line.toString(10) +\n \":\" +\n this.range.column.toString(10)\n );\n }\n return (\n diagnosticCategoryToString(this.category) +\n \" \" +\n this.code.toString(10) +\n \": \" +\n this.message\n );\n }\n}\n\n/** Formats a diagnostic message, optionally with terminal colors and source context. */\nexport function formatDiagnosticMessage(\n message: DiagnosticMessage,\n useColors: bool = false,\n showContext: bool = false\n): string {\n\n // general information\n var sb: string[] = [];\n if (useColors) sb.push(diagnosticCategoryToColor(message.category));\n sb.push(diagnosticCategoryToString(message.category));\n if (useColors) sb.push(COLOR_RESET);\n sb.push(message.code < 1000 ? \" AS\" : \" TS\");\n sb.push(message.code.toString(10));\n sb.push(\": \");\n sb.push(message.message);\n\n // include range information if available\n if (message.range) {\n\n // include context information if requested\n let range = message.range;\n if (showContext) {\n sb.push(\"\\n\");\n sb.push(formatDiagnosticContext(range, useColors));\n }\n sb.push(\"\\n\");\n sb.push(\" in \");\n sb.push(range.source.normalizedPath);\n sb.push(\"(\");\n sb.push(range.line.toString(10));\n sb.push(\",\");\n sb.push(range.column.toString(10));\n sb.push(\")\");\n\n let relatedRange = message.relatedRange;\n if (relatedRange) {\n if (showContext) {\n sb.push(\"\\n\");\n sb.push(formatDiagnosticContext(relatedRange, useColors));\n }\n sb.push(\"\\n\");\n sb.push(\" in \");\n sb.push(range.source.normalizedPath);\n sb.push(\"(\");\n sb.push(range.line.toString(10));\n sb.push(\",\");\n sb.push(range.column.toString(10));\n sb.push(\")\");\n }\n }\n return sb.join(\"\");\n}\n\n/** Formats the diagnostic context for the specified range, optionally with terminal colors. */\nexport function formatDiagnosticContext(range: Range, useColors: bool = false): string {\n var text = range.source.text;\n var len = text.length;\n var start = range.start;\n var end = range.end;\n while (start > 0 && !isLineBreak(text.charCodeAt(start - 1))) start--;\n while (end < len && !isLineBreak(text.charCodeAt(end))) end++;\n var sb: string[] = [\n \"\\n \",\n text.substring(start, end),\n \"\\n \"\n ];\n while (start < range.start) {\n sb.push(\" \");\n start++;\n }\n if (useColors) sb.push(COLOR_RED);\n if (range.start == range.end) {\n sb.push(\"^\");\n } else {\n while (start++ < range.end) {\n if (isLineBreak(text.charCodeAt(start))) {\n sb.push(start == range.start + 1 ? \"^\" : \"~\");\n break;\n }\n sb.push(\"~\");\n }\n }\n if (useColors) sb.push(COLOR_RESET);\n return sb.join(\"\");\n}\n\n/** Base class of all diagnostic emitters. */\nexport abstract class DiagnosticEmitter {\n\n /** Diagnostic messages emitted so far. */\n diagnostics: DiagnosticMessage[];\n\n /** Initializes this diagnostic emitter. */\n protected constructor(diagnostics: DiagnosticMessage[] | null = null) {\n this.diagnostics = diagnostics ? diagnostics : new Array();\n }\n\n /** Emits a diagnostic message of the specified category. */\n emitDiagnostic(\n code: DiagnosticCode,\n category: DiagnosticCategory,\n range: Range,\n relatedRange: Range | null,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n var message = DiagnosticMessage.create(code, category, arg0, arg1, arg2).withRange(range);\n if (relatedRange) message.relatedRange = relatedRange;\n this.diagnostics.push(message);\n // console.log(formatDiagnosticMessage(message, true, true) + \"\\n\"); // temporary\n // console.log(new Error(\"stack\").stack);\n }\n\n /** Emits an informatory diagnostic message. */\n info(\n code: DiagnosticCode,\n range: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.INFO, range, null, arg0, arg1, arg2);\n }\n\n /** Emits an informatory diagnostic message with a related range. */\n infoRelated(\n code: DiagnosticCode,\n range: Range,\n relatedRange: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.INFO, range, relatedRange, arg0, arg1, arg2);\n }\n\n /** Emits a warning diagnostic message. */\n warning(\n code: DiagnosticCode,\n range: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, null, arg0, arg1, arg2);\n }\n\n /** Emits a warning diagnostic message with a related range. */\n warningRelated(\n code: DiagnosticCode,\n range: Range,\n relatedRange: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, relatedRange, arg0, arg1, arg2);\n }\n\n /** Emits an error diagnostic message. */\n error(\n code: DiagnosticCode,\n range: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, null, arg0, arg1, arg2);\n }\n\n /** Emits an error diagnostic message with a related range. */\n errorRelated(\n code: DiagnosticCode,\n range: Range,\n relatedRange: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, relatedRange, arg0, arg1, arg2);\n }\n}\n","/**\n * Abstract syntax tree representing a source file once parsed.\n * @module ast\n *//***/\n\nimport {\n CommonFlags,\n CommonSymbols,\n PATH_DELIMITER,\n LIBRARY_PREFIX\n} from \"./common\";\n\nimport {\n Token,\n Tokenizer,\n Range\n} from \"./tokenizer\";\n\nimport {\n normalizePath,\n resolvePath,\n CharCode\n} from \"./util\";\n\nexport { Token, Range };\n\n/** Indicates the kind of a node. */\nexport enum NodeKind {\n\n SOURCE,\n\n // types\n NAMEDTYPE,\n FUNCTIONTYPE,\n TYPENAME,\n TYPEPARAMETER,\n PARAMETER,\n\n // expressions\n IDENTIFIER,\n ASSERTION,\n BINARY,\n CALL,\n CLASS,\n COMMA,\n ELEMENTACCESS,\n FALSE,\n FUNCTION,\n INSTANCEOF,\n LITERAL,\n NEW,\n NULL,\n PARENTHESIZED,\n PROPERTYACCESS,\n TERNARY,\n SUPER,\n THIS,\n TRUE,\n CONSTRUCTOR,\n UNARYPOSTFIX,\n UNARYPREFIX,\n\n // statements\n BLOCK,\n BREAK,\n CONTINUE,\n DO,\n EMPTY,\n EXPORT,\n EXPORTDEFAULT,\n EXPORTIMPORT,\n EXPRESSION,\n FOR,\n IF,\n IMPORT,\n RETURN,\n SWITCH,\n THROW,\n TRY,\n VARIABLE,\n VOID,\n WHILE,\n\n // declaration statements\n CLASSDECLARATION,\n ENUMDECLARATION,\n ENUMVALUEDECLARATION,\n FIELDDECLARATION,\n FUNCTIONDECLARATION,\n IMPORTDECLARATION,\n INDEXSIGNATUREDECLARATION,\n INTERFACEDECLARATION,\n METHODDECLARATION,\n NAMESPACEDECLARATION,\n TYPEDECLARATION,\n VARIABLEDECLARATION,\n\n // special\n DECORATOR,\n EXPORTMEMBER,\n SWITCHCASE,\n COMMENT\n}\n\n/** Checks if a node represents a constant value. */\nexport function nodeIsConstantValue(kind: NodeKind): bool {\n switch (kind) {\n case NodeKind.LITERAL:\n case NodeKind.NULL:\n case NodeKind.TRUE:\n case NodeKind.FALSE: return true;\n }\n return false;\n}\n\n/** Checks if a node might be callable. */\nexport function nodeIsCallable(kind: NodeKind): bool {\n switch (kind) {\n case NodeKind.IDENTIFIER:\n case NodeKind.ASSERTION: // if kind=NONNULL\n case NodeKind.CALL:\n case NodeKind.ELEMENTACCESS:\n case NodeKind.PARENTHESIZED:\n case NodeKind.PROPERTYACCESS:\n case NodeKind.SUPER: return true;\n }\n return false;\n}\n\n/** Checks if a node might be callable with generic arguments. */\nexport function nodeIsGenericCallable(kind: NodeKind): bool {\n switch (kind) {\n case NodeKind.IDENTIFIER:\n case NodeKind.PROPERTYACCESS: return true;\n }\n return false;\n}\n\n/** Base class of all nodes. */\nexport abstract class Node {\n\n /** Node kind indicator. */\n kind: NodeKind;\n /** Source range. */\n range: Range;\n\n // types\n\n static createTypeName(\n name: IdentifierExpression,\n range: Range\n ): TypeName {\n var typeName = new TypeName();\n typeName.range = range;\n typeName.identifier = name;\n typeName.next = null;\n return typeName;\n }\n\n static createSimpleTypeName(\n name: string,\n range: Range\n ): TypeName {\n return Node.createTypeName(Node.createIdentifierExpression(name, range), range);\n }\n\n static createNamedType(\n name: TypeName,\n typeArguments: TypeNode[] | null,\n isNullable: bool,\n range: Range\n ): NamedTypeNode {\n var type = new NamedTypeNode();\n type.range = range;\n type.name = name;\n type.typeArguments = typeArguments;\n type.isNullable = isNullable;\n return type;\n }\n\n static createFunctionType(\n parameters: ParameterNode[],\n returnType: TypeNode,\n explicitThisType: NamedTypeNode | null,\n isNullable: bool,\n range: Range\n ): FunctionTypeNode {\n var type = new FunctionTypeNode();\n type.range = range;\n type.parameters = parameters;\n type.returnType = returnType;\n type.explicitThisType = explicitThisType;\n type.isNullable = isNullable;\n return type;\n }\n\n static createOmittedType(\n range: Range\n ): NamedTypeNode {\n return Node.createNamedType(\n Node.createSimpleTypeName(\"\", range),\n null,\n false,\n range\n );\n }\n\n static createTypeParameter(\n name: IdentifierExpression,\n extendsType: NamedTypeNode | null,\n defaultType: NamedTypeNode | null,\n range: Range\n ): TypeParameterNode {\n var elem = new TypeParameterNode();\n elem.range = range;\n elem.name = name;\n elem.extendsType = extendsType;\n elem.defaultType = defaultType;\n return elem;\n }\n\n static createParameter(\n name: IdentifierExpression,\n type: TypeNode,\n initializer: Expression | null,\n kind: ParameterKind,\n range: Range\n ): ParameterNode {\n var elem = new ParameterNode();\n elem.range = range;\n elem.name = name;\n elem.type = type;\n elem.initializer = initializer;\n elem.parameterKind = kind;\n return elem;\n }\n\n // special\n\n static createDecorator(\n name: Expression,\n args: Expression[] | null,\n range: Range\n ): DecoratorNode {\n var stmt = new DecoratorNode();\n stmt.range = range;\n stmt.name = name;\n stmt.arguments = args;\n stmt.decoratorKind = decoratorNameToKind(name);\n return stmt;\n }\n\n static createComment(\n text: string,\n kind: CommentKind,\n range: Range\n ): CommentNode {\n var node = new CommentNode();\n node.range = range;\n node.commentKind = kind;\n node.text = text;\n return node;\n }\n\n // expressions\n\n static createIdentifierExpression(\n name: string,\n range: Range,\n isQuoted: bool = false\n ): IdentifierExpression {\n var expr = new IdentifierExpression();\n expr.range = range;\n expr.text = name; // TODO: extract from range\n expr.symbol = name; // TODO: Symbol.for(name)\n expr.isQuoted = isQuoted;\n return expr;\n }\n\n static createEmptyIdentifierExpression(\n range: Range\n ): IdentifierExpression {\n var expr = new IdentifierExpression();\n expr.range = range;\n expr.text = \"\";\n return expr;\n }\n\n static createArrayLiteralExpression(\n elements: (Expression | null)[],\n range: Range\n ): ArrayLiteralExpression {\n var expr = new ArrayLiteralExpression();\n expr.range = range;\n expr.elementExpressions = elements;\n return expr;\n }\n\n static createAssertionExpression(\n assertionKind: AssertionKind,\n expression: Expression,\n toType: TypeNode | null,\n range: Range\n ): AssertionExpression {\n var expr = new AssertionExpression();\n expr.range = range;\n expr.assertionKind = assertionKind;\n expr.expression = expression;\n expr.toType = toType;\n return expr;\n }\n\n static createBinaryExpression(\n operator: Token,\n left: Expression,\n right: Expression,\n range: Range\n ): BinaryExpression {\n var expr = new BinaryExpression();\n expr.range = range;\n expr.operator = operator;\n expr.left = left;\n expr.right = right;\n return expr;\n }\n\n static createCallExpression(\n expression: Expression,\n typeArgs: TypeNode[] | null,\n args: Expression[],\n range: Range\n ): CallExpression {\n var expr = new CallExpression();\n expr.range = range;\n expr.expression = expression;\n expr.typeArguments = typeArgs;\n expr.arguments = args;\n return expr;\n }\n\n static createClassExpression(\n declaration: ClassDeclaration\n ): ClassExpression {\n var expr = new ClassExpression();\n expr.range = declaration.range;\n expr.declaration = declaration;\n return expr;\n }\n\n static createCommaExpression(\n expressions: Expression[],\n range: Range\n ): CommaExpression {\n var expr = new CommaExpression();\n expr.range = range;\n expr.expressions = expressions;\n return expr;\n }\n\n static createConstructorExpression(\n range: Range\n ): ConstructorExpression {\n var expr = new ConstructorExpression();\n expr.range = range;\n return expr;\n }\n\n static createElementAccessExpression(\n expression: Expression,\n element: Expression,\n range: Range\n ): ElementAccessExpression {\n var expr = new ElementAccessExpression();\n expr.range = range;\n expr.expression = expression;\n expr.elementExpression = element;\n return expr;\n }\n\n static createFalseExpression(\n range: Range\n ): FalseExpression {\n var expr = new FalseExpression();\n expr.range = range;\n return expr;\n }\n\n static createFloatLiteralExpression(\n value: f64,\n range: Range\n ): FloatLiteralExpression {\n var expr = new FloatLiteralExpression();\n expr.range = range;\n expr.value = value;\n return expr;\n }\n\n static createFunctionExpression(\n declaration: FunctionDeclaration\n ): FunctionExpression {\n var expr = new FunctionExpression();\n expr.range = declaration.range;\n expr.declaration = declaration;\n return expr;\n }\n\n static createInstanceOfExpression(\n expression: Expression,\n isType: TypeNode,\n range: Range\n ): InstanceOfExpression {\n var expr = new InstanceOfExpression();\n expr.range = range;\n expr.expression = expression;\n expr.isType = isType;\n return expr;\n }\n\n static createIntegerLiteralExpression(\n value: I64,\n range: Range\n ): IntegerLiteralExpression {\n var expr = new IntegerLiteralExpression();\n expr.range = range;\n expr.value = value;\n return expr;\n }\n\n static createNewExpression(\n expression: Expression,\n typeArgs: TypeNode[] | null,\n args: Expression[],\n range: Range\n ): NewExpression {\n var expr = new NewExpression();\n expr.range = range;\n expr.expression = expression;\n expr.typeArguments = typeArgs;\n expr.arguments = args;\n return expr;\n }\n\n static createNullExpression(\n range: Range\n ): NullExpression {\n var expr = new NullExpression();\n expr.range = range;\n return expr;\n }\n\n static createObjectLiteralExpression(\n names: IdentifierExpression[],\n values: Expression[],\n range: Range\n ): ObjectLiteralExpression {\n var expr = new ObjectLiteralExpression();\n expr.range = range;\n expr.names = names;\n expr.values = values;\n return expr;\n }\n\n static createParenthesizedExpression(\n expression: Expression,\n range: Range\n ): ParenthesizedExpression {\n var expr = new ParenthesizedExpression();\n expr.range = range;\n expr.expression = expression;\n return expr;\n }\n\n static createPropertyAccessExpression(\n expression: Expression,\n property: IdentifierExpression,\n range: Range\n ): PropertyAccessExpression {\n var expr = new PropertyAccessExpression();\n expr.range = range;\n expr.expression = expression;\n expr.property = property;\n return expr;\n }\n\n static createRegexpLiteralExpression(\n pattern: string,\n flags: string,\n range: Range\n ): RegexpLiteralExpression {\n var expr = new RegexpLiteralExpression();\n expr.range = range;\n expr.pattern = pattern;\n expr.patternFlags = flags;\n return expr;\n }\n\n static createTernaryExpression(\n condition: Expression,\n ifThen: Expression,\n ifElse: Expression,\n range: Range\n ): TernaryExpression {\n var expr = new TernaryExpression();\n expr.range = range;\n expr.condition = condition;\n expr.ifThen = ifThen;\n expr.ifElse = ifElse;\n return expr;\n }\n\n static createStringLiteralExpression(\n value: string,\n range: Range\n ): StringLiteralExpression {\n var expr = new StringLiteralExpression();\n expr.range = range;\n expr.value = value;\n return expr;\n }\n\n static createSuperExpression(\n range: Range\n ): SuperExpression {\n var expr = new SuperExpression();\n expr.range = range;\n return expr;\n }\n\n static createThisExpression(\n range: Range\n ): ThisExpression {\n var expr = new ThisExpression();\n expr.range = range;\n return expr;\n }\n\n static createTrueExpression(\n range: Range\n ): TrueExpression {\n var expr = new TrueExpression();\n expr.range = range;\n return expr;\n }\n\n static createUnaryPostfixExpression(\n operator: Token,\n operand: Expression,\n range: Range\n ): UnaryPostfixExpression {\n var expr = new UnaryPostfixExpression();\n expr.range = range;\n expr.operator = operator;\n expr.operand = operand;\n return expr;\n }\n\n static createUnaryPrefixExpression(\n operator: Token,\n operand: Expression,\n range: Range\n ): UnaryPrefixExpression {\n var expr = new UnaryPrefixExpression();\n expr.range = range;\n expr.operator = operator;\n expr.operand = operand;\n return expr;\n }\n\n // statements\n\n static createBlockStatement(\n statements: Statement[],\n range: Range\n ): BlockStatement {\n var stmt = new BlockStatement();\n stmt.range = range;\n stmt.statements = statements;\n return stmt;\n }\n\n static createBreakStatement(\n label: IdentifierExpression | null,\n range: Range\n ): BreakStatement {\n var stmt = new BreakStatement();\n stmt.range = range;\n stmt.label = label;\n return stmt;\n }\n\n static createClassDeclaration(\n identifier: IdentifierExpression,\n typeParameters: TypeParameterNode[] | null,\n extendsType: NamedTypeNode | null, // can't be a function\n implementsTypes: NamedTypeNode[] | null, // can't be functions\n members: DeclarationStatement[],\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): ClassDeclaration {\n var stmt = new ClassDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = identifier;\n stmt.typeParameters = typeParameters;\n stmt.extendsType = extendsType;\n stmt.implementsTypes = implementsTypes;\n stmt.members = members;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createContinueStatement(\n label: IdentifierExpression | null,\n range: Range\n ): ContinueStatement {\n var stmt = new ContinueStatement();\n stmt.range = range;\n stmt.label = label;\n return stmt;\n }\n\n static createDoStatement(\n statement: Statement,\n condition: Expression,\n range: Range\n ): DoStatement {\n var stmt = new DoStatement();\n stmt.range = range;\n stmt.statement = statement;\n stmt.condition = condition;\n return stmt;\n }\n\n static createEmptyStatement(\n range: Range\n ): EmptyStatement {\n var stmt = new EmptyStatement();\n stmt.range = range;\n return stmt;\n }\n\n static createEnumDeclaration(\n name: IdentifierExpression,\n members: EnumValueDeclaration[],\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): EnumDeclaration {\n var stmt = new EnumDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.values = members;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createEnumValueDeclaration(\n name: IdentifierExpression,\n value: Expression | null,\n flags: CommonFlags,\n range: Range\n ): EnumValueDeclaration {\n var stmt = new EnumValueDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.value = value;\n return stmt;\n }\n\n static createExportStatement(\n members: ExportMember[] | null,\n path: StringLiteralExpression | null,\n isDeclare: bool,\n range: Range\n ): ExportStatement {\n var stmt = new ExportStatement();\n stmt.range = range;\n stmt.members = members;\n stmt.path = path;\n if (path) {\n let normalizedPath = normalizePath(path.value);\n if (path.value.startsWith(\".\")) { // relative\n stmt.normalizedPath = resolvePath(\n normalizedPath,\n range.source.normalizedPath\n );\n } else { // absolute\n if (!normalizedPath.startsWith(LIBRARY_PREFIX)) {\n normalizedPath = LIBRARY_PREFIX + normalizedPath;\n }\n stmt.normalizedPath = normalizedPath;\n }\n stmt.internalPath = mangleInternalPath(stmt.normalizedPath);\n } else {\n stmt.normalizedPath = null;\n stmt.internalPath = null;\n }\n stmt.isDeclare = isDeclare;\n return stmt;\n }\n\n static createExportDefaultStatement(\n declaration: DeclarationStatement,\n range: Range\n ): ExportDefaultStatement {\n var stmt = new ExportDefaultStatement();\n stmt.declaration = declaration;\n stmt.range = range;\n return stmt;\n }\n\n static createExportImportStatement(\n name: IdentifierExpression,\n externalName: IdentifierExpression,\n range: Range\n ): ExportImportStatement {\n var stmt = new ExportImportStatement();\n stmt.range = range;\n stmt.name = name;\n stmt.externalName = externalName;\n return stmt;\n }\n\n static createExportMember(\n name: IdentifierExpression,\n externalName: IdentifierExpression | null,\n range: Range\n ): ExportMember {\n var elem = new ExportMember();\n elem.range = range;\n elem.localName = name;\n if (!externalName) externalName = name;\n elem.exportedName = externalName;\n return elem;\n }\n\n static createExpressionStatement(\n expression: Expression\n ): ExpressionStatement {\n var stmt = new ExpressionStatement();\n stmt.range = expression.range;\n stmt.expression = expression;\n return stmt;\n }\n\n static createIfStatement(\n condition: Expression,\n ifTrue: Statement,\n ifFalse: Statement | null,\n range: Range\n ): IfStatement {\n var stmt = new IfStatement();\n stmt.range = range;\n stmt.condition = condition;\n stmt.ifTrue = ifTrue;\n stmt.ifFalse = ifFalse;\n return stmt;\n }\n\n static createImportStatement(\n decls: ImportDeclaration[] | null,\n path: StringLiteralExpression,\n range: Range\n ): ImportStatement {\n var stmt = new ImportStatement();\n stmt.range = range;\n stmt.declarations = decls;\n stmt.namespaceName = null;\n stmt.path = path;\n var normalizedPath = normalizePath(path.value);\n if (path.value.startsWith(\".\")) { // relative in project\n stmt.normalizedPath = resolvePath(\n normalizedPath,\n range.source.normalizedPath\n );\n } else { // absolute in library\n if (!normalizedPath.startsWith(LIBRARY_PREFIX)) {\n normalizedPath = LIBRARY_PREFIX + normalizedPath;\n }\n stmt.normalizedPath = normalizedPath;\n }\n stmt.internalPath = mangleInternalPath(stmt.normalizedPath);\n return stmt;\n }\n\n static createImportStatementWithWildcard(\n identifier: IdentifierExpression,\n path: StringLiteralExpression,\n range: Range\n ): ImportStatement {\n var stmt = new ImportStatement();\n stmt.range = range;\n stmt.declarations = null;\n stmt.namespaceName = identifier;\n stmt.path = path;\n var normalizedPath = normalizePath(path.value);\n if (path.value.startsWith(\".\")) {\n stmt.normalizedPath = resolvePath(\n normalizedPath,\n range.source.normalizedPath\n );\n } else {\n if (!normalizedPath.startsWith(LIBRARY_PREFIX)) {\n normalizedPath = LIBRARY_PREFIX + normalizedPath;\n }\n stmt.normalizedPath = normalizedPath;\n }\n stmt.internalPath = mangleInternalPath(stmt.normalizedPath);\n return stmt;\n }\n\n static createImportDeclaration(\n foreignName: IdentifierExpression,\n name: IdentifierExpression | null,\n range: Range\n ): ImportDeclaration {\n var elem = new ImportDeclaration();\n elem.range = range;\n elem.foreignName = foreignName;\n if (!name) name = foreignName;\n elem.name = name;\n return elem;\n }\n\n static createInterfaceDeclaration(\n name: IdentifierExpression,\n typeParameters: TypeParameterNode[] | null,\n extendsType: NamedTypeNode | null, // can't be a function\n members: DeclarationStatement[],\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): InterfaceDeclaration {\n var stmt = new InterfaceDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.typeParameters = typeParameters;\n stmt.extendsType = extendsType;\n stmt.members = members;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createFieldDeclaration(\n name: IdentifierExpression,\n type: TypeNode | null,\n initializer: Expression | null,\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): FieldDeclaration {\n var stmt = new FieldDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.type = type;\n stmt.initializer = initializer;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createForStatement(\n initializer: Statement | null,\n condition: Expression | null,\n incrementor: Expression | null,\n statement: Statement,\n range: Range\n ): ForStatement {\n var stmt = new ForStatement();\n stmt.range = range;\n stmt.initializer = initializer;\n stmt.condition = condition;\n stmt.incrementor = incrementor;\n stmt.statement = statement;\n return stmt;\n }\n\n static createFunctionDeclaration(\n name: IdentifierExpression,\n typeParameters: TypeParameterNode[] | null,\n signature: FunctionTypeNode,\n body: Statement | null,\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n arrowKind: ArrowKind,\n range: Range\n ): FunctionDeclaration {\n var stmt = new FunctionDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.typeParameters = typeParameters;\n stmt.signature = signature;\n stmt.body = body;\n stmt.decorators = decorators;\n stmt.arrowKind = arrowKind;\n return stmt;\n }\n\n static createIndexSignatureDeclaration(\n keyType: NamedTypeNode,\n valueType: TypeNode,\n range: Range\n ): IndexSignatureDeclaration {\n var elem = new IndexSignatureDeclaration();\n elem.range = range;\n elem.keyType = keyType;\n elem.valueType = valueType;\n return elem;\n }\n\n static createMethodDeclaration(\n name: IdentifierExpression,\n typeParameters: TypeParameterNode[] | null,\n signature: FunctionTypeNode,\n body: Statement | null,\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): MethodDeclaration {\n var stmt = new MethodDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.typeParameters = typeParameters;\n stmt.signature = signature;\n stmt.body = body;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createNamespaceDeclaration(\n name: IdentifierExpression,\n members: Statement[],\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): NamespaceDeclaration {\n var stmt = new NamespaceDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.members = members;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createReturnStatement(\n value: Expression | null,\n range: Range\n ): ReturnStatement {\n var stmt = new ReturnStatement();\n stmt.range = range;\n stmt.value = value;\n return stmt;\n }\n\n static createSwitchStatement(\n condition: Expression,\n cases: SwitchCase[],\n range: Range\n ): SwitchStatement {\n var stmt = new SwitchStatement();\n stmt.range = range;\n stmt.condition = condition;\n stmt.cases = cases;\n return stmt;\n }\n\n static createSwitchCase(\n label: Expression | null,\n statements: Statement[],\n range: Range\n ): SwitchCase {\n var elem = new SwitchCase();\n elem.range = range;\n elem.label = label;\n elem.statements = statements;\n return elem;\n }\n\n static createThrowStatement(\n value: Expression,\n range: Range\n ): ThrowStatement {\n var stmt = new ThrowStatement();\n stmt.range = range;\n stmt.value = value;\n return stmt;\n }\n\n static createTryStatement(\n statements: Statement[],\n catchVariable: IdentifierExpression | null,\n catchStatements: Statement[] | null,\n finallyStatements: Statement[] | null,\n range: Range\n ): TryStatement {\n var stmt = new TryStatement();\n stmt.range = range;\n stmt.statements = statements;\n stmt.catchVariable = catchVariable;\n stmt.catchStatements = catchStatements;\n stmt.finallyStatements = finallyStatements;\n return stmt;\n }\n\n static createTypeDeclaration(\n name: IdentifierExpression,\n typeParameters: TypeParameterNode[] | null,\n alias: TypeNode,\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): TypeDeclaration {\n var stmt = new TypeDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.typeParameters = typeParameters;\n stmt.type = alias;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createVariableStatement(\n declarations: VariableDeclaration[],\n decorators: DecoratorNode[] | null,\n range: Range\n ): VariableStatement {\n var stmt = new VariableStatement();\n stmt.range = range;\n stmt.declarations = declarations;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createVariableDeclaration(\n name: IdentifierExpression,\n type: TypeNode | null,\n initializer: Expression | null,\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): VariableDeclaration {\n var elem = new VariableDeclaration();\n elem.range = range;\n elem.flags = flags;\n elem.name = name;\n elem.type = type;\n elem.initializer = initializer;\n elem.decorators = decorators; // inherited\n return elem;\n }\n\n static createVoidStatement(\n expression: Expression,\n range: Range\n ): VoidStatement {\n var stmt = new VoidStatement();\n stmt.range = range;\n stmt.expression = expression;\n return stmt;\n }\n\n static createWhileStatement(\n condition: Expression,\n statement: Statement,\n range: Range\n ): WhileStatement {\n var stmt = new WhileStatement();\n stmt.range = range;\n stmt.condition = condition;\n stmt.statement = statement;\n return stmt;\n }\n}\n\n// types\n\nexport abstract class TypeNode extends Node {\n // kind varies\n\n /** Whether nullable or not. */\n isNullable: bool;\n}\n\n/** Represents a type name. */\nexport class TypeName extends Node {\n kind = NodeKind.TYPENAME;\n\n /** Identifier of this part. */\n identifier: IdentifierExpression;\n /** Next part of the type name or `null` if this is the last part. */\n next: TypeName | null;\n}\n\n/** Represents a named type. */\nexport class NamedTypeNode extends TypeNode {\n kind = NodeKind.NAMEDTYPE;\n\n /** Type name. */\n name: TypeName;\n /** Type argument references. */\n typeArguments: TypeNode[] | null;\n}\n\n/** Represents a function type. */\nexport class FunctionTypeNode extends TypeNode {\n kind = NodeKind.FUNCTIONTYPE;\n\n /** Accepted parameters. */\n parameters: ParameterNode[];\n /** Return type. */\n returnType: TypeNode;\n /** Explicitly provided this type, if any. */\n explicitThisType: NamedTypeNode | null; // can't be a function\n}\n\n/** Represents a type parameter. */\nexport class TypeParameterNode extends Node {\n kind = NodeKind.TYPEPARAMETER;\n\n /** Identifier reference. */\n name: IdentifierExpression;\n /** Extended type reference, if any. */\n extendsType: NamedTypeNode | null; // can't be a function\n /** Default type if omitted, if any. */\n defaultType: NamedTypeNode | null; // can't be a function\n}\n\n/** Represents the kind of a parameter. */\nexport enum ParameterKind {\n /** No specific flags. */\n DEFAULT,\n /** Is an optional parameter. */\n OPTIONAL,\n /** Is a rest parameter. */\n REST\n}\n\n/** Represents a function parameter. */\nexport class ParameterNode extends Node {\n kind = NodeKind.PARAMETER;\n\n /** Parameter kind. */\n parameterKind: ParameterKind;\n /** Parameter name. */\n name: IdentifierExpression;\n /** Parameter type. */\n type: TypeNode;\n /** Initializer expression, if present. */\n initializer: Expression | null;\n /** Implicit field declaration, if applicable. */\n implicitFieldDeclaration: FieldDeclaration | null = null;\n /** Common flags indicating specific traits. */\n flags: CommonFlags = CommonFlags.NONE;\n\n /** Tests if this node has the specified flag or flags. */\n is(flag: CommonFlags): bool { return (this.flags & flag) == flag; }\n /** Tests if this node has one of the specified flags. */\n isAny(flag: CommonFlags): bool { return (this.flags & flag) != 0; }\n /** Sets a specific flag or flags. */\n set(flag: CommonFlags): void { this.flags |= flag; }\n}\n\n// special\n\n/** Built-in decorator kinds. */\nexport enum DecoratorKind {\n CUSTOM,\n GLOBAL,\n OPERATOR,\n OPERATOR_BINARY,\n OPERATOR_PREFIX,\n OPERATOR_POSTFIX,\n UNMANAGED,\n SEALED,\n INLINE,\n EXTERNAL,\n BUILTIN,\n LAZY,\n UNSAFE\n}\n\n/** Returns the kind of the specified decorator. Defaults to {@link DecoratorKind.CUSTOM}. */\nexport function decoratorNameToKind(name: Expression): DecoratorKind {\n // @global, @inline, @operator, @sealed, @unmanaged\n if (name.kind == NodeKind.IDENTIFIER) {\n let nameStr = (name).text;\n assert(nameStr.length);\n switch (nameStr.charCodeAt(0)) {\n case CharCode.b: {\n if (nameStr == \"builtin\") return DecoratorKind.BUILTIN;\n break;\n }\n case CharCode.e: {\n if (nameStr == \"external\") return DecoratorKind.EXTERNAL;\n break;\n }\n case CharCode.g: {\n if (nameStr == \"global\") return DecoratorKind.GLOBAL;\n break;\n }\n case CharCode.i: {\n if (nameStr == \"inline\") return DecoratorKind.INLINE;\n break;\n }\n case CharCode.l: {\n if (nameStr == \"lazy\") return DecoratorKind.LAZY;\n break;\n }\n case CharCode.o: {\n if (nameStr == \"operator\") return DecoratorKind.OPERATOR;\n break;\n }\n case CharCode.s: {\n if (nameStr == \"sealed\") return DecoratorKind.SEALED;\n break;\n }\n case CharCode.u: {\n if (nameStr == \"unmanaged\") return DecoratorKind.UNMANAGED;\n if (nameStr == \"unsafe\") return DecoratorKind.UNSAFE;\n break;\n }\n }\n } else if (\n name.kind == NodeKind.PROPERTYACCESS &&\n (name).expression.kind == NodeKind.IDENTIFIER\n ) {\n let nameStr = ((name).expression).text;\n assert(nameStr.length);\n let propStr = (name).property.text;\n assert(propStr.length);\n // @operator.binary, @operator.prefix, @operator.postfix\n if (nameStr == \"operator\") {\n switch (propStr.charCodeAt(0)) {\n case CharCode.b: {\n if (propStr == \"binary\") return DecoratorKind.OPERATOR_BINARY;\n break;\n }\n case CharCode.p: {\n switch (propStr) {\n case \"prefix\": return DecoratorKind.OPERATOR_PREFIX;\n case \"postfix\": return DecoratorKind.OPERATOR_POSTFIX;\n }\n break;\n }\n }\n }\n }\n return DecoratorKind.CUSTOM;\n}\n\n/** Represents a decorator. */\nexport class DecoratorNode extends Node {\n kind = NodeKind.DECORATOR;\n\n /** Built-in kind, if applicable. */\n decoratorKind: DecoratorKind;\n /** Name expression. */\n name: Expression;\n /** Argument expressions. */\n arguments: Expression[] | null;\n}\n\n/** Comment kinds. */\nexport enum CommentKind {\n /** Line comment. */\n LINE,\n /** Triple-slash comment. */\n TRIPLE,\n /** Block comment. */\n BLOCK\n}\n\n/** Represents a comment. */\nexport class CommentNode extends Node {\n kind = NodeKind.COMMENT;\n\n /** Comment kind. */\n commentKind: CommentKind;\n /** Comment text. */\n text: string;\n}\n\n// expressions\n\n/** Base class of all expression nodes. */\nexport abstract class Expression extends Node { }\n\n/** Represents an identifier expression. */\nexport class IdentifierExpression extends Expression {\n kind = NodeKind.IDENTIFIER;\n\n /** Textual name. */\n text: string;\n /** Symbol. */\n symbol: string; // TODO: symbol\n /** Whether quoted or not. */\n isQuoted: bool;\n}\n\n/** Indicates the kind of a literal. */\nexport enum LiteralKind {\n FLOAT,\n INTEGER,\n STRING,\n REGEXP,\n ARRAY,\n OBJECT\n}\n\n/** Base class of all literal expressions. */\nexport abstract class LiteralExpression extends Expression {\n kind = NodeKind.LITERAL;\n\n /** Specific literal kind. */\n literalKind: LiteralKind;\n}\n\n/** Represents an `[]` literal expression. */\nexport class ArrayLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.ARRAY;\n\n /** Nested element expressions. */\n elementExpressions: (Expression | null)[];\n}\n\n/** Indicates the kind of an assertion. */\nexport enum AssertionKind {\n PREFIX,\n AS,\n NONNULL\n}\n\n/** Represents an assertion expression. */\nexport class AssertionExpression extends Expression {\n kind = NodeKind.ASSERTION;\n\n /** Specific kind of this assertion. */\n assertionKind: AssertionKind;\n /** Expression being asserted. */\n expression: Expression;\n /** Target type. */\n toType: TypeNode | null;\n}\n\n/** Represents a binary expression. */\nexport class BinaryExpression extends Expression {\n kind = NodeKind.BINARY;\n\n /** Operator token. */\n operator: Token;\n /** Left-hand side expression */\n left: Expression;\n /** Right-hand side expression. */\n right: Expression;\n}\n\n/** Represents a call expression. */\nexport class CallExpression extends Expression {\n kind = NodeKind.CALL;\n\n /** Called expression. Usually an identifier or property access expression. */\n expression: Expression;\n /** Provided type arguments. */\n typeArguments: TypeNode[] | null;\n /** Provided arguments. */\n arguments: Expression[];\n\n /** Gets the type arguments range for reporting. */\n get typeArgumentsRange(): Range {\n var typeArguments = this.typeArguments;\n var numTypeArguments: i32;\n if (typeArguments && (numTypeArguments = typeArguments.length)) {\n return Range.join(typeArguments[0].range, typeArguments[numTypeArguments - 1].range);\n }\n return this.expression.range;\n }\n\n /** Gets the arguments range for reporting. */\n get argumentsRange(): Range {\n var args = this.arguments;\n var numArguments = args.length;\n if (numArguments) {\n return Range.join(args[0].range, args[numArguments - 1].range);\n }\n return this.expression.range;\n }\n}\n\n/** Represents a class expression using the 'class' keyword. */\nexport class ClassExpression extends Expression {\n kind = NodeKind.CLASS;\n\n /** Inline class declaration. */\n declaration: ClassDeclaration;\n}\n\n/** Represents a comma expression composed of multiple expressions. */\nexport class CommaExpression extends Expression {\n kind = NodeKind.COMMA;\n\n /** Sequential expressions. */\n expressions: Expression[];\n}\n\n/** Represents a `constructor` expression. */\nexport class ConstructorExpression extends IdentifierExpression {\n kind = NodeKind.CONSTRUCTOR;\n text = \"constructor\";\n symbol = CommonSymbols.constructor;\n}\n\n/** Represents an element access expression, e.g., array access. */\nexport class ElementAccessExpression extends Expression {\n kind = NodeKind.ELEMENTACCESS;\n\n /** Expression being accessed. */\n expression: Expression;\n /** Element of the expression being accessed. */\n elementExpression: Expression;\n}\n\n/** Represents a float literal expression. */\nexport class FloatLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.FLOAT;\n\n /** Float value. */\n value: f64;\n}\n\n/** Represents a function expression using the 'function' keyword. */\nexport class FunctionExpression extends Expression {\n kind = NodeKind.FUNCTION;\n\n /** Inline function declaration. */\n declaration: FunctionDeclaration;\n}\n\n/** Represents an `instanceof` expression. */\nexport class InstanceOfExpression extends Expression {\n kind = NodeKind.INSTANCEOF;\n\n /** Expression being asserted. */\n expression: Expression;\n /** Type to test for. */\n isType: TypeNode;\n}\n\n/** Represents an integer literal expression. */\nexport class IntegerLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.INTEGER;\n\n /** Integer value. */\n value: I64;\n}\n\n/** Represents a `new` expression. Like a call but with its own kind. */\nexport class NewExpression extends CallExpression {\n kind = NodeKind.NEW;\n}\n\n/** Represents a `null` expression. */\nexport class NullExpression extends IdentifierExpression {\n kind = NodeKind.NULL;\n text = \"null\";\n symbol = CommonSymbols.null_;\n}\n\n/** Represents an object literal expression. */\nexport class ObjectLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.OBJECT;\n\n /** Field names. */\n names: IdentifierExpression[];\n /** Field values. */\n values: Expression[];\n}\n\n/** Represents a parenthesized expression. */\nexport class ParenthesizedExpression extends Expression {\n kind = NodeKind.PARENTHESIZED;\n\n /** Expression in parenthesis. */\n expression: Expression;\n}\n\n/** Represents a property access expression. */\nexport class PropertyAccessExpression extends Expression {\n kind = NodeKind.PROPERTYACCESS;\n\n /** Expression being accessed. */\n expression: Expression;\n /** Property of the expression being accessed. */\n property: IdentifierExpression;\n}\n\n/** Represents a regular expression literal expression. */\nexport class RegexpLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.REGEXP;\n\n /** Regular expression pattern. */\n pattern: string;\n /** Regular expression flags. */\n patternFlags: string;\n}\n\n/** Represents a ternary expression, i.e., short if notation. */\nexport class TernaryExpression extends Expression {\n kind = NodeKind.TERNARY;\n\n /** Condition expression. */\n condition: Expression;\n /** Expression executed when condition is `true`. */\n ifThen: Expression;\n /** Expression executed when condition is `false`. */\n ifElse: Expression;\n}\n\n/** Represents a string literal expression. */\nexport class StringLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.STRING;\n\n /** String value without quotes. */\n value: string;\n}\n\n/** Represents a `super` expression. */\nexport class SuperExpression extends IdentifierExpression {\n kind = NodeKind.SUPER;\n text = \"super\";\n symbol = CommonSymbols.super_;\n}\n\n/** Represents a `this` expression. */\nexport class ThisExpression extends IdentifierExpression {\n kind = NodeKind.THIS;\n text = \"this\";\n symbol = CommonSymbols.this_;\n}\n\n/** Represents a `true` expression. */\nexport class TrueExpression extends IdentifierExpression {\n kind = NodeKind.TRUE;\n text = \"true\";\n symbol = CommonSymbols.true_;\n}\n\n/** Represents a `false` expression. */\nexport class FalseExpression extends IdentifierExpression {\n kind = NodeKind.FALSE;\n text = \"false\";\n symbol = CommonSymbols.false_;\n}\n\n/** Base class of all unary expressions. */\nexport abstract class UnaryExpression extends Expression {\n\n /** Operator token. */\n operator: Token;\n /** Operand expression. */\n operand: Expression;\n}\n\n/** Represents a unary postfix expression, e.g. a postfix increment. */\nexport class UnaryPostfixExpression extends UnaryExpression {\n kind = NodeKind.UNARYPOSTFIX;\n}\n\n/** Represents a unary prefix expression, e.g. a negation. */\nexport class UnaryPrefixExpression extends UnaryExpression {\n kind = NodeKind.UNARYPREFIX;\n}\n\n// statements\n\n/** Base class of all statement nodes. */\nexport abstract class Statement extends Node { }\n\n/** Indicates the specific kind of a source. */\nexport enum SourceKind {\n /** User-provided file. */\n USER = 0,\n /** User-provided entry file. */\n USER_ENTRY = 1,\n /** Library-provided file. */\n LIBRARY = 2,\n /** Library-provided entry file. */\n LIBRARY_ENTRY = 3\n}\n\n/** A top-level source node. */\nexport class Source extends Node {\n kind = NodeKind.SOURCE;\n parent = null;\n\n /** Source kind. */\n sourceKind: SourceKind;\n /** Normalized path. */\n normalizedPath: string;\n /** Path used internally. */\n internalPath: string;\n /** Simple path (last part without extension). */\n simplePath: string;\n /** Contained statements. */\n statements: Statement[];\n /** Full source text. */\n text: string;\n /** Tokenizer reference. */\n tokenizer: Tokenizer | null = null;\n /** Source map index. */\n debugInfoIndex: i32 = -1;\n /** Re-exported sources. */\n exportPaths: Set | null = null;\n\n /** Constructs a new source node. */\n constructor(normalizedPath: string, text: string, kind: SourceKind) {\n super();\n this.sourceKind = kind;\n this.normalizedPath = normalizedPath;\n var internalPath = mangleInternalPath(this.normalizedPath);\n this.internalPath = internalPath;\n var pos = internalPath.lastIndexOf(PATH_DELIMITER);\n this.simplePath = pos >= 0 ? internalPath.substring(pos + 1) : internalPath;\n this.statements = new Array();\n this.range = new Range(this, 0, text.length);\n this.text = text;\n }\n\n get isLibrary(): bool {\n var kind = this.sourceKind;\n return kind == SourceKind.LIBRARY || kind == SourceKind.LIBRARY_ENTRY;\n }\n}\n\n/** Base class of all declaration statements. */\nexport abstract class DeclarationStatement extends Statement {\n /** Simple name being declared. */\n name: IdentifierExpression;\n /** Array of decorators. */\n decorators: DecoratorNode[] | null = null;\n /** Common flags indicating specific traits. */\n flags: CommonFlags = CommonFlags.NONE;\n\n /** Tests if this node has the specified flag or flags. */\n is(flag: CommonFlags): bool { return (this.flags & flag) == flag; }\n /** Tests if this node has one of the specified flags. */\n isAny(flag: CommonFlags): bool { return (this.flags & flag) != 0; }\n /** Sets a specific flag or flags. */\n set(flag: CommonFlags): void { this.flags |= flag; }\n}\n\n/** Represents an index signature declaration. */\nexport class IndexSignatureDeclaration extends DeclarationStatement {\n kind = NodeKind.INDEXSIGNATUREDECLARATION;\n\n /** Key type. */\n keyType: NamedTypeNode;\n /** Value type. */\n valueType: TypeNode;\n}\n\n/** Base class of all variable-like declaration statements. */\nexport abstract class VariableLikeDeclarationStatement extends DeclarationStatement {\n\n /** Variable type. */\n type: TypeNode | null;\n /** Variable initializer. */\n initializer: Expression | null;\n}\n\n/** Represents a block statement. */\nexport class BlockStatement extends Statement {\n kind = NodeKind.BLOCK;\n\n /** Contained statements. */\n statements: Statement[];\n}\n\n/** Represents a `break` statement. */\nexport class BreakStatement extends Statement {\n kind = NodeKind.BREAK;\n\n /** Target label, if applicable. */\n label: IdentifierExpression | null;\n}\n\n/** Represents a `class` declaration. */\nexport class ClassDeclaration extends DeclarationStatement {\n kind = NodeKind.CLASSDECLARATION;\n\n /** Accepted type parameters. */\n typeParameters: TypeParameterNode[] | null;\n /** Base class type being extended, if any. */\n extendsType: NamedTypeNode | null; // can't be a function\n /** Interface types being implemented, if any. */\n implementsTypes: NamedTypeNode[] | null; // can't be functions\n /** Class member declarations. */\n members: DeclarationStatement[];\n\n get isGeneric(): bool {\n var typeParameters = this.typeParameters;\n return typeParameters != null && typeParameters.length > 0;\n }\n}\n\n/** Represents a `continue` statement. */\nexport class ContinueStatement extends Statement {\n kind = NodeKind.CONTINUE;\n\n /** Target label, if applicable. */\n label: IdentifierExpression | null;\n}\n\n/** Represents a `do` statement. */\nexport class DoStatement extends Statement {\n kind = NodeKind.DO;\n\n /** Statement being looped over. */\n statement: Statement;\n /** Condition when to repeat. */\n condition: Expression;\n}\n\n/** Represents an empty statement, i.e., a semicolon terminating nothing. */\nexport class EmptyStatement extends Statement {\n kind = NodeKind.EMPTY;\n}\n\n/** Represents an `enum` declaration. */\nexport class EnumDeclaration extends DeclarationStatement {\n kind = NodeKind.ENUMDECLARATION;\n\n /** Enum value declarations. */\n values: EnumValueDeclaration[];\n}\n\n/** Represents a value of an `enum` declaration. */\nexport class EnumValueDeclaration extends VariableLikeDeclarationStatement {\n kind = NodeKind.ENUMVALUEDECLARATION;\n // name is inherited\n\n /** Value expression. */\n value: Expression | null;\n}\n\n/** Represents an `export import` statement of an interface. */\nexport class ExportImportStatement extends Node {\n kind = NodeKind.EXPORTIMPORT;\n\n /** Identifier being imported. */\n name: IdentifierExpression;\n /** Identifier being exported. */\n externalName: IdentifierExpression;\n}\n\n/** Represents a member of an `export` statement. */\nexport class ExportMember extends Node {\n kind = NodeKind.EXPORTMEMBER;\n\n /** Local identifier. */\n localName: IdentifierExpression;\n /** Exported identifier. */\n exportedName: IdentifierExpression;\n}\n\n/** Represents an `export` statement. */\nexport class ExportStatement extends Statement {\n kind = NodeKind.EXPORT;\n\n /** Array of members if a set of named exports, or `null` if a file export. */\n members: ExportMember[] | null;\n /** Path being exported from, if applicable. */\n path: StringLiteralExpression | null;\n /** Normalized path, if `path` is set. */\n normalizedPath: string | null;\n /** Mangled internal path being referenced, if `path` is set. */\n internalPath: string | null;\n /** Whether this is a declared export. */\n isDeclare: bool;\n}\n\n/** Represents an `export default` statement. */\nexport class ExportDefaultStatement extends Statement {\n kind = NodeKind.EXPORTDEFAULT;\n\n /** Declaration being exported as default. */\n declaration: DeclarationStatement;\n}\n\n/** Represents an expression that is used as a statement. */\nexport class ExpressionStatement extends Statement {\n kind = NodeKind.EXPRESSION;\n\n /** Expression being used as a statement.*/\n expression: Expression;\n}\n\n/** Represents a field declaration within a `class`. */\nexport class FieldDeclaration extends VariableLikeDeclarationStatement {\n kind = NodeKind.FIELDDECLARATION;\n\n /** Parameter index if declared as a constructor parameter, otherwise `-1`. */\n parameterIndex: i32 = -1;\n}\n\n/** Represents a `for` statement. */\nexport class ForStatement extends Statement {\n kind = NodeKind.FOR;\n\n /**\n * Initializer statement, if present.\n * Either a {@link VariableStatement} or {@link ExpressionStatement}.\n */\n initializer: Statement | null;\n /** Condition expression, if present. */\n condition: Expression | null;\n /** Incrementor expression, if present. */\n incrementor: Expression | null;\n /** Statement being looped over. */\n statement: Statement;\n}\n\n/** Indicates the kind of an array function. */\nexport const enum ArrowKind {\n /** Not an arrow function. */\n NONE,\n /** Parenthesized parameter list. */\n ARROW_PARENTHESIZED,\n /** Single parameter without parenthesis. */\n ARROW_SINGLE\n}\n\n/** Represents a `function` declaration. */\nexport class FunctionDeclaration extends DeclarationStatement {\n kind = NodeKind.FUNCTIONDECLARATION;\n\n /** Type parameters, if any. */\n typeParameters: TypeParameterNode[] | null;\n /** Function signature. */\n signature: FunctionTypeNode;\n /** Body statement. Usually a block. */\n body: Statement | null;\n /** Arrow function kind, if applicable. */\n arrowKind: ArrowKind;\n\n get isGeneric(): bool {\n var typeParameters = this.typeParameters;\n return typeParameters != null && typeParameters.length > 0;\n }\n\n /** Clones this function declaration. */\n clone(): FunctionDeclaration {\n return Node.createFunctionDeclaration(\n this.name,\n this.typeParameters,\n this.signature,\n this.body,\n this.decorators,\n this.flags,\n this.arrowKind,\n this.range\n );\n }\n}\n\n/** Represents an `if` statement. */\nexport class IfStatement extends Statement {\n kind = NodeKind.IF;\n\n /** Condition. */\n condition: Expression;\n /** Statement executed when condition is `true`. */\n ifTrue: Statement;\n /** Statement executed when condition is `false`. */\n ifFalse: Statement | null;\n}\n\n/** Represents an `import` declaration part of an {@link ImportStatement}. */\nexport class ImportDeclaration extends DeclarationStatement {\n kind = NodeKind.IMPORTDECLARATION;\n\n /** Identifier being imported. */\n foreignName: IdentifierExpression;\n}\n\n/** Represents an `import` statement. */\nexport class ImportStatement extends Statement {\n kind = NodeKind.IMPORT;\n\n /** Array of member declarations or `null` if an asterisk import. */\n declarations: ImportDeclaration[] | null;\n /** Name of the local namespace, if an asterisk import. */\n namespaceName: IdentifierExpression | null;\n /** Path being imported from. */\n path: StringLiteralExpression;\n /** Normalized path. */\n normalizedPath: string;\n /** Mangled internal path being referenced. */\n internalPath: string;\n}\n\n/** Represents an `interfarce` declaration. */\nexport class InterfaceDeclaration extends ClassDeclaration {\n kind = NodeKind.INTERFACEDECLARATION;\n}\n\n/** Represents a method declaration within a `class`. */\nexport class MethodDeclaration extends FunctionDeclaration {\n kind = NodeKind.METHODDECLARATION;\n}\n\n/** Represents a `namespace` declaration. */\nexport class NamespaceDeclaration extends DeclarationStatement {\n kind = NodeKind.NAMESPACEDECLARATION;\n\n /** Array of namespace members. */\n members: Statement[];\n}\n\n/** Represents a `return` statement. */\nexport class ReturnStatement extends Statement {\n kind = NodeKind.RETURN;\n\n /** Value expression being returned, if present. */\n value: Expression | null;\n}\n\n/** Represents a single `case` within a `switch` statement. */\nexport class SwitchCase extends Node {\n kind = NodeKind.SWITCHCASE;\n\n /** Label expression. `null` indicates the default case. */\n label: Expression | null;\n /** Contained statements. */\n statements: Statement[];\n}\n\n/** Represents a `switch` statement. */\nexport class SwitchStatement extends Statement {\n kind = NodeKind.SWITCH;\n\n /** Condition expression. */\n condition: Expression;\n /** Contained cases. */\n cases: SwitchCase[];\n}\n\n/** Represents a `throw` statement. */\nexport class ThrowStatement extends Statement {\n kind = NodeKind.THROW;\n\n /** Value expression being thrown. */\n value: Expression;\n}\n\n/** Represents a `try` statement. */\nexport class TryStatement extends Statement {\n kind = NodeKind.TRY;\n\n /** Contained statements. */\n statements: Statement[];\n /** Exception variable name, if a `catch` clause is present. */\n catchVariable: IdentifierExpression | null;\n /** Statements being executed on catch, if a `catch` clause is present. */\n catchStatements: Statement[] | null;\n /** Statements being executed afterwards, if a `finally` clause is present. */\n finallyStatements: Statement[] | null;\n}\n\n/** Represents a `type` declaration. */\nexport class TypeDeclaration extends DeclarationStatement {\n kind = NodeKind.TYPEDECLARATION;\n\n /** Type parameters, if any. */\n typeParameters: TypeParameterNode[] | null;\n /** Type being aliased. */\n type: TypeNode;\n}\n\n/** Represents a variable declaration part of a {@link VariableStatement}. */\nexport class VariableDeclaration extends VariableLikeDeclarationStatement {\n kind = NodeKind.VARIABLEDECLARATION;\n}\n\n/** Represents a variable statement wrapping {@link VariableDeclaration}s. */\nexport class VariableStatement extends Statement {\n kind = NodeKind.VARIABLE;\n\n /** Array of decorators. */\n decorators: DecoratorNode[] | null;\n /** Array of member declarations. */\n declarations: VariableDeclaration[];\n}\n\n/** Represents a void statement dropping an expression's value. */\nexport class VoidStatement extends Statement {\n kind = NodeKind.VOID;\n\n /** Expression being dropped. */\n expression: Expression;\n}\n\n/** Represents a `while` statement. */\nexport class WhileStatement extends Statement {\n kind = NodeKind.WHILE;\n\n /** Condition expression. */\n condition: Expression;\n /** Statement being looped over. */\n statement: Statement;\n}\n\n/** Finds the first decorator matching the specified kind. */\nexport function findDecorator(kind: DecoratorKind, decorators: DecoratorNode[] | null): DecoratorNode | null {\n if (decorators) {\n for (let i = 0, k = decorators.length; i < k; ++i) {\n let decorator = decorators[i];\n if (decorator.decoratorKind == kind) return decorator;\n }\n }\n return null;\n}\n\n/** Mangles an external to an internal path. */\nexport function mangleInternalPath(path: string): string {\n if (path.endsWith(\".ts\")) path = path.substring(0, path.length - 3);\n return path;\n}\n\n/** Tests if the specified type node represents an omitted type. */\nexport function isTypeOmitted(type: TypeNode): bool {\n if (type.kind == NodeKind.NAMEDTYPE) {\n let name = (type).name;\n return !(name.next || name.identifier.text.length);\n }\n return false;\n}\n","/**\n * AssemblyScript's intermediate representation describing a program's elements.\n * @module program\n *//***/\n\nimport {\n CommonFlags,\n PATH_DELIMITER,\n STATIC_DELIMITER,\n INSTANCE_DELIMITER,\n GETTER_PREFIX,\n SETTER_PREFIX,\n INNER_DELIMITER,\n LIBRARY_SUBST,\n INDEX_SUFFIX,\n CommonSymbols,\n Feature,\n Target\n} from \"./common\";\n\nimport {\n Options\n} from \"./compiler\";\n\nimport {\n DiagnosticCode,\n DiagnosticMessage,\n DiagnosticEmitter\n} from \"./diagnostics\";\n\nimport {\n Type,\n TypeKind,\n TypeFlags,\n Signature\n} from \"./types\";\n\nimport {\n Node,\n NodeKind,\n Source,\n SourceKind,\n Range,\n DecoratorNode,\n DecoratorKind,\n TypeParameterNode,\n TypeNode,\n NamedTypeNode,\n FunctionTypeNode,\n ArrowKind,\n\n Expression,\n IdentifierExpression,\n LiteralExpression,\n LiteralKind,\n StringLiteralExpression,\n\n Statement,\n ClassDeclaration,\n DeclarationStatement,\n EnumDeclaration,\n EnumValueDeclaration,\n ExportMember,\n ExportStatement,\n FieldDeclaration,\n FunctionDeclaration,\n ImportDeclaration,\n ImportStatement,\n InterfaceDeclaration,\n MethodDeclaration,\n NamespaceDeclaration,\n TypeDeclaration,\n VariableDeclaration,\n VariableLikeDeclarationStatement,\n VariableStatement,\n\n decoratorNameToKind,\n findDecorator,\n ExportDefaultStatement\n} from \"./ast\";\n\nimport {\n Module,\n FunctionRef\n} from \"./module\";\n\nimport {\n CharCode,\n writeI8,\n writeI16,\n writeI32,\n writeF32,\n writeF64\n} from \"./util\";\n\nimport {\n Resolver\n} from \"./resolver\";\n\nimport {\n Flow\n} from \"./flow\";\n\n/** Represents a yet unresolved `import`. */\nclass QueuedImport {\n constructor(\n /** File being imported into. */\n public localFile: File,\n /** Identifier within the local file. */\n public localIdentifier: IdentifierExpression,\n /** Identifier within the other file. Is an `import *` if not set. */\n public foreignIdentifier: IdentifierExpression | null,\n /** Path to the other file. */\n public foreignPath: string,\n /** Alternative path to the other file. */\n public foreignPathAlt: string\n ) {}\n}\n\n/** Represents a yet unresolved `export`. */\nclass QueuedExport {\n constructor(\n /** Identifier within the local file. */\n public localIdentifier: IdentifierExpression,\n /** Identifier within the other file. */\n public foreignIdentifier: IdentifierExpression,\n /** Path to the other file if a re-export. */\n public foreignPath: string | null,\n /** Alternative path to the other file if a re-export. */\n public foreignPathAlt: string | null\n ) {}\n}\n\n/** Represents a yet unresolved `export *`. */\nclass QueuedExportStar {\n // stored in a map with localFile as the key\n constructor(\n /** Path to the other file. */\n public foreignPath: string,\n /** Alternative path to the other file. */\n public foreignPathAlt: string,\n /** Reference to the path literal for reporting. */\n public pathLiteral: StringLiteralExpression\n ) {}\n}\n\n/** Represents the kind of an operator overload. */\nexport enum OperatorKind {\n INVALID,\n\n // indexed access\n INDEXED_GET, // a[]\n INDEXED_SET, // a[]=b\n UNCHECKED_INDEXED_GET, // unchecked(a[])\n UNCHECKED_INDEXED_SET, // unchecked(a[]=b)\n\n // binary\n ADD, // a + b\n SUB, // a - b\n MUL, // a * b\n DIV, // a / b\n REM, // a % b\n POW, // a ** b\n BITWISE_AND, // a & b\n BITWISE_OR, // a | b\n BITWISE_XOR, // a ^ b\n BITWISE_SHL, // a << b\n BITWISE_SHR, // a >> b\n BITWISE_SHR_U, // a >>> b\n EQ, // a == b\n NE, // a != b\n GT, // a > b\n GE, // a >= b\n LT, // a < b\n LE, // a <= b\n\n // unary prefix\n PLUS, // +a\n MINUS, // -a\n NOT, // !a\n BITWISE_NOT, // ~a\n PREFIX_INC, // ++a\n PREFIX_DEC, // --a\n\n // unary postfix\n POSTFIX_INC, // a++\n POSTFIX_DEC // a--\n\n // not overridable:\n // IDENTITY // a === b\n // LOGICAL_AND // a && b\n // LOGICAL_OR // a || b\n}\n\n/** Returns the operator kind represented by the specified decorator and string argument. */\nfunction operatorKindFromDecorator(decoratorKind: DecoratorKind, arg: string): OperatorKind {\n assert(arg.length);\n switch (decoratorKind) {\n case DecoratorKind.OPERATOR:\n case DecoratorKind.OPERATOR_BINARY: {\n switch (arg.charCodeAt(0)) {\n case CharCode.OPENBRACKET: {\n if (arg == \"[]\") return OperatorKind.INDEXED_GET;\n if (arg == \"[]=\") return OperatorKind.INDEXED_SET;\n break;\n }\n case CharCode.OPENBRACE: {\n if (arg == \"{}\") return OperatorKind.UNCHECKED_INDEXED_GET;\n if (arg == \"{}=\") return OperatorKind.UNCHECKED_INDEXED_SET;\n break;\n }\n case CharCode.PLUS: {\n if (arg == \"+\") return OperatorKind.ADD;\n break;\n }\n case CharCode.MINUS: {\n if (arg == \"-\") return OperatorKind.SUB;\n break;\n }\n case CharCode.ASTERISK: {\n if (arg == \"*\") return OperatorKind.MUL;\n if (arg == \"**\") return OperatorKind.POW;\n break;\n }\n case CharCode.SLASH: {\n if (arg == \"/\") return OperatorKind.DIV;\n break;\n }\n case CharCode.PERCENT: {\n if (arg == \"%\") return OperatorKind.REM;\n break;\n }\n case CharCode.AMPERSAND: {\n if (arg == \"&\") return OperatorKind.BITWISE_AND;\n break;\n }\n case CharCode.BAR: {\n if (arg == \"|\") return OperatorKind.BITWISE_OR;\n break;\n }\n case CharCode.CARET: {\n if (arg == \"^\") return OperatorKind.BITWISE_XOR;\n break;\n }\n case CharCode.EQUALS: {\n if (arg == \"==\") return OperatorKind.EQ;\n break;\n }\n case CharCode.EXCLAMATION: {\n if (arg == \"!=\") return OperatorKind.NE;\n break;\n }\n case CharCode.GREATERTHAN: {\n if (arg == \">\") return OperatorKind.GT;\n if (arg == \">=\") return OperatorKind.GE;\n if (arg == \">>\") return OperatorKind.BITWISE_SHR;\n if (arg == \">>>\") return OperatorKind.BITWISE_SHR_U;\n break;\n }\n case CharCode.LESSTHAN: {\n if (arg == \"<\") return OperatorKind.LT;\n if (arg == \"<=\") return OperatorKind.LE;\n if (arg == \"<<\") return OperatorKind.BITWISE_SHL;\n break;\n }\n }\n break;\n }\n case DecoratorKind.OPERATOR_PREFIX: {\n switch (arg.charCodeAt(0)) {\n case CharCode.PLUS: {\n if (arg == \"+\") return OperatorKind.PLUS;\n if (arg == \"++\") return OperatorKind.PREFIX_INC;\n break;\n }\n case CharCode.MINUS: {\n if (arg == \"-\") return OperatorKind.MINUS;\n if (arg == \"--\") return OperatorKind.PREFIX_DEC;\n break;\n }\n case CharCode.EXCLAMATION: {\n if (arg == \"!\") return OperatorKind.NOT;\n break;\n }\n case CharCode.TILDE: {\n if (arg == \"~\") return OperatorKind.BITWISE_NOT;\n break;\n }\n }\n break;\n }\n case DecoratorKind.OPERATOR_POSTFIX: {\n switch (arg.charCodeAt(0)) {\n case CharCode.PLUS: {\n if (arg == \"++\") return OperatorKind.POSTFIX_INC;\n break;\n }\n case CharCode.MINUS: {\n if (arg == \"--\") return OperatorKind.POSTFIX_DEC;\n break;\n }\n }\n break;\n }\n }\n return OperatorKind.INVALID;\n}\n\n/** Represents an AssemblyScript program. */\nexport class Program extends DiagnosticEmitter {\n\n /** Resolver instance. */\n resolver: Resolver;\n /** Array of sources. */\n sources: Source[] = [];\n /** Diagnostic offset used where successively obtaining the next diagnostic. */\n diagnosticsOffset: i32 = 0;\n /** Compiler options. */\n options: Options;\n /** Special native code source. */\n nativeSource: Source;\n /** Special native code file. */\n nativeFile: File;\n\n // lookup maps\n\n /** Files by unique internal name. */\n filesByName: Map = new Map();\n /** Elements by unique internal name in element space. */\n elementsByName: Map = new Map();\n /** Elements by declaration. */\n elementsByDeclaration: Map = new Map();\n /** Element instances by unique internal name. */\n instancesByName: Map = new Map();\n /** Classes backing basic types like `i32`. */\n typeClasses: Map = new Map();\n /** Managed classes contained in the program, by id. */\n managedClasses: Map = new Map();\n /** A set of unique function signatures contained in the program, by id. */\n uniqueSignatures: Signature[] = new Array(0);\n\n // standard references\n\n /** ArrayBufferView reference. */\n arrayBufferViewInstance: Class;\n /** ArrayBuffer instance reference. */\n arrayBufferInstance: Class;\n /** Array prototype reference. */\n arrayPrototype: ClassPrototype;\n /** Set prototype reference. */\n setPrototype: ClassPrototype;\n /** Map prototype reference. */\n mapPrototype: ClassPrototype;\n /** Fixed array prototype reference. */\n fixedArrayPrototype: ClassPrototype;\n /** Int8Array prototype. */\n i8ArrayPrototype: ClassPrototype;\n /** Int16Array prototype. */\n i16ArrayPrototype: ClassPrototype;\n /** Int32Array prototype. */\n i32ArrayPrototype: ClassPrototype;\n /** Int64Array prototype. */\n i64ArrayPrototype: ClassPrototype;\n /** Uint8Array prototype. */\n u8ArrayPrototype: ClassPrototype;\n /** Uint8ClampedArray prototype. */\n u8ClampedArrayPrototype: ClassPrototype;\n /** Uint16Array prototype. */\n u16ArrayPrototype: ClassPrototype;\n /** Uint32Array prototype. */\n u32ArrayPrototype: ClassPrototype;\n /** Uint64Array prototype. */\n u64ArrayPrototype: ClassPrototype;\n /** Float32Array prototype. */\n f32ArrayPrototype: ClassPrototype;\n /** Float64Array prototype. */\n f64ArrayPrototype: ClassPrototype;\n /** String instance reference. */\n stringInstance: Class;\n /** Abort function reference, if not explicitly disabled. */\n abortInstance: Function | null;\n\n // runtime references\n\n /** RT `__alloc(size: usize, id: u32): usize` */\n allocInstance: Function;\n /** RT `__realloc(ref: usize, newSize: usize): usize` */\n reallocInstance: Function;\n /** RT `__free(ref: usize): void` */\n freeInstance: Function;\n /** RT `__retain(ref: usize): usize` */\n retainInstance: Function;\n /** RT `__release(ref: usize): void` */\n releaseInstance: Function;\n /** RT `__collect(): void` */\n collectInstance: Function;\n /** RT `__visit(ref: usize, cookie: u32): void` */\n visitInstance: Function;\n /** RT `__typeinfo(id: u32): RTTIFlags` */\n typeinfoInstance: Function;\n /** RT `__instanceof(ref: usize, superId: u32): bool` */\n instanceofInstance: Function;\n /** RT `__allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize` */\n allocArrayInstance: Function;\n\n /** Next class id. */\n nextClassId: u32 = 0;\n /** Next signature id. */\n nextSignatureId: i32 = 0;\n /** Constructs a new program, optionally inheriting parser diagnostics. */\n constructor(\n /** Shared array of diagnostic messages (emitted so far). */\n diagnostics: DiagnosticMessage[] | null = null\n ) {\n super(diagnostics);\n var nativeSource = new Source(LIBRARY_SUBST, \"[native code]\", SourceKind.LIBRARY_ENTRY);\n this.nativeSource = nativeSource;\n var nativeFile = new File(this, nativeSource);\n this.nativeFile = nativeFile;\n this.filesByName.set(nativeFile.internalName, nativeFile);\n this.resolver = new Resolver(this);\n }\n\n /** Writes a common runtime header to the specified buffer. */\n writeRuntimeHeader(buffer: Uint8Array, offset: i32, classInstance: Class, payloadSize: u32): void {\n // BLOCK {\n // mmInfo: usize // WASM64 TODO\n // gcInfo: u32\n // rtId: u32\n // rtSize: u32\n // }\n assert(payloadSize < (1 << 28)); // 1 bit BUFFERED + 3 bits color\n writeI32(payloadSize, buffer, offset);\n writeI32(1, buffer, offset + 4); // RC=1\n writeI32(classInstance.id, buffer, offset + 8);\n writeI32(payloadSize, buffer, offset + 12);\n }\n\n /** Gets the size of a runtime header. */\n get runtimeHeaderSize(): i32 {\n return 16;\n }\n\n /** Creates a native variable declaration. */\n makeNativeVariableDeclaration(\n /** The simple name of the variable */\n name: string,\n /** Flags indicating specific traits, e.g. `CONST`. */\n flags: CommonFlags = CommonFlags.NONE\n ): VariableDeclaration {\n var range = this.nativeSource.range;\n return Node.createVariableDeclaration(\n Node.createIdentifierExpression(name, range),\n null, null, null, flags, range\n );\n }\n\n /** Creates a native type declaration. */\n makeNativeTypeDeclaration(\n /** The simple name of the type. */\n name: string,\n /** Flags indicating specific traits, e.g. `GENERIC`. */\n flags: CommonFlags = CommonFlags.NONE\n ): TypeDeclaration {\n var range = this.nativeSource.range;\n var identifier = Node.createIdentifierExpression(name, range);\n return Node.createTypeDeclaration(\n identifier,\n null,\n Node.createOmittedType(range),\n null, flags, range\n );\n }\n\n // a dummy signature for programmatically generated native functions\n private nativeDummySignature: FunctionTypeNode | null = null;\n\n /** Creates a native function declaration. */\n makeNativeFunctionDeclaration(\n /** The simple name of the function. */\n name: string,\n /** Flags indicating specific traits, e.g. `DECLARE`. */\n flags: CommonFlags = CommonFlags.NONE\n ): FunctionDeclaration {\n var range = this.nativeSource.range;\n return Node.createFunctionDeclaration(\n Node.createIdentifierExpression(name, range),\n null,\n this.nativeDummySignature || (this.nativeDummySignature = Node.createFunctionType([],\n Node.createNamedType( // ^ AST signature doesn't really matter, is overridden anyway\n Node.createSimpleTypeName(CommonSymbols.void_, range),\n null, false, range\n ),\n null, false, range)\n ),\n null, null, flags, ArrowKind.NONE, range\n );\n }\n\n /** Creates a native namespace declaration. */\n makeNativeNamespaceDeclaration(\n /** The simple name of the namespace. */\n name: string,\n /** Flags indicating specific traits, e.g. `EXPORT`. */\n flags: CommonFlags = CommonFlags.NONE\n ): NamespaceDeclaration {\n var range = this.nativeSource.range;\n return Node.createNamespaceDeclaration(\n Node.createIdentifierExpression(name, range),\n [], null, flags, range\n );\n }\n\n /** Creates a native function. */\n makeNativeFunction(\n /** The simple name of the function. */\n name: string,\n /** Concrete function signature. */\n signature: Signature,\n /** Parent element, usually a file, class or namespace. */\n parent: Element = this.nativeFile,\n /** Flags indicating specific traits, e.g. `GENERIC`. */\n flags: CommonFlags = CommonFlags.NONE,\n /** Decorator flags representing built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ): Function {\n return new Function(\n name,\n new FunctionPrototype(\n name,\n parent,\n this.makeNativeFunctionDeclaration(name, flags),\n decoratorFlags\n ),\n signature\n );\n }\n\n /** Gets the (possibly merged) program element linked to the specified declaration. */\n getElementByDeclaration(declaration: DeclarationStatement): DeclaredElement {\n var elementsByDeclaration = this.elementsByDeclaration;\n assert(elementsByDeclaration.has(declaration));\n return elementsByDeclaration.get(declaration)!;\n }\n\n /** Initializes the program and its elements prior to compilation. */\n initialize(options: Options): void {\n this.options = options;\n\n // register native types\n this.registerNativeType(CommonSymbols.i8, Type.i8);\n this.registerNativeType(CommonSymbols.i16, Type.i16);\n this.registerNativeType(CommonSymbols.i32, Type.i32);\n this.registerNativeType(CommonSymbols.i64, Type.i64);\n this.registerNativeType(CommonSymbols.isize, options.isizeType);\n this.registerNativeType(CommonSymbols.u8, Type.u8);\n this.registerNativeType(CommonSymbols.u16, Type.u16);\n this.registerNativeType(CommonSymbols.u32, Type.u32);\n this.registerNativeType(CommonSymbols.u64, Type.u64);\n this.registerNativeType(CommonSymbols.usize, options.usizeType);\n this.registerNativeType(CommonSymbols.bool, Type.bool);\n this.registerNativeType(CommonSymbols.f32, Type.f32);\n this.registerNativeType(CommonSymbols.f64, Type.f64);\n this.registerNativeType(CommonSymbols.void_, Type.void);\n this.registerNativeType(CommonSymbols.number, Type.f64); // alias\n this.registerNativeType(CommonSymbols.boolean, Type.bool); // alias\n this.nativeFile.add(CommonSymbols.native, new TypeDefinition(\n CommonSymbols.native,\n this.nativeFile,\n this.makeNativeTypeDeclaration(CommonSymbols.native, CommonFlags.EXPORT | CommonFlags.GENERIC),\n DecoratorFlags.BUILTIN\n ));\n this.nativeFile.add(CommonSymbols.indexof, new TypeDefinition(\n CommonSymbols.indexof,\n this.nativeFile,\n this.makeNativeTypeDeclaration(CommonSymbols.indexof, CommonFlags.EXPORT | CommonFlags.GENERIC),\n DecoratorFlags.BUILTIN\n ));\n this.nativeFile.add(CommonSymbols.valueof, new TypeDefinition(\n CommonSymbols.valueof,\n this.nativeFile,\n this.makeNativeTypeDeclaration(CommonSymbols.valueof, CommonFlags.EXPORT | CommonFlags.GENERIC),\n DecoratorFlags.BUILTIN\n ));\n this.nativeFile.add(CommonSymbols.returnof, new TypeDefinition(\n CommonSymbols.returnof,\n this.nativeFile,\n this.makeNativeTypeDeclaration(CommonSymbols.returnof, CommonFlags.EXPORT | CommonFlags.GENERIC),\n DecoratorFlags.BUILTIN\n ));\n if (options.hasFeature(Feature.SIMD)) this.registerNativeType(CommonSymbols.v128, Type.v128);\n\n // register compiler hints\n this.registerConstantInteger(CommonSymbols.ASC_TARGET, Type.i32,\n i64_new(options.isWasm64 ? Target.WASM64 : Target.WASM32));\n this.registerConstantInteger(CommonSymbols.ASC_NO_ASSERT, Type.bool,\n i64_new(options.noAssert ? 1 : 0, 0));\n this.registerConstantInteger(CommonSymbols.ASC_MEMORY_BASE, Type.i32,\n i64_new(options.memoryBase, 0));\n this.registerConstantInteger(CommonSymbols.ASC_OPTIMIZE_LEVEL, Type.i32,\n i64_new(options.optimizeLevelHint, 0));\n this.registerConstantInteger(CommonSymbols.ASC_SHRINK_LEVEL, Type.i32,\n i64_new(options.shrinkLevelHint, 0));\n this.registerConstantInteger(CommonSymbols.ASC_FEATURE_MUTABLE_GLOBAL, Type.bool,\n i64_new(options.hasFeature(Feature.MUTABLE_GLOBAL) ? 1 : 0, 0));\n this.registerConstantInteger(CommonSymbols.ASC_FEATURE_SIGN_EXTENSION, Type.bool,\n i64_new(options.hasFeature(Feature.SIGN_EXTENSION) ? 1 : 0, 0));\n this.registerConstantInteger(CommonSymbols.ASC_FEATURE_BULK_MEMORY, Type.bool,\n i64_new(options.hasFeature(Feature.BULK_MEMORY) ? 1 : 0, 0));\n this.registerConstantInteger(CommonSymbols.ASC_FEATURE_SIMD, Type.bool,\n i64_new(options.hasFeature(Feature.SIMD) ? 1 : 0, 0));\n this.registerConstantInteger(CommonSymbols.ASC_FEATURE_THREADS, Type.bool,\n i64_new(options.hasFeature(Feature.THREADS) ? 1 : 0, 0));\n\n // remember deferred elements\n var queuedImports = new Array();\n var queuedExports = new Map>();\n var queuedExportsStar = new Map();\n var queuedExtends = new Array();\n var queuedImplements = new Array();\n\n // initialize relevant declaration-like statements of the entire program\n for (let i = 0, k = this.sources.length; i < k; ++i) {\n let source = this.sources[i];\n let file = new File(this, source);\n this.filesByName.set(file.internalName, file);\n let statements = source.statements;\n for (let j = 0, l = statements.length; j < l; ++j) {\n let statement = statements[j];\n switch (statement.kind) {\n case NodeKind.EXPORT: {\n this.initializeExports(statement, file, queuedExports, queuedExportsStar);\n break;\n }\n case NodeKind.EXPORTDEFAULT: {\n this.initializeExportDefault(statement, file, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.IMPORT: {\n this.initializeImports(statement, file, queuedImports, queuedExports);\n break;\n }\n case NodeKind.VARIABLE: {\n this.initializeVariables(statement, file);\n break;\n }\n case NodeKind.CLASSDECLARATION: {\n this.initializeClass(statement, file, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.ENUMDECLARATION: {\n this.initializeEnum(statement, file);\n break;\n }\n case NodeKind.FUNCTIONDECLARATION: {\n this.initializeFunction(statement, file);\n break;\n }\n case NodeKind.INTERFACEDECLARATION: {\n this.initializeInterface(statement, file);\n break;\n }\n case NodeKind.NAMESPACEDECLARATION: {\n this.initializeNamespace(statement, file, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.TYPEDECLARATION: {\n this.initializeTypeDefinition(statement, file);\n break;\n }\n }\n }\n }\n\n // queued exports * should be linkable now that all files have been processed\n for (let [file, exportsStar] of queuedExportsStar) {\n for (let i = 0, k = exportsStar.length; i < k; ++i) {\n let exportStar = exportsStar[i];\n let foreignFile = this.lookupForeignFile(exportStar.foreignPath, exportStar.foreignPathAlt);\n if (!foreignFile) {\n this.error(\n DiagnosticCode.File_0_not_found,\n exportStar.pathLiteral.range, exportStar.pathLiteral.value\n );\n continue;\n }\n file.ensureExportStar(foreignFile);\n }\n }\n\n // queued imports should be resolvable now through traversing exports and queued exports\n for (let i = 0, k = queuedImports.length; i < k; ++i) {\n let queuedImport = queuedImports[i];\n let foreignIdentifier = queuedImport.foreignIdentifier;\n if (foreignIdentifier) { // i.e. import { foo [as bar] } from \"./baz\"\n let element = this.lookupForeign(\n foreignIdentifier.text,\n queuedImport.foreignPath,\n queuedImport.foreignPathAlt,\n queuedExports\n );\n if (element) {\n queuedImport.localFile.add(\n queuedImport.localIdentifier.text,\n element,\n true // isImport\n );\n } else {\n // FIXME: file not found is not reported if this happens?\n this.error(\n DiagnosticCode.Module_0_has_no_exported_member_1,\n foreignIdentifier.range, queuedImport.foreignPath, foreignIdentifier.text\n );\n }\n } else { // i.e. import * as bar from \"./bar\"\n let foreignFile = this.lookupForeignFile(queuedImport.foreignPath, queuedImport.foreignPathAlt);\n if (foreignFile) {\n let localFile = queuedImport.localFile;\n let localName = queuedImport.localIdentifier.text;\n localFile.add(\n localName,\n foreignFile.asImportedNamespace(\n localName,\n localFile\n ),\n true // isImport\n );\n } else {\n assert(false); // already reported by the parser not finding the file\n }\n }\n }\n\n // queued exports should be resolvable now that imports are finalized\n for (let [file, exports] of queuedExports) {\n for (let [exportName, queuedExport] of exports) {\n let localName = queuedExport.localIdentifier.text;\n let foreignPath = queuedExport.foreignPath;\n if (foreignPath) { // i.e. export { foo [as bar] } from \"./baz\"\n let element = this.lookupForeign(\n localName,\n foreignPath,\n assert(queuedExport.foreignPathAlt), // must be set if foreignPath is\n queuedExports\n );\n if (element) {\n file.ensureExport(exportName, element);\n } else {\n this.error(\n DiagnosticCode.Module_0_has_no_exported_member_1,\n queuedExport.localIdentifier.range,\n foreignPath, localName\n );\n }\n } else { // i.e. export { foo [as bar] }\n let element = file.lookupInSelf(localName);\n if (element) {\n file.ensureExport(exportName, element);\n } else {\n let globalElement = this.lookupGlobal(localName);\n if (globalElement && globalElement instanceof DeclaredElement) { // export { memory }\n file.ensureExport(exportName, globalElement);\n } else {\n this.error(\n DiagnosticCode.Module_0_has_no_exported_member_1,\n queuedExport.foreignIdentifier.range,\n file.internalName, queuedExport.foreignIdentifier.text\n );\n }\n }\n }\n }\n }\n\n // register ArrayBuffer (id=0), String (id=1), ArrayBufferView (id=2)\n assert(this.nextClassId == 0);\n this.arrayBufferInstance = this.requireClass(CommonSymbols.ArrayBuffer);\n assert(this.arrayBufferInstance.id == 0);\n this.stringInstance = this.requireClass(CommonSymbols.String);\n assert(this.stringInstance.id == 1);\n this.arrayBufferViewInstance = this.requireClass(CommonSymbols.ArrayBufferView);\n assert(this.arrayBufferViewInstance.id == 2);\n\n // register classes backing basic types\n this.registerNativeTypeClass(TypeKind.I8, CommonSymbols.I8);\n this.registerNativeTypeClass(TypeKind.I16, CommonSymbols.I16);\n this.registerNativeTypeClass(TypeKind.I32, CommonSymbols.I32);\n this.registerNativeTypeClass(TypeKind.I64, CommonSymbols.I64);\n this.registerNativeTypeClass(TypeKind.ISIZE, CommonSymbols.Isize);\n this.registerNativeTypeClass(TypeKind.U8, CommonSymbols.U8);\n this.registerNativeTypeClass(TypeKind.U16, CommonSymbols.U16);\n this.registerNativeTypeClass(TypeKind.U32, CommonSymbols.U32);\n this.registerNativeTypeClass(TypeKind.U64, CommonSymbols.U64);\n this.registerNativeTypeClass(TypeKind.USIZE, CommonSymbols.Usize);\n this.registerNativeTypeClass(TypeKind.BOOL, CommonSymbols.Bool);\n this.registerNativeTypeClass(TypeKind.F32, CommonSymbols.F32);\n this.registerNativeTypeClass(TypeKind.F64, CommonSymbols.F64);\n if (options.hasFeature(Feature.SIMD)) this.registerNativeTypeClass(TypeKind.V128, CommonSymbols.V128);\n\n // register views but don't instantiate them yet\n this.i8ArrayPrototype = this.require(CommonSymbols.Int8Array, ElementKind.CLASS_PROTOTYPE);\n this.i16ArrayPrototype = this.require(CommonSymbols.Int16Array, ElementKind.CLASS_PROTOTYPE);\n this.i32ArrayPrototype = this.require(CommonSymbols.Int32Array, ElementKind.CLASS_PROTOTYPE);\n this.i64ArrayPrototype = this.require(CommonSymbols.Int64Array, ElementKind.CLASS_PROTOTYPE);\n this.u8ArrayPrototype = this.require(CommonSymbols.Uint8Array, ElementKind.CLASS_PROTOTYPE);\n this.u8ClampedArrayPrototype = this.require(CommonSymbols.Uint8ClampedArray, ElementKind.CLASS_PROTOTYPE);\n this.u16ArrayPrototype = this.require(CommonSymbols.Uint16Array, ElementKind.CLASS_PROTOTYPE);\n this.u32ArrayPrototype = this.require(CommonSymbols.Uint32Array, ElementKind.CLASS_PROTOTYPE);\n this.u64ArrayPrototype = this.require(CommonSymbols.Uint64Array, ElementKind.CLASS_PROTOTYPE);\n this.f32ArrayPrototype = this.require(CommonSymbols.Float32Array, ElementKind.CLASS_PROTOTYPE);\n this.f64ArrayPrototype = this.require(CommonSymbols.Float64Array, ElementKind.CLASS_PROTOTYPE);\n\n // resolve base prototypes of derived classes\n var resolver = this.resolver;\n for (let i = 0, k = queuedExtends.length; i < k; ++i) {\n let thisPrototype = queuedExtends[i];\n let extendsNode = assert(thisPrototype.extendsNode); // must be present if in queuedExtends\n let baseElement = resolver.resolveTypeName(extendsNode.name, thisPrototype.parent); // reports\n if (!baseElement) continue;\n if (baseElement.kind == ElementKind.CLASS_PROTOTYPE) {\n let basePrototype = baseElement;\n if (basePrototype.hasDecorator(DecoratorFlags.SEALED)) {\n this.error(\n DiagnosticCode.Class_0_is_sealed_and_cannot_be_extended,\n extendsNode.range, (baseElement).identifierNode.text\n );\n }\n if (\n basePrototype.hasDecorator(DecoratorFlags.UNMANAGED) !=\n thisPrototype.hasDecorator(DecoratorFlags.UNMANAGED)\n ) {\n this.error(\n DiagnosticCode.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa,\n Range.join(thisPrototype.identifierNode.range, extendsNode.range)\n );\n }\n thisPrototype.basePrototype = basePrototype;\n } else {\n this.error(\n DiagnosticCode.A_class_may_only_extend_another_class,\n extendsNode.range\n );\n }\n }\n\n // set up global aliases\n {\n let globalAliases = options.globalAliases;\n if (globalAliases) {\n for (let [alias, name] of globalAliases) {\n if (!name.length) continue; // explicitly disabled\n let firstChar = name.charCodeAt(0);\n if (firstChar >= CharCode._0 && firstChar <= CharCode._9) {\n this.registerConstantInteger(alias, Type.i32, i64_new(parseInt(name, 10)));\n } else {\n let elementsByName = this.elementsByName;\n let element = elementsByName.get(name);\n if (element) {\n if (elementsByName.has(alias)) throw new Error(\"duplicate global element: \" + name);\n elementsByName.set(alias, element);\n }\n else throw new Error(\"no such global element: \" + name);\n }\n }\n }\n }\n\n // register stdlib components\n this.arrayPrototype = this.require(CommonSymbols.Array, ElementKind.CLASS_PROTOTYPE);\n this.fixedArrayPrototype = this.require(CommonSymbols.FixedArray, ElementKind.CLASS_PROTOTYPE);\n this.setPrototype = this.require(CommonSymbols.Set, ElementKind.CLASS_PROTOTYPE);\n this.mapPrototype = this.require(CommonSymbols.Map, ElementKind.CLASS_PROTOTYPE);\n this.abortInstance = this.lookupFunction(CommonSymbols.abort); // can be disabled\n this.allocInstance = this.requireFunction(CommonSymbols.alloc);\n this.reallocInstance = this.requireFunction(CommonSymbols.realloc);\n this.freeInstance = this.requireFunction(CommonSymbols.free);\n this.retainInstance = this.requireFunction(CommonSymbols.retain);\n this.releaseInstance = this.requireFunction(CommonSymbols.release);\n this.collectInstance = this.requireFunction(CommonSymbols.collect);\n this.typeinfoInstance = this.requireFunction(CommonSymbols.typeinfo);\n this.instanceofInstance = this.requireFunction(CommonSymbols.instanceof_);\n this.visitInstance = this.requireFunction(CommonSymbols.visit);\n this.allocArrayInstance = this.requireFunction(CommonSymbols.allocArray);\n\n // mark module exports, i.e. to apply proper wrapping behavior on the boundaries\n for (let file of this.filesByName.values()) {\n let exports = file.exports;\n if (exports !== null && file.source.sourceKind == SourceKind.USER_ENTRY) {\n for (let element of exports.values()) this.markModuleExport(element);\n }\n }\n }\n\n /** Requires that a global library element of the specified kind is present and returns it. */\n private require(name: string, kind: ElementKind): Element {\n var element = this.lookupGlobal(name);\n if (!element) throw new Error(\"missing \" + name);\n if (element.kind != kind) throw new Error(\"unexpected \" + name);\n return element;\n }\n\n /** Requires that a non-generic global class is present and returns it. */\n private requireClass(name: string): Class {\n var prototype = this.require(name, ElementKind.CLASS_PROTOTYPE);\n var resolved = this.resolver.resolveClass(prototype, null);\n if (!resolved) throw new Error(\"invalid \" + name);\n return resolved;\n }\n\n /** Obtains a non-generic global function and returns it. Returns `null` if it does not exist. */\n private lookupFunction(name: string): Function | null {\n var prototype = this.lookupGlobal(name);\n if (!prototype || prototype.kind != ElementKind.FUNCTION_PROTOTYPE) return null;\n return this.resolver.resolveFunction(prototype, null);\n }\n\n /** Requires that a non-generic global function is present and returns it. */\n private requireFunction(name: string): Function {\n var prototype = this.require(name, ElementKind.FUNCTION_PROTOTYPE);\n var resolved = this.resolver.resolveFunction(prototype, null);\n if (!resolved) throw new Error(\"invalid \" + name);\n return resolved;\n }\n\n /** Marks an element and its children as a module export. */\n private markModuleExport(element: Element): void {\n element.set(CommonFlags.MODULE_EXPORT);\n switch (element.kind) {\n case ElementKind.CLASS_PROTOTYPE: {\n let instanceMembers = (element).instanceMembers;\n if (instanceMembers) for (let member of instanceMembers.values()) this.markModuleExport(member);\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n let getterPrototype = (element).getterPrototype;\n if (getterPrototype) this.markModuleExport(getterPrototype);\n let setterPrototype = (element).setterPrototype;\n if (setterPrototype) this.markModuleExport(setterPrototype);\n break;\n }\n case ElementKind.PROPERTY:\n case ElementKind.FUNCTION:\n case ElementKind.FIELD:\n case ElementKind.CLASS: assert(false); // assumes that there are no instances yet\n }\n {\n let members = element.members;\n if (members) for (let member of members.values()) this.markModuleExport(member);\n }\n }\n\n /** Registers a native type with the program. */\n private registerNativeType(name: string, type: Type): void {\n var element = new TypeDefinition(\n name,\n this.nativeFile,\n this.makeNativeTypeDeclaration(name, CommonFlags.EXPORT),\n DecoratorFlags.BUILTIN\n );\n element.setType(type);\n this.nativeFile.add(name, element);\n }\n\n /** Registers the backing class of a native type. */\n private registerNativeTypeClass(typeKind: TypeKind, className: string): void {\n assert(!this.typeClasses.has(typeKind));\n var element = this.lookupGlobal(className);\n if (element) {\n assert(element.kind == ElementKind.CLASS_PROTOTYPE);\n let classElement = this.resolver.resolveClass(element, null);\n if (classElement) this.typeClasses.set(typeKind, classElement);\n }\n }\n\n /** Registers a constant integer value within the global scope. */\n private registerConstantInteger(name: string, type: Type, value: I64): void {\n assert(type.is(TypeFlags.INTEGER)); // must be an integer type\n var global = new Global(\n name,\n this.nativeFile,\n DecoratorFlags.NONE,\n this.makeNativeVariableDeclaration(name, CommonFlags.CONST | CommonFlags.EXPORT)\n );\n global.setConstantIntegerValue(value, type);\n this.nativeFile.add(name, global);\n }\n\n /** Registers a constant float value within the global scope. */\n private registerConstantFloat(name: string, type: Type, value: f64): void {\n assert(type.is(TypeFlags.FLOAT)); // must be a float type\n var global = new Global(\n name,\n this.nativeFile,\n DecoratorFlags.NONE,\n this.makeNativeVariableDeclaration(name, CommonFlags.CONST | CommonFlags.EXPORT)\n );\n global.setConstantFloatValue(value, type);\n this.nativeFile.add(name, global);\n }\n\n /** Ensures that the given global element exists. Attempts to merge duplicates. */\n ensureGlobal(name: string, element: DeclaredElement): DeclaredElement {\n var elementsByName = this.elementsByName;\n if (elementsByName.has(name)) {\n let actual = elementsByName.get(name)!;\n // NOTE: this is effectively only performed when merging native types with\n // their respective namespaces in std/builtins, but can also trigger when a\n // user has multiple global elements of the same name in different files,\n // which might result in unexpected shared symbols accross files. considering\n // this a wonky feature for now that we might want to revisit later.\n if (actual !== element) {\n let merged = tryMerge(elementsByName.get(name)!, element);\n if (!merged) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n element.identifierNode.range, name\n );\n return element;\n }\n element = merged;\n }\n }\n elementsByName.set(name, element);\n return element;\n }\n\n /** Looks up the element of the specified name in the global scope. */\n lookupGlobal(name: string): Element | null {\n var elements = this.elementsByName;\n if (elements.has(name)) return elements.get(name);\n return null;\n }\n\n /** Looks up the element of the specified name in the global scope. Errors if not present. */\n requireGlobal(name: string): Element {\n var elements = this.elementsByName;\n if (elements.has(name)) return elements.get(name)!;\n throw new Error(\"missing global\");\n }\n\n /** Tries to locate a foreign file given its normalized path. */\n private lookupForeignFile(\n /** Normalized path to the other file. */\n foreignPath: string,\n /** Alternative normalized path to the other file. */\n foreignPathAlt: string\n ): File | null {\n var filesByName = this.filesByName;\n return filesByName.has(foreignPath)\n ? filesByName.get(foreignPath)!\n : filesByName.has(foreignPathAlt)\n ? filesByName.get(foreignPathAlt)!\n : null;\n }\n\n /** Tries to locate a foreign element by traversing exports and queued exports. */\n private lookupForeign(\n /** Identifier within the other file. */\n foreignName: string,\n /** Normalized path to the other file. */\n foreignPath: string,\n /** Alternative normalized path to the other file. */\n foreignPathAlt: string,\n /** So far queued exports. */\n queuedExports: Map>\n ): DeclaredElement | null {\n do {\n let foreignFile = this.lookupForeignFile(foreignPath, foreignPathAlt);\n if (!foreignFile) return null; // no such file\n\n // search already resolved exports\n let element = foreignFile.lookupExport(foreignName);\n if (element) return element;\n\n // otherwise traverse queued exports\n if (queuedExports.has(foreignFile)) {\n let fileQueuedExports = queuedExports.get(foreignFile)!;\n if (fileQueuedExports.has(foreignName)) {\n let queuedExport = fileQueuedExports.get(foreignName)!;\n if (queuedExport.foreignPath) { // imported from another file\n foreignName = queuedExport.localIdentifier.text;\n foreignPath = queuedExport.foreignPath;\n foreignPathAlt = assert(queuedExport.foreignPathAlt);\n continue;\n } else { // local element of this file\n element = foreignFile.lookupInSelf(queuedExport.localIdentifier.text);\n if (element) return element;\n }\n }\n }\n break;\n } while (true);\n return null;\n }\n\n /** Validates that only supported decorators are present. */\n private checkDecorators(\n /** Decorators present on an element. */\n decorators: DecoratorNode[] | null,\n /** Accepted decorator flags. Emits diagnostics if any other decorators are present. */\n acceptedFlags: DecoratorFlags\n ): DecoratorFlags {\n var flags = DecoratorFlags.NONE;\n if (decorators) {\n for (let i = 0, k = decorators.length; i < k; ++i) {\n let decorator = decorators[i];\n let kind = decoratorNameToKind(decorator.name);\n let flag = decoratorKindToFlag(kind);\n if (flag) {\n if (flag == DecoratorFlags.BUILTIN) {\n if (!(acceptedFlags & flag) && !decorator.range.source.isLibrary) {\n this.error(\n DiagnosticCode.Decorator_0_is_not_valid_here,\n decorator.range, decorator.name.range.toString()\n );\n } else {\n flags |= flag;\n }\n } else if (!(acceptedFlags & flag)) {\n this.error(\n DiagnosticCode.Decorator_0_is_not_valid_here,\n decorator.range, decorator.name.range.toString()\n );\n } else if (flags & flag) {\n this.error(\n DiagnosticCode.Duplicate_decorator,\n decorator.range, decorator.name.range.toString()\n );\n } else {\n flags |= flag;\n }\n }\n }\n }\n return flags;\n }\n\n /** Initializes a class declaration. */\n private initializeClass(\n /** The declaration to initialize. */\n declaration: ClassDeclaration,\n /** Parent element, usually a file or namespace. */\n parent: Element,\n /** So far queued `extends` clauses. */\n queuedExtends: ClassPrototype[],\n /** So far queued `implements` clauses. */\n queuedImplements: ClassPrototype[]\n ): ClassPrototype | null {\n var name = declaration.name.text;\n var element = new ClassPrototype(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators,\n DecoratorFlags.GLOBAL |\n DecoratorFlags.SEALED |\n DecoratorFlags.UNMANAGED\n )\n );\n if (!parent.add(name, element)) return null;\n\n var implementsTypes = declaration.implementsTypes;\n if (implementsTypes) {\n let numImplementsTypes = implementsTypes.length;\n // cannot implement interfaces when unmanaged\n if (element.hasDecorator(DecoratorFlags.UNMANAGED)) {\n if (numImplementsTypes) {\n this.error(\n DiagnosticCode.Unmanaged_classes_cannot_implement_interfaces,\n Range.join(\n declaration.name.range,\n implementsTypes[numImplementsTypes - 1].range\n )\n );\n }\n } else if (numImplementsTypes) {\n // remember classes that implement interfaces\n for (let i = 0; i < numImplementsTypes; ++i) {\n this.warning( // TODO: not yet supported\n DiagnosticCode.Operation_not_supported,\n implementsTypes[i].range\n );\n }\n queuedImplements.push(element);\n }\n }\n // remember classes that extend another class\n if (declaration.extendsType) queuedExtends.push(element);\n\n // initialize members\n var memberDeclarations = declaration.members;\n for (let i = 0, k = memberDeclarations.length; i < k; ++i) {\n let memberDeclaration = memberDeclarations[i];\n switch (memberDeclaration.kind) {\n case NodeKind.FIELDDECLARATION: {\n this.initializeField(memberDeclaration, element);\n break;\n }\n case NodeKind.METHODDECLARATION: {\n if (memberDeclaration.isAny(CommonFlags.GET | CommonFlags.SET)) {\n this.initializeProperty(memberDeclaration, element);\n } else {\n this.initializeMethod(memberDeclaration, element);\n }\n break;\n }\n case NodeKind.INDEXSIGNATUREDECLARATION: break; // ignored for now\n default: assert(false); // class member expected\n }\n }\n return element;\n }\n\n /** Initializes a field of a class or interface. */\n private initializeField(\n /** The declaration to initialize. */\n declaration: FieldDeclaration,\n /** Parent class. */\n parent: ClassPrototype\n ): void {\n var name = declaration.name.text;\n var decorators = declaration.decorators;\n var element: DeclaredElement;\n if (declaration.is(CommonFlags.STATIC)) { // global variable\n assert(parent.kind != ElementKind.INTERFACE_PROTOTYPE);\n element = new Global(\n name,\n parent,\n this.checkDecorators(decorators,\n (declaration.is(CommonFlags.READONLY)\n ? DecoratorFlags.INLINE\n : DecoratorFlags.NONE\n ) | DecoratorFlags.LAZY | DecoratorFlags.UNSAFE\n ),\n declaration\n );\n if (!parent.add(name, element)) return;\n } else { // actual instance field\n assert(!declaration.isAny(CommonFlags.ABSTRACT | CommonFlags.GET | CommonFlags.SET));\n element = new FieldPrototype(\n name,\n parent,\n declaration,\n this.checkDecorators(decorators, DecoratorFlags.UNSAFE)\n );\n if (!parent.addInstance(name, element)) return;\n }\n }\n\n /** Initializes a method of a class or interface. */\n private initializeMethod(\n /** The declaration to initialize. */\n declaration: MethodDeclaration,\n /** Parent class. */\n parent: ClassPrototype\n ): void {\n var name = declaration.name.text;\n var isStatic = declaration.is(CommonFlags.STATIC);\n var acceptedFlags = DecoratorFlags.INLINE | DecoratorFlags.UNSAFE;\n if (!declaration.is(CommonFlags.GENERIC)) {\n acceptedFlags |= DecoratorFlags.OPERATOR_BINARY\n | DecoratorFlags.OPERATOR_PREFIX\n | DecoratorFlags.OPERATOR_POSTFIX;\n }\n var element = new FunctionPrototype(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators, acceptedFlags)\n );\n if (isStatic) { // global function\n assert(declaration.name.kind != NodeKind.CONSTRUCTOR);\n if (!parent.add(name, element)) return;\n } else { // actual instance method\n if (!parent.addInstance(name, element)) return;\n }\n this.checkOperatorOverloads(declaration.decorators, element, parent);\n }\n\n /** Checks that operator overloads are generally valid, if present. */\n private checkOperatorOverloads(\n /** Decorators to check. */\n decorators: DecoratorNode[] | null,\n /** Decorated method. */\n prototype: FunctionPrototype,\n /** Parent class. */\n classPrototype: ClassPrototype\n ): void {\n if (decorators) {\n for (let i = 0, k = decorators.length; i < k; ++i) {\n let decorator = decorators[i];\n switch (decorator.decoratorKind) {\n case DecoratorKind.OPERATOR:\n case DecoratorKind.OPERATOR_BINARY:\n case DecoratorKind.OPERATOR_PREFIX:\n case DecoratorKind.OPERATOR_POSTFIX: {\n let numArgs = decorator.arguments && decorator.arguments.length || 0;\n if (numArgs == 1) {\n let firstArg = (decorator.arguments)[0];\n if (\n firstArg.kind == NodeKind.LITERAL &&\n (firstArg).literalKind == LiteralKind.STRING\n ) {\n let kind = operatorKindFromDecorator(\n decorator.decoratorKind,\n (firstArg).value\n );\n if (kind == OperatorKind.INVALID) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n firstArg.range\n );\n } else {\n let overloads = classPrototype.overloadPrototypes;\n if (overloads.has(kind)) {\n this.error(\n DiagnosticCode.Duplicate_function_implementation,\n firstArg.range\n );\n } else {\n prototype.operatorKind = kind;\n overloads.set(kind, prototype);\n }\n }\n } else {\n this.error(\n DiagnosticCode.String_literal_expected,\n firstArg.range\n );\n }\n } else {\n this.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n decorator.range, \"1\", numArgs.toString(10)\n );\n }\n }\n }\n }\n }\n }\n\n /** Ensures that the property introduced by the specified getter or setter exists.*/\n private ensureProperty(\n /** The declaration of the getter or setter introducing the property. */\n declaration: MethodDeclaration,\n /** Parent class. */\n parent: ClassPrototype\n ): PropertyPrototype | null {\n var name = declaration.name.text;\n if (declaration.is(CommonFlags.STATIC)) {\n let parentMembers = parent.members;\n if (parentMembers && parentMembers.has(name)) {\n let element = parentMembers.get(name)!;\n if (element.kind == ElementKind.PROPERTY_PROTOTYPE) return element;\n } else {\n let element = new PropertyPrototype(name, parent, declaration);\n if (!parent.add(name, element)) return null;\n return element;\n }\n } else {\n let parentMembers = parent.instanceMembers;\n if (parentMembers && parentMembers.has(name)) {\n let element = parentMembers.get(name);\n if (element.kind == ElementKind.PROPERTY_PROTOTYPE) return element;\n } else {\n let element = new PropertyPrototype(name, parent, declaration);\n if (!parent.addInstance(name, element)) return null;\n return element;\n }\n }\n this.error(\n DiagnosticCode.Duplicate_property_0,\n declaration.name.range, name\n );\n return null;\n }\n\n /** Initializes a property of a class. */\n private initializeProperty(\n /** The declaration of the getter or setter. */\n declaration: MethodDeclaration,\n /** Parent class. */\n parent: ClassPrototype\n ): void {\n var property = this.ensureProperty(declaration, parent);\n if (!property) return;\n var name = declaration.name.text;\n var isGetter = declaration.is(CommonFlags.GET);\n if (isGetter) {\n if (property.getterPrototype) {\n this.error(\n DiagnosticCode.Duplicate_property_0,\n declaration.name.range, name\n );\n return;\n }\n } else {\n if (property.setterPrototype) {\n this.error(\n DiagnosticCode.Duplicate_property_0,\n declaration.name.range, name\n );\n return;\n }\n }\n var element = new FunctionPrototype(\n (isGetter ? GETTER_PREFIX : SETTER_PREFIX) + name,\n property,\n declaration,\n this.checkDecorators(declaration.decorators,\n DecoratorFlags.INLINE | DecoratorFlags.UNSAFE\n )\n );\n if (isGetter) {\n property.getterPrototype = element;\n } else {\n property.setterPrototype = element;\n }\n }\n\n /** Initializes an enum. */\n private initializeEnum(\n /** The declaration to initialize. */\n declaration: EnumDeclaration,\n /** Parent element, usually a file or namespace. */\n parent: Element\n ): Enum | null {\n var name = declaration.name.text;\n var element = new Enum(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators,\n DecoratorFlags.GLOBAL |\n DecoratorFlags.INLINE |\n DecoratorFlags.LAZY\n )\n );\n if (!parent.add(name, element)) return null;\n var values = declaration.values;\n for (let i = 0, k = values.length; i < k; ++i) {\n this.initializeEnumValue(values[i], element);\n }\n return element;\n }\n\n /** Initializes an enum value. */\n private initializeEnumValue(\n /** The declaration to initialize. */\n declaration: EnumValueDeclaration,\n /** Parent enum. */\n parent: Enum\n ): void {\n var name = declaration.name.text;\n var element = new EnumValue(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators,\n DecoratorFlags.NONE\n )\n );\n if (!parent.add(name, element)) return;\n }\n\n /** Initializes an `export` statement. */\n private initializeExports(\n /** The statement to initialize. */\n statement: ExportStatement,\n /** Parent file. */\n parent: File,\n /** So far queued `export`s. */\n queuedExports: Map>,\n /** So far queued `export *`s. */\n queuedExportsStar: Map\n ): void {\n var members = statement.members;\n if (members) { // export { foo, bar } [from \"./baz\"]\n for (let i = 0, k = members.length; i < k; ++i) {\n this.initializeExport(members[i], parent, statement.internalPath, queuedExports);\n }\n } else { // export * from \"./baz\"\n let queued: QueuedExportStar[];\n if (queuedExportsStar.has(parent)) queued = queuedExportsStar.get(parent)!;\n else queuedExportsStar.set(parent, queued = []);\n let foreignPath = assert(statement.internalPath); // must be set for export *\n queued.push(new QueuedExportStar(\n foreignPath,\n foreignPath.endsWith(INDEX_SUFFIX) // strip or add index depending on what's already present\n ? foreignPath.substring(0, foreignPath.length - INDEX_SUFFIX.length)\n : foreignPath + INDEX_SUFFIX,\n assert(statement.path)\n ));\n }\n }\n\n /** Initializes a single `export` member. Does not handle `export *`. */\n private initializeExport(\n /** The member to initialize. */\n member: ExportMember,\n /** Local file. */\n localFile: File,\n /** Path to the other file, if present. */\n foreignPath: string | null,\n /** So far queued `export`s. */\n queuedExports: Map>\n ): void {\n var localName = member.localName.text;\n var foreignName = member.exportedName.text;\n\n // check for duplicates\n var element = localFile.lookupExport(foreignName);\n if (element) {\n this.error(\n DiagnosticCode.Export_declaration_conflicts_with_exported_declaration_of_0,\n member.exportedName.range, foreignName\n );\n return;\n }\n // local element, i.e. export { foo [as bar] }\n if (foreignPath === null) {\n\n // resolve right away if the local element already exists\n if (element = localFile.lookupInSelf(localName)) {\n localFile.ensureExport(foreignName, element);\n\n // otherwise queue it\n } else {\n let queued: Map;\n if (queuedExports.has(localFile)) queued = queuedExports.get(localFile)!;\n else queuedExports.set(localFile, queued = new Map());\n queued.set(foreignName, new QueuedExport(\n member.localName,\n member.exportedName,\n null, null\n ));\n }\n\n // foreign element, i.e. export { foo } from \"./bar\"\n } else {\n let queued: Map;\n if (queuedExports.has(localFile)) queued = queuedExports.get(localFile)!;\n else queuedExports.set(localFile, queued = new Map());\n queued.set(foreignName, new QueuedExport(\n member.localName,\n member.exportedName,\n foreignPath,\n foreignPath.endsWith(INDEX_SUFFIX) // strip or add index depending on what's already present\n ? foreignPath.substring(0, foreignPath.length - INDEX_SUFFIX.length)\n : foreignPath + INDEX_SUFFIX\n ));\n }\n }\n\n private initializeExportDefault(\n /** The statement to initialize. */\n statement: ExportDefaultStatement,\n /** Parent file. */\n parent: File,\n /** So far queued `extends` clauses. */\n queuedExtends: Array,\n /** So far queued `implements` clauses. */\n queuedImplements: ClassPrototype[]\n ): void {\n var declaration = statement.declaration;\n var element: DeclaredElement | null = null;\n switch (declaration.kind) {\n case NodeKind.ENUMDECLARATION: {\n element = this.initializeEnum(declaration, parent);\n break;\n }\n case NodeKind.FUNCTIONDECLARATION: {\n element = this.initializeFunction(declaration, parent);\n break;\n }\n case NodeKind.CLASSDECLARATION: {\n element = this.initializeClass(declaration, parent, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.INTERFACEDECLARATION: {\n element = this.initializeInterface(declaration, parent);\n break;\n }\n case NodeKind.NAMESPACEDECLARATION: {\n element = this.initializeNamespace(declaration, parent, queuedExtends, queuedImplements);\n break;\n }\n default: assert(false);\n }\n if (element) {\n let exports = parent.exports;\n if (!exports) parent.exports = exports = new Map();\n else if (exports.has(\"default\")) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n declaration.name.range, \"default\"\n );\n return;\n }\n exports.set(\"default\", element);\n }\n }\n\n /** Initializes an `import` statement. */\n private initializeImports(\n /** The statement to initialize. */\n statement: ImportStatement,\n /** Parent file. */\n parent: File,\n /** So far queued `import`s. */\n queuedImports: QueuedImport[],\n /** So far queued `export`s. */\n queuedExports: Map>\n ): void {\n var declarations = statement.declarations;\n if (declarations) { // import { foo [as bar] } from \"./baz\"\n for (let i = 0, k = declarations.length; i < k; ++i) {\n this.initializeImport(\n declarations[i],\n parent,\n statement.internalPath,\n queuedImports,\n queuedExports\n );\n }\n } else if (statement.namespaceName) { // import * as foo from \"./bar\"\n queuedImports.push(new QueuedImport(\n parent,\n statement.namespaceName,\n null, // indicates import *\n statement.internalPath,\n statement.internalPath + INDEX_SUFFIX\n ));\n } else {\n // import \"./foo\"\n }\n }\n\n /** Initializes a single `import` declaration. Does not handle `import *`. */\n private initializeImport( // { foo [as bar] }\n /** The declaration to initialize. */\n declaration: ImportDeclaration,\n /** Parent file. */\n parent: File,\n /** Path to the other file. */\n foreignPath: string,\n /** So far queued `import`s. */\n queuedImports: QueuedImport[],\n /** So far queued `export`s. */\n queuedExports: Map>\n ): void {\n var foreignPathAlt = foreignPath.endsWith(INDEX_SUFFIX) // strip or add index depending on what's already present\n ? foreignPath.substring(0, foreignPath.length - INDEX_SUFFIX.length)\n : foreignPath + INDEX_SUFFIX;\n\n // resolve right away if the element exists\n var element = this.lookupForeign(declaration.foreignName.text, foreignPath, foreignPathAlt, queuedExports);\n if (element) {\n parent.add(declaration.name.text, element, true);\n return;\n }\n\n // otherwise queue it\n queuedImports.push(new QueuedImport(\n parent,\n declaration.name,\n declaration.foreignName,\n foreignPath,\n foreignPathAlt\n ));\n }\n\n /** Initializes a function. Does not handle methods. */\n private initializeFunction(\n /** The declaration to initialize. */\n declaration: FunctionDeclaration,\n /** Parent element, usually a file or namespace. */\n parent: Element\n ): FunctionPrototype | null {\n var name = declaration.name.text;\n var validDecorators = DecoratorFlags.UNSAFE | DecoratorFlags.BUILTIN;\n if (declaration.is(CommonFlags.AMBIENT)) {\n validDecorators |= DecoratorFlags.EXTERNAL;\n } else {\n validDecorators |= DecoratorFlags.INLINE;\n }\n if (!declaration.is(CommonFlags.INSTANCE)) {\n if (parent.kind != ElementKind.CLASS_PROTOTYPE) {\n validDecorators |= DecoratorFlags.GLOBAL;\n }\n }\n var element = new FunctionPrototype(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators, validDecorators)\n );\n if (!parent.add(name, element)) return null;\n return element;\n }\n\n /** Initializes an interface. */\n private initializeInterface(\n /** The declaration to initialize. */\n declaration: InterfaceDeclaration,\n /** Parent element, usually a file or namespace. */\n parent: Element\n ): InterfacePrototype | null {\n var name = declaration.name.text;\n var element = new InterfacePrototype(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators,\n DecoratorFlags.GLOBAL\n )\n );\n if (!parent.add(name, element)) return null;\n var memberDeclarations = declaration.members;\n for (let i = 0, k = memberDeclarations.length; i < k; ++i) {\n let memberDeclaration = memberDeclarations[i];\n switch (memberDeclaration.kind) {\n case NodeKind.FIELDDECLARATION: {\n this.initializeField(memberDeclaration, element);\n break;\n }\n case NodeKind.METHODDECLARATION: {\n if (memberDeclaration.isAny(CommonFlags.GET | CommonFlags.SET)) {\n this.initializeProperty(memberDeclaration, element);\n } else {\n this.initializeMethod(memberDeclaration, element);\n }\n break;\n }\n default: assert(false); // interface member expected\n }\n }\n return element;\n }\n\n /** Initializes a namespace. */\n private initializeNamespace(\n /** The declaration to initialize. */\n declaration: NamespaceDeclaration,\n /** Parent element, usually a file or another namespace. */\n parent: Element,\n /** So far queued `extends` clauses. */\n queuedExtends: ClassPrototype[],\n /** So far queued `implements` clauses. */\n queuedImplements: ClassPrototype[]\n ): Namespace | null {\n var name = declaration.name.text;\n var original = new Namespace(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators, DecoratorFlags.GLOBAL)\n );\n if (!parent.add(name, original)) return null;\n var element = assert(parent.lookupInSelf(name)); // possibly merged\n var members = declaration.members;\n for (let i = 0, k = members.length; i < k; ++i) {\n let member = members[i];\n switch (member.kind) {\n case NodeKind.CLASSDECLARATION: {\n this.initializeClass(member, original, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.ENUMDECLARATION: {\n this.initializeEnum(member, original);\n break;\n }\n case NodeKind.FUNCTIONDECLARATION: {\n this.initializeFunction(member, original);\n break;\n }\n case NodeKind.INTERFACEDECLARATION: {\n this.initializeInterface(member, original);\n break;\n }\n case NodeKind.NAMESPACEDECLARATION: {\n this.initializeNamespace(member, original, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.TYPEDECLARATION: {\n this.initializeTypeDefinition(member, original);\n break;\n }\n case NodeKind.VARIABLE: {\n this.initializeVariables(member, original);\n break;\n }\n default: assert(false); // namespace member expected\n }\n }\n if (original != element) copyMembers(original, element); // retain original parent\n return element;\n }\n\n /** Initializes a `type` definition. */\n private initializeTypeDefinition(\n /** The declaration to initialize. */\n declaration: TypeDeclaration,\n /** Parent element, usually a file or namespace. */\n parent: Element\n ): void {\n var name = declaration.name.text;\n var element = new TypeDefinition(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators, DecoratorFlags.NONE)\n );\n parent.add(name, element); // reports\n }\n\n /** Initializes a variable statement. */\n private initializeVariables(\n /** The statement to initialize. */\n statement: VariableStatement,\n /** Parent element, usually a file or namespace. */\n parent: Element\n ): void {\n var declarations = statement.declarations;\n for (let i = 0, k = declarations.length; i < k; ++i) {\n let declaration = declarations[i];\n let name = declaration.name.text;\n let acceptedFlags = DecoratorFlags.GLOBAL | DecoratorFlags.LAZY;\n if (declaration.is(CommonFlags.DECLARE)) {\n acceptedFlags |= DecoratorFlags.EXTERNAL;\n }\n if (declaration.is(CommonFlags.CONST)) {\n acceptedFlags |= DecoratorFlags.INLINE;\n }\n let element = new Global(\n name,\n parent,\n this.checkDecorators(declaration.decorators, acceptedFlags),\n declaration\n );\n if (!parent.add(name, element)) continue; // reports\n }\n }\n\n /** Determines the element type of a built-in array. */\n // determineBuiltinArrayType(target: Class): Type | null {\n // switch (target.internalName) {\n // case BuiltinSymbols.Int8Array: return Type.i8;\n // case BuiltinSymbols.Uint8ClampedArray:\n // case BuiltinSymbols.Uint8Array: return Type.u8;\n // case BuiltinSymbols.Int16Array: return Type.i16;\n // case BuiltinSymbols.Uint16Array: return Type.u16;\n // case BuiltinSymbols.Int32Array: return Type.i32;\n // case BuiltinSymbols.Uint32Array: return Type.u32;\n // case BuiltinSymbols.Int64Array: return Type.i64;\n // case BuiltinSymbols.Uint64Array: return Type.u64;\n // case BuiltinSymbols.Float32Array: return Type.f32;\n // case BuiltinSymbols.Float64Array: return Type.f64;\n // }\n // var current: Class | null = target;\n // var arrayPrototype = this.arrayPrototype;\n // do {\n // if (current.prototype == arrayPrototype) { // Array\n // let typeArguments = assert(current.typeArguments);\n // assert(typeArguments.length == 1);\n // return typeArguments[0];\n // }\n // } while (current = current.base);\n // return null;\n // }\n}\n\n/** Indicates the specific kind of an {@link Element}. */\nexport enum ElementKind {\n /** A {@link Global}. */\n GLOBAL,\n /** A {@link Local}. */\n LOCAL,\n /** An {@link Enum}. */\n ENUM,\n /** An {@link EnumValue}. */\n ENUMVALUE,\n /** A {@link FunctionPrototype}. */\n FUNCTION_PROTOTYPE,\n /** A {@link Function}. */\n FUNCTION,\n /** A {@link FunctionTarget}. */\n FUNCTION_TARGET,\n /** A {@link ClassPrototype}. */\n CLASS_PROTOTYPE,\n /** A {@link Class}. */\n CLASS,\n /** An {@link InterfacePrototype}. */\n INTERFACE_PROTOTYPE,\n /** An {@link Interface}. */\n INTERFACE,\n /** A {@link FieldPrototype}. */\n FIELD_PROTOTYPE,\n /** A {@link Field}. */\n FIELD,\n /** A {@link PropertyPrototype}. */\n PROPERTY_PROTOTYPE,\n /** A {@link Property}. */\n PROPERTY,\n /** A {@link Namespace}. */\n NAMESPACE,\n /** A {@link File}. */\n FILE,\n /** A {@link TypeDefinition}. */\n TYPEDEFINITION,\n}\n\n/** Indicates built-in decorators that are present. */\nexport enum DecoratorFlags {\n /** No flags set. */\n NONE = 0,\n /** Is a program global. */\n GLOBAL = 1 << 0,\n /** Is a binary operator overload. */\n OPERATOR_BINARY = 1 << 1,\n /** Is a unary prefix operator overload. */\n OPERATOR_PREFIX = 1 << 2,\n /** Is a unary postfix operator overload. */\n OPERATOR_POSTFIX = 1 << 3,\n /** Is an unmanaged class. */\n UNMANAGED = 1 << 4,\n /** Is a sealed class. */\n SEALED = 1 << 5,\n /** Is always inlined. */\n INLINE = 1 << 6,\n /** Is using a different external name. */\n EXTERNAL = 1 << 7,\n /** Is a builtin. */\n BUILTIN = 1 << 8,\n /** Is compiled lazily. */\n LAZY = 1 << 9,\n /** Is considered unsafe code. */\n UNSAFE = 1 << 10\n}\n\n/** Translates a decorator kind to the respective decorator flag. */\nexport function decoratorKindToFlag(kind: DecoratorKind): DecoratorFlags {\n switch (kind) {\n case DecoratorKind.GLOBAL: return DecoratorFlags.GLOBAL;\n case DecoratorKind.OPERATOR:\n case DecoratorKind.OPERATOR_BINARY: return DecoratorFlags.OPERATOR_BINARY;\n case DecoratorKind.OPERATOR_PREFIX: return DecoratorFlags.OPERATOR_PREFIX;\n case DecoratorKind.OPERATOR_POSTFIX: return DecoratorFlags.OPERATOR_POSTFIX;\n case DecoratorKind.UNMANAGED: return DecoratorFlags.UNMANAGED;\n case DecoratorKind.SEALED: return DecoratorFlags.SEALED;\n case DecoratorKind.INLINE: return DecoratorFlags.INLINE;\n case DecoratorKind.EXTERNAL: return DecoratorFlags.EXTERNAL;\n case DecoratorKind.BUILTIN: return DecoratorFlags.BUILTIN;\n case DecoratorKind.LAZY: return DecoratorFlags.LAZY;\n case DecoratorKind.UNSAFE: return DecoratorFlags.UNSAFE;\n default: return DecoratorFlags.NONE;\n }\n}\n\n/** Base class of all program elements. */\nexport abstract class Element {\n\n /** Parent element. */\n parent: Element;\n /** Common flags indicating specific traits. */\n flags: CommonFlags = CommonFlags.NONE;\n /** Decorator flags indicating annotated traits. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE;\n /** Member elements. */\n members: Map | null = null;\n /** Shadowing type in type space, if any. */\n shadowType: TypeDefinition | null = null;\n\n /** Constructs a new program element. */\n protected constructor(\n /** Specific element kind. */\n public kind: ElementKind,\n /** Simple name. */\n public name: string,\n /** Internal name referring to this element. */\n public internalName: string,\n /** Containing {@link Program}. */\n public program: Program,\n /** Parent element. */\n parent: Element | null\n ) {\n this.program = program;\n this.name = name;\n this.internalName = internalName;\n if (parent) {\n this.parent = parent;\n } else {\n assert(this.kind == ElementKind.FILE);\n this.parent = this; // special case to keep this.parent non-nullable\n }\n }\n\n /** Gets the enclosing file. */\n get file(): File {\n var current: Element = this;\n do if ((current = current.parent).kind == ElementKind.FILE) return current;\n while (true);\n }\n\n /** Tests if this element has a specific flag or flags. */\n is(flag: CommonFlags): bool { return (this.flags & flag) == flag; }\n /** Tests if this element has any of the specified flags. */\n isAny(flags: CommonFlags): bool { return (this.flags & flags) != 0; }\n /** Sets a specific flag or flags. */\n set(flag: CommonFlags): void { this.flags |= flag; }\n /** Unsets the specific flag or flags. */\n unset(flag: CommonFlags): void {this.flags &= ~flag; }\n /** Tests if this element has a specific decorator flag or flags. */\n hasDecorator(flag: DecoratorFlags): bool { return (this.decoratorFlags & flag) == flag; }\n\n /** Looks up the element with the specified name within this element. */\n lookupInSelf(name: string): DeclaredElement | null {\n var members = this.members;\n if (members && members.has(name)) return members.get(name)!;\n return null;\n }\n\n /** Looks up the element with the specified name relative to this element, like in JS. */\n abstract lookup(name: string): Element | null;\n\n /** Adds an element as a member of this one. Reports and returns `false` if a duplicate. */\n add(name: string, element: DeclaredElement): bool {\n var originalDeclaration = element.declaration;\n var members = this.members;\n if (!members) this.members = members = new Map();\n else if (members.has(name)) {\n let actual = members.get(name)!;\n if (actual.parent !== this) {\n // override non-own element\n } else {\n let merged = tryMerge(actual, element);\n if (merged) {\n element = merged; // use merged element\n } else {\n this.program.error(\n DiagnosticCode.Duplicate_identifier_0,\n element.identifierNode.range, element.identifierNode.text\n );\n return false;\n }\n }\n }\n members.set(name, element);\n var program = this.program;\n if (element.kind != ElementKind.FUNCTION_PROTOTYPE || !(element).isBound) {\n // prefer unbound prototypes in global lookup maps\n program.elementsByName.set(element.internalName, element);\n program.elementsByDeclaration.set(originalDeclaration, element);\n }\n return true;\n }\n\n /** Returns a string representation of this element. */\n toString(): string {\n return ElementKind[this.kind] + \":\" + this.internalName;\n }\n}\n\n/** Base class of elements with an associated declaration statement. */\nexport abstract class DeclaredElement extends Element {\n\n /** Constructs a new declared program element. */\n protected constructor(\n /** Specific element kind. */\n kind: ElementKind,\n /** Simple name. */\n name: string,\n /** Internal name referring to this element. */\n internalName: string,\n /** Containing {@link Program}. */\n program: Program,\n /** Parent element. */\n parent: Element | null,\n /** Declaration reference. */\n public declaration: DeclarationStatement\n ) {\n super(kind, name, internalName, program, parent);\n // It is necessary to have access to identifiers of all members and exports\n // for reporting purposes and this is the lowest common denominator. Comes\n // at the expense of not having more specific type information in derived\n // classes, though. Instead, derived classes implement getters for other\n // important AST nodes directly through manual casting, allowing the resolver\n // etc. to not worry about actual declarations.\n this.declaration = declaration;\n this.flags = declaration.flags; // inherit\n }\n\n /** Tests if this element is a library element. */\n get isDeclaredInLibrary(): bool {\n return this.declaration.range.source.isLibrary;\n }\n\n /** Gets the associated identifier node. */\n get identifierNode(): IdentifierExpression {\n return this.declaration.name;\n }\n\n /** Gets the assiciated decorator nodes. */\n get decoratorNodes(): DecoratorNode[] | null {\n return this.declaration.decorators;\n }\n}\n\n/** Base class of elements that can be resolved to a concrete type. */\nexport abstract class TypedElement extends DeclaredElement {\n\n /** Resolved type. Set once `is(RESOLVED)`, otherwise void. */\n type: Type = Type.void;\n\n /** Sets the resolved type of this element. */\n setType(type: Type): void {\n assert(!this.is(CommonFlags.RESOLVED));\n this.type = type;\n this.set(CommonFlags.RESOLVED);\n }\n}\n\n/** A file representing the implicit top-level namespace of a source. */\nexport class File extends Element {\n\n /** File exports. */\n exports: Map | null = null;\n /** File re-exports. */\n exportsStar: File[] | null = null;\n /** Top-level start function of this file. */\n startFunction: Function;\n\n /** Constructs a new file. */\n constructor(\n /** Program this file belongs to. */\n program: Program,\n /** Source of this file. */\n public source: Source\n ) {\n super(\n ElementKind.FILE,\n source.normalizedPath,\n source.internalPath,\n program,\n null // special case for files\n );\n this.source = source;\n assert(!program.filesByName.has(this.internalName));\n program.filesByName.set(this.internalName, this);\n var startFunction = this.program.makeNativeFunction(\n \"start:\" + this.internalName,\n new Signature(program, null, Type.void),\n this\n );\n startFunction.internalName = startFunction.name;\n this.startFunction = startFunction;\n }\n\n /* @override */\n add(name: string, element: DeclaredElement, isImport: bool = false): bool {\n if (element.hasDecorator(DecoratorFlags.GLOBAL)) {\n element = this.program.ensureGlobal(name, element); // possibly merged globally\n }\n if (!super.add(name, element)) return false;\n element = assert(this.lookupInSelf(name)); // possibly merged locally\n if (element.is(CommonFlags.EXPORT) && !isImport) {\n this.ensureExport(\n element.name,\n element\n );\n }\n return true;\n }\n\n /* @override */\n lookupInSelf(name: string): DeclaredElement | null {\n var element = super.lookupInSelf(name);\n if (element) return element;\n var exportsStar = this.exportsStar;\n if (exportsStar) {\n for (let i = 0, k = exportsStar.length; i < k; ++i) {\n if (element = exportsStar[i].lookupInSelf(name)) return element;\n }\n }\n return null;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n var element = this.lookupInSelf(name);\n if (element) return element;\n return this.program.lookupGlobal(name);\n }\n\n /** Ensures that an element is an export of this file. */\n ensureExport(name: string, element: DeclaredElement): void {\n var exports = this.exports;\n if (!exports) this.exports = exports = new Map();\n exports.set(name, element);\n if (this.source.sourceKind == SourceKind.LIBRARY_ENTRY) this.program.ensureGlobal(name, element);\n }\n\n /** Ensures that another file is a re-export of this file. */\n ensureExportStar(file: File): void {\n var exportsStar = this.exportsStar;\n if (!exportsStar) this.exportsStar = exportsStar = [];\n else if (exportsStar.includes(file)) return;\n exportsStar.push(file);\n }\n\n /** Looks up the export of the specified name. */\n lookupExport(name: string): DeclaredElement | null {\n var exports = this.exports;\n if (exports && exports.has(name)) return exports.get(name)!;\n var exportsStar = this.exportsStar;\n if (exportsStar) {\n for (let i = 0, k = exportsStar.length; i < k; ++i) {\n let element = exportsStar[i].lookupExport(name);\n if (element) return element;\n }\n }\n return null;\n }\n\n /** Creates an imported namespace from this file. */\n asImportedNamespace(name: string, parent: Element): Namespace {\n var ns = new Namespace(\n name,\n parent,\n this.program.makeNativeNamespaceDeclaration(name)\n );\n var exports = this.exports;\n if (exports) {\n for (let [memberName, member] of exports) {\n ns.add(memberName, member);\n }\n }\n return ns;\n }\n}\n\n/** A type definition. */\nexport class TypeDefinition extends TypedElement {\n\n /** Constructs a new type definition. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent element, usually a file or namespace. */\n parent: Element,\n /** Declaration reference. */\n declaration: TypeDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.TYPEDEFINITION,\n name,\n mangleInternalName(name, parent, false),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n\n /** Gets the associated type parameter nodes. */\n get typeParameterNodes(): TypeParameterNode[] | null {\n return (this.declaration).typeParameters;\n }\n\n /** Gets the associated type node. */\n get typeNode(): TypeNode {\n return (this.declaration).type;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A namespace that differs from a file in being user-declared with a name. */\nexport class Namespace extends DeclaredElement {\n\n /** Constructs a new namespace. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent element, usually a file or another namespace. */\n parent: Element,\n /** Declaration reference. */\n declaration: NamespaceDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.NAMESPACE,\n name,\n mangleInternalName(name, parent, false),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.lookupInSelf(name)\n || this.parent.lookup(name);\n }\n}\n\n/** An enum. */\nexport class Enum extends TypedElement {\n\n /** Constructs a new enum. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent element, usually a file or namespace. */\n parent: Element,\n /** Declaration reference. */\n declaration: EnumDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.ENUM,\n name,\n mangleInternalName(name, parent, false),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n this.setType(Type.i32);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.lookupInSelf(name)\n || this.parent.lookup(name);\n }\n}\n\n/** Indicates the kind of an inlined constant value. */\nexport const enum ConstantValueKind {\n /** No constant value. */\n NONE,\n /** Constant integer value. */\n INTEGER,\n /** Constant float value. */\n FLOAT\n}\n\n/** Base class of all variable-like program elements. */\nexport abstract class VariableLikeElement extends TypedElement {\n\n /** Constant value kind. */\n constantValueKind: ConstantValueKind = ConstantValueKind.NONE;\n /** Constant integer value, if applicable. */\n constantIntegerValue: I64;\n /** Constant float value, if applicable. */\n constantFloatValue: f64;\n\n /** Constructs a new variable-like element. */\n protected constructor(\n /** Specific element kind. */\n kind: ElementKind,\n /** Simple name. */\n name: string,\n /** Parent element, usually a file, namespace or class. */\n parent: Element,\n /** Declaration reference. Creates a native declaration if omitted. */\n declaration: VariableLikeDeclarationStatement = parent.program.makeNativeVariableDeclaration(name)\n ) {\n super(\n kind,\n name,\n mangleInternalName(name, parent, false),\n parent.program,\n parent,\n declaration\n );\n this.flags = declaration.flags;\n }\n\n /** Gets the associated type node.s */\n get typeNode(): TypeNode | null {\n return (this.declaration).type;\n }\n\n /** Gets the associated initializer node. */\n get initializerNode(): Expression | null {\n return (this.declaration).initializer;\n }\n\n /** Applies a constant integer value to this element. */\n setConstantIntegerValue(value: I64, type: Type): void {\n assert(type.is(TypeFlags.INTEGER));\n this.type = type;\n this.constantValueKind = ConstantValueKind.INTEGER;\n this.constantIntegerValue = value;\n this.set(CommonFlags.CONST | CommonFlags.INLINED | CommonFlags.RESOLVED);\n }\n\n /** Applies a constant float value to this element. */\n setConstantFloatValue(value: f64, type: Type): void {\n assert(type.is(TypeFlags.FLOAT));\n this.type = type;\n this.constantValueKind = ConstantValueKind.FLOAT;\n this.constantFloatValue = value;\n this.set(CommonFlags.CONST | CommonFlags.INLINED | CommonFlags.RESOLVED);\n }\n\n /** @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** An enum value. */\nexport class EnumValue extends VariableLikeElement {\n\n /** Constructs a new enum value. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent enum. */\n parent: Enum,\n /** Declaration reference. */\n declaration: EnumValueDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.ENUMVALUE,\n name,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n this.setType(Type.i32);\n }\n\n /** Whether this enum value is immutable. */\n isImmutable: bool = false;\n\n /** Gets the associated value node. */\n get valueNode(): Expression | null {\n return (this.declaration).value;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A global variable. */\nexport class Global extends VariableLikeElement {\n\n /** Constructs a new global variable. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent element, usually a file, namespace or static class. */\n parent: Element,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags,\n /** Declaration reference. Creates a native declaration if omitted. */\n declaration: VariableLikeDeclarationStatement = parent.program.makeNativeVariableDeclaration(name)\n ) {\n super(\n ElementKind.GLOBAL,\n name,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n}\n\n/** A function parameter. */\nexport class Parameter {\n /** Constructs a new function parameter. */\n constructor(\n /** Parameter name. */\n public name: string,\n /** Parameter type. */\n public type: Type,\n /** Parameter initializer, if present. */\n public initializer: Expression | null = null\n ) {}\n}\n\n/** A local variable. */\nexport class Local extends VariableLikeElement {\n\n /** Constructs a new local variable. */\n constructor(\n /** Simple name. */\n name: string,\n /** Zero-based index within the enclosing function. `-1` indicates a virtual local. */\n public index: i32,\n /** Resolved type. */\n type: Type,\n /** Parent function. */\n parent: Function,\n /** Declaration reference. */\n declaration: VariableLikeDeclarationStatement = parent.program.makeNativeVariableDeclaration(name)\n ) {\n super(\n ElementKind.LOCAL,\n name,\n parent,\n declaration\n );\n this.index = index;\n assert(type != Type.void);\n this.setType(type);\n }\n}\n\n/** A yet unresolved function prototype. */\nexport class FunctionPrototype extends DeclaredElement {\n\n /** Operator kind, if an overload. */\n operatorKind: OperatorKind = OperatorKind.INVALID;\n /** Already resolved instances. */\n instances: Map | null = null;\n\n /** Clones of this prototype that are bounds to specific classes. */\n private boundPrototypes: Map | null = null;\n\n /** Constructs a new function prototype. */\n constructor(\n /** Simple name */\n name: string,\n /** Parent element, usually a file, namespace or class (if a method). */\n parent: Element,\n /** Declaration reference. */\n declaration: FunctionDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.FUNCTION_PROTOTYPE,\n name,\n mangleInternalName(name, parent, declaration.is(CommonFlags.INSTANCE)),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n\n /** Gets the associated type parameter nodes. */\n get typeParameterNodes(): TypeParameterNode[] | null {\n return (this.declaration).typeParameters;\n }\n\n /** Gets the associated function type node. */\n get functionTypeNode(): FunctionTypeNode {\n return (this.declaration).signature;\n }\n\n /** Gets the associated body node. */\n get bodyNode(): Statement | null {\n return (this.declaration).body;\n }\n\n /** Gets the arrow function kind. */\n get arrowKind(): ArrowKind {\n return (this.declaration).arrowKind;\n }\n\n /** Tests if this prototype is bound to a class. */\n get isBound(): bool {\n var parent = this.parent;\n return parent.kind == ElementKind.CLASS\n || parent.kind == ElementKind.PROPERTY_PROTOTYPE && parent.parent.kind == ElementKind.CLASS;\n }\n\n /** Creates a clone of this prototype that is bound to a concrete class instead. */\n toBound(classInstance: Class): FunctionPrototype {\n assert(this.is(CommonFlags.INSTANCE));\n assert(!this.isBound);\n var boundPrototypes = this.boundPrototypes;\n if (!boundPrototypes) this.boundPrototypes = boundPrototypes = new Map();\n else if (boundPrototypes.has(classInstance)) return boundPrototypes.get(classInstance)!;\n var declaration = this.declaration; assert(declaration.kind == NodeKind.METHODDECLARATION);\n var bound = new FunctionPrototype(\n this.name,\n classInstance, // !\n declaration,\n this.decoratorFlags\n );\n bound.flags = this.flags;\n bound.operatorKind = this.operatorKind;\n // NOTE: this.instances holds instances per bound class / unbound\n boundPrototypes.set(classInstance, bound);\n return bound;\n }\n\n /** Gets the resolved instance for the specified instance key, if already resolved. */\n getResolvedInstance(instanceKey: string): Function | null {\n var instances = this.instances;\n if (instances && instances.has(instanceKey)) return instances.get(instanceKey);\n return null;\n }\n\n /** Sets the resolved instance for the specified instance key. */\n setResolvedInstance(instanceKey: string, instance: Function): void {\n var instances = this.instances;\n if (!instances) this.instances = instances = new Map();\n else assert(!instances.has(instanceKey));\n instances.set(instanceKey, instance);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A resolved function. */\nexport class Function extends TypedElement {\n\n /** Function prototype. */\n prototype: FunctionPrototype;\n /** Function signature. */\n signature: Signature;\n /** Map of locals by name. */\n localsByName: Map = new Map();\n /** Array of locals by index. */\n localsByIndex: Local[] = [];\n /** List of additional non-parameter locals. */\n additionalLocals: Type[] = [];\n /** Contextual type arguments. */\n contextualTypeArguments: Map | null;\n /** Default control flow. */\n flow: Flow;\n /** Remembered debug locations. */\n debugLocations: Range[] = [];\n /** Function reference, if compiled. */\n ref: FunctionRef = 0;\n /** Function table index, if any. */\n functionTableIndex: i32 = -1;\n /** Trampoline function for calling with omitted arguments. */\n trampoline: Function | null = null;\n\n /** Counting id of inline operations involving this function. */\n nextInlineId: i32 = 0;\n /** Counting id of anonymous inner functions. */\n nextAnonymousId: i32 = 0;\n /** Counting id of autorelease variables. */\n nextAutoreleaseId: i32 = 0;\n\n /** Constructs a new concrete function. */\n constructor(\n /** Name incl. type parameters, i.e. `foo`. */\n nameInclTypeParameters: string,\n /** Respective function prototype. */\n prototype: FunctionPrototype,\n /** Concrete signature. */\n signature: Signature, // pre-resolved\n /** Contextual type arguments inherited from its parent class, if any. */\n contextualTypeArguments: Map | null = null\n ) {\n super(\n ElementKind.FUNCTION,\n nameInclTypeParameters,\n mangleInternalName(nameInclTypeParameters, prototype.parent, prototype.is(CommonFlags.INSTANCE)),\n prototype.program,\n prototype.parent,\n prototype.declaration\n );\n this.prototype = prototype;\n this.signature = signature;\n this.flags = prototype.flags | CommonFlags.RESOLVED;\n this.decoratorFlags = prototype.decoratorFlags;\n this.contextualTypeArguments = contextualTypeArguments;\n this.type = Type.u32.asFunction(signature);\n if (!prototype.is(CommonFlags.AMBIENT)) {\n let localIndex = 0;\n if (this.is(CommonFlags.INSTANCE)) {\n let local = new Local(\n CommonSymbols.this_,\n localIndex++,\n assert(signature.thisType),\n this\n );\n this.localsByName.set(CommonSymbols.this_, local);\n this.localsByIndex[local.index] = local;\n }\n let parameterTypes = signature.parameterTypes;\n for (let i = 0, k = parameterTypes.length; i < k; ++i) {\n let parameterType = parameterTypes[i];\n let parameterName = signature.getParameterName(i);\n let local = new Local(\n parameterName,\n localIndex++,\n parameterType,\n this\n );\n this.localsByName.set(parameterName, local);\n this.localsByIndex[local.index] = local;\n }\n }\n this.flow = Flow.create(this);\n registerConcreteElement(this.program, this);\n }\n\n /** Adds a local of the specified type, with an optional name. */\n addLocal(type: Type, name: string | null = null, declaration: VariableDeclaration | null = null): Local {\n // if it has a name, check previously as this method will throw otherwise\n var localIndex = this.signature.parameterTypes.length + this.additionalLocals.length;\n if (this.is(CommonFlags.INSTANCE)) ++localIndex;\n var localName = name !== null\n ? name\n : \"var$\" + localIndex.toString();\n var local = new Local(\n localName,\n localIndex,\n type,\n this,\n declaration || this.program.makeNativeVariableDeclaration(localName)\n );\n if (name) {\n if (this.localsByName.has(name)) throw new Error(\"duplicate local name\");\n this.localsByName.set(name, local);\n }\n this.localsByIndex[local.index] = local;\n this.additionalLocals.push(type);\n return local;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n var locals = this.localsByName;\n if (locals.has(name)) return locals.get(name);\n return this.parent.lookup(name);\n }\n\n // used by flows to keep track of temporary locals\n tempI32s: Local[] | null = null;\n tempI64s: Local[] | null = null;\n tempF32s: Local[] | null = null;\n tempF64s: Local[] | null = null;\n tempV128s: Local[] | null = null;\n\n // used by flows to keep track of break labels\n nextBreakId: i32 = 0;\n breakStack: i32[] | null = null;\n breakLabel: string | null = null;\n\n /** Finalizes the function once compiled, releasing no longer needed resources. */\n finalize(module: Module, ref: FunctionRef): void {\n this.ref = ref;\n assert(!this.breakStack || !this.breakStack.length); // internal error\n this.breakStack = null;\n this.breakLabel = null;\n this.tempI32s = this.tempI64s = this.tempF32s = this.tempF64s = null;\n if (this.program.options.sourceMap) {\n let debugLocations = this.debugLocations;\n for (let i = 0, k = debugLocations.length; i < k; ++i) {\n let debugLocation = debugLocations[i];\n module.setDebugLocation(\n ref,\n debugLocation.debugInfoRef,\n debugLocation.source.debugInfoIndex,\n debugLocation.line,\n debugLocation.column\n );\n }\n }\n }\n}\n\n/** A resolved function target, that is a function called indirectly by an index and signature. */\nexport class FunctionTarget extends Element {\n\n /** Underlying signature. */\n signature: Signature;\n /** Function type. */\n type: Type;\n\n /** Constructs a new function target. */\n constructor(\n /** Concrete signature. */\n signature: Signature,\n /** Program reference. */\n program: Program,\n __s: string = \"\" // FIXME: current TS limitation workaround, but a fix seems underway\n ) {\n super(\n ElementKind.FUNCTION_TARGET,\n __s = \"sig:\" + signature.toSignatureString(),\n __s,\n program,\n program.nativeFile\n );\n this.signature = signature;\n this.flags = CommonFlags.RESOLVED;\n this.type = Type.u32.asFunction(signature);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return null;\n }\n}\n\n/** A yet unresolved instance field prototype. */\nexport class FieldPrototype extends DeclaredElement {\n\n /** Constructs a new field prototype. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent class. */\n parent: ClassPrototype,\n /** Declaration reference. */\n declaration: FieldDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.FIELD_PROTOTYPE,\n name,\n mangleInternalName(name, parent, assert(declaration.is(CommonFlags.INSTANCE))),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n\n /** Gets the associated type node. */\n get typeNode(): TypeNode | null {\n return (this.declaration).type;\n }\n\n /** Gets the associated initializer node. */\n get initializerNode(): Expression | null {\n return (this.declaration).initializer;\n }\n\n /** Gets the associated parameter index. Set if declared as a constructor parameter, otherwise `-1`. */\n get parameterIndex(): i32 {\n return (this.declaration).parameterIndex;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A resolved instance field. */\nexport class Field extends VariableLikeElement {\n\n /** Field prototype reference. */\n prototype: FieldPrototype;\n /** Field memory offset, if an instance field. */\n memoryOffset: i32 = -1;\n\n /** Constructs a new field. */\n constructor(\n /** Respective field prototype. */\n prototype: FieldPrototype,\n /** Parent class. */\n parent: Class,\n /** Concrete type. */\n type: Type\n ) {\n super(\n ElementKind.FIELD,\n prototype.name,\n parent,\n prototype.declaration\n );\n this.prototype = prototype;\n this.flags = prototype.flags;\n this.decoratorFlags = prototype.decoratorFlags;\n assert(type != Type.void);\n this.setType(type);\n registerConcreteElement(this.program, this);\n }\n}\n\n/** A property comprised of a getter and a setter function. */\nexport class PropertyPrototype extends DeclaredElement {\n\n /** Getter prototype. */\n getterPrototype: FunctionPrototype | null = null;\n /** Setter prototype. */\n setterPrototype: FunctionPrototype | null = null;\n\n /** Constructs a new property prototype. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent class. */\n parent: ClassPrototype,\n /** Declaration of the getter or setter introducing the property. */\n firstDeclaration: FunctionDeclaration\n ) {\n super(\n ElementKind.PROPERTY_PROTOTYPE,\n name,\n mangleInternalName(name, parent, firstDeclaration.is(CommonFlags.INSTANCE)),\n parent.program,\n parent,\n firstDeclaration\n );\n this.flags &= ~(CommonFlags.GET | CommonFlags.SET);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A resolved property. */\nexport class Property extends VariableLikeElement {\n\n /** Prototype reference. */\n prototype: PropertyPrototype;\n /** Getter instance. */\n getterInstance: Function | null = null;\n /** Setter instance. */\n setterInstance: Function | null = null;\n\n /** Constructs a new property prototype. */\n constructor(\n /** Respective property prototype. */\n prototype: PropertyPrototype,\n /** Parent element, usually a static class prototype or class instance. */\n parent: Element\n ) {\n super(\n ElementKind.PROPERTY,\n prototype.name,\n parent,\n prototype.program.makeNativeVariableDeclaration(\n prototype.name,\n prototype.is(CommonFlags.INSTANCE)\n ? CommonFlags.INSTANCE\n : CommonFlags.NONE\n )\n );\n this.prototype = prototype;\n this.flags = prototype.flags;\n this.decoratorFlags = prototype.decoratorFlags;\n registerConcreteElement(this.program, this);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A yet unresolved class prototype. */\nexport class ClassPrototype extends DeclaredElement {\n\n /** Instance member prototypes. */\n instanceMembers: Map | null = null;\n /** Base class prototype, if applicable. */\n basePrototype: ClassPrototype | null = null; // set in Program#initialize\n /** Constructor prototype. */\n constructorPrototype: FunctionPrototype | null = null;\n /** Operator overload prototypes. */\n overloadPrototypes: Map = new Map();\n /** Already resolved instances. */\n instances: Map | null = null;\n\n constructor(\n /** Simple name. */\n name: string,\n /** Parent element, usually a file or namespace. */\n parent: Element,\n /** Declaration reference. */\n declaration: ClassDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE,\n _isInterface: bool = false // FIXME\n ) {\n super(\n _isInterface ? ElementKind.INTERFACE_PROTOTYPE : ElementKind.CLASS_PROTOTYPE,\n name,\n mangleInternalName(name, parent, declaration.is(CommonFlags.INSTANCE)),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n\n /** Gets the associated type parameter nodes. */\n get typeParameterNodes(): TypeParameterNode[] | null {\n return (this.declaration).typeParameters;\n }\n /** Gets the associated extends node. */\n get extendsNode(): NamedTypeNode | null {\n return (this.declaration).extendsType;\n }\n /** Gets the associated implements nodes. */\n get implementsNodes(): NamedTypeNode[] | null {\n return (this.declaration).implementsTypes;\n }\n\n /** Tests if this prototype is of a builtin array type (Array/TypedArray). */\n get isBuiltinArray(): bool {\n var arrayBufferViewInstance = this.program.arrayBufferViewInstance;\n return arrayBufferViewInstance !== null\n && this.extends(arrayBufferViewInstance.prototype);\n }\n\n /** Tests if this prototype extends the specified. */\n extends(basePtototype: ClassPrototype | null): bool {\n var current: ClassPrototype | null = this;\n do if (current === basePtototype) return true;\n while (current = current.basePrototype);\n return false;\n }\n\n /** Adds an element as an instance member of this one. Returns the previous element if a duplicate. */\n addInstance(name: string, element: DeclaredElement): bool {\n var originalDeclaration = element.declaration;\n var instanceMembers = this.instanceMembers;\n if (!instanceMembers) this.instanceMembers = instanceMembers = new Map();\n else if (instanceMembers.has(name)) {\n let merged = tryMerge(instanceMembers.get(name)!, element);\n if (!merged) {\n this.program.error(\n DiagnosticCode.Duplicate_identifier_0,\n element.identifierNode.range, element.identifierNode.text\n );\n return false;\n }\n element = merged;\n }\n instanceMembers.set(name, element);\n if (element.is(CommonFlags.EXPORT) && this.is(CommonFlags.MODULE_EXPORT)) {\n element.set(CommonFlags.MODULE_EXPORT); // propagate\n }\n this.program.elementsByDeclaration.set(originalDeclaration, element);\n return true;\n }\n\n /** Gets the resolved instance for the specified instance key, if already resolved. */\n getResolvedInstance(instanceKey: string): Class | null {\n var instances = this.instances;\n if (instances && instances.has(instanceKey)) return instances.get(instanceKey);\n return null;\n }\n\n /** Sets the resolved instance for the specified instance key. */\n setResolvedInstance(instanceKey: string, instance: Class): void {\n var instances = this.instances;\n if (!instances) this.instances = instances = new Map();\n else assert(!instances.has(instanceKey));\n instances.set(instanceKey, instance);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\nconst enum AcyclicState {\n UNKNOWN,\n ACYCLIC,\n NOT_ACYCLIC\n}\n\n/** A resolved class. */\nexport class Class extends TypedElement {\n\n /** Class prototype. */\n prototype: ClassPrototype;\n /** Resolved type arguments. */\n typeArguments: Type[] | null;\n /** Base class, if applicable. */\n base: Class | null;\n /** Contextual type arguments for fields and methods. */\n contextualTypeArguments: Map | null = null;\n /** Current member memory offset. */\n currentMemoryOffset: u32 = 0;\n /** Constructor instance. */\n constructorInstance: Function | null = null;\n /** Operator overloads. */\n overloads: Map | null = null;\n /** Unique class id. */\n private _id: u32 = 0;\n /** Remembers acyclic state. */\n private _acyclic: AcyclicState = AcyclicState.UNKNOWN;\n /** Runtime type information flags. */\n rttiFlags: u32 = 0;\n\n /** Gets the unique runtime id of this class. */\n get id(): u32 {\n return this._id; // unmanaged remains 0 (=ArrayBuffer)\n }\n\n /** Tests if this class is of a builtin array type (Array/TypedArray). */\n get isBuiltinArray(): bool {\n return this.prototype.isBuiltinArray;\n }\n\n /** Tests if this class is array-like. */\n get isArrayLike(): bool {\n if (this.isBuiltinArray) return true;\n var lengthField = this.lookupInSelf(\"length\");\n return lengthField !== null && (\n lengthField.kind == ElementKind.FIELD ||\n (\n lengthField.kind == ElementKind.PROPERTY &&\n (lengthField).getterInstance !== null // TODO: resolve & check type?\n )\n ) && (\n this.lookupOverload(OperatorKind.INDEXED_GET) !== null ||\n this.lookupOverload(OperatorKind.UNCHECKED_INDEXED_GET) !== null\n );\n }\n\n /** Constructs a new class. */\n constructor(\n /** Name incl. type parameters, i.e. `Foo`. */\n nameInclTypeParameters: string,\n /** The respective class prototype. */\n prototype: ClassPrototype,\n /** Concrete type arguments, if any. */\n typeArguments: Type[] | null = null,\n /** Base class, if derived. */\n base: Class | null = null,\n _isInterface: bool = false // FIXME\n ) {\n super(\n _isInterface ? ElementKind.INTERFACE : ElementKind.CLASS,\n nameInclTypeParameters,\n mangleInternalName(nameInclTypeParameters, prototype.parent, prototype.is(CommonFlags.INSTANCE)),\n prototype.program,\n prototype.parent,\n prototype.declaration\n );\n var program = this.program;\n this.prototype = prototype;\n this.flags = prototype.flags;\n this.decoratorFlags = prototype.decoratorFlags;\n this.typeArguments = typeArguments;\n this.setType(program.options.usizeType.asClass(this));\n this.base = base;\n\n if (!this.hasDecorator(DecoratorFlags.UNMANAGED)) {\n let id = program.nextClassId++;\n this._id = id;\n program.managedClasses.set(id, this);\n }\n\n // inherit static members and contextual type arguments from base class\n if (base) {\n let inheritedTypeArguments = base.contextualTypeArguments;\n if (inheritedTypeArguments) {\n let contextualTypeArguments = this.contextualTypeArguments;\n for (let [baseName, baseType] of inheritedTypeArguments) {\n if (!contextualTypeArguments) this.contextualTypeArguments = contextualTypeArguments = new Map();\n contextualTypeArguments.set(baseName, baseType);\n }\n }\n }\n\n // apply pre-checked instance-specific contextual type arguments\n var typeParameters = prototype.typeParameterNodes;\n if (typeArguments) {\n let numTypeArguments = typeArguments.length;\n if (!typeParameters || numTypeArguments != typeParameters.length) {\n throw new Error(\"type argument count mismatch\");\n }\n if (numTypeArguments) {\n if (!this.contextualTypeArguments) this.contextualTypeArguments = new Map();\n for (let i = 0; i < numTypeArguments; ++i) {\n this.contextualTypeArguments.set(typeParameters[i].name.text, typeArguments[i]);\n }\n }\n } else if (typeParameters && typeParameters.length) {\n throw new Error(\"type argument count mismatch\");\n }\n registerConcreteElement(program, this);\n }\n\n /** Tests if a value of this class type is assignable to a target of the specified class type. */\n isAssignableTo(target: Class): bool {\n var current: Class | null = this;\n do if (current == target) return true;\n while (current = current.base);\n return false;\n }\n\n /** Looks up the operator overload of the specified kind. */\n lookupOverload(kind: OperatorKind, unchecked: bool = false): Function | null {\n if (unchecked) {\n switch (kind) {\n case OperatorKind.INDEXED_GET: {\n let uncheckedOverload = this.lookupOverload(OperatorKind.UNCHECKED_INDEXED_GET);\n if (uncheckedOverload) return uncheckedOverload;\n break;\n }\n case OperatorKind.INDEXED_SET: {\n let uncheckedOverload = this.lookupOverload(OperatorKind.UNCHECKED_INDEXED_SET);\n if (uncheckedOverload) return uncheckedOverload;\n break;\n }\n default: assert(false);\n }\n }\n var instance: Class | null = this;\n do {\n let overloads = instance.overloads;\n if (overloads) {\n let overload = overloads.get(kind);\n if (overload) return overload;\n }\n } while (instance = instance.base);\n return null;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n\n /** Calculates the memory offset of the specified field. */\n offsetof(fieldName: string): u32 {\n var members = assert(this.members);\n assert(members.has(fieldName));\n var field = members.get(fieldName);\n assert(field.kind == ElementKind.FIELD);\n return (field).memoryOffset;\n }\n\n /** Writes a field value to a buffer and returns the number of bytes written. */\n writeField(name: string, value: T, buffer: Uint8Array, baseOffset: i32): i32 {\n var field = this.lookupInSelf(name);\n if (field && field.kind == ElementKind.FIELD) {\n let offset = baseOffset + (field).memoryOffset;\n switch ((field).type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: {\n writeI8(i32(value), buffer, offset);\n return 1;\n }\n case TypeKind.I16:\n case TypeKind.U16: {\n writeI16(i32(value), buffer, offset);\n return 2;\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n writeI32(i32(value), buffer, offset);\n return 4;\n }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n assert(!this.program.options.isWasm64); // TODO\n writeI32(i32(value), buffer, offset);\n return 4;\n }\n case TypeKind.F32: {\n writeF32(f32(value), buffer, offset);\n return 4;\n }\n case TypeKind.F64: {\n writeF64(f64(value), buffer, offset);\n return 8;\n }\n }\n }\n assert(false);\n return 0;\n }\n\n /** Tests if this class extends the specified prototype. */\n extends(prototype: ClassPrototype): bool {\n return this.prototype.extends(prototype);\n }\n\n /** Gets the concrete type arguments to the specified extendend prototype. */\n getTypeArgumentsTo(extendedPrototype: ClassPrototype): Type[] | null {\n var current: Class | null = this;\n do if (current.prototype === extendedPrototype) return current.typeArguments;\n while (current = current.base);\n return null;\n }\n\n /** Gets the value type of an array. Must be an array. */\n getArrayValueType(): Type {\n var current: Class = this;\n var program = this.program;\n var abvInstance = program.arrayBufferViewInstance;\n while (current.base !== abvInstance) {\n current = assert(current.base);\n }\n switch (current.prototype) {\n case program.i8ArrayPrototype: return Type.i8;\n case program.i16ArrayPrototype: return Type.i16;\n case program.i32ArrayPrototype: return Type.i32;\n case program.i64ArrayPrototype: return Type.i64;\n case program.u8ArrayPrototype:\n case program.u8ClampedArrayPrototype: return Type.u8;\n case program.u16ArrayPrototype: return Type.u16;\n case program.u32ArrayPrototype: return Type.u32;\n case program.u64ArrayPrototype: return Type.u64;\n case program.f32ArrayPrototype: return Type.f32;\n case program.f64ArrayPrototype: return Type.f64;\n case program.arrayPrototype: return assert(this.getTypeArgumentsTo(program.arrayPrototype))[0];\n default: assert(false);\n }\n return Type.void;\n }\n\n /** Tests if this class is inherently acyclic. */\n get isAcyclic(): bool {\n var acyclic = this._acyclic;\n if (acyclic == AcyclicState.UNKNOWN) {\n let hasCycle = this.cyclesTo(this);\n if (hasCycle) this._acyclic = acyclic = AcyclicState.NOT_ACYCLIC;\n else this._acyclic = acyclic = AcyclicState.ACYCLIC;\n }\n return acyclic == AcyclicState.ACYCLIC;\n }\n\n /** Tests if this class potentially forms a reference cycle to another one. */\n private cyclesTo(other: Class, except: Set = new Set()): bool {\n // TODO: The pure RC paper describes acyclic data structures as classes that may contain\n //\n // - scalars\n // - references to classes that are both acyclic and final (here: Java); and\n // - arrays (in our case: also sets, maps) of either of the above\n //\n // Our implementation, however, treats all objects that do not reference themselves directly\n // or indirectly as acylic, allowing them to contain inner cycles of other non-acyclic objects.\n // This contradicts the second assumption and must be revisited when actually implementing RC.\n\n if (except.has(this)) return false;\n except.add(this); // don't recurse indefinitely\n\n // Find out if any field references 'other' directly or indirectly\n var current: Class | null;\n var members = this.members;\n if (members) {\n for (let member of members.values()) {\n if (\n member.kind == ElementKind.FIELD &&\n (current = (member).type.classReference) !== null &&\n (\n current === other ||\n current.cyclesTo(other, except)\n )\n ) return true;\n }\n }\n\n // Do the same for non-field data\n var basePrototype: ClassPrototype | null;\n\n // Arrayother?>\n if ((basePrototype = this.program.arrayPrototype) && this.prototype.extends(basePrototype)) {\n let typeArguments = assert(this.getTypeArgumentsTo(basePrototype));\n assert(typeArguments.length == 1);\n if (\n (current = typeArguments[0].classReference) !== null &&\n (\n current === other ||\n current.cyclesTo(other, except)\n )\n ) return true;\n\n // Setother?>\n } else if ((basePrototype = this.program.setPrototype) && this.prototype.extends(basePrototype)) {\n let typeArguments = assert(this.getTypeArgumentsTo(basePrototype));\n assert(typeArguments.length == 1);\n if (\n (current = typeArguments[0].classReference) !== null &&\n (\n current === other ||\n current.cyclesTo(other, except)\n )\n ) return true;\n\n // Mapother?,V->other?>\n } else if ((basePrototype = this.program.mapPrototype) && this.prototype.extends(basePrototype)) {\n let typeArguments = assert(this.getTypeArgumentsTo(basePrototype));\n assert(typeArguments.length == 2);\n if (\n (current = typeArguments[0].classReference) !== null &&\n (\n current === other ||\n current.cyclesTo(other, except)\n )\n ) return true;\n if (\n (current = typeArguments[1].classReference) !== null &&\n (\n current === other ||\n current.cyclesTo(other, except)\n )\n ) return true;\n }\n return false;\n }\n}\n\n/** A yet unresolved interface. */\nexport class InterfacePrototype extends ClassPrototype { // FIXME\n\n /** Constructs a new interface prototype. */\n constructor(\n name: string,\n parent: Element,\n declaration: InterfaceDeclaration,\n decoratorFlags: DecoratorFlags\n ) {\n super(\n name,\n parent,\n declaration,\n decoratorFlags,\n true\n );\n }\n}\n\n/** A resolved interface. */\nexport class Interface extends Class { // FIXME\n\n /** Constructs a new interface. */\n constructor(\n nameInclTypeParameters: string,\n prototype: InterfacePrototype,\n typeArguments: Type[] = [],\n base: Interface | null = null\n ) {\n super(\n nameInclTypeParameters,\n prototype,\n typeArguments,\n base,\n true\n );\n }\n}\n\n/** Registers a concrete element with a program. */\nfunction registerConcreteElement(program: Program, element: Element): void {\n assert(!program.instancesByName.has(element.internalName));\n program.instancesByName.set(element.internalName, element);\n}\n\n/** Attempts to merge two elements. Returns the merged element on success. */\nfunction tryMerge(older: Element, newer: Element): DeclaredElement | null {\n // NOTE: some of the following cases are not supported by TS, not sure why exactly.\n // suggesting to just merge what seems to be possible for now and revisit later.\n assert(older.program === newer.program);\n assert(!newer.members);\n var merged: DeclaredElement | null = null;\n switch (older.kind) {\n case ElementKind.FUNCTION_PROTOTYPE: {\n switch (newer.kind) {\n case ElementKind.NAMESPACE: {\n copyMembers(newer, older);\n merged = older;\n break;\n }\n case ElementKind.TYPEDEFINITION: {\n if (!older.shadowType) {\n older.shadowType = newer;\n copyMembers(newer, older);\n merged = older;\n }\n break;\n }\n }\n break;\n }\n case ElementKind.CLASS_PROTOTYPE:\n case ElementKind.ENUM: {\n if (newer.kind == ElementKind.NAMESPACE) {\n copyMembers(newer, older);\n merged = older;\n break;\n }\n break;\n }\n case ElementKind.NAMESPACE: {\n switch (newer.kind) {\n case ElementKind.ENUM:\n case ElementKind.CLASS_PROTOTYPE: // TS2434\n case ElementKind.FUNCTION_PROTOTYPE: { // TS2434\n copyMembers(older, newer);\n merged = newer;\n break;\n }\n case ElementKind.NAMESPACE: {\n copyMembers(newer, older);\n merged = older;\n break;\n }\n case ElementKind.TYPEDEFINITION: {\n if (!older.shadowType) {\n older.shadowType = newer;\n copyMembers(newer, older);\n merged = older;\n }\n break;\n }\n }\n break;\n }\n case ElementKind.GLOBAL: {\n if (newer.kind == ElementKind.TYPEDEFINITION) {\n if (!older.shadowType) {\n older.shadowType = newer;\n copyMembers(newer, older);\n merged = older;\n }\n }\n break;\n }\n case ElementKind.TYPEDEFINITION: {\n switch (newer.kind) {\n case ElementKind.GLOBAL:\n case ElementKind.FUNCTION_PROTOTYPE:\n case ElementKind.NAMESPACE: {\n if (!newer.shadowType) {\n newer.shadowType = older;\n copyMembers(older, newer);\n merged = newer;\n }\n break;\n }\n }\n break;\n }\n }\n if (merged) {\n let olderIsExport = older.is(CommonFlags.EXPORT) || older.hasDecorator(DecoratorFlags.GLOBAL);\n let newerIsExport = newer.is(CommonFlags.EXPORT) || newer.hasDecorator(DecoratorFlags.GLOBAL);\n if (olderIsExport != newerIsExport) {\n older.program.error(\n DiagnosticCode.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local,\n merged.identifierNode.range, merged.identifierNode.text\n );\n }\n }\n return merged;\n}\n\n/** Copies the members of `src` to `dest`. */\nfunction copyMembers(src: Element, dest: Element): void {\n var srcMembers = src.members;\n if (srcMembers) {\n let destMembers = dest.members;\n if (!destMembers) dest.members = destMembers = new Map();\n for (let [memberName, member] of srcMembers) {\n destMembers.set(memberName, member);\n }\n }\n}\n\n/** Mangles the internal name of an element with the specified name that is a child of the given parent. */\nexport function mangleInternalName(name: string, parent: Element, isInstance: bool, asGlobal: bool = false): string {\n switch (parent.kind) {\n case ElementKind.FILE: {\n if (asGlobal) return name;\n return parent.internalName + PATH_DELIMITER + name;\n }\n case ElementKind.FUNCTION: {\n if (asGlobal) return name;\n assert(!isInstance);\n return parent.internalName + INNER_DELIMITER + name;\n }\n default: {\n return mangleInternalName(parent.name, parent.parent, parent.is(CommonFlags.INSTANCE), asGlobal)\n + (isInstance ? INSTANCE_DELIMITER : STATIC_DELIMITER) + name;\n }\n }\n}\n","/**\n * A thin wrapper around Binaryen's C-API.\n * @module module\n *//***/\n\nimport { Target } from \"./common\";\n\nexport type ModuleRef = usize;\nexport type FunctionTypeRef = usize;\nexport type FunctionRef = usize;\nexport type ExpressionRef = usize;\nexport type GlobalRef = usize;\nexport type ImportRef = usize;\nexport type ExportRef = usize;\nexport type RelooperRef = usize;\nexport type RelooperBlockRef = usize;\nexport type Index = u32;\n\nexport enum NativeType {\n None = _BinaryenTypeNone(),\n I32 = _BinaryenTypeInt32(),\n I64 = _BinaryenTypeInt64(),\n F32 = _BinaryenTypeFloat32(),\n F64 = _BinaryenTypeFloat64(),\n V128 = _BinaryenTypeVec128(),\n Unreachable = _BinaryenTypeUnreachable(),\n Auto = _BinaryenTypeAuto()\n}\n\nexport enum FeatureFlags {\n Atomics = _BinaryenFeatureAtomics(),\n MutableGloabls = _BinaryenFeatureMutableGlobals(),\n NontrappingFPToInt = _BinaryenFeatureNontrappingFPToInt(),\n SIMD128 = _BinaryenFeatureSIMD128(),\n BulkMemory = _BinaryenFeatureBulkMemory(),\n SignExt = _BinaryenFeatureSignExt(),\n ExceptionHandling = _BinaryenFeatureExceptionHandling()\n}\n\nexport enum ExpressionId {\n Invalid = _BinaryenInvalidId(),\n Block = _BinaryenBlockId(),\n If = _BinaryenIfId(),\n Loop = _BinaryenLoopId(),\n Break = _BinaryenBreakId(),\n Switch = _BinaryenSwitchId(),\n Call = _BinaryenCallId(),\n CallIndirect = _BinaryenCallIndirectId(),\n LocalGet = _BinaryenLocalGetId(),\n LocalSet = _BinaryenLocalSetId(),\n GlobalGet = _BinaryenGlobalGetId(),\n GlobalSet = _BinaryenGlobalSetId(),\n Load = _BinaryenLoadId(),\n Store = _BinaryenStoreId(),\n Const = _BinaryenConstId(),\n Unary = _BinaryenUnaryId(),\n Binary = _BinaryenBinaryId(),\n Select = _BinaryenSelectId(),\n Drop = _BinaryenDropId(),\n Return = _BinaryenReturnId(),\n Host = _BinaryenHostId(),\n Nop = _BinaryenNopId(),\n Unreachable = _BinaryenUnreachableId(),\n AtomicCmpxchg = _BinaryenAtomicCmpxchgId(),\n AtomicRMW = _BinaryenAtomicRMWId(),\n AtomicWait = _BinaryenAtomicWaitId(),\n AtomicNotify = _BinaryenAtomicNotifyId(),\n SIMDExtract = _BinaryenSIMDExtractId(),\n SIMDReplace = _BinaryenSIMDReplaceId(),\n SIMDShuffle = _BinaryenSIMDShuffleId(),\n SIMDBitselect = _BinaryenSIMDBitselectId(),\n SIMDShift = _BinaryenSIMDShiftId(),\n MemoryInit = _BinaryenMemoryInitId(),\n DataDrop = _BinaryenDataDropId(),\n MemoryCopy = _BinaryenMemoryCopyId(),\n MemoryFill = _BinaryenMemoryFillId()\n}\n\nexport enum UnaryOp {\n ClzI32 = _BinaryenClzInt32(),\n CtzI32 = _BinaryenCtzInt32(),\n PopcntI32 = _BinaryenPopcntInt32(),\n NegF32 = _BinaryenNegFloat32(),\n AbsF32 = _BinaryenAbsFloat32(),\n CeilF32 = _BinaryenCeilFloat32(),\n FloorF32 = _BinaryenFloorFloat32(),\n TruncF32 = _BinaryenTruncFloat32(),\n NearestF32 = _BinaryenNearestFloat32(),\n SqrtF32 = _BinaryenSqrtFloat32(),\n EqzI32 = _BinaryenEqZInt32(),\n ClzI64 = _BinaryenClzInt64(),\n CtzI64 = _BinaryenCtzInt64(),\n PopcntI64 = _BinaryenPopcntInt64(),\n NegF64 = _BinaryenNegFloat64(),\n AbsF64 = _BinaryenAbsFloat64(),\n CeilF64 = _BinaryenCeilFloat64(),\n FloorF64 = _BinaryenFloorFloat64(),\n TruncF64 = _BinaryenTruncFloat64(),\n NearestF64 = _BinaryenNearestFloat64(),\n SqrtF64 = _BinaryenSqrtFloat64(),\n EqzI64 = _BinaryenEqZInt64(),\n ExtendI32 = _BinaryenExtendSInt32(),\n ExtendU32 = _BinaryenExtendUInt32(),\n WrapI64 = _BinaryenWrapInt64(),\n TruncF32ToI32 = _BinaryenTruncSFloat32ToInt32(),\n TruncF32ToI64 = _BinaryenTruncSFloat32ToInt64(),\n TruncF32ToU32 = _BinaryenTruncUFloat32ToInt32(),\n TruncF32ToU64 = _BinaryenTruncUFloat32ToInt64(),\n TruncF64ToI32 = _BinaryenTruncSFloat64ToInt32(),\n TruncF64ToI64 = _BinaryenTruncSFloat64ToInt64(),\n TruncF64ToU32 = _BinaryenTruncUFloat64ToInt32(),\n TruncF64ToU64 = _BinaryenTruncUFloat64ToInt64(),\n ReinterpretF32 = _BinaryenReinterpretFloat32(),\n ReinterpretF64 = _BinaryenReinterpretFloat64(),\n ConvertI32ToF32 = _BinaryenConvertSInt32ToFloat32(),\n ConvertI32ToF64 = _BinaryenConvertSInt32ToFloat64(),\n ConvertU32ToF32 = _BinaryenConvertUInt32ToFloat32(),\n ConvertU32ToF64 = _BinaryenConvertUInt32ToFloat64(),\n ConvertI64ToF32 = _BinaryenConvertSInt64ToFloat32(),\n ConvertI64ToF64 = _BinaryenConvertSInt64ToFloat64(),\n ConvertU64ToF32 = _BinaryenConvertUInt64ToFloat32(),\n ConvertU64ToF64 = _BinaryenConvertUInt64ToFloat64(),\n PromoteF32 = _BinaryenPromoteFloat32(),\n DemoteF64 = _BinaryenDemoteFloat64(),\n ReinterpretI32 = _BinaryenReinterpretInt32(),\n ReinterpretI64 = _BinaryenReinterpretInt64(),\n\n // see: https://github.com/WebAssembly/sign-extension-ops\n ExtendI8ToI32 = _BinaryenExtendS8Int32(),\n ExtendI16ToI32 = _BinaryenExtendS16Int32(),\n ExtendI8ToI64 = _BinaryenExtendS8Int64(),\n ExtendI16ToI64 = _BinaryenExtendS16Int64(),\n ExtendI32ToI64 = _BinaryenExtendS32Int64(),\n\n // see: https://github.com/WebAssembly/nontrapping-float-to-int-conversions\n // TruncF32ToI32Sat\n // TruncF32ToU32Sat\n // TruncF64ToI32Sat\n // TruncF64ToU32Sat\n // TruncF32ToI64Sat\n // TruncF32ToU64Sat\n // TruncF64ToI64Sat\n // TruncF64ToU64Sat\n\n // see: https://github.com/WebAssembly/simd\n SplatVecI8x16 = _BinaryenSplatVecI8x16(),\n SplatVecI16x8 = _BinaryenSplatVecI16x8(),\n SplatVecI32x4 = _BinaryenSplatVecI32x4(),\n SplatVecI64x2 = _BinaryenSplatVecI64x2(),\n SplatVecF32x4 = _BinaryenSplatVecF32x4(),\n SplatVecF64x2 = _BinaryenSplatVecF64x2(),\n NotVec128 = _BinaryenNotVec128(),\n NegVecI8x16 = _BinaryenNegVecI8x16(),\n AnyTrueVecI8x16 = _BinaryenAnyTrueVecI8x16(),\n AllTrueVecI8x16 = _BinaryenAllTrueVecI8x16(),\n NegVecI16x8 = _BinaryenNegVecI16x8(),\n AnyTrueVecI16x8 = _BinaryenAnyTrueVecI16x8(),\n AllTrueVecI16x8 = _BinaryenAllTrueVecI16x8(),\n NegVecI32x4 = _BinaryenNegVecI32x4(),\n AnyTrueVecI32x4 = _BinaryenAnyTrueVecI32x4(),\n AllTrueVecI32x4 = _BinaryenAllTrueVecI32x4(),\n NegVecI64x2 = _BinaryenNegVecI64x2(),\n AnyTrueVecI64x2 = _BinaryenAnyTrueVecI64x2(),\n AllTrueVecI64x2 = _BinaryenAllTrueVecI64x2(),\n AbsVecF32x4 = _BinaryenAbsVecF32x4(),\n NegVecF32x4 = _BinaryenNegVecF32x4(),\n SqrtVecF32x4 = _BinaryenSqrtVecF32x4(),\n AbsVecF64x2 = _BinaryenAbsVecF64x2(),\n NegVecF64x2 = _BinaryenNegVecF64x2(),\n SqrtVecF64x2 = _BinaryenSqrtVecF64x2(),\n TruncSatSVecF32x4ToVecI32x4 = _BinaryenTruncSatSVecF32x4ToVecI32x4(),\n TruncSatUVecF32x4ToVecI32x4 = _BinaryenTruncSatUVecF32x4ToVecI32x4(),\n TruncSatSVecF64x2ToVecI64x2 = _BinaryenTruncSatSVecF64x2ToVecI64x2(),\n TruncSatUVecF64x2ToVecI64x2 = _BinaryenTruncSatUVecF64x2ToVecI64x2(),\n ConvertSVecI32x4ToVecF32x4 = _BinaryenConvertSVecI32x4ToVecF32x4(),\n ConvertUVecI32x4ToVecF32x4 = _BinaryenConvertUVecI32x4ToVecF32x4(),\n ConvertSVecI64x2ToVecF64x2 = _BinaryenConvertSVecI64x2ToVecF64x2(),\n ConvertUVecI64x2ToVecF64x2 = _BinaryenConvertUVecI64x2ToVecF64x2()\n}\n\nexport enum BinaryOp {\n AddI32 = _BinaryenAddInt32(),\n SubI32 = _BinaryenSubInt32(),\n MulI32 = _BinaryenMulInt32(),\n DivI32 = _BinaryenDivSInt32(),\n DivU32 = _BinaryenDivUInt32(),\n RemI32 = _BinaryenRemSInt32(),\n RemU32 = _BinaryenRemUInt32(),\n AndI32 = _BinaryenAndInt32(),\n OrI32 = _BinaryenOrInt32(),\n XorI32 = _BinaryenXorInt32(),\n ShlI32 = _BinaryenShlInt32(),\n ShrU32 = _BinaryenShrUInt32(),\n ShrI32 = _BinaryenShrSInt32(),\n RotlI32 = _BinaryenRotLInt32(),\n RotrI32 = _BinaryenRotRInt32(),\n EqI32 = _BinaryenEqInt32(),\n NeI32 = _BinaryenNeInt32(),\n LtI32 = _BinaryenLtSInt32(),\n LtU32 = _BinaryenLtUInt32(),\n LeI32 = _BinaryenLeSInt32(),\n LeU32 = _BinaryenLeUInt32(),\n GtI32 = _BinaryenGtSInt32(),\n GtU32 = _BinaryenGtUInt32(),\n GeI32 = _BinaryenGeSInt32(),\n GeU32 = _BinaryenGeUInt32(),\n AddI64 = _BinaryenAddInt64(),\n SubI64 = _BinaryenSubInt64(),\n MulI64 = _BinaryenMulInt64(),\n DivI64 = _BinaryenDivSInt64(),\n DivU64 = _BinaryenDivUInt64(),\n RemI64 = _BinaryenRemSInt64(),\n RemU64 = _BinaryenRemUInt64(),\n AndI64 = _BinaryenAndInt64(),\n OrI64 = _BinaryenOrInt64(),\n XorI64 = _BinaryenXorInt64(),\n ShlI64 = _BinaryenShlInt64(),\n ShrU64 = _BinaryenShrUInt64(),\n ShrI64 = _BinaryenShrSInt64(),\n RotlI64 = _BinaryenRotLInt64(),\n RotrI64 = _BinaryenRotRInt64(),\n EqI64 = _BinaryenEqInt64(),\n NeI64 = _BinaryenNeInt64(),\n LtI64 = _BinaryenLtSInt64(),\n LtU64 = _BinaryenLtUInt64(),\n LeI64 = _BinaryenLeSInt64(),\n LeU64 = _BinaryenLeUInt64(),\n GtI64 = _BinaryenGtSInt64(),\n GtU64 = _BinaryenGtUInt64(),\n GeI64 = _BinaryenGeSInt64(),\n GeU64 = _BinaryenGeUInt64(),\n AddF32 = _BinaryenAddFloat32(),\n SubF32 = _BinaryenSubFloat32(),\n MulF32 = _BinaryenMulFloat32(),\n DivF32 = _BinaryenDivFloat32(),\n CopysignF32 = _BinaryenCopySignFloat32(),\n MinF32 = _BinaryenMinFloat32(),\n MaxF32 = _BinaryenMaxFloat32(),\n EqF32 = _BinaryenEqFloat32(),\n NeF32 = _BinaryenNeFloat32(),\n LtF32 = _BinaryenLtFloat32(),\n LeF32 = _BinaryenLeFloat32(),\n GtF32 = _BinaryenGtFloat32(),\n GeF32 = _BinaryenGeFloat32(),\n AddF64 = _BinaryenAddFloat64(),\n SubF64 = _BinaryenSubFloat64(),\n MulF64 = _BinaryenMulFloat64(),\n DivF64 = _BinaryenDivFloat64(),\n CopysignF64 = _BinaryenCopySignFloat64(),\n MinF64 = _BinaryenMinFloat64(),\n MaxF64 = _BinaryenMaxFloat64(),\n EqF64 = _BinaryenEqFloat64(),\n NeF64 = _BinaryenNeFloat64(),\n LtF64 = _BinaryenLtFloat64(),\n LeF64 = _BinaryenLeFloat64(),\n GtF64 = _BinaryenGtFloat64(),\n GeF64 = _BinaryenGeFloat64(),\n\n // see: https://github.com/WebAssembly/simd\n EqVecI8x16 = _BinaryenEqVecI8x16(),\n NeVecI8x16 = _BinaryenNeVecI8x16(),\n LtSVecI8x16 = _BinaryenLtSVecI8x16(),\n LtUVecI8x16 = _BinaryenLtUVecI8x16(),\n LeSVecI8x16 = _BinaryenLeSVecI8x16(),\n LeUVecI8x16 = _BinaryenLeUVecI8x16(),\n GtSVecI8x16 = _BinaryenGtSVecI8x16(),\n GtUVecI8x16 = _BinaryenGtUVecI8x16(),\n GeSVecI8x16 = _BinaryenGeSVecI8x16(),\n GeUVecI8x16 = _BinaryenGeUVecI8x16(),\n EqVecI16x8 = _BinaryenEqVecI16x8(),\n NeVecI16x8 = _BinaryenNeVecI16x8(),\n LtSVecI16x8 = _BinaryenLtSVecI16x8(),\n LtUVecI16x8 = _BinaryenLtUVecI16x8(),\n LeSVecI16x8 = _BinaryenLeSVecI16x8(),\n LeUVecI16x8 = _BinaryenLeUVecI16x8(),\n GtSVecI16x8 = _BinaryenGtSVecI16x8(),\n GtUVecI16x8 = _BinaryenGtUVecI16x8(),\n GeSVecI16x8 = _BinaryenGeSVecI16x8(),\n GeUVecI16x8 = _BinaryenGeUVecI16x8(),\n EqVecI32x4 = _BinaryenEqVecI32x4(),\n NeVecI32x4 = _BinaryenNeVecI32x4(),\n LtSVecI32x4 = _BinaryenLtSVecI32x4(),\n LtUVecI32x4 = _BinaryenLtUVecI32x4(),\n LeSVecI32x4 = _BinaryenLeSVecI32x4(),\n LeUVecI32x4 = _BinaryenLeUVecI32x4(),\n GtSVecI32x4 = _BinaryenGtSVecI32x4(),\n GtUVecI32x4 = _BinaryenGtUVecI32x4(),\n GeSVecI32x4 = _BinaryenGeSVecI32x4(),\n GeUVecI32x4 = _BinaryenGeUVecI32x4(),\n EqVecF32x4 = _BinaryenEqVecF32x4(),\n NeVecF32x4 = _BinaryenNeVecF32x4(),\n LtVecF32x4 = _BinaryenLtVecF32x4(),\n LeVecF32x4 = _BinaryenLeVecF32x4(),\n GtVecF32x4 = _BinaryenGtVecF32x4(),\n GeVecF32x4 = _BinaryenGeVecF32x4(),\n EqVecF64x2 = _BinaryenEqVecF64x2(),\n NeVecF64x2 = _BinaryenNeVecF64x2(),\n LtVecF64x2 = _BinaryenLtVecF64x2(),\n LeVecF64x2 = _BinaryenLeVecF64x2(),\n GtVecF64x2 = _BinaryenGtVecF64x2(),\n GeVecF64x2 = _BinaryenGeVecF64x2(),\n AndVec128 = _BinaryenAndVec128(),\n OrVec128 = _BinaryenOrVec128(),\n XorVec128 = _BinaryenXorVec128(),\n AddVecI8x16 = _BinaryenAddVecI8x16(),\n AddSatSVecI8x16 = _BinaryenAddSatSVecI8x16(),\n AddSatUVecI8x16 = _BinaryenAddSatUVecI8x16(),\n SubVecI8x16 = _BinaryenSubVecI8x16(),\n SubSatSVecI8x16 = _BinaryenSubSatSVecI8x16(),\n SubSatUVecI8x16 = _BinaryenSubSatUVecI8x16(),\n MulVecI8x16 = _BinaryenMulVecI8x16(),\n AddVecI16x8 = _BinaryenAddVecI16x8(),\n AddSatSVecI16x8 = _BinaryenAddSatSVecI16x8(),\n AddSatUVecI16x8 = _BinaryenAddSatUVecI16x8(),\n SubVecI16x8 = _BinaryenSubVecI16x8(),\n SubSatSVecI16x8 = _BinaryenSubSatSVecI16x8(),\n SubSatUVecI16x8 = _BinaryenSubSatUVecI16x8(),\n MulVecI16x8 = _BinaryenMulVecI16x8(),\n AddVecI32x4 = _BinaryenAddVecI32x4(),\n SubVecI32x4 = _BinaryenSubVecI32x4(),\n MulVecI32x4 = _BinaryenMulVecI32x4(),\n AddVecI64x2 = _BinaryenAddVecI64x2(),\n SubVecI64x2 = _BinaryenSubVecI64x2(),\n AddVecF32x4 = _BinaryenAddVecF32x4(),\n SubVecF32x4 = _BinaryenSubVecF32x4(),\n MulVecF32x4 = _BinaryenMulVecF32x4(),\n DivVecF32x4 = _BinaryenDivVecF32x4(),\n MinVecF32x4 = _BinaryenMinVecF32x4(),\n MaxVecF32x4 = _BinaryenMaxVecF32x4(),\n AddVecF64x2 = _BinaryenAddVecF64x2(),\n SubVecF64x2 = _BinaryenSubVecF64x2(),\n MulVecF64x2 = _BinaryenMulVecF64x2(),\n DivVecF64x2 = _BinaryenDivVecF64x2(),\n MinVecF64x2 = _BinaryenMinVecF64x2(),\n MaxVecF64x2 = _BinaryenMaxVecF64x2()\n}\n\nexport enum HostOp {\n MemorySize = _BinaryenMemorySize(),\n MemoryGrow = _BinaryenMemoryGrow(),\n}\n\nexport enum AtomicRMWOp {\n Add = _BinaryenAtomicRMWAdd(),\n Sub = _BinaryenAtomicRMWSub(),\n And = _BinaryenAtomicRMWAnd(),\n Or = _BinaryenAtomicRMWOr(),\n Xor = _BinaryenAtomicRMWXor(),\n Xchg = _BinaryenAtomicRMWXchg()\n}\n\nexport enum SIMDExtractOp {\n ExtractLaneSVecI8x16 = _BinaryenExtractLaneSVecI8x16(),\n ExtractLaneUVecI8x16 = _BinaryenExtractLaneUVecI8x16(),\n ExtractLaneSVecI16x8 = _BinaryenExtractLaneSVecI16x8(),\n ExtractLaneUVecI16x8 = _BinaryenExtractLaneUVecI16x8(),\n ExtractLaneVecI32x4 = _BinaryenExtractLaneVecI32x4(),\n ExtractLaneVecI64x2 = _BinaryenExtractLaneVecI64x2(),\n ExtractLaneVecF32x4 = _BinaryenExtractLaneVecF32x4(),\n ExtractLaneVecF64x2 = _BinaryenExtractLaneVecF64x2(),\n}\n\nexport enum SIMDReplaceOp {\n ReplaceLaneVecI8x16 = _BinaryenReplaceLaneVecI8x16(),\n ReplaceLaneVecI16x8 = _BinaryenReplaceLaneVecI16x8(),\n ReplaceLaneVecI32x4 = _BinaryenReplaceLaneVecI32x4(),\n ReplaceLaneVecI64x2 = _BinaryenReplaceLaneVecI64x2(),\n ReplaceLaneVecF32x4 = _BinaryenReplaceLaneVecF32x4(),\n ReplaceLaneVecF64x2 = _BinaryenReplaceLaneVecF64x2()\n}\n\nexport enum SIMDShiftOp {\n ShlVecI8x16 = _BinaryenShlVecI8x16(),\n ShrSVecI8x16 = _BinaryenShrSVecI8x16(),\n ShrUVecI8x16 = _BinaryenShrUVecI8x16(),\n ShlVecI16x8 = _BinaryenShlVecI16x8(),\n ShrSVecI16x8 = _BinaryenShrSVecI16x8(),\n ShrUVecI16x8 = _BinaryenShrUVecI16x8(),\n ShlVecI32x4 = _BinaryenShlVecI32x4(),\n ShrSVecI32x4 = _BinaryenShrSVecI32x4(),\n ShrUVecI32x4 = _BinaryenShrUVecI32x4(),\n ShlVecI64x2 = _BinaryenShlVecI64x2(),\n ShrSVecI64x2 = _BinaryenShrSVecI64x2(),\n ShrUVecI64x2 = _BinaryenShrUVecI64x2()\n}\n\nexport class MemorySegment {\n\n buffer: Uint8Array;\n offset: I64;\n\n static create(buffer: Uint8Array, offset: I64): MemorySegment {\n var segment = new MemorySegment();\n segment.buffer = buffer;\n segment.offset = offset;\n return segment;\n }\n}\n\nexport class Module {\n\n ref: ModuleRef;\n\n private lit: usize;\n\n static create(): Module {\n var module = new Module();\n module.ref = _BinaryenModuleCreate();\n module.lit = memory.allocate(_BinaryenSizeofLiteral());\n return module;\n }\n\n static createFrom(buffer: Uint8Array): Module {\n var cArr = allocU8Array(buffer);\n try {\n let module = new Module();\n module.ref = _BinaryenModuleRead(cArr, buffer.length);\n module.lit = memory.allocate(_BinaryenSizeofLiteral());\n return module;\n } finally {\n memory.free(changetype(cArr));\n }\n }\n\n private constructor() { }\n\n // types\n\n addFunctionType(\n name: string,\n result: NativeType,\n paramTypes: NativeType[] | null\n ): FunctionRef {\n var cStr = this.allocStringCached(name);\n var cArr = allocI32Array(paramTypes);\n try {\n return _BinaryenAddFunctionType(this.ref, cStr, result, cArr, paramTypes ? paramTypes.length : 0);\n } finally {\n memory.free(cArr);\n }\n }\n\n getFunctionTypeBySignature(\n result: NativeType,\n paramTypes: NativeType[] | null\n ): FunctionTypeRef {\n var cArr = allocI32Array(paramTypes);\n try {\n return _BinaryenGetFunctionTypeBySignature(this.ref, result, cArr, paramTypes ? paramTypes.length : 0);\n } finally {\n memory.free(cArr);\n }\n }\n\n removeFunctionType(name: string): void {\n var cStr = this.allocStringCached(name);\n _BinaryenRemoveFunctionType(this.ref, cStr);\n }\n\n // constants\n\n i32(value: i32): ExpressionRef {\n var out = this.lit;\n _BinaryenLiteralInt32(out, value);\n return _BinaryenConst(this.ref, out);\n }\n\n i64(valueLow: i32, valueHigh: i32 = 0): ExpressionRef {\n var out = this.lit;\n _BinaryenLiteralInt64(out, valueLow, valueHigh);\n return _BinaryenConst(this.ref, out);\n }\n\n f32(value: f32): ExpressionRef {\n var out = this.lit;\n _BinaryenLiteralFloat32(out, value);\n return _BinaryenConst(this.ref, out);\n }\n\n f64(value: f64): ExpressionRef {\n var out = this.lit;\n _BinaryenLiteralFloat64(out, value);\n return _BinaryenConst(this.ref, out);\n }\n\n v128(bytes: Uint8Array): ExpressionRef {\n assert(bytes.length == 16);\n var out = this.lit;\n for (let i = 0; i < 16; ++i) store(out + i, bytes[i]);\n _BinaryenLiteralVec128(out, out);\n return _BinaryenConst(this.ref, out);\n }\n\n // expressions\n\n unary(\n op: UnaryOp,\n expr: ExpressionRef\n ): ExpressionRef {\n return _BinaryenUnary(this.ref, op, expr);\n }\n\n binary(\n op: BinaryOp,\n left: ExpressionRef,\n right: ExpressionRef\n ): ExpressionRef {\n return _BinaryenBinary(this.ref, op, left, right);\n }\n\n host(\n op: HostOp,\n name: string | null = null,\n operands: ExpressionRef[] | null = null\n ): ExpressionRef {\n var cStr = this.allocStringCached(name);\n var cArr = allocPtrArray(operands);\n try {\n return _BinaryenHost(this.ref, op, cStr, cArr, operands ? (operands).length : 0);\n } finally {\n memory.free(cArr);\n }\n }\n\n local_get(\n index: i32,\n type: NativeType\n ): ExpressionRef {\n return _BinaryenLocalGet(this.ref, index, type);\n }\n\n local_tee(\n index: i32,\n value: ExpressionRef\n ): ExpressionRef {\n return _BinaryenLocalTee(this.ref, index, value);\n }\n\n global_get(\n name: string,\n type: NativeType\n ): ExpressionRef {\n var cStr = this.allocStringCached(name);\n return _BinaryenGlobalGet(this.ref, cStr, type);\n }\n\n load(\n bytes: Index,\n signed: bool,\n ptr: ExpressionRef,\n type: NativeType,\n offset: Index = 0,\n align: Index = bytes // naturally aligned by default\n ): ExpressionRef {\n return _BinaryenLoad(this.ref, bytes, signed ? 1 : 0, offset, align, type, ptr);\n }\n\n store(\n bytes: Index,\n ptr: ExpressionRef,\n value: ExpressionRef,\n type: NativeType,\n offset: Index = 0,\n align: Index = bytes // naturally aligned by default\n ): ExpressionRef {\n if (type < NativeType.None || type > NativeType.V128) throw new Error(\"here: \" + type);\n return _BinaryenStore(this.ref, bytes, offset, align, ptr, value, type);\n }\n\n atomic_load(\n bytes: Index,\n ptr: ExpressionRef,\n type: NativeType,\n offset: Index = 0\n ): ExpressionRef {\n return _BinaryenAtomicLoad(this.ref, bytes, offset, type, ptr);\n }\n\n atomic_store(\n bytes: Index,\n ptr: ExpressionRef,\n value: ExpressionRef,\n type: NativeType,\n offset: Index = 0\n ): ExpressionRef {\n return _BinaryenAtomicStore(this.ref, bytes, offset, ptr, value, type);\n }\n\n atomic_rmw(\n op: AtomicRMWOp,\n bytes: Index,\n offset: Index,\n ptr: ExpressionRef,\n value: ExpressionRef,\n type: NativeType\n ): ExpressionRef {\n return _BinaryenAtomicRMW(this.ref, op, bytes, offset, ptr, value, type);\n }\n\n atomic_cmpxchg(\n bytes: Index,\n offset: Index,\n ptr: ExpressionRef,\n expected: ExpressionRef,\n replacement: ExpressionRef,\n type: NativeType\n ): ExpressionRef {\n return _BinaryenAtomicCmpxchg(this.ref, bytes, offset, ptr, expected, replacement, type);\n }\n\n atomic_wait(\n ptr: ExpressionRef,\n expected: ExpressionRef,\n timeout: ExpressionRef,\n expectedType: NativeType\n ): ExpressionRef {\n return _BinaryenAtomicWait(this.ref, ptr, expected, timeout, expectedType);\n }\n\n atomic_notify(\n ptr: ExpressionRef,\n notifyCount: ExpressionRef\n ): ExpressionRef {\n return _BinaryenAtomicNotify(this.ref, ptr, notifyCount);\n }\n\n // statements\n\n local_set(\n index: Index,\n value: ExpressionRef\n ): ExpressionRef {\n return _BinaryenLocalSet(this.ref, index, value);\n }\n\n global_set(\n name: string,\n value: ExpressionRef\n ): ExpressionRef {\n var cStr = this.allocStringCached(name);\n return _BinaryenGlobalSet(this.ref, cStr, value);\n }\n\n block(\n label: string | null,\n children: ExpressionRef[],\n type: NativeType = NativeType.None\n ): ExpressionRef {\n var cStr = this.allocStringCached(label);\n var cArr = allocPtrArray(children);\n try {\n return _BinaryenBlock(this.ref, cStr, cArr, children.length, type);\n } finally {\n memory.free(cArr);\n }\n }\n\n br(\n label: string | null,\n condition: ExpressionRef = 0,\n value: ExpressionRef = 0\n ): ExpressionRef {\n var cStr = this.allocStringCached(label);\n return _BinaryenBreak(this.ref, cStr, condition, value);\n }\n\n drop(\n expression: ExpressionRef\n ): ExpressionRef {\n return _BinaryenDrop(this.ref, expression);\n }\n\n loop(\n label: string | null,\n body: ExpressionRef\n ): ExpressionRef {\n var cStr = this.allocStringCached(label);\n return _BinaryenLoop(this.ref, cStr, body);\n }\n\n if(\n condition: ExpressionRef,\n ifTrue: ExpressionRef,\n ifFalse: ExpressionRef = 0\n ): ExpressionRef {\n return _BinaryenIf(this.ref, condition, ifTrue, ifFalse);\n }\n\n nop(): ExpressionRef {\n return _BinaryenNop(this.ref);\n }\n\n return(\n expression: ExpressionRef = 0\n ): ExpressionRef {\n return _BinaryenReturn(this.ref, expression);\n }\n\n select(\n ifTrue: ExpressionRef,\n ifFalse: ExpressionRef,\n condition: ExpressionRef\n ): ExpressionRef {\n return _BinaryenSelect(this.ref, condition, ifTrue, ifFalse);\n }\n\n switch(\n names: string[],\n defaultName: string | null,\n condition: ExpressionRef,\n value: ExpressionRef = 0\n ): ExpressionRef {\n var numNames = names.length;\n var strs = new Array(numNames);\n for (let i = 0; i < numNames; ++i) {\n strs[i] = this.allocStringCached(names[i]);\n }\n var cArr = allocI32Array(strs);\n var cStr = this.allocStringCached(defaultName);\n try {\n return _BinaryenSwitch(this.ref, cArr, numNames, cStr, condition, value);\n } finally {\n memory.free(cArr);\n }\n }\n\n call(\n target: string,\n operands: ExpressionRef[] | null,\n returnType: NativeType\n ): ExpressionRef {\n var cStr = this.allocStringCached(target);\n var cArr = allocPtrArray(operands);\n try {\n return _BinaryenCall(this.ref, cStr, cArr, operands && operands.length || 0, returnType);\n } finally {\n memory.free(cArr);\n }\n }\n\n call_indirect(\n index: ExpressionRef,\n operands: ExpressionRef[] | null,\n typeName: string\n ): ExpressionRef {\n var cStr = this.allocStringCached(typeName);\n var cArr = allocPtrArray(operands);\n try {\n return _BinaryenCallIndirect(this.ref, index, cArr, operands && operands.length || 0, cStr);\n } finally {\n memory.free(cArr);\n }\n }\n\n unreachable(): ExpressionRef {\n return _BinaryenUnreachable(this.ref);\n }\n\n // bulk memory\n\n memory_copy(\n dest: ExpressionRef,\n source: ExpressionRef,\n size: ExpressionRef\n ): ExpressionRef {\n return _BinaryenMemoryCopy(this.ref, dest, source, size);\n }\n\n memory_fill(\n dest: ExpressionRef,\n value: ExpressionRef,\n size: ExpressionRef\n ): ExpressionRef {\n return _BinaryenMemoryFill(this.ref, dest, value, size);\n }\n\n // simd\n\n simd_extract(\n op: SIMDExtractOp,\n vec: ExpressionRef,\n idx: u8\n ): ExpressionRef {\n return _BinaryenSIMDExtract(this.ref, op, vec, idx);\n }\n\n simd_replace(\n op: SIMDReplaceOp,\n vec: ExpressionRef,\n idx: u8,\n value: ExpressionRef\n ): ExpressionRef {\n return _BinaryenSIMDReplace(this.ref, op, vec, idx, value);\n }\n\n simd_shuffle(\n vec1: ExpressionRef,\n vec2: ExpressionRef,\n mask: Uint8Array\n ): ExpressionRef {\n assert(mask.length == 16);\n var cArr = allocU8Array(mask);\n try {\n return _BinaryenSIMDShuffle(this.ref, vec1, vec2, cArr);\n } finally {\n memory.free(cArr);\n }\n }\n\n simd_bitselect(\n vec1: ExpressionRef,\n vec2: ExpressionRef,\n cond: ExpressionRef\n ): ExpressionRef {\n return _BinaryenSIMDBitselect(this.ref, vec1, vec2, cond);\n }\n\n simd_shift(\n op: SIMDShiftOp,\n vec: ExpressionRef,\n shift: ExpressionRef\n ): ExpressionRef {\n return _BinaryenSIMDShift(this.ref, op, vec, shift);\n }\n\n // meta\n\n addGlobal(\n name: string,\n type: NativeType,\n mutable: bool,\n initializer: ExpressionRef\n ): GlobalRef {\n var cStr = this.allocStringCached(name);\n return _BinaryenAddGlobal(this.ref, cStr, type, mutable ? 1 : 0, initializer);\n }\n\n removeGlobal(\n name: string\n ): void {\n var cStr = this.allocStringCached(name);\n _BinaryenRemoveGlobal(this.ref, cStr);\n }\n\n addFunction(\n name: string,\n type: FunctionTypeRef,\n varTypes: NativeType[] | null,\n body: ExpressionRef\n ): FunctionRef {\n var cStr = this.allocStringCached(name);\n var cArr = allocI32Array(varTypes);\n try {\n return _BinaryenAddFunction(this.ref, cStr, type, cArr, varTypes ? varTypes.length : 0, body);\n } finally {\n memory.free(cArr);\n }\n }\n\n removeFunction(name: string): void {\n var cStr = this.allocStringCached(name);\n _BinaryenRemoveFunction(this.ref, cStr);\n }\n\n private hasTemporaryFunction: bool = false;\n\n addTemporaryFunction(result: NativeType, paramTypes: NativeType[] | null, body: ExpressionRef): FunctionRef {\n this.hasTemporaryFunction = assert(!this.hasTemporaryFunction);\n var tempName = this.allocStringCached(\"\");\n var cArr = allocI32Array(paramTypes);\n try {\n let typeRef = _BinaryenAddFunctionType(this.ref, tempName, result, cArr, paramTypes ? paramTypes.length : 0);\n return _BinaryenAddFunction(this.ref, tempName, typeRef, 0, 0, body);\n } finally {\n memory.free(cArr);\n }\n }\n\n removeTemporaryFunction(): void {\n this.hasTemporaryFunction = !assert(this.hasTemporaryFunction);\n var tempName = this.allocStringCached(\"\");\n _BinaryenRemoveFunction(this.ref, tempName);\n _BinaryenRemoveFunctionType(this.ref, tempName);\n }\n\n addFunctionExport(\n internalName: string,\n externalName: string\n ): ExportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalName);\n return _BinaryenAddFunctionExport(this.ref, cStr1, cStr2);\n }\n\n addTableExport(\n internalName: string,\n externalName: string\n ): ExportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalName);\n return _BinaryenAddTableExport(this.ref, cStr1, cStr2);\n }\n\n addMemoryExport(\n internalName: string,\n externalName: string\n ): ExportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalName);\n return _BinaryenAddMemoryExport(this.ref, cStr1, cStr2);\n }\n\n addGlobalExport(\n internalName: string,\n externalName: string\n ): ExportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalName);\n return _BinaryenAddGlobalExport(this.ref, cStr1, cStr2);\n }\n\n removeExport(externalName: string): void {\n var cStr = this.allocStringCached(externalName);\n _BinaryenRemoveExport(this.ref, cStr);\n }\n\n addFunctionImport(\n internalName: string,\n externalModuleName: string,\n externalBaseName: string,\n functionType: FunctionTypeRef\n ): ImportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalModuleName);\n var cStr3 = this.allocStringCached(externalBaseName);\n return _BinaryenAddFunctionImport(this.ref, cStr1, cStr2, cStr3, functionType);\n }\n\n addTableImport(\n internalName: string,\n externalModuleName: string,\n externalBaseName: string\n ): ImportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalModuleName);\n var cStr3 = this.allocStringCached(externalBaseName);\n return _BinaryenAddTableImport(this.ref, cStr1, cStr2, cStr3);\n }\n\n addMemoryImport(\n internalName: string,\n externalModuleName: string,\n externalBaseName: string,\n shared: bool = false,\n ): ImportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalModuleName);\n var cStr3 = this.allocStringCached(externalBaseName);\n return _BinaryenAddMemoryImport(this.ref, cStr1, cStr2, cStr3, shared);\n }\n\n addGlobalImport(\n internalName: string,\n externalModuleName: string,\n externalBaseName: string,\n globalType: NativeType\n ): ImportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalModuleName);\n var cStr3 = this.allocStringCached(externalBaseName);\n return _BinaryenAddGlobalImport(this.ref, cStr1, cStr2, cStr3, globalType);\n }\n\n /** Unlimited memory constant. */\n static readonly UNLIMITED_MEMORY: Index = -1;\n\n setMemory(\n initial: Index,\n maximum: Index,\n segments: MemorySegment[],\n target: Target,\n exportName: string | null = null,\n shared: bool = false\n ): void {\n var cStr = this.allocStringCached(exportName);\n var k = segments.length;\n var segs = new Array(k);\n var psvs = new Array(k);\n var offs = new Array(k);\n var sizs = new Array(k);\n for (let i = 0; i < k; ++i) {\n let buffer = segments[i].buffer;\n let offset = segments[i].offset;\n segs[i] = allocU8Array(buffer);\n psvs[i] = 0; // no passive segments currently\n offs[i] = target == Target.WASM64\n ? this.i64(i64_low(offset), i64_high(offset))\n : this.i32(i64_low(offset));\n sizs[i] = buffer.length;\n }\n var cArr1 = allocI32Array(segs);\n var cArr2 = allocU8Array(psvs);\n var cArr3 = allocI32Array(offs);\n var cArr4 = allocI32Array(sizs);\n try {\n _BinaryenSetMemory(this.ref, initial, maximum, cStr, cArr1, cArr2, cArr3, cArr4, k, shared);\n } finally {\n memory.free(cArr4);\n memory.free(cArr3);\n memory.free(cArr2);\n memory.free(cArr1);\n for (let i = k - 1; i >= 0; --i) memory.free(segs[i]);\n }\n }\n\n setFunctionTable(\n initial: Index,\n maximum: Index,\n funcs: string[]\n ): void {\n var numNames = funcs.length;\n var names = new Array(numNames);\n for (let i = 0; i < numNames; ++i) {\n names[i] = this.allocStringCached(funcs[i]);\n }\n var cArr = allocI32Array(names);\n try {\n _BinaryenSetFunctionTable(this.ref, initial, maximum, cArr, numNames);\n } finally {\n memory.free(cArr);\n }\n }\n\n setStart(func: FunctionRef): void {\n _BinaryenSetStart(this.ref, func);\n }\n\n getOptimizeLevel(): i32 {\n return _BinaryenGetOptimizeLevel();\n }\n\n setOptimizeLevel(level: i32 = 2): void {\n _BinaryenSetOptimizeLevel(level);\n }\n\n getShrinkLevel(): i32 {\n return _BinaryenGetShrinkLevel();\n }\n\n setShrinkLevel(level: i32 = 1): void {\n _BinaryenSetShrinkLevel(level);\n }\n\n setDebugInfo(on: bool = false): void {\n _BinaryenSetDebugInfo(on);\n }\n\n getFeatures(): BinaryenFeatureFlags {\n return _BinaryenModuleGetFeatures(this.ref);\n }\n\n setFeatures(featureFlags: BinaryenFeatureFlags): void {\n _BinaryenModuleSetFeatures(this.ref, featureFlags);\n }\n\n optimize(func: FunctionRef = 0): void {\n if (func) {\n _BinaryenFunctionOptimize(func, this.ref);\n } else {\n _BinaryenModuleOptimize(this.ref);\n }\n }\n\n runPasses(passes: string[], func: FunctionRef = 0): void {\n var numNames = passes.length;\n var names = new Array(numNames);\n for (let i = 0; i < numNames; ++i) {\n names[i] = allocString(passes[i]);\n }\n var cArr = allocI32Array(names);\n try {\n if (func) {\n _BinaryenFunctionRunPasses(func, this.ref, cArr, numNames);\n } else {\n _BinaryenModuleRunPasses(this.ref, cArr, numNames);\n }\n } finally {\n memory.free(cArr);\n for (let i = numNames; i >= 0; --i) memory.free(names[i]);\n }\n }\n\n private cachedPrecomputeNames: usize = 0;\n\n precomputeExpression(expr: ExpressionRef): ExpressionRef {\n // remember the previous optimize levels and set to max instead, to be sure\n var previousOptimizeLevel = _BinaryenGetOptimizeLevel();\n var previousShrinkLevel = _BinaryenGetShrinkLevel();\n var previousDebugInfo = _BinaryenGetDebugInfo();\n _BinaryenSetOptimizeLevel(4);\n _BinaryenSetShrinkLevel(0);\n _BinaryenSetDebugInfo(false);\n\n // wrap the expression in a temp. function and run the precompute pass on it\n var type = _BinaryenExpressionGetType(expr);\n var func = this.addTemporaryFunction(type, null, expr);\n var names = this.cachedPrecomputeNames;\n if (!names) {\n this.cachedPrecomputeNames = names = allocI32Array([\n this.allocStringCached(\"vacuum\"),\n this.allocStringCached(\"precompute\")\n ]);\n }\n _BinaryenFunctionRunPasses(func, this.ref, names, 2);\n expr = _BinaryenFunctionGetBody(func);\n if (_BinaryenExpressionGetId(expr) == ExpressionId.Return) {\n expr = _BinaryenReturnGetValue(expr);\n }\n this.removeTemporaryFunction();\n\n // reset optimize levels to previous\n _BinaryenSetOptimizeLevel(previousOptimizeLevel);\n _BinaryenSetShrinkLevel(previousShrinkLevel);\n _BinaryenSetDebugInfo(previousDebugInfo);\n return expr;\n }\n\n validate(): bool {\n return _BinaryenModuleValidate(this.ref) == 1;\n }\n\n interpret(): void {\n _BinaryenModuleInterpret(this.ref);\n }\n\n toBinary(sourceMapUrl: string | null): BinaryModule {\n var out = this.lit; // safe to reuse as long as..\n assert(_BinaryenSizeofLiteral() >= 12);\n var cStr = allocString(sourceMapUrl);\n var binaryPtr: usize = 0;\n var sourceMapPtr: usize = 0;\n try {\n _BinaryenModuleAllocateAndWrite(out, this.ref, cStr);\n binaryPtr = readInt(out);\n let binaryBytes = readInt(out + 4);\n sourceMapPtr = readInt(out + 4 * 2);\n let ret = new BinaryModule();\n ret.output = readBuffer(binaryPtr, binaryBytes);\n ret.sourceMap = readString(sourceMapPtr);\n return ret;\n } finally {\n if (cStr) memory.free(cStr);\n if (binaryPtr) memory.free(binaryPtr);\n if (sourceMapPtr) memory.free(sourceMapPtr);\n }\n }\n\n toText(): string {\n throw new Error(\"not implemented\"); // JS glue overrides this\n }\n\n toAsmjs(): string {\n throw new Error(\"not implemented\"); // JS glue overrides this\n }\n\n private cachedStrings: Map = new Map();\n\n private allocStringCached(str: string | null): usize {\n if (str == null) return 0;\n var cachedStrings = this.cachedStrings;\n if (cachedStrings.has(str)) return cachedStrings.get(str);\n var ptr = allocString(str);\n cachedStrings.set(str, ptr);\n return ptr;\n }\n\n dispose(): void {\n assert(this.ref);\n for (let ptr of this.cachedStrings.values()) memory.free(ptr);\n this.cachedStrings = new Map();\n memory.free(this.lit);\n memory.free(this.cachedPrecomputeNames);\n this.cachedPrecomputeNames = 0;\n _BinaryenModuleDispose(this.ref);\n this.ref = 0;\n }\n\n createRelooper(): Relooper {\n return Relooper.create(this);\n }\n\n cloneExpression(\n expr: ExpressionRef,\n noSideEffects: bool = false,\n maxDepth: i32 = i32.MAX_VALUE\n ): ExpressionRef { // currently supports side effect free expressions only\n if (maxDepth < 0) return 0;\n maxDepth -= 1;\n\n var nested1: ExpressionRef,\n nested2: ExpressionRef;\n\n switch (_BinaryenExpressionGetId(expr)) {\n case ExpressionId.Const: {\n switch (_BinaryenExpressionGetType(expr)) {\n case NativeType.I32: {\n return this.i32(_BinaryenConstGetValueI32(expr));\n }\n case NativeType.I64: {\n return this.i64(\n _BinaryenConstGetValueI64Low(expr),\n _BinaryenConstGetValueI64High(expr)\n );\n }\n case NativeType.F32: {\n return this.f32(_BinaryenConstGetValueF32(expr));\n }\n case NativeType.F64: {\n return this.f64(_BinaryenConstGetValueF64(expr));\n }\n case NativeType.V128: {\n // TODO\n return 0;\n }\n default: {\n throw new Error(\"concrete type expected\");\n }\n }\n }\n case ExpressionId.LocalGet: {\n return _BinaryenLocalGet(this.ref,\n _BinaryenLocalGetGetIndex(expr),\n _BinaryenExpressionGetType(expr)\n );\n }\n case ExpressionId.GlobalGet: {\n let globalName = _BinaryenGlobalGetGetName(expr);\n if (!globalName) break;\n return _BinaryenGlobalGet(this.ref, globalName, _BinaryenExpressionGetType(expr));\n }\n case ExpressionId.Load: {\n if (!(nested1 = this.cloneExpression(_BinaryenLoadGetPtr(expr), noSideEffects, maxDepth))) {\n break;\n }\n return (\n _BinaryenLoadIsAtomic(expr)\n ? _BinaryenAtomicLoad(this.ref,\n _BinaryenLoadGetBytes(expr),\n _BinaryenLoadGetOffset(expr),\n _BinaryenExpressionGetType(expr),\n nested1\n )\n : _BinaryenLoad(this.ref,\n _BinaryenLoadGetBytes(expr),\n _BinaryenLoadIsSigned(expr) ? 1 : 0,\n _BinaryenLoadGetOffset(expr),\n _BinaryenLoadGetAlign(expr),\n _BinaryenExpressionGetType(expr),\n nested1\n )\n );\n }\n case ExpressionId.Unary: {\n if (!(nested1 = this.cloneExpression(_BinaryenUnaryGetValue(expr), noSideEffects, maxDepth))) {\n break;\n }\n return _BinaryenUnary(this.ref, _BinaryenUnaryGetOp(expr), nested1);\n }\n case ExpressionId.Binary: {\n if (!(nested1 = this.cloneExpression(_BinaryenBinaryGetLeft(expr), noSideEffects, maxDepth))) {\n break;\n }\n if (!(nested2 = this.cloneExpression(_BinaryenBinaryGetRight(expr), noSideEffects, maxDepth))) {\n break;\n }\n return _BinaryenBinary(this.ref, _BinaryenBinaryGetOp(expr), nested1, nested2);\n }\n }\n return 0;\n }\n\n // source map generation\n\n addDebugInfoFile(name: string): Index {\n var cStr = allocString(name);\n try {\n return _BinaryenModuleAddDebugInfoFileName(this.ref, cStr);\n } finally {\n memory.free(cStr);\n }\n }\n\n getDebugInfoFile(index: Index): string | null {\n return readString(_BinaryenModuleGetDebugInfoFileName(this.ref, index));\n }\n\n setDebugLocation(\n func: FunctionRef,\n expr: ExpressionRef,\n fileIndex: Index,\n lineNumber: Index,\n columnNumber: Index\n ): void {\n _BinaryenFunctionSetDebugLocation(func, expr, fileIndex, lineNumber, columnNumber);\n }\n}\n\n// expressions\n\nexport function getExpressionId(expr: ExpressionRef): ExpressionId {\n return _BinaryenExpressionGetId(expr);\n}\n\nexport function getExpressionType(expr: ExpressionRef): NativeType {\n return _BinaryenExpressionGetType(expr);\n}\n\nexport function getConstValueI32(expr: ExpressionRef): i32 {\n return _BinaryenConstGetValueI32(expr);\n}\n\nexport function getConstValueI64Low(expr: ExpressionRef): i32 {\n return _BinaryenConstGetValueI64Low(expr);\n}\n\nexport function getConstValueI64High(expr: ExpressionRef): i32 {\n return _BinaryenConstGetValueI64High(expr);\n}\n\nexport function getConstValueF32(expr: ExpressionRef): f32 {\n return _BinaryenConstGetValueF32(expr);\n}\n\nexport function getConstValueF64(expr: ExpressionRef): f32 {\n return _BinaryenConstGetValueF64(expr);\n}\n\nexport function getLocalGetIndex(expr: ExpressionRef): Index {\n return _BinaryenLocalGetGetIndex(expr);\n}\n\nexport function getLocalSetIndex(expr: ExpressionRef): Index {\n return _BinaryenLocalSetGetIndex(expr);\n}\n\nexport function getLocalSetValue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenLocalSetGetValue(expr);\n}\n\nexport function isLocalTee(expr: ExpressionRef): bool {\n return _BinaryenLocalSetIsTee(expr);\n}\n\nexport function getGlobalGetName(expr: ExpressionRef): string | null {\n return readString(_BinaryenGlobalGetGetName(expr));\n}\n\nexport function getBinaryOp(expr: ExpressionRef): BinaryOp {\n return _BinaryenBinaryGetOp(expr);\n}\n\nexport function getBinaryLeft(expr: ExpressionRef): ExpressionRef {\n return _BinaryenBinaryGetLeft(expr);\n}\n\nexport function getBinaryRight(expr: ExpressionRef): ExpressionRef {\n return _BinaryenBinaryGetRight(expr);\n}\n\nexport function getUnaryOp(expr: ExpressionRef): UnaryOp {\n return _BinaryenUnaryGetOp(expr);\n}\n\nexport function getUnaryValue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenUnaryGetValue(expr);\n}\n\nexport function getLoadBytes(expr: ExpressionRef): u32 {\n return _BinaryenLoadGetBytes(expr);\n}\n\nexport function getLoadOffset(expr: ExpressionRef): u32 {\n return _BinaryenLoadGetOffset(expr);\n}\n\nexport function getLoadPtr(expr: ExpressionRef): ExpressionRef {\n return _BinaryenLoadGetPtr(expr);\n}\n\nexport function isLoadSigned(expr: ExpressionRef): bool {\n return _BinaryenLoadIsSigned(expr);\n}\n\nexport function getStoreBytes(expr: ExpressionRef): u32 {\n return _BinaryenStoreGetBytes(expr);\n}\n\nexport function getStoreOffset(expr: ExpressionRef): u32 {\n return _BinaryenStoreGetOffset(expr);\n}\n\nexport function getStorePtr(expr: ExpressionRef): ExpressionRef {\n return _BinaryenStoreGetPtr(expr);\n}\n\nexport function getStoreValue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenStoreGetValue(expr);\n}\n\nexport function getBlockName(expr: ExpressionRef): string | null {\n return readString(_BinaryenBlockGetName(expr));\n}\n\nexport function getBlockChildCount(expr: ExpressionRef): Index {\n return _BinaryenBlockGetNumChildren(expr);\n}\n\nexport function getBlockChild(expr: ExpressionRef, index: Index): ExpressionRef {\n return _BinaryenBlockGetChild(expr, index);\n}\n\nexport function getIfCondition(expr: ExpressionRef): ExpressionRef {\n return _BinaryenIfGetCondition(expr);\n}\n\nexport function getIfTrue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenIfGetIfTrue(expr);\n}\n\nexport function getIfFalse(expr: ExpressionRef): ExpressionRef {\n return _BinaryenIfGetIfFalse(expr);\n}\n\nexport function getLoopName(expr: ExpressionRef): string | null {\n return readString(_BinaryenLoopGetName(expr));\n}\n\nexport function getLoopBody(expr: ExpressionRef): ExpressionRef {\n return _BinaryenLoopGetBody(expr);\n}\n\nexport function getBreakName(expr: ExpressionRef): string | null {\n return readString(_BinaryenBreakGetName(expr));\n}\n\nexport function getBreakCondition(expr: ExpressionRef): ExpressionRef {\n return _BinaryenBreakGetCondition(expr);\n}\n\nexport function getSelectThen(expr: ExpressionRef): ExpressionRef {\n return _BinaryenSelectGetIfTrue(expr);\n}\n\nexport function getSelectElse(expr: ExpressionRef): ExpressionRef {\n return _BinaryenSelectGetIfFalse(expr);\n}\n\nexport function getSelectCondition(expr: ExpressionRef): ExpressionRef {\n return _BinaryenSelectGetCondition(expr);\n}\n\nexport function getDropValue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenDropGetValue(expr);\n}\n\nexport function getReturnValue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenReturnGetValue(expr);\n}\n\nexport function getCallTarget(expr: ExpressionRef): string | null {\n return readString(_BinaryenCallGetTarget(expr));\n}\n\nexport function getCallOperandCount(expr: ExpressionRef): i32 {\n return _BinaryenCallGetNumOperands(expr);\n}\n\nexport function getCallOperand(expr: ExpressionRef, index: Index): ExpressionRef {\n return _BinaryenCallGetOperand(expr, index);\n}\n\nexport function getHostOp(expr: ExpressionRef): ExpressionRef {\n return _BinaryenHostGetOp(expr);\n}\n\nexport function getHostOperandCount(expr: ExpressionRef): Index {\n return _BinaryenHostGetNumOperands(expr);\n}\n\nexport function getHostOperand(expr: ExpressionRef, index: Index): ExpressionRef {\n return _BinaryenHostGetOperand(expr, index);\n}\n\nexport function getHostName(expr: ExpressionRef): string | null {\n return readString(_BinaryenHostGetNameOperand(expr));\n}\n\n// functions\n\nexport function getFunctionBody(func: FunctionRef): ExpressionRef {\n return _BinaryenFunctionGetBody(func);\n}\n\nexport function getFunctionName(func: FunctionRef): string | null {\n return readString(_BinaryenFunctionGetName(func));\n}\n\nexport function getFunctionParamCount(func: FunctionRef): Index {\n return _BinaryenFunctionGetNumParams(func);\n}\n\nexport function getFunctionParamType(func: FunctionRef, index: Index): NativeType {\n return _BinaryenFunctionGetParam(func, index);\n}\n\nexport function getFunctionResultType(func: FunctionRef): NativeType {\n return _BinaryenFunctionGetResult(func);\n}\n\nexport class Relooper {\n\n module: Module;\n ref: RelooperRef;\n\n static create(module: Module): Relooper {\n var relooper = new Relooper();\n relooper.module = module;\n relooper.ref = _RelooperCreate(module.ref);\n return relooper;\n }\n\n private constructor() {}\n\n addBlock(code: ExpressionRef): RelooperBlockRef {\n return _RelooperAddBlock(this.ref, code);\n }\n\n addBranch(\n from: RelooperBlockRef,\n to: RelooperBlockRef,\n condition: ExpressionRef = 0,\n code: ExpressionRef = 0\n ): void {\n _RelooperAddBranch(from, to, condition, code);\n }\n\n addBlockWithSwitch(code: ExpressionRef, condition: ExpressionRef): RelooperBlockRef {\n return _RelooperAddBlockWithSwitch(this.ref, code, condition);\n }\n\n addBranchForSwitch(\n from: RelooperBlockRef,\n to: RelooperBlockRef,\n indexes: i32[],\n code: ExpressionRef = 0\n ): void {\n var cArr = allocI32Array(indexes);\n try {\n _RelooperAddBranchForSwitch(from, to, cArr, indexes.length, code);\n } finally {\n memory.free(cArr);\n }\n }\n\n renderAndDispose(entry: RelooperBlockRef, labelHelper: Index): ExpressionRef {\n return _RelooperRenderAndDispose(this.ref, entry, labelHelper);\n }\n}\n\n// export function hasSideEffects(expr: ExpressionRef): bool {\n// // TODO: there's more\n// switch (_BinaryenExpressionGetId(expr)) {\n// case ExpressionId.LocalGet:\n// case ExpressionId.GlobalGet:\n// case ExpressionId.Const:\n// case ExpressionId.Nop: {\n// return false;\n// }\n// case ExpressionId.Block: {\n// for (let i = 0, k = _BinaryenBlockGetNumChildren(expr); i < k; ++i) {\n// if (hasSideEffects(_BinaryenBlockGetChild(expr, i))) return true;\n// }\n// return false;\n// }\n// case ExpressionId.If: {\n// return hasSideEffects(_BinaryenIfGetCondition(expr))\n// || hasSideEffects(_BinaryenIfGetIfTrue(expr))\n// || hasSideEffects(_BinaryenIfGetIfFalse(expr));\n// }\n// case ExpressionId.Unary: {\n// return hasSideEffects(_BinaryenUnaryGetValue(expr));\n// }\n// case ExpressionId.Binary: {\n// return hasSideEffects(_BinaryenBinaryGetLeft(expr))\n// || hasSideEffects(_BinaryenBinaryGetRight(expr));\n// }\n// case ExpressionId.Drop: {\n// return hasSideEffects(_BinaryenDropGetValue(expr));\n// }\n// case ExpressionId.Select: {\n// return hasSideEffects(_BinaryenSelectGetIfTrue(expr))\n// || hasSideEffects(_BinaryenSelectGetIfFalse(expr))\n// || hasSideEffects(_BinaryenSelectGetCondition(expr));\n// }\n// }\n// return true;\n// }\n\n// helpers\n// can't do stack allocation here: STACKTOP is a global in WASM but a hidden variable in asm.js\n\nfunction allocU8Array(u8s: Uint8Array | null): usize {\n if (!u8s) return 0;\n var numValues = u8s.length;\n var ptr = memory.allocate(numValues);\n var idx = ptr;\n for (let i = 0; i < numValues; ++i) {\n store(idx++, u8s[i]);\n }\n return ptr;\n}\n\nfunction allocI32Array(i32s: i32[] | null): usize {\n if (!i32s) return 0;\n var ptr = memory.allocate(i32s.length << 2);\n var idx = ptr;\n for (let i = 0, k = i32s.length; i < k; ++i) {\n let val = i32s[i];\n // store(idx, val) is not portable\n store(idx , ( val & 0xff) as u8);\n store(idx + 1, ((val >> 8) & 0xff) as u8);\n store(idx + 2, ((val >> 16) & 0xff) as u8);\n store(idx + 3, ( val >>> 24 ) as u8);\n idx += 4;\n }\n return ptr;\n}\n\nfunction allocPtrArray(ptrs: usize[] | null): usize {\n return allocI32Array(ptrs); // TODO: WASM64 one day\n}\n\nfunction stringLengthUTF8(str: string): usize {\n var len = 0;\n for (let i = 0, k = str.length; i < k; ++i) {\n let u = str.charCodeAt(i);\n if (u >= 0xD800 && u <= 0xDFFF && i + 1 < k) {\n u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);\n }\n if (u <= 0x7F) {\n ++len;\n } else if (u <= 0x7FF) {\n len += 2;\n } else if (u <= 0xFFFF) {\n len += 3;\n } else if (u <= 0x1FFFFF) {\n len += 4;\n } else if (u <= 0x3FFFFFF) {\n len += 5;\n } else {\n len += 6;\n }\n }\n return len;\n}\n\nfunction allocString(str: string | null): usize {\n if (str == null) return 0;\n var ptr = memory.allocate(stringLengthUTF8(str) + 1);\n // the following is based on Emscripten's stringToUTF8Array\n var idx = ptr;\n for (let i = 0, k = str.length; i < k; ++i) {\n let u = str.charCodeAt(i);\n if (u >= 0xD800 && u <= 0xDFFF && i + 1 < k) {\n u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);\n }\n if (u <= 0x7F) {\n store(idx++, u as u8);\n } else if (u <= 0x7FF) {\n store(idx++, (0xC0 | (u >>> 6) ) as u8);\n store(idx++, (0x80 | ( u & 63)) as u8);\n } else if (u <= 0xFFFF) {\n store(idx++, (0xE0 | (u >>> 12) ) as u8);\n store(idx++, (0x80 | ((u >>> 6) & 63)) as u8);\n store(idx++, (0x80 | ( u & 63)) as u8);\n } else if (u <= 0x1FFFFF) {\n store(idx++, (0xF0 | (u >>> 18) ) as u8);\n store(idx++, (0x80 | ((u >>> 12) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 6) & 63)) as u8);\n store(idx++, (0x80 | ( u & 63)) as u8);\n } else if (u <= 0x3FFFFFF) {\n store(idx++, (0xF8 | (u >>> 24) ) as u8);\n store(idx++, (0x80 | ((u >>> 18) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 12) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 6) & 63)) as u8);\n store(idx++, (0x80 | ( u & 63)) as u8);\n } else {\n store(idx++, (0xFC | (u >>> 30) ) as u8);\n store(idx++, (0x80 | ((u >>> 24) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 18) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 12) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 6) & 63)) as u8);\n store(idx++, (0x80 | ( u & 63)) as u8);\n }\n }\n store(idx, 0);\n return ptr;\n}\n\nfunction readInt(ptr: usize): i32 {\n return (\n load(ptr ) |\n (load(ptr + 1) << 8) |\n (load(ptr + 2) << 16) |\n (load(ptr + 3) << 24)\n );\n}\n\nfunction readBuffer(ptr: usize, length: usize): Uint8Array {\n var ret = new Uint8Array(length);\n for (let i: usize = 0; i < length; ++i) {\n ret[i] = load(ptr + i);\n }\n return ret;\n}\n\nexport function readString(ptr: usize): string | null {\n if (!ptr) return null;\n var arr = new Array();\n // the following is based on Emscripten's UTF8ArrayToString\n var cp: u32;\n var u1: u32, u2: u32, u3: u32, u4: u32, u5: u32;\n while (cp = load(ptr++)) {\n if (!(cp & 0x80)) {\n arr.push(cp);\n continue;\n }\n u1 = load(ptr++) & 63;\n if ((cp & 0xE0) == 0xC0) {\n arr.push(((cp & 31) << 6) | u1);\n continue;\n }\n u2 = load(ptr++) & 63;\n if ((cp & 0xF0) == 0xE0) {\n cp = ((cp & 15) << 12) | (u1 << 6) | u2;\n } else {\n u3 = load(ptr++) & 63;\n if ((cp & 0xF8) == 0xF0) {\n cp = ((cp & 7) << 18) | (u1 << 12) | (u2 << 6) | u3;\n } else {\n u4 = load(ptr++) & 63;\n if ((cp & 0xFC) == 0xF8) {\n cp = ((cp & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4;\n } else {\n u5 = load(ptr++) & 63;\n cp = ((cp & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5;\n }\n }\n }\n arr.push(cp);\n // if (cp < 0x10000) {\n // arr.push(cp);\n // } else {\n // var ch = cp - 0x10000;\n // arr.push(0xD800 | (ch >> 10));\n // arr.push(0xDC00 | (ch & 0x3FF));\n // }\n }\n // return String.fromCharCodes(arr);\n return String.fromCodePoints(arr);\n}\n\n/** Result structure of {@link Module#toBinary}. */\nexport class BinaryModule {\n /** WebAssembly binary. */\n output: Uint8Array;\n /** Source map, if generated. */\n sourceMap: string | null;\n}\n\n/** Tests if an expression needs an explicit 'unreachable' when it is the terminating statement. */\nexport function needsExplicitUnreachable(expr: ExpressionRef): bool {\n // not applicable if pushing a value to the stack\n if (_BinaryenExpressionGetType(expr) != NativeType.Unreachable) return false;\n\n switch (_BinaryenExpressionGetId(expr)) {\n case ExpressionId.Unreachable:\n case ExpressionId.Return: return false;\n case ExpressionId.Break: return _BinaryenBreakGetCondition(expr) != 0;\n case ExpressionId.Block: {\n if (!_BinaryenBlockGetName(expr)) { // can't break out of it\n let numChildren = _BinaryenBlockGetNumChildren(expr); // last child needs unreachable\n return numChildren > 0 && needsExplicitUnreachable(_BinaryenBlockGetChild(expr, numChildren - 1));\n }\n }\n }\n return true;\n}\n\n/** Traverses all expression members of an expression, calling the given visitor. */\nexport function traverse(expr: ExpressionRef, data: T, visit: (expr: ExpressionRef, data: T) => void): bool {\n switch (getExpressionId(expr)) {\n case ExpressionId.Block: {\n for (let i = 0, n = _BinaryenBlockGetNumChildren(expr); i < n; ++i) {\n visit(_BinaryenBlockGetChild(expr, i), data);\n }\n break;\n }\n case ExpressionId.If: {\n visit(_BinaryenIfGetCondition(expr), data);\n visit(_BinaryenIfGetIfTrue(expr), data);\n let ifFalse = _BinaryenIfGetIfFalse(expr);\n if (ifFalse) visit(ifFalse, data);\n break;\n }\n case ExpressionId.Loop: {\n visit(_BinaryenLoopGetBody(expr), data);\n break;\n }\n case ExpressionId.Break: {\n let condition = _BinaryenBreakGetCondition(expr);\n if (condition) visit(condition, data);\n break;\n }\n case ExpressionId.Switch: {\n visit(_BinaryenSwitchGetCondition(expr), data);\n break;\n }\n case ExpressionId.Call: {\n for (let i = 0, n = _BinaryenCallGetNumOperands(expr); i < n; ++i) {\n visit(_BinaryenCallGetOperand(expr, i), data);\n }\n break;\n }\n case ExpressionId.CallIndirect: {\n for (let i = 0, n = _BinaryenCallIndirectGetNumOperands(expr); i < n; ++i) {\n visit(_BinaryenCallIndirectGetOperand(expr, i), data);\n }\n break;\n }\n case ExpressionId.LocalGet: {\n break;\n }\n case ExpressionId.LocalSet: {\n visit(_BinaryenLocalSetGetValue(expr), data);\n break;\n }\n case ExpressionId.GlobalGet: {\n break;\n }\n case ExpressionId.GlobalSet: {\n visit(_BinaryenGlobalSetGetValue(expr), data);\n break;\n }\n case ExpressionId.Load: {\n visit(_BinaryenLoadGetPtr(expr), data);\n break;\n }\n case ExpressionId.Store: {\n visit(_BinaryenStoreGetPtr(expr), data);\n visit(_BinaryenStoreGetValue(expr), data);\n break;\n }\n case ExpressionId.AtomicRMW: {\n visit(_BinaryenAtomicRMWGetPtr(expr), data);\n visit(_BinaryenAtomicRMWGetValue(expr), data);\n break;\n }\n case ExpressionId.AtomicCmpxchg: {\n visit(_BinaryenAtomicCmpxchgGetPtr(expr), data);\n visit(_BinaryenAtomicCmpxchgGetExpected(expr), data);\n visit(_BinaryenAtomicCmpxchgGetReplacement(expr), data);\n break;\n }\n case ExpressionId.AtomicWait: {\n visit(_BinaryenAtomicWaitGetPtr(expr), data);\n visit(_BinaryenAtomicWaitGetExpected(expr), data);\n visit(_BinaryenAtomicWaitGetTimeout(expr), data);\n break;\n }\n case ExpressionId.AtomicNotify: {\n visit(_BinaryenAtomicNotifyGetPtr(expr), data);\n break;\n }\n case ExpressionId.SIMDExtract: {\n visit(_BinaryenSIMDExtractGetVec(expr), data);\n break;\n }\n case ExpressionId.SIMDReplace: {\n visit(_BinaryenSIMDReplaceGetVec(expr), data);\n visit(_BinaryenSIMDReplaceGetValue(expr), data);\n break;\n }\n case ExpressionId.SIMDShuffle: {\n visit(_BinaryenSIMDShuffleGetLeft(expr), data);\n visit(_BinaryenSIMDShuffleGetRight(expr), data);\n break;\n }\n case ExpressionId.SIMDBitselect: {\n visit(_BinaryenSIMDBitselectGetLeft(expr), data);\n visit(_BinaryenSIMDBitselectGetRight(expr), data);\n visit(_BinaryenSIMDBitselectGetCond(expr), data);\n break;\n }\n case ExpressionId.SIMDShift: {\n visit(_BinaryenSIMDShiftGetVec(expr), data);\n visit(_BinaryenSIMDShiftGetShift(expr), data);\n break;\n }\n case ExpressionId.MemoryInit: {\n visit(_BinaryenMemoryInitGetDest(expr), data);\n visit(_BinaryenMemoryInitGetOffset(expr), data);\n visit(_BinaryenMemoryInitGetSize(expr), data);\n break;\n }\n case ExpressionId.DataDrop: {\n break;\n }\n case ExpressionId.MemoryCopy: {\n visit(_BinaryenMemoryCopyGetDest(expr), data);\n visit(_BinaryenMemoryCopyGetSource(expr), data);\n visit(_BinaryenMemoryCopyGetSize(expr), data);\n break;\n }\n case ExpressionId.MemoryFill: {\n visit(_BinaryenMemoryFillGetDest(expr), data);\n visit(_BinaryenMemoryFillGetValue(expr), data);\n visit(_BinaryenMemoryFillGetSize(expr), data);\n break;\n }\n case ExpressionId.Const: {\n break;\n }\n case ExpressionId.Unary: {\n visit(_BinaryenUnaryGetValue(expr), data);\n break;\n }\n case ExpressionId.Binary: {\n visit(_BinaryenBinaryGetLeft(expr), data);\n visit(_BinaryenBinaryGetRight(expr), data);\n break;\n }\n case ExpressionId.Select: {\n visit(_BinaryenSelectGetIfTrue(expr), data);\n visit(_BinaryenSelectGetIfFalse(expr), data);\n visit(_BinaryenSelectGetCondition(expr), data);\n break;\n }\n case ExpressionId.Drop: {\n visit(_BinaryenDropGetValue(expr), data);\n break;\n }\n case ExpressionId.Return: {\n visit(_BinaryenReturnGetValue(expr), data);\n break;\n }\n case ExpressionId.Host: {\n for (let i = 0, n = _BinaryenHostGetNumOperands(expr); i < n; ++i) {\n visit(_BinaryenHostGetOperand(expr, i), data);\n }\n break;\n }\n case ExpressionId.Nop: {\n break;\n }\n case ExpressionId.Unreachable: {\n break;\n }\n default: assert(false);\n }\n return true;\n}\n","/**\n * Mappings from AssemblyScript types to WebAssembly types.\n * @module types\n *//***/\n\nimport {\n Class,\n FunctionTarget,\n Program,\n DecoratorFlags\n} from \"./program\";\n\nimport {\n NativeType,\n ExpressionRef,\n Module\n} from \"./module\";\n\n/** Indicates the kind of a type. */\nexport const enum TypeKind {\n\n // signed integers\n\n /** An 8-bit signed integer. */\n I8,\n /** A 16-bit signed integer. */\n I16,\n /** A 32-bit signed integer. */\n I32,\n /** A 64-bit signed integer. */\n I64,\n /** A 32-bit/64-bit signed integer, depending on the target. */\n ISIZE,\n\n // unsigned integers\n\n /** An 8-bit unsigned integer. */\n U8,\n /** A 16-bit unsigned integer. */\n U16,\n /** A 32-bit unsigned integer. Also the base of function types. */\n U32,\n /** A 64-bit unsigned integer. */\n U64,\n /** A 32-bit/64-bit unsigned integer, depending on the target. Also the base of class types. */\n USIZE,\n /** A 1-bit unsigned integer. */\n BOOL, // sic\n\n // floats\n\n /** A 32-bit float. */\n F32,\n /** A 64-bit double. */\n F64,\n\n // vectors\n\n /** A 128-bit vector. */\n V128,\n\n // other\n\n /** No return type. */\n VOID\n}\n\n/** Indicates capabilities of a type. */\nexport const enum TypeFlags {\n NONE = 0,\n /** Is a signed type that can represent negative values. */\n SIGNED = 1 << 0,\n /** Is an unsigned type that cannot represent negative values. */\n UNSIGNED = 1 << 1,\n /** Is an integer type. */\n INTEGER = 1 << 2,\n /** Is a floating point type. */\n FLOAT = 1 << 3,\n /** Is a pointer type. */\n POINTER = 1 << 4,\n /** Is smaller than 32-bits. */\n SHORT = 1 << 5,\n /** Is larger than 32-bits. */\n LONG = 1 << 6,\n /** Is a value type. */\n VALUE = 1 << 7,\n /** Is a reference type. */\n REFERENCE = 1 << 8,\n /** Is a nullable type. */\n NULLABLE = 1 << 9,\n /** Is a vector type. */\n VECTOR = 1 << 10\n}\n\nconst v128_zero = new Uint8Array(16);\n\n/** Represents a resolved type. */\nexport class Type {\n\n /** Type kind. */\n kind: TypeKind;\n /** Type flags. */\n flags: TypeFlags;\n /** Size in bits. */\n size: u32;\n /** Size in bytes. */\n byteSize: i32;\n /** Underlying class reference, if a class type. */\n classReference: Class | null;\n /** Underlying signature reference, if a function type. */\n signatureReference: Signature | null;\n /** Respective non-nullable type, if nullable. */\n nonNullableType: Type;\n /** Cached nullable type, if non-nullable. */\n private cachedNullableType: Type | null = null;\n\n /** Constructs a new resolved type. */\n constructor(kind: TypeKind, flags: TypeFlags, size: u32) {\n this.kind = kind;\n this.flags = flags;\n this.size = size;\n this.byteSize = ceil(size / 8);\n this.classReference = null;\n this.signatureReference = null;\n this.nonNullableType = this;\n }\n\n /** Returns the closest int type representing this type. */\n get intType(): Type {\n switch (this.kind) {\n case TypeKind.I8: return Type.i8;\n case TypeKind.I16: return Type.i16;\n case TypeKind.F32:\n case TypeKind.I32: return Type.i32;\n case TypeKind.F64:\n case TypeKind.I64: return Type.i64;\n case TypeKind.ISIZE: return this.size == 64 ? Type.isize64 : Type.isize32;\n case TypeKind.U8: return Type.u8;\n case TypeKind.U16: return Type.u16;\n case TypeKind.U32: return Type.u32;\n case TypeKind.U64: return Type.u64;\n case TypeKind.USIZE: return this.size == 64 ? Type.usize64 : Type.usize32;\n case TypeKind.BOOL:\n default: return Type.i32;\n }\n }\n\n /** Substitutes this type with the auto type if this type is void. */\n get exceptVoid(): Type {\n if (this.kind == TypeKind.VOID) return Type.auto;\n return this;\n }\n\n /** Gets this type's logarithmic alignment in memory. */\n get alignLog2(): i32 {\n return 31 - clz(this.byteSize);\n }\n\n /** Tests if this is a managed type that needs GC hooks. */\n get isManaged(): bool {\n var classReference = this.classReference;\n return classReference !== null && !classReference.hasDecorator(DecoratorFlags.UNMANAGED);\n }\n\n /** Tests if this is a class type explicitly annotated as unmanaged. */\n get isUnmanaged(): bool {\n var classReference = this.classReference;\n return classReference !== null && classReference.hasDecorator(DecoratorFlags.UNMANAGED);\n }\n\n /** Computes the sign-extending shift in the target type. */\n computeSmallIntegerShift(targetType: Type): u32 {\n return targetType.size - this.size;\n }\n\n /** Computes the truncating mask in the target type. */\n computeSmallIntegerMask(targetType: Type): u32 {\n var size = this.is(TypeFlags.UNSIGNED) ? this.size : this.size - 1;\n return ~0 >>> (targetType.size - size);\n }\n\n /** Tests if this type has (all of) the specified flags. */\n is(flags: TypeFlags): bool { return (this.flags & flags) == flags; }\n /** Tests if this type has any of the specified flags. */\n isAny(flags: TypeFlags): bool { return (this.flags & flags) != 0; }\n\n /** Composes a class type from this type and a class. */\n asClass(classType: Class): Type {\n assert(this.kind == TypeKind.USIZE && !this.classReference);\n var ret = new Type(this.kind, this.flags & ~TypeFlags.VALUE | TypeFlags.REFERENCE, this.size);\n ret.classReference = classType;\n return ret;\n }\n\n /** Composes a function type from this type and a function. */\n asFunction(signature: Signature): Type {\n assert(this.kind == TypeKind.U32 && !this.signatureReference);\n var ret = new Type(this.kind, this.flags & ~TypeFlags.VALUE | TypeFlags.REFERENCE, this.size);\n ret.signatureReference = signature;\n return ret;\n }\n\n /** Composes the respective nullable type of this type. */\n asNullable(): Type {\n assert(this.is(TypeFlags.REFERENCE));\n if (!this.cachedNullableType) {\n assert(!this.is(TypeFlags.NULLABLE));\n this.cachedNullableType = new Type(this.kind, this.flags | TypeFlags.NULLABLE, this.size);\n this.cachedNullableType.nonNullableType = this;\n this.cachedNullableType.classReference = this.classReference; // either a class reference\n this.cachedNullableType.signatureReference = this.signatureReference; // or a function reference\n }\n return this.cachedNullableType;\n }\n\n /** Tests if a value of this type is assignable to the target type incl. implicit conversion. */\n isAssignableTo(target: Type, signednessIsRelevant: bool = false): bool {\n var currentClass: Class | null;\n var targetClass: Class | null;\n var currentFunction: Signature | null;\n var targetFunction: Signature | null;\n if (this.is(TypeFlags.REFERENCE)) {\n if (target.is(TypeFlags.REFERENCE)) {\n if (!this.is(TypeFlags.NULLABLE) || target.is(TypeFlags.NULLABLE)) {\n if (currentClass = this.classReference) {\n if (targetClass = target.classReference) {\n return currentClass.isAssignableTo(targetClass);\n }\n } else if (currentFunction = this.signatureReference) {\n if (targetFunction = target.signatureReference) {\n return currentFunction.isAssignableTo(targetFunction);\n }\n }\n }\n }\n } else if (!target.is(TypeFlags.REFERENCE)) {\n if (this.is(TypeFlags.INTEGER)) {\n if (target.is(TypeFlags.INTEGER)) {\n if (\n !signednessIsRelevant ||\n this == Type.bool || // a bool (0 or 1) can be safely assigned to all sorts of integers\n this.is(TypeFlags.SIGNED) == target.is(TypeFlags.SIGNED)\n ) {\n return this.size <= target.size;\n }\n } else if (target.kind == TypeKind.F32) {\n return this.size <= 23; // mantissa bits\n } else if (target.kind == TypeKind.F64) {\n return this.size <= 52; // ^\n }\n } else if (this.is(TypeFlags.FLOAT)) {\n if (target.is(TypeFlags.FLOAT)) {\n return this.size <= target.size;\n }\n } else if (this.is(TypeFlags.VECTOR)) {\n if (target.is(TypeFlags.VECTOR)) {\n return this.size == target.size;\n }\n }\n }\n return false;\n }\n\n /** Tests if a value of this type is assignable to the target type excl. implicit conversion. */\n isStrictlyAssignableTo(target: Type, signednessIsRelevant: bool = false): bool {\n if (this.is(TypeFlags.REFERENCE)) return this.isAssignableTo(target);\n else if (target.is(TypeFlags.REFERENCE)) return false;\n if (this.is(TypeFlags.INTEGER)) {\n return target.is(TypeFlags.INTEGER) && target.size == this.size && (\n !signednessIsRelevant || this.is(TypeFlags.SIGNED) == target.is(TypeFlags.SIGNED)\n );\n }\n return this.kind == target.kind;\n }\n\n /** Determines the common denominator type of two types, if there is any. */\n static commonDenominator(left: Type, right: Type, signednessIsImportant: bool): Type | null {\n if (right.isAssignableTo(left, signednessIsImportant)) return left;\n else if (left.isAssignableTo(right, signednessIsImportant)) return right;\n return null;\n }\n\n /** Converts this type to a string. */\n toString(): string {\n if (this.is(TypeFlags.REFERENCE)) {\n let classReference = this.classReference;\n if (classReference) {\n return this.is(TypeFlags.NULLABLE)\n ? classReference.internalName + \" | null\"\n : classReference.internalName;\n }\n let signatureReference = this.signatureReference;\n if (signatureReference) {\n return this.is(TypeFlags.NULLABLE)\n ? \"(\" + signatureReference.toString() + \") | null\"\n : signatureReference.toString();\n }\n assert(false);\n }\n switch (this.kind) {\n case TypeKind.I8: return \"i8\";\n case TypeKind.I16: return \"i16\";\n case TypeKind.I32: return \"i32\";\n case TypeKind.I64: return \"i64\";\n case TypeKind.ISIZE: return \"isize\";\n case TypeKind.U8: return \"u8\";\n case TypeKind.U16: return \"u16\";\n case TypeKind.U32: return \"u32\";\n case TypeKind.U64: return \"u64\";\n case TypeKind.USIZE: return \"usize\";\n case TypeKind.BOOL: return \"bool\";\n case TypeKind.F32: return \"f32\";\n case TypeKind.F64: return \"f64\";\n case TypeKind.V128: return \"v128\";\n default: assert(false);\n case TypeKind.VOID: return \"void\";\n }\n }\n\n // Binaryen specific\n\n /** Converts this type to its respective native type. */\n toNativeType(): NativeType {\n switch (this.kind) {\n default: return NativeType.I32;\n case TypeKind.I64:\n case TypeKind.U64: return NativeType.I64;\n case TypeKind.ISIZE:\n case TypeKind.USIZE: return this.size == 64 ? NativeType.I64 : NativeType.I32;\n case TypeKind.F32: return NativeType.F32;\n case TypeKind.F64: return NativeType.F64;\n case TypeKind.V128: return NativeType.V128;\n case TypeKind.VOID: return NativeType.None;\n }\n }\n\n /** Converts this type to its native `0` value. */\n toNativeZero(module: Module): ExpressionRef {\n switch (this.kind) {\n case TypeKind.VOID: assert(false);\n default: return module.i32(0);\n case TypeKind.ISIZE:\n case TypeKind.USIZE: if (this.size != 64) return module.i32(0);\n case TypeKind.I64:\n case TypeKind.U64: return module.i64(0);\n case TypeKind.F32: return module.f32(0);\n case TypeKind.F64: return module.f64(0);\n case TypeKind.V128: return module.v128(v128_zero);\n }\n }\n\n /** Converts this type to its native `1` value. */\n toNativeOne(module: Module): ExpressionRef {\n switch (this.kind) {\n case TypeKind.V128:\n case TypeKind.VOID: assert(false);\n default: return module.i32(1);\n case TypeKind.ISIZE:\n case TypeKind.USIZE: if (this.size != 64) return module.i32(1);\n case TypeKind.I64:\n case TypeKind.U64: return module.i64(1);\n case TypeKind.F32: return module.f32(1);\n case TypeKind.F64: return module.f64(1);\n }\n }\n\n /** Converts this type to its native `-1` value. */\n toNativeNegOne(module: Module): ExpressionRef {\n switch (this.kind) {\n case TypeKind.V128:\n case TypeKind.VOID: assert(false);\n default: return module.i32(-1);\n case TypeKind.ISIZE:\n case TypeKind.USIZE: if (this.size != 64) return module.i32(-1);\n case TypeKind.I64:\n case TypeKind.U64: return module.i64(-1, -1);\n case TypeKind.F32: return module.f32(-1);\n case TypeKind.F64: return module.f64(-1);\n }\n }\n\n /** Converts this type to its signature string. */\n toSignatureString(): string {\n switch (this.kind) {\n // same naming scheme as Binaryen\n case TypeKind.I8:\n case TypeKind.U8:\n case TypeKind.I16:\n case TypeKind.U16:\n case TypeKind.I32:\n case TypeKind.U32:\n case TypeKind.BOOL: return \"i\";\n case TypeKind.I64:\n case TypeKind.U64: return \"j\";\n case TypeKind.ISIZE:\n case TypeKind.USIZE: return this.size == 64 ? \"j\" : \"i\";\n case TypeKind.F32: return \"f\";\n case TypeKind.F64: return \"d\";\n case TypeKind.V128: return \"V\";\n case TypeKind.VOID: return \"v\";\n default: assert(false);\n }\n return \"i\";\n }\n\n // Types\n\n /** An 8-bit signed integer. */\n static readonly i8: Type = new Type(TypeKind.I8,\n TypeFlags.SIGNED |\n TypeFlags.SHORT |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 8\n );\n\n /** A 16-bit signed integer. */\n static readonly i16: Type = new Type(TypeKind.I16,\n TypeFlags.SIGNED |\n TypeFlags.SHORT |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 16\n );\n\n /** A 32-bit signed integer. */\n static readonly i32: Type = new Type(TypeKind.I32,\n TypeFlags.SIGNED |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 32\n );\n\n /** A 64-bit signed integer. */\n static readonly i64: Type = new Type(TypeKind.I64,\n TypeFlags.SIGNED |\n TypeFlags.LONG |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 64\n );\n\n /** A 32-bit signed size. WASM32 only. */\n static readonly isize32: Type = new Type(TypeKind.ISIZE,\n TypeFlags.SIGNED |\n TypeFlags.INTEGER |\n TypeFlags.POINTER |\n TypeFlags.VALUE, 32\n );\n\n /** A 64-bit signed size. WASM64 only. */\n static readonly isize64: Type = new Type(TypeKind.ISIZE,\n TypeFlags.SIGNED |\n TypeFlags.LONG |\n TypeFlags.INTEGER |\n TypeFlags.POINTER |\n TypeFlags.VALUE, 64\n );\n\n /** An 8-bit unsigned integer. */\n static readonly u8: Type = new Type(TypeKind.U8,\n TypeFlags.UNSIGNED |\n TypeFlags.SHORT |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 8\n );\n\n /** A 16-bit unsigned integer. */\n static readonly u16: Type = new Type(TypeKind.U16,\n TypeFlags.UNSIGNED |\n TypeFlags.SHORT |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 16\n );\n\n /** A 32-bit unsigned integer. */\n static readonly u32: Type = new Type(TypeKind.U32,\n TypeFlags.UNSIGNED |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 32\n );\n\n /** A 64-bit unsigned integer. */\n static readonly u64: Type = new Type(TypeKind.U64,\n TypeFlags.UNSIGNED |\n TypeFlags.LONG |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 64\n );\n\n /** A 32-bit unsigned size. WASM32 only. */\n static readonly usize32: Type = new Type(TypeKind.USIZE,\n TypeFlags.UNSIGNED |\n TypeFlags.INTEGER |\n TypeFlags.POINTER |\n TypeFlags.VALUE, 32\n );\n\n /** A 64-bit unsigned size. WASM64 only. */\n static readonly usize64: Type = new Type(TypeKind.USIZE,\n TypeFlags.UNSIGNED |\n TypeFlags.LONG |\n TypeFlags.INTEGER |\n TypeFlags.POINTER |\n TypeFlags.VALUE, 64\n );\n\n /** A 1-bit unsigned integer. */\n static readonly bool: Type = new Type(TypeKind.BOOL,\n TypeFlags.UNSIGNED |\n TypeFlags.SHORT |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 1\n );\n\n /** A 32-bit float. */\n static readonly f32: Type = new Type(TypeKind.F32,\n TypeFlags.SIGNED |\n TypeFlags.FLOAT |\n TypeFlags.VALUE, 32\n );\n\n /** A 64-bit float. */\n static readonly f64: Type = new Type(TypeKind.F64,\n TypeFlags.SIGNED |\n TypeFlags.LONG |\n TypeFlags.FLOAT |\n TypeFlags.VALUE, 64\n );\n\n /** A 128-bit vector. */\n static readonly v128: Type = new Type(TypeKind.V128,\n TypeFlags.VECTOR |\n TypeFlags.VALUE, 128\n );\n\n /** No return type. */\n static readonly void: Type = new Type(TypeKind.VOID, TypeFlags.NONE, 0);\n\n /** Alias of i32 indicating type inference of locals and globals with just an initializer. */\n static readonly auto: Type = new Type(Type.i32.kind, Type.i32.flags, Type.i32.size);\n}\n\n/** Converts an array of types to an array of native types. */\nexport function typesToNativeTypes(types: Type[]): NativeType[] {\n var numTypes = types.length;\n var ret = new Array(numTypes);\n for (let i = 0; i < numTypes; ++i) ret[i] = types[i].toNativeType();\n return ret;\n}\n\n/** Converts an array of types to its combined string representation. */\nexport function typesToString(types: Type[]): string {\n var numTypes = types.length;\n if (!numTypes) return \"\";\n var sb = new Array(numTypes);\n for (let i = 0; i < numTypes; ++i) sb[i] = types[i].toString();\n return sb.join(\",\");\n}\n\n/** Represents a fully resolved function signature. */\nexport class Signature {\n /** The unique program id that represents this signature. */\n id: u32 = 0;\n /** Parameter types, if any, excluding `this`. */\n parameterTypes: Type[];\n /** Parameter names, if known, excluding `this`. */\n parameterNames: string[] | null;\n /** Number of required parameters excluding `this`. Other parameters are considered optional. */\n requiredParameters: i32;\n /** Return type. */\n returnType: Type;\n /** This type, if an instance signature. */\n thisType: Type | null;\n /** Whether the last parameter is a rest parameter. */\n hasRest: bool;\n /** Cached {@link FunctionTarget}. */\n cachedFunctionTarget: FunctionTarget | null = null;\n /** Respective function type. */\n type: Type;\n /** The program that created this signature. */\n program: Program;\n\n /** Constructs a new signature. */\n constructor(\n program: Program,\n parameterTypes: Type[] | null = null,\n returnType: Type | null = null,\n thisType: Type | null = null\n ) {\n this.parameterTypes = parameterTypes ? parameterTypes : [];\n this.parameterNames = null;\n this.requiredParameters = 0;\n this.returnType = returnType ? returnType : Type.void;\n this.thisType = thisType;\n this.program = program;\n this.hasRest = false;\n this.type = Type.u32.asFunction(this);\n\n var signatureTypes = program.uniqueSignatures;\n var length = signatureTypes.length;\n for (let i = 0; i < length; i++) {\n let compare = signatureTypes[i];\n if (this.equals(compare)) {\n this.id = compare.id;\n return this;\n }\n }\n program.uniqueSignatures.push(this);\n this.id = program.nextSignatureId++;\n }\n\n asFunctionTarget(program: Program): FunctionTarget {\n var target = this.cachedFunctionTarget;\n if (!target) this.cachedFunctionTarget = target = new FunctionTarget(this, program);\n else assert(target.program == program);\n return target;\n }\n\n /** Gets the known or, alternatively, generic parameter name at the specified index. */\n getParameterName(index: i32): string {\n var parameterNames = this.parameterNames;\n return parameterNames && parameterNames.length > index\n ? parameterNames[index]\n : getDefaultParameterName(index);\n }\n\n /** Tests if a value of this function type is assignable to a target of the specified function type. */\n isAssignableTo(target: Signature): bool {\n return this.equals(target);\n }\n\n /** Tests to see if a signature equals another signature. */\n equals(value: Signature): bool {\n // TODO: maybe cache results?\n\n // check `this` type\n var thisThisType = this.thisType;\n var targetThisType = value.thisType;\n if (thisThisType) {\n if (!(targetThisType && thisThisType.isAssignableTo(targetThisType))) return false;\n } else if (targetThisType) {\n return false;\n }\n\n // check rest parameter\n if (this.hasRest != value.hasRest) return false; // TODO\n\n // check parameter types\n var thisParameterTypes = this.parameterTypes;\n var targetParameterTypes = value.parameterTypes;\n var numParameters = thisParameterTypes.length;\n if (numParameters != targetParameterTypes.length) return false;\n for (let i = 0; i < numParameters; ++i) {\n let thisParameterType = thisParameterTypes[i];\n let targetParameterType = targetParameterTypes[i];\n if (!thisParameterType.isAssignableTo(targetParameterType)) return false;\n }\n\n // check return type\n var thisReturnType = this.returnType;\n var targetReturnType = value.returnType;\n return thisReturnType == targetReturnType || thisReturnType.isAssignableTo(targetReturnType);\n }\n\n /** Converts a signature to a function type string. */\n static makeSignatureString(parameterTypes: Type[] | null, returnType: Type, thisType: Type | null = null): string {\n var sb = [];\n sb.push(returnType.toSignatureString());\n if (thisType) sb.push(thisType.toSignatureString());\n if (parameterTypes) {\n for (let i = 0, k = parameterTypes.length; i < k; ++i) sb.push(parameterTypes[i].toSignatureString());\n }\n return \"FUNCSIG$\" + sb.join(\"\");\n }\n\n /** Converts this signature to a function type string. */\n toSignatureString(): string {\n return Signature.makeSignatureString(this.parameterTypes, this.returnType, this.thisType);\n }\n\n /** Converts this signature to a string. */\n toString(): string {\n var sb = new Array();\n sb.push(\"(\");\n var index = 0;\n var thisType = this.thisType;\n if (thisType) {\n sb.push(\"this: \");\n assert(!thisType.signatureReference);\n sb.push(thisType.toString());\n index = 1;\n }\n var parameters = this.parameterTypes;\n var numParameters = parameters.length;\n if (numParameters) {\n let names = this.parameterNames;\n let numNames = names ? names.length : 0;\n let optionalStart = this.requiredParameters;\n let restIndex = this.hasRest ? numParameters - 1 : -1;\n for (let i = 0; i < numParameters; ++i, ++index) {\n if (index) sb.push(\", \");\n if (i == restIndex) sb.push(\"...\");\n if (i < numNames) sb.push((names)[i]);\n else sb.push(getDefaultParameterName(i));\n if (i >= optionalStart && i != restIndex) sb.push(\"?: \");\n else sb.push(\": \");\n sb.push(parameters[i].toString());\n }\n }\n sb.push(\") => \");\n sb.push(this.returnType.toString());\n return sb.join(\"\");\n }\n}\n\n// helpers\n\n// Cached default parameter names used where names are unknown.\nvar cachedDefaultParameterNames: string[] | null = null;\n\n/** Gets the cached default parameter name for the specified index. */\nexport function getDefaultParameterName(index: i32): string {\n if (!cachedDefaultParameterNames) cachedDefaultParameterNames = [];\n for (let i = cachedDefaultParameterNames.length; i <= index; ++i) {\n cachedDefaultParameterNames.push(\"arg$\" + i.toString(10));\n }\n return cachedDefaultParameterNames[index - 1];\n}\n","/**\n * A TypeScript tokenizer modified for AssemblyScript.\n *\n * Skips over trivia and provides a general mark/reset mechanism for the parser to utilize on\n * ambiguous tokens.\n *\n * @module tokenizer\n *//***/\n\nimport {\n DiagnosticCode,\n DiagnosticMessage,\n DiagnosticEmitter\n} from \"./diagnostics\";\n\nimport {\n Source,\n CommentKind\n} from \"./ast\";\n\nimport {\n CharCode,\n isLineBreak,\n isWhiteSpace,\n isIdentifierStart,\n isIdentifierPart,\n isDecimalDigit,\n isOctalDigit,\n isKeywordCharacter\n} from \"./util\";\n\n/** Named token types. */\nexport enum Token {\n\n // keywords\n // discarded: ANY, BOOLEAN, NEVER, NUMBER, STRING, SYMBOL, UNDEFINED, LESSTHAN_SLASH\n\n ABSTRACT,\n AS,\n ASYNC,\n AWAIT, // ES2017\n BREAK, // ES2017\n CASE, // ES2017\n CATCH, // ES2017\n CLASS, // ES2017\n CONST, // ES2017\n CONTINUE, // ES2017\n CONSTRUCTOR,\n DEBUGGER, // ES2017\n DECLARE,\n DEFAULT, // ES2017\n DELETE, // ES2017\n DO, // ES2017\n ELSE, // ES2017\n ENUM, // ES2017 future\n EXPORT, // ES2017\n EXTENDS, // ES2017\n FALSE, // ES\n FINALLY, // ES2017\n FOR, // ES2017\n FROM, // AS possible identifier\n FUNCTION, // ES2017\n GET,\n IF, // ES2017\n IMPLEMENTS, // ES2017 non-lexical\n IMPORT, // ES2017\n IN, // ES2017\n INSTANCEOF, // ES2017\n INTERFACE, // ES2017 non-lexical\n IS,\n KEYOF,\n LET, // ES2017 non-lexical\n MODULE, // AS possible identifier\n NAMESPACE, // AS possible identifier\n NEW, // ES2017\n NULL, // ES\n OF,\n PACKAGE, // ES2017 non-lexical\n PRIVATE, // ES2017 non-lexical\n PROTECTED, // ES2017 non-lexical\n PUBLIC, // ES2017 non-lexical\n READONLY,\n RETURN, // ES2017\n SET,\n STATIC, // ES2017 non-lexical\n SUPER, // ES2017\n SWITCH, // ES2017\n THIS, // ES2017\n THROW, // ES2017\n TRUE, // ES\n TRY, // ES2017\n TYPE, // AS possible identifier\n TYPEOF, // ES2017\n VAR, // ES2017\n VOID, // ES2017\n WHILE, // ES2017\n WITH, // ES2017\n YIELD, // ES2017\n\n // punctuation\n\n OPENBRACE,\n CLOSEBRACE,\n OPENPAREN,\n CLOSEPAREN,\n OPENBRACKET,\n CLOSEBRACKET,\n DOT,\n DOT_DOT_DOT,\n SEMICOLON,\n COMMA,\n LESSTHAN,\n GREATERTHAN,\n LESSTHAN_EQUALS,\n GREATERTHAN_EQUALS,\n EQUALS_EQUALS,\n EXCLAMATION_EQUALS,\n EQUALS_EQUALS_EQUALS,\n EXCLAMATION_EQUALS_EQUALS,\n EQUALS_GREATERTHAN,\n PLUS,\n MINUS,\n ASTERISK_ASTERISK,\n ASTERISK,\n SLASH,\n PERCENT,\n PLUS_PLUS,\n MINUS_MINUS,\n LESSTHAN_LESSTHAN,\n GREATERTHAN_GREATERTHAN,\n GREATERTHAN_GREATERTHAN_GREATERTHAN,\n AMPERSAND,\n BAR,\n CARET,\n EXCLAMATION,\n TILDE,\n AMPERSAND_AMPERSAND,\n BAR_BAR,\n QUESTION,\n COLON,\n EQUALS,\n PLUS_EQUALS,\n MINUS_EQUALS,\n ASTERISK_EQUALS,\n ASTERISK_ASTERISK_EQUALS,\n SLASH_EQUALS,\n PERCENT_EQUALS,\n LESSTHAN_LESSTHAN_EQUALS,\n GREATERTHAN_GREATERTHAN_EQUALS,\n GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS,\n AMPERSAND_EQUALS,\n BAR_EQUALS,\n CARET_EQUALS,\n AT,\n\n // literals\n\n IDENTIFIER,\n STRINGLITERAL,\n INTEGERLITERAL,\n FLOATLITERAL,\n\n // meta\n\n INVALID,\n ENDOFFILE\n}\n\nexport enum IdentifierHandling {\n DEFAULT,\n PREFER,\n ALWAYS\n}\n\nexport function tokenFromKeyword(text: string): Token {\n assert(text.length);\n switch (text.charCodeAt(0)) {\n case CharCode.a: {\n switch (text) {\n case \"abstract\": return Token.ABSTRACT;\n case \"as\": return Token.AS;\n case \"async\": return Token.ASYNC;\n case \"await\": return Token.AWAIT;\n }\n break;\n }\n case CharCode.b: {\n switch (text) {\n case \"break\": return Token.BREAK;\n }\n break;\n }\n case CharCode.c: {\n switch (text) {\n case \"case\": return Token.CASE;\n case \"catch\": return Token.CATCH;\n case \"class\": return Token.CLASS;\n case \"continue\": return Token.CONTINUE;\n case \"const\": return Token.CONST;\n case \"constructor\": return Token.CONSTRUCTOR;\n }\n break;\n }\n case CharCode.d: {\n switch (text) {\n case \"debugger\": return Token.DEBUGGER;\n case \"declare\": return Token.DECLARE;\n case \"default\": return Token.DEFAULT;\n case \"delete\": return Token.DELETE;\n case \"do\": return Token.DO;\n }\n break;\n }\n case CharCode.e: {\n switch (text) {\n case \"else\": return Token.ELSE;\n case \"enum\": return Token.ENUM;\n case \"export\": return Token.EXPORT;\n case \"extends\": return Token.EXTENDS;\n }\n break;\n }\n case CharCode.f: {\n switch (text) {\n case \"false\": return Token.FALSE;\n case \"finally\": return Token.FINALLY;\n case \"for\": return Token.FOR;\n case \"from\": return Token.FROM;\n case \"function\": return Token.FUNCTION;\n }\n break;\n }\n case CharCode.g: {\n switch (text) {\n case \"get\": return Token.GET;\n }\n break;\n }\n case CharCode.i: {\n switch (text) {\n case \"if\": return Token.IF;\n case \"implements\": return Token.IMPLEMENTS;\n case \"import\": return Token.IMPORT;\n case \"in\": return Token.IN;\n case \"instanceof\": return Token.INSTANCEOF;\n case \"interface\": return Token.INTERFACE;\n case \"is\": return Token.IS;\n }\n break;\n }\n case CharCode.k: {\n switch (text) {\n case \"keyof\": return Token.KEYOF;\n }\n break;\n }\n case CharCode.l: {\n switch (text) {\n case \"let\": return Token.LET;\n }\n break;\n }\n case CharCode.m: {\n switch (text) {\n case \"module\": return Token.MODULE;\n }\n break;\n }\n case CharCode.n: {\n switch (text) {\n case \"namespace\": return Token.NAMESPACE;\n case \"new\": return Token.NEW;\n case \"null\": return Token.NULL;\n }\n break;\n }\n case CharCode.o: {\n switch (text) {\n case \"of\": return Token.OF;\n }\n break;\n }\n case CharCode.p: {\n switch (text) {\n case \"package\": return Token.PACKAGE;\n case \"private\": return Token.PRIVATE;\n case \"protected\": return Token.PROTECTED;\n case \"public\": return Token.PUBLIC;\n }\n break;\n }\n case CharCode.r: {\n switch (text) {\n case \"readonly\": return Token.READONLY;\n case \"return\": return Token.RETURN;\n }\n break;\n }\n case CharCode.s: {\n switch (text) {\n case \"set\": return Token.SET;\n case \"static\": return Token.STATIC;\n case \"super\": return Token.SUPER;\n case \"switch\": return Token.SWITCH;\n }\n break;\n }\n case CharCode.t: {\n switch (text) {\n case \"this\": return Token.THIS;\n case \"throw\": return Token.THROW;\n case \"true\": return Token.TRUE;\n case \"try\": return Token.TRY;\n case \"type\": return Token.TYPE;\n case \"typeof\": return Token.TYPEOF;\n }\n break;\n }\n case CharCode.v: {\n switch (text) {\n case \"var\": return Token.VAR;\n case \"void\": return Token.VOID;\n }\n break;\n }\n case CharCode.w: {\n switch (text) {\n case \"while\": return Token.WHILE;\n case \"with\": return Token.WITH;\n }\n break;\n }\n case CharCode.y: {\n switch (text) {\n case \"yield\": return Token.YIELD;\n }\n break;\n }\n }\n return Token.INVALID;\n}\n\nexport function tokenIsAlsoIdentifier(token: Token): bool {\n switch (token) {\n case Token.ABSTRACT:\n case Token.AS:\n case Token.CONSTRUCTOR:\n case Token.DECLARE:\n case Token.DELETE:\n case Token.FROM:\n case Token.FOR:\n case Token.GET:\n case Token.INSTANCEOF:\n case Token.IS:\n case Token.KEYOF:\n case Token.MODULE:\n case Token.NAMESPACE:\n case Token.NULL:\n case Token.READONLY:\n case Token.SET:\n case Token.TYPE:\n case Token.VOID: return true;\n default: return false;\n }\n}\n\nexport function isIllegalVariableIdentifier(name: string): bool {\n assert(name.length);\n switch (name.charCodeAt(0)) {\n case CharCode.d: return name == \"delete\";\n case CharCode.f: return name == \"for\";\n case CharCode.i: return name == \"instanceof\";\n case CharCode.n: return name == \"null\";\n case CharCode.v: return name == \"void\";\n }\n return false;\n}\n\nexport function operatorTokenToString(token: Token): string {\n switch (token) {\n case Token.DELETE: return \"delete\";\n case Token.IN: return \"in\";\n case Token.INSTANCEOF: return \"instanceof\";\n case Token.NEW: return \"new\";\n case Token.TYPEOF: return \"typeof\";\n case Token.VOID: return \"void\";\n case Token.YIELD: return \"yield\";\n case Token.DOT_DOT_DOT: return \"...\";\n case Token.COMMA: return \",\";\n case Token.LESSTHAN: return \"<\";\n case Token.GREATERTHAN: return \">\";\n case Token.LESSTHAN_EQUALS: return \"<=\";\n case Token.GREATERTHAN_EQUALS: return \">=\";\n case Token.EQUALS_EQUALS: return \"==\";\n case Token.EXCLAMATION_EQUALS: return \"!=\";\n case Token.EQUALS_EQUALS_EQUALS: return \"===\";\n case Token.EXCLAMATION_EQUALS_EQUALS: return \"!==\";\n case Token.PLUS: return \"+\";\n case Token.MINUS: return \"-\";\n case Token.ASTERISK_ASTERISK: return \"**\";\n case Token.ASTERISK: return \"*\";\n case Token.SLASH: return \"/\";\n case Token.PERCENT: return \"%\";\n case Token.PLUS_PLUS: return \"++\";\n case Token.MINUS_MINUS: return \"--\";\n case Token.LESSTHAN_LESSTHAN: return \"<<\";\n case Token.GREATERTHAN_GREATERTHAN: return \">>\";\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: return \">>>\";\n case Token.AMPERSAND: return \"&\";\n case Token.BAR: return \"|\";\n case Token.CARET: return \"^\";\n case Token.EXCLAMATION: return \"!\";\n case Token.TILDE: return \"~\";\n case Token.AMPERSAND_AMPERSAND: return \"&&\";\n case Token.BAR_BAR: return \"||\";\n case Token.EQUALS: return \"=\";\n case Token.PLUS_EQUALS: return \"+=\";\n case Token.MINUS_EQUALS: return \"-=\";\n case Token.ASTERISK_EQUALS: return \"*=\";\n case Token.ASTERISK_ASTERISK_EQUALS: return \"**=\";\n case Token.SLASH_EQUALS: return \"/=\";\n case Token.PERCENT_EQUALS: return \"%=\";\n case Token.LESSTHAN_LESSTHAN_EQUALS: return \"<<=\";\n case Token.GREATERTHAN_GREATERTHAN_EQUALS: return \">>=\";\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS: return \">>>=\";\n case Token.AMPERSAND_EQUALS: return \"&=\";\n case Token.BAR_EQUALS: return \"|=\";\n case Token.CARET_EQUALS: return \"^=\";\n default: {\n assert(false);\n return \"\";\n }\n }\n}\n\nexport class Range {\n\n source: Source;\n start: i32;\n end: i32;\n\n // TODO: set these while tokenizing\n // line: i32;\n // column: i32;\n\n constructor(source: Source, start: i32, end: i32) {\n this.source = source;\n this.start = start;\n this.end = end;\n }\n\n static join(a: Range, b: Range): Range {\n if (a.source != b.source) throw new Error(\"source mismatch\");\n return new Range(a.source,\n a.start < b.start ? a.start : b.start,\n a.end > b.end ? a.end : b.end\n );\n }\n\n get atStart(): Range {\n return new Range(this.source, this.start, this.start);\n }\n\n get atEnd(): Range {\n return new Range(this.source, this.end, this.end);\n }\n\n get line(): i32 {\n var text = this.source.text;\n var line = 1;\n for (let pos = this.start; pos >= 0; --pos) {\n if (text.charCodeAt(pos) == CharCode.LINEFEED) line++;\n }\n return line;\n }\n\n get column(): i32 {\n var text = this.source.text;\n var column = 0;\n for (let pos = this.start - 1; pos >= 0; --pos) {\n if (text.charCodeAt(pos) == CharCode.LINEFEED) break;\n ++column;\n }\n return column;\n }\n\n toString(): string {\n return this.source.text.substring(this.start, this.end);\n }\n\n debugInfoRef: usize = 0;\n}\n\ndeclare function parseFloat(str: string): f64;\n\n/** Handler for intercepting comments while tokenizing. */\nexport type CommentHandler = (kind: CommentKind, text: string, range: Range) => void;\n\n/** Tokenizes a source to individual {@link Token}s. */\nexport class Tokenizer extends DiagnosticEmitter {\n\n source: Source;\n end: i32 = 0;\n\n pos: i32 = 0;\n token: Token = -1;\n tokenPos: i32 = 0;\n\n nextToken: Token = -1;\n nextTokenPos: i32 = 0;\n nextTokenOnNewLine: bool = false;\n\n onComment: CommentHandler | null = null;\n\n /** Constructs a new tokenizer. */\n constructor(source: Source, diagnostics: DiagnosticMessage[] | null = null) {\n super(diagnostics);\n\n this.source = source;\n this.pos = 0;\n this.end = source.text.length;\n this.diagnostics = diagnostics || new Array();\n\n var end = this.end;\n var text = source.text;\n\n // skip bom\n if (\n this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.BYTEORDERMARK\n ) {\n ++this.pos;\n }\n\n // skip shebang\n if (\n this.pos + 1 < end &&\n text.charCodeAt(this.pos) == CharCode.HASH &&\n text.charCodeAt(this.pos + 1) == CharCode.EXCLAMATION\n ) {\n this.pos += 2;\n while (\n this.pos < end &&\n text.charCodeAt(this.pos) != CharCode.LINEFEED\n ) {\n ++this.pos;\n }\n // 'next' now starts at lf or eof\n }\n }\n\n next(identifierHandling: IdentifierHandling = IdentifierHandling.DEFAULT): Token {\n this.nextToken = -1;\n return this.token = this.unsafeNext(identifierHandling);\n }\n\n private unsafeNext(\n identifierHandling: IdentifierHandling = IdentifierHandling.DEFAULT,\n maxTokenLength: i32 = i32.MAX_VALUE\n ): Token {\n var end = this.end;\n var text = this.source.text;\n while (this.pos < end) {\n this.tokenPos = this.pos;\n let c = text.charCodeAt(this.pos);\n switch (c) {\n case CharCode.CARRIAGERETURN: {\n if (!(\n ++this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.LINEFEED\n )) break;\n // otherwise fall-through\n }\n case CharCode.LINEFEED:\n case CharCode.TAB:\n case CharCode.VERTICALTAB:\n case CharCode.FORMFEED:\n case CharCode.SPACE: {\n ++this.pos;\n break;\n }\n case CharCode.EXCLAMATION: {\n ++this.pos;\n if (\n maxTokenLength > 1 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n if (\n maxTokenLength > 2 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.EXCLAMATION_EQUALS_EQUALS;\n }\n return Token.EXCLAMATION_EQUALS;\n }\n return Token.EXCLAMATION;\n }\n case CharCode.DOUBLEQUOTE:\n case CharCode.SINGLEQUOTE:\n case CharCode.BACKTICK: { // TODO\n return Token.STRINGLITERAL; // expects a call to readString\n }\n case CharCode.PERCENT: {\n ++this.pos;\n if (\n maxTokenLength > 1 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.PERCENT_EQUALS;\n }\n return Token.PERCENT;\n }\n case CharCode.AMPERSAND: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.AMPERSAND) {\n ++this.pos;\n return Token.AMPERSAND_AMPERSAND;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.AMPERSAND_EQUALS;\n }\n }\n return Token.AMPERSAND;\n }\n case CharCode.OPENPAREN: {\n ++this.pos;\n return Token.OPENPAREN;\n }\n case CharCode.CLOSEPAREN: {\n ++this.pos;\n return Token.CLOSEPAREN;\n }\n case CharCode.ASTERISK: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.ASTERISK_EQUALS;\n }\n if (chr == CharCode.ASTERISK) {\n ++this.pos;\n if (\n maxTokenLength > 2 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.ASTERISK_ASTERISK_EQUALS;\n }\n return Token.ASTERISK_ASTERISK;\n }\n }\n return Token.ASTERISK;\n }\n case CharCode.PLUS: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.PLUS) {\n ++this.pos;\n return Token.PLUS_PLUS;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.PLUS_EQUALS;\n }\n }\n return Token.PLUS;\n }\n case CharCode.COMMA: {\n ++this.pos;\n return Token.COMMA;\n }\n case CharCode.MINUS: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.MINUS) {\n ++this.pos;\n return Token.MINUS_MINUS;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.MINUS_EQUALS;\n }\n }\n return Token.MINUS;\n }\n case CharCode.DOT: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (isDecimalDigit(chr)) {\n --this.pos;\n return Token.FLOATLITERAL; // expects a call to readFloat\n }\n if (\n maxTokenLength > 2 && this.pos + 1 < end &&\n chr == CharCode.DOT &&\n text.charCodeAt(this.pos + 1) == CharCode.DOT\n ) {\n this.pos += 2;\n return Token.DOT_DOT_DOT;\n }\n }\n return Token.DOT;\n }\n case CharCode.SLASH: {\n let commentStartPos = this.pos;\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.SLASH) { // single-line\n let commentKind = CommentKind.LINE;\n if (\n this.pos + 1 < end &&\n text.charCodeAt(this.pos + 1) == CharCode.SLASH\n ) {\n ++this.pos;\n commentKind = CommentKind.TRIPLE;\n }\n while (++this.pos < end) {\n if (text.charCodeAt(this.pos) == CharCode.LINEFEED) {\n ++this.pos;\n break;\n }\n }\n if (this.onComment) {\n this.onComment(\n commentKind,\n text.substring(commentStartPos, this.pos),\n this.range(commentStartPos, this.pos)\n );\n }\n break;\n }\n if (chr == CharCode.ASTERISK) { // multi-line\n let closed = false;\n while (++this.pos < end) {\n c = text.charCodeAt(this.pos);\n if (\n c == CharCode.ASTERISK &&\n this.pos + 1 < end &&\n text.charCodeAt(this.pos + 1) == CharCode.SLASH\n ) {\n this.pos += 2;\n closed = true;\n break;\n }\n }\n if (!closed) {\n this.error(\n DiagnosticCode._0_expected,\n this.range(this.pos), \"*/\"\n );\n } else if (this.onComment) {\n this.onComment(\n CommentKind.BLOCK,\n text.substring(commentStartPos, this.pos),\n this.range(commentStartPos, this.pos)\n );\n }\n break;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.SLASH_EQUALS;\n }\n }\n return Token.SLASH;\n }\n case CharCode._0:\n case CharCode._1:\n case CharCode._2:\n case CharCode._3:\n case CharCode._4:\n case CharCode._5:\n case CharCode._6:\n case CharCode._7:\n case CharCode._8:\n case CharCode._9: {\n return this.testInteger()\n ? Token.INTEGERLITERAL // expects a call to readInteger\n : Token.FLOATLITERAL; // expects a call to readFloat\n }\n case CharCode.COLON: {\n ++this.pos;\n return Token.COLON;\n }\n case CharCode.SEMICOLON: {\n ++this.pos;\n return Token.SEMICOLON;\n }\n case CharCode.LESSTHAN: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.LESSTHAN) {\n ++this.pos;\n if (\n maxTokenLength > 2 &&\n this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.LESSTHAN_LESSTHAN_EQUALS;\n }\n return Token.LESSTHAN_LESSTHAN;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.LESSTHAN_EQUALS;\n }\n }\n return Token.LESSTHAN;\n }\n case CharCode.EQUALS: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n if (\n maxTokenLength > 2 &&\n this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.EQUALS_EQUALS_EQUALS;\n }\n return Token.EQUALS_EQUALS;\n }\n if (chr == CharCode.GREATERTHAN) {\n ++this.pos;\n return Token.EQUALS_GREATERTHAN;\n }\n }\n return Token.EQUALS;\n }\n case CharCode.GREATERTHAN: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.GREATERTHAN) {\n ++this.pos;\n if (maxTokenLength > 2 && this.pos < end) {\n chr = text.charCodeAt(this.pos);\n if (chr == CharCode.GREATERTHAN) {\n ++this.pos;\n if (\n maxTokenLength > 3 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS;\n }\n return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.GREATERTHAN_GREATERTHAN_EQUALS;\n }\n }\n return Token.GREATERTHAN_GREATERTHAN;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.GREATERTHAN_EQUALS;\n }\n }\n return Token.GREATERTHAN;\n }\n case CharCode.QUESTION: {\n ++this.pos;\n return Token.QUESTION;\n }\n case CharCode.OPENBRACKET: {\n ++this.pos;\n return Token.OPENBRACKET;\n }\n case CharCode.CLOSEBRACKET: {\n ++this.pos;\n return Token.CLOSEBRACKET;\n }\n case CharCode.CARET: {\n ++this.pos;\n if (\n maxTokenLength > 1 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.CARET_EQUALS;\n }\n return Token.CARET;\n }\n case CharCode.OPENBRACE: {\n ++this.pos;\n return Token.OPENBRACE;\n }\n case CharCode.BAR: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.BAR) {\n ++this.pos;\n return Token.BAR_BAR;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.BAR_EQUALS;\n }\n }\n return Token.BAR;\n }\n case CharCode.CLOSEBRACE: {\n ++this.pos;\n return Token.CLOSEBRACE;\n }\n case CharCode.TILDE: {\n ++this.pos;\n return Token.TILDE;\n }\n case CharCode.AT: {\n ++this.pos;\n return Token.AT;\n }\n default: {\n if (isIdentifierStart(c)) {\n if (isKeywordCharacter(c)) {\n let posBefore = this.pos;\n while (\n ++this.pos < end &&\n isIdentifierPart(c = text.charCodeAt(this.pos))\n ) {\n if (!isKeywordCharacter(c)) {\n this.pos = posBefore;\n return Token.IDENTIFIER;\n }\n }\n let keywordText = text.substring(posBefore, this.pos);\n let keywordToken = tokenFromKeyword(keywordText);\n if (\n keywordToken !== Token.INVALID &&\n identifierHandling !== IdentifierHandling.ALWAYS &&\n !(\n identifierHandling === IdentifierHandling.PREFER &&\n tokenIsAlsoIdentifier(keywordToken)\n )\n ) {\n return keywordToken;\n }\n this.pos = posBefore;\n }\n return Token.IDENTIFIER; // expects a call to readIdentifier\n } else if (isWhiteSpace(c)) {\n ++this.pos;\n break;\n }\n this.error(\n DiagnosticCode.Invalid_character,\n this.range(this.pos, this.pos + 1)\n );\n ++this.pos;\n return Token.INVALID;\n }\n }\n }\n return Token.ENDOFFILE;\n }\n\n peek(\n checkOnNewLine: bool = false,\n identifierHandling: IdentifierHandling = IdentifierHandling.DEFAULT,\n maxCompoundLength: i32 = i32.MAX_VALUE\n ): Token {\n var text = this.source.text;\n if (this.nextToken < 0) {\n let posBefore = this.pos;\n let tokenBefore = this.token;\n let tokenPosBefore = this.tokenPos;\n this.nextToken = this.unsafeNext(identifierHandling, maxCompoundLength);\n this.nextTokenPos = this.tokenPos;\n if (checkOnNewLine) {\n this.nextTokenOnNewLine = false;\n for (let pos = posBefore, end = this.nextTokenPos; pos < end; ++pos) {\n if (isLineBreak(text.charCodeAt(pos))) {\n this.nextTokenOnNewLine = true;\n break;\n }\n }\n }\n this.pos = posBefore;\n this.token = tokenBefore;\n this.tokenPos = tokenPosBefore;\n }\n return this.nextToken;\n }\n\n skipIdentifier(identifierHandling: IdentifierHandling = IdentifierHandling.PREFER): bool {\n return this.skip(Token.IDENTIFIER, identifierHandling);\n }\n\n skip(token: Token, identifierHandling: IdentifierHandling = IdentifierHandling.DEFAULT): bool {\n var posBefore = this.pos;\n var tokenBefore = this.token;\n var tokenPosBefore = this.tokenPos;\n var maxCompoundLength = i32.MAX_VALUE;\n switch (token) {\n case Token.GREATERTHAN: { // where parsing type arguments\n maxCompoundLength = 1;\n break;\n }\n }\n this.token = this.unsafeNext(identifierHandling, maxCompoundLength);\n if (this.token == token) {\n this.nextToken = -1;\n return true;\n } else {\n this.pos = posBefore;\n this.token = tokenBefore;\n this.tokenPos = tokenPosBefore;\n return false;\n }\n }\n\n mark(): State {\n var state: State;\n if (reusableState) {\n state = reusableState;\n reusableState = null;\n } else {\n state = new State();\n }\n state.pos = this.pos;\n state.token = this.token;\n state.tokenPos = this.tokenPos;\n return state;\n }\n\n discard(state: State): void {\n reusableState = state;\n }\n\n reset(state: State): void {\n this.pos = state.pos;\n this.token = state.token;\n this.tokenPos = state.tokenPos;\n this.nextToken = -1;\n }\n\n range(start: i32 = -1, end: i32 = -1): Range {\n if (start < 0) {\n start = this.tokenPos;\n end = this.pos;\n } else if (end < 0) {\n end = start;\n }\n return new Range(this.source, start, end);\n }\n\n readIdentifier(): string {\n var text = this.source.text;\n var start = this.pos;\n var end = this.end;\n while (\n ++this.pos < end &&\n isIdentifierPart(text.charCodeAt(this.pos))\n );\n return text.substring(start, this.pos);\n }\n\n readString(): string {\n var text = this.source.text;\n var quote = text.charCodeAt(this.pos++);\n var start = this.pos;\n var end = this.end;\n var result = \"\";\n while (true) {\n if (this.pos >= end) {\n result += text.substring(start, this.pos);\n this.error(\n DiagnosticCode.Unterminated_string_literal,\n this.range(start - 1, end)\n );\n break;\n }\n let c = text.charCodeAt(this.pos);\n if (c == quote) {\n result += text.substring(start, this.pos++);\n break;\n }\n if (c == CharCode.BACKSLASH) {\n result += text.substring(start, this.pos);\n result += this.readEscapeSequence();\n start = this.pos;\n continue;\n }\n if (isLineBreak(c) && quote != CharCode.BACKTICK) {\n result += text.substring(start, this.pos);\n this.error(\n DiagnosticCode.Unterminated_string_literal,\n this.range(start - 1, this.pos)\n );\n break;\n }\n ++this.pos;\n }\n return result;\n }\n\n readEscapeSequence(): string {\n var end = this.end;\n if (++this.pos >= end) {\n this.error(\n DiagnosticCode.Unexpected_end_of_text,\n this.range(end)\n );\n return \"\";\n }\n\n var text = this.source.text;\n var c = text.charCodeAt(this.pos++);\n switch (c) {\n case CharCode._0: return \"\\0\";\n case CharCode.b: return \"\\b\";\n case CharCode.t: return \"\\t\";\n case CharCode.n: return \"\\n\";\n case CharCode.v: return \"\\v\";\n case CharCode.f: return \"\\f\";\n case CharCode.r: return \"\\r\";\n case CharCode.SINGLEQUOTE: return \"'\";\n case CharCode.DOUBLEQUOTE: return \"\\\"\";\n case CharCode.u: {\n if (\n this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.OPENBRACE\n ) {\n ++this.pos;\n return this.readExtendedUnicodeEscape(); // \\u{DDDDDDDD}\n }\n return this.readUnicodeEscape(); // \\uDDDD\n }\n case CharCode.CARRIAGERETURN: {\n if (\n this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.LINEFEED\n ) {\n ++this.pos;\n }\n // fall through\n }\n case CharCode.LINEFEED:\n case CharCode.LINESEPARATOR:\n case CharCode.PARAGRAPHSEPARATOR: return \"\";\n default: return String.fromCharCode(c);\n }\n }\n\n readRegexpPattern(): string {\n var text = this.source.text;\n var start = this.pos;\n var end = this.end;\n var escaped = false;\n while (true) {\n if (this.pos >= end) {\n this.error(\n DiagnosticCode.Unterminated_regular_expression_literal,\n this.range(start, end)\n );\n break;\n }\n if (text.charCodeAt(this.pos) == CharCode.BACKSLASH) {\n ++this.pos;\n escaped = true;\n continue;\n }\n let c = text.charCodeAt(this.pos);\n if (!escaped && c == CharCode.SLASH) break;\n if (isLineBreak(c)) {\n this.error(\n DiagnosticCode.Unterminated_regular_expression_literal,\n this.range(start, this.pos)\n );\n break;\n }\n ++this.pos;\n escaped = false;\n }\n return text.substring(start, this.pos);\n }\n\n readRegexpFlags(): string {\n var text = this.source.text;\n var start = this.pos;\n var end = this.end;\n var flags = 0;\n while (this.pos < end) {\n let c: i32 = text.charCodeAt(this.pos);\n if (!isIdentifierPart(c)) break;\n ++this.pos;\n\n // make sure each supported flag is unique\n switch (c) {\n case CharCode.g: {\n flags |= flags & 1 ? -1 : 1;\n break;\n }\n case CharCode.i: {\n flags |= flags & 2 ? -1 : 2;\n break;\n }\n case CharCode.m: {\n flags |= flags & 4 ? -1 : 4;\n break;\n }\n default: {\n flags = -1;\n break;\n }\n }\n }\n if (flags == -1) {\n this.error(\n DiagnosticCode.Invalid_regular_expression_flags,\n this.range(start, this.pos)\n );\n }\n return text.substring(start, this.pos);\n }\n\n testInteger(): bool {\n var end = this.end;\n var text = this.source.text;\n if (this.pos + 1 < end && text.charCodeAt(this.pos) == CharCode._0) {\n switch (text.charCodeAt(this.pos + 2)) {\n case CharCode.x:\n case CharCode.X:\n case CharCode.b:\n case CharCode.B:\n case CharCode.o:\n case CharCode.O: return true;\n }\n }\n var pos = this.pos;\n while (pos < end) {\n let c = text.charCodeAt(pos);\n if (c == CharCode.DOT || c == CharCode.e || c == CharCode.E) return false;\n if ((c < CharCode._0 || c > CharCode._9) && c != CharCode._) break;\n // does not validate separator placement (this is done in readXYInteger)\n pos++;\n }\n return true;\n }\n\n readInteger(): I64 {\n var text = this.source.text;\n if (this.pos + 2 < this.end && text.charCodeAt(this.pos) == CharCode._0) {\n switch (text.charCodeAt(this.pos + 1)) {\n case CharCode.x:\n case CharCode.X: {\n this.pos += 2;\n return this.readHexInteger();\n }\n case CharCode.b:\n case CharCode.B: {\n this.pos += 2;\n return this.readBinaryInteger();\n }\n case CharCode.o:\n case CharCode.O: {\n this.pos += 2;\n return this.readOctalInteger();\n }\n }\n if (isOctalDigit(text.charCodeAt(this.pos + 1))) {\n let start = this.pos;\n ++this.pos;\n let value = this.readOctalInteger();\n this.error(\n DiagnosticCode.Octal_literals_are_not_allowed_in_strict_mode,\n this.range(start, this.pos)\n );\n return value;\n }\n }\n return this.readDecimalInteger();\n }\n\n readHexInteger(): I64 {\n var text = this.source.text;\n var start = this.pos;\n var value = i64_new(0);\n var i64_4 = i64_new(4);\n var sepEnd = start;\n var end = this.end;\n while (this.pos < end) {\n let pos = this.pos;\n let c = text.charCodeAt(pos);\n if (c >= CharCode._0 && c <= CharCode._9) {\n // value = (value << 4) + c - CharCode._0;\n value = i64_add(\n i64_shl(value, i64_4),\n i64_new(c - CharCode._0)\n );\n } else if (c >= CharCode.A && c <= CharCode.F) {\n // value = (value << 4) + 10 + c - CharCode.A;\n value = i64_add(\n i64_shl(value, i64_4),\n i64_new(10 + c - CharCode.A)\n );\n } else if (c >= CharCode.a && c <= CharCode.f) {\n // value = (value << 4) + 10 + c - CharCode.a;\n value = i64_add(\n i64_shl(value, i64_4),\n i64_new(10 + c - CharCode.a)\n );\n } else if (c == CharCode._) {\n if (sepEnd == pos) {\n this.error(\n sepEnd == start\n ? DiagnosticCode.Numeric_separators_are_not_allowed_here\n : DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,\n this.range(pos)\n );\n }\n sepEnd = pos + 1;\n } else {\n break;\n }\n this.pos = pos + 1;\n }\n if (this.pos == start) {\n this.error(\n DiagnosticCode.Hexadecimal_digit_expected,\n this.range(start)\n );\n } else if (sepEnd == this.pos) {\n this.error(\n DiagnosticCode.Numeric_separators_are_not_allowed_here,\n this.range(sepEnd - 1)\n );\n }\n return value;\n }\n\n readDecimalInteger(): I64 {\n var text = this.source.text;\n var start = this.pos;\n var end = this.end;\n var value = i64_new(0);\n var i64_10 = i64_new(10);\n var sepEnd = start;\n while (this.pos < end) {\n let pos = this.pos;\n let c = text.charCodeAt(pos);\n if (c >= CharCode._0 && c <= CharCode._9) {\n // value = value * 10 + c - CharCode._0;\n value = i64_add(\n i64_mul(value, i64_10),\n i64_new(c - CharCode._0)\n );\n } else if (c == CharCode._) {\n if (sepEnd == pos) {\n this.error(\n sepEnd == start\n ? DiagnosticCode.Numeric_separators_are_not_allowed_here\n : DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,\n this.range(pos)\n );\n }\n sepEnd = pos + 1;\n } else {\n break;\n }\n this.pos = pos + 1;\n }\n if (this.pos == start) {\n this.error(\n DiagnosticCode.Digit_expected,\n this.range(start)\n );\n } else if (sepEnd == this.pos) {\n this.error(\n DiagnosticCode.Numeric_separators_are_not_allowed_here,\n this.range(sepEnd - 1)\n );\n }\n return value;\n }\n\n readOctalInteger(): I64 {\n var text = this.source.text;\n var start = this.pos;\n var value = i64_new(0);\n var i64_3 = i64_new(3);\n var sepEnd = start;\n var end = this.end;\n while (this.pos < end) {\n let pos = this.pos;\n let c = text.charCodeAt(pos);\n if (c >= CharCode._0 && c <= CharCode._7) {\n // value = (value << 3) + c - CharCode._0;\n value = i64_add(\n i64_shl(value, i64_3),\n i64_new(c - CharCode._0)\n );\n } else if (c == CharCode._) {\n if (sepEnd == pos) {\n this.error(\n sepEnd == start\n ? DiagnosticCode.Numeric_separators_are_not_allowed_here\n : DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,\n this.range(pos)\n );\n }\n sepEnd = pos + 1;\n } else {\n break;\n }\n ++this.pos;\n }\n if (this.pos == start) {\n this.error(\n DiagnosticCode.Octal_digit_expected,\n this.range(start)\n );\n } else if (sepEnd == this.pos) {\n this.error(\n DiagnosticCode.Numeric_separators_are_not_allowed_here,\n this.range(sepEnd - 1)\n );\n }\n return value;\n }\n\n readBinaryInteger(): I64 {\n var text = this.source.text;\n var start = this.pos;\n var value = i64_new(0);\n var i64_1 = i64_new(1);\n var sepEnd = start;\n var end = this.end;\n while (this.pos < end) {\n let pos = this.pos;\n let c = text.charCodeAt(pos);\n if (c == CharCode._0) {\n // value = (value << 1);\n value = i64_shl(value, i64_1);\n } else if (c == CharCode._1) {\n // value = (value << 1) + 1;\n value = i64_add(\n i64_shl(value, i64_1),\n i64_1\n );\n } else if (c == CharCode._) {\n if (sepEnd == pos) {\n this.error(\n sepEnd == start\n ? DiagnosticCode.Numeric_separators_are_not_allowed_here\n : DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,\n this.range(pos)\n );\n }\n sepEnd = pos + 1;\n } else {\n break;\n }\n this.pos = pos + 1;\n }\n if (this.pos == start) {\n this.error(\n DiagnosticCode.Binary_digit_expected,\n this.range(start)\n );\n } else if (sepEnd == this.pos) {\n this.error(\n DiagnosticCode.Numeric_separators_are_not_allowed_here,\n this.range(sepEnd - 1)\n );\n }\n return value;\n }\n\n readFloat(): f64 {\n // var text = this.source.text;\n // if (text.charCodeAt(this.pos) == CharCode._0 && this.pos + 2 < this.end) {\n // switch (text.charCodeAt(this.pos + 1)) {\n // case CharCode.X:\n // case CharCode.x: {\n // this.pos += 2;\n // return this.readHexFloat();\n // }\n // }\n // }\n return this.readDecimalFloat();\n }\n\n readDecimalFloat(): f64 {\n // TODO: numeric separators (parseFloat can't handle these)\n var start = this.pos;\n var end = this.end;\n var text = this.source.text;\n while (this.pos < end && isDecimalDigit(text.charCodeAt(this.pos))) {\n ++this.pos;\n }\n if (this.pos < end && text.charCodeAt(this.pos) == CharCode.DOT) {\n ++this.pos;\n while (this.pos < end && isDecimalDigit(text.charCodeAt(this.pos))) {\n ++this.pos;\n }\n }\n if (this.pos < end) {\n let c = text.charCodeAt(this.pos);\n if (c == CharCode.e || c == CharCode.E) {\n if (\n ++this.pos < end &&\n (c = text.charCodeAt(this.pos)) == CharCode.MINUS || c == CharCode.PLUS &&\n isDecimalDigit(text.charCodeAt(this.pos + 1))\n ) {\n ++this.pos;\n }\n while (this.pos < end && isDecimalDigit(text.charCodeAt(this.pos))) {\n ++this.pos;\n }\n }\n }\n return parseFloat(text.substring(start, this.pos));\n }\n\n readHexFloat(): f64 {\n throw new Error(\"not implemented\"); // TBD\n }\n\n readUnicodeEscape(): string {\n var remain = 4;\n var value = 0;\n var end = this.end;\n var text = this.source.text;\n while (this.pos < end) {\n let c = text.charCodeAt(this.pos++);\n if (c >= CharCode._0 && c <= CharCode._9) {\n value = (value << 4) + c - CharCode._0;\n } else if (c >= CharCode.A && c <= CharCode.F) {\n value = (value << 4) + c + (10 - CharCode.A);\n } else if (c >= CharCode.a && c <= CharCode.f) {\n value = (value << 4) + c + (10 - CharCode.a);\n } else {\n this.error(\n DiagnosticCode.Hexadecimal_digit_expected,\n this.range(this.pos - 1, this.pos)\n );\n return \"\";\n }\n if (--remain == 0) break;\n }\n if (remain) {\n this.error(\n DiagnosticCode.Unexpected_end_of_text,\n this.range(this.pos)\n );\n return \"\";\n }\n return String.fromCharCode(value);\n }\n\n private readExtendedUnicodeEscape(): string {\n var start = this.pos;\n var value = this.readHexInteger();\n var value32 = i64_low(value);\n var invalid = false;\n\n assert(!i64_high(value));\n if (value32 > 0x10FFFF) {\n this.error(\n DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,\n this.range(start, this.pos)\n );\n invalid = true;\n }\n\n var end = this.end;\n var text = this.source.text;\n if (this.pos >= end) {\n this.error(\n DiagnosticCode.Unexpected_end_of_text,\n this.range(start, end)\n );\n invalid = true;\n } else if (text.charCodeAt(this.pos) == CharCode.CLOSEBRACE) {\n ++this.pos;\n } else {\n this.error(\n DiagnosticCode.Unterminated_Unicode_escape_sequence,\n this.range(start, this.pos)\n );\n invalid = true;\n }\n\n if (invalid) return \"\";\n return value32 < 65536\n ? String.fromCharCode(value32)\n : String.fromCharCode(\n ((value32 - 65536) >>> 10) + 0xD800,\n ((value32 - 65536) & 1023) + 0xDC00\n );\n }\n\n finish(): void {\n }\n}\n\n/** Tokenizer state as returned by {@link Tokenizer#mark} and consumed by {@link Tokenizer#reset}. */\nexport class State {\n /** Current position. */\n pos: i32;\n /** Current token. */\n token: Token;\n /** Current token's position. */\n tokenPos: i32;\n}\n\n// Reusable state object to reduce allocations\nvar reusableState: State | null = null;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Resolve infrastructure to obtain types and elements.\n * @module resolver\n *//***/\n\nimport {\n DiagnosticEmitter,\n DiagnosticCode\n} from \"./diagnostics\";\n\nimport {\n Program,\n ElementKind,\n OperatorKind,\n Element,\n Class,\n ClassPrototype,\n Function,\n FunctionPrototype,\n VariableLikeElement,\n Property,\n PropertyPrototype,\n Field,\n FieldPrototype,\n Global,\n TypeDefinition\n} from \"./program\";\n\nimport {\n FlowFlags,\n Flow\n} from \"./flow\";\n\nimport {\n FunctionTypeNode,\n ParameterKind,\n TypeNode,\n NodeKind,\n NamedTypeNode,\n TypeName,\n TypeParameterNode,\n Node,\n Range,\n IdentifierExpression,\n CallExpression,\n ElementAccessExpression,\n PropertyAccessExpression,\n LiteralExpression,\n LiteralKind,\n ParenthesizedExpression,\n AssertionExpression,\n Expression,\n IntegerLiteralExpression,\n UnaryPrefixExpression,\n UnaryPostfixExpression,\n AssertionKind,\n BinaryExpression,\n ThisExpression,\n SuperExpression,\n isTypeOmitted\n} from \"./ast\";\n\nimport {\n Type,\n Signature,\n typesToString,\n TypeKind,\n TypeFlags\n} from \"./types\";\n\nimport {\n CommonFlags,\n CommonSymbols\n} from \"./common\";\n\nimport {\n makeMap,\n isPowerOf2\n} from \"./util\";\n\nimport {\n Token\n} from \"./tokenizer\";\n\nimport {\n BuiltinSymbols\n} from \"./builtins\";\n\n/** Indicates whether errors are reported or not. */\nexport enum ReportMode {\n /** Report errors. */\n REPORT,\n /** Swallow errors. */\n SWALLOW\n}\n\n/** Provides tools to resolve types and expressions. */\nexport class Resolver extends DiagnosticEmitter {\n\n /** The program this resolver belongs to. */\n program: Program;\n\n /** Target expression of the previously resolved property or element access. */\n currentThisExpression: Expression | null = null;\n /** Element expression of the previously resolved element access. */\n currentElementExpression : Expression | null = null;\n\n /** Constructs the resolver for the specified program. */\n constructor(\n /** The program to construct a resolver for. */\n program: Program\n ) {\n super(program.diagnostics);\n this.program = program;\n }\n\n // ====================================================== Types ======================================================\n\n /** Resolves a {@link TypeNode} to a concrete {@link Type}. */\n resolveType(\n /** The type to resolve. */\n node: TypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n switch (node.kind) {\n case NodeKind.NAMEDTYPE: {\n return this.resolveNamedType(\n node,\n ctxElement,\n ctxTypes,\n reportMode\n );\n }\n case NodeKind.FUNCTIONTYPE: {\n return this.resolveFunctionType(\n node,\n ctxElement,\n ctxTypes,\n reportMode\n );\n }\n default: assert(false);\n }\n return null;\n }\n\n /** Resolves a {@link NamedTypeNode} to a concrete {@link Type}. */\n private resolveNamedType(\n /** The type to resolve. */\n node: NamedTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var nameNode = node.name;\n var typeArgumentNodes = node.typeArguments;\n var isSimpleType = !nameNode.next;\n\n // Look up in contextual types if a simple type\n if (isSimpleType) {\n let simpleName = nameNode.identifier.text;\n if (ctxTypes !== null && ctxTypes.has(simpleName)) {\n let type = ctxTypes.get(simpleName)!;\n if (typeArgumentNodes !== null && typeArgumentNodes.length) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n node.range, type.toString()\n );\n }\n }\n if (node.isNullable) {\n if (!type.is(TypeFlags.REFERENCE)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Basic_type_0_cannot_be_nullable,\n node.range, type.toString()\n );\n }\n }\n return type.asNullable();\n }\n return type;\n }\n }\n\n // Look up in context\n var element = this.resolveTypeName(nameNode, ctxElement, reportMode);\n if (!element) return null;\n\n // Use shadow type if present (i.e. namespace sharing a type)\n if (element.shadowType) {\n element = element.shadowType;\n\n } else {\n\n // Handle enums (become i32)\n if (element.kind == ElementKind.ENUM) {\n if (typeArgumentNodes !== null && typeArgumentNodes.length) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n node.range, element.internalName\n );\n }\n }\n if (node.isNullable) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Basic_type_0_cannot_be_nullable,\n node.range, element.name + \"/i32\"\n );\n }\n }\n return Type.i32;\n }\n\n // Handle classes\n if (element.kind == ElementKind.CLASS_PROTOTYPE) {\n let instance = this.resolveClassInclTypeArguments(\n element,\n typeArgumentNodes,\n ctxElement,\n makeMap(ctxTypes), // don't inherit\n node,\n reportMode\n );\n if (!instance) return null;\n return node.isNullable ? instance.type.asNullable() : instance.type;\n }\n }\n\n // Handle type definitions\n if (element.kind == ElementKind.TYPEDEFINITION) {\n\n // Shortcut already resolved (mostly builtins)\n if (element.is(CommonFlags.RESOLVED)) {\n if (typeArgumentNodes !== null && typeArgumentNodes.length) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n node.range, element.internalName\n );\n }\n }\n let type = (element).type;\n if (node.isNullable) {\n if (!type.is(TypeFlags.REFERENCE)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Basic_type_0_cannot_be_nullable,\n nameNode.range, nameNode.identifier.text\n );\n }\n } else {\n return type.asNullable();\n }\n }\n return type;\n }\n\n // Handle special built-in types\n if (isSimpleType) {\n switch (nameNode.identifier.symbol) {\n case CommonSymbols.native: return this.resolveBuiltinNativeType(node, ctxElement, ctxTypes, reportMode);\n case CommonSymbols.indexof: return this.resolveBuiltinIndexofType(node, ctxElement, ctxTypes, reportMode);\n case CommonSymbols.valueof: return this.resolveBuiltinValueofType(node, ctxElement, ctxTypes, reportMode);\n case CommonSymbols.returnof: return this.resolveBuiltinReturnTypeType(node, ctxElement, ctxTypes, reportMode);\n }\n }\n\n // Resolve normally\n let typeParameterNodes = (element).typeParameterNodes;\n let typeArguments: Type[] | null = null;\n if (typeParameterNodes) {\n typeArguments = this.resolveTypeArguments(\n typeParameterNodes,\n typeArgumentNodes,\n ctxElement,\n ctxTypes = makeMap(ctxTypes), // inherit\n node,\n reportMode\n );\n if (!typeArguments) return null;\n } else if (typeArgumentNodes && typeArgumentNodes.length) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n node.range, nameNode.identifier.text\n );\n }\n let type = this.resolveType(\n (element).typeNode,\n element,\n ctxTypes,\n reportMode\n );\n if (!type) return null;\n if (node.isNullable) {\n if (!type.is(TypeFlags.REFERENCE)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Basic_type_0_cannot_be_nullable,\n nameNode.range, nameNode.identifier.text\n );\n }\n } else {\n return type.asNullable();\n }\n }\n return type;\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n nameNode.range, nameNode.identifier.text\n );\n }\n return null;\n }\n\n /** Resolves a {@link FunctionTypeNode} to a concrete {@link Type}. */\n private resolveFunctionType(\n /** The type to resolve. */\n node: FunctionTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var explicitThisType = node.explicitThisType;\n var thisType: Type | null = null;\n if (explicitThisType) {\n thisType = this.resolveType(\n explicitThisType,\n ctxElement,\n ctxTypes,\n reportMode\n );\n if (!thisType) return null;\n }\n var parameterNodes = node.parameters;\n var numParameters = parameterNodes.length;\n var parameterTypes = new Array(numParameters);\n var parameterNames = new Array(numParameters);\n var requiredParameters = 0;\n var hasRest = false;\n for (let i = 0; i < numParameters; ++i) {\n let parameterNode = parameterNodes[i];\n switch (parameterNode.parameterKind) {\n case ParameterKind.DEFAULT: {\n requiredParameters = i + 1;\n break;\n }\n case ParameterKind.REST: {\n assert(i == numParameters);\n hasRest = true;\n break;\n }\n }\n let parameterTypeNode = parameterNode.type;\n if (isTypeOmitted(parameterTypeNode)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_expected,\n parameterTypeNode.range\n );\n }\n return null;\n }\n let parameterType = this.resolveType(\n parameterTypeNode,\n ctxElement,\n ctxTypes,\n reportMode\n );\n if (!parameterType) return null;\n parameterTypes[i] = parameterType;\n parameterNames[i] = parameterNode.name.text;\n }\n var returnTypeNode = node.returnType;\n var returnType: Type | null;\n if (isTypeOmitted(returnTypeNode)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_expected,\n returnTypeNode.range\n );\n }\n returnType = Type.void;\n } else {\n returnType = this.resolveType(\n returnTypeNode,\n ctxElement,\n ctxTypes,\n reportMode\n );\n if (!returnType) return null;\n }\n var signature = new Signature(this.program, parameterTypes, returnType, thisType);\n signature.parameterNames = parameterNames;\n signature.requiredParameters = requiredParameters;\n signature.hasRest = hasRest;\n return node.isNullable ? signature.type.asNullable() : signature.type;\n }\n\n private resolveBuiltinNativeType(\n /** The type to resolve. */\n node: NamedTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var typeArgumentNodes = node.typeArguments;\n if (!(typeArgumentNodes && typeArgumentNodes.length == 1)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n node.range, \"1\", (typeArgumentNodes ? typeArgumentNodes.length : 1).toString(10)\n );\n }\n return null;\n }\n var typeArgument = this.resolveType(typeArgumentNodes[0], ctxElement, ctxTypes, reportMode);\n if (!typeArgument) return null;\n switch (typeArgument.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: return Type.i32;\n case TypeKind.ISIZE: if (!this.program.options.isWasm64) return Type.i32;\n case TypeKind.I64: return Type.i64;\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: return Type.u32;\n case TypeKind.USIZE: if (!this.program.options.isWasm64) return Type.u32;\n case TypeKind.U64: return Type.u64;\n case TypeKind.F32: return Type.f32;\n case TypeKind.F64: return Type.f64;\n case TypeKind.V128: return Type.v128;\n case TypeKind.VOID: return Type.void;\n default: assert(false);\n }\n return null;\n }\n\n private resolveBuiltinIndexofType(\n /** The type to resolve. */\n node: NamedTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var typeArgumentNodes = node.typeArguments;\n if (!(typeArgumentNodes && typeArgumentNodes.length == 1)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n node.range, \"1\", (typeArgumentNodes ? typeArgumentNodes.length : 1).toString(10)\n );\n }\n return null;\n }\n var typeArgument = this.resolveType(typeArgumentNodes[0], ctxElement, ctxTypes, reportMode);\n if (!typeArgument) return null;\n var classReference = typeArgument.classReference;\n if (!classReference) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n typeArgumentNodes[0].range, typeArgument.toString()\n );\n }\n return null;\n }\n var overload = classReference.lookupOverload(OperatorKind.INDEXED_GET);\n if (overload) {\n if (overload.is(CommonFlags.STATIC)) {\n assert(overload.signature.parameterTypes.length == 2);\n return overload.signature.parameterTypes[1];\n } else {\n assert(overload.signature.parameterTypes.length == 1);\n return overload.signature.parameterTypes[0];\n }\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n typeArgumentNodes[0].range, typeArgument.toString()\n );\n }\n return null;\n }\n\n private resolveBuiltinValueofType(\n /** The type to resolve. */\n node: NamedTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var typeArgumentNodes = node.typeArguments;\n if (!(typeArgumentNodes && typeArgumentNodes.length == 1)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n node.range, \"1\", (typeArgumentNodes ? typeArgumentNodes.length : 1).toString(10)\n );\n }\n return null;\n }\n var typeArgument = this.resolveType(typeArgumentNodes[0], ctxElement, ctxTypes, reportMode);\n if (!typeArgument) return null;\n var classReference = typeArgument.classReference;\n if (!classReference) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n typeArgumentNodes[0].range, typeArgument.toString()\n );\n }\n return null;\n }\n\n var overload = classReference.lookupOverload(OperatorKind.INDEXED_GET);\n if (overload) return overload.signature.returnType;\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n typeArgumentNodes[0].range, typeArgument.toString()\n );\n }\n return null;\n }\n\n private resolveBuiltinReturnTypeType(\n /** The type to resolve. */\n node: NamedTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var typeArgumentNodes = node.typeArguments;\n if (!(typeArgumentNodes && typeArgumentNodes.length == 1)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n node.range, \"1\", (typeArgumentNodes ? typeArgumentNodes.length : 1).toString(10)\n );\n }\n return null;\n }\n var typeArgument = this.resolveType(typeArgumentNodes[0], ctxElement, ctxTypes, reportMode);\n if (!typeArgument) return null;\n var signatureReference = typeArgument.signatureReference;\n if (!signatureReference) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_has_no_call_signatures,\n typeArgumentNodes[0].range, typeArgument.toString()\n );\n }\n return null;\n }\n return signatureReference.returnType;\n }\n\n /** Resolves a type name to the program element it refers to. */\n resolveTypeName(\n /** The type name to resolve. */\n node: TypeName,\n /** Contextual element. */\n ctxElement: Element,\n /** How to proceed with eventualy diagnostics. */\n reportMode = ReportMode.REPORT\n ): Element | null {\n var element = ctxElement.lookup(node.identifier.text);\n if (!element) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n node.range, node.identifier.text\n );\n }\n return null;\n }\n var prev = node;\n var next = node.next;\n while (next) {\n if (!(element = element.lookupInSelf(next.identifier.text))) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n next.range, next.identifier.text, prev.identifier.text\n );\n }\n return null;\n }\n prev = next;\n next = next.next;\n }\n return element;\n }\n\n /** Resolves an array of type arguments to concrete types. */\n resolveTypeArguments(\n /** Type parameter nodes present. */\n typeParameters: TypeParameterNode[],\n /** Type argument nodes provided. */\n typeArgumentNodes: TypeNode[] | null,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map = makeMap(),\n /** Alternative report node in case of empty type arguments. */\n alternativeReportNode: Node | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type[] | null {\n var minParameterCount = 0;\n var maxParameterCount = 0;\n for (let i = 0, k = typeParameters.length; i < k; ++i) {\n if (!typeParameters[i].defaultType) ++minParameterCount;\n ++maxParameterCount;\n }\n var argumentCount = typeArgumentNodes ? typeArgumentNodes.length : 0;\n if (argumentCount < minParameterCount || argumentCount > maxParameterCount) {\n this.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n argumentCount\n ? Range.join(\n (typeArgumentNodes)[0].range,\n (typeArgumentNodes)[argumentCount - 1].range\n )\n : assert(alternativeReportNode).range,\n (argumentCount < minParameterCount ? minParameterCount : maxParameterCount).toString(10),\n argumentCount.toString(10)\n );\n return null;\n }\n var typeArguments = new Array(maxParameterCount);\n for (let i = 0; i < maxParameterCount; ++i) {\n let type = i < argumentCount\n ? this.resolveType( // reports\n (typeArgumentNodes)[i],\n ctxElement,\n ctxTypes,\n reportMode\n )\n : this.resolveType( // reports\n assert(typeParameters[i].defaultType),\n ctxElement,\n ctxTypes,\n reportMode\n );\n if (!type) return null;\n // TODO: check extendsType\n ctxTypes.set(typeParameters[i].name.text, type);\n typeArguments[i] = type;\n }\n return typeArguments;\n }\n\n // =================================================== Expressions ===================================================\n\n /** Resolves an expression to the program element it refers to. */\n resolveExpression(\n /** The expression to resolve. */\n node: Expression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n while (node.kind == NodeKind.PARENTHESIZED) { // simply skip\n node = (node).expression;\n }\n switch (node.kind) {\n case NodeKind.ASSERTION: {\n return this.resolveAssertionExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.UNARYPREFIX: {\n return this.resolveUnaryPrefixExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.UNARYPOSTFIX: {\n return this.resolveUnaryPostfixExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.BINARY: {\n return this.resolveBinaryExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.THIS: {\n return this.resolveThisExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.SUPER: {\n return this.resolveSuperExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.IDENTIFIER: {\n return this.resolveIdentifier(\n node,\n ctxFlow, ctxFlow.actualFunction, reportMode\n );\n }\n case NodeKind.LITERAL: {\n return this.resolveLiteralExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.PROPERTYACCESS: {\n return this.resolvePropertyAccessExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.ELEMENTACCESS: {\n return this.resolveElementAccessExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.CALL: {\n return this.resolveCallExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n // TODO: everything else\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves an identifier to the program element it refers to. */\n resolveIdentifier(\n /** The expression to resolve. */\n node: IdentifierExpression,\n /** Flow to search for scoped locals. */\n ctxFlow: Flow,\n /** Element to search. */\n ctxElement: Element = ctxFlow.actualFunction,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n var name = node.text;\n var element: Element | null;\n if (element = ctxFlow.lookup(name)) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return element;\n }\n if (element = ctxElement.lookup(name)) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return element;\n }\n if (element = this.program.lookupGlobal(name)) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return element;\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n node.range, name\n );\n }\n return null;\n }\n\n /** Resolves a lazily compiled global, i.e. a static class field or annotated `@lazy`. */\n private ensureResolvedLazyGlobal(global: Global, reportMode: ReportMode = ReportMode.REPORT): bool {\n if (global.is(CommonFlags.RESOLVED)) return true;\n var typeNode = global.typeNode;\n if (!typeNode) return false;\n var type = this.resolveType( // reports\n typeNode,\n global.parent,\n null,\n reportMode\n );\n if (!type) return false;\n global.setType(type); // also sets resolved\n return true;\n }\n\n /** Resolves a property access expression to the program element it refers to. */\n resolvePropertyAccessExpression(\n /** The expression to resolve. */\n node: PropertyAccessExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n var targetNode = node.expression;\n var target = this.resolveExpression(targetNode, ctxFlow, ctxType, reportMode); // reports\n if (!target) return null;\n var propertyName = node.property.text;\n\n // Resolve variable-likes to their class type first\n switch (target.kind) {\n case ElementKind.GLOBAL: if (!this.ensureResolvedLazyGlobal(target, reportMode)) return null;\n case ElementKind.LOCAL:\n case ElementKind.FIELD: {\n let type = (target).type; assert(type != Type.void);\n let classReference = type.classReference;\n if (!classReference) {\n let typeClasses = this.program.typeClasses;\n if (!type.is(TypeFlags.REFERENCE) && typeClasses.has(type.kind)) {\n classReference = typeClasses.get(type.kind)!;\n } else {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n node.property.range, propertyName, (target).type.toString()\n );\n return null;\n }\n }\n target = classReference;\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: { // static\n let getterInstance = this.resolveFunction( // reports\n assert((target).getterPrototype), // must have a getter\n null,\n makeMap(),\n reportMode\n );\n if (!getterInstance) return null;\n let classReference = getterInstance.signature.returnType.classReference;\n if (!classReference) {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n node.property.range, propertyName, getterInstance.signature.returnType.toString()\n );\n return null;\n }\n target = classReference;\n break;\n }\n case ElementKind.PROPERTY: { // instance\n let getterInstance = assert((target).getterInstance); // must have a getter\n let classReference = getterInstance.signature.returnType.classReference;\n if (!classReference) {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n node.property.range, propertyName, getterInstance.signature.returnType.toString()\n );\n return null;\n }\n target = classReference;\n break;\n }\n case ElementKind.CLASS: { // property access on element access?\n let elementExpression = this.currentElementExpression;\n if (elementExpression) {\n let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET);\n if (!indexedGet) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n elementExpression.range, (target).internalName\n );\n return null;\n }\n let arrayType = indexedGet.signature.returnType;\n let classReference = arrayType.classReference;\n if (!classReference) {\n let typeClasses = this.program.typeClasses;\n if (!arrayType.is(TypeFlags.REFERENCE) && typeClasses.has(arrayType.kind)) {\n classReference = typeClasses.get(arrayType.kind)!;\n } else {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n node.property.range, propertyName, arrayType.toString()\n );\n return null;\n }\n }\n target = classReference;\n }\n break;\n }\n case ElementKind.FUNCTION_PROTOTYPE: { // function Symbol() + type Symbol = _Symbol\n let shadowType = target.shadowType;\n if (shadowType) {\n if (!shadowType.is(CommonFlags.RESOLVED)) {\n let resolvedType = this.resolveType(shadowType.typeNode, shadowType.parent, null, reportMode);\n if (resolvedType) shadowType.setType(resolvedType);\n }\n let classReference = shadowType.type.classReference;\n if (classReference) target = classReference.prototype;\n break;\n }\n }\n }\n\n // Look up the member within\n switch (target.kind) {\n case ElementKind.CLASS_PROTOTYPE:\n case ElementKind.CLASS: {\n do {\n let members = target.members;\n if (members && members.has(propertyName)) {\n this.currentThisExpression = targetNode;\n this.currentElementExpression = null;\n return members.get(propertyName)!; // instance FIELD, static GLOBAL, FUNCTION_PROTOTYPE...\n }\n // traverse inherited static members on the base prototype if target is a class prototype\n if (target.kind == ElementKind.CLASS_PROTOTYPE) {\n if ((target).basePrototype) {\n target = (target).basePrototype;\n } else {\n break;\n }\n // traverse inherited instance members on the base class if target is a class instance\n } else if (target.kind == ElementKind.CLASS) {\n if ((target).base) {\n target = (target).base;\n } else {\n break;\n }\n } else {\n break;\n }\n } while (true);\n break;\n }\n default: { // enums or other namespace-like elements\n let members = target.members;\n if (members && members.has(propertyName)) {\n this.currentThisExpression = targetNode;\n this.currentElementExpression = null;\n return members.get(propertyName)!; // static ENUMVALUE, static GLOBAL, static FUNCTION_PROTOTYPE...\n }\n break;\n }\n }\n\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n node.property.range, propertyName, target.internalName\n );\n return null;\n }\n\n /** Resolves an element access expression to the program element it refers to. */\n resolveElementAccessExpression(\n /** The expression to resolve. */\n node: ElementAccessExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n var targetExpression = node.expression;\n var target = this.resolveExpression(targetExpression, ctxFlow, ctxType, reportMode); // reports\n if (!target) return null;\n switch (target.kind) {\n case ElementKind.GLOBAL: if (!this.ensureResolvedLazyGlobal(target, reportMode)) return null;\n case ElementKind.LOCAL:\n case ElementKind.FIELD: {\n let type = (target).type;\n if (target = type.classReference) {\n this.currentThisExpression = targetExpression;\n this.currentElementExpression = node.elementExpression;\n return target;\n }\n break;\n }\n case ElementKind.CLASS: {\n let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET);\n if (!indexedGet) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n node.range, (target).internalName\n );\n }\n return null;\n }\n let arrayType = indexedGet.signature.returnType;\n if (targetExpression.kind == NodeKind.ELEMENTACCESS) { // nested element access\n if (target = arrayType.classReference) {\n this.currentThisExpression = targetExpression;\n this.currentElementExpression = node.elementExpression;\n return target;\n }\n return null;\n }\n this.currentThisExpression = targetExpression;\n this.currentElementExpression = node.elementExpression;\n return target;\n }\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n targetExpression.range\n );\n }\n return null;\n }\n\n /** Determines the final type of an integer literal given the specified contextual type. */\n determineIntegerLiteralType(\n /** Integer literal value. */\n intValue: I64,\n /** Contextual type. */\n ctxType: Type\n ): Type {\n if (!ctxType.is(TypeFlags.REFERENCE)) {\n // compile to contextual type if matching\n switch (ctxType.kind) {\n case TypeKind.I8: {\n if (i64_is_i8(intValue)) return Type.i8;\n break;\n }\n case TypeKind.U8: {\n if (i64_is_u8(intValue)) return Type.u8;\n break;\n }\n case TypeKind.I16: {\n if (i64_is_i16(intValue)) return Type.i16;\n break;\n }\n case TypeKind.U16: {\n if (i64_is_u16(intValue)) return Type.u16;\n break;\n }\n case TypeKind.I32: {\n if (i64_is_i32(intValue)) return Type.i32;\n break;\n }\n case TypeKind.U32: {\n if (i64_is_u32(intValue)) return Type.u32;\n break;\n }\n case TypeKind.BOOL: {\n if (i64_is_bool(intValue)) return Type.bool;\n break;\n }\n case TypeKind.ISIZE: {\n if (!this.program.options.isWasm64) {\n if (i64_is_i32(intValue)) return Type.isize32;\n break;\n }\n return Type.isize64;\n }\n case TypeKind.USIZE: {\n if (!this.program.options.isWasm64) {\n if (i64_is_u32(intValue)) return Type.usize32;\n break;\n }\n return Type.usize64;\n }\n case TypeKind.I64: return Type.i64;\n case TypeKind.U64: return Type.u64;\n case TypeKind.F32: return Type.f32;\n case TypeKind.F64: return Type.f64;\n case TypeKind.VOID: break; // best fitting below\n default: assert(false);\n }\n }\n // otherwise compile to best fitting native type\n if (i64_is_i32(intValue)) return Type.i32;\n if (i64_is_u32(intValue)) return Type.u32;\n return Type.i64; // TODO: u64 if positive and larger than i64?\n }\n\n /** Resolves an assertion expression to the program element it refers to. */\n resolveAssertionExpression(\n /** The expression to resolve. */\n node: AssertionExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n if (node.assertionKind == AssertionKind.NONNULL) {\n return this.resolveExpression(\n node.expression,\n ctxFlow,\n ctxType,\n reportMode\n );\n }\n var type = this.resolveType(\n assert(node.toType), // must be set if not NONNULL\n ctxFlow.actualFunction,\n ctxFlow.contextualTypeArguments,\n reportMode\n );\n if (!type) return null;\n var element: Element | null = type.classReference;\n if (!element) {\n let signature = type.signatureReference;\n if (!signature) return null;\n element = signature.asFunctionTarget(this.program);\n }\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return element;\n }\n\n /** Resolves an unary prefix expression to the program element it refers to. */\n resolveUnaryPrefixExpression(\n /** The expression to resolve. */\n node: UnaryPrefixExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n var operand = node.operand;\n // TODO: operator overloads\n switch (node.operator) {\n case Token.MINUS: {\n // implicitly negate if an integer literal to distinguish between i32/u32/i64\n if (operand.kind == NodeKind.LITERAL && (operand).literalKind == LiteralKind.INTEGER) {\n let type = this.determineIntegerLiteralType(\n i64_sub(i64_zero, (operand).value),\n ctxType\n );\n let typeClasses = this.program.typeClasses;\n return typeClasses.has(type.kind) ? typeClasses.get(type.kind)! : null;\n }\n return this.resolveExpression(operand, ctxFlow, ctxType, reportMode);\n }\n case Token.PLUS:\n case Token.PLUS_PLUS:\n case Token.MINUS_MINUS: {\n return this.resolveExpression(node.operand, ctxFlow, ctxType, reportMode);\n }\n case Token.EXCLAMATION: {\n let typeClasses = this.program.typeClasses;\n assert(typeClasses.has(TypeKind.BOOL));\n return typeClasses.get(TypeKind.BOOL);\n }\n case Token.TILDE: {\n let resolvedOperand = this.resolveExpression(node.operand, ctxFlow, ctxType, reportMode);\n if (!resolvedOperand) return null;\n // TODO: matching integer type\n break;\n }\n default: assert(false);\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves an unary postfix expression to the program element it refers to. */\n resolveUnaryPostfixExpression(\n /** The expression to resolve. */\n node: UnaryPostfixExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n // TODO: operator overloads\n switch (node.operator) {\n case Token.PLUS_PLUS:\n case Token.MINUS_MINUS: {\n return this.resolveExpression(node.operand, ctxFlow, ctxType, reportMode);\n }\n default: assert(false);\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves a binary expression to the program element it refers to. */\n resolveBinaryExpression(\n /** The expression to resolve. */\n name: BinaryExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n // TODO\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n name.range\n );\n }\n return null;\n }\n\n /** Resolves a this expression to the program element it refers to. */\n resolveThisExpression(\n /** The expression to resolve. */\n node: ThisExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n if (ctxFlow.is(FlowFlags.INLINE_CONTEXT)) {\n let thisLocal = ctxFlow.lookupLocal(CommonSymbols.this_);\n if (thisLocal) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return thisLocal;\n }\n }\n var parent = ctxFlow.actualFunction.parent;\n if (parent) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return parent;\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode._this_cannot_be_referenced_in_current_location,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves a super expression to the program element it refers to. */\n resolveSuperExpression(\n /** The expression to resolve. */\n node: SuperExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n if (ctxFlow.is(FlowFlags.INLINE_CONTEXT)) {\n let superLocal = ctxFlow.lookupLocal(CommonSymbols.super_);\n if (superLocal) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return superLocal;\n }\n }\n var parent: Element | null = ctxFlow.actualFunction.parent;\n if (parent && parent.kind == ElementKind.CLASS && (parent = (parent).base)) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return parent;\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode._super_can_only_be_referenced_in_a_derived_class,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves a literal expression to the program element it refers to. */\n resolveLiteralExpression(\n /** The expression to resolve. */\n node: LiteralExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n switch (node.literalKind) {\n case LiteralKind.INTEGER: {\n this.currentThisExpression = node;\n this.currentElementExpression = null;\n let literalType = this.determineIntegerLiteralType(\n (node).value,\n ctxType\n );\n let typeClasses = this.program.typeClasses;\n return typeClasses.has(literalType.kind) ? typeClasses.get(literalType.kind)! : null;\n }\n case LiteralKind.FLOAT: {\n this.currentThisExpression = node;\n this.currentElementExpression = null;\n let literalType = ctxType == Type.f32 ? Type.f32 : Type.f64;\n let typeClasses = this.program.typeClasses;\n return typeClasses.has(literalType.kind) ? typeClasses.get(literalType.kind)! : null;\n }\n case LiteralKind.STRING: {\n this.currentThisExpression = node;\n this.currentElementExpression = null;\n return this.program.stringInstance;\n }\n // TODO\n // case LiteralKind.ARRAY:\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves a call expression to the program element it refers to. */\n resolveCallExpression(\n /** The expression to resolve. */\n node: CallExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.void,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n var targetExpression = node.expression;\n var target = this.resolveExpression( // reports\n targetExpression,\n ctxFlow,\n ctxType,\n reportMode\n );\n\n if (!target) return null;\n if (target.kind == ElementKind.FUNCTION_PROTOTYPE) {\n // `unchecked(expr: *): *` is special\n if (\n (target).internalName == BuiltinSymbols.unchecked &&\n node.arguments.length > 0\n ) {\n return this.resolveExpression(node.arguments[0], ctxFlow, ctxType, reportMode);\n }\n // otherwise resolve normally\n let instance = this.resolveFunctionInclTypeArguments(\n target,\n node.typeArguments,\n ctxFlow.actualFunction,\n makeMap(ctxFlow.contextualTypeArguments), // don't inherit\n node,\n reportMode\n );\n if (!instance) return null;\n let returnType = instance.signature.returnType;\n let classType = returnType.classReference;\n if (classType) {\n // reuse resolvedThisExpression (might be property access)\n // reuse resolvedElementExpression (might be element access)\n return classType;\n } else {\n let signature = returnType.signatureReference;\n if (signature) {\n let functionTarget = signature.asFunctionTarget(this.program);\n // reuse resolvedThisExpression (might be property access)\n // reuse resolvedElementExpression (might be element access)\n return functionTarget;\n } else {\n let typeClasses = this.program.typeClasses;\n if (!returnType.is(TypeFlags.REFERENCE) && typeClasses.has(returnType.kind)) {\n return typeClasses.get(returnType.kind);\n }\n }\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n targetExpression.range, target.internalName\n );\n }\n return null;\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n node.range\n );\n }\n return null;\n }\n\n // ==================================================== Elements =====================================================\n\n /** Resolves a function prototype using the specified concrete type arguments. */\n resolveFunction(\n /** The prototype of the function. */\n prototype: FunctionPrototype,\n /** Type arguments provided. */\n typeArguments: Type[] | null,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map = makeMap(),\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Function | null {\n var actualParent = prototype.parent.kind == ElementKind.PROPERTY_PROTOTYPE\n ? prototype.parent.parent\n : prototype.parent;\n var classInstance: Class | null = null; // if an instance method\n var instanceKey = typeArguments ? typesToString(typeArguments) : \"\";\n\n // Instance method prototypes are pre-bound to their concrete class as their parent\n if (prototype.is(CommonFlags.INSTANCE)) {\n assert(actualParent.kind == ElementKind.CLASS);\n classInstance = actualParent;\n\n // check if this exact concrete class and function combination is known already\n let resolvedInstance = prototype.getResolvedInstance(instanceKey);\n if (resolvedInstance) return resolvedInstance;\n\n // inherit class specific type arguments\n let classTypeArguments = classInstance.typeArguments;\n if (classTypeArguments) {\n let classTypeParameters = assert(classInstance.prototype.typeParameterNodes);\n let numClassTypeArguments = classTypeParameters.length;\n assert(numClassTypeArguments == classTypeParameters.length);\n for (let i = 0; i < numClassTypeArguments; ++i) {\n let classTypeParameterName = classTypeParameters[i].name.text;\n if (!ctxTypes.has(classTypeParameterName)) {\n ctxTypes.set(\n classTypeParameterName,\n classTypeArguments[i]\n );\n }\n }\n }\n } else {\n assert(actualParent.kind != ElementKind.CLASS); // must not be pre-bound\n let resolvedInstance = prototype.getResolvedInstance(instanceKey);\n if (resolvedInstance) return resolvedInstance;\n }\n\n // override whatever is contextual with actual function type arguments\n var signatureNode = prototype.functionTypeNode;\n var typeParameterNodes = prototype.typeParameterNodes;\n var numFunctionTypeArguments: i32;\n if (typeArguments && (numFunctionTypeArguments = typeArguments.length)) {\n assert(typeParameterNodes && numFunctionTypeArguments == typeParameterNodes.length);\n for (let i = 0; i < numFunctionTypeArguments; ++i) {\n ctxTypes.set(\n (typeParameterNodes)[i].name.text,\n typeArguments[i]\n );\n }\n } else {\n assert(!typeParameterNodes || typeParameterNodes.length == 0);\n }\n\n // resolve `this` type if applicable\n var thisType: Type | null = null;\n var explicitThisType = signatureNode.explicitThisType;\n if (explicitThisType) {\n thisType = this.resolveType(\n explicitThisType,\n prototype.parent, // relative to function\n ctxTypes,\n reportMode\n );\n if (!thisType) return null;\n ctxTypes.set(CommonSymbols.this_, thisType);\n } else if (classInstance) {\n thisType = classInstance.type;\n ctxTypes.set(CommonSymbols.this_, thisType);\n }\n\n // resolve parameter types\n var signatureParameters = signatureNode.parameters;\n var numSignatureParameters = signatureParameters.length;\n var parameterTypes = new Array(numSignatureParameters);\n var parameterNames = new Array(numSignatureParameters);\n var requiredParameters = 0;\n for (let i = 0; i < numSignatureParameters; ++i) {\n let parameterDeclaration = signatureParameters[i];\n if (parameterDeclaration.parameterKind == ParameterKind.DEFAULT) {\n requiredParameters = i + 1;\n }\n let typeNode = parameterDeclaration.type;\n if (isTypeOmitted(typeNode)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_expected,\n typeNode.range\n );\n }\n return null;\n }\n let parameterType = this.resolveType(\n typeNode,\n prototype.parent, // relative to function\n ctxTypes,\n reportMode\n );\n if (!parameterType) return null;\n parameterTypes[i] = parameterType;\n parameterNames[i] = parameterDeclaration.name.text;\n }\n\n // resolve return type\n var returnType: Type;\n if (prototype.is(CommonFlags.SET)) {\n returnType = Type.void; // not annotated\n } else if (prototype.is(CommonFlags.CONSTRUCTOR)) {\n returnType = assert(classInstance).type; // not annotated\n } else {\n let typeNode = signatureNode.returnType;\n if (isTypeOmitted(typeNode)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_expected,\n typeNode.range\n );\n }\n return null;\n }\n let type = this.resolveType(\n typeNode,\n prototype.parent, // relative to function\n ctxTypes,\n reportMode\n );\n if (!type) return null;\n returnType = type;\n }\n\n var signature = new Signature(this.program, parameterTypes, returnType, thisType);\n signature.parameterNames = parameterNames;\n signature.requiredParameters = requiredParameters;\n\n var nameInclTypeParameters = prototype.name;\n if (instanceKey.length) nameInclTypeParameters += \"<\" + instanceKey + \">\";\n var instance = new Function(\n nameInclTypeParameters,\n prototype,\n signature,\n ctxTypes\n );\n prototype.setResolvedInstance(instanceKey, instance);\n return instance;\n }\n\n /** Resolves a function prototypeby first resolving the specified type arguments. */\n resolveFunctionInclTypeArguments(\n /** The prototype of the function. */\n prototype: FunctionPrototype,\n /** Type arguments provided to be resolved. */\n typeArgumentNodes: TypeNode[] | null,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map,\n /** The node to use when reporting intermediate errors. */\n reportNode: Node,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Function | null {\n var actualParent = prototype.parent.kind == ElementKind.PROPERTY_PROTOTYPE\n ? prototype.parent.parent\n : prototype.parent;\n var resolvedTypeArguments: Type[] | null = null;\n\n // Resolve type arguments if generic\n if (prototype.is(CommonFlags.GENERIC)) {\n\n // If this is an instance method, first apply the class's type arguments\n if (prototype.is(CommonFlags.INSTANCE)) {\n assert(actualParent.kind == ElementKind.CLASS);\n let classTypeArguments = (actualParent).typeArguments;\n if (classTypeArguments) {\n let typeParameterNodes = assert((actualParent).prototype.typeParameterNodes);\n let numClassTypeArguments = classTypeArguments.length;\n assert(numClassTypeArguments == typeParameterNodes.length);\n for (let i = 0; i < numClassTypeArguments; ++i) {\n ctxTypes.set(\n typeParameterNodes[i].name.text,\n classTypeArguments[i]\n );\n }\n }\n }\n\n resolvedTypeArguments = this.resolveTypeArguments( // reports\n assert(prototype.typeParameterNodes),\n typeArgumentNodes,\n ctxElement,\n ctxTypes,\n reportNode,\n reportMode\n );\n if (!resolvedTypeArguments) return null;\n\n // Otherwise make sure that no type arguments have been specified\n } else {\n if (typeArgumentNodes !== null && typeArgumentNodes.length) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n reportNode.range, prototype.internalName\n );\n }\n return null;\n }\n }\n\n // Continue with concrete types\n return this.resolveFunction(\n prototype,\n resolvedTypeArguments,\n ctxTypes,\n reportMode\n );\n }\n\n /** Resolves a class prototype using the specified concrete type arguments. */\n resolveClass(\n /** The prototype of the class. */\n prototype: ClassPrototype,\n /** Type arguments provided. */\n typeArguments: Type[] | null,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map = makeMap(),\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Class | null {\n var instanceKey = typeArguments ? typesToString(typeArguments) : \"\";\n\n // Check if this exact instance has already been resolved\n var instance = prototype.getResolvedInstance(instanceKey);\n if (instance) return instance;\n\n // Insert contextual type arguments for this operation. Internally, this method is always\n // called with matching type parameter / argument counts.\n if (typeArguments) {\n let typeParameterNodes = assert(prototype.typeParameterNodes);\n let numTypeParameters = typeParameterNodes.length;\n let numTypeArguments = typeArguments.length;\n assert(numTypeArguments == numTypeParameters);\n for (let i = 0; i < numTypeArguments; ++i) {\n ctxTypes.set(typeParameterNodes[i].name.text, typeArguments[i]);\n }\n } else {\n let typeParameterNodes = prototype.typeParameterNodes;\n assert(!(typeParameterNodes && typeParameterNodes.length));\n }\n\n // Resolve base class if applicable\n var basePrototype = prototype.basePrototype;\n var baseClass: Class | null = null;\n if (basePrototype) {\n let extendsNode = assert(prototype.extendsNode); // must be present if it has a base prototype\n baseClass = this.resolveClassInclTypeArguments(\n basePrototype,\n extendsNode.typeArguments,\n prototype.parent, // relative to derived class\n makeMap(ctxTypes), // don't inherit\n extendsNode,\n reportMode\n );\n if (!baseClass) return null;\n }\n\n // Construct the instance and remember that it has been resolved already\n var nameInclTypeParamters = prototype.name;\n if (instanceKey.length) nameInclTypeParamters += \"<\" + instanceKey + \">\";\n instance = new Class(nameInclTypeParamters, prototype, typeArguments, baseClass);\n instance.contextualTypeArguments = ctxTypes;\n prototype.setResolvedInstance(instanceKey, instance);\n\n // Inherit base class members and set up the initial memory offset for own fields\n var memoryOffset: u32 = 0;\n if (baseClass) {\n let baseMembers = baseClass.members;\n if (baseMembers) {\n let instanceMembers = instance.members;\n if (!instanceMembers) instance.members = instanceMembers = new Map();\n for (let [baseMemberName, baseMember] of baseMembers) {\n instanceMembers.set(baseMemberName, baseMember);\n }\n }\n memoryOffset = baseClass.currentMemoryOffset;\n }\n\n // Resolve instance members\n var instanceMemberPrototypes = prototype.instanceMembers;\n if (instanceMemberPrototypes) {\n for (let member of instanceMemberPrototypes.values()) {\n switch (member.kind) {\n\n // Lay out fields in advance\n case ElementKind.FIELD_PROTOTYPE: {\n let instanceMembers = instance.members;\n if (!instanceMembers) instance.members = instanceMembers = new Map();\n else if (instanceMembers.has(member.name)) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n (member).identifierNode.range,\n member.name\n );\n break;\n }\n let fieldTypeNode = (member).typeNode;\n let fieldType: Type | null = null;\n // TODO: handle duplicate non-private fields specifically?\n if (!fieldTypeNode) {\n if (baseClass) {\n let baseMembers = baseClass.members;\n if (baseMembers && baseMembers.has((member).name)) {\n let baseField = baseMembers.get((member).name)!;\n if (!baseField.is(CommonFlags.PRIVATE)) {\n assert(baseField.kind == ElementKind.FIELD);\n fieldType = (baseField).type;\n }\n }\n }\n if (!fieldType) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_expected,\n (member).identifierNode.range.atEnd\n );\n }\n }\n } else {\n fieldType = this.resolveType(\n fieldTypeNode,\n prototype.parent, // relative to class\n instance.contextualTypeArguments,\n reportMode\n );\n }\n if (!fieldType) break; // did report above\n let fieldInstance = new Field(member, instance, fieldType);\n assert(isPowerOf2(fieldType.byteSize));\n let mask = fieldType.byteSize - 1;\n if (memoryOffset & mask) memoryOffset = (memoryOffset | mask) + 1;\n fieldInstance.memoryOffset = memoryOffset;\n memoryOffset += fieldType.byteSize;\n instance.add(member.name, fieldInstance); // reports\n break;\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n let boundPrototype = (member).toBound(instance);\n instance.add(boundPrototype.name, boundPrototype); // reports\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n let propertyInstance = new Property(member, instance);\n let getterPrototype = (member).getterPrototype;\n if (getterPrototype) {\n let getterInstance = this.resolveFunction(\n getterPrototype.toBound(instance),\n null,\n makeMap(instance.contextualTypeArguments),\n reportMode\n );\n if (getterInstance) {\n propertyInstance.getterInstance = getterInstance;\n propertyInstance.setType(getterInstance.signature.returnType);\n }\n }\n let setterPrototype = (member).setterPrototype;\n if (setterPrototype) {\n let setterInstance = this.resolveFunction(\n setterPrototype.toBound(instance),\n null,\n makeMap(instance.contextualTypeArguments),\n reportMode\n );\n if (setterInstance) {\n propertyInstance.setterInstance = setterInstance;\n if (!propertyInstance.is(CommonFlags.RESOLVED)) {\n assert(setterInstance.signature.parameterTypes.length == 1);\n propertyInstance.setType(setterInstance.signature.parameterTypes[0]);\n }\n }\n }\n instance.add(propertyInstance.name, propertyInstance); // reports\n break;\n }\n default: assert(false);\n }\n }\n }\n\n // Finalize memory offset\n instance.currentMemoryOffset = memoryOffset;\n\n // Link _own_ constructor if present\n {\n let ctorPrototype = instance.lookupInSelf(CommonSymbols.constructor);\n if (ctorPrototype && ctorPrototype.parent === instance) {\n assert(ctorPrototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n let ctorInstance = this.resolveFunction(\n ctorPrototype,\n null,\n instance.contextualTypeArguments,\n reportMode\n );\n if (ctorInstance) instance.constructorInstance = ctorInstance;\n }\n }\n\n // Fully resolve operator overloads (don't have type parameters on their own)\n for (let [kind, overloadPrototype] of prototype.overloadPrototypes) {\n assert(kind != OperatorKind.INVALID);\n let operatorInstance: Function | null;\n if (overloadPrototype.is(CommonFlags.INSTANCE)) {\n let boundPrototype = overloadPrototype.toBound(instance);\n operatorInstance = this.resolveFunction(\n boundPrototype,\n null,\n makeMap(),\n reportMode\n );\n } else {\n operatorInstance = this.resolveFunction(\n overloadPrototype,\n null,\n makeMap(),\n reportMode\n );\n }\n if (!operatorInstance) continue;\n let overloads = instance.overloads;\n if (!overloads) instance.overloads = overloads = new Map();\n overloads.set(kind, operatorInstance);\n }\n return instance;\n }\n\n /** Resolves a class prototype by first resolving the specified type arguments. */\n resolveClassInclTypeArguments(\n /** The prototype of the class. */\n prototype: ClassPrototype,\n /** Type arguments provided to be resolved. */\n typeArgumentNodes: TypeNode[] | null,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map,\n /** The node to use when reporting intermediate errors. */\n reportNode: Node,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Class | null {\n var resolvedTypeArguments: Type[] | null = null;\n\n // Resolve type arguments if generic\n if (prototype.is(CommonFlags.GENERIC)) {\n resolvedTypeArguments = this.resolveTypeArguments( // reports\n assert(prototype.typeParameterNodes), // must be present if generic\n typeArgumentNodes,\n ctxElement,\n ctxTypes,\n reportNode,\n reportMode\n );\n if (!resolvedTypeArguments) return null;\n\n // Otherwise make sure that no type arguments have been specified\n } else {\n if (typeArgumentNodes !== null && typeArgumentNodes.length) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n reportNode.range, prototype.internalName\n );\n }\n return null;\n }\n }\n\n // Continue with concrete types\n return this.resolveClass(\n prototype,\n resolvedTypeArguments,\n ctxTypes,\n reportMode\n );\n }\n}\n","/**\n * A control flow analyzer.\n * @module flow\n *//***/\n\nimport {\n Type,\n TypeFlags,\n TypeKind\n} from \"./types\";\n\nimport {\n Local,\n Function,\n Element,\n ElementKind,\n Global\n} from \"./program\";\n\nimport {\n NativeType,\n ExpressionId,\n ExpressionRef,\n\n getExpressionId,\n getLocalGetIndex,\n isLocalTee,\n getLocalSetValue,\n getGlobalGetName,\n getBinaryOp,\n BinaryOp,\n getBinaryLeft,\n getConstValueI32,\n getBinaryRight,\n getUnaryOp,\n UnaryOp,\n getExpressionType,\n getConstValueI64Low,\n getConstValueF32,\n getConstValueF64,\n getLoadBytes,\n isLoadSigned,\n getBlockName,\n getBlockChildCount,\n getBlockChild,\n getIfTrue,\n getIfFalse,\n getSelectThen,\n getSelectElse,\n getCallTarget,\n getLocalSetIndex,\n getIfCondition,\n getConstValueI64High,\n getUnaryValue,\n getCallOperand,\n traverse\n} from \"./module\";\n\nimport {\n CommonFlags\n} from \"./common\";\n\nimport {\n DiagnosticCode\n} from \"./diagnostics\";\n\nimport {\n Node\n} from \"./ast\";\n\n/** Control flow flags indicating specific conditions. */\nexport const enum FlowFlags {\n /** No specific conditions. */\n NONE = 0,\n\n // categorical\n\n /** This flow returns. */\n RETURNS = 1 << 0,\n /** This flow returns a wrapped value. */\n RETURNS_WRAPPED = 1 << 1,\n /** This flow returns a non-null value. */\n RETURNS_NONNULL = 1 << 2,\n /** This flow throws. */\n THROWS = 1 << 3,\n /** This flow breaks. */\n BREAKS = 1 << 4,\n /** This flow continues. */\n CONTINUES = 1 << 5,\n /** This flow allocates. Constructors only. */\n ALLOCATES = 1 << 6,\n /** This flow calls super. Constructors only. */\n CALLS_SUPER = 1 << 7,\n /** This flow terminates (returns, throws or continues). */\n TERMINATES = 1 << 8,\n\n // conditional\n\n /** This flow conditionally returns in a child flow. */\n CONDITIONALLY_RETURNS = 1 << 9,\n /** This flow conditionally throws in a child flow. */\n CONDITIONALLY_THROWS = 1 << 10,\n /** This flow conditionally terminates in a child flow. */\n CONDITIONALLY_TERMINATES = 1 << 11,\n /** This flow conditionally breaks in a child flow. */\n CONDITIONALLY_BREAKS = 1 << 12,\n /** This flow conditionally continues in a child flow. */\n CONDITIONALLY_CONTINUES = 1 << 13,\n /** This flow conditionally allocates in a child flow. Constructors only. */\n CONDITIONALLY_ALLOCATES = 1 << 14,\n\n // special\n\n /** This is an inlining flow. */\n INLINE_CONTEXT = 1 << 15,\n /** This is a flow with explicitly disabled bounds checking. */\n UNCHECKED_CONTEXT = 1 << 16,\n\n // masks\n\n /** Any categorical flag. */\n ANY_CATEGORICAL = FlowFlags.RETURNS\n | FlowFlags.RETURNS_WRAPPED\n | FlowFlags.RETURNS_NONNULL\n | FlowFlags.THROWS\n | FlowFlags.BREAKS\n | FlowFlags.CONTINUES\n | FlowFlags.ALLOCATES\n | FlowFlags.CALLS_SUPER\n | FlowFlags.TERMINATES,\n\n /** Any conditional flag. */\n ANY_CONDITIONAL = FlowFlags.CONDITIONALLY_RETURNS\n | FlowFlags.CONDITIONALLY_THROWS\n | FlowFlags.CONDITIONALLY_BREAKS\n | FlowFlags.CONDITIONALLY_CONTINUES\n | FlowFlags.CONDITIONALLY_ALLOCATES\n}\n\n/** Flags indicating the current state of a local. */\nexport enum LocalFlags {\n /** No specific conditions. */\n NONE = 0,\n\n /** Local is constant. */\n CONSTANT = 1 << 0,\n /** Local is properly wrapped. Relevant for small integers. */\n WRAPPED = 1 << 1,\n /** Local is non-null. */\n NONNULL = 1 << 2,\n /** Local is read from. */\n READFROM = 1 << 3,\n /** Local is written to. */\n WRITTENTO = 1 << 4,\n /** Local is retained. */\n RETAINED = 1 << 5,\n\n /** Local is conditionally read from. */\n CONDITIONALLY_READFROM = 1 << 6,\n /** Local is conditionally written to. */\n CONDITIONALLY_WRITTENTO = 1 << 7,\n /** Local must be conditionally retained. */\n CONDITIONALLY_RETAINED = 1 << 8,\n\n /** Any categorical flag. */\n ANY_CATEGORICAL = CONSTANT\n | WRAPPED\n | NONNULL\n | READFROM\n | WRITTENTO\n | RETAINED,\n\n /** Any conditional flag. */\n ANY_CONDITIONAL = RETAINED\n | CONDITIONALLY_READFROM\n | CONDITIONALLY_WRITTENTO\n | CONDITIONALLY_RETAINED,\n\n /** Any retained flag. */\n ANY_RETAINED = RETAINED\n | CONDITIONALLY_RETAINED\n}\nexport namespace LocalFlags {\n export function join(left: LocalFlags, right: LocalFlags): LocalFlags {\n return ((left & LocalFlags.ANY_CATEGORICAL) & (right & LocalFlags.ANY_CATEGORICAL))\n | (left & LocalFlags.ANY_CONDITIONAL) | (right & LocalFlags.ANY_CONDITIONAL);\n }\n}\n\n/** Flags indicating the current state of a field. */\nexport enum FieldFlags {\n /** No specific conditions. */\n NONE = 0,\n\n /** Field is initialized. Relevant in constructors. */\n INITIALIZED = 1 << 0,\n /** Field is conditionally initialized. Relevant in constructors. */\n CONDITIONALLY_INITIALIZED = 1 << 1,\n\n /** Any categorical flag. */\n ANY_CATEGORICAL = INITIALIZED,\n\n /** Any conditional flag. */\n ANY_CONDITIONAL = CONDITIONALLY_INITIALIZED\n}\nexport namespace FieldFlags {\n export function join(left: FieldFlags, right: FieldFlags): FieldFlags {\n return ((left & FieldFlags.ANY_CATEGORICAL) & (right & FieldFlags.ANY_CATEGORICAL))\n | (left & FieldFlags.ANY_CONDITIONAL) | (right & FieldFlags.ANY_CONDITIONAL);\n }\n}\n\n/** A control flow evaluator. */\nexport class Flow {\n\n /** Parent flow. */\n parent: Flow | null;\n /** Flow flags indicating specific conditions. */\n flags: FlowFlags;\n /** Function this flow belongs to. */\n parentFunction: Function;\n /** The label we break to when encountering a continue statement. */\n continueLabel: string | null;\n /** The label we break to when encountering a break statement. */\n breakLabel: string | null;\n /** The current return type. */\n returnType: Type;\n /** The current contextual type arguments. */\n contextualTypeArguments: Map | null;\n /** Scoped local variables. */\n scopedLocals: Map | null = null;\n /** Local flags. */\n localFlags: LocalFlags[];\n /** Field flags. Relevant in constructors. */\n fieldFlags: Map | null = null;\n /** Function being inlined, when inlining. */\n inlineFunction: Function | null;\n /** The label we break to when encountering a return statement, when inlining. */\n inlineReturnLabel: string | null;\n\n /** Creates the parent flow of the specified function. */\n static create(parentFunction: Function): Flow {\n var flow = new Flow();\n flow.parent = null;\n flow.flags = FlowFlags.NONE;\n flow.parentFunction = parentFunction;\n flow.continueLabel = null;\n flow.breakLabel = null;\n flow.returnType = parentFunction.signature.returnType;\n flow.contextualTypeArguments = parentFunction.contextualTypeArguments;\n flow.localFlags = [];\n flow.inlineFunction = null;\n flow.inlineReturnLabel = null;\n return flow;\n }\n\n /** Creates an inline flow within `parentFunction`. */\n static createInline(parentFunction: Function, inlineFunction: Function): Flow {\n var flow = Flow.create(parentFunction);\n flow.set(FlowFlags.INLINE_CONTEXT);\n flow.inlineFunction = inlineFunction;\n flow.inlineReturnLabel = inlineFunction.internalName + \"|inlined.\" + (inlineFunction.nextInlineId++).toString(10);\n flow.returnType = inlineFunction.signature.returnType;\n flow.contextualTypeArguments = inlineFunction.contextualTypeArguments;\n return flow;\n }\n\n private constructor() { }\n\n /** Gets the actual function being compiled, The inlined function when inlining, otherwise the parent function. */\n get actualFunction(): Function {\n return this.inlineFunction || this.parentFunction;\n }\n\n /** Tests if this flow has the specified flag or flags. */\n is(flag: FlowFlags): bool { return (this.flags & flag) == flag; }\n /** Tests if this flow has one of the specified flags. */\n isAny(flag: FlowFlags): bool { return (this.flags & flag) != 0; }\n /** Sets the specified flag or flags. */\n set(flag: FlowFlags): void { this.flags |= flag; }\n /** Unsets the specified flag or flags. */\n unset(flag: FlowFlags): void { this.flags &= ~flag; }\n\n /** Forks this flow to a child flow. */\n fork(): Flow {\n var branch = new Flow();\n branch.parent = this;\n branch.flags = this.flags;\n branch.parentFunction = this.parentFunction;\n branch.continueLabel = this.continueLabel;\n branch.breakLabel = this.breakLabel;\n branch.returnType = this.returnType;\n branch.contextualTypeArguments = this.contextualTypeArguments;\n branch.localFlags = this.localFlags.slice();\n branch.inlineFunction = this.inlineFunction;\n branch.inlineReturnLabel = this.inlineReturnLabel;\n return branch;\n }\n\n /** Gets a free temporary local of the specified type. */\n getTempLocal(type: Type, except: Set | null = null): Local {\n var parentFunction = this.parentFunction;\n var temps: Local[] | null;\n switch (type.toNativeType()) {\n case NativeType.I32: { temps = parentFunction.tempI32s; break; }\n case NativeType.I64: { temps = parentFunction.tempI64s; break; }\n case NativeType.F32: { temps = parentFunction.tempF32s; break; }\n case NativeType.F64: { temps = parentFunction.tempF64s; break; }\n case NativeType.V128: { temps = parentFunction.tempV128s; break; }\n default: throw new Error(\"concrete type expected\");\n }\n var local: Local;\n if (except) {\n if (temps && temps.length) {\n for (let i = 0, k = temps.length; i < k; ++i) {\n if (!except.has(temps[i].index)) {\n local = temps[i];\n let k = temps.length - 1;\n while (i < k) unchecked(temps[i] = temps[i++ + 1]);\n temps.length = k;\n local.type = type;\n local.flags = CommonFlags.NONE;\n this.unsetLocalFlag(local.index, ~0);\n return local;\n }\n }\n }\n local = parentFunction.addLocal(type);\n } else {\n if (temps && temps.length) {\n local = temps.pop();\n local.type = type;\n local.flags = CommonFlags.NONE;\n } else {\n local = parentFunction.addLocal(type);\n }\n }\n this.unsetLocalFlag(local.index, ~0);\n return local;\n }\n\n /** Gets a local that sticks around until this flow is exited, and then released. */\n getAutoreleaseLocal(type: Type, except: Set | null = null): Local {\n var local = this.getTempLocal(type, except);\n local.set(CommonFlags.SCOPED);\n var scopedLocals = this.scopedLocals;\n if (!scopedLocals) this.scopedLocals = scopedLocals = new Map();\n scopedLocals.set(\"~auto\" + (this.parentFunction.nextAutoreleaseId++), local);\n this.setLocalFlag(local.index, LocalFlags.RETAINED);\n return local;\n }\n\n /** Frees the temporary local for reuse. */\n freeTempLocal(local: Local): void {\n if (local.is(CommonFlags.INLINED)) return;\n assert(local.index >= 0);\n var parentFunction = this.parentFunction;\n var temps: Local[];\n assert(local.type != null); // internal error\n switch ((local.type).toNativeType()) {\n case NativeType.I32: {\n temps = parentFunction.tempI32s || (parentFunction.tempI32s = []);\n break;\n }\n case NativeType.I64: {\n temps = parentFunction.tempI64s || (parentFunction.tempI64s = []);\n break;\n }\n case NativeType.F32: {\n temps = parentFunction.tempF32s || (parentFunction.tempF32s = []);\n break;\n }\n case NativeType.F64: {\n temps = parentFunction.tempF64s || (parentFunction.tempF64s = []);\n break;\n }\n case NativeType.V128: {\n temps = parentFunction.tempV128s || (parentFunction.tempV128s = []);\n break;\n }\n default: throw new Error(\"concrete type expected\");\n }\n assert(local.index >= 0);\n temps.push(local);\n }\n\n /** Gets and immediately frees a temporary local of the specified type. */\n getAndFreeTempLocal(type: Type, except: Set | null = null): Local {\n var local = this.getTempLocal(type, except);\n this.freeTempLocal(local);\n return local;\n }\n\n /** Gets the scoped local of the specified name. */\n getScopedLocal(name: string): Local | null {\n var scopedLocals = this.scopedLocals;\n if (scopedLocals && scopedLocals.has(name)) return scopedLocals.get(name);\n return null;\n }\n\n /** Adds a new scoped local of the specified name. */\n addScopedLocal(name: string, type: Type, except: Set | null = null): Local {\n var scopedLocal = this.getTempLocal(type, except);\n var scopedLocals = this.scopedLocals;\n if (!scopedLocals) this.scopedLocals = scopedLocals = new Map();\n else assert(!scopedLocals.has(name));\n scopedLocal.set(CommonFlags.SCOPED);\n scopedLocals.set(name, scopedLocal);\n return scopedLocal;\n }\n\n /** Adds a new scoped alias for the specified local. For example `super` aliased to the `this` local. */\n addScopedAlias(name: string, type: Type, index: i32, reportNode: Node | null = null): Local {\n if (!this.scopedLocals) this.scopedLocals = new Map();\n else {\n let existingLocal = this.scopedLocals.get(name);\n if (existingLocal) {\n if (reportNode) {\n this.parentFunction.program.error(\n DiagnosticCode.Duplicate_identifier_0,\n reportNode.range\n );\n }\n return existingLocal;\n }\n }\n assert(index < this.parentFunction.localsByIndex.length);\n var scopedAlias = new Local(name, index, type, this.parentFunction);\n // not flagged as SCOPED as it must not be free'd when the flow is finalized\n this.scopedLocals.set(name, scopedAlias);\n return scopedAlias;\n }\n\n /** Frees this flow's scoped variables and returns its parent flow. */\n freeScopedLocals(): void {\n if (this.scopedLocals) {\n for (let scopedLocal of this.scopedLocals.values()) {\n if (scopedLocal.is(CommonFlags.SCOPED)) { // otherwise an alias\n this.freeTempLocal(scopedLocal);\n }\n }\n this.scopedLocals = null;\n }\n }\n\n /** Looks up the local of the specified name in the current scope. */\n lookupLocal(name: string): Local | null {\n var current: Flow | null = this;\n var scope: Map | null;\n do if ((scope = current.scopedLocals) && (scope.has(name))) return scope.get(name);\n while (current = current.parent);\n return this.parentFunction.localsByName.get(name);\n }\n\n /** Looks up the element with the specified name relative to the scope of this flow. */\n lookup(name: string): Element | null {\n var element = this.lookupLocal(name);\n if (element) return element;\n return this.actualFunction.lookup(name);\n }\n\n /** Tests if the local at the specified index has the specified flag or flags. */\n isLocalFlag(index: i32, flag: LocalFlags, defaultIfInlined: bool = true): bool {\n if (index < 0) return defaultIfInlined;\n var localFlags = this.localFlags;\n return index < localFlags.length && (unchecked(this.localFlags[index]) & flag) == flag;\n }\n\n /** Tests if the local at the specified index has any of the specified flags. */\n isAnyLocalFlag(index: i32, flag: LocalFlags, defaultIfInlined: bool = true): bool {\n if (index < 0) return defaultIfInlined;\n var localFlags = this.localFlags;\n return index < localFlags.length && (unchecked(this.localFlags[index]) & flag) != 0;\n }\n\n /** Sets the specified flag or flags on the local at the specified index. */\n setLocalFlag(index: i32, flag: LocalFlags): void {\n if (index < 0) return;\n var localFlags = this.localFlags;\n var flags = index < localFlags.length ? unchecked(localFlags[index]) : 0;\n this.localFlags[index] = flags | flag;\n }\n\n /** Unsets the specified flag or flags on the local at the specified index. */\n unsetLocalFlag(index: i32, flag: LocalFlags): void {\n if (index < 0) return;\n var localFlags = this.localFlags;\n var flags = index < localFlags.length ? unchecked(localFlags[index]) : 0;\n this.localFlags[index] = flags & ~flag;\n }\n\n /** Pushes a new break label to the stack, for example when entering a loop that one can `break` from. */\n pushBreakLabel(): string {\n var parentFunction = this.parentFunction;\n var id = parentFunction.nextBreakId++;\n var stack = parentFunction.breakStack;\n if (!stack) parentFunction.breakStack = [ id ];\n else stack.push(id);\n return parentFunction.breakLabel = id.toString(10);\n }\n\n /** Pops the most recent break label from the stack. */\n popBreakLabel(): void {\n var parentFunction = this.parentFunction;\n var stack = assert(parentFunction.breakStack);\n var length = assert(stack.length);\n stack.pop();\n if (length > 1) {\n parentFunction.breakLabel = stack[length - 2].toString(10);\n } else {\n parentFunction.breakLabel = null;\n parentFunction.breakStack = null;\n }\n }\n\n /** Inherits flags and local wrap states from the specified flow (e.g. blocks). */\n inherit(other: Flow): void {\n this.flags |= other.flags & (FlowFlags.ANY_CATEGORICAL | FlowFlags.ANY_CONDITIONAL);\n this.localFlags = other.localFlags; // no need to slice because other flow is finished\n }\n\n /** Inherits categorical flags as conditional flags from the specified flow (e.g. then without else). */\n inheritConditional(other: Flow): void {\n if (other.is(FlowFlags.RETURNS)) {\n this.set(FlowFlags.CONDITIONALLY_RETURNS);\n }\n if (other.is(FlowFlags.THROWS)) {\n this.set(FlowFlags.CONDITIONALLY_THROWS);\n }\n if (other.is(FlowFlags.BREAKS) && other.breakLabel == this.breakLabel) {\n this.set(FlowFlags.CONDITIONALLY_BREAKS);\n }\n if (other.is(FlowFlags.CONTINUES) && other.continueLabel == this.continueLabel) {\n this.set(FlowFlags.CONDITIONALLY_CONTINUES);\n }\n if (other.is(FlowFlags.ALLOCATES)) {\n this.set(FlowFlags.CONDITIONALLY_ALLOCATES);\n }\n var localFlags = other.localFlags;\n for (let i = 0, k = localFlags.length; i < k; ++i) {\n let flags = localFlags[i];\n if (flags & LocalFlags.RETAINED) this.setLocalFlag(i, LocalFlags.CONDITIONALLY_RETAINED);\n if (flags & LocalFlags.READFROM) this.setLocalFlag(i, LocalFlags.CONDITIONALLY_READFROM);\n if (flags & LocalFlags.WRITTENTO) this.setLocalFlag(i, LocalFlags.CONDITIONALLY_WRITTENTO);\n }\n }\n\n /** Inherits mutual flags and local wrap states from the specified flows (e.g. then with else). */\n inheritMutual(left: Flow, right: Flow): void {\n // categorical flags set in both arms\n this.set(left.flags & right.flags & FlowFlags.ANY_CATEGORICAL);\n\n // conditional flags set in any arm\n this.set(left.flags & FlowFlags.ANY_CONDITIONAL);\n this.set(right.flags & FlowFlags.ANY_CONDITIONAL);\n\n // categorical flags in either arm as conditional\n this.inheritConditional(left);\n this.inheritConditional(right);\n\n // categorical local flags set in both arms / conditional local flags set in at least one arm\n var leftLocalFlags = left.localFlags;\n var numLeftLocalFlags = leftLocalFlags.length;\n var rightLocalFlags = right.localFlags;\n var numRightLocalFlags = rightLocalFlags.length;\n var combinedFlags = new Array(max(numLeftLocalFlags, numRightLocalFlags));\n for (let i = 0; i < numLeftLocalFlags; ++i) {\n combinedFlags[i] = LocalFlags.join(\n unchecked(leftLocalFlags[i]),\n i < numRightLocalFlags\n ? unchecked(rightLocalFlags[i])\n : 0\n );\n }\n for (let i = numLeftLocalFlags; i < numRightLocalFlags; ++i) {\n combinedFlags[i] = LocalFlags.join(\n 0,\n unchecked(rightLocalFlags[i])\n );\n }\n this.localFlags = combinedFlags;\n }\n\n /** Checks if an expression of the specified type is known to be non-null, even if the type might be nullable. */\n isNonnull(expr: ExpressionRef, type: Type): bool {\n if (!type.is(TypeFlags.NULLABLE)) return true;\n // below, only teeLocal/getLocal are relevant because these are the only expressions that\n // depend on a dynamic nullable state (flag = LocalFlags.NONNULL), while everything else\n // has already been handled by the nullable type check above.\n switch (getExpressionId(expr)) {\n case ExpressionId.LocalSet: {\n if (!isLocalTee(expr)) break;\n let local = this.parentFunction.localsByIndex[getLocalSetIndex(expr)];\n return !local.type.is(TypeFlags.NULLABLE) || this.isLocalFlag(local.index, LocalFlags.NONNULL, false);\n }\n case ExpressionId.LocalGet: {\n let local = this.parentFunction.localsByIndex[getLocalGetIndex(expr)];\n return !local.type.is(TypeFlags.NULLABLE) || this.isLocalFlag(local.index, LocalFlags.NONNULL, false);\n }\n }\n return false;\n }\n\n /** Updates local states to reflect that this branch is only taken when `expr` is true-ish. */\n inheritNonnullIfTrue(expr: ExpressionRef): void {\n // A: `expr` is true-ish -> Q: how did that happen?\n switch (getExpressionId(expr)) {\n case ExpressionId.LocalSet: {\n if (!isLocalTee(expr)) break;\n let local = this.parentFunction.localsByIndex[getLocalSetIndex(expr)];\n this.setLocalFlag(local.index, LocalFlags.NONNULL);\n this.inheritNonnullIfTrue(getLocalSetValue(expr)); // must have been true-ish as well\n break;\n }\n case ExpressionId.LocalGet: {\n let local = this.parentFunction.localsByIndex[getLocalGetIndex(expr)];\n this.setLocalFlag(local.index, LocalFlags.NONNULL);\n break;\n }\n case ExpressionId.If: {\n let ifFalse = getIfFalse(expr);\n if (!ifFalse) break;\n if (getExpressionId(ifFalse) == ExpressionId.Const) {\n // Logical AND: (if (condition ifTrue 0))\n // the only way this had become true is if condition and ifTrue are true\n if (\n (getExpressionType(ifFalse) == NativeType.I32 && getConstValueI32(ifFalse) == 0) ||\n (getExpressionType(ifFalse) == NativeType.I64 && getConstValueI64Low(ifFalse) == 0 && getConstValueI64High(ifFalse) == 0)\n ) {\n this.inheritNonnullIfTrue(getIfCondition(expr));\n this.inheritNonnullIfTrue(getIfTrue(expr));\n }\n }\n break;\n }\n case ExpressionId.Unary: {\n switch (getUnaryOp(expr)) {\n case UnaryOp.EqzI32:\n case UnaryOp.EqzI64: {\n this.inheritNonnullIfFalse(getUnaryValue(expr)); // !value -> value must have been false\n break;\n }\n }\n break;\n }\n case ExpressionId.Binary: {\n switch (getBinaryOp(expr)) {\n case BinaryOp.EqI32: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) != 0) {\n this.inheritNonnullIfTrue(right); // TRUE == right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) != 0) {\n this.inheritNonnullIfTrue(left); // left == TRUE -> left must have been true\n }\n break;\n }\n case BinaryOp.EqI64: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && (getConstValueI64Low(left) != 0 || getConstValueI64High(left) != 0)) {\n this.inheritNonnullIfTrue(right); // TRUE == right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && (getConstValueI64Low(right) != 0 && getConstValueI64High(right) != 0)) {\n this.inheritNonnullIfTrue(left); // left == TRUE -> left must have been true\n }\n break;\n }\n case BinaryOp.NeI32: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) == 0) {\n this.inheritNonnullIfTrue(right); // FALSE != right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) == 0) {\n this.inheritNonnullIfTrue(left); // left != FALSE -> left must have been true\n }\n break;\n }\n case BinaryOp.NeI64: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI64Low(left) == 0 && getConstValueI64High(left) == 0) {\n this.inheritNonnullIfTrue(right); // FALSE != right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI64Low(right) == 0 && getConstValueI64High(right) == 0) {\n this.inheritNonnullIfTrue(left); // left != FALSE -> left must have been true\n }\n break;\n }\n }\n break;\n }\n case ExpressionId.Call: {\n let name = getCallTarget(expr);\n let program = this.parentFunction.program;\n switch (name) {\n case program.retainInstance.internalName: {\n this.inheritNonnullIfTrue(getCallOperand(expr, 0));\n break;\n }\n }\n break;\n }\n }\n }\n\n /** Updates local states to reflect that this branch is only taken when `expr` is false-ish. */\n inheritNonnullIfFalse(expr: ExpressionRef): void {\n // A: `expr` is false-ish -> Q: how did that happen?\n switch (getExpressionId(expr)) {\n case ExpressionId.Unary: {\n switch (getUnaryOp(expr)) {\n case UnaryOp.EqzI32:\n case UnaryOp.EqzI64: {\n this.inheritNonnullIfTrue(getUnaryValue(expr)); // !value -> value must have been true\n break;\n }\n }\n break;\n }\n case ExpressionId.If: {\n let ifTrue = getIfTrue(expr);\n if (getExpressionId(ifTrue) == ExpressionId.Const) {\n let ifFalse = getIfFalse(expr);\n if (!ifFalse) break;\n // Logical OR: (if (condition 1 ifFalse))\n // the only way this had become false is if condition and ifFalse are false\n if (\n (getExpressionType(ifTrue) == NativeType.I32 && getConstValueI32(ifTrue) != 0) ||\n (getExpressionType(ifTrue) == NativeType.I64 && (getConstValueI64Low(ifTrue) != 0 || getConstValueI64High(ifTrue) != 0))\n ) {\n this.inheritNonnullIfFalse(getIfCondition(expr));\n this.inheritNonnullIfFalse(getIfFalse(expr));\n }\n\n }\n break;\n }\n case ExpressionId.Binary: {\n switch (getBinaryOp(expr)) {\n // remember: we want to know how the _entire_ expression became FALSE (!)\n case BinaryOp.EqI32: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) == 0) {\n this.inheritNonnullIfTrue(right); // FALSE == right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) == 0) {\n this.inheritNonnullIfTrue(left); // left == FALSE -> left must have been true\n }\n break;\n }\n case BinaryOp.EqI64: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI64Low(left) == 0 && getConstValueI64High(left) == 0) {\n this.inheritNonnullIfTrue(right); // FALSE == right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI64Low(right) == 0 && getConstValueI64High(right) == 0) {\n this.inheritNonnullIfTrue(left); // left == FALSE -> left must have been true\n }\n break;\n }\n case BinaryOp.NeI32: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) != 0) {\n this.inheritNonnullIfTrue(right); // TRUE != right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) != 0) {\n this.inheritNonnullIfTrue(left); // left != TRUE -> left must have been true\n }\n break;\n }\n case BinaryOp.NeI64: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && (getConstValueI64Low(left) != 0 || getConstValueI64High(left) != 0)) {\n this.inheritNonnullIfTrue(right); // TRUE != right -> right must have been true for this to become false\n } else if (getExpressionId(right) == ExpressionId.Const && (getConstValueI64Low(right) != 0 || getConstValueI64High(right) != 0)) {\n this.inheritNonnullIfTrue(left); // left != TRUE -> left must have been true for this to become false\n }\n break;\n }\n }\n break;\n }\n }\n }\n\n /**\n * Tests if an expression can possibly overflow in the context of this flow. Assumes that the\n * expression might already have overflown and returns `false` only if the operation neglects\n * any possible combination of garbage bits being present.\n */\n canOverflow(expr: ExpressionRef, type: Type): bool {\n // TODO: the following catches most common and a few uncommon cases, but there are additional\n // opportunities here, obviously.\n assert(type != Type.void);\n\n // types other than i8, u8, i16, u16 and bool do not overflow\n if (!type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) return false;\n\n var operand: ExpressionRef;\n switch (getExpressionId(expr)) {\n\n // overflows if the local isn't wrapped or the conversion does\n case ExpressionId.LocalGet: {\n let local = this.parentFunction.localsByIndex[getLocalGetIndex(expr)];\n return !this.isLocalFlag(local.index, LocalFlags.WRAPPED, true)\n || canConversionOverflow(local.type, type);\n }\n\n // overflows if the value does\n case ExpressionId.LocalSet: { // tee\n assert(isLocalTee(expr));\n return this.canOverflow(getLocalSetValue(expr), type);\n }\n\n // overflows if the conversion does (globals are wrapped on set)\n case ExpressionId.GlobalGet: {\n // TODO: this is inefficient because it has to read a string\n let global = assert(this.parentFunction.program.elementsByName.get(assert(getGlobalGetName(expr))));\n assert(global.kind == ElementKind.GLOBAL);\n return canConversionOverflow(assert((global).type), type);\n }\n\n case ExpressionId.Binary: {\n switch (getBinaryOp(expr)) {\n\n // comparisons do not overflow (result is 0 or 1)\n case BinaryOp.EqI32:\n case BinaryOp.EqI64:\n case BinaryOp.EqF32:\n case BinaryOp.EqF64:\n case BinaryOp.NeI32:\n case BinaryOp.NeI64:\n case BinaryOp.NeF32:\n case BinaryOp.NeF64:\n case BinaryOp.LtI32:\n case BinaryOp.LtU32:\n case BinaryOp.LtI64:\n case BinaryOp.LtU64:\n case BinaryOp.LtF32:\n case BinaryOp.LtF64:\n case BinaryOp.LeI32:\n case BinaryOp.LeU32:\n case BinaryOp.LeI64:\n case BinaryOp.LeU64:\n case BinaryOp.LeF32:\n case BinaryOp.LeF64:\n case BinaryOp.GtI32:\n case BinaryOp.GtU32:\n case BinaryOp.GtI64:\n case BinaryOp.GtU64:\n case BinaryOp.GtF32:\n case BinaryOp.GtF64:\n case BinaryOp.GeI32:\n case BinaryOp.GeU32:\n case BinaryOp.GeI64:\n case BinaryOp.GeU64:\n case BinaryOp.GeF32:\n case BinaryOp.GeF64: return false;\n\n // result won't overflow if one side is 0 or if one side is 1 and the other wrapped\n case BinaryOp.MulI32: {\n return !(\n (\n getExpressionId(operand = getBinaryLeft(expr)) == ExpressionId.Const &&\n (\n getConstValueI32(operand) == 0 ||\n (\n getConstValueI32(operand) == 1 &&\n !this.canOverflow(getBinaryRight(expr), type)\n )\n )\n ) || (\n getExpressionId(operand = getBinaryRight(expr)) == ExpressionId.Const &&\n (\n getConstValueI32(operand) == 0 ||\n (\n getConstValueI32(operand) == 1 &&\n !this.canOverflow(getBinaryLeft(expr), type)\n )\n )\n )\n );\n }\n\n // result won't overflow if one side is a constant less than this type's mask or one side\n // is wrapped\n case BinaryOp.AndI32: {\n // note that computeSmallIntegerMask returns the mask minus the MSB for signed types\n // because signed value garbage bits must be guaranteed to be equal to the MSB.\n return !(\n (\n (\n getExpressionId(operand = getBinaryLeft(expr)) == ExpressionId.Const &&\n getConstValueI32(operand) <= type.computeSmallIntegerMask(Type.i32)\n ) || !this.canOverflow(operand, type)\n ) || (\n (\n getExpressionId(operand = getBinaryRight(expr)) == ExpressionId.Const &&\n getConstValueI32(operand) <= type.computeSmallIntegerMask(Type.i32)\n ) || !this.canOverflow(operand, type)\n )\n );\n }\n\n // overflows if the shift doesn't clear potential garbage bits\n case BinaryOp.ShlI32: {\n let shift = 32 - type.size;\n return getExpressionId(operand = getBinaryRight(expr)) != ExpressionId.Const\n || getConstValueI32(operand) < shift;\n }\n\n // overflows if the value does and the shift doesn't clear potential garbage bits\n case BinaryOp.ShrI32: {\n let shift = 32 - type.size;\n return this.canOverflow(getBinaryLeft(expr), type) && (\n getExpressionId(operand = getBinaryRight(expr)) != ExpressionId.Const ||\n getConstValueI32(operand) < shift\n );\n }\n\n // overflows if the shift does not clear potential garbage bits. if an unsigned value is\n // wrapped, it can't overflow.\n case BinaryOp.ShrU32: {\n let shift = 32 - type.size;\n return type.is(TypeFlags.SIGNED)\n ? !(\n getExpressionId(operand = getBinaryRight(expr)) == ExpressionId.Const &&\n getConstValueI32(operand) > shift // must clear MSB\n )\n : this.canOverflow(getBinaryLeft(expr), type) && !(\n getExpressionId(operand = getBinaryRight(expr)) == ExpressionId.Const &&\n getConstValueI32(operand) >= shift // can leave MSB\n );\n }\n\n // overflows if any side does\n case BinaryOp.DivU32:\n case BinaryOp.RemI32:\n case BinaryOp.RemU32: {\n return this.canOverflow(getBinaryLeft(expr), type)\n || this.canOverflow(getBinaryRight(expr), type);\n }\n }\n break;\n }\n\n case ExpressionId.Unary: {\n switch (getUnaryOp(expr)) {\n\n // comparisons do not overflow (result is 0 or 1)\n case UnaryOp.EqzI32:\n case UnaryOp.EqzI64: return false;\n\n // overflow if the maximum result (32) cannot be represented in the target type\n case UnaryOp.ClzI32:\n case UnaryOp.CtzI32:\n case UnaryOp.PopcntI32: return type.size < 7;\n }\n break;\n }\n\n // overflows if the value cannot be represented in the target type\n case ExpressionId.Const: {\n let value: i32 = 0;\n switch (getExpressionType(expr)) {\n case NativeType.I32: { value = getConstValueI32(expr); break; }\n case NativeType.I64: { value = getConstValueI64Low(expr); break; } // discards upper bits\n case NativeType.F32: { value = i32(getConstValueF32(expr)); break; }\n case NativeType.F64: { value = i32(getConstValueF64(expr)); break; }\n default: assert(false);\n }\n switch (type.kind) {\n case TypeKind.I8: return value < i8.MIN_VALUE || value > i8.MAX_VALUE;\n case TypeKind.I16: return value < i16.MIN_VALUE || value > i16.MAX_VALUE;\n case TypeKind.U8: return value < 0 || value > u8.MAX_VALUE;\n case TypeKind.U16: return value < 0 || value > u16.MAX_VALUE;\n case TypeKind.BOOL: return (value & ~1) != 0;\n }\n break;\n }\n\n // overflows if the conversion does\n case ExpressionId.Load: {\n let fromType: Type;\n let signed = isLoadSigned(expr);\n switch (getLoadBytes(expr)) {\n case 1: { fromType = signed ? Type.i8 : Type.u8; break; }\n case 2: { fromType = signed ? Type.i16 : Type.u16; break; }\n default: { fromType = signed ? Type.i32 : Type.u32; break; }\n }\n return canConversionOverflow(fromType, type);\n }\n\n // overflows if the result does, which is either\n // - the last expression of the block, by contract, if the block doesn't have a label\n // - the last expression or the value of an inner br if the block has a label (TODO)\n case ExpressionId.Block: {\n if (!getBlockName(expr)) {\n let size = assert(getBlockChildCount(expr));\n let last = getBlockChild(expr, size - 1);\n return this.canOverflow(last, type);\n }\n break;\n }\n\n // overflows if either side does\n case ExpressionId.If: {\n return this.canOverflow(getIfTrue(expr), type)\n || this.canOverflow(assert(getIfFalse(expr)), type);\n }\n\n // overflows if either side does\n case ExpressionId.Select: {\n return this.canOverflow(getSelectThen(expr), type)\n || this.canOverflow(getSelectElse(expr), type);\n }\n\n // overflows if the call does not return a wrapped value or the conversion does\n case ExpressionId.Call: {\n let program = this.parentFunction.program;\n let instancesByName = program.instancesByName;\n let instanceName = assert(getCallTarget(expr));\n if (instancesByName.has(instanceName)) {\n let instance = instancesByName.get(instanceName)!;\n assert(instance.kind == ElementKind.FUNCTION);\n let returnType = (instance).signature.returnType;\n return !(instance).flow.is(FlowFlags.RETURNS_WRAPPED)\n || canConversionOverflow(returnType, type);\n }\n return false; // assume no overflow for builtins\n }\n\n // doesn't technically overflow\n case ExpressionId.Unreachable: return false;\n }\n return true;\n }\n\n toString(): string {\n var levels = 0;\n var parent = this.parent;\n while (parent) {\n parent = parent.parent;\n ++levels;\n }\n return \"Flow(\" + this.actualFunction + \")[\" + levels.toString() + \"]\";\n }\n}\n\n/** Tests if a conversion from one type to another can technically overflow. */\nfunction canConversionOverflow(fromType: Type, toType: Type): bool {\n return !fromType.is(TypeFlags.INTEGER) // non-i32 locals or returns\n || fromType.size > toType.size\n || fromType.is(TypeFlags.SIGNED) != toType.is(TypeFlags.SIGNED);\n}\n\n/** Finds all indexes of locals used in the specified expression. */\nexport function findUsedLocals(expr: ExpressionRef, used: Set = new Set()): Set {\n traverse(expr, used, findUsedLocalsVisit);\n return used;\n}\n\n/** A visitor function for use with `traverse` that finds all indexes of used locals. */\nfunction findUsedLocalsVisit(expr: ExpressionRef, used: Set): void {\n switch (getExpressionId(expr)) {\n case ExpressionId.LocalGet: {\n used.add(getLocalGetIndex(expr));\n break;\n }\n case ExpressionId.LocalSet: {\n used.add(getLocalSetIndex(expr));\n // fall-through for value\n }\n default: traverse(expr, used, findUsedLocalsVisit);\n }\n}\n","/**\n * The AssemblyScript compiler.\n * @module compiler\n *//***/\n\nimport {\n BuiltinSymbols,\n compileCall as compileBuiltinCall,\n compileAbort,\n compileVisitGlobals,\n compileVisitMembers,\n compileRTTI,\n} from \"./builtins\";\n\nimport {\n DiagnosticCode,\n DiagnosticEmitter\n} from \"./diagnostics\";\n\nimport {\n Module,\n MemorySegment,\n ExpressionRef,\n UnaryOp,\n BinaryOp,\n NativeType,\n FunctionRef,\n ExpressionId,\n FunctionTypeRef,\n GlobalRef,\n getExpressionId,\n getExpressionType,\n getConstValueI32,\n getConstValueI64Low,\n getConstValueI64High,\n getConstValueF32,\n getConstValueF64,\n getBlockChildCount,\n getBlockChild,\n getBlockName,\n getLocalGetIndex,\n isLocalTee,\n getLocalSetIndex,\n FeatureFlags,\n needsExplicitUnreachable\n} from \"./module\";\n\nimport {\n CommonFlags,\n INSTANCE_DELIMITER,\n STATIC_DELIMITER,\n GETTER_PREFIX,\n SETTER_PREFIX,\n CommonSymbols,\n INDEX_SUFFIX,\n Feature,\n Target\n} from \"./common\";\n\nimport {\n Program,\n ClassPrototype,\n Class,\n Element,\n ElementKind,\n Enum,\n Field,\n FunctionPrototype,\n Function,\n FunctionTarget,\n Global,\n Local,\n EnumValue,\n Property,\n VariableLikeElement,\n ConstantValueKind,\n OperatorKind,\n DecoratorFlags,\n PropertyPrototype,\n File,\n mangleInternalName\n} from \"./program\";\n\nimport {\n FlowFlags,\n Flow,\n LocalFlags,\n findUsedLocals\n} from \"./flow\";\n\nimport {\n Resolver, ReportMode\n} from \"./resolver\";\n\nimport {\n Token,\n operatorTokenToString\n} from \"./tokenizer\";\n\nimport {\n Node,\n NodeKind,\n NamedTypeNode,\n Range,\n DecoratorKind,\n AssertionKind,\n\n Statement,\n BlockStatement,\n BreakStatement,\n ClassDeclaration,\n ContinueStatement,\n DeclarationStatement,\n DoStatement,\n EmptyStatement,\n EnumDeclaration,\n ExportStatement,\n ExpressionStatement,\n FieldDeclaration,\n ForStatement,\n FunctionDeclaration,\n IfStatement,\n ImportStatement,\n InstanceOfExpression,\n InterfaceDeclaration,\n NamespaceDeclaration,\n ReturnStatement,\n SwitchStatement,\n ThrowStatement,\n TryStatement,\n VariableStatement,\n VoidStatement,\n WhileStatement,\n\n Expression,\n AssertionExpression,\n BinaryExpression,\n CallExpression,\n CommaExpression,\n ElementAccessExpression,\n FloatLiteralExpression,\n FunctionExpression,\n IdentifierExpression,\n IntegerLiteralExpression,\n LiteralExpression,\n LiteralKind,\n NewExpression,\n ObjectLiteralExpression,\n ParenthesizedExpression,\n PropertyAccessExpression,\n TernaryExpression,\n ArrayLiteralExpression,\n StringLiteralExpression,\n UnaryPostfixExpression,\n UnaryPrefixExpression,\n\n nodeIsConstantValue,\n findDecorator,\n isTypeOmitted,\n ExportDefaultStatement,\n SourceKind\n} from \"./ast\";\n\nimport {\n Type,\n TypeKind,\n TypeFlags,\n Signature,\n typesToNativeTypes\n} from \"./types\";\n\nimport {\n writeI8,\n writeI16,\n writeI32,\n writeI64,\n writeF32,\n writeF64,\n makeMap\n} from \"./util\";\n\n/** Compiler options. */\nexport class Options {\n\n /** WebAssembly target. Defaults to {@link Target.WASM32}. */\n target: Target = Target.WASM32;\n /** If true, replaces assertions with nops. */\n noAssert: bool = false;\n /** If true, imports the memory provided by the embedder. */\n importMemory: bool = false;\n /** If greater than zero, declare memory as shared by setting max memory to sharedMemory. */\n sharedMemory: i32 = 0;\n /** If true, imports the function table provided by the embedder. */\n importTable: bool = false;\n /** If true, generates information necessary for source maps. */\n sourceMap: bool = false;\n /** If true, generates an explicit start function. */\n explicitStart: bool = false;\n /** Static memory start offset. */\n memoryBase: i32 = 0;\n /** Global aliases, mapping alias names as the key to internal names to be aliased as the value. */\n globalAliases: Map | null = null;\n /** Additional features to activate. */\n features: Feature = Feature.NONE;\n /** If true, disallows unsafe features in user code. */\n noUnsafe: bool = false;\n\n /** Hinted optimize level. Not applied by the compiler itself. */\n optimizeLevelHint: i32 = 0;\n /** Hinted shrink level. Not applied by the compiler itself. */\n shrinkLevelHint: i32 = 0;\n\n /** Tests if the target is WASM64 or, otherwise, WASM32. */\n get isWasm64(): bool {\n return this.target == Target.WASM64;\n }\n\n /** Gets the unsigned size type matching the target. */\n get usizeType(): Type {\n return this.target == Target.WASM64 ? Type.usize64 : Type.usize32;\n }\n\n /** Gets the signed size type matching the target. */\n get isizeType(): Type {\n return this.target == Target.WASM64 ? Type.isize64 : Type.isize32;\n }\n\n /** Gets the native size type matching the target. */\n get nativeSizeType(): NativeType {\n return this.target == Target.WASM64 ? NativeType.I64 : NativeType.I32;\n }\n\n /** Tests if a specific feature is activated. */\n hasFeature(feature: Feature): bool {\n return (this.features & feature) != 0;\n }\n}\n\n/** Various constraints in expression compilation. */\nexport const enum Constraints {\n NONE = 0,\n\n /** Must implicitly convert to the target type. */\n CONV_IMPLICIT = 1 << 0,\n /** Must explicitly convert to the target type. */\n CONV_EXPLICIT = 1 << 1,\n /** Must wrap small integer values to match the target type. */\n MUST_WRAP = 1 << 2,\n\n /** Indicates that the value will be dropped immediately. */\n WILL_DROP = 1 << 3,\n /** Indicates that the value will be retained immediately. */\n WILL_RETAIN = 1 << 4,\n /** Indicates that static data is preferred. */\n PREFER_STATIC = 1 << 5\n}\n\n/** Runtime features to be activated by the compiler. */\nexport const enum RuntimeFeatures {\n NONE = 0,\n /** Requires heap setup. */\n HEAP = 1 << 0,\n /** Requires runtime type information setup. */\n RTTI = 1 << 1,\n /** Requires the built-in globals visitor. */\n visitGlobals = 1 << 2,\n /** Requires the built-in members visitor. */\n visitMembers = 1 << 3\n}\n\n/** Compiler interface. */\nexport class Compiler extends DiagnosticEmitter {\n\n /** Program reference. */\n program: Program;\n /** Resolver reference. */\n get resolver(): Resolver { return this.program.resolver; }\n /** Provided options. */\n options: Options;\n /** Module instance being compiled. */\n module: Module;\n /** Current control flow. */\n currentFlow: Flow;\n /** Current inline functions stack. */\n currentInlineFunctions: Function[] = [];\n /** Current enum in compilation. */\n currentEnum: Enum | null = null;\n /** Current type in compilation. */\n currentType: Type = Type.void;\n /** Start function statements. */\n currentBody: ExpressionRef[];\n /** Counting memory offset. */\n memoryOffset: I64;\n /** Memory segments being compiled. */\n memorySegments: MemorySegment[] = [];\n /** Map of already compiled static string segments. */\n stringSegments: Map = new Map();\n /** Function table being compiled. */\n functionTable: string[] = [ \"null\" ];\n /** Argument count helper global. */\n argcVar: GlobalRef = 0;\n /** Argument count helper setter. */\n argcSet: FunctionRef = 0;\n /** Requires runtime features. */\n runtimeFeatures: RuntimeFeatures = RuntimeFeatures.NONE;\n /** Expressions known to have skipped an autorelease. Usually function returns. */\n skippedAutoreleases: Set = new Set();\n\n /** Compiles a {@link Program} to a {@link Module} using the specified options. */\n static compile(program: Program, options: Options | null = null): Module {\n return new Compiler(program, options).compile();\n }\n\n /** Constructs a new compiler for a {@link Program} using the specified options. */\n constructor(program: Program, options: Options | null = null) {\n super(program.diagnostics);\n this.program = program;\n if (!options) options = new Options();\n this.options = options;\n this.memoryOffset = i64_new(\n // leave space for `null`. also functions as a sentinel for erroneous stores at offset 0.\n // note that Binaryen's asm.js output utilizes the first 8 bytes for reinterpretations (#1547)\n max(options.memoryBase, 8)\n );\n this.module = Module.create();\n var featureFlags: BinaryenFeatureFlags = 0;\n if (this.options.hasFeature(Feature.THREADS)) featureFlags |= FeatureFlags.Atomics;\n if (this.options.hasFeature(Feature.MUTABLE_GLOBAL)) featureFlags |= FeatureFlags.MutableGloabls;\n // if (this.options.hasFeature(Feature.TRUNC_SAT)) featureFlags |= FeatureFlags.NontrappingFPToInt;\n if (this.options.hasFeature(Feature.SIMD)) featureFlags |= FeatureFlags.SIMD128;\n if (this.options.hasFeature(Feature.BULK_MEMORY)) featureFlags |= FeatureFlags.BulkMemory;\n if (this.options.hasFeature(Feature.SIGN_EXTENSION)) featureFlags |= FeatureFlags.SignExt;\n // if (this.options.hasFeature(Feature.EXCEPTION_HANDLING)) featureFlags |= FeatureFlags.ExceptionHandling;\n this.module.setFeatures(featureFlags);\n }\n\n /** Performs compilation of the underlying {@link Program} to a {@link Module}. */\n compile(): Module {\n var options = this.options;\n var module = this.module;\n var program = this.program;\n\n // initialize lookup maps, built-ins, imports, exports, etc.\n program.initialize(options);\n\n // set up the main start function\n var startFunctionInstance = program.makeNativeFunction(\"start\", new Signature(program, [], Type.void));\n startFunctionInstance.internalName = \"start\";\n var startFunctionBody = new Array();\n this.currentFlow = startFunctionInstance.flow;\n this.currentBody = startFunctionBody;\n\n // add a mutable heap and rtti base dummies\n if (options.isWasm64) {\n module.addGlobal(BuiltinSymbols.heap_base, NativeType.I64, true, module.i64(0));\n module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I64, true, module.i64(0));\n } else {\n module.addGlobal(BuiltinSymbols.heap_base, NativeType.I32, true, module.i32(0));\n module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I32, true, module.i32(0));\n }\n\n // compile entry file(s) while traversing reachable elements\n var files = program.filesByName;\n for (let file of files.values()) {\n if (file.source.sourceKind == SourceKind.USER_ENTRY) {\n this.compileFile(file);\n this.compileExports(file);\n }\n }\n\n // compile the start function if not empty or explicitly requested\n var startIsEmpty = !startFunctionBody.length;\n var explicitStart = options.explicitStart;\n if (!startIsEmpty || explicitStart) {\n let signature = startFunctionInstance.signature;\n if (!startIsEmpty && explicitStart) {\n module.addGlobal(BuiltinSymbols.started, NativeType.I32, true, module.i32(0));\n startFunctionBody.unshift(\n module.if(\n module.global_get(BuiltinSymbols.started, NativeType.I32),\n module.return(),\n module.global_set(BuiltinSymbols.started, module.i32(1))\n )\n );\n }\n let funcRef = module.addFunction(\n startFunctionInstance.internalName,\n this.ensureFunctionType(\n signature.parameterTypes,\n signature.returnType,\n signature.thisType\n ),\n typesToNativeTypes(startFunctionInstance.additionalLocals),\n module.block(null, startFunctionBody)\n );\n startFunctionInstance.finalize(module, funcRef);\n if (!explicitStart) module.setStart(funcRef);\n else module.addFunctionExport(startFunctionInstance.internalName, \"__start\");\n }\n\n // compile runtime features\n if (this.runtimeFeatures & RuntimeFeatures.visitGlobals) compileVisitGlobals(this);\n if (this.runtimeFeatures & RuntimeFeatures.visitMembers) compileVisitMembers(this);\n module.removeGlobal(BuiltinSymbols.rtti_base);\n if (this.runtimeFeatures & RuntimeFeatures.RTTI) compileRTTI(this);\n\n // update the heap base pointer\n var memoryOffset = this.memoryOffset;\n memoryOffset = i64_align(memoryOffset, options.usizeType.byteSize);\n this.memoryOffset = memoryOffset;\n module.removeGlobal(BuiltinSymbols.heap_base);\n if (this.runtimeFeatures & RuntimeFeatures.HEAP) {\n if (options.isWasm64) {\n module.addGlobal(\n BuiltinSymbols.heap_base,\n NativeType.I64,\n false,\n module.i64(i64_low(memoryOffset), i64_high(memoryOffset))\n );\n } else {\n module.addGlobal(\n BuiltinSymbols.heap_base,\n NativeType.I32,\n false,\n module.i32(i64_low(memoryOffset))\n );\n }\n }\n\n // set up memory\n var isSharedMemory = options.hasFeature(Feature.THREADS) && options.sharedMemory > 0;\n module.setMemory(\n this.options.memoryBase /* is specified */ || this.memorySegments.length\n ? i64_low(i64_shr_u(i64_align(memoryOffset, 0x10000), i64_new(16, 0)))\n : 0,\n isSharedMemory ? options.sharedMemory : Module.UNLIMITED_MEMORY,\n this.memorySegments,\n options.target,\n \"memory\",\n isSharedMemory\n );\n\n // import memory if requested (default memory is named '0' by Binaryen)\n if (options.importMemory) module.addMemoryImport(\"0\", \"env\", \"memory\", isSharedMemory);\n\n // set up function table\n var functionTable = this.functionTable;\n module.setFunctionTable(functionTable.length, 0xffffffff, functionTable);\n module.addFunction(\"null\", this.ensureFunctionType(null, Type.void), null, module.block(null, []));\n\n // import table if requested (default table is named '0' by Binaryen)\n if (options.importTable) module.addTableImport(\"0\", \"env\", \"table\");\n\n // set up module exports\n for (let file of this.program.filesByName.values()) {\n if (file.source.sourceKind == SourceKind.USER_ENTRY) this.ensureModuleExports(file);\n }\n return module;\n }\n\n // === Exports ==================================================================================\n\n /** Applies the respective module exports for the specified file. */\n private ensureModuleExports(file: File): void {\n var members = file.exports;\n if (members) for (let [name, member] of members) this.ensureModuleExport(name, member);\n var exportsStar = file.exportsStar;\n if (exportsStar) {\n for (let i = 0, k = exportsStar.length; i < k; ++i) this.ensureModuleExports(exportsStar[i]);\n }\n }\n\n /** Applies the respective module export(s) for the specified element. */\n private ensureModuleExport(name: string, element: Element, prefix: string = \"\"): void {\n switch (element.kind) {\n\n // traverse instances\n case ElementKind.FUNCTION_PROTOTYPE: {\n let instances = (element).instances;\n if (instances) {\n for (let instance of instances.values()) {\n let instanceName = name;\n if (instance.is(CommonFlags.GENERIC)) {\n let fullName = instance.internalName;\n instanceName += fullName.substring(fullName.lastIndexOf(\"<\"));\n }\n this.ensureModuleExport(instanceName, instance, prefix);\n }\n }\n break;\n }\n case ElementKind.CLASS_PROTOTYPE: {\n let instances = (element).instances;\n if (instances) {\n for (let instance of instances.values()) {\n let instanceName = name;\n if (instance.is(CommonFlags.GENERIC)) {\n let fullName = instance.internalName;\n instanceName += fullName.substring(fullName.lastIndexOf(\"<\"));\n }\n this.ensureModuleExport(instanceName, instance, prefix);\n }\n }\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n let getter = (element).getterPrototype;\n let setter = (element).setterPrototype;\n if (getter) this.ensureModuleExport(GETTER_PREFIX + name, getter, prefix);\n if (setter) this.ensureModuleExport(SETTER_PREFIX + name, setter, prefix);\n break;\n }\n\n // export concrete elements\n case ElementKind.GLOBAL: {\n let isConst = element.is(CommonFlags.CONST) || element.is(CommonFlags.STATIC | CommonFlags.READONLY);\n if (!isConst && !this.options.hasFeature(Feature.MUTABLE_GLOBAL)) {\n this.error(\n DiagnosticCode.Cannot_export_a_mutable_global,\n (element).identifierNode.range\n );\n } else {\n this.module.addGlobalExport(element.internalName, prefix + name);\n }\n break;\n }\n case ElementKind.ENUMVALUE: {\n if (!(element).isImmutable && !this.options.hasFeature(Feature.MUTABLE_GLOBAL)) {\n this.error(\n DiagnosticCode.Cannot_export_a_mutable_global,\n (element).identifierNode.range\n );\n } else {\n this.module.addGlobalExport(element.internalName, prefix + name);\n }\n break;\n }\n case ElementKind.FUNCTION: {\n let instance = element;\n let signature = instance.signature;\n if (signature.requiredParameters < signature.parameterTypes.length) {\n // utilize trampoline to fill in omitted arguments\n instance = this.ensureTrampoline(instance);\n this.ensureArgcSet();\n }\n if (instance.is(CommonFlags.COMPILED)) this.module.addFunctionExport(instance.internalName, prefix + name);\n break;\n }\n case ElementKind.PROPERTY: {\n let getter = (element).getterInstance;\n if (getter) this.ensureModuleExport(GETTER_PREFIX + name, getter, prefix);\n let setter = (element).setterInstance;\n if (setter) this.ensureModuleExport(SETTER_PREFIX + name, setter, prefix);\n break;\n }\n case ElementKind.FIELD: {\n this.ensureModuleFieldGetter(prefix + GETTER_PREFIX + name, element);\n if (!element.is(CommonFlags.READONLY)) {\n this.ensureModuleFieldSetter(prefix + SETTER_PREFIX + name, element);\n }\n break;\n }\n case ElementKind.CLASS: {\n // make the class name itself represent its runtime id\n if (!(element).type.isUnmanaged) {\n let module = this.module;\n let internalName = (element).internalName;\n module.addGlobal(internalName, NativeType.I32, false, module.i32((element).id));\n module.addGlobalExport(internalName, prefix + name);\n }\n break;\n }\n\n // just traverse members below\n case ElementKind.ENUM:\n case ElementKind.NAMESPACE:\n case ElementKind.FILE:\n case ElementKind.TYPEDEFINITION: break;\n\n default: assert(false); // unexpected module export\n }\n\n // traverse members\n var members = element.members;\n if (members) {\n let subPrefix = prefix + name + (element.kind == ElementKind.CLASS\n ? INSTANCE_DELIMITER\n : STATIC_DELIMITER\n );\n if (\n element.kind == ElementKind.NAMESPACE ||\n element.kind == ElementKind.FILE\n ) {\n for (let member of members.values()) {\n if (!member.is(CommonFlags.EXPORT)) continue;\n this.ensureModuleExport(member.name, member, subPrefix);\n }\n } else {\n for (let member of members.values()) {\n if (member.is(CommonFlags.PRIVATE)) continue;\n this.ensureModuleExport(member.name, member, subPrefix);\n }\n }\n }\n }\n\n /** Makes a function to get the value of a field of an exported class. */\n private ensureModuleFieldGetter(name: string, field: Field): void {\n var module = this.module;\n var type = field.type;\n var usizeType = this.options.usizeType;\n var loadExpr = module.load(type.byteSize, type.is(TypeFlags.SIGNED),\n module.local_get(0, usizeType.toNativeType()),\n type.toNativeType(), field.memoryOffset\n );\n // a user-defined getter would return a retained value, so:\n if (type.isManaged) loadExpr = this.makeRetain(loadExpr);\n module.addFunction(\n name,\n this.ensureFunctionType(null, type, usizeType),\n null,\n loadExpr\n );\n module.addFunctionExport(name, name);\n }\n\n /** Makes a function to set the value of a field of an exported class. */\n private ensureModuleFieldSetter(name: string, field: Field): void {\n var module = this.module;\n var type = field.type;\n var nativeType = type.toNativeType();\n var usizeType = this.options.usizeType;\n var nativeSizeType = usizeType.toNativeType();\n var valueExpr = module.local_get(1, nativeType);\n if (type.isManaged) {\n valueExpr = this.makeRetainRelease(\n module.load(type.byteSize, false, // oldRef\n module.local_get(0, nativeSizeType),\n nativeType, field.memoryOffset\n ),\n valueExpr // newRef\n );\n }\n module.addFunction(\n name,\n this.ensureFunctionType([ type ], Type.void, usizeType),\n null,\n module.store(\n type.byteSize,\n module.local_get(0, nativeSizeType),\n valueExpr,\n nativeType,\n field.memoryOffset\n )\n );\n module.addFunctionExport(name, name);\n }\n\n // === Elements =================================================================================\n\n /** Compiles any element. */\n compileElement(element: Element, compileMembers: bool = true): void {\n switch (element.kind) {\n case ElementKind.GLOBAL: {\n this.compileGlobal(element);\n break;\n }\n case ElementKind.ENUM: {\n this.compileEnum(element);\n break;\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n if (!element.is(CommonFlags.GENERIC)) {\n this.compileFunctionUsingTypeArguments(element, []);\n }\n break;\n }\n case ElementKind.CLASS_PROTOTYPE: {\n if (!element.is(CommonFlags.GENERIC)) {\n this.compileClassUsingTypeArguments(element, []);\n }\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n let getterPrototype = (element).getterPrototype;\n if (getterPrototype) {\n this.compileFunctionUsingTypeArguments(getterPrototype, []);\n }\n let setterPrototype = (element).setterPrototype;\n if (setterPrototype) {\n this.compileFunctionUsingTypeArguments(setterPrototype, []);\n }\n break;\n }\n case ElementKind.NAMESPACE:\n case ElementKind.TYPEDEFINITION:\n case ElementKind.ENUMVALUE: break;\n default: assert(false, ElementKind[element.kind]);\n }\n if (compileMembers) this.compileMembers(element);\n }\n\n /** Compiles an element's members. */\n compileMembers(element: Element): void {\n var members = element.members;\n if (members) for (let element of members.values()) this.compileElement(element);\n }\n\n /** Compiles a file's exports. */\n compileExports(file: File): void {\n var exports = file.exports;\n if (exports) for (let element of exports.values()) this.compileElement(element);\n var exportsStar = file.exportsStar;\n if (exportsStar) {\n for (let exportStar of exportsStar) {\n this.compileFile(exportStar);\n this.compileExports(exportStar);\n }\n }\n }\n\n // files\n\n /** Compiles the file matching the specified path. */\n compileFileByPath(normalizedPathWithoutExtension: string, reportNode: Node): void {\n var file: File;\n var filesByName = this.program.filesByName;\n var pathWithIndex: string;\n if (filesByName.has(normalizedPathWithoutExtension)) {\n file = filesByName.get(normalizedPathWithoutExtension)!;\n } else if (filesByName.has(pathWithIndex = normalizedPathWithoutExtension + INDEX_SUFFIX)) {\n file = filesByName.get(pathWithIndex)!;\n } else {\n this.error(\n DiagnosticCode.File_0_not_found,\n reportNode.range, normalizedPathWithoutExtension\n );\n return;\n }\n this.compileFile(file);\n }\n\n /** Compiles the specified file. */\n compileFile(file: File): void {\n if (file.is(CommonFlags.COMPILED)) return;\n file.set(CommonFlags.COMPILED);\n\n // compile top-level statements within the file's start function\n var startFunction = file.startFunction;\n var previousBody = this.currentBody;\n var startFunctionBody = new Array();\n this.currentBody = startFunctionBody;\n\n // compile top-level statements\n var previousFlow = this.currentFlow;\n var flow = startFunction.flow;\n this.currentFlow = flow;\n for (let statements = file.source.statements, i = 0, k = statements.length; i < k; ++i) {\n this.compileTopLevelStatement(statements[i], startFunctionBody);\n }\n this.finishAutoreleases(flow, startFunctionBody);\n this.currentFlow = previousFlow;\n this.currentBody = previousBody;\n\n // if top-level statements are present, make the per-file start function and call it in start\n if (startFunctionBody.length) {\n let module = this.module;\n let locals = startFunction.localsByIndex;\n let numLocals = locals.length;\n let varTypes = new Array(numLocals);\n for (let i = 0; i < numLocals; ++i) varTypes[i] = locals[i].type.toNativeType();\n module.addFunction(\n startFunction.internalName,\n this.ensureFunctionType(startFunction.signature.parameterTypes, startFunction.signature.returnType),\n varTypes,\n startFunctionBody.length > 1\n ? module.block(null, startFunctionBody)\n : startFunctionBody[0]\n );\n previousBody.push(\n module.call(startFunction.internalName, null, NativeType.None)\n );\n }\n }\n\n // === Globals ==================================================================================\n\n compileGlobal(global: Global): bool {\n if (global.is(CommonFlags.COMPILED)) return true;\n global.set(CommonFlags.COMPILED);\n\n var module = this.module;\n var initExpr: ExpressionRef = 0;\n var initAutoreleaseSkipped: bool = false;\n var typeNode = global.typeNode;\n var initializerNode = global.initializerNode;\n\n if (!global.is(CommonFlags.RESOLVED)) {\n\n // Resolve type if annotated\n if (typeNode) {\n let resolvedType = this.resolver.resolveType(typeNode, global.parent); // reports\n if (!resolvedType) return false;\n if (resolvedType == Type.void) {\n this.error(\n DiagnosticCode.Type_expected,\n typeNode.range\n );\n return false;\n }\n global.setType(resolvedType);\n\n // Otherwise infer type from initializer\n } else if (initializerNode) {\n let previousFlow = this.currentFlow;\n if (global.hasDecorator(DecoratorFlags.LAZY)) {\n this.currentFlow = global.file.startFunction.flow;\n }\n initExpr = this.compileExpression(initializerNode, Type.auto, // reports\n Constraints.MUST_WRAP | Constraints.WILL_RETAIN\n );\n if (this.skippedAutoreleases.has(initExpr)) initAutoreleaseSkipped = true;\n this.currentFlow = previousFlow;\n if (this.currentType == Type.void) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n initializerNode.range, this.currentType.toString(), \"\"\n );\n return false;\n }\n global.setType(this.currentType);\n\n // Error if there's neither a type nor an initializer\n } else {\n this.error(\n DiagnosticCode.Type_expected,\n global.identifierNode.range.atEnd\n );\n return false;\n }\n }\n\n // Handle ambient builtins like '__heap_base' that need to be resolved but are added explicitly\n if (global.is(CommonFlags.AMBIENT) && global.hasDecorator(DecoratorFlags.BUILTIN)) {\n if (global.internalName == BuiltinSymbols.heap_base) this.runtimeFeatures |= RuntimeFeatures.HEAP;\n else if (global.internalName == BuiltinSymbols.rtti_base) this.runtimeFeatures |= RuntimeFeatures.RTTI;\n return true;\n }\n\n var type = global.type;\n var nativeType = type.toNativeType();\n var isDeclaredConstant = global.is(CommonFlags.CONST) || global.is(CommonFlags.STATIC | CommonFlags.READONLY);\n var isDeclaredInline = global.hasDecorator(DecoratorFlags.INLINE);\n\n // Handle imports\n if (global.is(CommonFlags.AMBIENT)) {\n\n // Constant global or mutable globals enabled\n if (isDeclaredConstant || this.options.hasFeature(Feature.MUTABLE_GLOBAL)) {\n global.set(CommonFlags.MODULE_IMPORT);\n mangleImportName(global, global.declaration);\n module.addGlobalImport(\n global.internalName,\n mangleImportName_moduleName,\n mangleImportName_elementName,\n nativeType\n );\n global.set(CommonFlags.COMPILED);\n return true;\n\n // Importing mutable globals is not supported in the MVP\n } else {\n this.error(\n DiagnosticCode.Operation_not_supported,\n global.declaration.range\n );\n }\n return false;\n }\n\n // The MVP does not yet support initializer expressions other than constant values (and constant\n // get_globals), hence such initializations must be performed in the start function for now.\n var initializeInStart = false;\n\n // Evaluate initializer if present\n if (initializerNode) {\n if (!initExpr) {\n let previousFlow = this.currentFlow;\n if (global.hasDecorator(DecoratorFlags.LAZY)) {\n this.currentFlow = global.file.startFunction.flow;\n }\n initExpr = this.compileExpression(initializerNode, type,\n Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP | Constraints.WILL_RETAIN | Constraints.PREFER_STATIC\n );\n if (this.skippedAutoreleases.has(initExpr)) initAutoreleaseSkipped = true;\n this.currentFlow = previousFlow;\n }\n\n if (getExpressionId(initExpr) != ExpressionId.Const) {\n if (isDeclaredConstant) {\n initExpr = module.precomputeExpression(initExpr);\n if (getExpressionId(initExpr) != ExpressionId.Const) initializeInStart = true;\n } else {\n initializeInStart = true;\n }\n }\n\n // Explicitly inline if annotated\n if (isDeclaredInline) {\n if (initializeInStart) {\n this.warning(\n DiagnosticCode.Mutable_value_cannot_be_inlined,\n initializerNode.range\n );\n } else {\n assert(getExpressionId(initExpr) == ExpressionId.Const);\n let exprType = getExpressionType(initExpr);\n switch (exprType) {\n case NativeType.I32: {\n global.constantValueKind = ConstantValueKind.INTEGER;\n global.constantIntegerValue = i64_new(getConstValueI32(initExpr), 0);\n break;\n }\n case NativeType.I64: {\n global.constantValueKind = ConstantValueKind.INTEGER;\n global.constantIntegerValue = i64_new(\n getConstValueI64Low(initExpr),\n getConstValueI64High(initExpr)\n );\n break;\n }\n case NativeType.F32: {\n global.constantValueKind = ConstantValueKind.FLOAT;\n global.constantFloatValue = getConstValueF32(initExpr);\n break;\n }\n case NativeType.F64: {\n global.constantValueKind = ConstantValueKind.FLOAT;\n global.constantFloatValue = getConstValueF64(initExpr);\n break;\n }\n default: {\n assert(false);\n return false;\n }\n }\n global.set(CommonFlags.INLINED); // inline the value from now on\n }\n }\n\n // Initialize to zero if there's no initializer\n } else {\n initExpr = type.toNativeZero(module);\n }\n\n var internalName = global.internalName;\n\n if (initializeInStart) { // initialize to mutable zero and set the actual value in start\n if (isDeclaredInline) {\n this.error(\n DiagnosticCode.Decorator_0_is_not_valid_here,\n assert(findDecorator(DecoratorKind.INLINE, global.decoratorNodes)).range, \"inline\"\n );\n }\n module.addGlobal(internalName, nativeType, true, type.toNativeZero(module));\n if (type.isManaged && !initAutoreleaseSkipped) initExpr = this.makeRetain(initExpr);\n this.currentBody.push(\n module.global_set(internalName, initExpr)\n );\n } else if (!isDeclaredInline) { // compile normally\n module.addGlobal(internalName, nativeType, !isDeclaredConstant, initExpr);\n }\n return true;\n }\n\n // === Enums ====================================================================================\n\n compileEnum(element: Enum): bool {\n if (element.is(CommonFlags.COMPILED)) return true;\n element.set(CommonFlags.COMPILED);\n\n var module = this.module;\n this.currentEnum = element;\n var previousValue: EnumValue | null = null;\n var previousValueIsMut = false;\n var isInline = element.is(CommonFlags.CONST) || element.hasDecorator(DecoratorFlags.INLINE);\n\n if (element.members) {\n for (let member of element.members.values()) {\n if (member.kind != ElementKind.ENUMVALUE) continue; // happens if an enum is also a namespace\n let initInStart = false;\n let val = member;\n let valueNode = val.valueNode;\n val.set(CommonFlags.COMPILED);\n let previousFlow = this.currentFlow;\n if (element.hasDecorator(DecoratorFlags.LAZY)) {\n this.currentFlow = element.file.startFunction.flow;\n }\n let initExpr: ExpressionRef;\n if (valueNode) {\n initExpr = this.compileExpression(valueNode, Type.i32,\n Constraints.CONV_IMPLICIT // autorelease is not applicable in i32 context\n );\n if (getExpressionId(initExpr) != ExpressionId.Const) {\n initExpr = module.precomputeExpression(initExpr);\n if (getExpressionId(initExpr) != ExpressionId.Const) {\n if (element.is(CommonFlags.CONST)) {\n this.error(\n DiagnosticCode.In_const_enum_declarations_member_initializer_must_be_constant_expression,\n valueNode.range\n );\n }\n initInStart = true;\n }\n }\n } else if (previousValue == null) {\n initExpr = module.i32(0);\n } else {\n if (previousValueIsMut) {\n this.error(\n DiagnosticCode.Enum_member_must_have_initializer,\n (member).identifierNode.range.atEnd\n );\n }\n initExpr = module.binary(BinaryOp.AddI32,\n module.global_get(previousValue.internalName, NativeType.I32),\n module.i32(1)\n );\n initExpr = module.precomputeExpression(initExpr);\n if (getExpressionId(initExpr) != ExpressionId.Const) {\n if (element.is(CommonFlags.CONST)) {\n this.error(\n DiagnosticCode.In_const_enum_declarations_member_initializer_must_be_constant_expression,\n member.declaration.range\n );\n }\n initInStart = true;\n }\n }\n this.currentFlow = previousFlow;\n if (initInStart) {\n module.addGlobal(val.internalName, NativeType.I32, true, module.i32(0));\n this.currentBody.push(\n this.makeGlobalAssignment(val, initExpr, false)\n );\n previousValueIsMut = true;\n } else {\n if (isInline) {\n val.setConstantIntegerValue(i64_new(getConstValueI32(initExpr)), Type.i32);\n if (val.is(CommonFlags.MODULE_EXPORT)) {\n module.addGlobal(val.internalName, NativeType.I32, false, initExpr);\n }\n } else {\n module.addGlobal(val.internalName, NativeType.I32, false, initExpr);\n }\n val.isImmutable = true;\n previousValueIsMut = false;\n }\n previousValue = val;\n }\n }\n this.currentEnum = null;\n return true;\n }\n\n // === Functions ================================================================================\n\n /** Resolves the specified type arguments prior to compiling the resulting function instance. */\n compileFunctionUsingTypeArguments(\n prototype: FunctionPrototype,\n typeArguments: NamedTypeNode[],\n contextualTypeArguments: Map = makeMap(),\n alternativeReportNode: Node | null = null\n ): Function | null {\n if (prototype.hasDecorator(DecoratorFlags.BUILTIN)) return null;\n var instance = this.resolver.resolveFunctionInclTypeArguments(\n prototype,\n typeArguments,\n prototype.parent, // relative to itself\n contextualTypeArguments,\n alternativeReportNode || prototype.declaration\n );\n if (!instance) return null;\n if (!this.compileFunction(instance)) return null; // reports\n return instance;\n }\n\n /** Either reuses or creates the function type matching the specified signature. */\n ensureFunctionType(\n parameterTypes: Type[] | null,\n returnType: Type,\n thisType: Type | null = null\n ): FunctionTypeRef {\n var numParameters = parameterTypes ? parameterTypes.length : 0;\n var paramTypes: NativeType[];\n var index = 0;\n if (thisType) {\n paramTypes = new Array(1 + numParameters);\n paramTypes[0] = thisType.toNativeType();\n index = 1;\n } else {\n paramTypes = new Array(numParameters);\n }\n if (parameterTypes) {\n for (let i = 0; i < numParameters; ++i, ++index) {\n paramTypes[index] = parameterTypes[i].toNativeType();\n }\n }\n var resultType = returnType.toNativeType();\n var module = this.module;\n var typeRef = module.getFunctionTypeBySignature(resultType, paramTypes);\n if (!typeRef) {\n let name = Signature.makeSignatureString(parameterTypes, returnType, thisType);\n typeRef = module.addFunctionType(name, resultType, paramTypes);\n }\n return typeRef;\n }\n\n /** Compiles the body of a function within the specified flow. */\n compileFunctionBody(\n /** Function to compile. */\n instance: Function,\n /** Target array of statements. */\n stmts: ExpressionRef[] | null = null\n ): ExpressionRef[] {\n var module = this.module;\n var bodyNode = assert(instance.prototype.bodyNode);\n var returnType = instance.signature.returnType;\n var flow = this.currentFlow;\n\n // compile statements\n if (bodyNode.kind == NodeKind.BLOCK) {\n stmts = this.compileStatements((bodyNode).statements, true, stmts);\n } else {\n // must be an expression statement if not a block\n assert(bodyNode.kind == NodeKind.EXPRESSION);\n\n // must be an arrow function\n assert(instance.prototype.arrowKind);\n\n // none of the following can be an arrow function\n assert(!instance.isAny(CommonFlags.CONSTRUCTOR | CommonFlags.GET | CommonFlags.SET | CommonFlags.MAIN));\n\n let expr = this.compileExpression((bodyNode).expression, returnType,\n Constraints.CONV_IMPLICIT\n );\n if (!stmts) stmts = [ expr ];\n else stmts.push(expr);\n if (!flow.is(FlowFlags.TERMINATES)) { // TODO: detect if returning an autorelease local?\n let indexBefore = stmts.length;\n this.performAutoreleases(flow, stmts);\n this.finishAutoreleases(flow, stmts);\n let canOverflow = flow.canOverflow(expr, returnType);\n let nonNull = flow.isNonnull(expr, returnType);\n if (stmts.length > indexBefore) {\n let temp = flow.getAndFreeTempLocal(returnType);\n if (!canOverflow) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED);\n if (nonNull) flow.setLocalFlag(temp.index, LocalFlags.NONNULL);\n stmts[indexBefore - 1] = module.local_set(temp.index, expr);\n stmts.push(module.local_get(temp.index, returnType.toNativeType()));\n }\n if (!canOverflow) flow.set(FlowFlags.RETURNS_WRAPPED);\n if (nonNull) flow.set(FlowFlags.RETURNS_NONNULL);\n flow.set(FlowFlags.RETURNS | FlowFlags.TERMINATES);\n }\n }\n\n // make constructors return their instance pointer\n if (instance.is(CommonFlags.CONSTRUCTOR)) {\n let nativeSizeType = this.options.nativeSizeType;\n assert(instance.is(CommonFlags.INSTANCE));\n let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS);\n\n if (!flow.is(FlowFlags.TERMINATES)) {\n let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_));\n\n // if `this` wasn't accessed before, allocate if necessary and initialize `this`\n if (!flow.is(FlowFlags.ALLOCATES)) {\n // {\n // if (!this) this = \n // this.a = X\n // this.b = Y\n // }\n stmts.push(\n module.if(\n module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32,\n module.local_get(thisLocal.index, nativeSizeType)\n ),\n module.local_set(thisLocal.index,\n this.makeRetain(\n this.makeAllocation(classInstance)\n ),\n )\n )\n );\n this.makeFieldInitialization(classInstance, stmts);\n }\n this.performAutoreleases(flow, stmts); // `this` is excluded anyway\n this.finishAutoreleases(flow, stmts);\n stmts.push(module.local_get(thisLocal.index, this.options.nativeSizeType));\n flow.set(FlowFlags.RETURNS | FlowFlags.RETURNS_NONNULL | FlowFlags.TERMINATES);\n }\n\n // check that super has been called if this is a derived class\n if ((classInstance).base && !flow.is(FlowFlags.CALLS_SUPER)) {\n this.error(\n DiagnosticCode.Constructors_for_derived_classes_must_contain_a_super_call,\n instance.prototype.declaration.range\n );\n }\n\n // if this is a normal function, make sure that all branches terminate\n } else if (returnType != Type.void && !flow.is(FlowFlags.TERMINATES)) {\n this.error(\n DiagnosticCode.A_function_whose_declared_type_is_not_void_must_return_a_value,\n instance.prototype.functionTypeNode.returnType.range\n );\n }\n\n return stmts;\n }\n\n /** Compiles a readily resolved function instance. */\n compileFunction(instance: Function): bool {\n if (instance.is(CommonFlags.COMPILED)) return true;\n assert(!(instance.is(CommonFlags.AMBIENT) && instance.hasDecorator(DecoratorFlags.BUILTIN)));\n\n var previousType = this.currentType; // remember to retain it if compiling a function lazily\n instance.set(CommonFlags.COMPILED);\n\n var module = this.module;\n var signature = instance.signature;\n var bodyNode = instance.prototype.bodyNode;\n\n var typeRef = this.ensureFunctionType(signature.parameterTypes, signature.returnType, signature.thisType);\n var funcRef: FunctionRef;\n\n // concrete function\n if (bodyNode) {\n\n // must not be ambient\n if (instance.is(CommonFlags.AMBIENT)) {\n this.error(\n DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,\n instance.identifierNode.range\n );\n }\n\n // cannot have an annotated external name\n if (instance.hasDecorator(DecoratorFlags.EXTERNAL)) {\n let decoratorNodes = instance.decoratorNodes;\n let decorator = assert(findDecorator(DecoratorKind.EXTERNAL, decoratorNodes));\n this.error(\n DiagnosticCode.Operation_not_supported,\n decorator.range\n );\n }\n\n // compile body in this function's context\n let previousFlow = this.currentFlow;\n let flow = instance.flow;\n this.currentFlow = flow;\n let stmts = new Array();\n\n // retain each argument for as long as the function lives\n let index = 0;\n let thisType = signature.thisType;\n if (thisType) {\n // No need to retain `this` as it can't be reassigned and thus can't become prematurely released\n ++index;\n }\n let parameterTypes = signature.parameterTypes;\n for (let i = 0, k = parameterTypes.length; i < k; ++i, ++index) {\n let type = parameterTypes[i];\n if (type.isManaged) {\n stmts.push(\n module.drop(\n this.makeRetain(\n module.local_get(index, type.toNativeType())\n )\n )\n );\n flow.setLocalFlag(index, LocalFlags.RETAINED);\n }\n }\n\n this.compileFunctionBody(instance, stmts);\n if (!flow.is(FlowFlags.TERMINATES)) {\n this.performAutoreleases(flow, stmts);\n this.finishAutoreleases(flow, stmts);\n }\n this.currentFlow = previousFlow;\n\n // create the function\n funcRef = module.addFunction(\n instance.internalName,\n typeRef,\n typesToNativeTypes(instance.additionalLocals),\n flatten(module, stmts, instance.signature.returnType.toNativeType())\n );\n\n // imported function\n } else {\n if (!instance.is(CommonFlags.AMBIENT)) {\n this.error(\n DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,\n instance.identifierNode.range\n );\n }\n\n instance.set(CommonFlags.MODULE_IMPORT);\n mangleImportName(instance, instance.declaration); // TODO: check for duplicates\n\n // create the import\n funcRef = module.addFunctionImport(\n instance.internalName,\n mangleImportName_moduleName,\n mangleImportName_elementName,\n typeRef\n );\n }\n\n instance.finalize(module, funcRef);\n this.currentType = previousType;\n return true;\n }\n\n // === Classes ==================================================================================\n\n compileClassUsingTypeArguments(\n prototype: ClassPrototype,\n typeArguments: NamedTypeNode[],\n contextualTypeArguments: Map = makeMap(),\n alternativeReportNode: Node | null = null\n ): void {\n var instance = this.resolver.resolveClassInclTypeArguments(\n prototype,\n typeArguments,\n prototype.parent, // relative to itself\n contextualTypeArguments,\n alternativeReportNode || prototype.declaration\n );\n if (!instance) return;\n this.compileClass(instance);\n }\n\n compileClass(instance: Class): bool {\n if (instance.is(CommonFlags.COMPILED)) return true;\n instance.set(CommonFlags.COMPILED);\n var prototype = instance.prototype;\n var staticMembers = (prototype).members;\n if (staticMembers) {\n for (let element of staticMembers.values()) {\n switch (element.kind) {\n case ElementKind.GLOBAL: {\n this.compileGlobal(element);\n break;\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n if (\n !(element).is(CommonFlags.GENERIC)\n ) {\n this.compileFunctionUsingTypeArguments(\n element,\n [],\n makeMap(),\n (element).identifierNode\n );\n }\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n let getter = (element).getterPrototype;\n if (getter) {\n this.compileFunctionUsingTypeArguments(\n getter,\n [],\n makeMap(),\n getter.identifierNode\n );\n }\n let setter = (element).setterPrototype;\n if (setter) {\n this.compileFunctionUsingTypeArguments(\n setter,\n [],\n makeMap(),\n setter.identifierNode\n );\n }\n break;\n }\n case ElementKind.PROPERTY: {\n }\n }\n }\n }\n var ctorInstance = instance.constructorInstance;\n if (ctorInstance) this.compileFunction(ctorInstance);\n var instanceMembers = instance.members;\n if (instanceMembers) {\n for (let element of instanceMembers.values()) {\n switch (element.kind) {\n case ElementKind.FUNCTION_PROTOTYPE: {\n if (\n !(element).is(CommonFlags.GENERIC)\n ) {\n this.compileFunctionUsingTypeArguments(\n element,\n [],\n makeMap(instance.contextualTypeArguments),\n (element).declaration.name\n );\n }\n break;\n }\n case ElementKind.FIELD_PROTOTYPE: {\n element.set(CommonFlags.COMPILED);\n break;\n }\n case ElementKind.PROPERTY: {\n let getter = (element).getterInstance;\n if (getter) this.compileFunction(getter);\n let setter = (element).setterInstance;\n if (setter) this.compileFunction(setter);\n break;\n }\n }\n }\n }\n return true;\n }\n\n compileInterfaceDeclaration(\n declaration: InterfaceDeclaration,\n typeArguments: NamedTypeNode[],\n contextualTypeArguments: Map | null = null,\n alternativeReportNode: Node | null = null\n ): void {\n // TODO\n this.error(\n DiagnosticCode.Operation_not_supported,\n declaration.range\n );\n }\n\n // === Memory ===================================================================================\n\n /** Adds a static memory segment with the specified data. */\n addMemorySegment(buffer: Uint8Array, alignment: i32 = 8): MemorySegment {\n var memoryOffset = i64_align(this.memoryOffset, alignment);\n var segment = MemorySegment.create(buffer, memoryOffset);\n this.memorySegments.push(segment);\n this.memoryOffset = i64_add(memoryOffset, i64_new(buffer.length, 0));\n return segment;\n }\n\n /** Ensures that the specified string exists in static memory and returns a pointer to it. */\n ensureStaticString(stringValue: string): ExpressionRef {\n var program = this.program;\n var rtHeaderSize = program.runtimeHeaderSize;\n var stringInstance = assert(program.stringInstance);\n var stringSegment: MemorySegment;\n var segments = this.stringSegments;\n if (segments.has(stringValue)) {\n stringSegment = segments.get(stringValue)!; // reuse\n } else {\n let length = stringValue.length;\n let buffer = new Uint8Array(rtHeaderSize + (length << 1));\n program.writeRuntimeHeader(buffer, 0, stringInstance, length << 1);\n for (let i = 0; i < length; ++i) {\n writeI16(stringValue.charCodeAt(i), buffer, rtHeaderSize + (i << 1));\n }\n stringSegment = this.addMemorySegment(buffer);\n segments.set(stringValue, stringSegment);\n }\n var ref = i64_add(stringSegment.offset, i64_new(rtHeaderSize));\n this.currentType = stringInstance.type;\n if (this.options.isWasm64) {\n return this.module.i64(i64_low(ref), i64_high(ref));\n } else {\n assert(i64_is_u32(ref));\n return this.module.i32(i64_low(ref));\n }\n }\n\n ensureStaticArrayBuffer(elementType: Type, values: ExpressionRef[]): MemorySegment {\n var program = this.program;\n var length = values.length;\n var byteSize = elementType.byteSize;\n var byteLength = length * byteSize;\n var bufferInstance = assert(program.arrayBufferInstance);\n var runtimeHeaderSize = program.runtimeHeaderSize;\n\n var buf = new Uint8Array(runtimeHeaderSize + byteLength);\n program.writeRuntimeHeader(buf, 0, bufferInstance, byteLength);\n var pos = runtimeHeaderSize;\n var nativeType = elementType.toNativeType();\n switch (nativeType) {\n case NativeType.I32: {\n switch (byteSize) {\n case 1: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeI8(getConstValueI32(value), buf, pos);\n pos += 1;\n }\n break;\n }\n case 2: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeI16(getConstValueI32(value), buf, pos);\n pos += 2;\n }\n break;\n }\n case 4: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeI32(getConstValueI32(value), buf, pos);\n pos += 4;\n }\n break;\n }\n default: assert(false);\n }\n break;\n }\n case NativeType.I64: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeI64(i64_new(getConstValueI64Low(value), getConstValueI64High(value)), buf, pos);\n pos += 8;\n }\n break;\n }\n case NativeType.F32: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeF32(getConstValueF32(value), buf, pos);\n pos += 4;\n }\n break;\n }\n case NativeType.F64: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeF64(getConstValueF64(value), buf, pos);\n pos += 8;\n }\n break;\n }\n default: assert(false);\n }\n assert(pos == buf.length);\n\n return this.addMemorySegment(buf);\n }\n\n ensureStaticArrayHeader(elementType: Type, bufferSegment: MemorySegment): MemorySegment {\n var program = this.program;\n var runtimeHeaderSize = program.runtimeHeaderSize;\n var arrayPrototype = assert(program.arrayPrototype);\n var arrayInstance = assert(this.resolver.resolveClass(arrayPrototype, [ elementType ]));\n var arrayInstanceSize = arrayInstance.currentMemoryOffset;\n var bufferLength = bufferSegment.buffer.length - runtimeHeaderSize;\n var arrayLength = i32(bufferLength / elementType.byteSize);\n\n var buf = new Uint8Array(runtimeHeaderSize + arrayInstanceSize);\n program.writeRuntimeHeader(buf, 0, arrayInstance, arrayInstanceSize);\n\n var bufferAddress32 = i64_low(bufferSegment.offset) + runtimeHeaderSize;\n assert(!program.options.isWasm64); // TODO\n assert(arrayInstance.writeField(\"data\", bufferAddress32, buf, runtimeHeaderSize));\n assert(arrayInstance.writeField(\"dataStart\", bufferAddress32, buf, runtimeHeaderSize));\n assert(arrayInstance.writeField(\"dataLength\", bufferLength, buf, runtimeHeaderSize));\n assert(arrayInstance.writeField(\"length_\", arrayLength, buf, runtimeHeaderSize));\n\n return this.addMemorySegment(buf);\n }\n\n // === Table ====================================================================================\n\n /** Ensures that a table entry exists for the specified function and returns its index. */\n ensureFunctionTableEntry(func: Function): i32 {\n assert(func.is(CommonFlags.COMPILED));\n if (func.functionTableIndex >= 0) {\n return func.functionTableIndex;\n }\n var functionTable = this.functionTable;\n var index = functionTable.length;\n if (!func.is(CommonFlags.TRAMPOLINE) && func.signature.requiredParameters < func.signature.parameterTypes.length) {\n // insert the trampoline if the function has optional parameters\n func = this.ensureTrampoline(func);\n }\n functionTable.push(func.internalName);\n func.functionTableIndex = index;\n return index;\n }\n\n // === Statements ===============================================================================\n\n compileTopLevelStatement(statement: Statement, body: ExpressionRef[]): void {\n if (statement.kind == NodeKind.EXPORTDEFAULT) {\n statement = (statement).declaration;\n }\n switch (statement.kind) {\n case NodeKind.CLASSDECLARATION: {\n let memberStatements = (statement).members;\n for (let i = 0, k = memberStatements.length; i < k; ++i) {\n this.compileTopLevelStatement(memberStatements[i], body);\n }\n break;\n }\n case NodeKind.ENUMDECLARATION: {\n let element = this.program.getElementByDeclaration(statement);\n assert(element.kind == ElementKind.ENUM);\n if (!element.hasDecorator(DecoratorFlags.LAZY)) this.compileEnum(element);\n break;\n }\n case NodeKind.NAMESPACEDECLARATION: {\n let memberStatements = (statement).members;\n for (let i = 0, k = memberStatements.length; i < k; ++i) {\n this.compileTopLevelStatement(memberStatements[i], body);\n }\n break;\n }\n case NodeKind.VARIABLE: {\n let declarations = (statement).declarations;\n for (let i = 0, k = declarations.length; i < k; ++i) {\n let element = this.program.getElementByDeclaration(declarations[i]);\n assert(element.kind == ElementKind.GLOBAL);\n if (\n !element.is(CommonFlags.AMBIENT) && // delay imports\n !element.hasDecorator(DecoratorFlags.LAZY)\n ) this.compileGlobal(element);\n }\n break;\n }\n case NodeKind.FIELDDECLARATION: {\n let element = this.program.getElementByDeclaration(statement);\n if (element.kind == ElementKind.GLOBAL) { // static\n if (!element.hasDecorator(DecoratorFlags.LAZY)) this.compileGlobal(element);\n }\n break;\n }\n case NodeKind.EXPORT: {\n if ((statement).normalizedPath != null) {\n this.compileFileByPath(\n (statement).normalizedPath,\n (statement).path\n );\n }\n break;\n }\n case NodeKind.IMPORT: {\n this.compileFileByPath(\n (statement).normalizedPath,\n (statement).path\n );\n break;\n }\n case NodeKind.FUNCTIONDECLARATION:\n case NodeKind.METHODDECLARATION:\n case NodeKind.INTERFACEDECLARATION:\n case NodeKind.INDEXSIGNATUREDECLARATION:\n case NodeKind.TYPEDECLARATION: break;\n default: { // otherwise a top-level statement that is part of the start function's body\n let stmt = this.compileStatement(statement);\n if (getExpressionId(stmt) != ExpressionId.Nop) body.push(stmt);\n break;\n }\n }\n }\n\n compileStatement(\n statement: Statement,\n isLastInBody: bool = false\n ): ExpressionRef {\n var module = this.module;\n var stmt: ExpressionRef;\n switch (statement.kind) {\n case NodeKind.BLOCK: {\n stmt = this.compileBlockStatement(statement);\n break;\n }\n case NodeKind.BREAK: {\n stmt = this.compileBreakStatement(statement);\n break;\n }\n case NodeKind.CONTINUE: {\n stmt = this.compileContinueStatement(statement);\n break;\n }\n case NodeKind.DO: {\n stmt = this.compileDoStatement(statement);\n break;\n }\n case NodeKind.EMPTY: {\n stmt = this.compileEmptyStatement(statement);\n break;\n }\n case NodeKind.EXPRESSION: {\n stmt = this.compileExpressionStatement(statement);\n break;\n }\n case NodeKind.FOR: {\n stmt = this.compileForStatement(statement);\n break;\n }\n case NodeKind.IF: {\n stmt = this.compileIfStatement(statement);\n break;\n }\n case NodeKind.RETURN: {\n stmt = this.compileReturnStatement(statement, isLastInBody);\n break;\n }\n case NodeKind.SWITCH: {\n stmt = this.compileSwitchStatement(statement);\n break;\n }\n case NodeKind.THROW: {\n stmt = this.compileThrowStatement(statement);\n break;\n }\n case NodeKind.TRY: {\n stmt = this.compileTryStatement(statement);\n break;\n }\n case NodeKind.VARIABLE: {\n stmt = this.compileVariableStatement(statement);\n if (!stmt) stmt = module.nop();\n break;\n }\n case NodeKind.VOID: {\n stmt = this.compileVoidStatement(statement);\n break;\n }\n case NodeKind.WHILE: {\n stmt = this.compileWhileStatement(statement);\n break;\n }\n case NodeKind.TYPEDECLARATION: {\n // TODO: integrate inner type declaration into flow\n this.error(\n DiagnosticCode.Operation_not_supported,\n statement.range\n );\n stmt = module.unreachable();\n break;\n }\n default: {\n assert(false);\n stmt = module.unreachable();\n }\n }\n if (this.options.sourceMap) this.addDebugLocation(stmt, statement.range);\n return stmt;\n }\n\n compileStatements(\n statements: Statement[],\n isBody: bool = false,\n stmts: ExpressionRef[] | null = null\n ): ExpressionRef[] {\n var numStatements = statements.length;\n if (!stmts) {\n stmts = new Array(numStatements);\n stmts.length = 0;\n }\n var module = this.module;\n var flow = this.currentFlow;\n for (let i = 0; i < numStatements; ++i) {\n let stmt = this.compileStatement(statements[i], isBody && i == numStatements - 1);\n switch (getExpressionId(stmt)) {\n case ExpressionId.Block: {\n if (!getBlockName(stmt)) {\n for (let j = 0, k = getBlockChildCount(stmt); j < k; ++j) stmts.push(getBlockChild(stmt, j));\n break;\n }\n // fall-through\n }\n default: stmts.push(stmt);\n case ExpressionId.Nop:\n }\n if (flow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) {\n if (needsExplicitUnreachable(stmt)) stmts.push(module.unreachable());\n break;\n }\n }\n return stmts;\n }\n\n compileBlockStatement(\n statement: BlockStatement\n ): ExpressionRef {\n var statements = statement.statements;\n var outerFlow = this.currentFlow;\n var innerFlow = outerFlow.fork();\n this.currentFlow = innerFlow;\n\n var stmts = this.compileStatements(statements);\n if (!innerFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(innerFlow, stmts);\n innerFlow.freeScopedLocals();\n outerFlow.inherit(innerFlow); // TODO: only if not terminated?\n this.currentFlow = outerFlow;\n return flatten(this.module, stmts, NativeType.None);\n }\n\n compileBreakStatement(\n statement: BreakStatement\n ): ExpressionRef {\n var module = this.module;\n if (statement.label) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n statement.label.range\n );\n return module.unreachable();\n }\n var flow = this.currentFlow;\n var breakLabel = flow.breakLabel;\n if (breakLabel == null) {\n this.error(\n DiagnosticCode.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement,\n statement.range\n );\n return module.unreachable();\n }\n var stmts = new Array();\n this.performAutoreleases(flow, stmts);\n var parent = flow.parent;\n while (parent !== null && parent.breakLabel == breakLabel) {\n this.performAutoreleases(parent, stmts, /* clearFlags */ false);\n parent = parent.parent;\n }\n flow.freeScopedLocals();\n stmts.push(module.br(breakLabel));\n flow.set(FlowFlags.BREAKS);\n return flatten(module, stmts, NativeType.None);\n }\n\n compileContinueStatement(\n statement: ContinueStatement\n ): ExpressionRef {\n var module = this.module;\n var label = statement.label;\n if (label) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n label.range\n );\n return module.unreachable();\n }\n // Check if 'continue' is allowed here\n var flow = this.currentFlow;\n var continueLabel = flow.continueLabel;\n if (continueLabel == null) {\n this.error(\n DiagnosticCode.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement,\n statement.range\n );\n return module.unreachable();\n }\n flow.set(FlowFlags.CONTINUES | FlowFlags.TERMINATES);\n var stmts = new Array();\n this.performAutoreleases(flow, stmts);\n var current: Flow | null = flow.parent;\n while (current && current.continueLabel === continueLabel) {\n this.performAutoreleases(current, stmts, /* clearFlags */ false);\n current = current.parent;\n }\n flow.freeScopedLocals();\n stmts.push(module.br(continueLabel));\n return flatten(module, stmts, NativeType.None);\n }\n\n compileDoStatement(\n statement: DoStatement\n ): ExpressionRef {\n var module = this.module;\n\n var outerFlow = this.currentFlow;\n var label = outerFlow.pushBreakLabel();\n var innerFlow = outerFlow.fork();\n this.currentFlow = innerFlow;\n var breakLabel = \"break|\" + label;\n innerFlow.breakLabel = breakLabel;\n var continueLabel = \"continue|\" + label;\n innerFlow.continueLabel = continueLabel;\n\n var stmts = new Array();\n if (statement.statement.kind == NodeKind.BLOCK) {\n this.compileStatements((statement.statement).statements, false, stmts);\n } else {\n stmts.push(\n this.compileStatement(statement.statement)\n );\n }\n var condExpr = module.precomputeExpression(\n this.makeIsTrueish(\n this.compileExpression(statement.condition, Type.i32),\n this.currentType\n )\n );\n var alwaysFalse = false;\n if (getExpressionId(condExpr) == ExpressionId.Const) {\n assert(getExpressionType(condExpr) == NativeType.I32);\n if (!getConstValueI32(condExpr)) alwaysFalse = true;\n }\n var terminates = innerFlow.is(FlowFlags.TERMINATES);\n var continues = innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES);\n var breaks = innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS);\n\n // (block $break ;; (1) skip if no breaks\n // (loop $continue ;; (2) skip if skipping (4) + no continues\n // (...) ;; (3)\n // (br_if cond $continue) ;; (4) skip if (3) does not fall through or always false\n // )\n // )\n var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS);\n\n if (fallsThrough && !alwaysFalse) { // (4)\n stmts.push(module.br(continueLabel, condExpr));\n }\n var expr = flatten(module, stmts, NativeType.None);\n if (fallsThrough && !alwaysFalse || continues) { // (2)\n expr = module.loop(continueLabel, expr);\n }\n if (breaks) { // (1)\n expr = module.block(breakLabel, [ expr ]);\n }\n\n // Switch back to the parent flow\n if (!terminates) this.performAutoreleases(innerFlow, stmts);\n innerFlow.freeScopedLocals();\n outerFlow.popBreakLabel();\n innerFlow.unset(\n FlowFlags.BREAKS |\n FlowFlags.CONDITIONALLY_BREAKS |\n FlowFlags.CONTINUES |\n FlowFlags.CONDITIONALLY_CONTINUES\n );\n outerFlow.inherit(innerFlow);\n this.currentFlow = outerFlow;\n return expr;\n }\n\n compileEmptyStatement(\n statement: EmptyStatement\n ): ExpressionRef {\n return this.module.nop();\n }\n\n compileExpressionStatement(\n statement: ExpressionStatement\n ): ExpressionRef {\n return this.compileExpression(statement.expression, Type.void, Constraints.CONV_IMPLICIT);\n }\n\n compileForStatement(\n statement: ForStatement\n ): ExpressionRef {\n var module = this.module;\n\n // Set up and use the inner flow\n var outerFlow = this.currentFlow;\n var label = outerFlow.pushBreakLabel();\n var innerFlow = outerFlow.fork();\n this.currentFlow = innerFlow;\n\n // Compile the initializer\n var initializer = statement.initializer;\n var initExpr: ExpressionRef = 0;\n if (initializer) initExpr = this.compileStatement(initializer);\n\n // Compile the condition\n var condExpr: ExpressionRef = 0;\n var alwaysTrue = false;\n if (statement.condition) {\n condExpr = module.precomputeExpression(\n this.makeIsTrueish(\n this.compileExpression(statement.condition, Type.bool),\n this.currentType\n )\n );\n // Simplify if the condition is constant\n if (getExpressionId(condExpr) == ExpressionId.Const) {\n assert(getExpressionType(condExpr) == NativeType.I32);\n if (getConstValueI32(condExpr) == /* false */ 0) {\n let stmts = new Array();\n if (initExpr) stmts.push(initExpr);\n this.performAutoreleases(innerFlow, stmts);\n innerFlow.freeScopedLocals();\n outerFlow.popBreakLabel();\n this.currentFlow = outerFlow;\n return flatten(module, stmts, NativeType.None);\n }\n alwaysTrue = true;\n }\n } else { // Omitted condition is always true\n condExpr = module.i32(1);\n alwaysTrue = true;\n }\n innerFlow.inheritNonnullIfTrue(condExpr);\n\n // Compile incrementor\n var incrementor = statement.incrementor;\n var incrExpr: ExpressionRef = 0;\n if (incrementor) incrExpr = this.compileExpression(incrementor, Type.void, Constraints.CONV_IMPLICIT | Constraints.WILL_DROP);\n\n // Compile body (break: drop out, continue: fall through to incrementor, + loop)\n var breakLabel = innerFlow.breakLabel = \"break|\" + label; innerFlow.breakLabel = breakLabel;\n innerFlow.breakLabel = breakLabel;\n var continueLabel = \"continue|\" + label;\n innerFlow.continueLabel = continueLabel;\n var loopLabel = \"loop|\" + label;\n var bodyStatement = statement.statement;\n var stmts = new Array();\n if (bodyStatement.kind == NodeKind.BLOCK) {\n this.compileStatements((bodyStatement).statements, false, stmts);\n } else {\n stmts.push(this.compileStatement(bodyStatement));\n }\n var terminates = innerFlow.is(FlowFlags.TERMINATES);\n var continues = innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES);\n var breaks = innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS);\n\n // (block $break ;; (1) skip label (needed anyway) if skipping (4) + no breaks\n // (initializer) ;; (2) [may be empty]\n // (loop $loop ;; (3) skip if (6) does not fall through + no continues\n // (br_if !cond $break) ;; (4) skip if always true\n // (block $continue ;; (5) skip if no continues or nothing else than continue\n // (...) ;; (6)\n // )\n // (incrementor) ;; (7) skip if skipping (3) [may be empty]\n // (br $loop) ;; (8) skip if skipping (3)\n // )\n // )\n var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS);\n var needsLabel = !alwaysTrue || breaks;\n\n var loop = new Array();\n if (!alwaysTrue) { // (4)\n loop.push(module.br(breakLabel, module.unary(UnaryOp.EqzI32, condExpr)));\n }\n if (continues) { // (5)\n if (stmts.length > 1 || getExpressionId(stmts[0]) != ExpressionId.Break) { // otherwise lonely continue\n loop.push(module.block(continueLabel, stmts));\n }\n } else {\n for (let i = 0, k = stmts.length; i < k; ++i) loop.push(stmts[i]);\n }\n var expr: ExpressionRef;\n if (fallsThrough || continues) { // (3)\n if (incrExpr) loop.push(incrExpr); // (7)\n this.performAutoreleases(innerFlow, loop);\n loop.push(module.br(loopLabel)); // (8)\n if (initExpr) { // (2)\n expr = module.block(needsLabel ? breakLabel : null, [\n initExpr,\n module.loop(loopLabel, module.block(null, loop))\n ]);\n } else {\n expr = module.block(needsLabel ? breakLabel : null, [\n module.loop(loopLabel, flatten(module, loop, NativeType.None))\n ]);\n }\n } else {\n if (initExpr) loop.unshift(initExpr); // (2)\n this.performAutoreleases(innerFlow, loop);\n expr = module.block(needsLabel ? breakLabel : null, loop);\n }\n\n // Switch back to the parent flow\n innerFlow.freeScopedLocals();\n outerFlow.popBreakLabel();\n innerFlow.unset(\n FlowFlags.BREAKS |\n FlowFlags.CONDITIONALLY_BREAKS |\n FlowFlags.CONTINUES |\n FlowFlags.CONDITIONALLY_CONTINUES\n );\n if (alwaysTrue) outerFlow.inherit(innerFlow);\n else outerFlow.inheritConditional(innerFlow);\n this.currentFlow = outerFlow;\n return expr;\n }\n\n compileIfStatement(\n statement: IfStatement\n ): ExpressionRef {\n var module = this.module;\n var ifTrue = statement.ifTrue;\n var ifFalse = statement.ifFalse;\n var outerFlow = this.currentFlow;\n\n // The condition doesn't initiate a branch yet\n var condExpr = module.precomputeExpression(\n this.makeIsTrueish(\n this.compileExpression(statement.condition, Type.bool),\n this.currentType\n )\n );\n\n // Try to eliminate unnecesssary branches if the condition is constant\n if (\n getExpressionId(condExpr) == ExpressionId.Const &&\n getExpressionType(condExpr) == NativeType.I32\n ) {\n return getConstValueI32(condExpr)\n ? this.compileStatement(ifTrue)\n : ifFalse\n ? this.compileStatement(ifFalse)\n : module.nop();\n }\n\n // Each arm initiates a branch\n var ifTrueStmts = new Array();\n var ifTrueFlow = outerFlow.fork();\n this.currentFlow = ifTrueFlow;\n ifTrueFlow.inheritNonnullIfTrue(condExpr);\n if (ifTrue.kind == NodeKind.BLOCK) {\n this.compileStatements((ifTrue).statements, false, ifTrueStmts);\n } else {\n ifTrueStmts.push(this.compileStatement(ifTrue));\n }\n if (!ifTrueFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(ifTrueFlow, ifTrueStmts);\n ifTrueFlow.freeScopedLocals();\n this.currentFlow = outerFlow;\n\n if (ifFalse) {\n let ifFalseFlow = outerFlow.fork();\n this.currentFlow = ifFalseFlow;\n ifFalseFlow.inheritNonnullIfFalse(condExpr);\n let ifFalseStmts = new Array();\n if (ifFalse.kind == NodeKind.BLOCK) {\n this.compileStatements((ifFalse).statements, false, ifFalseStmts);\n } else {\n ifFalseStmts.push(this.compileStatement(ifFalse));\n }\n if (!ifFalseFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(ifFalseFlow, ifFalseStmts);\n ifFalseFlow.freeScopedLocals();\n this.currentFlow = outerFlow;\n outerFlow.inheritMutual(ifTrueFlow, ifFalseFlow);\n return module.if(condExpr,\n flatten(module, ifTrueStmts, NativeType.None),\n flatten(module, ifFalseStmts, NativeType.None)\n );\n } else {\n outerFlow.inheritConditional(ifTrueFlow);\n if (ifTrueFlow.is(FlowFlags.TERMINATES)) outerFlow.inheritNonnullIfFalse(condExpr);\n return module.if(condExpr,\n flatten(module, ifTrueStmts, NativeType.None)\n );\n }\n // TODO: Detect neglected condition\n // if (!foo) {\n // foo = [notNull]\n // }\n // foo // is possibly null\n }\n\n compileReturnStatement(\n statement: ReturnStatement,\n isLastInBody: bool\n ): ExpressionRef {\n var module = this.module;\n var expr: ExpressionRef = 0;\n var flow = this.currentFlow;\n var returnType = flow.returnType;\n\n // Remember that this flow returns\n flow.set(FlowFlags.RETURNS | FlowFlags.TERMINATES);\n\n var valueExpression = statement.value;\n if (valueExpression) {\n if (returnType == Type.void) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n valueExpression.range, this.currentType.toString(), returnType.toString()\n );\n this.currentType = Type.void;\n return module.unreachable();\n }\n let constraints = Constraints.CONV_IMPLICIT;\n if (flow.actualFunction.is(CommonFlags.MODULE_EXPORT)) constraints |= Constraints.MUST_WRAP;\n expr = this.compileExpression(valueExpression, returnType, constraints | Constraints.WILL_RETAIN);\n\n // when returning a local, and it is already retained, skip the final set\n // of retaining it as the return value and releasing it as a variable\n if (!this.skippedAutoreleases.has(expr)) {\n if (returnType.isManaged) {\n if (getExpressionId(expr) == ExpressionId.LocalGet) {\n if (flow.isAnyLocalFlag(getLocalGetIndex(expr), LocalFlags.ANY_RETAINED)) {\n flow.unsetLocalFlag(getLocalGetIndex(expr), LocalFlags.ANY_RETAINED);\n this.skippedAutoreleases.add(expr);\n }\n }\n }\n }\n\n // remember return states\n if (!flow.canOverflow(expr, returnType)) flow.set(FlowFlags.RETURNS_WRAPPED);\n if (flow.isNonnull(expr, returnType)) flow.set(FlowFlags.RETURNS_NONNULL);\n\n } else if (returnType != Type.void) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n statement.range, \"void\", returnType.toString()\n );\n expr = module.unreachable();\n }\n\n var stmts = new Array();\n this.performAutoreleases(flow, stmts);\n this.finishAutoreleases(flow, stmts);\n\n // Make sure that the return value is retained for the caller\n if (returnType.isManaged && !this.skippedAutoreleases.has(expr)) expr = this.makeRetain(expr);\n\n if (returnType != Type.void && stmts.length) {\n let temp = flow.getAndFreeTempLocal(returnType);\n if (flow.isNonnull(expr, returnType)) flow.setLocalFlag(temp.index, LocalFlags.NONNULL);\n stmts.unshift(\n module.local_set(temp.index, expr)\n );\n expr = module.local_get(temp.index, returnType.toNativeType());\n }\n flow.freeScopedLocals();\n\n // If the last statement anyway, make it the block's return value\n if (isLastInBody && expr && returnType != Type.void) {\n if (!stmts.length) return expr;\n stmts.push(expr);\n return module.block(null, stmts, returnType.toNativeType());\n }\n\n // When inlining, break to the end of the inlined function's block (no need to wrap)\n if (flow.is(FlowFlags.INLINE_CONTEXT)) {\n if (!stmts.length) return module.br(assert(flow.inlineReturnLabel), 0, expr);\n stmts.push(module.br(assert(flow.inlineReturnLabel), 0, expr));\n // stmts.push(module.createUnreachable());\n return module.block(null, stmts);\n }\n\n // Otherwise emit a normal return\n if (!stmts.length) return module.return(expr);\n stmts.push(module.return(expr));\n return module.block(null, stmts);\n }\n\n compileSwitchStatement(\n statement: SwitchStatement\n ): ExpressionRef {\n var module = this.module;\n\n var cases = statement.cases;\n var numCases = cases.length;\n if (!numCases) {\n return this.compileExpression(statement.condition, Type.void,\n Constraints.CONV_IMPLICIT\n );\n }\n\n // Everything within a switch uses the same break context\n var outerFlow = this.currentFlow;\n var context = outerFlow.pushBreakLabel();\n\n // introduce a local for evaluating the condition (exactly once)\n var tempLocal = outerFlow.getTempLocal(Type.u32);\n var tempLocalIndex = tempLocal.index;\n\n // Prepend initializer to inner block. Does not initiate a new branch, yet.\n var breaks = new Array(1 + numCases);\n breaks[0] = module.local_set( // initializer\n tempLocalIndex,\n this.compileExpression(statement.condition, Type.u32,\n Constraints.CONV_IMPLICIT\n )\n );\n\n // make one br_if per (possibly dynamic) labeled case (binaryen optimizes to br_table where possible)\n var breakIndex = 1;\n var defaultIndex = -1;\n for (let i = 0; i < numCases; ++i) {\n let case_ = cases[i];\n let label = case_.label;\n if (label) {\n breaks[breakIndex++] = module.br(\"case\" + i.toString(10) + \"|\" + context,\n module.binary(BinaryOp.EqI32,\n module.local_get(tempLocalIndex, NativeType.I32),\n this.compileExpression(label, Type.u32,\n Constraints.CONV_IMPLICIT\n )\n )\n );\n } else {\n defaultIndex = i;\n }\n }\n\n outerFlow.freeTempLocal(tempLocal);\n\n // otherwise br to default respectively out of the switch if there is no default case\n breaks[breakIndex] = module.br((defaultIndex >= 0\n ? \"case\" + defaultIndex.toString(10)\n : \"break\"\n ) + \"|\" + context);\n\n // nest blocks in order\n var currentBlock = module.block(\"case0|\" + context, breaks, NativeType.None);\n var commonCategorical = FlowFlags.ANY_CATEGORICAL;\n var commonConditional = 0;\n for (let i = 0; i < numCases; ++i) {\n let case_ = cases[i];\n let statements = case_.statements;\n let numStatements = statements.length;\n\n // Each switch case initiates a new branch\n let innerFlow = outerFlow.fork();\n this.currentFlow = innerFlow;\n let breakLabel = \"break|\" + context;\n innerFlow.breakLabel = breakLabel;\n\n let isLast = i == numCases - 1;\n let nextLabel = isLast ? breakLabel : \"case\" + (i + 1).toString(10) + \"|\" + context;\n let stmts = new Array(1 + numStatements);\n stmts[0] = currentBlock;\n let count = 1;\n let terminates = false;\n for (let j = 0; j < numStatements; ++j) {\n let stmt = this.compileStatement(statements[j]);\n if (getExpressionId(stmt) != ExpressionId.Nop) {\n stmts[count++] = stmt;\n }\n if (innerFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) {\n if (innerFlow.is(FlowFlags.TERMINATES)) terminates = true;\n break;\n }\n }\n stmts.length = count;\n if (terminates || isLast || innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) {\n commonCategorical &= innerFlow.flags;\n }\n commonConditional |= innerFlow.flags & FlowFlags.ANY_CONDITIONAL;\n\n // Switch back to the parent flow\n if (!terminates) this.performAutoreleases(innerFlow, stmts);\n innerFlow.unset(\n FlowFlags.BREAKS |\n FlowFlags.CONDITIONALLY_BREAKS\n );\n innerFlow.freeScopedLocals();\n this.currentFlow = outerFlow;\n currentBlock = module.block(nextLabel, stmts, NativeType.None); // must be a labeled block\n }\n outerFlow.popBreakLabel();\n\n // If the switch has a default (guaranteed to handle any value), propagate common flags\n if (defaultIndex >= 0) outerFlow.flags |= commonCategorical & ~FlowFlags.BREAKS;\n outerFlow.flags |= commonConditional & ~FlowFlags.CONDITIONALLY_BREAKS;\n // TODO: what about local states?\n return currentBlock;\n }\n\n compileThrowStatement(\n statement: ThrowStatement\n ): ExpressionRef {\n var flow = this.currentFlow;\n\n // Remember that this branch throws\n flow.set(FlowFlags.THROWS | FlowFlags.TERMINATES);\n\n var stmts = new Array();\n this.finishAutoreleases(flow, stmts);\n\n // TODO: requires exception-handling spec.\n var value = statement.value;\n var message: Expression | null = null;\n if (value.kind == NodeKind.NEW) {\n let newArgs = (value).arguments;\n if (newArgs.length) message = newArgs[0]; // FIXME: naively assumes type string\n }\n stmts.push(compileAbort(this, message, statement));\n\n return flatten(this.module, stmts, NativeType.None);\n }\n\n compileTryStatement(\n statement: TryStatement\n ): ExpressionRef {\n // TODO: can't yet support something like: try { return ... } finally { ... }\n // worthwhile to investigate lowering returns to block results (here)?\n this.error(\n DiagnosticCode.Operation_not_supported,\n statement.range\n );\n return this.module.unreachable();\n }\n\n /** Compiles a variable statement. Returns `0` if an initializer is not necessary. */\n compileVariableStatement(\n statement: VariableStatement\n ): ExpressionRef {\n var module = this.module;\n var declarations = statement.declarations;\n var numDeclarations = declarations.length;\n var flow = this.currentFlow;\n var initializers = new Array();\n var resolver = this.resolver;\n\n for (let i = 0; i < numDeclarations; ++i) {\n let declaration = declarations[i];\n let name = declaration.name.text;\n let type: Type | null = null;\n let initExpr: ExpressionRef = 0;\n let initAutoreleaseSkipped = false;\n\n // Resolve type if annotated\n if (declaration.type) {\n type = resolver.resolveType( // reports\n declaration.type,\n flow.actualFunction,\n flow.contextualTypeArguments\n );\n if (!type) continue;\n if (declaration.initializer) {\n initExpr = this.compileExpression(declaration.initializer, type, // reports\n Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN\n );\n initAutoreleaseSkipped = this.skippedAutoreleases.has(initExpr);\n }\n\n // Otherwise infer type from initializer\n } else if (declaration.initializer) {\n initExpr = this.compileExpression(declaration.initializer, Type.auto,\n Constraints.WILL_RETAIN\n ); // reports\n initAutoreleaseSkipped = this.skippedAutoreleases.has(initExpr);\n if (this.currentType == Type.void) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n declaration.range, this.currentType.toString(), \"\"\n );\n continue;\n }\n type = this.currentType;\n\n // Error if there's neither a type nor an initializer\n } else {\n this.error(\n DiagnosticCode.Type_expected,\n declaration.name.range.atEnd\n );\n continue;\n }\n\n // Handle constants, and try to inline if value is static\n let isConst = declaration.is(CommonFlags.CONST);\n let isStatic = false;\n if (isConst) {\n if (initExpr) {\n initExpr = module.precomputeExpression(initExpr);\n if (getExpressionId(initExpr) == ExpressionId.Const) {\n let local = new Local(name, -1, type, flow.parentFunction);\n switch (getExpressionType(initExpr)) {\n case NativeType.I32: {\n local.setConstantIntegerValue(\n i64_new(\n getConstValueI32(initExpr),\n 0\n ),\n type\n );\n break;\n }\n case NativeType.I64: {\n local.setConstantIntegerValue(\n i64_new(\n getConstValueI64Low(initExpr),\n getConstValueI64High(initExpr)\n ),\n type\n );\n break;\n }\n case NativeType.F32: {\n local.setConstantFloatValue(getConstValueF32(initExpr), type);\n break;\n }\n case NativeType.F64: {\n local.setConstantFloatValue(getConstValueF64(initExpr), type);\n break;\n }\n default: {\n assert(false);\n return module.unreachable();\n }\n }\n // Create a virtual local that doesn't actually exist in WebAssembly\n let scopedLocals = flow.scopedLocals;\n if (!scopedLocals) flow.scopedLocals = scopedLocals = new Map();\n else if (scopedLocals.has(name)) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n declaration.name.range, name\n );\n return this.module.unreachable();\n }\n scopedLocals.set(name, local);\n isStatic = true;\n }\n } else {\n this.error(\n DiagnosticCode._const_declarations_must_be_initialized,\n declaration.range\n );\n }\n }\n\n // Otherwise compile as mutable\n if (!isStatic) {\n let local: Local;\n if (\n declaration.isAny(CommonFlags.LET | CommonFlags.CONST) ||\n flow.is(FlowFlags.INLINE_CONTEXT)\n ) { // here: not top-level\n let existingLocal = flow.getScopedLocal(name);\n if (existingLocal) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n declaration.name.range, declaration.name.text\n );\n local = existingLocal;\n } else {\n local = flow.addScopedLocal(name, type);\n }\n if (isConst) flow.setLocalFlag(local.index, LocalFlags.CONSTANT);\n } else {\n if (flow.lookupLocal(name)) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n declaration.name.range, name\n );\n continue;\n }\n local = flow.parentFunction.addLocal(type, name, declaration);\n if (isConst) flow.setLocalFlag(local.index, LocalFlags.CONSTANT);\n }\n let isManaged = type.isManaged;\n if (initExpr) {\n if (flow.isNonnull(initExpr, type)) flow.setLocalFlag(local.index, LocalFlags.NONNULL);\n if (isManaged) {\n flow.setLocalFlag(local.index, LocalFlags.RETAINED);\n initializers.push(\n module.local_set(local.index,\n initAutoreleaseSkipped\n ? initExpr\n : this.makeRetain(initExpr)\n )\n );\n } else {\n initializers.push(\n module.local_set(local.index, initExpr)\n );\n if (local.type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) {\n if (!flow.canOverflow(initExpr, type)) flow.setLocalFlag(local.index, LocalFlags.WRAPPED);\n else flow.unsetLocalFlag(local.index, LocalFlags.WRAPPED);\n }\n }\n } else {\n if (isManaged) {\n // This is necessary because the first use (and assign) of the local could be taking place\n // in a loop, subsequently marking it retained, but the second iteration of the loop\n // still wouldn't release whatever is assigned in the first. Likewise, if the variable wasn't\n // initialized but becomes released later on, whatever was stored before would be released.\n // TODO: Detect this condition inside of a loop instead?\n initializers.push(\n module.local_set(local.index,\n type.toNativeZero(module)\n )\n );\n flow.setLocalFlag(local.index, LocalFlags.CONDITIONALLY_RETAINED);\n } else if (local.type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) {\n flow.setLocalFlag(local.index, LocalFlags.WRAPPED);\n }\n }\n }\n }\n return initializers.length == 0\n ? 0\n : flatten(module, initializers, NativeType.None);\n }\n\n compileVoidStatement(\n statement: VoidStatement\n ): ExpressionRef {\n return this.compileExpression(statement.expression, Type.void,\n Constraints.CONV_EXPLICIT | Constraints.WILL_DROP\n );\n }\n\n compileWhileStatement(\n statement: WhileStatement\n ): ExpressionRef {\n var module = this.module;\n var outerFlow = this.currentFlow;\n\n // Compile condition\n var condExpr = module.precomputeExpression(\n this.makeIsTrueish(\n this.compileExpression(statement.condition, Type.bool),\n this.currentType\n )\n );\n\n // Simplify if the condition is constant\n var alwaysTrue = false;\n if (getExpressionId(condExpr) == ExpressionId.Const) {\n assert(getExpressionType(condExpr) == NativeType.I32);\n if (!getConstValueI32(condExpr)) return module.nop(); // simplify\n alwaysTrue = true;\n }\n\n // Compile body\n var label = outerFlow.pushBreakLabel();\n var innerFlow = outerFlow.fork();\n this.currentFlow = innerFlow;\n var breakLabel = \"break|\" + label;\n innerFlow.breakLabel = breakLabel;\n var continueLabel = \"continue|\" + label;\n innerFlow.continueLabel = continueLabel;\n innerFlow.inheritNonnullIfTrue(condExpr);\n var stmts = new Array();\n if (statement.statement.kind == NodeKind.BLOCK) {\n this.compileStatements((statement.statement).statements, false, stmts);\n } else {\n stmts.push(this.compileStatement(statement.statement));\n }\n var terminates = innerFlow.is(FlowFlags.TERMINATES);\n\n // (block $break ;; (1) skip if skipping (3) + no breaks\n // (loop $continue ;; (2) skip if skipping (5) + no continues\n // (br_if !cond $break) ;; (3) skip if always true\n // (...) ;; (4)\n // (br $continue) ;; (5) skip if (4) does not fall through\n // )\n // )\n var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS);\n\n if (fallsThrough) { // (5)\n this.performAutoreleases(innerFlow, stmts);\n stmts.push(module.br(continueLabel));\n }\n if (!alwaysTrue) { // (3)\n stmts.unshift(module.br(breakLabel, module.unary(UnaryOp.EqzI32, condExpr)));\n }\n var expr = flatten(module, stmts, NativeType.None);\n if (fallsThrough || innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES)) { // (2)\n expr = module.loop(continueLabel, expr);\n }\n if (!alwaysTrue || innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { // (1)\n expr = module.block(breakLabel, [ expr ]);\n }\n\n // Switch back to the parent flow\n innerFlow.freeScopedLocals();\n outerFlow.popBreakLabel();\n innerFlow.unset(\n FlowFlags.BREAKS |\n FlowFlags.CONDITIONALLY_BREAKS |\n FlowFlags.CONTINUES |\n FlowFlags.CONDITIONALLY_CONTINUES\n );\n if (alwaysTrue) outerFlow.inherit(innerFlow);\n else outerFlow.inheritConditional(innerFlow);\n this.currentFlow = outerFlow;\n return expr;\n }\n\n // === Expressions ==============================================================================\n\n /** Compiles the value of an inlined constant element. */\n compileInlineConstant(\n element: VariableLikeElement,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n assert(element.is(CommonFlags.INLINED));\n var type = element.type;\n switch (\n !(constraints & (Constraints.CONV_IMPLICIT | Constraints.CONV_EXPLICIT)) &&\n type.is(TypeFlags.INTEGER) &&\n contextualType.is(TypeFlags.INTEGER) &&\n type.size < contextualType.size\n ? (this.currentType = contextualType).kind // essentially precomputes a (sign-)extension\n : (this.currentType = type).kind\n ) {\n case TypeKind.I8:\n case TypeKind.I16: {\n let shift = type.computeSmallIntegerShift(Type.i32);\n return this.module.i32(\n element.constantValueKind == ConstantValueKind.INTEGER\n ? i64_low(element.constantIntegerValue) << shift >> shift\n : 0\n ); // recognized by canOverflow\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n let mask = element.type.computeSmallIntegerMask(Type.i32);\n return this.module.i32(\n element.constantValueKind == ConstantValueKind.INTEGER\n ? i64_low(element.constantIntegerValue) & mask\n : 0\n ); // recognized by canOverflow\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n return this.module.i32(\n element.constantValueKind == ConstantValueKind.INTEGER\n ? i64_low(element.constantIntegerValue)\n : 0\n );\n }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!element.program.options.isWasm64) {\n return this.module.i32(\n element.constantValueKind == ConstantValueKind.INTEGER\n ? i64_low(element.constantIntegerValue)\n : 0\n );\n }\n // fall-through\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n return element.constantValueKind == ConstantValueKind.INTEGER\n ? this.module.i64(\n i64_low(element.constantIntegerValue),\n i64_high(element.constantIntegerValue)\n )\n : this.module.i64(0);\n }\n case TypeKind.F64: {\n // monkey-patch for converting built-in floats to f32 implicitly\n if (!(element.hasDecorator(DecoratorFlags.BUILTIN) && contextualType == Type.f32)) {\n return this.module.f64((element).constantFloatValue);\n }\n // otherwise fall-through: basically precomputes f32.demote/f64 of NaN / Infinity\n this.currentType = Type.f32;\n }\n case TypeKind.F32: {\n return this.module.f32((element).constantFloatValue);\n }\n default: {\n assert(false);\n return this.module.unreachable();\n }\n }\n }\n\n compileExpression(\n expression: Expression,\n contextualType: Type,\n constraints: Constraints = Constraints.NONE\n ): ExpressionRef {\n this.currentType = contextualType;\n var expr: ExpressionRef;\n if (contextualType == Type.void) constraints |= Constraints.WILL_DROP;\n switch (expression.kind) {\n case NodeKind.ASSERTION: {\n expr = this.compileAssertionExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.BINARY: {\n expr = this.compileBinaryExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.CALL: {\n expr = this.compileCallExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.COMMA: {\n expr = this.compileCommaExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.ELEMENTACCESS: {\n expr = this.compileElementAccessExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.FUNCTION: {\n expr = this.compileFunctionExpression(expression, contextualType.signatureReference, constraints);\n break;\n }\n case NodeKind.IDENTIFIER:\n case NodeKind.FALSE:\n case NodeKind.NULL:\n case NodeKind.THIS:\n case NodeKind.SUPER:\n case NodeKind.TRUE: {\n expr = this.compileIdentifierExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.INSTANCEOF: {\n expr = this.compileInstanceOfExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.LITERAL: {\n expr = this.compileLiteralExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.NEW: {\n expr = this.compileNewExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.PARENTHESIZED: {\n expr = this.compileExpression((expression).expression, contextualType, constraints);\n break;\n }\n case NodeKind.PROPERTYACCESS: {\n expr = this.compilePropertyAccessExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.TERNARY: {\n expr = this.compileTernaryExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.UNARYPOSTFIX: {\n expr = this.compileUnaryPostfixExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.UNARYPREFIX: {\n expr = this.compileUnaryPrefixExpression(expression, contextualType, constraints);\n break;\n }\n default: {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n expr = this.module.unreachable();\n }\n }\n // ensure conversion and wrapping in case the respective function doesn't on its own\n var currentType = this.currentType;\n var wrap = (constraints & Constraints.MUST_WRAP) != 0;\n if (currentType != contextualType) {\n if (constraints & Constraints.CONV_EXPLICIT) {\n expr = this.convertExpression(expr, currentType, contextualType, true, wrap, expression);\n wrap = false;\n this.currentType = contextualType;\n } else if (constraints & Constraints.CONV_IMPLICIT) {\n expr = this.convertExpression(expr, currentType, contextualType, false, wrap, expression);\n wrap = false;\n this.currentType = contextualType;\n }\n }\n if (wrap) expr = this.ensureSmallIntegerWrap(expr, currentType);\n // debug location is added here so the caller doesn't have to. means: compilation of an expression\n // must go through this function, with the respective per-kind functions not being used directly.\n if (this.options.sourceMap) this.addDebugLocation(expr, expression.range);\n return expr;\n }\n\n /** Compiles and precomputes an expression, possibly yielding a costant value. */\n precomputeExpression(\n expression: Expression,\n contextualType: Type,\n constraints: Constraints = Constraints.NONE\n ): ExpressionRef {\n return this.module.precomputeExpression(\n this.compileExpression(expression, contextualType, constraints)\n );\n }\n\n convertExpression(\n expr: ExpressionRef,\n /** Original type. */\n fromType: Type,\n /** New type. */\n toType: Type,\n /** Whether the conversion is explicit.*/\n explicit: bool,\n /** Whether the result should be wrapped, if a small integer. */\n wrap: bool,\n reportNode: Node\n ): ExpressionRef {\n var module = this.module;\n\n // void to any\n if (fromType.kind == TypeKind.VOID) {\n assert(toType.kind != TypeKind.VOID); // convertExpression should not be called with void -> void\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n reportNode.range, fromType.toString(), toType.toString()\n );\n return module.unreachable();\n }\n\n // any to void\n if (toType.kind == TypeKind.VOID) return module.drop(expr);\n\n if (this.currentFlow.isNonnull(expr, fromType)) fromType = fromType.nonNullableType;\n\n if (!fromType.isAssignableTo(toType)) {\n if (!explicit) {\n if (fromType.nonNullableType == toType) {\n this.error(\n DiagnosticCode.Object_is_possibly_null,\n reportNode.range\n ); // recoverable\n } else {\n this.error(\n DiagnosticCode.Conversion_from_type_0_to_1_requires_an_explicit_cast,\n reportNode.range, fromType.toString(), toType.toString()\n ); // recoverable\n }\n }\n }\n\n if (fromType.is(TypeFlags.FLOAT)) {\n\n // float to float\n if (toType.is(TypeFlags.FLOAT)) {\n if (fromType.kind == TypeKind.F32) {\n\n // f32 to f64\n if (toType.kind == TypeKind.F64) {\n expr = module.unary(UnaryOp.PromoteF32, expr);\n }\n\n // otherwise f32 to f32\n\n // f64 to f32\n } else if (toType.kind == TypeKind.F32) {\n expr = module.unary(UnaryOp.DemoteF64, expr);\n }\n\n // otherwise f64 to f64\n\n // float to int\n } else if (toType.is(TypeFlags.INTEGER)) {\n\n // f32 to int\n if (fromType.kind == TypeKind.F32) {\n if (toType == Type.bool) {\n expr = module.binary(BinaryOp.NeF32, expr, module.f32(0));\n wrap = false;\n } else if (toType.is(TypeFlags.SIGNED)) {\n if (toType.is(TypeFlags.LONG)) {\n expr = module.unary(UnaryOp.TruncF32ToI64, expr);\n } else {\n expr = module.unary(UnaryOp.TruncF32ToI32, expr);\n }\n } else {\n if (toType.is(TypeFlags.LONG)) {\n expr = module.unary(UnaryOp.TruncF32ToU64, expr);\n } else {\n expr = module.unary(UnaryOp.TruncF32ToU32, expr);\n }\n }\n\n // f64 to int\n } else {\n if (toType == Type.bool) {\n expr = module.binary(BinaryOp.NeF64, expr, module.f64(0));\n wrap = false;\n } else if (toType.is(TypeFlags.SIGNED)) {\n if (toType.is(TypeFlags.LONG)) {\n expr = module.unary(UnaryOp.TruncF64ToI64, expr);\n } else {\n expr = module.unary(UnaryOp.TruncF64ToI32, expr);\n }\n } else {\n if (toType.is(TypeFlags.LONG)) {\n expr = module.unary(UnaryOp.TruncF64ToU64, expr);\n } else {\n expr = module.unary(UnaryOp.TruncF64ToU32, expr);\n }\n }\n }\n\n // float to void\n } else {\n assert(toType.flags == TypeFlags.NONE, \"void type expected\");\n expr = module.drop(expr);\n }\n\n // int to float\n } else if (fromType.is(TypeFlags.INTEGER) && toType.is(TypeFlags.FLOAT)) {\n\n // int to f32\n if (toType.kind == TypeKind.F32) {\n if (fromType.is(TypeFlags.LONG)) {\n expr = module.unary(\n fromType.is(TypeFlags.SIGNED)\n ? UnaryOp.ConvertI64ToF32\n : UnaryOp.ConvertU64ToF32,\n expr\n );\n } else {\n expr = module.unary(\n fromType.is(TypeFlags.SIGNED)\n ? UnaryOp.ConvertI32ToF32\n : UnaryOp.ConvertU32ToF32,\n expr\n );\n }\n\n // int to f64\n } else {\n if (fromType.is(TypeFlags.LONG)) {\n expr = module.unary(\n fromType.is(TypeFlags.SIGNED)\n ? UnaryOp.ConvertI64ToF64\n : UnaryOp.ConvertU64ToF64,\n expr\n );\n } else {\n expr = module.unary(\n fromType.is(TypeFlags.SIGNED)\n ? UnaryOp.ConvertI32ToF64\n : UnaryOp.ConvertU32ToF64,\n expr\n );\n }\n }\n\n // int to int\n } else {\n // i64 to ...\n if (fromType.is(TypeFlags.LONG)) {\n\n // i64 to i32 or smaller\n if (toType == Type.bool) {\n expr = module.binary(BinaryOp.NeI64, expr, module.i64(0));\n wrap = false;\n } else if (!toType.is(TypeFlags.LONG)) {\n expr = module.unary(UnaryOp.WrapI64, expr); // discards upper bits\n }\n\n // i32 or smaller to i64\n } else if (toType.is(TypeFlags.LONG)) {\n expr = module.unary(\n fromType.is(TypeFlags.SIGNED) ? UnaryOp.ExtendI32 : UnaryOp.ExtendU32,\n this.ensureSmallIntegerWrap(expr, fromType) // must clear garbage bits\n );\n wrap = false;\n\n // i32 to i32\n } else {\n // small i32 to ...\n if (fromType.is(TypeFlags.SHORT)) {\n // small i32 to larger i32\n if (fromType.size < toType.size) {\n expr = this.ensureSmallIntegerWrap(expr, fromType); // must clear garbage bits\n wrap = false;\n }\n }\n }\n }\n\n this.currentType = toType;\n return wrap\n ? this.ensureSmallIntegerWrap(expr, toType)\n : expr;\n }\n\n compileAssertionExpression(\n expression: AssertionExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var inheritedConstraints = constraints & ~(Constraints.CONV_IMPLICIT | Constraints.CONV_EXPLICIT);\n switch (expression.assertionKind) {\n case AssertionKind.PREFIX:\n case AssertionKind.AS: {\n let flow = this.currentFlow;\n let toType = this.resolver.resolveType( // reports\n assert(expression.toType),\n flow.actualFunction,\n flow.contextualTypeArguments\n );\n if (!toType) return this.module.unreachable();\n return this.compileExpression(expression.expression, toType, inheritedConstraints | Constraints.CONV_EXPLICIT);\n }\n case AssertionKind.NONNULL: {\n assert(!expression.toType);\n let expr = this.compileExpression(expression.expression, contextualType.exceptVoid, inheritedConstraints);\n let type = this.currentType;\n if (this.currentFlow.isNonnull(expr, type)) {\n this.info(\n DiagnosticCode.Expression_is_never_null,\n expression.expression.range\n );\n } else if (!this.options.noAssert) {\n let module = this.module;\n let flow = this.currentFlow;\n let tempIndex = flow.getAndFreeTempLocal(type).index;\n if (!flow.canOverflow(expr, type)) flow.setLocalFlag(tempIndex, LocalFlags.WRAPPED);\n flow.setLocalFlag(tempIndex, LocalFlags.NONNULL);\n expr = module.if(\n module.local_tee(tempIndex, expr),\n module.local_get(tempIndex, type.toNativeType()),\n module.unreachable()\n );\n }\n this.currentType = this.currentType.nonNullableType;\n return expr;\n }\n default: assert(false);\n }\n return this.module.unreachable();\n }\n\n private f32ModInstance: Function | null = null;\n private f64ModInstance: Function | null = null;\n private f32PowInstance: Function | null = null;\n private f64PowInstance: Function | null = null;\n\n compileBinaryExpression(\n expression: BinaryExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var left = expression.left;\n var right = expression.right;\n\n var leftExpr: ExpressionRef;\n var leftType: Type;\n var rightExpr: ExpressionRef;\n var rightType: Type;\n var commonType: Type | null;\n\n var expr: ExpressionRef;\n var compound = false;\n\n var operator = expression.operator;\n switch (operator) {\n case Token.LESSTHAN: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.LT);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, true)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"<\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.LtI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.LtI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.LtI64\n : BinaryOp.LtI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.LtU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.LtU64\n : BinaryOp.LtU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.LtU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.LtF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.LtF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n case Token.GREATERTHAN: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.GT);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, true)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \">\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.GtI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.GtI64\n : BinaryOp.GtI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.GtI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.GtU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.GtU64\n : BinaryOp.GtU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.GtU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.GtF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.GtF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n case Token.LESSTHAN_EQUALS: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.LE);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, true)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"<=\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.LeI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.LeI64\n : BinaryOp.LeI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.LeI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.LeU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.LeU64\n : BinaryOp.LeU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.LeU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.LeF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.LeF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n case Token.GREATERTHAN_EQUALS: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.GE);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, true)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \">=\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.GeI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.GeI64\n : BinaryOp.GeI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.GeI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.GeU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.GeU64\n : BinaryOp.GeU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.GeU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.GeF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.GeF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n\n case Token.EQUALS_EQUALS_EQUALS:\n case Token.EQUALS_EQUALS: {\n\n // NOTE that this favors correctness, in terms of emitting a binary expression, over\n // checking for a possible use of unary EQZ. while the most classic of all optimizations,\n // that's not what the source told us to do. for reference, `!left` emits unary EQZ.\n\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (operator == Token.EQUALS_EQUALS && this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.EQ);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n // still allow '==' with references\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, operatorTokenToString(expression.operator), leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.EqI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.EqI64\n : BinaryOp.EqI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.EqI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.EqF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.EqF64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.V128: {\n expr = module.unary(UnaryOp.AllTrueVecI8x16,\n module.binary(BinaryOp.EqVecI8x16, leftExpr, rightExpr)\n );\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n case Token.EXCLAMATION_EQUALS_EQUALS:\n case Token.EXCLAMATION_EQUALS: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (operator == Token.EXCLAMATION_EQUALS && this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.NE);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n // still allow '!=' with references\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, operatorTokenToString(expression.operator), leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.NeI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.NeI64\n : BinaryOp.NeI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.NeI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.NeF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.NeF64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.V128: {\n expr = module.unary(UnaryOp.AnyTrueVecI8x16,\n module.binary(BinaryOp.NeVecI8x16, leftExpr, rightExpr)\n );\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n case Token.EQUALS: {\n return this.compileAssignment(left, right, contextualType);\n }\n case Token.PLUS_EQUALS: compound = true;\n case Token.PLUS: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.ADD);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"+\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8: // addition might overflow\n case TypeKind.I16: // ^\n case TypeKind.U8: // ^\n case TypeKind.U16: // ^\n case TypeKind.BOOL: // ^\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.AddI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.AddI64\n : BinaryOp.AddI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.AddI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.AddF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.AddF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.MINUS_EQUALS: compound = true;\n case Token.MINUS: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.SUB);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"-\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8: // subtraction might overflow\n case TypeKind.I16: // ^\n case TypeKind.U8: // ^\n case TypeKind.U16: // ^\n case TypeKind.BOOL: // ^\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.SubI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.SubI64\n : BinaryOp.SubI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.SubI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.SubF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.SubF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.ASTERISK_EQUALS: compound = true;\n case Token.ASTERISK: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.MUL);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n leftExpr = this.ensureSmallIntegerWrap(leftExpr, leftType);\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"*\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL:\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.MulI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.MulI64\n : BinaryOp.MulI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.MulI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.MulF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.MulF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.ASTERISK_ASTERISK_EQUALS: compound = true;\n case Token.ASTERISK_ASTERISK: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.POW);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n let instance: Function | null;\n\n // Mathf.pow if lhs is f32 (result is f32)\n if (this.currentType.kind == TypeKind.F32) {\n rightExpr = this.compileExpression(right, Type.f32, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n if (!(instance = this.f32PowInstance)) {\n let namespace = this.program.lookupGlobal(CommonSymbols.Mathf);\n if (!namespace) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Mathf\"\n );\n expr = module.unreachable();\n break;\n }\n let prototype = namespace.members ? namespace.members.get(CommonSymbols.pow) : null;\n if (!prototype) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Mathf.pow\"\n );\n expr = module.unreachable();\n break;\n }\n assert(prototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n this.f32PowInstance = instance = this.resolver.resolveFunction(prototype, null);\n }\n\n // Math.pow otherwise (result is f64)\n // TODO: should the result be converted back?\n } else {\n leftExpr = this.convertExpression(leftExpr,\n this.currentType, Type.f64,\n false, false,\n left\n );\n leftType = this.currentType;\n rightExpr = this.compileExpression(right, Type.f64, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n if (!(instance = this.f64PowInstance)) {\n let namespace = this.program.lookupGlobal(CommonSymbols.Math);\n if (!namespace) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Math\"\n );\n expr = module.unreachable();\n break;\n }\n let prototype = namespace.members ? namespace.members.get(CommonSymbols.pow) : null;\n if (!prototype) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Math.pow\"\n );\n expr = module.unreachable();\n break;\n }\n assert(prototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n this.f64PowInstance = instance = this.resolver.resolveFunction(prototype, null);\n }\n }\n if (!(instance && this.compileFunction(instance))) {\n expr = module.unreachable();\n } else {\n expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ], expression);\n }\n break;\n }\n case Token.SLASH_EQUALS: compound = true;\n case Token.SLASH: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.DIV);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n leftExpr = this.ensureSmallIntegerWrap(leftExpr, leftType);\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"/\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8: // signed div on signed small integers might overflow, e.g. -128/-1\n case TypeKind.I16: // ^\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.DivI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.DivI64\n : BinaryOp.DivI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.DivI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.DivU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.DivU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.DivU64\n : BinaryOp.DivU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.DivU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.DivF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.DivF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.PERCENT_EQUALS: compound = true;\n case Token.PERCENT: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.REM);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n leftExpr = this.ensureSmallIntegerWrap(leftExpr, leftType);\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"%\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16: {\n expr = module.binary(BinaryOp.RemI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.RemI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.RemI64\n : BinaryOp.RemI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.RemI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.RemU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.RemU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.RemU64\n : BinaryOp.RemU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.RemU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n let instance = this.f32ModInstance;\n if (!instance) {\n let namespace = this.program.lookupGlobal(CommonSymbols.Mathf);\n if (!namespace) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Mathf\"\n );\n expr = module.unreachable();\n break;\n }\n let prototype = namespace.members ? namespace.members.get(CommonSymbols.mod) : null;\n if (!prototype) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Mathf.mod\"\n );\n expr = module.unreachable();\n break;\n }\n assert(prototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n this.f32ModInstance = instance = this.resolver.resolveFunction(prototype, null);\n }\n if (!(instance && this.compileFunction(instance))) {\n expr = module.unreachable();\n } else {\n expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ], expression);\n }\n break;\n }\n case TypeKind.F64: {\n let instance = this.f64ModInstance;\n if (!instance) {\n let namespace = this.program.lookupGlobal(CommonSymbols.Math);\n if (!namespace) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Math\"\n );\n expr = module.unreachable();\n break;\n }\n let prototype = namespace.members ? namespace.members.get(CommonSymbols.mod) : null;\n if (!prototype) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Math.mod\"\n );\n expr = module.unreachable();\n break;\n }\n assert(prototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n this.f64ModInstance = instance = this.resolver.resolveFunction(prototype, null);\n }\n if (!(instance && this.compileFunction(instance))) {\n expr = module.unreachable();\n } else {\n expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ], expression);\n }\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.LESSTHAN_LESSTHAN_EQUALS: compound = true;\n case Token.LESSTHAN_LESSTHAN: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHL);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL:\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.ShlI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.ShlI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.ShlI64\n : BinaryOp.ShlI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.GREATERTHAN_GREATERTHAN_EQUALS: compound = true;\n case Token.GREATERTHAN_GREATERTHAN: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHR);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n leftExpr = this.ensureSmallIntegerWrap(leftExpr, leftType); // must clear garbage bits\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16: {\n expr = module.binary(BinaryOp.ShrI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.ShrI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.ShrI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.ShrI64\n : BinaryOp.ShrI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.ShrU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.ShrU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.ShrU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.ShrU64\n : BinaryOp.ShrU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS: compound = true;\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHR_U);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n leftExpr = this.ensureSmallIntegerWrap(leftExpr, leftType); // must clear garbage bits\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n switch (this.currentType.kind) {\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: { // assumes that unsigned shr on unsigned small integers does not overflow\n expr = module.binary(BinaryOp.ShrU32, leftExpr, rightExpr);\n }\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.ShrU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.ShrU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.ShrU64\n : BinaryOp.ShrU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.AMPERSAND_EQUALS: compound = true;\n case Token.AMPERSAND: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overloadd\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_AND);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"&\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.AndI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.AndI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.AndI64\n : BinaryOp.AndI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.BAR_EQUALS: compound = true;\n case Token.BAR: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_OR);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"|\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.OrI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.OrI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.OrI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.OrI64\n : BinaryOp.OrI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.CARET_EQUALS: compound = true;\n case Token.CARET: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_XOR);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"^\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.XorI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.XorI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.XorI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.XorI64\n : BinaryOp.XorI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n\n // logical (no overloading)\n\n case Token.AMPERSAND_AMPERSAND: { // left && right -> (t = left) ? right : t\n let flow = this.currentFlow;\n let inheritedConstraints = constraints & (Constraints.WILL_RETAIN | Constraints.MUST_WRAP);\n leftExpr = this.compileExpression(left, contextualType.exceptVoid, inheritedConstraints);\n leftType = this.currentType;\n\n let rightFlow = flow.fork();\n this.currentFlow = rightFlow;\n rightFlow.inheritNonnullIfTrue(leftExpr);\n rightExpr = this.compileExpression(right, leftType, inheritedConstraints | Constraints.CONV_IMPLICIT);\n rightType = leftType;\n\n // simplify if only interested in true or false\n if (contextualType == Type.bool || contextualType == Type.void) {\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n this.currentType = Type.bool;\n expr = module.if(\n this.makeIsTrueish(leftExpr, leftType),\n this.makeIsTrueish(rightExpr, rightType),\n module.i32(0)\n );\n\n // references must properly retain and release, with the same outcome independent of the branch taken\n } else if (leftType.isManaged) {\n let leftAutoreleaseSkipped = this.skippedAutoreleases.has(leftExpr);\n let rightAutoreleaseSkipped = this.skippedAutoreleases.has(rightExpr);\n let temp = flow.getTempLocal(leftType);\n leftExpr = module.local_tee(temp.index, leftExpr);\n\n // instead of retaining left and releasing it again in right when right\n // is taken, we can also just retain left if right is not taken\n let retainLeftInElse = false;\n if (leftAutoreleaseSkipped != rightAutoreleaseSkipped) { // xor\n if (!leftAutoreleaseSkipped) {\n retainLeftInElse = true;\n } else {\n rightExpr = this.makeRetain(rightExpr);\n rightAutoreleaseSkipped = true;\n }\n } else if (!(constraints & Constraints.WILL_RETAIN)) { // otherwise keep right alive a little longer\n rightExpr = this.moveAutorelease(rightExpr, rightFlow, flow);\n }\n\n let rightStmts = new Array();\n if (leftAutoreleaseSkipped) { // left turned out to be true'ish and is dropped\n rightStmts.unshift(\n this.makeRelease(\n module.local_get(temp.index, leftType.toNativeType())\n )\n );\n }\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType, rightStmts);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n\n expr = module.if(\n this.makeIsTrueish(leftExpr, leftType),\n rightExpr,\n retainLeftInElse\n ? this.makeRetain(\n module.local_get(temp.index, leftType.toNativeType())\n )\n : module.local_get(temp.index, leftType.toNativeType())\n );\n if (leftAutoreleaseSkipped || rightAutoreleaseSkipped) this.skippedAutoreleases.add(expr);\n if (temp) flow.freeTempLocal(temp);\n\n // basic values can use more aggressive optimizations\n } else {\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n\n // simplify if cloning left without side effects is possible\n if (expr = module.cloneExpression(leftExpr, true, 0)) {\n expr = module.if(\n this.makeIsTrueish(leftExpr, this.currentType),\n rightExpr,\n expr\n );\n\n // if not possible, tee left to a temp\n } else {\n let tempLocal = flow.getTempLocal(leftType);\n if (!flow.canOverflow(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.NONNULL);\n expr = module.if(\n this.makeIsTrueish(module.local_tee(tempLocal.index, leftExpr), leftType),\n rightExpr,\n module.local_get(tempLocal.index, leftType.toNativeType())\n );\n }\n }\n this.currentType = leftType;\n break;\n }\n case Token.BAR_BAR: { // left || right -> ((t = left) ? t : right)\n let flow = this.currentFlow;\n let inheritedConstraints = constraints & (Constraints.WILL_RETAIN | Constraints.MUST_WRAP);\n leftExpr = this.compileExpression(left, contextualType.exceptVoid, inheritedConstraints);\n leftType = this.currentType;\n\n let rightFlow = flow.fork();\n this.currentFlow = rightFlow;\n rightFlow.inheritNonnullIfFalse(leftExpr);\n rightExpr = this.compileExpression(right, leftType, inheritedConstraints | Constraints.CONV_IMPLICIT);\n rightType = leftType;\n\n // simplify if only interested in true or false\n if (contextualType == Type.bool || contextualType == Type.void) {\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, leftType);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n this.currentType = Type.bool;\n expr = module.if(\n this.makeIsTrueish(leftExpr, leftType),\n module.i32(1),\n this.makeIsTrueish(rightExpr, rightType)\n );\n\n // references must properly retain and release, with the same outcome independent of the branch taken\n } else if (leftType.isManaged) {\n let leftAutoreleaseSkipped = this.skippedAutoreleases.has(leftExpr);\n let rightAutoreleaseSkipped = this.skippedAutoreleases.has(rightExpr);\n let temp = flow.getTempLocal(leftType);\n leftExpr = module.local_tee(temp.index, leftExpr);\n\n // instead of retaining left and releasing it again in right when right\n // is taken, we can also just retain left if right is not taken\n let retainLeftInThen = false;\n if (leftAutoreleaseSkipped != rightAutoreleaseSkipped) { // xor\n if (!leftAutoreleaseSkipped) {\n retainLeftInThen = true;\n } else {\n rightExpr = this.makeRetain(rightExpr);\n rightAutoreleaseSkipped = true;\n }\n } else if (!(constraints & Constraints.WILL_RETAIN)) { // otherwise keep right alive a little longer\n rightExpr = this.moveAutorelease(rightExpr, rightFlow, flow);\n }\n\n let rightStmts = new Array();\n if (leftAutoreleaseSkipped) { // left turned out to be false'ish and is dropped\n // TODO: usually, false'ish means left is null, but this might not hold\n // once implicit conversion with strings is performed and left is \"\", so:\n rightStmts.unshift(\n this.makeRelease(\n module.local_get(temp.index, leftType.toNativeType())\n )\n );\n }\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType, rightStmts);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n\n expr = module.if(\n this.makeIsTrueish(leftExpr, leftType),\n retainLeftInThen\n ? this.makeRetain(\n module.local_get(temp.index, leftType.toNativeType())\n )\n : module.local_get(temp.index, leftType.toNativeType()),\n rightExpr\n );\n if (leftAutoreleaseSkipped || rightAutoreleaseSkipped) this.skippedAutoreleases.add(expr);\n if (temp) flow.freeTempLocal(temp);\n\n // basic values can use more aggressive optimizations\n } else {\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n\n // simplify if cloning left without side effects is possible\n if (expr = module.cloneExpression(leftExpr, true, 0)) {\n expr = module.if(\n this.makeIsTrueish(leftExpr, leftType),\n expr,\n rightExpr\n );\n\n // if not possible, tee left to a temp. local\n } else {\n let tempLocal = flow.getAndFreeTempLocal(leftType);\n if (!flow.canOverflow(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.NONNULL);\n expr = module.if(\n this.makeIsTrueish(module.local_tee(tempLocal.index, leftExpr), leftType),\n module.local_get(tempLocal.index, leftType.toNativeType()),\n rightExpr\n );\n }\n }\n this.currentType = leftType;\n break;\n }\n default: {\n assert(false);\n expr = this.module.unreachable();\n }\n }\n if (!compound) return expr;\n var resolver = this.resolver;\n var target = resolver.resolveExpression(left, this.currentFlow);\n if (!target) return module.unreachable();\n return this.makeAssignment(\n target,\n expr, // TODO: delay release above if possible?\n left,\n resolver.currentThisExpression,\n resolver.currentElementExpression,\n contextualType != Type.void\n );\n }\n\n compileUnaryOverload(\n operatorInstance: Function,\n value: Expression,\n valueExpr: ExpressionRef,\n reportNode: Node\n ): ExpressionRef {\n // FIXME: see comment in compileBinaryOverload below why recompiling on type mismatch\n // is a bad idea currently. so this assumes that the type matches.\n return this.makeCallDirect(operatorInstance, [ valueExpr ], reportNode, false);\n }\n\n compileBinaryOverload(\n operatorInstance: Function,\n left: Expression,\n leftExpr: ExpressionRef,\n right: Expression,\n reportNode: Node\n ): ExpressionRef {\n var rightType: Type;\n if (operatorInstance.is(CommonFlags.INSTANCE)) {\n let classInstance = assert(operatorInstance.parent); assert(classInstance.kind == ElementKind.CLASS);\n rightType = operatorInstance.signature.parameterTypes[0];\n } else {\n // FIXME: if LHS type differs we can't recompile left because that'd completely confuse\n // local states, like having retained locals that actually do not even exist, possibly\n // releasing something random in that local before and evil things like that. Hence this\n // assumes that LHS type matches, which in turn means that static overloads must be\n // guaranteed to never mismatch LHS type, which in turn means that we can't have shiny\n // things like multiple static overloads for different combinations of LHS/RHS types.\n // We might want that at some point of course, but requires to complete the resolver so\n // it can actually resolve every kind of expression without ever having to recompile.\n rightType = operatorInstance.signature.parameterTypes[1];\n }\n var rightExpr = this.compileExpression(right, rightType, Constraints.CONV_IMPLICIT);\n return this.makeCallDirect(operatorInstance, [ leftExpr, rightExpr ], reportNode);\n }\n\n compileAssignment(expression: Expression, valueExpression: Expression, contextualType: Type): ExpressionRef {\n var program = this.program;\n var resolver = program.resolver;\n var flow = this.currentFlow;\n var target = resolver.resolveExpression(expression, flow); // reports\n if (!target) return this.module.unreachable();\n var thisExpression = resolver.currentThisExpression;\n var elementExpression = resolver.currentElementExpression;\n\n // to compile just the value, we need to know the target's type\n var targetType: Type;\n switch (target.kind) {\n case ElementKind.GLOBAL: {\n // not yet compiled if a static field compiled as a global\n if (!this.compileGlobal(target)) return this.module.unreachable(); // reports\n // fall-through\n }\n case ElementKind.LOCAL:\n case ElementKind.FIELD: {\n targetType = (target).type;\n if (target.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: { // static property\n let setterPrototype = (target).setterPrototype;\n if (!setterPrototype) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n expression.range, (target).internalName\n );\n return this.module.unreachable();\n }\n let setterInstance = this.resolver.resolveFunction(setterPrototype, null, makeMap(), ReportMode.REPORT);\n if (!setterInstance) return this.module.unreachable();\n assert(setterInstance.signature.parameterTypes.length == 1); // parser must guarantee this\n targetType = setterInstance.signature.parameterTypes[0];\n if (setterPrototype.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n break;\n }\n case ElementKind.PROPERTY: { // instance property\n let setterInstance = (target).setterInstance;\n if (!setterInstance) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n expression.range, (target).internalName\n );\n return this.module.unreachable();\n }\n assert(setterInstance.signature.parameterTypes.length == 1); // parser must guarantee this\n targetType = setterInstance.signature.parameterTypes[0];\n if (setterInstance.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n break;\n }\n case ElementKind.CLASS: {\n if (elementExpression) { // indexed access\n let isUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT);\n // if (isUnchecked) {\n // let arrayType = this.program.determineBuiltinArrayType(target);\n // if (arrayType) {\n // return compileBuiltinArraySet(\n // this,\n // target,\n // assert(this.resolver.currentThisExpression),\n // elementExpression,\n // valueExpression,\n // contextualType\n // );\n // }\n // }\n let indexedSet = (target).lookupOverload(OperatorKind.INDEXED_SET, isUnchecked);\n if (!indexedSet) {\n let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET, isUnchecked);\n if (!indexedGet) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n expression.range, (target).internalName\n );\n } else {\n this.error(\n DiagnosticCode.Index_signature_in_type_0_only_permits_reading,\n expression.range, (target).internalName\n );\n }\n return this.module.unreachable();\n }\n assert(indexedSet.signature.parameterTypes.length == 2); // parser must guarantee this\n targetType = indexedSet.signature.parameterTypes[1]; // 2nd parameter is the element\n if (indexedSet.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n break;\n }\n // fall-through\n }\n default: {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n }\n\n // compile the value and do the assignment\n assert(targetType != Type.void);\n return this.makeAssignment(\n target,\n this.compileExpression(valueExpression, targetType, Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN),\n expression,\n thisExpression,\n elementExpression,\n contextualType != Type.void\n );\n }\n\n /** Makes an assignment expression or block, assigning a value to a target. */\n makeAssignment(\n /** Target element, e.g. a Local. */\n target: Element,\n /** Value expression that has been compiled in a previous step already. */\n valueExpr: ExpressionRef,\n /** Expression reference. Has already been compiled to `valueExpr`. */\n valueExpression: Expression,\n /** `this` expression reference if a field or property set. */\n thisExpression: Expression | null,\n /** Index expression reference if an indexed set. */\n indexExpression: Expression | null,\n /** Whether to tee the value. */\n tee: bool\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n\n // NOTE: Only locals, globals and fields can make use of skipped autoreleases while\n // everything else must insert the skipped autorelease now. See (*)\n\n switch (target.kind) {\n case ElementKind.LOCAL: {\n if (flow.isLocalFlag((target).index, LocalFlags.CONSTANT, true)) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n valueExpression.range, target.internalName\n );\n this.currentType = tee ? (target).type : Type.void;\n return module.unreachable();\n }\n return this.makeLocalAssignment(target, valueExpr, tee);\n }\n case ElementKind.GLOBAL: {\n if (!this.compileGlobal(target)) return module.unreachable();\n if (target.isAny(CommonFlags.CONST | CommonFlags.READONLY)) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n valueExpression.range,\n target.internalName\n );\n this.currentType = tee ? (target).type : Type.void;\n return module.unreachable();\n }\n return this.makeGlobalAssignment(target, valueExpr, tee);\n }\n case ElementKind.FIELD: {\n let initializerNode = (target).initializerNode;\n if (\n (target).is(CommonFlags.READONLY) &&\n !(\n flow.actualFunction.is(CommonFlags.CONSTRUCTOR) ||\n initializerNode\n )\n ) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n valueExpression.range, (target).internalName\n );\n return module.unreachable();\n }\n return this.makeFieldAssignment(target,\n valueExpr,\n // FIXME: explicit type (currently fails due to missing null checking)\n this.compileExpression(assert(thisExpression), this.options.usizeType),\n tee\n );\n }\n case ElementKind.PROPERTY_PROTOTYPE: { // static property\n if (this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeAutorelease(valueExpr, flow); // (*)\n let setterPrototype = (target).setterPrototype;\n if (!setterPrototype) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n valueExpression.range, target.internalName\n );\n return module.unreachable();\n }\n let setterInstance = this.resolver.resolveFunction(setterPrototype, null, makeMap(), ReportMode.REPORT);\n if (!setterInstance) return module.unreachable();\n // call just the setter if the return value isn't of interest\n if (!tee) return this.makeCallDirect(setterInstance, [ valueExpr ], valueExpression);\n // otherwise call the setter first, then the getter\n let getterPrototype = assert((target).getterPrototype); // must be present\n let getterInstance = this.resolver.resolveFunction(getterPrototype, null, makeMap(), ReportMode.REPORT);\n if (!getterInstance) return module.unreachable();\n let returnType = getterInstance.signature.returnType;\n let nativeReturnType = returnType.toNativeType();\n return module.block(null, [\n this.makeCallDirect(setterInstance, [ valueExpr ], valueExpression),\n this.makeCallDirect(getterInstance, null, valueExpression) // sets currentType\n ], nativeReturnType);\n }\n case ElementKind.PROPERTY: { // instance property\n if (this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeAutorelease(valueExpr, flow); // (*)\n let setterInstance = (target).setterInstance;\n if (!setterInstance) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n valueExpression.range, target.internalName\n );\n return module.unreachable();\n }\n // call just the setter if the return value isn't of interest\n if (!tee) {\n let thisExpr = this.compileExpression(assert(thisExpression), this.options.usizeType);\n return this.makeCallDirect(setterInstance, [ thisExpr, valueExpr ], valueExpression);\n }\n // otherwise call the setter first, then the getter\n let getterInstance = assert((target).getterInstance); // must be present\n let returnType = getterInstance.signature.returnType;\n let nativeReturnType = returnType.toNativeType();\n let thisExpr = this.compileExpression(assert(thisExpression), this.options.usizeType);\n let tempLocal = flow.getAndFreeTempLocal(returnType);\n let tempLocalIndex = tempLocal.index;\n return module.block(null, [\n this.makeCallDirect(setterInstance, [ // set and remember the target\n module.local_tee(tempLocalIndex, thisExpr),\n valueExpr\n ], valueExpression),\n this.makeCallDirect(getterInstance, [ // get from remembered target\n module.local_get(tempLocalIndex, nativeReturnType)\n ], valueExpression)\n ], nativeReturnType);\n }\n case ElementKind.CLASS: {\n if (this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeAutorelease(valueExpr, flow); // (*)\n if (indexExpression) {\n let isUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT);\n let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET, isUnchecked);\n if (!indexedGet) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n valueExpression.range, target.internalName\n );\n return module.unreachable();\n }\n let indexedSet = (target).lookupOverload(OperatorKind.INDEXED_SET, isUnchecked);\n if (!indexedSet) {\n this.error(\n DiagnosticCode.Index_signature_in_type_0_only_permits_reading,\n valueExpression.range, target.internalName\n );\n this.currentType = tee ? indexedGet.signature.returnType : Type.void;\n return module.unreachable();\n }\n let targetType = (target).type;\n let thisExpr = this.compileExpression(assert(thisExpression), this.options.usizeType);\n let elementExpr = this.compileExpression(indexExpression, Type.i32, Constraints.CONV_IMPLICIT);\n if (tee) {\n let tempLocalTarget = flow.getTempLocal(targetType);\n let tempLocalElement = flow.getAndFreeTempLocal(this.currentType);\n let returnType = indexedGet.signature.returnType;\n flow.freeTempLocal(tempLocalTarget);\n return module.block(null, [\n this.makeCallDirect(indexedSet, [\n module.local_tee(tempLocalTarget.index, thisExpr),\n module.local_tee(tempLocalElement.index, elementExpr),\n valueExpr\n ], valueExpression),\n this.makeCallDirect(indexedGet, [\n module.local_get(tempLocalTarget.index, tempLocalTarget.type.toNativeType()),\n module.local_get(tempLocalElement.index, tempLocalElement.type.toNativeType())\n ], valueExpression)\n ], returnType.toNativeType());\n } else {\n return this.makeCallDirect(indexedSet, [\n thisExpr,\n elementExpr,\n valueExpr\n ], valueExpression);\n }\n }\n // fall-through\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n valueExpression.range\n );\n return module.unreachable();\n }\n\n /** Makes an assignment to a local, possibly retaining and releasing affected references and keeping track of wrap and null states. */\n private makeLocalAssignment(\n /** The local to assign to. */\n local: Local,\n /** The value to assign. */\n valueExpr: ExpressionRef,\n /** Whether to tee the value. */\n tee: bool\n ): ExpressionRef {\n var type = local.type;\n assert(type != Type.void);\n var flow = this.currentFlow;\n var localIndex = local.index;\n\n if (type.is(TypeFlags.NULLABLE)) {\n if (flow.isNonnull(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.NONNULL);\n else flow.unsetLocalFlag(localIndex, LocalFlags.NONNULL);\n }\n flow.setLocalFlag(localIndex, LocalFlags.WRITTENTO);\n\n if (type.isManaged) {\n let module = this.module;\n let nativeType = type.toNativeType();\n\n if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) {\n if (this.skippedAutoreleases.has(valueExpr)) {\n valueExpr = this.makeSkippedRelease(\n module.local_get(localIndex, nativeType), // oldRef\n valueExpr // newRef\n );\n if (tee) { // TEE(local = __skippedRelease(local, value))\n this.currentType = type;\n return module.local_tee(localIndex, valueExpr);\n } else { // local = __skippedRelease(local, value)\n this.currentType = Type.void;\n return module.local_set(localIndex, valueExpr);\n }\n } else {\n valueExpr = this.makeRetainRelease(\n module.local_get(localIndex, nativeType), // oldRef\n valueExpr // newRef\n );\n if (tee) { // TEE(local = __retainRelease(local, value))\n this.currentType = type;\n return module.local_tee(localIndex, valueExpr);\n } else { // local = __retainRelease(local, value)\n this.currentType = Type.void;\n return module.local_set(localIndex, valueExpr);\n }\n }\n } else {\n flow.unsetLocalFlag(localIndex, LocalFlags.CONDITIONALLY_RETAINED);\n flow.setLocalFlag(localIndex, LocalFlags.RETAINED);\n if (!this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeRetain(valueExpr);\n if (tee) { // TEE(local = __retain(value, local))\n this.currentType = type;\n return module.local_tee(localIndex, valueExpr);\n } else { // local = __retain(value, local)\n this.currentType = Type.void;\n return module.local_set(localIndex, valueExpr);\n }\n }\n } else {\n if (type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) {\n if (!flow.canOverflow(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.WRAPPED);\n else flow.unsetLocalFlag(localIndex, LocalFlags.WRAPPED);\n }\n if (tee) { // TEE(local = value)\n this.currentType = type;\n return this.module.local_tee(localIndex, valueExpr);\n } else { // local = value\n this.currentType = Type.void;\n return this.module.local_set(localIndex, valueExpr);\n }\n }\n }\n\n /** Makes an assignment to a global, possibly retaining and releasing affected references. */\n private makeGlobalAssignment(\n /** The global to assign to. */\n global: Global,\n /** The value to assign. */\n valueExpr: ExpressionRef,\n /** Whether to tee the value. */\n tee: bool\n ): ExpressionRef {\n var module = this.module;\n var type = global.type;\n assert(type != Type.void);\n var nativeType = type.toNativeType();\n\n if (type.isManaged) {\n if (this.skippedAutoreleases.has(valueExpr)) {\n if (tee) { // (global = __skippedRelease(global, value)), global\n this.currentType = type;\n return module.block(null, [\n module.global_set(global.internalName,\n this.makeSkippedRelease(\n module.global_get(global.internalName, nativeType), // oldRef\n valueExpr // newRef\n )\n ),\n module.global_get(global.internalName, nativeType)\n ], nativeType);\n } else { // global = __skippedRelease(global, value)\n this.currentType = Type.void;\n return module.global_set(global.internalName,\n this.makeSkippedRelease(\n module.global_get(global.internalName, nativeType), // oldRef\n valueExpr // newRef\n )\n );\n }\n } else {\n if (tee) { // (global = __retainRelease(global, value)), global\n this.currentType = type;\n return module.block(null, [\n module.global_set(global.internalName,\n this.makeRetainRelease(\n module.global_get(global.internalName, nativeType), // oldRef\n valueExpr // newRef\n )\n ),\n module.global_get(global.internalName, nativeType)\n ], nativeType);\n } else { // global = __retainRelease(global, value)\n this.currentType = Type.void;\n return module.global_set(global.internalName,\n this.makeRetainRelease(\n module.global_get(global.internalName, nativeType), // oldRef\n valueExpr // newRef\n )\n );\n }\n }\n } else {\n valueExpr = this.ensureSmallIntegerWrap(valueExpr, type); // globals must be wrapped\n if (tee) { // (global = value), global\n this.currentType = type;\n return module.block(null, [\n module.global_set(global.internalName, valueExpr),\n module.global_get(global.internalName, nativeType)\n ], nativeType);\n } else { // global = value\n this.currentType = Type.void;\n return module.global_set(global.internalName,\n valueExpr\n );\n }\n }\n }\n\n /** Makes an assignment to a field, possibly retaining and releasing affected references. */\n makeFieldAssignment(\n /** The field to assign to. */\n field: Field,\n /** The value to assign. */\n valueExpr: ExpressionRef,\n /** The value of `this`. */\n thisExpr: ExpressionRef,\n /** Whether to tee the value. */\n tee: bool\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n var fieldType = field.type;\n var nativeFieldType = fieldType.toNativeType();\n assert(field.parent.kind == ElementKind.CLASS);\n var thisType = (field.parent).type;\n var nativeThisType = thisType.toNativeType();\n\n if (fieldType.isManaged && thisType.isManaged) {\n let tempThis = flow.getTempLocal(thisType);\n if (this.skippedAutoreleases.has(valueExpr)) {\n if (tee) { // ((t1 = this).field = __skippedRelease(t1.field, t2 = value)), t2\n let tempValue = flow.getAndFreeTempLocal(fieldType);\n if (!flow.canOverflow(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.NONNULL);\n flow.freeTempLocal(tempThis);\n this.currentType = fieldType;\n return module.block(null, [\n module.store(fieldType.byteSize,\n module.local_tee(tempThis.index, thisExpr),\n this.makeSkippedRelease(\n module.load(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef\n module.local_get(tempThis.index, nativeThisType),\n nativeFieldType, field.memoryOffset\n ),\n module.local_tee(tempValue.index, valueExpr), // newRef\n ),\n nativeFieldType, field.memoryOffset\n ),\n module.local_get(tempValue.index, nativeFieldType)\n ], nativeFieldType);\n } else { // (t1 = this).field = __skippedRelease(t1.field, value)\n flow.freeTempLocal(tempThis);\n this.currentType = Type.void;\n return module.store(fieldType.byteSize,\n module.local_tee(tempThis.index, thisExpr),\n this.makeSkippedRelease(\n module.load(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef\n module.local_get(tempThis.index, nativeThisType),\n nativeFieldType, field.memoryOffset\n ),\n valueExpr, // newRef\n ),\n nativeFieldType, field.memoryOffset\n );\n }\n } else {\n if (tee) { // ((t1 = this).field = __retainRelease(t1.field, t2 = value)), t2\n let tempValue = flow.getAndFreeTempLocal(fieldType);\n if (!flow.canOverflow(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.NONNULL);\n flow.freeTempLocal(tempThis);\n this.currentType = fieldType;\n return module.block(null, [\n module.store(fieldType.byteSize,\n module.local_tee(tempThis.index, thisExpr),\n this.makeRetainRelease(\n module.load(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef\n module.local_get(tempThis.index, nativeThisType),\n nativeFieldType, field.memoryOffset\n ),\n module.local_tee(tempValue.index, valueExpr) // newRef\n ),\n nativeFieldType, field.memoryOffset\n ),\n module.local_get(tempValue.index, nativeFieldType)\n ], nativeFieldType);\n } else { // (t1 = this).field = __retainRelease(t1.field, value)\n flow.freeTempLocal(tempThis);\n this.currentType = Type.void;\n return module.store(fieldType.byteSize,\n module.local_tee(tempThis.index, thisExpr),\n this.makeRetainRelease(\n module.load(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef\n module.local_get(tempThis.index, nativeThisType),\n nativeFieldType, field.memoryOffset\n ),\n valueExpr // newRef\n ),\n nativeFieldType, field.memoryOffset\n );\n }\n }\n } else {\n if (tee) { // (this.field = (t1 = value)), t1\n let tempValue = flow.getAndFreeTempLocal(fieldType);\n if (!flow.canOverflow(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.NONNULL);\n this.currentType = fieldType;\n return module.block(null, [\n module.store(fieldType.byteSize,\n thisExpr,\n module.local_tee(tempValue.index, valueExpr),\n nativeFieldType, field.memoryOffset\n ),\n module.local_get(tempValue.index, nativeFieldType)\n ], nativeFieldType);\n } else { // this.field = value\n this.currentType = Type.void;\n return module.store(fieldType.byteSize,\n thisExpr,\n valueExpr,\n nativeFieldType, field.memoryOffset\n );\n }\n }\n }\n\n /** Compiles a call expression according to the specified context. */\n compileCallExpression(\n /** Call expression to compile. */\n expression: CallExpression,\n /** Contextual type indicating the return type the caller expects, if any. */\n contextualType: Type,\n /** Constraints indicating contextual conditions. */\n constraints: Constraints\n ): ExpressionRef {\n\n var module = this.module;\n var flow = this.currentFlow;\n\n // handle call to super\n if (expression.expression.kind == NodeKind.SUPER) {\n let flow = this.currentFlow;\n let actualFunction = flow.actualFunction;\n if (!actualFunction.is(CommonFlags.CONSTRUCTOR)) {\n this.error(\n DiagnosticCode.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors,\n expression.range\n );\n return module.unreachable();\n }\n\n let classInstance = assert(actualFunction.parent); assert(classInstance.kind == ElementKind.CLASS);\n let baseClassInstance = assert((classInstance).base);\n let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_));\n let nativeSizeType = this.options.nativeSizeType;\n\n // {\n // this = super(this || , ...args)\n // this.a = X\n // this.b = Y\n // }\n let theCall = this.compileCallDirect(\n this.ensureConstructor(baseClassInstance, expression),\n expression.arguments,\n expression,\n module.if(\n module.local_get(thisLocal.index, nativeSizeType),\n module.local_get(thisLocal.index, nativeSizeType),\n this.makeRetain(\n this.makeAllocation(classInstance)\n )\n ),\n Constraints.WILL_RETAIN\n );\n assert(this.skippedAutoreleases.has(theCall)); // guaranteed\n let stmts: ExpressionRef[] = [\n module.local_set(thisLocal.index, theCall)\n ];\n this.makeFieldInitialization(classInstance, stmts);\n\n // check that super had been called before accessing `this`\n if (flow.isAny(\n FlowFlags.ALLOCATES |\n FlowFlags.CONDITIONALLY_ALLOCATES\n )) {\n this.error(\n DiagnosticCode._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class,\n expression.range\n );\n return module.unreachable();\n }\n flow.set(FlowFlags.ALLOCATES | FlowFlags.CALLS_SUPER);\n this.currentType = Type.void;\n return module.block(null, stmts);\n }\n\n // otherwise resolve normally\n var target = this.resolver.resolveExpression(expression.expression, flow); // reports\n if (!target) return module.unreachable();\n\n var signature: Signature | null;\n var indexArg: ExpressionRef;\n switch (target.kind) {\n\n // direct call: concrete function\n case ElementKind.FUNCTION_PROTOTYPE: {\n let prototype = target;\n let typeArguments = expression.typeArguments;\n\n // builtins handle present respectively omitted type arguments on their own\n if (prototype.hasDecorator(DecoratorFlags.BUILTIN)) {\n return this.compileCallExpressionBuiltin(prototype, expression, contextualType);\n }\n\n let instance: Function | null = null;\n\n // resolve generic call if type arguments have been provided\n if (typeArguments) {\n if (!prototype.is(CommonFlags.GENERIC)) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n expression.expression.range, prototype.internalName\n );\n return module.unreachable();\n }\n instance = this.resolver.resolveFunctionInclTypeArguments(\n prototype,\n typeArguments,\n flow.actualFunction.parent, // relative to caller\n makeMap(flow.contextualTypeArguments),\n expression\n );\n\n // infer generic call if type arguments have been omitted\n } else if (prototype.is(CommonFlags.GENERIC)) {\n let inferredTypes = new Map();\n let typeParameterNodes = assert(prototype.typeParameterNodes);\n let numTypeParameters = typeParameterNodes.length;\n for (let i = 0; i < numTypeParameters; ++i) {\n inferredTypes.set(typeParameterNodes[i].name.text, null);\n }\n // let numInferred = 0;\n let parameterNodes = prototype.functionTypeNode.parameters;\n let numParameters = parameterNodes.length;\n let argumentNodes = expression.arguments;\n let numArguments = argumentNodes.length;\n let argumentExprs = new Array(numArguments);\n for (let i = 0; i < numParameters; ++i) {\n let typeNode = parameterNodes[i].type;\n let templateName = typeNode.kind == NodeKind.NAMEDTYPE && !(typeNode).name.next\n ? (typeNode).name.identifier.text\n : null;\n let argumentExpression = i < numArguments\n ? argumentNodes[i]\n : parameterNodes[i].initializer;\n if (!argumentExpression) { // missing initializer -> too few arguments\n this.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n expression.range, numParameters.toString(10), numArguments.toString(10)\n );\n return module.unreachable();\n }\n if (templateName !== null && inferredTypes.has(templateName)) {\n let inferredType = inferredTypes.get(templateName);\n if (inferredType) {\n argumentExprs[i] = this.compileExpression(argumentExpression, inferredType);\n let commonType: Type | null;\n if (!(commonType = Type.commonDenominator(inferredType, this.currentType, true))) {\n if (!(commonType = Type.commonDenominator(inferredType, this.currentType, false))) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n parameterNodes[i].type.range, this.currentType.toString(), inferredType.toString()\n );\n return module.unreachable();\n }\n }\n inferredType = commonType;\n } else {\n argumentExprs[i] = this.compileExpression(argumentExpression, Type.auto);\n inferredType = this.currentType;\n // ++numInferred;\n }\n inferredTypes.set(templateName, inferredType);\n } else {\n let concreteType = this.resolver.resolveType(\n parameterNodes[i].type,\n flow.actualFunction,\n flow.contextualTypeArguments\n );\n if (!concreteType) return module.unreachable();\n argumentExprs[i] = this.compileExpression(argumentExpression, concreteType, Constraints.CONV_IMPLICIT);\n }\n }\n let resolvedTypeArguments = new Array(numTypeParameters);\n for (let i = 0; i < numTypeParameters; ++i) {\n let name = typeParameterNodes[i].name.text;\n if (inferredTypes.has(name)) {\n let inferredType = inferredTypes.get(name);\n if (inferredType) {\n resolvedTypeArguments[i] = inferredType;\n continue;\n }\n }\n // unused template, e.g. `function test(): void {...}` called as `test()`\n // invalid because the type is effectively unknown inside the function body\n this.error(\n DiagnosticCode.Type_argument_expected,\n expression.expression.range.atEnd\n );\n return this.module.unreachable();\n }\n instance = this.resolver.resolveFunction(\n prototype,\n resolvedTypeArguments,\n makeMap(flow.contextualTypeArguments)\n );\n if (!instance) return this.module.unreachable();\n if (prototype.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n return this.makeCallDirect(instance, argumentExprs, expression, contextualType == Type.void);\n // TODO: this skips inlining because inlining requires compiling its temporary locals in\n // the scope of the inlined flow. might need another mechanism to lock temp. locals early,\n // so inlining can be performed in `makeCallDirect` instead?\n\n // otherwise resolve the non-generic call as usual\n } else {\n instance = this.resolver.resolveFunction(prototype, null);\n }\n if (!instance) return this.module.unreachable();\n\n // compile 'this' expression if an instance method\n let thisExpr: ExpressionRef = 0;\n if (instance.is(CommonFlags.INSTANCE)) {\n thisExpr = this.compileExpression(assert(this.resolver.currentThisExpression), this.options.usizeType);\n }\n\n return this.compileCallDirect(\n instance,\n expression.arguments,\n expression,\n thisExpr,\n constraints\n );\n }\n\n // indirect call: index argument with signature (non-generic, can't be inlined)\n case ElementKind.LOCAL: {\n if (signature = (target).type.signatureReference) {\n if ((target).is(CommonFlags.INLINED)) {\n indexArg = module.i32(i64_low((target).constantIntegerValue));\n } else {\n indexArg = module.local_get((target).index, NativeType.I32);\n }\n break;\n } else {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n expression.range, (target).type.toString()\n );\n return module.unreachable();\n }\n }\n case ElementKind.GLOBAL: {\n if (signature = (target).type.signatureReference) {\n indexArg = module.global_get((target).internalName, (target).type.toNativeType());\n break;\n } else {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n expression.range, (target).type.toString()\n );\n return module.unreachable();\n }\n }\n case ElementKind.FIELD: {\n let type = (target).type;\n if (signature = type.signatureReference) {\n let thisExpression = assert(this.resolver.currentThisExpression);\n let thisExpr = this.compileExpression(thisExpression, this.options.usizeType);\n indexArg = module.load(\n 4,\n false,\n thisExpr,\n NativeType.I32,\n (target).memoryOffset\n );\n break;\n } else {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n expression.range, type.toString()\n );\n return module.unreachable();\n }\n }\n case ElementKind.FUNCTION_TARGET: {\n signature = (target).signature;\n indexArg = this.compileExpression(expression.expression, (target).type, Constraints.CONV_IMPLICIT);\n break;\n }\n\n case ElementKind.PROPERTY_PROTOTYPE: { // static property\n let getterPrototype = assert((target).getterPrototype);\n let getterInstance = this.resolver.resolveFunction(getterPrototype, null);\n if (!getterInstance) return module.unreachable();\n indexArg = this.compileCallDirect(getterInstance, [], expression.expression);\n signature = this.currentType.signatureReference;\n if (!signature) {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n expression.range, this.currentType.toString()\n );\n return module.unreachable();\n }\n break;\n }\n case ElementKind.PROPERTY: { // instance property\n let getterInstance = assert((target).getterInstance);\n indexArg = this.compileCallDirect(getterInstance, [], expression.expression,\n this.compileExpression(assert(this.resolver.currentThisExpression), this.options.usizeType)\n );\n signature = this.currentType.signatureReference;\n if (!signature) {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n expression.range, this.currentType.toString()\n );\n return module.unreachable();\n }\n break;\n }\n\n // not supported\n default: {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n }\n return this.compileCallIndirect(\n signature,\n indexArg,\n expression.arguments,\n expression,\n 0,\n contextualType == Type.void\n );\n }\n\n private compileCallExpressionBuiltin(\n prototype: FunctionPrototype,\n expression: CallExpression,\n contextualType: Type\n ): ExpressionRef {\n if (prototype.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n\n var typeArguments: Type[] | null = null;\n\n // builtins handle omitted type arguments on their own. if present, however, resolve them here\n // and pass them to the builtin, even if it's still up to the builtin how to handle them.\n var typeParameterNodes = prototype.typeParameterNodes;\n var typeArgumentNodes = expression.typeArguments;\n if (expression.typeArguments) {\n if (!prototype.is(CommonFlags.GENERIC)) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n expression.range, prototype.internalName\n );\n }\n typeArguments = this.resolver.resolveTypeArguments(\n assert(typeParameterNodes),\n typeArgumentNodes,\n this.currentFlow.actualFunction.parent,\n makeMap(this.currentFlow.contextualTypeArguments),\n expression\n );\n }\n\n // now compile the builtin, which usually returns a block of code that replaces the call.\n var expr = compileBuiltinCall(\n this,\n prototype,\n typeArguments,\n expression.arguments,\n contextualType,\n expression\n );\n if (!expr) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n return expr;\n }\n\n /**\n * Checks that a call with the given number as arguments can be performed according to the\n * specified signature.\n */\n checkCallSignature(\n signature: Signature,\n numArguments: i32,\n hasThis: bool,\n reportNode: Node\n ): bool {\n\n // cannot call an instance method without a `this` argument (TODO: `.call`?)\n var thisType = signature.thisType;\n if (hasThis != (thisType != null)) {\n this.error(\n DiagnosticCode.Operation_not_supported, // TODO: better message?\n reportNode.range\n );\n return false;\n }\n\n // not yet implemented (TODO: maybe some sort of an unmanaged/lightweight array?)\n var hasRest = signature.hasRest;\n if (hasRest) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n return false;\n }\n\n var minimum = signature.requiredParameters;\n var maximum = signature.parameterTypes.length;\n\n // must at least be called with required arguments\n if (numArguments < minimum) {\n this.error(\n minimum < maximum\n ? DiagnosticCode.Expected_at_least_0_arguments_but_got_1\n : DiagnosticCode.Expected_0_arguments_but_got_1,\n reportNode.range, minimum.toString(), numArguments.toString()\n );\n return false;\n }\n\n // must not be called with more than the maximum arguments\n if (numArguments > maximum && !hasRest) {\n this.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n reportNode.range, maximum.toString(), numArguments.toString()\n );\n return false;\n }\n\n return true;\n }\n\n /** Checks that an unsafe expression is allowed. */\n private checkUnsafe(reportNode: Node): void {\n // Library files may always use unsafe features\n if (this.options.noUnsafe && !reportNode.range.source.isLibrary) {\n this.error(\n DiagnosticCode.Expression_is_unsafe,\n reportNode.range\n );\n }\n }\n\n /** Compiles a direct call to a concrete function. */\n compileCallDirect(\n instance: Function,\n argumentExpressions: Expression[],\n reportNode: Node,\n thisArg: ExpressionRef = 0,\n constraints: Constraints = Constraints.NONE\n ): ExpressionRef {\n var numArguments = argumentExpressions.length;\n var signature = instance.signature;\n if (!this.checkCallSignature( // reports\n signature,\n numArguments,\n thisArg != 0,\n reportNode\n )) {\n this.currentType = signature.returnType;\n return this.module.unreachable();\n }\n if (instance.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(reportNode);\n\n // Inline if explicitly requested\n if (instance.hasDecorator(DecoratorFlags.INLINE)) {\n assert(!instance.is(CommonFlags.TRAMPOLINE)); // doesn't make sense\n if (this.currentInlineFunctions.includes(instance)) {\n this.warning(\n DiagnosticCode.Function_0_cannot_be_inlined_into_itself,\n reportNode.range, instance.internalName\n );\n } else {\n this.currentInlineFunctions.push(instance);\n let parameterTypes = signature.parameterTypes;\n assert(numArguments <= parameterTypes.length);\n // compile argument expressions\n let args = new Array(numArguments);\n for (let i = 0; i < numArguments; ++i) {\n args[i] = this.compileExpression(argumentExpressions[i], parameterTypes[i],\n Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN\n );\n }\n // make the inlined call (is aware of autoreleases)\n let expr = this.makeCallInline(instance, args, thisArg, (constraints & Constraints.WILL_DROP) != 0);\n if (this.currentType.isManaged) {\n if (!(constraints & Constraints.WILL_RETAIN)) {\n expr = this.makeAutorelease(expr, this.currentFlow);\n } else {\n this.skippedAutoreleases.add(expr);\n }\n }\n this.currentInlineFunctions.pop();\n return expr;\n }\n }\n\n // Otherwise compile to just a call\n var numArgumentsInclThis = thisArg ? numArguments + 1 : numArguments;\n var operands = new Array(numArgumentsInclThis);\n var index = 0;\n if (thisArg) {\n operands[0] = thisArg;\n index = 1;\n }\n var parameterTypes = signature.parameterTypes;\n for (let i = 0; i < numArguments; ++i, ++index) {\n operands[index] = this.compileExpression(argumentExpressions[i], parameterTypes[i],\n Constraints.CONV_IMPLICIT\n );\n }\n assert(index == numArgumentsInclThis);\n if (signature.returnType.isManaged) {\n if (constraints & Constraints.WILL_DROP) {\n // Skip autorelease and simply release\n return this.makeCallDirect(instance, operands, reportNode, true);\n } else if (constraints & Constraints.WILL_RETAIN) {\n // Skip autorelease and remember\n let expr = this.makeCallDirect(instance, operands, reportNode, false, true);\n this.skippedAutoreleases.add(expr);\n return expr;\n } else {\n return this.makeCallDirect(instance, operands, reportNode, false, false);\n }\n }\n return this.makeCallDirect(instance, operands, reportNode,\n (constraints & Constraints.WILL_DROP) != 0\n );\n }\n\n makeCallInline(\n instance: Function,\n operands: ExpressionRef[] | null,\n thisArg: ExpressionRef = 0,\n immediatelyDropped: bool = false\n ): ExpressionRef {\n var module = this.module;\n var numArguments = operands ? operands.length : 0;\n var signature = instance.signature;\n var parameterTypes = signature.parameterTypes;\n var numParameters = parameterTypes.length;\n\n // Create a new inline flow and use it to compile the function as a block\n var previousFlow = this.currentFlow;\n var flow = Flow.createInline(previousFlow.parentFunction, instance);\n var body = [];\n var usedLocals = new Set();\n\n // Prepare compiled arguments right to left, keeping track of used locals.\n for (let i = numArguments - 1; i >= 0; --i) {\n // This is necessary because a later expression must not set an earlier argument local, which\n // is also just a temporary, when being executed. Take for example `t1=1, t2=(t1 = 2)`, where\n // the right expression would reassign the foregoing argument local. So, we iterate from right\n // to left, remembering what's used later, and don't use these for earlier arguments, making\n // the example above essentially `t2=1, t1=(t1 = 2)`.\n let paramExpr = operands![i];\n let paramType = parameterTypes[i];\n let argumentLocal = flow.addScopedLocal(signature.getParameterName(i), paramType, usedLocals);\n findUsedLocals(paramExpr, usedLocals);\n // inlining is aware of wrap/nonnull states:\n if (!previousFlow.canOverflow(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL);\n // inlining is aware of skipped autoreleases:\n if (paramType.isManaged) {\n if (!this.skippedAutoreleases.has(paramExpr)) paramExpr = this.makeRetain(paramExpr);\n flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED);\n }\n body.unshift(\n module.local_set(argumentLocal.index, paramExpr)\n );\n }\n if (thisArg) {\n let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS);\n let thisType = assert(instance.signature.thisType);\n let thisLocal = flow.addScopedLocal(CommonSymbols.this_, thisType, usedLocals);\n // No need to retain `this` as it can't be reassigned and thus can't become prematurely released\n body.unshift(\n module.local_set(thisLocal.index, thisArg)\n );\n let baseInstance = (classInstance).base;\n if (baseInstance) flow.addScopedAlias(CommonSymbols.super_, baseInstance.type, thisLocal.index);\n } else {\n assert(!instance.signature.thisType);\n }\n\n // Compile omitted arguments with final argument locals blocked. Doesn't need to take care of\n // side-effects within earlier expressions because these already happened on set.\n this.currentFlow = flow;\n for (let i = numArguments; i < numParameters; ++i) {\n let initType = parameterTypes[i];\n let initExpr = this.compileExpression(\n assert(instance.prototype.functionTypeNode.parameters[i].initializer),\n initType,\n Constraints.CONV_IMPLICIT\n );\n let argumentLocal = flow.addScopedLocal(signature.getParameterName(i), initType);\n if (!flow.canOverflow(initExpr, initType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(initExpr, initType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL);\n if (initType.isManaged) {\n flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED);\n body.push(\n module.local_set(argumentLocal.index,\n this.makeRetain(initExpr)\n )\n );\n } else {\n body.push(\n module.local_set(argumentLocal.index, initExpr)\n );\n }\n }\n\n // Compile the called function's body in the scope of the inlined flow\n this.compileFunctionBody(instance, body);\n\n // Free any new scoped locals and reset to the original flow\n if (!flow.is(FlowFlags.TERMINATES)) {\n this.performAutoreleases(flow, body);\n this.finishAutoreleases(flow, body);\n }\n flow.freeScopedLocals();\n var returnType = flow.returnType;\n this.currentFlow = previousFlow;\n\n // Create an outer block that we can break to when returning a value out of order\n var expr = module.block(flow.inlineReturnLabel, body, returnType.toNativeType());\n this.currentType = returnType;\n if (returnType.isManaged) {\n if (immediatelyDropped) {\n expr = this.makeRelease(expr);\n this.currentType = Type.void;\n }\n }\n return expr;\n }\n\n /** Gets the trampoline for the specified function. */\n ensureTrampoline(original: Function): Function {\n // A trampoline is a function that takes a fixed amount of operands with some of them possibly\n // being zeroed. It takes one additional argument denoting the number of actual operands\n // provided to the call, and takes appropriate steps to initialize zeroed operands to their\n // default values using the optional parameter initializers of the original function. Doing so\n // allows calls to functions with optional parameters to circumvent the trampoline when all\n // parameters are provided as a fast route, respectively setting up omitted operands in a proper\n // context otherwise.\n var trampoline = original.trampoline;\n if (trampoline) return trampoline;\n\n var originalSignature = original.signature;\n var originalName = original.internalName;\n var originalParameterTypes = originalSignature.parameterTypes;\n var originalParameterDeclarations = original.prototype.functionTypeNode.parameters;\n var returnType = originalSignature.returnType;\n var thisType = originalSignature.thisType;\n var isInstance = original.is(CommonFlags.INSTANCE);\n\n // arguments excl. `this`, operands incl. `this`\n var minArguments = originalSignature.requiredParameters;\n var minOperands = minArguments;\n var maxArguments = originalParameterTypes.length;\n var maxOperands = maxArguments;\n if (isInstance) {\n ++minOperands;\n ++maxOperands;\n }\n var numOptional = assert(maxOperands - minOperands);\n\n var forwardedOperands = new Array(minOperands);\n var operandIndex = 0;\n\n // forward `this` if applicable\n var module = this.module;\n if (isInstance) {\n forwardedOperands[0] = module.local_get(0, this.options.nativeSizeType);\n operandIndex = 1;\n }\n\n // forward required arguments\n for (let i = 0; i < minArguments; ++i, ++operandIndex) {\n forwardedOperands[operandIndex] = module.local_get(operandIndex, originalParameterTypes[i].toNativeType());\n }\n assert(operandIndex == minOperands);\n\n // create the trampoline element\n var trampolineSignature = new Signature(this.program, originalParameterTypes, returnType, thisType);\n trampolineSignature.requiredParameters = maxArguments;\n trampolineSignature.parameterNames = originalSignature.parameterNames;\n trampoline = new Function(\n original.name + \"|trampoline\",\n original.prototype,\n trampolineSignature,\n original.contextualTypeArguments\n );\n trampoline.set(original.flags | CommonFlags.TRAMPOLINE | CommonFlags.COMPILED);\n original.trampoline = trampoline;\n\n // compile initializers of omitted arguments in scope of the trampoline function\n // this is necessary because initializers might need additional locals and a proper this context\n var previousFlow = this.currentFlow;\n var flow = trampoline.flow;\n this.currentFlow = flow;\n\n // create a br_table switching over the number of optional parameters provided\n var numNames = numOptional + 1; // incl. outer block\n var names = new Array(numNames);\n var ofN = \"of\" + numOptional.toString(10);\n for (let i = 0; i < numNames; ++i) {\n let label = i.toString(10) + ofN;\n names[i] = label;\n }\n var body = module.block(names[0], [\n module.block(\"outOfRange\", [\n module.switch(names, \"outOfRange\",\n // condition is number of provided optional arguments, so subtract required arguments\n minArguments\n ? module.binary(\n BinaryOp.SubI32,\n module.global_get(BuiltinSymbols.argc, NativeType.I32),\n module.i32(minArguments)\n )\n : module.global_get(BuiltinSymbols.argc, NativeType.I32)\n )\n ]),\n module.unreachable()\n ]);\n for (let i = 0; i < numOptional; ++i, ++operandIndex) {\n let type = originalParameterTypes[minArguments + i];\n let declaration = originalParameterDeclarations[minArguments + i];\n let initializer = declaration.initializer;\n let initExpr: ExpressionRef;\n if (initializer) {\n initExpr = module.local_set(operandIndex,\n this.compileExpression(\n initializer,\n type,\n Constraints.CONV_IMPLICIT\n )\n );\n } else {\n this.error(\n DiagnosticCode.Optional_parameter_must_have_an_initializer,\n declaration.range\n );\n initExpr = module.unreachable();\n }\n body = module.block(names[i + 1], [\n body,\n initExpr,\n ]);\n forwardedOperands[operandIndex] = module.local_get(operandIndex, type.toNativeType());\n }\n assert(operandIndex == maxOperands);\n\n var stmts: ExpressionRef[] = [ body ];\n var theCall = module.call(originalName, forwardedOperands, returnType.toNativeType());\n if (returnType != Type.void) {\n this.performAutoreleasesWithValue(flow, theCall, returnType, stmts);\n } else {\n stmts.push(theCall);\n this.performAutoreleases(flow, stmts);\n }\n flow.freeScopedLocals();\n this.currentFlow = previousFlow;\n\n var funcRef = module.addFunction(\n trampoline.internalName,\n this.ensureFunctionType(\n trampolineSignature.parameterTypes,\n returnType,\n thisType\n ),\n typesToNativeTypes(trampoline.additionalLocals),\n module.block(null, stmts, returnType.toNativeType())\n );\n trampoline.finalize(module, funcRef);\n return trampoline;\n }\n\n /** Makes sure that the argument count helper global is present and returns its name. */\n private ensureArgcVar(): string {\n if (!this.argcVar) {\n let module = this.module;\n this.argcVar = module.addGlobal(\n BuiltinSymbols.argc,\n NativeType.I32,\n true,\n module.i32(0)\n );\n }\n return BuiltinSymbols.argc;\n }\n\n /** Makes sure that the argument count helper setter is present and returns its name. */\n private ensureArgcSet(): string {\n if (!this.argcSet) {\n let module = this.module;\n this.argcSet = module.addFunction(BuiltinSymbols.setargc,\n this.ensureFunctionType([ Type.u32 ], Type.void),\n null,\n module.global_set(this.ensureArgcVar(),\n module.local_get(0, NativeType.I32)\n )\n );\n module.addFunctionExport(BuiltinSymbols.setargc, \"__setargc\");\n }\n return BuiltinSymbols.setargc;\n }\n\n // \n\n /** Makes retain call, retaining the expression's value. */\n makeRetain(expr: ExpressionRef): ExpressionRef {\n var retainInstance = this.program.retainInstance;\n this.compileFunction(retainInstance);\n return this.module.call(retainInstance.internalName, [ expr ], this.options.nativeSizeType);\n }\n\n /** Makes a retainRelease call, retaining the new expression's value and releasing the old expression's value, in this order. */\n makeRetainRelease(oldExpr: ExpressionRef, newExpr: ExpressionRef): ExpressionRef {\n // if ((t1=newExpr) != (t2=oldExpr)) {\n // __retain(t1);\n // __release(t2);\n // }, t1\n var module = this.module;\n var flow = this.currentFlow;\n var usizeType = this.options.usizeType;\n var nativeSizeType = this.options.nativeSizeType;\n var temp1 = flow.getTempLocal(usizeType, findUsedLocals(oldExpr));\n var temp2 = flow.getAndFreeTempLocal(usizeType);\n flow.freeTempLocal(temp1);\n return module.block(null, [\n module.if(\n module.binary(nativeSizeType == NativeType.I64 ? BinaryOp.NeI64 : BinaryOp.NeI32,\n module.local_tee(temp1.index, newExpr),\n module.local_tee(temp2.index, oldExpr)\n ),\n module.block(null, [\n module.drop(\n this.makeRetain(module.local_get(temp1.index, nativeSizeType))\n ),\n this.makeRelease(module.local_get(temp2.index, nativeSizeType))\n ])\n ),\n module.local_get(temp1.index, nativeSizeType)\n ], nativeSizeType);\n }\n\n /** Makes a skippedRelease call, ignoring the new expression's value and releasing the old expression's value, in this order. */\n makeSkippedRelease(oldExpr: ExpressionRef, newExpr: ExpressionRef): ExpressionRef {\n // TODO: this helper can be eliminated altogether if the current logic holds\n // (t1=newExpr), __release(oldExpr), t1\n var module = this.module;\n var flow = this.currentFlow;\n var usizeType = this.options.usizeType;\n var nativeSizeType = this.options.nativeSizeType;\n var temp = flow.getAndFreeTempLocal(usizeType, findUsedLocals(oldExpr));\n return module.block(null, [\n module.local_set(temp.index, newExpr),\n this.makeRelease(oldExpr),\n module.local_get(temp.index, nativeSizeType)\n ], nativeSizeType);\n }\n\n /** Makes a release call, releasing the expression's value. Changes the current type to void.*/\n makeRelease(expr: ExpressionRef): ExpressionRef {\n var releaseInstance = this.program.releaseInstance;\n this.compileFunction(releaseInstance);\n return this.module.call(releaseInstance.internalName, [ expr ], NativeType.None);\n }\n\n /** Makes an automatic release call at the end of the current flow. */\n makeAutorelease(expr: ExpressionRef, flow: Flow = this.currentFlow): ExpressionRef {\n // FIXME: loses track of nonNull state?\n return this.module.local_tee(flow.getAutoreleaseLocal(this.options.usizeType).index, expr);\n }\n\n /** Attempts to undo a final autorelease, returning the index of the previously retaining variable or -1 if not possible. */\n undoAutorelease(expr: ExpressionRef, flow: Flow): i32 {\n // NOTE: Can't remove the local.tee completely because it's already compiled\n // and a child of something else. Preventing the final release however should\n // make it optimize away.\n switch (getExpressionId(expr)) {\n case ExpressionId.LocalSet: { // local.tee(__retain(expr))\n if (isLocalTee(expr)) {\n let index = getLocalSetIndex(expr);\n if (flow.isAnyLocalFlag(index, LocalFlags.ANY_RETAINED)) {\n // Assumes that the expression actually belongs to the flow and that\n // top-level autoreleases are never undone. While that's true, it's\n // not necessary to check presence in scopedLocals.\n flow.unsetLocalFlag(index, LocalFlags.ANY_RETAINED);\n return index;\n }\n }\n break;\n }\n case ExpressionId.Block: { // { ..., local.tee(__retain(expr)) }\n if (getBlockName(expr) === null) { // must not be a break target\n let count = getBlockChildCount(expr);\n if (count) {\n return this.undoAutorelease(getBlockChild(expr, count - 1), flow);\n }\n }\n break;\n }\n }\n return -1;\n }\n\n /**\n * Attemps to move a final autorelease from one flow to a parent.\n * It is crucial that from flow hasn't processed autoreleases yet because otherwise the final\n * retain would have been written already.\n */\n moveAutorelease(expr: ExpressionRef, fromInnerFlow: Flow, toOuterFlow: Flow): ExpressionRef {\n // NOTE: While this avoids an unnecessary set of retain and release, it cannot\n // eliminate the now unnecessary temporary local.tee because it is already part of\n // another expression in the tree. But optimizing should collapse locals again.\n var index = this.undoAutorelease(expr, fromInnerFlow);\n return ~index\n ? this.makeAutorelease(expr, toOuterFlow) // undone, can skip the retain\n : this.makeAutorelease(this.makeRetain(expr), toOuterFlow);\n }\n\n /** Performs any queued autoreleases in the specified flow. */\n performAutoreleases(flow: Flow, stmts: ExpressionRef[], clearFlags: bool = true): void {\n var scopedLocals = flow.scopedLocals;\n if (scopedLocals) {\n let module = this.module;\n for (let local of scopedLocals.values()) {\n if (local.is(CommonFlags.SCOPED)) { // otherwise an alias\n let localIndex = local.index;\n if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) {\n if (clearFlags) flow.unsetLocalFlag(localIndex, LocalFlags.ANY_RETAINED);\n stmts.push(\n this.makeRelease(\n module.local_get(localIndex, local.type.toNativeType())\n )\n );\n }\n }\n }\n }\n }\n\n /** Performs any queued autoreleases in the specified flow and returns the value. */\n performAutoreleasesWithValue(\n flow: Flow,\n valueExpr: ExpressionRef,\n valueType: Type,\n stmts: ExpressionRef[] | null = null,\n clearFlags: bool = true\n ): ExpressionRef {\n if (!stmts) stmts = new Array();\n stmts.push(\n this.module.nop()\n );\n var lengthBefore = stmts.length;\n this.performAutoreleases(flow, stmts, clearFlags);\n if (stmts.length > lengthBefore) {\n let nativeType = valueType.toNativeType();\n let temp = flow.getAndFreeTempLocal(valueType);\n if (!flow.canOverflow(valueExpr, valueType)) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(valueExpr, valueType)) flow.setLocalFlag(temp.index, LocalFlags.NONNULL);\n let module = this.module;\n stmts[lengthBefore - 1] = module.local_set(temp.index, valueExpr); // nop -> set\n stmts.push(\n module.local_get(temp.index, nativeType) // append get\n );\n return module.block(null, stmts, nativeType);\n } else if (stmts.length > 1) {\n stmts[lengthBefore - 1] = valueExpr; // nop -> value\n return this.module.block(null, stmts, valueType.toNativeType());\n }\n return valueExpr;\n }\n\n /** Finishes any queued top-level autoreleases in the actual function of the specified flow. */\n finishAutoreleases(flow: Flow, stmts: ExpressionRef[]): void {\n var module = this.module;\n if (flow.is(FlowFlags.INLINE_CONTEXT)) {\n // traverse to the top-most flow containing the inlined function's\n // locals as scoped locals and release these instead.\n let parent: Flow | null;\n while (parent = flow.parent) flow = parent;\n this.performAutoreleases(flow, stmts, false);\n } else {\n for (let local of flow.parentFunction.localsByIndex) {\n let localIndex = local.index;\n if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) {\n flow.unsetLocalFlag(localIndex, LocalFlags.ANY_RETAINED);\n stmts.push(\n this.makeRelease(\n module.local_get(localIndex, local.type.toNativeType())\n )\n );\n }\n }\n }\n }\n\n // \n\n /** Creates a direct call to the specified function. */\n makeCallDirect(\n instance: Function,\n operands: ExpressionRef[] | null,\n reportNode: Node,\n immediatelyDropped: bool = false,\n /** Skip the usual autorelease and manage this at the callsite instead. */\n skipAutorelease: bool = false\n ): ExpressionRef {\n if (instance.hasDecorator(DecoratorFlags.INLINE)) {\n assert(!instance.is(CommonFlags.TRAMPOLINE)); // doesn't make sense\n if (this.currentInlineFunctions.includes(instance)) {\n this.warning(\n DiagnosticCode.Function_0_cannot_be_inlined_into_itself,\n reportNode.range, instance.internalName\n );\n } else {\n this.currentInlineFunctions.push(instance);\n let expr: ExpressionRef;\n if (instance.is(CommonFlags.INSTANCE)) {\n let theOperands = assert(operands);\n assert(theOperands.length);\n expr = this.makeCallInline(instance, theOperands.slice(1), theOperands[0], immediatelyDropped);\n } else {\n expr = this.makeCallInline(instance, operands, 0, immediatelyDropped);\n }\n if (this.currentType.isManaged) {\n if (!skipAutorelease) {\n expr = this.makeAutorelease(expr, this.currentFlow);\n } else {\n this.skippedAutoreleases.add(expr);\n }\n }\n this.currentInlineFunctions.pop();\n return expr;\n }\n }\n var numOperands = operands ? operands.length : 0;\n var numArguments = numOperands;\n var minArguments = instance.signature.requiredParameters;\n var minOperands = minArguments;\n var maxArguments = instance.signature.parameterTypes.length;\n var maxOperands = maxArguments;\n if (instance.is(CommonFlags.INSTANCE)) {\n ++minOperands;\n ++maxOperands;\n --numArguments;\n }\n assert(numOperands >= minOperands);\n\n var module = this.module;\n if (!this.compileFunction(instance)) return module.unreachable();\n var returnType = instance.signature.returnType;\n var isCallImport = instance.is(CommonFlags.MODULE_IMPORT);\n\n // fill up omitted arguments with their initializers, if constant, otherwise with zeroes.\n if (numOperands < maxOperands) {\n if (!operands) {\n operands = new Array(maxOperands);\n operands.length = 0;\n }\n let parameterTypes = instance.signature.parameterTypes;\n let parameterNodes = instance.prototype.functionTypeNode.parameters;\n assert(parameterNodes.length == parameterTypes.length);\n let allOptionalsAreConstant = true;\n for (let i = numArguments; i < maxArguments; ++i) {\n let initializer = parameterNodes[i].initializer;\n if (initializer) {\n if (nodeIsConstantValue(initializer.kind)) {\n operands.push(this.compileExpression(\n parameterNodes[i].initializer,\n parameterTypes[i],\n Constraints.CONV_IMPLICIT\n ));\n continue;\n }\n let resolved = this.resolver.resolveExpression(initializer, instance.flow, parameterTypes[i]);\n if (resolved) {\n if (resolved.kind == ElementKind.GLOBAL) {\n let global = resolved;\n if (this.compileGlobal(global)) {\n if (global.is(CommonFlags.INLINED)) {\n operands.push(\n this.compileInlineConstant(global, parameterTypes[i], Constraints.CONV_IMPLICIT)\n );\n } else {\n operands.push(\n this.convertExpression(\n module.global_get(global.internalName, global.type.toNativeType()),\n global.type, parameterTypes[i], false, false, initializer\n )\n );\n }\n continue;\n }\n }\n }\n }\n operands.push(parameterTypes[i].toNativeZero(module));\n allOptionalsAreConstant = false;\n }\n if (!allOptionalsAreConstant) {\n if (!isCallImport) {\n let original = instance;\n instance = this.ensureTrampoline(instance);\n if (!this.compileFunction(instance)) return module.unreachable();\n instance.flow.flags = original.flow.flags;\n let nativeReturnType = returnType.toNativeType();\n let expr = module.call(instance.internalName, operands, nativeReturnType);\n this.currentType = returnType;\n if (returnType.isManaged) {\n if (immediatelyDropped) {\n expr = this.makeRelease(expr);\n this.currentType = Type.void;\n } else if (!skipAutorelease) {\n expr = this.makeAutorelease(expr);\n } else {\n this.skippedAutoreleases.add(expr);\n }\n }\n return module.block(null, [\n module.global_set(this.ensureArgcVar(), module.i32(numArguments)),\n expr\n ], this.currentType.toNativeType());\n }\n }\n }\n\n // If the return value is of a reference type it has not yet been released but is in flight\n // which is equivalent to a skipped autorelease. Hence, insert either a release if it is\n // dropped anyway, preserve the skipped autorelease if explicitly requested or autorelease now.\n var expr = module.call(instance.internalName, operands, returnType.toNativeType());\n this.currentType = returnType;\n if (returnType.isManaged) {\n if (immediatelyDropped) {\n expr = this.makeRelease(expr);\n this.currentType = Type.void;\n } else if (!skipAutorelease) {\n expr = this.makeAutorelease(expr);\n }\n }\n return expr;\n }\n\n /** Compiles an indirect call using an index argument and a signature. */\n compileCallIndirect(\n signature: Signature,\n indexArg: ExpressionRef,\n argumentExpressions: Expression[],\n reportNode: Node,\n thisArg: ExpressionRef = 0,\n immediatelyDropped: bool = false\n ): ExpressionRef {\n var numArguments = argumentExpressions.length;\n\n if (!this.checkCallSignature( // reports\n signature,\n numArguments,\n thisArg != 0,\n reportNode\n )) {\n return this.module.unreachable();\n }\n\n var numArgumentsInclThis = thisArg ? numArguments + 1 : numArguments;\n var operands = new Array(numArgumentsInclThis);\n var index = 0;\n if (thisArg) {\n operands[0] = thisArg;\n index = 1;\n }\n var parameterTypes = signature.parameterTypes;\n for (let i = 0; i < numArguments; ++i, ++index) {\n operands[index] = this.compileExpression(argumentExpressions[i], parameterTypes[i],\n Constraints.CONV_IMPLICIT\n );\n }\n assert(index == numArgumentsInclThis);\n return this.makeCallIndirect(signature, indexArg, operands, immediatelyDropped);\n }\n\n /** Creates an indirect call to the function at `indexArg` in the function table. */\n makeCallIndirect(\n signature: Signature,\n indexArg: ExpressionRef,\n operands: ExpressionRef[] | null = null,\n immediatelyDropped: bool = false\n ): ExpressionRef {\n var numOperands = operands ? operands.length : 0;\n var numArguments = numOperands;\n var minArguments = signature.requiredParameters;\n var minOperands = minArguments;\n var maxArguments = signature.parameterTypes.length;\n var maxOperands = maxArguments;\n if (signature.thisType) {\n ++minOperands;\n ++maxOperands;\n --numArguments;\n }\n assert(numOperands >= minOperands);\n\n this.ensureFunctionType(signature.parameterTypes, signature.returnType, signature.thisType);\n var module = this.module;\n\n // fill up omitted arguments with zeroes\n if (numOperands < maxOperands) {\n if (!operands) {\n operands = new Array(maxOperands);\n operands.length = 0;\n }\n let parameterTypes = signature.parameterTypes;\n for (let i = numArguments; i < maxArguments; ++i) {\n operands.push(parameterTypes[i].toNativeZero(module));\n }\n }\n\n var returnType = signature.returnType;\n var expr = module.call_indirect(indexArg, operands, signature.toSignatureString());\n this.currentType = returnType;\n if (returnType.isManaged) {\n if (immediatelyDropped) {\n expr = this.makeRelease(expr);\n this.currentType = Type.void;\n } else {\n expr = this.makeAutorelease(expr);\n }\n }\n return module.block(null, [\n module.global_set(this.ensureArgcVar(), // might be calling a trampoline\n module.i32(numArguments)\n ),\n expr\n ], this.currentType.toNativeType()); // not necessarily wrapped\n }\n\n compileCommaExpression(\n expression: CommaExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var expressions = expression.expressions;\n var numExpressions = expressions.length;\n var exprs = new Array(numExpressions--);\n for (let i = 0; i < numExpressions; ++i) {\n exprs[i] = this.compileExpression(expressions[i], Type.void, // drop all except last\n Constraints.CONV_IMPLICIT | Constraints.WILL_DROP\n );\n }\n exprs[numExpressions] = this.compileExpression(expressions[numExpressions], contextualType, constraints);\n return this.module.block(null, exprs, this.currentType.toNativeType());\n }\n\n compileElementAccessExpression(\n expression: ElementAccessExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var target = this.resolver.resolveElementAccessExpression(\n expression,\n this.currentFlow,\n contextualType\n ); // reports\n if (!target) return this.module.unreachable();\n switch (target.kind) {\n case ElementKind.CLASS: {\n let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET, this.currentFlow.is(FlowFlags.UNCHECKED_CONTEXT));\n if (!indexedGet) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n expression.expression.range, (target).internalName\n );\n return this.module.unreachable();\n }\n let thisArg = this.compileExpression(expression.expression, (target).type,\n Constraints.CONV_IMPLICIT\n );\n return this.compileCallDirect(indexedGet, [\n expression.elementExpression\n ], expression, thisArg, constraints);\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n compileFunctionExpression(\n expression: FunctionExpression,\n contextualSignature: Signature | null,\n constraints: Constraints\n ): ExpressionRef {\n var declaration = expression.declaration.clone(); // generic contexts can have multiple\n assert(!declaration.typeParameters); // function expression cannot be generic\n var flow = this.currentFlow;\n var actualFunction = flow.actualFunction;\n var prototype = new FunctionPrototype(\n declaration.name.text.length\n ? declaration.name.text\n : \"anonymous|\" + (actualFunction.nextAnonymousId++).toString(10),\n actualFunction,\n declaration,\n DecoratorFlags.NONE\n );\n var instance: Function | null;\n var contextualTypeArguments = makeMap(flow.contextualTypeArguments);\n\n // compile according to context. this differs from a normal function in that omitted parameter\n // and return types can be inferred and omitted arguments can be replaced with dummies.\n if (contextualSignature) {\n let signatureNode = prototype.functionTypeNode;\n let parameterNodes = signatureNode.parameters;\n let numPresentParameters = parameterNodes.length;\n\n // must not require more than the maximum number of parameters\n let parameterTypes = contextualSignature.parameterTypes;\n let numParameters = parameterTypes.length;\n if (numPresentParameters > numParameters) {\n this.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n expression.range, numParameters.toString(), numPresentParameters.toString()\n );\n return this.module.unreachable();\n }\n\n // check non-omitted parameter types\n let parameterNames = new Array(numPresentParameters);\n for (let i = 0; i < numPresentParameters; ++i) {\n let parameterNode = parameterNodes[i];\n parameterNames[i] = parameterNode.name.text; // use actual name\n if (!isTypeOmitted(parameterNode.type)) {\n let resolvedType = this.resolver.resolveType(\n parameterNode.type,\n actualFunction.parent,\n contextualTypeArguments\n );\n if (!resolvedType) return this.module.unreachable();\n if (!parameterTypes[i].isStrictlyAssignableTo(resolvedType)) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n parameterNode.range, parameterTypes[i].toString(), resolvedType.toString()\n );\n return this.module.unreachable();\n }\n }\n // any unused parameters are inherited but ignored\n }\n\n // check non-omitted return type\n let returnType = contextualSignature.returnType;\n if (!isTypeOmitted(signatureNode.returnType)) {\n let resolvedType = this.resolver.resolveType(\n signatureNode.returnType,\n actualFunction.parent,\n contextualTypeArguments\n );\n if (!resolvedType) return this.module.unreachable();\n if (\n returnType == Type.void\n ? resolvedType != Type.void\n : !resolvedType.isStrictlyAssignableTo(returnType)\n ) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n signatureNode.returnType.range, resolvedType.toString(), returnType.toString()\n );\n return this.module.unreachable();\n }\n }\n\n // check explicit this type\n let thisType = contextualSignature.thisType;\n let thisTypeNode = signatureNode.explicitThisType;\n if (thisTypeNode) {\n if (!thisType) {\n this.error(\n DiagnosticCode._this_cannot_be_referenced_in_current_location,\n thisTypeNode.range\n );\n return this.module.unreachable();\n }\n let resolvedType = this.resolver.resolveType(\n thisTypeNode,\n actualFunction.parent,\n contextualTypeArguments\n );\n if (!resolvedType) return this.module.unreachable();\n if (!thisType.isStrictlyAssignableTo(resolvedType)) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n thisTypeNode.range, thisType.toString(), resolvedType.toString()\n );\n return this.module.unreachable();\n }\n }\n\n let signature = new Signature(this.program, parameterTypes, returnType, thisType);\n signature.requiredParameters = numParameters; // !\n signature.parameterNames = parameterNames;\n instance = new Function(\n prototype.name,\n prototype,\n signature,\n contextualTypeArguments\n );\n if (!this.compileFunction(instance)) return this.module.unreachable();\n this.currentType = contextualSignature.type;\n\n // otherwise compile like a normal function\n } else {\n instance = this.compileFunctionUsingTypeArguments(\n prototype,\n [],\n contextualTypeArguments\n );\n if (!instance) return this.module.unreachable();\n this.currentType = instance.signature.type;\n }\n\n var index = this.ensureFunctionTableEntry(instance); // reports\n return index < 0\n ? this.module.unreachable()\n : this.module.i32(index);\n }\n\n /** Makes sure the enclosing source file of the specified expression has been compiled. */\n private maybeCompileEnclosingSource(expression: Expression): void {\n var internalPath = expression.range.source.internalPath;\n var filesByName = this.program.filesByName;\n assert(filesByName.has(internalPath));\n var enclosingFile = filesByName.get(internalPath)!;\n if (!enclosingFile.is(CommonFlags.COMPILED)) {\n this.compileFileByPath(internalPath, expression);\n }\n }\n\n /**\n * Compiles an identifier in the specified context.\n * @param retainConstantType Retains the type of inlined constants if `true`, otherwise\n * precomputes them according to context.\n */\n compileIdentifierExpression(\n expression: IdentifierExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n var actualFunction = flow.actualFunction;\n\n // check special keywords first\n switch (expression.kind) {\n case NodeKind.NULL: {\n let options = this.options;\n let classReference = contextualType.classReference;\n if (!classReference) {\n this.currentType = options.usizeType;\n } else {\n this.currentType = classReference.type.asNullable();\n }\n return options.isWasm64\n ? module.i64(0)\n : module.i32(0);\n }\n case NodeKind.TRUE: {\n this.currentType = Type.bool;\n return module.i32(1);\n }\n case NodeKind.FALSE: {\n this.currentType = Type.bool;\n return module.i32(0);\n }\n case NodeKind.THIS: {\n if (actualFunction.is(CommonFlags.INSTANCE)) {\n let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_));\n let classInstance = assert(actualFunction.parent); assert(classInstance.kind == ElementKind.CLASS);\n let nativeSizeType = this.options.nativeSizeType;\n if (actualFunction.is(CommonFlags.CONSTRUCTOR)) {\n if (!flow.is(FlowFlags.ALLOCATES)) {\n flow.set(FlowFlags.ALLOCATES);\n // {\n // if (!this) this = \n // this.a = X\n // this.b = Y\n // return this\n // }\n let stmts: ExpressionRef[] = [\n module.if(\n module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32,\n module.local_get(thisLocal.index, nativeSizeType)\n ),\n module.local_set(thisLocal.index,\n this.makeRetain(\n this.makeAllocation(classInstance)\n )\n )\n )\n ];\n this.makeFieldInitialization(classInstance, stmts);\n stmts.push(\n module.local_get(thisLocal.index, nativeSizeType)\n );\n this.currentType = thisLocal.type;\n return module.block(null, stmts, nativeSizeType);\n }\n }\n // if not a constructor, `this` type can differ\n let thisType = assert(actualFunction.signature.thisType);\n this.currentType = thisType;\n return module.local_get(thisLocal.index, thisType.toNativeType());\n }\n this.error(\n DiagnosticCode._this_cannot_be_referenced_in_current_location,\n expression.range\n );\n this.currentType = this.options.usizeType;\n return module.unreachable();\n }\n case NodeKind.SUPER: {\n let flow = this.currentFlow;\n let actualFunction = flow.actualFunction;\n if (actualFunction.is(CommonFlags.CONSTRUCTOR)) {\n if (!flow.is(FlowFlags.CALLS_SUPER)) {\n // TS1034 in the parser effectively limits this to property accesses\n this.error(\n DiagnosticCode._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class,\n expression.range\n );\n }\n }\n if (flow.is(FlowFlags.INLINE_CONTEXT)) {\n let scopedThis = flow.lookupLocal(CommonSymbols.this_);\n if (scopedThis) {\n let scopedThisClass = assert(scopedThis.type.classReference);\n let base = scopedThisClass.base;\n if (base) {\n this.currentType = base.type;\n return module.local_get(scopedThis.index, base.type.toNativeType());\n }\n }\n }\n if (actualFunction.is(CommonFlags.INSTANCE)) {\n let classInstance = assert(actualFunction.parent); assert(classInstance.kind == ElementKind.CLASS);\n let baseClassInstance = (classInstance).base;\n if (baseClassInstance) {\n let superType = baseClassInstance.type;\n this.currentType = superType;\n return module.local_get(0, superType.toNativeType());\n }\n }\n this.error(\n DiagnosticCode._super_can_only_be_referenced_in_a_derived_class,\n expression.range\n );\n this.currentType = this.options.usizeType;\n return module.unreachable();\n }\n }\n\n this.maybeCompileEnclosingSource(expression);\n\n // otherwise resolve\n var target = this.resolver.resolveIdentifier( // reports\n expression,\n flow,\n this.currentEnum || actualFunction\n );\n if (!target) return module.unreachable();\n\n switch (target.kind) {\n case ElementKind.LOCAL: {\n let type = (target).type;\n assert(type != Type.void);\n if ((target).is(CommonFlags.INLINED)) {\n return this.compileInlineConstant(target, contextualType, constraints);\n }\n let localIndex = (target).index;\n assert(localIndex >= 0);\n if (type.is(TypeFlags.NULLABLE) && flow.isLocalFlag(localIndex, LocalFlags.NONNULL, false)) {\n type = type.nonNullableType;\n }\n this.currentType = type;\n return this.module.local_get(localIndex, type.toNativeType());\n }\n case ElementKind.GLOBAL: {\n if (!this.compileGlobal(target)) { // reports; not yet compiled if a static field\n return this.module.unreachable();\n }\n let type = (target).type;\n assert(type != Type.void);\n if ((target).is(CommonFlags.INLINED)) {\n return this.compileInlineConstant(target, contextualType, constraints);\n }\n this.currentType = type;\n return this.module.global_get((target).internalName, type.toNativeType());\n }\n case ElementKind.ENUMVALUE: { // here: if referenced from within the same enum\n if (!target.is(CommonFlags.COMPILED)) {\n this.error(\n DiagnosticCode.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums,\n expression.range\n );\n this.currentType = Type.i32;\n return this.module.unreachable();\n }\n this.currentType = Type.i32;\n if ((target).is(CommonFlags.INLINED)) {\n assert((target).constantValueKind == ConstantValueKind.INTEGER);\n return this.module.i32(i64_low((target).constantIntegerValue));\n }\n return this.module.global_get((target).internalName, NativeType.I32);\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n let instance = this.resolver.resolveFunction(\n target,\n null,\n makeMap(flow.contextualTypeArguments)\n );\n if (!(instance && this.compileFunction(instance))) return module.unreachable();\n let index = this.ensureFunctionTableEntry(instance);\n this.currentType = instance.signature.type;\n return this.module.i32(index);\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n compileInstanceOfExpression(\n expression: InstanceOfExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n // NOTE that this differs from TypeScript in that the rhs is a type, not an expression. at the\n // time of implementation, this seemed more useful because dynamic rhs expressions are not\n // possible in AS anyway. also note that the code generated below must preserve side-effects of\n // the LHS expression even when the result is a constant, i.e. return a block dropping `expr`.\n var expr = this.compileExpression(expression.expression, this.options.usizeType);\n var actualType = this.currentType;\n var expectedType = this.resolver.resolveType(expression.isType, this.currentFlow.actualFunction);\n this.currentType = Type.bool;\n if (!expectedType) return module.unreachable();\n\n // instanceof - must be exact\n if (!expectedType.is(TypeFlags.REFERENCE)) {\n return module.block(null, [\n module.drop(expr),\n module.i32(actualType == expectedType ? 1 : 0)\n ], NativeType.I32);\n }\n\n // instanceof - always false\n if (!actualType.is(TypeFlags.REFERENCE)) {\n return module.block(null, [\n module.drop(expr),\n module.i32(0)\n ], NativeType.I32);\n }\n\n // both LHS and RHS are references now\n var nativeSizeType = actualType.toNativeType();\n\n // instanceof - LHS must be != 0\n if (actualType.is(TypeFlags.NULLABLE) && !expectedType.is(TypeFlags.NULLABLE)) {\n\n // downcast - check statically\n if (actualType.nonNullableType.isAssignableTo(expectedType)) {\n return module.binary(\n nativeSizeType == NativeType.I64\n ? BinaryOp.NeI64\n : BinaryOp.NeI32,\n expr,\n actualType.toNativeZero(module)\n );\n }\n\n // upcast - check dynamically\n if (expectedType.isAssignableTo(actualType)) {\n let program = this.program;\n if (!(actualType.isUnmanaged || expectedType.isUnmanaged)) {\n let flow = this.currentFlow;\n let tempLocal = flow.getAndFreeTempLocal(actualType);\n let instanceofInstance = assert(program.instanceofInstance);\n this.compileFunction(instanceofInstance);\n return module.if(\n module.unary(\n nativeSizeType == NativeType.I64\n ? UnaryOp.EqzI64\n : UnaryOp.EqzI32,\n module.local_tee(tempLocal.index, expr),\n ),\n module.i32(0),\n this.makeCallDirect(instanceofInstance, [\n module.local_get(tempLocal.index, nativeSizeType),\n module.i32(expectedType.classReference!.id)\n ], expression)\n );\n } else {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n }\n }\n\n // either none or both nullable\n } else {\n\n // downcast - check statically\n if (actualType.isAssignableTo(expectedType)) {\n return module.block(null, [\n this.convertExpression(expr, actualType, Type.void, false, false, expression.expression),\n module.i32(1)\n ], NativeType.I32);\n\n // upcast - check dynamically\n } else if (expectedType.isAssignableTo(actualType)) {\n let program = this.program;\n if (!(actualType.isUnmanaged || expectedType.isUnmanaged)) {\n // FIXME: the temp local and the if can be removed here once flows\n // perform null checking, which would error earlier when checking\n // uninitialized (thus zero) `var a: A` to be an instance of something.\n let flow = this.currentFlow;\n let tempLocal = flow.getAndFreeTempLocal(actualType);\n let instanceofInstance = assert(program.instanceofInstance);\n this.compileFunction(instanceofInstance);\n return module.if(\n module.unary(\n nativeSizeType == NativeType.I64\n ? UnaryOp.EqzI64\n : UnaryOp.EqzI32,\n module.local_tee(tempLocal.index, expr),\n ),\n module.i32(0),\n this.makeCallDirect(instanceofInstance, [\n module.local_get(tempLocal.index, nativeSizeType),\n module.i32(expectedType.classReference!.id)\n ], expression)\n );\n } else {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n }\n }\n }\n\n // false\n return module.block(null, [\n module.drop(expr),\n module.i32(0)\n ], NativeType.I32);\n }\n\n compileLiteralExpression(\n expression: LiteralExpression,\n contextualType: Type,\n constraints: Constraints,\n implicitlyNegate: bool = false\n ): ExpressionRef {\n var module = this.module;\n switch (expression.literalKind) {\n case LiteralKind.ARRAY: {\n assert(!implicitlyNegate);\n let classType = contextualType.classReference;\n if (classType) {\n if (classType.prototype == this.program.arrayPrototype) {\n return this.compileArrayLiteral(\n assert(classType.typeArguments)[0],\n (expression).elementExpressions,\n constraints,\n expression\n );\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n case LiteralKind.FLOAT: {\n let floatValue = (expression).value;\n if (implicitlyNegate) {\n floatValue = -floatValue;\n }\n if (contextualType == Type.f32) {\n return module.f32(floatValue);\n }\n this.currentType = Type.f64;\n return module.f64(floatValue);\n }\n case LiteralKind.INTEGER: {\n let intValue = (expression).value;\n if (implicitlyNegate) {\n intValue = i64_sub(\n i64_new(0),\n intValue\n );\n }\n let type = this.resolver.determineIntegerLiteralType(intValue, contextualType);\n this.currentType = type;\n switch (type.kind) {\n case TypeKind.ISIZE: if (!this.options.isWasm64) return module.i32(i64_low(intValue));\n case TypeKind.I64: return module.i64(i64_low(intValue), i64_high(intValue));\n case TypeKind.USIZE: if (!this.options.isWasm64) return module.i32(i64_low(intValue));\n case TypeKind.U64: return module.i64(i64_low(intValue), i64_high(intValue));\n case TypeKind.F32: return module.f32(i64_to_f32(intValue));\n case TypeKind.F64: return module.f64(i64_to_f64(intValue));\n default: return module.i32(i64_low(intValue));\n }\n }\n case LiteralKind.STRING: {\n assert(!implicitlyNegate);\n return this.compileStringLiteral(expression);\n }\n case LiteralKind.OBJECT: {\n assert(!implicitlyNegate);\n return this.compileObjectLiteral(expression, contextualType);\n }\n // case LiteralKind.REGEXP:\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n\n compileStringLiteral(expression: StringLiteralExpression): ExpressionRef {\n return this.ensureStaticString(expression.value);\n }\n\n compileArrayLiteral(\n elementType: Type,\n expressions: (Expression | null)[],\n constraints: Constraints,\n reportNode: Node\n ): ExpressionRef {\n var module = this.module;\n var program = this.program;\n var arrayPrototype = assert(program.arrayPrototype);\n var arrayInstance = assert(this.resolver.resolveClass(arrayPrototype, [ elementType ]));\n var arrayBufferInstance = assert(program.arrayBufferInstance);\n var arrayType = arrayInstance.type;\n var flow = this.currentFlow;\n\n // block those here so compiling expressions doesn't conflict\n var tempThis = flow.getTempLocal(arrayType);\n var tempDataStart = flow.getTempLocal(arrayBufferInstance.type);\n\n // compile value expressions and find out whether all are constant\n var length = expressions.length;\n var values = new Array(length);\n var isStatic = true;\n var nativeElementType = elementType.toNativeType();\n for (let i = 0; i < length; ++i) {\n let expression = expressions[i];\n let expr = expression\n ? module.precomputeExpression(\n this.compileExpression(expression, elementType,\n Constraints.CONV_IMPLICIT\n )\n )\n : elementType.toNativeZero(module);\n if (getExpressionId(expr) == ExpressionId.Const) {\n assert(getExpressionType(expr) == nativeElementType);\n } else {\n isStatic = false;\n }\n values[i] = expr;\n }\n\n // if the array is static, make a static arraybuffer segment\n if (isStatic) {\n flow.freeTempLocal(tempThis);\n flow.freeTempLocal(tempDataStart);\n\n let runtimeHeaderSize = program.runtimeHeaderSize;\n let bufferSegment = this.ensureStaticArrayBuffer(elementType, values);\n let bufferAddress = i64_add(bufferSegment.offset, i64_new(runtimeHeaderSize));\n\n // make both the buffer and array header static if assigned to a global. this can't be done\n // if inside of a function because each invocation must create a new array reference then.\n if (constraints & Constraints.PREFER_STATIC) {\n let arraySegment = this.ensureStaticArrayHeader(elementType, bufferSegment);\n let arrayAddress = i64_add(arraySegment.offset, i64_new(runtimeHeaderSize));\n this.currentType = arrayType;\n return program.options.isWasm64\n ? this.module.i64(i64_low(arrayAddress), i64_high(arrayAddress))\n : this.module.i32(i64_low(arrayAddress));\n\n // otherwise allocate a new array header and make it wrap a copy of the static buffer\n } else {\n // makeArray(length, alignLog2, classId, staticBuffer)\n let expr = this.makeCallDirect(program.allocArrayInstance, [\n module.i32(length),\n program.options.isWasm64\n ? module.i64(elementType.alignLog2)\n : module.i32(elementType.alignLog2),\n module.i32(arrayInstance.id),\n program.options.isWasm64\n ? module.i64(i64_low(bufferAddress), i64_high(bufferAddress))\n : module.i32(i64_low(bufferAddress))\n ], reportNode);\n this.currentType = arrayType;\n return this.makeAutorelease(this.makeRetain(expr));\n }\n }\n\n // otherwise compile an explicit instantiation with indexed sets\n var setter = arrayInstance.lookupOverload(OperatorKind.INDEXED_SET, true);\n if (!setter) {\n flow.freeTempLocal(tempThis);\n flow.freeTempLocal(tempDataStart);\n this.error(\n DiagnosticCode.Index_signature_in_type_0_only_permits_reading,\n reportNode.range, arrayInstance.internalName\n );\n this.currentType = arrayType;\n return module.unreachable();\n }\n var nativeArrayType = arrayType.toNativeType();\n\n var stmts = new Array();\n // tempThis = makeArray(length, alignLog2, classId, source = 0)\n stmts.push(\n module.local_set(tempThis.index,\n this.makeCallDirect(program.allocArrayInstance, [\n module.i32(length),\n program.options.isWasm64\n ? module.i64(elementType.alignLog2)\n : module.i32(elementType.alignLog2),\n module.i32(arrayInstance.id),\n program.options.isWasm64\n ? module.i64(0)\n : module.i32(0)\n ], reportNode),\n )\n );\n // tempData = tempThis.dataStart\n var dataStart = assert(arrayInstance.lookupInSelf(\"dataStart\"));\n assert(dataStart.kind == ElementKind.FIELD);\n stmts.push(\n module.local_set(tempDataStart.index,\n module.load(arrayType.byteSize, false,\n module.local_get(tempThis.index, nativeArrayType),\n nativeArrayType,\n (dataStart).memoryOffset\n )\n )\n );\n var isManaged = elementType.isManaged;\n for (let i = 0, alignLog2 = elementType.alignLog2; i < length; ++i) {\n let valueExpr = values[i];\n if (isManaged) {\n // value = __retain(value)\n valueExpr = this.makeRetain(valueExpr);\n }\n // store(tempData, value, immOffset)\n stmts.push(\n module.store(elementType.byteSize,\n module.local_get(tempDataStart.index, nativeArrayType),\n valueExpr,\n nativeElementType,\n i << alignLog2\n )\n );\n }\n // -> tempThis\n stmts.push(\n module.local_get(tempThis.index, nativeArrayType)\n );\n flow.freeTempLocal(tempThis);\n flow.freeTempLocal(tempDataStart);\n this.currentType = arrayType;\n return module.block(null, stmts, nativeArrayType);\n }\n\n compileObjectLiteral(expression: ObjectLiteralExpression, contextualType: Type): ExpressionRef {\n var module = this.module;\n\n // contextual type must be a class\n var classReference = contextualType.classReference;\n if (!classReference || classReference.is(CommonFlags.ABSTRACT)) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n expression.range, \"\", contextualType.toString()\n );\n return module.unreachable();\n }\n\n // if present, check that the constructor is compatible with object literals\n var ctor = classReference.constructorInstance;\n if (ctor) {\n // TODO: if the constructor requires parameters, check whether these are given as part of the\n // object literal and use them to call the ctor while not generating a store.\n if (ctor.signature.requiredParameters) {\n this.error(\n DiagnosticCode.Constructor_of_class_0_must_not_require_any_arguments,\n expression.range, classReference.toString()\n );\n return module.unreachable();\n }\n if (ctor.is(CommonFlags.PRIVATE)) {\n this.error(\n DiagnosticCode.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration,\n expression.range, classReference.toString()\n );\n return module.unreachable();\n }\n if (ctor.is(CommonFlags.PROTECTED)) {\n this.error(\n DiagnosticCode.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration,\n expression.range, classReference.toString()\n );\n return module.unreachable();\n }\n if (ctor.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n }\n\n // check and compile field values\n var names = expression.names;\n var numNames = names.length;\n var values = expression.values;\n var members = classReference.members;\n var hasErrors = false;\n var exprs = new Array(numNames + 2);\n var flow = this.currentFlow;\n var tempLocal = flow.getAutoreleaseLocal(this.options.usizeType);\n assert(numNames == values.length);\n for (let i = 0, k = numNames; i < k; ++i) {\n let member = members ? members.get(names[i].text) : null;\n if (!member || member.kind != ElementKind.FIELD) {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n names[i].range, names[i].text, classReference.toString()\n );\n hasErrors = true;\n continue;\n }\n let type = (member).type;\n exprs[i + 1] = this.module.store( // TODO: handle setters as well\n type.byteSize,\n this.module.local_get(tempLocal.index, this.options.nativeSizeType),\n this.compileExpression(values[i], (member).type, Constraints.CONV_IMPLICIT),\n type.toNativeType(),\n (member).memoryOffset\n );\n }\n this.currentType = classReference.type.nonNullableType;\n if (hasErrors) return module.unreachable();\n\n // allocate a new instance first and assign 'this' to the temp. local\n exprs[0] = module.local_set(\n tempLocal.index,\n this.makeRetain(\n this.makeAllocation(classReference)\n )\n );\n\n // once all field values have been set, return 'this'\n exprs[exprs.length - 1] = module.local_get(tempLocal.index, this.options.nativeSizeType);\n\n this.currentType = classReference.type;\n return module.block(null, exprs, this.options.nativeSizeType);\n }\n\n compileNewExpression(\n expression: NewExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n\n // obtain the class being instantiated\n var target = this.resolver.resolveExpression( // reports\n expression.expression,\n flow\n );\n if (!target) return module.unreachable();\n if (target.kind != ElementKind.CLASS_PROTOTYPE) {\n this.error(\n DiagnosticCode.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature,\n expression.expression.range\n );\n return this.module.unreachable();\n }\n var classPrototype = target;\n var classInstance: Class | null = null;\n var typeArguments = expression.typeArguments;\n var classReference: Class | null;\n if (\n !typeArguments &&\n (classReference = contextualType.classReference) !== null &&\n classReference.is(CommonFlags.GENERIC)\n ) {\n classInstance = this.resolver.resolveClass(\n classPrototype,\n classReference.typeArguments,\n makeMap(flow.contextualTypeArguments)\n );\n } else {\n classInstance = this.resolver.resolveClassInclTypeArguments(\n classPrototype,\n typeArguments,\n flow.actualFunction.parent, // relative to caller\n makeMap(flow.contextualTypeArguments),\n expression\n );\n }\n if (!classInstance) return module.unreachable();\n if (contextualType == Type.void) constraints |= Constraints.WILL_DROP;\n return this.compileInstantiate(classInstance, expression.arguments, constraints, expression);\n }\n\n /** Gets the compiled constructor of the specified class or generates one if none is present. */\n ensureConstructor(classInstance: Class, reportNode: Node): Function {\n var instance = classInstance.constructorInstance;\n if (instance) {\n // do not attempt to compile it if inlined anyway\n if (!instance.hasDecorator(DecoratorFlags.INLINE)) this.compileFunction(instance);\n return instance;\n }\n\n // clone base constructor if a derived class\n var baseClass = classInstance.base;\n if (baseClass) {\n let baseCtor = this.ensureConstructor(baseClass, reportNode);\n instance = new Function(\n CommonSymbols.constructor,\n new FunctionPrototype(\n CommonSymbols.constructor,\n classInstance,\n // declaration is important, i.e. to access optional parameter initializers\n (baseCtor.declaration).clone()\n ),\n baseCtor.signature,\n null\n );\n\n // otherwise make a default constructor\n } else {\n instance = new Function(\n CommonSymbols.constructor,\n new FunctionPrototype(\n CommonSymbols.constructor,\n classInstance,\n this.program.makeNativeFunctionDeclaration(CommonSymbols.constructor,\n CommonFlags.INSTANCE | CommonFlags.CONSTRUCTOR\n )\n ),\n new Signature(this.program, null, classInstance.type, classInstance.type),\n null\n );\n }\n\n instance.internalName = classInstance.internalName + INSTANCE_DELIMITER + \"constructor\";\n instance.set(CommonFlags.COMPILED);\n instance.prototype.setResolvedInstance(\"\", instance);\n classInstance.constructorInstance = instance;\n var previousFlow = this.currentFlow;\n var flow = instance.flow;\n this.currentFlow = flow;\n\n // generate body\n var signature = instance.signature;\n var module = this.module;\n var nativeSizeType = this.options.nativeSizeType;\n var stmts = new Array();\n\n // {\n // if (!this) this = \n // IF_DERIVED: this = super(this, ...args)\n // this.a = X\n // this.b = Y\n // return this\n // }\n var allocExpr = this.makeAllocation(classInstance);\n if (classInstance.type.isManaged) allocExpr = this.makeRetain(allocExpr);\n stmts.push(\n module.if(\n module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32,\n module.local_get(0, nativeSizeType)\n ),\n module.local_set(0, allocExpr)\n )\n );\n if (baseClass) {\n let parameterTypes = signature.parameterTypes;\n let numParameters = parameterTypes.length;\n let operands = new Array(1 + numParameters);\n operands[0] = module.local_get(0, nativeSizeType);\n for (let i = 0; i < numParameters; ++i) {\n operands[i + 1] = module.local_get(i + 1, parameterTypes[i].toNativeType());\n }\n // TODO: base constructor might be inlined, but makeCallDirect can't do this\n stmts.push(\n module.local_set(0,\n this.makeCallDirect(assert(baseClass.constructorInstance), operands, reportNode, false, true)\n )\n );\n }\n this.makeFieldInitialization(classInstance, stmts);\n var body = this.performAutoreleasesWithValue(flow, module.local_get(0, nativeSizeType), classInstance.type, stmts);\n flow.freeScopedLocals();\n this.currentFlow = previousFlow;\n\n // make the function\n var typeRef = this.ensureFunctionType(signature.parameterTypes, signature.returnType, signature.thisType);\n var locals = instance.localsByIndex;\n var varTypes = new Array(); // of temp. vars added while compiling initializers\n var numOperands = 1 + signature.parameterTypes.length;\n var numLocals = locals.length;\n if (numLocals > numOperands) {\n for (let i = numOperands; i < numLocals; ++i) varTypes.push(locals[i].type.toNativeType());\n }\n var funcRef = module.addFunction(instance.internalName, typeRef, varTypes, body);\n instance.finalize(module, funcRef);\n return instance;\n }\n\n compileInstantiate(\n /** Class to instantiate. */\n classInstance: Class,\n /** Constructor arguments. */\n argumentExpressions: Expression[],\n /** Contextual flags. */\n constraints: Constraints,\n /** Node to report on. */\n reportNode: Node\n ): ExpressionRef {\n var ctor = this.ensureConstructor(classInstance, reportNode);\n if (ctor.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(reportNode);\n var expr = this.compileCallDirect( // no need for another autoreleased local\n ctor,\n argumentExpressions,\n reportNode,\n this.options.usizeType.toNativeZero(this.module),\n constraints\n );\n if (getExpressionType(expr) != NativeType.None) { // possibly IMM_DROPPED\n this.currentType = classInstance.type; // important because a super ctor could be called\n }\n return expr;\n }\n\n /**\n * Compiles a property access in the specified context.\n * @param retainConstantType Retains the type of inlined constants if `true`, otherwise\n * precomputes them according to context.\n */\n compilePropertyAccessExpression(\n propertyAccess: PropertyAccessExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n\n this.maybeCompileEnclosingSource(propertyAccess);\n\n var target = this.resolver.resolvePropertyAccessExpression(propertyAccess, flow, contextualType); // reports\n if (!target) return module.unreachable();\n if (target.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(propertyAccess);\n\n switch (target.kind) {\n case ElementKind.GLOBAL: { // static field\n if (!this.compileGlobal(target)) { // reports; not yet compiled if a static field\n return module.unreachable();\n }\n let globalType = (target).type;\n assert(globalType != Type.void);\n if ((target).is(CommonFlags.INLINED)) {\n return this.compileInlineConstant(target, contextualType, constraints);\n }\n this.currentType = globalType;\n return module.global_get((target).internalName, globalType.toNativeType());\n }\n case ElementKind.ENUMVALUE: { // enum value\n let theEnum = assert((target).parent); assert(theEnum.kind == ElementKind.ENUM);\n if (!this.compileEnum(theEnum)) {\n this.currentType = Type.i32;\n return this.module.unreachable();\n }\n this.currentType = Type.i32;\n if ((target).is(CommonFlags.INLINED)) {\n assert((target).constantValueKind == ConstantValueKind.INTEGER);\n return module.i32(i64_low((target).constantIntegerValue));\n }\n return module.global_get((target).internalName, NativeType.I32);\n }\n case ElementKind.FIELD: { // instance field\n assert((target).memoryOffset >= 0);\n let thisExpr = this.compileExpression(assert(this.resolver.currentThisExpression), this.options.usizeType);\n this.currentType = (target).type;\n return module.load(\n (target).type.byteSize,\n (target).type.is(TypeFlags.SIGNED | TypeFlags.INTEGER),\n thisExpr,\n (target).type.toNativeType(),\n (target).memoryOffset\n );\n }\n case ElementKind.PROPERTY_PROTOTYPE: {// static property\n let getterPrototype = (target).getterPrototype;\n if (getterPrototype) {\n let getter = this.resolver.resolveFunction(getterPrototype, null);\n if (getter) return this.compileCallDirect(getter, [], propertyAccess, 0);\n }\n return module.unreachable();\n }\n case ElementKind.PROPERTY: { // instance property\n let getterInstance = assert((target).getterInstance);\n return this.compileCallDirect(getterInstance, [], propertyAccess,\n this.compileExpression(assert(this.resolver.currentThisExpression), this.options.usizeType)\n );\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n let prototype = target;\n\n if (prototype.is(CommonFlags.STATIC)) {\n let instance = this.compileFunctionUsingTypeArguments(\n prototype,\n [],\n makeMap(),\n propertyAccess,\n );\n if (instance == null) {\n return module.unreachable();\n } else {\n this.currentType = instance.type;\n return module.i32(this.ensureFunctionTableEntry(instance));\n }\n }\n\n this.error(\n DiagnosticCode.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set,\n propertyAccess.range, prototype.name\n );\n return module.unreachable();\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n propertyAccess.range\n );\n return module.unreachable();\n }\n\n compileTernaryExpression(\n expression: TernaryExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var ifThen = expression.ifThen;\n var ifElse = expression.ifElse;\n var outerFlow = this.currentFlow;\n\n var condExpr = this.module.precomputeExpression(\n this.makeIsTrueish(\n this.compileExpression(expression.condition, Type.bool),\n this.currentType\n )\n );\n\n // Try to eliminate unnecesssary branches if the condition is constant\n if (\n getExpressionId(condExpr) == ExpressionId.Const &&\n getExpressionType(condExpr) == NativeType.I32\n ) {\n return getConstValueI32(condExpr)\n ? this.compileExpression(ifThen, contextualType)\n : this.compileExpression(ifElse, contextualType);\n }\n\n var inheritedConstraints = constraints & Constraints.WILL_RETAIN;\n\n var ifThenFlow = outerFlow.fork();\n this.currentFlow = ifThenFlow;\n var ifThenExpr = this.compileExpression(ifThen, contextualType, inheritedConstraints);\n var ifThenType = this.currentType;\n var IfThenAutoreleaseSkipped = this.skippedAutoreleases.has(ifThenExpr);\n\n var ifElseFlow = outerFlow.fork();\n this.currentFlow = ifElseFlow;\n var ifElseExpr = this.compileExpression(ifElse, contextualType, inheritedConstraints);\n var ifElseType = this.currentType;\n var ifElseAutoreleaseSkipped = this.skippedAutoreleases.has(ifElseExpr);\n\n var commonType = Type.commonDenominator(ifThenType, ifElseType, false);\n if (!commonType) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n ifElse.range, ifElseType.toString(), ifThenType.toString()\n );\n this.currentType = contextualType;\n return this.module.unreachable();\n }\n ifThenExpr = this.convertExpression(\n ifThenExpr,\n ifThenType, commonType,\n false, false,\n ifThen\n );\n ifElseExpr = this.convertExpression(\n ifElseExpr,\n ifElseType, commonType,\n false, false,\n ifElse\n );\n this.currentType = commonType;\n\n if (IfThenAutoreleaseSkipped != ifElseAutoreleaseSkipped) { // unify to both skipped\n if (!IfThenAutoreleaseSkipped) {\n ifThenExpr = this.makeRetain(ifThenExpr);\n IfThenAutoreleaseSkipped = true;\n } else {\n ifElseExpr = this.makeRetain(ifElseExpr);\n ifElseAutoreleaseSkipped = true;\n }\n } else if (!IfThenAutoreleaseSkipped && commonType.isManaged) { // keep alive a little longer\n // if (!(constraints & Constraints.WILL_RETAIN)) {\n ifThenExpr = this.moveAutorelease(ifThenExpr, ifThenFlow, outerFlow);\n ifElseExpr = this.moveAutorelease(ifElseExpr, ifElseFlow, outerFlow);\n // }\n }\n\n ifThenExpr = this.performAutoreleasesWithValue(ifThenFlow, ifThenExpr, commonType);\n ifThenFlow.freeScopedLocals();\n\n ifElseExpr = this.performAutoreleasesWithValue(ifElseFlow, ifElseExpr, commonType);\n ifElseFlow.freeScopedLocals();\n\n this.currentFlow = outerFlow;\n outerFlow.inheritMutual(ifThenFlow, ifElseFlow);\n\n var expr = this.module.if(condExpr, ifThenExpr, ifElseExpr);\n assert(IfThenAutoreleaseSkipped == ifElseAutoreleaseSkipped);\n if (IfThenAutoreleaseSkipped) this.skippedAutoreleases.add(expr);\n return expr;\n }\n\n compileUnaryPostfixExpression(\n expression: UnaryPostfixExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n\n // make a getter for the expression (also obtains the type)\n var getValue = this.compileExpression( // reports\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // shortcut if compiling the getter already failed\n if (getExpressionId(getValue) == ExpressionId.Unreachable) return getValue;\n\n // if the value isn't dropped, a temp. local is required to remember the original value\n var tempLocal: Local | null = null;\n if (contextualType != Type.void) {\n tempLocal = flow.getTempLocal(this.currentType);\n getValue = module.local_tee(\n tempLocal.index,\n getValue\n );\n }\n\n var expr: ExpressionRef;\n\n switch (expression.operator) {\n case Token.PLUS_PLUS: {\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(\n BinaryOp.AddI32,\n getValue,\n module.i32(1)\n );\n break;\n }\n case TypeKind.USIZE: {\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.POSTFIX_INC);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, getValue, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n }\n case TypeKind.ISIZE: {\n let options = this.options;\n expr = module.binary(\n options.isWasm64\n ? BinaryOp.AddI64\n : BinaryOp.AddI32,\n getValue,\n this.currentType.toNativeOne(module)\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(\n BinaryOp.AddI64,\n getValue,\n module.i64(1)\n );\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(\n BinaryOp.AddF32,\n getValue,\n module.f32(1)\n );\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(\n BinaryOp.AddF64,\n getValue,\n module.f64(1)\n );\n break;\n }\n default: {\n assert(false);\n return module.unreachable();\n }\n }\n break;\n }\n case Token.MINUS_MINUS: {\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(\n BinaryOp.SubI32,\n getValue,\n module.i32(1)\n );\n break;\n }\n case TypeKind.USIZE: {\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.POSTFIX_DEC);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, getValue, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n }\n case TypeKind.ISIZE: {\n let options = this.options;\n expr = module.binary(\n options.isWasm64\n ? BinaryOp.SubI64\n : BinaryOp.SubI32,\n getValue,\n this.currentType.toNativeOne(module)\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(\n BinaryOp.SubI64,\n getValue,\n module.i64(1)\n );\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(\n BinaryOp.SubF32,\n getValue,\n module.f32(1)\n );\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(\n BinaryOp.SubF64,\n getValue,\n module.f64(1)\n );\n break;\n }\n default: {\n assert(false);\n return module.unreachable();\n }\n }\n break;\n }\n default: {\n assert(false);\n return module.unreachable();\n }\n }\n\n var resolver = this.resolver;\n var target = resolver.resolveExpression(expression.operand, flow); // reports\n\n // simplify if dropped anyway\n if (!tempLocal) {\n this.currentType = Type.void;\n if (!target) return module.unreachable();\n return this.makeAssignment(\n target,\n expr,\n expression.operand,\n resolver.currentThisExpression,\n resolver.currentElementExpression,\n false\n );\n } else if (!target) {\n return module.unreachable();\n }\n\n // otherwise use the temp. local for the intermediate value (always possibly overflows)\n var setValue = this.makeAssignment(\n target,\n expr, // includes a tee of getValue to tempLocal\n expression.operand,\n resolver.currentThisExpression,\n resolver.currentElementExpression,\n false\n );\n\n this.currentType = tempLocal.type;\n flow.freeTempLocal(tempLocal);\n var nativeType = tempLocal.type.toNativeType();\n\n return module.block(null, [\n setValue,\n module.local_get(tempLocal.index, nativeType)\n ], nativeType); // result of 'x++' / 'x--' might overflow\n }\n\n compileUnaryPrefixExpression(\n expression: UnaryPrefixExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var compound = false;\n var expr: ExpressionRef;\n\n switch (expression.operator) {\n case Token.PLUS: {\n expr = this.compileExpression(\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.PLUS);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n\n // nop\n break;\n }\n case Token.MINUS: {\n if (expression.operand.kind == NodeKind.LITERAL && (\n (expression.operand).literalKind == LiteralKind.INTEGER ||\n (expression.operand).literalKind == LiteralKind.FLOAT\n )) {\n // implicitly negate integer and float literals. also enables proper checking of literal ranges.\n expr = this.compileLiteralExpression(expression.operand, contextualType, Constraints.NONE, true);\n // compileExpression normally does this:\n if (this.options.sourceMap) this.addDebugLocation(expr, expression.range);\n break;\n }\n\n expr = this.compileExpression(\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.MINUS);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.SubI32, module.i32(0), expr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.SubI64\n : BinaryOp.SubI32,\n this.currentType.toNativeZero(module),\n expr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.SubI64, module.i64(0), expr);\n break;\n }\n case TypeKind.F32: {\n expr = module.unary(UnaryOp.NegF32, expr);\n break;\n }\n case TypeKind.F64: {\n expr = module.unary(UnaryOp.NegF64, expr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.PLUS_PLUS: {\n compound = true;\n expr = this.compileExpression(\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.PREFIX_INC);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.AddI32, expr, this.module.i32(1));\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.AddI64\n : BinaryOp.AddI32,\n expr,\n this.currentType.toNativeOne(module)\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.AddI64, expr, module.i64(1));\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.AddF32, expr, module.f32(1));\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.AddF64, expr, module.f64(1));\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.MINUS_MINUS: {\n compound = true;\n expr = this.compileExpression(\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.PREFIX_DEC);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.SubI32, expr, module.i32(1));\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.SubI64\n : BinaryOp.SubI32,\n expr,\n this.currentType.toNativeOne(module)\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.SubI64, expr, module.i64(1));\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.SubF32, expr, module.f32(1));\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.SubF64, expr, module.f64(1));\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.EXCLAMATION: {\n expr = this.compileExpression(\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.NOT);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n // allow '!' for references even without an overload\n }\n\n expr = this.makeIsFalseish(expr, this.currentType);\n this.currentType = Type.bool;\n break;\n }\n case Token.TILDE: {\n expr = this.compileExpression(\n expression.operand,\n contextualType == Type.void\n ? Type.i32\n : contextualType.is(TypeFlags.FLOAT)\n ? Type.i64\n : contextualType,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_NOT);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n } else {\n expr = this.convertExpression(expr,\n this.currentType, this.currentType.intType,\n false, false,\n expression.operand\n );\n }\n\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.XorI32, expr, module.i32(-1));\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.XorI64\n : BinaryOp.XorI32,\n expr,\n this.currentType.toNativeNegOne(module)\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.XorI64, expr, module.i64(-1, -1));\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.TYPEOF: {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n return module.unreachable();\n }\n }\n if (!compound) return expr;\n var resolver = this.resolver;\n var target = resolver.resolveExpression(expression.operand, this.currentFlow);\n if (!target) return module.unreachable();\n return this.makeAssignment(\n target,\n expr,\n expression.operand,\n resolver.currentThisExpression,\n resolver.currentElementExpression,\n contextualType != Type.void\n );\n }\n\n /** Makes sure that a 32-bit integer value is wrapped to a valid value of the specified type. */\n ensureSmallIntegerWrap(expr: ExpressionRef, type: Type): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n switch (type.kind) {\n case TypeKind.I8: {\n if (flow.canOverflow(expr, type)) {\n expr = this.options.hasFeature(Feature.SIGN_EXTENSION)\n ? module.unary(UnaryOp.ExtendI8ToI32, expr)\n : module.binary(BinaryOp.ShrI32,\n module.binary(BinaryOp.ShlI32,\n expr,\n module.i32(24)\n ),\n module.i32(24)\n );\n }\n break;\n }\n case TypeKind.I16: {\n if (flow.canOverflow(expr, type)) {\n expr = this.options.hasFeature(Feature.SIGN_EXTENSION)\n ? module.unary(UnaryOp.ExtendI16ToI32, expr)\n : module.binary(BinaryOp.ShrI32,\n module.binary(BinaryOp.ShlI32,\n expr,\n module.i32(16)\n ),\n module.i32(16)\n );\n }\n break;\n }\n case TypeKind.U8: {\n if (flow.canOverflow(expr, type)) {\n expr = module.binary(BinaryOp.AndI32,\n expr,\n module.i32(0xff)\n );\n }\n break;\n }\n case TypeKind.U16: {\n if (flow.canOverflow(expr, type)) {\n expr = module.binary(BinaryOp.AndI32,\n expr,\n module.i32(0xffff)\n );\n }\n break;\n }\n case TypeKind.BOOL: {\n if (flow.canOverflow(expr, type)) {\n // bool is special in that it compares to 0 instead of masking with 0x1\n expr = module.binary(BinaryOp.NeI32,\n expr,\n module.i32(0)\n );\n }\n break;\n }\n }\n return expr;\n }\n\n /** Adds the debug location of the specified expression at the specified range to the source map. */\n addDebugLocation(expr: ExpressionRef, range: Range): void {\n var parentFunction = this.currentFlow.parentFunction;\n var source = range.source;\n if (source.debugInfoIndex < 0) source.debugInfoIndex = this.module.addDebugInfoFile(source.normalizedPath);\n range.debugInfoRef = expr;\n parentFunction.debugLocations.push(range);\n }\n\n // === Specialized code generation ==============================================================\n\n /** Creates a comparison whether an expression is 'false' in a broader sense. */\n makeIsFalseish(expr: ExpressionRef, type: Type): ExpressionRef {\n var module = this.module;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = this.ensureSmallIntegerWrap(expr, type);\n // fall-through\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n return module.unary(UnaryOp.EqzI32, expr);\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n return module.unary(UnaryOp.EqzI64, expr);\n }\n case TypeKind.USIZE: if (this.skippedAutoreleases.has(expr)) expr = this.makeAutorelease(expr);\n case TypeKind.ISIZE: {\n return module.unary(type.size == 64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, expr);\n }\n case TypeKind.F32: {\n return module.binary(BinaryOp.EqF32, expr, module.f32(0));\n }\n case TypeKind.F64: {\n return module.binary(BinaryOp.EqF64, expr, module.f64(0));\n }\n default: {\n assert(false);\n return module.i32(1);\n }\n }\n }\n\n /** Creates a comparison whether an expression is 'true' in a broader sense. */\n makeIsTrueish(expr: ExpressionRef, type: Type): ExpressionRef {\n var module = this.module;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16: {\n expr = this.ensureSmallIntegerWrap(expr, type);\n // fall-through\n }\n case TypeKind.BOOL: // not a mask, just != 0\n case TypeKind.I32:\n case TypeKind.U32: {\n return expr;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n return module.binary(BinaryOp.NeI64, expr, module.i64(0));\n }\n case TypeKind.USIZE: if (this.skippedAutoreleases.has(expr)) expr = this.makeAutorelease(expr);\n case TypeKind.ISIZE: {\n return type.size == 64\n ? module.binary(BinaryOp.NeI64, expr, module.i64(0))\n : expr;\n }\n case TypeKind.F32: {\n return module.binary(BinaryOp.NeF32, expr, module.f32(0));\n }\n case TypeKind.F64: {\n return module.binary(BinaryOp.NeF64, expr, module.f64(0));\n }\n default: {\n assert(false);\n return module.i32(0);\n }\n }\n }\n\n /** Makes an allocation suitable to hold the data of an instance of the given class. */\n makeAllocation(\n classInstance: Class\n ): ExpressionRef {\n // TODO: investigate if it's possible to allocate with RC=1 immediately\n var program = this.program;\n assert(classInstance.program == program);\n var module = this.module;\n var options = this.options;\n this.currentType = classInstance.type;\n var allocInstance = program.allocInstance;\n this.compileFunction(allocInstance);\n return module.call(allocInstance.internalName, [\n options.isWasm64\n ? module.i64(classInstance.currentMemoryOffset)\n : module.i32(classInstance.currentMemoryOffset),\n module.i32(\n classInstance.hasDecorator(DecoratorFlags.UNMANAGED)\n ? 0\n : classInstance.id\n )\n ], options.nativeSizeType);\n }\n\n /** Makes the initializers for a class's fields. */\n makeFieldInitialization(\n classInstance: Class,\n stmts: ExpressionRef[] = []\n ): ExpressionRef[] {\n var members = classInstance.members;\n if (!members) return [];\n\n var module = this.module;\n var flow = this.currentFlow;\n var isInline = flow.is(FlowFlags.INLINE_CONTEXT);\n var thisLocalIndex = isInline\n ? assert(flow.lookupLocal(CommonSymbols.this_)).index\n : 0;\n var nativeSizeType = this.options.nativeSizeType;\n\n for (let member of members.values()) {\n if (\n member.kind != ElementKind.FIELD || // not a field\n member.parent != classInstance // inherited field\n ) continue;\n\n let field = member; assert(!field.isAny(CommonFlags.CONST));\n let fieldType = field.type;\n let nativeFieldType = fieldType.toNativeType();\n let fieldPrototype = field.prototype;\n let initializerNode = fieldPrototype.initializerNode;\n let parameterIndex = fieldPrototype.parameterIndex;\n let initExpr: ExpressionRef;\n if (initializerNode) { // use initializer\n initExpr = this.compileExpression(initializerNode, fieldType, // reports\n Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN\n );\n if (fieldType.isManaged && !this.skippedAutoreleases.has(initExpr)) {\n initExpr = this.makeRetain(initExpr);\n }\n } else if (parameterIndex >= 0) { // initialized via parameter (here: a local)\n initExpr = module.local_get(\n isInline\n ? assert(flow.lookupLocal(field.name)).index\n : 1 + parameterIndex, // this is local 0\n nativeFieldType\n );\n if (fieldType.isManaged) initExpr = this.makeRetain(initExpr);\n } else { // initialize with zero\n initExpr = fieldType.toNativeZero(module);\n }\n stmts.push(\n module.store(fieldType.byteSize,\n module.local_get(thisLocalIndex, nativeSizeType),\n initExpr,\n nativeFieldType,\n field.memoryOffset\n )\n );\n }\n return stmts;\n }\n\n makeInstanceOfClass(\n expr: ExpressionRef,\n classInstance: Class\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n var idTemp = flow.getTempLocal(Type.i32);\n var idExpr = module.load(4, false,\n module.binary(BinaryOp.SubI32,\n expr,\n module.i32(this.program.runtimeHeaderSize)\n ),\n NativeType.I32\n );\n var label = \"instanceof_\" + classInstance.name + \"|\" + flow.pushBreakLabel();\n var conditions: ExpressionRef[] = [];\n conditions.push(\n module.drop( // br_if returns the value too\n module.br(label,\n module.binary(BinaryOp.EqI32, // classId == class.id\n module.local_tee(idTemp.index, idExpr),\n module.i32(classInstance.id)\n ),\n module.i32(1) // ? true\n )\n )\n );\n // TODO: insert conditions for all possible subclasses (i.e. cat is also animal)\n // TODO: simplify if there are none\n conditions.push(\n module.i32(0) // : false\n );\n flow.freeTempLocal(idTemp);\n flow.popBreakLabel();\n return module.block(label, conditions, NativeType.I32);\n }\n\n}\n\n// helpers\n\nfunction mangleImportName(\n element: Element,\n declaration: DeclarationStatement\n): void {\n // by default, use the file name as the module name\n mangleImportName_moduleName = declaration.range.source.simplePath;\n // and the internal name of the element within that file as the element name\n mangleImportName_elementName = mangleInternalName(\n element.name, element.parent, element.is(CommonFlags.INSTANCE), true\n );\n if (!element.hasDecorator(DecoratorFlags.EXTERNAL)) return;\n\n var program = element.program;\n var decorator = assert(findDecorator(DecoratorKind.EXTERNAL, declaration.decorators));\n var args = decorator.arguments;\n if (args && args.length) {\n let arg = args[0];\n // if one argument is given, override just the element name\n // if two arguments are given, override both module and element name\n if (arg.kind == NodeKind.LITERAL && (arg).literalKind == LiteralKind.STRING) {\n mangleImportName_elementName = (arg).value;\n if (args.length >= 2) {\n arg = args[1];\n if (arg.kind == NodeKind.LITERAL && (arg).literalKind == LiteralKind.STRING) {\n mangleImportName_moduleName = mangleImportName_elementName;\n mangleImportName_elementName = (arg).value;\n if (args.length > 2) {\n program.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n decorator.range, \"2\", args.length.toString()\n );\n }\n } else {\n program.error(\n DiagnosticCode.String_literal_expected,\n arg.range\n );\n }\n }\n } else {\n program.error(\n DiagnosticCode.String_literal_expected,\n arg.range\n );\n }\n } else {\n program.error(\n DiagnosticCode.Expected_at_least_0_arguments_but_got_1,\n decorator.range, \"1\", \"0\"\n );\n }\n}\n\nvar mangleImportName_moduleName: string;\nvar mangleImportName_elementName: string;\n\n/** Flattens a series of expressions to a nop, a single statement or a block depending on statement count. */\nexport function flatten(module: Module, stmts: ExpressionRef[], type: NativeType): ExpressionRef {\n var length = stmts.length;\n if (length == 0) return module.nop(); // usually filtered out again\n if (length == 1) {\n let single = stmts[0];\n if (getExpressionType(single) == type) return single;\n if (getExpressionId(single) == ExpressionId.Block) {\n let count = getBlockChildCount(single);\n let children = new Array(count);\n for (let i = 0; i < count; ++i) children[i] = getBlockChild(single, i);\n return module.block(getBlockName(single), children, type);\n }\n }\n return module.block(null, stmts,\n type == NativeType.Auto\n ? getExpressionType(stmts[length - 1])\n : type\n );\n}\n","/**\n * Generated from diagnosticsMessages.json. Do not edit.\n * @module diagnostics\n *//***/\n\n/* tslint:disable:max-line-length */\n\n/** Enum of available diagnostic codes. */\nexport enum DiagnosticCode {\n Operation_not_supported = 100,\n Operation_is_unsafe = 101,\n User_defined_0 = 102,\n Conversion_from_type_0_to_1_requires_an_explicit_cast = 200,\n Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit = 201,\n Type_0_cannot_be_changed_to_type_1 = 202,\n Type_0_cannot_be_reinterpreted_as_type_1 = 203,\n Basic_type_0_cannot_be_nullable = 204,\n Cannot_export_a_mutable_global = 205,\n Mutable_value_cannot_be_inlined = 206,\n Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa = 207,\n Unmanaged_classes_cannot_implement_interfaces = 208,\n Invalid_regular_expression_flags = 209,\n Implementation_0_must_match_the_signature_1 = 210,\n Class_0_is_sealed_and_cannot_be_extended = 211,\n Decorator_0_is_not_valid_here = 212,\n Duplicate_decorator = 213,\n An_allocator_must_be_present_to_use_0 = 214,\n Optional_parameter_must_have_an_initializer = 215,\n Constructor_of_class_0_must_not_require_any_arguments = 216,\n Function_0_cannot_be_inlined_into_itself = 217,\n Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set = 218,\n Optional_properties_are_not_supported = 219,\n Expression_must_be_a_compile_time_constant = 220,\n Module_cannot_have_multiple_start_functions = 221,\n _0_must_be_a_value_between_1_and_2_inclusive = 222,\n _0_must_be_a_power_of_two = 223,\n Expression_is_unsafe = 224,\n Expression_is_never_null = 225,\n Unterminated_string_literal = 1002,\n Identifier_expected = 1003,\n _0_expected = 1005,\n A_file_cannot_have_a_reference_to_itself = 1006,\n Trailing_comma_not_allowed = 1009,\n Unexpected_token = 1012,\n A_rest_parameter_must_be_last_in_a_parameter_list = 1014,\n Parameter_cannot_have_question_mark_and_initializer = 1015,\n A_required_parameter_cannot_follow_an_optional_parameter = 1016,\n Statements_are_not_allowed_in_ambient_contexts = 1036,\n Initializers_are_not_allowed_in_ambient_contexts = 1039,\n _0_modifier_cannot_be_used_here = 1042,\n A_rest_parameter_cannot_be_optional = 1047,\n A_rest_parameter_cannot_have_an_initializer = 1048,\n A_set_accessor_must_have_exactly_one_parameter = 1049,\n A_set_accessor_parameter_cannot_have_an_initializer = 1052,\n A_get_accessor_cannot_have_parameters = 1054,\n Enum_member_must_have_initializer = 1061,\n Type_parameters_cannot_appear_on_a_constructor_declaration = 1092,\n Type_annotation_cannot_appear_on_a_constructor_declaration = 1093,\n An_accessor_cannot_have_type_parameters = 1094,\n A_set_accessor_cannot_have_a_return_type_annotation = 1095,\n Type_parameter_list_cannot_be_empty = 1098,\n A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement = 1104,\n A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement = 1105,\n A_return_statement_can_only_be_used_within_a_function_body = 1108,\n Expression_expected = 1109,\n Type_expected = 1110,\n A_default_clause_cannot_appear_more_than_once_in_a_switch_statement = 1113,\n Duplicate_label_0 = 1114,\n An_export_assignment_cannot_have_modifiers = 1120,\n Octal_literals_are_not_allowed_in_strict_mode = 1121,\n Digit_expected = 1124,\n Hexadecimal_digit_expected = 1125,\n Unexpected_end_of_text = 1126,\n Invalid_character = 1127,\n _case_or_default_expected = 1130,\n _super_must_be_followed_by_an_argument_list_or_member_access = 1034,\n A_declare_modifier_cannot_be_used_in_an_already_ambient_context = 1038,\n Type_argument_expected = 1140,\n String_literal_expected = 1141,\n Line_break_not_permitted_here = 1142,\n Declaration_expected = 1146,\n _const_declarations_must_be_initialized = 1155,\n Unterminated_regular_expression_literal = 1161,\n Interface_declaration_cannot_have_implements_clause = 1176,\n Binary_digit_expected = 1177,\n Octal_digit_expected = 1178,\n An_implementation_cannot_be_declared_in_ambient_contexts = 1183,\n An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive = 1198,\n Unterminated_Unicode_escape_sequence = 1199,\n Decorators_are_not_valid_here = 1206,\n _abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration = 1242,\n Method_0_cannot_have_an_implementation_because_it_is_marked_abstract = 1245,\n A_definite_assignment_assertion_is_not_permitted_in_this_context = 1255,\n A_class_may_only_extend_another_class = 1311,\n A_parameter_property_cannot_be_declared_using_a_rest_parameter = 1317,\n Duplicate_identifier_0 = 2300,\n Cannot_find_name_0 = 2304,\n Module_0_has_no_exported_member_1 = 2305,\n Generic_type_0_requires_1_type_argument_s = 2314,\n Type_0_is_not_generic = 2315,\n Type_0_is_not_assignable_to_type_1 = 2322,\n Index_signature_is_missing_in_type_0 = 2329,\n _this_cannot_be_referenced_in_current_location = 2332,\n _super_can_only_be_referenced_in_a_derived_class = 2335,\n Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors = 2337,\n Property_0_does_not_exist_on_type_1 = 2339,\n Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures = 2349,\n Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature = 2351,\n A_function_whose_declared_type_is_not_void_must_return_a_value = 2355,\n The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access = 2357,\n The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access = 2364,\n Operator_0_cannot_be_applied_to_types_1_and_2 = 2365,\n A_super_call_must_be_the_first_statement_in_the_constructor = 2376,\n Constructors_for_derived_classes_must_contain_a_super_call = 2377,\n _get_and_set_accessor_must_have_the_same_type = 2380,\n Constructor_implementation_is_missing = 2390,\n Function_implementation_is_missing_or_not_immediately_following_the_declaration = 2391,\n Multiple_constructor_implementations_are_not_allowed = 2392,\n Duplicate_function_implementation = 2393,\n Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local = 2395,\n A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged = 2434,\n Type_0_has_no_property_1 = 2460,\n The_0_operator_cannot_be_applied_to_type_1 = 2469,\n In_const_enum_declarations_member_initializer_must_be_constant_expression = 2474,\n Export_declaration_conflicts_with_exported_declaration_of_0 = 2484,\n Object_is_possibly_null = 2531,\n Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property = 2540,\n The_target_of_an_assignment_must_be_a_variable_or_a_property_access = 2541,\n Index_signature_in_type_0_only_permits_reading = 2542,\n Expected_0_arguments_but_got_1 = 2554,\n Expected_at_least_0_arguments_but_got_1 = 2555,\n Expected_0_type_arguments_but_got_1 = 2558,\n A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums = 2651,\n Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration = 2673,\n Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration = 2674,\n Namespace_0_has_no_exported_member_1 = 2694,\n Required_type_parameters_may_not_follow_optional_type_parameters = 2706,\n Duplicate_property_0 = 2718,\n Type_0_has_no_call_signatures = 2757,\n File_0_not_found = 6054,\n Numeric_separators_are_not_allowed_here = 6188,\n Multiple_consecutive_numeric_separators_are_not_permitted = 6189,\n _super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class = 17009,\n _super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class = 17011\n}\n\n/** Translates a diagnostic code to its respective string. */\nexport function diagnosticCodeToString(code: DiagnosticCode): string {\n switch (code) {\n case 100: return \"Operation not supported.\";\n case 101: return \"Operation is unsafe.\";\n case 102: return \"User-defined: {0}\";\n case 200: return \"Conversion from type '{0}' to '{1}' requires an explicit cast.\";\n case 201: return \"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";\n case 202: return \"Type '{0}' cannot be changed to type '{1}'.\";\n case 203: return \"Type '{0}' cannot be reinterpreted as type '{1}'.\";\n case 204: return \"Basic type '{0}' cannot be nullable.\";\n case 205: return \"Cannot export a mutable global.\";\n case 206: return \"Mutable value cannot be inlined.\";\n case 207: return \"Unmanaged classes cannot extend managed classes and vice-versa.\";\n case 208: return \"Unmanaged classes cannot implement interfaces.\";\n case 209: return \"Invalid regular expression flags.\";\n case 210: return \"Implementation '{0}' must match the signature '{1}'.\";\n case 211: return \"Class '{0}' is sealed and cannot be extended.\";\n case 212: return \"Decorator '{0}' is not valid here.\";\n case 213: return \"Duplicate decorator.\";\n case 214: return \"An allocator must be present to use '{0}'.\";\n case 215: return \"Optional parameter must have an initializer.\";\n case 216: return \"Constructor of class '{0}' must not require any arguments.\";\n case 217: return \"Function '{0}' cannot be inlined into itself.\";\n case 218: return \"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";\n case 219: return \"Optional properties are not supported.\";\n case 220: return \"Expression must be a compile-time constant.\";\n case 221: return \"Module cannot have multiple start functions.\";\n case 222: return \"'{0}' must be a value between '{1}' and '{2}' inclusive.\";\n case 223: return \"'{0}' must be a power of two.\";\n case 224: return \"Expression is unsafe.\";\n case 225: return \"Expression is never 'null'.\";\n case 1002: return \"Unterminated string literal.\";\n case 1003: return \"Identifier expected.\";\n case 1005: return \"'{0}' expected.\";\n case 1006: return \"A file cannot have a reference to itself.\";\n case 1009: return \"Trailing comma not allowed.\";\n case 1012: return \"Unexpected token.\";\n case 1014: return \"A rest parameter must be last in a parameter list.\";\n case 1015: return \"Parameter cannot have question mark and initializer.\";\n case 1016: return \"A required parameter cannot follow an optional parameter.\";\n case 1036: return \"Statements are not allowed in ambient contexts.\";\n case 1039: return \"Initializers are not allowed in ambient contexts.\";\n case 1042: return \"'{0}' modifier cannot be used here.\";\n case 1047: return \"A rest parameter cannot be optional.\";\n case 1048: return \"A rest parameter cannot have an initializer.\";\n case 1049: return \"A 'set' accessor must have exactly one parameter.\";\n case 1052: return \"A 'set' accessor parameter cannot have an initializer.\";\n case 1054: return \"A 'get' accessor cannot have parameters.\";\n case 1061: return \"Enum member must have initializer.\";\n case 1092: return \"Type parameters cannot appear on a constructor declaration.\";\n case 1093: return \"Type annotation cannot appear on a constructor declaration.\";\n case 1094: return \"An accessor cannot have type parameters.\";\n case 1095: return \"A 'set' accessor cannot have a return type annotation.\";\n case 1098: return \"Type parameter list cannot be empty.\";\n case 1104: return \"A 'continue' statement can only be used within an enclosing iteration statement.\";\n case 1105: return \"A 'break' statement can only be used within an enclosing iteration or switch statement.\";\n case 1108: return \"A 'return' statement can only be used within a function body.\";\n case 1109: return \"Expression expected.\";\n case 1110: return \"Type expected.\";\n case 1113: return \"A 'default' clause cannot appear more than once in a 'switch' statement.\";\n case 1114: return \"Duplicate label '{0}'.\";\n case 1120: return \"An export assignment cannot have modifiers.\";\n case 1121: return \"Octal literals are not allowed in strict mode.\";\n case 1124: return \"Digit expected.\";\n case 1125: return \"Hexadecimal digit expected.\";\n case 1126: return \"Unexpected end of text.\";\n case 1127: return \"Invalid character.\";\n case 1130: return \"'case' or 'default' expected.\";\n case 1034: return \"'super' must be followed by an argument list or member access.\";\n case 1038: return \"A 'declare' modifier cannot be used in an already ambient context.\";\n case 1140: return \"Type argument expected.\";\n case 1141: return \"String literal expected.\";\n case 1142: return \"Line break not permitted here.\";\n case 1146: return \"Declaration expected.\";\n case 1155: return \"'const' declarations must be initialized.\";\n case 1161: return \"Unterminated regular expression literal.\";\n case 1176: return \"Interface declaration cannot have 'implements' clause.\";\n case 1177: return \"Binary digit expected.\";\n case 1178: return \"Octal digit expected.\";\n case 1183: return \"An implementation cannot be declared in ambient contexts.\";\n case 1198: return \"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";\n case 1199: return \"Unterminated Unicode escape sequence.\";\n case 1206: return \"Decorators are not valid here.\";\n case 1242: return \"'abstract' modifier can only appear on a class, method, or property declaration.\";\n case 1245: return \"Method '{0}' cannot have an implementation because it is marked abstract.\";\n case 1255: return \"A definite assignment assertion '!' is not permitted in this context.\";\n case 1311: return \"A class may only extend another class.\";\n case 1317: return \"A parameter property cannot be declared using a rest parameter.\";\n case 2300: return \"Duplicate identifier '{0}'.\";\n case 2304: return \"Cannot find name '{0}'.\";\n case 2305: return \"Module '{0}' has no exported member '{1}'.\";\n case 2314: return \"Generic type '{0}' requires {1} type argument(s).\";\n case 2315: return \"Type '{0}' is not generic.\";\n case 2322: return \"Type '{0}' is not assignable to type '{1}'.\";\n case 2329: return \"Index signature is missing in type '{0}'.\";\n case 2332: return \"'this' cannot be referenced in current location.\";\n case 2335: return \"'super' can only be referenced in a derived class.\";\n case 2337: return \"Super calls are not permitted outside constructors or in nested functions inside constructors.\";\n case 2339: return \"Property '{0}' does not exist on type '{1}'.\";\n case 2349: return \"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";\n case 2351: return \"Cannot use 'new' with an expression whose type lacks a construct signature.\";\n case 2355: return \"A function whose declared type is not 'void' must return a value.\";\n case 2357: return \"The operand of an increment or decrement operator must be a variable or a property access.\";\n case 2364: return \"The left-hand side of an assignment expression must be a variable or a property access.\";\n case 2365: return \"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";\n case 2376: return \"A 'super' call must be the first statement in the constructor.\";\n case 2377: return \"Constructors for derived classes must contain a 'super' call.\";\n case 2380: return \"'get' and 'set' accessor must have the same type.\";\n case 2390: return \"Constructor implementation is missing.\";\n case 2391: return \"Function implementation is missing or not immediately following the declaration.\";\n case 2392: return \"Multiple constructor implementations are not allowed.\";\n case 2393: return \"Duplicate function implementation.\";\n case 2395: return \"Individual declarations in merged declaration '{0}' must be all exported or all local.\";\n case 2434: return \"A namespace declaration cannot be located prior to a class or function with which it is merged.\";\n case 2460: return \"Type '{0}' has no property '{1}'.\";\n case 2469: return \"The '{0}' operator cannot be applied to type '{1}'.\";\n case 2474: return \"In 'const' enum declarations member initializer must be constant expression.\";\n case 2484: return \"Export declaration conflicts with exported declaration of '{0}'.\";\n case 2531: return \"Object is possibly 'null'.\";\n case 2540: return \"Cannot assign to '{0}' because it is a constant or a read-only property.\";\n case 2541: return \"The target of an assignment must be a variable or a property access.\";\n case 2542: return \"Index signature in type '{0}' only permits reading.\";\n case 2554: return \"Expected {0} arguments, but got {1}.\";\n case 2555: return \"Expected at least {0} arguments, but got {1}.\";\n case 2558: return \"Expected {0} type arguments, but got {1}.\";\n case 2651: return \"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";\n case 2673: return \"Constructor of class '{0}' is private and only accessible within the class declaration.\";\n case 2674: return \"Constructor of class '{0}' is protected and only accessible within the class declaration.\";\n case 2694: return \"Namespace '{0}' has no exported member '{1}'.\";\n case 2706: return \"Required type parameters may not follow optional type parameters.\";\n case 2718: return \"Duplicate property '{0}'.\";\n case 2757: return \"Type '{0}' has no call signatures.\";\n case 6054: return \"File '{0}' not found.\";\n case 6188: return \"Numeric separators are not allowed here.\";\n case 6189: return \"Multiple consecutive numeric separators are not permitted.\";\n case 17009: return \"'super' must be called before accessing 'this' in the constructor of a derived class.\";\n case 17011: return \"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";\n default: return \"\";\n }\n}\n","/**\n * Built-in elements providing WebAssembly core functionality.\n * @module builtins\n *//***/\n\n import {\n Compiler,\n Constraints,\n RuntimeFeatures,\n flatten\n} from \"./compiler\";\n\nimport {\n DiagnosticCode\n} from \"./diagnostics\";\n\nimport {\n Node,\n NodeKind,\n Expression,\n LiteralKind,\n LiteralExpression,\n StringLiteralExpression,\n CallExpression\n} from \"./ast\";\n\nimport {\n Type,\n TypeKind,\n TypeFlags,\n Signature\n} from \"./types\";\n\nimport {\n BinaryOp,\n UnaryOp,\n HostOp,\n AtomicRMWOp,\n SIMDExtractOp,\n SIMDReplaceOp,\n SIMDShiftOp,\n NativeType,\n ExpressionRef,\n ExpressionId,\n getExpressionId,\n getExpressionType,\n getConstValueI64High,\n getConstValueI64Low,\n getConstValueI32,\n getConstValueF32,\n getConstValueF64,\n Relooper,\n RelooperBlockRef\n} from \"./module\";\n\nimport {\n ElementKind,\n FunctionPrototype,\n Field,\n Global,\n DecoratorFlags,\n Element\n} from \"./program\";\n\nimport {\n FlowFlags,\n LocalFlags\n} from \"./flow\";\n\nimport {\n ReportMode\n} from \"./resolver\";\n\nimport {\n CommonFlags,\n Feature,\n TypeinfoFlags\n} from \"./common\";\n\nimport {\n writeI8,\n writeI16,\n writeI32,\n writeF32,\n writeF64,\n isPowerOf2\n} from \"./util\";\n\n/** Symbols of various compiler built-ins. */\nexport namespace BuiltinSymbols {\n // std/builtins.ts\n export const isInteger = \"~lib/builtins/isInteger\";\n export const isFloat = \"~lib/builtins/isFloat\";\n export const isBoolean = \"~lib/builtins/isBoolean\";\n export const isSigned = \"~lib/builtins/isSigned\";\n export const isReference = \"~lib/builtins/isReference\";\n export const isString = \"~lib/builtins/isString\";\n export const isArray = \"~lib/builtins/isArray\";\n export const isArrayLike = \"~lib/builtins/isArrayLike\";\n export const isFunction = \"~lib/builtins/isFunction\";\n export const isNullable = \"~lib/builtins/isNullable\";\n export const isDefined = \"~lib/builtins/isDefined\";\n export const isConstant = \"~lib/builtins/isConstant\";\n export const isManaged = \"~lib/builtins/isManaged\";\n export const isVoid = \"~lib/builtins/isVoid\";\n\n export const clz = \"~lib/builtins/clz\";\n export const ctz = \"~lib/builtins/ctz\";\n export const popcnt = \"~lib/builtins/popcnt\";\n export const rotl = \"~lib/builtins/rotl\";\n export const rotr = \"~lib/builtins/rotr\";\n export const abs = \"~lib/builtins/abs\";\n export const max = \"~lib/builtins/max\";\n export const min = \"~lib/builtins/min\";\n export const ceil = \"~lib/builtins/ceil\";\n export const floor = \"~lib/builtins/floor\";\n export const copysign = \"~lib/builtins/copysign\";\n export const nearest = \"~lib/builtins/nearest\";\n export const reinterpret = \"~lib/builtins/reinterpret\";\n export const sqrt = \"~lib/builtins/sqrt\";\n export const trunc = \"~lib/builtins/trunc\";\n export const load = \"~lib/builtins/load\";\n export const store = \"~lib/builtins/store\";\n export const atomic_load = \"~lib/builtins/atomic.load\";\n export const atomic_store = \"~lib/builtins/atomic.store\";\n export const atomic_add = \"~lib/builtins/atomic.add\";\n export const atomic_sub = \"~lib/builtins/atomic.sub\";\n export const atomic_and = \"~lib/builtins/atomic.and\";\n export const atomic_or = \"~lib/builtins/atomic.or\";\n export const atomic_xor = \"~lib/builtins/atomic.xor\";\n export const atomic_xchg = \"~lib/builtins/atomic.xchg\";\n export const atomic_cmpxchg = \"~lib/builtins/atomic.cmpxchg\";\n export const atomic_wait = \"~lib/builtins/atomic.wait\";\n export const atomic_notify = \"~lib/builtins/atomic.notify\";\n\n export const sizeof = \"~lib/builtins/sizeof\";\n export const alignof = \"~lib/builtins/alignof\";\n export const offsetof = \"~lib/builtins/offsetof\";\n export const nameof = \"~lib/builtins/nameof\";\n export const lengthof = \"~lib/builtins/lengthof\";\n export const select = \"~lib/builtins/select\";\n export const unreachable = \"~lib/builtins/unreachable\";\n export const changetype = \"~lib/builtins/changetype\";\n export const assert = \"~lib/builtins/assert\";\n export const unchecked = \"~lib/builtins/unchecked\";\n export const call_direct = \"~lib/builtins/call_direct\";\n export const call_indirect = \"~lib/builtins/call_indirect\";\n export const instantiate = \"~lib/builtins/instantiate\";\n export const idof = \"~lib/builtins/idof\";\n\n export const i8 = \"~lib/builtins/i8\";\n export const i16 = \"~lib/builtins/i16\";\n export const i32 = \"~lib/builtins/i32\";\n export const i64 = \"~lib/builtins/i64\";\n export const isize = \"~lib/builtins/isize\";\n export const u8 = \"~lib/builtins/u8\";\n export const u16 = \"~lib/builtins/u16\";\n export const u32 = \"~lib/builtins/u32\";\n export const u64 = \"~lib/builtins/u64\";\n export const usize = \"~lib/builtins/usize\";\n export const bool = \"~lib/builtins/bool\";\n export const f32 = \"~lib/builtins/f32\";\n export const f64 = \"~lib/builtins/f64\";\n export const v128 = \"~lib/builtins/v128\";\n export const void_ = \"~lib/builtins/void\";\n\n export const i32_clz = \"~lib/builtins/i32.clz\";\n export const i64_clz = \"~lib/builtins/i64.clz\";\n export const i32_ctz = \"~lib/builtins/i32.ctz\";\n export const i64_ctz = \"~lib/builtins/i64.ctz\";\n export const i32_popcnt = \"~lib/builtins/i32.popcnt\";\n export const i64_popcnt = \"~lib/builtins/i64.popcnt\";\n export const i32_rotl = \"~lib/builtins/i32.rotl\";\n export const i64_rotl = \"~lib/builtins/i64.rotl\";\n export const i32_rotr = \"~lib/builtins/i32.rotr\";\n export const i64_rotr = \"~lib/builtins/i64.rotr\";\n\n export const f32_abs = \"~lib/builtins/f32.abs\";\n export const f64_abs = \"~lib/builtins/f64.abs\";\n export const f32_max = \"~lib/builtins/f32.max\";\n export const f64_max = \"~lib/builtins/f64.max\";\n export const f32_min = \"~lib/builtins/f32.min\";\n export const f64_min = \"~lib/builtins/f64.min\";\n export const f32_ceil = \"~lib/builtins/f32.ceil\";\n export const f64_ceil = \"~lib/builtins/f64.ceil\";\n export const f32_floor = \"~lib/builtins/f32.floor\";\n export const f64_floor = \"~lib/builtins/f64.floor\";\n export const f32_copysign = \"~lib/builtins/f32.copysign\";\n export const f64_copysign = \"~lib/builtins/f64.copysign\";\n export const f32_nearest = \"~lib/builtins/f32.nearest\";\n export const f64_nearest = \"~lib/builtins/f64.nearest\";\n export const i32_reinterpret_f32 = \"~lib/builtins/i32.reinterpret_f32\";\n export const i64_reinterpret_f64 = \"~lib/builtins/i64.reinterpret_f64\";\n export const f32_reinterpret_i32 = \"~lib/builtins/f32.reinterpret_i32\";\n export const f64_reinterpret_i64 = \"~lib/builtins/f64.reinterpret_i64\";\n export const f32_sqrt = \"~lib/builtins/f32.sqrt\";\n export const f64_sqrt = \"~lib/builtins/f64.sqrt\";\n export const f32_trunc = \"~lib/builtins/f32.trunc\";\n export const f64_trunc = \"~lib/builtins/f64.trunc\";\n\n export const i32_load8_s = \"~lib/builtins/i32.load8_s\";\n export const i32_load8_u = \"~lib/builtins/i32.load8_u\";\n export const i32_load16_s = \"~lib/builtins/i32.load16_s\";\n export const i32_load16_u = \"~lib/builtins/i32.load16_u\";\n export const i32_load = \"~lib/builtins/i32.load\";\n export const i64_load8_s = \"~lib/builtins/i64.load8_s\";\n export const i64_load8_u = \"~lib/builtins/i64.load8_u\";\n export const i64_load16_s = \"~lib/builtins/i64.load16_s\";\n export const i64_load16_u = \"~lib/builtins/i64.load16_u\";\n export const i64_load32_s = \"~lib/builtins/i64.load32_s\";\n export const i64_load32_u = \"~lib/builtins/i64.load32_u\";\n export const i64_load = \"~lib/builtins/i64.load\";\n export const f32_load = \"~lib/builtins/f32.load\";\n export const f64_load = \"~lib/builtins/f64.load\";\n export const i32_store8 = \"~lib/builtins/i32.store8\";\n export const i32_store16 = \"~lib/builtins/i32.store16\";\n export const i32_store = \"~lib/builtins/i32.store\";\n export const i64_store8 = \"~lib/builtins/i64.store8\";\n export const i64_store16 = \"~lib/builtins/i64.store16\";\n export const i64_store32 = \"~lib/builtins/i64.store32\";\n export const i64_store = \"~lib/builtins/i64.store\";\n export const f32_store = \"~lib/builtins/f32.store\";\n export const f64_store = \"~lib/builtins/f64.store\";\n\n export const i32_atomic_load8_u = \"~lib/builtins/i32.atomic.load8_u\";\n export const i32_atomic_load16_u = \"~lib/builtins/i32.atomic.load16_u\";\n export const i32_atomic_load = \"~lib/builtins/i32.atomic.load\";\n export const i64_atomic_load8_u = \"~lib/builtins/i64.atomic.load8_u\";\n export const i64_atomic_load16_u = \"~lib/builtins/i64.atomic.load16_u\";\n export const i64_atomic_load32_u = \"~lib/builtins/i64.atomic.load32_u\";\n export const i64_atomic_load = \"~lib/builtins/i64.atomic.load\";\n export const i32_atomic_store8 = \"~lib/builtins/i32.atomic.store8\";\n export const i32_atomic_store16 = \"~lib/builtins/i32.atomic.store16\";\n export const i32_atomic_store = \"~lib/builtins/i32.atomic.store\";\n export const i64_atomic_store8 = \"~lib/builtins/i64.atomic.store8\";\n export const i64_atomic_store16 = \"~lib/builtins/i64.atomic.store16\";\n export const i64_atomic_store32 = \"~lib/builtins/i64.atomic.store32\";\n export const i64_atomic_store = \"~lib/builtins/i64.atomic.store\";\n export const i32_atomic_rmw8_add_u = \"~lib/builtins/i32.atomic.rmw8.add_u\";\n export const i32_atomic_rmw16_add_u = \"~lib/builtins/i32.atomic.rmw16.add_u\";\n export const i32_atomic_rmw_add = \"~lib/builtins/i32.atomic.rmw.add\";\n export const i64_atomic_rmw8_add_u = \"~lib/builtins/i64.atomic.rmw8.add_u\";\n export const i64_atomic_rmw16_add_u = \"~lib/builtins/i64.atomic.rmw16.add_u\";\n export const i64_atomic_rmw32_add_u = \"~lib/builtins/i64.atomic.rmw32.add_u\";\n export const i64_atomic_rmw_add = \"~lib/builtins/i64.atomic.rmw.add\";\n export const i32_atomic_rmw8_sub_u = \"~lib/builtins/i32.atomic.rmw8.sub_u\";\n export const i32_atomic_rmw16_sub_u = \"~lib/builtins/i32.atomic.rmw16.sub_u\";\n export const i32_atomic_rmw_sub = \"~lib/builtins/i32.atomic.rmw.sub\";\n export const i64_atomic_rmw8_sub_u = \"~lib/builtins/i64.atomic.rmw8.sub_u\";\n export const i64_atomic_rmw16_sub_u = \"~lib/builtins/i64.atomic.rmw16.sub_u\";\n export const i64_atomic_rmw32_sub_u = \"~lib/builtins/i64.atomic.rmw32.sub_u\";\n export const i64_atomic_rmw_sub = \"~lib/builtins/i64.atomic.rmw.sub\";\n export const i32_atomic_rmw8_and_u = \"~lib/builtins/i32.atomic.rmw8.and_u\";\n export const i32_atomic_rmw16_and_u = \"~lib/builtins/i32.atomic.rmw16.and_u\";\n export const i32_atomic_rmw_and = \"~lib/builtins/i32.atomic.rmw.and\";\n export const i64_atomic_rmw8_and_u = \"~lib/builtins/i64.atomic.rmw8.and_u\";\n export const i64_atomic_rmw16_and_u = \"~lib/builtins/i64.atomic.rmw16.and_u\";\n export const i64_atomic_rmw32_and_u = \"~lib/builtins/i64.atomic.rmw32.and_u\";\n export const i64_atomic_rmw_and = \"~lib/builtins/i64.atomic.rmw.and\";\n export const i32_atomic_rmw8_or_u = \"~lib/builtins/i32.atomic.rmw8.or_u\";\n export const i32_atomic_rmw16_or_u = \"~lib/builtins/i32.atomic.rmw16.or_u\";\n export const i32_atomic_rmw_or = \"~lib/builtins/i32.atomic.rmw.or\";\n export const i64_atomic_rmw8_or_u = \"~lib/builtins/i64.atomic.rmw8.or_u\";\n export const i64_atomic_rmw16_or_u = \"~lib/builtins/i64.atomic.rmw16.or_u\";\n export const i64_atomic_rmw32_or_u = \"~lib/builtins/i64.atomic.rmw32.or_u\";\n export const i64_atomic_rmw_or = \"~lib/builtins/i64.atomic.rmw.or\";\n export const i32_atomic_rmw8_u_xor = \"~lib/builtins/i32.atomic.rmw8.xor_u\";\n export const i32_atomic_rmw16_u_xor = \"~lib/builtins/i32.atomic.rmw16.xor_u\";\n export const i32_atomic_rmw_xor = \"~lib/builtins/i32.atomic.rmw.xor\";\n export const i64_atomic_rmw8_xor_u = \"~lib/builtins/i64.atomic.rmw8.xor_u\";\n export const i64_atomic_rmw16_xor_u = \"~lib/builtins/i64.atomic.rmw16.xor_u\";\n export const i64_atomic_rmw32_xor_u = \"~lib/builtins/i64.atomic.rmw32.xor_u\";\n export const i64_atomic_rmw_xor = \"~lib/builtins/i64.atomic.rmw.xor\";\n export const i32_atomic_rmw8_xchg_u = \"~lib/builtins/i32.atomic.rmw8.xchg_u\";\n export const i32_atomic_rmw16_xchg_u = \"~lib/builtins/i32.atomic.rmw16.xchg_u\";\n export const i32_atomic_rmw_xchg = \"~lib/builtins/i32.atomic.rmw.xchg\";\n export const i64_atomic_rmw8_xchg_u = \"~lib/builtins/i64.atomic.rmw8.xchg_u\";\n export const i64_atomic_rmw16_xchg_u = \"~lib/builtins/i64.atomic.rmw16.xchg_u\";\n export const i64_atomic_rmw32_xchg_u = \"~lib/builtins/i64.atomic.rmw32.xchg_u\";\n export const i64_atomic_rmw_xchg = \"~lib/builtins/i64.atomic.rmw.xchg\";\n export const i32_atomic_rmw8_cmpxchg_u = \"~lib/builtins/i32.atomic.rmw8.cmpxchg_u\";\n export const i32_atomic_rmw16_cmpxchg_u = \"~lib/builtins/i32.atomic.rmw16.cmpxchg_u\";\n export const i32_atomic_rmw_cmpxchg = \"~lib/builtins/i32.atomic.rmw.cmpxchg\";\n export const i64_atomic_rmw8_cmpxchg_u = \"~lib/builtins/i64.atomic.rmw8.cmpxchg_u\";\n export const i64_atomic_rmw16_cmpxchg_u = \"~lib/builtins/i64.atomic.rmw16.cmpxchg_u\";\n export const i64_atomic_rmw32_cmpxchg_u = \"~lib/builtins/i64.atomic.rmw32.cmpxchg_u\";\n export const i64_atomic_rmw_cmpxchg = \"~lib/builtins/i64.atomic.rmw.cmpxchg\";\n export const i32_wait = \"~lib/builtins/i32.wait\";\n export const i64_wait = \"~lib/builtins/i64.wait\";\n\n export const v128_splat = \"~lib/builtins/v128.splat\";\n export const v128_extract_lane = \"~lib/builtins/v128.extract_lane\";\n export const v128_replace_lane = \"~lib/builtins/v128.replace_lane\";\n export const v128_shuffle = \"~lib/builtins/v128.shuffle\";\n export const v128_load = \"~lib/builtins/v128.load\";\n export const v128_store = \"~lib/builtins/v128.store\";\n export const v128_add = \"~lib/builtins/v128.add\";\n export const v128_sub = \"~lib/builtins/v128.sub\";\n export const v128_mul = \"~lib/builtins/v128.mul\";\n export const v128_div = \"~lib/builtins/v128.div\";\n export const v128_neg = \"~lib/builtins/v128.neg\";\n export const v128_add_saturate = \"~lib/builtins/v128.add_saturate\";\n export const v128_sub_saturate = \"~lib/builtins/v128.sub_saturate\";\n export const v128_shl = \"~lib/builtins/v128.shl\";\n export const v128_shr = \"~lib/builtins/v128.shr\";\n export const v128_and = \"~lib/builtins/v128.and\";\n export const v128_or = \"~lib/builtins/v128.or\";\n export const v128_xor = \"~lib/builtins/v128.xor\";\n export const v128_not = \"~lib/builtins/v128.not\";\n export const v128_bitselect = \"~lib/builtins/v128.bitselect\";\n export const v128_any_true = \"~lib/builtins/v128.any_true\";\n export const v128_all_true = \"~lib/builtins/v128.all_true\";\n export const v128_min = \"~lib/builtins/v128.min\";\n export const v128_max = \"~lib/builtins/v128.max\";\n export const v128_abs = \"~lib/builtins/v128.abs\";\n export const v128_sqrt = \"~lib/builtins/v128.sqrt\";\n export const v128_eq = \"~lib/builtins/v128.eq\";\n export const v128_ne = \"~lib/builtins/v128.ne\";\n export const v128_lt = \"~lib/builtins/v128.lt\";\n export const v128_le = \"~lib/builtins/v128.le\";\n export const v128_gt = \"~lib/builtins/v128.gt\";\n export const v128_ge = \"~lib/builtins/v128.ge\";\n export const v128_convert = \"~lib/builtins/v128.convert\";\n export const v128_trunc = \"~lib/builtins/v128.trunc\";\n\n export const i8x16 = \"~lib/builtins/i8x16\";\n export const i16x8 = \"~lib/builtins/i16x8\";\n export const i32x4 = \"~lib/builtins/i32x4\";\n export const i64x2 = \"~lib/builtins/i64x2\";\n export const f32x4 = \"~lib/builtins/f32x4\";\n export const f64x2 = \"~lib/builtins/f64x2\";\n\n export const i8x16_splat = \"~lib/builtins/i8x16.splat\";\n export const i8x16_extract_lane_s = \"~lib/builtins/i8x16.extract_lane_s\";\n export const i8x16_extract_lane_u = \"~lib/builtins/i8x16.extract_lane_u\";\n export const i8x16_replace_lane = \"~lib/builtins/i8x16.replace_lane\";\n export const i8x16_add = \"~lib/builtins/i8x16.add\";\n export const i8x16_sub = \"~lib/builtins/i8x16.sub\";\n export const i8x16_mul = \"~lib/builtins/i8x16.mul\";\n export const i8x16_neg = \"~lib/builtins/i8x16.neg\";\n export const i8x16_add_saturate_s = \"~lib/builtins/i8x16.add_saturate_s\";\n export const i8x16_add_saturate_u = \"~lib/builtins/i8x16.add_saturate_u\";\n export const i8x16_sub_saturate_s = \"~lib/builtins/i8x16.sub_saturate_s\";\n export const i8x16_sub_saturate_u = \"~lib/builtins/i8x16.sub_saturate_u\";\n export const i8x16_shl = \"~lib/builtins/i8x16.shl\";\n export const i8x16_shr_s = \"~lib/builtins/i8x16.shr_s\";\n export const i8x16_shr_u = \"~lib/builtins/i8x16.shr_u\";\n export const i8x16_any_true = \"~lib/builtins/i8x16.any_true\";\n export const i8x16_all_true = \"~lib/builtins/i8x16.all_true\";\n export const i8x16_eq = \"~lib/builtins/i8x16.eq\";\n export const i8x16_ne = \"~lib/builtins/i8x16.ne\";\n export const i8x16_lt_s = \"~lib/builtins/i8x16.lt_s\";\n export const i8x16_lt_u = \"~lib/builtins/i8x16.lt_u\";\n export const i8x16_le_s = \"~lib/builtins/i8x16.le_s\";\n export const i8x16_le_u = \"~lib/builtins/i8x16.le_u\";\n export const i8x16_gt_s = \"~lib/builtins/i8x16.gt_s\";\n export const i8x16_gt_u = \"~lib/builtins/i8x16.gt_u\";\n export const i8x16_ge_s = \"~lib/builtins/i8x16.ge_s\";\n export const i8x16_ge_u = \"~lib/builtins/i8x16.ge_u\";\n\n export const i16x8_splat = \"~lib/builtins/i16x8.splat\";\n export const i16x8_extract_lane_s = \"~lib/builtins/i16x8.extract_lane_s\";\n export const i16x8_extract_lane_u = \"~lib/builtins/i16x8.extract_lane_u\";\n export const i16x8_replace_lane = \"~lib/builtins/i16x8.replace_lane\";\n export const i16x8_add = \"~lib/builtins/i16x8.add\";\n export const i16x8_sub = \"~lib/builtins/i16x8.sub\";\n export const i16x8_mul = \"~lib/builtins/i16x8.mul\";\n export const i16x8_neg = \"~lib/builtins/i16x8.neg\";\n export const i16x8_add_saturate_s = \"~lib/builtins/i16x8.add_saturate_s\";\n export const i16x8_add_saturate_u = \"~lib/builtins/i16x8.add_saturate_u\";\n export const i16x8_sub_saturate_s = \"~lib/builtins/i16x8.sub_saturate_s\";\n export const i16x8_sub_saturate_u = \"~lib/builtins/i16x8.sub_saturate_u\";\n export const i16x8_shl = \"~lib/builtins/i16x8.shl\";\n export const i16x8_shr_s = \"~lib/builtins/i16x8.shr_s\";\n export const i16x8_shr_u = \"~lib/builtins/i16x8.shr_u\";\n export const i16x8_any_true = \"~lib/builtins/i16x8.any_true\";\n export const i16x8_all_true = \"~lib/builtins/i16x8.all_true\";\n export const i16x8_eq = \"~lib/builtins/i16x8.eq\";\n export const i16x8_ne = \"~lib/builtins/i16x8.ne\";\n export const i16x8_lt_s = \"~lib/builtins/i16x8.lt_s\";\n export const i16x8_lt_u = \"~lib/builtins/i16x8.lt_u\";\n export const i16x8_le_s = \"~lib/builtins/i16x8.le_s\";\n export const i16x8_le_u = \"~lib/builtins/i16x8.le_u\";\n export const i16x8_gt_s = \"~lib/builtins/i16x8.gt_s\";\n export const i16x8_gt_u = \"~lib/builtins/i16x8.gt_u\";\n export const i16x8_ge_s = \"~lib/builtins/i16x8.ge_s\";\n export const i16x8_ge_u = \"~lib/builtins/i16x8.ge_u\";\n\n export const i32x4_splat = \"~lib/builtins/i32x4.splat\";\n export const i32x4_extract_lane = \"~lib/builtins/i32x4.extract_lane\";\n export const i32x4_replace_lane = \"~lib/builtins/i32x4.replace_lane\";\n export const i32x4_add = \"~lib/builtins/i32x4.add\";\n export const i32x4_sub = \"~lib/builtins/i32x4.sub\";\n export const i32x4_mul = \"~lib/builtins/i32x4.mul\";\n export const i32x4_neg = \"~lib/builtins/i32x4.neg\";\n export const i32x4_shl = \"~lib/builtins/i32x4.shl\";\n export const i32x4_shr_s = \"~lib/builtins/i32x4.shr_s\";\n export const i32x4_shr_u = \"~lib/builtins/i32x4.shr_u\";\n export const i32x4_any_true = \"~lib/builtins/i32x4.any_true\";\n export const i32x4_all_true = \"~lib/builtins/i32x4.all_true\";\n export const i32x4_eq = \"~lib/builtins/i32x4.eq\";\n export const i32x4_ne = \"~lib/builtins/i32x4.ne\";\n export const i32x4_lt_s = \"~lib/builtins/i32x4.lt_s\";\n export const i32x4_lt_u = \"~lib/builtins/i32x4.lt_u\";\n export const i32x4_le_s = \"~lib/builtins/i32x4.le_s\";\n export const i32x4_le_u = \"~lib/builtins/i32x4.le_u\";\n export const i32x4_gt_s = \"~lib/builtins/i32x4.gt_s\";\n export const i32x4_gt_u = \"~lib/builtins/i32x4.gt_u\";\n export const i32x4_ge_s = \"~lib/builtins/i32x4.ge_s\";\n export const i32x4_ge_u = \"~lib/builtins/i32x4.ge_u\";\n export const i32x4_trunc_s_f32x4_sat = \"~lib/builtins/i32x4.trunc_s_f32x4_sat\";\n export const i32x4_trunc_u_f32x4_sat = \"~lib/builtins/i32x4.trunc_u_f32x4_sat\";\n\n export const i64x2_splat = \"~lib/builtins/i64x2.splat\";\n export const i64x2_extract_lane = \"~lib/builtins/i64x2.extract_lane\";\n export const i64x2_replace_lane = \"~lib/builtins/i64x2.replace_lane\";\n export const i64x2_add = \"~lib/builtins/i64x2.add\";\n export const i64x2_sub = \"~lib/builtins/i64x2.sub\"; // i64x2 has no .mul\n export const i64x2_neg = \"~lib/builtins/i64x2.neg\";\n export const i64x2_shl = \"~lib/builtins/i64x2.shl\";\n export const i64x2_shr_s = \"~lib/builtins/i64x2.shr_s\";\n export const i64x2_shr_u = \"~lib/builtins/i64x2.shr_u\";\n export const i64x2_any_true = \"~lib/builtins/i64x2.any_true\";\n export const i64x2_all_true = \"~lib/builtins/i64x2.all_true\"; // i64x2 has no .eq etc.\n export const i64x2_trunc_s_f64x2_sat = \"~lib/builtins/i64x2.trunc_s_f64x2_sat\";\n export const i64x2_trunc_u_f64x2_sat = \"~lib/builtins/i64x2.trunc_u_f64x2_sat\";\n\n export const f32x4_splat = \"~lib/builtins/f32x4.splat\";\n export const f32x4_extract_lane = \"~lib/builtins/f32x4.extract_lane\";\n export const f32x4_replace_lane = \"~lib/builtins/f32x4.replace_lane\";\n export const f32x4_add = \"~lib/builtins/f32x4.add\";\n export const f32x4_sub = \"~lib/builtins/f32x4.sub\";\n export const f32x4_mul = \"~lib/builtins/f32x4.mul\";\n export const f32x4_div = \"~lib/builtins/f32x4.div\";\n export const f32x4_neg = \"~lib/builtins/f32x4.neg\";\n export const f32x4_min = \"~lib/builtins/f32x4.min\";\n export const f32x4_max = \"~lib/builtins/f32x4.max\";\n export const f32x4_abs = \"~lib/builtins/f32x4.abs\";\n export const f32x4_sqrt = \"~lib/builtins/f32x4.sqrt\";\n export const f32x4_eq = \"~lib/builtins/f32x4.eq\";\n export const f32x4_ne = \"~lib/builtins/f32x4.ne\";\n export const f32x4_lt = \"~lib/builtins/f32x4.lt\";\n export const f32x4_le = \"~lib/builtins/f32x4.le\";\n export const f32x4_gt = \"~lib/builtins/f32x4.gt\";\n export const f32x4_ge = \"~lib/builtins/f32x4.ge\";\n export const f32x4_convert_s_i32x4 = \"~lib/builtins/f32x4.convert_s_i32x4\";\n export const f32x4_convert_u_i32x4 = \"~lib/builtins/f32x4.convert_u_i32x4\";\n\n export const f64x2_splat = \"~lib/builtins/f64x2.splat\";\n export const f64x2_extract_lane = \"~lib/builtins/f64x2.extract_lane\";\n export const f64x2_replace_lane = \"~lib/builtins/f64x2.replace_lane\";\n export const f64x2_add = \"~lib/builtins/f64x2.add\";\n export const f64x2_sub = \"~lib/builtins/f64x2.sub\";\n export const f64x2_mul = \"~lib/builtins/f64x2.mul\";\n export const f64x2_div = \"~lib/builtins/f64x2.div\";\n export const f64x2_neg = \"~lib/builtins/f64x2.neg\";\n export const f64x2_min = \"~lib/builtins/f64x2.min\";\n export const f64x2_max = \"~lib/builtins/f64x2.max\";\n export const f64x2_abs = \"~lib/builtins/f64x2.abs\";\n export const f64x2_sqrt = \"~lib/builtins/f64x2.sqrt\";\n export const f64x2_eq = \"~lib/builtins/f64x2.eq\";\n export const f64x2_ne = \"~lib/builtins/f64x2.ne\";\n export const f64x2_lt = \"~lib/builtins/f64x2.lt\";\n export const f64x2_le = \"~lib/builtins/f64x2.le\";\n export const f64x2_gt = \"~lib/builtins/f64x2.gt\";\n export const f64x2_ge = \"~lib/builtins/f64x2.ge\";\n export const f64x2_convert_s_i64x2 = \"~lib/builtins/f64x2.convert_s_i64x2\";\n export const f64x2_convert_u_i64x2 = \"~lib/builtins/f64x2.convert_u_i64x2\";\n\n export const v8x16_shuffle = \"~lib/builtins/v8x16.shuffle\";\n\n // internals\n export const heap_base = \"~lib/heap/__heap_base\";\n export const rtti_base = \"~lib/rt/__rtti_base\";\n export const visit_globals = \"~lib/rt/__visit_globals\";\n export const visit_members = \"~lib/rt/__visit_members\";\n\n // std/diagnostics.ts\n export const ERROR = \"~lib/diagnostics/ERROR\";\n export const WARNING = \"~lib/diagnostics/WARNING\";\n export const INFO = \"~lib/diagnostics/INFO\";\n\n // std/memory.ts\n export const memory_size = \"~lib/memory/memory.size\";\n export const memory_grow = \"~lib/memory/memory.grow\";\n export const memory_copy = \"~lib/memory/memory.copy\";\n export const memory_fill = \"~lib/memory/memory.fill\";\n export const memory_allocate = \"~lib/memory/memory.allocate\";\n export const memory_free = \"~lib/memory/memory.free\";\n export const memory_reset = \"~lib/memory/memory.reset\";\n\n // std/runtime.ts\n export const runtime_instanceof = \"~lib/runtime/runtime.instanceof\";\n export const runtime_flags = \"~lib/runtime/runtime.flags\";\n export const runtime_allocate = \"~lib/util/runtime/allocate\";\n export const runtime_reallocate = \"~lib/util/runtime/reallocate\";\n export const runtime_register = \"~lib/util/runtime/register\";\n export const runtime_discard = \"~lib/util/runtime/discard\";\n export const runtime_makeArray = \"~lib/util/runtime/makeArray\";\n\n // std/typedarray.ts\n export const Int8Array = \"~lib/typedarray/Int8Array\";\n export const Uint8Array = \"~lib/typedarray/Uint8Array\";\n export const Int16Array = \"~lib/typedarray/Int16Array\";\n export const Uint16Array = \"~lib/typedarray/Uint16Array\";\n export const Int32Array = \"~lib/typedarray/Int32Array\";\n export const Uint32Array = \"~lib/typedarray/Uint32Array\";\n export const Int64Array = \"~lib/typedarray/Int64Array\";\n export const Uint64Array = \"~lib/typedarray/Uint64Array\";\n export const Uint8ClampedArray = \"~lib/typedarray/Uint8ClampedArray\";\n export const Float32Array = \"~lib/typedarray/Float32Array\";\n export const Float64Array = \"~lib/typedarray/Float64Array\";\n\n // compiler generated\n export const started = \"~lib/started\";\n export const argc = \"~lib/argc\";\n export const setargc = \"~lib/setargc\";\n export const capabilities = \"~lib/capabilities\";\n}\n\n/** Compiles a call to a built-in function. */\nexport function compileCall(\n /* Compiler reference. */\n compiler: Compiler,\n /** Respective function prototype. */\n prototype: FunctionPrototype,\n /** Pre-resolved type arguments. */\n typeArguments: Type[] | null,\n /** Operand expressions. */\n operands: Expression[],\n /** Contextual type. */\n contextualType: Type,\n /** Respective call expression. */\n reportNode: CallExpression,\n /** Indicates that contextual type is ASM type. */\n isAsm: bool = false\n): ExpressionRef {\n var module = compiler.module;\n\n // NOTE that some implementations below make use of the select expression where straight-forward.\n // whether worth or not should probably be tested once it's known if/how embedders handle it.\n // search: createSelect\n\n // NOTE that consolidation of individual instructions into a single case isn't exactly scientific\n // below, but rather done to make this file easier to work with. If there was a general rule it'd\n // most likely be \"three or more instructions that only differ in their actual opcode\".\n\n var directize = false;\n\n switch (prototype.internalName) {\n\n // === Static type evaluation =================================================================\n\n case BuiltinSymbols.isInteger: { // isInteger() / isInteger(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return type.is(TypeFlags.INTEGER) && !type.is(TypeFlags.REFERENCE)\n ? module.i32(1)\n : module.i32(0);\n }\n case BuiltinSymbols.isFloat: { // isFloat() / isFloat(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return type.is(TypeFlags.FLOAT)\n ? module.i32(1)\n : module.i32(0);\n }\n case BuiltinSymbols.isBoolean: { // isBoolean() / isBoolean(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return type == Type.bool\n ? module.i32(1)\n : module.i32(0);\n }\n case BuiltinSymbols.isSigned: { // isSigned() / isSigned(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return type.is(TypeFlags.SIGNED)\n ? module.i32(1)\n : module.i32(0);\n }\n case BuiltinSymbols.isReference: { // isReference() / isReference(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return type.is(TypeFlags.REFERENCE)\n ? module.i32(1)\n : module.i32(0);\n }\n case BuiltinSymbols.isString: { // isString() / isString(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n let classType = type.classReference;\n if (classType) {\n let stringInstance = compiler.program.stringInstance;\n if (stringInstance && classType.isAssignableTo(stringInstance)) return module.i32(1);\n }\n return module.i32(0);\n }\n case BuiltinSymbols.isArray: { // isArray() / isArray(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n let classReference = type.classReference;\n if (!classReference) return module.i32(0);\n let classPrototype = classReference.prototype;\n return module.i32(classPrototype.extends(compiler.program.arrayPrototype) ? 1 : 0);\n }\n case BuiltinSymbols.isArrayLike: { // isArrayLike() / isArrayLike(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n let classReference = type.classReference;\n if (!classReference) return module.i32(0);\n return module.i32(classReference.isArrayLike ? 1 : 0);\n }\n case BuiltinSymbols.isFunction: { // isFunction / isFunction(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return module.i32(type.signatureReference ? 1 : 0);\n }\n case BuiltinSymbols.isNullable: { // isNullable / isNullable(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return module.i32(type.is(TypeFlags.NULLABLE) ? 1 : 0);\n }\n case BuiltinSymbols.isDefined: { // isDefined(expression) -> bool\n compiler.currentType = Type.bool;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let element = compiler.resolver.resolveExpression(\n operands[0],\n compiler.currentFlow,\n Type.auto,\n ReportMode.SWALLOW\n );\n return module.i32(element ? 1 : 0);\n }\n case BuiltinSymbols.isConstant: { // isConstant(expression) -> bool\n compiler.currentType = Type.bool;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let expr = compiler.compileExpression(operands[0], Type.auto);\n compiler.currentType = Type.bool;\n return module.i32(getExpressionId(expr) == ExpressionId.Const ? 1 : 0);\n }\n case BuiltinSymbols.isManaged: { // isManaged() -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return module.i32(type.isManaged ? 1 : 0);\n }\n case BuiltinSymbols.isVoid: { // isVoid() -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return module.i32(type.kind == TypeKind.VOID ? 1 : 0);\n }\n case BuiltinSymbols.lengthof: { // lengthof(): i32\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.i32;\n if (!type) return module.unreachable();\n\n // Report if there is no call signature\n let signatureReference = type.signatureReference;\n if (!signatureReference) {\n compiler.error(\n DiagnosticCode.Type_0_has_no_call_signatures,\n reportNode.range, \"1\", (typeArguments ? typeArguments.length : 1).toString(10)\n );\n return module.unreachable();\n }\n\n let parameterNames = signatureReference.parameterNames;\n return module.i32(!parameterNames ? 0 : parameterNames.length);\n }\n case BuiltinSymbols.sizeof: { // sizeof() -> usize\n compiler.currentType = compiler.options.usizeType;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 0, reportNode, compiler)\n ) return module.unreachable();\n let byteSize = (typeArguments)[0].byteSize;\n let expr: ExpressionRef;\n if (compiler.options.isWasm64) {\n // implicitly wrap if contextual type is a 32-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size <= 32) {\n compiler.currentType = Type.u32;\n expr = module.i32(byteSize);\n } else {\n expr = module.i64(byteSize, 0);\n }\n } else {\n // implicitly extend if contextual type is a 64-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size == 64) {\n compiler.currentType = Type.u64;\n expr = module.i64(byteSize, 0);\n } else {\n expr = module.i32(byteSize);\n }\n }\n return expr;\n }\n case BuiltinSymbols.alignof: { // alignof() -> usize\n compiler.currentType = compiler.options.usizeType;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 0, reportNode, compiler)\n ) return module.unreachable();\n let byteSize = (typeArguments)[0].byteSize;\n assert(isPowerOf2(byteSize));\n let alignLog2 = ctz(byteSize);\n let expr: ExpressionRef;\n if (compiler.options.isWasm64) {\n // implicitly wrap if contextual type is a 32-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size <= 32) {\n compiler.currentType = Type.u32;\n expr = module.i32(alignLog2);\n } else {\n expr = module.i64(alignLog2, 0);\n }\n } else {\n // implicitly extend if contextual type is a 64-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size == 64) {\n compiler.currentType = Type.u64;\n expr = module.i64(alignLog2, 0);\n } else {\n expr = module.i32(alignLog2);\n }\n }\n return expr;\n }\n case BuiltinSymbols.offsetof: { // offsetof(fieldName?: string) -> usize\n compiler.currentType = compiler.options.usizeType;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsOptional(operands, 0, 1, reportNode, compiler)\n ) return module.unreachable();\n let classType = typeArguments![0].classReference;\n if (!classType) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let offset: i32;\n if (operands.length) {\n if (\n operands[0].kind != NodeKind.LITERAL ||\n (operands[0]).literalKind != LiteralKind.STRING\n ) {\n compiler.error(\n DiagnosticCode.String_literal_expected,\n operands[0].range\n );\n return module.unreachable();\n }\n let fieldName = (operands[0]).value;\n let field = classType.members ? classType.members.get(fieldName) : null;\n if (!(field && field.kind == ElementKind.FIELD)) {\n compiler.error(\n DiagnosticCode.Type_0_has_no_property_1,\n operands[0].range, classType.internalName, fieldName\n );\n return module.unreachable();\n }\n offset = (field).memoryOffset;\n } else {\n offset = classType.currentMemoryOffset;\n }\n if (compiler.options.isWasm64) {\n // implicitly wrap if contextual type is a 32-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size <= 32) {\n compiler.currentType = Type.u32;\n return module.i32(offset);\n } else {\n return module.i64(offset);\n }\n } else {\n // implicitly extend if contextual type is a 64-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size == 64) {\n compiler.currentType = Type.u64;\n return module.i64(offset);\n } else {\n return module.i32(offset);\n }\n }\n }\n case BuiltinSymbols.nameof: {\n // Check to make sure a parameter or a type was passed to the builtin\n let resultType = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n if (!resultType) return module.unreachable();\n\n let value: string;\n if (resultType.is(TypeFlags.REFERENCE)) {\n let classReference = resultType.classReference;\n if (!classReference) {\n assert(resultType.signatureReference);\n value = \"Function\";\n } else {\n value = classReference.name;\n }\n } else {\n switch (resultType.kind) {\n case TypeKind.BOOL: { value = \"bool\"; break; }\n case TypeKind.I8: { value = \"i8\"; break; }\n case TypeKind.U8: { value = \"u8\"; break; }\n case TypeKind.I16: { value = \"i16\"; break; }\n case TypeKind.U16: { value = \"u16\"; break; }\n case TypeKind.I32: { value = \"i32\"; break; }\n case TypeKind.U32: { value = \"u32\"; break; }\n case TypeKind.F32: { value = \"f32\"; break; }\n case TypeKind.I64: { value = \"i64\"; break; }\n case TypeKind.U64: { value = \"u64\"; break; }\n case TypeKind.F64: { value = \"f64\"; break; }\n case TypeKind.ISIZE: { value = \"isize\"; break; }\n case TypeKind.USIZE: { value = \"usize\"; break; }\n case TypeKind.V128: { value = \"v128\"; break; }\n // If the kind is not set properly, throw an error.\n // The default case falls through to satisfy that value is always set, and never null.\n default: assert(false);\n case TypeKind.VOID: { value = \"void\"; break; }\n }\n }\n\n return compiler.ensureStaticString(value);\n }\n\n // === Math ===================================================================================\n\n case BuiltinSymbols.clz: // any_bitcount(value: T) -> T\n case BuiltinSymbols.ctz:\n case BuiltinSymbols.popcnt: {\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.i32, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let op: UnaryOp = -1;\n switch (prototype.internalName) {\n case BuiltinSymbols.clz: {\n switch (type.kind) {\n case TypeKind.BOOL:\n case TypeKind.I8:\n case TypeKind.U8:\n case TypeKind.I16:\n case TypeKind.U16:\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.ClzI32; break; }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.ClzI64\n : UnaryOp.ClzI32;\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.ClzI64; break; }\n }\n break;\n }\n case BuiltinSymbols.ctz: {\n switch (type.kind) {\n case TypeKind.BOOL:\n case TypeKind.I8:\n case TypeKind.U8:\n case TypeKind.I16:\n case TypeKind.U16:\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.CtzI32; break; }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.CtzI64\n : UnaryOp.CtzI32;\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.CtzI64; break; }\n }\n break;\n }\n case BuiltinSymbols.popcnt: {\n switch (compiler.currentType.kind) {\n case TypeKind.BOOL:\n case TypeKind.I8:\n case TypeKind.U8:\n case TypeKind.I16:\n case TypeKind.U16:\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.PopcntI32; break; }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.PopcntI64\n : UnaryOp.PopcntI32;\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.PopcntI64; break; }\n }\n break;\n }\n }\n if (op == -1) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n return module.unary(op, arg0);\n }\n case BuiltinSymbols.rotl: { // rotl(value: T, shift: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.i32, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT);\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = compiler.ensureSmallIntegerWrap(\n module.binary(BinaryOp.RotlI32, arg0, arg1),\n type\n );\n // fall-through\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.RotlI32, arg0, arg1);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n compiler.options.isWasm64\n ? BinaryOp.RotlI64\n : BinaryOp.RotlI32,\n arg0, arg1\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.RotlI64, arg0, arg1);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr; // possibly overflows\n }\n case BuiltinSymbols.rotr: { // rotr(value: T, shift: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.i32, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT);\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = compiler.ensureSmallIntegerWrap(\n module.binary(BinaryOp.RotrI32, arg0, arg1),\n type\n );\n break;\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.RotrI32, arg0, arg1);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n compiler.options.isWasm64\n ? BinaryOp.RotrI64\n : BinaryOp.RotrI32,\n arg0, arg1\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.RotrI64, arg0, arg1);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr; // possibly overflowws\n }\n case BuiltinSymbols.abs: { // abs(value: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: {\n let flow = compiler.currentFlow;\n\n // possibly overflows, e.g. abs(-128) == 128\n let tempLocal1 = flow.getTempLocal(Type.i32);\n let tempLocalIndex2 = flow.getAndFreeTempLocal(Type.i32).index;\n let tempLocalIndex1 = tempLocal1.index;\n\n // (x + (x >> 31)) ^ (x >> 31)\n expr = module.binary(BinaryOp.XorI32,\n module.binary(BinaryOp.AddI32,\n module.local_tee(\n tempLocalIndex2,\n module.binary(BinaryOp.ShrI32,\n module.local_tee(tempLocalIndex1, arg0),\n module.i32(31)\n )\n ),\n module.local_get(tempLocalIndex1, NativeType.I32)\n ),\n module.local_get(tempLocalIndex2, NativeType.I32)\n );\n\n flow.freeTempLocal(tempLocal1);\n break;\n }\n case TypeKind.ISIZE: {\n let options = compiler.options;\n let flow = compiler.currentFlow;\n let wasm64 = options.isWasm64;\n\n let tempLocal1 = flow.getTempLocal(options.usizeType);\n let tempLocalIndex2 = flow.getAndFreeTempLocal(options.usizeType).index;\n let tempLocalIndex1 = tempLocal1.index;\n\n expr = module.binary(wasm64 ? BinaryOp.XorI64 : BinaryOp.XorI32,\n module.binary(wasm64 ? BinaryOp.AddI64 : BinaryOp.AddI32,\n module.local_tee(\n tempLocalIndex2,\n module.binary(wasm64 ? BinaryOp.ShrI64 : BinaryOp.ShrI32,\n module.local_tee(tempLocalIndex1, arg0),\n wasm64 ? module.i64(63) : module.i32(31)\n )\n ),\n module.local_get(tempLocalIndex1, options.nativeSizeType)\n ),\n module.local_get(tempLocalIndex2, options.nativeSizeType)\n );\n\n flow.freeTempLocal(tempLocal1);\n break;\n }\n case TypeKind.I64: {\n let flow = compiler.currentFlow;\n\n let tempLocal1 = flow.getTempLocal(Type.i64);\n let tempLocalIndex2 = flow.getAndFreeTempLocal(Type.i64).index;\n let tempLocalIndex1 = tempLocal1.index;\n\n // (x + (x >> 63)) ^ (x >> 63)\n expr = module.binary(BinaryOp.XorI64,\n module.binary(BinaryOp.AddI64,\n module.local_tee(\n tempLocalIndex2,\n module.binary(BinaryOp.ShrI64,\n module.local_tee(tempLocalIndex1, arg0),\n module.i64(63)\n )\n ),\n module.local_get(tempLocalIndex1, NativeType.I64)\n ),\n module.local_get(tempLocalIndex2, NativeType.I64)\n );\n\n flow.freeTempLocal(tempLocal1);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.U64:\n case TypeKind.BOOL: {\n expr = arg0;\n break;\n }\n case TypeKind.F32: {\n expr = module.unary(UnaryOp.AbsF32, arg0);\n break;\n }\n case TypeKind.F64: {\n expr = module.unary(UnaryOp.AbsF64, arg0);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr;\n }\n case BuiltinSymbols.max: { // max(left: T, right: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP);\n let op: BinaryOp;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: { op = BinaryOp.GtI32; break; }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: { op = BinaryOp.GtU32; break; }\n case TypeKind.I64: { op = BinaryOp.GtI64; break; }\n case TypeKind.U64: { op = BinaryOp.GtU64; break; }\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.GtI64\n : BinaryOp.GtI32;\n break;\n }\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.GtU64\n : BinaryOp.GtU32;\n break;\n }\n case TypeKind.F32: {\n return module.binary(BinaryOp.MaxF32, arg0, arg1);\n }\n case TypeKind.F64: {\n return module.binary(BinaryOp.MaxF64, arg0, arg1);\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n }\n let flow = compiler.currentFlow;\n let nativeType = type.toNativeType();\n let tempLocal0 = flow.getTempLocal(type);\n flow.setLocalFlag(tempLocal0.index, LocalFlags.WRAPPED);\n let tempLocal1 = flow.getAndFreeTempLocal(type);\n flow.setLocalFlag(tempLocal1.index, LocalFlags.WRAPPED);\n flow.freeTempLocal(tempLocal0);\n return module.select(\n module.local_tee(tempLocal0.index, arg0),\n module.local_tee(tempLocal1.index, arg1),\n module.binary(op,\n module.local_get(tempLocal0.index, nativeType),\n module.local_get(tempLocal1.index, nativeType)\n )\n );\n }\n case BuiltinSymbols.min: { // min(left: T, right: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP);\n let op: BinaryOp;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: { op = BinaryOp.LtI32; break; }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: { op = BinaryOp.LtU32; break; }\n case TypeKind.I64: { op = BinaryOp.LtI64; break; }\n case TypeKind.U64: { op = BinaryOp.LtU64; break; }\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.LtI64\n : BinaryOp.LtI32;\n break;\n }\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.LtU64\n : BinaryOp.LtU32;\n break;\n }\n case TypeKind.F32: {\n return module.binary(BinaryOp.MinF32, arg0, arg1);\n }\n case TypeKind.F64: {\n return module.binary(BinaryOp.MinF64, arg0, arg1);\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n }\n let flow = compiler.currentFlow;\n let nativeType = type.toNativeType();\n let tempLocal0 = flow.getTempLocal(type);\n flow.setLocalFlag(tempLocal0.index, LocalFlags.WRAPPED);\n let tempLocal1 = flow.getAndFreeTempLocal(type);\n flow.setLocalFlag(tempLocal1.index, LocalFlags.WRAPPED);\n flow.freeTempLocal(tempLocal0);\n return module.select(\n module.local_tee(tempLocal0.index, arg0),\n module.local_tee(tempLocal1.index, arg1),\n module.binary(op,\n module.local_get(tempLocal0.index, nativeType),\n module.local_get(tempLocal1.index, nativeType)\n )\n );\n }\n case BuiltinSymbols.ceil: // any_rounding(value: T) -> T\n case BuiltinSymbols.floor: {\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.NONE);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let op: UnaryOp;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.I64:\n case TypeKind.ISIZE:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.U64:\n case TypeKind.USIZE:\n case TypeKind.BOOL: return arg0; // considered rounded\n case TypeKind.F32: {\n op = prototype.internalName == BuiltinSymbols.ceil\n ? UnaryOp.CeilF32\n : UnaryOp.FloorF32;\n break;\n }\n case TypeKind.F64: {\n op = prototype.internalName == BuiltinSymbols.ceil\n ? UnaryOp.CeilF64\n : UnaryOp.FloorF64;\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n }\n return module.unary(op, arg0);\n }\n case BuiltinSymbols.copysign: { // copysign(left: T, right: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.NONE);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT);\n let op: BinaryOp;\n switch (type.kind) {\n // TODO: does an integer version make sense?\n case TypeKind.F32: { op = BinaryOp.CopysignF32; break; }\n case TypeKind.F64: { op = BinaryOp.CopysignF64; break; }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n }\n return module.binary(op, arg0, arg1);\n }\n case BuiltinSymbols.nearest: { // nearest(value: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.NONE);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.I64:\n case TypeKind.ISIZE:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.U64:\n case TypeKind.USIZE:\n case TypeKind.BOOL: {\n expr = arg0;\n break;\n }\n case TypeKind.F32: {\n expr = module.unary(UnaryOp.NearestF32, arg0);\n break;\n }\n case TypeKind.F64: {\n expr = module.unary(UnaryOp.NearestF64, arg0);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr;\n }\n case BuiltinSymbols.reinterpret: { // reinterpret(value: *) -> T\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.currentType = type;\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I32:\n case TypeKind.U32: {\n let arg0 = compiler.compileExpression(operands[0], Type.f32, Constraints.CONV_IMPLICIT);\n expr = module.unary(UnaryOp.ReinterpretF32, arg0);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n let arg0 = compiler.compileExpression(operands[0], Type.f64, Constraints.CONV_IMPLICIT);\n expr = module.unary(UnaryOp.ReinterpretF64, arg0);\n break;\n }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.isWasm64\n ? Type.f64\n : Type.f32,\n Constraints.CONV_IMPLICIT\n );\n expr = module.unary(\n compiler.options.isWasm64\n ? UnaryOp.ReinterpretF64\n : UnaryOp.ReinterpretF32,\n arg0\n );\n break;\n }\n case TypeKind.F32: {\n let arg0 = compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_IMPLICIT);\n expr = module.unary(UnaryOp.ReinterpretI32, arg0);\n break;\n }\n case TypeKind.F64: {\n let arg0 = compiler.compileExpression(operands[0], Type.i64, Constraints.CONV_IMPLICIT);\n expr = module.unary(UnaryOp.ReinterpretI64, arg0);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n compiler.currentType = type;\n return expr;\n }\n case BuiltinSymbols.sqrt: { // sqrt(value: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.NONE);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.currentType = type;\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let expr: ExpressionRef;\n switch (type.kind) { // TODO: integer versions (that return f64 or convert)?\n case TypeKind.F32: {\n expr = module.unary(UnaryOp.SqrtF32, arg0);\n break;\n }\n case TypeKind.F64: {\n expr = module.unary(UnaryOp.SqrtF64, arg0);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr;\n }\n case BuiltinSymbols.trunc: { // trunc(value: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.NONE);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n return module.unreachable();\n }\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.I64:\n case TypeKind.ISIZE:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.U64:\n case TypeKind.USIZE:\n case TypeKind.BOOL: {\n expr = arg0;\n break;\n }\n // TODO: truncate to contextual type directly (if not void etc.)?\n case TypeKind.F32: {\n expr = module.unary(UnaryOp.TruncF32, arg0);\n break;\n }\n case TypeKind.F64: {\n expr = module.unary(UnaryOp.TruncF64, arg0);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr;\n }\n\n // === Memory access ==========================================================================\n\n case BuiltinSymbols.load: { // load(offset: usize, immOffset?: usize, immAlign?: usize) -> T*\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsOptional(operands, 1, 3, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n let outType = (\n contextualType != Type.auto &&\n type.is(TypeFlags.INTEGER) &&\n contextualType.is(TypeFlags.INTEGER) &&\n contextualType.size > type.size\n ) ? contextualType : type;\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let numOperands = operands.length;\n let immOffset = numOperands >= 2 ? evaluateImmediateOffset(operands[1], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = outType;\n return module.unreachable();\n }\n let immAlign: i32;\n let naturalAlign = type.byteSize;\n if (numOperands == 3) {\n immAlign = evaluateImmediateOffset(operands[2], compiler);\n if (immAlign < 0) {\n compiler.currentType = outType;\n return module.unreachable();\n }\n if (immAlign > naturalAlign) {\n compiler.error(\n DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,\n operands[2].range, \"Alignment\", \"0\", naturalAlign.toString()\n );\n compiler.currentType = outType;\n return module.unreachable();\n }\n if (!isPowerOf2(immAlign)) {\n compiler.error(\n DiagnosticCode._0_must_be_a_power_of_two,\n operands[2].range, \"Alignment\"\n );\n compiler.currentType = outType;\n return module.unreachable();\n }\n } else {\n immAlign = naturalAlign;\n }\n compiler.currentType = outType;\n return module.load(\n type.byteSize,\n type.is(TypeFlags.SIGNED | TypeFlags.INTEGER),\n arg0,\n outType.toNativeType(),\n immOffset,\n immAlign\n );\n }\n case BuiltinSymbols.store: { // store(offset: usize, value: T*, offset?: usize, align?: usize) -> void\n compiler.currentType = Type.void;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsOptional(operands, 2, 4, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = isAsm\n ? compiler.compileExpression(operands[1],\n contextualType,\n Constraints.CONV_IMPLICIT\n )\n : compiler.compileExpression(\n operands[1],\n type,\n type.is(TypeFlags.INTEGER)\n ? Constraints.NONE // no need to convert to small int (but now might result in a float)\n : Constraints.CONV_IMPLICIT\n );\n let inType = compiler.currentType;\n if (\n type.is(TypeFlags.INTEGER) &&\n (\n !inType.is(TypeFlags.INTEGER) || // float to int\n inType.size < type.size // int to larger int (clear garbage bits)\n )\n ) {\n arg1 = compiler.convertExpression(arg1,\n inType, type,\n false, false, // still clears garbage bits when not wrapping\n operands[1]\n );\n inType = type;\n }\n let immOffset = operands.length >= 3 ? evaluateImmediateOffset(operands[2], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n let immAlign: i32;\n let naturalAlign = type.byteSize;\n if (operands.length == 4) {\n immAlign = evaluateImmediateOffset(operands[3], compiler);\n if (immAlign < 0) {\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n if (immAlign > naturalAlign) {\n compiler.error(\n DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,\n operands[3].range, \"Alignment\", \"0\", naturalAlign.toString()\n );\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n if (!isPowerOf2(immAlign)) {\n compiler.error(\n DiagnosticCode._0_must_be_a_power_of_two,\n operands[3].range, \"Alignment\"\n );\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n } else {\n immAlign = naturalAlign;\n }\n compiler.currentType = Type.void;\n return module.store(type.byteSize, arg0, arg1, inType.toNativeType(), immOffset, immAlign);\n }\n\n // === Atomics ================================================================================\n\n case BuiltinSymbols.atomic_load: { // load(offset: usize, immOffset?: usize) -> T*\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsOptional(operands, 1, 2, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n let outType = (\n type.is(TypeFlags.INTEGER) &&\n contextualType.is(TypeFlags.INTEGER) &&\n contextualType.size > type.size\n ) ? contextualType : type;\n if (!type.is(TypeFlags.INTEGER)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = outType;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let immOffset = operands.length == 2 ? evaluateImmediateOffset(operands[1], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = outType;\n return module.unreachable();\n }\n compiler.currentType = outType;\n return module.atomic_load(\n type.byteSize,\n arg0,\n outType.toNativeType(),\n immOffset\n );\n }\n case BuiltinSymbols.atomic_store: { // store(offset: usize, value: T*, immOffset?: usize) -> void\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n compiler.currentType = Type.void;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsOptional(operands, 2, 3, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (!type.is(TypeFlags.INTEGER) || type.size < 8) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = isAsm\n ? compiler.compileExpression(\n operands[1],\n contextualType,\n Constraints.CONV_IMPLICIT\n )\n : compiler.compileExpression(\n operands[1],\n type,\n type.is(TypeFlags.INTEGER)\n ? Constraints.NONE // no need to convert to small int (but now might result in a float)\n : Constraints.CONV_IMPLICIT\n );\n let inType = compiler.currentType;\n if (\n type.is(TypeFlags.INTEGER) &&\n (\n !inType.is(TypeFlags.INTEGER) || // float to int\n inType.size < type.size // int to larger int (clear garbage bits)\n )\n ) {\n arg1 = compiler.convertExpression(arg1,\n inType, type,\n false, false, // still clears garbage bits when not wrapping\n operands[1]\n );\n inType = type;\n }\n let immOffset = operands.length == 3 ? evaluateImmediateOffset(operands[2], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n compiler.currentType = Type.void;\n return module.atomic_store(type.byteSize, arg0, arg1, inType.toNativeType(), immOffset);\n }\n case BuiltinSymbols.atomic_add: // any_atomic_binary(ptr, value: T, immOffset?: usize) -> T\n case BuiltinSymbols.atomic_sub:\n case BuiltinSymbols.atomic_and:\n case BuiltinSymbols.atomic_or:\n case BuiltinSymbols.atomic_xor:\n case BuiltinSymbols.atomic_xchg: {\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsOptional(operands, 2, 3, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (!type.is(TypeFlags.INTEGER) || type.size < 8) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = isAsm\n ? compiler.compileExpression(operands[1],\n contextualType,\n Constraints.CONV_IMPLICIT\n )\n : compiler.compileExpression(\n operands[1],\n type,\n type.is(TypeFlags.INTEGER)\n ? Constraints.NONE // no need to convert to small int (but now might result in a float)\n : Constraints.CONV_IMPLICIT\n );\n let inType = compiler.currentType;\n if (\n type.is(TypeFlags.INTEGER) &&\n (\n !inType.is(TypeFlags.INTEGER) || // float to int\n inType.size < type.size // int to larger int (clear garbage bits)\n )\n ) {\n arg1 = compiler.convertExpression(arg1,\n inType, type,\n false, false, // still clears garbage bits when not wrapping\n operands[1]\n );\n inType = type;\n }\n let immOffset = operands.length == 3 ? evaluateImmediateOffset(operands[2], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = inType;\n return module.unreachable();\n }\n let op: AtomicRMWOp;\n switch (prototype.internalName) {\n default: assert(false);\n case BuiltinSymbols.atomic_add: { op = AtomicRMWOp.Add; break; }\n case BuiltinSymbols.atomic_sub: { op = AtomicRMWOp.Sub; break; }\n case BuiltinSymbols.atomic_and: { op = AtomicRMWOp.And; break; }\n case BuiltinSymbols.atomic_or: { op = AtomicRMWOp.Or; break; }\n case BuiltinSymbols.atomic_xor: { op = AtomicRMWOp.Xor; break; }\n case BuiltinSymbols.atomic_xchg: { op = AtomicRMWOp.Xchg; break; }\n }\n compiler.currentType = inType;\n return module.atomic_rmw(\n op, type.byteSize, immOffset, arg0, arg1, inType.toNativeType()\n );\n }\n case BuiltinSymbols.atomic_cmpxchg: { // cmpxchg(ptr: usize, expected: T, replacement: T, off?: usize): T\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsOptional(operands, 3, 4, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (!type.is(TypeFlags.INTEGER) || type.size < 8) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = isAsm\n ? compiler.compileExpression(operands[1],\n contextualType,\n Constraints.CONV_IMPLICIT\n )\n : compiler.compileExpression(\n operands[1],\n type,\n type.is(TypeFlags.INTEGER)\n ? Constraints.NONE // no need to convert to small int (but now might result in a float)\n : Constraints.CONV_IMPLICIT\n );\n let inType = compiler.currentType;\n let arg2 = compiler.compileExpression(operands[2],\n inType,\n Constraints.CONV_IMPLICIT\n );\n if (\n type.is(TypeFlags.INTEGER) &&\n (\n !inType.is(TypeFlags.INTEGER) || // float to int\n inType.size < type.size // int to larger int (clear garbage bits)\n )\n ) {\n arg1 = compiler.convertExpression(arg1,\n inType, type,\n false, false, // still clears garbage bits when not wrapping\n operands[1]\n );\n arg2 = compiler.convertExpression(arg2,\n inType, type,\n false, false, // still clears garbage bits when not wrapping\n operands[2]\n );\n inType = type;\n }\n let immOffset = operands.length == 4 ? evaluateImmediateOffset(operands[3], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = inType;\n return module.unreachable();\n }\n compiler.currentType = inType;\n return module.atomic_cmpxchg(\n type.byteSize, immOffset, arg0, arg1, arg2, inType.toNativeType()\n );\n }\n case BuiltinSymbols.atomic_wait: { // wait(ptr: usize, expected: T, timeout: i64): i32;\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n compiler.currentType = Type.i32;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (!type.is(TypeFlags.INTEGER) || type.size < 32) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = compiler.compileExpression(operands[1], type,\n Constraints.CONV_IMPLICIT\n );\n let arg2 = compiler.compileExpression(operands[2],\n Type.i64,\n Constraints.CONV_IMPLICIT\n );\n compiler.currentType = Type.i32;\n return module.atomic_wait(arg0, arg1, arg2, type.toNativeType());\n }\n case BuiltinSymbols.atomic_notify: { // notify(ptr: usize, count: i32): i32;\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n compiler.currentType = Type.i32;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = compiler.compileExpression(operands[1],\n Type.i32,\n Constraints.CONV_IMPLICIT\n );\n compiler.currentType = Type.i32;\n return module.atomic_notify(arg0, arg1);\n }\n\n // === Control flow ===========================================================================\n\n case BuiltinSymbols.select: { // select(ifTrue: T, ifFalse: T, condition: bool) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.auto);\n let type = compiler.currentType;\n if (!type.isAny(TypeFlags.VALUE | TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT);\n let arg2 = compiler.makeIsTrueish(\n compiler.compileExpression(operands[2], Type.bool),\n compiler.currentType // ^\n );\n compiler.currentType = type;\n return module.select(arg0, arg1, arg2);\n }\n case BuiltinSymbols.unreachable: { // unreachable() -> *\n if (typeArguments) {\n compiler.error(\n DiagnosticCode.Type_0_is_not_generic,\n reportNode.typeArgumentsRange, prototype.internalName\n );\n }\n checkArgsRequired(operands, 0, reportNode, compiler);\n return module.unreachable();\n }\n\n // === Memory =================================================================================\n\n case BuiltinSymbols.memory_size: { // memory.size() -> i32\n compiler.currentType = Type.i32;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 0, reportNode, compiler)\n ) return module.unreachable();\n return module.host(HostOp.MemorySize);\n }\n case BuiltinSymbols.memory_grow: { // memory.grow(pages: i32) -> i32\n compiler.currentType = Type.i32;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n return module.host(HostOp.MemoryGrow, null, [\n compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_IMPLICIT)\n ]);\n }\n case BuiltinSymbols.memory_copy: { // memory.copy(dest: usize, src: usize: n: usize) -> void\n compiler.currentType = Type.void;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) return module.unreachable();\n if (!compiler.options.hasFeature(Feature.BULK_MEMORY)) {\n let instance = compiler.resolver.resolveFunction(prototype, null); // reports\n compiler.currentType = Type.void;\n if (!instance) return module.unreachable();\n return compiler.compileCallDirect(instance, operands, reportNode);\n }\n let usizeType = compiler.options.usizeType;\n let arg0 = compiler.compileExpression(operands[0], usizeType, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], usizeType, Constraints.CONV_IMPLICIT);\n let arg2 = compiler.compileExpression(operands[2], usizeType, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.void;\n return module.memory_copy(arg0, arg1, arg2);\n }\n case BuiltinSymbols.memory_fill: { // memory.fill(dest: usize, value: u8, n: usize) -> void\n compiler.currentType = Type.void;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) return module.unreachable();\n if (!compiler.options.hasFeature(Feature.BULK_MEMORY)) {\n let instance = compiler.resolver.resolveFunction(prototype, null); // reports\n compiler.currentType = Type.void;\n if (!instance) return module.unreachable();\n return compiler.compileCallDirect(instance, operands, reportNode);\n }\n let usizeType = compiler.options.usizeType;\n let arg0 = compiler.compileExpression(operands[0], usizeType, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.u8, Constraints.CONV_IMPLICIT);\n let arg2 = compiler.compileExpression(operands[2], usizeType, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.void;\n return module.memory_fill(arg0, arg1, arg2);\n }\n\n // === Helpers ================================================================================\n\n case BuiltinSymbols.changetype: { // changetype(value: *) -> T\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let toType = typeArguments![0];\n let arg0 = compiler.compileExpression(operands[0], toType);\n let fromType = compiler.currentType;\n compiler.currentType = toType;\n if (fromType.size != toType.size) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n return module.unreachable();\n }\n return arg0;\n }\n case BuiltinSymbols.assert: { // assert(isTrueish: T, message?: string) -> T{!= null}\n if (\n checkTypeOptional(typeArguments, reportNode, compiler) |\n checkArgsOptional(operands, 1, 2, reportNode, compiler)\n ) {\n if (typeArguments) {\n assert(typeArguments.length); // otherwise invalid, should not been set at all\n compiler.currentType = typeArguments[0].nonNullableType;\n }\n return module.unreachable();\n }\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.bool, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n compiler.currentType = type.nonNullableType;\n\n // if the assertion can be proven statically, omit it\n if (getExpressionId(arg0 = module.precomputeExpression(arg0)) == ExpressionId.Const) {\n switch (getExpressionType(arg0)) {\n case NativeType.I32: {\n if (getConstValueI32(arg0) != 0) {\n if (contextualType == Type.void) {\n compiler.currentType = Type.void;\n return module.nop();\n }\n return arg0;\n }\n break;\n }\n case NativeType.I64: {\n if (getConstValueI64Low(arg0) != 0 || getConstValueI64High(arg0) != 0) {\n if (contextualType == Type.void) {\n compiler.currentType = Type.void;\n return module.nop();\n }\n return arg0;\n }\n break;\n }\n case NativeType.F32: {\n if (getConstValueF32(arg0) != 0) {\n if (contextualType == Type.void) {\n compiler.currentType = Type.void;\n return module.nop();\n }\n return arg0;\n }\n break;\n }\n case NativeType.F64: {\n if (getConstValueF64(arg0) != 0) {\n if (contextualType == Type.void) {\n compiler.currentType = Type.void;\n return module.nop();\n }\n return arg0;\n }\n break;\n }\n }\n }\n\n // return ifTrueish if assertions are disabled\n if (compiler.options.noAssert) {\n if (contextualType == Type.void) { // simplify if dropped anyway\n compiler.currentType = Type.void;\n return module.nop();\n }\n return arg0;\n }\n\n // otherwise call abort if the assertion is false-ish\n let abort = compileAbort(compiler, operands.length == 2 ? operands[1] : null, reportNode);\n compiler.currentType = type.nonNullableType;\n let expr: ExpressionRef;\n if (contextualType == Type.void) { // simplify if dropped anyway\n compiler.currentType = Type.void;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.if(\n module.unary(UnaryOp.EqzI32, arg0),\n abort\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.if(\n module.unary(UnaryOp.EqzI64, arg0),\n abort\n );\n break;\n }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n expr = module.if(\n module.unary(\n compiler.options.isWasm64\n ? UnaryOp.EqzI64\n : UnaryOp.EqzI32,\n arg0\n ),\n abort\n );\n break;\n }\n // TODO: also check for NaN in float assertions, as in `Boolean(NaN) -> false`?\n case TypeKind.F32: {\n expr = module.if(\n module.binary(BinaryOp.EqF32,\n arg0,\n module.f32(0)\n ),\n abort\n );\n break;\n }\n case TypeKind.F64: {\n expr = module.if(\n module.binary(BinaryOp.EqF64,\n arg0,\n module.f64(0)\n ),\n abort\n );\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = abort;\n break;\n }\n }\n } else {\n compiler.currentType = type.nonNullableType;\n switch (compiler.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n let flow = compiler.currentFlow;\n let tempLocal = flow.getAndFreeTempLocal(type);\n flow.setLocalFlag(tempLocal.index, LocalFlags.WRAPPED); // arg0 is wrapped\n expr = module.if(\n module.local_tee(tempLocal.index, arg0),\n module.local_get(tempLocal.index, NativeType.I32),\n abort\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n let tempLocal = compiler.currentFlow.getAndFreeTempLocal(Type.i64);\n expr = module.if(\n module.unary(UnaryOp.EqzI64,\n module.local_tee(tempLocal.index, arg0)\n ),\n abort,\n module.local_get(tempLocal.index, NativeType.I64)\n );\n break;\n }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n let tempLocal = compiler.currentFlow.getAndFreeTempLocal(compiler.options.usizeType);\n expr = module.if(\n module.unary(\n compiler.options.isWasm64\n ? UnaryOp.EqzI64\n : UnaryOp.EqzI32,\n module.local_tee(tempLocal.index, arg0)\n ),\n abort,\n module.local_get(tempLocal.index, compiler.options.nativeSizeType)\n );\n break;\n }\n case TypeKind.F32: {\n let tempLocal = compiler.currentFlow.getAndFreeTempLocal(Type.f32);\n expr = module.if(\n module.binary(BinaryOp.EqF32,\n module.local_tee(tempLocal.index, arg0),\n module.f32(0)\n ),\n abort,\n module.local_get(tempLocal.index, NativeType.F32)\n );\n break;\n }\n case TypeKind.F64: {\n let tempLocal = compiler.currentFlow.getAndFreeTempLocal(Type.f64);\n expr = module.if(\n module.binary(BinaryOp.EqF64,\n module.local_tee(tempLocal.index, arg0),\n module.f64(0)\n ),\n abort,\n module.local_get(tempLocal.index, NativeType.F64)\n );\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = abort;\n break;\n }\n }\n }\n return expr;\n }\n case BuiltinSymbols.unchecked: { // unchecked(expr: *) -> *\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let flow = compiler.currentFlow;\n let alreadyUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT);\n flow.set(FlowFlags.UNCHECKED_CONTEXT);\n // eliminate unnecessary tees by preferring contextualType(=void):\n let expr = compiler.compileExpression(operands[0], contextualType);\n if (!alreadyUnchecked) flow.unset(FlowFlags.UNCHECKED_CONTEXT);\n return expr;\n }\n case BuiltinSymbols.call_direct: directize = true;\n case BuiltinSymbols.call_indirect: { // call_indirect(target: Function | u32, ...args: *[]) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsOptional(operands, 1, i32.MAX_VALUE, reportNode, compiler)\n ) return module.unreachable();\n let returnType = typeArguments ? typeArguments[0] : contextualType;\n let arg0 = compiler.compileExpression(operands[0], Type.u32);\n let arg0Type = compiler.currentType;\n if (!(\n arg0Type == Type.u32 || // either plain index\n arg0Type.kind == TypeKind.U32 && arg0Type.signatureReference // or function reference\n )) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n operands[0].range\n );\n return module.unreachable();\n }\n let numOperands = operands.length - 1;\n let operandExprs = new Array(numOperands);\n let nativeReturnType = returnType.toNativeType();\n let parameterTypes = new Array(numOperands);\n let nativeParamTypes = new Array(numOperands);\n for (let i = 0; i < numOperands; ++i) {\n operandExprs[i] = compiler.compileExpression(operands[1 + i], Type.i32);\n let operandType = compiler.currentType;\n parameterTypes[i] = operandType;\n nativeParamTypes[i] = operandType.toNativeType();\n }\n let typeName = Signature.makeSignatureString(parameterTypes, returnType);\n let typeRef = module.getFunctionTypeBySignature(nativeReturnType, nativeParamTypes);\n if (!typeRef) typeRef = module.addFunctionType(typeName, nativeReturnType, nativeParamTypes);\n compiler.currentType = returnType;\n if (directize) {\n // if the index expression is precomputable to a constant value, emit a direct call\n if (getExpressionId(arg0 = module.precomputeExpression(arg0)) == ExpressionId.Const) {\n assert(getExpressionType(arg0) == NativeType.I32);\n let index = getConstValueI32(arg0);\n let functionTable = compiler.functionTable;\n if (index >= 0 && index < functionTable.length) {\n return module.call(functionTable[index], operandExprs, nativeReturnType);\n }\n }\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n operands[0].range\n );\n return module.unreachable();\n }\n // of course this can easily result in a 'RuntimeError: function signature mismatch' trap and\n // thus must be used with care. it exists because it *might* be useful in specific scenarios.\n return module.call_indirect(arg0, operandExprs, typeName);\n }\n case BuiltinSymbols.instantiate: { // instantiate(...args: *[]) -> T\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true)\n ) return module.unreachable();\n let classInstance = typeArguments![0].classReference;\n if (!classInstance) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n compiler.currentType = classInstance.type;\n return compiler.compileInstantiate(classInstance, operands, Constraints.NONE, reportNode);\n }\n\n // === User-defined diagnostics ===============================================================\n\n case BuiltinSymbols.ERROR: {\n checkTypeAbsent(typeArguments, reportNode, prototype);\n compiler.error(\n DiagnosticCode.User_defined_0,\n reportNode.range, (operands.length ? operands[0] : reportNode).range.toString()\n );\n return module.unreachable();\n }\n case BuiltinSymbols.WARNING: {\n checkTypeAbsent(typeArguments, reportNode, prototype);\n compiler.warning(\n DiagnosticCode.User_defined_0,\n reportNode.range, (operands.length ? operands[0] : reportNode).range.toString()\n );\n return module.nop();\n }\n case BuiltinSymbols.INFO: {\n checkTypeAbsent(typeArguments, reportNode, prototype);\n compiler.info(\n DiagnosticCode.User_defined_0,\n reportNode.range, (operands.length ? operands[0] : reportNode).range.toString()\n );\n return module.nop();\n }\n\n // === Portable type conversions ==============================================================\n\n case BuiltinSymbols.i8: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.i8;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.i8, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.i16: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.i16;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.i16, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.i32: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.i32;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.i64: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.i64;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.i64, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.isize: {\n let isizeType = compiler.options.isizeType;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = isizeType;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], isizeType, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.u8: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.u8;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.u8, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.u16: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.u16;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.u16, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.u32: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.u32;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.u32, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.u64: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.u64;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.u64, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.usize: {\n let usizeType = compiler.options.usizeType;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = usizeType;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], usizeType, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.bool: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.bool;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.bool, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.f32: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.f32;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.f32, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.f64: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.f64;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.f64, Constraints.CONV_EXPLICIT);\n }\n\n // === SIMD ===================================================================================\n\n case BuiltinSymbols.v128: // alias for now\n case BuiltinSymbols.i8x16: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 16, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 16; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.i8, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.I32);\n writeI8(getConstValueI32(expr), bytes, i);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.i16x8: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 8, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 8; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.i16, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.I32);\n writeI16(getConstValueI32(expr), bytes, i << 1);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.i32x4: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 4, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 4; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.i32, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.I32);\n writeI32(getConstValueI32(expr), bytes, i << 2);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.i64x2: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 2; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.i64, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.I64);\n let off = i << 3;\n writeI32(getConstValueI64Low(expr), bytes, off);\n writeI32(getConstValueI64High(expr), bytes, off + 4);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.f32x4: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 4, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 4; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.f32, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.F32);\n writeF32(getConstValueF32(expr), bytes, i << 2);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.f64x2: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 2; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.f64, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.F64);\n writeF64(getConstValueF64(expr), bytes, i << 3);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.v128_splat: { // splat(x: T) -> v128\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: UnaryOp;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = UnaryOp.SplatVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = UnaryOp.SplatVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.SplatVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.SplatVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.SplatVecI64x2\n : UnaryOp.SplatVecI32x4;\n break;\n }\n case TypeKind.F32: { op = UnaryOp.SplatVecF32x4; break; }\n case TypeKind.F64: { op = UnaryOp.SplatVecF64x2; break; }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n }\n let arg0 = compiler.compileExpression(operands[0], type, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.v128;\n return module.unary(op, arg0);\n }\n case BuiltinSymbols.v128_extract_lane: { // extract_lane(x: v128, idx: u8) -> T\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = type;\n return module.unreachable();\n }\n let op: SIMDExtractOp;\n switch (type.kind) {\n case TypeKind.I8: { op = SIMDExtractOp.ExtractLaneSVecI8x16; break; }\n case TypeKind.U8: { op = SIMDExtractOp.ExtractLaneUVecI8x16; break; }\n case TypeKind.I16: { op = SIMDExtractOp.ExtractLaneSVecI16x8; break; }\n case TypeKind.U16: { op = SIMDExtractOp.ExtractLaneUVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = SIMDExtractOp.ExtractLaneVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = SIMDExtractOp.ExtractLaneVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? SIMDExtractOp.ExtractLaneVecI64x2\n : SIMDExtractOp.ExtractLaneVecI32x4;\n break;\n }\n case TypeKind.F32: { op = SIMDExtractOp.ExtractLaneVecF32x4; break; }\n case TypeKind.F64: { op = SIMDExtractOp.ExtractLaneVecF64x2; break; }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = type;\n return module.unreachable();\n }\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.precomputeExpression(operands[1], Type.u8, Constraints.CONV_IMPLICIT);\n compiler.currentType = type;\n if (getExpressionId(arg1) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n operands[1].range\n );\n return module.unreachable();\n }\n assert(getExpressionType(arg1) == NativeType.I32);\n let maxIdx = (16 / type.byteSize) - 1;\n let idx = getConstValueI32(arg1);\n if (idx < 0 || idx > maxIdx) {\n compiler.error(\n DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,\n operands[1].range, \"Lane index\", \"0\", maxIdx.toString()\n );\n return module.unreachable();\n }\n return module.simd_extract(op, arg0, idx);\n }\n case BuiltinSymbols.v128_replace_lane: { // replace_lane(x: v128, idx: u8, value: T) -> v128\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: SIMDReplaceOp;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = SIMDReplaceOp.ReplaceLaneVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = SIMDReplaceOp.ReplaceLaneVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = SIMDReplaceOp.ReplaceLaneVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = SIMDReplaceOp.ReplaceLaneVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? SIMDReplaceOp.ReplaceLaneVecI64x2\n : SIMDReplaceOp.ReplaceLaneVecI32x4;\n break;\n }\n case TypeKind.F32: { op = SIMDReplaceOp.ReplaceLaneVecF32x4; break; }\n case TypeKind.F64: { op = SIMDReplaceOp.ReplaceLaneVecF64x2; break; }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.precomputeExpression(operands[1], Type.u8, Constraints.CONV_IMPLICIT);\n if (getExpressionId(arg1) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n operands[1].range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(arg1) == NativeType.I32);\n let maxIdx = (16 / type.byteSize) - 1;\n let idx = getConstValueI32(arg1);\n if (idx < 0 || idx > maxIdx) {\n compiler.error(\n DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,\n operands[1].range, \"Lane index\", \"0\", maxIdx.toString()\n );\n return module.unreachable();\n }\n let arg2 = compiler.compileExpression(operands[2], type, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.v128;\n return module.simd_replace(op, arg0, idx, arg2);\n }\n case BuiltinSymbols.v128_shuffle: { // shuffle(a: v128, b: v128, ...lanes: u8[]) -> v128\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let laneWidth = type.byteSize;\n let laneCount = 16 / laneWidth;\n assert(isInteger(laneCount) && isPowerOf2(laneCount));\n if (\n checkArgsRequired(operands, 2 + laneCount, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.I64:\n case TypeKind.ISIZE:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.U64:\n case TypeKind.USIZE:\n case TypeKind.F32:\n case TypeKind.F64: break;\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT);\n let mask = new Uint8Array(16);\n let maxIdx = (laneCount << 1) - 1;\n for (let i = 0; i < laneCount; ++i) {\n let operand = operands[2 + i];\n let argN = compiler.precomputeExpression(operand, Type.u8, Constraints.CONV_IMPLICIT);\n if (getExpressionId(argN) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n operand.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(argN) == NativeType.I32);\n let idx = getConstValueI32(argN);\n if (idx < 0 || idx > maxIdx) {\n compiler.error(\n DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,\n operand.range, \"Lane index\", \"0\", maxIdx.toString()\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n switch (laneWidth) {\n case 1: {\n writeI8(idx, mask, i);\n break;\n }\n case 2: {\n let off8 = i << 1;\n let idx8 = idx << 1;\n writeI8(idx8 , mask, off8);\n writeI8(idx8 + 1, mask, off8 + 1);\n break;\n }\n case 4: {\n let off8 = i << 2;\n let idx8 = idx << 2;\n writeI8(idx8 , mask, off8);\n writeI8(idx8 + 1, mask, off8 + 1);\n writeI8(idx8 + 2, mask, off8 + 2);\n writeI8(idx8 + 3, mask, off8 + 3);\n break;\n }\n case 8: {\n let off8 = i << 3;\n let idx8 = idx << 3;\n writeI8(idx8 , mask, off8);\n writeI8(idx8 + 1, mask, off8 + 1);\n writeI8(idx8 + 2, mask, off8 + 2);\n writeI8(idx8 + 3, mask, off8 + 3);\n writeI8(idx8 + 4, mask, off8 + 4);\n writeI8(idx8 + 5, mask, off8 + 5);\n writeI8(idx8 + 6, mask, off8 + 6);\n writeI8(idx8 + 7, mask, off8 + 7);\n break;\n }\n default: assert(false);\n }\n }\n compiler.currentType = Type.v128;\n return module.simd_shuffle(arg0, arg1, mask);\n }\n case BuiltinSymbols.v128_add: // any_binary(a: v128, b: v128) -> v128\n case BuiltinSymbols.v128_sub:\n case BuiltinSymbols.v128_mul:\n case BuiltinSymbols.v128_div:\n case BuiltinSymbols.v128_add_saturate:\n case BuiltinSymbols.v128_sub_saturate:\n case BuiltinSymbols.v128_min:\n case BuiltinSymbols.v128_max:\n case BuiltinSymbols.v128_eq:\n case BuiltinSymbols.v128_ne:\n case BuiltinSymbols.v128_lt:\n case BuiltinSymbols.v128_le:\n case BuiltinSymbols.v128_gt:\n case BuiltinSymbols.v128_ge: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: BinaryOp = -1;\n switch (prototype.internalName) {\n case BuiltinSymbols.v128_add: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = BinaryOp.AddVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = BinaryOp.AddVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = BinaryOp.AddVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = BinaryOp.AddVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.AddVecI64x2\n : BinaryOp.AddVecI32x4;\n break;\n }\n case TypeKind.F32: { op = BinaryOp.AddVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.AddVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_sub: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = BinaryOp.SubVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = BinaryOp.SubVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = BinaryOp.SubVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = BinaryOp.SubVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.SubVecI64x2\n : BinaryOp.SubVecI32x4;\n break;\n }\n case TypeKind.F32: { op = BinaryOp.SubVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.SubVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_mul: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = BinaryOp.MulVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = BinaryOp.MulVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = BinaryOp.MulVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.MulVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.MulVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) op = BinaryOp.MulVecI32x4;\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_div: {\n switch (type.kind) {\n case TypeKind.F32: { op = BinaryOp.DivVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.DivVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_add_saturate: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.AddSatSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.AddSatUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.AddSatSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.AddSatUVecI16x8; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_sub_saturate: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.SubSatSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.SubSatUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.SubSatSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.SubSatUVecI16x8; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_min: {\n switch (type.kind) {\n case TypeKind.F32: { op = BinaryOp.MinVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.MinVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_max: {\n switch (type.kind) {\n case TypeKind.F32: { op = BinaryOp.MaxVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.MaxVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_eq: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = BinaryOp.EqVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = BinaryOp.EqVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = BinaryOp.EqVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.EqVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.EqVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) op = BinaryOp.EqVecI32x4;\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_ne: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = BinaryOp.NeVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = BinaryOp.NeVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = BinaryOp.NeVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.NeVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.NeVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) op = BinaryOp.NeVecI32x4;\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_lt: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.LtSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.LtUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.LtSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.LtUVecI16x8; break; }\n case TypeKind.I32: { op = BinaryOp.LtSVecI32x4; break; }\n case TypeKind.U32: { op = BinaryOp.LtUVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.LtVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.LtVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) {\n op = type.kind == TypeKind.ISIZE\n ? BinaryOp.LtSVecI32x4\n : BinaryOp.LtUVecI32x4;\n }\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_le: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.LeSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.LeUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.LeSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.LeUVecI16x8; break; }\n case TypeKind.I32: { op = BinaryOp.LeSVecI32x4; break; }\n case TypeKind.U32: { op = BinaryOp.LeUVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.LeVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.LeVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) {\n op = type.kind == TypeKind.ISIZE\n ? BinaryOp.LeSVecI32x4\n : BinaryOp.LeUVecI32x4;\n }\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_gt: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.GtSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.GtUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.GtSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.GtUVecI16x8; break; }\n case TypeKind.I32: { op = BinaryOp.GtSVecI32x4; break; }\n case TypeKind.U32: { op = BinaryOp.GtUVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.GtVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.GtVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) {\n op = type.kind == TypeKind.ISIZE\n ? BinaryOp.GtSVecI32x4\n : BinaryOp.GtUVecI32x4;\n }\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_ge: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.GeSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.GeUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.GeSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.GeUVecI16x8; break; }\n case TypeKind.I32: { op = BinaryOp.GeSVecI32x4; break; }\n case TypeKind.U32: { op = BinaryOp.GeUVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.GeVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.GeVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) {\n op = type.kind == TypeKind.ISIZE\n ? BinaryOp.GeSVecI32x4\n : BinaryOp.GeUVecI32x4;\n }\n break;\n }\n }\n break;\n }\n }\n if (op == -1) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.v128;\n return module.binary(op, arg0, arg1);\n }\n case BuiltinSymbols.v128_neg: // any_unary(a: v128) -> v128\n case BuiltinSymbols.v128_abs:\n case BuiltinSymbols.v128_sqrt:\n case BuiltinSymbols.v128_convert:\n case BuiltinSymbols.v128_trunc: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: UnaryOp = -1;\n switch (prototype.internalName) {\n case BuiltinSymbols.v128_neg: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = UnaryOp.NegVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = UnaryOp.NegVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.NegVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.NegVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.NegVecI64x2\n : UnaryOp.NegVecI32x4;\n break;\n }\n case TypeKind.F32: { op = UnaryOp.NegVecF32x4; break; }\n case TypeKind.F64: { op = UnaryOp.NegVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_abs: {\n switch (type.kind) {\n case TypeKind.F32: { op = UnaryOp.AbsVecF32x4; break; }\n case TypeKind.F64: { op = UnaryOp.AbsVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_sqrt: {\n switch (type.kind) {\n case TypeKind.F32: { op = UnaryOp.SqrtVecF32x4; break; }\n case TypeKind.F64: { op = UnaryOp.SqrtVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_convert: {\n switch (type.kind) {\n case TypeKind.I32: { op = UnaryOp.ConvertSVecI32x4ToVecF32x4; break; }\n case TypeKind.U32: { op = UnaryOp.ConvertUVecI32x4ToVecF32x4; break; }\n case TypeKind.I64: { op = UnaryOp.ConvertSVecI64x2ToVecF64x2; break; }\n case TypeKind.U64: { op = UnaryOp.ConvertUVecI64x2ToVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_trunc: {\n switch (type.kind) {\n case TypeKind.I32: { op = UnaryOp.TruncSatSVecF32x4ToVecI32x4; break; }\n case TypeKind.U32: { op = UnaryOp.TruncSatUVecF32x4ToVecI32x4; break; }\n case TypeKind.I64: { op = UnaryOp.TruncSatSVecF64x2ToVecI64x2; break; }\n case TypeKind.U64: { op = UnaryOp.TruncSatUVecF64x2ToVecI64x2; break; }\n }\n break;\n }\n }\n if (op == -1) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.v128;\n return module.unary(op, arg0);\n }\n case BuiltinSymbols.v128_shl: // any_shift(a: v128, b: i32) -> v128\n case BuiltinSymbols.v128_shr: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: SIMDShiftOp = -1;\n switch (prototype.internalName) {\n case BuiltinSymbols.v128_shl: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = SIMDShiftOp.ShlVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = SIMDShiftOp.ShlVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = SIMDShiftOp.ShlVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = SIMDShiftOp.ShlVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? SIMDShiftOp.ShlVecI64x2\n : SIMDShiftOp.ShlVecI32x4;\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_shr: {\n switch (type.kind) {\n case TypeKind.I8: { op = SIMDShiftOp.ShrSVecI8x16; break; }\n case TypeKind.U8: { op = SIMDShiftOp.ShrUVecI8x16; break; }\n case TypeKind.I16: { op = SIMDShiftOp.ShrSVecI16x8; break; }\n case TypeKind.U16: { op = SIMDShiftOp.ShrUVecI16x8; break; }\n case TypeKind.I32: { op = SIMDShiftOp.ShrSVecI32x4; break; }\n case TypeKind.U32: { op = SIMDShiftOp.ShrUVecI32x4; break; }\n case TypeKind.I64: { op = SIMDShiftOp.ShrSVecI64x2; break; }\n case TypeKind.U64: { op = SIMDShiftOp.ShrUVecI64x2; break; }\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? SIMDShiftOp.ShrSVecI64x2\n : SIMDShiftOp.ShrSVecI32x4;\n break;\n }\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? SIMDShiftOp.ShrUVecI64x2\n : SIMDShiftOp.ShrUVecI32x4;\n break;\n }\n }\n break;\n }\n }\n if (op == -1) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.i32, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.v128;\n return module.simd_shift(op, arg0, arg1);\n }\n case BuiltinSymbols.v128_and: // any_bitwise_binary(a: v128, b: v128) -> v128\n case BuiltinSymbols.v128_or:\n case BuiltinSymbols.v128_xor: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: BinaryOp = -1;\n switch (prototype.internalName) {\n default: assert(false);\n case BuiltinSymbols.v128_and: { op = BinaryOp.AndVec128; break; }\n case BuiltinSymbols.v128_or: { op = BinaryOp.OrVec128; break; }\n case BuiltinSymbols.v128_xor: { op = BinaryOp.XorVec128; break; }\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT);\n return module.binary(op, arg0, arg1);\n }\n case BuiltinSymbols.v128_not: { // any_bitwise_unary(a: v128) -> v128\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n return module.unary(UnaryOp.NotVec128, arg0);\n }\n case BuiltinSymbols.v128_bitselect: { // bitselect(v1: v128, v2: v128, c: v128) -> v128\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT);\n let arg2 = compiler.compileExpression(operands[2], Type.v128, Constraints.CONV_IMPLICIT);\n return module.simd_bitselect(arg0, arg1, arg2);\n }\n case BuiltinSymbols.v128_any_true: // any_test(a: v128) -> bool\n case BuiltinSymbols.v128_all_true: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.bool;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let op: UnaryOp = -1;\n switch (prototype.internalName) {\n default: assert(false);\n case BuiltinSymbols.v128_any_true: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = UnaryOp.AnyTrueVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = UnaryOp.AnyTrueVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.AnyTrueVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.AnyTrueVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.AnyTrueVecI64x2\n : UnaryOp.AnyTrueVecI32x4;\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_all_true: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = UnaryOp.AllTrueVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = UnaryOp.AllTrueVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.AllTrueVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.AllTrueVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.AllTrueVecI64x2\n : UnaryOp.AllTrueVecI32x4;\n break;\n }\n }\n break;\n }\n }\n if (op == -1) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.bool;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.bool;\n return module.unary(op, arg0);\n }\n\n // === Internal runtime =======================================================================\n\n case BuiltinSymbols.idof: {\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.u32;\n if (!type) return module.unreachable();\n let signatureReference = type.signatureReference;\n if (type.is(TypeFlags.REFERENCE) && signatureReference !== null) {\n return module.i32(signatureReference.id);\n }\n\n let classReference = type.classReference;\n if (!classReference || classReference.hasDecorator(DecoratorFlags.UNMANAGED)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n return module.unreachable();\n }\n return module.i32(classReference.id);\n }\n case BuiltinSymbols.visit_globals: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler) // cookie\n ) {\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.u32, Constraints.CONV_IMPLICIT);\n compiler.runtimeFeatures |= RuntimeFeatures.visitGlobals;\n compiler.currentType = Type.void;\n return module.call(BuiltinSymbols.visit_globals, [ arg0 ], NativeType.None);\n }\n case BuiltinSymbols.visit_members: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 2, reportNode, compiler) // ref, cookie\n ) {\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], compiler.options.usizeType, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.u32, Constraints.CONV_IMPLICIT);\n compiler.runtimeFeatures |= RuntimeFeatures.visitMembers;\n compiler.currentType = Type.void;\n return module.call(BuiltinSymbols.visit_members, [ arg0, arg1 ], NativeType.None);\n }\n }\n\n // try to defer inline asm to a concrete built-in\n {\n let expr = tryDeferASM(compiler, prototype, operands, reportNode);\n if (expr) {\n if (typeArguments) {\n compiler.error(\n DiagnosticCode.Type_0_is_not_generic,\n reportNode.typeArgumentsRange, prototype.internalName\n );\n }\n return expr;\n }\n }\n compiler.error(\n DiagnosticCode.Cannot_find_name_0,\n reportNode.expression.range, prototype.internalName\n );\n return module.unreachable();\n}\n\n/** Tries to defer an inline-assembler-like call to a built-in function. */\nfunction tryDeferASM(\n compiler: Compiler,\n prototype: FunctionPrototype,\n operands: Expression[],\n reportNode: CallExpression\n): ExpressionRef {\n /* tslint:disable:max-line-length */\n switch (prototype.internalName) {\n\n // TODO: Operators can't be just deferred (don't have a corresponding generic built-in)\n // add, sub, mul, div_s, div_u, rem_s, rem_u\n // and, or, xor, shl, shr_u, shr_s\n // eq, eqz, ne, lt_s, lt_u, le_s, le_u, gt_s, gt_u, ge_s, ge_u\n\n case BuiltinSymbols.i32_clz: return deferASM(BuiltinSymbols.clz, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_clz: return deferASM(BuiltinSymbols.clz, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.i32_ctz: return deferASM(BuiltinSymbols.ctz, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_ctz: return deferASM(BuiltinSymbols.ctz, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.i32_popcnt: return deferASM(BuiltinSymbols.popcnt, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_popcnt: return deferASM(BuiltinSymbols.popcnt, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.i32_rotl: return deferASM(BuiltinSymbols.rotl, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_rotl: return deferASM(BuiltinSymbols.rotl, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.i32_rotr: return deferASM(BuiltinSymbols.rotr, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_rotr: return deferASM(BuiltinSymbols.rotr, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.f32_abs: return deferASM(BuiltinSymbols.abs, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_abs: return deferASM(BuiltinSymbols.abs, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_max: return deferASM(BuiltinSymbols.max, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_max: return deferASM(BuiltinSymbols.max, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_min: return deferASM(BuiltinSymbols.min, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_min: return deferASM(BuiltinSymbols.min, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_ceil: return deferASM(BuiltinSymbols.ceil, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_ceil: return deferASM(BuiltinSymbols.ceil, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_floor: return deferASM(BuiltinSymbols.floor, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_floor: return deferASM(BuiltinSymbols.floor, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_copysign: return deferASM(BuiltinSymbols.copysign, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_copysign: return deferASM(BuiltinSymbols.copysign, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_nearest: return deferASM(BuiltinSymbols.nearest, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_nearest: return deferASM(BuiltinSymbols.nearest, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.i32_reinterpret_f32: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.i32, operands, Type.f32, reportNode);\n case BuiltinSymbols.i64_reinterpret_f64: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.i64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_reinterpret_i32: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.f32, operands, Type.i32, reportNode);\n case BuiltinSymbols.f64_reinterpret_i64: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.f64, operands, Type.i64, reportNode);\n case BuiltinSymbols.f32_sqrt: return deferASM(BuiltinSymbols.sqrt, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_sqrt: return deferASM(BuiltinSymbols.sqrt, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_trunc: return deferASM(BuiltinSymbols.trunc, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_trunc: return deferASM(BuiltinSymbols.trunc, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.i32_load8_s: return deferASM(BuiltinSymbols.load, compiler, Type.i8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_load8_u: return deferASM(BuiltinSymbols.load, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_load16_s: return deferASM(BuiltinSymbols.load, compiler, Type.i16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_load16_u: return deferASM(BuiltinSymbols.load, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_load: return deferASM(BuiltinSymbols.load, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_load8_s: return deferASM(BuiltinSymbols.load, compiler, Type.i8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load8_u: return deferASM(BuiltinSymbols.load, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load16_s: return deferASM(BuiltinSymbols.load, compiler, Type.i16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load16_u: return deferASM(BuiltinSymbols.load, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load32_s: return deferASM(BuiltinSymbols.load, compiler, Type.i32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load32_u: return deferASM(BuiltinSymbols.load, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load: return deferASM(BuiltinSymbols.load, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.f32_load: return deferASM(BuiltinSymbols.load, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_load: return deferASM(BuiltinSymbols.load, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.i32_store8: return deferASM(BuiltinSymbols.store, compiler, Type.i8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_store16: return deferASM(BuiltinSymbols.store, compiler, Type.i16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_store: return deferASM(BuiltinSymbols.store, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_store8: return deferASM(BuiltinSymbols.store, compiler, Type.i8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_store16: return deferASM(BuiltinSymbols.store, compiler, Type.i16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_store32: return deferASM(BuiltinSymbols.store, compiler, Type.i32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_store: return deferASM(BuiltinSymbols.store, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.f32_store: return deferASM(BuiltinSymbols.store, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_store: return deferASM(BuiltinSymbols.store, compiler, Type.f64, operands, Type.f64, reportNode);\n }\n if (compiler.options.hasFeature(Feature.THREADS)) {\n switch (prototype.internalName) {\n\n case BuiltinSymbols.i32_atomic_load8_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_load16_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_load: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_load8_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_load16_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_load32_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_load: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_store8: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_store16: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_store: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_store8: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_store16: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_store32: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_store: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_add: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_add: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_sub: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_sub: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_and: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_and: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_or: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_or: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_u_xor: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_u_xor: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_xor: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_xor: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_xchg: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_xchg: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_cmpxchg: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_cmpxchg: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_wait: return deferASM(BuiltinSymbols.atomic_wait, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_wait: return deferASM(BuiltinSymbols.atomic_wait, compiler, Type.i64, operands, Type.i32, reportNode);\n }\n }\n if (compiler.options.hasFeature(Feature.SIMD)) {\n switch (prototype.internalName) {\n\n case BuiltinSymbols.v128_load: return deferASM(BuiltinSymbols.load, compiler, Type.v128, operands, Type.v128, reportNode);\n case BuiltinSymbols.v128_store: return deferASM(BuiltinSymbols.store, compiler, Type.v128, operands, Type.void, reportNode);\n\n case BuiltinSymbols.i8x16_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_extract_lane_s: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i8, operands, Type.i8, reportNode);\n case BuiltinSymbols.i8x16_extract_lane_u: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.u8, operands, Type.u8, reportNode);\n case BuiltinSymbols.i8x16_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_add_saturate_s: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_add_saturate_u: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_sub_saturate_s: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_sub_saturate_u: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i8x16_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i8x16_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_lt_s: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_lt_u: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_le_s: return deferASM(BuiltinSymbols.v128_le, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_le_u: return deferASM(BuiltinSymbols.v128_le, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_gt_s: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_gt_u: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_ge_s: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_ge_u: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.u8, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.i16x8_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_extract_lane_s: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i16, operands, Type.i16, reportNode);\n case BuiltinSymbols.i16x8_extract_lane_u: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.u16, operands, Type.u16, reportNode);\n case BuiltinSymbols.i16x8_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_add_saturate_s: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_add_saturate_u: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_sub_saturate_s: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_sub_saturate_u: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i16x8_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i16x8_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_lt_s: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_lt_u: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_le_s: return deferASM(BuiltinSymbols.v128_le, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_le_u: return deferASM(BuiltinSymbols.v128_le, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_gt_s: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_gt_u: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_ge_s: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_ge_u: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.u16, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.i32x4_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32x4_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32x4_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32x4_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_lt_s: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_lt_u: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.u32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_le_s: return deferASM(BuiltinSymbols.v128_le, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_le_u: return deferASM(BuiltinSymbols.v128_le, compiler, Type.u32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_gt_s: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_gt_u: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.u32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_ge_s: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_ge_u: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.u32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_trunc_s_f32x4_sat: return deferASM(BuiltinSymbols.v128_trunc, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_trunc_u_f32x4_sat: return deferASM(BuiltinSymbols.v128_trunc, compiler, Type.u32, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.i64x2_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64x2_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i64, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64x2_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i64, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64x2_trunc_s_f64x2_sat: return deferASM(BuiltinSymbols.v128_trunc, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_trunc_u_f64x2_sat: return deferASM(BuiltinSymbols.v128_trunc, compiler, Type.u64, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.f32x4_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f32x4_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_div: return deferASM(BuiltinSymbols.v128_div, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_min: return deferASM(BuiltinSymbols.v128_min, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_max: return deferASM(BuiltinSymbols.v128_max, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_abs: return deferASM(BuiltinSymbols.v128_abs, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_sqrt: return deferASM(BuiltinSymbols.v128_sqrt, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_lt: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_le: return deferASM(BuiltinSymbols.v128_le, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_gt: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_ge: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_convert_s_i32x4: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_convert_u_i32x4: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.u32, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.f64x2_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f64x2_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_div: return deferASM(BuiltinSymbols.v128_div, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_min: return deferASM(BuiltinSymbols.v128_min, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_max: return deferASM(BuiltinSymbols.v128_max, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_abs: return deferASM(BuiltinSymbols.v128_abs, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_sqrt: return deferASM(BuiltinSymbols.v128_sqrt, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_lt: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_le: return deferASM(BuiltinSymbols.v128_le, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_gt: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_ge: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_convert_s_i64x2: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_convert_u_i64x2: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.u64, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.v8x16_shuffle: return deferASM(BuiltinSymbols.v128_shuffle, compiler, Type.i8, operands, Type.v128, reportNode);\n }\n }\n /* tslint:enable:max-line-length */\n return 0;\n}\n\n/** A helper for deferring inline-assembler-like calls to built-in functions. */\nfunction deferASM(\n name: string,\n compiler: Compiler,\n typeArgument: Type,\n operands: Expression[],\n contextualType: Type,\n reportNode: CallExpression\n): ExpressionRef {\n assert(compiler.program.elementsByName.has(name));\n var prototype = compiler.program.elementsByName.get(name)!;\n assert(prototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n return compileCall(\n compiler,\n prototype,\n [ typeArgument ],\n operands,\n contextualType,\n reportNode,\n /* isAsm */ true\n );\n}\n\n/** Compiles an abort wired to the conditionally imported 'abort' function. */\nexport function compileAbort(\n compiler: Compiler,\n message: Expression | null,\n reportNode: Node\n): ExpressionRef {\n var program = compiler.program;\n var module = compiler.module;\n\n var stringInstance = compiler.program.stringInstance;\n if (!stringInstance) return module.unreachable();\n\n var abortInstance = program.abortInstance;\n if (!(abortInstance && compiler.compileFunction(abortInstance))) return module.unreachable();\n\n var messageArg: ExpressionRef;\n if (message !== null) {\n // The message argument works much like an arm of an IF that does not become executed if the\n // assertion succeeds respectively is only being computed if the program actually crashes.\n // Hence, let's make it so that the autorelease is skipped at the end of the current block,\n // essentially ignoring the message GC-wise. Doesn't matter anyway on a crash.\n messageArg = compiler.compileExpression(message, stringInstance.type, Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN);\n } else {\n messageArg = stringInstance.type.toNativeZero(module);\n }\n\n var filenameArg = compiler.ensureStaticString(reportNode.range.source.normalizedPath);\n\n compiler.currentType = Type.void;\n return module.block(null, [\n module.call(\n abortInstance.internalName, [\n messageArg,\n filenameArg,\n module.i32(reportNode.range.line),\n module.i32(reportNode.range.column)\n ],\n NativeType.None\n ),\n module.unreachable()\n ]);\n}\n\n/** Compiles the `visit_globals` function. */\nexport function compileVisitGlobals(compiler: Compiler): void {\n var module = compiler.module;\n var exprs = new Array();\n var typeRef = compiler.ensureFunctionType([ Type.u32 ], Type.void); // cookie\n var nativeSizeType = compiler.options.nativeSizeType;\n var visitInstance = assert(compiler.program.visitInstance);\n\n compiler.compileFunction(visitInstance);\n\n for (let element of compiler.program.elementsByName.values()) {\n if (element.kind != ElementKind.GLOBAL) continue;\n let global = element;\n let classReference = global.type.classReference;\n if (\n global.is(CommonFlags.COMPILED) &&\n classReference !== null &&\n !classReference.hasDecorator(DecoratorFlags.UNMANAGED)\n ) {\n if (global.is(CommonFlags.INLINED)) {\n let value = global.constantIntegerValue;\n if (i64_low(value) || i64_high(value)) {\n exprs.push(\n module.call(visitInstance.internalName, [\n compiler.options.isWasm64\n ? module.i64(i64_low(value), i64_high(value))\n : module.i32(i64_low(value))\n ], NativeType.None)\n );\n }\n } else {\n exprs.push(\n module.if(\n module.local_tee(1,\n module.global_get(global.internalName, nativeSizeType)\n ),\n module.call(visitInstance.internalName, [\n module.local_get(1, nativeSizeType), // tempRef != null\n module.local_get(0, NativeType.I32) // cookie\n ], NativeType.None)\n )\n );\n }\n }\n }\n module.addFunction(BuiltinSymbols.visit_globals, typeRef, [ nativeSizeType ],\n exprs.length\n ? module.block(null, exprs)\n : module.nop()\n );\n}\n\n/** Compiles the `visit_members` function. */\nexport function compileVisitMembers(compiler: Compiler): void {\n var program = compiler.program;\n var module = compiler.module;\n var usizeType = program.options.usizeType;\n var nativeSizeType = usizeType.toNativeType();\n var nativeSizeSize = usizeType.byteSize;\n var ftype = compiler.ensureFunctionType([ usizeType, Type.i32 ], Type.void); // ref, cookie\n var managedClasses = program.managedClasses;\n var visitInstance = assert(program.visitInstance);\n var blocks = new Array();\n var relooper = Relooper.create(module);\n\n var outer = relooper.addBlockWithSwitch(\n module.nop(),\n module.load(nativeSizeSize, false,\n nativeSizeType == NativeType.I64\n ? module.binary(BinaryOp.SubI64,\n module.local_get(0, nativeSizeType),\n module.i64(8)\n )\n : module.binary(BinaryOp.SubI32,\n module.local_get(0, nativeSizeType),\n module.i32(8) // rtId is at -8\n ),\n NativeType.I32,\n 0\n )\n );\n\n var lastId = 0;\n for (let [id, instance] of managedClasses) {\n assert(instance.type.isManaged);\n assert(id == lastId++);\n\n let visitImpl: Element | null;\n let code = new Array();\n\n // if a library element, check if it implements a custom traversal function\n if (instance.isDeclaredInLibrary && (visitImpl = instance.lookupInSelf(\"__visit_impl\"))) {\n assert(visitImpl.kind == ElementKind.FUNCTION_PROTOTYPE);\n let visitFunc = program.resolver.resolveFunction(visitImpl, null);\n if (!visitFunc || !compiler.compileFunction(visitFunc)) {\n code.push(\n module.unreachable()\n );\n } else {\n let visitSig = visitFunc.signature;\n assert(\n visitSig.parameterTypes.length == 1 &&\n visitSig.parameterTypes[0] == Type.u32 &&\n visitSig.returnType == Type.void &&\n visitSig.thisType == instance.type\n );\n code.push(\n module.call(visitFunc.internalName, [\n module.local_get(0, nativeSizeType), // ref\n module.local_get(1, NativeType.I32) // cookie\n ], NativeType.None)\n );\n }\n\n // otherwise generate traversal logic for own fields\n } else {\n let members = instance.members;\n if (members) {\n for (let member of members.values()) {\n if (member.kind == ElementKind.FIELD) {\n if ((member).parent === instance) {\n let fieldType = (member).type;\n if (fieldType.isManaged) {\n let fieldOffset = (member).memoryOffset;\n assert(fieldOffset >= 0);\n code.push(\n // if ($2 = value) FIELDCLASS~traverse($2)\n module.if(\n module.local_tee(2,\n module.load(nativeSizeSize, false,\n module.local_get(0, nativeSizeType),\n nativeSizeType, fieldOffset\n )\n ),\n module.call(visitInstance.internalName, [\n module.local_get(2, nativeSizeType), // ref\n module.local_get(1, NativeType.I32) // cookie\n ], NativeType.None)\n )\n );\n }\n }\n }\n }\n }\n }\n if (!instance.base) code.push(module.return());\n let block = relooper.addBlock(\n flatten(module, code, NativeType.None)\n );\n relooper.addBranchForSwitch(outer, block, [ id ]);\n blocks.push(block);\n }\n for (let [id, instance] of managedClasses) {\n let base = instance.base;\n if (base) {\n relooper.addBranch(blocks[id], blocks[base.id]);\n }\n }\n blocks.push(\n relooper.addBlock(\n module.unreachable()\n )\n );\n relooper.addBranchForSwitch(outer, blocks[blocks.length - 1], []); // default\n compiler.compileFunction(visitInstance);\n module.addFunction(BuiltinSymbols.visit_members, ftype, [ nativeSizeType ], relooper.renderAndDispose(outer, 2));\n}\n\nfunction typeToRuntimeFlags(type: Type): TypeinfoFlags {\n var flags = TypeinfoFlags.VALUE_ALIGN_0 * (1 << type.alignLog2);\n if (type.is(TypeFlags.SIGNED)) flags |= TypeinfoFlags.VALUE_SIGNED;\n if (type.is(TypeFlags.FLOAT)) flags |= TypeinfoFlags.VALUE_FLOAT;\n if (type.is(TypeFlags.NULLABLE)) flags |= TypeinfoFlags.VALUE_NULLABLE;\n if (type.isManaged) flags |= TypeinfoFlags.VALUE_MANAGED;\n return flags / TypeinfoFlags.VALUE_ALIGN_0;\n}\n\n/** Compiles runtime type information for use by stdlib. */\nexport function compileRTTI(compiler: Compiler): void {\n var program = compiler.program;\n var module = compiler.module;\n var managedClasses = program.managedClasses;\n var count = managedClasses.size;\n var size = 4 + 8 * count;\n var data = new Uint8Array(size);\n writeI32(count, data, 0);\n var off = 4;\n var abvInstance = program.arrayBufferViewInstance;\n var abvPrototype = abvInstance.prototype;\n var arrayPrototype = program.arrayPrototype;\n var setPrototype = program.setPrototype;\n var mapPrototype = program.mapPrototype;\n var lastId = 0;\n for (let [id, instance] of managedClasses) {\n assert(id == lastId++);\n let flags: TypeinfoFlags = 0;\n if (instance.isAcyclic) flags |= TypeinfoFlags.ACYCLIC;\n if (instance !== abvInstance && instance.extends(abvPrototype)) {\n let valueType = instance.getArrayValueType();\n flags |= TypeinfoFlags.ARRAYBUFFERVIEW;\n if (instance.extends(arrayPrototype)) flags |= TypeinfoFlags.ARRAY;\n flags |= TypeinfoFlags.VALUE_ALIGN_0 * typeToRuntimeFlags(valueType);\n } else if (instance.extends(setPrototype)) {\n let typeArguments = assert(instance.getTypeArgumentsTo(setPrototype));\n assert(typeArguments.length == 1);\n flags |= TypeinfoFlags.SET;\n flags |= TypeinfoFlags.VALUE_ALIGN_0 * typeToRuntimeFlags(typeArguments[0]);\n } else if (instance.extends(mapPrototype)) {\n let typeArguments = assert(instance.getTypeArgumentsTo(mapPrototype));\n assert(typeArguments.length == 2);\n flags |= TypeinfoFlags.MAP;\n flags |= TypeinfoFlags.KEY_ALIGN_0 * typeToRuntimeFlags(typeArguments[0]);\n flags |= TypeinfoFlags.VALUE_ALIGN_0 * typeToRuntimeFlags(typeArguments[1]);\n }\n writeI32(flags, data, off); off += 4;\n instance.rttiFlags = flags;\n let base = instance.base;\n writeI32(base ? base.id : 0, data, off); off += 4;\n }\n assert(off == size);\n var usizeType = program.options.usizeType;\n var segment = compiler.addMemorySegment(data);\n if (usizeType.size == 8) {\n let offset = segment.offset;\n module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I64, false, module.i64(i64_low(offset), i64_high(offset)));\n } else {\n module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I32, false, module.i32(i64_low(segment.offset)));\n }\n}\n\n// Helpers\n\n/** Evaluates the constant type of a type argument *or* expression. */\nfunction evaluateConstantType(\n compiler: Compiler,\n typeArguments: Type[] | null,\n operands: Expression[],\n reportNode: CallExpression\n): Type | null {\n if (operands.length == 0) { // requires type argument\n if (!typeArguments || typeArguments.length != 1) {\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.typeArgumentsRange, \"1\", typeArguments ? typeArguments.length.toString(10) : \"0\"\n );\n return null;\n }\n return typeArguments[0];\n }\n if (operands.length == 1) { // optional type argument\n if (typeArguments !== null && typeArguments.length) {\n if (typeArguments.length > 1) {\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.typeArgumentsRange, \"1\", typeArguments.length.toString(10)\n );\n return null;\n }\n compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT);\n } else {\n compiler.compileExpression(operands[0], Type.auto);\n }\n return compiler.currentType;\n }\n if (typeArguments && typeArguments.length > 1) {\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.typeArgumentsRange, \"1\", typeArguments.length.toString(10)\n );\n }\n compiler.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n reportNode.argumentsRange, \"1\", operands.length.toString(10)\n );\n return null;\n}\n\n/** Evaluates a compile-time constant immediate offset argument.*/\nfunction evaluateImmediateOffset(expression: Expression, compiler: Compiler): i32 {\n var expr: ExpressionRef;\n var value: i32;\n if (compiler.options.isWasm64) {\n expr = compiler.precomputeExpression(expression, Type.usize64, Constraints.CONV_IMPLICIT);\n if (\n getExpressionId(expr) != ExpressionId.Const ||\n getExpressionType(expr) != NativeType.I64 ||\n getConstValueI64High(expr) != 0 ||\n (value = getConstValueI64Low(expr)) < 0\n ) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n expression.range\n );\n value = -1;\n }\n } else {\n expr = compiler.precomputeExpression(expression, Type.usize32, Constraints.CONV_IMPLICIT);\n if (\n getExpressionId(expr) != ExpressionId.Const ||\n getExpressionType(expr) != NativeType.I32 ||\n (value = getConstValueI32(expr)) < 0\n ) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n expression.range\n );\n value = -1;\n }\n }\n return value;\n}\n\n/** Checks a call with a single required type argument. Returns `1` on error. */\nfunction checkTypeRequired(\n typeArguments: Type[] | null,\n reportNode: CallExpression,\n compiler: Compiler,\n setCurrentTypeOnError: bool = false\n): i32 {\n if (typeArguments) {\n let numTypeArguments = typeArguments.length;\n if (numTypeArguments == 1) return 0;\n assert(numTypeArguments); // invalid if 0, must not be set at all instead\n if (setCurrentTypeOnError) compiler.currentType = typeArguments[0];\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.typeArgumentsRange, \"1\", numTypeArguments.toString()\n );\n } else {\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.range, \"1\", \"0\"\n );\n }\n return 1;\n}\n\n/** Checks a call with a single optional type argument. Returns `1` on error. */\nfunction checkTypeOptional(\n typeArguments: Type[] | null,\n reportNode: CallExpression,\n compiler: Compiler,\n setCurrentTypeOnError: bool = false\n): i32 {\n if (typeArguments) {\n let numTypeArguments = typeArguments.length;\n if (numTypeArguments == 1) return 0;\n assert(numTypeArguments); // invalid if 0, must not be set at all instead\n if (setCurrentTypeOnError) compiler.currentType = typeArguments[0];\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.typeArgumentsRange, \"1\", numTypeArguments.toString()\n );\n return 1;\n }\n return 0;\n}\n\n/** Checks a call that is not generic. Returns `1` on error. */\nfunction checkTypeAbsent(\n typeArguments: Type[] | null,\n reportNode: CallExpression,\n prototype: FunctionPrototype\n): i32 {\n if (typeArguments) {\n prototype.program.error(\n DiagnosticCode.Type_0_is_not_generic,\n reportNode.typeArgumentsRange, prototype.internalName\n );\n return 1;\n }\n return 0;\n}\n\n/** Checks a call that requires a fixed number of arguments. Returns `1` on error. */\nfunction checkArgsRequired(\n operands: Expression[],\n expected: i32,\n reportNode: CallExpression,\n compiler: Compiler\n): i32 {\n if (operands.length != expected) {\n compiler.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n reportNode.range, expected.toString(), operands.length.toString()\n );\n return 1;\n }\n return 0;\n}\n\n/** Checks a call that requires a variable number of arguments. Returns `1` on error. */\nfunction checkArgsOptional(\n operands: Expression[],\n expectedMinimum: i32,\n expectedMaximum: i32,\n reportNode: CallExpression,\n compiler: Compiler\n): i32 {\n var numOperands = operands.length;\n if (numOperands < expectedMinimum) {\n compiler.error(\n DiagnosticCode.Expected_at_least_0_arguments_but_got_1,\n reportNode.range, expectedMinimum.toString(), numOperands.toString()\n );\n return 1;\n } else if (numOperands > expectedMaximum) {\n compiler.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n reportNode.range, expectedMaximum.toString(), numOperands.toString()\n );\n return 1;\n }\n return 0;\n}\n","/**\n * A decompiler that generates low-level AssemblyScript from WebAssembly binaries.\n * @module decompiler\n *//***/\n\nimport {\n Module,\n NativeType,\n ExpressionId,\n UnaryOp,\n BinaryOp,\n HostOp,\n FunctionRef,\n ExpressionRef,\n Index,\n getFunctionName,\n getFunctionBody,\n getFunctionParamCount,\n getFunctionParamType,\n getFunctionResultType,\n getExpressionId,\n getExpressionType,\n getBlockName,\n getBlockChildCount,\n getBlockChild,\n getIfCondition,\n getIfTrue,\n getIfFalse,\n getLoopName,\n getLoopBody,\n getBreakName,\n getBreakCondition,\n getLocalGetIndex,\n getLocalSetIndex,\n getLocalSetValue,\n getLoadOffset,\n getLoadPtr,\n getStoreOffset,\n getStorePtr,\n getStoreValue,\n getConstValueI32,\n getConstValueI64Low,\n getConstValueI64High,\n getConstValueF32,\n getConstValueF64,\n getUnaryOp,\n getUnaryValue,\n getBinaryOp,\n getBinaryLeft,\n getBinaryRight,\n getSelectThen,\n getSelectElse,\n getSelectCondition,\n getDropValue,\n getReturnValue,\n getHostOp,\n getHostOperand\n} from \"./module\";\n\n// TODO :-)\n\nexport class Decompiler {\n\n static decompile(module: Module): string {\n var decompiler = new Decompiler();\n decompiler.decompile(module);\n return decompiler.finish();\n }\n\n text: string[] = [];\n functionId: i32 = 0;\n\n constructor() { }\n\n /** Decompiles a module to an AST that can then be serialized. */\n decompile(module: Module): void {\n throw new Error(\"not implemented\");\n }\n\n decompileFunction(func: FunctionRef): void {\n var name = getFunctionName(func) || \"$\" + this.functionId.toString(10);\n var body = getFunctionBody(func);\n this.push(\"function \");\n this.push(name);\n this.push(\"(\");\n for (let i: Index = 0, k: Index = getFunctionParamCount(func); i < k; ++i) {\n if (i > 0) this.push(\", \");\n this.push(\"$\");\n this.push(i.toString(10));\n this.push(\": \");\n this.push(nativeTypeToType(getFunctionParamType(func, i)));\n }\n this.push(\"): \");\n this.push(nativeTypeToType(getFunctionResultType(func)));\n this.push(\" \");\n if (getExpressionId(body) != ExpressionId.Block) {\n this.push(\"{\\n\");\n }\n this.decompileExpression(body);\n if (getExpressionId(body) != ExpressionId.Block) {\n this.push(\"\\n}\\n\");\n }\n ++this.functionId;\n }\n\n decompileExpression(expr: ExpressionRef): void {\n var id = getExpressionId(expr);\n var type = getExpressionType(expr);\n\n var nested: ExpressionRef;\n var string: string | null;\n var i: Index, k: Index;\n\n switch (id) {\n case ExpressionId.Block: { // TODO: magic\n if ((string = getBlockName(expr)) != null) {\n this.push(string);\n this.push(\": \");\n }\n this.push(\"{\\n\");\n k = getBlockChildCount(expr);\n for (i = 0; i < k; ++i) {\n this.decompileExpression(getBlockChild(expr, i));\n }\n this.push(\"}\\n\");\n return;\n }\n case ExpressionId.If: {\n if (type == NativeType.None) {\n this.push(\"if (\");\n this.decompileExpression(getIfCondition(expr));\n this.push(\") \");\n this.decompileExpression(getIfTrue(expr));\n if (nested = getIfFalse(expr)) {\n this.push(\" else \");\n this.decompileExpression(nested);\n }\n } else {\n this.decompileExpression(getIfCondition(expr));\n this.push(\" ? \");\n this.decompileExpression(getIfTrue(expr));\n this.push(\" : \");\n this.decompileExpression(getIfFalse(expr));\n }\n return;\n }\n case ExpressionId.Loop: {\n if ((string = getLoopName(expr)) != null) {\n this.push(string);\n this.push(\": \");\n }\n this.push(\"do \");\n this.decompileExpression(getLoopBody(expr));\n this.push(\"while (0);\\n\");\n }\n case ExpressionId.Break: {\n if (nested = getBreakCondition(expr)) {\n this.push(\"if (\");\n this.decompileExpression(nested);\n this.push(\") \");\n }\n if ((string = getBreakName(expr)) != null) {\n this.push(\"break \");\n this.push(string);\n this.push(\";\\n\");\n } else {\n this.push(\"break;\\n\");\n }\n return;\n }\n case ExpressionId.Switch:\n case ExpressionId.Call:\n case ExpressionId.CallIndirect: {\n throw new Error(\"not implemented\");\n }\n case ExpressionId.LocalGet: {\n this.push(\"$\");\n this.push(getLocalGetIndex(expr).toString(10));\n return;\n }\n case ExpressionId.LocalSet: {\n this.push(\"$\");\n this.push(getLocalSetIndex(expr).toString(10));\n this.push(\" = \");\n this.decompileExpression(getLocalSetValue(expr));\n return;\n }\n case ExpressionId.GlobalGet:\n case ExpressionId.GlobalSet: {\n throw new Error(\"not implemented\");\n }\n case ExpressionId.Load: {\n this.push(\"load<\");\n this.push(nativeTypeToType(type));\n this.push(\">(\");\n this.push(getLoadOffset(expr).toString(10));\n this.push(\" + \");\n this.decompileExpression(getLoadPtr(expr));\n this.push(\")\");\n return;\n }\n case ExpressionId.Store: {\n this.push(\"store<\");\n this.push(nativeTypeToType(type));\n this.push(\">(\");\n this.push(getStoreOffset(expr).toString(10));\n this.push(\" + \");\n this.decompileExpression(getStorePtr(expr));\n this.push(\", \");\n this.decompileExpression(getStoreValue(expr));\n this.push(\")\");\n return;\n }\n case ExpressionId.Const: {\n switch (type) {\n case NativeType.I32: {\n this.push(getConstValueI32(expr).toString(10));\n return;\n }\n case NativeType.I64: {\n this.push(\n i64_to_string(\n i64_new(\n getConstValueI64Low(expr),\n getConstValueI64High(expr)\n )\n )\n );\n return;\n }\n case NativeType.F32: {\n this.push(getConstValueF32(expr).toString(10));\n return;\n }\n case NativeType.F64: {\n this.push(getConstValueF64(expr).toString(10));\n return;\n }\n }\n break;\n }\n case ExpressionId.Unary: {\n switch (getUnaryOp(expr)) {\n case UnaryOp.ClzI32: {\n this.push(\"clz(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.CtzI32: {\n this.push(\"ctz(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.PopcntI32: {\n this.push(\"popcnt(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.NegF32:\n case UnaryOp.NegF64: {\n this.push(\"-\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.AbsF32: {\n this.push(\"abs(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.CeilF32: {\n this.push(\"ceil(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.FloorF32: {\n this.push(\"floor(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.TruncF32: {\n this.push(\"trunc(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.NearestF32: {\n this.push(\"nearest(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.SqrtF32: {\n this.push(\"sqrt(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.EqzI32:\n case UnaryOp.EqzI64: {\n this.push(\"!\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ClzI64: {\n this.push(\"clz(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.CtzI64: {\n this.push(\"ctz(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.PopcntI64: {\n this.push(\"popcnt(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.AbsF64: {\n this.push(\"abs(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.CeilF64: {\n this.push(\"ceil(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.FloorF64: {\n this.push(\"floor(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.TruncF64: {\n this.push(\"trunc(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.NearestF64: {\n this.push(\"nearest(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.SqrtF64: {\n this.push(\"sqrt(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.ExtendI32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ExtendU32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.WrapI64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF32ToI32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF32ToI64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF32ToU32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF32ToU64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF64ToI32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF64ToI64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF64ToU32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF64ToU64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ReinterpretF32: {\n this.push(\"reinterpret(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.ReinterpretF64: {\n this.push(\"reinterpret(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.ConvertI32ToF32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertI32ToF64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertU32ToF32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertU32ToF64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertI64ToF32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertI64ToF64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertU64ToF32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertU64ToF64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.PromoteF32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.DemoteF64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ReinterpretI32: {\n this.push(\"reinterpret(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.ReinterpretI64: {\n this.push(\"reinterpret(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n }\n break;\n }\n case ExpressionId.Binary: { // TODO: precedence\n switch (getBinaryOp(expr)) {\n case BinaryOp.AddI32:\n case BinaryOp.AddI64:\n case BinaryOp.AddF32:\n case BinaryOp.AddF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" + \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.SubI32:\n case BinaryOp.SubI64:\n case BinaryOp.SubF32:\n case BinaryOp.SubF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" - \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.MulI32:\n case BinaryOp.MulI64:\n case BinaryOp.MulF32:\n case BinaryOp.MulF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" * \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.DivI32:\n case BinaryOp.DivI64:\n case BinaryOp.DivF32:\n case BinaryOp.DivF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" / \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.DivU32: {\n this.push(\"(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" / \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.RemI32:\n case BinaryOp.RemI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" % \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.RemU32: {\n this.push(\"(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" / \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.AndI32:\n case BinaryOp.AndI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" & \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.OrI32:\n case BinaryOp.OrI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" | \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.XorI32:\n case BinaryOp.XorI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" ^ \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.ShlI32:\n case BinaryOp.ShlI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" << \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.ShrU32:\n case BinaryOp.ShrU64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" >>> \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.ShrI32:\n case BinaryOp.ShrI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" >> \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.RotlI32: {\n this.push(\"rotl(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.RotrI32: {\n this.push(\"rotr(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.EqI32:\n case BinaryOp.EqI64:\n case BinaryOp.EqF32:\n case BinaryOp.EqF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" == \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.NeI32:\n case BinaryOp.NeI64:\n case BinaryOp.NeF32:\n case BinaryOp.NeF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" != \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.LtI32:\n case BinaryOp.LtI64:\n case BinaryOp.LtF32:\n case BinaryOp.LtF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" < \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.LtU32: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" < \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.LeI32:\n case BinaryOp.LeI64:\n case BinaryOp.LeF32:\n case BinaryOp.LeF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" <= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.LeU32: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" <= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GtI32:\n case BinaryOp.GtI64:\n case BinaryOp.GtF32:\n case BinaryOp.GtF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" > \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GtU32: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" > \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GeI32:\n case BinaryOp.GeI64:\n case BinaryOp.GeF32:\n case BinaryOp.GeF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" >= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GeU32: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" >= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.DivU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" / \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.RemU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" % \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.RotlI64: {\n this.push(\"rotl(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.RotrI64: {\n this.push(\"rotr(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.LtU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" < \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.LeU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" <= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GtU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" > \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GeU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" >= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.CopysignF32: {\n this.push(\"copysign(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.MinF32: {\n this.push(\"min(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.MaxF32: {\n this.push(\"max(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.CopysignF64: {\n this.push(\"copysign(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.MinF64: {\n this.push(\"min(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.MaxF64: {\n this.push(\"max(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n }\n return;\n }\n case ExpressionId.Select: {\n this.push(\"select<\");\n this.push(nativeTypeToType(type));\n this.push(\">(\");\n this.decompileExpression(getSelectThen(expr));\n this.push(\", \");\n this.decompileExpression(getSelectElse(expr));\n this.push(\", \");\n this.decompileExpression(getSelectCondition(expr));\n this.push(\")\");\n return;\n }\n case ExpressionId.Drop: {\n this.decompileExpression(getDropValue(expr));\n this.push(\";\\n\");\n return;\n }\n case ExpressionId.Return: {\n if (nested = getReturnValue(expr)) {\n this.push(\"return \");\n this.decompileExpression(nested);\n this.push(\";\\n\");\n } else {\n this.push(\"return;\\n\");\n }\n return;\n }\n case ExpressionId.Host: {\n switch (getHostOp(expr)) {\n case HostOp.MemorySize: {\n this.push(\"memory.size()\");\n return;\n }\n case HostOp.MemoryGrow: {\n this.push(\"memory.grow(\");\n this.decompileExpression(getHostOperand(expr, 0));\n this.push(\")\");\n return;\n }\n }\n break;\n }\n case ExpressionId.Nop: {\n this.push(\";\\n\");\n return;\n }\n case ExpressionId.Unreachable: {\n this.push(\"unreachable()\");\n return;\n }\n case ExpressionId.AtomicCmpxchg:\n case ExpressionId.AtomicRMW:\n case ExpressionId.AtomicWait:\n case ExpressionId.AtomicNotify:\n }\n throw new Error(\"not implemented\");\n }\n\n private push(text: string): void {\n // mostly here so we can add debugging if necessary\n this.text.push(text);\n }\n\n finish(): string {\n var ret = this.text.join(\"\");\n this.text = [];\n return ret;\n }\n}\n\nfunction nativeTypeToType(type: NativeType): string {\n switch (type) {\n case NativeType.None: return \"void\";\n case NativeType.I32: return \"i32\";\n case NativeType.I64: return \"i64\";\n case NativeType.F32: return \"f32\";\n case NativeType.F64: return \"f64\";\n case NativeType.V128: return \"v128\";\n case NativeType.Unreachable: throw new Error(\"unreachable type\");\n case NativeType.Auto: throw new Error(\"auto type\");\n default: throw new Error(\"unexpected type\");\n }\n}\n","/**\n * Definition builders for WebIDL and TypeScript.\n * @module definitions\n *//***/\n\n import {\n CommonFlags\n} from \"./common\";\n\nimport {\n Program,\n Element,\n ElementKind,\n Global,\n Enum,\n EnumValue,\n Field,\n Function,\n FunctionPrototype,\n Class,\n ClassPrototype,\n Namespace,\n ConstantValueKind,\n Interface,\n Property,\n PropertyPrototype,\n File\n} from \"./program\";\n\nimport {\n Type,\n TypeKind\n} from \"./types\";\n\nimport {\n SourceKind\n } from \"./ast\";\n\nimport {\n indent\n} from \"./util\";\n\n/** Walker base class. */\nabstract class ExportsWalker {\n\n /** Program reference. */\n program: Program;\n /** Whether to include private members */\n includePrivate: bool;\n /** Already seen elements. */\n seen: Map = new Map();\n\n /** Constructs a new Element walker. */\n constructor(program: Program, includePrivate: bool = false) {\n this.program = program;\n this.includePrivate;\n }\n\n /** Walks all elements and calls the respective handlers. */\n walk(): void {\n for (let file of this.program.filesByName.values()) {\n if (file.source.sourceKind == SourceKind.USER_ENTRY) this.visitFile(file);\n }\n }\n\n /** Visits all exported elements of a file. */\n visitFile(file: File): void {\n var members = file.exports;\n if (members) {\n for (let [name, member] of members) this.visitElement(name, member);\n }\n var exportsStar = file.exportsStar;\n if (exportsStar) {\n for (let exportStar of exportsStar) this.visitFile(exportStar);\n }\n }\n\n /** Visits an element.*/\n visitElement(name: string, element: Element): void {\n if (element.is(CommonFlags.PRIVATE) && !this.includePrivate) return;\n var seen = this.seen;\n if (seen.has(element)) {\n this.visitAlias(name, element, seen.get(element));\n return;\n }\n seen.set(element, name);\n switch (element.kind) {\n case ElementKind.GLOBAL: {\n if (element.is(CommonFlags.COMPILED)) this.visitGlobal(name, element);\n break;\n }\n case ElementKind.ENUM: {\n if (element.is(CommonFlags.COMPILED)) this.visitEnum(name, element);\n break;\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n this.visitFunctionInstances(name, element);\n break;\n }\n case ElementKind.CLASS_PROTOTYPE: {\n this.visitClassInstances(name, element);\n break;\n }\n case ElementKind.FIELD: {\n if ((element).is(CommonFlags.COMPILED)) this.visitField(name, element);\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n this.visitPropertyInstances(name, element);\n break;\n }\n case ElementKind.PROPERTY: {\n let prop = element;\n let getter = prop.getterInstance;\n if (getter) this.visitFunction(name, getter);\n let setter = prop.setterInstance;\n if (setter) this.visitFunction(name, setter);\n break;\n }\n case ElementKind.NAMESPACE: {\n if (hasCompiledMember(element)) this.visitNamespace(name, element);\n break;\n }\n case ElementKind.TYPEDEFINITION: break;\n default: assert(false);\n }\n }\n\n private visitFunctionInstances(name: string, element: FunctionPrototype): void {\n var instances = element.instances;\n if (instances) {\n for (let instance of instances.values()) {\n if (instance.is(CommonFlags.COMPILED)) this.visitFunction(name, instance);\n }\n }\n }\n\n private visitClassInstances(name: string, element: ClassPrototype): void {\n var instances = element.instances;\n if (instances) {\n for (let instance of instances.values()) {\n if (instance.is(CommonFlags.COMPILED)) this.visitClass(name, instance);\n }\n }\n }\n\n private visitPropertyInstances(name: string, element: PropertyPrototype): void {\n // var instances = element.instances;\n // if (instances) {\n // for (let instance of instances.values()) {\n // if (instance.is(CommonFlags.COMPILED)) this.visitProperty(instance);\n // }\n // }\n assert(false);\n }\n\n abstract visitGlobal(name: string, element: Global): void;\n abstract visitEnum(name: string, element: Enum): void;\n abstract visitFunction(name: string, element: Function): void;\n abstract visitClass(name: string, element: Class): void;\n abstract visitInterface(name: string, element: Interface): void;\n abstract visitField(name: string, element: Field): void;\n abstract visitNamespace(name: string, element: Element): void;\n abstract visitAlias(name: string, element: Element, originalName: string): void;\n}\n\n/** A WebIDL definitions builder. */\nexport class IDLBuilder extends ExportsWalker {\n\n /** Builds WebIDL definitions for the specified program. */\n static build(program: Program): string {\n return new IDLBuilder(program).build();\n }\n\n private sb: string[] = [];\n private indentLevel: i32 = 0;\n\n /** Constructs a new WebIDL builder. */\n constructor(program: Program, includePrivate: bool = false) {\n super(program, includePrivate);\n }\n\n visitGlobal(name: string, element: Global): void {\n var sb = this.sb;\n var isConst = element.is(CommonFlags.INLINED);\n indent(sb, this.indentLevel);\n if (isConst) sb.push(\"const \");\n sb.push(this.typeToString(element.type));\n sb.push(\" \");\n sb.push(name);\n if (isConst) {\n switch (element.constantValueKind) {\n case ConstantValueKind.INTEGER: {\n sb.push(\" = \");\n sb.push(i64_to_string(element.constantIntegerValue));\n break;\n }\n case ConstantValueKind.FLOAT: {\n sb.push(\" = \");\n sb.push(element.constantFloatValue.toString());\n break;\n }\n default: assert(false);\n }\n }\n sb.push(\";\\n\");\n }\n\n visitEnum(name: string, element: Enum): void {\n var sb = this.sb;\n indent(sb, this.indentLevel++);\n sb.push(\"interface \");\n sb.push(name);\n sb.push(\" {\\n\");\n var members = element.members;\n if (members) {\n for (let [name, member] of members) {\n if (member.kind == ElementKind.ENUMVALUE) {\n let isConst = (member).is(CommonFlags.INLINED);\n indent(sb, this.indentLevel);\n if (isConst) sb.push(\"const \");\n else sb.push(\"readonly \");\n sb.push(\"unsigned long \");\n sb.push(name);\n if (isConst) {\n sb.push(\" = \");\n assert((member).constantValueKind == ConstantValueKind.INTEGER);\n sb.push(i64_low((member).constantIntegerValue).toString(10));\n }\n sb.push(\";\\n\");\n }\n }\n for (let member of members.values()) {\n if (member.kind != ElementKind.ENUMVALUE) this.visitElement(member.name, member);\n }\n }\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n\n visitFunction(name: string, element: Function): void {\n var sb = this.sb;\n var signature = element.signature;\n indent(sb, this.indentLevel);\n sb.push(this.typeToString(signature.returnType));\n sb.push(\" \");\n sb.push(name);\n sb.push(\"(\");\n var parameters = signature.parameterTypes;\n var numParameters = parameters.length;\n // var requiredParameters = signature.requiredParameters;\n for (let i = 0; i < numParameters; ++i) {\n if (i) sb.push(\", \");\n // if (i >= requiredParameters) sb.push(\"optional \");\n sb.push(this.typeToString(parameters[i]));\n sb.push(\" \");\n sb.push(signature.getParameterName(i));\n }\n sb.push(\");\\n\");\n var members = element.members;\n if (members && members.size) {\n indent(sb, this.indentLevel);\n sb.push(\"interface \");\n sb.push(element.name);\n sb.push(\" {\\n\");\n for (let member of members.values()) this.visitElement(member.name, member);\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n }\n\n visitClass(name: string, element: Class): void {\n var sb = this.sb;\n indent(sb, this.indentLevel++);\n sb.push(\"interface \");\n sb.push(name);\n sb.push(\" {\\n\");\n // TODO\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n\n visitInterface(name: string, element: Interface): void {\n this.visitClass(name, element);\n }\n\n visitField(name: string, element: Field): void {\n // TODO\n }\n\n visitNamespace(name: string, element: Namespace): void {\n var sb = this.sb;\n indent(sb, this.indentLevel++);\n sb.push(\"interface \");\n sb.push(name);\n sb.push(\" {\\n\");\n var members = element.members;\n if (members) {\n for (let member of members.values()) this.visitElement(member.name, member);\n }\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n\n visitAlias(name: string, element: Element, originalName: string): void {\n // TODO\n }\n\n typeToString(type: Type): string {\n switch (type.kind) {\n case TypeKind.I8: return \"byte\";\n case TypeKind.I16: return \"short\";\n case TypeKind.I32: return \"long\";\n case TypeKind.I64: return \"long long\";\n case TypeKind.ISIZE: return this.program.options.isWasm64 ? \"long long\" : \"long\";\n case TypeKind.U8: return \"octet\";\n case TypeKind.U16: return \"unsigned short\";\n case TypeKind.U32: return \"unsigned long\";\n // ^ TODO: function types\n case TypeKind.U64: return \"unsigned long long\";\n case TypeKind.USIZE: return this.program.options.isWasm64 ? \"unsigned long long\" : \"unsigned long\";\n // ^ TODO: class types\n case TypeKind.BOOL: return \"boolean\";\n case TypeKind.F32: return \"unrestricted float\";\n case TypeKind.F64: return \"unrestricted double\";\n case TypeKind.VOID: return \"void\";\n default: {\n assert(false);\n return \"\";\n }\n }\n }\n\n build(): string {\n var sb = this.sb;\n sb.push(\"interface ASModule {\\n\");\n ++this.indentLevel;\n this.walk();\n --this.indentLevel;\n sb.push(\"}\\n\");\n return sb.join(\"\");\n }\n}\n\n/** A TypeScript definitions builder. */\nexport class TSDBuilder extends ExportsWalker {\n\n /** Builds TypeScript definitions for the specified program. */\n static build(program: Program): string {\n return new TSDBuilder(program).build();\n }\n\n private sb: string[] = [];\n private indentLevel: i32 = 0;\n private unknown: Set = new Set();\n\n /** Constructs a new WebIDL builder. */\n constructor(program: Program, includePrivate: bool = false) {\n super(program, includePrivate);\n }\n\n visitGlobal(name: string, element: Global): void {\n var sb = this.sb;\n var isConst = element.is(CommonFlags.INLINED);\n indent(sb, this.indentLevel);\n if (element.is(CommonFlags.STATIC)) {\n if (isConst) sb.push(\"static readonly \");\n else sb.push(\"static \");\n } else {\n if (isConst) sb.push(\"export const \");\n else sb.push(\"export var \");\n }\n sb.push(name);\n sb.push(\": \");\n sb.push(this.typeToString(element.type));\n sb.push(\";\\n\");\n this.visitNamespace(name, element);\n }\n\n visitEnum(name: string, element: Enum): void {\n var sb = this.sb;\n indent(sb, this.indentLevel++);\n sb.push(\"export enum \");\n sb.push(name);\n sb.push(\" {\\n\");\n var members = element.members;\n if (members) {\n let numMembers = members.size;\n for (let [name, member] of members) {\n if (member.kind == ElementKind.ENUMVALUE) {\n indent(sb, this.indentLevel);\n sb.push(name);\n if (member.is(CommonFlags.INLINED)) {\n sb.push(\" = \");\n assert((member).constantValueKind == ConstantValueKind.INTEGER);\n sb.push(i64_low((member).constantIntegerValue).toString(10));\n }\n sb.push(\",\\n\");\n --numMembers;\n }\n }\n if (numMembers) this.visitNamespace(name, element);\n }\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n\n visitFunction(name: string, element: Function): void {\n if (element.isAny(CommonFlags.PRIVATE | CommonFlags.SET)) return;\n var sb = this.sb;\n var signature = element.signature;\n indent(sb, this.indentLevel);\n if (element.is(CommonFlags.PROTECTED)) sb.push(\"protected \");\n if (element.is(CommonFlags.STATIC)) sb.push(\"static \");\n if (element.is(CommonFlags.GET)) {\n sb.push(\"get \");\n sb.push(name); // 'get:funcName' internally\n sb.push(\"(): \");\n sb.push(this.typeToString(signature.returnType));\n sb.push(\";\\n\");\n return;\n } else {\n if (!element.isAny(CommonFlags.STATIC | CommonFlags.INSTANCE)) sb.push(\"export function \");\n sb.push(name);\n }\n sb.push(\"(\");\n var parameters = signature.parameterTypes;\n var numParameters = parameters.length;\n // var requiredParameters = signature.requiredParameters;\n for (let i = 0; i < numParameters; ++i) {\n if (i) sb.push(\", \");\n // if (i >= requiredParameters) sb.push(\"optional \");\n sb.push(signature.getParameterName(i));\n sb.push(\": \");\n sb.push(this.typeToString(parameters[i]));\n }\n if (element.isAny(CommonFlags.CONSTRUCTOR | CommonFlags.SET)) {\n sb.push(\")\");\n } else {\n sb.push(\"): \");\n sb.push(this.typeToString(signature.returnType));\n }\n sb.push(\";\\n\");\n this.visitNamespace(name, element);\n }\n\n visitClass(name: string, element: Class): void {\n var sb = this.sb;\n var isInterface = element.kind == ElementKind.INTERFACE;\n indent(sb, this.indentLevel++);\n if (isInterface) {\n sb.push(\"export interface \");\n } else {\n if (element.is(CommonFlags.ABSTRACT)) sb.push(\"abstract \");\n sb.push(\"export class \");\n }\n sb.push(name);\n // var base = element.base;\n // if (base && base.is(CommonFlags.COMPILED | CommonFlags.MODULE_EXPORT)) {\n // sb.push(\" extends \");\n // sb.push(base.name); // TODO: fqn\n // }\n sb.push(\" {\\n\");\n var staticMembers = element.prototype.members;\n if (staticMembers) {\n for (let member of staticMembers.values()) this.visitElement(member.name, member);\n }\n var instanceMembers = element.members;\n if (instanceMembers) {\n for (let member of instanceMembers.values()) this.visitElement(member.name, member);\n }\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n\n visitInterface(name: string, element: Interface): void {\n this.visitClass(name, element);\n }\n\n visitField(name: string, element: Field): void {\n if (element.is(CommonFlags.PRIVATE)) return;\n var sb = this.sb;\n indent(sb, this.indentLevel);\n if (element.is(CommonFlags.PROTECTED)) sb.push(\"protected \");\n if (element.is(CommonFlags.STATIC)) sb.push(\"static \");\n if (element.is(CommonFlags.READONLY)) sb.push(\"readonly \");\n sb.push(name);\n sb.push(\": \");\n sb.push(this.typeToString(element.type));\n sb.push(\";\\n\");\n }\n\n visitNamespace(name: string, element: Element): void {\n var members = element.members;\n if (members && members.size) {\n let sb = this.sb;\n indent(sb, this.indentLevel++);\n sb.push(\"export namespace \");\n sb.push(name);\n sb.push(\" {\\n\");\n for (let member of members.values()) this.visitElement(member.name, member);\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n }\n\n visitAlias(name: string, element: Element, originalName: string): void {\n var sb = this.sb;\n indent(sb, this.indentLevel);\n sb.push(\"export const \");\n sb.push(name);\n sb.push(\" = typeof \");\n sb.push(originalName);\n sb.push(\";\\n\");\n }\n\n typeToString(type: Type): string {\n switch (type.kind) {\n case TypeKind.I8: return \"i8\";\n case TypeKind.I16: return \"i16\";\n case TypeKind.I32: return \"i32\";\n case TypeKind.I64: return \"I64\";\n case TypeKind.ISIZE: return this.program.options.isWasm64 ? \"I64\" : \"i32\";\n case TypeKind.U8: return \"u8\";\n case TypeKind.U16: return \"u16\";\n case TypeKind.U32: return \"u32\";\n // ^ TODO: function types\n case TypeKind.U64: return \"U64\";\n case TypeKind.USIZE: return this.program.options.isWasm64 ? \"U64\" : \"u32\";\n // ^ TODO: class types\n case TypeKind.BOOL: return \"bool\";\n case TypeKind.F32: return \"f32\";\n case TypeKind.F64: return \"f64\";\n case TypeKind.V128: return \"v128\";\n case TypeKind.VOID: return \"void\";\n default: {\n assert(false);\n return \"any\";\n }\n }\n }\n\n build(): string {\n var sb = this.sb;\n sb.push(\"declare module ASModule {\\n\");\n sb.push(\" type i8 = number;\\n\");\n sb.push(\" type i16 = number;\\n\");\n sb.push(\" type i32 = number;\\n\");\n sb.push(\" type u8 = number;\\n\");\n sb.push(\" type u16 = number;\\n\");\n sb.push(\" type u32 = number;\\n\");\n sb.push(\" type f32 = number;\\n\");\n sb.push(\" type f64 = number;\\n\");\n sb.push(\" type bool = any;\\n\");\n ++this.indentLevel;\n this.walk();\n --this.indentLevel;\n sb.push(\"}\\n\");\n sb.push(\"export default ASModule;\\n\");\n return this.sb.join(\"\");\n }\n}\n\n// helpers\n\n/** Tests if a namespace-like element has at least one compiled member. */\nfunction hasCompiledMember(element: Element): bool {\n var members = element.members;\n if (members) {\n for (let member of members.values()) {\n switch (member.kind) {\n case ElementKind.FUNCTION_PROTOTYPE: {\n let instances = (member).instances;\n if (instances) {\n for (let instance of instances.values()) {\n if (instance.is(CommonFlags.COMPILED)) return true;\n }\n }\n break;\n }\n case ElementKind.CLASS_PROTOTYPE: {\n let instances = (member).instances;\n if (instances) {\n for (let instance of instances.values()) {\n if (instance.is(CommonFlags.COMPILED)) return true;\n }\n }\n break;\n }\n default: {\n if (member.is(CommonFlags.COMPILED) || hasCompiledMember(member)) return true;\n break;\n }\n }\n }\n }\n return false;\n}\n","/**\n * A TypeScript parser for the AssemblyScript subset.\n * @module parser\n *//***/\n\nimport {\n CommonFlags,\n LIBRARY_PREFIX,\n PATH_DELIMITER\n} from \"./common\";\n\nimport {\n Program\n} from \"./program\";\n\nimport {\n Tokenizer,\n Token,\n Range,\n CommentHandler,\n IdentifierHandling,\n isIllegalVariableIdentifier\n} from \"./tokenizer\";\n\nimport {\n DiagnosticCode,\n DiagnosticEmitter\n} from \"./diagnostics\";\n\nimport {\n normalizePath\n} from \"./util\";\n\nimport {\n Node,\n NodeKind,\n Source,\n SourceKind,\n TypeNode,\n NamedTypeNode,\n FunctionTypeNode,\n ArrowKind,\n\n Expression,\n AssertionKind,\n CallExpression,\n ClassExpression,\n FunctionExpression,\n IdentifierExpression,\n StringLiteralExpression,\n\n Statement,\n BlockStatement,\n BreakStatement,\n ClassDeclaration,\n ContinueStatement,\n DeclarationStatement,\n DecoratorNode,\n DoStatement,\n EnumDeclaration,\n EnumValueDeclaration,\n ExportImportStatement,\n ExportMember,\n ExportStatement,\n ExpressionStatement,\n ForStatement,\n FunctionDeclaration,\n IfStatement,\n ImportDeclaration,\n ImportStatement,\n IndexSignatureDeclaration,\n NamespaceDeclaration,\n ParameterNode,\n ParameterKind,\n ReturnStatement,\n SwitchCase,\n SwitchStatement,\n ThrowStatement,\n TryStatement,\n TypeDeclaration,\n TypeParameterNode,\n VariableStatement,\n VariableDeclaration,\n VoidStatement,\n WhileStatement,\n\n mangleInternalPath,\n nodeIsCallable,\n nodeIsGenericCallable\n} from \"./ast\";\n\n/** Parser interface. */\nexport class Parser extends DiagnosticEmitter {\n\n /** Program being created. */\n program: Program;\n /** Source file names to be requested next. */\n backlog: string[] = new Array();\n /** Source file names already seen, that is processed or backlogged. */\n seenlog: Set = new Set();\n /** Source file names already completely processed. */\n donelog: Set = new Set();\n /** Optional handler to intercept comments while tokenizing. */\n onComment: CommentHandler | null = null;\n /** Current file being parsed. */\n currentSource: Source;\n /** Dependency map **/\n dependees: Map = new Map();\n\n /** Constructs a new parser. */\n constructor() {\n super();\n this.program = new Program(this.diagnostics);\n }\n\n /** Parses a file and adds its definitions to the program. */\n parseFile(\n text: string,\n path: string,\n isEntry: bool\n ): void {\n var normalizedPath = normalizePath(path);\n var internalPath = mangleInternalPath(normalizedPath);\n // check if already processed\n if (this.donelog.has(internalPath)) return;\n this.donelog.add(internalPath); // do not parse again\n this.seenlog.add(internalPath); // do not request again\n\n // create the source element\n var source = new Source(\n normalizedPath,\n text,\n isEntry\n ? SourceKind.USER_ENTRY\n : path.startsWith(LIBRARY_PREFIX)\n ? path.indexOf(PATH_DELIMITER, LIBRARY_PREFIX.length) < 0\n ? SourceKind.LIBRARY_ENTRY\n : SourceKind.LIBRARY\n : SourceKind.USER\n );\n var program = this.program;\n program.sources.push(source);\n this.currentSource = source;\n\n // tokenize and parse\n var tn = new Tokenizer(source, program.diagnostics);\n tn.onComment = this.onComment;\n source.tokenizer = tn;\n var statements = source.statements;\n while (!tn.skip(Token.ENDOFFILE)) {\n let statement = this.parseTopLevelStatement(tn, null);\n if (statement) statements.push(statement);\n }\n tn.finish();\n }\n\n /** Parses a top-level statement. */\n parseTopLevelStatement(\n tn: Tokenizer,\n namespace: NamespaceDeclaration | null = null\n ): Statement | null {\n var flags = CommonFlags.NONE;\n var startPos: i32 = -1;\n\n // check decorators\n var decorators: DecoratorNode[] | null = null;\n while (tn.skip(Token.AT)) {\n if (startPos < 0) startPos = tn.tokenPos;\n let decorator = this.parseDecorator(tn);\n if (!decorator) {\n this.skipStatement(tn);\n continue;\n }\n if (!decorators) decorators = [decorator];\n else decorators.push(decorator);\n }\n\n // check modifiers\n var exportStart: i32 = 0;\n var exportEnd: i32 = 0;\n var defaultStart: i32 = 0;\n var defaultEnd: i32 = 0;\n if (tn.skip(Token.EXPORT)) {\n if (startPos < 0) startPos = tn.tokenPos;\n flags |= CommonFlags.EXPORT;\n exportStart = tn.tokenPos;\n exportEnd = tn.pos;\n if (tn.skip(Token.DEFAULT)) {\n defaultStart = tn.tokenPos;\n defaultEnd = tn.pos;\n }\n }\n\n var declareStart: i32 = 0;\n var declareEnd: i32 = 0;\n var contextIsAmbient = namespace != null && namespace.is(CommonFlags.AMBIENT);\n if (tn.skip(Token.DECLARE)) {\n if (contextIsAmbient) {\n this.error(\n DiagnosticCode.A_declare_modifier_cannot_be_used_in_an_already_ambient_context,\n tn.range()\n ); // recoverable\n } else {\n if (startPos < 0) startPos = tn.tokenPos;\n declareStart = startPos;\n declareEnd = tn.pos;\n flags |= CommonFlags.DECLARE | CommonFlags.AMBIENT;\n }\n } else if (contextIsAmbient) {\n flags |= CommonFlags.AMBIENT;\n }\n\n // parse the statement\n var statement: Statement | null = null;\n\n // handle declarations\n var first = tn.peek();\n if (startPos < 0) startPos = tn.nextTokenPos;\n switch (first) {\n case Token.CONST: {\n tn.next();\n flags |= CommonFlags.CONST;\n if (tn.skip(Token.ENUM)) {\n statement = this.parseEnum(tn, flags, decorators, startPos);\n } else {\n statement = this.parseVariable(tn, flags, decorators, startPos);\n }\n decorators = null;\n break;\n }\n case Token.LET: flags |= CommonFlags.LET;\n case Token.VAR: {\n tn.next();\n statement = this.parseVariable(tn, flags, decorators, startPos);\n decorators = null;\n break;\n }\n case Token.ENUM: {\n tn.next();\n statement = this.parseEnum(tn, flags, decorators, startPos);\n decorators = null;\n break;\n }\n case Token.FUNCTION: {\n tn.next();\n statement = this.parseFunction(tn, flags, decorators, startPos);\n decorators = null;\n break;\n }\n case Token.ABSTRACT: {\n let state = tn.mark();\n tn.next();\n if (!tn.skip(Token.CLASS)) {\n tn.reset(state);\n statement = this.parseStatement(tn, true);\n break;\n } else {\n tn.discard(state);\n }\n flags |= CommonFlags.ABSTRACT;\n // fall through\n }\n case Token.CLASS:\n case Token.INTERFACE: {\n tn.next();\n statement = this.parseClassOrInterface(tn, flags, decorators, startPos);\n decorators = null;\n break;\n }\n case Token.NAMESPACE: {\n let state = tn.mark();\n tn.next();\n if (tn.peek(false, IdentifierHandling.PREFER) == Token.IDENTIFIER) {\n tn.discard(state);\n statement = this.parseNamespace(tn, flags, decorators, startPos);\n decorators = null;\n } else {\n tn.reset(state);\n statement = this.parseStatement(tn, true);\n }\n break;\n }\n case Token.IMPORT: {\n tn.next();\n flags |= CommonFlags.IMPORT;\n if (flags & CommonFlags.EXPORT) {\n statement = this.parseExportImport(tn, startPos);\n } else {\n statement = this.parseImport(tn);\n }\n break;\n }\n case Token.TYPE: { // also identifier\n let state = tn.mark();\n tn.next();\n if (tn.peek(false, IdentifierHandling.PREFER) == Token.IDENTIFIER) {\n tn.discard(state);\n statement = this.parseTypeDeclaration(tn, flags, decorators, startPos);\n decorators = null;\n } else {\n tn.reset(state);\n statement = this.parseStatement(tn, true);\n }\n break;\n }\n default: {\n\n // handle plain exports\n if (flags & CommonFlags.EXPORT) {\n if (defaultEnd && tn.skipIdentifier(IdentifierHandling.PREFER)) {\n if (declareEnd) {\n this.error(\n DiagnosticCode.An_export_assignment_cannot_have_modifiers,\n tn.range(declareStart, declareEnd)\n );\n }\n statement = this.parseExportDefaultAlias(tn, startPos, defaultStart, defaultEnd);\n defaultStart = defaultEnd = 0; // consume\n } else {\n statement = this.parseExport(tn, startPos, (flags & CommonFlags.DECLARE) != 0);\n }\n\n // handle non-declaration statements\n } else {\n if (exportEnd) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(exportStart, exportEnd), \"export\"\n ); // recoverable\n }\n if (declareEnd) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(declareStart, declareEnd), \"declare\"\n ); // recoverable\n }\n if (!namespace) {\n statement = this.parseStatement(tn, true);\n } // TODO: else?\n }\n break;\n }\n }\n\n // check for decorators that weren't consumed\n if (decorators) {\n for (let i = 0, k = decorators.length; i < k; ++i) {\n this.error(\n DiagnosticCode.Decorators_are_not_valid_here,\n decorators[i].range\n );\n }\n }\n\n // check if this an `export default` declaration\n if (defaultEnd && statement !== null) {\n switch (statement.kind) {\n case NodeKind.ENUMDECLARATION:\n case NodeKind.FUNCTIONDECLARATION:\n case NodeKind.CLASSDECLARATION:\n case NodeKind.INTERFACEDECLARATION:\n case NodeKind.NAMESPACEDECLARATION: {\n return Node.createExportDefaultStatement(statement, tn.range(startPos, tn.pos));\n }\n default: {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(defaultStart, defaultEnd), \"default\"\n );\n }\n }\n }\n return statement;\n }\n\n /** Obtains the next file to parse. */\n nextFile(): string | null {\n var backlog = this.backlog;\n return backlog.length ? backlog.shift() : null;\n }\n\n /** Obtains the dependee for a given import */\n getDependee(dependent: string): string | null {\n var source = this.dependees.get(dependent);\n if (source) {\n return source.internalPath;\n }\n return null;\n }\n\n /** Finishes parsing and returns the program. */\n finish(): Program {\n if (this.backlog.length) throw new Error(\"backlog is not empty\");\n this.backlog = [];\n this.seenlog.clear();\n this.donelog.clear();\n this.dependees.clear();\n return this.program;\n }\n\n /** Parses a type. */\n parseType(\n tn: Tokenizer,\n acceptParenthesized: bool = true,\n suppressErrors: bool = false\n ): TypeNode | null {\n\n // NOTE: this parses our limited subset\n var token = tn.next();\n var startPos = tn.tokenPos;\n\n var type: TypeNode;\n\n // '(' ...\n if (token == Token.OPENPAREN) {\n\n // '(' FunctionSignature ')' '|' 'null'?\n let isNullableSignature = tn.skip(Token.OPENPAREN);\n // FunctionSignature?\n let signature = this.tryParseFunctionType(tn);\n if (signature) {\n if (isNullableSignature) {\n if (!tn.skip(Token.CLOSEPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n if (!tn.skip(Token.BAR)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"|\"\n );\n return null;\n }\n if (!tn.skip(Token.NULL)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"null\"\n );\n }\n signature.isNullable = true;\n }\n return signature;\n } else if (isNullableSignature || this.tryParseSignatureIsSignature) {\n this.error(\n DiagnosticCode.Unexpected_token,\n tn.range()\n );\n return null;\n }\n\n // Type (',' Type)* ')'\n if (acceptParenthesized) {\n let innerType = this.parseType(tn, false, suppressErrors);\n if (!innerType) return null;\n if (!tn.skip(Token.CLOSEPAREN)) {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"}\"\n );\n }\n return null;\n }\n type = innerType;\n type.range.start = startPos;\n type.range.end = tn.pos;\n } else {\n this.error(\n DiagnosticCode.Unexpected_token,\n tn.range()\n );\n return null;\n }\n\n // 'void'\n } else if (token == Token.VOID) {\n type = Node.createNamedType(\n Node.createSimpleTypeName(\"void\", tn.range()), [], false, tn.range(startPos, tn.pos)\n );\n\n // 'this'\n } else if (token == Token.THIS) {\n type = Node.createNamedType(\n Node.createSimpleTypeName(\"this\", tn.range()), [], false, tn.range(startPos, tn.pos)\n );\n\n // 'true'\n } else if (token == Token.TRUE || token == Token.FALSE) {\n type = Node.createNamedType(\n Node.createSimpleTypeName(\"bool\", tn.range()), [], false, tn.range(startPos, tn.pos)\n );\n\n // StringLiteral\n } else if (token == Token.STRINGLITERAL) {\n tn.readString();\n type = Node.createNamedType(\n Node.createSimpleTypeName(\"string\", tn.range()), [], false, tn.range(startPos, tn.pos)\n );\n\n // Identifier\n } else if (token == Token.IDENTIFIER) {\n let first = Node.createSimpleTypeName(tn.readIdentifier(), tn.range());\n let current = first;\n let parameters: NamedTypeNode[] | null = null;\n let nullable = false;\n\n // Identifier ('.' Identifier)+\n while (tn.skip(Token.DOT)) {\n if (tn.skip(Token.IDENTIFIER)) {\n let next = Node.createSimpleTypeName(tn.readIdentifier(), tn.range());\n current.next = next;\n current = next;\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range(tn.pos)\n );\n return null;\n }\n }\n\n // Name\n if (tn.skip(Token.LESSTHAN)) {\n do {\n let parameter = this.parseType(tn, true, suppressErrors);\n if (!parameter) return null;\n if (!parameters) parameters = [parameter];\n else parameters.push(parameter);\n } while (tn.skip(Token.COMMA));\n if (!tn.skip(Token.GREATERTHAN)) {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \">\"\n );\n }\n return null;\n }\n }\n // ... | null\n while (tn.skip(Token.BAR)) {\n if (tn.skip(Token.NULL)) {\n nullable = true;\n } else {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"null\"\n );\n }\n return null;\n }\n }\n type = Node.createNamedType(first, parameters || [], nullable, tn.range(startPos, tn.pos));\n } else {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n // ... [][]\n while (tn.skip(Token.OPENBRACKET)) {\n let bracketStart = tn.tokenPos;\n if (!tn.skip(Token.CLOSEBRACKET)) {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"]\"\n );\n }\n return null;\n }\n let bracketRange = tn.range(bracketStart, tn.pos);\n\n // ...[] | null\n let nullable = false;\n if (tn.skip(Token.BAR)) {\n if (tn.skip(Token.NULL)) {\n nullable = true;\n } else {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"null\"\n );\n }\n return null;\n }\n }\n type = Node.createNamedType(\n Node.createSimpleTypeName(\"Array\", bracketRange),\n [ type ],\n nullable,\n tn.range(startPos, tn.pos)\n );\n if (nullable) break;\n }\n\n return type;\n }\n\n // Indicates whether tryParseSignature determined that it is handling a Signature\n private tryParseSignatureIsSignature: bool = false;\n\n /** Parses a function type, as used in type declarations. */\n tryParseFunctionType(\n tn: Tokenizer\n ): FunctionTypeNode | null {\n\n // at '(': ('...'? Identifier '?'? ':' Type (',' '...'? Identifier '?'? ':' Type)* )? ')' '=>' Type\n\n var state = tn.mark();\n var startPos = tn.tokenPos;\n var parameters: ParameterNode[] | null = null;\n var thisType: NamedTypeNode | null = null;\n var isSignature: bool = false;\n\n if (tn.skip(Token.CLOSEPAREN)) {\n isSignature = true;\n tn.discard(state);\n parameters = [];\n\n } else {\n isSignature = false; // not yet known\n do {\n let kind = ParameterKind.DEFAULT;\n if (tn.skip(Token.DOT_DOT_DOT)) {\n isSignature = true;\n tn.discard(state);\n kind = ParameterKind.REST;\n }\n if (tn.skip(Token.THIS)) {\n if (tn.skip(Token.COLON)) {\n isSignature = true;\n tn.discard(state);\n let t = this.parseType(tn, false);\n if (!t) return null;\n if (t.kind != NodeKind.NAMEDTYPE) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n t.range\n );\n this.tryParseSignatureIsSignature = true;\n return null;\n }\n thisType = t;\n } else {\n tn.reset(state);\n this.tryParseSignatureIsSignature = false;\n return null;\n }\n } else if (tn.skipIdentifier()) {\n let name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range(tn.tokenPos, tn.pos));\n if (tn.skip(Token.QUESTION)) {\n isSignature = true;\n tn.discard(state);\n if (kind == ParameterKind.REST) {\n this.error(\n DiagnosticCode.A_rest_parameter_cannot_be_optional,\n tn.range()\n ); // recoverable\n } else {\n kind = ParameterKind.OPTIONAL;\n }\n }\n if (tn.skip(Token.COLON)) {\n isSignature = true;\n tn.discard(state);\n let type = this.parseType(tn); // not suppressing errors because known\n if (!type) {\n this.tryParseSignatureIsSignature = isSignature;\n return null;\n }\n let param = new ParameterNode();\n param.parameterKind = kind;\n param.name = name;\n param.type = type;\n if (!parameters) parameters = [ param ];\n else parameters.push(param);\n } else {\n if (isSignature) {\n this.error(\n DiagnosticCode.Type_expected,\n tn.range()\n ); // recoverable\n }\n }\n } else {\n if (isSignature) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n } else {\n tn.reset(state);\n }\n this.tryParseSignatureIsSignature = isSignature;\n return null;\n }\n } while (tn.skip(Token.COMMA));\n if (!tn.skip(Token.CLOSEPAREN)) {\n if (isSignature) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n } else {\n tn.reset(state);\n }\n this.tryParseSignatureIsSignature = isSignature;\n return null;\n }\n }\n\n var returnType: TypeNode | null;\n if (tn.skip(Token.EQUALS_GREATERTHAN)) {\n isSignature = true;\n tn.discard(state);\n returnType = this.parseType(tn);\n if (!returnType) {\n this.tryParseSignatureIsSignature = isSignature;\n return null;\n }\n } else {\n if (isSignature) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"=>\"\n );\n } else {\n tn.reset(state);\n }\n this.tryParseSignatureIsSignature = isSignature;\n return null;\n }\n this.tryParseSignatureIsSignature = true;\n return Node.createFunctionType(\n parameters || [],\n returnType,\n thisType,\n false,\n tn.range(startPos, tn.pos)\n );\n }\n\n // statements\n\n parseDecorator(\n tn: Tokenizer\n ): DecoratorNode | null {\n\n // at '@': Identifier ('.' Identifier)* '(' Arguments\n\n var startPos = tn.tokenPos;\n if (tn.skipIdentifier()) {\n let name = tn.readIdentifier();\n let expression: Expression = Node.createIdentifierExpression(name, tn.range(startPos, tn.pos));\n while (tn.skip(Token.DOT)) {\n if (tn.skipIdentifier()) {\n name = tn.readIdentifier();\n expression = Node.createPropertyAccessExpression(\n expression,\n Node.createIdentifierExpression(name, tn.range()),\n tn.range(startPos, tn.pos)\n );\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n }\n let args: Expression[] | null;\n if (tn.skip(Token.OPENPAREN)) {\n args = this.parseArguments(tn);\n if (args) {\n return Node.createDecorator(expression, args, tn.range(startPos, tn.pos));\n }\n } else {\n return Node.createDecorator(expression, null, tn.range(startPos, tn.pos));\n }\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseVariable(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): VariableStatement | null {\n\n // at ('const' | 'let' | 'var'): VariableDeclaration (',' VariableDeclaration)* ';'?\n\n var members = new Array();\n do {\n let member = this.parseVariableDeclaration(tn, flags, decorators);\n if (!member) return null;\n members.push(member);\n } while (tn.skip(Token.COMMA));\n\n var ret = Node.createVariableStatement(members, decorators, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseVariableDeclaration(\n tn: Tokenizer,\n parentFlags: CommonFlags,\n parentDecorators: DecoratorNode[] | null\n ): VariableDeclaration | null {\n\n // before: Identifier (':' Type)? ('=' Expression)?\n\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n var identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n if (isIllegalVariableIdentifier(identifier.text)) {\n this.error(\n DiagnosticCode.Identifier_expected,\n identifier.range\n );\n }\n var flags = parentFlags;\n if (tn.skip(Token.EXCLAMATION)) {\n flags |= CommonFlags.DEFINITE_ASSIGNMENT;\n }\n\n var type: TypeNode | null = null;\n if (tn.skip(Token.COLON)) {\n type = this.parseType(tn);\n }\n\n var initializer: Expression | null = null;\n if (tn.skip(Token.EQUALS)) {\n if (flags & CommonFlags.AMBIENT) {\n this.error(\n DiagnosticCode.Initializers_are_not_allowed_in_ambient_contexts,\n tn.range()\n ); // recoverable\n }\n initializer = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!initializer) return null;\n } else {\n if (flags & CommonFlags.CONST) {\n if (!(flags & CommonFlags.AMBIENT)) {\n this.error(\n DiagnosticCode._const_declarations_must_be_initialized,\n identifier.range\n ); // recoverable\n }\n } else if (!type) { // neither type nor initializer\n this.error(\n DiagnosticCode.Type_expected,\n tn.range(tn.pos)\n ); // recoverable\n }\n }\n var range = Range.join(identifier.range, tn.range());\n if ((flags & CommonFlags.DEFINITE_ASSIGNMENT) && initializer) {\n this.error(\n DiagnosticCode.A_definite_assignment_assertion_is_not_permitted_in_this_context,\n range);\n }\n return Node.createVariableDeclaration(\n identifier,\n type,\n initializer,\n parentDecorators,\n flags,\n range\n );\n }\n\n parseEnum(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): EnumDeclaration | null {\n\n // at 'enum': Identifier '{' (EnumValueDeclaration (',' EnumValueDeclaration )*)? '}' ';'?\n\n if (tn.next() != Token.IDENTIFIER) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n var identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n if (tn.next() != Token.OPENBRACE) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n return null;\n }\n var members = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n let member = this.parseEnumValue(tn, CommonFlags.NONE);\n if (!member) return null;\n members.push(member);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEBRACE)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n }\n var ret = Node.createEnumDeclaration(\n identifier,\n members,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseEnumValue(\n tn: Tokenizer,\n parentFlags: CommonFlags\n ): EnumValueDeclaration | null {\n\n // before: Identifier ('=' Expression)?\n\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n var identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n var value: Expression | null = null;\n if (tn.skip(Token.EQUALS)) {\n value = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!value) return null;\n }\n return Node.createEnumValueDeclaration(\n identifier,\n value,\n parentFlags,\n Range.join(identifier.range, tn.range())\n );\n }\n\n parseReturn(\n tn: Tokenizer\n ): ReturnStatement | null {\n\n // at 'return': Expression | (';' | '}' | ...'\\n')\n\n var expr: Expression | null = null;\n if (\n tn.peek(true) != Token.SEMICOLON &&\n tn.nextToken != Token.CLOSEBRACE &&\n !tn.nextTokenOnNewLine\n ) {\n if (!(expr = this.parseExpression(tn))) return null;\n }\n\n var ret = Node.createReturnStatement(expr, tn.range());\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseTypeParameters(\n tn: Tokenizer\n ): TypeParameterNode[] | null {\n\n // at '<': TypeParameter (',' TypeParameter)* '>'\n\n var typeParameters: TypeParameterNode[] | null = null;\n var seenOptional = false;\n while (!tn.skip(Token.GREATERTHAN)) {\n let typeParameter = this.parseTypeParameter(tn);\n if (!typeParameter) return null;\n if (typeParameter.defaultType !== null) {\n seenOptional = true;\n } else if (seenOptional) {\n this.error(\n DiagnosticCode.Required_type_parameters_may_not_follow_optional_type_parameters,\n typeParameter.range\n );\n typeParameter.defaultType = null;\n }\n if (!typeParameters) typeParameters = [ typeParameter ];\n else typeParameters.push(typeParameter);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.GREATERTHAN)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \">\"\n );\n return null;\n }\n }\n }\n if (!(typeParameters && typeParameters.length)) {\n this.error(\n DiagnosticCode.Type_parameter_list_cannot_be_empty,\n tn.range()\n ); // recoverable\n }\n return typeParameters;\n }\n\n parseTypeParameter(\n tn: Tokenizer\n ): TypeParameterNode | null {\n\n // before: Identifier ('extends' Type)? ('=' Type)?\n\n if (tn.next() == Token.IDENTIFIER) {\n let identifier = Node.createIdentifierExpression(\n tn.readIdentifier(),\n tn.range()\n );\n let extendsType: NamedTypeNode | null = null;\n if (tn.skip(Token.EXTENDS)) {\n let t = this.parseType(tn);\n if (!t) return null;\n if (t.kind != NodeKind.NAMEDTYPE) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n t.range\n );\n return null;\n }\n extendsType = t;\n }\n let defaultType: NamedTypeNode | null = null;\n if (tn.skip(Token.EQUALS)) {\n let t = this.parseType(tn);\n if (!t) return null;\n if (t.kind != NodeKind.NAMEDTYPE) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n t.range\n );\n return null;\n }\n defaultType = t;\n }\n return Node.createTypeParameter(\n identifier,\n extendsType,\n defaultType,\n Range.join(identifier.range, tn.range())\n );\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n private parseParametersThis: NamedTypeNode | null = null;\n\n parseParameters(\n tn: Tokenizer,\n isConstructor: bool = false\n ): ParameterNode[] | null {\n\n // at '(': (Parameter (',' Parameter)*)? ')'\n\n var parameters = new Array();\n var seenRest: ParameterNode | null = null;\n var seenOptional = false;\n var reportedRest = false;\n var thisType: TypeNode | null = null;\n\n // check if there is a leading `this` parameter\n this.parseParametersThis = null;\n if (tn.skip(Token.THIS)) {\n if (tn.skip(Token.COLON)) {\n thisType = this.parseType(tn); // reports\n if (!thisType) return null;\n if (thisType.kind == NodeKind.NAMEDTYPE) {\n this.parseParametersThis = thisType;\n } else {\n this.error(\n DiagnosticCode.Operation_not_supported,\n thisType.range\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n return null;\n }\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEPAREN)) {\n return parameters;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n }\n }\n\n while (!tn.skip(Token.CLOSEPAREN)) {\n let param = this.parseParameter(tn, isConstructor); // reports\n if (!param) return null;\n if (seenRest && !reportedRest) {\n this.error(\n DiagnosticCode.A_rest_parameter_must_be_last_in_a_parameter_list,\n seenRest.name.range\n );\n reportedRest = true;\n }\n switch (param.parameterKind) {\n default: {\n if (seenOptional) {\n this.error(\n DiagnosticCode.A_required_parameter_cannot_follow_an_optional_parameter,\n param.name.range\n );\n }\n break;\n }\n case ParameterKind.OPTIONAL: {\n seenOptional = true;\n break;\n }\n case ParameterKind.REST: {\n seenRest = param;\n break;\n }\n }\n parameters.push(param);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEPAREN)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n }\n }\n return parameters;\n }\n\n parseParameter(\n tn: Tokenizer,\n isConstructor: bool = false\n ): ParameterNode | null {\n\n // before: ('public' | 'private' | 'protected' | '...')? Identifier '?'? (':' Type)? ('=' Expression)?\n\n var isRest = false;\n var isOptional = false;\n var startRange: Range | null = null;\n var accessFlags: CommonFlags = CommonFlags.NONE;\n if (isConstructor) {\n if (tn.skip(Token.PUBLIC)) {\n startRange = tn.range();\n accessFlags |= CommonFlags.PUBLIC;\n } else if (tn.skip(Token.PROTECTED)) {\n startRange = tn.range();\n accessFlags |= CommonFlags.PROTECTED;\n } else if (tn.skip(Token.PRIVATE)) {\n startRange = tn.range();\n accessFlags |= CommonFlags.PRIVATE;\n }\n if (tn.peek() == Token.READONLY) {\n let state = tn.mark();\n tn.next();\n if (tn.peek() != Token.COLON) { // modifier\n tn.discard(state);\n if (!startRange) startRange = tn.range();\n accessFlags |= CommonFlags.READONLY;\n } else { // identifier\n tn.reset(state);\n }\n }\n }\n if (tn.skip(Token.DOT_DOT_DOT)) {\n if (accessFlags) {\n this.error(\n DiagnosticCode.A_parameter_property_cannot_be_declared_using_a_rest_parameter,\n tn.range()\n );\n } else {\n startRange = tn.range();\n }\n isRest = true;\n }\n if (tn.skipIdentifier()) {\n if (!isRest) startRange = tn.range();\n let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n let type: TypeNode | null = null;\n if (isOptional = tn.skip(Token.QUESTION)) {\n if (isRest) {\n this.error(\n DiagnosticCode.A_rest_parameter_cannot_be_optional,\n identifier.range\n );\n }\n }\n if (tn.skip(Token.COLON)) {\n type = this.parseType(tn);\n if (!type) return null;\n } else {\n type = Node.createOmittedType(tn.range(tn.pos));\n }\n let initializer: Expression | null = null;\n if (tn.skip(Token.EQUALS)) {\n if (isRest) {\n this.error(\n DiagnosticCode.A_rest_parameter_cannot_have_an_initializer,\n identifier.range\n );\n }\n if (isOptional) {\n this.error(\n DiagnosticCode.Parameter_cannot_have_question_mark_and_initializer,\n identifier.range\n );\n } else {\n isOptional = true;\n }\n initializer = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!initializer) return null;\n }\n let param = Node.createParameter(\n identifier,\n type,\n initializer,\n isRest\n ? ParameterKind.REST\n : isOptional\n ? ParameterKind.OPTIONAL\n : ParameterKind.DEFAULT,\n Range.join(startRange, tn.range())\n );\n param.flags |= accessFlags;\n return param;\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseFunction(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): FunctionDeclaration | null {\n\n // at 'function':\n // Identifier\n // ('<' TypeParameters)?\n // '(' Parameters (':' Type)?\n // '{' Statement* '}'\n // ';'?\n\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range(tn.pos)\n );\n return null;\n }\n\n var name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n var signatureStart: i32 = -1;\n\n var typeParameters: TypeParameterNode[] | null = null;\n if (tn.skip(Token.LESSTHAN)) {\n signatureStart = tn.tokenPos;\n typeParameters = this.parseTypeParameters(tn);\n if (!typeParameters) return null;\n flags |= CommonFlags.GENERIC;\n }\n\n if (!tn.skip(Token.OPENPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"(\"\n );\n return null;\n }\n\n if (signatureStart < 0) {\n signatureStart = tn.tokenPos;\n }\n\n var parameters = this.parseParameters(tn);\n if (!parameters) return null;\n var thisType = this.parseParametersThis;\n\n var isSetter = (flags & CommonFlags.SET) != 0;\n if (isSetter) {\n if (parameters.length != 1) {\n this.error(\n DiagnosticCode.A_set_accessor_must_have_exactly_one_parameter,\n name.range\n ); // recoverable\n }\n if (parameters.length && parameters[0].initializer) {\n this.error(\n DiagnosticCode.A_set_accessor_parameter_cannot_have_an_initializer,\n name.range\n ); // recoverable\n }\n }\n\n if (flags & CommonFlags.GET) {\n if (parameters.length) {\n this.error(\n DiagnosticCode.A_get_accessor_cannot_have_parameters,\n name.range\n ); // recoverable\n }\n }\n\n var returnType: TypeNode | null = null;\n if (tn.skip(Token.COLON)) {\n returnType = this.parseType(tn, true, isSetter);\n if (!returnType) return null;\n }\n\n if (!returnType) {\n returnType = Node.createOmittedType(\n tn.range(tn.pos)\n );\n if (!isSetter) {\n this.error(\n DiagnosticCode.Type_expected,\n returnType.range\n ); // recoverable\n }\n }\n\n var signature = Node.createFunctionType(\n parameters,\n returnType,\n thisType,\n false,\n tn.range(signatureStart, tn.pos)\n );\n\n var body: Statement | null = null;\n if (tn.skip(Token.OPENBRACE)) {\n if (flags & CommonFlags.AMBIENT) {\n this.error(\n DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,\n tn.range()\n ); // recoverable\n }\n\n body = this.parseBlockStatement(tn, false);\n if (!body) return null;\n } else if (!(flags & CommonFlags.AMBIENT)) {\n this.error(\n DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,\n tn.range(tn.pos)\n );\n }\n\n var ret = Node.createFunctionDeclaration(\n name,\n typeParameters,\n signature,\n body,\n decorators,\n flags,\n ArrowKind.NONE,\n tn.range(startPos, tn.pos)\n );\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseFunctionExpression(tn: Tokenizer): FunctionExpression | null {\n var startPos = tn.tokenPos;\n var name: IdentifierExpression;\n var arrowKind = ArrowKind.NONE;\n\n // either at 'function':\n // Identifier?\n // '(' Parameters (':' Type)?\n // Statement\n\n if (tn.token == Token.FUNCTION) {\n if (tn.skipIdentifier()) {\n name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else { // empty name\n name = Node.createEmptyIdentifierExpression(tn.range(tn.pos));\n }\n if (!tn.skip(Token.OPENPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"(\"\n );\n return null;\n }\n\n // or at '(' of arrow function:\n // Parameters (':' Type)?\n // Statement\n\n } else {\n arrowKind = ArrowKind.ARROW_PARENTHESIZED;\n assert(tn.token == Token.OPENPAREN);\n name = Node.createEmptyIdentifierExpression(tn.range(tn.tokenPos));\n }\n\n // TODO: type parameters? doesn't seem worth it.\n\n var signatureStart = tn.pos;\n var parameters = this.parseParameters(tn);\n if (!parameters) return null;\n\n return this.parseFunctionExpressionCommon(tn, name, parameters, arrowKind, startPos, signatureStart);\n }\n\n private parseFunctionExpressionCommon(\n tn: Tokenizer,\n name: IdentifierExpression,\n parameters: ParameterNode[],\n arrowKind: ArrowKind,\n startPos: i32 = -1,\n signatureStart: i32 = -1\n ): FunctionExpression | null {\n if (startPos < 0) startPos = name.range.start;\n if (signatureStart < 0) signatureStart = startPos;\n\n var returnType: TypeNode | null = null;\n if (arrowKind != ArrowKind.ARROW_SINGLE && tn.skip(Token.COLON)) {\n returnType = this.parseType(tn);\n if (!returnType) return null;\n } else {\n returnType = Node.createOmittedType(tn.range(tn.pos));\n }\n\n if (arrowKind) {\n if (!tn.skip(Token.EQUALS_GREATERTHAN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"=>\"\n );\n return null;\n }\n }\n\n var signature = Node.createFunctionType(\n parameters,\n returnType,\n null, // TODO?\n false,\n tn.range(signatureStart, tn.pos)\n );\n\n var body: Statement | null = null;\n if (arrowKind) {\n if (tn.skip(Token.OPENBRACE)) {\n body = this.parseBlockStatement(tn, false);\n } else {\n let bodyExpression = this.parseExpression(tn, Precedence.COMMA + 1);\n if (bodyExpression) body = Node.createExpressionStatement(bodyExpression);\n }\n } else {\n if (!tn.skip(Token.OPENBRACE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"{\"\n );\n return null;\n }\n body = this.parseBlockStatement(tn, false);\n }\n if (!body) return null;\n\n var declaration = Node.createFunctionDeclaration(\n name,\n null,\n signature,\n body,\n null,\n CommonFlags.NONE,\n arrowKind,\n tn.range(startPos, tn.pos)\n );\n return Node.createFunctionExpression(declaration);\n }\n\n parseClassOrInterface(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): ClassDeclaration | null {\n\n // at ('class' | 'interface'):\n // Identifier\n // ('<' TypeParameters)?\n // ('extends' Type)?\n // ('implements' Type (',' Type)*)?\n // '{' ClassMember* '}'\n\n var isInterface = tn.token == Token.INTERFACE;\n\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n\n var identifier = Node.createIdentifierExpression(\n tn.readIdentifier(),\n tn.range()\n );\n\n var typeParameters: TypeParameterNode[] | null = null;\n if (tn.skip(Token.LESSTHAN)) {\n typeParameters = this.parseTypeParameters(tn);\n if (!typeParameters) return null;\n flags |= CommonFlags.GENERIC;\n }\n\n var extendsType: NamedTypeNode | null = null;\n if (tn.skip(Token.EXTENDS)) {\n let t = this.parseType(tn);\n if (!t) return null;\n if (t.kind != NodeKind.NAMEDTYPE) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n t.range\n );\n return null;\n }\n extendsType = t;\n }\n\n var implementsTypes: NamedTypeNode[] | null = null;\n if (tn.skip(Token.IMPLEMENTS)) {\n if (isInterface) {\n this.error(\n DiagnosticCode.Interface_declaration_cannot_have_implements_clause,\n tn.range()\n ); // recoverable\n }\n do {\n let type = this.parseType(tn);\n if (!type) return null;\n if (!isInterface) {\n if (!implementsTypes) implementsTypes = [type];\n else implementsTypes.push(type);\n }\n } while (tn.skip(Token.COMMA));\n }\n\n if (!tn.skip(Token.OPENBRACE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n return null;\n }\n\n var members = new Array();\n var declaration: ClassDeclaration;\n if (isInterface) {\n assert(!implementsTypes);\n declaration = Node.createInterfaceDeclaration(\n identifier,\n typeParameters,\n extendsType,\n members,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n } else {\n declaration = Node.createClassDeclaration(\n identifier,\n typeParameters,\n extendsType,\n implementsTypes,\n members,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n }\n if (!tn.skip(Token.CLOSEBRACE)) {\n do {\n let member = this.parseClassMember(tn, declaration);\n if (member) members.push(member);\n else {\n this.skipStatement(tn);\n if (tn.skip(Token.ENDOFFILE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n } while (!tn.skip(Token.CLOSEBRACE));\n }\n declaration.range.end = tn.pos;\n return declaration;\n }\n\n parseClassExpression(tn: Tokenizer): ClassExpression | null {\n\n // at 'class': Identifier? '{' ... '}'\n\n var startPos = tn.tokenPos;\n var name: IdentifierExpression;\n\n if (tn.skipIdentifier()) {\n name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else {\n name = Node.createEmptyIdentifierExpression(tn.range(tn.pos));\n }\n\n if (!tn.skip(Token.OPENBRACE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"{\"\n );\n return null;\n }\n\n var members = new Array();\n var declaration = Node.createClassDeclaration(\n name,\n [],\n null,\n null,\n members,\n null,\n CommonFlags.NONE,\n tn.range(startPos, tn.pos)\n );\n if (!tn.skip(Token.CLOSEBRACE)) {\n do {\n let member = this.parseClassMember(tn, declaration);\n if (member) members.push(member);\n else {\n this.skipStatement(tn);\n if (tn.skip(Token.ENDOFFILE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n } while (!tn.skip(Token.CLOSEBRACE));\n }\n declaration.range.end = tn.pos;\n return Node.createClassExpression(declaration);\n }\n\n parseClassMember(\n tn: Tokenizer,\n parent: ClassDeclaration\n ): DeclarationStatement | null {\n\n // before:\n // ('public' | 'private' | 'protected')?\n // ('static' | 'abstract')?\n // 'readonly'?\n // ('get' | 'set')?\n // Identifier ...\n\n var startPos = tn.pos;\n var isInterface = parent.kind == NodeKind.INTERFACEDECLARATION;\n\n var decorators: DecoratorNode[] | null = null;\n if (tn.skip(Token.AT)) {\n do {\n let decorator = this.parseDecorator(tn);\n if (!decorator) break;\n if (!decorators) decorators = [decorator];\n else decorators.push(decorator);\n } while (tn.skip(Token.AT));\n if (decorators && isInterface) {\n this.error(\n DiagnosticCode.Decorators_are_not_valid_here,\n Range.join(decorators[0].range, decorators[decorators.length - 1].range)\n );\n }\n }\n\n // inherit ambient status\n var flags = parent.flags & CommonFlags.AMBIENT;\n\n // implemented methods are virtual\n if (isInterface) flags |= CommonFlags.VIRTUAL;\n\n var accessStart = 0;\n var accessEnd = 0;\n if (tn.skip(Token.PUBLIC)) {\n if (isInterface) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(), \"public\"\n );\n }\n flags |= CommonFlags.PUBLIC;\n accessStart = tn.tokenPos;\n accessEnd = tn.pos;\n } else if (tn.skip(Token.PRIVATE)) {\n if (isInterface) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(), \"private\"\n );\n }\n flags |= CommonFlags.PRIVATE;\n accessStart = tn.tokenPos;\n accessEnd = tn.pos;\n } else if (tn.skip(Token.PROTECTED)) {\n if (isInterface) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(), \"protected\"\n );\n }\n flags |= CommonFlags.PROTECTED;\n accessStart = tn.tokenPos;\n accessEnd = tn.pos;\n }\n\n var staticStart = 0;\n var staticEnd = 0;\n var abstractStart = 0;\n var abstractEnd = 0;\n if (tn.skip(Token.STATIC)) {\n if (isInterface) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(), \"static\"\n );\n }\n flags |= CommonFlags.STATIC;\n staticStart = tn.tokenPos;\n staticEnd = tn.pos;\n } else {\n flags |= CommonFlags.INSTANCE;\n if (tn.skip(Token.ABSTRACT)) {\n if (isInterface) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(), \"abstract\"\n );\n }\n flags |= CommonFlags.ABSTRACT;\n abstractStart = tn.tokenPos;\n abstractEnd = tn.pos;\n }\n if (parent.flags & CommonFlags.GENERIC) flags |= CommonFlags.GENERIC_CONTEXT;\n }\n\n var readonlyStart: i32 = 0;\n var readonlyEnd: i32 = 0;\n if (tn.peek() == Token.READONLY) {\n let state = tn.mark();\n tn.next();\n if (tn.peek() != Token.COLON) { // modifier\n tn.discard(state);\n flags |= CommonFlags.READONLY;\n readonlyStart = tn.tokenPos;\n readonlyEnd = tn.pos;\n } else { // identifier\n tn.reset(state);\n }\n }\n\n // check if accessor: ('get' | 'set') ^\\n Identifier\n var state = tn.mark();\n var isConstructor = false;\n var isGetter = false;\n var getStart: i32 = 0;\n var getEnd: i32 = 0;\n var isSetter = false;\n var setStart: i32 = 0;\n var setEnd: i32 = 0;\n if (!isInterface) {\n if (tn.skip(Token.GET)) {\n if (tn.peek(true, IdentifierHandling.PREFER) == Token.IDENTIFIER && !tn.nextTokenOnNewLine) {\n flags |= CommonFlags.GET;\n isGetter = true;\n setStart = tn.tokenPos;\n setEnd = tn.pos;\n if (flags & CommonFlags.READONLY) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(readonlyStart, readonlyEnd), \"readonly\"\n ); // recoverable\n }\n } else {\n tn.reset(state);\n }\n } else if (tn.skip(Token.SET)) {\n if (tn.peek(true, IdentifierHandling.PREFER) == Token.IDENTIFIER && !tn.nextTokenOnNewLine) {\n flags |= CommonFlags.SET;\n isSetter = true;\n setStart = tn.tokenPos;\n setEnd = tn.pos;\n if (flags & CommonFlags.READONLY) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(readonlyStart, readonlyEnd), \"readonly\"\n ); // recoverable\n }\n } else {\n tn.reset(state);\n }\n } else if (tn.skip(Token.CONSTRUCTOR)) {\n flags |= CommonFlags.CONSTRUCTOR;\n isConstructor = true;\n if (flags & CommonFlags.STATIC) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(staticStart, staticEnd), \"static\"\n ); // recoverable\n }\n if (flags & CommonFlags.ABSTRACT) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(abstractStart, abstractEnd), \"abstract\"\n ); // recoverable\n }\n if (flags & CommonFlags.READONLY) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(readonlyStart, readonlyEnd), \"readonly\"\n ); // recoverable\n }\n }\n }\n\n var name: IdentifierExpression;\n if (isConstructor) {\n name = Node.createConstructorExpression(tn.range());\n } else {\n if (!(isGetter || isSetter) && tn.skip(Token.OPENBRACKET)) {\n // TODO: also handle symbols, which might have some of these modifiers\n if (flags & CommonFlags.PUBLIC) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(accessStart, accessEnd), \"public\"\n ); // recoverable\n } else if (flags & CommonFlags.PROTECTED) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(accessStart, accessEnd), \"protected\"\n ); // recoverable\n } else if (flags & CommonFlags.PRIVATE) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(accessStart, accessEnd), \"protected\"\n ); // recoverable\n }\n if (flags & CommonFlags.STATIC) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(staticStart, staticEnd), \"static\"\n ); // recoverable\n }\n if (flags & CommonFlags.ABSTRACT) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(abstractStart, abstractEnd), \"abstract\"\n ); // recoverable\n }\n if (flags & CommonFlags.READONLY) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(readonlyStart, readonlyEnd), \"readonly\"\n ); // recoverable\n }\n let retIndex = this.parseIndexSignatureDeclaration(tn, decorators);\n if (!retIndex) return null;\n tn.skip(Token.SEMICOLON);\n return retIndex;\n }\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n }\n var typeParameters: TypeParameterNode[] | null = null;\n if (tn.skip(Token.LESSTHAN)) {\n let typeParametersStart = tn.tokenPos;\n typeParameters = this.parseTypeParameters(tn);\n if (!typeParameters) return null;\n if (isConstructor) {\n this.error(\n DiagnosticCode.Type_parameters_cannot_appear_on_a_constructor_declaration,\n tn.range(typeParametersStart, tn.pos)\n ); // recoverable\n } else if (isGetter || isSetter) {\n this.error(\n DiagnosticCode.An_accessor_cannot_have_type_parameters,\n tn.range(typeParametersStart, tn.pos)\n ); // recoverable\n } else {\n flags |= CommonFlags.GENERIC;\n }\n }\n\n // method: '(' Parameters (':' Type)? '{' Statement* '}' ';'?\n if (tn.skip(Token.OPENPAREN)) {\n let signatureStart = tn.tokenPos;\n let parameters = this.parseParameters(tn, isConstructor);\n if (!parameters) return null;\n let thisType = this.parseParametersThis;\n if (isConstructor) {\n for (let i = 0, k = parameters.length; i < k; ++i) {\n let parameter = parameters[i];\n if (parameter.isAny(\n CommonFlags.PUBLIC |\n CommonFlags.PROTECTED |\n CommonFlags.PRIVATE |\n CommonFlags.READONLY\n )) {\n let implicitFieldDeclaration = Node.createFieldDeclaration(\n parameter.name,\n parameter.type,\n null, // initialized via parameter\n null,\n parameter.flags | CommonFlags.INSTANCE,\n parameter.range\n );\n implicitFieldDeclaration.parameterIndex = i;\n parameter.implicitFieldDeclaration = implicitFieldDeclaration;\n parent.members.push(implicitFieldDeclaration);\n }\n }\n } else if (isGetter) {\n if (parameters.length) {\n this.error(\n DiagnosticCode.A_get_accessor_cannot_have_parameters,\n name.range\n );\n }\n } else if (isSetter) {\n if (parameters.length != 1) {\n this.error(\n DiagnosticCode.A_set_accessor_must_have_exactly_one_parameter,\n name.range\n );\n }\n if (parameters.length && parameters[0].initializer) {\n this.error(\n DiagnosticCode.A_set_accessor_parameter_cannot_have_an_initializer,\n name.range\n );\n }\n }\n\n let returnType: TypeNode | null = null;\n if (tn.skip(Token.COLON)) {\n if (name.kind == NodeKind.CONSTRUCTOR) {\n this.error(\n DiagnosticCode.Type_annotation_cannot_appear_on_a_constructor_declaration,\n tn.range()\n );\n } else if (isSetter) {\n this.error(\n DiagnosticCode.A_set_accessor_cannot_have_a_return_type_annotation,\n tn.range()\n );\n }\n returnType = this.parseType(tn, name.kind == NodeKind.CONSTRUCTOR || isSetter);\n if (!returnType) return null;\n } else {\n returnType = Node.createOmittedType(tn.range(tn.pos));\n if (!isSetter && name.kind != NodeKind.CONSTRUCTOR) {\n this.error(\n DiagnosticCode.Type_expected,\n returnType.range\n ); // recoverable\n }\n }\n\n let signature = Node.createFunctionType(\n parameters,\n returnType,\n thisType,\n false,\n tn.range(signatureStart, tn.pos)\n );\n\n let body: Statement | null = null;\n if (tn.skip(Token.OPENBRACE)) {\n if (flags & CommonFlags.AMBIENT) {\n this.error(\n DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,\n tn.range()\n ); // recoverable\n } else if (flags & CommonFlags.ABSTRACT) {\n this.error(\n DiagnosticCode.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract,\n tn.range(), name.text\n ); // recoverable\n }\n body = this.parseBlockStatement(tn, false);\n if (!body) return null;\n } else if (!(flags & CommonFlags.AMBIENT) && !isInterface) {\n this.error(\n DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,\n tn.range()\n ); // recoverable\n }\n\n let retMethod = Node.createMethodDeclaration(\n name,\n typeParameters,\n signature,\n body,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n tn.skip(Token.SEMICOLON);\n return retMethod;\n\n } else if (isConstructor) {\n this.error(\n DiagnosticCode.Constructor_implementation_is_missing,\n name.range\n );\n\n } else if (isGetter || isSetter) {\n this.error(\n DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,\n name.range\n );\n\n // field: (':' Type)? ('=' Expression)? ';'?\n } else {\n if (flags & CommonFlags.ABSTRACT) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(abstractStart, abstractEnd), \"abstract\"\n ); // recoverable\n }\n\n if (flags & CommonFlags.GET) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(getStart, getEnd), \"get\"\n ); // recoverable\n }\n\n if (flags & CommonFlags.SET) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(setStart, setEnd), \"set\"\n ); // recoverable\n }\n\n let type: TypeNode | null = null;\n if (tn.skip(Token.QUESTION)) {\n this.error(\n DiagnosticCode.Optional_properties_are_not_supported,\n tn.range(startPos, tn.pos)\n );\n }\n if (tn.skip(Token.EXCLAMATION)) {\n flags |= CommonFlags.DEFINITE_ASSIGNMENT;\n }\n if (tn.skip(Token.COLON)) {\n type = this.parseType(tn);\n if (!type) return null;\n } else {\n this.error(\n DiagnosticCode.Type_expected,\n tn.range()\n ); // recoverable\n }\n let initializer: Expression | null = null;\n if (tn.skip(Token.EQUALS)) {\n initializer = this.parseExpression(tn);\n if (!initializer) return null;\n }\n let range = tn.range(startPos, tn.pos);\n if ((flags & CommonFlags.DEFINITE_ASSIGNMENT) && ((flags & CommonFlags.STATIC) || isInterface || initializer)) {\n this.error(\n DiagnosticCode.A_definite_assignment_assertion_is_not_permitted_in_this_context,\n range\n );\n }\n let retField = Node.createFieldDeclaration(\n name,\n type,\n initializer,\n decorators,\n flags,\n range\n );\n tn.skip(Token.SEMICOLON);\n return retField;\n }\n return null;\n }\n\n parseIndexSignatureDeclaration(tn: Tokenizer, decorators: DecoratorNode[] | null): IndexSignatureDeclaration | null {\n\n // at: '[': 'key' ':' Type ']' ':' Type\n\n if (decorators && decorators.length) {\n this.error(\n DiagnosticCode.Decorators_are_not_valid_here,\n Range.join(decorators[0].range, decorators[decorators.length - 1].range)\n ); // recoverable\n }\n\n var start = tn.tokenPos;\n if (tn.skipIdentifier()) {\n let id = tn.readIdentifier();\n if (id == \"key\") {\n if (tn.skip(Token.COLON)) {\n let keyType = this.parseType(tn);\n if (!keyType) return null;\n if (keyType.kind != NodeKind.NAMEDTYPE) {\n this.error(\n DiagnosticCode.Type_expected,\n tn.range()\n );\n return null;\n }\n if (tn.skip(Token.CLOSEBRACKET)) {\n if (tn.skip(Token.COLON)) {\n let valueType = this.parseType(tn);\n if (!valueType) return null;\n return Node.createIndexSignatureDeclaration(keyType, valueType, tn.range(start, tn.pos));\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"]\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"key\"\n );\n }\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseNamespace(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): NamespaceDeclaration | null {\n\n // at 'namespace': Identifier '{' (Variable | Function)* '}'\n\n if (tn.skipIdentifier()) {\n let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n if (tn.skip(Token.OPENBRACE)) {\n let members = new Array();\n let declaration = Node.createNamespaceDeclaration(\n identifier,\n members,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n while (!tn.skip(Token.CLOSEBRACE)) {\n let member = this.parseTopLevelStatement(tn, declaration);\n if (member) members.push(member);\n else {\n this.skipStatement(tn);\n if (tn.skip(Token.ENDOFFILE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n }\n declaration.range.end = tn.pos;\n tn.skip(Token.SEMICOLON);\n return declaration;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n }\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseExport(\n tn: Tokenizer,\n startPos: i32,\n isDeclare: bool\n ): ExportStatement | null {\n\n // at 'export': '{' ExportMember (',' ExportMember)* }' ('from' StringLiteral)? ';'?\n\n var path: StringLiteralExpression | null = null;\n if (tn.skip(Token.OPENBRACE)) {\n let members = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n let member = this.parseExportMember(tn);\n if (!member) return null;\n members.push(member);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEBRACE)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n }\n if (tn.skip(Token.FROM)) {\n if (tn.skip(Token.STRINGLITERAL)) {\n path = Node.createStringLiteralExpression(tn.readString(), tn.range());\n } else {\n this.error(\n DiagnosticCode.String_literal_expected,\n tn.range()\n );\n return null;\n }\n }\n let ret = Node.createExportStatement(members, path, isDeclare, tn.range(startPos, tn.pos));\n let internalPath = ret.internalPath;\n if (internalPath !== null && !this.seenlog.has(internalPath)) {\n this.dependees.set(internalPath, this.currentSource);\n this.backlog.push(internalPath);\n this.seenlog.add(internalPath);\n }\n tn.skip(Token.SEMICOLON);\n return ret;\n } else if (tn.skip(Token.ASTERISK)) {\n if (tn.skip(Token.FROM)) {\n if (tn.skip(Token.STRINGLITERAL)) {\n path = Node.createStringLiteralExpression(tn.readString(), tn.range());\n let ret = Node.createExportStatement(null, path, isDeclare, tn.range(startPos, tn.pos));\n let internalPath = assert(ret.internalPath);\n let source = tn.source;\n if (!source.exportPaths) source.exportPaths = new Set();\n source.exportPaths.add(internalPath);\n if (!this.seenlog.has(internalPath)) {\n this.dependees.set(internalPath, this.currentSource);\n this.backlog.push(internalPath);\n }\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode.String_literal_expected,\n tn.range()\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"from\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n }\n return null;\n }\n\n parseExportMember(\n tn: Tokenizer\n ): ExportMember | null {\n\n // before: Identifier ('as' Identifier)?\n\n if (tn.skipIdentifier()) {\n let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n let asIdentifier: IdentifierExpression | null = null;\n if (tn.skip(Token.AS)) {\n if (tn.skipIdentifier(IdentifierHandling.ALWAYS)) {\n asIdentifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n }\n return Node.createExportMember(\n identifier,\n asIdentifier,\n asIdentifier\n ? Range.join(identifier.range, asIdentifier.range)\n : identifier.range\n );\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseExportDefaultAlias(\n tn: Tokenizer,\n startPos: i32,\n defaultStart: i32,\n defaultEnd: i32\n ): ExportStatement {\n\n // at 'export' 'default': [Known-To-Be-]Identifier\n\n var name = tn.readIdentifier();\n var range = tn.range();\n var ret = Node.createExportStatement([\n Node.createExportMember(\n Node.createIdentifierExpression(name, range),\n Node.createIdentifierExpression(\"default\", tn.range(defaultStart, defaultEnd)),\n range\n )\n ], null, false, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseImport(\n tn: Tokenizer\n ): ImportStatement | null {\n\n // at 'import':\n // ('{' (ImportMember (',' ImportMember)* '}') | ('*' 'as' Identifier)?\n // 'from' StringLiteral ';'?\n\n var startPos = tn.tokenPos;\n var members: ImportDeclaration[] | null = null;\n var namespaceName: IdentifierExpression | null = null;\n var skipFrom = false;\n if (tn.skip(Token.OPENBRACE)) { // import { ... } from \"file\"\n members = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n let member = this.parseImportDeclaration(tn);\n if (!member) return null;\n members.push(member);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEBRACE)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n }\n } else if (tn.skip(Token.ASTERISK)) { // import * from \"file\"\n if (tn.skip(Token.AS)) {\n if (tn.skipIdentifier()) {\n namespaceName = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"as\"\n );\n return null;\n }\n } else if (tn.skip(Token.IDENTIFIER, IdentifierHandling.PREFER)) { // import Name from \"file\"\n let name = tn.readIdentifier();\n let range = tn.range();\n members = [\n Node.createImportDeclaration(\n Node.createIdentifierExpression(\"default\", range),\n Node.createIdentifierExpression(name, range),\n range\n )\n ];\n if (tn.skip(Token.COMMA)) {\n // TODO: default + star, default + members\n this.error(\n DiagnosticCode.Operation_not_supported,\n tn.range()\n );\n return null;\n }\n } else { // import \"file\"\n skipFrom = true;\n }\n\n if (skipFrom || tn.skip(Token.FROM)) {\n if (tn.skip(Token.STRINGLITERAL)) {\n let path = Node.createStringLiteralExpression(tn.readString(), tn.range());\n let ret: ImportStatement;\n if (namespaceName) {\n assert(!members);\n ret = Node.createImportStatementWithWildcard(namespaceName, path, tn.range(startPos, tn.pos));\n } else {\n ret = Node.createImportStatement(members, path, tn.range(startPos, tn.pos));\n }\n let internalPath = ret.internalPath;\n if (!this.seenlog.has(internalPath)) {\n this.dependees.set(internalPath, this.currentSource);\n this.backlog.push(internalPath);\n }\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode.String_literal_expected,\n tn.range()\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"from\"\n );\n }\n return null;\n }\n\n parseImportDeclaration(\n tn: Tokenizer\n ): ImportDeclaration | null {\n\n // before: Identifier ('as' Identifier)?\n\n if (tn.skipIdentifier(IdentifierHandling.ALWAYS)) {\n let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n let asIdentifier: IdentifierExpression | null = null;\n if (tn.skip(Token.AS)) {\n if (tn.skipIdentifier()) {\n asIdentifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n }\n return Node.createImportDeclaration(\n identifier,\n asIdentifier,\n asIdentifier\n ? Range.join(identifier.range, asIdentifier.range)\n : identifier.range\n );\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseExportImport(\n tn: Tokenizer,\n startPos: i32\n ): ExportImportStatement | null {\n\n // at 'export' 'import': Identifier ('=' Identifier)? ';'?\n\n if (tn.skipIdentifier()) {\n let asIdentifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n if (tn.skip(Token.EQUALS)) {\n if (tn.skipIdentifier()) {\n let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n let ret = Node.createExportImportStatement(identifier, asIdentifier, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"=\"\n );\n }\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseStatement(\n tn: Tokenizer,\n topLevel: bool = false\n ): Statement | null {\n\n // at previous token\n\n var state = tn.mark();\n var token = tn.next();\n var statement: Statement | null = null;\n switch (token) {\n case Token.BREAK: {\n statement = this.parseBreak(tn);\n break;\n }\n case Token.CONST: {\n statement = this.parseVariable(tn, CommonFlags.CONST, null, tn.tokenPos);\n break;\n }\n case Token.CONTINUE: {\n statement = this.parseContinue(tn);\n break;\n }\n case Token.DO: {\n statement = this.parseDoStatement(tn);\n break;\n }\n case Token.FOR: {\n statement = this.parseForStatement(tn);\n break;\n }\n case Token.IF: {\n statement = this.parseIfStatement(tn);\n break;\n }\n case Token.LET: {\n statement = this.parseVariable(tn, CommonFlags.LET, null, tn.tokenPos);\n break;\n }\n case Token.VAR: {\n statement = this.parseVariable(tn, CommonFlags.NONE, null, tn.tokenPos);\n break;\n }\n case Token.OPENBRACE: {\n statement = this.parseBlockStatement(tn, topLevel);\n break;\n }\n case Token.RETURN: {\n if (topLevel) {\n this.error(\n DiagnosticCode.A_return_statement_can_only_be_used_within_a_function_body,\n tn.range()\n ); // recoverable\n }\n statement = this.parseReturn(tn);\n break;\n }\n case Token.SEMICOLON: {\n return Node.createEmptyStatement(tn.range(tn.tokenPos));\n }\n case Token.SWITCH: {\n statement = this.parseSwitchStatement(tn);\n break;\n }\n case Token.THROW: {\n statement = this.parseThrowStatement(tn);\n break;\n }\n case Token.TRY: {\n statement = this.parseTryStatement(tn);\n break;\n }\n case Token.VOID: {\n statement = this.parseVoidStatement(tn);\n break;\n }\n case Token.WHILE: {\n statement = this.parseWhileStatement(tn);\n break;\n }\n case Token.TYPE: { // also identifier\n if (tn.peek(false, IdentifierHandling.PREFER) == Token.IDENTIFIER) {\n statement = this.parseTypeDeclaration(tn, CommonFlags.NONE, null, tn.tokenPos);\n break;\n }\n // fall-through\n }\n default: {\n tn.reset(state);\n statement = this.parseExpressionStatement(tn);\n break;\n }\n }\n if (!statement) { // has been reported\n tn.reset(state);\n this.skipStatement(tn);\n } else {\n tn.discard(state);\n }\n return statement;\n }\n\n parseBlockStatement(\n tn: Tokenizer,\n topLevel: bool\n ): BlockStatement | null {\n\n // at '{': Statement* '}' ';'?\n\n var startPos = tn.tokenPos;\n var statements = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n let state = tn.mark();\n let statement = this.parseStatement(tn, topLevel);\n if (!statement) {\n if (tn.token == Token.ENDOFFILE) return null;\n tn.reset(state);\n this.skipStatement(tn);\n } else {\n tn.discard(state);\n statements.push(statement);\n }\n }\n var ret = Node.createBlockStatement(statements, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseBreak(\n tn: Tokenizer\n ): BreakStatement | null {\n\n // at 'break': Identifier? ';'?\n\n var identifier: IdentifierExpression | null = null;\n if (tn.peek(true) == Token.IDENTIFIER && !tn.nextTokenOnNewLine) {\n tn.next(IdentifierHandling.PREFER);\n identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n }\n var ret = Node.createBreakStatement(identifier, tn.range());\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseContinue(\n tn: Tokenizer\n ): ContinueStatement | null {\n\n // at 'continue': Identifier? ';'?\n\n var identifier: IdentifierExpression | null = null;\n if (tn.peek(true) == Token.IDENTIFIER && !tn.nextTokenOnNewLine) {\n tn.next(IdentifierHandling.PREFER);\n identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n }\n var ret = Node.createContinueStatement(identifier, tn.range());\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseDoStatement(\n tn: Tokenizer\n ): DoStatement | null {\n\n // at 'do': Statement 'while' '(' Expression ')' ';'?\n\n var startPos = tn.tokenPos;\n var statement = this.parseStatement(tn);\n if (!statement) return null;\n\n if (tn.skip(Token.WHILE)) {\n\n if (tn.skip(Token.OPENPAREN)) {\n let condition = this.parseExpression(tn);\n if (!condition) return null;\n\n if (tn.skip(Token.CLOSEPAREN)) {\n let ret = Node.createDoStatement(statement, condition, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"while\"\n );\n }\n return null;\n }\n\n parseExpressionStatement(\n tn: Tokenizer\n ): ExpressionStatement | null {\n\n // at previous token\n\n var expr = this.parseExpression(tn);\n if (!expr) return null;\n\n var ret = Node.createExpressionStatement(expr);\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseForStatement(\n tn: Tokenizer\n ): ForStatement | null {\n\n // at 'for': '(' Statement? Expression? ';' Expression? ')' Statement\n\n var startPos = tn.tokenPos;\n\n if (tn.skip(Token.OPENPAREN)) {\n let initializer: Statement | null = null;\n\n if (tn.skip(Token.CONST)) {\n initializer = this.parseVariable(tn, CommonFlags.CONST, null, tn.tokenPos);\n } else if (tn.skip(Token.LET)) {\n initializer = this.parseVariable(tn, CommonFlags.LET, null, tn.tokenPos);\n } else if (tn.skip(Token.VAR)) {\n initializer = this.parseVariable(tn, CommonFlags.NONE, null, tn.tokenPos);\n\n } else if (!tn.skip(Token.SEMICOLON)) {\n initializer = this.parseExpressionStatement(tn);\n if (!initializer) return null;\n }\n\n if (tn.token == Token.SEMICOLON) {\n let condition: ExpressionStatement | null = null;\n if (!tn.skip(Token.SEMICOLON)) {\n condition = this.parseExpressionStatement(tn);\n if (!condition) return null;\n }\n\n if (tn.token == Token.SEMICOLON) {\n let incrementor: Expression | null = null;\n if (!tn.skip(Token.CLOSEPAREN)) {\n incrementor = this.parseExpression(tn);\n if (!incrementor) return null;\n\n if (!tn.skip(Token.CLOSEPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n }\n\n let statement = this.parseStatement(tn);\n if (!statement) return null;\n\n return Node.createForStatement(\n initializer,\n condition\n ? condition.expression\n : null,\n incrementor,\n statement,\n tn.range(startPos, tn.pos)\n );\n\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \";\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \";\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n }\n return null;\n }\n\n parseIfStatement(\n tn: Tokenizer\n ): IfStatement | null {\n\n // at 'if': '(' Expression ')' Statement ('else' Statement)?\n\n var startPos = tn.tokenPos;\n if (tn.skip(Token.OPENPAREN)) {\n let condition = this.parseExpression(tn);\n if (!condition) return null;\n if (tn.skip(Token.CLOSEPAREN)) {\n let statement = this.parseStatement(tn);\n if (!statement) return null;\n let elseStatement: Statement | null = null;\n if (tn.skip(Token.ELSE)) {\n elseStatement = this.parseStatement(tn);\n if (!elseStatement) return null;\n }\n return Node.createIfStatement(\n condition,\n statement,\n elseStatement,\n tn.range(startPos, tn.pos)\n );\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n }\n return null;\n }\n\n parseSwitchStatement(\n tn: Tokenizer\n ): SwitchStatement | null {\n\n // at 'switch': '(' Expression ')' '{' SwitchCase* '}' ';'?\n\n var startPos = tn.tokenPos;\n if (tn.skip(Token.OPENPAREN)) {\n let condition = this.parseExpression(tn);\n if (!condition) return null;\n if (tn.skip(Token.CLOSEPAREN)) {\n if (tn.skip(Token.OPENBRACE)) {\n let cases = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n let case_ = this.parseSwitchCase(tn);\n if (!case_) return null;\n cases.push(case_);\n }\n let ret = Node.createSwitchStatement(condition, cases, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n }\n return null;\n }\n\n parseSwitchCase(\n tn: Tokenizer\n ): SwitchCase | null {\n\n var startPos = tn.tokenPos;\n var statements: Statement[],\n statement: Statement | null;\n\n // 'case' Expression ':' Statement*\n\n if (tn.skip(Token.CASE)) {\n let label = this.parseExpression(tn);\n if (!label) return null;\n if (tn.skip(Token.COLON)) {\n statements = new Array();\n while (tn.peek() != Token.CASE && tn.nextToken != Token.DEFAULT && tn.nextToken != Token.CLOSEBRACE) {\n statement = this.parseStatement(tn);\n if (!statement) return null;\n statements.push(statement);\n }\n return Node.createSwitchCase(label, statements, tn.range(startPos, tn.pos));\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n }\n\n // 'default' ':' Statement*\n\n } else if (tn.skip(Token.DEFAULT)) {\n if (tn.skip(Token.COLON)) {\n statements = new Array();\n while (tn.peek() != Token.CASE && tn.nextToken != Token.DEFAULT && tn.nextToken != Token.CLOSEBRACE) {\n statement = this.parseStatement(tn);\n if (!statement) return null;\n statements.push(statement);\n }\n return Node.createSwitchCase(null, statements, tn.range(startPos, tn.pos));\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._case_or_default_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseThrowStatement(\n tn: Tokenizer\n ): ThrowStatement | null {\n\n // at 'throw': Expression ';'?\n\n var startPos = tn.tokenPos;\n var expression = this.parseExpression(tn);\n if (!expression) return null;\n var ret = Node.createThrowStatement(expression, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseTryStatement(\n tn: Tokenizer\n ): TryStatement | null {\n\n // at 'try':\n // '{' Statement* '}'\n // ('catch' '(' VariableMember ')' '{' Statement* '}')?\n // ('finally' '{' Statement* '}'? ';'?\n\n var startPos = tn.tokenPos;\n var stmt: Statement | null;\n if (tn.skip(Token.OPENBRACE)) {\n let statements = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n stmt = this.parseStatement(tn);\n if (!stmt) return null;\n statements.push(stmt);\n }\n let catchVariable: IdentifierExpression | null = null;\n let catchStatements: Statement[] | null = null;\n let finallyStatements: Statement[] | null = null;\n if (tn.skip(Token.CATCH)) {\n if (!tn.skip(Token.OPENPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n return null;\n }\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n catchVariable = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n if (!tn.skip(Token.CLOSEPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n if (!tn.skip(Token.OPENBRACE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n return null;\n }\n catchStatements = [];\n while (!tn.skip(Token.CLOSEBRACE)) {\n stmt = this.parseStatement(tn);\n if (!stmt) return null;\n catchStatements.push(stmt);\n }\n }\n if (tn.skip(Token.FINALLY)) {\n if (!tn.skip(Token.OPENBRACE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n return null;\n }\n finallyStatements = [];\n while (!tn.skip(Token.CLOSEBRACE)) {\n stmt = this.parseStatement(tn);\n if (!stmt) return null;\n finallyStatements.push(stmt);\n }\n }\n if (!(catchStatements || finallyStatements)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"catch\"\n );\n return null;\n }\n let ret = Node.createTryStatement(\n statements,\n catchVariable,\n catchStatements,\n finallyStatements,\n tn.range(startPos, tn.pos)\n );\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n }\n return null;\n }\n\n parseTypeDeclaration(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): TypeDeclaration | null {\n\n // at 'type': Identifier ('<' TypeParameters '>')? '=' Type ';'?\n\n if (tn.skipIdentifier()) {\n let name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n let typeParameters: TypeParameterNode[] | null = null;\n if (tn.skip(Token.LESSTHAN)) {\n typeParameters = this.parseTypeParameters(tn);\n if (!typeParameters) return null;\n flags |= CommonFlags.GENERIC;\n }\n if (tn.skip(Token.EQUALS)) {\n let type = this.parseType(tn);\n if (!type) return null;\n let ret = Node.createTypeDeclaration(\n name,\n typeParameters,\n type,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"=\"\n );\n }\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseVoidStatement(\n tn: Tokenizer\n ): VoidStatement | null {\n\n // at 'void': Expression ';'?\n\n var startPos = tn.tokenPos;\n var expression = this.parseExpression(tn, Precedence.GROUPING);\n if (!expression) return null;\n var ret = Node.createVoidStatement(expression, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseWhileStatement(\n tn: Tokenizer\n ): WhileStatement | null {\n\n // at 'while': '(' Expression ')' Statement ';'?\n\n var startPos = tn.tokenPos;\n if (tn.skip(Token.OPENPAREN)) {\n let expression = this.parseExpression(tn);\n if (!expression) return null;\n if (tn.skip(Token.CLOSEPAREN)) {\n let statement = this.parseStatement(tn);\n if (!statement) return null;\n let ret = Node.createWhileStatement(expression, statement, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n }\n return null;\n }\n\n // expressions\n // see: http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm#climbing\n\n parseExpressionStart(\n tn: Tokenizer\n ): Expression | null {\n\n var token = tn.next(IdentifierHandling.PREFER);\n var startPos = tn.tokenPos;\n var precedence = determinePrecedenceStart(token);\n if (precedence != Precedence.NONE) {\n let operand: Expression | null;\n\n // TODO: SpreadExpression, YieldExpression (currently become unsupported UnaryPrefixExpressions)\n\n // NewExpression\n if (token == Token.NEW) {\n operand = this.parseExpression(tn, Precedence.CALL);\n if (!operand) return null;\n if (operand.kind == NodeKind.CALL) {\n return Node.createNewExpression(\n (operand).expression,\n (operand).typeArguments,\n (operand).arguments,\n tn.range(startPos, tn.pos)\n );\n } else {\n this.error(\n DiagnosticCode.Operation_not_supported,\n tn.range()\n );\n }\n return null;\n } else {\n operand = this.parseExpression(tn, precedence);\n if (!operand) return null;\n }\n\n // UnaryPrefixExpression\n if (token == Token.PLUS_PLUS || token == Token.MINUS_MINUS) {\n if (\n operand.kind != NodeKind.IDENTIFIER &&\n operand.kind != NodeKind.ELEMENTACCESS &&\n operand.kind != NodeKind.PROPERTYACCESS\n ) {\n this.error(\n DiagnosticCode.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,\n operand.range\n );\n }\n }\n return Node.createUnaryPrefixExpression(token, operand, tn.range(startPos, tn.pos));\n }\n\n var expr: Expression | null = null;\n switch (token) {\n\n case Token.NULL: return Node.createNullExpression(tn.range());\n case Token.TRUE: return Node.createTrueExpression(tn.range());\n case Token.FALSE: return Node.createFalseExpression(tn.range());\n\n // ParenthesizedExpression\n // FunctionExpression\n case Token.OPENPAREN: {\n\n // determine whether this is a function expression\n if (tn.skip(Token.CLOSEPAREN)) { // must be a function expression (fast route)\n return this.parseFunctionExpressionCommon(\n tn,\n Node.createEmptyIdentifierExpression(tn.range(startPos)),\n [],\n ArrowKind.ARROW_PARENTHESIZED\n );\n }\n let state = tn.mark();\n let again = true;\n do {\n switch (tn.next(IdentifierHandling.PREFER)) {\n\n // function expression\n case Token.DOT_DOT_DOT: {\n tn.reset(state);\n return this.parseFunctionExpression(tn);\n }\n // can be both\n case Token.IDENTIFIER: {\n tn.readIdentifier();\n switch (tn.next()) {\n\n // if we got here, check for arrow\n case Token.CLOSEPAREN: {\n if (\n !tn.skip(Token.COLON) &&\n !tn.skip(Token.EQUALS_GREATERTHAN)\n ) {\n again = false;\n break;\n }\n // fall-through\n }\n // function expression\n case Token.COLON: { // type annotation\n tn.reset(state);\n return this.parseFunctionExpression(tn);\n }\n // optional parameter or parenthesized\n case Token.QUESTION: {\n if (\n tn.skip(Token.COLON) || // optional parameter with type\n tn.skip(Token.COMMA) || // optional parameter without type\n tn.skip(Token.CLOSEPAREN) // last optional parameter without type\n ) {\n tn.reset(state);\n return this.parseFunctionExpression(tn);\n }\n again = false; // parenthesized\n break;\n }\n case Token.COMMA: {\n break; // continue\n }\n // parenthesized expression\n // case Token.EQUALS: // missing type annotation for simplicity\n default: {\n again = false;\n break;\n }\n }\n break;\n }\n // parenthesized expression\n default: {\n again = false;\n break;\n }\n }\n } while (again);\n tn.reset(state);\n\n // parse parenthesized\n expr = this.parseExpression(tn);\n if (!expr) return null;\n if (!tn.skip(Token.CLOSEPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n return Node.createParenthesizedExpression(expr, tn.range(startPos, tn.pos));\n }\n // ArrayLiteralExpression\n case Token.OPENBRACKET: {\n let elementExpressions = new Array();\n while (!tn.skip(Token.CLOSEBRACKET)) {\n if (tn.peek() == Token.COMMA) {\n expr = null; // omitted\n } else {\n expr = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!expr) return null;\n }\n elementExpressions.push(expr);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEBRACKET)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"]\"\n );\n return null;\n }\n }\n }\n return Node.createArrayLiteralExpression(elementExpressions, tn.range(startPos, tn.pos));\n }\n // ObjectLiteralExpression\n case Token.OPENBRACE: {\n let startPos = tn.tokenPos;\n let names = new Array();\n let values = new Array();\n let name: IdentifierExpression;\n while (!tn.skip(Token.CLOSEBRACE)) {\n if (!tn.skipIdentifier()) {\n if (!tn.skip(Token.STRINGLITERAL)) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range(),\n );\n return null;\n }\n name = Node.createIdentifierExpression(tn.readString(), tn.range());\n name.isQuoted = true;\n } else {\n name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n }\n names.push(name);\n if (tn.skip(Token.COLON)) {\n let value = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!value) return null;\n values.push(value);\n } else if (!name.isQuoted) {\n values.push(name);\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n return null;\n }\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEBRACE)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n }\n return Node.createObjectLiteralExpression(names, values, tn.range(startPos, tn.pos));\n }\n // AssertionExpression (unary prefix)\n case Token.LESSTHAN: {\n let toType = this.parseType(tn);\n if (!toType) return null;\n if (!tn.skip(Token.GREATERTHAN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \">\"\n );\n return null;\n }\n expr = this.parseExpression(tn, Precedence.CALL);\n if (!expr) return null;\n return Node.createAssertionExpression(\n AssertionKind.PREFIX,\n expr,\n toType,\n tn.range(startPos, tn.pos)\n );\n }\n case Token.IDENTIFIER: {\n let identifierText = tn.readIdentifier();\n if (identifierText == \"null\") return Node.createNullExpression(tn.range()); // special\n let identifier = Node.createIdentifierExpression(identifierText, tn.range(startPos, tn.pos));\n if (tn.peek(true) == Token.EQUALS_GREATERTHAN && !tn.nextTokenOnNewLine) {\n return this.parseFunctionExpressionCommon(\n tn,\n Node.createEmptyIdentifierExpression(tn.range(startPos)),\n [\n Node.createParameter(\n identifier,\n Node.createOmittedType(identifier.range.atEnd),\n null,\n ParameterKind.DEFAULT,\n identifier.range\n )\n ],\n ArrowKind.ARROW_SINGLE,\n startPos\n );\n }\n return identifier;\n }\n case Token.THIS: {\n return Node.createThisExpression(tn.range(startPos, tn.pos));\n }\n case Token.CONSTRUCTOR: {\n return Node.createConstructorExpression(tn.range(startPos, tn.pos));\n }\n case Token.SUPER: {\n if (tn.peek() != Token.DOT && tn.nextToken != Token.OPENPAREN) {\n this.error(\n DiagnosticCode._super_must_be_followed_by_an_argument_list_or_member_access,\n tn.range()\n );\n }\n return Node.createSuperExpression(tn.range(startPos, tn.pos));\n }\n case Token.STRINGLITERAL: {\n return Node.createStringLiteralExpression(tn.readString(), tn.range(startPos, tn.pos));\n }\n case Token.INTEGERLITERAL: {\n return Node.createIntegerLiteralExpression(tn.readInteger(), tn.range(startPos, tn.pos));\n }\n case Token.FLOATLITERAL: {\n return Node.createFloatLiteralExpression(tn.readFloat(), tn.range(startPos, tn.pos));\n }\n // RegexpLiteralExpression\n // note that this also continues on invalid ones so the surrounding AST remains intact\n case Token.SLASH: {\n let regexpPattern = tn.readRegexpPattern(); // also reports\n if (!tn.skip(Token.SLASH)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"/\"\n );\n return null;\n }\n return Node.createRegexpLiteralExpression(\n regexpPattern,\n tn.readRegexpFlags(), // also reports\n tn.range(startPos, tn.pos)\n );\n }\n case Token.FUNCTION: {\n return this.parseFunctionExpression(tn);\n }\n case Token.CLASS: {\n return this.parseClassExpression(tn);\n }\n default: {\n if (token == Token.ENDOFFILE) {\n this.error(\n DiagnosticCode.Unexpected_end_of_text,\n tn.range(startPos)\n );\n } else {\n this.error(\n DiagnosticCode.Expression_expected,\n tn.range()\n );\n }\n return null;\n }\n }\n }\n\n tryParseTypeArgumentsBeforeArguments(\n tn: Tokenizer\n ): TypeNode[] | null {\n\n // at '<': Type (',' Type)* '>' '('\n\n var state = tn.mark();\n if (!tn.skip(Token.LESSTHAN)) return null;\n var typeArguments: TypeNode[] | null = null;\n do {\n if (tn.peek() === Token.GREATERTHAN) {\n break;\n }\n let type = this.parseType(tn, true, true);\n if (!type) {\n tn.reset(state);\n return null;\n }\n if (!typeArguments) typeArguments = [ type ];\n else typeArguments.push(type);\n } while (tn.skip(Token.COMMA));\n if (tn.skip(Token.GREATERTHAN) && tn.skip(Token.OPENPAREN)) {\n return typeArguments;\n }\n tn.reset(state);\n return null;\n }\n\n parseArguments(\n tn: Tokenizer\n ): Expression[] | null {\n\n // at '(': (Expression (',' Expression)*)? ')'\n\n var args = new Array();\n while (!tn.skip(Token.CLOSEPAREN)) {\n let expr = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!expr) return null;\n args.push(expr);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEPAREN)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n }\n }\n return args;\n }\n\n parseExpression(\n tn: Tokenizer,\n precedence: Precedence = Precedence.COMMA\n ): Expression | null {\n assert(precedence != Precedence.NONE);\n\n var expr = this.parseExpressionStart(tn);\n if (!expr) return null;\n expr = this.maybeParseCallExpression(tn, expr); // simple call like on an Identifier\n\n var startPos = expr.range.start;\n var token: Token;\n var next: Expression | null = null;\n var nextPrecedence: Precedence;\n while (\n (nextPrecedence = determinePrecedence(token = tn.peek())) >= precedence\n ) { // precedence climbing\n tn.next();\n switch (token) {\n // AssertionExpression\n case Token.AS: {\n let toType = this.parseType(tn); // reports\n if (!toType) return null;\n expr = Node.createAssertionExpression(\n AssertionKind.AS,\n expr,\n toType,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n case Token.EXCLAMATION: {\n expr = Node.createAssertionExpression(\n AssertionKind.NONNULL,\n expr,\n null,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n // InstanceOfExpression\n case Token.INSTANCEOF: {\n let isType = this.parseType(tn); // reports\n if (!isType) return null;\n expr = Node.createInstanceOfExpression(\n expr,\n isType,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n // ElementAccessExpression\n case Token.OPENBRACKET: {\n next = this.parseExpression(tn); // reports\n if (!next) return null;\n if (!tn.skip(Token.CLOSEBRACKET)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"]\"\n );\n return null;\n }\n expr = Node.createElementAccessExpression(\n expr,\n next,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n // UnaryPostfixExpression\n case Token.PLUS_PLUS:\n case Token.MINUS_MINUS: {\n if (\n expr.kind != NodeKind.IDENTIFIER &&\n expr.kind != NodeKind.ELEMENTACCESS &&\n expr.kind != NodeKind.PROPERTYACCESS\n ) {\n this.error(\n DiagnosticCode.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,\n expr.range\n );\n }\n expr = Node.createUnaryPostfixExpression(\n token,\n expr,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n // TernaryExpression\n case Token.QUESTION: {\n let ifThen = this.parseExpression(tn);\n if (!ifThen) return null;\n if (!tn.skip(Token.COLON)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n return null;\n }\n let ifElse = this.parseExpression(tn, precedence > Precedence.COMMA\n ? Precedence.COMMA + 1\n : Precedence.COMMA\n );\n if (!ifElse) return null;\n expr = Node.createTernaryExpression(\n expr,\n ifThen,\n ifElse,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n // CommaExpression\n case Token.COMMA: {\n let commaExprs: Expression[] = [ expr ];\n do {\n expr = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!expr) return null;\n commaExprs.push(expr);\n } while (tn.skip(Token.COMMA));\n expr = Node.createCommaExpression(commaExprs, tn.range(startPos, tn.pos));\n break;\n }\n default: {\n\n // PropertyAccessExpression\n if (token == Token.DOT) {\n if (tn.skipIdentifier()) {\n next = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else {\n next = this.parseExpression(tn,\n isRightAssociative(token)\n ? nextPrecedence\n : nextPrecedence + 1\n );\n if (!next) return null;\n }\n if (next.kind == NodeKind.IDENTIFIER) { // expr '.' Identifier\n expr = Node.createPropertyAccessExpression(\n expr,\n next,\n tn.range(startPos, tn.pos)\n );\n } else if (next.kind == NodeKind.CALL) { // expr '.' CallExpression\n expr = this.joinPropertyCall(tn, startPos, expr, next);\n if (!expr) return null;\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n next.range\n );\n return null;\n }\n\n // BinaryExpression\n } else {\n next = this.parseExpression(tn,\n isRightAssociative(token)\n ? nextPrecedence\n : nextPrecedence + 1\n );\n if (!next) return null;\n expr = Node.createBinaryExpression(token, expr, next, tn.range(startPos, tn.pos));\n }\n break;\n }\n }\n expr = this.maybeParseCallExpression(tn, expr); // compound call like on an ElementAccess\n }\n return expr;\n }\n\n private joinPropertyCall(\n tn: Tokenizer,\n startPos: i32,\n expr: Expression,\n call: CallExpression\n ): Expression | null {\n var callee = call.expression;\n switch (callee.kind) {\n case NodeKind.IDENTIFIER: { // join property access and use as call target\n call.expression = Node.createPropertyAccessExpression(\n expr,\n callee,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n case NodeKind.CALL: { // join call target und wrap the original call around it\n let inner = this.joinPropertyCall(tn, startPos, expr, callee);\n if (!inner) return null;\n call.expression = inner;\n call.range = tn.range(startPos, tn.pos);\n break;\n }\n default: {\n this.error(\n DiagnosticCode.Identifier_expected,\n call.range\n );\n return null;\n }\n }\n return call;\n }\n\n private maybeParseCallExpression(\n tn: Tokenizer,\n expr: Expression\n ): Expression {\n if (nodeIsCallable(expr.kind)) {\n let typeArguments: TypeNode[] | null = null;\n while (\n tn.skip(Token.OPENPAREN)\n ||\n nodeIsGenericCallable(expr.kind) && (typeArguments = this.tryParseTypeArgumentsBeforeArguments(tn)) !== null\n ) {\n let args = this.parseArguments(tn);\n if (!args) break;\n expr = Node.createCallExpression( // is again callable\n expr,\n typeArguments,\n args,\n tn.range(expr.range.start, tn.pos)\n );\n }\n }\n return expr;\n }\n\n /** Skips over a statement on errors in an attempt to reduce unnecessary diagnostic noise. */\n skipStatement(tn: Tokenizer): void {\n tn.peek(true);\n if (tn.nextTokenOnNewLine) tn.next(); // if reset() to the previous line\n do {\n let nextToken = tn.peek(true);\n if (\n nextToken == Token.ENDOFFILE || // next step should handle this\n nextToken == Token.SEMICOLON // end of the statement for sure\n ) {\n tn.next();\n break;\n }\n if (tn.nextTokenOnNewLine) break; // end of the statement maybe\n switch (tn.next()) {\n case Token.IDENTIFIER: {\n tn.readIdentifier();\n break;\n }\n case Token.STRINGLITERAL: {\n tn.readString();\n break;\n }\n case Token.INTEGERLITERAL: {\n tn.readInteger();\n break;\n }\n case Token.FLOATLITERAL: {\n tn.readFloat();\n break;\n }\n case Token.OPENBRACE: {\n this.skipBlock(tn);\n break;\n }\n }\n } while (true);\n }\n\n /** Skips over a block on errors in an attempt to reduce unnecessary diagnostic noise. */\n skipBlock(tn: Tokenizer): void {\n // at '{': ... '}'\n var depth = 1;\n var again = true;\n do {\n switch (tn.next()) {\n case Token.ENDOFFILE: {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n again = false;\n break;\n }\n case Token.OPENBRACE: {\n ++depth;\n break;\n }\n case Token.CLOSEBRACE: {\n --depth;\n if (!depth) again = false;\n break;\n }\n case Token.IDENTIFIER: {\n tn.readIdentifier();\n break;\n }\n case Token.STRINGLITERAL: {\n tn.readString();\n break;\n }\n case Token.INTEGERLITERAL: {\n tn.readInteger();\n break;\n }\n case Token.FLOATLITERAL: {\n tn.readFloat();\n break;\n }\n }\n } while (again);\n }\n}\n\n/** Operator precedence from least to largest. */\nexport const enum Precedence {\n NONE,\n COMMA,\n SPREAD,\n YIELD,\n ASSIGNMENT,\n CONDITIONAL,\n LOGICAL_OR,\n LOGICAL_AND,\n BITWISE_OR,\n BITWISE_XOR,\n BITWISE_AND,\n EQUALITY,\n RELATIONAL,\n SHIFT,\n ADDITIVE,\n MULTIPLICATIVE,\n EXPONENTIATED,\n UNARY_PREFIX,\n UNARY_POSTFIX,\n CALL,\n MEMBERACCESS,\n GROUPING\n}\n\n/** Determines the precedence of a starting token. */\nfunction determinePrecedenceStart(kind: Token): Precedence {\n switch (kind) {\n case Token.DOT_DOT_DOT: return Precedence.SPREAD;\n case Token.YIELD: return Precedence.YIELD;\n case Token.EXCLAMATION:\n case Token.TILDE:\n case Token.PLUS:\n case Token.MINUS:\n case Token.PLUS_PLUS:\n case Token.MINUS_MINUS:\n case Token.TYPEOF:\n case Token.VOID:\n case Token.DELETE: return Precedence.UNARY_PREFIX;\n case Token.NEW: return Precedence.MEMBERACCESS;\n }\n return Precedence.NONE;\n}\n\n/** Determines the precende of a non-starting token. */\nfunction determinePrecedence(kind: Token): Precedence {\n switch (kind) {\n case Token.COMMA: return Precedence.COMMA;\n case Token.EQUALS:\n case Token.PLUS_EQUALS:\n case Token.MINUS_EQUALS:\n case Token.ASTERISK_ASTERISK_EQUALS:\n case Token.ASTERISK_EQUALS:\n case Token.SLASH_EQUALS:\n case Token.PERCENT_EQUALS:\n case Token.LESSTHAN_LESSTHAN_EQUALS:\n case Token.GREATERTHAN_GREATERTHAN_EQUALS:\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:\n case Token.AMPERSAND_EQUALS:\n case Token.CARET_EQUALS:\n case Token.BAR_EQUALS: return Precedence.ASSIGNMENT;\n case Token.QUESTION: return Precedence.CONDITIONAL;\n case Token.BAR_BAR: return Precedence.LOGICAL_OR;\n case Token.AMPERSAND_AMPERSAND: return Precedence.LOGICAL_AND;\n case Token.BAR: return Precedence.BITWISE_OR;\n case Token.CARET: return Precedence.BITWISE_XOR;\n case Token.AMPERSAND: return Precedence.BITWISE_AND;\n case Token.EQUALS_EQUALS:\n case Token.EXCLAMATION_EQUALS:\n case Token.EQUALS_EQUALS_EQUALS:\n case Token.EXCLAMATION_EQUALS_EQUALS: return Precedence.EQUALITY;\n case Token.AS:\n case Token.IN:\n case Token.INSTANCEOF:\n case Token.LESSTHAN:\n case Token.GREATERTHAN:\n case Token.LESSTHAN_EQUALS:\n case Token.GREATERTHAN_EQUALS: return Precedence.RELATIONAL;\n case Token.LESSTHAN_LESSTHAN:\n case Token.GREATERTHAN_GREATERTHAN:\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: return Precedence.SHIFT;\n case Token.PLUS:\n case Token.MINUS: return Precedence.ADDITIVE;\n case Token.ASTERISK:\n case Token.SLASH:\n case Token.PERCENT: return Precedence.MULTIPLICATIVE;\n case Token.ASTERISK_ASTERISK: return Precedence.EXPONENTIATED;\n case Token.PLUS_PLUS:\n case Token.MINUS_MINUS: return Precedence.UNARY_POSTFIX;\n case Token.DOT:\n case Token.NEW:\n case Token.OPENBRACKET:\n case Token.EXCLAMATION: return Precedence.MEMBERACCESS;\n }\n return Precedence.NONE;\n}\n\n/** Determines whether a non-starting token is right associative. */\nfunction isRightAssociative(kind: Token): bool {\n switch (kind) {\n case Token.EQUALS:\n case Token.PLUS_EQUALS:\n case Token.MINUS_EQUALS:\n case Token.ASTERISK_ASTERISK_EQUALS:\n case Token.ASTERISK_EQUALS:\n case Token.SLASH_EQUALS:\n case Token.PERCENT_EQUALS:\n case Token.LESSTHAN_LESSTHAN_EQUALS:\n case Token.GREATERTHAN_GREATERTHAN_EQUALS:\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:\n case Token.AMPERSAND_EQUALS:\n case Token.CARET_EQUALS:\n case Token.BAR_EQUALS:\n case Token.QUESTION:\n case Token.ASTERISK_ASTERISK: return true;\n default: return false;\n }\n}\n","/**\n * JavaScript glue code.\n * @module glue/js\n * @preferred\n *//***/\n\n/// \n\nimport \"./binaryen\"; // must be first so portable can pick up the memory implementation\nimport \"../../../std/portable/index\";\nimport \"./float\";\nimport \"./i64\";\n\nimport { Module } from \"../../module\";\n\nModule.prototype.toText = function(this: Module) {\n // NOTE: Conversion to StackIR can yield conversion artifacts like sequences\n // of unreachable statements not actually emitted by the compiler. Optimizing\n // StackIR removes these again, but may also suppress useless code emitted by\n // the compiler that's then no longer visible in tests. Both not ideal.\n return binaryen.wrapModule(this.ref).emitStackIR(/* optimize-stack-ir */ true);\n};\n\nModule.prototype.toAsmjs = function(this: Module) {\n return binaryen.wrapModule(this.ref).emitAsmjs();\n};\n","// Copy Binaryen exports to global scope\n\nconst binaryen = global.Binaryen || require(\"binaryen\");\nglobal.binaryen = binaryen;\n\nfor (var key in binaryen) {\n if (key.startsWith(\"_Binaryen\") || key.startsWith(\"_Relooper\")) global[key] = binaryen[key];\n}\n\n// Utilize Binaryen's heap\n\nglobal.__memory_allocate = binaryen._malloc;\nglobal.__memory_free = binaryen._free;\nglobal.__memory_copy = binaryen._memmove;\nglobal.__store = function(ptr, val) { binaryen.HEAPU8[ptr] = val; };\nglobal.__load = function(ptr) { return binaryen.HEAPU8[ptr]; };\n","module.exports = __WEBPACK_EXTERNAL_MODULE__20__;","/** @module std/portable *//***/\n\nvar globalScope = typeof window !== \"undefined\" && window || typeof global !== \"undefined\" && global || self;\n\nglobalScope.ASC_TARGET = 2; // Target.JS\nglobalScope.ASC_NO_ASSERT = false;\nglobalScope.ASC_MEMORY_BASE = 0;\nglobalScope.ASC_OPTIMIZE_LEVEL = 3;\nglobalScope.ASC_SHRINK_LEVEL = 0;\nglobalScope.ASC_FEATURE_MUTABLE_GLOBAL = false;\nglobalScope.ASC_FEATURE_SIGN_EXTENSION = false;\nglobalScope.ASC_FEATURE_BULK_MEMORY = false;\nglobalScope.ASC_FEATURE_SIMD = false;\nglobalScope.ASC_FEATURE_THREADS = false;\n\nvar F64 = new Float64Array(1);\nvar U64 = new Uint32Array(F64.buffer);\n\nObject.defineProperties(\n globalScope[\"i8\"] = function i8(value) { return value << 24 >> 24; }\n, {\n \"MIN_VALUE\": { value: -128, writable: false },\n \"MAX_VALUE\": { value: 127, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"i16\"] = function i16(value) { return value << 16 >> 16; }\n, {\n \"MIN_VALUE\": { value: -32768, writable: false },\n \"MAX_VALUE\": { value: 32767, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"i32\"] = globalScope[\"isize\"] = function i32(value) { return value | 0; }\n, {\n \"MIN_VALUE\": { value: -2147483648, writable: false },\n \"MAX_VALUE\": { value: 2147483647, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"u8\"] = function u8(value) { return value & 0xff; }\n, {\n \"MIN_VALUE\": { value: 0, writable: false },\n \"MAX_VALUE\": { value: 255, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"u16\"] = function u16(value) { return value & 0xffff; }\n, {\n \"MIN_VALUE\": { value: 0, writable: false },\n \"MAX_VALUE\": { value: 65535, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"u32\"] = globalScope[\"usize\"] = function u32(value) { return value >>> 0; }\n, {\n \"MIN_VALUE\": { value: 0, writable: false },\n \"MAX_VALUE\": { value: 4294967295, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"bool\"] = function bool(value) { return !!value; }\n, {\n \"MIN_VALUE\": { value: false, writable: false },\n \"MAX_VALUE\": { value: true, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"f32\"] = function f32(value) { return Math.fround(value); }\n, {\n \"EPSILON\": { value: Math.fround(1.1920929e-07), writable: false },\n \"MIN_VALUE\": { value: Math.fround(1.4012985e-45), writable: false },\n \"MAX_VALUE\": { value: Math.fround(3.4028235e+38), writable: false },\n \"MIN_NORMAL_VALUE\": { value: Math.fround(1.17549435e-38), writable: false },\n \"MIN_SAFE_INTEGER\": { value: -16777215, writable: false },\n \"MAX_SAFE_INTEGER\": { value: 16777215, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"f64\"] = function f64(value) { return +value; }\n, {\n \"EPSILON\": { value: 2.2204460492503131e-16, writable: false },\n \"MIN_VALUE\": { value: 5e-324, writable: false },\n \"MAX_VALUE\": { value: 1.7976931348623157e+308, writable: false },\n \"MIN_NORMAL_VALUE\": { value: 2.2250738585072014e-308 , writable: false },\n \"MIN_SAFE_INTEGER\": { value: -9007199254740991, writable: false },\n \"MAX_SAFE_INTEGER\": { value: 9007199254740991, writable: false }\n});\n\nglobalScope[\"clz\"] = Math.clz32;\n\nglobalScope[\"ctz\"] = function ctz(value) {\n var c = Math.clz32(value & -value);\n return value ? 31 - c : c;\n};\n\nglobalScope[\"popcnt\"] = function popcnt(value) {\n value -= value >>> 1 & 0x55555555;\n value = (value & 0x33333333) + (value >>> 2 & 0x33333333);\n return (((value + (value >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24;\n};\n\nglobalScope[\"rotl\"] = function rotl(value, shift) {\n shift &= 31;\n return (value << shift) | (value >>> (32 - shift));\n};\n\nglobalScope[\"rotr\"] = function rotr(value, shift) {\n shift &= 31;\n return (value >>> shift) | (value << (32 - shift));\n};\n\nglobalScope[\"abs\"] = Math.abs;\n\nglobalScope[\"max\"] = Math.max;\n\nglobalScope[\"min\"] = Math.min;\n\nglobalScope[\"ceil\"] = Math.ceil;\n\nglobalScope[\"floor\"] = Math.floor;\n\n// Adopt code from https://github.com/rfk/wasm-polyfill\nglobalScope[\"nearest\"] = function nearest(value) {\n if (Math.abs(value - Math.trunc(value)) === 0.5) {\n return 2.0 * Math.round(value * 0.5);\n }\n return Math.round(value);\n};\n\nglobalScope[\"select\"] = function select(ifTrue, ifFalse, condition) {\n return condition ? ifTrue : ifFalse;\n};\n\nglobalScope[\"sqrt\"] = Math.sqrt;\n\nglobalScope[\"trunc\"] = Math.trunc;\n\nglobalScope[\"copysign\"] = function copysign(x, y) {\n return Math.abs(x) * Math.sign(y);\n};\n\nglobalScope[\"bswap\"] = function bswap(value) {\n var a = value >> 8 & 0x00FF00FF;\n var b = (value & 0x00FF00FF) << 8;\n value = a | b;\n a = value >> 16 & 0x0000FFFF;\n b = (value & 0x0000FFFF) << 16;\n return a | b;\n};\n\nglobalScope[\"bswap16\"] = function bswap16(value) {\n return ((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000);\n};\n\nfunction UnreachableError() {\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnreachableError);\n } else {\n this.stack = this.name + \": \" + this.message + \"\\n\" + new Error().stack;\n }\n}\nUnreachableError.prototype = Object.create(Error.prototype);\nUnreachableError.prototype.name = \"UnreachableError\";\nUnreachableError.prototype.message = \"unreachable\";\n\nglobalScope[\"unreachable\"] = function unreachable() {\n throw new UnreachableError();\n};\n\nfunction AssertionError(message) {\n this.message = message || \"assertion failed\";\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, AssertionError);\n } else {\n this.stack = this.name + \": \" + this.message + \"\\n\" + new Error().stack;\n }\n}\nAssertionError.prototype = Object.create(Error.prototype);\nAssertionError.prototype.name = \"AssertionError\";\n\nglobalScope[\"assert\"] = function assert(isTrueish, message) {\n if (isTrueish) return isTrueish;\n throw new AssertionError(message);\n};\n\nglobalScope[\"changetype\"] = function changetype(value) {\n return value;\n};\n\nString[\"fromCharCodes\"] = function fromCharCodes(arr) {\n return String.fromCharCode.apply(String, arr);\n};\n\nString[\"fromCodePoints\"] = function fromCodePoints(arr) {\n return String.fromCodePoint.apply(String, arr);\n};\n\nif (!String.prototype.replaceAll) {\n Object.defineProperty(String.prototype, \"replaceAll\", {\n value: function replaceAll(search, replacment) {\n var res = this.split(search).join(replacment);\n if (!search.length) res = replacment + res + replacment;\n return res;\n }\n });\n}\n\nglobalScope[\"isInteger\"] = Number.isInteger;\n\nglobalScope[\"isFloat\"] = function isFloat(arg) {\n return typeof arg === \"number\";\n};\n\nglobalScope[\"isNullable\"] = function isNullable(arg) {\n return true;\n}\n\nglobalScope[\"isReference\"] = function isReference(arg) {\n return typeof arg === \"object\" || typeof arg === \"string\";\n};\n\nglobalScope[\"isFunction\"] = function isFunction(arg) {\n return typeof arg === \"function\";\n}\n\nglobalScope[\"isString\"] = function isString(arg) {\n return typeof arg === \"string\" || arg instanceof String;\n};\n\nglobalScope[\"isArray\"] = Array.isArray;\nglobalScope[\"isArrayLike\"] = function isArrayLike(expr) {\n return expr\n && typeof expr === 'object'\n && typeof expr.length === 'number'\n && expr.length >= 0\n && Math.trunc(expr.length) === expr.length;\n};\n\nArray.create = function(capacity) {\n var arr = new Array(capacity);\n arr.length = 0;\n return arr;\n};\n\nglobalScope[\"isDefined\"] = function isDefined(expr) {\n return typeof expr !== \"undefined\";\n}\n\nglobalScope[\"isConstant\"] = function isConstant(expr) {\n return false;\n};\n\nglobalScope[\"unchecked\"] = function unchecked(expr) {\n return expr;\n};\n\nglobalScope[\"fmod\"] = function fmod(x, y) {\n return x % y;\n};\n\nglobalScope[\"fmodf\"] = function fmodf(x, y) {\n return Math.fround(x % y);\n};\n\nglobalScope[\"JSMath\"] = Math;\n\ntry {\nObject.defineProperties(globalScope[\"JSMath\"], {\n sincos_sin: { value: 0.0, writable: true },\n sincos_cos: { value: 0.0, writable: true },\n signbit: {\n value: function signbit(x) {\n F64[0] = x; return Boolean((U64[1] >>> 31) & (x == x));\n }\n },\n sincos: {\n value: function sincos(x) {\n this.sincos_sin = Math.sin(x);\n this.sincos_cos = Math.cos(x);\n }\n }\n});\n}catch (e) {}\n\nglobalScope[\"memory\"] = (() => {\n var HEAP = new Uint8Array(0);\n var HEAP_OFFSET = 0;\n return {\n allocate: globalScope[\"__memory_allocate\"] || function allocate(size) {\n if (!(size >>>= 0)) return 0;\n if (HEAP_OFFSET + size > HEAP.length) {\n var oldHeap = HEAP;\n HEAP = new Uint8Array(Math.max(65536, HEAP.length + size, HEAP.length * 2));\n HEAP.set(oldHeap);\n }\n var ptr = HEAP_OFFSET;\n if ((HEAP_OFFSET += size) & 7) HEAP_OFFSET = (HEAP_OFFSET | 7) + 1;\n return ptr;\n },\n fill: globalScope[\"__memory_fill\"] || function fill(dest, value, size) {\n HEAP.fill(value, dest, dest + size);\n },\n free: globalScope[\"__memory_free\"] || function free(ptr) { },\n copy: globalScope[\"__memory_copy\"] || function copy(dest, src, size) {\n HEAP.copyWithin(dest, src, src + size);\n },\n reset: globalScope[\"__memory_reset\"] || function reset() {\n HEAP = new Uint8Array(0);\n HEAP_OFFSET = 0;\n }\n };\n})();\n\nglobalScope[\"store\"] = globalScope[\"__store\"] || function store(ptr, value, offset) {\n HEAP[(ptr | 0) + (offset | 0)] = value;\n};\n\nglobalScope[\"load\"] = globalScope[\"__load\"] || function load(ptr, offset) {\n return HEAP[(ptr | 0) + (offset | 0)];\n};\n\nglobalScope[\"unmanaged\"] = function() {};\n","const F64 = new Float64Array(1);\nconst F32 = new Float32Array(F64.buffer);\nconst I32 = new Int32Array(F64.buffer);\n\nglobal.f32_as_i32 = function(value) {\n F32[0] = value;\n return I32[0];\n};\n\nglobal.i32_as_f32 = function(value) {\n I32[0] = value;\n return F32[0];\n};\n\nglobal.f64_as_i64 = function(value) {\n F64[0] = value;\n return i64_new(I32[0], I32[1]);\n};\n\nglobal.i64_as_f64 = function(value) {\n I32[0] = i64_low(value);\n I32[1] = i64_high(value);\n return F64[0];\n};\n","const Long = global.Long || require(\"long\");\n\nglobal.i64_zero = Long.ZERO;\n\nglobal.i64_one = Long.ONE;\n\nglobal.i64_new = function(lo, hi) {\n return Long.fromBits(lo, hi);\n};\n\nglobal.i64_low = function(value) {\n return value.low;\n};\n\nglobal.i64_high = function(value) {\n return value.high;\n};\n\nglobal.i64_add = function(left, right) {\n return left.add(right);\n};\n\nglobal.i64_sub = function(left, right) {\n return left.sub(right);\n};\n\nglobal.i64_mul = function(left, right) {\n return left.mul(right);\n};\n\nglobal.i64_div = function(left, right) {\n return left.div(right);\n};\n\nglobal.i64_div_u = function(left, right) {\n return left.toUnsigned().div(right.toUnsigned()).toSigned();\n};\n\nglobal.i64_rem = function(left, right) {\n return left.mod(right);\n};\n\nglobal.i64_rem_u = function(left, right) {\n return left.toUnsigned().mod(right.toUnsigned()).toSigned();\n};\n\nglobal.i64_and = function(left, right) {\n return left.and(right);\n};\n\nglobal.i64_or = function(left, right) {\n return left.or(right);\n};\n\nglobal.i64_xor = function(left, right) {\n return left.xor(right);\n};\n\nglobal.i64_shl = function(left, right) {\n return left.shl(right);\n};\n\nglobal.i64_shr = function(left, right) {\n return left.shr(right);\n};\n\nglobal.i64_shr_u = function(left, right) {\n return left.shru(right);\n};\n\nglobal.i64_not = function(value) {\n return value.not();\n};\n\nglobal.i64_eq = function(left, right) {\n return left.eq(right);\n};\n\nglobal.i64_ne = function(left, right) {\n return left.ne(right);\n};\n\nglobal.i64_align = function(value, alignment) {\n assert(alignment && (alignment & (alignment - 1)) == 0);\n var mask = Long.fromInt(alignment - 1);\n return value.add(mask).and(mask.not());\n};\n\nglobal.i64_is_i8 = function(value) {\n return value.high === 0 && (value.low >= 0 && value.low <= i8.MAX_VALUE)\n || value.high === -1 && (value.low >= i8.MIN_VALUE && value.low < 0);\n};\n\nglobal.i64_is_i16 = function(value) {\n return value.high === 0 && (value.low >= 0 && value.low <= i16.MAX_VALUE)\n || value.high === -1 && (value.low >= i16.MIN_VALUE && value.low < 0);\n};\n\nglobal.i64_is_i32 = function(value) {\n return (value.high === 0 && value.low >= 0)\n || (value.high === -1 && value.low < 0);\n};\n\nglobal.i64_is_u8 = function(value) {\n return value.high === 0 && value.low >= 0 && value.low <= u8.MAX_VALUE;\n};\n\nglobal.i64_is_u16 = function(value) {\n return value.high === 0 && value.low >= 0 && value.low <= u16.MAX_VALUE;\n};\n\nglobal.i64_is_u32 = function(value) {\n return value.high === 0;\n};\n\nglobal.i64_is_bool = function(value) {\n return value.high === 0 && (value.low === 0 || value.low === 1);\n};\n\nconst minSafeF32 = Long.fromNumber(f32.MIN_SAFE_INTEGER);\nconst maxSafeF32 = Long.fromNumber(f32.MAX_SAFE_INTEGER);\n\nglobal.i64_is_f32 = function(value) {\n return value.gte(minSafeF32) && value.lte(maxSafeF32);\n};\n\nconst minSafeF64 = Long.fromNumber(f64.MIN_SAFE_INTEGER);\nconst maxSafeF64 = Long.fromNumber(f64.MAX_SAFE_INTEGER);\n\nglobal.i64_is_f64 = function(value) {\n return value.gte(minSafeF64) && value.lte(maxSafeF64);\n};\n\nglobal.i64_to_f32 = function(value) {\n return global.Math.fround(value.toNumber());\n};\n\nglobal.i64_to_f64 = function(value) {\n return value.toNumber();\n};\n\nglobal.i64_to_string = function(value, unsigned) {\n return (unsigned ? value.toUnsigned() : value).toString(10);\n};\n","module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n ])), {}).exports;\r\n} catch (e) {\r\n // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations. For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative). Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n if (isNaN(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n if (typeof val === 'number')\r\n return fromNumber(val, unsigned);\r\n if (typeof val === 'string')\r\n return fromString(val, unsigned);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = wasm.mul(this.low,\r\n this.high,\r\n multiplier.low,\r\n multiplier.high);\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n // guard against signed division overflow: the largest\r\n // negative number / -1 would be 1 larger than the largest\r\n // positive number, due to two's complement.\r\n if (!this.unsigned &&\r\n this.high === -0x80000000 &&\r\n divisor.low === -1 && divisor.high === -1) {\r\n // be consistent with non-wasm code path\r\n return this;\r\n }\r\n var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo >>> 16 & 0xff,\r\n lo >>> 24 ,\r\n hi & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi >>> 16 & 0xff,\r\n hi >>> 24\r\n ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n hi >>> 24 ,\r\n hi >>> 16 & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi & 0xff,\r\n lo >>> 24 ,\r\n lo >>> 16 & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo & 0xff\r\n ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n return new Long(\r\n bytes[0] |\r\n bytes[1] << 8 |\r\n bytes[2] << 16 |\r\n bytes[3] << 24,\r\n bytes[4] |\r\n bytes[5] << 8 |\r\n bytes[6] << 16 |\r\n bytes[7] << 24,\r\n unsigned\r\n );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n return new Long(\r\n bytes[4] << 24 |\r\n bytes[5] << 16 |\r\n bytes[6] << 8 |\r\n bytes[7],\r\n bytes[0] << 24 |\r\n bytes[1] << 16 |\r\n bytes[2] << 8 |\r\n bytes[3],\r\n unsigned\r\n );\r\n};\r\n","// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n","/**\n * Low-level C-like compiler API.\n * @module index\n *//***/\n\nimport { Target, Feature } from \"./common\";\nimport { Compiler, Options } from \"./compiler\";\nimport { Decompiler } from \"./decompiler\";\nimport { IDLBuilder, TSDBuilder } from \"./definitions\";\nimport { DiagnosticMessage, DiagnosticCategory, formatDiagnosticMessage } from \"./diagnostics\";\nimport { Module } from \"./module\";\nimport { Parser } from \"./parser\";\nimport { Program } from \"./program\";\n\n/** Parses a source file. If `parser` has been omitted a new one is created. */\nexport function parseFile(text: string, path: string, isEntry: bool = false,\n parser: Parser | null = null\n): Parser {\n if (!parser) parser = new Parser();\n parser.parseFile(text, path, isEntry);\n return parser;\n}\n\n/** Obtains the next required file's path. Returns `null` once complete. */\nexport function nextFile(parser: Parser): string | null {\n return parser.nextFile();\n}\n\n/** Obtains the path of the dependee of a given imported file. */\nexport function getDependee(parser: Parser, file: string): string | null {\n return parser.getDependee(file);\n}\n\n/** Obtains the next diagnostic message. Returns `null` once complete. */\nexport function nextDiagnostic(parser: Parser): DiagnosticMessage | null {\n var program = parser.program;\n return program.diagnosticsOffset < program.diagnostics.length\n ? program.diagnostics[program.diagnosticsOffset++]\n : null;\n}\n\n/** Formats a diagnostic message to a string. */\nexport { formatDiagnosticMessage as formatDiagnostic };\n\n/** Tests whether a diagnostic is informatory. */\nexport function isInfo(message: DiagnosticMessage): bool {\n return message.category == DiagnosticCategory.INFO;\n}\n\n/** Tests whether a diagnostic is a warning. */\nexport function isWarning(message: DiagnosticMessage): bool {\n return message.category == DiagnosticCategory.WARNING;\n}\n\n/** Tests whether a diagnostic is an error. */\nexport function isError(message: DiagnosticMessage): bool {\n return message.category == DiagnosticCategory.ERROR;\n}\n\n/** Creates a new set of compiler options. */\nexport function createOptions(): Options {\n return new Options();\n}\n\n/** Sets the `target` option. */\nexport function setTarget(options: Options, target: Target): void {\n options.target = target;\n}\n\n/** Sets the `noAssert` option. */\nexport function setNoAssert(options: Options, noAssert: bool): void {\n options.noAssert = noAssert;\n}\n\n/** Sets the `importMemory` option. */\nexport function setImportMemory(options: Options, importMemory: bool): void {\n options.importMemory = importMemory;\n}\n\n/** Sets the `sharedMemory` option. */\nexport function setSharedMemory(options: Options, sharedMemory: i32): void {\n options.sharedMemory = sharedMemory;\n}\n\n/** Sets the `importTable` option. */\nexport function setImportTable(options: Options, importTable: bool): void {\n options.importTable = importTable;\n}\n\n/** Sets the `sourceMap` option. */\nexport function setSourceMap(options: Options, sourceMap: bool): void {\n options.sourceMap = sourceMap;\n}\n\n/** Sets the `memoryBase` option. */\nexport function setMemoryBase(options: Options, memoryBase: u32): void {\n options.memoryBase = memoryBase;\n}\n\n/** Sets a 'globalAliases' value. */\nexport function setGlobalAlias(options: Options, alias: string, name: string): void {\n var globalAliases = options.globalAliases;\n if (!globalAliases) options.globalAliases = globalAliases = new Map();\n globalAliases.set(alias, name);\n}\n\n/** Sets the `explicitStart` option. */\nexport function setExplicitStart(options: Options, explicitStart: bool): void {\n options.explicitStart = explicitStart;\n}\n\n/** Sets the `noUnsafe` option. */\nexport function setNoUnsafe(options: Options, noUnsafe: bool): void {\n options.noUnsafe = noUnsafe;\n}\n\n/** Sign extension operations. */\nexport const FEATURE_SIGN_EXTENSION = Feature.SIGN_EXTENSION;\n/** Mutable global imports and exports. */\nexport const FEATURE_MUTABLE_GLOBAL = Feature.MUTABLE_GLOBAL;\n/** Bulk memory operations. */\nexport const FEATURE_BULK_MEMORY = Feature.BULK_MEMORY;\n/** SIMD types and operations. */\nexport const FEATURE_SIMD = Feature.SIMD;\n/** Threading and atomic operations. */\nexport const FEATURE_THREADS = Feature.THREADS;\n\n/** Enables a specific feature. */\nexport function enableFeature(options: Options, feature: Feature): void {\n options.features |= feature;\n}\n\n/** Gives the compiler a hint at the optimize levels that will be used later on. */\nexport function setOptimizeLevelHints(options: Options, optimizeLevel: i32, shrinkLevel: i32): void {\n options.optimizeLevelHint = optimizeLevel;\n options.shrinkLevelHint = shrinkLevel;\n}\n\n/** Finishes parsing. */\nexport function finishParsing(parser: Parser): Program {\n return parser.finish();\n}\n\n/** Compiles the sources computed by the parser to a module. */\nexport function compileProgram(program: Program, options: Options | null = null): Module {\n return new Compiler(program, options).compile();\n}\n\n/** Decompiles a module to its (low level) source. */\nexport function decompileModule(module: Module): string {\n var decompiler = new Decompiler();\n decompiler.decompile(module);\n return decompiler.finish();\n}\n\n/** Builds WebIDL definitions for the specified program. */\nexport function buildIDL(program: Program): string {\n return IDLBuilder.build(program);\n}\n\n/** Builds TypeScript definitions for the specified program. */\nexport function buildTSD(program: Program): string {\n return TSDBuilder.build(program);\n}\n\n/** Builds a JSON file of a program's runtime type information. */\nexport function buildRTTI(program: Program): string {\n var sb = new Array();\n sb.push(\"{\\n \\\"names\\\": [\\n\");\n for (let cls of program.managedClasses.values()) {\n sb.push(\" \\\"\");\n sb.push(cls.internalName);\n sb.push(\"\\\",\\n\");\n }\n sb.push(\" ],\\n \\\"base\\\": [\\n\");\n for (let cls of program.managedClasses.values()) {\n let base = cls.base;\n sb.push(\" \");\n sb.push(base ? base.id.toString() : \"0\");\n sb.push(\",\\n\");\n }\n sb.push(\" ],\\n \\\"flags\\\": [\\n\");\n for (let cls of program.managedClasses.values()) {\n sb.push(\" \");\n sb.push(cls.rttiFlags.toString());\n sb.push(\",\\n\");\n }\n sb.push(\" ]\\n}\\n\");\n return sb.join(\"\");\n}\n\n/** Prefix indicating a library file. */\nexport { LIBRARY_PREFIX } from \"./common\";\n\n// Full API\nexport * from \"./ast\";\n// export * from \"./binary\";\nexport * from \"./common\";\nexport * from \"./compiler\";\nexport * from \"./decompiler\";\nexport * from \"./definitions\";\nexport * from \"./diagnosticMessages.generated\";\nexport * from \"./diagnostics\";\nexport * from \"./flow\";\nexport * from \"./module\";\nexport * from \"./parser\";\nexport * from \"./program\";\nexport * from \"./resolver\";\nexport * from \"./tokenizer\";\nexport * from \"./types\";\nexport * from \"./util\";\n","/** @module util *//***/\n\n/** Tests if the bit at the specified index is set within a 64-bit map. */\nexport function bitsetIs(map: I64, index: i32): bool {\n assert(index >= 0 && index < 64);\n return i64_ne(\n i64_and(\n map,\n i64_shl(\n i64_one,\n i64_new(index)\n )\n ),\n i64_zero\n );\n}\n\n/** Sets or unsets the bit at the specified index within a 64-bit map and returns the new map. */\nexport function bitsetSet(map: I64, index: i32, isSet: bool): I64 {\n assert(index >= 0 && index < 64);\n return isSet\n ? i64_or(\n map,\n i64_shl(\n i64_one,\n i64_new(index)\n )\n )\n : i64_and(\n map,\n i64_not(\n i64_shl(\n i64_one,\n i64_new(index)\n )\n )\n );\n}\n","/** @module util *//***/\n\n/** An enum of named character codes. */\nexport const enum CharCode {\n\n NULL = 0,\n LINEFEED = 0x0A,\n CARRIAGERETURN = 0x0D,\n LINESEPARATOR = 0x2028,\n PARAGRAPHSEPARATOR = 0x2029,\n NEXTLINE = 0x0085,\n\n SPACE = 0x20,\n NONBREAKINGSPACE = 0xA0,\n ENQUAD = 0x2000,\n EMQUAD = 0x2001,\n ENSPACE = 0x2002,\n EMSPACE = 0x2003,\n THREEPEREMSPACE = 0x2004,\n FOURPEREMSPACE = 0x2005,\n SIXPEREMSPACE = 0x2006,\n FIGURESPACE = 0x2007,\n PUNCTUATIONSPACE = 0x2008,\n THINSPACE = 0x2009,\n HAIRSPACE = 0x200A,\n ZEROWIDTHSPACE = 0x200B,\n NARROWNOBREAKSPACE = 0x202F,\n IDEOGRAPHICSPACE = 0x3000,\n MATHEMATICALSPACE = 0x205F,\n OGHAM = 0x1680,\n\n _ = 0x5F,\n\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n\n a = 0x61,\n b = 0x62,\n c = 0x63,\n d = 0x64,\n e = 0x65,\n f = 0x66,\n g = 0x67,\n h = 0x68,\n i = 0x69,\n j = 0x6A,\n k = 0x6B,\n l = 0x6C,\n m = 0x6D,\n n = 0x6E,\n o = 0x6F,\n p = 0x70,\n q = 0x71,\n r = 0x72,\n s = 0x73,\n t = 0x74,\n u = 0x75,\n v = 0x76,\n w = 0x77,\n x = 0x78,\n y = 0x79,\n z = 0x7A,\n\n A = 0x41,\n B = 0x42,\n C = 0x43,\n D = 0x44,\n E = 0x45,\n F = 0x46,\n G = 0x47,\n H = 0x48,\n I = 0x49,\n J = 0x4A,\n K = 0x4B,\n L = 0x4C,\n M = 0x4D,\n N = 0x4E,\n O = 0x4F,\n P = 0x50,\n Q = 0x51,\n R = 0x52,\n S = 0x53,\n T = 0x54,\n U = 0x55,\n V = 0x56,\n W = 0x57,\n X = 0x58,\n Y = 0x59,\n Z = 0x5a,\n\n AMPERSAND = 0x26,\n ASTERISK = 0x2A,\n AT = 0x40,\n BACKSLASH = 0x5C,\n BACKTICK = 0x60,\n BAR = 0x7C,\n CARET = 0x5E,\n CLOSEBRACE = 0x7D,\n CLOSEBRACKET = 0x5D,\n CLOSEPAREN = 0x29,\n COLON = 0x3A,\n COMMA = 0x2C,\n DOLLAR = 0x24,\n DOT = 0x2E,\n DOUBLEQUOTE = 0x22,\n EQUALS = 0x3D,\n EXCLAMATION = 0x21,\n GREATERTHAN = 0x3E,\n HASH = 0x23,\n LESSTHAN = 0x3C,\n MINUS = 0x2D,\n OPENBRACE = 0x7B,\n OPENBRACKET = 0x5B,\n OPENPAREN = 0x28,\n PERCENT = 0x25,\n PLUS = 0x2B,\n QUESTION = 0x3F,\n SEMICOLON = 0x3B,\n SINGLEQUOTE = 0x27,\n SLASH = 0x2F,\n TILDE = 0x7E,\n\n BACKSPACE = 0x08,\n FORMFEED = 0x0C,\n BYTEORDERMARK = 0xFEFF,\n TAB = 0x09,\n VERTICALTAB = 0x0B\n}\n\n/** Tests if the specified character code is some sort of line break. */\nexport function isLineBreak(c: CharCode): bool {\n switch (c) {\n case CharCode.LINEFEED:\n case CharCode.CARRIAGERETURN:\n case CharCode.LINESEPARATOR:\n case CharCode.PARAGRAPHSEPARATOR: {\n return true;\n }\n default: {\n return false;\n }\n }\n}\n\n/** Tests if the specified character code is some sort of white space. */\nexport function isWhiteSpace(c: i32): bool {\n switch (c) {\n case CharCode.SPACE:\n case CharCode.TAB:\n case CharCode.VERTICALTAB:\n case CharCode.FORMFEED:\n case CharCode.NONBREAKINGSPACE:\n case CharCode.NEXTLINE:\n case CharCode.OGHAM:\n case CharCode.NARROWNOBREAKSPACE:\n case CharCode.MATHEMATICALSPACE:\n case CharCode.IDEOGRAPHICSPACE:\n case CharCode.BYTEORDERMARK: {\n return true;\n }\n default: {\n return c >= CharCode.ENQUAD && c <= CharCode.ZEROWIDTHSPACE;\n }\n }\n}\n\n/** Tests if the specified character code is a valid decimal digit. */\nexport function isDecimalDigit(c: i32): bool {\n return c >= CharCode._0 && c <= CharCode._9;\n}\n\n/** Tests if the specified character code is a valid octal digit. */\nexport function isOctalDigit(c: i32): bool {\n return c >= CharCode._0 && c <= CharCode._7;\n}\n\n/** Tests if the specified character code is a valid start of an identifier. */\nexport function isIdentifierStart(c: i32): bool {\n return c >= CharCode.a && c <= CharCode.z\n || c >= CharCode.A && c <= CharCode.Z\n || c == CharCode._\n || c == CharCode.DOLLAR\n || c > 0x7f && isUnicodeIdentifierStart(c);\n}\n\n/** Tests if the specified character code is a valid keyword character. */\nexport function isKeywordCharacter(c: i32): bool {\n return c >= CharCode.a && c <= CharCode.z;\n}\n\n/** Tests if the specified character code is a valid part of an identifier. */\nexport function isIdentifierPart(c: i32): bool {\n return c >= CharCode.a && c <= CharCode.z\n || c >= CharCode.A && c <= CharCode.Z\n || c >= CharCode._0 && c <= CharCode._9\n || c == CharCode._\n || c == CharCode.DOLLAR\n || c > 0x7f && isUnicodeIdentifierPart(c);\n}\n\n// storing as u16 to save memory\nconst unicodeIdentifierStart: u16[] = [\n 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736,\n 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906,\n 908, 908, 910, 929, 931,\n 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514,\n 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774,\n 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969,\n 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088,\n 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384,\n 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474,\n 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529,\n 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613,\n 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705,\n 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784,\n 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873,\n 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958,\n 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986,\n 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125,\n 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240,\n 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333,\n 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455,\n 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634,\n 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725,\n 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757,\n 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840,\n 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186,\n 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293,\n 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696,\n 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798,\n 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992,\n 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872,\n 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016,\n 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389,\n 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688,\n 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141,\n 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424,\n 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025,\n 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130,\n 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188,\n 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469,\n 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505,\n 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584,\n 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520,\n 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670,\n 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720,\n 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329,\n 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540,\n 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893,\n 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538,\n 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888,\n 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015,\n 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259,\n 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520,\n 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695,\n 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739,\n 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798,\n 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243,\n 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285,\n 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323,\n 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019,\n 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474,\n 65479, 65482, 65487, 65490, 65495, 65498, 65500,\n];\nconst unicodeIdentifierPart: u16[] = [\n 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736,\n 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906,\n 908, 908, 910, 929, 931,\n 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415,\n 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520,\n 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788,\n 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112,\n 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423,\n 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482,\n 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525,\n 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602,\n 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632,\n 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693,\n 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757,\n 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821,\n 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884,\n 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929,\n 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972,\n 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018,\n 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088,\n 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157,\n 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216,\n 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285,\n 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340,\n 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424,\n 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515,\n 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570,\n 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720,\n 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751,\n 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789,\n 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895,\n 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028,\n 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304,\n 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744,\n 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808,\n 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108,\n 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902,\n 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099,\n 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272,\n 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516,\n 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783,\n 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155,\n 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676,\n 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027,\n 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134,\n 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205,\n 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417,\n 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477,\n 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517,\n 8521, 8526, 8526, 8544, 8584,\n 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559,\n 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686,\n 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728,\n 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335,\n 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449,\n 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799,\n 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512,\n 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783,\n 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072,\n 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309,\n 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584,\n 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741,\n 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808,\n 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203,\n 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275,\n 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321,\n 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008,\n 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140,\n 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382,\n 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,\n];\n\nfunction lookupInUnicodeMap(code: u16, map: u16[]): bool {\n if (code < map[0]) return false;\n\n var lo = 0;\n var hi = map.length;\n var mid: i32;\n var midVal: u16;\n\n while (lo + 1 < hi) {\n mid = lo + ((hi - lo) >> 1);\n mid -= (mid & 1);\n midVal = map[mid];\n if (midVal <= code && code <= map[mid + 1]) {\n return true;\n }\n if (code < midVal) {\n hi = mid;\n } else {\n lo = mid + 2;\n }\n }\n return false;\n}\n\nfunction isUnicodeIdentifierStart(code: i32): bool {\n return code < 0 || code > 0xffff ? false\n : lookupInUnicodeMap(code as u16, unicodeIdentifierStart);\n}\n\nfunction isUnicodeIdentifierPart(code: i32): bool {\n return code < 0 || code > 0xffff ? false\n : lookupInUnicodeMap(code as u16, unicodeIdentifierPart);\n}\n","export function makeArray(original: Array | null = null): Array {\n if (original) {\n let cloned = new Array(original.length);\n for (let i = 0, k = original.length; i < k; ++i) unchecked(cloned[i] = original[i]);\n return cloned;\n }\n return new Array();\n}\n\nexport function makeSet(original: Set | null = null): Set {\n if (original) {\n let cloned = new Set();\n for (let v of original) cloned.add(v);\n return cloned;\n }\n return new Set();\n}\n\nexport function makeMap(original: Map | null = null, overrides: Map | null = null): Map {\n var cloned = new Map();\n if (original) {\n for (let [k, v] of original) cloned.set(k, v);\n if (overrides) for (let [k, v] of overrides) cloned.set(k, v);\n } else if (overrides) {\n for (let [k, v] of overrides) cloned.set(k, v);\n }\n return cloned;\n}\n","/** @module util *//***/\n\nimport {\n CharCode\n} from \"./charcode\";\n\nimport {\n PATH_DELIMITER\n} from \"../common\";\n\nconst separator = CharCode.SLASH;\n\n/**\n * Normalizes the specified path, removing interior placeholders.\n * Expects a posix-compatible relative path (not Windows compatible).\n */\nexport function normalizePath(path: string): string {\n var pos = 0;\n var len = path.length;\n\n // trim leading './'\n while (pos + 1 < len &&\n path.charCodeAt(pos) == CharCode.DOT &&\n path.charCodeAt(pos + 1) == separator\n ) {\n pos += 2;\n }\n\n if (pos > 0 || len < path.length) {\n path = path.substring(pos, len);\n len -= pos;\n pos = 0;\n }\n\n var atEnd: bool;\n while (pos + 1 < len) {\n atEnd = false;\n\n // we are only interested in '/.' sequences ...\n if (\n path.charCodeAt(pos) == separator &&\n path.charCodeAt(pos + 1) == CharCode.DOT\n ) {\n // '/.' ( '/' | $ )\n atEnd = pos + 2 == len;\n if (atEnd ||\n pos + 2 < len &&\n path.charCodeAt(pos + 2) == separator\n ) {\n path = atEnd\n ? path.substring(0, pos)\n : path.substring(0, pos) + path.substring(pos + 2);\n len -= 2;\n continue;\n }\n\n // '/.' ( './' | '.' $ )\n atEnd = pos + 3 == len;\n if (atEnd && path.charCodeAt(pos + 2) == CharCode.DOT ||\n pos + 3 < len &&\n path.charCodeAt(pos + 2) == CharCode.DOT &&\n path.charCodeAt(pos + 3) == separator\n ) {\n // find preceeding '/'\n let ipos = pos;\n while (--ipos >= 0) {\n if (path.charCodeAt(ipos) == separator) {\n if (pos - ipos != 3 ||\n path.charCodeAt(ipos + 1) != CharCode.DOT ||\n path.charCodeAt(ipos + 2) != CharCode.DOT\n ) { // exclude '..' itself\n path = atEnd\n ? path.substring(0, ipos)\n : path.substring(0, ipos) + path.substring(pos + 3);\n len -= pos + 3 - ipos;\n pos = ipos - 1; // incremented again at end of loop\n }\n break;\n }\n }\n\n // if there's no preceeding '/', trim start if non-empty\n if (ipos < 0 && pos > 0) {\n if (pos != 2 ||\n path.charCodeAt(0) != CharCode.DOT ||\n path.charCodeAt(1) != CharCode.DOT\n ) { // exclude '..' itself\n path = path.substring(pos + 4);\n len = path.length;\n continue;\n }\n }\n }\n }\n pos++;\n }\n return len > 0 ? path : \".\";\n}\n\n/** Resolves the specified path relative to the specified origin. */\nexport function resolvePath(normalizedPath: string, origin: string): string {\n if (normalizedPath.startsWith(\"std/\")) {\n return normalizedPath;\n }\n return normalizePath(\n dirname(origin) + PATH_DELIMITER + normalizedPath\n );\n}\n\n/** Obtains the directory portion of a normalized path. */\nexport function dirname(normalizedPath: string): string {\n var pos = normalizedPath.length;\n if (pos <= 1) {\n if (pos == 0) return \".\";\n if (normalizedPath.charCodeAt(0) == separator) {\n return normalizedPath;\n }\n }\n while (--pos > 0) {\n if (normalizedPath.charCodeAt(pos) == separator) {\n return normalizedPath.substring(0, pos);\n }\n }\n return \".\";\n}\n","/** @module util *//***/\n\nconst indentX1 = \" \";\nconst indentX2 = \" \";\nconst indentX4 = \" \";\n\n/** Creates an indentation matching the number of specified levels. */\nexport function indent(sb: string[], level: i32): void {\n while (level >= 4) {\n sb.push(indentX4);\n level -= 4;\n }\n if (level >= 2) {\n sb.push(indentX2);\n level -= 2;\n }\n if (level) {\n sb.push(indentX1);\n }\n}\n","/** @module util *//***/\n\n/** Reads an 8-bit integer from the specified buffer. */\nexport function readI8(buffer: Uint8Array, offset: i32): i32 {\n return buffer[offset];\n}\n\n/** Writes an 8-bit integer to the specified buffer. */\nexport function writeI8(value: i32, buffer: Uint8Array, offset: i32): void {\n buffer[offset] = value;\n}\n\n/** Reads a 16-bit integer from the specified buffer. */\nexport function readI16(buffer: Uint8Array, offset: i32): i32 {\n return buffer[offset ]\n | buffer[offset + 1] << 8;\n}\n\n/** Writes a 16-bit integer to the specified buffer. */\nexport function writeI16(value: i32, buffer: Uint8Array, offset: i32): void {\n buffer[offset ] = value;\n buffer[offset + 1] = value >>> 8;\n}\n\n/** Reads a 32-bit integer from the specified buffer. */\nexport function readI32(buffer: Uint8Array, offset: i32): i32 {\n return buffer[offset ]\n | buffer[offset + 1] << 8\n | buffer[offset + 2] << 16\n | buffer[offset + 3] << 24;\n}\n\n/** Writes a 32-bit integer to the specified buffer. */\nexport function writeI32(value: i32, buffer: Uint8Array, offset: i32): void {\n buffer[offset ] = value;\n buffer[offset + 1] = value >>> 8;\n buffer[offset + 2] = value >>> 16;\n buffer[offset + 3] = value >>> 24;\n}\n\n/** Reads a 64-bit integer from the specified buffer. */\nexport function readI64(buffer: Uint8Array, offset: i32): I64 {\n var lo = readI32(buffer, offset);\n var hi = readI32(buffer, offset + 4);\n return i64_new(lo, hi);\n}\n\n/** Writes a 64-bit integer to the specified buffer. */\nexport function writeI64(value: I64, buffer: Uint8Array, offset: i32): void {\n writeI32(i64_low(value), buffer, offset);\n writeI32(i64_high(value), buffer, offset + 4);\n}\n\n/** Reads a 32-bit float from the specified buffer. */\nexport function readF32(buffer: Uint8Array, offset: i32): f32 {\n return i32_as_f32(readI32(buffer, offset));\n}\n\n/** Writes a 32-bit float to the specified buffer. */\nexport function writeF32(value: f32, buffer: Uint8Array, offset: i32): void {\n writeI32(f32_as_i32(value), buffer, offset);\n}\n\n/** Reads a 64-bit float from the specified buffer. */\nexport function readF64(buffer: Uint8Array, offset: i32): f64 {\n return i64_as_f64(readI64(buffer, offset));\n}\n\n/** Writes a 64-bit float to the specified buffer. */\nexport function writeF64(value: f64, buffer: Uint8Array, offset: i32): void {\n var valueI64 = f64_as_i64(value);\n writeI32(i64_low(valueI64), buffer, offset);\n writeI32(i64_high(valueI64), buffer, offset + 4);\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://assemblyscript/webpack/universalModuleDefinition","webpack://assemblyscript/webpack/bootstrap","webpack://assemblyscript/./src/common.ts","webpack://assemblyscript/./src/util/index.ts","webpack://assemblyscript/./src/diagnostics.ts","webpack://assemblyscript/./src/ast.ts","webpack://assemblyscript/./src/program.ts","webpack://assemblyscript/./src/module.ts","webpack://assemblyscript/./src/types.ts","webpack://assemblyscript/./src/tokenizer.ts","webpack://assemblyscript/(webpack)/buildin/global.js","webpack://assemblyscript/./src/resolver.ts","webpack://assemblyscript/./src/flow.ts","webpack://assemblyscript/./src/compiler.ts","webpack://assemblyscript/./src/diagnosticMessages.generated.ts","webpack://assemblyscript/./src/builtins.ts","webpack://assemblyscript/./src/decompiler.ts","webpack://assemblyscript/./src/definitions.ts","webpack://assemblyscript/./src/parser.ts","webpack://assemblyscript/./src/glue/js/index.ts","webpack://assemblyscript/./src/glue/js/binaryen.js","webpack://assemblyscript/external \"binaryen\"","webpack://assemblyscript/./std/portable/index.js","webpack://assemblyscript/./src/glue/js/float.js","webpack://assemblyscript/./src/glue/js/i64.js","webpack://assemblyscript/./node_modules/long/src/long.js","webpack://assemblyscript/./std/assembly/shared/feature.ts","webpack://assemblyscript/./std/assembly/shared/target.ts","webpack://assemblyscript/./std/assembly/shared/typeinfo.ts","webpack://assemblyscript/./src/index.ts","webpack://assemblyscript/./src/util/bitset.ts","webpack://assemblyscript/./src/util/charcode.ts","webpack://assemblyscript/./src/util/collections.ts","webpack://assemblyscript/./src/util/path.ts","webpack://assemblyscript/./src/util/text.ts","webpack://assemblyscript/./src/util/binary.ts"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__20__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","CommonFlags","PATH_DELIMITER","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","LIBRARY_PREFIX","INDEX_SUFFIX","CommonSymbols","EMPTY","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","number","boolean","string","native","indexof","valueof","returnof","null_","true_","false_","this_","super_","constructor","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","String","Array","FixedArray","Set","Map","ArrayBufferView","ArrayBuffer","Math","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","feature_1","Feature","target_1","Target","typeinfo_1","Typeinfo","TypeinfoFlags","__export","isPowerOf2","x","DiagnosticCategory","diagnosticMessages_generated_1","util_1","diagnosticMessages_generated_2","diagnosticCategoryToString","category","INFO","WARNING","ERROR","assert","diagnosticCategoryToColor","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCode","diagnosticCodeToString","COLOR_RESET","DiagnosticMessage","code","message","range","relatedRange","arg0","arg1","arg2","replace","createInfo","createWarning","createError","withRange","withRelatedRange","toString","source","normalizedPath","line","column","formatDiagnosticContext","useColors","text","len","length","start","end","isLineBreak","charCodeAt","sb","substring","push","join","formatDiagnosticMessage","showContext","DiagnosticEmitter","diagnostics","emitDiagnostic","info","infoRelated","warning","warningRelated","error","errorRelated","common_1","tokenizer_1","Token","Range","NodeKind","nodeIsConstantValue","kind","LITERAL","NULL","TRUE","FALSE","nodeIsCallable","IDENTIFIER","ASSERTION","CALL","ELEMENTACCESS","PARENTHESIZED","PROPERTYACCESS","SUPER","nodeIsGenericCallable","Node","createTypeName","typeName","TypeName","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","typeArguments","isNullable","type","NamedTypeNode","createFunctionType","parameters","returnType","explicitThisType","FunctionTypeNode","createOmittedType","createTypeParameter","extendsType","defaultType","elem","TypeParameterNode","createParameter","initializer","ParameterNode","parameterKind","createDecorator","args","stmt","DecoratorNode","arguments","decoratorKind","decoratorNameToKind","createComment","node","CommentNode","commentKind","isQuoted","expr","IdentifierExpression","symbol","createEmptyIdentifierExpression","createArrayLiteralExpression","elements","ArrayLiteralExpression","elementExpressions","createAssertionExpression","assertionKind","expression","toType","AssertionExpression","createBinaryExpression","operator","left","right","BinaryExpression","createCallExpression","typeArgs","CallExpression","createClassExpression","declaration","ClassExpression","createCommaExpression","expressions","CommaExpression","createConstructorExpression","ConstructorExpression","createElementAccessExpression","element","ElementAccessExpression","elementExpression","createFalseExpression","FalseExpression","createFloatLiteralExpression","FloatLiteralExpression","createFunctionExpression","FunctionExpression","createInstanceOfExpression","isType","InstanceOfExpression","createIntegerLiteralExpression","IntegerLiteralExpression","createNewExpression","NewExpression","createNullExpression","NullExpression","createObjectLiteralExpression","names","values","ObjectLiteralExpression","createParenthesizedExpression","ParenthesizedExpression","createPropertyAccessExpression","PropertyAccessExpression","createRegexpLiteralExpression","pattern","flags","RegexpLiteralExpression","patternFlags","createTernaryExpression","condition","ifThen","ifElse","TernaryExpression","createStringLiteralExpression","StringLiteralExpression","createSuperExpression","SuperExpression","createThisExpression","ThisExpression","createTrueExpression","TrueExpression","createUnaryPostfixExpression","operand","UnaryPostfixExpression","createUnaryPrefixExpression","UnaryPrefixExpression","createBlockStatement","statements","BlockStatement","createBreakStatement","label","BreakStatement","createClassDeclaration","typeParameters","implementsTypes","members","decorators","ClassDeclaration","createContinueStatement","ContinueStatement","createDoStatement","statement","DoStatement","createEmptyStatement","EmptyStatement","createEnumDeclaration","EnumDeclaration","createEnumValueDeclaration","EnumValueDeclaration","createExportStatement","path","isDeclare","ExportStatement","normalizePath","startsWith","resolvePath","internalPath","mangleInternalPath","createExportDefaultStatement","ExportDefaultStatement","createExportImportStatement","externalName","ExportImportStatement","createExportMember","ExportMember","localName","exportedName","createExpressionStatement","ExpressionStatement","createIfStatement","ifTrue","ifFalse","IfStatement","createImportStatement","decls","ImportStatement","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","foreignName","ImportDeclaration","createInterfaceDeclaration","InterfaceDeclaration","createFieldDeclaration","FieldDeclaration","createForStatement","incrementor","ForStatement","createFunctionDeclaration","signature","body","arrowKind","FunctionDeclaration","createIndexSignatureDeclaration","keyType","valueType","IndexSignatureDeclaration","createMethodDeclaration","MethodDeclaration","createNamespaceDeclaration","NamespaceDeclaration","createReturnStatement","ReturnStatement","createSwitchStatement","cases","SwitchStatement","createSwitchCase","SwitchCase","createThrowStatement","ThrowStatement","createTryStatement","catchVariable","catchStatements","finallyStatements","TryStatement","createTypeDeclaration","alias","TypeDeclaration","createVariableStatement","VariableStatement","createVariableDeclaration","VariableDeclaration","createVoidStatement","VoidStatement","createWhileStatement","WhileStatement","TypeNode","_super","__extends","_this","apply","TYPENAME","NAMEDTYPE","FUNCTIONTYPE","TYPEPARAMETER","ParameterKind","DecoratorKind","PARAMETER","implicitFieldDeclaration","NONE","is","flag","isAny","set","nameStr","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","propStr","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","DECORATOR","CommentKind","COMMENT","Expression","LiteralKind","LiteralExpression","literalKind","ARRAY","AssertionKind","BINARY","numTypeArguments","numArguments","CLASS","COMMA","CONSTRUCTOR","FLOAT","FUNCTION","INSTANCEOF","INTEGER","NEW","OBJECT","REGEXP","TERNARY","STRING","THIS","UnaryExpression","UNARYPOSTFIX","UNARYPREFIX","SourceKind","Statement","Source","SOURCE","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","pos","lastIndexOf","simplePath","LIBRARY","LIBRARY_ENTRY","DeclarationStatement","INDEXSIGNATUREDECLARATION","VariableLikeDeclarationStatement","BLOCK","BREAK","CLASSDECLARATION","CONTINUE","DO","ENUMDECLARATION","ENUMVALUEDECLARATION","EXPORTIMPORT","EXPORTMEMBER","EXPORT","EXPORTDEFAULT","EXPRESSION","FIELDDECLARATION","parameterIndex","FOR","ArrowKind","FUNCTIONDECLARATION","clone","IF","IMPORTDECLARATION","IMPORT","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","RETURN","SWITCHCASE","SWITCH","THROW","TRY","TYPEDECLARATION","VARIABLEDECLARATION","VARIABLE","VOID","WHILE","endsWith","findDecorator","k","decorator","isTypeOmitted","OperatorKind","diagnostics_1","types_1","ast_1","resolver_1","flow_1","QueuedImport","localFile","localIdentifier","foreignIdentifier","foreignPath","foreignPathAlt","QueuedExport","QueuedExportStar","pathLiteral","operatorKindFromDecorator","arg","INDEXED_GET","INDEXED_SET","UNCHECKED_INDEXED_GET","UNCHECKED_INDEXED_SET","ADD","SUB","MUL","POW","DIV","REM","BITWISE_AND","BITWISE_OR","BITWISE_XOR","EQ","NE","GT","GE","BITWISE_SHR","BITWISE_SHR_U","LT","LE","BITWISE_SHL","PLUS","PREFIX_INC","MINUS","PREFIX_DEC","NOT","BITWISE_NOT","POSTFIX_INC","POSTFIX_DEC","INVALID","ElementKind","DecoratorFlags","Program","sources","diagnosticsOffset","filesByName","elementsByName","elementsByDeclaration","instancesByName","typeClasses","managedClasses","uniqueSignatures","nextClassId","nextSignatureId","nativeDummySignature","nativeSource","nativeFile","File","internalName","resolver","Resolver","writeRuntimeHeader","buffer","offset","classInstance","payloadSize","writeI32","id","makeNativeVariableDeclaration","makeNativeTypeDeclaration","makeNativeFunctionDeclaration","makeNativeNamespaceDeclaration","makeNativeFunction","decoratorFlags","Function","FunctionPrototype","getElementByDeclaration","has","initialize","options","registerNativeType","Type","isizeType","usizeType","void","add","TypeDefinition","GENERIC","hasFeature","registerConstantInteger","i64_new","isWasm64","WASM64","WASM32","noAssert","memoryBase","optimizeLevelHint","shrinkLevelHint","queuedImports","queuedExports","queuedExportsStar","queuedExtends","queuedImplements","file","j","initializeExports","initializeExportDefault","initializeImports","initializeVariables","initializeClass","initializeEnum","initializeFunction","initializeInterface","initializeNamespace","initializeTypeDefinition","queuedExportsStar_1","__values","queuedExportsStar_1_1","done","_g","__read","exportsStar","exportStar","foreignFile","lookupForeignFile","ensureExportStar","File_0_not_found","queuedImport","lookupForeign","Module_0_has_no_exported_member_1","asImportedNamespace","queuedExports_1","queuedExports_1_1","_h","exports_1","e_3","exports_1_1","_j","exportName","queuedExport","ensureExport","lookupInSelf","globalElement","lookupGlobal","DeclaredElement","arrayBufferInstance","requireClass","stringInstance","arrayBufferViewInstance","registerNativeTypeClass","i8ArrayPrototype","CLASS_PROTOTYPE","i16ArrayPrototype","i32ArrayPrototype","i64ArrayPrototype","u8ArrayPrototype","u8ClampedArrayPrototype","u16ArrayPrototype","u32ArrayPrototype","u64ArrayPrototype","f32ArrayPrototype","f64ArrayPrototype","thisPrototype","extendsNode","baseElement","resolveTypeName","basePrototype","hasDecorator","Class_0_is_sealed_and_cannot_be_extended","identifierNode","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","A_class_may_only_extend_another_class","globalAliases","globalAliases_1","globalAliases_1_1","_k","firstChar","parseInt","Error","arrayPrototype","fixedArrayPrototype","setPrototype","mapPrototype","abortInstance","lookupFunction","allocInstance","requireFunction","reallocInstance","freeInstance","retainInstance","releaseInstance","collectInstance","typeinfoInstance","instanceofInstance","visitInstance","allocArrayInstance","_l","_m","USER_ENTRY","_o","e_6","_p","markModuleExport","resolved","resolveClass","FUNCTION_PROTOTYPE","resolveFunction","MODULE_EXPORT","instanceMembers","_c","_d","member","PROPERTY_PROTOTYPE","getterPrototype","setterPrototype","PROPERTY","FIELD","_e","_f","setType","typeKind","className","classElement","global","Global","CONST","setConstantIntegerValue","registerConstantFloat","setConstantFloatValue","ensureGlobal","merged","tryMerge","Duplicate_identifier_0","requireGlobal","lookupExport","fileQueuedExports","checkDecorators","acceptedFlags","decoratorKindToFlag","isLibrary","Decorator_0_is_not_valid_here","Duplicate_decorator","ClassPrototype","numImplementsTypes","Unmanaged_classes_cannot_implement_interfaces","Operation_not_supported","memberDeclarations","memberDeclaration","initializeField","GET","SET","initializeProperty","initializeMethod","STATIC","INTERFACE_PROTOTYPE","READONLY","ABSTRACT","FieldPrototype","addInstance","isStatic","checkOperatorOverloads","classPrototype","numArgs","firstArg","overloads","overloadPrototypes","Duplicate_function_implementation","operatorKind","String_literal_expected","Expected_0_arguments_but_got_1","ensureProperty","parentMembers","PropertyPrototype","Duplicate_property_0","isGetter","Enum","initializeEnumValue","EnumValue","initializeExport","queued","Export_declaration_conflicts_with_exported_declaration_of_0","initializeImport","validDecorators","AMBIENT","INSTANCE","InterfacePrototype","original","Namespace","copyMembers","DECLARE","Element","program","shadowType","FILE","current","unset","originalDeclaration","actual","isBound","TypedElement","RESOLVED","startFunction","Signature","isImport","lookup","includes","exports_2","exports_2_1","_b","memberName","TYPEDEFINITION","mangleInternalName","NAMESPACE","ENUM","ConstantValueKind","VariableLikeElement","constantValueKind","constantIntegerValue","INLINED","constantFloatValue","ENUMVALUE","isImmutable","Parameter","Local","index","LOCAL","instances","boundPrototypes","toBound","bound","getResolvedInstance","instanceKey","setResolvedInstance","instance","nameInclTypeParameters","contextualTypeArguments","localsByName","localsByIndex","additionalLocals","debugLocations","ref","functionTableIndex","trampoline","nextInlineId","nextAnonymousId","nextAutoreleaseId","tempI32s","tempI64s","tempF32s","tempF64s","tempV128s","nextBreakId","breakStack","breakLabel","asFunction","localIndex","local","thisType","parameterTypes","parameterType","parameterName","getParameterName","flow","Flow","registerConcreteElement","addLocal","locals","finalize","sourceMap","debugLocation","setDebugLocation","debugInfoRef","FunctionTarget","__s","FUNCTION_TARGET","toSignatureString","FIELD_PROTOTYPE","Field","memoryOffset","firstDeclaration","Property","getterInstance","setterInstance","AcyclicState","_isInterface","constructorPrototype","extends","basePtototype","Class","base","INTERFACE","currentMemoryOffset","constructorInstance","_id","_acyclic","rttiFlags","asClass","inheritedTypeArguments","inheritedTypeArguments_1","inheritedTypeArguments_1_1","baseName","baseType","typeParameterNodes","isBuiltinArray","lengthField","lookupOverload","isAssignableTo","target","unchecked","uncheckedOverload","overload","offsetof","fieldName","field","writeField","baseOffset","writeI8","writeI16","writeF32","writeF64","getTypeArgumentsTo","extendedPrototype","getArrayValueType","abvInstance","acyclic","hasCycle","cyclesTo","other","except","classReference","Interface","older","newer","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","src","dest","srcMembers","destMembers","srcMembers_1","srcMembers_1_1","isInstance","asGlobal","NativeType","ExpressionId","_BinaryenTypeNone","_BinaryenTypeInt32","_BinaryenTypeInt64","_BinaryenTypeFloat32","_BinaryenTypeFloat64","_BinaryenTypeVec128","_BinaryenTypeUnreachable","_BinaryenTypeAuto","FeatureFlags","_BinaryenFeatureAtomics","_BinaryenFeatureMutableGlobals","_BinaryenFeatureNontrappingFPToInt","_BinaryenFeatureSIMD128","_BinaryenFeatureBulkMemory","_BinaryenFeatureSignExt","_BinaryenFeatureExceptionHandling","_BinaryenInvalidId","_BinaryenBlockId","_BinaryenIfId","_BinaryenLoopId","_BinaryenBreakId","_BinaryenSwitchId","_BinaryenCallId","_BinaryenCallIndirectId","_BinaryenLocalGetId","_BinaryenLocalSetId","_BinaryenGlobalGetId","_BinaryenGlobalSetId","_BinaryenLoadId","_BinaryenStoreId","_BinaryenConstId","_BinaryenUnaryId","_BinaryenBinaryId","_BinaryenSelectId","_BinaryenDropId","_BinaryenReturnId","_BinaryenHostId","_BinaryenNopId","_BinaryenUnreachableId","_BinaryenAtomicCmpxchgId","_BinaryenAtomicRMWId","_BinaryenAtomicWaitId","_BinaryenAtomicNotifyId","_BinaryenSIMDExtractId","_BinaryenSIMDReplaceId","_BinaryenSIMDShuffleId","_BinaryenSIMDBitselectId","_BinaryenSIMDShiftId","_BinaryenMemoryInitId","_BinaryenDataDropId","_BinaryenMemoryCopyId","_BinaryenMemoryFillId","UnaryOp","_BinaryenClzInt32","_BinaryenCtzInt32","_BinaryenPopcntInt32","_BinaryenNegFloat32","_BinaryenAbsFloat32","_BinaryenCeilFloat32","_BinaryenFloorFloat32","_BinaryenTruncFloat32","_BinaryenNearestFloat32","_BinaryenSqrtFloat32","_BinaryenEqZInt32","_BinaryenClzInt64","_BinaryenCtzInt64","_BinaryenPopcntInt64","_BinaryenNegFloat64","_BinaryenAbsFloat64","_BinaryenCeilFloat64","_BinaryenFloorFloat64","_BinaryenTruncFloat64","_BinaryenNearestFloat64","_BinaryenSqrtFloat64","_BinaryenEqZInt64","_BinaryenExtendSInt32","_BinaryenExtendUInt32","_BinaryenWrapInt64","_BinaryenTruncSFloat32ToInt32","_BinaryenTruncSFloat32ToInt64","_BinaryenTruncUFloat32ToInt32","_BinaryenTruncUFloat32ToInt64","_BinaryenTruncSFloat64ToInt32","_BinaryenTruncSFloat64ToInt64","_BinaryenTruncUFloat64ToInt32","_BinaryenTruncUFloat64ToInt64","_BinaryenReinterpretFloat32","_BinaryenReinterpretFloat64","_BinaryenConvertSInt32ToFloat32","_BinaryenConvertSInt32ToFloat64","_BinaryenConvertUInt32ToFloat32","_BinaryenConvertUInt32ToFloat64","_BinaryenConvertSInt64ToFloat32","_BinaryenConvertSInt64ToFloat64","_BinaryenConvertUInt64ToFloat32","_BinaryenConvertUInt64ToFloat64","_BinaryenPromoteFloat32","_BinaryenDemoteFloat64","_BinaryenReinterpretInt32","_BinaryenReinterpretInt64","_BinaryenExtendS8Int32","_BinaryenExtendS16Int32","_BinaryenExtendS8Int64","_BinaryenExtendS16Int64","_BinaryenExtendS32Int64","_BinaryenSplatVecI8x16","_BinaryenSplatVecI16x8","_BinaryenSplatVecI32x4","_BinaryenSplatVecI64x2","_BinaryenSplatVecF32x4","_BinaryenSplatVecF64x2","_BinaryenNotVec128","_BinaryenNegVecI8x16","_BinaryenAnyTrueVecI8x16","_BinaryenAllTrueVecI8x16","_BinaryenNegVecI16x8","_BinaryenAnyTrueVecI16x8","_BinaryenAllTrueVecI16x8","_BinaryenNegVecI32x4","_BinaryenAnyTrueVecI32x4","_BinaryenAllTrueVecI32x4","_BinaryenNegVecI64x2","_BinaryenAnyTrueVecI64x2","_BinaryenAllTrueVecI64x2","_BinaryenAbsVecF32x4","_BinaryenNegVecF32x4","_BinaryenSqrtVecF32x4","_BinaryenAbsVecF64x2","_BinaryenNegVecF64x2","_BinaryenSqrtVecF64x2","_BinaryenTruncSatSVecF32x4ToVecI32x4","_BinaryenTruncSatUVecF32x4ToVecI32x4","_BinaryenTruncSatSVecF64x2ToVecI64x2","_BinaryenTruncSatUVecF64x2ToVecI64x2","_BinaryenConvertSVecI32x4ToVecF32x4","_BinaryenConvertUVecI32x4ToVecF32x4","_BinaryenConvertSVecI64x2ToVecF64x2","_BinaryenConvertUVecI64x2ToVecF64x2","BinaryOp","_BinaryenAddInt32","_BinaryenSubInt32","_BinaryenMulInt32","_BinaryenDivSInt32","_BinaryenDivUInt32","_BinaryenRemSInt32","_BinaryenRemUInt32","_BinaryenAndInt32","_BinaryenOrInt32","_BinaryenXorInt32","_BinaryenShlInt32","_BinaryenShrUInt32","_BinaryenShrSInt32","_BinaryenRotLInt32","_BinaryenRotRInt32","_BinaryenEqInt32","_BinaryenNeInt32","_BinaryenLtSInt32","_BinaryenLtUInt32","_BinaryenLeSInt32","_BinaryenLeUInt32","_BinaryenGtSInt32","_BinaryenGtUInt32","_BinaryenGeSInt32","_BinaryenGeUInt32","_BinaryenAddInt64","_BinaryenSubInt64","_BinaryenMulInt64","_BinaryenDivSInt64","_BinaryenDivUInt64","_BinaryenRemSInt64","_BinaryenRemUInt64","_BinaryenAndInt64","_BinaryenOrInt64","_BinaryenXorInt64","_BinaryenShlInt64","_BinaryenShrUInt64","_BinaryenShrSInt64","_BinaryenRotLInt64","_BinaryenRotRInt64","_BinaryenEqInt64","_BinaryenNeInt64","_BinaryenLtSInt64","_BinaryenLtUInt64","_BinaryenLeSInt64","_BinaryenLeUInt64","_BinaryenGtSInt64","_BinaryenGtUInt64","_BinaryenGeSInt64","_BinaryenGeUInt64","_BinaryenAddFloat32","_BinaryenSubFloat32","_BinaryenMulFloat32","_BinaryenDivFloat32","_BinaryenCopySignFloat32","_BinaryenMinFloat32","_BinaryenMaxFloat32","_BinaryenEqFloat32","_BinaryenNeFloat32","_BinaryenLtFloat32","_BinaryenLeFloat32","_BinaryenGtFloat32","_BinaryenGeFloat32","_BinaryenAddFloat64","_BinaryenSubFloat64","_BinaryenMulFloat64","_BinaryenDivFloat64","_BinaryenCopySignFloat64","_BinaryenMinFloat64","_BinaryenMaxFloat64","_BinaryenEqFloat64","_BinaryenNeFloat64","_BinaryenLtFloat64","_BinaryenLeFloat64","_BinaryenGtFloat64","_BinaryenGeFloat64","_BinaryenEqVecI8x16","_BinaryenNeVecI8x16","_BinaryenLtSVecI8x16","_BinaryenLtUVecI8x16","_BinaryenLeSVecI8x16","_BinaryenLeUVecI8x16","_BinaryenGtSVecI8x16","_BinaryenGtUVecI8x16","_BinaryenGeSVecI8x16","_BinaryenGeUVecI8x16","_BinaryenEqVecI16x8","_BinaryenNeVecI16x8","_BinaryenLtSVecI16x8","_BinaryenLtUVecI16x8","_BinaryenLeSVecI16x8","_BinaryenLeUVecI16x8","_BinaryenGtSVecI16x8","_BinaryenGtUVecI16x8","_BinaryenGeSVecI16x8","_BinaryenGeUVecI16x8","_BinaryenEqVecI32x4","_BinaryenNeVecI32x4","_BinaryenLtSVecI32x4","_BinaryenLtUVecI32x4","_BinaryenLeSVecI32x4","_BinaryenLeUVecI32x4","_BinaryenGtSVecI32x4","_BinaryenGtUVecI32x4","_BinaryenGeSVecI32x4","_BinaryenGeUVecI32x4","_BinaryenEqVecF32x4","_BinaryenNeVecF32x4","_BinaryenLtVecF32x4","_BinaryenLeVecF32x4","_BinaryenGtVecF32x4","_BinaryenGeVecF32x4","_BinaryenEqVecF64x2","_BinaryenNeVecF64x2","_BinaryenLtVecF64x2","_BinaryenLeVecF64x2","_BinaryenGtVecF64x2","_BinaryenGeVecF64x2","_BinaryenAndVec128","_BinaryenOrVec128","_BinaryenXorVec128","_BinaryenAddVecI8x16","_BinaryenAddSatSVecI8x16","_BinaryenAddSatUVecI8x16","_BinaryenSubVecI8x16","_BinaryenSubSatSVecI8x16","_BinaryenSubSatUVecI8x16","_BinaryenMulVecI8x16","_BinaryenAddVecI16x8","_BinaryenAddSatSVecI16x8","_BinaryenAddSatUVecI16x8","_BinaryenSubVecI16x8","_BinaryenSubSatSVecI16x8","_BinaryenSubSatUVecI16x8","_BinaryenMulVecI16x8","_BinaryenAddVecI32x4","_BinaryenSubVecI32x4","_BinaryenMulVecI32x4","_BinaryenAddVecI64x2","_BinaryenSubVecI64x2","_BinaryenAddVecF32x4","_BinaryenSubVecF32x4","_BinaryenMulVecF32x4","_BinaryenDivVecF32x4","_BinaryenMinVecF32x4","_BinaryenMaxVecF32x4","_BinaryenAddVecF64x2","_BinaryenSubVecF64x2","_BinaryenMulVecF64x2","_BinaryenDivVecF64x2","_BinaryenMinVecF64x2","_BinaryenMaxVecF64x2","HostOp","_BinaryenMemorySize","_BinaryenMemoryGrow","AtomicRMWOp","_BinaryenAtomicRMWAdd","_BinaryenAtomicRMWSub","_BinaryenAtomicRMWAnd","_BinaryenAtomicRMWOr","_BinaryenAtomicRMWXor","_BinaryenAtomicRMWXchg","SIMDExtractOp","_BinaryenExtractLaneSVecI8x16","_BinaryenExtractLaneUVecI8x16","_BinaryenExtractLaneSVecI16x8","_BinaryenExtractLaneUVecI16x8","_BinaryenExtractLaneVecI32x4","_BinaryenExtractLaneVecI64x2","_BinaryenExtractLaneVecF32x4","_BinaryenExtractLaneVecF64x2","SIMDReplaceOp","_BinaryenReplaceLaneVecI8x16","_BinaryenReplaceLaneVecI16x8","_BinaryenReplaceLaneVecI32x4","_BinaryenReplaceLaneVecI64x2","_BinaryenReplaceLaneVecF32x4","_BinaryenReplaceLaneVecF64x2","SIMDShiftOp","_BinaryenShlVecI8x16","_BinaryenShrSVecI8x16","_BinaryenShrUVecI8x16","_BinaryenShlVecI16x8","_BinaryenShrSVecI16x8","_BinaryenShrUVecI16x8","_BinaryenShlVecI32x4","_BinaryenShrSVecI32x4","_BinaryenShrUVecI32x4","_BinaryenShlVecI64x2","_BinaryenShrSVecI64x2","_BinaryenShrUVecI64x2","MemorySegment","segment","Module","hasTemporaryFunction","cachedPrecomputeNames","cachedStrings","_BinaryenModuleCreate","lit","memory","allocate","_BinaryenSizeofLiteral","createFrom","cArr","allocU8Array","_BinaryenModuleRead","changetype","addFunctionType","result","paramTypes","cStr","allocStringCached","allocI32Array","_BinaryenAddFunctionType","getFunctionTypeBySignature","_BinaryenGetFunctionTypeBySignature","removeFunctionType","_BinaryenRemoveFunctionType","out","_BinaryenLiteralInt32","_BinaryenConst","valueLow","valueHigh","_BinaryenLiteralInt64","_BinaryenLiteralFloat32","_BinaryenLiteralFloat64","bytes","store","_BinaryenLiteralVec128","unary","op","_BinaryenUnary","binary","_BinaryenBinary","host","operands","allocPtrArray","_BinaryenHost","local_get","_BinaryenLocalGet","local_tee","_BinaryenLocalTee","global_get","_BinaryenGlobalGet","load","signed","ptr","align","_BinaryenLoad","None","_BinaryenStore","atomic_load","_BinaryenAtomicLoad","atomic_store","_BinaryenAtomicStore","atomic_rmw","_BinaryenAtomicRMW","atomic_cmpxchg","expected","replacement","_BinaryenAtomicCmpxchg","atomic_wait","timeout","expectedType","_BinaryenAtomicWait","atomic_notify","notifyCount","_BinaryenAtomicNotify","local_set","_BinaryenLocalSet","global_set","_BinaryenGlobalSet","block","children","_BinaryenBlock","br","_BinaryenBreak","drop","_BinaryenDrop","loop","_BinaryenLoop","if","_BinaryenIf","nop","_BinaryenNop","return","_BinaryenReturn","select","_BinaryenSelect","switch","defaultName","numNames","strs","_BinaryenSwitch","_BinaryenCall","call_indirect","_BinaryenCallIndirect","unreachable","_BinaryenUnreachable","memory_copy","size","_BinaryenMemoryCopy","memory_fill","_BinaryenMemoryFill","simd_extract","vec","idx","_BinaryenSIMDExtract","simd_replace","_BinaryenSIMDReplace","simd_shuffle","vec1","vec2","mask","_BinaryenSIMDShuffle","simd_bitselect","cond","_BinaryenSIMDBitselect","simd_shift","shift","_BinaryenSIMDShift","addGlobal","mutable","_BinaryenAddGlobal","removeGlobal","_BinaryenRemoveGlobal","addFunction","varTypes","_BinaryenAddFunction","removeFunction","_BinaryenRemoveFunction","addTemporaryFunction","tempName","typeRef","removeTemporaryFunction","addFunctionExport","cStr1","cStr2","_BinaryenAddFunctionExport","addTableExport","_BinaryenAddTableExport","addMemoryExport","_BinaryenAddMemoryExport","addGlobalExport","_BinaryenAddGlobalExport","removeExport","_BinaryenRemoveExport","addFunctionImport","externalModuleName","externalBaseName","functionType","cStr3","_BinaryenAddFunctionImport","addTableImport","_BinaryenAddTableImport","addMemoryImport","shared","_BinaryenAddMemoryImport","addGlobalImport","globalType","_BinaryenAddGlobalImport","setMemory","initial","maximum","segments","segs","psvs","offs","sizs","i64_low","i64_high","cArr1","cArr2","cArr3","cArr4","_BinaryenSetMemory","setFunctionTable","funcs","_BinaryenSetFunctionTable","setStart","func","_BinaryenSetStart","getOptimizeLevel","_BinaryenGetOptimizeLevel","setOptimizeLevel","level","_BinaryenSetOptimizeLevel","getShrinkLevel","_BinaryenGetShrinkLevel","setShrinkLevel","_BinaryenSetShrinkLevel","setDebugInfo","on","_BinaryenSetDebugInfo","getFeatures","_BinaryenModuleGetFeatures","setFeatures","featureFlags","_BinaryenModuleSetFeatures","optimize","_BinaryenFunctionOptimize","_BinaryenModuleOptimize","runPasses","passes","allocString","_BinaryenFunctionRunPasses","_BinaryenModuleRunPasses","precomputeExpression","previousOptimizeLevel","previousShrinkLevel","previousDebugInfo","_BinaryenGetDebugInfo","_BinaryenExpressionGetType","_BinaryenFunctionGetBody","_BinaryenExpressionGetId","Return","_BinaryenReturnGetValue","validate","_BinaryenModuleValidate","interpret","_BinaryenModuleInterpret","toBinary","sourceMapUrl","binaryPtr","sourceMapPtr","_BinaryenModuleAllocateAndWrite","readInt","binaryBytes","ret","BinaryModule","output","readBuffer","readString","toText","toAsmjs","str","dispose","_BinaryenModuleDispose","createRelooper","Relooper","cloneExpression","noSideEffects","maxDepth","MAX_VALUE","nested1","nested2","Const","_BinaryenConstGetValueI32","_BinaryenConstGetValueI64Low","_BinaryenConstGetValueI64High","_BinaryenConstGetValueF32","_BinaryenConstGetValueF64","LocalGet","_BinaryenLocalGetGetIndex","GlobalGet","globalName","_BinaryenGlobalGetGetName","Load","_BinaryenLoadGetPtr","_BinaryenLoadIsAtomic","_BinaryenLoadGetBytes","_BinaryenLoadGetOffset","_BinaryenLoadIsSigned","_BinaryenLoadGetAlign","Unary","_BinaryenUnaryGetValue","_BinaryenUnaryGetOp","Binary","_BinaryenBinaryGetLeft","_BinaryenBinaryGetRight","_BinaryenBinaryGetOp","addDebugInfoFile","_BinaryenModuleAddDebugInfoFileName","getDebugInfoFile","_BinaryenModuleGetDebugInfoFileName","fileIndex","lineNumber","columnNumber","_BinaryenFunctionSetDebugLocation","UNLIMITED_MEMORY","getExpressionId","getExpressionType","getConstValueI32","getConstValueI64Low","getConstValueI64High","getConstValueF32","getConstValueF64","getLocalGetIndex","getLocalSetIndex","_BinaryenLocalSetGetIndex","getLocalSetValue","_BinaryenLocalSetGetValue","isLocalTee","_BinaryenLocalSetIsTee","getGlobalGetName","getBinaryOp","getBinaryLeft","getBinaryRight","getUnaryOp","getUnaryValue","getLoadBytes","getLoadOffset","getLoadPtr","isLoadSigned","getStoreBytes","_BinaryenStoreGetBytes","getStoreOffset","_BinaryenStoreGetOffset","getStorePtr","_BinaryenStoreGetPtr","getStoreValue","_BinaryenStoreGetValue","getBlockName","_BinaryenBlockGetName","getBlockChildCount","_BinaryenBlockGetNumChildren","getBlockChild","_BinaryenBlockGetChild","getIfCondition","_BinaryenIfGetCondition","getIfTrue","_BinaryenIfGetIfTrue","getIfFalse","_BinaryenIfGetIfFalse","getLoopName","_BinaryenLoopGetName","getLoopBody","_BinaryenLoopGetBody","getBreakName","_BinaryenBreakGetName","getBreakCondition","_BinaryenBreakGetCondition","getSelectThen","_BinaryenSelectGetIfTrue","getSelectElse","_BinaryenSelectGetIfFalse","getSelectCondition","_BinaryenSelectGetCondition","getDropValue","_BinaryenDropGetValue","getReturnValue","getCallTarget","_BinaryenCallGetTarget","getCallOperandCount","_BinaryenCallGetNumOperands","getCallOperand","_BinaryenCallGetOperand","getHostOp","_BinaryenHostGetOp","getHostOperandCount","_BinaryenHostGetNumOperands","getHostOperand","_BinaryenHostGetOperand","getHostName","_BinaryenHostGetNameOperand","getFunctionBody","getFunctionName","_BinaryenFunctionGetName","getFunctionParamCount","_BinaryenFunctionGetNumParams","getFunctionParamType","_BinaryenFunctionGetParam","getFunctionResultType","_BinaryenFunctionGetResult","relooper","_RelooperCreate","addBlock","_RelooperAddBlock","addBranch","from","to","_RelooperAddBranch","addBlockWithSwitch","_RelooperAddBlockWithSwitch","addBranchForSwitch","indexes","_RelooperAddBranchForSwitch","renderAndDispose","entry","labelHelper","_RelooperRenderAndDispose","u8s","numValues","i32s","val","ptrs","u","stringLengthUTF8","cp","u1","u2","u3","u4","arr","fromCodePoints","needsExplicitUnreachable","Unreachable","Break","Block","numChildren","traverse","data","If","Loop","Switch","_BinaryenSwitchGetCondition","Call","CallIndirect","_BinaryenCallIndirectGetNumOperands","_BinaryenCallIndirectGetOperand","LocalSet","GlobalSet","_BinaryenGlobalSetGetValue","Store","AtomicRMW","_BinaryenAtomicRMWGetPtr","_BinaryenAtomicRMWGetValue","AtomicCmpxchg","_BinaryenAtomicCmpxchgGetPtr","_BinaryenAtomicCmpxchgGetExpected","_BinaryenAtomicCmpxchgGetReplacement","AtomicWait","_BinaryenAtomicWaitGetPtr","_BinaryenAtomicWaitGetExpected","_BinaryenAtomicWaitGetTimeout","AtomicNotify","_BinaryenAtomicNotifyGetPtr","SIMDExtract","_BinaryenSIMDExtractGetVec","SIMDReplace","_BinaryenSIMDReplaceGetVec","_BinaryenSIMDReplaceGetValue","SIMDShuffle","_BinaryenSIMDShuffleGetLeft","_BinaryenSIMDShuffleGetRight","SIMDBitselect","_BinaryenSIMDBitselectGetLeft","_BinaryenSIMDBitselectGetRight","_BinaryenSIMDBitselectGetCond","SIMDShift","_BinaryenSIMDShiftGetVec","_BinaryenSIMDShiftGetShift","MemoryInit","_BinaryenMemoryInitGetDest","_BinaryenMemoryInitGetOffset","_BinaryenMemoryInitGetSize","DataDrop","MemoryCopy","_BinaryenMemoryCopyGetDest","_BinaryenMemoryCopyGetSource","_BinaryenMemoryCopyGetSize","MemoryFill","_BinaryenMemoryFillGetDest","_BinaryenMemoryFillGetValue","_BinaryenMemoryFillGetSize","Select","Drop","Host","Nop","program_1","module_1","TypeKind","TypeFlags","v128_zero","cachedNullableType","byteSize","ceil","signatureReference","nonNullableType","isize64","isize32","usize64","usize32","auto","clz","computeSmallIntegerShift","targetType","computeSmallIntegerMask","classType","asNullable","signednessIsRelevant","currentClass","targetClass","currentFunction","targetFunction","isStrictlyAssignableTo","commonDenominator","signednessIsImportant","toNativeType","toNativeZero","toNativeOne","toNativeNegOne","typesToNativeTypes","types","numTypes","typesToString","cachedFunctionTarget","parameterNames","requiredParameters","hasRest","signatureTypes","compare","equals","asFunctionTarget","getDefaultParameterName","thisThisType","targetThisType","thisParameterTypes","targetParameterTypes","numParameters","thisParameterType","targetParameterType","thisReturnType","targetReturnType","makeSignatureString","optionalStart","restIndex","cachedDefaultParameterNames","IdentifierHandling","tokenFromKeyword","AS","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DEFAULT","DELETE","ELSE","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","IS","KEYOF","LET","MODULE","OF","PACKAGE","PRIVATE","PROTECTED","PUBLIC","TYPE","TYPEOF","VAR","WITH","YIELD","tokenIsAlsoIdentifier","token","isIllegalVariableIdentifier","operatorTokenToString","DOT_DOT_DOT","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","a","b","Tokenizer","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","identifierHandling","unsafeNext","maxTokenLength","STRINGLITERAL","chr","OPENPAREN","CLOSEPAREN","isDecimalDigit","FLOATLITERAL","DOT","commentStartPos","LINE","TRIPLE","closed","_0_expected","testInteger","INTEGERLITERAL","COLON","SEMICOLON","EQUALS_GREATERTHAN","QUESTION","OPENBRACKET","CLOSEBRACKET","OPENBRACE","CLOSEBRACE","AT","isIdentifierStart","isKeywordCharacter","posBefore","isIdentifierPart","keywordToken","ALWAYS","PREFER","isWhiteSpace","Invalid_character","ENDOFFILE","peek","checkOnNewLine","maxCompoundLength","tokenBefore","tokenPosBefore","skipIdentifier","skip","mark","state","reusableState","State","discard","reset","readIdentifier","quote","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","fromCharCode","readRegexpPattern","escaped","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_4","sepEnd","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_10","i64_mul","Digit_expected","i64_3","Octal_digit_expected","i64_1","Binary_digit_expected","readFloat","readDecimalFloat","parseFloat","readHexFloat","remain","value32","invalid","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","g","e","window","ReportMode","builtins_1","currentThisExpression","currentElementExpression","resolveType","ctxElement","ctxTypes","reportMode","REPORT","resolveNamedType","resolveFunctionType","nameNode","typeArgumentNodes","isSimpleType","simpleName","Type_0_is_not_generic","Basic_type_0_cannot_be_nullable","resolveClassInclTypeArguments","makeMap","type_1","resolveBuiltinNativeType","resolveBuiltinIndexofType","resolveBuiltinValueofType","resolveBuiltinReturnTypeType","resolveTypeArguments","typeNode","Cannot_find_name_0","parameterNodes","parameterNode","REST","parameterTypeNode","Type_expected","returnTypeNode","Expected_0_type_arguments_but_got_1","typeArgument","Index_signature_is_missing_in_type_0","Type_0_has_no_call_signatures","prev","Property_0_does_not_exist_on_type_1","alternativeReportNode","minParameterCount","maxParameterCount","argumentCount","resolveExpression","ctxFlow","ctxType","resolveAssertionExpression","resolveUnaryPrefixExpression","resolveUnaryPostfixExpression","resolveBinaryExpression","resolveThisExpression","resolveSuperExpression","resolveIdentifier","actualFunction","resolveLiteralExpression","resolvePropertyAccessExpression","resolveElementAccessExpression","resolveCallExpression","ensureResolvedLazyGlobal","targetNode","propertyName","indexedGet","arrayType","resolvedType","targetExpression","determineIntegerLiteralType","intValue","i64_is_i8","i64_is_u8","i64_is_i16","i64_is_u16","i64_is_i32","i64_is_u32","i64_is_bool","NONNULL","i64_sub","i64_zero","thisLocal","lookupLocal","_this_cannot_be_referenced_in_current_location","superLocal","_super_can_only_be_referenced_in_a_derived_class","literalType","BuiltinSymbols","resolveFunctionInclTypeArguments","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","actualParent","resolvedInstance","classTypeArguments","classTypeParameters","numClassTypeArguments","classTypeParameterName","numFunctionTypeArguments","signatureNode","functionTypeNode","signatureParameters","numSignatureParameters","parameterDeclaration","reportNode","resolvedTypeArguments","numTypeParameters","baseClass","nameInclTypeParamters","baseMembers","baseMembers_1","baseMembers_1_1","baseMemberName","baseMember","instanceMemberPrototypes","fieldTypeNode","fieldType","baseField","atEnd","fieldInstance","boundPrototype","propertyInstance","ctorPrototype","ctorInstance","overloadPrototype","operatorInstance","LocalFlags","FlowFlags","ANY_CATEGORICAL","ANY_CONDITIONAL","FieldFlags","scopedLocals","fieldFlags","parentFunction","continueLabel","localFlags","inlineFunction","inlineReturnLabel","createInline","fork","branch","slice","getTempLocal","temps","k_1","unsetLocalFlag","pop","getAutoreleaseLocal","SCOPED","setLocalFlag","RETAINED","freeTempLocal","getAndFreeTempLocal","getScopedLocal","addScopedLocal","scopedLocal","addScopedAlias","existingLocal","scopedAlias","freeScopedLocals","scope","isLocalFlag","defaultIfInlined","isAnyLocalFlag","pushBreakLabel","stack","popBreakLabel","inherit","inheritConditional","CONDITIONALLY_RETAINED","READFROM","CONDITIONALLY_READFROM","WRITTENTO","CONDITIONALLY_WRITTENTO","inheritMutual","leftLocalFlags","numLeftLocalFlags","rightLocalFlags","numRightLocalFlags","combinedFlags","max","isNonnull","inheritNonnullIfTrue","EqzI32","EqzI64","inheritNonnullIfFalse","EqI32","EqI64","NeI32","NeI64","canOverflow","WRAPPED","canConversionOverflow","global_1","EqF32","EqF64","NeF32","NeF64","LtI32","LtU32","LtI64","LtU64","LtF32","LtF64","LeI32","LeU32","LeI64","LeU64","LeF32","LeF64","GtI32","GtU32","GtI64","GtU64","GtF32","GtF64","GeI32","GeU32","GeI64","GeU64","GeF32","GeF64","MulI32","AndI32","ShlI32","ShrI32","ShrU32","DivU32","RemI32","RemU32","ClzI32","CtzI32","PopcntI32","MIN_VALUE","fromType","last","instanceName","levels","findUsedLocalsVisit","used","findUsedLocals","Options","importMemory","sharedMemory","importTable","explicitStart","features","noUnsafe","feature","Constraints","RuntimeFeatures","mangleImportName_moduleName","mangleImportName_elementName","Compiler","currentInlineFunctions","currentEnum","currentType","memorySegments","stringSegments","functionTable","argcVar","argcSet","runtimeFeatures","skippedAutoreleases","f32ModInstance","f64ModInstance","f32PowInstance","f64PowInstance","Atomics","MutableGloabls","SIMD128","BulkMemory","SignExt","compile","startFunctionInstance","startFunctionBody","currentFlow","currentBody","heap_base","rtti_base","files","compileFile","compileExports","startIsEmpty","started","unshift","funcRef","ensureFunctionType","compileVisitGlobals","compileVisitMembers","compileRTTI","i64_align","isSharedMemory","i64_shr_u","ensureModuleExports","members_1","members_1_1","ensureModuleExport","prefix","fullName","setter","Cannot_export_a_mutable_global","ensureTrampoline","ensureArgcSet","COMPILED","ensureModuleFieldGetter","ensureModuleFieldSetter","isUnmanaged","subPrefix","loadExpr","isManaged","makeRetain","nativeType","nativeSizeType","valueExpr","makeRetainRelease","compileElement","compileMembers","compileGlobal","compileEnum","compileFunctionUsingTypeArguments","compileClassUsingTypeArguments","element_1","exportsStar_1","exportsStar_1_1","compileFileByPath","normalizedPathWithoutExtension","pathWithIndex","previousBody","previousFlow","compileTopLevelStatement","finishAutoreleases","numLocals","initExpr","initAutoreleaseSkipped","initializerNode","compileExpression","Type_0_is_not_assignable_to_type_1","isDeclaredConstant","isDeclaredInline","MODULE_IMPORT","mangleImportName","initializeInStart","Mutable_value_cannot_be_inlined","decoratorNodes","previousValue","previousValueIsMut","isInline","initInStart","valueNode","In_const_enum_declarations_member_initializer_must_be_constant_expression","Enum_member_must_have_initializer","AddI32","makeGlobalAssignment","compileFunction","resultType","compileFunctionBody","stmts","bodyNode","compileStatements","MAIN","indexBefore","performAutoreleases","nonNull","temp","makeAllocation","makeFieldInitialization","Constructors_for_derived_classes_must_contain_a_super_call","A_function_whose_declared_type_is_not_void_must_return_a_value","previousType","An_implementation_cannot_be_declared_in_ambient_contexts","flatten","Function_implementation_is_missing_or_not_immediately_following_the_declaration","compileClass","staticMembers","compileInterfaceDeclaration","addMemorySegment","alignment","ensureStaticString","stringValue","stringSegment","rtHeaderSize","runtimeHeaderSize","ensureStaticArrayBuffer","elementType","byteLength","bufferInstance","buf","writeI64","ensureStaticArrayHeader","bufferSegment","arrayInstance","arrayInstanceSize","bufferLength","arrayLength","bufferAddress32","ensureFunctionTableEntry","TRAMPOLINE","memberStatements","compileStatement","isLastInBody","compileBlockStatement","compileBreakStatement","compileContinueStatement","compileDoStatement","compileEmptyStatement","compileExpressionStatement","compileForStatement","compileIfStatement","compileReturnStatement","compileSwitchStatement","compileThrowStatement","compileTryStatement","compileVariableStatement","compileVoidStatement","compileWhileStatement","addDebugLocation","isBody","numStatements","outerFlow","innerFlow","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","condExpr","makeIsTrueish","alwaysFalse","terminates","continues","breaks","fallsThrough","alwaysTrue","stmts_1","incrExpr","loopLabel","bodyStatement","needsLabel","ifTrueStmts","ifTrueFlow","ifFalseFlow","ifFalseStmts","valueExpression","constraints","ANY_RETAINED","numCases","context","tempLocal","tempLocalIndex","breakIndex","defaultIndex","currentBlock","commonCategorical","commonConditional","isLast","nextLabel","count","newArgs","compileAbort","numDeclarations","initializers","isConst","_const_declarations_must_be_initialized","CONSTANT","compileInlineConstant","contextualType","compileAssertionExpression","compileBinaryExpression","compileCallExpression","compileCommaExpression","compileElementAccessExpression","compileFunctionExpression","compileIdentifierExpression","compileInstanceOfExpression","compileLiteralExpression","compileNewExpression","compilePropertyAccessExpression","compileTernaryExpression","compileUnaryPostfixExpression","compileUnaryPrefixExpression","wrap","convertExpression","ensureSmallIntegerWrap","explicit","Object_is_possibly_null","Conversion_from_type_0_to_1_requires_an_explicit_cast","PromoteF32","DemoteF64","TruncF32ToI64","TruncF32ToI32","TruncF32ToU64","TruncF32ToU32","TruncF64ToI64","TruncF64ToI32","TruncF64ToU64","TruncF64ToU32","ConvertI64ToF32","ConvertU64ToF32","ConvertI32ToF32","ConvertU32ToF32","ConvertI64ToF64","ConvertU64ToF64","ConvertI32ToF64","ConvertU32ToF64","WrapI64","ExtendI32","ExtendU32","inheritedConstraints","PREFIX","exceptVoid","Expression_is_never_null","tempIndex","leftExpr","leftType","rightExpr","rightType","commonType","compound","compileBinaryOverload","Operator_0_cannot_be_applied_to_types_1_and_2","AllTrueVecI8x16","EqVecI8x16","AnyTrueVecI8x16","NeVecI8x16","compileAssignment","AddI64","AddF32","AddF64","SubI32","SubI64","SubF32","SubF64","MulI64","MulF32","MulF64","namespace","makeCallDirect","DivI32","DivI64","DivU64","DivF32","DivF64","RemI64","RemU64","intType","ShlI64","The_0_operator_cannot_be_applied_to_type_1","ShrI64","ShrU64","AndI64","OrI32","OrI64","XorI32","XorI64","rightFlow","performAutoreleasesWithValue","leftAutoreleaseSkipped","rightAutoreleaseSkipped","retainLeftInElse","moveAutorelease","rightStmts","makeRelease","retainLeftInThen","makeAssignment","compileUnaryOverload","thisExpression","checkUnsafe","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","isUnchecked","indexedSet","Index_signature_in_type_0_only_permits_reading","indexExpression","tee","makeLocalAssignment","makeFieldAssignment","makeAutorelease","nativeReturnType","thisExpr_1","thisExpr","elementExpr","tempLocalTarget","tempLocalElement","makeSkippedRelease","nativeFieldType","nativeThisType","tempThis","tempValue","flow_2","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","baseClassInstance","theCall","compileCallDirect","ensureConstructor","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","indexArg","compileCallExpressionBuiltin","inferredTypes","argumentNodes","argumentExprs","templateName","argumentExpression","inferredType","concreteType","Type_argument_expected","compileCallIndirect","compileCall","checkCallSignature","hasThis","minimum","Expected_at_least_0_arguments_but_got_1","Expression_is_unsafe","argumentExpressions","thisArg","parameterTypes_1","makeCallInline","Function_0_cannot_be_inlined_into_itself","numArgumentsInclThis","immediatelyDropped","usedLocals","paramExpr","paramType","argumentLocal","baseInstance","initType","originalSignature","originalName","originalParameterTypes","originalParameterDeclarations","minArguments","minOperands","maxArguments","maxOperands","numOptional","forwardedOperands","operandIndex","trampolineSignature","ofN","argc","Optional_parameter_must_have_an_initializer","ensureArgcVar","setargc","oldExpr","newExpr","temp1","temp2","undoAutorelease","fromInnerFlow","toOuterFlow","clearFlags","lengthBefore","skipAutorelease","expr_1","theOperands","numOperands","isCallImport","allOptionalsAreConstant","expr_2","makeCallIndirect","numExpressions","exprs","contextualSignature","numPresentParameters","thisTypeNode","maybeCompileEnclosingSource","flow_3","actualFunction_1","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","scopedThis","superType","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","actualType","implicitlyNegate","compileArrayLiteral","floatValue","i64_to_f32","i64_to_f64","compileStringLiteral","compileObjectLiteral","tempDataStart","nativeElementType","bufferAddress","arraySegment","arrayAddress","alignLog2","nativeArrayType","dataStart","ctor","Constructor_of_class_0_must_not_require_any_arguments","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","hasErrors","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","compileInstantiate","baseCtor","allocExpr","propertyAccess","theEnum","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","ifThenFlow","ifThenExpr","ifThenType","IfThenAutoreleaseSkipped","ifElseFlow","ifElseExpr","ifElseType","ifElseAutoreleaseSkipped","getValue","setValue","NegF32","NegF64","makeIsFalseish","ExtendI8ToI32","ExtendI16ToI32","thisLocalIndex","fieldPrototype","makeInstanceOfClass","idTemp","idExpr","conditions","single","Auto","compiler_1","compiler","isAsm","directize","isInteger","evaluateConstantType","isFloat","isBoolean","isSigned","isReference","isString","isArray","isArrayLike","isFunction","isDefined","checkTypeAbsent","checkArgsRequired","SWALLOW","isConstant","isVoid","lengthof","sizeof","checkTypeRequired","alignof","ctz","checkArgsOptional","typeArgumentsRange","Type_0_has_no_property_1","nameof","popcnt","checkTypeOptional","ClzI64","CtzI64","PopcntI64","rotl","RotlI32","RotlI64","rotr","RotrI32","RotrI64","abs","tempLocal1","tempLocalIndex2","tempLocalIndex1","wasm64","AbsF32","AbsF64","MaxF32","MaxF64","tempLocal0","min","MinF32","MinF64","floor","CeilF32","FloorF32","CeilF64","FloorF64","copysign","CopysignF32","CopysignF64","nearest","NearestF32","NearestF64","reinterpret","ReinterpretF32","ReinterpretF64","ReinterpretI32","ReinterpretI64","sqrt","SqrtF32","SqrtF64","trunc","TruncF32","TruncF64","outType","immOffset","evaluateImmediateOffset","immAlign","naturalAlign","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","inType","atomic_add","atomic_sub","atomic_and","atomic_or","atomic_xor","atomic_xchg","Add","Sub","And","Or","Xor","Xchg","memory_size","MemorySize","memory_grow","MemoryGrow","alreadyUnchecked","call_direct","arg0Type","operandExprs","nativeParamTypes","operandType","instantiate","User_defined_0","Expression_must_be_a_compile_time_constant","off","v128_splat","SplatVecI8x16","SplatVecI16x8","SplatVecI32x4","SplatVecI64x2","SplatVecF32x4","SplatVecF64x2","v128_extract_lane","ExtractLaneSVecI8x16","ExtractLaneUVecI8x16","ExtractLaneSVecI16x8","ExtractLaneUVecI16x8","ExtractLaneVecI32x4","ExtractLaneVecI64x2","ExtractLaneVecF32x4","ExtractLaneVecF64x2","maxIdx","v128_replace_lane","ReplaceLaneVecI8x16","ReplaceLaneVecI16x8","ReplaceLaneVecI32x4","ReplaceLaneVecI64x2","ReplaceLaneVecF32x4","ReplaceLaneVecF64x2","v128_shuffle","laneWidth","laneCount","argN","off8","idx8","v128_add","v128_sub","v128_mul","v128_div","v128_add_saturate","v128_sub_saturate","v128_min","v128_max","v128_eq","v128_ne","v128_lt","v128_le","v128_gt","v128_ge","AddVecI8x16","AddVecI16x8","AddVecI32x4","AddVecI64x2","AddVecF32x4","AddVecF64x2","SubVecI8x16","SubVecI16x8","SubVecI32x4","SubVecI64x2","SubVecF32x4","SubVecF64x2","MulVecI8x16","MulVecI16x8","MulVecI32x4","MulVecF32x4","MulVecF64x2","DivVecF32x4","DivVecF64x2","AddSatSVecI8x16","AddSatUVecI8x16","AddSatSVecI16x8","AddSatUVecI16x8","SubSatSVecI8x16","SubSatUVecI8x16","SubSatSVecI16x8","SubSatUVecI16x8","MinVecF32x4","MinVecF64x2","MaxVecF32x4","MaxVecF64x2","EqVecI16x8","EqVecI32x4","EqVecF32x4","EqVecF64x2","NeVecI16x8","NeVecI32x4","NeVecF32x4","NeVecF64x2","LtSVecI8x16","LtUVecI8x16","LtSVecI16x8","LtUVecI16x8","LtSVecI32x4","LtUVecI32x4","LtVecF32x4","LtVecF64x2","LeSVecI8x16","LeUVecI8x16","LeSVecI16x8","LeUVecI16x8","LeSVecI32x4","LeUVecI32x4","LeVecF32x4","LeVecF64x2","GtSVecI8x16","GtUVecI8x16","GtSVecI16x8","GtUVecI16x8","GtSVecI32x4","GtUVecI32x4","GtVecF32x4","GtVecF64x2","GeSVecI8x16","GeUVecI8x16","GeSVecI16x8","GeUVecI16x8","GeSVecI32x4","GeUVecI32x4","GeVecF32x4","GeVecF64x2","v128_neg","v128_abs","v128_sqrt","v128_convert","v128_trunc","NegVecI8x16","NegVecI16x8","NegVecI32x4","NegVecI64x2","NegVecF32x4","NegVecF64x2","AbsVecF32x4","AbsVecF64x2","SqrtVecF32x4","SqrtVecF64x2","ConvertSVecI32x4ToVecF32x4","ConvertUVecI32x4ToVecF32x4","ConvertSVecI64x2ToVecF64x2","ConvertUVecI64x2ToVecF64x2","TruncSatSVecF32x4ToVecI32x4","TruncSatUVecF32x4ToVecI32x4","TruncSatSVecF64x2ToVecI64x2","TruncSatUVecF64x2ToVecI64x2","v128_shl","v128_shr","ShlVecI8x16","ShlVecI16x8","ShlVecI32x4","ShlVecI64x2","ShrSVecI8x16","ShrUVecI8x16","ShrSVecI16x8","ShrUVecI16x8","ShrSVecI32x4","ShrUVecI32x4","ShrSVecI64x2","ShrUVecI64x2","v128_and","v128_or","v128_xor","AndVec128","OrVec128","XorVec128","v128_not","NotVec128","v128_bitselect","v128_any_true","v128_all_true","AnyTrueVecI16x8","AnyTrueVecI32x4","AnyTrueVecI64x2","AllTrueVecI16x8","AllTrueVecI32x4","AllTrueVecI64x2","idof","visit_globals","visit_members","i32_clz","deferASM","i64_clz","i32_ctz","i64_ctz","i32_popcnt","i64_popcnt","i32_rotl","i64_rotl","i32_rotr","i64_rotr","f32_abs","f64_abs","f32_max","f64_max","f32_min","f64_min","f32_ceil","f64_ceil","f32_floor","f64_floor","f32_copysign","f64_copysign","f32_nearest","f64_nearest","i32_reinterpret_f32","i64_reinterpret_f64","f32_reinterpret_i32","f64_reinterpret_i64","f32_sqrt","f64_sqrt","f32_trunc","f64_trunc","i32_load8_s","i32_load8_u","i32_load16_s","i32_load16_u","i32_load","i64_load8_s","i64_load8_u","i64_load16_s","i64_load16_u","i64_load32_s","i64_load32_u","i64_load","f32_load","f64_load","i32_store8","i32_store16","i32_store","i64_store8","i64_store16","i64_store32","i64_store","f32_store","f64_store","i32_atomic_load8_u","i32_atomic_load16_u","i32_atomic_load","i64_atomic_load8_u","i64_atomic_load16_u","i64_atomic_load32_u","i64_atomic_load","i32_atomic_store8","i32_atomic_store16","i32_atomic_store","i64_atomic_store8","i64_atomic_store16","i64_atomic_store32","i64_atomic_store","i32_atomic_rmw8_add_u","i32_atomic_rmw16_add_u","i32_atomic_rmw_add","i64_atomic_rmw8_add_u","i64_atomic_rmw16_add_u","i64_atomic_rmw32_add_u","i64_atomic_rmw_add","i32_atomic_rmw8_sub_u","i32_atomic_rmw16_sub_u","i32_atomic_rmw_sub","i64_atomic_rmw8_sub_u","i64_atomic_rmw16_sub_u","i64_atomic_rmw32_sub_u","i64_atomic_rmw_sub","i32_atomic_rmw8_and_u","i32_atomic_rmw16_and_u","i32_atomic_rmw_and","i64_atomic_rmw8_and_u","i64_atomic_rmw16_and_u","i64_atomic_rmw32_and_u","i64_atomic_rmw_and","i32_atomic_rmw8_or_u","i32_atomic_rmw16_or_u","i32_atomic_rmw_or","i64_atomic_rmw8_or_u","i64_atomic_rmw16_or_u","i64_atomic_rmw32_or_u","i64_atomic_rmw_or","i32_atomic_rmw8_u_xor","i32_atomic_rmw16_u_xor","i32_atomic_rmw_xor","i64_atomic_rmw8_xor_u","i64_atomic_rmw16_xor_u","i64_atomic_rmw32_xor_u","i64_atomic_rmw_xor","i32_atomic_rmw8_xchg_u","i32_atomic_rmw16_xchg_u","i32_atomic_rmw_xchg","i64_atomic_rmw8_xchg_u","i64_atomic_rmw16_xchg_u","i64_atomic_rmw32_xchg_u","i64_atomic_rmw_xchg","i32_atomic_rmw8_cmpxchg_u","i32_atomic_rmw16_cmpxchg_u","i32_atomic_rmw_cmpxchg","i64_atomic_rmw8_cmpxchg_u","i64_atomic_rmw16_cmpxchg_u","i64_atomic_rmw32_cmpxchg_u","i64_atomic_rmw_cmpxchg","i32_wait","i64_wait","v128_load","v128_store","i8x16_splat","i8x16_extract_lane_s","i8x16_extract_lane_u","i8x16_replace_lane","i8x16_add","i8x16_sub","i8x16_mul","i8x16_neg","i8x16_add_saturate_s","i8x16_add_saturate_u","i8x16_sub_saturate_s","i8x16_sub_saturate_u","i8x16_shl","i8x16_shr_s","i8x16_shr_u","i8x16_any_true","i8x16_all_true","i8x16_eq","i8x16_ne","i8x16_lt_s","i8x16_lt_u","i8x16_le_s","i8x16_le_u","i8x16_gt_s","i8x16_gt_u","i8x16_ge_s","i8x16_ge_u","i16x8_splat","i16x8_extract_lane_s","i16x8_extract_lane_u","i16x8_replace_lane","i16x8_add","i16x8_sub","i16x8_mul","i16x8_neg","i16x8_add_saturate_s","i16x8_add_saturate_u","i16x8_sub_saturate_s","i16x8_sub_saturate_u","i16x8_shl","i16x8_shr_s","i16x8_shr_u","i16x8_any_true","i16x8_all_true","i16x8_eq","i16x8_ne","i16x8_lt_s","i16x8_lt_u","i16x8_le_s","i16x8_le_u","i16x8_gt_s","i16x8_gt_u","i16x8_ge_s","i16x8_ge_u","i32x4_splat","i32x4_extract_lane","i32x4_replace_lane","i32x4_add","i32x4_sub","i32x4_mul","i32x4_neg","i32x4_shl","i32x4_shr_s","i32x4_shr_u","i32x4_any_true","i32x4_all_true","i32x4_eq","i32x4_ne","i32x4_lt_s","i32x4_lt_u","i32x4_le_s","i32x4_le_u","i32x4_gt_s","i32x4_gt_u","i32x4_ge_s","i32x4_ge_u","i32x4_trunc_s_f32x4_sat","i32x4_trunc_u_f32x4_sat","i64x2_splat","i64x2_extract_lane","i64x2_replace_lane","i64x2_add","i64x2_sub","i64x2_neg","i64x2_shl","i64x2_shr_s","i64x2_shr_u","i64x2_any_true","i64x2_all_true","i64x2_trunc_s_f64x2_sat","i64x2_trunc_u_f64x2_sat","f32x4_splat","f32x4_extract_lane","f32x4_replace_lane","f32x4_add","f32x4_sub","f32x4_mul","f32x4_div","f32x4_neg","f32x4_min","f32x4_max","f32x4_abs","f32x4_sqrt","f32x4_eq","f32x4_ne","f32x4_lt","f32x4_le","f32x4_gt","f32x4_ge","f32x4_convert_s_i32x4","f32x4_convert_u_i32x4","f64x2_splat","f64x2_extract_lane","f64x2_replace_lane","f64x2_add","f64x2_sub","f64x2_mul","f64x2_div","f64x2_neg","f64x2_min","f64x2_max","f64x2_abs","f64x2_sqrt","f64x2_eq","f64x2_ne","f64x2_lt","f64x2_le","f64x2_gt","f64x2_ge","f64x2_convert_s_i64x2","f64x2_convert_u_i64x2","v8x16_shuffle","tryDeferASM","messageArg","filenameArg","typeToRuntimeFlags","argumentsRange","setCurrentTypeOnError","expectedMinimum","expectedMaximum","memory_allocate","memory_free","memory_reset","runtime_instanceof","runtime_flags","runtime_allocate","runtime_reallocate","runtime_register","runtime_discard","runtime_makeArray","capabilities","nativeSizeSize","ftype","blocks","outer","lastId","managedClasses_1","managedClasses_1_1","visitImpl","isDeclaredInLibrary","visitFunc","visitSig","fieldOffset","managedClasses_2","managedClasses_2_1","abvPrototype","managedClasses_3","managedClasses_3_1","isAcyclic","Decompiler","functionId","decompile","decompiler","decompileFunction","nativeTypeToType","decompileExpression","nested","i64_to_string","ExportsWalker","includePrivate","seen","walk","visitFile","visitElement","visitAlias","visitGlobal","visitEnum","visitFunctionInstances","visitClassInstances","visitField","visitPropertyInstances","prop","visitFunction","hasCompiledMember","e_15","e_16","visitNamespace","visitClass","IDLBuilder","indentLevel","build","indent","typeToString","members_2","members_2_1","name_1","visitInterface","TSDBuilder","unknown","numMembers","members_3","members_3_1","name_2","isInterface","Parser","backlog","seenlog","donelog","dependees","tryParseSignatureIsSignature","parseParametersThis","parseFile","isEntry","indexOf","USER","currentSource","tn","parseTopLevelStatement","startPos","parseDecorator","skipStatement","exportStart","exportEnd","defaultStart","defaultEnd","declareStart","declareEnd","contextIsAmbient","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","first","parseEnum","parseVariable","parseFunction","parseStatement","parseClassOrInterface","parseNamespace","parseExportImport","parseImport","parseTypeDeclaration","An_export_assignment_cannot_have_modifiers","parseExportDefaultAlias","parseExport","_0_modifier_cannot_be_used_here","Decorators_are_not_valid_here","nextFile","getDependee","dependent","clear","parseType","acceptParenthesized","suppressErrors","isNullableSignature","tryParseFunctionType","Unexpected_token","innerType","Identifier_expected","nullable","parameter","bracketStart","bracketRange","isSignature","A_rest_parameter_cannot_be_optional","OPTIONAL","param","parseArguments","parseVariableDeclaration","parentFlags","parentDecorators","DEFINITE_ASSIGNMENT","Initializers_are_not_allowed_in_ambient_contexts","parseExpression","A_definite_assignment_assertion_is_not_permitted_in_this_context","parseEnumValue","parseReturn","parseTypeParameters","seenOptional","typeParameter","parseTypeParameter","Required_type_parameters_may_not_follow_optional_type_parameters","Type_parameter_list_cannot_be_empty","parseParameters","isConstructor","seenRest","reportedRest","parseParameter","A_rest_parameter_must_be_last_in_a_parameter_list","A_required_parameter_cannot_follow_an_optional_parameter","isRest","isOptional","startRange","accessFlags","A_parameter_property_cannot_be_declared_using_a_rest_parameter","A_rest_parameter_cannot_have_an_initializer","Parameter_cannot_have_question_mark_and_initializer","signatureStart","isSetter","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","parseBlockStatement","parseFunctionExpression","parseFunctionExpressionCommon","bodyExpression","Interface_declaration_cannot_have_implements_clause","parseClassMember","parseClassExpression","VIRTUAL","accessStart","accessEnd","staticStart","staticEnd","abstractStart","abstractEnd","GENERIC_CONTEXT","readonlyStart","readonlyEnd","state_1","setEnd","retIndex","parseIndexSignatureDeclaration","typeParametersStart","Type_parameters_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","Type_annotation_cannot_appear_on_a_constructor_declaration","A_set_accessor_cannot_have_a_return_type_annotation","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","retMethod","Constructor_implementation_is_missing","Optional_properties_are_not_supported","retField","parseExportMember","asIdentifier","skipFrom","parseImportDeclaration","topLevel","parseBreak","parseContinue","parseDoStatement","parseForStatement","parseIfStatement","A_return_statement_can_only_be_used_within_a_function_body","parseSwitchStatement","parseThrowStatement","parseTryStatement","parseVoidStatement","parseWhileStatement","parseExpressionStatement","elseStatement","case_","parseSwitchCase","_case_or_default_expected","parseExpressionStart","precedence","determinePrecedenceStart","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","again","startPos_1","identifierText","_super_must_be_followed_by_an_argument_list_or_member_access","regexpPattern","Expression_expected","tryParseTypeArgumentsBeforeArguments","nextPrecedence","maybeParseCallExpression","determinePrecedence","commaExprs","isRightAssociative","joinPropertyCall","callee","inner","skipBlock","depth","Precedence","binaryen","wrapModule","emitStackIR","emitAsmjs","Binaryen","__memory_allocate","_malloc","__memory_free","_free","__memory_copy","_memmove","__store","HEAPU8","__load","globalScope","UnreachableError","captureStackTrace","AssertionError","defineProperties","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz32","round","y","sign","isTrueish","fromCodePoint","replaceAll","search","replacment","res","split","Number","capacity","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","HEAP","HEAP_OFFSET","oldHeap","fill","copy","copyWithin","f32_as_i32","i32_as_f32","f64_as_i64","i64_as_f64","Long","ZERO","i64_one","ONE","lo","hi","fromBits","low","high","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","i64_and","and","i64_or","or","i64_xor","xor","shl","i64_shr","shr","shru","i64_not","not","i64_eq","eq","i64_ne","ne","fromInt","minSafeF32","fromNumber","maxSafeF32","i64_is_f32","gte","lte","minSafeF64","maxSafeF64","i64_is_f64","toNumber","unsigned","wasm","WebAssembly","Instance","isLong","obj","__isLong__","INT_CACHE","UINT_CACHE","cachedObj","cache","isNaN","UZERO","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","neg","TWO_PWR_32_DBL","lowBits","highBits","pow_dbl","fromString","radix","RangeError","radixToPower","power","fromValue","TWO_PWR_16_DBL","TWO_PWR_24","UONE","NEG_ONE","LongPrototype","toInt","isZero","isNegative","radixLong","rem1","rem","remDiv","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","bit","eqz","isPositive","isOdd","isEven","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","le","greaterThan","gt","greaterThanOrEqual","ge","thisNeg","otherNeg","negate","addend","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","subtract","subtrahend","multiply","multiplier","get_high","b00","divide","divisor","approx","div_u","div_s","log2","log","LN2","delta","approxRes","approxRem","modulo","rem_u","rem_s","shiftLeft","numBits","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","__decorate","unmanaged","decompiler_1","definitions_1","formatDiagnostic","parser_1","parser","nextDiagnostic","isInfo","isWarning","isError","createOptions","setTarget","setNoAssert","setImportMemory","setSharedMemory","setImportTable","setSourceMap","setMemoryBase","setGlobalAlias","setExplicitStart","setNoUnsafe","FEATURE_SIGN_EXTENSION","FEATURE_MUTABLE_GLOBAL","FEATURE_BULK_MEMORY","FEATURE_SIMD","FEATURE_THREADS","enableFeature","setOptimizeLevelHints","optimizeLevel","shrinkLevel","finishParsing","compileProgram","decompileModule","buildIDL","buildTSD","buildRTTI","cls","bitsetIs","map","bitsetSet","isSet","CharCode","lookupInUnicodeMap","unicodeIdentifierStart","unicodeIdentifierPart","mid","midVal","makeArray","cloned","makeSet","original_1","original_1_1","v","overrides","original_2","original_2_1","overrides_1","overrides_1_1","overrides_2","overrides_2_1","separator","ipos","dirname","origin","indentX1","indentX2","indentX4","readI32","readI64","readI8","readI16","readF32","readF64","valueI64"],"mappings":"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IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IACpB,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC1C,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAEtCC,EAA+B,CACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IACpB,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,KACxB,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACtE,MAAO,MAAO,MAAO,MAAO,MAAO,MA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","file":"assemblyscript.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"binaryen\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"binaryen\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"assemblyscript\"] = factory(require(\"binaryen\"));\n\telse\n\t\troot[\"assemblyscript\"] = factory(root[\"binaryen\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__20__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 17);\n","/**\n * Common constants.\n * @module common\n *//***/\n\n/** Indicates traits of a {@link Node} or {@link Element}. */\nexport enum CommonFlags {\n /** No flags set. */\n NONE = 0,\n\n // Basic modifiers\n\n /** Has an `import` modifier. */\n IMPORT = 1 << 0,\n /** Has an `export` modifier. */\n EXPORT = 1 << 1,\n /** Has a `declare` modifier. */\n DECLARE = 1 << 2,\n /** Has a `const` modifier. */\n CONST = 1 << 3,\n /** Has a `let` modifier. */\n LET = 1 << 4,\n /** Has a `static` modifier. */\n STATIC = 1 << 5,\n /** Has a `readonly` modifier. */\n READONLY = 1 << 6,\n /** Has an `abstract` modifier. */\n ABSTRACT = 1 << 7,\n /** Has a `public` modifier. */\n PUBLIC = 1 << 8,\n /** Has a `private` modifier. */\n PRIVATE = 1 << 9,\n /** Has a `protected` modifier. */\n PROTECTED = 1 << 10,\n /** Has a `get` modifier. */\n GET = 1 << 11,\n /** Has a `set` modifier. */\n SET = 1 << 12,\n /** Has a definite assignment assertion `!` as in `x!: i32;`. */\n DEFINITE_ASSIGNMENT = 1 << 13,\n\n // Extended modifiers usually derived from basic modifiers\n\n /** Is ambient, that is either declared or nested in a declared element. */\n AMBIENT = 1 << 14,\n /** Is generic. */\n GENERIC = 1 << 15,\n /** Is part of a generic context. */\n GENERIC_CONTEXT = 1 << 16,\n /** Is an instance member. */\n INSTANCE = 1 << 17,\n /** Is a constructor. */\n CONSTRUCTOR = 1 << 18,\n /** Is a module export. */\n MODULE_EXPORT = 1 << 19,\n /** Is a module import. */\n MODULE_IMPORT = 1 << 20,\n\n // Compilation states\n\n /** Is resolved. */\n RESOLVED = 1 << 21,\n /** Is compiled. */\n COMPILED = 1 << 22,\n /** Has a constant value and is therefore inlined. */\n INLINED = 1 << 23,\n /** Is scoped. */\n SCOPED = 1 << 24,\n /** Is a trampoline. */\n TRAMPOLINE = 1 << 25,\n /** Is a virtual method. */\n VIRTUAL = 1 << 26,\n /** Is the main function. */\n MAIN = 1 << 27,\n\n // Other\n\n /** Is quoted. */\n QUOTED = 1 << 28\n}\n\n/** Path delimiter inserted between file system levels. */\nexport const PATH_DELIMITER = \"/\";\n/** Substitution used to indicate the parent directory. */\nexport const PARENT_SUBST = \"..\";\n/** Function name prefix used for getters. */\nexport const GETTER_PREFIX = \"get:\";\n/** Function name prefix used for setters. */\nexport const SETTER_PREFIX = \"set:\";\n/** Delimiter used between class names and instance members. */\nexport const INSTANCE_DELIMITER = \"#\";\n/** Delimiter used between class and namespace names and static members. */\nexport const STATIC_DELIMITER = \".\";\n/** Delimiter used between a function and its inner elements. */\nexport const INNER_DELIMITER = \"~\";\n/** Substitution used to indicate a library directory. */\nexport const LIBRARY_SUBST = \"~lib\";\n/** Library directory prefix. */\nexport const LIBRARY_PREFIX = LIBRARY_SUBST + PATH_DELIMITER;\n/** Path index suffix. */\nexport const INDEX_SUFFIX = PATH_DELIMITER + \"index\";\n\n/** Common compiler symbols. */\nexport namespace CommonSymbols {\n // special\n export const EMPTY = \"\";\n // types\n export const i8 = \"i8\";\n export const i16 = \"i16\";\n export const i32 = \"i32\";\n export const i64 = \"i64\";\n export const isize = \"isize\";\n export const u8 = \"u8\";\n export const u16 = \"u16\";\n export const u32 = \"u32\";\n export const u64 = \"u64\";\n export const usize = \"usize\";\n export const bool = \"bool\";\n export const f32 = \"f32\";\n export const f64 = \"f64\";\n export const v128 = \"v128\";\n export const i8x16 = \"i8x16\";\n export const u8x16 = \"u8x16\";\n export const i16x8 = \"i16x8\";\n export const u16x8 = \"u16x8\";\n export const i32x4 = \"i32x4\";\n export const u32x4 = \"u32x4\";\n export const i64x2 = \"i64x2\";\n export const u64x2 = \"u64x2\";\n export const f32x4 = \"f32x4\";\n export const f64x2 = \"f64x2\";\n export const void_ = \"void\";\n export const number = \"number\";\n export const boolean = \"boolean\";\n export const string = \"string\";\n export const native = \"native\";\n export const indexof = \"indexof\";\n export const valueof = \"valueof\";\n export const returnof = \"returnof\";\n // aliases\n export const null_ = \"null\";\n export const true_ = \"true\";\n export const false_ = \"false\";\n // objects\n export const this_ = \"this\";\n export const super_ = \"super\";\n export const constructor = \"constructor\";\n // constants\n export const ASC_TARGET = \"ASC_TARGET\";\n export const ASC_NO_TREESHAKING = \"ASC_NO_TREESHAKING\";\n export const ASC_NO_ASSERT = \"ASC_NO_ASSERT\";\n export const ASC_MEMORY_BASE = \"ASC_MEMORY_BASE\";\n export const ASC_OPTIMIZE_LEVEL = \"ASC_OPTIMIZE_LEVEL\";\n export const ASC_SHRINK_LEVEL = \"ASC_SHRINK_LEVEL\";\n export const ASC_FEATURE_MUTABLE_GLOBAL = \"ASC_FEATURE_MUTABLE_GLOBAL\";\n export const ASC_FEATURE_SIGN_EXTENSION = \"ASC_FEATURE_SIGN_EXTENSION\";\n export const ASC_FEATURE_BULK_MEMORY = \"ASC_FEATURE_BULK_MEMORY\";\n export const ASC_FEATURE_SIMD = \"ASC_FEATURE_SIMD\";\n export const ASC_FEATURE_THREADS = \"ASC_FEATURE_THREADS\";\n // classes\n export const I8 = \"I8\";\n export const I16 = \"I16\";\n export const I32 = \"I32\";\n export const I64 = \"I64\";\n export const Isize = \"Isize\";\n export const U8 = \"U8\";\n export const U16 = \"U16\";\n export const U32 = \"U32\";\n export const U64 = \"U64\";\n export const Usize = \"Usize\";\n export const Bool = \"Bool\";\n export const F32 = \"F32\";\n export const F64 = \"F64\";\n export const V128 = \"V128\";\n export const String = \"String\";\n export const Array = \"Array\";\n export const FixedArray = \"FixedArray\";\n export const Set = \"Set\";\n export const Map = \"Map\";\n export const ArrayBufferView = \"ArrayBufferView\";\n export const ArrayBuffer = \"ArrayBuffer\";\n export const Math = \"Math\";\n export const Mathf = \"Mathf\";\n export const Int8Array = \"Int8Array\";\n export const Int16Array = \"Int16Array\";\n export const Int32Array = \"Int32Array\";\n export const Int64Array = \"Int64Array\";\n export const Uint8Array = \"Uint8Array\";\n export const Uint8ClampedArray = \"Uint8ClampedArray\";\n export const Uint16Array = \"Uint16Array\";\n export const Uint32Array = \"Uint32Array\";\n export const Uint64Array = \"Uint64Array\";\n export const Float32Array = \"Float32Array\";\n export const Float64Array = \"Float64Array\";\n // runtime\n export const abort = \"abort\";\n export const pow = \"pow\";\n export const mod = \"mod\";\n export const alloc = \"__alloc\";\n export const realloc = \"__realloc\";\n export const free = \"__free\";\n export const retain = \"__retain\";\n export const release = \"__release\";\n export const collect = \"__collect\";\n export const typeinfo = \"__typeinfo\";\n export const instanceof_ = \"__instanceof\";\n export const visit = \"__visit\";\n export const allocArray = \"__allocArray\";\n}\n\n// shared\nexport { Feature } from \"../std/assembly/shared/feature\";\nexport { Target } from \"../std/assembly/shared/target\";\nexport { Typeinfo, TypeinfoFlags } from \"../std/assembly/shared/typeinfo\";\n","/**\n * Various compiler utilities.\n * @module util\n * @preferred\n *//***/\n\nexport * from \"./bitset\";\nexport * from \"./charcode\";\nexport * from \"./collections\";\nexport * from \"./path\";\nexport * from \"./text\";\nexport * from \"./binary\";\n\n/** Tests if `x` is a power of two. */\nexport function isPowerOf2(x: i32): bool {\n return x != 0 && (x & (x - 1)) == 0;\n}\n","/**\n * Shared diagnostic handling inherited by the parser and the compiler.\n * @module diagnostics\n * @preferred\n *//***/\n\nimport {\n Range\n} from \"./ast\";\n\nimport {\n DiagnosticCode,\n diagnosticCodeToString\n} from \"./diagnosticMessages.generated\";\n\nimport {\n isLineBreak, CharCode\n} from \"./util\";\n\nexport {\n DiagnosticCode,\n diagnosticCodeToString\n} from \"./diagnosticMessages.generated\";\n\n/** Indicates the category of a {@link DiagnosticMessage}. */\nexport enum DiagnosticCategory {\n /** Informatory message. */\n INFO,\n /** Warning message. */\n WARNING,\n /** Error message. */\n ERROR\n}\n\n/** Returns the string representation of the specified diagnostic category. */\nexport function diagnosticCategoryToString(category: DiagnosticCategory): string {\n switch (category) {\n case DiagnosticCategory.INFO: return \"INFO\";\n case DiagnosticCategory.WARNING: return \"WARNING\";\n case DiagnosticCategory.ERROR: return \"ERROR\";\n default: {\n assert(false);\n return \"\";\n }\n }\n}\n\n/** ANSI escape sequence for blue foreground. */\nexport const COLOR_BLUE: string = \"\\u001b[96m\";\n/** ANSI escape sequence for yellow foreground. */\nexport const COLOR_YELLOW: string = \"\\u001b[93m\";\n/** ANSI escape sequence for red foreground. */\nexport const COLOR_RED: string = \"\\u001b[91m\";\n/** ANSI escape sequence to reset the foreground color. */\nexport const COLOR_RESET: string = \"\\u001b[0m\";\n\n/** Returns the ANSI escape sequence for the specified category. */\nexport function diagnosticCategoryToColor(category: DiagnosticCategory): string {\n switch (category) {\n case DiagnosticCategory.INFO: return COLOR_BLUE;\n case DiagnosticCategory.WARNING: return COLOR_YELLOW;\n case DiagnosticCategory.ERROR: return COLOR_RED;\n default: {\n assert(false);\n return \"\";\n }\n }\n}\n\n/** Represents a diagnostic message. */\nexport class DiagnosticMessage {\n\n /** Message code. */\n code: i32;\n /** Message category. */\n category: DiagnosticCategory;\n /** Message text. */\n message: string;\n /** Respective source range, if any. */\n range: Range | null = null;\n /** Related range, if any. */\n relatedRange: Range | null = null;\n\n /** Constructs a new diagnostic message. */\n private constructor(code: i32, category: DiagnosticCategory, message: string) {\n this.code = code;\n this.category = category;\n this.message = message;\n }\n\n /** Creates a new diagnostic message of the specified category. */\n static create(\n code: DiagnosticCode,\n category: DiagnosticCategory,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): DiagnosticMessage {\n var message = diagnosticCodeToString(code);\n if (arg0 != null) message = message.replace(\"{0}\", arg0);\n if (arg1 != null) message = message.replace(\"{1}\", arg1);\n if (arg2 != null) message = message.replace(\"{2}\", arg2);\n return new DiagnosticMessage(code, category, message);\n }\n\n /** Creates a new informatory diagnostic message. */\n static createInfo(\n code: DiagnosticCode,\n arg0: string | null = null,\n arg1: string | null = null\n ): DiagnosticMessage {\n return DiagnosticMessage.create(code, DiagnosticCategory.INFO, arg0, arg1);\n }\n\n /** Creates a new warning diagnostic message. */\n static createWarning(\n code: DiagnosticCode,\n arg0: string | null = null,\n arg1: string | null = null\n ): DiagnosticMessage {\n return DiagnosticMessage.create(code, DiagnosticCategory.WARNING, arg0, arg1);\n }\n\n /** Creates a new error diagnostic message. */\n static createError(\n code: DiagnosticCode,\n arg0: string | null = null,\n arg1: string | null = null\n ): DiagnosticMessage {\n return DiagnosticMessage.create(code, DiagnosticCategory.ERROR, arg0, arg1);\n }\n\n /** Adds a source range to this message. */\n withRange(range: Range): this {\n this.range = range;\n return this;\n }\n\n /** Adds a related source range to this message. */\n withRelatedRange(range: Range): this {\n this.relatedRange = range;\n return this;\n }\n\n /** Converts this message to a string. */\n toString(): string {\n if (this.range) {\n return (\n diagnosticCategoryToString(this.category) +\n \" \" +\n this.code.toString(10) +\n \": \\\"\" +\n this.message +\n \"\\\" in \" +\n this.range.source.normalizedPath +\n \":\" +\n this.range.line.toString(10) +\n \":\" +\n this.range.column.toString(10)\n );\n }\n return (\n diagnosticCategoryToString(this.category) +\n \" \" +\n this.code.toString(10) +\n \": \" +\n this.message\n );\n }\n}\n\n/** Formats a diagnostic message, optionally with terminal colors and source context. */\nexport function formatDiagnosticMessage(\n message: DiagnosticMessage,\n useColors: bool = false,\n showContext: bool = false\n): string {\n\n // general information\n var sb: string[] = [];\n if (useColors) sb.push(diagnosticCategoryToColor(message.category));\n sb.push(diagnosticCategoryToString(message.category));\n if (useColors) sb.push(COLOR_RESET);\n sb.push(message.code < 1000 ? \" AS\" : \" TS\");\n sb.push(message.code.toString(10));\n sb.push(\": \");\n sb.push(message.message);\n\n // include range information if available\n if (message.range) {\n\n // include context information if requested\n let range = message.range;\n if (showContext) {\n sb.push(\"\\n\");\n sb.push(formatDiagnosticContext(range, useColors));\n }\n sb.push(\"\\n\");\n sb.push(\" in \");\n sb.push(range.source.normalizedPath);\n sb.push(\"(\");\n sb.push(range.line.toString(10));\n sb.push(\",\");\n sb.push(range.column.toString(10));\n sb.push(\")\");\n\n let relatedRange = message.relatedRange;\n if (relatedRange) {\n if (showContext) {\n sb.push(\"\\n\");\n sb.push(formatDiagnosticContext(relatedRange, useColors));\n }\n sb.push(\"\\n\");\n sb.push(\" in \");\n sb.push(range.source.normalizedPath);\n sb.push(\"(\");\n sb.push(range.line.toString(10));\n sb.push(\",\");\n sb.push(range.column.toString(10));\n sb.push(\")\");\n }\n }\n return sb.join(\"\");\n}\n\n/** Formats the diagnostic context for the specified range, optionally with terminal colors. */\nexport function formatDiagnosticContext(range: Range, useColors: bool = false): string {\n var text = range.source.text;\n var len = text.length;\n var start = range.start;\n var end = range.end;\n while (start > 0 && !isLineBreak(text.charCodeAt(start - 1))) start--;\n while (end < len && !isLineBreak(text.charCodeAt(end))) end++;\n var sb: string[] = [\n \"\\n \",\n text.substring(start, end),\n \"\\n \"\n ];\n while (start < range.start) {\n sb.push(\" \");\n start++;\n }\n if (useColors) sb.push(COLOR_RED);\n if (range.start == range.end) {\n sb.push(\"^\");\n } else {\n while (start++ < range.end) {\n if (isLineBreak(text.charCodeAt(start))) {\n sb.push(start == range.start + 1 ? \"^\" : \"~\");\n break;\n }\n sb.push(\"~\");\n }\n }\n if (useColors) sb.push(COLOR_RESET);\n return sb.join(\"\");\n}\n\n/** Base class of all diagnostic emitters. */\nexport abstract class DiagnosticEmitter {\n\n /** Diagnostic messages emitted so far. */\n diagnostics: DiagnosticMessage[];\n\n /** Initializes this diagnostic emitter. */\n protected constructor(diagnostics: DiagnosticMessage[] | null = null) {\n this.diagnostics = diagnostics ? diagnostics : new Array();\n }\n\n /** Emits a diagnostic message of the specified category. */\n emitDiagnostic(\n code: DiagnosticCode,\n category: DiagnosticCategory,\n range: Range,\n relatedRange: Range | null,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n var message = DiagnosticMessage.create(code, category, arg0, arg1, arg2).withRange(range);\n if (relatedRange) message.relatedRange = relatedRange;\n this.diagnostics.push(message);\n // console.log(formatDiagnosticMessage(message, true, true) + \"\\n\"); // temporary\n // console.log(new Error(\"stack\").stack);\n }\n\n /** Emits an informatory diagnostic message. */\n info(\n code: DiagnosticCode,\n range: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.INFO, range, null, arg0, arg1, arg2);\n }\n\n /** Emits an informatory diagnostic message with a related range. */\n infoRelated(\n code: DiagnosticCode,\n range: Range,\n relatedRange: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.INFO, range, relatedRange, arg0, arg1, arg2);\n }\n\n /** Emits a warning diagnostic message. */\n warning(\n code: DiagnosticCode,\n range: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, null, arg0, arg1, arg2);\n }\n\n /** Emits a warning diagnostic message with a related range. */\n warningRelated(\n code: DiagnosticCode,\n range: Range,\n relatedRange: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, relatedRange, arg0, arg1, arg2);\n }\n\n /** Emits an error diagnostic message. */\n error(\n code: DiagnosticCode,\n range: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, null, arg0, arg1, arg2);\n }\n\n /** Emits an error diagnostic message with a related range. */\n errorRelated(\n code: DiagnosticCode,\n range: Range,\n relatedRange: Range,\n arg0: string | null = null,\n arg1: string | null = null,\n arg2: string | null = null\n ): void {\n this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, relatedRange, arg0, arg1, arg2);\n }\n}\n","/**\n * Abstract syntax tree representing a source file once parsed.\n * @module ast\n *//***/\n\nimport {\n CommonFlags,\n CommonSymbols,\n PATH_DELIMITER,\n LIBRARY_PREFIX\n} from \"./common\";\n\nimport {\n Token,\n Tokenizer,\n Range\n} from \"./tokenizer\";\n\nimport {\n normalizePath,\n resolvePath,\n CharCode\n} from \"./util\";\n\nexport { Token, Range };\n\n/** Indicates the kind of a node. */\nexport enum NodeKind {\n\n SOURCE,\n\n // types\n NAMEDTYPE,\n FUNCTIONTYPE,\n TYPENAME,\n TYPEPARAMETER,\n PARAMETER,\n\n // expressions\n IDENTIFIER,\n ASSERTION,\n BINARY,\n CALL,\n CLASS,\n COMMA,\n ELEMENTACCESS,\n FALSE,\n FUNCTION,\n INSTANCEOF,\n LITERAL,\n NEW,\n NULL,\n PARENTHESIZED,\n PROPERTYACCESS,\n TERNARY,\n SUPER,\n THIS,\n TRUE,\n CONSTRUCTOR,\n UNARYPOSTFIX,\n UNARYPREFIX,\n\n // statements\n BLOCK,\n BREAK,\n CONTINUE,\n DO,\n EMPTY,\n EXPORT,\n EXPORTDEFAULT,\n EXPORTIMPORT,\n EXPRESSION,\n FOR,\n IF,\n IMPORT,\n RETURN,\n SWITCH,\n THROW,\n TRY,\n VARIABLE,\n VOID,\n WHILE,\n\n // declaration statements\n CLASSDECLARATION,\n ENUMDECLARATION,\n ENUMVALUEDECLARATION,\n FIELDDECLARATION,\n FUNCTIONDECLARATION,\n IMPORTDECLARATION,\n INDEXSIGNATUREDECLARATION,\n INTERFACEDECLARATION,\n METHODDECLARATION,\n NAMESPACEDECLARATION,\n TYPEDECLARATION,\n VARIABLEDECLARATION,\n\n // special\n DECORATOR,\n EXPORTMEMBER,\n SWITCHCASE,\n COMMENT\n}\n\n/** Checks if a node represents a constant value. */\nexport function nodeIsConstantValue(kind: NodeKind): bool {\n switch (kind) {\n case NodeKind.LITERAL:\n case NodeKind.NULL:\n case NodeKind.TRUE:\n case NodeKind.FALSE: return true;\n }\n return false;\n}\n\n/** Checks if a node might be callable. */\nexport function nodeIsCallable(kind: NodeKind): bool {\n switch (kind) {\n case NodeKind.IDENTIFIER:\n case NodeKind.ASSERTION: // if kind=NONNULL\n case NodeKind.CALL:\n case NodeKind.ELEMENTACCESS:\n case NodeKind.PARENTHESIZED:\n case NodeKind.PROPERTYACCESS:\n case NodeKind.SUPER: return true;\n }\n return false;\n}\n\n/** Checks if a node might be callable with generic arguments. */\nexport function nodeIsGenericCallable(kind: NodeKind): bool {\n switch (kind) {\n case NodeKind.IDENTIFIER:\n case NodeKind.PROPERTYACCESS: return true;\n }\n return false;\n}\n\n/** Base class of all nodes. */\nexport abstract class Node {\n\n /** Node kind indicator. */\n kind: NodeKind;\n /** Source range. */\n range: Range;\n\n // types\n\n static createTypeName(\n name: IdentifierExpression,\n range: Range\n ): TypeName {\n var typeName = new TypeName();\n typeName.range = range;\n typeName.identifier = name;\n typeName.next = null;\n return typeName;\n }\n\n static createSimpleTypeName(\n name: string,\n range: Range\n ): TypeName {\n return Node.createTypeName(Node.createIdentifierExpression(name, range), range);\n }\n\n static createNamedType(\n name: TypeName,\n typeArguments: TypeNode[] | null,\n isNullable: bool,\n range: Range\n ): NamedTypeNode {\n var type = new NamedTypeNode();\n type.range = range;\n type.name = name;\n type.typeArguments = typeArguments;\n type.isNullable = isNullable;\n return type;\n }\n\n static createFunctionType(\n parameters: ParameterNode[],\n returnType: TypeNode,\n explicitThisType: NamedTypeNode | null,\n isNullable: bool,\n range: Range\n ): FunctionTypeNode {\n var type = new FunctionTypeNode();\n type.range = range;\n type.parameters = parameters;\n type.returnType = returnType;\n type.explicitThisType = explicitThisType;\n type.isNullable = isNullable;\n return type;\n }\n\n static createOmittedType(\n range: Range\n ): NamedTypeNode {\n return Node.createNamedType(\n Node.createSimpleTypeName(\"\", range),\n null,\n false,\n range\n );\n }\n\n static createTypeParameter(\n name: IdentifierExpression,\n extendsType: NamedTypeNode | null,\n defaultType: NamedTypeNode | null,\n range: Range\n ): TypeParameterNode {\n var elem = new TypeParameterNode();\n elem.range = range;\n elem.name = name;\n elem.extendsType = extendsType;\n elem.defaultType = defaultType;\n return elem;\n }\n\n static createParameter(\n name: IdentifierExpression,\n type: TypeNode,\n initializer: Expression | null,\n kind: ParameterKind,\n range: Range\n ): ParameterNode {\n var elem = new ParameterNode();\n elem.range = range;\n elem.name = name;\n elem.type = type;\n elem.initializer = initializer;\n elem.parameterKind = kind;\n return elem;\n }\n\n // special\n\n static createDecorator(\n name: Expression,\n args: Expression[] | null,\n range: Range\n ): DecoratorNode {\n var stmt = new DecoratorNode();\n stmt.range = range;\n stmt.name = name;\n stmt.arguments = args;\n stmt.decoratorKind = decoratorNameToKind(name);\n return stmt;\n }\n\n static createComment(\n text: string,\n kind: CommentKind,\n range: Range\n ): CommentNode {\n var node = new CommentNode();\n node.range = range;\n node.commentKind = kind;\n node.text = text;\n return node;\n }\n\n // expressions\n\n static createIdentifierExpression(\n name: string,\n range: Range,\n isQuoted: bool = false\n ): IdentifierExpression {\n var expr = new IdentifierExpression();\n expr.range = range;\n expr.text = name; // TODO: extract from range\n expr.symbol = name; // TODO: Symbol.for(name)\n expr.isQuoted = isQuoted;\n return expr;\n }\n\n static createEmptyIdentifierExpression(\n range: Range\n ): IdentifierExpression {\n var expr = new IdentifierExpression();\n expr.range = range;\n expr.text = \"\";\n return expr;\n }\n\n static createArrayLiteralExpression(\n elements: (Expression | null)[],\n range: Range\n ): ArrayLiteralExpression {\n var expr = new ArrayLiteralExpression();\n expr.range = range;\n expr.elementExpressions = elements;\n return expr;\n }\n\n static createAssertionExpression(\n assertionKind: AssertionKind,\n expression: Expression,\n toType: TypeNode | null,\n range: Range\n ): AssertionExpression {\n var expr = new AssertionExpression();\n expr.range = range;\n expr.assertionKind = assertionKind;\n expr.expression = expression;\n expr.toType = toType;\n return expr;\n }\n\n static createBinaryExpression(\n operator: Token,\n left: Expression,\n right: Expression,\n range: Range\n ): BinaryExpression {\n var expr = new BinaryExpression();\n expr.range = range;\n expr.operator = operator;\n expr.left = left;\n expr.right = right;\n return expr;\n }\n\n static createCallExpression(\n expression: Expression,\n typeArgs: TypeNode[] | null,\n args: Expression[],\n range: Range\n ): CallExpression {\n var expr = new CallExpression();\n expr.range = range;\n expr.expression = expression;\n expr.typeArguments = typeArgs;\n expr.arguments = args;\n return expr;\n }\n\n static createClassExpression(\n declaration: ClassDeclaration\n ): ClassExpression {\n var expr = new ClassExpression();\n expr.range = declaration.range;\n expr.declaration = declaration;\n return expr;\n }\n\n static createCommaExpression(\n expressions: Expression[],\n range: Range\n ): CommaExpression {\n var expr = new CommaExpression();\n expr.range = range;\n expr.expressions = expressions;\n return expr;\n }\n\n static createConstructorExpression(\n range: Range\n ): ConstructorExpression {\n var expr = new ConstructorExpression();\n expr.range = range;\n return expr;\n }\n\n static createElementAccessExpression(\n expression: Expression,\n element: Expression,\n range: Range\n ): ElementAccessExpression {\n var expr = new ElementAccessExpression();\n expr.range = range;\n expr.expression = expression;\n expr.elementExpression = element;\n return expr;\n }\n\n static createFalseExpression(\n range: Range\n ): FalseExpression {\n var expr = new FalseExpression();\n expr.range = range;\n return expr;\n }\n\n static createFloatLiteralExpression(\n value: f64,\n range: Range\n ): FloatLiteralExpression {\n var expr = new FloatLiteralExpression();\n expr.range = range;\n expr.value = value;\n return expr;\n }\n\n static createFunctionExpression(\n declaration: FunctionDeclaration\n ): FunctionExpression {\n var expr = new FunctionExpression();\n expr.range = declaration.range;\n expr.declaration = declaration;\n return expr;\n }\n\n static createInstanceOfExpression(\n expression: Expression,\n isType: TypeNode,\n range: Range\n ): InstanceOfExpression {\n var expr = new InstanceOfExpression();\n expr.range = range;\n expr.expression = expression;\n expr.isType = isType;\n return expr;\n }\n\n static createIntegerLiteralExpression(\n value: I64,\n range: Range\n ): IntegerLiteralExpression {\n var expr = new IntegerLiteralExpression();\n expr.range = range;\n expr.value = value;\n return expr;\n }\n\n static createNewExpression(\n expression: Expression,\n typeArgs: TypeNode[] | null,\n args: Expression[],\n range: Range\n ): NewExpression {\n var expr = new NewExpression();\n expr.range = range;\n expr.expression = expression;\n expr.typeArguments = typeArgs;\n expr.arguments = args;\n return expr;\n }\n\n static createNullExpression(\n range: Range\n ): NullExpression {\n var expr = new NullExpression();\n expr.range = range;\n return expr;\n }\n\n static createObjectLiteralExpression(\n names: IdentifierExpression[],\n values: Expression[],\n range: Range\n ): ObjectLiteralExpression {\n var expr = new ObjectLiteralExpression();\n expr.range = range;\n expr.names = names;\n expr.values = values;\n return expr;\n }\n\n static createParenthesizedExpression(\n expression: Expression,\n range: Range\n ): ParenthesizedExpression {\n var expr = new ParenthesizedExpression();\n expr.range = range;\n expr.expression = expression;\n return expr;\n }\n\n static createPropertyAccessExpression(\n expression: Expression,\n property: IdentifierExpression,\n range: Range\n ): PropertyAccessExpression {\n var expr = new PropertyAccessExpression();\n expr.range = range;\n expr.expression = expression;\n expr.property = property;\n return expr;\n }\n\n static createRegexpLiteralExpression(\n pattern: string,\n flags: string,\n range: Range\n ): RegexpLiteralExpression {\n var expr = new RegexpLiteralExpression();\n expr.range = range;\n expr.pattern = pattern;\n expr.patternFlags = flags;\n return expr;\n }\n\n static createTernaryExpression(\n condition: Expression,\n ifThen: Expression,\n ifElse: Expression,\n range: Range\n ): TernaryExpression {\n var expr = new TernaryExpression();\n expr.range = range;\n expr.condition = condition;\n expr.ifThen = ifThen;\n expr.ifElse = ifElse;\n return expr;\n }\n\n static createStringLiteralExpression(\n value: string,\n range: Range\n ): StringLiteralExpression {\n var expr = new StringLiteralExpression();\n expr.range = range;\n expr.value = value;\n return expr;\n }\n\n static createSuperExpression(\n range: Range\n ): SuperExpression {\n var expr = new SuperExpression();\n expr.range = range;\n return expr;\n }\n\n static createThisExpression(\n range: Range\n ): ThisExpression {\n var expr = new ThisExpression();\n expr.range = range;\n return expr;\n }\n\n static createTrueExpression(\n range: Range\n ): TrueExpression {\n var expr = new TrueExpression();\n expr.range = range;\n return expr;\n }\n\n static createUnaryPostfixExpression(\n operator: Token,\n operand: Expression,\n range: Range\n ): UnaryPostfixExpression {\n var expr = new UnaryPostfixExpression();\n expr.range = range;\n expr.operator = operator;\n expr.operand = operand;\n return expr;\n }\n\n static createUnaryPrefixExpression(\n operator: Token,\n operand: Expression,\n range: Range\n ): UnaryPrefixExpression {\n var expr = new UnaryPrefixExpression();\n expr.range = range;\n expr.operator = operator;\n expr.operand = operand;\n return expr;\n }\n\n // statements\n\n static createBlockStatement(\n statements: Statement[],\n range: Range\n ): BlockStatement {\n var stmt = new BlockStatement();\n stmt.range = range;\n stmt.statements = statements;\n return stmt;\n }\n\n static createBreakStatement(\n label: IdentifierExpression | null,\n range: Range\n ): BreakStatement {\n var stmt = new BreakStatement();\n stmt.range = range;\n stmt.label = label;\n return stmt;\n }\n\n static createClassDeclaration(\n identifier: IdentifierExpression,\n typeParameters: TypeParameterNode[] | null,\n extendsType: NamedTypeNode | null, // can't be a function\n implementsTypes: NamedTypeNode[] | null, // can't be functions\n members: DeclarationStatement[],\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): ClassDeclaration {\n var stmt = new ClassDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = identifier;\n stmt.typeParameters = typeParameters;\n stmt.extendsType = extendsType;\n stmt.implementsTypes = implementsTypes;\n stmt.members = members;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createContinueStatement(\n label: IdentifierExpression | null,\n range: Range\n ): ContinueStatement {\n var stmt = new ContinueStatement();\n stmt.range = range;\n stmt.label = label;\n return stmt;\n }\n\n static createDoStatement(\n statement: Statement,\n condition: Expression,\n range: Range\n ): DoStatement {\n var stmt = new DoStatement();\n stmt.range = range;\n stmt.statement = statement;\n stmt.condition = condition;\n return stmt;\n }\n\n static createEmptyStatement(\n range: Range\n ): EmptyStatement {\n var stmt = new EmptyStatement();\n stmt.range = range;\n return stmt;\n }\n\n static createEnumDeclaration(\n name: IdentifierExpression,\n members: EnumValueDeclaration[],\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): EnumDeclaration {\n var stmt = new EnumDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.values = members;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createEnumValueDeclaration(\n name: IdentifierExpression,\n value: Expression | null,\n flags: CommonFlags,\n range: Range\n ): EnumValueDeclaration {\n var stmt = new EnumValueDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.value = value;\n return stmt;\n }\n\n static createExportStatement(\n members: ExportMember[] | null,\n path: StringLiteralExpression | null,\n isDeclare: bool,\n range: Range\n ): ExportStatement {\n var stmt = new ExportStatement();\n stmt.range = range;\n stmt.members = members;\n stmt.path = path;\n if (path) {\n let normalizedPath = normalizePath(path.value);\n if (path.value.startsWith(\".\")) { // relative\n stmt.normalizedPath = resolvePath(\n normalizedPath,\n range.source.normalizedPath\n );\n } else { // absolute\n if (!normalizedPath.startsWith(LIBRARY_PREFIX)) {\n normalizedPath = LIBRARY_PREFIX + normalizedPath;\n }\n stmt.normalizedPath = normalizedPath;\n }\n stmt.internalPath = mangleInternalPath(stmt.normalizedPath);\n } else {\n stmt.normalizedPath = null;\n stmt.internalPath = null;\n }\n stmt.isDeclare = isDeclare;\n return stmt;\n }\n\n static createExportDefaultStatement(\n declaration: DeclarationStatement,\n range: Range\n ): ExportDefaultStatement {\n var stmt = new ExportDefaultStatement();\n stmt.declaration = declaration;\n stmt.range = range;\n return stmt;\n }\n\n static createExportImportStatement(\n name: IdentifierExpression,\n externalName: IdentifierExpression,\n range: Range\n ): ExportImportStatement {\n var stmt = new ExportImportStatement();\n stmt.range = range;\n stmt.name = name;\n stmt.externalName = externalName;\n return stmt;\n }\n\n static createExportMember(\n name: IdentifierExpression,\n externalName: IdentifierExpression | null,\n range: Range\n ): ExportMember {\n var elem = new ExportMember();\n elem.range = range;\n elem.localName = name;\n if (!externalName) externalName = name;\n elem.exportedName = externalName;\n return elem;\n }\n\n static createExpressionStatement(\n expression: Expression\n ): ExpressionStatement {\n var stmt = new ExpressionStatement();\n stmt.range = expression.range;\n stmt.expression = expression;\n return stmt;\n }\n\n static createIfStatement(\n condition: Expression,\n ifTrue: Statement,\n ifFalse: Statement | null,\n range: Range\n ): IfStatement {\n var stmt = new IfStatement();\n stmt.range = range;\n stmt.condition = condition;\n stmt.ifTrue = ifTrue;\n stmt.ifFalse = ifFalse;\n return stmt;\n }\n\n static createImportStatement(\n decls: ImportDeclaration[] | null,\n path: StringLiteralExpression,\n range: Range\n ): ImportStatement {\n var stmt = new ImportStatement();\n stmt.range = range;\n stmt.declarations = decls;\n stmt.namespaceName = null;\n stmt.path = path;\n var normalizedPath = normalizePath(path.value);\n if (path.value.startsWith(\".\")) { // relative in project\n stmt.normalizedPath = resolvePath(\n normalizedPath,\n range.source.normalizedPath\n );\n } else { // absolute in library\n if (!normalizedPath.startsWith(LIBRARY_PREFIX)) {\n normalizedPath = LIBRARY_PREFIX + normalizedPath;\n }\n stmt.normalizedPath = normalizedPath;\n }\n stmt.internalPath = mangleInternalPath(stmt.normalizedPath);\n return stmt;\n }\n\n static createImportStatementWithWildcard(\n identifier: IdentifierExpression,\n path: StringLiteralExpression,\n range: Range\n ): ImportStatement {\n var stmt = new ImportStatement();\n stmt.range = range;\n stmt.declarations = null;\n stmt.namespaceName = identifier;\n stmt.path = path;\n var normalizedPath = normalizePath(path.value);\n if (path.value.startsWith(\".\")) {\n stmt.normalizedPath = resolvePath(\n normalizedPath,\n range.source.normalizedPath\n );\n } else {\n if (!normalizedPath.startsWith(LIBRARY_PREFIX)) {\n normalizedPath = LIBRARY_PREFIX + normalizedPath;\n }\n stmt.normalizedPath = normalizedPath;\n }\n stmt.internalPath = mangleInternalPath(stmt.normalizedPath);\n return stmt;\n }\n\n static createImportDeclaration(\n foreignName: IdentifierExpression,\n name: IdentifierExpression | null,\n range: Range\n ): ImportDeclaration {\n var elem = new ImportDeclaration();\n elem.range = range;\n elem.foreignName = foreignName;\n if (!name) name = foreignName;\n elem.name = name;\n return elem;\n }\n\n static createInterfaceDeclaration(\n name: IdentifierExpression,\n typeParameters: TypeParameterNode[] | null,\n extendsType: NamedTypeNode | null, // can't be a function\n members: DeclarationStatement[],\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): InterfaceDeclaration {\n var stmt = new InterfaceDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.typeParameters = typeParameters;\n stmt.extendsType = extendsType;\n stmt.members = members;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createFieldDeclaration(\n name: IdentifierExpression,\n type: TypeNode | null,\n initializer: Expression | null,\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): FieldDeclaration {\n var stmt = new FieldDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.type = type;\n stmt.initializer = initializer;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createForStatement(\n initializer: Statement | null,\n condition: Expression | null,\n incrementor: Expression | null,\n statement: Statement,\n range: Range\n ): ForStatement {\n var stmt = new ForStatement();\n stmt.range = range;\n stmt.initializer = initializer;\n stmt.condition = condition;\n stmt.incrementor = incrementor;\n stmt.statement = statement;\n return stmt;\n }\n\n static createFunctionDeclaration(\n name: IdentifierExpression,\n typeParameters: TypeParameterNode[] | null,\n signature: FunctionTypeNode,\n body: Statement | null,\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n arrowKind: ArrowKind,\n range: Range\n ): FunctionDeclaration {\n var stmt = new FunctionDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.typeParameters = typeParameters;\n stmt.signature = signature;\n stmt.body = body;\n stmt.decorators = decorators;\n stmt.arrowKind = arrowKind;\n return stmt;\n }\n\n static createIndexSignatureDeclaration(\n keyType: NamedTypeNode,\n valueType: TypeNode,\n range: Range\n ): IndexSignatureDeclaration {\n var elem = new IndexSignatureDeclaration();\n elem.range = range;\n elem.keyType = keyType;\n elem.valueType = valueType;\n return elem;\n }\n\n static createMethodDeclaration(\n name: IdentifierExpression,\n typeParameters: TypeParameterNode[] | null,\n signature: FunctionTypeNode,\n body: Statement | null,\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): MethodDeclaration {\n var stmt = new MethodDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.typeParameters = typeParameters;\n stmt.signature = signature;\n stmt.body = body;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createNamespaceDeclaration(\n name: IdentifierExpression,\n members: Statement[],\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): NamespaceDeclaration {\n var stmt = new NamespaceDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.members = members;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createReturnStatement(\n value: Expression | null,\n range: Range\n ): ReturnStatement {\n var stmt = new ReturnStatement();\n stmt.range = range;\n stmt.value = value;\n return stmt;\n }\n\n static createSwitchStatement(\n condition: Expression,\n cases: SwitchCase[],\n range: Range\n ): SwitchStatement {\n var stmt = new SwitchStatement();\n stmt.range = range;\n stmt.condition = condition;\n stmt.cases = cases;\n return stmt;\n }\n\n static createSwitchCase(\n label: Expression | null,\n statements: Statement[],\n range: Range\n ): SwitchCase {\n var elem = new SwitchCase();\n elem.range = range;\n elem.label = label;\n elem.statements = statements;\n return elem;\n }\n\n static createThrowStatement(\n value: Expression,\n range: Range\n ): ThrowStatement {\n var stmt = new ThrowStatement();\n stmt.range = range;\n stmt.value = value;\n return stmt;\n }\n\n static createTryStatement(\n statements: Statement[],\n catchVariable: IdentifierExpression | null,\n catchStatements: Statement[] | null,\n finallyStatements: Statement[] | null,\n range: Range\n ): TryStatement {\n var stmt = new TryStatement();\n stmt.range = range;\n stmt.statements = statements;\n stmt.catchVariable = catchVariable;\n stmt.catchStatements = catchStatements;\n stmt.finallyStatements = finallyStatements;\n return stmt;\n }\n\n static createTypeDeclaration(\n name: IdentifierExpression,\n typeParameters: TypeParameterNode[] | null,\n alias: TypeNode,\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): TypeDeclaration {\n var stmt = new TypeDeclaration();\n stmt.range = range;\n stmt.flags = flags;\n stmt.name = name;\n stmt.typeParameters = typeParameters;\n stmt.type = alias;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createVariableStatement(\n declarations: VariableDeclaration[],\n decorators: DecoratorNode[] | null,\n range: Range\n ): VariableStatement {\n var stmt = new VariableStatement();\n stmt.range = range;\n stmt.declarations = declarations;\n stmt.decorators = decorators;\n return stmt;\n }\n\n static createVariableDeclaration(\n name: IdentifierExpression,\n type: TypeNode | null,\n initializer: Expression | null,\n decorators: DecoratorNode[] | null,\n flags: CommonFlags,\n range: Range\n ): VariableDeclaration {\n var elem = new VariableDeclaration();\n elem.range = range;\n elem.flags = flags;\n elem.name = name;\n elem.type = type;\n elem.initializer = initializer;\n elem.decorators = decorators; // inherited\n return elem;\n }\n\n static createVoidStatement(\n expression: Expression,\n range: Range\n ): VoidStatement {\n var stmt = new VoidStatement();\n stmt.range = range;\n stmt.expression = expression;\n return stmt;\n }\n\n static createWhileStatement(\n condition: Expression,\n statement: Statement,\n range: Range\n ): WhileStatement {\n var stmt = new WhileStatement();\n stmt.range = range;\n stmt.condition = condition;\n stmt.statement = statement;\n return stmt;\n }\n}\n\n// types\n\nexport abstract class TypeNode extends Node {\n // kind varies\n\n /** Whether nullable or not. */\n isNullable: bool;\n}\n\n/** Represents a type name. */\nexport class TypeName extends Node {\n kind = NodeKind.TYPENAME;\n\n /** Identifier of this part. */\n identifier: IdentifierExpression;\n /** Next part of the type name or `null` if this is the last part. */\n next: TypeName | null;\n}\n\n/** Represents a named type. */\nexport class NamedTypeNode extends TypeNode {\n kind = NodeKind.NAMEDTYPE;\n\n /** Type name. */\n name: TypeName;\n /** Type argument references. */\n typeArguments: TypeNode[] | null;\n}\n\n/** Represents a function type. */\nexport class FunctionTypeNode extends TypeNode {\n kind = NodeKind.FUNCTIONTYPE;\n\n /** Accepted parameters. */\n parameters: ParameterNode[];\n /** Return type. */\n returnType: TypeNode;\n /** Explicitly provided this type, if any. */\n explicitThisType: NamedTypeNode | null; // can't be a function\n}\n\n/** Represents a type parameter. */\nexport class TypeParameterNode extends Node {\n kind = NodeKind.TYPEPARAMETER;\n\n /** Identifier reference. */\n name: IdentifierExpression;\n /** Extended type reference, if any. */\n extendsType: NamedTypeNode | null; // can't be a function\n /** Default type if omitted, if any. */\n defaultType: NamedTypeNode | null; // can't be a function\n}\n\n/** Represents the kind of a parameter. */\nexport enum ParameterKind {\n /** No specific flags. */\n DEFAULT,\n /** Is an optional parameter. */\n OPTIONAL,\n /** Is a rest parameter. */\n REST\n}\n\n/** Represents a function parameter. */\nexport class ParameterNode extends Node {\n kind = NodeKind.PARAMETER;\n\n /** Parameter kind. */\n parameterKind: ParameterKind;\n /** Parameter name. */\n name: IdentifierExpression;\n /** Parameter type. */\n type: TypeNode;\n /** Initializer expression, if present. */\n initializer: Expression | null;\n /** Implicit field declaration, if applicable. */\n implicitFieldDeclaration: FieldDeclaration | null = null;\n /** Common flags indicating specific traits. */\n flags: CommonFlags = CommonFlags.NONE;\n\n /** Tests if this node has the specified flag or flags. */\n is(flag: CommonFlags): bool { return (this.flags & flag) == flag; }\n /** Tests if this node has one of the specified flags. */\n isAny(flag: CommonFlags): bool { return (this.flags & flag) != 0; }\n /** Sets a specific flag or flags. */\n set(flag: CommonFlags): void { this.flags |= flag; }\n}\n\n// special\n\n/** Built-in decorator kinds. */\nexport enum DecoratorKind {\n CUSTOM,\n GLOBAL,\n OPERATOR,\n OPERATOR_BINARY,\n OPERATOR_PREFIX,\n OPERATOR_POSTFIX,\n UNMANAGED,\n SEALED,\n INLINE,\n EXTERNAL,\n BUILTIN,\n LAZY,\n UNSAFE\n}\n\n/** Returns the kind of the specified decorator. Defaults to {@link DecoratorKind.CUSTOM}. */\nexport function decoratorNameToKind(name: Expression): DecoratorKind {\n // @global, @inline, @operator, @sealed, @unmanaged\n if (name.kind == NodeKind.IDENTIFIER) {\n let nameStr = (name).text;\n assert(nameStr.length);\n switch (nameStr.charCodeAt(0)) {\n case CharCode.b: {\n if (nameStr == \"builtin\") return DecoratorKind.BUILTIN;\n break;\n }\n case CharCode.e: {\n if (nameStr == \"external\") return DecoratorKind.EXTERNAL;\n break;\n }\n case CharCode.g: {\n if (nameStr == \"global\") return DecoratorKind.GLOBAL;\n break;\n }\n case CharCode.i: {\n if (nameStr == \"inline\") return DecoratorKind.INLINE;\n break;\n }\n case CharCode.l: {\n if (nameStr == \"lazy\") return DecoratorKind.LAZY;\n break;\n }\n case CharCode.o: {\n if (nameStr == \"operator\") return DecoratorKind.OPERATOR;\n break;\n }\n case CharCode.s: {\n if (nameStr == \"sealed\") return DecoratorKind.SEALED;\n break;\n }\n case CharCode.u: {\n if (nameStr == \"unmanaged\") return DecoratorKind.UNMANAGED;\n if (nameStr == \"unsafe\") return DecoratorKind.UNSAFE;\n break;\n }\n }\n } else if (\n name.kind == NodeKind.PROPERTYACCESS &&\n (name).expression.kind == NodeKind.IDENTIFIER\n ) {\n let nameStr = ((name).expression).text;\n assert(nameStr.length);\n let propStr = (name).property.text;\n assert(propStr.length);\n // @operator.binary, @operator.prefix, @operator.postfix\n if (nameStr == \"operator\") {\n switch (propStr.charCodeAt(0)) {\n case CharCode.b: {\n if (propStr == \"binary\") return DecoratorKind.OPERATOR_BINARY;\n break;\n }\n case CharCode.p: {\n switch (propStr) {\n case \"prefix\": return DecoratorKind.OPERATOR_PREFIX;\n case \"postfix\": return DecoratorKind.OPERATOR_POSTFIX;\n }\n break;\n }\n }\n }\n }\n return DecoratorKind.CUSTOM;\n}\n\n/** Represents a decorator. */\nexport class DecoratorNode extends Node {\n kind = NodeKind.DECORATOR;\n\n /** Built-in kind, if applicable. */\n decoratorKind: DecoratorKind;\n /** Name expression. */\n name: Expression;\n /** Argument expressions. */\n arguments: Expression[] | null;\n}\n\n/** Comment kinds. */\nexport enum CommentKind {\n /** Line comment. */\n LINE,\n /** Triple-slash comment. */\n TRIPLE,\n /** Block comment. */\n BLOCK\n}\n\n/** Represents a comment. */\nexport class CommentNode extends Node {\n kind = NodeKind.COMMENT;\n\n /** Comment kind. */\n commentKind: CommentKind;\n /** Comment text. */\n text: string;\n}\n\n// expressions\n\n/** Base class of all expression nodes. */\nexport abstract class Expression extends Node { }\n\n/** Represents an identifier expression. */\nexport class IdentifierExpression extends Expression {\n kind = NodeKind.IDENTIFIER;\n\n /** Textual name. */\n text: string;\n /** Symbol. */\n symbol: string; // TODO: symbol\n /** Whether quoted or not. */\n isQuoted: bool;\n}\n\n/** Indicates the kind of a literal. */\nexport enum LiteralKind {\n FLOAT,\n INTEGER,\n STRING,\n REGEXP,\n ARRAY,\n OBJECT\n}\n\n/** Base class of all literal expressions. */\nexport abstract class LiteralExpression extends Expression {\n kind = NodeKind.LITERAL;\n\n /** Specific literal kind. */\n literalKind: LiteralKind;\n}\n\n/** Represents an `[]` literal expression. */\nexport class ArrayLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.ARRAY;\n\n /** Nested element expressions. */\n elementExpressions: (Expression | null)[];\n}\n\n/** Indicates the kind of an assertion. */\nexport enum AssertionKind {\n PREFIX,\n AS,\n NONNULL\n}\n\n/** Represents an assertion expression. */\nexport class AssertionExpression extends Expression {\n kind = NodeKind.ASSERTION;\n\n /** Specific kind of this assertion. */\n assertionKind: AssertionKind;\n /** Expression being asserted. */\n expression: Expression;\n /** Target type. */\n toType: TypeNode | null;\n}\n\n/** Represents a binary expression. */\nexport class BinaryExpression extends Expression {\n kind = NodeKind.BINARY;\n\n /** Operator token. */\n operator: Token;\n /** Left-hand side expression */\n left: Expression;\n /** Right-hand side expression. */\n right: Expression;\n}\n\n/** Represents a call expression. */\nexport class CallExpression extends Expression {\n kind = NodeKind.CALL;\n\n /** Called expression. Usually an identifier or property access expression. */\n expression: Expression;\n /** Provided type arguments. */\n typeArguments: TypeNode[] | null;\n /** Provided arguments. */\n arguments: Expression[];\n\n /** Gets the type arguments range for reporting. */\n get typeArgumentsRange(): Range {\n var typeArguments = this.typeArguments;\n var numTypeArguments: i32;\n if (typeArguments && (numTypeArguments = typeArguments.length)) {\n return Range.join(typeArguments[0].range, typeArguments[numTypeArguments - 1].range);\n }\n return this.expression.range;\n }\n\n /** Gets the arguments range for reporting. */\n get argumentsRange(): Range {\n var args = this.arguments;\n var numArguments = args.length;\n if (numArguments) {\n return Range.join(args[0].range, args[numArguments - 1].range);\n }\n return this.expression.range;\n }\n}\n\n/** Represents a class expression using the 'class' keyword. */\nexport class ClassExpression extends Expression {\n kind = NodeKind.CLASS;\n\n /** Inline class declaration. */\n declaration: ClassDeclaration;\n}\n\n/** Represents a comma expression composed of multiple expressions. */\nexport class CommaExpression extends Expression {\n kind = NodeKind.COMMA;\n\n /** Sequential expressions. */\n expressions: Expression[];\n}\n\n/** Represents a `constructor` expression. */\nexport class ConstructorExpression extends IdentifierExpression {\n kind = NodeKind.CONSTRUCTOR;\n text = \"constructor\";\n symbol = CommonSymbols.constructor;\n}\n\n/** Represents an element access expression, e.g., array access. */\nexport class ElementAccessExpression extends Expression {\n kind = NodeKind.ELEMENTACCESS;\n\n /** Expression being accessed. */\n expression: Expression;\n /** Element of the expression being accessed. */\n elementExpression: Expression;\n}\n\n/** Represents a float literal expression. */\nexport class FloatLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.FLOAT;\n\n /** Float value. */\n value: f64;\n}\n\n/** Represents a function expression using the 'function' keyword. */\nexport class FunctionExpression extends Expression {\n kind = NodeKind.FUNCTION;\n\n /** Inline function declaration. */\n declaration: FunctionDeclaration;\n}\n\n/** Represents an `instanceof` expression. */\nexport class InstanceOfExpression extends Expression {\n kind = NodeKind.INSTANCEOF;\n\n /** Expression being asserted. */\n expression: Expression;\n /** Type to test for. */\n isType: TypeNode;\n}\n\n/** Represents an integer literal expression. */\nexport class IntegerLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.INTEGER;\n\n /** Integer value. */\n value: I64;\n}\n\n/** Represents a `new` expression. Like a call but with its own kind. */\nexport class NewExpression extends CallExpression {\n kind = NodeKind.NEW;\n}\n\n/** Represents a `null` expression. */\nexport class NullExpression extends IdentifierExpression {\n kind = NodeKind.NULL;\n text = \"null\";\n symbol = CommonSymbols.null_;\n}\n\n/** Represents an object literal expression. */\nexport class ObjectLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.OBJECT;\n\n /** Field names. */\n names: IdentifierExpression[];\n /** Field values. */\n values: Expression[];\n}\n\n/** Represents a parenthesized expression. */\nexport class ParenthesizedExpression extends Expression {\n kind = NodeKind.PARENTHESIZED;\n\n /** Expression in parenthesis. */\n expression: Expression;\n}\n\n/** Represents a property access expression. */\nexport class PropertyAccessExpression extends Expression {\n kind = NodeKind.PROPERTYACCESS;\n\n /** Expression being accessed. */\n expression: Expression;\n /** Property of the expression being accessed. */\n property: IdentifierExpression;\n}\n\n/** Represents a regular expression literal expression. */\nexport class RegexpLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.REGEXP;\n\n /** Regular expression pattern. */\n pattern: string;\n /** Regular expression flags. */\n patternFlags: string;\n}\n\n/** Represents a ternary expression, i.e., short if notation. */\nexport class TernaryExpression extends Expression {\n kind = NodeKind.TERNARY;\n\n /** Condition expression. */\n condition: Expression;\n /** Expression executed when condition is `true`. */\n ifThen: Expression;\n /** Expression executed when condition is `false`. */\n ifElse: Expression;\n}\n\n/** Represents a string literal expression. */\nexport class StringLiteralExpression extends LiteralExpression {\n literalKind = LiteralKind.STRING;\n\n /** String value without quotes. */\n value: string;\n}\n\n/** Represents a `super` expression. */\nexport class SuperExpression extends IdentifierExpression {\n kind = NodeKind.SUPER;\n text = \"super\";\n symbol = CommonSymbols.super_;\n}\n\n/** Represents a `this` expression. */\nexport class ThisExpression extends IdentifierExpression {\n kind = NodeKind.THIS;\n text = \"this\";\n symbol = CommonSymbols.this_;\n}\n\n/** Represents a `true` expression. */\nexport class TrueExpression extends IdentifierExpression {\n kind = NodeKind.TRUE;\n text = \"true\";\n symbol = CommonSymbols.true_;\n}\n\n/** Represents a `false` expression. */\nexport class FalseExpression extends IdentifierExpression {\n kind = NodeKind.FALSE;\n text = \"false\";\n symbol = CommonSymbols.false_;\n}\n\n/** Base class of all unary expressions. */\nexport abstract class UnaryExpression extends Expression {\n\n /** Operator token. */\n operator: Token;\n /** Operand expression. */\n operand: Expression;\n}\n\n/** Represents a unary postfix expression, e.g. a postfix increment. */\nexport class UnaryPostfixExpression extends UnaryExpression {\n kind = NodeKind.UNARYPOSTFIX;\n}\n\n/** Represents a unary prefix expression, e.g. a negation. */\nexport class UnaryPrefixExpression extends UnaryExpression {\n kind = NodeKind.UNARYPREFIX;\n}\n\n// statements\n\n/** Base class of all statement nodes. */\nexport abstract class Statement extends Node { }\n\n/** Indicates the specific kind of a source. */\nexport enum SourceKind {\n /** User-provided file. */\n USER = 0,\n /** User-provided entry file. */\n USER_ENTRY = 1,\n /** Library-provided file. */\n LIBRARY = 2,\n /** Library-provided entry file. */\n LIBRARY_ENTRY = 3\n}\n\n/** A top-level source node. */\nexport class Source extends Node {\n kind = NodeKind.SOURCE;\n parent = null;\n\n /** Source kind. */\n sourceKind: SourceKind;\n /** Normalized path. */\n normalizedPath: string;\n /** Path used internally. */\n internalPath: string;\n /** Simple path (last part without extension). */\n simplePath: string;\n /** Contained statements. */\n statements: Statement[];\n /** Full source text. */\n text: string;\n /** Tokenizer reference. */\n tokenizer: Tokenizer | null = null;\n /** Source map index. */\n debugInfoIndex: i32 = -1;\n /** Re-exported sources. */\n exportPaths: Set | null = null;\n\n /** Constructs a new source node. */\n constructor(normalizedPath: string, text: string, kind: SourceKind) {\n super();\n this.sourceKind = kind;\n this.normalizedPath = normalizedPath;\n var internalPath = mangleInternalPath(this.normalizedPath);\n this.internalPath = internalPath;\n var pos = internalPath.lastIndexOf(PATH_DELIMITER);\n this.simplePath = pos >= 0 ? internalPath.substring(pos + 1) : internalPath;\n this.statements = new Array();\n this.range = new Range(this, 0, text.length);\n this.text = text;\n }\n\n get isLibrary(): bool {\n var kind = this.sourceKind;\n return kind == SourceKind.LIBRARY || kind == SourceKind.LIBRARY_ENTRY;\n }\n}\n\n/** Base class of all declaration statements. */\nexport abstract class DeclarationStatement extends Statement {\n /** Simple name being declared. */\n name: IdentifierExpression;\n /** Array of decorators. */\n decorators: DecoratorNode[] | null = null;\n /** Common flags indicating specific traits. */\n flags: CommonFlags = CommonFlags.NONE;\n\n /** Tests if this node has the specified flag or flags. */\n is(flag: CommonFlags): bool { return (this.flags & flag) == flag; }\n /** Tests if this node has one of the specified flags. */\n isAny(flag: CommonFlags): bool { return (this.flags & flag) != 0; }\n /** Sets a specific flag or flags. */\n set(flag: CommonFlags): void { this.flags |= flag; }\n}\n\n/** Represents an index signature declaration. */\nexport class IndexSignatureDeclaration extends DeclarationStatement {\n kind = NodeKind.INDEXSIGNATUREDECLARATION;\n\n /** Key type. */\n keyType: NamedTypeNode;\n /** Value type. */\n valueType: TypeNode;\n}\n\n/** Base class of all variable-like declaration statements. */\nexport abstract class VariableLikeDeclarationStatement extends DeclarationStatement {\n\n /** Variable type. */\n type: TypeNode | null;\n /** Variable initializer. */\n initializer: Expression | null;\n}\n\n/** Represents a block statement. */\nexport class BlockStatement extends Statement {\n kind = NodeKind.BLOCK;\n\n /** Contained statements. */\n statements: Statement[];\n}\n\n/** Represents a `break` statement. */\nexport class BreakStatement extends Statement {\n kind = NodeKind.BREAK;\n\n /** Target label, if applicable. */\n label: IdentifierExpression | null;\n}\n\n/** Represents a `class` declaration. */\nexport class ClassDeclaration extends DeclarationStatement {\n kind = NodeKind.CLASSDECLARATION;\n\n /** Accepted type parameters. */\n typeParameters: TypeParameterNode[] | null;\n /** Base class type being extended, if any. */\n extendsType: NamedTypeNode | null; // can't be a function\n /** Interface types being implemented, if any. */\n implementsTypes: NamedTypeNode[] | null; // can't be functions\n /** Class member declarations. */\n members: DeclarationStatement[];\n\n get isGeneric(): bool {\n var typeParameters = this.typeParameters;\n return typeParameters != null && typeParameters.length > 0;\n }\n}\n\n/** Represents a `continue` statement. */\nexport class ContinueStatement extends Statement {\n kind = NodeKind.CONTINUE;\n\n /** Target label, if applicable. */\n label: IdentifierExpression | null;\n}\n\n/** Represents a `do` statement. */\nexport class DoStatement extends Statement {\n kind = NodeKind.DO;\n\n /** Statement being looped over. */\n statement: Statement;\n /** Condition when to repeat. */\n condition: Expression;\n}\n\n/** Represents an empty statement, i.e., a semicolon terminating nothing. */\nexport class EmptyStatement extends Statement {\n kind = NodeKind.EMPTY;\n}\n\n/** Represents an `enum` declaration. */\nexport class EnumDeclaration extends DeclarationStatement {\n kind = NodeKind.ENUMDECLARATION;\n\n /** Enum value declarations. */\n values: EnumValueDeclaration[];\n}\n\n/** Represents a value of an `enum` declaration. */\nexport class EnumValueDeclaration extends VariableLikeDeclarationStatement {\n kind = NodeKind.ENUMVALUEDECLARATION;\n // name is inherited\n\n /** Value expression. */\n value: Expression | null;\n}\n\n/** Represents an `export import` statement of an interface. */\nexport class ExportImportStatement extends Node {\n kind = NodeKind.EXPORTIMPORT;\n\n /** Identifier being imported. */\n name: IdentifierExpression;\n /** Identifier being exported. */\n externalName: IdentifierExpression;\n}\n\n/** Represents a member of an `export` statement. */\nexport class ExportMember extends Node {\n kind = NodeKind.EXPORTMEMBER;\n\n /** Local identifier. */\n localName: IdentifierExpression;\n /** Exported identifier. */\n exportedName: IdentifierExpression;\n}\n\n/** Represents an `export` statement. */\nexport class ExportStatement extends Statement {\n kind = NodeKind.EXPORT;\n\n /** Array of members if a set of named exports, or `null` if a file export. */\n members: ExportMember[] | null;\n /** Path being exported from, if applicable. */\n path: StringLiteralExpression | null;\n /** Normalized path, if `path` is set. */\n normalizedPath: string | null;\n /** Mangled internal path being referenced, if `path` is set. */\n internalPath: string | null;\n /** Whether this is a declared export. */\n isDeclare: bool;\n}\n\n/** Represents an `export default` statement. */\nexport class ExportDefaultStatement extends Statement {\n kind = NodeKind.EXPORTDEFAULT;\n\n /** Declaration being exported as default. */\n declaration: DeclarationStatement;\n}\n\n/** Represents an expression that is used as a statement. */\nexport class ExpressionStatement extends Statement {\n kind = NodeKind.EXPRESSION;\n\n /** Expression being used as a statement.*/\n expression: Expression;\n}\n\n/** Represents a field declaration within a `class`. */\nexport class FieldDeclaration extends VariableLikeDeclarationStatement {\n kind = NodeKind.FIELDDECLARATION;\n\n /** Parameter index if declared as a constructor parameter, otherwise `-1`. */\n parameterIndex: i32 = -1;\n}\n\n/** Represents a `for` statement. */\nexport class ForStatement extends Statement {\n kind = NodeKind.FOR;\n\n /**\n * Initializer statement, if present.\n * Either a {@link VariableStatement} or {@link ExpressionStatement}.\n */\n initializer: Statement | null;\n /** Condition expression, if present. */\n condition: Expression | null;\n /** Incrementor expression, if present. */\n incrementor: Expression | null;\n /** Statement being looped over. */\n statement: Statement;\n}\n\n/** Indicates the kind of an array function. */\nexport const enum ArrowKind {\n /** Not an arrow function. */\n NONE,\n /** Parenthesized parameter list. */\n ARROW_PARENTHESIZED,\n /** Single parameter without parenthesis. */\n ARROW_SINGLE\n}\n\n/** Represents a `function` declaration. */\nexport class FunctionDeclaration extends DeclarationStatement {\n kind = NodeKind.FUNCTIONDECLARATION;\n\n /** Type parameters, if any. */\n typeParameters: TypeParameterNode[] | null;\n /** Function signature. */\n signature: FunctionTypeNode;\n /** Body statement. Usually a block. */\n body: Statement | null;\n /** Arrow function kind, if applicable. */\n arrowKind: ArrowKind;\n\n get isGeneric(): bool {\n var typeParameters = this.typeParameters;\n return typeParameters != null && typeParameters.length > 0;\n }\n\n /** Clones this function declaration. */\n clone(): FunctionDeclaration {\n return Node.createFunctionDeclaration(\n this.name,\n this.typeParameters,\n this.signature,\n this.body,\n this.decorators,\n this.flags,\n this.arrowKind,\n this.range\n );\n }\n}\n\n/** Represents an `if` statement. */\nexport class IfStatement extends Statement {\n kind = NodeKind.IF;\n\n /** Condition. */\n condition: Expression;\n /** Statement executed when condition is `true`. */\n ifTrue: Statement;\n /** Statement executed when condition is `false`. */\n ifFalse: Statement | null;\n}\n\n/** Represents an `import` declaration part of an {@link ImportStatement}. */\nexport class ImportDeclaration extends DeclarationStatement {\n kind = NodeKind.IMPORTDECLARATION;\n\n /** Identifier being imported. */\n foreignName: IdentifierExpression;\n}\n\n/** Represents an `import` statement. */\nexport class ImportStatement extends Statement {\n kind = NodeKind.IMPORT;\n\n /** Array of member declarations or `null` if an asterisk import. */\n declarations: ImportDeclaration[] | null;\n /** Name of the local namespace, if an asterisk import. */\n namespaceName: IdentifierExpression | null;\n /** Path being imported from. */\n path: StringLiteralExpression;\n /** Normalized path. */\n normalizedPath: string;\n /** Mangled internal path being referenced. */\n internalPath: string;\n}\n\n/** Represents an `interfarce` declaration. */\nexport class InterfaceDeclaration extends ClassDeclaration {\n kind = NodeKind.INTERFACEDECLARATION;\n}\n\n/** Represents a method declaration within a `class`. */\nexport class MethodDeclaration extends FunctionDeclaration {\n kind = NodeKind.METHODDECLARATION;\n}\n\n/** Represents a `namespace` declaration. */\nexport class NamespaceDeclaration extends DeclarationStatement {\n kind = NodeKind.NAMESPACEDECLARATION;\n\n /** Array of namespace members. */\n members: Statement[];\n}\n\n/** Represents a `return` statement. */\nexport class ReturnStatement extends Statement {\n kind = NodeKind.RETURN;\n\n /** Value expression being returned, if present. */\n value: Expression | null;\n}\n\n/** Represents a single `case` within a `switch` statement. */\nexport class SwitchCase extends Node {\n kind = NodeKind.SWITCHCASE;\n\n /** Label expression. `null` indicates the default case. */\n label: Expression | null;\n /** Contained statements. */\n statements: Statement[];\n}\n\n/** Represents a `switch` statement. */\nexport class SwitchStatement extends Statement {\n kind = NodeKind.SWITCH;\n\n /** Condition expression. */\n condition: Expression;\n /** Contained cases. */\n cases: SwitchCase[];\n}\n\n/** Represents a `throw` statement. */\nexport class ThrowStatement extends Statement {\n kind = NodeKind.THROW;\n\n /** Value expression being thrown. */\n value: Expression;\n}\n\n/** Represents a `try` statement. */\nexport class TryStatement extends Statement {\n kind = NodeKind.TRY;\n\n /** Contained statements. */\n statements: Statement[];\n /** Exception variable name, if a `catch` clause is present. */\n catchVariable: IdentifierExpression | null;\n /** Statements being executed on catch, if a `catch` clause is present. */\n catchStatements: Statement[] | null;\n /** Statements being executed afterwards, if a `finally` clause is present. */\n finallyStatements: Statement[] | null;\n}\n\n/** Represents a `type` declaration. */\nexport class TypeDeclaration extends DeclarationStatement {\n kind = NodeKind.TYPEDECLARATION;\n\n /** Type parameters, if any. */\n typeParameters: TypeParameterNode[] | null;\n /** Type being aliased. */\n type: TypeNode;\n}\n\n/** Represents a variable declaration part of a {@link VariableStatement}. */\nexport class VariableDeclaration extends VariableLikeDeclarationStatement {\n kind = NodeKind.VARIABLEDECLARATION;\n}\n\n/** Represents a variable statement wrapping {@link VariableDeclaration}s. */\nexport class VariableStatement extends Statement {\n kind = NodeKind.VARIABLE;\n\n /** Array of decorators. */\n decorators: DecoratorNode[] | null;\n /** Array of member declarations. */\n declarations: VariableDeclaration[];\n}\n\n/** Represents a void statement dropping an expression's value. */\nexport class VoidStatement extends Statement {\n kind = NodeKind.VOID;\n\n /** Expression being dropped. */\n expression: Expression;\n}\n\n/** Represents a `while` statement. */\nexport class WhileStatement extends Statement {\n kind = NodeKind.WHILE;\n\n /** Condition expression. */\n condition: Expression;\n /** Statement being looped over. */\n statement: Statement;\n}\n\n/** Finds the first decorator matching the specified kind. */\nexport function findDecorator(kind: DecoratorKind, decorators: DecoratorNode[] | null): DecoratorNode | null {\n if (decorators) {\n for (let i = 0, k = decorators.length; i < k; ++i) {\n let decorator = decorators[i];\n if (decorator.decoratorKind == kind) return decorator;\n }\n }\n return null;\n}\n\n/** Mangles an external to an internal path. */\nexport function mangleInternalPath(path: string): string {\n if (path.endsWith(\".ts\")) path = path.substring(0, path.length - 3);\n return path;\n}\n\n/** Tests if the specified type node represents an omitted type. */\nexport function isTypeOmitted(type: TypeNode): bool {\n if (type.kind == NodeKind.NAMEDTYPE) {\n let name = (type).name;\n return !(name.next || name.identifier.text.length);\n }\n return false;\n}\n","/**\n * AssemblyScript's intermediate representation describing a program's elements.\n * @module program\n *//***/\n\nimport {\n CommonFlags,\n PATH_DELIMITER,\n STATIC_DELIMITER,\n INSTANCE_DELIMITER,\n GETTER_PREFIX,\n SETTER_PREFIX,\n INNER_DELIMITER,\n LIBRARY_SUBST,\n INDEX_SUFFIX,\n CommonSymbols,\n Feature,\n Target\n} from \"./common\";\n\nimport {\n Options\n} from \"./compiler\";\n\nimport {\n DiagnosticCode,\n DiagnosticMessage,\n DiagnosticEmitter\n} from \"./diagnostics\";\n\nimport {\n Type,\n TypeKind,\n TypeFlags,\n Signature\n} from \"./types\";\n\nimport {\n Node,\n NodeKind,\n Source,\n SourceKind,\n Range,\n DecoratorNode,\n DecoratorKind,\n TypeParameterNode,\n TypeNode,\n NamedTypeNode,\n FunctionTypeNode,\n ArrowKind,\n\n Expression,\n IdentifierExpression,\n LiteralExpression,\n LiteralKind,\n StringLiteralExpression,\n\n Statement,\n ClassDeclaration,\n DeclarationStatement,\n EnumDeclaration,\n EnumValueDeclaration,\n ExportMember,\n ExportStatement,\n FieldDeclaration,\n FunctionDeclaration,\n ImportDeclaration,\n ImportStatement,\n InterfaceDeclaration,\n MethodDeclaration,\n NamespaceDeclaration,\n TypeDeclaration,\n VariableDeclaration,\n VariableLikeDeclarationStatement,\n VariableStatement,\n\n decoratorNameToKind,\n findDecorator,\n ExportDefaultStatement\n} from \"./ast\";\n\nimport {\n Module,\n FunctionRef\n} from \"./module\";\n\nimport {\n CharCode,\n writeI8,\n writeI16,\n writeI32,\n writeF32,\n writeF64\n} from \"./util\";\n\nimport {\n Resolver\n} from \"./resolver\";\n\nimport {\n Flow\n} from \"./flow\";\n\n/** Represents a yet unresolved `import`. */\nclass QueuedImport {\n constructor(\n /** File being imported into. */\n public localFile: File,\n /** Identifier within the local file. */\n public localIdentifier: IdentifierExpression,\n /** Identifier within the other file. Is an `import *` if not set. */\n public foreignIdentifier: IdentifierExpression | null,\n /** Path to the other file. */\n public foreignPath: string,\n /** Alternative path to the other file. */\n public foreignPathAlt: string\n ) {}\n}\n\n/** Represents a yet unresolved `export`. */\nclass QueuedExport {\n constructor(\n /** Identifier within the local file. */\n public localIdentifier: IdentifierExpression,\n /** Identifier within the other file. */\n public foreignIdentifier: IdentifierExpression,\n /** Path to the other file if a re-export. */\n public foreignPath: string | null,\n /** Alternative path to the other file if a re-export. */\n public foreignPathAlt: string | null\n ) {}\n}\n\n/** Represents a yet unresolved `export *`. */\nclass QueuedExportStar {\n // stored in a map with localFile as the key\n constructor(\n /** Path to the other file. */\n public foreignPath: string,\n /** Alternative path to the other file. */\n public foreignPathAlt: string,\n /** Reference to the path literal for reporting. */\n public pathLiteral: StringLiteralExpression\n ) {}\n}\n\n/** Represents the kind of an operator overload. */\nexport enum OperatorKind {\n INVALID,\n\n // indexed access\n INDEXED_GET, // a[]\n INDEXED_SET, // a[]=b\n UNCHECKED_INDEXED_GET, // unchecked(a[])\n UNCHECKED_INDEXED_SET, // unchecked(a[]=b)\n\n // binary\n ADD, // a + b\n SUB, // a - b\n MUL, // a * b\n DIV, // a / b\n REM, // a % b\n POW, // a ** b\n BITWISE_AND, // a & b\n BITWISE_OR, // a | b\n BITWISE_XOR, // a ^ b\n BITWISE_SHL, // a << b\n BITWISE_SHR, // a >> b\n BITWISE_SHR_U, // a >>> b\n EQ, // a == b\n NE, // a != b\n GT, // a > b\n GE, // a >= b\n LT, // a < b\n LE, // a <= b\n\n // unary prefix\n PLUS, // +a\n MINUS, // -a\n NOT, // !a\n BITWISE_NOT, // ~a\n PREFIX_INC, // ++a\n PREFIX_DEC, // --a\n\n // unary postfix\n POSTFIX_INC, // a++\n POSTFIX_DEC // a--\n\n // not overridable:\n // IDENTITY // a === b\n // LOGICAL_AND // a && b\n // LOGICAL_OR // a || b\n}\n\n/** Returns the operator kind represented by the specified decorator and string argument. */\nfunction operatorKindFromDecorator(decoratorKind: DecoratorKind, arg: string): OperatorKind {\n assert(arg.length);\n switch (decoratorKind) {\n case DecoratorKind.OPERATOR:\n case DecoratorKind.OPERATOR_BINARY: {\n switch (arg.charCodeAt(0)) {\n case CharCode.OPENBRACKET: {\n if (arg == \"[]\") return OperatorKind.INDEXED_GET;\n if (arg == \"[]=\") return OperatorKind.INDEXED_SET;\n break;\n }\n case CharCode.OPENBRACE: {\n if (arg == \"{}\") return OperatorKind.UNCHECKED_INDEXED_GET;\n if (arg == \"{}=\") return OperatorKind.UNCHECKED_INDEXED_SET;\n break;\n }\n case CharCode.PLUS: {\n if (arg == \"+\") return OperatorKind.ADD;\n break;\n }\n case CharCode.MINUS: {\n if (arg == \"-\") return OperatorKind.SUB;\n break;\n }\n case CharCode.ASTERISK: {\n if (arg == \"*\") return OperatorKind.MUL;\n if (arg == \"**\") return OperatorKind.POW;\n break;\n }\n case CharCode.SLASH: {\n if (arg == \"/\") return OperatorKind.DIV;\n break;\n }\n case CharCode.PERCENT: {\n if (arg == \"%\") return OperatorKind.REM;\n break;\n }\n case CharCode.AMPERSAND: {\n if (arg == \"&\") return OperatorKind.BITWISE_AND;\n break;\n }\n case CharCode.BAR: {\n if (arg == \"|\") return OperatorKind.BITWISE_OR;\n break;\n }\n case CharCode.CARET: {\n if (arg == \"^\") return OperatorKind.BITWISE_XOR;\n break;\n }\n case CharCode.EQUALS: {\n if (arg == \"==\") return OperatorKind.EQ;\n break;\n }\n case CharCode.EXCLAMATION: {\n if (arg == \"!=\") return OperatorKind.NE;\n break;\n }\n case CharCode.GREATERTHAN: {\n if (arg == \">\") return OperatorKind.GT;\n if (arg == \">=\") return OperatorKind.GE;\n if (arg == \">>\") return OperatorKind.BITWISE_SHR;\n if (arg == \">>>\") return OperatorKind.BITWISE_SHR_U;\n break;\n }\n case CharCode.LESSTHAN: {\n if (arg == \"<\") return OperatorKind.LT;\n if (arg == \"<=\") return OperatorKind.LE;\n if (arg == \"<<\") return OperatorKind.BITWISE_SHL;\n break;\n }\n }\n break;\n }\n case DecoratorKind.OPERATOR_PREFIX: {\n switch (arg.charCodeAt(0)) {\n case CharCode.PLUS: {\n if (arg == \"+\") return OperatorKind.PLUS;\n if (arg == \"++\") return OperatorKind.PREFIX_INC;\n break;\n }\n case CharCode.MINUS: {\n if (arg == \"-\") return OperatorKind.MINUS;\n if (arg == \"--\") return OperatorKind.PREFIX_DEC;\n break;\n }\n case CharCode.EXCLAMATION: {\n if (arg == \"!\") return OperatorKind.NOT;\n break;\n }\n case CharCode.TILDE: {\n if (arg == \"~\") return OperatorKind.BITWISE_NOT;\n break;\n }\n }\n break;\n }\n case DecoratorKind.OPERATOR_POSTFIX: {\n switch (arg.charCodeAt(0)) {\n case CharCode.PLUS: {\n if (arg == \"++\") return OperatorKind.POSTFIX_INC;\n break;\n }\n case CharCode.MINUS: {\n if (arg == \"--\") return OperatorKind.POSTFIX_DEC;\n break;\n }\n }\n break;\n }\n }\n return OperatorKind.INVALID;\n}\n\n/** Represents an AssemblyScript program. */\nexport class Program extends DiagnosticEmitter {\n\n /** Resolver instance. */\n resolver: Resolver;\n /** Array of sources. */\n sources: Source[] = [];\n /** Diagnostic offset used where successively obtaining the next diagnostic. */\n diagnosticsOffset: i32 = 0;\n /** Compiler options. */\n options: Options;\n /** Special native code source. */\n nativeSource: Source;\n /** Special native code file. */\n nativeFile: File;\n\n // lookup maps\n\n /** Files by unique internal name. */\n filesByName: Map = new Map();\n /** Elements by unique internal name in element space. */\n elementsByName: Map = new Map();\n /** Elements by declaration. */\n elementsByDeclaration: Map = new Map();\n /** Element instances by unique internal name. */\n instancesByName: Map = new Map();\n /** Classes backing basic types like `i32`. */\n typeClasses: Map = new Map();\n /** Managed classes contained in the program, by id. */\n managedClasses: Map = new Map();\n /** A set of unique function signatures contained in the program, by id. */\n uniqueSignatures: Signature[] = new Array(0);\n\n // standard references\n\n /** ArrayBufferView reference. */\n arrayBufferViewInstance: Class;\n /** ArrayBuffer instance reference. */\n arrayBufferInstance: Class;\n /** Array prototype reference. */\n arrayPrototype: ClassPrototype;\n /** Set prototype reference. */\n setPrototype: ClassPrototype;\n /** Map prototype reference. */\n mapPrototype: ClassPrototype;\n /** Fixed array prototype reference. */\n fixedArrayPrototype: ClassPrototype;\n /** Int8Array prototype. */\n i8ArrayPrototype: ClassPrototype;\n /** Int16Array prototype. */\n i16ArrayPrototype: ClassPrototype;\n /** Int32Array prototype. */\n i32ArrayPrototype: ClassPrototype;\n /** Int64Array prototype. */\n i64ArrayPrototype: ClassPrototype;\n /** Uint8Array prototype. */\n u8ArrayPrototype: ClassPrototype;\n /** Uint8ClampedArray prototype. */\n u8ClampedArrayPrototype: ClassPrototype;\n /** Uint16Array prototype. */\n u16ArrayPrototype: ClassPrototype;\n /** Uint32Array prototype. */\n u32ArrayPrototype: ClassPrototype;\n /** Uint64Array prototype. */\n u64ArrayPrototype: ClassPrototype;\n /** Float32Array prototype. */\n f32ArrayPrototype: ClassPrototype;\n /** Float64Array prototype. */\n f64ArrayPrototype: ClassPrototype;\n /** String instance reference. */\n stringInstance: Class;\n /** Abort function reference, if not explicitly disabled. */\n abortInstance: Function | null;\n\n // runtime references\n\n /** RT `__alloc(size: usize, id: u32): usize` */\n allocInstance: Function;\n /** RT `__realloc(ref: usize, newSize: usize): usize` */\n reallocInstance: Function;\n /** RT `__free(ref: usize): void` */\n freeInstance: Function;\n /** RT `__retain(ref: usize): usize` */\n retainInstance: Function;\n /** RT `__release(ref: usize): void` */\n releaseInstance: Function;\n /** RT `__collect(): void` */\n collectInstance: Function;\n /** RT `__visit(ref: usize, cookie: u32): void` */\n visitInstance: Function;\n /** RT `__typeinfo(id: u32): RTTIFlags` */\n typeinfoInstance: Function;\n /** RT `__instanceof(ref: usize, superId: u32): bool` */\n instanceofInstance: Function;\n /** RT `__allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize` */\n allocArrayInstance: Function;\n\n /** Next class id. */\n nextClassId: u32 = 0;\n /** Next signature id. */\n nextSignatureId: i32 = 0;\n /** Constructs a new program, optionally inheriting parser diagnostics. */\n constructor(\n /** Shared array of diagnostic messages (emitted so far). */\n diagnostics: DiagnosticMessage[] | null = null\n ) {\n super(diagnostics);\n var nativeSource = new Source(LIBRARY_SUBST, \"[native code]\", SourceKind.LIBRARY_ENTRY);\n this.nativeSource = nativeSource;\n var nativeFile = new File(this, nativeSource);\n this.nativeFile = nativeFile;\n this.filesByName.set(nativeFile.internalName, nativeFile);\n this.resolver = new Resolver(this);\n }\n\n /** Writes a common runtime header to the specified buffer. */\n writeRuntimeHeader(buffer: Uint8Array, offset: i32, classInstance: Class, payloadSize: u32): void {\n // BLOCK {\n // mmInfo: usize // WASM64 TODO\n // gcInfo: u32\n // rtId: u32\n // rtSize: u32\n // }\n assert(payloadSize < (1 << 28)); // 1 bit BUFFERED + 3 bits color\n writeI32(payloadSize, buffer, offset);\n writeI32(1, buffer, offset + 4); // RC=1\n writeI32(classInstance.id, buffer, offset + 8);\n writeI32(payloadSize, buffer, offset + 12);\n }\n\n /** Gets the size of a runtime header. */\n get runtimeHeaderSize(): i32 {\n return 16;\n }\n\n /** Creates a native variable declaration. */\n makeNativeVariableDeclaration(\n /** The simple name of the variable */\n name: string,\n /** Flags indicating specific traits, e.g. `CONST`. */\n flags: CommonFlags = CommonFlags.NONE\n ): VariableDeclaration {\n var range = this.nativeSource.range;\n return Node.createVariableDeclaration(\n Node.createIdentifierExpression(name, range),\n null, null, null, flags, range\n );\n }\n\n /** Creates a native type declaration. */\n makeNativeTypeDeclaration(\n /** The simple name of the type. */\n name: string,\n /** Flags indicating specific traits, e.g. `GENERIC`. */\n flags: CommonFlags = CommonFlags.NONE\n ): TypeDeclaration {\n var range = this.nativeSource.range;\n var identifier = Node.createIdentifierExpression(name, range);\n return Node.createTypeDeclaration(\n identifier,\n null,\n Node.createOmittedType(range),\n null, flags, range\n );\n }\n\n // a dummy signature for programmatically generated native functions\n private nativeDummySignature: FunctionTypeNode | null = null;\n\n /** Creates a native function declaration. */\n makeNativeFunctionDeclaration(\n /** The simple name of the function. */\n name: string,\n /** Flags indicating specific traits, e.g. `DECLARE`. */\n flags: CommonFlags = CommonFlags.NONE\n ): FunctionDeclaration {\n var range = this.nativeSource.range;\n return Node.createFunctionDeclaration(\n Node.createIdentifierExpression(name, range),\n null,\n this.nativeDummySignature || (this.nativeDummySignature = Node.createFunctionType([],\n Node.createNamedType( // ^ AST signature doesn't really matter, is overridden anyway\n Node.createSimpleTypeName(CommonSymbols.void_, range),\n null, false, range\n ),\n null, false, range)\n ),\n null, null, flags, ArrowKind.NONE, range\n );\n }\n\n /** Creates a native namespace declaration. */\n makeNativeNamespaceDeclaration(\n /** The simple name of the namespace. */\n name: string,\n /** Flags indicating specific traits, e.g. `EXPORT`. */\n flags: CommonFlags = CommonFlags.NONE\n ): NamespaceDeclaration {\n var range = this.nativeSource.range;\n return Node.createNamespaceDeclaration(\n Node.createIdentifierExpression(name, range),\n [], null, flags, range\n );\n }\n\n /** Creates a native function. */\n makeNativeFunction(\n /** The simple name of the function. */\n name: string,\n /** Concrete function signature. */\n signature: Signature,\n /** Parent element, usually a file, class or namespace. */\n parent: Element = this.nativeFile,\n /** Flags indicating specific traits, e.g. `GENERIC`. */\n flags: CommonFlags = CommonFlags.NONE,\n /** Decorator flags representing built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ): Function {\n return new Function(\n name,\n new FunctionPrototype(\n name,\n parent,\n this.makeNativeFunctionDeclaration(name, flags),\n decoratorFlags\n ),\n signature\n );\n }\n\n /** Gets the (possibly merged) program element linked to the specified declaration. */\n getElementByDeclaration(declaration: DeclarationStatement): DeclaredElement {\n var elementsByDeclaration = this.elementsByDeclaration;\n assert(elementsByDeclaration.has(declaration));\n return elementsByDeclaration.get(declaration)!;\n }\n\n /** Initializes the program and its elements prior to compilation. */\n initialize(options: Options): void {\n this.options = options;\n\n // register native types\n this.registerNativeType(CommonSymbols.i8, Type.i8);\n this.registerNativeType(CommonSymbols.i16, Type.i16);\n this.registerNativeType(CommonSymbols.i32, Type.i32);\n this.registerNativeType(CommonSymbols.i64, Type.i64);\n this.registerNativeType(CommonSymbols.isize, options.isizeType);\n this.registerNativeType(CommonSymbols.u8, Type.u8);\n this.registerNativeType(CommonSymbols.u16, Type.u16);\n this.registerNativeType(CommonSymbols.u32, Type.u32);\n this.registerNativeType(CommonSymbols.u64, Type.u64);\n this.registerNativeType(CommonSymbols.usize, options.usizeType);\n this.registerNativeType(CommonSymbols.bool, Type.bool);\n this.registerNativeType(CommonSymbols.f32, Type.f32);\n this.registerNativeType(CommonSymbols.f64, Type.f64);\n this.registerNativeType(CommonSymbols.void_, Type.void);\n this.registerNativeType(CommonSymbols.number, Type.f64); // alias\n this.registerNativeType(CommonSymbols.boolean, Type.bool); // alias\n this.nativeFile.add(CommonSymbols.native, new TypeDefinition(\n CommonSymbols.native,\n this.nativeFile,\n this.makeNativeTypeDeclaration(CommonSymbols.native, CommonFlags.EXPORT | CommonFlags.GENERIC),\n DecoratorFlags.BUILTIN\n ));\n this.nativeFile.add(CommonSymbols.indexof, new TypeDefinition(\n CommonSymbols.indexof,\n this.nativeFile,\n this.makeNativeTypeDeclaration(CommonSymbols.indexof, CommonFlags.EXPORT | CommonFlags.GENERIC),\n DecoratorFlags.BUILTIN\n ));\n this.nativeFile.add(CommonSymbols.valueof, new TypeDefinition(\n CommonSymbols.valueof,\n this.nativeFile,\n this.makeNativeTypeDeclaration(CommonSymbols.valueof, CommonFlags.EXPORT | CommonFlags.GENERIC),\n DecoratorFlags.BUILTIN\n ));\n this.nativeFile.add(CommonSymbols.returnof, new TypeDefinition(\n CommonSymbols.returnof,\n this.nativeFile,\n this.makeNativeTypeDeclaration(CommonSymbols.returnof, CommonFlags.EXPORT | CommonFlags.GENERIC),\n DecoratorFlags.BUILTIN\n ));\n if (options.hasFeature(Feature.SIMD)) this.registerNativeType(CommonSymbols.v128, Type.v128);\n\n // register compiler hints\n this.registerConstantInteger(CommonSymbols.ASC_TARGET, Type.i32,\n i64_new(options.isWasm64 ? Target.WASM64 : Target.WASM32));\n this.registerConstantInteger(CommonSymbols.ASC_NO_ASSERT, Type.bool,\n i64_new(options.noAssert ? 1 : 0, 0));\n this.registerConstantInteger(CommonSymbols.ASC_MEMORY_BASE, Type.i32,\n i64_new(options.memoryBase, 0));\n this.registerConstantInteger(CommonSymbols.ASC_OPTIMIZE_LEVEL, Type.i32,\n i64_new(options.optimizeLevelHint, 0));\n this.registerConstantInteger(CommonSymbols.ASC_SHRINK_LEVEL, Type.i32,\n i64_new(options.shrinkLevelHint, 0));\n this.registerConstantInteger(CommonSymbols.ASC_FEATURE_MUTABLE_GLOBAL, Type.bool,\n i64_new(options.hasFeature(Feature.MUTABLE_GLOBAL) ? 1 : 0, 0));\n this.registerConstantInteger(CommonSymbols.ASC_FEATURE_SIGN_EXTENSION, Type.bool,\n i64_new(options.hasFeature(Feature.SIGN_EXTENSION) ? 1 : 0, 0));\n this.registerConstantInteger(CommonSymbols.ASC_FEATURE_BULK_MEMORY, Type.bool,\n i64_new(options.hasFeature(Feature.BULK_MEMORY) ? 1 : 0, 0));\n this.registerConstantInteger(CommonSymbols.ASC_FEATURE_SIMD, Type.bool,\n i64_new(options.hasFeature(Feature.SIMD) ? 1 : 0, 0));\n this.registerConstantInteger(CommonSymbols.ASC_FEATURE_THREADS, Type.bool,\n i64_new(options.hasFeature(Feature.THREADS) ? 1 : 0, 0));\n\n // remember deferred elements\n var queuedImports = new Array();\n var queuedExports = new Map>();\n var queuedExportsStar = new Map();\n var queuedExtends = new Array();\n var queuedImplements = new Array();\n\n // initialize relevant declaration-like statements of the entire program\n for (let i = 0, k = this.sources.length; i < k; ++i) {\n let source = this.sources[i];\n let file = new File(this, source);\n this.filesByName.set(file.internalName, file);\n let statements = source.statements;\n for (let j = 0, l = statements.length; j < l; ++j) {\n let statement = statements[j];\n switch (statement.kind) {\n case NodeKind.EXPORT: {\n this.initializeExports(statement, file, queuedExports, queuedExportsStar);\n break;\n }\n case NodeKind.EXPORTDEFAULT: {\n this.initializeExportDefault(statement, file, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.IMPORT: {\n this.initializeImports(statement, file, queuedImports, queuedExports);\n break;\n }\n case NodeKind.VARIABLE: {\n this.initializeVariables(statement, file);\n break;\n }\n case NodeKind.CLASSDECLARATION: {\n this.initializeClass(statement, file, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.ENUMDECLARATION: {\n this.initializeEnum(statement, file);\n break;\n }\n case NodeKind.FUNCTIONDECLARATION: {\n this.initializeFunction(statement, file);\n break;\n }\n case NodeKind.INTERFACEDECLARATION: {\n this.initializeInterface(statement, file);\n break;\n }\n case NodeKind.NAMESPACEDECLARATION: {\n this.initializeNamespace(statement, file, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.TYPEDECLARATION: {\n this.initializeTypeDefinition(statement, file);\n break;\n }\n }\n }\n }\n\n // queued exports * should be linkable now that all files have been processed\n for (let [file, exportsStar] of queuedExportsStar) {\n for (let i = 0, k = exportsStar.length; i < k; ++i) {\n let exportStar = exportsStar[i];\n let foreignFile = this.lookupForeignFile(exportStar.foreignPath, exportStar.foreignPathAlt);\n if (!foreignFile) {\n this.error(\n DiagnosticCode.File_0_not_found,\n exportStar.pathLiteral.range, exportStar.pathLiteral.value\n );\n continue;\n }\n file.ensureExportStar(foreignFile);\n }\n }\n\n // queued imports should be resolvable now through traversing exports and queued exports\n for (let i = 0, k = queuedImports.length; i < k; ++i) {\n let queuedImport = queuedImports[i];\n let foreignIdentifier = queuedImport.foreignIdentifier;\n if (foreignIdentifier) { // i.e. import { foo [as bar] } from \"./baz\"\n let element = this.lookupForeign(\n foreignIdentifier.text,\n queuedImport.foreignPath,\n queuedImport.foreignPathAlt,\n queuedExports\n );\n if (element) {\n queuedImport.localFile.add(\n queuedImport.localIdentifier.text,\n element,\n true // isImport\n );\n } else {\n // FIXME: file not found is not reported if this happens?\n this.error(\n DiagnosticCode.Module_0_has_no_exported_member_1,\n foreignIdentifier.range, queuedImport.foreignPath, foreignIdentifier.text\n );\n }\n } else { // i.e. import * as bar from \"./bar\"\n let foreignFile = this.lookupForeignFile(queuedImport.foreignPath, queuedImport.foreignPathAlt);\n if (foreignFile) {\n let localFile = queuedImport.localFile;\n let localName = queuedImport.localIdentifier.text;\n localFile.add(\n localName,\n foreignFile.asImportedNamespace(\n localName,\n localFile\n ),\n true // isImport\n );\n } else {\n assert(false); // already reported by the parser not finding the file\n }\n }\n }\n\n // queued exports should be resolvable now that imports are finalized\n for (let [file, exports] of queuedExports) {\n for (let [exportName, queuedExport] of exports) {\n let localName = queuedExport.localIdentifier.text;\n let foreignPath = queuedExport.foreignPath;\n if (foreignPath) { // i.e. export { foo [as bar] } from \"./baz\"\n let element = this.lookupForeign(\n localName,\n foreignPath,\n assert(queuedExport.foreignPathAlt), // must be set if foreignPath is\n queuedExports\n );\n if (element) {\n file.ensureExport(exportName, element);\n } else {\n this.error(\n DiagnosticCode.Module_0_has_no_exported_member_1,\n queuedExport.localIdentifier.range,\n foreignPath, localName\n );\n }\n } else { // i.e. export { foo [as bar] }\n let element = file.lookupInSelf(localName);\n if (element) {\n file.ensureExport(exportName, element);\n } else {\n let globalElement = this.lookupGlobal(localName);\n if (globalElement && globalElement instanceof DeclaredElement) { // export { memory }\n file.ensureExport(exportName, globalElement);\n } else {\n this.error(\n DiagnosticCode.Module_0_has_no_exported_member_1,\n queuedExport.foreignIdentifier.range,\n file.internalName, queuedExport.foreignIdentifier.text\n );\n }\n }\n }\n }\n }\n\n // register ArrayBuffer (id=0), String (id=1), ArrayBufferView (id=2)\n assert(this.nextClassId == 0);\n this.arrayBufferInstance = this.requireClass(CommonSymbols.ArrayBuffer);\n assert(this.arrayBufferInstance.id == 0);\n this.stringInstance = this.requireClass(CommonSymbols.String);\n assert(this.stringInstance.id == 1);\n this.arrayBufferViewInstance = this.requireClass(CommonSymbols.ArrayBufferView);\n assert(this.arrayBufferViewInstance.id == 2);\n\n // register classes backing basic types\n this.registerNativeTypeClass(TypeKind.I8, CommonSymbols.I8);\n this.registerNativeTypeClass(TypeKind.I16, CommonSymbols.I16);\n this.registerNativeTypeClass(TypeKind.I32, CommonSymbols.I32);\n this.registerNativeTypeClass(TypeKind.I64, CommonSymbols.I64);\n this.registerNativeTypeClass(TypeKind.ISIZE, CommonSymbols.Isize);\n this.registerNativeTypeClass(TypeKind.U8, CommonSymbols.U8);\n this.registerNativeTypeClass(TypeKind.U16, CommonSymbols.U16);\n this.registerNativeTypeClass(TypeKind.U32, CommonSymbols.U32);\n this.registerNativeTypeClass(TypeKind.U64, CommonSymbols.U64);\n this.registerNativeTypeClass(TypeKind.USIZE, CommonSymbols.Usize);\n this.registerNativeTypeClass(TypeKind.BOOL, CommonSymbols.Bool);\n this.registerNativeTypeClass(TypeKind.F32, CommonSymbols.F32);\n this.registerNativeTypeClass(TypeKind.F64, CommonSymbols.F64);\n if (options.hasFeature(Feature.SIMD)) this.registerNativeTypeClass(TypeKind.V128, CommonSymbols.V128);\n\n // register views but don't instantiate them yet\n this.i8ArrayPrototype = this.require(CommonSymbols.Int8Array, ElementKind.CLASS_PROTOTYPE);\n this.i16ArrayPrototype = this.require(CommonSymbols.Int16Array, ElementKind.CLASS_PROTOTYPE);\n this.i32ArrayPrototype = this.require(CommonSymbols.Int32Array, ElementKind.CLASS_PROTOTYPE);\n this.i64ArrayPrototype = this.require(CommonSymbols.Int64Array, ElementKind.CLASS_PROTOTYPE);\n this.u8ArrayPrototype = this.require(CommonSymbols.Uint8Array, ElementKind.CLASS_PROTOTYPE);\n this.u8ClampedArrayPrototype = this.require(CommonSymbols.Uint8ClampedArray, ElementKind.CLASS_PROTOTYPE);\n this.u16ArrayPrototype = this.require(CommonSymbols.Uint16Array, ElementKind.CLASS_PROTOTYPE);\n this.u32ArrayPrototype = this.require(CommonSymbols.Uint32Array, ElementKind.CLASS_PROTOTYPE);\n this.u64ArrayPrototype = this.require(CommonSymbols.Uint64Array, ElementKind.CLASS_PROTOTYPE);\n this.f32ArrayPrototype = this.require(CommonSymbols.Float32Array, ElementKind.CLASS_PROTOTYPE);\n this.f64ArrayPrototype = this.require(CommonSymbols.Float64Array, ElementKind.CLASS_PROTOTYPE);\n\n // resolve base prototypes of derived classes\n var resolver = this.resolver;\n for (let i = 0, k = queuedExtends.length; i < k; ++i) {\n let thisPrototype = queuedExtends[i];\n let extendsNode = assert(thisPrototype.extendsNode); // must be present if in queuedExtends\n let baseElement = resolver.resolveTypeName(extendsNode.name, thisPrototype.parent); // reports\n if (!baseElement) continue;\n if (baseElement.kind == ElementKind.CLASS_PROTOTYPE) {\n let basePrototype = baseElement;\n if (basePrototype.hasDecorator(DecoratorFlags.SEALED)) {\n this.error(\n DiagnosticCode.Class_0_is_sealed_and_cannot_be_extended,\n extendsNode.range, (baseElement).identifierNode.text\n );\n }\n if (\n basePrototype.hasDecorator(DecoratorFlags.UNMANAGED) !=\n thisPrototype.hasDecorator(DecoratorFlags.UNMANAGED)\n ) {\n this.error(\n DiagnosticCode.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa,\n Range.join(thisPrototype.identifierNode.range, extendsNode.range)\n );\n }\n thisPrototype.basePrototype = basePrototype;\n } else {\n this.error(\n DiagnosticCode.A_class_may_only_extend_another_class,\n extendsNode.range\n );\n }\n }\n\n // set up global aliases\n {\n let globalAliases = options.globalAliases;\n if (globalAliases) {\n for (let [alias, name] of globalAliases) {\n if (!name.length) continue; // explicitly disabled\n let firstChar = name.charCodeAt(0);\n if (firstChar >= CharCode._0 && firstChar <= CharCode._9) {\n this.registerConstantInteger(alias, Type.i32, i64_new(parseInt(name, 10)));\n } else {\n let elementsByName = this.elementsByName;\n let element = elementsByName.get(name);\n if (element) {\n if (elementsByName.has(alias)) throw new Error(\"duplicate global element: \" + name);\n elementsByName.set(alias, element);\n }\n else throw new Error(\"no such global element: \" + name);\n }\n }\n }\n }\n\n // register stdlib components\n this.arrayPrototype = this.require(CommonSymbols.Array, ElementKind.CLASS_PROTOTYPE);\n this.fixedArrayPrototype = this.require(CommonSymbols.FixedArray, ElementKind.CLASS_PROTOTYPE);\n this.setPrototype = this.require(CommonSymbols.Set, ElementKind.CLASS_PROTOTYPE);\n this.mapPrototype = this.require(CommonSymbols.Map, ElementKind.CLASS_PROTOTYPE);\n this.abortInstance = this.lookupFunction(CommonSymbols.abort); // can be disabled\n this.allocInstance = this.requireFunction(CommonSymbols.alloc);\n this.reallocInstance = this.requireFunction(CommonSymbols.realloc);\n this.freeInstance = this.requireFunction(CommonSymbols.free);\n this.retainInstance = this.requireFunction(CommonSymbols.retain);\n this.releaseInstance = this.requireFunction(CommonSymbols.release);\n this.collectInstance = this.requireFunction(CommonSymbols.collect);\n this.typeinfoInstance = this.requireFunction(CommonSymbols.typeinfo);\n this.instanceofInstance = this.requireFunction(CommonSymbols.instanceof_);\n this.visitInstance = this.requireFunction(CommonSymbols.visit);\n this.allocArrayInstance = this.requireFunction(CommonSymbols.allocArray);\n\n // mark module exports, i.e. to apply proper wrapping behavior on the boundaries\n for (let file of this.filesByName.values()) {\n let exports = file.exports;\n if (exports !== null && file.source.sourceKind == SourceKind.USER_ENTRY) {\n for (let element of exports.values()) this.markModuleExport(element);\n }\n }\n }\n\n /** Requires that a global library element of the specified kind is present and returns it. */\n private require(name: string, kind: ElementKind): Element {\n var element = this.lookupGlobal(name);\n if (!element) throw new Error(\"missing \" + name);\n if (element.kind != kind) throw new Error(\"unexpected \" + name);\n return element;\n }\n\n /** Requires that a non-generic global class is present and returns it. */\n private requireClass(name: string): Class {\n var prototype = this.require(name, ElementKind.CLASS_PROTOTYPE);\n var resolved = this.resolver.resolveClass(prototype, null);\n if (!resolved) throw new Error(\"invalid \" + name);\n return resolved;\n }\n\n /** Obtains a non-generic global function and returns it. Returns `null` if it does not exist. */\n private lookupFunction(name: string): Function | null {\n var prototype = this.lookupGlobal(name);\n if (!prototype || prototype.kind != ElementKind.FUNCTION_PROTOTYPE) return null;\n return this.resolver.resolveFunction(prototype, null);\n }\n\n /** Requires that a non-generic global function is present and returns it. */\n private requireFunction(name: string): Function {\n var prototype = this.require(name, ElementKind.FUNCTION_PROTOTYPE);\n var resolved = this.resolver.resolveFunction(prototype, null);\n if (!resolved) throw new Error(\"invalid \" + name);\n return resolved;\n }\n\n /** Marks an element and its children as a module export. */\n private markModuleExport(element: Element): void {\n element.set(CommonFlags.MODULE_EXPORT);\n switch (element.kind) {\n case ElementKind.CLASS_PROTOTYPE: {\n let instanceMembers = (element).instanceMembers;\n if (instanceMembers) for (let member of instanceMembers.values()) this.markModuleExport(member);\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n let getterPrototype = (element).getterPrototype;\n if (getterPrototype) this.markModuleExport(getterPrototype);\n let setterPrototype = (element).setterPrototype;\n if (setterPrototype) this.markModuleExport(setterPrototype);\n break;\n }\n case ElementKind.PROPERTY:\n case ElementKind.FUNCTION:\n case ElementKind.FIELD:\n case ElementKind.CLASS: assert(false); // assumes that there are no instances yet\n }\n {\n let members = element.members;\n if (members) for (let member of members.values()) this.markModuleExport(member);\n }\n }\n\n /** Registers a native type with the program. */\n private registerNativeType(name: string, type: Type): void {\n var element = new TypeDefinition(\n name,\n this.nativeFile,\n this.makeNativeTypeDeclaration(name, CommonFlags.EXPORT),\n DecoratorFlags.BUILTIN\n );\n element.setType(type);\n this.nativeFile.add(name, element);\n }\n\n /** Registers the backing class of a native type. */\n private registerNativeTypeClass(typeKind: TypeKind, className: string): void {\n assert(!this.typeClasses.has(typeKind));\n var element = this.lookupGlobal(className);\n if (element) {\n assert(element.kind == ElementKind.CLASS_PROTOTYPE);\n let classElement = this.resolver.resolveClass(element, null);\n if (classElement) this.typeClasses.set(typeKind, classElement);\n }\n }\n\n /** Registers a constant integer value within the global scope. */\n private registerConstantInteger(name: string, type: Type, value: I64): void {\n assert(type.is(TypeFlags.INTEGER)); // must be an integer type\n var global = new Global(\n name,\n this.nativeFile,\n DecoratorFlags.NONE,\n this.makeNativeVariableDeclaration(name, CommonFlags.CONST | CommonFlags.EXPORT)\n );\n global.setConstantIntegerValue(value, type);\n this.nativeFile.add(name, global);\n }\n\n /** Registers a constant float value within the global scope. */\n private registerConstantFloat(name: string, type: Type, value: f64): void {\n assert(type.is(TypeFlags.FLOAT)); // must be a float type\n var global = new Global(\n name,\n this.nativeFile,\n DecoratorFlags.NONE,\n this.makeNativeVariableDeclaration(name, CommonFlags.CONST | CommonFlags.EXPORT)\n );\n global.setConstantFloatValue(value, type);\n this.nativeFile.add(name, global);\n }\n\n /** Ensures that the given global element exists. Attempts to merge duplicates. */\n ensureGlobal(name: string, element: DeclaredElement): DeclaredElement {\n var elementsByName = this.elementsByName;\n if (elementsByName.has(name)) {\n let actual = elementsByName.get(name)!;\n // NOTE: this is effectively only performed when merging native types with\n // their respective namespaces in std/builtins, but can also trigger when a\n // user has multiple global elements of the same name in different files,\n // which might result in unexpected shared symbols accross files. considering\n // this a wonky feature for now that we might want to revisit later.\n if (actual !== element) {\n let merged = tryMerge(elementsByName.get(name)!, element);\n if (!merged) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n element.identifierNode.range, name\n );\n return element;\n }\n element = merged;\n }\n }\n elementsByName.set(name, element);\n return element;\n }\n\n /** Looks up the element of the specified name in the global scope. */\n lookupGlobal(name: string): Element | null {\n var elements = this.elementsByName;\n if (elements.has(name)) return elements.get(name);\n return null;\n }\n\n /** Looks up the element of the specified name in the global scope. Errors if not present. */\n requireGlobal(name: string): Element {\n var elements = this.elementsByName;\n if (elements.has(name)) return elements.get(name)!;\n throw new Error(\"missing global\");\n }\n\n /** Tries to locate a foreign file given its normalized path. */\n private lookupForeignFile(\n /** Normalized path to the other file. */\n foreignPath: string,\n /** Alternative normalized path to the other file. */\n foreignPathAlt: string\n ): File | null {\n var filesByName = this.filesByName;\n return filesByName.has(foreignPath)\n ? filesByName.get(foreignPath)!\n : filesByName.has(foreignPathAlt)\n ? filesByName.get(foreignPathAlt)!\n : null;\n }\n\n /** Tries to locate a foreign element by traversing exports and queued exports. */\n private lookupForeign(\n /** Identifier within the other file. */\n foreignName: string,\n /** Normalized path to the other file. */\n foreignPath: string,\n /** Alternative normalized path to the other file. */\n foreignPathAlt: string,\n /** So far queued exports. */\n queuedExports: Map>\n ): DeclaredElement | null {\n do {\n let foreignFile = this.lookupForeignFile(foreignPath, foreignPathAlt);\n if (!foreignFile) return null; // no such file\n\n // search already resolved exports\n let element = foreignFile.lookupExport(foreignName);\n if (element) return element;\n\n // otherwise traverse queued exports\n if (queuedExports.has(foreignFile)) {\n let fileQueuedExports = queuedExports.get(foreignFile)!;\n if (fileQueuedExports.has(foreignName)) {\n let queuedExport = fileQueuedExports.get(foreignName)!;\n if (queuedExport.foreignPath) { // imported from another file\n foreignName = queuedExport.localIdentifier.text;\n foreignPath = queuedExport.foreignPath;\n foreignPathAlt = assert(queuedExport.foreignPathAlt);\n continue;\n } else { // local element of this file\n element = foreignFile.lookupInSelf(queuedExport.localIdentifier.text);\n if (element) return element;\n }\n }\n }\n break;\n } while (true);\n return null;\n }\n\n /** Validates that only supported decorators are present. */\n private checkDecorators(\n /** Decorators present on an element. */\n decorators: DecoratorNode[] | null,\n /** Accepted decorator flags. Emits diagnostics if any other decorators are present. */\n acceptedFlags: DecoratorFlags\n ): DecoratorFlags {\n var flags = DecoratorFlags.NONE;\n if (decorators) {\n for (let i = 0, k = decorators.length; i < k; ++i) {\n let decorator = decorators[i];\n let kind = decoratorNameToKind(decorator.name);\n let flag = decoratorKindToFlag(kind);\n if (flag) {\n if (flag == DecoratorFlags.BUILTIN) {\n if (!(acceptedFlags & flag) && !decorator.range.source.isLibrary) {\n this.error(\n DiagnosticCode.Decorator_0_is_not_valid_here,\n decorator.range, decorator.name.range.toString()\n );\n } else {\n flags |= flag;\n }\n } else if (!(acceptedFlags & flag)) {\n this.error(\n DiagnosticCode.Decorator_0_is_not_valid_here,\n decorator.range, decorator.name.range.toString()\n );\n } else if (flags & flag) {\n this.error(\n DiagnosticCode.Duplicate_decorator,\n decorator.range, decorator.name.range.toString()\n );\n } else {\n flags |= flag;\n }\n }\n }\n }\n return flags;\n }\n\n /** Initializes a class declaration. */\n private initializeClass(\n /** The declaration to initialize. */\n declaration: ClassDeclaration,\n /** Parent element, usually a file or namespace. */\n parent: Element,\n /** So far queued `extends` clauses. */\n queuedExtends: ClassPrototype[],\n /** So far queued `implements` clauses. */\n queuedImplements: ClassPrototype[]\n ): ClassPrototype | null {\n var name = declaration.name.text;\n var element = new ClassPrototype(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators,\n DecoratorFlags.GLOBAL |\n DecoratorFlags.SEALED |\n DecoratorFlags.UNMANAGED\n )\n );\n if (!parent.add(name, element)) return null;\n\n var implementsTypes = declaration.implementsTypes;\n if (implementsTypes) {\n let numImplementsTypes = implementsTypes.length;\n // cannot implement interfaces when unmanaged\n if (element.hasDecorator(DecoratorFlags.UNMANAGED)) {\n if (numImplementsTypes) {\n this.error(\n DiagnosticCode.Unmanaged_classes_cannot_implement_interfaces,\n Range.join(\n declaration.name.range,\n implementsTypes[numImplementsTypes - 1].range\n )\n );\n }\n } else if (numImplementsTypes) {\n // remember classes that implement interfaces\n for (let i = 0; i < numImplementsTypes; ++i) {\n this.warning( // TODO: not yet supported\n DiagnosticCode.Operation_not_supported,\n implementsTypes[i].range\n );\n }\n queuedImplements.push(element);\n }\n }\n // remember classes that extend another class\n if (declaration.extendsType) queuedExtends.push(element);\n\n // initialize members\n var memberDeclarations = declaration.members;\n for (let i = 0, k = memberDeclarations.length; i < k; ++i) {\n let memberDeclaration = memberDeclarations[i];\n switch (memberDeclaration.kind) {\n case NodeKind.FIELDDECLARATION: {\n this.initializeField(memberDeclaration, element);\n break;\n }\n case NodeKind.METHODDECLARATION: {\n if (memberDeclaration.isAny(CommonFlags.GET | CommonFlags.SET)) {\n this.initializeProperty(memberDeclaration, element);\n } else {\n this.initializeMethod(memberDeclaration, element);\n }\n break;\n }\n case NodeKind.INDEXSIGNATUREDECLARATION: break; // ignored for now\n default: assert(false); // class member expected\n }\n }\n return element;\n }\n\n /** Initializes a field of a class or interface. */\n private initializeField(\n /** The declaration to initialize. */\n declaration: FieldDeclaration,\n /** Parent class. */\n parent: ClassPrototype\n ): void {\n var name = declaration.name.text;\n var decorators = declaration.decorators;\n var element: DeclaredElement;\n if (declaration.is(CommonFlags.STATIC)) { // global variable\n assert(parent.kind != ElementKind.INTERFACE_PROTOTYPE);\n element = new Global(\n name,\n parent,\n this.checkDecorators(decorators,\n (declaration.is(CommonFlags.READONLY)\n ? DecoratorFlags.INLINE\n : DecoratorFlags.NONE\n ) | DecoratorFlags.LAZY | DecoratorFlags.UNSAFE\n ),\n declaration\n );\n if (!parent.add(name, element)) return;\n } else { // actual instance field\n assert(!declaration.isAny(CommonFlags.ABSTRACT | CommonFlags.GET | CommonFlags.SET));\n element = new FieldPrototype(\n name,\n parent,\n declaration,\n this.checkDecorators(decorators, DecoratorFlags.UNSAFE)\n );\n if (!parent.addInstance(name, element)) return;\n }\n }\n\n /** Initializes a method of a class or interface. */\n private initializeMethod(\n /** The declaration to initialize. */\n declaration: MethodDeclaration,\n /** Parent class. */\n parent: ClassPrototype\n ): void {\n var name = declaration.name.text;\n var isStatic = declaration.is(CommonFlags.STATIC);\n var acceptedFlags = DecoratorFlags.INLINE | DecoratorFlags.UNSAFE;\n if (!declaration.is(CommonFlags.GENERIC)) {\n acceptedFlags |= DecoratorFlags.OPERATOR_BINARY\n | DecoratorFlags.OPERATOR_PREFIX\n | DecoratorFlags.OPERATOR_POSTFIX;\n }\n var element = new FunctionPrototype(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators, acceptedFlags)\n );\n if (isStatic) { // global function\n assert(declaration.name.kind != NodeKind.CONSTRUCTOR);\n if (!parent.add(name, element)) return;\n } else { // actual instance method\n if (!parent.addInstance(name, element)) return;\n }\n this.checkOperatorOverloads(declaration.decorators, element, parent);\n }\n\n /** Checks that operator overloads are generally valid, if present. */\n private checkOperatorOverloads(\n /** Decorators to check. */\n decorators: DecoratorNode[] | null,\n /** Decorated method. */\n prototype: FunctionPrototype,\n /** Parent class. */\n classPrototype: ClassPrototype\n ): void {\n if (decorators) {\n for (let i = 0, k = decorators.length; i < k; ++i) {\n let decorator = decorators[i];\n switch (decorator.decoratorKind) {\n case DecoratorKind.OPERATOR:\n case DecoratorKind.OPERATOR_BINARY:\n case DecoratorKind.OPERATOR_PREFIX:\n case DecoratorKind.OPERATOR_POSTFIX: {\n let numArgs = decorator.arguments && decorator.arguments.length || 0;\n if (numArgs == 1) {\n let firstArg = (decorator.arguments)[0];\n if (\n firstArg.kind == NodeKind.LITERAL &&\n (firstArg).literalKind == LiteralKind.STRING\n ) {\n let kind = operatorKindFromDecorator(\n decorator.decoratorKind,\n (firstArg).value\n );\n if (kind == OperatorKind.INVALID) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n firstArg.range\n );\n } else {\n let overloads = classPrototype.overloadPrototypes;\n if (overloads.has(kind)) {\n this.error(\n DiagnosticCode.Duplicate_function_implementation,\n firstArg.range\n );\n } else {\n prototype.operatorKind = kind;\n overloads.set(kind, prototype);\n }\n }\n } else {\n this.error(\n DiagnosticCode.String_literal_expected,\n firstArg.range\n );\n }\n } else {\n this.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n decorator.range, \"1\", numArgs.toString(10)\n );\n }\n }\n }\n }\n }\n }\n\n /** Ensures that the property introduced by the specified getter or setter exists.*/\n private ensureProperty(\n /** The declaration of the getter or setter introducing the property. */\n declaration: MethodDeclaration,\n /** Parent class. */\n parent: ClassPrototype\n ): PropertyPrototype | null {\n var name = declaration.name.text;\n if (declaration.is(CommonFlags.STATIC)) {\n let parentMembers = parent.members;\n if (parentMembers && parentMembers.has(name)) {\n let element = parentMembers.get(name)!;\n if (element.kind == ElementKind.PROPERTY_PROTOTYPE) return element;\n } else {\n let element = new PropertyPrototype(name, parent, declaration);\n if (!parent.add(name, element)) return null;\n return element;\n }\n } else {\n let parentMembers = parent.instanceMembers;\n if (parentMembers && parentMembers.has(name)) {\n let element = parentMembers.get(name);\n if (element.kind == ElementKind.PROPERTY_PROTOTYPE) return element;\n } else {\n let element = new PropertyPrototype(name, parent, declaration);\n if (!parent.addInstance(name, element)) return null;\n return element;\n }\n }\n this.error(\n DiagnosticCode.Duplicate_property_0,\n declaration.name.range, name\n );\n return null;\n }\n\n /** Initializes a property of a class. */\n private initializeProperty(\n /** The declaration of the getter or setter. */\n declaration: MethodDeclaration,\n /** Parent class. */\n parent: ClassPrototype\n ): void {\n var property = this.ensureProperty(declaration, parent);\n if (!property) return;\n var name = declaration.name.text;\n var isGetter = declaration.is(CommonFlags.GET);\n if (isGetter) {\n if (property.getterPrototype) {\n this.error(\n DiagnosticCode.Duplicate_property_0,\n declaration.name.range, name\n );\n return;\n }\n } else {\n if (property.setterPrototype) {\n this.error(\n DiagnosticCode.Duplicate_property_0,\n declaration.name.range, name\n );\n return;\n }\n }\n var element = new FunctionPrototype(\n (isGetter ? GETTER_PREFIX : SETTER_PREFIX) + name,\n property,\n declaration,\n this.checkDecorators(declaration.decorators,\n DecoratorFlags.INLINE | DecoratorFlags.UNSAFE\n )\n );\n if (isGetter) {\n property.getterPrototype = element;\n } else {\n property.setterPrototype = element;\n }\n }\n\n /** Initializes an enum. */\n private initializeEnum(\n /** The declaration to initialize. */\n declaration: EnumDeclaration,\n /** Parent element, usually a file or namespace. */\n parent: Element\n ): Enum | null {\n var name = declaration.name.text;\n var element = new Enum(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators,\n DecoratorFlags.GLOBAL |\n DecoratorFlags.INLINE |\n DecoratorFlags.LAZY\n )\n );\n if (!parent.add(name, element)) return null;\n var values = declaration.values;\n for (let i = 0, k = values.length; i < k; ++i) {\n this.initializeEnumValue(values[i], element);\n }\n return element;\n }\n\n /** Initializes an enum value. */\n private initializeEnumValue(\n /** The declaration to initialize. */\n declaration: EnumValueDeclaration,\n /** Parent enum. */\n parent: Enum\n ): void {\n var name = declaration.name.text;\n var element = new EnumValue(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators,\n DecoratorFlags.NONE\n )\n );\n if (!parent.add(name, element)) return;\n }\n\n /** Initializes an `export` statement. */\n private initializeExports(\n /** The statement to initialize. */\n statement: ExportStatement,\n /** Parent file. */\n parent: File,\n /** So far queued `export`s. */\n queuedExports: Map>,\n /** So far queued `export *`s. */\n queuedExportsStar: Map\n ): void {\n var members = statement.members;\n if (members) { // export { foo, bar } [from \"./baz\"]\n for (let i = 0, k = members.length; i < k; ++i) {\n this.initializeExport(members[i], parent, statement.internalPath, queuedExports);\n }\n } else { // export * from \"./baz\"\n let queued: QueuedExportStar[];\n if (queuedExportsStar.has(parent)) queued = queuedExportsStar.get(parent)!;\n else queuedExportsStar.set(parent, queued = []);\n let foreignPath = assert(statement.internalPath); // must be set for export *\n queued.push(new QueuedExportStar(\n foreignPath,\n foreignPath.endsWith(INDEX_SUFFIX) // strip or add index depending on what's already present\n ? foreignPath.substring(0, foreignPath.length - INDEX_SUFFIX.length)\n : foreignPath + INDEX_SUFFIX,\n assert(statement.path)\n ));\n }\n }\n\n /** Initializes a single `export` member. Does not handle `export *`. */\n private initializeExport(\n /** The member to initialize. */\n member: ExportMember,\n /** Local file. */\n localFile: File,\n /** Path to the other file, if present. */\n foreignPath: string | null,\n /** So far queued `export`s. */\n queuedExports: Map>\n ): void {\n var localName = member.localName.text;\n var foreignName = member.exportedName.text;\n\n // check for duplicates\n var element = localFile.lookupExport(foreignName);\n if (element) {\n this.error(\n DiagnosticCode.Export_declaration_conflicts_with_exported_declaration_of_0,\n member.exportedName.range, foreignName\n );\n return;\n }\n // local element, i.e. export { foo [as bar] }\n if (foreignPath === null) {\n\n // resolve right away if the local element already exists\n if (element = localFile.lookupInSelf(localName)) {\n localFile.ensureExport(foreignName, element);\n\n // otherwise queue it\n } else {\n let queued: Map;\n if (queuedExports.has(localFile)) queued = queuedExports.get(localFile)!;\n else queuedExports.set(localFile, queued = new Map());\n queued.set(foreignName, new QueuedExport(\n member.localName,\n member.exportedName,\n null, null\n ));\n }\n\n // foreign element, i.e. export { foo } from \"./bar\"\n } else {\n let queued: Map;\n if (queuedExports.has(localFile)) queued = queuedExports.get(localFile)!;\n else queuedExports.set(localFile, queued = new Map());\n queued.set(foreignName, new QueuedExport(\n member.localName,\n member.exportedName,\n foreignPath,\n foreignPath.endsWith(INDEX_SUFFIX) // strip or add index depending on what's already present\n ? foreignPath.substring(0, foreignPath.length - INDEX_SUFFIX.length)\n : foreignPath + INDEX_SUFFIX\n ));\n }\n }\n\n private initializeExportDefault(\n /** The statement to initialize. */\n statement: ExportDefaultStatement,\n /** Parent file. */\n parent: File,\n /** So far queued `extends` clauses. */\n queuedExtends: Array,\n /** So far queued `implements` clauses. */\n queuedImplements: ClassPrototype[]\n ): void {\n var declaration = statement.declaration;\n var element: DeclaredElement | null = null;\n switch (declaration.kind) {\n case NodeKind.ENUMDECLARATION: {\n element = this.initializeEnum(declaration, parent);\n break;\n }\n case NodeKind.FUNCTIONDECLARATION: {\n element = this.initializeFunction(declaration, parent);\n break;\n }\n case NodeKind.CLASSDECLARATION: {\n element = this.initializeClass(declaration, parent, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.INTERFACEDECLARATION: {\n element = this.initializeInterface(declaration, parent);\n break;\n }\n case NodeKind.NAMESPACEDECLARATION: {\n element = this.initializeNamespace(declaration, parent, queuedExtends, queuedImplements);\n break;\n }\n default: assert(false);\n }\n if (element) {\n let exports = parent.exports;\n if (!exports) parent.exports = exports = new Map();\n else if (exports.has(\"default\")) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n declaration.name.range, \"default\"\n );\n return;\n }\n exports.set(\"default\", element);\n }\n }\n\n /** Initializes an `import` statement. */\n private initializeImports(\n /** The statement to initialize. */\n statement: ImportStatement,\n /** Parent file. */\n parent: File,\n /** So far queued `import`s. */\n queuedImports: QueuedImport[],\n /** So far queued `export`s. */\n queuedExports: Map>\n ): void {\n var declarations = statement.declarations;\n if (declarations) { // import { foo [as bar] } from \"./baz\"\n for (let i = 0, k = declarations.length; i < k; ++i) {\n this.initializeImport(\n declarations[i],\n parent,\n statement.internalPath,\n queuedImports,\n queuedExports\n );\n }\n } else if (statement.namespaceName) { // import * as foo from \"./bar\"\n queuedImports.push(new QueuedImport(\n parent,\n statement.namespaceName,\n null, // indicates import *\n statement.internalPath,\n statement.internalPath + INDEX_SUFFIX\n ));\n } else {\n // import \"./foo\"\n }\n }\n\n /** Initializes a single `import` declaration. Does not handle `import *`. */\n private initializeImport( // { foo [as bar] }\n /** The declaration to initialize. */\n declaration: ImportDeclaration,\n /** Parent file. */\n parent: File,\n /** Path to the other file. */\n foreignPath: string,\n /** So far queued `import`s. */\n queuedImports: QueuedImport[],\n /** So far queued `export`s. */\n queuedExports: Map>\n ): void {\n var foreignPathAlt = foreignPath.endsWith(INDEX_SUFFIX) // strip or add index depending on what's already present\n ? foreignPath.substring(0, foreignPath.length - INDEX_SUFFIX.length)\n : foreignPath + INDEX_SUFFIX;\n\n // resolve right away if the element exists\n var element = this.lookupForeign(declaration.foreignName.text, foreignPath, foreignPathAlt, queuedExports);\n if (element) {\n parent.add(declaration.name.text, element, true);\n return;\n }\n\n // otherwise queue it\n queuedImports.push(new QueuedImport(\n parent,\n declaration.name,\n declaration.foreignName,\n foreignPath,\n foreignPathAlt\n ));\n }\n\n /** Initializes a function. Does not handle methods. */\n private initializeFunction(\n /** The declaration to initialize. */\n declaration: FunctionDeclaration,\n /** Parent element, usually a file or namespace. */\n parent: Element\n ): FunctionPrototype | null {\n var name = declaration.name.text;\n var validDecorators = DecoratorFlags.UNSAFE | DecoratorFlags.BUILTIN;\n if (declaration.is(CommonFlags.AMBIENT)) {\n validDecorators |= DecoratorFlags.EXTERNAL;\n } else {\n validDecorators |= DecoratorFlags.INLINE;\n }\n if (!declaration.is(CommonFlags.INSTANCE)) {\n if (parent.kind != ElementKind.CLASS_PROTOTYPE) {\n validDecorators |= DecoratorFlags.GLOBAL;\n }\n }\n var element = new FunctionPrototype(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators, validDecorators)\n );\n if (!parent.add(name, element)) return null;\n return element;\n }\n\n /** Initializes an interface. */\n private initializeInterface(\n /** The declaration to initialize. */\n declaration: InterfaceDeclaration,\n /** Parent element, usually a file or namespace. */\n parent: Element\n ): InterfacePrototype | null {\n var name = declaration.name.text;\n var element = new InterfacePrototype(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators,\n DecoratorFlags.GLOBAL\n )\n );\n if (!parent.add(name, element)) return null;\n var memberDeclarations = declaration.members;\n for (let i = 0, k = memberDeclarations.length; i < k; ++i) {\n let memberDeclaration = memberDeclarations[i];\n switch (memberDeclaration.kind) {\n case NodeKind.FIELDDECLARATION: {\n this.initializeField(memberDeclaration, element);\n break;\n }\n case NodeKind.METHODDECLARATION: {\n if (memberDeclaration.isAny(CommonFlags.GET | CommonFlags.SET)) {\n this.initializeProperty(memberDeclaration, element);\n } else {\n this.initializeMethod(memberDeclaration, element);\n }\n break;\n }\n default: assert(false); // interface member expected\n }\n }\n return element;\n }\n\n /** Initializes a namespace. */\n private initializeNamespace(\n /** The declaration to initialize. */\n declaration: NamespaceDeclaration,\n /** Parent element, usually a file or another namespace. */\n parent: Element,\n /** So far queued `extends` clauses. */\n queuedExtends: ClassPrototype[],\n /** So far queued `implements` clauses. */\n queuedImplements: ClassPrototype[]\n ): Namespace | null {\n var name = declaration.name.text;\n var original = new Namespace(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators, DecoratorFlags.GLOBAL)\n );\n if (!parent.add(name, original)) return null;\n var element = assert(parent.lookupInSelf(name)); // possibly merged\n var members = declaration.members;\n for (let i = 0, k = members.length; i < k; ++i) {\n let member = members[i];\n switch (member.kind) {\n case NodeKind.CLASSDECLARATION: {\n this.initializeClass(member, original, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.ENUMDECLARATION: {\n this.initializeEnum(member, original);\n break;\n }\n case NodeKind.FUNCTIONDECLARATION: {\n this.initializeFunction(member, original);\n break;\n }\n case NodeKind.INTERFACEDECLARATION: {\n this.initializeInterface(member, original);\n break;\n }\n case NodeKind.NAMESPACEDECLARATION: {\n this.initializeNamespace(member, original, queuedExtends, queuedImplements);\n break;\n }\n case NodeKind.TYPEDECLARATION: {\n this.initializeTypeDefinition(member, original);\n break;\n }\n case NodeKind.VARIABLE: {\n this.initializeVariables(member, original);\n break;\n }\n default: assert(false); // namespace member expected\n }\n }\n if (original != element) copyMembers(original, element); // retain original parent\n return element;\n }\n\n /** Initializes a `type` definition. */\n private initializeTypeDefinition(\n /** The declaration to initialize. */\n declaration: TypeDeclaration,\n /** Parent element, usually a file or namespace. */\n parent: Element\n ): void {\n var name = declaration.name.text;\n var element = new TypeDefinition(\n name,\n parent,\n declaration,\n this.checkDecorators(declaration.decorators, DecoratorFlags.NONE)\n );\n parent.add(name, element); // reports\n }\n\n /** Initializes a variable statement. */\n private initializeVariables(\n /** The statement to initialize. */\n statement: VariableStatement,\n /** Parent element, usually a file or namespace. */\n parent: Element\n ): void {\n var declarations = statement.declarations;\n for (let i = 0, k = declarations.length; i < k; ++i) {\n let declaration = declarations[i];\n let name = declaration.name.text;\n let acceptedFlags = DecoratorFlags.GLOBAL | DecoratorFlags.LAZY;\n if (declaration.is(CommonFlags.DECLARE)) {\n acceptedFlags |= DecoratorFlags.EXTERNAL;\n }\n if (declaration.is(CommonFlags.CONST)) {\n acceptedFlags |= DecoratorFlags.INLINE;\n }\n let element = new Global(\n name,\n parent,\n this.checkDecorators(declaration.decorators, acceptedFlags),\n declaration\n );\n if (!parent.add(name, element)) continue; // reports\n }\n }\n\n /** Determines the element type of a built-in array. */\n // determineBuiltinArrayType(target: Class): Type | null {\n // switch (target.internalName) {\n // case BuiltinSymbols.Int8Array: return Type.i8;\n // case BuiltinSymbols.Uint8ClampedArray:\n // case BuiltinSymbols.Uint8Array: return Type.u8;\n // case BuiltinSymbols.Int16Array: return Type.i16;\n // case BuiltinSymbols.Uint16Array: return Type.u16;\n // case BuiltinSymbols.Int32Array: return Type.i32;\n // case BuiltinSymbols.Uint32Array: return Type.u32;\n // case BuiltinSymbols.Int64Array: return Type.i64;\n // case BuiltinSymbols.Uint64Array: return Type.u64;\n // case BuiltinSymbols.Float32Array: return Type.f32;\n // case BuiltinSymbols.Float64Array: return Type.f64;\n // }\n // var current: Class | null = target;\n // var arrayPrototype = this.arrayPrototype;\n // do {\n // if (current.prototype == arrayPrototype) { // Array\n // let typeArguments = assert(current.typeArguments);\n // assert(typeArguments.length == 1);\n // return typeArguments[0];\n // }\n // } while (current = current.base);\n // return null;\n // }\n}\n\n/** Indicates the specific kind of an {@link Element}. */\nexport enum ElementKind {\n /** A {@link Global}. */\n GLOBAL,\n /** A {@link Local}. */\n LOCAL,\n /** An {@link Enum}. */\n ENUM,\n /** An {@link EnumValue}. */\n ENUMVALUE,\n /** A {@link FunctionPrototype}. */\n FUNCTION_PROTOTYPE,\n /** A {@link Function}. */\n FUNCTION,\n /** A {@link FunctionTarget}. */\n FUNCTION_TARGET,\n /** A {@link ClassPrototype}. */\n CLASS_PROTOTYPE,\n /** A {@link Class}. */\n CLASS,\n /** An {@link InterfacePrototype}. */\n INTERFACE_PROTOTYPE,\n /** An {@link Interface}. */\n INTERFACE,\n /** A {@link FieldPrototype}. */\n FIELD_PROTOTYPE,\n /** A {@link Field}. */\n FIELD,\n /** A {@link PropertyPrototype}. */\n PROPERTY_PROTOTYPE,\n /** A {@link Property}. */\n PROPERTY,\n /** A {@link Namespace}. */\n NAMESPACE,\n /** A {@link File}. */\n FILE,\n /** A {@link TypeDefinition}. */\n TYPEDEFINITION,\n}\n\n/** Indicates built-in decorators that are present. */\nexport enum DecoratorFlags {\n /** No flags set. */\n NONE = 0,\n /** Is a program global. */\n GLOBAL = 1 << 0,\n /** Is a binary operator overload. */\n OPERATOR_BINARY = 1 << 1,\n /** Is a unary prefix operator overload. */\n OPERATOR_PREFIX = 1 << 2,\n /** Is a unary postfix operator overload. */\n OPERATOR_POSTFIX = 1 << 3,\n /** Is an unmanaged class. */\n UNMANAGED = 1 << 4,\n /** Is a sealed class. */\n SEALED = 1 << 5,\n /** Is always inlined. */\n INLINE = 1 << 6,\n /** Is using a different external name. */\n EXTERNAL = 1 << 7,\n /** Is a builtin. */\n BUILTIN = 1 << 8,\n /** Is compiled lazily. */\n LAZY = 1 << 9,\n /** Is considered unsafe code. */\n UNSAFE = 1 << 10\n}\n\n/** Translates a decorator kind to the respective decorator flag. */\nexport function decoratorKindToFlag(kind: DecoratorKind): DecoratorFlags {\n switch (kind) {\n case DecoratorKind.GLOBAL: return DecoratorFlags.GLOBAL;\n case DecoratorKind.OPERATOR:\n case DecoratorKind.OPERATOR_BINARY: return DecoratorFlags.OPERATOR_BINARY;\n case DecoratorKind.OPERATOR_PREFIX: return DecoratorFlags.OPERATOR_PREFIX;\n case DecoratorKind.OPERATOR_POSTFIX: return DecoratorFlags.OPERATOR_POSTFIX;\n case DecoratorKind.UNMANAGED: return DecoratorFlags.UNMANAGED;\n case DecoratorKind.SEALED: return DecoratorFlags.SEALED;\n case DecoratorKind.INLINE: return DecoratorFlags.INLINE;\n case DecoratorKind.EXTERNAL: return DecoratorFlags.EXTERNAL;\n case DecoratorKind.BUILTIN: return DecoratorFlags.BUILTIN;\n case DecoratorKind.LAZY: return DecoratorFlags.LAZY;\n case DecoratorKind.UNSAFE: return DecoratorFlags.UNSAFE;\n default: return DecoratorFlags.NONE;\n }\n}\n\n/** Base class of all program elements. */\nexport abstract class Element {\n\n /** Parent element. */\n parent: Element;\n /** Common flags indicating specific traits. */\n flags: CommonFlags = CommonFlags.NONE;\n /** Decorator flags indicating annotated traits. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE;\n /** Member elements. */\n members: Map | null = null;\n /** Shadowing type in type space, if any. */\n shadowType: TypeDefinition | null = null;\n\n /** Constructs a new program element. */\n protected constructor(\n /** Specific element kind. */\n public kind: ElementKind,\n /** Simple name. */\n public name: string,\n /** Internal name referring to this element. */\n public internalName: string,\n /** Containing {@link Program}. */\n public program: Program,\n /** Parent element. */\n parent: Element | null\n ) {\n this.program = program;\n this.name = name;\n this.internalName = internalName;\n if (parent) {\n this.parent = parent;\n } else {\n assert(this.kind == ElementKind.FILE);\n this.parent = this; // special case to keep this.parent non-nullable\n }\n }\n\n /** Gets the enclosing file. */\n get file(): File {\n var current: Element = this;\n do if ((current = current.parent).kind == ElementKind.FILE) return current;\n while (true);\n }\n\n /** Tests if this element has a specific flag or flags. */\n is(flag: CommonFlags): bool { return (this.flags & flag) == flag; }\n /** Tests if this element has any of the specified flags. */\n isAny(flags: CommonFlags): bool { return (this.flags & flags) != 0; }\n /** Sets a specific flag or flags. */\n set(flag: CommonFlags): void { this.flags |= flag; }\n /** Unsets the specific flag or flags. */\n unset(flag: CommonFlags): void {this.flags &= ~flag; }\n /** Tests if this element has a specific decorator flag or flags. */\n hasDecorator(flag: DecoratorFlags): bool { return (this.decoratorFlags & flag) == flag; }\n\n /** Looks up the element with the specified name within this element. */\n lookupInSelf(name: string): DeclaredElement | null {\n var members = this.members;\n if (members && members.has(name)) return members.get(name)!;\n return null;\n }\n\n /** Looks up the element with the specified name relative to this element, like in JS. */\n abstract lookup(name: string): Element | null;\n\n /** Adds an element as a member of this one. Reports and returns `false` if a duplicate. */\n add(name: string, element: DeclaredElement): bool {\n var originalDeclaration = element.declaration;\n var members = this.members;\n if (!members) this.members = members = new Map();\n else if (members.has(name)) {\n let actual = members.get(name)!;\n if (actual.parent !== this) {\n // override non-own element\n } else {\n let merged = tryMerge(actual, element);\n if (merged) {\n element = merged; // use merged element\n } else {\n this.program.error(\n DiagnosticCode.Duplicate_identifier_0,\n element.identifierNode.range, element.identifierNode.text\n );\n return false;\n }\n }\n }\n members.set(name, element);\n var program = this.program;\n if (element.kind != ElementKind.FUNCTION_PROTOTYPE || !(element).isBound) {\n // prefer unbound prototypes in global lookup maps\n program.elementsByName.set(element.internalName, element);\n program.elementsByDeclaration.set(originalDeclaration, element);\n }\n return true;\n }\n\n /** Returns a string representation of this element. */\n toString(): string {\n return ElementKind[this.kind] + \":\" + this.internalName;\n }\n}\n\n/** Base class of elements with an associated declaration statement. */\nexport abstract class DeclaredElement extends Element {\n\n /** Constructs a new declared program element. */\n protected constructor(\n /** Specific element kind. */\n kind: ElementKind,\n /** Simple name. */\n name: string,\n /** Internal name referring to this element. */\n internalName: string,\n /** Containing {@link Program}. */\n program: Program,\n /** Parent element. */\n parent: Element | null,\n /** Declaration reference. */\n public declaration: DeclarationStatement\n ) {\n super(kind, name, internalName, program, parent);\n // It is necessary to have access to identifiers of all members and exports\n // for reporting purposes and this is the lowest common denominator. Comes\n // at the expense of not having more specific type information in derived\n // classes, though. Instead, derived classes implement getters for other\n // important AST nodes directly through manual casting, allowing the resolver\n // etc. to not worry about actual declarations.\n this.declaration = declaration;\n this.flags = declaration.flags; // inherit\n }\n\n /** Tests if this element is a library element. */\n get isDeclaredInLibrary(): bool {\n return this.declaration.range.source.isLibrary;\n }\n\n /** Gets the associated identifier node. */\n get identifierNode(): IdentifierExpression {\n return this.declaration.name;\n }\n\n /** Gets the assiciated decorator nodes. */\n get decoratorNodes(): DecoratorNode[] | null {\n return this.declaration.decorators;\n }\n}\n\n/** Base class of elements that can be resolved to a concrete type. */\nexport abstract class TypedElement extends DeclaredElement {\n\n /** Resolved type. Set once `is(RESOLVED)`, otherwise void. */\n type: Type = Type.void;\n\n /** Sets the resolved type of this element. */\n setType(type: Type): void {\n assert(!this.is(CommonFlags.RESOLVED));\n this.type = type;\n this.set(CommonFlags.RESOLVED);\n }\n}\n\n/** A file representing the implicit top-level namespace of a source. */\nexport class File extends Element {\n\n /** File exports. */\n exports: Map | null = null;\n /** File re-exports. */\n exportsStar: File[] | null = null;\n /** Top-level start function of this file. */\n startFunction: Function;\n\n /** Constructs a new file. */\n constructor(\n /** Program this file belongs to. */\n program: Program,\n /** Source of this file. */\n public source: Source\n ) {\n super(\n ElementKind.FILE,\n source.normalizedPath,\n source.internalPath,\n program,\n null // special case for files\n );\n this.source = source;\n assert(!program.filesByName.has(this.internalName));\n program.filesByName.set(this.internalName, this);\n var startFunction = this.program.makeNativeFunction(\n \"start:\" + this.internalName,\n new Signature(program, null, Type.void),\n this\n );\n startFunction.internalName = startFunction.name;\n this.startFunction = startFunction;\n }\n\n /* @override */\n add(name: string, element: DeclaredElement, isImport: bool = false): bool {\n if (element.hasDecorator(DecoratorFlags.GLOBAL)) {\n element = this.program.ensureGlobal(name, element); // possibly merged globally\n }\n if (!super.add(name, element)) return false;\n element = assert(this.lookupInSelf(name)); // possibly merged locally\n if (element.is(CommonFlags.EXPORT) && !isImport) {\n this.ensureExport(\n element.name,\n element\n );\n }\n return true;\n }\n\n /* @override */\n lookupInSelf(name: string): DeclaredElement | null {\n var element = super.lookupInSelf(name);\n if (element) return element;\n var exportsStar = this.exportsStar;\n if (exportsStar) {\n for (let i = 0, k = exportsStar.length; i < k; ++i) {\n if (element = exportsStar[i].lookupInSelf(name)) return element;\n }\n }\n return null;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n var element = this.lookupInSelf(name);\n if (element) return element;\n return this.program.lookupGlobal(name);\n }\n\n /** Ensures that an element is an export of this file. */\n ensureExport(name: string, element: DeclaredElement): void {\n var exports = this.exports;\n if (!exports) this.exports = exports = new Map();\n exports.set(name, element);\n if (this.source.sourceKind == SourceKind.LIBRARY_ENTRY) this.program.ensureGlobal(name, element);\n }\n\n /** Ensures that another file is a re-export of this file. */\n ensureExportStar(file: File): void {\n var exportsStar = this.exportsStar;\n if (!exportsStar) this.exportsStar = exportsStar = [];\n else if (exportsStar.includes(file)) return;\n exportsStar.push(file);\n }\n\n /** Looks up the export of the specified name. */\n lookupExport(name: string): DeclaredElement | null {\n var exports = this.exports;\n if (exports && exports.has(name)) return exports.get(name)!;\n var exportsStar = this.exportsStar;\n if (exportsStar) {\n for (let i = 0, k = exportsStar.length; i < k; ++i) {\n let element = exportsStar[i].lookupExport(name);\n if (element) return element;\n }\n }\n return null;\n }\n\n /** Creates an imported namespace from this file. */\n asImportedNamespace(name: string, parent: Element): Namespace {\n var ns = new Namespace(\n name,\n parent,\n this.program.makeNativeNamespaceDeclaration(name)\n );\n var exports = this.exports;\n if (exports) {\n for (let [memberName, member] of exports) {\n ns.add(memberName, member);\n }\n }\n return ns;\n }\n}\n\n/** A type definition. */\nexport class TypeDefinition extends TypedElement {\n\n /** Constructs a new type definition. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent element, usually a file or namespace. */\n parent: Element,\n /** Declaration reference. */\n declaration: TypeDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.TYPEDEFINITION,\n name,\n mangleInternalName(name, parent, false),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n\n /** Gets the associated type parameter nodes. */\n get typeParameterNodes(): TypeParameterNode[] | null {\n return (this.declaration).typeParameters;\n }\n\n /** Gets the associated type node. */\n get typeNode(): TypeNode {\n return (this.declaration).type;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A namespace that differs from a file in being user-declared with a name. */\nexport class Namespace extends DeclaredElement {\n\n /** Constructs a new namespace. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent element, usually a file or another namespace. */\n parent: Element,\n /** Declaration reference. */\n declaration: NamespaceDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.NAMESPACE,\n name,\n mangleInternalName(name, parent, false),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.lookupInSelf(name)\n || this.parent.lookup(name);\n }\n}\n\n/** An enum. */\nexport class Enum extends TypedElement {\n\n /** Constructs a new enum. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent element, usually a file or namespace. */\n parent: Element,\n /** Declaration reference. */\n declaration: EnumDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.ENUM,\n name,\n mangleInternalName(name, parent, false),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n this.setType(Type.i32);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.lookupInSelf(name)\n || this.parent.lookup(name);\n }\n}\n\n/** Indicates the kind of an inlined constant value. */\nexport const enum ConstantValueKind {\n /** No constant value. */\n NONE,\n /** Constant integer value. */\n INTEGER,\n /** Constant float value. */\n FLOAT\n}\n\n/** Base class of all variable-like program elements. */\nexport abstract class VariableLikeElement extends TypedElement {\n\n /** Constant value kind. */\n constantValueKind: ConstantValueKind = ConstantValueKind.NONE;\n /** Constant integer value, if applicable. */\n constantIntegerValue: I64;\n /** Constant float value, if applicable. */\n constantFloatValue: f64;\n\n /** Constructs a new variable-like element. */\n protected constructor(\n /** Specific element kind. */\n kind: ElementKind,\n /** Simple name. */\n name: string,\n /** Parent element, usually a file, namespace or class. */\n parent: Element,\n /** Declaration reference. Creates a native declaration if omitted. */\n declaration: VariableLikeDeclarationStatement = parent.program.makeNativeVariableDeclaration(name)\n ) {\n super(\n kind,\n name,\n mangleInternalName(name, parent, false),\n parent.program,\n parent,\n declaration\n );\n this.flags = declaration.flags;\n }\n\n /** Gets the associated type node.s */\n get typeNode(): TypeNode | null {\n return (this.declaration).type;\n }\n\n /** Gets the associated initializer node. */\n get initializerNode(): Expression | null {\n return (this.declaration).initializer;\n }\n\n /** Applies a constant integer value to this element. */\n setConstantIntegerValue(value: I64, type: Type): void {\n assert(type.is(TypeFlags.INTEGER));\n this.type = type;\n this.constantValueKind = ConstantValueKind.INTEGER;\n this.constantIntegerValue = value;\n this.set(CommonFlags.CONST | CommonFlags.INLINED | CommonFlags.RESOLVED);\n }\n\n /** Applies a constant float value to this element. */\n setConstantFloatValue(value: f64, type: Type): void {\n assert(type.is(TypeFlags.FLOAT));\n this.type = type;\n this.constantValueKind = ConstantValueKind.FLOAT;\n this.constantFloatValue = value;\n this.set(CommonFlags.CONST | CommonFlags.INLINED | CommonFlags.RESOLVED);\n }\n\n /** @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** An enum value. */\nexport class EnumValue extends VariableLikeElement {\n\n /** Constructs a new enum value. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent enum. */\n parent: Enum,\n /** Declaration reference. */\n declaration: EnumValueDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.ENUMVALUE,\n name,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n this.setType(Type.i32);\n }\n\n /** Whether this enum value is immutable. */\n isImmutable: bool = false;\n\n /** Gets the associated value node. */\n get valueNode(): Expression | null {\n return (this.declaration).value;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A global variable. */\nexport class Global extends VariableLikeElement {\n\n /** Constructs a new global variable. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent element, usually a file, namespace or static class. */\n parent: Element,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags,\n /** Declaration reference. Creates a native declaration if omitted. */\n declaration: VariableLikeDeclarationStatement = parent.program.makeNativeVariableDeclaration(name)\n ) {\n super(\n ElementKind.GLOBAL,\n name,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n}\n\n/** A function parameter. */\nexport class Parameter {\n /** Constructs a new function parameter. */\n constructor(\n /** Parameter name. */\n public name: string,\n /** Parameter type. */\n public type: Type,\n /** Parameter initializer, if present. */\n public initializer: Expression | null = null\n ) {}\n}\n\n/** A local variable. */\nexport class Local extends VariableLikeElement {\n\n /** Constructs a new local variable. */\n constructor(\n /** Simple name. */\n name: string,\n /** Zero-based index within the enclosing function. `-1` indicates a virtual local. */\n public index: i32,\n /** Resolved type. */\n type: Type,\n /** Parent function. */\n parent: Function,\n /** Declaration reference. */\n declaration: VariableLikeDeclarationStatement = parent.program.makeNativeVariableDeclaration(name)\n ) {\n super(\n ElementKind.LOCAL,\n name,\n parent,\n declaration\n );\n this.index = index;\n assert(type != Type.void);\n this.setType(type);\n }\n}\n\n/** A yet unresolved function prototype. */\nexport class FunctionPrototype extends DeclaredElement {\n\n /** Operator kind, if an overload. */\n operatorKind: OperatorKind = OperatorKind.INVALID;\n /** Already resolved instances. */\n instances: Map | null = null;\n\n /** Clones of this prototype that are bounds to specific classes. */\n private boundPrototypes: Map | null = null;\n\n /** Constructs a new function prototype. */\n constructor(\n /** Simple name */\n name: string,\n /** Parent element, usually a file, namespace or class (if a method). */\n parent: Element,\n /** Declaration reference. */\n declaration: FunctionDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.FUNCTION_PROTOTYPE,\n name,\n mangleInternalName(name, parent, declaration.is(CommonFlags.INSTANCE)),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n\n /** Gets the associated type parameter nodes. */\n get typeParameterNodes(): TypeParameterNode[] | null {\n return (this.declaration).typeParameters;\n }\n\n /** Gets the associated function type node. */\n get functionTypeNode(): FunctionTypeNode {\n return (this.declaration).signature;\n }\n\n /** Gets the associated body node. */\n get bodyNode(): Statement | null {\n return (this.declaration).body;\n }\n\n /** Gets the arrow function kind. */\n get arrowKind(): ArrowKind {\n return (this.declaration).arrowKind;\n }\n\n /** Tests if this prototype is bound to a class. */\n get isBound(): bool {\n var parent = this.parent;\n return parent.kind == ElementKind.CLASS\n || parent.kind == ElementKind.PROPERTY_PROTOTYPE && parent.parent.kind == ElementKind.CLASS;\n }\n\n /** Creates a clone of this prototype that is bound to a concrete class instead. */\n toBound(classInstance: Class): FunctionPrototype {\n assert(this.is(CommonFlags.INSTANCE));\n assert(!this.isBound);\n var boundPrototypes = this.boundPrototypes;\n if (!boundPrototypes) this.boundPrototypes = boundPrototypes = new Map();\n else if (boundPrototypes.has(classInstance)) return boundPrototypes.get(classInstance)!;\n var declaration = this.declaration; assert(declaration.kind == NodeKind.METHODDECLARATION);\n var bound = new FunctionPrototype(\n this.name,\n classInstance, // !\n declaration,\n this.decoratorFlags\n );\n bound.flags = this.flags;\n bound.operatorKind = this.operatorKind;\n // NOTE: this.instances holds instances per bound class / unbound\n boundPrototypes.set(classInstance, bound);\n return bound;\n }\n\n /** Gets the resolved instance for the specified instance key, if already resolved. */\n getResolvedInstance(instanceKey: string): Function | null {\n var instances = this.instances;\n if (instances && instances.has(instanceKey)) return instances.get(instanceKey);\n return null;\n }\n\n /** Sets the resolved instance for the specified instance key. */\n setResolvedInstance(instanceKey: string, instance: Function): void {\n var instances = this.instances;\n if (!instances) this.instances = instances = new Map();\n else assert(!instances.has(instanceKey));\n instances.set(instanceKey, instance);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A resolved function. */\nexport class Function extends TypedElement {\n\n /** Function prototype. */\n prototype: FunctionPrototype;\n /** Function signature. */\n signature: Signature;\n /** Map of locals by name. */\n localsByName: Map = new Map();\n /** Array of locals by index. */\n localsByIndex: Local[] = [];\n /** List of additional non-parameter locals. */\n additionalLocals: Type[] = [];\n /** Contextual type arguments. */\n contextualTypeArguments: Map | null;\n /** Default control flow. */\n flow: Flow;\n /** Remembered debug locations. */\n debugLocations: Range[] = [];\n /** Function reference, if compiled. */\n ref: FunctionRef = 0;\n /** Function table index, if any. */\n functionTableIndex: i32 = -1;\n /** Trampoline function for calling with omitted arguments. */\n trampoline: Function | null = null;\n\n /** Counting id of inline operations involving this function. */\n nextInlineId: i32 = 0;\n /** Counting id of anonymous inner functions. */\n nextAnonymousId: i32 = 0;\n /** Counting id of autorelease variables. */\n nextAutoreleaseId: i32 = 0;\n\n /** Constructs a new concrete function. */\n constructor(\n /** Name incl. type parameters, i.e. `foo`. */\n nameInclTypeParameters: string,\n /** Respective function prototype. */\n prototype: FunctionPrototype,\n /** Concrete signature. */\n signature: Signature, // pre-resolved\n /** Contextual type arguments inherited from its parent class, if any. */\n contextualTypeArguments: Map | null = null\n ) {\n super(\n ElementKind.FUNCTION,\n nameInclTypeParameters,\n mangleInternalName(nameInclTypeParameters, prototype.parent, prototype.is(CommonFlags.INSTANCE)),\n prototype.program,\n prototype.parent,\n prototype.declaration\n );\n this.prototype = prototype;\n this.signature = signature;\n this.flags = prototype.flags | CommonFlags.RESOLVED;\n this.decoratorFlags = prototype.decoratorFlags;\n this.contextualTypeArguments = contextualTypeArguments;\n this.type = Type.u32.asFunction(signature);\n if (!prototype.is(CommonFlags.AMBIENT)) {\n let localIndex = 0;\n if (this.is(CommonFlags.INSTANCE)) {\n let local = new Local(\n CommonSymbols.this_,\n localIndex++,\n assert(signature.thisType),\n this\n );\n this.localsByName.set(CommonSymbols.this_, local);\n this.localsByIndex[local.index] = local;\n }\n let parameterTypes = signature.parameterTypes;\n for (let i = 0, k = parameterTypes.length; i < k; ++i) {\n let parameterType = parameterTypes[i];\n let parameterName = signature.getParameterName(i);\n let local = new Local(\n parameterName,\n localIndex++,\n parameterType,\n this\n );\n this.localsByName.set(parameterName, local);\n this.localsByIndex[local.index] = local;\n }\n }\n this.flow = Flow.create(this);\n registerConcreteElement(this.program, this);\n }\n\n /** Adds a local of the specified type, with an optional name. */\n addLocal(type: Type, name: string | null = null, declaration: VariableDeclaration | null = null): Local {\n // if it has a name, check previously as this method will throw otherwise\n var localIndex = this.signature.parameterTypes.length + this.additionalLocals.length;\n if (this.is(CommonFlags.INSTANCE)) ++localIndex;\n var localName = name !== null\n ? name\n : \"var$\" + localIndex.toString();\n var local = new Local(\n localName,\n localIndex,\n type,\n this,\n declaration || this.program.makeNativeVariableDeclaration(localName)\n );\n if (name) {\n if (this.localsByName.has(name)) throw new Error(\"duplicate local name\");\n this.localsByName.set(name, local);\n }\n this.localsByIndex[local.index] = local;\n this.additionalLocals.push(type);\n return local;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n var locals = this.localsByName;\n if (locals.has(name)) return locals.get(name);\n return this.parent.lookup(name);\n }\n\n // used by flows to keep track of temporary locals\n tempI32s: Local[] | null = null;\n tempI64s: Local[] | null = null;\n tempF32s: Local[] | null = null;\n tempF64s: Local[] | null = null;\n tempV128s: Local[] | null = null;\n\n // used by flows to keep track of break labels\n nextBreakId: i32 = 0;\n breakStack: i32[] | null = null;\n breakLabel: string | null = null;\n\n /** Finalizes the function once compiled, releasing no longer needed resources. */\n finalize(module: Module, ref: FunctionRef): void {\n this.ref = ref;\n assert(!this.breakStack || !this.breakStack.length); // internal error\n this.breakStack = null;\n this.breakLabel = null;\n this.tempI32s = this.tempI64s = this.tempF32s = this.tempF64s = null;\n if (this.program.options.sourceMap) {\n let debugLocations = this.debugLocations;\n for (let i = 0, k = debugLocations.length; i < k; ++i) {\n let debugLocation = debugLocations[i];\n module.setDebugLocation(\n ref,\n debugLocation.debugInfoRef,\n debugLocation.source.debugInfoIndex,\n debugLocation.line,\n debugLocation.column\n );\n }\n }\n }\n}\n\n/** A resolved function target, that is a function called indirectly by an index and signature. */\nexport class FunctionTarget extends Element {\n\n /** Underlying signature. */\n signature: Signature;\n /** Function type. */\n type: Type;\n\n /** Constructs a new function target. */\n constructor(\n /** Concrete signature. */\n signature: Signature,\n /** Program reference. */\n program: Program,\n __s: string = \"\" // FIXME: current TS limitation workaround, but a fix seems underway\n ) {\n super(\n ElementKind.FUNCTION_TARGET,\n __s = \"sig:\" + signature.toSignatureString(),\n __s,\n program,\n program.nativeFile\n );\n this.signature = signature;\n this.flags = CommonFlags.RESOLVED;\n this.type = Type.u32.asFunction(signature);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return null;\n }\n}\n\n/** A yet unresolved instance field prototype. */\nexport class FieldPrototype extends DeclaredElement {\n\n /** Constructs a new field prototype. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent class. */\n parent: ClassPrototype,\n /** Declaration reference. */\n declaration: FieldDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE\n ) {\n super(\n ElementKind.FIELD_PROTOTYPE,\n name,\n mangleInternalName(name, parent, assert(declaration.is(CommonFlags.INSTANCE))),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n\n /** Gets the associated type node. */\n get typeNode(): TypeNode | null {\n return (this.declaration).type;\n }\n\n /** Gets the associated initializer node. */\n get initializerNode(): Expression | null {\n return (this.declaration).initializer;\n }\n\n /** Gets the associated parameter index. Set if declared as a constructor parameter, otherwise `-1`. */\n get parameterIndex(): i32 {\n return (this.declaration).parameterIndex;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A resolved instance field. */\nexport class Field extends VariableLikeElement {\n\n /** Field prototype reference. */\n prototype: FieldPrototype;\n /** Field memory offset, if an instance field. */\n memoryOffset: i32 = -1;\n\n /** Constructs a new field. */\n constructor(\n /** Respective field prototype. */\n prototype: FieldPrototype,\n /** Parent class. */\n parent: Class,\n /** Concrete type. */\n type: Type\n ) {\n super(\n ElementKind.FIELD,\n prototype.name,\n parent,\n prototype.declaration\n );\n this.prototype = prototype;\n this.flags = prototype.flags;\n this.decoratorFlags = prototype.decoratorFlags;\n assert(type != Type.void);\n this.setType(type);\n registerConcreteElement(this.program, this);\n }\n}\n\n/** A property comprised of a getter and a setter function. */\nexport class PropertyPrototype extends DeclaredElement {\n\n /** Getter prototype. */\n getterPrototype: FunctionPrototype | null = null;\n /** Setter prototype. */\n setterPrototype: FunctionPrototype | null = null;\n\n /** Constructs a new property prototype. */\n constructor(\n /** Simple name. */\n name: string,\n /** Parent class. */\n parent: ClassPrototype,\n /** Declaration of the getter or setter introducing the property. */\n firstDeclaration: FunctionDeclaration\n ) {\n super(\n ElementKind.PROPERTY_PROTOTYPE,\n name,\n mangleInternalName(name, parent, firstDeclaration.is(CommonFlags.INSTANCE)),\n parent.program,\n parent,\n firstDeclaration\n );\n this.flags &= ~(CommonFlags.GET | CommonFlags.SET);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A resolved property. */\nexport class Property extends VariableLikeElement {\n\n /** Prototype reference. */\n prototype: PropertyPrototype;\n /** Getter instance. */\n getterInstance: Function | null = null;\n /** Setter instance. */\n setterInstance: Function | null = null;\n\n /** Constructs a new property prototype. */\n constructor(\n /** Respective property prototype. */\n prototype: PropertyPrototype,\n /** Parent element, usually a static class prototype or class instance. */\n parent: Element\n ) {\n super(\n ElementKind.PROPERTY,\n prototype.name,\n parent,\n prototype.program.makeNativeVariableDeclaration(\n prototype.name,\n prototype.is(CommonFlags.INSTANCE)\n ? CommonFlags.INSTANCE\n : CommonFlags.NONE\n )\n );\n this.prototype = prototype;\n this.flags = prototype.flags;\n this.decoratorFlags = prototype.decoratorFlags;\n registerConcreteElement(this.program, this);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\n/** A yet unresolved class prototype. */\nexport class ClassPrototype extends DeclaredElement {\n\n /** Instance member prototypes. */\n instanceMembers: Map | null = null;\n /** Base class prototype, if applicable. */\n basePrototype: ClassPrototype | null = null; // set in Program#initialize\n /** Constructor prototype. */\n constructorPrototype: FunctionPrototype | null = null;\n /** Operator overload prototypes. */\n overloadPrototypes: Map = new Map();\n /** Already resolved instances. */\n instances: Map | null = null;\n\n constructor(\n /** Simple name. */\n name: string,\n /** Parent element, usually a file or namespace. */\n parent: Element,\n /** Declaration reference. */\n declaration: ClassDeclaration,\n /** Pre-checked flags indicating built-in decorators. */\n decoratorFlags: DecoratorFlags = DecoratorFlags.NONE,\n _isInterface: bool = false // FIXME\n ) {\n super(\n _isInterface ? ElementKind.INTERFACE_PROTOTYPE : ElementKind.CLASS_PROTOTYPE,\n name,\n mangleInternalName(name, parent, declaration.is(CommonFlags.INSTANCE)),\n parent.program,\n parent,\n declaration\n );\n this.decoratorFlags = decoratorFlags;\n }\n\n /** Gets the associated type parameter nodes. */\n get typeParameterNodes(): TypeParameterNode[] | null {\n return (this.declaration).typeParameters;\n }\n /** Gets the associated extends node. */\n get extendsNode(): NamedTypeNode | null {\n return (this.declaration).extendsType;\n }\n /** Gets the associated implements nodes. */\n get implementsNodes(): NamedTypeNode[] | null {\n return (this.declaration).implementsTypes;\n }\n\n /** Tests if this prototype is of a builtin array type (Array/TypedArray). */\n get isBuiltinArray(): bool {\n var arrayBufferViewInstance = this.program.arrayBufferViewInstance;\n return arrayBufferViewInstance !== null\n && this.extends(arrayBufferViewInstance.prototype);\n }\n\n /** Tests if this prototype extends the specified. */\n extends(basePtototype: ClassPrototype | null): bool {\n var current: ClassPrototype | null = this;\n do if (current === basePtototype) return true;\n while (current = current.basePrototype);\n return false;\n }\n\n /** Adds an element as an instance member of this one. Returns the previous element if a duplicate. */\n addInstance(name: string, element: DeclaredElement): bool {\n var originalDeclaration = element.declaration;\n var instanceMembers = this.instanceMembers;\n if (!instanceMembers) this.instanceMembers = instanceMembers = new Map();\n else if (instanceMembers.has(name)) {\n let merged = tryMerge(instanceMembers.get(name)!, element);\n if (!merged) {\n this.program.error(\n DiagnosticCode.Duplicate_identifier_0,\n element.identifierNode.range, element.identifierNode.text\n );\n return false;\n }\n element = merged;\n }\n instanceMembers.set(name, element);\n if (element.is(CommonFlags.EXPORT) && this.is(CommonFlags.MODULE_EXPORT)) {\n element.set(CommonFlags.MODULE_EXPORT); // propagate\n }\n this.program.elementsByDeclaration.set(originalDeclaration, element);\n return true;\n }\n\n /** Gets the resolved instance for the specified instance key, if already resolved. */\n getResolvedInstance(instanceKey: string): Class | null {\n var instances = this.instances;\n if (instances && instances.has(instanceKey)) return instances.get(instanceKey);\n return null;\n }\n\n /** Sets the resolved instance for the specified instance key. */\n setResolvedInstance(instanceKey: string, instance: Class): void {\n var instances = this.instances;\n if (!instances) this.instances = instances = new Map();\n else assert(!instances.has(instanceKey));\n instances.set(instanceKey, instance);\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n}\n\nconst enum AcyclicState {\n UNKNOWN,\n ACYCLIC,\n NOT_ACYCLIC\n}\n\n/** A resolved class. */\nexport class Class extends TypedElement {\n\n /** Class prototype. */\n prototype: ClassPrototype;\n /** Resolved type arguments. */\n typeArguments: Type[] | null;\n /** Base class, if applicable. */\n base: Class | null;\n /** Contextual type arguments for fields and methods. */\n contextualTypeArguments: Map | null = null;\n /** Current member memory offset. */\n currentMemoryOffset: u32 = 0;\n /** Constructor instance. */\n constructorInstance: Function | null = null;\n /** Operator overloads. */\n overloads: Map | null = null;\n /** Unique class id. */\n private _id: u32 = 0;\n /** Remembers acyclic state. */\n private _acyclic: AcyclicState = AcyclicState.UNKNOWN;\n /** Runtime type information flags. */\n rttiFlags: u32 = 0;\n\n /** Gets the unique runtime id of this class. */\n get id(): u32 {\n return this._id; // unmanaged remains 0 (=ArrayBuffer)\n }\n\n /** Tests if this class is of a builtin array type (Array/TypedArray). */\n get isBuiltinArray(): bool {\n return this.prototype.isBuiltinArray;\n }\n\n /** Tests if this class is array-like. */\n get isArrayLike(): bool {\n if (this.isBuiltinArray) return true;\n var lengthField = this.lookupInSelf(\"length\");\n return lengthField !== null && (\n lengthField.kind == ElementKind.FIELD ||\n (\n lengthField.kind == ElementKind.PROPERTY &&\n (lengthField).getterInstance !== null // TODO: resolve & check type?\n )\n ) && (\n this.lookupOverload(OperatorKind.INDEXED_GET) !== null ||\n this.lookupOverload(OperatorKind.UNCHECKED_INDEXED_GET) !== null\n );\n }\n\n /** Constructs a new class. */\n constructor(\n /** Name incl. type parameters, i.e. `Foo`. */\n nameInclTypeParameters: string,\n /** The respective class prototype. */\n prototype: ClassPrototype,\n /** Concrete type arguments, if any. */\n typeArguments: Type[] | null = null,\n /** Base class, if derived. */\n base: Class | null = null,\n _isInterface: bool = false // FIXME\n ) {\n super(\n _isInterface ? ElementKind.INTERFACE : ElementKind.CLASS,\n nameInclTypeParameters,\n mangleInternalName(nameInclTypeParameters, prototype.parent, prototype.is(CommonFlags.INSTANCE)),\n prototype.program,\n prototype.parent,\n prototype.declaration\n );\n var program = this.program;\n this.prototype = prototype;\n this.flags = prototype.flags;\n this.decoratorFlags = prototype.decoratorFlags;\n this.typeArguments = typeArguments;\n this.setType(program.options.usizeType.asClass(this));\n this.base = base;\n\n if (!this.hasDecorator(DecoratorFlags.UNMANAGED)) {\n let id = program.nextClassId++;\n this._id = id;\n program.managedClasses.set(id, this);\n }\n\n // inherit static members and contextual type arguments from base class\n if (base) {\n let inheritedTypeArguments = base.contextualTypeArguments;\n if (inheritedTypeArguments) {\n let contextualTypeArguments = this.contextualTypeArguments;\n for (let [baseName, baseType] of inheritedTypeArguments) {\n if (!contextualTypeArguments) this.contextualTypeArguments = contextualTypeArguments = new Map();\n contextualTypeArguments.set(baseName, baseType);\n }\n }\n }\n\n // apply pre-checked instance-specific contextual type arguments\n var typeParameters = prototype.typeParameterNodes;\n if (typeArguments) {\n let numTypeArguments = typeArguments.length;\n if (!typeParameters || numTypeArguments != typeParameters.length) {\n throw new Error(\"type argument count mismatch\");\n }\n if (numTypeArguments) {\n if (!this.contextualTypeArguments) this.contextualTypeArguments = new Map();\n for (let i = 0; i < numTypeArguments; ++i) {\n this.contextualTypeArguments.set(typeParameters[i].name.text, typeArguments[i]);\n }\n }\n } else if (typeParameters && typeParameters.length) {\n throw new Error(\"type argument count mismatch\");\n }\n registerConcreteElement(program, this);\n }\n\n /** Tests if a value of this class type is assignable to a target of the specified class type. */\n isAssignableTo(target: Class): bool {\n var current: Class | null = this;\n do if (current == target) return true;\n while (current = current.base);\n return false;\n }\n\n /** Looks up the operator overload of the specified kind. */\n lookupOverload(kind: OperatorKind, unchecked: bool = false): Function | null {\n if (unchecked) {\n switch (kind) {\n case OperatorKind.INDEXED_GET: {\n let uncheckedOverload = this.lookupOverload(OperatorKind.UNCHECKED_INDEXED_GET);\n if (uncheckedOverload) return uncheckedOverload;\n break;\n }\n case OperatorKind.INDEXED_SET: {\n let uncheckedOverload = this.lookupOverload(OperatorKind.UNCHECKED_INDEXED_SET);\n if (uncheckedOverload) return uncheckedOverload;\n break;\n }\n default: assert(false);\n }\n }\n var instance: Class | null = this;\n do {\n let overloads = instance.overloads;\n if (overloads) {\n let overload = overloads.get(kind);\n if (overload) return overload;\n }\n } while (instance = instance.base);\n return null;\n }\n\n /* @override */\n lookup(name: string): Element | null {\n return this.parent.lookup(name);\n }\n\n /** Calculates the memory offset of the specified field. */\n offsetof(fieldName: string): u32 {\n var members = assert(this.members);\n assert(members.has(fieldName));\n var field = members.get(fieldName);\n assert(field.kind == ElementKind.FIELD);\n return (field).memoryOffset;\n }\n\n /** Writes a field value to a buffer and returns the number of bytes written. */\n writeField(name: string, value: T, buffer: Uint8Array, baseOffset: i32): i32 {\n var field = this.lookupInSelf(name);\n if (field && field.kind == ElementKind.FIELD) {\n let offset = baseOffset + (field).memoryOffset;\n switch ((field).type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: {\n writeI8(i32(value), buffer, offset);\n return 1;\n }\n case TypeKind.I16:\n case TypeKind.U16: {\n writeI16(i32(value), buffer, offset);\n return 2;\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n writeI32(i32(value), buffer, offset);\n return 4;\n }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n assert(!this.program.options.isWasm64); // TODO\n writeI32(i32(value), buffer, offset);\n return 4;\n }\n case TypeKind.F32: {\n writeF32(f32(value), buffer, offset);\n return 4;\n }\n case TypeKind.F64: {\n writeF64(f64(value), buffer, offset);\n return 8;\n }\n }\n }\n assert(false);\n return 0;\n }\n\n /** Tests if this class extends the specified prototype. */\n extends(prototype: ClassPrototype): bool {\n return this.prototype.extends(prototype);\n }\n\n /** Gets the concrete type arguments to the specified extendend prototype. */\n getTypeArgumentsTo(extendedPrototype: ClassPrototype): Type[] | null {\n var current: Class | null = this;\n do if (current.prototype === extendedPrototype) return current.typeArguments;\n while (current = current.base);\n return null;\n }\n\n /** Gets the value type of an array. Must be an array. */\n getArrayValueType(): Type {\n var current: Class = this;\n var program = this.program;\n var abvInstance = program.arrayBufferViewInstance;\n while (current.base !== abvInstance) {\n current = assert(current.base);\n }\n switch (current.prototype) {\n case program.i8ArrayPrototype: return Type.i8;\n case program.i16ArrayPrototype: return Type.i16;\n case program.i32ArrayPrototype: return Type.i32;\n case program.i64ArrayPrototype: return Type.i64;\n case program.u8ArrayPrototype:\n case program.u8ClampedArrayPrototype: return Type.u8;\n case program.u16ArrayPrototype: return Type.u16;\n case program.u32ArrayPrototype: return Type.u32;\n case program.u64ArrayPrototype: return Type.u64;\n case program.f32ArrayPrototype: return Type.f32;\n case program.f64ArrayPrototype: return Type.f64;\n case program.arrayPrototype: return assert(this.getTypeArgumentsTo(program.arrayPrototype))[0];\n default: assert(false);\n }\n return Type.void;\n }\n\n /** Tests if this class is inherently acyclic. */\n get isAcyclic(): bool {\n var acyclic = this._acyclic;\n if (acyclic == AcyclicState.UNKNOWN) {\n let hasCycle = this.cyclesTo(this);\n if (hasCycle) this._acyclic = acyclic = AcyclicState.NOT_ACYCLIC;\n else this._acyclic = acyclic = AcyclicState.ACYCLIC;\n }\n return acyclic == AcyclicState.ACYCLIC;\n }\n\n /** Tests if this class potentially forms a reference cycle to another one. */\n private cyclesTo(other: Class, except: Set = new Set()): bool {\n // TODO: The pure RC paper describes acyclic data structures as classes that may contain\n //\n // - scalars\n // - references to classes that are both acyclic and final (here: Java); and\n // - arrays (in our case: also sets, maps) of either of the above\n //\n // Our implementation, however, treats all objects that do not reference themselves directly\n // or indirectly as acylic, allowing them to contain inner cycles of other non-acyclic objects.\n // This contradicts the second assumption and must be revisited when actually implementing RC.\n\n if (except.has(this)) return false;\n except.add(this); // don't recurse indefinitely\n\n // Find out if any field references 'other' directly or indirectly\n var current: Class | null;\n var members = this.members;\n if (members) {\n for (let member of members.values()) {\n if (\n member.kind == ElementKind.FIELD &&\n (current = (member).type.classReference) !== null &&\n (\n current === other ||\n current.cyclesTo(other, except)\n )\n ) return true;\n }\n }\n\n // Do the same for non-field data\n var basePrototype: ClassPrototype | null;\n\n // Arrayother?>\n if ((basePrototype = this.program.arrayPrototype) && this.prototype.extends(basePrototype)) {\n let typeArguments = assert(this.getTypeArgumentsTo(basePrototype));\n assert(typeArguments.length == 1);\n if (\n (current = typeArguments[0].classReference) !== null &&\n (\n current === other ||\n current.cyclesTo(other, except)\n )\n ) return true;\n\n // Setother?>\n } else if ((basePrototype = this.program.setPrototype) && this.prototype.extends(basePrototype)) {\n let typeArguments = assert(this.getTypeArgumentsTo(basePrototype));\n assert(typeArguments.length == 1);\n if (\n (current = typeArguments[0].classReference) !== null &&\n (\n current === other ||\n current.cyclesTo(other, except)\n )\n ) return true;\n\n // Mapother?,V->other?>\n } else if ((basePrototype = this.program.mapPrototype) && this.prototype.extends(basePrototype)) {\n let typeArguments = assert(this.getTypeArgumentsTo(basePrototype));\n assert(typeArguments.length == 2);\n if (\n (current = typeArguments[0].classReference) !== null &&\n (\n current === other ||\n current.cyclesTo(other, except)\n )\n ) return true;\n if (\n (current = typeArguments[1].classReference) !== null &&\n (\n current === other ||\n current.cyclesTo(other, except)\n )\n ) return true;\n }\n return false;\n }\n}\n\n/** A yet unresolved interface. */\nexport class InterfacePrototype extends ClassPrototype { // FIXME\n\n /** Constructs a new interface prototype. */\n constructor(\n name: string,\n parent: Element,\n declaration: InterfaceDeclaration,\n decoratorFlags: DecoratorFlags\n ) {\n super(\n name,\n parent,\n declaration,\n decoratorFlags,\n true\n );\n }\n}\n\n/** A resolved interface. */\nexport class Interface extends Class { // FIXME\n\n /** Constructs a new interface. */\n constructor(\n nameInclTypeParameters: string,\n prototype: InterfacePrototype,\n typeArguments: Type[] = [],\n base: Interface | null = null\n ) {\n super(\n nameInclTypeParameters,\n prototype,\n typeArguments,\n base,\n true\n );\n }\n}\n\n/** Registers a concrete element with a program. */\nfunction registerConcreteElement(program: Program, element: Element): void {\n assert(!program.instancesByName.has(element.internalName));\n program.instancesByName.set(element.internalName, element);\n}\n\n/** Attempts to merge two elements. Returns the merged element on success. */\nfunction tryMerge(older: Element, newer: Element): DeclaredElement | null {\n // NOTE: some of the following cases are not supported by TS, not sure why exactly.\n // suggesting to just merge what seems to be possible for now and revisit later.\n assert(older.program === newer.program);\n assert(!newer.members);\n var merged: DeclaredElement | null = null;\n switch (older.kind) {\n case ElementKind.FUNCTION_PROTOTYPE: {\n switch (newer.kind) {\n case ElementKind.NAMESPACE: {\n copyMembers(newer, older);\n merged = older;\n break;\n }\n case ElementKind.TYPEDEFINITION: {\n if (!older.shadowType) {\n older.shadowType = newer;\n copyMembers(newer, older);\n merged = older;\n }\n break;\n }\n }\n break;\n }\n case ElementKind.CLASS_PROTOTYPE:\n case ElementKind.ENUM: {\n if (newer.kind == ElementKind.NAMESPACE) {\n copyMembers(newer, older);\n merged = older;\n break;\n }\n break;\n }\n case ElementKind.NAMESPACE: {\n switch (newer.kind) {\n case ElementKind.ENUM:\n case ElementKind.CLASS_PROTOTYPE: // TS2434\n case ElementKind.FUNCTION_PROTOTYPE: { // TS2434\n copyMembers(older, newer);\n merged = newer;\n break;\n }\n case ElementKind.NAMESPACE: {\n copyMembers(newer, older);\n merged = older;\n break;\n }\n case ElementKind.TYPEDEFINITION: {\n if (!older.shadowType) {\n older.shadowType = newer;\n copyMembers(newer, older);\n merged = older;\n }\n break;\n }\n }\n break;\n }\n case ElementKind.GLOBAL: {\n if (newer.kind == ElementKind.TYPEDEFINITION) {\n if (!older.shadowType) {\n older.shadowType = newer;\n copyMembers(newer, older);\n merged = older;\n }\n }\n break;\n }\n case ElementKind.TYPEDEFINITION: {\n switch (newer.kind) {\n case ElementKind.GLOBAL:\n case ElementKind.FUNCTION_PROTOTYPE:\n case ElementKind.NAMESPACE: {\n if (!newer.shadowType) {\n newer.shadowType = older;\n copyMembers(older, newer);\n merged = newer;\n }\n break;\n }\n }\n break;\n }\n }\n if (merged) {\n let olderIsExport = older.is(CommonFlags.EXPORT) || older.hasDecorator(DecoratorFlags.GLOBAL);\n let newerIsExport = newer.is(CommonFlags.EXPORT) || newer.hasDecorator(DecoratorFlags.GLOBAL);\n if (olderIsExport != newerIsExport) {\n older.program.error(\n DiagnosticCode.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local,\n merged.identifierNode.range, merged.identifierNode.text\n );\n }\n }\n return merged;\n}\n\n/** Copies the members of `src` to `dest`. */\nfunction copyMembers(src: Element, dest: Element): void {\n var srcMembers = src.members;\n if (srcMembers) {\n let destMembers = dest.members;\n if (!destMembers) dest.members = destMembers = new Map();\n for (let [memberName, member] of srcMembers) {\n destMembers.set(memberName, member);\n }\n }\n}\n\n/** Mangles the internal name of an element with the specified name that is a child of the given parent. */\nexport function mangleInternalName(name: string, parent: Element, isInstance: bool, asGlobal: bool = false): string {\n switch (parent.kind) {\n case ElementKind.FILE: {\n if (asGlobal) return name;\n return parent.internalName + PATH_DELIMITER + name;\n }\n case ElementKind.FUNCTION: {\n if (asGlobal) return name;\n assert(!isInstance);\n return parent.internalName + INNER_DELIMITER + name;\n }\n default: {\n return mangleInternalName(parent.name, parent.parent, parent.is(CommonFlags.INSTANCE), asGlobal)\n + (isInstance ? INSTANCE_DELIMITER : STATIC_DELIMITER) + name;\n }\n }\n}\n","/**\n * A thin wrapper around Binaryen's C-API.\n * @module module\n *//***/\n\nimport { Target } from \"./common\";\n\nexport type ModuleRef = usize;\nexport type FunctionTypeRef = usize;\nexport type FunctionRef = usize;\nexport type ExpressionRef = usize;\nexport type GlobalRef = usize;\nexport type ImportRef = usize;\nexport type ExportRef = usize;\nexport type RelooperRef = usize;\nexport type RelooperBlockRef = usize;\nexport type Index = u32;\n\nexport enum NativeType {\n None = _BinaryenTypeNone(),\n I32 = _BinaryenTypeInt32(),\n I64 = _BinaryenTypeInt64(),\n F32 = _BinaryenTypeFloat32(),\n F64 = _BinaryenTypeFloat64(),\n V128 = _BinaryenTypeVec128(),\n Unreachable = _BinaryenTypeUnreachable(),\n Auto = _BinaryenTypeAuto()\n}\n\nexport enum FeatureFlags {\n Atomics = _BinaryenFeatureAtomics(),\n MutableGloabls = _BinaryenFeatureMutableGlobals(),\n NontrappingFPToInt = _BinaryenFeatureNontrappingFPToInt(),\n SIMD128 = _BinaryenFeatureSIMD128(),\n BulkMemory = _BinaryenFeatureBulkMemory(),\n SignExt = _BinaryenFeatureSignExt(),\n ExceptionHandling = _BinaryenFeatureExceptionHandling()\n}\n\nexport enum ExpressionId {\n Invalid = _BinaryenInvalidId(),\n Block = _BinaryenBlockId(),\n If = _BinaryenIfId(),\n Loop = _BinaryenLoopId(),\n Break = _BinaryenBreakId(),\n Switch = _BinaryenSwitchId(),\n Call = _BinaryenCallId(),\n CallIndirect = _BinaryenCallIndirectId(),\n LocalGet = _BinaryenLocalGetId(),\n LocalSet = _BinaryenLocalSetId(),\n GlobalGet = _BinaryenGlobalGetId(),\n GlobalSet = _BinaryenGlobalSetId(),\n Load = _BinaryenLoadId(),\n Store = _BinaryenStoreId(),\n Const = _BinaryenConstId(),\n Unary = _BinaryenUnaryId(),\n Binary = _BinaryenBinaryId(),\n Select = _BinaryenSelectId(),\n Drop = _BinaryenDropId(),\n Return = _BinaryenReturnId(),\n Host = _BinaryenHostId(),\n Nop = _BinaryenNopId(),\n Unreachable = _BinaryenUnreachableId(),\n AtomicCmpxchg = _BinaryenAtomicCmpxchgId(),\n AtomicRMW = _BinaryenAtomicRMWId(),\n AtomicWait = _BinaryenAtomicWaitId(),\n AtomicNotify = _BinaryenAtomicNotifyId(),\n SIMDExtract = _BinaryenSIMDExtractId(),\n SIMDReplace = _BinaryenSIMDReplaceId(),\n SIMDShuffle = _BinaryenSIMDShuffleId(),\n SIMDBitselect = _BinaryenSIMDBitselectId(),\n SIMDShift = _BinaryenSIMDShiftId(),\n MemoryInit = _BinaryenMemoryInitId(),\n DataDrop = _BinaryenDataDropId(),\n MemoryCopy = _BinaryenMemoryCopyId(),\n MemoryFill = _BinaryenMemoryFillId()\n}\n\nexport enum UnaryOp {\n ClzI32 = _BinaryenClzInt32(),\n CtzI32 = _BinaryenCtzInt32(),\n PopcntI32 = _BinaryenPopcntInt32(),\n NegF32 = _BinaryenNegFloat32(),\n AbsF32 = _BinaryenAbsFloat32(),\n CeilF32 = _BinaryenCeilFloat32(),\n FloorF32 = _BinaryenFloorFloat32(),\n TruncF32 = _BinaryenTruncFloat32(),\n NearestF32 = _BinaryenNearestFloat32(),\n SqrtF32 = _BinaryenSqrtFloat32(),\n EqzI32 = _BinaryenEqZInt32(),\n ClzI64 = _BinaryenClzInt64(),\n CtzI64 = _BinaryenCtzInt64(),\n PopcntI64 = _BinaryenPopcntInt64(),\n NegF64 = _BinaryenNegFloat64(),\n AbsF64 = _BinaryenAbsFloat64(),\n CeilF64 = _BinaryenCeilFloat64(),\n FloorF64 = _BinaryenFloorFloat64(),\n TruncF64 = _BinaryenTruncFloat64(),\n NearestF64 = _BinaryenNearestFloat64(),\n SqrtF64 = _BinaryenSqrtFloat64(),\n EqzI64 = _BinaryenEqZInt64(),\n ExtendI32 = _BinaryenExtendSInt32(),\n ExtendU32 = _BinaryenExtendUInt32(),\n WrapI64 = _BinaryenWrapInt64(),\n TruncF32ToI32 = _BinaryenTruncSFloat32ToInt32(),\n TruncF32ToI64 = _BinaryenTruncSFloat32ToInt64(),\n TruncF32ToU32 = _BinaryenTruncUFloat32ToInt32(),\n TruncF32ToU64 = _BinaryenTruncUFloat32ToInt64(),\n TruncF64ToI32 = _BinaryenTruncSFloat64ToInt32(),\n TruncF64ToI64 = _BinaryenTruncSFloat64ToInt64(),\n TruncF64ToU32 = _BinaryenTruncUFloat64ToInt32(),\n TruncF64ToU64 = _BinaryenTruncUFloat64ToInt64(),\n ReinterpretF32 = _BinaryenReinterpretFloat32(),\n ReinterpretF64 = _BinaryenReinterpretFloat64(),\n ConvertI32ToF32 = _BinaryenConvertSInt32ToFloat32(),\n ConvertI32ToF64 = _BinaryenConvertSInt32ToFloat64(),\n ConvertU32ToF32 = _BinaryenConvertUInt32ToFloat32(),\n ConvertU32ToF64 = _BinaryenConvertUInt32ToFloat64(),\n ConvertI64ToF32 = _BinaryenConvertSInt64ToFloat32(),\n ConvertI64ToF64 = _BinaryenConvertSInt64ToFloat64(),\n ConvertU64ToF32 = _BinaryenConvertUInt64ToFloat32(),\n ConvertU64ToF64 = _BinaryenConvertUInt64ToFloat64(),\n PromoteF32 = _BinaryenPromoteFloat32(),\n DemoteF64 = _BinaryenDemoteFloat64(),\n ReinterpretI32 = _BinaryenReinterpretInt32(),\n ReinterpretI64 = _BinaryenReinterpretInt64(),\n\n // see: https://github.com/WebAssembly/sign-extension-ops\n ExtendI8ToI32 = _BinaryenExtendS8Int32(),\n ExtendI16ToI32 = _BinaryenExtendS16Int32(),\n ExtendI8ToI64 = _BinaryenExtendS8Int64(),\n ExtendI16ToI64 = _BinaryenExtendS16Int64(),\n ExtendI32ToI64 = _BinaryenExtendS32Int64(),\n\n // see: https://github.com/WebAssembly/nontrapping-float-to-int-conversions\n // TruncF32ToI32Sat\n // TruncF32ToU32Sat\n // TruncF64ToI32Sat\n // TruncF64ToU32Sat\n // TruncF32ToI64Sat\n // TruncF32ToU64Sat\n // TruncF64ToI64Sat\n // TruncF64ToU64Sat\n\n // see: https://github.com/WebAssembly/simd\n SplatVecI8x16 = _BinaryenSplatVecI8x16(),\n SplatVecI16x8 = _BinaryenSplatVecI16x8(),\n SplatVecI32x4 = _BinaryenSplatVecI32x4(),\n SplatVecI64x2 = _BinaryenSplatVecI64x2(),\n SplatVecF32x4 = _BinaryenSplatVecF32x4(),\n SplatVecF64x2 = _BinaryenSplatVecF64x2(),\n NotVec128 = _BinaryenNotVec128(),\n NegVecI8x16 = _BinaryenNegVecI8x16(),\n AnyTrueVecI8x16 = _BinaryenAnyTrueVecI8x16(),\n AllTrueVecI8x16 = _BinaryenAllTrueVecI8x16(),\n NegVecI16x8 = _BinaryenNegVecI16x8(),\n AnyTrueVecI16x8 = _BinaryenAnyTrueVecI16x8(),\n AllTrueVecI16x8 = _BinaryenAllTrueVecI16x8(),\n NegVecI32x4 = _BinaryenNegVecI32x4(),\n AnyTrueVecI32x4 = _BinaryenAnyTrueVecI32x4(),\n AllTrueVecI32x4 = _BinaryenAllTrueVecI32x4(),\n NegVecI64x2 = _BinaryenNegVecI64x2(),\n AnyTrueVecI64x2 = _BinaryenAnyTrueVecI64x2(),\n AllTrueVecI64x2 = _BinaryenAllTrueVecI64x2(),\n AbsVecF32x4 = _BinaryenAbsVecF32x4(),\n NegVecF32x4 = _BinaryenNegVecF32x4(),\n SqrtVecF32x4 = _BinaryenSqrtVecF32x4(),\n AbsVecF64x2 = _BinaryenAbsVecF64x2(),\n NegVecF64x2 = _BinaryenNegVecF64x2(),\n SqrtVecF64x2 = _BinaryenSqrtVecF64x2(),\n TruncSatSVecF32x4ToVecI32x4 = _BinaryenTruncSatSVecF32x4ToVecI32x4(),\n TruncSatUVecF32x4ToVecI32x4 = _BinaryenTruncSatUVecF32x4ToVecI32x4(),\n TruncSatSVecF64x2ToVecI64x2 = _BinaryenTruncSatSVecF64x2ToVecI64x2(),\n TruncSatUVecF64x2ToVecI64x2 = _BinaryenTruncSatUVecF64x2ToVecI64x2(),\n ConvertSVecI32x4ToVecF32x4 = _BinaryenConvertSVecI32x4ToVecF32x4(),\n ConvertUVecI32x4ToVecF32x4 = _BinaryenConvertUVecI32x4ToVecF32x4(),\n ConvertSVecI64x2ToVecF64x2 = _BinaryenConvertSVecI64x2ToVecF64x2(),\n ConvertUVecI64x2ToVecF64x2 = _BinaryenConvertUVecI64x2ToVecF64x2()\n}\n\nexport enum BinaryOp {\n AddI32 = _BinaryenAddInt32(),\n SubI32 = _BinaryenSubInt32(),\n MulI32 = _BinaryenMulInt32(),\n DivI32 = _BinaryenDivSInt32(),\n DivU32 = _BinaryenDivUInt32(),\n RemI32 = _BinaryenRemSInt32(),\n RemU32 = _BinaryenRemUInt32(),\n AndI32 = _BinaryenAndInt32(),\n OrI32 = _BinaryenOrInt32(),\n XorI32 = _BinaryenXorInt32(),\n ShlI32 = _BinaryenShlInt32(),\n ShrU32 = _BinaryenShrUInt32(),\n ShrI32 = _BinaryenShrSInt32(),\n RotlI32 = _BinaryenRotLInt32(),\n RotrI32 = _BinaryenRotRInt32(),\n EqI32 = _BinaryenEqInt32(),\n NeI32 = _BinaryenNeInt32(),\n LtI32 = _BinaryenLtSInt32(),\n LtU32 = _BinaryenLtUInt32(),\n LeI32 = _BinaryenLeSInt32(),\n LeU32 = _BinaryenLeUInt32(),\n GtI32 = _BinaryenGtSInt32(),\n GtU32 = _BinaryenGtUInt32(),\n GeI32 = _BinaryenGeSInt32(),\n GeU32 = _BinaryenGeUInt32(),\n AddI64 = _BinaryenAddInt64(),\n SubI64 = _BinaryenSubInt64(),\n MulI64 = _BinaryenMulInt64(),\n DivI64 = _BinaryenDivSInt64(),\n DivU64 = _BinaryenDivUInt64(),\n RemI64 = _BinaryenRemSInt64(),\n RemU64 = _BinaryenRemUInt64(),\n AndI64 = _BinaryenAndInt64(),\n OrI64 = _BinaryenOrInt64(),\n XorI64 = _BinaryenXorInt64(),\n ShlI64 = _BinaryenShlInt64(),\n ShrU64 = _BinaryenShrUInt64(),\n ShrI64 = _BinaryenShrSInt64(),\n RotlI64 = _BinaryenRotLInt64(),\n RotrI64 = _BinaryenRotRInt64(),\n EqI64 = _BinaryenEqInt64(),\n NeI64 = _BinaryenNeInt64(),\n LtI64 = _BinaryenLtSInt64(),\n LtU64 = _BinaryenLtUInt64(),\n LeI64 = _BinaryenLeSInt64(),\n LeU64 = _BinaryenLeUInt64(),\n GtI64 = _BinaryenGtSInt64(),\n GtU64 = _BinaryenGtUInt64(),\n GeI64 = _BinaryenGeSInt64(),\n GeU64 = _BinaryenGeUInt64(),\n AddF32 = _BinaryenAddFloat32(),\n SubF32 = _BinaryenSubFloat32(),\n MulF32 = _BinaryenMulFloat32(),\n DivF32 = _BinaryenDivFloat32(),\n CopysignF32 = _BinaryenCopySignFloat32(),\n MinF32 = _BinaryenMinFloat32(),\n MaxF32 = _BinaryenMaxFloat32(),\n EqF32 = _BinaryenEqFloat32(),\n NeF32 = _BinaryenNeFloat32(),\n LtF32 = _BinaryenLtFloat32(),\n LeF32 = _BinaryenLeFloat32(),\n GtF32 = _BinaryenGtFloat32(),\n GeF32 = _BinaryenGeFloat32(),\n AddF64 = _BinaryenAddFloat64(),\n SubF64 = _BinaryenSubFloat64(),\n MulF64 = _BinaryenMulFloat64(),\n DivF64 = _BinaryenDivFloat64(),\n CopysignF64 = _BinaryenCopySignFloat64(),\n MinF64 = _BinaryenMinFloat64(),\n MaxF64 = _BinaryenMaxFloat64(),\n EqF64 = _BinaryenEqFloat64(),\n NeF64 = _BinaryenNeFloat64(),\n LtF64 = _BinaryenLtFloat64(),\n LeF64 = _BinaryenLeFloat64(),\n GtF64 = _BinaryenGtFloat64(),\n GeF64 = _BinaryenGeFloat64(),\n\n // see: https://github.com/WebAssembly/simd\n EqVecI8x16 = _BinaryenEqVecI8x16(),\n NeVecI8x16 = _BinaryenNeVecI8x16(),\n LtSVecI8x16 = _BinaryenLtSVecI8x16(),\n LtUVecI8x16 = _BinaryenLtUVecI8x16(),\n LeSVecI8x16 = _BinaryenLeSVecI8x16(),\n LeUVecI8x16 = _BinaryenLeUVecI8x16(),\n GtSVecI8x16 = _BinaryenGtSVecI8x16(),\n GtUVecI8x16 = _BinaryenGtUVecI8x16(),\n GeSVecI8x16 = _BinaryenGeSVecI8x16(),\n GeUVecI8x16 = _BinaryenGeUVecI8x16(),\n EqVecI16x8 = _BinaryenEqVecI16x8(),\n NeVecI16x8 = _BinaryenNeVecI16x8(),\n LtSVecI16x8 = _BinaryenLtSVecI16x8(),\n LtUVecI16x8 = _BinaryenLtUVecI16x8(),\n LeSVecI16x8 = _BinaryenLeSVecI16x8(),\n LeUVecI16x8 = _BinaryenLeUVecI16x8(),\n GtSVecI16x8 = _BinaryenGtSVecI16x8(),\n GtUVecI16x8 = _BinaryenGtUVecI16x8(),\n GeSVecI16x8 = _BinaryenGeSVecI16x8(),\n GeUVecI16x8 = _BinaryenGeUVecI16x8(),\n EqVecI32x4 = _BinaryenEqVecI32x4(),\n NeVecI32x4 = _BinaryenNeVecI32x4(),\n LtSVecI32x4 = _BinaryenLtSVecI32x4(),\n LtUVecI32x4 = _BinaryenLtUVecI32x4(),\n LeSVecI32x4 = _BinaryenLeSVecI32x4(),\n LeUVecI32x4 = _BinaryenLeUVecI32x4(),\n GtSVecI32x4 = _BinaryenGtSVecI32x4(),\n GtUVecI32x4 = _BinaryenGtUVecI32x4(),\n GeSVecI32x4 = _BinaryenGeSVecI32x4(),\n GeUVecI32x4 = _BinaryenGeUVecI32x4(),\n EqVecF32x4 = _BinaryenEqVecF32x4(),\n NeVecF32x4 = _BinaryenNeVecF32x4(),\n LtVecF32x4 = _BinaryenLtVecF32x4(),\n LeVecF32x4 = _BinaryenLeVecF32x4(),\n GtVecF32x4 = _BinaryenGtVecF32x4(),\n GeVecF32x4 = _BinaryenGeVecF32x4(),\n EqVecF64x2 = _BinaryenEqVecF64x2(),\n NeVecF64x2 = _BinaryenNeVecF64x2(),\n LtVecF64x2 = _BinaryenLtVecF64x2(),\n LeVecF64x2 = _BinaryenLeVecF64x2(),\n GtVecF64x2 = _BinaryenGtVecF64x2(),\n GeVecF64x2 = _BinaryenGeVecF64x2(),\n AndVec128 = _BinaryenAndVec128(),\n OrVec128 = _BinaryenOrVec128(),\n XorVec128 = _BinaryenXorVec128(),\n AddVecI8x16 = _BinaryenAddVecI8x16(),\n AddSatSVecI8x16 = _BinaryenAddSatSVecI8x16(),\n AddSatUVecI8x16 = _BinaryenAddSatUVecI8x16(),\n SubVecI8x16 = _BinaryenSubVecI8x16(),\n SubSatSVecI8x16 = _BinaryenSubSatSVecI8x16(),\n SubSatUVecI8x16 = _BinaryenSubSatUVecI8x16(),\n MulVecI8x16 = _BinaryenMulVecI8x16(),\n AddVecI16x8 = _BinaryenAddVecI16x8(),\n AddSatSVecI16x8 = _BinaryenAddSatSVecI16x8(),\n AddSatUVecI16x8 = _BinaryenAddSatUVecI16x8(),\n SubVecI16x8 = _BinaryenSubVecI16x8(),\n SubSatSVecI16x8 = _BinaryenSubSatSVecI16x8(),\n SubSatUVecI16x8 = _BinaryenSubSatUVecI16x8(),\n MulVecI16x8 = _BinaryenMulVecI16x8(),\n AddVecI32x4 = _BinaryenAddVecI32x4(),\n SubVecI32x4 = _BinaryenSubVecI32x4(),\n MulVecI32x4 = _BinaryenMulVecI32x4(),\n AddVecI64x2 = _BinaryenAddVecI64x2(),\n SubVecI64x2 = _BinaryenSubVecI64x2(),\n AddVecF32x4 = _BinaryenAddVecF32x4(),\n SubVecF32x4 = _BinaryenSubVecF32x4(),\n MulVecF32x4 = _BinaryenMulVecF32x4(),\n DivVecF32x4 = _BinaryenDivVecF32x4(),\n MinVecF32x4 = _BinaryenMinVecF32x4(),\n MaxVecF32x4 = _BinaryenMaxVecF32x4(),\n AddVecF64x2 = _BinaryenAddVecF64x2(),\n SubVecF64x2 = _BinaryenSubVecF64x2(),\n MulVecF64x2 = _BinaryenMulVecF64x2(),\n DivVecF64x2 = _BinaryenDivVecF64x2(),\n MinVecF64x2 = _BinaryenMinVecF64x2(),\n MaxVecF64x2 = _BinaryenMaxVecF64x2()\n}\n\nexport enum HostOp {\n MemorySize = _BinaryenMemorySize(),\n MemoryGrow = _BinaryenMemoryGrow(),\n}\n\nexport enum AtomicRMWOp {\n Add = _BinaryenAtomicRMWAdd(),\n Sub = _BinaryenAtomicRMWSub(),\n And = _BinaryenAtomicRMWAnd(),\n Or = _BinaryenAtomicRMWOr(),\n Xor = _BinaryenAtomicRMWXor(),\n Xchg = _BinaryenAtomicRMWXchg()\n}\n\nexport enum SIMDExtractOp {\n ExtractLaneSVecI8x16 = _BinaryenExtractLaneSVecI8x16(),\n ExtractLaneUVecI8x16 = _BinaryenExtractLaneUVecI8x16(),\n ExtractLaneSVecI16x8 = _BinaryenExtractLaneSVecI16x8(),\n ExtractLaneUVecI16x8 = _BinaryenExtractLaneUVecI16x8(),\n ExtractLaneVecI32x4 = _BinaryenExtractLaneVecI32x4(),\n ExtractLaneVecI64x2 = _BinaryenExtractLaneVecI64x2(),\n ExtractLaneVecF32x4 = _BinaryenExtractLaneVecF32x4(),\n ExtractLaneVecF64x2 = _BinaryenExtractLaneVecF64x2(),\n}\n\nexport enum SIMDReplaceOp {\n ReplaceLaneVecI8x16 = _BinaryenReplaceLaneVecI8x16(),\n ReplaceLaneVecI16x8 = _BinaryenReplaceLaneVecI16x8(),\n ReplaceLaneVecI32x4 = _BinaryenReplaceLaneVecI32x4(),\n ReplaceLaneVecI64x2 = _BinaryenReplaceLaneVecI64x2(),\n ReplaceLaneVecF32x4 = _BinaryenReplaceLaneVecF32x4(),\n ReplaceLaneVecF64x2 = _BinaryenReplaceLaneVecF64x2()\n}\n\nexport enum SIMDShiftOp {\n ShlVecI8x16 = _BinaryenShlVecI8x16(),\n ShrSVecI8x16 = _BinaryenShrSVecI8x16(),\n ShrUVecI8x16 = _BinaryenShrUVecI8x16(),\n ShlVecI16x8 = _BinaryenShlVecI16x8(),\n ShrSVecI16x8 = _BinaryenShrSVecI16x8(),\n ShrUVecI16x8 = _BinaryenShrUVecI16x8(),\n ShlVecI32x4 = _BinaryenShlVecI32x4(),\n ShrSVecI32x4 = _BinaryenShrSVecI32x4(),\n ShrUVecI32x4 = _BinaryenShrUVecI32x4(),\n ShlVecI64x2 = _BinaryenShlVecI64x2(),\n ShrSVecI64x2 = _BinaryenShrSVecI64x2(),\n ShrUVecI64x2 = _BinaryenShrUVecI64x2()\n}\n\nexport class MemorySegment {\n\n buffer: Uint8Array;\n offset: I64;\n\n static create(buffer: Uint8Array, offset: I64): MemorySegment {\n var segment = new MemorySegment();\n segment.buffer = buffer;\n segment.offset = offset;\n return segment;\n }\n}\n\nexport class Module {\n\n ref: ModuleRef;\n\n private lit: usize;\n\n static create(): Module {\n var module = new Module();\n module.ref = _BinaryenModuleCreate();\n module.lit = memory.allocate(_BinaryenSizeofLiteral());\n return module;\n }\n\n static createFrom(buffer: Uint8Array): Module {\n var cArr = allocU8Array(buffer);\n try {\n let module = new Module();\n module.ref = _BinaryenModuleRead(cArr, buffer.length);\n module.lit = memory.allocate(_BinaryenSizeofLiteral());\n return module;\n } finally {\n memory.free(changetype(cArr));\n }\n }\n\n private constructor() { }\n\n // types\n\n addFunctionType(\n name: string,\n result: NativeType,\n paramTypes: NativeType[] | null\n ): FunctionRef {\n var cStr = this.allocStringCached(name);\n var cArr = allocI32Array(paramTypes);\n try {\n return _BinaryenAddFunctionType(this.ref, cStr, result, cArr, paramTypes ? paramTypes.length : 0);\n } finally {\n memory.free(cArr);\n }\n }\n\n getFunctionTypeBySignature(\n result: NativeType,\n paramTypes: NativeType[] | null\n ): FunctionTypeRef {\n var cArr = allocI32Array(paramTypes);\n try {\n return _BinaryenGetFunctionTypeBySignature(this.ref, result, cArr, paramTypes ? paramTypes.length : 0);\n } finally {\n memory.free(cArr);\n }\n }\n\n removeFunctionType(name: string): void {\n var cStr = this.allocStringCached(name);\n _BinaryenRemoveFunctionType(this.ref, cStr);\n }\n\n // constants\n\n i32(value: i32): ExpressionRef {\n var out = this.lit;\n _BinaryenLiteralInt32(out, value);\n return _BinaryenConst(this.ref, out);\n }\n\n i64(valueLow: i32, valueHigh: i32 = 0): ExpressionRef {\n var out = this.lit;\n _BinaryenLiteralInt64(out, valueLow, valueHigh);\n return _BinaryenConst(this.ref, out);\n }\n\n f32(value: f32): ExpressionRef {\n var out = this.lit;\n _BinaryenLiteralFloat32(out, value);\n return _BinaryenConst(this.ref, out);\n }\n\n f64(value: f64): ExpressionRef {\n var out = this.lit;\n _BinaryenLiteralFloat64(out, value);\n return _BinaryenConst(this.ref, out);\n }\n\n v128(bytes: Uint8Array): ExpressionRef {\n assert(bytes.length == 16);\n var out = this.lit;\n for (let i = 0; i < 16; ++i) store(out + i, bytes[i]);\n _BinaryenLiteralVec128(out, out);\n return _BinaryenConst(this.ref, out);\n }\n\n // expressions\n\n unary(\n op: UnaryOp,\n expr: ExpressionRef\n ): ExpressionRef {\n return _BinaryenUnary(this.ref, op, expr);\n }\n\n binary(\n op: BinaryOp,\n left: ExpressionRef,\n right: ExpressionRef\n ): ExpressionRef {\n return _BinaryenBinary(this.ref, op, left, right);\n }\n\n host(\n op: HostOp,\n name: string | null = null,\n operands: ExpressionRef[] | null = null\n ): ExpressionRef {\n var cStr = this.allocStringCached(name);\n var cArr = allocPtrArray(operands);\n try {\n return _BinaryenHost(this.ref, op, cStr, cArr, operands ? (operands).length : 0);\n } finally {\n memory.free(cArr);\n }\n }\n\n local_get(\n index: i32,\n type: NativeType\n ): ExpressionRef {\n return _BinaryenLocalGet(this.ref, index, type);\n }\n\n local_tee(\n index: i32,\n value: ExpressionRef\n ): ExpressionRef {\n return _BinaryenLocalTee(this.ref, index, value);\n }\n\n global_get(\n name: string,\n type: NativeType\n ): ExpressionRef {\n var cStr = this.allocStringCached(name);\n return _BinaryenGlobalGet(this.ref, cStr, type);\n }\n\n load(\n bytes: Index,\n signed: bool,\n ptr: ExpressionRef,\n type: NativeType,\n offset: Index = 0,\n align: Index = bytes // naturally aligned by default\n ): ExpressionRef {\n return _BinaryenLoad(this.ref, bytes, signed ? 1 : 0, offset, align, type, ptr);\n }\n\n store(\n bytes: Index,\n ptr: ExpressionRef,\n value: ExpressionRef,\n type: NativeType,\n offset: Index = 0,\n align: Index = bytes // naturally aligned by default\n ): ExpressionRef {\n if (type < NativeType.None || type > NativeType.V128) throw new Error(\"here: \" + type);\n return _BinaryenStore(this.ref, bytes, offset, align, ptr, value, type);\n }\n\n atomic_load(\n bytes: Index,\n ptr: ExpressionRef,\n type: NativeType,\n offset: Index = 0\n ): ExpressionRef {\n return _BinaryenAtomicLoad(this.ref, bytes, offset, type, ptr);\n }\n\n atomic_store(\n bytes: Index,\n ptr: ExpressionRef,\n value: ExpressionRef,\n type: NativeType,\n offset: Index = 0\n ): ExpressionRef {\n return _BinaryenAtomicStore(this.ref, bytes, offset, ptr, value, type);\n }\n\n atomic_rmw(\n op: AtomicRMWOp,\n bytes: Index,\n offset: Index,\n ptr: ExpressionRef,\n value: ExpressionRef,\n type: NativeType\n ): ExpressionRef {\n return _BinaryenAtomicRMW(this.ref, op, bytes, offset, ptr, value, type);\n }\n\n atomic_cmpxchg(\n bytes: Index,\n offset: Index,\n ptr: ExpressionRef,\n expected: ExpressionRef,\n replacement: ExpressionRef,\n type: NativeType\n ): ExpressionRef {\n return _BinaryenAtomicCmpxchg(this.ref, bytes, offset, ptr, expected, replacement, type);\n }\n\n atomic_wait(\n ptr: ExpressionRef,\n expected: ExpressionRef,\n timeout: ExpressionRef,\n expectedType: NativeType\n ): ExpressionRef {\n return _BinaryenAtomicWait(this.ref, ptr, expected, timeout, expectedType);\n }\n\n atomic_notify(\n ptr: ExpressionRef,\n notifyCount: ExpressionRef\n ): ExpressionRef {\n return _BinaryenAtomicNotify(this.ref, ptr, notifyCount);\n }\n\n // statements\n\n local_set(\n index: Index,\n value: ExpressionRef\n ): ExpressionRef {\n return _BinaryenLocalSet(this.ref, index, value);\n }\n\n global_set(\n name: string,\n value: ExpressionRef\n ): ExpressionRef {\n var cStr = this.allocStringCached(name);\n return _BinaryenGlobalSet(this.ref, cStr, value);\n }\n\n block(\n label: string | null,\n children: ExpressionRef[],\n type: NativeType = NativeType.None\n ): ExpressionRef {\n var cStr = this.allocStringCached(label);\n var cArr = allocPtrArray(children);\n try {\n return _BinaryenBlock(this.ref, cStr, cArr, children.length, type);\n } finally {\n memory.free(cArr);\n }\n }\n\n br(\n label: string | null,\n condition: ExpressionRef = 0,\n value: ExpressionRef = 0\n ): ExpressionRef {\n var cStr = this.allocStringCached(label);\n return _BinaryenBreak(this.ref, cStr, condition, value);\n }\n\n drop(\n expression: ExpressionRef\n ): ExpressionRef {\n return _BinaryenDrop(this.ref, expression);\n }\n\n loop(\n label: string | null,\n body: ExpressionRef\n ): ExpressionRef {\n var cStr = this.allocStringCached(label);\n return _BinaryenLoop(this.ref, cStr, body);\n }\n\n if(\n condition: ExpressionRef,\n ifTrue: ExpressionRef,\n ifFalse: ExpressionRef = 0\n ): ExpressionRef {\n return _BinaryenIf(this.ref, condition, ifTrue, ifFalse);\n }\n\n nop(): ExpressionRef {\n return _BinaryenNop(this.ref);\n }\n\n return(\n expression: ExpressionRef = 0\n ): ExpressionRef {\n return _BinaryenReturn(this.ref, expression);\n }\n\n select(\n ifTrue: ExpressionRef,\n ifFalse: ExpressionRef,\n condition: ExpressionRef\n ): ExpressionRef {\n return _BinaryenSelect(this.ref, condition, ifTrue, ifFalse);\n }\n\n switch(\n names: string[],\n defaultName: string | null,\n condition: ExpressionRef,\n value: ExpressionRef = 0\n ): ExpressionRef {\n var numNames = names.length;\n var strs = new Array(numNames);\n for (let i = 0; i < numNames; ++i) {\n strs[i] = this.allocStringCached(names[i]);\n }\n var cArr = allocI32Array(strs);\n var cStr = this.allocStringCached(defaultName);\n try {\n return _BinaryenSwitch(this.ref, cArr, numNames, cStr, condition, value);\n } finally {\n memory.free(cArr);\n }\n }\n\n call(\n target: string,\n operands: ExpressionRef[] | null,\n returnType: NativeType\n ): ExpressionRef {\n var cStr = this.allocStringCached(target);\n var cArr = allocPtrArray(operands);\n try {\n return _BinaryenCall(this.ref, cStr, cArr, operands && operands.length || 0, returnType);\n } finally {\n memory.free(cArr);\n }\n }\n\n call_indirect(\n index: ExpressionRef,\n operands: ExpressionRef[] | null,\n typeName: string\n ): ExpressionRef {\n var cStr = this.allocStringCached(typeName);\n var cArr = allocPtrArray(operands);\n try {\n return _BinaryenCallIndirect(this.ref, index, cArr, operands && operands.length || 0, cStr);\n } finally {\n memory.free(cArr);\n }\n }\n\n unreachable(): ExpressionRef {\n return _BinaryenUnreachable(this.ref);\n }\n\n // bulk memory\n\n memory_copy(\n dest: ExpressionRef,\n source: ExpressionRef,\n size: ExpressionRef\n ): ExpressionRef {\n return _BinaryenMemoryCopy(this.ref, dest, source, size);\n }\n\n memory_fill(\n dest: ExpressionRef,\n value: ExpressionRef,\n size: ExpressionRef\n ): ExpressionRef {\n return _BinaryenMemoryFill(this.ref, dest, value, size);\n }\n\n // simd\n\n simd_extract(\n op: SIMDExtractOp,\n vec: ExpressionRef,\n idx: u8\n ): ExpressionRef {\n return _BinaryenSIMDExtract(this.ref, op, vec, idx);\n }\n\n simd_replace(\n op: SIMDReplaceOp,\n vec: ExpressionRef,\n idx: u8,\n value: ExpressionRef\n ): ExpressionRef {\n return _BinaryenSIMDReplace(this.ref, op, vec, idx, value);\n }\n\n simd_shuffle(\n vec1: ExpressionRef,\n vec2: ExpressionRef,\n mask: Uint8Array\n ): ExpressionRef {\n assert(mask.length == 16);\n var cArr = allocU8Array(mask);\n try {\n return _BinaryenSIMDShuffle(this.ref, vec1, vec2, cArr);\n } finally {\n memory.free(cArr);\n }\n }\n\n simd_bitselect(\n vec1: ExpressionRef,\n vec2: ExpressionRef,\n cond: ExpressionRef\n ): ExpressionRef {\n return _BinaryenSIMDBitselect(this.ref, vec1, vec2, cond);\n }\n\n simd_shift(\n op: SIMDShiftOp,\n vec: ExpressionRef,\n shift: ExpressionRef\n ): ExpressionRef {\n return _BinaryenSIMDShift(this.ref, op, vec, shift);\n }\n\n // meta\n\n addGlobal(\n name: string,\n type: NativeType,\n mutable: bool,\n initializer: ExpressionRef\n ): GlobalRef {\n var cStr = this.allocStringCached(name);\n return _BinaryenAddGlobal(this.ref, cStr, type, mutable ? 1 : 0, initializer);\n }\n\n removeGlobal(\n name: string\n ): void {\n var cStr = this.allocStringCached(name);\n _BinaryenRemoveGlobal(this.ref, cStr);\n }\n\n addFunction(\n name: string,\n type: FunctionTypeRef,\n varTypes: NativeType[] | null,\n body: ExpressionRef\n ): FunctionRef {\n var cStr = this.allocStringCached(name);\n var cArr = allocI32Array(varTypes);\n try {\n return _BinaryenAddFunction(this.ref, cStr, type, cArr, varTypes ? varTypes.length : 0, body);\n } finally {\n memory.free(cArr);\n }\n }\n\n removeFunction(name: string): void {\n var cStr = this.allocStringCached(name);\n _BinaryenRemoveFunction(this.ref, cStr);\n }\n\n private hasTemporaryFunction: bool = false;\n\n addTemporaryFunction(result: NativeType, paramTypes: NativeType[] | null, body: ExpressionRef): FunctionRef {\n this.hasTemporaryFunction = assert(!this.hasTemporaryFunction);\n var tempName = this.allocStringCached(\"\");\n var cArr = allocI32Array(paramTypes);\n try {\n let typeRef = _BinaryenAddFunctionType(this.ref, tempName, result, cArr, paramTypes ? paramTypes.length : 0);\n return _BinaryenAddFunction(this.ref, tempName, typeRef, 0, 0, body);\n } finally {\n memory.free(cArr);\n }\n }\n\n removeTemporaryFunction(): void {\n this.hasTemporaryFunction = !assert(this.hasTemporaryFunction);\n var tempName = this.allocStringCached(\"\");\n _BinaryenRemoveFunction(this.ref, tempName);\n _BinaryenRemoveFunctionType(this.ref, tempName);\n }\n\n addFunctionExport(\n internalName: string,\n externalName: string\n ): ExportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalName);\n return _BinaryenAddFunctionExport(this.ref, cStr1, cStr2);\n }\n\n addTableExport(\n internalName: string,\n externalName: string\n ): ExportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalName);\n return _BinaryenAddTableExport(this.ref, cStr1, cStr2);\n }\n\n addMemoryExport(\n internalName: string,\n externalName: string\n ): ExportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalName);\n return _BinaryenAddMemoryExport(this.ref, cStr1, cStr2);\n }\n\n addGlobalExport(\n internalName: string,\n externalName: string\n ): ExportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalName);\n return _BinaryenAddGlobalExport(this.ref, cStr1, cStr2);\n }\n\n removeExport(externalName: string): void {\n var cStr = this.allocStringCached(externalName);\n _BinaryenRemoveExport(this.ref, cStr);\n }\n\n addFunctionImport(\n internalName: string,\n externalModuleName: string,\n externalBaseName: string,\n functionType: FunctionTypeRef\n ): ImportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalModuleName);\n var cStr3 = this.allocStringCached(externalBaseName);\n return _BinaryenAddFunctionImport(this.ref, cStr1, cStr2, cStr3, functionType);\n }\n\n addTableImport(\n internalName: string,\n externalModuleName: string,\n externalBaseName: string\n ): ImportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalModuleName);\n var cStr3 = this.allocStringCached(externalBaseName);\n return _BinaryenAddTableImport(this.ref, cStr1, cStr2, cStr3);\n }\n\n addMemoryImport(\n internalName: string,\n externalModuleName: string,\n externalBaseName: string,\n shared: bool = false,\n ): ImportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalModuleName);\n var cStr3 = this.allocStringCached(externalBaseName);\n return _BinaryenAddMemoryImport(this.ref, cStr1, cStr2, cStr3, shared);\n }\n\n addGlobalImport(\n internalName: string,\n externalModuleName: string,\n externalBaseName: string,\n globalType: NativeType\n ): ImportRef {\n var cStr1 = this.allocStringCached(internalName);\n var cStr2 = this.allocStringCached(externalModuleName);\n var cStr3 = this.allocStringCached(externalBaseName);\n return _BinaryenAddGlobalImport(this.ref, cStr1, cStr2, cStr3, globalType);\n }\n\n /** Unlimited memory constant. */\n static readonly UNLIMITED_MEMORY: Index = -1;\n\n setMemory(\n initial: Index,\n maximum: Index,\n segments: MemorySegment[],\n target: Target,\n exportName: string | null = null,\n shared: bool = false\n ): void {\n var cStr = this.allocStringCached(exportName);\n var k = segments.length;\n var segs = new Array(k);\n var psvs = new Array(k);\n var offs = new Array(k);\n var sizs = new Array(k);\n for (let i = 0; i < k; ++i) {\n let buffer = segments[i].buffer;\n let offset = segments[i].offset;\n segs[i] = allocU8Array(buffer);\n psvs[i] = 0; // no passive segments currently\n offs[i] = target == Target.WASM64\n ? this.i64(i64_low(offset), i64_high(offset))\n : this.i32(i64_low(offset));\n sizs[i] = buffer.length;\n }\n var cArr1 = allocI32Array(segs);\n var cArr2 = allocU8Array(psvs);\n var cArr3 = allocI32Array(offs);\n var cArr4 = allocI32Array(sizs);\n try {\n _BinaryenSetMemory(this.ref, initial, maximum, cStr, cArr1, cArr2, cArr3, cArr4, k, shared);\n } finally {\n memory.free(cArr4);\n memory.free(cArr3);\n memory.free(cArr2);\n memory.free(cArr1);\n for (let i = k - 1; i >= 0; --i) memory.free(segs[i]);\n }\n }\n\n setFunctionTable(\n initial: Index,\n maximum: Index,\n funcs: string[]\n ): void {\n var numNames = funcs.length;\n var names = new Array(numNames);\n for (let i = 0; i < numNames; ++i) {\n names[i] = this.allocStringCached(funcs[i]);\n }\n var cArr = allocI32Array(names);\n try {\n _BinaryenSetFunctionTable(this.ref, initial, maximum, cArr, numNames);\n } finally {\n memory.free(cArr);\n }\n }\n\n setStart(func: FunctionRef): void {\n _BinaryenSetStart(this.ref, func);\n }\n\n getOptimizeLevel(): i32 {\n return _BinaryenGetOptimizeLevel();\n }\n\n setOptimizeLevel(level: i32 = 2): void {\n _BinaryenSetOptimizeLevel(level);\n }\n\n getShrinkLevel(): i32 {\n return _BinaryenGetShrinkLevel();\n }\n\n setShrinkLevel(level: i32 = 1): void {\n _BinaryenSetShrinkLevel(level);\n }\n\n setDebugInfo(on: bool = false): void {\n _BinaryenSetDebugInfo(on);\n }\n\n getFeatures(): BinaryenFeatureFlags {\n return _BinaryenModuleGetFeatures(this.ref);\n }\n\n setFeatures(featureFlags: BinaryenFeatureFlags): void {\n _BinaryenModuleSetFeatures(this.ref, featureFlags);\n }\n\n optimize(func: FunctionRef = 0): void {\n if (func) {\n _BinaryenFunctionOptimize(func, this.ref);\n } else {\n _BinaryenModuleOptimize(this.ref);\n }\n }\n\n runPasses(passes: string[], func: FunctionRef = 0): void {\n var numNames = passes.length;\n var names = new Array(numNames);\n for (let i = 0; i < numNames; ++i) {\n names[i] = allocString(passes[i]);\n }\n var cArr = allocI32Array(names);\n try {\n if (func) {\n _BinaryenFunctionRunPasses(func, this.ref, cArr, numNames);\n } else {\n _BinaryenModuleRunPasses(this.ref, cArr, numNames);\n }\n } finally {\n memory.free(cArr);\n for (let i = numNames; i >= 0; --i) memory.free(names[i]);\n }\n }\n\n private cachedPrecomputeNames: usize = 0;\n\n precomputeExpression(expr: ExpressionRef): ExpressionRef {\n // remember the previous optimize levels and set to max instead, to be sure\n var previousOptimizeLevel = _BinaryenGetOptimizeLevel();\n var previousShrinkLevel = _BinaryenGetShrinkLevel();\n var previousDebugInfo = _BinaryenGetDebugInfo();\n _BinaryenSetOptimizeLevel(4);\n _BinaryenSetShrinkLevel(0);\n _BinaryenSetDebugInfo(false);\n\n // wrap the expression in a temp. function and run the precompute pass on it\n var type = _BinaryenExpressionGetType(expr);\n var func = this.addTemporaryFunction(type, null, expr);\n var names = this.cachedPrecomputeNames;\n if (!names) {\n this.cachedPrecomputeNames = names = allocI32Array([\n this.allocStringCached(\"vacuum\"),\n this.allocStringCached(\"precompute\")\n ]);\n }\n _BinaryenFunctionRunPasses(func, this.ref, names, 2);\n expr = _BinaryenFunctionGetBody(func);\n if (_BinaryenExpressionGetId(expr) == ExpressionId.Return) {\n expr = _BinaryenReturnGetValue(expr);\n }\n this.removeTemporaryFunction();\n\n // reset optimize levels to previous\n _BinaryenSetOptimizeLevel(previousOptimizeLevel);\n _BinaryenSetShrinkLevel(previousShrinkLevel);\n _BinaryenSetDebugInfo(previousDebugInfo);\n return expr;\n }\n\n validate(): bool {\n return _BinaryenModuleValidate(this.ref) == 1;\n }\n\n interpret(): void {\n _BinaryenModuleInterpret(this.ref);\n }\n\n toBinary(sourceMapUrl: string | null): BinaryModule {\n var out = this.lit; // safe to reuse as long as..\n assert(_BinaryenSizeofLiteral() >= 12);\n var cStr = allocString(sourceMapUrl);\n var binaryPtr: usize = 0;\n var sourceMapPtr: usize = 0;\n try {\n _BinaryenModuleAllocateAndWrite(out, this.ref, cStr);\n binaryPtr = readInt(out);\n let binaryBytes = readInt(out + 4);\n sourceMapPtr = readInt(out + 4 * 2);\n let ret = new BinaryModule();\n ret.output = readBuffer(binaryPtr, binaryBytes);\n ret.sourceMap = readString(sourceMapPtr);\n return ret;\n } finally {\n if (cStr) memory.free(cStr);\n if (binaryPtr) memory.free(binaryPtr);\n if (sourceMapPtr) memory.free(sourceMapPtr);\n }\n }\n\n toText(): string {\n throw new Error(\"not implemented\"); // JS glue overrides this\n }\n\n toAsmjs(): string {\n throw new Error(\"not implemented\"); // JS glue overrides this\n }\n\n private cachedStrings: Map = new Map();\n\n private allocStringCached(str: string | null): usize {\n if (str == null) return 0;\n var cachedStrings = this.cachedStrings;\n if (cachedStrings.has(str)) return cachedStrings.get(str);\n var ptr = allocString(str);\n cachedStrings.set(str, ptr);\n return ptr;\n }\n\n dispose(): void {\n assert(this.ref);\n for (let ptr of this.cachedStrings.values()) memory.free(ptr);\n this.cachedStrings = new Map();\n memory.free(this.lit);\n memory.free(this.cachedPrecomputeNames);\n this.cachedPrecomputeNames = 0;\n _BinaryenModuleDispose(this.ref);\n this.ref = 0;\n }\n\n createRelooper(): Relooper {\n return Relooper.create(this);\n }\n\n cloneExpression(\n expr: ExpressionRef,\n noSideEffects: bool = false,\n maxDepth: i32 = i32.MAX_VALUE\n ): ExpressionRef { // currently supports side effect free expressions only\n if (maxDepth < 0) return 0;\n maxDepth -= 1;\n\n var nested1: ExpressionRef,\n nested2: ExpressionRef;\n\n switch (_BinaryenExpressionGetId(expr)) {\n case ExpressionId.Const: {\n switch (_BinaryenExpressionGetType(expr)) {\n case NativeType.I32: {\n return this.i32(_BinaryenConstGetValueI32(expr));\n }\n case NativeType.I64: {\n return this.i64(\n _BinaryenConstGetValueI64Low(expr),\n _BinaryenConstGetValueI64High(expr)\n );\n }\n case NativeType.F32: {\n return this.f32(_BinaryenConstGetValueF32(expr));\n }\n case NativeType.F64: {\n return this.f64(_BinaryenConstGetValueF64(expr));\n }\n case NativeType.V128: {\n // TODO\n return 0;\n }\n default: {\n throw new Error(\"concrete type expected\");\n }\n }\n }\n case ExpressionId.LocalGet: {\n return _BinaryenLocalGet(this.ref,\n _BinaryenLocalGetGetIndex(expr),\n _BinaryenExpressionGetType(expr)\n );\n }\n case ExpressionId.GlobalGet: {\n let globalName = _BinaryenGlobalGetGetName(expr);\n if (!globalName) break;\n return _BinaryenGlobalGet(this.ref, globalName, _BinaryenExpressionGetType(expr));\n }\n case ExpressionId.Load: {\n if (!(nested1 = this.cloneExpression(_BinaryenLoadGetPtr(expr), noSideEffects, maxDepth))) {\n break;\n }\n return (\n _BinaryenLoadIsAtomic(expr)\n ? _BinaryenAtomicLoad(this.ref,\n _BinaryenLoadGetBytes(expr),\n _BinaryenLoadGetOffset(expr),\n _BinaryenExpressionGetType(expr),\n nested1\n )\n : _BinaryenLoad(this.ref,\n _BinaryenLoadGetBytes(expr),\n _BinaryenLoadIsSigned(expr) ? 1 : 0,\n _BinaryenLoadGetOffset(expr),\n _BinaryenLoadGetAlign(expr),\n _BinaryenExpressionGetType(expr),\n nested1\n )\n );\n }\n case ExpressionId.Unary: {\n if (!(nested1 = this.cloneExpression(_BinaryenUnaryGetValue(expr), noSideEffects, maxDepth))) {\n break;\n }\n return _BinaryenUnary(this.ref, _BinaryenUnaryGetOp(expr), nested1);\n }\n case ExpressionId.Binary: {\n if (!(nested1 = this.cloneExpression(_BinaryenBinaryGetLeft(expr), noSideEffects, maxDepth))) {\n break;\n }\n if (!(nested2 = this.cloneExpression(_BinaryenBinaryGetRight(expr), noSideEffects, maxDepth))) {\n break;\n }\n return _BinaryenBinary(this.ref, _BinaryenBinaryGetOp(expr), nested1, nested2);\n }\n }\n return 0;\n }\n\n // source map generation\n\n addDebugInfoFile(name: string): Index {\n var cStr = allocString(name);\n try {\n return _BinaryenModuleAddDebugInfoFileName(this.ref, cStr);\n } finally {\n memory.free(cStr);\n }\n }\n\n getDebugInfoFile(index: Index): string | null {\n return readString(_BinaryenModuleGetDebugInfoFileName(this.ref, index));\n }\n\n setDebugLocation(\n func: FunctionRef,\n expr: ExpressionRef,\n fileIndex: Index,\n lineNumber: Index,\n columnNumber: Index\n ): void {\n _BinaryenFunctionSetDebugLocation(func, expr, fileIndex, lineNumber, columnNumber);\n }\n}\n\n// expressions\n\nexport function getExpressionId(expr: ExpressionRef): ExpressionId {\n return _BinaryenExpressionGetId(expr);\n}\n\nexport function getExpressionType(expr: ExpressionRef): NativeType {\n return _BinaryenExpressionGetType(expr);\n}\n\nexport function getConstValueI32(expr: ExpressionRef): i32 {\n return _BinaryenConstGetValueI32(expr);\n}\n\nexport function getConstValueI64Low(expr: ExpressionRef): i32 {\n return _BinaryenConstGetValueI64Low(expr);\n}\n\nexport function getConstValueI64High(expr: ExpressionRef): i32 {\n return _BinaryenConstGetValueI64High(expr);\n}\n\nexport function getConstValueF32(expr: ExpressionRef): f32 {\n return _BinaryenConstGetValueF32(expr);\n}\n\nexport function getConstValueF64(expr: ExpressionRef): f32 {\n return _BinaryenConstGetValueF64(expr);\n}\n\nexport function getLocalGetIndex(expr: ExpressionRef): Index {\n return _BinaryenLocalGetGetIndex(expr);\n}\n\nexport function getLocalSetIndex(expr: ExpressionRef): Index {\n return _BinaryenLocalSetGetIndex(expr);\n}\n\nexport function getLocalSetValue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenLocalSetGetValue(expr);\n}\n\nexport function isLocalTee(expr: ExpressionRef): bool {\n return _BinaryenLocalSetIsTee(expr);\n}\n\nexport function getGlobalGetName(expr: ExpressionRef): string | null {\n return readString(_BinaryenGlobalGetGetName(expr));\n}\n\nexport function getBinaryOp(expr: ExpressionRef): BinaryOp {\n return _BinaryenBinaryGetOp(expr);\n}\n\nexport function getBinaryLeft(expr: ExpressionRef): ExpressionRef {\n return _BinaryenBinaryGetLeft(expr);\n}\n\nexport function getBinaryRight(expr: ExpressionRef): ExpressionRef {\n return _BinaryenBinaryGetRight(expr);\n}\n\nexport function getUnaryOp(expr: ExpressionRef): UnaryOp {\n return _BinaryenUnaryGetOp(expr);\n}\n\nexport function getUnaryValue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenUnaryGetValue(expr);\n}\n\nexport function getLoadBytes(expr: ExpressionRef): u32 {\n return _BinaryenLoadGetBytes(expr);\n}\n\nexport function getLoadOffset(expr: ExpressionRef): u32 {\n return _BinaryenLoadGetOffset(expr);\n}\n\nexport function getLoadPtr(expr: ExpressionRef): ExpressionRef {\n return _BinaryenLoadGetPtr(expr);\n}\n\nexport function isLoadSigned(expr: ExpressionRef): bool {\n return _BinaryenLoadIsSigned(expr);\n}\n\nexport function getStoreBytes(expr: ExpressionRef): u32 {\n return _BinaryenStoreGetBytes(expr);\n}\n\nexport function getStoreOffset(expr: ExpressionRef): u32 {\n return _BinaryenStoreGetOffset(expr);\n}\n\nexport function getStorePtr(expr: ExpressionRef): ExpressionRef {\n return _BinaryenStoreGetPtr(expr);\n}\n\nexport function getStoreValue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenStoreGetValue(expr);\n}\n\nexport function getBlockName(expr: ExpressionRef): string | null {\n return readString(_BinaryenBlockGetName(expr));\n}\n\nexport function getBlockChildCount(expr: ExpressionRef): Index {\n return _BinaryenBlockGetNumChildren(expr);\n}\n\nexport function getBlockChild(expr: ExpressionRef, index: Index): ExpressionRef {\n return _BinaryenBlockGetChild(expr, index);\n}\n\nexport function getIfCondition(expr: ExpressionRef): ExpressionRef {\n return _BinaryenIfGetCondition(expr);\n}\n\nexport function getIfTrue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenIfGetIfTrue(expr);\n}\n\nexport function getIfFalse(expr: ExpressionRef): ExpressionRef {\n return _BinaryenIfGetIfFalse(expr);\n}\n\nexport function getLoopName(expr: ExpressionRef): string | null {\n return readString(_BinaryenLoopGetName(expr));\n}\n\nexport function getLoopBody(expr: ExpressionRef): ExpressionRef {\n return _BinaryenLoopGetBody(expr);\n}\n\nexport function getBreakName(expr: ExpressionRef): string | null {\n return readString(_BinaryenBreakGetName(expr));\n}\n\nexport function getBreakCondition(expr: ExpressionRef): ExpressionRef {\n return _BinaryenBreakGetCondition(expr);\n}\n\nexport function getSelectThen(expr: ExpressionRef): ExpressionRef {\n return _BinaryenSelectGetIfTrue(expr);\n}\n\nexport function getSelectElse(expr: ExpressionRef): ExpressionRef {\n return _BinaryenSelectGetIfFalse(expr);\n}\n\nexport function getSelectCondition(expr: ExpressionRef): ExpressionRef {\n return _BinaryenSelectGetCondition(expr);\n}\n\nexport function getDropValue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenDropGetValue(expr);\n}\n\nexport function getReturnValue(expr: ExpressionRef): ExpressionRef {\n return _BinaryenReturnGetValue(expr);\n}\n\nexport function getCallTarget(expr: ExpressionRef): string | null {\n return readString(_BinaryenCallGetTarget(expr));\n}\n\nexport function getCallOperandCount(expr: ExpressionRef): i32 {\n return _BinaryenCallGetNumOperands(expr);\n}\n\nexport function getCallOperand(expr: ExpressionRef, index: Index): ExpressionRef {\n return _BinaryenCallGetOperand(expr, index);\n}\n\nexport function getHostOp(expr: ExpressionRef): ExpressionRef {\n return _BinaryenHostGetOp(expr);\n}\n\nexport function getHostOperandCount(expr: ExpressionRef): Index {\n return _BinaryenHostGetNumOperands(expr);\n}\n\nexport function getHostOperand(expr: ExpressionRef, index: Index): ExpressionRef {\n return _BinaryenHostGetOperand(expr, index);\n}\n\nexport function getHostName(expr: ExpressionRef): string | null {\n return readString(_BinaryenHostGetNameOperand(expr));\n}\n\n// functions\n\nexport function getFunctionBody(func: FunctionRef): ExpressionRef {\n return _BinaryenFunctionGetBody(func);\n}\n\nexport function getFunctionName(func: FunctionRef): string | null {\n return readString(_BinaryenFunctionGetName(func));\n}\n\nexport function getFunctionParamCount(func: FunctionRef): Index {\n return _BinaryenFunctionGetNumParams(func);\n}\n\nexport function getFunctionParamType(func: FunctionRef, index: Index): NativeType {\n return _BinaryenFunctionGetParam(func, index);\n}\n\nexport function getFunctionResultType(func: FunctionRef): NativeType {\n return _BinaryenFunctionGetResult(func);\n}\n\nexport class Relooper {\n\n module: Module;\n ref: RelooperRef;\n\n static create(module: Module): Relooper {\n var relooper = new Relooper();\n relooper.module = module;\n relooper.ref = _RelooperCreate(module.ref);\n return relooper;\n }\n\n private constructor() {}\n\n addBlock(code: ExpressionRef): RelooperBlockRef {\n return _RelooperAddBlock(this.ref, code);\n }\n\n addBranch(\n from: RelooperBlockRef,\n to: RelooperBlockRef,\n condition: ExpressionRef = 0,\n code: ExpressionRef = 0\n ): void {\n _RelooperAddBranch(from, to, condition, code);\n }\n\n addBlockWithSwitch(code: ExpressionRef, condition: ExpressionRef): RelooperBlockRef {\n return _RelooperAddBlockWithSwitch(this.ref, code, condition);\n }\n\n addBranchForSwitch(\n from: RelooperBlockRef,\n to: RelooperBlockRef,\n indexes: i32[],\n code: ExpressionRef = 0\n ): void {\n var cArr = allocI32Array(indexes);\n try {\n _RelooperAddBranchForSwitch(from, to, cArr, indexes.length, code);\n } finally {\n memory.free(cArr);\n }\n }\n\n renderAndDispose(entry: RelooperBlockRef, labelHelper: Index): ExpressionRef {\n return _RelooperRenderAndDispose(this.ref, entry, labelHelper);\n }\n}\n\n// export function hasSideEffects(expr: ExpressionRef): bool {\n// // TODO: there's more\n// switch (_BinaryenExpressionGetId(expr)) {\n// case ExpressionId.LocalGet:\n// case ExpressionId.GlobalGet:\n// case ExpressionId.Const:\n// case ExpressionId.Nop: {\n// return false;\n// }\n// case ExpressionId.Block: {\n// for (let i = 0, k = _BinaryenBlockGetNumChildren(expr); i < k; ++i) {\n// if (hasSideEffects(_BinaryenBlockGetChild(expr, i))) return true;\n// }\n// return false;\n// }\n// case ExpressionId.If: {\n// return hasSideEffects(_BinaryenIfGetCondition(expr))\n// || hasSideEffects(_BinaryenIfGetIfTrue(expr))\n// || hasSideEffects(_BinaryenIfGetIfFalse(expr));\n// }\n// case ExpressionId.Unary: {\n// return hasSideEffects(_BinaryenUnaryGetValue(expr));\n// }\n// case ExpressionId.Binary: {\n// return hasSideEffects(_BinaryenBinaryGetLeft(expr))\n// || hasSideEffects(_BinaryenBinaryGetRight(expr));\n// }\n// case ExpressionId.Drop: {\n// return hasSideEffects(_BinaryenDropGetValue(expr));\n// }\n// case ExpressionId.Select: {\n// return hasSideEffects(_BinaryenSelectGetIfTrue(expr))\n// || hasSideEffects(_BinaryenSelectGetIfFalse(expr))\n// || hasSideEffects(_BinaryenSelectGetCondition(expr));\n// }\n// }\n// return true;\n// }\n\n// helpers\n// can't do stack allocation here: STACKTOP is a global in WASM but a hidden variable in asm.js\n\nfunction allocU8Array(u8s: Uint8Array | null): usize {\n if (!u8s) return 0;\n var numValues = u8s.length;\n var ptr = memory.allocate(numValues);\n var idx = ptr;\n for (let i = 0; i < numValues; ++i) {\n store(idx++, u8s[i]);\n }\n return ptr;\n}\n\nfunction allocI32Array(i32s: i32[] | null): usize {\n if (!i32s) return 0;\n var ptr = memory.allocate(i32s.length << 2);\n var idx = ptr;\n for (let i = 0, k = i32s.length; i < k; ++i) {\n let val = i32s[i];\n // store(idx, val) is not portable\n store(idx , ( val & 0xff) as u8);\n store(idx + 1, ((val >> 8) & 0xff) as u8);\n store(idx + 2, ((val >> 16) & 0xff) as u8);\n store(idx + 3, ( val >>> 24 ) as u8);\n idx += 4;\n }\n return ptr;\n}\n\nfunction allocPtrArray(ptrs: usize[] | null): usize {\n return allocI32Array(ptrs); // TODO: WASM64 one day\n}\n\nfunction stringLengthUTF8(str: string): usize {\n var len = 0;\n for (let i = 0, k = str.length; i < k; ++i) {\n let u = str.charCodeAt(i);\n if (u >= 0xD800 && u <= 0xDFFF && i + 1 < k) {\n u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);\n }\n if (u <= 0x7F) {\n ++len;\n } else if (u <= 0x7FF) {\n len += 2;\n } else if (u <= 0xFFFF) {\n len += 3;\n } else if (u <= 0x1FFFFF) {\n len += 4;\n } else if (u <= 0x3FFFFFF) {\n len += 5;\n } else {\n len += 6;\n }\n }\n return len;\n}\n\nfunction allocString(str: string | null): usize {\n if (str == null) return 0;\n var ptr = memory.allocate(stringLengthUTF8(str) + 1);\n // the following is based on Emscripten's stringToUTF8Array\n var idx = ptr;\n for (let i = 0, k = str.length; i < k; ++i) {\n let u = str.charCodeAt(i);\n if (u >= 0xD800 && u <= 0xDFFF && i + 1 < k) {\n u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);\n }\n if (u <= 0x7F) {\n store(idx++, u as u8);\n } else if (u <= 0x7FF) {\n store(idx++, (0xC0 | (u >>> 6) ) as u8);\n store(idx++, (0x80 | ( u & 63)) as u8);\n } else if (u <= 0xFFFF) {\n store(idx++, (0xE0 | (u >>> 12) ) as u8);\n store(idx++, (0x80 | ((u >>> 6) & 63)) as u8);\n store(idx++, (0x80 | ( u & 63)) as u8);\n } else if (u <= 0x1FFFFF) {\n store(idx++, (0xF0 | (u >>> 18) ) as u8);\n store(idx++, (0x80 | ((u >>> 12) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 6) & 63)) as u8);\n store(idx++, (0x80 | ( u & 63)) as u8);\n } else if (u <= 0x3FFFFFF) {\n store(idx++, (0xF8 | (u >>> 24) ) as u8);\n store(idx++, (0x80 | ((u >>> 18) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 12) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 6) & 63)) as u8);\n store(idx++, (0x80 | ( u & 63)) as u8);\n } else {\n store(idx++, (0xFC | (u >>> 30) ) as u8);\n store(idx++, (0x80 | ((u >>> 24) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 18) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 12) & 63)) as u8);\n store(idx++, (0x80 | ((u >>> 6) & 63)) as u8);\n store(idx++, (0x80 | ( u & 63)) as u8);\n }\n }\n store(idx, 0);\n return ptr;\n}\n\nfunction readInt(ptr: usize): i32 {\n return (\n load(ptr ) |\n (load(ptr + 1) << 8) |\n (load(ptr + 2) << 16) |\n (load(ptr + 3) << 24)\n );\n}\n\nfunction readBuffer(ptr: usize, length: usize): Uint8Array {\n var ret = new Uint8Array(length);\n for (let i: usize = 0; i < length; ++i) {\n ret[i] = load(ptr + i);\n }\n return ret;\n}\n\nexport function readString(ptr: usize): string | null {\n if (!ptr) return null;\n var arr = new Array();\n // the following is based on Emscripten's UTF8ArrayToString\n var cp: u32;\n var u1: u32, u2: u32, u3: u32, u4: u32, u5: u32;\n while (cp = load(ptr++)) {\n if (!(cp & 0x80)) {\n arr.push(cp);\n continue;\n }\n u1 = load(ptr++) & 63;\n if ((cp & 0xE0) == 0xC0) {\n arr.push(((cp & 31) << 6) | u1);\n continue;\n }\n u2 = load(ptr++) & 63;\n if ((cp & 0xF0) == 0xE0) {\n cp = ((cp & 15) << 12) | (u1 << 6) | u2;\n } else {\n u3 = load(ptr++) & 63;\n if ((cp & 0xF8) == 0xF0) {\n cp = ((cp & 7) << 18) | (u1 << 12) | (u2 << 6) | u3;\n } else {\n u4 = load(ptr++) & 63;\n if ((cp & 0xFC) == 0xF8) {\n cp = ((cp & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4;\n } else {\n u5 = load(ptr++) & 63;\n cp = ((cp & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5;\n }\n }\n }\n arr.push(cp);\n // if (cp < 0x10000) {\n // arr.push(cp);\n // } else {\n // var ch = cp - 0x10000;\n // arr.push(0xD800 | (ch >> 10));\n // arr.push(0xDC00 | (ch & 0x3FF));\n // }\n }\n // return String.fromCharCodes(arr);\n return String.fromCodePoints(arr);\n}\n\n/** Result structure of {@link Module#toBinary}. */\nexport class BinaryModule {\n /** WebAssembly binary. */\n output: Uint8Array;\n /** Source map, if generated. */\n sourceMap: string | null;\n}\n\n/** Tests if an expression needs an explicit 'unreachable' when it is the terminating statement. */\nexport function needsExplicitUnreachable(expr: ExpressionRef): bool {\n // not applicable if pushing a value to the stack\n if (_BinaryenExpressionGetType(expr) != NativeType.Unreachable) return false;\n\n switch (_BinaryenExpressionGetId(expr)) {\n case ExpressionId.Unreachable:\n case ExpressionId.Return: return false;\n case ExpressionId.Break: return _BinaryenBreakGetCondition(expr) != 0;\n case ExpressionId.Block: {\n if (!_BinaryenBlockGetName(expr)) { // can't break out of it\n let numChildren = _BinaryenBlockGetNumChildren(expr); // last child needs unreachable\n return numChildren > 0 && needsExplicitUnreachable(_BinaryenBlockGetChild(expr, numChildren - 1));\n }\n }\n }\n return true;\n}\n\n/** Traverses all expression members of an expression, calling the given visitor. */\nexport function traverse(expr: ExpressionRef, data: T, visit: (expr: ExpressionRef, data: T) => void): bool {\n switch (getExpressionId(expr)) {\n case ExpressionId.Block: {\n for (let i = 0, n = _BinaryenBlockGetNumChildren(expr); i < n; ++i) {\n visit(_BinaryenBlockGetChild(expr, i), data);\n }\n break;\n }\n case ExpressionId.If: {\n visit(_BinaryenIfGetCondition(expr), data);\n visit(_BinaryenIfGetIfTrue(expr), data);\n let ifFalse = _BinaryenIfGetIfFalse(expr);\n if (ifFalse) visit(ifFalse, data);\n break;\n }\n case ExpressionId.Loop: {\n visit(_BinaryenLoopGetBody(expr), data);\n break;\n }\n case ExpressionId.Break: {\n let condition = _BinaryenBreakGetCondition(expr);\n if (condition) visit(condition, data);\n break;\n }\n case ExpressionId.Switch: {\n visit(_BinaryenSwitchGetCondition(expr), data);\n break;\n }\n case ExpressionId.Call: {\n for (let i = 0, n = _BinaryenCallGetNumOperands(expr); i < n; ++i) {\n visit(_BinaryenCallGetOperand(expr, i), data);\n }\n break;\n }\n case ExpressionId.CallIndirect: {\n for (let i = 0, n = _BinaryenCallIndirectGetNumOperands(expr); i < n; ++i) {\n visit(_BinaryenCallIndirectGetOperand(expr, i), data);\n }\n break;\n }\n case ExpressionId.LocalGet: {\n break;\n }\n case ExpressionId.LocalSet: {\n visit(_BinaryenLocalSetGetValue(expr), data);\n break;\n }\n case ExpressionId.GlobalGet: {\n break;\n }\n case ExpressionId.GlobalSet: {\n visit(_BinaryenGlobalSetGetValue(expr), data);\n break;\n }\n case ExpressionId.Load: {\n visit(_BinaryenLoadGetPtr(expr), data);\n break;\n }\n case ExpressionId.Store: {\n visit(_BinaryenStoreGetPtr(expr), data);\n visit(_BinaryenStoreGetValue(expr), data);\n break;\n }\n case ExpressionId.AtomicRMW: {\n visit(_BinaryenAtomicRMWGetPtr(expr), data);\n visit(_BinaryenAtomicRMWGetValue(expr), data);\n break;\n }\n case ExpressionId.AtomicCmpxchg: {\n visit(_BinaryenAtomicCmpxchgGetPtr(expr), data);\n visit(_BinaryenAtomicCmpxchgGetExpected(expr), data);\n visit(_BinaryenAtomicCmpxchgGetReplacement(expr), data);\n break;\n }\n case ExpressionId.AtomicWait: {\n visit(_BinaryenAtomicWaitGetPtr(expr), data);\n visit(_BinaryenAtomicWaitGetExpected(expr), data);\n visit(_BinaryenAtomicWaitGetTimeout(expr), data);\n break;\n }\n case ExpressionId.AtomicNotify: {\n visit(_BinaryenAtomicNotifyGetPtr(expr), data);\n break;\n }\n case ExpressionId.SIMDExtract: {\n visit(_BinaryenSIMDExtractGetVec(expr), data);\n break;\n }\n case ExpressionId.SIMDReplace: {\n visit(_BinaryenSIMDReplaceGetVec(expr), data);\n visit(_BinaryenSIMDReplaceGetValue(expr), data);\n break;\n }\n case ExpressionId.SIMDShuffle: {\n visit(_BinaryenSIMDShuffleGetLeft(expr), data);\n visit(_BinaryenSIMDShuffleGetRight(expr), data);\n break;\n }\n case ExpressionId.SIMDBitselect: {\n visit(_BinaryenSIMDBitselectGetLeft(expr), data);\n visit(_BinaryenSIMDBitselectGetRight(expr), data);\n visit(_BinaryenSIMDBitselectGetCond(expr), data);\n break;\n }\n case ExpressionId.SIMDShift: {\n visit(_BinaryenSIMDShiftGetVec(expr), data);\n visit(_BinaryenSIMDShiftGetShift(expr), data);\n break;\n }\n case ExpressionId.MemoryInit: {\n visit(_BinaryenMemoryInitGetDest(expr), data);\n visit(_BinaryenMemoryInitGetOffset(expr), data);\n visit(_BinaryenMemoryInitGetSize(expr), data);\n break;\n }\n case ExpressionId.DataDrop: {\n break;\n }\n case ExpressionId.MemoryCopy: {\n visit(_BinaryenMemoryCopyGetDest(expr), data);\n visit(_BinaryenMemoryCopyGetSource(expr), data);\n visit(_BinaryenMemoryCopyGetSize(expr), data);\n break;\n }\n case ExpressionId.MemoryFill: {\n visit(_BinaryenMemoryFillGetDest(expr), data);\n visit(_BinaryenMemoryFillGetValue(expr), data);\n visit(_BinaryenMemoryFillGetSize(expr), data);\n break;\n }\n case ExpressionId.Const: {\n break;\n }\n case ExpressionId.Unary: {\n visit(_BinaryenUnaryGetValue(expr), data);\n break;\n }\n case ExpressionId.Binary: {\n visit(_BinaryenBinaryGetLeft(expr), data);\n visit(_BinaryenBinaryGetRight(expr), data);\n break;\n }\n case ExpressionId.Select: {\n visit(_BinaryenSelectGetIfTrue(expr), data);\n visit(_BinaryenSelectGetIfFalse(expr), data);\n visit(_BinaryenSelectGetCondition(expr), data);\n break;\n }\n case ExpressionId.Drop: {\n visit(_BinaryenDropGetValue(expr), data);\n break;\n }\n case ExpressionId.Return: {\n visit(_BinaryenReturnGetValue(expr), data);\n break;\n }\n case ExpressionId.Host: {\n for (let i = 0, n = _BinaryenHostGetNumOperands(expr); i < n; ++i) {\n visit(_BinaryenHostGetOperand(expr, i), data);\n }\n break;\n }\n case ExpressionId.Nop: {\n break;\n }\n case ExpressionId.Unreachable: {\n break;\n }\n default: assert(false);\n }\n return true;\n}\n","/**\n * Mappings from AssemblyScript types to WebAssembly types.\n * @module types\n *//***/\n\nimport {\n Class,\n FunctionTarget,\n Program,\n DecoratorFlags\n} from \"./program\";\n\nimport {\n NativeType,\n ExpressionRef,\n Module\n} from \"./module\";\n\n/** Indicates the kind of a type. */\nexport const enum TypeKind {\n\n // signed integers\n\n /** An 8-bit signed integer. */\n I8,\n /** A 16-bit signed integer. */\n I16,\n /** A 32-bit signed integer. */\n I32,\n /** A 64-bit signed integer. */\n I64,\n /** A 32-bit/64-bit signed integer, depending on the target. */\n ISIZE,\n\n // unsigned integers\n\n /** An 8-bit unsigned integer. */\n U8,\n /** A 16-bit unsigned integer. */\n U16,\n /** A 32-bit unsigned integer. Also the base of function types. */\n U32,\n /** A 64-bit unsigned integer. */\n U64,\n /** A 32-bit/64-bit unsigned integer, depending on the target. Also the base of class types. */\n USIZE,\n /** A 1-bit unsigned integer. */\n BOOL, // sic\n\n // floats\n\n /** A 32-bit float. */\n F32,\n /** A 64-bit double. */\n F64,\n\n // vectors\n\n /** A 128-bit vector. */\n V128,\n\n // other\n\n /** No return type. */\n VOID\n}\n\n/** Indicates capabilities of a type. */\nexport const enum TypeFlags {\n NONE = 0,\n /** Is a signed type that can represent negative values. */\n SIGNED = 1 << 0,\n /** Is an unsigned type that cannot represent negative values. */\n UNSIGNED = 1 << 1,\n /** Is an integer type. */\n INTEGER = 1 << 2,\n /** Is a floating point type. */\n FLOAT = 1 << 3,\n /** Is a pointer type. */\n POINTER = 1 << 4,\n /** Is smaller than 32-bits. */\n SHORT = 1 << 5,\n /** Is larger than 32-bits. */\n LONG = 1 << 6,\n /** Is a value type. */\n VALUE = 1 << 7,\n /** Is a reference type. */\n REFERENCE = 1 << 8,\n /** Is a nullable type. */\n NULLABLE = 1 << 9,\n /** Is a vector type. */\n VECTOR = 1 << 10\n}\n\nconst v128_zero = new Uint8Array(16);\n\n/** Represents a resolved type. */\nexport class Type {\n\n /** Type kind. */\n kind: TypeKind;\n /** Type flags. */\n flags: TypeFlags;\n /** Size in bits. */\n size: u32;\n /** Size in bytes. */\n byteSize: i32;\n /** Underlying class reference, if a class type. */\n classReference: Class | null;\n /** Underlying signature reference, if a function type. */\n signatureReference: Signature | null;\n /** Respective non-nullable type, if nullable. */\n nonNullableType: Type;\n /** Cached nullable type, if non-nullable. */\n private cachedNullableType: Type | null = null;\n\n /** Constructs a new resolved type. */\n constructor(kind: TypeKind, flags: TypeFlags, size: u32) {\n this.kind = kind;\n this.flags = flags;\n this.size = size;\n this.byteSize = ceil(size / 8);\n this.classReference = null;\n this.signatureReference = null;\n this.nonNullableType = this;\n }\n\n /** Returns the closest int type representing this type. */\n get intType(): Type {\n switch (this.kind) {\n case TypeKind.I8: return Type.i8;\n case TypeKind.I16: return Type.i16;\n case TypeKind.F32:\n case TypeKind.I32: return Type.i32;\n case TypeKind.F64:\n case TypeKind.I64: return Type.i64;\n case TypeKind.ISIZE: return this.size == 64 ? Type.isize64 : Type.isize32;\n case TypeKind.U8: return Type.u8;\n case TypeKind.U16: return Type.u16;\n case TypeKind.U32: return Type.u32;\n case TypeKind.U64: return Type.u64;\n case TypeKind.USIZE: return this.size == 64 ? Type.usize64 : Type.usize32;\n case TypeKind.BOOL:\n default: return Type.i32;\n }\n }\n\n /** Substitutes this type with the auto type if this type is void. */\n get exceptVoid(): Type {\n if (this.kind == TypeKind.VOID) return Type.auto;\n return this;\n }\n\n /** Gets this type's logarithmic alignment in memory. */\n get alignLog2(): i32 {\n return 31 - clz(this.byteSize);\n }\n\n /** Tests if this is a managed type that needs GC hooks. */\n get isManaged(): bool {\n var classReference = this.classReference;\n return classReference !== null && !classReference.hasDecorator(DecoratorFlags.UNMANAGED);\n }\n\n /** Tests if this is a class type explicitly annotated as unmanaged. */\n get isUnmanaged(): bool {\n var classReference = this.classReference;\n return classReference !== null && classReference.hasDecorator(DecoratorFlags.UNMANAGED);\n }\n\n /** Computes the sign-extending shift in the target type. */\n computeSmallIntegerShift(targetType: Type): u32 {\n return targetType.size - this.size;\n }\n\n /** Computes the truncating mask in the target type. */\n computeSmallIntegerMask(targetType: Type): u32 {\n var size = this.is(TypeFlags.UNSIGNED) ? this.size : this.size - 1;\n return ~0 >>> (targetType.size - size);\n }\n\n /** Tests if this type has (all of) the specified flags. */\n is(flags: TypeFlags): bool { return (this.flags & flags) == flags; }\n /** Tests if this type has any of the specified flags. */\n isAny(flags: TypeFlags): bool { return (this.flags & flags) != 0; }\n\n /** Composes a class type from this type and a class. */\n asClass(classType: Class): Type {\n assert(this.kind == TypeKind.USIZE && !this.classReference);\n var ret = new Type(this.kind, this.flags & ~TypeFlags.VALUE | TypeFlags.REFERENCE, this.size);\n ret.classReference = classType;\n return ret;\n }\n\n /** Composes a function type from this type and a function. */\n asFunction(signature: Signature): Type {\n assert(this.kind == TypeKind.U32 && !this.signatureReference);\n var ret = new Type(this.kind, this.flags & ~TypeFlags.VALUE | TypeFlags.REFERENCE, this.size);\n ret.signatureReference = signature;\n return ret;\n }\n\n /** Composes the respective nullable type of this type. */\n asNullable(): Type {\n assert(this.is(TypeFlags.REFERENCE));\n if (!this.cachedNullableType) {\n assert(!this.is(TypeFlags.NULLABLE));\n this.cachedNullableType = new Type(this.kind, this.flags | TypeFlags.NULLABLE, this.size);\n this.cachedNullableType.nonNullableType = this;\n this.cachedNullableType.classReference = this.classReference; // either a class reference\n this.cachedNullableType.signatureReference = this.signatureReference; // or a function reference\n }\n return this.cachedNullableType;\n }\n\n /** Tests if a value of this type is assignable to the target type incl. implicit conversion. */\n isAssignableTo(target: Type, signednessIsRelevant: bool = false): bool {\n var currentClass: Class | null;\n var targetClass: Class | null;\n var currentFunction: Signature | null;\n var targetFunction: Signature | null;\n if (this.is(TypeFlags.REFERENCE)) {\n if (target.is(TypeFlags.REFERENCE)) {\n if (!this.is(TypeFlags.NULLABLE) || target.is(TypeFlags.NULLABLE)) {\n if (currentClass = this.classReference) {\n if (targetClass = target.classReference) {\n return currentClass.isAssignableTo(targetClass);\n }\n } else if (currentFunction = this.signatureReference) {\n if (targetFunction = target.signatureReference) {\n return currentFunction.isAssignableTo(targetFunction);\n }\n }\n }\n }\n } else if (!target.is(TypeFlags.REFERENCE)) {\n if (this.is(TypeFlags.INTEGER)) {\n if (target.is(TypeFlags.INTEGER)) {\n if (\n !signednessIsRelevant ||\n this == Type.bool || // a bool (0 or 1) can be safely assigned to all sorts of integers\n this.is(TypeFlags.SIGNED) == target.is(TypeFlags.SIGNED)\n ) {\n return this.size <= target.size;\n }\n } else if (target.kind == TypeKind.F32) {\n return this.size <= 23; // mantissa bits\n } else if (target.kind == TypeKind.F64) {\n return this.size <= 52; // ^\n }\n } else if (this.is(TypeFlags.FLOAT)) {\n if (target.is(TypeFlags.FLOAT)) {\n return this.size <= target.size;\n }\n } else if (this.is(TypeFlags.VECTOR)) {\n if (target.is(TypeFlags.VECTOR)) {\n return this.size == target.size;\n }\n }\n }\n return false;\n }\n\n /** Tests if a value of this type is assignable to the target type excl. implicit conversion. */\n isStrictlyAssignableTo(target: Type, signednessIsRelevant: bool = false): bool {\n if (this.is(TypeFlags.REFERENCE)) return this.isAssignableTo(target);\n else if (target.is(TypeFlags.REFERENCE)) return false;\n if (this.is(TypeFlags.INTEGER)) {\n return target.is(TypeFlags.INTEGER) && target.size == this.size && (\n !signednessIsRelevant || this.is(TypeFlags.SIGNED) == target.is(TypeFlags.SIGNED)\n );\n }\n return this.kind == target.kind;\n }\n\n /** Determines the common denominator type of two types, if there is any. */\n static commonDenominator(left: Type, right: Type, signednessIsImportant: bool): Type | null {\n if (right.isAssignableTo(left, signednessIsImportant)) return left;\n else if (left.isAssignableTo(right, signednessIsImportant)) return right;\n return null;\n }\n\n /** Converts this type to a string. */\n toString(): string {\n if (this.is(TypeFlags.REFERENCE)) {\n let classReference = this.classReference;\n if (classReference) {\n return this.is(TypeFlags.NULLABLE)\n ? classReference.internalName + \" | null\"\n : classReference.internalName;\n }\n let signatureReference = this.signatureReference;\n if (signatureReference) {\n return this.is(TypeFlags.NULLABLE)\n ? \"(\" + signatureReference.toString() + \") | null\"\n : signatureReference.toString();\n }\n assert(false);\n }\n switch (this.kind) {\n case TypeKind.I8: return \"i8\";\n case TypeKind.I16: return \"i16\";\n case TypeKind.I32: return \"i32\";\n case TypeKind.I64: return \"i64\";\n case TypeKind.ISIZE: return \"isize\";\n case TypeKind.U8: return \"u8\";\n case TypeKind.U16: return \"u16\";\n case TypeKind.U32: return \"u32\";\n case TypeKind.U64: return \"u64\";\n case TypeKind.USIZE: return \"usize\";\n case TypeKind.BOOL: return \"bool\";\n case TypeKind.F32: return \"f32\";\n case TypeKind.F64: return \"f64\";\n case TypeKind.V128: return \"v128\";\n default: assert(false);\n case TypeKind.VOID: return \"void\";\n }\n }\n\n // Binaryen specific\n\n /** Converts this type to its respective native type. */\n toNativeType(): NativeType {\n switch (this.kind) {\n default: return NativeType.I32;\n case TypeKind.I64:\n case TypeKind.U64: return NativeType.I64;\n case TypeKind.ISIZE:\n case TypeKind.USIZE: return this.size == 64 ? NativeType.I64 : NativeType.I32;\n case TypeKind.F32: return NativeType.F32;\n case TypeKind.F64: return NativeType.F64;\n case TypeKind.V128: return NativeType.V128;\n case TypeKind.VOID: return NativeType.None;\n }\n }\n\n /** Converts this type to its native `0` value. */\n toNativeZero(module: Module): ExpressionRef {\n switch (this.kind) {\n case TypeKind.VOID: assert(false);\n default: return module.i32(0);\n case TypeKind.ISIZE:\n case TypeKind.USIZE: if (this.size != 64) return module.i32(0);\n case TypeKind.I64:\n case TypeKind.U64: return module.i64(0);\n case TypeKind.F32: return module.f32(0);\n case TypeKind.F64: return module.f64(0);\n case TypeKind.V128: return module.v128(v128_zero);\n }\n }\n\n /** Converts this type to its native `1` value. */\n toNativeOne(module: Module): ExpressionRef {\n switch (this.kind) {\n case TypeKind.V128:\n case TypeKind.VOID: assert(false);\n default: return module.i32(1);\n case TypeKind.ISIZE:\n case TypeKind.USIZE: if (this.size != 64) return module.i32(1);\n case TypeKind.I64:\n case TypeKind.U64: return module.i64(1);\n case TypeKind.F32: return module.f32(1);\n case TypeKind.F64: return module.f64(1);\n }\n }\n\n /** Converts this type to its native `-1` value. */\n toNativeNegOne(module: Module): ExpressionRef {\n switch (this.kind) {\n case TypeKind.V128:\n case TypeKind.VOID: assert(false);\n default: return module.i32(-1);\n case TypeKind.ISIZE:\n case TypeKind.USIZE: if (this.size != 64) return module.i32(-1);\n case TypeKind.I64:\n case TypeKind.U64: return module.i64(-1, -1);\n case TypeKind.F32: return module.f32(-1);\n case TypeKind.F64: return module.f64(-1);\n }\n }\n\n /** Converts this type to its signature string. */\n toSignatureString(): string {\n switch (this.kind) {\n // same naming scheme as Binaryen\n case TypeKind.I8:\n case TypeKind.U8:\n case TypeKind.I16:\n case TypeKind.U16:\n case TypeKind.I32:\n case TypeKind.U32:\n case TypeKind.BOOL: return \"i\";\n case TypeKind.I64:\n case TypeKind.U64: return \"j\";\n case TypeKind.ISIZE:\n case TypeKind.USIZE: return this.size == 64 ? \"j\" : \"i\";\n case TypeKind.F32: return \"f\";\n case TypeKind.F64: return \"d\";\n case TypeKind.V128: return \"V\";\n case TypeKind.VOID: return \"v\";\n default: assert(false);\n }\n return \"i\";\n }\n\n // Types\n\n /** An 8-bit signed integer. */\n static readonly i8: Type = new Type(TypeKind.I8,\n TypeFlags.SIGNED |\n TypeFlags.SHORT |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 8\n );\n\n /** A 16-bit signed integer. */\n static readonly i16: Type = new Type(TypeKind.I16,\n TypeFlags.SIGNED |\n TypeFlags.SHORT |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 16\n );\n\n /** A 32-bit signed integer. */\n static readonly i32: Type = new Type(TypeKind.I32,\n TypeFlags.SIGNED |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 32\n );\n\n /** A 64-bit signed integer. */\n static readonly i64: Type = new Type(TypeKind.I64,\n TypeFlags.SIGNED |\n TypeFlags.LONG |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 64\n );\n\n /** A 32-bit signed size. WASM32 only. */\n static readonly isize32: Type = new Type(TypeKind.ISIZE,\n TypeFlags.SIGNED |\n TypeFlags.INTEGER |\n TypeFlags.POINTER |\n TypeFlags.VALUE, 32\n );\n\n /** A 64-bit signed size. WASM64 only. */\n static readonly isize64: Type = new Type(TypeKind.ISIZE,\n TypeFlags.SIGNED |\n TypeFlags.LONG |\n TypeFlags.INTEGER |\n TypeFlags.POINTER |\n TypeFlags.VALUE, 64\n );\n\n /** An 8-bit unsigned integer. */\n static readonly u8: Type = new Type(TypeKind.U8,\n TypeFlags.UNSIGNED |\n TypeFlags.SHORT |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 8\n );\n\n /** A 16-bit unsigned integer. */\n static readonly u16: Type = new Type(TypeKind.U16,\n TypeFlags.UNSIGNED |\n TypeFlags.SHORT |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 16\n );\n\n /** A 32-bit unsigned integer. */\n static readonly u32: Type = new Type(TypeKind.U32,\n TypeFlags.UNSIGNED |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 32\n );\n\n /** A 64-bit unsigned integer. */\n static readonly u64: Type = new Type(TypeKind.U64,\n TypeFlags.UNSIGNED |\n TypeFlags.LONG |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 64\n );\n\n /** A 32-bit unsigned size. WASM32 only. */\n static readonly usize32: Type = new Type(TypeKind.USIZE,\n TypeFlags.UNSIGNED |\n TypeFlags.INTEGER |\n TypeFlags.POINTER |\n TypeFlags.VALUE, 32\n );\n\n /** A 64-bit unsigned size. WASM64 only. */\n static readonly usize64: Type = new Type(TypeKind.USIZE,\n TypeFlags.UNSIGNED |\n TypeFlags.LONG |\n TypeFlags.INTEGER |\n TypeFlags.POINTER |\n TypeFlags.VALUE, 64\n );\n\n /** A 1-bit unsigned integer. */\n static readonly bool: Type = new Type(TypeKind.BOOL,\n TypeFlags.UNSIGNED |\n TypeFlags.SHORT |\n TypeFlags.INTEGER |\n TypeFlags.VALUE, 1\n );\n\n /** A 32-bit float. */\n static readonly f32: Type = new Type(TypeKind.F32,\n TypeFlags.SIGNED |\n TypeFlags.FLOAT |\n TypeFlags.VALUE, 32\n );\n\n /** A 64-bit float. */\n static readonly f64: Type = new Type(TypeKind.F64,\n TypeFlags.SIGNED |\n TypeFlags.LONG |\n TypeFlags.FLOAT |\n TypeFlags.VALUE, 64\n );\n\n /** A 128-bit vector. */\n static readonly v128: Type = new Type(TypeKind.V128,\n TypeFlags.VECTOR |\n TypeFlags.VALUE, 128\n );\n\n /** No return type. */\n static readonly void: Type = new Type(TypeKind.VOID, TypeFlags.NONE, 0);\n\n /** Alias of i32 indicating type inference of locals and globals with just an initializer. */\n static readonly auto: Type = new Type(Type.i32.kind, Type.i32.flags, Type.i32.size);\n}\n\n/** Converts an array of types to an array of native types. */\nexport function typesToNativeTypes(types: Type[]): NativeType[] {\n var numTypes = types.length;\n var ret = new Array(numTypes);\n for (let i = 0; i < numTypes; ++i) ret[i] = types[i].toNativeType();\n return ret;\n}\n\n/** Converts an array of types to its combined string representation. */\nexport function typesToString(types: Type[]): string {\n var numTypes = types.length;\n if (!numTypes) return \"\";\n var sb = new Array(numTypes);\n for (let i = 0; i < numTypes; ++i) sb[i] = types[i].toString();\n return sb.join(\",\");\n}\n\n/** Represents a fully resolved function signature. */\nexport class Signature {\n /** The unique program id that represents this signature. */\n id: u32 = 0;\n /** Parameter types, if any, excluding `this`. */\n parameterTypes: Type[];\n /** Parameter names, if known, excluding `this`. */\n parameterNames: string[] | null;\n /** Number of required parameters excluding `this`. Other parameters are considered optional. */\n requiredParameters: i32;\n /** Return type. */\n returnType: Type;\n /** This type, if an instance signature. */\n thisType: Type | null;\n /** Whether the last parameter is a rest parameter. */\n hasRest: bool;\n /** Cached {@link FunctionTarget}. */\n cachedFunctionTarget: FunctionTarget | null = null;\n /** Respective function type. */\n type: Type;\n /** The program that created this signature. */\n program: Program;\n\n /** Constructs a new signature. */\n constructor(\n program: Program,\n parameterTypes: Type[] | null = null,\n returnType: Type | null = null,\n thisType: Type | null = null\n ) {\n this.parameterTypes = parameterTypes ? parameterTypes : [];\n this.parameterNames = null;\n this.requiredParameters = 0;\n this.returnType = returnType ? returnType : Type.void;\n this.thisType = thisType;\n this.program = program;\n this.hasRest = false;\n this.type = Type.u32.asFunction(this);\n\n var signatureTypes = program.uniqueSignatures;\n var length = signatureTypes.length;\n for (let i = 0; i < length; i++) {\n let compare = signatureTypes[i];\n if (this.equals(compare)) {\n this.id = compare.id;\n return this;\n }\n }\n program.uniqueSignatures.push(this);\n this.id = program.nextSignatureId++;\n }\n\n asFunctionTarget(program: Program): FunctionTarget {\n var target = this.cachedFunctionTarget;\n if (!target) this.cachedFunctionTarget = target = new FunctionTarget(this, program);\n else assert(target.program == program);\n return target;\n }\n\n /** Gets the known or, alternatively, generic parameter name at the specified index. */\n getParameterName(index: i32): string {\n var parameterNames = this.parameterNames;\n return parameterNames && parameterNames.length > index\n ? parameterNames[index]\n : getDefaultParameterName(index);\n }\n\n /** Tests if a value of this function type is assignable to a target of the specified function type. */\n isAssignableTo(target: Signature): bool {\n return this.equals(target);\n }\n\n /** Tests to see if a signature equals another signature. */\n equals(value: Signature): bool {\n // TODO: maybe cache results?\n\n // check `this` type\n var thisThisType = this.thisType;\n var targetThisType = value.thisType;\n if (thisThisType) {\n if (!(targetThisType && thisThisType.isAssignableTo(targetThisType))) return false;\n } else if (targetThisType) {\n return false;\n }\n\n // check rest parameter\n if (this.hasRest != value.hasRest) return false; // TODO\n\n // check parameter types\n var thisParameterTypes = this.parameterTypes;\n var targetParameterTypes = value.parameterTypes;\n var numParameters = thisParameterTypes.length;\n if (numParameters != targetParameterTypes.length) return false;\n for (let i = 0; i < numParameters; ++i) {\n let thisParameterType = thisParameterTypes[i];\n let targetParameterType = targetParameterTypes[i];\n if (!thisParameterType.isAssignableTo(targetParameterType)) return false;\n }\n\n // check return type\n var thisReturnType = this.returnType;\n var targetReturnType = value.returnType;\n return thisReturnType == targetReturnType || thisReturnType.isAssignableTo(targetReturnType);\n }\n\n /** Converts a signature to a function type string. */\n static makeSignatureString(parameterTypes: Type[] | null, returnType: Type, thisType: Type | null = null): string {\n var sb = [];\n sb.push(returnType.toSignatureString());\n if (thisType) sb.push(thisType.toSignatureString());\n if (parameterTypes) {\n for (let i = 0, k = parameterTypes.length; i < k; ++i) sb.push(parameterTypes[i].toSignatureString());\n }\n return \"FUNCSIG$\" + sb.join(\"\");\n }\n\n /** Converts this signature to a function type string. */\n toSignatureString(): string {\n return Signature.makeSignatureString(this.parameterTypes, this.returnType, this.thisType);\n }\n\n /** Converts this signature to a string. */\n toString(): string {\n var sb = new Array();\n sb.push(\"(\");\n var index = 0;\n var thisType = this.thisType;\n if (thisType) {\n sb.push(\"this: \");\n assert(!thisType.signatureReference);\n sb.push(thisType.toString());\n index = 1;\n }\n var parameters = this.parameterTypes;\n var numParameters = parameters.length;\n if (numParameters) {\n let names = this.parameterNames;\n let numNames = names ? names.length : 0;\n let optionalStart = this.requiredParameters;\n let restIndex = this.hasRest ? numParameters - 1 : -1;\n for (let i = 0; i < numParameters; ++i, ++index) {\n if (index) sb.push(\", \");\n if (i == restIndex) sb.push(\"...\");\n if (i < numNames) sb.push((names)[i]);\n else sb.push(getDefaultParameterName(i));\n if (i >= optionalStart && i != restIndex) sb.push(\"?: \");\n else sb.push(\": \");\n sb.push(parameters[i].toString());\n }\n }\n sb.push(\") => \");\n sb.push(this.returnType.toString());\n return sb.join(\"\");\n }\n}\n\n// helpers\n\n// Cached default parameter names used where names are unknown.\nvar cachedDefaultParameterNames: string[] | null = null;\n\n/** Gets the cached default parameter name for the specified index. */\nexport function getDefaultParameterName(index: i32): string {\n if (!cachedDefaultParameterNames) cachedDefaultParameterNames = [];\n for (let i = cachedDefaultParameterNames.length; i <= index; ++i) {\n cachedDefaultParameterNames.push(\"arg$\" + i.toString(10));\n }\n return cachedDefaultParameterNames[index - 1];\n}\n","/**\n * A TypeScript tokenizer modified for AssemblyScript.\n *\n * Skips over trivia and provides a general mark/reset mechanism for the parser to utilize on\n * ambiguous tokens.\n *\n * @module tokenizer\n *//***/\n\nimport {\n DiagnosticCode,\n DiagnosticMessage,\n DiagnosticEmitter\n} from \"./diagnostics\";\n\nimport {\n Source,\n CommentKind\n} from \"./ast\";\n\nimport {\n CharCode,\n isLineBreak,\n isWhiteSpace,\n isIdentifierStart,\n isIdentifierPart,\n isDecimalDigit,\n isOctalDigit,\n isKeywordCharacter\n} from \"./util\";\n\n/** Named token types. */\nexport enum Token {\n\n // keywords\n // discarded: ANY, BOOLEAN, NEVER, NUMBER, STRING, SYMBOL, UNDEFINED, LESSTHAN_SLASH\n\n ABSTRACT,\n AS,\n ASYNC,\n AWAIT, // ES2017\n BREAK, // ES2017\n CASE, // ES2017\n CATCH, // ES2017\n CLASS, // ES2017\n CONST, // ES2017\n CONTINUE, // ES2017\n CONSTRUCTOR,\n DEBUGGER, // ES2017\n DECLARE,\n DEFAULT, // ES2017\n DELETE, // ES2017\n DO, // ES2017\n ELSE, // ES2017\n ENUM, // ES2017 future\n EXPORT, // ES2017\n EXTENDS, // ES2017\n FALSE, // ES\n FINALLY, // ES2017\n FOR, // ES2017\n FROM, // AS possible identifier\n FUNCTION, // ES2017\n GET,\n IF, // ES2017\n IMPLEMENTS, // ES2017 non-lexical\n IMPORT, // ES2017\n IN, // ES2017\n INSTANCEOF, // ES2017\n INTERFACE, // ES2017 non-lexical\n IS,\n KEYOF,\n LET, // ES2017 non-lexical\n MODULE, // AS possible identifier\n NAMESPACE, // AS possible identifier\n NEW, // ES2017\n NULL, // ES\n OF,\n PACKAGE, // ES2017 non-lexical\n PRIVATE, // ES2017 non-lexical\n PROTECTED, // ES2017 non-lexical\n PUBLIC, // ES2017 non-lexical\n READONLY,\n RETURN, // ES2017\n SET,\n STATIC, // ES2017 non-lexical\n SUPER, // ES2017\n SWITCH, // ES2017\n THIS, // ES2017\n THROW, // ES2017\n TRUE, // ES\n TRY, // ES2017\n TYPE, // AS possible identifier\n TYPEOF, // ES2017\n VAR, // ES2017\n VOID, // ES2017\n WHILE, // ES2017\n WITH, // ES2017\n YIELD, // ES2017\n\n // punctuation\n\n OPENBRACE,\n CLOSEBRACE,\n OPENPAREN,\n CLOSEPAREN,\n OPENBRACKET,\n CLOSEBRACKET,\n DOT,\n DOT_DOT_DOT,\n SEMICOLON,\n COMMA,\n LESSTHAN,\n GREATERTHAN,\n LESSTHAN_EQUALS,\n GREATERTHAN_EQUALS,\n EQUALS_EQUALS,\n EXCLAMATION_EQUALS,\n EQUALS_EQUALS_EQUALS,\n EXCLAMATION_EQUALS_EQUALS,\n EQUALS_GREATERTHAN,\n PLUS,\n MINUS,\n ASTERISK_ASTERISK,\n ASTERISK,\n SLASH,\n PERCENT,\n PLUS_PLUS,\n MINUS_MINUS,\n LESSTHAN_LESSTHAN,\n GREATERTHAN_GREATERTHAN,\n GREATERTHAN_GREATERTHAN_GREATERTHAN,\n AMPERSAND,\n BAR,\n CARET,\n EXCLAMATION,\n TILDE,\n AMPERSAND_AMPERSAND,\n BAR_BAR,\n QUESTION,\n COLON,\n EQUALS,\n PLUS_EQUALS,\n MINUS_EQUALS,\n ASTERISK_EQUALS,\n ASTERISK_ASTERISK_EQUALS,\n SLASH_EQUALS,\n PERCENT_EQUALS,\n LESSTHAN_LESSTHAN_EQUALS,\n GREATERTHAN_GREATERTHAN_EQUALS,\n GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS,\n AMPERSAND_EQUALS,\n BAR_EQUALS,\n CARET_EQUALS,\n AT,\n\n // literals\n\n IDENTIFIER,\n STRINGLITERAL,\n INTEGERLITERAL,\n FLOATLITERAL,\n\n // meta\n\n INVALID,\n ENDOFFILE\n}\n\nexport enum IdentifierHandling {\n DEFAULT,\n PREFER,\n ALWAYS\n}\n\nexport function tokenFromKeyword(text: string): Token {\n assert(text.length);\n switch (text.charCodeAt(0)) {\n case CharCode.a: {\n switch (text) {\n case \"abstract\": return Token.ABSTRACT;\n case \"as\": return Token.AS;\n case \"async\": return Token.ASYNC;\n case \"await\": return Token.AWAIT;\n }\n break;\n }\n case CharCode.b: {\n switch (text) {\n case \"break\": return Token.BREAK;\n }\n break;\n }\n case CharCode.c: {\n switch (text) {\n case \"case\": return Token.CASE;\n case \"catch\": return Token.CATCH;\n case \"class\": return Token.CLASS;\n case \"continue\": return Token.CONTINUE;\n case \"const\": return Token.CONST;\n case \"constructor\": return Token.CONSTRUCTOR;\n }\n break;\n }\n case CharCode.d: {\n switch (text) {\n case \"debugger\": return Token.DEBUGGER;\n case \"declare\": return Token.DECLARE;\n case \"default\": return Token.DEFAULT;\n case \"delete\": return Token.DELETE;\n case \"do\": return Token.DO;\n }\n break;\n }\n case CharCode.e: {\n switch (text) {\n case \"else\": return Token.ELSE;\n case \"enum\": return Token.ENUM;\n case \"export\": return Token.EXPORT;\n case \"extends\": return Token.EXTENDS;\n }\n break;\n }\n case CharCode.f: {\n switch (text) {\n case \"false\": return Token.FALSE;\n case \"finally\": return Token.FINALLY;\n case \"for\": return Token.FOR;\n case \"from\": return Token.FROM;\n case \"function\": return Token.FUNCTION;\n }\n break;\n }\n case CharCode.g: {\n switch (text) {\n case \"get\": return Token.GET;\n }\n break;\n }\n case CharCode.i: {\n switch (text) {\n case \"if\": return Token.IF;\n case \"implements\": return Token.IMPLEMENTS;\n case \"import\": return Token.IMPORT;\n case \"in\": return Token.IN;\n case \"instanceof\": return Token.INSTANCEOF;\n case \"interface\": return Token.INTERFACE;\n case \"is\": return Token.IS;\n }\n break;\n }\n case CharCode.k: {\n switch (text) {\n case \"keyof\": return Token.KEYOF;\n }\n break;\n }\n case CharCode.l: {\n switch (text) {\n case \"let\": return Token.LET;\n }\n break;\n }\n case CharCode.m: {\n switch (text) {\n case \"module\": return Token.MODULE;\n }\n break;\n }\n case CharCode.n: {\n switch (text) {\n case \"namespace\": return Token.NAMESPACE;\n case \"new\": return Token.NEW;\n case \"null\": return Token.NULL;\n }\n break;\n }\n case CharCode.o: {\n switch (text) {\n case \"of\": return Token.OF;\n }\n break;\n }\n case CharCode.p: {\n switch (text) {\n case \"package\": return Token.PACKAGE;\n case \"private\": return Token.PRIVATE;\n case \"protected\": return Token.PROTECTED;\n case \"public\": return Token.PUBLIC;\n }\n break;\n }\n case CharCode.r: {\n switch (text) {\n case \"readonly\": return Token.READONLY;\n case \"return\": return Token.RETURN;\n }\n break;\n }\n case CharCode.s: {\n switch (text) {\n case \"set\": return Token.SET;\n case \"static\": return Token.STATIC;\n case \"super\": return Token.SUPER;\n case \"switch\": return Token.SWITCH;\n }\n break;\n }\n case CharCode.t: {\n switch (text) {\n case \"this\": return Token.THIS;\n case \"throw\": return Token.THROW;\n case \"true\": return Token.TRUE;\n case \"try\": return Token.TRY;\n case \"type\": return Token.TYPE;\n case \"typeof\": return Token.TYPEOF;\n }\n break;\n }\n case CharCode.v: {\n switch (text) {\n case \"var\": return Token.VAR;\n case \"void\": return Token.VOID;\n }\n break;\n }\n case CharCode.w: {\n switch (text) {\n case \"while\": return Token.WHILE;\n case \"with\": return Token.WITH;\n }\n break;\n }\n case CharCode.y: {\n switch (text) {\n case \"yield\": return Token.YIELD;\n }\n break;\n }\n }\n return Token.INVALID;\n}\n\nexport function tokenIsAlsoIdentifier(token: Token): bool {\n switch (token) {\n case Token.ABSTRACT:\n case Token.AS:\n case Token.CONSTRUCTOR:\n case Token.DECLARE:\n case Token.DELETE:\n case Token.FROM:\n case Token.FOR:\n case Token.GET:\n case Token.INSTANCEOF:\n case Token.IS:\n case Token.KEYOF:\n case Token.MODULE:\n case Token.NAMESPACE:\n case Token.NULL:\n case Token.READONLY:\n case Token.SET:\n case Token.TYPE:\n case Token.VOID: return true;\n default: return false;\n }\n}\n\nexport function isIllegalVariableIdentifier(name: string): bool {\n assert(name.length);\n switch (name.charCodeAt(0)) {\n case CharCode.d: return name == \"delete\";\n case CharCode.f: return name == \"for\";\n case CharCode.i: return name == \"instanceof\";\n case CharCode.n: return name == \"null\";\n case CharCode.v: return name == \"void\";\n }\n return false;\n}\n\nexport function operatorTokenToString(token: Token): string {\n switch (token) {\n case Token.DELETE: return \"delete\";\n case Token.IN: return \"in\";\n case Token.INSTANCEOF: return \"instanceof\";\n case Token.NEW: return \"new\";\n case Token.TYPEOF: return \"typeof\";\n case Token.VOID: return \"void\";\n case Token.YIELD: return \"yield\";\n case Token.DOT_DOT_DOT: return \"...\";\n case Token.COMMA: return \",\";\n case Token.LESSTHAN: return \"<\";\n case Token.GREATERTHAN: return \">\";\n case Token.LESSTHAN_EQUALS: return \"<=\";\n case Token.GREATERTHAN_EQUALS: return \">=\";\n case Token.EQUALS_EQUALS: return \"==\";\n case Token.EXCLAMATION_EQUALS: return \"!=\";\n case Token.EQUALS_EQUALS_EQUALS: return \"===\";\n case Token.EXCLAMATION_EQUALS_EQUALS: return \"!==\";\n case Token.PLUS: return \"+\";\n case Token.MINUS: return \"-\";\n case Token.ASTERISK_ASTERISK: return \"**\";\n case Token.ASTERISK: return \"*\";\n case Token.SLASH: return \"/\";\n case Token.PERCENT: return \"%\";\n case Token.PLUS_PLUS: return \"++\";\n case Token.MINUS_MINUS: return \"--\";\n case Token.LESSTHAN_LESSTHAN: return \"<<\";\n case Token.GREATERTHAN_GREATERTHAN: return \">>\";\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: return \">>>\";\n case Token.AMPERSAND: return \"&\";\n case Token.BAR: return \"|\";\n case Token.CARET: return \"^\";\n case Token.EXCLAMATION: return \"!\";\n case Token.TILDE: return \"~\";\n case Token.AMPERSAND_AMPERSAND: return \"&&\";\n case Token.BAR_BAR: return \"||\";\n case Token.EQUALS: return \"=\";\n case Token.PLUS_EQUALS: return \"+=\";\n case Token.MINUS_EQUALS: return \"-=\";\n case Token.ASTERISK_EQUALS: return \"*=\";\n case Token.ASTERISK_ASTERISK_EQUALS: return \"**=\";\n case Token.SLASH_EQUALS: return \"/=\";\n case Token.PERCENT_EQUALS: return \"%=\";\n case Token.LESSTHAN_LESSTHAN_EQUALS: return \"<<=\";\n case Token.GREATERTHAN_GREATERTHAN_EQUALS: return \">>=\";\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS: return \">>>=\";\n case Token.AMPERSAND_EQUALS: return \"&=\";\n case Token.BAR_EQUALS: return \"|=\";\n case Token.CARET_EQUALS: return \"^=\";\n default: {\n assert(false);\n return \"\";\n }\n }\n}\n\nexport class Range {\n\n source: Source;\n start: i32;\n end: i32;\n\n // TODO: set these while tokenizing\n // line: i32;\n // column: i32;\n\n constructor(source: Source, start: i32, end: i32) {\n this.source = source;\n this.start = start;\n this.end = end;\n }\n\n static join(a: Range, b: Range): Range {\n if (a.source != b.source) throw new Error(\"source mismatch\");\n return new Range(a.source,\n a.start < b.start ? a.start : b.start,\n a.end > b.end ? a.end : b.end\n );\n }\n\n get atStart(): Range {\n return new Range(this.source, this.start, this.start);\n }\n\n get atEnd(): Range {\n return new Range(this.source, this.end, this.end);\n }\n\n get line(): i32 {\n var text = this.source.text;\n var line = 1;\n for (let pos = this.start; pos >= 0; --pos) {\n if (text.charCodeAt(pos) == CharCode.LINEFEED) line++;\n }\n return line;\n }\n\n get column(): i32 {\n var text = this.source.text;\n var column = 0;\n for (let pos = this.start - 1; pos >= 0; --pos) {\n if (text.charCodeAt(pos) == CharCode.LINEFEED) break;\n ++column;\n }\n return column;\n }\n\n toString(): string {\n return this.source.text.substring(this.start, this.end);\n }\n\n debugInfoRef: usize = 0;\n}\n\ndeclare function parseFloat(str: string): f64;\n\n/** Handler for intercepting comments while tokenizing. */\nexport type CommentHandler = (kind: CommentKind, text: string, range: Range) => void;\n\n/** Tokenizes a source to individual {@link Token}s. */\nexport class Tokenizer extends DiagnosticEmitter {\n\n source: Source;\n end: i32 = 0;\n\n pos: i32 = 0;\n token: Token = -1;\n tokenPos: i32 = 0;\n\n nextToken: Token = -1;\n nextTokenPos: i32 = 0;\n nextTokenOnNewLine: bool = false;\n\n onComment: CommentHandler | null = null;\n\n /** Constructs a new tokenizer. */\n constructor(source: Source, diagnostics: DiagnosticMessage[] | null = null) {\n super(diagnostics);\n\n this.source = source;\n this.pos = 0;\n this.end = source.text.length;\n this.diagnostics = diagnostics || new Array();\n\n var end = this.end;\n var text = source.text;\n\n // skip bom\n if (\n this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.BYTEORDERMARK\n ) {\n ++this.pos;\n }\n\n // skip shebang\n if (\n this.pos + 1 < end &&\n text.charCodeAt(this.pos) == CharCode.HASH &&\n text.charCodeAt(this.pos + 1) == CharCode.EXCLAMATION\n ) {\n this.pos += 2;\n while (\n this.pos < end &&\n text.charCodeAt(this.pos) != CharCode.LINEFEED\n ) {\n ++this.pos;\n }\n // 'next' now starts at lf or eof\n }\n }\n\n next(identifierHandling: IdentifierHandling = IdentifierHandling.DEFAULT): Token {\n this.nextToken = -1;\n return this.token = this.unsafeNext(identifierHandling);\n }\n\n private unsafeNext(\n identifierHandling: IdentifierHandling = IdentifierHandling.DEFAULT,\n maxTokenLength: i32 = i32.MAX_VALUE\n ): Token {\n var end = this.end;\n var text = this.source.text;\n while (this.pos < end) {\n this.tokenPos = this.pos;\n let c = text.charCodeAt(this.pos);\n switch (c) {\n case CharCode.CARRIAGERETURN: {\n if (!(\n ++this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.LINEFEED\n )) break;\n // otherwise fall-through\n }\n case CharCode.LINEFEED:\n case CharCode.TAB:\n case CharCode.VERTICALTAB:\n case CharCode.FORMFEED:\n case CharCode.SPACE: {\n ++this.pos;\n break;\n }\n case CharCode.EXCLAMATION: {\n ++this.pos;\n if (\n maxTokenLength > 1 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n if (\n maxTokenLength > 2 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.EXCLAMATION_EQUALS_EQUALS;\n }\n return Token.EXCLAMATION_EQUALS;\n }\n return Token.EXCLAMATION;\n }\n case CharCode.DOUBLEQUOTE:\n case CharCode.SINGLEQUOTE:\n case CharCode.BACKTICK: { // TODO\n return Token.STRINGLITERAL; // expects a call to readString\n }\n case CharCode.PERCENT: {\n ++this.pos;\n if (\n maxTokenLength > 1 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.PERCENT_EQUALS;\n }\n return Token.PERCENT;\n }\n case CharCode.AMPERSAND: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.AMPERSAND) {\n ++this.pos;\n return Token.AMPERSAND_AMPERSAND;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.AMPERSAND_EQUALS;\n }\n }\n return Token.AMPERSAND;\n }\n case CharCode.OPENPAREN: {\n ++this.pos;\n return Token.OPENPAREN;\n }\n case CharCode.CLOSEPAREN: {\n ++this.pos;\n return Token.CLOSEPAREN;\n }\n case CharCode.ASTERISK: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.ASTERISK_EQUALS;\n }\n if (chr == CharCode.ASTERISK) {\n ++this.pos;\n if (\n maxTokenLength > 2 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.ASTERISK_ASTERISK_EQUALS;\n }\n return Token.ASTERISK_ASTERISK;\n }\n }\n return Token.ASTERISK;\n }\n case CharCode.PLUS: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.PLUS) {\n ++this.pos;\n return Token.PLUS_PLUS;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.PLUS_EQUALS;\n }\n }\n return Token.PLUS;\n }\n case CharCode.COMMA: {\n ++this.pos;\n return Token.COMMA;\n }\n case CharCode.MINUS: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.MINUS) {\n ++this.pos;\n return Token.MINUS_MINUS;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.MINUS_EQUALS;\n }\n }\n return Token.MINUS;\n }\n case CharCode.DOT: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (isDecimalDigit(chr)) {\n --this.pos;\n return Token.FLOATLITERAL; // expects a call to readFloat\n }\n if (\n maxTokenLength > 2 && this.pos + 1 < end &&\n chr == CharCode.DOT &&\n text.charCodeAt(this.pos + 1) == CharCode.DOT\n ) {\n this.pos += 2;\n return Token.DOT_DOT_DOT;\n }\n }\n return Token.DOT;\n }\n case CharCode.SLASH: {\n let commentStartPos = this.pos;\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.SLASH) { // single-line\n let commentKind = CommentKind.LINE;\n if (\n this.pos + 1 < end &&\n text.charCodeAt(this.pos + 1) == CharCode.SLASH\n ) {\n ++this.pos;\n commentKind = CommentKind.TRIPLE;\n }\n while (++this.pos < end) {\n if (text.charCodeAt(this.pos) == CharCode.LINEFEED) {\n ++this.pos;\n break;\n }\n }\n if (this.onComment) {\n this.onComment(\n commentKind,\n text.substring(commentStartPos, this.pos),\n this.range(commentStartPos, this.pos)\n );\n }\n break;\n }\n if (chr == CharCode.ASTERISK) { // multi-line\n let closed = false;\n while (++this.pos < end) {\n c = text.charCodeAt(this.pos);\n if (\n c == CharCode.ASTERISK &&\n this.pos + 1 < end &&\n text.charCodeAt(this.pos + 1) == CharCode.SLASH\n ) {\n this.pos += 2;\n closed = true;\n break;\n }\n }\n if (!closed) {\n this.error(\n DiagnosticCode._0_expected,\n this.range(this.pos), \"*/\"\n );\n } else if (this.onComment) {\n this.onComment(\n CommentKind.BLOCK,\n text.substring(commentStartPos, this.pos),\n this.range(commentStartPos, this.pos)\n );\n }\n break;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.SLASH_EQUALS;\n }\n }\n return Token.SLASH;\n }\n case CharCode._0:\n case CharCode._1:\n case CharCode._2:\n case CharCode._3:\n case CharCode._4:\n case CharCode._5:\n case CharCode._6:\n case CharCode._7:\n case CharCode._8:\n case CharCode._9: {\n return this.testInteger()\n ? Token.INTEGERLITERAL // expects a call to readInteger\n : Token.FLOATLITERAL; // expects a call to readFloat\n }\n case CharCode.COLON: {\n ++this.pos;\n return Token.COLON;\n }\n case CharCode.SEMICOLON: {\n ++this.pos;\n return Token.SEMICOLON;\n }\n case CharCode.LESSTHAN: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.LESSTHAN) {\n ++this.pos;\n if (\n maxTokenLength > 2 &&\n this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.LESSTHAN_LESSTHAN_EQUALS;\n }\n return Token.LESSTHAN_LESSTHAN;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.LESSTHAN_EQUALS;\n }\n }\n return Token.LESSTHAN;\n }\n case CharCode.EQUALS: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n if (\n maxTokenLength > 2 &&\n this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.EQUALS_EQUALS_EQUALS;\n }\n return Token.EQUALS_EQUALS;\n }\n if (chr == CharCode.GREATERTHAN) {\n ++this.pos;\n return Token.EQUALS_GREATERTHAN;\n }\n }\n return Token.EQUALS;\n }\n case CharCode.GREATERTHAN: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.GREATERTHAN) {\n ++this.pos;\n if (maxTokenLength > 2 && this.pos < end) {\n chr = text.charCodeAt(this.pos);\n if (chr == CharCode.GREATERTHAN) {\n ++this.pos;\n if (\n maxTokenLength > 3 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS;\n }\n return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.GREATERTHAN_GREATERTHAN_EQUALS;\n }\n }\n return Token.GREATERTHAN_GREATERTHAN;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.GREATERTHAN_EQUALS;\n }\n }\n return Token.GREATERTHAN;\n }\n case CharCode.QUESTION: {\n ++this.pos;\n return Token.QUESTION;\n }\n case CharCode.OPENBRACKET: {\n ++this.pos;\n return Token.OPENBRACKET;\n }\n case CharCode.CLOSEBRACKET: {\n ++this.pos;\n return Token.CLOSEBRACKET;\n }\n case CharCode.CARET: {\n ++this.pos;\n if (\n maxTokenLength > 1 && this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.EQUALS\n ) {\n ++this.pos;\n return Token.CARET_EQUALS;\n }\n return Token.CARET;\n }\n case CharCode.OPENBRACE: {\n ++this.pos;\n return Token.OPENBRACE;\n }\n case CharCode.BAR: {\n ++this.pos;\n if (maxTokenLength > 1 && this.pos < end) {\n let chr = text.charCodeAt(this.pos);\n if (chr == CharCode.BAR) {\n ++this.pos;\n return Token.BAR_BAR;\n }\n if (chr == CharCode.EQUALS) {\n ++this.pos;\n return Token.BAR_EQUALS;\n }\n }\n return Token.BAR;\n }\n case CharCode.CLOSEBRACE: {\n ++this.pos;\n return Token.CLOSEBRACE;\n }\n case CharCode.TILDE: {\n ++this.pos;\n return Token.TILDE;\n }\n case CharCode.AT: {\n ++this.pos;\n return Token.AT;\n }\n default: {\n if (isIdentifierStart(c)) {\n if (isKeywordCharacter(c)) {\n let posBefore = this.pos;\n while (\n ++this.pos < end &&\n isIdentifierPart(c = text.charCodeAt(this.pos))\n ) {\n if (!isKeywordCharacter(c)) {\n this.pos = posBefore;\n return Token.IDENTIFIER;\n }\n }\n let keywordText = text.substring(posBefore, this.pos);\n let keywordToken = tokenFromKeyword(keywordText);\n if (\n keywordToken !== Token.INVALID &&\n identifierHandling !== IdentifierHandling.ALWAYS &&\n !(\n identifierHandling === IdentifierHandling.PREFER &&\n tokenIsAlsoIdentifier(keywordToken)\n )\n ) {\n return keywordToken;\n }\n this.pos = posBefore;\n }\n return Token.IDENTIFIER; // expects a call to readIdentifier\n } else if (isWhiteSpace(c)) {\n ++this.pos;\n break;\n }\n this.error(\n DiagnosticCode.Invalid_character,\n this.range(this.pos, this.pos + 1)\n );\n ++this.pos;\n return Token.INVALID;\n }\n }\n }\n return Token.ENDOFFILE;\n }\n\n peek(\n checkOnNewLine: bool = false,\n identifierHandling: IdentifierHandling = IdentifierHandling.DEFAULT,\n maxCompoundLength: i32 = i32.MAX_VALUE\n ): Token {\n var text = this.source.text;\n if (this.nextToken < 0) {\n let posBefore = this.pos;\n let tokenBefore = this.token;\n let tokenPosBefore = this.tokenPos;\n this.nextToken = this.unsafeNext(identifierHandling, maxCompoundLength);\n this.nextTokenPos = this.tokenPos;\n if (checkOnNewLine) {\n this.nextTokenOnNewLine = false;\n for (let pos = posBefore, end = this.nextTokenPos; pos < end; ++pos) {\n if (isLineBreak(text.charCodeAt(pos))) {\n this.nextTokenOnNewLine = true;\n break;\n }\n }\n }\n this.pos = posBefore;\n this.token = tokenBefore;\n this.tokenPos = tokenPosBefore;\n }\n return this.nextToken;\n }\n\n skipIdentifier(identifierHandling: IdentifierHandling = IdentifierHandling.PREFER): bool {\n return this.skip(Token.IDENTIFIER, identifierHandling);\n }\n\n skip(token: Token, identifierHandling: IdentifierHandling = IdentifierHandling.DEFAULT): bool {\n var posBefore = this.pos;\n var tokenBefore = this.token;\n var tokenPosBefore = this.tokenPos;\n var maxCompoundLength = i32.MAX_VALUE;\n switch (token) {\n case Token.GREATERTHAN: { // where parsing type arguments\n maxCompoundLength = 1;\n break;\n }\n }\n this.token = this.unsafeNext(identifierHandling, maxCompoundLength);\n if (this.token == token) {\n this.nextToken = -1;\n return true;\n } else {\n this.pos = posBefore;\n this.token = tokenBefore;\n this.tokenPos = tokenPosBefore;\n return false;\n }\n }\n\n mark(): State {\n var state: State;\n if (reusableState) {\n state = reusableState;\n reusableState = null;\n } else {\n state = new State();\n }\n state.pos = this.pos;\n state.token = this.token;\n state.tokenPos = this.tokenPos;\n return state;\n }\n\n discard(state: State): void {\n reusableState = state;\n }\n\n reset(state: State): void {\n this.pos = state.pos;\n this.token = state.token;\n this.tokenPos = state.tokenPos;\n this.nextToken = -1;\n }\n\n range(start: i32 = -1, end: i32 = -1): Range {\n if (start < 0) {\n start = this.tokenPos;\n end = this.pos;\n } else if (end < 0) {\n end = start;\n }\n return new Range(this.source, start, end);\n }\n\n readIdentifier(): string {\n var text = this.source.text;\n var start = this.pos;\n var end = this.end;\n while (\n ++this.pos < end &&\n isIdentifierPart(text.charCodeAt(this.pos))\n );\n return text.substring(start, this.pos);\n }\n\n readString(): string {\n var text = this.source.text;\n var quote = text.charCodeAt(this.pos++);\n var start = this.pos;\n var end = this.end;\n var result = \"\";\n while (true) {\n if (this.pos >= end) {\n result += text.substring(start, this.pos);\n this.error(\n DiagnosticCode.Unterminated_string_literal,\n this.range(start - 1, end)\n );\n break;\n }\n let c = text.charCodeAt(this.pos);\n if (c == quote) {\n result += text.substring(start, this.pos++);\n break;\n }\n if (c == CharCode.BACKSLASH) {\n result += text.substring(start, this.pos);\n result += this.readEscapeSequence();\n start = this.pos;\n continue;\n }\n if (isLineBreak(c) && quote != CharCode.BACKTICK) {\n result += text.substring(start, this.pos);\n this.error(\n DiagnosticCode.Unterminated_string_literal,\n this.range(start - 1, this.pos)\n );\n break;\n }\n ++this.pos;\n }\n return result;\n }\n\n readEscapeSequence(): string {\n var end = this.end;\n if (++this.pos >= end) {\n this.error(\n DiagnosticCode.Unexpected_end_of_text,\n this.range(end)\n );\n return \"\";\n }\n\n var text = this.source.text;\n var c = text.charCodeAt(this.pos++);\n switch (c) {\n case CharCode._0: return \"\\0\";\n case CharCode.b: return \"\\b\";\n case CharCode.t: return \"\\t\";\n case CharCode.n: return \"\\n\";\n case CharCode.v: return \"\\v\";\n case CharCode.f: return \"\\f\";\n case CharCode.r: return \"\\r\";\n case CharCode.SINGLEQUOTE: return \"'\";\n case CharCode.DOUBLEQUOTE: return \"\\\"\";\n case CharCode.u: {\n if (\n this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.OPENBRACE\n ) {\n ++this.pos;\n return this.readExtendedUnicodeEscape(); // \\u{DDDDDDDD}\n }\n return this.readUnicodeEscape(); // \\uDDDD\n }\n case CharCode.CARRIAGERETURN: {\n if (\n this.pos < end &&\n text.charCodeAt(this.pos) == CharCode.LINEFEED\n ) {\n ++this.pos;\n }\n // fall through\n }\n case CharCode.LINEFEED:\n case CharCode.LINESEPARATOR:\n case CharCode.PARAGRAPHSEPARATOR: return \"\";\n default: return String.fromCharCode(c);\n }\n }\n\n readRegexpPattern(): string {\n var text = this.source.text;\n var start = this.pos;\n var end = this.end;\n var escaped = false;\n while (true) {\n if (this.pos >= end) {\n this.error(\n DiagnosticCode.Unterminated_regular_expression_literal,\n this.range(start, end)\n );\n break;\n }\n if (text.charCodeAt(this.pos) == CharCode.BACKSLASH) {\n ++this.pos;\n escaped = true;\n continue;\n }\n let c = text.charCodeAt(this.pos);\n if (!escaped && c == CharCode.SLASH) break;\n if (isLineBreak(c)) {\n this.error(\n DiagnosticCode.Unterminated_regular_expression_literal,\n this.range(start, this.pos)\n );\n break;\n }\n ++this.pos;\n escaped = false;\n }\n return text.substring(start, this.pos);\n }\n\n readRegexpFlags(): string {\n var text = this.source.text;\n var start = this.pos;\n var end = this.end;\n var flags = 0;\n while (this.pos < end) {\n let c: i32 = text.charCodeAt(this.pos);\n if (!isIdentifierPart(c)) break;\n ++this.pos;\n\n // make sure each supported flag is unique\n switch (c) {\n case CharCode.g: {\n flags |= flags & 1 ? -1 : 1;\n break;\n }\n case CharCode.i: {\n flags |= flags & 2 ? -1 : 2;\n break;\n }\n case CharCode.m: {\n flags |= flags & 4 ? -1 : 4;\n break;\n }\n default: {\n flags = -1;\n break;\n }\n }\n }\n if (flags == -1) {\n this.error(\n DiagnosticCode.Invalid_regular_expression_flags,\n this.range(start, this.pos)\n );\n }\n return text.substring(start, this.pos);\n }\n\n testInteger(): bool {\n var end = this.end;\n var text = this.source.text;\n if (this.pos + 1 < end && text.charCodeAt(this.pos) == CharCode._0) {\n switch (text.charCodeAt(this.pos + 2)) {\n case CharCode.x:\n case CharCode.X:\n case CharCode.b:\n case CharCode.B:\n case CharCode.o:\n case CharCode.O: return true;\n }\n }\n var pos = this.pos;\n while (pos < end) {\n let c = text.charCodeAt(pos);\n if (c == CharCode.DOT || c == CharCode.e || c == CharCode.E) return false;\n if ((c < CharCode._0 || c > CharCode._9) && c != CharCode._) break;\n // does not validate separator placement (this is done in readXYInteger)\n pos++;\n }\n return true;\n }\n\n readInteger(): I64 {\n var text = this.source.text;\n if (this.pos + 2 < this.end && text.charCodeAt(this.pos) == CharCode._0) {\n switch (text.charCodeAt(this.pos + 1)) {\n case CharCode.x:\n case CharCode.X: {\n this.pos += 2;\n return this.readHexInteger();\n }\n case CharCode.b:\n case CharCode.B: {\n this.pos += 2;\n return this.readBinaryInteger();\n }\n case CharCode.o:\n case CharCode.O: {\n this.pos += 2;\n return this.readOctalInteger();\n }\n }\n if (isOctalDigit(text.charCodeAt(this.pos + 1))) {\n let start = this.pos;\n ++this.pos;\n let value = this.readOctalInteger();\n this.error(\n DiagnosticCode.Octal_literals_are_not_allowed_in_strict_mode,\n this.range(start, this.pos)\n );\n return value;\n }\n }\n return this.readDecimalInteger();\n }\n\n readHexInteger(): I64 {\n var text = this.source.text;\n var start = this.pos;\n var value = i64_new(0);\n var i64_4 = i64_new(4);\n var sepEnd = start;\n var end = this.end;\n while (this.pos < end) {\n let pos = this.pos;\n let c = text.charCodeAt(pos);\n if (c >= CharCode._0 && c <= CharCode._9) {\n // value = (value << 4) + c - CharCode._0;\n value = i64_add(\n i64_shl(value, i64_4),\n i64_new(c - CharCode._0)\n );\n } else if (c >= CharCode.A && c <= CharCode.F) {\n // value = (value << 4) + 10 + c - CharCode.A;\n value = i64_add(\n i64_shl(value, i64_4),\n i64_new(10 + c - CharCode.A)\n );\n } else if (c >= CharCode.a && c <= CharCode.f) {\n // value = (value << 4) + 10 + c - CharCode.a;\n value = i64_add(\n i64_shl(value, i64_4),\n i64_new(10 + c - CharCode.a)\n );\n } else if (c == CharCode._) {\n if (sepEnd == pos) {\n this.error(\n sepEnd == start\n ? DiagnosticCode.Numeric_separators_are_not_allowed_here\n : DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,\n this.range(pos)\n );\n }\n sepEnd = pos + 1;\n } else {\n break;\n }\n this.pos = pos + 1;\n }\n if (this.pos == start) {\n this.error(\n DiagnosticCode.Hexadecimal_digit_expected,\n this.range(start)\n );\n } else if (sepEnd == this.pos) {\n this.error(\n DiagnosticCode.Numeric_separators_are_not_allowed_here,\n this.range(sepEnd - 1)\n );\n }\n return value;\n }\n\n readDecimalInteger(): I64 {\n var text = this.source.text;\n var start = this.pos;\n var end = this.end;\n var value = i64_new(0);\n var i64_10 = i64_new(10);\n var sepEnd = start;\n while (this.pos < end) {\n let pos = this.pos;\n let c = text.charCodeAt(pos);\n if (c >= CharCode._0 && c <= CharCode._9) {\n // value = value * 10 + c - CharCode._0;\n value = i64_add(\n i64_mul(value, i64_10),\n i64_new(c - CharCode._0)\n );\n } else if (c == CharCode._) {\n if (sepEnd == pos) {\n this.error(\n sepEnd == start\n ? DiagnosticCode.Numeric_separators_are_not_allowed_here\n : DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,\n this.range(pos)\n );\n }\n sepEnd = pos + 1;\n } else {\n break;\n }\n this.pos = pos + 1;\n }\n if (this.pos == start) {\n this.error(\n DiagnosticCode.Digit_expected,\n this.range(start)\n );\n } else if (sepEnd == this.pos) {\n this.error(\n DiagnosticCode.Numeric_separators_are_not_allowed_here,\n this.range(sepEnd - 1)\n );\n }\n return value;\n }\n\n readOctalInteger(): I64 {\n var text = this.source.text;\n var start = this.pos;\n var value = i64_new(0);\n var i64_3 = i64_new(3);\n var sepEnd = start;\n var end = this.end;\n while (this.pos < end) {\n let pos = this.pos;\n let c = text.charCodeAt(pos);\n if (c >= CharCode._0 && c <= CharCode._7) {\n // value = (value << 3) + c - CharCode._0;\n value = i64_add(\n i64_shl(value, i64_3),\n i64_new(c - CharCode._0)\n );\n } else if (c == CharCode._) {\n if (sepEnd == pos) {\n this.error(\n sepEnd == start\n ? DiagnosticCode.Numeric_separators_are_not_allowed_here\n : DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,\n this.range(pos)\n );\n }\n sepEnd = pos + 1;\n } else {\n break;\n }\n ++this.pos;\n }\n if (this.pos == start) {\n this.error(\n DiagnosticCode.Octal_digit_expected,\n this.range(start)\n );\n } else if (sepEnd == this.pos) {\n this.error(\n DiagnosticCode.Numeric_separators_are_not_allowed_here,\n this.range(sepEnd - 1)\n );\n }\n return value;\n }\n\n readBinaryInteger(): I64 {\n var text = this.source.text;\n var start = this.pos;\n var value = i64_new(0);\n var i64_1 = i64_new(1);\n var sepEnd = start;\n var end = this.end;\n while (this.pos < end) {\n let pos = this.pos;\n let c = text.charCodeAt(pos);\n if (c == CharCode._0) {\n // value = (value << 1);\n value = i64_shl(value, i64_1);\n } else if (c == CharCode._1) {\n // value = (value << 1) + 1;\n value = i64_add(\n i64_shl(value, i64_1),\n i64_1\n );\n } else if (c == CharCode._) {\n if (sepEnd == pos) {\n this.error(\n sepEnd == start\n ? DiagnosticCode.Numeric_separators_are_not_allowed_here\n : DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,\n this.range(pos)\n );\n }\n sepEnd = pos + 1;\n } else {\n break;\n }\n this.pos = pos + 1;\n }\n if (this.pos == start) {\n this.error(\n DiagnosticCode.Binary_digit_expected,\n this.range(start)\n );\n } else if (sepEnd == this.pos) {\n this.error(\n DiagnosticCode.Numeric_separators_are_not_allowed_here,\n this.range(sepEnd - 1)\n );\n }\n return value;\n }\n\n readFloat(): f64 {\n // var text = this.source.text;\n // if (text.charCodeAt(this.pos) == CharCode._0 && this.pos + 2 < this.end) {\n // switch (text.charCodeAt(this.pos + 1)) {\n // case CharCode.X:\n // case CharCode.x: {\n // this.pos += 2;\n // return this.readHexFloat();\n // }\n // }\n // }\n return this.readDecimalFloat();\n }\n\n readDecimalFloat(): f64 {\n // TODO: numeric separators (parseFloat can't handle these)\n var start = this.pos;\n var end = this.end;\n var text = this.source.text;\n while (this.pos < end && isDecimalDigit(text.charCodeAt(this.pos))) {\n ++this.pos;\n }\n if (this.pos < end && text.charCodeAt(this.pos) == CharCode.DOT) {\n ++this.pos;\n while (this.pos < end && isDecimalDigit(text.charCodeAt(this.pos))) {\n ++this.pos;\n }\n }\n if (this.pos < end) {\n let c = text.charCodeAt(this.pos);\n if (c == CharCode.e || c == CharCode.E) {\n if (\n ++this.pos < end &&\n (c = text.charCodeAt(this.pos)) == CharCode.MINUS || c == CharCode.PLUS &&\n isDecimalDigit(text.charCodeAt(this.pos + 1))\n ) {\n ++this.pos;\n }\n while (this.pos < end && isDecimalDigit(text.charCodeAt(this.pos))) {\n ++this.pos;\n }\n }\n }\n return parseFloat(text.substring(start, this.pos));\n }\n\n readHexFloat(): f64 {\n throw new Error(\"not implemented\"); // TBD\n }\n\n readUnicodeEscape(): string {\n var remain = 4;\n var value = 0;\n var end = this.end;\n var text = this.source.text;\n while (this.pos < end) {\n let c = text.charCodeAt(this.pos++);\n if (c >= CharCode._0 && c <= CharCode._9) {\n value = (value << 4) + c - CharCode._0;\n } else if (c >= CharCode.A && c <= CharCode.F) {\n value = (value << 4) + c + (10 - CharCode.A);\n } else if (c >= CharCode.a && c <= CharCode.f) {\n value = (value << 4) + c + (10 - CharCode.a);\n } else {\n this.error(\n DiagnosticCode.Hexadecimal_digit_expected,\n this.range(this.pos - 1, this.pos)\n );\n return \"\";\n }\n if (--remain == 0) break;\n }\n if (remain) {\n this.error(\n DiagnosticCode.Unexpected_end_of_text,\n this.range(this.pos)\n );\n return \"\";\n }\n return String.fromCharCode(value);\n }\n\n private readExtendedUnicodeEscape(): string {\n var start = this.pos;\n var value = this.readHexInteger();\n var value32 = i64_low(value);\n var invalid = false;\n\n assert(!i64_high(value));\n if (value32 > 0x10FFFF) {\n this.error(\n DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,\n this.range(start, this.pos)\n );\n invalid = true;\n }\n\n var end = this.end;\n var text = this.source.text;\n if (this.pos >= end) {\n this.error(\n DiagnosticCode.Unexpected_end_of_text,\n this.range(start, end)\n );\n invalid = true;\n } else if (text.charCodeAt(this.pos) == CharCode.CLOSEBRACE) {\n ++this.pos;\n } else {\n this.error(\n DiagnosticCode.Unterminated_Unicode_escape_sequence,\n this.range(start, this.pos)\n );\n invalid = true;\n }\n\n if (invalid) return \"\";\n return value32 < 65536\n ? String.fromCharCode(value32)\n : String.fromCharCode(\n ((value32 - 65536) >>> 10) + 0xD800,\n ((value32 - 65536) & 1023) + 0xDC00\n );\n }\n\n finish(): void {\n }\n}\n\n/** Tokenizer state as returned by {@link Tokenizer#mark} and consumed by {@link Tokenizer#reset}. */\nexport class State {\n /** Current position. */\n pos: i32;\n /** Current token. */\n token: Token;\n /** Current token's position. */\n tokenPos: i32;\n}\n\n// Reusable state object to reduce allocations\nvar reusableState: State | null = null;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Resolve infrastructure to obtain types and elements.\n * @module resolver\n *//***/\n\nimport {\n DiagnosticEmitter,\n DiagnosticCode\n} from \"./diagnostics\";\n\nimport {\n Program,\n ElementKind,\n OperatorKind,\n Element,\n Class,\n ClassPrototype,\n Function,\n FunctionPrototype,\n VariableLikeElement,\n Property,\n PropertyPrototype,\n Field,\n FieldPrototype,\n Global,\n TypeDefinition\n} from \"./program\";\n\nimport {\n FlowFlags,\n Flow\n} from \"./flow\";\n\nimport {\n FunctionTypeNode,\n ParameterKind,\n TypeNode,\n NodeKind,\n NamedTypeNode,\n TypeName,\n TypeParameterNode,\n Node,\n Range,\n IdentifierExpression,\n CallExpression,\n ElementAccessExpression,\n PropertyAccessExpression,\n LiteralExpression,\n LiteralKind,\n ParenthesizedExpression,\n AssertionExpression,\n Expression,\n IntegerLiteralExpression,\n UnaryPrefixExpression,\n UnaryPostfixExpression,\n AssertionKind,\n BinaryExpression,\n ThisExpression,\n SuperExpression,\n isTypeOmitted\n} from \"./ast\";\n\nimport {\n Type,\n Signature,\n typesToString,\n TypeKind,\n TypeFlags\n} from \"./types\";\n\nimport {\n CommonFlags,\n CommonSymbols\n} from \"./common\";\n\nimport {\n makeMap,\n isPowerOf2\n} from \"./util\";\n\nimport {\n Token\n} from \"./tokenizer\";\n\nimport {\n BuiltinSymbols\n} from \"./builtins\";\n\n/** Indicates whether errors are reported or not. */\nexport enum ReportMode {\n /** Report errors. */\n REPORT,\n /** Swallow errors. */\n SWALLOW\n}\n\n/** Provides tools to resolve types and expressions. */\nexport class Resolver extends DiagnosticEmitter {\n\n /** The program this resolver belongs to. */\n program: Program;\n\n /** Target expression of the previously resolved property or element access. */\n currentThisExpression: Expression | null = null;\n /** Element expression of the previously resolved element access. */\n currentElementExpression : Expression | null = null;\n\n /** Constructs the resolver for the specified program. */\n constructor(\n /** The program to construct a resolver for. */\n program: Program\n ) {\n super(program.diagnostics);\n this.program = program;\n }\n\n // ====================================================== Types ======================================================\n\n /** Resolves a {@link TypeNode} to a concrete {@link Type}. */\n resolveType(\n /** The type to resolve. */\n node: TypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n switch (node.kind) {\n case NodeKind.NAMEDTYPE: {\n return this.resolveNamedType(\n node,\n ctxElement,\n ctxTypes,\n reportMode\n );\n }\n case NodeKind.FUNCTIONTYPE: {\n return this.resolveFunctionType(\n node,\n ctxElement,\n ctxTypes,\n reportMode\n );\n }\n default: assert(false);\n }\n return null;\n }\n\n /** Resolves a {@link NamedTypeNode} to a concrete {@link Type}. */\n private resolveNamedType(\n /** The type to resolve. */\n node: NamedTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var nameNode = node.name;\n var typeArgumentNodes = node.typeArguments;\n var isSimpleType = !nameNode.next;\n\n // Look up in contextual types if a simple type\n if (isSimpleType) {\n let simpleName = nameNode.identifier.text;\n if (ctxTypes !== null && ctxTypes.has(simpleName)) {\n let type = ctxTypes.get(simpleName)!;\n if (typeArgumentNodes !== null && typeArgumentNodes.length) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n node.range, type.toString()\n );\n }\n }\n if (node.isNullable) {\n if (!type.is(TypeFlags.REFERENCE)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Basic_type_0_cannot_be_nullable,\n node.range, type.toString()\n );\n }\n }\n return type.asNullable();\n }\n return type;\n }\n }\n\n // Look up in context\n var element = this.resolveTypeName(nameNode, ctxElement, reportMode);\n if (!element) return null;\n\n // Use shadow type if present (i.e. namespace sharing a type)\n if (element.shadowType) {\n element = element.shadowType;\n\n } else {\n\n // Handle enums (become i32)\n if (element.kind == ElementKind.ENUM) {\n if (typeArgumentNodes !== null && typeArgumentNodes.length) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n node.range, element.internalName\n );\n }\n }\n if (node.isNullable) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Basic_type_0_cannot_be_nullable,\n node.range, element.name + \"/i32\"\n );\n }\n }\n return Type.i32;\n }\n\n // Handle classes\n if (element.kind == ElementKind.CLASS_PROTOTYPE) {\n let instance = this.resolveClassInclTypeArguments(\n element,\n typeArgumentNodes,\n ctxElement,\n makeMap(ctxTypes), // don't inherit\n node,\n reportMode\n );\n if (!instance) return null;\n return node.isNullable ? instance.type.asNullable() : instance.type;\n }\n }\n\n // Handle type definitions\n if (element.kind == ElementKind.TYPEDEFINITION) {\n\n // Shortcut already resolved (mostly builtins)\n if (element.is(CommonFlags.RESOLVED)) {\n if (typeArgumentNodes !== null && typeArgumentNodes.length) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n node.range, element.internalName\n );\n }\n }\n let type = (element).type;\n if (node.isNullable) {\n if (!type.is(TypeFlags.REFERENCE)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Basic_type_0_cannot_be_nullable,\n nameNode.range, nameNode.identifier.text\n );\n }\n } else {\n return type.asNullable();\n }\n }\n return type;\n }\n\n // Handle special built-in types\n if (isSimpleType) {\n switch (nameNode.identifier.symbol) {\n case CommonSymbols.native: return this.resolveBuiltinNativeType(node, ctxElement, ctxTypes, reportMode);\n case CommonSymbols.indexof: return this.resolveBuiltinIndexofType(node, ctxElement, ctxTypes, reportMode);\n case CommonSymbols.valueof: return this.resolveBuiltinValueofType(node, ctxElement, ctxTypes, reportMode);\n case CommonSymbols.returnof: return this.resolveBuiltinReturnTypeType(node, ctxElement, ctxTypes, reportMode);\n }\n }\n\n // Resolve normally\n let typeParameterNodes = (element).typeParameterNodes;\n let typeArguments: Type[] | null = null;\n if (typeParameterNodes) {\n typeArguments = this.resolveTypeArguments(\n typeParameterNodes,\n typeArgumentNodes,\n ctxElement,\n ctxTypes = makeMap(ctxTypes), // inherit\n node,\n reportMode\n );\n if (!typeArguments) return null;\n } else if (typeArgumentNodes && typeArgumentNodes.length) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n node.range, nameNode.identifier.text\n );\n }\n let type = this.resolveType(\n (element).typeNode,\n element,\n ctxTypes,\n reportMode\n );\n if (!type) return null;\n if (node.isNullable) {\n if (!type.is(TypeFlags.REFERENCE)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Basic_type_0_cannot_be_nullable,\n nameNode.range, nameNode.identifier.text\n );\n }\n } else {\n return type.asNullable();\n }\n }\n return type;\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n nameNode.range, nameNode.identifier.text\n );\n }\n return null;\n }\n\n /** Resolves a {@link FunctionTypeNode} to a concrete {@link Type}. */\n private resolveFunctionType(\n /** The type to resolve. */\n node: FunctionTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var explicitThisType = node.explicitThisType;\n var thisType: Type | null = null;\n if (explicitThisType) {\n thisType = this.resolveType(\n explicitThisType,\n ctxElement,\n ctxTypes,\n reportMode\n );\n if (!thisType) return null;\n }\n var parameterNodes = node.parameters;\n var numParameters = parameterNodes.length;\n var parameterTypes = new Array(numParameters);\n var parameterNames = new Array(numParameters);\n var requiredParameters = 0;\n var hasRest = false;\n for (let i = 0; i < numParameters; ++i) {\n let parameterNode = parameterNodes[i];\n switch (parameterNode.parameterKind) {\n case ParameterKind.DEFAULT: {\n requiredParameters = i + 1;\n break;\n }\n case ParameterKind.REST: {\n assert(i == numParameters);\n hasRest = true;\n break;\n }\n }\n let parameterTypeNode = parameterNode.type;\n if (isTypeOmitted(parameterTypeNode)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_expected,\n parameterTypeNode.range\n );\n }\n return null;\n }\n let parameterType = this.resolveType(\n parameterTypeNode,\n ctxElement,\n ctxTypes,\n reportMode\n );\n if (!parameterType) return null;\n parameterTypes[i] = parameterType;\n parameterNames[i] = parameterNode.name.text;\n }\n var returnTypeNode = node.returnType;\n var returnType: Type | null;\n if (isTypeOmitted(returnTypeNode)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_expected,\n returnTypeNode.range\n );\n }\n returnType = Type.void;\n } else {\n returnType = this.resolveType(\n returnTypeNode,\n ctxElement,\n ctxTypes,\n reportMode\n );\n if (!returnType) return null;\n }\n var signature = new Signature(this.program, parameterTypes, returnType, thisType);\n signature.parameterNames = parameterNames;\n signature.requiredParameters = requiredParameters;\n signature.hasRest = hasRest;\n return node.isNullable ? signature.type.asNullable() : signature.type;\n }\n\n private resolveBuiltinNativeType(\n /** The type to resolve. */\n node: NamedTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var typeArgumentNodes = node.typeArguments;\n if (!(typeArgumentNodes && typeArgumentNodes.length == 1)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n node.range, \"1\", (typeArgumentNodes ? typeArgumentNodes.length : 1).toString(10)\n );\n }\n return null;\n }\n var typeArgument = this.resolveType(typeArgumentNodes[0], ctxElement, ctxTypes, reportMode);\n if (!typeArgument) return null;\n switch (typeArgument.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: return Type.i32;\n case TypeKind.ISIZE: if (!this.program.options.isWasm64) return Type.i32;\n case TypeKind.I64: return Type.i64;\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: return Type.u32;\n case TypeKind.USIZE: if (!this.program.options.isWasm64) return Type.u32;\n case TypeKind.U64: return Type.u64;\n case TypeKind.F32: return Type.f32;\n case TypeKind.F64: return Type.f64;\n case TypeKind.V128: return Type.v128;\n case TypeKind.VOID: return Type.void;\n default: assert(false);\n }\n return null;\n }\n\n private resolveBuiltinIndexofType(\n /** The type to resolve. */\n node: NamedTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var typeArgumentNodes = node.typeArguments;\n if (!(typeArgumentNodes && typeArgumentNodes.length == 1)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n node.range, \"1\", (typeArgumentNodes ? typeArgumentNodes.length : 1).toString(10)\n );\n }\n return null;\n }\n var typeArgument = this.resolveType(typeArgumentNodes[0], ctxElement, ctxTypes, reportMode);\n if (!typeArgument) return null;\n var classReference = typeArgument.classReference;\n if (!classReference) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n typeArgumentNodes[0].range, typeArgument.toString()\n );\n }\n return null;\n }\n var overload = classReference.lookupOverload(OperatorKind.INDEXED_GET);\n if (overload) {\n if (overload.is(CommonFlags.STATIC)) {\n assert(overload.signature.parameterTypes.length == 2);\n return overload.signature.parameterTypes[1];\n } else {\n assert(overload.signature.parameterTypes.length == 1);\n return overload.signature.parameterTypes[0];\n }\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n typeArgumentNodes[0].range, typeArgument.toString()\n );\n }\n return null;\n }\n\n private resolveBuiltinValueofType(\n /** The type to resolve. */\n node: NamedTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var typeArgumentNodes = node.typeArguments;\n if (!(typeArgumentNodes && typeArgumentNodes.length == 1)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n node.range, \"1\", (typeArgumentNodes ? typeArgumentNodes.length : 1).toString(10)\n );\n }\n return null;\n }\n var typeArgument = this.resolveType(typeArgumentNodes[0], ctxElement, ctxTypes, reportMode);\n if (!typeArgument) return null;\n var classReference = typeArgument.classReference;\n if (!classReference) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n typeArgumentNodes[0].range, typeArgument.toString()\n );\n }\n return null;\n }\n\n var overload = classReference.lookupOverload(OperatorKind.INDEXED_GET);\n if (overload) return overload.signature.returnType;\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n typeArgumentNodes[0].range, typeArgument.toString()\n );\n }\n return null;\n }\n\n private resolveBuiltinReturnTypeType(\n /** The type to resolve. */\n node: NamedTypeNode,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type | null {\n var typeArgumentNodes = node.typeArguments;\n if (!(typeArgumentNodes && typeArgumentNodes.length == 1)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n node.range, \"1\", (typeArgumentNodes ? typeArgumentNodes.length : 1).toString(10)\n );\n }\n return null;\n }\n var typeArgument = this.resolveType(typeArgumentNodes[0], ctxElement, ctxTypes, reportMode);\n if (!typeArgument) return null;\n var signatureReference = typeArgument.signatureReference;\n if (!signatureReference) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_has_no_call_signatures,\n typeArgumentNodes[0].range, typeArgument.toString()\n );\n }\n return null;\n }\n return signatureReference.returnType;\n }\n\n /** Resolves a type name to the program element it refers to. */\n resolveTypeName(\n /** The type name to resolve. */\n node: TypeName,\n /** Contextual element. */\n ctxElement: Element,\n /** How to proceed with eventualy diagnostics. */\n reportMode = ReportMode.REPORT\n ): Element | null {\n var element = ctxElement.lookup(node.identifier.text);\n if (!element) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n node.range, node.identifier.text\n );\n }\n return null;\n }\n var prev = node;\n var next = node.next;\n while (next) {\n if (!(element = element.lookupInSelf(next.identifier.text))) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n next.range, next.identifier.text, prev.identifier.text\n );\n }\n return null;\n }\n prev = next;\n next = next.next;\n }\n return element;\n }\n\n /** Resolves an array of type arguments to concrete types. */\n resolveTypeArguments(\n /** Type parameter nodes present. */\n typeParameters: TypeParameterNode[],\n /** Type argument nodes provided. */\n typeArgumentNodes: TypeNode[] | null,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map = makeMap(),\n /** Alternative report node in case of empty type arguments. */\n alternativeReportNode: Node | null = null,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Type[] | null {\n var minParameterCount = 0;\n var maxParameterCount = 0;\n for (let i = 0, k = typeParameters.length; i < k; ++i) {\n if (!typeParameters[i].defaultType) ++minParameterCount;\n ++maxParameterCount;\n }\n var argumentCount = typeArgumentNodes ? typeArgumentNodes.length : 0;\n if (argumentCount < minParameterCount || argumentCount > maxParameterCount) {\n this.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n argumentCount\n ? Range.join(\n (typeArgumentNodes)[0].range,\n (typeArgumentNodes)[argumentCount - 1].range\n )\n : assert(alternativeReportNode).range,\n (argumentCount < minParameterCount ? minParameterCount : maxParameterCount).toString(10),\n argumentCount.toString(10)\n );\n return null;\n }\n var typeArguments = new Array(maxParameterCount);\n for (let i = 0; i < maxParameterCount; ++i) {\n let type = i < argumentCount\n ? this.resolveType( // reports\n (typeArgumentNodes)[i],\n ctxElement,\n ctxTypes,\n reportMode\n )\n : this.resolveType( // reports\n assert(typeParameters[i].defaultType),\n ctxElement,\n ctxTypes,\n reportMode\n );\n if (!type) return null;\n // TODO: check extendsType\n ctxTypes.set(typeParameters[i].name.text, type);\n typeArguments[i] = type;\n }\n return typeArguments;\n }\n\n // =================================================== Expressions ===================================================\n\n /** Resolves an expression to the program element it refers to. */\n resolveExpression(\n /** The expression to resolve. */\n node: Expression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n while (node.kind == NodeKind.PARENTHESIZED) { // simply skip\n node = (node).expression;\n }\n switch (node.kind) {\n case NodeKind.ASSERTION: {\n return this.resolveAssertionExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.UNARYPREFIX: {\n return this.resolveUnaryPrefixExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.UNARYPOSTFIX: {\n return this.resolveUnaryPostfixExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.BINARY: {\n return this.resolveBinaryExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.THIS: {\n return this.resolveThisExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.SUPER: {\n return this.resolveSuperExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.IDENTIFIER: {\n return this.resolveIdentifier(\n node,\n ctxFlow, ctxFlow.actualFunction, reportMode\n );\n }\n case NodeKind.LITERAL: {\n return this.resolveLiteralExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.PROPERTYACCESS: {\n return this.resolvePropertyAccessExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.ELEMENTACCESS: {\n return this.resolveElementAccessExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n case NodeKind.CALL: {\n return this.resolveCallExpression(\n node,\n ctxFlow, ctxType, reportMode\n );\n }\n // TODO: everything else\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves an identifier to the program element it refers to. */\n resolveIdentifier(\n /** The expression to resolve. */\n node: IdentifierExpression,\n /** Flow to search for scoped locals. */\n ctxFlow: Flow,\n /** Element to search. */\n ctxElement: Element = ctxFlow.actualFunction,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n var name = node.text;\n var element: Element | null;\n if (element = ctxFlow.lookup(name)) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return element;\n }\n if (element = ctxElement.lookup(name)) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return element;\n }\n if (element = this.program.lookupGlobal(name)) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return element;\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n node.range, name\n );\n }\n return null;\n }\n\n /** Resolves a lazily compiled global, i.e. a static class field or annotated `@lazy`. */\n private ensureResolvedLazyGlobal(global: Global, reportMode: ReportMode = ReportMode.REPORT): bool {\n if (global.is(CommonFlags.RESOLVED)) return true;\n var typeNode = global.typeNode;\n if (!typeNode) return false;\n var type = this.resolveType( // reports\n typeNode,\n global.parent,\n null,\n reportMode\n );\n if (!type) return false;\n global.setType(type); // also sets resolved\n return true;\n }\n\n /** Resolves a property access expression to the program element it refers to. */\n resolvePropertyAccessExpression(\n /** The expression to resolve. */\n node: PropertyAccessExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n var targetNode = node.expression;\n var target = this.resolveExpression(targetNode, ctxFlow, ctxType, reportMode); // reports\n if (!target) return null;\n var propertyName = node.property.text;\n\n // Resolve variable-likes to their class type first\n switch (target.kind) {\n case ElementKind.GLOBAL: if (!this.ensureResolvedLazyGlobal(target, reportMode)) return null;\n case ElementKind.LOCAL:\n case ElementKind.FIELD: {\n let type = (target).type; assert(type != Type.void);\n let classReference = type.classReference;\n if (!classReference) {\n let typeClasses = this.program.typeClasses;\n if (!type.is(TypeFlags.REFERENCE) && typeClasses.has(type.kind)) {\n classReference = typeClasses.get(type.kind)!;\n } else {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n node.property.range, propertyName, (target).type.toString()\n );\n return null;\n }\n }\n target = classReference;\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: { // static\n let getterInstance = this.resolveFunction( // reports\n assert((target).getterPrototype), // must have a getter\n null,\n makeMap(),\n reportMode\n );\n if (!getterInstance) return null;\n let classReference = getterInstance.signature.returnType.classReference;\n if (!classReference) {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n node.property.range, propertyName, getterInstance.signature.returnType.toString()\n );\n return null;\n }\n target = classReference;\n break;\n }\n case ElementKind.PROPERTY: { // instance\n let getterInstance = assert((target).getterInstance); // must have a getter\n let classReference = getterInstance.signature.returnType.classReference;\n if (!classReference) {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n node.property.range, propertyName, getterInstance.signature.returnType.toString()\n );\n return null;\n }\n target = classReference;\n break;\n }\n case ElementKind.CLASS: { // property access on element access?\n let elementExpression = this.currentElementExpression;\n if (elementExpression) {\n let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET);\n if (!indexedGet) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n elementExpression.range, (target).internalName\n );\n return null;\n }\n let arrayType = indexedGet.signature.returnType;\n let classReference = arrayType.classReference;\n if (!classReference) {\n let typeClasses = this.program.typeClasses;\n if (!arrayType.is(TypeFlags.REFERENCE) && typeClasses.has(arrayType.kind)) {\n classReference = typeClasses.get(arrayType.kind)!;\n } else {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n node.property.range, propertyName, arrayType.toString()\n );\n return null;\n }\n }\n target = classReference;\n }\n break;\n }\n case ElementKind.FUNCTION_PROTOTYPE: { // function Symbol() + type Symbol = _Symbol\n let shadowType = target.shadowType;\n if (shadowType) {\n if (!shadowType.is(CommonFlags.RESOLVED)) {\n let resolvedType = this.resolveType(shadowType.typeNode, shadowType.parent, null, reportMode);\n if (resolvedType) shadowType.setType(resolvedType);\n }\n let classReference = shadowType.type.classReference;\n if (classReference) target = classReference.prototype;\n break;\n }\n }\n }\n\n // Look up the member within\n switch (target.kind) {\n case ElementKind.CLASS_PROTOTYPE:\n case ElementKind.CLASS: {\n do {\n let members = target.members;\n if (members && members.has(propertyName)) {\n this.currentThisExpression = targetNode;\n this.currentElementExpression = null;\n return members.get(propertyName)!; // instance FIELD, static GLOBAL, FUNCTION_PROTOTYPE...\n }\n // traverse inherited static members on the base prototype if target is a class prototype\n if (target.kind == ElementKind.CLASS_PROTOTYPE) {\n if ((target).basePrototype) {\n target = (target).basePrototype;\n } else {\n break;\n }\n // traverse inherited instance members on the base class if target is a class instance\n } else if (target.kind == ElementKind.CLASS) {\n if ((target).base) {\n target = (target).base;\n } else {\n break;\n }\n } else {\n break;\n }\n } while (true);\n break;\n }\n default: { // enums or other namespace-like elements\n let members = target.members;\n if (members && members.has(propertyName)) {\n this.currentThisExpression = targetNode;\n this.currentElementExpression = null;\n return members.get(propertyName)!; // static ENUMVALUE, static GLOBAL, static FUNCTION_PROTOTYPE...\n }\n break;\n }\n }\n\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n node.property.range, propertyName, target.internalName\n );\n return null;\n }\n\n /** Resolves an element access expression to the program element it refers to. */\n resolveElementAccessExpression(\n /** The expression to resolve. */\n node: ElementAccessExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n var targetExpression = node.expression;\n var target = this.resolveExpression(targetExpression, ctxFlow, ctxType, reportMode); // reports\n if (!target) return null;\n switch (target.kind) {\n case ElementKind.GLOBAL: if (!this.ensureResolvedLazyGlobal(target, reportMode)) return null;\n case ElementKind.LOCAL:\n case ElementKind.FIELD: {\n let type = (target).type;\n if (target = type.classReference) {\n this.currentThisExpression = targetExpression;\n this.currentElementExpression = node.elementExpression;\n return target;\n }\n break;\n }\n case ElementKind.CLASS: {\n let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET);\n if (!indexedGet) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n node.range, (target).internalName\n );\n }\n return null;\n }\n let arrayType = indexedGet.signature.returnType;\n if (targetExpression.kind == NodeKind.ELEMENTACCESS) { // nested element access\n if (target = arrayType.classReference) {\n this.currentThisExpression = targetExpression;\n this.currentElementExpression = node.elementExpression;\n return target;\n }\n return null;\n }\n this.currentThisExpression = targetExpression;\n this.currentElementExpression = node.elementExpression;\n return target;\n }\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n targetExpression.range\n );\n }\n return null;\n }\n\n /** Determines the final type of an integer literal given the specified contextual type. */\n determineIntegerLiteralType(\n /** Integer literal value. */\n intValue: I64,\n /** Contextual type. */\n ctxType: Type\n ): Type {\n if (!ctxType.is(TypeFlags.REFERENCE)) {\n // compile to contextual type if matching\n switch (ctxType.kind) {\n case TypeKind.I8: {\n if (i64_is_i8(intValue)) return Type.i8;\n break;\n }\n case TypeKind.U8: {\n if (i64_is_u8(intValue)) return Type.u8;\n break;\n }\n case TypeKind.I16: {\n if (i64_is_i16(intValue)) return Type.i16;\n break;\n }\n case TypeKind.U16: {\n if (i64_is_u16(intValue)) return Type.u16;\n break;\n }\n case TypeKind.I32: {\n if (i64_is_i32(intValue)) return Type.i32;\n break;\n }\n case TypeKind.U32: {\n if (i64_is_u32(intValue)) return Type.u32;\n break;\n }\n case TypeKind.BOOL: {\n if (i64_is_bool(intValue)) return Type.bool;\n break;\n }\n case TypeKind.ISIZE: {\n if (!this.program.options.isWasm64) {\n if (i64_is_i32(intValue)) return Type.isize32;\n break;\n }\n return Type.isize64;\n }\n case TypeKind.USIZE: {\n if (!this.program.options.isWasm64) {\n if (i64_is_u32(intValue)) return Type.usize32;\n break;\n }\n return Type.usize64;\n }\n case TypeKind.I64: return Type.i64;\n case TypeKind.U64: return Type.u64;\n case TypeKind.F32: return Type.f32;\n case TypeKind.F64: return Type.f64;\n case TypeKind.VOID: break; // best fitting below\n default: assert(false);\n }\n }\n // otherwise compile to best fitting native type\n if (i64_is_i32(intValue)) return Type.i32;\n if (i64_is_u32(intValue)) return Type.u32;\n return Type.i64; // TODO: u64 if positive and larger than i64?\n }\n\n /** Resolves an assertion expression to the program element it refers to. */\n resolveAssertionExpression(\n /** The expression to resolve. */\n node: AssertionExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n if (node.assertionKind == AssertionKind.NONNULL) {\n return this.resolveExpression(\n node.expression,\n ctxFlow,\n ctxType,\n reportMode\n );\n }\n var type = this.resolveType(\n assert(node.toType), // must be set if not NONNULL\n ctxFlow.actualFunction,\n ctxFlow.contextualTypeArguments,\n reportMode\n );\n if (!type) return null;\n var element: Element | null = type.classReference;\n if (!element) {\n let signature = type.signatureReference;\n if (!signature) return null;\n element = signature.asFunctionTarget(this.program);\n }\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return element;\n }\n\n /** Resolves an unary prefix expression to the program element it refers to. */\n resolveUnaryPrefixExpression(\n /** The expression to resolve. */\n node: UnaryPrefixExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n var operand = node.operand;\n // TODO: operator overloads\n switch (node.operator) {\n case Token.MINUS: {\n // implicitly negate if an integer literal to distinguish between i32/u32/i64\n if (operand.kind == NodeKind.LITERAL && (operand).literalKind == LiteralKind.INTEGER) {\n let type = this.determineIntegerLiteralType(\n i64_sub(i64_zero, (operand).value),\n ctxType\n );\n let typeClasses = this.program.typeClasses;\n return typeClasses.has(type.kind) ? typeClasses.get(type.kind)! : null;\n }\n return this.resolveExpression(operand, ctxFlow, ctxType, reportMode);\n }\n case Token.PLUS:\n case Token.PLUS_PLUS:\n case Token.MINUS_MINUS: {\n return this.resolveExpression(node.operand, ctxFlow, ctxType, reportMode);\n }\n case Token.EXCLAMATION: {\n let typeClasses = this.program.typeClasses;\n assert(typeClasses.has(TypeKind.BOOL));\n return typeClasses.get(TypeKind.BOOL);\n }\n case Token.TILDE: {\n let resolvedOperand = this.resolveExpression(node.operand, ctxFlow, ctxType, reportMode);\n if (!resolvedOperand) return null;\n // TODO: matching integer type\n break;\n }\n default: assert(false);\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves an unary postfix expression to the program element it refers to. */\n resolveUnaryPostfixExpression(\n /** The expression to resolve. */\n node: UnaryPostfixExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n // TODO: operator overloads\n switch (node.operator) {\n case Token.PLUS_PLUS:\n case Token.MINUS_MINUS: {\n return this.resolveExpression(node.operand, ctxFlow, ctxType, reportMode);\n }\n default: assert(false);\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves a binary expression to the program element it refers to. */\n resolveBinaryExpression(\n /** The expression to resolve. */\n name: BinaryExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n // TODO\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n name.range\n );\n }\n return null;\n }\n\n /** Resolves a this expression to the program element it refers to. */\n resolveThisExpression(\n /** The expression to resolve. */\n node: ThisExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n if (ctxFlow.is(FlowFlags.INLINE_CONTEXT)) {\n let thisLocal = ctxFlow.lookupLocal(CommonSymbols.this_);\n if (thisLocal) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return thisLocal;\n }\n }\n var parent = ctxFlow.actualFunction.parent;\n if (parent) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return parent;\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode._this_cannot_be_referenced_in_current_location,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves a super expression to the program element it refers to. */\n resolveSuperExpression(\n /** The expression to resolve. */\n node: SuperExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n if (ctxFlow.is(FlowFlags.INLINE_CONTEXT)) {\n let superLocal = ctxFlow.lookupLocal(CommonSymbols.super_);\n if (superLocal) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return superLocal;\n }\n }\n var parent: Element | null = ctxFlow.actualFunction.parent;\n if (parent && parent.kind == ElementKind.CLASS && (parent = (parent).base)) {\n this.currentThisExpression = null;\n this.currentElementExpression = null;\n return parent;\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode._super_can_only_be_referenced_in_a_derived_class,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves a literal expression to the program element it refers to. */\n resolveLiteralExpression(\n /** The expression to resolve. */\n node: LiteralExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.auto,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n switch (node.literalKind) {\n case LiteralKind.INTEGER: {\n this.currentThisExpression = node;\n this.currentElementExpression = null;\n let literalType = this.determineIntegerLiteralType(\n (node).value,\n ctxType\n );\n let typeClasses = this.program.typeClasses;\n return typeClasses.has(literalType.kind) ? typeClasses.get(literalType.kind)! : null;\n }\n case LiteralKind.FLOAT: {\n this.currentThisExpression = node;\n this.currentElementExpression = null;\n let literalType = ctxType == Type.f32 ? Type.f32 : Type.f64;\n let typeClasses = this.program.typeClasses;\n return typeClasses.has(literalType.kind) ? typeClasses.get(literalType.kind)! : null;\n }\n case LiteralKind.STRING: {\n this.currentThisExpression = node;\n this.currentElementExpression = null;\n return this.program.stringInstance;\n }\n // TODO\n // case LiteralKind.ARRAY:\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n node.range\n );\n }\n return null;\n }\n\n /** Resolves a call expression to the program element it refers to. */\n resolveCallExpression(\n /** The expression to resolve. */\n node: CallExpression,\n /** Contextual flow. */\n ctxFlow: Flow,\n /** Contextual type. */\n ctxType: Type = Type.void,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Element | null {\n var targetExpression = node.expression;\n var target = this.resolveExpression( // reports\n targetExpression,\n ctxFlow,\n ctxType,\n reportMode\n );\n\n if (!target) return null;\n if (target.kind == ElementKind.FUNCTION_PROTOTYPE) {\n // `unchecked(expr: *): *` is special\n if (\n (target).internalName == BuiltinSymbols.unchecked &&\n node.arguments.length > 0\n ) {\n return this.resolveExpression(node.arguments[0], ctxFlow, ctxType, reportMode);\n }\n // otherwise resolve normally\n let instance = this.resolveFunctionInclTypeArguments(\n target,\n node.typeArguments,\n ctxFlow.actualFunction,\n makeMap(ctxFlow.contextualTypeArguments), // don't inherit\n node,\n reportMode\n );\n if (!instance) return null;\n let returnType = instance.signature.returnType;\n let classType = returnType.classReference;\n if (classType) {\n // reuse resolvedThisExpression (might be property access)\n // reuse resolvedElementExpression (might be element access)\n return classType;\n } else {\n let signature = returnType.signatureReference;\n if (signature) {\n let functionTarget = signature.asFunctionTarget(this.program);\n // reuse resolvedThisExpression (might be property access)\n // reuse resolvedElementExpression (might be element access)\n return functionTarget;\n } else {\n let typeClasses = this.program.typeClasses;\n if (!returnType.is(TypeFlags.REFERENCE) && typeClasses.has(returnType.kind)) {\n return typeClasses.get(returnType.kind);\n }\n }\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n targetExpression.range, target.internalName\n );\n }\n return null;\n }\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n node.range\n );\n }\n return null;\n }\n\n // ==================================================== Elements =====================================================\n\n /** Resolves a function prototype using the specified concrete type arguments. */\n resolveFunction(\n /** The prototype of the function. */\n prototype: FunctionPrototype,\n /** Type arguments provided. */\n typeArguments: Type[] | null,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map = makeMap(),\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Function | null {\n var actualParent = prototype.parent.kind == ElementKind.PROPERTY_PROTOTYPE\n ? prototype.parent.parent\n : prototype.parent;\n var classInstance: Class | null = null; // if an instance method\n var instanceKey = typeArguments ? typesToString(typeArguments) : \"\";\n\n // Instance method prototypes are pre-bound to their concrete class as their parent\n if (prototype.is(CommonFlags.INSTANCE)) {\n assert(actualParent.kind == ElementKind.CLASS);\n classInstance = actualParent;\n\n // check if this exact concrete class and function combination is known already\n let resolvedInstance = prototype.getResolvedInstance(instanceKey);\n if (resolvedInstance) return resolvedInstance;\n\n // inherit class specific type arguments\n let classTypeArguments = classInstance.typeArguments;\n if (classTypeArguments) {\n let classTypeParameters = assert(classInstance.prototype.typeParameterNodes);\n let numClassTypeArguments = classTypeParameters.length;\n assert(numClassTypeArguments == classTypeParameters.length);\n for (let i = 0; i < numClassTypeArguments; ++i) {\n let classTypeParameterName = classTypeParameters[i].name.text;\n if (!ctxTypes.has(classTypeParameterName)) {\n ctxTypes.set(\n classTypeParameterName,\n classTypeArguments[i]\n );\n }\n }\n }\n } else {\n assert(actualParent.kind != ElementKind.CLASS); // must not be pre-bound\n let resolvedInstance = prototype.getResolvedInstance(instanceKey);\n if (resolvedInstance) return resolvedInstance;\n }\n\n // override whatever is contextual with actual function type arguments\n var signatureNode = prototype.functionTypeNode;\n var typeParameterNodes = prototype.typeParameterNodes;\n var numFunctionTypeArguments: i32;\n if (typeArguments && (numFunctionTypeArguments = typeArguments.length)) {\n assert(typeParameterNodes && numFunctionTypeArguments == typeParameterNodes.length);\n for (let i = 0; i < numFunctionTypeArguments; ++i) {\n ctxTypes.set(\n (typeParameterNodes)[i].name.text,\n typeArguments[i]\n );\n }\n } else {\n assert(!typeParameterNodes || typeParameterNodes.length == 0);\n }\n\n // resolve `this` type if applicable\n var thisType: Type | null = null;\n var explicitThisType = signatureNode.explicitThisType;\n if (explicitThisType) {\n thisType = this.resolveType(\n explicitThisType,\n prototype.parent, // relative to function\n ctxTypes,\n reportMode\n );\n if (!thisType) return null;\n ctxTypes.set(CommonSymbols.this_, thisType);\n } else if (classInstance) {\n thisType = classInstance.type;\n ctxTypes.set(CommonSymbols.this_, thisType);\n }\n\n // resolve parameter types\n var signatureParameters = signatureNode.parameters;\n var numSignatureParameters = signatureParameters.length;\n var parameterTypes = new Array(numSignatureParameters);\n var parameterNames = new Array(numSignatureParameters);\n var requiredParameters = 0;\n for (let i = 0; i < numSignatureParameters; ++i) {\n let parameterDeclaration = signatureParameters[i];\n if (parameterDeclaration.parameterKind == ParameterKind.DEFAULT) {\n requiredParameters = i + 1;\n }\n let typeNode = parameterDeclaration.type;\n if (isTypeOmitted(typeNode)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_expected,\n typeNode.range\n );\n }\n return null;\n }\n let parameterType = this.resolveType(\n typeNode,\n prototype.parent, // relative to function\n ctxTypes,\n reportMode\n );\n if (!parameterType) return null;\n parameterTypes[i] = parameterType;\n parameterNames[i] = parameterDeclaration.name.text;\n }\n\n // resolve return type\n var returnType: Type;\n if (prototype.is(CommonFlags.SET)) {\n returnType = Type.void; // not annotated\n } else if (prototype.is(CommonFlags.CONSTRUCTOR)) {\n returnType = assert(classInstance).type; // not annotated\n } else {\n let typeNode = signatureNode.returnType;\n if (isTypeOmitted(typeNode)) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_expected,\n typeNode.range\n );\n }\n return null;\n }\n let type = this.resolveType(\n typeNode,\n prototype.parent, // relative to function\n ctxTypes,\n reportMode\n );\n if (!type) return null;\n returnType = type;\n }\n\n var signature = new Signature(this.program, parameterTypes, returnType, thisType);\n signature.parameterNames = parameterNames;\n signature.requiredParameters = requiredParameters;\n\n var nameInclTypeParameters = prototype.name;\n if (instanceKey.length) nameInclTypeParameters += \"<\" + instanceKey + \">\";\n var instance = new Function(\n nameInclTypeParameters,\n prototype,\n signature,\n ctxTypes\n );\n prototype.setResolvedInstance(instanceKey, instance);\n return instance;\n }\n\n /** Resolves a function prototypeby first resolving the specified type arguments. */\n resolveFunctionInclTypeArguments(\n /** The prototype of the function. */\n prototype: FunctionPrototype,\n /** Type arguments provided to be resolved. */\n typeArgumentNodes: TypeNode[] | null,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map,\n /** The node to use when reporting intermediate errors. */\n reportNode: Node,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Function | null {\n var actualParent = prototype.parent.kind == ElementKind.PROPERTY_PROTOTYPE\n ? prototype.parent.parent\n : prototype.parent;\n var resolvedTypeArguments: Type[] | null = null;\n\n // Resolve type arguments if generic\n if (prototype.is(CommonFlags.GENERIC)) {\n\n // If this is an instance method, first apply the class's type arguments\n if (prototype.is(CommonFlags.INSTANCE)) {\n assert(actualParent.kind == ElementKind.CLASS);\n let classTypeArguments = (actualParent).typeArguments;\n if (classTypeArguments) {\n let typeParameterNodes = assert((actualParent).prototype.typeParameterNodes);\n let numClassTypeArguments = classTypeArguments.length;\n assert(numClassTypeArguments == typeParameterNodes.length);\n for (let i = 0; i < numClassTypeArguments; ++i) {\n ctxTypes.set(\n typeParameterNodes[i].name.text,\n classTypeArguments[i]\n );\n }\n }\n }\n\n resolvedTypeArguments = this.resolveTypeArguments( // reports\n assert(prototype.typeParameterNodes),\n typeArgumentNodes,\n ctxElement,\n ctxTypes,\n reportNode,\n reportMode\n );\n if (!resolvedTypeArguments) return null;\n\n // Otherwise make sure that no type arguments have been specified\n } else {\n if (typeArgumentNodes !== null && typeArgumentNodes.length) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n reportNode.range, prototype.internalName\n );\n }\n return null;\n }\n }\n\n // Continue with concrete types\n return this.resolveFunction(\n prototype,\n resolvedTypeArguments,\n ctxTypes,\n reportMode\n );\n }\n\n /** Resolves a class prototype using the specified concrete type arguments. */\n resolveClass(\n /** The prototype of the class. */\n prototype: ClassPrototype,\n /** Type arguments provided. */\n typeArguments: Type[] | null,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map = makeMap(),\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Class | null {\n var instanceKey = typeArguments ? typesToString(typeArguments) : \"\";\n\n // Check if this exact instance has already been resolved\n var instance = prototype.getResolvedInstance(instanceKey);\n if (instance) return instance;\n\n // Insert contextual type arguments for this operation. Internally, this method is always\n // called with matching type parameter / argument counts.\n if (typeArguments) {\n let typeParameterNodes = assert(prototype.typeParameterNodes);\n let numTypeParameters = typeParameterNodes.length;\n let numTypeArguments = typeArguments.length;\n assert(numTypeArguments == numTypeParameters);\n for (let i = 0; i < numTypeArguments; ++i) {\n ctxTypes.set(typeParameterNodes[i].name.text, typeArguments[i]);\n }\n } else {\n let typeParameterNodes = prototype.typeParameterNodes;\n assert(!(typeParameterNodes && typeParameterNodes.length));\n }\n\n // Resolve base class if applicable\n var basePrototype = prototype.basePrototype;\n var baseClass: Class | null = null;\n if (basePrototype) {\n let extendsNode = assert(prototype.extendsNode); // must be present if it has a base prototype\n baseClass = this.resolveClassInclTypeArguments(\n basePrototype,\n extendsNode.typeArguments,\n prototype.parent, // relative to derived class\n makeMap(ctxTypes), // don't inherit\n extendsNode,\n reportMode\n );\n if (!baseClass) return null;\n }\n\n // Construct the instance and remember that it has been resolved already\n var nameInclTypeParamters = prototype.name;\n if (instanceKey.length) nameInclTypeParamters += \"<\" + instanceKey + \">\";\n instance = new Class(nameInclTypeParamters, prototype, typeArguments, baseClass);\n instance.contextualTypeArguments = ctxTypes;\n prototype.setResolvedInstance(instanceKey, instance);\n\n // Inherit base class members and set up the initial memory offset for own fields\n var memoryOffset: u32 = 0;\n if (baseClass) {\n let baseMembers = baseClass.members;\n if (baseMembers) {\n let instanceMembers = instance.members;\n if (!instanceMembers) instance.members = instanceMembers = new Map();\n for (let [baseMemberName, baseMember] of baseMembers) {\n instanceMembers.set(baseMemberName, baseMember);\n }\n }\n memoryOffset = baseClass.currentMemoryOffset;\n }\n\n // Resolve instance members\n var instanceMemberPrototypes = prototype.instanceMembers;\n if (instanceMemberPrototypes) {\n for (let member of instanceMemberPrototypes.values()) {\n switch (member.kind) {\n\n // Lay out fields in advance\n case ElementKind.FIELD_PROTOTYPE: {\n let instanceMembers = instance.members;\n if (!instanceMembers) instance.members = instanceMembers = new Map();\n else if (instanceMembers.has(member.name)) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n (member).identifierNode.range,\n member.name\n );\n break;\n }\n let fieldTypeNode = (member).typeNode;\n let fieldType: Type | null = null;\n // TODO: handle duplicate non-private fields specifically?\n if (!fieldTypeNode) {\n if (baseClass) {\n let baseMembers = baseClass.members;\n if (baseMembers && baseMembers.has((member).name)) {\n let baseField = baseMembers.get((member).name)!;\n if (!baseField.is(CommonFlags.PRIVATE)) {\n assert(baseField.kind == ElementKind.FIELD);\n fieldType = (baseField).type;\n }\n }\n }\n if (!fieldType) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_expected,\n (member).identifierNode.range.atEnd\n );\n }\n }\n } else {\n fieldType = this.resolveType(\n fieldTypeNode,\n prototype.parent, // relative to class\n instance.contextualTypeArguments,\n reportMode\n );\n }\n if (!fieldType) break; // did report above\n let fieldInstance = new Field(member, instance, fieldType);\n assert(isPowerOf2(fieldType.byteSize));\n let mask = fieldType.byteSize - 1;\n if (memoryOffset & mask) memoryOffset = (memoryOffset | mask) + 1;\n fieldInstance.memoryOffset = memoryOffset;\n memoryOffset += fieldType.byteSize;\n instance.add(member.name, fieldInstance); // reports\n break;\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n let boundPrototype = (member).toBound(instance);\n instance.add(boundPrototype.name, boundPrototype); // reports\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n let propertyInstance = new Property(member, instance);\n let getterPrototype = (member).getterPrototype;\n if (getterPrototype) {\n let getterInstance = this.resolveFunction(\n getterPrototype.toBound(instance),\n null,\n makeMap(instance.contextualTypeArguments),\n reportMode\n );\n if (getterInstance) {\n propertyInstance.getterInstance = getterInstance;\n propertyInstance.setType(getterInstance.signature.returnType);\n }\n }\n let setterPrototype = (member).setterPrototype;\n if (setterPrototype) {\n let setterInstance = this.resolveFunction(\n setterPrototype.toBound(instance),\n null,\n makeMap(instance.contextualTypeArguments),\n reportMode\n );\n if (setterInstance) {\n propertyInstance.setterInstance = setterInstance;\n if (!propertyInstance.is(CommonFlags.RESOLVED)) {\n assert(setterInstance.signature.parameterTypes.length == 1);\n propertyInstance.setType(setterInstance.signature.parameterTypes[0]);\n }\n }\n }\n instance.add(propertyInstance.name, propertyInstance); // reports\n break;\n }\n default: assert(false);\n }\n }\n }\n\n // Finalize memory offset\n instance.currentMemoryOffset = memoryOffset;\n\n // Link _own_ constructor if present\n {\n let ctorPrototype = instance.lookupInSelf(CommonSymbols.constructor);\n if (ctorPrototype && ctorPrototype.parent === instance) {\n assert(ctorPrototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n let ctorInstance = this.resolveFunction(\n ctorPrototype,\n null,\n instance.contextualTypeArguments,\n reportMode\n );\n if (ctorInstance) instance.constructorInstance = ctorInstance;\n }\n }\n\n // Fully resolve operator overloads (don't have type parameters on their own)\n for (let [kind, overloadPrototype] of prototype.overloadPrototypes) {\n assert(kind != OperatorKind.INVALID);\n let operatorInstance: Function | null;\n if (overloadPrototype.is(CommonFlags.INSTANCE)) {\n let boundPrototype = overloadPrototype.toBound(instance);\n operatorInstance = this.resolveFunction(\n boundPrototype,\n null,\n makeMap(),\n reportMode\n );\n } else {\n operatorInstance = this.resolveFunction(\n overloadPrototype,\n null,\n makeMap(),\n reportMode\n );\n }\n if (!operatorInstance) continue;\n let overloads = instance.overloads;\n if (!overloads) instance.overloads = overloads = new Map();\n overloads.set(kind, operatorInstance);\n }\n return instance;\n }\n\n /** Resolves a class prototype by first resolving the specified type arguments. */\n resolveClassInclTypeArguments(\n /** The prototype of the class. */\n prototype: ClassPrototype,\n /** Type arguments provided to be resolved. */\n typeArgumentNodes: TypeNode[] | null,\n /** Contextual element. */\n ctxElement: Element,\n /** Contextual types, i.e. `T`. */\n ctxTypes: Map,\n /** The node to use when reporting intermediate errors. */\n reportNode: Node,\n /** How to proceed with eventualy diagnostics. */\n reportMode: ReportMode = ReportMode.REPORT\n ): Class | null {\n var resolvedTypeArguments: Type[] | null = null;\n\n // Resolve type arguments if generic\n if (prototype.is(CommonFlags.GENERIC)) {\n resolvedTypeArguments = this.resolveTypeArguments( // reports\n assert(prototype.typeParameterNodes), // must be present if generic\n typeArgumentNodes,\n ctxElement,\n ctxTypes,\n reportNode,\n reportMode\n );\n if (!resolvedTypeArguments) return null;\n\n // Otherwise make sure that no type arguments have been specified\n } else {\n if (typeArgumentNodes !== null && typeArgumentNodes.length) {\n if (reportMode == ReportMode.REPORT) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n reportNode.range, prototype.internalName\n );\n }\n return null;\n }\n }\n\n // Continue with concrete types\n return this.resolveClass(\n prototype,\n resolvedTypeArguments,\n ctxTypes,\n reportMode\n );\n }\n}\n","/**\n * A control flow analyzer.\n * @module flow\n *//***/\n\nimport {\n Type,\n TypeFlags,\n TypeKind\n} from \"./types\";\n\nimport {\n Local,\n Function,\n Element,\n ElementKind,\n Global\n} from \"./program\";\n\nimport {\n NativeType,\n ExpressionId,\n ExpressionRef,\n\n getExpressionId,\n getLocalGetIndex,\n isLocalTee,\n getLocalSetValue,\n getGlobalGetName,\n getBinaryOp,\n BinaryOp,\n getBinaryLeft,\n getConstValueI32,\n getBinaryRight,\n getUnaryOp,\n UnaryOp,\n getExpressionType,\n getConstValueI64Low,\n getConstValueF32,\n getConstValueF64,\n getLoadBytes,\n isLoadSigned,\n getBlockName,\n getBlockChildCount,\n getBlockChild,\n getIfTrue,\n getIfFalse,\n getSelectThen,\n getSelectElse,\n getCallTarget,\n getLocalSetIndex,\n getIfCondition,\n getConstValueI64High,\n getUnaryValue,\n getCallOperand,\n traverse\n} from \"./module\";\n\nimport {\n CommonFlags\n} from \"./common\";\n\nimport {\n DiagnosticCode\n} from \"./diagnostics\";\n\nimport {\n Node\n} from \"./ast\";\n\n/** Control flow flags indicating specific conditions. */\nexport const enum FlowFlags {\n /** No specific conditions. */\n NONE = 0,\n\n // categorical\n\n /** This flow returns. */\n RETURNS = 1 << 0,\n /** This flow returns a wrapped value. */\n RETURNS_WRAPPED = 1 << 1,\n /** This flow returns a non-null value. */\n RETURNS_NONNULL = 1 << 2,\n /** This flow throws. */\n THROWS = 1 << 3,\n /** This flow breaks. */\n BREAKS = 1 << 4,\n /** This flow continues. */\n CONTINUES = 1 << 5,\n /** This flow allocates. Constructors only. */\n ALLOCATES = 1 << 6,\n /** This flow calls super. Constructors only. */\n CALLS_SUPER = 1 << 7,\n /** This flow terminates (returns, throws or continues). */\n TERMINATES = 1 << 8,\n\n // conditional\n\n /** This flow conditionally returns in a child flow. */\n CONDITIONALLY_RETURNS = 1 << 9,\n /** This flow conditionally throws in a child flow. */\n CONDITIONALLY_THROWS = 1 << 10,\n /** This flow conditionally terminates in a child flow. */\n CONDITIONALLY_TERMINATES = 1 << 11,\n /** This flow conditionally breaks in a child flow. */\n CONDITIONALLY_BREAKS = 1 << 12,\n /** This flow conditionally continues in a child flow. */\n CONDITIONALLY_CONTINUES = 1 << 13,\n /** This flow conditionally allocates in a child flow. Constructors only. */\n CONDITIONALLY_ALLOCATES = 1 << 14,\n\n // special\n\n /** This is an inlining flow. */\n INLINE_CONTEXT = 1 << 15,\n /** This is a flow with explicitly disabled bounds checking. */\n UNCHECKED_CONTEXT = 1 << 16,\n\n // masks\n\n /** Any categorical flag. */\n ANY_CATEGORICAL = FlowFlags.RETURNS\n | FlowFlags.RETURNS_WRAPPED\n | FlowFlags.RETURNS_NONNULL\n | FlowFlags.THROWS\n | FlowFlags.BREAKS\n | FlowFlags.CONTINUES\n | FlowFlags.ALLOCATES\n | FlowFlags.CALLS_SUPER\n | FlowFlags.TERMINATES,\n\n /** Any conditional flag. */\n ANY_CONDITIONAL = FlowFlags.CONDITIONALLY_RETURNS\n | FlowFlags.CONDITIONALLY_THROWS\n | FlowFlags.CONDITIONALLY_BREAKS\n | FlowFlags.CONDITIONALLY_CONTINUES\n | FlowFlags.CONDITIONALLY_ALLOCATES\n}\n\n/** Flags indicating the current state of a local. */\nexport enum LocalFlags {\n /** No specific conditions. */\n NONE = 0,\n\n /** Local is constant. */\n CONSTANT = 1 << 0,\n /** Local is properly wrapped. Relevant for small integers. */\n WRAPPED = 1 << 1,\n /** Local is non-null. */\n NONNULL = 1 << 2,\n /** Local is read from. */\n READFROM = 1 << 3,\n /** Local is written to. */\n WRITTENTO = 1 << 4,\n /** Local is retained. */\n RETAINED = 1 << 5,\n\n /** Local is conditionally read from. */\n CONDITIONALLY_READFROM = 1 << 6,\n /** Local is conditionally written to. */\n CONDITIONALLY_WRITTENTO = 1 << 7,\n /** Local must be conditionally retained. */\n CONDITIONALLY_RETAINED = 1 << 8,\n\n /** Any categorical flag. */\n ANY_CATEGORICAL = CONSTANT\n | WRAPPED\n | NONNULL\n | READFROM\n | WRITTENTO\n | RETAINED,\n\n /** Any conditional flag. */\n ANY_CONDITIONAL = RETAINED\n | CONDITIONALLY_READFROM\n | CONDITIONALLY_WRITTENTO\n | CONDITIONALLY_RETAINED,\n\n /** Any retained flag. */\n ANY_RETAINED = RETAINED\n | CONDITIONALLY_RETAINED\n}\nexport namespace LocalFlags {\n export function join(left: LocalFlags, right: LocalFlags): LocalFlags {\n return ((left & LocalFlags.ANY_CATEGORICAL) & (right & LocalFlags.ANY_CATEGORICAL))\n | (left & LocalFlags.ANY_CONDITIONAL) | (right & LocalFlags.ANY_CONDITIONAL);\n }\n}\n\n/** Flags indicating the current state of a field. */\nexport enum FieldFlags {\n /** No specific conditions. */\n NONE = 0,\n\n /** Field is initialized. Relevant in constructors. */\n INITIALIZED = 1 << 0,\n /** Field is conditionally initialized. Relevant in constructors. */\n CONDITIONALLY_INITIALIZED = 1 << 1,\n\n /** Any categorical flag. */\n ANY_CATEGORICAL = INITIALIZED,\n\n /** Any conditional flag. */\n ANY_CONDITIONAL = CONDITIONALLY_INITIALIZED\n}\nexport namespace FieldFlags {\n export function join(left: FieldFlags, right: FieldFlags): FieldFlags {\n return ((left & FieldFlags.ANY_CATEGORICAL) & (right & FieldFlags.ANY_CATEGORICAL))\n | (left & FieldFlags.ANY_CONDITIONAL) | (right & FieldFlags.ANY_CONDITIONAL);\n }\n}\n\n/** A control flow evaluator. */\nexport class Flow {\n\n /** Parent flow. */\n parent: Flow | null;\n /** Flow flags indicating specific conditions. */\n flags: FlowFlags;\n /** Function this flow belongs to. */\n parentFunction: Function;\n /** The label we break to when encountering a continue statement. */\n continueLabel: string | null;\n /** The label we break to when encountering a break statement. */\n breakLabel: string | null;\n /** The current return type. */\n returnType: Type;\n /** The current contextual type arguments. */\n contextualTypeArguments: Map | null;\n /** Scoped local variables. */\n scopedLocals: Map | null = null;\n /** Local flags. */\n localFlags: LocalFlags[];\n /** Field flags. Relevant in constructors. */\n fieldFlags: Map | null = null;\n /** Function being inlined, when inlining. */\n inlineFunction: Function | null;\n /** The label we break to when encountering a return statement, when inlining. */\n inlineReturnLabel: string | null;\n\n /** Creates the parent flow of the specified function. */\n static create(parentFunction: Function): Flow {\n var flow = new Flow();\n flow.parent = null;\n flow.flags = FlowFlags.NONE;\n flow.parentFunction = parentFunction;\n flow.continueLabel = null;\n flow.breakLabel = null;\n flow.returnType = parentFunction.signature.returnType;\n flow.contextualTypeArguments = parentFunction.contextualTypeArguments;\n flow.localFlags = [];\n flow.inlineFunction = null;\n flow.inlineReturnLabel = null;\n return flow;\n }\n\n /** Creates an inline flow within `parentFunction`. */\n static createInline(parentFunction: Function, inlineFunction: Function): Flow {\n var flow = Flow.create(parentFunction);\n flow.set(FlowFlags.INLINE_CONTEXT);\n flow.inlineFunction = inlineFunction;\n flow.inlineReturnLabel = inlineFunction.internalName + \"|inlined.\" + (inlineFunction.nextInlineId++).toString(10);\n flow.returnType = inlineFunction.signature.returnType;\n flow.contextualTypeArguments = inlineFunction.contextualTypeArguments;\n return flow;\n }\n\n private constructor() { }\n\n /** Gets the actual function being compiled, The inlined function when inlining, otherwise the parent function. */\n get actualFunction(): Function {\n return this.inlineFunction || this.parentFunction;\n }\n\n /** Tests if this flow has the specified flag or flags. */\n is(flag: FlowFlags): bool { return (this.flags & flag) == flag; }\n /** Tests if this flow has one of the specified flags. */\n isAny(flag: FlowFlags): bool { return (this.flags & flag) != 0; }\n /** Sets the specified flag or flags. */\n set(flag: FlowFlags): void { this.flags |= flag; }\n /** Unsets the specified flag or flags. */\n unset(flag: FlowFlags): void { this.flags &= ~flag; }\n\n /** Forks this flow to a child flow. */\n fork(): Flow {\n var branch = new Flow();\n branch.parent = this;\n branch.flags = this.flags;\n branch.parentFunction = this.parentFunction;\n branch.continueLabel = this.continueLabel;\n branch.breakLabel = this.breakLabel;\n branch.returnType = this.returnType;\n branch.contextualTypeArguments = this.contextualTypeArguments;\n branch.localFlags = this.localFlags.slice();\n branch.inlineFunction = this.inlineFunction;\n branch.inlineReturnLabel = this.inlineReturnLabel;\n return branch;\n }\n\n /** Gets a free temporary local of the specified type. */\n getTempLocal(type: Type, except: Set | null = null): Local {\n var parentFunction = this.parentFunction;\n var temps: Local[] | null;\n switch (type.toNativeType()) {\n case NativeType.I32: { temps = parentFunction.tempI32s; break; }\n case NativeType.I64: { temps = parentFunction.tempI64s; break; }\n case NativeType.F32: { temps = parentFunction.tempF32s; break; }\n case NativeType.F64: { temps = parentFunction.tempF64s; break; }\n case NativeType.V128: { temps = parentFunction.tempV128s; break; }\n default: throw new Error(\"concrete type expected\");\n }\n var local: Local;\n if (except) {\n if (temps && temps.length) {\n for (let i = 0, k = temps.length; i < k; ++i) {\n if (!except.has(temps[i].index)) {\n local = temps[i];\n let k = temps.length - 1;\n while (i < k) unchecked(temps[i] = temps[i++ + 1]);\n temps.length = k;\n local.type = type;\n local.flags = CommonFlags.NONE;\n this.unsetLocalFlag(local.index, ~0);\n return local;\n }\n }\n }\n local = parentFunction.addLocal(type);\n } else {\n if (temps && temps.length) {\n local = temps.pop();\n local.type = type;\n local.flags = CommonFlags.NONE;\n } else {\n local = parentFunction.addLocal(type);\n }\n }\n this.unsetLocalFlag(local.index, ~0);\n return local;\n }\n\n /** Gets a local that sticks around until this flow is exited, and then released. */\n getAutoreleaseLocal(type: Type, except: Set | null = null): Local {\n var local = this.getTempLocal(type, except);\n local.set(CommonFlags.SCOPED);\n var scopedLocals = this.scopedLocals;\n if (!scopedLocals) this.scopedLocals = scopedLocals = new Map();\n scopedLocals.set(\"~auto\" + (this.parentFunction.nextAutoreleaseId++), local);\n this.setLocalFlag(local.index, LocalFlags.RETAINED);\n return local;\n }\n\n /** Frees the temporary local for reuse. */\n freeTempLocal(local: Local): void {\n if (local.is(CommonFlags.INLINED)) return;\n assert(local.index >= 0);\n var parentFunction = this.parentFunction;\n var temps: Local[];\n assert(local.type != null); // internal error\n switch ((local.type).toNativeType()) {\n case NativeType.I32: {\n temps = parentFunction.tempI32s || (parentFunction.tempI32s = []);\n break;\n }\n case NativeType.I64: {\n temps = parentFunction.tempI64s || (parentFunction.tempI64s = []);\n break;\n }\n case NativeType.F32: {\n temps = parentFunction.tempF32s || (parentFunction.tempF32s = []);\n break;\n }\n case NativeType.F64: {\n temps = parentFunction.tempF64s || (parentFunction.tempF64s = []);\n break;\n }\n case NativeType.V128: {\n temps = parentFunction.tempV128s || (parentFunction.tempV128s = []);\n break;\n }\n default: throw new Error(\"concrete type expected\");\n }\n assert(local.index >= 0);\n temps.push(local);\n }\n\n /** Gets and immediately frees a temporary local of the specified type. */\n getAndFreeTempLocal(type: Type, except: Set | null = null): Local {\n var local = this.getTempLocal(type, except);\n this.freeTempLocal(local);\n return local;\n }\n\n /** Gets the scoped local of the specified name. */\n getScopedLocal(name: string): Local | null {\n var scopedLocals = this.scopedLocals;\n if (scopedLocals && scopedLocals.has(name)) return scopedLocals.get(name);\n return null;\n }\n\n /** Adds a new scoped local of the specified name. */\n addScopedLocal(name: string, type: Type, except: Set | null = null): Local {\n var scopedLocal = this.getTempLocal(type, except);\n var scopedLocals = this.scopedLocals;\n if (!scopedLocals) this.scopedLocals = scopedLocals = new Map();\n else assert(!scopedLocals.has(name));\n scopedLocal.set(CommonFlags.SCOPED);\n scopedLocals.set(name, scopedLocal);\n return scopedLocal;\n }\n\n /** Adds a new scoped alias for the specified local. For example `super` aliased to the `this` local. */\n addScopedAlias(name: string, type: Type, index: i32, reportNode: Node | null = null): Local {\n if (!this.scopedLocals) this.scopedLocals = new Map();\n else {\n let existingLocal = this.scopedLocals.get(name);\n if (existingLocal) {\n if (reportNode) {\n this.parentFunction.program.error(\n DiagnosticCode.Duplicate_identifier_0,\n reportNode.range\n );\n }\n return existingLocal;\n }\n }\n assert(index < this.parentFunction.localsByIndex.length);\n var scopedAlias = new Local(name, index, type, this.parentFunction);\n // not flagged as SCOPED as it must not be free'd when the flow is finalized\n this.scopedLocals.set(name, scopedAlias);\n return scopedAlias;\n }\n\n /** Frees this flow's scoped variables and returns its parent flow. */\n freeScopedLocals(): void {\n if (this.scopedLocals) {\n for (let scopedLocal of this.scopedLocals.values()) {\n if (scopedLocal.is(CommonFlags.SCOPED)) { // otherwise an alias\n this.freeTempLocal(scopedLocal);\n }\n }\n this.scopedLocals = null;\n }\n }\n\n /** Looks up the local of the specified name in the current scope. */\n lookupLocal(name: string): Local | null {\n var current: Flow | null = this;\n var scope: Map | null;\n do if ((scope = current.scopedLocals) && (scope.has(name))) return scope.get(name);\n while (current = current.parent);\n return this.parentFunction.localsByName.get(name);\n }\n\n /** Looks up the element with the specified name relative to the scope of this flow. */\n lookup(name: string): Element | null {\n var element = this.lookupLocal(name);\n if (element) return element;\n return this.actualFunction.lookup(name);\n }\n\n /** Tests if the local at the specified index has the specified flag or flags. */\n isLocalFlag(index: i32, flag: LocalFlags, defaultIfInlined: bool = true): bool {\n if (index < 0) return defaultIfInlined;\n var localFlags = this.localFlags;\n return index < localFlags.length && (unchecked(this.localFlags[index]) & flag) == flag;\n }\n\n /** Tests if the local at the specified index has any of the specified flags. */\n isAnyLocalFlag(index: i32, flag: LocalFlags, defaultIfInlined: bool = true): bool {\n if (index < 0) return defaultIfInlined;\n var localFlags = this.localFlags;\n return index < localFlags.length && (unchecked(this.localFlags[index]) & flag) != 0;\n }\n\n /** Sets the specified flag or flags on the local at the specified index. */\n setLocalFlag(index: i32, flag: LocalFlags): void {\n if (index < 0) return;\n var localFlags = this.localFlags;\n var flags = index < localFlags.length ? unchecked(localFlags[index]) : 0;\n this.localFlags[index] = flags | flag;\n }\n\n /** Unsets the specified flag or flags on the local at the specified index. */\n unsetLocalFlag(index: i32, flag: LocalFlags): void {\n if (index < 0) return;\n var localFlags = this.localFlags;\n var flags = index < localFlags.length ? unchecked(localFlags[index]) : 0;\n this.localFlags[index] = flags & ~flag;\n }\n\n /** Pushes a new break label to the stack, for example when entering a loop that one can `break` from. */\n pushBreakLabel(): string {\n var parentFunction = this.parentFunction;\n var id = parentFunction.nextBreakId++;\n var stack = parentFunction.breakStack;\n if (!stack) parentFunction.breakStack = [ id ];\n else stack.push(id);\n return parentFunction.breakLabel = id.toString(10);\n }\n\n /** Pops the most recent break label from the stack. */\n popBreakLabel(): void {\n var parentFunction = this.parentFunction;\n var stack = assert(parentFunction.breakStack);\n var length = assert(stack.length);\n stack.pop();\n if (length > 1) {\n parentFunction.breakLabel = stack[length - 2].toString(10);\n } else {\n parentFunction.breakLabel = null;\n parentFunction.breakStack = null;\n }\n }\n\n /** Inherits flags and local wrap states from the specified flow (e.g. blocks). */\n inherit(other: Flow): void {\n this.flags |= other.flags & (FlowFlags.ANY_CATEGORICAL | FlowFlags.ANY_CONDITIONAL);\n this.localFlags = other.localFlags; // no need to slice because other flow is finished\n }\n\n /** Inherits categorical flags as conditional flags from the specified flow (e.g. then without else). */\n inheritConditional(other: Flow): void {\n if (other.is(FlowFlags.RETURNS)) {\n this.set(FlowFlags.CONDITIONALLY_RETURNS);\n }\n if (other.is(FlowFlags.THROWS)) {\n this.set(FlowFlags.CONDITIONALLY_THROWS);\n }\n if (other.is(FlowFlags.BREAKS) && other.breakLabel == this.breakLabel) {\n this.set(FlowFlags.CONDITIONALLY_BREAKS);\n }\n if (other.is(FlowFlags.CONTINUES) && other.continueLabel == this.continueLabel) {\n this.set(FlowFlags.CONDITIONALLY_CONTINUES);\n }\n if (other.is(FlowFlags.ALLOCATES)) {\n this.set(FlowFlags.CONDITIONALLY_ALLOCATES);\n }\n var localFlags = other.localFlags;\n for (let i = 0, k = localFlags.length; i < k; ++i) {\n let flags = localFlags[i];\n if (flags & LocalFlags.RETAINED) this.setLocalFlag(i, LocalFlags.CONDITIONALLY_RETAINED);\n if (flags & LocalFlags.READFROM) this.setLocalFlag(i, LocalFlags.CONDITIONALLY_READFROM);\n if (flags & LocalFlags.WRITTENTO) this.setLocalFlag(i, LocalFlags.CONDITIONALLY_WRITTENTO);\n }\n }\n\n /** Inherits mutual flags and local wrap states from the specified flows (e.g. then with else). */\n inheritMutual(left: Flow, right: Flow): void {\n // categorical flags set in both arms\n this.set(left.flags & right.flags & FlowFlags.ANY_CATEGORICAL);\n\n // conditional flags set in any arm\n this.set(left.flags & FlowFlags.ANY_CONDITIONAL);\n this.set(right.flags & FlowFlags.ANY_CONDITIONAL);\n\n // categorical flags in either arm as conditional\n this.inheritConditional(left);\n this.inheritConditional(right);\n\n // categorical local flags set in both arms / conditional local flags set in at least one arm\n var leftLocalFlags = left.localFlags;\n var numLeftLocalFlags = leftLocalFlags.length;\n var rightLocalFlags = right.localFlags;\n var numRightLocalFlags = rightLocalFlags.length;\n var combinedFlags = new Array(max(numLeftLocalFlags, numRightLocalFlags));\n for (let i = 0; i < numLeftLocalFlags; ++i) {\n combinedFlags[i] = LocalFlags.join(\n unchecked(leftLocalFlags[i]),\n i < numRightLocalFlags\n ? unchecked(rightLocalFlags[i])\n : 0\n );\n }\n for (let i = numLeftLocalFlags; i < numRightLocalFlags; ++i) {\n combinedFlags[i] = LocalFlags.join(\n 0,\n unchecked(rightLocalFlags[i])\n );\n }\n this.localFlags = combinedFlags;\n }\n\n /** Checks if an expression of the specified type is known to be non-null, even if the type might be nullable. */\n isNonnull(expr: ExpressionRef, type: Type): bool {\n if (!type.is(TypeFlags.NULLABLE)) return true;\n // below, only teeLocal/getLocal are relevant because these are the only expressions that\n // depend on a dynamic nullable state (flag = LocalFlags.NONNULL), while everything else\n // has already been handled by the nullable type check above.\n switch (getExpressionId(expr)) {\n case ExpressionId.LocalSet: {\n if (!isLocalTee(expr)) break;\n let local = this.parentFunction.localsByIndex[getLocalSetIndex(expr)];\n return !local.type.is(TypeFlags.NULLABLE) || this.isLocalFlag(local.index, LocalFlags.NONNULL, false);\n }\n case ExpressionId.LocalGet: {\n let local = this.parentFunction.localsByIndex[getLocalGetIndex(expr)];\n return !local.type.is(TypeFlags.NULLABLE) || this.isLocalFlag(local.index, LocalFlags.NONNULL, false);\n }\n }\n return false;\n }\n\n /** Updates local states to reflect that this branch is only taken when `expr` is true-ish. */\n inheritNonnullIfTrue(expr: ExpressionRef): void {\n // A: `expr` is true-ish -> Q: how did that happen?\n switch (getExpressionId(expr)) {\n case ExpressionId.LocalSet: {\n if (!isLocalTee(expr)) break;\n let local = this.parentFunction.localsByIndex[getLocalSetIndex(expr)];\n this.setLocalFlag(local.index, LocalFlags.NONNULL);\n this.inheritNonnullIfTrue(getLocalSetValue(expr)); // must have been true-ish as well\n break;\n }\n case ExpressionId.LocalGet: {\n let local = this.parentFunction.localsByIndex[getLocalGetIndex(expr)];\n this.setLocalFlag(local.index, LocalFlags.NONNULL);\n break;\n }\n case ExpressionId.If: {\n let ifFalse = getIfFalse(expr);\n if (!ifFalse) break;\n if (getExpressionId(ifFalse) == ExpressionId.Const) {\n // Logical AND: (if (condition ifTrue 0))\n // the only way this had become true is if condition and ifTrue are true\n if (\n (getExpressionType(ifFalse) == NativeType.I32 && getConstValueI32(ifFalse) == 0) ||\n (getExpressionType(ifFalse) == NativeType.I64 && getConstValueI64Low(ifFalse) == 0 && getConstValueI64High(ifFalse) == 0)\n ) {\n this.inheritNonnullIfTrue(getIfCondition(expr));\n this.inheritNonnullIfTrue(getIfTrue(expr));\n }\n }\n break;\n }\n case ExpressionId.Unary: {\n switch (getUnaryOp(expr)) {\n case UnaryOp.EqzI32:\n case UnaryOp.EqzI64: {\n this.inheritNonnullIfFalse(getUnaryValue(expr)); // !value -> value must have been false\n break;\n }\n }\n break;\n }\n case ExpressionId.Binary: {\n switch (getBinaryOp(expr)) {\n case BinaryOp.EqI32: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) != 0) {\n this.inheritNonnullIfTrue(right); // TRUE == right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) != 0) {\n this.inheritNonnullIfTrue(left); // left == TRUE -> left must have been true\n }\n break;\n }\n case BinaryOp.EqI64: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && (getConstValueI64Low(left) != 0 || getConstValueI64High(left) != 0)) {\n this.inheritNonnullIfTrue(right); // TRUE == right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && (getConstValueI64Low(right) != 0 && getConstValueI64High(right) != 0)) {\n this.inheritNonnullIfTrue(left); // left == TRUE -> left must have been true\n }\n break;\n }\n case BinaryOp.NeI32: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) == 0) {\n this.inheritNonnullIfTrue(right); // FALSE != right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) == 0) {\n this.inheritNonnullIfTrue(left); // left != FALSE -> left must have been true\n }\n break;\n }\n case BinaryOp.NeI64: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI64Low(left) == 0 && getConstValueI64High(left) == 0) {\n this.inheritNonnullIfTrue(right); // FALSE != right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI64Low(right) == 0 && getConstValueI64High(right) == 0) {\n this.inheritNonnullIfTrue(left); // left != FALSE -> left must have been true\n }\n break;\n }\n }\n break;\n }\n case ExpressionId.Call: {\n let name = getCallTarget(expr);\n let program = this.parentFunction.program;\n switch (name) {\n case program.retainInstance.internalName: {\n this.inheritNonnullIfTrue(getCallOperand(expr, 0));\n break;\n }\n }\n break;\n }\n }\n }\n\n /** Updates local states to reflect that this branch is only taken when `expr` is false-ish. */\n inheritNonnullIfFalse(expr: ExpressionRef): void {\n // A: `expr` is false-ish -> Q: how did that happen?\n switch (getExpressionId(expr)) {\n case ExpressionId.Unary: {\n switch (getUnaryOp(expr)) {\n case UnaryOp.EqzI32:\n case UnaryOp.EqzI64: {\n this.inheritNonnullIfTrue(getUnaryValue(expr)); // !value -> value must have been true\n break;\n }\n }\n break;\n }\n case ExpressionId.If: {\n let ifTrue = getIfTrue(expr);\n if (getExpressionId(ifTrue) == ExpressionId.Const) {\n let ifFalse = getIfFalse(expr);\n if (!ifFalse) break;\n // Logical OR: (if (condition 1 ifFalse))\n // the only way this had become false is if condition and ifFalse are false\n if (\n (getExpressionType(ifTrue) == NativeType.I32 && getConstValueI32(ifTrue) != 0) ||\n (getExpressionType(ifTrue) == NativeType.I64 && (getConstValueI64Low(ifTrue) != 0 || getConstValueI64High(ifTrue) != 0))\n ) {\n this.inheritNonnullIfFalse(getIfCondition(expr));\n this.inheritNonnullIfFalse(getIfFalse(expr));\n }\n\n }\n break;\n }\n case ExpressionId.Binary: {\n switch (getBinaryOp(expr)) {\n // remember: we want to know how the _entire_ expression became FALSE (!)\n case BinaryOp.EqI32: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) == 0) {\n this.inheritNonnullIfTrue(right); // FALSE == right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) == 0) {\n this.inheritNonnullIfTrue(left); // left == FALSE -> left must have been true\n }\n break;\n }\n case BinaryOp.EqI64: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI64Low(left) == 0 && getConstValueI64High(left) == 0) {\n this.inheritNonnullIfTrue(right); // FALSE == right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI64Low(right) == 0 && getConstValueI64High(right) == 0) {\n this.inheritNonnullIfTrue(left); // left == FALSE -> left must have been true\n }\n break;\n }\n case BinaryOp.NeI32: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) != 0) {\n this.inheritNonnullIfTrue(right); // TRUE != right -> right must have been true\n } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) != 0) {\n this.inheritNonnullIfTrue(left); // left != TRUE -> left must have been true\n }\n break;\n }\n case BinaryOp.NeI64: {\n let left = getBinaryLeft(expr);\n let right = getBinaryRight(expr);\n if (getExpressionId(left) == ExpressionId.Const && (getConstValueI64Low(left) != 0 || getConstValueI64High(left) != 0)) {\n this.inheritNonnullIfTrue(right); // TRUE != right -> right must have been true for this to become false\n } else if (getExpressionId(right) == ExpressionId.Const && (getConstValueI64Low(right) != 0 || getConstValueI64High(right) != 0)) {\n this.inheritNonnullIfTrue(left); // left != TRUE -> left must have been true for this to become false\n }\n break;\n }\n }\n break;\n }\n }\n }\n\n /**\n * Tests if an expression can possibly overflow in the context of this flow. Assumes that the\n * expression might already have overflown and returns `false` only if the operation neglects\n * any possible combination of garbage bits being present.\n */\n canOverflow(expr: ExpressionRef, type: Type): bool {\n // TODO: the following catches most common and a few uncommon cases, but there are additional\n // opportunities here, obviously.\n assert(type != Type.void);\n\n // types other than i8, u8, i16, u16 and bool do not overflow\n if (!type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) return false;\n\n var operand: ExpressionRef;\n switch (getExpressionId(expr)) {\n\n // overflows if the local isn't wrapped or the conversion does\n case ExpressionId.LocalGet: {\n let local = this.parentFunction.localsByIndex[getLocalGetIndex(expr)];\n return !this.isLocalFlag(local.index, LocalFlags.WRAPPED, true)\n || canConversionOverflow(local.type, type);\n }\n\n // overflows if the value does\n case ExpressionId.LocalSet: { // tee\n assert(isLocalTee(expr));\n return this.canOverflow(getLocalSetValue(expr), type);\n }\n\n // overflows if the conversion does (globals are wrapped on set)\n case ExpressionId.GlobalGet: {\n // TODO: this is inefficient because it has to read a string\n let global = assert(this.parentFunction.program.elementsByName.get(assert(getGlobalGetName(expr))));\n assert(global.kind == ElementKind.GLOBAL);\n return canConversionOverflow(assert((global).type), type);\n }\n\n case ExpressionId.Binary: {\n switch (getBinaryOp(expr)) {\n\n // comparisons do not overflow (result is 0 or 1)\n case BinaryOp.EqI32:\n case BinaryOp.EqI64:\n case BinaryOp.EqF32:\n case BinaryOp.EqF64:\n case BinaryOp.NeI32:\n case BinaryOp.NeI64:\n case BinaryOp.NeF32:\n case BinaryOp.NeF64:\n case BinaryOp.LtI32:\n case BinaryOp.LtU32:\n case BinaryOp.LtI64:\n case BinaryOp.LtU64:\n case BinaryOp.LtF32:\n case BinaryOp.LtF64:\n case BinaryOp.LeI32:\n case BinaryOp.LeU32:\n case BinaryOp.LeI64:\n case BinaryOp.LeU64:\n case BinaryOp.LeF32:\n case BinaryOp.LeF64:\n case BinaryOp.GtI32:\n case BinaryOp.GtU32:\n case BinaryOp.GtI64:\n case BinaryOp.GtU64:\n case BinaryOp.GtF32:\n case BinaryOp.GtF64:\n case BinaryOp.GeI32:\n case BinaryOp.GeU32:\n case BinaryOp.GeI64:\n case BinaryOp.GeU64:\n case BinaryOp.GeF32:\n case BinaryOp.GeF64: return false;\n\n // result won't overflow if one side is 0 or if one side is 1 and the other wrapped\n case BinaryOp.MulI32: {\n return !(\n (\n getExpressionId(operand = getBinaryLeft(expr)) == ExpressionId.Const &&\n (\n getConstValueI32(operand) == 0 ||\n (\n getConstValueI32(operand) == 1 &&\n !this.canOverflow(getBinaryRight(expr), type)\n )\n )\n ) || (\n getExpressionId(operand = getBinaryRight(expr)) == ExpressionId.Const &&\n (\n getConstValueI32(operand) == 0 ||\n (\n getConstValueI32(operand) == 1 &&\n !this.canOverflow(getBinaryLeft(expr), type)\n )\n )\n )\n );\n }\n\n // result won't overflow if one side is a constant less than this type's mask or one side\n // is wrapped\n case BinaryOp.AndI32: {\n // note that computeSmallIntegerMask returns the mask minus the MSB for signed types\n // because signed value garbage bits must be guaranteed to be equal to the MSB.\n return !(\n (\n (\n getExpressionId(operand = getBinaryLeft(expr)) == ExpressionId.Const &&\n getConstValueI32(operand) <= type.computeSmallIntegerMask(Type.i32)\n ) || !this.canOverflow(operand, type)\n ) || (\n (\n getExpressionId(operand = getBinaryRight(expr)) == ExpressionId.Const &&\n getConstValueI32(operand) <= type.computeSmallIntegerMask(Type.i32)\n ) || !this.canOverflow(operand, type)\n )\n );\n }\n\n // overflows if the shift doesn't clear potential garbage bits\n case BinaryOp.ShlI32: {\n let shift = 32 - type.size;\n return getExpressionId(operand = getBinaryRight(expr)) != ExpressionId.Const\n || getConstValueI32(operand) < shift;\n }\n\n // overflows if the value does and the shift doesn't clear potential garbage bits\n case BinaryOp.ShrI32: {\n let shift = 32 - type.size;\n return this.canOverflow(getBinaryLeft(expr), type) && (\n getExpressionId(operand = getBinaryRight(expr)) != ExpressionId.Const ||\n getConstValueI32(operand) < shift\n );\n }\n\n // overflows if the shift does not clear potential garbage bits. if an unsigned value is\n // wrapped, it can't overflow.\n case BinaryOp.ShrU32: {\n let shift = 32 - type.size;\n return type.is(TypeFlags.SIGNED)\n ? !(\n getExpressionId(operand = getBinaryRight(expr)) == ExpressionId.Const &&\n getConstValueI32(operand) > shift // must clear MSB\n )\n : this.canOverflow(getBinaryLeft(expr), type) && !(\n getExpressionId(operand = getBinaryRight(expr)) == ExpressionId.Const &&\n getConstValueI32(operand) >= shift // can leave MSB\n );\n }\n\n // overflows if any side does\n case BinaryOp.DivU32:\n case BinaryOp.RemI32:\n case BinaryOp.RemU32: {\n return this.canOverflow(getBinaryLeft(expr), type)\n || this.canOverflow(getBinaryRight(expr), type);\n }\n }\n break;\n }\n\n case ExpressionId.Unary: {\n switch (getUnaryOp(expr)) {\n\n // comparisons do not overflow (result is 0 or 1)\n case UnaryOp.EqzI32:\n case UnaryOp.EqzI64: return false;\n\n // overflow if the maximum result (32) cannot be represented in the target type\n case UnaryOp.ClzI32:\n case UnaryOp.CtzI32:\n case UnaryOp.PopcntI32: return type.size < 7;\n }\n break;\n }\n\n // overflows if the value cannot be represented in the target type\n case ExpressionId.Const: {\n let value: i32 = 0;\n switch (getExpressionType(expr)) {\n case NativeType.I32: { value = getConstValueI32(expr); break; }\n case NativeType.I64: { value = getConstValueI64Low(expr); break; } // discards upper bits\n case NativeType.F32: { value = i32(getConstValueF32(expr)); break; }\n case NativeType.F64: { value = i32(getConstValueF64(expr)); break; }\n default: assert(false);\n }\n switch (type.kind) {\n case TypeKind.I8: return value < i8.MIN_VALUE || value > i8.MAX_VALUE;\n case TypeKind.I16: return value < i16.MIN_VALUE || value > i16.MAX_VALUE;\n case TypeKind.U8: return value < 0 || value > u8.MAX_VALUE;\n case TypeKind.U16: return value < 0 || value > u16.MAX_VALUE;\n case TypeKind.BOOL: return (value & ~1) != 0;\n }\n break;\n }\n\n // overflows if the conversion does\n case ExpressionId.Load: {\n let fromType: Type;\n let signed = isLoadSigned(expr);\n switch (getLoadBytes(expr)) {\n case 1: { fromType = signed ? Type.i8 : Type.u8; break; }\n case 2: { fromType = signed ? Type.i16 : Type.u16; break; }\n default: { fromType = signed ? Type.i32 : Type.u32; break; }\n }\n return canConversionOverflow(fromType, type);\n }\n\n // overflows if the result does, which is either\n // - the last expression of the block, by contract, if the block doesn't have a label\n // - the last expression or the value of an inner br if the block has a label (TODO)\n case ExpressionId.Block: {\n if (!getBlockName(expr)) {\n let size = assert(getBlockChildCount(expr));\n let last = getBlockChild(expr, size - 1);\n return this.canOverflow(last, type);\n }\n break;\n }\n\n // overflows if either side does\n case ExpressionId.If: {\n return this.canOverflow(getIfTrue(expr), type)\n || this.canOverflow(assert(getIfFalse(expr)), type);\n }\n\n // overflows if either side does\n case ExpressionId.Select: {\n return this.canOverflow(getSelectThen(expr), type)\n || this.canOverflow(getSelectElse(expr), type);\n }\n\n // overflows if the call does not return a wrapped value or the conversion does\n case ExpressionId.Call: {\n let program = this.parentFunction.program;\n let instancesByName = program.instancesByName;\n let instanceName = assert(getCallTarget(expr));\n if (instancesByName.has(instanceName)) {\n let instance = instancesByName.get(instanceName)!;\n assert(instance.kind == ElementKind.FUNCTION);\n let returnType = (instance).signature.returnType;\n return !(instance).flow.is(FlowFlags.RETURNS_WRAPPED)\n || canConversionOverflow(returnType, type);\n }\n return false; // assume no overflow for builtins\n }\n\n // doesn't technically overflow\n case ExpressionId.Unreachable: return false;\n }\n return true;\n }\n\n toString(): string {\n var levels = 0;\n var parent = this.parent;\n while (parent) {\n parent = parent.parent;\n ++levels;\n }\n return \"Flow(\" + this.actualFunction + \")[\" + levels.toString() + \"]\";\n }\n}\n\n/** Tests if a conversion from one type to another can technically overflow. */\nfunction canConversionOverflow(fromType: Type, toType: Type): bool {\n return !fromType.is(TypeFlags.INTEGER) // non-i32 locals or returns\n || fromType.size > toType.size\n || fromType.is(TypeFlags.SIGNED) != toType.is(TypeFlags.SIGNED);\n}\n\n/** Finds all indexes of locals used in the specified expression. */\nexport function findUsedLocals(expr: ExpressionRef, used: Set = new Set()): Set {\n traverse(expr, used, findUsedLocalsVisit);\n return used;\n}\n\n/** A visitor function for use with `traverse` that finds all indexes of used locals. */\nfunction findUsedLocalsVisit(expr: ExpressionRef, used: Set): void {\n switch (getExpressionId(expr)) {\n case ExpressionId.LocalGet: {\n used.add(getLocalGetIndex(expr));\n break;\n }\n case ExpressionId.LocalSet: {\n used.add(getLocalSetIndex(expr));\n // fall-through for value\n }\n default: traverse(expr, used, findUsedLocalsVisit);\n }\n}\n","/**\n * The AssemblyScript compiler.\n * @module compiler\n *//***/\n\nimport {\n BuiltinSymbols,\n compileCall as compileBuiltinCall,\n compileAbort,\n compileVisitGlobals,\n compileVisitMembers,\n compileRTTI,\n} from \"./builtins\";\n\nimport {\n DiagnosticCode,\n DiagnosticEmitter\n} from \"./diagnostics\";\n\nimport {\n Module,\n MemorySegment,\n ExpressionRef,\n UnaryOp,\n BinaryOp,\n NativeType,\n FunctionRef,\n ExpressionId,\n FunctionTypeRef,\n GlobalRef,\n getExpressionId,\n getExpressionType,\n getConstValueI32,\n getConstValueI64Low,\n getConstValueI64High,\n getConstValueF32,\n getConstValueF64,\n getBlockChildCount,\n getBlockChild,\n getBlockName,\n getLocalGetIndex,\n isLocalTee,\n getLocalSetIndex,\n FeatureFlags,\n needsExplicitUnreachable\n} from \"./module\";\n\nimport {\n CommonFlags,\n INSTANCE_DELIMITER,\n STATIC_DELIMITER,\n GETTER_PREFIX,\n SETTER_PREFIX,\n CommonSymbols,\n INDEX_SUFFIX,\n Feature,\n Target\n} from \"./common\";\n\nimport {\n Program,\n ClassPrototype,\n Class,\n Element,\n ElementKind,\n Enum,\n Field,\n FunctionPrototype,\n Function,\n FunctionTarget,\n Global,\n Local,\n EnumValue,\n Property,\n VariableLikeElement,\n ConstantValueKind,\n OperatorKind,\n DecoratorFlags,\n PropertyPrototype,\n File,\n mangleInternalName\n} from \"./program\";\n\nimport {\n FlowFlags,\n Flow,\n LocalFlags,\n findUsedLocals\n} from \"./flow\";\n\nimport {\n Resolver, ReportMode\n} from \"./resolver\";\n\nimport {\n Token,\n operatorTokenToString\n} from \"./tokenizer\";\n\nimport {\n Node,\n NodeKind,\n NamedTypeNode,\n Range,\n DecoratorKind,\n AssertionKind,\n\n Statement,\n BlockStatement,\n BreakStatement,\n ClassDeclaration,\n ContinueStatement,\n DeclarationStatement,\n DoStatement,\n EmptyStatement,\n EnumDeclaration,\n ExportStatement,\n ExpressionStatement,\n FieldDeclaration,\n ForStatement,\n FunctionDeclaration,\n IfStatement,\n ImportStatement,\n InstanceOfExpression,\n InterfaceDeclaration,\n NamespaceDeclaration,\n ReturnStatement,\n SwitchStatement,\n ThrowStatement,\n TryStatement,\n VariableStatement,\n VoidStatement,\n WhileStatement,\n\n Expression,\n AssertionExpression,\n BinaryExpression,\n CallExpression,\n CommaExpression,\n ElementAccessExpression,\n FloatLiteralExpression,\n FunctionExpression,\n IdentifierExpression,\n IntegerLiteralExpression,\n LiteralExpression,\n LiteralKind,\n NewExpression,\n ObjectLiteralExpression,\n ParenthesizedExpression,\n PropertyAccessExpression,\n TernaryExpression,\n ArrayLiteralExpression,\n StringLiteralExpression,\n UnaryPostfixExpression,\n UnaryPrefixExpression,\n\n nodeIsConstantValue,\n findDecorator,\n isTypeOmitted,\n ExportDefaultStatement,\n SourceKind\n} from \"./ast\";\n\nimport {\n Type,\n TypeKind,\n TypeFlags,\n Signature,\n typesToNativeTypes\n} from \"./types\";\n\nimport {\n writeI8,\n writeI16,\n writeI32,\n writeI64,\n writeF32,\n writeF64,\n makeMap\n} from \"./util\";\n\n/** Compiler options. */\nexport class Options {\n\n /** WebAssembly target. Defaults to {@link Target.WASM32}. */\n target: Target = Target.WASM32;\n /** If true, replaces assertions with nops. */\n noAssert: bool = false;\n /** If true, imports the memory provided by the embedder. */\n importMemory: bool = false;\n /** If greater than zero, declare memory as shared by setting max memory to sharedMemory. */\n sharedMemory: i32 = 0;\n /** If true, imports the function table provided by the embedder. */\n importTable: bool = false;\n /** If true, generates information necessary for source maps. */\n sourceMap: bool = false;\n /** If true, generates an explicit start function. */\n explicitStart: bool = false;\n /** Static memory start offset. */\n memoryBase: i32 = 0;\n /** Global aliases, mapping alias names as the key to internal names to be aliased as the value. */\n globalAliases: Map | null = null;\n /** Additional features to activate. */\n features: Feature = Feature.NONE;\n /** If true, disallows unsafe features in user code. */\n noUnsafe: bool = false;\n\n /** Hinted optimize level. Not applied by the compiler itself. */\n optimizeLevelHint: i32 = 0;\n /** Hinted shrink level. Not applied by the compiler itself. */\n shrinkLevelHint: i32 = 0;\n\n /** Tests if the target is WASM64 or, otherwise, WASM32. */\n get isWasm64(): bool {\n return this.target == Target.WASM64;\n }\n\n /** Gets the unsigned size type matching the target. */\n get usizeType(): Type {\n return this.target == Target.WASM64 ? Type.usize64 : Type.usize32;\n }\n\n /** Gets the signed size type matching the target. */\n get isizeType(): Type {\n return this.target == Target.WASM64 ? Type.isize64 : Type.isize32;\n }\n\n /** Gets the native size type matching the target. */\n get nativeSizeType(): NativeType {\n return this.target == Target.WASM64 ? NativeType.I64 : NativeType.I32;\n }\n\n /** Tests if a specific feature is activated. */\n hasFeature(feature: Feature): bool {\n return (this.features & feature) != 0;\n }\n}\n\n/** Various constraints in expression compilation. */\nexport const enum Constraints {\n NONE = 0,\n\n /** Must implicitly convert to the target type. */\n CONV_IMPLICIT = 1 << 0,\n /** Must explicitly convert to the target type. */\n CONV_EXPLICIT = 1 << 1,\n /** Must wrap small integer values to match the target type. */\n MUST_WRAP = 1 << 2,\n\n /** Indicates that the value will be dropped immediately. */\n WILL_DROP = 1 << 3,\n /** Indicates that the value will be retained immediately. */\n WILL_RETAIN = 1 << 4,\n /** Indicates that static data is preferred. */\n PREFER_STATIC = 1 << 5\n}\n\n/** Runtime features to be activated by the compiler. */\nexport const enum RuntimeFeatures {\n NONE = 0,\n /** Requires heap setup. */\n HEAP = 1 << 0,\n /** Requires runtime type information setup. */\n RTTI = 1 << 1,\n /** Requires the built-in globals visitor. */\n visitGlobals = 1 << 2,\n /** Requires the built-in members visitor. */\n visitMembers = 1 << 3\n}\n\n/** Compiler interface. */\nexport class Compiler extends DiagnosticEmitter {\n\n /** Program reference. */\n program: Program;\n /** Resolver reference. */\n get resolver(): Resolver { return this.program.resolver; }\n /** Provided options. */\n options: Options;\n /** Module instance being compiled. */\n module: Module;\n /** Current control flow. */\n currentFlow: Flow;\n /** Current inline functions stack. */\n currentInlineFunctions: Function[] = [];\n /** Current enum in compilation. */\n currentEnum: Enum | null = null;\n /** Current type in compilation. */\n currentType: Type = Type.void;\n /** Start function statements. */\n currentBody: ExpressionRef[];\n /** Counting memory offset. */\n memoryOffset: I64;\n /** Memory segments being compiled. */\n memorySegments: MemorySegment[] = [];\n /** Map of already compiled static string segments. */\n stringSegments: Map = new Map();\n /** Function table being compiled. */\n functionTable: string[] = [ \"null\" ];\n /** Argument count helper global. */\n argcVar: GlobalRef = 0;\n /** Argument count helper setter. */\n argcSet: FunctionRef = 0;\n /** Requires runtime features. */\n runtimeFeatures: RuntimeFeatures = RuntimeFeatures.NONE;\n /** Expressions known to have skipped an autorelease. Usually function returns. */\n skippedAutoreleases: Set = new Set();\n\n /** Compiles a {@link Program} to a {@link Module} using the specified options. */\n static compile(program: Program, options: Options | null = null): Module {\n return new Compiler(program, options).compile();\n }\n\n /** Constructs a new compiler for a {@link Program} using the specified options. */\n constructor(program: Program, options: Options | null = null) {\n super(program.diagnostics);\n this.program = program;\n if (!options) options = new Options();\n this.options = options;\n this.memoryOffset = i64_new(\n // leave space for `null`. also functions as a sentinel for erroneous stores at offset 0.\n // note that Binaryen's asm.js output utilizes the first 8 bytes for reinterpretations (#1547)\n max(options.memoryBase, 8)\n );\n this.module = Module.create();\n var featureFlags: BinaryenFeatureFlags = 0;\n if (this.options.hasFeature(Feature.THREADS)) featureFlags |= FeatureFlags.Atomics;\n if (this.options.hasFeature(Feature.MUTABLE_GLOBAL)) featureFlags |= FeatureFlags.MutableGloabls;\n // if (this.options.hasFeature(Feature.TRUNC_SAT)) featureFlags |= FeatureFlags.NontrappingFPToInt;\n if (this.options.hasFeature(Feature.SIMD)) featureFlags |= FeatureFlags.SIMD128;\n if (this.options.hasFeature(Feature.BULK_MEMORY)) featureFlags |= FeatureFlags.BulkMemory;\n if (this.options.hasFeature(Feature.SIGN_EXTENSION)) featureFlags |= FeatureFlags.SignExt;\n // if (this.options.hasFeature(Feature.EXCEPTION_HANDLING)) featureFlags |= FeatureFlags.ExceptionHandling;\n this.module.setFeatures(featureFlags);\n }\n\n /** Performs compilation of the underlying {@link Program} to a {@link Module}. */\n compile(): Module {\n var options = this.options;\n var module = this.module;\n var program = this.program;\n\n // initialize lookup maps, built-ins, imports, exports, etc.\n program.initialize(options);\n\n // set up the main start function\n var startFunctionInstance = program.makeNativeFunction(\"start\", new Signature(program, [], Type.void));\n startFunctionInstance.internalName = \"start\";\n var startFunctionBody = new Array();\n this.currentFlow = startFunctionInstance.flow;\n this.currentBody = startFunctionBody;\n\n // add a mutable heap and rtti base dummies\n if (options.isWasm64) {\n module.addGlobal(BuiltinSymbols.heap_base, NativeType.I64, true, module.i64(0));\n module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I64, true, module.i64(0));\n } else {\n module.addGlobal(BuiltinSymbols.heap_base, NativeType.I32, true, module.i32(0));\n module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I32, true, module.i32(0));\n }\n\n // compile entry file(s) while traversing reachable elements\n var files = program.filesByName;\n for (let file of files.values()) {\n if (file.source.sourceKind == SourceKind.USER_ENTRY) {\n this.compileFile(file);\n this.compileExports(file);\n }\n }\n\n // compile the start function if not empty or explicitly requested\n var startIsEmpty = !startFunctionBody.length;\n var explicitStart = options.explicitStart;\n if (!startIsEmpty || explicitStart) {\n let signature = startFunctionInstance.signature;\n if (!startIsEmpty && explicitStart) {\n module.addGlobal(BuiltinSymbols.started, NativeType.I32, true, module.i32(0));\n startFunctionBody.unshift(\n module.if(\n module.global_get(BuiltinSymbols.started, NativeType.I32),\n module.return(),\n module.global_set(BuiltinSymbols.started, module.i32(1))\n )\n );\n }\n let funcRef = module.addFunction(\n startFunctionInstance.internalName,\n this.ensureFunctionType(\n signature.parameterTypes,\n signature.returnType,\n signature.thisType\n ),\n typesToNativeTypes(startFunctionInstance.additionalLocals),\n module.block(null, startFunctionBody)\n );\n startFunctionInstance.finalize(module, funcRef);\n if (!explicitStart) module.setStart(funcRef);\n else module.addFunctionExport(startFunctionInstance.internalName, \"__start\");\n }\n\n // compile runtime features\n if (this.runtimeFeatures & RuntimeFeatures.visitGlobals) compileVisitGlobals(this);\n if (this.runtimeFeatures & RuntimeFeatures.visitMembers) compileVisitMembers(this);\n module.removeGlobal(BuiltinSymbols.rtti_base);\n if (this.runtimeFeatures & RuntimeFeatures.RTTI) compileRTTI(this);\n\n // update the heap base pointer\n var memoryOffset = this.memoryOffset;\n memoryOffset = i64_align(memoryOffset, options.usizeType.byteSize);\n this.memoryOffset = memoryOffset;\n module.removeGlobal(BuiltinSymbols.heap_base);\n if (this.runtimeFeatures & RuntimeFeatures.HEAP) {\n if (options.isWasm64) {\n module.addGlobal(\n BuiltinSymbols.heap_base,\n NativeType.I64,\n false,\n module.i64(i64_low(memoryOffset), i64_high(memoryOffset))\n );\n } else {\n module.addGlobal(\n BuiltinSymbols.heap_base,\n NativeType.I32,\n false,\n module.i32(i64_low(memoryOffset))\n );\n }\n }\n\n // set up memory\n var isSharedMemory = options.hasFeature(Feature.THREADS) && options.sharedMemory > 0;\n module.setMemory(\n this.options.memoryBase /* is specified */ || this.memorySegments.length\n ? i64_low(i64_shr_u(i64_align(memoryOffset, 0x10000), i64_new(16, 0)))\n : 0,\n isSharedMemory ? options.sharedMemory : Module.UNLIMITED_MEMORY,\n this.memorySegments,\n options.target,\n \"memory\",\n isSharedMemory\n );\n\n // import memory if requested (default memory is named '0' by Binaryen)\n if (options.importMemory) module.addMemoryImport(\"0\", \"env\", \"memory\", isSharedMemory);\n\n // set up function table\n var functionTable = this.functionTable;\n module.setFunctionTable(functionTable.length, 0xffffffff, functionTable);\n module.addFunction(\"null\", this.ensureFunctionType(null, Type.void), null, module.block(null, []));\n\n // import table if requested (default table is named '0' by Binaryen)\n if (options.importTable) module.addTableImport(\"0\", \"env\", \"table\");\n\n // set up module exports\n for (let file of this.program.filesByName.values()) {\n if (file.source.sourceKind == SourceKind.USER_ENTRY) this.ensureModuleExports(file);\n }\n return module;\n }\n\n // === Exports ==================================================================================\n\n /** Applies the respective module exports for the specified file. */\n private ensureModuleExports(file: File): void {\n var members = file.exports;\n if (members) for (let [name, member] of members) this.ensureModuleExport(name, member);\n var exportsStar = file.exportsStar;\n if (exportsStar) {\n for (let i = 0, k = exportsStar.length; i < k; ++i) this.ensureModuleExports(exportsStar[i]);\n }\n }\n\n /** Applies the respective module export(s) for the specified element. */\n private ensureModuleExport(name: string, element: Element, prefix: string = \"\"): void {\n switch (element.kind) {\n\n // traverse instances\n case ElementKind.FUNCTION_PROTOTYPE: {\n let instances = (element).instances;\n if (instances) {\n for (let instance of instances.values()) {\n let instanceName = name;\n if (instance.is(CommonFlags.GENERIC)) {\n let fullName = instance.internalName;\n instanceName += fullName.substring(fullName.lastIndexOf(\"<\"));\n }\n this.ensureModuleExport(instanceName, instance, prefix);\n }\n }\n break;\n }\n case ElementKind.CLASS_PROTOTYPE: {\n let instances = (element).instances;\n if (instances) {\n for (let instance of instances.values()) {\n let instanceName = name;\n if (instance.is(CommonFlags.GENERIC)) {\n let fullName = instance.internalName;\n instanceName += fullName.substring(fullName.lastIndexOf(\"<\"));\n }\n this.ensureModuleExport(instanceName, instance, prefix);\n }\n }\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n let getter = (element).getterPrototype;\n let setter = (element).setterPrototype;\n if (getter) this.ensureModuleExport(GETTER_PREFIX + name, getter, prefix);\n if (setter) this.ensureModuleExport(SETTER_PREFIX + name, setter, prefix);\n break;\n }\n\n // export concrete elements\n case ElementKind.GLOBAL: {\n let isConst = element.is(CommonFlags.CONST) || element.is(CommonFlags.STATIC | CommonFlags.READONLY);\n if (!isConst && !this.options.hasFeature(Feature.MUTABLE_GLOBAL)) {\n this.error(\n DiagnosticCode.Cannot_export_a_mutable_global,\n (element).identifierNode.range\n );\n } else {\n this.module.addGlobalExport(element.internalName, prefix + name);\n }\n break;\n }\n case ElementKind.ENUMVALUE: {\n if (!(element).isImmutable && !this.options.hasFeature(Feature.MUTABLE_GLOBAL)) {\n this.error(\n DiagnosticCode.Cannot_export_a_mutable_global,\n (element).identifierNode.range\n );\n } else {\n this.module.addGlobalExport(element.internalName, prefix + name);\n }\n break;\n }\n case ElementKind.FUNCTION: {\n let instance = element;\n let signature = instance.signature;\n if (signature.requiredParameters < signature.parameterTypes.length) {\n // utilize trampoline to fill in omitted arguments\n instance = this.ensureTrampoline(instance);\n this.ensureArgcSet();\n }\n if (instance.is(CommonFlags.COMPILED)) this.module.addFunctionExport(instance.internalName, prefix + name);\n break;\n }\n case ElementKind.PROPERTY: {\n let getter = (element).getterInstance;\n if (getter) this.ensureModuleExport(GETTER_PREFIX + name, getter, prefix);\n let setter = (element).setterInstance;\n if (setter) this.ensureModuleExport(SETTER_PREFIX + name, setter, prefix);\n break;\n }\n case ElementKind.FIELD: {\n this.ensureModuleFieldGetter(prefix + GETTER_PREFIX + name, element);\n if (!element.is(CommonFlags.READONLY)) {\n this.ensureModuleFieldSetter(prefix + SETTER_PREFIX + name, element);\n }\n break;\n }\n case ElementKind.CLASS: {\n // make the class name itself represent its runtime id\n if (!(element).type.isUnmanaged) {\n let module = this.module;\n let internalName = (element).internalName;\n module.addGlobal(internalName, NativeType.I32, false, module.i32((element).id));\n module.addGlobalExport(internalName, prefix + name);\n }\n break;\n }\n\n // just traverse members below\n case ElementKind.ENUM:\n case ElementKind.NAMESPACE:\n case ElementKind.FILE:\n case ElementKind.TYPEDEFINITION: break;\n\n default: assert(false); // unexpected module export\n }\n\n // traverse members\n var members = element.members;\n if (members) {\n let subPrefix = prefix + name + (element.kind == ElementKind.CLASS\n ? INSTANCE_DELIMITER\n : STATIC_DELIMITER\n );\n if (\n element.kind == ElementKind.NAMESPACE ||\n element.kind == ElementKind.FILE\n ) {\n for (let member of members.values()) {\n if (!member.is(CommonFlags.EXPORT)) continue;\n this.ensureModuleExport(member.name, member, subPrefix);\n }\n } else {\n for (let member of members.values()) {\n if (member.is(CommonFlags.PRIVATE)) continue;\n this.ensureModuleExport(member.name, member, subPrefix);\n }\n }\n }\n }\n\n /** Makes a function to get the value of a field of an exported class. */\n private ensureModuleFieldGetter(name: string, field: Field): void {\n var module = this.module;\n var type = field.type;\n var usizeType = this.options.usizeType;\n var loadExpr = module.load(type.byteSize, type.is(TypeFlags.SIGNED),\n module.local_get(0, usizeType.toNativeType()),\n type.toNativeType(), field.memoryOffset\n );\n // a user-defined getter would return a retained value, so:\n if (type.isManaged) loadExpr = this.makeRetain(loadExpr);\n module.addFunction(\n name,\n this.ensureFunctionType(null, type, usizeType),\n null,\n loadExpr\n );\n module.addFunctionExport(name, name);\n }\n\n /** Makes a function to set the value of a field of an exported class. */\n private ensureModuleFieldSetter(name: string, field: Field): void {\n var module = this.module;\n var type = field.type;\n var nativeType = type.toNativeType();\n var usizeType = this.options.usizeType;\n var nativeSizeType = usizeType.toNativeType();\n var valueExpr = module.local_get(1, nativeType);\n if (type.isManaged) {\n valueExpr = this.makeRetainRelease(\n module.load(type.byteSize, false, // oldRef\n module.local_get(0, nativeSizeType),\n nativeType, field.memoryOffset\n ),\n valueExpr // newRef\n );\n }\n module.addFunction(\n name,\n this.ensureFunctionType([ type ], Type.void, usizeType),\n null,\n module.store(\n type.byteSize,\n module.local_get(0, nativeSizeType),\n valueExpr,\n nativeType,\n field.memoryOffset\n )\n );\n module.addFunctionExport(name, name);\n }\n\n // === Elements =================================================================================\n\n /** Compiles any element. */\n compileElement(element: Element, compileMembers: bool = true): void {\n switch (element.kind) {\n case ElementKind.GLOBAL: {\n this.compileGlobal(element);\n break;\n }\n case ElementKind.ENUM: {\n this.compileEnum(element);\n break;\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n if (!element.is(CommonFlags.GENERIC)) {\n this.compileFunctionUsingTypeArguments(element, []);\n }\n break;\n }\n case ElementKind.CLASS_PROTOTYPE: {\n if (!element.is(CommonFlags.GENERIC)) {\n this.compileClassUsingTypeArguments(element, []);\n }\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n let getterPrototype = (element).getterPrototype;\n if (getterPrototype) {\n this.compileFunctionUsingTypeArguments(getterPrototype, []);\n }\n let setterPrototype = (element).setterPrototype;\n if (setterPrototype) {\n this.compileFunctionUsingTypeArguments(setterPrototype, []);\n }\n break;\n }\n case ElementKind.NAMESPACE:\n case ElementKind.TYPEDEFINITION:\n case ElementKind.ENUMVALUE: break;\n default: assert(false, ElementKind[element.kind]);\n }\n if (compileMembers) this.compileMembers(element);\n }\n\n /** Compiles an element's members. */\n compileMembers(element: Element): void {\n var members = element.members;\n if (members) for (let element of members.values()) this.compileElement(element);\n }\n\n /** Compiles a file's exports. */\n compileExports(file: File): void {\n var exports = file.exports;\n if (exports) for (let element of exports.values()) this.compileElement(element);\n var exportsStar = file.exportsStar;\n if (exportsStar) {\n for (let exportStar of exportsStar) {\n this.compileFile(exportStar);\n this.compileExports(exportStar);\n }\n }\n }\n\n // files\n\n /** Compiles the file matching the specified path. */\n compileFileByPath(normalizedPathWithoutExtension: string, reportNode: Node): void {\n var file: File;\n var filesByName = this.program.filesByName;\n var pathWithIndex: string;\n if (filesByName.has(normalizedPathWithoutExtension)) {\n file = filesByName.get(normalizedPathWithoutExtension)!;\n } else if (filesByName.has(pathWithIndex = normalizedPathWithoutExtension + INDEX_SUFFIX)) {\n file = filesByName.get(pathWithIndex)!;\n } else {\n this.error(\n DiagnosticCode.File_0_not_found,\n reportNode.range, normalizedPathWithoutExtension\n );\n return;\n }\n this.compileFile(file);\n }\n\n /** Compiles the specified file. */\n compileFile(file: File): void {\n if (file.is(CommonFlags.COMPILED)) return;\n file.set(CommonFlags.COMPILED);\n\n // compile top-level statements within the file's start function\n var startFunction = file.startFunction;\n var previousBody = this.currentBody;\n var startFunctionBody = new Array();\n this.currentBody = startFunctionBody;\n\n // compile top-level statements\n var previousFlow = this.currentFlow;\n var flow = startFunction.flow;\n this.currentFlow = flow;\n for (let statements = file.source.statements, i = 0, k = statements.length; i < k; ++i) {\n this.compileTopLevelStatement(statements[i], startFunctionBody);\n }\n this.finishAutoreleases(flow, startFunctionBody);\n this.currentFlow = previousFlow;\n this.currentBody = previousBody;\n\n // if top-level statements are present, make the per-file start function and call it in start\n if (startFunctionBody.length) {\n let module = this.module;\n let locals = startFunction.localsByIndex;\n let numLocals = locals.length;\n let varTypes = new Array(numLocals);\n for (let i = 0; i < numLocals; ++i) varTypes[i] = locals[i].type.toNativeType();\n module.addFunction(\n startFunction.internalName,\n this.ensureFunctionType(startFunction.signature.parameterTypes, startFunction.signature.returnType),\n varTypes,\n startFunctionBody.length > 1\n ? module.block(null, startFunctionBody)\n : startFunctionBody[0]\n );\n previousBody.push(\n module.call(startFunction.internalName, null, NativeType.None)\n );\n }\n }\n\n // === Globals ==================================================================================\n\n compileGlobal(global: Global): bool {\n if (global.is(CommonFlags.COMPILED)) return true;\n global.set(CommonFlags.COMPILED);\n\n var module = this.module;\n var initExpr: ExpressionRef = 0;\n var initAutoreleaseSkipped: bool = false;\n var typeNode = global.typeNode;\n var initializerNode = global.initializerNode;\n\n if (!global.is(CommonFlags.RESOLVED)) {\n\n // Resolve type if annotated\n if (typeNode) {\n let resolvedType = this.resolver.resolveType(typeNode, global.parent); // reports\n if (!resolvedType) return false;\n if (resolvedType == Type.void) {\n this.error(\n DiagnosticCode.Type_expected,\n typeNode.range\n );\n return false;\n }\n global.setType(resolvedType);\n\n // Otherwise infer type from initializer\n } else if (initializerNode) {\n let previousFlow = this.currentFlow;\n if (global.hasDecorator(DecoratorFlags.LAZY)) {\n this.currentFlow = global.file.startFunction.flow;\n }\n initExpr = this.compileExpression(initializerNode, Type.auto, // reports\n Constraints.MUST_WRAP | Constraints.WILL_RETAIN\n );\n if (this.skippedAutoreleases.has(initExpr)) initAutoreleaseSkipped = true;\n this.currentFlow = previousFlow;\n if (this.currentType == Type.void) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n initializerNode.range, this.currentType.toString(), \"\"\n );\n return false;\n }\n global.setType(this.currentType);\n\n // Error if there's neither a type nor an initializer\n } else {\n this.error(\n DiagnosticCode.Type_expected,\n global.identifierNode.range.atEnd\n );\n return false;\n }\n }\n\n // Handle ambient builtins like '__heap_base' that need to be resolved but are added explicitly\n if (global.is(CommonFlags.AMBIENT) && global.hasDecorator(DecoratorFlags.BUILTIN)) {\n if (global.internalName == BuiltinSymbols.heap_base) this.runtimeFeatures |= RuntimeFeatures.HEAP;\n else if (global.internalName == BuiltinSymbols.rtti_base) this.runtimeFeatures |= RuntimeFeatures.RTTI;\n return true;\n }\n\n var type = global.type;\n var nativeType = type.toNativeType();\n var isDeclaredConstant = global.is(CommonFlags.CONST) || global.is(CommonFlags.STATIC | CommonFlags.READONLY);\n var isDeclaredInline = global.hasDecorator(DecoratorFlags.INLINE);\n\n // Handle imports\n if (global.is(CommonFlags.AMBIENT)) {\n\n // Constant global or mutable globals enabled\n if (isDeclaredConstant || this.options.hasFeature(Feature.MUTABLE_GLOBAL)) {\n global.set(CommonFlags.MODULE_IMPORT);\n mangleImportName(global, global.declaration);\n module.addGlobalImport(\n global.internalName,\n mangleImportName_moduleName,\n mangleImportName_elementName,\n nativeType\n );\n global.set(CommonFlags.COMPILED);\n return true;\n\n // Importing mutable globals is not supported in the MVP\n } else {\n this.error(\n DiagnosticCode.Operation_not_supported,\n global.declaration.range\n );\n }\n return false;\n }\n\n // The MVP does not yet support initializer expressions other than constant values (and constant\n // get_globals), hence such initializations must be performed in the start function for now.\n var initializeInStart = false;\n\n // Evaluate initializer if present\n if (initializerNode) {\n if (!initExpr) {\n let previousFlow = this.currentFlow;\n if (global.hasDecorator(DecoratorFlags.LAZY)) {\n this.currentFlow = global.file.startFunction.flow;\n }\n initExpr = this.compileExpression(initializerNode, type,\n Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP | Constraints.WILL_RETAIN | Constraints.PREFER_STATIC\n );\n if (this.skippedAutoreleases.has(initExpr)) initAutoreleaseSkipped = true;\n this.currentFlow = previousFlow;\n }\n\n if (getExpressionId(initExpr) != ExpressionId.Const) {\n if (isDeclaredConstant) {\n initExpr = module.precomputeExpression(initExpr);\n if (getExpressionId(initExpr) != ExpressionId.Const) initializeInStart = true;\n } else {\n initializeInStart = true;\n }\n }\n\n // Explicitly inline if annotated\n if (isDeclaredInline) {\n if (initializeInStart) {\n this.warning(\n DiagnosticCode.Mutable_value_cannot_be_inlined,\n initializerNode.range\n );\n } else {\n assert(getExpressionId(initExpr) == ExpressionId.Const);\n let exprType = getExpressionType(initExpr);\n switch (exprType) {\n case NativeType.I32: {\n global.constantValueKind = ConstantValueKind.INTEGER;\n global.constantIntegerValue = i64_new(getConstValueI32(initExpr), 0);\n break;\n }\n case NativeType.I64: {\n global.constantValueKind = ConstantValueKind.INTEGER;\n global.constantIntegerValue = i64_new(\n getConstValueI64Low(initExpr),\n getConstValueI64High(initExpr)\n );\n break;\n }\n case NativeType.F32: {\n global.constantValueKind = ConstantValueKind.FLOAT;\n global.constantFloatValue = getConstValueF32(initExpr);\n break;\n }\n case NativeType.F64: {\n global.constantValueKind = ConstantValueKind.FLOAT;\n global.constantFloatValue = getConstValueF64(initExpr);\n break;\n }\n default: {\n assert(false);\n return false;\n }\n }\n global.set(CommonFlags.INLINED); // inline the value from now on\n }\n }\n\n // Initialize to zero if there's no initializer\n } else {\n initExpr = type.toNativeZero(module);\n }\n\n var internalName = global.internalName;\n\n if (initializeInStart) { // initialize to mutable zero and set the actual value in start\n if (isDeclaredInline) {\n this.error(\n DiagnosticCode.Decorator_0_is_not_valid_here,\n assert(findDecorator(DecoratorKind.INLINE, global.decoratorNodes)).range, \"inline\"\n );\n }\n module.addGlobal(internalName, nativeType, true, type.toNativeZero(module));\n if (type.isManaged && !initAutoreleaseSkipped) initExpr = this.makeRetain(initExpr);\n this.currentBody.push(\n module.global_set(internalName, initExpr)\n );\n } else if (!isDeclaredInline) { // compile normally\n module.addGlobal(internalName, nativeType, !isDeclaredConstant, initExpr);\n }\n return true;\n }\n\n // === Enums ====================================================================================\n\n compileEnum(element: Enum): bool {\n if (element.is(CommonFlags.COMPILED)) return true;\n element.set(CommonFlags.COMPILED);\n\n var module = this.module;\n this.currentEnum = element;\n var previousValue: EnumValue | null = null;\n var previousValueIsMut = false;\n var isInline = element.is(CommonFlags.CONST) || element.hasDecorator(DecoratorFlags.INLINE);\n\n if (element.members) {\n for (let member of element.members.values()) {\n if (member.kind != ElementKind.ENUMVALUE) continue; // happens if an enum is also a namespace\n let initInStart = false;\n let val = member;\n let valueNode = val.valueNode;\n val.set(CommonFlags.COMPILED);\n let previousFlow = this.currentFlow;\n if (element.hasDecorator(DecoratorFlags.LAZY)) {\n this.currentFlow = element.file.startFunction.flow;\n }\n let initExpr: ExpressionRef;\n if (valueNode) {\n initExpr = this.compileExpression(valueNode, Type.i32,\n Constraints.CONV_IMPLICIT // autorelease is not applicable in i32 context\n );\n if (getExpressionId(initExpr) != ExpressionId.Const) {\n initExpr = module.precomputeExpression(initExpr);\n if (getExpressionId(initExpr) != ExpressionId.Const) {\n if (element.is(CommonFlags.CONST)) {\n this.error(\n DiagnosticCode.In_const_enum_declarations_member_initializer_must_be_constant_expression,\n valueNode.range\n );\n }\n initInStart = true;\n }\n }\n } else if (previousValue == null) {\n initExpr = module.i32(0);\n } else {\n if (previousValueIsMut) {\n this.error(\n DiagnosticCode.Enum_member_must_have_initializer,\n (member).identifierNode.range.atEnd\n );\n }\n initExpr = module.binary(BinaryOp.AddI32,\n module.global_get(previousValue.internalName, NativeType.I32),\n module.i32(1)\n );\n initExpr = module.precomputeExpression(initExpr);\n if (getExpressionId(initExpr) != ExpressionId.Const) {\n if (element.is(CommonFlags.CONST)) {\n this.error(\n DiagnosticCode.In_const_enum_declarations_member_initializer_must_be_constant_expression,\n member.declaration.range\n );\n }\n initInStart = true;\n }\n }\n this.currentFlow = previousFlow;\n if (initInStart) {\n module.addGlobal(val.internalName, NativeType.I32, true, module.i32(0));\n this.currentBody.push(\n this.makeGlobalAssignment(val, initExpr, false)\n );\n previousValueIsMut = true;\n } else {\n if (isInline) {\n val.setConstantIntegerValue(i64_new(getConstValueI32(initExpr)), Type.i32);\n if (val.is(CommonFlags.MODULE_EXPORT)) {\n module.addGlobal(val.internalName, NativeType.I32, false, initExpr);\n }\n } else {\n module.addGlobal(val.internalName, NativeType.I32, false, initExpr);\n }\n val.isImmutable = true;\n previousValueIsMut = false;\n }\n previousValue = val;\n }\n }\n this.currentEnum = null;\n return true;\n }\n\n // === Functions ================================================================================\n\n /** Resolves the specified type arguments prior to compiling the resulting function instance. */\n compileFunctionUsingTypeArguments(\n prototype: FunctionPrototype,\n typeArguments: NamedTypeNode[],\n contextualTypeArguments: Map = makeMap(),\n alternativeReportNode: Node | null = null\n ): Function | null {\n if (prototype.hasDecorator(DecoratorFlags.BUILTIN)) return null;\n var instance = this.resolver.resolveFunctionInclTypeArguments(\n prototype,\n typeArguments,\n prototype.parent, // relative to itself\n contextualTypeArguments,\n alternativeReportNode || prototype.declaration\n );\n if (!instance) return null;\n if (!this.compileFunction(instance)) return null; // reports\n return instance;\n }\n\n /** Either reuses or creates the function type matching the specified signature. */\n ensureFunctionType(\n parameterTypes: Type[] | null,\n returnType: Type,\n thisType: Type | null = null\n ): FunctionTypeRef {\n var numParameters = parameterTypes ? parameterTypes.length : 0;\n var paramTypes: NativeType[];\n var index = 0;\n if (thisType) {\n paramTypes = new Array(1 + numParameters);\n paramTypes[0] = thisType.toNativeType();\n index = 1;\n } else {\n paramTypes = new Array(numParameters);\n }\n if (parameterTypes) {\n for (let i = 0; i < numParameters; ++i, ++index) {\n paramTypes[index] = parameterTypes[i].toNativeType();\n }\n }\n var resultType = returnType.toNativeType();\n var module = this.module;\n var typeRef = module.getFunctionTypeBySignature(resultType, paramTypes);\n if (!typeRef) {\n let name = Signature.makeSignatureString(parameterTypes, returnType, thisType);\n typeRef = module.addFunctionType(name, resultType, paramTypes);\n }\n return typeRef;\n }\n\n /** Compiles the body of a function within the specified flow. */\n compileFunctionBody(\n /** Function to compile. */\n instance: Function,\n /** Target array of statements. */\n stmts: ExpressionRef[] | null = null\n ): ExpressionRef[] {\n var module = this.module;\n var bodyNode = assert(instance.prototype.bodyNode);\n var returnType = instance.signature.returnType;\n var flow = this.currentFlow;\n\n // compile statements\n if (bodyNode.kind == NodeKind.BLOCK) {\n stmts = this.compileStatements((bodyNode).statements, true, stmts);\n } else {\n // must be an expression statement if not a block\n assert(bodyNode.kind == NodeKind.EXPRESSION);\n\n // must be an arrow function\n assert(instance.prototype.arrowKind);\n\n // none of the following can be an arrow function\n assert(!instance.isAny(CommonFlags.CONSTRUCTOR | CommonFlags.GET | CommonFlags.SET | CommonFlags.MAIN));\n\n let expr = this.compileExpression((bodyNode).expression, returnType,\n Constraints.CONV_IMPLICIT\n );\n if (!stmts) stmts = [ expr ];\n else stmts.push(expr);\n if (!flow.is(FlowFlags.TERMINATES)) { // TODO: detect if returning an autorelease local?\n let indexBefore = stmts.length;\n this.performAutoreleases(flow, stmts);\n this.finishAutoreleases(flow, stmts);\n let canOverflow = flow.canOverflow(expr, returnType);\n let nonNull = flow.isNonnull(expr, returnType);\n if (stmts.length > indexBefore) {\n let temp = flow.getAndFreeTempLocal(returnType);\n if (!canOverflow) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED);\n if (nonNull) flow.setLocalFlag(temp.index, LocalFlags.NONNULL);\n stmts[indexBefore - 1] = module.local_set(temp.index, expr);\n stmts.push(module.local_get(temp.index, returnType.toNativeType()));\n }\n if (!canOverflow) flow.set(FlowFlags.RETURNS_WRAPPED);\n if (nonNull) flow.set(FlowFlags.RETURNS_NONNULL);\n flow.set(FlowFlags.RETURNS | FlowFlags.TERMINATES);\n }\n }\n\n // make constructors return their instance pointer\n if (instance.is(CommonFlags.CONSTRUCTOR)) {\n let nativeSizeType = this.options.nativeSizeType;\n assert(instance.is(CommonFlags.INSTANCE));\n let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS);\n\n if (!flow.is(FlowFlags.TERMINATES)) {\n let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_));\n\n // if `this` wasn't accessed before, allocate if necessary and initialize `this`\n if (!flow.is(FlowFlags.ALLOCATES)) {\n // {\n // if (!this) this = \n // this.a = X\n // this.b = Y\n // }\n stmts.push(\n module.if(\n module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32,\n module.local_get(thisLocal.index, nativeSizeType)\n ),\n module.local_set(thisLocal.index,\n this.makeRetain(\n this.makeAllocation(classInstance)\n ),\n )\n )\n );\n this.makeFieldInitialization(classInstance, stmts);\n }\n this.performAutoreleases(flow, stmts); // `this` is excluded anyway\n this.finishAutoreleases(flow, stmts);\n stmts.push(module.local_get(thisLocal.index, this.options.nativeSizeType));\n flow.set(FlowFlags.RETURNS | FlowFlags.RETURNS_NONNULL | FlowFlags.TERMINATES);\n }\n\n // check that super has been called if this is a derived class\n if ((classInstance).base && !flow.is(FlowFlags.CALLS_SUPER)) {\n this.error(\n DiagnosticCode.Constructors_for_derived_classes_must_contain_a_super_call,\n instance.prototype.declaration.range\n );\n }\n\n // if this is a normal function, make sure that all branches terminate\n } else if (returnType != Type.void && !flow.is(FlowFlags.TERMINATES)) {\n this.error(\n DiagnosticCode.A_function_whose_declared_type_is_not_void_must_return_a_value,\n instance.prototype.functionTypeNode.returnType.range\n );\n }\n\n return stmts;\n }\n\n /** Compiles a readily resolved function instance. */\n compileFunction(instance: Function): bool {\n if (instance.is(CommonFlags.COMPILED)) return true;\n assert(!(instance.is(CommonFlags.AMBIENT) && instance.hasDecorator(DecoratorFlags.BUILTIN)));\n\n var previousType = this.currentType; // remember to retain it if compiling a function lazily\n instance.set(CommonFlags.COMPILED);\n\n var module = this.module;\n var signature = instance.signature;\n var bodyNode = instance.prototype.bodyNode;\n\n var typeRef = this.ensureFunctionType(signature.parameterTypes, signature.returnType, signature.thisType);\n var funcRef: FunctionRef;\n\n // concrete function\n if (bodyNode) {\n\n // must not be ambient\n if (instance.is(CommonFlags.AMBIENT)) {\n this.error(\n DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,\n instance.identifierNode.range\n );\n }\n\n // cannot have an annotated external name\n if (instance.hasDecorator(DecoratorFlags.EXTERNAL)) {\n let decoratorNodes = instance.decoratorNodes;\n let decorator = assert(findDecorator(DecoratorKind.EXTERNAL, decoratorNodes));\n this.error(\n DiagnosticCode.Operation_not_supported,\n decorator.range\n );\n }\n\n // compile body in this function's context\n let previousFlow = this.currentFlow;\n let flow = instance.flow;\n this.currentFlow = flow;\n let stmts = new Array();\n\n // retain each argument for as long as the function lives\n let index = 0;\n let thisType = signature.thisType;\n if (thisType) {\n // No need to retain `this` as it can't be reassigned and thus can't become prematurely released\n ++index;\n }\n let parameterTypes = signature.parameterTypes;\n for (let i = 0, k = parameterTypes.length; i < k; ++i, ++index) {\n let type = parameterTypes[i];\n if (type.isManaged) {\n stmts.push(\n module.drop(\n this.makeRetain(\n module.local_get(index, type.toNativeType())\n )\n )\n );\n flow.setLocalFlag(index, LocalFlags.RETAINED);\n }\n }\n\n this.compileFunctionBody(instance, stmts);\n if (!flow.is(FlowFlags.TERMINATES)) {\n this.performAutoreleases(flow, stmts);\n this.finishAutoreleases(flow, stmts);\n }\n this.currentFlow = previousFlow;\n\n // create the function\n funcRef = module.addFunction(\n instance.internalName,\n typeRef,\n typesToNativeTypes(instance.additionalLocals),\n flatten(module, stmts, instance.signature.returnType.toNativeType())\n );\n\n // imported function\n } else {\n if (!instance.is(CommonFlags.AMBIENT)) {\n this.error(\n DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,\n instance.identifierNode.range\n );\n }\n\n instance.set(CommonFlags.MODULE_IMPORT);\n mangleImportName(instance, instance.declaration); // TODO: check for duplicates\n\n // create the import\n funcRef = module.addFunctionImport(\n instance.internalName,\n mangleImportName_moduleName,\n mangleImportName_elementName,\n typeRef\n );\n }\n\n instance.finalize(module, funcRef);\n this.currentType = previousType;\n return true;\n }\n\n // === Classes ==================================================================================\n\n compileClassUsingTypeArguments(\n prototype: ClassPrototype,\n typeArguments: NamedTypeNode[],\n contextualTypeArguments: Map = makeMap(),\n alternativeReportNode: Node | null = null\n ): void {\n var instance = this.resolver.resolveClassInclTypeArguments(\n prototype,\n typeArguments,\n prototype.parent, // relative to itself\n contextualTypeArguments,\n alternativeReportNode || prototype.declaration\n );\n if (!instance) return;\n this.compileClass(instance);\n }\n\n compileClass(instance: Class): bool {\n if (instance.is(CommonFlags.COMPILED)) return true;\n instance.set(CommonFlags.COMPILED);\n var prototype = instance.prototype;\n var staticMembers = (prototype).members;\n if (staticMembers) {\n for (let element of staticMembers.values()) {\n switch (element.kind) {\n case ElementKind.GLOBAL: {\n this.compileGlobal(element);\n break;\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n if (\n !(element).is(CommonFlags.GENERIC)\n ) {\n this.compileFunctionUsingTypeArguments(\n element,\n [],\n makeMap(),\n (element).identifierNode\n );\n }\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n let getter = (element).getterPrototype;\n if (getter) {\n this.compileFunctionUsingTypeArguments(\n getter,\n [],\n makeMap(),\n getter.identifierNode\n );\n }\n let setter = (element).setterPrototype;\n if (setter) {\n this.compileFunctionUsingTypeArguments(\n setter,\n [],\n makeMap(),\n setter.identifierNode\n );\n }\n break;\n }\n case ElementKind.PROPERTY: {\n }\n }\n }\n }\n var ctorInstance = instance.constructorInstance;\n if (ctorInstance) this.compileFunction(ctorInstance);\n var instanceMembers = instance.members;\n if (instanceMembers) {\n for (let element of instanceMembers.values()) {\n switch (element.kind) {\n case ElementKind.FUNCTION_PROTOTYPE: {\n if (\n !(element).is(CommonFlags.GENERIC)\n ) {\n this.compileFunctionUsingTypeArguments(\n element,\n [],\n makeMap(instance.contextualTypeArguments),\n (element).declaration.name\n );\n }\n break;\n }\n case ElementKind.FIELD_PROTOTYPE: {\n element.set(CommonFlags.COMPILED);\n break;\n }\n case ElementKind.PROPERTY: {\n let getter = (element).getterInstance;\n if (getter) this.compileFunction(getter);\n let setter = (element).setterInstance;\n if (setter) this.compileFunction(setter);\n break;\n }\n }\n }\n }\n return true;\n }\n\n compileInterfaceDeclaration(\n declaration: InterfaceDeclaration,\n typeArguments: NamedTypeNode[],\n contextualTypeArguments: Map | null = null,\n alternativeReportNode: Node | null = null\n ): void {\n // TODO\n this.error(\n DiagnosticCode.Operation_not_supported,\n declaration.range\n );\n }\n\n // === Memory ===================================================================================\n\n /** Adds a static memory segment with the specified data. */\n addMemorySegment(buffer: Uint8Array, alignment: i32 = 8): MemorySegment {\n var memoryOffset = i64_align(this.memoryOffset, alignment);\n var segment = MemorySegment.create(buffer, memoryOffset);\n this.memorySegments.push(segment);\n this.memoryOffset = i64_add(memoryOffset, i64_new(buffer.length, 0));\n return segment;\n }\n\n /** Ensures that the specified string exists in static memory and returns a pointer to it. */\n ensureStaticString(stringValue: string): ExpressionRef {\n var program = this.program;\n var rtHeaderSize = program.runtimeHeaderSize;\n var stringInstance = assert(program.stringInstance);\n var stringSegment: MemorySegment;\n var segments = this.stringSegments;\n if (segments.has(stringValue)) {\n stringSegment = segments.get(stringValue)!; // reuse\n } else {\n let length = stringValue.length;\n let buffer = new Uint8Array(rtHeaderSize + (length << 1));\n program.writeRuntimeHeader(buffer, 0, stringInstance, length << 1);\n for (let i = 0; i < length; ++i) {\n writeI16(stringValue.charCodeAt(i), buffer, rtHeaderSize + (i << 1));\n }\n stringSegment = this.addMemorySegment(buffer);\n segments.set(stringValue, stringSegment);\n }\n var ref = i64_add(stringSegment.offset, i64_new(rtHeaderSize));\n this.currentType = stringInstance.type;\n if (this.options.isWasm64) {\n return this.module.i64(i64_low(ref), i64_high(ref));\n } else {\n assert(i64_is_u32(ref));\n return this.module.i32(i64_low(ref));\n }\n }\n\n ensureStaticArrayBuffer(elementType: Type, values: ExpressionRef[]): MemorySegment {\n var program = this.program;\n var length = values.length;\n var byteSize = elementType.byteSize;\n var byteLength = length * byteSize;\n var bufferInstance = assert(program.arrayBufferInstance);\n var runtimeHeaderSize = program.runtimeHeaderSize;\n\n var buf = new Uint8Array(runtimeHeaderSize + byteLength);\n program.writeRuntimeHeader(buf, 0, bufferInstance, byteLength);\n var pos = runtimeHeaderSize;\n var nativeType = elementType.toNativeType();\n switch (nativeType) {\n case NativeType.I32: {\n switch (byteSize) {\n case 1: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeI8(getConstValueI32(value), buf, pos);\n pos += 1;\n }\n break;\n }\n case 2: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeI16(getConstValueI32(value), buf, pos);\n pos += 2;\n }\n break;\n }\n case 4: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeI32(getConstValueI32(value), buf, pos);\n pos += 4;\n }\n break;\n }\n default: assert(false);\n }\n break;\n }\n case NativeType.I64: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeI64(i64_new(getConstValueI64Low(value), getConstValueI64High(value)), buf, pos);\n pos += 8;\n }\n break;\n }\n case NativeType.F32: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeF32(getConstValueF32(value), buf, pos);\n pos += 4;\n }\n break;\n }\n case NativeType.F64: {\n for (let i = 0; i < length; ++i) {\n let value = values[i];\n assert(getExpressionType(value) == nativeType);\n assert(getExpressionId(value) == ExpressionId.Const);\n writeF64(getConstValueF64(value), buf, pos);\n pos += 8;\n }\n break;\n }\n default: assert(false);\n }\n assert(pos == buf.length);\n\n return this.addMemorySegment(buf);\n }\n\n ensureStaticArrayHeader(elementType: Type, bufferSegment: MemorySegment): MemorySegment {\n var program = this.program;\n var runtimeHeaderSize = program.runtimeHeaderSize;\n var arrayPrototype = assert(program.arrayPrototype);\n var arrayInstance = assert(this.resolver.resolveClass(arrayPrototype, [ elementType ]));\n var arrayInstanceSize = arrayInstance.currentMemoryOffset;\n var bufferLength = bufferSegment.buffer.length - runtimeHeaderSize;\n var arrayLength = i32(bufferLength / elementType.byteSize);\n\n var buf = new Uint8Array(runtimeHeaderSize + arrayInstanceSize);\n program.writeRuntimeHeader(buf, 0, arrayInstance, arrayInstanceSize);\n\n var bufferAddress32 = i64_low(bufferSegment.offset) + runtimeHeaderSize;\n assert(!program.options.isWasm64); // TODO\n assert(arrayInstance.writeField(\"data\", bufferAddress32, buf, runtimeHeaderSize));\n assert(arrayInstance.writeField(\"dataStart\", bufferAddress32, buf, runtimeHeaderSize));\n assert(arrayInstance.writeField(\"dataLength\", bufferLength, buf, runtimeHeaderSize));\n assert(arrayInstance.writeField(\"length_\", arrayLength, buf, runtimeHeaderSize));\n\n return this.addMemorySegment(buf);\n }\n\n // === Table ====================================================================================\n\n /** Ensures that a table entry exists for the specified function and returns its index. */\n ensureFunctionTableEntry(func: Function): i32 {\n assert(func.is(CommonFlags.COMPILED));\n if (func.functionTableIndex >= 0) {\n return func.functionTableIndex;\n }\n var functionTable = this.functionTable;\n var index = functionTable.length;\n if (!func.is(CommonFlags.TRAMPOLINE) && func.signature.requiredParameters < func.signature.parameterTypes.length) {\n // insert the trampoline if the function has optional parameters\n func = this.ensureTrampoline(func);\n }\n functionTable.push(func.internalName);\n func.functionTableIndex = index;\n return index;\n }\n\n // === Statements ===============================================================================\n\n compileTopLevelStatement(statement: Statement, body: ExpressionRef[]): void {\n if (statement.kind == NodeKind.EXPORTDEFAULT) {\n statement = (statement).declaration;\n }\n switch (statement.kind) {\n case NodeKind.CLASSDECLARATION: {\n let memberStatements = (statement).members;\n for (let i = 0, k = memberStatements.length; i < k; ++i) {\n this.compileTopLevelStatement(memberStatements[i], body);\n }\n break;\n }\n case NodeKind.ENUMDECLARATION: {\n let element = this.program.getElementByDeclaration(statement);\n assert(element.kind == ElementKind.ENUM);\n if (!element.hasDecorator(DecoratorFlags.LAZY)) this.compileEnum(element);\n break;\n }\n case NodeKind.NAMESPACEDECLARATION: {\n let memberStatements = (statement).members;\n for (let i = 0, k = memberStatements.length; i < k; ++i) {\n this.compileTopLevelStatement(memberStatements[i], body);\n }\n break;\n }\n case NodeKind.VARIABLE: {\n let declarations = (statement).declarations;\n for (let i = 0, k = declarations.length; i < k; ++i) {\n let element = this.program.getElementByDeclaration(declarations[i]);\n assert(element.kind == ElementKind.GLOBAL);\n if (\n !element.is(CommonFlags.AMBIENT) && // delay imports\n !element.hasDecorator(DecoratorFlags.LAZY)\n ) this.compileGlobal(element);\n }\n break;\n }\n case NodeKind.FIELDDECLARATION: {\n let element = this.program.getElementByDeclaration(statement);\n if (element.kind == ElementKind.GLOBAL) { // static\n if (!element.hasDecorator(DecoratorFlags.LAZY)) this.compileGlobal(element);\n }\n break;\n }\n case NodeKind.EXPORT: {\n if ((statement).normalizedPath != null) {\n this.compileFileByPath(\n (statement).normalizedPath,\n (statement).path\n );\n }\n break;\n }\n case NodeKind.IMPORT: {\n this.compileFileByPath(\n (statement).normalizedPath,\n (statement).path\n );\n break;\n }\n case NodeKind.FUNCTIONDECLARATION:\n case NodeKind.METHODDECLARATION:\n case NodeKind.INTERFACEDECLARATION:\n case NodeKind.INDEXSIGNATUREDECLARATION:\n case NodeKind.TYPEDECLARATION: break;\n default: { // otherwise a top-level statement that is part of the start function's body\n let stmt = this.compileStatement(statement);\n if (getExpressionId(stmt) != ExpressionId.Nop) body.push(stmt);\n break;\n }\n }\n }\n\n compileStatement(\n statement: Statement,\n isLastInBody: bool = false\n ): ExpressionRef {\n var module = this.module;\n var stmt: ExpressionRef;\n switch (statement.kind) {\n case NodeKind.BLOCK: {\n stmt = this.compileBlockStatement(statement);\n break;\n }\n case NodeKind.BREAK: {\n stmt = this.compileBreakStatement(statement);\n break;\n }\n case NodeKind.CONTINUE: {\n stmt = this.compileContinueStatement(statement);\n break;\n }\n case NodeKind.DO: {\n stmt = this.compileDoStatement(statement);\n break;\n }\n case NodeKind.EMPTY: {\n stmt = this.compileEmptyStatement(statement);\n break;\n }\n case NodeKind.EXPRESSION: {\n stmt = this.compileExpressionStatement(statement);\n break;\n }\n case NodeKind.FOR: {\n stmt = this.compileForStatement(statement);\n break;\n }\n case NodeKind.IF: {\n stmt = this.compileIfStatement(statement);\n break;\n }\n case NodeKind.RETURN: {\n stmt = this.compileReturnStatement(statement, isLastInBody);\n break;\n }\n case NodeKind.SWITCH: {\n stmt = this.compileSwitchStatement(statement);\n break;\n }\n case NodeKind.THROW: {\n stmt = this.compileThrowStatement(statement);\n break;\n }\n case NodeKind.TRY: {\n stmt = this.compileTryStatement(statement);\n break;\n }\n case NodeKind.VARIABLE: {\n stmt = this.compileVariableStatement(statement);\n if (!stmt) stmt = module.nop();\n break;\n }\n case NodeKind.VOID: {\n stmt = this.compileVoidStatement(statement);\n break;\n }\n case NodeKind.WHILE: {\n stmt = this.compileWhileStatement(statement);\n break;\n }\n case NodeKind.TYPEDECLARATION: {\n // TODO: integrate inner type declaration into flow\n this.error(\n DiagnosticCode.Operation_not_supported,\n statement.range\n );\n stmt = module.unreachable();\n break;\n }\n default: {\n assert(false);\n stmt = module.unreachable();\n }\n }\n if (this.options.sourceMap) this.addDebugLocation(stmt, statement.range);\n return stmt;\n }\n\n compileStatements(\n statements: Statement[],\n isBody: bool = false,\n stmts: ExpressionRef[] | null = null\n ): ExpressionRef[] {\n var numStatements = statements.length;\n if (!stmts) {\n stmts = new Array(numStatements);\n stmts.length = 0;\n }\n var module = this.module;\n var flow = this.currentFlow;\n for (let i = 0; i < numStatements; ++i) {\n let stmt = this.compileStatement(statements[i], isBody && i == numStatements - 1);\n switch (getExpressionId(stmt)) {\n case ExpressionId.Block: {\n if (!getBlockName(stmt)) {\n for (let j = 0, k = getBlockChildCount(stmt); j < k; ++j) stmts.push(getBlockChild(stmt, j));\n break;\n }\n // fall-through\n }\n default: stmts.push(stmt);\n case ExpressionId.Nop:\n }\n if (flow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) {\n if (needsExplicitUnreachable(stmt)) stmts.push(module.unreachable());\n break;\n }\n }\n return stmts;\n }\n\n compileBlockStatement(\n statement: BlockStatement\n ): ExpressionRef {\n var statements = statement.statements;\n var outerFlow = this.currentFlow;\n var innerFlow = outerFlow.fork();\n this.currentFlow = innerFlow;\n\n var stmts = this.compileStatements(statements);\n if (!innerFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(innerFlow, stmts);\n innerFlow.freeScopedLocals();\n outerFlow.inherit(innerFlow); // TODO: only if not terminated?\n this.currentFlow = outerFlow;\n return flatten(this.module, stmts, NativeType.None);\n }\n\n compileBreakStatement(\n statement: BreakStatement\n ): ExpressionRef {\n var module = this.module;\n if (statement.label) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n statement.label.range\n );\n return module.unreachable();\n }\n var flow = this.currentFlow;\n var breakLabel = flow.breakLabel;\n if (breakLabel == null) {\n this.error(\n DiagnosticCode.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement,\n statement.range\n );\n return module.unreachable();\n }\n var stmts = new Array();\n this.performAutoreleases(flow, stmts);\n var parent = flow.parent;\n while (parent !== null && parent.breakLabel == breakLabel) {\n this.performAutoreleases(parent, stmts, /* clearFlags */ false);\n parent = parent.parent;\n }\n flow.freeScopedLocals();\n stmts.push(module.br(breakLabel));\n flow.set(FlowFlags.BREAKS);\n return flatten(module, stmts, NativeType.None);\n }\n\n compileContinueStatement(\n statement: ContinueStatement\n ): ExpressionRef {\n var module = this.module;\n var label = statement.label;\n if (label) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n label.range\n );\n return module.unreachable();\n }\n // Check if 'continue' is allowed here\n var flow = this.currentFlow;\n var continueLabel = flow.continueLabel;\n if (continueLabel == null) {\n this.error(\n DiagnosticCode.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement,\n statement.range\n );\n return module.unreachable();\n }\n flow.set(FlowFlags.CONTINUES | FlowFlags.TERMINATES);\n var stmts = new Array();\n this.performAutoreleases(flow, stmts);\n var current: Flow | null = flow.parent;\n while (current && current.continueLabel === continueLabel) {\n this.performAutoreleases(current, stmts, /* clearFlags */ false);\n current = current.parent;\n }\n flow.freeScopedLocals();\n stmts.push(module.br(continueLabel));\n return flatten(module, stmts, NativeType.None);\n }\n\n compileDoStatement(\n statement: DoStatement\n ): ExpressionRef {\n var module = this.module;\n\n var outerFlow = this.currentFlow;\n var label = outerFlow.pushBreakLabel();\n var innerFlow = outerFlow.fork();\n this.currentFlow = innerFlow;\n var breakLabel = \"break|\" + label;\n innerFlow.breakLabel = breakLabel;\n var continueLabel = \"continue|\" + label;\n innerFlow.continueLabel = continueLabel;\n\n var stmts = new Array();\n if (statement.statement.kind == NodeKind.BLOCK) {\n this.compileStatements((statement.statement).statements, false, stmts);\n } else {\n stmts.push(\n this.compileStatement(statement.statement)\n );\n }\n var condExpr = module.precomputeExpression(\n this.makeIsTrueish(\n this.compileExpression(statement.condition, Type.i32),\n this.currentType\n )\n );\n var alwaysFalse = false;\n if (getExpressionId(condExpr) == ExpressionId.Const) {\n assert(getExpressionType(condExpr) == NativeType.I32);\n if (!getConstValueI32(condExpr)) alwaysFalse = true;\n }\n var terminates = innerFlow.is(FlowFlags.TERMINATES);\n var continues = innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES);\n var breaks = innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS);\n\n // (block $break ;; (1) skip if no breaks\n // (loop $continue ;; (2) skip if skipping (4) + no continues\n // (...) ;; (3)\n // (br_if cond $continue) ;; (4) skip if (3) does not fall through or always false\n // )\n // )\n var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS);\n\n if (fallsThrough && !alwaysFalse) { // (4)\n stmts.push(module.br(continueLabel, condExpr));\n }\n var expr = flatten(module, stmts, NativeType.None);\n if (fallsThrough && !alwaysFalse || continues) { // (2)\n expr = module.loop(continueLabel, expr);\n }\n if (breaks) { // (1)\n expr = module.block(breakLabel, [ expr ]);\n }\n\n // Switch back to the parent flow\n if (!terminates) this.performAutoreleases(innerFlow, stmts);\n innerFlow.freeScopedLocals();\n outerFlow.popBreakLabel();\n innerFlow.unset(\n FlowFlags.BREAKS |\n FlowFlags.CONDITIONALLY_BREAKS |\n FlowFlags.CONTINUES |\n FlowFlags.CONDITIONALLY_CONTINUES\n );\n outerFlow.inherit(innerFlow);\n this.currentFlow = outerFlow;\n return expr;\n }\n\n compileEmptyStatement(\n statement: EmptyStatement\n ): ExpressionRef {\n return this.module.nop();\n }\n\n compileExpressionStatement(\n statement: ExpressionStatement\n ): ExpressionRef {\n return this.compileExpression(statement.expression, Type.void, Constraints.CONV_IMPLICIT);\n }\n\n compileForStatement(\n statement: ForStatement\n ): ExpressionRef {\n var module = this.module;\n\n // Set up and use the inner flow\n var outerFlow = this.currentFlow;\n var label = outerFlow.pushBreakLabel();\n var innerFlow = outerFlow.fork();\n this.currentFlow = innerFlow;\n\n // Compile the initializer\n var initializer = statement.initializer;\n var initExpr: ExpressionRef = 0;\n if (initializer) initExpr = this.compileStatement(initializer);\n\n // Compile the condition\n var condExpr: ExpressionRef = 0;\n var alwaysTrue = false;\n if (statement.condition) {\n condExpr = module.precomputeExpression(\n this.makeIsTrueish(\n this.compileExpression(statement.condition, Type.bool),\n this.currentType\n )\n );\n // Simplify if the condition is constant\n if (getExpressionId(condExpr) == ExpressionId.Const) {\n assert(getExpressionType(condExpr) == NativeType.I32);\n if (getConstValueI32(condExpr) == /* false */ 0) {\n let stmts = new Array();\n if (initExpr) stmts.push(initExpr);\n this.performAutoreleases(innerFlow, stmts);\n innerFlow.freeScopedLocals();\n outerFlow.popBreakLabel();\n this.currentFlow = outerFlow;\n return flatten(module, stmts, NativeType.None);\n }\n alwaysTrue = true;\n }\n } else { // Omitted condition is always true\n condExpr = module.i32(1);\n alwaysTrue = true;\n }\n innerFlow.inheritNonnullIfTrue(condExpr);\n\n // Compile incrementor\n var incrementor = statement.incrementor;\n var incrExpr: ExpressionRef = 0;\n if (incrementor) incrExpr = this.compileExpression(incrementor, Type.void, Constraints.CONV_IMPLICIT | Constraints.WILL_DROP);\n\n // Compile body (break: drop out, continue: fall through to incrementor, + loop)\n var breakLabel = innerFlow.breakLabel = \"break|\" + label; innerFlow.breakLabel = breakLabel;\n innerFlow.breakLabel = breakLabel;\n var continueLabel = \"continue|\" + label;\n innerFlow.continueLabel = continueLabel;\n var loopLabel = \"loop|\" + label;\n var bodyStatement = statement.statement;\n var stmts = new Array();\n if (bodyStatement.kind == NodeKind.BLOCK) {\n this.compileStatements((bodyStatement).statements, false, stmts);\n } else {\n stmts.push(this.compileStatement(bodyStatement));\n }\n var terminates = innerFlow.is(FlowFlags.TERMINATES);\n var continues = innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES);\n var breaks = innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS);\n\n // (block $break ;; (1) skip label (needed anyway) if skipping (4) + no breaks\n // (initializer) ;; (2) [may be empty]\n // (loop $loop ;; (3) skip if (6) does not fall through + no continues\n // (br_if !cond $break) ;; (4) skip if always true\n // (block $continue ;; (5) skip if no continues or nothing else than continue\n // (...) ;; (6)\n // )\n // (incrementor) ;; (7) skip if skipping (3) [may be empty]\n // (br $loop) ;; (8) skip if skipping (3)\n // )\n // )\n var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS);\n var needsLabel = !alwaysTrue || breaks;\n\n var loop = new Array();\n if (!alwaysTrue) { // (4)\n loop.push(module.br(breakLabel, module.unary(UnaryOp.EqzI32, condExpr)));\n }\n if (continues) { // (5)\n if (stmts.length > 1 || getExpressionId(stmts[0]) != ExpressionId.Break) { // otherwise lonely continue\n loop.push(module.block(continueLabel, stmts));\n }\n } else {\n for (let i = 0, k = stmts.length; i < k; ++i) loop.push(stmts[i]);\n }\n var expr: ExpressionRef;\n if (fallsThrough || continues) { // (3)\n if (incrExpr) loop.push(incrExpr); // (7)\n this.performAutoreleases(innerFlow, loop);\n loop.push(module.br(loopLabel)); // (8)\n if (initExpr) { // (2)\n expr = module.block(needsLabel ? breakLabel : null, [\n initExpr,\n module.loop(loopLabel, module.block(null, loop))\n ]);\n } else {\n expr = module.block(needsLabel ? breakLabel : null, [\n module.loop(loopLabel, flatten(module, loop, NativeType.None))\n ]);\n }\n } else {\n if (initExpr) loop.unshift(initExpr); // (2)\n this.performAutoreleases(innerFlow, loop);\n expr = module.block(needsLabel ? breakLabel : null, loop);\n }\n\n // Switch back to the parent flow\n innerFlow.freeScopedLocals();\n outerFlow.popBreakLabel();\n innerFlow.unset(\n FlowFlags.BREAKS |\n FlowFlags.CONDITIONALLY_BREAKS |\n FlowFlags.CONTINUES |\n FlowFlags.CONDITIONALLY_CONTINUES\n );\n if (alwaysTrue) outerFlow.inherit(innerFlow);\n else outerFlow.inheritConditional(innerFlow);\n this.currentFlow = outerFlow;\n return expr;\n }\n\n compileIfStatement(\n statement: IfStatement\n ): ExpressionRef {\n var module = this.module;\n var ifTrue = statement.ifTrue;\n var ifFalse = statement.ifFalse;\n var outerFlow = this.currentFlow;\n\n // The condition doesn't initiate a branch yet\n var condExpr = module.precomputeExpression(\n this.makeIsTrueish(\n this.compileExpression(statement.condition, Type.bool),\n this.currentType\n )\n );\n\n // Try to eliminate unnecesssary branches if the condition is constant\n if (\n getExpressionId(condExpr) == ExpressionId.Const &&\n getExpressionType(condExpr) == NativeType.I32\n ) {\n return getConstValueI32(condExpr)\n ? this.compileStatement(ifTrue)\n : ifFalse\n ? this.compileStatement(ifFalse)\n : module.nop();\n }\n\n // Each arm initiates a branch\n var ifTrueStmts = new Array();\n var ifTrueFlow = outerFlow.fork();\n this.currentFlow = ifTrueFlow;\n ifTrueFlow.inheritNonnullIfTrue(condExpr);\n if (ifTrue.kind == NodeKind.BLOCK) {\n this.compileStatements((ifTrue).statements, false, ifTrueStmts);\n } else {\n ifTrueStmts.push(this.compileStatement(ifTrue));\n }\n if (!ifTrueFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(ifTrueFlow, ifTrueStmts);\n ifTrueFlow.freeScopedLocals();\n this.currentFlow = outerFlow;\n\n if (ifFalse) {\n let ifFalseFlow = outerFlow.fork();\n this.currentFlow = ifFalseFlow;\n ifFalseFlow.inheritNonnullIfFalse(condExpr);\n let ifFalseStmts = new Array();\n if (ifFalse.kind == NodeKind.BLOCK) {\n this.compileStatements((ifFalse).statements, false, ifFalseStmts);\n } else {\n ifFalseStmts.push(this.compileStatement(ifFalse));\n }\n if (!ifFalseFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(ifFalseFlow, ifFalseStmts);\n ifFalseFlow.freeScopedLocals();\n this.currentFlow = outerFlow;\n outerFlow.inheritMutual(ifTrueFlow, ifFalseFlow);\n return module.if(condExpr,\n flatten(module, ifTrueStmts, NativeType.None),\n flatten(module, ifFalseStmts, NativeType.None)\n );\n } else {\n outerFlow.inheritConditional(ifTrueFlow);\n if (ifTrueFlow.is(FlowFlags.TERMINATES)) outerFlow.inheritNonnullIfFalse(condExpr);\n return module.if(condExpr,\n flatten(module, ifTrueStmts, NativeType.None)\n );\n }\n // TODO: Detect neglected condition\n // if (!foo) {\n // foo = [notNull]\n // }\n // foo // is possibly null\n }\n\n compileReturnStatement(\n statement: ReturnStatement,\n isLastInBody: bool\n ): ExpressionRef {\n var module = this.module;\n var expr: ExpressionRef = 0;\n var flow = this.currentFlow;\n var returnType = flow.returnType;\n\n // Remember that this flow returns\n flow.set(FlowFlags.RETURNS | FlowFlags.TERMINATES);\n\n var valueExpression = statement.value;\n if (valueExpression) {\n if (returnType == Type.void) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n valueExpression.range, this.currentType.toString(), returnType.toString()\n );\n this.currentType = Type.void;\n return module.unreachable();\n }\n let constraints = Constraints.CONV_IMPLICIT;\n if (flow.actualFunction.is(CommonFlags.MODULE_EXPORT)) constraints |= Constraints.MUST_WRAP;\n expr = this.compileExpression(valueExpression, returnType, constraints | Constraints.WILL_RETAIN);\n\n // when returning a local, and it is already retained, skip the final set\n // of retaining it as the return value and releasing it as a variable\n if (!this.skippedAutoreleases.has(expr)) {\n if (returnType.isManaged) {\n if (getExpressionId(expr) == ExpressionId.LocalGet) {\n if (flow.isAnyLocalFlag(getLocalGetIndex(expr), LocalFlags.ANY_RETAINED)) {\n flow.unsetLocalFlag(getLocalGetIndex(expr), LocalFlags.ANY_RETAINED);\n this.skippedAutoreleases.add(expr);\n }\n }\n }\n }\n\n // remember return states\n if (!flow.canOverflow(expr, returnType)) flow.set(FlowFlags.RETURNS_WRAPPED);\n if (flow.isNonnull(expr, returnType)) flow.set(FlowFlags.RETURNS_NONNULL);\n\n } else if (returnType != Type.void) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n statement.range, \"void\", returnType.toString()\n );\n expr = module.unreachable();\n }\n\n var stmts = new Array();\n this.performAutoreleases(flow, stmts);\n this.finishAutoreleases(flow, stmts);\n\n // Make sure that the return value is retained for the caller\n if (returnType.isManaged && !this.skippedAutoreleases.has(expr)) expr = this.makeRetain(expr);\n\n if (returnType != Type.void && stmts.length) {\n let temp = flow.getAndFreeTempLocal(returnType);\n if (flow.isNonnull(expr, returnType)) flow.setLocalFlag(temp.index, LocalFlags.NONNULL);\n stmts.unshift(\n module.local_set(temp.index, expr)\n );\n expr = module.local_get(temp.index, returnType.toNativeType());\n }\n flow.freeScopedLocals();\n\n // If the last statement anyway, make it the block's return value\n if (isLastInBody && expr && returnType != Type.void) {\n if (!stmts.length) return expr;\n stmts.push(expr);\n return module.block(null, stmts, returnType.toNativeType());\n }\n\n // When inlining, break to the end of the inlined function's block (no need to wrap)\n if (flow.is(FlowFlags.INLINE_CONTEXT)) {\n if (!stmts.length) return module.br(assert(flow.inlineReturnLabel), 0, expr);\n stmts.push(module.br(assert(flow.inlineReturnLabel), 0, expr));\n // stmts.push(module.createUnreachable());\n return module.block(null, stmts);\n }\n\n // Otherwise emit a normal return\n if (!stmts.length) return module.return(expr);\n stmts.push(module.return(expr));\n return module.block(null, stmts);\n }\n\n compileSwitchStatement(\n statement: SwitchStatement\n ): ExpressionRef {\n var module = this.module;\n\n var cases = statement.cases;\n var numCases = cases.length;\n if (!numCases) {\n return this.compileExpression(statement.condition, Type.void,\n Constraints.CONV_IMPLICIT\n );\n }\n\n // Everything within a switch uses the same break context\n var outerFlow = this.currentFlow;\n var context = outerFlow.pushBreakLabel();\n\n // introduce a local for evaluating the condition (exactly once)\n var tempLocal = outerFlow.getTempLocal(Type.u32);\n var tempLocalIndex = tempLocal.index;\n\n // Prepend initializer to inner block. Does not initiate a new branch, yet.\n var breaks = new Array(1 + numCases);\n breaks[0] = module.local_set( // initializer\n tempLocalIndex,\n this.compileExpression(statement.condition, Type.u32,\n Constraints.CONV_IMPLICIT\n )\n );\n\n // make one br_if per (possibly dynamic) labeled case (binaryen optimizes to br_table where possible)\n var breakIndex = 1;\n var defaultIndex = -1;\n for (let i = 0; i < numCases; ++i) {\n let case_ = cases[i];\n let label = case_.label;\n if (label) {\n breaks[breakIndex++] = module.br(\"case\" + i.toString(10) + \"|\" + context,\n module.binary(BinaryOp.EqI32,\n module.local_get(tempLocalIndex, NativeType.I32),\n this.compileExpression(label, Type.u32,\n Constraints.CONV_IMPLICIT\n )\n )\n );\n } else {\n defaultIndex = i;\n }\n }\n\n outerFlow.freeTempLocal(tempLocal);\n\n // otherwise br to default respectively out of the switch if there is no default case\n breaks[breakIndex] = module.br((defaultIndex >= 0\n ? \"case\" + defaultIndex.toString(10)\n : \"break\"\n ) + \"|\" + context);\n\n // nest blocks in order\n var currentBlock = module.block(\"case0|\" + context, breaks, NativeType.None);\n var commonCategorical = FlowFlags.ANY_CATEGORICAL;\n var commonConditional = 0;\n for (let i = 0; i < numCases; ++i) {\n let case_ = cases[i];\n let statements = case_.statements;\n let numStatements = statements.length;\n\n // Each switch case initiates a new branch\n let innerFlow = outerFlow.fork();\n this.currentFlow = innerFlow;\n let breakLabel = \"break|\" + context;\n innerFlow.breakLabel = breakLabel;\n\n let isLast = i == numCases - 1;\n let nextLabel = isLast ? breakLabel : \"case\" + (i + 1).toString(10) + \"|\" + context;\n let stmts = new Array(1 + numStatements);\n stmts[0] = currentBlock;\n let count = 1;\n let terminates = false;\n for (let j = 0; j < numStatements; ++j) {\n let stmt = this.compileStatement(statements[j]);\n if (getExpressionId(stmt) != ExpressionId.Nop) {\n stmts[count++] = stmt;\n }\n if (innerFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) {\n if (innerFlow.is(FlowFlags.TERMINATES)) terminates = true;\n break;\n }\n }\n stmts.length = count;\n if (terminates || isLast || innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) {\n commonCategorical &= innerFlow.flags;\n }\n commonConditional |= innerFlow.flags & FlowFlags.ANY_CONDITIONAL;\n\n // Switch back to the parent flow\n if (!terminates) this.performAutoreleases(innerFlow, stmts);\n innerFlow.unset(\n FlowFlags.BREAKS |\n FlowFlags.CONDITIONALLY_BREAKS\n );\n innerFlow.freeScopedLocals();\n this.currentFlow = outerFlow;\n currentBlock = module.block(nextLabel, stmts, NativeType.None); // must be a labeled block\n }\n outerFlow.popBreakLabel();\n\n // If the switch has a default (guaranteed to handle any value), propagate common flags\n if (defaultIndex >= 0) outerFlow.flags |= commonCategorical & ~FlowFlags.BREAKS;\n outerFlow.flags |= commonConditional & ~FlowFlags.CONDITIONALLY_BREAKS;\n // TODO: what about local states?\n return currentBlock;\n }\n\n compileThrowStatement(\n statement: ThrowStatement\n ): ExpressionRef {\n var flow = this.currentFlow;\n\n // Remember that this branch throws\n flow.set(FlowFlags.THROWS | FlowFlags.TERMINATES);\n\n var stmts = new Array();\n this.finishAutoreleases(flow, stmts);\n\n // TODO: requires exception-handling spec.\n var value = statement.value;\n var message: Expression | null = null;\n if (value.kind == NodeKind.NEW) {\n let newArgs = (value).arguments;\n if (newArgs.length) message = newArgs[0]; // FIXME: naively assumes type string\n }\n stmts.push(compileAbort(this, message, statement));\n\n return flatten(this.module, stmts, NativeType.None);\n }\n\n compileTryStatement(\n statement: TryStatement\n ): ExpressionRef {\n // TODO: can't yet support something like: try { return ... } finally { ... }\n // worthwhile to investigate lowering returns to block results (here)?\n this.error(\n DiagnosticCode.Operation_not_supported,\n statement.range\n );\n return this.module.unreachable();\n }\n\n /** Compiles a variable statement. Returns `0` if an initializer is not necessary. */\n compileVariableStatement(\n statement: VariableStatement\n ): ExpressionRef {\n var module = this.module;\n var declarations = statement.declarations;\n var numDeclarations = declarations.length;\n var flow = this.currentFlow;\n var initializers = new Array();\n var resolver = this.resolver;\n\n for (let i = 0; i < numDeclarations; ++i) {\n let declaration = declarations[i];\n let name = declaration.name.text;\n let type: Type | null = null;\n let initExpr: ExpressionRef = 0;\n let initAutoreleaseSkipped = false;\n\n // Resolve type if annotated\n if (declaration.type) {\n type = resolver.resolveType( // reports\n declaration.type,\n flow.actualFunction,\n flow.contextualTypeArguments\n );\n if (!type) continue;\n if (declaration.initializer) {\n initExpr = this.compileExpression(declaration.initializer, type, // reports\n Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN\n );\n initAutoreleaseSkipped = this.skippedAutoreleases.has(initExpr);\n }\n\n // Otherwise infer type from initializer\n } else if (declaration.initializer) {\n initExpr = this.compileExpression(declaration.initializer, Type.auto,\n Constraints.WILL_RETAIN\n ); // reports\n initAutoreleaseSkipped = this.skippedAutoreleases.has(initExpr);\n if (this.currentType == Type.void) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n declaration.range, this.currentType.toString(), \"\"\n );\n continue;\n }\n type = this.currentType;\n\n // Error if there's neither a type nor an initializer\n } else {\n this.error(\n DiagnosticCode.Type_expected,\n declaration.name.range.atEnd\n );\n continue;\n }\n\n // Handle constants, and try to inline if value is static\n let isConst = declaration.is(CommonFlags.CONST);\n let isStatic = false;\n if (isConst) {\n if (initExpr) {\n initExpr = module.precomputeExpression(initExpr);\n if (getExpressionId(initExpr) == ExpressionId.Const) {\n let local = new Local(name, -1, type, flow.parentFunction);\n switch (getExpressionType(initExpr)) {\n case NativeType.I32: {\n local.setConstantIntegerValue(\n i64_new(\n getConstValueI32(initExpr),\n 0\n ),\n type\n );\n break;\n }\n case NativeType.I64: {\n local.setConstantIntegerValue(\n i64_new(\n getConstValueI64Low(initExpr),\n getConstValueI64High(initExpr)\n ),\n type\n );\n break;\n }\n case NativeType.F32: {\n local.setConstantFloatValue(getConstValueF32(initExpr), type);\n break;\n }\n case NativeType.F64: {\n local.setConstantFloatValue(getConstValueF64(initExpr), type);\n break;\n }\n default: {\n assert(false);\n return module.unreachable();\n }\n }\n // Create a virtual local that doesn't actually exist in WebAssembly\n let scopedLocals = flow.scopedLocals;\n if (!scopedLocals) flow.scopedLocals = scopedLocals = new Map();\n else if (scopedLocals.has(name)) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n declaration.name.range, name\n );\n return this.module.unreachable();\n }\n scopedLocals.set(name, local);\n isStatic = true;\n }\n } else {\n this.error(\n DiagnosticCode._const_declarations_must_be_initialized,\n declaration.range\n );\n }\n }\n\n // Otherwise compile as mutable\n if (!isStatic) {\n let local: Local;\n if (\n declaration.isAny(CommonFlags.LET | CommonFlags.CONST) ||\n flow.is(FlowFlags.INLINE_CONTEXT)\n ) { // here: not top-level\n let existingLocal = flow.getScopedLocal(name);\n if (existingLocal) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n declaration.name.range, declaration.name.text\n );\n local = existingLocal;\n } else {\n local = flow.addScopedLocal(name, type);\n }\n if (isConst) flow.setLocalFlag(local.index, LocalFlags.CONSTANT);\n } else {\n if (flow.lookupLocal(name)) {\n this.error(\n DiagnosticCode.Duplicate_identifier_0,\n declaration.name.range, name\n );\n continue;\n }\n local = flow.parentFunction.addLocal(type, name, declaration);\n if (isConst) flow.setLocalFlag(local.index, LocalFlags.CONSTANT);\n }\n let isManaged = type.isManaged;\n if (initExpr) {\n if (flow.isNonnull(initExpr, type)) flow.setLocalFlag(local.index, LocalFlags.NONNULL);\n if (isManaged) {\n flow.setLocalFlag(local.index, LocalFlags.RETAINED);\n initializers.push(\n module.local_set(local.index,\n initAutoreleaseSkipped\n ? initExpr\n : this.makeRetain(initExpr)\n )\n );\n } else {\n initializers.push(\n module.local_set(local.index, initExpr)\n );\n if (local.type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) {\n if (!flow.canOverflow(initExpr, type)) flow.setLocalFlag(local.index, LocalFlags.WRAPPED);\n else flow.unsetLocalFlag(local.index, LocalFlags.WRAPPED);\n }\n }\n } else {\n if (isManaged) {\n // This is necessary because the first use (and assign) of the local could be taking place\n // in a loop, subsequently marking it retained, but the second iteration of the loop\n // still wouldn't release whatever is assigned in the first. Likewise, if the variable wasn't\n // initialized but becomes released later on, whatever was stored before would be released.\n // TODO: Detect this condition inside of a loop instead?\n initializers.push(\n module.local_set(local.index,\n type.toNativeZero(module)\n )\n );\n flow.setLocalFlag(local.index, LocalFlags.CONDITIONALLY_RETAINED);\n } else if (local.type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) {\n flow.setLocalFlag(local.index, LocalFlags.WRAPPED);\n }\n }\n }\n }\n return initializers.length == 0\n ? 0\n : flatten(module, initializers, NativeType.None);\n }\n\n compileVoidStatement(\n statement: VoidStatement\n ): ExpressionRef {\n return this.compileExpression(statement.expression, Type.void,\n Constraints.CONV_EXPLICIT | Constraints.WILL_DROP\n );\n }\n\n compileWhileStatement(\n statement: WhileStatement\n ): ExpressionRef {\n var module = this.module;\n var outerFlow = this.currentFlow;\n\n // Compile condition\n var condExpr = module.precomputeExpression(\n this.makeIsTrueish(\n this.compileExpression(statement.condition, Type.bool),\n this.currentType\n )\n );\n\n // Simplify if the condition is constant\n var alwaysTrue = false;\n if (getExpressionId(condExpr) == ExpressionId.Const) {\n assert(getExpressionType(condExpr) == NativeType.I32);\n if (!getConstValueI32(condExpr)) return module.nop(); // simplify\n alwaysTrue = true;\n }\n\n // Compile body\n var label = outerFlow.pushBreakLabel();\n var innerFlow = outerFlow.fork();\n this.currentFlow = innerFlow;\n var breakLabel = \"break|\" + label;\n innerFlow.breakLabel = breakLabel;\n var continueLabel = \"continue|\" + label;\n innerFlow.continueLabel = continueLabel;\n innerFlow.inheritNonnullIfTrue(condExpr);\n var stmts = new Array();\n if (statement.statement.kind == NodeKind.BLOCK) {\n this.compileStatements((statement.statement).statements, false, stmts);\n } else {\n stmts.push(this.compileStatement(statement.statement));\n }\n var terminates = innerFlow.is(FlowFlags.TERMINATES);\n\n // (block $break ;; (1) skip if skipping (3) + no breaks\n // (loop $continue ;; (2) skip if skipping (5) + no continues\n // (br_if !cond $break) ;; (3) skip if always true\n // (...) ;; (4)\n // (br $continue) ;; (5) skip if (4) does not fall through\n // )\n // )\n var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS);\n\n if (fallsThrough) { // (5)\n this.performAutoreleases(innerFlow, stmts);\n stmts.push(module.br(continueLabel));\n }\n if (!alwaysTrue) { // (3)\n stmts.unshift(module.br(breakLabel, module.unary(UnaryOp.EqzI32, condExpr)));\n }\n var expr = flatten(module, stmts, NativeType.None);\n if (fallsThrough || innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES)) { // (2)\n expr = module.loop(continueLabel, expr);\n }\n if (!alwaysTrue || innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { // (1)\n expr = module.block(breakLabel, [ expr ]);\n }\n\n // Switch back to the parent flow\n innerFlow.freeScopedLocals();\n outerFlow.popBreakLabel();\n innerFlow.unset(\n FlowFlags.BREAKS |\n FlowFlags.CONDITIONALLY_BREAKS |\n FlowFlags.CONTINUES |\n FlowFlags.CONDITIONALLY_CONTINUES\n );\n if (alwaysTrue) outerFlow.inherit(innerFlow);\n else outerFlow.inheritConditional(innerFlow);\n this.currentFlow = outerFlow;\n return expr;\n }\n\n // === Expressions ==============================================================================\n\n /** Compiles the value of an inlined constant element. */\n compileInlineConstant(\n element: VariableLikeElement,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n assert(element.is(CommonFlags.INLINED));\n var type = element.type;\n switch (\n !(constraints & (Constraints.CONV_IMPLICIT | Constraints.CONV_EXPLICIT)) &&\n type.is(TypeFlags.INTEGER) &&\n contextualType.is(TypeFlags.INTEGER) &&\n type.size < contextualType.size\n ? (this.currentType = contextualType).kind // essentially precomputes a (sign-)extension\n : (this.currentType = type).kind\n ) {\n case TypeKind.I8:\n case TypeKind.I16: {\n let shift = type.computeSmallIntegerShift(Type.i32);\n return this.module.i32(\n element.constantValueKind == ConstantValueKind.INTEGER\n ? i64_low(element.constantIntegerValue) << shift >> shift\n : 0\n ); // recognized by canOverflow\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n let mask = element.type.computeSmallIntegerMask(Type.i32);\n return this.module.i32(\n element.constantValueKind == ConstantValueKind.INTEGER\n ? i64_low(element.constantIntegerValue) & mask\n : 0\n ); // recognized by canOverflow\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n return this.module.i32(\n element.constantValueKind == ConstantValueKind.INTEGER\n ? i64_low(element.constantIntegerValue)\n : 0\n );\n }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!element.program.options.isWasm64) {\n return this.module.i32(\n element.constantValueKind == ConstantValueKind.INTEGER\n ? i64_low(element.constantIntegerValue)\n : 0\n );\n }\n // fall-through\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n return element.constantValueKind == ConstantValueKind.INTEGER\n ? this.module.i64(\n i64_low(element.constantIntegerValue),\n i64_high(element.constantIntegerValue)\n )\n : this.module.i64(0);\n }\n case TypeKind.F64: {\n // monkey-patch for converting built-in floats to f32 implicitly\n if (!(element.hasDecorator(DecoratorFlags.BUILTIN) && contextualType == Type.f32)) {\n return this.module.f64((element).constantFloatValue);\n }\n // otherwise fall-through: basically precomputes f32.demote/f64 of NaN / Infinity\n this.currentType = Type.f32;\n }\n case TypeKind.F32: {\n return this.module.f32((element).constantFloatValue);\n }\n default: {\n assert(false);\n return this.module.unreachable();\n }\n }\n }\n\n compileExpression(\n expression: Expression,\n contextualType: Type,\n constraints: Constraints = Constraints.NONE\n ): ExpressionRef {\n this.currentType = contextualType;\n var expr: ExpressionRef;\n if (contextualType == Type.void) constraints |= Constraints.WILL_DROP;\n switch (expression.kind) {\n case NodeKind.ASSERTION: {\n expr = this.compileAssertionExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.BINARY: {\n expr = this.compileBinaryExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.CALL: {\n expr = this.compileCallExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.COMMA: {\n expr = this.compileCommaExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.ELEMENTACCESS: {\n expr = this.compileElementAccessExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.FUNCTION: {\n expr = this.compileFunctionExpression(expression, contextualType.signatureReference, constraints);\n break;\n }\n case NodeKind.IDENTIFIER:\n case NodeKind.FALSE:\n case NodeKind.NULL:\n case NodeKind.THIS:\n case NodeKind.SUPER:\n case NodeKind.TRUE: {\n expr = this.compileIdentifierExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.INSTANCEOF: {\n expr = this.compileInstanceOfExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.LITERAL: {\n expr = this.compileLiteralExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.NEW: {\n expr = this.compileNewExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.PARENTHESIZED: {\n expr = this.compileExpression((expression).expression, contextualType, constraints);\n break;\n }\n case NodeKind.PROPERTYACCESS: {\n expr = this.compilePropertyAccessExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.TERNARY: {\n expr = this.compileTernaryExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.UNARYPOSTFIX: {\n expr = this.compileUnaryPostfixExpression(expression, contextualType, constraints);\n break;\n }\n case NodeKind.UNARYPREFIX: {\n expr = this.compileUnaryPrefixExpression(expression, contextualType, constraints);\n break;\n }\n default: {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n expr = this.module.unreachable();\n }\n }\n // ensure conversion and wrapping in case the respective function doesn't on its own\n var currentType = this.currentType;\n var wrap = (constraints & Constraints.MUST_WRAP) != 0;\n if (currentType != contextualType) {\n if (constraints & Constraints.CONV_EXPLICIT) {\n expr = this.convertExpression(expr, currentType, contextualType, true, wrap, expression);\n wrap = false;\n this.currentType = contextualType;\n } else if (constraints & Constraints.CONV_IMPLICIT) {\n expr = this.convertExpression(expr, currentType, contextualType, false, wrap, expression);\n wrap = false;\n this.currentType = contextualType;\n }\n }\n if (wrap) expr = this.ensureSmallIntegerWrap(expr, currentType);\n // debug location is added here so the caller doesn't have to. means: compilation of an expression\n // must go through this function, with the respective per-kind functions not being used directly.\n if (this.options.sourceMap) this.addDebugLocation(expr, expression.range);\n return expr;\n }\n\n /** Compiles and precomputes an expression, possibly yielding a costant value. */\n precomputeExpression(\n expression: Expression,\n contextualType: Type,\n constraints: Constraints = Constraints.NONE\n ): ExpressionRef {\n return this.module.precomputeExpression(\n this.compileExpression(expression, contextualType, constraints)\n );\n }\n\n convertExpression(\n expr: ExpressionRef,\n /** Original type. */\n fromType: Type,\n /** New type. */\n toType: Type,\n /** Whether the conversion is explicit.*/\n explicit: bool,\n /** Whether the result should be wrapped, if a small integer. */\n wrap: bool,\n reportNode: Node\n ): ExpressionRef {\n var module = this.module;\n\n // void to any\n if (fromType.kind == TypeKind.VOID) {\n assert(toType.kind != TypeKind.VOID); // convertExpression should not be called with void -> void\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n reportNode.range, fromType.toString(), toType.toString()\n );\n return module.unreachable();\n }\n\n // any to void\n if (toType.kind == TypeKind.VOID) return module.drop(expr);\n\n if (this.currentFlow.isNonnull(expr, fromType)) fromType = fromType.nonNullableType;\n\n if (!fromType.isAssignableTo(toType)) {\n if (!explicit) {\n if (fromType.nonNullableType == toType) {\n this.error(\n DiagnosticCode.Object_is_possibly_null,\n reportNode.range\n ); // recoverable\n } else {\n this.error(\n DiagnosticCode.Conversion_from_type_0_to_1_requires_an_explicit_cast,\n reportNode.range, fromType.toString(), toType.toString()\n ); // recoverable\n }\n }\n }\n\n if (fromType.is(TypeFlags.FLOAT)) {\n\n // float to float\n if (toType.is(TypeFlags.FLOAT)) {\n if (fromType.kind == TypeKind.F32) {\n\n // f32 to f64\n if (toType.kind == TypeKind.F64) {\n expr = module.unary(UnaryOp.PromoteF32, expr);\n }\n\n // otherwise f32 to f32\n\n // f64 to f32\n } else if (toType.kind == TypeKind.F32) {\n expr = module.unary(UnaryOp.DemoteF64, expr);\n }\n\n // otherwise f64 to f64\n\n // float to int\n } else if (toType.is(TypeFlags.INTEGER)) {\n\n // f32 to int\n if (fromType.kind == TypeKind.F32) {\n if (toType == Type.bool) {\n expr = module.binary(BinaryOp.NeF32, expr, module.f32(0));\n wrap = false;\n } else if (toType.is(TypeFlags.SIGNED)) {\n if (toType.is(TypeFlags.LONG)) {\n expr = module.unary(UnaryOp.TruncF32ToI64, expr);\n } else {\n expr = module.unary(UnaryOp.TruncF32ToI32, expr);\n }\n } else {\n if (toType.is(TypeFlags.LONG)) {\n expr = module.unary(UnaryOp.TruncF32ToU64, expr);\n } else {\n expr = module.unary(UnaryOp.TruncF32ToU32, expr);\n }\n }\n\n // f64 to int\n } else {\n if (toType == Type.bool) {\n expr = module.binary(BinaryOp.NeF64, expr, module.f64(0));\n wrap = false;\n } else if (toType.is(TypeFlags.SIGNED)) {\n if (toType.is(TypeFlags.LONG)) {\n expr = module.unary(UnaryOp.TruncF64ToI64, expr);\n } else {\n expr = module.unary(UnaryOp.TruncF64ToI32, expr);\n }\n } else {\n if (toType.is(TypeFlags.LONG)) {\n expr = module.unary(UnaryOp.TruncF64ToU64, expr);\n } else {\n expr = module.unary(UnaryOp.TruncF64ToU32, expr);\n }\n }\n }\n\n // float to void\n } else {\n assert(toType.flags == TypeFlags.NONE, \"void type expected\");\n expr = module.drop(expr);\n }\n\n // int to float\n } else if (fromType.is(TypeFlags.INTEGER) && toType.is(TypeFlags.FLOAT)) {\n\n // int to f32\n if (toType.kind == TypeKind.F32) {\n if (fromType.is(TypeFlags.LONG)) {\n expr = module.unary(\n fromType.is(TypeFlags.SIGNED)\n ? UnaryOp.ConvertI64ToF32\n : UnaryOp.ConvertU64ToF32,\n expr\n );\n } else {\n expr = module.unary(\n fromType.is(TypeFlags.SIGNED)\n ? UnaryOp.ConvertI32ToF32\n : UnaryOp.ConvertU32ToF32,\n expr\n );\n }\n\n // int to f64\n } else {\n if (fromType.is(TypeFlags.LONG)) {\n expr = module.unary(\n fromType.is(TypeFlags.SIGNED)\n ? UnaryOp.ConvertI64ToF64\n : UnaryOp.ConvertU64ToF64,\n expr\n );\n } else {\n expr = module.unary(\n fromType.is(TypeFlags.SIGNED)\n ? UnaryOp.ConvertI32ToF64\n : UnaryOp.ConvertU32ToF64,\n expr\n );\n }\n }\n\n // int to int\n } else {\n // i64 to ...\n if (fromType.is(TypeFlags.LONG)) {\n\n // i64 to i32 or smaller\n if (toType == Type.bool) {\n expr = module.binary(BinaryOp.NeI64, expr, module.i64(0));\n wrap = false;\n } else if (!toType.is(TypeFlags.LONG)) {\n expr = module.unary(UnaryOp.WrapI64, expr); // discards upper bits\n }\n\n // i32 or smaller to i64\n } else if (toType.is(TypeFlags.LONG)) {\n expr = module.unary(\n fromType.is(TypeFlags.SIGNED) ? UnaryOp.ExtendI32 : UnaryOp.ExtendU32,\n this.ensureSmallIntegerWrap(expr, fromType) // must clear garbage bits\n );\n wrap = false;\n\n // i32 to i32\n } else {\n // small i32 to ...\n if (fromType.is(TypeFlags.SHORT)) {\n // small i32 to larger i32\n if (fromType.size < toType.size) {\n expr = this.ensureSmallIntegerWrap(expr, fromType); // must clear garbage bits\n wrap = false;\n }\n }\n }\n }\n\n this.currentType = toType;\n return wrap\n ? this.ensureSmallIntegerWrap(expr, toType)\n : expr;\n }\n\n compileAssertionExpression(\n expression: AssertionExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var inheritedConstraints = constraints & ~(Constraints.CONV_IMPLICIT | Constraints.CONV_EXPLICIT);\n switch (expression.assertionKind) {\n case AssertionKind.PREFIX:\n case AssertionKind.AS: {\n let flow = this.currentFlow;\n let toType = this.resolver.resolveType( // reports\n assert(expression.toType),\n flow.actualFunction,\n flow.contextualTypeArguments\n );\n if (!toType) return this.module.unreachable();\n return this.compileExpression(expression.expression, toType, inheritedConstraints | Constraints.CONV_EXPLICIT);\n }\n case AssertionKind.NONNULL: {\n assert(!expression.toType);\n let expr = this.compileExpression(expression.expression, contextualType.exceptVoid, inheritedConstraints);\n let type = this.currentType;\n if (this.currentFlow.isNonnull(expr, type)) {\n this.info(\n DiagnosticCode.Expression_is_never_null,\n expression.expression.range\n );\n } else if (!this.options.noAssert) {\n let module = this.module;\n let flow = this.currentFlow;\n let tempIndex = flow.getAndFreeTempLocal(type).index;\n if (!flow.canOverflow(expr, type)) flow.setLocalFlag(tempIndex, LocalFlags.WRAPPED);\n flow.setLocalFlag(tempIndex, LocalFlags.NONNULL);\n expr = module.if(\n module.local_tee(tempIndex, expr),\n module.local_get(tempIndex, type.toNativeType()),\n module.unreachable()\n );\n }\n this.currentType = this.currentType.nonNullableType;\n return expr;\n }\n default: assert(false);\n }\n return this.module.unreachable();\n }\n\n private f32ModInstance: Function | null = null;\n private f64ModInstance: Function | null = null;\n private f32PowInstance: Function | null = null;\n private f64PowInstance: Function | null = null;\n\n compileBinaryExpression(\n expression: BinaryExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var left = expression.left;\n var right = expression.right;\n\n var leftExpr: ExpressionRef;\n var leftType: Type;\n var rightExpr: ExpressionRef;\n var rightType: Type;\n var commonType: Type | null;\n\n var expr: ExpressionRef;\n var compound = false;\n\n var operator = expression.operator;\n switch (operator) {\n case Token.LESSTHAN: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.LT);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, true)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"<\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.LtI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.LtI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.LtI64\n : BinaryOp.LtI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.LtU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.LtU64\n : BinaryOp.LtU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.LtU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.LtF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.LtF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n case Token.GREATERTHAN: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.GT);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, true)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \">\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.GtI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.GtI64\n : BinaryOp.GtI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.GtI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.GtU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.GtU64\n : BinaryOp.GtU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.GtU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.GtF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.GtF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n case Token.LESSTHAN_EQUALS: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.LE);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, true)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"<=\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.LeI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.LeI64\n : BinaryOp.LeI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.LeI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.LeU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.LeU64\n : BinaryOp.LeU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.LeU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.LeF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.LeF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n case Token.GREATERTHAN_EQUALS: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.GE);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, true)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \">=\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.GeI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.GeI64\n : BinaryOp.GeI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.GeI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.GeU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.GeU64\n : BinaryOp.GeU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.GeU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.GeF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.GeF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n\n case Token.EQUALS_EQUALS_EQUALS:\n case Token.EQUALS_EQUALS: {\n\n // NOTE that this favors correctness, in terms of emitting a binary expression, over\n // checking for a possible use of unary EQZ. while the most classic of all optimizations,\n // that's not what the source told us to do. for reference, `!left` emits unary EQZ.\n\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (operator == Token.EQUALS_EQUALS && this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.EQ);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n // still allow '==' with references\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, operatorTokenToString(expression.operator), leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.EqI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.EqI64\n : BinaryOp.EqI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.EqI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.EqF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.EqF64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.V128: {\n expr = module.unary(UnaryOp.AllTrueVecI8x16,\n module.binary(BinaryOp.EqVecI8x16, leftExpr, rightExpr)\n );\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n case Token.EXCLAMATION_EQUALS_EQUALS:\n case Token.EXCLAMATION_EQUALS: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (operator == Token.EXCLAMATION_EQUALS && this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.NE);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n // still allow '!=' with references\n }\n\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, operatorTokenToString(expression.operator), leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n switch (commonType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.NeI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.NeI64\n : BinaryOp.NeI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.NeI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.NeF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.NeF64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.V128: {\n expr = module.unary(UnaryOp.AnyTrueVecI8x16,\n module.binary(BinaryOp.NeVecI8x16, leftExpr, rightExpr)\n );\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n this.currentType = Type.bool;\n break;\n }\n case Token.EQUALS: {\n return this.compileAssignment(left, right, contextualType);\n }\n case Token.PLUS_EQUALS: compound = true;\n case Token.PLUS: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.ADD);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"+\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8: // addition might overflow\n case TypeKind.I16: // ^\n case TypeKind.U8: // ^\n case TypeKind.U16: // ^\n case TypeKind.BOOL: // ^\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.AddI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.AddI64\n : BinaryOp.AddI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.AddI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.AddF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.AddF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.MINUS_EQUALS: compound = true;\n case Token.MINUS: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.SUB);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"-\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8: // subtraction might overflow\n case TypeKind.I16: // ^\n case TypeKind.U8: // ^\n case TypeKind.U16: // ^\n case TypeKind.BOOL: // ^\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.SubI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.SubI64\n : BinaryOp.SubI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.SubI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.SubF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.SubF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.ASTERISK_EQUALS: compound = true;\n case Token.ASTERISK: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.MUL);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n leftExpr = this.ensureSmallIntegerWrap(leftExpr, leftType);\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"*\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL:\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.MulI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.MulI64\n : BinaryOp.MulI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.MulI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.MulF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.MulF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.ASTERISK_ASTERISK_EQUALS: compound = true;\n case Token.ASTERISK_ASTERISK: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.POW);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n let instance: Function | null;\n\n // Mathf.pow if lhs is f32 (result is f32)\n if (this.currentType.kind == TypeKind.F32) {\n rightExpr = this.compileExpression(right, Type.f32, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n if (!(instance = this.f32PowInstance)) {\n let namespace = this.program.lookupGlobal(CommonSymbols.Mathf);\n if (!namespace) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Mathf\"\n );\n expr = module.unreachable();\n break;\n }\n let prototype = namespace.members ? namespace.members.get(CommonSymbols.pow) : null;\n if (!prototype) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Mathf.pow\"\n );\n expr = module.unreachable();\n break;\n }\n assert(prototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n this.f32PowInstance = instance = this.resolver.resolveFunction(prototype, null);\n }\n\n // Math.pow otherwise (result is f64)\n // TODO: should the result be converted back?\n } else {\n leftExpr = this.convertExpression(leftExpr,\n this.currentType, Type.f64,\n false, false,\n left\n );\n leftType = this.currentType;\n rightExpr = this.compileExpression(right, Type.f64, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n if (!(instance = this.f64PowInstance)) {\n let namespace = this.program.lookupGlobal(CommonSymbols.Math);\n if (!namespace) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Math\"\n );\n expr = module.unreachable();\n break;\n }\n let prototype = namespace.members ? namespace.members.get(CommonSymbols.pow) : null;\n if (!prototype) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Math.pow\"\n );\n expr = module.unreachable();\n break;\n }\n assert(prototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n this.f64PowInstance = instance = this.resolver.resolveFunction(prototype, null);\n }\n }\n if (!(instance && this.compileFunction(instance))) {\n expr = module.unreachable();\n } else {\n expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ], expression);\n }\n break;\n }\n case Token.SLASH_EQUALS: compound = true;\n case Token.SLASH: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.DIV);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n leftExpr = this.ensureSmallIntegerWrap(leftExpr, leftType);\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"/\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8: // signed div on signed small integers might overflow, e.g. -128/-1\n case TypeKind.I16: // ^\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.DivI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.DivI64\n : BinaryOp.DivI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.DivI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.DivU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.DivU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.DivU64\n : BinaryOp.DivU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.DivU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.DivF32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.DivF64, leftExpr, rightExpr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.PERCENT_EQUALS: compound = true;\n case Token.PERCENT: {\n leftExpr = this.compileExpression(left, contextualType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.REM);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n leftExpr = this.ensureSmallIntegerWrap(leftExpr, leftType);\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, true, // !\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, true, // !\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"%\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16: {\n expr = module.binary(BinaryOp.RemI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.RemI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.RemI64\n : BinaryOp.RemI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.RemI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.RemU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.RemU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.RemU64\n : BinaryOp.RemU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.RemU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.F32: {\n let instance = this.f32ModInstance;\n if (!instance) {\n let namespace = this.program.lookupGlobal(CommonSymbols.Mathf);\n if (!namespace) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Mathf\"\n );\n expr = module.unreachable();\n break;\n }\n let prototype = namespace.members ? namespace.members.get(CommonSymbols.mod) : null;\n if (!prototype) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Mathf.mod\"\n );\n expr = module.unreachable();\n break;\n }\n assert(prototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n this.f32ModInstance = instance = this.resolver.resolveFunction(prototype, null);\n }\n if (!(instance && this.compileFunction(instance))) {\n expr = module.unreachable();\n } else {\n expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ], expression);\n }\n break;\n }\n case TypeKind.F64: {\n let instance = this.f64ModInstance;\n if (!instance) {\n let namespace = this.program.lookupGlobal(CommonSymbols.Math);\n if (!namespace) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Math\"\n );\n expr = module.unreachable();\n break;\n }\n let prototype = namespace.members ? namespace.members.get(CommonSymbols.mod) : null;\n if (!prototype) {\n this.error(\n DiagnosticCode.Cannot_find_name_0,\n expression.range, \"Math.mod\"\n );\n expr = module.unreachable();\n break;\n }\n assert(prototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n this.f64ModInstance = instance = this.resolver.resolveFunction(prototype, null);\n }\n if (!(instance && this.compileFunction(instance))) {\n expr = module.unreachable();\n } else {\n expr = this.makeCallDirect(instance, [ leftExpr, rightExpr ], expression);\n }\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.LESSTHAN_LESSTHAN_EQUALS: compound = true;\n case Token.LESSTHAN_LESSTHAN: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHL);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL:\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.ShlI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.ShlI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.ShlI64\n : BinaryOp.ShlI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.GREATERTHAN_GREATERTHAN_EQUALS: compound = true;\n case Token.GREATERTHAN_GREATERTHAN: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHR);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n leftExpr = this.ensureSmallIntegerWrap(leftExpr, leftType); // must clear garbage bits\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16: {\n expr = module.binary(BinaryOp.ShrI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I32: {\n expr = module.binary(BinaryOp.ShrI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64: {\n expr = module.binary(BinaryOp.ShrI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.ShrI64\n : BinaryOp.ShrI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.ShrU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.ShrU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.ShrU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.ShrU64\n : BinaryOp.ShrU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS: compound = true;\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHR_U);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n leftExpr = this.ensureSmallIntegerWrap(leftExpr, leftType); // must clear garbage bits\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n switch (this.currentType.kind) {\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: { // assumes that unsigned shr on unsigned small integers does not overflow\n expr = module.binary(BinaryOp.ShrU32, leftExpr, rightExpr);\n }\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.ShrU32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.ShrU64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.ShrU64\n : BinaryOp.ShrU32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.AMPERSAND_EQUALS: compound = true;\n case Token.AMPERSAND: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overloadd\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_AND);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"&\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.AndI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.AndI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.AndI64\n : BinaryOp.AndI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.BAR_EQUALS: compound = true;\n case Token.BAR: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_OR);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"|\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.OrI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.OrI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.OrI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.OrI64\n : BinaryOp.OrI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.CARET_EQUALS: compound = true;\n case Token.CARET: {\n leftExpr = this.compileExpression(left, contextualType.intType);\n leftType = this.currentType;\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = leftType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_XOR);\n if (overload) {\n expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n if (compound) {\n rightExpr = this.compileExpression(right, leftType, Constraints.CONV_IMPLICIT);\n rightType = this.currentType;\n } else {\n rightExpr = this.compileExpression(right, leftType);\n rightType = this.currentType;\n if (commonType = Type.commonDenominator(leftType, rightType, false)) {\n leftExpr = this.convertExpression(leftExpr,\n leftType, leftType = commonType,\n false, false,\n left\n );\n rightExpr = this.convertExpression(rightExpr,\n rightType, rightType = commonType,\n false, false,\n right\n );\n } else {\n this.error(\n DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2,\n expression.range, \"^\", leftType.toString(), rightType.toString()\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n }\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.XorI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.XorI32, leftExpr, rightExpr);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.XorI64, leftExpr, rightExpr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.XorI64\n : BinaryOp.XorI32,\n leftExpr,\n rightExpr\n );\n break;\n }\n case TypeKind.F32:\n case TypeKind.F64: {\n this.error(\n DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1,\n expression.range, operatorTokenToString(expression.operator), this.currentType.toString()\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n\n // logical (no overloading)\n\n case Token.AMPERSAND_AMPERSAND: { // left && right -> (t = left) ? right : t\n let flow = this.currentFlow;\n let inheritedConstraints = constraints & (Constraints.WILL_RETAIN | Constraints.MUST_WRAP);\n leftExpr = this.compileExpression(left, contextualType.exceptVoid, inheritedConstraints);\n leftType = this.currentType;\n\n let rightFlow = flow.fork();\n this.currentFlow = rightFlow;\n rightFlow.inheritNonnullIfTrue(leftExpr);\n rightExpr = this.compileExpression(right, leftType, inheritedConstraints | Constraints.CONV_IMPLICIT);\n rightType = leftType;\n\n // simplify if only interested in true or false\n if (contextualType == Type.bool || contextualType == Type.void) {\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n this.currentType = Type.bool;\n expr = module.if(\n this.makeIsTrueish(leftExpr, leftType),\n this.makeIsTrueish(rightExpr, rightType),\n module.i32(0)\n );\n\n // references must properly retain and release, with the same outcome independent of the branch taken\n } else if (leftType.isManaged) {\n let leftAutoreleaseSkipped = this.skippedAutoreleases.has(leftExpr);\n let rightAutoreleaseSkipped = this.skippedAutoreleases.has(rightExpr);\n let temp = flow.getTempLocal(leftType);\n leftExpr = module.local_tee(temp.index, leftExpr);\n\n // instead of retaining left and releasing it again in right when right\n // is taken, we can also just retain left if right is not taken\n let retainLeftInElse = false;\n if (leftAutoreleaseSkipped != rightAutoreleaseSkipped) { // xor\n if (!leftAutoreleaseSkipped) {\n retainLeftInElse = true;\n } else {\n rightExpr = this.makeRetain(rightExpr);\n rightAutoreleaseSkipped = true;\n }\n } else if (!(constraints & Constraints.WILL_RETAIN)) { // otherwise keep right alive a little longer\n rightExpr = this.moveAutorelease(rightExpr, rightFlow, flow);\n }\n\n let rightStmts = new Array();\n if (leftAutoreleaseSkipped) { // left turned out to be true'ish and is dropped\n rightStmts.unshift(\n this.makeRelease(\n module.local_get(temp.index, leftType.toNativeType())\n )\n );\n }\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType, rightStmts);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n\n expr = module.if(\n this.makeIsTrueish(leftExpr, leftType),\n rightExpr,\n retainLeftInElse\n ? this.makeRetain(\n module.local_get(temp.index, leftType.toNativeType())\n )\n : module.local_get(temp.index, leftType.toNativeType())\n );\n if (leftAutoreleaseSkipped || rightAutoreleaseSkipped) this.skippedAutoreleases.add(expr);\n if (temp) flow.freeTempLocal(temp);\n\n // basic values can use more aggressive optimizations\n } else {\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n\n // simplify if cloning left without side effects is possible\n if (expr = module.cloneExpression(leftExpr, true, 0)) {\n expr = module.if(\n this.makeIsTrueish(leftExpr, this.currentType),\n rightExpr,\n expr\n );\n\n // if not possible, tee left to a temp\n } else {\n let tempLocal = flow.getTempLocal(leftType);\n if (!flow.canOverflow(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.NONNULL);\n expr = module.if(\n this.makeIsTrueish(module.local_tee(tempLocal.index, leftExpr), leftType),\n rightExpr,\n module.local_get(tempLocal.index, leftType.toNativeType())\n );\n }\n }\n this.currentType = leftType;\n break;\n }\n case Token.BAR_BAR: { // left || right -> ((t = left) ? t : right)\n let flow = this.currentFlow;\n let inheritedConstraints = constraints & (Constraints.WILL_RETAIN | Constraints.MUST_WRAP);\n leftExpr = this.compileExpression(left, contextualType.exceptVoid, inheritedConstraints);\n leftType = this.currentType;\n\n let rightFlow = flow.fork();\n this.currentFlow = rightFlow;\n rightFlow.inheritNonnullIfFalse(leftExpr);\n rightExpr = this.compileExpression(right, leftType, inheritedConstraints | Constraints.CONV_IMPLICIT);\n rightType = leftType;\n\n // simplify if only interested in true or false\n if (contextualType == Type.bool || contextualType == Type.void) {\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, leftType);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n this.currentType = Type.bool;\n expr = module.if(\n this.makeIsTrueish(leftExpr, leftType),\n module.i32(1),\n this.makeIsTrueish(rightExpr, rightType)\n );\n\n // references must properly retain and release, with the same outcome independent of the branch taken\n } else if (leftType.isManaged) {\n let leftAutoreleaseSkipped = this.skippedAutoreleases.has(leftExpr);\n let rightAutoreleaseSkipped = this.skippedAutoreleases.has(rightExpr);\n let temp = flow.getTempLocal(leftType);\n leftExpr = module.local_tee(temp.index, leftExpr);\n\n // instead of retaining left and releasing it again in right when right\n // is taken, we can also just retain left if right is not taken\n let retainLeftInThen = false;\n if (leftAutoreleaseSkipped != rightAutoreleaseSkipped) { // xor\n if (!leftAutoreleaseSkipped) {\n retainLeftInThen = true;\n } else {\n rightExpr = this.makeRetain(rightExpr);\n rightAutoreleaseSkipped = true;\n }\n } else if (!(constraints & Constraints.WILL_RETAIN)) { // otherwise keep right alive a little longer\n rightExpr = this.moveAutorelease(rightExpr, rightFlow, flow);\n }\n\n let rightStmts = new Array();\n if (leftAutoreleaseSkipped) { // left turned out to be false'ish and is dropped\n // TODO: usually, false'ish means left is null, but this might not hold\n // once implicit conversion with strings is performed and left is \"\", so:\n rightStmts.unshift(\n this.makeRelease(\n module.local_get(temp.index, leftType.toNativeType())\n )\n );\n }\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType, rightStmts);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n\n expr = module.if(\n this.makeIsTrueish(leftExpr, leftType),\n retainLeftInThen\n ? this.makeRetain(\n module.local_get(temp.index, leftType.toNativeType())\n )\n : module.local_get(temp.index, leftType.toNativeType()),\n rightExpr\n );\n if (leftAutoreleaseSkipped || rightAutoreleaseSkipped) this.skippedAutoreleases.add(expr);\n if (temp) flow.freeTempLocal(temp);\n\n // basic values can use more aggressive optimizations\n } else {\n rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType);\n rightFlow.freeScopedLocals();\n this.currentFlow = flow;\n\n // simplify if cloning left without side effects is possible\n if (expr = module.cloneExpression(leftExpr, true, 0)) {\n expr = module.if(\n this.makeIsTrueish(leftExpr, leftType),\n expr,\n rightExpr\n );\n\n // if not possible, tee left to a temp. local\n } else {\n let tempLocal = flow.getAndFreeTempLocal(leftType);\n if (!flow.canOverflow(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.NONNULL);\n expr = module.if(\n this.makeIsTrueish(module.local_tee(tempLocal.index, leftExpr), leftType),\n module.local_get(tempLocal.index, leftType.toNativeType()),\n rightExpr\n );\n }\n }\n this.currentType = leftType;\n break;\n }\n default: {\n assert(false);\n expr = this.module.unreachable();\n }\n }\n if (!compound) return expr;\n var resolver = this.resolver;\n var target = resolver.resolveExpression(left, this.currentFlow);\n if (!target) return module.unreachable();\n return this.makeAssignment(\n target,\n expr, // TODO: delay release above if possible?\n left,\n resolver.currentThisExpression,\n resolver.currentElementExpression,\n contextualType != Type.void\n );\n }\n\n compileUnaryOverload(\n operatorInstance: Function,\n value: Expression,\n valueExpr: ExpressionRef,\n reportNode: Node\n ): ExpressionRef {\n // FIXME: see comment in compileBinaryOverload below why recompiling on type mismatch\n // is a bad idea currently. so this assumes that the type matches.\n return this.makeCallDirect(operatorInstance, [ valueExpr ], reportNode, false);\n }\n\n compileBinaryOverload(\n operatorInstance: Function,\n left: Expression,\n leftExpr: ExpressionRef,\n right: Expression,\n reportNode: Node\n ): ExpressionRef {\n var rightType: Type;\n if (operatorInstance.is(CommonFlags.INSTANCE)) {\n let classInstance = assert(operatorInstance.parent); assert(classInstance.kind == ElementKind.CLASS);\n rightType = operatorInstance.signature.parameterTypes[0];\n } else {\n // FIXME: if LHS type differs we can't recompile left because that'd completely confuse\n // local states, like having retained locals that actually do not even exist, possibly\n // releasing something random in that local before and evil things like that. Hence this\n // assumes that LHS type matches, which in turn means that static overloads must be\n // guaranteed to never mismatch LHS type, which in turn means that we can't have shiny\n // things like multiple static overloads for different combinations of LHS/RHS types.\n // We might want that at some point of course, but requires to complete the resolver so\n // it can actually resolve every kind of expression without ever having to recompile.\n rightType = operatorInstance.signature.parameterTypes[1];\n }\n var rightExpr = this.compileExpression(right, rightType, Constraints.CONV_IMPLICIT);\n return this.makeCallDirect(operatorInstance, [ leftExpr, rightExpr ], reportNode);\n }\n\n compileAssignment(expression: Expression, valueExpression: Expression, contextualType: Type): ExpressionRef {\n var program = this.program;\n var resolver = program.resolver;\n var flow = this.currentFlow;\n var target = resolver.resolveExpression(expression, flow); // reports\n if (!target) return this.module.unreachable();\n var thisExpression = resolver.currentThisExpression;\n var elementExpression = resolver.currentElementExpression;\n\n // to compile just the value, we need to know the target's type\n var targetType: Type;\n switch (target.kind) {\n case ElementKind.GLOBAL: {\n // not yet compiled if a static field compiled as a global\n if (!this.compileGlobal(target)) return this.module.unreachable(); // reports\n // fall-through\n }\n case ElementKind.LOCAL:\n case ElementKind.FIELD: {\n targetType = (target).type;\n if (target.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: { // static property\n let setterPrototype = (target).setterPrototype;\n if (!setterPrototype) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n expression.range, (target).internalName\n );\n return this.module.unreachable();\n }\n let setterInstance = this.resolver.resolveFunction(setterPrototype, null, makeMap(), ReportMode.REPORT);\n if (!setterInstance) return this.module.unreachable();\n assert(setterInstance.signature.parameterTypes.length == 1); // parser must guarantee this\n targetType = setterInstance.signature.parameterTypes[0];\n if (setterPrototype.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n break;\n }\n case ElementKind.PROPERTY: { // instance property\n let setterInstance = (target).setterInstance;\n if (!setterInstance) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n expression.range, (target).internalName\n );\n return this.module.unreachable();\n }\n assert(setterInstance.signature.parameterTypes.length == 1); // parser must guarantee this\n targetType = setterInstance.signature.parameterTypes[0];\n if (setterInstance.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n break;\n }\n case ElementKind.CLASS: {\n if (elementExpression) { // indexed access\n let isUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT);\n // if (isUnchecked) {\n // let arrayType = this.program.determineBuiltinArrayType(target);\n // if (arrayType) {\n // return compileBuiltinArraySet(\n // this,\n // target,\n // assert(this.resolver.currentThisExpression),\n // elementExpression,\n // valueExpression,\n // contextualType\n // );\n // }\n // }\n let indexedSet = (target).lookupOverload(OperatorKind.INDEXED_SET, isUnchecked);\n if (!indexedSet) {\n let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET, isUnchecked);\n if (!indexedGet) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n expression.range, (target).internalName\n );\n } else {\n this.error(\n DiagnosticCode.Index_signature_in_type_0_only_permits_reading,\n expression.range, (target).internalName\n );\n }\n return this.module.unreachable();\n }\n assert(indexedSet.signature.parameterTypes.length == 2); // parser must guarantee this\n targetType = indexedSet.signature.parameterTypes[1]; // 2nd parameter is the element\n if (indexedSet.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n break;\n }\n // fall-through\n }\n default: {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n }\n\n // compile the value and do the assignment\n assert(targetType != Type.void);\n return this.makeAssignment(\n target,\n this.compileExpression(valueExpression, targetType, Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN),\n expression,\n thisExpression,\n elementExpression,\n contextualType != Type.void\n );\n }\n\n /** Makes an assignment expression or block, assigning a value to a target. */\n makeAssignment(\n /** Target element, e.g. a Local. */\n target: Element,\n /** Value expression that has been compiled in a previous step already. */\n valueExpr: ExpressionRef,\n /** Expression reference. Has already been compiled to `valueExpr`. */\n valueExpression: Expression,\n /** `this` expression reference if a field or property set. */\n thisExpression: Expression | null,\n /** Index expression reference if an indexed set. */\n indexExpression: Expression | null,\n /** Whether to tee the value. */\n tee: bool\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n\n // NOTE: Only locals, globals and fields can make use of skipped autoreleases while\n // everything else must insert the skipped autorelease now. See (*)\n\n switch (target.kind) {\n case ElementKind.LOCAL: {\n if (flow.isLocalFlag((target).index, LocalFlags.CONSTANT, true)) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n valueExpression.range, target.internalName\n );\n this.currentType = tee ? (target).type : Type.void;\n return module.unreachable();\n }\n return this.makeLocalAssignment(target, valueExpr, tee);\n }\n case ElementKind.GLOBAL: {\n if (!this.compileGlobal(target)) return module.unreachable();\n if (target.isAny(CommonFlags.CONST | CommonFlags.READONLY)) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n valueExpression.range,\n target.internalName\n );\n this.currentType = tee ? (target).type : Type.void;\n return module.unreachable();\n }\n return this.makeGlobalAssignment(target, valueExpr, tee);\n }\n case ElementKind.FIELD: {\n let initializerNode = (target).initializerNode;\n if (\n (target).is(CommonFlags.READONLY) &&\n !(\n flow.actualFunction.is(CommonFlags.CONSTRUCTOR) ||\n initializerNode\n )\n ) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n valueExpression.range, (target).internalName\n );\n return module.unreachable();\n }\n return this.makeFieldAssignment(target,\n valueExpr,\n // FIXME: explicit type (currently fails due to missing null checking)\n this.compileExpression(assert(thisExpression), this.options.usizeType),\n tee\n );\n }\n case ElementKind.PROPERTY_PROTOTYPE: { // static property\n if (this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeAutorelease(valueExpr, flow); // (*)\n let setterPrototype = (target).setterPrototype;\n if (!setterPrototype) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n valueExpression.range, target.internalName\n );\n return module.unreachable();\n }\n let setterInstance = this.resolver.resolveFunction(setterPrototype, null, makeMap(), ReportMode.REPORT);\n if (!setterInstance) return module.unreachable();\n // call just the setter if the return value isn't of interest\n if (!tee) return this.makeCallDirect(setterInstance, [ valueExpr ], valueExpression);\n // otherwise call the setter first, then the getter\n let getterPrototype = assert((target).getterPrototype); // must be present\n let getterInstance = this.resolver.resolveFunction(getterPrototype, null, makeMap(), ReportMode.REPORT);\n if (!getterInstance) return module.unreachable();\n let returnType = getterInstance.signature.returnType;\n let nativeReturnType = returnType.toNativeType();\n return module.block(null, [\n this.makeCallDirect(setterInstance, [ valueExpr ], valueExpression),\n this.makeCallDirect(getterInstance, null, valueExpression) // sets currentType\n ], nativeReturnType);\n }\n case ElementKind.PROPERTY: { // instance property\n if (this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeAutorelease(valueExpr, flow); // (*)\n let setterInstance = (target).setterInstance;\n if (!setterInstance) {\n this.error(\n DiagnosticCode.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property,\n valueExpression.range, target.internalName\n );\n return module.unreachable();\n }\n // call just the setter if the return value isn't of interest\n if (!tee) {\n let thisExpr = this.compileExpression(assert(thisExpression), this.options.usizeType);\n return this.makeCallDirect(setterInstance, [ thisExpr, valueExpr ], valueExpression);\n }\n // otherwise call the setter first, then the getter\n let getterInstance = assert((target).getterInstance); // must be present\n let returnType = getterInstance.signature.returnType;\n let nativeReturnType = returnType.toNativeType();\n let thisExpr = this.compileExpression(assert(thisExpression), this.options.usizeType);\n let tempLocal = flow.getAndFreeTempLocal(returnType);\n let tempLocalIndex = tempLocal.index;\n return module.block(null, [\n this.makeCallDirect(setterInstance, [ // set and remember the target\n module.local_tee(tempLocalIndex, thisExpr),\n valueExpr\n ], valueExpression),\n this.makeCallDirect(getterInstance, [ // get from remembered target\n module.local_get(tempLocalIndex, nativeReturnType)\n ], valueExpression)\n ], nativeReturnType);\n }\n case ElementKind.CLASS: {\n if (this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeAutorelease(valueExpr, flow); // (*)\n if (indexExpression) {\n let isUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT);\n let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET, isUnchecked);\n if (!indexedGet) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n valueExpression.range, target.internalName\n );\n return module.unreachable();\n }\n let indexedSet = (target).lookupOverload(OperatorKind.INDEXED_SET, isUnchecked);\n if (!indexedSet) {\n this.error(\n DiagnosticCode.Index_signature_in_type_0_only_permits_reading,\n valueExpression.range, target.internalName\n );\n this.currentType = tee ? indexedGet.signature.returnType : Type.void;\n return module.unreachable();\n }\n let targetType = (target).type;\n let thisExpr = this.compileExpression(assert(thisExpression), this.options.usizeType);\n let elementExpr = this.compileExpression(indexExpression, Type.i32, Constraints.CONV_IMPLICIT);\n if (tee) {\n let tempLocalTarget = flow.getTempLocal(targetType);\n let tempLocalElement = flow.getAndFreeTempLocal(this.currentType);\n let returnType = indexedGet.signature.returnType;\n flow.freeTempLocal(tempLocalTarget);\n return module.block(null, [\n this.makeCallDirect(indexedSet, [\n module.local_tee(tempLocalTarget.index, thisExpr),\n module.local_tee(tempLocalElement.index, elementExpr),\n valueExpr\n ], valueExpression),\n this.makeCallDirect(indexedGet, [\n module.local_get(tempLocalTarget.index, tempLocalTarget.type.toNativeType()),\n module.local_get(tempLocalElement.index, tempLocalElement.type.toNativeType())\n ], valueExpression)\n ], returnType.toNativeType());\n } else {\n return this.makeCallDirect(indexedSet, [\n thisExpr,\n elementExpr,\n valueExpr\n ], valueExpression);\n }\n }\n // fall-through\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n valueExpression.range\n );\n return module.unreachable();\n }\n\n /** Makes an assignment to a local, possibly retaining and releasing affected references and keeping track of wrap and null states. */\n private makeLocalAssignment(\n /** The local to assign to. */\n local: Local,\n /** The value to assign. */\n valueExpr: ExpressionRef,\n /** Whether to tee the value. */\n tee: bool\n ): ExpressionRef {\n var type = local.type;\n assert(type != Type.void);\n var flow = this.currentFlow;\n var localIndex = local.index;\n\n if (type.is(TypeFlags.NULLABLE)) {\n if (flow.isNonnull(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.NONNULL);\n else flow.unsetLocalFlag(localIndex, LocalFlags.NONNULL);\n }\n flow.setLocalFlag(localIndex, LocalFlags.WRITTENTO);\n\n if (type.isManaged) {\n let module = this.module;\n let nativeType = type.toNativeType();\n\n if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) {\n if (this.skippedAutoreleases.has(valueExpr)) {\n valueExpr = this.makeSkippedRelease(\n module.local_get(localIndex, nativeType), // oldRef\n valueExpr // newRef\n );\n if (tee) { // TEE(local = __skippedRelease(local, value))\n this.currentType = type;\n return module.local_tee(localIndex, valueExpr);\n } else { // local = __skippedRelease(local, value)\n this.currentType = Type.void;\n return module.local_set(localIndex, valueExpr);\n }\n } else {\n valueExpr = this.makeRetainRelease(\n module.local_get(localIndex, nativeType), // oldRef\n valueExpr // newRef\n );\n if (tee) { // TEE(local = __retainRelease(local, value))\n this.currentType = type;\n return module.local_tee(localIndex, valueExpr);\n } else { // local = __retainRelease(local, value)\n this.currentType = Type.void;\n return module.local_set(localIndex, valueExpr);\n }\n }\n } else {\n flow.unsetLocalFlag(localIndex, LocalFlags.CONDITIONALLY_RETAINED);\n flow.setLocalFlag(localIndex, LocalFlags.RETAINED);\n if (!this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeRetain(valueExpr);\n if (tee) { // TEE(local = __retain(value, local))\n this.currentType = type;\n return module.local_tee(localIndex, valueExpr);\n } else { // local = __retain(value, local)\n this.currentType = Type.void;\n return module.local_set(localIndex, valueExpr);\n }\n }\n } else {\n if (type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) {\n if (!flow.canOverflow(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.WRAPPED);\n else flow.unsetLocalFlag(localIndex, LocalFlags.WRAPPED);\n }\n if (tee) { // TEE(local = value)\n this.currentType = type;\n return this.module.local_tee(localIndex, valueExpr);\n } else { // local = value\n this.currentType = Type.void;\n return this.module.local_set(localIndex, valueExpr);\n }\n }\n }\n\n /** Makes an assignment to a global, possibly retaining and releasing affected references. */\n private makeGlobalAssignment(\n /** The global to assign to. */\n global: Global,\n /** The value to assign. */\n valueExpr: ExpressionRef,\n /** Whether to tee the value. */\n tee: bool\n ): ExpressionRef {\n var module = this.module;\n var type = global.type;\n assert(type != Type.void);\n var nativeType = type.toNativeType();\n\n if (type.isManaged) {\n if (this.skippedAutoreleases.has(valueExpr)) {\n if (tee) { // (global = __skippedRelease(global, value)), global\n this.currentType = type;\n return module.block(null, [\n module.global_set(global.internalName,\n this.makeSkippedRelease(\n module.global_get(global.internalName, nativeType), // oldRef\n valueExpr // newRef\n )\n ),\n module.global_get(global.internalName, nativeType)\n ], nativeType);\n } else { // global = __skippedRelease(global, value)\n this.currentType = Type.void;\n return module.global_set(global.internalName,\n this.makeSkippedRelease(\n module.global_get(global.internalName, nativeType), // oldRef\n valueExpr // newRef\n )\n );\n }\n } else {\n if (tee) { // (global = __retainRelease(global, value)), global\n this.currentType = type;\n return module.block(null, [\n module.global_set(global.internalName,\n this.makeRetainRelease(\n module.global_get(global.internalName, nativeType), // oldRef\n valueExpr // newRef\n )\n ),\n module.global_get(global.internalName, nativeType)\n ], nativeType);\n } else { // global = __retainRelease(global, value)\n this.currentType = Type.void;\n return module.global_set(global.internalName,\n this.makeRetainRelease(\n module.global_get(global.internalName, nativeType), // oldRef\n valueExpr // newRef\n )\n );\n }\n }\n } else {\n valueExpr = this.ensureSmallIntegerWrap(valueExpr, type); // globals must be wrapped\n if (tee) { // (global = value), global\n this.currentType = type;\n return module.block(null, [\n module.global_set(global.internalName, valueExpr),\n module.global_get(global.internalName, nativeType)\n ], nativeType);\n } else { // global = value\n this.currentType = Type.void;\n return module.global_set(global.internalName,\n valueExpr\n );\n }\n }\n }\n\n /** Makes an assignment to a field, possibly retaining and releasing affected references. */\n makeFieldAssignment(\n /** The field to assign to. */\n field: Field,\n /** The value to assign. */\n valueExpr: ExpressionRef,\n /** The value of `this`. */\n thisExpr: ExpressionRef,\n /** Whether to tee the value. */\n tee: bool\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n var fieldType = field.type;\n var nativeFieldType = fieldType.toNativeType();\n assert(field.parent.kind == ElementKind.CLASS);\n var thisType = (field.parent).type;\n var nativeThisType = thisType.toNativeType();\n\n if (fieldType.isManaged && thisType.isManaged) {\n let tempThis = flow.getTempLocal(thisType);\n if (this.skippedAutoreleases.has(valueExpr)) {\n if (tee) { // ((t1 = this).field = __skippedRelease(t1.field, t2 = value)), t2\n let tempValue = flow.getAndFreeTempLocal(fieldType);\n if (!flow.canOverflow(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.NONNULL);\n flow.freeTempLocal(tempThis);\n this.currentType = fieldType;\n return module.block(null, [\n module.store(fieldType.byteSize,\n module.local_tee(tempThis.index, thisExpr),\n this.makeSkippedRelease(\n module.load(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef\n module.local_get(tempThis.index, nativeThisType),\n nativeFieldType, field.memoryOffset\n ),\n module.local_tee(tempValue.index, valueExpr), // newRef\n ),\n nativeFieldType, field.memoryOffset\n ),\n module.local_get(tempValue.index, nativeFieldType)\n ], nativeFieldType);\n } else { // (t1 = this).field = __skippedRelease(t1.field, value)\n flow.freeTempLocal(tempThis);\n this.currentType = Type.void;\n return module.store(fieldType.byteSize,\n module.local_tee(tempThis.index, thisExpr),\n this.makeSkippedRelease(\n module.load(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef\n module.local_get(tempThis.index, nativeThisType),\n nativeFieldType, field.memoryOffset\n ),\n valueExpr, // newRef\n ),\n nativeFieldType, field.memoryOffset\n );\n }\n } else {\n if (tee) { // ((t1 = this).field = __retainRelease(t1.field, t2 = value)), t2\n let tempValue = flow.getAndFreeTempLocal(fieldType);\n if (!flow.canOverflow(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.NONNULL);\n flow.freeTempLocal(tempThis);\n this.currentType = fieldType;\n return module.block(null, [\n module.store(fieldType.byteSize,\n module.local_tee(tempThis.index, thisExpr),\n this.makeRetainRelease(\n module.load(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef\n module.local_get(tempThis.index, nativeThisType),\n nativeFieldType, field.memoryOffset\n ),\n module.local_tee(tempValue.index, valueExpr) // newRef\n ),\n nativeFieldType, field.memoryOffset\n ),\n module.local_get(tempValue.index, nativeFieldType)\n ], nativeFieldType);\n } else { // (t1 = this).field = __retainRelease(t1.field, value)\n flow.freeTempLocal(tempThis);\n this.currentType = Type.void;\n return module.store(fieldType.byteSize,\n module.local_tee(tempThis.index, thisExpr),\n this.makeRetainRelease(\n module.load(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef\n module.local_get(tempThis.index, nativeThisType),\n nativeFieldType, field.memoryOffset\n ),\n valueExpr // newRef\n ),\n nativeFieldType, field.memoryOffset\n );\n }\n }\n } else {\n if (tee) { // (this.field = (t1 = value)), t1\n let tempValue = flow.getAndFreeTempLocal(fieldType);\n if (!flow.canOverflow(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.NONNULL);\n this.currentType = fieldType;\n return module.block(null, [\n module.store(fieldType.byteSize,\n thisExpr,\n module.local_tee(tempValue.index, valueExpr),\n nativeFieldType, field.memoryOffset\n ),\n module.local_get(tempValue.index, nativeFieldType)\n ], nativeFieldType);\n } else { // this.field = value\n this.currentType = Type.void;\n return module.store(fieldType.byteSize,\n thisExpr,\n valueExpr,\n nativeFieldType, field.memoryOffset\n );\n }\n }\n }\n\n /** Compiles a call expression according to the specified context. */\n compileCallExpression(\n /** Call expression to compile. */\n expression: CallExpression,\n /** Contextual type indicating the return type the caller expects, if any. */\n contextualType: Type,\n /** Constraints indicating contextual conditions. */\n constraints: Constraints\n ): ExpressionRef {\n\n var module = this.module;\n var flow = this.currentFlow;\n\n // handle call to super\n if (expression.expression.kind == NodeKind.SUPER) {\n let flow = this.currentFlow;\n let actualFunction = flow.actualFunction;\n if (!actualFunction.is(CommonFlags.CONSTRUCTOR)) {\n this.error(\n DiagnosticCode.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors,\n expression.range\n );\n return module.unreachable();\n }\n\n let classInstance = assert(actualFunction.parent); assert(classInstance.kind == ElementKind.CLASS);\n let baseClassInstance = assert((classInstance).base);\n let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_));\n let nativeSizeType = this.options.nativeSizeType;\n\n // {\n // this = super(this || , ...args)\n // this.a = X\n // this.b = Y\n // }\n let theCall = this.compileCallDirect(\n this.ensureConstructor(baseClassInstance, expression),\n expression.arguments,\n expression,\n module.if(\n module.local_get(thisLocal.index, nativeSizeType),\n module.local_get(thisLocal.index, nativeSizeType),\n this.makeRetain(\n this.makeAllocation(classInstance)\n )\n ),\n Constraints.WILL_RETAIN\n );\n assert(this.skippedAutoreleases.has(theCall)); // guaranteed\n let stmts: ExpressionRef[] = [\n module.local_set(thisLocal.index, theCall)\n ];\n this.makeFieldInitialization(classInstance, stmts);\n\n // check that super had been called before accessing `this`\n if (flow.isAny(\n FlowFlags.ALLOCATES |\n FlowFlags.CONDITIONALLY_ALLOCATES\n )) {\n this.error(\n DiagnosticCode._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class,\n expression.range\n );\n return module.unreachable();\n }\n flow.set(FlowFlags.ALLOCATES | FlowFlags.CALLS_SUPER);\n this.currentType = Type.void;\n return module.block(null, stmts);\n }\n\n // otherwise resolve normally\n var target = this.resolver.resolveExpression(expression.expression, flow); // reports\n if (!target) return module.unreachable();\n\n var signature: Signature | null;\n var indexArg: ExpressionRef;\n switch (target.kind) {\n\n // direct call: concrete function\n case ElementKind.FUNCTION_PROTOTYPE: {\n let prototype = target;\n let typeArguments = expression.typeArguments;\n\n // builtins handle present respectively omitted type arguments on their own\n if (prototype.hasDecorator(DecoratorFlags.BUILTIN)) {\n return this.compileCallExpressionBuiltin(prototype, expression, contextualType);\n }\n\n let instance: Function | null = null;\n\n // resolve generic call if type arguments have been provided\n if (typeArguments) {\n if (!prototype.is(CommonFlags.GENERIC)) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n expression.expression.range, prototype.internalName\n );\n return module.unreachable();\n }\n instance = this.resolver.resolveFunctionInclTypeArguments(\n prototype,\n typeArguments,\n flow.actualFunction.parent, // relative to caller\n makeMap(flow.contextualTypeArguments),\n expression\n );\n\n // infer generic call if type arguments have been omitted\n } else if (prototype.is(CommonFlags.GENERIC)) {\n let inferredTypes = new Map();\n let typeParameterNodes = assert(prototype.typeParameterNodes);\n let numTypeParameters = typeParameterNodes.length;\n for (let i = 0; i < numTypeParameters; ++i) {\n inferredTypes.set(typeParameterNodes[i].name.text, null);\n }\n // let numInferred = 0;\n let parameterNodes = prototype.functionTypeNode.parameters;\n let numParameters = parameterNodes.length;\n let argumentNodes = expression.arguments;\n let numArguments = argumentNodes.length;\n let argumentExprs = new Array(numArguments);\n for (let i = 0; i < numParameters; ++i) {\n let typeNode = parameterNodes[i].type;\n let templateName = typeNode.kind == NodeKind.NAMEDTYPE && !(typeNode).name.next\n ? (typeNode).name.identifier.text\n : null;\n let argumentExpression = i < numArguments\n ? argumentNodes[i]\n : parameterNodes[i].initializer;\n if (!argumentExpression) { // missing initializer -> too few arguments\n this.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n expression.range, numParameters.toString(10), numArguments.toString(10)\n );\n return module.unreachable();\n }\n if (templateName !== null && inferredTypes.has(templateName)) {\n let inferredType = inferredTypes.get(templateName);\n if (inferredType) {\n argumentExprs[i] = this.compileExpression(argumentExpression, inferredType);\n let commonType: Type | null;\n if (!(commonType = Type.commonDenominator(inferredType, this.currentType, true))) {\n if (!(commonType = Type.commonDenominator(inferredType, this.currentType, false))) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n parameterNodes[i].type.range, this.currentType.toString(), inferredType.toString()\n );\n return module.unreachable();\n }\n }\n inferredType = commonType;\n } else {\n argumentExprs[i] = this.compileExpression(argumentExpression, Type.auto);\n inferredType = this.currentType;\n // ++numInferred;\n }\n inferredTypes.set(templateName, inferredType);\n } else {\n let concreteType = this.resolver.resolveType(\n parameterNodes[i].type,\n flow.actualFunction,\n flow.contextualTypeArguments\n );\n if (!concreteType) return module.unreachable();\n argumentExprs[i] = this.compileExpression(argumentExpression, concreteType, Constraints.CONV_IMPLICIT);\n }\n }\n let resolvedTypeArguments = new Array(numTypeParameters);\n for (let i = 0; i < numTypeParameters; ++i) {\n let name = typeParameterNodes[i].name.text;\n if (inferredTypes.has(name)) {\n let inferredType = inferredTypes.get(name);\n if (inferredType) {\n resolvedTypeArguments[i] = inferredType;\n continue;\n }\n }\n // unused template, e.g. `function test(): void {...}` called as `test()`\n // invalid because the type is effectively unknown inside the function body\n this.error(\n DiagnosticCode.Type_argument_expected,\n expression.expression.range.atEnd\n );\n return this.module.unreachable();\n }\n instance = this.resolver.resolveFunction(\n prototype,\n resolvedTypeArguments,\n makeMap(flow.contextualTypeArguments)\n );\n if (!instance) return this.module.unreachable();\n if (prototype.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n return this.makeCallDirect(instance, argumentExprs, expression, contextualType == Type.void);\n // TODO: this skips inlining because inlining requires compiling its temporary locals in\n // the scope of the inlined flow. might need another mechanism to lock temp. locals early,\n // so inlining can be performed in `makeCallDirect` instead?\n\n // otherwise resolve the non-generic call as usual\n } else {\n instance = this.resolver.resolveFunction(prototype, null);\n }\n if (!instance) return this.module.unreachable();\n\n // compile 'this' expression if an instance method\n let thisExpr: ExpressionRef = 0;\n if (instance.is(CommonFlags.INSTANCE)) {\n thisExpr = this.compileExpression(assert(this.resolver.currentThisExpression), this.options.usizeType);\n }\n\n return this.compileCallDirect(\n instance,\n expression.arguments,\n expression,\n thisExpr,\n constraints\n );\n }\n\n // indirect call: index argument with signature (non-generic, can't be inlined)\n case ElementKind.LOCAL: {\n if (signature = (target).type.signatureReference) {\n if ((target).is(CommonFlags.INLINED)) {\n indexArg = module.i32(i64_low((target).constantIntegerValue));\n } else {\n indexArg = module.local_get((target).index, NativeType.I32);\n }\n break;\n } else {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n expression.range, (target).type.toString()\n );\n return module.unreachable();\n }\n }\n case ElementKind.GLOBAL: {\n if (signature = (target).type.signatureReference) {\n indexArg = module.global_get((target).internalName, (target).type.toNativeType());\n break;\n } else {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n expression.range, (target).type.toString()\n );\n return module.unreachable();\n }\n }\n case ElementKind.FIELD: {\n let type = (target).type;\n if (signature = type.signatureReference) {\n let thisExpression = assert(this.resolver.currentThisExpression);\n let thisExpr = this.compileExpression(thisExpression, this.options.usizeType);\n indexArg = module.load(\n 4,\n false,\n thisExpr,\n NativeType.I32,\n (target).memoryOffset\n );\n break;\n } else {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n expression.range, type.toString()\n );\n return module.unreachable();\n }\n }\n case ElementKind.FUNCTION_TARGET: {\n signature = (target).signature;\n indexArg = this.compileExpression(expression.expression, (target).type, Constraints.CONV_IMPLICIT);\n break;\n }\n\n case ElementKind.PROPERTY_PROTOTYPE: { // static property\n let getterPrototype = assert((target).getterPrototype);\n let getterInstance = this.resolver.resolveFunction(getterPrototype, null);\n if (!getterInstance) return module.unreachable();\n indexArg = this.compileCallDirect(getterInstance, [], expression.expression);\n signature = this.currentType.signatureReference;\n if (!signature) {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n expression.range, this.currentType.toString()\n );\n return module.unreachable();\n }\n break;\n }\n case ElementKind.PROPERTY: { // instance property\n let getterInstance = assert((target).getterInstance);\n indexArg = this.compileCallDirect(getterInstance, [], expression.expression,\n this.compileExpression(assert(this.resolver.currentThisExpression), this.options.usizeType)\n );\n signature = this.currentType.signatureReference;\n if (!signature) {\n this.error(\n DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,\n expression.range, this.currentType.toString()\n );\n return module.unreachable();\n }\n break;\n }\n\n // not supported\n default: {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n }\n return this.compileCallIndirect(\n signature,\n indexArg,\n expression.arguments,\n expression,\n 0,\n contextualType == Type.void\n );\n }\n\n private compileCallExpressionBuiltin(\n prototype: FunctionPrototype,\n expression: CallExpression,\n contextualType: Type\n ): ExpressionRef {\n if (prototype.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n\n var typeArguments: Type[] | null = null;\n\n // builtins handle omitted type arguments on their own. if present, however, resolve them here\n // and pass them to the builtin, even if it's still up to the builtin how to handle them.\n var typeParameterNodes = prototype.typeParameterNodes;\n var typeArgumentNodes = expression.typeArguments;\n if (expression.typeArguments) {\n if (!prototype.is(CommonFlags.GENERIC)) {\n this.error(\n DiagnosticCode.Type_0_is_not_generic,\n expression.range, prototype.internalName\n );\n }\n typeArguments = this.resolver.resolveTypeArguments(\n assert(typeParameterNodes),\n typeArgumentNodes,\n this.currentFlow.actualFunction.parent,\n makeMap(this.currentFlow.contextualTypeArguments),\n expression\n );\n }\n\n // now compile the builtin, which usually returns a block of code that replaces the call.\n var expr = compileBuiltinCall(\n this,\n prototype,\n typeArguments,\n expression.arguments,\n contextualType,\n expression\n );\n if (!expr) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n return expr;\n }\n\n /**\n * Checks that a call with the given number as arguments can be performed according to the\n * specified signature.\n */\n checkCallSignature(\n signature: Signature,\n numArguments: i32,\n hasThis: bool,\n reportNode: Node\n ): bool {\n\n // cannot call an instance method without a `this` argument (TODO: `.call`?)\n var thisType = signature.thisType;\n if (hasThis != (thisType != null)) {\n this.error(\n DiagnosticCode.Operation_not_supported, // TODO: better message?\n reportNode.range\n );\n return false;\n }\n\n // not yet implemented (TODO: maybe some sort of an unmanaged/lightweight array?)\n var hasRest = signature.hasRest;\n if (hasRest) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n return false;\n }\n\n var minimum = signature.requiredParameters;\n var maximum = signature.parameterTypes.length;\n\n // must at least be called with required arguments\n if (numArguments < minimum) {\n this.error(\n minimum < maximum\n ? DiagnosticCode.Expected_at_least_0_arguments_but_got_1\n : DiagnosticCode.Expected_0_arguments_but_got_1,\n reportNode.range, minimum.toString(), numArguments.toString()\n );\n return false;\n }\n\n // must not be called with more than the maximum arguments\n if (numArguments > maximum && !hasRest) {\n this.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n reportNode.range, maximum.toString(), numArguments.toString()\n );\n return false;\n }\n\n return true;\n }\n\n /** Checks that an unsafe expression is allowed. */\n private checkUnsafe(reportNode: Node): void {\n // Library files may always use unsafe features\n if (this.options.noUnsafe && !reportNode.range.source.isLibrary) {\n this.error(\n DiagnosticCode.Expression_is_unsafe,\n reportNode.range\n );\n }\n }\n\n /** Compiles a direct call to a concrete function. */\n compileCallDirect(\n instance: Function,\n argumentExpressions: Expression[],\n reportNode: Node,\n thisArg: ExpressionRef = 0,\n constraints: Constraints = Constraints.NONE\n ): ExpressionRef {\n var numArguments = argumentExpressions.length;\n var signature = instance.signature;\n if (!this.checkCallSignature( // reports\n signature,\n numArguments,\n thisArg != 0,\n reportNode\n )) {\n this.currentType = signature.returnType;\n return this.module.unreachable();\n }\n if (instance.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(reportNode);\n\n // Inline if explicitly requested\n if (instance.hasDecorator(DecoratorFlags.INLINE)) {\n assert(!instance.is(CommonFlags.TRAMPOLINE)); // doesn't make sense\n if (this.currentInlineFunctions.includes(instance)) {\n this.warning(\n DiagnosticCode.Function_0_cannot_be_inlined_into_itself,\n reportNode.range, instance.internalName\n );\n } else {\n this.currentInlineFunctions.push(instance);\n let parameterTypes = signature.parameterTypes;\n assert(numArguments <= parameterTypes.length);\n // compile argument expressions\n let args = new Array(numArguments);\n for (let i = 0; i < numArguments; ++i) {\n args[i] = this.compileExpression(argumentExpressions[i], parameterTypes[i],\n Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN\n );\n }\n // make the inlined call (is aware of autoreleases)\n let expr = this.makeCallInline(instance, args, thisArg, (constraints & Constraints.WILL_DROP) != 0);\n if (this.currentType.isManaged) {\n if (!(constraints & Constraints.WILL_RETAIN)) {\n expr = this.makeAutorelease(expr, this.currentFlow);\n } else {\n this.skippedAutoreleases.add(expr);\n }\n }\n this.currentInlineFunctions.pop();\n return expr;\n }\n }\n\n // Otherwise compile to just a call\n var numArgumentsInclThis = thisArg ? numArguments + 1 : numArguments;\n var operands = new Array(numArgumentsInclThis);\n var index = 0;\n if (thisArg) {\n operands[0] = thisArg;\n index = 1;\n }\n var parameterTypes = signature.parameterTypes;\n for (let i = 0; i < numArguments; ++i, ++index) {\n operands[index] = this.compileExpression(argumentExpressions[i], parameterTypes[i],\n Constraints.CONV_IMPLICIT\n );\n }\n assert(index == numArgumentsInclThis);\n if (signature.returnType.isManaged) {\n if (constraints & Constraints.WILL_DROP) {\n // Skip autorelease and simply release\n return this.makeCallDirect(instance, operands, reportNode, true);\n } else if (constraints & Constraints.WILL_RETAIN) {\n // Skip autorelease and remember\n let expr = this.makeCallDirect(instance, operands, reportNode, false, true);\n this.skippedAutoreleases.add(expr);\n return expr;\n } else {\n return this.makeCallDirect(instance, operands, reportNode, false, false);\n }\n }\n return this.makeCallDirect(instance, operands, reportNode,\n (constraints & Constraints.WILL_DROP) != 0\n );\n }\n\n makeCallInline(\n instance: Function,\n operands: ExpressionRef[] | null,\n thisArg: ExpressionRef = 0,\n immediatelyDropped: bool = false\n ): ExpressionRef {\n var module = this.module;\n var numArguments = operands ? operands.length : 0;\n var signature = instance.signature;\n var parameterTypes = signature.parameterTypes;\n var numParameters = parameterTypes.length;\n\n // Create a new inline flow and use it to compile the function as a block\n var previousFlow = this.currentFlow;\n var flow = Flow.createInline(previousFlow.parentFunction, instance);\n var body = [];\n var usedLocals = new Set();\n\n // Prepare compiled arguments right to left, keeping track of used locals.\n for (let i = numArguments - 1; i >= 0; --i) {\n // This is necessary because a later expression must not set an earlier argument local, which\n // is also just a temporary, when being executed. Take for example `t1=1, t2=(t1 = 2)`, where\n // the right expression would reassign the foregoing argument local. So, we iterate from right\n // to left, remembering what's used later, and don't use these for earlier arguments, making\n // the example above essentially `t2=1, t1=(t1 = 2)`.\n let paramExpr = operands![i];\n let paramType = parameterTypes[i];\n let argumentLocal = flow.addScopedLocal(signature.getParameterName(i), paramType, usedLocals);\n findUsedLocals(paramExpr, usedLocals);\n // inlining is aware of wrap/nonnull states:\n if (!previousFlow.canOverflow(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL);\n // inlining is aware of skipped autoreleases:\n if (paramType.isManaged) {\n if (!this.skippedAutoreleases.has(paramExpr)) paramExpr = this.makeRetain(paramExpr);\n flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED);\n }\n body.unshift(\n module.local_set(argumentLocal.index, paramExpr)\n );\n }\n if (thisArg) {\n let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS);\n let thisType = assert(instance.signature.thisType);\n let thisLocal = flow.addScopedLocal(CommonSymbols.this_, thisType, usedLocals);\n // No need to retain `this` as it can't be reassigned and thus can't become prematurely released\n body.unshift(\n module.local_set(thisLocal.index, thisArg)\n );\n let baseInstance = (classInstance).base;\n if (baseInstance) flow.addScopedAlias(CommonSymbols.super_, baseInstance.type, thisLocal.index);\n } else {\n assert(!instance.signature.thisType);\n }\n\n // Compile omitted arguments with final argument locals blocked. Doesn't need to take care of\n // side-effects within earlier expressions because these already happened on set.\n this.currentFlow = flow;\n for (let i = numArguments; i < numParameters; ++i) {\n let initType = parameterTypes[i];\n let initExpr = this.compileExpression(\n assert(instance.prototype.functionTypeNode.parameters[i].initializer),\n initType,\n Constraints.CONV_IMPLICIT\n );\n let argumentLocal = flow.addScopedLocal(signature.getParameterName(i), initType);\n if (!flow.canOverflow(initExpr, initType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(initExpr, initType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL);\n if (initType.isManaged) {\n flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED);\n body.push(\n module.local_set(argumentLocal.index,\n this.makeRetain(initExpr)\n )\n );\n } else {\n body.push(\n module.local_set(argumentLocal.index, initExpr)\n );\n }\n }\n\n // Compile the called function's body in the scope of the inlined flow\n this.compileFunctionBody(instance, body);\n\n // Free any new scoped locals and reset to the original flow\n if (!flow.is(FlowFlags.TERMINATES)) {\n this.performAutoreleases(flow, body);\n this.finishAutoreleases(flow, body);\n }\n flow.freeScopedLocals();\n var returnType = flow.returnType;\n this.currentFlow = previousFlow;\n\n // Create an outer block that we can break to when returning a value out of order\n var expr = module.block(flow.inlineReturnLabel, body, returnType.toNativeType());\n this.currentType = returnType;\n if (returnType.isManaged) {\n if (immediatelyDropped) {\n expr = this.makeRelease(expr);\n this.currentType = Type.void;\n }\n }\n return expr;\n }\n\n /** Gets the trampoline for the specified function. */\n ensureTrampoline(original: Function): Function {\n // A trampoline is a function that takes a fixed amount of operands with some of them possibly\n // being zeroed. It takes one additional argument denoting the number of actual operands\n // provided to the call, and takes appropriate steps to initialize zeroed operands to their\n // default values using the optional parameter initializers of the original function. Doing so\n // allows calls to functions with optional parameters to circumvent the trampoline when all\n // parameters are provided as a fast route, respectively setting up omitted operands in a proper\n // context otherwise.\n var trampoline = original.trampoline;\n if (trampoline) return trampoline;\n\n var originalSignature = original.signature;\n var originalName = original.internalName;\n var originalParameterTypes = originalSignature.parameterTypes;\n var originalParameterDeclarations = original.prototype.functionTypeNode.parameters;\n var returnType = originalSignature.returnType;\n var thisType = originalSignature.thisType;\n var isInstance = original.is(CommonFlags.INSTANCE);\n\n // arguments excl. `this`, operands incl. `this`\n var minArguments = originalSignature.requiredParameters;\n var minOperands = minArguments;\n var maxArguments = originalParameterTypes.length;\n var maxOperands = maxArguments;\n if (isInstance) {\n ++minOperands;\n ++maxOperands;\n }\n var numOptional = assert(maxOperands - minOperands);\n\n var forwardedOperands = new Array(minOperands);\n var operandIndex = 0;\n\n // forward `this` if applicable\n var module = this.module;\n if (isInstance) {\n forwardedOperands[0] = module.local_get(0, this.options.nativeSizeType);\n operandIndex = 1;\n }\n\n // forward required arguments\n for (let i = 0; i < minArguments; ++i, ++operandIndex) {\n forwardedOperands[operandIndex] = module.local_get(operandIndex, originalParameterTypes[i].toNativeType());\n }\n assert(operandIndex == minOperands);\n\n // create the trampoline element\n var trampolineSignature = new Signature(this.program, originalParameterTypes, returnType, thisType);\n trampolineSignature.requiredParameters = maxArguments;\n trampolineSignature.parameterNames = originalSignature.parameterNames;\n trampoline = new Function(\n original.name + \"|trampoline\",\n original.prototype,\n trampolineSignature,\n original.contextualTypeArguments\n );\n trampoline.set(original.flags | CommonFlags.TRAMPOLINE | CommonFlags.COMPILED);\n original.trampoline = trampoline;\n\n // compile initializers of omitted arguments in scope of the trampoline function\n // this is necessary because initializers might need additional locals and a proper this context\n var previousFlow = this.currentFlow;\n var flow = trampoline.flow;\n this.currentFlow = flow;\n\n // create a br_table switching over the number of optional parameters provided\n var numNames = numOptional + 1; // incl. outer block\n var names = new Array(numNames);\n var ofN = \"of\" + numOptional.toString(10);\n for (let i = 0; i < numNames; ++i) {\n let label = i.toString(10) + ofN;\n names[i] = label;\n }\n var body = module.block(names[0], [\n module.block(\"outOfRange\", [\n module.switch(names, \"outOfRange\",\n // condition is number of provided optional arguments, so subtract required arguments\n minArguments\n ? module.binary(\n BinaryOp.SubI32,\n module.global_get(BuiltinSymbols.argc, NativeType.I32),\n module.i32(minArguments)\n )\n : module.global_get(BuiltinSymbols.argc, NativeType.I32)\n )\n ]),\n module.unreachable()\n ]);\n for (let i = 0; i < numOptional; ++i, ++operandIndex) {\n let type = originalParameterTypes[minArguments + i];\n let declaration = originalParameterDeclarations[minArguments + i];\n let initializer = declaration.initializer;\n let initExpr: ExpressionRef;\n if (initializer) {\n initExpr = module.local_set(operandIndex,\n this.compileExpression(\n initializer,\n type,\n Constraints.CONV_IMPLICIT\n )\n );\n } else {\n this.error(\n DiagnosticCode.Optional_parameter_must_have_an_initializer,\n declaration.range\n );\n initExpr = module.unreachable();\n }\n body = module.block(names[i + 1], [\n body,\n initExpr,\n ]);\n forwardedOperands[operandIndex] = module.local_get(operandIndex, type.toNativeType());\n }\n assert(operandIndex == maxOperands);\n\n var stmts: ExpressionRef[] = [ body ];\n var theCall = module.call(originalName, forwardedOperands, returnType.toNativeType());\n if (returnType != Type.void) {\n this.performAutoreleasesWithValue(flow, theCall, returnType, stmts);\n } else {\n stmts.push(theCall);\n this.performAutoreleases(flow, stmts);\n }\n flow.freeScopedLocals();\n this.currentFlow = previousFlow;\n\n var funcRef = module.addFunction(\n trampoline.internalName,\n this.ensureFunctionType(\n trampolineSignature.parameterTypes,\n returnType,\n thisType\n ),\n typesToNativeTypes(trampoline.additionalLocals),\n module.block(null, stmts, returnType.toNativeType())\n );\n trampoline.finalize(module, funcRef);\n return trampoline;\n }\n\n /** Makes sure that the argument count helper global is present and returns its name. */\n private ensureArgcVar(): string {\n if (!this.argcVar) {\n let module = this.module;\n this.argcVar = module.addGlobal(\n BuiltinSymbols.argc,\n NativeType.I32,\n true,\n module.i32(0)\n );\n }\n return BuiltinSymbols.argc;\n }\n\n /** Makes sure that the argument count helper setter is present and returns its name. */\n private ensureArgcSet(): string {\n if (!this.argcSet) {\n let module = this.module;\n this.argcSet = module.addFunction(BuiltinSymbols.setargc,\n this.ensureFunctionType([ Type.u32 ], Type.void),\n null,\n module.global_set(this.ensureArgcVar(),\n module.local_get(0, NativeType.I32)\n )\n );\n module.addFunctionExport(BuiltinSymbols.setargc, \"__setargc\");\n }\n return BuiltinSymbols.setargc;\n }\n\n // \n\n /** Makes retain call, retaining the expression's value. */\n makeRetain(expr: ExpressionRef): ExpressionRef {\n var retainInstance = this.program.retainInstance;\n this.compileFunction(retainInstance);\n return this.module.call(retainInstance.internalName, [ expr ], this.options.nativeSizeType);\n }\n\n /** Makes a retainRelease call, retaining the new expression's value and releasing the old expression's value, in this order. */\n makeRetainRelease(oldExpr: ExpressionRef, newExpr: ExpressionRef): ExpressionRef {\n // if ((t1=newExpr) != (t2=oldExpr)) {\n // __retain(t1);\n // __release(t2);\n // }, t1\n var module = this.module;\n var flow = this.currentFlow;\n var usizeType = this.options.usizeType;\n var nativeSizeType = this.options.nativeSizeType;\n var temp1 = flow.getTempLocal(usizeType, findUsedLocals(oldExpr));\n var temp2 = flow.getAndFreeTempLocal(usizeType);\n flow.freeTempLocal(temp1);\n return module.block(null, [\n module.if(\n module.binary(nativeSizeType == NativeType.I64 ? BinaryOp.NeI64 : BinaryOp.NeI32,\n module.local_tee(temp1.index, newExpr),\n module.local_tee(temp2.index, oldExpr)\n ),\n module.block(null, [\n module.drop(\n this.makeRetain(module.local_get(temp1.index, nativeSizeType))\n ),\n this.makeRelease(module.local_get(temp2.index, nativeSizeType))\n ])\n ),\n module.local_get(temp1.index, nativeSizeType)\n ], nativeSizeType);\n }\n\n /** Makes a skippedRelease call, ignoring the new expression's value and releasing the old expression's value, in this order. */\n makeSkippedRelease(oldExpr: ExpressionRef, newExpr: ExpressionRef): ExpressionRef {\n // TODO: this helper can be eliminated altogether if the current logic holds\n // (t1=newExpr), __release(oldExpr), t1\n var module = this.module;\n var flow = this.currentFlow;\n var usizeType = this.options.usizeType;\n var nativeSizeType = this.options.nativeSizeType;\n var temp = flow.getAndFreeTempLocal(usizeType, findUsedLocals(oldExpr));\n return module.block(null, [\n module.local_set(temp.index, newExpr),\n this.makeRelease(oldExpr),\n module.local_get(temp.index, nativeSizeType)\n ], nativeSizeType);\n }\n\n /** Makes a release call, releasing the expression's value. Changes the current type to void.*/\n makeRelease(expr: ExpressionRef): ExpressionRef {\n var releaseInstance = this.program.releaseInstance;\n this.compileFunction(releaseInstance);\n return this.module.call(releaseInstance.internalName, [ expr ], NativeType.None);\n }\n\n /** Makes an automatic release call at the end of the current flow. */\n makeAutorelease(expr: ExpressionRef, flow: Flow = this.currentFlow): ExpressionRef {\n // FIXME: loses track of nonNull state?\n return this.module.local_tee(flow.getAutoreleaseLocal(this.options.usizeType).index, expr);\n }\n\n /** Attempts to undo a final autorelease, returning the index of the previously retaining variable or -1 if not possible. */\n undoAutorelease(expr: ExpressionRef, flow: Flow): i32 {\n // NOTE: Can't remove the local.tee completely because it's already compiled\n // and a child of something else. Preventing the final release however should\n // make it optimize away.\n switch (getExpressionId(expr)) {\n case ExpressionId.LocalSet: { // local.tee(__retain(expr))\n if (isLocalTee(expr)) {\n let index = getLocalSetIndex(expr);\n if (flow.isAnyLocalFlag(index, LocalFlags.ANY_RETAINED)) {\n // Assumes that the expression actually belongs to the flow and that\n // top-level autoreleases are never undone. While that's true, it's\n // not necessary to check presence in scopedLocals.\n flow.unsetLocalFlag(index, LocalFlags.ANY_RETAINED);\n return index;\n }\n }\n break;\n }\n case ExpressionId.Block: { // { ..., local.tee(__retain(expr)) }\n if (getBlockName(expr) === null) { // must not be a break target\n let count = getBlockChildCount(expr);\n if (count) {\n return this.undoAutorelease(getBlockChild(expr, count - 1), flow);\n }\n }\n break;\n }\n }\n return -1;\n }\n\n /**\n * Attemps to move a final autorelease from one flow to a parent.\n * It is crucial that from flow hasn't processed autoreleases yet because otherwise the final\n * retain would have been written already.\n */\n moveAutorelease(expr: ExpressionRef, fromInnerFlow: Flow, toOuterFlow: Flow): ExpressionRef {\n // NOTE: While this avoids an unnecessary set of retain and release, it cannot\n // eliminate the now unnecessary temporary local.tee because it is already part of\n // another expression in the tree. But optimizing should collapse locals again.\n var index = this.undoAutorelease(expr, fromInnerFlow);\n return ~index\n ? this.makeAutorelease(expr, toOuterFlow) // undone, can skip the retain\n : this.makeAutorelease(this.makeRetain(expr), toOuterFlow);\n }\n\n /** Performs any queued autoreleases in the specified flow. */\n performAutoreleases(flow: Flow, stmts: ExpressionRef[], clearFlags: bool = true): void {\n var scopedLocals = flow.scopedLocals;\n if (scopedLocals) {\n let module = this.module;\n for (let local of scopedLocals.values()) {\n if (local.is(CommonFlags.SCOPED)) { // otherwise an alias\n let localIndex = local.index;\n if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) {\n if (clearFlags) flow.unsetLocalFlag(localIndex, LocalFlags.ANY_RETAINED);\n stmts.push(\n this.makeRelease(\n module.local_get(localIndex, local.type.toNativeType())\n )\n );\n }\n }\n }\n }\n }\n\n /** Performs any queued autoreleases in the specified flow and returns the value. */\n performAutoreleasesWithValue(\n flow: Flow,\n valueExpr: ExpressionRef,\n valueType: Type,\n stmts: ExpressionRef[] | null = null,\n clearFlags: bool = true\n ): ExpressionRef {\n if (!stmts) stmts = new Array();\n stmts.push(\n this.module.nop()\n );\n var lengthBefore = stmts.length;\n this.performAutoreleases(flow, stmts, clearFlags);\n if (stmts.length > lengthBefore) {\n let nativeType = valueType.toNativeType();\n let temp = flow.getAndFreeTempLocal(valueType);\n if (!flow.canOverflow(valueExpr, valueType)) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED);\n if (flow.isNonnull(valueExpr, valueType)) flow.setLocalFlag(temp.index, LocalFlags.NONNULL);\n let module = this.module;\n stmts[lengthBefore - 1] = module.local_set(temp.index, valueExpr); // nop -> set\n stmts.push(\n module.local_get(temp.index, nativeType) // append get\n );\n return module.block(null, stmts, nativeType);\n } else if (stmts.length > 1) {\n stmts[lengthBefore - 1] = valueExpr; // nop -> value\n return this.module.block(null, stmts, valueType.toNativeType());\n }\n return valueExpr;\n }\n\n /** Finishes any queued top-level autoreleases in the actual function of the specified flow. */\n finishAutoreleases(flow: Flow, stmts: ExpressionRef[]): void {\n var module = this.module;\n if (flow.is(FlowFlags.INLINE_CONTEXT)) {\n // traverse to the top-most flow containing the inlined function's\n // locals as scoped locals and release these instead.\n let parent: Flow | null;\n while (parent = flow.parent) flow = parent;\n this.performAutoreleases(flow, stmts, false);\n } else {\n for (let local of flow.parentFunction.localsByIndex) {\n let localIndex = local.index;\n if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) {\n flow.unsetLocalFlag(localIndex, LocalFlags.ANY_RETAINED);\n stmts.push(\n this.makeRelease(\n module.local_get(localIndex, local.type.toNativeType())\n )\n );\n }\n }\n }\n }\n\n // \n\n /** Creates a direct call to the specified function. */\n makeCallDirect(\n instance: Function,\n operands: ExpressionRef[] | null,\n reportNode: Node,\n immediatelyDropped: bool = false,\n /** Skip the usual autorelease and manage this at the callsite instead. */\n skipAutorelease: bool = false\n ): ExpressionRef {\n if (instance.hasDecorator(DecoratorFlags.INLINE)) {\n assert(!instance.is(CommonFlags.TRAMPOLINE)); // doesn't make sense\n if (this.currentInlineFunctions.includes(instance)) {\n this.warning(\n DiagnosticCode.Function_0_cannot_be_inlined_into_itself,\n reportNode.range, instance.internalName\n );\n } else {\n this.currentInlineFunctions.push(instance);\n let expr: ExpressionRef;\n if (instance.is(CommonFlags.INSTANCE)) {\n let theOperands = assert(operands);\n assert(theOperands.length);\n expr = this.makeCallInline(instance, theOperands.slice(1), theOperands[0], immediatelyDropped);\n } else {\n expr = this.makeCallInline(instance, operands, 0, immediatelyDropped);\n }\n if (this.currentType.isManaged) {\n if (!skipAutorelease) {\n expr = this.makeAutorelease(expr, this.currentFlow);\n } else {\n this.skippedAutoreleases.add(expr);\n }\n }\n this.currentInlineFunctions.pop();\n return expr;\n }\n }\n var numOperands = operands ? operands.length : 0;\n var numArguments = numOperands;\n var minArguments = instance.signature.requiredParameters;\n var minOperands = minArguments;\n var maxArguments = instance.signature.parameterTypes.length;\n var maxOperands = maxArguments;\n if (instance.is(CommonFlags.INSTANCE)) {\n ++minOperands;\n ++maxOperands;\n --numArguments;\n }\n assert(numOperands >= minOperands);\n\n var module = this.module;\n if (!this.compileFunction(instance)) return module.unreachable();\n var returnType = instance.signature.returnType;\n var isCallImport = instance.is(CommonFlags.MODULE_IMPORT);\n\n // fill up omitted arguments with their initializers, if constant, otherwise with zeroes.\n if (numOperands < maxOperands) {\n if (!operands) {\n operands = new Array(maxOperands);\n operands.length = 0;\n }\n let parameterTypes = instance.signature.parameterTypes;\n let parameterNodes = instance.prototype.functionTypeNode.parameters;\n assert(parameterNodes.length == parameterTypes.length);\n let allOptionalsAreConstant = true;\n for (let i = numArguments; i < maxArguments; ++i) {\n let initializer = parameterNodes[i].initializer;\n if (initializer) {\n if (nodeIsConstantValue(initializer.kind)) {\n operands.push(this.compileExpression(\n parameterNodes[i].initializer,\n parameterTypes[i],\n Constraints.CONV_IMPLICIT\n ));\n continue;\n }\n let resolved = this.resolver.resolveExpression(initializer, instance.flow, parameterTypes[i]);\n if (resolved) {\n if (resolved.kind == ElementKind.GLOBAL) {\n let global = resolved;\n if (this.compileGlobal(global)) {\n if (global.is(CommonFlags.INLINED)) {\n operands.push(\n this.compileInlineConstant(global, parameterTypes[i], Constraints.CONV_IMPLICIT)\n );\n } else {\n operands.push(\n this.convertExpression(\n module.global_get(global.internalName, global.type.toNativeType()),\n global.type, parameterTypes[i], false, false, initializer\n )\n );\n }\n continue;\n }\n }\n }\n }\n operands.push(parameterTypes[i].toNativeZero(module));\n allOptionalsAreConstant = false;\n }\n if (!allOptionalsAreConstant) {\n if (!isCallImport) {\n let original = instance;\n instance = this.ensureTrampoline(instance);\n if (!this.compileFunction(instance)) return module.unreachable();\n instance.flow.flags = original.flow.flags;\n let nativeReturnType = returnType.toNativeType();\n let expr = module.call(instance.internalName, operands, nativeReturnType);\n this.currentType = returnType;\n if (returnType.isManaged) {\n if (immediatelyDropped) {\n expr = this.makeRelease(expr);\n this.currentType = Type.void;\n } else if (!skipAutorelease) {\n expr = this.makeAutorelease(expr);\n } else {\n this.skippedAutoreleases.add(expr);\n }\n }\n return module.block(null, [\n module.global_set(this.ensureArgcVar(), module.i32(numArguments)),\n expr\n ], this.currentType.toNativeType());\n }\n }\n }\n\n // If the return value is of a reference type it has not yet been released but is in flight\n // which is equivalent to a skipped autorelease. Hence, insert either a release if it is\n // dropped anyway, preserve the skipped autorelease if explicitly requested or autorelease now.\n var expr = module.call(instance.internalName, operands, returnType.toNativeType());\n this.currentType = returnType;\n if (returnType.isManaged) {\n if (immediatelyDropped) {\n expr = this.makeRelease(expr);\n this.currentType = Type.void;\n } else if (!skipAutorelease) {\n expr = this.makeAutorelease(expr);\n }\n }\n return expr;\n }\n\n /** Compiles an indirect call using an index argument and a signature. */\n compileCallIndirect(\n signature: Signature,\n indexArg: ExpressionRef,\n argumentExpressions: Expression[],\n reportNode: Node,\n thisArg: ExpressionRef = 0,\n immediatelyDropped: bool = false\n ): ExpressionRef {\n var numArguments = argumentExpressions.length;\n\n if (!this.checkCallSignature( // reports\n signature,\n numArguments,\n thisArg != 0,\n reportNode\n )) {\n return this.module.unreachable();\n }\n\n var numArgumentsInclThis = thisArg ? numArguments + 1 : numArguments;\n var operands = new Array(numArgumentsInclThis);\n var index = 0;\n if (thisArg) {\n operands[0] = thisArg;\n index = 1;\n }\n var parameterTypes = signature.parameterTypes;\n for (let i = 0; i < numArguments; ++i, ++index) {\n operands[index] = this.compileExpression(argumentExpressions[i], parameterTypes[i],\n Constraints.CONV_IMPLICIT\n );\n }\n assert(index == numArgumentsInclThis);\n return this.makeCallIndirect(signature, indexArg, operands, immediatelyDropped);\n }\n\n /** Creates an indirect call to the function at `indexArg` in the function table. */\n makeCallIndirect(\n signature: Signature,\n indexArg: ExpressionRef,\n operands: ExpressionRef[] | null = null,\n immediatelyDropped: bool = false\n ): ExpressionRef {\n var numOperands = operands ? operands.length : 0;\n var numArguments = numOperands;\n var minArguments = signature.requiredParameters;\n var minOperands = minArguments;\n var maxArguments = signature.parameterTypes.length;\n var maxOperands = maxArguments;\n if (signature.thisType) {\n ++minOperands;\n ++maxOperands;\n --numArguments;\n }\n assert(numOperands >= minOperands);\n\n this.ensureFunctionType(signature.parameterTypes, signature.returnType, signature.thisType);\n var module = this.module;\n\n // fill up omitted arguments with zeroes\n if (numOperands < maxOperands) {\n if (!operands) {\n operands = new Array(maxOperands);\n operands.length = 0;\n }\n let parameterTypes = signature.parameterTypes;\n for (let i = numArguments; i < maxArguments; ++i) {\n operands.push(parameterTypes[i].toNativeZero(module));\n }\n }\n\n var returnType = signature.returnType;\n var expr = module.call_indirect(indexArg, operands, signature.toSignatureString());\n this.currentType = returnType;\n if (returnType.isManaged) {\n if (immediatelyDropped) {\n expr = this.makeRelease(expr);\n this.currentType = Type.void;\n } else {\n expr = this.makeAutorelease(expr);\n }\n }\n return module.block(null, [\n module.global_set(this.ensureArgcVar(), // might be calling a trampoline\n module.i32(numArguments)\n ),\n expr\n ], this.currentType.toNativeType()); // not necessarily wrapped\n }\n\n compileCommaExpression(\n expression: CommaExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var expressions = expression.expressions;\n var numExpressions = expressions.length;\n var exprs = new Array(numExpressions--);\n for (let i = 0; i < numExpressions; ++i) {\n exprs[i] = this.compileExpression(expressions[i], Type.void, // drop all except last\n Constraints.CONV_IMPLICIT | Constraints.WILL_DROP\n );\n }\n exprs[numExpressions] = this.compileExpression(expressions[numExpressions], contextualType, constraints);\n return this.module.block(null, exprs, this.currentType.toNativeType());\n }\n\n compileElementAccessExpression(\n expression: ElementAccessExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var target = this.resolver.resolveElementAccessExpression(\n expression,\n this.currentFlow,\n contextualType\n ); // reports\n if (!target) return this.module.unreachable();\n switch (target.kind) {\n case ElementKind.CLASS: {\n let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET, this.currentFlow.is(FlowFlags.UNCHECKED_CONTEXT));\n if (!indexedGet) {\n this.error(\n DiagnosticCode.Index_signature_is_missing_in_type_0,\n expression.expression.range, (target).internalName\n );\n return this.module.unreachable();\n }\n let thisArg = this.compileExpression(expression.expression, (target).type,\n Constraints.CONV_IMPLICIT\n );\n return this.compileCallDirect(indexedGet, [\n expression.elementExpression\n ], expression, thisArg, constraints);\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n compileFunctionExpression(\n expression: FunctionExpression,\n contextualSignature: Signature | null,\n constraints: Constraints\n ): ExpressionRef {\n var declaration = expression.declaration.clone(); // generic contexts can have multiple\n assert(!declaration.typeParameters); // function expression cannot be generic\n var flow = this.currentFlow;\n var actualFunction = flow.actualFunction;\n var prototype = new FunctionPrototype(\n declaration.name.text.length\n ? declaration.name.text\n : \"anonymous|\" + (actualFunction.nextAnonymousId++).toString(10),\n actualFunction,\n declaration,\n DecoratorFlags.NONE\n );\n var instance: Function | null;\n var contextualTypeArguments = makeMap(flow.contextualTypeArguments);\n\n // compile according to context. this differs from a normal function in that omitted parameter\n // and return types can be inferred and omitted arguments can be replaced with dummies.\n if (contextualSignature) {\n let signatureNode = prototype.functionTypeNode;\n let parameterNodes = signatureNode.parameters;\n let numPresentParameters = parameterNodes.length;\n\n // must not require more than the maximum number of parameters\n let parameterTypes = contextualSignature.parameterTypes;\n let numParameters = parameterTypes.length;\n if (numPresentParameters > numParameters) {\n this.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n expression.range, numParameters.toString(), numPresentParameters.toString()\n );\n return this.module.unreachable();\n }\n\n // check non-omitted parameter types\n let parameterNames = new Array(numPresentParameters);\n for (let i = 0; i < numPresentParameters; ++i) {\n let parameterNode = parameterNodes[i];\n parameterNames[i] = parameterNode.name.text; // use actual name\n if (!isTypeOmitted(parameterNode.type)) {\n let resolvedType = this.resolver.resolveType(\n parameterNode.type,\n actualFunction.parent,\n contextualTypeArguments\n );\n if (!resolvedType) return this.module.unreachable();\n if (!parameterTypes[i].isStrictlyAssignableTo(resolvedType)) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n parameterNode.range, parameterTypes[i].toString(), resolvedType.toString()\n );\n return this.module.unreachable();\n }\n }\n // any unused parameters are inherited but ignored\n }\n\n // check non-omitted return type\n let returnType = contextualSignature.returnType;\n if (!isTypeOmitted(signatureNode.returnType)) {\n let resolvedType = this.resolver.resolveType(\n signatureNode.returnType,\n actualFunction.parent,\n contextualTypeArguments\n );\n if (!resolvedType) return this.module.unreachable();\n if (\n returnType == Type.void\n ? resolvedType != Type.void\n : !resolvedType.isStrictlyAssignableTo(returnType)\n ) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n signatureNode.returnType.range, resolvedType.toString(), returnType.toString()\n );\n return this.module.unreachable();\n }\n }\n\n // check explicit this type\n let thisType = contextualSignature.thisType;\n let thisTypeNode = signatureNode.explicitThisType;\n if (thisTypeNode) {\n if (!thisType) {\n this.error(\n DiagnosticCode._this_cannot_be_referenced_in_current_location,\n thisTypeNode.range\n );\n return this.module.unreachable();\n }\n let resolvedType = this.resolver.resolveType(\n thisTypeNode,\n actualFunction.parent,\n contextualTypeArguments\n );\n if (!resolvedType) return this.module.unreachable();\n if (!thisType.isStrictlyAssignableTo(resolvedType)) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n thisTypeNode.range, thisType.toString(), resolvedType.toString()\n );\n return this.module.unreachable();\n }\n }\n\n let signature = new Signature(this.program, parameterTypes, returnType, thisType);\n signature.requiredParameters = numParameters; // !\n signature.parameterNames = parameterNames;\n instance = new Function(\n prototype.name,\n prototype,\n signature,\n contextualTypeArguments\n );\n if (!this.compileFunction(instance)) return this.module.unreachable();\n this.currentType = contextualSignature.type;\n\n // otherwise compile like a normal function\n } else {\n instance = this.compileFunctionUsingTypeArguments(\n prototype,\n [],\n contextualTypeArguments\n );\n if (!instance) return this.module.unreachable();\n this.currentType = instance.signature.type;\n }\n\n var index = this.ensureFunctionTableEntry(instance); // reports\n return index < 0\n ? this.module.unreachable()\n : this.module.i32(index);\n }\n\n /** Makes sure the enclosing source file of the specified expression has been compiled. */\n private maybeCompileEnclosingSource(expression: Expression): void {\n var internalPath = expression.range.source.internalPath;\n var filesByName = this.program.filesByName;\n assert(filesByName.has(internalPath));\n var enclosingFile = filesByName.get(internalPath)!;\n if (!enclosingFile.is(CommonFlags.COMPILED)) {\n this.compileFileByPath(internalPath, expression);\n }\n }\n\n /**\n * Compiles an identifier in the specified context.\n * @param retainConstantType Retains the type of inlined constants if `true`, otherwise\n * precomputes them according to context.\n */\n compileIdentifierExpression(\n expression: IdentifierExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n var actualFunction = flow.actualFunction;\n\n // check special keywords first\n switch (expression.kind) {\n case NodeKind.NULL: {\n let options = this.options;\n let classReference = contextualType.classReference;\n if (!classReference) {\n this.currentType = options.usizeType;\n } else {\n this.currentType = classReference.type.asNullable();\n }\n return options.isWasm64\n ? module.i64(0)\n : module.i32(0);\n }\n case NodeKind.TRUE: {\n this.currentType = Type.bool;\n return module.i32(1);\n }\n case NodeKind.FALSE: {\n this.currentType = Type.bool;\n return module.i32(0);\n }\n case NodeKind.THIS: {\n if (actualFunction.is(CommonFlags.INSTANCE)) {\n let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_));\n let classInstance = assert(actualFunction.parent); assert(classInstance.kind == ElementKind.CLASS);\n let nativeSizeType = this.options.nativeSizeType;\n if (actualFunction.is(CommonFlags.CONSTRUCTOR)) {\n if (!flow.is(FlowFlags.ALLOCATES)) {\n flow.set(FlowFlags.ALLOCATES);\n // {\n // if (!this) this = \n // this.a = X\n // this.b = Y\n // return this\n // }\n let stmts: ExpressionRef[] = [\n module.if(\n module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32,\n module.local_get(thisLocal.index, nativeSizeType)\n ),\n module.local_set(thisLocal.index,\n this.makeRetain(\n this.makeAllocation(classInstance)\n )\n )\n )\n ];\n this.makeFieldInitialization(classInstance, stmts);\n stmts.push(\n module.local_get(thisLocal.index, nativeSizeType)\n );\n this.currentType = thisLocal.type;\n return module.block(null, stmts, nativeSizeType);\n }\n }\n // if not a constructor, `this` type can differ\n let thisType = assert(actualFunction.signature.thisType);\n this.currentType = thisType;\n return module.local_get(thisLocal.index, thisType.toNativeType());\n }\n this.error(\n DiagnosticCode._this_cannot_be_referenced_in_current_location,\n expression.range\n );\n this.currentType = this.options.usizeType;\n return module.unreachable();\n }\n case NodeKind.SUPER: {\n let flow = this.currentFlow;\n let actualFunction = flow.actualFunction;\n if (actualFunction.is(CommonFlags.CONSTRUCTOR)) {\n if (!flow.is(FlowFlags.CALLS_SUPER)) {\n // TS1034 in the parser effectively limits this to property accesses\n this.error(\n DiagnosticCode._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class,\n expression.range\n );\n }\n }\n if (flow.is(FlowFlags.INLINE_CONTEXT)) {\n let scopedThis = flow.lookupLocal(CommonSymbols.this_);\n if (scopedThis) {\n let scopedThisClass = assert(scopedThis.type.classReference);\n let base = scopedThisClass.base;\n if (base) {\n this.currentType = base.type;\n return module.local_get(scopedThis.index, base.type.toNativeType());\n }\n }\n }\n if (actualFunction.is(CommonFlags.INSTANCE)) {\n let classInstance = assert(actualFunction.parent); assert(classInstance.kind == ElementKind.CLASS);\n let baseClassInstance = (classInstance).base;\n if (baseClassInstance) {\n let superType = baseClassInstance.type;\n this.currentType = superType;\n return module.local_get(0, superType.toNativeType());\n }\n }\n this.error(\n DiagnosticCode._super_can_only_be_referenced_in_a_derived_class,\n expression.range\n );\n this.currentType = this.options.usizeType;\n return module.unreachable();\n }\n }\n\n this.maybeCompileEnclosingSource(expression);\n\n // otherwise resolve\n var target = this.resolver.resolveIdentifier( // reports\n expression,\n flow,\n this.currentEnum || actualFunction\n );\n if (!target) return module.unreachable();\n\n switch (target.kind) {\n case ElementKind.LOCAL: {\n let type = (target).type;\n assert(type != Type.void);\n if ((target).is(CommonFlags.INLINED)) {\n return this.compileInlineConstant(target, contextualType, constraints);\n }\n let localIndex = (target).index;\n assert(localIndex >= 0);\n if (type.is(TypeFlags.NULLABLE) && flow.isLocalFlag(localIndex, LocalFlags.NONNULL, false)) {\n type = type.nonNullableType;\n }\n this.currentType = type;\n return this.module.local_get(localIndex, type.toNativeType());\n }\n case ElementKind.GLOBAL: {\n if (!this.compileGlobal(target)) { // reports; not yet compiled if a static field\n return this.module.unreachable();\n }\n let type = (target).type;\n assert(type != Type.void);\n if ((target).is(CommonFlags.INLINED)) {\n return this.compileInlineConstant(target, contextualType, constraints);\n }\n this.currentType = type;\n return this.module.global_get((target).internalName, type.toNativeType());\n }\n case ElementKind.ENUMVALUE: { // here: if referenced from within the same enum\n if (!target.is(CommonFlags.COMPILED)) {\n this.error(\n DiagnosticCode.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums,\n expression.range\n );\n this.currentType = Type.i32;\n return this.module.unreachable();\n }\n this.currentType = Type.i32;\n if ((target).is(CommonFlags.INLINED)) {\n assert((target).constantValueKind == ConstantValueKind.INTEGER);\n return this.module.i32(i64_low((target).constantIntegerValue));\n }\n return this.module.global_get((target).internalName, NativeType.I32);\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n let instance = this.resolver.resolveFunction(\n target,\n null,\n makeMap(flow.contextualTypeArguments)\n );\n if (!(instance && this.compileFunction(instance))) return module.unreachable();\n let index = this.ensureFunctionTableEntry(instance);\n this.currentType = instance.signature.type;\n return this.module.i32(index);\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return this.module.unreachable();\n }\n\n compileInstanceOfExpression(\n expression: InstanceOfExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n // NOTE that this differs from TypeScript in that the rhs is a type, not an expression. at the\n // time of implementation, this seemed more useful because dynamic rhs expressions are not\n // possible in AS anyway. also note that the code generated below must preserve side-effects of\n // the LHS expression even when the result is a constant, i.e. return a block dropping `expr`.\n var expr = this.compileExpression(expression.expression, this.options.usizeType);\n var actualType = this.currentType;\n var expectedType = this.resolver.resolveType(expression.isType, this.currentFlow.actualFunction);\n this.currentType = Type.bool;\n if (!expectedType) return module.unreachable();\n\n // instanceof - must be exact\n if (!expectedType.is(TypeFlags.REFERENCE)) {\n return module.block(null, [\n module.drop(expr),\n module.i32(actualType == expectedType ? 1 : 0)\n ], NativeType.I32);\n }\n\n // instanceof - always false\n if (!actualType.is(TypeFlags.REFERENCE)) {\n return module.block(null, [\n module.drop(expr),\n module.i32(0)\n ], NativeType.I32);\n }\n\n // both LHS and RHS are references now\n var nativeSizeType = actualType.toNativeType();\n\n // instanceof - LHS must be != 0\n if (actualType.is(TypeFlags.NULLABLE) && !expectedType.is(TypeFlags.NULLABLE)) {\n\n // downcast - check statically\n if (actualType.nonNullableType.isAssignableTo(expectedType)) {\n return module.binary(\n nativeSizeType == NativeType.I64\n ? BinaryOp.NeI64\n : BinaryOp.NeI32,\n expr,\n actualType.toNativeZero(module)\n );\n }\n\n // upcast - check dynamically\n if (expectedType.isAssignableTo(actualType)) {\n let program = this.program;\n if (!(actualType.isUnmanaged || expectedType.isUnmanaged)) {\n let flow = this.currentFlow;\n let tempLocal = flow.getAndFreeTempLocal(actualType);\n let instanceofInstance = assert(program.instanceofInstance);\n this.compileFunction(instanceofInstance);\n return module.if(\n module.unary(\n nativeSizeType == NativeType.I64\n ? UnaryOp.EqzI64\n : UnaryOp.EqzI32,\n module.local_tee(tempLocal.index, expr),\n ),\n module.i32(0),\n this.makeCallDirect(instanceofInstance, [\n module.local_get(tempLocal.index, nativeSizeType),\n module.i32(expectedType.classReference!.id)\n ], expression)\n );\n } else {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n }\n }\n\n // either none or both nullable\n } else {\n\n // downcast - check statically\n if (actualType.isAssignableTo(expectedType)) {\n return module.block(null, [\n this.convertExpression(expr, actualType, Type.void, false, false, expression.expression),\n module.i32(1)\n ], NativeType.I32);\n\n // upcast - check dynamically\n } else if (expectedType.isAssignableTo(actualType)) {\n let program = this.program;\n if (!(actualType.isUnmanaged || expectedType.isUnmanaged)) {\n // FIXME: the temp local and the if can be removed here once flows\n // perform null checking, which would error earlier when checking\n // uninitialized (thus zero) `var a: A` to be an instance of something.\n let flow = this.currentFlow;\n let tempLocal = flow.getAndFreeTempLocal(actualType);\n let instanceofInstance = assert(program.instanceofInstance);\n this.compileFunction(instanceofInstance);\n return module.if(\n module.unary(\n nativeSizeType == NativeType.I64\n ? UnaryOp.EqzI64\n : UnaryOp.EqzI32,\n module.local_tee(tempLocal.index, expr),\n ),\n module.i32(0),\n this.makeCallDirect(instanceofInstance, [\n module.local_get(tempLocal.index, nativeSizeType),\n module.i32(expectedType.classReference!.id)\n ], expression)\n );\n } else {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n }\n }\n }\n\n // false\n return module.block(null, [\n module.drop(expr),\n module.i32(0)\n ], NativeType.I32);\n }\n\n compileLiteralExpression(\n expression: LiteralExpression,\n contextualType: Type,\n constraints: Constraints,\n implicitlyNegate: bool = false\n ): ExpressionRef {\n var module = this.module;\n switch (expression.literalKind) {\n case LiteralKind.ARRAY: {\n assert(!implicitlyNegate);\n let classType = contextualType.classReference;\n if (classType) {\n if (classType.prototype == this.program.arrayPrototype) {\n return this.compileArrayLiteral(\n assert(classType.typeArguments)[0],\n (expression).elementExpressions,\n constraints,\n expression\n );\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n case LiteralKind.FLOAT: {\n let floatValue = (expression).value;\n if (implicitlyNegate) {\n floatValue = -floatValue;\n }\n if (contextualType == Type.f32) {\n return module.f32(floatValue);\n }\n this.currentType = Type.f64;\n return module.f64(floatValue);\n }\n case LiteralKind.INTEGER: {\n let intValue = (expression).value;\n if (implicitlyNegate) {\n intValue = i64_sub(\n i64_new(0),\n intValue\n );\n }\n let type = this.resolver.determineIntegerLiteralType(intValue, contextualType);\n this.currentType = type;\n switch (type.kind) {\n case TypeKind.ISIZE: if (!this.options.isWasm64) return module.i32(i64_low(intValue));\n case TypeKind.I64: return module.i64(i64_low(intValue), i64_high(intValue));\n case TypeKind.USIZE: if (!this.options.isWasm64) return module.i32(i64_low(intValue));\n case TypeKind.U64: return module.i64(i64_low(intValue), i64_high(intValue));\n case TypeKind.F32: return module.f32(i64_to_f32(intValue));\n case TypeKind.F64: return module.f64(i64_to_f64(intValue));\n default: return module.i32(i64_low(intValue));\n }\n }\n case LiteralKind.STRING: {\n assert(!implicitlyNegate);\n return this.compileStringLiteral(expression);\n }\n case LiteralKind.OBJECT: {\n assert(!implicitlyNegate);\n return this.compileObjectLiteral(expression, contextualType);\n }\n // case LiteralKind.REGEXP:\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n this.currentType = contextualType;\n return module.unreachable();\n }\n\n compileStringLiteral(expression: StringLiteralExpression): ExpressionRef {\n return this.ensureStaticString(expression.value);\n }\n\n compileArrayLiteral(\n elementType: Type,\n expressions: (Expression | null)[],\n constraints: Constraints,\n reportNode: Node\n ): ExpressionRef {\n var module = this.module;\n var program = this.program;\n var arrayPrototype = assert(program.arrayPrototype);\n var arrayInstance = assert(this.resolver.resolveClass(arrayPrototype, [ elementType ]));\n var arrayBufferInstance = assert(program.arrayBufferInstance);\n var arrayType = arrayInstance.type;\n var flow = this.currentFlow;\n\n // block those here so compiling expressions doesn't conflict\n var tempThis = flow.getTempLocal(arrayType);\n var tempDataStart = flow.getTempLocal(arrayBufferInstance.type);\n\n // compile value expressions and find out whether all are constant\n var length = expressions.length;\n var values = new Array(length);\n var isStatic = true;\n var nativeElementType = elementType.toNativeType();\n for (let i = 0; i < length; ++i) {\n let expression = expressions[i];\n let expr = expression\n ? module.precomputeExpression(\n this.compileExpression(expression, elementType,\n Constraints.CONV_IMPLICIT\n )\n )\n : elementType.toNativeZero(module);\n if (getExpressionId(expr) == ExpressionId.Const) {\n assert(getExpressionType(expr) == nativeElementType);\n } else {\n isStatic = false;\n }\n values[i] = expr;\n }\n\n // if the array is static, make a static arraybuffer segment\n if (isStatic) {\n flow.freeTempLocal(tempThis);\n flow.freeTempLocal(tempDataStart);\n\n let runtimeHeaderSize = program.runtimeHeaderSize;\n let bufferSegment = this.ensureStaticArrayBuffer(elementType, values);\n let bufferAddress = i64_add(bufferSegment.offset, i64_new(runtimeHeaderSize));\n\n // make both the buffer and array header static if assigned to a global. this can't be done\n // if inside of a function because each invocation must create a new array reference then.\n if (constraints & Constraints.PREFER_STATIC) {\n let arraySegment = this.ensureStaticArrayHeader(elementType, bufferSegment);\n let arrayAddress = i64_add(arraySegment.offset, i64_new(runtimeHeaderSize));\n this.currentType = arrayType;\n return program.options.isWasm64\n ? this.module.i64(i64_low(arrayAddress), i64_high(arrayAddress))\n : this.module.i32(i64_low(arrayAddress));\n\n // otherwise allocate a new array header and make it wrap a copy of the static buffer\n } else {\n // makeArray(length, alignLog2, classId, staticBuffer)\n let expr = this.makeCallDirect(program.allocArrayInstance, [\n module.i32(length),\n program.options.isWasm64\n ? module.i64(elementType.alignLog2)\n : module.i32(elementType.alignLog2),\n module.i32(arrayInstance.id),\n program.options.isWasm64\n ? module.i64(i64_low(bufferAddress), i64_high(bufferAddress))\n : module.i32(i64_low(bufferAddress))\n ], reportNode);\n this.currentType = arrayType;\n return this.makeAutorelease(this.makeRetain(expr));\n }\n }\n\n // otherwise compile an explicit instantiation with indexed sets\n var setter = arrayInstance.lookupOverload(OperatorKind.INDEXED_SET, true);\n if (!setter) {\n flow.freeTempLocal(tempThis);\n flow.freeTempLocal(tempDataStart);\n this.error(\n DiagnosticCode.Index_signature_in_type_0_only_permits_reading,\n reportNode.range, arrayInstance.internalName\n );\n this.currentType = arrayType;\n return module.unreachable();\n }\n var nativeArrayType = arrayType.toNativeType();\n\n var stmts = new Array();\n // tempThis = makeArray(length, alignLog2, classId, source = 0)\n stmts.push(\n module.local_set(tempThis.index,\n this.makeCallDirect(program.allocArrayInstance, [\n module.i32(length),\n program.options.isWasm64\n ? module.i64(elementType.alignLog2)\n : module.i32(elementType.alignLog2),\n module.i32(arrayInstance.id),\n program.options.isWasm64\n ? module.i64(0)\n : module.i32(0)\n ], reportNode),\n )\n );\n // tempData = tempThis.dataStart\n var dataStart = assert(arrayInstance.lookupInSelf(\"dataStart\"));\n assert(dataStart.kind == ElementKind.FIELD);\n stmts.push(\n module.local_set(tempDataStart.index,\n module.load(arrayType.byteSize, false,\n module.local_get(tempThis.index, nativeArrayType),\n nativeArrayType,\n (dataStart).memoryOffset\n )\n )\n );\n var isManaged = elementType.isManaged;\n for (let i = 0, alignLog2 = elementType.alignLog2; i < length; ++i) {\n let valueExpr = values[i];\n if (isManaged) {\n // value = __retain(value)\n valueExpr = this.makeRetain(valueExpr);\n }\n // store(tempData, value, immOffset)\n stmts.push(\n module.store(elementType.byteSize,\n module.local_get(tempDataStart.index, nativeArrayType),\n valueExpr,\n nativeElementType,\n i << alignLog2\n )\n );\n }\n // -> tempThis\n stmts.push(\n module.local_get(tempThis.index, nativeArrayType)\n );\n flow.freeTempLocal(tempThis);\n flow.freeTempLocal(tempDataStart);\n this.currentType = arrayType;\n return module.block(null, stmts, nativeArrayType);\n }\n\n compileObjectLiteral(expression: ObjectLiteralExpression, contextualType: Type): ExpressionRef {\n var module = this.module;\n\n // contextual type must be a class\n var classReference = contextualType.classReference;\n if (!classReference || classReference.is(CommonFlags.ABSTRACT)) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n expression.range, \"\", contextualType.toString()\n );\n return module.unreachable();\n }\n\n // if present, check that the constructor is compatible with object literals\n var ctor = classReference.constructorInstance;\n if (ctor) {\n // TODO: if the constructor requires parameters, check whether these are given as part of the\n // object literal and use them to call the ctor while not generating a store.\n if (ctor.signature.requiredParameters) {\n this.error(\n DiagnosticCode.Constructor_of_class_0_must_not_require_any_arguments,\n expression.range, classReference.toString()\n );\n return module.unreachable();\n }\n if (ctor.is(CommonFlags.PRIVATE)) {\n this.error(\n DiagnosticCode.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration,\n expression.range, classReference.toString()\n );\n return module.unreachable();\n }\n if (ctor.is(CommonFlags.PROTECTED)) {\n this.error(\n DiagnosticCode.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration,\n expression.range, classReference.toString()\n );\n return module.unreachable();\n }\n if (ctor.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(expression);\n }\n\n // check and compile field values\n var names = expression.names;\n var numNames = names.length;\n var values = expression.values;\n var members = classReference.members;\n var hasErrors = false;\n var exprs = new Array(numNames + 2);\n var flow = this.currentFlow;\n var tempLocal = flow.getAutoreleaseLocal(this.options.usizeType);\n assert(numNames == values.length);\n for (let i = 0, k = numNames; i < k; ++i) {\n let member = members ? members.get(names[i].text) : null;\n if (!member || member.kind != ElementKind.FIELD) {\n this.error(\n DiagnosticCode.Property_0_does_not_exist_on_type_1,\n names[i].range, names[i].text, classReference.toString()\n );\n hasErrors = true;\n continue;\n }\n let type = (member).type;\n exprs[i + 1] = this.module.store( // TODO: handle setters as well\n type.byteSize,\n this.module.local_get(tempLocal.index, this.options.nativeSizeType),\n this.compileExpression(values[i], (member).type, Constraints.CONV_IMPLICIT),\n type.toNativeType(),\n (member).memoryOffset\n );\n }\n this.currentType = classReference.type.nonNullableType;\n if (hasErrors) return module.unreachable();\n\n // allocate a new instance first and assign 'this' to the temp. local\n exprs[0] = module.local_set(\n tempLocal.index,\n this.makeRetain(\n this.makeAllocation(classReference)\n )\n );\n\n // once all field values have been set, return 'this'\n exprs[exprs.length - 1] = module.local_get(tempLocal.index, this.options.nativeSizeType);\n\n this.currentType = classReference.type;\n return module.block(null, exprs, this.options.nativeSizeType);\n }\n\n compileNewExpression(\n expression: NewExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n\n // obtain the class being instantiated\n var target = this.resolver.resolveExpression( // reports\n expression.expression,\n flow\n );\n if (!target) return module.unreachable();\n if (target.kind != ElementKind.CLASS_PROTOTYPE) {\n this.error(\n DiagnosticCode.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature,\n expression.expression.range\n );\n return this.module.unreachable();\n }\n var classPrototype = target;\n var classInstance: Class | null = null;\n var typeArguments = expression.typeArguments;\n var classReference: Class | null;\n if (\n !typeArguments &&\n (classReference = contextualType.classReference) !== null &&\n classReference.is(CommonFlags.GENERIC)\n ) {\n classInstance = this.resolver.resolveClass(\n classPrototype,\n classReference.typeArguments,\n makeMap(flow.contextualTypeArguments)\n );\n } else {\n classInstance = this.resolver.resolveClassInclTypeArguments(\n classPrototype,\n typeArguments,\n flow.actualFunction.parent, // relative to caller\n makeMap(flow.contextualTypeArguments),\n expression\n );\n }\n if (!classInstance) return module.unreachable();\n if (contextualType == Type.void) constraints |= Constraints.WILL_DROP;\n return this.compileInstantiate(classInstance, expression.arguments, constraints, expression);\n }\n\n /** Gets the compiled constructor of the specified class or generates one if none is present. */\n ensureConstructor(classInstance: Class, reportNode: Node): Function {\n var instance = classInstance.constructorInstance;\n if (instance) {\n // do not attempt to compile it if inlined anyway\n if (!instance.hasDecorator(DecoratorFlags.INLINE)) this.compileFunction(instance);\n return instance;\n }\n\n // clone base constructor if a derived class\n var baseClass = classInstance.base;\n if (baseClass) {\n let baseCtor = this.ensureConstructor(baseClass, reportNode);\n instance = new Function(\n CommonSymbols.constructor,\n new FunctionPrototype(\n CommonSymbols.constructor,\n classInstance,\n // declaration is important, i.e. to access optional parameter initializers\n (baseCtor.declaration).clone()\n ),\n baseCtor.signature,\n null\n );\n\n // otherwise make a default constructor\n } else {\n instance = new Function(\n CommonSymbols.constructor,\n new FunctionPrototype(\n CommonSymbols.constructor,\n classInstance,\n this.program.makeNativeFunctionDeclaration(CommonSymbols.constructor,\n CommonFlags.INSTANCE | CommonFlags.CONSTRUCTOR\n )\n ),\n new Signature(this.program, null, classInstance.type, classInstance.type),\n null\n );\n }\n\n instance.internalName = classInstance.internalName + INSTANCE_DELIMITER + \"constructor\";\n instance.set(CommonFlags.COMPILED);\n instance.prototype.setResolvedInstance(\"\", instance);\n classInstance.constructorInstance = instance;\n var previousFlow = this.currentFlow;\n var flow = instance.flow;\n this.currentFlow = flow;\n\n // generate body\n var signature = instance.signature;\n var module = this.module;\n var nativeSizeType = this.options.nativeSizeType;\n var stmts = new Array();\n\n // {\n // if (!this) this = \n // IF_DERIVED: this = super(this, ...args)\n // this.a = X\n // this.b = Y\n // return this\n // }\n var allocExpr = this.makeAllocation(classInstance);\n if (classInstance.type.isManaged) allocExpr = this.makeRetain(allocExpr);\n stmts.push(\n module.if(\n module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32,\n module.local_get(0, nativeSizeType)\n ),\n module.local_set(0, allocExpr)\n )\n );\n if (baseClass) {\n let parameterTypes = signature.parameterTypes;\n let numParameters = parameterTypes.length;\n let operands = new Array(1 + numParameters);\n operands[0] = module.local_get(0, nativeSizeType);\n for (let i = 0; i < numParameters; ++i) {\n operands[i + 1] = module.local_get(i + 1, parameterTypes[i].toNativeType());\n }\n // TODO: base constructor might be inlined, but makeCallDirect can't do this\n stmts.push(\n module.local_set(0,\n this.makeCallDirect(assert(baseClass.constructorInstance), operands, reportNode, false, true)\n )\n );\n }\n this.makeFieldInitialization(classInstance, stmts);\n var body = this.performAutoreleasesWithValue(flow, module.local_get(0, nativeSizeType), classInstance.type, stmts);\n flow.freeScopedLocals();\n this.currentFlow = previousFlow;\n\n // make the function\n var typeRef = this.ensureFunctionType(signature.parameterTypes, signature.returnType, signature.thisType);\n var locals = instance.localsByIndex;\n var varTypes = new Array(); // of temp. vars added while compiling initializers\n var numOperands = 1 + signature.parameterTypes.length;\n var numLocals = locals.length;\n if (numLocals > numOperands) {\n for (let i = numOperands; i < numLocals; ++i) varTypes.push(locals[i].type.toNativeType());\n }\n var funcRef = module.addFunction(instance.internalName, typeRef, varTypes, body);\n instance.finalize(module, funcRef);\n return instance;\n }\n\n compileInstantiate(\n /** Class to instantiate. */\n classInstance: Class,\n /** Constructor arguments. */\n argumentExpressions: Expression[],\n /** Contextual flags. */\n constraints: Constraints,\n /** Node to report on. */\n reportNode: Node\n ): ExpressionRef {\n var ctor = this.ensureConstructor(classInstance, reportNode);\n if (ctor.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(reportNode);\n var expr = this.compileCallDirect( // no need for another autoreleased local\n ctor,\n argumentExpressions,\n reportNode,\n this.options.usizeType.toNativeZero(this.module),\n constraints\n );\n if (getExpressionType(expr) != NativeType.None) { // possibly IMM_DROPPED\n this.currentType = classInstance.type; // important because a super ctor could be called\n }\n return expr;\n }\n\n /**\n * Compiles a property access in the specified context.\n * @param retainConstantType Retains the type of inlined constants if `true`, otherwise\n * precomputes them according to context.\n */\n compilePropertyAccessExpression(\n propertyAccess: PropertyAccessExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n\n this.maybeCompileEnclosingSource(propertyAccess);\n\n var target = this.resolver.resolvePropertyAccessExpression(propertyAccess, flow, contextualType); // reports\n if (!target) return module.unreachable();\n if (target.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(propertyAccess);\n\n switch (target.kind) {\n case ElementKind.GLOBAL: { // static field\n if (!this.compileGlobal(target)) { // reports; not yet compiled if a static field\n return module.unreachable();\n }\n let globalType = (target).type;\n assert(globalType != Type.void);\n if ((target).is(CommonFlags.INLINED)) {\n return this.compileInlineConstant(target, contextualType, constraints);\n }\n this.currentType = globalType;\n return module.global_get((target).internalName, globalType.toNativeType());\n }\n case ElementKind.ENUMVALUE: { // enum value\n let theEnum = assert((target).parent); assert(theEnum.kind == ElementKind.ENUM);\n if (!this.compileEnum(theEnum)) {\n this.currentType = Type.i32;\n return this.module.unreachable();\n }\n this.currentType = Type.i32;\n if ((target).is(CommonFlags.INLINED)) {\n assert((target).constantValueKind == ConstantValueKind.INTEGER);\n return module.i32(i64_low((target).constantIntegerValue));\n }\n return module.global_get((target).internalName, NativeType.I32);\n }\n case ElementKind.FIELD: { // instance field\n assert((target).memoryOffset >= 0);\n let thisExpr = this.compileExpression(assert(this.resolver.currentThisExpression), this.options.usizeType);\n this.currentType = (target).type;\n return module.load(\n (target).type.byteSize,\n (target).type.is(TypeFlags.SIGNED | TypeFlags.INTEGER),\n thisExpr,\n (target).type.toNativeType(),\n (target).memoryOffset\n );\n }\n case ElementKind.PROPERTY_PROTOTYPE: {// static property\n let getterPrototype = (target).getterPrototype;\n if (getterPrototype) {\n let getter = this.resolver.resolveFunction(getterPrototype, null);\n if (getter) return this.compileCallDirect(getter, [], propertyAccess, 0);\n }\n return module.unreachable();\n }\n case ElementKind.PROPERTY: { // instance property\n let getterInstance = assert((target).getterInstance);\n return this.compileCallDirect(getterInstance, [], propertyAccess,\n this.compileExpression(assert(this.resolver.currentThisExpression), this.options.usizeType)\n );\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n let prototype = target;\n\n if (prototype.is(CommonFlags.STATIC)) {\n let instance = this.compileFunctionUsingTypeArguments(\n prototype,\n [],\n makeMap(),\n propertyAccess,\n );\n if (instance == null) {\n return module.unreachable();\n } else {\n this.currentType = instance.type;\n return module.i32(this.ensureFunctionTableEntry(instance));\n }\n }\n\n this.error(\n DiagnosticCode.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set,\n propertyAccess.range, prototype.name\n );\n return module.unreachable();\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n propertyAccess.range\n );\n return module.unreachable();\n }\n\n compileTernaryExpression(\n expression: TernaryExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var ifThen = expression.ifThen;\n var ifElse = expression.ifElse;\n var outerFlow = this.currentFlow;\n\n var condExpr = this.module.precomputeExpression(\n this.makeIsTrueish(\n this.compileExpression(expression.condition, Type.bool),\n this.currentType\n )\n );\n\n // Try to eliminate unnecesssary branches if the condition is constant\n if (\n getExpressionId(condExpr) == ExpressionId.Const &&\n getExpressionType(condExpr) == NativeType.I32\n ) {\n return getConstValueI32(condExpr)\n ? this.compileExpression(ifThen, contextualType)\n : this.compileExpression(ifElse, contextualType);\n }\n\n var inheritedConstraints = constraints & Constraints.WILL_RETAIN;\n\n var ifThenFlow = outerFlow.fork();\n this.currentFlow = ifThenFlow;\n var ifThenExpr = this.compileExpression(ifThen, contextualType, inheritedConstraints);\n var ifThenType = this.currentType;\n var IfThenAutoreleaseSkipped = this.skippedAutoreleases.has(ifThenExpr);\n\n var ifElseFlow = outerFlow.fork();\n this.currentFlow = ifElseFlow;\n var ifElseExpr = this.compileExpression(ifElse, contextualType, inheritedConstraints);\n var ifElseType = this.currentType;\n var ifElseAutoreleaseSkipped = this.skippedAutoreleases.has(ifElseExpr);\n\n var commonType = Type.commonDenominator(ifThenType, ifElseType, false);\n if (!commonType) {\n this.error(\n DiagnosticCode.Type_0_is_not_assignable_to_type_1,\n ifElse.range, ifElseType.toString(), ifThenType.toString()\n );\n this.currentType = contextualType;\n return this.module.unreachable();\n }\n ifThenExpr = this.convertExpression(\n ifThenExpr,\n ifThenType, commonType,\n false, false,\n ifThen\n );\n ifElseExpr = this.convertExpression(\n ifElseExpr,\n ifElseType, commonType,\n false, false,\n ifElse\n );\n this.currentType = commonType;\n\n if (IfThenAutoreleaseSkipped != ifElseAutoreleaseSkipped) { // unify to both skipped\n if (!IfThenAutoreleaseSkipped) {\n ifThenExpr = this.makeRetain(ifThenExpr);\n IfThenAutoreleaseSkipped = true;\n } else {\n ifElseExpr = this.makeRetain(ifElseExpr);\n ifElseAutoreleaseSkipped = true;\n }\n } else if (!IfThenAutoreleaseSkipped && commonType.isManaged) { // keep alive a little longer\n // if (!(constraints & Constraints.WILL_RETAIN)) {\n ifThenExpr = this.moveAutorelease(ifThenExpr, ifThenFlow, outerFlow);\n ifElseExpr = this.moveAutorelease(ifElseExpr, ifElseFlow, outerFlow);\n // }\n }\n\n ifThenExpr = this.performAutoreleasesWithValue(ifThenFlow, ifThenExpr, commonType);\n ifThenFlow.freeScopedLocals();\n\n ifElseExpr = this.performAutoreleasesWithValue(ifElseFlow, ifElseExpr, commonType);\n ifElseFlow.freeScopedLocals();\n\n this.currentFlow = outerFlow;\n outerFlow.inheritMutual(ifThenFlow, ifElseFlow);\n\n var expr = this.module.if(condExpr, ifThenExpr, ifElseExpr);\n assert(IfThenAutoreleaseSkipped == ifElseAutoreleaseSkipped);\n if (IfThenAutoreleaseSkipped) this.skippedAutoreleases.add(expr);\n return expr;\n }\n\n compileUnaryPostfixExpression(\n expression: UnaryPostfixExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n\n // make a getter for the expression (also obtains the type)\n var getValue = this.compileExpression( // reports\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // shortcut if compiling the getter already failed\n if (getExpressionId(getValue) == ExpressionId.Unreachable) return getValue;\n\n // if the value isn't dropped, a temp. local is required to remember the original value\n var tempLocal: Local | null = null;\n if (contextualType != Type.void) {\n tempLocal = flow.getTempLocal(this.currentType);\n getValue = module.local_tee(\n tempLocal.index,\n getValue\n );\n }\n\n var expr: ExpressionRef;\n\n switch (expression.operator) {\n case Token.PLUS_PLUS: {\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(\n BinaryOp.AddI32,\n getValue,\n module.i32(1)\n );\n break;\n }\n case TypeKind.USIZE: {\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.POSTFIX_INC);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, getValue, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n }\n case TypeKind.ISIZE: {\n let options = this.options;\n expr = module.binary(\n options.isWasm64\n ? BinaryOp.AddI64\n : BinaryOp.AddI32,\n getValue,\n this.currentType.toNativeOne(module)\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(\n BinaryOp.AddI64,\n getValue,\n module.i64(1)\n );\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(\n BinaryOp.AddF32,\n getValue,\n module.f32(1)\n );\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(\n BinaryOp.AddF64,\n getValue,\n module.f64(1)\n );\n break;\n }\n default: {\n assert(false);\n return module.unreachable();\n }\n }\n break;\n }\n case Token.MINUS_MINUS: {\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(\n BinaryOp.SubI32,\n getValue,\n module.i32(1)\n );\n break;\n }\n case TypeKind.USIZE: {\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.POSTFIX_DEC);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, getValue, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n }\n case TypeKind.ISIZE: {\n let options = this.options;\n expr = module.binary(\n options.isWasm64\n ? BinaryOp.SubI64\n : BinaryOp.SubI32,\n getValue,\n this.currentType.toNativeOne(module)\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(\n BinaryOp.SubI64,\n getValue,\n module.i64(1)\n );\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(\n BinaryOp.SubF32,\n getValue,\n module.f32(1)\n );\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(\n BinaryOp.SubF64,\n getValue,\n module.f64(1)\n );\n break;\n }\n default: {\n assert(false);\n return module.unreachable();\n }\n }\n break;\n }\n default: {\n assert(false);\n return module.unreachable();\n }\n }\n\n var resolver = this.resolver;\n var target = resolver.resolveExpression(expression.operand, flow); // reports\n\n // simplify if dropped anyway\n if (!tempLocal) {\n this.currentType = Type.void;\n if (!target) return module.unreachable();\n return this.makeAssignment(\n target,\n expr,\n expression.operand,\n resolver.currentThisExpression,\n resolver.currentElementExpression,\n false\n );\n } else if (!target) {\n return module.unreachable();\n }\n\n // otherwise use the temp. local for the intermediate value (always possibly overflows)\n var setValue = this.makeAssignment(\n target,\n expr, // includes a tee of getValue to tempLocal\n expression.operand,\n resolver.currentThisExpression,\n resolver.currentElementExpression,\n false\n );\n\n this.currentType = tempLocal.type;\n flow.freeTempLocal(tempLocal);\n var nativeType = tempLocal.type.toNativeType();\n\n return module.block(null, [\n setValue,\n module.local_get(tempLocal.index, nativeType)\n ], nativeType); // result of 'x++' / 'x--' might overflow\n }\n\n compileUnaryPrefixExpression(\n expression: UnaryPrefixExpression,\n contextualType: Type,\n constraints: Constraints\n ): ExpressionRef {\n var module = this.module;\n var compound = false;\n var expr: ExpressionRef;\n\n switch (expression.operator) {\n case Token.PLUS: {\n expr = this.compileExpression(\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.PLUS);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n\n // nop\n break;\n }\n case Token.MINUS: {\n if (expression.operand.kind == NodeKind.LITERAL && (\n (expression.operand).literalKind == LiteralKind.INTEGER ||\n (expression.operand).literalKind == LiteralKind.FLOAT\n )) {\n // implicitly negate integer and float literals. also enables proper checking of literal ranges.\n expr = this.compileLiteralExpression(expression.operand, contextualType, Constraints.NONE, true);\n // compileExpression normally does this:\n if (this.options.sourceMap) this.addDebugLocation(expr, expression.range);\n break;\n }\n\n expr = this.compileExpression(\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.MINUS);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.SubI32, module.i32(0), expr);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.SubI64\n : BinaryOp.SubI32,\n this.currentType.toNativeZero(module),\n expr\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.SubI64, module.i64(0), expr);\n break;\n }\n case TypeKind.F32: {\n expr = module.unary(UnaryOp.NegF32, expr);\n break;\n }\n case TypeKind.F64: {\n expr = module.unary(UnaryOp.NegF64, expr);\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.PLUS_PLUS: {\n compound = true;\n expr = this.compileExpression(\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.PREFIX_INC);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.AddI32, expr, this.module.i32(1));\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.AddI64\n : BinaryOp.AddI32,\n expr,\n this.currentType.toNativeOne(module)\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.AddI64, expr, module.i64(1));\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.AddF32, expr, module.f32(1));\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.AddF64, expr, module.f64(1));\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.MINUS_MINUS: {\n compound = true;\n expr = this.compileExpression(\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.PREFIX_DEC);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.SubI32, expr, module.i32(1));\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.SubI64\n : BinaryOp.SubI32,\n expr,\n this.currentType.toNativeOne(module)\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.SubI64, expr, module.i64(1));\n break;\n }\n case TypeKind.F32: {\n expr = module.binary(BinaryOp.SubF32, expr, module.f32(1));\n break;\n }\n case TypeKind.F64: {\n expr = module.binary(BinaryOp.SubF64, expr, module.f64(1));\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.EXCLAMATION: {\n expr = this.compileExpression(\n expression.operand,\n contextualType.exceptVoid,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.NOT);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n // allow '!' for references even without an overload\n }\n\n expr = this.makeIsFalseish(expr, this.currentType);\n this.currentType = Type.bool;\n break;\n }\n case Token.TILDE: {\n expr = this.compileExpression(\n expression.operand,\n contextualType == Type.void\n ? Type.i32\n : contextualType.is(TypeFlags.FLOAT)\n ? Type.i64\n : contextualType,\n Constraints.NONE\n );\n\n // check operator overload\n if (this.currentType.is(TypeFlags.REFERENCE)) {\n let classReference = this.currentType.classReference;\n if (classReference) {\n let overload = classReference.lookupOverload(OperatorKind.BITWISE_NOT);\n if (overload) {\n expr = this.compileUnaryOverload(overload, expression.operand, expr, expression);\n break;\n }\n }\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n } else {\n expr = this.convertExpression(expr,\n this.currentType, this.currentType.intType,\n false, false,\n expression.operand\n );\n }\n\n switch (this.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.binary(BinaryOp.XorI32, expr, module.i32(-1));\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n this.options.isWasm64\n ? BinaryOp.XorI64\n : BinaryOp.XorI32,\n expr,\n this.currentType.toNativeNegOne(module)\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.XorI64, expr, module.i64(-1, -1));\n break;\n }\n default: {\n assert(false);\n expr = module.unreachable();\n }\n }\n break;\n }\n case Token.TYPEOF: {\n this.error(\n DiagnosticCode.Operation_not_supported,\n expression.range\n );\n return module.unreachable();\n }\n default: {\n assert(false);\n return module.unreachable();\n }\n }\n if (!compound) return expr;\n var resolver = this.resolver;\n var target = resolver.resolveExpression(expression.operand, this.currentFlow);\n if (!target) return module.unreachable();\n return this.makeAssignment(\n target,\n expr,\n expression.operand,\n resolver.currentThisExpression,\n resolver.currentElementExpression,\n contextualType != Type.void\n );\n }\n\n /** Makes sure that a 32-bit integer value is wrapped to a valid value of the specified type. */\n ensureSmallIntegerWrap(expr: ExpressionRef, type: Type): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n switch (type.kind) {\n case TypeKind.I8: {\n if (flow.canOverflow(expr, type)) {\n expr = this.options.hasFeature(Feature.SIGN_EXTENSION)\n ? module.unary(UnaryOp.ExtendI8ToI32, expr)\n : module.binary(BinaryOp.ShrI32,\n module.binary(BinaryOp.ShlI32,\n expr,\n module.i32(24)\n ),\n module.i32(24)\n );\n }\n break;\n }\n case TypeKind.I16: {\n if (flow.canOverflow(expr, type)) {\n expr = this.options.hasFeature(Feature.SIGN_EXTENSION)\n ? module.unary(UnaryOp.ExtendI16ToI32, expr)\n : module.binary(BinaryOp.ShrI32,\n module.binary(BinaryOp.ShlI32,\n expr,\n module.i32(16)\n ),\n module.i32(16)\n );\n }\n break;\n }\n case TypeKind.U8: {\n if (flow.canOverflow(expr, type)) {\n expr = module.binary(BinaryOp.AndI32,\n expr,\n module.i32(0xff)\n );\n }\n break;\n }\n case TypeKind.U16: {\n if (flow.canOverflow(expr, type)) {\n expr = module.binary(BinaryOp.AndI32,\n expr,\n module.i32(0xffff)\n );\n }\n break;\n }\n case TypeKind.BOOL: {\n if (flow.canOverflow(expr, type)) {\n // bool is special in that it compares to 0 instead of masking with 0x1\n expr = module.binary(BinaryOp.NeI32,\n expr,\n module.i32(0)\n );\n }\n break;\n }\n }\n return expr;\n }\n\n /** Adds the debug location of the specified expression at the specified range to the source map. */\n addDebugLocation(expr: ExpressionRef, range: Range): void {\n var parentFunction = this.currentFlow.parentFunction;\n var source = range.source;\n if (source.debugInfoIndex < 0) source.debugInfoIndex = this.module.addDebugInfoFile(source.normalizedPath);\n range.debugInfoRef = expr;\n parentFunction.debugLocations.push(range);\n }\n\n // === Specialized code generation ==============================================================\n\n /** Creates a comparison whether an expression is 'false' in a broader sense. */\n makeIsFalseish(expr: ExpressionRef, type: Type): ExpressionRef {\n var module = this.module;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = this.ensureSmallIntegerWrap(expr, type);\n // fall-through\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n return module.unary(UnaryOp.EqzI32, expr);\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n return module.unary(UnaryOp.EqzI64, expr);\n }\n case TypeKind.USIZE: if (this.skippedAutoreleases.has(expr)) expr = this.makeAutorelease(expr);\n case TypeKind.ISIZE: {\n return module.unary(type.size == 64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, expr);\n }\n case TypeKind.F32: {\n return module.binary(BinaryOp.EqF32, expr, module.f32(0));\n }\n case TypeKind.F64: {\n return module.binary(BinaryOp.EqF64, expr, module.f64(0));\n }\n default: {\n assert(false);\n return module.i32(1);\n }\n }\n }\n\n /** Creates a comparison whether an expression is 'true' in a broader sense. */\n makeIsTrueish(expr: ExpressionRef, type: Type): ExpressionRef {\n var module = this.module;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16: {\n expr = this.ensureSmallIntegerWrap(expr, type);\n // fall-through\n }\n case TypeKind.BOOL: // not a mask, just != 0\n case TypeKind.I32:\n case TypeKind.U32: {\n return expr;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n return module.binary(BinaryOp.NeI64, expr, module.i64(0));\n }\n case TypeKind.USIZE: if (this.skippedAutoreleases.has(expr)) expr = this.makeAutorelease(expr);\n case TypeKind.ISIZE: {\n return type.size == 64\n ? module.binary(BinaryOp.NeI64, expr, module.i64(0))\n : expr;\n }\n case TypeKind.F32: {\n return module.binary(BinaryOp.NeF32, expr, module.f32(0));\n }\n case TypeKind.F64: {\n return module.binary(BinaryOp.NeF64, expr, module.f64(0));\n }\n default: {\n assert(false);\n return module.i32(0);\n }\n }\n }\n\n /** Makes an allocation suitable to hold the data of an instance of the given class. */\n makeAllocation(\n classInstance: Class\n ): ExpressionRef {\n // TODO: investigate if it's possible to allocate with RC=1 immediately\n var program = this.program;\n assert(classInstance.program == program);\n var module = this.module;\n var options = this.options;\n this.currentType = classInstance.type;\n var allocInstance = program.allocInstance;\n this.compileFunction(allocInstance);\n return module.call(allocInstance.internalName, [\n options.isWasm64\n ? module.i64(classInstance.currentMemoryOffset)\n : module.i32(classInstance.currentMemoryOffset),\n module.i32(\n classInstance.hasDecorator(DecoratorFlags.UNMANAGED)\n ? 0\n : classInstance.id\n )\n ], options.nativeSizeType);\n }\n\n /** Makes the initializers for a class's fields. */\n makeFieldInitialization(\n classInstance: Class,\n stmts: ExpressionRef[] = []\n ): ExpressionRef[] {\n var members = classInstance.members;\n if (!members) return [];\n\n var module = this.module;\n var flow = this.currentFlow;\n var isInline = flow.is(FlowFlags.INLINE_CONTEXT);\n var thisLocalIndex = isInline\n ? assert(flow.lookupLocal(CommonSymbols.this_)).index\n : 0;\n var nativeSizeType = this.options.nativeSizeType;\n\n for (let member of members.values()) {\n if (\n member.kind != ElementKind.FIELD || // not a field\n member.parent != classInstance // inherited field\n ) continue;\n\n let field = member; assert(!field.isAny(CommonFlags.CONST));\n let fieldType = field.type;\n let nativeFieldType = fieldType.toNativeType();\n let fieldPrototype = field.prototype;\n let initializerNode = fieldPrototype.initializerNode;\n let parameterIndex = fieldPrototype.parameterIndex;\n let initExpr: ExpressionRef;\n if (initializerNode) { // use initializer\n initExpr = this.compileExpression(initializerNode, fieldType, // reports\n Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN\n );\n if (fieldType.isManaged && !this.skippedAutoreleases.has(initExpr)) {\n initExpr = this.makeRetain(initExpr);\n }\n } else if (parameterIndex >= 0) { // initialized via parameter (here: a local)\n initExpr = module.local_get(\n isInline\n ? assert(flow.lookupLocal(field.name)).index\n : 1 + parameterIndex, // this is local 0\n nativeFieldType\n );\n if (fieldType.isManaged) initExpr = this.makeRetain(initExpr);\n } else { // initialize with zero\n initExpr = fieldType.toNativeZero(module);\n }\n stmts.push(\n module.store(fieldType.byteSize,\n module.local_get(thisLocalIndex, nativeSizeType),\n initExpr,\n nativeFieldType,\n field.memoryOffset\n )\n );\n }\n return stmts;\n }\n\n makeInstanceOfClass(\n expr: ExpressionRef,\n classInstance: Class\n ): ExpressionRef {\n var module = this.module;\n var flow = this.currentFlow;\n var idTemp = flow.getTempLocal(Type.i32);\n var idExpr = module.load(4, false,\n module.binary(BinaryOp.SubI32,\n expr,\n module.i32(this.program.runtimeHeaderSize)\n ),\n NativeType.I32\n );\n var label = \"instanceof_\" + classInstance.name + \"|\" + flow.pushBreakLabel();\n var conditions: ExpressionRef[] = [];\n conditions.push(\n module.drop( // br_if returns the value too\n module.br(label,\n module.binary(BinaryOp.EqI32, // classId == class.id\n module.local_tee(idTemp.index, idExpr),\n module.i32(classInstance.id)\n ),\n module.i32(1) // ? true\n )\n )\n );\n // TODO: insert conditions for all possible subclasses (i.e. cat is also animal)\n // TODO: simplify if there are none\n conditions.push(\n module.i32(0) // : false\n );\n flow.freeTempLocal(idTemp);\n flow.popBreakLabel();\n return module.block(label, conditions, NativeType.I32);\n }\n\n}\n\n// helpers\n\nfunction mangleImportName(\n element: Element,\n declaration: DeclarationStatement\n): void {\n // by default, use the file name as the module name\n mangleImportName_moduleName = declaration.range.source.simplePath;\n // and the internal name of the element within that file as the element name\n mangleImportName_elementName = mangleInternalName(\n element.name, element.parent, element.is(CommonFlags.INSTANCE), true\n );\n if (!element.hasDecorator(DecoratorFlags.EXTERNAL)) return;\n\n var program = element.program;\n var decorator = assert(findDecorator(DecoratorKind.EXTERNAL, declaration.decorators));\n var args = decorator.arguments;\n if (args && args.length) {\n let arg = args[0];\n // if one argument is given, override just the element name\n // if two arguments are given, override both module and element name\n if (arg.kind == NodeKind.LITERAL && (arg).literalKind == LiteralKind.STRING) {\n mangleImportName_elementName = (arg).value;\n if (args.length >= 2) {\n arg = args[1];\n if (arg.kind == NodeKind.LITERAL && (arg).literalKind == LiteralKind.STRING) {\n mangleImportName_moduleName = mangleImportName_elementName;\n mangleImportName_elementName = (arg).value;\n if (args.length > 2) {\n program.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n decorator.range, \"2\", args.length.toString()\n );\n }\n } else {\n program.error(\n DiagnosticCode.String_literal_expected,\n arg.range\n );\n }\n }\n } else {\n program.error(\n DiagnosticCode.String_literal_expected,\n arg.range\n );\n }\n } else {\n program.error(\n DiagnosticCode.Expected_at_least_0_arguments_but_got_1,\n decorator.range, \"1\", \"0\"\n );\n }\n}\n\nvar mangleImportName_moduleName: string;\nvar mangleImportName_elementName: string;\n\n/** Flattens a series of expressions to a nop, a single statement or a block depending on statement count. */\nexport function flatten(module: Module, stmts: ExpressionRef[], type: NativeType): ExpressionRef {\n var length = stmts.length;\n if (length == 0) return module.nop(); // usually filtered out again\n if (length == 1) {\n let single = stmts[0];\n if (getExpressionType(single) == type) return single;\n if (getExpressionId(single) == ExpressionId.Block) {\n let count = getBlockChildCount(single);\n let children = new Array(count);\n for (let i = 0; i < count; ++i) children[i] = getBlockChild(single, i);\n return module.block(getBlockName(single), children, type);\n }\n }\n return module.block(null, stmts,\n type == NativeType.Auto\n ? getExpressionType(stmts[length - 1])\n : type\n );\n}\n","/**\n * Generated from diagnosticsMessages.json. Do not edit.\n * @module diagnostics\n *//***/\n\n/* tslint:disable:max-line-length */\n\n/** Enum of available diagnostic codes. */\nexport enum DiagnosticCode {\n Operation_not_supported = 100,\n Operation_is_unsafe = 101,\n User_defined_0 = 102,\n Conversion_from_type_0_to_1_requires_an_explicit_cast = 200,\n Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit = 201,\n Type_0_cannot_be_changed_to_type_1 = 202,\n Type_0_cannot_be_reinterpreted_as_type_1 = 203,\n Basic_type_0_cannot_be_nullable = 204,\n Cannot_export_a_mutable_global = 205,\n Mutable_value_cannot_be_inlined = 206,\n Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa = 207,\n Unmanaged_classes_cannot_implement_interfaces = 208,\n Invalid_regular_expression_flags = 209,\n Implementation_0_must_match_the_signature_1 = 210,\n Class_0_is_sealed_and_cannot_be_extended = 211,\n Decorator_0_is_not_valid_here = 212,\n Duplicate_decorator = 213,\n An_allocator_must_be_present_to_use_0 = 214,\n Optional_parameter_must_have_an_initializer = 215,\n Constructor_of_class_0_must_not_require_any_arguments = 216,\n Function_0_cannot_be_inlined_into_itself = 217,\n Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set = 218,\n Optional_properties_are_not_supported = 219,\n Expression_must_be_a_compile_time_constant = 220,\n Module_cannot_have_multiple_start_functions = 221,\n _0_must_be_a_value_between_1_and_2_inclusive = 222,\n _0_must_be_a_power_of_two = 223,\n Expression_is_unsafe = 224,\n Expression_is_never_null = 225,\n Unterminated_string_literal = 1002,\n Identifier_expected = 1003,\n _0_expected = 1005,\n A_file_cannot_have_a_reference_to_itself = 1006,\n Trailing_comma_not_allowed = 1009,\n Unexpected_token = 1012,\n A_rest_parameter_must_be_last_in_a_parameter_list = 1014,\n Parameter_cannot_have_question_mark_and_initializer = 1015,\n A_required_parameter_cannot_follow_an_optional_parameter = 1016,\n Statements_are_not_allowed_in_ambient_contexts = 1036,\n Initializers_are_not_allowed_in_ambient_contexts = 1039,\n _0_modifier_cannot_be_used_here = 1042,\n A_rest_parameter_cannot_be_optional = 1047,\n A_rest_parameter_cannot_have_an_initializer = 1048,\n A_set_accessor_must_have_exactly_one_parameter = 1049,\n A_set_accessor_parameter_cannot_have_an_initializer = 1052,\n A_get_accessor_cannot_have_parameters = 1054,\n Enum_member_must_have_initializer = 1061,\n Type_parameters_cannot_appear_on_a_constructor_declaration = 1092,\n Type_annotation_cannot_appear_on_a_constructor_declaration = 1093,\n An_accessor_cannot_have_type_parameters = 1094,\n A_set_accessor_cannot_have_a_return_type_annotation = 1095,\n Type_parameter_list_cannot_be_empty = 1098,\n A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement = 1104,\n A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement = 1105,\n A_return_statement_can_only_be_used_within_a_function_body = 1108,\n Expression_expected = 1109,\n Type_expected = 1110,\n A_default_clause_cannot_appear_more_than_once_in_a_switch_statement = 1113,\n Duplicate_label_0 = 1114,\n An_export_assignment_cannot_have_modifiers = 1120,\n Octal_literals_are_not_allowed_in_strict_mode = 1121,\n Digit_expected = 1124,\n Hexadecimal_digit_expected = 1125,\n Unexpected_end_of_text = 1126,\n Invalid_character = 1127,\n _case_or_default_expected = 1130,\n _super_must_be_followed_by_an_argument_list_or_member_access = 1034,\n A_declare_modifier_cannot_be_used_in_an_already_ambient_context = 1038,\n Type_argument_expected = 1140,\n String_literal_expected = 1141,\n Line_break_not_permitted_here = 1142,\n Declaration_expected = 1146,\n _const_declarations_must_be_initialized = 1155,\n Unterminated_regular_expression_literal = 1161,\n Interface_declaration_cannot_have_implements_clause = 1176,\n Binary_digit_expected = 1177,\n Octal_digit_expected = 1178,\n An_implementation_cannot_be_declared_in_ambient_contexts = 1183,\n An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive = 1198,\n Unterminated_Unicode_escape_sequence = 1199,\n Decorators_are_not_valid_here = 1206,\n _abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration = 1242,\n Method_0_cannot_have_an_implementation_because_it_is_marked_abstract = 1245,\n A_definite_assignment_assertion_is_not_permitted_in_this_context = 1255,\n A_class_may_only_extend_another_class = 1311,\n A_parameter_property_cannot_be_declared_using_a_rest_parameter = 1317,\n Duplicate_identifier_0 = 2300,\n Cannot_find_name_0 = 2304,\n Module_0_has_no_exported_member_1 = 2305,\n Generic_type_0_requires_1_type_argument_s = 2314,\n Type_0_is_not_generic = 2315,\n Type_0_is_not_assignable_to_type_1 = 2322,\n Index_signature_is_missing_in_type_0 = 2329,\n _this_cannot_be_referenced_in_current_location = 2332,\n _super_can_only_be_referenced_in_a_derived_class = 2335,\n Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors = 2337,\n Property_0_does_not_exist_on_type_1 = 2339,\n Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures = 2349,\n Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature = 2351,\n A_function_whose_declared_type_is_not_void_must_return_a_value = 2355,\n The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access = 2357,\n The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access = 2364,\n Operator_0_cannot_be_applied_to_types_1_and_2 = 2365,\n A_super_call_must_be_the_first_statement_in_the_constructor = 2376,\n Constructors_for_derived_classes_must_contain_a_super_call = 2377,\n _get_and_set_accessor_must_have_the_same_type = 2380,\n Constructor_implementation_is_missing = 2390,\n Function_implementation_is_missing_or_not_immediately_following_the_declaration = 2391,\n Multiple_constructor_implementations_are_not_allowed = 2392,\n Duplicate_function_implementation = 2393,\n Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local = 2395,\n A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged = 2434,\n Type_0_has_no_property_1 = 2460,\n The_0_operator_cannot_be_applied_to_type_1 = 2469,\n In_const_enum_declarations_member_initializer_must_be_constant_expression = 2474,\n Export_declaration_conflicts_with_exported_declaration_of_0 = 2484,\n Object_is_possibly_null = 2531,\n Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property = 2540,\n The_target_of_an_assignment_must_be_a_variable_or_a_property_access = 2541,\n Index_signature_in_type_0_only_permits_reading = 2542,\n Expected_0_arguments_but_got_1 = 2554,\n Expected_at_least_0_arguments_but_got_1 = 2555,\n Expected_0_type_arguments_but_got_1 = 2558,\n A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums = 2651,\n Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration = 2673,\n Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration = 2674,\n Namespace_0_has_no_exported_member_1 = 2694,\n Required_type_parameters_may_not_follow_optional_type_parameters = 2706,\n Duplicate_property_0 = 2718,\n Type_0_has_no_call_signatures = 2757,\n File_0_not_found = 6054,\n Numeric_separators_are_not_allowed_here = 6188,\n Multiple_consecutive_numeric_separators_are_not_permitted = 6189,\n _super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class = 17009,\n _super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class = 17011\n}\n\n/** Translates a diagnostic code to its respective string. */\nexport function diagnosticCodeToString(code: DiagnosticCode): string {\n switch (code) {\n case 100: return \"Operation not supported.\";\n case 101: return \"Operation is unsafe.\";\n case 102: return \"User-defined: {0}\";\n case 200: return \"Conversion from type '{0}' to '{1}' requires an explicit cast.\";\n case 201: return \"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";\n case 202: return \"Type '{0}' cannot be changed to type '{1}'.\";\n case 203: return \"Type '{0}' cannot be reinterpreted as type '{1}'.\";\n case 204: return \"Basic type '{0}' cannot be nullable.\";\n case 205: return \"Cannot export a mutable global.\";\n case 206: return \"Mutable value cannot be inlined.\";\n case 207: return \"Unmanaged classes cannot extend managed classes and vice-versa.\";\n case 208: return \"Unmanaged classes cannot implement interfaces.\";\n case 209: return \"Invalid regular expression flags.\";\n case 210: return \"Implementation '{0}' must match the signature '{1}'.\";\n case 211: return \"Class '{0}' is sealed and cannot be extended.\";\n case 212: return \"Decorator '{0}' is not valid here.\";\n case 213: return \"Duplicate decorator.\";\n case 214: return \"An allocator must be present to use '{0}'.\";\n case 215: return \"Optional parameter must have an initializer.\";\n case 216: return \"Constructor of class '{0}' must not require any arguments.\";\n case 217: return \"Function '{0}' cannot be inlined into itself.\";\n case 218: return \"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";\n case 219: return \"Optional properties are not supported.\";\n case 220: return \"Expression must be a compile-time constant.\";\n case 221: return \"Module cannot have multiple start functions.\";\n case 222: return \"'{0}' must be a value between '{1}' and '{2}' inclusive.\";\n case 223: return \"'{0}' must be a power of two.\";\n case 224: return \"Expression is unsafe.\";\n case 225: return \"Expression is never 'null'.\";\n case 1002: return \"Unterminated string literal.\";\n case 1003: return \"Identifier expected.\";\n case 1005: return \"'{0}' expected.\";\n case 1006: return \"A file cannot have a reference to itself.\";\n case 1009: return \"Trailing comma not allowed.\";\n case 1012: return \"Unexpected token.\";\n case 1014: return \"A rest parameter must be last in a parameter list.\";\n case 1015: return \"Parameter cannot have question mark and initializer.\";\n case 1016: return \"A required parameter cannot follow an optional parameter.\";\n case 1036: return \"Statements are not allowed in ambient contexts.\";\n case 1039: return \"Initializers are not allowed in ambient contexts.\";\n case 1042: return \"'{0}' modifier cannot be used here.\";\n case 1047: return \"A rest parameter cannot be optional.\";\n case 1048: return \"A rest parameter cannot have an initializer.\";\n case 1049: return \"A 'set' accessor must have exactly one parameter.\";\n case 1052: return \"A 'set' accessor parameter cannot have an initializer.\";\n case 1054: return \"A 'get' accessor cannot have parameters.\";\n case 1061: return \"Enum member must have initializer.\";\n case 1092: return \"Type parameters cannot appear on a constructor declaration.\";\n case 1093: return \"Type annotation cannot appear on a constructor declaration.\";\n case 1094: return \"An accessor cannot have type parameters.\";\n case 1095: return \"A 'set' accessor cannot have a return type annotation.\";\n case 1098: return \"Type parameter list cannot be empty.\";\n case 1104: return \"A 'continue' statement can only be used within an enclosing iteration statement.\";\n case 1105: return \"A 'break' statement can only be used within an enclosing iteration or switch statement.\";\n case 1108: return \"A 'return' statement can only be used within a function body.\";\n case 1109: return \"Expression expected.\";\n case 1110: return \"Type expected.\";\n case 1113: return \"A 'default' clause cannot appear more than once in a 'switch' statement.\";\n case 1114: return \"Duplicate label '{0}'.\";\n case 1120: return \"An export assignment cannot have modifiers.\";\n case 1121: return \"Octal literals are not allowed in strict mode.\";\n case 1124: return \"Digit expected.\";\n case 1125: return \"Hexadecimal digit expected.\";\n case 1126: return \"Unexpected end of text.\";\n case 1127: return \"Invalid character.\";\n case 1130: return \"'case' or 'default' expected.\";\n case 1034: return \"'super' must be followed by an argument list or member access.\";\n case 1038: return \"A 'declare' modifier cannot be used in an already ambient context.\";\n case 1140: return \"Type argument expected.\";\n case 1141: return \"String literal expected.\";\n case 1142: return \"Line break not permitted here.\";\n case 1146: return \"Declaration expected.\";\n case 1155: return \"'const' declarations must be initialized.\";\n case 1161: return \"Unterminated regular expression literal.\";\n case 1176: return \"Interface declaration cannot have 'implements' clause.\";\n case 1177: return \"Binary digit expected.\";\n case 1178: return \"Octal digit expected.\";\n case 1183: return \"An implementation cannot be declared in ambient contexts.\";\n case 1198: return \"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";\n case 1199: return \"Unterminated Unicode escape sequence.\";\n case 1206: return \"Decorators are not valid here.\";\n case 1242: return \"'abstract' modifier can only appear on a class, method, or property declaration.\";\n case 1245: return \"Method '{0}' cannot have an implementation because it is marked abstract.\";\n case 1255: return \"A definite assignment assertion '!' is not permitted in this context.\";\n case 1311: return \"A class may only extend another class.\";\n case 1317: return \"A parameter property cannot be declared using a rest parameter.\";\n case 2300: return \"Duplicate identifier '{0}'.\";\n case 2304: return \"Cannot find name '{0}'.\";\n case 2305: return \"Module '{0}' has no exported member '{1}'.\";\n case 2314: return \"Generic type '{0}' requires {1} type argument(s).\";\n case 2315: return \"Type '{0}' is not generic.\";\n case 2322: return \"Type '{0}' is not assignable to type '{1}'.\";\n case 2329: return \"Index signature is missing in type '{0}'.\";\n case 2332: return \"'this' cannot be referenced in current location.\";\n case 2335: return \"'super' can only be referenced in a derived class.\";\n case 2337: return \"Super calls are not permitted outside constructors or in nested functions inside constructors.\";\n case 2339: return \"Property '{0}' does not exist on type '{1}'.\";\n case 2349: return \"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";\n case 2351: return \"Cannot use 'new' with an expression whose type lacks a construct signature.\";\n case 2355: return \"A function whose declared type is not 'void' must return a value.\";\n case 2357: return \"The operand of an increment or decrement operator must be a variable or a property access.\";\n case 2364: return \"The left-hand side of an assignment expression must be a variable or a property access.\";\n case 2365: return \"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";\n case 2376: return \"A 'super' call must be the first statement in the constructor.\";\n case 2377: return \"Constructors for derived classes must contain a 'super' call.\";\n case 2380: return \"'get' and 'set' accessor must have the same type.\";\n case 2390: return \"Constructor implementation is missing.\";\n case 2391: return \"Function implementation is missing or not immediately following the declaration.\";\n case 2392: return \"Multiple constructor implementations are not allowed.\";\n case 2393: return \"Duplicate function implementation.\";\n case 2395: return \"Individual declarations in merged declaration '{0}' must be all exported or all local.\";\n case 2434: return \"A namespace declaration cannot be located prior to a class or function with which it is merged.\";\n case 2460: return \"Type '{0}' has no property '{1}'.\";\n case 2469: return \"The '{0}' operator cannot be applied to type '{1}'.\";\n case 2474: return \"In 'const' enum declarations member initializer must be constant expression.\";\n case 2484: return \"Export declaration conflicts with exported declaration of '{0}'.\";\n case 2531: return \"Object is possibly 'null'.\";\n case 2540: return \"Cannot assign to '{0}' because it is a constant or a read-only property.\";\n case 2541: return \"The target of an assignment must be a variable or a property access.\";\n case 2542: return \"Index signature in type '{0}' only permits reading.\";\n case 2554: return \"Expected {0} arguments, but got {1}.\";\n case 2555: return \"Expected at least {0} arguments, but got {1}.\";\n case 2558: return \"Expected {0} type arguments, but got {1}.\";\n case 2651: return \"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";\n case 2673: return \"Constructor of class '{0}' is private and only accessible within the class declaration.\";\n case 2674: return \"Constructor of class '{0}' is protected and only accessible within the class declaration.\";\n case 2694: return \"Namespace '{0}' has no exported member '{1}'.\";\n case 2706: return \"Required type parameters may not follow optional type parameters.\";\n case 2718: return \"Duplicate property '{0}'.\";\n case 2757: return \"Type '{0}' has no call signatures.\";\n case 6054: return \"File '{0}' not found.\";\n case 6188: return \"Numeric separators are not allowed here.\";\n case 6189: return \"Multiple consecutive numeric separators are not permitted.\";\n case 17009: return \"'super' must be called before accessing 'this' in the constructor of a derived class.\";\n case 17011: return \"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";\n default: return \"\";\n }\n}\n","/**\n * Built-in elements providing WebAssembly core functionality.\n * @module builtins\n *//***/\n\n import {\n Compiler,\n Constraints,\n RuntimeFeatures,\n flatten\n} from \"./compiler\";\n\nimport {\n DiagnosticCode\n} from \"./diagnostics\";\n\nimport {\n Node,\n NodeKind,\n Expression,\n LiteralKind,\n LiteralExpression,\n StringLiteralExpression,\n CallExpression\n} from \"./ast\";\n\nimport {\n Type,\n TypeKind,\n TypeFlags,\n Signature\n} from \"./types\";\n\nimport {\n BinaryOp,\n UnaryOp,\n HostOp,\n AtomicRMWOp,\n SIMDExtractOp,\n SIMDReplaceOp,\n SIMDShiftOp,\n NativeType,\n ExpressionRef,\n ExpressionId,\n getExpressionId,\n getExpressionType,\n getConstValueI64High,\n getConstValueI64Low,\n getConstValueI32,\n getConstValueF32,\n getConstValueF64,\n Relooper,\n RelooperBlockRef\n} from \"./module\";\n\nimport {\n ElementKind,\n FunctionPrototype,\n Field,\n Global,\n DecoratorFlags,\n Element\n} from \"./program\";\n\nimport {\n FlowFlags,\n LocalFlags\n} from \"./flow\";\n\nimport {\n ReportMode\n} from \"./resolver\";\n\nimport {\n CommonFlags,\n Feature,\n TypeinfoFlags\n} from \"./common\";\n\nimport {\n writeI8,\n writeI16,\n writeI32,\n writeF32,\n writeF64,\n isPowerOf2\n} from \"./util\";\n\n/** Symbols of various compiler built-ins. */\nexport namespace BuiltinSymbols {\n // std/builtins.ts\n export const isInteger = \"~lib/builtins/isInteger\";\n export const isFloat = \"~lib/builtins/isFloat\";\n export const isBoolean = \"~lib/builtins/isBoolean\";\n export const isSigned = \"~lib/builtins/isSigned\";\n export const isReference = \"~lib/builtins/isReference\";\n export const isString = \"~lib/builtins/isString\";\n export const isArray = \"~lib/builtins/isArray\";\n export const isArrayLike = \"~lib/builtins/isArrayLike\";\n export const isFunction = \"~lib/builtins/isFunction\";\n export const isNullable = \"~lib/builtins/isNullable\";\n export const isDefined = \"~lib/builtins/isDefined\";\n export const isConstant = \"~lib/builtins/isConstant\";\n export const isManaged = \"~lib/builtins/isManaged\";\n export const isVoid = \"~lib/builtins/isVoid\";\n\n export const clz = \"~lib/builtins/clz\";\n export const ctz = \"~lib/builtins/ctz\";\n export const popcnt = \"~lib/builtins/popcnt\";\n export const rotl = \"~lib/builtins/rotl\";\n export const rotr = \"~lib/builtins/rotr\";\n export const abs = \"~lib/builtins/abs\";\n export const max = \"~lib/builtins/max\";\n export const min = \"~lib/builtins/min\";\n export const ceil = \"~lib/builtins/ceil\";\n export const floor = \"~lib/builtins/floor\";\n export const copysign = \"~lib/builtins/copysign\";\n export const nearest = \"~lib/builtins/nearest\";\n export const reinterpret = \"~lib/builtins/reinterpret\";\n export const sqrt = \"~lib/builtins/sqrt\";\n export const trunc = \"~lib/builtins/trunc\";\n export const load = \"~lib/builtins/load\";\n export const store = \"~lib/builtins/store\";\n export const atomic_load = \"~lib/builtins/atomic.load\";\n export const atomic_store = \"~lib/builtins/atomic.store\";\n export const atomic_add = \"~lib/builtins/atomic.add\";\n export const atomic_sub = \"~lib/builtins/atomic.sub\";\n export const atomic_and = \"~lib/builtins/atomic.and\";\n export const atomic_or = \"~lib/builtins/atomic.or\";\n export const atomic_xor = \"~lib/builtins/atomic.xor\";\n export const atomic_xchg = \"~lib/builtins/atomic.xchg\";\n export const atomic_cmpxchg = \"~lib/builtins/atomic.cmpxchg\";\n export const atomic_wait = \"~lib/builtins/atomic.wait\";\n export const atomic_notify = \"~lib/builtins/atomic.notify\";\n\n export const sizeof = \"~lib/builtins/sizeof\";\n export const alignof = \"~lib/builtins/alignof\";\n export const offsetof = \"~lib/builtins/offsetof\";\n export const nameof = \"~lib/builtins/nameof\";\n export const lengthof = \"~lib/builtins/lengthof\";\n export const select = \"~lib/builtins/select\";\n export const unreachable = \"~lib/builtins/unreachable\";\n export const changetype = \"~lib/builtins/changetype\";\n export const assert = \"~lib/builtins/assert\";\n export const unchecked = \"~lib/builtins/unchecked\";\n export const call_direct = \"~lib/builtins/call_direct\";\n export const call_indirect = \"~lib/builtins/call_indirect\";\n export const instantiate = \"~lib/builtins/instantiate\";\n export const idof = \"~lib/builtins/idof\";\n\n export const i8 = \"~lib/builtins/i8\";\n export const i16 = \"~lib/builtins/i16\";\n export const i32 = \"~lib/builtins/i32\";\n export const i64 = \"~lib/builtins/i64\";\n export const isize = \"~lib/builtins/isize\";\n export const u8 = \"~lib/builtins/u8\";\n export const u16 = \"~lib/builtins/u16\";\n export const u32 = \"~lib/builtins/u32\";\n export const u64 = \"~lib/builtins/u64\";\n export const usize = \"~lib/builtins/usize\";\n export const bool = \"~lib/builtins/bool\";\n export const f32 = \"~lib/builtins/f32\";\n export const f64 = \"~lib/builtins/f64\";\n export const v128 = \"~lib/builtins/v128\";\n export const void_ = \"~lib/builtins/void\";\n\n export const i32_clz = \"~lib/builtins/i32.clz\";\n export const i64_clz = \"~lib/builtins/i64.clz\";\n export const i32_ctz = \"~lib/builtins/i32.ctz\";\n export const i64_ctz = \"~lib/builtins/i64.ctz\";\n export const i32_popcnt = \"~lib/builtins/i32.popcnt\";\n export const i64_popcnt = \"~lib/builtins/i64.popcnt\";\n export const i32_rotl = \"~lib/builtins/i32.rotl\";\n export const i64_rotl = \"~lib/builtins/i64.rotl\";\n export const i32_rotr = \"~lib/builtins/i32.rotr\";\n export const i64_rotr = \"~lib/builtins/i64.rotr\";\n\n export const f32_abs = \"~lib/builtins/f32.abs\";\n export const f64_abs = \"~lib/builtins/f64.abs\";\n export const f32_max = \"~lib/builtins/f32.max\";\n export const f64_max = \"~lib/builtins/f64.max\";\n export const f32_min = \"~lib/builtins/f32.min\";\n export const f64_min = \"~lib/builtins/f64.min\";\n export const f32_ceil = \"~lib/builtins/f32.ceil\";\n export const f64_ceil = \"~lib/builtins/f64.ceil\";\n export const f32_floor = \"~lib/builtins/f32.floor\";\n export const f64_floor = \"~lib/builtins/f64.floor\";\n export const f32_copysign = \"~lib/builtins/f32.copysign\";\n export const f64_copysign = \"~lib/builtins/f64.copysign\";\n export const f32_nearest = \"~lib/builtins/f32.nearest\";\n export const f64_nearest = \"~lib/builtins/f64.nearest\";\n export const i32_reinterpret_f32 = \"~lib/builtins/i32.reinterpret_f32\";\n export const i64_reinterpret_f64 = \"~lib/builtins/i64.reinterpret_f64\";\n export const f32_reinterpret_i32 = \"~lib/builtins/f32.reinterpret_i32\";\n export const f64_reinterpret_i64 = \"~lib/builtins/f64.reinterpret_i64\";\n export const f32_sqrt = \"~lib/builtins/f32.sqrt\";\n export const f64_sqrt = \"~lib/builtins/f64.sqrt\";\n export const f32_trunc = \"~lib/builtins/f32.trunc\";\n export const f64_trunc = \"~lib/builtins/f64.trunc\";\n\n export const i32_load8_s = \"~lib/builtins/i32.load8_s\";\n export const i32_load8_u = \"~lib/builtins/i32.load8_u\";\n export const i32_load16_s = \"~lib/builtins/i32.load16_s\";\n export const i32_load16_u = \"~lib/builtins/i32.load16_u\";\n export const i32_load = \"~lib/builtins/i32.load\";\n export const i64_load8_s = \"~lib/builtins/i64.load8_s\";\n export const i64_load8_u = \"~lib/builtins/i64.load8_u\";\n export const i64_load16_s = \"~lib/builtins/i64.load16_s\";\n export const i64_load16_u = \"~lib/builtins/i64.load16_u\";\n export const i64_load32_s = \"~lib/builtins/i64.load32_s\";\n export const i64_load32_u = \"~lib/builtins/i64.load32_u\";\n export const i64_load = \"~lib/builtins/i64.load\";\n export const f32_load = \"~lib/builtins/f32.load\";\n export const f64_load = \"~lib/builtins/f64.load\";\n export const i32_store8 = \"~lib/builtins/i32.store8\";\n export const i32_store16 = \"~lib/builtins/i32.store16\";\n export const i32_store = \"~lib/builtins/i32.store\";\n export const i64_store8 = \"~lib/builtins/i64.store8\";\n export const i64_store16 = \"~lib/builtins/i64.store16\";\n export const i64_store32 = \"~lib/builtins/i64.store32\";\n export const i64_store = \"~lib/builtins/i64.store\";\n export const f32_store = \"~lib/builtins/f32.store\";\n export const f64_store = \"~lib/builtins/f64.store\";\n\n export const i32_atomic_load8_u = \"~lib/builtins/i32.atomic.load8_u\";\n export const i32_atomic_load16_u = \"~lib/builtins/i32.atomic.load16_u\";\n export const i32_atomic_load = \"~lib/builtins/i32.atomic.load\";\n export const i64_atomic_load8_u = \"~lib/builtins/i64.atomic.load8_u\";\n export const i64_atomic_load16_u = \"~lib/builtins/i64.atomic.load16_u\";\n export const i64_atomic_load32_u = \"~lib/builtins/i64.atomic.load32_u\";\n export const i64_atomic_load = \"~lib/builtins/i64.atomic.load\";\n export const i32_atomic_store8 = \"~lib/builtins/i32.atomic.store8\";\n export const i32_atomic_store16 = \"~lib/builtins/i32.atomic.store16\";\n export const i32_atomic_store = \"~lib/builtins/i32.atomic.store\";\n export const i64_atomic_store8 = \"~lib/builtins/i64.atomic.store8\";\n export const i64_atomic_store16 = \"~lib/builtins/i64.atomic.store16\";\n export const i64_atomic_store32 = \"~lib/builtins/i64.atomic.store32\";\n export const i64_atomic_store = \"~lib/builtins/i64.atomic.store\";\n export const i32_atomic_rmw8_add_u = \"~lib/builtins/i32.atomic.rmw8.add_u\";\n export const i32_atomic_rmw16_add_u = \"~lib/builtins/i32.atomic.rmw16.add_u\";\n export const i32_atomic_rmw_add = \"~lib/builtins/i32.atomic.rmw.add\";\n export const i64_atomic_rmw8_add_u = \"~lib/builtins/i64.atomic.rmw8.add_u\";\n export const i64_atomic_rmw16_add_u = \"~lib/builtins/i64.atomic.rmw16.add_u\";\n export const i64_atomic_rmw32_add_u = \"~lib/builtins/i64.atomic.rmw32.add_u\";\n export const i64_atomic_rmw_add = \"~lib/builtins/i64.atomic.rmw.add\";\n export const i32_atomic_rmw8_sub_u = \"~lib/builtins/i32.atomic.rmw8.sub_u\";\n export const i32_atomic_rmw16_sub_u = \"~lib/builtins/i32.atomic.rmw16.sub_u\";\n export const i32_atomic_rmw_sub = \"~lib/builtins/i32.atomic.rmw.sub\";\n export const i64_atomic_rmw8_sub_u = \"~lib/builtins/i64.atomic.rmw8.sub_u\";\n export const i64_atomic_rmw16_sub_u = \"~lib/builtins/i64.atomic.rmw16.sub_u\";\n export const i64_atomic_rmw32_sub_u = \"~lib/builtins/i64.atomic.rmw32.sub_u\";\n export const i64_atomic_rmw_sub = \"~lib/builtins/i64.atomic.rmw.sub\";\n export const i32_atomic_rmw8_and_u = \"~lib/builtins/i32.atomic.rmw8.and_u\";\n export const i32_atomic_rmw16_and_u = \"~lib/builtins/i32.atomic.rmw16.and_u\";\n export const i32_atomic_rmw_and = \"~lib/builtins/i32.atomic.rmw.and\";\n export const i64_atomic_rmw8_and_u = \"~lib/builtins/i64.atomic.rmw8.and_u\";\n export const i64_atomic_rmw16_and_u = \"~lib/builtins/i64.atomic.rmw16.and_u\";\n export const i64_atomic_rmw32_and_u = \"~lib/builtins/i64.atomic.rmw32.and_u\";\n export const i64_atomic_rmw_and = \"~lib/builtins/i64.atomic.rmw.and\";\n export const i32_atomic_rmw8_or_u = \"~lib/builtins/i32.atomic.rmw8.or_u\";\n export const i32_atomic_rmw16_or_u = \"~lib/builtins/i32.atomic.rmw16.or_u\";\n export const i32_atomic_rmw_or = \"~lib/builtins/i32.atomic.rmw.or\";\n export const i64_atomic_rmw8_or_u = \"~lib/builtins/i64.atomic.rmw8.or_u\";\n export const i64_atomic_rmw16_or_u = \"~lib/builtins/i64.atomic.rmw16.or_u\";\n export const i64_atomic_rmw32_or_u = \"~lib/builtins/i64.atomic.rmw32.or_u\";\n export const i64_atomic_rmw_or = \"~lib/builtins/i64.atomic.rmw.or\";\n export const i32_atomic_rmw8_u_xor = \"~lib/builtins/i32.atomic.rmw8.xor_u\";\n export const i32_atomic_rmw16_u_xor = \"~lib/builtins/i32.atomic.rmw16.xor_u\";\n export const i32_atomic_rmw_xor = \"~lib/builtins/i32.atomic.rmw.xor\";\n export const i64_atomic_rmw8_xor_u = \"~lib/builtins/i64.atomic.rmw8.xor_u\";\n export const i64_atomic_rmw16_xor_u = \"~lib/builtins/i64.atomic.rmw16.xor_u\";\n export const i64_atomic_rmw32_xor_u = \"~lib/builtins/i64.atomic.rmw32.xor_u\";\n export const i64_atomic_rmw_xor = \"~lib/builtins/i64.atomic.rmw.xor\";\n export const i32_atomic_rmw8_xchg_u = \"~lib/builtins/i32.atomic.rmw8.xchg_u\";\n export const i32_atomic_rmw16_xchg_u = \"~lib/builtins/i32.atomic.rmw16.xchg_u\";\n export const i32_atomic_rmw_xchg = \"~lib/builtins/i32.atomic.rmw.xchg\";\n export const i64_atomic_rmw8_xchg_u = \"~lib/builtins/i64.atomic.rmw8.xchg_u\";\n export const i64_atomic_rmw16_xchg_u = \"~lib/builtins/i64.atomic.rmw16.xchg_u\";\n export const i64_atomic_rmw32_xchg_u = \"~lib/builtins/i64.atomic.rmw32.xchg_u\";\n export const i64_atomic_rmw_xchg = \"~lib/builtins/i64.atomic.rmw.xchg\";\n export const i32_atomic_rmw8_cmpxchg_u = \"~lib/builtins/i32.atomic.rmw8.cmpxchg_u\";\n export const i32_atomic_rmw16_cmpxchg_u = \"~lib/builtins/i32.atomic.rmw16.cmpxchg_u\";\n export const i32_atomic_rmw_cmpxchg = \"~lib/builtins/i32.atomic.rmw.cmpxchg\";\n export const i64_atomic_rmw8_cmpxchg_u = \"~lib/builtins/i64.atomic.rmw8.cmpxchg_u\";\n export const i64_atomic_rmw16_cmpxchg_u = \"~lib/builtins/i64.atomic.rmw16.cmpxchg_u\";\n export const i64_atomic_rmw32_cmpxchg_u = \"~lib/builtins/i64.atomic.rmw32.cmpxchg_u\";\n export const i64_atomic_rmw_cmpxchg = \"~lib/builtins/i64.atomic.rmw.cmpxchg\";\n export const i32_wait = \"~lib/builtins/i32.wait\";\n export const i64_wait = \"~lib/builtins/i64.wait\";\n\n export const v128_splat = \"~lib/builtins/v128.splat\";\n export const v128_extract_lane = \"~lib/builtins/v128.extract_lane\";\n export const v128_replace_lane = \"~lib/builtins/v128.replace_lane\";\n export const v128_shuffle = \"~lib/builtins/v128.shuffle\";\n export const v128_load = \"~lib/builtins/v128.load\";\n export const v128_store = \"~lib/builtins/v128.store\";\n export const v128_add = \"~lib/builtins/v128.add\";\n export const v128_sub = \"~lib/builtins/v128.sub\";\n export const v128_mul = \"~lib/builtins/v128.mul\";\n export const v128_div = \"~lib/builtins/v128.div\";\n export const v128_neg = \"~lib/builtins/v128.neg\";\n export const v128_add_saturate = \"~lib/builtins/v128.add_saturate\";\n export const v128_sub_saturate = \"~lib/builtins/v128.sub_saturate\";\n export const v128_shl = \"~lib/builtins/v128.shl\";\n export const v128_shr = \"~lib/builtins/v128.shr\";\n export const v128_and = \"~lib/builtins/v128.and\";\n export const v128_or = \"~lib/builtins/v128.or\";\n export const v128_xor = \"~lib/builtins/v128.xor\";\n export const v128_not = \"~lib/builtins/v128.not\";\n export const v128_bitselect = \"~lib/builtins/v128.bitselect\";\n export const v128_any_true = \"~lib/builtins/v128.any_true\";\n export const v128_all_true = \"~lib/builtins/v128.all_true\";\n export const v128_min = \"~lib/builtins/v128.min\";\n export const v128_max = \"~lib/builtins/v128.max\";\n export const v128_abs = \"~lib/builtins/v128.abs\";\n export const v128_sqrt = \"~lib/builtins/v128.sqrt\";\n export const v128_eq = \"~lib/builtins/v128.eq\";\n export const v128_ne = \"~lib/builtins/v128.ne\";\n export const v128_lt = \"~lib/builtins/v128.lt\";\n export const v128_le = \"~lib/builtins/v128.le\";\n export const v128_gt = \"~lib/builtins/v128.gt\";\n export const v128_ge = \"~lib/builtins/v128.ge\";\n export const v128_convert = \"~lib/builtins/v128.convert\";\n export const v128_trunc = \"~lib/builtins/v128.trunc\";\n\n export const i8x16 = \"~lib/builtins/i8x16\";\n export const i16x8 = \"~lib/builtins/i16x8\";\n export const i32x4 = \"~lib/builtins/i32x4\";\n export const i64x2 = \"~lib/builtins/i64x2\";\n export const f32x4 = \"~lib/builtins/f32x4\";\n export const f64x2 = \"~lib/builtins/f64x2\";\n\n export const i8x16_splat = \"~lib/builtins/i8x16.splat\";\n export const i8x16_extract_lane_s = \"~lib/builtins/i8x16.extract_lane_s\";\n export const i8x16_extract_lane_u = \"~lib/builtins/i8x16.extract_lane_u\";\n export const i8x16_replace_lane = \"~lib/builtins/i8x16.replace_lane\";\n export const i8x16_add = \"~lib/builtins/i8x16.add\";\n export const i8x16_sub = \"~lib/builtins/i8x16.sub\";\n export const i8x16_mul = \"~lib/builtins/i8x16.mul\";\n export const i8x16_neg = \"~lib/builtins/i8x16.neg\";\n export const i8x16_add_saturate_s = \"~lib/builtins/i8x16.add_saturate_s\";\n export const i8x16_add_saturate_u = \"~lib/builtins/i8x16.add_saturate_u\";\n export const i8x16_sub_saturate_s = \"~lib/builtins/i8x16.sub_saturate_s\";\n export const i8x16_sub_saturate_u = \"~lib/builtins/i8x16.sub_saturate_u\";\n export const i8x16_shl = \"~lib/builtins/i8x16.shl\";\n export const i8x16_shr_s = \"~lib/builtins/i8x16.shr_s\";\n export const i8x16_shr_u = \"~lib/builtins/i8x16.shr_u\";\n export const i8x16_any_true = \"~lib/builtins/i8x16.any_true\";\n export const i8x16_all_true = \"~lib/builtins/i8x16.all_true\";\n export const i8x16_eq = \"~lib/builtins/i8x16.eq\";\n export const i8x16_ne = \"~lib/builtins/i8x16.ne\";\n export const i8x16_lt_s = \"~lib/builtins/i8x16.lt_s\";\n export const i8x16_lt_u = \"~lib/builtins/i8x16.lt_u\";\n export const i8x16_le_s = \"~lib/builtins/i8x16.le_s\";\n export const i8x16_le_u = \"~lib/builtins/i8x16.le_u\";\n export const i8x16_gt_s = \"~lib/builtins/i8x16.gt_s\";\n export const i8x16_gt_u = \"~lib/builtins/i8x16.gt_u\";\n export const i8x16_ge_s = \"~lib/builtins/i8x16.ge_s\";\n export const i8x16_ge_u = \"~lib/builtins/i8x16.ge_u\";\n\n export const i16x8_splat = \"~lib/builtins/i16x8.splat\";\n export const i16x8_extract_lane_s = \"~lib/builtins/i16x8.extract_lane_s\";\n export const i16x8_extract_lane_u = \"~lib/builtins/i16x8.extract_lane_u\";\n export const i16x8_replace_lane = \"~lib/builtins/i16x8.replace_lane\";\n export const i16x8_add = \"~lib/builtins/i16x8.add\";\n export const i16x8_sub = \"~lib/builtins/i16x8.sub\";\n export const i16x8_mul = \"~lib/builtins/i16x8.mul\";\n export const i16x8_neg = \"~lib/builtins/i16x8.neg\";\n export const i16x8_add_saturate_s = \"~lib/builtins/i16x8.add_saturate_s\";\n export const i16x8_add_saturate_u = \"~lib/builtins/i16x8.add_saturate_u\";\n export const i16x8_sub_saturate_s = \"~lib/builtins/i16x8.sub_saturate_s\";\n export const i16x8_sub_saturate_u = \"~lib/builtins/i16x8.sub_saturate_u\";\n export const i16x8_shl = \"~lib/builtins/i16x8.shl\";\n export const i16x8_shr_s = \"~lib/builtins/i16x8.shr_s\";\n export const i16x8_shr_u = \"~lib/builtins/i16x8.shr_u\";\n export const i16x8_any_true = \"~lib/builtins/i16x8.any_true\";\n export const i16x8_all_true = \"~lib/builtins/i16x8.all_true\";\n export const i16x8_eq = \"~lib/builtins/i16x8.eq\";\n export const i16x8_ne = \"~lib/builtins/i16x8.ne\";\n export const i16x8_lt_s = \"~lib/builtins/i16x8.lt_s\";\n export const i16x8_lt_u = \"~lib/builtins/i16x8.lt_u\";\n export const i16x8_le_s = \"~lib/builtins/i16x8.le_s\";\n export const i16x8_le_u = \"~lib/builtins/i16x8.le_u\";\n export const i16x8_gt_s = \"~lib/builtins/i16x8.gt_s\";\n export const i16x8_gt_u = \"~lib/builtins/i16x8.gt_u\";\n export const i16x8_ge_s = \"~lib/builtins/i16x8.ge_s\";\n export const i16x8_ge_u = \"~lib/builtins/i16x8.ge_u\";\n\n export const i32x4_splat = \"~lib/builtins/i32x4.splat\";\n export const i32x4_extract_lane = \"~lib/builtins/i32x4.extract_lane\";\n export const i32x4_replace_lane = \"~lib/builtins/i32x4.replace_lane\";\n export const i32x4_add = \"~lib/builtins/i32x4.add\";\n export const i32x4_sub = \"~lib/builtins/i32x4.sub\";\n export const i32x4_mul = \"~lib/builtins/i32x4.mul\";\n export const i32x4_neg = \"~lib/builtins/i32x4.neg\";\n export const i32x4_shl = \"~lib/builtins/i32x4.shl\";\n export const i32x4_shr_s = \"~lib/builtins/i32x4.shr_s\";\n export const i32x4_shr_u = \"~lib/builtins/i32x4.shr_u\";\n export const i32x4_any_true = \"~lib/builtins/i32x4.any_true\";\n export const i32x4_all_true = \"~lib/builtins/i32x4.all_true\";\n export const i32x4_eq = \"~lib/builtins/i32x4.eq\";\n export const i32x4_ne = \"~lib/builtins/i32x4.ne\";\n export const i32x4_lt_s = \"~lib/builtins/i32x4.lt_s\";\n export const i32x4_lt_u = \"~lib/builtins/i32x4.lt_u\";\n export const i32x4_le_s = \"~lib/builtins/i32x4.le_s\";\n export const i32x4_le_u = \"~lib/builtins/i32x4.le_u\";\n export const i32x4_gt_s = \"~lib/builtins/i32x4.gt_s\";\n export const i32x4_gt_u = \"~lib/builtins/i32x4.gt_u\";\n export const i32x4_ge_s = \"~lib/builtins/i32x4.ge_s\";\n export const i32x4_ge_u = \"~lib/builtins/i32x4.ge_u\";\n export const i32x4_trunc_s_f32x4_sat = \"~lib/builtins/i32x4.trunc_s_f32x4_sat\";\n export const i32x4_trunc_u_f32x4_sat = \"~lib/builtins/i32x4.trunc_u_f32x4_sat\";\n\n export const i64x2_splat = \"~lib/builtins/i64x2.splat\";\n export const i64x2_extract_lane = \"~lib/builtins/i64x2.extract_lane\";\n export const i64x2_replace_lane = \"~lib/builtins/i64x2.replace_lane\";\n export const i64x2_add = \"~lib/builtins/i64x2.add\";\n export const i64x2_sub = \"~lib/builtins/i64x2.sub\"; // i64x2 has no .mul\n export const i64x2_neg = \"~lib/builtins/i64x2.neg\";\n export const i64x2_shl = \"~lib/builtins/i64x2.shl\";\n export const i64x2_shr_s = \"~lib/builtins/i64x2.shr_s\";\n export const i64x2_shr_u = \"~lib/builtins/i64x2.shr_u\";\n export const i64x2_any_true = \"~lib/builtins/i64x2.any_true\";\n export const i64x2_all_true = \"~lib/builtins/i64x2.all_true\"; // i64x2 has no .eq etc.\n export const i64x2_trunc_s_f64x2_sat = \"~lib/builtins/i64x2.trunc_s_f64x2_sat\";\n export const i64x2_trunc_u_f64x2_sat = \"~lib/builtins/i64x2.trunc_u_f64x2_sat\";\n\n export const f32x4_splat = \"~lib/builtins/f32x4.splat\";\n export const f32x4_extract_lane = \"~lib/builtins/f32x4.extract_lane\";\n export const f32x4_replace_lane = \"~lib/builtins/f32x4.replace_lane\";\n export const f32x4_add = \"~lib/builtins/f32x4.add\";\n export const f32x4_sub = \"~lib/builtins/f32x4.sub\";\n export const f32x4_mul = \"~lib/builtins/f32x4.mul\";\n export const f32x4_div = \"~lib/builtins/f32x4.div\";\n export const f32x4_neg = \"~lib/builtins/f32x4.neg\";\n export const f32x4_min = \"~lib/builtins/f32x4.min\";\n export const f32x4_max = \"~lib/builtins/f32x4.max\";\n export const f32x4_abs = \"~lib/builtins/f32x4.abs\";\n export const f32x4_sqrt = \"~lib/builtins/f32x4.sqrt\";\n export const f32x4_eq = \"~lib/builtins/f32x4.eq\";\n export const f32x4_ne = \"~lib/builtins/f32x4.ne\";\n export const f32x4_lt = \"~lib/builtins/f32x4.lt\";\n export const f32x4_le = \"~lib/builtins/f32x4.le\";\n export const f32x4_gt = \"~lib/builtins/f32x4.gt\";\n export const f32x4_ge = \"~lib/builtins/f32x4.ge\";\n export const f32x4_convert_s_i32x4 = \"~lib/builtins/f32x4.convert_s_i32x4\";\n export const f32x4_convert_u_i32x4 = \"~lib/builtins/f32x4.convert_u_i32x4\";\n\n export const f64x2_splat = \"~lib/builtins/f64x2.splat\";\n export const f64x2_extract_lane = \"~lib/builtins/f64x2.extract_lane\";\n export const f64x2_replace_lane = \"~lib/builtins/f64x2.replace_lane\";\n export const f64x2_add = \"~lib/builtins/f64x2.add\";\n export const f64x2_sub = \"~lib/builtins/f64x2.sub\";\n export const f64x2_mul = \"~lib/builtins/f64x2.mul\";\n export const f64x2_div = \"~lib/builtins/f64x2.div\";\n export const f64x2_neg = \"~lib/builtins/f64x2.neg\";\n export const f64x2_min = \"~lib/builtins/f64x2.min\";\n export const f64x2_max = \"~lib/builtins/f64x2.max\";\n export const f64x2_abs = \"~lib/builtins/f64x2.abs\";\n export const f64x2_sqrt = \"~lib/builtins/f64x2.sqrt\";\n export const f64x2_eq = \"~lib/builtins/f64x2.eq\";\n export const f64x2_ne = \"~lib/builtins/f64x2.ne\";\n export const f64x2_lt = \"~lib/builtins/f64x2.lt\";\n export const f64x2_le = \"~lib/builtins/f64x2.le\";\n export const f64x2_gt = \"~lib/builtins/f64x2.gt\";\n export const f64x2_ge = \"~lib/builtins/f64x2.ge\";\n export const f64x2_convert_s_i64x2 = \"~lib/builtins/f64x2.convert_s_i64x2\";\n export const f64x2_convert_u_i64x2 = \"~lib/builtins/f64x2.convert_u_i64x2\";\n\n export const v8x16_shuffle = \"~lib/builtins/v8x16.shuffle\";\n\n // internals\n export const heap_base = \"~lib/heap/__heap_base\";\n export const rtti_base = \"~lib/rt/__rtti_base\";\n export const visit_globals = \"~lib/rt/__visit_globals\";\n export const visit_members = \"~lib/rt/__visit_members\";\n\n // std/diagnostics.ts\n export const ERROR = \"~lib/diagnostics/ERROR\";\n export const WARNING = \"~lib/diagnostics/WARNING\";\n export const INFO = \"~lib/diagnostics/INFO\";\n\n // std/memory.ts\n export const memory_size = \"~lib/memory/memory.size\";\n export const memory_grow = \"~lib/memory/memory.grow\";\n export const memory_copy = \"~lib/memory/memory.copy\";\n export const memory_fill = \"~lib/memory/memory.fill\";\n export const memory_allocate = \"~lib/memory/memory.allocate\";\n export const memory_free = \"~lib/memory/memory.free\";\n export const memory_reset = \"~lib/memory/memory.reset\";\n\n // std/runtime.ts\n export const runtime_instanceof = \"~lib/runtime/runtime.instanceof\";\n export const runtime_flags = \"~lib/runtime/runtime.flags\";\n export const runtime_allocate = \"~lib/util/runtime/allocate\";\n export const runtime_reallocate = \"~lib/util/runtime/reallocate\";\n export const runtime_register = \"~lib/util/runtime/register\";\n export const runtime_discard = \"~lib/util/runtime/discard\";\n export const runtime_makeArray = \"~lib/util/runtime/makeArray\";\n\n // std/typedarray.ts\n export const Int8Array = \"~lib/typedarray/Int8Array\";\n export const Uint8Array = \"~lib/typedarray/Uint8Array\";\n export const Int16Array = \"~lib/typedarray/Int16Array\";\n export const Uint16Array = \"~lib/typedarray/Uint16Array\";\n export const Int32Array = \"~lib/typedarray/Int32Array\";\n export const Uint32Array = \"~lib/typedarray/Uint32Array\";\n export const Int64Array = \"~lib/typedarray/Int64Array\";\n export const Uint64Array = \"~lib/typedarray/Uint64Array\";\n export const Uint8ClampedArray = \"~lib/typedarray/Uint8ClampedArray\";\n export const Float32Array = \"~lib/typedarray/Float32Array\";\n export const Float64Array = \"~lib/typedarray/Float64Array\";\n\n // compiler generated\n export const started = \"~lib/started\";\n export const argc = \"~lib/argc\";\n export const setargc = \"~lib/setargc\";\n export const capabilities = \"~lib/capabilities\";\n}\n\n/** Compiles a call to a built-in function. */\nexport function compileCall(\n /* Compiler reference. */\n compiler: Compiler,\n /** Respective function prototype. */\n prototype: FunctionPrototype,\n /** Pre-resolved type arguments. */\n typeArguments: Type[] | null,\n /** Operand expressions. */\n operands: Expression[],\n /** Contextual type. */\n contextualType: Type,\n /** Respective call expression. */\n reportNode: CallExpression,\n /** Indicates that contextual type is ASM type. */\n isAsm: bool = false\n): ExpressionRef {\n var module = compiler.module;\n\n // NOTE that some implementations below make use of the select expression where straight-forward.\n // whether worth or not should probably be tested once it's known if/how embedders handle it.\n // search: createSelect\n\n // NOTE that consolidation of individual instructions into a single case isn't exactly scientific\n // below, but rather done to make this file easier to work with. If there was a general rule it'd\n // most likely be \"three or more instructions that only differ in their actual opcode\".\n\n var directize = false;\n\n switch (prototype.internalName) {\n\n // === Static type evaluation =================================================================\n\n case BuiltinSymbols.isInteger: { // isInteger() / isInteger(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return type.is(TypeFlags.INTEGER) && !type.is(TypeFlags.REFERENCE)\n ? module.i32(1)\n : module.i32(0);\n }\n case BuiltinSymbols.isFloat: { // isFloat() / isFloat(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return type.is(TypeFlags.FLOAT)\n ? module.i32(1)\n : module.i32(0);\n }\n case BuiltinSymbols.isBoolean: { // isBoolean() / isBoolean(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return type == Type.bool\n ? module.i32(1)\n : module.i32(0);\n }\n case BuiltinSymbols.isSigned: { // isSigned() / isSigned(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return type.is(TypeFlags.SIGNED)\n ? module.i32(1)\n : module.i32(0);\n }\n case BuiltinSymbols.isReference: { // isReference() / isReference(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return type.is(TypeFlags.REFERENCE)\n ? module.i32(1)\n : module.i32(0);\n }\n case BuiltinSymbols.isString: { // isString() / isString(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n let classType = type.classReference;\n if (classType) {\n let stringInstance = compiler.program.stringInstance;\n if (stringInstance && classType.isAssignableTo(stringInstance)) return module.i32(1);\n }\n return module.i32(0);\n }\n case BuiltinSymbols.isArray: { // isArray() / isArray(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n let classReference = type.classReference;\n if (!classReference) return module.i32(0);\n let classPrototype = classReference.prototype;\n return module.i32(classPrototype.extends(compiler.program.arrayPrototype) ? 1 : 0);\n }\n case BuiltinSymbols.isArrayLike: { // isArrayLike() / isArrayLike(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n let classReference = type.classReference;\n if (!classReference) return module.i32(0);\n return module.i32(classReference.isArrayLike ? 1 : 0);\n }\n case BuiltinSymbols.isFunction: { // isFunction / isFunction(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return module.i32(type.signatureReference ? 1 : 0);\n }\n case BuiltinSymbols.isNullable: { // isNullable / isNullable(value: T) -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return module.i32(type.is(TypeFlags.NULLABLE) ? 1 : 0);\n }\n case BuiltinSymbols.isDefined: { // isDefined(expression) -> bool\n compiler.currentType = Type.bool;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let element = compiler.resolver.resolveExpression(\n operands[0],\n compiler.currentFlow,\n Type.auto,\n ReportMode.SWALLOW\n );\n return module.i32(element ? 1 : 0);\n }\n case BuiltinSymbols.isConstant: { // isConstant(expression) -> bool\n compiler.currentType = Type.bool;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let expr = compiler.compileExpression(operands[0], Type.auto);\n compiler.currentType = Type.bool;\n return module.i32(getExpressionId(expr) == ExpressionId.Const ? 1 : 0);\n }\n case BuiltinSymbols.isManaged: { // isManaged() -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return module.i32(type.isManaged ? 1 : 0);\n }\n case BuiltinSymbols.isVoid: { // isVoid() -> bool\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.bool;\n if (!type) return module.unreachable();\n return module.i32(type.kind == TypeKind.VOID ? 1 : 0);\n }\n case BuiltinSymbols.lengthof: { // lengthof(): i32\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.i32;\n if (!type) return module.unreachable();\n\n // Report if there is no call signature\n let signatureReference = type.signatureReference;\n if (!signatureReference) {\n compiler.error(\n DiagnosticCode.Type_0_has_no_call_signatures,\n reportNode.range, \"1\", (typeArguments ? typeArguments.length : 1).toString(10)\n );\n return module.unreachable();\n }\n\n let parameterNames = signatureReference.parameterNames;\n return module.i32(!parameterNames ? 0 : parameterNames.length);\n }\n case BuiltinSymbols.sizeof: { // sizeof() -> usize\n compiler.currentType = compiler.options.usizeType;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 0, reportNode, compiler)\n ) return module.unreachable();\n let byteSize = (typeArguments)[0].byteSize;\n let expr: ExpressionRef;\n if (compiler.options.isWasm64) {\n // implicitly wrap if contextual type is a 32-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size <= 32) {\n compiler.currentType = Type.u32;\n expr = module.i32(byteSize);\n } else {\n expr = module.i64(byteSize, 0);\n }\n } else {\n // implicitly extend if contextual type is a 64-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size == 64) {\n compiler.currentType = Type.u64;\n expr = module.i64(byteSize, 0);\n } else {\n expr = module.i32(byteSize);\n }\n }\n return expr;\n }\n case BuiltinSymbols.alignof: { // alignof() -> usize\n compiler.currentType = compiler.options.usizeType;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 0, reportNode, compiler)\n ) return module.unreachable();\n let byteSize = (typeArguments)[0].byteSize;\n assert(isPowerOf2(byteSize));\n let alignLog2 = ctz(byteSize);\n let expr: ExpressionRef;\n if (compiler.options.isWasm64) {\n // implicitly wrap if contextual type is a 32-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size <= 32) {\n compiler.currentType = Type.u32;\n expr = module.i32(alignLog2);\n } else {\n expr = module.i64(alignLog2, 0);\n }\n } else {\n // implicitly extend if contextual type is a 64-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size == 64) {\n compiler.currentType = Type.u64;\n expr = module.i64(alignLog2, 0);\n } else {\n expr = module.i32(alignLog2);\n }\n }\n return expr;\n }\n case BuiltinSymbols.offsetof: { // offsetof(fieldName?: string) -> usize\n compiler.currentType = compiler.options.usizeType;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsOptional(operands, 0, 1, reportNode, compiler)\n ) return module.unreachable();\n let classType = typeArguments![0].classReference;\n if (!classType) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let offset: i32;\n if (operands.length) {\n if (\n operands[0].kind != NodeKind.LITERAL ||\n (operands[0]).literalKind != LiteralKind.STRING\n ) {\n compiler.error(\n DiagnosticCode.String_literal_expected,\n operands[0].range\n );\n return module.unreachable();\n }\n let fieldName = (operands[0]).value;\n let field = classType.members ? classType.members.get(fieldName) : null;\n if (!(field && field.kind == ElementKind.FIELD)) {\n compiler.error(\n DiagnosticCode.Type_0_has_no_property_1,\n operands[0].range, classType.internalName, fieldName\n );\n return module.unreachable();\n }\n offset = (field).memoryOffset;\n } else {\n offset = classType.currentMemoryOffset;\n }\n if (compiler.options.isWasm64) {\n // implicitly wrap if contextual type is a 32-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size <= 32) {\n compiler.currentType = Type.u32;\n return module.i32(offset);\n } else {\n return module.i64(offset);\n }\n } else {\n // implicitly extend if contextual type is a 64-bit integer\n if (contextualType.is(TypeFlags.INTEGER) && contextualType.size == 64) {\n compiler.currentType = Type.u64;\n return module.i64(offset);\n } else {\n return module.i32(offset);\n }\n }\n }\n case BuiltinSymbols.nameof: {\n // Check to make sure a parameter or a type was passed to the builtin\n let resultType = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n if (!resultType) return module.unreachable();\n\n let value: string;\n if (resultType.is(TypeFlags.REFERENCE)) {\n let classReference = resultType.classReference;\n if (!classReference) {\n assert(resultType.signatureReference);\n value = \"Function\";\n } else {\n value = classReference.name;\n }\n } else {\n switch (resultType.kind) {\n case TypeKind.BOOL: { value = \"bool\"; break; }\n case TypeKind.I8: { value = \"i8\"; break; }\n case TypeKind.U8: { value = \"u8\"; break; }\n case TypeKind.I16: { value = \"i16\"; break; }\n case TypeKind.U16: { value = \"u16\"; break; }\n case TypeKind.I32: { value = \"i32\"; break; }\n case TypeKind.U32: { value = \"u32\"; break; }\n case TypeKind.F32: { value = \"f32\"; break; }\n case TypeKind.I64: { value = \"i64\"; break; }\n case TypeKind.U64: { value = \"u64\"; break; }\n case TypeKind.F64: { value = \"f64\"; break; }\n case TypeKind.ISIZE: { value = \"isize\"; break; }\n case TypeKind.USIZE: { value = \"usize\"; break; }\n case TypeKind.V128: { value = \"v128\"; break; }\n // If the kind is not set properly, throw an error.\n // The default case falls through to satisfy that value is always set, and never null.\n default: assert(false);\n case TypeKind.VOID: { value = \"void\"; break; }\n }\n }\n\n return compiler.ensureStaticString(value);\n }\n\n // === Math ===================================================================================\n\n case BuiltinSymbols.clz: // any_bitcount(value: T) -> T\n case BuiltinSymbols.ctz:\n case BuiltinSymbols.popcnt: {\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.i32, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let op: UnaryOp = -1;\n switch (prototype.internalName) {\n case BuiltinSymbols.clz: {\n switch (type.kind) {\n case TypeKind.BOOL:\n case TypeKind.I8:\n case TypeKind.U8:\n case TypeKind.I16:\n case TypeKind.U16:\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.ClzI32; break; }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.ClzI64\n : UnaryOp.ClzI32;\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.ClzI64; break; }\n }\n break;\n }\n case BuiltinSymbols.ctz: {\n switch (type.kind) {\n case TypeKind.BOOL:\n case TypeKind.I8:\n case TypeKind.U8:\n case TypeKind.I16:\n case TypeKind.U16:\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.CtzI32; break; }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.CtzI64\n : UnaryOp.CtzI32;\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.CtzI64; break; }\n }\n break;\n }\n case BuiltinSymbols.popcnt: {\n switch (compiler.currentType.kind) {\n case TypeKind.BOOL:\n case TypeKind.I8:\n case TypeKind.U8:\n case TypeKind.I16:\n case TypeKind.U16:\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.PopcntI32; break; }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.PopcntI64\n : UnaryOp.PopcntI32;\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.PopcntI64; break; }\n }\n break;\n }\n }\n if (op == -1) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n return module.unary(op, arg0);\n }\n case BuiltinSymbols.rotl: { // rotl(value: T, shift: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.i32, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT);\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = compiler.ensureSmallIntegerWrap(\n module.binary(BinaryOp.RotlI32, arg0, arg1),\n type\n );\n // fall-through\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.RotlI32, arg0, arg1);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n compiler.options.isWasm64\n ? BinaryOp.RotlI64\n : BinaryOp.RotlI32,\n arg0, arg1\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.RotlI64, arg0, arg1);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr; // possibly overflows\n }\n case BuiltinSymbols.rotr: { // rotr(value: T, shift: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.i32, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT);\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.BOOL: {\n expr = compiler.ensureSmallIntegerWrap(\n module.binary(BinaryOp.RotrI32, arg0, arg1),\n type\n );\n break;\n }\n case TypeKind.I32:\n case TypeKind.U32: {\n expr = module.binary(BinaryOp.RotrI32, arg0, arg1);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.ISIZE: {\n expr = module.binary(\n compiler.options.isWasm64\n ? BinaryOp.RotrI64\n : BinaryOp.RotrI32,\n arg0, arg1\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.binary(BinaryOp.RotrI64, arg0, arg1);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr; // possibly overflowws\n }\n case BuiltinSymbols.abs: { // abs(value: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: {\n let flow = compiler.currentFlow;\n\n // possibly overflows, e.g. abs(-128) == 128\n let tempLocal1 = flow.getTempLocal(Type.i32);\n let tempLocalIndex2 = flow.getAndFreeTempLocal(Type.i32).index;\n let tempLocalIndex1 = tempLocal1.index;\n\n // (x + (x >> 31)) ^ (x >> 31)\n expr = module.binary(BinaryOp.XorI32,\n module.binary(BinaryOp.AddI32,\n module.local_tee(\n tempLocalIndex2,\n module.binary(BinaryOp.ShrI32,\n module.local_tee(tempLocalIndex1, arg0),\n module.i32(31)\n )\n ),\n module.local_get(tempLocalIndex1, NativeType.I32)\n ),\n module.local_get(tempLocalIndex2, NativeType.I32)\n );\n\n flow.freeTempLocal(tempLocal1);\n break;\n }\n case TypeKind.ISIZE: {\n let options = compiler.options;\n let flow = compiler.currentFlow;\n let wasm64 = options.isWasm64;\n\n let tempLocal1 = flow.getTempLocal(options.usizeType);\n let tempLocalIndex2 = flow.getAndFreeTempLocal(options.usizeType).index;\n let tempLocalIndex1 = tempLocal1.index;\n\n expr = module.binary(wasm64 ? BinaryOp.XorI64 : BinaryOp.XorI32,\n module.binary(wasm64 ? BinaryOp.AddI64 : BinaryOp.AddI32,\n module.local_tee(\n tempLocalIndex2,\n module.binary(wasm64 ? BinaryOp.ShrI64 : BinaryOp.ShrI32,\n module.local_tee(tempLocalIndex1, arg0),\n wasm64 ? module.i64(63) : module.i32(31)\n )\n ),\n module.local_get(tempLocalIndex1, options.nativeSizeType)\n ),\n module.local_get(tempLocalIndex2, options.nativeSizeType)\n );\n\n flow.freeTempLocal(tempLocal1);\n break;\n }\n case TypeKind.I64: {\n let flow = compiler.currentFlow;\n\n let tempLocal1 = flow.getTempLocal(Type.i64);\n let tempLocalIndex2 = flow.getAndFreeTempLocal(Type.i64).index;\n let tempLocalIndex1 = tempLocal1.index;\n\n // (x + (x >> 63)) ^ (x >> 63)\n expr = module.binary(BinaryOp.XorI64,\n module.binary(BinaryOp.AddI64,\n module.local_tee(\n tempLocalIndex2,\n module.binary(BinaryOp.ShrI64,\n module.local_tee(tempLocalIndex1, arg0),\n module.i64(63)\n )\n ),\n module.local_get(tempLocalIndex1, NativeType.I64)\n ),\n module.local_get(tempLocalIndex2, NativeType.I64)\n );\n\n flow.freeTempLocal(tempLocal1);\n break;\n }\n case TypeKind.USIZE:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.U64:\n case TypeKind.BOOL: {\n expr = arg0;\n break;\n }\n case TypeKind.F32: {\n expr = module.unary(UnaryOp.AbsF32, arg0);\n break;\n }\n case TypeKind.F64: {\n expr = module.unary(UnaryOp.AbsF64, arg0);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr;\n }\n case BuiltinSymbols.max: { // max(left: T, right: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP);\n let op: BinaryOp;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: { op = BinaryOp.GtI32; break; }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: { op = BinaryOp.GtU32; break; }\n case TypeKind.I64: { op = BinaryOp.GtI64; break; }\n case TypeKind.U64: { op = BinaryOp.GtU64; break; }\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.GtI64\n : BinaryOp.GtI32;\n break;\n }\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.GtU64\n : BinaryOp.GtU32;\n break;\n }\n case TypeKind.F32: {\n return module.binary(BinaryOp.MaxF32, arg0, arg1);\n }\n case TypeKind.F64: {\n return module.binary(BinaryOp.MaxF64, arg0, arg1);\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n }\n let flow = compiler.currentFlow;\n let nativeType = type.toNativeType();\n let tempLocal0 = flow.getTempLocal(type);\n flow.setLocalFlag(tempLocal0.index, LocalFlags.WRAPPED);\n let tempLocal1 = flow.getAndFreeTempLocal(type);\n flow.setLocalFlag(tempLocal1.index, LocalFlags.WRAPPED);\n flow.freeTempLocal(tempLocal0);\n return module.select(\n module.local_tee(tempLocal0.index, arg0),\n module.local_tee(tempLocal1.index, arg1),\n module.binary(op,\n module.local_get(tempLocal0.index, nativeType),\n module.local_get(tempLocal1.index, nativeType)\n )\n );\n }\n case BuiltinSymbols.min: { // min(left: T, right: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP);\n let op: BinaryOp;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32: { op = BinaryOp.LtI32; break; }\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: { op = BinaryOp.LtU32; break; }\n case TypeKind.I64: { op = BinaryOp.LtI64; break; }\n case TypeKind.U64: { op = BinaryOp.LtU64; break; }\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.LtI64\n : BinaryOp.LtI32;\n break;\n }\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.LtU64\n : BinaryOp.LtU32;\n break;\n }\n case TypeKind.F32: {\n return module.binary(BinaryOp.MinF32, arg0, arg1);\n }\n case TypeKind.F64: {\n return module.binary(BinaryOp.MinF64, arg0, arg1);\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n }\n let flow = compiler.currentFlow;\n let nativeType = type.toNativeType();\n let tempLocal0 = flow.getTempLocal(type);\n flow.setLocalFlag(tempLocal0.index, LocalFlags.WRAPPED);\n let tempLocal1 = flow.getAndFreeTempLocal(type);\n flow.setLocalFlag(tempLocal1.index, LocalFlags.WRAPPED);\n flow.freeTempLocal(tempLocal0);\n return module.select(\n module.local_tee(tempLocal0.index, arg0),\n module.local_tee(tempLocal1.index, arg1),\n module.binary(op,\n module.local_get(tempLocal0.index, nativeType),\n module.local_get(tempLocal1.index, nativeType)\n )\n );\n }\n case BuiltinSymbols.ceil: // any_rounding(value: T) -> T\n case BuiltinSymbols.floor: {\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.NONE);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let op: UnaryOp;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.I64:\n case TypeKind.ISIZE:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.U64:\n case TypeKind.USIZE:\n case TypeKind.BOOL: return arg0; // considered rounded\n case TypeKind.F32: {\n op = prototype.internalName == BuiltinSymbols.ceil\n ? UnaryOp.CeilF32\n : UnaryOp.FloorF32;\n break;\n }\n case TypeKind.F64: {\n op = prototype.internalName == BuiltinSymbols.ceil\n ? UnaryOp.CeilF64\n : UnaryOp.FloorF64;\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n }\n return module.unary(op, arg0);\n }\n case BuiltinSymbols.copysign: { // copysign(left: T, right: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.NONE);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT);\n let op: BinaryOp;\n switch (type.kind) {\n // TODO: does an integer version make sense?\n case TypeKind.F32: { op = BinaryOp.CopysignF32; break; }\n case TypeKind.F64: { op = BinaryOp.CopysignF64; break; }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n }\n return module.binary(op, arg0, arg1);\n }\n case BuiltinSymbols.nearest: { // nearest(value: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.NONE);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.I64:\n case TypeKind.ISIZE:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.U64:\n case TypeKind.USIZE:\n case TypeKind.BOOL: {\n expr = arg0;\n break;\n }\n case TypeKind.F32: {\n expr = module.unary(UnaryOp.NearestF32, arg0);\n break;\n }\n case TypeKind.F64: {\n expr = module.unary(UnaryOp.NearestF64, arg0);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr;\n }\n case BuiltinSymbols.reinterpret: { // reinterpret(value: *) -> T\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.currentType = type;\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I32:\n case TypeKind.U32: {\n let arg0 = compiler.compileExpression(operands[0], Type.f32, Constraints.CONV_IMPLICIT);\n expr = module.unary(UnaryOp.ReinterpretF32, arg0);\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n let arg0 = compiler.compileExpression(operands[0], Type.f64, Constraints.CONV_IMPLICIT);\n expr = module.unary(UnaryOp.ReinterpretF64, arg0);\n break;\n }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.isWasm64\n ? Type.f64\n : Type.f32,\n Constraints.CONV_IMPLICIT\n );\n expr = module.unary(\n compiler.options.isWasm64\n ? UnaryOp.ReinterpretF64\n : UnaryOp.ReinterpretF32,\n arg0\n );\n break;\n }\n case TypeKind.F32: {\n let arg0 = compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_IMPLICIT);\n expr = module.unary(UnaryOp.ReinterpretI32, arg0);\n break;\n }\n case TypeKind.F64: {\n let arg0 = compiler.compileExpression(operands[0], Type.i64, Constraints.CONV_IMPLICIT);\n expr = module.unary(UnaryOp.ReinterpretI64, arg0);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n compiler.currentType = type;\n return expr;\n }\n case BuiltinSymbols.sqrt: { // sqrt(value: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.NONE);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.currentType = type;\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let expr: ExpressionRef;\n switch (type.kind) { // TODO: integer versions (that return f64 or convert)?\n case TypeKind.F32: {\n expr = module.unary(UnaryOp.SqrtF32, arg0);\n break;\n }\n case TypeKind.F64: {\n expr = module.unary(UnaryOp.SqrtF64, arg0);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr;\n }\n case BuiltinSymbols.trunc: { // trunc(value: T) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.f64, Constraints.NONE);\n let type = compiler.currentType;\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n return module.unreachable();\n }\n let expr: ExpressionRef;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.I64:\n case TypeKind.ISIZE:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.U64:\n case TypeKind.USIZE:\n case TypeKind.BOOL: {\n expr = arg0;\n break;\n }\n // TODO: truncate to contextual type directly (if not void etc.)?\n case TypeKind.F32: {\n expr = module.unary(UnaryOp.TruncF32, arg0);\n break;\n }\n case TypeKind.F64: {\n expr = module.unary(UnaryOp.TruncF64, arg0);\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = module.unreachable();\n break;\n }\n }\n return expr;\n }\n\n // === Memory access ==========================================================================\n\n case BuiltinSymbols.load: { // load(offset: usize, immOffset?: usize, immAlign?: usize) -> T*\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsOptional(operands, 1, 3, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n let outType = (\n contextualType != Type.auto &&\n type.is(TypeFlags.INTEGER) &&\n contextualType.is(TypeFlags.INTEGER) &&\n contextualType.size > type.size\n ) ? contextualType : type;\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let numOperands = operands.length;\n let immOffset = numOperands >= 2 ? evaluateImmediateOffset(operands[1], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = outType;\n return module.unreachable();\n }\n let immAlign: i32;\n let naturalAlign = type.byteSize;\n if (numOperands == 3) {\n immAlign = evaluateImmediateOffset(operands[2], compiler);\n if (immAlign < 0) {\n compiler.currentType = outType;\n return module.unreachable();\n }\n if (immAlign > naturalAlign) {\n compiler.error(\n DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,\n operands[2].range, \"Alignment\", \"0\", naturalAlign.toString()\n );\n compiler.currentType = outType;\n return module.unreachable();\n }\n if (!isPowerOf2(immAlign)) {\n compiler.error(\n DiagnosticCode._0_must_be_a_power_of_two,\n operands[2].range, \"Alignment\"\n );\n compiler.currentType = outType;\n return module.unreachable();\n }\n } else {\n immAlign = naturalAlign;\n }\n compiler.currentType = outType;\n return module.load(\n type.byteSize,\n type.is(TypeFlags.SIGNED | TypeFlags.INTEGER),\n arg0,\n outType.toNativeType(),\n immOffset,\n immAlign\n );\n }\n case BuiltinSymbols.store: { // store(offset: usize, value: T*, offset?: usize, align?: usize) -> void\n compiler.currentType = Type.void;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsOptional(operands, 2, 4, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = isAsm\n ? compiler.compileExpression(operands[1],\n contextualType,\n Constraints.CONV_IMPLICIT\n )\n : compiler.compileExpression(\n operands[1],\n type,\n type.is(TypeFlags.INTEGER)\n ? Constraints.NONE // no need to convert to small int (but now might result in a float)\n : Constraints.CONV_IMPLICIT\n );\n let inType = compiler.currentType;\n if (\n type.is(TypeFlags.INTEGER) &&\n (\n !inType.is(TypeFlags.INTEGER) || // float to int\n inType.size < type.size // int to larger int (clear garbage bits)\n )\n ) {\n arg1 = compiler.convertExpression(arg1,\n inType, type,\n false, false, // still clears garbage bits when not wrapping\n operands[1]\n );\n inType = type;\n }\n let immOffset = operands.length >= 3 ? evaluateImmediateOffset(operands[2], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n let immAlign: i32;\n let naturalAlign = type.byteSize;\n if (operands.length == 4) {\n immAlign = evaluateImmediateOffset(operands[3], compiler);\n if (immAlign < 0) {\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n if (immAlign > naturalAlign) {\n compiler.error(\n DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,\n operands[3].range, \"Alignment\", \"0\", naturalAlign.toString()\n );\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n if (!isPowerOf2(immAlign)) {\n compiler.error(\n DiagnosticCode._0_must_be_a_power_of_two,\n operands[3].range, \"Alignment\"\n );\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n } else {\n immAlign = naturalAlign;\n }\n compiler.currentType = Type.void;\n return module.store(type.byteSize, arg0, arg1, inType.toNativeType(), immOffset, immAlign);\n }\n\n // === Atomics ================================================================================\n\n case BuiltinSymbols.atomic_load: { // load(offset: usize, immOffset?: usize) -> T*\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsOptional(operands, 1, 2, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n let outType = (\n type.is(TypeFlags.INTEGER) &&\n contextualType.is(TypeFlags.INTEGER) &&\n contextualType.size > type.size\n ) ? contextualType : type;\n if (!type.is(TypeFlags.INTEGER)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = outType;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let immOffset = operands.length == 2 ? evaluateImmediateOffset(operands[1], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = outType;\n return module.unreachable();\n }\n compiler.currentType = outType;\n return module.atomic_load(\n type.byteSize,\n arg0,\n outType.toNativeType(),\n immOffset\n );\n }\n case BuiltinSymbols.atomic_store: { // store(offset: usize, value: T*, immOffset?: usize) -> void\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n compiler.currentType = Type.void;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsOptional(operands, 2, 3, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (!type.is(TypeFlags.INTEGER) || type.size < 8) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = isAsm\n ? compiler.compileExpression(\n operands[1],\n contextualType,\n Constraints.CONV_IMPLICIT\n )\n : compiler.compileExpression(\n operands[1],\n type,\n type.is(TypeFlags.INTEGER)\n ? Constraints.NONE // no need to convert to small int (but now might result in a float)\n : Constraints.CONV_IMPLICIT\n );\n let inType = compiler.currentType;\n if (\n type.is(TypeFlags.INTEGER) &&\n (\n !inType.is(TypeFlags.INTEGER) || // float to int\n inType.size < type.size // int to larger int (clear garbage bits)\n )\n ) {\n arg1 = compiler.convertExpression(arg1,\n inType, type,\n false, false, // still clears garbage bits when not wrapping\n operands[1]\n );\n inType = type;\n }\n let immOffset = operands.length == 3 ? evaluateImmediateOffset(operands[2], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n compiler.currentType = Type.void;\n return module.atomic_store(type.byteSize, arg0, arg1, inType.toNativeType(), immOffset);\n }\n case BuiltinSymbols.atomic_add: // any_atomic_binary(ptr, value: T, immOffset?: usize) -> T\n case BuiltinSymbols.atomic_sub:\n case BuiltinSymbols.atomic_and:\n case BuiltinSymbols.atomic_or:\n case BuiltinSymbols.atomic_xor:\n case BuiltinSymbols.atomic_xchg: {\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsOptional(operands, 2, 3, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (!type.is(TypeFlags.INTEGER) || type.size < 8) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = isAsm\n ? compiler.compileExpression(operands[1],\n contextualType,\n Constraints.CONV_IMPLICIT\n )\n : compiler.compileExpression(\n operands[1],\n type,\n type.is(TypeFlags.INTEGER)\n ? Constraints.NONE // no need to convert to small int (but now might result in a float)\n : Constraints.CONV_IMPLICIT\n );\n let inType = compiler.currentType;\n if (\n type.is(TypeFlags.INTEGER) &&\n (\n !inType.is(TypeFlags.INTEGER) || // float to int\n inType.size < type.size // int to larger int (clear garbage bits)\n )\n ) {\n arg1 = compiler.convertExpression(arg1,\n inType, type,\n false, false, // still clears garbage bits when not wrapping\n operands[1]\n );\n inType = type;\n }\n let immOffset = operands.length == 3 ? evaluateImmediateOffset(operands[2], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = inType;\n return module.unreachable();\n }\n let op: AtomicRMWOp;\n switch (prototype.internalName) {\n default: assert(false);\n case BuiltinSymbols.atomic_add: { op = AtomicRMWOp.Add; break; }\n case BuiltinSymbols.atomic_sub: { op = AtomicRMWOp.Sub; break; }\n case BuiltinSymbols.atomic_and: { op = AtomicRMWOp.And; break; }\n case BuiltinSymbols.atomic_or: { op = AtomicRMWOp.Or; break; }\n case BuiltinSymbols.atomic_xor: { op = AtomicRMWOp.Xor; break; }\n case BuiltinSymbols.atomic_xchg: { op = AtomicRMWOp.Xchg; break; }\n }\n compiler.currentType = inType;\n return module.atomic_rmw(\n op, type.byteSize, immOffset, arg0, arg1, inType.toNativeType()\n );\n }\n case BuiltinSymbols.atomic_cmpxchg: { // cmpxchg(ptr: usize, expected: T, replacement: T, off?: usize): T\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsOptional(operands, 3, 4, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (!type.is(TypeFlags.INTEGER) || type.size < 8) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = isAsm\n ? compiler.compileExpression(operands[1],\n contextualType,\n Constraints.CONV_IMPLICIT\n )\n : compiler.compileExpression(\n operands[1],\n type,\n type.is(TypeFlags.INTEGER)\n ? Constraints.NONE // no need to convert to small int (but now might result in a float)\n : Constraints.CONV_IMPLICIT\n );\n let inType = compiler.currentType;\n let arg2 = compiler.compileExpression(operands[2],\n inType,\n Constraints.CONV_IMPLICIT\n );\n if (\n type.is(TypeFlags.INTEGER) &&\n (\n !inType.is(TypeFlags.INTEGER) || // float to int\n inType.size < type.size // int to larger int (clear garbage bits)\n )\n ) {\n arg1 = compiler.convertExpression(arg1,\n inType, type,\n false, false, // still clears garbage bits when not wrapping\n operands[1]\n );\n arg2 = compiler.convertExpression(arg2,\n inType, type,\n false, false, // still clears garbage bits when not wrapping\n operands[2]\n );\n inType = type;\n }\n let immOffset = operands.length == 4 ? evaluateImmediateOffset(operands[3], compiler) : 0; // reports\n if (immOffset < 0) {\n compiler.currentType = inType;\n return module.unreachable();\n }\n compiler.currentType = inType;\n return module.atomic_cmpxchg(\n type.byteSize, immOffset, arg0, arg1, arg2, inType.toNativeType()\n );\n }\n case BuiltinSymbols.atomic_wait: { // wait(ptr: usize, expected: T, timeout: i64): i32;\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n compiler.currentType = Type.i32;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (!type.is(TypeFlags.INTEGER) || type.size < 32) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = compiler.compileExpression(operands[1], type,\n Constraints.CONV_IMPLICIT\n );\n let arg2 = compiler.compileExpression(operands[2],\n Type.i64,\n Constraints.CONV_IMPLICIT\n );\n compiler.currentType = Type.i32;\n return module.atomic_wait(arg0, arg1, arg2, type.toNativeType());\n }\n case BuiltinSymbols.atomic_notify: { // notify(ptr: usize, count: i32): i32;\n if (!compiler.options.hasFeature(Feature.THREADS)) break;\n compiler.currentType = Type.i32;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = compiler.compileExpression(operands[0],\n compiler.options.usizeType,\n Constraints.CONV_IMPLICIT\n );\n let arg1 = compiler.compileExpression(operands[1],\n Type.i32,\n Constraints.CONV_IMPLICIT\n );\n compiler.currentType = Type.i32;\n return module.atomic_notify(arg0, arg1);\n }\n\n // === Control flow ===========================================================================\n\n case BuiltinSymbols.select: { // select(ifTrue: T, ifFalse: T, condition: bool) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) return module.unreachable();\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT)\n : compiler.compileExpression(operands[0], Type.auto);\n let type = compiler.currentType;\n if (!type.isAny(TypeFlags.VALUE | TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let arg1 = compiler.compileExpression(operands[1], type, Constraints.CONV_IMPLICIT);\n let arg2 = compiler.makeIsTrueish(\n compiler.compileExpression(operands[2], Type.bool),\n compiler.currentType // ^\n );\n compiler.currentType = type;\n return module.select(arg0, arg1, arg2);\n }\n case BuiltinSymbols.unreachable: { // unreachable() -> *\n if (typeArguments) {\n compiler.error(\n DiagnosticCode.Type_0_is_not_generic,\n reportNode.typeArgumentsRange, prototype.internalName\n );\n }\n checkArgsRequired(operands, 0, reportNode, compiler);\n return module.unreachable();\n }\n\n // === Memory =================================================================================\n\n case BuiltinSymbols.memory_size: { // memory.size() -> i32\n compiler.currentType = Type.i32;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 0, reportNode, compiler)\n ) return module.unreachable();\n return module.host(HostOp.MemorySize);\n }\n case BuiltinSymbols.memory_grow: { // memory.grow(pages: i32) -> i32\n compiler.currentType = Type.i32;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n return module.host(HostOp.MemoryGrow, null, [\n compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_IMPLICIT)\n ]);\n }\n case BuiltinSymbols.memory_copy: { // memory.copy(dest: usize, src: usize: n: usize) -> void\n compiler.currentType = Type.void;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) return module.unreachable();\n if (!compiler.options.hasFeature(Feature.BULK_MEMORY)) {\n let instance = compiler.resolver.resolveFunction(prototype, null); // reports\n compiler.currentType = Type.void;\n if (!instance) return module.unreachable();\n return compiler.compileCallDirect(instance, operands, reportNode);\n }\n let usizeType = compiler.options.usizeType;\n let arg0 = compiler.compileExpression(operands[0], usizeType, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], usizeType, Constraints.CONV_IMPLICIT);\n let arg2 = compiler.compileExpression(operands[2], usizeType, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.void;\n return module.memory_copy(arg0, arg1, arg2);\n }\n case BuiltinSymbols.memory_fill: { // memory.fill(dest: usize, value: u8, n: usize) -> void\n compiler.currentType = Type.void;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) return module.unreachable();\n if (!compiler.options.hasFeature(Feature.BULK_MEMORY)) {\n let instance = compiler.resolver.resolveFunction(prototype, null); // reports\n compiler.currentType = Type.void;\n if (!instance) return module.unreachable();\n return compiler.compileCallDirect(instance, operands, reportNode);\n }\n let usizeType = compiler.options.usizeType;\n let arg0 = compiler.compileExpression(operands[0], usizeType, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.u8, Constraints.CONV_IMPLICIT);\n let arg2 = compiler.compileExpression(operands[2], usizeType, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.void;\n return module.memory_fill(arg0, arg1, arg2);\n }\n\n // === Helpers ================================================================================\n\n case BuiltinSymbols.changetype: { // changetype(value: *) -> T\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let toType = typeArguments![0];\n let arg0 = compiler.compileExpression(operands[0], toType);\n let fromType = compiler.currentType;\n compiler.currentType = toType;\n if (fromType.size != toType.size) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n return module.unreachable();\n }\n return arg0;\n }\n case BuiltinSymbols.assert: { // assert(isTrueish: T, message?: string) -> T{!= null}\n if (\n checkTypeOptional(typeArguments, reportNode, compiler) |\n checkArgsOptional(operands, 1, 2, reportNode, compiler)\n ) {\n if (typeArguments) {\n assert(typeArguments.length); // otherwise invalid, should not been set at all\n compiler.currentType = typeArguments[0].nonNullableType;\n }\n return module.unreachable();\n }\n let arg0 = typeArguments\n ? compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP)\n : compiler.compileExpression(operands[0], Type.bool, Constraints.MUST_WRAP);\n let type = compiler.currentType;\n compiler.currentType = type.nonNullableType;\n\n // if the assertion can be proven statically, omit it\n if (getExpressionId(arg0 = module.precomputeExpression(arg0)) == ExpressionId.Const) {\n switch (getExpressionType(arg0)) {\n case NativeType.I32: {\n if (getConstValueI32(arg0) != 0) {\n if (contextualType == Type.void) {\n compiler.currentType = Type.void;\n return module.nop();\n }\n return arg0;\n }\n break;\n }\n case NativeType.I64: {\n if (getConstValueI64Low(arg0) != 0 || getConstValueI64High(arg0) != 0) {\n if (contextualType == Type.void) {\n compiler.currentType = Type.void;\n return module.nop();\n }\n return arg0;\n }\n break;\n }\n case NativeType.F32: {\n if (getConstValueF32(arg0) != 0) {\n if (contextualType == Type.void) {\n compiler.currentType = Type.void;\n return module.nop();\n }\n return arg0;\n }\n break;\n }\n case NativeType.F64: {\n if (getConstValueF64(arg0) != 0) {\n if (contextualType == Type.void) {\n compiler.currentType = Type.void;\n return module.nop();\n }\n return arg0;\n }\n break;\n }\n }\n }\n\n // return ifTrueish if assertions are disabled\n if (compiler.options.noAssert) {\n if (contextualType == Type.void) { // simplify if dropped anyway\n compiler.currentType = Type.void;\n return module.nop();\n }\n return arg0;\n }\n\n // otherwise call abort if the assertion is false-ish\n let abort = compileAbort(compiler, operands.length == 2 ? operands[1] : null, reportNode);\n compiler.currentType = type.nonNullableType;\n let expr: ExpressionRef;\n if (contextualType == Type.void) { // simplify if dropped anyway\n compiler.currentType = Type.void;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n expr = module.if(\n module.unary(UnaryOp.EqzI32, arg0),\n abort\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n expr = module.if(\n module.unary(UnaryOp.EqzI64, arg0),\n abort\n );\n break;\n }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n expr = module.if(\n module.unary(\n compiler.options.isWasm64\n ? UnaryOp.EqzI64\n : UnaryOp.EqzI32,\n arg0\n ),\n abort\n );\n break;\n }\n // TODO: also check for NaN in float assertions, as in `Boolean(NaN) -> false`?\n case TypeKind.F32: {\n expr = module.if(\n module.binary(BinaryOp.EqF32,\n arg0,\n module.f32(0)\n ),\n abort\n );\n break;\n }\n case TypeKind.F64: {\n expr = module.if(\n module.binary(BinaryOp.EqF64,\n arg0,\n module.f64(0)\n ),\n abort\n );\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = abort;\n break;\n }\n }\n } else {\n compiler.currentType = type.nonNullableType;\n switch (compiler.currentType.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.BOOL: {\n let flow = compiler.currentFlow;\n let tempLocal = flow.getAndFreeTempLocal(type);\n flow.setLocalFlag(tempLocal.index, LocalFlags.WRAPPED); // arg0 is wrapped\n expr = module.if(\n module.local_tee(tempLocal.index, arg0),\n module.local_get(tempLocal.index, NativeType.I32),\n abort\n );\n break;\n }\n case TypeKind.I64:\n case TypeKind.U64: {\n let tempLocal = compiler.currentFlow.getAndFreeTempLocal(Type.i64);\n expr = module.if(\n module.unary(UnaryOp.EqzI64,\n module.local_tee(tempLocal.index, arg0)\n ),\n abort,\n module.local_get(tempLocal.index, NativeType.I64)\n );\n break;\n }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n let tempLocal = compiler.currentFlow.getAndFreeTempLocal(compiler.options.usizeType);\n expr = module.if(\n module.unary(\n compiler.options.isWasm64\n ? UnaryOp.EqzI64\n : UnaryOp.EqzI32,\n module.local_tee(tempLocal.index, arg0)\n ),\n abort,\n module.local_get(tempLocal.index, compiler.options.nativeSizeType)\n );\n break;\n }\n case TypeKind.F32: {\n let tempLocal = compiler.currentFlow.getAndFreeTempLocal(Type.f32);\n expr = module.if(\n module.binary(BinaryOp.EqF32,\n module.local_tee(tempLocal.index, arg0),\n module.f32(0)\n ),\n abort,\n module.local_get(tempLocal.index, NativeType.F32)\n );\n break;\n }\n case TypeKind.F64: {\n let tempLocal = compiler.currentFlow.getAndFreeTempLocal(Type.f64);\n expr = module.if(\n module.binary(BinaryOp.EqF64,\n module.local_tee(tempLocal.index, arg0),\n module.f64(0)\n ),\n abort,\n module.local_get(tempLocal.index, NativeType.F64)\n );\n break;\n }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n expr = abort;\n break;\n }\n }\n }\n return expr;\n }\n case BuiltinSymbols.unchecked: { // unchecked(expr: *) -> *\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) return module.unreachable();\n let flow = compiler.currentFlow;\n let alreadyUnchecked = flow.is(FlowFlags.UNCHECKED_CONTEXT);\n flow.set(FlowFlags.UNCHECKED_CONTEXT);\n // eliminate unnecessary tees by preferring contextualType(=void):\n let expr = compiler.compileExpression(operands[0], contextualType);\n if (!alreadyUnchecked) flow.unset(FlowFlags.UNCHECKED_CONTEXT);\n return expr;\n }\n case BuiltinSymbols.call_direct: directize = true;\n case BuiltinSymbols.call_indirect: { // call_indirect(target: Function | u32, ...args: *[]) -> T\n if (\n checkTypeOptional(typeArguments, reportNode, compiler, true) |\n checkArgsOptional(operands, 1, i32.MAX_VALUE, reportNode, compiler)\n ) return module.unreachable();\n let returnType = typeArguments ? typeArguments[0] : contextualType;\n let arg0 = compiler.compileExpression(operands[0], Type.u32);\n let arg0Type = compiler.currentType;\n if (!(\n arg0Type == Type.u32 || // either plain index\n arg0Type.kind == TypeKind.U32 && arg0Type.signatureReference // or function reference\n )) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n operands[0].range\n );\n return module.unreachable();\n }\n let numOperands = operands.length - 1;\n let operandExprs = new Array(numOperands);\n let nativeReturnType = returnType.toNativeType();\n let parameterTypes = new Array(numOperands);\n let nativeParamTypes = new Array(numOperands);\n for (let i = 0; i < numOperands; ++i) {\n operandExprs[i] = compiler.compileExpression(operands[1 + i], Type.i32);\n let operandType = compiler.currentType;\n parameterTypes[i] = operandType;\n nativeParamTypes[i] = operandType.toNativeType();\n }\n let typeName = Signature.makeSignatureString(parameterTypes, returnType);\n let typeRef = module.getFunctionTypeBySignature(nativeReturnType, nativeParamTypes);\n if (!typeRef) typeRef = module.addFunctionType(typeName, nativeReturnType, nativeParamTypes);\n compiler.currentType = returnType;\n if (directize) {\n // if the index expression is precomputable to a constant value, emit a direct call\n if (getExpressionId(arg0 = module.precomputeExpression(arg0)) == ExpressionId.Const) {\n assert(getExpressionType(arg0) == NativeType.I32);\n let index = getConstValueI32(arg0);\n let functionTable = compiler.functionTable;\n if (index >= 0 && index < functionTable.length) {\n return module.call(functionTable[index], operandExprs, nativeReturnType);\n }\n }\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n operands[0].range\n );\n return module.unreachable();\n }\n // of course this can easily result in a 'RuntimeError: function signature mismatch' trap and\n // thus must be used with care. it exists because it *might* be useful in specific scenarios.\n return module.call_indirect(arg0, operandExprs, typeName);\n }\n case BuiltinSymbols.instantiate: { // instantiate(...args: *[]) -> T\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true)\n ) return module.unreachable();\n let classInstance = typeArguments![0].classReference;\n if (!classInstance) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n compiler.currentType = classInstance.type;\n return compiler.compileInstantiate(classInstance, operands, Constraints.NONE, reportNode);\n }\n\n // === User-defined diagnostics ===============================================================\n\n case BuiltinSymbols.ERROR: {\n checkTypeAbsent(typeArguments, reportNode, prototype);\n compiler.error(\n DiagnosticCode.User_defined_0,\n reportNode.range, (operands.length ? operands[0] : reportNode).range.toString()\n );\n return module.unreachable();\n }\n case BuiltinSymbols.WARNING: {\n checkTypeAbsent(typeArguments, reportNode, prototype);\n compiler.warning(\n DiagnosticCode.User_defined_0,\n reportNode.range, (operands.length ? operands[0] : reportNode).range.toString()\n );\n return module.nop();\n }\n case BuiltinSymbols.INFO: {\n checkTypeAbsent(typeArguments, reportNode, prototype);\n compiler.info(\n DiagnosticCode.User_defined_0,\n reportNode.range, (operands.length ? operands[0] : reportNode).range.toString()\n );\n return module.nop();\n }\n\n // === Portable type conversions ==============================================================\n\n case BuiltinSymbols.i8: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.i8;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.i8, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.i16: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.i16;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.i16, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.i32: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.i32;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.i64: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.i64;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.i64, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.isize: {\n let isizeType = compiler.options.isizeType;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = isizeType;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], isizeType, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.u8: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.u8;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.u8, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.u16: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.u16;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.u16, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.u32: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.u32;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.u32, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.u64: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.u64;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.u64, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.usize: {\n let usizeType = compiler.options.usizeType;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = usizeType;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], usizeType, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.bool: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.bool;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.bool, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.f32: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.f32;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.f32, Constraints.CONV_EXPLICIT);\n }\n case BuiltinSymbols.f64: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.f64;\n return module.unreachable();\n }\n return compiler.compileExpression(operands[0], Type.f64, Constraints.CONV_EXPLICIT);\n }\n\n // === SIMD ===================================================================================\n\n case BuiltinSymbols.v128: // alias for now\n case BuiltinSymbols.i8x16: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 16, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 16; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.i8, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.I32);\n writeI8(getConstValueI32(expr), bytes, i);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.i16x8: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 8, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 8; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.i16, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.I32);\n writeI16(getConstValueI32(expr), bytes, i << 1);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.i32x4: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 4, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 4; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.i32, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.I32);\n writeI32(getConstValueI32(expr), bytes, i << 2);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.i64x2: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 2; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.i64, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.I64);\n let off = i << 3;\n writeI32(getConstValueI64Low(expr), bytes, off);\n writeI32(getConstValueI64High(expr), bytes, off + 4);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.f32x4: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 4, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 4; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.f32, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.F32);\n writeF32(getConstValueF32(expr), bytes, i << 2);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.f64x2: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let bytes = new Uint8Array(16);\n for (let i = 0; i < 2; ++i) {\n let value = operands[i];\n if (value) {\n let expr = compiler.precomputeExpression(value, Type.f64, Constraints.CONV_IMPLICIT);\n if (getExpressionId(expr) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n value.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(expr) == NativeType.F64);\n writeF64(getConstValueF64(expr), bytes, i << 3);\n }\n }\n compiler.currentType = Type.v128;\n return module.v128(bytes);\n }\n case BuiltinSymbols.v128_splat: { // splat(x: T) -> v128\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: UnaryOp;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = UnaryOp.SplatVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = UnaryOp.SplatVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.SplatVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.SplatVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.SplatVecI64x2\n : UnaryOp.SplatVecI32x4;\n break;\n }\n case TypeKind.F32: { op = UnaryOp.SplatVecF32x4; break; }\n case TypeKind.F64: { op = UnaryOp.SplatVecF64x2; break; }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n }\n let arg0 = compiler.compileExpression(operands[0], type, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.v128;\n return module.unary(op, arg0);\n }\n case BuiltinSymbols.v128_extract_lane: { // extract_lane(x: v128, idx: u8) -> T\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler, true) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) return module.unreachable();\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = type;\n return module.unreachable();\n }\n let op: SIMDExtractOp;\n switch (type.kind) {\n case TypeKind.I8: { op = SIMDExtractOp.ExtractLaneSVecI8x16; break; }\n case TypeKind.U8: { op = SIMDExtractOp.ExtractLaneUVecI8x16; break; }\n case TypeKind.I16: { op = SIMDExtractOp.ExtractLaneSVecI16x8; break; }\n case TypeKind.U16: { op = SIMDExtractOp.ExtractLaneUVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = SIMDExtractOp.ExtractLaneVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = SIMDExtractOp.ExtractLaneVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? SIMDExtractOp.ExtractLaneVecI64x2\n : SIMDExtractOp.ExtractLaneVecI32x4;\n break;\n }\n case TypeKind.F32: { op = SIMDExtractOp.ExtractLaneVecF32x4; break; }\n case TypeKind.F64: { op = SIMDExtractOp.ExtractLaneVecF64x2; break; }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = type;\n return module.unreachable();\n }\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.precomputeExpression(operands[1], Type.u8, Constraints.CONV_IMPLICIT);\n compiler.currentType = type;\n if (getExpressionId(arg1) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n operands[1].range\n );\n return module.unreachable();\n }\n assert(getExpressionType(arg1) == NativeType.I32);\n let maxIdx = (16 / type.byteSize) - 1;\n let idx = getConstValueI32(arg1);\n if (idx < 0 || idx > maxIdx) {\n compiler.error(\n DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,\n operands[1].range, \"Lane index\", \"0\", maxIdx.toString()\n );\n return module.unreachable();\n }\n return module.simd_extract(op, arg0, idx);\n }\n case BuiltinSymbols.v128_replace_lane: { // replace_lane(x: v128, idx: u8, value: T) -> v128\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: SIMDReplaceOp;\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = SIMDReplaceOp.ReplaceLaneVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = SIMDReplaceOp.ReplaceLaneVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = SIMDReplaceOp.ReplaceLaneVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = SIMDReplaceOp.ReplaceLaneVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? SIMDReplaceOp.ReplaceLaneVecI64x2\n : SIMDReplaceOp.ReplaceLaneVecI32x4;\n break;\n }\n case TypeKind.F32: { op = SIMDReplaceOp.ReplaceLaneVecF32x4; break; }\n case TypeKind.F64: { op = SIMDReplaceOp.ReplaceLaneVecF64x2; break; }\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.precomputeExpression(operands[1], Type.u8, Constraints.CONV_IMPLICIT);\n if (getExpressionId(arg1) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n operands[1].range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(arg1) == NativeType.I32);\n let maxIdx = (16 / type.byteSize) - 1;\n let idx = getConstValueI32(arg1);\n if (idx < 0 || idx > maxIdx) {\n compiler.error(\n DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,\n operands[1].range, \"Lane index\", \"0\", maxIdx.toString()\n );\n return module.unreachable();\n }\n let arg2 = compiler.compileExpression(operands[2], type, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.v128;\n return module.simd_replace(op, arg0, idx, arg2);\n }\n case BuiltinSymbols.v128_shuffle: { // shuffle(a: v128, b: v128, ...lanes: u8[]) -> v128\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let laneWidth = type.byteSize;\n let laneCount = 16 / laneWidth;\n assert(isInteger(laneCount) && isPowerOf2(laneCount));\n if (\n checkArgsRequired(operands, 2 + laneCount, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.I16:\n case TypeKind.I32:\n case TypeKind.I64:\n case TypeKind.ISIZE:\n case TypeKind.U8:\n case TypeKind.U16:\n case TypeKind.U32:\n case TypeKind.U64:\n case TypeKind.USIZE:\n case TypeKind.F32:\n case TypeKind.F64: break;\n default: {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT);\n let mask = new Uint8Array(16);\n let maxIdx = (laneCount << 1) - 1;\n for (let i = 0; i < laneCount; ++i) {\n let operand = operands[2 + i];\n let argN = compiler.precomputeExpression(operand, Type.u8, Constraints.CONV_IMPLICIT);\n if (getExpressionId(argN) != ExpressionId.Const) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n operand.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n assert(getExpressionType(argN) == NativeType.I32);\n let idx = getConstValueI32(argN);\n if (idx < 0 || idx > maxIdx) {\n compiler.error(\n DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive,\n operand.range, \"Lane index\", \"0\", maxIdx.toString()\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n switch (laneWidth) {\n case 1: {\n writeI8(idx, mask, i);\n break;\n }\n case 2: {\n let off8 = i << 1;\n let idx8 = idx << 1;\n writeI8(idx8 , mask, off8);\n writeI8(idx8 + 1, mask, off8 + 1);\n break;\n }\n case 4: {\n let off8 = i << 2;\n let idx8 = idx << 2;\n writeI8(idx8 , mask, off8);\n writeI8(idx8 + 1, mask, off8 + 1);\n writeI8(idx8 + 2, mask, off8 + 2);\n writeI8(idx8 + 3, mask, off8 + 3);\n break;\n }\n case 8: {\n let off8 = i << 3;\n let idx8 = idx << 3;\n writeI8(idx8 , mask, off8);\n writeI8(idx8 + 1, mask, off8 + 1);\n writeI8(idx8 + 2, mask, off8 + 2);\n writeI8(idx8 + 3, mask, off8 + 3);\n writeI8(idx8 + 4, mask, off8 + 4);\n writeI8(idx8 + 5, mask, off8 + 5);\n writeI8(idx8 + 6, mask, off8 + 6);\n writeI8(idx8 + 7, mask, off8 + 7);\n break;\n }\n default: assert(false);\n }\n }\n compiler.currentType = Type.v128;\n return module.simd_shuffle(arg0, arg1, mask);\n }\n case BuiltinSymbols.v128_add: // any_binary(a: v128, b: v128) -> v128\n case BuiltinSymbols.v128_sub:\n case BuiltinSymbols.v128_mul:\n case BuiltinSymbols.v128_div:\n case BuiltinSymbols.v128_add_saturate:\n case BuiltinSymbols.v128_sub_saturate:\n case BuiltinSymbols.v128_min:\n case BuiltinSymbols.v128_max:\n case BuiltinSymbols.v128_eq:\n case BuiltinSymbols.v128_ne:\n case BuiltinSymbols.v128_lt:\n case BuiltinSymbols.v128_le:\n case BuiltinSymbols.v128_gt:\n case BuiltinSymbols.v128_ge: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: BinaryOp = -1;\n switch (prototype.internalName) {\n case BuiltinSymbols.v128_add: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = BinaryOp.AddVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = BinaryOp.AddVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = BinaryOp.AddVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = BinaryOp.AddVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.AddVecI64x2\n : BinaryOp.AddVecI32x4;\n break;\n }\n case TypeKind.F32: { op = BinaryOp.AddVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.AddVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_sub: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = BinaryOp.SubVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = BinaryOp.SubVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = BinaryOp.SubVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = BinaryOp.SubVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? BinaryOp.SubVecI64x2\n : BinaryOp.SubVecI32x4;\n break;\n }\n case TypeKind.F32: { op = BinaryOp.SubVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.SubVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_mul: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = BinaryOp.MulVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = BinaryOp.MulVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = BinaryOp.MulVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.MulVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.MulVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) op = BinaryOp.MulVecI32x4;\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_div: {\n switch (type.kind) {\n case TypeKind.F32: { op = BinaryOp.DivVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.DivVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_add_saturate: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.AddSatSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.AddSatUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.AddSatSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.AddSatUVecI16x8; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_sub_saturate: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.SubSatSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.SubSatUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.SubSatSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.SubSatUVecI16x8; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_min: {\n switch (type.kind) {\n case TypeKind.F32: { op = BinaryOp.MinVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.MinVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_max: {\n switch (type.kind) {\n case TypeKind.F32: { op = BinaryOp.MaxVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.MaxVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_eq: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = BinaryOp.EqVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = BinaryOp.EqVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = BinaryOp.EqVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.EqVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.EqVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) op = BinaryOp.EqVecI32x4;\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_ne: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = BinaryOp.NeVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = BinaryOp.NeVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = BinaryOp.NeVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.NeVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.NeVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) op = BinaryOp.NeVecI32x4;\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_lt: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.LtSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.LtUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.LtSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.LtUVecI16x8; break; }\n case TypeKind.I32: { op = BinaryOp.LtSVecI32x4; break; }\n case TypeKind.U32: { op = BinaryOp.LtUVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.LtVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.LtVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) {\n op = type.kind == TypeKind.ISIZE\n ? BinaryOp.LtSVecI32x4\n : BinaryOp.LtUVecI32x4;\n }\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_le: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.LeSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.LeUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.LeSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.LeUVecI16x8; break; }\n case TypeKind.I32: { op = BinaryOp.LeSVecI32x4; break; }\n case TypeKind.U32: { op = BinaryOp.LeUVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.LeVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.LeVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) {\n op = type.kind == TypeKind.ISIZE\n ? BinaryOp.LeSVecI32x4\n : BinaryOp.LeUVecI32x4;\n }\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_gt: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.GtSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.GtUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.GtSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.GtUVecI16x8; break; }\n case TypeKind.I32: { op = BinaryOp.GtSVecI32x4; break; }\n case TypeKind.U32: { op = BinaryOp.GtUVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.GtVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.GtVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) {\n op = type.kind == TypeKind.ISIZE\n ? BinaryOp.GtSVecI32x4\n : BinaryOp.GtUVecI32x4;\n }\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_ge: {\n switch (type.kind) {\n case TypeKind.I8: { op = BinaryOp.GeSVecI8x16; break; }\n case TypeKind.U8: { op = BinaryOp.GeUVecI8x16; break; }\n case TypeKind.I16: { op = BinaryOp.GeSVecI16x8; break; }\n case TypeKind.U16: { op = BinaryOp.GeUVecI16x8; break; }\n case TypeKind.I32: { op = BinaryOp.GeSVecI32x4; break; }\n case TypeKind.U32: { op = BinaryOp.GeUVecI32x4; break; }\n case TypeKind.F32: { op = BinaryOp.GeVecF32x4; break; }\n case TypeKind.F64: { op = BinaryOp.GeVecF64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n if (!compiler.options.isWasm64) {\n op = type.kind == TypeKind.ISIZE\n ? BinaryOp.GeSVecI32x4\n : BinaryOp.GeUVecI32x4;\n }\n break;\n }\n }\n break;\n }\n }\n if (op == -1) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.v128;\n return module.binary(op, arg0, arg1);\n }\n case BuiltinSymbols.v128_neg: // any_unary(a: v128) -> v128\n case BuiltinSymbols.v128_abs:\n case BuiltinSymbols.v128_sqrt:\n case BuiltinSymbols.v128_convert:\n case BuiltinSymbols.v128_trunc: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: UnaryOp = -1;\n switch (prototype.internalName) {\n case BuiltinSymbols.v128_neg: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = UnaryOp.NegVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = UnaryOp.NegVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.NegVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.NegVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.NegVecI64x2\n : UnaryOp.NegVecI32x4;\n break;\n }\n case TypeKind.F32: { op = UnaryOp.NegVecF32x4; break; }\n case TypeKind.F64: { op = UnaryOp.NegVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_abs: {\n switch (type.kind) {\n case TypeKind.F32: { op = UnaryOp.AbsVecF32x4; break; }\n case TypeKind.F64: { op = UnaryOp.AbsVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_sqrt: {\n switch (type.kind) {\n case TypeKind.F32: { op = UnaryOp.SqrtVecF32x4; break; }\n case TypeKind.F64: { op = UnaryOp.SqrtVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_convert: {\n switch (type.kind) {\n case TypeKind.I32: { op = UnaryOp.ConvertSVecI32x4ToVecF32x4; break; }\n case TypeKind.U32: { op = UnaryOp.ConvertUVecI32x4ToVecF32x4; break; }\n case TypeKind.I64: { op = UnaryOp.ConvertSVecI64x2ToVecF64x2; break; }\n case TypeKind.U64: { op = UnaryOp.ConvertUVecI64x2ToVecF64x2; break; }\n }\n break;\n }\n case BuiltinSymbols.v128_trunc: {\n switch (type.kind) {\n case TypeKind.I32: { op = UnaryOp.TruncSatSVecF32x4ToVecI32x4; break; }\n case TypeKind.U32: { op = UnaryOp.TruncSatUVecF32x4ToVecI32x4; break; }\n case TypeKind.I64: { op = UnaryOp.TruncSatSVecF64x2ToVecI64x2; break; }\n case TypeKind.U64: { op = UnaryOp.TruncSatUVecF64x2ToVecI64x2; break; }\n }\n break;\n }\n }\n if (op == -1) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.v128;\n return module.unary(op, arg0);\n }\n case BuiltinSymbols.v128_shl: // any_shift(a: v128, b: i32) -> v128\n case BuiltinSymbols.v128_shr: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: SIMDShiftOp = -1;\n switch (prototype.internalName) {\n case BuiltinSymbols.v128_shl: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = SIMDShiftOp.ShlVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = SIMDShiftOp.ShlVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = SIMDShiftOp.ShlVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = SIMDShiftOp.ShlVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? SIMDShiftOp.ShlVecI64x2\n : SIMDShiftOp.ShlVecI32x4;\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_shr: {\n switch (type.kind) {\n case TypeKind.I8: { op = SIMDShiftOp.ShrSVecI8x16; break; }\n case TypeKind.U8: { op = SIMDShiftOp.ShrUVecI8x16; break; }\n case TypeKind.I16: { op = SIMDShiftOp.ShrSVecI16x8; break; }\n case TypeKind.U16: { op = SIMDShiftOp.ShrUVecI16x8; break; }\n case TypeKind.I32: { op = SIMDShiftOp.ShrSVecI32x4; break; }\n case TypeKind.U32: { op = SIMDShiftOp.ShrUVecI32x4; break; }\n case TypeKind.I64: { op = SIMDShiftOp.ShrSVecI64x2; break; }\n case TypeKind.U64: { op = SIMDShiftOp.ShrUVecI64x2; break; }\n case TypeKind.ISIZE: {\n op = compiler.options.isWasm64\n ? SIMDShiftOp.ShrSVecI64x2\n : SIMDShiftOp.ShrSVecI32x4;\n break;\n }\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? SIMDShiftOp.ShrUVecI64x2\n : SIMDShiftOp.ShrUVecI32x4;\n break;\n }\n }\n break;\n }\n }\n if (op == -1) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.i32, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.v128;\n return module.simd_shift(op, arg0, arg1);\n }\n case BuiltinSymbols.v128_and: // any_bitwise_binary(a: v128, b: v128) -> v128\n case BuiltinSymbols.v128_or:\n case BuiltinSymbols.v128_xor: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 2, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let op: BinaryOp = -1;\n switch (prototype.internalName) {\n default: assert(false);\n case BuiltinSymbols.v128_and: { op = BinaryOp.AndVec128; break; }\n case BuiltinSymbols.v128_or: { op = BinaryOp.OrVec128; break; }\n case BuiltinSymbols.v128_xor: { op = BinaryOp.XorVec128; break; }\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT);\n return module.binary(op, arg0, arg1);\n }\n case BuiltinSymbols.v128_not: { // any_bitwise_unary(a: v128) -> v128\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n return module.unary(UnaryOp.NotVec128, arg0);\n }\n case BuiltinSymbols.v128_bitselect: { // bitselect(v1: v128, v2: v128, c: v128) -> v128\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 3, reportNode, compiler)\n ) {\n compiler.currentType = Type.v128;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT);\n let arg2 = compiler.compileExpression(operands[2], Type.v128, Constraints.CONV_IMPLICIT);\n return module.simd_bitselect(arg0, arg1, arg2);\n }\n case BuiltinSymbols.v128_any_true: // any_test(a: v128) -> bool\n case BuiltinSymbols.v128_all_true: {\n if (!compiler.options.hasFeature(Feature.SIMD)) break;\n if (\n checkTypeRequired(typeArguments, reportNode, compiler) |\n checkArgsRequired(operands, 1, reportNode, compiler)\n ) {\n compiler.currentType = Type.bool;\n return module.unreachable();\n }\n let type = typeArguments![0];\n if (type.is(TypeFlags.REFERENCE)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n return module.unreachable();\n }\n let op: UnaryOp = -1;\n switch (prototype.internalName) {\n default: assert(false);\n case BuiltinSymbols.v128_any_true: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = UnaryOp.AnyTrueVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = UnaryOp.AnyTrueVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.AnyTrueVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.AnyTrueVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.AnyTrueVecI64x2\n : UnaryOp.AnyTrueVecI32x4;\n break;\n }\n }\n break;\n }\n case BuiltinSymbols.v128_all_true: {\n switch (type.kind) {\n case TypeKind.I8:\n case TypeKind.U8: { op = UnaryOp.AllTrueVecI8x16; break; }\n case TypeKind.I16:\n case TypeKind.U16: { op = UnaryOp.AllTrueVecI16x8; break; }\n case TypeKind.I32:\n case TypeKind.U32: { op = UnaryOp.AllTrueVecI32x4; break; }\n case TypeKind.I64:\n case TypeKind.U64: { op = UnaryOp.AllTrueVecI64x2; break; }\n case TypeKind.ISIZE:\n case TypeKind.USIZE: {\n op = compiler.options.isWasm64\n ? UnaryOp.AllTrueVecI64x2\n : UnaryOp.AllTrueVecI32x4;\n break;\n }\n }\n break;\n }\n }\n if (op == -1) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.typeArgumentsRange\n );\n compiler.currentType = Type.bool;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT);\n compiler.currentType = Type.bool;\n return module.unary(op, arg0);\n }\n\n // === Internal runtime =======================================================================\n\n case BuiltinSymbols.idof: {\n let type = evaluateConstantType(compiler, typeArguments, operands, reportNode);\n compiler.currentType = Type.u32;\n if (!type) return module.unreachable();\n let signatureReference = type.signatureReference;\n if (type.is(TypeFlags.REFERENCE) && signatureReference !== null) {\n return module.i32(signatureReference.id);\n }\n\n let classReference = type.classReference;\n if (!classReference || classReference.hasDecorator(DecoratorFlags.UNMANAGED)) {\n compiler.error(\n DiagnosticCode.Operation_not_supported,\n reportNode.range\n );\n return module.unreachable();\n }\n return module.i32(classReference.id);\n }\n case BuiltinSymbols.visit_globals: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 1, reportNode, compiler) // cookie\n ) {\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], Type.u32, Constraints.CONV_IMPLICIT);\n compiler.runtimeFeatures |= RuntimeFeatures.visitGlobals;\n compiler.currentType = Type.void;\n return module.call(BuiltinSymbols.visit_globals, [ arg0 ], NativeType.None);\n }\n case BuiltinSymbols.visit_members: {\n if (\n checkTypeAbsent(typeArguments, reportNode, prototype) |\n checkArgsRequired(operands, 2, reportNode, compiler) // ref, cookie\n ) {\n compiler.currentType = Type.void;\n return module.unreachable();\n }\n let arg0 = compiler.compileExpression(operands[0], compiler.options.usizeType, Constraints.CONV_IMPLICIT);\n let arg1 = compiler.compileExpression(operands[1], Type.u32, Constraints.CONV_IMPLICIT);\n compiler.runtimeFeatures |= RuntimeFeatures.visitMembers;\n compiler.currentType = Type.void;\n return module.call(BuiltinSymbols.visit_members, [ arg0, arg1 ], NativeType.None);\n }\n }\n\n // try to defer inline asm to a concrete built-in\n {\n let expr = tryDeferASM(compiler, prototype, operands, reportNode);\n if (expr) {\n if (typeArguments) {\n compiler.error(\n DiagnosticCode.Type_0_is_not_generic,\n reportNode.typeArgumentsRange, prototype.internalName\n );\n }\n return expr;\n }\n }\n compiler.error(\n DiagnosticCode.Cannot_find_name_0,\n reportNode.expression.range, prototype.internalName\n );\n return module.unreachable();\n}\n\n/** Tries to defer an inline-assembler-like call to a built-in function. */\nfunction tryDeferASM(\n compiler: Compiler,\n prototype: FunctionPrototype,\n operands: Expression[],\n reportNode: CallExpression\n): ExpressionRef {\n /* tslint:disable:max-line-length */\n switch (prototype.internalName) {\n\n // TODO: Operators can't be just deferred (don't have a corresponding generic built-in)\n // add, sub, mul, div_s, div_u, rem_s, rem_u\n // and, or, xor, shl, shr_u, shr_s\n // eq, eqz, ne, lt_s, lt_u, le_s, le_u, gt_s, gt_u, ge_s, ge_u\n\n case BuiltinSymbols.i32_clz: return deferASM(BuiltinSymbols.clz, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_clz: return deferASM(BuiltinSymbols.clz, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.i32_ctz: return deferASM(BuiltinSymbols.ctz, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_ctz: return deferASM(BuiltinSymbols.ctz, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.i32_popcnt: return deferASM(BuiltinSymbols.popcnt, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_popcnt: return deferASM(BuiltinSymbols.popcnt, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.i32_rotl: return deferASM(BuiltinSymbols.rotl, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_rotl: return deferASM(BuiltinSymbols.rotl, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.i32_rotr: return deferASM(BuiltinSymbols.rotr, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_rotr: return deferASM(BuiltinSymbols.rotr, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.f32_abs: return deferASM(BuiltinSymbols.abs, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_abs: return deferASM(BuiltinSymbols.abs, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_max: return deferASM(BuiltinSymbols.max, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_max: return deferASM(BuiltinSymbols.max, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_min: return deferASM(BuiltinSymbols.min, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_min: return deferASM(BuiltinSymbols.min, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_ceil: return deferASM(BuiltinSymbols.ceil, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_ceil: return deferASM(BuiltinSymbols.ceil, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_floor: return deferASM(BuiltinSymbols.floor, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_floor: return deferASM(BuiltinSymbols.floor, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_copysign: return deferASM(BuiltinSymbols.copysign, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_copysign: return deferASM(BuiltinSymbols.copysign, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_nearest: return deferASM(BuiltinSymbols.nearest, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_nearest: return deferASM(BuiltinSymbols.nearest, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.i32_reinterpret_f32: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.i32, operands, Type.f32, reportNode);\n case BuiltinSymbols.i64_reinterpret_f64: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.i64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_reinterpret_i32: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.f32, operands, Type.i32, reportNode);\n case BuiltinSymbols.f64_reinterpret_i64: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.f64, operands, Type.i64, reportNode);\n case BuiltinSymbols.f32_sqrt: return deferASM(BuiltinSymbols.sqrt, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_sqrt: return deferASM(BuiltinSymbols.sqrt, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f32_trunc: return deferASM(BuiltinSymbols.trunc, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_trunc: return deferASM(BuiltinSymbols.trunc, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.i32_load8_s: return deferASM(BuiltinSymbols.load, compiler, Type.i8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_load8_u: return deferASM(BuiltinSymbols.load, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_load16_s: return deferASM(BuiltinSymbols.load, compiler, Type.i16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_load16_u: return deferASM(BuiltinSymbols.load, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_load: return deferASM(BuiltinSymbols.load, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_load8_s: return deferASM(BuiltinSymbols.load, compiler, Type.i8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load8_u: return deferASM(BuiltinSymbols.load, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load16_s: return deferASM(BuiltinSymbols.load, compiler, Type.i16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load16_u: return deferASM(BuiltinSymbols.load, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load32_s: return deferASM(BuiltinSymbols.load, compiler, Type.i32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load32_u: return deferASM(BuiltinSymbols.load, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_load: return deferASM(BuiltinSymbols.load, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.f32_load: return deferASM(BuiltinSymbols.load, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_load: return deferASM(BuiltinSymbols.load, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.i32_store8: return deferASM(BuiltinSymbols.store, compiler, Type.i8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_store16: return deferASM(BuiltinSymbols.store, compiler, Type.i16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_store: return deferASM(BuiltinSymbols.store, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_store8: return deferASM(BuiltinSymbols.store, compiler, Type.i8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_store16: return deferASM(BuiltinSymbols.store, compiler, Type.i16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_store32: return deferASM(BuiltinSymbols.store, compiler, Type.i32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_store: return deferASM(BuiltinSymbols.store, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.f32_store: return deferASM(BuiltinSymbols.store, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f64_store: return deferASM(BuiltinSymbols.store, compiler, Type.f64, operands, Type.f64, reportNode);\n }\n if (compiler.options.hasFeature(Feature.THREADS)) {\n switch (prototype.internalName) {\n\n case BuiltinSymbols.i32_atomic_load8_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_load16_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_load: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_load8_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_load16_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_load32_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_load: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_store8: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_store16: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_store: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_store8: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_store16: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_store32: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_store: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_add: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_add: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_sub: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_sub: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_and: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_and: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_or: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_or: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_u_xor: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_u_xor: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_xor: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_xor: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_xchg: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_xchg: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_atomic_rmw8_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw16_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32_atomic_rmw_cmpxchg: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_atomic_rmw8_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u8, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw16_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u16, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw32_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u32, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64_atomic_rmw_cmpxchg: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.i64, operands, Type.i64, reportNode);\n\n case BuiltinSymbols.i32_wait: return deferASM(BuiltinSymbols.atomic_wait, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64_wait: return deferASM(BuiltinSymbols.atomic_wait, compiler, Type.i64, operands, Type.i32, reportNode);\n }\n }\n if (compiler.options.hasFeature(Feature.SIMD)) {\n switch (prototype.internalName) {\n\n case BuiltinSymbols.v128_load: return deferASM(BuiltinSymbols.load, compiler, Type.v128, operands, Type.v128, reportNode);\n case BuiltinSymbols.v128_store: return deferASM(BuiltinSymbols.store, compiler, Type.v128, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.i8x16_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_extract_lane_s: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i8, operands, Type.i8, reportNode);\n case BuiltinSymbols.i8x16_extract_lane_u: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.u8, operands, Type.u8, reportNode);\n case BuiltinSymbols.i8x16_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_add_saturate_s: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_add_saturate_u: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_sub_saturate_s: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_sub_saturate_u: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i8x16_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i8, operands, Type.i32, reportNode);\n case BuiltinSymbols.i8x16_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_lt_s: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_lt_u: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_le_s: return deferASM(BuiltinSymbols.v128_le, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_le_u: return deferASM(BuiltinSymbols.v128_le, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_gt_s: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_gt_u: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.u8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_ge_s: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.i8, operands, Type.v128, reportNode);\n case BuiltinSymbols.i8x16_ge_u: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.u8, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.i16x8_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_extract_lane_s: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i16, operands, Type.i16, reportNode);\n case BuiltinSymbols.i16x8_extract_lane_u: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.u16, operands, Type.u16, reportNode);\n case BuiltinSymbols.i16x8_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_add_saturate_s: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_add_saturate_u: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_sub_saturate_s: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_sub_saturate_u: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i16x8_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i16, operands, Type.i32, reportNode);\n case BuiltinSymbols.i16x8_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_lt_s: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_lt_u: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_le_s: return deferASM(BuiltinSymbols.v128_le, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_le_u: return deferASM(BuiltinSymbols.v128_le, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_gt_s: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_gt_u: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.u16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_ge_s: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.i16, operands, Type.v128, reportNode);\n case BuiltinSymbols.i16x8_ge_u: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.u16, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.i32x4_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32x4_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32x4_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i32, operands, Type.i32, reportNode);\n case BuiltinSymbols.i32x4_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_lt_s: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_lt_u: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.u32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_le_s: return deferASM(BuiltinSymbols.v128_le, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_le_u: return deferASM(BuiltinSymbols.v128_le, compiler, Type.u32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_gt_s: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_gt_u: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.u32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_ge_s: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_ge_u: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.u32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_trunc_s_f32x4_sat: return deferASM(BuiltinSymbols.v128_trunc, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.i32x4_trunc_u_f32x4_sat: return deferASM(BuiltinSymbols.v128_trunc, compiler, Type.u32, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.i64x2_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i64, operands, Type.i64, reportNode);\n case BuiltinSymbols.i64x2_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i64, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64x2_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i64, operands, Type.i32, reportNode);\n case BuiltinSymbols.i64x2_trunc_s_f64x2_sat: return deferASM(BuiltinSymbols.v128_trunc, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.i64x2_trunc_u_f64x2_sat: return deferASM(BuiltinSymbols.v128_trunc, compiler, Type.u64, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.f32x4_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.f32, operands, Type.f32, reportNode);\n case BuiltinSymbols.f32x4_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_div: return deferASM(BuiltinSymbols.v128_div, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_min: return deferASM(BuiltinSymbols.v128_min, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_max: return deferASM(BuiltinSymbols.v128_max, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_abs: return deferASM(BuiltinSymbols.v128_abs, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_sqrt: return deferASM(BuiltinSymbols.v128_sqrt, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_lt: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_le: return deferASM(BuiltinSymbols.v128_le, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_gt: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_ge: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.f32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_convert_s_i32x4: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.i32, operands, Type.v128, reportNode);\n case BuiltinSymbols.f32x4_convert_u_i32x4: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.u32, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.f64x2_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.f64, operands, Type.f64, reportNode);\n case BuiltinSymbols.f64x2_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_div: return deferASM(BuiltinSymbols.v128_div, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_min: return deferASM(BuiltinSymbols.v128_min, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_max: return deferASM(BuiltinSymbols.v128_max, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_abs: return deferASM(BuiltinSymbols.v128_abs, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_sqrt: return deferASM(BuiltinSymbols.v128_sqrt, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_lt: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_le: return deferASM(BuiltinSymbols.v128_le, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_gt: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_ge: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.f64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_convert_s_i64x2: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.i64, operands, Type.v128, reportNode);\n case BuiltinSymbols.f64x2_convert_u_i64x2: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.u64, operands, Type.v128, reportNode);\n\n case BuiltinSymbols.v8x16_shuffle: return deferASM(BuiltinSymbols.v128_shuffle, compiler, Type.i8, operands, Type.v128, reportNode);\n }\n }\n /* tslint:enable:max-line-length */\n return 0;\n}\n\n/** A helper for deferring inline-assembler-like calls to built-in functions. */\nfunction deferASM(\n name: string,\n compiler: Compiler,\n typeArgument: Type,\n operands: Expression[],\n contextualType: Type,\n reportNode: CallExpression\n): ExpressionRef {\n assert(compiler.program.elementsByName.has(name));\n var prototype = compiler.program.elementsByName.get(name)!;\n assert(prototype.kind == ElementKind.FUNCTION_PROTOTYPE);\n return compileCall(\n compiler,\n prototype,\n [ typeArgument ],\n operands,\n contextualType,\n reportNode,\n /* isAsm */ true\n );\n}\n\n/** Compiles an abort wired to the conditionally imported 'abort' function. */\nexport function compileAbort(\n compiler: Compiler,\n message: Expression | null,\n reportNode: Node\n): ExpressionRef {\n var program = compiler.program;\n var module = compiler.module;\n\n var stringInstance = compiler.program.stringInstance;\n if (!stringInstance) return module.unreachable();\n\n var abortInstance = program.abortInstance;\n if (!(abortInstance && compiler.compileFunction(abortInstance))) return module.unreachable();\n\n var messageArg: ExpressionRef;\n if (message !== null) {\n // The message argument works much like an arm of an IF that does not become executed if the\n // assertion succeeds respectively is only being computed if the program actually crashes.\n // Hence, let's make it so that the autorelease is skipped at the end of the current block,\n // essentially ignoring the message GC-wise. Doesn't matter anyway on a crash.\n messageArg = compiler.compileExpression(message, stringInstance.type, Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN);\n } else {\n messageArg = stringInstance.type.toNativeZero(module);\n }\n\n var filenameArg = compiler.ensureStaticString(reportNode.range.source.normalizedPath);\n\n compiler.currentType = Type.void;\n return module.block(null, [\n module.call(\n abortInstance.internalName, [\n messageArg,\n filenameArg,\n module.i32(reportNode.range.line),\n module.i32(reportNode.range.column)\n ],\n NativeType.None\n ),\n module.unreachable()\n ]);\n}\n\n/** Compiles the `visit_globals` function. */\nexport function compileVisitGlobals(compiler: Compiler): void {\n var module = compiler.module;\n var exprs = new Array();\n var typeRef = compiler.ensureFunctionType([ Type.u32 ], Type.void); // cookie\n var nativeSizeType = compiler.options.nativeSizeType;\n var visitInstance = assert(compiler.program.visitInstance);\n\n compiler.compileFunction(visitInstance);\n\n for (let element of compiler.program.elementsByName.values()) {\n if (element.kind != ElementKind.GLOBAL) continue;\n let global = element;\n let classReference = global.type.classReference;\n if (\n global.is(CommonFlags.COMPILED) &&\n classReference !== null &&\n !classReference.hasDecorator(DecoratorFlags.UNMANAGED)\n ) {\n if (global.is(CommonFlags.INLINED)) {\n let value = global.constantIntegerValue;\n if (i64_low(value) || i64_high(value)) {\n exprs.push(\n module.call(visitInstance.internalName, [\n compiler.options.isWasm64\n ? module.i64(i64_low(value), i64_high(value))\n : module.i32(i64_low(value))\n ], NativeType.None)\n );\n }\n } else {\n exprs.push(\n module.if(\n module.local_tee(1,\n module.global_get(global.internalName, nativeSizeType)\n ),\n module.call(visitInstance.internalName, [\n module.local_get(1, nativeSizeType), // tempRef != null\n module.local_get(0, NativeType.I32) // cookie\n ], NativeType.None)\n )\n );\n }\n }\n }\n module.addFunction(BuiltinSymbols.visit_globals, typeRef, [ nativeSizeType ],\n exprs.length\n ? module.block(null, exprs)\n : module.nop()\n );\n}\n\n/** Compiles the `visit_members` function. */\nexport function compileVisitMembers(compiler: Compiler): void {\n var program = compiler.program;\n var module = compiler.module;\n var usizeType = program.options.usizeType;\n var nativeSizeType = usizeType.toNativeType();\n var nativeSizeSize = usizeType.byteSize;\n var ftype = compiler.ensureFunctionType([ usizeType, Type.i32 ], Type.void); // ref, cookie\n var managedClasses = program.managedClasses;\n var visitInstance = assert(program.visitInstance);\n var blocks = new Array();\n var relooper = Relooper.create(module);\n\n var outer = relooper.addBlockWithSwitch(\n module.nop(),\n module.load(nativeSizeSize, false,\n nativeSizeType == NativeType.I64\n ? module.binary(BinaryOp.SubI64,\n module.local_get(0, nativeSizeType),\n module.i64(8)\n )\n : module.binary(BinaryOp.SubI32,\n module.local_get(0, nativeSizeType),\n module.i32(8) // rtId is at -8\n ),\n NativeType.I32,\n 0\n )\n );\n\n var lastId = 0;\n for (let [id, instance] of managedClasses) {\n assert(instance.type.isManaged);\n assert(id == lastId++);\n\n let visitImpl: Element | null;\n let code = new Array();\n\n // if a library element, check if it implements a custom traversal function\n if (instance.isDeclaredInLibrary && (visitImpl = instance.lookupInSelf(\"__visit_impl\"))) {\n assert(visitImpl.kind == ElementKind.FUNCTION_PROTOTYPE);\n let visitFunc = program.resolver.resolveFunction(visitImpl, null);\n if (!visitFunc || !compiler.compileFunction(visitFunc)) {\n code.push(\n module.unreachable()\n );\n } else {\n let visitSig = visitFunc.signature;\n assert(\n visitSig.parameterTypes.length == 1 &&\n visitSig.parameterTypes[0] == Type.u32 &&\n visitSig.returnType == Type.void &&\n visitSig.thisType == instance.type\n );\n code.push(\n module.call(visitFunc.internalName, [\n module.local_get(0, nativeSizeType), // ref\n module.local_get(1, NativeType.I32) // cookie\n ], NativeType.None)\n );\n }\n\n // otherwise generate traversal logic for own fields\n } else {\n let members = instance.members;\n if (members) {\n for (let member of members.values()) {\n if (member.kind == ElementKind.FIELD) {\n if ((member).parent === instance) {\n let fieldType = (member).type;\n if (fieldType.isManaged) {\n let fieldOffset = (member).memoryOffset;\n assert(fieldOffset >= 0);\n code.push(\n // if ($2 = value) FIELDCLASS~traverse($2)\n module.if(\n module.local_tee(2,\n module.load(nativeSizeSize, false,\n module.local_get(0, nativeSizeType),\n nativeSizeType, fieldOffset\n )\n ),\n module.call(visitInstance.internalName, [\n module.local_get(2, nativeSizeType), // ref\n module.local_get(1, NativeType.I32) // cookie\n ], NativeType.None)\n )\n );\n }\n }\n }\n }\n }\n }\n if (!instance.base) code.push(module.return());\n let block = relooper.addBlock(\n flatten(module, code, NativeType.None)\n );\n relooper.addBranchForSwitch(outer, block, [ id ]);\n blocks.push(block);\n }\n for (let [id, instance] of managedClasses) {\n let base = instance.base;\n if (base) {\n relooper.addBranch(blocks[id], blocks[base.id]);\n }\n }\n blocks.push(\n relooper.addBlock(\n module.unreachable()\n )\n );\n relooper.addBranchForSwitch(outer, blocks[blocks.length - 1], []); // default\n compiler.compileFunction(visitInstance);\n module.addFunction(BuiltinSymbols.visit_members, ftype, [ nativeSizeType ], relooper.renderAndDispose(outer, 2));\n}\n\nfunction typeToRuntimeFlags(type: Type): TypeinfoFlags {\n var flags = TypeinfoFlags.VALUE_ALIGN_0 * (1 << type.alignLog2);\n if (type.is(TypeFlags.SIGNED)) flags |= TypeinfoFlags.VALUE_SIGNED;\n if (type.is(TypeFlags.FLOAT)) flags |= TypeinfoFlags.VALUE_FLOAT;\n if (type.is(TypeFlags.NULLABLE)) flags |= TypeinfoFlags.VALUE_NULLABLE;\n if (type.isManaged) flags |= TypeinfoFlags.VALUE_MANAGED;\n return flags / TypeinfoFlags.VALUE_ALIGN_0;\n}\n\n/** Compiles runtime type information for use by stdlib. */\nexport function compileRTTI(compiler: Compiler): void {\n var program = compiler.program;\n var module = compiler.module;\n var managedClasses = program.managedClasses;\n var count = managedClasses.size;\n var size = 4 + 8 * count;\n var data = new Uint8Array(size);\n writeI32(count, data, 0);\n var off = 4;\n var abvInstance = program.arrayBufferViewInstance;\n var abvPrototype = abvInstance.prototype;\n var arrayPrototype = program.arrayPrototype;\n var setPrototype = program.setPrototype;\n var mapPrototype = program.mapPrototype;\n var lastId = 0;\n for (let [id, instance] of managedClasses) {\n assert(id == lastId++);\n let flags: TypeinfoFlags = 0;\n if (instance.isAcyclic) flags |= TypeinfoFlags.ACYCLIC;\n if (instance !== abvInstance && instance.extends(abvPrototype)) {\n let valueType = instance.getArrayValueType();\n flags |= TypeinfoFlags.ARRAYBUFFERVIEW;\n if (instance.extends(arrayPrototype)) flags |= TypeinfoFlags.ARRAY;\n flags |= TypeinfoFlags.VALUE_ALIGN_0 * typeToRuntimeFlags(valueType);\n } else if (instance.extends(setPrototype)) {\n let typeArguments = assert(instance.getTypeArgumentsTo(setPrototype));\n assert(typeArguments.length == 1);\n flags |= TypeinfoFlags.SET;\n flags |= TypeinfoFlags.VALUE_ALIGN_0 * typeToRuntimeFlags(typeArguments[0]);\n } else if (instance.extends(mapPrototype)) {\n let typeArguments = assert(instance.getTypeArgumentsTo(mapPrototype));\n assert(typeArguments.length == 2);\n flags |= TypeinfoFlags.MAP;\n flags |= TypeinfoFlags.KEY_ALIGN_0 * typeToRuntimeFlags(typeArguments[0]);\n flags |= TypeinfoFlags.VALUE_ALIGN_0 * typeToRuntimeFlags(typeArguments[1]);\n }\n writeI32(flags, data, off); off += 4;\n instance.rttiFlags = flags;\n let base = instance.base;\n writeI32(base ? base.id : 0, data, off); off += 4;\n }\n assert(off == size);\n var usizeType = program.options.usizeType;\n var segment = compiler.addMemorySegment(data);\n if (usizeType.size == 8) {\n let offset = segment.offset;\n module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I64, false, module.i64(i64_low(offset), i64_high(offset)));\n } else {\n module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I32, false, module.i32(i64_low(segment.offset)));\n }\n}\n\n// Helpers\n\n/** Evaluates the constant type of a type argument *or* expression. */\nfunction evaluateConstantType(\n compiler: Compiler,\n typeArguments: Type[] | null,\n operands: Expression[],\n reportNode: CallExpression\n): Type | null {\n if (operands.length == 0) { // requires type argument\n if (!typeArguments || typeArguments.length != 1) {\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.typeArgumentsRange, \"1\", typeArguments ? typeArguments.length.toString(10) : \"0\"\n );\n return null;\n }\n return typeArguments[0];\n }\n if (operands.length == 1) { // optional type argument\n if (typeArguments !== null && typeArguments.length) {\n if (typeArguments.length > 1) {\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.typeArgumentsRange, \"1\", typeArguments.length.toString(10)\n );\n return null;\n }\n compiler.compileExpression(operands[0], typeArguments[0], Constraints.CONV_IMPLICIT);\n } else {\n compiler.compileExpression(operands[0], Type.auto);\n }\n return compiler.currentType;\n }\n if (typeArguments && typeArguments.length > 1) {\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.typeArgumentsRange, \"1\", typeArguments.length.toString(10)\n );\n }\n compiler.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n reportNode.argumentsRange, \"1\", operands.length.toString(10)\n );\n return null;\n}\n\n/** Evaluates a compile-time constant immediate offset argument.*/\nfunction evaluateImmediateOffset(expression: Expression, compiler: Compiler): i32 {\n var expr: ExpressionRef;\n var value: i32;\n if (compiler.options.isWasm64) {\n expr = compiler.precomputeExpression(expression, Type.usize64, Constraints.CONV_IMPLICIT);\n if (\n getExpressionId(expr) != ExpressionId.Const ||\n getExpressionType(expr) != NativeType.I64 ||\n getConstValueI64High(expr) != 0 ||\n (value = getConstValueI64Low(expr)) < 0\n ) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n expression.range\n );\n value = -1;\n }\n } else {\n expr = compiler.precomputeExpression(expression, Type.usize32, Constraints.CONV_IMPLICIT);\n if (\n getExpressionId(expr) != ExpressionId.Const ||\n getExpressionType(expr) != NativeType.I32 ||\n (value = getConstValueI32(expr)) < 0\n ) {\n compiler.error(\n DiagnosticCode.Expression_must_be_a_compile_time_constant,\n expression.range\n );\n value = -1;\n }\n }\n return value;\n}\n\n/** Checks a call with a single required type argument. Returns `1` on error. */\nfunction checkTypeRequired(\n typeArguments: Type[] | null,\n reportNode: CallExpression,\n compiler: Compiler,\n setCurrentTypeOnError: bool = false\n): i32 {\n if (typeArguments) {\n let numTypeArguments = typeArguments.length;\n if (numTypeArguments == 1) return 0;\n assert(numTypeArguments); // invalid if 0, must not be set at all instead\n if (setCurrentTypeOnError) compiler.currentType = typeArguments[0];\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.typeArgumentsRange, \"1\", numTypeArguments.toString()\n );\n } else {\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.range, \"1\", \"0\"\n );\n }\n return 1;\n}\n\n/** Checks a call with a single optional type argument. Returns `1` on error. */\nfunction checkTypeOptional(\n typeArguments: Type[] | null,\n reportNode: CallExpression,\n compiler: Compiler,\n setCurrentTypeOnError: bool = false\n): i32 {\n if (typeArguments) {\n let numTypeArguments = typeArguments.length;\n if (numTypeArguments == 1) return 0;\n assert(numTypeArguments); // invalid if 0, must not be set at all instead\n if (setCurrentTypeOnError) compiler.currentType = typeArguments[0];\n compiler.error(\n DiagnosticCode.Expected_0_type_arguments_but_got_1,\n reportNode.typeArgumentsRange, \"1\", numTypeArguments.toString()\n );\n return 1;\n }\n return 0;\n}\n\n/** Checks a call that is not generic. Returns `1` on error. */\nfunction checkTypeAbsent(\n typeArguments: Type[] | null,\n reportNode: CallExpression,\n prototype: FunctionPrototype\n): i32 {\n if (typeArguments) {\n prototype.program.error(\n DiagnosticCode.Type_0_is_not_generic,\n reportNode.typeArgumentsRange, prototype.internalName\n );\n return 1;\n }\n return 0;\n}\n\n/** Checks a call that requires a fixed number of arguments. Returns `1` on error. */\nfunction checkArgsRequired(\n operands: Expression[],\n expected: i32,\n reportNode: CallExpression,\n compiler: Compiler\n): i32 {\n if (operands.length != expected) {\n compiler.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n reportNode.range, expected.toString(), operands.length.toString()\n );\n return 1;\n }\n return 0;\n}\n\n/** Checks a call that requires a variable number of arguments. Returns `1` on error. */\nfunction checkArgsOptional(\n operands: Expression[],\n expectedMinimum: i32,\n expectedMaximum: i32,\n reportNode: CallExpression,\n compiler: Compiler\n): i32 {\n var numOperands = operands.length;\n if (numOperands < expectedMinimum) {\n compiler.error(\n DiagnosticCode.Expected_at_least_0_arguments_but_got_1,\n reportNode.range, expectedMinimum.toString(), numOperands.toString()\n );\n return 1;\n } else if (numOperands > expectedMaximum) {\n compiler.error(\n DiagnosticCode.Expected_0_arguments_but_got_1,\n reportNode.range, expectedMaximum.toString(), numOperands.toString()\n );\n return 1;\n }\n return 0;\n}\n","/**\n * A decompiler that generates low-level AssemblyScript from WebAssembly binaries.\n * @module decompiler\n *//***/\n\nimport {\n Module,\n NativeType,\n ExpressionId,\n UnaryOp,\n BinaryOp,\n HostOp,\n FunctionRef,\n ExpressionRef,\n Index,\n getFunctionName,\n getFunctionBody,\n getFunctionParamCount,\n getFunctionParamType,\n getFunctionResultType,\n getExpressionId,\n getExpressionType,\n getBlockName,\n getBlockChildCount,\n getBlockChild,\n getIfCondition,\n getIfTrue,\n getIfFalse,\n getLoopName,\n getLoopBody,\n getBreakName,\n getBreakCondition,\n getLocalGetIndex,\n getLocalSetIndex,\n getLocalSetValue,\n getLoadOffset,\n getLoadPtr,\n getStoreOffset,\n getStorePtr,\n getStoreValue,\n getConstValueI32,\n getConstValueI64Low,\n getConstValueI64High,\n getConstValueF32,\n getConstValueF64,\n getUnaryOp,\n getUnaryValue,\n getBinaryOp,\n getBinaryLeft,\n getBinaryRight,\n getSelectThen,\n getSelectElse,\n getSelectCondition,\n getDropValue,\n getReturnValue,\n getHostOp,\n getHostOperand\n} from \"./module\";\n\n// TODO :-)\n\nexport class Decompiler {\n\n static decompile(module: Module): string {\n var decompiler = new Decompiler();\n decompiler.decompile(module);\n return decompiler.finish();\n }\n\n text: string[] = [];\n functionId: i32 = 0;\n\n constructor() { }\n\n /** Decompiles a module to an AST that can then be serialized. */\n decompile(module: Module): void {\n throw new Error(\"not implemented\");\n }\n\n decompileFunction(func: FunctionRef): void {\n var name = getFunctionName(func) || \"$\" + this.functionId.toString(10);\n var body = getFunctionBody(func);\n this.push(\"function \");\n this.push(name);\n this.push(\"(\");\n for (let i: Index = 0, k: Index = getFunctionParamCount(func); i < k; ++i) {\n if (i > 0) this.push(\", \");\n this.push(\"$\");\n this.push(i.toString(10));\n this.push(\": \");\n this.push(nativeTypeToType(getFunctionParamType(func, i)));\n }\n this.push(\"): \");\n this.push(nativeTypeToType(getFunctionResultType(func)));\n this.push(\" \");\n if (getExpressionId(body) != ExpressionId.Block) {\n this.push(\"{\\n\");\n }\n this.decompileExpression(body);\n if (getExpressionId(body) != ExpressionId.Block) {\n this.push(\"\\n}\\n\");\n }\n ++this.functionId;\n }\n\n decompileExpression(expr: ExpressionRef): void {\n var id = getExpressionId(expr);\n var type = getExpressionType(expr);\n\n var nested: ExpressionRef;\n var string: string | null;\n var i: Index, k: Index;\n\n switch (id) {\n case ExpressionId.Block: { // TODO: magic\n if ((string = getBlockName(expr)) != null) {\n this.push(string);\n this.push(\": \");\n }\n this.push(\"{\\n\");\n k = getBlockChildCount(expr);\n for (i = 0; i < k; ++i) {\n this.decompileExpression(getBlockChild(expr, i));\n }\n this.push(\"}\\n\");\n return;\n }\n case ExpressionId.If: {\n if (type == NativeType.None) {\n this.push(\"if (\");\n this.decompileExpression(getIfCondition(expr));\n this.push(\") \");\n this.decompileExpression(getIfTrue(expr));\n if (nested = getIfFalse(expr)) {\n this.push(\" else \");\n this.decompileExpression(nested);\n }\n } else {\n this.decompileExpression(getIfCondition(expr));\n this.push(\" ? \");\n this.decompileExpression(getIfTrue(expr));\n this.push(\" : \");\n this.decompileExpression(getIfFalse(expr));\n }\n return;\n }\n case ExpressionId.Loop: {\n if ((string = getLoopName(expr)) != null) {\n this.push(string);\n this.push(\": \");\n }\n this.push(\"do \");\n this.decompileExpression(getLoopBody(expr));\n this.push(\"while (0);\\n\");\n }\n case ExpressionId.Break: {\n if (nested = getBreakCondition(expr)) {\n this.push(\"if (\");\n this.decompileExpression(nested);\n this.push(\") \");\n }\n if ((string = getBreakName(expr)) != null) {\n this.push(\"break \");\n this.push(string);\n this.push(\";\\n\");\n } else {\n this.push(\"break;\\n\");\n }\n return;\n }\n case ExpressionId.Switch:\n case ExpressionId.Call:\n case ExpressionId.CallIndirect: {\n throw new Error(\"not implemented\");\n }\n case ExpressionId.LocalGet: {\n this.push(\"$\");\n this.push(getLocalGetIndex(expr).toString(10));\n return;\n }\n case ExpressionId.LocalSet: {\n this.push(\"$\");\n this.push(getLocalSetIndex(expr).toString(10));\n this.push(\" = \");\n this.decompileExpression(getLocalSetValue(expr));\n return;\n }\n case ExpressionId.GlobalGet:\n case ExpressionId.GlobalSet: {\n throw new Error(\"not implemented\");\n }\n case ExpressionId.Load: {\n this.push(\"load<\");\n this.push(nativeTypeToType(type));\n this.push(\">(\");\n this.push(getLoadOffset(expr).toString(10));\n this.push(\" + \");\n this.decompileExpression(getLoadPtr(expr));\n this.push(\")\");\n return;\n }\n case ExpressionId.Store: {\n this.push(\"store<\");\n this.push(nativeTypeToType(type));\n this.push(\">(\");\n this.push(getStoreOffset(expr).toString(10));\n this.push(\" + \");\n this.decompileExpression(getStorePtr(expr));\n this.push(\", \");\n this.decompileExpression(getStoreValue(expr));\n this.push(\")\");\n return;\n }\n case ExpressionId.Const: {\n switch (type) {\n case NativeType.I32: {\n this.push(getConstValueI32(expr).toString(10));\n return;\n }\n case NativeType.I64: {\n this.push(\n i64_to_string(\n i64_new(\n getConstValueI64Low(expr),\n getConstValueI64High(expr)\n )\n )\n );\n return;\n }\n case NativeType.F32: {\n this.push(getConstValueF32(expr).toString(10));\n return;\n }\n case NativeType.F64: {\n this.push(getConstValueF64(expr).toString(10));\n return;\n }\n }\n break;\n }\n case ExpressionId.Unary: {\n switch (getUnaryOp(expr)) {\n case UnaryOp.ClzI32: {\n this.push(\"clz(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.CtzI32: {\n this.push(\"ctz(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.PopcntI32: {\n this.push(\"popcnt(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.NegF32:\n case UnaryOp.NegF64: {\n this.push(\"-\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.AbsF32: {\n this.push(\"abs(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.CeilF32: {\n this.push(\"ceil(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.FloorF32: {\n this.push(\"floor(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.TruncF32: {\n this.push(\"trunc(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.NearestF32: {\n this.push(\"nearest(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.SqrtF32: {\n this.push(\"sqrt(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.EqzI32:\n case UnaryOp.EqzI64: {\n this.push(\"!\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ClzI64: {\n this.push(\"clz(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.CtzI64: {\n this.push(\"ctz(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.PopcntI64: {\n this.push(\"popcnt(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.AbsF64: {\n this.push(\"abs(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.CeilF64: {\n this.push(\"ceil(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.FloorF64: {\n this.push(\"floor(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.TruncF64: {\n this.push(\"trunc(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.NearestF64: {\n this.push(\"nearest(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.SqrtF64: {\n this.push(\"sqrt(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.ExtendI32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ExtendU32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.WrapI64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF32ToI32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF32ToI64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF32ToU32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF32ToU64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF64ToI32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF64ToI64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF64ToU32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.TruncF64ToU64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ReinterpretF32: {\n this.push(\"reinterpret(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.ReinterpretF64: {\n this.push(\"reinterpret(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.ConvertI32ToF32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertI32ToF64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertU32ToF32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertU32ToF64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertI64ToF32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertI64ToF64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertU64ToF32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ConvertU64ToF64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.PromoteF32: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.DemoteF64: {\n this.push(\"\");\n this.decompileExpression(getUnaryValue(expr));\n return;\n }\n case UnaryOp.ReinterpretI32: {\n this.push(\"reinterpret(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n case UnaryOp.ReinterpretI64: {\n this.push(\"reinterpret(\");\n this.decompileExpression(getUnaryValue(expr));\n this.push(\")\");\n return;\n }\n }\n break;\n }\n case ExpressionId.Binary: { // TODO: precedence\n switch (getBinaryOp(expr)) {\n case BinaryOp.AddI32:\n case BinaryOp.AddI64:\n case BinaryOp.AddF32:\n case BinaryOp.AddF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" + \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.SubI32:\n case BinaryOp.SubI64:\n case BinaryOp.SubF32:\n case BinaryOp.SubF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" - \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.MulI32:\n case BinaryOp.MulI64:\n case BinaryOp.MulF32:\n case BinaryOp.MulF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" * \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.DivI32:\n case BinaryOp.DivI64:\n case BinaryOp.DivF32:\n case BinaryOp.DivF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" / \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.DivU32: {\n this.push(\"(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" / \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.RemI32:\n case BinaryOp.RemI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" % \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.RemU32: {\n this.push(\"(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" / \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.AndI32:\n case BinaryOp.AndI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" & \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.OrI32:\n case BinaryOp.OrI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" | \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.XorI32:\n case BinaryOp.XorI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" ^ \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.ShlI32:\n case BinaryOp.ShlI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" << \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.ShrU32:\n case BinaryOp.ShrU64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" >>> \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.ShrI32:\n case BinaryOp.ShrI64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" >> \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.RotlI32: {\n this.push(\"rotl(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.RotrI32: {\n this.push(\"rotr(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.EqI32:\n case BinaryOp.EqI64:\n case BinaryOp.EqF32:\n case BinaryOp.EqF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" == \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.NeI32:\n case BinaryOp.NeI64:\n case BinaryOp.NeF32:\n case BinaryOp.NeF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" != \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.LtI32:\n case BinaryOp.LtI64:\n case BinaryOp.LtF32:\n case BinaryOp.LtF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" < \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.LtU32: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" < \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.LeI32:\n case BinaryOp.LeI64:\n case BinaryOp.LeF32:\n case BinaryOp.LeF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" <= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.LeU32: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" <= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GtI32:\n case BinaryOp.GtI64:\n case BinaryOp.GtF32:\n case BinaryOp.GtF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" > \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GtU32: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" > \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GeI32:\n case BinaryOp.GeI64:\n case BinaryOp.GeF32:\n case BinaryOp.GeF64: {\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" >= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GeU32: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" >= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.DivU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" / \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.RemU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" % \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.RotlI64: {\n this.push(\"rotl(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.RotrI64: {\n this.push(\"rotr(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.LtU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" < \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.LeU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" <= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GtU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" > \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.GeU64: {\n this.push(\"\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\" >= \");\n this.decompileExpression(getBinaryRight(expr));\n return;\n }\n case BinaryOp.CopysignF32: {\n this.push(\"copysign(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.MinF32: {\n this.push(\"min(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.MaxF32: {\n this.push(\"max(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.CopysignF64: {\n this.push(\"copysign(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.MinF64: {\n this.push(\"min(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n case BinaryOp.MaxF64: {\n this.push(\"max(\");\n this.decompileExpression(getBinaryLeft(expr));\n this.push(\", \");\n this.decompileExpression(getBinaryRight(expr));\n this.push(\")\");\n return;\n }\n }\n return;\n }\n case ExpressionId.Select: {\n this.push(\"select<\");\n this.push(nativeTypeToType(type));\n this.push(\">(\");\n this.decompileExpression(getSelectThen(expr));\n this.push(\", \");\n this.decompileExpression(getSelectElse(expr));\n this.push(\", \");\n this.decompileExpression(getSelectCondition(expr));\n this.push(\")\");\n return;\n }\n case ExpressionId.Drop: {\n this.decompileExpression(getDropValue(expr));\n this.push(\";\\n\");\n return;\n }\n case ExpressionId.Return: {\n if (nested = getReturnValue(expr)) {\n this.push(\"return \");\n this.decompileExpression(nested);\n this.push(\";\\n\");\n } else {\n this.push(\"return;\\n\");\n }\n return;\n }\n case ExpressionId.Host: {\n switch (getHostOp(expr)) {\n case HostOp.MemorySize: {\n this.push(\"memory.size()\");\n return;\n }\n case HostOp.MemoryGrow: {\n this.push(\"memory.grow(\");\n this.decompileExpression(getHostOperand(expr, 0));\n this.push(\")\");\n return;\n }\n }\n break;\n }\n case ExpressionId.Nop: {\n this.push(\";\\n\");\n return;\n }\n case ExpressionId.Unreachable: {\n this.push(\"unreachable()\");\n return;\n }\n case ExpressionId.AtomicCmpxchg:\n case ExpressionId.AtomicRMW:\n case ExpressionId.AtomicWait:\n case ExpressionId.AtomicNotify:\n }\n throw new Error(\"not implemented\");\n }\n\n private push(text: string): void {\n // mostly here so we can add debugging if necessary\n this.text.push(text);\n }\n\n finish(): string {\n var ret = this.text.join(\"\");\n this.text = [];\n return ret;\n }\n}\n\nfunction nativeTypeToType(type: NativeType): string {\n switch (type) {\n case NativeType.None: return \"void\";\n case NativeType.I32: return \"i32\";\n case NativeType.I64: return \"i64\";\n case NativeType.F32: return \"f32\";\n case NativeType.F64: return \"f64\";\n case NativeType.V128: return \"v128\";\n case NativeType.Unreachable: throw new Error(\"unreachable type\");\n case NativeType.Auto: throw new Error(\"auto type\");\n default: throw new Error(\"unexpected type\");\n }\n}\n","/**\n * Definition builders for WebIDL and TypeScript.\n * @module definitions\n *//***/\n\n import {\n CommonFlags\n} from \"./common\";\n\nimport {\n Program,\n Element,\n ElementKind,\n Global,\n Enum,\n EnumValue,\n Field,\n Function,\n FunctionPrototype,\n Class,\n ClassPrototype,\n Namespace,\n ConstantValueKind,\n Interface,\n Property,\n PropertyPrototype,\n File\n} from \"./program\";\n\nimport {\n Type,\n TypeKind\n} from \"./types\";\n\nimport {\n SourceKind\n } from \"./ast\";\n\nimport {\n indent\n} from \"./util\";\n\n/** Walker base class. */\nabstract class ExportsWalker {\n\n /** Program reference. */\n program: Program;\n /** Whether to include private members */\n includePrivate: bool;\n /** Already seen elements. */\n seen: Map = new Map();\n\n /** Constructs a new Element walker. */\n constructor(program: Program, includePrivate: bool = false) {\n this.program = program;\n this.includePrivate;\n }\n\n /** Walks all elements and calls the respective handlers. */\n walk(): void {\n for (let file of this.program.filesByName.values()) {\n if (file.source.sourceKind == SourceKind.USER_ENTRY) this.visitFile(file);\n }\n }\n\n /** Visits all exported elements of a file. */\n visitFile(file: File): void {\n var members = file.exports;\n if (members) {\n for (let [name, member] of members) this.visitElement(name, member);\n }\n var exportsStar = file.exportsStar;\n if (exportsStar) {\n for (let exportStar of exportsStar) this.visitFile(exportStar);\n }\n }\n\n /** Visits an element.*/\n visitElement(name: string, element: Element): void {\n if (element.is(CommonFlags.PRIVATE) && !this.includePrivate) return;\n var seen = this.seen;\n if (seen.has(element)) {\n this.visitAlias(name, element, seen.get(element));\n return;\n }\n seen.set(element, name);\n switch (element.kind) {\n case ElementKind.GLOBAL: {\n if (element.is(CommonFlags.COMPILED)) this.visitGlobal(name, element);\n break;\n }\n case ElementKind.ENUM: {\n if (element.is(CommonFlags.COMPILED)) this.visitEnum(name, element);\n break;\n }\n case ElementKind.FUNCTION_PROTOTYPE: {\n this.visitFunctionInstances(name, element);\n break;\n }\n case ElementKind.CLASS_PROTOTYPE: {\n this.visitClassInstances(name, element);\n break;\n }\n case ElementKind.FIELD: {\n if ((element).is(CommonFlags.COMPILED)) this.visitField(name, element);\n break;\n }\n case ElementKind.PROPERTY_PROTOTYPE: {\n this.visitPropertyInstances(name, element);\n break;\n }\n case ElementKind.PROPERTY: {\n let prop = element;\n let getter = prop.getterInstance;\n if (getter) this.visitFunction(name, getter);\n let setter = prop.setterInstance;\n if (setter) this.visitFunction(name, setter);\n break;\n }\n case ElementKind.NAMESPACE: {\n if (hasCompiledMember(element)) this.visitNamespace(name, element);\n break;\n }\n case ElementKind.TYPEDEFINITION: break;\n default: assert(false);\n }\n }\n\n private visitFunctionInstances(name: string, element: FunctionPrototype): void {\n var instances = element.instances;\n if (instances) {\n for (let instance of instances.values()) {\n if (instance.is(CommonFlags.COMPILED)) this.visitFunction(name, instance);\n }\n }\n }\n\n private visitClassInstances(name: string, element: ClassPrototype): void {\n var instances = element.instances;\n if (instances) {\n for (let instance of instances.values()) {\n if (instance.is(CommonFlags.COMPILED)) this.visitClass(name, instance);\n }\n }\n }\n\n private visitPropertyInstances(name: string, element: PropertyPrototype): void {\n // var instances = element.instances;\n // if (instances) {\n // for (let instance of instances.values()) {\n // if (instance.is(CommonFlags.COMPILED)) this.visitProperty(instance);\n // }\n // }\n assert(false);\n }\n\n abstract visitGlobal(name: string, element: Global): void;\n abstract visitEnum(name: string, element: Enum): void;\n abstract visitFunction(name: string, element: Function): void;\n abstract visitClass(name: string, element: Class): void;\n abstract visitInterface(name: string, element: Interface): void;\n abstract visitField(name: string, element: Field): void;\n abstract visitNamespace(name: string, element: Element): void;\n abstract visitAlias(name: string, element: Element, originalName: string): void;\n}\n\n/** A WebIDL definitions builder. */\nexport class IDLBuilder extends ExportsWalker {\n\n /** Builds WebIDL definitions for the specified program. */\n static build(program: Program): string {\n return new IDLBuilder(program).build();\n }\n\n private sb: string[] = [];\n private indentLevel: i32 = 0;\n\n /** Constructs a new WebIDL builder. */\n constructor(program: Program, includePrivate: bool = false) {\n super(program, includePrivate);\n }\n\n visitGlobal(name: string, element: Global): void {\n var sb = this.sb;\n var isConst = element.is(CommonFlags.INLINED);\n indent(sb, this.indentLevel);\n if (isConst) sb.push(\"const \");\n sb.push(this.typeToString(element.type));\n sb.push(\" \");\n sb.push(name);\n if (isConst) {\n switch (element.constantValueKind) {\n case ConstantValueKind.INTEGER: {\n sb.push(\" = \");\n sb.push(i64_to_string(element.constantIntegerValue));\n break;\n }\n case ConstantValueKind.FLOAT: {\n sb.push(\" = \");\n sb.push(element.constantFloatValue.toString());\n break;\n }\n default: assert(false);\n }\n }\n sb.push(\";\\n\");\n }\n\n visitEnum(name: string, element: Enum): void {\n var sb = this.sb;\n indent(sb, this.indentLevel++);\n sb.push(\"interface \");\n sb.push(name);\n sb.push(\" {\\n\");\n var members = element.members;\n if (members) {\n for (let [name, member] of members) {\n if (member.kind == ElementKind.ENUMVALUE) {\n let isConst = (member).is(CommonFlags.INLINED);\n indent(sb, this.indentLevel);\n if (isConst) sb.push(\"const \");\n else sb.push(\"readonly \");\n sb.push(\"unsigned long \");\n sb.push(name);\n if (isConst) {\n sb.push(\" = \");\n assert((member).constantValueKind == ConstantValueKind.INTEGER);\n sb.push(i64_low((member).constantIntegerValue).toString(10));\n }\n sb.push(\";\\n\");\n }\n }\n for (let member of members.values()) {\n if (member.kind != ElementKind.ENUMVALUE) this.visitElement(member.name, member);\n }\n }\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n\n visitFunction(name: string, element: Function): void {\n var sb = this.sb;\n var signature = element.signature;\n indent(sb, this.indentLevel);\n sb.push(this.typeToString(signature.returnType));\n sb.push(\" \");\n sb.push(name);\n sb.push(\"(\");\n var parameters = signature.parameterTypes;\n var numParameters = parameters.length;\n // var requiredParameters = signature.requiredParameters;\n for (let i = 0; i < numParameters; ++i) {\n if (i) sb.push(\", \");\n // if (i >= requiredParameters) sb.push(\"optional \");\n sb.push(this.typeToString(parameters[i]));\n sb.push(\" \");\n sb.push(signature.getParameterName(i));\n }\n sb.push(\");\\n\");\n var members = element.members;\n if (members && members.size) {\n indent(sb, this.indentLevel);\n sb.push(\"interface \");\n sb.push(element.name);\n sb.push(\" {\\n\");\n for (let member of members.values()) this.visitElement(member.name, member);\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n }\n\n visitClass(name: string, element: Class): void {\n var sb = this.sb;\n indent(sb, this.indentLevel++);\n sb.push(\"interface \");\n sb.push(name);\n sb.push(\" {\\n\");\n // TODO\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n\n visitInterface(name: string, element: Interface): void {\n this.visitClass(name, element);\n }\n\n visitField(name: string, element: Field): void {\n // TODO\n }\n\n visitNamespace(name: string, element: Namespace): void {\n var sb = this.sb;\n indent(sb, this.indentLevel++);\n sb.push(\"interface \");\n sb.push(name);\n sb.push(\" {\\n\");\n var members = element.members;\n if (members) {\n for (let member of members.values()) this.visitElement(member.name, member);\n }\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n\n visitAlias(name: string, element: Element, originalName: string): void {\n // TODO\n }\n\n typeToString(type: Type): string {\n switch (type.kind) {\n case TypeKind.I8: return \"byte\";\n case TypeKind.I16: return \"short\";\n case TypeKind.I32: return \"long\";\n case TypeKind.I64: return \"long long\";\n case TypeKind.ISIZE: return this.program.options.isWasm64 ? \"long long\" : \"long\";\n case TypeKind.U8: return \"octet\";\n case TypeKind.U16: return \"unsigned short\";\n case TypeKind.U32: return \"unsigned long\";\n // ^ TODO: function types\n case TypeKind.U64: return \"unsigned long long\";\n case TypeKind.USIZE: return this.program.options.isWasm64 ? \"unsigned long long\" : \"unsigned long\";\n // ^ TODO: class types\n case TypeKind.BOOL: return \"boolean\";\n case TypeKind.F32: return \"unrestricted float\";\n case TypeKind.F64: return \"unrestricted double\";\n case TypeKind.VOID: return \"void\";\n default: {\n assert(false);\n return \"\";\n }\n }\n }\n\n build(): string {\n var sb = this.sb;\n sb.push(\"interface ASModule {\\n\");\n ++this.indentLevel;\n this.walk();\n --this.indentLevel;\n sb.push(\"}\\n\");\n return sb.join(\"\");\n }\n}\n\n/** A TypeScript definitions builder. */\nexport class TSDBuilder extends ExportsWalker {\n\n /** Builds TypeScript definitions for the specified program. */\n static build(program: Program): string {\n return new TSDBuilder(program).build();\n }\n\n private sb: string[] = [];\n private indentLevel: i32 = 0;\n private unknown: Set = new Set();\n\n /** Constructs a new WebIDL builder. */\n constructor(program: Program, includePrivate: bool = false) {\n super(program, includePrivate);\n }\n\n visitGlobal(name: string, element: Global): void {\n var sb = this.sb;\n var isConst = element.is(CommonFlags.INLINED);\n indent(sb, this.indentLevel);\n if (element.is(CommonFlags.STATIC)) {\n if (isConst) sb.push(\"static readonly \");\n else sb.push(\"static \");\n } else {\n if (isConst) sb.push(\"export const \");\n else sb.push(\"export var \");\n }\n sb.push(name);\n sb.push(\": \");\n sb.push(this.typeToString(element.type));\n sb.push(\";\\n\");\n this.visitNamespace(name, element);\n }\n\n visitEnum(name: string, element: Enum): void {\n var sb = this.sb;\n indent(sb, this.indentLevel++);\n sb.push(\"export enum \");\n sb.push(name);\n sb.push(\" {\\n\");\n var members = element.members;\n if (members) {\n let numMembers = members.size;\n for (let [name, member] of members) {\n if (member.kind == ElementKind.ENUMVALUE) {\n indent(sb, this.indentLevel);\n sb.push(name);\n if (member.is(CommonFlags.INLINED)) {\n sb.push(\" = \");\n assert((member).constantValueKind == ConstantValueKind.INTEGER);\n sb.push(i64_low((member).constantIntegerValue).toString(10));\n }\n sb.push(\",\\n\");\n --numMembers;\n }\n }\n if (numMembers) this.visitNamespace(name, element);\n }\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n\n visitFunction(name: string, element: Function): void {\n if (element.isAny(CommonFlags.PRIVATE | CommonFlags.SET)) return;\n var sb = this.sb;\n var signature = element.signature;\n indent(sb, this.indentLevel);\n if (element.is(CommonFlags.PROTECTED)) sb.push(\"protected \");\n if (element.is(CommonFlags.STATIC)) sb.push(\"static \");\n if (element.is(CommonFlags.GET)) {\n sb.push(\"get \");\n sb.push(name); // 'get:funcName' internally\n sb.push(\"(): \");\n sb.push(this.typeToString(signature.returnType));\n sb.push(\";\\n\");\n return;\n } else {\n if (!element.isAny(CommonFlags.STATIC | CommonFlags.INSTANCE)) sb.push(\"export function \");\n sb.push(name);\n }\n sb.push(\"(\");\n var parameters = signature.parameterTypes;\n var numParameters = parameters.length;\n // var requiredParameters = signature.requiredParameters;\n for (let i = 0; i < numParameters; ++i) {\n if (i) sb.push(\", \");\n // if (i >= requiredParameters) sb.push(\"optional \");\n sb.push(signature.getParameterName(i));\n sb.push(\": \");\n sb.push(this.typeToString(parameters[i]));\n }\n if (element.isAny(CommonFlags.CONSTRUCTOR | CommonFlags.SET)) {\n sb.push(\")\");\n } else {\n sb.push(\"): \");\n sb.push(this.typeToString(signature.returnType));\n }\n sb.push(\";\\n\");\n this.visitNamespace(name, element);\n }\n\n visitClass(name: string, element: Class): void {\n var sb = this.sb;\n var isInterface = element.kind == ElementKind.INTERFACE;\n indent(sb, this.indentLevel++);\n if (isInterface) {\n sb.push(\"export interface \");\n } else {\n if (element.is(CommonFlags.ABSTRACT)) sb.push(\"abstract \");\n sb.push(\"export class \");\n }\n sb.push(name);\n // var base = element.base;\n // if (base && base.is(CommonFlags.COMPILED | CommonFlags.MODULE_EXPORT)) {\n // sb.push(\" extends \");\n // sb.push(base.name); // TODO: fqn\n // }\n sb.push(\" {\\n\");\n var staticMembers = element.prototype.members;\n if (staticMembers) {\n for (let member of staticMembers.values()) this.visitElement(member.name, member);\n }\n var instanceMembers = element.members;\n if (instanceMembers) {\n for (let member of instanceMembers.values()) this.visitElement(member.name, member);\n }\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n\n visitInterface(name: string, element: Interface): void {\n this.visitClass(name, element);\n }\n\n visitField(name: string, element: Field): void {\n if (element.is(CommonFlags.PRIVATE)) return;\n var sb = this.sb;\n indent(sb, this.indentLevel);\n if (element.is(CommonFlags.PROTECTED)) sb.push(\"protected \");\n if (element.is(CommonFlags.STATIC)) sb.push(\"static \");\n if (element.is(CommonFlags.READONLY)) sb.push(\"readonly \");\n sb.push(name);\n sb.push(\": \");\n sb.push(this.typeToString(element.type));\n sb.push(\";\\n\");\n }\n\n visitNamespace(name: string, element: Element): void {\n var members = element.members;\n if (members && members.size) {\n let sb = this.sb;\n indent(sb, this.indentLevel++);\n sb.push(\"export namespace \");\n sb.push(name);\n sb.push(\" {\\n\");\n for (let member of members.values()) this.visitElement(member.name, member);\n indent(sb, --this.indentLevel);\n sb.push(\"}\\n\");\n }\n }\n\n visitAlias(name: string, element: Element, originalName: string): void {\n var sb = this.sb;\n indent(sb, this.indentLevel);\n sb.push(\"export const \");\n sb.push(name);\n sb.push(\" = typeof \");\n sb.push(originalName);\n sb.push(\";\\n\");\n }\n\n typeToString(type: Type): string {\n switch (type.kind) {\n case TypeKind.I8: return \"i8\";\n case TypeKind.I16: return \"i16\";\n case TypeKind.I32: return \"i32\";\n case TypeKind.I64: return \"I64\";\n case TypeKind.ISIZE: return this.program.options.isWasm64 ? \"I64\" : \"i32\";\n case TypeKind.U8: return \"u8\";\n case TypeKind.U16: return \"u16\";\n case TypeKind.U32: return \"u32\";\n // ^ TODO: function types\n case TypeKind.U64: return \"U64\";\n case TypeKind.USIZE: return this.program.options.isWasm64 ? \"U64\" : \"u32\";\n // ^ TODO: class types\n case TypeKind.BOOL: return \"bool\";\n case TypeKind.F32: return \"f32\";\n case TypeKind.F64: return \"f64\";\n case TypeKind.V128: return \"v128\";\n case TypeKind.VOID: return \"void\";\n default: {\n assert(false);\n return \"any\";\n }\n }\n }\n\n build(): string {\n var sb = this.sb;\n sb.push(\"declare module ASModule {\\n\");\n sb.push(\" type i8 = number;\\n\");\n sb.push(\" type i16 = number;\\n\");\n sb.push(\" type i32 = number;\\n\");\n sb.push(\" type u8 = number;\\n\");\n sb.push(\" type u16 = number;\\n\");\n sb.push(\" type u32 = number;\\n\");\n sb.push(\" type f32 = number;\\n\");\n sb.push(\" type f64 = number;\\n\");\n sb.push(\" type bool = any;\\n\");\n ++this.indentLevel;\n this.walk();\n --this.indentLevel;\n sb.push(\"}\\n\");\n sb.push(\"export default ASModule;\\n\");\n return this.sb.join(\"\");\n }\n}\n\n// helpers\n\n/** Tests if a namespace-like element has at least one compiled member. */\nfunction hasCompiledMember(element: Element): bool {\n var members = element.members;\n if (members) {\n for (let member of members.values()) {\n switch (member.kind) {\n case ElementKind.FUNCTION_PROTOTYPE: {\n let instances = (member).instances;\n if (instances) {\n for (let instance of instances.values()) {\n if (instance.is(CommonFlags.COMPILED)) return true;\n }\n }\n break;\n }\n case ElementKind.CLASS_PROTOTYPE: {\n let instances = (member).instances;\n if (instances) {\n for (let instance of instances.values()) {\n if (instance.is(CommonFlags.COMPILED)) return true;\n }\n }\n break;\n }\n default: {\n if (member.is(CommonFlags.COMPILED) || hasCompiledMember(member)) return true;\n break;\n }\n }\n }\n }\n return false;\n}\n","/**\n * A TypeScript parser for the AssemblyScript subset.\n * @module parser\n *//***/\n\nimport {\n CommonFlags,\n LIBRARY_PREFIX,\n PATH_DELIMITER\n} from \"./common\";\n\nimport {\n Program\n} from \"./program\";\n\nimport {\n Tokenizer,\n Token,\n Range,\n CommentHandler,\n IdentifierHandling,\n isIllegalVariableIdentifier\n} from \"./tokenizer\";\n\nimport {\n DiagnosticCode,\n DiagnosticEmitter\n} from \"./diagnostics\";\n\nimport {\n normalizePath\n} from \"./util\";\n\nimport {\n Node,\n NodeKind,\n Source,\n SourceKind,\n TypeNode,\n NamedTypeNode,\n FunctionTypeNode,\n ArrowKind,\n\n Expression,\n AssertionKind,\n CallExpression,\n ClassExpression,\n FunctionExpression,\n IdentifierExpression,\n StringLiteralExpression,\n\n Statement,\n BlockStatement,\n BreakStatement,\n ClassDeclaration,\n ContinueStatement,\n DeclarationStatement,\n DecoratorNode,\n DoStatement,\n EnumDeclaration,\n EnumValueDeclaration,\n ExportImportStatement,\n ExportMember,\n ExportStatement,\n ExpressionStatement,\n ForStatement,\n FunctionDeclaration,\n IfStatement,\n ImportDeclaration,\n ImportStatement,\n IndexSignatureDeclaration,\n NamespaceDeclaration,\n ParameterNode,\n ParameterKind,\n ReturnStatement,\n SwitchCase,\n SwitchStatement,\n ThrowStatement,\n TryStatement,\n TypeDeclaration,\n TypeParameterNode,\n VariableStatement,\n VariableDeclaration,\n VoidStatement,\n WhileStatement,\n\n mangleInternalPath,\n nodeIsCallable,\n nodeIsGenericCallable\n} from \"./ast\";\n\n/** Parser interface. */\nexport class Parser extends DiagnosticEmitter {\n\n /** Program being created. */\n program: Program;\n /** Source file names to be requested next. */\n backlog: string[] = new Array();\n /** Source file names already seen, that is processed or backlogged. */\n seenlog: Set = new Set();\n /** Source file names already completely processed. */\n donelog: Set = new Set();\n /** Optional handler to intercept comments while tokenizing. */\n onComment: CommentHandler | null = null;\n /** Current file being parsed. */\n currentSource: Source;\n /** Dependency map **/\n dependees: Map = new Map();\n\n /** Constructs a new parser. */\n constructor() {\n super();\n this.program = new Program(this.diagnostics);\n }\n\n /** Parses a file and adds its definitions to the program. */\n parseFile(\n text: string,\n path: string,\n isEntry: bool\n ): void {\n var normalizedPath = normalizePath(path);\n var internalPath = mangleInternalPath(normalizedPath);\n // check if already processed\n if (this.donelog.has(internalPath)) return;\n this.donelog.add(internalPath); // do not parse again\n this.seenlog.add(internalPath); // do not request again\n\n // create the source element\n var source = new Source(\n normalizedPath,\n text,\n isEntry\n ? SourceKind.USER_ENTRY\n : path.startsWith(LIBRARY_PREFIX)\n ? path.indexOf(PATH_DELIMITER, LIBRARY_PREFIX.length) < 0\n ? SourceKind.LIBRARY_ENTRY\n : SourceKind.LIBRARY\n : SourceKind.USER\n );\n var program = this.program;\n program.sources.push(source);\n this.currentSource = source;\n\n // tokenize and parse\n var tn = new Tokenizer(source, program.diagnostics);\n tn.onComment = this.onComment;\n source.tokenizer = tn;\n var statements = source.statements;\n while (!tn.skip(Token.ENDOFFILE)) {\n let statement = this.parseTopLevelStatement(tn, null);\n if (statement) statements.push(statement);\n }\n tn.finish();\n }\n\n /** Parses a top-level statement. */\n parseTopLevelStatement(\n tn: Tokenizer,\n namespace: NamespaceDeclaration | null = null\n ): Statement | null {\n var flags = CommonFlags.NONE;\n var startPos: i32 = -1;\n\n // check decorators\n var decorators: DecoratorNode[] | null = null;\n while (tn.skip(Token.AT)) {\n if (startPos < 0) startPos = tn.tokenPos;\n let decorator = this.parseDecorator(tn);\n if (!decorator) {\n this.skipStatement(tn);\n continue;\n }\n if (!decorators) decorators = [decorator];\n else decorators.push(decorator);\n }\n\n // check modifiers\n var exportStart: i32 = 0;\n var exportEnd: i32 = 0;\n var defaultStart: i32 = 0;\n var defaultEnd: i32 = 0;\n if (tn.skip(Token.EXPORT)) {\n if (startPos < 0) startPos = tn.tokenPos;\n flags |= CommonFlags.EXPORT;\n exportStart = tn.tokenPos;\n exportEnd = tn.pos;\n if (tn.skip(Token.DEFAULT)) {\n defaultStart = tn.tokenPos;\n defaultEnd = tn.pos;\n }\n }\n\n var declareStart: i32 = 0;\n var declareEnd: i32 = 0;\n var contextIsAmbient = namespace != null && namespace.is(CommonFlags.AMBIENT);\n if (tn.skip(Token.DECLARE)) {\n if (contextIsAmbient) {\n this.error(\n DiagnosticCode.A_declare_modifier_cannot_be_used_in_an_already_ambient_context,\n tn.range()\n ); // recoverable\n } else {\n if (startPos < 0) startPos = tn.tokenPos;\n declareStart = startPos;\n declareEnd = tn.pos;\n flags |= CommonFlags.DECLARE | CommonFlags.AMBIENT;\n }\n } else if (contextIsAmbient) {\n flags |= CommonFlags.AMBIENT;\n }\n\n // parse the statement\n var statement: Statement | null = null;\n\n // handle declarations\n var first = tn.peek();\n if (startPos < 0) startPos = tn.nextTokenPos;\n switch (first) {\n case Token.CONST: {\n tn.next();\n flags |= CommonFlags.CONST;\n if (tn.skip(Token.ENUM)) {\n statement = this.parseEnum(tn, flags, decorators, startPos);\n } else {\n statement = this.parseVariable(tn, flags, decorators, startPos);\n }\n decorators = null;\n break;\n }\n case Token.LET: flags |= CommonFlags.LET;\n case Token.VAR: {\n tn.next();\n statement = this.parseVariable(tn, flags, decorators, startPos);\n decorators = null;\n break;\n }\n case Token.ENUM: {\n tn.next();\n statement = this.parseEnum(tn, flags, decorators, startPos);\n decorators = null;\n break;\n }\n case Token.FUNCTION: {\n tn.next();\n statement = this.parseFunction(tn, flags, decorators, startPos);\n decorators = null;\n break;\n }\n case Token.ABSTRACT: {\n let state = tn.mark();\n tn.next();\n if (!tn.skip(Token.CLASS)) {\n tn.reset(state);\n statement = this.parseStatement(tn, true);\n break;\n } else {\n tn.discard(state);\n }\n flags |= CommonFlags.ABSTRACT;\n // fall through\n }\n case Token.CLASS:\n case Token.INTERFACE: {\n tn.next();\n statement = this.parseClassOrInterface(tn, flags, decorators, startPos);\n decorators = null;\n break;\n }\n case Token.NAMESPACE: {\n let state = tn.mark();\n tn.next();\n if (tn.peek(false, IdentifierHandling.PREFER) == Token.IDENTIFIER) {\n tn.discard(state);\n statement = this.parseNamespace(tn, flags, decorators, startPos);\n decorators = null;\n } else {\n tn.reset(state);\n statement = this.parseStatement(tn, true);\n }\n break;\n }\n case Token.IMPORT: {\n tn.next();\n flags |= CommonFlags.IMPORT;\n if (flags & CommonFlags.EXPORT) {\n statement = this.parseExportImport(tn, startPos);\n } else {\n statement = this.parseImport(tn);\n }\n break;\n }\n case Token.TYPE: { // also identifier\n let state = tn.mark();\n tn.next();\n if (tn.peek(false, IdentifierHandling.PREFER) == Token.IDENTIFIER) {\n tn.discard(state);\n statement = this.parseTypeDeclaration(tn, flags, decorators, startPos);\n decorators = null;\n } else {\n tn.reset(state);\n statement = this.parseStatement(tn, true);\n }\n break;\n }\n default: {\n\n // handle plain exports\n if (flags & CommonFlags.EXPORT) {\n if (defaultEnd && tn.skipIdentifier(IdentifierHandling.PREFER)) {\n if (declareEnd) {\n this.error(\n DiagnosticCode.An_export_assignment_cannot_have_modifiers,\n tn.range(declareStart, declareEnd)\n );\n }\n statement = this.parseExportDefaultAlias(tn, startPos, defaultStart, defaultEnd);\n defaultStart = defaultEnd = 0; // consume\n } else {\n statement = this.parseExport(tn, startPos, (flags & CommonFlags.DECLARE) != 0);\n }\n\n // handle non-declaration statements\n } else {\n if (exportEnd) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(exportStart, exportEnd), \"export\"\n ); // recoverable\n }\n if (declareEnd) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(declareStart, declareEnd), \"declare\"\n ); // recoverable\n }\n if (!namespace) {\n statement = this.parseStatement(tn, true);\n } // TODO: else?\n }\n break;\n }\n }\n\n // check for decorators that weren't consumed\n if (decorators) {\n for (let i = 0, k = decorators.length; i < k; ++i) {\n this.error(\n DiagnosticCode.Decorators_are_not_valid_here,\n decorators[i].range\n );\n }\n }\n\n // check if this an `export default` declaration\n if (defaultEnd && statement !== null) {\n switch (statement.kind) {\n case NodeKind.ENUMDECLARATION:\n case NodeKind.FUNCTIONDECLARATION:\n case NodeKind.CLASSDECLARATION:\n case NodeKind.INTERFACEDECLARATION:\n case NodeKind.NAMESPACEDECLARATION: {\n return Node.createExportDefaultStatement(statement, tn.range(startPos, tn.pos));\n }\n default: {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(defaultStart, defaultEnd), \"default\"\n );\n }\n }\n }\n return statement;\n }\n\n /** Obtains the next file to parse. */\n nextFile(): string | null {\n var backlog = this.backlog;\n return backlog.length ? backlog.shift() : null;\n }\n\n /** Obtains the dependee for a given import */\n getDependee(dependent: string): string | null {\n var source = this.dependees.get(dependent);\n if (source) {\n return source.internalPath;\n }\n return null;\n }\n\n /** Finishes parsing and returns the program. */\n finish(): Program {\n if (this.backlog.length) throw new Error(\"backlog is not empty\");\n this.backlog = [];\n this.seenlog.clear();\n this.donelog.clear();\n this.dependees.clear();\n return this.program;\n }\n\n /** Parses a type. */\n parseType(\n tn: Tokenizer,\n acceptParenthesized: bool = true,\n suppressErrors: bool = false\n ): TypeNode | null {\n\n // NOTE: this parses our limited subset\n var token = tn.next();\n var startPos = tn.tokenPos;\n\n var type: TypeNode;\n\n // '(' ...\n if (token == Token.OPENPAREN) {\n\n // '(' FunctionSignature ')' '|' 'null'?\n let isNullableSignature = tn.skip(Token.OPENPAREN);\n // FunctionSignature?\n let signature = this.tryParseFunctionType(tn);\n if (signature) {\n if (isNullableSignature) {\n if (!tn.skip(Token.CLOSEPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n if (!tn.skip(Token.BAR)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"|\"\n );\n return null;\n }\n if (!tn.skip(Token.NULL)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"null\"\n );\n }\n signature.isNullable = true;\n }\n return signature;\n } else if (isNullableSignature || this.tryParseSignatureIsSignature) {\n this.error(\n DiagnosticCode.Unexpected_token,\n tn.range()\n );\n return null;\n }\n\n // Type (',' Type)* ')'\n if (acceptParenthesized) {\n let innerType = this.parseType(tn, false, suppressErrors);\n if (!innerType) return null;\n if (!tn.skip(Token.CLOSEPAREN)) {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"}\"\n );\n }\n return null;\n }\n type = innerType;\n type.range.start = startPos;\n type.range.end = tn.pos;\n } else {\n this.error(\n DiagnosticCode.Unexpected_token,\n tn.range()\n );\n return null;\n }\n\n // 'void'\n } else if (token == Token.VOID) {\n type = Node.createNamedType(\n Node.createSimpleTypeName(\"void\", tn.range()), [], false, tn.range(startPos, tn.pos)\n );\n\n // 'this'\n } else if (token == Token.THIS) {\n type = Node.createNamedType(\n Node.createSimpleTypeName(\"this\", tn.range()), [], false, tn.range(startPos, tn.pos)\n );\n\n // 'true'\n } else if (token == Token.TRUE || token == Token.FALSE) {\n type = Node.createNamedType(\n Node.createSimpleTypeName(\"bool\", tn.range()), [], false, tn.range(startPos, tn.pos)\n );\n\n // StringLiteral\n } else if (token == Token.STRINGLITERAL) {\n tn.readString();\n type = Node.createNamedType(\n Node.createSimpleTypeName(\"string\", tn.range()), [], false, tn.range(startPos, tn.pos)\n );\n\n // Identifier\n } else if (token == Token.IDENTIFIER) {\n let first = Node.createSimpleTypeName(tn.readIdentifier(), tn.range());\n let current = first;\n let parameters: NamedTypeNode[] | null = null;\n let nullable = false;\n\n // Identifier ('.' Identifier)+\n while (tn.skip(Token.DOT)) {\n if (tn.skip(Token.IDENTIFIER)) {\n let next = Node.createSimpleTypeName(tn.readIdentifier(), tn.range());\n current.next = next;\n current = next;\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range(tn.pos)\n );\n return null;\n }\n }\n\n // Name\n if (tn.skip(Token.LESSTHAN)) {\n do {\n let parameter = this.parseType(tn, true, suppressErrors);\n if (!parameter) return null;\n if (!parameters) parameters = [parameter];\n else parameters.push(parameter);\n } while (tn.skip(Token.COMMA));\n if (!tn.skip(Token.GREATERTHAN)) {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \">\"\n );\n }\n return null;\n }\n }\n // ... | null\n while (tn.skip(Token.BAR)) {\n if (tn.skip(Token.NULL)) {\n nullable = true;\n } else {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"null\"\n );\n }\n return null;\n }\n }\n type = Node.createNamedType(first, parameters || [], nullable, tn.range(startPos, tn.pos));\n } else {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n // ... [][]\n while (tn.skip(Token.OPENBRACKET)) {\n let bracketStart = tn.tokenPos;\n if (!tn.skip(Token.CLOSEBRACKET)) {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"]\"\n );\n }\n return null;\n }\n let bracketRange = tn.range(bracketStart, tn.pos);\n\n // ...[] | null\n let nullable = false;\n if (tn.skip(Token.BAR)) {\n if (tn.skip(Token.NULL)) {\n nullable = true;\n } else {\n if (!suppressErrors) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"null\"\n );\n }\n return null;\n }\n }\n type = Node.createNamedType(\n Node.createSimpleTypeName(\"Array\", bracketRange),\n [ type ],\n nullable,\n tn.range(startPos, tn.pos)\n );\n if (nullable) break;\n }\n\n return type;\n }\n\n // Indicates whether tryParseSignature determined that it is handling a Signature\n private tryParseSignatureIsSignature: bool = false;\n\n /** Parses a function type, as used in type declarations. */\n tryParseFunctionType(\n tn: Tokenizer\n ): FunctionTypeNode | null {\n\n // at '(': ('...'? Identifier '?'? ':' Type (',' '...'? Identifier '?'? ':' Type)* )? ')' '=>' Type\n\n var state = tn.mark();\n var startPos = tn.tokenPos;\n var parameters: ParameterNode[] | null = null;\n var thisType: NamedTypeNode | null = null;\n var isSignature: bool = false;\n\n if (tn.skip(Token.CLOSEPAREN)) {\n isSignature = true;\n tn.discard(state);\n parameters = [];\n\n } else {\n isSignature = false; // not yet known\n do {\n let kind = ParameterKind.DEFAULT;\n if (tn.skip(Token.DOT_DOT_DOT)) {\n isSignature = true;\n tn.discard(state);\n kind = ParameterKind.REST;\n }\n if (tn.skip(Token.THIS)) {\n if (tn.skip(Token.COLON)) {\n isSignature = true;\n tn.discard(state);\n let t = this.parseType(tn, false);\n if (!t) return null;\n if (t.kind != NodeKind.NAMEDTYPE) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n t.range\n );\n this.tryParseSignatureIsSignature = true;\n return null;\n }\n thisType = t;\n } else {\n tn.reset(state);\n this.tryParseSignatureIsSignature = false;\n return null;\n }\n } else if (tn.skipIdentifier()) {\n let name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range(tn.tokenPos, tn.pos));\n if (tn.skip(Token.QUESTION)) {\n isSignature = true;\n tn.discard(state);\n if (kind == ParameterKind.REST) {\n this.error(\n DiagnosticCode.A_rest_parameter_cannot_be_optional,\n tn.range()\n ); // recoverable\n } else {\n kind = ParameterKind.OPTIONAL;\n }\n }\n if (tn.skip(Token.COLON)) {\n isSignature = true;\n tn.discard(state);\n let type = this.parseType(tn); // not suppressing errors because known\n if (!type) {\n this.tryParseSignatureIsSignature = isSignature;\n return null;\n }\n let param = new ParameterNode();\n param.parameterKind = kind;\n param.name = name;\n param.type = type;\n if (!parameters) parameters = [ param ];\n else parameters.push(param);\n } else {\n if (isSignature) {\n this.error(\n DiagnosticCode.Type_expected,\n tn.range()\n ); // recoverable\n }\n }\n } else {\n if (isSignature) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n } else {\n tn.reset(state);\n }\n this.tryParseSignatureIsSignature = isSignature;\n return null;\n }\n } while (tn.skip(Token.COMMA));\n if (!tn.skip(Token.CLOSEPAREN)) {\n if (isSignature) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n } else {\n tn.reset(state);\n }\n this.tryParseSignatureIsSignature = isSignature;\n return null;\n }\n }\n\n var returnType: TypeNode | null;\n if (tn.skip(Token.EQUALS_GREATERTHAN)) {\n isSignature = true;\n tn.discard(state);\n returnType = this.parseType(tn);\n if (!returnType) {\n this.tryParseSignatureIsSignature = isSignature;\n return null;\n }\n } else {\n if (isSignature) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"=>\"\n );\n } else {\n tn.reset(state);\n }\n this.tryParseSignatureIsSignature = isSignature;\n return null;\n }\n this.tryParseSignatureIsSignature = true;\n return Node.createFunctionType(\n parameters || [],\n returnType,\n thisType,\n false,\n tn.range(startPos, tn.pos)\n );\n }\n\n // statements\n\n parseDecorator(\n tn: Tokenizer\n ): DecoratorNode | null {\n\n // at '@': Identifier ('.' Identifier)* '(' Arguments\n\n var startPos = tn.tokenPos;\n if (tn.skipIdentifier()) {\n let name = tn.readIdentifier();\n let expression: Expression = Node.createIdentifierExpression(name, tn.range(startPos, tn.pos));\n while (tn.skip(Token.DOT)) {\n if (tn.skipIdentifier()) {\n name = tn.readIdentifier();\n expression = Node.createPropertyAccessExpression(\n expression,\n Node.createIdentifierExpression(name, tn.range()),\n tn.range(startPos, tn.pos)\n );\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n }\n let args: Expression[] | null;\n if (tn.skip(Token.OPENPAREN)) {\n args = this.parseArguments(tn);\n if (args) {\n return Node.createDecorator(expression, args, tn.range(startPos, tn.pos));\n }\n } else {\n return Node.createDecorator(expression, null, tn.range(startPos, tn.pos));\n }\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseVariable(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): VariableStatement | null {\n\n // at ('const' | 'let' | 'var'): VariableDeclaration (',' VariableDeclaration)* ';'?\n\n var members = new Array();\n do {\n let member = this.parseVariableDeclaration(tn, flags, decorators);\n if (!member) return null;\n members.push(member);\n } while (tn.skip(Token.COMMA));\n\n var ret = Node.createVariableStatement(members, decorators, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseVariableDeclaration(\n tn: Tokenizer,\n parentFlags: CommonFlags,\n parentDecorators: DecoratorNode[] | null\n ): VariableDeclaration | null {\n\n // before: Identifier (':' Type)? ('=' Expression)?\n\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n var identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n if (isIllegalVariableIdentifier(identifier.text)) {\n this.error(\n DiagnosticCode.Identifier_expected,\n identifier.range\n );\n }\n var flags = parentFlags;\n if (tn.skip(Token.EXCLAMATION)) {\n flags |= CommonFlags.DEFINITE_ASSIGNMENT;\n }\n\n var type: TypeNode | null = null;\n if (tn.skip(Token.COLON)) {\n type = this.parseType(tn);\n }\n\n var initializer: Expression | null = null;\n if (tn.skip(Token.EQUALS)) {\n if (flags & CommonFlags.AMBIENT) {\n this.error(\n DiagnosticCode.Initializers_are_not_allowed_in_ambient_contexts,\n tn.range()\n ); // recoverable\n }\n initializer = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!initializer) return null;\n } else {\n if (flags & CommonFlags.CONST) {\n if (!(flags & CommonFlags.AMBIENT)) {\n this.error(\n DiagnosticCode._const_declarations_must_be_initialized,\n identifier.range\n ); // recoverable\n }\n } else if (!type) { // neither type nor initializer\n this.error(\n DiagnosticCode.Type_expected,\n tn.range(tn.pos)\n ); // recoverable\n }\n }\n var range = Range.join(identifier.range, tn.range());\n if ((flags & CommonFlags.DEFINITE_ASSIGNMENT) && initializer) {\n this.error(\n DiagnosticCode.A_definite_assignment_assertion_is_not_permitted_in_this_context,\n range);\n }\n return Node.createVariableDeclaration(\n identifier,\n type,\n initializer,\n parentDecorators,\n flags,\n range\n );\n }\n\n parseEnum(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): EnumDeclaration | null {\n\n // at 'enum': Identifier '{' (EnumValueDeclaration (',' EnumValueDeclaration )*)? '}' ';'?\n\n if (tn.next() != Token.IDENTIFIER) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n var identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n if (tn.next() != Token.OPENBRACE) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n return null;\n }\n var members = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n let member = this.parseEnumValue(tn, CommonFlags.NONE);\n if (!member) return null;\n members.push(member);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEBRACE)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n }\n var ret = Node.createEnumDeclaration(\n identifier,\n members,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseEnumValue(\n tn: Tokenizer,\n parentFlags: CommonFlags\n ): EnumValueDeclaration | null {\n\n // before: Identifier ('=' Expression)?\n\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n var identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n var value: Expression | null = null;\n if (tn.skip(Token.EQUALS)) {\n value = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!value) return null;\n }\n return Node.createEnumValueDeclaration(\n identifier,\n value,\n parentFlags,\n Range.join(identifier.range, tn.range())\n );\n }\n\n parseReturn(\n tn: Tokenizer\n ): ReturnStatement | null {\n\n // at 'return': Expression | (';' | '}' | ...'\\n')\n\n var expr: Expression | null = null;\n if (\n tn.peek(true) != Token.SEMICOLON &&\n tn.nextToken != Token.CLOSEBRACE &&\n !tn.nextTokenOnNewLine\n ) {\n if (!(expr = this.parseExpression(tn))) return null;\n }\n\n var ret = Node.createReturnStatement(expr, tn.range());\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseTypeParameters(\n tn: Tokenizer\n ): TypeParameterNode[] | null {\n\n // at '<': TypeParameter (',' TypeParameter)* '>'\n\n var typeParameters: TypeParameterNode[] | null = null;\n var seenOptional = false;\n while (!tn.skip(Token.GREATERTHAN)) {\n let typeParameter = this.parseTypeParameter(tn);\n if (!typeParameter) return null;\n if (typeParameter.defaultType !== null) {\n seenOptional = true;\n } else if (seenOptional) {\n this.error(\n DiagnosticCode.Required_type_parameters_may_not_follow_optional_type_parameters,\n typeParameter.range\n );\n typeParameter.defaultType = null;\n }\n if (!typeParameters) typeParameters = [ typeParameter ];\n else typeParameters.push(typeParameter);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.GREATERTHAN)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \">\"\n );\n return null;\n }\n }\n }\n if (!(typeParameters && typeParameters.length)) {\n this.error(\n DiagnosticCode.Type_parameter_list_cannot_be_empty,\n tn.range()\n ); // recoverable\n }\n return typeParameters;\n }\n\n parseTypeParameter(\n tn: Tokenizer\n ): TypeParameterNode | null {\n\n // before: Identifier ('extends' Type)? ('=' Type)?\n\n if (tn.next() == Token.IDENTIFIER) {\n let identifier = Node.createIdentifierExpression(\n tn.readIdentifier(),\n tn.range()\n );\n let extendsType: NamedTypeNode | null = null;\n if (tn.skip(Token.EXTENDS)) {\n let t = this.parseType(tn);\n if (!t) return null;\n if (t.kind != NodeKind.NAMEDTYPE) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n t.range\n );\n return null;\n }\n extendsType = t;\n }\n let defaultType: NamedTypeNode | null = null;\n if (tn.skip(Token.EQUALS)) {\n let t = this.parseType(tn);\n if (!t) return null;\n if (t.kind != NodeKind.NAMEDTYPE) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n t.range\n );\n return null;\n }\n defaultType = t;\n }\n return Node.createTypeParameter(\n identifier,\n extendsType,\n defaultType,\n Range.join(identifier.range, tn.range())\n );\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n private parseParametersThis: NamedTypeNode | null = null;\n\n parseParameters(\n tn: Tokenizer,\n isConstructor: bool = false\n ): ParameterNode[] | null {\n\n // at '(': (Parameter (',' Parameter)*)? ')'\n\n var parameters = new Array();\n var seenRest: ParameterNode | null = null;\n var seenOptional = false;\n var reportedRest = false;\n var thisType: TypeNode | null = null;\n\n // check if there is a leading `this` parameter\n this.parseParametersThis = null;\n if (tn.skip(Token.THIS)) {\n if (tn.skip(Token.COLON)) {\n thisType = this.parseType(tn); // reports\n if (!thisType) return null;\n if (thisType.kind == NodeKind.NAMEDTYPE) {\n this.parseParametersThis = thisType;\n } else {\n this.error(\n DiagnosticCode.Operation_not_supported,\n thisType.range\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n return null;\n }\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEPAREN)) {\n return parameters;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n }\n }\n\n while (!tn.skip(Token.CLOSEPAREN)) {\n let param = this.parseParameter(tn, isConstructor); // reports\n if (!param) return null;\n if (seenRest && !reportedRest) {\n this.error(\n DiagnosticCode.A_rest_parameter_must_be_last_in_a_parameter_list,\n seenRest.name.range\n );\n reportedRest = true;\n }\n switch (param.parameterKind) {\n default: {\n if (seenOptional) {\n this.error(\n DiagnosticCode.A_required_parameter_cannot_follow_an_optional_parameter,\n param.name.range\n );\n }\n break;\n }\n case ParameterKind.OPTIONAL: {\n seenOptional = true;\n break;\n }\n case ParameterKind.REST: {\n seenRest = param;\n break;\n }\n }\n parameters.push(param);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEPAREN)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n }\n }\n return parameters;\n }\n\n parseParameter(\n tn: Tokenizer,\n isConstructor: bool = false\n ): ParameterNode | null {\n\n // before: ('public' | 'private' | 'protected' | '...')? Identifier '?'? (':' Type)? ('=' Expression)?\n\n var isRest = false;\n var isOptional = false;\n var startRange: Range | null = null;\n var accessFlags: CommonFlags = CommonFlags.NONE;\n if (isConstructor) {\n if (tn.skip(Token.PUBLIC)) {\n startRange = tn.range();\n accessFlags |= CommonFlags.PUBLIC;\n } else if (tn.skip(Token.PROTECTED)) {\n startRange = tn.range();\n accessFlags |= CommonFlags.PROTECTED;\n } else if (tn.skip(Token.PRIVATE)) {\n startRange = tn.range();\n accessFlags |= CommonFlags.PRIVATE;\n }\n if (tn.peek() == Token.READONLY) {\n let state = tn.mark();\n tn.next();\n if (tn.peek() != Token.COLON) { // modifier\n tn.discard(state);\n if (!startRange) startRange = tn.range();\n accessFlags |= CommonFlags.READONLY;\n } else { // identifier\n tn.reset(state);\n }\n }\n }\n if (tn.skip(Token.DOT_DOT_DOT)) {\n if (accessFlags) {\n this.error(\n DiagnosticCode.A_parameter_property_cannot_be_declared_using_a_rest_parameter,\n tn.range()\n );\n } else {\n startRange = tn.range();\n }\n isRest = true;\n }\n if (tn.skipIdentifier()) {\n if (!isRest) startRange = tn.range();\n let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n let type: TypeNode | null = null;\n if (isOptional = tn.skip(Token.QUESTION)) {\n if (isRest) {\n this.error(\n DiagnosticCode.A_rest_parameter_cannot_be_optional,\n identifier.range\n );\n }\n }\n if (tn.skip(Token.COLON)) {\n type = this.parseType(tn);\n if (!type) return null;\n } else {\n type = Node.createOmittedType(tn.range(tn.pos));\n }\n let initializer: Expression | null = null;\n if (tn.skip(Token.EQUALS)) {\n if (isRest) {\n this.error(\n DiagnosticCode.A_rest_parameter_cannot_have_an_initializer,\n identifier.range\n );\n }\n if (isOptional) {\n this.error(\n DiagnosticCode.Parameter_cannot_have_question_mark_and_initializer,\n identifier.range\n );\n } else {\n isOptional = true;\n }\n initializer = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!initializer) return null;\n }\n let param = Node.createParameter(\n identifier,\n type,\n initializer,\n isRest\n ? ParameterKind.REST\n : isOptional\n ? ParameterKind.OPTIONAL\n : ParameterKind.DEFAULT,\n Range.join(startRange, tn.range())\n );\n param.flags |= accessFlags;\n return param;\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseFunction(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): FunctionDeclaration | null {\n\n // at 'function':\n // Identifier\n // ('<' TypeParameters)?\n // '(' Parameters (':' Type)?\n // '{' Statement* '}'\n // ';'?\n\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range(tn.pos)\n );\n return null;\n }\n\n var name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n var signatureStart: i32 = -1;\n\n var typeParameters: TypeParameterNode[] | null = null;\n if (tn.skip(Token.LESSTHAN)) {\n signatureStart = tn.tokenPos;\n typeParameters = this.parseTypeParameters(tn);\n if (!typeParameters) return null;\n flags |= CommonFlags.GENERIC;\n }\n\n if (!tn.skip(Token.OPENPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"(\"\n );\n return null;\n }\n\n if (signatureStart < 0) {\n signatureStart = tn.tokenPos;\n }\n\n var parameters = this.parseParameters(tn);\n if (!parameters) return null;\n var thisType = this.parseParametersThis;\n\n var isSetter = (flags & CommonFlags.SET) != 0;\n if (isSetter) {\n if (parameters.length != 1) {\n this.error(\n DiagnosticCode.A_set_accessor_must_have_exactly_one_parameter,\n name.range\n ); // recoverable\n }\n if (parameters.length && parameters[0].initializer) {\n this.error(\n DiagnosticCode.A_set_accessor_parameter_cannot_have_an_initializer,\n name.range\n ); // recoverable\n }\n }\n\n if (flags & CommonFlags.GET) {\n if (parameters.length) {\n this.error(\n DiagnosticCode.A_get_accessor_cannot_have_parameters,\n name.range\n ); // recoverable\n }\n }\n\n var returnType: TypeNode | null = null;\n if (tn.skip(Token.COLON)) {\n returnType = this.parseType(tn, true, isSetter);\n if (!returnType) return null;\n }\n\n if (!returnType) {\n returnType = Node.createOmittedType(\n tn.range(tn.pos)\n );\n if (!isSetter) {\n this.error(\n DiagnosticCode.Type_expected,\n returnType.range\n ); // recoverable\n }\n }\n\n var signature = Node.createFunctionType(\n parameters,\n returnType,\n thisType,\n false,\n tn.range(signatureStart, tn.pos)\n );\n\n var body: Statement | null = null;\n if (tn.skip(Token.OPENBRACE)) {\n if (flags & CommonFlags.AMBIENT) {\n this.error(\n DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,\n tn.range()\n ); // recoverable\n }\n\n body = this.parseBlockStatement(tn, false);\n if (!body) return null;\n } else if (!(flags & CommonFlags.AMBIENT)) {\n this.error(\n DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,\n tn.range(tn.pos)\n );\n }\n\n var ret = Node.createFunctionDeclaration(\n name,\n typeParameters,\n signature,\n body,\n decorators,\n flags,\n ArrowKind.NONE,\n tn.range(startPos, tn.pos)\n );\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseFunctionExpression(tn: Tokenizer): FunctionExpression | null {\n var startPos = tn.tokenPos;\n var name: IdentifierExpression;\n var arrowKind = ArrowKind.NONE;\n\n // either at 'function':\n // Identifier?\n // '(' Parameters (':' Type)?\n // Statement\n\n if (tn.token == Token.FUNCTION) {\n if (tn.skipIdentifier()) {\n name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else { // empty name\n name = Node.createEmptyIdentifierExpression(tn.range(tn.pos));\n }\n if (!tn.skip(Token.OPENPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"(\"\n );\n return null;\n }\n\n // or at '(' of arrow function:\n // Parameters (':' Type)?\n // Statement\n\n } else {\n arrowKind = ArrowKind.ARROW_PARENTHESIZED;\n assert(tn.token == Token.OPENPAREN);\n name = Node.createEmptyIdentifierExpression(tn.range(tn.tokenPos));\n }\n\n // TODO: type parameters? doesn't seem worth it.\n\n var signatureStart = tn.pos;\n var parameters = this.parseParameters(tn);\n if (!parameters) return null;\n\n return this.parseFunctionExpressionCommon(tn, name, parameters, arrowKind, startPos, signatureStart);\n }\n\n private parseFunctionExpressionCommon(\n tn: Tokenizer,\n name: IdentifierExpression,\n parameters: ParameterNode[],\n arrowKind: ArrowKind,\n startPos: i32 = -1,\n signatureStart: i32 = -1\n ): FunctionExpression | null {\n if (startPos < 0) startPos = name.range.start;\n if (signatureStart < 0) signatureStart = startPos;\n\n var returnType: TypeNode | null = null;\n if (arrowKind != ArrowKind.ARROW_SINGLE && tn.skip(Token.COLON)) {\n returnType = this.parseType(tn);\n if (!returnType) return null;\n } else {\n returnType = Node.createOmittedType(tn.range(tn.pos));\n }\n\n if (arrowKind) {\n if (!tn.skip(Token.EQUALS_GREATERTHAN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"=>\"\n );\n return null;\n }\n }\n\n var signature = Node.createFunctionType(\n parameters,\n returnType,\n null, // TODO?\n false,\n tn.range(signatureStart, tn.pos)\n );\n\n var body: Statement | null = null;\n if (arrowKind) {\n if (tn.skip(Token.OPENBRACE)) {\n body = this.parseBlockStatement(tn, false);\n } else {\n let bodyExpression = this.parseExpression(tn, Precedence.COMMA + 1);\n if (bodyExpression) body = Node.createExpressionStatement(bodyExpression);\n }\n } else {\n if (!tn.skip(Token.OPENBRACE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"{\"\n );\n return null;\n }\n body = this.parseBlockStatement(tn, false);\n }\n if (!body) return null;\n\n var declaration = Node.createFunctionDeclaration(\n name,\n null,\n signature,\n body,\n null,\n CommonFlags.NONE,\n arrowKind,\n tn.range(startPos, tn.pos)\n );\n return Node.createFunctionExpression(declaration);\n }\n\n parseClassOrInterface(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): ClassDeclaration | null {\n\n // at ('class' | 'interface'):\n // Identifier\n // ('<' TypeParameters)?\n // ('extends' Type)?\n // ('implements' Type (',' Type)*)?\n // '{' ClassMember* '}'\n\n var isInterface = tn.token == Token.INTERFACE;\n\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n\n var identifier = Node.createIdentifierExpression(\n tn.readIdentifier(),\n tn.range()\n );\n\n var typeParameters: TypeParameterNode[] | null = null;\n if (tn.skip(Token.LESSTHAN)) {\n typeParameters = this.parseTypeParameters(tn);\n if (!typeParameters) return null;\n flags |= CommonFlags.GENERIC;\n }\n\n var extendsType: NamedTypeNode | null = null;\n if (tn.skip(Token.EXTENDS)) {\n let t = this.parseType(tn);\n if (!t) return null;\n if (t.kind != NodeKind.NAMEDTYPE) {\n this.error(\n DiagnosticCode.Operation_not_supported,\n t.range\n );\n return null;\n }\n extendsType = t;\n }\n\n var implementsTypes: NamedTypeNode[] | null = null;\n if (tn.skip(Token.IMPLEMENTS)) {\n if (isInterface) {\n this.error(\n DiagnosticCode.Interface_declaration_cannot_have_implements_clause,\n tn.range()\n ); // recoverable\n }\n do {\n let type = this.parseType(tn);\n if (!type) return null;\n if (!isInterface) {\n if (!implementsTypes) implementsTypes = [type];\n else implementsTypes.push(type);\n }\n } while (tn.skip(Token.COMMA));\n }\n\n if (!tn.skip(Token.OPENBRACE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n return null;\n }\n\n var members = new Array();\n var declaration: ClassDeclaration;\n if (isInterface) {\n assert(!implementsTypes);\n declaration = Node.createInterfaceDeclaration(\n identifier,\n typeParameters,\n extendsType,\n members,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n } else {\n declaration = Node.createClassDeclaration(\n identifier,\n typeParameters,\n extendsType,\n implementsTypes,\n members,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n }\n if (!tn.skip(Token.CLOSEBRACE)) {\n do {\n let member = this.parseClassMember(tn, declaration);\n if (member) members.push(member);\n else {\n this.skipStatement(tn);\n if (tn.skip(Token.ENDOFFILE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n } while (!tn.skip(Token.CLOSEBRACE));\n }\n declaration.range.end = tn.pos;\n return declaration;\n }\n\n parseClassExpression(tn: Tokenizer): ClassExpression | null {\n\n // at 'class': Identifier? '{' ... '}'\n\n var startPos = tn.tokenPos;\n var name: IdentifierExpression;\n\n if (tn.skipIdentifier()) {\n name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else {\n name = Node.createEmptyIdentifierExpression(tn.range(tn.pos));\n }\n\n if (!tn.skip(Token.OPENBRACE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(tn.pos), \"{\"\n );\n return null;\n }\n\n var members = new Array();\n var declaration = Node.createClassDeclaration(\n name,\n [],\n null,\n null,\n members,\n null,\n CommonFlags.NONE,\n tn.range(startPos, tn.pos)\n );\n if (!tn.skip(Token.CLOSEBRACE)) {\n do {\n let member = this.parseClassMember(tn, declaration);\n if (member) members.push(member);\n else {\n this.skipStatement(tn);\n if (tn.skip(Token.ENDOFFILE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n } while (!tn.skip(Token.CLOSEBRACE));\n }\n declaration.range.end = tn.pos;\n return Node.createClassExpression(declaration);\n }\n\n parseClassMember(\n tn: Tokenizer,\n parent: ClassDeclaration\n ): DeclarationStatement | null {\n\n // before:\n // ('public' | 'private' | 'protected')?\n // ('static' | 'abstract')?\n // 'readonly'?\n // ('get' | 'set')?\n // Identifier ...\n\n var startPos = tn.pos;\n var isInterface = parent.kind == NodeKind.INTERFACEDECLARATION;\n\n var decorators: DecoratorNode[] | null = null;\n if (tn.skip(Token.AT)) {\n do {\n let decorator = this.parseDecorator(tn);\n if (!decorator) break;\n if (!decorators) decorators = [decorator];\n else decorators.push(decorator);\n } while (tn.skip(Token.AT));\n if (decorators && isInterface) {\n this.error(\n DiagnosticCode.Decorators_are_not_valid_here,\n Range.join(decorators[0].range, decorators[decorators.length - 1].range)\n );\n }\n }\n\n // inherit ambient status\n var flags = parent.flags & CommonFlags.AMBIENT;\n\n // implemented methods are virtual\n if (isInterface) flags |= CommonFlags.VIRTUAL;\n\n var accessStart = 0;\n var accessEnd = 0;\n if (tn.skip(Token.PUBLIC)) {\n if (isInterface) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(), \"public\"\n );\n }\n flags |= CommonFlags.PUBLIC;\n accessStart = tn.tokenPos;\n accessEnd = tn.pos;\n } else if (tn.skip(Token.PRIVATE)) {\n if (isInterface) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(), \"private\"\n );\n }\n flags |= CommonFlags.PRIVATE;\n accessStart = tn.tokenPos;\n accessEnd = tn.pos;\n } else if (tn.skip(Token.PROTECTED)) {\n if (isInterface) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(), \"protected\"\n );\n }\n flags |= CommonFlags.PROTECTED;\n accessStart = tn.tokenPos;\n accessEnd = tn.pos;\n }\n\n var staticStart = 0;\n var staticEnd = 0;\n var abstractStart = 0;\n var abstractEnd = 0;\n if (tn.skip(Token.STATIC)) {\n if (isInterface) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(), \"static\"\n );\n }\n flags |= CommonFlags.STATIC;\n staticStart = tn.tokenPos;\n staticEnd = tn.pos;\n } else {\n flags |= CommonFlags.INSTANCE;\n if (tn.skip(Token.ABSTRACT)) {\n if (isInterface) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(), \"abstract\"\n );\n }\n flags |= CommonFlags.ABSTRACT;\n abstractStart = tn.tokenPos;\n abstractEnd = tn.pos;\n }\n if (parent.flags & CommonFlags.GENERIC) flags |= CommonFlags.GENERIC_CONTEXT;\n }\n\n var readonlyStart: i32 = 0;\n var readonlyEnd: i32 = 0;\n if (tn.peek() == Token.READONLY) {\n let state = tn.mark();\n tn.next();\n if (tn.peek() != Token.COLON) { // modifier\n tn.discard(state);\n flags |= CommonFlags.READONLY;\n readonlyStart = tn.tokenPos;\n readonlyEnd = tn.pos;\n } else { // identifier\n tn.reset(state);\n }\n }\n\n // check if accessor: ('get' | 'set') ^\\n Identifier\n var state = tn.mark();\n var isConstructor = false;\n var isGetter = false;\n var getStart: i32 = 0;\n var getEnd: i32 = 0;\n var isSetter = false;\n var setStart: i32 = 0;\n var setEnd: i32 = 0;\n if (!isInterface) {\n if (tn.skip(Token.GET)) {\n if (tn.peek(true, IdentifierHandling.PREFER) == Token.IDENTIFIER && !tn.nextTokenOnNewLine) {\n flags |= CommonFlags.GET;\n isGetter = true;\n setStart = tn.tokenPos;\n setEnd = tn.pos;\n if (flags & CommonFlags.READONLY) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(readonlyStart, readonlyEnd), \"readonly\"\n ); // recoverable\n }\n } else {\n tn.reset(state);\n }\n } else if (tn.skip(Token.SET)) {\n if (tn.peek(true, IdentifierHandling.PREFER) == Token.IDENTIFIER && !tn.nextTokenOnNewLine) {\n flags |= CommonFlags.SET;\n isSetter = true;\n setStart = tn.tokenPos;\n setEnd = tn.pos;\n if (flags & CommonFlags.READONLY) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(readonlyStart, readonlyEnd), \"readonly\"\n ); // recoverable\n }\n } else {\n tn.reset(state);\n }\n } else if (tn.skip(Token.CONSTRUCTOR)) {\n flags |= CommonFlags.CONSTRUCTOR;\n isConstructor = true;\n if (flags & CommonFlags.STATIC) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(staticStart, staticEnd), \"static\"\n ); // recoverable\n }\n if (flags & CommonFlags.ABSTRACT) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(abstractStart, abstractEnd), \"abstract\"\n ); // recoverable\n }\n if (flags & CommonFlags.READONLY) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(readonlyStart, readonlyEnd), \"readonly\"\n ); // recoverable\n }\n }\n }\n\n var name: IdentifierExpression;\n if (isConstructor) {\n name = Node.createConstructorExpression(tn.range());\n } else {\n if (!(isGetter || isSetter) && tn.skip(Token.OPENBRACKET)) {\n // TODO: also handle symbols, which might have some of these modifiers\n if (flags & CommonFlags.PUBLIC) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(accessStart, accessEnd), \"public\"\n ); // recoverable\n } else if (flags & CommonFlags.PROTECTED) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(accessStart, accessEnd), \"protected\"\n ); // recoverable\n } else if (flags & CommonFlags.PRIVATE) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(accessStart, accessEnd), \"protected\"\n ); // recoverable\n }\n if (flags & CommonFlags.STATIC) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(staticStart, staticEnd), \"static\"\n ); // recoverable\n }\n if (flags & CommonFlags.ABSTRACT) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(abstractStart, abstractEnd), \"abstract\"\n ); // recoverable\n }\n if (flags & CommonFlags.READONLY) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(readonlyStart, readonlyEnd), \"readonly\"\n ); // recoverable\n }\n let retIndex = this.parseIndexSignatureDeclaration(tn, decorators);\n if (!retIndex) return null;\n tn.skip(Token.SEMICOLON);\n return retIndex;\n }\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n }\n var typeParameters: TypeParameterNode[] | null = null;\n if (tn.skip(Token.LESSTHAN)) {\n let typeParametersStart = tn.tokenPos;\n typeParameters = this.parseTypeParameters(tn);\n if (!typeParameters) return null;\n if (isConstructor) {\n this.error(\n DiagnosticCode.Type_parameters_cannot_appear_on_a_constructor_declaration,\n tn.range(typeParametersStart, tn.pos)\n ); // recoverable\n } else if (isGetter || isSetter) {\n this.error(\n DiagnosticCode.An_accessor_cannot_have_type_parameters,\n tn.range(typeParametersStart, tn.pos)\n ); // recoverable\n } else {\n flags |= CommonFlags.GENERIC;\n }\n }\n\n // method: '(' Parameters (':' Type)? '{' Statement* '}' ';'?\n if (tn.skip(Token.OPENPAREN)) {\n let signatureStart = tn.tokenPos;\n let parameters = this.parseParameters(tn, isConstructor);\n if (!parameters) return null;\n let thisType = this.parseParametersThis;\n if (isConstructor) {\n for (let i = 0, k = parameters.length; i < k; ++i) {\n let parameter = parameters[i];\n if (parameter.isAny(\n CommonFlags.PUBLIC |\n CommonFlags.PROTECTED |\n CommonFlags.PRIVATE |\n CommonFlags.READONLY\n )) {\n let implicitFieldDeclaration = Node.createFieldDeclaration(\n parameter.name,\n parameter.type,\n null, // initialized via parameter\n null,\n parameter.flags | CommonFlags.INSTANCE,\n parameter.range\n );\n implicitFieldDeclaration.parameterIndex = i;\n parameter.implicitFieldDeclaration = implicitFieldDeclaration;\n parent.members.push(implicitFieldDeclaration);\n }\n }\n } else if (isGetter) {\n if (parameters.length) {\n this.error(\n DiagnosticCode.A_get_accessor_cannot_have_parameters,\n name.range\n );\n }\n } else if (isSetter) {\n if (parameters.length != 1) {\n this.error(\n DiagnosticCode.A_set_accessor_must_have_exactly_one_parameter,\n name.range\n );\n }\n if (parameters.length && parameters[0].initializer) {\n this.error(\n DiagnosticCode.A_set_accessor_parameter_cannot_have_an_initializer,\n name.range\n );\n }\n }\n\n let returnType: TypeNode | null = null;\n if (tn.skip(Token.COLON)) {\n if (name.kind == NodeKind.CONSTRUCTOR) {\n this.error(\n DiagnosticCode.Type_annotation_cannot_appear_on_a_constructor_declaration,\n tn.range()\n );\n } else if (isSetter) {\n this.error(\n DiagnosticCode.A_set_accessor_cannot_have_a_return_type_annotation,\n tn.range()\n );\n }\n returnType = this.parseType(tn, name.kind == NodeKind.CONSTRUCTOR || isSetter);\n if (!returnType) return null;\n } else {\n returnType = Node.createOmittedType(tn.range(tn.pos));\n if (!isSetter && name.kind != NodeKind.CONSTRUCTOR) {\n this.error(\n DiagnosticCode.Type_expected,\n returnType.range\n ); // recoverable\n }\n }\n\n let signature = Node.createFunctionType(\n parameters,\n returnType,\n thisType,\n false,\n tn.range(signatureStart, tn.pos)\n );\n\n let body: Statement | null = null;\n if (tn.skip(Token.OPENBRACE)) {\n if (flags & CommonFlags.AMBIENT) {\n this.error(\n DiagnosticCode.An_implementation_cannot_be_declared_in_ambient_contexts,\n tn.range()\n ); // recoverable\n } else if (flags & CommonFlags.ABSTRACT) {\n this.error(\n DiagnosticCode.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract,\n tn.range(), name.text\n ); // recoverable\n }\n body = this.parseBlockStatement(tn, false);\n if (!body) return null;\n } else if (!(flags & CommonFlags.AMBIENT) && !isInterface) {\n this.error(\n DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,\n tn.range()\n ); // recoverable\n }\n\n let retMethod = Node.createMethodDeclaration(\n name,\n typeParameters,\n signature,\n body,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n tn.skip(Token.SEMICOLON);\n return retMethod;\n\n } else if (isConstructor) {\n this.error(\n DiagnosticCode.Constructor_implementation_is_missing,\n name.range\n );\n\n } else if (isGetter || isSetter) {\n this.error(\n DiagnosticCode.Function_implementation_is_missing_or_not_immediately_following_the_declaration,\n name.range\n );\n\n // field: (':' Type)? ('=' Expression)? ';'?\n } else {\n if (flags & CommonFlags.ABSTRACT) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(abstractStart, abstractEnd), \"abstract\"\n ); // recoverable\n }\n\n if (flags & CommonFlags.GET) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(getStart, getEnd), \"get\"\n ); // recoverable\n }\n\n if (flags & CommonFlags.SET) {\n this.error(\n DiagnosticCode._0_modifier_cannot_be_used_here,\n tn.range(setStart, setEnd), \"set\"\n ); // recoverable\n }\n\n let type: TypeNode | null = null;\n if (tn.skip(Token.QUESTION)) {\n this.error(\n DiagnosticCode.Optional_properties_are_not_supported,\n tn.range(startPos, tn.pos)\n );\n }\n if (tn.skip(Token.EXCLAMATION)) {\n flags |= CommonFlags.DEFINITE_ASSIGNMENT;\n }\n if (tn.skip(Token.COLON)) {\n type = this.parseType(tn);\n if (!type) return null;\n } else {\n this.error(\n DiagnosticCode.Type_expected,\n tn.range()\n ); // recoverable\n }\n let initializer: Expression | null = null;\n if (tn.skip(Token.EQUALS)) {\n initializer = this.parseExpression(tn);\n if (!initializer) return null;\n }\n let range = tn.range(startPos, tn.pos);\n if ((flags & CommonFlags.DEFINITE_ASSIGNMENT) && ((flags & CommonFlags.STATIC) || isInterface || initializer)) {\n this.error(\n DiagnosticCode.A_definite_assignment_assertion_is_not_permitted_in_this_context,\n range\n );\n }\n let retField = Node.createFieldDeclaration(\n name,\n type,\n initializer,\n decorators,\n flags,\n range\n );\n tn.skip(Token.SEMICOLON);\n return retField;\n }\n return null;\n }\n\n parseIndexSignatureDeclaration(tn: Tokenizer, decorators: DecoratorNode[] | null): IndexSignatureDeclaration | null {\n\n // at: '[': 'key' ':' Type ']' ':' Type\n\n if (decorators && decorators.length) {\n this.error(\n DiagnosticCode.Decorators_are_not_valid_here,\n Range.join(decorators[0].range, decorators[decorators.length - 1].range)\n ); // recoverable\n }\n\n var start = tn.tokenPos;\n if (tn.skipIdentifier()) {\n let id = tn.readIdentifier();\n if (id == \"key\") {\n if (tn.skip(Token.COLON)) {\n let keyType = this.parseType(tn);\n if (!keyType) return null;\n if (keyType.kind != NodeKind.NAMEDTYPE) {\n this.error(\n DiagnosticCode.Type_expected,\n tn.range()\n );\n return null;\n }\n if (tn.skip(Token.CLOSEBRACKET)) {\n if (tn.skip(Token.COLON)) {\n let valueType = this.parseType(tn);\n if (!valueType) return null;\n return Node.createIndexSignatureDeclaration(keyType, valueType, tn.range(start, tn.pos));\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"]\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"key\"\n );\n }\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseNamespace(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): NamespaceDeclaration | null {\n\n // at 'namespace': Identifier '{' (Variable | Function)* '}'\n\n if (tn.skipIdentifier()) {\n let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n if (tn.skip(Token.OPENBRACE)) {\n let members = new Array();\n let declaration = Node.createNamespaceDeclaration(\n identifier,\n members,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n while (!tn.skip(Token.CLOSEBRACE)) {\n let member = this.parseTopLevelStatement(tn, declaration);\n if (member) members.push(member);\n else {\n this.skipStatement(tn);\n if (tn.skip(Token.ENDOFFILE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n }\n declaration.range.end = tn.pos;\n tn.skip(Token.SEMICOLON);\n return declaration;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n }\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseExport(\n tn: Tokenizer,\n startPos: i32,\n isDeclare: bool\n ): ExportStatement | null {\n\n // at 'export': '{' ExportMember (',' ExportMember)* }' ('from' StringLiteral)? ';'?\n\n var path: StringLiteralExpression | null = null;\n if (tn.skip(Token.OPENBRACE)) {\n let members = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n let member = this.parseExportMember(tn);\n if (!member) return null;\n members.push(member);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEBRACE)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n }\n if (tn.skip(Token.FROM)) {\n if (tn.skip(Token.STRINGLITERAL)) {\n path = Node.createStringLiteralExpression(tn.readString(), tn.range());\n } else {\n this.error(\n DiagnosticCode.String_literal_expected,\n tn.range()\n );\n return null;\n }\n }\n let ret = Node.createExportStatement(members, path, isDeclare, tn.range(startPos, tn.pos));\n let internalPath = ret.internalPath;\n if (internalPath !== null && !this.seenlog.has(internalPath)) {\n this.dependees.set(internalPath, this.currentSource);\n this.backlog.push(internalPath);\n this.seenlog.add(internalPath);\n }\n tn.skip(Token.SEMICOLON);\n return ret;\n } else if (tn.skip(Token.ASTERISK)) {\n if (tn.skip(Token.FROM)) {\n if (tn.skip(Token.STRINGLITERAL)) {\n path = Node.createStringLiteralExpression(tn.readString(), tn.range());\n let ret = Node.createExportStatement(null, path, isDeclare, tn.range(startPos, tn.pos));\n let internalPath = assert(ret.internalPath);\n let source = tn.source;\n if (!source.exportPaths) source.exportPaths = new Set();\n source.exportPaths.add(internalPath);\n if (!this.seenlog.has(internalPath)) {\n this.dependees.set(internalPath, this.currentSource);\n this.backlog.push(internalPath);\n }\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode.String_literal_expected,\n tn.range()\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"from\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n }\n return null;\n }\n\n parseExportMember(\n tn: Tokenizer\n ): ExportMember | null {\n\n // before: Identifier ('as' Identifier)?\n\n if (tn.skipIdentifier()) {\n let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n let asIdentifier: IdentifierExpression | null = null;\n if (tn.skip(Token.AS)) {\n if (tn.skipIdentifier(IdentifierHandling.ALWAYS)) {\n asIdentifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n }\n return Node.createExportMember(\n identifier,\n asIdentifier,\n asIdentifier\n ? Range.join(identifier.range, asIdentifier.range)\n : identifier.range\n );\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseExportDefaultAlias(\n tn: Tokenizer,\n startPos: i32,\n defaultStart: i32,\n defaultEnd: i32\n ): ExportStatement {\n\n // at 'export' 'default': [Known-To-Be-]Identifier\n\n var name = tn.readIdentifier();\n var range = tn.range();\n var ret = Node.createExportStatement([\n Node.createExportMember(\n Node.createIdentifierExpression(name, range),\n Node.createIdentifierExpression(\"default\", tn.range(defaultStart, defaultEnd)),\n range\n )\n ], null, false, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseImport(\n tn: Tokenizer\n ): ImportStatement | null {\n\n // at 'import':\n // ('{' (ImportMember (',' ImportMember)* '}') | ('*' 'as' Identifier)?\n // 'from' StringLiteral ';'?\n\n var startPos = tn.tokenPos;\n var members: ImportDeclaration[] | null = null;\n var namespaceName: IdentifierExpression | null = null;\n var skipFrom = false;\n if (tn.skip(Token.OPENBRACE)) { // import { ... } from \"file\"\n members = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n let member = this.parseImportDeclaration(tn);\n if (!member) return null;\n members.push(member);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEBRACE)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n }\n } else if (tn.skip(Token.ASTERISK)) { // import * from \"file\"\n if (tn.skip(Token.AS)) {\n if (tn.skipIdentifier()) {\n namespaceName = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"as\"\n );\n return null;\n }\n } else if (tn.skip(Token.IDENTIFIER, IdentifierHandling.PREFER)) { // import Name from \"file\"\n let name = tn.readIdentifier();\n let range = tn.range();\n members = [\n Node.createImportDeclaration(\n Node.createIdentifierExpression(\"default\", range),\n Node.createIdentifierExpression(name, range),\n range\n )\n ];\n if (tn.skip(Token.COMMA)) {\n // TODO: default + star, default + members\n this.error(\n DiagnosticCode.Operation_not_supported,\n tn.range()\n );\n return null;\n }\n } else { // import \"file\"\n skipFrom = true;\n }\n\n if (skipFrom || tn.skip(Token.FROM)) {\n if (tn.skip(Token.STRINGLITERAL)) {\n let path = Node.createStringLiteralExpression(tn.readString(), tn.range());\n let ret: ImportStatement;\n if (namespaceName) {\n assert(!members);\n ret = Node.createImportStatementWithWildcard(namespaceName, path, tn.range(startPos, tn.pos));\n } else {\n ret = Node.createImportStatement(members, path, tn.range(startPos, tn.pos));\n }\n let internalPath = ret.internalPath;\n if (!this.seenlog.has(internalPath)) {\n this.dependees.set(internalPath, this.currentSource);\n this.backlog.push(internalPath);\n }\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode.String_literal_expected,\n tn.range()\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"from\"\n );\n }\n return null;\n }\n\n parseImportDeclaration(\n tn: Tokenizer\n ): ImportDeclaration | null {\n\n // before: Identifier ('as' Identifier)?\n\n if (tn.skipIdentifier(IdentifierHandling.ALWAYS)) {\n let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n let asIdentifier: IdentifierExpression | null = null;\n if (tn.skip(Token.AS)) {\n if (tn.skipIdentifier()) {\n asIdentifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n }\n return Node.createImportDeclaration(\n identifier,\n asIdentifier,\n asIdentifier\n ? Range.join(identifier.range, asIdentifier.range)\n : identifier.range\n );\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseExportImport(\n tn: Tokenizer,\n startPos: i32\n ): ExportImportStatement | null {\n\n // at 'export' 'import': Identifier ('=' Identifier)? ';'?\n\n if (tn.skipIdentifier()) {\n let asIdentifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n if (tn.skip(Token.EQUALS)) {\n if (tn.skipIdentifier()) {\n let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n let ret = Node.createExportImportStatement(identifier, asIdentifier, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"=\"\n );\n }\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseStatement(\n tn: Tokenizer,\n topLevel: bool = false\n ): Statement | null {\n\n // at previous token\n\n var state = tn.mark();\n var token = tn.next();\n var statement: Statement | null = null;\n switch (token) {\n case Token.BREAK: {\n statement = this.parseBreak(tn);\n break;\n }\n case Token.CONST: {\n statement = this.parseVariable(tn, CommonFlags.CONST, null, tn.tokenPos);\n break;\n }\n case Token.CONTINUE: {\n statement = this.parseContinue(tn);\n break;\n }\n case Token.DO: {\n statement = this.parseDoStatement(tn);\n break;\n }\n case Token.FOR: {\n statement = this.parseForStatement(tn);\n break;\n }\n case Token.IF: {\n statement = this.parseIfStatement(tn);\n break;\n }\n case Token.LET: {\n statement = this.parseVariable(tn, CommonFlags.LET, null, tn.tokenPos);\n break;\n }\n case Token.VAR: {\n statement = this.parseVariable(tn, CommonFlags.NONE, null, tn.tokenPos);\n break;\n }\n case Token.OPENBRACE: {\n statement = this.parseBlockStatement(tn, topLevel);\n break;\n }\n case Token.RETURN: {\n if (topLevel) {\n this.error(\n DiagnosticCode.A_return_statement_can_only_be_used_within_a_function_body,\n tn.range()\n ); // recoverable\n }\n statement = this.parseReturn(tn);\n break;\n }\n case Token.SEMICOLON: {\n return Node.createEmptyStatement(tn.range(tn.tokenPos));\n }\n case Token.SWITCH: {\n statement = this.parseSwitchStatement(tn);\n break;\n }\n case Token.THROW: {\n statement = this.parseThrowStatement(tn);\n break;\n }\n case Token.TRY: {\n statement = this.parseTryStatement(tn);\n break;\n }\n case Token.VOID: {\n statement = this.parseVoidStatement(tn);\n break;\n }\n case Token.WHILE: {\n statement = this.parseWhileStatement(tn);\n break;\n }\n case Token.TYPE: { // also identifier\n if (tn.peek(false, IdentifierHandling.PREFER) == Token.IDENTIFIER) {\n statement = this.parseTypeDeclaration(tn, CommonFlags.NONE, null, tn.tokenPos);\n break;\n }\n // fall-through\n }\n default: {\n tn.reset(state);\n statement = this.parseExpressionStatement(tn);\n break;\n }\n }\n if (!statement) { // has been reported\n tn.reset(state);\n this.skipStatement(tn);\n } else {\n tn.discard(state);\n }\n return statement;\n }\n\n parseBlockStatement(\n tn: Tokenizer,\n topLevel: bool\n ): BlockStatement | null {\n\n // at '{': Statement* '}' ';'?\n\n var startPos = tn.tokenPos;\n var statements = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n let state = tn.mark();\n let statement = this.parseStatement(tn, topLevel);\n if (!statement) {\n if (tn.token == Token.ENDOFFILE) return null;\n tn.reset(state);\n this.skipStatement(tn);\n } else {\n tn.discard(state);\n statements.push(statement);\n }\n }\n var ret = Node.createBlockStatement(statements, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseBreak(\n tn: Tokenizer\n ): BreakStatement | null {\n\n // at 'break': Identifier? ';'?\n\n var identifier: IdentifierExpression | null = null;\n if (tn.peek(true) == Token.IDENTIFIER && !tn.nextTokenOnNewLine) {\n tn.next(IdentifierHandling.PREFER);\n identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n }\n var ret = Node.createBreakStatement(identifier, tn.range());\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseContinue(\n tn: Tokenizer\n ): ContinueStatement | null {\n\n // at 'continue': Identifier? ';'?\n\n var identifier: IdentifierExpression | null = null;\n if (tn.peek(true) == Token.IDENTIFIER && !tn.nextTokenOnNewLine) {\n tn.next(IdentifierHandling.PREFER);\n identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n }\n var ret = Node.createContinueStatement(identifier, tn.range());\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseDoStatement(\n tn: Tokenizer\n ): DoStatement | null {\n\n // at 'do': Statement 'while' '(' Expression ')' ';'?\n\n var startPos = tn.tokenPos;\n var statement = this.parseStatement(tn);\n if (!statement) return null;\n\n if (tn.skip(Token.WHILE)) {\n\n if (tn.skip(Token.OPENPAREN)) {\n let condition = this.parseExpression(tn);\n if (!condition) return null;\n\n if (tn.skip(Token.CLOSEPAREN)) {\n let ret = Node.createDoStatement(statement, condition, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"while\"\n );\n }\n return null;\n }\n\n parseExpressionStatement(\n tn: Tokenizer\n ): ExpressionStatement | null {\n\n // at previous token\n\n var expr = this.parseExpression(tn);\n if (!expr) return null;\n\n var ret = Node.createExpressionStatement(expr);\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseForStatement(\n tn: Tokenizer\n ): ForStatement | null {\n\n // at 'for': '(' Statement? Expression? ';' Expression? ')' Statement\n\n var startPos = tn.tokenPos;\n\n if (tn.skip(Token.OPENPAREN)) {\n let initializer: Statement | null = null;\n\n if (tn.skip(Token.CONST)) {\n initializer = this.parseVariable(tn, CommonFlags.CONST, null, tn.tokenPos);\n } else if (tn.skip(Token.LET)) {\n initializer = this.parseVariable(tn, CommonFlags.LET, null, tn.tokenPos);\n } else if (tn.skip(Token.VAR)) {\n initializer = this.parseVariable(tn, CommonFlags.NONE, null, tn.tokenPos);\n\n } else if (!tn.skip(Token.SEMICOLON)) {\n initializer = this.parseExpressionStatement(tn);\n if (!initializer) return null;\n }\n\n if (tn.token == Token.SEMICOLON) {\n let condition: ExpressionStatement | null = null;\n if (!tn.skip(Token.SEMICOLON)) {\n condition = this.parseExpressionStatement(tn);\n if (!condition) return null;\n }\n\n if (tn.token == Token.SEMICOLON) {\n let incrementor: Expression | null = null;\n if (!tn.skip(Token.CLOSEPAREN)) {\n incrementor = this.parseExpression(tn);\n if (!incrementor) return null;\n\n if (!tn.skip(Token.CLOSEPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n }\n\n let statement = this.parseStatement(tn);\n if (!statement) return null;\n\n return Node.createForStatement(\n initializer,\n condition\n ? condition.expression\n : null,\n incrementor,\n statement,\n tn.range(startPos, tn.pos)\n );\n\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \";\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \";\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n }\n return null;\n }\n\n parseIfStatement(\n tn: Tokenizer\n ): IfStatement | null {\n\n // at 'if': '(' Expression ')' Statement ('else' Statement)?\n\n var startPos = tn.tokenPos;\n if (tn.skip(Token.OPENPAREN)) {\n let condition = this.parseExpression(tn);\n if (!condition) return null;\n if (tn.skip(Token.CLOSEPAREN)) {\n let statement = this.parseStatement(tn);\n if (!statement) return null;\n let elseStatement: Statement | null = null;\n if (tn.skip(Token.ELSE)) {\n elseStatement = this.parseStatement(tn);\n if (!elseStatement) return null;\n }\n return Node.createIfStatement(\n condition,\n statement,\n elseStatement,\n tn.range(startPos, tn.pos)\n );\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n }\n return null;\n }\n\n parseSwitchStatement(\n tn: Tokenizer\n ): SwitchStatement | null {\n\n // at 'switch': '(' Expression ')' '{' SwitchCase* '}' ';'?\n\n var startPos = tn.tokenPos;\n if (tn.skip(Token.OPENPAREN)) {\n let condition = this.parseExpression(tn);\n if (!condition) return null;\n if (tn.skip(Token.CLOSEPAREN)) {\n if (tn.skip(Token.OPENBRACE)) {\n let cases = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n let case_ = this.parseSwitchCase(tn);\n if (!case_) return null;\n cases.push(case_);\n }\n let ret = Node.createSwitchStatement(condition, cases, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n }\n return null;\n }\n\n parseSwitchCase(\n tn: Tokenizer\n ): SwitchCase | null {\n\n var startPos = tn.tokenPos;\n var statements: Statement[],\n statement: Statement | null;\n\n // 'case' Expression ':' Statement*\n\n if (tn.skip(Token.CASE)) {\n let label = this.parseExpression(tn);\n if (!label) return null;\n if (tn.skip(Token.COLON)) {\n statements = new Array();\n while (tn.peek() != Token.CASE && tn.nextToken != Token.DEFAULT && tn.nextToken != Token.CLOSEBRACE) {\n statement = this.parseStatement(tn);\n if (!statement) return null;\n statements.push(statement);\n }\n return Node.createSwitchCase(label, statements, tn.range(startPos, tn.pos));\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n }\n\n // 'default' ':' Statement*\n\n } else if (tn.skip(Token.DEFAULT)) {\n if (tn.skip(Token.COLON)) {\n statements = new Array();\n while (tn.peek() != Token.CASE && tn.nextToken != Token.DEFAULT && tn.nextToken != Token.CLOSEBRACE) {\n statement = this.parseStatement(tn);\n if (!statement) return null;\n statements.push(statement);\n }\n return Node.createSwitchCase(null, statements, tn.range(startPos, tn.pos));\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._case_or_default_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseThrowStatement(\n tn: Tokenizer\n ): ThrowStatement | null {\n\n // at 'throw': Expression ';'?\n\n var startPos = tn.tokenPos;\n var expression = this.parseExpression(tn);\n if (!expression) return null;\n var ret = Node.createThrowStatement(expression, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseTryStatement(\n tn: Tokenizer\n ): TryStatement | null {\n\n // at 'try':\n // '{' Statement* '}'\n // ('catch' '(' VariableMember ')' '{' Statement* '}')?\n // ('finally' '{' Statement* '}'? ';'?\n\n var startPos = tn.tokenPos;\n var stmt: Statement | null;\n if (tn.skip(Token.OPENBRACE)) {\n let statements = new Array();\n while (!tn.skip(Token.CLOSEBRACE)) {\n stmt = this.parseStatement(tn);\n if (!stmt) return null;\n statements.push(stmt);\n }\n let catchVariable: IdentifierExpression | null = null;\n let catchStatements: Statement[] | null = null;\n let finallyStatements: Statement[] | null = null;\n if (tn.skip(Token.CATCH)) {\n if (!tn.skip(Token.OPENPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n return null;\n }\n if (!tn.skipIdentifier()) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n return null;\n }\n catchVariable = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n if (!tn.skip(Token.CLOSEPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n if (!tn.skip(Token.OPENBRACE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n return null;\n }\n catchStatements = [];\n while (!tn.skip(Token.CLOSEBRACE)) {\n stmt = this.parseStatement(tn);\n if (!stmt) return null;\n catchStatements.push(stmt);\n }\n }\n if (tn.skip(Token.FINALLY)) {\n if (!tn.skip(Token.OPENBRACE)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n return null;\n }\n finallyStatements = [];\n while (!tn.skip(Token.CLOSEBRACE)) {\n stmt = this.parseStatement(tn);\n if (!stmt) return null;\n finallyStatements.push(stmt);\n }\n }\n if (!(catchStatements || finallyStatements)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"catch\"\n );\n return null;\n }\n let ret = Node.createTryStatement(\n statements,\n catchVariable,\n catchStatements,\n finallyStatements,\n tn.range(startPos, tn.pos)\n );\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"{\"\n );\n }\n return null;\n }\n\n parseTypeDeclaration(\n tn: Tokenizer,\n flags: CommonFlags,\n decorators: DecoratorNode[] | null,\n startPos: i32\n ): TypeDeclaration | null {\n\n // at 'type': Identifier ('<' TypeParameters '>')? '=' Type ';'?\n\n if (tn.skipIdentifier()) {\n let name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n let typeParameters: TypeParameterNode[] | null = null;\n if (tn.skip(Token.LESSTHAN)) {\n typeParameters = this.parseTypeParameters(tn);\n if (!typeParameters) return null;\n flags |= CommonFlags.GENERIC;\n }\n if (tn.skip(Token.EQUALS)) {\n let type = this.parseType(tn);\n if (!type) return null;\n let ret = Node.createTypeDeclaration(\n name,\n typeParameters,\n type,\n decorators,\n flags,\n tn.range(startPos, tn.pos)\n );\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"=\"\n );\n }\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range()\n );\n }\n return null;\n }\n\n parseVoidStatement(\n tn: Tokenizer\n ): VoidStatement | null {\n\n // at 'void': Expression ';'?\n\n var startPos = tn.tokenPos;\n var expression = this.parseExpression(tn, Precedence.GROUPING);\n if (!expression) return null;\n var ret = Node.createVoidStatement(expression, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n }\n\n parseWhileStatement(\n tn: Tokenizer\n ): WhileStatement | null {\n\n // at 'while': '(' Expression ')' Statement ';'?\n\n var startPos = tn.tokenPos;\n if (tn.skip(Token.OPENPAREN)) {\n let expression = this.parseExpression(tn);\n if (!expression) return null;\n if (tn.skip(Token.CLOSEPAREN)) {\n let statement = this.parseStatement(tn);\n if (!statement) return null;\n let ret = Node.createWhileStatement(expression, statement, tn.range(startPos, tn.pos));\n tn.skip(Token.SEMICOLON);\n return ret;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n }\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"(\"\n );\n }\n return null;\n }\n\n // expressions\n // see: http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm#climbing\n\n parseExpressionStart(\n tn: Tokenizer\n ): Expression | null {\n\n var token = tn.next(IdentifierHandling.PREFER);\n var startPos = tn.tokenPos;\n var precedence = determinePrecedenceStart(token);\n if (precedence != Precedence.NONE) {\n let operand: Expression | null;\n\n // TODO: SpreadExpression, YieldExpression (currently become unsupported UnaryPrefixExpressions)\n\n // NewExpression\n if (token == Token.NEW) {\n operand = this.parseExpression(tn, Precedence.CALL);\n if (!operand) return null;\n if (operand.kind == NodeKind.CALL) {\n return Node.createNewExpression(\n (operand).expression,\n (operand).typeArguments,\n (operand).arguments,\n tn.range(startPos, tn.pos)\n );\n } else {\n this.error(\n DiagnosticCode.Operation_not_supported,\n tn.range()\n );\n }\n return null;\n } else {\n operand = this.parseExpression(tn, precedence);\n if (!operand) return null;\n }\n\n // UnaryPrefixExpression\n if (token == Token.PLUS_PLUS || token == Token.MINUS_MINUS) {\n if (\n operand.kind != NodeKind.IDENTIFIER &&\n operand.kind != NodeKind.ELEMENTACCESS &&\n operand.kind != NodeKind.PROPERTYACCESS\n ) {\n this.error(\n DiagnosticCode.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,\n operand.range\n );\n }\n }\n return Node.createUnaryPrefixExpression(token, operand, tn.range(startPos, tn.pos));\n }\n\n var expr: Expression | null = null;\n switch (token) {\n\n case Token.NULL: return Node.createNullExpression(tn.range());\n case Token.TRUE: return Node.createTrueExpression(tn.range());\n case Token.FALSE: return Node.createFalseExpression(tn.range());\n\n // ParenthesizedExpression\n // FunctionExpression\n case Token.OPENPAREN: {\n\n // determine whether this is a function expression\n if (tn.skip(Token.CLOSEPAREN)) { // must be a function expression (fast route)\n return this.parseFunctionExpressionCommon(\n tn,\n Node.createEmptyIdentifierExpression(tn.range(startPos)),\n [],\n ArrowKind.ARROW_PARENTHESIZED\n );\n }\n let state = tn.mark();\n let again = true;\n do {\n switch (tn.next(IdentifierHandling.PREFER)) {\n\n // function expression\n case Token.DOT_DOT_DOT: {\n tn.reset(state);\n return this.parseFunctionExpression(tn);\n }\n // can be both\n case Token.IDENTIFIER: {\n tn.readIdentifier();\n switch (tn.next()) {\n\n // if we got here, check for arrow\n case Token.CLOSEPAREN: {\n if (\n !tn.skip(Token.COLON) &&\n !tn.skip(Token.EQUALS_GREATERTHAN)\n ) {\n again = false;\n break;\n }\n // fall-through\n }\n // function expression\n case Token.COLON: { // type annotation\n tn.reset(state);\n return this.parseFunctionExpression(tn);\n }\n // optional parameter or parenthesized\n case Token.QUESTION: {\n if (\n tn.skip(Token.COLON) || // optional parameter with type\n tn.skip(Token.COMMA) || // optional parameter without type\n tn.skip(Token.CLOSEPAREN) // last optional parameter without type\n ) {\n tn.reset(state);\n return this.parseFunctionExpression(tn);\n }\n again = false; // parenthesized\n break;\n }\n case Token.COMMA: {\n break; // continue\n }\n // parenthesized expression\n // case Token.EQUALS: // missing type annotation for simplicity\n default: {\n again = false;\n break;\n }\n }\n break;\n }\n // parenthesized expression\n default: {\n again = false;\n break;\n }\n }\n } while (again);\n tn.reset(state);\n\n // parse parenthesized\n expr = this.parseExpression(tn);\n if (!expr) return null;\n if (!tn.skip(Token.CLOSEPAREN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n return Node.createParenthesizedExpression(expr, tn.range(startPos, tn.pos));\n }\n // ArrayLiteralExpression\n case Token.OPENBRACKET: {\n let elementExpressions = new Array();\n while (!tn.skip(Token.CLOSEBRACKET)) {\n if (tn.peek() == Token.COMMA) {\n expr = null; // omitted\n } else {\n expr = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!expr) return null;\n }\n elementExpressions.push(expr);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEBRACKET)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"]\"\n );\n return null;\n }\n }\n }\n return Node.createArrayLiteralExpression(elementExpressions, tn.range(startPos, tn.pos));\n }\n // ObjectLiteralExpression\n case Token.OPENBRACE: {\n let startPos = tn.tokenPos;\n let names = new Array();\n let values = new Array();\n let name: IdentifierExpression;\n while (!tn.skip(Token.CLOSEBRACE)) {\n if (!tn.skipIdentifier()) {\n if (!tn.skip(Token.STRINGLITERAL)) {\n this.error(\n DiagnosticCode.Identifier_expected,\n tn.range(),\n );\n return null;\n }\n name = Node.createIdentifierExpression(tn.readString(), tn.range());\n name.isQuoted = true;\n } else {\n name = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n }\n names.push(name);\n if (tn.skip(Token.COLON)) {\n let value = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!value) return null;\n values.push(value);\n } else if (!name.isQuoted) {\n values.push(name);\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n return null;\n }\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEBRACE)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n return null;\n }\n }\n }\n return Node.createObjectLiteralExpression(names, values, tn.range(startPos, tn.pos));\n }\n // AssertionExpression (unary prefix)\n case Token.LESSTHAN: {\n let toType = this.parseType(tn);\n if (!toType) return null;\n if (!tn.skip(Token.GREATERTHAN)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \">\"\n );\n return null;\n }\n expr = this.parseExpression(tn, Precedence.CALL);\n if (!expr) return null;\n return Node.createAssertionExpression(\n AssertionKind.PREFIX,\n expr,\n toType,\n tn.range(startPos, tn.pos)\n );\n }\n case Token.IDENTIFIER: {\n let identifierText = tn.readIdentifier();\n if (identifierText == \"null\") return Node.createNullExpression(tn.range()); // special\n let identifier = Node.createIdentifierExpression(identifierText, tn.range(startPos, tn.pos));\n if (tn.peek(true) == Token.EQUALS_GREATERTHAN && !tn.nextTokenOnNewLine) {\n return this.parseFunctionExpressionCommon(\n tn,\n Node.createEmptyIdentifierExpression(tn.range(startPos)),\n [\n Node.createParameter(\n identifier,\n Node.createOmittedType(identifier.range.atEnd),\n null,\n ParameterKind.DEFAULT,\n identifier.range\n )\n ],\n ArrowKind.ARROW_SINGLE,\n startPos\n );\n }\n return identifier;\n }\n case Token.THIS: {\n return Node.createThisExpression(tn.range(startPos, tn.pos));\n }\n case Token.CONSTRUCTOR: {\n return Node.createConstructorExpression(tn.range(startPos, tn.pos));\n }\n case Token.SUPER: {\n if (tn.peek() != Token.DOT && tn.nextToken != Token.OPENPAREN) {\n this.error(\n DiagnosticCode._super_must_be_followed_by_an_argument_list_or_member_access,\n tn.range()\n );\n }\n return Node.createSuperExpression(tn.range(startPos, tn.pos));\n }\n case Token.STRINGLITERAL: {\n return Node.createStringLiteralExpression(tn.readString(), tn.range(startPos, tn.pos));\n }\n case Token.INTEGERLITERAL: {\n return Node.createIntegerLiteralExpression(tn.readInteger(), tn.range(startPos, tn.pos));\n }\n case Token.FLOATLITERAL: {\n return Node.createFloatLiteralExpression(tn.readFloat(), tn.range(startPos, tn.pos));\n }\n // RegexpLiteralExpression\n // note that this also continues on invalid ones so the surrounding AST remains intact\n case Token.SLASH: {\n let regexpPattern = tn.readRegexpPattern(); // also reports\n if (!tn.skip(Token.SLASH)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"/\"\n );\n return null;\n }\n return Node.createRegexpLiteralExpression(\n regexpPattern,\n tn.readRegexpFlags(), // also reports\n tn.range(startPos, tn.pos)\n );\n }\n case Token.FUNCTION: {\n return this.parseFunctionExpression(tn);\n }\n case Token.CLASS: {\n return this.parseClassExpression(tn);\n }\n default: {\n if (token == Token.ENDOFFILE) {\n this.error(\n DiagnosticCode.Unexpected_end_of_text,\n tn.range(startPos)\n );\n } else {\n this.error(\n DiagnosticCode.Expression_expected,\n tn.range()\n );\n }\n return null;\n }\n }\n }\n\n tryParseTypeArgumentsBeforeArguments(\n tn: Tokenizer\n ): TypeNode[] | null {\n\n // at '<': Type (',' Type)* '>' '('\n\n var state = tn.mark();\n if (!tn.skip(Token.LESSTHAN)) return null;\n var typeArguments: TypeNode[] | null = null;\n do {\n if (tn.peek() === Token.GREATERTHAN) {\n break;\n }\n let type = this.parseType(tn, true, true);\n if (!type) {\n tn.reset(state);\n return null;\n }\n if (!typeArguments) typeArguments = [ type ];\n else typeArguments.push(type);\n } while (tn.skip(Token.COMMA));\n if (tn.skip(Token.GREATERTHAN) && tn.skip(Token.OPENPAREN)) {\n return typeArguments;\n }\n tn.reset(state);\n return null;\n }\n\n parseArguments(\n tn: Tokenizer\n ): Expression[] | null {\n\n // at '(': (Expression (',' Expression)*)? ')'\n\n var args = new Array();\n while (!tn.skip(Token.CLOSEPAREN)) {\n let expr = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!expr) return null;\n args.push(expr);\n if (!tn.skip(Token.COMMA)) {\n if (tn.skip(Token.CLOSEPAREN)) {\n break;\n } else {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \")\"\n );\n return null;\n }\n }\n }\n return args;\n }\n\n parseExpression(\n tn: Tokenizer,\n precedence: Precedence = Precedence.COMMA\n ): Expression | null {\n assert(precedence != Precedence.NONE);\n\n var expr = this.parseExpressionStart(tn);\n if (!expr) return null;\n expr = this.maybeParseCallExpression(tn, expr); // simple call like on an Identifier\n\n var startPos = expr.range.start;\n var token: Token;\n var next: Expression | null = null;\n var nextPrecedence: Precedence;\n while (\n (nextPrecedence = determinePrecedence(token = tn.peek())) >= precedence\n ) { // precedence climbing\n tn.next();\n switch (token) {\n // AssertionExpression\n case Token.AS: {\n let toType = this.parseType(tn); // reports\n if (!toType) return null;\n expr = Node.createAssertionExpression(\n AssertionKind.AS,\n expr,\n toType,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n case Token.EXCLAMATION: {\n expr = Node.createAssertionExpression(\n AssertionKind.NONNULL,\n expr,\n null,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n // InstanceOfExpression\n case Token.INSTANCEOF: {\n let isType = this.parseType(tn); // reports\n if (!isType) return null;\n expr = Node.createInstanceOfExpression(\n expr,\n isType,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n // ElementAccessExpression\n case Token.OPENBRACKET: {\n next = this.parseExpression(tn); // reports\n if (!next) return null;\n if (!tn.skip(Token.CLOSEBRACKET)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"]\"\n );\n return null;\n }\n expr = Node.createElementAccessExpression(\n expr,\n next,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n // UnaryPostfixExpression\n case Token.PLUS_PLUS:\n case Token.MINUS_MINUS: {\n if (\n expr.kind != NodeKind.IDENTIFIER &&\n expr.kind != NodeKind.ELEMENTACCESS &&\n expr.kind != NodeKind.PROPERTYACCESS\n ) {\n this.error(\n DiagnosticCode.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,\n expr.range\n );\n }\n expr = Node.createUnaryPostfixExpression(\n token,\n expr,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n // TernaryExpression\n case Token.QUESTION: {\n let ifThen = this.parseExpression(tn);\n if (!ifThen) return null;\n if (!tn.skip(Token.COLON)) {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \":\"\n );\n return null;\n }\n let ifElse = this.parseExpression(tn, precedence > Precedence.COMMA\n ? Precedence.COMMA + 1\n : Precedence.COMMA\n );\n if (!ifElse) return null;\n expr = Node.createTernaryExpression(\n expr,\n ifThen,\n ifElse,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n // CommaExpression\n case Token.COMMA: {\n let commaExprs: Expression[] = [ expr ];\n do {\n expr = this.parseExpression(tn, Precedence.COMMA + 1);\n if (!expr) return null;\n commaExprs.push(expr);\n } while (tn.skip(Token.COMMA));\n expr = Node.createCommaExpression(commaExprs, tn.range(startPos, tn.pos));\n break;\n }\n default: {\n\n // PropertyAccessExpression\n if (token == Token.DOT) {\n if (tn.skipIdentifier()) {\n next = Node.createIdentifierExpression(tn.readIdentifier(), tn.range());\n } else {\n next = this.parseExpression(tn,\n isRightAssociative(token)\n ? nextPrecedence\n : nextPrecedence + 1\n );\n if (!next) return null;\n }\n if (next.kind == NodeKind.IDENTIFIER) { // expr '.' Identifier\n expr = Node.createPropertyAccessExpression(\n expr,\n next,\n tn.range(startPos, tn.pos)\n );\n } else if (next.kind == NodeKind.CALL) { // expr '.' CallExpression\n expr = this.joinPropertyCall(tn, startPos, expr, next);\n if (!expr) return null;\n } else {\n this.error(\n DiagnosticCode.Identifier_expected,\n next.range\n );\n return null;\n }\n\n // BinaryExpression\n } else {\n next = this.parseExpression(tn,\n isRightAssociative(token)\n ? nextPrecedence\n : nextPrecedence + 1\n );\n if (!next) return null;\n expr = Node.createBinaryExpression(token, expr, next, tn.range(startPos, tn.pos));\n }\n break;\n }\n }\n expr = this.maybeParseCallExpression(tn, expr); // compound call like on an ElementAccess\n }\n return expr;\n }\n\n private joinPropertyCall(\n tn: Tokenizer,\n startPos: i32,\n expr: Expression,\n call: CallExpression\n ): Expression | null {\n var callee = call.expression;\n switch (callee.kind) {\n case NodeKind.IDENTIFIER: { // join property access and use as call target\n call.expression = Node.createPropertyAccessExpression(\n expr,\n callee,\n tn.range(startPos, tn.pos)\n );\n break;\n }\n case NodeKind.CALL: { // join call target und wrap the original call around it\n let inner = this.joinPropertyCall(tn, startPos, expr, callee);\n if (!inner) return null;\n call.expression = inner;\n call.range = tn.range(startPos, tn.pos);\n break;\n }\n default: {\n this.error(\n DiagnosticCode.Identifier_expected,\n call.range\n );\n return null;\n }\n }\n return call;\n }\n\n private maybeParseCallExpression(\n tn: Tokenizer,\n expr: Expression\n ): Expression {\n if (nodeIsCallable(expr.kind)) {\n let typeArguments: TypeNode[] | null = null;\n while (\n tn.skip(Token.OPENPAREN)\n ||\n nodeIsGenericCallable(expr.kind) && (typeArguments = this.tryParseTypeArgumentsBeforeArguments(tn)) !== null\n ) {\n let args = this.parseArguments(tn);\n if (!args) break;\n expr = Node.createCallExpression( // is again callable\n expr,\n typeArguments,\n args,\n tn.range(expr.range.start, tn.pos)\n );\n }\n }\n return expr;\n }\n\n /** Skips over a statement on errors in an attempt to reduce unnecessary diagnostic noise. */\n skipStatement(tn: Tokenizer): void {\n tn.peek(true);\n if (tn.nextTokenOnNewLine) tn.next(); // if reset() to the previous line\n do {\n let nextToken = tn.peek(true);\n if (\n nextToken == Token.ENDOFFILE || // next step should handle this\n nextToken == Token.SEMICOLON // end of the statement for sure\n ) {\n tn.next();\n break;\n }\n if (tn.nextTokenOnNewLine) break; // end of the statement maybe\n switch (tn.next()) {\n case Token.IDENTIFIER: {\n tn.readIdentifier();\n break;\n }\n case Token.STRINGLITERAL: {\n tn.readString();\n break;\n }\n case Token.INTEGERLITERAL: {\n tn.readInteger();\n break;\n }\n case Token.FLOATLITERAL: {\n tn.readFloat();\n break;\n }\n case Token.OPENBRACE: {\n this.skipBlock(tn);\n break;\n }\n }\n } while (true);\n }\n\n /** Skips over a block on errors in an attempt to reduce unnecessary diagnostic noise. */\n skipBlock(tn: Tokenizer): void {\n // at '{': ... '}'\n var depth = 1;\n var again = true;\n do {\n switch (tn.next()) {\n case Token.ENDOFFILE: {\n this.error(\n DiagnosticCode._0_expected,\n tn.range(), \"}\"\n );\n again = false;\n break;\n }\n case Token.OPENBRACE: {\n ++depth;\n break;\n }\n case Token.CLOSEBRACE: {\n --depth;\n if (!depth) again = false;\n break;\n }\n case Token.IDENTIFIER: {\n tn.readIdentifier();\n break;\n }\n case Token.STRINGLITERAL: {\n tn.readString();\n break;\n }\n case Token.INTEGERLITERAL: {\n tn.readInteger();\n break;\n }\n case Token.FLOATLITERAL: {\n tn.readFloat();\n break;\n }\n }\n } while (again);\n }\n}\n\n/** Operator precedence from least to largest. */\nexport const enum Precedence {\n NONE,\n COMMA,\n SPREAD,\n YIELD,\n ASSIGNMENT,\n CONDITIONAL,\n LOGICAL_OR,\n LOGICAL_AND,\n BITWISE_OR,\n BITWISE_XOR,\n BITWISE_AND,\n EQUALITY,\n RELATIONAL,\n SHIFT,\n ADDITIVE,\n MULTIPLICATIVE,\n EXPONENTIATED,\n UNARY_PREFIX,\n UNARY_POSTFIX,\n CALL,\n MEMBERACCESS,\n GROUPING\n}\n\n/** Determines the precedence of a starting token. */\nfunction determinePrecedenceStart(kind: Token): Precedence {\n switch (kind) {\n case Token.DOT_DOT_DOT: return Precedence.SPREAD;\n case Token.YIELD: return Precedence.YIELD;\n case Token.EXCLAMATION:\n case Token.TILDE:\n case Token.PLUS:\n case Token.MINUS:\n case Token.PLUS_PLUS:\n case Token.MINUS_MINUS:\n case Token.TYPEOF:\n case Token.VOID:\n case Token.DELETE: return Precedence.UNARY_PREFIX;\n case Token.NEW: return Precedence.MEMBERACCESS;\n }\n return Precedence.NONE;\n}\n\n/** Determines the precende of a non-starting token. */\nfunction determinePrecedence(kind: Token): Precedence {\n switch (kind) {\n case Token.COMMA: return Precedence.COMMA;\n case Token.EQUALS:\n case Token.PLUS_EQUALS:\n case Token.MINUS_EQUALS:\n case Token.ASTERISK_ASTERISK_EQUALS:\n case Token.ASTERISK_EQUALS:\n case Token.SLASH_EQUALS:\n case Token.PERCENT_EQUALS:\n case Token.LESSTHAN_LESSTHAN_EQUALS:\n case Token.GREATERTHAN_GREATERTHAN_EQUALS:\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:\n case Token.AMPERSAND_EQUALS:\n case Token.CARET_EQUALS:\n case Token.BAR_EQUALS: return Precedence.ASSIGNMENT;\n case Token.QUESTION: return Precedence.CONDITIONAL;\n case Token.BAR_BAR: return Precedence.LOGICAL_OR;\n case Token.AMPERSAND_AMPERSAND: return Precedence.LOGICAL_AND;\n case Token.BAR: return Precedence.BITWISE_OR;\n case Token.CARET: return Precedence.BITWISE_XOR;\n case Token.AMPERSAND: return Precedence.BITWISE_AND;\n case Token.EQUALS_EQUALS:\n case Token.EXCLAMATION_EQUALS:\n case Token.EQUALS_EQUALS_EQUALS:\n case Token.EXCLAMATION_EQUALS_EQUALS: return Precedence.EQUALITY;\n case Token.AS:\n case Token.IN:\n case Token.INSTANCEOF:\n case Token.LESSTHAN:\n case Token.GREATERTHAN:\n case Token.LESSTHAN_EQUALS:\n case Token.GREATERTHAN_EQUALS: return Precedence.RELATIONAL;\n case Token.LESSTHAN_LESSTHAN:\n case Token.GREATERTHAN_GREATERTHAN:\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: return Precedence.SHIFT;\n case Token.PLUS:\n case Token.MINUS: return Precedence.ADDITIVE;\n case Token.ASTERISK:\n case Token.SLASH:\n case Token.PERCENT: return Precedence.MULTIPLICATIVE;\n case Token.ASTERISK_ASTERISK: return Precedence.EXPONENTIATED;\n case Token.PLUS_PLUS:\n case Token.MINUS_MINUS: return Precedence.UNARY_POSTFIX;\n case Token.DOT:\n case Token.NEW:\n case Token.OPENBRACKET:\n case Token.EXCLAMATION: return Precedence.MEMBERACCESS;\n }\n return Precedence.NONE;\n}\n\n/** Determines whether a non-starting token is right associative. */\nfunction isRightAssociative(kind: Token): bool {\n switch (kind) {\n case Token.EQUALS:\n case Token.PLUS_EQUALS:\n case Token.MINUS_EQUALS:\n case Token.ASTERISK_ASTERISK_EQUALS:\n case Token.ASTERISK_EQUALS:\n case Token.SLASH_EQUALS:\n case Token.PERCENT_EQUALS:\n case Token.LESSTHAN_LESSTHAN_EQUALS:\n case Token.GREATERTHAN_GREATERTHAN_EQUALS:\n case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:\n case Token.AMPERSAND_EQUALS:\n case Token.CARET_EQUALS:\n case Token.BAR_EQUALS:\n case Token.QUESTION:\n case Token.ASTERISK_ASTERISK: return true;\n default: return false;\n }\n}\n","/**\n * JavaScript glue code.\n * @module glue/js\n * @preferred\n *//***/\n\n/// \n\nimport \"./binaryen\"; // must be first so portable can pick up the memory implementation\nimport \"../../../std/portable/index\";\nimport \"./float\";\nimport \"./i64\";\n\nimport { Module } from \"../../module\";\n\nModule.prototype.toText = function(this: Module) {\n // NOTE: Conversion to StackIR can yield conversion artifacts like sequences\n // of unreachable statements not actually emitted by the compiler. Optimizing\n // StackIR removes these again, but may also suppress useless code emitted by\n // the compiler that's then no longer visible in tests. Both not ideal.\n return binaryen.wrapModule(this.ref).emitStackIR(/* optimize-stack-ir */ true);\n};\n\nModule.prototype.toAsmjs = function(this: Module) {\n return binaryen.wrapModule(this.ref).emitAsmjs();\n};\n","// Copy Binaryen exports to global scope\n\nconst binaryen = global.Binaryen || require(\"binaryen\");\nglobal.binaryen = binaryen;\n\nfor (var key in binaryen) {\n if (key.startsWith(\"_Binaryen\") || key.startsWith(\"_Relooper\")) global[key] = binaryen[key];\n}\n\n// Utilize Binaryen's heap\n\nglobal.__memory_allocate = binaryen._malloc;\nglobal.__memory_free = binaryen._free;\nglobal.__memory_copy = binaryen._memmove;\nglobal.__store = function(ptr, val) { binaryen.HEAPU8[ptr] = val; };\nglobal.__load = function(ptr) { return binaryen.HEAPU8[ptr]; };\n","module.exports = __WEBPACK_EXTERNAL_MODULE__20__;","/** @module std/portable *//***/\n\nvar globalScope = typeof window !== \"undefined\" && window || typeof global !== \"undefined\" && global || self;\n\nglobalScope.ASC_TARGET = 2; // Target.JS\nglobalScope.ASC_NO_ASSERT = false;\nglobalScope.ASC_MEMORY_BASE = 0;\nglobalScope.ASC_OPTIMIZE_LEVEL = 3;\nglobalScope.ASC_SHRINK_LEVEL = 0;\nglobalScope.ASC_FEATURE_MUTABLE_GLOBAL = false;\nglobalScope.ASC_FEATURE_SIGN_EXTENSION = false;\nglobalScope.ASC_FEATURE_BULK_MEMORY = false;\nglobalScope.ASC_FEATURE_SIMD = false;\nglobalScope.ASC_FEATURE_THREADS = false;\n\nvar F64 = new Float64Array(1);\nvar U64 = new Uint32Array(F64.buffer);\n\nObject.defineProperties(\n globalScope[\"i8\"] = function i8(value) { return value << 24 >> 24; }\n, {\n \"MIN_VALUE\": { value: -128, writable: false },\n \"MAX_VALUE\": { value: 127, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"i16\"] = function i16(value) { return value << 16 >> 16; }\n, {\n \"MIN_VALUE\": { value: -32768, writable: false },\n \"MAX_VALUE\": { value: 32767, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"i32\"] = globalScope[\"isize\"] = function i32(value) { return value | 0; }\n, {\n \"MIN_VALUE\": { value: -2147483648, writable: false },\n \"MAX_VALUE\": { value: 2147483647, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"u8\"] = function u8(value) { return value & 0xff; }\n, {\n \"MIN_VALUE\": { value: 0, writable: false },\n \"MAX_VALUE\": { value: 255, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"u16\"] = function u16(value) { return value & 0xffff; }\n, {\n \"MIN_VALUE\": { value: 0, writable: false },\n \"MAX_VALUE\": { value: 65535, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"u32\"] = globalScope[\"usize\"] = function u32(value) { return value >>> 0; }\n, {\n \"MIN_VALUE\": { value: 0, writable: false },\n \"MAX_VALUE\": { value: 4294967295, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"bool\"] = function bool(value) { return !!value; }\n, {\n \"MIN_VALUE\": { value: false, writable: false },\n \"MAX_VALUE\": { value: true, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"f32\"] = function f32(value) { return Math.fround(value); }\n, {\n \"EPSILON\": { value: Math.fround(1.1920929e-07), writable: false },\n \"MIN_VALUE\": { value: Math.fround(1.4012985e-45), writable: false },\n \"MAX_VALUE\": { value: Math.fround(3.4028235e+38), writable: false },\n \"MIN_NORMAL_VALUE\": { value: Math.fround(1.17549435e-38), writable: false },\n \"MIN_SAFE_INTEGER\": { value: -16777215, writable: false },\n \"MAX_SAFE_INTEGER\": { value: 16777215, writable: false }\n});\n\nObject.defineProperties(\n globalScope[\"f64\"] = function f64(value) { return +value; }\n, {\n \"EPSILON\": { value: 2.2204460492503131e-16, writable: false },\n \"MIN_VALUE\": { value: 5e-324, writable: false },\n \"MAX_VALUE\": { value: 1.7976931348623157e+308, writable: false },\n \"MIN_NORMAL_VALUE\": { value: 2.2250738585072014e-308 , writable: false },\n \"MIN_SAFE_INTEGER\": { value: -9007199254740991, writable: false },\n \"MAX_SAFE_INTEGER\": { value: 9007199254740991, writable: false }\n});\n\nglobalScope[\"clz\"] = Math.clz32;\n\nglobalScope[\"ctz\"] = function ctz(value) {\n var c = Math.clz32(value & -value);\n return value ? 31 - c : c;\n};\n\nglobalScope[\"popcnt\"] = function popcnt(value) {\n value -= value >>> 1 & 0x55555555;\n value = (value & 0x33333333) + (value >>> 2 & 0x33333333);\n return (((value + (value >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24;\n};\n\nglobalScope[\"rotl\"] = function rotl(value, shift) {\n shift &= 31;\n return (value << shift) | (value >>> (32 - shift));\n};\n\nglobalScope[\"rotr\"] = function rotr(value, shift) {\n shift &= 31;\n return (value >>> shift) | (value << (32 - shift));\n};\n\nglobalScope[\"abs\"] = Math.abs;\n\nglobalScope[\"max\"] = Math.max;\n\nglobalScope[\"min\"] = Math.min;\n\nglobalScope[\"ceil\"] = Math.ceil;\n\nglobalScope[\"floor\"] = Math.floor;\n\n// Adopt code from https://github.com/rfk/wasm-polyfill\nglobalScope[\"nearest\"] = function nearest(value) {\n if (Math.abs(value - Math.trunc(value)) === 0.5) {\n return 2.0 * Math.round(value * 0.5);\n }\n return Math.round(value);\n};\n\nglobalScope[\"select\"] = function select(ifTrue, ifFalse, condition) {\n return condition ? ifTrue : ifFalse;\n};\n\nglobalScope[\"sqrt\"] = Math.sqrt;\n\nglobalScope[\"trunc\"] = Math.trunc;\n\nglobalScope[\"copysign\"] = function copysign(x, y) {\n return Math.abs(x) * Math.sign(y);\n};\n\nglobalScope[\"bswap\"] = function bswap(value) {\n var a = value >> 8 & 0x00FF00FF;\n var b = (value & 0x00FF00FF) << 8;\n value = a | b;\n a = value >> 16 & 0x0000FFFF;\n b = (value & 0x0000FFFF) << 16;\n return a | b;\n};\n\nglobalScope[\"bswap16\"] = function bswap16(value) {\n return ((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000);\n};\n\nfunction UnreachableError() {\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnreachableError);\n } else {\n this.stack = this.name + \": \" + this.message + \"\\n\" + new Error().stack;\n }\n}\nUnreachableError.prototype = Object.create(Error.prototype);\nUnreachableError.prototype.name = \"UnreachableError\";\nUnreachableError.prototype.message = \"unreachable\";\n\nglobalScope[\"unreachable\"] = function unreachable() {\n throw new UnreachableError();\n};\n\nfunction AssertionError(message) {\n this.message = message || \"assertion failed\";\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, AssertionError);\n } else {\n this.stack = this.name + \": \" + this.message + \"\\n\" + new Error().stack;\n }\n}\nAssertionError.prototype = Object.create(Error.prototype);\nAssertionError.prototype.name = \"AssertionError\";\n\nglobalScope[\"assert\"] = function assert(isTrueish, message) {\n if (isTrueish) return isTrueish;\n throw new AssertionError(message);\n};\n\nglobalScope[\"changetype\"] = function changetype(value) {\n return value;\n};\n\nString[\"fromCharCodes\"] = function fromCharCodes(arr) {\n return String.fromCharCode.apply(String, arr);\n};\n\nString[\"fromCodePoints\"] = function fromCodePoints(arr) {\n return String.fromCodePoint.apply(String, arr);\n};\n\nif (!String.prototype.replaceAll) {\n Object.defineProperty(String.prototype, \"replaceAll\", {\n value: function replaceAll(search, replacment) {\n var res = this.split(search).join(replacment);\n if (!search.length) res = replacment + res + replacment;\n return res;\n }\n });\n}\n\nglobalScope[\"isInteger\"] = Number.isInteger;\n\nglobalScope[\"isFloat\"] = function isFloat(arg) {\n return typeof arg === \"number\";\n};\n\nglobalScope[\"isNullable\"] = function isNullable(arg) {\n return true;\n}\n\nglobalScope[\"isReference\"] = function isReference(arg) {\n return typeof arg === \"object\" || typeof arg === \"string\";\n};\n\nglobalScope[\"isFunction\"] = function isFunction(arg) {\n return typeof arg === \"function\";\n}\n\nglobalScope[\"isString\"] = function isString(arg) {\n return typeof arg === \"string\" || arg instanceof String;\n};\n\nglobalScope[\"isArray\"] = Array.isArray;\nglobalScope[\"isArrayLike\"] = function isArrayLike(expr) {\n return expr\n && typeof expr === 'object'\n && typeof expr.length === 'number'\n && expr.length >= 0\n && Math.trunc(expr.length) === expr.length;\n};\n\nArray.create = function(capacity) {\n var arr = new Array(capacity);\n arr.length = 0;\n return arr;\n};\n\nglobalScope[\"isDefined\"] = function isDefined(expr) {\n return typeof expr !== \"undefined\";\n}\n\nglobalScope[\"isConstant\"] = function isConstant(expr) {\n return false;\n};\n\nglobalScope[\"unchecked\"] = function unchecked(expr) {\n return expr;\n};\n\nglobalScope[\"fmod\"] = function fmod(x, y) {\n return x % y;\n};\n\nglobalScope[\"fmodf\"] = function fmodf(x, y) {\n return Math.fround(x % y);\n};\n\nglobalScope[\"JSMath\"] = Math;\n\ntry {\nObject.defineProperties(globalScope[\"JSMath\"], {\n sincos_sin: { value: 0.0, writable: true },\n sincos_cos: { value: 0.0, writable: true },\n signbit: {\n value: function signbit(x) {\n F64[0] = x; return Boolean((U64[1] >>> 31) & (x == x));\n }\n },\n sincos: {\n value: function sincos(x) {\n this.sincos_sin = Math.sin(x);\n this.sincos_cos = Math.cos(x);\n }\n }\n});\n}catch (e) {}\n\nglobalScope[\"memory\"] = (() => {\n var HEAP = new Uint8Array(0);\n var HEAP_OFFSET = 0;\n return {\n allocate: globalScope[\"__memory_allocate\"] || function allocate(size) {\n if (!(size >>>= 0)) return 0;\n if (HEAP_OFFSET + size > HEAP.length) {\n var oldHeap = HEAP;\n HEAP = new Uint8Array(Math.max(65536, HEAP.length + size, HEAP.length * 2));\n HEAP.set(oldHeap);\n }\n var ptr = HEAP_OFFSET;\n if ((HEAP_OFFSET += size) & 7) HEAP_OFFSET = (HEAP_OFFSET | 7) + 1;\n return ptr;\n },\n fill: globalScope[\"__memory_fill\"] || function fill(dest, value, size) {\n HEAP.fill(value, dest, dest + size);\n },\n free: globalScope[\"__memory_free\"] || function free(ptr) { },\n copy: globalScope[\"__memory_copy\"] || function copy(dest, src, size) {\n HEAP.copyWithin(dest, src, src + size);\n },\n reset: globalScope[\"__memory_reset\"] || function reset() {\n HEAP = new Uint8Array(0);\n HEAP_OFFSET = 0;\n }\n };\n})();\n\nglobalScope[\"store\"] = globalScope[\"__store\"] || function store(ptr, value, offset) {\n HEAP[(ptr | 0) + (offset | 0)] = value;\n};\n\nglobalScope[\"load\"] = globalScope[\"__load\"] || function load(ptr, offset) {\n return HEAP[(ptr | 0) + (offset | 0)];\n};\n\nglobalScope[\"unmanaged\"] = function() {};\n","const F64 = new Float64Array(1);\nconst F32 = new Float32Array(F64.buffer);\nconst I32 = new Int32Array(F64.buffer);\n\nglobal.f32_as_i32 = function(value) {\n F32[0] = value;\n return I32[0];\n};\n\nglobal.i32_as_f32 = function(value) {\n I32[0] = value;\n return F32[0];\n};\n\nglobal.f64_as_i64 = function(value) {\n F64[0] = value;\n return i64_new(I32[0], I32[1]);\n};\n\nglobal.i64_as_f64 = function(value) {\n I32[0] = i64_low(value);\n I32[1] = i64_high(value);\n return F64[0];\n};\n","const Long = global.Long || require(\"long\");\n\nglobal.i64_zero = Long.ZERO;\n\nglobal.i64_one = Long.ONE;\n\nglobal.i64_new = function(lo, hi) {\n return Long.fromBits(lo, hi);\n};\n\nglobal.i64_low = function(value) {\n return value.low;\n};\n\nglobal.i64_high = function(value) {\n return value.high;\n};\n\nglobal.i64_add = function(left, right) {\n return left.add(right);\n};\n\nglobal.i64_sub = function(left, right) {\n return left.sub(right);\n};\n\nglobal.i64_mul = function(left, right) {\n return left.mul(right);\n};\n\nglobal.i64_div = function(left, right) {\n return left.div(right);\n};\n\nglobal.i64_div_u = function(left, right) {\n return left.toUnsigned().div(right.toUnsigned()).toSigned();\n};\n\nglobal.i64_rem = function(left, right) {\n return left.mod(right);\n};\n\nglobal.i64_rem_u = function(left, right) {\n return left.toUnsigned().mod(right.toUnsigned()).toSigned();\n};\n\nglobal.i64_and = function(left, right) {\n return left.and(right);\n};\n\nglobal.i64_or = function(left, right) {\n return left.or(right);\n};\n\nglobal.i64_xor = function(left, right) {\n return left.xor(right);\n};\n\nglobal.i64_shl = function(left, right) {\n return left.shl(right);\n};\n\nglobal.i64_shr = function(left, right) {\n return left.shr(right);\n};\n\nglobal.i64_shr_u = function(left, right) {\n return left.shru(right);\n};\n\nglobal.i64_not = function(value) {\n return value.not();\n};\n\nglobal.i64_eq = function(left, right) {\n return left.eq(right);\n};\n\nglobal.i64_ne = function(left, right) {\n return left.ne(right);\n};\n\nglobal.i64_align = function(value, alignment) {\n assert(alignment && (alignment & (alignment - 1)) == 0);\n var mask = Long.fromInt(alignment - 1);\n return value.add(mask).and(mask.not());\n};\n\nglobal.i64_is_i8 = function(value) {\n return value.high === 0 && (value.low >= 0 && value.low <= i8.MAX_VALUE)\n || value.high === -1 && (value.low >= i8.MIN_VALUE && value.low < 0);\n};\n\nglobal.i64_is_i16 = function(value) {\n return value.high === 0 && (value.low >= 0 && value.low <= i16.MAX_VALUE)\n || value.high === -1 && (value.low >= i16.MIN_VALUE && value.low < 0);\n};\n\nglobal.i64_is_i32 = function(value) {\n return (value.high === 0 && value.low >= 0)\n || (value.high === -1 && value.low < 0);\n};\n\nglobal.i64_is_u8 = function(value) {\n return value.high === 0 && value.low >= 0 && value.low <= u8.MAX_VALUE;\n};\n\nglobal.i64_is_u16 = function(value) {\n return value.high === 0 && value.low >= 0 && value.low <= u16.MAX_VALUE;\n};\n\nglobal.i64_is_u32 = function(value) {\n return value.high === 0;\n};\n\nglobal.i64_is_bool = function(value) {\n return value.high === 0 && (value.low === 0 || value.low === 1);\n};\n\nconst minSafeF32 = Long.fromNumber(f32.MIN_SAFE_INTEGER);\nconst maxSafeF32 = Long.fromNumber(f32.MAX_SAFE_INTEGER);\n\nglobal.i64_is_f32 = function(value) {\n return value.gte(minSafeF32) && value.lte(maxSafeF32);\n};\n\nconst minSafeF64 = Long.fromNumber(f64.MIN_SAFE_INTEGER);\nconst maxSafeF64 = Long.fromNumber(f64.MAX_SAFE_INTEGER);\n\nglobal.i64_is_f64 = function(value) {\n return value.gte(minSafeF64) && value.lte(maxSafeF64);\n};\n\nglobal.i64_to_f32 = function(value) {\n return global.Math.fround(value.toNumber());\n};\n\nglobal.i64_to_f64 = function(value) {\n return value.toNumber();\n};\n\nglobal.i64_to_string = function(value, unsigned) {\n return (unsigned ? value.toUnsigned() : value).toString(10);\n};\n","module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n ])), {}).exports;\r\n} catch (e) {\r\n // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations. For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative). Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n if (isNaN(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n if (typeof val === 'number')\r\n return fromNumber(val, unsigned);\r\n if (typeof val === 'string')\r\n return fromString(val, unsigned);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = wasm.mul(this.low,\r\n this.high,\r\n multiplier.low,\r\n multiplier.high);\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n // guard against signed division overflow: the largest\r\n // negative number / -1 would be 1 larger than the largest\r\n // positive number, due to two's complement.\r\n if (!this.unsigned &&\r\n this.high === -0x80000000 &&\r\n divisor.low === -1 && divisor.high === -1) {\r\n // be consistent with non-wasm code path\r\n return this;\r\n }\r\n var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo >>> 16 & 0xff,\r\n lo >>> 24 ,\r\n hi & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi >>> 16 & 0xff,\r\n hi >>> 24\r\n ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n hi >>> 24 ,\r\n hi >>> 16 & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi & 0xff,\r\n lo >>> 24 ,\r\n lo >>> 16 & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo & 0xff\r\n ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n return new Long(\r\n bytes[0] |\r\n bytes[1] << 8 |\r\n bytes[2] << 16 |\r\n bytes[3] << 24,\r\n bytes[4] |\r\n bytes[5] << 8 |\r\n bytes[6] << 16 |\r\n bytes[7] << 24,\r\n unsigned\r\n );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n return new Long(\r\n bytes[4] << 24 |\r\n bytes[5] << 16 |\r\n bytes[6] << 8 |\r\n bytes[7],\r\n bytes[0] << 24 |\r\n bytes[1] << 16 |\r\n bytes[2] << 8 |\r\n bytes[3],\r\n unsigned\r\n );\r\n};\r\n","// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n","/**\n * Low-level C-like compiler API.\n * @module index\n *//***/\n\nimport { Target, Feature } from \"./common\";\nimport { Compiler, Options } from \"./compiler\";\nimport { Decompiler } from \"./decompiler\";\nimport { IDLBuilder, TSDBuilder } from \"./definitions\";\nimport { DiagnosticMessage, DiagnosticCategory, formatDiagnosticMessage } from \"./diagnostics\";\nimport { Module } from \"./module\";\nimport { Parser } from \"./parser\";\nimport { Program } from \"./program\";\n\n/** Parses a source file. If `parser` has been omitted a new one is created. */\nexport function parseFile(text: string, path: string, isEntry: bool = false,\n parser: Parser | null = null\n): Parser {\n if (!parser) parser = new Parser();\n parser.parseFile(text, path, isEntry);\n return parser;\n}\n\n/** Obtains the next required file's path. Returns `null` once complete. */\nexport function nextFile(parser: Parser): string | null {\n return parser.nextFile();\n}\n\n/** Obtains the path of the dependee of a given imported file. */\nexport function getDependee(parser: Parser, file: string): string | null {\n return parser.getDependee(file);\n}\n\n/** Obtains the next diagnostic message. Returns `null` once complete. */\nexport function nextDiagnostic(parser: Parser): DiagnosticMessage | null {\n var program = parser.program;\n return program.diagnosticsOffset < program.diagnostics.length\n ? program.diagnostics[program.diagnosticsOffset++]\n : null;\n}\n\n/** Formats a diagnostic message to a string. */\nexport { formatDiagnosticMessage as formatDiagnostic };\n\n/** Tests whether a diagnostic is informatory. */\nexport function isInfo(message: DiagnosticMessage): bool {\n return message.category == DiagnosticCategory.INFO;\n}\n\n/** Tests whether a diagnostic is a warning. */\nexport function isWarning(message: DiagnosticMessage): bool {\n return message.category == DiagnosticCategory.WARNING;\n}\n\n/** Tests whether a diagnostic is an error. */\nexport function isError(message: DiagnosticMessage): bool {\n return message.category == DiagnosticCategory.ERROR;\n}\n\n/** Creates a new set of compiler options. */\nexport function createOptions(): Options {\n return new Options();\n}\n\n/** Sets the `target` option. */\nexport function setTarget(options: Options, target: Target): void {\n options.target = target;\n}\n\n/** Sets the `noAssert` option. */\nexport function setNoAssert(options: Options, noAssert: bool): void {\n options.noAssert = noAssert;\n}\n\n/** Sets the `importMemory` option. */\nexport function setImportMemory(options: Options, importMemory: bool): void {\n options.importMemory = importMemory;\n}\n\n/** Sets the `sharedMemory` option. */\nexport function setSharedMemory(options: Options, sharedMemory: i32): void {\n options.sharedMemory = sharedMemory;\n}\n\n/** Sets the `importTable` option. */\nexport function setImportTable(options: Options, importTable: bool): void {\n options.importTable = importTable;\n}\n\n/** Sets the `sourceMap` option. */\nexport function setSourceMap(options: Options, sourceMap: bool): void {\n options.sourceMap = sourceMap;\n}\n\n/** Sets the `memoryBase` option. */\nexport function setMemoryBase(options: Options, memoryBase: u32): void {\n options.memoryBase = memoryBase;\n}\n\n/** Sets a 'globalAliases' value. */\nexport function setGlobalAlias(options: Options, alias: string, name: string): void {\n var globalAliases = options.globalAliases;\n if (!globalAliases) options.globalAliases = globalAliases = new Map();\n globalAliases.set(alias, name);\n}\n\n/** Sets the `explicitStart` option. */\nexport function setExplicitStart(options: Options, explicitStart: bool): void {\n options.explicitStart = explicitStart;\n}\n\n/** Sets the `noUnsafe` option. */\nexport function setNoUnsafe(options: Options, noUnsafe: bool): void {\n options.noUnsafe = noUnsafe;\n}\n\n/** Sign extension operations. */\nexport const FEATURE_SIGN_EXTENSION = Feature.SIGN_EXTENSION;\n/** Mutable global imports and exports. */\nexport const FEATURE_MUTABLE_GLOBAL = Feature.MUTABLE_GLOBAL;\n/** Bulk memory operations. */\nexport const FEATURE_BULK_MEMORY = Feature.BULK_MEMORY;\n/** SIMD types and operations. */\nexport const FEATURE_SIMD = Feature.SIMD;\n/** Threading and atomic operations. */\nexport const FEATURE_THREADS = Feature.THREADS;\n\n/** Enables a specific feature. */\nexport function enableFeature(options: Options, feature: Feature): void {\n options.features |= feature;\n}\n\n/** Gives the compiler a hint at the optimize levels that will be used later on. */\nexport function setOptimizeLevelHints(options: Options, optimizeLevel: i32, shrinkLevel: i32): void {\n options.optimizeLevelHint = optimizeLevel;\n options.shrinkLevelHint = shrinkLevel;\n}\n\n/** Finishes parsing. */\nexport function finishParsing(parser: Parser): Program {\n return parser.finish();\n}\n\n/** Compiles the sources computed by the parser to a module. */\nexport function compileProgram(program: Program, options: Options | null = null): Module {\n return new Compiler(program, options).compile();\n}\n\n/** Decompiles a module to its (low level) source. */\nexport function decompileModule(module: Module): string {\n var decompiler = new Decompiler();\n decompiler.decompile(module);\n return decompiler.finish();\n}\n\n/** Builds WebIDL definitions for the specified program. */\nexport function buildIDL(program: Program): string {\n return IDLBuilder.build(program);\n}\n\n/** Builds TypeScript definitions for the specified program. */\nexport function buildTSD(program: Program): string {\n return TSDBuilder.build(program);\n}\n\n/** Builds a JSON file of a program's runtime type information. */\nexport function buildRTTI(program: Program): string {\n var sb = new Array();\n sb.push(\"{\\n \\\"names\\\": [\\n\");\n for (let cls of program.managedClasses.values()) {\n sb.push(\" \\\"\");\n sb.push(cls.internalName);\n sb.push(\"\\\",\\n\");\n }\n sb.push(\" ],\\n \\\"base\\\": [\\n\");\n for (let cls of program.managedClasses.values()) {\n let base = cls.base;\n sb.push(\" \");\n sb.push(base ? base.id.toString() : \"0\");\n sb.push(\",\\n\");\n }\n sb.push(\" ],\\n \\\"flags\\\": [\\n\");\n for (let cls of program.managedClasses.values()) {\n sb.push(\" \");\n sb.push(cls.rttiFlags.toString());\n sb.push(\",\\n\");\n }\n sb.push(\" ]\\n}\\n\");\n return sb.join(\"\");\n}\n\n/** Prefix indicating a library file. */\nexport { LIBRARY_PREFIX } from \"./common\";\n\n// Full API\nexport * from \"./ast\";\n// export * from \"./binary\";\nexport * from \"./common\";\nexport * from \"./compiler\";\nexport * from \"./decompiler\";\nexport * from \"./definitions\";\nexport * from \"./diagnosticMessages.generated\";\nexport * from \"./diagnostics\";\nexport * from \"./flow\";\nexport * from \"./module\";\nexport * from \"./parser\";\nexport * from \"./program\";\nexport * from \"./resolver\";\nexport * from \"./tokenizer\";\nexport * from \"./types\";\nexport * from \"./util/index\";\n","/** @module util *//***/\n\n/** Tests if the bit at the specified index is set within a 64-bit map. */\nexport function bitsetIs(map: I64, index: i32): bool {\n assert(index >= 0 && index < 64);\n return i64_ne(\n i64_and(\n map,\n i64_shl(\n i64_one,\n i64_new(index)\n )\n ),\n i64_zero\n );\n}\n\n/** Sets or unsets the bit at the specified index within a 64-bit map and returns the new map. */\nexport function bitsetSet(map: I64, index: i32, isSet: bool): I64 {\n assert(index >= 0 && index < 64);\n return isSet\n ? i64_or(\n map,\n i64_shl(\n i64_one,\n i64_new(index)\n )\n )\n : i64_and(\n map,\n i64_not(\n i64_shl(\n i64_one,\n i64_new(index)\n )\n )\n );\n}\n","/** @module util *//***/\n\n/** An enum of named character codes. */\nexport const enum CharCode {\n\n NULL = 0,\n LINEFEED = 0x0A,\n CARRIAGERETURN = 0x0D,\n LINESEPARATOR = 0x2028,\n PARAGRAPHSEPARATOR = 0x2029,\n NEXTLINE = 0x0085,\n\n SPACE = 0x20,\n NONBREAKINGSPACE = 0xA0,\n ENQUAD = 0x2000,\n EMQUAD = 0x2001,\n ENSPACE = 0x2002,\n EMSPACE = 0x2003,\n THREEPEREMSPACE = 0x2004,\n FOURPEREMSPACE = 0x2005,\n SIXPEREMSPACE = 0x2006,\n FIGURESPACE = 0x2007,\n PUNCTUATIONSPACE = 0x2008,\n THINSPACE = 0x2009,\n HAIRSPACE = 0x200A,\n ZEROWIDTHSPACE = 0x200B,\n NARROWNOBREAKSPACE = 0x202F,\n IDEOGRAPHICSPACE = 0x3000,\n MATHEMATICALSPACE = 0x205F,\n OGHAM = 0x1680,\n\n _ = 0x5F,\n\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n\n a = 0x61,\n b = 0x62,\n c = 0x63,\n d = 0x64,\n e = 0x65,\n f = 0x66,\n g = 0x67,\n h = 0x68,\n i = 0x69,\n j = 0x6A,\n k = 0x6B,\n l = 0x6C,\n m = 0x6D,\n n = 0x6E,\n o = 0x6F,\n p = 0x70,\n q = 0x71,\n r = 0x72,\n s = 0x73,\n t = 0x74,\n u = 0x75,\n v = 0x76,\n w = 0x77,\n x = 0x78,\n y = 0x79,\n z = 0x7A,\n\n A = 0x41,\n B = 0x42,\n C = 0x43,\n D = 0x44,\n E = 0x45,\n F = 0x46,\n G = 0x47,\n H = 0x48,\n I = 0x49,\n J = 0x4A,\n K = 0x4B,\n L = 0x4C,\n M = 0x4D,\n N = 0x4E,\n O = 0x4F,\n P = 0x50,\n Q = 0x51,\n R = 0x52,\n S = 0x53,\n T = 0x54,\n U = 0x55,\n V = 0x56,\n W = 0x57,\n X = 0x58,\n Y = 0x59,\n Z = 0x5a,\n\n AMPERSAND = 0x26,\n ASTERISK = 0x2A,\n AT = 0x40,\n BACKSLASH = 0x5C,\n BACKTICK = 0x60,\n BAR = 0x7C,\n CARET = 0x5E,\n CLOSEBRACE = 0x7D,\n CLOSEBRACKET = 0x5D,\n CLOSEPAREN = 0x29,\n COLON = 0x3A,\n COMMA = 0x2C,\n DOLLAR = 0x24,\n DOT = 0x2E,\n DOUBLEQUOTE = 0x22,\n EQUALS = 0x3D,\n EXCLAMATION = 0x21,\n GREATERTHAN = 0x3E,\n HASH = 0x23,\n LESSTHAN = 0x3C,\n MINUS = 0x2D,\n OPENBRACE = 0x7B,\n OPENBRACKET = 0x5B,\n OPENPAREN = 0x28,\n PERCENT = 0x25,\n PLUS = 0x2B,\n QUESTION = 0x3F,\n SEMICOLON = 0x3B,\n SINGLEQUOTE = 0x27,\n SLASH = 0x2F,\n TILDE = 0x7E,\n\n BACKSPACE = 0x08,\n FORMFEED = 0x0C,\n BYTEORDERMARK = 0xFEFF,\n TAB = 0x09,\n VERTICALTAB = 0x0B\n}\n\n/** Tests if the specified character code is some sort of line break. */\nexport function isLineBreak(c: CharCode): bool {\n switch (c) {\n case CharCode.LINEFEED:\n case CharCode.CARRIAGERETURN:\n case CharCode.LINESEPARATOR:\n case CharCode.PARAGRAPHSEPARATOR: {\n return true;\n }\n default: {\n return false;\n }\n }\n}\n\n/** Tests if the specified character code is some sort of white space. */\nexport function isWhiteSpace(c: i32): bool {\n switch (c) {\n case CharCode.SPACE:\n case CharCode.TAB:\n case CharCode.VERTICALTAB:\n case CharCode.FORMFEED:\n case CharCode.NONBREAKINGSPACE:\n case CharCode.NEXTLINE:\n case CharCode.OGHAM:\n case CharCode.NARROWNOBREAKSPACE:\n case CharCode.MATHEMATICALSPACE:\n case CharCode.IDEOGRAPHICSPACE:\n case CharCode.BYTEORDERMARK: {\n return true;\n }\n default: {\n return c >= CharCode.ENQUAD && c <= CharCode.ZEROWIDTHSPACE;\n }\n }\n}\n\n/** Tests if the specified character code is a valid decimal digit. */\nexport function isDecimalDigit(c: i32): bool {\n return c >= CharCode._0 && c <= CharCode._9;\n}\n\n/** Tests if the specified character code is a valid octal digit. */\nexport function isOctalDigit(c: i32): bool {\n return c >= CharCode._0 && c <= CharCode._7;\n}\n\n/** Tests if the specified character code is a valid start of an identifier. */\nexport function isIdentifierStart(c: i32): bool {\n return c >= CharCode.a && c <= CharCode.z\n || c >= CharCode.A && c <= CharCode.Z\n || c == CharCode._\n || c == CharCode.DOLLAR\n || c > 0x7f && isUnicodeIdentifierStart(c);\n}\n\n/** Tests if the specified character code is a valid keyword character. */\nexport function isKeywordCharacter(c: i32): bool {\n return c >= CharCode.a && c <= CharCode.z;\n}\n\n/** Tests if the specified character code is a valid part of an identifier. */\nexport function isIdentifierPart(c: i32): bool {\n return c >= CharCode.a && c <= CharCode.z\n || c >= CharCode.A && c <= CharCode.Z\n || c >= CharCode._0 && c <= CharCode._9\n || c == CharCode._\n || c == CharCode.DOLLAR\n || c > 0x7f && isUnicodeIdentifierPart(c);\n}\n\n// storing as u16 to save memory\nconst unicodeIdentifierStart: u16[] = [\n 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736,\n 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906,\n 908, 908, 910, 929, 931,\n 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514,\n 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774,\n 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969,\n 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088,\n 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384,\n 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474,\n 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529,\n 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613,\n 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705,\n 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784,\n 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873,\n 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958,\n 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986,\n 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125,\n 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240,\n 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333,\n 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455,\n 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634,\n 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725,\n 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757,\n 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840,\n 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186,\n 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293,\n 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696,\n 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798,\n 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992,\n 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872,\n 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016,\n 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389,\n 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688,\n 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141,\n 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424,\n 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025,\n 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130,\n 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188,\n 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469,\n 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505,\n 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584,\n 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520,\n 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670,\n 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720,\n 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329,\n 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540,\n 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893,\n 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538,\n 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888,\n 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015,\n 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259,\n 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520,\n 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695,\n 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739,\n 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798,\n 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243,\n 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285,\n 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323,\n 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019,\n 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474,\n 65479, 65482, 65487, 65490, 65495, 65498, 65500,\n];\nconst unicodeIdentifierPart: u16[] = [\n 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736,\n 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906,\n 908, 908, 910, 929, 931,\n 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415,\n 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520,\n 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788,\n 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112,\n 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423,\n 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482,\n 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525,\n 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602,\n 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632,\n 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693,\n 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757,\n 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821,\n 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884,\n 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929,\n 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972,\n 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018,\n 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088,\n 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157,\n 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216,\n 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285,\n 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340,\n 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424,\n 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515,\n 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570,\n 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720,\n 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751,\n 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789,\n 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895,\n 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028,\n 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304,\n 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744,\n 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808,\n 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108,\n 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902,\n 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099,\n 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272,\n 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516,\n 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783,\n 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155,\n 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676,\n 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027,\n 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134,\n 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205,\n 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417,\n 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477,\n 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517,\n 8521, 8526, 8526, 8544, 8584,\n 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559,\n 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686,\n 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728,\n 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335,\n 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449,\n 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799,\n 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512,\n 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783,\n 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072,\n 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309,\n 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584,\n 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741,\n 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808,\n 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203,\n 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275,\n 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321,\n 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008,\n 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140,\n 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382,\n 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,\n];\n\nfunction lookupInUnicodeMap(code: u16, map: u16[]): bool {\n if (code < map[0]) return false;\n\n var lo = 0;\n var hi = map.length;\n var mid: i32;\n var midVal: u16;\n\n while (lo + 1 < hi) {\n mid = lo + ((hi - lo) >> 1);\n mid -= (mid & 1);\n midVal = map[mid];\n if (midVal <= code && code <= map[mid + 1]) {\n return true;\n }\n if (code < midVal) {\n hi = mid;\n } else {\n lo = mid + 2;\n }\n }\n return false;\n}\n\nfunction isUnicodeIdentifierStart(code: i32): bool {\n return code < 0 || code > 0xffff ? false\n : lookupInUnicodeMap(code as u16, unicodeIdentifierStart);\n}\n\nfunction isUnicodeIdentifierPart(code: i32): bool {\n return code < 0 || code > 0xffff ? false\n : lookupInUnicodeMap(code as u16, unicodeIdentifierPart);\n}\n","export function makeArray(original: Array | null = null): Array {\n if (original) {\n let cloned = new Array(original.length);\n for (let i = 0, k = original.length; i < k; ++i) unchecked(cloned[i] = original[i]);\n return cloned;\n }\n return new Array();\n}\n\nexport function makeSet(original: Set | null = null): Set {\n if (original) {\n let cloned = new Set();\n for (let v of original) cloned.add(v);\n return cloned;\n }\n return new Set();\n}\n\nexport function makeMap(original: Map | null = null, overrides: Map | null = null): Map {\n var cloned = new Map();\n if (original) {\n for (let [k, v] of original) cloned.set(k, v);\n if (overrides) for (let [k, v] of overrides) cloned.set(k, v);\n } else if (overrides) {\n for (let [k, v] of overrides) cloned.set(k, v);\n }\n return cloned;\n}\n","/** @module util *//***/\n\nimport {\n CharCode\n} from \"./charcode\";\n\nimport {\n PATH_DELIMITER\n} from \"../common\";\n\nconst separator = CharCode.SLASH;\n\n/**\n * Normalizes the specified path, removing interior placeholders.\n * Expects a posix-compatible relative path (not Windows compatible).\n */\nexport function normalizePath(path: string): string {\n var pos = 0;\n var len = path.length;\n\n // trim leading './'\n while (pos + 1 < len &&\n path.charCodeAt(pos) == CharCode.DOT &&\n path.charCodeAt(pos + 1) == separator\n ) {\n pos += 2;\n }\n\n if (pos > 0 || len < path.length) {\n path = path.substring(pos, len);\n len -= pos;\n pos = 0;\n }\n\n var atEnd: bool;\n while (pos + 1 < len) {\n atEnd = false;\n\n // we are only interested in '/.' sequences ...\n if (\n path.charCodeAt(pos) == separator &&\n path.charCodeAt(pos + 1) == CharCode.DOT\n ) {\n // '/.' ( '/' | $ )\n atEnd = pos + 2 == len;\n if (atEnd ||\n pos + 2 < len &&\n path.charCodeAt(pos + 2) == separator\n ) {\n path = atEnd\n ? path.substring(0, pos)\n : path.substring(0, pos) + path.substring(pos + 2);\n len -= 2;\n continue;\n }\n\n // '/.' ( './' | '.' $ )\n atEnd = pos + 3 == len;\n if (atEnd && path.charCodeAt(pos + 2) == CharCode.DOT ||\n pos + 3 < len &&\n path.charCodeAt(pos + 2) == CharCode.DOT &&\n path.charCodeAt(pos + 3) == separator\n ) {\n // find preceeding '/'\n let ipos = pos;\n while (--ipos >= 0) {\n if (path.charCodeAt(ipos) == separator) {\n if (pos - ipos != 3 ||\n path.charCodeAt(ipos + 1) != CharCode.DOT ||\n path.charCodeAt(ipos + 2) != CharCode.DOT\n ) { // exclude '..' itself\n path = atEnd\n ? path.substring(0, ipos)\n : path.substring(0, ipos) + path.substring(pos + 3);\n len -= pos + 3 - ipos;\n pos = ipos - 1; // incremented again at end of loop\n }\n break;\n }\n }\n\n // if there's no preceeding '/', trim start if non-empty\n if (ipos < 0 && pos > 0) {\n if (pos != 2 ||\n path.charCodeAt(0) != CharCode.DOT ||\n path.charCodeAt(1) != CharCode.DOT\n ) { // exclude '..' itself\n path = path.substring(pos + 4);\n len = path.length;\n continue;\n }\n }\n }\n }\n pos++;\n }\n return len > 0 ? path : \".\";\n}\n\n/** Resolves the specified path relative to the specified origin. */\nexport function resolvePath(normalizedPath: string, origin: string): string {\n if (normalizedPath.startsWith(\"std/\")) {\n return normalizedPath;\n }\n return normalizePath(\n dirname(origin) + PATH_DELIMITER + normalizedPath\n );\n}\n\n/** Obtains the directory portion of a normalized path. */\nexport function dirname(normalizedPath: string): string {\n var pos = normalizedPath.length;\n if (pos <= 1) {\n if (pos == 0) return \".\";\n if (normalizedPath.charCodeAt(0) == separator) {\n return normalizedPath;\n }\n }\n while (--pos > 0) {\n if (normalizedPath.charCodeAt(pos) == separator) {\n return normalizedPath.substring(0, pos);\n }\n }\n return \".\";\n}\n","/** @module util *//***/\n\nconst indentX1 = \" \";\nconst indentX2 = \" \";\nconst indentX4 = \" \";\n\n/** Creates an indentation matching the number of specified levels. */\nexport function indent(sb: string[], level: i32): void {\n while (level >= 4) {\n sb.push(indentX4);\n level -= 4;\n }\n if (level >= 2) {\n sb.push(indentX2);\n level -= 2;\n }\n if (level) {\n sb.push(indentX1);\n }\n}\n","/** @module util *//***/\n\n/** Reads an 8-bit integer from the specified buffer. */\nexport function readI8(buffer: Uint8Array, offset: i32): i32 {\n return buffer[offset];\n}\n\n/** Writes an 8-bit integer to the specified buffer. */\nexport function writeI8(value: i32, buffer: Uint8Array, offset: i32): void {\n buffer[offset] = value;\n}\n\n/** Reads a 16-bit integer from the specified buffer. */\nexport function readI16(buffer: Uint8Array, offset: i32): i32 {\n return buffer[offset ]\n | buffer[offset + 1] << 8;\n}\n\n/** Writes a 16-bit integer to the specified buffer. */\nexport function writeI16(value: i32, buffer: Uint8Array, offset: i32): void {\n buffer[offset ] = value;\n buffer[offset + 1] = value >>> 8;\n}\n\n/** Reads a 32-bit integer from the specified buffer. */\nexport function readI32(buffer: Uint8Array, offset: i32): i32 {\n return buffer[offset ]\n | buffer[offset + 1] << 8\n | buffer[offset + 2] << 16\n | buffer[offset + 3] << 24;\n}\n\n/** Writes a 32-bit integer to the specified buffer. */\nexport function writeI32(value: i32, buffer: Uint8Array, offset: i32): void {\n buffer[offset ] = value;\n buffer[offset + 1] = value >>> 8;\n buffer[offset + 2] = value >>> 16;\n buffer[offset + 3] = value >>> 24;\n}\n\n/** Reads a 64-bit integer from the specified buffer. */\nexport function readI64(buffer: Uint8Array, offset: i32): I64 {\n var lo = readI32(buffer, offset);\n var hi = readI32(buffer, offset + 4);\n return i64_new(lo, hi);\n}\n\n/** Writes a 64-bit integer to the specified buffer. */\nexport function writeI64(value: I64, buffer: Uint8Array, offset: i32): void {\n writeI32(i64_low(value), buffer, offset);\n writeI32(i64_high(value), buffer, offset + 4);\n}\n\n/** Reads a 32-bit float from the specified buffer. */\nexport function readF32(buffer: Uint8Array, offset: i32): f32 {\n return i32_as_f32(readI32(buffer, offset));\n}\n\n/** Writes a 32-bit float to the specified buffer. */\nexport function writeF32(value: f32, buffer: Uint8Array, offset: i32): void {\n writeI32(f32_as_i32(value), buffer, offset);\n}\n\n/** Reads a 64-bit float from the specified buffer. */\nexport function readF64(buffer: Uint8Array, offset: i32): f64 {\n return i64_as_f64(readI64(buffer, offset));\n}\n\n/** Writes a 64-bit float to the specified buffer. */\nexport function writeF64(value: f64, buffer: Uint8Array, offset: i32): void {\n var valueI64 = f64_as_i64(value);\n writeI32(i64_low(valueI64), buffer, offset);\n writeI32(i64_high(valueI64), buffer, offset + 4);\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/tests/near-bindgen/assembly/test.ts b/tests/near-bindgen/assembly/test.ts index 22b0b3d7ef..320fae6c93 100644 --- a/tests/near-bindgen/assembly/test.ts +++ b/tests/near-bindgen/assembly/test.ts @@ -66,3 +66,9 @@ export function unwrapFoobar(container: AnotherContainerClass): FooBar { export function stringOrNull(): string | null { return main.stringOrNull(); } + +type StringAlias = string; + +export function stringAliasTest(str: StringAlias): StringAlias { + return str + " World" +} \ No newline at end of file diff --git a/tests/near-bindgen/out/assembly/hello/model.ts b/tests/near-bindgen/out/assembly/hello/model.ts index df9f3635fe..9f2e3fc8bf 100644 --- a/tests/near-bindgen/out/assembly/hello/model.ts +++ b/tests/near-bindgen/out/assembly/hello/model.ts @@ -2,246 +2,6 @@ import { base64 } from "near-runtime-ts"; import { JSONEncoder } from "assemblyscript-json"; import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; -export class __near_JSONHandler_PromiseArgs extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_PromiseArgs>; - handledRoot: boolean = false; - value: PromiseArgs; - - constructor(value_: PromiseArgs) { - super(); - this.value = value_; - } - - setInteger(name: string, value: i64): void { - if (name == "gas") { - this.value.gas = value; - return; - } - if (name == "balance") { - this.value.balance = value; - return; - } - if (name == "callbackBalance") { - this.value.callbackBalance = value; - return; - } - if (name == "callbackGas") { - this.value.callbackGas = value; - return; - } - super.setInteger(name, value); - } - setString(name: string, value: string): void { - if (name == "receiver") { - this.value.receiver = value; - return; - } - if (name == "methodName") { - this.value.methodName = value; - return; - } - if (name == "callback") { - this.value.callback = value; - return; - } - super.setString(name, value); - } - setNull(name: string): void { - if (name == "receiver") { - this.value.receiver = null - return; - } - if (name == "methodName") { - this.value.methodName = null - return; - } - if (name == "args") { - this.value.args = null - return; - } - if (name == "callback") { - this.value.callback = null - return; - } - if (name == "callbackArgs") { - this.value.callbackArgs = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "args") { - this.value.args = decode(this.buffer, this.decoder.state); - return false; - } - if (name == "callbackArgs") { - this.value.callbackArgs = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - -export class __near_JSONHandler_InputPromiseArgs extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_InputPromiseArgs>; - handledRoot: boolean = false; - value: InputPromiseArgs; - - constructor(value_: InputPromiseArgs) { - super(); - this.value = value_; - } - - setNull(name: string): void { - if (name == "args") { - this.value.args = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "args") { - this.value.args = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - -export class __near_JSONHandler_MyContractPromiseResult extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_MyContractPromiseResult>; - handledRoot: boolean = false; - value: MyContractPromiseResult; - - constructor(value_: MyContractPromiseResult) { - super(); - this.value = value_; - } - - setBoolean(name: string, value: bool): void { - if (name == "ok") { - this.value.ok = value; - return; - } - super.setBoolean(name, value); - } - setNull(name: string): void { - if (name == "r") { - this.value.r = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "r") { - this.value.r = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - -export class __near_JSONHandler_MyCallbackResult extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_MyCallbackResult>; - handledRoot: boolean = false; - value: MyCallbackResult; - - constructor(value_: MyCallbackResult) { - super(); - this.value = value_; - } - - setString(name: string, value: string): void { - if (name == "n") { - this.value.n = value; - return; - } - super.setString(name, value); - } - setNull(name: string): void { - if (name == "rs") { - this.value.rs = >null - return; - } - if (name == "n") { - this.value.n = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - if (name == "rs") { - this.value.rs = decode>(this.buffer, this.decoder.state); - return false; - } - - return super.pushArray(name); - } -} - export class PromiseArgs { receiver: string; methodName: string; @@ -272,8 +32,6 @@ export class PromiseArgs { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -312,8 +70,6 @@ export class InputPromiseArgs { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -346,8 +102,6 @@ export class MyContractPromiseResult { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -381,8 +135,6 @@ export class MyCallbackResult { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); diff --git a/tests/near-bindgen/out/assembly/model.ts b/tests/near-bindgen/out/assembly/model.ts index 424abd2680..52700eeae1 100644 --- a/tests/near-bindgen/out/assembly/model.ts +++ b/tests/near-bindgen/out/assembly/model.ts @@ -2,548 +2,6 @@ import { base64 } from "near-runtime-ts"; import { JSONEncoder } from "assemblyscript-json"; import { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; -export class __near_JSONHandler_FooBar extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_FooBar>; - handledRoot: boolean = false; - value: FooBar; - - constructor(value_: FooBar) { - super(); - this.value = value_; - } - - setInteger(name: string, value: i64): void { - if (name == "foo") { - this.value.foo = value; - return; - } - if (name == "bar") { - this.value.bar = value; - return; - } - super.setInteger(name, value); - } - setString(name: string, value: string): void { - if (name == "u64Val") { - this.value.u64Val = U64.parseInt(value); - return; - } - if (name == "u64_zero") { - this.value.u64_zero = U64.parseInt(value); - return; - } - if (name == "i64Val") { - this.value.i64Val = I64.parseInt(value); - return; - } - if (name == "baz") { - this.value.baz = value; - return; - } - if (name == "uint8array") { - this.value.uint8array = base64.decode(value); - return; - } - if (name == "u128Val") { - this.value.u128Val = u128.fromString(value); - return; - } - super.setString(name, value); - } - setBoolean(name: string, value: bool): void { - if (name == "flag") { - this.value.flag = value; - return; - } - super.setBoolean(name, value); - } - setNull(name: string): void { - if (name == "baz") { - this.value.baz = null - return; - } - if (name == "uint8array") { - this.value.uint8array = null - return; - } - if (name == "arr") { - this.value.arr = >>null - return; - } - if (name == "u32Arr") { - this.value.u32Arr = >null - return; - } - if (name == "i32Arr") { - this.value.i32Arr = >null - return; - } - if (name == "u128Val") { - this.value.u128Val = null - return; - } - if (name == "uint8arrays") { - this.value.uint8arrays = >null - return; - } - if (name == "u64Arr") { - this.value.u64Arr = >null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "u128Val") { - this.value.u128Val = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - if (name == "arr") { - this.value.arr = decode>>(this.buffer, this.decoder.state); - return false; - } - if (name == "u32Arr") { - this.value.u32Arr = decode>(this.buffer, this.decoder.state); - return false; - } - if (name == "i32Arr") { - this.value.i32Arr = decode>(this.buffer, this.decoder.state); - return false; - } - if (name == "uint8arrays") { - this.value.uint8arrays = decode>(this.buffer, this.decoder.state); - return false; - } - if (name == "u64Arr") { - this.value.u64Arr = decode>(this.buffer, this.decoder.state); - return false; - } - - return super.pushArray(name); - } -} - -export class __near_JSONHandler_Nullables extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_Nullables>; - handledRoot: boolean = false; - value: Nullables; - - constructor(value_: Nullables) { - super(); - this.value = value_; - } - - setString(name: string, value: string): void { - if (name == "str") { - this.value.str = value; - return; - } - if (name == "u128") { - this.value.u128 = u128.fromString(value); - return; - } - if (name == "uint8Array") { - this.value.uint8Array = base64.decode(value); - return; - } - super.setString(name, value); - } - setNull(name: string): void { - if (name == "str") { - this.value.str = null - return; - } - if (name == "u128") { - this.value.u128 = null - return; - } - if (name == "uint8Array") { - this.value.uint8Array = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "u128") { - this.value.u128 = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - -export class __near_JSONHandler_ContainerClass extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_ContainerClass>; - handledRoot: boolean = false; - value: ContainerClass; - - constructor(value_: ContainerClass) { - super(); - this.value = value_; - } - - setNull(name: string): void { - if (name == "foobar") { - this.value.foobar = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "foobar") { - this.value.foobar = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - -export class __near_JSONHandler_AnotherContainerClass extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_AnotherContainerClass>; - handledRoot: boolean = false; - value: AnotherContainerClass; - - constructor(value_: AnotherContainerClass) { - super(); - this.value = value_; - } - - setNull(name: string): void { - if (name == "foobars") { - this.value.foobars = >>null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - if (name == "foobars") { - this.value.foobars = decode>>(this.buffer, this.decoder.state); - return false; - } - - return super.pushArray(name); - } -} - -export class __near_JSONHandler_PromiseArgs extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_PromiseArgs>; - handledRoot: boolean = false; - value: PromiseArgs; - - constructor(value_: PromiseArgs) { - super(); - this.value = value_; - } - - setInteger(name: string, value: i64): void { - if (name == "balance") { - this.value.balance = value; - return; - } - if (name == "callbackBalance") { - this.value.callbackBalance = value; - return; - } - super.setInteger(name, value); - } - setString(name: string, value: string): void { - if (name == "receiver") { - this.value.receiver = value; - return; - } - if (name == "methodName") { - this.value.methodName = value; - return; - } - if (name == "callback") { - this.value.callback = value; - return; - } - super.setString(name, value); - } - setNull(name: string): void { - if (name == "receiver") { - this.value.receiver = null - return; - } - if (name == "methodName") { - this.value.methodName = null - return; - } - if (name == "args") { - this.value.args = null - return; - } - if (name == "callback") { - this.value.callback = null - return; - } - if (name == "callbackArgs") { - this.value.callbackArgs = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "args") { - this.value.args = decode(this.buffer, this.decoder.state); - return false; - } - if (name == "callbackArgs") { - this.value.callbackArgs = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - -export class __near_JSONHandler_MyContractPromiseResult extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_MyContractPromiseResult>; - handledRoot: boolean = false; - value: MyContractPromiseResult; - - constructor(value_: MyContractPromiseResult) { - super(); - this.value = value_; - } - - setBoolean(name: string, value: bool): void { - if (name == "ok") { - this.value.ok = value; - return; - } - super.setBoolean(name, value); - } - setNull(name: string): void { - if (name == "r") { - this.value.r = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "r") { - this.value.r = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - -export class __near_JSONHandler_MyCallbackResult extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_MyCallbackResult>; - handledRoot: boolean = false; - value: MyCallbackResult; - - constructor(value_: MyCallbackResult) { - super(); - this.value = value_; - } - - setString(name: string, value: string): void { - if (name == "n") { - this.value.n = value; - return; - } - super.setString(name, value); - } - setNull(name: string): void { - if (name == "rs") { - this.value.rs = >null - return; - } - if (name == "n") { - this.value.n = null - return; - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - if (name == "rs") { - this.value.rs = decode>(this.buffer, this.decoder.state); - return false; - } - - return super.pushArray(name); - } -} - -export class __near_JSONHandler_Generic extends ThrowingJSONHandler { - buffer: Uint8Array; - decoder: JSONDecoder<__near_JSONHandler_Generic>; - handledRoot: boolean = false; - value: Generic; - - constructor(value_: Generic) { - super(); - this.value = value_; - } - - setInteger(name: string, value: i64): void { - if (name == "value") { - this.value.value = value; - return; - } - assert(isInteger(), "value is not a Integer") - super.setInteger(name, value); - } - setString(name: string, value: string): void { - if (name == "value") { - this.value.value = I64.parseInt(value); - return; - } - assert(isString(), "value is not a String") - super.setString(name, value); - } - setBoolean(name: string, value: bool): void { - if (name == "value") { - this.value.value = value; - return; - } - assert(isBoolean(), "value is not a Boolean") - super.setBoolean(name, value); - } - setNull(name: string): void { - if (name == "value") { - if (isNullable()){ - this.value.value = null - return; - } - } - - super.setNull(name); - } - - pushObject(name: string): bool { -if (!this.handledRoot) { - assert(name == null || name.length == 0); - this.handledRoot = true; - return true; - } else { - assert(name != null || name.length != 0); - } - if (name == "value" && isReference()) { - this.value.value = decode(this.buffer, this.decoder.state); - return false; - } - - return super.pushObject(name); - } - - pushArray(name: string): bool { - - return super.pushArray(name); - } -} - import { u128 } from "bignum" @@ -590,8 +48,6 @@ export class FooBar { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -639,8 +95,6 @@ export class Nullables { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -673,8 +127,6 @@ export class ContainerClass { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -705,8 +157,6 @@ export class AnotherContainerClass { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -749,8 +199,6 @@ export class PromiseArgs { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -789,8 +237,6 @@ export class MyContractPromiseResult { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -824,8 +270,6 @@ export class MyCallbackResult { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); @@ -857,8 +301,6 @@ export class Generic { return this; } - - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); diff --git a/tests/near-bindgen/out/assembly/test.ts b/tests/near-bindgen/out/assembly/test.ts index 9af9add842..f1ff91b945 100644 --- a/tests/near-bindgen/out/assembly/test.ts +++ b/tests/near-bindgen/out/assembly/test.ts @@ -123,6 +123,32 @@ function __wrapper_stringOrNull(): void { export { __wrapper_stringOrNull as stringOrNull } + +//@ts-ignore +function __wrapper_stringAliasTest(): void { + // Reading input bytes. + input(0); + let json_len = register_len(0); + if (json_len == U32.MAX_VALUE) { + panic(); + } + let json = new Uint8Array(json_len as u32); + read_register(0, json.buffer); + const obj: Obj = JSON.parse(json); + let result: StringAlias = stringAliasTest(decode(obj, "str")); + + let encoder = new JSONEncoder(); + if ((isString() || isNullable()) && result == null) { + encoder.setNull(null); + } else { + encode(encoder, result, null); + } + let val: Uint8Array = encoder.serialize(); + value_return(val.byteLength, val.buffer); +} + +export { __wrapper_stringAliasTest as stringAliasTest } + import * as main from "./main" import { base64, @@ -186,4 +212,8 @@ function unwrapFoobar(container: AnotherContainerClass): FooBar { } function stringOrNull(): string | null { return main.stringOrNull(); +} +type StringAlias = string +function stringAliasTest(str: StringAlias): StringAlias { + return str + " World"; } \ No newline at end of file diff --git a/tests/near-bindgen/out/test.wat b/tests/near-bindgen/out/test.wat index e0ef130bf8..da8ab132ce 100644 --- a/tests/near-bindgen/out/test.wat +++ b/tests/near-bindgen/out/test.wat @@ -147,22 +147,23 @@ (data (i32.const 5072) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00c\00o\00n\00t\00a\00i\00n\00e\00r\00") (data (i32.const 5112) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00C\00o\00n\00t\00a\00i\00n\00e\00r\00C\00l\00a\00s\00s\00") (data (i32.const 5160) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\00A\00n\00o\00t\00h\00e\00r\00C\00o\00n\00t\00a\00i\00n\00e\00r\00C\00l\00a\00s\00s\00") - (data (i32.const 5224) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00a\00r\00t\00i\00n\00g\00 \00t\00e\00s\00t\00") - (data (i32.const 5272) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00*\00\00\00\0b\00\00\00") - (data (i32.const 5296) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00G\00V\00s\00b\00G\008\00s\00I\00H\00d\00v\00c\00m\00x\00k\00I\00Q\00=\00=\00") - (data (i32.const 5352) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00H\00e\00l\00l\00o\00") - (data (i32.const 5384) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\f8\14\00\00") - (data (i32.const 5408) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00W\00o\00r\00l\00d\00") + (data (i32.const 5224) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00t\00r\00") + (data (i32.const 5248) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00 \00W\00o\00r\00l\00d\00") + (data (i32.const 5280) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00a\00r\00t\00i\00n\00g\00 \00t\00e\00s\00t\00") + (data (i32.const 5328) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00*\00\00\00\0b\00\00\00") + (data (i32.const 5352) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00G\00V\00s\00b\00G\008\00s\00I\00H\00d\00v\00c\00m\00x\00k\00I\00Q\00=\00=\00") + (data (i32.const 5408) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00H\00e\00l\00l\00o\00") (data (i32.const 5440) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\000\15\00\00") - (data (i32.const 5464) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\e4\0bT\02\00\00\00\00\e8vH\17\00\00\00") - (data (i32.const 5496) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00B\00e\00f\00o\00r\00e\00:\00 \00") - (data (i32.const 5528) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00A\00f\00t\00e\00r\00:\00 \00 \00") - (data (i32.const 5560) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00t\00e\00s\00t\00.\00t\00s\00") - (data (i32.const 5608) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00t\00r\00") - (data (i32.const 5632) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00A\00r\00r\00a\00y\00") - (data (i32.const 5672) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00N\00u\00l\00l\00a\00b\00l\00e\00s\00") - (data (i32.const 5712) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00T\00e\00s\00t\00 \00P\00a\00s\00s\00e\00d\00") - (data (i32.const 5752) "%\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\98 A\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\0b\00\00\00\10\00\00\00\0c\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\93\04\00\00\02\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93\00\00\00\02\00\00\00\93 \00\00\02\00\00\00\13\01\00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\003\00\00\00\02\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 5464) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00W\00o\00r\00l\00d\00") + (data (i32.const 5496) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00h\15\00\00") + (data (i32.const 5520) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\e4\0bT\02\00\00\00\00\e8vH\17\00\00\00") + (data (i32.const 5552) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00B\00e\00f\00o\00r\00e\00:\00 \00") + (data (i32.const 5584) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00A\00f\00t\00e\00r\00:\00 \00 \00") + (data (i32.const 5616) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00t\00e\00s\00t\00.\00t\00s\00") + (data (i32.const 5664) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00u\00i\00n\00t\008\00A\00r\00r\00a\00y\00") + (data (i32.const 5704) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00N\00u\00l\00l\00a\00b\00l\00e\00s\00") + (data (i32.const 5744) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00T\00e\00s\00t\00 \00P\00a\00s\00s\00e\00d\00") + (data (i32.const 5784) "%\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\98 A\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\0b\00\00\00\10\00\00\00\0c\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\07\00\00\00\93\04\00\00\02\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\07\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93\00\00\00\02\00\00\00\93 \00\00\02\00\00\00\13\01\00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\003\00\00\00\02\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\10\00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 0) $null $assembly/main/convertFoobars~anonymous|0) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) @@ -197,8 +198,8 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/bignum/utils/RadixCharsTable i32 (i32.const 3840)) - (global $~lib/rt/__rtti_base i32 (i32.const 5752)) - (global $~lib/heap/__heap_base i32 (i32.const 6052)) + (global $~lib/rt/__rtti_base i32 (i32.const 5784)) + (global $~lib/heap/__heap_base i32 (i32.const 6084)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -210,6 +211,7 @@ (export "rewrapFoobar" (func $assembly/test/__wrapper_rewrapFoobar)) (export "unwrapFoobar" (func $assembly/test/__wrapper_unwrapFoobar)) (export "stringOrNull" (func $assembly/test/__wrapper_stringOrNull)) + (export "stringAliasTest" (func $assembly/test/__wrapper_stringAliasTest)) (export "runTest" (func $assembly/test/runTest)) (start $start) (func $~lib/rt/stub/maybeGrowMemory (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) @@ -14528,7 +14530,7 @@ if i32.const 4816 i32.const 4912 - i32.const 733 + i32.const 688 i32.const 4 call $~lib/builtins/abort unreachable @@ -17409,7 +17411,111 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 296 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/stringAliasTest (; 296 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 5264 + call $~lib/string/String.__concat + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/test/__wrapper_stringAliasTest (; 297 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 5240 + call $~lib/nearEntry/decode<~lib/string/String> + local.tee $4 + call $assembly/test/stringAliasTest + local.set $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $6 + local.get $5 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $6 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $6 + local.get $5 + i32.const 0 + call $~lib/nearEntry/encode<~lib/string/String> + call $~lib/rt/stub/__release + end + local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $7 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $8 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 298 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -17440,7 +17546,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 297 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 299 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -17470,7 +17576,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 298 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 300 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -17514,7 +17620,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/model/FooBar#toJSON (; 299 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/FooBar#toJSON (; 301 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17528,7 +17634,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/model/Nullables#constructor (; 300 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#constructor (; 302 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -17549,7 +17655,7 @@ i32.store offset=8 local.get $0 ) - (func $assembly/model/Nullables#encode (; 301 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/Nullables#encode (; 303 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -17583,7 +17689,7 @@ local.get $3 local.get $0 i32.load - i32.const 5624 + i32.const 5240 call $~lib/nearEntry/encode<~lib/string/String> call $~lib/rt/stub/__release local.get $3 @@ -17595,7 +17701,7 @@ local.get $3 local.get $0 i32.load offset=8 - i32.const 5648 + i32.const 5680 call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> call $~lib/rt/stub/__release local.get $3 @@ -17608,7 +17714,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/model/Nullables#serialize (; 302 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#serialize (; 304 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17622,7 +17728,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/model/Nullables#decode (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/Nullables#decode (; 305 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -17631,11 +17737,11 @@ local.get $0 local.tee $2 local.get $1 - i32.const 5624 + i32.const 5240 call $~lib/nearEntry/Obj#has if (result i32) local.get $1 - i32.const 5624 + i32.const 5240 call $~lib/nearEntry/decode<~lib/string/String> else local.get $0 @@ -17671,11 +17777,11 @@ local.get $0 local.tee $2 local.get $1 - i32.const 5648 + i32.const 5680 call $~lib/nearEntry/Obj#has if (result i32) local.get $1 - i32.const 5648 + i32.const 5680 call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> else local.get $0 @@ -17695,7 +17801,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 304 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 306 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17849,7 +17955,7 @@ i32.const 2608 call $~lib/string/String.__concat local.tee $4 - i32.const 5688 + i32.const 5720 call $~lib/string/String.__concat local.tee $3 i32.const 2680 @@ -17901,7 +18007,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $assembly/test/runTest (; 305 ;) (type $FUNCSIG$v) + (func $assembly/test/runTest (; 307 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17932,7 +18038,7 @@ (local $27 i32) (local $28 i32) (local $29 i32) - i32.const 5240 + i32.const 5296 call $~lib/near-runtime-ts/logging/logging.log i32.const 0 call $assembly/model/FooBar#constructor @@ -17942,7 +18048,7 @@ i32.const 2 i32.const 2 i32.const 26 - i32.const 5288 + i32.const 5344 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $2 @@ -17988,7 +18094,7 @@ i32.store offset=36 local.get $0 local.tee $1 - i32.const 5312 + i32.const 5368 call $~lib/near-runtime-ts/base64/base64.decode local.set $3 local.get $1 @@ -18023,7 +18129,7 @@ i32.const 1 i32.const 2 i32.const 10 - i32.const 5400 + i32.const 5456 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $5 @@ -18033,7 +18139,7 @@ i32.const 1 i32.const 2 i32.const 10 - i32.const 5456 + i32.const 5512 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $6 @@ -18067,14 +18173,14 @@ local.get $0 i32.load offset=60 i32.const 0 - i32.const 5312 + i32.const 5368 call $~lib/near-runtime-ts/base64/base64.decode local.tee $1 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__set local.get $0 i32.load offset=60 i32.const 1 - i32.const 5312 + i32.const 5368 call $~lib/near-runtime-ts/base64/base64.decode local.tee $4 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__set @@ -18083,7 +18189,7 @@ i32.const 2 i32.const 3 i32.const 28 - i32.const 5480 + i32.const 5536 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain local.tee $7 @@ -18106,7 +18212,7 @@ i32.const 816 call $assembly/model/FooBar#encode local.set $8 - i32.const 5512 + i32.const 5568 local.get $8 call $~lib/assemblyscript-json/encoder/JSONEncoder#toString local.tee $3 @@ -18123,7 +18229,7 @@ i32.const 816 call $~lib/nearEntry/decode local.set $12 - i32.const 5544 + i32.const 5600 local.get $12 call $assembly/model/FooBar#toJSON local.tee $13 @@ -18138,8 +18244,8 @@ i32.eqz if i32.const 0 - i32.const 5576 - i32.const 161 + i32.const 5632 + i32.const 187 i32.const 2 call $~lib/builtins/abort unreachable @@ -18152,8 +18258,8 @@ i32.eqz if i32.const 0 - i32.const 5576 - i32.const 162 + i32.const 5632 + i32.const 188 i32.const 2 call $~lib/builtins/abort unreachable @@ -18170,8 +18276,8 @@ i32.eqz if i32.const 0 - i32.const 5576 - i32.const 163 + i32.const 5632 + i32.const 189 i32.const 2 call $~lib/builtins/abort unreachable @@ -18194,8 +18300,8 @@ i32.eqz if i32.const 0 - i32.const 5576 - i32.const 164 + i32.const 5632 + i32.const 190 i32.const 2 call $~lib/builtins/abort unreachable @@ -18208,13 +18314,13 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $22 - i32.const 5368 + i32.const 5424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5576 - i32.const 165 + i32.const 5632 + i32.const 191 i32.const 2 call $~lib/builtins/abort unreachable @@ -18231,8 +18337,8 @@ i32.eqz if i32.const 0 - i32.const 5576 - i32.const 166 + i32.const 5632 + i32.const 192 i32.const 2 call $~lib/builtins/abort unreachable @@ -18245,8 +18351,8 @@ i32.eqz if i32.const 0 - i32.const 5576 - i32.const 167 + i32.const 5632 + i32.const 193 i32.const 2 call $~lib/builtins/abort unreachable @@ -18269,8 +18375,8 @@ i32.eqz if i32.const 0 - i32.const 5576 - i32.const 170 + i32.const 5632 + i32.const 196 i32.const 2 call $~lib/builtins/abort unreachable @@ -18307,8 +18413,8 @@ i32.eqz if i32.const 0 - i32.const 5576 - i32.const 171 + i32.const 5632 + i32.const 197 i32.const 2 call $~lib/builtins/abort unreachable @@ -18320,13 +18426,13 @@ i32.eqz if i32.const 0 - i32.const 5576 - i32.const 172 + i32.const 5632 + i32.const 198 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 5728 + i32.const 5760 call $~lib/near-runtime-ts/logging/logging.log local.get $0 call $~lib/rt/stub/__release @@ -18383,9 +18489,9 @@ local.get $26 call $~lib/rt/stub/__release ) - (func $start (; 306 ;) (type $FUNCSIG$v) + (func $start (; 308 ;) (type $FUNCSIG$v) call $start:~lib/rt/index-stub ) - (func $null (; 307 ;) (type $FUNCSIG$v) + (func $null (; 309 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/near-bindgen/test.js b/tests/near-bindgen/test.js index 49e95b933e..f11dba56bd 100644 --- a/tests/near-bindgen/test.js +++ b/tests/near-bindgen/test.js @@ -144,7 +144,8 @@ async function loadModule(path) { {"foobars":[[{"foo":123,"bar":1,"u64Val":"4294967297","i64Val":"-64","flag":false,"baz":"123","uint8array":null,"arr":null,"u32Arr":null,"i32Arr":null,"u128Val":null,"uint8arrays":null, "u64Arr":null, u64_zero:"0"}]]}); assert.deepEqual(await module.unwrapFoobar({ container: { foobars: [[{ foo: 123 }]] } }), {"foo":123,"bar":1,"u64Val":"4294967297","i64Val":"-64","flag":false,"baz":"123","uint8array":null,"arr":null,"u32Arr":null,"i32Arr":null,"u128Val":null,"uint8arrays":null, u64Arr: null, u64_zero:"0"}); - assert.deepEqual(await module.stringOrNull(), null) + assert.deepEqual(await module.stringOrNull(), null); + assert.deepStrictEqual(await module.stringAliasTest({str:"Hello"}), "Hello World"); })().catch(e => { console.error('Error during test execution:', e); if (e.code == 'ERR_ASSERTION') { From 1bac2ff4d52ef66be32179578545aaa2cd5f30ad Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Sun, 8 Sep 2019 17:35:43 -0400 Subject: [PATCH 20/24] Return to old API Issue was that compiler wouldn't allow `Obj | Uint8array` so to get around it added a type parameter that has a default. --- bindings/assembly/nearEntry.ts | 7 +- bindings/dist/transformerBundle.js | 9605 ++++++++++++++++++++++++++- bindings/src/index.ts | 18 +- tests/near-bindgen/assembly/test.ts | 5 +- 4 files changed, 9624 insertions(+), 11 deletions(-) diff --git a/bindings/assembly/nearEntry.ts b/bindings/assembly/nearEntry.ts index 70a89abe51..bb8228da39 100644 --- a/bindings/assembly/nearEntry.ts +++ b/bindings/assembly/nearEntry.ts @@ -328,7 +328,7 @@ function decodeArray(val: Value, name: string): Array { let res = new Array(); let arr = (val)._arr; for (let i: i32 = 0; i < arr.length; i++){ - let item: T = decode(arr[i]); + let item: T = decode(arr[i]); res.push(item); } return res; @@ -337,7 +337,8 @@ function decodeArray(val: Value, name: string): Array { //@ts-ignore @global -function decode(buffer: Value, name: string = ""): T { +function decode(buf: V, name: string = ""): T { + let buffer = (buf instanceof Uint8Array ? JSON.parse(buf) : buf); let val: Value; if (buffer instanceof Obj && name != ""){ const obj: Obj = buffer; @@ -399,5 +400,5 @@ function decode(buffer: Value, name: string = ""): T { assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null") value = instantiate(); //@ts-ignore - return value.decode(val); + return value.decode(val); } diff --git a/bindings/dist/transformerBundle.js b/bindings/dist/transformerBundle.js index 4c7901e779..7af6e42403 100644 --- a/bindings/dist/transformerBundle.js +++ b/bindings/dist/transformerBundle.js @@ -1 +1,9604 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.transformer=t():e.transformer=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=6)}([function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]="SOURCE",e[e.NAMEDTYPE=1]="NAMEDTYPE",e[e.FUNCTIONTYPE=2]="FUNCTIONTYPE",e[e.TYPENAME=3]="TYPENAME",e[e.TYPEPARAMETER=4]="TYPEPARAMETER",e[e.PARAMETER=5]="PARAMETER",e[e.IDENTIFIER=6]="IDENTIFIER",e[e.ASSERTION=7]="ASSERTION",e[e.BINARY=8]="BINARY",e[e.CALL=9]="CALL",e[e.CLASS=10]="CLASS",e[e.COMMA=11]="COMMA",e[e.ELEMENTACCESS=12]="ELEMENTACCESS",e[e.FALSE=13]="FALSE",e[e.FUNCTION=14]="FUNCTION",e[e.INSTANCEOF=15]="INSTANCEOF",e[e.LITERAL=16]="LITERAL",e[e.NEW=17]="NEW",e[e.NULL=18]="NULL",e[e.PARENTHESIZED=19]="PARENTHESIZED",e[e.PROPERTYACCESS=20]="PROPERTYACCESS",e[e.TERNARY=21]="TERNARY",e[e.SUPER=22]="SUPER",e[e.THIS=23]="THIS",e[e.TRUE=24]="TRUE",e[e.CONSTRUCTOR=25]="CONSTRUCTOR",e[e.UNARYPOSTFIX=26]="UNARYPOSTFIX",e[e.UNARYPREFIX=27]="UNARYPREFIX",e[e.BLOCK=28]="BLOCK",e[e.BREAK=29]="BREAK",e[e.CONTINUE=30]="CONTINUE",e[e.DO=31]="DO",e[e.EMPTY=32]="EMPTY",e[e.EXPORT=33]="EXPORT",e[e.EXPORTDEFAULT=34]="EXPORTDEFAULT",e[e.EXPORTIMPORT=35]="EXPORTIMPORT",e[e.EXPRESSION=36]="EXPRESSION",e[e.FOR=37]="FOR",e[e.IF=38]="IF",e[e.IMPORT=39]="IMPORT",e[e.RETURN=40]="RETURN",e[e.SWITCH=41]="SWITCH",e[e.THROW=42]="THROW",e[e.TRY=43]="TRY",e[e.VARIABLE=44]="VARIABLE",e[e.VOID=45]="VOID",e[e.WHILE=46]="WHILE",e[e.CLASSDECLARATION=47]="CLASSDECLARATION",e[e.ENUMDECLARATION=48]="ENUMDECLARATION",e[e.ENUMVALUEDECLARATION=49]="ENUMVALUEDECLARATION",e[e.FIELDDECLARATION=50]="FIELDDECLARATION",e[e.FUNCTIONDECLARATION=51]="FUNCTIONDECLARATION",e[e.IMPORTDECLARATION=52]="IMPORTDECLARATION",e[e.INDEXSIGNATUREDECLARATION=53]="INDEXSIGNATUREDECLARATION",e[e.INTERFACEDECLARATION=54]="INTERFACEDECLARATION",e[e.METHODDECLARATION=55]="METHODDECLARATION",e[e.NAMESPACEDECLARATION=56]="NAMESPACEDECLARATION",e[e.TYPEDECLARATION=57]="TYPEDECLARATION",e[e.VARIABLEDECLARATION=58]="VARIABLEDECLARATION",e[e.DECORATOR=59]="DECORATOR",e[e.EXPORTMEMBER=60]="EXPORTMEMBER",e[e.SWITCHCASE=61]="SWITCHCASE",e[e.COMMENT=62]="COMMENT"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName("",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text="",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new Q;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(".")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]="DEFAULT",e[e.OPTIONAL=1]="OPTIONAL",e[e.REST=2]="REST"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if("builtin"==t)return E.BUILTIN;break;case 101:if("external"==t)return E.EXTERNAL;break;case 103:if("global"==t)return E.GLOBAL;break;case 105:if("inline"==t)return E.INLINE;break;case 108:if("lazy"==t)return E.LAZY;break;case 111:if("operator"==t)return E.OPERATOR;break;case 115:if("sealed"==t)return E.SEALED;break;case 117:if("unmanaged"==t)return E.UNMANAGED;if("unsafe"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),"operator"==t)switch(i.charCodeAt(0)){case 98:if("binary"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case"prefix":return E.OPERATOR_PREFIX;case"postfix":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]="CUSTOM",e[e.GLOBAL=1]="GLOBAL",e[e.OPERATOR=2]="OPERATOR",e[e.OPERATOR_BINARY=3]="OPERATOR_BINARY",e[e.OPERATOR_PREFIX=4]="OPERATOR_PREFIX",e[e.OPERATOR_POSTFIX=5]="OPERATOR_POSTFIX",e[e.UNMANAGED=6]="UNMANAGED",e[e.SEALED=7]="SEALED",e[e.INLINE=8]="INLINE",e[e.EXTERNAL=9]="EXTERNAL",e[e.BUILTIN=10]="BUILTIN",e[e.LAZY=11]="LAZY",e[e.UNSAFE=12]="UNSAFE"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]="LINE",e[e.TRIPLE=1]="TRIPLE",e[e.BLOCK=2]="BLOCK"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]="FLOAT",e[e.INTEGER=1]="INTEGER",e[e.STRING=2]="STRING",e[e.REGEXP=3]="REGEXP",e[e.ARRAY=4]="ARRAY",e[e.OBJECT=5]="OBJECT"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]="PREFIX",e[e.AS=1]="AS",e[e.NONNULL=2]="NONNULL"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,"typeArgumentsRange",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"argumentsRange",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text="constructor",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text="null",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text="super",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text="this",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text="true",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var Q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text="false",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=Q;var j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=j;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(j);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(j);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]="USER",e[e.USER_ENTRY=1]="USER_ENTRY",e[e.LIBRARY=2]="LIBRARY",e[e.LIBRARY_ENTRY=3]="LIBRARY_ENTRY"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i";case s.LESSTHAN_EQUALS:return"<=";case s.GREATERTHAN_EQUALS:return">=";case s.EQUALS_EQUALS:return"==";case s.EXCLAMATION_EQUALS:return"!=";case s.EQUALS_EQUALS_EQUALS:return"===";case s.EXCLAMATION_EQUALS_EQUALS:return"!==";case s.PLUS:return"+";case s.MINUS:return"-";case s.ASTERISK_ASTERISK:return"**";case s.ASTERISK:return"*";case s.SLASH:return"/";case s.PERCENT:return"%";case s.PLUS_PLUS:return"++";case s.MINUS_MINUS:return"--";case s.LESSTHAN_LESSTHAN:return"<<";case s.GREATERTHAN_GREATERTHAN:return">>";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case s.AMPERSAND:return"&";case s.BAR:return"|";case s.CARET:return"^";case s.EXCLAMATION:return"!";case s.TILDE:return"~";case s.AMPERSAND_AMPERSAND:return"&&";case s.BAR_BAR:return"||";case s.EQUALS:return"=";case s.PLUS_EQUALS:return"+=";case s.MINUS_EQUALS:return"-=";case s.ASTERISK_EQUALS:return"*=";case s.ASTERISK_ASTERISK_EQUALS:return"**=";case s.SLASH_EQUALS:return"/=";case s.PERCENT_EQUALS:return"%=";case s.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case s.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case s.AMPERSAND_EQUALS:return"&=";case s.BAR_EQUALS:return"|=";case s.CARET_EQUALS:return"^=";default:return assert(!1),""}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error("source mismatch");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes("@nearfile")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},t.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return"void"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),s=p(n).includes("null"),a=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+a+"(): void {"),i.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==p(n)?this.sb.push(" let result: "+p(n)+" = "+a+"("):this.sb.push(" "+a+"("),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==p(n)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+r+">() || isNullable<"+r+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+r+">(encoder, result"+(s?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+a+" as "+a+" }\n")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+="<"+e.typeParameters.map(p).join(", ")+">"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf("}")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var r=t.typeName(n);i+="\n static decode(json: Uint8Array): "+r+" {\n let value = instantiate<"+r+">(); // Allocate without constructor\n value.decode(JSON.parse(json));\n return value;\n }\n\n decode(obj: Obj): "+r+" {\n "+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,"this."+t+' = obj.has("'+t+'") ? ')+": this."+t+";"})}(n).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return"encode<"+t+">(encoder, this."+i+', "'+i+'");'})}(n).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return i});return this.sb.concat(i).join("\n")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=""),t+"decode<"+p(e.type)+'>(obj, "'+p(e.name)+'")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf("\n")).includes("out");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t("out/"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?"":"./")+n.normalizedPath,h(n))})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(t.Feature||(t.Feature={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(t.Target||(t.Target={}))},function(e,t,i){"use strict";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),""}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE="",t.COLOR_YELLOW="",t.COLOR_RED="",t.COLOR_RESET="",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace("{0}",n)),null!=s&&(o=o.replace("{1}",s)),null!=a&&(o=o.replace("{2}",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:"."}function a(e){var t=e.length;if(t<=1){if(0==t)return".";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return"."}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith("std/")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=" ",r=" ",s=" ";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){"use strict";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i")}e.isNullable&&n.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?"((":"(");var n=e.explicitThisType;n&&(i.push("this: "),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(", "),this.serializeParameter(r[0]);for(var a=1;a "),this.visitTypeNode(o)):i.push(") => void"),t&&i.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(" extends "),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push("="),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push("[");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(" as "),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(" "),t.push(a.operatorTokenToString(e.operator)),t.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push("<"),this.visitTypeNode(i[0]);for(var r=1;r(")}}else t.push("(");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push("\\0"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\b");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\t");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\n");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\v");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\f");break;case 13:s>n&&i.push(e.substring(n,s)),i.push("\\r"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push("\\'"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push("\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push("/"),t.push(e.pattern),t.push("/"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push("("),this.visitNode(e.expression),t.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(" ? "),this.visitNode(e.ifThen),t.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push("\n"):t.push(";\n")}else t.push(";\n")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push("{\n");for(var r=++this.indentLevel,a=0;a")}var _=e.extendsType;_&&(u.push(" extends "),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(" implements "),this.visitTypeNode(p[0]);for(a=1;a")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push("(");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push("this: "),this.visitTypeNode(_)),c){_&&t.push(", "),this.serializeParameter(u[0]);for(o=1;o "),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(" => "),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(")"):(t.push("): "),this.visitTypeNode(h)),p&&(t.push(" "),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push("if ("),this.visitNode(e.condition),t.push(") ");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(";\n");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(" else "):t.push("else "),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(" as "),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push("import ");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push("{\n");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o")}var u=e.extendsType;u&&(a.push(" extends "),this.visitTypeNode(u)),a.push(" {\n");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n")}}r.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push("!"),t&&(i.push(": "),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(" = "),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name="UnreachableError",r.prototype.message="unreachable",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name="AssertionError",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return"number"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return"object"==typeof e||"string"==typeof e},t.isFunction=function(e){return"function"==typeof e},t.isString=function(e){return"string"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return A;if("number"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error("division by zero");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&"function"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])}); \ No newline at end of file +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["transformer"] = factory(); + else + root["transformer"] = factory(); +})(typeof self !== 'undefined' ? self : this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "../node_modules/long/src/long.js": +/*!****************************************!*\ + !*** ../node_modules/long/src/long.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = Long; + +/** + * wasm optimizations, to do native i64 multiplication and divide + */ +var wasm = null; + +try { + wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([ + 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11 + ])), {}).exports; +} catch (e) { + // no wasm support :( +} + +/** + * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. + * See the from* functions below for more convenient ways of constructing Longs. + * @exports Long + * @class A Long class for representing a 64 bit two's-complement integer value. + * @param {number} low The low (signed) 32 bits of the long + * @param {number} high The high (signed) 32 bits of the long + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @constructor + */ +function Long(low, high, unsigned) { + + /** + * The low 32 bits as a signed value. + * @type {number} + */ + this.low = low | 0; + + /** + * The high 32 bits as a signed value. + * @type {number} + */ + this.high = high | 0; + + /** + * Whether unsigned or not. + * @type {boolean} + */ + this.unsigned = !!unsigned; +} + +// The internal representation of a long is the two given signed, 32-bit values. +// We use 32-bit pieces because these are the size of integers on which +// Javascript performs bit-operations. For operations like addition and +// multiplication, we split each number into 16 bit pieces, which can easily be +// multiplied within Javascript's floating-point representation without overflow +// or change in sign. +// +// In the algorithms below, we frequently reduce the negative case to the +// positive case by negating the input(s) and then post-processing the result. +// Note that we must ALWAYS check specially whether those values are MIN_VALUE +// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as +// a positive number, it overflows back into a negative). Not handling this +// case would often result in infinite recursion. +// +// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from* +// methods on which they depend. + +/** + * An indicator used to reliably determine if an object is a Long or not. + * @type {boolean} + * @const + * @private + */ +Long.prototype.__isLong__; + +Object.defineProperty(Long.prototype, "__isLong__", { value: true }); + +/** + * @function + * @param {*} obj Object + * @returns {boolean} + * @inner + */ +function isLong(obj) { + return (obj && obj["__isLong__"]) === true; +} + +/** + * Tests if the specified object is a Long. + * @function + * @param {*} obj Object + * @returns {boolean} + */ +Long.isLong = isLong; + +/** + * A cache of the Long representations of small integer values. + * @type {!Object} + * @inner + */ +var INT_CACHE = {}; + +/** + * A cache of the Long representations of small unsigned integer values. + * @type {!Object} + * @inner + */ +var UINT_CACHE = {}; + +/** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromInt(value, unsigned) { + var obj, cachedObj, cache; + if (unsigned) { + value >>>= 0; + if (cache = (0 <= value && value < 256)) { + cachedObj = UINT_CACHE[value]; + if (cachedObj) + return cachedObj; + } + obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true); + if (cache) + UINT_CACHE[value] = obj; + return obj; + } else { + value |= 0; + if (cache = (-128 <= value && value < 128)) { + cachedObj = INT_CACHE[value]; + if (cachedObj) + return cachedObj; + } + obj = fromBits(value, value < 0 ? -1 : 0, false); + if (cache) + INT_CACHE[value] = obj; + return obj; + } +} + +/** + * Returns a Long representing the given 32 bit integer value. + * @function + * @param {number} value The 32 bit integer in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromInt = fromInt; + +/** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromNumber(value, unsigned) { + if (isNaN(value)) + return unsigned ? UZERO : ZERO; + if (unsigned) { + if (value < 0) + return UZERO; + if (value >= TWO_PWR_64_DBL) + return MAX_UNSIGNED_VALUE; + } else { + if (value <= -TWO_PWR_63_DBL) + return MIN_VALUE; + if (value + 1 >= TWO_PWR_63_DBL) + return MAX_VALUE; + } + if (value < 0) + return fromNumber(-value, unsigned).neg(); + return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); +} + +/** + * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. + * @function + * @param {number} value The number in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromNumber = fromNumber; + +/** + * @param {number} lowBits + * @param {number} highBits + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromBits(lowBits, highBits, unsigned) { + return new Long(lowBits, highBits, unsigned); +} + +/** + * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is + * assumed to use 32 bits. + * @function + * @param {number} lowBits The low 32 bits + * @param {number} highBits The high 32 bits + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromBits = fromBits; + +/** + * @function + * @param {number} base + * @param {number} exponent + * @returns {number} + * @inner + */ +var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) + +/** + * @param {string} str + * @param {(boolean|number)=} unsigned + * @param {number=} radix + * @returns {!Long} + * @inner + */ +function fromString(str, unsigned, radix) { + if (str.length === 0) + throw Error('empty string'); + if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") + return ZERO; + if (typeof unsigned === 'number') { + // For goog.math.long compatibility + radix = unsigned, + unsigned = false; + } else { + unsigned = !! unsigned; + } + radix = radix || 10; + if (radix < 2 || 36 < radix) + throw RangeError('radix'); + + var p; + if ((p = str.indexOf('-')) > 0) + throw Error('interior hyphen'); + else if (p === 0) { + return fromString(str.substring(1), unsigned, radix).neg(); + } + + // Do several (8) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = fromNumber(pow_dbl(radix, 8)); + + var result = ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i), + value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = fromNumber(pow_dbl(radix, size)); + result = result.mul(power).add(fromNumber(value)); + } else { + result = result.mul(radixToPower); + result = result.add(fromNumber(value)); + } + } + result.unsigned = unsigned; + return result; +} + +/** + * Returns a Long representation of the given string, written using the specified radix. + * @function + * @param {string} str The textual representation of the Long + * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed + * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 + * @returns {!Long} The corresponding Long value + */ +Long.fromString = fromString; + +/** + * @function + * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromValue(val, unsigned) { + if (typeof val === 'number') + return fromNumber(val, unsigned); + if (typeof val === 'string') + return fromString(val, unsigned); + // Throws for non-objects, converts non-instanceof Long: + return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned); +} + +/** + * Converts the specified value to a Long using the appropriate from* function for its type. + * @function + * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} + */ +Long.fromValue = fromValue; + +// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be +// no runtime penalty for these. + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_16_DBL = 1 << 16; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_24_DBL = 1 << 24; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; + +/** + * @type {!Long} + * @const + * @inner + */ +var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); + +/** + * @type {!Long} + * @inner + */ +var ZERO = fromInt(0); + +/** + * Signed zero. + * @type {!Long} + */ +Long.ZERO = ZERO; + +/** + * @type {!Long} + * @inner + */ +var UZERO = fromInt(0, true); + +/** + * Unsigned zero. + * @type {!Long} + */ +Long.UZERO = UZERO; + +/** + * @type {!Long} + * @inner + */ +var ONE = fromInt(1); + +/** + * Signed one. + * @type {!Long} + */ +Long.ONE = ONE; + +/** + * @type {!Long} + * @inner + */ +var UONE = fromInt(1, true); + +/** + * Unsigned one. + * @type {!Long} + */ +Long.UONE = UONE; + +/** + * @type {!Long} + * @inner + */ +var NEG_ONE = fromInt(-1); + +/** + * Signed negative one. + * @type {!Long} + */ +Long.NEG_ONE = NEG_ONE; + +/** + * @type {!Long} + * @inner + */ +var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); + +/** + * Maximum signed value. + * @type {!Long} + */ +Long.MAX_VALUE = MAX_VALUE; + +/** + * @type {!Long} + * @inner + */ +var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); + +/** + * Maximum unsigned value. + * @type {!Long} + */ +Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; + +/** + * @type {!Long} + * @inner + */ +var MIN_VALUE = fromBits(0, 0x80000000|0, false); + +/** + * Minimum signed value. + * @type {!Long} + */ +Long.MIN_VALUE = MIN_VALUE; + +/** + * @alias Long.prototype + * @inner + */ +var LongPrototype = Long.prototype; + +/** + * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. + * @returns {number} + */ +LongPrototype.toInt = function toInt() { + return this.unsigned ? this.low >>> 0 : this.low; +}; + +/** + * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). + * @returns {number} + */ +LongPrototype.toNumber = function toNumber() { + if (this.unsigned) + return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); + return this.high * TWO_PWR_32_DBL + (this.low >>> 0); +}; + +/** + * Converts the Long to a string written in the specified radix. + * @param {number=} radix Radix (2-36), defaults to 10 + * @returns {string} + * @override + * @throws {RangeError} If `radix` is out of range + */ +LongPrototype.toString = function toString(radix) { + radix = radix || 10; + if (radix < 2 || 36 < radix) + throw RangeError('radix'); + if (this.isZero()) + return '0'; + if (this.isNegative()) { // Unsigned Longs are never negative + if (this.eq(MIN_VALUE)) { + // We need to change the Long value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixLong = fromNumber(radix), + div = this.div(radixLong), + rem1 = div.mul(radixLong).sub(this); + return div.toString(radix) + rem1.toInt().toString(radix); + } else + return '-' + this.neg().toString(radix); + } + + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), + rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower), + intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, + digits = intval.toString(radix); + rem = remDiv; + if (rem.isZero()) + return digits + result; + else { + while (digits.length < 6) + digits = '0' + digits; + result = '' + digits + result; + } + } +}; + +/** + * Gets the high 32 bits as a signed integer. + * @returns {number} Signed high bits + */ +LongPrototype.getHighBits = function getHighBits() { + return this.high; +}; + +/** + * Gets the high 32 bits as an unsigned integer. + * @returns {number} Unsigned high bits + */ +LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { + return this.high >>> 0; +}; + +/** + * Gets the low 32 bits as a signed integer. + * @returns {number} Signed low bits + */ +LongPrototype.getLowBits = function getLowBits() { + return this.low; +}; + +/** + * Gets the low 32 bits as an unsigned integer. + * @returns {number} Unsigned low bits + */ +LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { + return this.low >>> 0; +}; + +/** + * Gets the number of bits needed to represent the absolute value of this Long. + * @returns {number} + */ +LongPrototype.getNumBitsAbs = function getNumBitsAbs() { + if (this.isNegative()) // Unsigned Longs are never negative + return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); + var val = this.high != 0 ? this.high : this.low; + for (var bit = 31; bit > 0; bit--) + if ((val & (1 << bit)) != 0) + break; + return this.high != 0 ? bit + 33 : bit + 1; +}; + +/** + * Tests if this Long's value equals zero. + * @returns {boolean} + */ +LongPrototype.isZero = function isZero() { + return this.high === 0 && this.low === 0; +}; + +/** + * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}. + * @returns {boolean} + */ +LongPrototype.eqz = LongPrototype.isZero; + +/** + * Tests if this Long's value is negative. + * @returns {boolean} + */ +LongPrototype.isNegative = function isNegative() { + return !this.unsigned && this.high < 0; +}; + +/** + * Tests if this Long's value is positive. + * @returns {boolean} + */ +LongPrototype.isPositive = function isPositive() { + return this.unsigned || this.high >= 0; +}; + +/** + * Tests if this Long's value is odd. + * @returns {boolean} + */ +LongPrototype.isOdd = function isOdd() { + return (this.low & 1) === 1; +}; + +/** + * Tests if this Long's value is even. + * @returns {boolean} + */ +LongPrototype.isEven = function isEven() { + return (this.low & 1) === 0; +}; + +/** + * Tests if this Long's value equals the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.equals = function equals(other) { + if (!isLong(other)) + other = fromValue(other); + if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) + return false; + return this.high === other.high && this.low === other.low; +}; + +/** + * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.eq = LongPrototype.equals; + +/** + * Tests if this Long's value differs from the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.notEquals = function notEquals(other) { + return !this.eq(/* validates */ other); +}; + +/** + * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.neq = LongPrototype.notEquals; + +/** + * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.ne = LongPrototype.notEquals; + +/** + * Tests if this Long's value is less than the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lessThan = function lessThan(other) { + return this.comp(/* validates */ other) < 0; +}; + +/** + * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lt = LongPrototype.lessThan; + +/** + * Tests if this Long's value is less than or equal the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { + return this.comp(/* validates */ other) <= 0; +}; + +/** + * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lte = LongPrototype.lessThanOrEqual; + +/** + * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.le = LongPrototype.lessThanOrEqual; + +/** + * Tests if this Long's value is greater than the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.greaterThan = function greaterThan(other) { + return this.comp(/* validates */ other) > 0; +}; + +/** + * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.gt = LongPrototype.greaterThan; + +/** + * Tests if this Long's value is greater than or equal the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { + return this.comp(/* validates */ other) >= 0; +}; + +/** + * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.gte = LongPrototype.greaterThanOrEqual; + +/** + * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.ge = LongPrototype.greaterThanOrEqual; + +/** + * Compares this Long's value with the specified's. + * @param {!Long|number|string} other Other value + * @returns {number} 0 if they are the same, 1 if the this is greater and -1 + * if the given one is greater + */ +LongPrototype.compare = function compare(other) { + if (!isLong(other)) + other = fromValue(other); + if (this.eq(other)) + return 0; + var thisNeg = this.isNegative(), + otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) + return -1; + if (!thisNeg && otherNeg) + return 1; + // At this point the sign bits are the same + if (!this.unsigned) + return this.sub(other).isNegative() ? -1 : 1; + // Both are positive if at least one is unsigned + return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1; +}; + +/** + * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}. + * @function + * @param {!Long|number|string} other Other value + * @returns {number} 0 if they are the same, 1 if the this is greater and -1 + * if the given one is greater + */ +LongPrototype.comp = LongPrototype.compare; + +/** + * Negates this Long's value. + * @returns {!Long} Negated Long + */ +LongPrototype.negate = function negate() { + if (!this.unsigned && this.eq(MIN_VALUE)) + return MIN_VALUE; + return this.not().add(ONE); +}; + +/** + * Negates this Long's value. This is an alias of {@link Long#negate}. + * @function + * @returns {!Long} Negated Long + */ +LongPrototype.neg = LongPrototype.negate; + +/** + * Returns the sum of this and the specified Long. + * @param {!Long|number|string} addend Addend + * @returns {!Long} Sum + */ +LongPrototype.add = function add(addend) { + if (!isLong(addend)) + addend = fromValue(addend); + + // Divide each number into 4 chunks of 16 bits, and then sum the chunks. + + var a48 = this.high >>> 16; + var a32 = this.high & 0xFFFF; + var a16 = this.low >>> 16; + var a00 = this.low & 0xFFFF; + + var b48 = addend.high >>> 16; + var b32 = addend.high & 0xFFFF; + var b16 = addend.low >>> 16; + var b00 = addend.low & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); +}; + +/** + * Returns the difference of this and the specified Long. + * @param {!Long|number|string} subtrahend Subtrahend + * @returns {!Long} Difference + */ +LongPrototype.subtract = function subtract(subtrahend) { + if (!isLong(subtrahend)) + subtrahend = fromValue(subtrahend); + return this.add(subtrahend.neg()); +}; + +/** + * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}. + * @function + * @param {!Long|number|string} subtrahend Subtrahend + * @returns {!Long} Difference + */ +LongPrototype.sub = LongPrototype.subtract; + +/** + * Returns the product of this and the specified Long. + * @param {!Long|number|string} multiplier Multiplier + * @returns {!Long} Product + */ +LongPrototype.multiply = function multiply(multiplier) { + if (this.isZero()) + return ZERO; + if (!isLong(multiplier)) + multiplier = fromValue(multiplier); + + // use wasm support if present + if (wasm) { + var low = wasm.mul(this.low, + this.high, + multiplier.low, + multiplier.high); + return fromBits(low, wasm.get_high(), this.unsigned); + } + + if (multiplier.isZero()) + return ZERO; + if (this.eq(MIN_VALUE)) + return multiplier.isOdd() ? MIN_VALUE : ZERO; + if (multiplier.eq(MIN_VALUE)) + return this.isOdd() ? MIN_VALUE : ZERO; + + if (this.isNegative()) { + if (multiplier.isNegative()) + return this.neg().mul(multiplier.neg()); + else + return this.neg().mul(multiplier).neg(); + } else if (multiplier.isNegative()) + return this.mul(multiplier.neg()).neg(); + + // If both longs are small, use float multiplication + if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) + return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); + + // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. + + var a48 = this.high >>> 16; + var a32 = this.high & 0xFFFF; + var a16 = this.low >>> 16; + var a00 = this.low & 0xFFFF; + + var b48 = multiplier.high >>> 16; + var b32 = multiplier.high & 0xFFFF; + var b16 = multiplier.low >>> 16; + var b00 = multiplier.low & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); +}; + +/** + * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}. + * @function + * @param {!Long|number|string} multiplier Multiplier + * @returns {!Long} Product + */ +LongPrototype.mul = LongPrototype.multiply; + +/** + * Returns this Long divided by the specified. The result is signed if this Long is signed or + * unsigned if this Long is unsigned. + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Quotient + */ +LongPrototype.divide = function divide(divisor) { + if (!isLong(divisor)) + divisor = fromValue(divisor); + if (divisor.isZero()) + throw Error('division by zero'); + + // use wasm support if present + if (wasm) { + // guard against signed division overflow: the largest + // negative number / -1 would be 1 larger than the largest + // positive number, due to two's complement. + if (!this.unsigned && + this.high === -0x80000000 && + divisor.low === -1 && divisor.high === -1) { + // be consistent with non-wasm code path + return this; + } + var low = (this.unsigned ? wasm.div_u : wasm.div_s)( + this.low, + this.high, + divisor.low, + divisor.high + ); + return fromBits(low, wasm.get_high(), this.unsigned); + } + + if (this.isZero()) + return this.unsigned ? UZERO : ZERO; + var approx, rem, res; + if (!this.unsigned) { + // This section is only relevant for signed longs and is derived from the + // closure library as a whole. + if (this.eq(MIN_VALUE)) { + if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) + return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + else if (divisor.eq(MIN_VALUE)) + return ONE; + else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shr(1); + approx = halfThis.div(divisor).shl(1); + if (approx.eq(ZERO)) { + return divisor.isNegative() ? ONE : NEG_ONE; + } else { + rem = this.sub(divisor.mul(approx)); + res = approx.add(rem.div(divisor)); + return res; + } + } + } else if (divisor.eq(MIN_VALUE)) + return this.unsigned ? UZERO : ZERO; + if (this.isNegative()) { + if (divisor.isNegative()) + return this.neg().div(divisor.neg()); + return this.neg().div(divisor).neg(); + } else if (divisor.isNegative()) + return this.div(divisor.neg()).neg(); + res = ZERO; + } else { + // The algorithm below has not been made for unsigned longs. It's therefore + // required to take special care of the MSB prior to running it. + if (!divisor.unsigned) + divisor = divisor.toUnsigned(); + if (divisor.gt(this)) + return UZERO; + if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true + return UONE; + res = UZERO; + } + + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + rem = this; + while (rem.gte(divisor)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); + + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2), + delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), + + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + approxRes = fromNumber(approx), + approxRem = approxRes.mul(divisor); + while (approxRem.isNegative() || approxRem.gt(rem)) { + approx -= delta; + approxRes = fromNumber(approx, this.unsigned); + approxRem = approxRes.mul(divisor); + } + + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) + approxRes = ONE; + + res = res.add(approxRes); + rem = rem.sub(approxRem); + } + return res; +}; + +/** + * Returns this Long divided by the specified. This is an alias of {@link Long#divide}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Quotient + */ +LongPrototype.div = LongPrototype.divide; + +/** + * Returns this Long modulo the specified. + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.modulo = function modulo(divisor) { + if (!isLong(divisor)) + divisor = fromValue(divisor); + + // use wasm support if present + if (wasm) { + var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)( + this.low, + this.high, + divisor.low, + divisor.high + ); + return fromBits(low, wasm.get_high(), this.unsigned); + } + + return this.sub(this.div(divisor).mul(divisor)); +}; + +/** + * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.mod = LongPrototype.modulo; + +/** + * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.rem = LongPrototype.modulo; + +/** + * Returns the bitwise NOT of this Long. + * @returns {!Long} + */ +LongPrototype.not = function not() { + return fromBits(~this.low, ~this.high, this.unsigned); +}; + +/** + * Returns the bitwise AND of this Long and the specified. + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.and = function and(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low & other.low, this.high & other.high, this.unsigned); +}; + +/** + * Returns the bitwise OR of this Long and the specified. + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.or = function or(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low | other.low, this.high | other.high, this.unsigned); +}; + +/** + * Returns the bitwise XOR of this Long and the given one. + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.xor = function xor(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); +}; + +/** + * Returns this Long with bits shifted to the left by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftLeft = function shiftLeft(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + if ((numBits &= 63) === 0) + return this; + else if (numBits < 32) + return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); + else + return fromBits(0, this.low << (numBits - 32), this.unsigned); +}; + +/** + * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shl = LongPrototype.shiftLeft; + +/** + * Returns this Long with bits arithmetically shifted to the right by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftRight = function shiftRight(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + if ((numBits &= 63) === 0) + return this; + else if (numBits < 32) + return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); + else + return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); +}; + +/** + * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shr = LongPrototype.shiftRight; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + numBits &= 63; + if (numBits === 0) + return this; + else { + var high = this.high; + if (numBits < 32) { + var low = this.low; + return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); + } else if (numBits === 32) + return fromBits(high, 0, this.unsigned); + else + return fromBits(high >>> (numBits - 32), 0, this.unsigned); + } +}; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shru = LongPrototype.shiftRightUnsigned; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; + +/** + * Converts this Long to signed. + * @returns {!Long} Signed long + */ +LongPrototype.toSigned = function toSigned() { + if (!this.unsigned) + return this; + return fromBits(this.low, this.high, false); +}; + +/** + * Converts this Long to unsigned. + * @returns {!Long} Unsigned long + */ +LongPrototype.toUnsigned = function toUnsigned() { + if (this.unsigned) + return this; + return fromBits(this.low, this.high, true); +}; + +/** + * Converts this Long to its byte representation. + * @param {boolean=} le Whether little or big endian, defaults to big endian + * @returns {!Array.} Byte representation + */ +LongPrototype.toBytes = function toBytes(le) { + return le ? this.toBytesLE() : this.toBytesBE(); +}; + +/** + * Converts this Long to its little endian byte representation. + * @returns {!Array.} Little endian byte representation + */ +LongPrototype.toBytesLE = function toBytesLE() { + var hi = this.high, + lo = this.low; + return [ + lo & 0xff, + lo >>> 8 & 0xff, + lo >>> 16 & 0xff, + lo >>> 24 , + hi & 0xff, + hi >>> 8 & 0xff, + hi >>> 16 & 0xff, + hi >>> 24 + ]; +}; + +/** + * Converts this Long to its big endian byte representation. + * @returns {!Array.} Big endian byte representation + */ +LongPrototype.toBytesBE = function toBytesBE() { + var hi = this.high, + lo = this.low; + return [ + hi >>> 24 , + hi >>> 16 & 0xff, + hi >>> 8 & 0xff, + hi & 0xff, + lo >>> 24 , + lo >>> 16 & 0xff, + lo >>> 8 & 0xff, + lo & 0xff + ]; +}; + +/** + * Creates a Long from its byte representation. + * @param {!Array.} bytes Byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @param {boolean=} le Whether little or big endian, defaults to big endian + * @returns {Long} The corresponding Long value + */ +Long.fromBytes = function fromBytes(bytes, unsigned, le) { + return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned); +}; + +/** + * Creates a Long from its little endian byte representation. + * @param {!Array.} bytes Little endian byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {Long} The corresponding Long value + */ +Long.fromBytesLE = function fromBytesLE(bytes, unsigned) { + return new Long( + bytes[0] | + bytes[1] << 8 | + bytes[2] << 16 | + bytes[3] << 24, + bytes[4] | + bytes[5] << 8 | + bytes[6] << 16 | + bytes[7] << 24, + unsigned + ); +}; + +/** + * Creates a Long from its big endian byte representation. + * @param {!Array.} bytes Big endian byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {Long} The corresponding Long value + */ +Long.fromBytesBE = function fromBytesBE(bytes, unsigned) { + return new Long( + bytes[4] << 24 | + bytes[5] << 16 | + bytes[6] << 8 | + bytes[7], + bytes[0] << 24 | + bytes[1] << 16 | + bytes[2] << 8 | + bytes[3], + unsigned + ); +}; + + +/***/ }), + +/***/ "../node_modules/webpack/buildin/global.js": +/*!*************************************************!*\ + !*** ../node_modules/webpack/buildin/global.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || new Function("return this")(); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), + +/***/ "../src/ast.ts": +/*!*********************!*\ + !*** ../src/ast.ts ***! + \*********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Abstract syntax tree representing a source file once parsed. + * @module ast + */ /***/ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var common_1 = __webpack_require__(/*! ./common */ "../src/common.ts"); +var tokenizer_1 = __webpack_require__(/*! ./tokenizer */ "../src/tokenizer.ts"); +exports.Token = tokenizer_1.Token; +exports.Range = tokenizer_1.Range; +var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); +/** Indicates the kind of a node. */ +var NodeKind; +(function (NodeKind) { + NodeKind[NodeKind["SOURCE"] = 0] = "SOURCE"; + // types + NodeKind[NodeKind["NAMEDTYPE"] = 1] = "NAMEDTYPE"; + NodeKind[NodeKind["FUNCTIONTYPE"] = 2] = "FUNCTIONTYPE"; + NodeKind[NodeKind["TYPENAME"] = 3] = "TYPENAME"; + NodeKind[NodeKind["TYPEPARAMETER"] = 4] = "TYPEPARAMETER"; + NodeKind[NodeKind["PARAMETER"] = 5] = "PARAMETER"; + // expressions + NodeKind[NodeKind["IDENTIFIER"] = 6] = "IDENTIFIER"; + NodeKind[NodeKind["ASSERTION"] = 7] = "ASSERTION"; + NodeKind[NodeKind["BINARY"] = 8] = "BINARY"; + NodeKind[NodeKind["CALL"] = 9] = "CALL"; + NodeKind[NodeKind["CLASS"] = 10] = "CLASS"; + NodeKind[NodeKind["COMMA"] = 11] = "COMMA"; + NodeKind[NodeKind["ELEMENTACCESS"] = 12] = "ELEMENTACCESS"; + NodeKind[NodeKind["FALSE"] = 13] = "FALSE"; + NodeKind[NodeKind["FUNCTION"] = 14] = "FUNCTION"; + NodeKind[NodeKind["INSTANCEOF"] = 15] = "INSTANCEOF"; + NodeKind[NodeKind["LITERAL"] = 16] = "LITERAL"; + NodeKind[NodeKind["NEW"] = 17] = "NEW"; + NodeKind[NodeKind["NULL"] = 18] = "NULL"; + NodeKind[NodeKind["PARENTHESIZED"] = 19] = "PARENTHESIZED"; + NodeKind[NodeKind["PROPERTYACCESS"] = 20] = "PROPERTYACCESS"; + NodeKind[NodeKind["TERNARY"] = 21] = "TERNARY"; + NodeKind[NodeKind["SUPER"] = 22] = "SUPER"; + NodeKind[NodeKind["THIS"] = 23] = "THIS"; + NodeKind[NodeKind["TRUE"] = 24] = "TRUE"; + NodeKind[NodeKind["CONSTRUCTOR"] = 25] = "CONSTRUCTOR"; + NodeKind[NodeKind["UNARYPOSTFIX"] = 26] = "UNARYPOSTFIX"; + NodeKind[NodeKind["UNARYPREFIX"] = 27] = "UNARYPREFIX"; + // statements + NodeKind[NodeKind["BLOCK"] = 28] = "BLOCK"; + NodeKind[NodeKind["BREAK"] = 29] = "BREAK"; + NodeKind[NodeKind["CONTINUE"] = 30] = "CONTINUE"; + NodeKind[NodeKind["DO"] = 31] = "DO"; + NodeKind[NodeKind["EMPTY"] = 32] = "EMPTY"; + NodeKind[NodeKind["EXPORT"] = 33] = "EXPORT"; + NodeKind[NodeKind["EXPORTDEFAULT"] = 34] = "EXPORTDEFAULT"; + NodeKind[NodeKind["EXPORTIMPORT"] = 35] = "EXPORTIMPORT"; + NodeKind[NodeKind["EXPRESSION"] = 36] = "EXPRESSION"; + NodeKind[NodeKind["FOR"] = 37] = "FOR"; + NodeKind[NodeKind["IF"] = 38] = "IF"; + NodeKind[NodeKind["IMPORT"] = 39] = "IMPORT"; + NodeKind[NodeKind["RETURN"] = 40] = "RETURN"; + NodeKind[NodeKind["SWITCH"] = 41] = "SWITCH"; + NodeKind[NodeKind["THROW"] = 42] = "THROW"; + NodeKind[NodeKind["TRY"] = 43] = "TRY"; + NodeKind[NodeKind["VARIABLE"] = 44] = "VARIABLE"; + NodeKind[NodeKind["VOID"] = 45] = "VOID"; + NodeKind[NodeKind["WHILE"] = 46] = "WHILE"; + // declaration statements + NodeKind[NodeKind["CLASSDECLARATION"] = 47] = "CLASSDECLARATION"; + NodeKind[NodeKind["ENUMDECLARATION"] = 48] = "ENUMDECLARATION"; + NodeKind[NodeKind["ENUMVALUEDECLARATION"] = 49] = "ENUMVALUEDECLARATION"; + NodeKind[NodeKind["FIELDDECLARATION"] = 50] = "FIELDDECLARATION"; + NodeKind[NodeKind["FUNCTIONDECLARATION"] = 51] = "FUNCTIONDECLARATION"; + NodeKind[NodeKind["IMPORTDECLARATION"] = 52] = "IMPORTDECLARATION"; + NodeKind[NodeKind["INDEXSIGNATUREDECLARATION"] = 53] = "INDEXSIGNATUREDECLARATION"; + NodeKind[NodeKind["INTERFACEDECLARATION"] = 54] = "INTERFACEDECLARATION"; + NodeKind[NodeKind["METHODDECLARATION"] = 55] = "METHODDECLARATION"; + NodeKind[NodeKind["NAMESPACEDECLARATION"] = 56] = "NAMESPACEDECLARATION"; + NodeKind[NodeKind["TYPEDECLARATION"] = 57] = "TYPEDECLARATION"; + NodeKind[NodeKind["VARIABLEDECLARATION"] = 58] = "VARIABLEDECLARATION"; + // special + NodeKind[NodeKind["DECORATOR"] = 59] = "DECORATOR"; + NodeKind[NodeKind["EXPORTMEMBER"] = 60] = "EXPORTMEMBER"; + NodeKind[NodeKind["SWITCHCASE"] = 61] = "SWITCHCASE"; + NodeKind[NodeKind["COMMENT"] = 62] = "COMMENT"; +})(NodeKind = exports.NodeKind || (exports.NodeKind = {})); +/** Checks if a node represents a constant value. */ +function nodeIsConstantValue(kind) { + switch (kind) { + case NodeKind.LITERAL: + case NodeKind.NULL: + case NodeKind.TRUE: + case NodeKind.FALSE: return true; + } + return false; +} +exports.nodeIsConstantValue = nodeIsConstantValue; +/** Checks if a node might be callable. */ +function nodeIsCallable(kind) { + switch (kind) { + case NodeKind.IDENTIFIER: + case NodeKind.ASSERTION: // if kind=NONNULL + case NodeKind.CALL: + case NodeKind.ELEMENTACCESS: + case NodeKind.PARENTHESIZED: + case NodeKind.PROPERTYACCESS: + case NodeKind.SUPER: return true; + } + return false; +} +exports.nodeIsCallable = nodeIsCallable; +/** Checks if a node might be callable with generic arguments. */ +function nodeIsGenericCallable(kind) { + switch (kind) { + case NodeKind.IDENTIFIER: + case NodeKind.PROPERTYACCESS: return true; + } + return false; +} +exports.nodeIsGenericCallable = nodeIsGenericCallable; +/** Base class of all nodes. */ +var Node = /** @class */ (function () { + function Node() { + } + // types + Node.createTypeName = function (name, range) { + var typeName = new TypeName(); + typeName.range = range; + typeName.identifier = name; + typeName.next = null; + return typeName; + }; + Node.createSimpleTypeName = function (name, range) { + return Node.createTypeName(Node.createIdentifierExpression(name, range), range); + }; + Node.createNamedType = function (name, typeArguments, isNullable, range) { + var type = new NamedTypeNode(); + type.range = range; + type.name = name; + type.typeArguments = typeArguments; + type.isNullable = isNullable; + return type; + }; + Node.createFunctionType = function (parameters, returnType, explicitThisType, isNullable, range) { + var type = new FunctionTypeNode(); + type.range = range; + type.parameters = parameters; + type.returnType = returnType; + type.explicitThisType = explicitThisType; + type.isNullable = isNullable; + return type; + }; + Node.createOmittedType = function (range) { + return Node.createNamedType(Node.createSimpleTypeName("", range), null, false, range); + }; + Node.createTypeParameter = function (name, extendsType, defaultType, range) { + var elem = new TypeParameterNode(); + elem.range = range; + elem.name = name; + elem.extendsType = extendsType; + elem.defaultType = defaultType; + return elem; + }; + Node.createParameter = function (name, type, initializer, kind, range) { + var elem = new ParameterNode(); + elem.range = range; + elem.name = name; + elem.type = type; + elem.initializer = initializer; + elem.parameterKind = kind; + return elem; + }; + // special + Node.createDecorator = function (name, args, range) { + var stmt = new DecoratorNode(); + stmt.range = range; + stmt.name = name; + stmt.arguments = args; + stmt.decoratorKind = decoratorNameToKind(name); + return stmt; + }; + Node.createComment = function (text, kind, range) { + var node = new CommentNode(); + node.range = range; + node.commentKind = kind; + node.text = text; + return node; + }; + // expressions + Node.createIdentifierExpression = function (name, range, isQuoted) { + if (isQuoted === void 0) { isQuoted = false; } + var expr = new IdentifierExpression(); + expr.range = range; + expr.text = name; // TODO: extract from range + expr.symbol = name; // TODO: Symbol.for(name) + expr.isQuoted = isQuoted; + return expr; + }; + Node.createEmptyIdentifierExpression = function (range) { + var expr = new IdentifierExpression(); + expr.range = range; + expr.text = ""; + return expr; + }; + Node.createArrayLiteralExpression = function (elements, range) { + var expr = new ArrayLiteralExpression(); + expr.range = range; + expr.elementExpressions = elements; + return expr; + }; + Node.createAssertionExpression = function (assertionKind, expression, toType, range) { + var expr = new AssertionExpression(); + expr.range = range; + expr.assertionKind = assertionKind; + expr.expression = expression; + expr.toType = toType; + return expr; + }; + Node.createBinaryExpression = function (operator, left, right, range) { + var expr = new BinaryExpression(); + expr.range = range; + expr.operator = operator; + expr.left = left; + expr.right = right; + return expr; + }; + Node.createCallExpression = function (expression, typeArgs, args, range) { + var expr = new CallExpression(); + expr.range = range; + expr.expression = expression; + expr.typeArguments = typeArgs; + expr.arguments = args; + return expr; + }; + Node.createClassExpression = function (declaration) { + var expr = new ClassExpression(); + expr.range = declaration.range; + expr.declaration = declaration; + return expr; + }; + Node.createCommaExpression = function (expressions, range) { + var expr = new CommaExpression(); + expr.range = range; + expr.expressions = expressions; + return expr; + }; + Node.createConstructorExpression = function (range) { + var expr = new ConstructorExpression(); + expr.range = range; + return expr; + }; + Node.createElementAccessExpression = function (expression, element, range) { + var expr = new ElementAccessExpression(); + expr.range = range; + expr.expression = expression; + expr.elementExpression = element; + return expr; + }; + Node.createFalseExpression = function (range) { + var expr = new FalseExpression(); + expr.range = range; + return expr; + }; + Node.createFloatLiteralExpression = function (value, range) { + var expr = new FloatLiteralExpression(); + expr.range = range; + expr.value = value; + return expr; + }; + Node.createFunctionExpression = function (declaration) { + var expr = new FunctionExpression(); + expr.range = declaration.range; + expr.declaration = declaration; + return expr; + }; + Node.createInstanceOfExpression = function (expression, isType, range) { + var expr = new InstanceOfExpression(); + expr.range = range; + expr.expression = expression; + expr.isType = isType; + return expr; + }; + Node.createIntegerLiteralExpression = function (value, range) { + var expr = new IntegerLiteralExpression(); + expr.range = range; + expr.value = value; + return expr; + }; + Node.createNewExpression = function (expression, typeArgs, args, range) { + var expr = new NewExpression(); + expr.range = range; + expr.expression = expression; + expr.typeArguments = typeArgs; + expr.arguments = args; + return expr; + }; + Node.createNullExpression = function (range) { + var expr = new NullExpression(); + expr.range = range; + return expr; + }; + Node.createObjectLiteralExpression = function (names, values, range) { + var expr = new ObjectLiteralExpression(); + expr.range = range; + expr.names = names; + expr.values = values; + return expr; + }; + Node.createParenthesizedExpression = function (expression, range) { + var expr = new ParenthesizedExpression(); + expr.range = range; + expr.expression = expression; + return expr; + }; + Node.createPropertyAccessExpression = function (expression, property, range) { + var expr = new PropertyAccessExpression(); + expr.range = range; + expr.expression = expression; + expr.property = property; + return expr; + }; + Node.createRegexpLiteralExpression = function (pattern, flags, range) { + var expr = new RegexpLiteralExpression(); + expr.range = range; + expr.pattern = pattern; + expr.patternFlags = flags; + return expr; + }; + Node.createTernaryExpression = function (condition, ifThen, ifElse, range) { + var expr = new TernaryExpression(); + expr.range = range; + expr.condition = condition; + expr.ifThen = ifThen; + expr.ifElse = ifElse; + return expr; + }; + Node.createStringLiteralExpression = function (value, range) { + var expr = new StringLiteralExpression(); + expr.range = range; + expr.value = value; + return expr; + }; + Node.createSuperExpression = function (range) { + var expr = new SuperExpression(); + expr.range = range; + return expr; + }; + Node.createThisExpression = function (range) { + var expr = new ThisExpression(); + expr.range = range; + return expr; + }; + Node.createTrueExpression = function (range) { + var expr = new TrueExpression(); + expr.range = range; + return expr; + }; + Node.createUnaryPostfixExpression = function (operator, operand, range) { + var expr = new UnaryPostfixExpression(); + expr.range = range; + expr.operator = operator; + expr.operand = operand; + return expr; + }; + Node.createUnaryPrefixExpression = function (operator, operand, range) { + var expr = new UnaryPrefixExpression(); + expr.range = range; + expr.operator = operator; + expr.operand = operand; + return expr; + }; + // statements + Node.createBlockStatement = function (statements, range) { + var stmt = new BlockStatement(); + stmt.range = range; + stmt.statements = statements; + return stmt; + }; + Node.createBreakStatement = function (label, range) { + var stmt = new BreakStatement(); + stmt.range = range; + stmt.label = label; + return stmt; + }; + Node.createClassDeclaration = function (identifier, typeParameters, extendsType, // can't be a function + implementsTypes, // can't be functions + members, decorators, flags, range) { + var stmt = new ClassDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = identifier; + stmt.typeParameters = typeParameters; + stmt.extendsType = extendsType; + stmt.implementsTypes = implementsTypes; + stmt.members = members; + stmt.decorators = decorators; + return stmt; + }; + Node.createContinueStatement = function (label, range) { + var stmt = new ContinueStatement(); + stmt.range = range; + stmt.label = label; + return stmt; + }; + Node.createDoStatement = function (statement, condition, range) { + var stmt = new DoStatement(); + stmt.range = range; + stmt.statement = statement; + stmt.condition = condition; + return stmt; + }; + Node.createEmptyStatement = function (range) { + var stmt = new EmptyStatement(); + stmt.range = range; + return stmt; + }; + Node.createEnumDeclaration = function (name, members, decorators, flags, range) { + var stmt = new EnumDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.values = members; + stmt.decorators = decorators; + return stmt; + }; + Node.createEnumValueDeclaration = function (name, value, flags, range) { + var stmt = new EnumValueDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.value = value; + return stmt; + }; + Node.createExportStatement = function (members, path, isDeclare, range) { + var stmt = new ExportStatement(); + stmt.range = range; + stmt.members = members; + stmt.path = path; + if (path) { + var normalizedPath = util_1.normalizePath(path.value); + if (path.value.startsWith(".")) { // relative + stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); + } + else { // absolute + if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { + normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; + } + stmt.normalizedPath = normalizedPath; + } + stmt.internalPath = mangleInternalPath(stmt.normalizedPath); + } + else { + stmt.normalizedPath = null; + stmt.internalPath = null; + } + stmt.isDeclare = isDeclare; + return stmt; + }; + Node.createExportDefaultStatement = function (declaration, range) { + var stmt = new ExportDefaultStatement(); + stmt.declaration = declaration; + stmt.range = range; + return stmt; + }; + Node.createExportImportStatement = function (name, externalName, range) { + var stmt = new ExportImportStatement(); + stmt.range = range; + stmt.name = name; + stmt.externalName = externalName; + return stmt; + }; + Node.createExportMember = function (name, externalName, range) { + var elem = new ExportMember(); + elem.range = range; + elem.localName = name; + if (!externalName) + externalName = name; + elem.exportedName = externalName; + return elem; + }; + Node.createExpressionStatement = function (expression) { + var stmt = new ExpressionStatement(); + stmt.range = expression.range; + stmt.expression = expression; + return stmt; + }; + Node.createIfStatement = function (condition, ifTrue, ifFalse, range) { + var stmt = new IfStatement(); + stmt.range = range; + stmt.condition = condition; + stmt.ifTrue = ifTrue; + stmt.ifFalse = ifFalse; + return stmt; + }; + Node.createImportStatement = function (decls, path, range) { + var stmt = new ImportStatement(); + stmt.range = range; + stmt.declarations = decls; + stmt.namespaceName = null; + stmt.path = path; + var normalizedPath = util_1.normalizePath(path.value); + if (path.value.startsWith(".")) { // relative in project + stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); + } + else { // absolute in library + if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { + normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; + } + stmt.normalizedPath = normalizedPath; + } + stmt.internalPath = mangleInternalPath(stmt.normalizedPath); + return stmt; + }; + Node.createImportStatementWithWildcard = function (identifier, path, range) { + var stmt = new ImportStatement(); + stmt.range = range; + stmt.declarations = null; + stmt.namespaceName = identifier; + stmt.path = path; + var normalizedPath = util_1.normalizePath(path.value); + if (path.value.startsWith(".")) { + stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); + } + else { + if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { + normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; + } + stmt.normalizedPath = normalizedPath; + } + stmt.internalPath = mangleInternalPath(stmt.normalizedPath); + return stmt; + }; + Node.createImportDeclaration = function (foreignName, name, range) { + var elem = new ImportDeclaration(); + elem.range = range; + elem.foreignName = foreignName; + if (!name) + name = foreignName; + elem.name = name; + return elem; + }; + Node.createInterfaceDeclaration = function (name, typeParameters, extendsType, // can't be a function + members, decorators, flags, range) { + var stmt = new InterfaceDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.typeParameters = typeParameters; + stmt.extendsType = extendsType; + stmt.members = members; + stmt.decorators = decorators; + return stmt; + }; + Node.createFieldDeclaration = function (name, type, initializer, decorators, flags, range) { + var stmt = new FieldDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.type = type; + stmt.initializer = initializer; + stmt.decorators = decorators; + return stmt; + }; + Node.createForStatement = function (initializer, condition, incrementor, statement, range) { + var stmt = new ForStatement(); + stmt.range = range; + stmt.initializer = initializer; + stmt.condition = condition; + stmt.incrementor = incrementor; + stmt.statement = statement; + return stmt; + }; + Node.createFunctionDeclaration = function (name, typeParameters, signature, body, decorators, flags, arrowKind, range) { + var stmt = new FunctionDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.typeParameters = typeParameters; + stmt.signature = signature; + stmt.body = body; + stmt.decorators = decorators; + stmt.arrowKind = arrowKind; + return stmt; + }; + Node.createIndexSignatureDeclaration = function (keyType, valueType, range) { + var elem = new IndexSignatureDeclaration(); + elem.range = range; + elem.keyType = keyType; + elem.valueType = valueType; + return elem; + }; + Node.createMethodDeclaration = function (name, typeParameters, signature, body, decorators, flags, range) { + var stmt = new MethodDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.typeParameters = typeParameters; + stmt.signature = signature; + stmt.body = body; + stmt.decorators = decorators; + return stmt; + }; + Node.createNamespaceDeclaration = function (name, members, decorators, flags, range) { + var stmt = new NamespaceDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.members = members; + stmt.decorators = decorators; + return stmt; + }; + Node.createReturnStatement = function (value, range) { + var stmt = new ReturnStatement(); + stmt.range = range; + stmt.value = value; + return stmt; + }; + Node.createSwitchStatement = function (condition, cases, range) { + var stmt = new SwitchStatement(); + stmt.range = range; + stmt.condition = condition; + stmt.cases = cases; + return stmt; + }; + Node.createSwitchCase = function (label, statements, range) { + var elem = new SwitchCase(); + elem.range = range; + elem.label = label; + elem.statements = statements; + return elem; + }; + Node.createThrowStatement = function (value, range) { + var stmt = new ThrowStatement(); + stmt.range = range; + stmt.value = value; + return stmt; + }; + Node.createTryStatement = function (statements, catchVariable, catchStatements, finallyStatements, range) { + var stmt = new TryStatement(); + stmt.range = range; + stmt.statements = statements; + stmt.catchVariable = catchVariable; + stmt.catchStatements = catchStatements; + stmt.finallyStatements = finallyStatements; + return stmt; + }; + Node.createTypeDeclaration = function (name, typeParameters, alias, decorators, flags, range) { + var stmt = new TypeDeclaration(); + stmt.range = range; + stmt.flags = flags; + stmt.name = name; + stmt.typeParameters = typeParameters; + stmt.type = alias; + stmt.decorators = decorators; + return stmt; + }; + Node.createVariableStatement = function (declarations, decorators, range) { + var stmt = new VariableStatement(); + stmt.range = range; + stmt.declarations = declarations; + stmt.decorators = decorators; + return stmt; + }; + Node.createVariableDeclaration = function (name, type, initializer, decorators, flags, range) { + var elem = new VariableDeclaration(); + elem.range = range; + elem.flags = flags; + elem.name = name; + elem.type = type; + elem.initializer = initializer; + elem.decorators = decorators; // inherited + return elem; + }; + Node.createVoidStatement = function (expression, range) { + var stmt = new VoidStatement(); + stmt.range = range; + stmt.expression = expression; + return stmt; + }; + Node.createWhileStatement = function (condition, statement, range) { + var stmt = new WhileStatement(); + stmt.range = range; + stmt.condition = condition; + stmt.statement = statement; + return stmt; + }; + return Node; +}()); +exports.Node = Node; +// types +var TypeNode = /** @class */ (function (_super) { + __extends(TypeNode, _super); + function TypeNode() { + return _super !== null && _super.apply(this, arguments) || this; + } + return TypeNode; +}(Node)); +exports.TypeNode = TypeNode; +/** Represents a type name. */ +var TypeName = /** @class */ (function (_super) { + __extends(TypeName, _super); + function TypeName() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TYPENAME; + return _this; + } + return TypeName; +}(Node)); +exports.TypeName = TypeName; +/** Represents a named type. */ +var NamedTypeNode = /** @class */ (function (_super) { + __extends(NamedTypeNode, _super); + function NamedTypeNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.NAMEDTYPE; + return _this; + } + return NamedTypeNode; +}(TypeNode)); +exports.NamedTypeNode = NamedTypeNode; +/** Represents a function type. */ +var FunctionTypeNode = /** @class */ (function (_super) { + __extends(FunctionTypeNode, _super); + function FunctionTypeNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FUNCTIONTYPE; + return _this; + } + return FunctionTypeNode; +}(TypeNode)); +exports.FunctionTypeNode = FunctionTypeNode; +/** Represents a type parameter. */ +var TypeParameterNode = /** @class */ (function (_super) { + __extends(TypeParameterNode, _super); + function TypeParameterNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TYPEPARAMETER; + return _this; + } + return TypeParameterNode; +}(Node)); +exports.TypeParameterNode = TypeParameterNode; +/** Represents the kind of a parameter. */ +var ParameterKind; +(function (ParameterKind) { + /** No specific flags. */ + ParameterKind[ParameterKind["DEFAULT"] = 0] = "DEFAULT"; + /** Is an optional parameter. */ + ParameterKind[ParameterKind["OPTIONAL"] = 1] = "OPTIONAL"; + /** Is a rest parameter. */ + ParameterKind[ParameterKind["REST"] = 2] = "REST"; +})(ParameterKind = exports.ParameterKind || (exports.ParameterKind = {})); +/** Represents a function parameter. */ +var ParameterNode = /** @class */ (function (_super) { + __extends(ParameterNode, _super); + function ParameterNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.PARAMETER; + /** Implicit field declaration, if applicable. */ + _this.implicitFieldDeclaration = null; + /** Common flags indicating specific traits. */ + _this.flags = common_1.CommonFlags.NONE; + return _this; + } + /** Tests if this node has the specified flag or flags. */ + ParameterNode.prototype.is = function (flag) { return (this.flags & flag) == flag; }; + /** Tests if this node has one of the specified flags. */ + ParameterNode.prototype.isAny = function (flag) { return (this.flags & flag) != 0; }; + /** Sets a specific flag or flags. */ + ParameterNode.prototype.set = function (flag) { this.flags |= flag; }; + return ParameterNode; +}(Node)); +exports.ParameterNode = ParameterNode; +// special +/** Built-in decorator kinds. */ +var DecoratorKind; +(function (DecoratorKind) { + DecoratorKind[DecoratorKind["CUSTOM"] = 0] = "CUSTOM"; + DecoratorKind[DecoratorKind["GLOBAL"] = 1] = "GLOBAL"; + DecoratorKind[DecoratorKind["OPERATOR"] = 2] = "OPERATOR"; + DecoratorKind[DecoratorKind["OPERATOR_BINARY"] = 3] = "OPERATOR_BINARY"; + DecoratorKind[DecoratorKind["OPERATOR_PREFIX"] = 4] = "OPERATOR_PREFIX"; + DecoratorKind[DecoratorKind["OPERATOR_POSTFIX"] = 5] = "OPERATOR_POSTFIX"; + DecoratorKind[DecoratorKind["UNMANAGED"] = 6] = "UNMANAGED"; + DecoratorKind[DecoratorKind["SEALED"] = 7] = "SEALED"; + DecoratorKind[DecoratorKind["INLINE"] = 8] = "INLINE"; + DecoratorKind[DecoratorKind["EXTERNAL"] = 9] = "EXTERNAL"; + DecoratorKind[DecoratorKind["BUILTIN"] = 10] = "BUILTIN"; + DecoratorKind[DecoratorKind["LAZY"] = 11] = "LAZY"; + DecoratorKind[DecoratorKind["UNSAFE"] = 12] = "UNSAFE"; +})(DecoratorKind = exports.DecoratorKind || (exports.DecoratorKind = {})); +/** Returns the kind of the specified decorator. Defaults to {@link DecoratorKind.CUSTOM}. */ +function decoratorNameToKind(name) { + // @global, @inline, @operator, @sealed, @unmanaged + if (name.kind == NodeKind.IDENTIFIER) { + var nameStr = name.text; + assert(nameStr.length); + switch (nameStr.charCodeAt(0)) { + case 98 /* b */: { + if (nameStr == "builtin") + return DecoratorKind.BUILTIN; + break; + } + case 101 /* e */: { + if (nameStr == "external") + return DecoratorKind.EXTERNAL; + break; + } + case 103 /* g */: { + if (nameStr == "global") + return DecoratorKind.GLOBAL; + break; + } + case 105 /* i */: { + if (nameStr == "inline") + return DecoratorKind.INLINE; + break; + } + case 108 /* l */: { + if (nameStr == "lazy") + return DecoratorKind.LAZY; + break; + } + case 111 /* o */: { + if (nameStr == "operator") + return DecoratorKind.OPERATOR; + break; + } + case 115 /* s */: { + if (nameStr == "sealed") + return DecoratorKind.SEALED; + break; + } + case 117 /* u */: { + if (nameStr == "unmanaged") + return DecoratorKind.UNMANAGED; + if (nameStr == "unsafe") + return DecoratorKind.UNSAFE; + break; + } + } + } + else if (name.kind == NodeKind.PROPERTYACCESS && + name.expression.kind == NodeKind.IDENTIFIER) { + var nameStr = name.expression.text; + assert(nameStr.length); + var propStr = name.property.text; + assert(propStr.length); + // @operator.binary, @operator.prefix, @operator.postfix + if (nameStr == "operator") { + switch (propStr.charCodeAt(0)) { + case 98 /* b */: { + if (propStr == "binary") + return DecoratorKind.OPERATOR_BINARY; + break; + } + case 112 /* p */: { + switch (propStr) { + case "prefix": return DecoratorKind.OPERATOR_PREFIX; + case "postfix": return DecoratorKind.OPERATOR_POSTFIX; + } + break; + } + } + } + } + return DecoratorKind.CUSTOM; +} +exports.decoratorNameToKind = decoratorNameToKind; +/** Represents a decorator. */ +var DecoratorNode = /** @class */ (function (_super) { + __extends(DecoratorNode, _super); + function DecoratorNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.DECORATOR; + return _this; + } + return DecoratorNode; +}(Node)); +exports.DecoratorNode = DecoratorNode; +/** Comment kinds. */ +var CommentKind; +(function (CommentKind) { + /** Line comment. */ + CommentKind[CommentKind["LINE"] = 0] = "LINE"; + /** Triple-slash comment. */ + CommentKind[CommentKind["TRIPLE"] = 1] = "TRIPLE"; + /** Block comment. */ + CommentKind[CommentKind["BLOCK"] = 2] = "BLOCK"; +})(CommentKind = exports.CommentKind || (exports.CommentKind = {})); +/** Represents a comment. */ +var CommentNode = /** @class */ (function (_super) { + __extends(CommentNode, _super); + function CommentNode() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.COMMENT; + return _this; + } + return CommentNode; +}(Node)); +exports.CommentNode = CommentNode; +// expressions +/** Base class of all expression nodes. */ +var Expression = /** @class */ (function (_super) { + __extends(Expression, _super); + function Expression() { + return _super !== null && _super.apply(this, arguments) || this; + } + return Expression; +}(Node)); +exports.Expression = Expression; +/** Represents an identifier expression. */ +var IdentifierExpression = /** @class */ (function (_super) { + __extends(IdentifierExpression, _super); + function IdentifierExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.IDENTIFIER; + return _this; + } + return IdentifierExpression; +}(Expression)); +exports.IdentifierExpression = IdentifierExpression; +/** Indicates the kind of a literal. */ +var LiteralKind; +(function (LiteralKind) { + LiteralKind[LiteralKind["FLOAT"] = 0] = "FLOAT"; + LiteralKind[LiteralKind["INTEGER"] = 1] = "INTEGER"; + LiteralKind[LiteralKind["STRING"] = 2] = "STRING"; + LiteralKind[LiteralKind["REGEXP"] = 3] = "REGEXP"; + LiteralKind[LiteralKind["ARRAY"] = 4] = "ARRAY"; + LiteralKind[LiteralKind["OBJECT"] = 5] = "OBJECT"; +})(LiteralKind = exports.LiteralKind || (exports.LiteralKind = {})); +/** Base class of all literal expressions. */ +var LiteralExpression = /** @class */ (function (_super) { + __extends(LiteralExpression, _super); + function LiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.LITERAL; + return _this; + } + return LiteralExpression; +}(Expression)); +exports.LiteralExpression = LiteralExpression; +/** Represents an `[]` literal expression. */ +var ArrayLiteralExpression = /** @class */ (function (_super) { + __extends(ArrayLiteralExpression, _super); + function ArrayLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.ARRAY; + return _this; + } + return ArrayLiteralExpression; +}(LiteralExpression)); +exports.ArrayLiteralExpression = ArrayLiteralExpression; +/** Indicates the kind of an assertion. */ +var AssertionKind; +(function (AssertionKind) { + AssertionKind[AssertionKind["PREFIX"] = 0] = "PREFIX"; + AssertionKind[AssertionKind["AS"] = 1] = "AS"; + AssertionKind[AssertionKind["NONNULL"] = 2] = "NONNULL"; +})(AssertionKind = exports.AssertionKind || (exports.AssertionKind = {})); +/** Represents an assertion expression. */ +var AssertionExpression = /** @class */ (function (_super) { + __extends(AssertionExpression, _super); + function AssertionExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.ASSERTION; + return _this; + } + return AssertionExpression; +}(Expression)); +exports.AssertionExpression = AssertionExpression; +/** Represents a binary expression. */ +var BinaryExpression = /** @class */ (function (_super) { + __extends(BinaryExpression, _super); + function BinaryExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.BINARY; + return _this; + } + return BinaryExpression; +}(Expression)); +exports.BinaryExpression = BinaryExpression; +/** Represents a call expression. */ +var CallExpression = /** @class */ (function (_super) { + __extends(CallExpression, _super); + function CallExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.CALL; + return _this; + } + Object.defineProperty(CallExpression.prototype, "typeArgumentsRange", { + /** Gets the type arguments range for reporting. */ + get: function () { + var typeArguments = this.typeArguments; + var numTypeArguments; + if (typeArguments && (numTypeArguments = typeArguments.length)) { + return tokenizer_1.Range.join(typeArguments[0].range, typeArguments[numTypeArguments - 1].range); + } + return this.expression.range; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CallExpression.prototype, "argumentsRange", { + /** Gets the arguments range for reporting. */ + get: function () { + var args = this.arguments; + var numArguments = args.length; + if (numArguments) { + return tokenizer_1.Range.join(args[0].range, args[numArguments - 1].range); + } + return this.expression.range; + }, + enumerable: true, + configurable: true + }); + return CallExpression; +}(Expression)); +exports.CallExpression = CallExpression; +/** Represents a class expression using the 'class' keyword. */ +var ClassExpression = /** @class */ (function (_super) { + __extends(ClassExpression, _super); + function ClassExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.CLASS; + return _this; + } + return ClassExpression; +}(Expression)); +exports.ClassExpression = ClassExpression; +/** Represents a comma expression composed of multiple expressions. */ +var CommaExpression = /** @class */ (function (_super) { + __extends(CommaExpression, _super); + function CommaExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.COMMA; + return _this; + } + return CommaExpression; +}(Expression)); +exports.CommaExpression = CommaExpression; +/** Represents a `constructor` expression. */ +var ConstructorExpression = /** @class */ (function (_super) { + __extends(ConstructorExpression, _super); + function ConstructorExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.CONSTRUCTOR; + _this.text = "constructor"; + _this.symbol = common_1.CommonSymbols.constructor; + return _this; + } + return ConstructorExpression; +}(IdentifierExpression)); +exports.ConstructorExpression = ConstructorExpression; +/** Represents an element access expression, e.g., array access. */ +var ElementAccessExpression = /** @class */ (function (_super) { + __extends(ElementAccessExpression, _super); + function ElementAccessExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.ELEMENTACCESS; + return _this; + } + return ElementAccessExpression; +}(Expression)); +exports.ElementAccessExpression = ElementAccessExpression; +/** Represents a float literal expression. */ +var FloatLiteralExpression = /** @class */ (function (_super) { + __extends(FloatLiteralExpression, _super); + function FloatLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.FLOAT; + return _this; + } + return FloatLiteralExpression; +}(LiteralExpression)); +exports.FloatLiteralExpression = FloatLiteralExpression; +/** Represents a function expression using the 'function' keyword. */ +var FunctionExpression = /** @class */ (function (_super) { + __extends(FunctionExpression, _super); + function FunctionExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FUNCTION; + return _this; + } + return FunctionExpression; +}(Expression)); +exports.FunctionExpression = FunctionExpression; +/** Represents an `instanceof` expression. */ +var InstanceOfExpression = /** @class */ (function (_super) { + __extends(InstanceOfExpression, _super); + function InstanceOfExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.INSTANCEOF; + return _this; + } + return InstanceOfExpression; +}(Expression)); +exports.InstanceOfExpression = InstanceOfExpression; +/** Represents an integer literal expression. */ +var IntegerLiteralExpression = /** @class */ (function (_super) { + __extends(IntegerLiteralExpression, _super); + function IntegerLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.INTEGER; + return _this; + } + return IntegerLiteralExpression; +}(LiteralExpression)); +exports.IntegerLiteralExpression = IntegerLiteralExpression; +/** Represents a `new` expression. Like a call but with its own kind. */ +var NewExpression = /** @class */ (function (_super) { + __extends(NewExpression, _super); + function NewExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.NEW; + return _this; + } + return NewExpression; +}(CallExpression)); +exports.NewExpression = NewExpression; +/** Represents a `null` expression. */ +var NullExpression = /** @class */ (function (_super) { + __extends(NullExpression, _super); + function NullExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.NULL; + _this.text = "null"; + _this.symbol = common_1.CommonSymbols.null_; + return _this; + } + return NullExpression; +}(IdentifierExpression)); +exports.NullExpression = NullExpression; +/** Represents an object literal expression. */ +var ObjectLiteralExpression = /** @class */ (function (_super) { + __extends(ObjectLiteralExpression, _super); + function ObjectLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.OBJECT; + return _this; + } + return ObjectLiteralExpression; +}(LiteralExpression)); +exports.ObjectLiteralExpression = ObjectLiteralExpression; +/** Represents a parenthesized expression. */ +var ParenthesizedExpression = /** @class */ (function (_super) { + __extends(ParenthesizedExpression, _super); + function ParenthesizedExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.PARENTHESIZED; + return _this; + } + return ParenthesizedExpression; +}(Expression)); +exports.ParenthesizedExpression = ParenthesizedExpression; +/** Represents a property access expression. */ +var PropertyAccessExpression = /** @class */ (function (_super) { + __extends(PropertyAccessExpression, _super); + function PropertyAccessExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.PROPERTYACCESS; + return _this; + } + return PropertyAccessExpression; +}(Expression)); +exports.PropertyAccessExpression = PropertyAccessExpression; +/** Represents a regular expression literal expression. */ +var RegexpLiteralExpression = /** @class */ (function (_super) { + __extends(RegexpLiteralExpression, _super); + function RegexpLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.REGEXP; + return _this; + } + return RegexpLiteralExpression; +}(LiteralExpression)); +exports.RegexpLiteralExpression = RegexpLiteralExpression; +/** Represents a ternary expression, i.e., short if notation. */ +var TernaryExpression = /** @class */ (function (_super) { + __extends(TernaryExpression, _super); + function TernaryExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TERNARY; + return _this; + } + return TernaryExpression; +}(Expression)); +exports.TernaryExpression = TernaryExpression; +/** Represents a string literal expression. */ +var StringLiteralExpression = /** @class */ (function (_super) { + __extends(StringLiteralExpression, _super); + function StringLiteralExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.literalKind = LiteralKind.STRING; + return _this; + } + return StringLiteralExpression; +}(LiteralExpression)); +exports.StringLiteralExpression = StringLiteralExpression; +/** Represents a `super` expression. */ +var SuperExpression = /** @class */ (function (_super) { + __extends(SuperExpression, _super); + function SuperExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.SUPER; + _this.text = "super"; + _this.symbol = common_1.CommonSymbols.super_; + return _this; + } + return SuperExpression; +}(IdentifierExpression)); +exports.SuperExpression = SuperExpression; +/** Represents a `this` expression. */ +var ThisExpression = /** @class */ (function (_super) { + __extends(ThisExpression, _super); + function ThisExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.THIS; + _this.text = "this"; + _this.symbol = common_1.CommonSymbols.this_; + return _this; + } + return ThisExpression; +}(IdentifierExpression)); +exports.ThisExpression = ThisExpression; +/** Represents a `true` expression. */ +var TrueExpression = /** @class */ (function (_super) { + __extends(TrueExpression, _super); + function TrueExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TRUE; + _this.text = "true"; + _this.symbol = common_1.CommonSymbols.true_; + return _this; + } + return TrueExpression; +}(IdentifierExpression)); +exports.TrueExpression = TrueExpression; +/** Represents a `false` expression. */ +var FalseExpression = /** @class */ (function (_super) { + __extends(FalseExpression, _super); + function FalseExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FALSE; + _this.text = "false"; + _this.symbol = common_1.CommonSymbols.false_; + return _this; + } + return FalseExpression; +}(IdentifierExpression)); +exports.FalseExpression = FalseExpression; +/** Base class of all unary expressions. */ +var UnaryExpression = /** @class */ (function (_super) { + __extends(UnaryExpression, _super); + function UnaryExpression() { + return _super !== null && _super.apply(this, arguments) || this; + } + return UnaryExpression; +}(Expression)); +exports.UnaryExpression = UnaryExpression; +/** Represents a unary postfix expression, e.g. a postfix increment. */ +var UnaryPostfixExpression = /** @class */ (function (_super) { + __extends(UnaryPostfixExpression, _super); + function UnaryPostfixExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.UNARYPOSTFIX; + return _this; + } + return UnaryPostfixExpression; +}(UnaryExpression)); +exports.UnaryPostfixExpression = UnaryPostfixExpression; +/** Represents a unary prefix expression, e.g. a negation. */ +var UnaryPrefixExpression = /** @class */ (function (_super) { + __extends(UnaryPrefixExpression, _super); + function UnaryPrefixExpression() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.UNARYPREFIX; + return _this; + } + return UnaryPrefixExpression; +}(UnaryExpression)); +exports.UnaryPrefixExpression = UnaryPrefixExpression; +// statements +/** Base class of all statement nodes. */ +var Statement = /** @class */ (function (_super) { + __extends(Statement, _super); + function Statement() { + return _super !== null && _super.apply(this, arguments) || this; + } + return Statement; +}(Node)); +exports.Statement = Statement; +/** Indicates the specific kind of a source. */ +var SourceKind; +(function (SourceKind) { + /** User-provided file. */ + SourceKind[SourceKind["USER"] = 0] = "USER"; + /** User-provided entry file. */ + SourceKind[SourceKind["USER_ENTRY"] = 1] = "USER_ENTRY"; + /** Library-provided file. */ + SourceKind[SourceKind["LIBRARY"] = 2] = "LIBRARY"; + /** Library-provided entry file. */ + SourceKind[SourceKind["LIBRARY_ENTRY"] = 3] = "LIBRARY_ENTRY"; +})(SourceKind = exports.SourceKind || (exports.SourceKind = {})); +/** A top-level source node. */ +var Source = /** @class */ (function (_super) { + __extends(Source, _super); + /** Constructs a new source node. */ + function Source(normalizedPath, text, kind) { + var _this = _super.call(this) || this; + _this.kind = NodeKind.SOURCE; + _this.parent = null; + /** Tokenizer reference. */ + _this.tokenizer = null; + /** Source map index. */ + _this.debugInfoIndex = -1; + /** Re-exported sources. */ + _this.exportPaths = null; + _this.sourceKind = kind; + _this.normalizedPath = normalizedPath; + var internalPath = mangleInternalPath(_this.normalizedPath); + _this.internalPath = internalPath; + var pos = internalPath.lastIndexOf(common_1.PATH_DELIMITER); + _this.simplePath = pos >= 0 ? internalPath.substring(pos + 1) : internalPath; + _this.statements = new Array(); + _this.range = new tokenizer_1.Range(_this, 0, text.length); + _this.text = text; + return _this; + } + Object.defineProperty(Source.prototype, "isLibrary", { + get: function () { + var kind = this.sourceKind; + return kind == SourceKind.LIBRARY || kind == SourceKind.LIBRARY_ENTRY; + }, + enumerable: true, + configurable: true + }); + return Source; +}(Node)); +exports.Source = Source; +/** Base class of all declaration statements. */ +var DeclarationStatement = /** @class */ (function (_super) { + __extends(DeclarationStatement, _super); + function DeclarationStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + /** Array of decorators. */ + _this.decorators = null; + /** Common flags indicating specific traits. */ + _this.flags = common_1.CommonFlags.NONE; + return _this; + } + /** Tests if this node has the specified flag or flags. */ + DeclarationStatement.prototype.is = function (flag) { return (this.flags & flag) == flag; }; + /** Tests if this node has one of the specified flags. */ + DeclarationStatement.prototype.isAny = function (flag) { return (this.flags & flag) != 0; }; + /** Sets a specific flag or flags. */ + DeclarationStatement.prototype.set = function (flag) { this.flags |= flag; }; + return DeclarationStatement; +}(Statement)); +exports.DeclarationStatement = DeclarationStatement; +/** Represents an index signature declaration. */ +var IndexSignatureDeclaration = /** @class */ (function (_super) { + __extends(IndexSignatureDeclaration, _super); + function IndexSignatureDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.INDEXSIGNATUREDECLARATION; + return _this; + } + return IndexSignatureDeclaration; +}(DeclarationStatement)); +exports.IndexSignatureDeclaration = IndexSignatureDeclaration; +/** Base class of all variable-like declaration statements. */ +var VariableLikeDeclarationStatement = /** @class */ (function (_super) { + __extends(VariableLikeDeclarationStatement, _super); + function VariableLikeDeclarationStatement() { + return _super !== null && _super.apply(this, arguments) || this; + } + return VariableLikeDeclarationStatement; +}(DeclarationStatement)); +exports.VariableLikeDeclarationStatement = VariableLikeDeclarationStatement; +/** Represents a block statement. */ +var BlockStatement = /** @class */ (function (_super) { + __extends(BlockStatement, _super); + function BlockStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.BLOCK; + return _this; + } + return BlockStatement; +}(Statement)); +exports.BlockStatement = BlockStatement; +/** Represents a `break` statement. */ +var BreakStatement = /** @class */ (function (_super) { + __extends(BreakStatement, _super); + function BreakStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.BREAK; + return _this; + } + return BreakStatement; +}(Statement)); +exports.BreakStatement = BreakStatement; +/** Represents a `class` declaration. */ +var ClassDeclaration = /** @class */ (function (_super) { + __extends(ClassDeclaration, _super); + function ClassDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.CLASSDECLARATION; + return _this; + } + Object.defineProperty(ClassDeclaration.prototype, "isGeneric", { + get: function () { + var typeParameters = this.typeParameters; + return typeParameters != null && typeParameters.length > 0; + }, + enumerable: true, + configurable: true + }); + return ClassDeclaration; +}(DeclarationStatement)); +exports.ClassDeclaration = ClassDeclaration; +/** Represents a `continue` statement. */ +var ContinueStatement = /** @class */ (function (_super) { + __extends(ContinueStatement, _super); + function ContinueStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.CONTINUE; + return _this; + } + return ContinueStatement; +}(Statement)); +exports.ContinueStatement = ContinueStatement; +/** Represents a `do` statement. */ +var DoStatement = /** @class */ (function (_super) { + __extends(DoStatement, _super); + function DoStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.DO; + return _this; + } + return DoStatement; +}(Statement)); +exports.DoStatement = DoStatement; +/** Represents an empty statement, i.e., a semicolon terminating nothing. */ +var EmptyStatement = /** @class */ (function (_super) { + __extends(EmptyStatement, _super); + function EmptyStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EMPTY; + return _this; + } + return EmptyStatement; +}(Statement)); +exports.EmptyStatement = EmptyStatement; +/** Represents an `enum` declaration. */ +var EnumDeclaration = /** @class */ (function (_super) { + __extends(EnumDeclaration, _super); + function EnumDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.ENUMDECLARATION; + return _this; + } + return EnumDeclaration; +}(DeclarationStatement)); +exports.EnumDeclaration = EnumDeclaration; +/** Represents a value of an `enum` declaration. */ +var EnumValueDeclaration = /** @class */ (function (_super) { + __extends(EnumValueDeclaration, _super); + function EnumValueDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.ENUMVALUEDECLARATION; + return _this; + } + return EnumValueDeclaration; +}(VariableLikeDeclarationStatement)); +exports.EnumValueDeclaration = EnumValueDeclaration; +/** Represents an `export import` statement of an interface. */ +var ExportImportStatement = /** @class */ (function (_super) { + __extends(ExportImportStatement, _super); + function ExportImportStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EXPORTIMPORT; + return _this; + } + return ExportImportStatement; +}(Node)); +exports.ExportImportStatement = ExportImportStatement; +/** Represents a member of an `export` statement. */ +var ExportMember = /** @class */ (function (_super) { + __extends(ExportMember, _super); + function ExportMember() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EXPORTMEMBER; + return _this; + } + return ExportMember; +}(Node)); +exports.ExportMember = ExportMember; +/** Represents an `export` statement. */ +var ExportStatement = /** @class */ (function (_super) { + __extends(ExportStatement, _super); + function ExportStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EXPORT; + return _this; + } + return ExportStatement; +}(Statement)); +exports.ExportStatement = ExportStatement; +/** Represents an `export default` statement. */ +var ExportDefaultStatement = /** @class */ (function (_super) { + __extends(ExportDefaultStatement, _super); + function ExportDefaultStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EXPORTDEFAULT; + return _this; + } + return ExportDefaultStatement; +}(Statement)); +exports.ExportDefaultStatement = ExportDefaultStatement; +/** Represents an expression that is used as a statement. */ +var ExpressionStatement = /** @class */ (function (_super) { + __extends(ExpressionStatement, _super); + function ExpressionStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.EXPRESSION; + return _this; + } + return ExpressionStatement; +}(Statement)); +exports.ExpressionStatement = ExpressionStatement; +/** Represents a field declaration within a `class`. */ +var FieldDeclaration = /** @class */ (function (_super) { + __extends(FieldDeclaration, _super); + function FieldDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FIELDDECLARATION; + /** Parameter index if declared as a constructor parameter, otherwise `-1`. */ + _this.parameterIndex = -1; + return _this; + } + return FieldDeclaration; +}(VariableLikeDeclarationStatement)); +exports.FieldDeclaration = FieldDeclaration; +/** Represents a `for` statement. */ +var ForStatement = /** @class */ (function (_super) { + __extends(ForStatement, _super); + function ForStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FOR; + return _this; + } + return ForStatement; +}(Statement)); +exports.ForStatement = ForStatement; +/** Indicates the kind of an array function. */ +var ArrowKind; +(function (ArrowKind) { + /** Not an arrow function. */ + ArrowKind[ArrowKind["NONE"] = 0] = "NONE"; + /** Parenthesized parameter list. */ + ArrowKind[ArrowKind["ARROW_PARENTHESIZED"] = 1] = "ARROW_PARENTHESIZED"; + /** Single parameter without parenthesis. */ + ArrowKind[ArrowKind["ARROW_SINGLE"] = 2] = "ARROW_SINGLE"; +})(ArrowKind = exports.ArrowKind || (exports.ArrowKind = {})); +/** Represents a `function` declaration. */ +var FunctionDeclaration = /** @class */ (function (_super) { + __extends(FunctionDeclaration, _super); + function FunctionDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.FUNCTIONDECLARATION; + return _this; + } + Object.defineProperty(FunctionDeclaration.prototype, "isGeneric", { + get: function () { + var typeParameters = this.typeParameters; + return typeParameters != null && typeParameters.length > 0; + }, + enumerable: true, + configurable: true + }); + /** Clones this function declaration. */ + FunctionDeclaration.prototype.clone = function () { + return Node.createFunctionDeclaration(this.name, this.typeParameters, this.signature, this.body, this.decorators, this.flags, this.arrowKind, this.range); + }; + return FunctionDeclaration; +}(DeclarationStatement)); +exports.FunctionDeclaration = FunctionDeclaration; +/** Represents an `if` statement. */ +var IfStatement = /** @class */ (function (_super) { + __extends(IfStatement, _super); + function IfStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.IF; + return _this; + } + return IfStatement; +}(Statement)); +exports.IfStatement = IfStatement; +/** Represents an `import` declaration part of an {@link ImportStatement}. */ +var ImportDeclaration = /** @class */ (function (_super) { + __extends(ImportDeclaration, _super); + function ImportDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.IMPORTDECLARATION; + return _this; + } + return ImportDeclaration; +}(DeclarationStatement)); +exports.ImportDeclaration = ImportDeclaration; +/** Represents an `import` statement. */ +var ImportStatement = /** @class */ (function (_super) { + __extends(ImportStatement, _super); + function ImportStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.IMPORT; + return _this; + } + return ImportStatement; +}(Statement)); +exports.ImportStatement = ImportStatement; +/** Represents an `interfarce` declaration. */ +var InterfaceDeclaration = /** @class */ (function (_super) { + __extends(InterfaceDeclaration, _super); + function InterfaceDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.INTERFACEDECLARATION; + return _this; + } + return InterfaceDeclaration; +}(ClassDeclaration)); +exports.InterfaceDeclaration = InterfaceDeclaration; +/** Represents a method declaration within a `class`. */ +var MethodDeclaration = /** @class */ (function (_super) { + __extends(MethodDeclaration, _super); + function MethodDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.METHODDECLARATION; + return _this; + } + return MethodDeclaration; +}(FunctionDeclaration)); +exports.MethodDeclaration = MethodDeclaration; +/** Represents a `namespace` declaration. */ +var NamespaceDeclaration = /** @class */ (function (_super) { + __extends(NamespaceDeclaration, _super); + function NamespaceDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.NAMESPACEDECLARATION; + return _this; + } + return NamespaceDeclaration; +}(DeclarationStatement)); +exports.NamespaceDeclaration = NamespaceDeclaration; +/** Represents a `return` statement. */ +var ReturnStatement = /** @class */ (function (_super) { + __extends(ReturnStatement, _super); + function ReturnStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.RETURN; + return _this; + } + return ReturnStatement; +}(Statement)); +exports.ReturnStatement = ReturnStatement; +/** Represents a single `case` within a `switch` statement. */ +var SwitchCase = /** @class */ (function (_super) { + __extends(SwitchCase, _super); + function SwitchCase() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.SWITCHCASE; + return _this; + } + return SwitchCase; +}(Node)); +exports.SwitchCase = SwitchCase; +/** Represents a `switch` statement. */ +var SwitchStatement = /** @class */ (function (_super) { + __extends(SwitchStatement, _super); + function SwitchStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.SWITCH; + return _this; + } + return SwitchStatement; +}(Statement)); +exports.SwitchStatement = SwitchStatement; +/** Represents a `throw` statement. */ +var ThrowStatement = /** @class */ (function (_super) { + __extends(ThrowStatement, _super); + function ThrowStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.THROW; + return _this; + } + return ThrowStatement; +}(Statement)); +exports.ThrowStatement = ThrowStatement; +/** Represents a `try` statement. */ +var TryStatement = /** @class */ (function (_super) { + __extends(TryStatement, _super); + function TryStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TRY; + return _this; + } + return TryStatement; +}(Statement)); +exports.TryStatement = TryStatement; +/** Represents a `type` declaration. */ +var TypeDeclaration = /** @class */ (function (_super) { + __extends(TypeDeclaration, _super); + function TypeDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.TYPEDECLARATION; + return _this; + } + return TypeDeclaration; +}(DeclarationStatement)); +exports.TypeDeclaration = TypeDeclaration; +/** Represents a variable declaration part of a {@link VariableStatement}. */ +var VariableDeclaration = /** @class */ (function (_super) { + __extends(VariableDeclaration, _super); + function VariableDeclaration() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.VARIABLEDECLARATION; + return _this; + } + return VariableDeclaration; +}(VariableLikeDeclarationStatement)); +exports.VariableDeclaration = VariableDeclaration; +/** Represents a variable statement wrapping {@link VariableDeclaration}s. */ +var VariableStatement = /** @class */ (function (_super) { + __extends(VariableStatement, _super); + function VariableStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.VARIABLE; + return _this; + } + return VariableStatement; +}(Statement)); +exports.VariableStatement = VariableStatement; +/** Represents a void statement dropping an expression's value. */ +var VoidStatement = /** @class */ (function (_super) { + __extends(VoidStatement, _super); + function VoidStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.VOID; + return _this; + } + return VoidStatement; +}(Statement)); +exports.VoidStatement = VoidStatement; +/** Represents a `while` statement. */ +var WhileStatement = /** @class */ (function (_super) { + __extends(WhileStatement, _super); + function WhileStatement() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.kind = NodeKind.WHILE; + return _this; + } + return WhileStatement; +}(Statement)); +exports.WhileStatement = WhileStatement; +/** Finds the first decorator matching the specified kind. */ +function findDecorator(kind, decorators) { + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + var decorator = decorators[i]; + if (decorator.decoratorKind == kind) + return decorator; + } + } + return null; +} +exports.findDecorator = findDecorator; +/** Mangles an external to an internal path. */ +function mangleInternalPath(path) { + if (path.endsWith(".ts")) + path = path.substring(0, path.length - 3); + return path; +} +exports.mangleInternalPath = mangleInternalPath; +/** Tests if the specified type node represents an omitted type. */ +function isTypeOmitted(type) { + if (type.kind == NodeKind.NAMEDTYPE) { + var name = type.name; + return !(name.next || name.identifier.text.length); + } + return false; +} +exports.isTypeOmitted = isTypeOmitted; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHLENBQUEsS0FBSzs7Ozs7Ozs7Ozs7Ozs7O0FBRVIsbUNBS2tCO0FBRWxCLHlDQUlxQjtBQVFaLGdCQVhQLGlCQUFLLENBV087QUFBRSxnQkFUZCxpQkFBSyxDQVNjO0FBTnJCLCtCQUlnQjtBQUloQixvQ0FBb0M7QUFDcEMsSUFBWSxRQTJFWDtBQTNFRCxXQUFZLFFBQVE7SUFFbEIsMkNBQU0sQ0FBQTtJQUVOLFFBQVE7SUFDUixpREFBUyxDQUFBO0lBQ1QsdURBQVksQ0FBQTtJQUNaLCtDQUFRLENBQUE7SUFDUix5REFBYSxDQUFBO0lBQ2IsaURBQVMsQ0FBQTtJQUVULGNBQWM7SUFDZCxtREFBVSxDQUFBO0lBQ1YsaURBQVMsQ0FBQTtJQUNULDJDQUFNLENBQUE7SUFDTix1Q0FBSSxDQUFBO0lBQ0osMENBQUssQ0FBQTtJQUNMLDBDQUFLLENBQUE7SUFDTCwwREFBYSxDQUFBO0lBQ2IsMENBQUssQ0FBQTtJQUNMLGdEQUFRLENBQUE7SUFDUixvREFBVSxDQUFBO0lBQ1YsOENBQU8sQ0FBQTtJQUNQLHNDQUFHLENBQUE7SUFDSCx3Q0FBSSxDQUFBO0lBQ0osMERBQWEsQ0FBQTtJQUNiLDREQUFjLENBQUE7SUFDZCw4Q0FBTyxDQUFBO0lBQ1AsMENBQUssQ0FBQTtJQUNMLHdDQUFJLENBQUE7SUFDSix3Q0FBSSxDQUFBO0lBQ0osc0RBQVcsQ0FBQTtJQUNYLHdEQUFZLENBQUE7SUFDWixzREFBVyxDQUFBO0lBRVgsYUFBYTtJQUNiLDBDQUFLLENBQUE7SUFDTCwwQ0FBSyxDQUFBO0lBQ0wsZ0RBQVEsQ0FBQTtJQUNSLG9DQUFFLENBQUE7SUFDRiwwQ0FBSyxDQUFBO0lBQ0wsNENBQU0sQ0FBQTtJQUNOLDBEQUFhLENBQUE7SUFDYix3REFBWSxDQUFBO0lBQ1osb0RBQVUsQ0FBQTtJQUNWLHNDQUFH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R0FPNUM7QUFQWSx3Q0FBYztBQVMzQiw2REFBNkQ7QUFDN0QsU0FBZ0IsYUFBYSxDQUFDLElBQW1CLEVBQUUsVUFBa0M7SUFDbkYsSUFBSSxVQUFVLEVBQUU7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pELElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLFNBQVMsQ0FBQyxhQUFhLElBQUksSUFBSTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztTQUN2RDtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBUkQsc0NBUUM7QUFFRCwrQ0FBK0M7QUFDL0MsU0FBZ0Isa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBSEQsZ0RBR0M7QUFFRCxtRUFBbUU7QUFDbkUsU0FBZ0IsYUFBYSxDQUFDLElBQWM7SUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7UUFDbkMsSUFBSSxJQUFJLEdBQW1CLElBQUssQ0FBQyxJQUFJLENBQUM7UUFDdEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNwRDtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQU5ELHNDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBYnN0cmFjdCBzeW50YXggdHJlZSByZXByZXNlbnRpbmcgYSBzb3VyY2UgZmlsZSBvbmNlIHBhcnNlZC5cbiAqIEBtb2R1bGUgYXN0XG4gKi8vKioqL1xuXG5pbXBvcnQge1xuICBDb21tb25GbGFncyxcbiAgQ29tbW9uU3ltYm9scyxcbiAgUEFUSF9ERUxJTUlURVIsXG4gIExJQlJBUllfUFJFRklYXG59IGZyb20gXCIuL2NvbW1vblwiO1xuXG5pbXBvcnQge1xuICBUb2tlbixcbiAgVG9rZW5pemVyLFxuICBSYW5nZVxufSBmcm9tIFwiLi90b2tlbml6ZXJcIjtcblxuaW1wb3J0IHtcbiAgbm9ybWFsaXplUGF0aCxcbiAgcmVzb2x2ZVBhdGgsXG4gIENoYXJDb2RlXG59IGZyb20gXCIuL3V0aWxcIjtcblxuZXhwb3J0IHsgVG9rZW4sIFJhbmdlIH07XG5cbi8qKiBJbmRpY2F0ZXMgdGhlIGtpbmQgb2YgYSBub2RlLiAqL1xuZXhwb3J0IGVudW0gTm9kZUtpbmQge1xuXG4gIFNPVVJDRSxcblxuICAvLyB0eXBlc1xuICBOQU1FRFRZUEUsXG4gIEZVTkNUSU9OVFlQRSxcbiAgVFlQRU5BTUUsXG4gIFRZUEVQQVJBTUVURVIsXG4gIFBBUkFNRVRFUixcblxuICAvLyBleHByZXNzaW9uc1xuICBJREVOVElGSUVSLFxuICBBU1NFUlRJT04sXG4gIEJJTkFSWSxcbiAgQ0FMTCxcbiAgQ0xBU1MsXG4gIENPTU1BLFxuICBFTEVNRU5UQUNDRVNTLFxuICBGQUxTRSxcbiAgRlVOQ1RJT04sXG4gIElOU1RBTkNFT0YsXG4gIExJVEVSQUwsXG4gIE5FVyxcbiAgTlVMTCxcbiAgUEFSRU5USEVTSVpFRCxcbiAgUFJPUEVSVFlBQ0NFU1MsXG4gIFRFUk5BUlksXG4gIFNVUEVSLFxuICBUSElTLFxuICBUUlVFLFxuICBDT05TVFJVQ1RPUixcbiAgVU5BUllQT1NURklYLFxuICBVTkFSWVBSRUZJWCxcblxuICAvLyBzdGF0ZW1lbnRzXG4gIEJMT0NLLFxuICBCUkVBSyxcbiAgQ09OVElOVUUsXG4gIERPLFxuICBFTVBUWSxcbiAgRVhQT1JULFxuICBFWFBPUlRERUZBVUxULFxuICBFWFBPUlRJTVBPUlQsXG4gIEVYUFJFU1NJT04sXG4gIEZPUixcbiAgSUYsXG4gIElNUE9SVCxcbiAgUkVUVVJOLFxuICBTV0lUQ0gsXG4gIFRIUk9XLFxuICBUUlksXG4gIFZBUklBQkxFLFxuICBWT0lELFxuICBXSElMRSxcblxuICAvLyBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzXG4gIENMQVNTREVDTEFSQVRJT04sXG4gIEVOVU1ERUNMQVJBVElPTixcbiAgRU5VTVZBTFVFREVDTEFSQVRJT04sXG4gIEZJRUxEREVDTEFSQVRJT04sXG4gIEZVTkNUSU9OREVDTEFSQVRJT04sXG4gIElNUE9SVERFQ0xBUkFUSU9OLFxuICBJTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OLFxuICBJTlRFUkZBQ0VERUNMQVJBVElPTixcbiAgTUVUSE9EREVDTEFSQVRJT04sXG4gIE5BTUVTUEFDRURFQ0xBUkFUSU9OLFxuICBUWVBFREVDTEFSQVRJT04sXG4gIFZBUklBQkxFREVDTEFSQVRJT04sXG5cbiAgLy8gc3BlY2lhbFxuICBERUNPUkFUT1IsXG4gIEVYUE9SVE1FTUJFUixcbiAgU1dJVENIQ0FTRSxcbiAgQ09NTUVOVFxufVxuXG4vKiogQ2hlY2tzIGlmIGEgbm9kZSByZXByZXNlbnRzIGEgY29uc3RhbnQgdmFsdWUuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZUlzQ29uc3RhbnRWYWx1ZShraW5kOiBOb2RlS2luZCk6IGJvb2wge1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIE5vZGVLaW5kLkxJVEVSQUw6XG4gICAgY2FzZSBOb2RlS2luZC5OVUxMOlxuICAgIGNhc2UgTm9kZUtpbmQuVFJVRTpcbiAgICBjYXNlIE5vZGVLaW5kLkZBTFNFOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3MgaWYgYSBub2RlIG1pZ2h0IGJlIGNhbGxhYmxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGVJc0NhbGxhYmxlKGtpbmQ6IE5vZGVLaW5kKTogYm9vbCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjpcbiAgICBjYXNlIE5vZGVLaW5kLkFTU0VSVElPTjogLy8gaWYga2luZD1OT05OVUxMXG4gICAgY2FzZSBOb2RlS2luZC5DQUxMOlxuICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzpcbiAgICBjYXNlIE5vZGVLaW5kLlBBUkVOVEhFU0laRUQ6XG4gICAgY2FzZSBOb2RlS2luZC5QUk9QRVJUWUFDQ0VTUzpcbiAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3MgaWYgYSBub2RlIG1pZ2h0IGJlIGNhbGxhYmxlIHdpdGggZ2VuZXJpYyBhcmd1bWVudHMuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZUlzR2VuZXJpY0NhbGxhYmxlKGtpbmQ6IE5vZGVLaW5kKTogYm9vbCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjpcbiAgICBjYXNlIE5vZGVLaW5kLlBST1BFUlRZQUNDRVNTOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBub2Rlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOb2RlIHtcblxuICAvKiogTm9kZSBraW5kIGluZGljYXRvci4gKi9cbiAga2luZDogTm9kZUtpbmQ7XG4gIC8qKiBTb3VyY2UgcmFuZ2UuICovXG4gIHJhbmdlOiBSYW5nZTtcblxuICAvLyB0eXBlc1xuXG4gIHN0YXRpYyBjcmVhdGVUeXBlTmFtZShcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZU5hbWUge1xuICAgIHZhciB0eXBlTmFtZSA9IG5ldyBUeXBlTmFtZSgpO1xuICAgIHR5cGVOYW1lLnJhbmdlID0gcmFuZ2U7XG4gICAgdHlwZU5hbWUuaWRlbnRpZmllciA9IG5hbWU7XG4gICAgdHlwZU5hbWUubmV4dCA9IG51bGw7XG4gICAgcmV0dXJuIHR5cGVOYW1lO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVNpbXBsZVR5cGVOYW1lKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZU5hbWUge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZVR5cGVOYW1lKE5vZGUuY3JlYXRlSWRlbnRpZmllckV4cHJlc3Npb24obmFtZSwgcmFuZ2UpLCByYW5nZSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTmFtZWRUeXBlKFxuICAgIG5hbWU6IFR5cGVOYW1lLFxuICAgIHR5cGVBcmd1bWVudHM6IFR5cGVOb2RlW10gfCBudWxsLFxuICAgIGlzTnVsbGFibGU6IGJvb2wsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE5hbWVkVHlwZU5vZGUge1xuICAgIHZhciB0eXBlID0gbmV3IE5hbWVkVHlwZU5vZGUoKTtcbiAgICB0eXBlLnJhbmdlID0gcmFuZ2U7XG4gICAgdHlwZS5uYW1lID0gbmFtZTtcbiAgICB0eXBlLnR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzO1xuICAgIHR5cGUuaXNOdWxsYWJsZSA9IGlzTnVsbGFibGU7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRnVuY3Rpb25UeXBlKFxuICAgIHBhcmFtZXRlcnM6IFBhcmFtZXRlck5vZGVbXSxcbiAgICByZXR1cm5UeXBlOiBUeXBlTm9kZSxcbiAgICBleHBsaWNpdFRoaXNUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbCxcbiAgICBpc051bGxhYmxlOiBib29sLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGdW5jdGlvblR5cGVOb2RlIHtcbiAgICB2YXIgdHlwZSA9IG5ldyBGdW5jdGlvblR5cGVOb2RlKCk7XG4gICAgdHlwZS5yYW5nZSA9IHJhbmdlO1xuICAgIHR5cGUucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgdHlwZS5yZXR1cm5UeXBlID0gcmV0dXJuVHlwZTtcbiAgICB0eXBlLmV4cGxpY2l0VGhpc1R5cGUgPSBleHBsaWNpdFRoaXNUeXBlO1xuICAgIHR5cGUuaXNOdWxsYWJsZSA9IGlzTnVsbGFibGU7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlT21pdHRlZFR5cGUoXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE5hbWVkVHlwZU5vZGUge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZU5hbWVkVHlwZShcbiAgICAgIE5vZGUuY3JlYXRlU2ltcGxlVHlwZU5hbWUoXCJcIiwgcmFuZ2UpLFxuICAgICAgbnVsbCxcbiAgICAgIGZhbHNlLFxuICAgICAgcmFuZ2VcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVR5cGVQYXJhbWV0ZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZW5kc1R5cGU6IE5hbWVkVHlwZU5vZGUgfCBudWxsLFxuICAgIGRlZmF1bHRUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZVBhcmFtZXRlck5vZGUge1xuICAgIHZhciBlbGVtID0gbmV3IFR5cGVQYXJhbWV0ZXJOb2RlKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0ubmFtZSA9IG5hbWU7XG4gICAgZWxlbS5leHRlbmRzVHlwZSA9IGV4dGVuZHNUeXBlO1xuICAgIGVsZW0uZGVmYXVsdFR5cGUgPSBkZWZhdWx0VHlwZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVQYXJhbWV0ZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZTogVHlwZU5vZGUsXG4gICAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGtpbmQ6IFBhcmFtZXRlcktpbmQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFBhcmFtZXRlck5vZGUge1xuICAgIHZhciBlbGVtID0gbmV3IFBhcmFtZXRlck5vZGUoKTtcbiAgICBlbGVtLnJhbmdlID0gcmFuZ2U7XG4gICAgZWxlbS5uYW1lID0gbmFtZTtcbiAgICBlbGVtLnR5cGUgPSB0eXBlO1xuICAgIGVsZW0uaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcbiAgICBlbGVtLnBhcmFtZXRlcktpbmQgPSBraW5kO1xuICAgIHJldHVybiBlbGVtO1xuICB9XG5cbiAgLy8gc3BlY2lhbFxuXG4gIHN0YXRpYyBjcmVhdGVEZWNvcmF0b3IoXG4gICAgbmFtZTogRXhwcmVzc2lvbixcbiAgICBhcmdzOiBFeHByZXNzaW9uW10gfCBudWxsLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBEZWNvcmF0b3JOb2RlIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBEZWNvcmF0b3JOb2RlKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHN0bXQuZGVjb3JhdG9yS2luZCA9IGRlY29yYXRvck5hbWVUb0tpbmQobmFtZSk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29tbWVudChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAga2luZDogQ29tbWVudEtpbmQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbW1lbnROb2RlIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBDb21tZW50Tm9kZSgpO1xuICAgIG5vZGUucmFuZ2UgPSByYW5nZTtcbiAgICBub2RlLmNvbW1lbnRLaW5kID0ga2luZDtcbiAgICBub2RlLnRleHQgPSB0ZXh0O1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gZXhwcmVzc2lvbnNcblxuICBzdGF0aWMgY3JlYXRlSWRlbnRpZmllckV4cHJlc3Npb24oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICBpc1F1b3RlZDogYm9vbCA9IGZhbHNlXG4gICk6IElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBJZGVudGlmaWVyRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLnRleHQgPSBuYW1lOyAvLyBUT0RPOiBleHRyYWN0IGZyb20gcmFuZ2VcbiAgICBleHByLnN5bWJvbCA9IG5hbWU7IC8vIFRPRE86IFN5bWJvbC5mb3IobmFtZSlcbiAgICBleHByLmlzUXVvdGVkID0gaXNRdW90ZWQ7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRW1wdHlJZGVudGlmaWVyRXhwcmVzc2lvbihcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IElkZW50aWZpZXJFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIudGV4dCA9IFwiXCI7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihcbiAgICBlbGVtZW50czogKEV4cHJlc3Npb24gfCBudWxsKVtdLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBBcnJheUxpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBBcnJheUxpdGVyYWxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZWxlbWVudEV4cHJlc3Npb25zID0gZWxlbWVudHM7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQXNzZXJ0aW9uRXhwcmVzc2lvbihcbiAgICBhc3NlcnRpb25LaW5kOiBBc3NlcnRpb25LaW5kLFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgdG9UeXBlOiBUeXBlTm9kZSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEFzc2VydGlvbkV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEFzc2VydGlvbkV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5hc3NlcnRpb25LaW5kID0gYXNzZXJ0aW9uS2luZDtcbiAgICBleHByLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICAgIGV4cHIudG9UeXBlID0gdG9UeXBlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oXG4gICAgb3BlcmF0b3I6IFRva2VuLFxuICAgIGxlZnQ6IEV4cHJlc3Npb24sXG4gICAgcmlnaHQ6IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEJpbmFyeUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEJpbmFyeUV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgIGV4cHIubGVmdCA9IGxlZnQ7XG4gICAgZXhwci5yaWdodCA9IHJpZ2h0O1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUNhbGxFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgdHlwZUFyZ3M6IFR5cGVOb2RlW10gfCBudWxsLFxuICAgIGFyZ3M6IEV4cHJlc3Npb25bXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQ2FsbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IENhbGxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci50eXBlQXJndW1lbnRzID0gdHlwZUFyZ3M7XG4gICAgZXhwci5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUNsYXNzRXhwcmVzc2lvbihcbiAgICBkZWNsYXJhdGlvbjogQ2xhc3NEZWNsYXJhdGlvblxuICApOiBDbGFzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IENsYXNzRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSBkZWNsYXJhdGlvbi5yYW5nZTtcbiAgICBleHByLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29tbWFFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb25zOiBFeHByZXNzaW9uW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbW1hRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgQ29tbWFFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbnMgPSBleHByZXNzaW9ucztcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDb25zdHJ1Y3RvckV4cHJlc3Npb24oXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbnN0cnVjdG9yRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgQ29uc3RydWN0b3JFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgZWxlbWVudDogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci5lbGVtZW50RXhwcmVzc2lvbiA9IGVsZW1lbnQ7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRmFsc2VFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGYWxzZUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZhbHNlRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGbG9hdExpdGVyYWxFeHByZXNzaW9uKFxuICAgIHZhbHVlOiBmNjQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihcbiAgICBkZWNsYXJhdGlvbjogRnVuY3Rpb25EZWNsYXJhdGlvblxuICApOiBGdW5jdGlvbkV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZ1bmN0aW9uRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSBkZWNsYXJhdGlvbi5yYW5nZTtcbiAgICBleHByLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2VPZkV4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICBpc1R5cGU6IFR5cGVOb2RlLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBJbnN0YW5jZU9mRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgSW5zdGFuY2VPZkV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICBleHByLmlzVHlwZSA9IGlzVHlwZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oXG4gICAgdmFsdWU6IEk2NCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU5ld0V4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICB0eXBlQXJnczogVHlwZU5vZGVbXSB8IG51bGwsXG4gICAgYXJnczogRXhwcmVzc2lvbltdLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOZXdFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBOZXdFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci50eXBlQXJndW1lbnRzID0gdHlwZUFyZ3M7XG4gICAgZXhwci5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU51bGxFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOdWxsRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgTnVsbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oXG4gICAgbmFtZXM6IElkZW50aWZpZXJFeHByZXNzaW9uW10sXG4gICAgdmFsdWVzOiBFeHByZXNzaW9uW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLm5hbWVzID0gbmFtZXM7XG4gICAgZXhwci52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogUGFyZW50aGVzaXplZEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcHJvcGVydHk6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICAgIGV4cHIucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVSZWdleHBMaXRlcmFsRXhwcmVzc2lvbihcbiAgICBwYXR0ZXJuOiBzdHJpbmcsXG4gICAgZmxhZ3M6IHN0cmluZyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFJlZ2V4cExpdGVyYWxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIucGF0dGVybiA9IHBhdHRlcm47XG4gICAgZXhwci5wYXR0ZXJuRmxhZ3MgPSBmbGFncztcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUZXJuYXJ5RXhwcmVzc2lvbihcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgaWZUaGVuOiBFeHByZXNzaW9uLFxuICAgIGlmRWxzZTogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGVybmFyeUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFRlcm5hcnlFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgIGV4cHIuaWZUaGVuID0gaWZUaGVuO1xuICAgIGV4cHIuaWZFbHNlID0gaWZFbHNlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLnZhbHVlID0gdmFsdWU7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlU3VwZXJFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBTdXBlckV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFN1cGVyRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUaGlzRXhwcmVzc2lvbihcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGhpc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFRoaXNFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRydWVFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBUcnVlRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVHJ1ZUV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVW5hcnlQb3N0Zml4RXhwcmVzc2lvbihcbiAgICBvcGVyYXRvcjogVG9rZW4sXG4gICAgb3BlcmFuZDogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVW5hcnlQb3N0Zml4RXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVW5hcnlQb3N0Zml4RXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgZXhwci5vcGVyYW5kID0gb3BlcmFuZDtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVVbmFyeVByZWZpeEV4cHJlc3Npb24oXG4gICAgb3BlcmF0b3I6IFRva2VuLFxuICAgIG9wZXJhbmQ6IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFVuYXJ5UHJlZml4RXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVW5hcnlQcmVmaXhFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICBleHByLm9wZXJhbmQgPSBvcGVyYW5kO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgLy8gc3RhdGVtZW50c1xuXG4gIHN0YXRpYyBjcmVhdGVCbG9ja1N0YXRlbWVudChcbiAgICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQmxvY2tTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEJsb2NrU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoXG4gICAgbGFiZWw6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQnJlYWtTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEJyZWFrU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubGFiZWwgPSBsYWJlbDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDbGFzc0RlY2xhcmF0aW9uKFxuICAgIGlkZW50aWZpZXI6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGwsIC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgICBpbXBsZW1lbnRzVHlwZXM6IE5hbWVkVHlwZU5vZGVbXSB8IG51bGwsIC8vIGNhbid0IGJlIGZ1bmN0aW9uc1xuICAgIG1lbWJlcnM6IERlY2xhcmF0aW9uU3RhdGVtZW50W10sXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENsYXNzRGVjbGFyYXRpb24ge1xuICAgIHZhciBzdG10ID0gbmV3IENsYXNzRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IGlkZW50aWZpZXI7XG4gICAgc3RtdC50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIHN0bXQuZXh0ZW5kc1R5cGUgPSBleHRlbmRzVHlwZTtcbiAgICBzdG10LmltcGxlbWVudHNUeXBlcyA9IGltcGxlbWVudHNUeXBlcztcbiAgICBzdG10Lm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoXG4gICAgbGFiZWw6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQ29udGludWVTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IENvbnRpbnVlU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubGFiZWwgPSBsYWJlbDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVEb1N0YXRlbWVudChcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudCxcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IERvU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBEb1N0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFbXB0eVN0YXRlbWVudChcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRW1wdHlTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEVtcHR5U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUVudW1EZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICBtZW1iZXJzOiBFbnVtVmFsdWVEZWNsYXJhdGlvbltdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFbnVtRGVjbGFyYXRpb24ge1xuICAgIHZhciBzdG10ID0gbmV3IEVudW1EZWNsYXJhdGlvbigpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmZsYWdzID0gZmxhZ3M7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LnZhbHVlcyA9IG1lbWJlcnM7XG4gICAgc3RtdC5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycztcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFbnVtVmFsdWVEZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB2YWx1ZTogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFbnVtVmFsdWVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgRW51bVZhbHVlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUV4cG9ydFN0YXRlbWVudChcbiAgICBtZW1iZXJzOiBFeHBvcnRNZW1iZXJbXSB8IG51bGwsXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGlzRGVjbGFyZTogYm9vbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRXhwb3J0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5tZW1iZXJzID0gbWVtYmVycztcbiAgICBzdG10LnBhdGggPSBwYXRoO1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQYXRoKHBhdGgudmFsdWUpO1xuICAgICAgaWYgKHBhdGgudmFsdWUuc3RhcnRzV2l0aChcIi5cIikpIHsgLy8gcmVsYXRpdmVcbiAgICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoLFxuICAgICAgICAgIHJhbmdlLnNvdXJjZS5ub3JtYWxpemVkUGF0aFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHsgLy8gYWJzb2x1dGVcbiAgICAgICAgaWYgKCFub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKExJQlJBUllfUFJFRklYKSkge1xuICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoID0gTElCUkFSWV9QUkVGSVggKyBub3JtYWxpemVkUGF0aDtcbiAgICAgICAgfVxuICAgICAgICBzdG10Lm5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGg7XG4gICAgICB9XG4gICAgICBzdG10LmludGVybmFsUGF0aCA9IG1hbmdsZUludGVybmFsUGF0aChzdG10Lm5vcm1hbGl6ZWRQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IG51bGw7XG4gICAgICBzdG10LmludGVybmFsUGF0aCA9IG51bGw7XG4gICAgfVxuICAgIHN0bXQuaXNEZWNsYXJlID0gaXNEZWNsYXJlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoXG4gICAgZGVjbGFyYXRpb246IERlY2xhcmF0aW9uU3RhdGVtZW50LFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFeHBvcnREZWZhdWx0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnREZWZhdWx0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5kZWNsYXJhdGlvbiA9IGRlY2xhcmF0aW9uO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHBvcnRJbXBvcnRTdGF0ZW1lbnQoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZXJuYWxOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRXhwb3J0SW1wb3J0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LmV4dGVybmFsTmFtZSA9IGV4dGVybmFsTmFtZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHBvcnRNZW1iZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZXJuYWxOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEV4cG9ydE1lbWJlciB7XG4gICAgdmFyIGVsZW0gPSBuZXcgRXhwb3J0TWVtYmVyKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0ubG9jYWxOYW1lID0gbmFtZTtcbiAgICBpZiAoIWV4dGVybmFsTmFtZSkgZXh0ZXJuYWxOYW1lID0gbmFtZTtcbiAgICBlbGVtLmV4cG9ydGVkTmFtZSA9IGV4dGVybmFsTmFtZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb25cbiAgKTogRXhwcmVzc2lvblN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgRXhwcmVzc2lvblN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSBleHByZXNzaW9uLnJhbmdlO1xuICAgIHN0bXQuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSWZTdGF0ZW1lbnQoXG4gICAgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIGlmVHJ1ZTogU3RhdGVtZW50LFxuICAgIGlmRmFsc2U6IFN0YXRlbWVudCB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IElmU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBJZlN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICBzdG10LmlmVHJ1ZSA9IGlmVHJ1ZTtcbiAgICBzdG10LmlmRmFsc2UgPSBpZkZhbHNlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUltcG9ydFN0YXRlbWVudChcbiAgICBkZWNsczogSW1wb3J0RGVjbGFyYXRpb25bXSB8IG51bGwsXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEltcG9ydFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZGVjbGFyYXRpb25zID0gZGVjbHM7XG4gICAgc3RtdC5uYW1lc3BhY2VOYW1lID0gbnVsbDtcbiAgICBzdG10LnBhdGggPSBwYXRoO1xuICAgIHZhciBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgocGF0aC52YWx1ZSk7XG4gICAgaWYgKHBhdGgudmFsdWUuc3RhcnRzV2l0aChcIi5cIikpIHsgLy8gcmVsYXRpdmUgaW4gcHJvamVjdFxuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgcmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoXG4gICAgICApO1xuICAgIH0gZWxzZSB7IC8vIGFic29sdXRlIGluIGxpYnJhcnlcbiAgICAgIGlmICghbm9ybWFsaXplZFBhdGguc3RhcnRzV2l0aChMSUJSQVJZX1BSRUZJWCkpIHtcbiAgICAgICAgbm9ybWFsaXplZFBhdGggPSBMSUJSQVJZX1BSRUZJWCArIG5vcm1hbGl6ZWRQYXRoO1xuICAgICAgfVxuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoO1xuICAgIH1cbiAgICBzdG10LmludGVybmFsUGF0aCA9IG1hbmdsZUludGVybmFsUGF0aChzdG10Lm5vcm1hbGl6ZWRQYXRoKTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbXBvcnRTdGF0ZW1lbnRXaXRoV2lsZGNhcmQoXG4gICAgaWRlbnRpZmllcjogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEltcG9ydFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZGVjbGFyYXRpb25zID0gbnVsbDtcbiAgICBzdG10Lm5hbWVzcGFjZU5hbWUgPSBpZGVudGlmaWVyO1xuICAgIHN0bXQucGF0aCA9IHBhdGg7XG4gICAgdmFyIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUGF0aChwYXRoLnZhbHVlKTtcbiAgICBpZiAocGF0aC52YWx1ZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgcmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW5vcm1hbGl6ZWRQYXRoLnN0YXJ0c1dpdGgoTElCUkFSWV9QUkVGSVgpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWRQYXRoID0gTElCUkFSWV9QUkVGSVggKyBub3JtYWxpemVkUGF0aDtcbiAgICAgIH1cbiAgICAgIHN0bXQubm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aDtcbiAgICB9XG4gICAgc3RtdC5pbnRlcm5hbFBhdGggPSBtYW5nbGVJbnRlcm5hbFBhdGgoc3RtdC5ub3JtYWxpemVkUGF0aCk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24oXG4gICAgZm9yZWlnbk5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSW1wb3J0RGVjbGFyYXRpb24ge1xuICAgIHZhciBlbGVtID0gbmV3IEltcG9ydERlY2xhcmF0aW9uKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0uZm9yZWlnbk5hbWUgPSBmb3JlaWduTmFtZTtcbiAgICBpZiAoIW5hbWUpIG5hbWUgPSBmb3JlaWduTmFtZTtcbiAgICBlbGVtLm5hbWUgPSBuYW1lO1xuICAgIHJldHVybiBlbGVtO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUludGVyZmFjZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGwsIC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgICBtZW1iZXJzOiBEZWNsYXJhdGlvblN0YXRlbWVudFtdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBJbnRlcmZhY2VEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW50ZXJmYWNlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIHN0bXQuZXh0ZW5kc1R5cGUgPSBleHRlbmRzVHlwZTtcbiAgICBzdG10Lm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRmllbGREZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB0eXBlOiBUeXBlTm9kZSB8IG51bGwsXG4gICAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGaWVsZERlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBGaWVsZERlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZSA9IHR5cGU7XG4gICAgc3RtdC5pbml0aWFsaXplciA9IGluaXRpYWxpemVyO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRm9yU3RhdGVtZW50KFxuICAgIGluaXRpYWxpemVyOiBTdGF0ZW1lbnQgfCBudWxsLFxuICAgIGNvbmRpdGlvbjogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgaW5jcmVtZW50b3I6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50LFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGb3JTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEZvclN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXI7XG4gICAgc3RtdC5jb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgc3RtdC5pbmNyZW1lbnRvciA9IGluY3JlbWVudG9yO1xuICAgIHN0bXQuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsLFxuICAgIHNpZ25hdHVyZTogRnVuY3Rpb25UeXBlTm9kZSxcbiAgICBib2R5OiBTdGF0ZW1lbnQgfCBudWxsLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIGFycm93S2luZDogQXJyb3dLaW5kLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGdW5jdGlvbkRlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBGdW5jdGlvbkRlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICBzdG10LnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICBzdG10LmJvZHkgPSBib2R5O1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgc3RtdC5hcnJvd0tpbmQgPSBhcnJvd0tpbmQ7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbihcbiAgICBrZXlUeXBlOiBOYW1lZFR5cGVOb2RlLFxuICAgIHZhbHVlVHlwZTogVHlwZU5vZGUsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24ge1xuICAgIHZhciBlbGVtID0gbmV3IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24oKTtcbiAgICBlbGVtLnJhbmdlID0gcmFuZ2U7XG4gICAgZWxlbS5rZXlUeXBlID0ga2V5VHlwZTtcbiAgICBlbGVtLnZhbHVlVHlwZSA9IHZhbHVlVHlwZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVNZXRob2REZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB0eXBlUGFyYW1ldGVyczogVHlwZVBhcmFtZXRlck5vZGVbXSB8IG51bGwsXG4gICAgc2lnbmF0dXJlOiBGdW5jdGlvblR5cGVOb2RlLFxuICAgIGJvZHk6IFN0YXRlbWVudCB8IG51bGwsXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE1ldGhvZERlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBNZXRob2REZWNsYXJhdGlvbigpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmZsYWdzID0gZmxhZ3M7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgc3RtdC5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgc3RtdC5ib2R5ID0gYm9keTtcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU5hbWVzcGFjZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIG1lbWJlcnM6IFN0YXRlbWVudFtdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOYW1lc3BhY2VEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgTmFtZXNwYWNlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC5tZW1iZXJzID0gbWVtYmVycztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVJldHVyblN0YXRlbWVudChcbiAgICB2YWx1ZTogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFJldHVyblN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgUmV0dXJuU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoXG4gICAgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIGNhc2VzOiBTd2l0Y2hDYXNlW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFN3aXRjaFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgU3dpdGNoU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgIHN0bXQuY2FzZXMgPSBjYXNlcztcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVTd2l0Y2hDYXNlKFxuICAgIGxhYmVsOiBFeHByZXNzaW9uIHwgbnVsbCxcbiAgICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogU3dpdGNoQ2FzZSB7XG4gICAgdmFyIGVsZW0gPSBuZXcgU3dpdGNoQ2FzZSgpO1xuICAgIGVsZW0ucmFuZ2UgPSByYW5nZTtcbiAgICBlbGVtLmxhYmVsID0gbGFiZWw7XG4gICAgZWxlbS5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUaHJvd1N0YXRlbWVudChcbiAgICB2YWx1ZTogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGhyb3dTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IFRocm93U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUcnlTdGF0ZW1lbnQoXG4gICAgc3RhdGVtZW50czogU3RhdGVtZW50W10sXG4gICAgY2F0Y2hWYXJpYWJsZTogSWRlbnRpZmllckV4cHJlc3Npb24gfCBudWxsLFxuICAgIGNhdGNoU3RhdGVtZW50czogU3RhdGVtZW50W10gfCBudWxsLFxuICAgIGZpbmFsbHlTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFRyeVN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgVHJ5U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgc3RtdC5jYXRjaFZhcmlhYmxlID0gY2F0Y2hWYXJpYWJsZTtcbiAgICBzdG10LmNhdGNoU3RhdGVtZW50cyA9IGNhdGNoU3RhdGVtZW50cztcbiAgICBzdG10LmZpbmFsbHlTdGF0ZW1lbnRzID0gZmluYWxseVN0YXRlbWVudHM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVHlwZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBhbGlhczogVHlwZU5vZGUsXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFR5cGVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgVHlwZURlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICBzdG10LnR5cGUgPSBhbGlhcztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KFxuICAgIGRlY2xhcmF0aW9uczogVmFyaWFibGVEZWNsYXJhdGlvbltdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFZhcmlhYmxlU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBWYXJpYWJsZVN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmRlY2xhcmF0aW9ucyA9IGRlY2xhcmF0aW9ucztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZTogVHlwZU5vZGUgfCBudWxsLFxuICAgIGluaXRpYWxpemVyOiBFeHByZXNzaW9uIHwgbnVsbCxcbiAgICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JOb2RlW10gfCBudWxsLFxuICAgIGZsYWdzOiBDb21tb25GbGFncyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVmFyaWFibGVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIGVsZW0gPSBuZXcgVmFyaWFibGVEZWNsYXJhdGlvbigpO1xuICAgIGVsZW0ucmFuZ2UgPSByYW5nZTtcbiAgICBlbGVtLmZsYWdzID0gZmxhZ3M7XG4gICAgZWxlbS5uYW1lID0gbmFtZTtcbiAgICBlbGVtLnR5cGUgPSB0eXBlO1xuICAgIGVsZW0uaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcbiAgICBlbGVtLmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzOyAvLyBpbmhlcml0ZWRcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVWb2lkU3RhdGVtZW50KFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFZvaWRTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IFZvaWRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVXaGlsZVN0YXRlbWVudChcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFdoaWxlU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBXaGlsZVN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICBzdG10LnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxufVxuXG4vLyB0eXBlc1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHlwZU5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAgLy8ga2luZCB2YXJpZXNcblxuICAvKiogV2hldGhlciBudWxsYWJsZSBvciBub3QuICovXG4gIGlzTnVsbGFibGU6IGJvb2w7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdHlwZSBuYW1lLiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVOYW1lIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5UWVBFTkFNRTtcblxuICAvKiogSWRlbnRpZmllciBvZiB0aGlzIHBhcnQuICovXG4gIGlkZW50aWZpZXI6IElkZW50aWZpZXJFeHByZXNzaW9uO1xuICAvKiogTmV4dCBwYXJ0IG9mIHRoZSB0eXBlIG5hbWUgb3IgYG51bGxgIGlmIHRoaXMgaXMgdGhlIGxhc3QgcGFydC4gKi9cbiAgbmV4dDogVHlwZU5hbWUgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG5hbWVkIHR5cGUuICovXG5leHBvcnQgY2xhc3MgTmFtZWRUeXBlTm9kZSBleHRlbmRzIFR5cGVOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLk5BTUVEVFlQRTtcblxuICAvKiogVHlwZSBuYW1lLiAqL1xuICBuYW1lOiBUeXBlTmFtZTtcbiAgLyoqIFR5cGUgYXJndW1lbnQgcmVmZXJlbmNlcy4gKi9cbiAgdHlwZUFyZ3VtZW50czogVHlwZU5vZGVbXSB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdHlwZS4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvblR5cGVOb2RlIGV4dGVuZHMgVHlwZU5vZGUge1xuICBraW5kID0gTm9kZUtpbmQuRlVOQ1RJT05UWVBFO1xuXG4gIC8qKiBBY2NlcHRlZCBwYXJhbWV0ZXJzLiAqL1xuICBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJOb2RlW107XG4gIC8qKiBSZXR1cm4gdHlwZS4gKi9cbiAgcmV0dXJuVHlwZTogVHlwZU5vZGU7XG4gIC8qKiBFeHBsaWNpdGx5IHByb3ZpZGVkIHRoaXMgdHlwZSwgaWYgYW55LiAqL1xuICBleHBsaWNpdFRoaXNUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbDsgLy8gY2FuJ3QgYmUgYSBmdW5jdGlvblxufVxuXG4vKiogUmVwcmVzZW50cyBhIHR5cGUgcGFyYW1ldGVyLiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSO1xuXG4gIC8qKiBJZGVudGlmaWVyIHJlZmVyZW5jZS4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBFeHRlbmRlZCB0eXBlIHJlZmVyZW5jZSwgaWYgYW55LiAqL1xuICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGw7IC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgLyoqIERlZmF1bHQgdHlwZSBpZiBvbWl0dGVkLCBpZiBhbnkuICovXG4gIGRlZmF1bHRUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbDsgLy8gY2FuJ3QgYmUgYSBmdW5jdGlvblxufVxuXG4vKiogUmVwcmVzZW50cyB0aGUga2luZCBvZiBhIHBhcmFtZXRlci4gKi9cbmV4cG9ydCBlbnVtIFBhcmFtZXRlcktpbmQge1xuICAvKiogTm8gc3BlY2lmaWMgZmxhZ3MuICovXG4gIERFRkFVTFQsXG4gIC8qKiBJcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuICovXG4gIE9QVElPTkFMLFxuICAvKiogSXMgYSByZXN0IHBhcmFtZXRlci4gKi9cbiAgUkVTVFxufVxuXG4vKiogUmVwcmVzZW50cyBhIGZ1bmN0aW9uIHBhcmFtZXRlci4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5QQVJBTUVURVI7XG5cbiAgLyoqIFBhcmFtZXRlciBraW5kLiAqL1xuICBwYXJhbWV0ZXJLaW5kOiBQYXJhbWV0ZXJLaW5kO1xuICAvKiogUGFyYW1ldGVyIG5hbWUuICovXG4gIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xuICAvKiogUGFyYW1ldGVyIHR5cGUuICovXG4gIHR5cGU6IFR5cGVOb2RlO1xuICAvKiogSW5pdGlhbGl6ZXIgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4gKi9cbiAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogSW1wbGljaXQgZmllbGQgZGVjbGFyYXRpb24sIGlmIGFwcGxpY2FibGUuICovXG4gIGltcGxpY2l0RmllbGREZWNsYXJhdGlvbjogRmllbGREZWNsYXJhdGlvbiB8IG51bGwgPSBudWxsO1xuICAvKiogQ29tbW9uIGZsYWdzIGluZGljYXRpbmcgc3BlY2lmaWMgdHJhaXRzLiAqL1xuICBmbGFnczogQ29tbW9uRmxhZ3MgPSBDb21tb25GbGFncy5OT05FO1xuXG4gIC8qKiBUZXN0cyBpZiB0aGlzIG5vZGUgaGFzIHRoZSBzcGVjaWZpZWQgZmxhZyBvciBmbGFncy4gKi9cbiAgaXMoZmxhZzogQ29tbW9uRmxhZ3MpOiBib29sIHsgcmV0dXJuICh0aGlzLmZsYWdzICYgZmxhZykgPT0gZmxhZzsgfVxuICAvKiogVGVzdHMgaWYgdGhpcyBub2RlIGhhcyBvbmUgb2YgdGhlIHNwZWNpZmllZCBmbGFncy4gKi9cbiAgaXNBbnkoZmxhZzogQ29tbW9uRmxhZ3MpOiBib29sIHsgcmV0dXJuICh0aGlzLmZsYWdzICYgZmxhZykgIT0gMDsgfVxuICAvKiogU2V0cyBhIHNwZWNpZmljIGZsYWcgb3IgZmxhZ3MuICovXG4gIHNldChmbGFnOiBDb21tb25GbGFncyk6IHZvaWQgeyB0aGlzLmZsYWdzIHw9IGZsYWc7IH1cbn1cblxuLy8gc3BlY2lhbFxuXG4vKiogQnVpbHQtaW4gZGVjb3JhdG9yIGtpbmRzLiAqL1xuZXhwb3J0IGVudW0gRGVjb3JhdG9yS2luZCB7XG4gIENVU1RPTSxcbiAgR0xPQkFMLFxuICBPUEVSQVRPUixcbiAgT1BFUkFUT1JfQklOQVJZLFxuICBPUEVSQVRPUl9QUkVGSVgsXG4gIE9QRVJBVE9SX1BPU1RGSVgsXG4gIFVOTUFOQUdFRCxcbiAgU0VBTEVELFxuICBJTkxJTkUsXG4gIEVYVEVSTkFMLFxuICBCVUlMVElOLFxuICBMQVpZLFxuICBVTlNBRkVcbn1cblxuLyoqIFJldHVybnMgdGhlIGtpbmQgb2YgdGhlIHNwZWNpZmllZCBkZWNvcmF0b3IuIERlZmF1bHRzIHRvIHtAbGluayBEZWNvcmF0b3JLaW5kLkNVU1RPTX0uICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb3JhdG9yTmFtZVRvS2luZChuYW1lOiBFeHByZXNzaW9uKTogRGVjb3JhdG9yS2luZCB7XG4gIC8vIEBnbG9iYWwsIEBpbmxpbmUsIEBvcGVyYXRvciwgQHNlYWxlZCwgQHVubWFuYWdlZFxuICBpZiAobmFtZS5raW5kID09IE5vZGVLaW5kLklERU5USUZJRVIpIHtcbiAgICBsZXQgbmFtZVN0ciA9ICg8SWRlbnRpZmllckV4cHJlc3Npb24+bmFtZSkudGV4dDtcbiAgICBhc3NlcnQobmFtZVN0ci5sZW5ndGgpO1xuICAgIHN3aXRjaCAobmFtZVN0ci5jaGFyQ29kZUF0KDApKSB7XG4gICAgICBjYXNlIENoYXJDb2RlLmI6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJidWlsdGluXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLkJVSUxUSU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5lOiB7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwiZXh0ZXJuYWxcIikgcmV0dXJuIERlY29yYXRvcktpbmQuRVhURVJOQUw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5nOiB7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwiZ2xvYmFsXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLkdMT0JBTDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLmk6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJpbmxpbmVcIikgcmV0dXJuIERlY29yYXRvcktpbmQuSU5MSU5FO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUubDoge1xuICAgICAgICBpZiAobmFtZVN0ciA9PSBcImxhenlcIikgcmV0dXJuIERlY29yYXRvcktpbmQuTEFaWTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLm86IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJvcGVyYXRvclwiKSByZXR1cm4gRGVjb3JhdG9yS2luZC5PUEVSQVRPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLnM6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJzZWFsZWRcIikgcmV0dXJuIERlY29yYXRvcktpbmQuU0VBTEVEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUudToge1xuICAgICAgICBpZiAobmFtZVN0ciA9PSBcInVubWFuYWdlZFwiKSByZXR1cm4gRGVjb3JhdG9yS2luZC5VTk1BTkFHRUQ7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwidW5zYWZlXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLlVOU0FGRTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgIG5hbWUua2luZCA9PSBOb2RlS2luZC5QUk9QRVJUWUFDQ0VTUyAmJlxuICAgICg8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5hbWUpLmV4cHJlc3Npb24ua2luZCA9PSBOb2RlS2luZC5JREVOVElGSUVSXG4gICkge1xuICAgIGxldCBuYW1lU3RyID0gKDxJZGVudGlmaWVyRXhwcmVzc2lvbj4oPFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj5uYW1lKS5leHByZXNzaW9uKS50ZXh0O1xuICAgIGFzc2VydChuYW1lU3RyLmxlbmd0aCk7XG4gICAgbGV0IHByb3BTdHIgPSAoPFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj5uYW1lKS5wcm9wZXJ0eS50ZXh0O1xuICAgIGFzc2VydChwcm9wU3RyLmxlbmd0aCk7XG4gICAgLy8gQG9wZXJhdG9yLmJpbmFyeSwgQG9wZXJhdG9yLnByZWZpeCwgQG9wZXJhdG9yLnBvc3RmaXhcbiAgICBpZiAobmFtZVN0ciA9PSBcIm9wZXJhdG9yXCIpIHtcbiAgICAgIHN3aXRjaCAocHJvcFN0ci5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuYjoge1xuICAgICAgICAgIGlmIChwcm9wU3RyID09IFwiYmluYXJ5XCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLk9QRVJBVE9SX0JJTkFSWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLnA6IHtcbiAgICAgICAgICBzd2l0Y2ggKHByb3BTdHIpIHtcbiAgICAgICAgICAgIGNhc2UgXCJwcmVmaXhcIjogcmV0dXJuIERlY29yYXRvcktpbmQuT1BFUkFUT1JfUFJFRklYO1xuICAgICAgICAgICAgY2FzZSBcInBvc3RmaXhcIjogcmV0dXJuIERlY29yYXRvcktpbmQuT1BFUkFUT1JfUE9TVEZJWDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIERlY29yYXRvcktpbmQuQ1VTVE9NO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGRlY29yYXRvci4gKi9cbmV4cG9ydCBjbGFzcyBEZWNvcmF0b3JOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5ERUNPUkFUT1I7XG5cbiAgLyoqIEJ1aWx0LWluIGtpbmQsIGlmIGFwcGxpY2FibGUuICovXG4gIGRlY29yYXRvcktpbmQ6IERlY29yYXRvcktpbmQ7XG4gIC8qKiBOYW1lIGV4cHJlc3Npb24uICovXG4gIG5hbWU6IEV4cHJlc3Npb247XG4gIC8qKiBBcmd1bWVudCBleHByZXNzaW9ucy4gKi9cbiAgYXJndW1lbnRzOiBFeHByZXNzaW9uW10gfCBudWxsO1xufVxuXG4vKiogQ29tbWVudCBraW5kcy4gKi9cbmV4cG9ydCBlbnVtIENvbW1lbnRLaW5kIHtcbiAgLyoqIExpbmUgY29tbWVudC4gKi9cbiAgTElORSxcbiAgLyoqIFRyaXBsZS1zbGFzaCBjb21tZW50LiAqL1xuICBUUklQTEUsXG4gIC8qKiBCbG9jayBjb21tZW50LiAqL1xuICBCTE9DS1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNvbW1lbnQuICovXG5leHBvcnQgY2xhc3MgQ29tbWVudE5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLkNPTU1FTlQ7XG5cbiAgLyoqIENvbW1lbnQga2luZC4gKi9cbiAgY29tbWVudEtpbmQ6IENvbW1lbnRLaW5kO1xuICAvKiogQ29tbWVudCB0ZXh0LiAqL1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8vIGV4cHJlc3Npb25zXG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBleHByZXNzaW9uIG5vZGVzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV4cHJlc3Npb24gZXh0ZW5kcyBOb2RlIHsgfVxuXG4vKiogUmVwcmVzZW50cyBhbiBpZGVudGlmaWVyIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgSWRlbnRpZmllckV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklERU5USUZJRVI7XG5cbiAgLyoqIFRleHR1YWwgbmFtZS4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogU3ltYm9sLiAqL1xuICBzeW1ib2w6IHN0cmluZzsgLy8gVE9ETzogc3ltYm9sXG4gIC8qKiBXaGV0aGVyIHF1b3RlZCBvciBub3QuICovXG4gIGlzUXVvdGVkOiBib29sO1xufVxuXG4vKiogSW5kaWNhdGVzIHRoZSBraW5kIG9mIGEgbGl0ZXJhbC4gKi9cbmV4cG9ydCBlbnVtIExpdGVyYWxLaW5kIHtcbiAgRkxPQVQsXG4gIElOVEVHRVIsXG4gIFNUUklORyxcbiAgUkVHRVhQLFxuICBBUlJBWSxcbiAgT0JKRUNUXG59XG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBsaXRlcmFsIGV4cHJlc3Npb25zLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExpdGVyYWxFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5MSVRFUkFMO1xuXG4gIC8qKiBTcGVjaWZpYyBsaXRlcmFsIGtpbmQuICovXG4gIGxpdGVyYWxLaW5kOiBMaXRlcmFsS2luZDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYFtdYCBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIExpdGVyYWxFeHByZXNzaW9uIHtcbiAgbGl0ZXJhbEtpbmQgPSBMaXRlcmFsS2luZC5BUlJBWTtcblxuICAvKiogTmVzdGVkIGVsZW1lbnQgZXhwcmVzc2lvbnMuICovXG4gIGVsZW1lbnRFeHByZXNzaW9uczogKEV4cHJlc3Npb24gfCBudWxsKVtdO1xufVxuXG4vKiogSW5kaWNhdGVzIHRoZSBraW5kIG9mIGFuIGFzc2VydGlvbi4gKi9cbmV4cG9ydCBlbnVtIEFzc2VydGlvbktpbmQge1xuICBQUkVGSVgsXG4gIEFTLFxuICBOT05OVUxMXG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGFzc2VydGlvbiBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VydGlvbkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLkFTU0VSVElPTjtcblxuICAvKiogU3BlY2lmaWMga2luZCBvZiB0aGlzIGFzc2VydGlvbi4gKi9cbiAgYXNzZXJ0aW9uS2luZDogQXNzZXJ0aW9uS2luZDtcbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYXNzZXJ0ZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBUYXJnZXQgdHlwZS4gKi9cbiAgdG9UeXBlOiBUeXBlTm9kZSB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYmluYXJ5IGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQmluYXJ5RXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQklOQVJZO1xuXG4gIC8qKiBPcGVyYXRvciB0b2tlbi4gKi9cbiAgb3BlcmF0b3I6IFRva2VuO1xuICAvKiogTGVmdC1oYW5kIHNpZGUgZXhwcmVzc2lvbiAqL1xuICBsZWZ0OiBFeHByZXNzaW9uO1xuICAvKiogUmlnaHQtaGFuZCBzaWRlIGV4cHJlc3Npb24uICovXG4gIHJpZ2h0OiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNhbGwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQ0FMTDtcblxuICAvKiogQ2FsbGVkIGV4cHJlc3Npb24uIFVzdWFsbHkgYW4gaWRlbnRpZmllciBvciBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbi4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbiAgLyoqIFByb3ZpZGVkIHR5cGUgYXJndW1lbnRzLiAqL1xuICB0eXBlQXJndW1lbnRzOiBUeXBlTm9kZVtdIHwgbnVsbDtcbiAgLyoqIFByb3ZpZGVkIGFyZ3VtZW50cy4gKi9cbiAgYXJndW1lbnRzOiBFeHByZXNzaW9uW107XG5cbiAgLyoqIEdldHMgdGhlIHR5cGUgYXJndW1lbnRzIHJhbmdlIGZvciByZXBvcnRpbmcuICovXG4gIGdldCB0eXBlQXJndW1lbnRzUmFuZ2UoKTogUmFuZ2Uge1xuICAgIHZhciB0eXBlQXJndW1lbnRzID0gdGhpcy50eXBlQXJndW1lbnRzO1xuICAgIHZhciBudW1UeXBlQXJndW1lbnRzOiBpMzI7XG4gICAgaWYgKHR5cGVBcmd1bWVudHMgJiYgKG51bVR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBSYW5nZS5qb2luKHR5cGVBcmd1bWVudHNbMF0ucmFuZ2UsIHR5cGVBcmd1bWVudHNbbnVtVHlwZUFyZ3VtZW50cyAtIDFdLnJhbmdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5yYW5nZTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBhcmd1bWVudHMgcmFuZ2UgZm9yIHJlcG9ydGluZy4gKi9cbiAgZ2V0IGFyZ3VtZW50c1JhbmdlKCk6IFJhbmdlIHtcbiAgICB2YXIgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgIHZhciBudW1Bcmd1bWVudHMgPSBhcmdzLmxlbmd0aDtcbiAgICBpZiAobnVtQXJndW1lbnRzKSB7XG4gICAgICByZXR1cm4gUmFuZ2Uuam9pbihhcmdzWzBdLnJhbmdlLCBhcmdzW251bUFyZ3VtZW50cyAtIDFdLnJhbmdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5yYW5nZTtcbiAgfVxufVxuXG4vKiogUmVwcmVzZW50cyBhIGNsYXNzIGV4cHJlc3Npb24gdXNpbmcgdGhlICdjbGFzcycga2V5d29yZC4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0V4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLkNMQVNTO1xuXG4gIC8qKiBJbmxpbmUgY2xhc3MgZGVjbGFyYXRpb24uICovXG4gIGRlY2xhcmF0aW9uOiBDbGFzc0RlY2xhcmF0aW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNvbW1hIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgbXVsdGlwbGUgZXhwcmVzc2lvbnMuICovXG5leHBvcnQgY2xhc3MgQ29tbWFFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5DT01NQTtcblxuICAvKiogU2VxdWVudGlhbCBleHByZXNzaW9ucy4gKi9cbiAgZXhwcmVzc2lvbnM6IEV4cHJlc3Npb25bXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgY29uc3RydWN0b3JgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0b3JFeHByZXNzaW9uIGV4dGVuZHMgSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQ09OU1RSVUNUT1I7XG4gIHRleHQgPSBcImNvbnN0cnVjdG9yXCI7XG4gIHN5bWJvbCA9IENvbW1vblN5bWJvbHMuY29uc3RydWN0b3I7XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgYWNjZXNzIGV4cHJlc3Npb24sIGUuZy4sIGFycmF5IGFjY2Vzcy4gKi9cbmV4cG9ydCBjbGFzcyBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUztcblxuICAvKiogRXhwcmVzc2lvbiBiZWluZyBhY2Nlc3NlZC4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbiAgLyoqIEVsZW1lbnQgb2YgdGhlIGV4cHJlc3Npb24gYmVpbmcgYWNjZXNzZWQuICovXG4gIGVsZW1lbnRFeHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGZsb2F0IGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBGbG9hdExpdGVyYWxFeHByZXNzaW9uIGV4dGVuZHMgTGl0ZXJhbEV4cHJlc3Npb24ge1xuICBsaXRlcmFsS2luZCA9IExpdGVyYWxLaW5kLkZMT0FUO1xuXG4gIC8qKiBGbG9hdCB2YWx1ZS4gKi9cbiAgdmFsdWU6IGY2NDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBmdW5jdGlvbiBleHByZXNzaW9uIHVzaW5nIHRoZSAnZnVuY3Rpb24nIGtleXdvcmQuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25FeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5GVU5DVElPTjtcblxuICAvKiogSW5saW5lIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLiAqL1xuICBkZWNsYXJhdGlvbjogRnVuY3Rpb25EZWNsYXJhdGlvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGluc3RhbmNlb2ZgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VPZkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklOU1RBTkNFT0Y7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYXNzZXJ0ZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBUeXBlIHRvIHRlc3QgZm9yLiAqL1xuICBpc1R5cGU6IFR5cGVOb2RlO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBpbnRlZ2VyIGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuSU5URUdFUjtcblxuICAvKiogSW50ZWdlciB2YWx1ZS4gKi9cbiAgdmFsdWU6IEk2NDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbmV3YCBleHByZXNzaW9uLiBMaWtlIGEgY2FsbCBidXQgd2l0aCBpdHMgb3duIGtpbmQuICovXG5leHBvcnQgY2xhc3MgTmV3RXhwcmVzc2lvbiBleHRlbmRzIENhbGxFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLk5FVztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbnVsbGAgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBOdWxsRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLk5VTEw7XG4gIHRleHQgPSBcIm51bGxcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy5udWxsXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gb2JqZWN0IGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIExpdGVyYWxFeHByZXNzaW9uIHtcbiAgbGl0ZXJhbEtpbmQgPSBMaXRlcmFsS2luZC5PQkpFQ1Q7XG5cbiAgLyoqIEZpZWxkIG5hbWVzLiAqL1xuICBuYW1lczogSWRlbnRpZmllckV4cHJlc3Npb25bXTtcbiAgLyoqIEZpZWxkIHZhbHVlcy4gKi9cbiAgdmFsdWVzOiBFeHByZXNzaW9uW107XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgcGFyZW50aGVzaXplZCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5QQVJFTlRIRVNJWkVEO1xuXG4gIC8qKiBFeHByZXNzaW9uIGluIHBhcmVudGhlc2lzLiAqL1xuICBleHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHByb3BlcnR5IGFjY2VzcyBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYWNjZXNzZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBQcm9wZXJ0eSBvZiB0aGUgZXhwcmVzc2lvbiBiZWluZyBhY2Nlc3NlZC4gKi9cbiAgcHJvcGVydHk6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuUkVHRVhQO1xuXG4gIC8qKiBSZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi4gKi9cbiAgcGF0dGVybjogc3RyaW5nO1xuICAvKiogUmVndWxhciBleHByZXNzaW9uIGZsYWdzLiAqL1xuICBwYXR0ZXJuRmxhZ3M6IHN0cmluZztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB0ZXJuYXJ5IGV4cHJlc3Npb24sIGkuZS4sIHNob3J0IGlmIG5vdGF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIFRlcm5hcnlFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5URVJOQVJZO1xuXG4gIC8qKiBDb25kaXRpb24gZXhwcmVzc2lvbi4gKi9cbiAgY29uZGl0aW9uOiBFeHByZXNzaW9uO1xuICAvKiogRXhwcmVzc2lvbiBleGVjdXRlZCB3aGVuIGNvbmRpdGlvbiBpcyBgdHJ1ZWAuICovXG4gIGlmVGhlbjogRXhwcmVzc2lvbjtcbiAgLyoqIEV4cHJlc3Npb24gZXhlY3V0ZWQgd2hlbiBjb25kaXRpb24gaXMgYGZhbHNlYC4gKi9cbiAgaWZFbHNlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHN0cmluZyBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuU1RSSU5HO1xuXG4gIC8qKiBTdHJpbmcgdmFsdWUgd2l0aG91dCBxdW90ZXMuICovXG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYHN1cGVyYCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFN1cGVyRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlNVUEVSO1xuICB0ZXh0ID0gXCJzdXBlclwiO1xuICBzeW1ib2wgPSBDb21tb25TeW1ib2xzLnN1cGVyXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdGhpc2AgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBUaGlzRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlRISVM7XG4gIHRleHQgPSBcInRoaXNcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy50aGlzXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdHJ1ZWAgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBUcnVlRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlRSVUU7XG4gIHRleHQgPSBcInRydWVcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy50cnVlXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgZmFsc2VgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgRmFsc2VFeHByZXNzaW9uIGV4dGVuZHMgSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuRkFMU0U7XG4gIHRleHQgPSBcImZhbHNlXCI7XG4gIHN5bWJvbCA9IENvbW1vblN5bWJvbHMuZmFsc2VfO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgdW5hcnkgZXhwcmVzc2lvbnMuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5hcnlFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG5cbiAgLyoqIE9wZXJhdG9yIHRva2VuLiAqL1xuICBvcGVyYXRvcjogVG9rZW47XG4gIC8qKiBPcGVyYW5kIGV4cHJlc3Npb24uICovXG4gIG9wZXJhbmQ6IEV4cHJlc3Npb247XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5hcnkgcG9zdGZpeCBleHByZXNzaW9uLCBlLmcuIGEgcG9zdGZpeCBpbmNyZW1lbnQuICovXG5leHBvcnQgY2xhc3MgVW5hcnlQb3N0Zml4RXhwcmVzc2lvbiBleHRlbmRzIFVuYXJ5RXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5VTkFSWVBPU1RGSVg7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5hcnkgcHJlZml4IGV4cHJlc3Npb24sIGUuZy4gYSBuZWdhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBVbmFyeVByZWZpeEV4cHJlc3Npb24gZXh0ZW5kcyBVbmFyeUV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuVU5BUllQUkVGSVg7XG59XG5cbi8vIHN0YXRlbWVudHNcblxuLyoqIEJhc2UgY2xhc3Mgb2YgYWxsIHN0YXRlbWVudCBub2Rlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHsgfVxuXG4vKiogSW5kaWNhdGVzIHRoZSBzcGVjaWZpYyBraW5kIG9mIGEgc291cmNlLiAqL1xuZXhwb3J0IGVudW0gU291cmNlS2luZCB7XG4gIC8qKiBVc2VyLXByb3ZpZGVkIGZpbGUuICovXG4gIFVTRVIgPSAwLFxuICAvKiogVXNlci1wcm92aWRlZCBlbnRyeSBmaWxlLiAqL1xuICBVU0VSX0VOVFJZID0gMSxcbiAgLyoqIExpYnJhcnktcHJvdmlkZWQgZmlsZS4gKi9cbiAgTElCUkFSWSA9IDIsXG4gIC8qKiBMaWJyYXJ5LXByb3ZpZGVkIGVudHJ5IGZpbGUuICovXG4gIExJQlJBUllfRU5UUlkgPSAzXG59XG5cbi8qKiBBIHRvcC1sZXZlbCBzb3VyY2Ugbm9kZS4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2UgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLlNPVVJDRTtcbiAgcGFyZW50ID0gbnVsbDtcblxuICAvKiogU291cmNlIGtpbmQuICovXG4gIHNvdXJjZUtpbmQ6IFNvdXJjZUtpbmQ7XG4gIC8qKiBOb3JtYWxpemVkIHBhdGguICovXG4gIG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmc7XG4gIC8qKiBQYXRoIHVzZWQgaW50ZXJuYWxseS4gKi9cbiAgaW50ZXJuYWxQYXRoOiBzdHJpbmc7XG4gIC8qKiBTaW1wbGUgcGF0aCAobGFzdCBwYXJ0IHdpdGhvdXQgZXh0ZW5zaW9uKS4gKi9cbiAgc2ltcGxlUGF0aDogc3RyaW5nO1xuICAvKiogQ29udGFpbmVkIHN0YXRlbWVudHMuICovXG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdO1xuICAvKiogRnVsbCBzb3VyY2UgdGV4dC4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogVG9rZW5pemVyIHJlZmVyZW5jZS4gKi9cbiAgdG9rZW5pemVyOiBUb2tlbml6ZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIFNvdXJjZSBtYXAgaW5kZXguICovXG4gIGRlYnVnSW5mb0luZGV4OiBpMzIgPSAtMTtcbiAgLyoqIFJlLWV4cG9ydGVkIHNvdXJjZXMuICovXG4gIGV4cG9ydFBhdGhzOiBTZXQ8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IHNvdXJjZSBub2RlLiAqL1xuICBjb25zdHJ1Y3Rvcihub3JtYWxpemVkUGF0aDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIGtpbmQ6IFNvdXJjZUtpbmQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc291cmNlS2luZCA9IGtpbmQ7XG4gICAgdGhpcy5ub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoO1xuICAgIHZhciBpbnRlcm5hbFBhdGggPSBtYW5nbGVJbnRlcm5hbFBhdGgodGhpcy5ub3JtYWxpemVkUGF0aCk7XG4gICAgdGhpcy5pbnRlcm5hbFBhdGggPSBpbnRlcm5hbFBhdGg7XG4gICAgdmFyIHBvcyA9IGludGVybmFsUGF0aC5sYXN0SW5kZXhPZihQQVRIX0RFTElNSVRFUik7XG4gICAgdGhpcy5zaW1wbGVQYXRoID0gcG9zID49IDAgPyBpbnRlcm5hbFBhdGguc3Vic3RyaW5nKHBvcyArIDEpIDogaW50ZXJuYWxQYXRoO1xuICAgIHRoaXMuc3RhdGVtZW50cyA9IG5ldyBBcnJheSgpO1xuICAgIHRoaXMucmFuZ2UgPSBuZXcgUmFuZ2UodGhpcywgMCwgdGV4dC5sZW5ndGgpO1xuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gIH1cblxuICBnZXQgaXNMaWJyYXJ5KCk6IGJvb2wge1xuICAgIHZhciBraW5kID0gdGhpcy5zb3VyY2VLaW5kO1xuICAgIHJldHVybiBraW5kID09IFNvdXJjZUtpbmQuTElCUkFSWSB8fCBraW5kID09IFNvdXJjZUtpbmQuTElCUkFSWV9FTlRSWTtcbiAgfVxufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgZGVjbGFyYXRpb24gc3RhdGVtZW50cy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZWNsYXJhdGlvblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIC8qKiBTaW1wbGUgbmFtZSBiZWluZyBkZWNsYXJlZC4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBBcnJheSBvZiBkZWNvcmF0b3JzLiAqL1xuICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JOb2RlW10gfCBudWxsID0gbnVsbDtcbiAgLyoqIENvbW1vbiBmbGFncyBpbmRpY2F0aW5nIHNwZWNpZmljIHRyYWl0cy4gKi9cbiAgZmxhZ3M6IENvbW1vbkZsYWdzID0gQ29tbW9uRmxhZ3MuTk9ORTtcblxuICAvKiogVGVzdHMgaWYgdGhpcyBub2RlIGhhcyB0aGUgc3BlY2lmaWVkIGZsYWcgb3IgZmxhZ3MuICovXG4gIGlzKGZsYWc6IENvbW1vbkZsYWdzKTogYm9vbCB7IHJldHVybiAodGhpcy5mbGFncyAmIGZsYWcpID09IGZsYWc7IH1cbiAgLyoqIFRlc3RzIGlmIHRoaXMgbm9kZSBoYXMgb25lIG9mIHRoZSBzcGVjaWZpZWQgZmxhZ3MuICovXG4gIGlzQW55KGZsYWc6IENvbW1vbkZsYWdzKTogYm9vbCB7IHJldHVybiAodGhpcy5mbGFncyAmIGZsYWcpICE9IDA7IH1cbiAgLyoqIFNldHMgYSBzcGVjaWZpYyBmbGFnIG9yIGZsYWdzLiAqL1xuICBzZXQoZmxhZzogQ29tbW9uRmxhZ3MpOiB2b2lkIHsgdGhpcy5mbGFncyB8PSBmbGFnOyB9XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGluZGV4IHNpZ25hdHVyZSBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuSU5ERVhTSUdOQVRVUkVERUNMQVJBVElPTjtcblxuICAvKiogS2V5IHR5cGUuICovXG4gIGtleVR5cGU6IE5hbWVkVHlwZU5vZGU7XG4gIC8qKiBWYWx1ZSB0eXBlLiAqL1xuICB2YWx1ZVR5cGU6IFR5cGVOb2RlO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgdmFyaWFibGUtbGlrZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhcmlhYmxlTGlrZURlY2xhcmF0aW9uU3RhdGVtZW50IGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuXG4gIC8qKiBWYXJpYWJsZSB0eXBlLiAqL1xuICB0eXBlOiBUeXBlTm9kZSB8IG51bGw7XG4gIC8qKiBWYXJpYWJsZSBpbml0aWFsaXplci4gKi9cbiAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGJsb2NrIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBCbG9ja1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5CTE9DSztcblxuICAvKiogQ29udGFpbmVkIHN0YXRlbWVudHMuICovXG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBicmVha2Agc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEJyZWFrU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkJSRUFLO1xuXG4gIC8qKiBUYXJnZXQgbGFiZWwsIGlmIGFwcGxpY2FibGUuICovXG4gIGxhYmVsOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYGNsYXNzYCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0RlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuQ0xBU1NERUNMQVJBVElPTjtcblxuICAvKiogQWNjZXB0ZWQgdHlwZSBwYXJhbWV0ZXJzLiAqL1xuICB0eXBlUGFyYW1ldGVyczogVHlwZVBhcmFtZXRlck5vZGVbXSB8IG51bGw7XG4gIC8qKiBCYXNlIGNsYXNzIHR5cGUgYmVpbmcgZXh0ZW5kZWQsIGlmIGFueS4gKi9cbiAgZXh0ZW5kc1R5cGU6IE5hbWVkVHlwZU5vZGUgfCBudWxsOyAvLyBjYW4ndCBiZSBhIGZ1bmN0aW9uXG4gIC8qKiBJbnRlcmZhY2UgdHlwZXMgYmVpbmcgaW1wbGVtZW50ZWQsIGlmIGFueS4gKi9cbiAgaW1wbGVtZW50c1R5cGVzOiBOYW1lZFR5cGVOb2RlW10gfCBudWxsOyAvLyBjYW4ndCBiZSBmdW5jdGlvbnNcbiAgLyoqIENsYXNzIG1lbWJlciBkZWNsYXJhdGlvbnMuICovXG4gIG1lbWJlcnM6IERlY2xhcmF0aW9uU3RhdGVtZW50W107XG5cbiAgZ2V0IGlzR2VuZXJpYygpOiBib29sIHtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLnR5cGVQYXJhbWV0ZXJzO1xuICAgIHJldHVybiB0eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgY29udGludWVgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBDb250aW51ZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5DT05USU5VRTtcblxuICAvKiogVGFyZ2V0IGxhYmVsLCBpZiBhcHBsaWNhYmxlLiAqL1xuICBsYWJlbDogSWRlbnRpZmllckV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBkb2Agc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIERvU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkRPO1xuXG4gIC8qKiBTdGF0ZW1lbnQgYmVpbmcgbG9vcGVkIG92ZXIuICovXG4gIHN0YXRlbWVudDogU3RhdGVtZW50O1xuICAvKiogQ29uZGl0aW9uIHdoZW4gdG8gcmVwZWF0LiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb247XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGVtcHR5IHN0YXRlbWVudCwgaS5lLiwgYSBzZW1pY29sb24gdGVybWluYXRpbmcgbm90aGluZy4gKi9cbmV4cG9ydCBjbGFzcyBFbXB0eVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FTVBUWTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGVudW1gIGRlY2xhcmF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIEVudW1EZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVOVU1ERUNMQVJBVElPTjtcblxuICAvKiogRW51bSB2YWx1ZSBkZWNsYXJhdGlvbnMuICovXG4gIHZhbHVlczogRW51bVZhbHVlRGVjbGFyYXRpb25bXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YWx1ZSBvZiBhbiBgZW51bWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgRW51bVZhbHVlRGVjbGFyYXRpb24gZXh0ZW5kcyBWYXJpYWJsZUxpa2VEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FTlVNVkFMVUVERUNMQVJBVElPTjtcbiAgLy8gbmFtZSBpcyBpbmhlcml0ZWRcblxuICAvKiogVmFsdWUgZXhwcmVzc2lvbi4gKi9cbiAgdmFsdWU6IEV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0IGltcG9ydGAgc3RhdGVtZW50IG9mIGFuIGludGVyZmFjZS4gKi9cbmV4cG9ydCBjbGFzcyBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVElNUE9SVDtcblxuICAvKiogSWRlbnRpZmllciBiZWluZyBpbXBvcnRlZC4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBJZGVudGlmaWVyIGJlaW5nIGV4cG9ydGVkLiAqL1xuICBleHRlcm5hbE5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG1lbWJlciBvZiBhbiBgZXhwb3J0YCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0TWVtYmVyIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5FWFBPUlRNRU1CRVI7XG5cbiAgLyoqIExvY2FsIGlkZW50aWZpZXIuICovXG4gIGxvY2FsTmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBFeHBvcnRlZCBpZGVudGlmaWVyLiAqL1xuICBleHBvcnRlZE5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0YCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0U3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVDtcblxuICAvKiogQXJyYXkgb2YgbWVtYmVycyBpZiBhIHNldCBvZiBuYW1lZCBleHBvcnRzLCBvciBgbnVsbGAgaWYgYSBmaWxlIGV4cG9ydC4gKi9cbiAgbWVtYmVyczogRXhwb3J0TWVtYmVyW10gfCBudWxsO1xuICAvKiogUGF0aCBiZWluZyBleHBvcnRlZCBmcm9tLCBpZiBhcHBsaWNhYmxlLiAqL1xuICBwYXRoOiBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBOb3JtYWxpemVkIHBhdGgsIGlmIGBwYXRoYCBpcyBzZXQuICovXG4gIG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmcgfCBudWxsO1xuICAvKiogTWFuZ2xlZCBpbnRlcm5hbCBwYXRoIGJlaW5nIHJlZmVyZW5jZWQsIGlmIGBwYXRoYCBpcyBzZXQuICovXG4gIGludGVybmFsUGF0aDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhIGRlY2xhcmVkIGV4cG9ydC4gKi9cbiAgaXNEZWNsYXJlOiBib29sO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0IGRlZmF1bHRgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBFeHBvcnREZWZhdWx0U3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ7XG5cbiAgLyoqIERlY2xhcmF0aW9uIGJlaW5nIGV4cG9ydGVkIGFzIGRlZmF1bHQuICovXG4gIGRlY2xhcmF0aW9uOiBEZWNsYXJhdGlvblN0YXRlbWVudDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gZXhwcmVzc2lvbiB0aGF0IGlzIHVzZWQgYXMgYSBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FWFBSRVNTSU9OO1xuXG4gIC8qKiBFeHByZXNzaW9uIGJlaW5nIHVzZWQgYXMgYSBzdGF0ZW1lbnQuKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBmaWVsZCBkZWNsYXJhdGlvbiB3aXRoaW4gYSBgY2xhc3NgLiAqL1xuZXhwb3J0IGNsYXNzIEZpZWxkRGVjbGFyYXRpb24gZXh0ZW5kcyBWYXJpYWJsZUxpa2VEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OO1xuXG4gIC8qKiBQYXJhbWV0ZXIgaW5kZXggaWYgZGVjbGFyZWQgYXMgYSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIsIG90aGVyd2lzZSBgLTFgLiAqL1xuICBwYXJhbWV0ZXJJbmRleDogaTMyID0gLTE7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYGZvcmAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEZvclN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GT1I7XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVyIHN0YXRlbWVudCwgaWYgcHJlc2VudC5cbiAgICogRWl0aGVyIGEge0BsaW5rIFZhcmlhYmxlU3RhdGVtZW50fSBvciB7QGxpbmsgRXhwcmVzc2lvblN0YXRlbWVudH0uXG4gICAqL1xuICBpbml0aWFsaXplcjogU3RhdGVtZW50IHwgbnVsbDtcbiAgLyoqIENvbmRpdGlvbiBleHByZXNzaW9uLCBpZiBwcmVzZW50LiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogSW5jcmVtZW50b3IgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4gKi9cbiAgaW5jcmVtZW50b3I6IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogU3RhdGVtZW50IGJlaW5nIGxvb3BlZCBvdmVyLiAqL1xuICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDtcbn1cblxuLyoqIEluZGljYXRlcyB0aGUga2luZCBvZiBhbiBhcnJheSBmdW5jdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEFycm93S2luZCB7XG4gIC8qKiBOb3QgYW4gYXJyb3cgZnVuY3Rpb24uICovXG4gIE5PTkUsXG4gIC8qKiBQYXJlbnRoZXNpemVkIHBhcmFtZXRlciBsaXN0LiAqL1xuICBBUlJPV19QQVJFTlRIRVNJWkVELFxuICAvKiogU2luZ2xlIHBhcmFtZXRlciB3aXRob3V0IHBhcmVudGhlc2lzLiAqL1xuICBBUlJPV19TSU5HTEVcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgZnVuY3Rpb25gIGRlY2xhcmF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GVU5DVElPTkRFQ0xBUkFUSU9OO1xuXG4gIC8qKiBUeXBlIHBhcmFtZXRlcnMsIGlmIGFueS4gKi9cbiAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsO1xuICAvKiogRnVuY3Rpb24gc2lnbmF0dXJlLiAqL1xuICBzaWduYXR1cmU6IEZ1bmN0aW9uVHlwZU5vZGU7XG4gIC8qKiBCb2R5IHN0YXRlbWVudC4gVXN1YWxseSBhIGJsb2NrLiAqL1xuICBib2R5OiBTdGF0ZW1lbnQgfCBudWxsO1xuICAvKiogQXJyb3cgZnVuY3Rpb24ga2luZCwgaWYgYXBwbGljYWJsZS4gKi9cbiAgYXJyb3dLaW5kOiBBcnJvd0tpbmQ7XG5cbiAgZ2V0IGlzR2VuZXJpYygpOiBib29sIHtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLnR5cGVQYXJhbWV0ZXJzO1xuICAgIHJldHVybiB0eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKiogQ2xvbmVzIHRoaXMgZnVuY3Rpb24gZGVjbGFyYXRpb24uICovXG4gIGNsb25lKCk6IEZ1bmN0aW9uRGVjbGFyYXRpb24ge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgICB0aGlzLm5hbWUsXG4gICAgICB0aGlzLnR5cGVQYXJhbWV0ZXJzLFxuICAgICAgdGhpcy5zaWduYXR1cmUsXG4gICAgICB0aGlzLmJvZHksXG4gICAgICB0aGlzLmRlY29yYXRvcnMsXG4gICAgICB0aGlzLmZsYWdzLFxuICAgICAgdGhpcy5hcnJvd0tpbmQsXG4gICAgICB0aGlzLnJhbmdlXG4gICAgKTtcbiAgfVxufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaWZgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBJZlN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5JRjtcblxuICAvKiogQ29uZGl0aW9uLiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb247XG4gIC8qKiBTdGF0ZW1lbnQgZXhlY3V0ZWQgd2hlbiBjb25kaXRpb24gaXMgYHRydWVgLiAqL1xuICBpZlRydWU6IFN0YXRlbWVudDtcbiAgLyoqIFN0YXRlbWVudCBleGVjdXRlZCB3aGVuIGNvbmRpdGlvbiBpcyBgZmFsc2VgLiAqL1xuICBpZkZhbHNlOiBTdGF0ZW1lbnQgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaW1wb3J0YCBkZWNsYXJhdGlvbiBwYXJ0IG9mIGFuIHtAbGluayBJbXBvcnRTdGF0ZW1lbnR9LiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydERlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuSU1QT1JUREVDTEFSQVRJT047XG5cbiAgLyoqIElkZW50aWZpZXIgYmVpbmcgaW1wb3J0ZWQuICovXG4gIGZvcmVpZ25OYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGltcG9ydGAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydFN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5JTVBPUlQ7XG5cbiAgLyoqIEFycmF5IG9mIG1lbWJlciBkZWNsYXJhdGlvbnMgb3IgYG51bGxgIGlmIGFuIGFzdGVyaXNrIGltcG9ydC4gKi9cbiAgZGVjbGFyYXRpb25zOiBJbXBvcnREZWNsYXJhdGlvbltdIHwgbnVsbDtcbiAgLyoqIE5hbWUgb2YgdGhlIGxvY2FsIG5hbWVzcGFjZSwgaWYgYW4gYXN0ZXJpc2sgaW1wb3J0LiAqL1xuICBuYW1lc3BhY2VOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBQYXRoIGJlaW5nIGltcG9ydGVkIGZyb20uICovXG4gIHBhdGg6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uO1xuICAvKiogTm9ybWFsaXplZCBwYXRoLiAqL1xuICBub3JtYWxpemVkUGF0aDogc3RyaW5nO1xuICAvKiogTWFuZ2xlZCBpbnRlcm5hbCBwYXRoIGJlaW5nIHJlZmVyZW5jZWQuICovXG4gIGludGVybmFsUGF0aDogc3RyaW5nO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaW50ZXJmYXJjZWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgSW50ZXJmYWNlRGVjbGFyYXRpb24gZXh0ZW5kcyBDbGFzc0RlY2xhcmF0aW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklOVEVSRkFDRURFQ0xBUkFUSU9OO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiB3aXRoaW4gYSBgY2xhc3NgLiAqL1xuZXhwb3J0IGNsYXNzIE1ldGhvZERlY2xhcmF0aW9uIGV4dGVuZHMgRnVuY3Rpb25EZWNsYXJhdGlvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5NRVRIT0RERUNMQVJBVElPTjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbmFtZXNwYWNlYCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLk5BTUVTUEFDRURFQ0xBUkFUSU9OO1xuXG4gIC8qKiBBcnJheSBvZiBuYW1lc3BhY2UgbWVtYmVycy4gKi9cbiAgbWVtYmVyczogU3RhdGVtZW50W107XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYHJldHVybmAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIFJldHVyblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5SRVRVUk47XG5cbiAgLyoqIFZhbHVlIGV4cHJlc3Npb24gYmVpbmcgcmV0dXJuZWQsIGlmIHByZXNlbnQuICovXG4gIHZhbHVlOiBFeHByZXNzaW9uIHwgbnVsbDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgYGNhc2VgIHdpdGhpbiBhIGBzd2l0Y2hgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBTd2l0Y2hDYXNlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5TV0lUQ0hDQVNFO1xuXG4gIC8qKiBMYWJlbCBleHByZXNzaW9uLiBgbnVsbGAgaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGNhc2UuICovXG4gIGxhYmVsOiBFeHByZXNzaW9uIHwgbnVsbDtcbiAgLyoqIENvbnRhaW5lZCBzdGF0ZW1lbnRzLiAqL1xuICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgc3dpdGNoYCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgU3dpdGNoU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLlNXSVRDSDtcblxuICAvKiogQ29uZGl0aW9uIGV4cHJlc3Npb24uICovXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbjtcbiAgLyoqIENvbnRhaW5lZCBjYXNlcy4gKi9cbiAgY2FzZXM6IFN3aXRjaENhc2VbXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdGhyb3dgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBUaHJvd1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5USFJPVztcblxuICAvKiogVmFsdWUgZXhwcmVzc2lvbiBiZWluZyB0aHJvd24uICovXG4gIHZhbHVlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGB0cnlgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBUcnlTdGF0ZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVFJZO1xuXG4gIC8qKiBDb250YWluZWQgc3RhdGVtZW50cy4gKi9cbiAgc3RhdGVtZW50czogU3RhdGVtZW50W107XG4gIC8qKiBFeGNlcHRpb24gdmFyaWFibGUgbmFtZSwgaWYgYSBgY2F0Y2hgIGNsYXVzZSBpcyBwcmVzZW50LiAqL1xuICBjYXRjaFZhcmlhYmxlOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBTdGF0ZW1lbnRzIGJlaW5nIGV4ZWN1dGVkIG9uIGNhdGNoLCBpZiBhIGBjYXRjaGAgY2xhdXNlIGlzIHByZXNlbnQuICovXG4gIGNhdGNoU3RhdGVtZW50czogU3RhdGVtZW50W10gfCBudWxsO1xuICAvKiogU3RhdGVtZW50cyBiZWluZyBleGVjdXRlZCBhZnRlcndhcmRzLCBpZiBhIGBmaW5hbGx5YCBjbGF1c2UgaXMgcHJlc2VudC4gKi9cbiAgZmluYWxseVN0YXRlbWVudHM6IFN0YXRlbWVudFtdIHwgbnVsbDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdHlwZWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgVHlwZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OO1xuXG4gIC8qKiBUeXBlIHBhcmFtZXRlcnMsIGlmIGFueS4gKi9cbiAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsO1xuICAvKiogVHlwZSBiZWluZyBhbGlhc2VkLiAqL1xuICB0eXBlOiBUeXBlTm9kZTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBwYXJ0IG9mIGEge0BsaW5rIFZhcmlhYmxlU3RhdGVtZW50fS4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGV4dGVuZHMgVmFyaWFibGVMaWtlRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVkFSSUFCTEVERUNMQVJBVElPTjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YXJpYWJsZSBzdGF0ZW1lbnQgd3JhcHBpbmcge0BsaW5rIFZhcmlhYmxlRGVjbGFyYXRpb259cy4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5WQVJJQUJMRTtcblxuICAvKiogQXJyYXkgb2YgZGVjb3JhdG9ycy4gKi9cbiAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbDtcbiAgLyoqIEFycmF5IG9mIG1lbWJlciBkZWNsYXJhdGlvbnMuICovXG4gIGRlY2xhcmF0aW9uczogVmFyaWFibGVEZWNsYXJhdGlvbltdO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHZvaWQgc3RhdGVtZW50IGRyb3BwaW5nIGFuIGV4cHJlc3Npb24ncyB2YWx1ZS4gKi9cbmV4cG9ydCBjbGFzcyBWb2lkU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLlZPSUQ7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgZHJvcHBlZC4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgd2hpbGVgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBXaGlsZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5XSElMRTtcblxuICAvKiogQ29uZGl0aW9uIGV4cHJlc3Npb24uICovXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbjtcbiAgLyoqIFN0YXRlbWVudCBiZWluZyBsb29wZWQgb3Zlci4gKi9cbiAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ7XG59XG5cbi8qKiBGaW5kcyB0aGUgZmlyc3QgZGVjb3JhdG9yIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQga2luZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGVjb3JhdG9yKGtpbmQ6IERlY29yYXRvcktpbmQsIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwpOiBEZWNvcmF0b3JOb2RlIHwgbnVsbCB7XG4gIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgbGV0IGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICBpZiAoZGVjb3JhdG9yLmRlY29yYXRvcktpbmQgPT0ga2luZCkgcmV0dXJuIGRlY29yYXRvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKiBNYW5nbGVzIGFuIGV4dGVybmFsIHRvIGFuIGludGVybmFsIHBhdGguICovXG5leHBvcnQgZnVuY3Rpb24gbWFuZ2xlSW50ZXJuYWxQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoLmVuZHNXaXRoKFwiLnRzXCIpKSBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSAzKTtcbiAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIHR5cGUgbm9kZSByZXByZXNlbnRzIGFuIG9taXR0ZWQgdHlwZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVPbWl0dGVkKHR5cGU6IFR5cGVOb2RlKTogYm9vbCB7XG4gIGlmICh0eXBlLmtpbmQgPT0gTm9kZUtpbmQuTkFNRURUWVBFKSB7XG4gICAgbGV0IG5hbWUgPSAoPE5hbWVkVHlwZU5vZGU+dHlwZSkubmFtZTtcbiAgICByZXR1cm4gIShuYW1lLm5leHQgfHwgbmFtZS5pZGVudGlmaWVyLnRleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0= + +/***/ }), + +/***/ "../src/common.ts": +/*!************************!*\ + !*** ../src/common.ts ***! + \************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Common constants. + * @module common + */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +/** Indicates traits of a {@link Node} or {@link Element}. */ +var CommonFlags; +(function (CommonFlags) { + /** No flags set. */ + CommonFlags[CommonFlags["NONE"] = 0] = "NONE"; + // Basic modifiers + /** Has an `import` modifier. */ + CommonFlags[CommonFlags["IMPORT"] = 1] = "IMPORT"; + /** Has an `export` modifier. */ + CommonFlags[CommonFlags["EXPORT"] = 2] = "EXPORT"; + /** Has a `declare` modifier. */ + CommonFlags[CommonFlags["DECLARE"] = 4] = "DECLARE"; + /** Has a `const` modifier. */ + CommonFlags[CommonFlags["CONST"] = 8] = "CONST"; + /** Has a `let` modifier. */ + CommonFlags[CommonFlags["LET"] = 16] = "LET"; + /** Has a `static` modifier. */ + CommonFlags[CommonFlags["STATIC"] = 32] = "STATIC"; + /** Has a `readonly` modifier. */ + CommonFlags[CommonFlags["READONLY"] = 64] = "READONLY"; + /** Has an `abstract` modifier. */ + CommonFlags[CommonFlags["ABSTRACT"] = 128] = "ABSTRACT"; + /** Has a `public` modifier. */ + CommonFlags[CommonFlags["PUBLIC"] = 256] = "PUBLIC"; + /** Has a `private` modifier. */ + CommonFlags[CommonFlags["PRIVATE"] = 512] = "PRIVATE"; + /** Has a `protected` modifier. */ + CommonFlags[CommonFlags["PROTECTED"] = 1024] = "PROTECTED"; + /** Has a `get` modifier. */ + CommonFlags[CommonFlags["GET"] = 2048] = "GET"; + /** Has a `set` modifier. */ + CommonFlags[CommonFlags["SET"] = 4096] = "SET"; + /** Has a definite assignment assertion `!` as in `x!: i32;`. */ + CommonFlags[CommonFlags["DEFINITE_ASSIGNMENT"] = 8192] = "DEFINITE_ASSIGNMENT"; + // Extended modifiers usually derived from basic modifiers + /** Is ambient, that is either declared or nested in a declared element. */ + CommonFlags[CommonFlags["AMBIENT"] = 16384] = "AMBIENT"; + /** Is generic. */ + CommonFlags[CommonFlags["GENERIC"] = 32768] = "GENERIC"; + /** Is part of a generic context. */ + CommonFlags[CommonFlags["GENERIC_CONTEXT"] = 65536] = "GENERIC_CONTEXT"; + /** Is an instance member. */ + CommonFlags[CommonFlags["INSTANCE"] = 131072] = "INSTANCE"; + /** Is a constructor. */ + CommonFlags[CommonFlags["CONSTRUCTOR"] = 262144] = "CONSTRUCTOR"; + /** Is a module export. */ + CommonFlags[CommonFlags["MODULE_EXPORT"] = 524288] = "MODULE_EXPORT"; + /** Is a module import. */ + CommonFlags[CommonFlags["MODULE_IMPORT"] = 1048576] = "MODULE_IMPORT"; + // Compilation states + /** Is resolved. */ + CommonFlags[CommonFlags["RESOLVED"] = 2097152] = "RESOLVED"; + /** Is compiled. */ + CommonFlags[CommonFlags["COMPILED"] = 4194304] = "COMPILED"; + /** Has a constant value and is therefore inlined. */ + CommonFlags[CommonFlags["INLINED"] = 8388608] = "INLINED"; + /** Is scoped. */ + CommonFlags[CommonFlags["SCOPED"] = 16777216] = "SCOPED"; + /** Is a trampoline. */ + CommonFlags[CommonFlags["TRAMPOLINE"] = 33554432] = "TRAMPOLINE"; + /** Is a virtual method. */ + CommonFlags[CommonFlags["VIRTUAL"] = 67108864] = "VIRTUAL"; + /** Is the main function. */ + CommonFlags[CommonFlags["MAIN"] = 134217728] = "MAIN"; + // Other + /** Is quoted. */ + CommonFlags[CommonFlags["QUOTED"] = 268435456] = "QUOTED"; +})(CommonFlags = exports.CommonFlags || (exports.CommonFlags = {})); +/** Path delimiter inserted between file system levels. */ +exports.PATH_DELIMITER = "/"; +/** Substitution used to indicate the parent directory. */ +exports.PARENT_SUBST = ".."; +/** Function name prefix used for getters. */ +exports.GETTER_PREFIX = "get:"; +/** Function name prefix used for setters. */ +exports.SETTER_PREFIX = "set:"; +/** Delimiter used between class names and instance members. */ +exports.INSTANCE_DELIMITER = "#"; +/** Delimiter used between class and namespace names and static members. */ +exports.STATIC_DELIMITER = "."; +/** Delimiter used between a function and its inner elements. */ +exports.INNER_DELIMITER = "~"; +/** Substitution used to indicate a library directory. */ +exports.LIBRARY_SUBST = "~lib"; +/** Library directory prefix. */ +exports.LIBRARY_PREFIX = exports.LIBRARY_SUBST + exports.PATH_DELIMITER; +/** Path index suffix. */ +exports.INDEX_SUFFIX = exports.PATH_DELIMITER + "index"; +/** Common compiler symbols. */ +var CommonSymbols; +(function (CommonSymbols) { + // special + CommonSymbols.EMPTY = ""; + // types + CommonSymbols.i8 = "i8"; + CommonSymbols.i16 = "i16"; + CommonSymbols.i32 = "i32"; + CommonSymbols.i64 = "i64"; + CommonSymbols.isize = "isize"; + CommonSymbols.u8 = "u8"; + CommonSymbols.u16 = "u16"; + CommonSymbols.u32 = "u32"; + CommonSymbols.u64 = "u64"; + CommonSymbols.usize = "usize"; + CommonSymbols.bool = "bool"; + CommonSymbols.f32 = "f32"; + CommonSymbols.f64 = "f64"; + CommonSymbols.v128 = "v128"; + CommonSymbols.i8x16 = "i8x16"; + CommonSymbols.u8x16 = "u8x16"; + CommonSymbols.i16x8 = "i16x8"; + CommonSymbols.u16x8 = "u16x8"; + CommonSymbols.i32x4 = "i32x4"; + CommonSymbols.u32x4 = "u32x4"; + CommonSymbols.i64x2 = "i64x2"; + CommonSymbols.u64x2 = "u64x2"; + CommonSymbols.f32x4 = "f32x4"; + CommonSymbols.f64x2 = "f64x2"; + CommonSymbols.void_ = "void"; + CommonSymbols.number = "number"; + CommonSymbols.boolean = "boolean"; + CommonSymbols.string = "string"; + CommonSymbols.native = "native"; + CommonSymbols.indexof = "indexof"; + CommonSymbols.valueof = "valueof"; + CommonSymbols.returnof = "returnof"; + // aliases + CommonSymbols.null_ = "null"; + CommonSymbols.true_ = "true"; + CommonSymbols.false_ = "false"; + // objects + CommonSymbols.this_ = "this"; + CommonSymbols.super_ = "super"; + CommonSymbols.constructor = "constructor"; + // constants + CommonSymbols.ASC_TARGET = "ASC_TARGET"; + CommonSymbols.ASC_NO_TREESHAKING = "ASC_NO_TREESHAKING"; + CommonSymbols.ASC_NO_ASSERT = "ASC_NO_ASSERT"; + CommonSymbols.ASC_MEMORY_BASE = "ASC_MEMORY_BASE"; + CommonSymbols.ASC_OPTIMIZE_LEVEL = "ASC_OPTIMIZE_LEVEL"; + CommonSymbols.ASC_SHRINK_LEVEL = "ASC_SHRINK_LEVEL"; + CommonSymbols.ASC_FEATURE_MUTABLE_GLOBAL = "ASC_FEATURE_MUTABLE_GLOBAL"; + CommonSymbols.ASC_FEATURE_SIGN_EXTENSION = "ASC_FEATURE_SIGN_EXTENSION"; + CommonSymbols.ASC_FEATURE_BULK_MEMORY = "ASC_FEATURE_BULK_MEMORY"; + CommonSymbols.ASC_FEATURE_SIMD = "ASC_FEATURE_SIMD"; + CommonSymbols.ASC_FEATURE_THREADS = "ASC_FEATURE_THREADS"; + // classes + CommonSymbols.I8 = "I8"; + CommonSymbols.I16 = "I16"; + CommonSymbols.I32 = "I32"; + CommonSymbols.I64 = "I64"; + CommonSymbols.Isize = "Isize"; + CommonSymbols.U8 = "U8"; + CommonSymbols.U16 = "U16"; + CommonSymbols.U32 = "U32"; + CommonSymbols.U64 = "U64"; + CommonSymbols.Usize = "Usize"; + CommonSymbols.Bool = "Bool"; + CommonSymbols.F32 = "F32"; + CommonSymbols.F64 = "F64"; + CommonSymbols.V128 = "V128"; + CommonSymbols.String = "String"; + CommonSymbols.Array = "Array"; + CommonSymbols.FixedArray = "FixedArray"; + CommonSymbols.Set = "Set"; + CommonSymbols.Map = "Map"; + CommonSymbols.ArrayBufferView = "ArrayBufferView"; + CommonSymbols.ArrayBuffer = "ArrayBuffer"; + CommonSymbols.Math = "Math"; + CommonSymbols.Mathf = "Mathf"; + CommonSymbols.Int8Array = "Int8Array"; + CommonSymbols.Int16Array = "Int16Array"; + CommonSymbols.Int32Array = "Int32Array"; + CommonSymbols.Int64Array = "Int64Array"; + CommonSymbols.Uint8Array = "Uint8Array"; + CommonSymbols.Uint8ClampedArray = "Uint8ClampedArray"; + CommonSymbols.Uint16Array = "Uint16Array"; + CommonSymbols.Uint32Array = "Uint32Array"; + CommonSymbols.Uint64Array = "Uint64Array"; + CommonSymbols.Float32Array = "Float32Array"; + CommonSymbols.Float64Array = "Float64Array"; + // runtime + CommonSymbols.abort = "abort"; + CommonSymbols.pow = "pow"; + CommonSymbols.mod = "mod"; + CommonSymbols.alloc = "__alloc"; + CommonSymbols.realloc = "__realloc"; + CommonSymbols.free = "__free"; + CommonSymbols.retain = "__retain"; + CommonSymbols.release = "__release"; + CommonSymbols.collect = "__collect"; + CommonSymbols.typeinfo = "__typeinfo"; + CommonSymbols.instanceof_ = "__instanceof"; + CommonSymbols.visit = "__visit"; + CommonSymbols.allocArray = "__allocArray"; +})(CommonSymbols = exports.CommonSymbols || (exports.CommonSymbols = {})); +// shared +var feature_1 = __webpack_require__(/*! ../std/assembly/shared/feature */ "../std/assembly/shared/feature.ts"); +exports.Feature = feature_1.Feature; +var target_1 = __webpack_require__(/*! ../std/assembly/shared/target */ "../std/assembly/shared/target.ts"); +exports.Target = target_1.Target; +var typeinfo_1 = __webpack_require__(/*! ../std/assembly/shared/typeinfo */ "../std/assembly/shared/typeinfo.ts"); +exports.Typeinfo = typeinfo_1.Typeinfo; +exports.TypeinfoFlags = typeinfo_1.TypeinfoFlags; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHLENBQUEsS0FBSzs7QUFFUiw2REFBNkQ7QUFDN0QsSUFBWSxXQXlFWDtBQXpFRCxXQUFZLFdBQVc7SUFDckIsb0JBQW9CO0lBQ3BCLDZDQUFRLENBQUE7SUFFUixrQkFBa0I7SUFFbEIsZ0NBQWdDO0lBQ2hDLGlEQUFlLENBQUE7SUFDZixnQ0FBZ0M7SUFDaEMsaURBQWUsQ0FBQTtJQUNmLGdDQUFnQztJQUNoQyxtREFBZ0IsQ0FBQTtJQUNoQiw4QkFBOEI7SUFDOUIsK0NBQWMsQ0FBQTtJQUNkLDRCQUE0QjtJQUM1Qiw0Q0FBWSxDQUFBO0lBQ1osK0JBQStCO0lBQy9CLGtEQUFlLENBQUE7SUFDZixpQ0FBaUM7SUFDakMsc0RBQWlCLENBQUE7SUFDakIsa0NBQWtDO0lBQ2xDLHVEQUFpQixDQUFBO0lBQ2pCLCtCQUErQjtJQUMvQixtREFBZSxDQUFBO0lBQ2YsZ0NBQWdDO0lBQ2hDLHFEQUFnQixDQUFBO0lBQ2hCLGtDQUFrQztJQUNsQywwREFBbUIsQ0FBQTtJQUNuQiw0QkFBNEI7SUFDNUIsOENBQWEsQ0FBQTtJQUNiLDRCQUE0QjtJQUM1Qiw4Q0FBYSxDQUFBO0lBQ2IsZ0VBQWdFO0lBQ2hFLDhFQUE2QixDQUFBO0lBRTdCLDBEQUEwRDtJQUUxRCwyRUFBMkU7SUFDM0UsdURBQWlCLENBQUE7SUFDakIsa0JBQWtCO0lBQ2xCLHVEQUFpQixDQUFBO0lBQ2pCLG9DQUFvQztJQUNwQyx1RUFBeUIsQ0FBQTtJQUN6Qiw2QkFBNkI7SUFDN0IsMERBQWtCLENBQUE7SUFDbEIsd0JBQXdCO0lBQ3hCLGdFQUFxQixDQUFBO0lBQ3JCLDBCQUEwQjtJQUMxQixvRUFBdUIsQ0FBQTtJQUN2QiwwQkFBMEI7SUFDMUIscUVBQXVCLENBQUE7SUFFdkIscUJBQXFCO0lBRXJCLG1CQUFtQjtJQUNuQiwy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RDtBQUE5QywwQkFBQSxNQUFNLENBQUE7QUFDZiw0REFBMEU7QUFBakUsOEJBQUEsUUFBUSxDQUFBO0FBQUUsbUNBQUEsYUFBYSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gY29uc3RhbnRzLlxuICogQG1vZHVsZSBjb21tb25cbiAqLy8qKiovXG5cbi8qKiBJbmRpY2F0ZXMgdHJhaXRzIG9mIGEge0BsaW5rIE5vZGV9IG9yIHtAbGluayBFbGVtZW50fS4gKi9cbmV4cG9ydCBlbnVtIENvbW1vbkZsYWdzIHtcbiAgLyoqIE5vIGZsYWdzIHNldC4gKi9cbiAgTk9ORSA9IDAsXG5cbiAgLy8gQmFzaWMgbW9kaWZpZXJzXG5cbiAgLyoqIEhhcyBhbiBgaW1wb3J0YCBtb2RpZmllci4gKi9cbiAgSU1QT1JUID0gMSA8PCAwLFxuICAvKiogSGFzIGFuIGBleHBvcnRgIG1vZGlmaWVyLiAqL1xuICBFWFBPUlQgPSAxIDw8IDEsXG4gIC8qKiBIYXMgYSBgZGVjbGFyZWAgbW9kaWZpZXIuICovXG4gIERFQ0xBUkUgPSAxIDw8IDIsXG4gIC8qKiBIYXMgYSBgY29uc3RgIG1vZGlmaWVyLiAqL1xuICBDT05TVCA9IDEgPDwgMyxcbiAgLyoqIEhhcyBhIGBsZXRgIG1vZGlmaWVyLiAqL1xuICBMRVQgPSAxIDw8IDQsXG4gIC8qKiBIYXMgYSBgc3RhdGljYCBtb2RpZmllci4gKi9cbiAgU1RBVElDID0gMSA8PCA1LFxuICAvKiogSGFzIGEgYHJlYWRvbmx5YCBtb2RpZmllci4gKi9cbiAgUkVBRE9OTFkgPSAxIDw8IDYsXG4gIC8qKiBIYXMgYW4gYGFic3RyYWN0YCBtb2RpZmllci4gKi9cbiAgQUJTVFJBQ1QgPSAxIDw8IDcsXG4gIC8qKiBIYXMgYSBgcHVibGljYCBtb2RpZmllci4gKi9cbiAgUFVCTElDID0gMSA8PCA4LFxuICAvKiogSGFzIGEgYHByaXZhdGVgIG1vZGlmaWVyLiAqL1xuICBQUklWQVRFID0gMSA8PCA5LFxuICAvKiogSGFzIGEgYHByb3RlY3RlZGAgbW9kaWZpZXIuICovXG4gIFBST1RFQ1RFRCA9IDEgPDwgMTAsXG4gIC8qKiBIYXMgYSBgZ2V0YCBtb2RpZmllci4gKi9cbiAgR0VUID0gMSA8PCAxMSxcbiAgLyoqIEhhcyBhIGBzZXRgIG1vZGlmaWVyLiAqL1xuICBTRVQgPSAxIDw8IDEyLFxuICAvKiogSGFzIGEgZGVmaW5pdGUgYXNzaWdubWVudCBhc3NlcnRpb24gYCFgIGFzIGluIGB4ITogaTMyO2AuICovXG4gIERFRklOSVRFX0FTU0lHTk1FTlQgPSAxIDw8IDEzLFxuXG4gIC8vIEV4dGVuZGVkIG1vZGlmaWVycyB1c3VhbGx5IGRlcml2ZWQgZnJvbSBiYXNpYyBtb2RpZmllcnNcblxuICAvKiogSXMgYW1iaWVudCwgdGhhdCBpcyBlaXRoZXIgZGVjbGFyZWQgb3IgbmVzdGVkIGluIGEgZGVjbGFyZWQgZWxlbWVudC4gKi9cbiAgQU1CSUVOVCA9IDEgPDwgMTQsXG4gIC8qKiBJcyBnZW5lcmljLiAqL1xuICBHRU5FUklDID0gMSA8PCAxNSxcbiAgLyoqIElzIHBhcnQgb2YgYSBnZW5lcmljIGNvbnRleHQuICovXG4gIEdFTkVSSUNfQ09OVEVYVCA9IDEgPDwgMTYsXG4gIC8qKiBJcyBhbiBpbnN0YW5jZSBtZW1iZXIuICovXG4gIElOU1RBTkNFID0gMSA8PCAxNyxcbiAgLyoqIElzIGEgY29uc3RydWN0b3IuICovXG4gIENPTlNUUlVDVE9SID0gMSA8PCAxOCxcbiAgLyoqIElzIGEgbW9kdWxlIGV4cG9ydC4gKi9cbiAgTU9EVUxFX0VYUE9SVCA9IDEgPDwgMTksXG4gIC8qKiBJcyBhIG1vZHVsZSBpbXBvcnQuICovXG4gIE1PRFVMRV9JTVBPUlQgPSAxIDw8IDIwLFxuXG4gIC8vIENvbXBpbGF0aW9uIHN0YXRlc1xuXG4gIC8qKiBJcyByZXNvbHZlZC4gKi9cbiAgUkVTT0xWRUQgPSAxIDw8IDIxLFxuICAvKiogSXMgY29tcGlsZWQuICovXG4gIENPTVBJTEVEID0gMSA8PCAyMixcbiAgLyoqIEhhcyBhIGNvbnN0YW50IHZhbHVlIGFuZCBpcyB0aGVyZWZvcmUgaW5saW5lZC4gKi9cbiAgSU5MSU5FRCA9IDEgPDwgMjMsXG4gIC8qKiBJcyBzY29wZWQuICovXG4gIFNDT1BFRCA9IDEgPDwgMjQsXG4gIC8qKiBJcyBhIHRyYW1wb2xpbmUuICovXG4gIFRSQU1QT0xJTkUgPSAxIDw8IDI1LFxuICAvKiogSXMgYSB2aXJ0dWFsIG1ldGhvZC4gKi9cbiAgVklSVFVBTCA9IDEgPDwgMjYsXG4gIC8qKiBJcyB0aGUgbWFpbiBmdW5jdGlvbi4gKi9cbiAgTUFJTiA9IDEgPDwgMjcsXG5cbiAgLy8gT3RoZXJcblxuICAvKiogSXMgcXVvdGVkLiAqL1xuICBRVU9URUQgPSAxIDw8IDI4XG59XG5cbi8qKiBQYXRoIGRlbGltaXRlciBpbnNlcnRlZCBiZXR3ZWVuIGZpbGUgc3lzdGVtIGxldmVscy4gKi9cbmV4cG9ydCBjb25zdCBQQVRIX0RFTElNSVRFUiA9IFwiL1wiO1xuLyoqIFN1YnN0aXR1dGlvbiB1c2VkIHRvIGluZGljYXRlIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiAqL1xuZXhwb3J0IGNvbnN0IFBBUkVOVF9TVUJTVCA9IFwiLi5cIjtcbi8qKiBGdW5jdGlvbiBuYW1lIHByZWZpeCB1c2VkIGZvciBnZXR0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IEdFVFRFUl9QUkVGSVggPSBcImdldDpcIjtcbi8qKiBGdW5jdGlvbiBuYW1lIHByZWZpeCB1c2VkIGZvciBzZXR0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFNFVFRFUl9QUkVGSVggPSBcInNldDpcIjtcbi8qKiBEZWxpbWl0ZXIgdXNlZCBiZXR3ZWVuIGNsYXNzIG5hbWVzIGFuZCBpbnN0YW5jZSBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IElOU1RBTkNFX0RFTElNSVRFUiA9IFwiI1wiO1xuLyoqIERlbGltaXRlciB1c2VkIGJldHdlZW4gY2xhc3MgYW5kIG5hbWVzcGFjZSBuYW1lcyBhbmQgc3RhdGljIG1lbWJlcnMuICovXG5leHBvcnQgY29uc3QgU1RBVElDX0RFTElNSVRFUiA9IFwiLlwiO1xuLyoqIERlbGltaXRlciB1c2VkIGJldHdlZW4gYSBmdW5jdGlvbiBhbmQgaXRzIGlubmVyIGVsZW1lbnRzLiAqL1xuZXhwb3J0IGNvbnN0IElOTkVSX0RFTElNSVRFUiA9IFwiflwiO1xuLyoqIFN1YnN0aXR1dGlvbiB1c2VkIHRvIGluZGljYXRlIGEgbGlicmFyeSBkaXJlY3RvcnkuICovXG5leHBvcnQgY29uc3QgTElCUkFSWV9TVUJTVCA9IFwifmxpYlwiO1xuLyoqIExpYnJhcnkgZGlyZWN0b3J5IHByZWZpeC4gKi9cbmV4cG9ydCBjb25zdCBMSUJSQVJZX1BSRUZJWCA9IExJQlJBUllfU1VCU1QgKyBQQVRIX0RFTElNSVRFUjtcbi8qKiBQYXRoIGluZGV4IHN1ZmZpeC4gKi9cbmV4cG9ydCBjb25zdCBJTkRFWF9TVUZGSVggPSBQQVRIX0RFTElNSVRFUiArIFwiaW5kZXhcIjtcblxuLyoqIENvbW1vbiBjb21waWxlciBzeW1ib2xzLiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBDb21tb25TeW1ib2xzIHtcbiAgLy8gc3BlY2lhbFxuICBleHBvcnQgY29uc3QgRU1QVFkgPSBcIlwiO1xuICAvLyB0eXBlc1xuICBleHBvcnQgY29uc3QgaTggPSBcImk4XCI7XG4gIGV4cG9ydCBjb25zdCBpMTYgPSBcImkxNlwiO1xuICBleHBvcnQgY29uc3QgaTMyID0gXCJpMzJcIjtcbiAgZXhwb3J0IGNvbnN0IGk2NCA9IFwiaTY0XCI7XG4gIGV4cG9ydCBjb25zdCBpc2l6ZSA9IFwiaXNpemVcIjtcbiAgZXhwb3J0IGNvbnN0IHU4ID0gXCJ1OFwiO1xuICBleHBvcnQgY29uc3QgdTE2ID0gXCJ1MTZcIjtcbiAgZXhwb3J0IGNvbnN0IHUzMiA9IFwidTMyXCI7XG4gIGV4cG9ydCBjb25zdCB1NjQgPSBcInU2NFwiO1xuICBleHBvcnQgY29uc3QgdXNpemUgPSBcInVzaXplXCI7XG4gIGV4cG9ydCBjb25zdCBib29sID0gXCJib29sXCI7XG4gIGV4cG9ydCBjb25zdCBmMzIgPSBcImYzMlwiO1xuICBleHBvcnQgY29uc3QgZjY0ID0gXCJmNjRcIjtcbiAgZXhwb3J0IGNvbnN0IHYxMjggPSBcInYxMjhcIjtcbiAgZXhwb3J0IGNvbnN0IGk4eDE2ID0gXCJpOHgxNlwiO1xuICBleHBvcnQgY29uc3QgdTh4MTYgPSBcInU4eDE2XCI7XG4gIGV4cG9ydCBjb25zdCBpMTZ4OCA9IFwiaTE2eDhcIjtcbiAgZXhwb3J0IGNvbnN0IHUxNng4ID0gXCJ1MTZ4OFwiO1xuICBleHBvcnQgY29uc3QgaTMyeDQgPSBcImkzMng0XCI7XG4gIGV4cG9ydCBjb25zdCB1MzJ4NCA9IFwidTMyeDRcIjtcbiAgZXhwb3J0IGNvbnN0IGk2NHgyID0gXCJpNjR4MlwiO1xuICBleHBvcnQgY29uc3QgdTY0eDIgPSBcInU2NHgyXCI7XG4gIGV4cG9ydCBjb25zdCBmMzJ4NCA9IFwiZjMyeDRcIjtcbiAgZXhwb3J0IGNvbnN0IGY2NHgyID0gXCJmNjR4MlwiO1xuICBleHBvcnQgY29uc3Qgdm9pZF8gPSBcInZvaWRcIjtcbiAgZXhwb3J0IGNvbnN0IG51bWJlciA9IFwibnVtYmVyXCI7XG4gIGV4cG9ydCBjb25zdCBib29sZWFuID0gXCJib29sZWFuXCI7XG4gIGV4cG9ydCBjb25zdCBzdHJpbmcgPSBcInN0cmluZ1wiO1xuICBleHBvcnQgY29uc3QgbmF0aXZlID0gXCJuYXRpdmVcIjtcbiAgZXhwb3J0IGNvbnN0IGluZGV4b2YgPSBcImluZGV4b2ZcIjtcbiAgZXhwb3J0IGNvbnN0IHZhbHVlb2YgPSBcInZhbHVlb2ZcIjtcbiAgZXhwb3J0IGNvbnN0IHJldHVybm9mID0gXCJyZXR1cm5vZlwiO1xuICAvLyBhbGlhc2VzXG4gIGV4cG9ydCBjb25zdCBudWxsXyA9IFwibnVsbFwiO1xuICBleHBvcnQgY29uc3QgdHJ1ZV8gPSBcInRydWVcIjtcbiAgZXhwb3J0IGNvbnN0IGZhbHNlXyA9IFwiZmFsc2VcIjtcbiAgLy8gb2JqZWN0c1xuICBleHBvcnQgY29uc3QgdGhpc18gPSBcInRoaXNcIjtcbiAgZXhwb3J0IGNvbnN0IHN1cGVyXyA9IFwic3VwZXJcIjtcbiAgZXhwb3J0IGNvbnN0IGNvbnN0cnVjdG9yID0gXCJjb25zdHJ1Y3RvclwiO1xuICAvLyBjb25zdGFudHNcbiAgZXhwb3J0IGNvbnN0IEFTQ19UQVJHRVQgPSBcIkFTQ19UQVJHRVRcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19OT19UUkVFU0hBS0lORyA9IFwiQVNDX05PX1RSRUVTSEFLSU5HXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfTk9fQVNTRVJUID0gXCJBU0NfTk9fQVNTRVJUXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfTUVNT1JZX0JBU0UgPSBcIkFTQ19NRU1PUllfQkFTRVwiO1xuICBleHBvcnQgY29uc3QgQVNDX09QVElNSVpFX0xFVkVMID0gXCJBU0NfT1BUSU1JWkVfTEVWRUxcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19TSFJJTktfTEVWRUwgPSBcIkFTQ19TSFJJTktfTEVWRUxcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX01VVEFCTEVfR0xPQkFMID0gXCJBU0NfRkVBVFVSRV9NVVRBQkxFX0dMT0JBTFwiO1xuICBleHBvcnQgY29uc3QgQVNDX0ZFQVRVUkVfU0lHTl9FWFRFTlNJT04gPSBcIkFTQ19GRUFUVVJFX1NJR05fRVhURU5TSU9OXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfRkVBVFVSRV9CVUxLX01FTU9SWSA9IFwiQVNDX0ZFQVRVUkVfQlVMS19NRU1PUllcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX1NJTUQgPSBcIkFTQ19GRUFUVVJFX1NJTURcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX1RIUkVBRFMgPSBcIkFTQ19GRUFUVVJFX1RIUkVBRFNcIjtcbiAgLy8gY2xhc3Nlc1xuICBleHBvcnQgY29uc3QgSTggPSBcIkk4XCI7XG4gIGV4cG9ydCBjb25zdCBJMTYgPSBcIkkxNlwiO1xuICBleHBvcnQgY29uc3QgSTMyID0gXCJJMzJcIjtcbiAgZXhwb3J0IGNvbnN0IEk2NCA9IFwiSTY0XCI7XG4gIGV4cG9ydCBjb25zdCBJc2l6ZSA9IFwiSXNpemVcIjtcbiAgZXhwb3J0IGNvbnN0IFU4ID0gXCJVOFwiO1xuICBleHBvcnQgY29uc3QgVTE2ID0gXCJVMTZcIjtcbiAgZXhwb3J0IGNvbnN0IFUzMiA9IFwiVTMyXCI7XG4gIGV4cG9ydCBjb25zdCBVNjQgPSBcIlU2NFwiO1xuICBleHBvcnQgY29uc3QgVXNpemUgPSBcIlVzaXplXCI7XG4gIGV4cG9ydCBjb25zdCBCb29sID0gXCJCb29sXCI7XG4gIGV4cG9ydCBjb25zdCBGMzIgPSBcIkYzMlwiO1xuICBleHBvcnQgY29uc3QgRjY0ID0gXCJGNjRcIjtcbiAgZXhwb3J0IGNvbnN0IFYxMjggPSBcIlYxMjhcIjtcbiAgZXhwb3J0IGNvbnN0IFN0cmluZyA9IFwiU3RyaW5nXCI7XG4gIGV4cG9ydCBjb25zdCBBcnJheSA9IFwiQXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IEZpeGVkQXJyYXkgPSBcIkZpeGVkQXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IFNldCA9IFwiU2V0XCI7XG4gIGV4cG9ydCBjb25zdCBNYXAgPSBcIk1hcFwiO1xuICBleHBvcnQgY29uc3QgQXJyYXlCdWZmZXJWaWV3ID0gXCJBcnJheUJ1ZmZlclZpZXdcIjtcbiAgZXhwb3J0IGNvbnN0IEFycmF5QnVmZmVyID0gXCJBcnJheUJ1ZmZlclwiO1xuICBleHBvcnQgY29uc3QgTWF0aCA9IFwiTWF0aFwiO1xuICBleHBvcnQgY29uc3QgTWF0aGYgPSBcIk1hdGhmXCI7XG4gIGV4cG9ydCBjb25zdCBJbnQ4QXJyYXkgPSBcIkludDhBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50MTZBcnJheSA9IFwiSW50MTZBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50MzJBcnJheSA9IFwiSW50MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50NjRBcnJheSA9IFwiSW50NjRBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDhBcnJheSA9IFwiVWludDhBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDhDbGFtcGVkQXJyYXkgPSBcIlVpbnQ4Q2xhbXBlZEFycmF5XCI7XG4gIGV4cG9ydCBjb25zdCBVaW50MTZBcnJheSA9IFwiVWludDE2QXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IFVpbnQzMkFycmF5ID0gXCJVaW50MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDY0QXJyYXkgPSBcIlVpbnQ2NEFycmF5XCI7XG4gIGV4cG9ydCBjb25zdCBGbG9hdDMyQXJyYXkgPSBcIkZsb2F0MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgRmxvYXQ2NEFycmF5ID0gXCJGbG9hdDY0QXJyYXlcIjtcbiAgLy8gcnVudGltZVxuICBleHBvcnQgY29uc3QgYWJvcnQgPSBcImFib3J0XCI7XG4gIGV4cG9ydCBjb25zdCBwb3cgPSBcInBvd1wiO1xuICBleHBvcnQgY29uc3QgbW9kID0gXCJtb2RcIjtcbiAgZXhwb3J0IGNvbnN0IGFsbG9jID0gXCJfX2FsbG9jXCI7XG4gIGV4cG9ydCBjb25zdCByZWFsbG9jID0gXCJfX3JlYWxsb2NcIjtcbiAgZXhwb3J0IGNvbnN0IGZyZWUgPSBcIl9fZnJlZVwiO1xuICBleHBvcnQgY29uc3QgcmV0YWluID0gXCJfX3JldGFpblwiO1xuICBleHBvcnQgY29uc3QgcmVsZWFzZSA9IFwiX19yZWxlYXNlXCI7XG4gIGV4cG9ydCBjb25zdCBjb2xsZWN0ID0gXCJfX2NvbGxlY3RcIjtcbiAgZXhwb3J0IGNvbnN0IHR5cGVpbmZvID0gXCJfX3R5cGVpbmZvXCI7XG4gIGV4cG9ydCBjb25zdCBpbnN0YW5jZW9mXyA9IFwiX19pbnN0YW5jZW9mXCI7XG4gIGV4cG9ydCBjb25zdCB2aXNpdCA9IFwiX192aXNpdFwiO1xuICBleHBvcnQgY29uc3QgYWxsb2NBcnJheSA9IFwiX19hbGxvY0FycmF5XCI7XG59XG5cbi8vIHNoYXJlZFxuZXhwb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuLi9zdGQvYXNzZW1ibHkvc2hhcmVkL2ZlYXR1cmVcIjtcbmV4cG9ydCB7IFRhcmdldCB9IGZyb20gXCIuLi9zdGQvYXNzZW1ibHkvc2hhcmVkL3RhcmdldFwiO1xuZXhwb3J0IHsgVHlwZWluZm8sIFR5cGVpbmZvRmxhZ3MgfSBmcm9tIFwiLi4vc3RkL2Fzc2VtYmx5L3NoYXJlZC90eXBlaW5mb1wiO1xuIl19 + +/***/ }), + +/***/ "../src/diagnosticMessages.generated.ts": +/*!**********************************************!*\ + !*** ../src/diagnosticMessages.generated.ts ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Generated from diagnosticsMessages.json. Do not edit. + * @module diagnostics + */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +/* tslint:disable:max-line-length */ +/** Enum of available diagnostic codes. */ +var DiagnosticCode; +(function (DiagnosticCode) { + DiagnosticCode[DiagnosticCode["Operation_not_supported"] = 100] = "Operation_not_supported"; + DiagnosticCode[DiagnosticCode["Operation_is_unsafe"] = 101] = "Operation_is_unsafe"; + DiagnosticCode[DiagnosticCode["User_defined_0"] = 102] = "User_defined_0"; + DiagnosticCode[DiagnosticCode["Conversion_from_type_0_to_1_requires_an_explicit_cast"] = 200] = "Conversion_from_type_0_to_1_requires_an_explicit_cast"; + DiagnosticCode[DiagnosticCode["Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit"] = 201] = "Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit"; + DiagnosticCode[DiagnosticCode["Type_0_cannot_be_changed_to_type_1"] = 202] = "Type_0_cannot_be_changed_to_type_1"; + DiagnosticCode[DiagnosticCode["Type_0_cannot_be_reinterpreted_as_type_1"] = 203] = "Type_0_cannot_be_reinterpreted_as_type_1"; + DiagnosticCode[DiagnosticCode["Basic_type_0_cannot_be_nullable"] = 204] = "Basic_type_0_cannot_be_nullable"; + DiagnosticCode[DiagnosticCode["Cannot_export_a_mutable_global"] = 205] = "Cannot_export_a_mutable_global"; + DiagnosticCode[DiagnosticCode["Mutable_value_cannot_be_inlined"] = 206] = "Mutable_value_cannot_be_inlined"; + DiagnosticCode[DiagnosticCode["Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa"] = 207] = "Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa"; + DiagnosticCode[DiagnosticCode["Unmanaged_classes_cannot_implement_interfaces"] = 208] = "Unmanaged_classes_cannot_implement_interfaces"; + DiagnosticCode[DiagnosticCode["Invalid_regular_expression_flags"] = 209] = "Invalid_regular_expression_flags"; + DiagnosticCode[DiagnosticCode["Implementation_0_must_match_the_signature_1"] = 210] = "Implementation_0_must_match_the_signature_1"; + DiagnosticCode[DiagnosticCode["Class_0_is_sealed_and_cannot_be_extended"] = 211] = "Class_0_is_sealed_and_cannot_be_extended"; + DiagnosticCode[DiagnosticCode["Decorator_0_is_not_valid_here"] = 212] = "Decorator_0_is_not_valid_here"; + DiagnosticCode[DiagnosticCode["Duplicate_decorator"] = 213] = "Duplicate_decorator"; + DiagnosticCode[DiagnosticCode["An_allocator_must_be_present_to_use_0"] = 214] = "An_allocator_must_be_present_to_use_0"; + DiagnosticCode[DiagnosticCode["Optional_parameter_must_have_an_initializer"] = 215] = "Optional_parameter_must_have_an_initializer"; + DiagnosticCode[DiagnosticCode["Constructor_of_class_0_must_not_require_any_arguments"] = 216] = "Constructor_of_class_0_must_not_require_any_arguments"; + DiagnosticCode[DiagnosticCode["Function_0_cannot_be_inlined_into_itself"] = 217] = "Function_0_cannot_be_inlined_into_itself"; + DiagnosticCode[DiagnosticCode["Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set"] = 218] = "Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set"; + DiagnosticCode[DiagnosticCode["Optional_properties_are_not_supported"] = 219] = "Optional_properties_are_not_supported"; + DiagnosticCode[DiagnosticCode["Expression_must_be_a_compile_time_constant"] = 220] = "Expression_must_be_a_compile_time_constant"; + DiagnosticCode[DiagnosticCode["Module_cannot_have_multiple_start_functions"] = 221] = "Module_cannot_have_multiple_start_functions"; + DiagnosticCode[DiagnosticCode["_0_must_be_a_value_between_1_and_2_inclusive"] = 222] = "_0_must_be_a_value_between_1_and_2_inclusive"; + DiagnosticCode[DiagnosticCode["_0_must_be_a_power_of_two"] = 223] = "_0_must_be_a_power_of_two"; + DiagnosticCode[DiagnosticCode["Expression_is_unsafe"] = 224] = "Expression_is_unsafe"; + DiagnosticCode[DiagnosticCode["Expression_is_never_null"] = 225] = "Expression_is_never_null"; + DiagnosticCode[DiagnosticCode["Unterminated_string_literal"] = 1002] = "Unterminated_string_literal"; + DiagnosticCode[DiagnosticCode["Identifier_expected"] = 1003] = "Identifier_expected"; + DiagnosticCode[DiagnosticCode["_0_expected"] = 1005] = "_0_expected"; + DiagnosticCode[DiagnosticCode["A_file_cannot_have_a_reference_to_itself"] = 1006] = "A_file_cannot_have_a_reference_to_itself"; + DiagnosticCode[DiagnosticCode["Trailing_comma_not_allowed"] = 1009] = "Trailing_comma_not_allowed"; + DiagnosticCode[DiagnosticCode["Unexpected_token"] = 1012] = "Unexpected_token"; + DiagnosticCode[DiagnosticCode["A_rest_parameter_must_be_last_in_a_parameter_list"] = 1014] = "A_rest_parameter_must_be_last_in_a_parameter_list"; + DiagnosticCode[DiagnosticCode["Parameter_cannot_have_question_mark_and_initializer"] = 1015] = "Parameter_cannot_have_question_mark_and_initializer"; + DiagnosticCode[DiagnosticCode["A_required_parameter_cannot_follow_an_optional_parameter"] = 1016] = "A_required_parameter_cannot_follow_an_optional_parameter"; + DiagnosticCode[DiagnosticCode["Statements_are_not_allowed_in_ambient_contexts"] = 1036] = "Statements_are_not_allowed_in_ambient_contexts"; + DiagnosticCode[DiagnosticCode["Initializers_are_not_allowed_in_ambient_contexts"] = 1039] = "Initializers_are_not_allowed_in_ambient_contexts"; + DiagnosticCode[DiagnosticCode["_0_modifier_cannot_be_used_here"] = 1042] = "_0_modifier_cannot_be_used_here"; + DiagnosticCode[DiagnosticCode["A_rest_parameter_cannot_be_optional"] = 1047] = "A_rest_parameter_cannot_be_optional"; + DiagnosticCode[DiagnosticCode["A_rest_parameter_cannot_have_an_initializer"] = 1048] = "A_rest_parameter_cannot_have_an_initializer"; + DiagnosticCode[DiagnosticCode["A_set_accessor_must_have_exactly_one_parameter"] = 1049] = "A_set_accessor_must_have_exactly_one_parameter"; + DiagnosticCode[DiagnosticCode["A_set_accessor_parameter_cannot_have_an_initializer"] = 1052] = "A_set_accessor_parameter_cannot_have_an_initializer"; + DiagnosticCode[DiagnosticCode["A_get_accessor_cannot_have_parameters"] = 1054] = "A_get_accessor_cannot_have_parameters"; + DiagnosticCode[DiagnosticCode["Enum_member_must_have_initializer"] = 1061] = "Enum_member_must_have_initializer"; + DiagnosticCode[DiagnosticCode["Type_parameters_cannot_appear_on_a_constructor_declaration"] = 1092] = "Type_parameters_cannot_appear_on_a_constructor_declaration"; + DiagnosticCode[DiagnosticCode["Type_annotation_cannot_appear_on_a_constructor_declaration"] = 1093] = "Type_annotation_cannot_appear_on_a_constructor_declaration"; + DiagnosticCode[DiagnosticCode["An_accessor_cannot_have_type_parameters"] = 1094] = "An_accessor_cannot_have_type_parameters"; + DiagnosticCode[DiagnosticCode["A_set_accessor_cannot_have_a_return_type_annotation"] = 1095] = "A_set_accessor_cannot_have_a_return_type_annotation"; + DiagnosticCode[DiagnosticCode["Type_parameter_list_cannot_be_empty"] = 1098] = "Type_parameter_list_cannot_be_empty"; + DiagnosticCode[DiagnosticCode["A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement"] = 1104] = "A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement"; + DiagnosticCode[DiagnosticCode["A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement"] = 1105] = "A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement"; + DiagnosticCode[DiagnosticCode["A_return_statement_can_only_be_used_within_a_function_body"] = 1108] = "A_return_statement_can_only_be_used_within_a_function_body"; + DiagnosticCode[DiagnosticCode["Expression_expected"] = 1109] = "Expression_expected"; + DiagnosticCode[DiagnosticCode["Type_expected"] = 1110] = "Type_expected"; + DiagnosticCode[DiagnosticCode["A_default_clause_cannot_appear_more_than_once_in_a_switch_statement"] = 1113] = "A_default_clause_cannot_appear_more_than_once_in_a_switch_statement"; + DiagnosticCode[DiagnosticCode["Duplicate_label_0"] = 1114] = "Duplicate_label_0"; + DiagnosticCode[DiagnosticCode["An_export_assignment_cannot_have_modifiers"] = 1120] = "An_export_assignment_cannot_have_modifiers"; + DiagnosticCode[DiagnosticCode["Octal_literals_are_not_allowed_in_strict_mode"] = 1121] = "Octal_literals_are_not_allowed_in_strict_mode"; + DiagnosticCode[DiagnosticCode["Digit_expected"] = 1124] = "Digit_expected"; + DiagnosticCode[DiagnosticCode["Hexadecimal_digit_expected"] = 1125] = "Hexadecimal_digit_expected"; + DiagnosticCode[DiagnosticCode["Unexpected_end_of_text"] = 1126] = "Unexpected_end_of_text"; + DiagnosticCode[DiagnosticCode["Invalid_character"] = 1127] = "Invalid_character"; + DiagnosticCode[DiagnosticCode["_case_or_default_expected"] = 1130] = "_case_or_default_expected"; + DiagnosticCode[DiagnosticCode["_super_must_be_followed_by_an_argument_list_or_member_access"] = 1034] = "_super_must_be_followed_by_an_argument_list_or_member_access"; + DiagnosticCode[DiagnosticCode["A_declare_modifier_cannot_be_used_in_an_already_ambient_context"] = 1038] = "A_declare_modifier_cannot_be_used_in_an_already_ambient_context"; + DiagnosticCode[DiagnosticCode["Type_argument_expected"] = 1140] = "Type_argument_expected"; + DiagnosticCode[DiagnosticCode["String_literal_expected"] = 1141] = "String_literal_expected"; + DiagnosticCode[DiagnosticCode["Line_break_not_permitted_here"] = 1142] = "Line_break_not_permitted_here"; + DiagnosticCode[DiagnosticCode["Declaration_expected"] = 1146] = "Declaration_expected"; + DiagnosticCode[DiagnosticCode["_const_declarations_must_be_initialized"] = 1155] = "_const_declarations_must_be_initialized"; + DiagnosticCode[DiagnosticCode["Unterminated_regular_expression_literal"] = 1161] = "Unterminated_regular_expression_literal"; + DiagnosticCode[DiagnosticCode["Interface_declaration_cannot_have_implements_clause"] = 1176] = "Interface_declaration_cannot_have_implements_clause"; + DiagnosticCode[DiagnosticCode["Binary_digit_expected"] = 1177] = "Binary_digit_expected"; + DiagnosticCode[DiagnosticCode["Octal_digit_expected"] = 1178] = "Octal_digit_expected"; + DiagnosticCode[DiagnosticCode["An_implementation_cannot_be_declared_in_ambient_contexts"] = 1183] = "An_implementation_cannot_be_declared_in_ambient_contexts"; + DiagnosticCode[DiagnosticCode["An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive"] = 1198] = "An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive"; + DiagnosticCode[DiagnosticCode["Unterminated_Unicode_escape_sequence"] = 1199] = "Unterminated_Unicode_escape_sequence"; + DiagnosticCode[DiagnosticCode["Decorators_are_not_valid_here"] = 1206] = "Decorators_are_not_valid_here"; + DiagnosticCode[DiagnosticCode["_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration"] = 1242] = "_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration"; + DiagnosticCode[DiagnosticCode["Method_0_cannot_have_an_implementation_because_it_is_marked_abstract"] = 1245] = "Method_0_cannot_have_an_implementation_because_it_is_marked_abstract"; + DiagnosticCode[DiagnosticCode["A_definite_assignment_assertion_is_not_permitted_in_this_context"] = 1255] = "A_definite_assignment_assertion_is_not_permitted_in_this_context"; + DiagnosticCode[DiagnosticCode["A_class_may_only_extend_another_class"] = 1311] = "A_class_may_only_extend_another_class"; + DiagnosticCode[DiagnosticCode["A_parameter_property_cannot_be_declared_using_a_rest_parameter"] = 1317] = "A_parameter_property_cannot_be_declared_using_a_rest_parameter"; + DiagnosticCode[DiagnosticCode["Duplicate_identifier_0"] = 2300] = "Duplicate_identifier_0"; + DiagnosticCode[DiagnosticCode["Cannot_find_name_0"] = 2304] = "Cannot_find_name_0"; + DiagnosticCode[DiagnosticCode["Module_0_has_no_exported_member_1"] = 2305] = "Module_0_has_no_exported_member_1"; + DiagnosticCode[DiagnosticCode["Generic_type_0_requires_1_type_argument_s"] = 2314] = "Generic_type_0_requires_1_type_argument_s"; + DiagnosticCode[DiagnosticCode["Type_0_is_not_generic"] = 2315] = "Type_0_is_not_generic"; + DiagnosticCode[DiagnosticCode["Type_0_is_not_assignable_to_type_1"] = 2322] = "Type_0_is_not_assignable_to_type_1"; + DiagnosticCode[DiagnosticCode["Index_signature_is_missing_in_type_0"] = 2329] = "Index_signature_is_missing_in_type_0"; + DiagnosticCode[DiagnosticCode["_this_cannot_be_referenced_in_current_location"] = 2332] = "_this_cannot_be_referenced_in_current_location"; + DiagnosticCode[DiagnosticCode["_super_can_only_be_referenced_in_a_derived_class"] = 2335] = "_super_can_only_be_referenced_in_a_derived_class"; + DiagnosticCode[DiagnosticCode["Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors"] = 2337] = "Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors"; + DiagnosticCode[DiagnosticCode["Property_0_does_not_exist_on_type_1"] = 2339] = "Property_0_does_not_exist_on_type_1"; + DiagnosticCode[DiagnosticCode["Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures"] = 2349] = "Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures"; + DiagnosticCode[DiagnosticCode["Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature"] = 2351] = "Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature"; + DiagnosticCode[DiagnosticCode["A_function_whose_declared_type_is_not_void_must_return_a_value"] = 2355] = "A_function_whose_declared_type_is_not_void_must_return_a_value"; + DiagnosticCode[DiagnosticCode["The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access"] = 2357] = "The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access"; + DiagnosticCode[DiagnosticCode["The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access"] = 2364] = "The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access"; + DiagnosticCode[DiagnosticCode["Operator_0_cannot_be_applied_to_types_1_and_2"] = 2365] = "Operator_0_cannot_be_applied_to_types_1_and_2"; + DiagnosticCode[DiagnosticCode["A_super_call_must_be_the_first_statement_in_the_constructor"] = 2376] = "A_super_call_must_be_the_first_statement_in_the_constructor"; + DiagnosticCode[DiagnosticCode["Constructors_for_derived_classes_must_contain_a_super_call"] = 2377] = "Constructors_for_derived_classes_must_contain_a_super_call"; + DiagnosticCode[DiagnosticCode["_get_and_set_accessor_must_have_the_same_type"] = 2380] = "_get_and_set_accessor_must_have_the_same_type"; + DiagnosticCode[DiagnosticCode["Constructor_implementation_is_missing"] = 2390] = "Constructor_implementation_is_missing"; + DiagnosticCode[DiagnosticCode["Function_implementation_is_missing_or_not_immediately_following_the_declaration"] = 2391] = "Function_implementation_is_missing_or_not_immediately_following_the_declaration"; + DiagnosticCode[DiagnosticCode["Multiple_constructor_implementations_are_not_allowed"] = 2392] = "Multiple_constructor_implementations_are_not_allowed"; + DiagnosticCode[DiagnosticCode["Duplicate_function_implementation"] = 2393] = "Duplicate_function_implementation"; + DiagnosticCode[DiagnosticCode["Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local"] = 2395] = "Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local"; + DiagnosticCode[DiagnosticCode["A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged"] = 2434] = "A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged"; + DiagnosticCode[DiagnosticCode["Type_0_has_no_property_1"] = 2460] = "Type_0_has_no_property_1"; + DiagnosticCode[DiagnosticCode["The_0_operator_cannot_be_applied_to_type_1"] = 2469] = "The_0_operator_cannot_be_applied_to_type_1"; + DiagnosticCode[DiagnosticCode["In_const_enum_declarations_member_initializer_must_be_constant_expression"] = 2474] = "In_const_enum_declarations_member_initializer_must_be_constant_expression"; + DiagnosticCode[DiagnosticCode["Export_declaration_conflicts_with_exported_declaration_of_0"] = 2484] = "Export_declaration_conflicts_with_exported_declaration_of_0"; + DiagnosticCode[DiagnosticCode["Object_is_possibly_null"] = 2531] = "Object_is_possibly_null"; + DiagnosticCode[DiagnosticCode["Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property"] = 2540] = "Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property"; + DiagnosticCode[DiagnosticCode["The_target_of_an_assignment_must_be_a_variable_or_a_property_access"] = 2541] = "The_target_of_an_assignment_must_be_a_variable_or_a_property_access"; + DiagnosticCode[DiagnosticCode["Index_signature_in_type_0_only_permits_reading"] = 2542] = "Index_signature_in_type_0_only_permits_reading"; + DiagnosticCode[DiagnosticCode["Expected_0_arguments_but_got_1"] = 2554] = "Expected_0_arguments_but_got_1"; + DiagnosticCode[DiagnosticCode["Expected_at_least_0_arguments_but_got_1"] = 2555] = "Expected_at_least_0_arguments_but_got_1"; + DiagnosticCode[DiagnosticCode["Expected_0_type_arguments_but_got_1"] = 2558] = "Expected_0_type_arguments_but_got_1"; + DiagnosticCode[DiagnosticCode["A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums"] = 2651] = "A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums"; + DiagnosticCode[DiagnosticCode["Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration"] = 2673] = "Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration"; + DiagnosticCode[DiagnosticCode["Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration"] = 2674] = "Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration"; + DiagnosticCode[DiagnosticCode["Namespace_0_has_no_exported_member_1"] = 2694] = "Namespace_0_has_no_exported_member_1"; + DiagnosticCode[DiagnosticCode["Required_type_parameters_may_not_follow_optional_type_parameters"] = 2706] = "Required_type_parameters_may_not_follow_optional_type_parameters"; + DiagnosticCode[DiagnosticCode["Duplicate_property_0"] = 2718] = "Duplicate_property_0"; + DiagnosticCode[DiagnosticCode["Type_0_has_no_call_signatures"] = 2757] = "Type_0_has_no_call_signatures"; + DiagnosticCode[DiagnosticCode["File_0_not_found"] = 6054] = "File_0_not_found"; + DiagnosticCode[DiagnosticCode["Numeric_separators_are_not_allowed_here"] = 6188] = "Numeric_separators_are_not_allowed_here"; + DiagnosticCode[DiagnosticCode["Multiple_consecutive_numeric_separators_are_not_permitted"] = 6189] = "Multiple_consecutive_numeric_separators_are_not_permitted"; + DiagnosticCode[DiagnosticCode["_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class"] = 17009] = "_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class"; + DiagnosticCode[DiagnosticCode["_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"] = 17011] = "_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"; +})(DiagnosticCode = exports.DiagnosticCode || (exports.DiagnosticCode = {})); +/** Translates a diagnostic code to its respective string. */ +function diagnosticCodeToString(code) { + switch (code) { + case 100: return "Operation not supported."; + case 101: return "Operation is unsafe."; + case 102: return "User-defined: {0}"; + case 200: return "Conversion from type '{0}' to '{1}' requires an explicit cast."; + case 201: return "Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit."; + case 202: return "Type '{0}' cannot be changed to type '{1}'."; + case 203: return "Type '{0}' cannot be reinterpreted as type '{1}'."; + case 204: return "Basic type '{0}' cannot be nullable."; + case 205: return "Cannot export a mutable global."; + case 206: return "Mutable value cannot be inlined."; + case 207: return "Unmanaged classes cannot extend managed classes and vice-versa."; + case 208: return "Unmanaged classes cannot implement interfaces."; + case 209: return "Invalid regular expression flags."; + case 210: return "Implementation '{0}' must match the signature '{1}'."; + case 211: return "Class '{0}' is sealed and cannot be extended."; + case 212: return "Decorator '{0}' is not valid here."; + case 213: return "Duplicate decorator."; + case 214: return "An allocator must be present to use '{0}'."; + case 215: return "Optional parameter must have an initializer."; + case 216: return "Constructor of class '{0}' must not require any arguments."; + case 217: return "Function '{0}' cannot be inlined into itself."; + case 218: return "Cannot access method '{0}' without calling it as it requires 'this' to be set."; + case 219: return "Optional properties are not supported."; + case 220: return "Expression must be a compile-time constant."; + case 221: return "Module cannot have multiple start functions."; + case 222: return "'{0}' must be a value between '{1}' and '{2}' inclusive."; + case 223: return "'{0}' must be a power of two."; + case 224: return "Expression is unsafe."; + case 225: return "Expression is never 'null'."; + case 1002: return "Unterminated string literal."; + case 1003: return "Identifier expected."; + case 1005: return "'{0}' expected."; + case 1006: return "A file cannot have a reference to itself."; + case 1009: return "Trailing comma not allowed."; + case 1012: return "Unexpected token."; + case 1014: return "A rest parameter must be last in a parameter list."; + case 1015: return "Parameter cannot have question mark and initializer."; + case 1016: return "A required parameter cannot follow an optional parameter."; + case 1036: return "Statements are not allowed in ambient contexts."; + case 1039: return "Initializers are not allowed in ambient contexts."; + case 1042: return "'{0}' modifier cannot be used here."; + case 1047: return "A rest parameter cannot be optional."; + case 1048: return "A rest parameter cannot have an initializer."; + case 1049: return "A 'set' accessor must have exactly one parameter."; + case 1052: return "A 'set' accessor parameter cannot have an initializer."; + case 1054: return "A 'get' accessor cannot have parameters."; + case 1061: return "Enum member must have initializer."; + case 1092: return "Type parameters cannot appear on a constructor declaration."; + case 1093: return "Type annotation cannot appear on a constructor declaration."; + case 1094: return "An accessor cannot have type parameters."; + case 1095: return "A 'set' accessor cannot have a return type annotation."; + case 1098: return "Type parameter list cannot be empty."; + case 1104: return "A 'continue' statement can only be used within an enclosing iteration statement."; + case 1105: return "A 'break' statement can only be used within an enclosing iteration or switch statement."; + case 1108: return "A 'return' statement can only be used within a function body."; + case 1109: return "Expression expected."; + case 1110: return "Type expected."; + case 1113: return "A 'default' clause cannot appear more than once in a 'switch' statement."; + case 1114: return "Duplicate label '{0}'."; + case 1120: return "An export assignment cannot have modifiers."; + case 1121: return "Octal literals are not allowed in strict mode."; + case 1124: return "Digit expected."; + case 1125: return "Hexadecimal digit expected."; + case 1126: return "Unexpected end of text."; + case 1127: return "Invalid character."; + case 1130: return "'case' or 'default' expected."; + case 1034: return "'super' must be followed by an argument list or member access."; + case 1038: return "A 'declare' modifier cannot be used in an already ambient context."; + case 1140: return "Type argument expected."; + case 1141: return "String literal expected."; + case 1142: return "Line break not permitted here."; + case 1146: return "Declaration expected."; + case 1155: return "'const' declarations must be initialized."; + case 1161: return "Unterminated regular expression literal."; + case 1176: return "Interface declaration cannot have 'implements' clause."; + case 1177: return "Binary digit expected."; + case 1178: return "Octal digit expected."; + case 1183: return "An implementation cannot be declared in ambient contexts."; + case 1198: return "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive."; + case 1199: return "Unterminated Unicode escape sequence."; + case 1206: return "Decorators are not valid here."; + case 1242: return "'abstract' modifier can only appear on a class, method, or property declaration."; + case 1245: return "Method '{0}' cannot have an implementation because it is marked abstract."; + case 1255: return "A definite assignment assertion '!' is not permitted in this context."; + case 1311: return "A class may only extend another class."; + case 1317: return "A parameter property cannot be declared using a rest parameter."; + case 2300: return "Duplicate identifier '{0}'."; + case 2304: return "Cannot find name '{0}'."; + case 2305: return "Module '{0}' has no exported member '{1}'."; + case 2314: return "Generic type '{0}' requires {1} type argument(s)."; + case 2315: return "Type '{0}' is not generic."; + case 2322: return "Type '{0}' is not assignable to type '{1}'."; + case 2329: return "Index signature is missing in type '{0}'."; + case 2332: return "'this' cannot be referenced in current location."; + case 2335: return "'super' can only be referenced in a derived class."; + case 2337: return "Super calls are not permitted outside constructors or in nested functions inside constructors."; + case 2339: return "Property '{0}' does not exist on type '{1}'."; + case 2349: return "Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures."; + case 2351: return "Cannot use 'new' with an expression whose type lacks a construct signature."; + case 2355: return "A function whose declared type is not 'void' must return a value."; + case 2357: return "The operand of an increment or decrement operator must be a variable or a property access."; + case 2364: return "The left-hand side of an assignment expression must be a variable or a property access."; + case 2365: return "Operator '{0}' cannot be applied to types '{1}' and '{2}'."; + case 2376: return "A 'super' call must be the first statement in the constructor."; + case 2377: return "Constructors for derived classes must contain a 'super' call."; + case 2380: return "'get' and 'set' accessor must have the same type."; + case 2390: return "Constructor implementation is missing."; + case 2391: return "Function implementation is missing or not immediately following the declaration."; + case 2392: return "Multiple constructor implementations are not allowed."; + case 2393: return "Duplicate function implementation."; + case 2395: return "Individual declarations in merged declaration '{0}' must be all exported or all local."; + case 2434: return "A namespace declaration cannot be located prior to a class or function with which it is merged."; + case 2460: return "Type '{0}' has no property '{1}'."; + case 2469: return "The '{0}' operator cannot be applied to type '{1}'."; + case 2474: return "In 'const' enum declarations member initializer must be constant expression."; + case 2484: return "Export declaration conflicts with exported declaration of '{0}'."; + case 2531: return "Object is possibly 'null'."; + case 2540: return "Cannot assign to '{0}' because it is a constant or a read-only property."; + case 2541: return "The target of an assignment must be a variable or a property access."; + case 2542: return "Index signature in type '{0}' only permits reading."; + case 2554: return "Expected {0} arguments, but got {1}."; + case 2555: return "Expected at least {0} arguments, but got {1}."; + case 2558: return "Expected {0} type arguments, but got {1}."; + case 2651: return "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums."; + case 2673: return "Constructor of class '{0}' is private and only accessible within the class declaration."; + case 2674: return "Constructor of class '{0}' is protected and only accessible within the class declaration."; + case 2694: return "Namespace '{0}' has no exported member '{1}'."; + case 2706: return "Required type parameters may not follow optional type parameters."; + case 2718: return "Duplicate property '{0}'."; + case 2757: return "Type '{0}' has no call signatures."; + case 6054: return "File '{0}' not found."; + case 6188: return "Numeric separators are not allowed here."; + case 6189: return "Multiple consecutive numeric separators are not permitted."; + case 17009: return "'super' must be called before accessing 'this' in the constructor of a derived class."; + case 17011: return "'super' must be called before accessing a property of 'super' in the constructor of a derived class."; + default: return ""; + } +} +exports.diagnosticCodeToString = diagnosticCodeToString; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY01lc3NhZ2VzLmdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWFnbm9zdGljTWVzc2FnZXMuZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0csQ0FBQSxLQUFLOztBQUVSLG9DQUFvQztBQUVwQywwQ0FBMEM7QUFDMUMsSUFBWSxjQXdJWDtBQXhJRCxXQUFZLGNBQWM7SUFDeEIsMkZBQTZCLENBQUE7SUFDN0IsbUZBQXlCLENBQUE7SUFDekIseUVBQW9CLENBQUE7SUFDcEIsdUpBQTJELENBQUE7SUFDM0QsaU9BQWdHLENBQUE7SUFDaEcsaUhBQXdDLENBQUE7SUFDeEMsNkhBQThDLENBQUE7SUFDOUMsMkdBQXFDLENBQUE7SUFDckMseUdBQW9DLENBQUE7SUFDcEMsMkdBQXFDLENBQUE7SUFDckMseUtBQW9FLENBQUE7SUFDcEUsdUlBQW1ELENBQUE7SUFDbkQsNkdBQXNDLENBQUE7SUFDdEMsbUlBQWlELENBQUE7SUFDakQsNkhBQThDLENBQUE7SUFDOUMsdUdBQW1DLENBQUE7SUFDbkMsbUZBQXlCLENBQUE7SUFDekIsdUhBQTJDLENBQUE7SUFDM0MsbUlBQWlELENBQUE7SUFDakQsdUpBQTJELENBQUE7SUFDM0QsNkhBQThDLENBQUE7SUFDOUMsMkxBQTZFLENBQUE7SUFDN0UsdUhBQTJDLENBQUE7SUFDM0MsaUlBQWdELENBQUE7SUFDaEQsbUlBQWlELENBQUE7SUFDakQscUlBQWtELENBQUE7SUFDbEQsK0ZBQStCLENBQUE7SUFDL0IscUZBQTBCLENBQUE7SUFDMUIsNkZBQThCLENBQUE7SUFDOUIsb0dBQWtDLENBQUE7SUFDbEMsb0ZBQTBCLENBQUE7SUFDMUIsb0VBQWtCLENBQUE7SUFDbEIsOEhBQStDLENBQUE7SUFDL0Msa0dBQWlDLENBQUE7SUFDakMsOEVBQXVCLENBQUE7SUFDdkIsZ0pBQXdELENBQUE7SUFDeEQsb0pBQTBELENBQUE7SUFDMUQsOEpBQStELENBQUE7SUFDL0QsMElBQXFELENBQUE7SUFDckQsOElBQXVELENBQUE7SUFDdkQsNEdBQXNDLENBQUE7SUFDdEMsb0hBQTBDLENBQUE7SUFDMUMsb0lBQWtELENBQUE7SUFDbEQsMElBQXFELENBQUE7SUFDckQsb0pBQTBELENBQUE7SUFDMUQsd0hBQTRDLENBQUE7SUFDNUMsZ0hBQXdDLENBQUE7SUFDeEMsa0tBQWlFLENBQUE7SUFDakUsa0tBQWlFLENBQUE7SUFDakUsNEhBQThDLENBQUE7SUFDOUMsb0pBQTBELENBQUE7SUFDMUQsb0hBQTBDLENBQUE7SUFDMUMsd01BQW9GLENBQUE7SUFDcEYsc05BQTJGLENBQUE7SUFDM0Ysa0tBQWlFLENBQUE7SUFDakUsb0ZBQTBCLENBQUE7SUFDMUIsd0VBQW9CLENBQUE7SUFDcEIsb0xBQTBFLENBQUE7SUFDMUUsZ0ZBQXdCLENBQUE7SUFDeEIsa0lBQWlELENBQUE7SUFDakQsd0lBQW9ELENBQUE7SUFDcEQsMEVBQXFCLENBQUE7SUFDckIsa0dBQWlDLENBQUE7SUFDakMsMEZBQTZCLENBQUE7SUFDN0IsZ0ZBQXdCLENBQUE7SUFDeEIsZ0dBQWdDLENBQUE7SUFDaEMsc0tBQW1FLENBQUE7SUFDbkUsNEtBQXNFLENBQUE7SUFDdEUsMEZBQTZCLENBQUE7SUFDN0IsNEZBQThCLENBQUE7SUFDOUIsd0dBQW9DLENBQUE7SUFDcEMsc0ZBQTJCLENBQUE7SUFDM0IsNEhBQThDLENBQUE7SUFDOUMsNEhBQThDLENBQUE7SUFDOUMsb0pBQTBELENBQUE7SUFDMUQsd0ZBQTRCLENBQUE7SUFDNUIsc0ZBQTJCLENBQUE7SUFDM0IsOEpBQStELENBQUE7SUFDL0Qsb01BQWtGLENBQUE7SUFDbEYsc0hBQTJDLENBQUE7SUFDM0Msd0dBQW9DLENBQUE7SUFDcEMsc01BQW1GLENBQUE7SUFDbkYsc0xBQTJFLENBQUE7SUFDM0UsOEtBQXVFLENBQUE7SUFDdkUsd0hBQTRDLENBQUE7SUFDNUMsMEtBQXFFLENBQUE7SUFDckUsMEZBQTZCLENBQUE7SUFDN0Isa0ZBQXlCLENBQUE7SUFDekIsZ0hBQXdDLENBQUE7SUFDeEMsZ0lBQWdELENBQUE7SUFDaEQsd0ZBQTRCLENBQUE7SUFDNUIsa0hBQXlDLENBQUE7SUFDekMsc0hBQTJDLENBQUE7SUFDM0MsMElBQXFELENBQUE7SUFDckQsOElBQXVELENBQUE7SUFDdkQsd09BQW9HLENBQUE7SUFDcEcsb0hBQTBDLENBQUE7SUFDMUMsMFBBQTZHLENBQUE7SUFDN0csOExBQStFLENBQUE7SUFDL0UsMEtBQXFFLENBQUE7SUFDckUsZ09BQWdHLENBQUE7SUFDaEcsME5BQTZGLENBQUE7SUFDN0Ysd0lBQW9ELENBQUE7SUFDcEQsb0tBQWtFLENBQUE7SUFDbEUsa0tBQWlFLENBQUE7SUFDakUsd0lBQW9ELENBQUE7SUFDcEQsd0hBQTRDLENBQUE7SUFDNUMsNE1BQXNGLENBQUE7SUFDdEYsc0pBQTJELENBQUE7SUFDM0QsZ0hBQXdDLENBQUE7SUFDeEMsZ05BQXdGLENBQUE7SUFDeEYsME9BQXFHLENBQUE7SUFDckcsOEZBQStCLENBQUE7SUFDL0Isa0lBQWlELENBQUE7SUFDakQsZ01BQWdGLENBQUE7SUFDaEYsb0tBQWtFLENBQUE7SUFDbEUsNEZBQThCLENBQUE7SUFDOUIsb0xBQTBFLENBQUE7SUFDMUUsb0xBQTBFLENBQUE7SUFDMUUsMElBQXFELENBQUE7SUFDckQsMEdBQXFDLENBQUE7SUFDckMsNEhBQThDLENBQUE7SUFDOUMsb0hBQTBDLENBQUE7SUFDMUMsMFNBQXFJLENBQUE7SUFDckksa05BQXlGLENBQUE7SUFDekYsc05BQTJGLENBQUE7SUFDM0Ysc0hBQTJDLENBQUE7SUFDM0MsOEtBQXVFLENBQUE7SUFDdkUsc0ZBQTJCLENBQUE7SUFDM0Isd0dBQW9DLENBQUE7SUFDcEMsOEVBQXVCLENBQUE7SUFDdkIsNEhBQThDLENBQUE7SUFDOUMsZ0tBQWdFLENBQUE7SUFDaEUsaU5BQXlGLENBQUE7SUFDekYsK09BQXdHLENBQUE7QUFDMUcsQ0FBQyxFQXhJVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQXdJekI7QUFFRCw2REFBNkQ7QUFDN0QsU0FBZ0Isc0JBQXNCLENBQUMsSUFBb0I7SUFDekQsUUFBUSxJQUFJLEVBQUU7UUFDWixLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sMEJBQTBCLENBQUM7UUFDNUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLHNCQUFzQixDQUFDO1FBQ3hDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxtQkFBbUIsQ0FBQztRQUNyQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sZ0VBQWdFLENBQUM7UUFDbEYsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLHFHQUFxRyxDQUFDO1FBQ3ZILEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyw2Q0FBNkMsQ0FBQztRQUMvRCxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sbURBQW1ELENBQUM7UUFDckUsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLHNDQUFzQyxDQUFDO1FBQ3hELEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxpQ0FBaUMsQ0FBQztRQUNuRCxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sa0NBQWtDLENBQUM7UUFDcEQsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLGlFQUFpRSxDQUFDO1FBQ25GLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxnREFBZ0QsQ0FBQztRQUNsRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sbUNBQW1DLENBQUM7UUFDckQsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLHNEQUFzRCxDQUFDO1FBQ3hFLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTywrQ0FBK0MsQ0FBQztRQUNqRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sb0NBQW9DLENBQUM7UUFDdEQsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLHNCQUFzQixDQUFDO1FBQ3hDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyw0Q0FBNEMsQ0FBQztRQUM5RCxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sOENBQThDLENBQUM7UUFDaEUsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLDREQUE0RCxDQUFDO1FBQzlFLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTywrQ0FBK0MsQ0FBQztRQUNqRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sZ0ZBQWdGLENBQUM7UUFDbEcsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLHdDQUF3QyxDQUFDO1FBQzFELEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyw2Q0FBNkMsQ0FBQztRQUMvRCxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sOENBQThDLENBQUM7UUFDaEUsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLDBEQUEwRCxDQUFDO1FBQzVFLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTywrQkFBK0IsQ0FBQztRQUNqRCxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sdUJBQXVCLENBQUM7UUFDekMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLDZCQUE2QixDQUFDO1FBQy9DLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyw4QkFBOEIsQ0FBQztRQUNqRCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sc0JBQXNCLENBQUM7UUFDekMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLGlCQUFpQixDQUFDO1FBQ3BDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyQ0FBMkMsQ0FBQztRQUM5RCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sNkJBQTZCLENBQUM7UUFDaEQsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG1CQUFtQixDQUFDO1FBQ3RDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxvREFBb0QsQ0FBQztRQUN2RSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sc0RBQXNELENBQUM7UUFDekUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLDJEQUEyRCxDQUFDO1FBQzlFLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxpREFBaUQsQ0FBQztRQUNwRSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sbURBQW1ELENBQUM7UUFDdEUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHFDQUFxQyxDQUFDO1FBQ3hELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxzQ0FBc0MsQ0FBQztRQUN6RCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sOENBQThDLENBQUM7UUFDakUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG1EQUFtRCxDQUFDO1FBQ3RFLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyx3REFBd0QsQ0FBQztRQUMzRSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sMENBQTBDLENBQUM7UUFDN0QsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG9DQUFvQyxDQUFDO1FBQ3ZELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyw2REFBNkQsQ0FBQztRQUNoRixLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sNkRBQTZELENBQUM7UUFDaEYsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLDBDQUEwQyxDQUFDO1FBQzdELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyx3REFBd0QsQ0FBQztRQUMzRSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sc0NBQXNDLENBQUM7UUFDekQsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLGtGQUFrRixDQUFDO1FBQ3JHLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyx5RkFBeUYsQ0FBQztRQUM1RyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sK0RBQStELENBQUM7UUFDbEYsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHNCQUFzQixDQUFDO1FBQ3pDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxnQkFBZ0IsQ0FBQztRQUNuQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sMEVBQTBFLENBQUM7UUFDN0YsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHdCQUF3QixDQUFDO1FBQzNDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyw2Q0FBNkMsQ0FBQztRQUNoRSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sZ0RBQWdELENBQUM7UUFDbkUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLGlCQUFpQixDQUFDO1FBQ3BDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyw2QkFBNkIsQ0FBQztRQUNoRCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8seUJBQXlCLENBQUM7UUFDNUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG9CQUFvQixDQUFDO1FBQ3ZDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywrQkFBK0IsQ0FBQztRQUNsRCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sZ0VBQWdFLENBQUM7UUFDbkYsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG9FQUFvRSxDQUFDO1FBQ3ZGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyx5QkFBeUIsQ0FBQztRQUM1QyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sMEJBQTBCLENBQUM7UUFDN0MsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLGdDQUFnQyxDQUFDO1FBQ25ELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyx1QkFBdUIsQ0FBQztRQUMxQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sMkNBQTJDLENBQUM7UUFDOUQsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLDBDQUEwQyxDQUFDO1FBQzdELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyx3REFBd0QsQ0FBQztRQUMzRSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sd0JBQXdCLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHVCQUF1QixDQUFDO1FBQzFDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyREFBMkQsQ0FBQztRQUM5RSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sOEVBQThFLENBQUM7UUFDakcsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHVDQUF1QyxDQUFDO1FBQzFELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxnQ0FBZ0MsQ0FBQztRQUNuRCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sa0ZBQWtGLENBQUM7UUFDckcsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLDJFQUEyRSxDQUFDO1FBQzlGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyx1RUFBdUUsQ0FBQztRQUMxRixLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sd0NBQXdDLENBQUM7UUFDM0QsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLGlFQUFpRSxDQUFDO1FBQ3BGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyw2QkFBNkIsQ0FBQztRQUNoRCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8seUJBQXlCLENBQUM7UUFDNUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLDRDQUE0QyxDQUFDO1FBQy9ELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxtREFBbUQsQ0FBQztRQUN0RSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sNEJBQTRCLENBQUM7UUFDL0MsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLDZDQUE2QyxDQUFDO1FBQ2hFLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyQ0FBMkMsQ0FBQztRQUM5RCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sa0RBQWtELENBQUM7UUFDckUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG9EQUFvRCxDQUFDO1FBQ3ZFLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxnR0FBZ0csQ0FBQztRQUNuSCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sOENBQThDLENBQUM7UUFDakUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLDhHQUE4RyxDQUFDO1FBQ2pJLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyw2RUFBNkUsQ0FBQztRQUNoRyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sbUVBQW1FLENBQUM7UUFDdEYsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLDRGQUE0RixDQUFDO1FBQy9HLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyx5RkFBeUYsQ0FBQztRQUM1RyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sNERBQTRELENBQUM7UUFDL0UsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLGdFQUFnRSxDQUFDO1FBQ25GLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywrREFBK0QsQ0FBQztRQUNsRixLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sbURBQW1ELENBQUM7UUFDdEUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHdDQUF3QyxDQUFDO1FBQzNELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxrRkFBa0YsQ0FBQztRQUNyRyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sdURBQXVELENBQUM7UUFDMUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG9DQUFvQyxDQUFDO1FBQ3ZELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyx3RkFBd0YsQ0FBQztRQUMzRyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8saUdBQWlHLENBQUM7UUFDcEgsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG1DQUFtQyxDQUFDO1FBQ3RELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxxREFBcUQsQ0FBQztRQUN4RSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sOEVBQThFLENBQUM7UUFDakcsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLGtFQUFrRSxDQUFDO1FBQ3JGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyw0QkFBNEIsQ0FBQztRQUMvQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sMEVBQTBFLENBQUM7UUFDN0YsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHNFQUFzRSxDQUFDO1FBQ3pGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxxREFBcUQsQ0FBQztRQUN4RSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sc0NBQXNDLENBQUM7UUFDekQsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLCtDQUErQyxDQUFDO1FBQ2xFLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyQ0FBMkMsQ0FBQztRQUM5RCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sa0lBQWtJLENBQUM7UUFDckosS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHlGQUF5RixDQUFDO1FBQzVHLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyRkFBMkYsQ0FBQztRQUM5RyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sK0NBQStDLENBQUM7UUFDbEUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG1FQUFtRSxDQUFDO1FBQ3RGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyQkFBMkIsQ0FBQztRQUM5QyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sb0NBQW9DLENBQUM7UUFDdkQsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHVCQUF1QixDQUFDO1FBQzFDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywwQ0FBMEMsQ0FBQztRQUM3RCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sNERBQTRELENBQUM7UUFDL0UsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLHVGQUF1RixDQUFDO1FBQzNHLEtBQUssS0FBSyxDQUFDLENBQUMsT0FBTyxzR0FBc0csQ0FBQztRQUMxSCxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNwQjtBQUNILENBQUM7QUEzSUQsd0RBMklDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgZnJvbSBkaWFnbm9zdGljc01lc3NhZ2VzLmpzb24uIERvIG5vdCBlZGl0LlxuICogQG1vZHVsZSBkaWFnbm9zdGljc1xuICovLyoqKi9cblxuLyogdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoICovXG5cbi8qKiBFbnVtIG9mIGF2YWlsYWJsZSBkaWFnbm9zdGljIGNvZGVzLiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0NvZGUge1xuICBPcGVyYXRpb25fbm90X3N1cHBvcnRlZCA9IDEwMCxcbiAgT3BlcmF0aW9uX2lzX3Vuc2FmZSA9IDEwMSxcbiAgVXNlcl9kZWZpbmVkXzAgPSAxMDIsXG4gIENvbnZlcnNpb25fZnJvbV90eXBlXzBfdG9fMV9yZXF1aXJlc19hbl9leHBsaWNpdF9jYXN0ID0gMjAwLFxuICBDb252ZXJzaW9uX2Zyb21fdHlwZV8wX3RvXzFfd2lsbF9yZXF1aXJlX2FuX2V4cGxpY2l0X2Nhc3Rfd2hlbl9zd2l0Y2hpbmdfYmV0d2Vlbl8zMl82NF9iaXQgPSAyMDEsXG4gIFR5cGVfMF9jYW5ub3RfYmVfY2hhbmdlZF90b190eXBlXzEgPSAyMDIsXG4gIFR5cGVfMF9jYW5ub3RfYmVfcmVpbnRlcnByZXRlZF9hc190eXBlXzEgPSAyMDMsXG4gIEJhc2ljX3R5cGVfMF9jYW5ub3RfYmVfbnVsbGFibGUgPSAyMDQsXG4gIENhbm5vdF9leHBvcnRfYV9tdXRhYmxlX2dsb2JhbCA9IDIwNSxcbiAgTXV0YWJsZV92YWx1ZV9jYW5ub3RfYmVfaW5saW5lZCA9IDIwNixcbiAgVW5tYW5hZ2VkX2NsYXNzZXNfY2Fubm90X2V4dGVuZF9tYW5hZ2VkX2NsYXNzZXNfYW5kX3ZpY2VfdmVyc2EgPSAyMDcsXG4gIFVubWFuYWdlZF9jbGFzc2VzX2Nhbm5vdF9pbXBsZW1lbnRfaW50ZXJmYWNlcyA9IDIwOCxcbiAgSW52YWxpZF9yZWd1bGFyX2V4cHJlc3Npb25fZmxhZ3MgPSAyMDksXG4gIEltcGxlbWVudGF0aW9uXzBfbXVzdF9tYXRjaF90aGVfc2lnbmF0dXJlXzEgPSAyMTAsXG4gIENsYXNzXzBfaXNfc2VhbGVkX2FuZF9jYW5ub3RfYmVfZXh0ZW5kZWQgPSAyMTEsXG4gIERlY29yYXRvcl8wX2lzX25vdF92YWxpZF9oZXJlID0gMjEyLFxuICBEdXBsaWNhdGVfZGVjb3JhdG9yID0gMjEzLFxuICBBbl9hbGxvY2F0b3JfbXVzdF9iZV9wcmVzZW50X3RvX3VzZV8wID0gMjE0LFxuICBPcHRpb25hbF9wYXJhbWV0ZXJfbXVzdF9oYXZlX2FuX2luaXRpYWxpemVyID0gMjE1LFxuICBDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX211c3Rfbm90X3JlcXVpcmVfYW55X2FyZ3VtZW50cyA9IDIxNixcbiAgRnVuY3Rpb25fMF9jYW5ub3RfYmVfaW5saW5lZF9pbnRvX2l0c2VsZiA9IDIxNyxcbiAgQ2Fubm90X2FjY2Vzc19tZXRob2RfMF93aXRob3V0X2NhbGxpbmdfaXRfYXNfaXRfcmVxdWlyZXNfdGhpc190b19iZV9zZXQgPSAyMTgsXG4gIE9wdGlvbmFsX3Byb3BlcnRpZXNfYXJlX25vdF9zdXBwb3J0ZWQgPSAyMTksXG4gIEV4cHJlc3Npb25fbXVzdF9iZV9hX2NvbXBpbGVfdGltZV9jb25zdGFudCA9IDIyMCxcbiAgTW9kdWxlX2Nhbm5vdF9oYXZlX211bHRpcGxlX3N0YXJ0X2Z1bmN0aW9ucyA9IDIyMSxcbiAgXzBfbXVzdF9iZV9hX3ZhbHVlX2JldHdlZW5fMV9hbmRfMl9pbmNsdXNpdmUgPSAyMjIsXG4gIF8wX211c3RfYmVfYV9wb3dlcl9vZl90d28gPSAyMjMsXG4gIEV4cHJlc3Npb25faXNfdW5zYWZlID0gMjI0LFxuICBFeHByZXNzaW9uX2lzX25ldmVyX251bGwgPSAyMjUsXG4gIFVudGVybWluYXRlZF9zdHJpbmdfbGl0ZXJhbCA9IDEwMDIsXG4gIElkZW50aWZpZXJfZXhwZWN0ZWQgPSAxMDAzLFxuICBfMF9leHBlY3RlZCA9IDEwMDUsXG4gIEFfZmlsZV9jYW5ub3RfaGF2ZV9hX3JlZmVyZW5jZV90b19pdHNlbGYgPSAxMDA2LFxuICBUcmFpbGluZ19jb21tYV9ub3RfYWxsb3dlZCA9IDEwMDksXG4gIFVuZXhwZWN0ZWRfdG9rZW4gPSAxMDEyLFxuICBBX3Jlc3RfcGFyYW1ldGVyX211c3RfYmVfbGFzdF9pbl9hX3BhcmFtZXRlcl9saXN0ID0gMTAxNCxcbiAgUGFyYW1ldGVyX2Nhbm5vdF9oYXZlX3F1ZXN0aW9uX21hcmtfYW5kX2luaXRpYWxpemVyID0gMTAxNSxcbiAgQV9yZXF1aXJlZF9wYXJhbWV0ZXJfY2Fubm90X2ZvbGxvd19hbl9vcHRpb25hbF9wYXJhbWV0ZXIgPSAxMDE2LFxuICBTdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzID0gMTAzNixcbiAgSW5pdGlhbGl6ZXJzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzID0gMTAzOSxcbiAgXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaGVyZSA9IDEwNDIsXG4gIEFfcmVzdF9wYXJhbWV0ZXJfY2Fubm90X2JlX29wdGlvbmFsID0gMTA0NyxcbiAgQV9yZXN0X3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplciA9IDEwNDgsXG4gIEFfc2V0X2FjY2Vzc29yX211c3RfaGF2ZV9leGFjdGx5X29uZV9wYXJhbWV0ZXIgPSAxMDQ5LFxuICBBX3NldF9hY2Nlc3Nvcl9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXIgPSAxMDUyLFxuICBBX2dldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9wYXJhbWV0ZXJzID0gMTA1NCxcbiAgRW51bV9tZW1iZXJfbXVzdF9oYXZlX2luaXRpYWxpemVyID0gMTA2MSxcbiAgVHlwZV9wYXJhbWV0ZXJzX2Nhbm5vdF9hcHBlYXJfb25fYV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IDEwOTIsXG4gIFR5cGVfYW5ub3RhdGlvbl9jYW5ub3RfYXBwZWFyX29uX2FfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSAxMDkzLFxuICBBbl9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV90eXBlX3BhcmFtZXRlcnMgPSAxMDk0LFxuICBBX3NldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9hX3JldHVybl90eXBlX2Fubm90YXRpb24gPSAxMDk1LFxuICBUeXBlX3BhcmFtZXRlcl9saXN0X2Nhbm5vdF9iZV9lbXB0eSA9IDEwOTgsXG4gIEFfY29udGludWVfc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FuX2VuY2xvc2luZ19pdGVyYXRpb25fc3RhdGVtZW50ID0gMTEwNCxcbiAgQV9icmVha19zdGF0ZW1lbnRfY2FuX29ubHlfYmVfdXNlZF93aXRoaW5fYW5fZW5jbG9zaW5nX2l0ZXJhdGlvbl9vcl9zd2l0Y2hfc3RhdGVtZW50ID0gMTEwNSxcbiAgQV9yZXR1cm5fc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FfZnVuY3Rpb25fYm9keSA9IDExMDgsXG4gIEV4cHJlc3Npb25fZXhwZWN0ZWQgPSAxMTA5LFxuICBUeXBlX2V4cGVjdGVkID0gMTExMCxcbiAgQV9kZWZhdWx0X2NsYXVzZV9jYW5ub3RfYXBwZWFyX21vcmVfdGhhbl9vbmNlX2luX2Ffc3dpdGNoX3N0YXRlbWVudCA9IDExMTMsXG4gIER1cGxpY2F0ZV9sYWJlbF8wID0gMTExNCxcbiAgQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2hhdmVfbW9kaWZpZXJzID0gMTEyMCxcbiAgT2N0YWxfbGl0ZXJhbHNfYXJlX25vdF9hbGxvd2VkX2luX3N0cmljdF9tb2RlID0gMTEyMSxcbiAgRGlnaXRfZXhwZWN0ZWQgPSAxMTI0LFxuICBIZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCA9IDExMjUsXG4gIFVuZXhwZWN0ZWRfZW5kX29mX3RleHQgPSAxMTI2LFxuICBJbnZhbGlkX2NoYXJhY3RlciA9IDExMjcsXG4gIF9jYXNlX29yX2RlZmF1bHRfZXhwZWN0ZWQgPSAxMTMwLFxuICBfc3VwZXJfbXVzdF9iZV9mb2xsb3dlZF9ieV9hbl9hcmd1bWVudF9saXN0X29yX21lbWJlcl9hY2Nlc3MgPSAxMDM0LFxuICBBX2RlY2xhcmVfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaW5fYW5fYWxyZWFkeV9hbWJpZW50X2NvbnRleHQgPSAxMDM4LFxuICBUeXBlX2FyZ3VtZW50X2V4cGVjdGVkID0gMTE0MCxcbiAgU3RyaW5nX2xpdGVyYWxfZXhwZWN0ZWQgPSAxMTQxLFxuICBMaW5lX2JyZWFrX25vdF9wZXJtaXR0ZWRfaGVyZSA9IDExNDIsXG4gIERlY2xhcmF0aW9uX2V4cGVjdGVkID0gMTE0NixcbiAgX2NvbnN0X2RlY2xhcmF0aW9uc19tdXN0X2JlX2luaXRpYWxpemVkID0gMTE1NSxcbiAgVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsID0gMTE2MSxcbiAgSW50ZXJmYWNlX2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX2ltcGxlbWVudHNfY2xhdXNlID0gMTE3NixcbiAgQmluYXJ5X2RpZ2l0X2V4cGVjdGVkID0gMTE3NyxcbiAgT2N0YWxfZGlnaXRfZXhwZWN0ZWQgPSAxMTc4LFxuICBBbl9pbXBsZW1lbnRhdGlvbl9jYW5ub3RfYmVfZGVjbGFyZWRfaW5fYW1iaWVudF9jb250ZXh0cyA9IDExODMsXG4gIEFuX2V4dGVuZGVkX1VuaWNvZGVfZXNjYXBlX3ZhbHVlX211c3RfYmVfYmV0d2Vlbl8weDBfYW5kXzB4MTBGRkZGX2luY2x1c2l2ZSA9IDExOTgsXG4gIFVudGVybWluYXRlZF9Vbmljb2RlX2VzY2FwZV9zZXF1ZW5jZSA9IDExOTksXG4gIERlY29yYXRvcnNfYXJlX25vdF92YWxpZF9oZXJlID0gMTIwNixcbiAgX2Fic3RyYWN0X21vZGlmaWVyX2Nhbl9vbmx5X2FwcGVhcl9vbl9hX2NsYXNzX21ldGhvZF9vcl9wcm9wZXJ0eV9kZWNsYXJhdGlvbiA9IDEyNDIsXG4gIE1ldGhvZF8wX2Nhbm5vdF9oYXZlX2FuX2ltcGxlbWVudGF0aW9uX2JlY2F1c2VfaXRfaXNfbWFya2VkX2Fic3RyYWN0ID0gMTI0NSxcbiAgQV9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbl9pc19ub3RfcGVybWl0dGVkX2luX3RoaXNfY29udGV4dCA9IDEyNTUsXG4gIEFfY2xhc3NfbWF5X29ubHlfZXh0ZW5kX2Fub3RoZXJfY2xhc3MgPSAxMzExLFxuICBBX3BhcmFtZXRlcl9wcm9wZXJ0eV9jYW5ub3RfYmVfZGVjbGFyZWRfdXNpbmdfYV9yZXN0X3BhcmFtZXRlciA9IDEzMTcsXG4gIER1cGxpY2F0ZV9pZGVudGlmaWVyXzAgPSAyMzAwLFxuICBDYW5ub3RfZmluZF9uYW1lXzAgPSAyMzA0LFxuICBNb2R1bGVfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEgPSAyMzA1LFxuICBHZW5lcmljX3R5cGVfMF9yZXF1aXJlc18xX3R5cGVfYXJndW1lbnRfcyA9IDIzMTQsXG4gIFR5cGVfMF9pc19ub3RfZ2VuZXJpYyA9IDIzMTUsXG4gIFR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzEgPSAyMzIyLFxuICBJbmRleF9zaWduYXR1cmVfaXNfbWlzc2luZ19pbl90eXBlXzAgPSAyMzI5LFxuICBfdGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9jdXJyZW50X2xvY2F0aW9uID0gMjMzMixcbiAgX3N1cGVyX2Nhbl9vbmx5X2JlX3JlZmVyZW5jZWRfaW5fYV9kZXJpdmVkX2NsYXNzID0gMjMzNSxcbiAgU3VwZXJfY2FsbHNfYXJlX25vdF9wZXJtaXR0ZWRfb3V0c2lkZV9jb25zdHJ1Y3RvcnNfb3JfaW5fbmVzdGVkX2Z1bmN0aW9uc19pbnNpZGVfY29uc3RydWN0b3JzID0gMjMzNyxcbiAgUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzEgPSAyMzM5LFxuICBDYW5ub3RfaW52b2tlX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9sYWNrc19hX2NhbGxfc2lnbmF0dXJlX1R5cGVfMF9oYXNfbm9fY29tcGF0aWJsZV9jYWxsX3NpZ25hdHVyZXMgPSAyMzQ5LFxuICBDYW5ub3RfdXNlX25ld193aXRoX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9sYWNrc19hX2NvbnN0cnVjdF9zaWduYXR1cmUgPSAyMzUxLFxuICBBX2Z1bmN0aW9uX3dob3NlX2RlY2xhcmVkX3R5cGVfaXNfbm90X3ZvaWRfbXVzdF9yZXR1cm5fYV92YWx1ZSA9IDIzNTUsXG4gIFRoZV9vcGVyYW5kX29mX2FuX2luY3JlbWVudF9vcl9kZWNyZW1lbnRfb3BlcmF0b3JfbXVzdF9iZV9hX3ZhcmlhYmxlX29yX2FfcHJvcGVydHlfYWNjZXNzID0gMjM1NyxcbiAgVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2Fzc2lnbm1lbnRfZXhwcmVzc2lvbl9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3MgPSAyMzY0LFxuICBPcGVyYXRvcl8wX2Nhbm5vdF9iZV9hcHBsaWVkX3RvX3R5cGVzXzFfYW5kXzIgPSAyMzY1LFxuICBBX3N1cGVyX2NhbGxfbXVzdF9iZV90aGVfZmlyc3Rfc3RhdGVtZW50X2luX3RoZV9jb25zdHJ1Y3RvciA9IDIzNzYsXG4gIENvbnN0cnVjdG9yc19mb3JfZGVyaXZlZF9jbGFzc2VzX211c3RfY29udGFpbl9hX3N1cGVyX2NhbGwgPSAyMzc3LFxuICBfZ2V0X2FuZF9zZXRfYWNjZXNzb3JfbXVzdF9oYXZlX3RoZV9zYW1lX3R5cGUgPSAyMzgwLFxuICBDb25zdHJ1Y3Rvcl9pbXBsZW1lbnRhdGlvbl9pc19taXNzaW5nID0gMjM5MCxcbiAgRnVuY3Rpb25faW1wbGVtZW50YXRpb25faXNfbWlzc2luZ19vcl9ub3RfaW1tZWRpYXRlbHlfZm9sbG93aW5nX3RoZV9kZWNsYXJhdGlvbiA9IDIzOTEsXG4gIE11bHRpcGxlX2NvbnN0cnVjdG9yX2ltcGxlbWVudGF0aW9uc19hcmVfbm90X2FsbG93ZWQgPSAyMzkyLFxuICBEdXBsaWNhdGVfZnVuY3Rpb25faW1wbGVtZW50YXRpb24gPSAyMzkzLFxuICBJbmRpdmlkdWFsX2RlY2xhcmF0aW9uc19pbl9tZXJnZWRfZGVjbGFyYXRpb25fMF9tdXN0X2JlX2FsbF9leHBvcnRlZF9vcl9hbGxfbG9jYWwgPSAyMzk1LFxuICBBX25hbWVzcGFjZV9kZWNsYXJhdGlvbl9jYW5ub3RfYmVfbG9jYXRlZF9wcmlvcl90b19hX2NsYXNzX29yX2Z1bmN0aW9uX3dpdGhfd2hpY2hfaXRfaXNfbWVyZ2VkID0gMjQzNCxcbiAgVHlwZV8wX2hhc19ub19wcm9wZXJ0eV8xID0gMjQ2MCxcbiAgVGhlXzBfb3BlcmF0b3JfY2Fubm90X2JlX2FwcGxpZWRfdG9fdHlwZV8xID0gMjQ2OSxcbiAgSW5fY29uc3RfZW51bV9kZWNsYXJhdGlvbnNfbWVtYmVyX2luaXRpYWxpemVyX211c3RfYmVfY29uc3RhbnRfZXhwcmVzc2lvbiA9IDI0NzQsXG4gIEV4cG9ydF9kZWNsYXJhdGlvbl9jb25mbGljdHNfd2l0aF9leHBvcnRlZF9kZWNsYXJhdGlvbl9vZl8wID0gMjQ4NCxcbiAgT2JqZWN0X2lzX3Bvc3NpYmx5X251bGwgPSAyNTMxLFxuICBDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX2NvbnN0YW50X29yX2FfcmVhZF9vbmx5X3Byb3BlcnR5ID0gMjU0MCxcbiAgVGhlX3RhcmdldF9vZl9hbl9hc3NpZ25tZW50X211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2VzcyA9IDI1NDEsXG4gIEluZGV4X3NpZ25hdHVyZV9pbl90eXBlXzBfb25seV9wZXJtaXRzX3JlYWRpbmcgPSAyNTQyLFxuICBFeHBlY3RlZF8wX2FyZ3VtZW50c19idXRfZ290XzEgPSAyNTU0LFxuICBFeHBlY3RlZF9hdF9sZWFzdF8wX2FyZ3VtZW50c19idXRfZ290XzEgPSAyNTU1LFxuICBFeHBlY3RlZF8wX3R5cGVfYXJndW1lbnRzX2J1dF9nb3RfMSA9IDI1NTgsXG4gIEFfbWVtYmVyX2luaXRpYWxpemVyX2luX2FfZW51bV9kZWNsYXJhdGlvbl9jYW5ub3RfcmVmZXJlbmNlX21lbWJlcnNfZGVjbGFyZWRfYWZ0ZXJfaXRfaW5jbHVkaW5nX21lbWJlcnNfZGVmaW5lZF9pbl9vdGhlcl9lbnVtcyA9IDI2NTEsXG4gIENvbnN0cnVjdG9yX29mX2NsYXNzXzBfaXNfcHJpdmF0ZV9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb24gPSAyNjczLFxuICBDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX2lzX3Byb3RlY3RlZF9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb24gPSAyNjc0LFxuICBOYW1lc3BhY2VfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEgPSAyNjk0LFxuICBSZXF1aXJlZF90eXBlX3BhcmFtZXRlcnNfbWF5X25vdF9mb2xsb3dfb3B0aW9uYWxfdHlwZV9wYXJhbWV0ZXJzID0gMjcwNixcbiAgRHVwbGljYXRlX3Byb3BlcnR5XzAgPSAyNzE4LFxuICBUeXBlXzBfaGFzX25vX2NhbGxfc2lnbmF0dXJlcyA9IDI3NTcsXG4gIEZpbGVfMF9ub3RfZm91bmQgPSA2MDU0LFxuICBOdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmUgPSA2MTg4LFxuICBNdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQgPSA2MTg5LFxuICBfc3VwZXJfbXVzdF9iZV9jYWxsZWRfYmVmb3JlX2FjY2Vzc2luZ190aGlzX2luX3RoZV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3MgPSAxNzAwOSxcbiAgX3N1cGVyX211c3RfYmVfY2FsbGVkX2JlZm9yZV9hY2Nlc3NpbmdfYV9wcm9wZXJ0eV9vZl9zdXBlcl9pbl90aGVfY29uc3RydWN0b3Jfb2ZfYV9kZXJpdmVkX2NsYXNzID0gMTcwMTFcbn1cblxuLyoqIFRyYW5zbGF0ZXMgYSBkaWFnbm9zdGljIGNvZGUgdG8gaXRzIHJlc3BlY3RpdmUgc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpYWdub3N0aWNDb2RlVG9TdHJpbmcoY29kZTogRGlhZ25vc3RpY0NvZGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIDEwMDogcmV0dXJuIFwiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQuXCI7XG4gICAgY2FzZSAxMDE6IHJldHVybiBcIk9wZXJhdGlvbiBpcyB1bnNhZmUuXCI7XG4gICAgY2FzZSAxMDI6IHJldHVybiBcIlVzZXItZGVmaW5lZDogezB9XCI7XG4gICAgY2FzZSAyMDA6IHJldHVybiBcIkNvbnZlcnNpb24gZnJvbSB0eXBlICd7MH0nIHRvICd7MX0nIHJlcXVpcmVzIGFuIGV4cGxpY2l0IGNhc3QuXCI7XG4gICAgY2FzZSAyMDE6IHJldHVybiBcIkNvbnZlcnNpb24gZnJvbSB0eXBlICd7MH0nIHRvICd7MX0nIHdpbGwgcmVxdWlyZSBhbiBleHBsaWNpdCBjYXN0IHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gMzIvNjQtYml0LlwiO1xuICAgIGNhc2UgMjAyOiByZXR1cm4gXCJUeXBlICd7MH0nIGNhbm5vdCBiZSBjaGFuZ2VkIHRvIHR5cGUgJ3sxfScuXCI7XG4gICAgY2FzZSAyMDM6IHJldHVybiBcIlR5cGUgJ3swfScgY2Fubm90IGJlIHJlaW50ZXJwcmV0ZWQgYXMgdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIwNDogcmV0dXJuIFwiQmFzaWMgdHlwZSAnezB9JyBjYW5ub3QgYmUgbnVsbGFibGUuXCI7XG4gICAgY2FzZSAyMDU6IHJldHVybiBcIkNhbm5vdCBleHBvcnQgYSBtdXRhYmxlIGdsb2JhbC5cIjtcbiAgICBjYXNlIDIwNjogcmV0dXJuIFwiTXV0YWJsZSB2YWx1ZSBjYW5ub3QgYmUgaW5saW5lZC5cIjtcbiAgICBjYXNlIDIwNzogcmV0dXJuIFwiVW5tYW5hZ2VkIGNsYXNzZXMgY2Fubm90IGV4dGVuZCBtYW5hZ2VkIGNsYXNzZXMgYW5kIHZpY2UtdmVyc2EuXCI7XG4gICAgY2FzZSAyMDg6IHJldHVybiBcIlVubWFuYWdlZCBjbGFzc2VzIGNhbm5vdCBpbXBsZW1lbnQgaW50ZXJmYWNlcy5cIjtcbiAgICBjYXNlIDIwOTogcmV0dXJuIFwiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZ3MuXCI7XG4gICAgY2FzZSAyMTA6IHJldHVybiBcIkltcGxlbWVudGF0aW9uICd7MH0nIG11c3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIxMTogcmV0dXJuIFwiQ2xhc3MgJ3swfScgaXMgc2VhbGVkIGFuZCBjYW5ub3QgYmUgZXh0ZW5kZWQuXCI7XG4gICAgY2FzZSAyMTI6IHJldHVybiBcIkRlY29yYXRvciAnezB9JyBpcyBub3QgdmFsaWQgaGVyZS5cIjtcbiAgICBjYXNlIDIxMzogcmV0dXJuIFwiRHVwbGljYXRlIGRlY29yYXRvci5cIjtcbiAgICBjYXNlIDIxNDogcmV0dXJuIFwiQW4gYWxsb2NhdG9yIG11c3QgYmUgcHJlc2VudCB0byB1c2UgJ3swfScuXCI7XG4gICAgY2FzZSAyMTU6IHJldHVybiBcIk9wdGlvbmFsIHBhcmFtZXRlciBtdXN0IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCI7XG4gICAgY2FzZSAyMTY6IHJldHVybiBcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIG11c3Qgbm90IHJlcXVpcmUgYW55IGFyZ3VtZW50cy5cIjtcbiAgICBjYXNlIDIxNzogcmV0dXJuIFwiRnVuY3Rpb24gJ3swfScgY2Fubm90IGJlIGlubGluZWQgaW50byBpdHNlbGYuXCI7XG4gICAgY2FzZSAyMTg6IHJldHVybiBcIkNhbm5vdCBhY2Nlc3MgbWV0aG9kICd7MH0nIHdpdGhvdXQgY2FsbGluZyBpdCBhcyBpdCByZXF1aXJlcyAndGhpcycgdG8gYmUgc2V0LlwiO1xuICAgIGNhc2UgMjE5OiByZXR1cm4gXCJPcHRpb25hbCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xuICAgIGNhc2UgMjIwOiByZXR1cm4gXCJFeHByZXNzaW9uIG11c3QgYmUgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuXCI7XG4gICAgY2FzZSAyMjE6IHJldHVybiBcIk1vZHVsZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBzdGFydCBmdW5jdGlvbnMuXCI7XG4gICAgY2FzZSAyMjI6IHJldHVybiBcIid7MH0nIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuICd7MX0nIGFuZCAnezJ9JyBpbmNsdXNpdmUuXCI7XG4gICAgY2FzZSAyMjM6IHJldHVybiBcIid7MH0nIG11c3QgYmUgYSBwb3dlciBvZiB0d28uXCI7XG4gICAgY2FzZSAyMjQ6IHJldHVybiBcIkV4cHJlc3Npb24gaXMgdW5zYWZlLlwiO1xuICAgIGNhc2UgMjI1OiByZXR1cm4gXCJFeHByZXNzaW9uIGlzIG5ldmVyICdudWxsJy5cIjtcbiAgICBjYXNlIDEwMDI6IHJldHVybiBcIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbC5cIjtcbiAgICBjYXNlIDEwMDM6IHJldHVybiBcIklkZW50aWZpZXIgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMDA1OiByZXR1cm4gXCInezB9JyBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDEwMDY6IHJldHVybiBcIkEgZmlsZSBjYW5ub3QgaGF2ZSBhIHJlZmVyZW5jZSB0byBpdHNlbGYuXCI7XG4gICAgY2FzZSAxMDA5OiByZXR1cm4gXCJUcmFpbGluZyBjb21tYSBub3QgYWxsb3dlZC5cIjtcbiAgICBjYXNlIDEwMTI6IHJldHVybiBcIlVuZXhwZWN0ZWQgdG9rZW4uXCI7XG4gICAgY2FzZSAxMDE0OiByZXR1cm4gXCJBIHJlc3QgcGFyYW1ldGVyIG11c3QgYmUgbGFzdCBpbiBhIHBhcmFtZXRlciBsaXN0LlwiO1xuICAgIGNhc2UgMTAxNTogcmV0dXJuIFwiUGFyYW1ldGVyIGNhbm5vdCBoYXZlIHF1ZXN0aW9uIG1hcmsgYW5kIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTAxNjogcmV0dXJuIFwiQSByZXF1aXJlZCBwYXJhbWV0ZXIgY2Fubm90IGZvbGxvdyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuXCI7XG4gICAgY2FzZSAxMDM2OiByZXR1cm4gXCJTdGF0ZW1lbnRzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiO1xuICAgIGNhc2UgMTAzOTogcmV0dXJuIFwiSW5pdGlhbGl6ZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiO1xuICAgIGNhc2UgMTA0MjogcmV0dXJuIFwiJ3swfScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgaGVyZS5cIjtcbiAgICBjYXNlIDEwNDc6IHJldHVybiBcIkEgcmVzdCBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsLlwiO1xuICAgIGNhc2UgMTA0ODogcmV0dXJuIFwiQSByZXN0IHBhcmFtZXRlciBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplci5cIjtcbiAgICBjYXNlIDEwNDk6IHJldHVybiBcIkEgJ3NldCcgYWNjZXNzb3IgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlci5cIjtcbiAgICBjYXNlIDEwNTI6IHJldHVybiBcIkEgJ3NldCcgYWNjZXNzb3IgcGFyYW1ldGVyIGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTA1NDogcmV0dXJuIFwiQSAnZ2V0JyBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzLlwiO1xuICAgIGNhc2UgMTA2MTogcmV0dXJuIFwiRW51bSBtZW1iZXIgbXVzdCBoYXZlIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTA5MjogcmV0dXJuIFwiVHlwZSBwYXJhbWV0ZXJzIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5cIjtcbiAgICBjYXNlIDEwOTM6IHJldHVybiBcIlR5cGUgYW5ub3RhdGlvbiBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uXCI7XG4gICAgY2FzZSAxMDk0OiByZXR1cm4gXCJBbiBhY2Nlc3NvciBjYW5ub3QgaGF2ZSB0eXBlIHBhcmFtZXRlcnMuXCI7XG4gICAgY2FzZSAxMDk1OiByZXR1cm4gXCJBICdzZXQnIGFjY2Vzc29yIGNhbm5vdCBoYXZlIGEgcmV0dXJuIHR5cGUgYW5ub3RhdGlvbi5cIjtcbiAgICBjYXNlIDEwOTg6IHJldHVybiBcIlR5cGUgcGFyYW1ldGVyIGxpc3QgY2Fubm90IGJlIGVtcHR5LlwiO1xuICAgIGNhc2UgMTEwNDogcmV0dXJuIFwiQSAnY29udGludWUnIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIHN0YXRlbWVudC5cIjtcbiAgICBjYXNlIDExMDU6IHJldHVybiBcIkEgJ2JyZWFrJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYW4gZW5jbG9zaW5nIGl0ZXJhdGlvbiBvciBzd2l0Y2ggc3RhdGVtZW50LlwiO1xuICAgIGNhc2UgMTEwODogcmV0dXJuIFwiQSAncmV0dXJuJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYSBmdW5jdGlvbiBib2R5LlwiO1xuICAgIGNhc2UgMTEwOTogcmV0dXJuIFwiRXhwcmVzc2lvbiBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExMTA6IHJldHVybiBcIlR5cGUgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMTEzOiByZXR1cm4gXCJBICdkZWZhdWx0JyBjbGF1c2UgY2Fubm90IGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhICdzd2l0Y2gnIHN0YXRlbWVudC5cIjtcbiAgICBjYXNlIDExMTQ6IHJldHVybiBcIkR1cGxpY2F0ZSBsYWJlbCAnezB9Jy5cIjtcbiAgICBjYXNlIDExMjA6IHJldHVybiBcIkFuIGV4cG9ydCBhc3NpZ25tZW50IGNhbm5vdCBoYXZlIG1vZGlmaWVycy5cIjtcbiAgICBjYXNlIDExMjE6IHJldHVybiBcIk9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS5cIjtcbiAgICBjYXNlIDExMjQ6IHJldHVybiBcIkRpZ2l0IGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTEyNTogcmV0dXJuIFwiSGV4YWRlY2ltYWwgZGlnaXQgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMTI2OiByZXR1cm4gXCJVbmV4cGVjdGVkIGVuZCBvZiB0ZXh0LlwiO1xuICAgIGNhc2UgMTEyNzogcmV0dXJuIFwiSW52YWxpZCBjaGFyYWN0ZXIuXCI7XG4gICAgY2FzZSAxMTMwOiByZXR1cm4gXCInY2FzZScgb3IgJ2RlZmF1bHQnIGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTAzNDogcmV0dXJuIFwiJ3N1cGVyJyBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFuIGFyZ3VtZW50IGxpc3Qgb3IgbWVtYmVyIGFjY2Vzcy5cIjtcbiAgICBjYXNlIDEwMzg6IHJldHVybiBcIkEgJ2RlY2xhcmUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIGluIGFuIGFscmVhZHkgYW1iaWVudCBjb250ZXh0LlwiO1xuICAgIGNhc2UgMTE0MDogcmV0dXJuIFwiVHlwZSBhcmd1bWVudCBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNDE6IHJldHVybiBcIlN0cmluZyBsaXRlcmFsIGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTE0MjogcmV0dXJuIFwiTGluZSBicmVhayBub3QgcGVybWl0dGVkIGhlcmUuXCI7XG4gICAgY2FzZSAxMTQ2OiByZXR1cm4gXCJEZWNsYXJhdGlvbiBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNTU6IHJldHVybiBcIidjb25zdCcgZGVjbGFyYXRpb25zIG11c3QgYmUgaW5pdGlhbGl6ZWQuXCI7XG4gICAgY2FzZSAxMTYxOiByZXR1cm4gXCJVbnRlcm1pbmF0ZWQgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwuXCI7XG4gICAgY2FzZSAxMTc2OiByZXR1cm4gXCJJbnRlcmZhY2UgZGVjbGFyYXRpb24gY2Fubm90IGhhdmUgJ2ltcGxlbWVudHMnIGNsYXVzZS5cIjtcbiAgICBjYXNlIDExNzc6IHJldHVybiBcIkJpbmFyeSBkaWdpdCBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNzg6IHJldHVybiBcIk9jdGFsIGRpZ2l0IGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTE4MzogcmV0dXJuIFwiQW4gaW1wbGVtZW50YXRpb24gY2Fubm90IGJlIGRlY2xhcmVkIGluIGFtYmllbnQgY29udGV4dHMuXCI7XG4gICAgY2FzZSAxMTk4OiByZXR1cm4gXCJBbiBleHRlbmRlZCBVbmljb2RlIGVzY2FwZSB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMHgwIGFuZCAweDEwRkZGRiBpbmNsdXNpdmUuXCI7XG4gICAgY2FzZSAxMTk5OiByZXR1cm4gXCJVbnRlcm1pbmF0ZWQgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UuXCI7XG4gICAgY2FzZSAxMjA2OiByZXR1cm4gXCJEZWNvcmF0b3JzIGFyZSBub3QgdmFsaWQgaGVyZS5cIjtcbiAgICBjYXNlIDEyNDI6IHJldHVybiBcIidhYnN0cmFjdCcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgY2xhc3MsIG1ldGhvZCwgb3IgcHJvcGVydHkgZGVjbGFyYXRpb24uXCI7XG4gICAgY2FzZSAxMjQ1OiByZXR1cm4gXCJNZXRob2QgJ3swfScgY2Fubm90IGhhdmUgYW4gaW1wbGVtZW50YXRpb24gYmVjYXVzZSBpdCBpcyBtYXJrZWQgYWJzdHJhY3QuXCI7XG4gICAgY2FzZSAxMjU1OiByZXR1cm4gXCJBIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9uICchJyBpcyBub3QgcGVybWl0dGVkIGluIHRoaXMgY29udGV4dC5cIjtcbiAgICBjYXNlIDEzMTE6IHJldHVybiBcIkEgY2xhc3MgbWF5IG9ubHkgZXh0ZW5kIGFub3RoZXIgY2xhc3MuXCI7XG4gICAgY2FzZSAxMzE3OiByZXR1cm4gXCJBIHBhcmFtZXRlciBwcm9wZXJ0eSBjYW5ub3QgYmUgZGVjbGFyZWQgdXNpbmcgYSByZXN0IHBhcmFtZXRlci5cIjtcbiAgICBjYXNlIDIzMDA6IHJldHVybiBcIkR1cGxpY2F0ZSBpZGVudGlmaWVyICd7MH0nLlwiO1xuICAgIGNhc2UgMjMwNDogcmV0dXJuIFwiQ2Fubm90IGZpbmQgbmFtZSAnezB9Jy5cIjtcbiAgICBjYXNlIDIzMDU6IHJldHVybiBcIk1vZHVsZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiO1xuICAgIGNhc2UgMjMxNDogcmV0dXJuIFwiR2VuZXJpYyB0eXBlICd7MH0nIHJlcXVpcmVzIHsxfSB0eXBlIGFyZ3VtZW50KHMpLlwiO1xuICAgIGNhc2UgMjMxNTogcmV0dXJuIFwiVHlwZSAnezB9JyBpcyBub3QgZ2VuZXJpYy5cIjtcbiAgICBjYXNlIDIzMjI6IHJldHVybiBcIlR5cGUgJ3swfScgaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIzMjk6IHJldHVybiBcIkluZGV4IHNpZ25hdHVyZSBpcyBtaXNzaW5nIGluIHR5cGUgJ3swfScuXCI7XG4gICAgY2FzZSAyMzMyOiByZXR1cm4gXCIndGhpcycgY2Fubm90IGJlIHJlZmVyZW5jZWQgaW4gY3VycmVudCBsb2NhdGlvbi5cIjtcbiAgICBjYXNlIDIzMzU6IHJldHVybiBcIidzdXBlcicgY2FuIG9ubHkgYmUgcmVmZXJlbmNlZCBpbiBhIGRlcml2ZWQgY2xhc3MuXCI7XG4gICAgY2FzZSAyMzM3OiByZXR1cm4gXCJTdXBlciBjYWxscyBhcmUgbm90IHBlcm1pdHRlZCBvdXRzaWRlIGNvbnN0cnVjdG9ycyBvciBpbiBuZXN0ZWQgZnVuY3Rpb25zIGluc2lkZSBjb25zdHJ1Y3RvcnMuXCI7XG4gICAgY2FzZSAyMzM5OiByZXR1cm4gXCJQcm9wZXJ0eSAnezB9JyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICd7MX0nLlwiO1xuICAgIGNhc2UgMjM0OTogcmV0dXJuIFwiQ2Fubm90IGludm9rZSBhbiBleHByZXNzaW9uIHdob3NlIHR5cGUgbGFja3MgYSBjYWxsIHNpZ25hdHVyZS4gVHlwZSAnezB9JyBoYXMgbm8gY29tcGF0aWJsZSBjYWxsIHNpZ25hdHVyZXMuXCI7XG4gICAgY2FzZSAyMzUxOiByZXR1cm4gXCJDYW5ub3QgdXNlICduZXcnIHdpdGggYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBlIGxhY2tzIGEgY29uc3RydWN0IHNpZ25hdHVyZS5cIjtcbiAgICBjYXNlIDIzNTU6IHJldHVybiBcIkEgZnVuY3Rpb24gd2hvc2UgZGVjbGFyZWQgdHlwZSBpcyBub3QgJ3ZvaWQnIG11c3QgcmV0dXJuIGEgdmFsdWUuXCI7XG4gICAgY2FzZSAyMzU3OiByZXR1cm4gXCJUaGUgb3BlcmFuZCBvZiBhbiBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IG9wZXJhdG9yIG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIHByb3BlcnR5IGFjY2Vzcy5cIjtcbiAgICBjYXNlIDIzNjQ6IHJldHVybiBcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGV4cHJlc3Npb24gbXVzdCBiZSBhIHZhcmlhYmxlIG9yIGEgcHJvcGVydHkgYWNjZXNzLlwiO1xuICAgIGNhc2UgMjM2NTogcmV0dXJuIFwiT3BlcmF0b3IgJ3swfScgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZXMgJ3sxfScgYW5kICd7Mn0nLlwiO1xuICAgIGNhc2UgMjM3NjogcmV0dXJuIFwiQSAnc3VwZXInIGNhbGwgbXVzdCBiZSB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjb25zdHJ1Y3Rvci5cIjtcbiAgICBjYXNlIDIzNzc6IHJldHVybiBcIkNvbnN0cnVjdG9ycyBmb3IgZGVyaXZlZCBjbGFzc2VzIG11c3QgY29udGFpbiBhICdzdXBlcicgY2FsbC5cIjtcbiAgICBjYXNlIDIzODA6IHJldHVybiBcIidnZXQnIGFuZCAnc2V0JyBhY2Nlc3NvciBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZS5cIjtcbiAgICBjYXNlIDIzOTA6IHJldHVybiBcIkNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uIGlzIG1pc3NpbmcuXCI7XG4gICAgY2FzZSAyMzkxOiByZXR1cm4gXCJGdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBpcyBtaXNzaW5nIG9yIG5vdCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIGRlY2xhcmF0aW9uLlwiO1xuICAgIGNhc2UgMjM5MjogcmV0dXJuIFwiTXVsdGlwbGUgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25zIGFyZSBub3QgYWxsb3dlZC5cIjtcbiAgICBjYXNlIDIzOTM6IHJldHVybiBcIkR1cGxpY2F0ZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi5cIjtcbiAgICBjYXNlIDIzOTU6IHJldHVybiBcIkluZGl2aWR1YWwgZGVjbGFyYXRpb25zIGluIG1lcmdlZCBkZWNsYXJhdGlvbiAnezB9JyBtdXN0IGJlIGFsbCBleHBvcnRlZCBvciBhbGwgbG9jYWwuXCI7XG4gICAgY2FzZSAyNDM0OiByZXR1cm4gXCJBIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiBjYW5ub3QgYmUgbG9jYXRlZCBwcmlvciB0byBhIGNsYXNzIG9yIGZ1bmN0aW9uIHdpdGggd2hpY2ggaXQgaXMgbWVyZ2VkLlwiO1xuICAgIGNhc2UgMjQ2MDogcmV0dXJuIFwiVHlwZSAnezB9JyBoYXMgbm8gcHJvcGVydHkgJ3sxfScuXCI7XG4gICAgY2FzZSAyNDY5OiByZXR1cm4gXCJUaGUgJ3swfScgb3BlcmF0b3IgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDI0NzQ6IHJldHVybiBcIkluICdjb25zdCcgZW51bSBkZWNsYXJhdGlvbnMgbWVtYmVyIGluaXRpYWxpemVyIG11c3QgYmUgY29uc3RhbnQgZXhwcmVzc2lvbi5cIjtcbiAgICBjYXNlIDI0ODQ6IHJldHVybiBcIkV4cG9ydCBkZWNsYXJhdGlvbiBjb25mbGljdHMgd2l0aCBleHBvcnRlZCBkZWNsYXJhdGlvbiBvZiAnezB9Jy5cIjtcbiAgICBjYXNlIDI1MzE6IHJldHVybiBcIk9iamVjdCBpcyBwb3NzaWJseSAnbnVsbCcuXCI7XG4gICAgY2FzZSAyNTQwOiByZXR1cm4gXCJDYW5ub3QgYXNzaWduIHRvICd7MH0nIGJlY2F1c2UgaXQgaXMgYSBjb25zdGFudCBvciBhIHJlYWQtb25seSBwcm9wZXJ0eS5cIjtcbiAgICBjYXNlIDI1NDE6IHJldHVybiBcIlRoZSB0YXJnZXQgb2YgYW4gYXNzaWdubWVudCBtdXN0IGJlIGEgdmFyaWFibGUgb3IgYSBwcm9wZXJ0eSBhY2Nlc3MuXCI7XG4gICAgY2FzZSAyNTQyOiByZXR1cm4gXCJJbmRleCBzaWduYXR1cmUgaW4gdHlwZSAnezB9JyBvbmx5IHBlcm1pdHMgcmVhZGluZy5cIjtcbiAgICBjYXNlIDI1NTQ6IHJldHVybiBcIkV4cGVjdGVkIHswfSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiO1xuICAgIGNhc2UgMjU1NTogcmV0dXJuIFwiRXhwZWN0ZWQgYXQgbGVhc3QgezB9IGFyZ3VtZW50cywgYnV0IGdvdCB7MX0uXCI7XG4gICAgY2FzZSAyNTU4OiByZXR1cm4gXCJFeHBlY3RlZCB7MH0gdHlwZSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiO1xuICAgIGNhc2UgMjY1MTogcmV0dXJuIFwiQSBtZW1iZXIgaW5pdGlhbGl6ZXIgaW4gYSBlbnVtIGRlY2xhcmF0aW9uIGNhbm5vdCByZWZlcmVuY2UgbWVtYmVycyBkZWNsYXJlZCBhZnRlciBpdCwgaW5jbHVkaW5nIG1lbWJlcnMgZGVmaW5lZCBpbiBvdGhlciBlbnVtcy5cIjtcbiAgICBjYXNlIDI2NzM6IHJldHVybiBcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNsYXNzIGRlY2xhcmF0aW9uLlwiO1xuICAgIGNhc2UgMjY3NDogcmV0dXJuIFwiQ29uc3RydWN0b3Igb2YgY2xhc3MgJ3swfScgaXMgcHJvdGVjdGVkIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIHRoZSBjbGFzcyBkZWNsYXJhdGlvbi5cIjtcbiAgICBjYXNlIDI2OTQ6IHJldHVybiBcIk5hbWVzcGFjZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiO1xuICAgIGNhc2UgMjcwNjogcmV0dXJuIFwiUmVxdWlyZWQgdHlwZSBwYXJhbWV0ZXJzIG1heSBub3QgZm9sbG93IG9wdGlvbmFsIHR5cGUgcGFyYW1ldGVycy5cIjtcbiAgICBjYXNlIDI3MTg6IHJldHVybiBcIkR1cGxpY2F0ZSBwcm9wZXJ0eSAnezB9Jy5cIjtcbiAgICBjYXNlIDI3NTc6IHJldHVybiBcIlR5cGUgJ3swfScgaGFzIG5vIGNhbGwgc2lnbmF0dXJlcy5cIjtcbiAgICBjYXNlIDYwNTQ6IHJldHVybiBcIkZpbGUgJ3swfScgbm90IGZvdW5kLlwiO1xuICAgIGNhc2UgNjE4ODogcmV0dXJuIFwiTnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgYWxsb3dlZCBoZXJlLlwiO1xuICAgIGNhc2UgNjE4OTogcmV0dXJuIFwiTXVsdGlwbGUgY29uc2VjdXRpdmUgbnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgcGVybWl0dGVkLlwiO1xuICAgIGNhc2UgMTcwMDk6IHJldHVybiBcIidzdXBlcicgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyAndGhpcycgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy5cIjtcbiAgICBjYXNlIDE3MDExOiByZXR1cm4gXCInc3VwZXInIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSBvZiAnc3VwZXInIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuXCI7XG4gICAgZGVmYXVsdDogcmV0dXJuIFwiXCI7XG4gIH1cbn1cbiJdfQ== + +/***/ }), + +/***/ "../src/diagnostics.ts": +/*!*****************************!*\ + !*** ../src/diagnostics.ts ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Shared diagnostic handling inherited by the parser and the compiler. + * @module diagnostics + * @preferred + */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +var diagnosticMessages_generated_1 = __webpack_require__(/*! ./diagnosticMessages.generated */ "../src/diagnosticMessages.generated.ts"); +var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); +var diagnosticMessages_generated_2 = __webpack_require__(/*! ./diagnosticMessages.generated */ "../src/diagnosticMessages.generated.ts"); +exports.DiagnosticCode = diagnosticMessages_generated_2.DiagnosticCode; +exports.diagnosticCodeToString = diagnosticMessages_generated_2.diagnosticCodeToString; +/** Indicates the category of a {@link DiagnosticMessage}. */ +var DiagnosticCategory; +(function (DiagnosticCategory) { + /** Informatory message. */ + DiagnosticCategory[DiagnosticCategory["INFO"] = 0] = "INFO"; + /** Warning message. */ + DiagnosticCategory[DiagnosticCategory["WARNING"] = 1] = "WARNING"; + /** Error message. */ + DiagnosticCategory[DiagnosticCategory["ERROR"] = 2] = "ERROR"; +})(DiagnosticCategory = exports.DiagnosticCategory || (exports.DiagnosticCategory = {})); +/** Returns the string representation of the specified diagnostic category. */ +function diagnosticCategoryToString(category) { + switch (category) { + case DiagnosticCategory.INFO: return "INFO"; + case DiagnosticCategory.WARNING: return "WARNING"; + case DiagnosticCategory.ERROR: return "ERROR"; + default: { + assert(false); + return ""; + } + } +} +exports.diagnosticCategoryToString = diagnosticCategoryToString; +/** ANSI escape sequence for blue foreground. */ +exports.COLOR_BLUE = "\u001b[96m"; +/** ANSI escape sequence for yellow foreground. */ +exports.COLOR_YELLOW = "\u001b[93m"; +/** ANSI escape sequence for red foreground. */ +exports.COLOR_RED = "\u001b[91m"; +/** ANSI escape sequence to reset the foreground color. */ +exports.COLOR_RESET = "\u001b[0m"; +/** Returns the ANSI escape sequence for the specified category. */ +function diagnosticCategoryToColor(category) { + switch (category) { + case DiagnosticCategory.INFO: return exports.COLOR_BLUE; + case DiagnosticCategory.WARNING: return exports.COLOR_YELLOW; + case DiagnosticCategory.ERROR: return exports.COLOR_RED; + default: { + assert(false); + return ""; + } + } +} +exports.diagnosticCategoryToColor = diagnosticCategoryToColor; +/** Represents a diagnostic message. */ +var DiagnosticMessage = /** @class */ (function () { + /** Constructs a new diagnostic message. */ + function DiagnosticMessage(code, category, message) { + /** Respective source range, if any. */ + this.range = null; + /** Related range, if any. */ + this.relatedRange = null; + this.code = code; + this.category = category; + this.message = message; + } + /** Creates a new diagnostic message of the specified category. */ + DiagnosticMessage.create = function (code, category, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + var message = diagnosticMessages_generated_1.diagnosticCodeToString(code); + if (arg0 != null) + message = message.replace("{0}", arg0); + if (arg1 != null) + message = message.replace("{1}", arg1); + if (arg2 != null) + message = message.replace("{2}", arg2); + return new DiagnosticMessage(code, category, message); + }; + /** Creates a new informatory diagnostic message. */ + DiagnosticMessage.createInfo = function (code, arg0, arg1) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + return DiagnosticMessage.create(code, DiagnosticCategory.INFO, arg0, arg1); + }; + /** Creates a new warning diagnostic message. */ + DiagnosticMessage.createWarning = function (code, arg0, arg1) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + return DiagnosticMessage.create(code, DiagnosticCategory.WARNING, arg0, arg1); + }; + /** Creates a new error diagnostic message. */ + DiagnosticMessage.createError = function (code, arg0, arg1) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + return DiagnosticMessage.create(code, DiagnosticCategory.ERROR, arg0, arg1); + }; + /** Adds a source range to this message. */ + DiagnosticMessage.prototype.withRange = function (range) { + this.range = range; + return this; + }; + /** Adds a related source range to this message. */ + DiagnosticMessage.prototype.withRelatedRange = function (range) { + this.relatedRange = range; + return this; + }; + /** Converts this message to a string. */ + DiagnosticMessage.prototype.toString = function () { + if (this.range) { + return (diagnosticCategoryToString(this.category) + + " " + + this.code.toString(10) + + ": \"" + + this.message + + "\" in " + + this.range.source.normalizedPath + + ":" + + this.range.line.toString(10) + + ":" + + this.range.column.toString(10)); + } + return (diagnosticCategoryToString(this.category) + + " " + + this.code.toString(10) + + ": " + + this.message); + }; + return DiagnosticMessage; +}()); +exports.DiagnosticMessage = DiagnosticMessage; +/** Formats a diagnostic message, optionally with terminal colors and source context. */ +function formatDiagnosticMessage(message, useColors, showContext) { + if (useColors === void 0) { useColors = false; } + if (showContext === void 0) { showContext = false; } + // general information + var sb = []; + if (useColors) + sb.push(diagnosticCategoryToColor(message.category)); + sb.push(diagnosticCategoryToString(message.category)); + if (useColors) + sb.push(exports.COLOR_RESET); + sb.push(message.code < 1000 ? " AS" : " TS"); + sb.push(message.code.toString(10)); + sb.push(": "); + sb.push(message.message); + // include range information if available + if (message.range) { + // include context information if requested + var range = message.range; + if (showContext) { + sb.push("\n"); + sb.push(formatDiagnosticContext(range, useColors)); + } + sb.push("\n"); + sb.push(" in "); + sb.push(range.source.normalizedPath); + sb.push("("); + sb.push(range.line.toString(10)); + sb.push(","); + sb.push(range.column.toString(10)); + sb.push(")"); + var relatedRange = message.relatedRange; + if (relatedRange) { + if (showContext) { + sb.push("\n"); + sb.push(formatDiagnosticContext(relatedRange, useColors)); + } + sb.push("\n"); + sb.push(" in "); + sb.push(range.source.normalizedPath); + sb.push("("); + sb.push(range.line.toString(10)); + sb.push(","); + sb.push(range.column.toString(10)); + sb.push(")"); + } + } + return sb.join(""); +} +exports.formatDiagnosticMessage = formatDiagnosticMessage; +/** Formats the diagnostic context for the specified range, optionally with terminal colors. */ +function formatDiagnosticContext(range, useColors) { + if (useColors === void 0) { useColors = false; } + var text = range.source.text; + var len = text.length; + var start = range.start; + var end = range.end; + while (start > 0 && !util_1.isLineBreak(text.charCodeAt(start - 1))) + start--; + while (end < len && !util_1.isLineBreak(text.charCodeAt(end))) + end++; + var sb = [ + "\n ", + text.substring(start, end), + "\n " + ]; + while (start < range.start) { + sb.push(" "); + start++; + } + if (useColors) + sb.push(exports.COLOR_RED); + if (range.start == range.end) { + sb.push("^"); + } + else { + while (start++ < range.end) { + if (util_1.isLineBreak(text.charCodeAt(start))) { + sb.push(start == range.start + 1 ? "^" : "~"); + break; + } + sb.push("~"); + } + } + if (useColors) + sb.push(exports.COLOR_RESET); + return sb.join(""); +} +exports.formatDiagnosticContext = formatDiagnosticContext; +/** Base class of all diagnostic emitters. */ +var DiagnosticEmitter = /** @class */ (function () { + /** Initializes this diagnostic emitter. */ + function DiagnosticEmitter(diagnostics) { + if (diagnostics === void 0) { diagnostics = null; } + this.diagnostics = diagnostics ? diagnostics : new Array(); + } + /** Emits a diagnostic message of the specified category. */ + DiagnosticEmitter.prototype.emitDiagnostic = function (code, category, range, relatedRange, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + var message = DiagnosticMessage.create(code, category, arg0, arg1, arg2).withRange(range); + if (relatedRange) + message.relatedRange = relatedRange; + this.diagnostics.push(message); + // console.log(formatDiagnosticMessage(message, true, true) + "\n"); // temporary + // console.log(new Error("stack").stack); + }; + /** Emits an informatory diagnostic message. */ + DiagnosticEmitter.prototype.info = function (code, range, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.INFO, range, null, arg0, arg1, arg2); + }; + /** Emits an informatory diagnostic message with a related range. */ + DiagnosticEmitter.prototype.infoRelated = function (code, range, relatedRange, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.INFO, range, relatedRange, arg0, arg1, arg2); + }; + /** Emits a warning diagnostic message. */ + DiagnosticEmitter.prototype.warning = function (code, range, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, null, arg0, arg1, arg2); + }; + /** Emits a warning diagnostic message with a related range. */ + DiagnosticEmitter.prototype.warningRelated = function (code, range, relatedRange, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, relatedRange, arg0, arg1, arg2); + }; + /** Emits an error diagnostic message. */ + DiagnosticEmitter.prototype.error = function (code, range, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, null, arg0, arg1, arg2); + }; + /** Emits an error diagnostic message with a related range. */ + DiagnosticEmitter.prototype.errorRelated = function (code, range, relatedRange, arg0, arg1, arg2) { + if (arg0 === void 0) { arg0 = null; } + if (arg1 === void 0) { arg1 = null; } + if (arg2 === void 0) { arg2 = null; } + this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, relatedRange, arg0, arg1, arg2); + }; + return DiagnosticEmitter; +}()); +exports.DiagnosticEmitter = DiagnosticEmitter; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlhZ25vc3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUcsQ0FBQSxLQUFLOztBQU1SLCtFQUd3QztBQUV4QywrQkFFZ0I7QUFFaEIsK0VBR3dDO0FBRnRDLHdEQUFBLGNBQWMsQ0FBQTtBQUNkLGdFQUFBLHNCQUFzQixDQUFBO0FBR3hCLDZEQUE2RDtBQUM3RCxJQUFZLGtCQU9YO0FBUEQsV0FBWSxrQkFBa0I7SUFDNUIsMkJBQTJCO0lBQzNCLDJEQUFJLENBQUE7SUFDSix1QkFBdUI7SUFDdkIsaUVBQU8sQ0FBQTtJQUNQLHFCQUFxQjtJQUNyQiw2REFBSyxDQUFBO0FBQ1AsQ0FBQyxFQVBXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBTzdCO0FBRUQsOEVBQThFO0FBQzlFLFNBQWdCLDBCQUEwQixDQUFDLFFBQTRCO0lBQ3JFLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUM7UUFDNUMsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQztRQUNsRCxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxDQUFDO1lBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDtLQUNGO0FBQ0gsQ0FBQztBQVZELGdFQVVDO0FBRUQsZ0RBQWdEO0FBQ25DLFFBQUEsVUFBVSxHQUFXLFlBQVksQ0FBQztBQUMvQyxrREFBa0Q7QUFDckMsUUFBQSxZQUFZLEdBQVcsWUFBWSxDQUFDO0FBQ2pELCtDQUErQztBQUNsQyxRQUFBLFNBQVMsR0FBVyxZQUFZLENBQUM7QUFDOUMsMERBQTBEO0FBQzdDLFFBQUEsV0FBVyxH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SSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUEvRkQsSUErRkM7QUEvRnFCLDhDQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIGRpYWdub3N0aWMgaGFuZGxpbmcgaW5oZXJpdGVkIGJ5IHRoZSBwYXJzZXIgYW5kIHRoZSBjb21waWxlci5cbiAqIEBtb2R1bGUgZGlhZ25vc3RpY3NcbiAqIEBwcmVmZXJyZWRcbiAqLy8qKiovXG5cbmltcG9ydCB7XG4gIFJhbmdlXG59IGZyb20gXCIuL2FzdFwiO1xuXG5pbXBvcnQge1xuICBEaWFnbm9zdGljQ29kZSxcbiAgZGlhZ25vc3RpY0NvZGVUb1N0cmluZ1xufSBmcm9tIFwiLi9kaWFnbm9zdGljTWVzc2FnZXMuZ2VuZXJhdGVkXCI7XG5cbmltcG9ydCB7XG4gIGlzTGluZUJyZWFrLCBDaGFyQ29kZVxufSBmcm9tIFwiLi91dGlsXCI7XG5cbmV4cG9ydCB7XG4gIERpYWdub3N0aWNDb2RlLFxuICBkaWFnbm9zdGljQ29kZVRvU3RyaW5nXG59IGZyb20gXCIuL2RpYWdub3N0aWNNZXNzYWdlcy5nZW5lcmF0ZWRcIjtcblxuLyoqIEluZGljYXRlcyB0aGUgY2F0ZWdvcnkgb2YgYSB7QGxpbmsgRGlhZ25vc3RpY01lc3NhZ2V9LiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0NhdGVnb3J5IHtcbiAgLyoqIEluZm9ybWF0b3J5IG1lc3NhZ2UuICovXG4gIElORk8sXG4gIC8qKiBXYXJuaW5nIG1lc3NhZ2UuICovXG4gIFdBUk5JTkcsXG4gIC8qKiBFcnJvciBtZXNzYWdlLiAqL1xuICBFUlJPUlxufVxuXG4vKiogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgZGlhZ25vc3RpYyBjYXRlZ29yeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFnbm9zdGljQ2F0ZWdvcnlUb1N0cmluZyhjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5KTogc3RyaW5nIHtcbiAgc3dpdGNoIChjYXRlZ29yeSkge1xuICAgIGNhc2UgRGlhZ25vc3RpY0NhdGVnb3J5LklORk86IHJldHVybiBcIklORk9cIjtcbiAgICBjYXNlIERpYWdub3N0aWNDYXRlZ29yeS5XQVJOSU5HOiByZXR1cm4gXCJXQVJOSU5HXCI7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuRVJST1I6IHJldHVybiBcIkVSUk9SXCI7XG4gICAgZGVmYXVsdDoge1xuICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfVxufVxuXG4vKiogQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIGJsdWUgZm9yZWdyb3VuZC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9CTFVFOiBzdHJpbmcgPSBcIlxcdTAwMWJbOTZtXCI7XG4vKiogQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIHllbGxvdyBmb3JlZ3JvdW5kLiAqL1xuZXhwb3J0IGNvbnN0IENPTE9SX1lFTExPVzogc3RyaW5nID0gXCJcXHUwMDFiWzkzbVwiO1xuLyoqIEFOU0kgZXNjYXBlIHNlcXVlbmNlIGZvciByZWQgZm9yZWdyb3VuZC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9SRUQ6IHN0cmluZyA9IFwiXFx1MDAxYls5MW1cIjtcbi8qKiBBTlNJIGVzY2FwZSBzZXF1ZW5jZSB0byByZXNldCB0aGUgZm9yZWdyb3VuZCBjb2xvci4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9SRVNFVDogc3RyaW5nID0gXCJcXHUwMDFiWzBtXCI7XG5cbi8qKiBSZXR1cm5zIHRoZSBBTlNJIGVzY2FwZSBzZXF1ZW5jZSBmb3IgdGhlIHNwZWNpZmllZCBjYXRlZ29yeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFnbm9zdGljQ2F0ZWdvcnlUb0NvbG9yKGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnkpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNhdGVnb3J5KSB7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuSU5GTzogcmV0dXJuIENPTE9SX0JMVUU7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuV0FSTklORzogcmV0dXJuIENPTE9SX1lFTExPVztcbiAgICBjYXNlIERpYWdub3N0aWNDYXRlZ29yeS5FUlJPUjogcmV0dXJuIENPTE9SX1JFRDtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBhc3NlcnQoZmFsc2UpO1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlLiAqL1xuZXhwb3J0IGNsYXNzIERpYWdub3N0aWNNZXNzYWdlIHtcblxuICAvKiogTWVzc2FnZSBjb2RlLiAqL1xuICBjb2RlOiBpMzI7XG4gIC8qKiBNZXNzYWdlIGNhdGVnb3J5LiAqL1xuICBjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5O1xuICAvKiogTWVzc2FnZSB0ZXh0LiAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBSZXNwZWN0aXZlIHNvdXJjZSByYW5nZSwgaWYgYW55LiAqL1xuICByYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgLyoqIFJlbGF0ZWQgcmFuZ2UsIGlmIGFueS4gKi9cbiAgcmVsYXRlZFJhbmdlOiBSYW5nZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IGRpYWdub3N0aWMgbWVzc2FnZS4gKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihjb2RlOiBpMzIsIGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnksIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkaWFnbm9zdGljIG1lc3NhZ2Ugb2YgdGhlIHNwZWNpZmllZCBjYXRlZ29yeS4gKi9cbiAgc3RhdGljIGNyZWF0ZShcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5LFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERpYWdub3N0aWNNZXNzYWdlIHtcbiAgICB2YXIgbWVzc2FnZSA9IGRpYWdub3N0aWNDb2RlVG9TdHJpbmcoY29kZSk7XG4gICAgaWYgKGFyZzAgIT0gbnVsbCkgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShcInswfVwiLCBhcmcwKTtcbiAgICBpZiAoYXJnMSAhPSBudWxsKSBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFwiezF9XCIsIGFyZzEpO1xuICAgIGlmIChhcmcyICE9IG51bGwpIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoXCJ7Mn1cIiwgYXJnMik7XG4gICAgcmV0dXJuIG5ldyBEaWFnbm9zdGljTWVzc2FnZShjb2RlLCBjYXRlZ29yeSwgbWVzc2FnZSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHN0YXRpYyBjcmVhdGVJbmZvKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERpYWdub3N0aWNNZXNzYWdlIHtcbiAgICByZXR1cm4gRGlhZ25vc3RpY01lc3NhZ2UuY3JlYXRlKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5JTkZPLCBhcmcwLCBhcmcxKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IHdhcm5pbmcgZGlhZ25vc3RpYyBtZXNzYWdlLiAqL1xuICBzdGF0aWMgY3JlYXRlV2FybmluZyhcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBEaWFnbm9zdGljTWVzc2FnZSB7XG4gICAgcmV0dXJuIERpYWdub3N0aWNNZXNzYWdlLmNyZWF0ZShjb2RlLCBEaWFnbm9zdGljQ2F0ZWdvcnkuV0FSTklORywgYXJnMCwgYXJnMSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBlcnJvciBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHN0YXRpYyBjcmVhdGVFcnJvcihcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBEaWFnbm9zdGljTWVzc2FnZSB7XG4gICAgcmV0dXJuIERpYWdub3N0aWNNZXNzYWdlLmNyZWF0ZShjb2RlLCBEaWFnbm9zdGljQ2F0ZWdvcnkuRVJST1IsIGFyZzAsIGFyZzEpO1xuICB9XG5cbiAgLyoqIEFkZHMgYSBzb3VyY2UgcmFuZ2UgdG8gdGhpcyBtZXNzYWdlLiAqL1xuICB3aXRoUmFuZ2UocmFuZ2U6IFJhbmdlKTogdGhpcyB7XG4gICAgdGhpcy5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEFkZHMgYSByZWxhdGVkIHNvdXJjZSByYW5nZSB0byB0aGlzIG1lc3NhZ2UuICovXG4gIHdpdGhSZWxhdGVkUmFuZ2UocmFuZ2U6IFJhbmdlKTogdGhpcyB7XG4gICAgdGhpcy5yZWxhdGVkUmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBDb252ZXJ0cyB0aGlzIG1lc3NhZ2UgdG8gYSBzdHJpbmcuICovXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGRpYWdub3N0aWNDYXRlZ29yeVRvU3RyaW5nKHRoaXMuY2F0ZWdvcnkpICtcbiAgICAgICAgXCIgXCIgK1xuICAgICAgICB0aGlzLmNvZGUudG9TdHJpbmcoMTApICtcbiAgICAgICAgXCI6IFxcXCJcIiArXG4gICAgICAgIHRoaXMubWVzc2FnZSArXG4gICAgICAgIFwiXFxcIiBpbiBcIiArXG4gICAgICAgIHRoaXMucmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICB0aGlzLnJhbmdlLmxpbmUudG9TdHJpbmcoMTApICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICB0aGlzLnJhbmdlLmNvbHVtbi50b1N0cmluZygxMClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBkaWFnbm9zdGljQ2F0ZWdvcnlUb1N0cmluZyh0aGlzLmNhdGVnb3J5KSArXG4gICAgICBcIiBcIiArXG4gICAgICB0aGlzLmNvZGUudG9TdHJpbmcoMTApICtcbiAgICAgIFwiOiBcIiArXG4gICAgICB0aGlzLm1lc3NhZ2VcbiAgICApO1xuICB9XG59XG5cbi8qKiBGb3JtYXRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlLCBvcHRpb25hbGx5IHdpdGggdGVybWluYWwgY29sb3JzIGFuZCBzb3VyY2UgY29udGV4dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREaWFnbm9zdGljTWVzc2FnZShcbiAgbWVzc2FnZTogRGlhZ25vc3RpY01lc3NhZ2UsXG4gIHVzZUNvbG9yczogYm9vbCA9IGZhbHNlLFxuICBzaG93Q29udGV4dDogYm9vbCA9IGZhbHNlXG4pOiBzdHJpbmcge1xuXG4gIC8vIGdlbmVyYWwgaW5mb3JtYXRpb25cbiAgdmFyIHNiOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodXNlQ29sb3JzKSBzYi5wdXNoKGRpYWdub3N0aWNDYXRlZ29yeVRvQ29sb3IobWVzc2FnZS5jYXRlZ29yeSkpO1xuICBzYi5wdXNoKGRpYWdub3N0aWNDYXRlZ29yeVRvU3RyaW5nKG1lc3NhZ2UuY2F0ZWdvcnkpKTtcbiAgaWYgKHVzZUNvbG9ycykgc2IucHVzaChDT0xPUl9SRVNFVCk7XG4gIHNiLnB1c2gobWVzc2FnZS5jb2RlIDwgMTAwMCA/IFwiIEFTXCIgOiBcIiBUU1wiKTtcbiAgc2IucHVzaChtZXNzYWdlLmNvZGUudG9TdHJpbmcoMTApKTtcbiAgc2IucHVzaChcIjogXCIpO1xuICBzYi5wdXNoKG1lc3NhZ2UubWVzc2FnZSk7XG5cbiAgLy8gaW5jbHVkZSByYW5nZSBpbmZvcm1hdGlvbiBpZiBhdmFpbGFibGVcbiAgaWYgKG1lc3NhZ2UucmFuZ2UpIHtcblxuICAgIC8vIGluY2x1ZGUgY29udGV4dCBpbmZvcm1hdGlvbiBpZiByZXF1ZXN0ZWRcbiAgICBsZXQgcmFuZ2UgPSBtZXNzYWdlLnJhbmdlO1xuICAgIGlmIChzaG93Q29udGV4dCkge1xuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICAgIHNiLnB1c2goZm9ybWF0RGlhZ25vc3RpY0NvbnRleHQocmFuZ2UsIHVzZUNvbG9ycykpO1xuICAgIH1cbiAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgIHNiLnB1c2goXCIgaW4gXCIpO1xuICAgIHNiLnB1c2gocmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoKTtcbiAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICBzYi5wdXNoKHJhbmdlLmxpbmUudG9TdHJpbmcoMTApKTtcbiAgICBzYi5wdXNoKFwiLFwiKTtcbiAgICBzYi5wdXNoKHJhbmdlLmNvbHVtbi50b1N0cmluZygxMCkpO1xuICAgIHNiLnB1c2goXCIpXCIpO1xuXG4gICAgbGV0IHJlbGF0ZWRSYW5nZSA9IG1lc3NhZ2UucmVsYXRlZFJhbmdlO1xuICAgIGlmIChyZWxhdGVkUmFuZ2UpIHtcbiAgICAgIGlmIChzaG93Q29udGV4dCkge1xuICAgICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgICBzYi5wdXNoKGZvcm1hdERpYWdub3N0aWNDb250ZXh0KHJlbGF0ZWRSYW5nZSwgdXNlQ29sb3JzKSk7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgc2IucHVzaChcIiBpbiBcIik7XG4gICAgICBzYi5wdXNoKHJhbmdlLnNvdXJjZS5ub3JtYWxpemVkUGF0aCk7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICAgIHNiLnB1c2gocmFuZ2UubGluZS50b1N0cmluZygxMCkpO1xuICAgICAgc2IucHVzaChcIixcIik7XG4gICAgICBzYi5wdXNoKHJhbmdlLmNvbHVtbi50b1N0cmluZygxMCkpO1xuICAgICAgc2IucHVzaChcIilcIik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzYi5qb2luKFwiXCIpO1xufVxuXG4vKiogRm9ybWF0cyB0aGUgZGlhZ25vc3RpYyBjb250ZXh0IGZvciB0aGUgc3BlY2lmaWVkIHJhbmdlLCBvcHRpb25hbGx5IHdpdGggdGVybWluYWwgY29sb3JzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpYWdub3N0aWNDb250ZXh0KHJhbmdlOiBSYW5nZSwgdXNlQ29sb3JzOiBib29sID0gZmFsc2UpOiBzdHJpbmcge1xuICB2YXIgdGV4dCA9IHJhbmdlLnNvdXJjZS50ZXh0O1xuICB2YXIgbGVuID0gdGV4dC5sZW5ndGg7XG4gIHZhciBzdGFydCA9IHJhbmdlLnN0YXJ0O1xuICB2YXIgZW5kID0gcmFuZ2UuZW5kO1xuICB3aGlsZSAoc3RhcnQgPiAwICYmICFpc0xpbmVCcmVhayh0ZXh0LmNoYXJDb2RlQXQoc3RhcnQgLSAxKSkpIHN0YXJ0LS07XG4gIHdoaWxlIChlbmQgPCBsZW4gJiYgIWlzTGluZUJyZWFrKHRleHQuY2hhckNvZGVBdChlbmQpKSkgZW5kKys7XG4gIHZhciBzYjogc3RyaW5nW10gPSBbXG4gICAgXCJcXG4gXCIsXG4gICAgdGV4dC5zdWJzdHJpbmcoc3RhcnQsIGVuZCksXG4gICAgXCJcXG4gXCJcbiAgXTtcbiAgd2hpbGUgKHN0YXJ0IDwgcmFuZ2Uuc3RhcnQpIHtcbiAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICBzdGFydCsrO1xuICB9XG4gIGlmICh1c2VDb2xvcnMpIHNiLnB1c2goQ09MT1JfUkVEKTtcbiAgaWYgKHJhbmdlLnN0YXJ0ID09IHJhbmdlLmVuZCkge1xuICAgIHNiLnB1c2goXCJeXCIpO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdGFydCsrIDwgcmFuZ2UuZW5kKSB7XG4gICAgICBpZiAoaXNMaW5lQnJlYWsodGV4dC5jaGFyQ29kZUF0KHN0YXJ0KSkpIHtcbiAgICAgICAgc2IucHVzaChzdGFydCA9PSByYW5nZS5zdGFydCArIDEgPyBcIl5cIiA6IFwiflwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiflwiKTtcbiAgICB9XG4gIH1cbiAgaWYgKHVzZUNvbG9ycykgc2IucHVzaChDT0xPUl9SRVNFVCk7XG4gIHJldHVybiBzYi5qb2luKFwiXCIpO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgZGlhZ25vc3RpYyBlbWl0dGVycy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEaWFnbm9zdGljRW1pdHRlciB7XG5cbiAgLyoqIERpYWdub3N0aWMgbWVzc2FnZXMgZW1pdHRlZCBzbyBmYXIuICovXG4gIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljTWVzc2FnZVtdO1xuXG4gIC8qKiBJbml0aWFsaXplcyB0aGlzIGRpYWdub3N0aWMgZW1pdHRlci4gKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGRpYWdub3N0aWNzOiBEaWFnbm9zdGljTWVzc2FnZVtdIHwgbnVsbCA9IG51bGwpIHtcbiAgICB0aGlzLmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3MgPyA8RGlhZ25vc3RpY01lc3NhZ2VbXT5kaWFnbm9zdGljcyA6IG5ldyBBcnJheSgpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlIG9mIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkuICovXG4gIGVtaXREaWFnbm9zdGljKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnksXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIHJlbGF0ZWRSYW5nZTogUmFuZ2UgfCBudWxsLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHZhciBtZXNzYWdlID0gRGlhZ25vc3RpY01lc3NhZ2UuY3JlYXRlKGNvZGUsIGNhdGVnb3J5LCBhcmcwLCBhcmcxLCBhcmcyKS53aXRoUmFuZ2UocmFuZ2UpO1xuICAgIGlmIChyZWxhdGVkUmFuZ2UpIG1lc3NhZ2UucmVsYXRlZFJhbmdlID0gcmVsYXRlZFJhbmdlO1xuICAgIHRoaXMuZGlhZ25vc3RpY3MucHVzaChtZXNzYWdlKTtcbiAgICAvLyBjb25zb2xlLmxvZyhmb3JtYXREaWFnbm9zdGljTWVzc2FnZShtZXNzYWdlLCB0cnVlLCB0cnVlKSArIFwiXFxuXCIpOyAvLyB0ZW1wb3JhcnlcbiAgICAvLyBjb25zb2xlLmxvZyg8c3RyaW5nPm5ldyBFcnJvcihcInN0YWNrXCIpLnN0YWNrKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIGluZm8oXG4gICAgY29kZTogRGlhZ25vc3RpY0NvZGUsXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LklORk8sIHJhbmdlLCBudWxsLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2Ugd2l0aCBhIHJlbGF0ZWQgcmFuZ2UuICovXG4gIGluZm9SZWxhdGVkKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICByZWxhdGVkUmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LklORk8sIHJhbmdlLCByZWxhdGVkUmFuZ2UsIGFyZzAsIGFyZzEsIGFyZzIpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgd2FybmluZyBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHdhcm5pbmcoXG4gICAgY29kZTogRGlhZ25vc3RpY0NvZGUsXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LldBUk5JTkcsIHJhbmdlLCBudWxsLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhIHdhcm5pbmcgZGlhZ25vc3RpYyBtZXNzYWdlIHdpdGggYSByZWxhdGVkIHJhbmdlLiAqL1xuICB3YXJuaW5nUmVsYXRlZChcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICByYW5nZTogUmFuZ2UsXG4gICAgcmVsYXRlZFJhbmdlOiBSYW5nZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcyOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVtaXREaWFnbm9zdGljKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5XQVJOSU5HLCByYW5nZSwgcmVsYXRlZFJhbmdlLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBlcnJvciBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIGVycm9yKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcyOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVtaXREaWFnbm9zdGljKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5FUlJPUiwgcmFuZ2UsIG51bGwsIGFyZzAsIGFyZzEsIGFyZzIpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGFuIGVycm9yIGRpYWdub3N0aWMgbWVzc2FnZSB3aXRoIGEgcmVsYXRlZCByYW5nZS4gKi9cbiAgZXJyb3JSZWxhdGVkKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICByZWxhdGVkUmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LkVSUk9SLCByYW5nZSwgcmVsYXRlZFJhbmdlLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxufVxuIl19 + +/***/ }), + +/***/ "../src/glue/js/float.js": +/*!*******************************!*\ + !*** ../src/glue/js/float.js ***! + \*******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {const F64 = new Float64Array(1); +const F32 = new Float32Array(F64.buffer); +const I32 = new Int32Array(F64.buffer); + +global.f32_as_i32 = function(value) { + F32[0] = value; + return I32[0]; +}; + +global.i32_as_f32 = function(value) { + I32[0] = value; + return F32[0]; +}; + +global.f64_as_i64 = function(value) { + F64[0] = value; + return i64_new(I32[0], I32[1]); +}; + +global.i64_as_f64 = function(value) { + I32[0] = i64_low(value); + I32[1] = i64_high(value); + return F64[0]; +}; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "../src/glue/js/i64.js": +/*!*****************************!*\ + !*** ../src/glue/js/i64.js ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {const Long = global.Long || __webpack_require__(/*! long */ "../node_modules/long/src/long.js"); + +global.i64_zero = Long.ZERO; + +global.i64_one = Long.ONE; + +global.i64_new = function(lo, hi) { + return Long.fromBits(lo, hi); +}; + +global.i64_low = function(value) { + return value.low; +}; + +global.i64_high = function(value) { + return value.high; +}; + +global.i64_add = function(left, right) { + return left.add(right); +}; + +global.i64_sub = function(left, right) { + return left.sub(right); +}; + +global.i64_mul = function(left, right) { + return left.mul(right); +}; + +global.i64_div = function(left, right) { + return left.div(right); +}; + +global.i64_div_u = function(left, right) { + return left.toUnsigned().div(right.toUnsigned()).toSigned(); +}; + +global.i64_rem = function(left, right) { + return left.mod(right); +}; + +global.i64_rem_u = function(left, right) { + return left.toUnsigned().mod(right.toUnsigned()).toSigned(); +}; + +global.i64_and = function(left, right) { + return left.and(right); +}; + +global.i64_or = function(left, right) { + return left.or(right); +}; + +global.i64_xor = function(left, right) { + return left.xor(right); +}; + +global.i64_shl = function(left, right) { + return left.shl(right); +}; + +global.i64_shr = function(left, right) { + return left.shr(right); +}; + +global.i64_shr_u = function(left, right) { + return left.shru(right); +}; + +global.i64_not = function(value) { + return value.not(); +}; + +global.i64_eq = function(left, right) { + return left.eq(right); +}; + +global.i64_ne = function(left, right) { + return left.ne(right); +}; + +global.i64_align = function(value, alignment) { + assert(alignment && (alignment & (alignment - 1)) == 0); + var mask = Long.fromInt(alignment - 1); + return value.add(mask).and(mask.not()); +}; + +global.i64_is_i8 = function(value) { + return value.high === 0 && (value.low >= 0 && value.low <= i8.MAX_VALUE) + || value.high === -1 && (value.low >= i8.MIN_VALUE && value.low < 0); +}; + +global.i64_is_i16 = function(value) { + return value.high === 0 && (value.low >= 0 && value.low <= i16.MAX_VALUE) + || value.high === -1 && (value.low >= i16.MIN_VALUE && value.low < 0); +}; + +global.i64_is_i32 = function(value) { + return (value.high === 0 && value.low >= 0) + || (value.high === -1 && value.low < 0); +}; + +global.i64_is_u8 = function(value) { + return value.high === 0 && value.low >= 0 && value.low <= u8.MAX_VALUE; +}; + +global.i64_is_u16 = function(value) { + return value.high === 0 && value.low >= 0 && value.low <= u16.MAX_VALUE; +}; + +global.i64_is_u32 = function(value) { + return value.high === 0; +}; + +global.i64_is_bool = function(value) { + return value.high === 0 && (value.low === 0 || value.low === 1); +}; + +const minSafeF32 = Long.fromNumber(f32.MIN_SAFE_INTEGER); +const maxSafeF32 = Long.fromNumber(f32.MAX_SAFE_INTEGER); + +global.i64_is_f32 = function(value) { + return value.gte(minSafeF32) && value.lte(maxSafeF32); +}; + +const minSafeF64 = Long.fromNumber(f64.MIN_SAFE_INTEGER); +const maxSafeF64 = Long.fromNumber(f64.MAX_SAFE_INTEGER); + +global.i64_is_f64 = function(value) { + return value.gte(minSafeF64) && value.lte(maxSafeF64); +}; + +global.i64_to_f32 = function(value) { + return global.Math.fround(value.toNumber()); +}; + +global.i64_to_f64 = function(value) { + return value.toNumber(); +}; + +global.i64_to_string = function(value, unsigned) { + return (unsigned ? value.toUnsigned() : value).toString(10); +}; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "../src/tokenizer.ts": +/*!***************************!*\ + !*** ../src/tokenizer.ts ***! + \***************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * A TypeScript tokenizer modified for AssemblyScript. + * + * Skips over trivia and provides a general mark/reset mechanism for the parser to utilize on + * ambiguous tokens. + * + * @module tokenizer + */ /***/ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var diagnostics_1 = __webpack_require__(/*! ./diagnostics */ "../src/diagnostics.ts"); +var ast_1 = __webpack_require__(/*! ./ast */ "../src/ast.ts"); +var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); +/** Named token types. */ +var Token; +(function (Token) { + // keywords + // discarded: ANY, BOOLEAN, NEVER, NUMBER, STRING, SYMBOL, UNDEFINED, LESSTHAN_SLASH + Token[Token["ABSTRACT"] = 0] = "ABSTRACT"; + Token[Token["AS"] = 1] = "AS"; + Token[Token["ASYNC"] = 2] = "ASYNC"; + Token[Token["AWAIT"] = 3] = "AWAIT"; + Token[Token["BREAK"] = 4] = "BREAK"; + Token[Token["CASE"] = 5] = "CASE"; + Token[Token["CATCH"] = 6] = "CATCH"; + Token[Token["CLASS"] = 7] = "CLASS"; + Token[Token["CONST"] = 8] = "CONST"; + Token[Token["CONTINUE"] = 9] = "CONTINUE"; + Token[Token["CONSTRUCTOR"] = 10] = "CONSTRUCTOR"; + Token[Token["DEBUGGER"] = 11] = "DEBUGGER"; + Token[Token["DECLARE"] = 12] = "DECLARE"; + Token[Token["DEFAULT"] = 13] = "DEFAULT"; + Token[Token["DELETE"] = 14] = "DELETE"; + Token[Token["DO"] = 15] = "DO"; + Token[Token["ELSE"] = 16] = "ELSE"; + Token[Token["ENUM"] = 17] = "ENUM"; + Token[Token["EXPORT"] = 18] = "EXPORT"; + Token[Token["EXTENDS"] = 19] = "EXTENDS"; + Token[Token["FALSE"] = 20] = "FALSE"; + Token[Token["FINALLY"] = 21] = "FINALLY"; + Token[Token["FOR"] = 22] = "FOR"; + Token[Token["FROM"] = 23] = "FROM"; + Token[Token["FUNCTION"] = 24] = "FUNCTION"; + Token[Token["GET"] = 25] = "GET"; + Token[Token["IF"] = 26] = "IF"; + Token[Token["IMPLEMENTS"] = 27] = "IMPLEMENTS"; + Token[Token["IMPORT"] = 28] = "IMPORT"; + Token[Token["IN"] = 29] = "IN"; + Token[Token["INSTANCEOF"] = 30] = "INSTANCEOF"; + Token[Token["INTERFACE"] = 31] = "INTERFACE"; + Token[Token["IS"] = 32] = "IS"; + Token[Token["KEYOF"] = 33] = "KEYOF"; + Token[Token["LET"] = 34] = "LET"; + Token[Token["MODULE"] = 35] = "MODULE"; + Token[Token["NAMESPACE"] = 36] = "NAMESPACE"; + Token[Token["NEW"] = 37] = "NEW"; + Token[Token["NULL"] = 38] = "NULL"; + Token[Token["OF"] = 39] = "OF"; + Token[Token["PACKAGE"] = 40] = "PACKAGE"; + Token[Token["PRIVATE"] = 41] = "PRIVATE"; + Token[Token["PROTECTED"] = 42] = "PROTECTED"; + Token[Token["PUBLIC"] = 43] = "PUBLIC"; + Token[Token["READONLY"] = 44] = "READONLY"; + Token[Token["RETURN"] = 45] = "RETURN"; + Token[Token["SET"] = 46] = "SET"; + Token[Token["STATIC"] = 47] = "STATIC"; + Token[Token["SUPER"] = 48] = "SUPER"; + Token[Token["SWITCH"] = 49] = "SWITCH"; + Token[Token["THIS"] = 50] = "THIS"; + Token[Token["THROW"] = 51] = "THROW"; + Token[Token["TRUE"] = 52] = "TRUE"; + Token[Token["TRY"] = 53] = "TRY"; + Token[Token["TYPE"] = 54] = "TYPE"; + Token[Token["TYPEOF"] = 55] = "TYPEOF"; + Token[Token["VAR"] = 56] = "VAR"; + Token[Token["VOID"] = 57] = "VOID"; + Token[Token["WHILE"] = 58] = "WHILE"; + Token[Token["WITH"] = 59] = "WITH"; + Token[Token["YIELD"] = 60] = "YIELD"; + // punctuation + Token[Token["OPENBRACE"] = 61] = "OPENBRACE"; + Token[Token["CLOSEBRACE"] = 62] = "CLOSEBRACE"; + Token[Token["OPENPAREN"] = 63] = "OPENPAREN"; + Token[Token["CLOSEPAREN"] = 64] = "CLOSEPAREN"; + Token[Token["OPENBRACKET"] = 65] = "OPENBRACKET"; + Token[Token["CLOSEBRACKET"] = 66] = "CLOSEBRACKET"; + Token[Token["DOT"] = 67] = "DOT"; + Token[Token["DOT_DOT_DOT"] = 68] = "DOT_DOT_DOT"; + Token[Token["SEMICOLON"] = 69] = "SEMICOLON"; + Token[Token["COMMA"] = 70] = "COMMA"; + Token[Token["LESSTHAN"] = 71] = "LESSTHAN"; + Token[Token["GREATERTHAN"] = 72] = "GREATERTHAN"; + Token[Token["LESSTHAN_EQUALS"] = 73] = "LESSTHAN_EQUALS"; + Token[Token["GREATERTHAN_EQUALS"] = 74] = "GREATERTHAN_EQUALS"; + Token[Token["EQUALS_EQUALS"] = 75] = "EQUALS_EQUALS"; + Token[Token["EXCLAMATION_EQUALS"] = 76] = "EXCLAMATION_EQUALS"; + Token[Token["EQUALS_EQUALS_EQUALS"] = 77] = "EQUALS_EQUALS_EQUALS"; + Token[Token["EXCLAMATION_EQUALS_EQUALS"] = 78] = "EXCLAMATION_EQUALS_EQUALS"; + Token[Token["EQUALS_GREATERTHAN"] = 79] = "EQUALS_GREATERTHAN"; + Token[Token["PLUS"] = 80] = "PLUS"; + Token[Token["MINUS"] = 81] = "MINUS"; + Token[Token["ASTERISK_ASTERISK"] = 82] = "ASTERISK_ASTERISK"; + Token[Token["ASTERISK"] = 83] = "ASTERISK"; + Token[Token["SLASH"] = 84] = "SLASH"; + Token[Token["PERCENT"] = 85] = "PERCENT"; + Token[Token["PLUS_PLUS"] = 86] = "PLUS_PLUS"; + Token[Token["MINUS_MINUS"] = 87] = "MINUS_MINUS"; + Token[Token["LESSTHAN_LESSTHAN"] = 88] = "LESSTHAN_LESSTHAN"; + Token[Token["GREATERTHAN_GREATERTHAN"] = 89] = "GREATERTHAN_GREATERTHAN"; + Token[Token["GREATERTHAN_GREATERTHAN_GREATERTHAN"] = 90] = "GREATERTHAN_GREATERTHAN_GREATERTHAN"; + Token[Token["AMPERSAND"] = 91] = "AMPERSAND"; + Token[Token["BAR"] = 92] = "BAR"; + Token[Token["CARET"] = 93] = "CARET"; + Token[Token["EXCLAMATION"] = 94] = "EXCLAMATION"; + Token[Token["TILDE"] = 95] = "TILDE"; + Token[Token["AMPERSAND_AMPERSAND"] = 96] = "AMPERSAND_AMPERSAND"; + Token[Token["BAR_BAR"] = 97] = "BAR_BAR"; + Token[Token["QUESTION"] = 98] = "QUESTION"; + Token[Token["COLON"] = 99] = "COLON"; + Token[Token["EQUALS"] = 100] = "EQUALS"; + Token[Token["PLUS_EQUALS"] = 101] = "PLUS_EQUALS"; + Token[Token["MINUS_EQUALS"] = 102] = "MINUS_EQUALS"; + Token[Token["ASTERISK_EQUALS"] = 103] = "ASTERISK_EQUALS"; + Token[Token["ASTERISK_ASTERISK_EQUALS"] = 104] = "ASTERISK_ASTERISK_EQUALS"; + Token[Token["SLASH_EQUALS"] = 105] = "SLASH_EQUALS"; + Token[Token["PERCENT_EQUALS"] = 106] = "PERCENT_EQUALS"; + Token[Token["LESSTHAN_LESSTHAN_EQUALS"] = 107] = "LESSTHAN_LESSTHAN_EQUALS"; + Token[Token["GREATERTHAN_GREATERTHAN_EQUALS"] = 108] = "GREATERTHAN_GREATERTHAN_EQUALS"; + Token[Token["GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS"] = 109] = "GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS"; + Token[Token["AMPERSAND_EQUALS"] = 110] = "AMPERSAND_EQUALS"; + Token[Token["BAR_EQUALS"] = 111] = "BAR_EQUALS"; + Token[Token["CARET_EQUALS"] = 112] = "CARET_EQUALS"; + Token[Token["AT"] = 113] = "AT"; + // literals + Token[Token["IDENTIFIER"] = 114] = "IDENTIFIER"; + Token[Token["STRINGLITERAL"] = 115] = "STRINGLITERAL"; + Token[Token["INTEGERLITERAL"] = 116] = "INTEGERLITERAL"; + Token[Token["FLOATLITERAL"] = 117] = "FLOATLITERAL"; + // meta + Token[Token["INVALID"] = 118] = "INVALID"; + Token[Token["ENDOFFILE"] = 119] = "ENDOFFILE"; +})(Token = exports.Token || (exports.Token = {})); +var IdentifierHandling; +(function (IdentifierHandling) { + IdentifierHandling[IdentifierHandling["DEFAULT"] = 0] = "DEFAULT"; + IdentifierHandling[IdentifierHandling["PREFER"] = 1] = "PREFER"; + IdentifierHandling[IdentifierHandling["ALWAYS"] = 2] = "ALWAYS"; +})(IdentifierHandling = exports.IdentifierHandling || (exports.IdentifierHandling = {})); +function tokenFromKeyword(text) { + assert(text.length); + switch (text.charCodeAt(0)) { + case 97 /* a */: { + switch (text) { + case "abstract": return Token.ABSTRACT; + case "as": return Token.AS; + case "async": return Token.ASYNC; + case "await": return Token.AWAIT; + } + break; + } + case 98 /* b */: { + switch (text) { + case "break": return Token.BREAK; + } + break; + } + case 99 /* c */: { + switch (text) { + case "case": return Token.CASE; + case "catch": return Token.CATCH; + case "class": return Token.CLASS; + case "continue": return Token.CONTINUE; + case "const": return Token.CONST; + case "constructor": return Token.CONSTRUCTOR; + } + break; + } + case 100 /* d */: { + switch (text) { + case "debugger": return Token.DEBUGGER; + case "declare": return Token.DECLARE; + case "default": return Token.DEFAULT; + case "delete": return Token.DELETE; + case "do": return Token.DO; + } + break; + } + case 101 /* e */: { + switch (text) { + case "else": return Token.ELSE; + case "enum": return Token.ENUM; + case "export": return Token.EXPORT; + case "extends": return Token.EXTENDS; + } + break; + } + case 102 /* f */: { + switch (text) { + case "false": return Token.FALSE; + case "finally": return Token.FINALLY; + case "for": return Token.FOR; + case "from": return Token.FROM; + case "function": return Token.FUNCTION; + } + break; + } + case 103 /* g */: { + switch (text) { + case "get": return Token.GET; + } + break; + } + case 105 /* i */: { + switch (text) { + case "if": return Token.IF; + case "implements": return Token.IMPLEMENTS; + case "import": return Token.IMPORT; + case "in": return Token.IN; + case "instanceof": return Token.INSTANCEOF; + case "interface": return Token.INTERFACE; + case "is": return Token.IS; + } + break; + } + case 107 /* k */: { + switch (text) { + case "keyof": return Token.KEYOF; + } + break; + } + case 108 /* l */: { + switch (text) { + case "let": return Token.LET; + } + break; + } + case 109 /* m */: { + switch (text) { + case "module": return Token.MODULE; + } + break; + } + case 110 /* n */: { + switch (text) { + case "namespace": return Token.NAMESPACE; + case "new": return Token.NEW; + case "null": return Token.NULL; + } + break; + } + case 111 /* o */: { + switch (text) { + case "of": return Token.OF; + } + break; + } + case 112 /* p */: { + switch (text) { + case "package": return Token.PACKAGE; + case "private": return Token.PRIVATE; + case "protected": return Token.PROTECTED; + case "public": return Token.PUBLIC; + } + break; + } + case 114 /* r */: { + switch (text) { + case "readonly": return Token.READONLY; + case "return": return Token.RETURN; + } + break; + } + case 115 /* s */: { + switch (text) { + case "set": return Token.SET; + case "static": return Token.STATIC; + case "super": return Token.SUPER; + case "switch": return Token.SWITCH; + } + break; + } + case 116 /* t */: { + switch (text) { + case "this": return Token.THIS; + case "throw": return Token.THROW; + case "true": return Token.TRUE; + case "try": return Token.TRY; + case "type": return Token.TYPE; + case "typeof": return Token.TYPEOF; + } + break; + } + case 118 /* v */: { + switch (text) { + case "var": return Token.VAR; + case "void": return Token.VOID; + } + break; + } + case 119 /* w */: { + switch (text) { + case "while": return Token.WHILE; + case "with": return Token.WITH; + } + break; + } + case 121 /* y */: { + switch (text) { + case "yield": return Token.YIELD; + } + break; + } + } + return Token.INVALID; +} +exports.tokenFromKeyword = tokenFromKeyword; +function tokenIsAlsoIdentifier(token) { + switch (token) { + case Token.ABSTRACT: + case Token.AS: + case Token.CONSTRUCTOR: + case Token.DECLARE: + case Token.DELETE: + case Token.FROM: + case Token.FOR: + case Token.GET: + case Token.INSTANCEOF: + case Token.IS: + case Token.KEYOF: + case Token.MODULE: + case Token.NAMESPACE: + case Token.NULL: + case Token.READONLY: + case Token.SET: + case Token.TYPE: + case Token.VOID: return true; + default: return false; + } +} +exports.tokenIsAlsoIdentifier = tokenIsAlsoIdentifier; +function isIllegalVariableIdentifier(name) { + assert(name.length); + switch (name.charCodeAt(0)) { + case 100 /* d */: return name == "delete"; + case 102 /* f */: return name == "for"; + case 105 /* i */: return name == "instanceof"; + case 110 /* n */: return name == "null"; + case 118 /* v */: return name == "void"; + } + return false; +} +exports.isIllegalVariableIdentifier = isIllegalVariableIdentifier; +function operatorTokenToString(token) { + switch (token) { + case Token.DELETE: return "delete"; + case Token.IN: return "in"; + case Token.INSTANCEOF: return "instanceof"; + case Token.NEW: return "new"; + case Token.TYPEOF: return "typeof"; + case Token.VOID: return "void"; + case Token.YIELD: return "yield"; + case Token.DOT_DOT_DOT: return "..."; + case Token.COMMA: return ","; + case Token.LESSTHAN: return "<"; + case Token.GREATERTHAN: return ">"; + case Token.LESSTHAN_EQUALS: return "<="; + case Token.GREATERTHAN_EQUALS: return ">="; + case Token.EQUALS_EQUALS: return "=="; + case Token.EXCLAMATION_EQUALS: return "!="; + case Token.EQUALS_EQUALS_EQUALS: return "==="; + case Token.EXCLAMATION_EQUALS_EQUALS: return "!=="; + case Token.PLUS: return "+"; + case Token.MINUS: return "-"; + case Token.ASTERISK_ASTERISK: return "**"; + case Token.ASTERISK: return "*"; + case Token.SLASH: return "/"; + case Token.PERCENT: return "%"; + case Token.PLUS_PLUS: return "++"; + case Token.MINUS_MINUS: return "--"; + case Token.LESSTHAN_LESSTHAN: return "<<"; + case Token.GREATERTHAN_GREATERTHAN: return ">>"; + case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: return ">>>"; + case Token.AMPERSAND: return "&"; + case Token.BAR: return "|"; + case Token.CARET: return "^"; + case Token.EXCLAMATION: return "!"; + case Token.TILDE: return "~"; + case Token.AMPERSAND_AMPERSAND: return "&&"; + case Token.BAR_BAR: return "||"; + case Token.EQUALS: return "="; + case Token.PLUS_EQUALS: return "+="; + case Token.MINUS_EQUALS: return "-="; + case Token.ASTERISK_EQUALS: return "*="; + case Token.ASTERISK_ASTERISK_EQUALS: return "**="; + case Token.SLASH_EQUALS: return "/="; + case Token.PERCENT_EQUALS: return "%="; + case Token.LESSTHAN_LESSTHAN_EQUALS: return "<<="; + case Token.GREATERTHAN_GREATERTHAN_EQUALS: return ">>="; + case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS: return ">>>="; + case Token.AMPERSAND_EQUALS: return "&="; + case Token.BAR_EQUALS: return "|="; + case Token.CARET_EQUALS: return "^="; + default: { + assert(false); + return ""; + } + } +} +exports.operatorTokenToString = operatorTokenToString; +var Range = /** @class */ (function () { + // TODO: set these while tokenizing + // line: i32; + // column: i32; + function Range(source, start, end) { + this.debugInfoRef = 0; + this.source = source; + this.start = start; + this.end = end; + } + Range.join = function (a, b) { + if (a.source != b.source) + throw new Error("source mismatch"); + return new Range(a.source, a.start < b.start ? a.start : b.start, a.end > b.end ? a.end : b.end); + }; + Object.defineProperty(Range.prototype, "atStart", { + get: function () { + return new Range(this.source, this.start, this.start); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Range.prototype, "atEnd", { + get: function () { + return new Range(this.source, this.end, this.end); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Range.prototype, "line", { + get: function () { + var text = this.source.text; + var line = 1; + for (var pos = this.start; pos >= 0; --pos) { + if (text.charCodeAt(pos) == 10 /* LINEFEED */) + line++; + } + return line; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Range.prototype, "column", { + get: function () { + var text = this.source.text; + var column = 0; + for (var pos = this.start - 1; pos >= 0; --pos) { + if (text.charCodeAt(pos) == 10 /* LINEFEED */) + break; + ++column; + } + return column; + }, + enumerable: true, + configurable: true + }); + Range.prototype.toString = function () { + return this.source.text.substring(this.start, this.end); + }; + return Range; +}()); +exports.Range = Range; +/** Tokenizes a source to individual {@link Token}s. */ +var Tokenizer = /** @class */ (function (_super) { + __extends(Tokenizer, _super); + /** Constructs a new tokenizer. */ + function Tokenizer(source, diagnostics) { + if (diagnostics === void 0) { diagnostics = null; } + var _this = _super.call(this, diagnostics) || this; + _this.end = 0; + _this.pos = 0; + _this.token = -1; + _this.tokenPos = 0; + _this.nextToken = -1; + _this.nextTokenPos = 0; + _this.nextTokenOnNewLine = false; + _this.onComment = null; + _this.source = source; + _this.pos = 0; + _this.end = source.text.length; + _this.diagnostics = diagnostics || new Array(); + var end = _this.end; + var text = source.text; + // skip bom + if (_this.pos < end && + text.charCodeAt(_this.pos) == 65279 /* BYTEORDERMARK */) { + ++_this.pos; + } + // skip shebang + if (_this.pos + 1 < end && + text.charCodeAt(_this.pos) == 35 /* HASH */ && + text.charCodeAt(_this.pos + 1) == 33 /* EXCLAMATION */) { + _this.pos += 2; + while (_this.pos < end && + text.charCodeAt(_this.pos) != 10 /* LINEFEED */) { + ++_this.pos; + } + // 'next' now starts at lf or eof + } + return _this; + } + Tokenizer.prototype.next = function (identifierHandling) { + if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } + this.nextToken = -1; + return this.token = this.unsafeNext(identifierHandling); + }; + Tokenizer.prototype.unsafeNext = function (identifierHandling, maxTokenLength) { + if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } + if (maxTokenLength === void 0) { maxTokenLength = i32.MAX_VALUE; } + var end = this.end; + var text = this.source.text; + while (this.pos < end) { + this.tokenPos = this.pos; + var c = text.charCodeAt(this.pos); + switch (c) { + case 13 /* CARRIAGERETURN */: { + if (!(++this.pos < end && + text.charCodeAt(this.pos) == 10 /* LINEFEED */)) + break; + // otherwise fall-through + } + case 10 /* LINEFEED */: + case 9 /* TAB */: + case 11 /* VERTICALTAB */: + case 12 /* FORMFEED */: + case 32 /* SPACE */: { + ++this.pos; + break; + } + case 33 /* EXCLAMATION */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + if (maxTokenLength > 2 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.EXCLAMATION_EQUALS_EQUALS; + } + return Token.EXCLAMATION_EQUALS; + } + return Token.EXCLAMATION; + } + case 34 /* DOUBLEQUOTE */: + case 39 /* SINGLEQUOTE */: + case 96 /* BACKTICK */: { // TODO + return Token.STRINGLITERAL; // expects a call to readString + } + case 37 /* PERCENT */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.PERCENT_EQUALS; + } + return Token.PERCENT; + } + case 38 /* AMPERSAND */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 38 /* AMPERSAND */) { + ++this.pos; + return Token.AMPERSAND_AMPERSAND; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.AMPERSAND_EQUALS; + } + } + return Token.AMPERSAND; + } + case 40 /* OPENPAREN */: { + ++this.pos; + return Token.OPENPAREN; + } + case 41 /* CLOSEPAREN */: { + ++this.pos; + return Token.CLOSEPAREN; + } + case 42 /* ASTERISK */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.ASTERISK_EQUALS; + } + if (chr == 42 /* ASTERISK */) { + ++this.pos; + if (maxTokenLength > 2 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.ASTERISK_ASTERISK_EQUALS; + } + return Token.ASTERISK_ASTERISK; + } + } + return Token.ASTERISK; + } + case 43 /* PLUS */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 43 /* PLUS */) { + ++this.pos; + return Token.PLUS_PLUS; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.PLUS_EQUALS; + } + } + return Token.PLUS; + } + case 44 /* COMMA */: { + ++this.pos; + return Token.COMMA; + } + case 45 /* MINUS */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 45 /* MINUS */) { + ++this.pos; + return Token.MINUS_MINUS; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.MINUS_EQUALS; + } + } + return Token.MINUS; + } + case 46 /* DOT */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (util_1.isDecimalDigit(chr)) { + --this.pos; + return Token.FLOATLITERAL; // expects a call to readFloat + } + if (maxTokenLength > 2 && this.pos + 1 < end && + chr == 46 /* DOT */ && + text.charCodeAt(this.pos + 1) == 46 /* DOT */) { + this.pos += 2; + return Token.DOT_DOT_DOT; + } + } + return Token.DOT; + } + case 47 /* SLASH */: { + var commentStartPos = this.pos; + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 47 /* SLASH */) { // single-line + var commentKind = ast_1.CommentKind.LINE; + if (this.pos + 1 < end && + text.charCodeAt(this.pos + 1) == 47 /* SLASH */) { + ++this.pos; + commentKind = ast_1.CommentKind.TRIPLE; + } + while (++this.pos < end) { + if (text.charCodeAt(this.pos) == 10 /* LINEFEED */) { + ++this.pos; + break; + } + } + if (this.onComment) { + this.onComment(commentKind, text.substring(commentStartPos, this.pos), this.range(commentStartPos, this.pos)); + } + break; + } + if (chr == 42 /* ASTERISK */) { // multi-line + var closed = false; + while (++this.pos < end) { + c = text.charCodeAt(this.pos); + if (c == 42 /* ASTERISK */ && + this.pos + 1 < end && + text.charCodeAt(this.pos + 1) == 47 /* SLASH */) { + this.pos += 2; + closed = true; + break; + } + } + if (!closed) { + this.error(diagnostics_1.DiagnosticCode._0_expected, this.range(this.pos), "*/"); + } + else if (this.onComment) { + this.onComment(ast_1.CommentKind.BLOCK, text.substring(commentStartPos, this.pos), this.range(commentStartPos, this.pos)); + } + break; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.SLASH_EQUALS; + } + } + return Token.SLASH; + } + case 48 /* _0 */: + case 49 /* _1 */: + case 50 /* _2 */: + case 51 /* _3 */: + case 52 /* _4 */: + case 53 /* _5 */: + case 54 /* _6 */: + case 55 /* _7 */: + case 56 /* _8 */: + case 57 /* _9 */: { + return this.testInteger() + ? Token.INTEGERLITERAL // expects a call to readInteger + : Token.FLOATLITERAL; // expects a call to readFloat + } + case 58 /* COLON */: { + ++this.pos; + return Token.COLON; + } + case 59 /* SEMICOLON */: { + ++this.pos; + return Token.SEMICOLON; + } + case 60 /* LESSTHAN */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 60 /* LESSTHAN */) { + ++this.pos; + if (maxTokenLength > 2 && + this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.LESSTHAN_LESSTHAN_EQUALS; + } + return Token.LESSTHAN_LESSTHAN; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.LESSTHAN_EQUALS; + } + } + return Token.LESSTHAN; + } + case 61 /* EQUALS */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 61 /* EQUALS */) { + ++this.pos; + if (maxTokenLength > 2 && + this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.EQUALS_EQUALS_EQUALS; + } + return Token.EQUALS_EQUALS; + } + if (chr == 62 /* GREATERTHAN */) { + ++this.pos; + return Token.EQUALS_GREATERTHAN; + } + } + return Token.EQUALS; + } + case 62 /* GREATERTHAN */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 62 /* GREATERTHAN */) { + ++this.pos; + if (maxTokenLength > 2 && this.pos < end) { + chr = text.charCodeAt(this.pos); + if (chr == 62 /* GREATERTHAN */) { + ++this.pos; + if (maxTokenLength > 3 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS; + } + return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.GREATERTHAN_GREATERTHAN_EQUALS; + } + } + return Token.GREATERTHAN_GREATERTHAN; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.GREATERTHAN_EQUALS; + } + } + return Token.GREATERTHAN; + } + case 63 /* QUESTION */: { + ++this.pos; + return Token.QUESTION; + } + case 91 /* OPENBRACKET */: { + ++this.pos; + return Token.OPENBRACKET; + } + case 93 /* CLOSEBRACKET */: { + ++this.pos; + return Token.CLOSEBRACKET; + } + case 94 /* CARET */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end && + text.charCodeAt(this.pos) == 61 /* EQUALS */) { + ++this.pos; + return Token.CARET_EQUALS; + } + return Token.CARET; + } + case 123 /* OPENBRACE */: { + ++this.pos; + return Token.OPENBRACE; + } + case 124 /* BAR */: { + ++this.pos; + if (maxTokenLength > 1 && this.pos < end) { + var chr = text.charCodeAt(this.pos); + if (chr == 124 /* BAR */) { + ++this.pos; + return Token.BAR_BAR; + } + if (chr == 61 /* EQUALS */) { + ++this.pos; + return Token.BAR_EQUALS; + } + } + return Token.BAR; + } + case 125 /* CLOSEBRACE */: { + ++this.pos; + return Token.CLOSEBRACE; + } + case 126 /* TILDE */: { + ++this.pos; + return Token.TILDE; + } + case 64 /* AT */: { + ++this.pos; + return Token.AT; + } + default: { + if (util_1.isIdentifierStart(c)) { + if (util_1.isKeywordCharacter(c)) { + var posBefore = this.pos; + while (++this.pos < end && + util_1.isIdentifierPart(c = text.charCodeAt(this.pos))) { + if (!util_1.isKeywordCharacter(c)) { + this.pos = posBefore; + return Token.IDENTIFIER; + } + } + var keywordText = text.substring(posBefore, this.pos); + var keywordToken = tokenFromKeyword(keywordText); + if (keywordToken !== Token.INVALID && + identifierHandling !== IdentifierHandling.ALWAYS && + !(identifierHandling === IdentifierHandling.PREFER && + tokenIsAlsoIdentifier(keywordToken))) { + return keywordToken; + } + this.pos = posBefore; + } + return Token.IDENTIFIER; // expects a call to readIdentifier + } + else if (util_1.isWhiteSpace(c)) { + ++this.pos; + break; + } + this.error(diagnostics_1.DiagnosticCode.Invalid_character, this.range(this.pos, this.pos + 1)); + ++this.pos; + return Token.INVALID; + } + } + } + return Token.ENDOFFILE; + }; + Tokenizer.prototype.peek = function (checkOnNewLine, identifierHandling, maxCompoundLength) { + if (checkOnNewLine === void 0) { checkOnNewLine = false; } + if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } + if (maxCompoundLength === void 0) { maxCompoundLength = i32.MAX_VALUE; } + var text = this.source.text; + if (this.nextToken < 0) { + var posBefore = this.pos; + var tokenBefore = this.token; + var tokenPosBefore = this.tokenPos; + this.nextToken = this.unsafeNext(identifierHandling, maxCompoundLength); + this.nextTokenPos = this.tokenPos; + if (checkOnNewLine) { + this.nextTokenOnNewLine = false; + for (var pos = posBefore, end = this.nextTokenPos; pos < end; ++pos) { + if (util_1.isLineBreak(text.charCodeAt(pos))) { + this.nextTokenOnNewLine = true; + break; + } + } + } + this.pos = posBefore; + this.token = tokenBefore; + this.tokenPos = tokenPosBefore; + } + return this.nextToken; + }; + Tokenizer.prototype.skipIdentifier = function (identifierHandling) { + if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.PREFER; } + return this.skip(Token.IDENTIFIER, identifierHandling); + }; + Tokenizer.prototype.skip = function (token, identifierHandling) { + if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } + var posBefore = this.pos; + var tokenBefore = this.token; + var tokenPosBefore = this.tokenPos; + var maxCompoundLength = i32.MAX_VALUE; + switch (token) { + case Token.GREATERTHAN: { // where parsing type arguments + maxCompoundLength = 1; + break; + } + } + this.token = this.unsafeNext(identifierHandling, maxCompoundLength); + if (this.token == token) { + this.nextToken = -1; + return true; + } + else { + this.pos = posBefore; + this.token = tokenBefore; + this.tokenPos = tokenPosBefore; + return false; + } + }; + Tokenizer.prototype.mark = function () { + var state; + if (reusableState) { + state = reusableState; + reusableState = null; + } + else { + state = new State(); + } + state.pos = this.pos; + state.token = this.token; + state.tokenPos = this.tokenPos; + return state; + }; + Tokenizer.prototype.discard = function (state) { + reusableState = state; + }; + Tokenizer.prototype.reset = function (state) { + this.pos = state.pos; + this.token = state.token; + this.tokenPos = state.tokenPos; + this.nextToken = -1; + }; + Tokenizer.prototype.range = function (start, end) { + if (start === void 0) { start = -1; } + if (end === void 0) { end = -1; } + if (start < 0) { + start = this.tokenPos; + end = this.pos; + } + else if (end < 0) { + end = start; + } + return new Range(this.source, start, end); + }; + Tokenizer.prototype.readIdentifier = function () { + var text = this.source.text; + var start = this.pos; + var end = this.end; + while (++this.pos < end && + util_1.isIdentifierPart(text.charCodeAt(this.pos))) + ; + return text.substring(start, this.pos); + }; + Tokenizer.prototype.readString = function () { + var text = this.source.text; + var quote = text.charCodeAt(this.pos++); + var start = this.pos; + var end = this.end; + var result = ""; + while (true) { + if (this.pos >= end) { + result += text.substring(start, this.pos); + this.error(diagnostics_1.DiagnosticCode.Unterminated_string_literal, this.range(start - 1, end)); + break; + } + var c = text.charCodeAt(this.pos); + if (c == quote) { + result += text.substring(start, this.pos++); + break; + } + if (c == 92 /* BACKSLASH */) { + result += text.substring(start, this.pos); + result += this.readEscapeSequence(); + start = this.pos; + continue; + } + if (util_1.isLineBreak(c) && quote != 96 /* BACKTICK */) { + result += text.substring(start, this.pos); + this.error(diagnostics_1.DiagnosticCode.Unterminated_string_literal, this.range(start - 1, this.pos)); + break; + } + ++this.pos; + } + return result; + }; + Tokenizer.prototype.readEscapeSequence = function () { + var end = this.end; + if (++this.pos >= end) { + this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(end)); + return ""; + } + var text = this.source.text; + var c = text.charCodeAt(this.pos++); + switch (c) { + case 48 /* _0 */: return "\0"; + case 98 /* b */: return "\b"; + case 116 /* t */: return "\t"; + case 110 /* n */: return "\n"; + case 118 /* v */: return "\v"; + case 102 /* f */: return "\f"; + case 114 /* r */: return "\r"; + case 39 /* SINGLEQUOTE */: return "'"; + case 34 /* DOUBLEQUOTE */: return "\""; + case 117 /* u */: { + if (this.pos < end && + text.charCodeAt(this.pos) == 123 /* OPENBRACE */) { + ++this.pos; + return this.readExtendedUnicodeEscape(); // \u{DDDDDDDD} + } + return this.readUnicodeEscape(); // \uDDDD + } + case 13 /* CARRIAGERETURN */: { + if (this.pos < end && + text.charCodeAt(this.pos) == 10 /* LINEFEED */) { + ++this.pos; + } + // fall through + } + case 10 /* LINEFEED */: + case 8232 /* LINESEPARATOR */: + case 8233 /* PARAGRAPHSEPARATOR */: return ""; + default: return String.fromCharCode(c); + } + }; + Tokenizer.prototype.readRegexpPattern = function () { + var text = this.source.text; + var start = this.pos; + var end = this.end; + var escaped = false; + while (true) { + if (this.pos >= end) { + this.error(diagnostics_1.DiagnosticCode.Unterminated_regular_expression_literal, this.range(start, end)); + break; + } + if (text.charCodeAt(this.pos) == 92 /* BACKSLASH */) { + ++this.pos; + escaped = true; + continue; + } + var c = text.charCodeAt(this.pos); + if (!escaped && c == 47 /* SLASH */) + break; + if (util_1.isLineBreak(c)) { + this.error(diagnostics_1.DiagnosticCode.Unterminated_regular_expression_literal, this.range(start, this.pos)); + break; + } + ++this.pos; + escaped = false; + } + return text.substring(start, this.pos); + }; + Tokenizer.prototype.readRegexpFlags = function () { + var text = this.source.text; + var start = this.pos; + var end = this.end; + var flags = 0; + while (this.pos < end) { + var c = text.charCodeAt(this.pos); + if (!util_1.isIdentifierPart(c)) + break; + ++this.pos; + // make sure each supported flag is unique + switch (c) { + case 103 /* g */: { + flags |= flags & 1 ? -1 : 1; + break; + } + case 105 /* i */: { + flags |= flags & 2 ? -1 : 2; + break; + } + case 109 /* m */: { + flags |= flags & 4 ? -1 : 4; + break; + } + default: { + flags = -1; + break; + } + } + } + if (flags == -1) { + this.error(diagnostics_1.DiagnosticCode.Invalid_regular_expression_flags, this.range(start, this.pos)); + } + return text.substring(start, this.pos); + }; + Tokenizer.prototype.testInteger = function () { + var end = this.end; + var text = this.source.text; + if (this.pos + 1 < end && text.charCodeAt(this.pos) == 48 /* _0 */) { + switch (text.charCodeAt(this.pos + 2)) { + case 120 /* x */: + case 88 /* X */: + case 98 /* b */: + case 66 /* B */: + case 111 /* o */: + case 79 /* O */: return true; + } + } + var pos = this.pos; + while (pos < end) { + var c = text.charCodeAt(pos); + if (c == 46 /* DOT */ || c == 101 /* e */ || c == 69 /* E */) + return false; + if ((c < 48 /* _0 */ || c > 57 /* _9 */) && c != 95 /* _ */) + break; + // does not validate separator placement (this is done in readXYInteger) + pos++; + } + return true; + }; + Tokenizer.prototype.readInteger = function () { + var text = this.source.text; + if (this.pos + 2 < this.end && text.charCodeAt(this.pos) == 48 /* _0 */) { + switch (text.charCodeAt(this.pos + 1)) { + case 120 /* x */: + case 88 /* X */: { + this.pos += 2; + return this.readHexInteger(); + } + case 98 /* b */: + case 66 /* B */: { + this.pos += 2; + return this.readBinaryInteger(); + } + case 111 /* o */: + case 79 /* O */: { + this.pos += 2; + return this.readOctalInteger(); + } + } + if (util_1.isOctalDigit(text.charCodeAt(this.pos + 1))) { + var start = this.pos; + ++this.pos; + var value = this.readOctalInteger(); + this.error(diagnostics_1.DiagnosticCode.Octal_literals_are_not_allowed_in_strict_mode, this.range(start, this.pos)); + return value; + } + } + return this.readDecimalInteger(); + }; + Tokenizer.prototype.readHexInteger = function () { + var text = this.source.text; + var start = this.pos; + var value = i64_new(0); + var i64_4 = i64_new(4); + var sepEnd = start; + var end = this.end; + while (this.pos < end) { + var pos = this.pos; + var c = text.charCodeAt(pos); + if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { + // value = (value << 4) + c - CharCode._0; + value = i64_add(i64_shl(value, i64_4), i64_new(c - 48 /* _0 */)); + } + else if (c >= 65 /* A */ && c <= 70 /* F */) { + // value = (value << 4) + 10 + c - CharCode.A; + value = i64_add(i64_shl(value, i64_4), i64_new(10 + c - 65 /* A */)); + } + else if (c >= 97 /* a */ && c <= 102 /* f */) { + // value = (value << 4) + 10 + c - CharCode.a; + value = i64_add(i64_shl(value, i64_4), i64_new(10 + c - 97 /* a */)); + } + else if (c == 95 /* _ */) { + if (sepEnd == pos) { + this.error(sepEnd == start + ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here + : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); + } + sepEnd = pos + 1; + } + else { + break; + } + this.pos = pos + 1; + } + if (this.pos == start) { + this.error(diagnostics_1.DiagnosticCode.Hexadecimal_digit_expected, this.range(start)); + } + else if (sepEnd == this.pos) { + this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); + } + return value; + }; + Tokenizer.prototype.readDecimalInteger = function () { + var text = this.source.text; + var start = this.pos; + var end = this.end; + var value = i64_new(0); + var i64_10 = i64_new(10); + var sepEnd = start; + while (this.pos < end) { + var pos = this.pos; + var c = text.charCodeAt(pos); + if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { + // value = value * 10 + c - CharCode._0; + value = i64_add(i64_mul(value, i64_10), i64_new(c - 48 /* _0 */)); + } + else if (c == 95 /* _ */) { + if (sepEnd == pos) { + this.error(sepEnd == start + ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here + : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); + } + sepEnd = pos + 1; + } + else { + break; + } + this.pos = pos + 1; + } + if (this.pos == start) { + this.error(diagnostics_1.DiagnosticCode.Digit_expected, this.range(start)); + } + else if (sepEnd == this.pos) { + this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); + } + return value; + }; + Tokenizer.prototype.readOctalInteger = function () { + var text = this.source.text; + var start = this.pos; + var value = i64_new(0); + var i64_3 = i64_new(3); + var sepEnd = start; + var end = this.end; + while (this.pos < end) { + var pos = this.pos; + var c = text.charCodeAt(pos); + if (c >= 48 /* _0 */ && c <= 55 /* _7 */) { + // value = (value << 3) + c - CharCode._0; + value = i64_add(i64_shl(value, i64_3), i64_new(c - 48 /* _0 */)); + } + else if (c == 95 /* _ */) { + if (sepEnd == pos) { + this.error(sepEnd == start + ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here + : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); + } + sepEnd = pos + 1; + } + else { + break; + } + ++this.pos; + } + if (this.pos == start) { + this.error(diagnostics_1.DiagnosticCode.Octal_digit_expected, this.range(start)); + } + else if (sepEnd == this.pos) { + this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); + } + return value; + }; + Tokenizer.prototype.readBinaryInteger = function () { + var text = this.source.text; + var start = this.pos; + var value = i64_new(0); + var i64_1 = i64_new(1); + var sepEnd = start; + var end = this.end; + while (this.pos < end) { + var pos = this.pos; + var c = text.charCodeAt(pos); + if (c == 48 /* _0 */) { + // value = (value << 1); + value = i64_shl(value, i64_1); + } + else if (c == 49 /* _1 */) { + // value = (value << 1) + 1; + value = i64_add(i64_shl(value, i64_1), i64_1); + } + else if (c == 95 /* _ */) { + if (sepEnd == pos) { + this.error(sepEnd == start + ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here + : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); + } + sepEnd = pos + 1; + } + else { + break; + } + this.pos = pos + 1; + } + if (this.pos == start) { + this.error(diagnostics_1.DiagnosticCode.Binary_digit_expected, this.range(start)); + } + else if (sepEnd == this.pos) { + this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); + } + return value; + }; + Tokenizer.prototype.readFloat = function () { + // var text = this.source.text; + // if (text.charCodeAt(this.pos) == CharCode._0 && this.pos + 2 < this.end) { + // switch (text.charCodeAt(this.pos + 1)) { + // case CharCode.X: + // case CharCode.x: { + // this.pos += 2; + // return this.readHexFloat(); + // } + // } + // } + return this.readDecimalFloat(); + }; + Tokenizer.prototype.readDecimalFloat = function () { + // TODO: numeric separators (parseFloat can't handle these) + var start = this.pos; + var end = this.end; + var text = this.source.text; + while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { + ++this.pos; + } + if (this.pos < end && text.charCodeAt(this.pos) == 46 /* DOT */) { + ++this.pos; + while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { + ++this.pos; + } + } + if (this.pos < end) { + var c = text.charCodeAt(this.pos); + if (c == 101 /* e */ || c == 69 /* E */) { + if (++this.pos < end && + (c = text.charCodeAt(this.pos)) == 45 /* MINUS */ || c == 43 /* PLUS */ && + util_1.isDecimalDigit(text.charCodeAt(this.pos + 1))) { + ++this.pos; + } + while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { + ++this.pos; + } + } + } + return parseFloat(text.substring(start, this.pos)); + }; + Tokenizer.prototype.readHexFloat = function () { + throw new Error("not implemented"); // TBD + }; + Tokenizer.prototype.readUnicodeEscape = function () { + var remain = 4; + var value = 0; + var end = this.end; + var text = this.source.text; + while (this.pos < end) { + var c = text.charCodeAt(this.pos++); + if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { + value = (value << 4) + c - 48 /* _0 */; + } + else if (c >= 65 /* A */ && c <= 70 /* F */) { + value = (value << 4) + c + (10 - 65 /* A */); + } + else if (c >= 97 /* a */ && c <= 102 /* f */) { + value = (value << 4) + c + (10 - 97 /* a */); + } + else { + this.error(diagnostics_1.DiagnosticCode.Hexadecimal_digit_expected, this.range(this.pos - 1, this.pos)); + return ""; + } + if (--remain == 0) + break; + } + if (remain) { + this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(this.pos)); + return ""; + } + return String.fromCharCode(value); + }; + Tokenizer.prototype.readExtendedUnicodeEscape = function () { + var start = this.pos; + var value = this.readHexInteger(); + var value32 = i64_low(value); + var invalid = false; + assert(!i64_high(value)); + if (value32 > 0x10FFFF) { + this.error(diagnostics_1.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive, this.range(start, this.pos)); + invalid = true; + } + var end = this.end; + var text = this.source.text; + if (this.pos >= end) { + this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(start, end)); + invalid = true; + } + else if (text.charCodeAt(this.pos) == 125 /* CLOSEBRACE */) { + ++this.pos; + } + else { + this.error(diagnostics_1.DiagnosticCode.Unterminated_Unicode_escape_sequence, this.range(start, this.pos)); + invalid = true; + } + if (invalid) + return ""; + return value32 < 65536 + ? String.fromCharCode(value32) + : String.fromCharCode(((value32 - 65536) >>> 10) + 0xD800, ((value32 - 65536) & 1023) + 0xDC00); + }; + Tokenizer.prototype.finish = function () { + }; + return Tokenizer; +}(diagnostics_1.DiagnosticEmitter)); +exports.Tokenizer = Tokenizer; +/** Tokenizer state as returned by {@link Tokenizer#mark} and consumed by {@link Tokenizer#reset}. */ +var State = /** @class */ (function () { + function State() { + } + return State; +}()); +exports.State = State; +// Reusable state object to reduce allocations +var reusableState = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rva2VuaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRyxDQUFBLEtBQUs7Ozs7Ozs7Ozs7Ozs7OztBQUVSLDZDQUl1QjtBQUV2Qiw2QkFHZTtBQUVmLCtCQVNnQjtBQUVoQix5QkFBeUI7QUFDekIsSUFBWSxLQXNJWDtBQXRJRCxXQUFZLEtBQUs7SUFFZixXQUFXO0lBQ1gsb0ZBQW9GO0lBRXBGLHlDQUFRLENBQUE7SUFDUiw2QkFBRSxDQUFBO0lBQ0YsbUNBQUssQ0FBQTtJQUNMLG1DQUFLLENBQUE7SUFDTCxtQ0FBSyxDQUFBO0lBQ0wsaUNBQUksQ0FBQTtJQUNKLG1DQUFLLENBQUE7SUFDTCxtQ0FBSyxDQUFBO0lBQ0wsbUNBQUssQ0FBQTtJQUNMLHlDQUFRLENBQUE7SUFDUixnREFBVyxDQUFBO0lBQ1gsMENBQVEsQ0FBQTtJQUNSLHdDQUFPLENBQUE7SUFDUCx3Q0FBTyxDQUFBO0lBQ1Asc0NBQU0sQ0FBQTtJQUNOLDhCQUFFLENBQUE7SUFDRixrQ0FBSSxDQUFBO0lBQ0osa0NBQUksQ0FBQTtJQUNKLHNDQUFNLENBQUE7SUFDTix3Q0FBTyxDQUFBO0lBQ1Asb0NBQUssQ0FBQTtJQUNMLHdDQUFPLENBQUE7SUFDUCxnQ0FBRyxDQUFBO0lBQ0gsa0NBQUksQ0FBQTtJQUNKLDBDQUFRLENBQUE7SUFDUixnQ0FBRyxDQUFBO0lBQ0gsOEJBQUUsQ0FBQTtJQUNGLDhDQUFVLENBQUE7SUFDVixzQ0FBTSxDQUFBO0lBQ04sOEJBQUUsQ0FBQTtJQUNGLDhDQUFVLENBQUE7SUFDViw0Q0FBUyxDQUFBO0lBQ1QsOEJBQUUsQ0FBQTtJQUNGLG9DQUFLLENBQUE7SUFDTCxnQ0FBRyxDQUFBO0lBQ0gsc0NBQU0sQ0FBQTtJQUNOLDRDQUFTLENBQUE7SUFDVCxnQ0FBRyxDQUFBO0lBQ0gsa0NBQUksQ0FBQTtJQUNKLDhCQUFFLENBQUE7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QUM7SUFBRCxZQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7QUFQWSxzQkFBSztBQVNsQiw4Q0FBOEM7QUFDOUMsSUFBSSxhQUFhLEdBQWlCLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBUeXBlU2NyaXB0IHRva2VuaXplciBtb2RpZmllZCBmb3IgQXNzZW1ibHlTY3JpcHQuXG4gKlxuICogU2tpcHMgb3ZlciB0cml2aWEgYW5kIHByb3ZpZGVzIGEgZ2VuZXJhbCBtYXJrL3Jlc2V0IG1lY2hhbmlzbSBmb3IgdGhlIHBhcnNlciB0byB1dGlsaXplIG9uXG4gKiBhbWJpZ3VvdXMgdG9rZW5zLlxuICpcbiAqIEBtb2R1bGUgdG9rZW5pemVyXG4gKi8vKioqL1xuXG5pbXBvcnQge1xuICBEaWFnbm9zdGljQ29kZSxcbiAgRGlhZ25vc3RpY01lc3NhZ2UsXG4gIERpYWdub3N0aWNFbWl0dGVyXG59IGZyb20gXCIuL2RpYWdub3N0aWNzXCI7XG5cbmltcG9ydCB7XG4gIFNvdXJjZSxcbiAgQ29tbWVudEtpbmRcbn0gZnJvbSBcIi4vYXN0XCI7XG5cbmltcG9ydCB7XG4gIENoYXJDb2RlLFxuICBpc0xpbmVCcmVhayxcbiAgaXNXaGl0ZVNwYWNlLFxuICBpc0lkZW50aWZpZXJTdGFydCxcbiAgaXNJZGVudGlmaWVyUGFydCxcbiAgaXNEZWNpbWFsRGlnaXQsXG4gIGlzT2N0YWxEaWdpdCxcbiAgaXNLZXl3b3JkQ2hhcmFjdGVyXG59IGZyb20gXCIuL3V0aWxcIjtcblxuLyoqIE5hbWVkIHRva2VuIHR5cGVzLiAqL1xuZXhwb3J0IGVudW0gVG9rZW4ge1xuXG4gIC8vIGtleXdvcmRzXG4gIC8vIGRpc2NhcmRlZDogQU5ZLCBCT09MRUFOLCBORVZFUiwgTlVNQkVSLCBTVFJJTkcsIFNZTUJPTCwgVU5ERUZJTkVELCBMRVNTVEhBTl9TTEFTSFxuXG4gIEFCU1RSQUNULFxuICBBUyxcbiAgQVNZTkMsXG4gIEFXQUlULCAgICAgICAgLy8gRVMyMDE3XG4gIEJSRUFLLCAgICAgICAgLy8gRVMyMDE3XG4gIENBU0UsICAgICAgICAgLy8gRVMyMDE3XG4gIENBVENILCAgICAgICAgLy8gRVMyMDE3XG4gIENMQVNTLCAgICAgICAgLy8gRVMyMDE3XG4gIENPTlNULCAgICAgICAgLy8gRVMyMDE3XG4gIENPTlRJTlVFLCAgICAgLy8gRVMyMDE3XG4gIENPTlNUUlVDVE9SLFxuICBERUJVR0dFUiwgICAgIC8vIEVTMjAxN1xuICBERUNMQVJFLFxuICBERUZBVUxULCAgICAgIC8vIEVTMjAxN1xuICBERUxFVEUsICAgICAgIC8vIEVTMjAxN1xuICBETywgICAgICAgICAgIC8vIEVTMjAxN1xuICBFTFNFLCAgICAgICAgIC8vIEVTMjAxN1xuICBFTlVNLCAgICAgICAgIC8vIEVTMjAxNyBmdXR1cmVcbiAgRVhQT1JULCAgICAgICAvLyBFUzIwMTdcbiAgRVhURU5EUywgICAgICAvLyBFUzIwMTdcbiAgRkFMU0UsICAgICAgICAvLyBFU1xuICBGSU5BTExZLCAgICAgIC8vIEVTMjAxN1xuICBGT1IsICAgICAgICAgIC8vIEVTMjAxN1xuICBGUk9NLCAgICAgICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgRlVOQ1RJT04sICAgICAvLyBFUzIwMTdcbiAgR0VULFxuICBJRiwgICAgICAgICAgIC8vIEVTMjAxN1xuICBJTVBMRU1FTlRTLCAgIC8vIEVTMjAxNyBub24tbGV4aWNhbFxuICBJTVBPUlQsICAgICAgIC8vIEVTMjAxN1xuICBJTiwgICAgICAgICAgIC8vIEVTMjAxN1xuICBJTlNUQU5DRU9GLCAgIC8vIEVTMjAxN1xuICBJTlRFUkZBQ0UsICAgIC8vIEVTMjAxNyBub24tbGV4aWNhbFxuICBJUyxcbiAgS0VZT0YsXG4gIExFVCwgICAgICAgICAgLy8gRVMyMDE3IG5vbi1sZXhpY2FsXG4gIE1PRFVMRSwgICAgICAgLy8gQVMgcG9zc2libGUgaWRlbnRpZmllclxuICBOQU1FU1BBQ0UsICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgTkVXLCAgICAgICAgICAvLyBFUzIwMTdcbiAgTlVMTCwgICAgICAgICAvLyBFU1xuICBPRixcbiAgUEFDS0FHRSwgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFJJVkFURSwgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFJPVEVDVEVELCAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFVCTElDLCAgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUkVBRE9OTFksXG4gIFJFVFVSTiwgICAgICAgLy8gRVMyMDE3XG4gIFNFVCxcbiAgU1RBVElDLCAgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgU1VQRVIsICAgICAgICAvLyBFUzIwMTdcbiAgU1dJVENILCAgICAgICAvLyBFUzIwMTdcbiAgVEhJUywgICAgICAgICAvLyBFUzIwMTdcbiAgVEhST1csICAgICAgICAvLyBFUzIwMTdcbiAgVFJVRSwgICAgICAgICAvLyBFU1xuICBUUlksICAgICAgICAgIC8vIEVTMjAxN1xuICBUWVBFLCAgICAgICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgVFlQRU9GLCAgICAgICAvLyBFUzIwMTdcbiAgVkFSLCAgICAgICAgICAvLyBFUzIwMTdcbiAgVk9JRCwgICAgICAgICAvLyBFUzIwMTdcbiAgV0hJTEUsICAgICAgICAvLyBFUzIwMTdcbiAgV0lUSCwgICAgICAgICAvLyBFUzIwMTdcbiAgWUlFTEQsICAgICAgICAvLyBFUzIwMTdcblxuICAvLyBwdW5jdHVhdGlvblxuXG4gIE9QRU5CUkFDRSxcbiAgQ0xPU0VCUkFDRSxcbiAgT1BFTlBBUkVOLFxuICBDTE9TRVBBUkVOLFxuICBPUEVOQlJBQ0tFVCxcbiAgQ0xPU0VCUkFDS0VULFxuICBET1QsXG4gIERPVF9ET1RfRE9ULFxuICBTRU1JQ09MT04sXG4gIENPTU1BLFxuICBMRVNTVEhBTixcbiAgR1JFQVRFUlRIQU4sXG4gIExFU1NUSEFOX0VRVUFMUyxcbiAgR1JFQVRFUlRIQU5fRVFVQUxTLFxuICBFUVVBTFNfRVFVQUxTLFxuICBFWENMQU1BVElPTl9FUVVBTFMsXG4gIEVRVUFMU19FUVVBTFNfRVFVQUxTLFxuICBFWENMQU1BVElPTl9FUVVBTFNfRVFVQUxTLFxuICBFUVVBTFNfR1JFQVRFUlRIQU4sXG4gIFBMVVMsXG4gIE1JTlVTLFxuICBBU1RFUklTS19BU1RFUklTSyxcbiAgQVNURVJJU0ssXG4gIFNMQVNILFxuICBQRVJDRU5ULFxuICBQTFVTX1BMVVMsXG4gIE1JTlVTX01JTlVTLFxuICBMRVNTVEhBTl9MRVNTVEhBTixcbiAgR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU4sXG4gIEdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0dSRUFURVJUSEFOLFxuICBBTVBFUlNBTkQsXG4gIEJBUixcbiAgQ0FSRVQsXG4gIEVYQ0xBTUFUSU9OLFxuICBUSUxERSxcbiAgQU1QRVJTQU5EX0FNUEVSU0FORCxcbiAgQkFSX0JBUixcbiAgUVVFU1RJT04sXG4gIENPTE9OLFxuICBFUVVBTFMsXG4gIFBMVVNfRVFVQUxTLFxuICBNSU5VU19FUVVBTFMsXG4gIEFTVEVSSVNLX0VRVUFMUyxcbiAgQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTLFxuICBTTEFTSF9FUVVBTFMsXG4gIFBFUkNFTlRfRVFVQUxTLFxuICBMRVNTVEhBTl9MRVNTVEhBTl9FUVVBTFMsXG4gIEdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0VRVUFMUyxcbiAgR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fRVFVQUxTLFxuICBBTVBFUlNBTkRfRVFVQUxTLFxuICBCQVJfRVFVQUxTLFxuICBDQVJFVF9FUVVBTFMsXG4gIEFULFxuXG4gIC8vIGxpdGVyYWxzXG5cbiAgSURFTlRJRklFUixcbiAgU1RSSU5HTElURVJBTCxcbiAgSU5URUdFUkxJVEVSQUwsXG4gIEZMT0FUTElURVJBTCxcblxuICAvLyBtZXRhXG5cbiAgSU5WQUxJRCxcbiAgRU5ET0ZGSUxFXG59XG5cbmV4cG9ydCBlbnVtIElkZW50aWZpZXJIYW5kbGluZyB7XG4gIERFRkFVTFQsXG4gIFBSRUZFUixcbiAgQUxXQVlTXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbkZyb21LZXl3b3JkKHRleHQ6IHN0cmluZyk6IFRva2VuIHtcbiAgYXNzZXJ0KHRleHQubGVuZ3RoKTtcbiAgc3dpdGNoICh0ZXh0LmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXJDb2RlLmE6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwiYWJzdHJhY3RcIjogcmV0dXJuIFRva2VuLkFCU1RSQUNUO1xuICAgICAgICBjYXNlIFwiYXNcIjogcmV0dXJuIFRva2VuLkFTO1xuICAgICAgICBjYXNlIFwiYXN5bmNcIjogcmV0dXJuIFRva2VuLkFTWU5DO1xuICAgICAgICBjYXNlIFwiYXdhaXRcIjogcmV0dXJuIFRva2VuLkFXQUlUO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuYjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJicmVha1wiOiByZXR1cm4gVG9rZW4uQlJFQUs7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5jOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImNhc2VcIjogcmV0dXJuIFRva2VuLkNBU0U7XG4gICAgICAgIGNhc2UgXCJjYXRjaFwiOiByZXR1cm4gVG9rZW4uQ0FUQ0g7XG4gICAgICAgIGNhc2UgXCJjbGFzc1wiOiByZXR1cm4gVG9rZW4uQ0xBU1M7XG4gICAgICAgIGNhc2UgXCJjb250aW51ZVwiOiByZXR1cm4gVG9rZW4uQ09OVElOVUU7XG4gICAgICAgIGNhc2UgXCJjb25zdFwiOiByZXR1cm4gVG9rZW4uQ09OU1Q7XG4gICAgICAgIGNhc2UgXCJjb25zdHJ1Y3RvclwiOiByZXR1cm4gVG9rZW4uQ09OU1RSVUNUT1I7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5kOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImRlYnVnZ2VyXCI6IHJldHVybiBUb2tlbi5ERUJVR0dFUjtcbiAgICAgICAgY2FzZSBcImRlY2xhcmVcIjogcmV0dXJuIFRva2VuLkRFQ0xBUkU7XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0XCI6IHJldHVybiBUb2tlbi5ERUZBVUxUO1xuICAgICAgICBjYXNlIFwiZGVsZXRlXCI6IHJldHVybiBUb2tlbi5ERUxFVEU7XG4gICAgICAgIGNhc2UgXCJkb1wiOiByZXR1cm4gVG9rZW4uRE87XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5lOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImVsc2VcIjogcmV0dXJuIFRva2VuLkVMU0U7XG4gICAgICAgIGNhc2UgXCJlbnVtXCI6IHJldHVybiBUb2tlbi5FTlVNO1xuICAgICAgICBjYXNlIFwiZXhwb3J0XCI6IHJldHVybiBUb2tlbi5FWFBPUlQ7XG4gICAgICAgIGNhc2UgXCJleHRlbmRzXCI6IHJldHVybiBUb2tlbi5FWFRFTkRTO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuZjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJmYWxzZVwiOiByZXR1cm4gVG9rZW4uRkFMU0U7XG4gICAgICAgIGNhc2UgXCJmaW5hbGx5XCI6IHJldHVybiBUb2tlbi5GSU5BTExZO1xuICAgICAgICBjYXNlIFwiZm9yXCI6IHJldHVybiBUb2tlbi5GT1I7XG4gICAgICAgIGNhc2UgXCJmcm9tXCI6IHJldHVybiBUb2tlbi5GUk9NO1xuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjogcmV0dXJuIFRva2VuLkZVTkNUSU9OO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuZzoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJnZXRcIjogcmV0dXJuIFRva2VuLkdFVDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLmk6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwiaWZcIjogcmV0dXJuIFRva2VuLklGO1xuICAgICAgICBjYXNlIFwiaW1wbGVtZW50c1wiOiByZXR1cm4gVG9rZW4uSU1QTEVNRU5UUztcbiAgICAgICAgY2FzZSBcImltcG9ydFwiOiByZXR1cm4gVG9rZW4uSU1QT1JUO1xuICAgICAgICBjYXNlIFwiaW5cIjogcmV0dXJuIFRva2VuLklOO1xuICAgICAgICBjYXNlIFwiaW5zdGFuY2VvZlwiOiByZXR1cm4gVG9rZW4uSU5TVEFOQ0VPRjtcbiAgICAgICAgY2FzZSBcImludGVyZmFjZVwiOiByZXR1cm4gVG9rZW4uSU5URVJGQUNFO1xuICAgICAgICBjYXNlIFwiaXNcIjogcmV0dXJuIFRva2VuLklTO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuazoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJrZXlvZlwiOiByZXR1cm4gVG9rZW4uS0VZT0Y7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5sOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImxldFwiOiByZXR1cm4gVG9rZW4uTEVUO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUubToge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJtb2R1bGVcIjogcmV0dXJuIFRva2VuLk1PRFVMRTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLm46IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwibmFtZXNwYWNlXCI6IHJldHVybiBUb2tlbi5OQU1FU1BBQ0U7XG4gICAgICAgIGNhc2UgXCJuZXdcIjogcmV0dXJuIFRva2VuLk5FVztcbiAgICAgICAgY2FzZSBcIm51bGxcIjogcmV0dXJuIFRva2VuLk5VTEw7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5vOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcIm9mXCI6IHJldHVybiBUb2tlbi5PRjtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLnA6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwicGFja2FnZVwiOiByZXR1cm4gVG9rZW4uUEFDS0FHRTtcbiAgICAgICAgY2FzZSBcInByaXZhdGVcIjogcmV0dXJuIFRva2VuLlBSSVZBVEU7XG4gICAgICAgIGNhc2UgXCJwcm90ZWN0ZWRcIjogcmV0dXJuIFRva2VuLlBST1RFQ1RFRDtcbiAgICAgICAgY2FzZSBcInB1YmxpY1wiOiByZXR1cm4gVG9rZW4uUFVCTElDO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUucjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJyZWFkb25seVwiOiByZXR1cm4gVG9rZW4uUkVBRE9OTFk7XG4gICAgICAgIGNhc2UgXCJyZXR1cm5cIjogcmV0dXJuIFRva2VuLlJFVFVSTjtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLnM6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwic2V0XCI6IHJldHVybiBUb2tlbi5TRVQ7XG4gICAgICAgIGNhc2UgXCJzdGF0aWNcIjogcmV0dXJuIFRva2VuLlNUQVRJQztcbiAgICAgICAgY2FzZSBcInN1cGVyXCI6IHJldHVybiBUb2tlbi5TVVBFUjtcbiAgICAgICAgY2FzZSBcInN3aXRjaFwiOiByZXR1cm4gVG9rZW4uU1dJVENIO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUudDoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJ0aGlzXCI6IHJldHVybiBUb2tlbi5USElTO1xuICAgICAgICBjYXNlIFwidGhyb3dcIjogcmV0dXJuIFRva2VuLlRIUk9XO1xuICAgICAgICBjYXNlIFwidHJ1ZVwiOiByZXR1cm4gVG9rZW4uVFJVRTtcbiAgICAgICAgY2FzZSBcInRyeVwiOiByZXR1cm4gVG9rZW4uVFJZO1xuICAgICAgICBjYXNlIFwidHlwZVwiOiByZXR1cm4gVG9rZW4uVFlQRTtcbiAgICAgICAgY2FzZSBcInR5cGVvZlwiOiByZXR1cm4gVG9rZW4uVFlQRU9GO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUudjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJ2YXJcIjogcmV0dXJuIFRva2VuLlZBUjtcbiAgICAgICAgY2FzZSBcInZvaWRcIjogcmV0dXJuIFRva2VuLlZPSUQ7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS53OiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcIndoaWxlXCI6IHJldHVybiBUb2tlbi5XSElMRTtcbiAgICAgICAgY2FzZSBcIndpdGhcIjogcmV0dXJuIFRva2VuLldJVEg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS55OiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcInlpZWxkXCI6IHJldHVybiBUb2tlbi5ZSUVMRDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVG9rZW4uSU5WQUxJRDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRva2VuSXNBbHNvSWRlbnRpZmllcih0b2tlbjogVG9rZW4pOiBib29sIHtcbiAgc3dpdGNoICh0b2tlbikge1xuICAgIGNhc2UgVG9rZW4uQUJTVFJBQ1Q6XG4gICAgY2FzZSBUb2tlbi5BUzpcbiAgICBjYXNlIFRva2VuLkNPTlNUUlVDVE9SOlxuICAgIGNhc2UgVG9rZW4uREVDTEFSRTpcbiAgICBjYXNlIFRva2VuLkRFTEVURTpcbiAgICBjYXNlIFRva2VuLkZST006XG4gICAgY2FzZSBUb2tlbi5GT1I6XG4gICAgY2FzZSBUb2tlbi5HRVQ6XG4gICAgY2FzZSBUb2tlbi5JTlNUQU5DRU9GOlxuICAgIGNhc2UgVG9rZW4uSVM6XG4gICAgY2FzZSBUb2tlbi5LRVlPRjpcbiAgICBjYXNlIFRva2VuLk1PRFVMRTpcbiAgICBjYXNlIFRva2VuLk5BTUVTUEFDRTpcbiAgICBjYXNlIFRva2VuLk5VTEw6XG4gICAgY2FzZSBUb2tlbi5SRUFET05MWTpcbiAgICBjYXNlIFRva2VuLlNFVDpcbiAgICBjYXNlIFRva2VuLlRZUEU6XG4gICAgY2FzZSBUb2tlbi5WT0lEOiByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSWxsZWdhbFZhcmlhYmxlSWRlbnRpZmllcihuYW1lOiBzdHJpbmcpOiBib29sIHtcbiAgYXNzZXJ0KG5hbWUubGVuZ3RoKTtcbiAgc3dpdGNoIChuYW1lLmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXJDb2RlLmQ6IHJldHVybiBuYW1lID09IFwiZGVsZXRlXCI7XG4gICAgY2FzZSBDaGFyQ29kZS5mOiByZXR1cm4gbmFtZSA9PSBcImZvclwiO1xuICAgIGNhc2UgQ2hhckNvZGUuaTogcmV0dXJuIG5hbWUgPT0gXCJpbnN0YW5jZW9mXCI7XG4gICAgY2FzZSBDaGFyQ29kZS5uOiByZXR1cm4gbmFtZSA9PSBcIm51bGxcIjtcbiAgICBjYXNlIENoYXJDb2RlLnY6IHJldHVybiBuYW1lID09IFwidm9pZFwiO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZXJhdG9yVG9rZW5Ub1N0cmluZyh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgY2FzZSBUb2tlbi5ERUxFVEU6IHJldHVybiBcImRlbGV0ZVwiO1xuICAgIGNhc2UgVG9rZW4uSU46IHJldHVybiBcImluXCI7XG4gICAgY2FzZSBUb2tlbi5JTlNUQU5DRU9GOiByZXR1cm4gXCJpbnN0YW5jZW9mXCI7XG4gICAgY2FzZSBUb2tlbi5ORVc6IHJldHVybiBcIm5ld1wiO1xuICAgIGNhc2UgVG9rZW4uVFlQRU9GOiByZXR1cm4gXCJ0eXBlb2ZcIjtcbiAgICBjYXNlIFRva2VuLlZPSUQ6IHJldHVybiBcInZvaWRcIjtcbiAgICBjYXNlIFRva2VuLllJRUxEOiByZXR1cm4gXCJ5aWVsZFwiO1xuICAgIGNhc2UgVG9rZW4uRE9UX0RPVF9ET1Q6IHJldHVybiBcIi4uLlwiO1xuICAgIGNhc2UgVG9rZW4uQ09NTUE6IHJldHVybiBcIixcIjtcbiAgICBjYXNlIFRva2VuLkxFU1NUSEFOOiByZXR1cm4gXCI8XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTjogcmV0dXJuIFwiPlwiO1xuICAgIGNhc2UgVG9rZW4uTEVTU1RIQU5fRVFVQUxTOiByZXR1cm4gXCI8PVwiO1xuICAgIGNhc2UgVG9rZW4uR1JFQVRFUlRIQU5fRVFVQUxTOiByZXR1cm4gXCI+PVwiO1xuICAgIGNhc2UgVG9rZW4uRVFVQUxTX0VRVUFMUzogcmV0dXJuIFwiPT1cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMUzogcmV0dXJuIFwiIT1cIjtcbiAgICBjYXNlIFRva2VuLkVRVUFMU19FUVVBTFNfRVFVQUxTOiByZXR1cm4gXCI9PT1cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMU19FUVVBTFM6IHJldHVybiBcIiE9PVwiO1xuICAgIGNhc2UgVG9rZW4uUExVUzogcmV0dXJuIFwiK1wiO1xuICAgIGNhc2UgVG9rZW4uTUlOVVM6IHJldHVybiBcIi1cIjtcbiAgICBjYXNlIFRva2VuLkFTVEVSSVNLX0FTVEVSSVNLOiByZXR1cm4gXCIqKlwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0s6IHJldHVybiBcIipcIjtcbiAgICBjYXNlIFRva2VuLlNMQVNIOiByZXR1cm4gXCIvXCI7XG4gICAgY2FzZSBUb2tlbi5QRVJDRU5UOiByZXR1cm4gXCIlXCI7XG4gICAgY2FzZSBUb2tlbi5QTFVTX1BMVVM6IHJldHVybiBcIisrXCI7XG4gICAgY2FzZSBUb2tlbi5NSU5VU19NSU5VUzogcmV0dXJuIFwiLS1cIjtcbiAgICBjYXNlIFRva2VuLkxFU1NUSEFOX0xFU1NUSEFOOiByZXR1cm4gXCI8PFwiO1xuICAgIGNhc2UgVG9rZW4uR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU46IHJldHVybiBcIj4+XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTjogcmV0dXJuIFwiPj4+XCI7XG4gICAgY2FzZSBUb2tlbi5BTVBFUlNBTkQ6IHJldHVybiBcIiZcIjtcbiAgICBjYXNlIFRva2VuLkJBUjogcmV0dXJuIFwifFwiO1xuICAgIGNhc2UgVG9rZW4uQ0FSRVQ6IHJldHVybiBcIl5cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OOiByZXR1cm4gXCIhXCI7XG4gICAgY2FzZSBUb2tlbi5USUxERTogcmV0dXJuIFwiflwiO1xuICAgIGNhc2UgVG9rZW4uQU1QRVJTQU5EX0FNUEVSU0FORDogcmV0dXJuIFwiJiZcIjtcbiAgICBjYXNlIFRva2VuLkJBUl9CQVI6IHJldHVybiBcInx8XCI7XG4gICAgY2FzZSBUb2tlbi5FUVVBTFM6IHJldHVybiBcIj1cIjtcbiAgICBjYXNlIFRva2VuLlBMVVNfRVFVQUxTOiByZXR1cm4gXCIrPVwiO1xuICAgIGNhc2UgVG9rZW4uTUlOVVNfRVFVQUxTOiByZXR1cm4gXCItPVwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0tfRVFVQUxTOiByZXR1cm4gXCIqPVwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTOiByZXR1cm4gXCIqKj1cIjtcbiAgICBjYXNlIFRva2VuLlNMQVNIX0VRVUFMUzogcmV0dXJuIFwiLz1cIjtcbiAgICBjYXNlIFRva2VuLlBFUkNFTlRfRVFVQUxTOiByZXR1cm4gXCIlPVwiO1xuICAgIGNhc2UgVG9rZW4uTEVTU1RIQU5fTEVTU1RIQU5fRVFVQUxTOiByZXR1cm4gXCI8PD1cIjtcbiAgICBjYXNlIFRva2VuLkdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0VRVUFMUzogcmV0dXJuIFwiPj49XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9FUVVBTFM6IHJldHVybiBcIj4+Pj1cIjtcbiAgICBjYXNlIFRva2VuLkFNUEVSU0FORF9FUVVBTFM6IHJldHVybiBcIiY9XCI7XG4gICAgY2FzZSBUb2tlbi5CQVJfRVFVQUxTOiByZXR1cm4gXCJ8PVwiO1xuICAgIGNhc2UgVG9rZW4uQ0FSRVRfRVFVQUxTOiByZXR1cm4gXCJePVwiO1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGFzc2VydChmYWxzZSk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhbmdlIHtcblxuICBzb3VyY2U6IFNvdXJjZTtcbiAgc3RhcnQ6IGkzMjtcbiAgZW5kOiBpMzI7XG5cbiAgLy8gVE9ETzogc2V0IHRoZXNlIHdoaWxlIHRva2VuaXppbmdcbiAgLy8gbGluZTogaTMyO1xuICAvLyBjb2x1bW46IGkzMjtcblxuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IFNvdXJjZSwgc3RhcnQ6IGkzMiwgZW5kOiBpMzIpIHtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cblxuICBzdGF0aWMgam9pbihhOiBSYW5nZSwgYjogUmFuZ2UpOiBSYW5nZSB7XG4gICAgaWYgKGEuc291cmNlICE9IGIuc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoXCJzb3VyY2UgbWlzbWF0Y2hcIik7XG4gICAgcmV0dXJuIG5ldyBSYW5nZShhLnNvdXJjZSxcbiAgICAgIGEuc3RhcnQgPCBiLnN0YXJ0ID8gYS5zdGFydCA6IGIuc3RhcnQsXG4gICAgICBhLmVuZCA+IGIuZW5kID8gYS5lbmQgOiBiLmVuZFxuICAgICk7XG4gIH1cblxuICBnZXQgYXRTdGFydCgpOiBSYW5nZSB7XG4gICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnNvdXJjZSwgdGhpcy5zdGFydCwgdGhpcy5zdGFydCk7XG4gIH1cblxuICBnZXQgYXRFbmQoKTogUmFuZ2Uge1xuICAgIHJldHVybiBuZXcgUmFuZ2UodGhpcy5zb3VyY2UsIHRoaXMuZW5kLCB0aGlzLmVuZCk7XG4gIH1cblxuICBnZXQgbGluZSgpOiBpMzIge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgbGluZSA9IDE7XG4gICAgZm9yIChsZXQgcG9zID0gdGhpcy5zdGFydDsgcG9zID49IDA7IC0tcG9zKSB7XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KHBvcykgPT0gQ2hhckNvZGUuTElORUZFRUQpIGxpbmUrKztcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH1cblxuICBnZXQgY29sdW1uKCk6IGkzMiB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBjb2x1bW4gPSAwO1xuICAgIGZvciAobGV0IHBvcyA9IHRoaXMuc3RhcnQgLSAxOyBwb3MgPj0gMDsgLS1wb3MpIHtcbiAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQocG9zKSA9PSBDaGFyQ29kZS5MSU5FRkVFRCkgYnJlYWs7XG4gICAgICArK2NvbHVtbjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbHVtbjtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLnRleHQuc3Vic3RyaW5nKHRoaXMuc3RhcnQsIHRoaXMuZW5kKTtcbiAgfVxuXG4gIGRlYnVnSW5mb1JlZjogdXNpemUgPSAwO1xufVxuXG5kZWNsYXJlIGZ1bmN0aW9uIHBhcnNlRmxvYXQoc3RyOiBzdHJpbmcpOiBmNjQ7XG5cbi8qKiBIYW5kbGVyIGZvciBpbnRlcmNlcHRpbmcgY29tbWVudHMgd2hpbGUgdG9rZW5pemluZy4gKi9cbmV4cG9ydCB0eXBlIENvbW1lbnRIYW5kbGVyID0gKGtpbmQ6IENvbW1lbnRLaW5kLCB0ZXh0OiBzdHJpbmcsIHJhbmdlOiBSYW5nZSkgPT4gdm9pZDtcblxuLyoqIFRva2VuaXplcyBhIHNvdXJjZSB0byBpbmRpdmlkdWFsIHtAbGluayBUb2tlbn1zLiAqL1xuZXhwb3J0IGNsYXNzIFRva2VuaXplciBleHRlbmRzIERpYWdub3N0aWNFbWl0dGVyIHtcblxuICBzb3VyY2U6IFNvdXJjZTtcbiAgZW5kOiBpMzIgPSAwO1xuXG4gIHBvczogaTMyID0gMDtcbiAgdG9rZW46IFRva2VuID0gLTE7XG4gIHRva2VuUG9zOiBpMzIgPSAwO1xuXG4gIG5leHRUb2tlbjogVG9rZW4gPSAtMTtcbiAgbmV4dFRva2VuUG9zOiBpMzIgPSAwO1xuICBuZXh0VG9rZW5Pbk5ld0xpbmU6IGJvb2wgPSBmYWxzZTtcblxuICBvbkNvbW1lbnQ6IENvbW1lbnRIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIENvbnN0cnVjdHMgYSBuZXcgdG9rZW5pemVyLiAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IFNvdXJjZSwgZGlhZ25vc3RpY3M6IERpYWdub3N0aWNNZXNzYWdlW10gfCBudWxsID0gbnVsbCkge1xuICAgIHN1cGVyKGRpYWdub3N0aWNzKTtcblxuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgIHRoaXMucG9zID0gMDtcbiAgICB0aGlzLmVuZCA9IHNvdXJjZS50ZXh0Lmxlbmd0aDtcbiAgICB0aGlzLmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3MgfHwgbmV3IEFycmF5KCk7XG5cbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHRleHQgPSBzb3VyY2UudGV4dDtcblxuICAgIC8vIHNraXAgYm9tXG4gICAgaWYgKFxuICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuQllURU9SREVSTUFSS1xuICAgICkge1xuICAgICAgKyt0aGlzLnBvcztcbiAgICB9XG5cbiAgICAvLyBza2lwIHNoZWJhbmdcbiAgICBpZiAoXG4gICAgICB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuSEFTSCAmJlxuICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkgPT0gQ2hhckNvZGUuRVhDTEFNQVRJT05cbiAgICApIHtcbiAgICAgIHRoaXMucG9zICs9IDI7XG4gICAgICB3aGlsZSAoXG4gICAgICAgIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgIT0gQ2hhckNvZGUuTElORUZFRURcbiAgICAgICkge1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgfVxuICAgICAgLy8gJ25leHQnIG5vdyBzdGFydHMgYXQgbGYgb3IgZW9mXG4gICAgfVxuICB9XG5cbiAgbmV4dChpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxUKTogVG9rZW4ge1xuICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4gPSB0aGlzLnVuc2FmZU5leHQoaWRlbnRpZmllckhhbmRsaW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zYWZlTmV4dChcbiAgICBpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxULFxuICAgIG1heFRva2VuTGVuZ3RoOiBpMzIgPSBpMzIuTUFYX1ZBTFVFXG4gICk6IFRva2VuIHtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHdoaWxlICh0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgdGhpcy50b2tlblBvcyA9IHRoaXMucG9zO1xuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSUklBR0VSRVRVUk46IHtcbiAgICAgICAgICBpZiAoIShcbiAgICAgICAgICAgICsrdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuTElORUZFRURcbiAgICAgICAgICApKSBicmVhaztcbiAgICAgICAgICAvLyBvdGhlcndpc2UgZmFsbC10aHJvdWdoXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5UQUI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuVkVSVElDQUxUQUI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU1BBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRVhDTEFNQVRJT046IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMiAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkVRVUFMU1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5FWENMQU1BVElPTl9FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMUztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkVYQ0xBTUFUSU9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRE9VQkxFUVVPVEU6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU0lOR0xFUVVPVEU6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQkFDS1RJQ0s6IHsgLy8gVE9ET1xuICAgICAgICAgIHJldHVybiBUb2tlbi5TVFJJTkdMSVRFUkFMOyAvLyBleHBlY3RzIGEgY2FsbCB0byByZWFkU3RyaW5nXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5QRVJDRU5UOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuRVFVQUxTXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgcmV0dXJuIFRva2VuLlBFUkNFTlRfRVFVQUxTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uUEVSQ0VOVDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkFNUEVSU0FORDoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQU1QRVJTQU5EX0FNUEVSU0FORDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5BTVBFUlNBTkRfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uQU1QRVJTQU5EO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuT1BFTlBBUkVOOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uT1BFTlBBUkVOO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0xPU0VQQVJFTjoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNMT1NFUEFSRU47XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5BU1RFUklTSzoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQVNURVJJU0tfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5BU1RFUklTSykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4VG9rZW5MZW5ndGggPiAyICYmIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5BU1RFUklTS19BU1RFUklTSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkFTVEVSSVNLO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuUExVUzoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLlBMVVMpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLlBMVVNfUExVUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5QTFVTX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLlBMVVM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DT01NQToge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNPTU1BO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTUlOVVM6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5NSU5VUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVNfTUlOVVM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5ET1Q6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KGNocikpIHtcbiAgICAgICAgICAgICAgLS10aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkZMT0FUTElURVJBTDsgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEZsb2F0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMiAmJiB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgICAgICAgICAgY2hyID09IENoYXJDb2RlLkRPVCAmJlxuICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MgKyAxKSA9PSBDaGFyQ29kZS5ET1RcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uRE9UX0RPVF9ET1Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBUb2tlbi5ET1Q7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5TTEFTSDoge1xuICAgICAgICAgIGxldCBjb21tZW50U3RhcnRQb3MgPSB0aGlzLnBvcztcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5TTEFTSCkgeyAvLyBzaW5nbGUtbGluZVxuICAgICAgICAgICAgICBsZXQgY29tbWVudEtpbmQgPSBDb21tZW50S2luZC5MSU5FO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgKyAxIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkgPT0gQ2hhckNvZGUuU0xBU0hcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICBjb21tZW50S2luZCA9IENvbW1lbnRLaW5kLlRSSVBMRTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aGlsZSAoKyt0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkxJTkVGRUVEKSB7XG4gICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9uQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Db21tZW50KFxuICAgICAgICAgICAgICAgICAgY29tbWVudEtpbmQsXG4gICAgICAgICAgICAgICAgICB0ZXh0LnN1YnN0cmluZyhjb21tZW50U3RhcnRQb3MsIHRoaXMucG9zKSxcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UoY29tbWVudFN0YXJ0UG9zLCB0aGlzLnBvcylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5BU1RFUklTSykgeyAvLyBtdWx0aS1saW5lXG4gICAgICAgICAgICAgIGxldCBjbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgd2hpbGUgKCsrdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgICAgICBjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBjID09IENoYXJDb2RlLkFTVEVSSVNLICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpID09IENoYXJDb2RlLlNMQVNIXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIWNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBEaWFnbm9zdGljQ29kZS5fMF9leHBlY3RlZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UodGhpcy5wb3MpLCBcIiovXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub25Db21tZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbW1lbnQoXG4gICAgICAgICAgICAgICAgICBDb21tZW50S2luZC5CTE9DSyxcbiAgICAgICAgICAgICAgICAgIHRleHQuc3Vic3RyaW5nKGNvbW1lbnRTdGFydFBvcywgdGhpcy5wb3MpLFxuICAgICAgICAgICAgICAgICAgdGhpcy5yYW5nZShjb21tZW50U3RhcnRQb3MsIHRoaXMucG9zKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uU0xBU0hfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uU0xBU0g7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMTpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNTpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fODpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fOToge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRlc3RJbnRlZ2VyKClcbiAgICAgICAgICAgID8gVG9rZW4uSU5URUdFUkxJVEVSQUwgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEludGVnZXJcbiAgICAgICAgICAgIDogVG9rZW4uRkxPQVRMSVRFUkFMOyAgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEZsb2F0XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DT0xPTjoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNPTE9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU0VNSUNPTE9OOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uU0VNSUNPTE9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTEVTU1RIQU46IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5MRVNTVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4VG9rZW5MZW5ndGggPiAyICYmXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkVRVUFMU1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgIHJldHVybiBUb2tlbi5MRVNTVEhBTl9MRVNTVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOX0xFU1NUSEFOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5FUVVBTFMpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRVFVQUxTOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICBpZiAobWF4VG9rZW5MZW5ndGggPiAxICYmIHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICAgICAgICBsZXQgY2hyID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDIgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuRVFVQUxTXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkVRVUFMU19FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5HUkVBVEVSVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uRVFVQUxTX0dSRUFURVJUSEFOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uRVFVQUxTO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuR1JFQVRFUlRIQU46IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5HUkVBVEVSVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAobWF4VG9rZW5MZW5ndGggPiAyICYmIHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICAgICAgICAgICAgY2hyID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkdSRUFURVJUSEFOKSB7XG4gICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDMgJiYgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fRVFVQUxTO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0dSRUFURVJUSEFOO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLlFVRVNUSU9OOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uUVVFU1RJT047XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5PUEVOQlJBQ0tFVDoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLk9QRU5CUkFDS0VUO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0xPU0VCUkFDS0VUOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uQ0xPU0VCUkFDS0VUO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSRVQ6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICByZXR1cm4gVG9rZW4uQ0FSRVRfRVFVQUxTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uQ0FSRVQ7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5PUEVOQlJBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5PUEVOQlJBQ0U7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQVI6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5CQVIpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkJBUl9CQVI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQkFSX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkJBUjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkNMT1NFQlJBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5DTE9TRUJSQUNFO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuVElMREU6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5USUxERTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkFUOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uQVQ7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChjKSkge1xuICAgICAgICAgICAgaWYgKGlzS2V5d29yZENoYXJhY3RlcihjKSkge1xuICAgICAgICAgICAgICBsZXQgcG9zQmVmb3JlID0gdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICAgICArK3RoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgaXNJZGVudGlmaWVyUGFydChjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0tleXdvcmRDaGFyYWN0ZXIoYykpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9zID0gcG9zQmVmb3JlO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLklERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBrZXl3b3JkVGV4dCA9IHRleHQuc3Vic3RyaW5nKHBvc0JlZm9yZSwgdGhpcy5wb3MpO1xuICAgICAgICAgICAgICBsZXQga2V5d29yZFRva2VuID0gdG9rZW5Gcm9tS2V5d29yZChrZXl3b3JkVGV4dCk7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBrZXl3b3JkVG9rZW4gIT09IFRva2VuLklOVkFMSUQgJiZcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVySGFuZGxpbmcgIT09IElkZW50aWZpZXJIYW5kbGluZy5BTFdBWVMgJiZcbiAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgaWRlbnRpZmllckhhbmRsaW5nID09PSBJZGVudGlmaWVySGFuZGxpbmcuUFJFRkVSICYmXG4gICAgICAgICAgICAgICAgICB0b2tlbklzQWxzb0lkZW50aWZpZXIoa2V5d29yZFRva2VuKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXdvcmRUb2tlbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnBvcyA9IHBvc0JlZm9yZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBUb2tlbi5JREVOVElGSUVSOyAvLyBleHBlY3RzIGEgY2FsbCB0byByZWFkSWRlbnRpZmllclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNXaGl0ZVNwYWNlKGMpKSB7XG4gICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkX2NoYXJhY3RlcixcbiAgICAgICAgICAgIHRoaXMucmFuZ2UodGhpcy5wb3MsIHRoaXMucG9zICsgMSlcbiAgICAgICAgICApO1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLklOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFRva2VuLkVORE9GRklMRTtcbiAgfVxuXG4gIHBlZWsoXG4gICAgY2hlY2tPbk5ld0xpbmU6IGJvb2wgPSBmYWxzZSxcbiAgICBpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxULFxuICAgIG1heENvbXBvdW5kTGVuZ3RoOiBpMzIgPSBpMzIuTUFYX1ZBTFVFXG4gICk6IFRva2VuIHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMubmV4dFRva2VuIDwgMCkge1xuICAgICAgbGV0IHBvc0JlZm9yZSA9IHRoaXMucG9zO1xuICAgICAgbGV0IHRva2VuQmVmb3JlID0gdGhpcy50b2tlbjtcbiAgICAgIGxldCB0b2tlblBvc0JlZm9yZSA9IHRoaXMudG9rZW5Qb3M7XG4gICAgICB0aGlzLm5leHRUb2tlbiA9IHRoaXMudW5zYWZlTmV4dChpZGVudGlmaWVySGFuZGxpbmcsIG1heENvbXBvdW5kTGVuZ3RoKTtcbiAgICAgIHRoaXMubmV4dFRva2VuUG9zID0gdGhpcy50b2tlblBvcztcbiAgICAgIGlmIChjaGVja09uTmV3TGluZSkge1xuICAgICAgICB0aGlzLm5leHRUb2tlbk9uTmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBwb3MgPSBwb3NCZWZvcmUsIGVuZCA9IHRoaXMubmV4dFRva2VuUG9zOyBwb3MgPCBlbmQ7ICsrcG9zKSB7XG4gICAgICAgICAgaWYgKGlzTGluZUJyZWFrKHRleHQuY2hhckNvZGVBdChwb3MpKSkge1xuICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW5Pbk5ld0xpbmUgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvc0JlZm9yZTtcbiAgICAgIHRoaXMudG9rZW4gPSB0b2tlbkJlZm9yZTtcbiAgICAgIHRoaXMudG9rZW5Qb3MgPSB0b2tlblBvc0JlZm9yZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmV4dFRva2VuO1xuICB9XG5cbiAgc2tpcElkZW50aWZpZXIoaWRlbnRpZmllckhhbmRsaW5nOiBJZGVudGlmaWVySGFuZGxpbmcgPSBJZGVudGlmaWVySGFuZGxpbmcuUFJFRkVSKTogYm9vbCB7XG4gICAgcmV0dXJuIHRoaXMuc2tpcChUb2tlbi5JREVOVElGSUVSLCBpZGVudGlmaWVySGFuZGxpbmcpO1xuICB9XG5cbiAgc2tpcCh0b2tlbjogVG9rZW4sIGlkZW50aWZpZXJIYW5kbGluZzogSWRlbnRpZmllckhhbmRsaW5nID0gSWRlbnRpZmllckhhbmRsaW5nLkRFRkFVTFQpOiBib29sIHtcbiAgICB2YXIgcG9zQmVmb3JlID0gdGhpcy5wb3M7XG4gICAgdmFyIHRva2VuQmVmb3JlID0gdGhpcy50b2tlbjtcbiAgICB2YXIgdG9rZW5Qb3NCZWZvcmUgPSB0aGlzLnRva2VuUG9zO1xuICAgIHZhciBtYXhDb21wb3VuZExlbmd0aCA9IGkzMi5NQVhfVkFMVUU7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTjogeyAvLyB3aGVyZSBwYXJzaW5nIHR5cGUgYXJndW1lbnRzXG4gICAgICAgIG1heENvbXBvdW5kTGVuZ3RoID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudG9rZW4gPSB0aGlzLnVuc2FmZU5leHQoaWRlbnRpZmllckhhbmRsaW5nLCBtYXhDb21wb3VuZExlbmd0aCk7XG4gICAgaWYgKHRoaXMudG9rZW4gPT0gdG9rZW4pIHtcbiAgICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3MgPSBwb3NCZWZvcmU7XG4gICAgICB0aGlzLnRva2VuID0gdG9rZW5CZWZvcmU7XG4gICAgICB0aGlzLnRva2VuUG9zID0gdG9rZW5Qb3NCZWZvcmU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbWFyaygpOiBTdGF0ZSB7XG4gICAgdmFyIHN0YXRlOiBTdGF0ZTtcbiAgICBpZiAocmV1c2FibGVTdGF0ZSkge1xuICAgICAgc3RhdGUgPSByZXVzYWJsZVN0YXRlO1xuICAgICAgcmV1c2FibGVTdGF0ZSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlID0gbmV3IFN0YXRlKCk7XG4gICAgfVxuICAgIHN0YXRlLnBvcyA9IHRoaXMucG9zO1xuICAgIHN0YXRlLnRva2VuID0gdGhpcy50b2tlbjtcbiAgICBzdGF0ZS50b2tlblBvcyA9IHRoaXMudG9rZW5Qb3M7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgZGlzY2FyZChzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICByZXVzYWJsZVN0YXRlID0gc3RhdGU7XG4gIH1cblxuICByZXNldChzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnBvcyA9IHN0YXRlLnBvcztcbiAgICB0aGlzLnRva2VuID0gc3RhdGUudG9rZW47XG4gICAgdGhpcy50b2tlblBvcyA9IHN0YXRlLnRva2VuUG9zO1xuICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gIH1cblxuICByYW5nZShzdGFydDogaTMyID0gLTEsIGVuZDogaTMyID0gLTEpOiBSYW5nZSB7XG4gICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgc3RhcnQgPSB0aGlzLnRva2VuUG9zO1xuICAgICAgZW5kID0gdGhpcy5wb3M7XG4gICAgfSBlbHNlIGlmIChlbmQgPCAwKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnNvdXJjZSwgc3RhcnQsIGVuZCk7XG4gIH1cblxuICByZWFkSWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKFxuICAgICAgKyt0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgaXNJZGVudGlmaWVyUGFydCh0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpKVxuICAgICk7XG4gICAgcmV0dXJuIHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gIH1cblxuICByZWFkU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBxdW90ZSA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcysrKTtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmICh0aGlzLnBvcyA+PSBlbmQpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3N0cmluZ19saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQgLSAxLCBlbmQpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgaWYgKGMgPT0gcXVvdGUpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcysrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoYyA9PSBDaGFyQ29kZS5CQUNLU0xBU0gpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gICAgICAgIHJlc3VsdCArPSB0aGlzLnJlYWRFc2NhcGVTZXF1ZW5jZSgpO1xuICAgICAgICBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0xpbmVCcmVhayhjKSAmJiBxdW90ZSAhPSBDaGFyQ29kZS5CQUNLVElDSykge1xuICAgICAgICByZXN1bHQgKz0gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5VbnRlcm1pbmF0ZWRfc3RyaW5nX2xpdGVyYWwsXG4gICAgICAgICAgdGhpcy5yYW5nZShzdGFydCAtIDEsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgICsrdGhpcy5wb3M7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkRXNjYXBlU2VxdWVuY2UoKTogc3RyaW5nIHtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgaWYgKCsrdGhpcy5wb3MgPj0gZW5kKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5VbmV4cGVjdGVkX2VuZF9vZl90ZXh0LFxuICAgICAgICB0aGlzLnJhbmdlKGVuZClcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MrKyk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgICBjYXNlIENoYXJDb2RlLl8wOiByZXR1cm4gXCJcXDBcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuYjogcmV0dXJuIFwiXFxiXCI7XG4gICAgICBjYXNlIENoYXJDb2RlLnQ6IHJldHVybiBcIlxcdFwiO1xuICAgICAgY2FzZSBDaGFyQ29kZS5uOiByZXR1cm4gXCJcXG5cIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUudjogcmV0dXJuIFwiXFx2XCI7XG4gICAgICBjYXNlIENoYXJDb2RlLmY6IHJldHVybiBcIlxcZlwiO1xuICAgICAgY2FzZSBDaGFyQ29kZS5yOiByZXR1cm4gXCJcXHJcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuU0lOR0xFUVVPVEU6IHJldHVybiBcIidcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuRE9VQkxFUVVPVEU6IHJldHVybiBcIlxcXCJcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUudToge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLk9QRU5CUkFDRVxuICAgICAgICApIHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRFeHRlbmRlZFVuaWNvZGVFc2NhcGUoKTsgLy8gXFx1e0REREREREREfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRVbmljb2RlRXNjYXBlKCk7IC8vIFxcdURERERcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSUklBR0VSRVRVUk46IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5MSU5FRkVFRFxuICAgICAgICApIHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZhbGwgdGhyb3VnaFxuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICAgIGNhc2UgQ2hhckNvZGUuTElORVNFUEFSQVRPUjpcbiAgICAgIGNhc2UgQ2hhckNvZGUuUEFSQUdSQVBIU0VQQVJBVE9SOiByZXR1cm4gXCJcIjtcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRSZWdleHBQYXR0ZXJuKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgZXNjYXBlZCA9IGZhbHNlO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5wb3MgPj0gZW5kKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIGVuZClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5CQUNLU0xBU0gpIHtcbiAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgZXNjYXBlZCA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgaWYgKCFlc2NhcGVkICYmIGMgPT0gQ2hhckNvZGUuU0xBU0gpIGJyZWFrO1xuICAgICAgaWYgKGlzTGluZUJyZWFrKGMpKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgICsrdGhpcy5wb3M7XG4gICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpO1xuICB9XG5cbiAgcmVhZFJlZ2V4cEZsYWdzKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgZmxhZ3MgPSAwO1xuICAgIHdoaWxlICh0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgbGV0IGM6IGkzMiA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoYykpIGJyZWFrO1xuICAgICAgKyt0aGlzLnBvcztcblxuICAgICAgLy8gbWFrZSBzdXJlIGVhY2ggc3VwcG9ydGVkIGZsYWcgaXMgdW5pcXVlXG4gICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5nOiB7XG4gICAgICAgICAgZmxhZ3MgfD0gZmxhZ3MgJiAxID8gLTEgOiAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuaToge1xuICAgICAgICAgIGZsYWdzIHw9IGZsYWdzICYgMiA/IC0xIDogMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLm06IHtcbiAgICAgICAgICBmbGFncyB8PSBmbGFncyAmIDQgPyAtMSA6IDQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGZsYWdzID0gLTE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZsYWdzID09IC0xKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkX3JlZ3VsYXJfZXhwcmVzc2lvbl9mbGFncyxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgdGhpcy5wb3MpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgfVxuXG4gIHRlc3RJbnRlZ2VyKCk6IGJvb2wge1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMucG9zICsgMSA8IGVuZCAmJiB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLl8wKSB7XG4gICAgICBzd2l0Y2ggKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDIpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUueDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5YOlxuICAgICAgICBjYXNlIENoYXJDb2RlLmI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5vOlxuICAgICAgICBjYXNlIENoYXJDb2RlLk86IHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgcG9zID0gdGhpcy5wb3M7XG4gICAgd2hpbGUgKHBvcyA8IGVuZCkge1xuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmIChjID09IENoYXJDb2RlLkRPVCB8fCBjID09IENoYXJDb2RlLmUgfHwgYyA9PSBDaGFyQ29kZS5FKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoKGMgPCBDaGFyQ29kZS5fMCB8fCBjID4gQ2hhckNvZGUuXzkpICYmIGMgIT0gQ2hhckNvZGUuXykgYnJlYWs7XG4gICAgICAvLyBkb2VzIG5vdCB2YWxpZGF0ZSBzZXBhcmF0b3IgcGxhY2VtZW50ICh0aGlzIGlzIGRvbmUgaW4gcmVhZFhZSW50ZWdlcilcbiAgICAgIHBvcysrO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJlYWRJbnRlZ2VyKCk6IEk2NCB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIGlmICh0aGlzLnBvcyArIDIgPCB0aGlzLmVuZCAmJiB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLl8wKSB7XG4gICAgICBzd2l0Y2ggKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUueDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5YOiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkSGV4SW50ZWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuYjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5COiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkQmluYXJ5SW50ZWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUubzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5POiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkT2N0YWxJbnRlZ2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc09jdGFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpKSB7XG4gICAgICAgIGxldCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnJlYWRPY3RhbEludGVnZXIoKTtcbiAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5PY3RhbF9saXRlcmFsc19hcmVfbm90X2FsbG93ZWRfaW5fc3RyaWN0X21vZGUsXG4gICAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgdGhpcy5wb3MpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVhZERlY2ltYWxJbnRlZ2VyKCk7XG4gIH1cblxuICByZWFkSGV4SW50ZWdlcigpOiBJNjQge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgdmFsdWUgPSBpNjRfbmV3KDApO1xuICAgIHZhciBpNjRfNCA9IGk2NF9uZXcoNCk7XG4gICAgdmFyIHNlcEVuZCA9IHN0YXJ0O1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgIGxldCBwb3MgPSB0aGlzLnBvcztcbiAgICAgIGxldCBjID0gdGV4dC5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoYyA+PSBDaGFyQ29kZS5fMCAmJiBjIDw9IENoYXJDb2RlLl85KSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDQpICsgYyAtIENoYXJDb2RlLl8wO1xuICAgICAgICB2YWx1ZSA9IGk2NF9hZGQoXG4gICAgICAgICAgaTY0X3NobCh2YWx1ZSwgaTY0XzQpLFxuICAgICAgICAgIGk2NF9uZXcoYyAtIENoYXJDb2RlLl8wKVxuICAgICAgICApO1xuICAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuRikge1xuICAgICAgICAvLyB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIDEwICsgYyAtIENoYXJDb2RlLkE7XG4gICAgICAgIHZhbHVlID0gaTY0X2FkZChcbiAgICAgICAgICBpNjRfc2hsKHZhbHVlLCBpNjRfNCksXG4gICAgICAgICAgaTY0X25ldygxMCArIGMgLSBDaGFyQ29kZS5BKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID49IENoYXJDb2RlLmEgJiYgYyA8PSBDaGFyQ29kZS5mKSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDQpICsgMTAgKyBjIC0gQ2hhckNvZGUuYTtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF80KSxcbiAgICAgICAgICBpNjRfbmV3KDEwICsgYyAtIENoYXJDb2RlLmEpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGMgPT0gQ2hhckNvZGUuXykge1xuICAgICAgICBpZiAoc2VwRW5kID09IHBvcykge1xuICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICBzZXBFbmQgPT0gc3RhcnRcbiAgICAgICAgICAgICAgPyBEaWFnbm9zdGljQ29kZS5OdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmVcbiAgICAgICAgICAgICAgOiBEaWFnbm9zdGljQ29kZS5NdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQsXG4gICAgICAgICAgICB0aGlzLnJhbmdlKHBvcylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHNlcEVuZCA9IHBvcyArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMucG9zID0gcG9zICsgMTtcbiAgICB9XG4gICAgaWYgKHRoaXMucG9zID09IHN0YXJ0KSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5IZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzZXBFbmQgPT0gdGhpcy5wb3MpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxcbiAgICAgICAgdGhpcy5yYW5nZShzZXBFbmQgLSAxKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmVhZERlY2ltYWxJbnRlZ2VyKCk6IEk2NCB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdmFsdWUgPSBpNjRfbmV3KDApO1xuICAgIHZhciBpNjRfMTAgPSBpNjRfbmV3KDEwKTtcbiAgICB2YXIgc2VwRW5kID0gc3RhcnQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fOSkge1xuICAgICAgICAvLyB2YWx1ZSA9IHZhbHVlICogMTAgKyBjIC0gQ2hhckNvZGUuXzA7XG4gICAgICAgIHZhbHVlID0gaTY0X2FkZChcbiAgICAgICAgICBpNjRfbXVsKHZhbHVlLCBpNjRfMTApLFxuICAgICAgICAgIGk2NF9uZXcoYyAtIENoYXJDb2RlLl8wKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8pIHtcbiAgICAgICAgaWYgKHNlcEVuZCA9PSBwb3MpIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFxuICAgICAgICAgICAgc2VwRW5kID09IHN0YXJ0XG4gICAgICAgICAgICAgID8gRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlXG4gICAgICAgICAgICAgIDogRGlhZ25vc3RpY0NvZGUuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkLFxuICAgICAgICAgICAgdGhpcy5yYW5nZShwb3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzZXBFbmQgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvcyArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcyA9PSBzdGFydCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuRGlnaXRfZXhwZWN0ZWQsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoc2VwRW5kID09IHRoaXMucG9zKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5OdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmUsXG4gICAgICAgIHRoaXMucmFuZ2Uoc2VwRW5kIC0gMSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJlYWRPY3RhbEludGVnZXIoKTogSTY0IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gaTY0X25ldygwKTtcbiAgICB2YXIgaTY0XzMgPSBpNjRfbmV3KDMpO1xuICAgIHZhciBzZXBFbmQgPSBzdGFydDtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fNykge1xuICAgICAgICAvLyB2YWx1ZSA9ICh2YWx1ZSA8PCAzKSArIGMgLSBDaGFyQ29kZS5fMDtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF8zKSxcbiAgICAgICAgICBpNjRfbmV3KGMgLSBDaGFyQ29kZS5fMClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoYyA9PSBDaGFyQ29kZS5fKSB7XG4gICAgICAgIGlmIChzZXBFbmQgPT0gcG9zKSB7XG4gICAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICAgIHNlcEVuZCA9PSBzdGFydFxuICAgICAgICAgICAgICA/IERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZVxuICAgICAgICAgICAgICA6IERpYWdub3N0aWNDb2RlLk11bHRpcGxlX2NvbnNlY3V0aXZlX251bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X3Blcm1pdHRlZCxcbiAgICAgICAgICAgIHRoaXMucmFuZ2UocG9zKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc2VwRW5kID0gcG9zICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgKyt0aGlzLnBvcztcbiAgICB9XG4gICAgaWYgKHRoaXMucG9zID09IHN0YXJ0KSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5PY3RhbF9kaWdpdF9leHBlY3RlZCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzZXBFbmQgPT0gdGhpcy5wb3MpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxcbiAgICAgICAgdGhpcy5yYW5nZShzZXBFbmQgLSAxKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmVhZEJpbmFyeUludGVnZXIoKTogSTY0IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gaTY0X25ldygwKTtcbiAgICB2YXIgaTY0XzEgPSBpNjRfbmV3KDEpO1xuICAgIHZhciBzZXBFbmQgPSBzdGFydDtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPT0gQ2hhckNvZGUuXzApIHtcbiAgICAgICAgLy8gdmFsdWUgPSAodmFsdWUgPDwgMSk7XG4gICAgICAgIHZhbHVlID0gaTY0X3NobCh2YWx1ZSwgaTY0XzEpO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8xKSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDEpICsgMTtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF8xKSxcbiAgICAgICAgICBpNjRfMVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8pIHtcbiAgICAgICAgaWYgKHNlcEVuZCA9PSBwb3MpIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFxuICAgICAgICAgICAgc2VwRW5kID09IHN0YXJ0XG4gICAgICAgICAgICAgID8gRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlXG4gICAgICAgICAgICAgIDogRGlhZ25vc3RpY0NvZGUuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkLFxuICAgICAgICAgICAgdGhpcy5yYW5nZShwb3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzZXBFbmQgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvcyArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcyA9PSBzdGFydCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuQmluYXJ5X2RpZ2l0X2V4cGVjdGVkLFxuICAgICAgICB0aGlzLnJhbmdlKHN0YXJ0KVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNlcEVuZCA9PSB0aGlzLnBvcykge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlLFxuICAgICAgICB0aGlzLnJhbmdlKHNlcEVuZCAtIDEpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZWFkRmxvYXQoKTogZjY0IHtcbiAgICAvLyB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgLy8gaWYgKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuXzAgJiYgdGhpcy5wb3MgKyAyIDwgdGhpcy5lbmQpIHtcbiAgICAvLyAgIHN3aXRjaCAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpIHtcbiAgICAvLyAgICAgY2FzZSBDaGFyQ29kZS5YOlxuICAgIC8vICAgICBjYXNlIENoYXJDb2RlLng6IHtcbiAgICAvLyAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgIC8vICAgICAgIHJldHVybiB0aGlzLnJlYWRIZXhGbG9hdCgpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgIHJldHVybiB0aGlzLnJlYWREZWNpbWFsRmxvYXQoKTtcbiAgfVxuXG4gIHJlYWREZWNpbWFsRmxvYXQoKTogZjY0IHtcbiAgICAvLyBUT0RPOiBudW1lcmljIHNlcGFyYXRvcnMgKHBhcnNlRmxvYXQgY2FuJ3QgaGFuZGxlIHRoZXNlKVxuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kICYmIGlzRGVjaW1hbERpZ2l0KHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykpKSB7XG4gICAgICArK3RoaXMucG9zO1xuICAgIH1cbiAgICBpZiAodGhpcy5wb3MgPCBlbmQgJiYgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5ET1QpIHtcbiAgICAgICsrdGhpcy5wb3M7XG4gICAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQgJiYgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSkpIHtcbiAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICBpZiAoYyA9PSBDaGFyQ29kZS5lIHx8IGMgPT0gQ2hhckNvZGUuRSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKyt0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgIChjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSkgPT0gQ2hhckNvZGUuTUlOVVMgfHwgYyA9PSBDaGFyQ29kZS5QTFVTICYmXG4gICAgICAgICAgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpXG4gICAgICAgICkge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kICYmIGlzRGVjaW1hbERpZ2l0KHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykpKSB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VGbG9hdCh0ZXh0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpKTtcbiAgfVxuXG4gIHJlYWRIZXhGbG9hdCgpOiBmNjQge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTsgLy8gVEJEXG4gIH1cblxuICByZWFkVW5pY29kZUVzY2FwZSgpOiBzdHJpbmcge1xuICAgIHZhciByZW1haW4gPSA0O1xuICAgIHZhciB2YWx1ZSA9IDA7XG4gICAgdmFyIGVuZCA9IHRoaXMuZW5kO1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgIGxldCBjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKyspO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fOSkge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgLSBDaGFyQ29kZS5fMDtcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuRikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgKyAoMTAgLSBDaGFyQ29kZS5BKTtcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5hICYmIGMgPD0gQ2hhckNvZGUuZikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgKyAoMTAgLSBDaGFyQ29kZS5hKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuSGV4YWRlY2ltYWxfZGlnaXRfZXhwZWN0ZWQsXG4gICAgICAgICAgdGhpcy5yYW5nZSh0aGlzLnBvcyAtIDEsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGlmICgtLXJlbWFpbiA9PSAwKSBicmVhaztcbiAgICB9XG4gICAgaWYgKHJlbWFpbikge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCxcbiAgICAgICAgdGhpcy5yYW5nZSh0aGlzLnBvcylcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkRXh0ZW5kZWRVbmljb2RlRXNjYXBlKCk6IHN0cmluZyB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5yZWFkSGV4SW50ZWdlcigpO1xuICAgIHZhciB2YWx1ZTMyID0gaTY0X2xvdyh2YWx1ZSk7XG4gICAgdmFyIGludmFsaWQgPSBmYWxzZTtcblxuICAgIGFzc2VydCghaTY0X2hpZ2godmFsdWUpKTtcbiAgICBpZiAodmFsdWUzMiA+IDB4MTBGRkZGKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5Bbl9leHRlbmRlZF9Vbmljb2RlX2VzY2FwZV92YWx1ZV9tdXN0X2JlX2JldHdlZW5fMHgwX2FuZF8weDEwRkZGRl9pbmNsdXNpdmUsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMucG9zID49IGVuZCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgZW5kKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5DTE9TRUJSQUNFKSB7XG4gICAgICArK3RoaXMucG9zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5VbnRlcm1pbmF0ZWRfVW5pY29kZV9lc2NhcGVfc2VxdWVuY2UsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpbnZhbGlkKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gdmFsdWUzMiA8IDY1NTM2XG4gICAgICA/IFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWUzMilcbiAgICAgIDogU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAgICAgKCh2YWx1ZTMyIC0gNjU1MzYpID4+PiAxMCkgKyAweEQ4MDAsXG4gICAgICAgICgodmFsdWUzMiAtIDY1NTM2KSAmIDEwMjMpICsgMHhEQzAwXG4gICAgICApO1xuICB9XG5cbiAgZmluaXNoKCk6IHZvaWQge1xuICB9XG59XG5cbi8qKiBUb2tlbml6ZXIgc3RhdGUgYXMgcmV0dXJuZWQgYnkge0BsaW5rIFRva2VuaXplciNtYXJrfSBhbmQgY29uc3VtZWQgYnkge0BsaW5rIFRva2VuaXplciNyZXNldH0uICovXG5leHBvcnQgY2xhc3MgU3RhdGUge1xuICAvKiogQ3VycmVudCBwb3NpdGlvbi4gKi9cbiAgcG9zOiBpMzI7XG4gIC8qKiBDdXJyZW50IHRva2VuLiAqL1xuICB0b2tlbjogVG9rZW47XG4gIC8qKiBDdXJyZW50IHRva2VuJ3MgcG9zaXRpb24uICovXG4gIHRva2VuUG9zOiBpMzI7XG59XG5cbi8vIFJldXNhYmxlIHN0YXRlIG9iamVjdCB0byByZWR1Y2UgYWxsb2NhdGlvbnNcbnZhciByZXVzYWJsZVN0YXRlOiBTdGF0ZSB8IG51bGwgPSBudWxsO1xuIl19 + +/***/ }), + +/***/ "../src/util/binary.ts": +/*!*****************************!*\ + !*** ../src/util/binary.ts ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** @module util */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +/** Reads an 8-bit integer from the specified buffer. */ +function readI8(buffer, offset) { + return buffer[offset]; +} +exports.readI8 = readI8; +/** Writes an 8-bit integer to the specified buffer. */ +function writeI8(value, buffer, offset) { + buffer[offset] = value; +} +exports.writeI8 = writeI8; +/** Reads a 16-bit integer from the specified buffer. */ +function readI16(buffer, offset) { + return buffer[offset] + | buffer[offset + 1] << 8; +} +exports.readI16 = readI16; +/** Writes a 16-bit integer to the specified buffer. */ +function writeI16(value, buffer, offset) { + buffer[offset] = value; + buffer[offset + 1] = value >>> 8; +} +exports.writeI16 = writeI16; +/** Reads a 32-bit integer from the specified buffer. */ +function readI32(buffer, offset) { + return buffer[offset] + | buffer[offset + 1] << 8 + | buffer[offset + 2] << 16 + | buffer[offset + 3] << 24; +} +exports.readI32 = readI32; +/** Writes a 32-bit integer to the specified buffer. */ +function writeI32(value, buffer, offset) { + buffer[offset] = value; + buffer[offset + 1] = value >>> 8; + buffer[offset + 2] = value >>> 16; + buffer[offset + 3] = value >>> 24; +} +exports.writeI32 = writeI32; +/** Reads a 64-bit integer from the specified buffer. */ +function readI64(buffer, offset) { + var lo = readI32(buffer, offset); + var hi = readI32(buffer, offset + 4); + return i64_new(lo, hi); +} +exports.readI64 = readI64; +/** Writes a 64-bit integer to the specified buffer. */ +function writeI64(value, buffer, offset) { + writeI32(i64_low(value), buffer, offset); + writeI32(i64_high(value), buffer, offset + 4); +} +exports.writeI64 = writeI64; +/** Reads a 32-bit float from the specified buffer. */ +function readF32(buffer, offset) { + return i32_as_f32(readI32(buffer, offset)); +} +exports.readF32 = readF32; +/** Writes a 32-bit float to the specified buffer. */ +function writeF32(value, buffer, offset) { + writeI32(f32_as_i32(value), buffer, offset); +} +exports.writeF32 = writeF32; +/** Reads a 64-bit float from the specified buffer. */ +function readF64(buffer, offset) { + return i64_as_f64(readI64(buffer, offset)); +} +exports.readF64 = readF64; +/** Writes a 64-bit float to the specified buffer. */ +function writeF64(value, buffer, offset) { + var valueI64 = f64_as_i64(value); + writeI32(i64_low(valueI64), buffer, offset); + writeI32(i64_high(valueI64), buffer, offset + 4); +} +exports.writeF64 = writeF64; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvYmluYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBbUIsQ0FBQSxLQUFLOztBQUV4Qix3REFBd0Q7QUFDeEQsU0FBZ0IsTUFBTSxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNwRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRkQsd0JBRUM7QUFFRCx1REFBdUQ7QUFDdkQsU0FBZ0IsT0FBTyxDQUFDLEtBQVUsRUFBRSxNQUFrQixFQUFFLE1BQVc7SUFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDO0FBRkQsMEJBRUM7QUFFRCx3REFBd0Q7QUFDeEQsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNyRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUs7VUFDbEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUhELDBCQUdDO0FBRUQsdURBQXVEO0FBQ3ZELFNBQWdCLFFBQVEsQ0FBQyxLQUFVLEVBQUUsTUFBa0IsRUFBRSxNQUFXO0lBQ2xFLE1BQU0sQ0FBQyxNQUFNLENBQUssR0FBRyxLQUFLLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFIRCw0QkFHQztBQUVELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBSztVQUNsQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7VUFDdkIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFO1VBQ3hCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFMRCwwQkFLQztBQUVELHVEQUF1RDtBQUN2RCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxNQUFNLENBQUMsTUFBTSxDQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNqQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7SUFDbEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQ3BDLENBQUM7QUFMRCw0QkFLQztBQUVELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ3JELElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsT0FBTyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFKRCwwQkFJQztBQUVELHVEQUF1RDtBQUN2RCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUhELDRCQUdDO0FBRUQsc0RBQXNEO0FBQ3RELFNBQWdCLE9BQU8sQ0FBQyxNQUFrQixFQUFFLE1BQVc7SUFDckQsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFGRCwwQkFFQztBQUVELHFEQUFxRDtBQUNyRCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRkQsNEJBRUM7QUFFRCxzREFBc0Q7QUFDdEQsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNyRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUZELDBCQUVDO0FBRUQscURBQXFEO0FBQ3JELFNBQWdCLFFBQVEsQ0FBQyxLQUFVLEVBQUUsTUFBa0IsRUFBRSxNQUFXO0lBQ2xFLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUpELDRCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgdXRpbCAqLy8qKiovXG5cbi8qKiBSZWFkcyBhbiA4LWJpdCBpbnRlZ2VyIGZyb20gdGhlIHNwZWNpZmllZCBidWZmZXIuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEk4KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBpMzIge1xuICByZXR1cm4gYnVmZmVyW29mZnNldF07XG59XG5cbi8qKiBXcml0ZXMgYW4gOC1iaXQgaW50ZWdlciB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUk4KHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldF0gPSB2YWx1ZTtcbn1cblxuLyoqIFJlYWRzIGEgMTYtYml0IGludGVnZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSTE2KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBpMzIge1xuICByZXR1cm4gYnVmZmVyW29mZnNldCAgICBdXG4gICAgICAgfCBidWZmZXJbb2Zmc2V0ICsgMV0gPDwgODtcbn1cblxuLyoqIFdyaXRlcyBhIDE2LWJpdCBpbnRlZ2VyIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSTE2KHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCAgICBdID0gdmFsdWU7XG4gIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IHZhbHVlID4+PiA4O1xufVxuXG4vKiogUmVhZHMgYSAzMi1iaXQgaW50ZWdlciBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJMzIoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGkzMiB7XG4gIHJldHVybiBidWZmZXJbb2Zmc2V0ICAgIF1cbiAgICAgICB8IGJ1ZmZlcltvZmZzZXQgKyAxXSA8PCA4XG4gICAgICAgfCBidWZmZXJbb2Zmc2V0ICsgMl0gPDwgMTZcbiAgICAgICB8IGJ1ZmZlcltvZmZzZXQgKyAzXSA8PCAyNDtcbn1cblxuLyoqIFdyaXRlcyBhIDMyLWJpdCBpbnRlZ2VyIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSTMyKHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCAgICBdID0gdmFsdWU7XG4gIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IHZhbHVlID4+PiA4O1xuICBidWZmZXJbb2Zmc2V0ICsgMl0gPSB2YWx1ZSA+Pj4gMTY7XG4gIGJ1ZmZlcltvZmZzZXQgKyAzXSA9IHZhbHVlID4+PiAyNDtcbn1cblxuLyoqIFJlYWRzIGEgNjQtYml0IGludGVnZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSTY0KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBJNjQge1xuICB2YXIgbG8gPSByZWFkSTMyKGJ1ZmZlciwgb2Zmc2V0KTtcbiAgdmFyIGhpID0gcmVhZEkzMihidWZmZXIsIG9mZnNldCArIDQpO1xuICByZXR1cm4gaTY0X25ldyhsbywgaGkpO1xufVxuXG4vKiogV3JpdGVzIGEgNjQtYml0IGludGVnZXIgdG8gdGhlIHNwZWNpZmllZCBidWZmZXIuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVJNjQodmFsdWU6IEk2NCwgYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IHZvaWQge1xuICB3cml0ZUkzMihpNjRfbG93KHZhbHVlKSwgYnVmZmVyLCBvZmZzZXQpO1xuICB3cml0ZUkzMihpNjRfaGlnaCh2YWx1ZSksIGJ1ZmZlciwgb2Zmc2V0ICsgNCk7XG59XG5cbi8qKiBSZWFkcyBhIDMyLWJpdCBmbG9hdCBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGMzIoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGYzMiB7XG4gIHJldHVybiBpMzJfYXNfZjMyKHJlYWRJMzIoYnVmZmVyLCBvZmZzZXQpKTtcbn1cblxuLyoqIFdyaXRlcyBhIDMyLWJpdCBmbG9hdCB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUYzMih2YWx1ZTogZjMyLCBidWZmZXI6IFVpbnQ4QXJyYXksIG9mZnNldDogaTMyKTogdm9pZCB7XG4gIHdyaXRlSTMyKGYzMl9hc19pMzIodmFsdWUpLCBidWZmZXIsIG9mZnNldCk7XG59XG5cbi8qKiBSZWFkcyBhIDY0LWJpdCBmbG9hdCBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGNjQoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGY2NCB7XG4gIHJldHVybiBpNjRfYXNfZjY0KHJlYWRJNjQoYnVmZmVyLCBvZmZzZXQpKTtcbn1cblxuLyoqIFdyaXRlcyBhIDY0LWJpdCBmbG9hdCB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUY2NCh2YWx1ZTogZjY0LCBidWZmZXI6IFVpbnQ4QXJyYXksIG9mZnNldDogaTMyKTogdm9pZCB7XG4gIHZhciB2YWx1ZUk2NCA9IGY2NF9hc19pNjQodmFsdWUpO1xuICB3cml0ZUkzMihpNjRfbG93KHZhbHVlSTY0KSwgYnVmZmVyLCBvZmZzZXQpO1xuICB3cml0ZUkzMihpNjRfaGlnaCh2YWx1ZUk2NCksIGJ1ZmZlciwgb2Zmc2V0ICsgNCk7XG59XG4iXX0= + +/***/ }), + +/***/ "../src/util/bitset.ts": +/*!*****************************!*\ + !*** ../src/util/bitset.ts ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** @module util */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +/** Tests if the bit at the specified index is set within a 64-bit map. */ +function bitsetIs(map, index) { + assert(index >= 0 && index < 64); + return i64_ne(i64_and(map, i64_shl(i64_one, i64_new(index))), i64_zero); +} +exports.bitsetIs = bitsetIs; +/** Sets or unsets the bit at the specified index within a 64-bit map and returns the new map. */ +function bitsetSet(map, index, isSet) { + assert(index >= 0 && index < 64); + return isSet + ? i64_or(map, i64_shl(i64_one, i64_new(index))) + : i64_and(map, i64_not(i64_shl(i64_one, i64_new(index)))); +} +exports.bitsetSet = bitsetSet; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0c2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvYml0c2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBbUIsQ0FBQSxLQUFLOztBQUV4QiwwRUFBMEU7QUFDMUUsU0FBZ0IsUUFBUSxDQUFDLEdBQVEsRUFBRSxLQUFVO0lBQzNDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLE1BQU0sQ0FDWCxPQUFPLENBQ0wsR0FBRyxFQUNILE9BQU8sQ0FDTCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNmLENBQ0YsRUFDRCxRQUFRLENBQ1QsQ0FBQztBQUNKLENBQUM7QUFaRCw0QkFZQztBQUVELGlHQUFpRztBQUNqRyxTQUFnQixTQUFTLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxLQUFXO0lBQ3pELE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLEtBQUs7UUFDVixDQUFDLENBQUMsTUFBTSxDQUNKLEdBQUcsRUFDSCxPQUFPLENBQ0wsT0FBTyxFQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FDZixDQUNGO1FBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FDTCxHQUFHLEVBQ0gsT0FBTyxDQUNMLE9BQU8sQ0FDTCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNmLENBQ0YsQ0FDRixDQUFDO0FBQ1IsQ0FBQztBQW5CRCw4QkFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuLyoqIFRlc3RzIGlmIHRoZSBiaXQgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBpcyBzZXQgd2l0aGluIGEgNjQtYml0IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaXRzZXRJcyhtYXA6IEk2NCwgaW5kZXg6IGkzMik6IGJvb2wge1xuICBhc3NlcnQoaW5kZXggPj0gMCAmJiBpbmRleCA8IDY0KTtcbiAgcmV0dXJuIGk2NF9uZShcbiAgICBpNjRfYW5kKFxuICAgICAgbWFwLFxuICAgICAgaTY0X3NobChcbiAgICAgICAgaTY0X29uZSxcbiAgICAgICAgaTY0X25ldyhpbmRleClcbiAgICAgIClcbiAgICApLFxuICAgIGk2NF96ZXJvXG4gICk7XG59XG5cbi8qKiBTZXRzIG9yIHVuc2V0cyB0aGUgYml0IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggd2l0aGluIGEgNjQtYml0IG1hcCBhbmQgcmV0dXJucyB0aGUgbmV3IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaXRzZXRTZXQobWFwOiBJNjQsIGluZGV4OiBpMzIsIGlzU2V0OiBib29sKTogSTY0IHtcbiAgYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPCA2NCk7XG4gIHJldHVybiBpc1NldFxuICAgID8gaTY0X29yKFxuICAgICAgICBtYXAsXG4gICAgICAgIGk2NF9zaGwoXG4gICAgICAgICAgaTY0X29uZSxcbiAgICAgICAgICBpNjRfbmV3KGluZGV4KVxuICAgICAgICApXG4gICAgICApXG4gICAgOiBpNjRfYW5kKFxuICAgICAgICBtYXAsXG4gICAgICAgIGk2NF9ub3QoXG4gICAgICAgICAgaTY0X3NobChcbiAgICAgICAgICAgIGk2NF9vbmUsXG4gICAgICAgICAgICBpNjRfbmV3KGluZGV4KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbn1cbiJdfQ== + +/***/ }), + +/***/ "../src/util/charcode.ts": +/*!*******************************!*\ + !*** ../src/util/charcode.ts ***! + \*******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** @module util */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +/** An enum of named character codes. */ +var CharCode; +(function (CharCode) { + CharCode[CharCode["NULL"] = 0] = "NULL"; + CharCode[CharCode["LINEFEED"] = 10] = "LINEFEED"; + CharCode[CharCode["CARRIAGERETURN"] = 13] = "CARRIAGERETURN"; + CharCode[CharCode["LINESEPARATOR"] = 8232] = "LINESEPARATOR"; + CharCode[CharCode["PARAGRAPHSEPARATOR"] = 8233] = "PARAGRAPHSEPARATOR"; + CharCode[CharCode["NEXTLINE"] = 133] = "NEXTLINE"; + CharCode[CharCode["SPACE"] = 32] = "SPACE"; + CharCode[CharCode["NONBREAKINGSPACE"] = 160] = "NONBREAKINGSPACE"; + CharCode[CharCode["ENQUAD"] = 8192] = "ENQUAD"; + CharCode[CharCode["EMQUAD"] = 8193] = "EMQUAD"; + CharCode[CharCode["ENSPACE"] = 8194] = "ENSPACE"; + CharCode[CharCode["EMSPACE"] = 8195] = "EMSPACE"; + CharCode[CharCode["THREEPEREMSPACE"] = 8196] = "THREEPEREMSPACE"; + CharCode[CharCode["FOURPEREMSPACE"] = 8197] = "FOURPEREMSPACE"; + CharCode[CharCode["SIXPEREMSPACE"] = 8198] = "SIXPEREMSPACE"; + CharCode[CharCode["FIGURESPACE"] = 8199] = "FIGURESPACE"; + CharCode[CharCode["PUNCTUATIONSPACE"] = 8200] = "PUNCTUATIONSPACE"; + CharCode[CharCode["THINSPACE"] = 8201] = "THINSPACE"; + CharCode[CharCode["HAIRSPACE"] = 8202] = "HAIRSPACE"; + CharCode[CharCode["ZEROWIDTHSPACE"] = 8203] = "ZEROWIDTHSPACE"; + CharCode[CharCode["NARROWNOBREAKSPACE"] = 8239] = "NARROWNOBREAKSPACE"; + CharCode[CharCode["IDEOGRAPHICSPACE"] = 12288] = "IDEOGRAPHICSPACE"; + CharCode[CharCode["MATHEMATICALSPACE"] = 8287] = "MATHEMATICALSPACE"; + CharCode[CharCode["OGHAM"] = 5760] = "OGHAM"; + CharCode[CharCode["_"] = 95] = "_"; + CharCode[CharCode["_0"] = 48] = "_0"; + CharCode[CharCode["_1"] = 49] = "_1"; + CharCode[CharCode["_2"] = 50] = "_2"; + CharCode[CharCode["_3"] = 51] = "_3"; + CharCode[CharCode["_4"] = 52] = "_4"; + CharCode[CharCode["_5"] = 53] = "_5"; + CharCode[CharCode["_6"] = 54] = "_6"; + CharCode[CharCode["_7"] = 55] = "_7"; + CharCode[CharCode["_8"] = 56] = "_8"; + CharCode[CharCode["_9"] = 57] = "_9"; + CharCode[CharCode["a"] = 97] = "a"; + CharCode[CharCode["b"] = 98] = "b"; + CharCode[CharCode["c"] = 99] = "c"; + CharCode[CharCode["d"] = 100] = "d"; + CharCode[CharCode["e"] = 101] = "e"; + CharCode[CharCode["f"] = 102] = "f"; + CharCode[CharCode["g"] = 103] = "g"; + CharCode[CharCode["h"] = 104] = "h"; + CharCode[CharCode["i"] = 105] = "i"; + CharCode[CharCode["j"] = 106] = "j"; + CharCode[CharCode["k"] = 107] = "k"; + CharCode[CharCode["l"] = 108] = "l"; + CharCode[CharCode["m"] = 109] = "m"; + CharCode[CharCode["n"] = 110] = "n"; + CharCode[CharCode["o"] = 111] = "o"; + CharCode[CharCode["p"] = 112] = "p"; + CharCode[CharCode["q"] = 113] = "q"; + CharCode[CharCode["r"] = 114] = "r"; + CharCode[CharCode["s"] = 115] = "s"; + CharCode[CharCode["t"] = 116] = "t"; + CharCode[CharCode["u"] = 117] = "u"; + CharCode[CharCode["v"] = 118] = "v"; + CharCode[CharCode["w"] = 119] = "w"; + CharCode[CharCode["x"] = 120] = "x"; + CharCode[CharCode["y"] = 121] = "y"; + CharCode[CharCode["z"] = 122] = "z"; + CharCode[CharCode["A"] = 65] = "A"; + CharCode[CharCode["B"] = 66] = "B"; + CharCode[CharCode["C"] = 67] = "C"; + CharCode[CharCode["D"] = 68] = "D"; + CharCode[CharCode["E"] = 69] = "E"; + CharCode[CharCode["F"] = 70] = "F"; + CharCode[CharCode["G"] = 71] = "G"; + CharCode[CharCode["H"] = 72] = "H"; + CharCode[CharCode["I"] = 73] = "I"; + CharCode[CharCode["J"] = 74] = "J"; + CharCode[CharCode["K"] = 75] = "K"; + CharCode[CharCode["L"] = 76] = "L"; + CharCode[CharCode["M"] = 77] = "M"; + CharCode[CharCode["N"] = 78] = "N"; + CharCode[CharCode["O"] = 79] = "O"; + CharCode[CharCode["P"] = 80] = "P"; + CharCode[CharCode["Q"] = 81] = "Q"; + CharCode[CharCode["R"] = 82] = "R"; + CharCode[CharCode["S"] = 83] = "S"; + CharCode[CharCode["T"] = 84] = "T"; + CharCode[CharCode["U"] = 85] = "U"; + CharCode[CharCode["V"] = 86] = "V"; + CharCode[CharCode["W"] = 87] = "W"; + CharCode[CharCode["X"] = 88] = "X"; + CharCode[CharCode["Y"] = 89] = "Y"; + CharCode[CharCode["Z"] = 90] = "Z"; + CharCode[CharCode["AMPERSAND"] = 38] = "AMPERSAND"; + CharCode[CharCode["ASTERISK"] = 42] = "ASTERISK"; + CharCode[CharCode["AT"] = 64] = "AT"; + CharCode[CharCode["BACKSLASH"] = 92] = "BACKSLASH"; + CharCode[CharCode["BACKTICK"] = 96] = "BACKTICK"; + CharCode[CharCode["BAR"] = 124] = "BAR"; + CharCode[CharCode["CARET"] = 94] = "CARET"; + CharCode[CharCode["CLOSEBRACE"] = 125] = "CLOSEBRACE"; + CharCode[CharCode["CLOSEBRACKET"] = 93] = "CLOSEBRACKET"; + CharCode[CharCode["CLOSEPAREN"] = 41] = "CLOSEPAREN"; + CharCode[CharCode["COLON"] = 58] = "COLON"; + CharCode[CharCode["COMMA"] = 44] = "COMMA"; + CharCode[CharCode["DOLLAR"] = 36] = "DOLLAR"; + CharCode[CharCode["DOT"] = 46] = "DOT"; + CharCode[CharCode["DOUBLEQUOTE"] = 34] = "DOUBLEQUOTE"; + CharCode[CharCode["EQUALS"] = 61] = "EQUALS"; + CharCode[CharCode["EXCLAMATION"] = 33] = "EXCLAMATION"; + CharCode[CharCode["GREATERTHAN"] = 62] = "GREATERTHAN"; + CharCode[CharCode["HASH"] = 35] = "HASH"; + CharCode[CharCode["LESSTHAN"] = 60] = "LESSTHAN"; + CharCode[CharCode["MINUS"] = 45] = "MINUS"; + CharCode[CharCode["OPENBRACE"] = 123] = "OPENBRACE"; + CharCode[CharCode["OPENBRACKET"] = 91] = "OPENBRACKET"; + CharCode[CharCode["OPENPAREN"] = 40] = "OPENPAREN"; + CharCode[CharCode["PERCENT"] = 37] = "PERCENT"; + CharCode[CharCode["PLUS"] = 43] = "PLUS"; + CharCode[CharCode["QUESTION"] = 63] = "QUESTION"; + CharCode[CharCode["SEMICOLON"] = 59] = "SEMICOLON"; + CharCode[CharCode["SINGLEQUOTE"] = 39] = "SINGLEQUOTE"; + CharCode[CharCode["SLASH"] = 47] = "SLASH"; + CharCode[CharCode["TILDE"] = 126] = "TILDE"; + CharCode[CharCode["BACKSPACE"] = 8] = "BACKSPACE"; + CharCode[CharCode["FORMFEED"] = 12] = "FORMFEED"; + CharCode[CharCode["BYTEORDERMARK"] = 65279] = "BYTEORDERMARK"; + CharCode[CharCode["TAB"] = 9] = "TAB"; + CharCode[CharCode["VERTICALTAB"] = 11] = "VERTICALTAB"; +})(CharCode = exports.CharCode || (exports.CharCode = {})); +/** Tests if the specified character code is some sort of line break. */ +function isLineBreak(c) { + switch (c) { + case 10 /* LINEFEED */: + case 13 /* CARRIAGERETURN */: + case 8232 /* LINESEPARATOR */: + case 8233 /* PARAGRAPHSEPARATOR */: { + return true; + } + default: { + return false; + } + } +} +exports.isLineBreak = isLineBreak; +/** Tests if the specified character code is some sort of white space. */ +function isWhiteSpace(c) { + switch (c) { + case 32 /* SPACE */: + case 9 /* TAB */: + case 11 /* VERTICALTAB */: + case 12 /* FORMFEED */: + case 160 /* NONBREAKINGSPACE */: + case 133 /* NEXTLINE */: + case 5760 /* OGHAM */: + case 8239 /* NARROWNOBREAKSPACE */: + case 8287 /* MATHEMATICALSPACE */: + case 12288 /* IDEOGRAPHICSPACE */: + case 65279 /* BYTEORDERMARK */: { + return true; + } + default: { + return c >= 8192 /* ENQUAD */ && c <= 8203 /* ZEROWIDTHSPACE */; + } + } +} +exports.isWhiteSpace = isWhiteSpace; +/** Tests if the specified character code is a valid decimal digit. */ +function isDecimalDigit(c) { + return c >= 48 /* _0 */ && c <= 57 /* _9 */; +} +exports.isDecimalDigit = isDecimalDigit; +/** Tests if the specified character code is a valid octal digit. */ +function isOctalDigit(c) { + return c >= 48 /* _0 */ && c <= 55 /* _7 */; +} +exports.isOctalDigit = isOctalDigit; +/** Tests if the specified character code is a valid start of an identifier. */ +function isIdentifierStart(c) { + return c >= 97 /* a */ && c <= 122 /* z */ + || c >= 65 /* A */ && c <= 90 /* Z */ + || c == 95 /* _ */ + || c == 36 /* DOLLAR */ + || c > 0x7f && isUnicodeIdentifierStart(c); +} +exports.isIdentifierStart = isIdentifierStart; +/** Tests if the specified character code is a valid keyword character. */ +function isKeywordCharacter(c) { + return c >= 97 /* a */ && c <= 122 /* z */; +} +exports.isKeywordCharacter = isKeywordCharacter; +/** Tests if the specified character code is a valid part of an identifier. */ +function isIdentifierPart(c) { + return c >= 97 /* a */ && c <= 122 /* z */ + || c >= 65 /* A */ && c <= 90 /* Z */ + || c >= 48 /* _0 */ && c <= 57 /* _9 */ + || c == 95 /* _ */ + || c == 36 /* DOLLAR */ + || c > 0x7f && isUnicodeIdentifierPart(c); +} +exports.isIdentifierPart = isIdentifierPart; +// storing as u16 to save memory +var unicodeIdentifierStart = [ + 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, + 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, + 908, 908, 910, 929, 931, + 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, + 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, + 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, + 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, + 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, + 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, + 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, + 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, + 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, + 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, + 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, + 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, + 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, + 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, + 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, + 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, + 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, + 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, + 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, + 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, + 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, + 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, + 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, + 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, + 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, + 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, + 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, + 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, + 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, + 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, + 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, + 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, + 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, + 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, + 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, + 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, + 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, + 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, + 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, + 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, + 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, + 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, + 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, + 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, + 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, + 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, + 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015, + 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, + 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, + 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, + 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, + 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, + 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, + 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, + 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, + 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, + 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, + 65479, 65482, 65487, 65490, 65495, 65498, 65500, +]; +var unicodeIdentifierPart = [ + 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, + 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, + 908, 908, 910, 929, 931, + 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, + 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, + 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, + 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, + 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, + 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, + 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, + 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, + 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, + 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, + 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, + 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, + 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, + 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, + 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, + 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, + 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, + 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, + 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, + 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, + 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, + 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, + 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, + 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, + 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, + 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, + 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, + 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, + 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, + 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, + 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, + 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, + 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, + 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, + 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, + 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, + 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, + 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, + 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, + 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, + 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, + 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, + 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, + 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, + 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, + 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, + 8521, 8526, 8526, 8544, 8584, + 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, + 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, + 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, + 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, + 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, + 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, + 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, + 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, + 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072, + 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, + 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, + 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, + 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, + 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, + 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, + 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, + 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, + 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, + 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, + 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, +]; +function lookupInUnicodeMap(code, map) { + if (code < map[0]) + return false; + var lo = 0; + var hi = map.length; + var mid; + var midVal; + while (lo + 1 < hi) { + mid = lo + ((hi - lo) >> 1); + mid -= (mid & 1); + midVal = map[mid]; + if (midVal <= code && code <= map[mid + 1]) { + return true; + } + if (code < midVal) { + hi = mid; + } + else { + lo = mid + 2; + } + } + return false; +} +function isUnicodeIdentifierStart(code) { + return code < 0 || code > 0xffff ? false + : lookupInUnicodeMap(code, unicodeIdentifierStart); +} +function isUnicodeIdentifierPart(code) { + return code < 0 || code > 0xffff ? false + : lookupInUnicodeMap(code, unicodeIdentifierPart); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmNvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9jaGFyY29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsbUJBQW1CLENBQUEsS0FBSzs7QUFFeEIsd0NBQXdDO0FBQ3hDLElBQWtCLFFBb0lqQjtBQXBJRCxXQUFrQixRQUFRO0lBRXhCLHVDQUFRLENBQUE7SUFDUixnREFBZSxDQUFBO0lBQ2YsNERBQXFCLENBQUE7SUFDckIsNERBQXNCLENBQUE7SUFDdEIsc0VBQTJCLENBQUE7SUFDM0IsaURBQWlCLENBQUE7SUFFakIsMENBQVksQ0FBQTtJQUNaLGlFQUF1QixDQUFBO0lBQ3ZCLDhDQUFlLENBQUE7SUFDZiw4Q0FBZSxDQUFBO0lBQ2YsZ0RBQWdCLENBQUE7SUFDaEIsZ0RBQWdCLENBQUE7SUFDaEIsZ0VBQXdCLENBQUE7SUFDeEIsOERBQXVCLENBQUE7SUFDdkIsNERBQXNCLENBQUE7SUFDdEIsd0RBQW9CLENBQUE7SUFDcEIsa0VBQXlCLENBQUE7SUFDekIsb0RBQWtCLENBQUE7SUFDbEIsb0RBQWtCLENBQUE7SUFDbEIsOERBQXVCLENBQUE7SUFDdkIsc0VBQTJCLENBQUE7SUFDM0IsbUVBQXlCLENBQUE7SUFDekIsb0VBQTBCLENBQUE7SUFDMUIsNENBQWMsQ0FBQTtJQUVkLGtDQUFRLENBQUE7SUFFUixvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBRVQsa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FB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NENBT0M7QUFFRCxnQ0FBZ0M7QUFDaEMsSUFBTSxzQkFBc0IsR0FBVTtJQUNwQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDOUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztDQUNoRCxDQUFDO0FBQ0YsSUFBTSxxQkFBcUIsR0FBVTtJQUNuQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0NBQzlELENBQUM7QUFFRixTQUFTLGtCQUFrQixDQUFDLElBQVMsRUFBRSxHQUFVO0lBQy9DLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUVoQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWCxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3BCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxNQUFXLENBQUM7SUFFaEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNsQixHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUIsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksR0FBRyxNQUFNLEVBQUU7WUFDakIsRUFBRSxHQUFHLEdBQUcsQ0FBQztTQUNWO2FBQU07WUFDTCxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztTQUNkO0tBQ0Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLElBQVM7SUFDekMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQVcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLElBQVM7SUFDeEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQVcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuLyoqIEFuIGVudW0gb2YgbmFtZWQgY2hhcmFjdGVyIGNvZGVzLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQ2hhckNvZGUge1xuXG4gIE5VTEwgPSAwLFxuICBMSU5FRkVFRCA9IDB4MEEsXG4gIENBUlJJQUdFUkVUVVJOID0gMHgwRCxcbiAgTElORVNFUEFSQVRPUiA9IDB4MjAyOCxcbiAgUEFSQUdSQVBIU0VQQVJBVE9SID0gMHgyMDI5LFxuICBORVhUTElORSA9IDB4MDA4NSxcblxuICBTUEFDRSA9IDB4MjAsXG4gIE5PTkJSRUFLSU5HU1BBQ0UgPSAweEEwLFxuICBFTlFVQUQgPSAweDIwMDAsXG4gIEVNUVVBRCA9IDB4MjAwMSxcbiAgRU5TUEFDRSA9IDB4MjAwMixcbiAgRU1TUEFDRSA9IDB4MjAwMyxcbiAgVEhSRUVQRVJFTVNQQUNFID0gMHgyMDA0LFxuICBGT1VSUEVSRU1TUEFDRSA9IDB4MjAwNSxcbiAgU0lYUEVSRU1TUEFDRSA9IDB4MjAwNixcbiAgRklHVVJFU1BBQ0UgPSAweDIwMDcsXG4gIFBVTkNUVUFUSU9OU1BBQ0UgPSAweDIwMDgsXG4gIFRISU5TUEFDRSA9IDB4MjAwOSxcbiAgSEFJUlNQQUNFID0gMHgyMDBBLFxuICBaRVJPV0lEVEhTUEFDRSA9IDB4MjAwQixcbiAgTkFSUk9XTk9CUkVBS1NQQUNFID0gMHgyMDJGLFxuICBJREVPR1JBUEhJQ1NQQUNFID0gMHgzMDAwLFxuICBNQVRIRU1BVElDQUxTUEFDRSA9IDB4MjA1RixcbiAgT0dIQU0gPSAweDE2ODAsXG5cbiAgXyA9IDB4NUYsXG5cbiAgXzAgPSAweDMwLFxuICBfMSA9IDB4MzEsXG4gIF8yID0gMHgzMixcbiAgXzMgPSAweDMzLFxuICBfNCA9IDB4MzQsXG4gIF81ID0gMHgzNSxcbiAgXzYgPSAweDM2LFxuICBfNyA9IDB4MzcsXG4gIF84ID0gMHgzOCxcbiAgXzkgPSAweDM5LFxuXG4gIGEgPSAweDYxLFxuICBiID0gMHg2MixcbiAgYyA9IDB4NjMsXG4gIGQgPSAweDY0LFxuICBlID0gMHg2NSxcbiAgZiA9IDB4NjYsXG4gIGcgPSAweDY3LFxuICBoID0gMHg2OCxcbiAgaSA9IDB4NjksXG4gIGogPSAweDZBLFxuICBrID0gMHg2QixcbiAgbCA9IDB4NkMsXG4gIG0gPSAweDZELFxuICBuID0gMHg2RSxcbiAgbyA9IDB4NkYsXG4gIHAgPSAweDcwLFxuICBxID0gMHg3MSxcbiAgciA9IDB4NzIsXG4gIHMgPSAweDczLFxuICB0ID0gMHg3NCxcbiAgdSA9IDB4NzUsXG4gIHYgPSAweDc2LFxuICB3ID0gMHg3NyxcbiAgeCA9IDB4NzgsXG4gIHkgPSAweDc5LFxuICB6ID0gMHg3QSxcblxuICBBID0gMHg0MSxcbiAgQiA9IDB4NDIsXG4gIEMgPSAweDQzLFxuICBEID0gMHg0NCxcbiAgRSA9IDB4NDUsXG4gIEYgPSAweDQ2LFxuICBHID0gMHg0NyxcbiAgSCA9IDB4NDgsXG4gIEkgPSAweDQ5LFxuICBKID0gMHg0QSxcbiAgSyA9IDB4NEIsXG4gIEwgPSAweDRDLFxuICBNID0gMHg0RCxcbiAgTiA9IDB4NEUsXG4gIE8gPSAweDRGLFxuICBQID0gMHg1MCxcbiAgUSA9IDB4NTEsXG4gIFIgPSAweDUyLFxuICBTID0gMHg1MyxcbiAgVCA9IDB4NTQsXG4gIFUgPSAweDU1LFxuICBWID0gMHg1NixcbiAgVyA9IDB4NTcsXG4gIFggPSAweDU4LFxuICBZID0gMHg1OSxcbiAgWiA9IDB4NWEsXG5cbiAgQU1QRVJTQU5EID0gMHgyNixcbiAgQVNURVJJU0sgPSAweDJBLFxuICBBVCA9IDB4NDAsXG4gIEJBQ0tTTEFTSCA9IDB4NUMsXG4gIEJBQ0tUSUNLID0gMHg2MCxcbiAgQkFSID0gMHg3QyxcbiAgQ0FSRVQgPSAweDVFLFxuICBDTE9TRUJSQUNFID0gMHg3RCxcbiAgQ0xPU0VCUkFDS0VUID0gMHg1RCxcbiAgQ0xPU0VQQVJFTiA9IDB4MjksXG4gIENPTE9OID0gMHgzQSxcbiAgQ09NTUEgPSAweDJDLFxuICBET0xMQVIgPSAweDI0LFxuICBET1QgPSAweDJFLFxuICBET1VCTEVRVU9URSA9IDB4MjIsXG4gIEVRVUFMUyA9IDB4M0QsXG4gIEVYQ0xBTUFUSU9OID0gMHgyMSxcbiAgR1JFQVRFUlRIQU4gPSAweDNFLFxuICBIQVNIID0gMHgyMyxcbiAgTEVTU1RIQU4gPSAweDNDLFxuICBNSU5VUyA9IDB4MkQsXG4gIE9QRU5CUkFDRSA9IDB4N0IsXG4gIE9QRU5CUkFDS0VUID0gMHg1QixcbiAgT1BFTlBBUkVOID0gMHgyOCxcbiAgUEVSQ0VOVCA9IDB4MjUsXG4gIFBMVVMgPSAweDJCLFxuICBRVUVTVElPTiA9IDB4M0YsXG4gIFNFTUlDT0xPTiA9IDB4M0IsXG4gIFNJTkdMRVFVT1RFID0gMHgyNyxcbiAgU0xBU0ggPSAweDJGLFxuICBUSUxERSA9IDB4N0UsXG5cbiAgQkFDS1NQQUNFID0gMHgwOCxcbiAgRk9STUZFRUQgPSAweDBDLFxuICBCWVRFT1JERVJNQVJLID0gMHhGRUZGLFxuICBUQUIgPSAweDA5LFxuICBWRVJUSUNBTFRBQiA9IDB4MEJcbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgc29tZSBzb3J0IG9mIGxpbmUgYnJlYWsuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lQnJlYWsoYzogQ2hhckNvZGUpOiBib29sIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICBjYXNlIENoYXJDb2RlLkNBUlJJQUdFUkVUVVJOOlxuICAgIGNhc2UgQ2hhckNvZGUuTElORVNFUEFSQVRPUjpcbiAgICBjYXNlIENoYXJDb2RlLlBBUkFHUkFQSFNFUEFSQVRPUjoge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgc29tZSBzb3J0IG9mIHdoaXRlIHNwYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjOiBpMzIpOiBib29sIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSBDaGFyQ29kZS5TUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLlRBQjpcbiAgICBjYXNlIENoYXJDb2RlLlZFUlRJQ0FMVEFCOlxuICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6XG4gICAgY2FzZSBDaGFyQ29kZS5OT05CUkVBS0lOR1NQQUNFOlxuICAgIGNhc2UgQ2hhckNvZGUuTkVYVExJTkU6XG4gICAgY2FzZSBDaGFyQ29kZS5PR0hBTTpcbiAgICBjYXNlIENoYXJDb2RlLk5BUlJPV05PQlJFQUtTUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLk1BVEhFTUFUSUNBTFNQQUNFOlxuICAgIGNhc2UgQ2hhckNvZGUuSURFT0dSQVBISUNTUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLkJZVEVPUkRFUk1BUks6IHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gYyA+PSBDaGFyQ29kZS5FTlFVQUQgJiYgYyA8PSBDaGFyQ29kZS5aRVJPV0lEVEhTUEFDRTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgYSB2YWxpZCBkZWNpbWFsIGRpZ2l0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVjaW1hbERpZ2l0KGM6IGkzMik6IGJvb2wge1xuICByZXR1cm4gYyA+PSBDaGFyQ29kZS5fMCAmJiBjIDw9IENoYXJDb2RlLl85O1xufVxuXG4vKiogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZSBpcyBhIHZhbGlkIG9jdGFsIGRpZ2l0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2N0YWxEaWdpdChjOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fNztcbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgYSB2YWxpZCBzdGFydCBvZiBhbiBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbnRpZmllclN0YXJ0KGM6IGkzMik6IGJvb2wge1xuICByZXR1cm4gYyA+PSBDaGFyQ29kZS5hICYmIGMgPD0gQ2hhckNvZGUuelxuICAgICAgfHwgYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuWlxuICAgICAgfHwgYyA9PSBDaGFyQ29kZS5fXG4gICAgICB8fCBjID09IENoYXJDb2RlLkRPTExBUlxuICAgICAgfHwgYyA+IDB4N2YgJiYgaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGMpO1xufVxuXG4vKiogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZSBpcyBhIHZhbGlkIGtleXdvcmQgY2hhcmFjdGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzS2V5d29yZENoYXJhY3RlcihjOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGMgPj0gQ2hhckNvZGUuYSAmJiBjIDw9IENoYXJDb2RlLno7XG59XG5cbi8qKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBjb2RlIGlzIGEgdmFsaWQgcGFydCBvZiBhbiBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbnRpZmllclBhcnQoYzogaTMyKTogYm9vbCB7XG4gIHJldHVybiBjID49IENoYXJDb2RlLmEgJiYgYyA8PSBDaGFyQ29kZS56XG4gICAgICB8fCBjID49IENoYXJDb2RlLkEgJiYgYyA8PSBDaGFyQ29kZS5aXG4gICAgICB8fCBjID49IENoYXJDb2RlLl8wICYmIGMgPD0gQ2hhckNvZGUuXzlcbiAgICAgIHx8IGMgPT0gQ2hhckNvZGUuX1xuICAgICAgfHwgYyA9PSBDaGFyQ29kZS5ET0xMQVJcbiAgICAgIHx8IGMgPiAweDdmICYmIGlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGMpO1xufVxuXG4vLyBzdG9yaW5nIGFzIHUxNiB0byBzYXZlIG1lbW9yeVxuY29uc3QgdW5pY29kZUlkZW50aWZpZXJTdGFydDogdTE2W10gPSBbXG4gIDE3MCwgMTcwLCAxODEsIDE4MSwgMTg2LCAxODYsIDE5MiwgMjE0LCAyMTYsIDI0NiwgMjQ4LCA3MDUsIDcxMCwgNzIxLCA3MzYsXG4gIDc0MCwgNzQ4LCA3NDgsIDc1MCwgNzUwLCA4ODAsIDg4NCwgODg2LCA4ODcsIDg5MCwgODkzLCA5MDIsIDkwMiwgOTA0LCA5MDYsXG4gIDkwOCwgOTA4LCA5MTAsIDkyOSwgOTMxLFxuICAxMDEzLCAxMDE1LCAxMTUzLCAxMTYyLCAxMzE5LCAxMzI5LCAxMzY2LCAxMzY5LCAxMzY5LCAxMzc3LCAxNDE1LCAxNDg4LCAxNTE0LFxuICAxNTIwLCAxNTIyLCAxNTY4LCAxNjEwLCAxNjQ2LCAxNjQ3LCAxNjQ5LCAxNzQ3LCAxNzQ5LCAxNzQ5LCAxNzY1LCAxNzY2LCAxNzc0LFxuICAxNzc1LCAxNzg2LCAxNzg4LCAxNzkxLCAxNzkxLCAxODA4LCAxODA4LCAxODEwLCAxODM5LCAxODY5LCAxOTU3LCAxOTY5LCAxOTY5LFxuICAxOTk0LCAyMDI2LCAyMDM2LCAyMDM3LCAyMDQyLCAyMDQyLCAyMDQ4LCAyMDY5LCAyMDc0LCAyMDc0LCAyMDg0LCAyMDg0LCAyMDg4LFxuICAyMDg4LCAyMTEyLCAyMTM2LCAyMjA4LCAyMjA4LCAyMjEwLCAyMjIwLCAyMzA4LCAyMzYxLCAyMzY1LCAyMzY1LCAyMzg0LCAyMzg0LFxuICAyMzkyLCAyNDAxLCAyNDE3LCAyNDIzLCAyNDI1LCAyNDMxLCAyNDM3LCAyNDQ0LCAyNDQ3LCAyNDQ4LCAyNDUxLCAyNDcyLCAyNDc0LFxuICAyNDgwLCAyNDgyLCAyNDgyLCAyNDg2LCAyNDg5LCAyNDkzLCAyNDkzLCAyNTEwLCAyNTEwLCAyNTI0LCAyNTI1LCAyNTI3LCAyNTI5LFxuICAyNTQ0LCAyNTQ1LCAyNTY1LCAyNTcwLCAyNTc1LCAyNTc2LCAyNTc5LCAyNjAwLCAyNjAyLCAyNjA4LCAyNjEwLCAyNjExLCAyNjEzLFxuICAyNjE0LCAyNjE2LCAyNjE3LCAyNjQ5LCAyNjUyLCAyNjU0LCAyNjU0LCAyNjc0LCAyNjc2LCAyNjkzLCAyNzAxLCAyNzAzLCAyNzA1LFxuICAyNzA3LCAyNzI4LCAyNzMwLCAyNzM2LCAyNzM4LCAyNzM5LCAyNzQxLCAyNzQ1LCAyNzQ5LCAyNzQ5LCAyNzY4LCAyNzY4LCAyNzg0LFxuICAyNzg1LCAyODIxLCAyODI4LCAyODMxLCAyODMyLCAyODM1LCAyODU2LCAyODU4LCAyODY0LCAyODY2LCAyODY3LCAyODY5LCAyODczLFxuICAyODc3LCAyODc3LCAyOTA4LCAyOTA5LCAyOTExLCAyOTEzLCAyOTI5LCAyOTI5LCAyOTQ3LCAyOTQ3LCAyOTQ5LCAyOTU0LCAyOTU4LFxuICAyOTYwLCAyOTYyLCAyOTY1LCAyOTY5LCAyOTcwLCAyOTcyLCAyOTcyLCAyOTc0LCAyOTc1LCAyOTc5LCAyOTgwLCAyOTg0LCAyOTg2LFxuICAyOTkwLCAzMDAxLCAzMDI0LCAzMDI0LCAzMDc3LCAzMDg0LCAzMDg2LCAzMDg4LCAzMDkwLCAzMTEyLCAzMTE0LCAzMTIzLCAzMTI1LFxuICAzMTI5LCAzMTMzLCAzMTMzLCAzMTYwLCAzMTYxLCAzMTY4LCAzMTY5LCAzMjA1LCAzMjEyLCAzMjE0LCAzMjE2LCAzMjE4LCAzMjQwLFxuICAzMjQyLCAzMjUxLCAzMjUzLCAzMjU3LCAzMjYxLCAzMjYxLCAzMjk0LCAzMjk0LCAzMjk2LCAzMjk3LCAzMzEzLCAzMzE0LCAzMzMzLFxuICAzMzQwLCAzMzQyLCAzMzQ0LCAzMzQ2LCAzMzg2LCAzMzg5LCAzMzg5LCAzNDA2LCAzNDA2LCAzNDI0LCAzNDI1LCAzNDUwLCAzNDU1LFxuICAzNDYxLCAzNDc4LCAzNDgyLCAzNTA1LCAzNTA3LCAzNTE1LCAzNTE3LCAzNTE3LCAzNTIwLCAzNTI2LCAzNTg1LCAzNjMyLCAzNjM0LFxuICAzNjM1LCAzNjQ4LCAzNjU0LCAzNzEzLCAzNzE0LCAzNzE2LCAzNzE2LCAzNzE5LCAzNzIwLCAzNzIyLCAzNzIyLCAzNzI1LCAzNzI1LFxuICAzNzMyLCAzNzM1LCAzNzM3LCAzNzQzLCAzNzQ1LCAzNzQ3LCAzNzQ5LCAzNzQ5LCAzNzUxLCAzNzUxLCAzNzU0LCAzNzU1LCAzNzU3LFxuICAzNzYwLCAzNzYyLCAzNzYzLCAzNzczLCAzNzczLCAzNzc2LCAzNzgwLCAzNzgyLCAzNzgyLCAzODA0LCAzODA3LCAzODQwLCAzODQwLFxuICAzOTA0LCAzOTExLCAzOTEzLCAzOTQ4LCAzOTc2LCAzOTgwLCA0MDk2LCA0MTM4LCA0MTU5LCA0MTU5LCA0MTc2LCA0MTgxLCA0MTg2LFxuICA0MTg5LCA0MTkzLCA0MTkzLCA0MTk3LCA0MTk4LCA0MjA2LCA0MjA4LCA0MjEzLCA0MjI1LCA0MjM4LCA0MjM4LCA0MjU2LCA0MjkzLFxuICA0Mjk1LCA0Mjk1LCA0MzAxLCA0MzAxLCA0MzA0LCA0MzQ2LCA0MzQ4LCA0NjgwLCA0NjgyLCA0Njg1LCA0Njg4LCA0Njk0LCA0Njk2LFxuICA0Njk2LCA0Njk4LCA0NzAxLCA0NzA0LCA0NzQ0LCA0NzQ2LCA0NzQ5LCA0NzUyLCA0Nzg0LCA0Nzg2LCA0Nzg5LCA0NzkyLCA0Nzk4LFxuICA0ODAwLCA0ODAwLCA0ODAyLCA0ODA1LCA0ODA4LCA0ODIyLCA0ODI0LCA0ODgwLCA0ODgyLCA0ODg1LCA0ODg4LCA0OTU0LCA0OTkyLFxuICA1MDA3LCA1MDI0LCA1MTA4LCA1MTIxLCA1NzQwLCA1NzQzLCA1NzU5LCA1NzYxLCA1Nzg2LCA1NzkyLCA1ODY2LCA1ODcwLCA1ODcyLFxuICA1ODg4LCA1OTAwLCA1OTAyLCA1OTA1LCA1OTIwLCA1OTM3LCA1OTUyLCA1OTY5LCA1OTg0LCA1OTk2LCA1OTk4LCA2MDAwLCA2MDE2LFxuICA2MDY3LCA2MTAzLCA2MTAzLCA2MTA4LCA2MTA4LCA2MTc2LCA2MjYzLCA2MjcyLCA2MzEyLCA2MzE0LCA2MzE0LCA2MzIwLCA2Mzg5LFxuICA2NDAwLCA2NDI4LCA2NDgwLCA2NTA5LCA2NTEyLCA2NTE2LCA2NTI4LCA2NTcxLCA2NTkzLCA2NTk5LCA2NjU2LCA2Njc4LCA2Njg4LFxuICA2NzQwLCA2ODIzLCA2ODIzLCA2OTE3LCA2OTYzLCA2OTgxLCA2OTg3LCA3MDQzLCA3MDcyLCA3MDg2LCA3MDg3LCA3MDk4LCA3MTQxLFxuICA3MTY4LCA3MjAzLCA3MjQ1LCA3MjQ3LCA3MjU4LCA3MjkzLCA3NDAxLCA3NDA0LCA3NDA2LCA3NDA5LCA3NDEzLCA3NDE0LCA3NDI0LFxuICA3NjE1LCA3NjgwLCA3OTU3LCA3OTYwLCA3OTY1LCA3OTY4LCA4MDA1LCA4MDA4LCA4MDEzLCA4MDE2LCA4MDIzLCA4MDI1LCA4MDI1LFxuICA4MDI3LCA4MDI3LCA4MDI5LCA4MDI5LCA4MDMxLCA4MDYxLCA4MDY0LCA4MTE2LCA4MTE4LCA4MTI0LCA4MTI2LCA4MTI2LCA4MTMwLFxuICA4MTMyLCA4MTM0LCA4MTQwLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTU1LCA4MTYwLCA4MTcyLCA4MTc4LCA4MTgwLCA4MTgyLCA4MTg4LFxuICA4MzA1LCA4MzA1LCA4MzE5LCA4MzE5LCA4MzM2LCA4MzQ4LCA4NDUwLCA4NDUwLCA4NDU1LCA4NDU1LCA4NDU4LCA4NDY3LCA4NDY5LFxuICA4NDY5LCA4NDczLCA4NDc3LCA4NDg0LCA4NDg0LCA4NDg2LCA4NDg2LCA4NDg4LCA4NDg4LCA4NDkwLCA4NDkzLCA4NDk1LCA4NTA1LFxuICA4NTA4LCA4NTExLCA4NTE3LCA4NTIxLCA4NTI2LCA4NTI2LCA4NTQ0LCA4NTg0LFxuICAxMTI2NCwgMTEzMTAsIDExMzEyLCAxMTM1OCwgMTEzNjAsIDExNDkyLCAxMTQ5OSwgMTE1MDIsIDExNTA2LCAxMTUwNywgMTE1MjAsXG4gIDExNTU3LCAxMTU1OSwgMTE1NTksIDExNTY1LCAxMTU2NSwgMTE1NjgsIDExNjIzLCAxMTYzMSwgMTE2MzEsIDExNjQ4LCAxMTY3MCxcbiAgMTE2ODAsIDExNjg2LCAxMTY4OCwgMTE2OTQsIDExNjk2LCAxMTcwMiwgMTE3MDQsIDExNzEwLCAxMTcxMiwgMTE3MTgsIDExNzIwLFxuICAxMTcyNiwgMTE3MjgsIDExNzM0LCAxMTczNiwgMTE3NDIsIDExODIzLCAxMTgyMywgMTIyOTMsIDEyMjk1LCAxMjMyMSwgMTIzMjksXG4gIDEyMzM3LCAxMjM0MSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTI0MzgsIDEyNDQ1LCAxMjQ0NywgMTI0NDksIDEyNTM4LCAxMjU0MCxcbiAgMTI1NDMsIDEyNTQ5LCAxMjU4OSwgMTI1OTMsIDEyNjg2LCAxMjcwNCwgMTI3MzAsIDEyNzg0LCAxMjc5OSwgMTMzMTIsIDE5ODkzLFxuICAxOTk2OCwgNDA5MDgsIDQwOTYwLCA0MjEyNCwgNDIxOTIsIDQyMjM3LCA0MjI0MCwgNDI1MDgsIDQyNTEyLCA0MjUyNywgNDI1MzgsXG4gIDQyNTM5LCA0MjU2MCwgNDI2MDYsIDQyNjIzLCA0MjY0NywgNDI2NTYsIDQyNzM1LCA0Mjc3NSwgNDI3ODMsIDQyNzg2LCA0Mjg4OCxcbiAgNDI4OTEsIDQyODk0LCA0Mjg5NiwgNDI4OTksIDQyOTEyLCA0MjkyMiwgNDMwMDAsIDQzMDA5LCA0MzAxMSwgNDMwMTMsIDQzMDE1LFxuICA0MzAxOCwgNDMwMjAsIDQzMDQyLCA0MzA3MiwgNDMxMjMsIDQzMTM4LCA0MzE4NywgNDMyNTAsIDQzMjU1LCA0MzI1OSwgNDMyNTksXG4gIDQzMjc0LCA0MzMwMSwgNDMzMTIsIDQzMzM0LCA0MzM2MCwgNDMzODgsIDQzMzk2LCA0MzQ0MiwgNDM0NzEsIDQzNDcxLCA0MzUyMCxcbiAgNDM1NjAsIDQzNTg0LCA0MzU4NiwgNDM1ODgsIDQzNTk1LCA0MzYxNiwgNDM2MzgsIDQzNjQyLCA0MzY0MiwgNDM2NDgsIDQzNjk1LFxuICA0MzY5NywgNDM2OTcsIDQzNzAxLCA0MzcwMiwgNDM3MDUsIDQzNzA5LCA0MzcxMiwgNDM3MTIsIDQzNzE0LCA0MzcxNCwgNDM3MzksXG4gIDQzNzQxLCA0Mzc0NCwgNDM3NTQsIDQzNzYyLCA0Mzc2NCwgNDM3NzcsIDQzNzgyLCA0Mzc4NSwgNDM3OTAsIDQzNzkzLCA0Mzc5OCxcbiAgNDM4MDgsIDQzODE0LCA0MzgxNiwgNDM4MjIsIDQzOTY4LCA0NDAwMiwgNDQwMzIsIDU1MjAzLCA1NTIxNiwgNTUyMzgsIDU1MjQzLFxuICA1NTI5MSwgNjM3NDQsIDY0MTA5LCA2NDExMiwgNjQyMTcsIDY0MjU2LCA2NDI2MiwgNjQyNzUsIDY0Mjc5LCA2NDI4NSwgNjQyODUsXG4gIDY0Mjg3LCA2NDI5NiwgNjQyOTgsIDY0MzEwLCA2NDMxMiwgNjQzMTYsIDY0MzE4LCA2NDMxOCwgNjQzMjAsIDY0MzIxLCA2NDMyMyxcbiAgNjQzMjQsIDY0MzI2LCA2NDQzMywgNjQ0NjcsIDY0ODI5LCA2NDg0OCwgNjQ5MTEsIDY0OTE0LCA2NDk2NywgNjUwMDgsIDY1MDE5LFxuICA2NTEzNiwgNjUxNDAsIDY1MTQyLCA2NTI3NiwgNjUzMTMsIDY1MzM4LCA2NTM0NSwgNjUzNzAsIDY1MzgyLCA2NTQ3MCwgNjU0NzQsXG4gIDY1NDc5LCA2NTQ4MiwgNjU0ODcsIDY1NDkwLCA2NTQ5NSwgNjU0OTgsIDY1NTAwLFxuXTtcbmNvbnN0IHVuaWNvZGVJZGVudGlmaWVyUGFydDogdTE2W10gPSBbXG4gIDE3MCwgMTcwLCAxODEsIDE4MSwgMTg2LCAxODYsIDE5MiwgMjE0LCAyMTYsIDI0NiwgMjQ4LCA3MDUsIDcxMCwgNzIxLCA3MzYsXG4gIDc0MCwgNzQ4LCA3NDgsIDc1MCwgNzUwLCA3NjgsIDg4NCwgODg2LCA4ODcsIDg5MCwgODkzLCA5MDIsIDkwMiwgOTA0LCA5MDYsXG4gIDkwOCwgOTA4LCA5MTAsIDkyOSwgOTMxLFxuICAxMDEzLCAxMDE1LCAxMTUzLCAxMTU1LCAxMTU5LCAxMTYyLCAxMzE5LCAxMzI5LCAxMzY2LCAxMzY5LCAxMzY5LCAxMzc3LCAxNDE1LFxuICAxNDI1LCAxNDY5LCAxNDcxLCAxNDcxLCAxNDczLCAxNDc0LCAxNDc2LCAxNDc3LCAxNDc5LCAxNDc5LCAxNDg4LCAxNTE0LCAxNTIwLFxuICAxNTIyLCAxNTUyLCAxNTYyLCAxNTY4LCAxNjQxLCAxNjQ2LCAxNzQ3LCAxNzQ5LCAxNzU2LCAxNzU5LCAxNzY4LCAxNzcwLCAxNzg4LFxuICAxNzkxLCAxNzkxLCAxODA4LCAxODY2LCAxODY5LCAxOTY5LCAxOTg0LCAyMDM3LCAyMDQyLCAyMDQyLCAyMDQ4LCAyMDkzLCAyMTEyLFxuICAyMTM5LCAyMjA4LCAyMjA4LCAyMjEwLCAyMjIwLCAyMjc2LCAyMzAyLCAyMzA0LCAyNDAzLCAyNDA2LCAyNDE1LCAyNDE3LCAyNDIzLFxuICAyNDI1LCAyNDMxLCAyNDMzLCAyNDM1LCAyNDM3LCAyNDQ0LCAyNDQ3LCAyNDQ4LCAyNDUxLCAyNDcyLCAyNDc0LCAyNDgwLCAyNDgyLFxuICAyNDgyLCAyNDg2LCAyNDg5LCAyNDkyLCAyNTAwLCAyNTAzLCAyNTA0LCAyNTA3LCAyNTEwLCAyNTE5LCAyNTE5LCAyNTI0LCAyNTI1LFxuICAyNTI3LCAyNTMxLCAyNTM0LCAyNTQ1LCAyNTYxLCAyNTYzLCAyNTY1LCAyNTcwLCAyNTc1LCAyNTc2LCAyNTc5LCAyNjAwLCAyNjAyLFxuICAyNjA4LCAyNjEwLCAyNjExLCAyNjEzLCAyNjE0LCAyNjE2LCAyNjE3LCAyNjIwLCAyNjIwLCAyNjIyLCAyNjI2LCAyNjMxLCAyNjMyLFxuICAyNjM1LCAyNjM3LCAyNjQxLCAyNjQxLCAyNjQ5LCAyNjUyLCAyNjU0LCAyNjU0LCAyNjYyLCAyNjc3LCAyNjg5LCAyNjkxLCAyNjkzLFxuICAyNzAxLCAyNzAzLCAyNzA1LCAyNzA3LCAyNzI4LCAyNzMwLCAyNzM2LCAyNzM4LCAyNzM5LCAyNzQxLCAyNzQ1LCAyNzQ4LCAyNzU3LFxuICAyNzU5LCAyNzYxLCAyNzYzLCAyNzY1LCAyNzY4LCAyNzY4LCAyNzg0LCAyNzg3LCAyNzkwLCAyNzk5LCAyODE3LCAyODE5LCAyODIxLFxuICAyODI4LCAyODMxLCAyODMyLCAyODM1LCAyODU2LCAyODU4LCAyODY0LCAyODY2LCAyODY3LCAyODY5LCAyODczLCAyODc2LCAyODg0LFxuICAyODg3LCAyODg4LCAyODkxLCAyODkzLCAyOTAyLCAyOTAzLCAyOTA4LCAyOTA5LCAyOTExLCAyOTE1LCAyOTE4LCAyOTI3LCAyOTI5LFxuICAyOTI5LCAyOTQ2LCAyOTQ3LCAyOTQ5LCAyOTU0LCAyOTU4LCAyOTYwLCAyOTYyLCAyOTY1LCAyOTY5LCAyOTcwLCAyOTcyLCAyOTcyLFxuICAyOTc0LCAyOTc1LCAyOTc5LCAyOTgwLCAyOTg0LCAyOTg2LCAyOTkwLCAzMDAxLCAzMDA2LCAzMDEwLCAzMDE0LCAzMDE2LCAzMDE4LFxuICAzMDIxLCAzMDI0LCAzMDI0LCAzMDMxLCAzMDMxLCAzMDQ2LCAzMDU1LCAzMDczLCAzMDc1LCAzMDc3LCAzMDg0LCAzMDg2LCAzMDg4LFxuICAzMDkwLCAzMTEyLCAzMTE0LCAzMTIzLCAzMTI1LCAzMTI5LCAzMTMzLCAzMTQwLCAzMTQyLCAzMTQ0LCAzMTQ2LCAzMTQ5LCAzMTU3LFxuICAzMTU4LCAzMTYwLCAzMTYxLCAzMTY4LCAzMTcxLCAzMTc0LCAzMTgzLCAzMjAyLCAzMjAzLCAzMjA1LCAzMjEyLCAzMjE0LCAzMjE2LFxuICAzMjE4LCAzMjQwLCAzMjQyLCAzMjUxLCAzMjUzLCAzMjU3LCAzMjYwLCAzMjY4LCAzMjcwLCAzMjcyLCAzMjc0LCAzMjc3LCAzMjg1LFxuICAzMjg2LCAzMjk0LCAzMjk0LCAzMjk2LCAzMjk5LCAzMzAyLCAzMzExLCAzMzEzLCAzMzE0LCAzMzMwLCAzMzMxLCAzMzMzLCAzMzQwLFxuICAzMzQyLCAzMzQ0LCAzMzQ2LCAzMzg2LCAzMzg5LCAzMzk2LCAzMzk4LCAzNDAwLCAzNDAyLCAzNDA2LCAzNDE1LCAzNDE1LCAzNDI0LFxuICAzNDI3LCAzNDMwLCAzNDM5LCAzNDUwLCAzNDU1LCAzNDU4LCAzNDU5LCAzNDYxLCAzNDc4LCAzNDgyLCAzNTA1LCAzNTA3LCAzNTE1LFxuICAzNTE3LCAzNTE3LCAzNTIwLCAzNTI2LCAzNTMwLCAzNTMwLCAzNTM1LCAzNTQwLCAzNTQyLCAzNTQyLCAzNTQ0LCAzNTUxLCAzNTcwLFxuICAzNTcxLCAzNTg1LCAzNjQyLCAzNjQ4LCAzNjYyLCAzNjY0LCAzNjczLCAzNzEzLCAzNzE0LCAzNzE2LCAzNzE2LCAzNzE5LCAzNzIwLFxuICAzNzIyLCAzNzIyLCAzNzI1LCAzNzI1LCAzNzMyLCAzNzM1LCAzNzM3LCAzNzQzLCAzNzQ1LCAzNzQ3LCAzNzQ5LCAzNzQ5LCAzNzUxLFxuICAzNzUxLCAzNzU0LCAzNzU1LCAzNzU3LCAzNzY5LCAzNzcxLCAzNzczLCAzNzc2LCAzNzgwLCAzNzgyLCAzNzgyLCAzNzg0LCAzNzg5LFxuICAzNzkyLCAzODAxLCAzODA0LCAzODA3LCAzODQwLCAzODQwLCAzODY0LCAzODY1LCAzODcyLCAzODgxLCAzODkzLCAzODkzLCAzODk1LFxuICAzODk1LCAzODk3LCAzODk3LCAzOTAyLCAzOTExLCAzOTEzLCAzOTQ4LCAzOTUzLCAzOTcyLCAzOTc0LCAzOTkxLCAzOTkzLCA0MDI4LFxuICA0MDM4LCA0MDM4LCA0MDk2LCA0MTY5LCA0MTc2LCA0MjUzLCA0MjU2LCA0MjkzLCA0Mjk1LCA0Mjk1LCA0MzAxLCA0MzAxLCA0MzA0LFxuICA0MzQ2LCA0MzQ4LCA0NjgwLCA0NjgyLCA0Njg1LCA0Njg4LCA0Njk0LCA0Njk2LCA0Njk2LCA0Njk4LCA0NzAxLCA0NzA0LCA0NzQ0LFxuICA0NzQ2LCA0NzQ5LCA0NzUyLCA0Nzg0LCA0Nzg2LCA0Nzg5LCA0NzkyLCA0Nzk4LCA0ODAwLCA0ODAwLCA0ODAyLCA0ODA1LCA0ODA4LFxuICA0ODIyLCA0ODI0LCA0ODgwLCA0ODgyLCA0ODg1LCA0ODg4LCA0OTU0LCA0OTU3LCA0OTU5LCA0OTkyLCA1MDA3LCA1MDI0LCA1MTA4LFxuICA1MTIxLCA1NzQwLCA1NzQzLCA1NzU5LCA1NzYxLCA1Nzg2LCA1NzkyLCA1ODY2LCA1ODcwLCA1ODcyLCA1ODg4LCA1OTAwLCA1OTAyLFxuICA1OTA4LCA1OTIwLCA1OTQwLCA1OTUyLCA1OTcxLCA1OTg0LCA1OTk2LCA1OTk4LCA2MDAwLCA2MDAyLCA2MDAzLCA2MDE2LCA2MDk5LFxuICA2MTAzLCA2MTAzLCA2MTA4LCA2MTA5LCA2MTEyLCA2MTIxLCA2MTU1LCA2MTU3LCA2MTYwLCA2MTY5LCA2MTc2LCA2MjYzLCA2MjcyLFxuICA2MzE0LCA2MzIwLCA2Mzg5LCA2NDAwLCA2NDI4LCA2NDMyLCA2NDQzLCA2NDQ4LCA2NDU5LCA2NDcwLCA2NTA5LCA2NTEyLCA2NTE2LFxuICA2NTI4LCA2NTcxLCA2NTc2LCA2NjAxLCA2NjA4LCA2NjE3LCA2NjU2LCA2NjgzLCA2Njg4LCA2NzUwLCA2NzUyLCA2NzgwLCA2NzgzLFxuICA2NzkzLCA2ODAwLCA2ODA5LCA2ODIzLCA2ODIzLCA2OTEyLCA2OTg3LCA2OTkyLCA3MDAxLCA3MDE5LCA3MDI3LCA3MDQwLCA3MTU1LFxuICA3MTY4LCA3MjIzLCA3MjMyLCA3MjQxLCA3MjQ1LCA3MjkzLCA3Mzc2LCA3Mzc4LCA3MzgwLCA3NDE0LCA3NDI0LCA3NjU0LCA3Njc2LFxuICA3OTU3LCA3OTYwLCA3OTY1LCA3OTY4LCA4MDA1LCA4MDA4LCA4MDEzLCA4MDE2LCA4MDIzLCA4MDI1LCA4MDI1LCA4MDI3LCA4MDI3LFxuICA4MDI5LCA4MDI5LCA4MDMxLCA4MDYxLCA4MDY0LCA4MTE2LCA4MTE4LCA4MTI0LCA4MTI2LCA4MTI2LCA4MTMwLCA4MTMyLCA4MTM0LFxuICA4MTQwLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTU1LCA4MTYwLCA4MTcyLCA4MTc4LCA4MTgwLCA4MTgyLCA4MTg4LCA4MjA0LCA4MjA1LFxuICA4MjU1LCA4MjU2LCA4Mjc2LCA4Mjc2LCA4MzA1LCA4MzA1LCA4MzE5LCA4MzE5LCA4MzM2LCA4MzQ4LCA4NDAwLCA4NDEyLCA4NDE3LFxuICA4NDE3LCA4NDIxLCA4NDMyLCA4NDUwLCA4NDUwLCA4NDU1LCA4NDU1LCA4NDU4LCA4NDY3LCA4NDY5LCA4NDY5LCA4NDczLCA4NDc3LFxuICA4NDg0LCA4NDg0LCA4NDg2LCA4NDg2LCA4NDg4LCA4NDg4LCA4NDkwLCA4NDkzLCA4NDk1LCA4NTA1LCA4NTA4LCA4NTExLCA4NTE3LFxuICA4NTIxLCA4NTI2LCA4NTI2LCA4NTQ0LCA4NTg0LFxuICAxMTI2NCwgMTEzMTAsIDExMzEyLCAxMTM1OCwgMTEzNjAsIDExNDkyLCAxMTQ5OSwgMTE1MDcsIDExNTIwLCAxMTU1NywgMTE1NTksXG4gIDExNTU5LCAxMTU2NSwgMTE1NjUsIDExNTY4LCAxMTYyMywgMTE2MzEsIDExNjMxLCAxMTY0NywgMTE2NzAsIDExNjgwLCAxMTY4NixcbiAgMTE2ODgsIDExNjk0LCAxMTY5NiwgMTE3MDIsIDExNzA0LCAxMTcxMCwgMTE3MTIsIDExNzE4LCAxMTcyMCwgMTE3MjYsIDExNzI4LFxuICAxMTczNCwgMTE3MzYsIDExNzQyLCAxMTc0NCwgMTE3NzUsIDExODIzLCAxMTgyMywgMTIyOTMsIDEyMjk1LCAxMjMyMSwgMTIzMzUsXG4gIDEyMzM3LCAxMjM0MSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTI0MzgsIDEyNDQxLCAxMjQ0MiwgMTI0NDUsIDEyNDQ3LCAxMjQ0OSxcbiAgMTI1MzgsIDEyNTQwLCAxMjU0MywgMTI1NDksIDEyNTg5LCAxMjU5MywgMTI2ODYsIDEyNzA0LCAxMjczMCwgMTI3ODQsIDEyNzk5LFxuICAxMzMxMiwgMTk4OTMsIDE5OTY4LCA0MDkwOCwgNDA5NjAsIDQyMTI0LCA0MjE5MiwgNDIyMzcsIDQyMjQwLCA0MjUwOCwgNDI1MTIsXG4gIDQyNTM5LCA0MjU2MCwgNDI2MDcsIDQyNjEyLCA0MjYyMSwgNDI2MjMsIDQyNjQ3LCA0MjY1NSwgNDI3MzcsIDQyNzc1LCA0Mjc4MyxcbiAgNDI3ODYsIDQyODg4LCA0Mjg5MSwgNDI4OTQsIDQyODk2LCA0Mjg5OSwgNDI5MTIsIDQyOTIyLCA0MzAwMCwgNDMwNDcsIDQzMDcyLFxuICA0MzEyMywgNDMxMzYsIDQzMjA0LCA0MzIxNiwgNDMyMjUsIDQzMjMyLCA0MzI1NSwgNDMyNTksIDQzMjU5LCA0MzI2NCwgNDMzMDksXG4gIDQzMzEyLCA0MzM0NywgNDMzNjAsIDQzMzg4LCA0MzM5MiwgNDM0NTYsIDQzNDcxLCA0MzQ4MSwgNDM1MjAsIDQzNTc0LCA0MzU4NCxcbiAgNDM1OTcsIDQzNjAwLCA0MzYwOSwgNDM2MTYsIDQzNjM4LCA0MzY0MiwgNDM2NDMsIDQzNjQ4LCA0MzcxNCwgNDM3MzksIDQzNzQxLFxuICA0Mzc0NCwgNDM3NTksIDQzNzYyLCA0Mzc2NiwgNDM3NzcsIDQzNzgyLCA0Mzc4NSwgNDM3OTAsIDQzNzkzLCA0Mzc5OCwgNDM4MDgsXG4gIDQzODE0LCA0MzgxNiwgNDM4MjIsIDQzOTY4LCA0NDAxMCwgNDQwMTIsIDQ0MDEzLCA0NDAxNiwgNDQwMjUsIDQ0MDMyLCA1NTIwMyxcbiAgNTUyMTYsIDU1MjM4LCA1NTI0MywgNTUyOTEsIDYzNzQ0LCA2NDEwOSwgNjQxMTIsIDY0MjE3LCA2NDI1NiwgNjQyNjIsIDY0Mjc1LFxuICA2NDI3OSwgNjQyODUsIDY0Mjk2LCA2NDI5OCwgNjQzMTAsIDY0MzEyLCA2NDMxNiwgNjQzMTgsIDY0MzE4LCA2NDMyMCwgNjQzMjEsXG4gIDY0MzIzLCA2NDMyNCwgNjQzMjYsIDY0NDMzLCA2NDQ2NywgNjQ4MjksIDY0ODQ4LCA2NDkxMSwgNjQ5MTQsIDY0OTY3LCA2NTAwOCxcbiAgNjUwMTksIDY1MDI0LCA2NTAzOSwgNjUwNTYsIDY1MDYyLCA2NTA3NSwgNjUwNzYsIDY1MTAxLCA2NTEwMywgNjUxMzYsIDY1MTQwLFxuICA2NTE0MiwgNjUyNzYsIDY1Mjk2LCA2NTMwNSwgNjUzMTMsIDY1MzM4LCA2NTM0MywgNjUzNDMsIDY1MzQ1LCA2NTM3MCwgNjUzODIsXG4gIDY1NDcwLCA2NTQ3NCwgNjU0NzksIDY1NDgyLCA2NTQ4NywgNjU0OTAsIDY1NDk1LCA2NTQ5OCwgNjU1MDAsXG5dO1xuXG5mdW5jdGlvbiBsb29rdXBJblVuaWNvZGVNYXAoY29kZTogdTE2LCBtYXA6IHUxNltdKTogYm9vbCB7XG4gIGlmIChjb2RlIDwgbWFwWzBdKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGxvID0gMDtcbiAgdmFyIGhpID0gbWFwLmxlbmd0aDtcbiAgdmFyIG1pZDogaTMyO1xuICB2YXIgbWlkVmFsOiB1MTY7XG5cbiAgd2hpbGUgKGxvICsgMSA8IGhpKSB7XG4gICAgbWlkID0gbG8gKyAoKGhpIC0gbG8pID4+IDEpO1xuICAgIG1pZCAtPSAobWlkICYgMSk7XG4gICAgbWlkVmFsID0gbWFwW21pZF07XG4gICAgaWYgKG1pZFZhbCA8PSBjb2RlICYmIGNvZGUgPD0gbWFwW21pZCArIDFdKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPCBtaWRWYWwpIHtcbiAgICAgIGhpID0gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBsbyA9IG1pZCArIDI7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGNvZGU6IGkzMik6IGJvb2wge1xuICByZXR1cm4gY29kZSA8IDAgfHwgY29kZSA+IDB4ZmZmZiA/IGZhbHNlXG4gICAgICAgOiBsb29rdXBJblVuaWNvZGVNYXAoY29kZSBhcyB1MTYsIHVuaWNvZGVJZGVudGlmaWVyU3RhcnQpO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVJZGVudGlmaWVyUGFydChjb2RlOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGNvZGUgPCAwIHx8IGNvZGUgPiAweGZmZmYgPyBmYWxzZVxuICAgICAgIDogbG9va3VwSW5Vbmljb2RlTWFwKGNvZGUgYXMgdTE2LCB1bmljb2RlSWRlbnRpZmllclBhcnQpO1xufVxuIl19 + +/***/ }), + +/***/ "../src/util/collections.ts": +/*!**********************************!*\ + !*** ../src/util/collections.ts ***! + \**********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __values = (this && this.__values) || function (o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; +}; +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +function makeArray(original) { + if (original === void 0) { original = null; } + if (original) { + var cloned = new Array(original.length); + for (var i = 0, k = original.length; i < k; ++i) + unchecked(cloned[i] = original[i]); + return cloned; + } + return new Array(); +} +exports.makeArray = makeArray; +function makeSet(original) { + var e_1, _a; + if (original === void 0) { original = null; } + if (original) { + var cloned = new Set(); + try { + for (var original_1 = __values(original), original_1_1 = original_1.next(); !original_1_1.done; original_1_1 = original_1.next()) { + var v = original_1_1.value; + cloned.add(v); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (original_1_1 && !original_1_1.done && (_a = original_1.return)) _a.call(original_1); + } + finally { if (e_1) throw e_1.error; } + } + return cloned; + } + return new Set(); +} +exports.makeSet = makeSet; +function makeMap(original, overrides) { + var e_2, _a, e_3, _b, e_4, _c; + if (original === void 0) { original = null; } + if (overrides === void 0) { overrides = null; } + var cloned = new Map(); + if (original) { + try { + for (var original_2 = __values(original), original_2_1 = original_2.next(); !original_2_1.done; original_2_1 = original_2.next()) { + var _d = __read(original_2_1.value, 2), k = _d[0], v = _d[1]; + cloned.set(k, v); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (original_2_1 && !original_2_1.done && (_a = original_2.return)) _a.call(original_2); + } + finally { if (e_2) throw e_2.error; } + } + if (overrides) + try { + for (var overrides_1 = __values(overrides), overrides_1_1 = overrides_1.next(); !overrides_1_1.done; overrides_1_1 = overrides_1.next()) { + var _e = __read(overrides_1_1.value, 2), k = _e[0], v = _e[1]; + cloned.set(k, v); + } + } + catch (e_3_1) { e_3 = { error: e_3_1 }; } + finally { + try { + if (overrides_1_1 && !overrides_1_1.done && (_b = overrides_1.return)) _b.call(overrides_1); + } + finally { if (e_3) throw e_3.error; } + } + } + else if (overrides) { + try { + for (var overrides_2 = __values(overrides), overrides_2_1 = overrides_2.next(); !overrides_2_1.done; overrides_2_1 = overrides_2.next()) { + var _f = __read(overrides_2_1.value, 2), k = _f[0], v = _f[1]; + cloned.set(k, v); + } + } + catch (e_4_1) { e_4 = { error: e_4_1 }; } + finally { + try { + if (overrides_2_1 && !overrides_2_1.done && (_c = overrides_2.return)) _c.call(overrides_2); + } + finally { if (e_4) throw e_4.error; } + } + } + return cloned; +} +exports.makeMap = makeMap; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9jb2xsZWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBZ0IsU0FBUyxDQUFJLFFBQWdDO0lBQWhDLHlCQUFBLEVBQUEsZUFBZ0M7SUFDM0QsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLElBQUksS0FBSyxFQUFLLENBQUM7QUFDeEIsQ0FBQztBQVBELDhCQU9DO0FBRUQsU0FBZ0IsT0FBTyxDQUFJLFFBQThCOztJQUE5Qix5QkFBQSxFQUFBLGVBQThCO0lBQ3ZELElBQUksUUFBUSxFQUFFO1FBQ1osSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUssQ0FBQzs7WUFDMUIsS0FBYyxJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQWpCLElBQUksQ0FBQyxxQkFBQTtnQkFBYyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQUE7Ozs7Ozs7OztRQUN0QyxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQ0QsT0FBTyxJQUFJLEdBQUcsRUFBSyxDQUFDO0FBQ3RCLENBQUM7QUFQRCwwQkFPQztBQUVELFNBQWdCLE9BQU8sQ0FBTSxRQUFnQyxFQUFFLFNBQWlDOztJQUFuRSx5QkFBQSxFQUFBLGVBQWdDO0lBQUUsMEJBQUEsRUFBQSxnQkFBaUM7SUFDOUYsSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQU8sQ0FBQztJQUM1QixJQUFJLFFBQVEsRUFBRTs7WUFDWixLQUFtQixJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQWxCLElBQUEsa0NBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFBZSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUFBOzs7Ozs7Ozs7UUFDOUMsSUFBSSxTQUFTOztnQkFBRSxLQUFtQixJQUFBLGNBQUEsU0FBQSxTQUFTLENBQUEsb0NBQUE7b0JBQW5CLElBQUEsbUNBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztvQkFBZ0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQUE7Ozs7Ozs7O2FBQUE7S0FDL0Q7U0FBTSxJQUFJLFNBQVMsRUFBRTs7WUFDcEIsS0FBbUIsSUFBQSxjQUFBLFNBQUEsU0FBUyxDQUFBLG9DQUFBO2dCQUFuQixJQUFBLG1DQUFNLEVBQUwsU0FBQyxFQUFFLFNBQUM7Z0JBQWdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQUE7Ozs7Ozs7OztLQUNoRDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFURCwwQkFTQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBtYWtlQXJyYXk8Vj4ob3JpZ2luYWw6IEFycmF5PFY+IHwgbnVsbCA9IG51bGwpOiBBcnJheTxWPiB7XG4gIGlmIChvcmlnaW5hbCkge1xuICAgIGxldCBjbG9uZWQgPSBuZXcgQXJyYXk8Vj4ob3JpZ2luYWwubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMCwgayA9IG9yaWdpbmFsLmxlbmd0aDsgaSA8IGs7ICsraSkgdW5jaGVja2VkKGNsb25lZFtpXSA9IG9yaWdpbmFsW2ldKTtcbiAgICByZXR1cm4gY2xvbmVkO1xuICB9XG4gIHJldHVybiBuZXcgQXJyYXk8Vj4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VTZXQ8Vj4ob3JpZ2luYWw6IFNldDxWPiB8IG51bGwgPSBudWxsKTogU2V0PFY+IHtcbiAgaWYgKG9yaWdpbmFsKSB7XG4gICAgbGV0IGNsb25lZCA9IG5ldyBTZXQ8Vj4oKTtcbiAgICBmb3IgKGxldCB2IG9mIG9yaWdpbmFsKSBjbG9uZWQuYWRkKHYpO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cbiAgcmV0dXJuIG5ldyBTZXQ8Vj4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VNYXA8SyxWPihvcmlnaW5hbDogTWFwPEssVj4gfCBudWxsID0gbnVsbCwgb3ZlcnJpZGVzOiBNYXA8SyxWPiB8IG51bGwgPSBudWxsKTogTWFwPEssVj4ge1xuICB2YXIgY2xvbmVkID0gbmV3IE1hcDxLLFY+KCk7XG4gIGlmIChvcmlnaW5hbCkge1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiBvcmlnaW5hbCkgY2xvbmVkLnNldChrLCB2KTtcbiAgICBpZiAob3ZlcnJpZGVzKSBmb3IgKGxldCBbaywgdl0gb2Ygb3ZlcnJpZGVzKSBjbG9uZWQuc2V0KGssIHYpO1xuICB9IGVsc2UgaWYgKG92ZXJyaWRlcykge1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiBvdmVycmlkZXMpIGNsb25lZC5zZXQoaywgdik7XG4gIH1cbiAgcmV0dXJuIGNsb25lZDtcbn1cbiJdfQ== + +/***/ }), + +/***/ "../src/util/index.ts": +/*!****************************!*\ + !*** ../src/util/index.ts ***! + \****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Various compiler utilities. + * @module util + * @preferred + */ /***/ +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", { value: true }); +__export(__webpack_require__(/*! ./bitset */ "../src/util/bitset.ts")); +__export(__webpack_require__(/*! ./charcode */ "../src/util/charcode.ts")); +__export(__webpack_require__(/*! ./collections */ "../src/util/collections.ts")); +__export(__webpack_require__(/*! ./path */ "../src/util/path.ts")); +__export(__webpack_require__(/*! ./text */ "../src/util/text.ts")); +__export(__webpack_require__(/*! ./binary */ "../src/util/binary.ts")); +/** Tests if `x` is a power of two. */ +function isPowerOf2(x) { + return x != 0 && (x & (x - 1)) == 0; +} +exports.isPowerOf2 = isPowerOf2; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRyxDQUFBLEtBQUs7Ozs7O0FBRVIsOEJBQXlCO0FBQ3pCLGdDQUEyQjtBQUMzQixtQ0FBOEI7QUFDOUIsNEJBQXVCO0FBQ3ZCLDRCQUF1QjtBQUN2Qiw4QkFBeUI7QUFFekIsc0NBQXNDO0FBQ3RDLFNBQWdCLFVBQVUsQ0FBQyxDQUFNO0lBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsZ0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZhcmlvdXMgY29tcGlsZXIgdXRpbGl0aWVzLlxuICogQG1vZHVsZSB1dGlsXG4gKiBAcHJlZmVycmVkXG4gKi8vKioqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9iaXRzZXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NoYXJjb2RlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb2xsZWN0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGF0aFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmluYXJ5XCI7XG5cbi8qKiBUZXN0cyBpZiBgeGAgaXMgYSBwb3dlciBvZiB0d28uICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb3dlck9mMih4OiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIHggIT0gMCAmJiAoeCAmICh4IC0gMSkpID09IDA7XG59XG4iXX0= + +/***/ }), + +/***/ "../src/util/path.ts": +/*!***************************!*\ + !*** ../src/util/path.ts ***! + \***************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** @module util */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +var common_1 = __webpack_require__(/*! ../common */ "../src/common.ts"); +var separator = 47 /* SLASH */; +/** + * Normalizes the specified path, removing interior placeholders. + * Expects a posix-compatible relative path (not Windows compatible). + */ +function normalizePath(path) { + var pos = 0; + var len = path.length; + // trim leading './' + while (pos + 1 < len && + path.charCodeAt(pos) == 46 /* DOT */ && + path.charCodeAt(pos + 1) == separator) { + pos += 2; + } + if (pos > 0 || len < path.length) { + path = path.substring(pos, len); + len -= pos; + pos = 0; + } + var atEnd; + while (pos + 1 < len) { + atEnd = false; + // we are only interested in '/.' sequences ... + if (path.charCodeAt(pos) == separator && + path.charCodeAt(pos + 1) == 46 /* DOT */) { + // '/.' ( '/' | $ ) + atEnd = pos + 2 == len; + if (atEnd || + pos + 2 < len && + path.charCodeAt(pos + 2) == separator) { + path = atEnd + ? path.substring(0, pos) + : path.substring(0, pos) + path.substring(pos + 2); + len -= 2; + continue; + } + // '/.' ( './' | '.' $ ) + atEnd = pos + 3 == len; + if (atEnd && path.charCodeAt(pos + 2) == 46 /* DOT */ || + pos + 3 < len && + path.charCodeAt(pos + 2) == 46 /* DOT */ && + path.charCodeAt(pos + 3) == separator) { + // find preceeding '/' + var ipos = pos; + while (--ipos >= 0) { + if (path.charCodeAt(ipos) == separator) { + if (pos - ipos != 3 || + path.charCodeAt(ipos + 1) != 46 /* DOT */ || + path.charCodeAt(ipos + 2) != 46 /* DOT */) { // exclude '..' itself + path = atEnd + ? path.substring(0, ipos) + : path.substring(0, ipos) + path.substring(pos + 3); + len -= pos + 3 - ipos; + pos = ipos - 1; // incremented again at end of loop + } + break; + } + } + // if there's no preceeding '/', trim start if non-empty + if (ipos < 0 && pos > 0) { + if (pos != 2 || + path.charCodeAt(0) != 46 /* DOT */ || + path.charCodeAt(1) != 46 /* DOT */) { // exclude '..' itself + path = path.substring(pos + 4); + len = path.length; + continue; + } + } + } + } + pos++; + } + return len > 0 ? path : "."; +} +exports.normalizePath = normalizePath; +/** Resolves the specified path relative to the specified origin. */ +function resolvePath(normalizedPath, origin) { + if (normalizedPath.startsWith("std/")) { + return normalizedPath; + } + return normalizePath(dirname(origin) + common_1.PATH_DELIMITER + normalizedPath); +} +exports.resolvePath = resolvePath; +/** Obtains the directory portion of a normalized path. */ +function dirname(normalizedPath) { + var pos = normalizedPath.length; + if (pos <= 1) { + if (pos == 0) + return "."; + if (normalizedPath.charCodeAt(0) == separator) { + return normalizedPath; + } + } + while (--pos > 0) { + if (normalizedPath.charCodeAt(pos) == separator) { + return normalizedPath.substring(0, pos); + } + } + return "."; +} +exports.dirname = dirname; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQixDQUFBLEtBQUs7O0FBTXhCLG9DQUVtQjtBQUVuQixJQUFNLFNBQVMsaUJBQWlCLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLElBQVk7SUFDeEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUV0QixvQkFBb0I7SUFDcEIsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsRUFDckM7UUFDQSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ1Y7SUFFRCxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDaEMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDWCxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQ1Q7SUFFRCxJQUFJLEtBQVcsQ0FBQztJQUNoQixPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFO1FBQ3BCLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFZCwrQ0FBK0M7UUFDL0MsSUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUN4QztZQUNBLG1CQUFtQjtZQUNuQixLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMs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QUM7S0FDdkI7SUFDRCxPQUFPLGFBQWEsQ0FDbEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLHVCQUFjLEdBQUcsY0FBYyxDQUNsRCxDQUFDO0FBQ0osQ0FBQztBQVBELGtDQU9DO0FBRUQsMERBQTBEO0FBQzFELFNBQWdCLE9BQU8sQ0FBQyxjQUFzQjtJQUM1QyxJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtRQUNaLElBQUksR0FBRyxJQUFJLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUN6QixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQzdDLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO0tBQ0Y7SUFDRCxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRTtRQUNoQixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQy9DLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDekM7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQWRELDBCQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgdXRpbCAqLy8qKiovXG5cbmltcG9ydCB7XG4gIENoYXJDb2RlXG59IGZyb20gXCIuL2NoYXJjb2RlXCI7XG5cbmltcG9ydCB7XG4gIFBBVEhfREVMSU1JVEVSXG59IGZyb20gXCIuLi9jb21tb25cIjtcblxuY29uc3Qgc2VwYXJhdG9yID0gQ2hhckNvZGUuU0xBU0g7XG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgc3BlY2lmaWVkIHBhdGgsIHJlbW92aW5nIGludGVyaW9yIHBsYWNlaG9sZGVycy5cbiAqIEV4cGVjdHMgYSBwb3NpeC1jb21wYXRpYmxlIHJlbGF0aXZlIHBhdGggKG5vdCBXaW5kb3dzIGNvbXBhdGlibGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcG9zID0gMDtcbiAgdmFyIGxlbiA9IHBhdGgubGVuZ3RoO1xuXG4gIC8vIHRyaW0gbGVhZGluZyAnLi8nXG4gIHdoaWxlIChwb3MgKyAxIDwgbGVuICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gQ2hhckNvZGUuRE9UICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDEpID09IHNlcGFyYXRvclxuICApIHtcbiAgICBwb3MgKz0gMjtcbiAgfVxuXG4gIGlmIChwb3MgPiAwIHx8IGxlbiA8IHBhdGgubGVuZ3RoKSB7XG4gICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBvcywgbGVuKTtcbiAgICBsZW4gLT0gcG9zO1xuICAgIHBvcyA9IDA7XG4gIH1cblxuICB2YXIgYXRFbmQ6IGJvb2w7XG4gIHdoaWxlIChwb3MgKyAxIDwgbGVuKSB7XG4gICAgYXRFbmQgPSBmYWxzZTtcblxuICAgIC8vIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gJy8uJyBzZXF1ZW5jZXMgLi4uXG4gICAgaWYgKFxuICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gc2VwYXJhdG9yICYmXG4gICAgICBwYXRoLmNoYXJDb2RlQXQocG9zICsgMSkgPT0gQ2hhckNvZGUuRE9UXG4gICAgKSB7XG4gICAgICAvLyAnLy4nICggJy8nIHwgJCApXG4gICAgICBhdEVuZCA9IHBvcyArIDIgPT0gbGVuO1xuICAgICAgaWYgKGF0RW5kIHx8XG4gICAgICAgIHBvcyArIDIgPCBsZW4gJiZcbiAgICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDIpID09IHNlcGFyYXRvclxuICAgICAgKSB7XG4gICAgICAgIHBhdGggPSBhdEVuZFxuICAgICAgICAgID8gcGF0aC5zdWJzdHJpbmcoMCwgcG9zKVxuICAgICAgICAgIDogcGF0aC5zdWJzdHJpbmcoMCwgcG9zKSArIHBhdGguc3Vic3RyaW5nKHBvcyArIDIpO1xuICAgICAgICBsZW4gLT0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vICcvLicgKCAnLi8nIHwgJy4nICQgKVxuICAgICAgYXRFbmQgPSBwb3MgKyAzID09IGxlbjtcbiAgICAgIGlmIChhdEVuZCAmJiBwYXRoLmNoYXJDb2RlQXQocG9zICsgMikgPT0gQ2hhckNvZGUuRE9UIHx8XG4gICAgICAgIHBvcyArIDMgPCBsZW4gJiZcbiAgICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDIpID09IENoYXJDb2RlLkRPVCAmJlxuICAgICAgICBwYXRoLmNoYXJDb2RlQXQocG9zICsgMykgPT0gc2VwYXJhdG9yXG4gICAgICApIHtcbiAgICAgICAgLy8gZmluZCBwcmVjZWVkaW5nICcvJ1xuICAgICAgICBsZXQgaXBvcyA9IHBvcztcbiAgICAgICAgd2hpbGUgKC0taXBvcyA+PSAwKSB7XG4gICAgICAgICAgaWYgKHBhdGguY2hhckNvZGVBdChpcG9zKSA9PSBzZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGlmIChwb3MgLSBpcG9zICE9IDMgfHxcbiAgICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KGlwb3MgKyAxKSAhPSBDaGFyQ29kZS5ET1QgfHxcbiAgICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KGlwb3MgKyAyKSAhPSBDaGFyQ29kZS5ET1RcbiAgICAgICAgICAgICkgeyAvLyBleGNsdWRlICcuLicgaXRzZWxmXG4gICAgICAgICAgICAgIHBhdGggPSBhdEVuZFxuICAgICAgICAgICAgICAgID8gcGF0aC5zdWJzdHJpbmcoMCwgaXBvcylcbiAgICAgICAgICAgICAgICA6IHBhdGguc3Vic3RyaW5nKDAsIGlwb3MpICsgcGF0aC5zdWJzdHJpbmcocG9zICsgMyk7XG4gICAgICAgICAgICAgIGxlbiAtPSBwb3MgKyAzIC0gaXBvcztcbiAgICAgICAgICAgICAgcG9zID0gaXBvcyAtIDE7IC8vIGluY3JlbWVudGVkIGFnYWluIGF0IGVuZCBvZiBsb29wXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGVyZSdzIG5vIHByZWNlZWRpbmcgJy8nLCB0cmltIHN0YXJ0IGlmIG5vbi1lbXB0eVxuICAgICAgICBpZiAoaXBvcyA8IDAgJiYgcG9zID4gMCkge1xuICAgICAgICAgIGlmIChwb3MgIT0gMiB8fFxuICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KDApICE9IENoYXJDb2RlLkRPVCB8fFxuICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KDEpICE9IENoYXJDb2RlLkRPVFxuICAgICAgICAgICkgeyAvLyBleGNsdWRlICcuLicgaXRzZWxmXG4gICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocG9zICsgNCk7XG4gICAgICAgICAgICBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBwb3MrKztcbiAgfVxuICByZXR1cm4gbGVuID4gMCA/IHBhdGggOiBcIi5cIjtcbn1cblxuLyoqIFJlc29sdmVzIHRoZSBzcGVjaWZpZWQgcGF0aCByZWxhdGl2ZSB0byB0aGUgc3BlY2lmaWVkIG9yaWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGF0aChub3JtYWxpemVkUGF0aDogc3RyaW5nLCBvcmlnaW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKFwic3RkL1wiKSkge1xuICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplUGF0aChcbiAgICBkaXJuYW1lKG9yaWdpbikgKyBQQVRIX0RFTElNSVRFUiArIG5vcm1hbGl6ZWRQYXRoXG4gICk7XG59XG5cbi8qKiBPYnRhaW5zIHRoZSBkaXJlY3RvcnkgcG9ydGlvbiBvZiBhIG5vcm1hbGl6ZWQgcGF0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcG9zID0gbm9ybWFsaXplZFBhdGgubGVuZ3RoO1xuICBpZiAocG9zIDw9IDEpIHtcbiAgICBpZiAocG9zID09IDApIHJldHVybiBcIi5cIjtcbiAgICBpZiAobm9ybWFsaXplZFBhdGguY2hhckNvZGVBdCgwKSA9PSBzZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKC0tcG9zID4gMCkge1xuICAgIGlmIChub3JtYWxpemVkUGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gc2VwYXJhdG9yKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplZFBhdGguc3Vic3RyaW5nKDAsIHBvcyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBcIi5cIjtcbn1cbiJdfQ== + +/***/ }), + +/***/ "../src/util/text.ts": +/*!***************************!*\ + !*** ../src/util/text.ts ***! + \***************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** @module util */ /***/ +Object.defineProperty(exports, "__esModule", { value: true }); +var indentX1 = " "; +var indentX2 = " "; +var indentX4 = " "; +/** Creates an indentation matching the number of specified levels. */ +function indent(sb, level) { + while (level >= 4) { + sb.push(indentX4); + level -= 4; + } + if (level >= 2) { + sb.push(indentX2); + level -= 2; + } + if (level) { + sb.push(indentX1); + } +} +exports.indent = indent; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3RleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQixDQUFBLEtBQUs7O0FBRXhCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QixJQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFDeEIsSUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBRTVCLHNFQUFzRTtBQUN0RSxTQUFnQixNQUFNLENBQUMsRUFBWSxFQUFFLEtBQVU7SUFDN0MsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2pCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEIsS0FBSyxJQUFJLENBQUMsQ0FBQztLQUNaO0lBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2QsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQixLQUFLLElBQUksQ0FBQyxDQUFDO0tBQ1o7SUFDRCxJQUFJLEtBQUssRUFBRTtRQUNULEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbkI7QUFDSCxDQUFDO0FBWkQsd0JBWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuY29uc3QgaW5kZW50WDEgPSBcIiAgXCI7XG5jb25zdCBpbmRlbnRYMiA9IFwiICAgIFwiO1xuY29uc3QgaW5kZW50WDQgPSBcIiAgICAgICAgXCI7XG5cbi8qKiBDcmVhdGVzIGFuIGluZGVudGF0aW9uIG1hdGNoaW5nIHRoZSBudW1iZXIgb2Ygc3BlY2lmaWVkIGxldmVscy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRlbnQoc2I6IHN0cmluZ1tdLCBsZXZlbDogaTMyKTogdm9pZCB7XG4gIHdoaWxlIChsZXZlbCA+PSA0KSB7XG4gICAgc2IucHVzaChpbmRlbnRYNCk7XG4gICAgbGV2ZWwgLT0gNDtcbiAgfVxuICBpZiAobGV2ZWwgPj0gMikge1xuICAgIHNiLnB1c2goaW5kZW50WDIpO1xuICAgIGxldmVsIC09IDI7XG4gIH1cbiAgaWYgKGxldmVsKSB7XG4gICAgc2IucHVzaChpbmRlbnRYMSk7XG4gIH1cbn1cbiJdfQ== + +/***/ }), + +/***/ "../std/assembly/shared/feature.ts": +/*!*****************************************!*\ + !*** ../std/assembly/shared/feature.ts ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// This file is shared with the compiler and must remain portable +Object.defineProperty(exports, "__esModule", { value: true }); +/** Indicates specific features to activate. */ +var Feature; +(function (Feature) { + /** No additional features. */ + Feature[Feature["NONE"] = 0] = "NONE"; + /** Sign extension operations. */ + Feature[Feature["SIGN_EXTENSION"] = 1] = "SIGN_EXTENSION"; + /** Mutable global imports and exports. */ + Feature[Feature["MUTABLE_GLOBAL"] = 2] = "MUTABLE_GLOBAL"; + /** Bulk memory operations. */ + Feature[Feature["BULK_MEMORY"] = 4] = "BULK_MEMORY"; + /** SIMD types and operations. */ + Feature[Feature["SIMD"] = 8] = "SIMD"; + /** Threading and atomic operations. */ + Feature[Feature["THREADS"] = 16] = "THREADS"; // see: https://github.com/WebAssembly/threads +})(Feature = exports.Feature || (exports.Feature = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3N0ZC9hc3NlbWJseS9zaGFyZWQvZmVhdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUVBQWlFOztBQUVqRSwrQ0FBK0M7QUFDL0MsSUFBa0IsT0FhakI7QUFiRCxXQUFrQixPQUFPO0lBQ3ZCLDhCQUE4QjtJQUM5QixxQ0FBUSxDQUFBO0lBQ1IsaUNBQWlDO0lBQ2pDLHlEQUF1QixDQUFBO0lBQ3ZCLDBDQUEwQztJQUMxQyx5REFBdUIsQ0FBQTtJQUN2Qiw4QkFBOEI7SUFDOUIsbURBQW9CLENBQUE7SUFDcEIsaUNBQWlDO0lBQ2pDLHFDQUFhLENBQUE7SUFDYix1Q0FBdUM7SUFDdkMsNENBQWdCLENBQUEsQ0FBQyw4Q0FBOEM7QUFDakUsQ0FBQyxFQWJpQixPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFheEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgc2hhcmVkIHdpdGggdGhlIGNvbXBpbGVyIGFuZCBtdXN0IHJlbWFpbiBwb3J0YWJsZVxuXG4vKiogSW5kaWNhdGVzIHNwZWNpZmljIGZlYXR1cmVzIHRvIGFjdGl2YXRlLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gRmVhdHVyZSB7XG4gIC8qKiBObyBhZGRpdGlvbmFsIGZlYXR1cmVzLiAqL1xuICBOT05FID0gMCxcbiAgLyoqIFNpZ24gZXh0ZW5zaW9uIG9wZXJhdGlvbnMuICovXG4gIFNJR05fRVhURU5TSU9OID0gMSA8PCAwLCAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9zaWduLWV4dGVuc2lvbi1vcHNcbiAgLyoqIE11dGFibGUgZ2xvYmFsIGltcG9ydHMgYW5kIGV4cG9ydHMuICovXG4gIE1VVEFCTEVfR0xPQkFMID0gMSA8PCAxLCAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9tdXRhYmxlLWdsb2JhbFxuICAvKiogQnVsayBtZW1vcnkgb3BlcmF0aW9ucy4gKi9cbiAgQlVMS19NRU1PUlkgPSAxIDw8IDIsIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2J1bGstbWVtb3J5LW9wZXJhdGlvbnNcbiAgLyoqIFNJTUQgdHlwZXMgYW5kIG9wZXJhdGlvbnMuICovXG4gIFNJTUQgPSAxIDw8IDMsIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L3NpbWRcbiAgLyoqIFRocmVhZGluZyBhbmQgYXRvbWljIG9wZXJhdGlvbnMuICovXG4gIFRIUkVBRFMgPSAxIDw8IDQgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvdGhyZWFkc1xufVxuIl19 + +/***/ }), + +/***/ "../std/assembly/shared/target.ts": +/*!****************************************!*\ + !*** ../std/assembly/shared/target.ts ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// This file is shared with the compiler and must remain portable +Object.defineProperty(exports, "__esModule", { value: true }); +/** Compilation target. */ +var Target; +(function (Target) { + /** WebAssembly with 32-bit pointers. */ + Target[Target["WASM32"] = 0] = "WASM32"; + /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */ + Target[Target["WASM64"] = 1] = "WASM64"; + /** Portable. */ + Target[Target["JS"] = 2] = "JS"; +})(Target = exports.Target || (exports.Target = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3RkL2Fzc2VtYmx5L3NoYXJlZC90YXJnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlFQUFpRTs7QUFFakUsMEJBQTBCO0FBQzFCLElBQVksTUFPWDtBQVBELFdBQVksTUFBTTtJQUNoQix3Q0FBd0M7SUFDeEMsdUNBQU0sQ0FBQTtJQUNOLDJGQUEyRjtJQUMzRix1Q0FBTSxDQUFBO0lBQ04sZ0JBQWdCO0lBQ2hCLCtCQUFFLENBQUE7QUFDSixDQUFDLEVBUFcsTUFBTSxHQUFOLGNBQU0sS0FBTixjQUFNLFFBT2pCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIHNoYXJlZCB3aXRoIHRoZSBjb21waWxlciBhbmQgbXVzdCByZW1haW4gcG9ydGFibGVcblxuLyoqIENvbXBpbGF0aW9uIHRhcmdldC4gKi9cbmV4cG9ydCBlbnVtIFRhcmdldCB7XG4gIC8qKiBXZWJBc3NlbWJseSB3aXRoIDMyLWJpdCBwb2ludGVycy4gKi9cbiAgV0FTTTMyLFxuICAvKiogV2ViQXNzZW1ibHkgd2l0aCA2NC1iaXQgcG9pbnRlcnMuIEV4cGVyaW1lbnRhbCBhbmQgbm90IHN1cHBvcnRlZCBieSBhbnkgcnVudGltZSB5ZXQuICovXG4gIFdBU002NCxcbiAgLyoqIFBvcnRhYmxlLiAqL1xuICBKU1xufVxuIl19 + +/***/ }), + +/***/ "../std/assembly/shared/typeinfo.ts": +/*!******************************************!*\ + !*** ../std/assembly/shared/typeinfo.ts ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// This file is shared with the compiler and must remain portable +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕ +// 3 2 1 +// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits +// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base +// │ count │ +// ╞═══════════════════════════════════════════════════════════════╡ ┐ +// │ Typeinfo#flags [id=0] │ id < count +// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ +// │ Typeinfo#base [id=0] │ +// ├───────────────────────────────────────────────────────────────┤ +// │ ... │ +/** Runtime type information data structure. */ +var Typeinfo = /** @class */ (function () { + function Typeinfo() { + } + Typeinfo = __decorate([ + (()=>{}) + ], Typeinfo); + return Typeinfo; +}()); +exports.Typeinfo = Typeinfo; +/** Runtime type information flags. */ +var TypeinfoFlags; +(function (TypeinfoFlags) { + /** No specific flags. */ + TypeinfoFlags[TypeinfoFlags["NONE"] = 0] = "NONE"; + /** Type is an `ArrayBufferView`. */ + TypeinfoFlags[TypeinfoFlags["ARRAYBUFFERVIEW"] = 1] = "ARRAYBUFFERVIEW"; + /** Type is an `Array`. */ + TypeinfoFlags[TypeinfoFlags["ARRAY"] = 2] = "ARRAY"; + /** Type is a `Set`. */ + TypeinfoFlags[TypeinfoFlags["SET"] = 4] = "SET"; + /** Type is a `Map`. */ + TypeinfoFlags[TypeinfoFlags["MAP"] = 8] = "MAP"; + /** Type is inherently acyclic. */ + TypeinfoFlags[TypeinfoFlags["ACYCLIC"] = 16] = "ACYCLIC"; + /** Value alignment of 1 byte. */ + TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_0"] = 32] = "VALUE_ALIGN_0"; + /** Value alignment of 2 bytes. */ + TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_1"] = 64] = "VALUE_ALIGN_1"; + /** Value alignment of 4 bytes. */ + TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_2"] = 128] = "VALUE_ALIGN_2"; + /** Value alignment of 8 bytes. */ + TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_3"] = 256] = "VALUE_ALIGN_3"; + /** Value alignment of 16 bytes. */ + TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_4"] = 512] = "VALUE_ALIGN_4"; + /** Value is a signed type. */ + TypeinfoFlags[TypeinfoFlags["VALUE_SIGNED"] = 1024] = "VALUE_SIGNED"; + /** Value is a float type. */ + TypeinfoFlags[TypeinfoFlags["VALUE_FLOAT"] = 2048] = "VALUE_FLOAT"; + /** Value type is nullable. */ + TypeinfoFlags[TypeinfoFlags["VALUE_NULLABLE"] = 4096] = "VALUE_NULLABLE"; + /** Value type is managed. */ + TypeinfoFlags[TypeinfoFlags["VALUE_MANAGED"] = 8192] = "VALUE_MANAGED"; + /** Key alignment of 1 byte. */ + TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_0"] = 16384] = "KEY_ALIGN_0"; + /** Key alignment of 2 bytes. */ + TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_1"] = 32768] = "KEY_ALIGN_1"; + /** Key alignment of 4 bytes. */ + TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_2"] = 65536] = "KEY_ALIGN_2"; + /** Key alignment of 8 bytes. */ + TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_3"] = 131072] = "KEY_ALIGN_3"; + /** Key alignment of 16 bytes. */ + TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_4"] = 262144] = "KEY_ALIGN_4"; + /** Key is a signed type. */ + TypeinfoFlags[TypeinfoFlags["KEY_SIGNED"] = 524288] = "KEY_SIGNED"; + /** Key is a float type. */ + TypeinfoFlags[TypeinfoFlags["KEY_FLOAT"] = 1048576] = "KEY_FLOAT"; + /** Key type is nullable. */ + TypeinfoFlags[TypeinfoFlags["KEY_NULLABLE"] = 2097152] = "KEY_NULLABLE"; + /** Key type is managed. */ + TypeinfoFlags[TypeinfoFlags["KEY_MANAGED"] = 4194304] = "KEY_MANAGED"; +})(TypeinfoFlags = exports.TypeinfoFlags || (exports.TypeinfoFlags = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zdGQvYXNzZW1ibHkvc2hhcmVkL3R5cGVpbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpRUFBaUU7Ozs7Ozs7O0FBRWpFLG9FQUFvRTtBQUNwRSwrQ0FBK0M7QUFDL0MseUVBQXlFO0FBQ3pFLG1GQUFtRjtBQUNuRixvRUFBb0U7QUFDcEUsc0VBQXNFO0FBQ3RFLCtFQUErRTtBQUMvRSxvRUFBb0U7QUFDcEUsb0VBQW9FO0FBQ3BFLG9FQUFvRTtBQUNwRSxvRUFBb0U7QUFFcEUsK0NBQStDO0FBRS9DO0lBQUE7SUFLQSxDQUFDO0lBTFksUUFBUTtRQURwQixTQUFTO09BQ0csUUFBUSxDQUtwQjtJQUFELGVBQUM7Q0FBQSxBQUxELElBS0M7QUFMWSw0QkFBUTtBQU9yQixzQ0FBc0M7QUFDdEMsSUFBa0IsYUFpRGpCO0FBakRELFdBQWtCLGFBQWE7SUFDN0IseUJBQXlCO0lBQ3pCLGlEQUFRLENBQUE7SUFDUixvQ0FBb0M7SUFDcEMsdUVBQXdCLENBQUE7SUFDeEIsMEJBQTBCO0lBQzFCLG1EQUFjLENBQUE7SUFDZCx1QkFBdUI7SUFDdkIsK0NBQVksQ0FBQTtJQUNaLHVCQUF1QjtJQUN2QiwrQ0FBWSxDQUFBO0lBQ1osa0NBQWtDO0lBQ2xDLHdEQUFnQixDQUFBO0lBQ2hCLGlDQUFpQztJQUNqQyxvRUFBc0IsQ0FBQTtJQUN0QixrQ0FBa0M7SUFDbEMsb0VBQXNCLENBQUE7SUFDdEIsa0NBQWtDO0lBQ2xDLHFFQUFzQixDQUFBO0lBQ3RCLGtDQUFrQztJQUNsQyxxRUFBc0IsQ0FBQTtJQUN0QixtQ0FBbUM7SUFDbkMscUVBQXNCLENBQUE7SUFDdEIsOEJBQThCO0lBQzlCLG9FQUFzQixDQUFBO0lBQ3RCLDZCQUE2QjtJQUM3QixrRUFBcUIsQ0FBQTtJQUNyQiw4QkFBOEI7SUFDOUIsd0VBQXdCLENBQUE7SUFDeEIsNkJBQTZCO0lBQzdCLHNFQUF1QixDQUFBO0lBQ3ZCLCtCQUErQjtJQUMvQixtRUFBcUIsQ0FBQTtJQUNyQixnQ0FBZ0M7SUFDaEMsbUVBQXFCLENBQUE7SUFDckIsZ0NBQWdDO0lBQ2hDLG1FQUFxQixDQUFBO0lBQ3JCLGdDQUFnQztJQUNoQyxvRUFBcUIsQ0FBQTtJQUNyQixpQ0FBaUM7SUFDakMsb0VBQXFCLENBQUE7SUFDckIsNEJBQTRCO0lBQzVCLGtFQUFvQixDQUFBO0lBQ3BCLDJCQUEyQjtJQUMzQixpRUFBbUIsQ0FBQTtJQUNuQiw0QkFBNEI7SUFDNUIsdUVBQXNCLENBQUE7SUFDdEIsMkJBQTJCO0lBQzNCLHFFQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFqRGlCLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBaUQ5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBzaGFyZWQgd2l0aCB0aGUgY29tcGlsZXIgYW5kIG11c3QgcmVtYWluIHBvcnRhYmxlXG5cbi8vIOKVkuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCBUeXBlaW5mbyBpbnRlcnByZXRhdGlvbiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZVcbi8vICAgIDMgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAxXG4vLyAgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwICBiaXRzXG4vLyDilJzilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilKQg4peE4pSAIF9fcnR0aV9iYXNlXG4vLyDilIIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIJcbi8vIOKVnuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoSDilJBcbi8vIOKUgiAgICAgICAgICAgICAgICAgICAgICBUeXBlaW5mbyNmbGFncyBbaWQ9MF0gICAgICAgICAgICAgICAgICAgIOKUgiBpZCA8IGNvdW50XG4vLyDilJwg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUpFxuLy8g4pSCICAgICAgICAgICAgICAgICAgICAgIFR5cGVpbmZvI2Jhc2UgIFtpZD0wXSAgICAgICAgICAgICAgICAgICAg4pSCXG4vLyDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbi8vIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUglxuXG4vKiogUnVudGltZSB0eXBlIGluZm9ybWF0aW9uIGRhdGEgc3RydWN0dXJlLiAqL1xuQHVubWFuYWdlZFxuZXhwb3J0IGNsYXNzIFR5cGVpbmZvIHtcbiAgLyoqIEZsYWdzIGRlc2NyaWJpbmcgdGhlIHNoYXBlIG9mIHRoaXMgY2xhc3MgdHlwZS4gKi9cbiAgZmxhZ3M6IFR5cGVpbmZvRmxhZ3M7XG4gIC8qKiBCYXNlIGNsYXNzIGlkIG9yIGAwYCBpZiBub25lLiAqL1xuICBiYXNlOiB1MzI7XG59XG5cbi8qKiBSdW50aW1lIHR5cGUgaW5mb3JtYXRpb24gZmxhZ3MuICovXG5leHBvcnQgY29uc3QgZW51bSBUeXBlaW5mb0ZsYWdzIHtcbiAgLyoqIE5vIHNwZWNpZmljIGZsYWdzLiAqL1xuICBOT05FID0gMCxcbiAgLyoqIFR5cGUgaXMgYW4gYEFycmF5QnVmZmVyVmlld2AuICovXG4gIEFSUkFZQlVGRkVSVklFVyA9IDEgPDwgMCxcbiAgLyoqIFR5cGUgaXMgYW4gYEFycmF5YC4gKi9cbiAgQVJSQVkgPSAxIDw8IDEsXG4gIC8qKiBUeXBlIGlzIGEgYFNldGAuICovXG4gIFNFVCA9IDEgPDwgMixcbiAgLyoqIFR5cGUgaXMgYSBgTWFwYC4gKi9cbiAgTUFQID0gMSA8PCAzLFxuICAvKiogVHlwZSBpcyBpbmhlcmVudGx5IGFjeWNsaWMuICovXG4gIEFDWUNMSUMgPSAxIDw8IDQsXG4gIC8qKiBWYWx1ZSBhbGlnbm1lbnQgb2YgMSBieXRlLiAqL1xuICBWQUxVRV9BTElHTl8wID0gMSA8PCA1LFxuICAvKiogVmFsdWUgYWxpZ25tZW50IG9mIDIgYnl0ZXMuICovXG4gIFZBTFVFX0FMSUdOXzEgPSAxIDw8IDYsXG4gIC8qKiBWYWx1ZSBhbGlnbm1lbnQgb2YgNCBieXRlcy4gKi9cbiAgVkFMVUVfQUxJR05fMiA9IDEgPDwgNyxcbiAgLyoqIFZhbHVlIGFsaWdubWVudCBvZiA4IGJ5dGVzLiAqL1xuICBWQUxVRV9BTElHTl8zID0gMSA8PCA4LFxuICAvKiogVmFsdWUgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAqL1xuICBWQUxVRV9BTElHTl80ID0gMSA8PCA5LFxuICAvKiogVmFsdWUgaXMgYSBzaWduZWQgdHlwZS4gKi9cbiAgVkFMVUVfU0lHTkVEID0gMSA8PCAxMCxcbiAgLyoqIFZhbHVlIGlzIGEgZmxvYXQgdHlwZS4gKi9cbiAgVkFMVUVfRkxPQVQgPSAxIDw8IDExLFxuICAvKiogVmFsdWUgdHlwZSBpcyBudWxsYWJsZS4gKi9cbiAgVkFMVUVfTlVMTEFCTEUgPSAxIDw8IDEyLFxuICAvKiogVmFsdWUgdHlwZSBpcyBtYW5hZ2VkLiAqL1xuICBWQUxVRV9NQU5BR0VEID0gMSA8PCAxMyxcbiAgLyoqIEtleSBhbGlnbm1lbnQgb2YgMSBieXRlLiAqL1xuICBLRVlfQUxJR05fMCA9IDEgPDwgMTQsXG4gIC8qKiBLZXkgYWxpZ25tZW50IG9mIDIgYnl0ZXMuICovXG4gIEtFWV9BTElHTl8xID0gMSA8PCAxNSxcbiAgLyoqIEtleSBhbGlnbm1lbnQgb2YgNCBieXRlcy4gKi9cbiAgS0VZX0FMSUdOXzIgPSAxIDw8IDE2LFxuICAvKiogS2V5IGFsaWdubWVudCBvZiA4IGJ5dGVzLiAqL1xuICBLRVlfQUxJR05fMyA9IDEgPDwgMTcsXG4gIC8qKiBLZXkgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAqL1xuICBLRVlfQUxJR05fNCA9IDEgPDwgMTgsXG4gIC8qKiBLZXkgaXMgYSBzaWduZWQgdHlwZS4gKi9cbiAgS0VZX1NJR05FRCA9IDEgPDwgMTksXG4gIC8qKiBLZXkgaXMgYSBmbG9hdCB0eXBlLiAqL1xuICBLRVlfRkxPQVQgPSAxIDw8IDIwLFxuICAvKiogS2V5IHR5cGUgaXMgbnVsbGFibGUuICovXG4gIEtFWV9OVUxMQUJMRSA9IDEgPDwgMjEsXG4gIC8qKiBLZXkgdHlwZSBpcyBtYW5hZ2VkLiAqL1xuICBLRVlfTUFOQUdFRCA9IDEgPDwgMjJcbn1cbiJdfQ== + +/***/ }), + +/***/ "../std/portable/index.js": +/*!********************************!*\ + !*** ../std/portable/index.js ***! + \********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {/** @module std/portable *//***/ + +var globalScope = typeof window !== "undefined" && window || typeof global !== "undefined" && global || self; + +globalScope.ASC_TARGET = 2; // Target.JS +globalScope.ASC_NO_ASSERT = false; +globalScope.ASC_MEMORY_BASE = 0; +globalScope.ASC_OPTIMIZE_LEVEL = 3; +globalScope.ASC_SHRINK_LEVEL = 0; +globalScope.ASC_FEATURE_MUTABLE_GLOBAL = false; +globalScope.ASC_FEATURE_SIGN_EXTENSION = false; +globalScope.ASC_FEATURE_BULK_MEMORY = false; +globalScope.ASC_FEATURE_SIMD = false; +globalScope.ASC_FEATURE_THREADS = false; + +var F64 = new Float64Array(1); +var U64 = new Uint32Array(F64.buffer); + +Object.defineProperties( + globalScope["i8"] = function i8(value) { return value << 24 >> 24; } +, { + "MIN_VALUE": { value: -128, writable: false }, + "MAX_VALUE": { value: 127, writable: false } +}); + +Object.defineProperties( + globalScope["i16"] = function i16(value) { return value << 16 >> 16; } +, { + "MIN_VALUE": { value: -32768, writable: false }, + "MAX_VALUE": { value: 32767, writable: false } +}); + +Object.defineProperties( + globalScope["i32"] = globalScope["isize"] = function i32(value) { return value | 0; } +, { + "MIN_VALUE": { value: -2147483648, writable: false }, + "MAX_VALUE": { value: 2147483647, writable: false } +}); + +Object.defineProperties( + globalScope["u8"] = function u8(value) { return value & 0xff; } +, { + "MIN_VALUE": { value: 0, writable: false }, + "MAX_VALUE": { value: 255, writable: false } +}); + +Object.defineProperties( + globalScope["u16"] = function u16(value) { return value & 0xffff; } +, { + "MIN_VALUE": { value: 0, writable: false }, + "MAX_VALUE": { value: 65535, writable: false } +}); + +Object.defineProperties( + globalScope["u32"] = globalScope["usize"] = function u32(value) { return value >>> 0; } +, { + "MIN_VALUE": { value: 0, writable: false }, + "MAX_VALUE": { value: 4294967295, writable: false } +}); + +Object.defineProperties( + globalScope["bool"] = function bool(value) { return !!value; } +, { + "MIN_VALUE": { value: false, writable: false }, + "MAX_VALUE": { value: true, writable: false } +}); + +Object.defineProperties( + globalScope["f32"] = function f32(value) { return Math.fround(value); } +, { + "EPSILON": { value: Math.fround(1.1920929e-07), writable: false }, + "MIN_VALUE": { value: Math.fround(1.4012985e-45), writable: false }, + "MAX_VALUE": { value: Math.fround(3.4028235e+38), writable: false }, + "MIN_NORMAL_VALUE": { value: Math.fround(1.17549435e-38), writable: false }, + "MIN_SAFE_INTEGER": { value: -16777215, writable: false }, + "MAX_SAFE_INTEGER": { value: 16777215, writable: false } +}); + +Object.defineProperties( + globalScope["f64"] = function f64(value) { return +value; } +, { + "EPSILON": { value: 2.2204460492503131e-16, writable: false }, + "MIN_VALUE": { value: 5e-324, writable: false }, + "MAX_VALUE": { value: 1.7976931348623157e+308, writable: false }, + "MIN_NORMAL_VALUE": { value: 2.2250738585072014e-308 , writable: false }, + "MIN_SAFE_INTEGER": { value: -9007199254740991, writable: false }, + "MAX_SAFE_INTEGER": { value: 9007199254740991, writable: false } +}); + +globalScope["clz"] = Math.clz32; + +globalScope["ctz"] = function ctz(value) { + var c = Math.clz32(value & -value); + return value ? 31 - c : c; +}; + +globalScope["popcnt"] = function popcnt(value) { + value -= value >>> 1 & 0x55555555; + value = (value & 0x33333333) + (value >>> 2 & 0x33333333); + return (((value + (value >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24; +}; + +globalScope["rotl"] = function rotl(value, shift) { + shift &= 31; + return (value << shift) | (value >>> (32 - shift)); +}; + +globalScope["rotr"] = function rotr(value, shift) { + shift &= 31; + return (value >>> shift) | (value << (32 - shift)); +}; + +globalScope["abs"] = Math.abs; + +globalScope["max"] = Math.max; + +globalScope["min"] = Math.min; + +globalScope["ceil"] = Math.ceil; + +globalScope["floor"] = Math.floor; + +// Adopt code from https://github.com/rfk/wasm-polyfill +globalScope["nearest"] = function nearest(value) { + if (Math.abs(value - Math.trunc(value)) === 0.5) { + return 2.0 * Math.round(value * 0.5); + } + return Math.round(value); +}; + +globalScope["select"] = function select(ifTrue, ifFalse, condition) { + return condition ? ifTrue : ifFalse; +}; + +globalScope["sqrt"] = Math.sqrt; + +globalScope["trunc"] = Math.trunc; + +globalScope["copysign"] = function copysign(x, y) { + return Math.abs(x) * Math.sign(y); +}; + +globalScope["bswap"] = function bswap(value) { + var a = value >> 8 & 0x00FF00FF; + var b = (value & 0x00FF00FF) << 8; + value = a | b; + a = value >> 16 & 0x0000FFFF; + b = (value & 0x0000FFFF) << 16; + return a | b; +}; + +globalScope["bswap16"] = function bswap16(value) { + return ((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000); +}; + +function UnreachableError() { + if (Error.captureStackTrace) { + Error.captureStackTrace(this, UnreachableError); + } else { + this.stack = this.name + ": " + this.message + "\n" + new Error().stack; + } +} +UnreachableError.prototype = Object.create(Error.prototype); +UnreachableError.prototype.name = "UnreachableError"; +UnreachableError.prototype.message = "unreachable"; + +globalScope["unreachable"] = function unreachable() { + throw new UnreachableError(); +}; + +function AssertionError(message) { + this.message = message || "assertion failed"; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, AssertionError); + } else { + this.stack = this.name + ": " + this.message + "\n" + new Error().stack; + } +} +AssertionError.prototype = Object.create(Error.prototype); +AssertionError.prototype.name = "AssertionError"; + +globalScope["assert"] = function assert(isTrueish, message) { + if (isTrueish) return isTrueish; + throw new AssertionError(message); +}; + +globalScope["changetype"] = function changetype(value) { + return value; +}; + +String["fromCharCodes"] = function fromCharCodes(arr) { + return String.fromCharCode.apply(String, arr); +}; + +String["fromCodePoints"] = function fromCodePoints(arr) { + return String.fromCodePoint.apply(String, arr); +}; + +if (!String.prototype.replaceAll) { + Object.defineProperty(String.prototype, "replaceAll", { + value: function replaceAll(search, replacment) { + var res = this.split(search).join(replacment); + if (!search.length) res = replacment + res + replacment; + return res; + } + }); +} + +globalScope["isInteger"] = Number.isInteger; + +globalScope["isFloat"] = function isFloat(arg) { + return typeof arg === "number"; +}; + +globalScope["isNullable"] = function isNullable(arg) { + return true; +} + +globalScope["isReference"] = function isReference(arg) { + return typeof arg === "object" || typeof arg === "string"; +}; + +globalScope["isFunction"] = function isFunction(arg) { + return typeof arg === "function"; +} + +globalScope["isString"] = function isString(arg) { + return typeof arg === "string" || arg instanceof String; +}; + +globalScope["isArray"] = Array.isArray; +globalScope["isArrayLike"] = function isArrayLike(expr) { + return expr + && typeof expr === 'object' + && typeof expr.length === 'number' + && expr.length >= 0 + && Math.trunc(expr.length) === expr.length; +}; + +Array.create = function(capacity) { + var arr = new Array(capacity); + arr.length = 0; + return arr; +}; + +globalScope["isDefined"] = function isDefined(expr) { + return typeof expr !== "undefined"; +} + +globalScope["isConstant"] = function isConstant(expr) { + return false; +}; + +globalScope["unchecked"] = function unchecked(expr) { + return expr; +}; + +globalScope["fmod"] = function fmod(x, y) { + return x % y; +}; + +globalScope["fmodf"] = function fmodf(x, y) { + return Math.fround(x % y); +}; + +globalScope["JSMath"] = Math; + +try { +Object.defineProperties(globalScope["JSMath"], { + sincos_sin: { value: 0.0, writable: true }, + sincos_cos: { value: 0.0, writable: true }, + signbit: { + value: function signbit(x) { + F64[0] = x; return Boolean((U64[1] >>> 31) & (x == x)); + } + }, + sincos: { + value: function sincos(x) { + this.sincos_sin = Math.sin(x); + this.sincos_cos = Math.cos(x); + } + } +}); +}catch (e) {} + +globalScope["memory"] = (() => { + var HEAP = new Uint8Array(0); + var HEAP_OFFSET = 0; + return { + allocate: globalScope["__memory_allocate"] || function allocate(size) { + if (!(size >>>= 0)) return 0; + if (HEAP_OFFSET + size > HEAP.length) { + var oldHeap = HEAP; + HEAP = new Uint8Array(Math.max(65536, HEAP.length + size, HEAP.length * 2)); + HEAP.set(oldHeap); + } + var ptr = HEAP_OFFSET; + if ((HEAP_OFFSET += size) & 7) HEAP_OFFSET = (HEAP_OFFSET | 7) + 1; + return ptr; + }, + fill: globalScope["__memory_fill"] || function fill(dest, value, size) { + HEAP.fill(value, dest, dest + size); + }, + free: globalScope["__memory_free"] || function free(ptr) { }, + copy: globalScope["__memory_copy"] || function copy(dest, src, size) { + HEAP.copyWithin(dest, src, src + size); + }, + reset: globalScope["__memory_reset"] || function reset() { + HEAP = new Uint8Array(0); + HEAP_OFFSET = 0; + } + }; +})(); + +globalScope["store"] = globalScope["__store"] || function store(ptr, value, offset) { + HEAP[(ptr | 0) + (offset | 0)] = value; +}; + +globalScope["load"] = globalScope["__load"] || function load(ptr, offset) { + return HEAP[(ptr | 0) + (offset | 0)]; +}; + +globalScope["unmanaged"] = function() {}; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./src/base.ts": +/*!*********************!*\ + !*** ./src/base.ts ***! + \*********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __values = (this && this.__values) || function (o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); +var visitor_1 = __webpack_require__(/*! ./visitor */ "./src/visitor.ts"); +var BaseVisitor = /** @class */ (function (_super) { + __extends(BaseVisitor, _super); + function BaseVisitor(writer) { + var _this = _super.call(this, writer) || this; + _this.depth = 0; + return _this; + } + BaseVisitor.prototype._visit = function (node) { + switch (node.kind) { + case ast_1.NodeKind.SOURCE: { + this.visitSource(node); + break; + } + // types + case ast_1.NodeKind.NAMEDTYPE: { + this.visitNamedTypeNode(node); + break; + } + case ast_1.NodeKind.FUNCTIONTYPE: { + this.visitFunctionTypeNode(node); + break; + } + case ast_1.NodeKind.TYPENAME: { + this.visitTypeName(node); + } + case ast_1.NodeKind.TYPEPARAMETER: { + this.visitTypeParameter(node); + break; + } + // expressions + case ast_1.NodeKind.FALSE: + case ast_1.NodeKind.NULL: + case ast_1.NodeKind.SUPER: + case ast_1.NodeKind.THIS: + case ast_1.NodeKind.TRUE: + case ast_1.NodeKind.CONSTRUCTOR: + case ast_1.NodeKind.IDENTIFIER: { + this.visitIdentifierExpression(node); + break; + } + case ast_1.NodeKind.ASSERTION: { + this.visitAssertionExpression(node); + break; + } + case ast_1.NodeKind.BINARY: { + this.visitBinaryExpression(node); + break; + } + case ast_1.NodeKind.CALL: { + this.visitCallExpression(node); + break; + } + case ast_1.NodeKind.CLASS: { + this.visitClassExpression(node); + break; + } + case ast_1.NodeKind.COMMA: { + this.visitCommaExpression(node); + break; + } + case ast_1.NodeKind.ELEMENTACCESS: { + this.visitElementAccessExpression(node); + break; + } + case ast_1.NodeKind.FUNCTION: { + this.visitFunctionExpression(node); + break; + } + case ast_1.NodeKind.INSTANCEOF: { + this.visitInstanceOfExpression(node); + break; + } + case ast_1.NodeKind.LITERAL: { + this.visitLiteralExpression(node); + break; + } + case ast_1.NodeKind.NEW: { + this.visitNewExpression(node); + break; + } + case ast_1.NodeKind.PARENTHESIZED: { + this.visitParenthesizedExpression(node); + break; + } + case ast_1.NodeKind.PROPERTYACCESS: { + this.visitPropertyAccessExpression(node); + break; + } + case ast_1.NodeKind.TERNARY: { + this.visitTernaryExpression(node); + break; + } + case ast_1.NodeKind.UNARYPOSTFIX: { + this.visitUnaryPostfixExpression(node); + break; + } + case ast_1.NodeKind.UNARYPREFIX: { + this.visitUnaryPrefixExpression(node); + break; + } + // statements + case ast_1.NodeKind.BLOCK: { + this.visitBlockStatement(node); + break; + } + case ast_1.NodeKind.BREAK: { + this.visitBreakStatement(node); + break; + } + case ast_1.NodeKind.CONTINUE: { + this.visitContinueStatement(node); + break; + } + case ast_1.NodeKind.DO: { + this.visitDoStatement(node); + break; + } + case ast_1.NodeKind.EMPTY: { + this.visitEmptyStatement(node); + break; + } + case ast_1.NodeKind.EXPORT: { + this.visitExportStatement(node); + break; + } + case ast_1.NodeKind.EXPORTDEFAULT: { + this.visitExportDefaultStatement(node); + break; + } + case ast_1.NodeKind.EXPORTIMPORT: { + this.visitExportImportStatement(node); + break; + } + case ast_1.NodeKind.EXPRESSION: { + this.visitExpressionStatement(node); + break; + } + case ast_1.NodeKind.FOR: { + this.visitForStatement(node); + break; + } + case ast_1.NodeKind.IF: { + this.visitIfStatement(node); + break; + } + case ast_1.NodeKind.IMPORT: { + this.visitImportStatement(node); + break; + } + case ast_1.NodeKind.RETURN: { + this.visitReturnStatement(node); + break; + } + case ast_1.NodeKind.SWITCH: { + this.visitSwitchStatement(node); + break; + } + case ast_1.NodeKind.THROW: { + this.visitThrowStatement(node); + break; + } + case ast_1.NodeKind.TRY: { + this.visitTryStatement(node); + break; + } + case ast_1.NodeKind.VARIABLE: { + this.visitVariableStatement(node); + break; + } + case ast_1.NodeKind.WHILE: { + this.visitWhileStatement(node); + break; + } + // declaration statements + case ast_1.NodeKind.CLASSDECLARATION: { + this.visitClassDeclaration(node); + break; + } + case ast_1.NodeKind.ENUMDECLARATION: { + this.visitEnumDeclaration(node); + break; + } + case ast_1.NodeKind.ENUMVALUEDECLARATION: { + this.visitEnumValueDeclaration(node); + break; + } + case ast_1.NodeKind.FIELDDECLARATION: { + this.visitFieldDeclaration(node); + break; + } + case ast_1.NodeKind.FUNCTIONDECLARATION: { + this.visitFunctionDeclaration(node); + break; + } + case ast_1.NodeKind.IMPORTDECLARATION: { + this.visitImportDeclaration(node); + break; + } + case ast_1.NodeKind.INDEXSIGNATUREDECLARATION: { + this.visitIndexSignatureDeclaration(node); + break; + } + case ast_1.NodeKind.INTERFACEDECLARATION: { + this.visitInterfaceDeclaration(node); + break; + } + case ast_1.NodeKind.METHODDECLARATION: { + this.visitMethodDeclaration(node); + break; + } + case ast_1.NodeKind.NAMESPACEDECLARATION: { + this.visitNamespaceDeclaration(node); + break; + } + case ast_1.NodeKind.TYPEDECLARATION: { + this.visitTypeDeclaration(node); + break; + } + case ast_1.NodeKind.VARIABLEDECLARATION: { + this.visitVariableDeclaration(node); + break; + } + // other + case ast_1.NodeKind.DECORATOR: { + this.visitDecoratorNode(node); + break; + } + case ast_1.NodeKind.EXPORTMEMBER: { + this.visitExportMember(node); + break; + } + case ast_1.NodeKind.PARAMETER: { + this.visitParameter(node); + break; + } + case ast_1.NodeKind.SWITCHCASE: { + this.visitSwitchCase(node); + break; + } + default: assert(false); + } + }; + BaseVisitor.prototype.visitSource = function (node) { + var e_1, _a; + try { + for (var _b = __values(node.statements), _c = _b.next(); !_c.done; _c = _b.next()) { + var stmt = _c.value; + this.depth++; + this.visit(stmt); + this.depth--; + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + }; + BaseVisitor.prototype.visitTypeNode = function (node) { }; + BaseVisitor.prototype.visitTypeName = function (node) { + this.visit(node.identifier); + if (node.next) { + this.visit(node); + } + }; + BaseVisitor.prototype.visitNamedTypeNode = function (node) { + this.visit(node.name); + this.visit(node.typeArguments); + }; + BaseVisitor.prototype.visitFunctionTypeNode = function (node) { + var e_2, _a; + try { + for (var _b = __values(node.parameters), _c = _b.next(); !_c.done; _c = _b.next()) { + var param = _c.value; + this.visit(param); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_2) throw e_2.error; } + } + this.visit(node.returnType); + }; + BaseVisitor.prototype.visitTypeParameter = function (node) { + this.visit(node.name); + if (node.extendsType) + this.visit(node.extendsType); + if (node.defaultType) + this.visit(node.defaultType); + }; + BaseVisitor.prototype.visitIdentifierExpression = function (node) { }; + BaseVisitor.prototype.visitArrayLiteralExpression = function (node) { + var _this = this; + node.elementExpressions.map(function (e) { + if (e) + _this.visit(e); + }); + }; + BaseVisitor.prototype.visitObjectLiteralExpression = function (node) { + if (node.values && node.names) { + assert(node.values.length == node.names.length); + for (var i = 0; i < node.values.length; i++) { + this.visit(node.names[i]); + this.visit(node.values[i]); + } + } + }; + BaseVisitor.prototype.visitAssertionExpression = function (node) { + if (node.toType) + this.visit(node.toType); + this.visit(node.expression); + }; + BaseVisitor.prototype.visitBinaryExpression = function (node) { + this.visit(node.left); + this.visit(node.right); + }; + BaseVisitor.prototype.visitCallExpression = function (node) { + this.visit(node.expression); + this.visit(node.typeArguments); + this.visit(node.arguments); + }; + BaseVisitor.prototype.visitClassExpression = function (node) { + this.visit(node.declaration); + }; + BaseVisitor.prototype.visitCommaExpression = function (node) { + this.visit(node.expressions); + }; + BaseVisitor.prototype.visitElementAccessExpression = function (node) { + this.visit(node.elementExpression); + this.visit(node.expression); + }; + BaseVisitor.prototype.visitFunctionExpression = function (node) { + this.visit(node.declaration); + }; + BaseVisitor.prototype.visitLiteralExpression = function (node) { + // node. + }; + BaseVisitor.prototype.visitFloatLiteralExpression = function (node) { }; + BaseVisitor.prototype.visitInstanceOfExpression = function (node) { + this.visit(node.expression); + this.visit(node.isType); + }; + BaseVisitor.prototype.visitIntegerLiteralExpression = function (node) { }; + BaseVisitor.prototype.visitStringLiteral = function (str, singleQuoted) { }; + BaseVisitor.prototype.visitStringLiteralExpression = function (node) { }; + BaseVisitor.prototype.visitRegexpLiteralExpression = function (node) { }; + BaseVisitor.prototype.visitNewExpression = function (node) { + this.visit(node.expression); + this.visit(node.typeArguments); + this.visit(node.arguments); + }; + BaseVisitor.prototype.visitParenthesizedExpression = function (node) { + this.visit(node.expression); + }; + BaseVisitor.prototype.visitPropertyAccessExpression = function (node) { + this.visit(node.property); + this.visit(node.expression); + }; + BaseVisitor.prototype.visitTernaryExpression = function (node) { + this.visit(node.condition); + this.visit(node.ifThen); + this.visit(node.ifElse); + }; + BaseVisitor.prototype.visitUnaryExpression = function (node) { + this.visit(node.operand); + }; + BaseVisitor.prototype.visitUnaryPostfixExpression = function (node) { + this.visit(node.operand); + }; + BaseVisitor.prototype.visitUnaryPrefixExpression = function (node) { + this.visit(node.operand); + }; + BaseVisitor.prototype.visitSuperExpression = function (node) { }; + BaseVisitor.prototype.visitFalseExpression = function (node) { }; + BaseVisitor.prototype.visitTrueExpression = function (node) { }; + BaseVisitor.prototype.visitThisExpression = function (node) { }; + BaseVisitor.prototype.visitNullExperssion = function (node) { }; + BaseVisitor.prototype.visitConstructorExpression = function (node) { }; + BaseVisitor.prototype.visitNodeAndTerminate = function (statement) { }; + BaseVisitor.prototype.visitBlockStatement = function (node) { + this.depth++; + this.visit(node.statements); + this.depth--; + }; + BaseVisitor.prototype.visitBreakStatement = function (node) { + if (node.label) { + this.visit(node.label); + } + }; + BaseVisitor.prototype.visitContinueStatement = function (node) { + if (node.label) { + this.visit(node.label); + } + }; + BaseVisitor.prototype.visitClassDeclaration = function (node, isDefault) { + this.visit(node.name); + this.depth++; + this.visit(node.decorators); + assert(node.isGeneric ? node.typeParameters != null : node.typeParameters == null); + if (node.isGeneric) { + this.visit(node.typeParameters); + } + if (node.extendsType) { + this.visit(node.extendsType); + } + this.visit(node.implementsTypes); + this.visit(node.members); + this.depth--; + }; + BaseVisitor.prototype.visitDoStatement = function (node) { + this.visit(node.condition); + this.visit(node.statement); + }; + BaseVisitor.prototype.visitEmptyStatement = function (node) { }; + BaseVisitor.prototype.visitEnumDeclaration = function (node, isDefault) { + this.visit(node.name); + this.visit(node.decorators); + this.visit(node.values); + }; + BaseVisitor.prototype.visitEnumValueDeclaration = function (node) { + this.visit(node.name); + if (node.initializer) { + this.visit(node.initializer); + } + }; + BaseVisitor.prototype.visitExportImportStatement = function (node) { + this.visit(node.name); + this.visit(node.externalName); + }; + BaseVisitor.prototype.visitExportMember = function (node) { + this.visit(node.localName); + this.visit(node.exportedName); + }; + BaseVisitor.prototype.visitExportStatement = function (node) { + if (node.path) { + this.visit(node.path); + } + this.visit(node.members); + }; + BaseVisitor.prototype.visitExportDefaultStatement = function (node) { + this.visit(node.declaration); + }; + BaseVisitor.prototype.visitExpressionStatement = function (node) { + this.visit(node.expression); + }; + BaseVisitor.prototype.visitFieldDeclaration = function (node) { + this.visit(node.name); + if (node.type) { + this.visit(node.type); + } + if (node.initializer) { + this.visit(node.initializer); + } + this.visit(node.decorators); + }; + BaseVisitor.prototype.visitForStatement = function (node) { + if (node.initializer) + this.visit(node.initializer); + if (node.condition) + this.visit(node.condition); + if (node.incrementor) + this.visit(node.incrementor); + this.visit(node.statement); + }; + BaseVisitor.prototype.visitFunctionDeclaration = function (node, isDefault) { + this.visit(node.name); + this.visit(node.decorators); + if (node.isGeneric) { + this.visit(node.typeParameters); + } + this.visit(node.signature); + this.depth++; + if (node.body) + this.visit(node.body); + this.depth--; + }; + BaseVisitor.prototype.visitFunctionCommon = function (node) { + // this.visit(node.name) + }; + BaseVisitor.prototype.visitIfStatement = function (node) { + this.visit(node.condition); + this.visit(node.ifTrue); + if (node.ifFalse) + this.visit(node.ifFalse); + }; + BaseVisitor.prototype.visitImportDeclaration = function (node) { + this.visit(node.foreignName); + this.visit(node.name); + this.visit(node.decorators); + }; + BaseVisitor.prototype.visitImportStatement = function (node) { + if (node.namespaceName) + this.visit(node.namespaceName); + this.visit(node.declarations); + }; + BaseVisitor.prototype.visitIndexSignatureDeclaration = function (node) { + // this.visit(node.name); + // this.visit(node.keyType); + // this.visit(node.valueType); + }; + BaseVisitor.prototype.visitInterfaceDeclaration = function (node, isDefault) { + this.visit(node.name); + if (node.isGeneric) { + this.visit(node.typeParameters); + } + this.visit(node.implementsTypes); + if (node.extendsType) + this.visit(node.extendsType); + this.depth++; + this.visit(node.members); + this.depth--; + }; + BaseVisitor.prototype.visitMethodDeclaration = function (node) { + this.visit(node.name); + if (node.isGeneric) { + this.visit(node.typeParameters); + } + this.visit(node.signature); + this.visit(node.decorators); + this.depth++; + if (node.body) + this.visit(node.body); + this.depth--; + }; + BaseVisitor.prototype.visitNamespaceDeclaration = function (node, isDefault) { + this.visit(node.name); + this.visit(node.decorators); + this.visit(node.members); + }; + BaseVisitor.prototype.visitReturnStatement = function (node) { + if (node.value) + this.visit(node.value); + }; + BaseVisitor.prototype.visitSwitchCase = function (node) { + if (node.label) + this.visit(node.label); + this.visit(node.statements); + }; + BaseVisitor.prototype.visitSwitchStatement = function (node) { + this.visit(node.condition); + this.depth++; + this.visit(node.cases); + this.depth--; + }; + BaseVisitor.prototype.visitThrowStatement = function (node) { + this.visit(node.value); + }; + BaseVisitor.prototype.visitTryStatement = function (node) { + this.visit(node.statements); + if (node.catchVariable) + this.visit(node.catchVariable); + this.visit(node.catchStatements); + this.visit(node.finallyStatements); + }; + BaseVisitor.prototype.visitTypeDeclaration = function (node) { + this.visit(node.name); + this.visit(node.decorators); + this.visit(node.type); + this.visit(node.typeParameters); + }; + BaseVisitor.prototype.visitVariableDeclaration = function (node) { + this.visit(node.name); + if (node.type) + this.visit(node.type); + if (node.initializer) + this.visit(node.initializer); + }; + BaseVisitor.prototype.visitVariableStatement = function (node) { + this.visit(node.decorators); + this.visit(node.declarations); + }; + BaseVisitor.prototype.visitWhileStatement = function (node) { + this.visit(node.condition); + this.depth++; + this.visit(node.statement); + this.depth--; + }; + BaseVisitor.prototype.visitVoidStatement = function (node) { }; + BaseVisitor.prototype.visitComment = function (node) { }; + BaseVisitor.prototype.visitDecoratorNode = function (node) { + this.visit(node.name); + this.visit(node.arguments); + }; + BaseVisitor.prototype.visitParameter = function (node) { + this.visit(node.name); + if (node.implicitFieldDeclaration) { + this.visit(node.implicitFieldDeclaration); + } + if (node.initializer) + this.visit(node.initializer); + this.visit(node.type); + }; + return BaseVisitor; +}(visitor_1.AbstractVisitor)); +exports.BaseVisitor = BaseVisitor; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQ0E0RXVCO0FBRXZCLHFDQUFvRDtBQUVwRDtJQUFpQywrQkFBcUI7SUFHcEQscUJBQVksTUFBcUI7UUFBakMsWUFDRSxrQkFBTSxNQUFNLENBQUMsU0FDZDtRQUpELFdBQUssR0FBVyxDQUFDLENBQUM7O0lBSWxCLENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sSUFBVTtRQUNmLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLGNBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBUyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsTUFBTTthQUNQO1lBRUQsUUFBUTtZQUVSLEtBQUssY0FBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQWdCLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxNQUFNO2FBQ1A7WUFDRCxLQUFLLGNBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLHFCQUFxQixDQUFtQixJQUFJLENBQUMsQ0FBQztnQkFDbkQsTUFBTTthQUNQO1lBQ0QsS0FBSyxjQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLENBQVcsSUFBSSxDQUFDLENBQUM7YUFDcEM7WUFDRCxLQUFLLGNBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFvQixJQUFJLENBQUMsQ0FBQztnQkFDakQsTUFBTTthQUNQO1lBRUQsY0FBYztZQUVkLEtBQUssY0FBUSxDQUFDLEtBQUssQ0FBQztZQUNwQixLQUFLLGNBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbkIsS0FBSyxjQUFRLENBQUMsS0FBSyxDQUFDO1lB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QUFDO0lBQzdCLENBQUM7SUFFRCxvQ0FBYyxHQUFkLFVBQWUsSUFBbUI7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUgsa0JBQUM7QUFBRCxDQUFDLEFBNW9CRCxDQUFpQyx5QkFBZSxHQTRvQi9DO0FBNW9CWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNvdXJjZSxcbiAgVHlwZU5vZGUsXG4gIFR5cGVOYW1lLFxuICBOYW1lZFR5cGVOb2RlLFxuICBGdW5jdGlvblR5cGVOb2RlLFxuICBUeXBlUGFyYW1ldGVyTm9kZSxcbiAgSWRlbnRpZmllckV4cHJlc3Npb24sXG4gIEFycmF5TGl0ZXJhbEV4cHJlc3Npb24sXG4gIE9iamVjdExpdGVyYWxFeHByZXNzaW9uLFxuICBBc3NlcnRpb25FeHByZXNzaW9uLFxuICBCaW5hcnlFeHByZXNzaW9uLFxuICBDYWxsRXhwcmVzc2lvbixcbiAgQ2xhc3NFeHByZXNzaW9uLFxuICBDb21tYUV4cHJlc3Npb24sXG4gIEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLFxuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIExpdGVyYWxFeHByZXNzaW9uLFxuICBGbG9hdExpdGVyYWxFeHByZXNzaW9uLFxuICBJbnN0YW5jZU9mRXhwcmVzc2lvbixcbiAgSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uLFxuICBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbixcbiAgUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24sXG4gIE5ld0V4cHJlc3Npb24sXG4gIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uLFxuICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24sXG4gIFRlcm5hcnlFeHByZXNzaW9uLFxuICBVbmFyeUV4cHJlc3Npb24sXG4gIFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24sXG4gIFVuYXJ5UHJlZml4RXhwcmVzc2lvbixcbiAgU3VwZXJFeHByZXNzaW9uLFxuICBGYWxzZUV4cHJlc3Npb24sXG4gIFRydWVFeHByZXNzaW9uLFxuICBUaGlzRXhwcmVzc2lvbixcbiAgTnVsbEV4cHJlc3Npb24sXG4gIENvbnN0cnVjdG9yRXhwcmVzc2lvbixcbiAgU3RhdGVtZW50LFxuICBCbG9ja1N0YXRlbWVudCxcbiAgQnJlYWtTdGF0ZW1lbnQsXG4gIENvbnRpbnVlU3RhdGVtZW50LFxuICBDbGFzc0RlY2xhcmF0aW9uLFxuICBEb1N0YXRlbWVudCxcbiAgRW1wdHlTdGF0ZW1lbnQsXG4gIEVudW1EZWNsYXJhdGlvbixcbiAgRW51bVZhbHVlRGVjbGFyYXRpb24sXG4gIEV4cG9ydEltcG9ydFN0YXRlbWVudCxcbiAgRXhwb3J0TWVtYmVyLFxuICBFeHBvcnRTdGF0ZW1lbnQsXG4gIEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQsXG4gIEV4cHJlc3Npb25TdGF0ZW1lbnQsXG4gIEZpZWxkRGVjbGFyYXRpb24sXG4gIEZvclN0YXRlbWVudCxcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgSWZTdGF0ZW1lbnQsXG4gIEltcG9ydERlY2xhcmF0aW9uLFxuICBJbXBvcnRTdGF0ZW1lbnQsXG4gIEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24sXG4gIEludGVyZmFjZURlY2xhcmF0aW9uLFxuICBNZXRob2REZWNsYXJhdGlvbixcbiAgTmFtZXNwYWNlRGVjbGFyYXRpb24sXG4gIFJldHVyblN0YXRlbWVudCxcbiAgU3dpdGNoQ2FzZSxcbiAgU3dpdGNoU3RhdGVtZW50LFxuICBUaHJvd1N0YXRlbWVudCxcbiAgVHJ5U3RhdGVtZW50LFxuICBUeXBlRGVjbGFyYXRpb24sXG4gIFZhcmlhYmxlRGVjbGFyYXRpb24sXG4gIFZhcmlhYmxlU3RhdGVtZW50LFxuICBXaGlsZVN0YXRlbWVudCxcbiAgVm9pZFN0YXRlbWVudCxcbiAgQ29tbWVudE5vZGUsXG4gIERlY29yYXRvck5vZGUsXG4gIFBhcmFtZXRlck5vZGUsXG4gIE5vZGUsXG4gIE5vZGVLaW5kLFxuICBFeHByZXNzaW9uXG59IGZyb20gXCIuLi8uLi9zcmMvYXN0XCI7XG5cbmltcG9ydCB7IEFic3RyYWN0VmlzaXRvciwgV3JpdGVyIH0gZnJvbSBcIi4vdmlzaXRvclwiO1xuXG5leHBvcnQgY2xhc3MgQmFzZVZpc2l0b3IgZXh0ZW5kcyBBYnN0cmFjdFZpc2l0b3I8Tm9kZT4ge1xuICBkZXB0aDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih3cml0ZXI/OiBXcml0ZXI8Tm9kZT4pIHtcbiAgICBzdXBlcih3cml0ZXIpO1xuICB9XG5cbiAgX3Zpc2l0KG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBOb2RlS2luZC5TT1VSQ0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFNvdXJjZSg8U291cmNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gdHlwZXNcblxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FRFRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVkVHlwZU5vZGUoPE5hbWVkVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GVU5DVElPTlRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uVHlwZU5vZGUoPEZ1bmN0aW9uVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFTkFNRToge1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5hbWUoPFR5cGVOYW1lPm5vZGUpO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKDxUeXBlUGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGV4cHJlc3Npb25zXG5cbiAgICAgIGNhc2UgTm9kZUtpbmQuRkFMU0U6XG4gICAgICBjYXNlIE5vZGVLaW5kLk5VTEw6XG4gICAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOlxuICAgICAgY2FzZSBOb2RlS2luZC5USElTOlxuICAgICAgY2FzZSBOb2RlS2luZC5UUlVFOlxuICAgICAgY2FzZSBOb2RlS2luZC5DT05TVFJVQ1RPUjpcbiAgICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjoge1xuICAgICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24oPElkZW50aWZpZXJFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQVNTRVJUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRBc3NlcnRpb25FeHByZXNzaW9uKDxBc3NlcnRpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQklOQVJZOiB7XG4gICAgICAgIHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKDxCaW5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0FMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24oPENhbGxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0xBU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdENsYXNzRXhwcmVzc2lvbig8Q2xhc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09NTUE6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbW1hRXhwcmVzc2lvbig8Q29tbWFFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzoge1xuICAgICAgICB0aGlzLnZpc2l0RWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oPEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbig8RnVuY3Rpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5TVEFOQ0VPRjoge1xuICAgICAgICB0aGlzLnZpc2l0SW5zdGFuY2VPZkV4cHJlc3Npb24oPEluc3RhbmNlT2ZFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTElURVJBTDoge1xuICAgICAgICB0aGlzLnZpc2l0TGl0ZXJhbEV4cHJlc3Npb24oPExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkVXOiB7XG4gICAgICAgIHRoaXMudmlzaXROZXdFeHByZXNzaW9uKDxOZXdFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUEFSRU5USEVTSVpFRDoge1xuICAgICAgICB0aGlzLnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oPFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbig8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEVSTkFSWToge1xuICAgICAgICB0aGlzLnZpc2l0VGVybmFyeUV4cHJlc3Npb24oPFRlcm5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdGVtZW50c1xuXG4gICAgICBjYXNlIE5vZGVLaW5kLkJMT0NLOiB7XG4gICAgICAgIHRoaXMudmlzaXRCbG9ja1N0YXRlbWVudCg8QmxvY2tTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5CUkVBSzoge1xuICAgICAgICB0aGlzLnZpc2l0QnJlYWtTdGF0ZW1lbnQoPEJyZWFrU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09OVElOVUU6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbnRpbnVlU3RhdGVtZW50KDxDb250aW51ZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkRPOiB7XG4gICAgICAgIHRoaXMudmlzaXREb1N0YXRlbWVudCg8RG9TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FTVBUWToge1xuICAgICAgICB0aGlzLnZpc2l0RW1wdHlTdGF0ZW1lbnQoPEVtcHR5U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRFeHBvcnRTdGF0ZW1lbnQoPEV4cG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoPEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FWFBPUlRJTVBPUlQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudCg8RXhwb3J0SW1wb3J0U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQUkVTU0lPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwcmVzc2lvblN0YXRlbWVudCg8RXhwcmVzc2lvblN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZPUjoge1xuICAgICAgICB0aGlzLnZpc2l0Rm9yU3RhdGVtZW50KDxGb3JTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JRjoge1xuICAgICAgICB0aGlzLnZpc2l0SWZTdGF0ZW1lbnQoPElmU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU1QT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnRTdGF0ZW1lbnQoPEltcG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlJFVFVSTjoge1xuICAgICAgICB0aGlzLnZpc2l0UmV0dXJuU3RhdGVtZW50KDxSZXR1cm5TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0g6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaFN0YXRlbWVudCg8U3dpdGNoU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEhST1c6IHtcbiAgICAgICAgdGhpcy52aXNpdFRocm93U3RhdGVtZW50KDxUaHJvd1N0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlRSWToge1xuICAgICAgICB0aGlzLnZpc2l0VHJ5U3RhdGVtZW50KDxUcnlTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5WQVJJQUJMRToge1xuICAgICAgICB0aGlzLnZpc2l0VmFyaWFibGVTdGF0ZW1lbnQoPFZhcmlhYmxlU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuV0hJTEU6IHtcbiAgICAgICAgdGhpcy52aXNpdFdoaWxlU3RhdGVtZW50KDxXaGlsZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2xhcmF0aW9uIHN0YXRlbWVudHNcblxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRU5VTURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtRGVjbGFyYXRpb24oPEVudW1EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1WQUxVRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbig8RW51bVZhbHVlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRGaWVsZERlY2xhcmF0aW9uKDxGaWVsZERlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklNUE9SVERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbig8SW1wb3J0RGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKDxJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5URVJGQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEludGVyZmFjZURlY2xhcmF0aW9uKDxJbnRlcmZhY2VEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLk1FVEhPRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRNZXRob2REZWNsYXJhdGlvbig8TWV0aG9kRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FU1BBQ0VERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oPE5hbWVzcGFjZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlRGVjbGFyYXRpb24oPFR5cGVEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlZBUklBQkxFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oPFZhcmlhYmxlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBvdGhlclxuXG4gICAgICBjYXNlIE5vZGVLaW5kLkRFQ09SQVRPUjoge1xuICAgICAgICB0aGlzLnZpc2l0RGVjb3JhdG9yTm9kZSg8RGVjb3JhdG9yTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVE1FTUJFUjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwb3J0TWVtYmVyKDxFeHBvcnRNZW1iZXI+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5QQVJBTUVURVI6IHtcbiAgICAgICAgdGhpcy52aXNpdFBhcmFtZXRlcig8UGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlNXSVRDSENBU0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaENhc2UoPFN3aXRjaENhc2U+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFNvdXJjZShub2RlOiBTb3VyY2UpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN0bXQgb2Ygbm9kZS5zdGF0ZW1lbnRzKSB7XG4gICAgICB0aGlzLmRlcHRoKys7XG4gICAgICB0aGlzLnZpc2l0KHN0bXQpO1xuICAgICAgdGhpcy5kZXB0aC0tO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VHlwZU5vZGUobm9kZTogVHlwZU5vZGUpOiB2b2lkIHt9XG5cbiAgdmlzaXRUeXBlTmFtZShub2RlOiBUeXBlTmFtZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5pZGVudGlmaWVyKTtcbiAgICBpZiAobm9kZS5uZXh0KSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0TmFtZWRUeXBlTm9kZShub2RlOiBOYW1lZFR5cGVOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlQXJndW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25UeXBlTm9kZShub2RlOiBGdW5jdGlvblR5cGVOb2RlKTogdm9pZCB7XG4gICAgZm9yIChsZXQgcGFyYW0gb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLnZpc2l0KHBhcmFtKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLnJldHVyblR5cGUpO1xuICB9XG5cbiAgdmlzaXRUeXBlUGFyYW1ldGVyKG5vZGU6IFR5cGVQYXJhbWV0ZXJOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIGlmIChub2RlLmRlZmF1bHRUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZGVmYXVsdFR5cGUpO1xuICB9XG5cbiAgdmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlOiBJZGVudGlmaWVyRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdEFycmF5TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogQXJyYXlMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIG5vZGUuZWxlbWVudEV4cHJlc3Npb25zLm1hcCgoZTogRXhwcmVzc2lvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKGUpIHRoaXMudmlzaXQoZSk7XG4gICAgfSk7XG4gIH1cblxuICB2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKG5vZGUudmFsdWVzICYmIG5vZGUubmFtZXMpIHtcbiAgICAgIGFzc2VydChub2RlLnZhbHVlcy5sZW5ndGggPT0gbm9kZS5uYW1lcy5sZW5ndGgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLnZpc2l0KG5vZGUubmFtZXNbaV0pO1xuICAgICAgICB0aGlzLnZpc2l0KG5vZGUudmFsdWVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2aXNpdEFzc2VydGlvbkV4cHJlc3Npb24obm9kZTogQXNzZXJ0aW9uRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmIChub2RlLnRvVHlwZSkgdGhpcy52aXNpdChub2RlLnRvVHlwZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdmlzaXRCaW5hcnlFeHByZXNzaW9uKG5vZGU6IEJpbmFyeUV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubGVmdCk7XG4gICAgdGhpcy52aXNpdChub2RlLnJpZ2h0KTtcbiAgfVxuXG4gIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZTogQ2FsbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGVBcmd1bWVudHMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5hcmd1bWVudHMpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0V4cHJlc3Npb24obm9kZTogQ2xhc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHZpc2l0Q29tbWFFeHByZXNzaW9uKG5vZGU6IENvbW1hRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5leHByZXNzaW9ucyk7XG4gIH1cblxuICB2aXNpdEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKG5vZGU6IEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmVsZW1lbnRFeHByZXNzaW9uKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbihub2RlOiBGdW5jdGlvbkV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjbGFyYXRpb24pO1xuICB9XG5cbiAgdmlzaXRMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIC8vIG5vZGUuXG4gIH1cblxuICB2aXNpdEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogRmxvYXRMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdEluc3RhbmNlT2ZFeHByZXNzaW9uKG5vZGU6IEluc3RhbmNlT2ZFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pc1R5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24obm9kZTogSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0U3RyaW5nTGl0ZXJhbChzdHI6IHN0cmluZywgc2luZ2xlUXVvdGVkPzogYm9vbGVhbik6IHZvaWQge31cblxuICB2aXNpdFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKG5vZGU6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0UmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24obm9kZTogUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXROZXdFeHByZXNzaW9uKG5vZGU6IE5ld0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGVBcmd1bWVudHMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5hcmd1bWVudHMpO1xuICB9XG5cbiAgdmlzaXRQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihub2RlOiBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5leHByZXNzaW9uKTtcbiAgfVxuXG4gIHZpc2l0UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGU6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5wcm9wZXJ0eSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlOiBUZXJuYXJ5RXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pZlRoZW4pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pZkVsc2UpO1xuICB9XG5cbiAgdmlzaXRVbmFyeUV4cHJlc3Npb24obm9kZTogVW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm9wZXJhbmQpO1xuICB9XG5cbiAgdmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKG5vZGU6IFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUub3BlcmFuZCk7XG4gIH1cblxuICB2aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbihub2RlOiBVbmFyeVByZWZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUub3BlcmFuZCk7XG4gIH1cblxuICB2aXNpdFN1cGVyRXhwcmVzc2lvbihub2RlOiBTdXBlckV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXRGYWxzZUV4cHJlc3Npb24obm9kZTogRmFsc2VFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0VHJ1ZUV4cHJlc3Npb24obm9kZTogVHJ1ZUV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXRUaGlzRXhwcmVzc2lvbihub2RlOiBUaGlzRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdE51bGxFeHBlcnNzaW9uKG5vZGU6IE51bGxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0Q29uc3RydWN0b3JFeHByZXNzaW9uKG5vZGU6IENvbnN0cnVjdG9yRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50OiBTdGF0ZW1lbnQpOiB2b2lkIHt9XG5cbiAgdmlzaXRCbG9ja1N0YXRlbWVudChub2RlOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50cyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXRCcmVha1N0YXRlbWVudChub2RlOiBCcmVha1N0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLmxhYmVsKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUubGFiZWwpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0Q29udGludWVTdGF0ZW1lbnQobm9kZTogQ29udGludWVTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5sYWJlbCkge1xuICAgICAgdGhpcy52aXNpdChub2RlLmxhYmVsKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbiwgaXNEZWZhdWx0PzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIGFzc2VydChcbiAgICAgIG5vZGUuaXNHZW5lcmljID8gbm9kZS50eXBlUGFyYW1ldGVycyAhPSBudWxsIDogbm9kZS50eXBlUGFyYW1ldGVycyA9PSBudWxsXG4gICAgKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0KG5vZGUuaW1wbGVtZW50c1R5cGVzKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUubWVtYmVycyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXREb1N0YXRlbWVudChub2RlOiBEb1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgdmlzaXRFbXB0eVN0YXRlbWVudChub2RlOiBFbXB0eVN0YXRlbWVudCk6IHZvaWQge31cblxuICB2aXNpdEVudW1EZWNsYXJhdGlvbihub2RlOiBFbnVtRGVjbGFyYXRpb24sIGlzRGVmYXVsdD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS52YWx1ZXMpO1xuICB9XG5cbiAgdmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbihub2RlOiBFbnVtVmFsdWVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplcikge1xuICAgICAgdGhpcy52aXNpdChub2RlLmluaXRpYWxpemVyKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudChub2RlOiBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4dGVybmFsTmFtZSk7XG4gIH1cblxuICB2aXNpdEV4cG9ydE1lbWJlcihub2RlOiBFeHBvcnRNZW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubG9jYWxOYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwb3J0ZWROYW1lKTtcbiAgfVxuXG4gIHZpc2l0RXhwb3J0U3RhdGVtZW50KG5vZGU6IEV4cG9ydFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLnBhdGgpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS5wYXRoKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLm1lbWJlcnMpO1xuICB9XG5cbiAgdmlzaXRFeHBvcnREZWZhdWx0U3RhdGVtZW50KG5vZGU6IEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjbGFyYXRpb24pO1xuICB9XG5cbiAgdmlzaXRFeHByZXNzaW9uU3RhdGVtZW50KG5vZGU6IEV4cHJlc3Npb25TdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZpZWxkRGVjbGFyYXRpb24obm9kZTogRmllbGREZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS50eXBlKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUudHlwZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmluaXRpYWxpemVyKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjb3JhdG9ycyk7XG4gIH1cblxuICB2aXNpdEZvclN0YXRlbWVudChub2RlOiBGb3JTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplcikgdGhpcy52aXNpdChub2RlLmluaXRpYWxpemVyKTtcbiAgICBpZiAobm9kZS5jb25kaXRpb24pIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIGlmIChub2RlLmluY3JlbWVudG9yKSB0aGlzLnZpc2l0KG5vZGUuaW5jcmVtZW50b3IpO1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkRlY2xhcmF0aW9uKFxuICAgIG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24sXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIGlmIChub2RlLmlzR2VuZXJpYykge1xuICAgICAgdGhpcy52aXNpdChub2RlLnR5cGVQYXJhbWV0ZXJzKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLnNpZ25hdHVyZSk7XG4gICAgdGhpcy5kZXB0aCsrO1xuICAgIGlmIChub2RlLmJvZHkpIHRoaXMudmlzaXQobm9kZS5ib2R5KTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uQ29tbW9uKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpc2l0KG5vZGUubmFtZSlcbiAgfVxuXG4gIHZpc2l0SWZTdGF0ZW1lbnQobm9kZTogSWZTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuY29uZGl0aW9uKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuaWZUcnVlKTtcbiAgICBpZiAobm9kZS5pZkZhbHNlKSB0aGlzLnZpc2l0KG5vZGUuaWZGYWxzZSk7XG4gIH1cblxuICB2aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IEltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmZvcmVpZ25OYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICB9XG5cbiAgdmlzaXRJbXBvcnRTdGF0ZW1lbnQobm9kZTogSW1wb3J0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKG5vZGUubmFtZXNwYWNlTmFtZSkgdGhpcy52aXNpdChub2RlLm5hbWVzcGFjZU5hbWUpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNsYXJhdGlvbnMpO1xuICB9XG5cbiAgdmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG5vZGU6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgLy8gdGhpcy52aXNpdChub2RlLmtleVR5cGUpO1xuICAgIC8vIHRoaXMudmlzaXQobm9kZS52YWx1ZVR5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbihcbiAgICBub2RlOiBJbnRlcmZhY2VEZWNsYXJhdGlvbixcbiAgICBpc0RlZmF1bHQ/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIHRoaXMudmlzaXQobm9kZS5pbXBsZW1lbnRzVHlwZXMpO1xuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUubWVtYmVycyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXRNZXRob2REZWNsYXJhdGlvbihub2RlOiBNZXRob2REZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIHRoaXMudmlzaXQobm9kZS5zaWduYXR1cmUpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNvcmF0b3JzKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgaWYgKG5vZGUuYm9keSkgdGhpcy52aXNpdChub2RlLmJvZHkpO1xuICAgIHRoaXMuZGVwdGgtLTtcbiAgfVxuXG4gIHZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oXG4gICAgbm9kZTogTmFtZXNwYWNlRGVjbGFyYXRpb24sXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5tZW1iZXJzKTtcbiAgfVxuXG4gIHZpc2l0UmV0dXJuU3RhdGVtZW50KG5vZGU6IFJldHVyblN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLnZhbHVlKSB0aGlzLnZpc2l0KG5vZGUudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRTd2l0Y2hDYXNlKG5vZGU6IFN3aXRjaENhc2UpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5sYWJlbCkgdGhpcy52aXNpdChub2RlLmxhYmVsKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50cyk7XG4gIH1cblxuICB2aXNpdFN3aXRjaFN0YXRlbWVudChub2RlOiBTd2l0Y2hTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuY29uZGl0aW9uKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgdGhpcy52aXNpdChub2RlLmNhc2VzKTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdFRocm93U3RhdGVtZW50KG5vZGU6IFRocm93U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLnZhbHVlKTtcbiAgfVxuXG4gIHZpc2l0VHJ5U3RhdGVtZW50KG5vZGU6IFRyeVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnRzKTtcbiAgICBpZiAobm9kZS5jYXRjaFZhcmlhYmxlKSB0aGlzLnZpc2l0KG5vZGUuY2F0Y2hWYXJpYWJsZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmNhdGNoU3RhdGVtZW50cyk7XG4gICAgdGhpcy52aXNpdChub2RlLmZpbmFsbHlTdGF0ZW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0VHlwZURlY2xhcmF0aW9uKG5vZGU6IFR5cGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjb3JhdG9ycyk7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGUpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24obm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS50eXBlKSB0aGlzLnZpc2l0KG5vZGUudHlwZSk7XG4gICAgaWYgKG5vZGUuaW5pdGlhbGl6ZXIpIHRoaXMudmlzaXQobm9kZS5pbml0aWFsaXplcik7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlU3RhdGVtZW50KG5vZGU6IFZhcmlhYmxlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNsYXJhdGlvbnMpO1xuICB9XG5cbiAgdmlzaXRXaGlsZVN0YXRlbWVudChub2RlOiBXaGlsZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50KTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdFZvaWRTdGF0ZW1lbnQobm9kZTogVm9pZFN0YXRlbWVudCk6IHZvaWQge31cblxuICB2aXNpdENvbW1lbnQobm9kZTogQ29tbWVudE5vZGUpOiB2b2lkIHt9XG5cbiAgdmlzaXREZWNvcmF0b3JOb2RlKG5vZGU6IERlY29yYXRvck5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmFyZ3VtZW50cyk7XG4gIH1cblxuICB2aXNpdFBhcmFtZXRlcihub2RlOiBQYXJhbWV0ZXJOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIGlmIChub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbikge1xuICAgICAgdGhpcy52aXNpdChub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbik7XG4gICAgfVxuICAgIGlmIChub2RlLmluaXRpYWxpemVyKSB0aGlzLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlKTtcbiAgfVxuXG59XG4iXX0= + +/***/ }), + +/***/ "./src/index.ts": +/*!**********************!*\ + !*** ./src/index.ts ***! + \**********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +// tslint:disable: no-void-expression as-types as-variables +var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); +var common_1 = __webpack_require__(/*! ../../src/common */ "../src/common.ts"); +var sourceBuilder_1 = __webpack_require__(/*! ./sourceBuilder */ "./src/sourceBuilder.ts"); +var base_1 = __webpack_require__(/*! ./base */ "./src/base.ts"); +var preamble_1 = __webpack_require__(/*! ./preamble */ "./src/preamble.ts"); +function returnsVoid(node) { + return toString(node.signature.returnType) === "void"; +} +function numOfParameters(node) { + return node.signature.parameters.length; +} +function isComment(stmt) { + return stmt.kind == ast_1.NodeKind.COMMENT; +} +function hasNearDecorator(stmt) { + return stmt.text.includes("@nearfile") || isEntry(stmt); +} +function toString(node) { + return sourceBuilder_1.ASTBuilder.build(node); +} +function isEntry(source) { + var _source = ((source.kind == ast_1.NodeKind.SOURCE) ? source : source.range.source); + return _source.sourceKind == ast_1.SourceKind.USER_ENTRY; +} +function isArrayType(type) { + return !!((type.kind == ast_1.NodeKind.NAMEDTYPE) && + toString(type).startsWith("Array") && + type.typeArguments && + type.typeArguments.length > 0); +} +function isClass(type) { + return type.kind == ast_1.NodeKind.CLASSDECLARATION; +} +function isField(mem) { + return mem.kind == ast_1.NodeKind.FIELDDECLARATION; +} +function isReference(type) { + var simpleTypes = [ + "i32", + "u32", + "bool", + "i64", + "u64", + "boolean", + ]; + return !simpleTypes.includes(toString(type)); +} +// TODO: Extract this into separate module, preferrable pluggable +var NEARBindingsBuilder = /** @class */ (function (_super) { + __extends(NEARBindingsBuilder, _super); + function NEARBindingsBuilder() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.typeMapping = { + i32: "Integer", + u32: "Integer", + i64: "String", + u64: "String", + string: "String", + bool: "Boolean", + Uint8Array: "String", + }; + _this.nonNullableTypes = ["i32", "u32", "i64", "u64", "bool", "boolean"]; + _this.sb = []; + _this.exportedClasses = new Map(); + _this.wrappedFuncs = new Set(); + return _this; + } + NEARBindingsBuilder.build = function (parser, source) { + return (new NEARBindingsBuilder().build(source)); + }; + NEARBindingsBuilder.nearFiles = function (parser) { + return parser.program.sources.filter(hasNearDecorator); + }; + NEARBindingsBuilder.prototype.visitClassDeclaration = function (node) { + if (this.exportedClasses.has(toString(node.name))) + return; + this.exportedClasses.set(toString(node.name), node); + }; + NEARBindingsBuilder.prototype.visitFunctionDeclaration = function (node) { + if (!isEntry(node) + || this.wrappedFuncs.has(toString(node.name)) + || !node.is(common_1.CommonFlags.EXPORT) + || (numOfParameters(node) == 0 && returnsVoid(node))) { + _super.prototype.visitFunctionDeclaration.call(this, node); + return; + } + // if (numOfParameters(node) > 0){ + // this.generateArgsParser(node); + // } + this.generateWrapperFunction(node); + // Change function to not be an export + node.flags = node.flags ^ common_1.CommonFlags.EXPORT; + this.wrappedFuncs.add(toString(node.name)); + }; + /* + Create a wrapper function that will be export in the function's place. + */ + NEARBindingsBuilder.prototype.generateWrapperFunction = function (func) { + var signature = func.signature; + var params = signature.parameters; + var returnType = signature.returnType; + var returnTypeName = toString(returnType).split("|").filter(function (name) { return name.trim() !== "null"; }).join("|"); + var hasNull = toString(returnType).includes("null"); + var name = func.name.symbol; + this.sb.push("\n//@ts-ignore\nfunction __wrapper_" + name + "(): void {"); + if (params.length > 0) { + this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"); + } + if (toString(returnType) !== "void") { + this.sb.push(" let result: " + toString(returnType) + " = " + name + "("); + } + else { + this.sb.push(" " + name + "("); + } + if (params.length > 0) { + this.sb[this.sb.length - 1] += (params + .map(function (param) { return createDecodeStatement(param); }) + .join(", ")); + } + this.sb[this.sb.length - 1] += ");"; + if (toString(returnType) !== "void") { + this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<" + returnTypeName + ">() || isNullable<" + returnTypeName + ">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<" + returnTypeName + ">(encoder, result" + (hasNull ? "!" : "") + ", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"); + } + this.sb.push("}\n\nexport { __wrapper_" + name + " as " + name + " }\n"); + }; + NEARBindingsBuilder.prototype.typeName = function (type) { + if (!isClass(type)) { + return sourceBuilder_1.ASTBuilder.build(type); + } + type = (type); + var className = toString(type.name); + if (type.isGeneric) { + className += "<" + type.typeParameters.map(toString).join(", ") + ">"; + } + return className; + }; + NEARBindingsBuilder.prototype.getFields = function (type) { + var _class = ((isClass(type)) + ? type + : this.exportedClasses.get(toString(type))); + if (_class == null) { + return []; + } + return _class.members + .filter(function (member) { return member.kind == ast_1.NodeKind.FIELDDECLARATION; }) + .map(function (field) { + return { name: toString(field.name), type: field.type, isGeneric: isGeneric(_class, field) }; + }); + }; + NEARBindingsBuilder.prototype.build = function (source) { + var _this = this; + this.sb = [preamble_1.preamble]; + this.visit(source); + var sourceText = source.statements.map(function (stmt) { + var str = sourceBuilder_1.ASTBuilder.build(stmt); + if (isClass(stmt)) { + var _class = stmt; + str = str.slice(0, str.lastIndexOf("}")); + var fields = _class.members.filter(isField).map(function (field) { return field; }); + if (fields.some(function (field) { return field.type == null; })) { + throw new Error("All Fields must have explict type declaration."); + } + var className = _this.typeName(_class); + str += "\n static decode(json: Uint8Array): " + className + " {\n let value = instantiate<" + className + ">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): " + className + " {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, \"argument must be Uint8Array or Json Object\");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): " + className + " {\n " + createDecodeStatements(_class).join("\n ") + "\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n " + createEncodeStatements(_class).join("\n ") + "\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"; + } + return str; + }); + return this.sb.concat(sourceText).join("\n"); + }; + return NEARBindingsBuilder; +}(base_1.BaseVisitor)); +function createDecodeStatements(_class) { + return _class.members.filter(isField).map(function (field) { + var name = toString(field.name); + return createDecodeStatement(field, "this." + name + " = obj.has(\"" + name + "\") ? ") + (": this." + name + ";"); + }); +} +function createDecodeStatement(field, setterPrefix) { + if (setterPrefix === void 0) { setterPrefix = ""; } + var T = toString(field.type); + var name = toString(field.name); + return setterPrefix + "decode<" + T + ", Obj>(obj, \"" + name + "\")"; +} +function createEncodeStatements(_class) { + return _class.members.filter(isField).map(function (field) { + var T = toString(field.type); + var name = toString(field.name); + return "encode<" + T + ">(encoder, this." + name + ", \"" + name + "\");"; + }); +} +// TODO: Make work for non-simple generics e.g. field: Array +function isGeneric(_class, field) { + if (_class.typeParameters == null) { + return false; + } + return _class.typeParameters.some(function (param) { return toString(param.name) == toString(field.type); }); +} +function afterParse(parser, writeFile, baseDir) { + var files = NEARBindingsBuilder.nearFiles(parser); + files.forEach(function (source) { + var writeOut = source.text.substr(0, source.text.indexOf("\n")).includes("out"); + // Remove from logs in parser + parser.donelog.delete(source.internalPath); + parser.seenlog.delete(source.internalPath); + // Remove from programs sources + parser.program.sources = parser.program.sources.filter(function (_source) { return _source !== source; }); + // Build new Source + var sourceText = NEARBindingsBuilder.build(parser, source); + if (writeOut) { + writeFile("out/" + source.normalizedPath, sourceText, baseDir); + } + // Parses file and any new imports added to the source + parser.parseFile(sourceText, (isEntry(source) ? "" : "./") + source.normalizedPath, isEntry(source)); + }); +} +exports.afterParse = afterParse; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQTJEO0FBQzNELHFDQWN1QjtBQUN2QiwyQ0FBK0M7QUFHL0MsaURBQTZDO0FBQzdDLCtCQUFxQztBQUNyQyx1Q0FBc0M7QUFRdEMsU0FBUyxXQUFXLENBQUMsSUFBeUI7SUFDNUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUM7QUFDeEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLElBQXlCO0lBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFlO0lBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxjQUFRLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQVk7SUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVU7SUFDMUIsT0FBTywwQkFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsTUFBcUI7SUFDcEMsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksY0FBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEYsT0FBTyxPQUFPLENBQUMsVUFBVSxJQUFJLGdCQUFVLENBQUMsVUFBVSxDQUFDO0FB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QixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0QsSUFBSSxRQUFRLEVBQUU7WUFDYixTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQy9EO1FBQ0Qsc0RBQXNEO1FBQ3RELE1BQU0sQ0FBQyxTQUFTLENBQ2QsVUFBVSxFQUNWLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQ3JELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FDaEIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUwsQ0FBQztBQXhCRCxnQ0F3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTogbm8tdm9pZC1leHByZXNzaW9uIGFzLXR5cGVzIGFzLXZhcmlhYmxlc1xuaW1wb3J0IHtcbiAgU291cmNlLFxuICBOb2RlS2luZCxcbiAgQ2xhc3NEZWNsYXJhdGlvbixcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgVHlwZU5vZGUsXG4gIEZpZWxkRGVjbGFyYXRpb24sXG4gIFN0YXRlbWVudCxcbiAgTm9kZSxcbiAgTmFtZWRUeXBlTm9kZSxcbiAgU291cmNlS2luZCxcbiAgRGVjbGFyYXRpb25TdGF0ZW1lbnQsXG4gIFR5cGVOYW1lLFxuICBQYXJhbWV0ZXJOb2RlXG59IGZyb20gXCIuLi8uLi9zcmMvYXN0XCI7XG5pbXBvcnQgeyBDb21tb25GbGFncyB9IGZyb20gXCIuLi8uLi9zcmMvY29tbW9uXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi9tb2NrVHlwZXNcIjtcblxuaW1wb3J0IHsgQVNUQnVpbGRlciB9IGZyb20gXCIuL3NvdXJjZUJ1aWxkZXJcIjtcbmltcG9ydCB7IEJhc2VWaXNpdG9yIH0gZnJvbSBcIi4vYmFzZVwiO1xuaW1wb3J0IHsgcHJlYW1ibGUgfSBmcm9tIFwiLi9wcmVhbWJsZVwiO1xuXG5pbnRlcmZhY2UgU2ltcGxlRmllbGQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFR5cGVOb2RlO1xuICBpc0dlbmVyaWM6IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIHJldHVybnNWb2lkKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHRvU3RyaW5nKG5vZGUuc2lnbmF0dXJlLnJldHVyblR5cGUpID09PSBcInZvaWRcIjtcbn1cblxuZnVuY3Rpb24gbnVtT2ZQYXJhbWV0ZXJzKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiBudW1iZXIge1xuICByZXR1cm4gbm9kZS5zaWduYXR1cmUucGFyYW1ldGVycy5sZW5ndGg7XG59XG5cbmZ1bmN0aW9uIGlzQ29tbWVudChzdG10OiBTdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0bXQua2luZCA9PSBOb2RlS2luZC5DT01NRU5UO1xufVxuXG5mdW5jdGlvbiBoYXNOZWFyRGVjb3JhdG9yKHN0bXQ6IFNvdXJjZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RtdC50ZXh0LmluY2x1ZGVzKFwiQG5lYXJmaWxlXCIpIHx8IGlzRW50cnkoc3RtdCk7XG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nKG5vZGU6IE5vZGUpOiBzdHJpbmcge1xuICByZXR1cm4gQVNUQnVpbGRlci5idWlsZChub2RlKTtcbn1cblxuZnVuY3Rpb24gaXNFbnRyeShzb3VyY2U6IFNvdXJjZSB8IE5vZGUpOiBib29sZWFuIHtcbiAgbGV0IF9zb3VyY2UgPSA8U291cmNlPigoc291cmNlLmtpbmQgPT0gTm9kZUtpbmQuU09VUkNFKSA/IHNvdXJjZSA6IHNvdXJjZS5yYW5nZS5zb3VyY2UpO1xuICByZXR1cm4gX3NvdXJjZS5zb3VyY2VLaW5kID09IFNvdXJjZUtpbmQuVVNFUl9FTlRSWTtcbn1cblxuZnVuY3Rpb24gaXNBcnJheVR5cGUodHlwZTogVHlwZU5vZGUgfCBDbGFzc0RlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiAhIShcbiAgICAodHlwZS5raW5kID09IE5vZGVLaW5kLk5BTUVEVFlQRSkgJiZcbiAgICB0b1N0cmluZyh0eXBlKS5zdGFydHNXaXRoKFwiQXJyYXlcIikgJiZcbiAgICAoPE5hbWVkVHlwZU5vZGU+dHlwZSkudHlwZUFyZ3VtZW50cyAmJlxuICAgICg8TmFtZWRUeXBlTm9kZT50eXBlKS50eXBlQXJndW1lbnRzIS5sZW5ndGggPiAwXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzQ2xhc3ModHlwZTogTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZS5raW5kID09IE5vZGVLaW5kLkNMQVNTREVDTEFSQVRJT047XG59XG5cbmZ1bmN0aW9uIGlzRmllbGQobWVtOiBEZWNsYXJhdGlvblN0YXRlbWVudCkge1xuICByZXR1cm4gbWVtLmtpbmQgPT0gTm9kZUtpbmQuRklFTERERUNMQVJBVElPTjtcbn1cblxuZnVuY3Rpb24gaXNSZWZlcmVuY2UodHlwZTogVHlwZU5vZGUpOiBib29sZWFuIHtcbiAgbGV0IHNpbXBsZVR5cGVzID0gW1xuICAgIFwiaTMyXCIsXG4gICAgXCJ1MzJcIixcbiAgICBcImJvb2xcIixcbiAgICBcImk2NFwiLFxuICAgIFwidTY0XCIsXG4gICAgXCJib29sZWFuXCIsXG4gIF07XG4gIHJldHVybiAhc2ltcGxlVHlwZXMuaW5jbHVkZXModG9TdHJpbmcodHlwZSkpO1xufVxuXG4vLyBUT0RPOiBFeHRyYWN0IHRoaXMgaW50byBzZXBhcmF0ZSBtb2R1bGUsIHByZWZlcnJhYmxlIHBsdWdnYWJsZVxuY2xhc3MgTkVBUkJpbmRpbmdzQnVpbGRlciBleHRlbmRzIEJhc2VWaXNpdG9yIHtcbiAgcHJpdmF0ZSB0eXBlTWFwcGluZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBpMzI6IFwiSW50ZWdlclwiLFxuICAgIHUzMjogXCJJbnRlZ2VyXCIsXG4gICAgaTY0OiBcIlN0cmluZ1wiLFxuICAgIHU2NDogXCJTdHJpbmdcIixcbiAgICBzdHJpbmc6IFwiU3RyaW5nXCIsXG4gICAgYm9vbDogXCJCb29sZWFuXCIsXG4gICAgVWludDhBcnJheTogXCJTdHJpbmdcIixcbiAgfTtcblxuICBwcml2YXRlIG5vbk51bGxhYmxlVHlwZXMgPSBbXCJpMzJcIiwgXCJ1MzJcIiwgXCJpNjRcIiwgXCJ1NjRcIiwgXCJib29sXCIsIFwiYm9vbGVhblwiXTtcblxuICBwcml2YXRlIHNiOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGV4cG9ydGVkQ2xhc3NlczogTWFwPHN0cmluZywgQ2xhc3NEZWNsYXJhdGlvbj4gPSBuZXcgTWFwKCk7XG4gIHdyYXBwZWRGdW5jczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgc3RhdGljIGJ1aWxkKHBhcnNlcjogUGFyc2VyLCBzb3VyY2U6IFNvdXJjZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChuZXcgTkVBUkJpbmRpbmdzQnVpbGRlcigpLmJ1aWxkKHNvdXJjZSkpO1xuICB9XG5cbiAgc3RhdGljIG5lYXJGaWxlcyhwYXJzZXI6IFBhcnNlcik6IFNvdXJjZVtdIHtcbiAgICByZXR1cm4gcGFyc2VyLnByb2dyYW0uc291cmNlcy5maWx0ZXIoaGFzTmVhckRlY29yYXRvcik7XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5oYXModG9TdHJpbmcobm9kZS5uYW1lKSkpIHJldHVybjtcbiAgICB0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5zZXQodG9TdHJpbmcobm9kZS5uYW1lKSwgbm9kZSk7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZTogRnVuY3Rpb25EZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIGlmICghaXNFbnRyeShub2RlKVxuICAgICAgICB8fCB0aGlzLndyYXBwZWRGdW5jcy5oYXModG9TdHJpbmcobm9kZS5uYW1lKSlcbiAgICAgICAgfHwgIW5vZGUuaXMoQ29tbW9uRmxhZ3MuRVhQT1JUKVxuICAgICAgICB8fCAobnVtT2ZQYXJhbWV0ZXJzKG5vZGUpID09IDAgJiYgcmV0dXJuc1ZvaWQobm9kZSkpXG4gICAgICAgICkge1xuICAgICAgICBzdXBlci52aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gaWYgKG51bU9mUGFyYW1ldGVycyhub2RlKSA+IDApe1xuICAgIC8vICAgdGhpcy5nZW5lcmF0ZUFyZ3NQYXJzZXIobm9kZSk7XG4gICAgLy8gfVxuICAgIHRoaXMuZ2VuZXJhdGVXcmFwcGVyRnVuY3Rpb24obm9kZSk7XG4gICAgLy8gQ2hhbmdlIGZ1bmN0aW9uIHRvIG5vdCBiZSBhbiBleHBvcnRcbiAgICBub2RlLmZsYWdzID0gbm9kZS5mbGFncyBeIENvbW1vbkZsYWdzLkVYUE9SVDtcbiAgICB0aGlzLndyYXBwZWRGdW5jcy5hZGQodG9TdHJpbmcobm9kZS5uYW1lKSk7XG4gIH1cblxuICAvKlxuICBDcmVhdGUgYSB3cmFwcGVyIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleHBvcnQgaW4gdGhlIGZ1bmN0aW9uJ3MgcGxhY2UuXG4gICovXG4gIHByaXZhdGUgZ2VuZXJhdGVXcmFwcGVyRnVuY3Rpb24oZnVuYzogRnVuY3Rpb25EZWNsYXJhdGlvbikge1xuICAgIGxldCBzaWduYXR1cmUgPSBmdW5jLnNpZ25hdHVyZTtcbiAgICBsZXQgcGFyYW1zID0gc2lnbmF0dXJlLnBhcmFtZXRlcnM7XG4gICAgbGV0IHJldHVyblR5cGUgPSBzaWduYXR1cmUucmV0dXJuVHlwZTtcbiAgICBsZXQgcmV0dXJuVHlwZU5hbWUgPSB0b1N0cmluZyhyZXR1cm5UeXBlKS5zcGxpdChcInxcIikuZmlsdGVyKG5hbWUgPT4gbmFtZS50cmltKCkgIT09IFwibnVsbFwiKS5qb2luKFwifFwiKTtcbiAgICBsZXQgaGFzTnVsbCA9IHRvU3RyaW5nKHJldHVyblR5cGUpLmluY2x1ZGVzKFwibnVsbFwiKTtcbiAgICBsZXQgbmFtZSA9IGZ1bmMubmFtZS5zeW1ib2w7XG4gICAgdGhpcy5zYi5wdXNoKGBcbi8vQHRzLWlnbm9yZVxuZnVuY3Rpb24gX193cmFwcGVyXyR7bmFtZX0oKTogdm9pZCB7YCk7XG4gICBpZiAocGFyYW1zLmxlbmd0aCA+IDApe1xuICAgICB0aGlzLnNiLnB1c2goXG5gICAvLyBSZWFkaW5nIGlucHV0IGJ5dGVzLlxuICBpbnB1dCgwKTtcbiAgbGV0IGpzb25fbGVuID0gcmVnaXN0ZXJfbGVuKDApO1xuICBpZiAoanNvbl9sZW4gPT0gVTMyLk1BWF9WQUxVRSkge1xuICAgIHBhbmljKCk7XG4gIH1cbiAgbGV0IGpzb24gPSBuZXcgVWludDhBcnJheShqc29uX2xlbiBhcyB1MzIpO1xuICByZWFkX3JlZ2lzdGVyKDAsIDx1c2l6ZT5qc29uLmJ1ZmZlcik7XG4gIGNvbnN0IG9iajogT2JqID0gSlNPTi5wYXJzZShqc29uKTtgKTtcbiAgICB9XG4gICAgaWYgKHRvU3RyaW5nKHJldHVyblR5cGUpICE9PSBcInZvaWRcIikge1xuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgbGV0IHJlc3VsdDogJHt0b1N0cmluZyhyZXR1cm5UeXBlKX0gPSAke25hbWV9KGApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNiLnB1c2goXG5gICAke25hbWV9KGApO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2JbdGhpcy5zYi5sZW5ndGggLSAxXSArPSAoXG4gICAgICAgIHBhcmFtc1xuICAgICAgICAgIC5tYXAoKHBhcmFtKSA9PiBjcmVhdGVEZWNvZGVTdGF0ZW1lbnQocGFyYW0pKVxuICAgICAgICAgIC5qb2luKFwiLCBcIilcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuc2JbdGhpcy5zYi5sZW5ndGggLSAxXSArPSBcIik7XCI7XG4gICAgaWYgKHRvU3RyaW5nKHJldHVyblR5cGUpICE9PSBcInZvaWRcIikge1xuICAgICAgdGhpcy5zYi5wdXNoKGBcbiAgbGV0IGVuY29kZXIgPSBuZXcgSlNPTkVuY29kZXIoKTtcbiAgaWYgKChpc1N0cmluZzwke3JldHVyblR5cGVOYW1lfT4oKSB8fCBpc051bGxhYmxlPCR7cmV0dXJuVHlwZU5hbWV9PigpKSAmJiByZXN1bHQgPT0gbnVsbCkge1xuICAgIGVuY29kZXIuc2V0TnVsbChudWxsKTtcbiAgfSBlbHNlIHtcbiAgICBlbmNvZGU8JHtyZXR1cm5UeXBlTmFtZX0+KGVuY29kZXIsIHJlc3VsdCR7aGFzTnVsbCA/IFwiIVwiIDogXCJcIn0sIG51bGwpO1xuICB9XG4gIGxldCB2YWw6IFVpbnQ4QXJyYXkgPSBlbmNvZGVyLnNlcmlhbGl6ZSgpO1xuICB2YWx1ZV9yZXR1cm4odmFsLmJ5dGVMZW5ndGgsIDx1c2l6ZT52YWwuYnVmZmVyKTtgKTtcbiAgICB9XG4gICAgdGhpcy5zYi5wdXNoKGB9XG5cbmV4cG9ydCB7IF9fd3JhcHBlcl8ke25hbWV9IGFzICR7bmFtZX0gfVxuYCk7XG4gIH1cbiAgXG4gIHByaXZhdGUgdHlwZU5hbWUodHlwZTogVHlwZU5vZGUgfCBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzQ2xhc3ModHlwZSkpIHtcbiAgICAgIHJldHVybiBBU1RCdWlsZGVyLmJ1aWxkKHR5cGUpO1xuICAgIH1cbiAgICB0eXBlID0gPENsYXNzRGVjbGFyYXRpb24+KHR5cGUpO1xuICAgIGxldCBjbGFzc05hbWUgPSB0b1N0cmluZyh0eXBlLm5hbWUpO1xuICAgIGlmICh0eXBlLmlzR2VuZXJpYykge1xuICAgICAgY2xhc3NOYW1lICs9IFwiPFwiICsgdHlwZS50eXBlUGFyYW1ldGVycyEubWFwKHRvU3RyaW5nKS5qb2luKFwiLCBcIikgKyBcIj5cIjtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRzKHR5cGU6IFR5cGVOb2RlIHwgQ2xhc3NEZWNsYXJhdGlvbik6IFNpbXBsZUZpZWxkW10ge1xuICAgIGxldCBfY2xhc3MgPSA8Q2xhc3NEZWNsYXJhdGlvbj4gKChpc0NsYXNzKHR5cGUpKVxuICAgICAgICA/IHR5cGVcbiAgICAgICAgOiB0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5nZXQodG9TdHJpbmcodHlwZSkpKTtcbiAgICBpZiAoX2NsYXNzID09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gX2NsYXNzLm1lbWJlcnNcbiAgICAgIC5maWx0ZXIobWVtYmVyID0+IG1lbWJlci5raW5kID09IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT04pXG4gICAgICAubWFwKFxuICAgICAgICAoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24pOiBTaW1wbGVGaWVsZCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgbmFtZTogdG9TdHJpbmcoZmllbGQubmFtZSksIHR5cGU6IGZpZWxkLnR5cGUhLCBpc0dlbmVyaWM6IGlzR2VuZXJpYyhfY2xhc3MsIGZpZWxkKX07XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBidWlsZChzb3VyY2U6IFNvdXJjZSk6IHN0cmluZyB7XG4gICAgICB0aGlzLnNiID0gW3ByZWFtYmxlXTtcbiAgICAgIHRoaXMudmlzaXQoc291cmNlKTtcbiAgICAgIGxldCBzb3VyY2VUZXh0ID0gc291cmNlLnN0YXRlbWVudHMubWFwKHN0bXQgPT4ge1xuICAgICAgICBsZXQgc3RyID0gQVNUQnVpbGRlci5idWlsZChzdG10KTtcbiAgICAgICAgaWYgKGlzQ2xhc3Moc3RtdCkpIHtcbiAgICAgICAgICBsZXQgX2NsYXNzID0gPENsYXNzRGVjbGFyYXRpb24+IHN0bXQ7XG4gICAgICAgICAgc3RyID0gc3RyLnNsaWNlKDAsIHN0ci5sYXN0SW5kZXhPZihcIn1cIikpO1xuICAgICAgICAgIGxldCBmaWVsZHMgPSBfY2xhc3MubWVtYmVycy5maWx0ZXIoaXNGaWVsZCkubWFwKChmaWVsZDogRmllbGREZWNsYXJhdGlvbikgPT4gZmllbGQpO1xuICAgICAgICAgIGlmIChmaWVsZHMuc29tZShmaWVsZCA9PiBmaWVsZC50eXBlID09IG51bGwpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbGwgRmllbGRzIG11c3QgaGF2ZSBleHBsaWN0IHR5cGUgZGVjbGFyYXRpb24uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgY2xhc3NOYW1lID0gdGhpcy50eXBlTmFtZShfY2xhc3MpO1xuICAgICAgICAgIHN0ciArPSBgXG4gIHN0YXRpYyBkZWNvZGUoanNvbjogVWludDhBcnJheSk6ICR7Y2xhc3NOYW1lfSB7XG4gICAgbGV0IHZhbHVlID0gaW5zdGFudGlhdGU8JHtjbGFzc05hbWV9PigpOyAvLyBBbGxvY2F0ZSB3aXRob3V0IGNvbnN0cnVjdG9yXG4gICAgcmV0dXJuIHZhbHVlLmRlY29kZTxVaW50OEFycmF5Pihqc29uKTtcbiAgfVxuXG4gIGRlY29kZTxWID0gVWludDhBcnJheT4oYnVmOiBWKTogJHtjbGFzc05hbWV9IHtcbiAgICBsZXQganNvbjogT2JqO1xuICAgIGlmIChidWYgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICBqc29uID0gSlNPTi5wYXJzZShidWYpO1xuICAgIH1lbHNlIHtcbiAgICAgIGFzc2VydChidWYgaW5zdGFuY2VvZiBPYmosIFwiYXJndW1lbnQgbXVzdCBiZSBVaW50OEFycmF5IG9yIEpzb24gT2JqZWN0XCIpO1xuICAgICAganNvbiA9IDxPYmo+IGJ1ZjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZShqc29uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlY29kZShvYmo6IE9iaik6ICR7Y2xhc3NOYW1lfSB7XG4gICAgJHtjcmVhdGVEZWNvZGVTdGF0ZW1lbnRzKF9jbGFzcykuam9pbihcIlxcbiAgICBcIil9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlbmNvZGUoX2VuY29kZXI6IEpTT05FbmNvZGVyIHwgbnVsbCA9IG51bGwsIG5hbWU6IHN0cmluZyB8IG51bGwgPSBcIlwiKTogSlNPTkVuY29kZXIge1xuICAgIGxldCBlbmNvZGVyID0gKF9lbmNvZGVyICE9IG51bGwgPyBfZW5jb2RlciA6IG5ldyBKU09ORW5jb2RlcigpKSE7XG4gICAgZW5jb2Rlci5wdXNoT2JqZWN0KG5hbWUpO1xuICAgICR7Y3JlYXRlRW5jb2RlU3RhdGVtZW50cyhfY2xhc3MpLmpvaW4oXCJcXG4gICAgXCIpfVxuICAgIGVuY29kZXIucG9wT2JqZWN0KCk7XG4gICAgcmV0dXJuIGVuY29kZXJcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5lbmNvZGUoKS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVuY29kZSgpLnRvU3RyaW5nKCk7XG4gIH1cbn1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRoaXMuc2IuY29uY2F0KHNvdXJjZVRleHQpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY29kZVN0YXRlbWVudHMoX2NsYXNzOiBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nW10ge1xuICByZXR1cm4gX2NsYXNzLm1lbWJlcnMuZmlsdGVyKGlzRmllbGQpLm1hcCgoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24pOiBzdHJpbmcgID0+IHtcbiAgICBjb25zdCBuYW1lID0gdG9TdHJpbmcoZmllbGQubmFtZSk7XG4gICAgcmV0dXJuIGNyZWF0ZURlY29kZVN0YXRlbWVudChmaWVsZCwgYHRoaXMuJHtuYW1lfSA9IG9iai5oYXMoXCIke25hbWV9XCIpID8gYCkgKyBgOiB0aGlzLiR7bmFtZX07YFxuICB9KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNvZGVTdGF0ZW1lbnQoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24gfCBQYXJhbWV0ZXJOb2RlLCBzZXR0ZXJQcmVmaXg6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xuICBsZXQgVCA9IHRvU3RyaW5nKGZpZWxkLnR5cGUhKTtcbiAgbGV0IG5hbWUgPSB0b1N0cmluZyhmaWVsZC5uYW1lKTtcbiAgcmV0dXJuIGAke3NldHRlclByZWZpeH1kZWNvZGU8JHtUfSwgT2JqPihvYmosIFwiJHtuYW1lfVwiKWA7XG5cbn1cblxuZnVuY3Rpb24gY3JlYXRlRW5jb2RlU3RhdGVtZW50cyhfY2xhc3M6IENsYXNzRGVjbGFyYXRpb24pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBfY2xhc3MubWVtYmVycy5maWx0ZXIoaXNGaWVsZCkubWFwKFxuICAgIChmaWVsZDogRmllbGREZWNsYXJhdGlvbik6IHN0cmluZyAgPT4ge1xuICAgICAgbGV0IFQgPSB0b1N0cmluZyhmaWVsZC50eXBlISk7XG4gICAgICBsZXQgbmFtZSA9IHRvU3RyaW5nKGZpZWxkLm5hbWUpO1xuICAgICAgcmV0dXJuIGBlbmNvZGU8JHtUfT4oZW5jb2RlciwgdGhpcy4ke25hbWV9LCBcIiR7bmFtZX1cIik7YDtcbiAgICB9XG4gICk7XG59XG4vLyBUT0RPOiBNYWtlIHdvcmsgZm9yIG5vbi1zaW1wbGUgZ2VuZXJpY3MgZS5nLiBmaWVsZDogQXJyYXk8VD5cbmZ1bmN0aW9uIGlzR2VuZXJpYyhfY2xhc3M6IENsYXNzRGVjbGFyYXRpb24sIGZpZWxkOiBGaWVsZERlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gIGlmIChfY2xhc3MudHlwZVBhcmFtZXRlcnMgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gX2NsYXNzLnR5cGVQYXJhbWV0ZXJzLnNvbWUocGFyYW0gPT4gdG9TdHJpbmcocGFyYW0ubmFtZSkgPT0gdG9TdHJpbmcoZmllbGQudHlwZSEpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFmdGVyUGFyc2UocGFyc2VyOiBQYXJzZXIsIHdyaXRlRmlsZTogRmlsZVdyaXRlciwgYmFzZURpcjogc3RyaW5nKTogdm9pZCB7XG4gIGxldCBmaWxlcyA9IE5FQVJCaW5kaW5nc0J1aWxkZXIubmVhckZpbGVzKHBhcnNlcik7XG4gIGZpbGVzLmZvckVhY2goc291cmNlID0+IHtcbiAgICBsZXQgd3JpdGVPdXQgPSBzb3VyY2UudGV4dC5zdWJzdHIoMCwgc291cmNlLnRleHQuaW5kZXhPZihcIlxcblwiKSkuaW5jbHVkZXMoXCJvdXRcIik7XG4gICAgLy8gUmVtb3ZlIGZyb20gbG9ncyBpbiBwYXJzZXJcbiAgICBwYXJzZXIuZG9uZWxvZy5kZWxldGUoc291cmNlLmludGVybmFsUGF0aCk7XG4gICAgcGFyc2VyLnNlZW5sb2cuZGVsZXRlKHNvdXJjZS5pbnRlcm5hbFBhdGgpO1xuICAgIC8vIFJlbW92ZSBmcm9tIHByb2dyYW1zIHNvdXJjZXNcbiAgICBwYXJzZXIucHJvZ3JhbS5zb3VyY2VzID0gcGFyc2VyLnByb2dyYW0uc291cmNlcy5maWx0ZXIoXG4gICAgICAoX3NvdXJjZTogU291cmNlKSA9PiBfc291cmNlICE9PSBzb3VyY2VcbiAgICApO1xuICAgIC8vIEJ1aWxkIG5ldyBTb3VyY2VcbiAgICBsZXQgc291cmNlVGV4dCA9IE5FQVJCaW5kaW5nc0J1aWxkZXIuYnVpbGQocGFyc2VyLCBzb3VyY2UpO1xuICAgIGlmICh3cml0ZU91dCkge1xuICAgICB3cml0ZUZpbGUoXCJvdXQvXCIgKyBzb3VyY2Uubm9ybWFsaXplZFBhdGgsIHNvdXJjZVRleHQsIGJhc2VEaXIpO1xuICAgIH1cbiAgICAvLyBQYXJzZXMgZmlsZSBhbmQgYW55IG5ldyBpbXBvcnRzIGFkZGVkIHRvIHRoZSBzb3VyY2VcbiAgICBwYXJzZXIucGFyc2VGaWxlKFxuICAgICAgc291cmNlVGV4dCxcbiAgICAgIChpc0VudHJ5KHNvdXJjZSkgPyBcIlwiIDogXCIuL1wiKSArIHNvdXJjZS5ub3JtYWxpemVkUGF0aCxcbiAgICAgIGlzRW50cnkoc291cmNlKVxuICAgICk7XG4gIH0pO1xuXG59XG4iXX0= + +/***/ }), + +/***/ "./src/preamble.ts": +/*!*************************!*\ + !*** ./src/preamble.ts ***! + \*************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.preamble = "import { base64 } from \"near-runtime-ts\";\nimport { JSONEncoder } from \"assemblyscript-json\";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\n"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYW1ibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJlYW1ibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDYSxRQUFBLFFBQVEsR0FBRyw4TEFHdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNvbnN0IHByZWFtYmxlID0gYGltcG9ydCB7IGJhc2U2NCB9IGZyb20gXCJuZWFyLXJ1bnRpbWUtdHNcIjtcbmltcG9ydCB7IEpTT05FbmNvZGVyIH0gZnJvbSBcImFzc2VtYmx5c2NyaXB0LWpzb25cIjtcbmltcG9ydCB7IEpTT05EZWNvZGVyLCBUaHJvd2luZ0pTT05IYW5kbGVyLCBEZWNvZGVyU3RhdGUgfSBmcm9tIFwiYXNzZW1ibHlzY3JpcHQtanNvblwiO1xuYDtcbiJdfQ== + +/***/ }), + +/***/ "./src/sourceBuilder.ts": +/*!******************************!*\ + !*** ./src/sourceBuilder.ts ***! + \******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); +__webpack_require__(/*! ../../std/portable/index */ "../std/portable/index.js"); +__webpack_require__(/*! ../../src/glue/js/float */ "../src/glue/js/float.js"); +__webpack_require__(/*! ../../src/glue/js/i64 */ "../src/glue/js/i64.js"); +var common_1 = __webpack_require__(/*! ../../src/common */ "../src/common.ts"); +var util_1 = __webpack_require__(/*! ../../src/util */ "../src/util/index.ts"); +var tokenizer_1 = __webpack_require__(/*! ../../src/tokenizer */ "../src/tokenizer.ts"); +/** An AST builder. */ +var ASTBuilder = /** @class */ (function () { + function ASTBuilder() { + this.sb = []; + this.indentLevel = 0; + } + /** Rebuilds the textual source from the specified AST, as far as possible. */ + ASTBuilder.build = function (node) { + var builder = new ASTBuilder(); + builder.visitNode(node); + return builder.finish(); + }; + ASTBuilder.prototype.visitNode = function (node) { + switch (node.kind) { + case ast_1.NodeKind.SOURCE: { + this.visitSource(node); + break; + } + // types + case ast_1.NodeKind.NAMEDTYPE: { + this.visitNamedTypeNode(node); + break; + } + case ast_1.NodeKind.FUNCTIONTYPE: { + this.visitFunctionTypeNode(node); + break; + } + case ast_1.NodeKind.TYPEPARAMETER: { + this.visitTypeParameter(node); + break; + } + // expressions + case ast_1.NodeKind.FALSE: + case ast_1.NodeKind.NULL: + case ast_1.NodeKind.SUPER: + case ast_1.NodeKind.THIS: + case ast_1.NodeKind.TRUE: + case ast_1.NodeKind.CONSTRUCTOR: + case ast_1.NodeKind.IDENTIFIER: { + this.visitIdentifierExpression(node); + break; + } + case ast_1.NodeKind.ASSERTION: { + this.visitAssertionExpression(node); + break; + } + case ast_1.NodeKind.BINARY: { + this.visitBinaryExpression(node); + break; + } + case ast_1.NodeKind.CALL: { + this.visitCallExpression(node); + break; + } + case ast_1.NodeKind.CLASS: { + this.visitClassExpression(node); + break; + } + case ast_1.NodeKind.COMMA: { + this.visitCommaExpression(node); + break; + } + case ast_1.NodeKind.ELEMENTACCESS: { + this.visitElementAccessExpression(node); + break; + } + case ast_1.NodeKind.FUNCTION: { + this.visitFunctionExpression(node); + break; + } + case ast_1.NodeKind.INSTANCEOF: { + this.visitInstanceOfExpression(node); + break; + } + case ast_1.NodeKind.LITERAL: { + this.visitLiteralExpression(node); + break; + } + case ast_1.NodeKind.NEW: { + this.visitNewExpression(node); + break; + } + case ast_1.NodeKind.PARENTHESIZED: { + this.visitParenthesizedExpression(node); + break; + } + case ast_1.NodeKind.PROPERTYACCESS: { + this.visitPropertyAccessExpression(node); + break; + } + case ast_1.NodeKind.TERNARY: { + this.visitTernaryExpression(node); + break; + } + case ast_1.NodeKind.UNARYPOSTFIX: { + this.visitUnaryPostfixExpression(node); + break; + } + case ast_1.NodeKind.UNARYPREFIX: { + this.visitUnaryPrefixExpression(node); + break; + } + // statements + case ast_1.NodeKind.BLOCK: { + this.visitBlockStatement(node); + break; + } + case ast_1.NodeKind.BREAK: { + this.visitBreakStatement(node); + break; + } + case ast_1.NodeKind.CONTINUE: { + this.visitContinueStatement(node); + break; + } + case ast_1.NodeKind.DO: { + this.visitDoStatement(node); + break; + } + case ast_1.NodeKind.EMPTY: { + this.visitEmptyStatement(node); + break; + } + case ast_1.NodeKind.EXPORT: { + this.visitExportStatement(node); + break; + } + case ast_1.NodeKind.EXPORTDEFAULT: { + this.visitExportDefaultStatement(node); + break; + } + case ast_1.NodeKind.EXPORTIMPORT: { + this.visitExportImportStatement(node); + break; + } + case ast_1.NodeKind.EXPRESSION: { + this.visitExpressionStatement(node); + break; + } + case ast_1.NodeKind.FOR: { + this.visitForStatement(node); + break; + } + case ast_1.NodeKind.IF: { + this.visitIfStatement(node); + break; + } + case ast_1.NodeKind.IMPORT: { + this.visitImportStatement(node); + break; + } + case ast_1.NodeKind.RETURN: { + this.visitReturnStatement(node); + break; + } + case ast_1.NodeKind.SWITCH: { + this.visitSwitchStatement(node); + break; + } + case ast_1.NodeKind.THROW: { + this.visitThrowStatement(node); + break; + } + case ast_1.NodeKind.TRY: { + this.visitTryStatement(node); + break; + } + case ast_1.NodeKind.VARIABLE: { + this.visitVariableStatement(node); + break; + } + case ast_1.NodeKind.WHILE: { + this.visitWhileStatement(node); + break; + } + // declaration statements + case ast_1.NodeKind.CLASSDECLARATION: { + this.visitClassDeclaration(node); + break; + } + case ast_1.NodeKind.ENUMDECLARATION: { + this.visitEnumDeclaration(node); + break; + } + case ast_1.NodeKind.ENUMVALUEDECLARATION: { + this.visitEnumValueDeclaration(node); + break; + } + case ast_1.NodeKind.FIELDDECLARATION: { + this.visitFieldDeclaration(node); + break; + } + case ast_1.NodeKind.FUNCTIONDECLARATION: { + this.visitFunctionDeclaration(node); + break; + } + case ast_1.NodeKind.IMPORTDECLARATION: { + this.visitImportDeclaration(node); + break; + } + case ast_1.NodeKind.INDEXSIGNATUREDECLARATION: { + this.visitIndexSignatureDeclaration(node); + break; + } + case ast_1.NodeKind.INTERFACEDECLARATION: { + this.visitInterfaceDeclaration(node); + break; + } + case ast_1.NodeKind.METHODDECLARATION: { + this.visitMethodDeclaration(node); + break; + } + case ast_1.NodeKind.NAMESPACEDECLARATION: { + this.visitNamespaceDeclaration(node); + break; + } + case ast_1.NodeKind.TYPEDECLARATION: { + this.visitTypeDeclaration(node); + break; + } + case ast_1.NodeKind.VARIABLEDECLARATION: { + this.visitVariableDeclaration(node); + break; + } + // other + case ast_1.NodeKind.DECORATOR: { + this.serializeDecorator(node); + break; + } + case ast_1.NodeKind.EXPORTMEMBER: { + this.visitExportMember(node); + break; + } + case ast_1.NodeKind.PARAMETER: { + this.serializeParameter(node); + break; + } + case ast_1.NodeKind.SWITCHCASE: { + this.visitSwitchCase(node); + break; + } + default: assert(false); + } + }; + ASTBuilder.prototype.visitSource = function (source) { + var statements = source.statements; + for (var i = 0, k = statements.length; i < k; ++i) { + this.visitNodeAndTerminate(statements[i]); + } + }; + // types + ASTBuilder.prototype.visitTypeNode = function (node) { + switch (node.kind) { + case ast_1.NodeKind.NAMEDTYPE: { + this.visitNamedTypeNode(node); + break; + } + case ast_1.NodeKind.FUNCTIONTYPE: { + this.visitFunctionTypeNode(node); + break; + } + default: assert(false); + } + }; + ASTBuilder.prototype.visitTypeName = function (node) { + this.visitIdentifierExpression(node.identifier); + var sb = this.sb; + var current = node.next; + while (current) { + sb.push("."); + this.visitIdentifierExpression(current.identifier); + current = current.next; + } + }; + ASTBuilder.prototype.visitNamedTypeNode = function (node) { + this.visitTypeName(node.name); + var typeArguments = node.typeArguments; + if (typeArguments) { + var numTypeArguments = typeArguments.length; + var sb = this.sb; + if (numTypeArguments) { + sb.push("<"); + this.visitTypeNode(typeArguments[0]); + for (var i = 1; i < numTypeArguments; ++i) { + sb.push(", "); + this.visitTypeNode(typeArguments[i]); + } + sb.push(">"); + } + if (node.isNullable) + sb.push(" | null"); + } + }; + ASTBuilder.prototype.visitFunctionTypeNode = function (node) { + var isNullable = node.isNullable; + var sb = this.sb; + sb.push(isNullable ? "((" : "("); + var explicitThisType = node.explicitThisType; + if (explicitThisType) { + sb.push("this: "); + this.visitTypeNode(explicitThisType); + } + var parameters = node.parameters; + var numParameters = parameters.length; + if (numParameters) { + if (explicitThisType) + sb.push(", "); + this.serializeParameter(parameters[0]); + for (var i = 1; i < numParameters; ++i) { + sb.push(", "); + this.serializeParameter(parameters[i]); + } + } + var returnType = node.returnType; + if (returnType) { + sb.push(") => "); + this.visitTypeNode(returnType); + } + else { + sb.push(") => void"); + } + if (isNullable) + sb.push(") | null"); + }; + ASTBuilder.prototype.visitTypeParameter = function (node) { + this.visitIdentifierExpression(node.name); + var extendsType = node.extendsType; + if (extendsType) { + this.sb.push(" extends "); + this.visitTypeNode(extendsType); + } + var defaultType = node.defaultType; + if (defaultType) { + this.sb.push("="); + this.visitTypeNode(defaultType); + } + }; + // expressions + ASTBuilder.prototype.visitIdentifierExpression = function (node) { + if (node.isQuoted) + this.visitStringLiteral(node.text); + else + this.sb.push(node.text); + }; + ASTBuilder.prototype.visitArrayLiteralExpression = function (node) { + var sb = this.sb; + sb.push("["); + var elements = node.elementExpressions; + var numElements = elements.length; + if (numElements) { + if (elements[0]) + this.visitNode(elements[0]); + for (var i = 1; i < numElements; ++i) { + sb.push(", "); + if (elements[i]) + this.visitNode(elements[i]); + } + } + sb.push("]"); + }; + ASTBuilder.prototype.visitObjectLiteralExpression = function (node) { + var sb = this.sb; + var names = node.names; + var values = node.values; + var numElements = names.length; + assert(numElements == values.length); + if (numElements) { + sb.push("{\n"); + util_1.indent(sb, ++this.indentLevel); + this.visitNode(names[0]); + sb.push(": "); + this.visitNode(values[0]); + for (var i = 1; i < numElements; ++i) { + sb.push(",\n"); + util_1.indent(sb, this.indentLevel); + var name = names[i]; + var value = values[i]; + if (name === value) { + this.visitNode(name); + } + else { + this.visitNode(name); + sb.push(": "); + this.visitNode(value); + } + } + sb.push("\n"); + util_1.indent(sb, --this.indentLevel); + sb.push("}"); + } + else { + sb.push("{}"); + } + }; + ASTBuilder.prototype.visitAssertionExpression = function (node) { + var sb = this.sb; + switch (node.assertionKind) { + case ast_1.AssertionKind.PREFIX: { + sb.push("<"); + this.visitTypeNode(assert(node.toType)); + sb.push(">"); + this.visitNode(node.expression); + break; + } + case ast_1.AssertionKind.AS: { + this.visitNode(node.expression); + sb.push(" as "); + this.visitTypeNode(assert(node.toType)); + break; + } + case ast_1.AssertionKind.NONNULL: { + this.visitNode(node.expression); + sb.push("!"); + break; + } + default: assert(false); + } + }; + ASTBuilder.prototype.visitBinaryExpression = function (node) { + var sb = this.sb; + this.visitNode(node.left); + sb.push(" "); + sb.push(tokenizer_1.operatorTokenToString(node.operator)); + sb.push(" "); + this.visitNode(node.right); + }; + ASTBuilder.prototype.visitCallExpression = function (node) { + var sb = this.sb; + this.visitNode(node.expression); + var typeArguments = node.typeArguments; + if (typeArguments) { + var numTypeArguments = typeArguments.length; + if (numTypeArguments) { + sb.push("<"); + this.visitTypeNode(typeArguments[0]); + for (var i = 1; i < numTypeArguments; ++i) { + sb.push(", "); + this.visitTypeNode(typeArguments[i]); + } + sb.push(">("); + } + } + else { + sb.push("("); + } + var args = node.arguments; + var numArgs = args.length; + if (numArgs) { + this.visitNode(args[0]); + for (var i = 1; i < numArgs; ++i) { + sb.push(", "); + this.visitNode(args[i]); + } + } + sb.push(")"); + }; + ASTBuilder.prototype.visitClassExpression = function (node) { + var declaration = node.declaration; + this.visitClassDeclaration(declaration); + }; + ASTBuilder.prototype.visitCommaExpression = function (node) { + var expressions = node.expressions; + var numExpressions = assert(expressions.length); + this.visitNode(expressions[0]); + var sb = this.sb; + for (var i = 1; i < numExpressions; ++i) { + sb.push(","); + this.visitNode(expressions[i]); + } + }; + ASTBuilder.prototype.visitElementAccessExpression = function (node) { + var sb = this.sb; + this.visitNode(node.expression); + sb.push("["); + this.visitNode(node.elementExpression); + sb.push("]"); + }; + ASTBuilder.prototype.visitFunctionExpression = function (node) { + var declaration = node.declaration; + if (!declaration.arrowKind) { + if (declaration.name.text.length) { + this.sb.push("function "); + } + else { + this.sb.push("function"); + } + } + else { + assert(declaration.name.text.length == 0); + } + this.visitFunctionCommon(declaration); + }; + ASTBuilder.prototype.visitLiteralExpression = function (node) { + switch (node.literalKind) { + case ast_1.LiteralKind.FLOAT: { + this.visitFloatLiteralExpression(node); + break; + } + case ast_1.LiteralKind.INTEGER: { + this.visitIntegerLiteralExpression(node); + break; + } + case ast_1.LiteralKind.STRING: { + this.visitStringLiteralExpression(node); + break; + } + case ast_1.LiteralKind.REGEXP: { + this.visitRegexpLiteralExpression(node); + break; + } + case ast_1.LiteralKind.ARRAY: { + this.visitArrayLiteralExpression(node); + break; + } + case ast_1.LiteralKind.OBJECT: { + this.visitObjectLiteralExpression(node); + break; + } + default: { + assert(false); + break; + } + } + }; + ASTBuilder.prototype.visitFloatLiteralExpression = function (node) { + this.sb.push(node.value.toString(10)); + }; + ASTBuilder.prototype.visitInstanceOfExpression = function (node) { + this.visitNode(node.expression); + this.sb.push(" instanceof "); + this.visitTypeNode(node.isType); + }; + ASTBuilder.prototype.visitIntegerLiteralExpression = function (node) { + this.sb.push(i64_to_string(node.value)); + }; + ASTBuilder.prototype.visitStringLiteral = function (str, singleQuoted) { + if (singleQuoted === void 0) { singleQuoted = false; } + var sb = this.sb; + var off = 0; + var quote = singleQuoted ? "'" : "\""; + sb.push(quote); + var i = 0; + for (var k = str.length; i < k;) { + switch (str.charCodeAt(i)) { + case 0 /* NULL */: { + if (i > off) + sb.push(str.substring(off, off = i + 1)); + sb.push("\\0"); + off = ++i; + break; + } + case 8 /* BACKSPACE */: { + if (i > off) + sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\b"); + break; + } + case 9 /* TAB */: { + if (i > off) + sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\t"); + break; + } + case 10 /* LINEFEED */: { + if (i > off) + sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\n"); + break; + } + case 11 /* VERTICALTAB */: { + if (i > off) + sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\v"); + break; + } + case 12 /* FORMFEED */: { + if (i > off) + sb.push(str.substring(off, i)); + off = ++i; + sb.push("\\f"); + break; + } + case 13 /* CARRIAGERETURN */: { + if (i > off) + sb.push(str.substring(off, i)); + sb.push("\\r"); + off = ++i; + break; + } + case 34 /* DOUBLEQUOTE */: { + if (!singleQuoted) { + if (i > off) + sb.push(str.substring(off, i)); + sb.push("\\\""); + off = ++i; + } + else { + ++i; + } + break; + } + case 39 /* SINGLEQUOTE */: { + if (singleQuoted) { + if (i > off) + sb.push(str.substring(off, i)); + sb.push("\\'"); + off = ++i; + } + else { + ++i; + } + break; + } + case 92 /* BACKSLASH */: { + if (i > off) + sb.push(str.substring(off, i)); + sb.push("\\\\"); + off = ++i; + break; + } + default: { + ++i; + break; + } + } + } + if (i > off) + sb.push(str.substring(off, i)); + sb.push(quote); + }; + ASTBuilder.prototype.visitStringLiteralExpression = function (node) { + this.visitStringLiteral(node.value); + }; + ASTBuilder.prototype.visitRegexpLiteralExpression = function (node) { + var sb = this.sb; + sb.push("/"); + sb.push(node.pattern); + sb.push("/"); + sb.push(node.patternFlags); + }; + ASTBuilder.prototype.visitNewExpression = function (node) { + this.sb.push("new "); + this.visitCallExpression(node); + }; + ASTBuilder.prototype.visitParenthesizedExpression = function (node) { + var sb = this.sb; + sb.push("("); + this.visitNode(node.expression); + sb.push(")"); + }; + ASTBuilder.prototype.visitPropertyAccessExpression = function (node) { + this.visitNode(node.expression); + this.sb.push("."); + this.visitIdentifierExpression(node.property); + }; + ASTBuilder.prototype.visitTernaryExpression = function (node) { + var sb = this.sb; + this.visitNode(node.condition); + sb.push(" ? "); + this.visitNode(node.ifThen); + sb.push(" : "); + this.visitNode(node.ifElse); + }; + ASTBuilder.prototype.visitUnaryExpression = function (node) { + switch (node.kind) { + case ast_1.NodeKind.UNARYPOSTFIX: { + this.visitUnaryPostfixExpression(node); + break; + } + case ast_1.NodeKind.UNARYPREFIX: { + this.visitUnaryPrefixExpression(node); + break; + } + default: assert(false); + } + }; + ASTBuilder.prototype.visitUnaryPostfixExpression = function (node) { + this.visitNode(node.operand); + this.sb.push(tokenizer_1.operatorTokenToString(node.operator)); + }; + ASTBuilder.prototype.visitUnaryPrefixExpression = function (node) { + this.sb.push(tokenizer_1.operatorTokenToString(node.operator)); + this.visitNode(node.operand); + }; + // statements + ASTBuilder.prototype.visitNodeAndTerminate = function (statement) { + this.visitNode(statement); + var sb = this.sb; + if (!sb.length || // leading EmptyStatement + statement.kind == ast_1.NodeKind.VARIABLE || // potentially assigns a FunctionExpression + statement.kind == ast_1.NodeKind.EXPRESSION // potentially assigns a FunctionExpression + ) { + sb.push(";\n"); + } + else { + var last = sb[sb.length - 1]; + var lastCharPos = last.length - 1; + if (lastCharPos >= 0 && (last.charCodeAt(lastCharPos) == 125 /* CLOSEBRACE */ || + last.charCodeAt(lastCharPos) == 59 /* SEMICOLON */)) { + sb.push("\n"); + } + else { + sb.push(";\n"); + } + } + }; + ASTBuilder.prototype.visitBlockStatement = function (node) { + var sb = this.sb; + var statements = node.statements; + var numStatements = statements.length; + if (numStatements) { + sb.push("{\n"); + var indentLevel = ++this.indentLevel; + for (var i = 0; i < numStatements; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(statements[i]); + } + util_1.indent(sb, --this.indentLevel); + sb.push("}"); + } + else { + sb.push("{}"); + } + }; + ASTBuilder.prototype.visitBreakStatement = function (node) { + var label = node.label; + if (label) { + this.sb.push("break "); + this.visitIdentifierExpression(label); + } + else { + this.sb.push("break"); + } + }; + ASTBuilder.prototype.visitContinueStatement = function (node) { + var label = node.label; + if (label) { + this.sb.push("continue "); + this.visitIdentifierExpression(label); + } + else { + this.sb.push("continue"); + } + }; + ASTBuilder.prototype.visitClassDeclaration = function (node, isDefault) { + if (isDefault === void 0) { isDefault = false; } + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + var sb = this.sb; + if (isDefault) { + sb.push("export default "); + } + else { + this.serializeExternalModifiers(node); + } + if (node.is(common_1.CommonFlags.ABSTRACT)) + sb.push("abstract "); + if (node.name.text.length) { + sb.push("class "); + this.visitIdentifierExpression(node.name); + } + else { + sb.push("class"); + } + var typeParameters = node.typeParameters; + if (typeParameters && typeParameters.length) { + sb.push("<"); + this.visitTypeParameter(typeParameters[0]); + for (var i = 1, k = typeParameters.length; i < k; ++i) { + sb.push(", "); + this.visitTypeParameter(typeParameters[i]); + } + sb.push(">"); + } + var extendsType = node.extendsType; + if (extendsType) { + sb.push(" extends "); + this.visitTypeNode(extendsType); + } + var implementsTypes = node.implementsTypes; + if (implementsTypes) { + var numImplementsTypes = implementsTypes.length; + if (numImplementsTypes) { + sb.push(" implements "); + this.visitTypeNode(implementsTypes[0]); + for (var i = 1; i < numImplementsTypes; ++i) { + sb.push(", "); + this.visitTypeNode(implementsTypes[i]); + } + } + } + var members = node.members; + var numMembers = members.length; + if (numMembers) { + sb.push(" {\n"); + var indentLevel = ++this.indentLevel; + for (var i = 0, k = members.length; i < k; ++i) { + var member = members[i]; + if (member.kind != ast_1.NodeKind.FIELDDECLARATION || member.parameterIndex < 0) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(member); + } + } + util_1.indent(sb, --this.indentLevel); + sb.push("}"); + } + else { + sb.push(" {}"); + } + }; + ASTBuilder.prototype.visitDoStatement = function (node) { + var sb = this.sb; + sb.push("do "); + this.visitNode(node.statement); + if (node.statement.kind == ast_1.NodeKind.BLOCK) { + sb.push(" while ("); + } + else { + sb.push(";\n"); + util_1.indent(sb, this.indentLevel); + sb.push("while ("); + } + this.visitNode(node.condition); + sb.push(")"); + }; + ASTBuilder.prototype.visitEmptyStatement = function (node) { + }; + ASTBuilder.prototype.visitEnumDeclaration = function (node, isDefault) { + if (isDefault === void 0) { isDefault = false; } + var sb = this.sb; + if (isDefault) { + sb.push("export default "); + } + else { + this.serializeExternalModifiers(node); + } + if (node.is(common_1.CommonFlags.CONST)) + sb.push("const "); + sb.push("enum "); + this.visitIdentifierExpression(node.name); + var values = node.values; + var numValues = values.length; + if (numValues) { + sb.push(" {\n"); + var indentLevel = ++this.indentLevel; + util_1.indent(sb, indentLevel); + this.visitEnumValueDeclaration(node.values[0]); + for (var i = 1; i < numValues; ++i) { + sb.push(",\n"); + util_1.indent(sb, indentLevel); + this.visitEnumValueDeclaration(node.values[i]); + } + sb.push("\n"); + util_1.indent(sb, --this.indentLevel); + sb.push("}"); + } + else { + sb.push(" {}"); + } + }; + ASTBuilder.prototype.visitEnumValueDeclaration = function (node) { + this.visitIdentifierExpression(node.name); + if (node.value) { + this.sb.push(" = "); + this.visitNode(node.value); + } + }; + ASTBuilder.prototype.visitExportImportStatement = function (node) { + var sb = this.sb; + sb.push("export import "); + this.visitIdentifierExpression(node.externalName); + sb.push(" = "); + this.visitIdentifierExpression(node.name); + }; + ASTBuilder.prototype.visitExportMember = function (node) { + this.visitIdentifierExpression(node.localName); + if (node.exportedName.text != node.localName.text) { + this.sb.push(" as "); + this.visitIdentifierExpression(node.exportedName); + } + }; + ASTBuilder.prototype.visitExportStatement = function (node) { + var sb = this.sb; + if (node.isDeclare) { + sb.push("declare "); + } + var members = node.members; + if (members && members.length) { + var numMembers = members.length; + sb.push("export {\n"); + var indentLevel = ++this.indentLevel; + util_1.indent(sb, indentLevel); + this.visitExportMember(members[0]); + for (var i = 1; i < numMembers; ++i) { + sb.push(",\n"); + util_1.indent(sb, indentLevel); + this.visitExportMember(members[i]); + } + --this.indentLevel; + sb.push("\n}"); + } + else { + sb.push("export {}"); + } + var path = node.path; + if (path) { + sb.push(" from "); + this.visitStringLiteralExpression(path); + } + sb.push(";"); + }; + ASTBuilder.prototype.visitExportDefaultStatement = function (node) { + var declaration = node.declaration; + switch (declaration.kind) { + case ast_1.NodeKind.ENUMDECLARATION: { + this.visitEnumDeclaration(declaration, true); + break; + } + case ast_1.NodeKind.FUNCTIONDECLARATION: { + this.visitFunctionDeclaration(declaration, true); + break; + } + case ast_1.NodeKind.CLASSDECLARATION: { + this.visitClassDeclaration(declaration, true); + break; + } + case ast_1.NodeKind.INTERFACEDECLARATION: { + this.visitInterfaceDeclaration(declaration, true); + break; + } + case ast_1.NodeKind.NAMESPACEDECLARATION: { + this.visitNamespaceDeclaration(declaration, true); + break; + } + default: assert(false); + } + }; + ASTBuilder.prototype.visitExpressionStatement = function (node) { + this.visitNode(node.expression); + }; + ASTBuilder.prototype.visitFieldDeclaration = function (node) { + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + this.serializeAccessModifiers(node); + this.visitIdentifierExpression(node.name); + var sb = this.sb; + if (node.flags & common_1.CommonFlags.DEFINITE_ASSIGNMENT) { + sb.push("!"); + } + var type = node.type; + if (type) { + sb.push(": "); + this.visitTypeNode(type); + } + var initializer = node.initializer; + if (initializer) { + sb.push(" = "); + this.visitNode(initializer); + } + }; + ASTBuilder.prototype.visitForStatement = function (node) { + var sb = this.sb; + sb.push("for ("); + var initializer = node.initializer; + if (initializer) { + this.visitNode(initializer); + } + var condition = node.condition; + if (condition) { + sb.push("; "); + this.visitNode(condition); + } + else { + sb.push(";"); + } + var incrementor = node.incrementor; + if (incrementor) { + sb.push("; "); + this.visitNode(incrementor); + } + else { + sb.push(";"); + } + sb.push(") "); + this.visitNode(node.statement); + }; + ASTBuilder.prototype.visitFunctionDeclaration = function (node, isDefault) { + if (isDefault === void 0) { isDefault = false; } + var sb = this.sb; + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + if (isDefault) { + sb.push("export default "); + } + else { + this.serializeExternalModifiers(node); + this.serializeAccessModifiers(node); + } + if (node.name.text.length) { + sb.push("function "); + } + else { + sb.push("function"); + } + this.visitFunctionCommon(node); + }; + ASTBuilder.prototype.visitFunctionCommon = function (node) { + var sb = this.sb; + this.visitIdentifierExpression(node.name); + var signature = node.signature; + var typeParameters = node.typeParameters; + if (typeParameters) { + var numTypeParameters = typeParameters.length; + if (numTypeParameters) { + sb.push("<"); + this.visitTypeParameter(typeParameters[0]); + for (var i = 1; i < numTypeParameters; ++i) { + sb.push(", "); + this.visitTypeParameter(typeParameters[i]); + } + sb.push(">"); + } + } + if (node.arrowKind == 2 /* ARROW_SINGLE */) { + var parameters = signature.parameters; + assert(parameters.length == 1); + assert(!signature.explicitThisType); + this.serializeParameter(parameters[0]); + } + else { + sb.push("("); + var parameters = signature.parameters; + var numParameters = parameters.length; + var explicitThisType = signature.explicitThisType; + if (explicitThisType) { + sb.push("this: "); + this.visitTypeNode(explicitThisType); + } + if (numParameters) { + if (explicitThisType) + sb.push(", "); + this.serializeParameter(parameters[0]); + for (var i = 1; i < numParameters; ++i) { + sb.push(", "); + this.serializeParameter(parameters[i]); + } + } + } + var body = node.body; + var returnType = signature.returnType; + if (node.arrowKind) { + if (body) { + if (node.arrowKind == 2 /* ARROW_SINGLE */) { + assert(ast_1.isTypeOmitted(returnType)); + } + else { + if (ast_1.isTypeOmitted(returnType)) { + sb.push(")"); + } + else { + sb.push("): "); + this.visitTypeNode(returnType); + } + } + sb.push(" => "); + this.visitNode(body); + } + else { + assert(!ast_1.isTypeOmitted(returnType)); + sb.push(" => "); + this.visitTypeNode(returnType); + } + } + else { + if (!ast_1.isTypeOmitted(returnType) && + !node.isAny(common_1.CommonFlags.CONSTRUCTOR | common_1.CommonFlags.SET)) { + sb.push("): "); + this.visitTypeNode(returnType); + } + else { + sb.push(")"); + } + if (body) { + sb.push(" "); + this.visitNode(body); + } + } + }; + ASTBuilder.prototype.visitIfStatement = function (node) { + var sb = this.sb; + sb.push("if ("); + this.visitNode(node.condition); + sb.push(") "); + var ifTrue = node.ifTrue; + this.visitNode(ifTrue); + if (ifTrue.kind != ast_1.NodeKind.BLOCK) { + sb.push(";\n"); + } + var ifFalse = node.ifFalse; + if (ifFalse) { + if (ifTrue.kind == ast_1.NodeKind.BLOCK) { + sb.push(" else "); + } + else { + sb.push("else "); + } + this.visitNode(ifFalse); + } + }; + ASTBuilder.prototype.visitImportDeclaration = function (node) { + var externalName = node.foreignName; + var name = node.name; + this.visitIdentifierExpression(externalName); + if (externalName.text != name.text) { + this.sb.push(" as "); + this.visitIdentifierExpression(name); + } + }; + ASTBuilder.prototype.visitImportStatement = function (node) { + var sb = this.sb; + sb.push("import "); + var declarations = node.declarations; + var namespaceName = node.namespaceName; + if (declarations) { + var numDeclarations = declarations.length; + if (numDeclarations) { + sb.push("{\n"); + var indentLevel = ++this.indentLevel; + util_1.indent(sb, indentLevel); + this.visitImportDeclaration(declarations[0]); + for (var i = 1; i < numDeclarations; ++i) { + sb.push(",\n"); + util_1.indent(sb, indentLevel); + this.visitImportDeclaration(declarations[i]); + } + --this.indentLevel; + sb.push("\n} from "); + } + else { + sb.push("{} from "); + } + } + else if (namespaceName) { + sb.push("* as "); + this.visitIdentifierExpression(namespaceName); + sb.push(" from "); + } + this.visitStringLiteralExpression(node.path); + }; + ASTBuilder.prototype.visitIndexSignatureDeclaration = function (node) { + var sb = this.sb; + sb.push("[key: "); + this.visitTypeNode(node.keyType); + sb.push("]: "); + this.visitTypeNode(node.valueType); + }; + ASTBuilder.prototype.visitInterfaceDeclaration = function (node, isDefault) { + if (isDefault === void 0) { isDefault = false; } + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + var sb = this.sb; + if (isDefault) { + sb.push("export default "); + } + else { + this.serializeExternalModifiers(node); + } + sb.push("interface "); + this.visitIdentifierExpression(node.name); + var typeParameters = node.typeParameters; + if (typeParameters && typeParameters.length) { + sb.push("<"); + this.visitTypeParameter(typeParameters[0]); + for (var i = 1, k = typeParameters.length; i < k; ++i) { + sb.push(", "); + this.visitTypeParameter(typeParameters[i]); + } + sb.push(">"); + } + var extendsType = node.extendsType; + if (extendsType) { + sb.push(" extends "); + this.visitTypeNode(extendsType); + } + // must not have implementsTypes + sb.push(" {\n"); + var indentLevel = ++this.indentLevel; + var members = node.members; + for (var i = 0, k = members.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(members[i]); + } + --this.indentLevel; + sb.push("}"); + }; + ASTBuilder.prototype.visitMethodDeclaration = function (node) { + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + this.serializeAccessModifiers(node); + if (node.is(common_1.CommonFlags.GET)) { + this.sb.push("get "); + } + else if (node.is(common_1.CommonFlags.SET)) { + this.sb.push("set "); + } + this.visitFunctionCommon(node); + }; + ASTBuilder.prototype.visitNamespaceDeclaration = function (node, isDefault) { + if (isDefault === void 0) { isDefault = false; } + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + var sb = this.sb; + if (isDefault) { + sb.push("export default "); + } + else { + this.serializeExternalModifiers(node); + } + sb.push("namespace "); + this.visitIdentifierExpression(node.name); + var members = node.members; + var numMembers = members.length; + if (numMembers) { + sb.push(" {\n"); + var indentLevel = ++this.indentLevel; + for (var i = 0, k = members.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(members[i]); + } + util_1.indent(sb, --this.indentLevel); + sb.push("}"); + } + else { + sb.push(" {}"); + } + }; + ASTBuilder.prototype.visitReturnStatement = function (node) { + var value = node.value; + if (value) { + this.sb.push("return "); + this.visitNode(value); + } + else { + this.sb.push("return"); + } + }; + ASTBuilder.prototype.visitSwitchCase = function (node) { + var sb = this.sb; + var label = node.label; + if (label) { + sb.push("case "); + this.visitNode(label); + sb.push(":\n"); + } + else { + sb.push("default:\n"); + } + var statements = node.statements; + var numStatements = statements.length; + if (numStatements) { + var indentLevel = ++this.indentLevel; + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(statements[0]); + for (var i = 1; i < numStatements; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(statements[i]); + } + --this.indentLevel; + } + }; + ASTBuilder.prototype.visitSwitchStatement = function (node) { + var sb = this.sb; + sb.push("switch ("); + this.visitNode(node.condition); + sb.push(") {\n"); + var indentLevel = ++this.indentLevel; + var cases = node.cases; + for (var i = 0, k = cases.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitSwitchCase(cases[i]); + sb.push("\n"); + } + --this.indentLevel; + sb.push("}"); + }; + ASTBuilder.prototype.visitThrowStatement = function (node) { + this.sb.push("throw "); + this.visitNode(node.value); + }; + ASTBuilder.prototype.visitTryStatement = function (node) { + var sb = this.sb; + sb.push("try {\n"); + var indentLevel = ++this.indentLevel; + var statements = node.statements; + for (var i = 0, k = statements.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(statements[i]); + } + var catchVariable = node.catchVariable; + if (catchVariable) { + util_1.indent(sb, indentLevel - 1); + sb.push("} catch ("); + this.visitIdentifierExpression(catchVariable); + sb.push(") {\n"); + var catchStatements = node.catchStatements; + if (catchStatements) { + for (var i = 0, k = catchStatements.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(catchStatements[i]); + } + } + } + var finallyStatements = node.finallyStatements; + if (finallyStatements) { + util_1.indent(sb, indentLevel - 1); + sb.push("} finally {\n"); + for (var i = 0, k = finallyStatements.length; i < k; ++i) { + util_1.indent(sb, indentLevel); + this.visitNodeAndTerminate(finallyStatements[i]); + } + } + util_1.indent(sb, indentLevel - 1); + sb.push("}"); + }; + ASTBuilder.prototype.visitTypeDeclaration = function (node) { + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + var sb = this.sb; + this.serializeExternalModifiers(node); + sb.push("type "); + this.visitIdentifierExpression(node.name); + var typeParameters = node.typeParameters; + if (typeParameters) { + var numTypeParameters = typeParameters.length; + if (numTypeParameters) { + sb.push("<"); + for (var i = 0; i < numTypeParameters; ++i) { + this.visitTypeParameter(typeParameters[i]); + } + sb.push(">"); + } + } + sb.push(" = "); + this.visitTypeNode(node.type); + }; + ASTBuilder.prototype.visitVariableDeclaration = function (node) { + this.visitIdentifierExpression(node.name); + var type = node.type; + var sb = this.sb; + if (node.flags & common_1.CommonFlags.DEFINITE_ASSIGNMENT) { + sb.push("!"); + } + if (type) { + sb.push(": "); + this.visitTypeNode(type); + } + var initializer = node.initializer; + if (initializer) { + sb.push(" = "); + this.visitNode(initializer); + } + }; + ASTBuilder.prototype.visitVariableStatement = function (node) { + var decorators = node.decorators; + if (decorators) { + for (var i = 0, k = decorators.length; i < k; ++i) { + this.serializeDecorator(decorators[i]); + } + } + var sb = this.sb; + var declarations = node.declarations; + var numDeclarations = assert(declarations.length); + var firstDeclaration = declarations[0]; + this.serializeExternalModifiers(firstDeclaration); + sb.push(firstDeclaration.is(common_1.CommonFlags.CONST) ? "const " : firstDeclaration.is(common_1.CommonFlags.LET) ? "let " : "var "); + this.visitVariableDeclaration(node.declarations[0]); + for (var i = 1; i < numDeclarations; ++i) { + sb.push(", "); + this.visitVariableDeclaration(node.declarations[i]); + } + }; + ASTBuilder.prototype.visitWhileStatement = function (node) { + var sb = this.sb; + sb.push("while ("); + this.visitNode(node.condition); + var statement = node.statement; + if (statement.kind == ast_1.NodeKind.EMPTY) { + sb.push(")"); + } + else { + sb.push(") "); + this.visitNode(node.statement); + } + }; + // other + ASTBuilder.prototype.serializeDecorator = function (node) { + var sb = this.sb; + sb.push("@"); + this.visitNode(node.name); + var args = node.arguments; + if (args) { + sb.push("("); + var numArgs = args.length; + if (numArgs) { + this.visitNode(args[0]); + for (var i = 1; i < numArgs; ++i) { + sb.push(", "); + this.visitNode(args[i]); + } + } + sb.push(")\n"); + } + else { + sb.push("\n"); + } + util_1.indent(sb, this.indentLevel); + }; + ASTBuilder.prototype.serializeParameter = function (node) { + var sb = this.sb; + var kind = node.parameterKind; + var implicitFieldDeclaration = node.implicitFieldDeclaration; + if (implicitFieldDeclaration) { + this.serializeAccessModifiers(implicitFieldDeclaration); + } + if (kind == ast_1.ParameterKind.REST) { + sb.push("..."); + } + this.visitIdentifierExpression(node.name); + var type = node.type; + var initializer = node.initializer; + if (type) { + if (kind == ast_1.ParameterKind.OPTIONAL && !initializer) + sb.push("?"); + if (!ast_1.isTypeOmitted(type)) { + sb.push(": "); + this.visitTypeNode(type); + } + } + if (initializer) { + sb.push(" = "); + this.visitNode(initializer); + } + }; + ASTBuilder.prototype.serializeExternalModifiers = function (node) { + var sb = this.sb; + if (node.is(common_1.CommonFlags.EXPORT)) { + sb.push("export "); + } + else if (node.is(common_1.CommonFlags.IMPORT)) { + sb.push("import "); + } + else if (node.is(common_1.CommonFlags.DECLARE)) { + sb.push("declare "); + } + }; + ASTBuilder.prototype.serializeAccessModifiers = function (node) { + var sb = this.sb; + if (node.is(common_1.CommonFlags.PUBLIC)) { + sb.push("public "); + } + else if (node.is(common_1.CommonFlags.PRIVATE)) { + sb.push("private "); + } + else if (node.is(common_1.CommonFlags.PROTECTED)) { + sb.push("protected "); + } + if (node.is(common_1.CommonFlags.STATIC)) { + sb.push("static "); + } + else if (node.is(common_1.CommonFlags.ABSTRACT)) { + sb.push("abstract "); + } + if (node.is(common_1.CommonFlags.READONLY)) { + sb.push("readonly "); + } + }; + ASTBuilder.prototype.finish = function () { + var ret = this.sb.join(""); + this.sb = []; + return ret; + }; + return ASTBuilder; +}()); +exports.ASTBuilder = ASTBuilder; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb3VyY2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUNBMEV1QjtBQUV2QixvQ0FBa0M7QUFDbEMsbUNBQWlDO0FBQ2pDLGlDQUErQjtBQUUvQiwyQ0FBK0M7QUFFL0MsdUNBQWtEO0FBRWxELGlEQUE4RDtBQUM5RCxzQkFBc0I7QUFDdEI7SUFBQTtRQVNVLE9BQUUsR0FBYSxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBUSxDQUFDLENBQUM7SUE2K0MvQixDQUFDO0lBci9DQyw4RUFBOEU7SUFDdkUsZ0JBQUssR0FBWixVQUFhLElBQVU7UUFDckIsSUFBSSxPQUFPLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMvQixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFLRCw4QkFBUyxHQUFULFVBQVUsSUFBVTtRQUNsQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxjQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQVMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07YUFDUDtZQUVELFFBQVE7WUFFUixLQUFLLGNBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFnQixJQUFJLENBQUMsQ0FBQztnQkFDN0MsTUFBTTthQUNQO1lBQ0QsS0FBSyxjQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxxQkFBcUIsQ0FBbUIsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELE1BQU07YUFDUDtZQUNELEtBQUssY0FBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQW9CLElBQUks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QztTQUN0QjtJQUNILENBQUM7SUFFRCwyQkFBTSxHQUFOO1FBQ0UsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDSCxpQkFBQztBQUFELENBQUMsQUF2L0NELElBdS9DQztBQXYvQ1ksZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZWNsYXJhdGlvblN0YXRlbWVudCxcbiAgTm9kZSxcbiAgTm9kZUtpbmQsXG4gIFNvdXJjZSxcbiAgTmFtZWRUeXBlTm9kZSxcbiAgRnVuY3Rpb25UeXBlTm9kZSxcbiAgVHlwZVBhcmFtZXRlck5vZGUsXG4gIElkZW50aWZpZXJFeHByZXNzaW9uLFxuICBBc3NlcnRpb25FeHByZXNzaW9uLFxuICBCaW5hcnlFeHByZXNzaW9uLFxuICBDYWxsRXhwcmVzc2lvbixcbiAgQ2xhc3NFeHByZXNzaW9uLFxuICBDb21tYUV4cHJlc3Npb24sXG4gIEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLFxuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIEluc3RhbmNlT2ZFeHByZXNzaW9uLFxuICBMaXRlcmFsRXhwcmVzc2lvbixcbiAgTmV3RXhwcmVzc2lvbixcbiAgUGFyZW50aGVzaXplZEV4cHJlc3Npb24sXG4gIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbixcbiAgVGVybmFyeUV4cHJlc3Npb24sXG4gIFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24sXG4gIFVuYXJ5UHJlZml4RXhwcmVzc2lvbixcbiAgQmxvY2tTdGF0ZW1lbnQsXG4gIEJyZWFrU3RhdGVtZW50LFxuICBDb250aW51ZVN0YXRlbWVudCxcbiAgRG9TdGF0ZW1lbnQsXG4gIEVtcHR5U3RhdGVtZW50LFxuICBFeHBvcnRTdGF0ZW1lbnQsXG4gIEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQsXG4gIEV4cG9ydEltcG9ydFN0YXRlbWVudCxcbiAgRXhwcmVzc2lvblN0YXRlbWVudCxcbiAgRm9yU3RhdGVtZW50LFxuICBJZlN0YXRlbWVudCxcbiAgSW1wb3J0U3RhdGVtZW50LFxuICBSZXR1cm5TdGF0ZW1lbnQsXG4gIFN3aXRjaFN0YXRlbWVudCxcbiAgVGhyb3dTdGF0ZW1lbnQsXG4gIFRyeVN0YXRlbWVudCxcbiAgVmFyaWFibGVTdGF0ZW1lbnQsXG4gIFdoaWxlU3RhdGVtZW50LFxuICBDbGFzc0RlY2xhcmF0aW9uLFxuICBFbnVtRGVjbGFyYXRpb24sXG4gIEVudW1WYWx1ZURlY2xhcmF0aW9uLFxuICBGaWVsZERlY2xhcmF0aW9uLFxuICBGdW5jdGlvbkRlY2xhcmF0aW9uLFxuICBJbXBvcnREZWNsYXJhdGlvbixcbiAgSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbixcbiAgSW50ZXJmYWNlRGVjbGFyYXRpb24sXG4gIE1ldGhvZERlY2xhcmF0aW9uLFxuICBOYW1lc3BhY2VEZWNsYXJhdGlvbixcbiAgVHlwZURlY2xhcmF0aW9uLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uLFxuICBEZWNvcmF0b3JOb2RlLFxuICBFeHBvcnRNZW1iZXIsXG4gIFBhcmFtZXRlck5vZGUsXG4gIFN3aXRjaENhc2UsXG4gIFR5cGVOb2RlLFxuICBUeXBlTmFtZSxcbiAgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbixcbiAgRXhwcmVzc2lvbixcbiAgT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sXG4gIEFzc2VydGlvbktpbmQsXG4gIExpdGVyYWxLaW5kLFxuICBGbG9hdExpdGVyYWxFeHByZXNzaW9uLFxuICBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24sXG4gIFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uLFxuICBSZWdleHBMaXRlcmFsRXhwcmVzc2lvbixcbiAgVW5hcnlFeHByZXNzaW9uLFxuICBTdGF0ZW1lbnQsXG4gIEFycm93S2luZCxcbiAgaXNUeXBlT21pdHRlZCxcbiAgUGFyYW1ldGVyS2luZFxufSBmcm9tIFwiLi4vLi4vc3JjL2FzdFwiO1xuXG5pbXBvcnQgXCIuLi8uLi9zdGQvcG9ydGFibGUvaW5kZXhcIjtcbmltcG9ydCBcIi4uLy4uL3NyYy9nbHVlL2pzL2Zsb2F0XCI7XG5pbXBvcnQgXCIuLi8uLi9zcmMvZ2x1ZS9qcy9pNjRcIjtcblxuaW1wb3J0IHsgQ29tbW9uRmxhZ3MgfSBmcm9tIFwiLi4vLi4vc3JjL2NvbW1vblwiO1xuXG5pbXBvcnQgeyBpbmRlbnQsIENoYXJDb2RlIH0gZnJvbSBcIi4uLy4uL3NyYy91dGlsXCI7XG5cbmltcG9ydCB7ICBvcGVyYXRvclRva2VuVG9TdHJpbmcsIH0gZnJvbSBcIi4uLy4uL3NyYy90b2tlbml6ZXJcIjtcbi8qKiBBbiBBU1QgYnVpbGRlci4gKi9cbmV4cG9ydCBjbGFzcyBBU1RCdWlsZGVyIHtcblxuICAvKiogUmVidWlsZHMgdGhlIHRleHR1YWwgc291cmNlIGZyb20gdGhlIHNwZWNpZmllZCBBU1QsIGFzIGZhciBhcyBwb3NzaWJsZS4gKi9cbiAgc3RhdGljIGJ1aWxkKG5vZGU6IE5vZGUpOiBzdHJpbmcge1xuICAgIHZhciBidWlsZGVyID0gbmV3IEFTVEJ1aWxkZXIoKTtcbiAgICBidWlsZGVyLnZpc2l0Tm9kZShub2RlKTtcbiAgICByZXR1cm4gYnVpbGRlci5maW5pc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgc2I6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaW5kZW50TGV2ZWw6IGkzMiA9IDA7XG5cbiAgdmlzaXROb2RlKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBOb2RlS2luZC5TT1VSQ0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFNvdXJjZSg8U291cmNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gdHlwZXNcblxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FRFRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVkVHlwZU5vZGUoPE5hbWVkVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GVU5DVElPTlRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uVHlwZU5vZGUoPEZ1bmN0aW9uVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKDxUeXBlUGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGV4cHJlc3Npb25zXG5cbiAgICAgIGNhc2UgTm9kZUtpbmQuRkFMU0U6XG4gICAgICBjYXNlIE5vZGVLaW5kLk5VTEw6XG4gICAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOlxuICAgICAgY2FzZSBOb2RlS2luZC5USElTOlxuICAgICAgY2FzZSBOb2RlS2luZC5UUlVFOlxuICAgICAgY2FzZSBOb2RlS2luZC5DT05TVFJVQ1RPUjpcbiAgICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjoge1xuICAgICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24oPElkZW50aWZpZXJFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQVNTRVJUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRBc3NlcnRpb25FeHByZXNzaW9uKDxBc3NlcnRpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQklOQVJZOiB7XG4gICAgICAgIHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKDxCaW5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0FMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24oPENhbGxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0xBU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdENsYXNzRXhwcmVzc2lvbig8Q2xhc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09NTUE6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbW1hRXhwcmVzc2lvbig8Q29tbWFFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzoge1xuICAgICAgICB0aGlzLnZpc2l0RWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oPEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbig8RnVuY3Rpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5TVEFOQ0VPRjoge1xuICAgICAgICB0aGlzLnZpc2l0SW5zdGFuY2VPZkV4cHJlc3Npb24oPEluc3RhbmNlT2ZFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTElURVJBTDoge1xuICAgICAgICB0aGlzLnZpc2l0TGl0ZXJhbEV4cHJlc3Npb24oPExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkVXOiB7XG4gICAgICAgIHRoaXMudmlzaXROZXdFeHByZXNzaW9uKDxOZXdFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUEFSRU5USEVTSVpFRDoge1xuICAgICAgICB0aGlzLnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oPFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbig8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEVSTkFSWToge1xuICAgICAgICB0aGlzLnZpc2l0VGVybmFyeUV4cHJlc3Npb24oPFRlcm5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdGVtZW50c1xuXG4gICAgICBjYXNlIE5vZGVLaW5kLkJMT0NLOiB7XG4gICAgICAgIHRoaXMudmlzaXRCbG9ja1N0YXRlbWVudCg8QmxvY2tTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5CUkVBSzoge1xuICAgICAgICB0aGlzLnZpc2l0QnJlYWtTdGF0ZW1lbnQoPEJyZWFrU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09OVElOVUU6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbnRpbnVlU3RhdGVtZW50KDxDb250aW51ZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkRPOiB7XG4gICAgICAgIHRoaXMudmlzaXREb1N0YXRlbWVudCg8RG9TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FTVBUWToge1xuICAgICAgICB0aGlzLnZpc2l0RW1wdHlTdGF0ZW1lbnQoPEVtcHR5U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRFeHBvcnRTdGF0ZW1lbnQoPEV4cG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoPEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FWFBPUlRJTVBPUlQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudCg8RXhwb3J0SW1wb3J0U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQUkVTU0lPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwcmVzc2lvblN0YXRlbWVudCg8RXhwcmVzc2lvblN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZPUjoge1xuICAgICAgICB0aGlzLnZpc2l0Rm9yU3RhdGVtZW50KDxGb3JTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JRjoge1xuICAgICAgICB0aGlzLnZpc2l0SWZTdGF0ZW1lbnQoPElmU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU1QT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnRTdGF0ZW1lbnQoPEltcG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlJFVFVSTjoge1xuICAgICAgICB0aGlzLnZpc2l0UmV0dXJuU3RhdGVtZW50KDxSZXR1cm5TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0g6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaFN0YXRlbWVudCg8U3dpdGNoU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEhST1c6IHtcbiAgICAgICAgdGhpcy52aXNpdFRocm93U3RhdGVtZW50KDxUaHJvd1N0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlRSWToge1xuICAgICAgICB0aGlzLnZpc2l0VHJ5U3RhdGVtZW50KDxUcnlTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5WQVJJQUJMRToge1xuICAgICAgICB0aGlzLnZpc2l0VmFyaWFibGVTdGF0ZW1lbnQoPFZhcmlhYmxlU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuV0hJTEU6IHtcbiAgICAgICAgdGhpcy52aXNpdFdoaWxlU3RhdGVtZW50KDxXaGlsZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2xhcmF0aW9uIHN0YXRlbWVudHNcblxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRU5VTURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtRGVjbGFyYXRpb24oPEVudW1EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1WQUxVRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbig8RW51bVZhbHVlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRGaWVsZERlY2xhcmF0aW9uKDxGaWVsZERlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklNUE9SVERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbig8SW1wb3J0RGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKDxJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5URVJGQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEludGVyZmFjZURlY2xhcmF0aW9uKDxJbnRlcmZhY2VEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLk1FVEhPRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRNZXRob2REZWNsYXJhdGlvbig8TWV0aG9kRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FU1BBQ0VERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oPE5hbWVzcGFjZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlRGVjbGFyYXRpb24oPFR5cGVEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlZBUklBQkxFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oPFZhcmlhYmxlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBvdGhlclxuXG4gICAgICBjYXNlIE5vZGVLaW5kLkRFQ09SQVRPUjoge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcig8RGVjb3JhdG9yTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVE1FTUJFUjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwb3J0TWVtYmVyKDxFeHBvcnRNZW1iZXI+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5QQVJBTUVURVI6IHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIoPFBhcmFtZXRlck5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0hDQVNFOiB7XG4gICAgICAgIHRoaXMudmlzaXRTd2l0Y2hDYXNlKDxTd2l0Y2hDYXNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTb3VyY2Uoc291cmNlOiBTb3VyY2UpOiB2b2lkIHtcbiAgICB2YXIgc3RhdGVtZW50cyA9IHNvdXJjZS5zdGF0ZW1lbnRzO1xuICAgIGZvciAobGV0IGkgPSAwLCBrID0gc3RhdGVtZW50cy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKHN0YXRlbWVudHNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHR5cGVzXG5cbiAgdmlzaXRUeXBlTm9kZShub2RlOiBUeXBlTm9kZSk6IHZvaWQge1xuICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICBjYXNlIE5vZGVLaW5kLk5BTUVEVFlQRToge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZWRUeXBlTm9kZSg8TmFtZWRUeXBlTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZVTkNUSU9OVFlQRToge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25UeXBlTm9kZSg8RnVuY3Rpb25UeXBlTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VHlwZU5hbWUobm9kZTogVHlwZU5hbWUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5pZGVudGlmaWVyKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBjdXJyZW50ID0gbm9kZS5uZXh0O1xuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBzYi5wdXNoKFwiLlwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihjdXJyZW50LmlkZW50aWZpZXIpO1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG4gIH1cblxuICB2aXNpdE5hbWVkVHlwZU5vZGUobm9kZTogTmFtZWRUeXBlTm9kZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXRUeXBlTmFtZShub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlQXJndW1lbnRzID0gbm9kZS50eXBlQXJndW1lbnRzO1xuICAgIGlmICh0eXBlQXJndW1lbnRzKSB7XG4gICAgICBsZXQgbnVtVHlwZUFyZ3VtZW50cyA9IHR5cGVBcmd1bWVudHMubGVuZ3RoO1xuICAgICAgbGV0IHNiID0gdGhpcy5zYjtcbiAgICAgIGlmIChudW1UeXBlQXJndW1lbnRzKSB7XG4gICAgICAgIHNiLnB1c2goXCI8XCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZUFyZ3VtZW50c1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVHlwZUFyZ3VtZW50czsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZSh0eXBlQXJndW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmlzTnVsbGFibGUpIHNiLnB1c2goXCIgfCBudWxsXCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25UeXBlTm9kZShub2RlOiBGdW5jdGlvblR5cGVOb2RlKTogdm9pZCB7XG4gICAgdmFyIGlzTnVsbGFibGUgPSBub2RlLmlzTnVsbGFibGU7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKGlzTnVsbGFibGUgPyBcIigoXCIgOiBcIihcIik7XG4gICAgdmFyIGV4cGxpY2l0VGhpc1R5cGUgPSBub2RlLmV4cGxpY2l0VGhpc1R5cGU7XG4gICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHtcbiAgICAgIHNiLnB1c2goXCJ0aGlzOiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZXhwbGljaXRUaGlzVHlwZSk7XG4gICAgfVxuICAgIHZhciBwYXJhbWV0ZXJzID0gbm9kZS5wYXJhbWV0ZXJzO1xuICAgIHZhciBudW1QYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgaWYgKG51bVBhcmFtZXRlcnMpIHtcbiAgICAgIGlmIChleHBsaWNpdFRoaXNUeXBlKSBzYi5wdXNoKFwiLCBcIik7XG4gICAgICB0aGlzLnNlcmlhbGl6ZVBhcmFtZXRlcihwYXJhbWV0ZXJzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciByZXR1cm5UeXBlID0gbm9kZS5yZXR1cm5UeXBlO1xuICAgIGlmIChyZXR1cm5UeXBlKSB7XG4gICAgICBzYi5wdXNoKFwiKSA9PiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIpID0+IHZvaWRcIik7XG4gICAgfVxuICAgIGlmIChpc051bGxhYmxlKSBzYi5wdXNoKFwiKSB8IG51bGxcIik7XG4gIH1cblxuICB2aXNpdFR5cGVQYXJhbWV0ZXIobm9kZTogVHlwZVBhcmFtZXRlck5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgZXh0ZW5kc1R5cGUgPSBub2RlLmV4dGVuZHNUeXBlO1xuICAgIGlmIChleHRlbmRzVHlwZSkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiIGV4dGVuZHMgXCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGV4dGVuZHNUeXBlKTtcbiAgICB9XG4gICAgdmFyIGRlZmF1bHRUeXBlID0gbm9kZS5kZWZhdWx0VHlwZTtcbiAgICBpZiAoZGVmYXVsdFR5cGUpIHtcbiAgICAgIHRoaXMuc2IucHVzaChcIj1cIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZGVmYXVsdFR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGV4cHJlc3Npb25zXG5cbiAgdmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlOiBJZGVudGlmaWVyRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmIChub2RlLmlzUXVvdGVkKSB0aGlzLnZpc2l0U3RyaW5nTGl0ZXJhbChub2RlLnRleHQpO1xuICAgIGVsc2UgdGhpcy5zYi5wdXNoKG5vZGUudGV4dCk7XG4gIH1cblxuICB2aXNpdEFycmF5TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogQXJyYXlMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIltcIik7XG4gICAgdmFyIGVsZW1lbnRzID0gbm9kZS5lbGVtZW50RXhwcmVzc2lvbnM7XG4gICAgdmFyIG51bUVsZW1lbnRzID0gZWxlbWVudHMubGVuZ3RoO1xuICAgIGlmIChudW1FbGVtZW50cykge1xuICAgICAgaWYgKGVsZW1lbnRzWzBdKSB0aGlzLnZpc2l0Tm9kZSg8RXhwcmVzc2lvbj5lbGVtZW50c1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bUVsZW1lbnRzOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICBpZiAoZWxlbWVudHNbaV0pIHRoaXMudmlzaXROb2RlKDxFeHByZXNzaW9uPmVsZW1lbnRzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2IucHVzaChcIl1cIik7XG4gIH1cblxuICB2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB2YXIgbmFtZXMgPSBub2RlLm5hbWVzO1xuICAgIHZhciB2YWx1ZXMgPSBub2RlLnZhbHVlcztcbiAgICB2YXIgbnVtRWxlbWVudHMgPSBuYW1lcy5sZW5ndGg7XG4gICAgYXNzZXJ0KG51bUVsZW1lbnRzID09IHZhbHVlcy5sZW5ndGgpO1xuICAgIGlmIChudW1FbGVtZW50cykge1xuICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsICsrdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShuYW1lc1swXSk7XG4gICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZXNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1FbGVtZW50czsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsXFxuXCIpO1xuICAgICAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICBsZXQgdmFsdWUgPSB2YWx1ZXNbaV07XG4gICAgICAgIGlmIChuYW1lID09PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5hbWUpO1xuICAgICAgICAgIHNiLnB1c2goXCI6IFwiKTtcbiAgICAgICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCJcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsIC0tdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICBzYi5wdXNoKFwifVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcInt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QXNzZXJ0aW9uRXhwcmVzc2lvbihub2RlOiBBc3NlcnRpb25FeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzd2l0Y2ggKG5vZGUuYXNzZXJ0aW9uS2luZCkge1xuICAgICAgY2FzZSBBc3NlcnRpb25LaW5kLlBSRUZJWDoge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGFzc2VydChub2RlLnRvVHlwZSkpO1xuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFzc2VydGlvbktpbmQuQVM6IHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgc2IucHVzaChcIiBhcyBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZShhc3NlcnQobm9kZS50b1R5cGUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFzc2VydGlvbktpbmQuTk9OTlVMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgICAgICBzYi5wdXNoKFwiIVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QmluYXJ5RXhwcmVzc2lvbihub2RlOiBCaW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmxlZnQpO1xuICAgIHNiLnB1c2goXCIgXCIpO1xuICAgIHNiLnB1c2gob3BlcmF0b3JUb2tlblRvU3RyaW5nKG5vZGUub3BlcmF0b3IpKTtcbiAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnJpZ2h0KTtcbiAgfVxuXG4gIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZTogQ2FsbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdmFyIHR5cGVBcmd1bWVudHMgPSBub2RlLnR5cGVBcmd1bWVudHM7XG4gICAgaWYgKHR5cGVBcmd1bWVudHMpIHtcbiAgICAgIGxldCBudW1UeXBlQXJndW1lbnRzID0gdHlwZUFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICBpZiAobnVtVHlwZUFyZ3VtZW50cykge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHR5cGVBcmd1bWVudHNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVR5cGVBcmd1bWVudHM7ICsraSkge1xuICAgICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZUFyZ3VtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgc2IucHVzaChcIj4oXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICB9XG4gICAgdmFyIGFyZ3MgPSBub2RlLmFyZ3VtZW50cztcbiAgICB2YXIgbnVtQXJncyA9IGFyZ3MubGVuZ3RoO1xuICAgIGlmIChudW1BcmdzKSB7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShhcmdzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtQXJnczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUoYXJnc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNiLnB1c2goXCIpXCIpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0V4cHJlc3Npb24obm9kZTogQ2xhc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIGRlY2xhcmF0aW9uID0gbm9kZS5kZWNsYXJhdGlvbjtcbiAgICB0aGlzLnZpc2l0Q2xhc3NEZWNsYXJhdGlvbihkZWNsYXJhdGlvbik7XG4gIH1cblxuICB2aXNpdENvbW1hRXhwcmVzc2lvbihub2RlOiBDb21tYUV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgZXhwcmVzc2lvbnMgPSBub2RlLmV4cHJlc3Npb25zO1xuICAgIHZhciBudW1FeHByZXNzaW9ucyA9IGFzc2VydChleHByZXNzaW9ucy5sZW5ndGgpO1xuICAgIHRoaXMudmlzaXROb2RlKGV4cHJlc3Npb25zWzBdKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtRXhwcmVzc2lvbnM7ICsraSkge1xuICAgICAgc2IucHVzaChcIixcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShleHByZXNzaW9uc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihub2RlOiBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICBzYi5wdXNoKFwiW1wiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmVsZW1lbnRFeHByZXNzaW9uKTtcbiAgICBzYi5wdXNoKFwiXVwiKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25FeHByZXNzaW9uKG5vZGU6IEZ1bmN0aW9uRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBkZWNsYXJhdGlvbiA9IG5vZGUuZGVjbGFyYXRpb247XG4gICAgaWYgKCFkZWNsYXJhdGlvbi5hcnJvd0tpbmQpIHtcbiAgICAgIGlmIChkZWNsYXJhdGlvbi5uYW1lLnRleHQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc2IucHVzaChcImZ1bmN0aW9uIFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2IucHVzaChcImZ1bmN0aW9uXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQoZGVjbGFyYXRpb24ubmFtZS50ZXh0Lmxlbmd0aCA9PSAwKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdEZ1bmN0aW9uQ29tbW9uKGRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHZpc2l0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUubGl0ZXJhbEtpbmQpIHtcbiAgICAgIGNhc2UgTGl0ZXJhbEtpbmQuRkxPQVQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24oPEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBMaXRlcmFsS2luZC5JTlRFR0VSOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oPEludGVnZXJMaXRlcmFsRXhwcmVzc2lvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIExpdGVyYWxLaW5kLlNUUklORzoge1xuICAgICAgICB0aGlzLnZpc2l0U3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24oPFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTGl0ZXJhbEtpbmQuUkVHRVhQOiB7XG4gICAgICAgIHRoaXMudmlzaXRSZWdleHBMaXRlcmFsRXhwcmVzc2lvbig8UmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBMaXRlcmFsS2luZC5BUlJBWToge1xuICAgICAgICB0aGlzLnZpc2l0QXJyYXlMaXRlcmFsRXhwcmVzc2lvbig8QXJyYXlMaXRlcmFsRXhwcmVzc2lvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIExpdGVyYWxLaW5kLk9CSkVDVDoge1xuICAgICAgICB0aGlzLnZpc2l0T2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oPE9iamVjdExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRGbG9hdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2gobm9kZS52YWx1ZS50b1N0cmluZygxMCkpO1xuICB9XG5cbiAgdmlzaXRJbnN0YW5jZU9mRXhwcmVzc2lvbihub2RlOiBJbnN0YW5jZU9mRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy5zYi5wdXNoKFwiIGluc3RhbmNlb2YgXCIpO1xuICAgIHRoaXMudmlzaXRUeXBlTm9kZShub2RlLmlzVHlwZSk7XG4gIH1cblxuICB2aXNpdEludGVnZXJMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2goaTY0X3RvX3N0cmluZyhub2RlLnZhbHVlKSk7XG4gIH1cblxuICB2aXNpdFN0cmluZ0xpdGVyYWwoc3RyOiBzdHJpbmcsIHNpbmdsZVF1b3RlZDogYm9vbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgcXVvdGUgPSBzaW5nbGVRdW90ZWQgPyBcIidcIiA6IFwiXFxcIlwiO1xuICAgIHNiLnB1c2gocXVvdGUpO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKGxldCBrID0gc3RyLmxlbmd0aDsgaSA8IGs7KSB7XG4gICAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTlVMTDoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBvZmYgPSBpICsgMSkpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcMFwiKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQUNLU1BBQ0U6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXGJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5UQUI6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXHRcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgb2ZmID0gKytpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcblwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLlZFUlRJQ0FMVEFCOiB7XG4gICAgICAgICAgaWYgKGkgPiBvZmYpIHNiLnB1c2goc3RyLnN1YnN0cmluZyhvZmYsIGkpKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgc2IucHVzaChcIlxcXFx2XCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXGZcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DQVJSSUFHRVJFVFVSTjoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgc2IucHVzaChcIlxcXFxyXCIpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkRPVUJMRVFVT1RFOiB7XG4gICAgICAgICAgaWYgKCFzaW5nbGVRdW90ZWQpIHtcbiAgICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgICBzYi5wdXNoKFwiXFxcXFxcXCJcIik7XG4gICAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICsraTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5TSU5HTEVRVU9URToge1xuICAgICAgICAgIGlmIChzaW5nbGVRdW90ZWQpIHtcbiAgICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgICBzYi5wdXNoKFwiXFxcXCdcIik7XG4gICAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICsraTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQUNLU0xBU0g6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcXFxcXFwiKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICsraTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgIHNiLnB1c2gocXVvdGUpO1xuICB9XG5cbiAgdmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsKG5vZGUudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRSZWdleHBMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBSZWdleHBMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIi9cIik7XG4gICAgc2IucHVzaChub2RlLnBhdHRlcm4pO1xuICAgIHNiLnB1c2goXCIvXCIpO1xuICAgIHNiLnB1c2gobm9kZS5wYXR0ZXJuRmxhZ3MpO1xuICB9XG5cbiAgdmlzaXROZXdFeHByZXNzaW9uKG5vZGU6IE5ld0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2goXCJuZXcgXCIpO1xuICAgIHRoaXMudmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKTtcbiAgfVxuXG4gIHZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24obm9kZTogUGFyZW50aGVzaXplZEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCIoXCIpO1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgc2IucHVzaChcIilcIik7XG4gIH1cblxuICB2aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgIHRoaXMuc2IucHVzaChcIi5cIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUucHJvcGVydHkpO1xuICB9XG5cbiAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlOiBUZXJuYXJ5RXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIgPyBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5pZlRoZW4pO1xuICAgIHNiLnB1c2goXCIgOiBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5pZkVsc2UpO1xuICB9XG5cbiAgdmlzaXRVbmFyeUV4cHJlc3Npb24obm9kZTogVW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKG5vZGU6IFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9wZXJhbmQpO1xuICAgIHRoaXMuc2IucHVzaChvcGVyYXRvclRva2VuVG9TdHJpbmcobm9kZS5vcGVyYXRvcikpO1xuICB9XG5cbiAgdmlzaXRVbmFyeVByZWZpeEV4cHJlc3Npb24obm9kZTogVW5hcnlQcmVmaXhFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy5zYi5wdXNoKG9wZXJhdG9yVG9rZW5Ub1N0cmluZyhub2RlLm9wZXJhdG9yKSk7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcGVyYW5kKTtcbiAgfVxuXG4gIC8vIHN0YXRlbWVudHNcblxuICB2aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50OiBTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShzdGF0ZW1lbnQpO1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgaWYgKFxuICAgICAgIXNiLmxlbmd0aCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVhZGluZyBFbXB0eVN0YXRlbWVudFxuICAgICAgc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuVkFSSUFCTEUgfHwgLy8gcG90ZW50aWFsbHkgYXNzaWducyBhIEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgICAgc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuRVhQUkVTU0lPTiAgLy8gcG90ZW50aWFsbHkgYXNzaWducyBhIEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgICkge1xuICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsYXN0ID0gc2Jbc2IubGVuZ3RoIC0gMV07XG4gICAgICBsZXQgbGFzdENoYXJQb3MgPSBsYXN0Lmxlbmd0aCAtIDE7XG4gICAgICBpZiAobGFzdENoYXJQb3MgPj0gMCAmJiAoXG4gICAgICAgIGxhc3QuY2hhckNvZGVBdChsYXN0Q2hhclBvcykgPT0gQ2hhckNvZGUuQ0xPU0VCUkFDRSB8fFxuICAgICAgICBsYXN0LmNoYXJDb2RlQXQobGFzdENoYXJQb3MpID09IENoYXJDb2RlLlNFTUlDT0xPTilcbiAgICAgICkge1xuICAgICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRCbG9ja1N0YXRlbWVudChub2RlOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIHN0YXRlbWVudHMgPSBub2RlLnN0YXRlbWVudHM7XG4gICAgdmFyIG51bVN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzLmxlbmd0aDtcbiAgICBpZiAobnVtU3RhdGVtZW50cykge1xuICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICBsZXQgaW5kZW50TGV2ZWwgPSArK3RoaXMuaW5kZW50TGV2ZWw7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVN0YXRlbWVudHM7ICsraSkge1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICBpbmRlbnQoc2IsIC0tdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICBzYi5wdXNoKFwifVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcInt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QnJlYWtTdGF0ZW1lbnQobm9kZTogQnJlYWtTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgbGFiZWwgPSBub2RlLmxhYmVsO1xuICAgIGlmIChsYWJlbCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiYnJlYWsgXCIpO1xuICAgICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKGxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiYnJlYWtcIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRDb250aW51ZVN0YXRlbWVudChub2RlOiBDb250aW51ZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBsYWJlbCA9IG5vZGUubGFiZWw7XG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJjb250aW51ZSBcIik7XG4gICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJjb250aW51ZVwiKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgZGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycztcbiAgICBpZiAoZGVjb3JhdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcihkZWNvcmF0b3JzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5BQlNUUkFDVCkpIHNiLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgaWYgKG5vZGUubmFtZS50ZXh0Lmxlbmd0aCkge1xuICAgICAgc2IucHVzaChcImNsYXNzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiY2xhc3NcIik7XG4gICAgfVxuICAgIHZhciB0eXBlUGFyYW1ldGVycyA9IG5vZGUudHlwZVBhcmFtZXRlcnM7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCkge1xuICAgICAgc2IucHVzaChcIjxcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZVBhcmFtZXRlcih0eXBlUGFyYW1ldGVyc1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMSwgayA9IHR5cGVQYXJhbWV0ZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKHR5cGVQYXJhbWV0ZXJzW2ldKTtcbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCI+XCIpO1xuICAgIH1cbiAgICB2YXIgZXh0ZW5kc1R5cGUgPSBub2RlLmV4dGVuZHNUeXBlO1xuICAgIGlmIChleHRlbmRzVHlwZSkge1xuICAgICAgc2IucHVzaChcIiBleHRlbmRzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRUeXBlTm9kZShleHRlbmRzVHlwZSk7XG4gICAgfVxuICAgIHZhciBpbXBsZW1lbnRzVHlwZXMgPSBub2RlLmltcGxlbWVudHNUeXBlcztcbiAgICBpZiAoaW1wbGVtZW50c1R5cGVzKSB7XG4gICAgICBsZXQgbnVtSW1wbGVtZW50c1R5cGVzID0gaW1wbGVtZW50c1R5cGVzLmxlbmd0aDtcbiAgICAgIGlmIChudW1JbXBsZW1lbnRzVHlwZXMpIHtcbiAgICAgICAgc2IucHVzaChcIiBpbXBsZW1lbnRzIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGltcGxlbWVudHNUeXBlc1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtSW1wbGVtZW50c1R5cGVzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGltcGxlbWVudHNUeXBlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1lbWJlcnMgPSBub2RlLm1lbWJlcnM7XG4gICAgdmFyIG51bU1lbWJlcnMgPSBtZW1iZXJzLmxlbmd0aDtcbiAgICBpZiAobnVtTWVtYmVycykge1xuICAgICAgc2IucHVzaChcIiB7XFxuXCIpO1xuICAgICAgbGV0IGluZGVudExldmVsID0gKyt0aGlzLmluZGVudExldmVsO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBtZW1iZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICBsZXQgbWVtYmVyID0gbWVtYmVyc1tpXTtcbiAgICAgICAgaWYgKG1lbWJlci5raW5kICE9IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT04gfHwgKDxGaWVsZERlY2xhcmF0aW9uPm1lbWJlcikucGFyYW1ldGVySW5kZXggPCAwKSB7XG4gICAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUobWVtYmVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW5kZW50KHNiLCAtLXRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIn1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIge31cIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXREb1N0YXRlbWVudChub2RlOiBEb1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImRvIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gICAgaWYgKG5vZGUuc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuQkxPQ0spIHtcbiAgICAgIHNiLnB1c2goXCIgd2hpbGUgKFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIndoaWxlIChcIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29uZGl0aW9uKTtcbiAgICBzYi5wdXNoKFwiKVwiKTtcbiAgfVxuXG4gIHZpc2l0RW1wdHlTdGF0ZW1lbnQobm9kZTogRW1wdHlTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgfVxuXG4gIHZpc2l0RW51bURlY2xhcmF0aW9uKG5vZGU6IEVudW1EZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQgZGVmYXVsdCBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLkNPTlNUKSkgc2IucHVzaChcImNvbnN0IFwiKTtcbiAgICBzYi5wdXNoKFwiZW51bSBcIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubmFtZSk7XG4gICAgdmFyIHZhbHVlcyA9IG5vZGUudmFsdWVzO1xuICAgIHZhciBudW1WYWx1ZXMgPSB2YWx1ZXMubGVuZ3RoO1xuICAgIGlmIChudW1WYWx1ZXMpIHtcbiAgICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdEVudW1WYWx1ZURlY2xhcmF0aW9uKG5vZGUudmFsdWVzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVmFsdWVzOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIixcXG5cIik7XG4gICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLnZpc2l0RW51bVZhbHVlRGVjbGFyYXRpb24obm9kZS52YWx1ZXNbaV0pO1xuICAgICAgfVxuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICAgIGluZGVudChzYiwgLS10aGlzLmluZGVudExldmVsKTtcbiAgICAgIHNiLnB1c2goXCJ9XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiIHt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RW51bVZhbHVlRGVjbGFyYXRpb24obm9kZTogRW51bVZhbHVlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS52YWx1ZSkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFeHBvcnRJbXBvcnRTdGF0ZW1lbnQobm9kZTogRXhwb3J0SW1wb3J0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKFwiZXhwb3J0IGltcG9ydCBcIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUuZXh0ZXJuYWxOYW1lKTtcbiAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICB9XG5cbiAgdmlzaXRFeHBvcnRNZW1iZXIobm9kZTogRXhwb3J0TWVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubG9jYWxOYW1lKTtcbiAgICBpZiAobm9kZS5leHBvcnRlZE5hbWUudGV4dCAhPSBub2RlLmxvY2FsTmFtZS50ZXh0KSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCIgYXMgXCIpO1xuICAgICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUuZXhwb3J0ZWROYW1lKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cG9ydFN0YXRlbWVudChub2RlOiBFeHBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChub2RlLmlzRGVjbGFyZSkge1xuICAgICAgc2IucHVzaChcImRlY2xhcmUgXCIpO1xuICAgIH1cbiAgICB2YXIgbWVtYmVycyA9IG5vZGUubWVtYmVycztcbiAgICBpZiAobWVtYmVycyAmJiBtZW1iZXJzLmxlbmd0aCkge1xuICAgICAgbGV0IG51bU1lbWJlcnMgPSBtZW1iZXJzLmxlbmd0aDtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdEV4cG9ydE1lbWJlcihtZW1iZXJzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtTWVtYmVyczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsXFxuXCIpO1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydE1lbWJlcihtZW1iZXJzW2ldKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIHNiLnB1c2goXCJcXG59XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IHt9XCIpO1xuICAgIH1cbiAgICB2YXIgcGF0aCA9IG5vZGUucGF0aDtcbiAgICBpZiAocGF0aCkge1xuICAgICAgc2IucHVzaChcIiBmcm9tIFwiKTtcbiAgICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihwYXRoKTtcbiAgICB9XG4gICAgc2IucHVzaChcIjtcIik7XG4gIH1cblxuICB2aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQobm9kZTogRXhwb3J0RGVmYXVsdFN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBkZWNsYXJhdGlvbiA9IG5vZGUuZGVjbGFyYXRpb247XG4gICAgc3dpdGNoIChkZWNsYXJhdGlvbi5raW5kKSB7XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RW51bURlY2xhcmF0aW9uKDxFbnVtRGVjbGFyYXRpb24+ZGVjbGFyYXRpb24sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5kZWNsYXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPmRlY2xhcmF0aW9uLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklOVEVSRkFDRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbig8SW50ZXJmYWNlRGVjbGFyYXRpb24+ZGVjbGFyYXRpb24sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkFNRVNQQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVzcGFjZURlY2xhcmF0aW9uKDxOYW1lc3BhY2VEZWNsYXJhdGlvbj5kZWNsYXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cHJlc3Npb25TdGF0ZW1lbnQobm9kZTogRXhwcmVzc2lvblN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZpZWxkRGVjbGFyYXRpb24obm9kZTogRmllbGREZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhub2RlKTtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChub2RlLmZsYWdzICYgQ29tbW9uRmxhZ3MuREVGSU5JVEVfQVNTSUdOTUVOVCkge1xuICAgICAgc2IucHVzaChcIiFcIik7XG4gICAgfVxuICAgIHZhciB0eXBlID0gbm9kZS50eXBlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZSk7XG4gICAgfVxuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUoaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0Rm9yU3RhdGVtZW50KG5vZGU6IEZvclN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImZvciAoXCIpO1xuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShpbml0aWFsaXplcik7XG4gICAgfVxuICAgIHZhciBjb25kaXRpb24gPSBub2RlLmNvbmRpdGlvbjtcbiAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICBzYi5wdXNoKFwiOyBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShjb25kaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiO1wiKTtcbiAgICB9XG4gICAgdmFyIGluY3JlbWVudG9yID0gbm9kZS5pbmNyZW1lbnRvcjtcbiAgICBpZiAoaW5jcmVtZW50b3IpIHtcbiAgICAgIHNiLnB1c2goXCI7IFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGluY3JlbWVudG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcIjtcIik7XG4gICAgfVxuICAgIHNiLnB1c2goXCIpIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZTogRnVuY3Rpb25EZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgICAgdGhpcy5zZXJpYWxpemVBY2Nlc3NNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLm5hbWUudGV4dC5sZW5ndGgpIHtcbiAgICAgIHNiLnB1c2goXCJmdW5jdGlvbiBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCJmdW5jdGlvblwiKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdEZ1bmN0aW9uQ29tbW9uKG5vZGUpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkNvbW1vbihub2RlOiBGdW5jdGlvbkRlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgc2lnbmF0dXJlID0gbm9kZS5zaWduYXR1cmU7XG4gICAgdmFyIHR5cGVQYXJhbWV0ZXJzID0gbm9kZS50eXBlUGFyYW1ldGVycztcbiAgICBpZiAodHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgIGxldCBudW1UeXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICAgIGlmIChudW1UeXBlUGFyYW1ldGVycykge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVR5cGVQYXJhbWV0ZXJzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHNiLnB1c2goXCI+XCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5hcnJvd0tpbmQgPT0gQXJyb3dLaW5kLkFSUk9XX1NJTkdMRSkge1xuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICAgIGFzc2VydChwYXJhbWV0ZXJzLmxlbmd0aCA9PSAxKTtcbiAgICAgIGFzc2VydCghc2lnbmF0dXJlLmV4cGxpY2l0VGhpc1R5cGUpO1xuICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIoXCIpO1xuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICAgIGxldCBudW1QYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBsZXQgZXhwbGljaXRUaGlzVHlwZSA9IHNpZ25hdHVyZS5leHBsaWNpdFRoaXNUeXBlO1xuICAgICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHtcbiAgICAgICAgc2IucHVzaChcInRoaXM6IFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGV4cGxpY2l0VGhpc1R5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKG51bVBhcmFtZXRlcnMpIHtcbiAgICAgICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICAgIHRoaXMuc2VyaWFsaXplUGFyYW1ldGVyKHBhcmFtZXRlcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBib2R5ID0gbm9kZS5ib2R5O1xuICAgIHZhciByZXR1cm5UeXBlID0gc2lnbmF0dXJlLnJldHVyblR5cGU7XG4gICAgaWYgKG5vZGUuYXJyb3dLaW5kKSB7XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBpZiAobm9kZS5hcnJvd0tpbmQgPT0gQXJyb3dLaW5kLkFSUk9XX1NJTkdMRSkge1xuICAgICAgICAgIGFzc2VydChpc1R5cGVPbWl0dGVkKHJldHVyblR5cGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNUeXBlT21pdHRlZChyZXR1cm5UeXBlKSkge1xuICAgICAgICAgICAgc2IucHVzaChcIilcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNiLnB1c2goXCIpOiBcIik7XG4gICAgICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNiLnB1c2goXCIgPT4gXCIpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShib2R5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VydCghaXNUeXBlT21pdHRlZChyZXR1cm5UeXBlKSk7XG4gICAgICAgIHNiLnB1c2goXCIgPT4gXCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzVHlwZU9taXR0ZWQocmV0dXJuVHlwZSkgJiZcbiAgICAgICAgIW5vZGUuaXNBbnkoQ29tbW9uRmxhZ3MuQ09OU1RSVUNUT1IgfCBDb21tb25GbGFncy5TRVQpXG4gICAgICApIHtcbiAgICAgICAgc2IucHVzaChcIik6IFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHJldHVyblR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2IucHVzaChcIilcIik7XG4gICAgICB9XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUoYm9keSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRJZlN0YXRlbWVudChub2RlOiBJZlN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImlmIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIpIFwiKTtcbiAgICB2YXIgaWZUcnVlID0gbm9kZS5pZlRydWU7XG4gICAgdGhpcy52aXNpdE5vZGUoaWZUcnVlKTtcbiAgICBpZiAoaWZUcnVlLmtpbmQgIT0gTm9kZUtpbmQuQkxPQ0spIHtcbiAgICAgIHNiLnB1c2goXCI7XFxuXCIpO1xuICAgIH1cbiAgICB2YXIgaWZGYWxzZSA9IG5vZGUuaWZGYWxzZTtcbiAgICBpZiAoaWZGYWxzZSkge1xuICAgICAgaWYgKGlmVHJ1ZS5raW5kID09IE5vZGVLaW5kLkJMT0NLKSB7XG4gICAgICAgIHNiLnB1c2goXCIgZWxzZSBcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzYi5wdXNoKFwiZWxzZSBcIik7XG4gICAgICB9XG4gICAgICB0aGlzLnZpc2l0Tm9kZShpZkZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IEltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdmFyIGV4dGVybmFsTmFtZSA9IG5vZGUuZm9yZWlnbk5hbWU7XG4gICAgdmFyIG5hbWUgPSBub2RlLm5hbWU7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKGV4dGVybmFsTmFtZSk7XG4gICAgaWYgKGV4dGVybmFsTmFtZS50ZXh0ICE9IG5hbWUudGV4dCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiIGFzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihuYW1lKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEltcG9ydFN0YXRlbWVudChub2RlOiBJbXBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCJpbXBvcnQgXCIpO1xuICAgIHZhciBkZWNsYXJhdGlvbnMgPSBub2RlLmRlY2xhcmF0aW9ucztcbiAgICB2YXIgbmFtZXNwYWNlTmFtZSA9IG5vZGUubmFtZXNwYWNlTmFtZTtcbiAgICBpZiAoZGVjbGFyYXRpb25zKSB7XG4gICAgICBsZXQgbnVtRGVjbGFyYXRpb25zID0gZGVjbGFyYXRpb25zLmxlbmd0aDtcbiAgICAgIGlmIChudW1EZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbihkZWNsYXJhdGlvbnNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bURlY2xhcmF0aW9uczsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIixcXG5cIik7XG4gICAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgICAgdGhpcy52aXNpdEltcG9ydERlY2xhcmF0aW9uKGRlY2xhcmF0aW9uc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgLS10aGlzLmluZGVudExldmVsO1xuICAgICAgICBzYi5wdXNoKFwiXFxufSBmcm9tIFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNiLnB1c2goXCJ7fSBmcm9tIFwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZU5hbWUpIHtcbiAgICAgIHNiLnB1c2goXCIqIGFzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihuYW1lc3BhY2VOYW1lKTtcbiAgICAgIHNiLnB1c2goXCIgZnJvbSBcIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihub2RlLnBhdGgpO1xuICB9XG5cbiAgdmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG5vZGU6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCJba2V5OiBcIik7XG4gICAgdGhpcy52aXNpdFR5cGVOb2RlKG5vZGUua2V5VHlwZSk7XG4gICAgc2IucHVzaChcIl06IFwiKTtcbiAgICB0aGlzLnZpc2l0VHlwZU5vZGUobm9kZS52YWx1ZVR5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbihub2RlOiBJbnRlcmZhY2VEZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgZGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycztcbiAgICBpZiAoZGVjb3JhdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcihkZWNvcmF0b3JzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgIH1cbiAgICBzYi5wdXNoKFwiaW50ZXJmYWNlIFwiKTtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSBub2RlLnR5cGVQYXJhbWV0ZXJzO1xuICAgIGlmICh0eXBlUGFyYW1ldGVycyAmJiB0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgIHNiLnB1c2goXCI8XCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDEsIGsgPSB0eXBlUGFyYW1ldGVycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZVBhcmFtZXRlcih0eXBlUGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICB9XG4gICAgdmFyIGV4dGVuZHNUeXBlID0gbm9kZS5leHRlbmRzVHlwZTtcbiAgICBpZiAoZXh0ZW5kc1R5cGUpIHtcbiAgICAgIHNiLnB1c2goXCIgZXh0ZW5kcyBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZXh0ZW5kc1R5cGUpO1xuICAgIH1cbiAgICAvLyBtdXN0IG5vdCBoYXZlIGltcGxlbWVudHNUeXBlc1xuICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICB2YXIgaW5kZW50TGV2ZWwgPSArK3RoaXMuaW5kZW50TGV2ZWw7XG4gICAgdmFyIG1lbWJlcnMgPSBub2RlLm1lbWJlcnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBtZW1iZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICB0aGlzLnZpc2l0Tm9kZUFuZFRlcm1pbmF0ZShtZW1iZXJzW2ldKTtcbiAgICB9XG4gICAgLS10aGlzLmluZGVudExldmVsO1xuICAgIHNiLnB1c2goXCJ9XCIpO1xuICB9XG5cbiAgdmlzaXRNZXRob2REZWNsYXJhdGlvbihub2RlOiBNZXRob2REZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhub2RlKTtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5HRVQpKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJnZXQgXCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5pcyhDb21tb25GbGFncy5TRVQpKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJzZXQgXCIpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0RnVuY3Rpb25Db21tb24obm9kZSk7XG4gIH1cblxuICB2aXNpdE5hbWVzcGFjZURlY2xhcmF0aW9uKG5vZGU6IE5hbWVzcGFjZURlY2xhcmF0aW9uLCBpc0RlZmF1bHQ6IGJvb2wgPSBmYWxzZSk6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQgZGVmYXVsdCBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIHNiLnB1c2goXCJuYW1lc3BhY2UgXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciBtZW1iZXJzID0gbm9kZS5tZW1iZXJzO1xuICAgIHZhciBudW1NZW1iZXJzID0gbWVtYmVycy5sZW5ndGg7XG4gICAgaWYgKG51bU1lbWJlcnMpIHtcbiAgICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gbWVtYmVycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKG1lbWJlcnNbaV0pO1xuICAgICAgfVxuICAgICAgaW5kZW50KHNiLCAtLXRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIn1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIge31cIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRSZXR1cm5TdGF0ZW1lbnQobm9kZTogUmV0dXJuU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHZhbHVlID0gbm9kZS52YWx1ZTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2IucHVzaChcInJldHVybiBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2IucHVzaChcInJldHVyblwiKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFN3aXRjaENhc2Uobm9kZTogU3dpdGNoQ2FzZSk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIGxhYmVsID0gbm9kZS5sYWJlbDtcbiAgICBpZiAobGFiZWwpIHtcbiAgICAgIHNiLnB1c2goXCJjYXNlIFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGxhYmVsKTtcbiAgICAgIHNiLnB1c2goXCI6XFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiZGVmYXVsdDpcXG5cIik7XG4gICAgfVxuICAgIHZhciBzdGF0ZW1lbnRzID0gbm9kZS5zdGF0ZW1lbnRzO1xuICAgIHZhciBudW1TdGF0ZW1lbnRzID0gc3RhdGVtZW50cy5sZW5ndGg7XG4gICAgaWYgKG51bVN0YXRlbWVudHMpIHtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVN0YXRlbWVudHM7ICsraSkge1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICAtLXRoaXMuaW5kZW50TGV2ZWw7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTd2l0Y2hTdGF0ZW1lbnQobm9kZTogU3dpdGNoU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKFwic3dpdGNoIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIpIHtcXG5cIik7XG4gICAgdmFyIGluZGVudExldmVsID0gKyt0aGlzLmluZGVudExldmVsO1xuICAgIHZhciBjYXNlcyA9IG5vZGUuY2FzZXM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBjYXNlcy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdFN3aXRjaENhc2UoY2FzZXNbaV0pO1xuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICB9XG4gICAgLS10aGlzLmluZGVudExldmVsO1xuICAgIHNiLnB1c2goXCJ9XCIpO1xuICB9XG5cbiAgdmlzaXRUaHJvd1N0YXRlbWVudChub2RlOiBUaHJvd1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuc2IucHVzaChcInRocm93IFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnZhbHVlKTtcbiAgfVxuXG4gIHZpc2l0VHJ5U3RhdGVtZW50KG5vZGU6IFRyeVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcInRyeSB7XFxuXCIpO1xuICAgIHZhciBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICB2YXIgc3RhdGVtZW50cyA9IG5vZGUuc3RhdGVtZW50cztcbiAgICBmb3IgKGxldCBpID0gMCwgayA9IHN0YXRlbWVudHMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKHN0YXRlbWVudHNbaV0pO1xuICAgIH1cbiAgICB2YXIgY2F0Y2hWYXJpYWJsZSA9IG5vZGUuY2F0Y2hWYXJpYWJsZTtcbiAgICBpZiAoY2F0Y2hWYXJpYWJsZSkge1xuICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCAtIDEpO1xuICAgICAgc2IucHVzaChcIn0gY2F0Y2ggKFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihjYXRjaFZhcmlhYmxlKTtcbiAgICAgIHNiLnB1c2goXCIpIHtcXG5cIik7XG4gICAgICBsZXQgY2F0Y2hTdGF0ZW1lbnRzID0gbm9kZS5jYXRjaFN0YXRlbWVudHM7XG4gICAgICBpZiAoY2F0Y2hTdGF0ZW1lbnRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gY2F0Y2hTdGF0ZW1lbnRzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKGNhdGNoU3RhdGVtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGZpbmFsbHlTdGF0ZW1lbnRzID0gbm9kZS5maW5hbGx5U3RhdGVtZW50cztcbiAgICBpZiAoZmluYWxseVN0YXRlbWVudHMpIHtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwgLSAxKTtcbiAgICAgIHNiLnB1c2goXCJ9IGZpbmFsbHkge1xcblwiKTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gZmluYWxseVN0YXRlbWVudHMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZUFuZFRlcm1pbmF0ZShmaW5hbGx5U3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwgLSAxKTtcbiAgICBzYi5wdXNoKFwifVwiKTtcbiAgfVxuXG4gIHZpc2l0VHlwZURlY2xhcmF0aW9uKG5vZGU6IFR5cGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgc2IucHVzaChcInR5cGUgXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlUGFyYW1ldGVycyA9IG5vZGUudHlwZVBhcmFtZXRlcnM7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzKSB7XG4gICAgICBsZXQgbnVtVHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBpZiAobnVtVHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgICAgc2IucHVzaChcIjxcIik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtVHlwZVBhcmFtZXRlcnM7ICsraSkge1xuICAgICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKHR5cGVQYXJhbWV0ZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2IucHVzaChcIiA9IFwiKTtcbiAgICB0aGlzLnZpc2l0VHlwZU5vZGUobm9kZS50eXBlKTtcbiAgfVxuXG4gIHZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbihub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubmFtZSk7XG4gICAgdmFyIHR5cGUgPSBub2RlLnR5cGU7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5mbGFncyAmIENvbW1vbkZsYWdzLkRFRklOSVRFX0FTU0lHTk1FTlQpIHtcbiAgICAgIHNiLnB1c2goXCIhXCIpO1xuICAgIH1cbiAgICBpZiAodHlwZSkge1xuICAgICAgc2IucHVzaChcIjogXCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHR5cGUpO1xuICAgIH1cbiAgICB2YXIgaW5pdGlhbGl6ZXIgPSBub2RlLmluaXRpYWxpemVyO1xuICAgIGlmIChpbml0aWFsaXplcikge1xuICAgICAgc2IucHVzaChcIiA9IFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGluaXRpYWxpemVyKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlU3RhdGVtZW50KG5vZGU6IFZhcmlhYmxlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIGRlY29yYXRvcnMgPSBub2RlLmRlY29yYXRvcnM7XG4gICAgaWYgKGRlY29yYXRvcnMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gZGVjb3JhdG9ycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVEZWNvcmF0b3IoZGVjb3JhdG9yc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIGRlY2xhcmF0aW9ucyA9IG5vZGUuZGVjbGFyYXRpb25zO1xuICAgIHZhciBudW1EZWNsYXJhdGlvbnMgPSBhc3NlcnQoZGVjbGFyYXRpb25zLmxlbmd0aCk7XG4gICAgdmFyIGZpcnN0RGVjbGFyYXRpb24gPSBkZWNsYXJhdGlvbnNbMF07XG4gICAgdGhpcy5zZXJpYWxpemVFeHRlcm5hbE1vZGlmaWVycyhmaXJzdERlY2xhcmF0aW9uKTtcbiAgICBzYi5wdXNoKGZpcnN0RGVjbGFyYXRpb24uaXMoQ29tbW9uRmxhZ3MuQ09OU1QpID8gXCJjb25zdCBcIiA6IGZpcnN0RGVjbGFyYXRpb24uaXMoQ29tbW9uRmxhZ3MuTEVUKSA/IFwibGV0IFwiIDogXCJ2YXIgXCIpO1xuICAgIHRoaXMudmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUuZGVjbGFyYXRpb25zWzBdKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bURlY2xhcmF0aW9uczsgKytpKSB7XG4gICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICB0aGlzLnZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbihub2RlLmRlY2xhcmF0aW9uc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRXaGlsZVN0YXRlbWVudChub2RlOiBXaGlsZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIndoaWxlIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHZhciBzdGF0ZW1lbnQgPSBub2RlLnN0YXRlbWVudDtcbiAgICBpZiAoc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuRU1QVFkpIHtcbiAgICAgIHNiLnB1c2goXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiKSBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gb3RoZXJcblxuICBzZXJpYWxpemVEZWNvcmF0b3Iobm9kZTogRGVjb3JhdG9yTm9kZSk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIkBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICB2YXIgYXJncyA9IG5vZGUuYXJndW1lbnRzO1xuICAgIGlmIChhcmdzKSB7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICAgIGxldCBudW1BcmdzID0gYXJncy5sZW5ndGg7XG4gICAgICBpZiAobnVtQXJncykge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShhcmdzWzBdKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1BcmdzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdE5vZGUoYXJnc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCIpXFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgIH1cbiAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICB9XG5cbiAgc2VyaWFsaXplUGFyYW1ldGVyKG5vZGU6IFBhcmFtZXRlck5vZGUpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBraW5kID0gbm9kZS5wYXJhbWV0ZXJLaW5kO1xuICAgIHZhciBpbXBsaWNpdEZpZWxkRGVjbGFyYXRpb24gPSBub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbjtcbiAgICBpZiAoaW1wbGljaXRGaWVsZERlY2xhcmF0aW9uKSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhpbXBsaWNpdEZpZWxkRGVjbGFyYXRpb24pO1xuICAgIH1cbiAgICBpZiAoa2luZCA9PSBQYXJhbWV0ZXJLaW5kLlJFU1QpIHtcbiAgICAgIHNiLnB1c2goXCIuLi5cIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlID0gbm9kZS50eXBlO1xuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGlmIChraW5kID09IFBhcmFtZXRlcktpbmQuT1BUSU9OQUwgJiYgIWluaXRpYWxpemVyKSBzYi5wdXNoKFwiP1wiKTtcbiAgICAgIGlmICghaXNUeXBlT21pdHRlZCh0eXBlKSkge1xuICAgICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZSh0eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUoaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGU6IERlY2xhcmF0aW9uU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5FWFBPUlQpKSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuSU1QT1JUKSkge1xuICAgICAgc2IucHVzaChcImltcG9ydCBcIik7XG4gICAgfSBlbHNlIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLkRFQ0xBUkUpKSB7XG4gICAgICBzYi5wdXNoKFwiZGVjbGFyZSBcIik7XG4gICAgfVxuICB9XG5cbiAgc2VyaWFsaXplQWNjZXNzTW9kaWZpZXJzKG5vZGU6IERlY2xhcmF0aW9uU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5QVUJMSUMpKSB7XG4gICAgICBzYi5wdXNoKFwicHVibGljIFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuUFJJVkFURSkpIHtcbiAgICAgIHNiLnB1c2goXCJwcml2YXRlIFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuUFJPVEVDVEVEKSkge1xuICAgICAgc2IucHVzaChcInByb3RlY3RlZCBcIik7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLlNUQVRJQykpIHtcbiAgICAgIHNiLnB1c2goXCJzdGF0aWMgXCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5pcyhDb21tb25GbGFncy5BQlNUUkFDVCkpIHtcbiAgICAgIHNiLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLlJFQURPTkxZKSkge1xuICAgICAgc2IucHVzaChcInJlYWRvbmx5IFwiKTtcbiAgICB9XG4gIH1cblxuICBmaW5pc2goKTogc3RyaW5nIHtcbiAgICB2YXIgcmV0ID0gdGhpcy5zYi5qb2luKFwiXCIpO1xuICAgIHRoaXMuc2IgPSBbXTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG4iXX0= + +/***/ }), + +/***/ "./src/visitor.ts": +/*!************************!*\ + !*** ./src/visitor.ts ***! + \************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __values = (this && this.__values) || function (o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; +}; +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +// export type Collection = NonNullCollection| null; +var isIterable = function (object) { + //@ts-ignore + return object != null && typeof object[Symbol.iterator] === "function"; +}; +var DefaultWriter = /** @class */ (function () { + function DefaultWriter() { + } + DefaultWriter.prototype.writeString = function (s) { }; + DefaultWriter.prototype.writeNode = function (node) { }; + return DefaultWriter; +}()); +exports.DefaultWriter = DefaultWriter; +var AbstractVisitor = /** @class */ (function () { + function AbstractVisitor(writer) { + if (writer === void 0) { writer = new DefaultWriter(); } + this.writer = writer; + } + AbstractVisitor.prototype.writeString = function (str) { + return this.writeString(str); + }; + AbstractVisitor.prototype.writeNode = function (item) { + this.writer.writeNode(item); + }; + AbstractVisitor.prototype.visit = function (node) { + var e_1, _a, e_2, _b; + var _this = this; + if (node == null) + return; + if (node instanceof Array) { + node.map(function (node) { _this.visit(node); }); + } + else if (node instanceof Map) { + try { + for (var _c = __values(node.entries()), _d = _c.next(); !_d.done; _d = _c.next()) { + var _e = __read(_d.value, 2), key = _e[0], _node = _e[1]; + this.visit(_node); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) _a.call(_c); + } + finally { if (e_1) throw e_1.error; } + } + //@ts-ignore Need a better way to test type + } + else if (isIterable(node)) { + try { + //TODO: Find better way to test if iterable + for (var node_1 = __values(node), node_1_1 = node_1.next(); !node_1_1.done; node_1_1 = node_1.next()) { + var _node = node_1_1.value; + this.visit(_node); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (node_1_1 && !node_1_1.done && (_b = node_1.return)) _b.call(node_1); + } + finally { if (e_2) throw e_2.error; } + } + } + else { + //@ts-ignore Node is not iterable. + this._visit(node); + } + }; + return AbstractVisitor; +}()); +exports.AbstractVisitor = AbstractVisitor; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aXNpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSwwREFBMEQ7QUFFMUQsSUFBTSxVQUFVLEdBQUcsVUFBQyxNQUFjO0lBQ2hDLFlBQVk7SUFDWixPQUFBLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVU7QUFBL0QsQ0FBK0QsQ0FBQztBQU9sRTtJQUFBO0lBSUEsQ0FBQztJQUhDLG1DQUFXLEdBQVgsVUFBWSxDQUFTLElBQVUsQ0FBQztJQUNoQyxpQ0FBUyxHQUFULFVBQVUsSUFBbUIsSUFBUyxDQUFDO0lBRXpDLG9CQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7QUFKWSxzQ0FBYTtBQU0xQjtJQUVFLHlCQUFzQixNQUEwQztRQUExQyx1QkFBQSxFQUFBLGFBQXdCLGFBQWEsRUFBSztRQUExQyxXQUFNLEdBQU4sTUFBTSxDQUFvQztJQUFHLENBQUM7SUFFcEUscUNBQVcsR0FBWCxVQUFZLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxtQ0FBUyxHQUFULFVBQVUsSUFBbUI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELCtCQUFLLEdBQUwsVUFBTSxJQUEwQjs7UUFBaEMsaUJBa0JDO1FBakJDLElBQUksSUFBSSxJQUFJLElBQUk7WUFBRSxPQUFPO1FBQ3pCLElBQUksSUFBSSxZQUFZLEtBQUssRUFBRTtZQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUMsSUFBTyxJQUFhLEtBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRDthQUFNLElBQUksSUFBSSxZQUFZLEdBQUcsRUFBRTs7Z0JBQzlCLEtBQXlCLElBQUEsS0FBQSxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBaEMsSUFBQSx3QkFBWSxFQUFYLFdBQUcsRUFBRSxhQUFLO29CQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNuQjs7Ozs7Ozs7O1lBQ0QsMkNBQTJDO1NBQzVDO2FBQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7O2dCQUN6QiwyQ0FBMkM7Z0JBQzdDLEtBQWtCLElBQUEsU0FBQSxTQUFBLElBQUksQ0FBQSwwQkFBQSw0Q0FBRTtvQkFBbkIsSUFBSSxLQUFLLGlCQUFBO29CQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3JCOzs7Ozs7Ozs7U0FDRjthQUFNO1lBQ0wsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBR0gsc0JBQUM7QUFBRCxDQUFDLEFBakNELElBaUNDO0FBakNxQiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvbjxUPiA9IFQgfCBUW10gfCBNYXA8c3RyaW5nLCBUIHwgVFtdIHwgSXRlcmFibGU8VD4+IHwgSXRlcmFibGU8VD47XG4vLyBleHBvcnQgdHlwZSBDb2xsZWN0aW9uPFQ+ID0gTm9uTnVsbENvbGxlY3Rpb248VD58IG51bGw7XG5cbmNvbnN0IGlzSXRlcmFibGUgPSAob2JqZWN0OiBvYmplY3QpOiBib29sZWFuID0+XG4gIC8vQHRzLWlnbm9yZVxuICBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0W1N5bWJvbC5pdGVyYXRvcl0gPT09IFwiZnVuY3Rpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZXI8VD4ge1xuICB3cml0ZVN0cmluZyh4OiBDb2xsZWN0aW9uPFQ+IHwgc3RyaW5nKTogdm9pZDtcbiAgd3JpdGVOb2RlKHg6IENvbGxlY3Rpb248VD4pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFdyaXRlcjxUPiBpbXBsZW1lbnRzIFdyaXRlcjxUPiB7XG4gIHdyaXRlU3RyaW5nKHM6IHN0cmluZyk6IHZvaWQgeyB9XG4gIHdyaXRlTm9kZShub2RlOiBDb2xsZWN0aW9uPFQ+KTogdm9pZCB7fVxuXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZpc2l0b3I8VD4ge1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB3cml0ZXI6IFdyaXRlcjxUPiA9IG5ldyBEZWZhdWx0V3JpdGVyPFQ+KCkpIHt9XG5cbiAgd3JpdGVTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLndyaXRlU3RyaW5nKHN0cik7XG4gIH1cblxuICB3cml0ZU5vZGUoaXRlbTogQ29sbGVjdGlvbjxUPiApOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlci53cml0ZU5vZGUoaXRlbSk7XG4gIH1cblxuICB2aXNpdChub2RlOiBDb2xsZWN0aW9uPFQ+IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChub2RlID09IG51bGwpIHJldHVybjtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBub2RlLm1hcCgobm9kZTogVCk6IHZvaWQgPT4geyB0aGlzLnZpc2l0KG5vZGUpOyB9KTtcbiAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgIGZvciAobGV0IFtrZXksIF9ub2RlXSBvZiBub2RlLmVudHJpZXMoKSkge1xuICAgICAgICB0aGlzLnZpc2l0KF9ub2RlKTtcbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZSBOZWVkIGEgYmV0dGVyIHdheSB0byB0ZXN0IHR5cGVcbiAgICB9IGVsc2UgaWYgKGlzSXRlcmFibGUobm9kZSkpIHtcbiAgICAgICAgLy9UT0RPOiBGaW5kIGJldHRlciB3YXkgdG8gdGVzdCBpZiBpdGVyYWJsZVxuICAgICAgZm9yIChsZXQgX25vZGUgb2Ygbm9kZSkge1xuICAgICAgICAgIHRoaXMudmlzaXQoX25vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvL0B0cy1pZ25vcmUgTm9kZSBpcyBub3QgaXRlcmFibGUuXG4gICAgICB0aGlzLl92aXNpdChub2RlKTtcbiAgICB9XG4gIH1cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF92aXNpdChub2RlOiBUKTogdm9pZDtcblxufVxuIl19 + +/***/ }) + +/******/ }); +}); +//# sourceMappingURL=transformerBundle.js.map \ No newline at end of file diff --git a/bindings/src/index.ts b/bindings/src/index.ts index e086977784..447891741f 100644 --- a/bindings/src/index.ts +++ b/bindings/src/index.ts @@ -232,11 +232,21 @@ export { __wrapper_${name} as ${name} } str += ` static decode(json: Uint8Array): ${className} { let value = instantiate<${className}>(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); } - decode(obj: Obj): ${className} { + decode(buf: V): ${className} { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): ${className} { ${createDecodeStatements(_class).join("\n ")} return this; } @@ -276,7 +286,7 @@ function createDecodeStatements(_class: ClassDeclaration): string[] { function createDecodeStatement(field: FieldDeclaration | ParameterNode, setterPrefix: string = ""): string { let T = toString(field.type!); let name = toString(field.name); - return `${setterPrefix}decode<${T}>(obj, "${name}")`; + return `${setterPrefix}decode<${T}, Obj>(obj, "${name}")`; } diff --git a/tests/near-bindgen/assembly/test.ts b/tests/near-bindgen/assembly/test.ts index 320fae6c93..4c3b51b1bd 100644 --- a/tests/near-bindgen/assembly/test.ts +++ b/tests/near-bindgen/assembly/test.ts @@ -24,9 +24,8 @@ export function runTest(): void { logging.log("Before: " + encoder.toString()); //@ts-ignore const encoded = encoder.serialize(); - let obj = JSON.parse(encoded); //@ts-ignore - let decoded: FooBar = decode(obj); + let decoded: FooBar = decode(encoded); logging.log("After: "+ decoded.toJSON()); assert(original.foo == decoded.foo); assert(original.bar == decoded.bar); @@ -38,7 +37,7 @@ export function runTest(): void { const nullable = new Nullables(); //@ts-ignore - const nullable2 = decode(JSON.parse(nullable.serialize())); + const nullable2 = decode(nullable.serialize()); assert(nullable2.str == null); assert(nullable2.u128 == null); assert(nullable2.uint8Array == null); From 3edc33aa363b49147ab783111f9940879eae0a95 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Sun, 8 Sep 2019 22:31:25 -0400 Subject: [PATCH 21/24] Reduce allocations --- bindings/assembly/nearEntry.ts | 16 +- bindings/dist/transformerBundle.js | 9605 +---------------- dist/asc.js | 2 +- dist/asc.js.map | 2 +- tests/near-bindgen/out/assembly/hello/main.ts | 26 +- .../near-bindgen/out/assembly/hello/model.ts | 96 +- tests/near-bindgen/out/assembly/model.ts | 198 +- tests/near-bindgen/out/assembly/test.ts | 15 +- tests/near-bindgen/out/hello.wat | 1835 ++-- tests/near-bindgen/out/test.wat | 6868 ++++++++---- 10 files changed, 5760 insertions(+), 12903 deletions(-) diff --git a/bindings/assembly/nearEntry.ts b/bindings/assembly/nearEntry.ts index bb8228da39..443e2034eb 100644 --- a/bindings/assembly/nearEntry.ts +++ b/bindings/assembly/nearEntry.ts @@ -162,11 +162,11 @@ class Obj extends Value { } toString(): string { - let objs: string[] = [] + let objs: string[] = []; for (let i: i32 = 0; i < this.keys.length; i++){ objs.push("\"" +this.keys[i]+"\":"+ this._obj.get(this.keys[i]).toString()); } - return "{"+ objs.join(",") + "}" + return "{"+ objs.join(",") + "}"; } has(key: string): bool { @@ -254,11 +254,12 @@ class Handler extends ThrowingJSONHandler { @global() class JSON { - // private static handler: Handler = new Handler(); + private static handler: Handler = new Handler(); + private static decoder: JSONDecoder = new JSONDecoder(JSON.handler); static parse(str: Uint8Array ): Obj { - let decoder = new JSONDecoder(new Handler()); - decoder.deserialize(str); - let res = decoder.handler.peek as Obj; + JSON.decoder.deserialize(str); + let res = JSON.decoder.handler.peek as Obj; + JSON.decoder.handler.reset(); return res; } } @@ -315,12 +316,11 @@ function encode(encoder: JSONEncoder, value: T, name: string | null = ""): JS return encoder; } +//@ts-ignore @inline function getStr(val: Value, name: String): string { assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null"); return (val)._str; - - } function decodeArray(val: Value, name: string): Array { diff --git a/bindings/dist/transformerBundle.js b/bindings/dist/transformerBundle.js index 7af6e42403..9086e5ca6e 100644 --- a/bindings/dist/transformerBundle.js +++ b/bindings/dist/transformerBundle.js @@ -1,9604 +1 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["transformer"] = factory(); - else - root["transformer"] = factory(); -})(typeof self !== 'undefined' ? self : this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../node_modules/long/src/long.js": -/*!****************************************!*\ - !*** ../node_modules/long/src/long.js ***! - \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = Long; - -/** - * wasm optimizations, to do native i64 multiplication and divide - */ -var wasm = null; - -try { - wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([ - 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11 - ])), {}).exports; -} catch (e) { - // no wasm support :( -} - -/** - * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. - * See the from* functions below for more convenient ways of constructing Longs. - * @exports Long - * @class A Long class for representing a 64 bit two's-complement integer value. - * @param {number} low The low (signed) 32 bits of the long - * @param {number} high The high (signed) 32 bits of the long - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @constructor - */ -function Long(low, high, unsigned) { - - /** - * The low 32 bits as a signed value. - * @type {number} - */ - this.low = low | 0; - - /** - * The high 32 bits as a signed value. - * @type {number} - */ - this.high = high | 0; - - /** - * Whether unsigned or not. - * @type {boolean} - */ - this.unsigned = !!unsigned; -} - -// The internal representation of a long is the two given signed, 32-bit values. -// We use 32-bit pieces because these are the size of integers on which -// Javascript performs bit-operations. For operations like addition and -// multiplication, we split each number into 16 bit pieces, which can easily be -// multiplied within Javascript's floating-point representation without overflow -// or change in sign. -// -// In the algorithms below, we frequently reduce the negative case to the -// positive case by negating the input(s) and then post-processing the result. -// Note that we must ALWAYS check specially whether those values are MIN_VALUE -// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as -// a positive number, it overflows back into a negative). Not handling this -// case would often result in infinite recursion. -// -// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from* -// methods on which they depend. - -/** - * An indicator used to reliably determine if an object is a Long or not. - * @type {boolean} - * @const - * @private - */ -Long.prototype.__isLong__; - -Object.defineProperty(Long.prototype, "__isLong__", { value: true }); - -/** - * @function - * @param {*} obj Object - * @returns {boolean} - * @inner - */ -function isLong(obj) { - return (obj && obj["__isLong__"]) === true; -} - -/** - * Tests if the specified object is a Long. - * @function - * @param {*} obj Object - * @returns {boolean} - */ -Long.isLong = isLong; - -/** - * A cache of the Long representations of small integer values. - * @type {!Object} - * @inner - */ -var INT_CACHE = {}; - -/** - * A cache of the Long representations of small unsigned integer values. - * @type {!Object} - * @inner - */ -var UINT_CACHE = {}; - -/** - * @param {number} value - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromInt(value, unsigned) { - var obj, cachedObj, cache; - if (unsigned) { - value >>>= 0; - if (cache = (0 <= value && value < 256)) { - cachedObj = UINT_CACHE[value]; - if (cachedObj) - return cachedObj; - } - obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true); - if (cache) - UINT_CACHE[value] = obj; - return obj; - } else { - value |= 0; - if (cache = (-128 <= value && value < 128)) { - cachedObj = INT_CACHE[value]; - if (cachedObj) - return cachedObj; - } - obj = fromBits(value, value < 0 ? -1 : 0, false); - if (cache) - INT_CACHE[value] = obj; - return obj; - } -} - -/** - * Returns a Long representing the given 32 bit integer value. - * @function - * @param {number} value The 32 bit integer in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} The corresponding Long value - */ -Long.fromInt = fromInt; - -/** - * @param {number} value - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromNumber(value, unsigned) { - if (isNaN(value)) - return unsigned ? UZERO : ZERO; - if (unsigned) { - if (value < 0) - return UZERO; - if (value >= TWO_PWR_64_DBL) - return MAX_UNSIGNED_VALUE; - } else { - if (value <= -TWO_PWR_63_DBL) - return MIN_VALUE; - if (value + 1 >= TWO_PWR_63_DBL) - return MAX_VALUE; - } - if (value < 0) - return fromNumber(-value, unsigned).neg(); - return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); -} - -/** - * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * @function - * @param {number} value The number in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} The corresponding Long value - */ -Long.fromNumber = fromNumber; - -/** - * @param {number} lowBits - * @param {number} highBits - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromBits(lowBits, highBits, unsigned) { - return new Long(lowBits, highBits, unsigned); -} - -/** - * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is - * assumed to use 32 bits. - * @function - * @param {number} lowBits The low 32 bits - * @param {number} highBits The high 32 bits - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} The corresponding Long value - */ -Long.fromBits = fromBits; - -/** - * @function - * @param {number} base - * @param {number} exponent - * @returns {number} - * @inner - */ -var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) - -/** - * @param {string} str - * @param {(boolean|number)=} unsigned - * @param {number=} radix - * @returns {!Long} - * @inner - */ -function fromString(str, unsigned, radix) { - if (str.length === 0) - throw Error('empty string'); - if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") - return ZERO; - if (typeof unsigned === 'number') { - // For goog.math.long compatibility - radix = unsigned, - unsigned = false; - } else { - unsigned = !! unsigned; - } - radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError('radix'); - - var p; - if ((p = str.indexOf('-')) > 0) - throw Error('interior hyphen'); - else if (p === 0) { - return fromString(str.substring(1), unsigned, radix).neg(); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = fromNumber(pow_dbl(radix, 8)); - - var result = ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i), - value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = fromNumber(pow_dbl(radix, size)); - result = result.mul(power).add(fromNumber(value)); - } else { - result = result.mul(radixToPower); - result = result.add(fromNumber(value)); - } - } - result.unsigned = unsigned; - return result; -} - -/** - * Returns a Long representation of the given string, written using the specified radix. - * @function - * @param {string} str The textual representation of the Long - * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed - * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 - * @returns {!Long} The corresponding Long value - */ -Long.fromString = fromString; - -/** - * @function - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromValue(val, unsigned) { - if (typeof val === 'number') - return fromNumber(val, unsigned); - if (typeof val === 'string') - return fromString(val, unsigned); - // Throws for non-objects, converts non-instanceof Long: - return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned); -} - -/** - * Converts the specified value to a Long using the appropriate from* function for its type. - * @function - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} - */ -Long.fromValue = fromValue; - -// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be -// no runtime penalty for these. - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_16_DBL = 1 << 16; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_24_DBL = 1 << 24; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; - -/** - * @type {!Long} - * @const - * @inner - */ -var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); - -/** - * @type {!Long} - * @inner - */ -var ZERO = fromInt(0); - -/** - * Signed zero. - * @type {!Long} - */ -Long.ZERO = ZERO; - -/** - * @type {!Long} - * @inner - */ -var UZERO = fromInt(0, true); - -/** - * Unsigned zero. - * @type {!Long} - */ -Long.UZERO = UZERO; - -/** - * @type {!Long} - * @inner - */ -var ONE = fromInt(1); - -/** - * Signed one. - * @type {!Long} - */ -Long.ONE = ONE; - -/** - * @type {!Long} - * @inner - */ -var UONE = fromInt(1, true); - -/** - * Unsigned one. - * @type {!Long} - */ -Long.UONE = UONE; - -/** - * @type {!Long} - * @inner - */ -var NEG_ONE = fromInt(-1); - -/** - * Signed negative one. - * @type {!Long} - */ -Long.NEG_ONE = NEG_ONE; - -/** - * @type {!Long} - * @inner - */ -var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); - -/** - * Maximum signed value. - * @type {!Long} - */ -Long.MAX_VALUE = MAX_VALUE; - -/** - * @type {!Long} - * @inner - */ -var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); - -/** - * Maximum unsigned value. - * @type {!Long} - */ -Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; - -/** - * @type {!Long} - * @inner - */ -var MIN_VALUE = fromBits(0, 0x80000000|0, false); - -/** - * Minimum signed value. - * @type {!Long} - */ -Long.MIN_VALUE = MIN_VALUE; - -/** - * @alias Long.prototype - * @inner - */ -var LongPrototype = Long.prototype; - -/** - * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. - * @returns {number} - */ -LongPrototype.toInt = function toInt() { - return this.unsigned ? this.low >>> 0 : this.low; -}; - -/** - * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). - * @returns {number} - */ -LongPrototype.toNumber = function toNumber() { - if (this.unsigned) - return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); - return this.high * TWO_PWR_32_DBL + (this.low >>> 0); -}; - -/** - * Converts the Long to a string written in the specified radix. - * @param {number=} radix Radix (2-36), defaults to 10 - * @returns {string} - * @override - * @throws {RangeError} If `radix` is out of range - */ -LongPrototype.toString = function toString(radix) { - radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError('radix'); - if (this.isZero()) - return '0'; - if (this.isNegative()) { // Unsigned Longs are never negative - if (this.eq(MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = fromNumber(radix), - div = this.div(radixLong), - rem1 = div.mul(radixLong).sub(this); - return div.toString(radix) + rem1.toInt().toString(radix); - } else - return '-' + this.neg().toString(radix); - } - - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), - rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower), - intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, - digits = intval.toString(radix); - rem = remDiv; - if (rem.isZero()) - return digits + result; - else { - while (digits.length < 6) - digits = '0' + digits; - result = '' + digits + result; - } - } -}; - -/** - * Gets the high 32 bits as a signed integer. - * @returns {number} Signed high bits - */ -LongPrototype.getHighBits = function getHighBits() { - return this.high; -}; - -/** - * Gets the high 32 bits as an unsigned integer. - * @returns {number} Unsigned high bits - */ -LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { - return this.high >>> 0; -}; - -/** - * Gets the low 32 bits as a signed integer. - * @returns {number} Signed low bits - */ -LongPrototype.getLowBits = function getLowBits() { - return this.low; -}; - -/** - * Gets the low 32 bits as an unsigned integer. - * @returns {number} Unsigned low bits - */ -LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { - return this.low >>> 0; -}; - -/** - * Gets the number of bits needed to represent the absolute value of this Long. - * @returns {number} - */ -LongPrototype.getNumBitsAbs = function getNumBitsAbs() { - if (this.isNegative()) // Unsigned Longs are never negative - return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); - var val = this.high != 0 ? this.high : this.low; - for (var bit = 31; bit > 0; bit--) - if ((val & (1 << bit)) != 0) - break; - return this.high != 0 ? bit + 33 : bit + 1; -}; - -/** - * Tests if this Long's value equals zero. - * @returns {boolean} - */ -LongPrototype.isZero = function isZero() { - return this.high === 0 && this.low === 0; -}; - -/** - * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}. - * @returns {boolean} - */ -LongPrototype.eqz = LongPrototype.isZero; - -/** - * Tests if this Long's value is negative. - * @returns {boolean} - */ -LongPrototype.isNegative = function isNegative() { - return !this.unsigned && this.high < 0; -}; - -/** - * Tests if this Long's value is positive. - * @returns {boolean} - */ -LongPrototype.isPositive = function isPositive() { - return this.unsigned || this.high >= 0; -}; - -/** - * Tests if this Long's value is odd. - * @returns {boolean} - */ -LongPrototype.isOdd = function isOdd() { - return (this.low & 1) === 1; -}; - -/** - * Tests if this Long's value is even. - * @returns {boolean} - */ -LongPrototype.isEven = function isEven() { - return (this.low & 1) === 0; -}; - -/** - * Tests if this Long's value equals the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.equals = function equals(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) - return false; - return this.high === other.high && this.low === other.low; -}; - -/** - * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.eq = LongPrototype.equals; - -/** - * Tests if this Long's value differs from the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.notEquals = function notEquals(other) { - return !this.eq(/* validates */ other); -}; - -/** - * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.neq = LongPrototype.notEquals; - -/** - * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.ne = LongPrototype.notEquals; - -/** - * Tests if this Long's value is less than the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lessThan = function lessThan(other) { - return this.comp(/* validates */ other) < 0; -}; - -/** - * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lt = LongPrototype.lessThan; - -/** - * Tests if this Long's value is less than or equal the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { - return this.comp(/* validates */ other) <= 0; -}; - -/** - * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lte = LongPrototype.lessThanOrEqual; - -/** - * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.le = LongPrototype.lessThanOrEqual; - -/** - * Tests if this Long's value is greater than the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.greaterThan = function greaterThan(other) { - return this.comp(/* validates */ other) > 0; -}; - -/** - * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.gt = LongPrototype.greaterThan; - -/** - * Tests if this Long's value is greater than or equal the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { - return this.comp(/* validates */ other) >= 0; -}; - -/** - * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.gte = LongPrototype.greaterThanOrEqual; - -/** - * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.ge = LongPrototype.greaterThanOrEqual; - -/** - * Compares this Long's value with the specified's. - * @param {!Long|number|string} other Other value - * @returns {number} 0 if they are the same, 1 if the this is greater and -1 - * if the given one is greater - */ -LongPrototype.compare = function compare(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.eq(other)) - return 0; - var thisNeg = this.isNegative(), - otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) - return -1; - if (!thisNeg && otherNeg) - return 1; - // At this point the sign bits are the same - if (!this.unsigned) - return this.sub(other).isNegative() ? -1 : 1; - // Both are positive if at least one is unsigned - return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1; -}; - -/** - * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}. - * @function - * @param {!Long|number|string} other Other value - * @returns {number} 0 if they are the same, 1 if the this is greater and -1 - * if the given one is greater - */ -LongPrototype.comp = LongPrototype.compare; - -/** - * Negates this Long's value. - * @returns {!Long} Negated Long - */ -LongPrototype.negate = function negate() { - if (!this.unsigned && this.eq(MIN_VALUE)) - return MIN_VALUE; - return this.not().add(ONE); -}; - -/** - * Negates this Long's value. This is an alias of {@link Long#negate}. - * @function - * @returns {!Long} Negated Long - */ -LongPrototype.neg = LongPrototype.negate; - -/** - * Returns the sum of this and the specified Long. - * @param {!Long|number|string} addend Addend - * @returns {!Long} Sum - */ -LongPrototype.add = function add(addend) { - if (!isLong(addend)) - addend = fromValue(addend); - - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high >>> 16; - var a32 = this.high & 0xFFFF; - var a16 = this.low >>> 16; - var a00 = this.low & 0xFFFF; - - var b48 = addend.high >>> 16; - var b32 = addend.high & 0xFFFF; - var b16 = addend.low >>> 16; - var b00 = addend.low & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); -}; - -/** - * Returns the difference of this and the specified Long. - * @param {!Long|number|string} subtrahend Subtrahend - * @returns {!Long} Difference - */ -LongPrototype.subtract = function subtract(subtrahend) { - if (!isLong(subtrahend)) - subtrahend = fromValue(subtrahend); - return this.add(subtrahend.neg()); -}; - -/** - * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}. - * @function - * @param {!Long|number|string} subtrahend Subtrahend - * @returns {!Long} Difference - */ -LongPrototype.sub = LongPrototype.subtract; - -/** - * Returns the product of this and the specified Long. - * @param {!Long|number|string} multiplier Multiplier - * @returns {!Long} Product - */ -LongPrototype.multiply = function multiply(multiplier) { - if (this.isZero()) - return ZERO; - if (!isLong(multiplier)) - multiplier = fromValue(multiplier); - - // use wasm support if present - if (wasm) { - var low = wasm.mul(this.low, - this.high, - multiplier.low, - multiplier.high); - return fromBits(low, wasm.get_high(), this.unsigned); - } - - if (multiplier.isZero()) - return ZERO; - if (this.eq(MIN_VALUE)) - return multiplier.isOdd() ? MIN_VALUE : ZERO; - if (multiplier.eq(MIN_VALUE)) - return this.isOdd() ? MIN_VALUE : ZERO; - - if (this.isNegative()) { - if (multiplier.isNegative()) - return this.neg().mul(multiplier.neg()); - else - return this.neg().mul(multiplier).neg(); - } else if (multiplier.isNegative()) - return this.mul(multiplier.neg()).neg(); - - // If both longs are small, use float multiplication - if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) - return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); - - // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high >>> 16; - var a32 = this.high & 0xFFFF; - var a16 = this.low >>> 16; - var a00 = this.low & 0xFFFF; - - var b48 = multiplier.high >>> 16; - var b32 = multiplier.high & 0xFFFF; - var b16 = multiplier.low >>> 16; - var b00 = multiplier.low & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); -}; - -/** - * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}. - * @function - * @param {!Long|number|string} multiplier Multiplier - * @returns {!Long} Product - */ -LongPrototype.mul = LongPrototype.multiply; - -/** - * Returns this Long divided by the specified. The result is signed if this Long is signed or - * unsigned if this Long is unsigned. - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Quotient - */ -LongPrototype.divide = function divide(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - if (divisor.isZero()) - throw Error('division by zero'); - - // use wasm support if present - if (wasm) { - // guard against signed division overflow: the largest - // negative number / -1 would be 1 larger than the largest - // positive number, due to two's complement. - if (!this.unsigned && - this.high === -0x80000000 && - divisor.low === -1 && divisor.high === -1) { - // be consistent with non-wasm code path - return this; - } - var low = (this.unsigned ? wasm.div_u : wasm.div_s)( - this.low, - this.high, - divisor.low, - divisor.high - ); - return fromBits(low, wasm.get_high(), this.unsigned); - } - - if (this.isZero()) - return this.unsigned ? UZERO : ZERO; - var approx, rem, res; - if (!this.unsigned) { - // This section is only relevant for signed longs and is derived from the - // closure library as a whole. - if (this.eq(MIN_VALUE)) { - if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) - return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - else if (divisor.eq(MIN_VALUE)) - return ONE; - else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shr(1); - approx = halfThis.div(divisor).shl(1); - if (approx.eq(ZERO)) { - return divisor.isNegative() ? ONE : NEG_ONE; - } else { - rem = this.sub(divisor.mul(approx)); - res = approx.add(rem.div(divisor)); - return res; - } - } - } else if (divisor.eq(MIN_VALUE)) - return this.unsigned ? UZERO : ZERO; - if (this.isNegative()) { - if (divisor.isNegative()) - return this.neg().div(divisor.neg()); - return this.neg().div(divisor).neg(); - } else if (divisor.isNegative()) - return this.div(divisor.neg()).neg(); - res = ZERO; - } else { - // The algorithm below has not been made for unsigned longs. It's therefore - // required to take special care of the MSB prior to running it. - if (!divisor.unsigned) - divisor = divisor.toUnsigned(); - if (divisor.gt(this)) - return UZERO; - if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true - return UONE; - res = UZERO; - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - rem = this; - while (rem.gte(divisor)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2), - delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - approxRes = fromNumber(approx), - approxRem = approxRes.mul(divisor); - while (approxRem.isNegative() || approxRem.gt(rem)) { - approx -= delta; - approxRes = fromNumber(approx, this.unsigned); - approxRem = approxRes.mul(divisor); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) - approxRes = ONE; - - res = res.add(approxRes); - rem = rem.sub(approxRem); - } - return res; -}; - -/** - * Returns this Long divided by the specified. This is an alias of {@link Long#divide}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Quotient - */ -LongPrototype.div = LongPrototype.divide; - -/** - * Returns this Long modulo the specified. - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ -LongPrototype.modulo = function modulo(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - - // use wasm support if present - if (wasm) { - var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)( - this.low, - this.high, - divisor.low, - divisor.high - ); - return fromBits(low, wasm.get_high(), this.unsigned); - } - - return this.sub(this.div(divisor).mul(divisor)); -}; - -/** - * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ -LongPrototype.mod = LongPrototype.modulo; - -/** - * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ -LongPrototype.rem = LongPrototype.modulo; - -/** - * Returns the bitwise NOT of this Long. - * @returns {!Long} - */ -LongPrototype.not = function not() { - return fromBits(~this.low, ~this.high, this.unsigned); -}; - -/** - * Returns the bitwise AND of this Long and the specified. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ -LongPrototype.and = function and(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low & other.low, this.high & other.high, this.unsigned); -}; - -/** - * Returns the bitwise OR of this Long and the specified. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ -LongPrototype.or = function or(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low | other.low, this.high | other.high, this.unsigned); -}; - -/** - * Returns the bitwise XOR of this Long and the given one. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ -LongPrototype.xor = function xor(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); -}; - -/** - * Returns this Long with bits shifted to the left by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shiftLeft = function shiftLeft(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); - else - return fromBits(0, this.low << (numBits - 32), this.unsigned); -}; - -/** - * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shl = LongPrototype.shiftLeft; - -/** - * Returns this Long with bits arithmetically shifted to the right by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shiftRight = function shiftRight(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); - else - return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); -}; - -/** - * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shr = LongPrototype.shiftRight; - -/** - * Returns this Long with bits logically shifted to the right by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - numBits &= 63; - if (numBits === 0) - return this; - else { - var high = this.high; - if (numBits < 32) { - var low = this.low; - return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); - } else if (numBits === 32) - return fromBits(high, 0, this.unsigned); - else - return fromBits(high >>> (numBits - 32), 0, this.unsigned); - } -}; - -/** - * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shru = LongPrototype.shiftRightUnsigned; - -/** - * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; - -/** - * Converts this Long to signed. - * @returns {!Long} Signed long - */ -LongPrototype.toSigned = function toSigned() { - if (!this.unsigned) - return this; - return fromBits(this.low, this.high, false); -}; - -/** - * Converts this Long to unsigned. - * @returns {!Long} Unsigned long - */ -LongPrototype.toUnsigned = function toUnsigned() { - if (this.unsigned) - return this; - return fromBits(this.low, this.high, true); -}; - -/** - * Converts this Long to its byte representation. - * @param {boolean=} le Whether little or big endian, defaults to big endian - * @returns {!Array.} Byte representation - */ -LongPrototype.toBytes = function toBytes(le) { - return le ? this.toBytesLE() : this.toBytesBE(); -}; - -/** - * Converts this Long to its little endian byte representation. - * @returns {!Array.} Little endian byte representation - */ -LongPrototype.toBytesLE = function toBytesLE() { - var hi = this.high, - lo = this.low; - return [ - lo & 0xff, - lo >>> 8 & 0xff, - lo >>> 16 & 0xff, - lo >>> 24 , - hi & 0xff, - hi >>> 8 & 0xff, - hi >>> 16 & 0xff, - hi >>> 24 - ]; -}; - -/** - * Converts this Long to its big endian byte representation. - * @returns {!Array.} Big endian byte representation - */ -LongPrototype.toBytesBE = function toBytesBE() { - var hi = this.high, - lo = this.low; - return [ - hi >>> 24 , - hi >>> 16 & 0xff, - hi >>> 8 & 0xff, - hi & 0xff, - lo >>> 24 , - lo >>> 16 & 0xff, - lo >>> 8 & 0xff, - lo & 0xff - ]; -}; - -/** - * Creates a Long from its byte representation. - * @param {!Array.} bytes Byte representation - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @param {boolean=} le Whether little or big endian, defaults to big endian - * @returns {Long} The corresponding Long value - */ -Long.fromBytes = function fromBytes(bytes, unsigned, le) { - return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned); -}; - -/** - * Creates a Long from its little endian byte representation. - * @param {!Array.} bytes Little endian byte representation - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {Long} The corresponding Long value - */ -Long.fromBytesLE = function fromBytesLE(bytes, unsigned) { - return new Long( - bytes[0] | - bytes[1] << 8 | - bytes[2] << 16 | - bytes[3] << 24, - bytes[4] | - bytes[5] << 8 | - bytes[6] << 16 | - bytes[7] << 24, - unsigned - ); -}; - -/** - * Creates a Long from its big endian byte representation. - * @param {!Array.} bytes Big endian byte representation - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {Long} The corresponding Long value - */ -Long.fromBytesBE = function fromBytesBE(bytes, unsigned) { - return new Long( - bytes[4] << 24 | - bytes[5] << 16 | - bytes[6] << 8 | - bytes[7], - bytes[0] << 24 | - bytes[1] << 16 | - bytes[2] << 8 | - bytes[3], - unsigned - ); -}; - - -/***/ }), - -/***/ "../node_modules/webpack/buildin/global.js": -/*!*************************************************!*\ - !*** ../node_modules/webpack/buildin/global.js ***! - \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || new Function("return this")(); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), - -/***/ "../src/ast.ts": -/*!*********************!*\ - !*** ../src/ast.ts ***! - \*********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Abstract syntax tree representing a source file once parsed. - * @module ast - */ /***/ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var common_1 = __webpack_require__(/*! ./common */ "../src/common.ts"); -var tokenizer_1 = __webpack_require__(/*! ./tokenizer */ "../src/tokenizer.ts"); -exports.Token = tokenizer_1.Token; -exports.Range = tokenizer_1.Range; -var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); -/** Indicates the kind of a node. */ -var NodeKind; -(function (NodeKind) { - NodeKind[NodeKind["SOURCE"] = 0] = "SOURCE"; - // types - NodeKind[NodeKind["NAMEDTYPE"] = 1] = "NAMEDTYPE"; - NodeKind[NodeKind["FUNCTIONTYPE"] = 2] = "FUNCTIONTYPE"; - NodeKind[NodeKind["TYPENAME"] = 3] = "TYPENAME"; - NodeKind[NodeKind["TYPEPARAMETER"] = 4] = "TYPEPARAMETER"; - NodeKind[NodeKind["PARAMETER"] = 5] = "PARAMETER"; - // expressions - NodeKind[NodeKind["IDENTIFIER"] = 6] = "IDENTIFIER"; - NodeKind[NodeKind["ASSERTION"] = 7] = "ASSERTION"; - NodeKind[NodeKind["BINARY"] = 8] = "BINARY"; - NodeKind[NodeKind["CALL"] = 9] = "CALL"; - NodeKind[NodeKind["CLASS"] = 10] = "CLASS"; - NodeKind[NodeKind["COMMA"] = 11] = "COMMA"; - NodeKind[NodeKind["ELEMENTACCESS"] = 12] = "ELEMENTACCESS"; - NodeKind[NodeKind["FALSE"] = 13] = "FALSE"; - NodeKind[NodeKind["FUNCTION"] = 14] = "FUNCTION"; - NodeKind[NodeKind["INSTANCEOF"] = 15] = "INSTANCEOF"; - NodeKind[NodeKind["LITERAL"] = 16] = "LITERAL"; - NodeKind[NodeKind["NEW"] = 17] = "NEW"; - NodeKind[NodeKind["NULL"] = 18] = "NULL"; - NodeKind[NodeKind["PARENTHESIZED"] = 19] = "PARENTHESIZED"; - NodeKind[NodeKind["PROPERTYACCESS"] = 20] = "PROPERTYACCESS"; - NodeKind[NodeKind["TERNARY"] = 21] = "TERNARY"; - NodeKind[NodeKind["SUPER"] = 22] = "SUPER"; - NodeKind[NodeKind["THIS"] = 23] = "THIS"; - NodeKind[NodeKind["TRUE"] = 24] = "TRUE"; - NodeKind[NodeKind["CONSTRUCTOR"] = 25] = "CONSTRUCTOR"; - NodeKind[NodeKind["UNARYPOSTFIX"] = 26] = "UNARYPOSTFIX"; - NodeKind[NodeKind["UNARYPREFIX"] = 27] = "UNARYPREFIX"; - // statements - NodeKind[NodeKind["BLOCK"] = 28] = "BLOCK"; - NodeKind[NodeKind["BREAK"] = 29] = "BREAK"; - NodeKind[NodeKind["CONTINUE"] = 30] = "CONTINUE"; - NodeKind[NodeKind["DO"] = 31] = "DO"; - NodeKind[NodeKind["EMPTY"] = 32] = "EMPTY"; - NodeKind[NodeKind["EXPORT"] = 33] = "EXPORT"; - NodeKind[NodeKind["EXPORTDEFAULT"] = 34] = "EXPORTDEFAULT"; - NodeKind[NodeKind["EXPORTIMPORT"] = 35] = "EXPORTIMPORT"; - NodeKind[NodeKind["EXPRESSION"] = 36] = "EXPRESSION"; - NodeKind[NodeKind["FOR"] = 37] = "FOR"; - NodeKind[NodeKind["IF"] = 38] = "IF"; - NodeKind[NodeKind["IMPORT"] = 39] = "IMPORT"; - NodeKind[NodeKind["RETURN"] = 40] = "RETURN"; - NodeKind[NodeKind["SWITCH"] = 41] = "SWITCH"; - NodeKind[NodeKind["THROW"] = 42] = "THROW"; - NodeKind[NodeKind["TRY"] = 43] = "TRY"; - NodeKind[NodeKind["VARIABLE"] = 44] = "VARIABLE"; - NodeKind[NodeKind["VOID"] = 45] = "VOID"; - NodeKind[NodeKind["WHILE"] = 46] = "WHILE"; - // declaration statements - NodeKind[NodeKind["CLASSDECLARATION"] = 47] = "CLASSDECLARATION"; - NodeKind[NodeKind["ENUMDECLARATION"] = 48] = "ENUMDECLARATION"; - NodeKind[NodeKind["ENUMVALUEDECLARATION"] = 49] = "ENUMVALUEDECLARATION"; - NodeKind[NodeKind["FIELDDECLARATION"] = 50] = "FIELDDECLARATION"; - NodeKind[NodeKind["FUNCTIONDECLARATION"] = 51] = "FUNCTIONDECLARATION"; - NodeKind[NodeKind["IMPORTDECLARATION"] = 52] = "IMPORTDECLARATION"; - NodeKind[NodeKind["INDEXSIGNATUREDECLARATION"] = 53] = "INDEXSIGNATUREDECLARATION"; - NodeKind[NodeKind["INTERFACEDECLARATION"] = 54] = "INTERFACEDECLARATION"; - NodeKind[NodeKind["METHODDECLARATION"] = 55] = "METHODDECLARATION"; - NodeKind[NodeKind["NAMESPACEDECLARATION"] = 56] = "NAMESPACEDECLARATION"; - NodeKind[NodeKind["TYPEDECLARATION"] = 57] = "TYPEDECLARATION"; - NodeKind[NodeKind["VARIABLEDECLARATION"] = 58] = "VARIABLEDECLARATION"; - // special - NodeKind[NodeKind["DECORATOR"] = 59] = "DECORATOR"; - NodeKind[NodeKind["EXPORTMEMBER"] = 60] = "EXPORTMEMBER"; - NodeKind[NodeKind["SWITCHCASE"] = 61] = "SWITCHCASE"; - NodeKind[NodeKind["COMMENT"] = 62] = "COMMENT"; -})(NodeKind = exports.NodeKind || (exports.NodeKind = {})); -/** Checks if a node represents a constant value. */ -function nodeIsConstantValue(kind) { - switch (kind) { - case NodeKind.LITERAL: - case NodeKind.NULL: - case NodeKind.TRUE: - case NodeKind.FALSE: return true; - } - return false; -} -exports.nodeIsConstantValue = nodeIsConstantValue; -/** Checks if a node might be callable. */ -function nodeIsCallable(kind) { - switch (kind) { - case NodeKind.IDENTIFIER: - case NodeKind.ASSERTION: // if kind=NONNULL - case NodeKind.CALL: - case NodeKind.ELEMENTACCESS: - case NodeKind.PARENTHESIZED: - case NodeKind.PROPERTYACCESS: - case NodeKind.SUPER: return true; - } - return false; -} -exports.nodeIsCallable = nodeIsCallable; -/** Checks if a node might be callable with generic arguments. */ -function nodeIsGenericCallable(kind) { - switch (kind) { - case NodeKind.IDENTIFIER: - case NodeKind.PROPERTYACCESS: return true; - } - return false; -} -exports.nodeIsGenericCallable = nodeIsGenericCallable; -/** Base class of all nodes. */ -var Node = /** @class */ (function () { - function Node() { - } - // types - Node.createTypeName = function (name, range) { - var typeName = new TypeName(); - typeName.range = range; - typeName.identifier = name; - typeName.next = null; - return typeName; - }; - Node.createSimpleTypeName = function (name, range) { - return Node.createTypeName(Node.createIdentifierExpression(name, range), range); - }; - Node.createNamedType = function (name, typeArguments, isNullable, range) { - var type = new NamedTypeNode(); - type.range = range; - type.name = name; - type.typeArguments = typeArguments; - type.isNullable = isNullable; - return type; - }; - Node.createFunctionType = function (parameters, returnType, explicitThisType, isNullable, range) { - var type = new FunctionTypeNode(); - type.range = range; - type.parameters = parameters; - type.returnType = returnType; - type.explicitThisType = explicitThisType; - type.isNullable = isNullable; - return type; - }; - Node.createOmittedType = function (range) { - return Node.createNamedType(Node.createSimpleTypeName("", range), null, false, range); - }; - Node.createTypeParameter = function (name, extendsType, defaultType, range) { - var elem = new TypeParameterNode(); - elem.range = range; - elem.name = name; - elem.extendsType = extendsType; - elem.defaultType = defaultType; - return elem; - }; - Node.createParameter = function (name, type, initializer, kind, range) { - var elem = new ParameterNode(); - elem.range = range; - elem.name = name; - elem.type = type; - elem.initializer = initializer; - elem.parameterKind = kind; - return elem; - }; - // special - Node.createDecorator = function (name, args, range) { - var stmt = new DecoratorNode(); - stmt.range = range; - stmt.name = name; - stmt.arguments = args; - stmt.decoratorKind = decoratorNameToKind(name); - return stmt; - }; - Node.createComment = function (text, kind, range) { - var node = new CommentNode(); - node.range = range; - node.commentKind = kind; - node.text = text; - return node; - }; - // expressions - Node.createIdentifierExpression = function (name, range, isQuoted) { - if (isQuoted === void 0) { isQuoted = false; } - var expr = new IdentifierExpression(); - expr.range = range; - expr.text = name; // TODO: extract from range - expr.symbol = name; // TODO: Symbol.for(name) - expr.isQuoted = isQuoted; - return expr; - }; - Node.createEmptyIdentifierExpression = function (range) { - var expr = new IdentifierExpression(); - expr.range = range; - expr.text = ""; - return expr; - }; - Node.createArrayLiteralExpression = function (elements, range) { - var expr = new ArrayLiteralExpression(); - expr.range = range; - expr.elementExpressions = elements; - return expr; - }; - Node.createAssertionExpression = function (assertionKind, expression, toType, range) { - var expr = new AssertionExpression(); - expr.range = range; - expr.assertionKind = assertionKind; - expr.expression = expression; - expr.toType = toType; - return expr; - }; - Node.createBinaryExpression = function (operator, left, right, range) { - var expr = new BinaryExpression(); - expr.range = range; - expr.operator = operator; - expr.left = left; - expr.right = right; - return expr; - }; - Node.createCallExpression = function (expression, typeArgs, args, range) { - var expr = new CallExpression(); - expr.range = range; - expr.expression = expression; - expr.typeArguments = typeArgs; - expr.arguments = args; - return expr; - }; - Node.createClassExpression = function (declaration) { - var expr = new ClassExpression(); - expr.range = declaration.range; - expr.declaration = declaration; - return expr; - }; - Node.createCommaExpression = function (expressions, range) { - var expr = new CommaExpression(); - expr.range = range; - expr.expressions = expressions; - return expr; - }; - Node.createConstructorExpression = function (range) { - var expr = new ConstructorExpression(); - expr.range = range; - return expr; - }; - Node.createElementAccessExpression = function (expression, element, range) { - var expr = new ElementAccessExpression(); - expr.range = range; - expr.expression = expression; - expr.elementExpression = element; - return expr; - }; - Node.createFalseExpression = function (range) { - var expr = new FalseExpression(); - expr.range = range; - return expr; - }; - Node.createFloatLiteralExpression = function (value, range) { - var expr = new FloatLiteralExpression(); - expr.range = range; - expr.value = value; - return expr; - }; - Node.createFunctionExpression = function (declaration) { - var expr = new FunctionExpression(); - expr.range = declaration.range; - expr.declaration = declaration; - return expr; - }; - Node.createInstanceOfExpression = function (expression, isType, range) { - var expr = new InstanceOfExpression(); - expr.range = range; - expr.expression = expression; - expr.isType = isType; - return expr; - }; - Node.createIntegerLiteralExpression = function (value, range) { - var expr = new IntegerLiteralExpression(); - expr.range = range; - expr.value = value; - return expr; - }; - Node.createNewExpression = function (expression, typeArgs, args, range) { - var expr = new NewExpression(); - expr.range = range; - expr.expression = expression; - expr.typeArguments = typeArgs; - expr.arguments = args; - return expr; - }; - Node.createNullExpression = function (range) { - var expr = new NullExpression(); - expr.range = range; - return expr; - }; - Node.createObjectLiteralExpression = function (names, values, range) { - var expr = new ObjectLiteralExpression(); - expr.range = range; - expr.names = names; - expr.values = values; - return expr; - }; - Node.createParenthesizedExpression = function (expression, range) { - var expr = new ParenthesizedExpression(); - expr.range = range; - expr.expression = expression; - return expr; - }; - Node.createPropertyAccessExpression = function (expression, property, range) { - var expr = new PropertyAccessExpression(); - expr.range = range; - expr.expression = expression; - expr.property = property; - return expr; - }; - Node.createRegexpLiteralExpression = function (pattern, flags, range) { - var expr = new RegexpLiteralExpression(); - expr.range = range; - expr.pattern = pattern; - expr.patternFlags = flags; - return expr; - }; - Node.createTernaryExpression = function (condition, ifThen, ifElse, range) { - var expr = new TernaryExpression(); - expr.range = range; - expr.condition = condition; - expr.ifThen = ifThen; - expr.ifElse = ifElse; - return expr; - }; - Node.createStringLiteralExpression = function (value, range) { - var expr = new StringLiteralExpression(); - expr.range = range; - expr.value = value; - return expr; - }; - Node.createSuperExpression = function (range) { - var expr = new SuperExpression(); - expr.range = range; - return expr; - }; - Node.createThisExpression = function (range) { - var expr = new ThisExpression(); - expr.range = range; - return expr; - }; - Node.createTrueExpression = function (range) { - var expr = new TrueExpression(); - expr.range = range; - return expr; - }; - Node.createUnaryPostfixExpression = function (operator, operand, range) { - var expr = new UnaryPostfixExpression(); - expr.range = range; - expr.operator = operator; - expr.operand = operand; - return expr; - }; - Node.createUnaryPrefixExpression = function (operator, operand, range) { - var expr = new UnaryPrefixExpression(); - expr.range = range; - expr.operator = operator; - expr.operand = operand; - return expr; - }; - // statements - Node.createBlockStatement = function (statements, range) { - var stmt = new BlockStatement(); - stmt.range = range; - stmt.statements = statements; - return stmt; - }; - Node.createBreakStatement = function (label, range) { - var stmt = new BreakStatement(); - stmt.range = range; - stmt.label = label; - return stmt; - }; - Node.createClassDeclaration = function (identifier, typeParameters, extendsType, // can't be a function - implementsTypes, // can't be functions - members, decorators, flags, range) { - var stmt = new ClassDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = identifier; - stmt.typeParameters = typeParameters; - stmt.extendsType = extendsType; - stmt.implementsTypes = implementsTypes; - stmt.members = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createContinueStatement = function (label, range) { - var stmt = new ContinueStatement(); - stmt.range = range; - stmt.label = label; - return stmt; - }; - Node.createDoStatement = function (statement, condition, range) { - var stmt = new DoStatement(); - stmt.range = range; - stmt.statement = statement; - stmt.condition = condition; - return stmt; - }; - Node.createEmptyStatement = function (range) { - var stmt = new EmptyStatement(); - stmt.range = range; - return stmt; - }; - Node.createEnumDeclaration = function (name, members, decorators, flags, range) { - var stmt = new EnumDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.values = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createEnumValueDeclaration = function (name, value, flags, range) { - var stmt = new EnumValueDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.value = value; - return stmt; - }; - Node.createExportStatement = function (members, path, isDeclare, range) { - var stmt = new ExportStatement(); - stmt.range = range; - stmt.members = members; - stmt.path = path; - if (path) { - var normalizedPath = util_1.normalizePath(path.value); - if (path.value.startsWith(".")) { // relative - stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); - } - else { // absolute - if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { - normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; - } - stmt.normalizedPath = normalizedPath; - } - stmt.internalPath = mangleInternalPath(stmt.normalizedPath); - } - else { - stmt.normalizedPath = null; - stmt.internalPath = null; - } - stmt.isDeclare = isDeclare; - return stmt; - }; - Node.createExportDefaultStatement = function (declaration, range) { - var stmt = new ExportDefaultStatement(); - stmt.declaration = declaration; - stmt.range = range; - return stmt; - }; - Node.createExportImportStatement = function (name, externalName, range) { - var stmt = new ExportImportStatement(); - stmt.range = range; - stmt.name = name; - stmt.externalName = externalName; - return stmt; - }; - Node.createExportMember = function (name, externalName, range) { - var elem = new ExportMember(); - elem.range = range; - elem.localName = name; - if (!externalName) - externalName = name; - elem.exportedName = externalName; - return elem; - }; - Node.createExpressionStatement = function (expression) { - var stmt = new ExpressionStatement(); - stmt.range = expression.range; - stmt.expression = expression; - return stmt; - }; - Node.createIfStatement = function (condition, ifTrue, ifFalse, range) { - var stmt = new IfStatement(); - stmt.range = range; - stmt.condition = condition; - stmt.ifTrue = ifTrue; - stmt.ifFalse = ifFalse; - return stmt; - }; - Node.createImportStatement = function (decls, path, range) { - var stmt = new ImportStatement(); - stmt.range = range; - stmt.declarations = decls; - stmt.namespaceName = null; - stmt.path = path; - var normalizedPath = util_1.normalizePath(path.value); - if (path.value.startsWith(".")) { // relative in project - stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); - } - else { // absolute in library - if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { - normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; - } - stmt.normalizedPath = normalizedPath; - } - stmt.internalPath = mangleInternalPath(stmt.normalizedPath); - return stmt; - }; - Node.createImportStatementWithWildcard = function (identifier, path, range) { - var stmt = new ImportStatement(); - stmt.range = range; - stmt.declarations = null; - stmt.namespaceName = identifier; - stmt.path = path; - var normalizedPath = util_1.normalizePath(path.value); - if (path.value.startsWith(".")) { - stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); - } - else { - if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { - normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; - } - stmt.normalizedPath = normalizedPath; - } - stmt.internalPath = mangleInternalPath(stmt.normalizedPath); - return stmt; - }; - Node.createImportDeclaration = function (foreignName, name, range) { - var elem = new ImportDeclaration(); - elem.range = range; - elem.foreignName = foreignName; - if (!name) - name = foreignName; - elem.name = name; - return elem; - }; - Node.createInterfaceDeclaration = function (name, typeParameters, extendsType, // can't be a function - members, decorators, flags, range) { - var stmt = new InterfaceDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.extendsType = extendsType; - stmt.members = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createFieldDeclaration = function (name, type, initializer, decorators, flags, range) { - var stmt = new FieldDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.type = type; - stmt.initializer = initializer; - stmt.decorators = decorators; - return stmt; - }; - Node.createForStatement = function (initializer, condition, incrementor, statement, range) { - var stmt = new ForStatement(); - stmt.range = range; - stmt.initializer = initializer; - stmt.condition = condition; - stmt.incrementor = incrementor; - stmt.statement = statement; - return stmt; - }; - Node.createFunctionDeclaration = function (name, typeParameters, signature, body, decorators, flags, arrowKind, range) { - var stmt = new FunctionDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.signature = signature; - stmt.body = body; - stmt.decorators = decorators; - stmt.arrowKind = arrowKind; - return stmt; - }; - Node.createIndexSignatureDeclaration = function (keyType, valueType, range) { - var elem = new IndexSignatureDeclaration(); - elem.range = range; - elem.keyType = keyType; - elem.valueType = valueType; - return elem; - }; - Node.createMethodDeclaration = function (name, typeParameters, signature, body, decorators, flags, range) { - var stmt = new MethodDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.signature = signature; - stmt.body = body; - stmt.decorators = decorators; - return stmt; - }; - Node.createNamespaceDeclaration = function (name, members, decorators, flags, range) { - var stmt = new NamespaceDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.members = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createReturnStatement = function (value, range) { - var stmt = new ReturnStatement(); - stmt.range = range; - stmt.value = value; - return stmt; - }; - Node.createSwitchStatement = function (condition, cases, range) { - var stmt = new SwitchStatement(); - stmt.range = range; - stmt.condition = condition; - stmt.cases = cases; - return stmt; - }; - Node.createSwitchCase = function (label, statements, range) { - var elem = new SwitchCase(); - elem.range = range; - elem.label = label; - elem.statements = statements; - return elem; - }; - Node.createThrowStatement = function (value, range) { - var stmt = new ThrowStatement(); - stmt.range = range; - stmt.value = value; - return stmt; - }; - Node.createTryStatement = function (statements, catchVariable, catchStatements, finallyStatements, range) { - var stmt = new TryStatement(); - stmt.range = range; - stmt.statements = statements; - stmt.catchVariable = catchVariable; - stmt.catchStatements = catchStatements; - stmt.finallyStatements = finallyStatements; - return stmt; - }; - Node.createTypeDeclaration = function (name, typeParameters, alias, decorators, flags, range) { - var stmt = new TypeDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.type = alias; - stmt.decorators = decorators; - return stmt; - }; - Node.createVariableStatement = function (declarations, decorators, range) { - var stmt = new VariableStatement(); - stmt.range = range; - stmt.declarations = declarations; - stmt.decorators = decorators; - return stmt; - }; - Node.createVariableDeclaration = function (name, type, initializer, decorators, flags, range) { - var elem = new VariableDeclaration(); - elem.range = range; - elem.flags = flags; - elem.name = name; - elem.type = type; - elem.initializer = initializer; - elem.decorators = decorators; // inherited - return elem; - }; - Node.createVoidStatement = function (expression, range) { - var stmt = new VoidStatement(); - stmt.range = range; - stmt.expression = expression; - return stmt; - }; - Node.createWhileStatement = function (condition, statement, range) { - var stmt = new WhileStatement(); - stmt.range = range; - stmt.condition = condition; - stmt.statement = statement; - return stmt; - }; - return Node; -}()); -exports.Node = Node; -// types -var TypeNode = /** @class */ (function (_super) { - __extends(TypeNode, _super); - function TypeNode() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TypeNode; -}(Node)); -exports.TypeNode = TypeNode; -/** Represents a type name. */ -var TypeName = /** @class */ (function (_super) { - __extends(TypeName, _super); - function TypeName() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TYPENAME; - return _this; - } - return TypeName; -}(Node)); -exports.TypeName = TypeName; -/** Represents a named type. */ -var NamedTypeNode = /** @class */ (function (_super) { - __extends(NamedTypeNode, _super); - function NamedTypeNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NAMEDTYPE; - return _this; - } - return NamedTypeNode; -}(TypeNode)); -exports.NamedTypeNode = NamedTypeNode; -/** Represents a function type. */ -var FunctionTypeNode = /** @class */ (function (_super) { - __extends(FunctionTypeNode, _super); - function FunctionTypeNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FUNCTIONTYPE; - return _this; - } - return FunctionTypeNode; -}(TypeNode)); -exports.FunctionTypeNode = FunctionTypeNode; -/** Represents a type parameter. */ -var TypeParameterNode = /** @class */ (function (_super) { - __extends(TypeParameterNode, _super); - function TypeParameterNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TYPEPARAMETER; - return _this; - } - return TypeParameterNode; -}(Node)); -exports.TypeParameterNode = TypeParameterNode; -/** Represents the kind of a parameter. */ -var ParameterKind; -(function (ParameterKind) { - /** No specific flags. */ - ParameterKind[ParameterKind["DEFAULT"] = 0] = "DEFAULT"; - /** Is an optional parameter. */ - ParameterKind[ParameterKind["OPTIONAL"] = 1] = "OPTIONAL"; - /** Is a rest parameter. */ - ParameterKind[ParameterKind["REST"] = 2] = "REST"; -})(ParameterKind = exports.ParameterKind || (exports.ParameterKind = {})); -/** Represents a function parameter. */ -var ParameterNode = /** @class */ (function (_super) { - __extends(ParameterNode, _super); - function ParameterNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.PARAMETER; - /** Implicit field declaration, if applicable. */ - _this.implicitFieldDeclaration = null; - /** Common flags indicating specific traits. */ - _this.flags = common_1.CommonFlags.NONE; - return _this; - } - /** Tests if this node has the specified flag or flags. */ - ParameterNode.prototype.is = function (flag) { return (this.flags & flag) == flag; }; - /** Tests if this node has one of the specified flags. */ - ParameterNode.prototype.isAny = function (flag) { return (this.flags & flag) != 0; }; - /** Sets a specific flag or flags. */ - ParameterNode.prototype.set = function (flag) { this.flags |= flag; }; - return ParameterNode; -}(Node)); -exports.ParameterNode = ParameterNode; -// special -/** Built-in decorator kinds. */ -var DecoratorKind; -(function (DecoratorKind) { - DecoratorKind[DecoratorKind["CUSTOM"] = 0] = "CUSTOM"; - DecoratorKind[DecoratorKind["GLOBAL"] = 1] = "GLOBAL"; - DecoratorKind[DecoratorKind["OPERATOR"] = 2] = "OPERATOR"; - DecoratorKind[DecoratorKind["OPERATOR_BINARY"] = 3] = "OPERATOR_BINARY"; - DecoratorKind[DecoratorKind["OPERATOR_PREFIX"] = 4] = "OPERATOR_PREFIX"; - DecoratorKind[DecoratorKind["OPERATOR_POSTFIX"] = 5] = "OPERATOR_POSTFIX"; - DecoratorKind[DecoratorKind["UNMANAGED"] = 6] = "UNMANAGED"; - DecoratorKind[DecoratorKind["SEALED"] = 7] = "SEALED"; - DecoratorKind[DecoratorKind["INLINE"] = 8] = "INLINE"; - DecoratorKind[DecoratorKind["EXTERNAL"] = 9] = "EXTERNAL"; - DecoratorKind[DecoratorKind["BUILTIN"] = 10] = "BUILTIN"; - DecoratorKind[DecoratorKind["LAZY"] = 11] = "LAZY"; - DecoratorKind[DecoratorKind["UNSAFE"] = 12] = "UNSAFE"; -})(DecoratorKind = exports.DecoratorKind || (exports.DecoratorKind = {})); -/** Returns the kind of the specified decorator. Defaults to {@link DecoratorKind.CUSTOM}. */ -function decoratorNameToKind(name) { - // @global, @inline, @operator, @sealed, @unmanaged - if (name.kind == NodeKind.IDENTIFIER) { - var nameStr = name.text; - assert(nameStr.length); - switch (nameStr.charCodeAt(0)) { - case 98 /* b */: { - if (nameStr == "builtin") - return DecoratorKind.BUILTIN; - break; - } - case 101 /* e */: { - if (nameStr == "external") - return DecoratorKind.EXTERNAL; - break; - } - case 103 /* g */: { - if (nameStr == "global") - return DecoratorKind.GLOBAL; - break; - } - case 105 /* i */: { - if (nameStr == "inline") - return DecoratorKind.INLINE; - break; - } - case 108 /* l */: { - if (nameStr == "lazy") - return DecoratorKind.LAZY; - break; - } - case 111 /* o */: { - if (nameStr == "operator") - return DecoratorKind.OPERATOR; - break; - } - case 115 /* s */: { - if (nameStr == "sealed") - return DecoratorKind.SEALED; - break; - } - case 117 /* u */: { - if (nameStr == "unmanaged") - return DecoratorKind.UNMANAGED; - if (nameStr == "unsafe") - return DecoratorKind.UNSAFE; - break; - } - } - } - else if (name.kind == NodeKind.PROPERTYACCESS && - name.expression.kind == NodeKind.IDENTIFIER) { - var nameStr = name.expression.text; - assert(nameStr.length); - var propStr = name.property.text; - assert(propStr.length); - // @operator.binary, @operator.prefix, @operator.postfix - if (nameStr == "operator") { - switch (propStr.charCodeAt(0)) { - case 98 /* b */: { - if (propStr == "binary") - return DecoratorKind.OPERATOR_BINARY; - break; - } - case 112 /* p */: { - switch (propStr) { - case "prefix": return DecoratorKind.OPERATOR_PREFIX; - case "postfix": return DecoratorKind.OPERATOR_POSTFIX; - } - break; - } - } - } - } - return DecoratorKind.CUSTOM; -} -exports.decoratorNameToKind = decoratorNameToKind; -/** Represents a decorator. */ -var DecoratorNode = /** @class */ (function (_super) { - __extends(DecoratorNode, _super); - function DecoratorNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.DECORATOR; - return _this; - } - return DecoratorNode; -}(Node)); -exports.DecoratorNode = DecoratorNode; -/** Comment kinds. */ -var CommentKind; -(function (CommentKind) { - /** Line comment. */ - CommentKind[CommentKind["LINE"] = 0] = "LINE"; - /** Triple-slash comment. */ - CommentKind[CommentKind["TRIPLE"] = 1] = "TRIPLE"; - /** Block comment. */ - CommentKind[CommentKind["BLOCK"] = 2] = "BLOCK"; -})(CommentKind = exports.CommentKind || (exports.CommentKind = {})); -/** Represents a comment. */ -var CommentNode = /** @class */ (function (_super) { - __extends(CommentNode, _super); - function CommentNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.COMMENT; - return _this; - } - return CommentNode; -}(Node)); -exports.CommentNode = CommentNode; -// expressions -/** Base class of all expression nodes. */ -var Expression = /** @class */ (function (_super) { - __extends(Expression, _super); - function Expression() { - return _super !== null && _super.apply(this, arguments) || this; - } - return Expression; -}(Node)); -exports.Expression = Expression; -/** Represents an identifier expression. */ -var IdentifierExpression = /** @class */ (function (_super) { - __extends(IdentifierExpression, _super); - function IdentifierExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IDENTIFIER; - return _this; - } - return IdentifierExpression; -}(Expression)); -exports.IdentifierExpression = IdentifierExpression; -/** Indicates the kind of a literal. */ -var LiteralKind; -(function (LiteralKind) { - LiteralKind[LiteralKind["FLOAT"] = 0] = "FLOAT"; - LiteralKind[LiteralKind["INTEGER"] = 1] = "INTEGER"; - LiteralKind[LiteralKind["STRING"] = 2] = "STRING"; - LiteralKind[LiteralKind["REGEXP"] = 3] = "REGEXP"; - LiteralKind[LiteralKind["ARRAY"] = 4] = "ARRAY"; - LiteralKind[LiteralKind["OBJECT"] = 5] = "OBJECT"; -})(LiteralKind = exports.LiteralKind || (exports.LiteralKind = {})); -/** Base class of all literal expressions. */ -var LiteralExpression = /** @class */ (function (_super) { - __extends(LiteralExpression, _super); - function LiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.LITERAL; - return _this; - } - return LiteralExpression; -}(Expression)); -exports.LiteralExpression = LiteralExpression; -/** Represents an `[]` literal expression. */ -var ArrayLiteralExpression = /** @class */ (function (_super) { - __extends(ArrayLiteralExpression, _super); - function ArrayLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.ARRAY; - return _this; - } - return ArrayLiteralExpression; -}(LiteralExpression)); -exports.ArrayLiteralExpression = ArrayLiteralExpression; -/** Indicates the kind of an assertion. */ -var AssertionKind; -(function (AssertionKind) { - AssertionKind[AssertionKind["PREFIX"] = 0] = "PREFIX"; - AssertionKind[AssertionKind["AS"] = 1] = "AS"; - AssertionKind[AssertionKind["NONNULL"] = 2] = "NONNULL"; -})(AssertionKind = exports.AssertionKind || (exports.AssertionKind = {})); -/** Represents an assertion expression. */ -var AssertionExpression = /** @class */ (function (_super) { - __extends(AssertionExpression, _super); - function AssertionExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ASSERTION; - return _this; - } - return AssertionExpression; -}(Expression)); -exports.AssertionExpression = AssertionExpression; -/** Represents a binary expression. */ -var BinaryExpression = /** @class */ (function (_super) { - __extends(BinaryExpression, _super); - function BinaryExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.BINARY; - return _this; - } - return BinaryExpression; -}(Expression)); -exports.BinaryExpression = BinaryExpression; -/** Represents a call expression. */ -var CallExpression = /** @class */ (function (_super) { - __extends(CallExpression, _super); - function CallExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CALL; - return _this; - } - Object.defineProperty(CallExpression.prototype, "typeArgumentsRange", { - /** Gets the type arguments range for reporting. */ - get: function () { - var typeArguments = this.typeArguments; - var numTypeArguments; - if (typeArguments && (numTypeArguments = typeArguments.length)) { - return tokenizer_1.Range.join(typeArguments[0].range, typeArguments[numTypeArguments - 1].range); - } - return this.expression.range; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CallExpression.prototype, "argumentsRange", { - /** Gets the arguments range for reporting. */ - get: function () { - var args = this.arguments; - var numArguments = args.length; - if (numArguments) { - return tokenizer_1.Range.join(args[0].range, args[numArguments - 1].range); - } - return this.expression.range; - }, - enumerable: true, - configurable: true - }); - return CallExpression; -}(Expression)); -exports.CallExpression = CallExpression; -/** Represents a class expression using the 'class' keyword. */ -var ClassExpression = /** @class */ (function (_super) { - __extends(ClassExpression, _super); - function ClassExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CLASS; - return _this; - } - return ClassExpression; -}(Expression)); -exports.ClassExpression = ClassExpression; -/** Represents a comma expression composed of multiple expressions. */ -var CommaExpression = /** @class */ (function (_super) { - __extends(CommaExpression, _super); - function CommaExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.COMMA; - return _this; - } - return CommaExpression; -}(Expression)); -exports.CommaExpression = CommaExpression; -/** Represents a `constructor` expression. */ -var ConstructorExpression = /** @class */ (function (_super) { - __extends(ConstructorExpression, _super); - function ConstructorExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CONSTRUCTOR; - _this.text = "constructor"; - _this.symbol = common_1.CommonSymbols.constructor; - return _this; - } - return ConstructorExpression; -}(IdentifierExpression)); -exports.ConstructorExpression = ConstructorExpression; -/** Represents an element access expression, e.g., array access. */ -var ElementAccessExpression = /** @class */ (function (_super) { - __extends(ElementAccessExpression, _super); - function ElementAccessExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ELEMENTACCESS; - return _this; - } - return ElementAccessExpression; -}(Expression)); -exports.ElementAccessExpression = ElementAccessExpression; -/** Represents a float literal expression. */ -var FloatLiteralExpression = /** @class */ (function (_super) { - __extends(FloatLiteralExpression, _super); - function FloatLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.FLOAT; - return _this; - } - return FloatLiteralExpression; -}(LiteralExpression)); -exports.FloatLiteralExpression = FloatLiteralExpression; -/** Represents a function expression using the 'function' keyword. */ -var FunctionExpression = /** @class */ (function (_super) { - __extends(FunctionExpression, _super); - function FunctionExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FUNCTION; - return _this; - } - return FunctionExpression; -}(Expression)); -exports.FunctionExpression = FunctionExpression; -/** Represents an `instanceof` expression. */ -var InstanceOfExpression = /** @class */ (function (_super) { - __extends(InstanceOfExpression, _super); - function InstanceOfExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.INSTANCEOF; - return _this; - } - return InstanceOfExpression; -}(Expression)); -exports.InstanceOfExpression = InstanceOfExpression; -/** Represents an integer literal expression. */ -var IntegerLiteralExpression = /** @class */ (function (_super) { - __extends(IntegerLiteralExpression, _super); - function IntegerLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.INTEGER; - return _this; - } - return IntegerLiteralExpression; -}(LiteralExpression)); -exports.IntegerLiteralExpression = IntegerLiteralExpression; -/** Represents a `new` expression. Like a call but with its own kind. */ -var NewExpression = /** @class */ (function (_super) { - __extends(NewExpression, _super); - function NewExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NEW; - return _this; - } - return NewExpression; -}(CallExpression)); -exports.NewExpression = NewExpression; -/** Represents a `null` expression. */ -var NullExpression = /** @class */ (function (_super) { - __extends(NullExpression, _super); - function NullExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NULL; - _this.text = "null"; - _this.symbol = common_1.CommonSymbols.null_; - return _this; - } - return NullExpression; -}(IdentifierExpression)); -exports.NullExpression = NullExpression; -/** Represents an object literal expression. */ -var ObjectLiteralExpression = /** @class */ (function (_super) { - __extends(ObjectLiteralExpression, _super); - function ObjectLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.OBJECT; - return _this; - } - return ObjectLiteralExpression; -}(LiteralExpression)); -exports.ObjectLiteralExpression = ObjectLiteralExpression; -/** Represents a parenthesized expression. */ -var ParenthesizedExpression = /** @class */ (function (_super) { - __extends(ParenthesizedExpression, _super); - function ParenthesizedExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.PARENTHESIZED; - return _this; - } - return ParenthesizedExpression; -}(Expression)); -exports.ParenthesizedExpression = ParenthesizedExpression; -/** Represents a property access expression. */ -var PropertyAccessExpression = /** @class */ (function (_super) { - __extends(PropertyAccessExpression, _super); - function PropertyAccessExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.PROPERTYACCESS; - return _this; - } - return PropertyAccessExpression; -}(Expression)); -exports.PropertyAccessExpression = PropertyAccessExpression; -/** Represents a regular expression literal expression. */ -var RegexpLiteralExpression = /** @class */ (function (_super) { - __extends(RegexpLiteralExpression, _super); - function RegexpLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.REGEXP; - return _this; - } - return RegexpLiteralExpression; -}(LiteralExpression)); -exports.RegexpLiteralExpression = RegexpLiteralExpression; -/** Represents a ternary expression, i.e., short if notation. */ -var TernaryExpression = /** @class */ (function (_super) { - __extends(TernaryExpression, _super); - function TernaryExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TERNARY; - return _this; - } - return TernaryExpression; -}(Expression)); -exports.TernaryExpression = TernaryExpression; -/** Represents a string literal expression. */ -var StringLiteralExpression = /** @class */ (function (_super) { - __extends(StringLiteralExpression, _super); - function StringLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.STRING; - return _this; - } - return StringLiteralExpression; -}(LiteralExpression)); -exports.StringLiteralExpression = StringLiteralExpression; -/** Represents a `super` expression. */ -var SuperExpression = /** @class */ (function (_super) { - __extends(SuperExpression, _super); - function SuperExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.SUPER; - _this.text = "super"; - _this.symbol = common_1.CommonSymbols.super_; - return _this; - } - return SuperExpression; -}(IdentifierExpression)); -exports.SuperExpression = SuperExpression; -/** Represents a `this` expression. */ -var ThisExpression = /** @class */ (function (_super) { - __extends(ThisExpression, _super); - function ThisExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.THIS; - _this.text = "this"; - _this.symbol = common_1.CommonSymbols.this_; - return _this; - } - return ThisExpression; -}(IdentifierExpression)); -exports.ThisExpression = ThisExpression; -/** Represents a `true` expression. */ -var TrueExpression = /** @class */ (function (_super) { - __extends(TrueExpression, _super); - function TrueExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TRUE; - _this.text = "true"; - _this.symbol = common_1.CommonSymbols.true_; - return _this; - } - return TrueExpression; -}(IdentifierExpression)); -exports.TrueExpression = TrueExpression; -/** Represents a `false` expression. */ -var FalseExpression = /** @class */ (function (_super) { - __extends(FalseExpression, _super); - function FalseExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FALSE; - _this.text = "false"; - _this.symbol = common_1.CommonSymbols.false_; - return _this; - } - return FalseExpression; -}(IdentifierExpression)); -exports.FalseExpression = FalseExpression; -/** Base class of all unary expressions. */ -var UnaryExpression = /** @class */ (function (_super) { - __extends(UnaryExpression, _super); - function UnaryExpression() { - return _super !== null && _super.apply(this, arguments) || this; - } - return UnaryExpression; -}(Expression)); -exports.UnaryExpression = UnaryExpression; -/** Represents a unary postfix expression, e.g. a postfix increment. */ -var UnaryPostfixExpression = /** @class */ (function (_super) { - __extends(UnaryPostfixExpression, _super); - function UnaryPostfixExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.UNARYPOSTFIX; - return _this; - } - return UnaryPostfixExpression; -}(UnaryExpression)); -exports.UnaryPostfixExpression = UnaryPostfixExpression; -/** Represents a unary prefix expression, e.g. a negation. */ -var UnaryPrefixExpression = /** @class */ (function (_super) { - __extends(UnaryPrefixExpression, _super); - function UnaryPrefixExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.UNARYPREFIX; - return _this; - } - return UnaryPrefixExpression; -}(UnaryExpression)); -exports.UnaryPrefixExpression = UnaryPrefixExpression; -// statements -/** Base class of all statement nodes. */ -var Statement = /** @class */ (function (_super) { - __extends(Statement, _super); - function Statement() { - return _super !== null && _super.apply(this, arguments) || this; - } - return Statement; -}(Node)); -exports.Statement = Statement; -/** Indicates the specific kind of a source. */ -var SourceKind; -(function (SourceKind) { - /** User-provided file. */ - SourceKind[SourceKind["USER"] = 0] = "USER"; - /** User-provided entry file. */ - SourceKind[SourceKind["USER_ENTRY"] = 1] = "USER_ENTRY"; - /** Library-provided file. */ - SourceKind[SourceKind["LIBRARY"] = 2] = "LIBRARY"; - /** Library-provided entry file. */ - SourceKind[SourceKind["LIBRARY_ENTRY"] = 3] = "LIBRARY_ENTRY"; -})(SourceKind = exports.SourceKind || (exports.SourceKind = {})); -/** A top-level source node. */ -var Source = /** @class */ (function (_super) { - __extends(Source, _super); - /** Constructs a new source node. */ - function Source(normalizedPath, text, kind) { - var _this = _super.call(this) || this; - _this.kind = NodeKind.SOURCE; - _this.parent = null; - /** Tokenizer reference. */ - _this.tokenizer = null; - /** Source map index. */ - _this.debugInfoIndex = -1; - /** Re-exported sources. */ - _this.exportPaths = null; - _this.sourceKind = kind; - _this.normalizedPath = normalizedPath; - var internalPath = mangleInternalPath(_this.normalizedPath); - _this.internalPath = internalPath; - var pos = internalPath.lastIndexOf(common_1.PATH_DELIMITER); - _this.simplePath = pos >= 0 ? internalPath.substring(pos + 1) : internalPath; - _this.statements = new Array(); - _this.range = new tokenizer_1.Range(_this, 0, text.length); - _this.text = text; - return _this; - } - Object.defineProperty(Source.prototype, "isLibrary", { - get: function () { - var kind = this.sourceKind; - return kind == SourceKind.LIBRARY || kind == SourceKind.LIBRARY_ENTRY; - }, - enumerable: true, - configurable: true - }); - return Source; -}(Node)); -exports.Source = Source; -/** Base class of all declaration statements. */ -var DeclarationStatement = /** @class */ (function (_super) { - __extends(DeclarationStatement, _super); - function DeclarationStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - /** Array of decorators. */ - _this.decorators = null; - /** Common flags indicating specific traits. */ - _this.flags = common_1.CommonFlags.NONE; - return _this; - } - /** Tests if this node has the specified flag or flags. */ - DeclarationStatement.prototype.is = function (flag) { return (this.flags & flag) == flag; }; - /** Tests if this node has one of the specified flags. */ - DeclarationStatement.prototype.isAny = function (flag) { return (this.flags & flag) != 0; }; - /** Sets a specific flag or flags. */ - DeclarationStatement.prototype.set = function (flag) { this.flags |= flag; }; - return DeclarationStatement; -}(Statement)); -exports.DeclarationStatement = DeclarationStatement; -/** Represents an index signature declaration. */ -var IndexSignatureDeclaration = /** @class */ (function (_super) { - __extends(IndexSignatureDeclaration, _super); - function IndexSignatureDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.INDEXSIGNATUREDECLARATION; - return _this; - } - return IndexSignatureDeclaration; -}(DeclarationStatement)); -exports.IndexSignatureDeclaration = IndexSignatureDeclaration; -/** Base class of all variable-like declaration statements. */ -var VariableLikeDeclarationStatement = /** @class */ (function (_super) { - __extends(VariableLikeDeclarationStatement, _super); - function VariableLikeDeclarationStatement() { - return _super !== null && _super.apply(this, arguments) || this; - } - return VariableLikeDeclarationStatement; -}(DeclarationStatement)); -exports.VariableLikeDeclarationStatement = VariableLikeDeclarationStatement; -/** Represents a block statement. */ -var BlockStatement = /** @class */ (function (_super) { - __extends(BlockStatement, _super); - function BlockStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.BLOCK; - return _this; - } - return BlockStatement; -}(Statement)); -exports.BlockStatement = BlockStatement; -/** Represents a `break` statement. */ -var BreakStatement = /** @class */ (function (_super) { - __extends(BreakStatement, _super); - function BreakStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.BREAK; - return _this; - } - return BreakStatement; -}(Statement)); -exports.BreakStatement = BreakStatement; -/** Represents a `class` declaration. */ -var ClassDeclaration = /** @class */ (function (_super) { - __extends(ClassDeclaration, _super); - function ClassDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CLASSDECLARATION; - return _this; - } - Object.defineProperty(ClassDeclaration.prototype, "isGeneric", { - get: function () { - var typeParameters = this.typeParameters; - return typeParameters != null && typeParameters.length > 0; - }, - enumerable: true, - configurable: true - }); - return ClassDeclaration; -}(DeclarationStatement)); -exports.ClassDeclaration = ClassDeclaration; -/** Represents a `continue` statement. */ -var ContinueStatement = /** @class */ (function (_super) { - __extends(ContinueStatement, _super); - function ContinueStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CONTINUE; - return _this; - } - return ContinueStatement; -}(Statement)); -exports.ContinueStatement = ContinueStatement; -/** Represents a `do` statement. */ -var DoStatement = /** @class */ (function (_super) { - __extends(DoStatement, _super); - function DoStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.DO; - return _this; - } - return DoStatement; -}(Statement)); -exports.DoStatement = DoStatement; -/** Represents an empty statement, i.e., a semicolon terminating nothing. */ -var EmptyStatement = /** @class */ (function (_super) { - __extends(EmptyStatement, _super); - function EmptyStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EMPTY; - return _this; - } - return EmptyStatement; -}(Statement)); -exports.EmptyStatement = EmptyStatement; -/** Represents an `enum` declaration. */ -var EnumDeclaration = /** @class */ (function (_super) { - __extends(EnumDeclaration, _super); - function EnumDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ENUMDECLARATION; - return _this; - } - return EnumDeclaration; -}(DeclarationStatement)); -exports.EnumDeclaration = EnumDeclaration; -/** Represents a value of an `enum` declaration. */ -var EnumValueDeclaration = /** @class */ (function (_super) { - __extends(EnumValueDeclaration, _super); - function EnumValueDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ENUMVALUEDECLARATION; - return _this; - } - return EnumValueDeclaration; -}(VariableLikeDeclarationStatement)); -exports.EnumValueDeclaration = EnumValueDeclaration; -/** Represents an `export import` statement of an interface. */ -var ExportImportStatement = /** @class */ (function (_super) { - __extends(ExportImportStatement, _super); - function ExportImportStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORTIMPORT; - return _this; - } - return ExportImportStatement; -}(Node)); -exports.ExportImportStatement = ExportImportStatement; -/** Represents a member of an `export` statement. */ -var ExportMember = /** @class */ (function (_super) { - __extends(ExportMember, _super); - function ExportMember() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORTMEMBER; - return _this; - } - return ExportMember; -}(Node)); -exports.ExportMember = ExportMember; -/** Represents an `export` statement. */ -var ExportStatement = /** @class */ (function (_super) { - __extends(ExportStatement, _super); - function ExportStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORT; - return _this; - } - return ExportStatement; -}(Statement)); -exports.ExportStatement = ExportStatement; -/** Represents an `export default` statement. */ -var ExportDefaultStatement = /** @class */ (function (_super) { - __extends(ExportDefaultStatement, _super); - function ExportDefaultStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORTDEFAULT; - return _this; - } - return ExportDefaultStatement; -}(Statement)); -exports.ExportDefaultStatement = ExportDefaultStatement; -/** Represents an expression that is used as a statement. */ -var ExpressionStatement = /** @class */ (function (_super) { - __extends(ExpressionStatement, _super); - function ExpressionStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPRESSION; - return _this; - } - return ExpressionStatement; -}(Statement)); -exports.ExpressionStatement = ExpressionStatement; -/** Represents a field declaration within a `class`. */ -var FieldDeclaration = /** @class */ (function (_super) { - __extends(FieldDeclaration, _super); - function FieldDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FIELDDECLARATION; - /** Parameter index if declared as a constructor parameter, otherwise `-1`. */ - _this.parameterIndex = -1; - return _this; - } - return FieldDeclaration; -}(VariableLikeDeclarationStatement)); -exports.FieldDeclaration = FieldDeclaration; -/** Represents a `for` statement. */ -var ForStatement = /** @class */ (function (_super) { - __extends(ForStatement, _super); - function ForStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FOR; - return _this; - } - return ForStatement; -}(Statement)); -exports.ForStatement = ForStatement; -/** Indicates the kind of an array function. */ -var ArrowKind; -(function (ArrowKind) { - /** Not an arrow function. */ - ArrowKind[ArrowKind["NONE"] = 0] = "NONE"; - /** Parenthesized parameter list. */ - ArrowKind[ArrowKind["ARROW_PARENTHESIZED"] = 1] = "ARROW_PARENTHESIZED"; - /** Single parameter without parenthesis. */ - ArrowKind[ArrowKind["ARROW_SINGLE"] = 2] = "ARROW_SINGLE"; -})(ArrowKind = exports.ArrowKind || (exports.ArrowKind = {})); -/** Represents a `function` declaration. */ -var FunctionDeclaration = /** @class */ (function (_super) { - __extends(FunctionDeclaration, _super); - function FunctionDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FUNCTIONDECLARATION; - return _this; - } - Object.defineProperty(FunctionDeclaration.prototype, "isGeneric", { - get: function () { - var typeParameters = this.typeParameters; - return typeParameters != null && typeParameters.length > 0; - }, - enumerable: true, - configurable: true - }); - /** Clones this function declaration. */ - FunctionDeclaration.prototype.clone = function () { - return Node.createFunctionDeclaration(this.name, this.typeParameters, this.signature, this.body, this.decorators, this.flags, this.arrowKind, this.range); - }; - return FunctionDeclaration; -}(DeclarationStatement)); -exports.FunctionDeclaration = FunctionDeclaration; -/** Represents an `if` statement. */ -var IfStatement = /** @class */ (function (_super) { - __extends(IfStatement, _super); - function IfStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IF; - return _this; - } - return IfStatement; -}(Statement)); -exports.IfStatement = IfStatement; -/** Represents an `import` declaration part of an {@link ImportStatement}. */ -var ImportDeclaration = /** @class */ (function (_super) { - __extends(ImportDeclaration, _super); - function ImportDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IMPORTDECLARATION; - return _this; - } - return ImportDeclaration; -}(DeclarationStatement)); -exports.ImportDeclaration = ImportDeclaration; -/** Represents an `import` statement. */ -var ImportStatement = /** @class */ (function (_super) { - __extends(ImportStatement, _super); - function ImportStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IMPORT; - return _this; - } - return ImportStatement; -}(Statement)); -exports.ImportStatement = ImportStatement; -/** Represents an `interfarce` declaration. */ -var InterfaceDeclaration = /** @class */ (function (_super) { - __extends(InterfaceDeclaration, _super); - function InterfaceDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.INTERFACEDECLARATION; - return _this; - } - return InterfaceDeclaration; -}(ClassDeclaration)); -exports.InterfaceDeclaration = InterfaceDeclaration; -/** Represents a method declaration within a `class`. */ -var MethodDeclaration = /** @class */ (function (_super) { - __extends(MethodDeclaration, _super); - function MethodDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.METHODDECLARATION; - return _this; - } - return MethodDeclaration; -}(FunctionDeclaration)); -exports.MethodDeclaration = MethodDeclaration; -/** Represents a `namespace` declaration. */ -var NamespaceDeclaration = /** @class */ (function (_super) { - __extends(NamespaceDeclaration, _super); - function NamespaceDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NAMESPACEDECLARATION; - return _this; - } - return NamespaceDeclaration; -}(DeclarationStatement)); -exports.NamespaceDeclaration = NamespaceDeclaration; -/** Represents a `return` statement. */ -var ReturnStatement = /** @class */ (function (_super) { - __extends(ReturnStatement, _super); - function ReturnStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.RETURN; - return _this; - } - return ReturnStatement; -}(Statement)); -exports.ReturnStatement = ReturnStatement; -/** Represents a single `case` within a `switch` statement. */ -var SwitchCase = /** @class */ (function (_super) { - __extends(SwitchCase, _super); - function SwitchCase() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.SWITCHCASE; - return _this; - } - return SwitchCase; -}(Node)); -exports.SwitchCase = SwitchCase; -/** Represents a `switch` statement. */ -var SwitchStatement = /** @class */ (function (_super) { - __extends(SwitchStatement, _super); - function SwitchStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.SWITCH; - return _this; - } - return SwitchStatement; -}(Statement)); -exports.SwitchStatement = SwitchStatement; -/** Represents a `throw` statement. */ -var ThrowStatement = /** @class */ (function (_super) { - __extends(ThrowStatement, _super); - function ThrowStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.THROW; - return _this; - } - return ThrowStatement; -}(Statement)); -exports.ThrowStatement = ThrowStatement; -/** Represents a `try` statement. */ -var TryStatement = /** @class */ (function (_super) { - __extends(TryStatement, _super); - function TryStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TRY; - return _this; - } - return TryStatement; -}(Statement)); -exports.TryStatement = TryStatement; -/** Represents a `type` declaration. */ -var TypeDeclaration = /** @class */ (function (_super) { - __extends(TypeDeclaration, _super); - function TypeDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TYPEDECLARATION; - return _this; - } - return TypeDeclaration; -}(DeclarationStatement)); -exports.TypeDeclaration = TypeDeclaration; -/** Represents a variable declaration part of a {@link VariableStatement}. */ -var VariableDeclaration = /** @class */ (function (_super) { - __extends(VariableDeclaration, _super); - function VariableDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.VARIABLEDECLARATION; - return _this; - } - return VariableDeclaration; -}(VariableLikeDeclarationStatement)); -exports.VariableDeclaration = VariableDeclaration; -/** Represents a variable statement wrapping {@link VariableDeclaration}s. */ -var VariableStatement = /** @class */ (function (_super) { - __extends(VariableStatement, _super); - function VariableStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.VARIABLE; - return _this; - } - return VariableStatement; -}(Statement)); -exports.VariableStatement = VariableStatement; -/** Represents a void statement dropping an expression's value. */ -var VoidStatement = /** @class */ (function (_super) { - __extends(VoidStatement, _super); - function VoidStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.VOID; - return _this; - } - return VoidStatement; -}(Statement)); -exports.VoidStatement = VoidStatement; -/** Represents a `while` statement. */ -var WhileStatement = /** @class */ (function (_super) { - __extends(WhileStatement, _super); - function WhileStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.WHILE; - return _this; - } - return WhileStatement; -}(Statement)); -exports.WhileStatement = WhileStatement; -/** Finds the first decorator matching the specified kind. */ -function findDecorator(kind, decorators) { - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - var decorator = decorators[i]; - if (decorator.decoratorKind == kind) - return decorator; - } - } - return null; -} -exports.findDecorator = findDecorator; -/** Mangles an external to an internal path. */ -function mangleInternalPath(path) { - if (path.endsWith(".ts")) - path = path.substring(0, path.length - 3); - return path; -} -exports.mangleInternalPath = mangleInternalPath; -/** Tests if the specified type node represents an omitted type. */ -function isTypeOmitted(type) { - if (type.kind == NodeKind.NAMEDTYPE) { - var name = type.name; - return !(name.next || name.identifier.text.length); - } - return false; -} -exports.isTypeOmitted = isTypeOmitted; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHLENBQUEsS0FBSzs7Ozs7Ozs7Ozs7Ozs7O0FBRVIsbUNBS2tCO0FBRWxCLHlDQUlxQjtBQVFaLGdCQVhQLGlCQUFLLENBV087QUFBRSxnQkFUZCxpQkFBSyxDQVNjO0FBTnJCLCtCQUlnQjtBQUloQixvQ0FBb0M7QUFDcEMsSUFBWSxRQTJFWDtBQTNFRCxXQUFZLFFBQVE7SUFFbEIsMkNBQU0sQ0FBQTtJQUVOLFFBQVE7SUFDUixpREFBUyxDQUFBO0lBQ1QsdURBQVksQ0FBQTtJQUNaLCtDQUFRLENBQUE7SUFDUix5REFBYSxDQUFBO0lBQ2IsaURBQVMsQ0FBQTtJQUVULGNBQWM7SUFDZCxtREFBVSxDQUFBO0lBQ1YsaURBQVMsQ0FBQTtJQUNULDJDQUFNLENBQUE7SUFDTix1Q0FBSSxDQUFBO0lBQ0osMENBQUssQ0FBQTtJQUNMLDBDQUFLLENBQUE7SUFDTCwwREFBYSxDQUFBO0lBQ2IsMENBQUssQ0FBQTtJQUNMLGdEQUFRLENBQUE7SUFDUixvREFBVSxDQUFBO0lBQ1YsOENBQU8sQ0FBQTtJQUNQLHNDQUFHLENBQUE7SUFDSCx3Q0FBSSxDQUFBO0lBQ0osMERBQWEsQ0FBQTtJQUNiLDREQUFjLENBQUE7SUFDZCw4Q0FBTyxDQUFBO0lBQ1AsMENBQUssQ0FBQTtJQUNMLHdDQUFJLENBQUE7SUFDSix3Q0FBSSxDQUFBO0lBQ0osc0RBQVcsQ0FBQTtJQUNYLHdEQUFZLENBQUE7SUFDWixzREFBVyxDQUFBO0lBRVgsYUFBYTtJQUNiLDBDQUFLLENBQUE7SUFDTCwwQ0FBSyxDQUFBO0lBQ0wsZ0RBQVEsQ0FBQTtJQUNSLG9DQUFFLENBQUE7SUFDRiwwQ0FBSyxDQUFBO0lBQ0wsNENBQU0sQ0FBQTtJQUNOLDBEQUFhLENBQUE7SUFDYix3REFBWSxDQUFBO0lBQ1osb0RBQVUsQ0FBQTtJQUNWLHNDQUFH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R0FPNUM7QUFQWSx3Q0FBYztBQVMzQiw2REFBNkQ7QUFDN0QsU0FBZ0IsYUFBYSxDQUFDLElBQW1CLEVBQUUsVUFBa0M7SUFDbkYsSUFBSSxVQUFVLEVBQUU7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pELElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLFNBQVMsQ0FBQyxhQUFhLElBQUksSUFBSTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztTQUN2RDtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBUkQsc0NBUUM7QUFFRCwrQ0FBK0M7QUFDL0MsU0FBZ0Isa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBSEQsZ0RBR0M7QUFFRCxtRUFBbUU7QUFDbkUsU0FBZ0IsYUFBYSxDQUFDLElBQWM7SUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7UUFDbkMsSUFBSSxJQUFJLEdBQW1CLElBQUssQ0FBQyxJQUFJLENBQUM7UUFDdEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNwRDtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQU5ELHNDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBYnN0cmFjdCBzeW50YXggdHJlZSByZXByZXNlbnRpbmcgYSBzb3VyY2UgZmlsZSBvbmNlIHBhcnNlZC5cbiAqIEBtb2R1bGUgYXN0XG4gKi8vKioqL1xuXG5pbXBvcnQge1xuICBDb21tb25GbGFncyxcbiAgQ29tbW9uU3ltYm9scyxcbiAgUEFUSF9ERUxJTUlURVIsXG4gIExJQlJBUllfUFJFRklYXG59IGZyb20gXCIuL2NvbW1vblwiO1xuXG5pbXBvcnQge1xuICBUb2tlbixcbiAgVG9rZW5pemVyLFxuICBSYW5nZVxufSBmcm9tIFwiLi90b2tlbml6ZXJcIjtcblxuaW1wb3J0IHtcbiAgbm9ybWFsaXplUGF0aCxcbiAgcmVzb2x2ZVBhdGgsXG4gIENoYXJDb2RlXG59IGZyb20gXCIuL3V0aWxcIjtcblxuZXhwb3J0IHsgVG9rZW4sIFJhbmdlIH07XG5cbi8qKiBJbmRpY2F0ZXMgdGhlIGtpbmQgb2YgYSBub2RlLiAqL1xuZXhwb3J0IGVudW0gTm9kZUtpbmQge1xuXG4gIFNPVVJDRSxcblxuICAvLyB0eXBlc1xuICBOQU1FRFRZUEUsXG4gIEZVTkNUSU9OVFlQRSxcbiAgVFlQRU5BTUUsXG4gIFRZUEVQQVJBTUVURVIsXG4gIFBBUkFNRVRFUixcblxuICAvLyBleHByZXNzaW9uc1xuICBJREVOVElGSUVSLFxuICBBU1NFUlRJT04sXG4gIEJJTkFSWSxcbiAgQ0FMTCxcbiAgQ0xBU1MsXG4gIENPTU1BLFxuICBFTEVNRU5UQUNDRVNTLFxuICBGQUxTRSxcbiAgRlVOQ1RJT04sXG4gIElOU1RBTkNFT0YsXG4gIExJVEVSQUwsXG4gIE5FVyxcbiAgTlVMTCxcbiAgUEFSRU5USEVTSVpFRCxcbiAgUFJPUEVSVFlBQ0NFU1MsXG4gIFRFUk5BUlksXG4gIFNVUEVSLFxuICBUSElTLFxuICBUUlVFLFxuICBDT05TVFJVQ1RPUixcbiAgVU5BUllQT1NURklYLFxuICBVTkFSWVBSRUZJWCxcblxuICAvLyBzdGF0ZW1lbnRzXG4gIEJMT0NLLFxuICBCUkVBSyxcbiAgQ09OVElOVUUsXG4gIERPLFxuICBFTVBUWSxcbiAgRVhQT1JULFxuICBFWFBPUlRERUZBVUxULFxuICBFWFBPUlRJTVBPUlQsXG4gIEVYUFJFU1NJT04sXG4gIEZPUixcbiAgSUYsXG4gIElNUE9SVCxcbiAgUkVUVVJOLFxuICBTV0lUQ0gsXG4gIFRIUk9XLFxuICBUUlksXG4gIFZBUklBQkxFLFxuICBWT0lELFxuICBXSElMRSxcblxuICAvLyBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzXG4gIENMQVNTREVDTEFSQVRJT04sXG4gIEVOVU1ERUNMQVJBVElPTixcbiAgRU5VTVZBTFVFREVDTEFSQVRJT04sXG4gIEZJRUxEREVDTEFSQVRJT04sXG4gIEZVTkNUSU9OREVDTEFSQVRJT04sXG4gIElNUE9SVERFQ0xBUkFUSU9OLFxuICBJTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OLFxuICBJTlRFUkZBQ0VERUNMQVJBVElPTixcbiAgTUVUSE9EREVDTEFSQVRJT04sXG4gIE5BTUVTUEFDRURFQ0xBUkFUSU9OLFxuICBUWVBFREVDTEFSQVRJT04sXG4gIFZBUklBQkxFREVDTEFSQVRJT04sXG5cbiAgLy8gc3BlY2lhbFxuICBERUNPUkFUT1IsXG4gIEVYUE9SVE1FTUJFUixcbiAgU1dJVENIQ0FTRSxcbiAgQ09NTUVOVFxufVxuXG4vKiogQ2hlY2tzIGlmIGEgbm9kZSByZXByZXNlbnRzIGEgY29uc3RhbnQgdmFsdWUuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZUlzQ29uc3RhbnRWYWx1ZShraW5kOiBOb2RlS2luZCk6IGJvb2wge1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIE5vZGVLaW5kLkxJVEVSQUw6XG4gICAgY2FzZSBOb2RlS2luZC5OVUxMOlxuICAgIGNhc2UgTm9kZUtpbmQuVFJVRTpcbiAgICBjYXNlIE5vZGVLaW5kLkZBTFNFOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3MgaWYgYSBub2RlIG1pZ2h0IGJlIGNhbGxhYmxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGVJc0NhbGxhYmxlKGtpbmQ6IE5vZGVLaW5kKTogYm9vbCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjpcbiAgICBjYXNlIE5vZGVLaW5kLkFTU0VSVElPTjogLy8gaWYga2luZD1OT05OVUxMXG4gICAgY2FzZSBOb2RlS2luZC5DQUxMOlxuICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzpcbiAgICBjYXNlIE5vZGVLaW5kLlBBUkVOVEhFU0laRUQ6XG4gICAgY2FzZSBOb2RlS2luZC5QUk9QRVJUWUFDQ0VTUzpcbiAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3MgaWYgYSBub2RlIG1pZ2h0IGJlIGNhbGxhYmxlIHdpdGggZ2VuZXJpYyBhcmd1bWVudHMuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZUlzR2VuZXJpY0NhbGxhYmxlKGtpbmQ6IE5vZGVLaW5kKTogYm9vbCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjpcbiAgICBjYXNlIE5vZGVLaW5kLlBST1BFUlRZQUNDRVNTOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBub2Rlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOb2RlIHtcblxuICAvKiogTm9kZSBraW5kIGluZGljYXRvci4gKi9cbiAga2luZDogTm9kZUtpbmQ7XG4gIC8qKiBTb3VyY2UgcmFuZ2UuICovXG4gIHJhbmdlOiBSYW5nZTtcblxuICAvLyB0eXBlc1xuXG4gIHN0YXRpYyBjcmVhdGVUeXBlTmFtZShcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZU5hbWUge1xuICAgIHZhciB0eXBlTmFtZSA9IG5ldyBUeXBlTmFtZSgpO1xuICAgIHR5cGVOYW1lLnJhbmdlID0gcmFuZ2U7XG4gICAgdHlwZU5hbWUuaWRlbnRpZmllciA9IG5hbWU7XG4gICAgdHlwZU5hbWUubmV4dCA9IG51bGw7XG4gICAgcmV0dXJuIHR5cGVOYW1lO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVNpbXBsZVR5cGVOYW1lKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZU5hbWUge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZVR5cGVOYW1lKE5vZGUuY3JlYXRlSWRlbnRpZmllckV4cHJlc3Npb24obmFtZSwgcmFuZ2UpLCByYW5nZSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTmFtZWRUeXBlKFxuICAgIG5hbWU6IFR5cGVOYW1lLFxuICAgIHR5cGVBcmd1bWVudHM6IFR5cGVOb2RlW10gfCBudWxsLFxuICAgIGlzTnVsbGFibGU6IGJvb2wsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE5hbWVkVHlwZU5vZGUge1xuICAgIHZhciB0eXBlID0gbmV3IE5hbWVkVHlwZU5vZGUoKTtcbiAgICB0eXBlLnJhbmdlID0gcmFuZ2U7XG4gICAgdHlwZS5uYW1lID0gbmFtZTtcbiAgICB0eXBlLnR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzO1xuICAgIHR5cGUuaXNOdWxsYWJsZSA9IGlzTnVsbGFibGU7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRnVuY3Rpb25UeXBlKFxuICAgIHBhcmFtZXRlcnM6IFBhcmFtZXRlck5vZGVbXSxcbiAgICByZXR1cm5UeXBlOiBUeXBlTm9kZSxcbiAgICBleHBsaWNpdFRoaXNUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbCxcbiAgICBpc051bGxhYmxlOiBib29sLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGdW5jdGlvblR5cGVOb2RlIHtcbiAgICB2YXIgdHlwZSA9IG5ldyBGdW5jdGlvblR5cGVOb2RlKCk7XG4gICAgdHlwZS5yYW5nZSA9IHJhbmdlO1xuICAgIHR5cGUucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgdHlwZS5yZXR1cm5UeXBlID0gcmV0dXJuVHlwZTtcbiAgICB0eXBlLmV4cGxpY2l0VGhpc1R5cGUgPSBleHBsaWNpdFRoaXNUeXBlO1xuICAgIHR5cGUuaXNOdWxsYWJsZSA9IGlzTnVsbGFibGU7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlT21pdHRlZFR5cGUoXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE5hbWVkVHlwZU5vZGUge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZU5hbWVkVHlwZShcbiAgICAgIE5vZGUuY3JlYXRlU2ltcGxlVHlwZU5hbWUoXCJcIiwgcmFuZ2UpLFxuICAgICAgbnVsbCxcbiAgICAgIGZhbHNlLFxuICAgICAgcmFuZ2VcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVR5cGVQYXJhbWV0ZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZW5kc1R5cGU6IE5hbWVkVHlwZU5vZGUgfCBudWxsLFxuICAgIGRlZmF1bHRUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZVBhcmFtZXRlck5vZGUge1xuICAgIHZhciBlbGVtID0gbmV3IFR5cGVQYXJhbWV0ZXJOb2RlKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0ubmFtZSA9IG5hbWU7XG4gICAgZWxlbS5leHRlbmRzVHlwZSA9IGV4dGVuZHNUeXBlO1xuICAgIGVsZW0uZGVmYXVsdFR5cGUgPSBkZWZhdWx0VHlwZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVQYXJhbWV0ZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZTogVHlwZU5vZGUsXG4gICAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGtpbmQ6IFBhcmFtZXRlcktpbmQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFBhcmFtZXRlck5vZGUge1xuICAgIHZhciBlbGVtID0gbmV3IFBhcmFtZXRlck5vZGUoKTtcbiAgICBlbGVtLnJhbmdlID0gcmFuZ2U7XG4gICAgZWxlbS5uYW1lID0gbmFtZTtcbiAgICBlbGVtLnR5cGUgPSB0eXBlO1xuICAgIGVsZW0uaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcbiAgICBlbGVtLnBhcmFtZXRlcktpbmQgPSBraW5kO1xuICAgIHJldHVybiBlbGVtO1xuICB9XG5cbiAgLy8gc3BlY2lhbFxuXG4gIHN0YXRpYyBjcmVhdGVEZWNvcmF0b3IoXG4gICAgbmFtZTogRXhwcmVzc2lvbixcbiAgICBhcmdzOiBFeHByZXNzaW9uW10gfCBudWxsLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBEZWNvcmF0b3JOb2RlIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBEZWNvcmF0b3JOb2RlKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHN0bXQuZGVjb3JhdG9yS2luZCA9IGRlY29yYXRvck5hbWVUb0tpbmQobmFtZSk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29tbWVudChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAga2luZDogQ29tbWVudEtpbmQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbW1lbnROb2RlIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBDb21tZW50Tm9kZSgpO1xuICAgIG5vZGUucmFuZ2UgPSByYW5nZTtcbiAgICBub2RlLmNvbW1lbnRLaW5kID0ga2luZDtcbiAgICBub2RlLnRleHQgPSB0ZXh0O1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gZXhwcmVzc2lvbnNcblxuICBzdGF0aWMgY3JlYXRlSWRlbnRpZmllckV4cHJlc3Npb24oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICBpc1F1b3RlZDogYm9vbCA9IGZhbHNlXG4gICk6IElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBJZGVudGlmaWVyRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLnRleHQgPSBuYW1lOyAvLyBUT0RPOiBleHRyYWN0IGZyb20gcmFuZ2VcbiAgICBleHByLnN5bWJvbCA9IG5hbWU7IC8vIFRPRE86IFN5bWJvbC5mb3IobmFtZSlcbiAgICBleHByLmlzUXVvdGVkID0gaXNRdW90ZWQ7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRW1wdHlJZGVudGlmaWVyRXhwcmVzc2lvbihcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IElkZW50aWZpZXJFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIudGV4dCA9IFwiXCI7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihcbiAgICBlbGVtZW50czogKEV4cHJlc3Npb24gfCBudWxsKVtdLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBBcnJheUxpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBBcnJheUxpdGVyYWxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZWxlbWVudEV4cHJlc3Npb25zID0gZWxlbWVudHM7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQXNzZXJ0aW9uRXhwcmVzc2lvbihcbiAgICBhc3NlcnRpb25LaW5kOiBBc3NlcnRpb25LaW5kLFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgdG9UeXBlOiBUeXBlTm9kZSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEFzc2VydGlvbkV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEFzc2VydGlvbkV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5hc3NlcnRpb25LaW5kID0gYXNzZXJ0aW9uS2luZDtcbiAgICBleHByLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICAgIGV4cHIudG9UeXBlID0gdG9UeXBlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oXG4gICAgb3BlcmF0b3I6IFRva2VuLFxuICAgIGxlZnQ6IEV4cHJlc3Npb24sXG4gICAgcmlnaHQ6IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEJpbmFyeUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEJpbmFyeUV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgIGV4cHIubGVmdCA9IGxlZnQ7XG4gICAgZXhwci5yaWdodCA9IHJpZ2h0O1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUNhbGxFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgdHlwZUFyZ3M6IFR5cGVOb2RlW10gfCBudWxsLFxuICAgIGFyZ3M6IEV4cHJlc3Npb25bXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQ2FsbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IENhbGxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci50eXBlQXJndW1lbnRzID0gdHlwZUFyZ3M7XG4gICAgZXhwci5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUNsYXNzRXhwcmVzc2lvbihcbiAgICBkZWNsYXJhdGlvbjogQ2xhc3NEZWNsYXJhdGlvblxuICApOiBDbGFzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IENsYXNzRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSBkZWNsYXJhdGlvbi5yYW5nZTtcbiAgICBleHByLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29tbWFFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb25zOiBFeHByZXNzaW9uW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbW1hRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgQ29tbWFFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbnMgPSBleHByZXNzaW9ucztcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDb25zdHJ1Y3RvckV4cHJlc3Npb24oXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbnN0cnVjdG9yRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgQ29uc3RydWN0b3JFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgZWxlbWVudDogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci5lbGVtZW50RXhwcmVzc2lvbiA9IGVsZW1lbnQ7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRmFsc2VFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGYWxzZUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZhbHNlRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGbG9hdExpdGVyYWxFeHByZXNzaW9uKFxuICAgIHZhbHVlOiBmNjQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihcbiAgICBkZWNsYXJhdGlvbjogRnVuY3Rpb25EZWNsYXJhdGlvblxuICApOiBGdW5jdGlvbkV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZ1bmN0aW9uRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSBkZWNsYXJhdGlvbi5yYW5nZTtcbiAgICBleHByLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2VPZkV4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICBpc1R5cGU6IFR5cGVOb2RlLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBJbnN0YW5jZU9mRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgSW5zdGFuY2VPZkV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICBleHByLmlzVHlwZSA9IGlzVHlwZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oXG4gICAgdmFsdWU6IEk2NCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU5ld0V4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICB0eXBlQXJnczogVHlwZU5vZGVbXSB8IG51bGwsXG4gICAgYXJnczogRXhwcmVzc2lvbltdLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOZXdFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBOZXdFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci50eXBlQXJndW1lbnRzID0gdHlwZUFyZ3M7XG4gICAgZXhwci5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU51bGxFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOdWxsRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgTnVsbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oXG4gICAgbmFtZXM6IElkZW50aWZpZXJFeHByZXNzaW9uW10sXG4gICAgdmFsdWVzOiBFeHByZXNzaW9uW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLm5hbWVzID0gbmFtZXM7XG4gICAgZXhwci52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogUGFyZW50aGVzaXplZEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcHJvcGVydHk6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICAgIGV4cHIucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVSZWdleHBMaXRlcmFsRXhwcmVzc2lvbihcbiAgICBwYXR0ZXJuOiBzdHJpbmcsXG4gICAgZmxhZ3M6IHN0cmluZyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFJlZ2V4cExpdGVyYWxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIucGF0dGVybiA9IHBhdHRlcm47XG4gICAgZXhwci5wYXR0ZXJuRmxhZ3MgPSBmbGFncztcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUZXJuYXJ5RXhwcmVzc2lvbihcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgaWZUaGVuOiBFeHByZXNzaW9uLFxuICAgIGlmRWxzZTogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGVybmFyeUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFRlcm5hcnlFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgIGV4cHIuaWZUaGVuID0gaWZUaGVuO1xuICAgIGV4cHIuaWZFbHNlID0gaWZFbHNlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLnZhbHVlID0gdmFsdWU7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlU3VwZXJFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBTdXBlckV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFN1cGVyRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUaGlzRXhwcmVzc2lvbihcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGhpc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFRoaXNFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRydWVFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBUcnVlRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVHJ1ZUV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVW5hcnlQb3N0Zml4RXhwcmVzc2lvbihcbiAgICBvcGVyYXRvcjogVG9rZW4sXG4gICAgb3BlcmFuZDogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVW5hcnlQb3N0Zml4RXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVW5hcnlQb3N0Zml4RXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgZXhwci5vcGVyYW5kID0gb3BlcmFuZDtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVVbmFyeVByZWZpeEV4cHJlc3Npb24oXG4gICAgb3BlcmF0b3I6IFRva2VuLFxuICAgIG9wZXJhbmQ6IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFVuYXJ5UHJlZml4RXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVW5hcnlQcmVmaXhFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICBleHByLm9wZXJhbmQgPSBvcGVyYW5kO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgLy8gc3RhdGVtZW50c1xuXG4gIHN0YXRpYyBjcmVhdGVCbG9ja1N0YXRlbWVudChcbiAgICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQmxvY2tTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEJsb2NrU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoXG4gICAgbGFiZWw6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQnJlYWtTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEJyZWFrU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubGFiZWwgPSBsYWJlbDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDbGFzc0RlY2xhcmF0aW9uKFxuICAgIGlkZW50aWZpZXI6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGwsIC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgICBpbXBsZW1lbnRzVHlwZXM6IE5hbWVkVHlwZU5vZGVbXSB8IG51bGwsIC8vIGNhbid0IGJlIGZ1bmN0aW9uc1xuICAgIG1lbWJlcnM6IERlY2xhcmF0aW9uU3RhdGVtZW50W10sXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENsYXNzRGVjbGFyYXRpb24ge1xuICAgIHZhciBzdG10ID0gbmV3IENsYXNzRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IGlkZW50aWZpZXI7XG4gICAgc3RtdC50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIHN0bXQuZXh0ZW5kc1R5cGUgPSBleHRlbmRzVHlwZTtcbiAgICBzdG10LmltcGxlbWVudHNUeXBlcyA9IGltcGxlbWVudHNUeXBlcztcbiAgICBzdG10Lm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoXG4gICAgbGFiZWw6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQ29udGludWVTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IENvbnRpbnVlU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubGFiZWwgPSBsYWJlbDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVEb1N0YXRlbWVudChcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudCxcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IERvU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBEb1N0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFbXB0eVN0YXRlbWVudChcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRW1wdHlTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEVtcHR5U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUVudW1EZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICBtZW1iZXJzOiBFbnVtVmFsdWVEZWNsYXJhdGlvbltdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFbnVtRGVjbGFyYXRpb24ge1xuICAgIHZhciBzdG10ID0gbmV3IEVudW1EZWNsYXJhdGlvbigpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmZsYWdzID0gZmxhZ3M7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LnZhbHVlcyA9IG1lbWJlcnM7XG4gICAgc3RtdC5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycztcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFbnVtVmFsdWVEZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB2YWx1ZTogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFbnVtVmFsdWVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgRW51bVZhbHVlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUV4cG9ydFN0YXRlbWVudChcbiAgICBtZW1iZXJzOiBFeHBvcnRNZW1iZXJbXSB8IG51bGwsXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGlzRGVjbGFyZTogYm9vbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRXhwb3J0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5tZW1iZXJzID0gbWVtYmVycztcbiAgICBzdG10LnBhdGggPSBwYXRoO1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQYXRoKHBhdGgudmFsdWUpO1xuICAgICAgaWYgKHBhdGgudmFsdWUuc3RhcnRzV2l0aChcIi5cIikpIHsgLy8gcmVsYXRpdmVcbiAgICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoLFxuICAgICAgICAgIHJhbmdlLnNvdXJjZS5ub3JtYWxpemVkUGF0aFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHsgLy8gYWJzb2x1dGVcbiAgICAgICAgaWYgKCFub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKExJQlJBUllfUFJFRklYKSkge1xuICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoID0gTElCUkFSWV9QUkVGSVggKyBub3JtYWxpemVkUGF0aDtcbiAgICAgICAgfVxuICAgICAgICBzdG10Lm5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGg7XG4gICAgICB9XG4gICAgICBzdG10LmludGVybmFsUGF0aCA9IG1hbmdsZUludGVybmFsUGF0aChzdG10Lm5vcm1hbGl6ZWRQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IG51bGw7XG4gICAgICBzdG10LmludGVybmFsUGF0aCA9IG51bGw7XG4gICAgfVxuICAgIHN0bXQuaXNEZWNsYXJlID0gaXNEZWNsYXJlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoXG4gICAgZGVjbGFyYXRpb246IERlY2xhcmF0aW9uU3RhdGVtZW50LFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFeHBvcnREZWZhdWx0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnREZWZhdWx0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5kZWNsYXJhdGlvbiA9IGRlY2xhcmF0aW9uO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHBvcnRJbXBvcnRTdGF0ZW1lbnQoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZXJuYWxOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRXhwb3J0SW1wb3J0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LmV4dGVybmFsTmFtZSA9IGV4dGVybmFsTmFtZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHBvcnRNZW1iZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZXJuYWxOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEV4cG9ydE1lbWJlciB7XG4gICAgdmFyIGVsZW0gPSBuZXcgRXhwb3J0TWVtYmVyKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0ubG9jYWxOYW1lID0gbmFtZTtcbiAgICBpZiAoIWV4dGVybmFsTmFtZSkgZXh0ZXJuYWxOYW1lID0gbmFtZTtcbiAgICBlbGVtLmV4cG9ydGVkTmFtZSA9IGV4dGVybmFsTmFtZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb25cbiAgKTogRXhwcmVzc2lvblN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgRXhwcmVzc2lvblN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSBleHByZXNzaW9uLnJhbmdlO1xuICAgIHN0bXQuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSWZTdGF0ZW1lbnQoXG4gICAgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIGlmVHJ1ZTogU3RhdGVtZW50LFxuICAgIGlmRmFsc2U6IFN0YXRlbWVudCB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IElmU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBJZlN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICBzdG10LmlmVHJ1ZSA9IGlmVHJ1ZTtcbiAgICBzdG10LmlmRmFsc2UgPSBpZkZhbHNlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUltcG9ydFN0YXRlbWVudChcbiAgICBkZWNsczogSW1wb3J0RGVjbGFyYXRpb25bXSB8IG51bGwsXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEltcG9ydFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZGVjbGFyYXRpb25zID0gZGVjbHM7XG4gICAgc3RtdC5uYW1lc3BhY2VOYW1lID0gbnVsbDtcbiAgICBzdG10LnBhdGggPSBwYXRoO1xuICAgIHZhciBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgocGF0aC52YWx1ZSk7XG4gICAgaWYgKHBhdGgudmFsdWUuc3RhcnRzV2l0aChcIi5cIikpIHsgLy8gcmVsYXRpdmUgaW4gcHJvamVjdFxuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgcmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoXG4gICAgICApO1xuICAgIH0gZWxzZSB7IC8vIGFic29sdXRlIGluIGxpYnJhcnlcbiAgICAgIGlmICghbm9ybWFsaXplZFBhdGguc3RhcnRzV2l0aChMSUJSQVJZX1BSRUZJWCkpIHtcbiAgICAgICAgbm9ybWFsaXplZFBhdGggPSBMSUJSQVJZX1BSRUZJWCArIG5vcm1hbGl6ZWRQYXRoO1xuICAgICAgfVxuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoO1xuICAgIH1cbiAgICBzdG10LmludGVybmFsUGF0aCA9IG1hbmdsZUludGVybmFsUGF0aChzdG10Lm5vcm1hbGl6ZWRQYXRoKTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbXBvcnRTdGF0ZW1lbnRXaXRoV2lsZGNhcmQoXG4gICAgaWRlbnRpZmllcjogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEltcG9ydFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZGVjbGFyYXRpb25zID0gbnVsbDtcbiAgICBzdG10Lm5hbWVzcGFjZU5hbWUgPSBpZGVudGlmaWVyO1xuICAgIHN0bXQucGF0aCA9IHBhdGg7XG4gICAgdmFyIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUGF0aChwYXRoLnZhbHVlKTtcbiAgICBpZiAocGF0aC52YWx1ZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgcmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW5vcm1hbGl6ZWRQYXRoLnN0YXJ0c1dpdGgoTElCUkFSWV9QUkVGSVgpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWRQYXRoID0gTElCUkFSWV9QUkVGSVggKyBub3JtYWxpemVkUGF0aDtcbiAgICAgIH1cbiAgICAgIHN0bXQubm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aDtcbiAgICB9XG4gICAgc3RtdC5pbnRlcm5hbFBhdGggPSBtYW5nbGVJbnRlcm5hbFBhdGgoc3RtdC5ub3JtYWxpemVkUGF0aCk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24oXG4gICAgZm9yZWlnbk5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSW1wb3J0RGVjbGFyYXRpb24ge1xuICAgIHZhciBlbGVtID0gbmV3IEltcG9ydERlY2xhcmF0aW9uKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0uZm9yZWlnbk5hbWUgPSBmb3JlaWduTmFtZTtcbiAgICBpZiAoIW5hbWUpIG5hbWUgPSBmb3JlaWduTmFtZTtcbiAgICBlbGVtLm5hbWUgPSBuYW1lO1xuICAgIHJldHVybiBlbGVtO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUludGVyZmFjZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGwsIC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgICBtZW1iZXJzOiBEZWNsYXJhdGlvblN0YXRlbWVudFtdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBJbnRlcmZhY2VEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW50ZXJmYWNlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIHN0bXQuZXh0ZW5kc1R5cGUgPSBleHRlbmRzVHlwZTtcbiAgICBzdG10Lm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRmllbGREZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB0eXBlOiBUeXBlTm9kZSB8IG51bGwsXG4gICAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGaWVsZERlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBGaWVsZERlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZSA9IHR5cGU7XG4gICAgc3RtdC5pbml0aWFsaXplciA9IGluaXRpYWxpemVyO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRm9yU3RhdGVtZW50KFxuICAgIGluaXRpYWxpemVyOiBTdGF0ZW1lbnQgfCBudWxsLFxuICAgIGNvbmRpdGlvbjogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgaW5jcmVtZW50b3I6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50LFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGb3JTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEZvclN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXI7XG4gICAgc3RtdC5jb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgc3RtdC5pbmNyZW1lbnRvciA9IGluY3JlbWVudG9yO1xuICAgIHN0bXQuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsLFxuICAgIHNpZ25hdHVyZTogRnVuY3Rpb25UeXBlTm9kZSxcbiAgICBib2R5OiBTdGF0ZW1lbnQgfCBudWxsLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIGFycm93S2luZDogQXJyb3dLaW5kLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGdW5jdGlvbkRlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBGdW5jdGlvbkRlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICBzdG10LnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICBzdG10LmJvZHkgPSBib2R5O1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgc3RtdC5hcnJvd0tpbmQgPSBhcnJvd0tpbmQ7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbihcbiAgICBrZXlUeXBlOiBOYW1lZFR5cGVOb2RlLFxuICAgIHZhbHVlVHlwZTogVHlwZU5vZGUsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24ge1xuICAgIHZhciBlbGVtID0gbmV3IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24oKTtcbiAgICBlbGVtLnJhbmdlID0gcmFuZ2U7XG4gICAgZWxlbS5rZXlUeXBlID0ga2V5VHlwZTtcbiAgICBlbGVtLnZhbHVlVHlwZSA9IHZhbHVlVHlwZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVNZXRob2REZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB0eXBlUGFyYW1ldGVyczogVHlwZVBhcmFtZXRlck5vZGVbXSB8IG51bGwsXG4gICAgc2lnbmF0dXJlOiBGdW5jdGlvblR5cGVOb2RlLFxuICAgIGJvZHk6IFN0YXRlbWVudCB8IG51bGwsXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE1ldGhvZERlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBNZXRob2REZWNsYXJhdGlvbigpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmZsYWdzID0gZmxhZ3M7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgc3RtdC5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgc3RtdC5ib2R5ID0gYm9keTtcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU5hbWVzcGFjZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIG1lbWJlcnM6IFN0YXRlbWVudFtdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOYW1lc3BhY2VEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgTmFtZXNwYWNlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC5tZW1iZXJzID0gbWVtYmVycztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVJldHVyblN0YXRlbWVudChcbiAgICB2YWx1ZTogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFJldHVyblN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgUmV0dXJuU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoXG4gICAgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIGNhc2VzOiBTd2l0Y2hDYXNlW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFN3aXRjaFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgU3dpdGNoU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgIHN0bXQuY2FzZXMgPSBjYXNlcztcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVTd2l0Y2hDYXNlKFxuICAgIGxhYmVsOiBFeHByZXNzaW9uIHwgbnVsbCxcbiAgICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogU3dpdGNoQ2FzZSB7XG4gICAgdmFyIGVsZW0gPSBuZXcgU3dpdGNoQ2FzZSgpO1xuICAgIGVsZW0ucmFuZ2UgPSByYW5nZTtcbiAgICBlbGVtLmxhYmVsID0gbGFiZWw7XG4gICAgZWxlbS5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUaHJvd1N0YXRlbWVudChcbiAgICB2YWx1ZTogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGhyb3dTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IFRocm93U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUcnlTdGF0ZW1lbnQoXG4gICAgc3RhdGVtZW50czogU3RhdGVtZW50W10sXG4gICAgY2F0Y2hWYXJpYWJsZTogSWRlbnRpZmllckV4cHJlc3Npb24gfCBudWxsLFxuICAgIGNhdGNoU3RhdGVtZW50czogU3RhdGVtZW50W10gfCBudWxsLFxuICAgIGZpbmFsbHlTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFRyeVN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgVHJ5U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgc3RtdC5jYXRjaFZhcmlhYmxlID0gY2F0Y2hWYXJpYWJsZTtcbiAgICBzdG10LmNhdGNoU3RhdGVtZW50cyA9IGNhdGNoU3RhdGVtZW50cztcbiAgICBzdG10LmZpbmFsbHlTdGF0ZW1lbnRzID0gZmluYWxseVN0YXRlbWVudHM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVHlwZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBhbGlhczogVHlwZU5vZGUsXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFR5cGVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgVHlwZURlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICBzdG10LnR5cGUgPSBhbGlhcztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KFxuICAgIGRlY2xhcmF0aW9uczogVmFyaWFibGVEZWNsYXJhdGlvbltdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFZhcmlhYmxlU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBWYXJpYWJsZVN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmRlY2xhcmF0aW9ucyA9IGRlY2xhcmF0aW9ucztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZTogVHlwZU5vZGUgfCBudWxsLFxuICAgIGluaXRpYWxpemVyOiBFeHByZXNzaW9uIHwgbnVsbCxcbiAgICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JOb2RlW10gfCBudWxsLFxuICAgIGZsYWdzOiBDb21tb25GbGFncyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVmFyaWFibGVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIGVsZW0gPSBuZXcgVmFyaWFibGVEZWNsYXJhdGlvbigpO1xuICAgIGVsZW0ucmFuZ2UgPSByYW5nZTtcbiAgICBlbGVtLmZsYWdzID0gZmxhZ3M7XG4gICAgZWxlbS5uYW1lID0gbmFtZTtcbiAgICBlbGVtLnR5cGUgPSB0eXBlO1xuICAgIGVsZW0uaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcbiAgICBlbGVtLmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzOyAvLyBpbmhlcml0ZWRcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVWb2lkU3RhdGVtZW50KFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFZvaWRTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IFZvaWRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVXaGlsZVN0YXRlbWVudChcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFdoaWxlU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBXaGlsZVN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICBzdG10LnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxufVxuXG4vLyB0eXBlc1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHlwZU5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAgLy8ga2luZCB2YXJpZXNcblxuICAvKiogV2hldGhlciBudWxsYWJsZSBvciBub3QuICovXG4gIGlzTnVsbGFibGU6IGJvb2w7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdHlwZSBuYW1lLiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVOYW1lIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5UWVBFTkFNRTtcblxuICAvKiogSWRlbnRpZmllciBvZiB0aGlzIHBhcnQuICovXG4gIGlkZW50aWZpZXI6IElkZW50aWZpZXJFeHByZXNzaW9uO1xuICAvKiogTmV4dCBwYXJ0IG9mIHRoZSB0eXBlIG5hbWUgb3IgYG51bGxgIGlmIHRoaXMgaXMgdGhlIGxhc3QgcGFydC4gKi9cbiAgbmV4dDogVHlwZU5hbWUgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG5hbWVkIHR5cGUuICovXG5leHBvcnQgY2xhc3MgTmFtZWRUeXBlTm9kZSBleHRlbmRzIFR5cGVOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLk5BTUVEVFlQRTtcblxuICAvKiogVHlwZSBuYW1lLiAqL1xuICBuYW1lOiBUeXBlTmFtZTtcbiAgLyoqIFR5cGUgYXJndW1lbnQgcmVmZXJlbmNlcy4gKi9cbiAgdHlwZUFyZ3VtZW50czogVHlwZU5vZGVbXSB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdHlwZS4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvblR5cGVOb2RlIGV4dGVuZHMgVHlwZU5vZGUge1xuICBraW5kID0gTm9kZUtpbmQuRlVOQ1RJT05UWVBFO1xuXG4gIC8qKiBBY2NlcHRlZCBwYXJhbWV0ZXJzLiAqL1xuICBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJOb2RlW107XG4gIC8qKiBSZXR1cm4gdHlwZS4gKi9cbiAgcmV0dXJuVHlwZTogVHlwZU5vZGU7XG4gIC8qKiBFeHBsaWNpdGx5IHByb3ZpZGVkIHRoaXMgdHlwZSwgaWYgYW55LiAqL1xuICBleHBsaWNpdFRoaXNUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbDsgLy8gY2FuJ3QgYmUgYSBmdW5jdGlvblxufVxuXG4vKiogUmVwcmVzZW50cyBhIHR5cGUgcGFyYW1ldGVyLiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSO1xuXG4gIC8qKiBJZGVudGlmaWVyIHJlZmVyZW5jZS4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBFeHRlbmRlZCB0eXBlIHJlZmVyZW5jZSwgaWYgYW55LiAqL1xuICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGw7IC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgLyoqIERlZmF1bHQgdHlwZSBpZiBvbWl0dGVkLCBpZiBhbnkuICovXG4gIGRlZmF1bHRUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbDsgLy8gY2FuJ3QgYmUgYSBmdW5jdGlvblxufVxuXG4vKiogUmVwcmVzZW50cyB0aGUga2luZCBvZiBhIHBhcmFtZXRlci4gKi9cbmV4cG9ydCBlbnVtIFBhcmFtZXRlcktpbmQge1xuICAvKiogTm8gc3BlY2lmaWMgZmxhZ3MuICovXG4gIERFRkFVTFQsXG4gIC8qKiBJcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuICovXG4gIE9QVElPTkFMLFxuICAvKiogSXMgYSByZXN0IHBhcmFtZXRlci4gKi9cbiAgUkVTVFxufVxuXG4vKiogUmVwcmVzZW50cyBhIGZ1bmN0aW9uIHBhcmFtZXRlci4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5QQVJBTUVURVI7XG5cbiAgLyoqIFBhcmFtZXRlciBraW5kLiAqL1xuICBwYXJhbWV0ZXJLaW5kOiBQYXJhbWV0ZXJLaW5kO1xuICAvKiogUGFyYW1ldGVyIG5hbWUuICovXG4gIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xuICAvKiogUGFyYW1ldGVyIHR5cGUuICovXG4gIHR5cGU6IFR5cGVOb2RlO1xuICAvKiogSW5pdGlhbGl6ZXIgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4gKi9cbiAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogSW1wbGljaXQgZmllbGQgZGVjbGFyYXRpb24sIGlmIGFwcGxpY2FibGUuICovXG4gIGltcGxpY2l0RmllbGREZWNsYXJhdGlvbjogRmllbGREZWNsYXJhdGlvbiB8IG51bGwgPSBudWxsO1xuICAvKiogQ29tbW9uIGZsYWdzIGluZGljYXRpbmcgc3BlY2lmaWMgdHJhaXRzLiAqL1xuICBmbGFnczogQ29tbW9uRmxhZ3MgPSBDb21tb25GbGFncy5OT05FO1xuXG4gIC8qKiBUZXN0cyBpZiB0aGlzIG5vZGUgaGFzIHRoZSBzcGVjaWZpZWQgZmxhZyBvciBmbGFncy4gKi9cbiAgaXMoZmxhZzogQ29tbW9uRmxhZ3MpOiBib29sIHsgcmV0dXJuICh0aGlzLmZsYWdzICYgZmxhZykgPT0gZmxhZzsgfVxuICAvKiogVGVzdHMgaWYgdGhpcyBub2RlIGhhcyBvbmUgb2YgdGhlIHNwZWNpZmllZCBmbGFncy4gKi9cbiAgaXNBbnkoZmxhZzogQ29tbW9uRmxhZ3MpOiBib29sIHsgcmV0dXJuICh0aGlzLmZsYWdzICYgZmxhZykgIT0gMDsgfVxuICAvKiogU2V0cyBhIHNwZWNpZmljIGZsYWcgb3IgZmxhZ3MuICovXG4gIHNldChmbGFnOiBDb21tb25GbGFncyk6IHZvaWQgeyB0aGlzLmZsYWdzIHw9IGZsYWc7IH1cbn1cblxuLy8gc3BlY2lhbFxuXG4vKiogQnVpbHQtaW4gZGVjb3JhdG9yIGtpbmRzLiAqL1xuZXhwb3J0IGVudW0gRGVjb3JhdG9yS2luZCB7XG4gIENVU1RPTSxcbiAgR0xPQkFMLFxuICBPUEVSQVRPUixcbiAgT1BFUkFUT1JfQklOQVJZLFxuICBPUEVSQVRPUl9QUkVGSVgsXG4gIE9QRVJBVE9SX1BPU1RGSVgsXG4gIFVOTUFOQUdFRCxcbiAgU0VBTEVELFxuICBJTkxJTkUsXG4gIEVYVEVSTkFMLFxuICBCVUlMVElOLFxuICBMQVpZLFxuICBVTlNBRkVcbn1cblxuLyoqIFJldHVybnMgdGhlIGtpbmQgb2YgdGhlIHNwZWNpZmllZCBkZWNvcmF0b3IuIERlZmF1bHRzIHRvIHtAbGluayBEZWNvcmF0b3JLaW5kLkNVU1RPTX0uICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb3JhdG9yTmFtZVRvS2luZChuYW1lOiBFeHByZXNzaW9uKTogRGVjb3JhdG9yS2luZCB7XG4gIC8vIEBnbG9iYWwsIEBpbmxpbmUsIEBvcGVyYXRvciwgQHNlYWxlZCwgQHVubWFuYWdlZFxuICBpZiAobmFtZS5raW5kID09IE5vZGVLaW5kLklERU5USUZJRVIpIHtcbiAgICBsZXQgbmFtZVN0ciA9ICg8SWRlbnRpZmllckV4cHJlc3Npb24+bmFtZSkudGV4dDtcbiAgICBhc3NlcnQobmFtZVN0ci5sZW5ndGgpO1xuICAgIHN3aXRjaCAobmFtZVN0ci5jaGFyQ29kZUF0KDApKSB7XG4gICAgICBjYXNlIENoYXJDb2RlLmI6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJidWlsdGluXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLkJVSUxUSU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5lOiB7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwiZXh0ZXJuYWxcIikgcmV0dXJuIERlY29yYXRvcktpbmQuRVhURVJOQUw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5nOiB7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwiZ2xvYmFsXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLkdMT0JBTDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLmk6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJpbmxpbmVcIikgcmV0dXJuIERlY29yYXRvcktpbmQuSU5MSU5FO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUubDoge1xuICAgICAgICBpZiAobmFtZVN0ciA9PSBcImxhenlcIikgcmV0dXJuIERlY29yYXRvcktpbmQuTEFaWTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLm86IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJvcGVyYXRvclwiKSByZXR1cm4gRGVjb3JhdG9yS2luZC5PUEVSQVRPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLnM6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJzZWFsZWRcIikgcmV0dXJuIERlY29yYXRvcktpbmQuU0VBTEVEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUudToge1xuICAgICAgICBpZiAobmFtZVN0ciA9PSBcInVubWFuYWdlZFwiKSByZXR1cm4gRGVjb3JhdG9yS2luZC5VTk1BTkFHRUQ7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwidW5zYWZlXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLlVOU0FGRTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgIG5hbWUua2luZCA9PSBOb2RlS2luZC5QUk9QRVJUWUFDQ0VTUyAmJlxuICAgICg8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5hbWUpLmV4cHJlc3Npb24ua2luZCA9PSBOb2RlS2luZC5JREVOVElGSUVSXG4gICkge1xuICAgIGxldCBuYW1lU3RyID0gKDxJZGVudGlmaWVyRXhwcmVzc2lvbj4oPFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj5uYW1lKS5leHByZXNzaW9uKS50ZXh0O1xuICAgIGFzc2VydChuYW1lU3RyLmxlbmd0aCk7XG4gICAgbGV0IHByb3BTdHIgPSAoPFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj5uYW1lKS5wcm9wZXJ0eS50ZXh0O1xuICAgIGFzc2VydChwcm9wU3RyLmxlbmd0aCk7XG4gICAgLy8gQG9wZXJhdG9yLmJpbmFyeSwgQG9wZXJhdG9yLnByZWZpeCwgQG9wZXJhdG9yLnBvc3RmaXhcbiAgICBpZiAobmFtZVN0ciA9PSBcIm9wZXJhdG9yXCIpIHtcbiAgICAgIHN3aXRjaCAocHJvcFN0ci5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuYjoge1xuICAgICAgICAgIGlmIChwcm9wU3RyID09IFwiYmluYXJ5XCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLk9QRVJBVE9SX0JJTkFSWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLnA6IHtcbiAgICAgICAgICBzd2l0Y2ggKHByb3BTdHIpIHtcbiAgICAgICAgICAgIGNhc2UgXCJwcmVmaXhcIjogcmV0dXJuIERlY29yYXRvcktpbmQuT1BFUkFUT1JfUFJFRklYO1xuICAgICAgICAgICAgY2FzZSBcInBvc3RmaXhcIjogcmV0dXJuIERlY29yYXRvcktpbmQuT1BFUkFUT1JfUE9TVEZJWDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIERlY29yYXRvcktpbmQuQ1VTVE9NO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGRlY29yYXRvci4gKi9cbmV4cG9ydCBjbGFzcyBEZWNvcmF0b3JOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5ERUNPUkFUT1I7XG5cbiAgLyoqIEJ1aWx0LWluIGtpbmQsIGlmIGFwcGxpY2FibGUuICovXG4gIGRlY29yYXRvcktpbmQ6IERlY29yYXRvcktpbmQ7XG4gIC8qKiBOYW1lIGV4cHJlc3Npb24uICovXG4gIG5hbWU6IEV4cHJlc3Npb247XG4gIC8qKiBBcmd1bWVudCBleHByZXNzaW9ucy4gKi9cbiAgYXJndW1lbnRzOiBFeHByZXNzaW9uW10gfCBudWxsO1xufVxuXG4vKiogQ29tbWVudCBraW5kcy4gKi9cbmV4cG9ydCBlbnVtIENvbW1lbnRLaW5kIHtcbiAgLyoqIExpbmUgY29tbWVudC4gKi9cbiAgTElORSxcbiAgLyoqIFRyaXBsZS1zbGFzaCBjb21tZW50LiAqL1xuICBUUklQTEUsXG4gIC8qKiBCbG9jayBjb21tZW50LiAqL1xuICBCTE9DS1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNvbW1lbnQuICovXG5leHBvcnQgY2xhc3MgQ29tbWVudE5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLkNPTU1FTlQ7XG5cbiAgLyoqIENvbW1lbnQga2luZC4gKi9cbiAgY29tbWVudEtpbmQ6IENvbW1lbnRLaW5kO1xuICAvKiogQ29tbWVudCB0ZXh0LiAqL1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8vIGV4cHJlc3Npb25zXG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBleHByZXNzaW9uIG5vZGVzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV4cHJlc3Npb24gZXh0ZW5kcyBOb2RlIHsgfVxuXG4vKiogUmVwcmVzZW50cyBhbiBpZGVudGlmaWVyIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgSWRlbnRpZmllckV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklERU5USUZJRVI7XG5cbiAgLyoqIFRleHR1YWwgbmFtZS4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogU3ltYm9sLiAqL1xuICBzeW1ib2w6IHN0cmluZzsgLy8gVE9ETzogc3ltYm9sXG4gIC8qKiBXaGV0aGVyIHF1b3RlZCBvciBub3QuICovXG4gIGlzUXVvdGVkOiBib29sO1xufVxuXG4vKiogSW5kaWNhdGVzIHRoZSBraW5kIG9mIGEgbGl0ZXJhbC4gKi9cbmV4cG9ydCBlbnVtIExpdGVyYWxLaW5kIHtcbiAgRkxPQVQsXG4gIElOVEVHRVIsXG4gIFNUUklORyxcbiAgUkVHRVhQLFxuICBBUlJBWSxcbiAgT0JKRUNUXG59XG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBsaXRlcmFsIGV4cHJlc3Npb25zLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExpdGVyYWxFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5MSVRFUkFMO1xuXG4gIC8qKiBTcGVjaWZpYyBsaXRlcmFsIGtpbmQuICovXG4gIGxpdGVyYWxLaW5kOiBMaXRlcmFsS2luZDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYFtdYCBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIExpdGVyYWxFeHByZXNzaW9uIHtcbiAgbGl0ZXJhbEtpbmQgPSBMaXRlcmFsS2luZC5BUlJBWTtcblxuICAvKiogTmVzdGVkIGVsZW1lbnQgZXhwcmVzc2lvbnMuICovXG4gIGVsZW1lbnRFeHByZXNzaW9uczogKEV4cHJlc3Npb24gfCBudWxsKVtdO1xufVxuXG4vKiogSW5kaWNhdGVzIHRoZSBraW5kIG9mIGFuIGFzc2VydGlvbi4gKi9cbmV4cG9ydCBlbnVtIEFzc2VydGlvbktpbmQge1xuICBQUkVGSVgsXG4gIEFTLFxuICBOT05OVUxMXG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGFzc2VydGlvbiBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VydGlvbkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLkFTU0VSVElPTjtcblxuICAvKiogU3BlY2lmaWMga2luZCBvZiB0aGlzIGFzc2VydGlvbi4gKi9cbiAgYXNzZXJ0aW9uS2luZDogQXNzZXJ0aW9uS2luZDtcbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYXNzZXJ0ZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBUYXJnZXQgdHlwZS4gKi9cbiAgdG9UeXBlOiBUeXBlTm9kZSB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYmluYXJ5IGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQmluYXJ5RXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQklOQVJZO1xuXG4gIC8qKiBPcGVyYXRvciB0b2tlbi4gKi9cbiAgb3BlcmF0b3I6IFRva2VuO1xuICAvKiogTGVmdC1oYW5kIHNpZGUgZXhwcmVzc2lvbiAqL1xuICBsZWZ0OiBFeHByZXNzaW9uO1xuICAvKiogUmlnaHQtaGFuZCBzaWRlIGV4cHJlc3Npb24uICovXG4gIHJpZ2h0OiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNhbGwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQ0FMTDtcblxuICAvKiogQ2FsbGVkIGV4cHJlc3Npb24uIFVzdWFsbHkgYW4gaWRlbnRpZmllciBvciBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbi4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbiAgLyoqIFByb3ZpZGVkIHR5cGUgYXJndW1lbnRzLiAqL1xuICB0eXBlQXJndW1lbnRzOiBUeXBlTm9kZVtdIHwgbnVsbDtcbiAgLyoqIFByb3ZpZGVkIGFyZ3VtZW50cy4gKi9cbiAgYXJndW1lbnRzOiBFeHByZXNzaW9uW107XG5cbiAgLyoqIEdldHMgdGhlIHR5cGUgYXJndW1lbnRzIHJhbmdlIGZvciByZXBvcnRpbmcuICovXG4gIGdldCB0eXBlQXJndW1lbnRzUmFuZ2UoKTogUmFuZ2Uge1xuICAgIHZhciB0eXBlQXJndW1lbnRzID0gdGhpcy50eXBlQXJndW1lbnRzO1xuICAgIHZhciBudW1UeXBlQXJndW1lbnRzOiBpMzI7XG4gICAgaWYgKHR5cGVBcmd1bWVudHMgJiYgKG51bVR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBSYW5nZS5qb2luKHR5cGVBcmd1bWVudHNbMF0ucmFuZ2UsIHR5cGVBcmd1bWVudHNbbnVtVHlwZUFyZ3VtZW50cyAtIDFdLnJhbmdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5yYW5nZTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBhcmd1bWVudHMgcmFuZ2UgZm9yIHJlcG9ydGluZy4gKi9cbiAgZ2V0IGFyZ3VtZW50c1JhbmdlKCk6IFJhbmdlIHtcbiAgICB2YXIgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgIHZhciBudW1Bcmd1bWVudHMgPSBhcmdzLmxlbmd0aDtcbiAgICBpZiAobnVtQXJndW1lbnRzKSB7XG4gICAgICByZXR1cm4gUmFuZ2Uuam9pbihhcmdzWzBdLnJhbmdlLCBhcmdzW251bUFyZ3VtZW50cyAtIDFdLnJhbmdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5yYW5nZTtcbiAgfVxufVxuXG4vKiogUmVwcmVzZW50cyBhIGNsYXNzIGV4cHJlc3Npb24gdXNpbmcgdGhlICdjbGFzcycga2V5d29yZC4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0V4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLkNMQVNTO1xuXG4gIC8qKiBJbmxpbmUgY2xhc3MgZGVjbGFyYXRpb24uICovXG4gIGRlY2xhcmF0aW9uOiBDbGFzc0RlY2xhcmF0aW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNvbW1hIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgbXVsdGlwbGUgZXhwcmVzc2lvbnMuICovXG5leHBvcnQgY2xhc3MgQ29tbWFFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5DT01NQTtcblxuICAvKiogU2VxdWVudGlhbCBleHByZXNzaW9ucy4gKi9cbiAgZXhwcmVzc2lvbnM6IEV4cHJlc3Npb25bXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgY29uc3RydWN0b3JgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0b3JFeHByZXNzaW9uIGV4dGVuZHMgSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQ09OU1RSVUNUT1I7XG4gIHRleHQgPSBcImNvbnN0cnVjdG9yXCI7XG4gIHN5bWJvbCA9IENvbW1vblN5bWJvbHMuY29uc3RydWN0b3I7XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgYWNjZXNzIGV4cHJlc3Npb24sIGUuZy4sIGFycmF5IGFjY2Vzcy4gKi9cbmV4cG9ydCBjbGFzcyBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUztcblxuICAvKiogRXhwcmVzc2lvbiBiZWluZyBhY2Nlc3NlZC4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbiAgLyoqIEVsZW1lbnQgb2YgdGhlIGV4cHJlc3Npb24gYmVpbmcgYWNjZXNzZWQuICovXG4gIGVsZW1lbnRFeHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGZsb2F0IGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBGbG9hdExpdGVyYWxFeHByZXNzaW9uIGV4dGVuZHMgTGl0ZXJhbEV4cHJlc3Npb24ge1xuICBsaXRlcmFsS2luZCA9IExpdGVyYWxLaW5kLkZMT0FUO1xuXG4gIC8qKiBGbG9hdCB2YWx1ZS4gKi9cbiAgdmFsdWU6IGY2NDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBmdW5jdGlvbiBleHByZXNzaW9uIHVzaW5nIHRoZSAnZnVuY3Rpb24nIGtleXdvcmQuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25FeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5GVU5DVElPTjtcblxuICAvKiogSW5saW5lIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLiAqL1xuICBkZWNsYXJhdGlvbjogRnVuY3Rpb25EZWNsYXJhdGlvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGluc3RhbmNlb2ZgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VPZkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklOU1RBTkNFT0Y7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYXNzZXJ0ZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBUeXBlIHRvIHRlc3QgZm9yLiAqL1xuICBpc1R5cGU6IFR5cGVOb2RlO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBpbnRlZ2VyIGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuSU5URUdFUjtcblxuICAvKiogSW50ZWdlciB2YWx1ZS4gKi9cbiAgdmFsdWU6IEk2NDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbmV3YCBleHByZXNzaW9uLiBMaWtlIGEgY2FsbCBidXQgd2l0aCBpdHMgb3duIGtpbmQuICovXG5leHBvcnQgY2xhc3MgTmV3RXhwcmVzc2lvbiBleHRlbmRzIENhbGxFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLk5FVztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbnVsbGAgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBOdWxsRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLk5VTEw7XG4gIHRleHQgPSBcIm51bGxcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy5udWxsXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gb2JqZWN0IGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIExpdGVyYWxFeHByZXNzaW9uIHtcbiAgbGl0ZXJhbEtpbmQgPSBMaXRlcmFsS2luZC5PQkpFQ1Q7XG5cbiAgLyoqIEZpZWxkIG5hbWVzLiAqL1xuICBuYW1lczogSWRlbnRpZmllckV4cHJlc3Npb25bXTtcbiAgLyoqIEZpZWxkIHZhbHVlcy4gKi9cbiAgdmFsdWVzOiBFeHByZXNzaW9uW107XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgcGFyZW50aGVzaXplZCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5QQVJFTlRIRVNJWkVEO1xuXG4gIC8qKiBFeHByZXNzaW9uIGluIHBhcmVudGhlc2lzLiAqL1xuICBleHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHByb3BlcnR5IGFjY2VzcyBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYWNjZXNzZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBQcm9wZXJ0eSBvZiB0aGUgZXhwcmVzc2lvbiBiZWluZyBhY2Nlc3NlZC4gKi9cbiAgcHJvcGVydHk6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuUkVHRVhQO1xuXG4gIC8qKiBSZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi4gKi9cbiAgcGF0dGVybjogc3RyaW5nO1xuICAvKiogUmVndWxhciBleHByZXNzaW9uIGZsYWdzLiAqL1xuICBwYXR0ZXJuRmxhZ3M6IHN0cmluZztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB0ZXJuYXJ5IGV4cHJlc3Npb24sIGkuZS4sIHNob3J0IGlmIG5vdGF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIFRlcm5hcnlFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5URVJOQVJZO1xuXG4gIC8qKiBDb25kaXRpb24gZXhwcmVzc2lvbi4gKi9cbiAgY29uZGl0aW9uOiBFeHByZXNzaW9uO1xuICAvKiogRXhwcmVzc2lvbiBleGVjdXRlZCB3aGVuIGNvbmRpdGlvbiBpcyBgdHJ1ZWAuICovXG4gIGlmVGhlbjogRXhwcmVzc2lvbjtcbiAgLyoqIEV4cHJlc3Npb24gZXhlY3V0ZWQgd2hlbiBjb25kaXRpb24gaXMgYGZhbHNlYC4gKi9cbiAgaWZFbHNlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHN0cmluZyBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuU1RSSU5HO1xuXG4gIC8qKiBTdHJpbmcgdmFsdWUgd2l0aG91dCBxdW90ZXMuICovXG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYHN1cGVyYCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFN1cGVyRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlNVUEVSO1xuICB0ZXh0ID0gXCJzdXBlclwiO1xuICBzeW1ib2wgPSBDb21tb25TeW1ib2xzLnN1cGVyXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdGhpc2AgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBUaGlzRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlRISVM7XG4gIHRleHQgPSBcInRoaXNcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy50aGlzXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdHJ1ZWAgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBUcnVlRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlRSVUU7XG4gIHRleHQgPSBcInRydWVcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy50cnVlXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgZmFsc2VgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgRmFsc2VFeHByZXNzaW9uIGV4dGVuZHMgSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuRkFMU0U7XG4gIHRleHQgPSBcImZhbHNlXCI7XG4gIHN5bWJvbCA9IENvbW1vblN5bWJvbHMuZmFsc2VfO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgdW5hcnkgZXhwcmVzc2lvbnMuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5hcnlFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG5cbiAgLyoqIE9wZXJhdG9yIHRva2VuLiAqL1xuICBvcGVyYXRvcjogVG9rZW47XG4gIC8qKiBPcGVyYW5kIGV4cHJlc3Npb24uICovXG4gIG9wZXJhbmQ6IEV4cHJlc3Npb247XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5hcnkgcG9zdGZpeCBleHByZXNzaW9uLCBlLmcuIGEgcG9zdGZpeCBpbmNyZW1lbnQuICovXG5leHBvcnQgY2xhc3MgVW5hcnlQb3N0Zml4RXhwcmVzc2lvbiBleHRlbmRzIFVuYXJ5RXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5VTkFSWVBPU1RGSVg7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5hcnkgcHJlZml4IGV4cHJlc3Npb24sIGUuZy4gYSBuZWdhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBVbmFyeVByZWZpeEV4cHJlc3Npb24gZXh0ZW5kcyBVbmFyeUV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuVU5BUllQUkVGSVg7XG59XG5cbi8vIHN0YXRlbWVudHNcblxuLyoqIEJhc2UgY2xhc3Mgb2YgYWxsIHN0YXRlbWVudCBub2Rlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHsgfVxuXG4vKiogSW5kaWNhdGVzIHRoZSBzcGVjaWZpYyBraW5kIG9mIGEgc291cmNlLiAqL1xuZXhwb3J0IGVudW0gU291cmNlS2luZCB7XG4gIC8qKiBVc2VyLXByb3ZpZGVkIGZpbGUuICovXG4gIFVTRVIgPSAwLFxuICAvKiogVXNlci1wcm92aWRlZCBlbnRyeSBmaWxlLiAqL1xuICBVU0VSX0VOVFJZID0gMSxcbiAgLyoqIExpYnJhcnktcHJvdmlkZWQgZmlsZS4gKi9cbiAgTElCUkFSWSA9IDIsXG4gIC8qKiBMaWJyYXJ5LXByb3ZpZGVkIGVudHJ5IGZpbGUuICovXG4gIExJQlJBUllfRU5UUlkgPSAzXG59XG5cbi8qKiBBIHRvcC1sZXZlbCBzb3VyY2Ugbm9kZS4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2UgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLlNPVVJDRTtcbiAgcGFyZW50ID0gbnVsbDtcblxuICAvKiogU291cmNlIGtpbmQuICovXG4gIHNvdXJjZUtpbmQ6IFNvdXJjZUtpbmQ7XG4gIC8qKiBOb3JtYWxpemVkIHBhdGguICovXG4gIG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmc7XG4gIC8qKiBQYXRoIHVzZWQgaW50ZXJuYWxseS4gKi9cbiAgaW50ZXJuYWxQYXRoOiBzdHJpbmc7XG4gIC8qKiBTaW1wbGUgcGF0aCAobGFzdCBwYXJ0IHdpdGhvdXQgZXh0ZW5zaW9uKS4gKi9cbiAgc2ltcGxlUGF0aDogc3RyaW5nO1xuICAvKiogQ29udGFpbmVkIHN0YXRlbWVudHMuICovXG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdO1xuICAvKiogRnVsbCBzb3VyY2UgdGV4dC4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogVG9rZW5pemVyIHJlZmVyZW5jZS4gKi9cbiAgdG9rZW5pemVyOiBUb2tlbml6ZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIFNvdXJjZSBtYXAgaW5kZXguICovXG4gIGRlYnVnSW5mb0luZGV4OiBpMzIgPSAtMTtcbiAgLyoqIFJlLWV4cG9ydGVkIHNvdXJjZXMuICovXG4gIGV4cG9ydFBhdGhzOiBTZXQ8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IHNvdXJjZSBub2RlLiAqL1xuICBjb25zdHJ1Y3Rvcihub3JtYWxpemVkUGF0aDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIGtpbmQ6IFNvdXJjZUtpbmQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc291cmNlS2luZCA9IGtpbmQ7XG4gICAgdGhpcy5ub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoO1xuICAgIHZhciBpbnRlcm5hbFBhdGggPSBtYW5nbGVJbnRlcm5hbFBhdGgodGhpcy5ub3JtYWxpemVkUGF0aCk7XG4gICAgdGhpcy5pbnRlcm5hbFBhdGggPSBpbnRlcm5hbFBhdGg7XG4gICAgdmFyIHBvcyA9IGludGVybmFsUGF0aC5sYXN0SW5kZXhPZihQQVRIX0RFTElNSVRFUik7XG4gICAgdGhpcy5zaW1wbGVQYXRoID0gcG9zID49IDAgPyBpbnRlcm5hbFBhdGguc3Vic3RyaW5nKHBvcyArIDEpIDogaW50ZXJuYWxQYXRoO1xuICAgIHRoaXMuc3RhdGVtZW50cyA9IG5ldyBBcnJheSgpO1xuICAgIHRoaXMucmFuZ2UgPSBuZXcgUmFuZ2UodGhpcywgMCwgdGV4dC5sZW5ndGgpO1xuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gIH1cblxuICBnZXQgaXNMaWJyYXJ5KCk6IGJvb2wge1xuICAgIHZhciBraW5kID0gdGhpcy5zb3VyY2VLaW5kO1xuICAgIHJldHVybiBraW5kID09IFNvdXJjZUtpbmQuTElCUkFSWSB8fCBraW5kID09IFNvdXJjZUtpbmQuTElCUkFSWV9FTlRSWTtcbiAgfVxufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgZGVjbGFyYXRpb24gc3RhdGVtZW50cy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZWNsYXJhdGlvblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIC8qKiBTaW1wbGUgbmFtZSBiZWluZyBkZWNsYXJlZC4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBBcnJheSBvZiBkZWNvcmF0b3JzLiAqL1xuICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JOb2RlW10gfCBudWxsID0gbnVsbDtcbiAgLyoqIENvbW1vbiBmbGFncyBpbmRpY2F0aW5nIHNwZWNpZmljIHRyYWl0cy4gKi9cbiAgZmxhZ3M6IENvbW1vbkZsYWdzID0gQ29tbW9uRmxhZ3MuTk9ORTtcblxuICAvKiogVGVzdHMgaWYgdGhpcyBub2RlIGhhcyB0aGUgc3BlY2lmaWVkIGZsYWcgb3IgZmxhZ3MuICovXG4gIGlzKGZsYWc6IENvbW1vbkZsYWdzKTogYm9vbCB7IHJldHVybiAodGhpcy5mbGFncyAmIGZsYWcpID09IGZsYWc7IH1cbiAgLyoqIFRlc3RzIGlmIHRoaXMgbm9kZSBoYXMgb25lIG9mIHRoZSBzcGVjaWZpZWQgZmxhZ3MuICovXG4gIGlzQW55KGZsYWc6IENvbW1vbkZsYWdzKTogYm9vbCB7IHJldHVybiAodGhpcy5mbGFncyAmIGZsYWcpICE9IDA7IH1cbiAgLyoqIFNldHMgYSBzcGVjaWZpYyBmbGFnIG9yIGZsYWdzLiAqL1xuICBzZXQoZmxhZzogQ29tbW9uRmxhZ3MpOiB2b2lkIHsgdGhpcy5mbGFncyB8PSBmbGFnOyB9XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGluZGV4IHNpZ25hdHVyZSBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuSU5ERVhTSUdOQVRVUkVERUNMQVJBVElPTjtcblxuICAvKiogS2V5IHR5cGUuICovXG4gIGtleVR5cGU6IE5hbWVkVHlwZU5vZGU7XG4gIC8qKiBWYWx1ZSB0eXBlLiAqL1xuICB2YWx1ZVR5cGU6IFR5cGVOb2RlO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgdmFyaWFibGUtbGlrZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhcmlhYmxlTGlrZURlY2xhcmF0aW9uU3RhdGVtZW50IGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuXG4gIC8qKiBWYXJpYWJsZSB0eXBlLiAqL1xuICB0eXBlOiBUeXBlTm9kZSB8IG51bGw7XG4gIC8qKiBWYXJpYWJsZSBpbml0aWFsaXplci4gKi9cbiAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGJsb2NrIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBCbG9ja1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5CTE9DSztcblxuICAvKiogQ29udGFpbmVkIHN0YXRlbWVudHMuICovXG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBicmVha2Agc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEJyZWFrU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkJSRUFLO1xuXG4gIC8qKiBUYXJnZXQgbGFiZWwsIGlmIGFwcGxpY2FibGUuICovXG4gIGxhYmVsOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYGNsYXNzYCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0RlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuQ0xBU1NERUNMQVJBVElPTjtcblxuICAvKiogQWNjZXB0ZWQgdHlwZSBwYXJhbWV0ZXJzLiAqL1xuICB0eXBlUGFyYW1ldGVyczogVHlwZVBhcmFtZXRlck5vZGVbXSB8IG51bGw7XG4gIC8qKiBCYXNlIGNsYXNzIHR5cGUgYmVpbmcgZXh0ZW5kZWQsIGlmIGFueS4gKi9cbiAgZXh0ZW5kc1R5cGU6IE5hbWVkVHlwZU5vZGUgfCBudWxsOyAvLyBjYW4ndCBiZSBhIGZ1bmN0aW9uXG4gIC8qKiBJbnRlcmZhY2UgdHlwZXMgYmVpbmcgaW1wbGVtZW50ZWQsIGlmIGFueS4gKi9cbiAgaW1wbGVtZW50c1R5cGVzOiBOYW1lZFR5cGVOb2RlW10gfCBudWxsOyAvLyBjYW4ndCBiZSBmdW5jdGlvbnNcbiAgLyoqIENsYXNzIG1lbWJlciBkZWNsYXJhdGlvbnMuICovXG4gIG1lbWJlcnM6IERlY2xhcmF0aW9uU3RhdGVtZW50W107XG5cbiAgZ2V0IGlzR2VuZXJpYygpOiBib29sIHtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLnR5cGVQYXJhbWV0ZXJzO1xuICAgIHJldHVybiB0eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgY29udGludWVgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBDb250aW51ZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5DT05USU5VRTtcblxuICAvKiogVGFyZ2V0IGxhYmVsLCBpZiBhcHBsaWNhYmxlLiAqL1xuICBsYWJlbDogSWRlbnRpZmllckV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBkb2Agc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIERvU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkRPO1xuXG4gIC8qKiBTdGF0ZW1lbnQgYmVpbmcgbG9vcGVkIG92ZXIuICovXG4gIHN0YXRlbWVudDogU3RhdGVtZW50O1xuICAvKiogQ29uZGl0aW9uIHdoZW4gdG8gcmVwZWF0LiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb247XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGVtcHR5IHN0YXRlbWVudCwgaS5lLiwgYSBzZW1pY29sb24gdGVybWluYXRpbmcgbm90aGluZy4gKi9cbmV4cG9ydCBjbGFzcyBFbXB0eVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FTVBUWTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGVudW1gIGRlY2xhcmF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIEVudW1EZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVOVU1ERUNMQVJBVElPTjtcblxuICAvKiogRW51bSB2YWx1ZSBkZWNsYXJhdGlvbnMuICovXG4gIHZhbHVlczogRW51bVZhbHVlRGVjbGFyYXRpb25bXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YWx1ZSBvZiBhbiBgZW51bWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgRW51bVZhbHVlRGVjbGFyYXRpb24gZXh0ZW5kcyBWYXJpYWJsZUxpa2VEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FTlVNVkFMVUVERUNMQVJBVElPTjtcbiAgLy8gbmFtZSBpcyBpbmhlcml0ZWRcblxuICAvKiogVmFsdWUgZXhwcmVzc2lvbi4gKi9cbiAgdmFsdWU6IEV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0IGltcG9ydGAgc3RhdGVtZW50IG9mIGFuIGludGVyZmFjZS4gKi9cbmV4cG9ydCBjbGFzcyBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVElNUE9SVDtcblxuICAvKiogSWRlbnRpZmllciBiZWluZyBpbXBvcnRlZC4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBJZGVudGlmaWVyIGJlaW5nIGV4cG9ydGVkLiAqL1xuICBleHRlcm5hbE5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG1lbWJlciBvZiBhbiBgZXhwb3J0YCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0TWVtYmVyIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5FWFBPUlRNRU1CRVI7XG5cbiAgLyoqIExvY2FsIGlkZW50aWZpZXIuICovXG4gIGxvY2FsTmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBFeHBvcnRlZCBpZGVudGlmaWVyLiAqL1xuICBleHBvcnRlZE5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0YCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0U3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVDtcblxuICAvKiogQXJyYXkgb2YgbWVtYmVycyBpZiBhIHNldCBvZiBuYW1lZCBleHBvcnRzLCBvciBgbnVsbGAgaWYgYSBmaWxlIGV4cG9ydC4gKi9cbiAgbWVtYmVyczogRXhwb3J0TWVtYmVyW10gfCBudWxsO1xuICAvKiogUGF0aCBiZWluZyBleHBvcnRlZCBmcm9tLCBpZiBhcHBsaWNhYmxlLiAqL1xuICBwYXRoOiBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBOb3JtYWxpemVkIHBhdGgsIGlmIGBwYXRoYCBpcyBzZXQuICovXG4gIG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmcgfCBudWxsO1xuICAvKiogTWFuZ2xlZCBpbnRlcm5hbCBwYXRoIGJlaW5nIHJlZmVyZW5jZWQsIGlmIGBwYXRoYCBpcyBzZXQuICovXG4gIGludGVybmFsUGF0aDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhIGRlY2xhcmVkIGV4cG9ydC4gKi9cbiAgaXNEZWNsYXJlOiBib29sO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0IGRlZmF1bHRgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBFeHBvcnREZWZhdWx0U3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ7XG5cbiAgLyoqIERlY2xhcmF0aW9uIGJlaW5nIGV4cG9ydGVkIGFzIGRlZmF1bHQuICovXG4gIGRlY2xhcmF0aW9uOiBEZWNsYXJhdGlvblN0YXRlbWVudDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gZXhwcmVzc2lvbiB0aGF0IGlzIHVzZWQgYXMgYSBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FWFBSRVNTSU9OO1xuXG4gIC8qKiBFeHByZXNzaW9uIGJlaW5nIHVzZWQgYXMgYSBzdGF0ZW1lbnQuKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBmaWVsZCBkZWNsYXJhdGlvbiB3aXRoaW4gYSBgY2xhc3NgLiAqL1xuZXhwb3J0IGNsYXNzIEZpZWxkRGVjbGFyYXRpb24gZXh0ZW5kcyBWYXJpYWJsZUxpa2VEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OO1xuXG4gIC8qKiBQYXJhbWV0ZXIgaW5kZXggaWYgZGVjbGFyZWQgYXMgYSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIsIG90aGVyd2lzZSBgLTFgLiAqL1xuICBwYXJhbWV0ZXJJbmRleDogaTMyID0gLTE7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYGZvcmAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEZvclN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GT1I7XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVyIHN0YXRlbWVudCwgaWYgcHJlc2VudC5cbiAgICogRWl0aGVyIGEge0BsaW5rIFZhcmlhYmxlU3RhdGVtZW50fSBvciB7QGxpbmsgRXhwcmVzc2lvblN0YXRlbWVudH0uXG4gICAqL1xuICBpbml0aWFsaXplcjogU3RhdGVtZW50IHwgbnVsbDtcbiAgLyoqIENvbmRpdGlvbiBleHByZXNzaW9uLCBpZiBwcmVzZW50LiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogSW5jcmVtZW50b3IgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4gKi9cbiAgaW5jcmVtZW50b3I6IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogU3RhdGVtZW50IGJlaW5nIGxvb3BlZCBvdmVyLiAqL1xuICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDtcbn1cblxuLyoqIEluZGljYXRlcyB0aGUga2luZCBvZiBhbiBhcnJheSBmdW5jdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEFycm93S2luZCB7XG4gIC8qKiBOb3QgYW4gYXJyb3cgZnVuY3Rpb24uICovXG4gIE5PTkUsXG4gIC8qKiBQYXJlbnRoZXNpemVkIHBhcmFtZXRlciBsaXN0LiAqL1xuICBBUlJPV19QQVJFTlRIRVNJWkVELFxuICAvKiogU2luZ2xlIHBhcmFtZXRlciB3aXRob3V0IHBhcmVudGhlc2lzLiAqL1xuICBBUlJPV19TSU5HTEVcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgZnVuY3Rpb25gIGRlY2xhcmF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GVU5DVElPTkRFQ0xBUkFUSU9OO1xuXG4gIC8qKiBUeXBlIHBhcmFtZXRlcnMsIGlmIGFueS4gKi9cbiAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsO1xuICAvKiogRnVuY3Rpb24gc2lnbmF0dXJlLiAqL1xuICBzaWduYXR1cmU6IEZ1bmN0aW9uVHlwZU5vZGU7XG4gIC8qKiBCb2R5IHN0YXRlbWVudC4gVXN1YWxseSBhIGJsb2NrLiAqL1xuICBib2R5OiBTdGF0ZW1lbnQgfCBudWxsO1xuICAvKiogQXJyb3cgZnVuY3Rpb24ga2luZCwgaWYgYXBwbGljYWJsZS4gKi9cbiAgYXJyb3dLaW5kOiBBcnJvd0tpbmQ7XG5cbiAgZ2V0IGlzR2VuZXJpYygpOiBib29sIHtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLnR5cGVQYXJhbWV0ZXJzO1xuICAgIHJldHVybiB0eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKiogQ2xvbmVzIHRoaXMgZnVuY3Rpb24gZGVjbGFyYXRpb24uICovXG4gIGNsb25lKCk6IEZ1bmN0aW9uRGVjbGFyYXRpb24ge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgICB0aGlzLm5hbWUsXG4gICAgICB0aGlzLnR5cGVQYXJhbWV0ZXJzLFxuICAgICAgdGhpcy5zaWduYXR1cmUsXG4gICAgICB0aGlzLmJvZHksXG4gICAgICB0aGlzLmRlY29yYXRvcnMsXG4gICAgICB0aGlzLmZsYWdzLFxuICAgICAgdGhpcy5hcnJvd0tpbmQsXG4gICAgICB0aGlzLnJhbmdlXG4gICAgKTtcbiAgfVxufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaWZgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBJZlN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5JRjtcblxuICAvKiogQ29uZGl0aW9uLiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb247XG4gIC8qKiBTdGF0ZW1lbnQgZXhlY3V0ZWQgd2hlbiBjb25kaXRpb24gaXMgYHRydWVgLiAqL1xuICBpZlRydWU6IFN0YXRlbWVudDtcbiAgLyoqIFN0YXRlbWVudCBleGVjdXRlZCB3aGVuIGNvbmRpdGlvbiBpcyBgZmFsc2VgLiAqL1xuICBpZkZhbHNlOiBTdGF0ZW1lbnQgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaW1wb3J0YCBkZWNsYXJhdGlvbiBwYXJ0IG9mIGFuIHtAbGluayBJbXBvcnRTdGF0ZW1lbnR9LiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydERlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuSU1QT1JUREVDTEFSQVRJT047XG5cbiAgLyoqIElkZW50aWZpZXIgYmVpbmcgaW1wb3J0ZWQuICovXG4gIGZvcmVpZ25OYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGltcG9ydGAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydFN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5JTVBPUlQ7XG5cbiAgLyoqIEFycmF5IG9mIG1lbWJlciBkZWNsYXJhdGlvbnMgb3IgYG51bGxgIGlmIGFuIGFzdGVyaXNrIGltcG9ydC4gKi9cbiAgZGVjbGFyYXRpb25zOiBJbXBvcnREZWNsYXJhdGlvbltdIHwgbnVsbDtcbiAgLyoqIE5hbWUgb2YgdGhlIGxvY2FsIG5hbWVzcGFjZSwgaWYgYW4gYXN0ZXJpc2sgaW1wb3J0LiAqL1xuICBuYW1lc3BhY2VOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBQYXRoIGJlaW5nIGltcG9ydGVkIGZyb20uICovXG4gIHBhdGg6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uO1xuICAvKiogTm9ybWFsaXplZCBwYXRoLiAqL1xuICBub3JtYWxpemVkUGF0aDogc3RyaW5nO1xuICAvKiogTWFuZ2xlZCBpbnRlcm5hbCBwYXRoIGJlaW5nIHJlZmVyZW5jZWQuICovXG4gIGludGVybmFsUGF0aDogc3RyaW5nO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaW50ZXJmYXJjZWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgSW50ZXJmYWNlRGVjbGFyYXRpb24gZXh0ZW5kcyBDbGFzc0RlY2xhcmF0aW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklOVEVSRkFDRURFQ0xBUkFUSU9OO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiB3aXRoaW4gYSBgY2xhc3NgLiAqL1xuZXhwb3J0IGNsYXNzIE1ldGhvZERlY2xhcmF0aW9uIGV4dGVuZHMgRnVuY3Rpb25EZWNsYXJhdGlvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5NRVRIT0RERUNMQVJBVElPTjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbmFtZXNwYWNlYCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLk5BTUVTUEFDRURFQ0xBUkFUSU9OO1xuXG4gIC8qKiBBcnJheSBvZiBuYW1lc3BhY2UgbWVtYmVycy4gKi9cbiAgbWVtYmVyczogU3RhdGVtZW50W107XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYHJldHVybmAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIFJldHVyblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5SRVRVUk47XG5cbiAgLyoqIFZhbHVlIGV4cHJlc3Npb24gYmVpbmcgcmV0dXJuZWQsIGlmIHByZXNlbnQuICovXG4gIHZhbHVlOiBFeHByZXNzaW9uIHwgbnVsbDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgYGNhc2VgIHdpdGhpbiBhIGBzd2l0Y2hgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBTd2l0Y2hDYXNlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5TV0lUQ0hDQVNFO1xuXG4gIC8qKiBMYWJlbCBleHByZXNzaW9uLiBgbnVsbGAgaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGNhc2UuICovXG4gIGxhYmVsOiBFeHByZXNzaW9uIHwgbnVsbDtcbiAgLyoqIENvbnRhaW5lZCBzdGF0ZW1lbnRzLiAqL1xuICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgc3dpdGNoYCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgU3dpdGNoU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLlNXSVRDSDtcblxuICAvKiogQ29uZGl0aW9uIGV4cHJlc3Npb24uICovXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbjtcbiAgLyoqIENvbnRhaW5lZCBjYXNlcy4gKi9cbiAgY2FzZXM6IFN3aXRjaENhc2VbXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdGhyb3dgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBUaHJvd1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5USFJPVztcblxuICAvKiogVmFsdWUgZXhwcmVzc2lvbiBiZWluZyB0aHJvd24uICovXG4gIHZhbHVlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGB0cnlgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBUcnlTdGF0ZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVFJZO1xuXG4gIC8qKiBDb250YWluZWQgc3RhdGVtZW50cy4gKi9cbiAgc3RhdGVtZW50czogU3RhdGVtZW50W107XG4gIC8qKiBFeGNlcHRpb24gdmFyaWFibGUgbmFtZSwgaWYgYSBgY2F0Y2hgIGNsYXVzZSBpcyBwcmVzZW50LiAqL1xuICBjYXRjaFZhcmlhYmxlOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBTdGF0ZW1lbnRzIGJlaW5nIGV4ZWN1dGVkIG9uIGNhdGNoLCBpZiBhIGBjYXRjaGAgY2xhdXNlIGlzIHByZXNlbnQuICovXG4gIGNhdGNoU3RhdGVtZW50czogU3RhdGVtZW50W10gfCBudWxsO1xuICAvKiogU3RhdGVtZW50cyBiZWluZyBleGVjdXRlZCBhZnRlcndhcmRzLCBpZiBhIGBmaW5hbGx5YCBjbGF1c2UgaXMgcHJlc2VudC4gKi9cbiAgZmluYWxseVN0YXRlbWVudHM6IFN0YXRlbWVudFtdIHwgbnVsbDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdHlwZWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgVHlwZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OO1xuXG4gIC8qKiBUeXBlIHBhcmFtZXRlcnMsIGlmIGFueS4gKi9cbiAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsO1xuICAvKiogVHlwZSBiZWluZyBhbGlhc2VkLiAqL1xuICB0eXBlOiBUeXBlTm9kZTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBwYXJ0IG9mIGEge0BsaW5rIFZhcmlhYmxlU3RhdGVtZW50fS4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGV4dGVuZHMgVmFyaWFibGVMaWtlRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVkFSSUFCTEVERUNMQVJBVElPTjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YXJpYWJsZSBzdGF0ZW1lbnQgd3JhcHBpbmcge0BsaW5rIFZhcmlhYmxlRGVjbGFyYXRpb259cy4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5WQVJJQUJMRTtcblxuICAvKiogQXJyYXkgb2YgZGVjb3JhdG9ycy4gKi9cbiAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbDtcbiAgLyoqIEFycmF5IG9mIG1lbWJlciBkZWNsYXJhdGlvbnMuICovXG4gIGRlY2xhcmF0aW9uczogVmFyaWFibGVEZWNsYXJhdGlvbltdO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHZvaWQgc3RhdGVtZW50IGRyb3BwaW5nIGFuIGV4cHJlc3Npb24ncyB2YWx1ZS4gKi9cbmV4cG9ydCBjbGFzcyBWb2lkU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLlZPSUQ7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgZHJvcHBlZC4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgd2hpbGVgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBXaGlsZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5XSElMRTtcblxuICAvKiogQ29uZGl0aW9uIGV4cHJlc3Npb24uICovXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbjtcbiAgLyoqIFN0YXRlbWVudCBiZWluZyBsb29wZWQgb3Zlci4gKi9cbiAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ7XG59XG5cbi8qKiBGaW5kcyB0aGUgZmlyc3QgZGVjb3JhdG9yIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQga2luZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGVjb3JhdG9yKGtpbmQ6IERlY29yYXRvcktpbmQsIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwpOiBEZWNvcmF0b3JOb2RlIHwgbnVsbCB7XG4gIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgbGV0IGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICBpZiAoZGVjb3JhdG9yLmRlY29yYXRvcktpbmQgPT0ga2luZCkgcmV0dXJuIGRlY29yYXRvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKiBNYW5nbGVzIGFuIGV4dGVybmFsIHRvIGFuIGludGVybmFsIHBhdGguICovXG5leHBvcnQgZnVuY3Rpb24gbWFuZ2xlSW50ZXJuYWxQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoLmVuZHNXaXRoKFwiLnRzXCIpKSBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSAzKTtcbiAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIHR5cGUgbm9kZSByZXByZXNlbnRzIGFuIG9taXR0ZWQgdHlwZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVPbWl0dGVkKHR5cGU6IFR5cGVOb2RlKTogYm9vbCB7XG4gIGlmICh0eXBlLmtpbmQgPT0gTm9kZUtpbmQuTkFNRURUWVBFKSB7XG4gICAgbGV0IG5hbWUgPSAoPE5hbWVkVHlwZU5vZGU+dHlwZSkubmFtZTtcbiAgICByZXR1cm4gIShuYW1lLm5leHQgfHwgbmFtZS5pZGVudGlmaWVyLnRleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0= - -/***/ }), - -/***/ "../src/common.ts": -/*!************************!*\ - !*** ../src/common.ts ***! - \************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Common constants. - * @module common - */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** Indicates traits of a {@link Node} or {@link Element}. */ -var CommonFlags; -(function (CommonFlags) { - /** No flags set. */ - CommonFlags[CommonFlags["NONE"] = 0] = "NONE"; - // Basic modifiers - /** Has an `import` modifier. */ - CommonFlags[CommonFlags["IMPORT"] = 1] = "IMPORT"; - /** Has an `export` modifier. */ - CommonFlags[CommonFlags["EXPORT"] = 2] = "EXPORT"; - /** Has a `declare` modifier. */ - CommonFlags[CommonFlags["DECLARE"] = 4] = "DECLARE"; - /** Has a `const` modifier. */ - CommonFlags[CommonFlags["CONST"] = 8] = "CONST"; - /** Has a `let` modifier. */ - CommonFlags[CommonFlags["LET"] = 16] = "LET"; - /** Has a `static` modifier. */ - CommonFlags[CommonFlags["STATIC"] = 32] = "STATIC"; - /** Has a `readonly` modifier. */ - CommonFlags[CommonFlags["READONLY"] = 64] = "READONLY"; - /** Has an `abstract` modifier. */ - CommonFlags[CommonFlags["ABSTRACT"] = 128] = "ABSTRACT"; - /** Has a `public` modifier. */ - CommonFlags[CommonFlags["PUBLIC"] = 256] = "PUBLIC"; - /** Has a `private` modifier. */ - CommonFlags[CommonFlags["PRIVATE"] = 512] = "PRIVATE"; - /** Has a `protected` modifier. */ - CommonFlags[CommonFlags["PROTECTED"] = 1024] = "PROTECTED"; - /** Has a `get` modifier. */ - CommonFlags[CommonFlags["GET"] = 2048] = "GET"; - /** Has a `set` modifier. */ - CommonFlags[CommonFlags["SET"] = 4096] = "SET"; - /** Has a definite assignment assertion `!` as in `x!: i32;`. */ - CommonFlags[CommonFlags["DEFINITE_ASSIGNMENT"] = 8192] = "DEFINITE_ASSIGNMENT"; - // Extended modifiers usually derived from basic modifiers - /** Is ambient, that is either declared or nested in a declared element. */ - CommonFlags[CommonFlags["AMBIENT"] = 16384] = "AMBIENT"; - /** Is generic. */ - CommonFlags[CommonFlags["GENERIC"] = 32768] = "GENERIC"; - /** Is part of a generic context. */ - CommonFlags[CommonFlags["GENERIC_CONTEXT"] = 65536] = "GENERIC_CONTEXT"; - /** Is an instance member. */ - CommonFlags[CommonFlags["INSTANCE"] = 131072] = "INSTANCE"; - /** Is a constructor. */ - CommonFlags[CommonFlags["CONSTRUCTOR"] = 262144] = "CONSTRUCTOR"; - /** Is a module export. */ - CommonFlags[CommonFlags["MODULE_EXPORT"] = 524288] = "MODULE_EXPORT"; - /** Is a module import. */ - CommonFlags[CommonFlags["MODULE_IMPORT"] = 1048576] = "MODULE_IMPORT"; - // Compilation states - /** Is resolved. */ - CommonFlags[CommonFlags["RESOLVED"] = 2097152] = "RESOLVED"; - /** Is compiled. */ - CommonFlags[CommonFlags["COMPILED"] = 4194304] = "COMPILED"; - /** Has a constant value and is therefore inlined. */ - CommonFlags[CommonFlags["INLINED"] = 8388608] = "INLINED"; - /** Is scoped. */ - CommonFlags[CommonFlags["SCOPED"] = 16777216] = "SCOPED"; - /** Is a trampoline. */ - CommonFlags[CommonFlags["TRAMPOLINE"] = 33554432] = "TRAMPOLINE"; - /** Is a virtual method. */ - CommonFlags[CommonFlags["VIRTUAL"] = 67108864] = "VIRTUAL"; - /** Is the main function. */ - CommonFlags[CommonFlags["MAIN"] = 134217728] = "MAIN"; - // Other - /** Is quoted. */ - CommonFlags[CommonFlags["QUOTED"] = 268435456] = "QUOTED"; -})(CommonFlags = exports.CommonFlags || (exports.CommonFlags = {})); -/** Path delimiter inserted between file system levels. */ -exports.PATH_DELIMITER = "/"; -/** Substitution used to indicate the parent directory. */ -exports.PARENT_SUBST = ".."; -/** Function name prefix used for getters. */ -exports.GETTER_PREFIX = "get:"; -/** Function name prefix used for setters. */ -exports.SETTER_PREFIX = "set:"; -/** Delimiter used between class names and instance members. */ -exports.INSTANCE_DELIMITER = "#"; -/** Delimiter used between class and namespace names and static members. */ -exports.STATIC_DELIMITER = "."; -/** Delimiter used between a function and its inner elements. */ -exports.INNER_DELIMITER = "~"; -/** Substitution used to indicate a library directory. */ -exports.LIBRARY_SUBST = "~lib"; -/** Library directory prefix. */ -exports.LIBRARY_PREFIX = exports.LIBRARY_SUBST + exports.PATH_DELIMITER; -/** Path index suffix. */ -exports.INDEX_SUFFIX = exports.PATH_DELIMITER + "index"; -/** Common compiler symbols. */ -var CommonSymbols; -(function (CommonSymbols) { - // special - CommonSymbols.EMPTY = ""; - // types - CommonSymbols.i8 = "i8"; - CommonSymbols.i16 = "i16"; - CommonSymbols.i32 = "i32"; - CommonSymbols.i64 = "i64"; - CommonSymbols.isize = "isize"; - CommonSymbols.u8 = "u8"; - CommonSymbols.u16 = "u16"; - CommonSymbols.u32 = "u32"; - CommonSymbols.u64 = "u64"; - CommonSymbols.usize = "usize"; - CommonSymbols.bool = "bool"; - CommonSymbols.f32 = "f32"; - CommonSymbols.f64 = "f64"; - CommonSymbols.v128 = "v128"; - CommonSymbols.i8x16 = "i8x16"; - CommonSymbols.u8x16 = "u8x16"; - CommonSymbols.i16x8 = "i16x8"; - CommonSymbols.u16x8 = "u16x8"; - CommonSymbols.i32x4 = "i32x4"; - CommonSymbols.u32x4 = "u32x4"; - CommonSymbols.i64x2 = "i64x2"; - CommonSymbols.u64x2 = "u64x2"; - CommonSymbols.f32x4 = "f32x4"; - CommonSymbols.f64x2 = "f64x2"; - CommonSymbols.void_ = "void"; - CommonSymbols.number = "number"; - CommonSymbols.boolean = "boolean"; - CommonSymbols.string = "string"; - CommonSymbols.native = "native"; - CommonSymbols.indexof = "indexof"; - CommonSymbols.valueof = "valueof"; - CommonSymbols.returnof = "returnof"; - // aliases - CommonSymbols.null_ = "null"; - CommonSymbols.true_ = "true"; - CommonSymbols.false_ = "false"; - // objects - CommonSymbols.this_ = "this"; - CommonSymbols.super_ = "super"; - CommonSymbols.constructor = "constructor"; - // constants - CommonSymbols.ASC_TARGET = "ASC_TARGET"; - CommonSymbols.ASC_NO_TREESHAKING = "ASC_NO_TREESHAKING"; - CommonSymbols.ASC_NO_ASSERT = "ASC_NO_ASSERT"; - CommonSymbols.ASC_MEMORY_BASE = "ASC_MEMORY_BASE"; - CommonSymbols.ASC_OPTIMIZE_LEVEL = "ASC_OPTIMIZE_LEVEL"; - CommonSymbols.ASC_SHRINK_LEVEL = "ASC_SHRINK_LEVEL"; - CommonSymbols.ASC_FEATURE_MUTABLE_GLOBAL = "ASC_FEATURE_MUTABLE_GLOBAL"; - CommonSymbols.ASC_FEATURE_SIGN_EXTENSION = "ASC_FEATURE_SIGN_EXTENSION"; - CommonSymbols.ASC_FEATURE_BULK_MEMORY = "ASC_FEATURE_BULK_MEMORY"; - CommonSymbols.ASC_FEATURE_SIMD = "ASC_FEATURE_SIMD"; - CommonSymbols.ASC_FEATURE_THREADS = "ASC_FEATURE_THREADS"; - // classes - CommonSymbols.I8 = "I8"; - CommonSymbols.I16 = "I16"; - CommonSymbols.I32 = "I32"; - CommonSymbols.I64 = "I64"; - CommonSymbols.Isize = "Isize"; - CommonSymbols.U8 = "U8"; - CommonSymbols.U16 = "U16"; - CommonSymbols.U32 = "U32"; - CommonSymbols.U64 = "U64"; - CommonSymbols.Usize = "Usize"; - CommonSymbols.Bool = "Bool"; - CommonSymbols.F32 = "F32"; - CommonSymbols.F64 = "F64"; - CommonSymbols.V128 = "V128"; - CommonSymbols.String = "String"; - CommonSymbols.Array = "Array"; - CommonSymbols.FixedArray = "FixedArray"; - CommonSymbols.Set = "Set"; - CommonSymbols.Map = "Map"; - CommonSymbols.ArrayBufferView = "ArrayBufferView"; - CommonSymbols.ArrayBuffer = "ArrayBuffer"; - CommonSymbols.Math = "Math"; - CommonSymbols.Mathf = "Mathf"; - CommonSymbols.Int8Array = "Int8Array"; - CommonSymbols.Int16Array = "Int16Array"; - CommonSymbols.Int32Array = "Int32Array"; - CommonSymbols.Int64Array = "Int64Array"; - CommonSymbols.Uint8Array = "Uint8Array"; - CommonSymbols.Uint8ClampedArray = "Uint8ClampedArray"; - CommonSymbols.Uint16Array = "Uint16Array"; - CommonSymbols.Uint32Array = "Uint32Array"; - CommonSymbols.Uint64Array = "Uint64Array"; - CommonSymbols.Float32Array = "Float32Array"; - CommonSymbols.Float64Array = "Float64Array"; - // runtime - CommonSymbols.abort = "abort"; - CommonSymbols.pow = "pow"; - CommonSymbols.mod = "mod"; - CommonSymbols.alloc = "__alloc"; - CommonSymbols.realloc = "__realloc"; - CommonSymbols.free = "__free"; - CommonSymbols.retain = "__retain"; - CommonSymbols.release = "__release"; - CommonSymbols.collect = "__collect"; - CommonSymbols.typeinfo = "__typeinfo"; - CommonSymbols.instanceof_ = "__instanceof"; - CommonSymbols.visit = "__visit"; - CommonSymbols.allocArray = "__allocArray"; -})(CommonSymbols = exports.CommonSymbols || (exports.CommonSymbols = {})); -// shared -var feature_1 = __webpack_require__(/*! ../std/assembly/shared/feature */ "../std/assembly/shared/feature.ts"); -exports.Feature = feature_1.Feature; -var target_1 = __webpack_require__(/*! ../std/assembly/shared/target */ "../std/assembly/shared/target.ts"); -exports.Target = target_1.Target; -var typeinfo_1 = __webpack_require__(/*! ../std/assembly/shared/typeinfo */ "../std/assembly/shared/typeinfo.ts"); -exports.Typeinfo = typeinfo_1.Typeinfo; -exports.TypeinfoFlags = typeinfo_1.TypeinfoFlags; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHLENBQUEsS0FBSzs7QUFFUiw2REFBNkQ7QUFDN0QsSUFBWSxXQXlFWDtBQXpFRCxXQUFZLFdBQVc7SUFDckIsb0JBQW9CO0lBQ3BCLDZDQUFRLENBQUE7SUFFUixrQkFBa0I7SUFFbEIsZ0NBQWdDO0lBQ2hDLGlEQUFlLENBQUE7SUFDZixnQ0FBZ0M7SUFDaEMsaURBQWUsQ0FBQTtJQUNmLGdDQUFnQztJQUNoQyxtREFBZ0IsQ0FBQTtJQUNoQiw4QkFBOEI7SUFDOUIsK0NBQWMsQ0FBQTtJQUNkLDRCQUE0QjtJQUM1Qiw0Q0FBWSxDQUFBO0lBQ1osK0JBQStCO0lBQy9CLGtEQUFlLENBQUE7SUFDZixpQ0FBaUM7SUFDakMsc0RBQWlCLENBQUE7SUFDakIsa0NBQWtDO0lBQ2xDLHVEQUFpQixDQUFBO0lBQ2pCLCtCQUErQjtJQUMvQixtREFBZSxDQUFBO0lBQ2YsZ0NBQWdDO0lBQ2hDLHFEQUFnQixDQUFBO0lBQ2hCLGtDQUFrQztJQUNsQywwREFBbUIsQ0FBQTtJQUNuQiw0QkFBNEI7SUFDNUIsOENBQWEsQ0FBQTtJQUNiLDRCQUE0QjtJQUM1Qiw4Q0FBYSxDQUFBO0lBQ2IsZ0VBQWdFO0lBQ2hFLDhFQUE2QixDQUFBO0lBRTdCLDBEQUEwRDtJQUUxRCwyRUFBMkU7SUFDM0UsdURBQWlCLENBQUE7SUFDakIsa0JBQWtCO0lBQ2xCLHVEQUFpQixDQUFBO0lBQ2pCLG9DQUFvQztJQUNwQyx1RUFBeUIsQ0FBQTtJQUN6Qiw2QkFBNkI7SUFDN0IsMERBQWtCLENBQUE7SUFDbEIsd0JBQXdCO0lBQ3hCLGdFQUFxQixDQUFBO0lBQ3JCLDBCQUEwQjtJQUMxQixvRUFBdUIsQ0FBQTtJQUN2QiwwQkFBMEI7SUFDMUIscUVBQXVCLENBQUE7SUFFdkIscUJBQXFCO0lBRXJCLG1CQUFtQjtJQUNuQiwy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RDtBQUE5QywwQkFBQSxNQUFNLENBQUE7QUFDZiw0REFBMEU7QUFBakUsOEJBQUEsUUFBUSxDQUFBO0FBQUUsbUNBQUEsYUFBYSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gY29uc3RhbnRzLlxuICogQG1vZHVsZSBjb21tb25cbiAqLy8qKiovXG5cbi8qKiBJbmRpY2F0ZXMgdHJhaXRzIG9mIGEge0BsaW5rIE5vZGV9IG9yIHtAbGluayBFbGVtZW50fS4gKi9cbmV4cG9ydCBlbnVtIENvbW1vbkZsYWdzIHtcbiAgLyoqIE5vIGZsYWdzIHNldC4gKi9cbiAgTk9ORSA9IDAsXG5cbiAgLy8gQmFzaWMgbW9kaWZpZXJzXG5cbiAgLyoqIEhhcyBhbiBgaW1wb3J0YCBtb2RpZmllci4gKi9cbiAgSU1QT1JUID0gMSA8PCAwLFxuICAvKiogSGFzIGFuIGBleHBvcnRgIG1vZGlmaWVyLiAqL1xuICBFWFBPUlQgPSAxIDw8IDEsXG4gIC8qKiBIYXMgYSBgZGVjbGFyZWAgbW9kaWZpZXIuICovXG4gIERFQ0xBUkUgPSAxIDw8IDIsXG4gIC8qKiBIYXMgYSBgY29uc3RgIG1vZGlmaWVyLiAqL1xuICBDT05TVCA9IDEgPDwgMyxcbiAgLyoqIEhhcyBhIGBsZXRgIG1vZGlmaWVyLiAqL1xuICBMRVQgPSAxIDw8IDQsXG4gIC8qKiBIYXMgYSBgc3RhdGljYCBtb2RpZmllci4gKi9cbiAgU1RBVElDID0gMSA8PCA1LFxuICAvKiogSGFzIGEgYHJlYWRvbmx5YCBtb2RpZmllci4gKi9cbiAgUkVBRE9OTFkgPSAxIDw8IDYsXG4gIC8qKiBIYXMgYW4gYGFic3RyYWN0YCBtb2RpZmllci4gKi9cbiAgQUJTVFJBQ1QgPSAxIDw8IDcsXG4gIC8qKiBIYXMgYSBgcHVibGljYCBtb2RpZmllci4gKi9cbiAgUFVCTElDID0gMSA8PCA4LFxuICAvKiogSGFzIGEgYHByaXZhdGVgIG1vZGlmaWVyLiAqL1xuICBQUklWQVRFID0gMSA8PCA5LFxuICAvKiogSGFzIGEgYHByb3RlY3RlZGAgbW9kaWZpZXIuICovXG4gIFBST1RFQ1RFRCA9IDEgPDwgMTAsXG4gIC8qKiBIYXMgYSBgZ2V0YCBtb2RpZmllci4gKi9cbiAgR0VUID0gMSA8PCAxMSxcbiAgLyoqIEhhcyBhIGBzZXRgIG1vZGlmaWVyLiAqL1xuICBTRVQgPSAxIDw8IDEyLFxuICAvKiogSGFzIGEgZGVmaW5pdGUgYXNzaWdubWVudCBhc3NlcnRpb24gYCFgIGFzIGluIGB4ITogaTMyO2AuICovXG4gIERFRklOSVRFX0FTU0lHTk1FTlQgPSAxIDw8IDEzLFxuXG4gIC8vIEV4dGVuZGVkIG1vZGlmaWVycyB1c3VhbGx5IGRlcml2ZWQgZnJvbSBiYXNpYyBtb2RpZmllcnNcblxuICAvKiogSXMgYW1iaWVudCwgdGhhdCBpcyBlaXRoZXIgZGVjbGFyZWQgb3IgbmVzdGVkIGluIGEgZGVjbGFyZWQgZWxlbWVudC4gKi9cbiAgQU1CSUVOVCA9IDEgPDwgMTQsXG4gIC8qKiBJcyBnZW5lcmljLiAqL1xuICBHRU5FUklDID0gMSA8PCAxNSxcbiAgLyoqIElzIHBhcnQgb2YgYSBnZW5lcmljIGNvbnRleHQuICovXG4gIEdFTkVSSUNfQ09OVEVYVCA9IDEgPDwgMTYsXG4gIC8qKiBJcyBhbiBpbnN0YW5jZSBtZW1iZXIuICovXG4gIElOU1RBTkNFID0gMSA8PCAxNyxcbiAgLyoqIElzIGEgY29uc3RydWN0b3IuICovXG4gIENPTlNUUlVDVE9SID0gMSA8PCAxOCxcbiAgLyoqIElzIGEgbW9kdWxlIGV4cG9ydC4gKi9cbiAgTU9EVUxFX0VYUE9SVCA9IDEgPDwgMTksXG4gIC8qKiBJcyBhIG1vZHVsZSBpbXBvcnQuICovXG4gIE1PRFVMRV9JTVBPUlQgPSAxIDw8IDIwLFxuXG4gIC8vIENvbXBpbGF0aW9uIHN0YXRlc1xuXG4gIC8qKiBJcyByZXNvbHZlZC4gKi9cbiAgUkVTT0xWRUQgPSAxIDw8IDIxLFxuICAvKiogSXMgY29tcGlsZWQuICovXG4gIENPTVBJTEVEID0gMSA8PCAyMixcbiAgLyoqIEhhcyBhIGNvbnN0YW50IHZhbHVlIGFuZCBpcyB0aGVyZWZvcmUgaW5saW5lZC4gKi9cbiAgSU5MSU5FRCA9IDEgPDwgMjMsXG4gIC8qKiBJcyBzY29wZWQuICovXG4gIFNDT1BFRCA9IDEgPDwgMjQsXG4gIC8qKiBJcyBhIHRyYW1wb2xpbmUuICovXG4gIFRSQU1QT0xJTkUgPSAxIDw8IDI1LFxuICAvKiogSXMgYSB2aXJ0dWFsIG1ldGhvZC4gKi9cbiAgVklSVFVBTCA9IDEgPDwgMjYsXG4gIC8qKiBJcyB0aGUgbWFpbiBmdW5jdGlvbi4gKi9cbiAgTUFJTiA9IDEgPDwgMjcsXG5cbiAgLy8gT3RoZXJcblxuICAvKiogSXMgcXVvdGVkLiAqL1xuICBRVU9URUQgPSAxIDw8IDI4XG59XG5cbi8qKiBQYXRoIGRlbGltaXRlciBpbnNlcnRlZCBiZXR3ZWVuIGZpbGUgc3lzdGVtIGxldmVscy4gKi9cbmV4cG9ydCBjb25zdCBQQVRIX0RFTElNSVRFUiA9IFwiL1wiO1xuLyoqIFN1YnN0aXR1dGlvbiB1c2VkIHRvIGluZGljYXRlIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiAqL1xuZXhwb3J0IGNvbnN0IFBBUkVOVF9TVUJTVCA9IFwiLi5cIjtcbi8qKiBGdW5jdGlvbiBuYW1lIHByZWZpeCB1c2VkIGZvciBnZXR0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IEdFVFRFUl9QUkVGSVggPSBcImdldDpcIjtcbi8qKiBGdW5jdGlvbiBuYW1lIHByZWZpeCB1c2VkIGZvciBzZXR0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFNFVFRFUl9QUkVGSVggPSBcInNldDpcIjtcbi8qKiBEZWxpbWl0ZXIgdXNlZCBiZXR3ZWVuIGNsYXNzIG5hbWVzIGFuZCBpbnN0YW5jZSBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IElOU1RBTkNFX0RFTElNSVRFUiA9IFwiI1wiO1xuLyoqIERlbGltaXRlciB1c2VkIGJldHdlZW4gY2xhc3MgYW5kIG5hbWVzcGFjZSBuYW1lcyBhbmQgc3RhdGljIG1lbWJlcnMuICovXG5leHBvcnQgY29uc3QgU1RBVElDX0RFTElNSVRFUiA9IFwiLlwiO1xuLyoqIERlbGltaXRlciB1c2VkIGJldHdlZW4gYSBmdW5jdGlvbiBhbmQgaXRzIGlubmVyIGVsZW1lbnRzLiAqL1xuZXhwb3J0IGNvbnN0IElOTkVSX0RFTElNSVRFUiA9IFwiflwiO1xuLyoqIFN1YnN0aXR1dGlvbiB1c2VkIHRvIGluZGljYXRlIGEgbGlicmFyeSBkaXJlY3RvcnkuICovXG5leHBvcnQgY29uc3QgTElCUkFSWV9TVUJTVCA9IFwifmxpYlwiO1xuLyoqIExpYnJhcnkgZGlyZWN0b3J5IHByZWZpeC4gKi9cbmV4cG9ydCBjb25zdCBMSUJSQVJZX1BSRUZJWCA9IExJQlJBUllfU1VCU1QgKyBQQVRIX0RFTElNSVRFUjtcbi8qKiBQYXRoIGluZGV4IHN1ZmZpeC4gKi9cbmV4cG9ydCBjb25zdCBJTkRFWF9TVUZGSVggPSBQQVRIX0RFTElNSVRFUiArIFwiaW5kZXhcIjtcblxuLyoqIENvbW1vbiBjb21waWxlciBzeW1ib2xzLiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBDb21tb25TeW1ib2xzIHtcbiAgLy8gc3BlY2lhbFxuICBleHBvcnQgY29uc3QgRU1QVFkgPSBcIlwiO1xuICAvLyB0eXBlc1xuICBleHBvcnQgY29uc3QgaTggPSBcImk4XCI7XG4gIGV4cG9ydCBjb25zdCBpMTYgPSBcImkxNlwiO1xuICBleHBvcnQgY29uc3QgaTMyID0gXCJpMzJcIjtcbiAgZXhwb3J0IGNvbnN0IGk2NCA9IFwiaTY0XCI7XG4gIGV4cG9ydCBjb25zdCBpc2l6ZSA9IFwiaXNpemVcIjtcbiAgZXhwb3J0IGNvbnN0IHU4ID0gXCJ1OFwiO1xuICBleHBvcnQgY29uc3QgdTE2ID0gXCJ1MTZcIjtcbiAgZXhwb3J0IGNvbnN0IHUzMiA9IFwidTMyXCI7XG4gIGV4cG9ydCBjb25zdCB1NjQgPSBcInU2NFwiO1xuICBleHBvcnQgY29uc3QgdXNpemUgPSBcInVzaXplXCI7XG4gIGV4cG9ydCBjb25zdCBib29sID0gXCJib29sXCI7XG4gIGV4cG9ydCBjb25zdCBmMzIgPSBcImYzMlwiO1xuICBleHBvcnQgY29uc3QgZjY0ID0gXCJmNjRcIjtcbiAgZXhwb3J0IGNvbnN0IHYxMjggPSBcInYxMjhcIjtcbiAgZXhwb3J0IGNvbnN0IGk4eDE2ID0gXCJpOHgxNlwiO1xuICBleHBvcnQgY29uc3QgdTh4MTYgPSBcInU4eDE2XCI7XG4gIGV4cG9ydCBjb25zdCBpMTZ4OCA9IFwiaTE2eDhcIjtcbiAgZXhwb3J0IGNvbnN0IHUxNng4ID0gXCJ1MTZ4OFwiO1xuICBleHBvcnQgY29uc3QgaTMyeDQgPSBcImkzMng0XCI7XG4gIGV4cG9ydCBjb25zdCB1MzJ4NCA9IFwidTMyeDRcIjtcbiAgZXhwb3J0IGNvbnN0IGk2NHgyID0gXCJpNjR4MlwiO1xuICBleHBvcnQgY29uc3QgdTY0eDIgPSBcInU2NHgyXCI7XG4gIGV4cG9ydCBjb25zdCBmMzJ4NCA9IFwiZjMyeDRcIjtcbiAgZXhwb3J0IGNvbnN0IGY2NHgyID0gXCJmNjR4MlwiO1xuICBleHBvcnQgY29uc3Qgdm9pZF8gPSBcInZvaWRcIjtcbiAgZXhwb3J0IGNvbnN0IG51bWJlciA9IFwibnVtYmVyXCI7XG4gIGV4cG9ydCBjb25zdCBib29sZWFuID0gXCJib29sZWFuXCI7XG4gIGV4cG9ydCBjb25zdCBzdHJpbmcgPSBcInN0cmluZ1wiO1xuICBleHBvcnQgY29uc3QgbmF0aXZlID0gXCJuYXRpdmVcIjtcbiAgZXhwb3J0IGNvbnN0IGluZGV4b2YgPSBcImluZGV4b2ZcIjtcbiAgZXhwb3J0IGNvbnN0IHZhbHVlb2YgPSBcInZhbHVlb2ZcIjtcbiAgZXhwb3J0IGNvbnN0IHJldHVybm9mID0gXCJyZXR1cm5vZlwiO1xuICAvLyBhbGlhc2VzXG4gIGV4cG9ydCBjb25zdCBudWxsXyA9IFwibnVsbFwiO1xuICBleHBvcnQgY29uc3QgdHJ1ZV8gPSBcInRydWVcIjtcbiAgZXhwb3J0IGNvbnN0IGZhbHNlXyA9IFwiZmFsc2VcIjtcbiAgLy8gb2JqZWN0c1xuICBleHBvcnQgY29uc3QgdGhpc18gPSBcInRoaXNcIjtcbiAgZXhwb3J0IGNvbnN0IHN1cGVyXyA9IFwic3VwZXJcIjtcbiAgZXhwb3J0IGNvbnN0IGNvbnN0cnVjdG9yID0gXCJjb25zdHJ1Y3RvclwiO1xuICAvLyBjb25zdGFudHNcbiAgZXhwb3J0IGNvbnN0IEFTQ19UQVJHRVQgPSBcIkFTQ19UQVJHRVRcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19OT19UUkVFU0hBS0lORyA9IFwiQVNDX05PX1RSRUVTSEFLSU5HXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfTk9fQVNTRVJUID0gXCJBU0NfTk9fQVNTRVJUXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfTUVNT1JZX0JBU0UgPSBcIkFTQ19NRU1PUllfQkFTRVwiO1xuICBleHBvcnQgY29uc3QgQVNDX09QVElNSVpFX0xFVkVMID0gXCJBU0NfT1BUSU1JWkVfTEVWRUxcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19TSFJJTktfTEVWRUwgPSBcIkFTQ19TSFJJTktfTEVWRUxcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX01VVEFCTEVfR0xPQkFMID0gXCJBU0NfRkVBVFVSRV9NVVRBQkxFX0dMT0JBTFwiO1xuICBleHBvcnQgY29uc3QgQVNDX0ZFQVRVUkVfU0lHTl9FWFRFTlNJT04gPSBcIkFTQ19GRUFUVVJFX1NJR05fRVhURU5TSU9OXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfRkVBVFVSRV9CVUxLX01FTU9SWSA9IFwiQVNDX0ZFQVRVUkVfQlVMS19NRU1PUllcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX1NJTUQgPSBcIkFTQ19GRUFUVVJFX1NJTURcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX1RIUkVBRFMgPSBcIkFTQ19GRUFUVVJFX1RIUkVBRFNcIjtcbiAgLy8gY2xhc3Nlc1xuICBleHBvcnQgY29uc3QgSTggPSBcIkk4XCI7XG4gIGV4cG9ydCBjb25zdCBJMTYgPSBcIkkxNlwiO1xuICBleHBvcnQgY29uc3QgSTMyID0gXCJJMzJcIjtcbiAgZXhwb3J0IGNvbnN0IEk2NCA9IFwiSTY0XCI7XG4gIGV4cG9ydCBjb25zdCBJc2l6ZSA9IFwiSXNpemVcIjtcbiAgZXhwb3J0IGNvbnN0IFU4ID0gXCJVOFwiO1xuICBleHBvcnQgY29uc3QgVTE2ID0gXCJVMTZcIjtcbiAgZXhwb3J0IGNvbnN0IFUzMiA9IFwiVTMyXCI7XG4gIGV4cG9ydCBjb25zdCBVNjQgPSBcIlU2NFwiO1xuICBleHBvcnQgY29uc3QgVXNpemUgPSBcIlVzaXplXCI7XG4gIGV4cG9ydCBjb25zdCBCb29sID0gXCJCb29sXCI7XG4gIGV4cG9ydCBjb25zdCBGMzIgPSBcIkYzMlwiO1xuICBleHBvcnQgY29uc3QgRjY0ID0gXCJGNjRcIjtcbiAgZXhwb3J0IGNvbnN0IFYxMjggPSBcIlYxMjhcIjtcbiAgZXhwb3J0IGNvbnN0IFN0cmluZyA9IFwiU3RyaW5nXCI7XG4gIGV4cG9ydCBjb25zdCBBcnJheSA9IFwiQXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IEZpeGVkQXJyYXkgPSBcIkZpeGVkQXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IFNldCA9IFwiU2V0XCI7XG4gIGV4cG9ydCBjb25zdCBNYXAgPSBcIk1hcFwiO1xuICBleHBvcnQgY29uc3QgQXJyYXlCdWZmZXJWaWV3ID0gXCJBcnJheUJ1ZmZlclZpZXdcIjtcbiAgZXhwb3J0IGNvbnN0IEFycmF5QnVmZmVyID0gXCJBcnJheUJ1ZmZlclwiO1xuICBleHBvcnQgY29uc3QgTWF0aCA9IFwiTWF0aFwiO1xuICBleHBvcnQgY29uc3QgTWF0aGYgPSBcIk1hdGhmXCI7XG4gIGV4cG9ydCBjb25zdCBJbnQ4QXJyYXkgPSBcIkludDhBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50MTZBcnJheSA9IFwiSW50MTZBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50MzJBcnJheSA9IFwiSW50MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50NjRBcnJheSA9IFwiSW50NjRBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDhBcnJheSA9IFwiVWludDhBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDhDbGFtcGVkQXJyYXkgPSBcIlVpbnQ4Q2xhbXBlZEFycmF5XCI7XG4gIGV4cG9ydCBjb25zdCBVaW50MTZBcnJheSA9IFwiVWludDE2QXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IFVpbnQzMkFycmF5ID0gXCJVaW50MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDY0QXJyYXkgPSBcIlVpbnQ2NEFycmF5XCI7XG4gIGV4cG9ydCBjb25zdCBGbG9hdDMyQXJyYXkgPSBcIkZsb2F0MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgRmxvYXQ2NEFycmF5ID0gXCJGbG9hdDY0QXJyYXlcIjtcbiAgLy8gcnVudGltZVxuICBleHBvcnQgY29uc3QgYWJvcnQgPSBcImFib3J0XCI7XG4gIGV4cG9ydCBjb25zdCBwb3cgPSBcInBvd1wiO1xuICBleHBvcnQgY29uc3QgbW9kID0gXCJtb2RcIjtcbiAgZXhwb3J0IGNvbnN0IGFsbG9jID0gXCJfX2FsbG9jXCI7XG4gIGV4cG9ydCBjb25zdCByZWFsbG9jID0gXCJfX3JlYWxsb2NcIjtcbiAgZXhwb3J0IGNvbnN0IGZyZWUgPSBcIl9fZnJlZVwiO1xuICBleHBvcnQgY29uc3QgcmV0YWluID0gXCJfX3JldGFpblwiO1xuICBleHBvcnQgY29uc3QgcmVsZWFzZSA9IFwiX19yZWxlYXNlXCI7XG4gIGV4cG9ydCBjb25zdCBjb2xsZWN0ID0gXCJfX2NvbGxlY3RcIjtcbiAgZXhwb3J0IGNvbnN0IHR5cGVpbmZvID0gXCJfX3R5cGVpbmZvXCI7XG4gIGV4cG9ydCBjb25zdCBpbnN0YW5jZW9mXyA9IFwiX19pbnN0YW5jZW9mXCI7XG4gIGV4cG9ydCBjb25zdCB2aXNpdCA9IFwiX192aXNpdFwiO1xuICBleHBvcnQgY29uc3QgYWxsb2NBcnJheSA9IFwiX19hbGxvY0FycmF5XCI7XG59XG5cbi8vIHNoYXJlZFxuZXhwb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuLi9zdGQvYXNzZW1ibHkvc2hhcmVkL2ZlYXR1cmVcIjtcbmV4cG9ydCB7IFRhcmdldCB9IGZyb20gXCIuLi9zdGQvYXNzZW1ibHkvc2hhcmVkL3RhcmdldFwiO1xuZXhwb3J0IHsgVHlwZWluZm8sIFR5cGVpbmZvRmxhZ3MgfSBmcm9tIFwiLi4vc3RkL2Fzc2VtYmx5L3NoYXJlZC90eXBlaW5mb1wiO1xuIl19 - -/***/ }), - -/***/ "../src/diagnosticMessages.generated.ts": -/*!**********************************************!*\ - !*** ../src/diagnosticMessages.generated.ts ***! - \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Generated from diagnosticsMessages.json. Do not edit. - * @module diagnostics - */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/* tslint:disable:max-line-length */ -/** Enum of available diagnostic codes. */ -var DiagnosticCode; -(function (DiagnosticCode) { - DiagnosticCode[DiagnosticCode["Operation_not_supported"] = 100] = "Operation_not_supported"; - DiagnosticCode[DiagnosticCode["Operation_is_unsafe"] = 101] = "Operation_is_unsafe"; - DiagnosticCode[DiagnosticCode["User_defined_0"] = 102] = "User_defined_0"; - DiagnosticCode[DiagnosticCode["Conversion_from_type_0_to_1_requires_an_explicit_cast"] = 200] = "Conversion_from_type_0_to_1_requires_an_explicit_cast"; - DiagnosticCode[DiagnosticCode["Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit"] = 201] = "Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit"; - DiagnosticCode[DiagnosticCode["Type_0_cannot_be_changed_to_type_1"] = 202] = "Type_0_cannot_be_changed_to_type_1"; - DiagnosticCode[DiagnosticCode["Type_0_cannot_be_reinterpreted_as_type_1"] = 203] = "Type_0_cannot_be_reinterpreted_as_type_1"; - DiagnosticCode[DiagnosticCode["Basic_type_0_cannot_be_nullable"] = 204] = "Basic_type_0_cannot_be_nullable"; - DiagnosticCode[DiagnosticCode["Cannot_export_a_mutable_global"] = 205] = "Cannot_export_a_mutable_global"; - DiagnosticCode[DiagnosticCode["Mutable_value_cannot_be_inlined"] = 206] = "Mutable_value_cannot_be_inlined"; - DiagnosticCode[DiagnosticCode["Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa"] = 207] = "Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa"; - DiagnosticCode[DiagnosticCode["Unmanaged_classes_cannot_implement_interfaces"] = 208] = "Unmanaged_classes_cannot_implement_interfaces"; - DiagnosticCode[DiagnosticCode["Invalid_regular_expression_flags"] = 209] = "Invalid_regular_expression_flags"; - DiagnosticCode[DiagnosticCode["Implementation_0_must_match_the_signature_1"] = 210] = "Implementation_0_must_match_the_signature_1"; - DiagnosticCode[DiagnosticCode["Class_0_is_sealed_and_cannot_be_extended"] = 211] = "Class_0_is_sealed_and_cannot_be_extended"; - DiagnosticCode[DiagnosticCode["Decorator_0_is_not_valid_here"] = 212] = "Decorator_0_is_not_valid_here"; - DiagnosticCode[DiagnosticCode["Duplicate_decorator"] = 213] = "Duplicate_decorator"; - DiagnosticCode[DiagnosticCode["An_allocator_must_be_present_to_use_0"] = 214] = "An_allocator_must_be_present_to_use_0"; - DiagnosticCode[DiagnosticCode["Optional_parameter_must_have_an_initializer"] = 215] = "Optional_parameter_must_have_an_initializer"; - DiagnosticCode[DiagnosticCode["Constructor_of_class_0_must_not_require_any_arguments"] = 216] = "Constructor_of_class_0_must_not_require_any_arguments"; - DiagnosticCode[DiagnosticCode["Function_0_cannot_be_inlined_into_itself"] = 217] = "Function_0_cannot_be_inlined_into_itself"; - DiagnosticCode[DiagnosticCode["Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set"] = 218] = "Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set"; - DiagnosticCode[DiagnosticCode["Optional_properties_are_not_supported"] = 219] = "Optional_properties_are_not_supported"; - DiagnosticCode[DiagnosticCode["Expression_must_be_a_compile_time_constant"] = 220] = "Expression_must_be_a_compile_time_constant"; - DiagnosticCode[DiagnosticCode["Module_cannot_have_multiple_start_functions"] = 221] = "Module_cannot_have_multiple_start_functions"; - DiagnosticCode[DiagnosticCode["_0_must_be_a_value_between_1_and_2_inclusive"] = 222] = "_0_must_be_a_value_between_1_and_2_inclusive"; - DiagnosticCode[DiagnosticCode["_0_must_be_a_power_of_two"] = 223] = "_0_must_be_a_power_of_two"; - DiagnosticCode[DiagnosticCode["Expression_is_unsafe"] = 224] = "Expression_is_unsafe"; - DiagnosticCode[DiagnosticCode["Expression_is_never_null"] = 225] = "Expression_is_never_null"; - DiagnosticCode[DiagnosticCode["Unterminated_string_literal"] = 1002] = "Unterminated_string_literal"; - DiagnosticCode[DiagnosticCode["Identifier_expected"] = 1003] = "Identifier_expected"; - DiagnosticCode[DiagnosticCode["_0_expected"] = 1005] = "_0_expected"; - DiagnosticCode[DiagnosticCode["A_file_cannot_have_a_reference_to_itself"] = 1006] = "A_file_cannot_have_a_reference_to_itself"; - DiagnosticCode[DiagnosticCode["Trailing_comma_not_allowed"] = 1009] = "Trailing_comma_not_allowed"; - DiagnosticCode[DiagnosticCode["Unexpected_token"] = 1012] = "Unexpected_token"; - DiagnosticCode[DiagnosticCode["A_rest_parameter_must_be_last_in_a_parameter_list"] = 1014] = "A_rest_parameter_must_be_last_in_a_parameter_list"; - DiagnosticCode[DiagnosticCode["Parameter_cannot_have_question_mark_and_initializer"] = 1015] = "Parameter_cannot_have_question_mark_and_initializer"; - DiagnosticCode[DiagnosticCode["A_required_parameter_cannot_follow_an_optional_parameter"] = 1016] = "A_required_parameter_cannot_follow_an_optional_parameter"; - DiagnosticCode[DiagnosticCode["Statements_are_not_allowed_in_ambient_contexts"] = 1036] = "Statements_are_not_allowed_in_ambient_contexts"; - DiagnosticCode[DiagnosticCode["Initializers_are_not_allowed_in_ambient_contexts"] = 1039] = "Initializers_are_not_allowed_in_ambient_contexts"; - DiagnosticCode[DiagnosticCode["_0_modifier_cannot_be_used_here"] = 1042] = "_0_modifier_cannot_be_used_here"; - DiagnosticCode[DiagnosticCode["A_rest_parameter_cannot_be_optional"] = 1047] = "A_rest_parameter_cannot_be_optional"; - DiagnosticCode[DiagnosticCode["A_rest_parameter_cannot_have_an_initializer"] = 1048] = "A_rest_parameter_cannot_have_an_initializer"; - DiagnosticCode[DiagnosticCode["A_set_accessor_must_have_exactly_one_parameter"] = 1049] = "A_set_accessor_must_have_exactly_one_parameter"; - DiagnosticCode[DiagnosticCode["A_set_accessor_parameter_cannot_have_an_initializer"] = 1052] = "A_set_accessor_parameter_cannot_have_an_initializer"; - DiagnosticCode[DiagnosticCode["A_get_accessor_cannot_have_parameters"] = 1054] = "A_get_accessor_cannot_have_parameters"; - DiagnosticCode[DiagnosticCode["Enum_member_must_have_initializer"] = 1061] = "Enum_member_must_have_initializer"; - DiagnosticCode[DiagnosticCode["Type_parameters_cannot_appear_on_a_constructor_declaration"] = 1092] = "Type_parameters_cannot_appear_on_a_constructor_declaration"; - DiagnosticCode[DiagnosticCode["Type_annotation_cannot_appear_on_a_constructor_declaration"] = 1093] = "Type_annotation_cannot_appear_on_a_constructor_declaration"; - DiagnosticCode[DiagnosticCode["An_accessor_cannot_have_type_parameters"] = 1094] = "An_accessor_cannot_have_type_parameters"; - DiagnosticCode[DiagnosticCode["A_set_accessor_cannot_have_a_return_type_annotation"] = 1095] = "A_set_accessor_cannot_have_a_return_type_annotation"; - DiagnosticCode[DiagnosticCode["Type_parameter_list_cannot_be_empty"] = 1098] = "Type_parameter_list_cannot_be_empty"; - DiagnosticCode[DiagnosticCode["A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement"] = 1104] = "A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement"; - DiagnosticCode[DiagnosticCode["A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement"] = 1105] = "A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement"; - DiagnosticCode[DiagnosticCode["A_return_statement_can_only_be_used_within_a_function_body"] = 1108] = "A_return_statement_can_only_be_used_within_a_function_body"; - DiagnosticCode[DiagnosticCode["Expression_expected"] = 1109] = "Expression_expected"; - DiagnosticCode[DiagnosticCode["Type_expected"] = 1110] = "Type_expected"; - DiagnosticCode[DiagnosticCode["A_default_clause_cannot_appear_more_than_once_in_a_switch_statement"] = 1113] = "A_default_clause_cannot_appear_more_than_once_in_a_switch_statement"; - DiagnosticCode[DiagnosticCode["Duplicate_label_0"] = 1114] = "Duplicate_label_0"; - DiagnosticCode[DiagnosticCode["An_export_assignment_cannot_have_modifiers"] = 1120] = "An_export_assignment_cannot_have_modifiers"; - DiagnosticCode[DiagnosticCode["Octal_literals_are_not_allowed_in_strict_mode"] = 1121] = "Octal_literals_are_not_allowed_in_strict_mode"; - DiagnosticCode[DiagnosticCode["Digit_expected"] = 1124] = "Digit_expected"; - DiagnosticCode[DiagnosticCode["Hexadecimal_digit_expected"] = 1125] = "Hexadecimal_digit_expected"; - DiagnosticCode[DiagnosticCode["Unexpected_end_of_text"] = 1126] = "Unexpected_end_of_text"; - DiagnosticCode[DiagnosticCode["Invalid_character"] = 1127] = "Invalid_character"; - DiagnosticCode[DiagnosticCode["_case_or_default_expected"] = 1130] = "_case_or_default_expected"; - DiagnosticCode[DiagnosticCode["_super_must_be_followed_by_an_argument_list_or_member_access"] = 1034] = "_super_must_be_followed_by_an_argument_list_or_member_access"; - DiagnosticCode[DiagnosticCode["A_declare_modifier_cannot_be_used_in_an_already_ambient_context"] = 1038] = "A_declare_modifier_cannot_be_used_in_an_already_ambient_context"; - DiagnosticCode[DiagnosticCode["Type_argument_expected"] = 1140] = "Type_argument_expected"; - DiagnosticCode[DiagnosticCode["String_literal_expected"] = 1141] = "String_literal_expected"; - DiagnosticCode[DiagnosticCode["Line_break_not_permitted_here"] = 1142] = "Line_break_not_permitted_here"; - DiagnosticCode[DiagnosticCode["Declaration_expected"] = 1146] = "Declaration_expected"; - DiagnosticCode[DiagnosticCode["_const_declarations_must_be_initialized"] = 1155] = "_const_declarations_must_be_initialized"; - DiagnosticCode[DiagnosticCode["Unterminated_regular_expression_literal"] = 1161] = "Unterminated_regular_expression_literal"; - DiagnosticCode[DiagnosticCode["Interface_declaration_cannot_have_implements_clause"] = 1176] = "Interface_declaration_cannot_have_implements_clause"; - DiagnosticCode[DiagnosticCode["Binary_digit_expected"] = 1177] = "Binary_digit_expected"; - DiagnosticCode[DiagnosticCode["Octal_digit_expected"] = 1178] = "Octal_digit_expected"; - DiagnosticCode[DiagnosticCode["An_implementation_cannot_be_declared_in_ambient_contexts"] = 1183] = "An_implementation_cannot_be_declared_in_ambient_contexts"; - DiagnosticCode[DiagnosticCode["An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive"] = 1198] = "An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive"; - DiagnosticCode[DiagnosticCode["Unterminated_Unicode_escape_sequence"] = 1199] = "Unterminated_Unicode_escape_sequence"; - DiagnosticCode[DiagnosticCode["Decorators_are_not_valid_here"] = 1206] = "Decorators_are_not_valid_here"; - DiagnosticCode[DiagnosticCode["_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration"] = 1242] = "_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration"; - DiagnosticCode[DiagnosticCode["Method_0_cannot_have_an_implementation_because_it_is_marked_abstract"] = 1245] = "Method_0_cannot_have_an_implementation_because_it_is_marked_abstract"; - DiagnosticCode[DiagnosticCode["A_definite_assignment_assertion_is_not_permitted_in_this_context"] = 1255] = "A_definite_assignment_assertion_is_not_permitted_in_this_context"; - DiagnosticCode[DiagnosticCode["A_class_may_only_extend_another_class"] = 1311] = "A_class_may_only_extend_another_class"; - DiagnosticCode[DiagnosticCode["A_parameter_property_cannot_be_declared_using_a_rest_parameter"] = 1317] = "A_parameter_property_cannot_be_declared_using_a_rest_parameter"; - DiagnosticCode[DiagnosticCode["Duplicate_identifier_0"] = 2300] = "Duplicate_identifier_0"; - DiagnosticCode[DiagnosticCode["Cannot_find_name_0"] = 2304] = "Cannot_find_name_0"; - DiagnosticCode[DiagnosticCode["Module_0_has_no_exported_member_1"] = 2305] = "Module_0_has_no_exported_member_1"; - DiagnosticCode[DiagnosticCode["Generic_type_0_requires_1_type_argument_s"] = 2314] = "Generic_type_0_requires_1_type_argument_s"; - DiagnosticCode[DiagnosticCode["Type_0_is_not_generic"] = 2315] = "Type_0_is_not_generic"; - DiagnosticCode[DiagnosticCode["Type_0_is_not_assignable_to_type_1"] = 2322] = "Type_0_is_not_assignable_to_type_1"; - DiagnosticCode[DiagnosticCode["Index_signature_is_missing_in_type_0"] = 2329] = "Index_signature_is_missing_in_type_0"; - DiagnosticCode[DiagnosticCode["_this_cannot_be_referenced_in_current_location"] = 2332] = "_this_cannot_be_referenced_in_current_location"; - DiagnosticCode[DiagnosticCode["_super_can_only_be_referenced_in_a_derived_class"] = 2335] = "_super_can_only_be_referenced_in_a_derived_class"; - DiagnosticCode[DiagnosticCode["Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors"] = 2337] = "Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors"; - DiagnosticCode[DiagnosticCode["Property_0_does_not_exist_on_type_1"] = 2339] = "Property_0_does_not_exist_on_type_1"; - DiagnosticCode[DiagnosticCode["Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures"] = 2349] = "Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures"; - DiagnosticCode[DiagnosticCode["Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature"] = 2351] = "Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature"; - DiagnosticCode[DiagnosticCode["A_function_whose_declared_type_is_not_void_must_return_a_value"] = 2355] = "A_function_whose_declared_type_is_not_void_must_return_a_value"; - DiagnosticCode[DiagnosticCode["The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access"] = 2357] = "The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access"; - DiagnosticCode[DiagnosticCode["The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access"] = 2364] = "The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access"; - DiagnosticCode[DiagnosticCode["Operator_0_cannot_be_applied_to_types_1_and_2"] = 2365] = "Operator_0_cannot_be_applied_to_types_1_and_2"; - DiagnosticCode[DiagnosticCode["A_super_call_must_be_the_first_statement_in_the_constructor"] = 2376] = "A_super_call_must_be_the_first_statement_in_the_constructor"; - DiagnosticCode[DiagnosticCode["Constructors_for_derived_classes_must_contain_a_super_call"] = 2377] = "Constructors_for_derived_classes_must_contain_a_super_call"; - DiagnosticCode[DiagnosticCode["_get_and_set_accessor_must_have_the_same_type"] = 2380] = "_get_and_set_accessor_must_have_the_same_type"; - DiagnosticCode[DiagnosticCode["Constructor_implementation_is_missing"] = 2390] = "Constructor_implementation_is_missing"; - DiagnosticCode[DiagnosticCode["Function_implementation_is_missing_or_not_immediately_following_the_declaration"] = 2391] = "Function_implementation_is_missing_or_not_immediately_following_the_declaration"; - DiagnosticCode[DiagnosticCode["Multiple_constructor_implementations_are_not_allowed"] = 2392] = "Multiple_constructor_implementations_are_not_allowed"; - DiagnosticCode[DiagnosticCode["Duplicate_function_implementation"] = 2393] = "Duplicate_function_implementation"; - DiagnosticCode[DiagnosticCode["Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local"] = 2395] = "Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local"; - DiagnosticCode[DiagnosticCode["A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged"] = 2434] = "A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged"; - DiagnosticCode[DiagnosticCode["Type_0_has_no_property_1"] = 2460] = "Type_0_has_no_property_1"; - DiagnosticCode[DiagnosticCode["The_0_operator_cannot_be_applied_to_type_1"] = 2469] = "The_0_operator_cannot_be_applied_to_type_1"; - DiagnosticCode[DiagnosticCode["In_const_enum_declarations_member_initializer_must_be_constant_expression"] = 2474] = "In_const_enum_declarations_member_initializer_must_be_constant_expression"; - DiagnosticCode[DiagnosticCode["Export_declaration_conflicts_with_exported_declaration_of_0"] = 2484] = "Export_declaration_conflicts_with_exported_declaration_of_0"; - DiagnosticCode[DiagnosticCode["Object_is_possibly_null"] = 2531] = "Object_is_possibly_null"; - DiagnosticCode[DiagnosticCode["Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property"] = 2540] = "Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property"; - DiagnosticCode[DiagnosticCode["The_target_of_an_assignment_must_be_a_variable_or_a_property_access"] = 2541] = "The_target_of_an_assignment_must_be_a_variable_or_a_property_access"; - DiagnosticCode[DiagnosticCode["Index_signature_in_type_0_only_permits_reading"] = 2542] = "Index_signature_in_type_0_only_permits_reading"; - DiagnosticCode[DiagnosticCode["Expected_0_arguments_but_got_1"] = 2554] = "Expected_0_arguments_but_got_1"; - DiagnosticCode[DiagnosticCode["Expected_at_least_0_arguments_but_got_1"] = 2555] = "Expected_at_least_0_arguments_but_got_1"; - DiagnosticCode[DiagnosticCode["Expected_0_type_arguments_but_got_1"] = 2558] = "Expected_0_type_arguments_but_got_1"; - DiagnosticCode[DiagnosticCode["A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums"] = 2651] = "A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums"; - DiagnosticCode[DiagnosticCode["Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration"] = 2673] = "Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration"; - DiagnosticCode[DiagnosticCode["Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration"] = 2674] = "Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration"; - DiagnosticCode[DiagnosticCode["Namespace_0_has_no_exported_member_1"] = 2694] = "Namespace_0_has_no_exported_member_1"; - DiagnosticCode[DiagnosticCode["Required_type_parameters_may_not_follow_optional_type_parameters"] = 2706] = "Required_type_parameters_may_not_follow_optional_type_parameters"; - DiagnosticCode[DiagnosticCode["Duplicate_property_0"] = 2718] = "Duplicate_property_0"; - DiagnosticCode[DiagnosticCode["Type_0_has_no_call_signatures"] = 2757] = "Type_0_has_no_call_signatures"; - DiagnosticCode[DiagnosticCode["File_0_not_found"] = 6054] = "File_0_not_found"; - DiagnosticCode[DiagnosticCode["Numeric_separators_are_not_allowed_here"] = 6188] = "Numeric_separators_are_not_allowed_here"; - DiagnosticCode[DiagnosticCode["Multiple_consecutive_numeric_separators_are_not_permitted"] = 6189] = "Multiple_consecutive_numeric_separators_are_not_permitted"; - DiagnosticCode[DiagnosticCode["_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class"] = 17009] = "_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class"; - DiagnosticCode[DiagnosticCode["_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"] = 17011] = "_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"; -})(DiagnosticCode = exports.DiagnosticCode || (exports.DiagnosticCode = {})); -/** Translates a diagnostic code to its respective string. */ -function diagnosticCodeToString(code) { - switch (code) { - case 100: return "Operation not supported."; - case 101: return "Operation is unsafe."; - case 102: return "User-defined: {0}"; - case 200: return "Conversion from type '{0}' to '{1}' requires an explicit cast."; - case 201: return "Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit."; - case 202: return "Type '{0}' cannot be changed to type '{1}'."; - case 203: return "Type '{0}' cannot be reinterpreted as type '{1}'."; - case 204: return "Basic type '{0}' cannot be nullable."; - case 205: return "Cannot export a mutable global."; - case 206: return "Mutable value cannot be inlined."; - case 207: return "Unmanaged classes cannot extend managed classes and vice-versa."; - case 208: return "Unmanaged classes cannot implement interfaces."; - case 209: return "Invalid regular expression flags."; - case 210: return "Implementation '{0}' must match the signature '{1}'."; - case 211: return "Class '{0}' is sealed and cannot be extended."; - case 212: return "Decorator '{0}' is not valid here."; - case 213: return "Duplicate decorator."; - case 214: return "An allocator must be present to use '{0}'."; - case 215: return "Optional parameter must have an initializer."; - case 216: return "Constructor of class '{0}' must not require any arguments."; - case 217: return "Function '{0}' cannot be inlined into itself."; - case 218: return "Cannot access method '{0}' without calling it as it requires 'this' to be set."; - case 219: return "Optional properties are not supported."; - case 220: return "Expression must be a compile-time constant."; - case 221: return "Module cannot have multiple start functions."; - case 222: return "'{0}' must be a value between '{1}' and '{2}' inclusive."; - case 223: return "'{0}' must be a power of two."; - case 224: return "Expression is unsafe."; - case 225: return "Expression is never 'null'."; - case 1002: return "Unterminated string literal."; - case 1003: return "Identifier expected."; - case 1005: return "'{0}' expected."; - case 1006: return "A file cannot have a reference to itself."; - case 1009: return "Trailing comma not allowed."; - case 1012: return "Unexpected token."; - case 1014: return "A rest parameter must be last in a parameter list."; - case 1015: return "Parameter cannot have question mark and initializer."; - case 1016: return "A required parameter cannot follow an optional parameter."; - case 1036: return "Statements are not allowed in ambient contexts."; - case 1039: return "Initializers are not allowed in ambient contexts."; - case 1042: return "'{0}' modifier cannot be used here."; - case 1047: return "A rest parameter cannot be optional."; - case 1048: return "A rest parameter cannot have an initializer."; - case 1049: return "A 'set' accessor must have exactly one parameter."; - case 1052: return "A 'set' accessor parameter cannot have an initializer."; - case 1054: return "A 'get' accessor cannot have parameters."; - case 1061: return "Enum member must have initializer."; - case 1092: return "Type parameters cannot appear on a constructor declaration."; - case 1093: return "Type annotation cannot appear on a constructor declaration."; - case 1094: return "An accessor cannot have type parameters."; - case 1095: return "A 'set' accessor cannot have a return type annotation."; - case 1098: return "Type parameter list cannot be empty."; - case 1104: return "A 'continue' statement can only be used within an enclosing iteration statement."; - case 1105: return "A 'break' statement can only be used within an enclosing iteration or switch statement."; - case 1108: return "A 'return' statement can only be used within a function body."; - case 1109: return "Expression expected."; - case 1110: return "Type expected."; - case 1113: return "A 'default' clause cannot appear more than once in a 'switch' statement."; - case 1114: return "Duplicate label '{0}'."; - case 1120: return "An export assignment cannot have modifiers."; - case 1121: return "Octal literals are not allowed in strict mode."; - case 1124: return "Digit expected."; - case 1125: return "Hexadecimal digit expected."; - case 1126: return "Unexpected end of text."; - case 1127: return "Invalid character."; - case 1130: return "'case' or 'default' expected."; - case 1034: return "'super' must be followed by an argument list or member access."; - case 1038: return "A 'declare' modifier cannot be used in an already ambient context."; - case 1140: return "Type argument expected."; - case 1141: return "String literal expected."; - case 1142: return "Line break not permitted here."; - case 1146: return "Declaration expected."; - case 1155: return "'const' declarations must be initialized."; - case 1161: return "Unterminated regular expression literal."; - case 1176: return "Interface declaration cannot have 'implements' clause."; - case 1177: return "Binary digit expected."; - case 1178: return "Octal digit expected."; - case 1183: return "An implementation cannot be declared in ambient contexts."; - case 1198: return "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive."; - case 1199: return "Unterminated Unicode escape sequence."; - case 1206: return "Decorators are not valid here."; - case 1242: return "'abstract' modifier can only appear on a class, method, or property declaration."; - case 1245: return "Method '{0}' cannot have an implementation because it is marked abstract."; - case 1255: return "A definite assignment assertion '!' is not permitted in this context."; - case 1311: return "A class may only extend another class."; - case 1317: return "A parameter property cannot be declared using a rest parameter."; - case 2300: return "Duplicate identifier '{0}'."; - case 2304: return "Cannot find name '{0}'."; - case 2305: return "Module '{0}' has no exported member '{1}'."; - case 2314: return "Generic type '{0}' requires {1} type argument(s)."; - case 2315: return "Type '{0}' is not generic."; - case 2322: return "Type '{0}' is not assignable to type '{1}'."; - case 2329: return "Index signature is missing in type '{0}'."; - case 2332: return "'this' cannot be referenced in current location."; - case 2335: return "'super' can only be referenced in a derived class."; - case 2337: return "Super calls are not permitted outside constructors or in nested functions inside constructors."; - case 2339: return "Property '{0}' does not exist on type '{1}'."; - case 2349: return "Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures."; - case 2351: return "Cannot use 'new' with an expression whose type lacks a construct signature."; - case 2355: return "A function whose declared type is not 'void' must return a value."; - case 2357: return "The operand of an increment or decrement operator must be a variable or a property access."; - case 2364: return "The left-hand side of an assignment expression must be a variable or a property access."; - case 2365: return "Operator '{0}' cannot be applied to types '{1}' and '{2}'."; - case 2376: return "A 'super' call must be the first statement in the constructor."; - case 2377: return "Constructors for derived classes must contain a 'super' call."; - case 2380: return "'get' and 'set' accessor must have the same type."; - case 2390: return "Constructor implementation is missing."; - case 2391: return "Function implementation is missing or not immediately following the declaration."; - case 2392: return "Multiple constructor implementations are not allowed."; - case 2393: return "Duplicate function implementation."; - case 2395: return "Individual declarations in merged declaration '{0}' must be all exported or all local."; - case 2434: return "A namespace declaration cannot be located prior to a class or function with which it is merged."; - case 2460: return "Type '{0}' has no property '{1}'."; - case 2469: return "The '{0}' operator cannot be applied to type '{1}'."; - case 2474: return "In 'const' enum declarations member initializer must be constant expression."; - case 2484: return "Export declaration conflicts with exported declaration of '{0}'."; - case 2531: return "Object is possibly 'null'."; - case 2540: return "Cannot assign to '{0}' because it is a constant or a read-only property."; - case 2541: return "The target of an assignment must be a variable or a property access."; - case 2542: return "Index signature in type '{0}' only permits reading."; - case 2554: return "Expected {0} arguments, but got {1}."; - case 2555: return "Expected at least {0} arguments, but got {1}."; - case 2558: return "Expected {0} type arguments, but got {1}."; - case 2651: return "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums."; - case 2673: return "Constructor of class '{0}' is private and only accessible within the class declaration."; - case 2674: return "Constructor of class '{0}' is protected and only accessible within the class declaration."; - case 2694: return "Namespace '{0}' has no exported member '{1}'."; - case 2706: return "Required type parameters may not follow optional type parameters."; - case 2718: return "Duplicate property '{0}'."; - case 2757: return "Type '{0}' has no call signatures."; - case 6054: return "File '{0}' not found."; - case 6188: return "Numeric separators are not allowed here."; - case 6189: return "Multiple consecutive numeric separators are not permitted."; - case 17009: return "'super' must be called before accessing 'this' in the constructor of a derived class."; - case 17011: return "'super' must be called before accessing a property of 'super' in the constructor of a derived class."; - default: return ""; - } -} -exports.diagnosticCodeToString = diagnosticCodeToString; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY01lc3NhZ2VzLmdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWFnbm9zdGljTWVzc2FnZXMuZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0csQ0FBQSxLQUFLOztBQUVSLG9DQUFvQztBQUVwQywwQ0FBMEM7QUFDMUMsSUFBWSxjQXdJWDtBQXhJRCxXQUFZLGNBQWM7SUFDeEIsMkZBQTZCLENBQUE7SUFDN0IsbUZBQXlCLENBQUE7SUFDekIseUVBQW9CLENBQUE7SUFDcEIsdUpBQTJELENBQUE7SUFDM0QsaU9BQWdHLENBQUE7SUFDaEcsaUhBQXdDLENBQUE7SUFDeEMsNkhBQThDLENBQUE7SUFDOUMsMkdBQXFDLENBQUE7SUFDckMseUdBQW9DLENBQUE7SUFDcEMsMkdBQXFDLENBQUE7SUFDckMseUtBQW9FLENBQUE7SUFDcEUsdUlBQW1ELENBQUE7SUFDbkQsNkdBQXNDLENBQUE7SUFDdEMsbUlBQWlELENBQUE7SUFDakQsNkhBQThDLENBQUE7SUFDOUMsdUdBQW1DLENBQUE7SUFDbkMsbUZBQXlCLENBQUE7SUFDekIsdUhBQTJDLENBQUE7SUFDM0MsbUlBQWlELENBQUE7SUFDakQsdUpBQTJELENBQUE7SUFDM0QsNkhBQThDLENBQUE7SUFDOUMsMkxBQTZFLENBQUE7SUFDN0UsdUhBQTJDLENBQUE7SUFDM0MsaUlBQWdELENBQUE7SUFDaEQsbUlBQWlELENBQUE7SUFDakQscUlBQWtELENBQUE7SUFDbEQsK0ZBQStCLENBQUE7SUFDL0IscUZBQTBCLENBQUE7SUFDMUIsNkZBQThCLENBQUE7SUFDOUIsb0dBQWtDLENBQUE7SUFDbEMsb0ZBQTBCLENBQUE7SUFDMUIsb0VBQWtCLENBQUE7SUFDbEIsOEhBQStDLENBQUE7SUFDL0Msa0dBQWlDLENBQUE7SUFDakMsOEVBQXVCLENBQUE7SUFDdkIsZ0pBQXdELENBQUE7SUFDeEQsb0pBQTBELENBQUE7SUFDMUQsOEpBQStELENBQUE7SUFDL0QsMElBQXFELENBQUE7SUFDckQsOElBQXVELENBQUE7SUFDdkQsNEdBQXNDLENBQUE7SUFDdEMsb0hBQTBDLENBQUE7SUFDMUMsb0lBQWtELENBQUE7SUFDbEQsMElBQXFELENBQUE7SUFDckQsb0pBQTBELENBQUE7SUFDMUQsd0hBQTRDLENBQUE7SUFDNUMsZ0hBQXdDLENBQUE7SUFDeEMsa0tBQWlFLENBQUE7SUFDakUsa0tBQWlFLENBQUE7SUFDakUsNEhBQThDLENBQUE7SUFDOUMsb0pBQTBELENBQUE7SUFDMUQsb0hBQTBDLENBQUE7SUFDMUMsd01BQW9GLENBQUE7SUFDcEYsc05BQTJGLENBQUE7SUFDM0Ysa0tBQWlFLENBQUE7SUFDakUsb0ZBQTBCLENBQUE7SUFDMUIsd0VBQW9CLENBQUE7SUFDcEIsb0xBQTBFLENBQUE7SUFDMUUsZ0ZBQXdCLENBQUE7SUFDeEIsa0lBQWlELENBQUE7SUFDakQsd0lBQW9ELENBQUE7SUFDcEQsMEVBQXFCLENBQUE7SUFDckIsa0dBQWlDLENBQUE7SUFDakMsMEZBQTZCLENBQUE7SUFDN0IsZ0ZBQXdCLENBQUE7SUFDeEIsZ0dBQWdDLENBQUE7SUFDaEMsc0tBQW1FLENBQUE7SUFDbkUsNEtBQXNFLENBQUE7SUFDdEUsMEZBQTZCLENBQUE7SUFDN0IsNEZBQThCLENBQUE7SUFDOUIsd0dBQW9DLENBQUE7SUFDcEMsc0ZBQTJCLENBQUE7SUFDM0IsNEhBQThDLENBQUE7SUFDOUMsNEhBQThDLENBQUE7SUFDOUMsb0pBQTBELENBQUE7SUFDMUQsd0ZBQTRCLENBQUE7SUFDNUIsc0ZBQTJCLENBQUE7SUFDM0IsOEpBQStELENBQUE7SUFDL0Qsb01BQWtGLENBQUE7SUFDbEYsc0hBQTJDLENBQUE7SUFDM0Msd0dBQW9DLENBQUE7SUFDcEMsc01BQW1GLENBQUE7SUFDbkYsc0xBQTJFLENBQUE7SUFDM0UsOEtBQXVFLENBQUE7SUFDdkUsd0hBQTRDLENBQUE7SUFDNUMsMEtBQXFFLENBQUE7SUFDckUsMEZBQTZCLENBQUE7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QWtJLENBQUM7UUFDckosS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHlGQUF5RixDQUFDO1FBQzVHLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyRkFBMkYsQ0FBQztRQUM5RyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sK0NBQStDLENBQUM7UUFDbEUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG1FQUFtRSxDQUFDO1FBQ3RGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyQkFBMkIsQ0FBQztRQUM5QyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sb0NBQW9DLENBQUM7UUFDdkQsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHVCQUF1QixDQUFDO1FBQzFDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywwQ0FBMEMsQ0FBQztRQUM3RCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sNERBQTRELENBQUM7UUFDL0UsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLHVGQUF1RixDQUFDO1FBQzNHLEtBQUssS0FBSyxDQUFDLENBQUMsT0FBTyxzR0FBc0csQ0FBQztRQUMxSCxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNwQjtBQUNILENBQUM7QUEzSUQsd0RBMklDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgZnJvbSBkaWFnbm9zdGljc01lc3NhZ2VzLmpzb24uIERvIG5vdCBlZGl0LlxuICogQG1vZHVsZSBkaWFnbm9zdGljc1xuICovLyoqKi9cblxuLyogdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoICovXG5cbi8qKiBFbnVtIG9mIGF2YWlsYWJsZSBkaWFnbm9zdGljIGNvZGVzLiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0NvZGUge1xuICBPcGVyYXRpb25fbm90X3N1cHBvcnRlZCA9IDEwMCxcbiAgT3BlcmF0aW9uX2lzX3Vuc2FmZSA9IDEwMSxcbiAgVXNlcl9kZWZpbmVkXzAgPSAxMDIsXG4gIENvbnZlcnNpb25fZnJvbV90eXBlXzBfdG9fMV9yZXF1aXJlc19hbl9leHBsaWNpdF9jYXN0ID0gMjAwLFxuICBDb252ZXJzaW9uX2Zyb21fdHlwZV8wX3RvXzFfd2lsbF9yZXF1aXJlX2FuX2V4cGxpY2l0X2Nhc3Rfd2hlbl9zd2l0Y2hpbmdfYmV0d2Vlbl8zMl82NF9iaXQgPSAyMDEsXG4gIFR5cGVfMF9jYW5ub3RfYmVfY2hhbmdlZF90b190eXBlXzEgPSAyMDIsXG4gIFR5cGVfMF9jYW5ub3RfYmVfcmVpbnRlcnByZXRlZF9hc190eXBlXzEgPSAyMDMsXG4gIEJhc2ljX3R5cGVfMF9jYW5ub3RfYmVfbnVsbGFibGUgPSAyMDQsXG4gIENhbm5vdF9leHBvcnRfYV9tdXRhYmxlX2dsb2JhbCA9IDIwNSxcbiAgTXV0YWJsZV92YWx1ZV9jYW5ub3RfYmVfaW5saW5lZCA9IDIwNixcbiAgVW5tYW5hZ2VkX2NsYXNzZXNfY2Fubm90X2V4dGVuZF9tYW5hZ2VkX2NsYXNzZXNfYW5kX3ZpY2VfdmVyc2EgPSAyMDcsXG4gIFVubWFuYWdlZF9jbGFzc2VzX2Nhbm5vdF9pbXBsZW1lbnRfaW50ZXJmYWNlcyA9IDIwOCxcbiAgSW52YWxpZF9yZWd1bGFyX2V4cHJlc3Npb25fZmxhZ3MgPSAyMDksXG4gIEltcGxlbWVudGF0aW9uXzBfbXVzdF9tYXRjaF90aGVfc2lnbmF0dXJlXzEgPSAyMTAsXG4gIENsYXNzXzBfaXNfc2VhbGVkX2FuZF9jYW5ub3RfYmVfZXh0ZW5kZWQgPSAyMTEsXG4gIERlY29yYXRvcl8wX2lzX25vdF92YWxpZF9oZXJlID0gMjEyLFxuICBEdXBsaWNhdGVfZGVjb3JhdG9yID0gMjEzLFxuICBBbl9hbGxvY2F0b3JfbXVzdF9iZV9wcmVzZW50X3RvX3VzZV8wID0gMjE0LFxuICBPcHRpb25hbF9wYXJhbWV0ZXJfbXVzdF9oYXZlX2FuX2luaXRpYWxpemVyID0gMjE1LFxuICBDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX211c3Rfbm90X3JlcXVpcmVfYW55X2FyZ3VtZW50cyA9IDIxNixcbiAgRnVuY3Rpb25fMF9jYW5ub3RfYmVfaW5saW5lZF9pbnRvX2l0c2VsZiA9IDIxNyxcbiAgQ2Fubm90X2FjY2Vzc19tZXRob2RfMF93aXRob3V0X2NhbGxpbmdfaXRfYXNfaXRfcmVxdWlyZXNfdGhpc190b19iZV9zZXQgPSAyMTgsXG4gIE9wdGlvbmFsX3Byb3BlcnRpZXNfYXJlX25vdF9zdXBwb3J0ZWQgPSAyMTksXG4gIEV4cHJlc3Npb25fbXVzdF9iZV9hX2NvbXBpbGVfdGltZV9jb25zdGFudCA9IDIyMCxcbiAgTW9kdWxlX2Nhbm5vdF9oYXZlX211bHRpcGxlX3N0YXJ0X2Z1bmN0aW9ucyA9IDIyMSxcbiAgXzBfbXVzdF9iZV9hX3ZhbHVlX2JldHdlZW5fMV9hbmRfMl9pbmNsdXNpdmUgPSAyMjIsXG4gIF8wX211c3RfYmVfYV9wb3dlcl9vZl90d28gPSAyMjMsXG4gIEV4cHJlc3Npb25faXNfdW5zYWZlID0gMjI0LFxuICBFeHByZXNzaW9uX2lzX25ldmVyX251bGwgPSAyMjUsXG4gIFVudGVybWluYXRlZF9zdHJpbmdfbGl0ZXJhbCA9IDEwMDIsXG4gIElkZW50aWZpZXJfZXhwZWN0ZWQgPSAxMDAzLFxuICBfMF9leHBlY3RlZCA9IDEwMDUsXG4gIEFfZmlsZV9jYW5ub3RfaGF2ZV9hX3JlZmVyZW5jZV90b19pdHNlbGYgPSAxMDA2LFxuICBUcmFpbGluZ19jb21tYV9ub3RfYWxsb3dlZCA9IDEwMDksXG4gIFVuZXhwZWN0ZWRfdG9rZW4gPSAxMDEyLFxuICBBX3Jlc3RfcGFyYW1ldGVyX211c3RfYmVfbGFzdF9pbl9hX3BhcmFtZXRlcl9saXN0ID0gMTAxNCxcbiAgUGFyYW1ldGVyX2Nhbm5vdF9oYXZlX3F1ZXN0aW9uX21hcmtfYW5kX2luaXRpYWxpemVyID0gMTAxNSxcbiAgQV9yZXF1aXJlZF9wYXJhbWV0ZXJfY2Fubm90X2ZvbGxvd19hbl9vcHRpb25hbF9wYXJhbWV0ZXIgPSAxMDE2LFxuICBTdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzID0gMTAzNixcbiAgSW5pdGlhbGl6ZXJzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzID0gMTAzOSxcbiAgXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaGVyZSA9IDEwNDIsXG4gIEFfcmVzdF9wYXJhbWV0ZXJfY2Fubm90X2JlX29wdGlvbmFsID0gMTA0NyxcbiAgQV9yZXN0X3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplciA9IDEwNDgsXG4gIEFfc2V0X2FjY2Vzc29yX211c3RfaGF2ZV9leGFjdGx5X29uZV9wYXJhbWV0ZXIgPSAxMDQ5LFxuICBBX3NldF9hY2Nlc3Nvcl9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXIgPSAxMDUyLFxuICBBX2dldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9wYXJhbWV0ZXJzID0gMTA1NCxcbiAgRW51bV9tZW1iZXJfbXVzdF9oYXZlX2luaXRpYWxpemVyID0gMTA2MSxcbiAgVHlwZV9wYXJhbWV0ZXJzX2Nhbm5vdF9hcHBlYXJfb25fYV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IDEwOTIsXG4gIFR5cGVfYW5ub3RhdGlvbl9jYW5ub3RfYXBwZWFyX29uX2FfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSAxMDkzLFxuICBBbl9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV90eXBlX3BhcmFtZXRlcnMgPSAxMDk0LFxuICBBX3NldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9hX3JldHVybl90eXBlX2Fubm90YXRpb24gPSAxMDk1LFxuICBUeXBlX3BhcmFtZXRlcl9saXN0X2Nhbm5vdF9iZV9lbXB0eSA9IDEwOTgsXG4gIEFfY29udGludWVfc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FuX2VuY2xvc2luZ19pdGVyYXRpb25fc3RhdGVtZW50ID0gMTEwNCxcbiAgQV9icmVha19zdGF0ZW1lbnRfY2FuX29ubHlfYmVfdXNlZF93aXRoaW5fYW5fZW5jbG9zaW5nX2l0ZXJhdGlvbl9vcl9zd2l0Y2hfc3RhdGVtZW50ID0gMTEwNSxcbiAgQV9yZXR1cm5fc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FfZnVuY3Rpb25fYm9keSA9IDExMDgsXG4gIEV4cHJlc3Npb25fZXhwZWN0ZWQgPSAxMTA5LFxuICBUeXBlX2V4cGVjdGVkID0gMTExMCxcbiAgQV9kZWZhdWx0X2NsYXVzZV9jYW5ub3RfYXBwZWFyX21vcmVfdGhhbl9vbmNlX2luX2Ffc3dpdGNoX3N0YXRlbWVudCA9IDExMTMsXG4gIER1cGxpY2F0ZV9sYWJlbF8wID0gMTExNCxcbiAgQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2hhdmVfbW9kaWZpZXJzID0gMTEyMCxcbiAgT2N0YWxfbGl0ZXJhbHNfYXJlX25vdF9hbGxvd2VkX2luX3N0cmljdF9tb2RlID0gMTEyMSxcbiAgRGlnaXRfZXhwZWN0ZWQgPSAxMTI0LFxuICBIZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCA9IDExMjUsXG4gIFVuZXhwZWN0ZWRfZW5kX29mX3RleHQgPSAxMTI2LFxuICBJbnZhbGlkX2NoYXJhY3RlciA9IDExMjcsXG4gIF9jYXNlX29yX2RlZmF1bHRfZXhwZWN0ZWQgPSAxMTMwLFxuICBfc3VwZXJfbXVzdF9iZV9mb2xsb3dlZF9ieV9hbl9hcmd1bWVudF9saXN0X29yX21lbWJlcl9hY2Nlc3MgPSAxMDM0LFxuICBBX2RlY2xhcmVfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaW5fYW5fYWxyZWFkeV9hbWJpZW50X2NvbnRleHQgPSAxMDM4LFxuICBUeXBlX2FyZ3VtZW50X2V4cGVjdGVkID0gMTE0MCxcbiAgU3RyaW5nX2xpdGVyYWxfZXhwZWN0ZWQgPSAxMTQxLFxuICBMaW5lX2JyZWFrX25vdF9wZXJtaXR0ZWRfaGVyZSA9IDExNDIsXG4gIERlY2xhcmF0aW9uX2V4cGVjdGVkID0gMTE0NixcbiAgX2NvbnN0X2RlY2xhcmF0aW9uc19tdXN0X2JlX2luaXRpYWxpemVkID0gMTE1NSxcbiAgVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsID0gMTE2MSxcbiAgSW50ZXJmYWNlX2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX2ltcGxlbWVudHNfY2xhdXNlID0gMTE3NixcbiAgQmluYXJ5X2RpZ2l0X2V4cGVjdGVkID0gMTE3NyxcbiAgT2N0YWxfZGlnaXRfZXhwZWN0ZWQgPSAxMTc4LFxuICBBbl9pbXBsZW1lbnRhdGlvbl9jYW5ub3RfYmVfZGVjbGFyZWRfaW5fYW1iaWVudF9jb250ZXh0cyA9IDExODMsXG4gIEFuX2V4dGVuZGVkX1VuaWNvZGVfZXNjYXBlX3ZhbHVlX211c3RfYmVfYmV0d2Vlbl8weDBfYW5kXzB4MTBGRkZGX2luY2x1c2l2ZSA9IDExOTgsXG4gIFVudGVybWluYXRlZF9Vbmljb2RlX2VzY2FwZV9zZXF1ZW5jZSA9IDExOTksXG4gIERlY29yYXRvcnNfYXJlX25vdF92YWxpZF9oZXJlID0gMTIwNixcbiAgX2Fic3RyYWN0X21vZGlmaWVyX2Nhbl9vbmx5X2FwcGVhcl9vbl9hX2NsYXNzX21ldGhvZF9vcl9wcm9wZXJ0eV9kZWNsYXJhdGlvbiA9IDEyNDIsXG4gIE1ldGhvZF8wX2Nhbm5vdF9oYXZlX2FuX2ltcGxlbWVudGF0aW9uX2JlY2F1c2VfaXRfaXNfbWFya2VkX2Fic3RyYWN0ID0gMTI0NSxcbiAgQV9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbl9pc19ub3RfcGVybWl0dGVkX2luX3RoaXNfY29udGV4dCA9IDEyNTUsXG4gIEFfY2xhc3NfbWF5X29ubHlfZXh0ZW5kX2Fub3RoZXJfY2xhc3MgPSAxMzExLFxuICBBX3BhcmFtZXRlcl9wcm9wZXJ0eV9jYW5ub3RfYmVfZGVjbGFyZWRfdXNpbmdfYV9yZXN0X3BhcmFtZXRlciA9IDEzMTcsXG4gIER1cGxpY2F0ZV9pZGVudGlmaWVyXzAgPSAyMzAwLFxuICBDYW5ub3RfZmluZF9uYW1lXzAgPSAyMzA0LFxuICBNb2R1bGVfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEgPSAyMzA1LFxuICBHZW5lcmljX3R5cGVfMF9yZXF1aXJlc18xX3R5cGVfYXJndW1lbnRfcyA9IDIzMTQsXG4gIFR5cGVfMF9pc19ub3RfZ2VuZXJpYyA9IDIzMTUsXG4gIFR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzEgPSAyMzIyLFxuICBJbmRleF9zaWduYXR1cmVfaXNfbWlzc2luZ19pbl90eXBlXzAgPSAyMzI5LFxuICBfdGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9jdXJyZW50X2xvY2F0aW9uID0gMjMzMixcbiAgX3N1cGVyX2Nhbl9vbmx5X2JlX3JlZmVyZW5jZWRfaW5fYV9kZXJpdmVkX2NsYXNzID0gMjMzNSxcbiAgU3VwZXJfY2FsbHNfYXJlX25vdF9wZXJtaXR0ZWRfb3V0c2lkZV9jb25zdHJ1Y3RvcnNfb3JfaW5fbmVzdGVkX2Z1bmN0aW9uc19pbnNpZGVfY29uc3RydWN0b3JzID0gMjMzNyxcbiAgUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzEgPSAyMzM5LFxuICBDYW5ub3RfaW52b2tlX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9sYWNrc19hX2NhbGxfc2lnbmF0dXJlX1R5cGVfMF9oYXNfbm9fY29tcGF0aWJsZV9jYWxsX3NpZ25hdHVyZXMgPSAyMzQ5LFxuICBDYW5ub3RfdXNlX25ld193aXRoX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9sYWNrc19hX2NvbnN0cnVjdF9zaWduYXR1cmUgPSAyMzUxLFxuICBBX2Z1bmN0aW9uX3dob3NlX2RlY2xhcmVkX3R5cGVfaXNfbm90X3ZvaWRfbXVzdF9yZXR1cm5fYV92YWx1ZSA9IDIzNTUsXG4gIFRoZV9vcGVyYW5kX29mX2FuX2luY3JlbWVudF9vcl9kZWNyZW1lbnRfb3BlcmF0b3JfbXVzdF9iZV9hX3ZhcmlhYmxlX29yX2FfcHJvcGVydHlfYWNjZXNzID0gMjM1NyxcbiAgVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2Fzc2lnbm1lbnRfZXhwcmVzc2lvbl9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3MgPSAyMzY0LFxuICBPcGVyYXRvcl8wX2Nhbm5vdF9iZV9hcHBsaWVkX3RvX3R5cGVzXzFfYW5kXzIgPSAyMzY1LFxuICBBX3N1cGVyX2NhbGxfbXVzdF9iZV90aGVfZmlyc3Rfc3RhdGVtZW50X2luX3RoZV9jb25zdHJ1Y3RvciA9IDIzNzYsXG4gIENvbnN0cnVjdG9yc19mb3JfZGVyaXZlZF9jbGFzc2VzX211c3RfY29udGFpbl9hX3N1cGVyX2NhbGwgPSAyMzc3LFxuICBfZ2V0X2FuZF9zZXRfYWNjZXNzb3JfbXVzdF9oYXZlX3RoZV9zYW1lX3R5cGUgPSAyMzgwLFxuICBDb25zdHJ1Y3Rvcl9pbXBsZW1lbnRhdGlvbl9pc19taXNzaW5nID0gMjM5MCxcbiAgRnVuY3Rpb25faW1wbGVtZW50YXRpb25faXNfbWlzc2luZ19vcl9ub3RfaW1tZWRpYXRlbHlfZm9sbG93aW5nX3RoZV9kZWNsYXJhdGlvbiA9IDIzOTEsXG4gIE11bHRpcGxlX2NvbnN0cnVjdG9yX2ltcGxlbWVudGF0aW9uc19hcmVfbm90X2FsbG93ZWQgPSAyMzkyLFxuICBEdXBsaWNhdGVfZnVuY3Rpb25faW1wbGVtZW50YXRpb24gPSAyMzkzLFxuICBJbmRpdmlkdWFsX2RlY2xhcmF0aW9uc19pbl9tZXJnZWRfZGVjbGFyYXRpb25fMF9tdXN0X2JlX2FsbF9leHBvcnRlZF9vcl9hbGxfbG9jYWwgPSAyMzk1LFxuICBBX25hbWVzcGFjZV9kZWNsYXJhdGlvbl9jYW5ub3RfYmVfbG9jYXRlZF9wcmlvcl90b19hX2NsYXNzX29yX2Z1bmN0aW9uX3dpdGhfd2hpY2hfaXRfaXNfbWVyZ2VkID0gMjQzNCxcbiAgVHlwZV8wX2hhc19ub19wcm9wZXJ0eV8xID0gMjQ2MCxcbiAgVGhlXzBfb3BlcmF0b3JfY2Fubm90X2JlX2FwcGxpZWRfdG9fdHlwZV8xID0gMjQ2OSxcbiAgSW5fY29uc3RfZW51bV9kZWNsYXJhdGlvbnNfbWVtYmVyX2luaXRpYWxpemVyX211c3RfYmVfY29uc3RhbnRfZXhwcmVzc2lvbiA9IDI0NzQsXG4gIEV4cG9ydF9kZWNsYXJhdGlvbl9jb25mbGljdHNfd2l0aF9leHBvcnRlZF9kZWNsYXJhdGlvbl9vZl8wID0gMjQ4NCxcbiAgT2JqZWN0X2lzX3Bvc3NpYmx5X251bGwgPSAyNTMxLFxuICBDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX2NvbnN0YW50X29yX2FfcmVhZF9vbmx5X3Byb3BlcnR5ID0gMjU0MCxcbiAgVGhlX3RhcmdldF9vZl9hbl9hc3NpZ25tZW50X211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2VzcyA9IDI1NDEsXG4gIEluZGV4X3NpZ25hdHVyZV9pbl90eXBlXzBfb25seV9wZXJtaXRzX3JlYWRpbmcgPSAyNTQyLFxuICBFeHBlY3RlZF8wX2FyZ3VtZW50c19idXRfZ290XzEgPSAyNTU0LFxuICBFeHBlY3RlZF9hdF9sZWFzdF8wX2FyZ3VtZW50c19idXRfZ290XzEgPSAyNTU1LFxuICBFeHBlY3RlZF8wX3R5cGVfYXJndW1lbnRzX2J1dF9nb3RfMSA9IDI1NTgsXG4gIEFfbWVtYmVyX2luaXRpYWxpemVyX2luX2FfZW51bV9kZWNsYXJhdGlvbl9jYW5ub3RfcmVmZXJlbmNlX21lbWJlcnNfZGVjbGFyZWRfYWZ0ZXJfaXRfaW5jbHVkaW5nX21lbWJlcnNfZGVmaW5lZF9pbl9vdGhlcl9lbnVtcyA9IDI2NTEsXG4gIENvbnN0cnVjdG9yX29mX2NsYXNzXzBfaXNfcHJpdmF0ZV9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb24gPSAyNjczLFxuICBDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX2lzX3Byb3RlY3RlZF9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb24gPSAyNjc0LFxuICBOYW1lc3BhY2VfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEgPSAyNjk0LFxuICBSZXF1aXJlZF90eXBlX3BhcmFtZXRlcnNfbWF5X25vdF9mb2xsb3dfb3B0aW9uYWxfdHlwZV9wYXJhbWV0ZXJzID0gMjcwNixcbiAgRHVwbGljYXRlX3Byb3BlcnR5XzAgPSAyNzE4LFxuICBUeXBlXzBfaGFzX25vX2NhbGxfc2lnbmF0dXJlcyA9IDI3NTcsXG4gIEZpbGVfMF9ub3RfZm91bmQgPSA2MDU0LFxuICBOdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmUgPSA2MTg4LFxuICBNdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQgPSA2MTg5LFxuICBfc3VwZXJfbXVzdF9iZV9jYWxsZWRfYmVmb3JlX2FjY2Vzc2luZ190aGlzX2luX3RoZV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3MgPSAxNzAwOSxcbiAgX3N1cGVyX211c3RfYmVfY2FsbGVkX2JlZm9yZV9hY2Nlc3NpbmdfYV9wcm9wZXJ0eV9vZl9zdXBlcl9pbl90aGVfY29uc3RydWN0b3Jfb2ZfYV9kZXJpdmVkX2NsYXNzID0gMTcwMTFcbn1cblxuLyoqIFRyYW5zbGF0ZXMgYSBkaWFnbm9zdGljIGNvZGUgdG8gaXRzIHJlc3BlY3RpdmUgc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpYWdub3N0aWNDb2RlVG9TdHJpbmcoY29kZTogRGlhZ25vc3RpY0NvZGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIDEwMDogcmV0dXJuIFwiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQuXCI7XG4gICAgY2FzZSAxMDE6IHJldHVybiBcIk9wZXJhdGlvbiBpcyB1bnNhZmUuXCI7XG4gICAgY2FzZSAxMDI6IHJldHVybiBcIlVzZXItZGVmaW5lZDogezB9XCI7XG4gICAgY2FzZSAyMDA6IHJldHVybiBcIkNvbnZlcnNpb24gZnJvbSB0eXBlICd7MH0nIHRvICd7MX0nIHJlcXVpcmVzIGFuIGV4cGxpY2l0IGNhc3QuXCI7XG4gICAgY2FzZSAyMDE6IHJldHVybiBcIkNvbnZlcnNpb24gZnJvbSB0eXBlICd7MH0nIHRvICd7MX0nIHdpbGwgcmVxdWlyZSBhbiBleHBsaWNpdCBjYXN0IHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gMzIvNjQtYml0LlwiO1xuICAgIGNhc2UgMjAyOiByZXR1cm4gXCJUeXBlICd7MH0nIGNhbm5vdCBiZSBjaGFuZ2VkIHRvIHR5cGUgJ3sxfScuXCI7XG4gICAgY2FzZSAyMDM6IHJldHVybiBcIlR5cGUgJ3swfScgY2Fubm90IGJlIHJlaW50ZXJwcmV0ZWQgYXMgdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIwNDogcmV0dXJuIFwiQmFzaWMgdHlwZSAnezB9JyBjYW5ub3QgYmUgbnVsbGFibGUuXCI7XG4gICAgY2FzZSAyMDU6IHJldHVybiBcIkNhbm5vdCBleHBvcnQgYSBtdXRhYmxlIGdsb2JhbC5cIjtcbiAgICBjYXNlIDIwNjogcmV0dXJuIFwiTXV0YWJsZSB2YWx1ZSBjYW5ub3QgYmUgaW5saW5lZC5cIjtcbiAgICBjYXNlIDIwNzogcmV0dXJuIFwiVW5tYW5hZ2VkIGNsYXNzZXMgY2Fubm90IGV4dGVuZCBtYW5hZ2VkIGNsYXNzZXMgYW5kIHZpY2UtdmVyc2EuXCI7XG4gICAgY2FzZSAyMDg6IHJldHVybiBcIlVubWFuYWdlZCBjbGFzc2VzIGNhbm5vdCBpbXBsZW1lbnQgaW50ZXJmYWNlcy5cIjtcbiAgICBjYXNlIDIwOTogcmV0dXJuIFwiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZ3MuXCI7XG4gICAgY2FzZSAyMTA6IHJldHVybiBcIkltcGxlbWVudGF0aW9uICd7MH0nIG11c3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIxMTogcmV0dXJuIFwiQ2xhc3MgJ3swfScgaXMgc2VhbGVkIGFuZCBjYW5ub3QgYmUgZXh0ZW5kZWQuXCI7XG4gICAgY2FzZSAyMTI6IHJldHVybiBcIkRlY29yYXRvciAnezB9JyBpcyBub3QgdmFsaWQgaGVyZS5cIjtcbiAgICBjYXNlIDIxMzogcmV0dXJuIFwiRHVwbGljYXRlIGRlY29yYXRvci5cIjtcbiAgICBjYXNlIDIxNDogcmV0dXJuIFwiQW4gYWxsb2NhdG9yIG11c3QgYmUgcHJlc2VudCB0byB1c2UgJ3swfScuXCI7XG4gICAgY2FzZSAyMTU6IHJldHVybiBcIk9wdGlvbmFsIHBhcmFtZXRlciBtdXN0IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCI7XG4gICAgY2FzZSAyMTY6IHJldHVybiBcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIG11c3Qgbm90IHJlcXVpcmUgYW55IGFyZ3VtZW50cy5cIjtcbiAgICBjYXNlIDIxNzogcmV0dXJuIFwiRnVuY3Rpb24gJ3swfScgY2Fubm90IGJlIGlubGluZWQgaW50byBpdHNlbGYuXCI7XG4gICAgY2FzZSAyMTg6IHJldHVybiBcIkNhbm5vdCBhY2Nlc3MgbWV0aG9kICd7MH0nIHdpdGhvdXQgY2FsbGluZyBpdCBhcyBpdCByZXF1aXJlcyAndGhpcycgdG8gYmUgc2V0LlwiO1xuICAgIGNhc2UgMjE5OiByZXR1cm4gXCJPcHRpb25hbCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xuICAgIGNhc2UgMjIwOiByZXR1cm4gXCJFeHByZXNzaW9uIG11c3QgYmUgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuXCI7XG4gICAgY2FzZSAyMjE6IHJldHVybiBcIk1vZHVsZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBzdGFydCBmdW5jdGlvbnMuXCI7XG4gICAgY2FzZSAyMjI6IHJldHVybiBcIid7MH0nIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuICd7MX0nIGFuZCAnezJ9JyBpbmNsdXNpdmUuXCI7XG4gICAgY2FzZSAyMjM6IHJldHVybiBcIid7MH0nIG11c3QgYmUgYSBwb3dlciBvZiB0d28uXCI7XG4gICAgY2FzZSAyMjQ6IHJldHVybiBcIkV4cHJlc3Npb24gaXMgdW5zYWZlLlwiO1xuICAgIGNhc2UgMjI1OiByZXR1cm4gXCJFeHByZXNzaW9uIGlzIG5ldmVyICdudWxsJy5cIjtcbiAgICBjYXNlIDEwMDI6IHJldHVybiBcIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbC5cIjtcbiAgICBjYXNlIDEwMDM6IHJldHVybiBcIklkZW50aWZpZXIgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMDA1OiByZXR1cm4gXCInezB9JyBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDEwMDY6IHJldHVybiBcIkEgZmlsZSBjYW5ub3QgaGF2ZSBhIHJlZmVyZW5jZSB0byBpdHNlbGYuXCI7XG4gICAgY2FzZSAxMDA5OiByZXR1cm4gXCJUcmFpbGluZyBjb21tYSBub3QgYWxsb3dlZC5cIjtcbiAgICBjYXNlIDEwMTI6IHJldHVybiBcIlVuZXhwZWN0ZWQgdG9rZW4uXCI7XG4gICAgY2FzZSAxMDE0OiByZXR1cm4gXCJBIHJlc3QgcGFyYW1ldGVyIG11c3QgYmUgbGFzdCBpbiBhIHBhcmFtZXRlciBsaXN0LlwiO1xuICAgIGNhc2UgMTAxNTogcmV0dXJuIFwiUGFyYW1ldGVyIGNhbm5vdCBoYXZlIHF1ZXN0aW9uIG1hcmsgYW5kIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTAxNjogcmV0dXJuIFwiQSByZXF1aXJlZCBwYXJhbWV0ZXIgY2Fubm90IGZvbGxvdyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuXCI7XG4gICAgY2FzZSAxMDM2OiByZXR1cm4gXCJTdGF0ZW1lbnRzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiO1xuICAgIGNhc2UgMTAzOTogcmV0dXJuIFwiSW5pdGlhbGl6ZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiO1xuICAgIGNhc2UgMTA0MjogcmV0dXJuIFwiJ3swfScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgaGVyZS5cIjtcbiAgICBjYXNlIDEwNDc6IHJldHVybiBcIkEgcmVzdCBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsLlwiO1xuICAgIGNhc2UgMTA0ODogcmV0dXJuIFwiQSByZXN0IHBhcmFtZXRlciBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplci5cIjtcbiAgICBjYXNlIDEwNDk6IHJldHVybiBcIkEgJ3NldCcgYWNjZXNzb3IgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlci5cIjtcbiAgICBjYXNlIDEwNTI6IHJldHVybiBcIkEgJ3NldCcgYWNjZXNzb3IgcGFyYW1ldGVyIGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTA1NDogcmV0dXJuIFwiQSAnZ2V0JyBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzLlwiO1xuICAgIGNhc2UgMTA2MTogcmV0dXJuIFwiRW51bSBtZW1iZXIgbXVzdCBoYXZlIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTA5MjogcmV0dXJuIFwiVHlwZSBwYXJhbWV0ZXJzIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5cIjtcbiAgICBjYXNlIDEwOTM6IHJldHVybiBcIlR5cGUgYW5ub3RhdGlvbiBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uXCI7XG4gICAgY2FzZSAxMDk0OiByZXR1cm4gXCJBbiBhY2Nlc3NvciBjYW5ub3QgaGF2ZSB0eXBlIHBhcmFtZXRlcnMuXCI7XG4gICAgY2FzZSAxMDk1OiByZXR1cm4gXCJBICdzZXQnIGFjY2Vzc29yIGNhbm5vdCBoYXZlIGEgcmV0dXJuIHR5cGUgYW5ub3RhdGlvbi5cIjtcbiAgICBjYXNlIDEwOTg6IHJldHVybiBcIlR5cGUgcGFyYW1ldGVyIGxpc3QgY2Fubm90IGJlIGVtcHR5LlwiO1xuICAgIGNhc2UgMTEwNDogcmV0dXJuIFwiQSAnY29udGludWUnIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIHN0YXRlbWVudC5cIjtcbiAgICBjYXNlIDExMDU6IHJldHVybiBcIkEgJ2JyZWFrJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYW4gZW5jbG9zaW5nIGl0ZXJhdGlvbiBvciBzd2l0Y2ggc3RhdGVtZW50LlwiO1xuICAgIGNhc2UgMTEwODogcmV0dXJuIFwiQSAncmV0dXJuJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYSBmdW5jdGlvbiBib2R5LlwiO1xuICAgIGNhc2UgMTEwOTogcmV0dXJuIFwiRXhwcmVzc2lvbiBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExMTA6IHJldHVybiBcIlR5cGUgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMTEzOiByZXR1cm4gXCJBICdkZWZhdWx0JyBjbGF1c2UgY2Fubm90IGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhICdzd2l0Y2gnIHN0YXRlbWVudC5cIjtcbiAgICBjYXNlIDExMTQ6IHJldHVybiBcIkR1cGxpY2F0ZSBsYWJlbCAnezB9Jy5cIjtcbiAgICBjYXNlIDExMjA6IHJldHVybiBcIkFuIGV4cG9ydCBhc3NpZ25tZW50IGNhbm5vdCBoYXZlIG1vZGlmaWVycy5cIjtcbiAgICBjYXNlIDExMjE6IHJldHVybiBcIk9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS5cIjtcbiAgICBjYXNlIDExMjQ6IHJldHVybiBcIkRpZ2l0IGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTEyNTogcmV0dXJuIFwiSGV4YWRlY2ltYWwgZGlnaXQgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMTI2OiByZXR1cm4gXCJVbmV4cGVjdGVkIGVuZCBvZiB0ZXh0LlwiO1xuICAgIGNhc2UgMTEyNzogcmV0dXJuIFwiSW52YWxpZCBjaGFyYWN0ZXIuXCI7XG4gICAgY2FzZSAxMTMwOiByZXR1cm4gXCInY2FzZScgb3IgJ2RlZmF1bHQnIGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTAzNDogcmV0dXJuIFwiJ3N1cGVyJyBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFuIGFyZ3VtZW50IGxpc3Qgb3IgbWVtYmVyIGFjY2Vzcy5cIjtcbiAgICBjYXNlIDEwMzg6IHJldHVybiBcIkEgJ2RlY2xhcmUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIGluIGFuIGFscmVhZHkgYW1iaWVudCBjb250ZXh0LlwiO1xuICAgIGNhc2UgMTE0MDogcmV0dXJuIFwiVHlwZSBhcmd1bWVudCBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNDE6IHJldHVybiBcIlN0cmluZyBsaXRlcmFsIGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTE0MjogcmV0dXJuIFwiTGluZSBicmVhayBub3QgcGVybWl0dGVkIGhlcmUuXCI7XG4gICAgY2FzZSAxMTQ2OiByZXR1cm4gXCJEZWNsYXJhdGlvbiBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNTU6IHJldHVybiBcIidjb25zdCcgZGVjbGFyYXRpb25zIG11c3QgYmUgaW5pdGlhbGl6ZWQuXCI7XG4gICAgY2FzZSAxMTYxOiByZXR1cm4gXCJVbnRlcm1pbmF0ZWQgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwuXCI7XG4gICAgY2FzZSAxMTc2OiByZXR1cm4gXCJJbnRlcmZhY2UgZGVjbGFyYXRpb24gY2Fubm90IGhhdmUgJ2ltcGxlbWVudHMnIGNsYXVzZS5cIjtcbiAgICBjYXNlIDExNzc6IHJldHVybiBcIkJpbmFyeSBkaWdpdCBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNzg6IHJldHVybiBcIk9jdGFsIGRpZ2l0IGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTE4MzogcmV0dXJuIFwiQW4gaW1wbGVtZW50YXRpb24gY2Fubm90IGJlIGRlY2xhcmVkIGluIGFtYmllbnQgY29udGV4dHMuXCI7XG4gICAgY2FzZSAxMTk4OiByZXR1cm4gXCJBbiBleHRlbmRlZCBVbmljb2RlIGVzY2FwZSB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMHgwIGFuZCAweDEwRkZGRiBpbmNsdXNpdmUuXCI7XG4gICAgY2FzZSAxMTk5OiByZXR1cm4gXCJVbnRlcm1pbmF0ZWQgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UuXCI7XG4gICAgY2FzZSAxMjA2OiByZXR1cm4gXCJEZWNvcmF0b3JzIGFyZSBub3QgdmFsaWQgaGVyZS5cIjtcbiAgICBjYXNlIDEyNDI6IHJldHVybiBcIidhYnN0cmFjdCcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgY2xhc3MsIG1ldGhvZCwgb3IgcHJvcGVydHkgZGVjbGFyYXRpb24uXCI7XG4gICAgY2FzZSAxMjQ1OiByZXR1cm4gXCJNZXRob2QgJ3swfScgY2Fubm90IGhhdmUgYW4gaW1wbGVtZW50YXRpb24gYmVjYXVzZSBpdCBpcyBtYXJrZWQgYWJzdHJhY3QuXCI7XG4gICAgY2FzZSAxMjU1OiByZXR1cm4gXCJBIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9uICchJyBpcyBub3QgcGVybWl0dGVkIGluIHRoaXMgY29udGV4dC5cIjtcbiAgICBjYXNlIDEzMTE6IHJldHVybiBcIkEgY2xhc3MgbWF5IG9ubHkgZXh0ZW5kIGFub3RoZXIgY2xhc3MuXCI7XG4gICAgY2FzZSAxMzE3OiByZXR1cm4gXCJBIHBhcmFtZXRlciBwcm9wZXJ0eSBjYW5ub3QgYmUgZGVjbGFyZWQgdXNpbmcgYSByZXN0IHBhcmFtZXRlci5cIjtcbiAgICBjYXNlIDIzMDA6IHJldHVybiBcIkR1cGxpY2F0ZSBpZGVudGlmaWVyICd7MH0nLlwiO1xuICAgIGNhc2UgMjMwNDogcmV0dXJuIFwiQ2Fubm90IGZpbmQgbmFtZSAnezB9Jy5cIjtcbiAgICBjYXNlIDIzMDU6IHJldHVybiBcIk1vZHVsZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiO1xuICAgIGNhc2UgMjMxNDogcmV0dXJuIFwiR2VuZXJpYyB0eXBlICd7MH0nIHJlcXVpcmVzIHsxfSB0eXBlIGFyZ3VtZW50KHMpLlwiO1xuICAgIGNhc2UgMjMxNTogcmV0dXJuIFwiVHlwZSAnezB9JyBpcyBub3QgZ2VuZXJpYy5cIjtcbiAgICBjYXNlIDIzMjI6IHJldHVybiBcIlR5cGUgJ3swfScgaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIzMjk6IHJldHVybiBcIkluZGV4IHNpZ25hdHVyZSBpcyBtaXNzaW5nIGluIHR5cGUgJ3swfScuXCI7XG4gICAgY2FzZSAyMzMyOiByZXR1cm4gXCIndGhpcycgY2Fubm90IGJlIHJlZmVyZW5jZWQgaW4gY3VycmVudCBsb2NhdGlvbi5cIjtcbiAgICBjYXNlIDIzMzU6IHJldHVybiBcIidzdXBlcicgY2FuIG9ubHkgYmUgcmVmZXJlbmNlZCBpbiBhIGRlcml2ZWQgY2xhc3MuXCI7XG4gICAgY2FzZSAyMzM3OiByZXR1cm4gXCJTdXBlciBjYWxscyBhcmUgbm90IHBlcm1pdHRlZCBvdXRzaWRlIGNvbnN0cnVjdG9ycyBvciBpbiBuZXN0ZWQgZnVuY3Rpb25zIGluc2lkZSBjb25zdHJ1Y3RvcnMuXCI7XG4gICAgY2FzZSAyMzM5OiByZXR1cm4gXCJQcm9wZXJ0eSAnezB9JyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICd7MX0nLlwiO1xuICAgIGNhc2UgMjM0OTogcmV0dXJuIFwiQ2Fubm90IGludm9rZSBhbiBleHByZXNzaW9uIHdob3NlIHR5cGUgbGFja3MgYSBjYWxsIHNpZ25hdHVyZS4gVHlwZSAnezB9JyBoYXMgbm8gY29tcGF0aWJsZSBjYWxsIHNpZ25hdHVyZXMuXCI7XG4gICAgY2FzZSAyMzUxOiByZXR1cm4gXCJDYW5ub3QgdXNlICduZXcnIHdpdGggYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBlIGxhY2tzIGEgY29uc3RydWN0IHNpZ25hdHVyZS5cIjtcbiAgICBjYXNlIDIzNTU6IHJldHVybiBcIkEgZnVuY3Rpb24gd2hvc2UgZGVjbGFyZWQgdHlwZSBpcyBub3QgJ3ZvaWQnIG11c3QgcmV0dXJuIGEgdmFsdWUuXCI7XG4gICAgY2FzZSAyMzU3OiByZXR1cm4gXCJUaGUgb3BlcmFuZCBvZiBhbiBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IG9wZXJhdG9yIG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIHByb3BlcnR5IGFjY2Vzcy5cIjtcbiAgICBjYXNlIDIzNjQ6IHJldHVybiBcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGV4cHJlc3Npb24gbXVzdCBiZSBhIHZhcmlhYmxlIG9yIGEgcHJvcGVydHkgYWNjZXNzLlwiO1xuICAgIGNhc2UgMjM2NTogcmV0dXJuIFwiT3BlcmF0b3IgJ3swfScgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZXMgJ3sxfScgYW5kICd7Mn0nLlwiO1xuICAgIGNhc2UgMjM3NjogcmV0dXJuIFwiQSAnc3VwZXInIGNhbGwgbXVzdCBiZSB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjb25zdHJ1Y3Rvci5cIjtcbiAgICBjYXNlIDIzNzc6IHJldHVybiBcIkNvbnN0cnVjdG9ycyBmb3IgZGVyaXZlZCBjbGFzc2VzIG11c3QgY29udGFpbiBhICdzdXBlcicgY2FsbC5cIjtcbiAgICBjYXNlIDIzODA6IHJldHVybiBcIidnZXQnIGFuZCAnc2V0JyBhY2Nlc3NvciBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZS5cIjtcbiAgICBjYXNlIDIzOTA6IHJldHVybiBcIkNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uIGlzIG1pc3NpbmcuXCI7XG4gICAgY2FzZSAyMzkxOiByZXR1cm4gXCJGdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBpcyBtaXNzaW5nIG9yIG5vdCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIGRlY2xhcmF0aW9uLlwiO1xuICAgIGNhc2UgMjM5MjogcmV0dXJuIFwiTXVsdGlwbGUgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25zIGFyZSBub3QgYWxsb3dlZC5cIjtcbiAgICBjYXNlIDIzOTM6IHJldHVybiBcIkR1cGxpY2F0ZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi5cIjtcbiAgICBjYXNlIDIzOTU6IHJldHVybiBcIkluZGl2aWR1YWwgZGVjbGFyYXRpb25zIGluIG1lcmdlZCBkZWNsYXJhdGlvbiAnezB9JyBtdXN0IGJlIGFsbCBleHBvcnRlZCBvciBhbGwgbG9jYWwuXCI7XG4gICAgY2FzZSAyNDM0OiByZXR1cm4gXCJBIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiBjYW5ub3QgYmUgbG9jYXRlZCBwcmlvciB0byBhIGNsYXNzIG9yIGZ1bmN0aW9uIHdpdGggd2hpY2ggaXQgaXMgbWVyZ2VkLlwiO1xuICAgIGNhc2UgMjQ2MDogcmV0dXJuIFwiVHlwZSAnezB9JyBoYXMgbm8gcHJvcGVydHkgJ3sxfScuXCI7XG4gICAgY2FzZSAyNDY5OiByZXR1cm4gXCJUaGUgJ3swfScgb3BlcmF0b3IgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDI0NzQ6IHJldHVybiBcIkluICdjb25zdCcgZW51bSBkZWNsYXJhdGlvbnMgbWVtYmVyIGluaXRpYWxpemVyIG11c3QgYmUgY29uc3RhbnQgZXhwcmVzc2lvbi5cIjtcbiAgICBjYXNlIDI0ODQ6IHJldHVybiBcIkV4cG9ydCBkZWNsYXJhdGlvbiBjb25mbGljdHMgd2l0aCBleHBvcnRlZCBkZWNsYXJhdGlvbiBvZiAnezB9Jy5cIjtcbiAgICBjYXNlIDI1MzE6IHJldHVybiBcIk9iamVjdCBpcyBwb3NzaWJseSAnbnVsbCcuXCI7XG4gICAgY2FzZSAyNTQwOiByZXR1cm4gXCJDYW5ub3QgYXNzaWduIHRvICd7MH0nIGJlY2F1c2UgaXQgaXMgYSBjb25zdGFudCBvciBhIHJlYWQtb25seSBwcm9wZXJ0eS5cIjtcbiAgICBjYXNlIDI1NDE6IHJldHVybiBcIlRoZSB0YXJnZXQgb2YgYW4gYXNzaWdubWVudCBtdXN0IGJlIGEgdmFyaWFibGUgb3IgYSBwcm9wZXJ0eSBhY2Nlc3MuXCI7XG4gICAgY2FzZSAyNTQyOiByZXR1cm4gXCJJbmRleCBzaWduYXR1cmUgaW4gdHlwZSAnezB9JyBvbmx5IHBlcm1pdHMgcmVhZGluZy5cIjtcbiAgICBjYXNlIDI1NTQ6IHJldHVybiBcIkV4cGVjdGVkIHswfSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiO1xuICAgIGNhc2UgMjU1NTogcmV0dXJuIFwiRXhwZWN0ZWQgYXQgbGVhc3QgezB9IGFyZ3VtZW50cywgYnV0IGdvdCB7MX0uXCI7XG4gICAgY2FzZSAyNTU4OiByZXR1cm4gXCJFeHBlY3RlZCB7MH0gdHlwZSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiO1xuICAgIGNhc2UgMjY1MTogcmV0dXJuIFwiQSBtZW1iZXIgaW5pdGlhbGl6ZXIgaW4gYSBlbnVtIGRlY2xhcmF0aW9uIGNhbm5vdCByZWZlcmVuY2UgbWVtYmVycyBkZWNsYXJlZCBhZnRlciBpdCwgaW5jbHVkaW5nIG1lbWJlcnMgZGVmaW5lZCBpbiBvdGhlciBlbnVtcy5cIjtcbiAgICBjYXNlIDI2NzM6IHJldHVybiBcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNsYXNzIGRlY2xhcmF0aW9uLlwiO1xuICAgIGNhc2UgMjY3NDogcmV0dXJuIFwiQ29uc3RydWN0b3Igb2YgY2xhc3MgJ3swfScgaXMgcHJvdGVjdGVkIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIHRoZSBjbGFzcyBkZWNsYXJhdGlvbi5cIjtcbiAgICBjYXNlIDI2OTQ6IHJldHVybiBcIk5hbWVzcGFjZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiO1xuICAgIGNhc2UgMjcwNjogcmV0dXJuIFwiUmVxdWlyZWQgdHlwZSBwYXJhbWV0ZXJzIG1heSBub3QgZm9sbG93IG9wdGlvbmFsIHR5cGUgcGFyYW1ldGVycy5cIjtcbiAgICBjYXNlIDI3MTg6IHJldHVybiBcIkR1cGxpY2F0ZSBwcm9wZXJ0eSAnezB9Jy5cIjtcbiAgICBjYXNlIDI3NTc6IHJldHVybiBcIlR5cGUgJ3swfScgaGFzIG5vIGNhbGwgc2lnbmF0dXJlcy5cIjtcbiAgICBjYXNlIDYwNTQ6IHJldHVybiBcIkZpbGUgJ3swfScgbm90IGZvdW5kLlwiO1xuICAgIGNhc2UgNjE4ODogcmV0dXJuIFwiTnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgYWxsb3dlZCBoZXJlLlwiO1xuICAgIGNhc2UgNjE4OTogcmV0dXJuIFwiTXVsdGlwbGUgY29uc2VjdXRpdmUgbnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgcGVybWl0dGVkLlwiO1xuICAgIGNhc2UgMTcwMDk6IHJldHVybiBcIidzdXBlcicgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyAndGhpcycgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy5cIjtcbiAgICBjYXNlIDE3MDExOiByZXR1cm4gXCInc3VwZXInIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSBvZiAnc3VwZXInIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuXCI7XG4gICAgZGVmYXVsdDogcmV0dXJuIFwiXCI7XG4gIH1cbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/diagnostics.ts": -/*!*****************************!*\ - !*** ../src/diagnostics.ts ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Shared diagnostic handling inherited by the parser and the compiler. - * @module diagnostics - * @preferred - */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -var diagnosticMessages_generated_1 = __webpack_require__(/*! ./diagnosticMessages.generated */ "../src/diagnosticMessages.generated.ts"); -var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); -var diagnosticMessages_generated_2 = __webpack_require__(/*! ./diagnosticMessages.generated */ "../src/diagnosticMessages.generated.ts"); -exports.DiagnosticCode = diagnosticMessages_generated_2.DiagnosticCode; -exports.diagnosticCodeToString = diagnosticMessages_generated_2.diagnosticCodeToString; -/** Indicates the category of a {@link DiagnosticMessage}. */ -var DiagnosticCategory; -(function (DiagnosticCategory) { - /** Informatory message. */ - DiagnosticCategory[DiagnosticCategory["INFO"] = 0] = "INFO"; - /** Warning message. */ - DiagnosticCategory[DiagnosticCategory["WARNING"] = 1] = "WARNING"; - /** Error message. */ - DiagnosticCategory[DiagnosticCategory["ERROR"] = 2] = "ERROR"; -})(DiagnosticCategory = exports.DiagnosticCategory || (exports.DiagnosticCategory = {})); -/** Returns the string representation of the specified diagnostic category. */ -function diagnosticCategoryToString(category) { - switch (category) { - case DiagnosticCategory.INFO: return "INFO"; - case DiagnosticCategory.WARNING: return "WARNING"; - case DiagnosticCategory.ERROR: return "ERROR"; - default: { - assert(false); - return ""; - } - } -} -exports.diagnosticCategoryToString = diagnosticCategoryToString; -/** ANSI escape sequence for blue foreground. */ -exports.COLOR_BLUE = "\u001b[96m"; -/** ANSI escape sequence for yellow foreground. */ -exports.COLOR_YELLOW = "\u001b[93m"; -/** ANSI escape sequence for red foreground. */ -exports.COLOR_RED = "\u001b[91m"; -/** ANSI escape sequence to reset the foreground color. */ -exports.COLOR_RESET = "\u001b[0m"; -/** Returns the ANSI escape sequence for the specified category. */ -function diagnosticCategoryToColor(category) { - switch (category) { - case DiagnosticCategory.INFO: return exports.COLOR_BLUE; - case DiagnosticCategory.WARNING: return exports.COLOR_YELLOW; - case DiagnosticCategory.ERROR: return exports.COLOR_RED; - default: { - assert(false); - return ""; - } - } -} -exports.diagnosticCategoryToColor = diagnosticCategoryToColor; -/** Represents a diagnostic message. */ -var DiagnosticMessage = /** @class */ (function () { - /** Constructs a new diagnostic message. */ - function DiagnosticMessage(code, category, message) { - /** Respective source range, if any. */ - this.range = null; - /** Related range, if any. */ - this.relatedRange = null; - this.code = code; - this.category = category; - this.message = message; - } - /** Creates a new diagnostic message of the specified category. */ - DiagnosticMessage.create = function (code, category, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - var message = diagnosticMessages_generated_1.diagnosticCodeToString(code); - if (arg0 != null) - message = message.replace("{0}", arg0); - if (arg1 != null) - message = message.replace("{1}", arg1); - if (arg2 != null) - message = message.replace("{2}", arg2); - return new DiagnosticMessage(code, category, message); - }; - /** Creates a new informatory diagnostic message. */ - DiagnosticMessage.createInfo = function (code, arg0, arg1) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - return DiagnosticMessage.create(code, DiagnosticCategory.INFO, arg0, arg1); - }; - /** Creates a new warning diagnostic message. */ - DiagnosticMessage.createWarning = function (code, arg0, arg1) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - return DiagnosticMessage.create(code, DiagnosticCategory.WARNING, arg0, arg1); - }; - /** Creates a new error diagnostic message. */ - DiagnosticMessage.createError = function (code, arg0, arg1) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - return DiagnosticMessage.create(code, DiagnosticCategory.ERROR, arg0, arg1); - }; - /** Adds a source range to this message. */ - DiagnosticMessage.prototype.withRange = function (range) { - this.range = range; - return this; - }; - /** Adds a related source range to this message. */ - DiagnosticMessage.prototype.withRelatedRange = function (range) { - this.relatedRange = range; - return this; - }; - /** Converts this message to a string. */ - DiagnosticMessage.prototype.toString = function () { - if (this.range) { - return (diagnosticCategoryToString(this.category) + - " " + - this.code.toString(10) + - ": \"" + - this.message + - "\" in " + - this.range.source.normalizedPath + - ":" + - this.range.line.toString(10) + - ":" + - this.range.column.toString(10)); - } - return (diagnosticCategoryToString(this.category) + - " " + - this.code.toString(10) + - ": " + - this.message); - }; - return DiagnosticMessage; -}()); -exports.DiagnosticMessage = DiagnosticMessage; -/** Formats a diagnostic message, optionally with terminal colors and source context. */ -function formatDiagnosticMessage(message, useColors, showContext) { - if (useColors === void 0) { useColors = false; } - if (showContext === void 0) { showContext = false; } - // general information - var sb = []; - if (useColors) - sb.push(diagnosticCategoryToColor(message.category)); - sb.push(diagnosticCategoryToString(message.category)); - if (useColors) - sb.push(exports.COLOR_RESET); - sb.push(message.code < 1000 ? " AS" : " TS"); - sb.push(message.code.toString(10)); - sb.push(": "); - sb.push(message.message); - // include range information if available - if (message.range) { - // include context information if requested - var range = message.range; - if (showContext) { - sb.push("\n"); - sb.push(formatDiagnosticContext(range, useColors)); - } - sb.push("\n"); - sb.push(" in "); - sb.push(range.source.normalizedPath); - sb.push("("); - sb.push(range.line.toString(10)); - sb.push(","); - sb.push(range.column.toString(10)); - sb.push(")"); - var relatedRange = message.relatedRange; - if (relatedRange) { - if (showContext) { - sb.push("\n"); - sb.push(formatDiagnosticContext(relatedRange, useColors)); - } - sb.push("\n"); - sb.push(" in "); - sb.push(range.source.normalizedPath); - sb.push("("); - sb.push(range.line.toString(10)); - sb.push(","); - sb.push(range.column.toString(10)); - sb.push(")"); - } - } - return sb.join(""); -} -exports.formatDiagnosticMessage = formatDiagnosticMessage; -/** Formats the diagnostic context for the specified range, optionally with terminal colors. */ -function formatDiagnosticContext(range, useColors) { - if (useColors === void 0) { useColors = false; } - var text = range.source.text; - var len = text.length; - var start = range.start; - var end = range.end; - while (start > 0 && !util_1.isLineBreak(text.charCodeAt(start - 1))) - start--; - while (end < len && !util_1.isLineBreak(text.charCodeAt(end))) - end++; - var sb = [ - "\n ", - text.substring(start, end), - "\n " - ]; - while (start < range.start) { - sb.push(" "); - start++; - } - if (useColors) - sb.push(exports.COLOR_RED); - if (range.start == range.end) { - sb.push("^"); - } - else { - while (start++ < range.end) { - if (util_1.isLineBreak(text.charCodeAt(start))) { - sb.push(start == range.start + 1 ? "^" : "~"); - break; - } - sb.push("~"); - } - } - if (useColors) - sb.push(exports.COLOR_RESET); - return sb.join(""); -} -exports.formatDiagnosticContext = formatDiagnosticContext; -/** Base class of all diagnostic emitters. */ -var DiagnosticEmitter = /** @class */ (function () { - /** Initializes this diagnostic emitter. */ - function DiagnosticEmitter(diagnostics) { - if (diagnostics === void 0) { diagnostics = null; } - this.diagnostics = diagnostics ? diagnostics : new Array(); - } - /** Emits a diagnostic message of the specified category. */ - DiagnosticEmitter.prototype.emitDiagnostic = function (code, category, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - var message = DiagnosticMessage.create(code, category, arg0, arg1, arg2).withRange(range); - if (relatedRange) - message.relatedRange = relatedRange; - this.diagnostics.push(message); - // console.log(formatDiagnosticMessage(message, true, true) + "\n"); // temporary - // console.log(new Error("stack").stack); - }; - /** Emits an informatory diagnostic message. */ - DiagnosticEmitter.prototype.info = function (code, range, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.INFO, range, null, arg0, arg1, arg2); - }; - /** Emits an informatory diagnostic message with a related range. */ - DiagnosticEmitter.prototype.infoRelated = function (code, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.INFO, range, relatedRange, arg0, arg1, arg2); - }; - /** Emits a warning diagnostic message. */ - DiagnosticEmitter.prototype.warning = function (code, range, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, null, arg0, arg1, arg2); - }; - /** Emits a warning diagnostic message with a related range. */ - DiagnosticEmitter.prototype.warningRelated = function (code, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, relatedRange, arg0, arg1, arg2); - }; - /** Emits an error diagnostic message. */ - DiagnosticEmitter.prototype.error = function (code, range, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, null, arg0, arg1, arg2); - }; - /** Emits an error diagnostic message with a related range. */ - DiagnosticEmitter.prototype.errorRelated = function (code, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, relatedRange, arg0, arg1, arg2); - }; - return DiagnosticEmitter; -}()); -exports.DiagnosticEmitter = DiagnosticEmitter; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlhZ25vc3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUcsQ0FBQSxLQUFLOztBQU1SLCtFQUd3QztBQUV4QywrQkFFZ0I7QUFFaEIsK0VBR3dDO0FBRnRDLHdEQUFBLGNBQWMsQ0FBQTtBQUNkLGdFQUFBLHNCQUFzQixDQUFBO0FBR3hCLDZEQUE2RDtBQUM3RCxJQUFZLGtCQU9YO0FBUEQsV0FBWSxrQkFBa0I7SUFDNUIsMkJBQTJCO0lBQzNCLDJEQUFJLENBQUE7SUFDSix1QkFBdUI7SUFDdkIsaUVBQU8sQ0FBQTtJQUNQLHFCQUFxQjtJQUNyQiw2REFBSyxDQUFBO0FBQ1AsQ0FBQyxFQVBXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBTzdCO0FBRUQsOEVBQThFO0FBQzlFLFNBQWdCLDBCQUEwQixDQUFDLFFBQTRCO0lBQ3JFLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUM7UUFDNUMsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQztRQUNsRCxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxDQUFDO1lBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDtLQUNGO0FBQ0gsQ0FBQztBQVZELGdFQVVDO0FBRUQsZ0RBQWdEO0FBQ25DLFFBQUEsVUFBVSxHQUFXLFlBQVksQ0FBQztBQUMvQyxrREFBa0Q7QUFDckMsUUFBQSxZQUFZLEdBQVcsWUFBWSxDQUFDO0FBQ2pELCtDQUErQztBQUNsQyxRQUFBLFNBQVMsR0FBVyxZQUFZLENBQUM7QUFDOUMsMERBQTBEO0FBQzdDLFFBQUEsV0FBVyxH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SSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUEvRkQsSUErRkM7QUEvRnFCLDhDQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIGRpYWdub3N0aWMgaGFuZGxpbmcgaW5oZXJpdGVkIGJ5IHRoZSBwYXJzZXIgYW5kIHRoZSBjb21waWxlci5cbiAqIEBtb2R1bGUgZGlhZ25vc3RpY3NcbiAqIEBwcmVmZXJyZWRcbiAqLy8qKiovXG5cbmltcG9ydCB7XG4gIFJhbmdlXG59IGZyb20gXCIuL2FzdFwiO1xuXG5pbXBvcnQge1xuICBEaWFnbm9zdGljQ29kZSxcbiAgZGlhZ25vc3RpY0NvZGVUb1N0cmluZ1xufSBmcm9tIFwiLi9kaWFnbm9zdGljTWVzc2FnZXMuZ2VuZXJhdGVkXCI7XG5cbmltcG9ydCB7XG4gIGlzTGluZUJyZWFrLCBDaGFyQ29kZVxufSBmcm9tIFwiLi91dGlsXCI7XG5cbmV4cG9ydCB7XG4gIERpYWdub3N0aWNDb2RlLFxuICBkaWFnbm9zdGljQ29kZVRvU3RyaW5nXG59IGZyb20gXCIuL2RpYWdub3N0aWNNZXNzYWdlcy5nZW5lcmF0ZWRcIjtcblxuLyoqIEluZGljYXRlcyB0aGUgY2F0ZWdvcnkgb2YgYSB7QGxpbmsgRGlhZ25vc3RpY01lc3NhZ2V9LiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0NhdGVnb3J5IHtcbiAgLyoqIEluZm9ybWF0b3J5IG1lc3NhZ2UuICovXG4gIElORk8sXG4gIC8qKiBXYXJuaW5nIG1lc3NhZ2UuICovXG4gIFdBUk5JTkcsXG4gIC8qKiBFcnJvciBtZXNzYWdlLiAqL1xuICBFUlJPUlxufVxuXG4vKiogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgZGlhZ25vc3RpYyBjYXRlZ29yeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFnbm9zdGljQ2F0ZWdvcnlUb1N0cmluZyhjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5KTogc3RyaW5nIHtcbiAgc3dpdGNoIChjYXRlZ29yeSkge1xuICAgIGNhc2UgRGlhZ25vc3RpY0NhdGVnb3J5LklORk86IHJldHVybiBcIklORk9cIjtcbiAgICBjYXNlIERpYWdub3N0aWNDYXRlZ29yeS5XQVJOSU5HOiByZXR1cm4gXCJXQVJOSU5HXCI7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuRVJST1I6IHJldHVybiBcIkVSUk9SXCI7XG4gICAgZGVmYXVsdDoge1xuICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfVxufVxuXG4vKiogQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIGJsdWUgZm9yZWdyb3VuZC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9CTFVFOiBzdHJpbmcgPSBcIlxcdTAwMWJbOTZtXCI7XG4vKiogQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIHllbGxvdyBmb3JlZ3JvdW5kLiAqL1xuZXhwb3J0IGNvbnN0IENPTE9SX1lFTExPVzogc3RyaW5nID0gXCJcXHUwMDFiWzkzbVwiO1xuLyoqIEFOU0kgZXNjYXBlIHNlcXVlbmNlIGZvciByZWQgZm9yZWdyb3VuZC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9SRUQ6IHN0cmluZyA9IFwiXFx1MDAxYls5MW1cIjtcbi8qKiBBTlNJIGVzY2FwZSBzZXF1ZW5jZSB0byByZXNldCB0aGUgZm9yZWdyb3VuZCBjb2xvci4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9SRVNFVDogc3RyaW5nID0gXCJcXHUwMDFiWzBtXCI7XG5cbi8qKiBSZXR1cm5zIHRoZSBBTlNJIGVzY2FwZSBzZXF1ZW5jZSBmb3IgdGhlIHNwZWNpZmllZCBjYXRlZ29yeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFnbm9zdGljQ2F0ZWdvcnlUb0NvbG9yKGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnkpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNhdGVnb3J5KSB7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuSU5GTzogcmV0dXJuIENPTE9SX0JMVUU7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuV0FSTklORzogcmV0dXJuIENPTE9SX1lFTExPVztcbiAgICBjYXNlIERpYWdub3N0aWNDYXRlZ29yeS5FUlJPUjogcmV0dXJuIENPTE9SX1JFRDtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBhc3NlcnQoZmFsc2UpO1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlLiAqL1xuZXhwb3J0IGNsYXNzIERpYWdub3N0aWNNZXNzYWdlIHtcblxuICAvKiogTWVzc2FnZSBjb2RlLiAqL1xuICBjb2RlOiBpMzI7XG4gIC8qKiBNZXNzYWdlIGNhdGVnb3J5LiAqL1xuICBjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5O1xuICAvKiogTWVzc2FnZSB0ZXh0LiAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBSZXNwZWN0aXZlIHNvdXJjZSByYW5nZSwgaWYgYW55LiAqL1xuICByYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgLyoqIFJlbGF0ZWQgcmFuZ2UsIGlmIGFueS4gKi9cbiAgcmVsYXRlZFJhbmdlOiBSYW5nZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IGRpYWdub3N0aWMgbWVzc2FnZS4gKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihjb2RlOiBpMzIsIGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnksIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkaWFnbm9zdGljIG1lc3NhZ2Ugb2YgdGhlIHNwZWNpZmllZCBjYXRlZ29yeS4gKi9cbiAgc3RhdGljIGNyZWF0ZShcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5LFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERpYWdub3N0aWNNZXNzYWdlIHtcbiAgICB2YXIgbWVzc2FnZSA9IGRpYWdub3N0aWNDb2RlVG9TdHJpbmcoY29kZSk7XG4gICAgaWYgKGFyZzAgIT0gbnVsbCkgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShcInswfVwiLCBhcmcwKTtcbiAgICBpZiAoYXJnMSAhPSBudWxsKSBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFwiezF9XCIsIGFyZzEpO1xuICAgIGlmIChhcmcyICE9IG51bGwpIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoXCJ7Mn1cIiwgYXJnMik7XG4gICAgcmV0dXJuIG5ldyBEaWFnbm9zdGljTWVzc2FnZShjb2RlLCBjYXRlZ29yeSwgbWVzc2FnZSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHN0YXRpYyBjcmVhdGVJbmZvKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERpYWdub3N0aWNNZXNzYWdlIHtcbiAgICByZXR1cm4gRGlhZ25vc3RpY01lc3NhZ2UuY3JlYXRlKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5JTkZPLCBhcmcwLCBhcmcxKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IHdhcm5pbmcgZGlhZ25vc3RpYyBtZXNzYWdlLiAqL1xuICBzdGF0aWMgY3JlYXRlV2FybmluZyhcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBEaWFnbm9zdGljTWVzc2FnZSB7XG4gICAgcmV0dXJuIERpYWdub3N0aWNNZXNzYWdlLmNyZWF0ZShjb2RlLCBEaWFnbm9zdGljQ2F0ZWdvcnkuV0FSTklORywgYXJnMCwgYXJnMSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBlcnJvciBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHN0YXRpYyBjcmVhdGVFcnJvcihcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBEaWFnbm9zdGljTWVzc2FnZSB7XG4gICAgcmV0dXJuIERpYWdub3N0aWNNZXNzYWdlLmNyZWF0ZShjb2RlLCBEaWFnbm9zdGljQ2F0ZWdvcnkuRVJST1IsIGFyZzAsIGFyZzEpO1xuICB9XG5cbiAgLyoqIEFkZHMgYSBzb3VyY2UgcmFuZ2UgdG8gdGhpcyBtZXNzYWdlLiAqL1xuICB3aXRoUmFuZ2UocmFuZ2U6IFJhbmdlKTogdGhpcyB7XG4gICAgdGhpcy5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEFkZHMgYSByZWxhdGVkIHNvdXJjZSByYW5nZSB0byB0aGlzIG1lc3NhZ2UuICovXG4gIHdpdGhSZWxhdGVkUmFuZ2UocmFuZ2U6IFJhbmdlKTogdGhpcyB7XG4gICAgdGhpcy5yZWxhdGVkUmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBDb252ZXJ0cyB0aGlzIG1lc3NhZ2UgdG8gYSBzdHJpbmcuICovXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGRpYWdub3N0aWNDYXRlZ29yeVRvU3RyaW5nKHRoaXMuY2F0ZWdvcnkpICtcbiAgICAgICAgXCIgXCIgK1xuICAgICAgICB0aGlzLmNvZGUudG9TdHJpbmcoMTApICtcbiAgICAgICAgXCI6IFxcXCJcIiArXG4gICAgICAgIHRoaXMubWVzc2FnZSArXG4gICAgICAgIFwiXFxcIiBpbiBcIiArXG4gICAgICAgIHRoaXMucmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICB0aGlzLnJhbmdlLmxpbmUudG9TdHJpbmcoMTApICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICB0aGlzLnJhbmdlLmNvbHVtbi50b1N0cmluZygxMClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBkaWFnbm9zdGljQ2F0ZWdvcnlUb1N0cmluZyh0aGlzLmNhdGVnb3J5KSArXG4gICAgICBcIiBcIiArXG4gICAgICB0aGlzLmNvZGUudG9TdHJpbmcoMTApICtcbiAgICAgIFwiOiBcIiArXG4gICAgICB0aGlzLm1lc3NhZ2VcbiAgICApO1xuICB9XG59XG5cbi8qKiBGb3JtYXRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlLCBvcHRpb25hbGx5IHdpdGggdGVybWluYWwgY29sb3JzIGFuZCBzb3VyY2UgY29udGV4dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREaWFnbm9zdGljTWVzc2FnZShcbiAgbWVzc2FnZTogRGlhZ25vc3RpY01lc3NhZ2UsXG4gIHVzZUNvbG9yczogYm9vbCA9IGZhbHNlLFxuICBzaG93Q29udGV4dDogYm9vbCA9IGZhbHNlXG4pOiBzdHJpbmcge1xuXG4gIC8vIGdlbmVyYWwgaW5mb3JtYXRpb25cbiAgdmFyIHNiOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodXNlQ29sb3JzKSBzYi5wdXNoKGRpYWdub3N0aWNDYXRlZ29yeVRvQ29sb3IobWVzc2FnZS5jYXRlZ29yeSkpO1xuICBzYi5wdXNoKGRpYWdub3N0aWNDYXRlZ29yeVRvU3RyaW5nKG1lc3NhZ2UuY2F0ZWdvcnkpKTtcbiAgaWYgKHVzZUNvbG9ycykgc2IucHVzaChDT0xPUl9SRVNFVCk7XG4gIHNiLnB1c2gobWVzc2FnZS5jb2RlIDwgMTAwMCA/IFwiIEFTXCIgOiBcIiBUU1wiKTtcbiAgc2IucHVzaChtZXNzYWdlLmNvZGUudG9TdHJpbmcoMTApKTtcbiAgc2IucHVzaChcIjogXCIpO1xuICBzYi5wdXNoKG1lc3NhZ2UubWVzc2FnZSk7XG5cbiAgLy8gaW5jbHVkZSByYW5nZSBpbmZvcm1hdGlvbiBpZiBhdmFpbGFibGVcbiAgaWYgKG1lc3NhZ2UucmFuZ2UpIHtcblxuICAgIC8vIGluY2x1ZGUgY29udGV4dCBpbmZvcm1hdGlvbiBpZiByZXF1ZXN0ZWRcbiAgICBsZXQgcmFuZ2UgPSBtZXNzYWdlLnJhbmdlO1xuICAgIGlmIChzaG93Q29udGV4dCkge1xuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICAgIHNiLnB1c2goZm9ybWF0RGlhZ25vc3RpY0NvbnRleHQocmFuZ2UsIHVzZUNvbG9ycykpO1xuICAgIH1cbiAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgIHNiLnB1c2goXCIgaW4gXCIpO1xuICAgIHNiLnB1c2gocmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoKTtcbiAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICBzYi5wdXNoKHJhbmdlLmxpbmUudG9TdHJpbmcoMTApKTtcbiAgICBzYi5wdXNoKFwiLFwiKTtcbiAgICBzYi5wdXNoKHJhbmdlLmNvbHVtbi50b1N0cmluZygxMCkpO1xuICAgIHNiLnB1c2goXCIpXCIpO1xuXG4gICAgbGV0IHJlbGF0ZWRSYW5nZSA9IG1lc3NhZ2UucmVsYXRlZFJhbmdlO1xuICAgIGlmIChyZWxhdGVkUmFuZ2UpIHtcbiAgICAgIGlmIChzaG93Q29udGV4dCkge1xuICAgICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgICBzYi5wdXNoKGZvcm1hdERpYWdub3N0aWNDb250ZXh0KHJlbGF0ZWRSYW5nZSwgdXNlQ29sb3JzKSk7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgc2IucHVzaChcIiBpbiBcIik7XG4gICAgICBzYi5wdXNoKHJhbmdlLnNvdXJjZS5ub3JtYWxpemVkUGF0aCk7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICAgIHNiLnB1c2gocmFuZ2UubGluZS50b1N0cmluZygxMCkpO1xuICAgICAgc2IucHVzaChcIixcIik7XG4gICAgICBzYi5wdXNoKHJhbmdlLmNvbHVtbi50b1N0cmluZygxMCkpO1xuICAgICAgc2IucHVzaChcIilcIik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzYi5qb2luKFwiXCIpO1xufVxuXG4vKiogRm9ybWF0cyB0aGUgZGlhZ25vc3RpYyBjb250ZXh0IGZvciB0aGUgc3BlY2lmaWVkIHJhbmdlLCBvcHRpb25hbGx5IHdpdGggdGVybWluYWwgY29sb3JzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpYWdub3N0aWNDb250ZXh0KHJhbmdlOiBSYW5nZSwgdXNlQ29sb3JzOiBib29sID0gZmFsc2UpOiBzdHJpbmcge1xuICB2YXIgdGV4dCA9IHJhbmdlLnNvdXJjZS50ZXh0O1xuICB2YXIgbGVuID0gdGV4dC5sZW5ndGg7XG4gIHZhciBzdGFydCA9IHJhbmdlLnN0YXJ0O1xuICB2YXIgZW5kID0gcmFuZ2UuZW5kO1xuICB3aGlsZSAoc3RhcnQgPiAwICYmICFpc0xpbmVCcmVhayh0ZXh0LmNoYXJDb2RlQXQoc3RhcnQgLSAxKSkpIHN0YXJ0LS07XG4gIHdoaWxlIChlbmQgPCBsZW4gJiYgIWlzTGluZUJyZWFrKHRleHQuY2hhckNvZGVBdChlbmQpKSkgZW5kKys7XG4gIHZhciBzYjogc3RyaW5nW10gPSBbXG4gICAgXCJcXG4gXCIsXG4gICAgdGV4dC5zdWJzdHJpbmcoc3RhcnQsIGVuZCksXG4gICAgXCJcXG4gXCJcbiAgXTtcbiAgd2hpbGUgKHN0YXJ0IDwgcmFuZ2Uuc3RhcnQpIHtcbiAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICBzdGFydCsrO1xuICB9XG4gIGlmICh1c2VDb2xvcnMpIHNiLnB1c2goQ09MT1JfUkVEKTtcbiAgaWYgKHJhbmdlLnN0YXJ0ID09IHJhbmdlLmVuZCkge1xuICAgIHNiLnB1c2goXCJeXCIpO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdGFydCsrIDwgcmFuZ2UuZW5kKSB7XG4gICAgICBpZiAoaXNMaW5lQnJlYWsodGV4dC5jaGFyQ29kZUF0KHN0YXJ0KSkpIHtcbiAgICAgICAgc2IucHVzaChzdGFydCA9PSByYW5nZS5zdGFydCArIDEgPyBcIl5cIiA6IFwiflwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiflwiKTtcbiAgICB9XG4gIH1cbiAgaWYgKHVzZUNvbG9ycykgc2IucHVzaChDT0xPUl9SRVNFVCk7XG4gIHJldHVybiBzYi5qb2luKFwiXCIpO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgZGlhZ25vc3RpYyBlbWl0dGVycy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEaWFnbm9zdGljRW1pdHRlciB7XG5cbiAgLyoqIERpYWdub3N0aWMgbWVzc2FnZXMgZW1pdHRlZCBzbyBmYXIuICovXG4gIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljTWVzc2FnZVtdO1xuXG4gIC8qKiBJbml0aWFsaXplcyB0aGlzIGRpYWdub3N0aWMgZW1pdHRlci4gKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGRpYWdub3N0aWNzOiBEaWFnbm9zdGljTWVzc2FnZVtdIHwgbnVsbCA9IG51bGwpIHtcbiAgICB0aGlzLmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3MgPyA8RGlhZ25vc3RpY01lc3NhZ2VbXT5kaWFnbm9zdGljcyA6IG5ldyBBcnJheSgpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlIG9mIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkuICovXG4gIGVtaXREaWFnbm9zdGljKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnksXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIHJlbGF0ZWRSYW5nZTogUmFuZ2UgfCBudWxsLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHZhciBtZXNzYWdlID0gRGlhZ25vc3RpY01lc3NhZ2UuY3JlYXRlKGNvZGUsIGNhdGVnb3J5LCBhcmcwLCBhcmcxLCBhcmcyKS53aXRoUmFuZ2UocmFuZ2UpO1xuICAgIGlmIChyZWxhdGVkUmFuZ2UpIG1lc3NhZ2UucmVsYXRlZFJhbmdlID0gcmVsYXRlZFJhbmdlO1xuICAgIHRoaXMuZGlhZ25vc3RpY3MucHVzaChtZXNzYWdlKTtcbiAgICAvLyBjb25zb2xlLmxvZyhmb3JtYXREaWFnbm9zdGljTWVzc2FnZShtZXNzYWdlLCB0cnVlLCB0cnVlKSArIFwiXFxuXCIpOyAvLyB0ZW1wb3JhcnlcbiAgICAvLyBjb25zb2xlLmxvZyg8c3RyaW5nPm5ldyBFcnJvcihcInN0YWNrXCIpLnN0YWNrKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIGluZm8oXG4gICAgY29kZTogRGlhZ25vc3RpY0NvZGUsXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LklORk8sIHJhbmdlLCBudWxsLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2Ugd2l0aCBhIHJlbGF0ZWQgcmFuZ2UuICovXG4gIGluZm9SZWxhdGVkKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICByZWxhdGVkUmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LklORk8sIHJhbmdlLCByZWxhdGVkUmFuZ2UsIGFyZzAsIGFyZzEsIGFyZzIpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgd2FybmluZyBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHdhcm5pbmcoXG4gICAgY29kZTogRGlhZ25vc3RpY0NvZGUsXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LldBUk5JTkcsIHJhbmdlLCBudWxsLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhIHdhcm5pbmcgZGlhZ25vc3RpYyBtZXNzYWdlIHdpdGggYSByZWxhdGVkIHJhbmdlLiAqL1xuICB3YXJuaW5nUmVsYXRlZChcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICByYW5nZTogUmFuZ2UsXG4gICAgcmVsYXRlZFJhbmdlOiBSYW5nZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcyOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVtaXREaWFnbm9zdGljKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5XQVJOSU5HLCByYW5nZSwgcmVsYXRlZFJhbmdlLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBlcnJvciBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIGVycm9yKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcyOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVtaXREaWFnbm9zdGljKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5FUlJPUiwgcmFuZ2UsIG51bGwsIGFyZzAsIGFyZzEsIGFyZzIpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGFuIGVycm9yIGRpYWdub3N0aWMgbWVzc2FnZSB3aXRoIGEgcmVsYXRlZCByYW5nZS4gKi9cbiAgZXJyb3JSZWxhdGVkKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICByZWxhdGVkUmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LkVSUk9SLCByYW5nZSwgcmVsYXRlZFJhbmdlLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxufVxuIl19 - -/***/ }), - -/***/ "../src/glue/js/float.js": -/*!*******************************!*\ - !*** ../src/glue/js/float.js ***! - \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {const F64 = new Float64Array(1); -const F32 = new Float32Array(F64.buffer); -const I32 = new Int32Array(F64.buffer); - -global.f32_as_i32 = function(value) { - F32[0] = value; - return I32[0]; -}; - -global.i32_as_f32 = function(value) { - I32[0] = value; - return F32[0]; -}; - -global.f64_as_i64 = function(value) { - F64[0] = value; - return i64_new(I32[0], I32[1]); -}; - -global.i64_as_f64 = function(value) { - I32[0] = i64_low(value); - I32[1] = i64_high(value); - return F64[0]; -}; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../src/glue/js/i64.js": -/*!*****************************!*\ - !*** ../src/glue/js/i64.js ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {const Long = global.Long || __webpack_require__(/*! long */ "../node_modules/long/src/long.js"); - -global.i64_zero = Long.ZERO; - -global.i64_one = Long.ONE; - -global.i64_new = function(lo, hi) { - return Long.fromBits(lo, hi); -}; - -global.i64_low = function(value) { - return value.low; -}; - -global.i64_high = function(value) { - return value.high; -}; - -global.i64_add = function(left, right) { - return left.add(right); -}; - -global.i64_sub = function(left, right) { - return left.sub(right); -}; - -global.i64_mul = function(left, right) { - return left.mul(right); -}; - -global.i64_div = function(left, right) { - return left.div(right); -}; - -global.i64_div_u = function(left, right) { - return left.toUnsigned().div(right.toUnsigned()).toSigned(); -}; - -global.i64_rem = function(left, right) { - return left.mod(right); -}; - -global.i64_rem_u = function(left, right) { - return left.toUnsigned().mod(right.toUnsigned()).toSigned(); -}; - -global.i64_and = function(left, right) { - return left.and(right); -}; - -global.i64_or = function(left, right) { - return left.or(right); -}; - -global.i64_xor = function(left, right) { - return left.xor(right); -}; - -global.i64_shl = function(left, right) { - return left.shl(right); -}; - -global.i64_shr = function(left, right) { - return left.shr(right); -}; - -global.i64_shr_u = function(left, right) { - return left.shru(right); -}; - -global.i64_not = function(value) { - return value.not(); -}; - -global.i64_eq = function(left, right) { - return left.eq(right); -}; - -global.i64_ne = function(left, right) { - return left.ne(right); -}; - -global.i64_align = function(value, alignment) { - assert(alignment && (alignment & (alignment - 1)) == 0); - var mask = Long.fromInt(alignment - 1); - return value.add(mask).and(mask.not()); -}; - -global.i64_is_i8 = function(value) { - return value.high === 0 && (value.low >= 0 && value.low <= i8.MAX_VALUE) - || value.high === -1 && (value.low >= i8.MIN_VALUE && value.low < 0); -}; - -global.i64_is_i16 = function(value) { - return value.high === 0 && (value.low >= 0 && value.low <= i16.MAX_VALUE) - || value.high === -1 && (value.low >= i16.MIN_VALUE && value.low < 0); -}; - -global.i64_is_i32 = function(value) { - return (value.high === 0 && value.low >= 0) - || (value.high === -1 && value.low < 0); -}; - -global.i64_is_u8 = function(value) { - return value.high === 0 && value.low >= 0 && value.low <= u8.MAX_VALUE; -}; - -global.i64_is_u16 = function(value) { - return value.high === 0 && value.low >= 0 && value.low <= u16.MAX_VALUE; -}; - -global.i64_is_u32 = function(value) { - return value.high === 0; -}; - -global.i64_is_bool = function(value) { - return value.high === 0 && (value.low === 0 || value.low === 1); -}; - -const minSafeF32 = Long.fromNumber(f32.MIN_SAFE_INTEGER); -const maxSafeF32 = Long.fromNumber(f32.MAX_SAFE_INTEGER); - -global.i64_is_f32 = function(value) { - return value.gte(minSafeF32) && value.lte(maxSafeF32); -}; - -const minSafeF64 = Long.fromNumber(f64.MIN_SAFE_INTEGER); -const maxSafeF64 = Long.fromNumber(f64.MAX_SAFE_INTEGER); - -global.i64_is_f64 = function(value) { - return value.gte(minSafeF64) && value.lte(maxSafeF64); -}; - -global.i64_to_f32 = function(value) { - return global.Math.fround(value.toNumber()); -}; - -global.i64_to_f64 = function(value) { - return value.toNumber(); -}; - -global.i64_to_string = function(value, unsigned) { - return (unsigned ? value.toUnsigned() : value).toString(10); -}; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../src/tokenizer.ts": -/*!***************************!*\ - !*** ../src/tokenizer.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * A TypeScript tokenizer modified for AssemblyScript. - * - * Skips over trivia and provides a general mark/reset mechanism for the parser to utilize on - * ambiguous tokens. - * - * @module tokenizer - */ /***/ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var diagnostics_1 = __webpack_require__(/*! ./diagnostics */ "../src/diagnostics.ts"); -var ast_1 = __webpack_require__(/*! ./ast */ "../src/ast.ts"); -var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); -/** Named token types. */ -var Token; -(function (Token) { - // keywords - // discarded: ANY, BOOLEAN, NEVER, NUMBER, STRING, SYMBOL, UNDEFINED, LESSTHAN_SLASH - Token[Token["ABSTRACT"] = 0] = "ABSTRACT"; - Token[Token["AS"] = 1] = "AS"; - Token[Token["ASYNC"] = 2] = "ASYNC"; - Token[Token["AWAIT"] = 3] = "AWAIT"; - Token[Token["BREAK"] = 4] = "BREAK"; - Token[Token["CASE"] = 5] = "CASE"; - Token[Token["CATCH"] = 6] = "CATCH"; - Token[Token["CLASS"] = 7] = "CLASS"; - Token[Token["CONST"] = 8] = "CONST"; - Token[Token["CONTINUE"] = 9] = "CONTINUE"; - Token[Token["CONSTRUCTOR"] = 10] = "CONSTRUCTOR"; - Token[Token["DEBUGGER"] = 11] = "DEBUGGER"; - Token[Token["DECLARE"] = 12] = "DECLARE"; - Token[Token["DEFAULT"] = 13] = "DEFAULT"; - Token[Token["DELETE"] = 14] = "DELETE"; - Token[Token["DO"] = 15] = "DO"; - Token[Token["ELSE"] = 16] = "ELSE"; - Token[Token["ENUM"] = 17] = "ENUM"; - Token[Token["EXPORT"] = 18] = "EXPORT"; - Token[Token["EXTENDS"] = 19] = "EXTENDS"; - Token[Token["FALSE"] = 20] = "FALSE"; - Token[Token["FINALLY"] = 21] = "FINALLY"; - Token[Token["FOR"] = 22] = "FOR"; - Token[Token["FROM"] = 23] = "FROM"; - Token[Token["FUNCTION"] = 24] = "FUNCTION"; - Token[Token["GET"] = 25] = "GET"; - Token[Token["IF"] = 26] = "IF"; - Token[Token["IMPLEMENTS"] = 27] = "IMPLEMENTS"; - Token[Token["IMPORT"] = 28] = "IMPORT"; - Token[Token["IN"] = 29] = "IN"; - Token[Token["INSTANCEOF"] = 30] = "INSTANCEOF"; - Token[Token["INTERFACE"] = 31] = "INTERFACE"; - Token[Token["IS"] = 32] = "IS"; - Token[Token["KEYOF"] = 33] = "KEYOF"; - Token[Token["LET"] = 34] = "LET"; - Token[Token["MODULE"] = 35] = "MODULE"; - Token[Token["NAMESPACE"] = 36] = "NAMESPACE"; - Token[Token["NEW"] = 37] = "NEW"; - Token[Token["NULL"] = 38] = "NULL"; - Token[Token["OF"] = 39] = "OF"; - Token[Token["PACKAGE"] = 40] = "PACKAGE"; - Token[Token["PRIVATE"] = 41] = "PRIVATE"; - Token[Token["PROTECTED"] = 42] = "PROTECTED"; - Token[Token["PUBLIC"] = 43] = "PUBLIC"; - Token[Token["READONLY"] = 44] = "READONLY"; - Token[Token["RETURN"] = 45] = "RETURN"; - Token[Token["SET"] = 46] = "SET"; - Token[Token["STATIC"] = 47] = "STATIC"; - Token[Token["SUPER"] = 48] = "SUPER"; - Token[Token["SWITCH"] = 49] = "SWITCH"; - Token[Token["THIS"] = 50] = "THIS"; - Token[Token["THROW"] = 51] = "THROW"; - Token[Token["TRUE"] = 52] = "TRUE"; - Token[Token["TRY"] = 53] = "TRY"; - Token[Token["TYPE"] = 54] = "TYPE"; - Token[Token["TYPEOF"] = 55] = "TYPEOF"; - Token[Token["VAR"] = 56] = "VAR"; - Token[Token["VOID"] = 57] = "VOID"; - Token[Token["WHILE"] = 58] = "WHILE"; - Token[Token["WITH"] = 59] = "WITH"; - Token[Token["YIELD"] = 60] = "YIELD"; - // punctuation - Token[Token["OPENBRACE"] = 61] = "OPENBRACE"; - Token[Token["CLOSEBRACE"] = 62] = "CLOSEBRACE"; - Token[Token["OPENPAREN"] = 63] = "OPENPAREN"; - Token[Token["CLOSEPAREN"] = 64] = "CLOSEPAREN"; - Token[Token["OPENBRACKET"] = 65] = "OPENBRACKET"; - Token[Token["CLOSEBRACKET"] = 66] = "CLOSEBRACKET"; - Token[Token["DOT"] = 67] = "DOT"; - Token[Token["DOT_DOT_DOT"] = 68] = "DOT_DOT_DOT"; - Token[Token["SEMICOLON"] = 69] = "SEMICOLON"; - Token[Token["COMMA"] = 70] = "COMMA"; - Token[Token["LESSTHAN"] = 71] = "LESSTHAN"; - Token[Token["GREATERTHAN"] = 72] = "GREATERTHAN"; - Token[Token["LESSTHAN_EQUALS"] = 73] = "LESSTHAN_EQUALS"; - Token[Token["GREATERTHAN_EQUALS"] = 74] = "GREATERTHAN_EQUALS"; - Token[Token["EQUALS_EQUALS"] = 75] = "EQUALS_EQUALS"; - Token[Token["EXCLAMATION_EQUALS"] = 76] = "EXCLAMATION_EQUALS"; - Token[Token["EQUALS_EQUALS_EQUALS"] = 77] = "EQUALS_EQUALS_EQUALS"; - Token[Token["EXCLAMATION_EQUALS_EQUALS"] = 78] = "EXCLAMATION_EQUALS_EQUALS"; - Token[Token["EQUALS_GREATERTHAN"] = 79] = "EQUALS_GREATERTHAN"; - Token[Token["PLUS"] = 80] = "PLUS"; - Token[Token["MINUS"] = 81] = "MINUS"; - Token[Token["ASTERISK_ASTERISK"] = 82] = "ASTERISK_ASTERISK"; - Token[Token["ASTERISK"] = 83] = "ASTERISK"; - Token[Token["SLASH"] = 84] = "SLASH"; - Token[Token["PERCENT"] = 85] = "PERCENT"; - Token[Token["PLUS_PLUS"] = 86] = "PLUS_PLUS"; - Token[Token["MINUS_MINUS"] = 87] = "MINUS_MINUS"; - Token[Token["LESSTHAN_LESSTHAN"] = 88] = "LESSTHAN_LESSTHAN"; - Token[Token["GREATERTHAN_GREATERTHAN"] = 89] = "GREATERTHAN_GREATERTHAN"; - Token[Token["GREATERTHAN_GREATERTHAN_GREATERTHAN"] = 90] = "GREATERTHAN_GREATERTHAN_GREATERTHAN"; - Token[Token["AMPERSAND"] = 91] = "AMPERSAND"; - Token[Token["BAR"] = 92] = "BAR"; - Token[Token["CARET"] = 93] = "CARET"; - Token[Token["EXCLAMATION"] = 94] = "EXCLAMATION"; - Token[Token["TILDE"] = 95] = "TILDE"; - Token[Token["AMPERSAND_AMPERSAND"] = 96] = "AMPERSAND_AMPERSAND"; - Token[Token["BAR_BAR"] = 97] = "BAR_BAR"; - Token[Token["QUESTION"] = 98] = "QUESTION"; - Token[Token["COLON"] = 99] = "COLON"; - Token[Token["EQUALS"] = 100] = "EQUALS"; - Token[Token["PLUS_EQUALS"] = 101] = "PLUS_EQUALS"; - Token[Token["MINUS_EQUALS"] = 102] = "MINUS_EQUALS"; - Token[Token["ASTERISK_EQUALS"] = 103] = "ASTERISK_EQUALS"; - Token[Token["ASTERISK_ASTERISK_EQUALS"] = 104] = "ASTERISK_ASTERISK_EQUALS"; - Token[Token["SLASH_EQUALS"] = 105] = "SLASH_EQUALS"; - Token[Token["PERCENT_EQUALS"] = 106] = "PERCENT_EQUALS"; - Token[Token["LESSTHAN_LESSTHAN_EQUALS"] = 107] = "LESSTHAN_LESSTHAN_EQUALS"; - Token[Token["GREATERTHAN_GREATERTHAN_EQUALS"] = 108] = "GREATERTHAN_GREATERTHAN_EQUALS"; - Token[Token["GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS"] = 109] = "GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS"; - Token[Token["AMPERSAND_EQUALS"] = 110] = "AMPERSAND_EQUALS"; - Token[Token["BAR_EQUALS"] = 111] = "BAR_EQUALS"; - Token[Token["CARET_EQUALS"] = 112] = "CARET_EQUALS"; - Token[Token["AT"] = 113] = "AT"; - // literals - Token[Token["IDENTIFIER"] = 114] = "IDENTIFIER"; - Token[Token["STRINGLITERAL"] = 115] = "STRINGLITERAL"; - Token[Token["INTEGERLITERAL"] = 116] = "INTEGERLITERAL"; - Token[Token["FLOATLITERAL"] = 117] = "FLOATLITERAL"; - // meta - Token[Token["INVALID"] = 118] = "INVALID"; - Token[Token["ENDOFFILE"] = 119] = "ENDOFFILE"; -})(Token = exports.Token || (exports.Token = {})); -var IdentifierHandling; -(function (IdentifierHandling) { - IdentifierHandling[IdentifierHandling["DEFAULT"] = 0] = "DEFAULT"; - IdentifierHandling[IdentifierHandling["PREFER"] = 1] = "PREFER"; - IdentifierHandling[IdentifierHandling["ALWAYS"] = 2] = "ALWAYS"; -})(IdentifierHandling = exports.IdentifierHandling || (exports.IdentifierHandling = {})); -function tokenFromKeyword(text) { - assert(text.length); - switch (text.charCodeAt(0)) { - case 97 /* a */: { - switch (text) { - case "abstract": return Token.ABSTRACT; - case "as": return Token.AS; - case "async": return Token.ASYNC; - case "await": return Token.AWAIT; - } - break; - } - case 98 /* b */: { - switch (text) { - case "break": return Token.BREAK; - } - break; - } - case 99 /* c */: { - switch (text) { - case "case": return Token.CASE; - case "catch": return Token.CATCH; - case "class": return Token.CLASS; - case "continue": return Token.CONTINUE; - case "const": return Token.CONST; - case "constructor": return Token.CONSTRUCTOR; - } - break; - } - case 100 /* d */: { - switch (text) { - case "debugger": return Token.DEBUGGER; - case "declare": return Token.DECLARE; - case "default": return Token.DEFAULT; - case "delete": return Token.DELETE; - case "do": return Token.DO; - } - break; - } - case 101 /* e */: { - switch (text) { - case "else": return Token.ELSE; - case "enum": return Token.ENUM; - case "export": return Token.EXPORT; - case "extends": return Token.EXTENDS; - } - break; - } - case 102 /* f */: { - switch (text) { - case "false": return Token.FALSE; - case "finally": return Token.FINALLY; - case "for": return Token.FOR; - case "from": return Token.FROM; - case "function": return Token.FUNCTION; - } - break; - } - case 103 /* g */: { - switch (text) { - case "get": return Token.GET; - } - break; - } - case 105 /* i */: { - switch (text) { - case "if": return Token.IF; - case "implements": return Token.IMPLEMENTS; - case "import": return Token.IMPORT; - case "in": return Token.IN; - case "instanceof": return Token.INSTANCEOF; - case "interface": return Token.INTERFACE; - case "is": return Token.IS; - } - break; - } - case 107 /* k */: { - switch (text) { - case "keyof": return Token.KEYOF; - } - break; - } - case 108 /* l */: { - switch (text) { - case "let": return Token.LET; - } - break; - } - case 109 /* m */: { - switch (text) { - case "module": return Token.MODULE; - } - break; - } - case 110 /* n */: { - switch (text) { - case "namespace": return Token.NAMESPACE; - case "new": return Token.NEW; - case "null": return Token.NULL; - } - break; - } - case 111 /* o */: { - switch (text) { - case "of": return Token.OF; - } - break; - } - case 112 /* p */: { - switch (text) { - case "package": return Token.PACKAGE; - case "private": return Token.PRIVATE; - case "protected": return Token.PROTECTED; - case "public": return Token.PUBLIC; - } - break; - } - case 114 /* r */: { - switch (text) { - case "readonly": return Token.READONLY; - case "return": return Token.RETURN; - } - break; - } - case 115 /* s */: { - switch (text) { - case "set": return Token.SET; - case "static": return Token.STATIC; - case "super": return Token.SUPER; - case "switch": return Token.SWITCH; - } - break; - } - case 116 /* t */: { - switch (text) { - case "this": return Token.THIS; - case "throw": return Token.THROW; - case "true": return Token.TRUE; - case "try": return Token.TRY; - case "type": return Token.TYPE; - case "typeof": return Token.TYPEOF; - } - break; - } - case 118 /* v */: { - switch (text) { - case "var": return Token.VAR; - case "void": return Token.VOID; - } - break; - } - case 119 /* w */: { - switch (text) { - case "while": return Token.WHILE; - case "with": return Token.WITH; - } - break; - } - case 121 /* y */: { - switch (text) { - case "yield": return Token.YIELD; - } - break; - } - } - return Token.INVALID; -} -exports.tokenFromKeyword = tokenFromKeyword; -function tokenIsAlsoIdentifier(token) { - switch (token) { - case Token.ABSTRACT: - case Token.AS: - case Token.CONSTRUCTOR: - case Token.DECLARE: - case Token.DELETE: - case Token.FROM: - case Token.FOR: - case Token.GET: - case Token.INSTANCEOF: - case Token.IS: - case Token.KEYOF: - case Token.MODULE: - case Token.NAMESPACE: - case Token.NULL: - case Token.READONLY: - case Token.SET: - case Token.TYPE: - case Token.VOID: return true; - default: return false; - } -} -exports.tokenIsAlsoIdentifier = tokenIsAlsoIdentifier; -function isIllegalVariableIdentifier(name) { - assert(name.length); - switch (name.charCodeAt(0)) { - case 100 /* d */: return name == "delete"; - case 102 /* f */: return name == "for"; - case 105 /* i */: return name == "instanceof"; - case 110 /* n */: return name == "null"; - case 118 /* v */: return name == "void"; - } - return false; -} -exports.isIllegalVariableIdentifier = isIllegalVariableIdentifier; -function operatorTokenToString(token) { - switch (token) { - case Token.DELETE: return "delete"; - case Token.IN: return "in"; - case Token.INSTANCEOF: return "instanceof"; - case Token.NEW: return "new"; - case Token.TYPEOF: return "typeof"; - case Token.VOID: return "void"; - case Token.YIELD: return "yield"; - case Token.DOT_DOT_DOT: return "..."; - case Token.COMMA: return ","; - case Token.LESSTHAN: return "<"; - case Token.GREATERTHAN: return ">"; - case Token.LESSTHAN_EQUALS: return "<="; - case Token.GREATERTHAN_EQUALS: return ">="; - case Token.EQUALS_EQUALS: return "=="; - case Token.EXCLAMATION_EQUALS: return "!="; - case Token.EQUALS_EQUALS_EQUALS: return "==="; - case Token.EXCLAMATION_EQUALS_EQUALS: return "!=="; - case Token.PLUS: return "+"; - case Token.MINUS: return "-"; - case Token.ASTERISK_ASTERISK: return "**"; - case Token.ASTERISK: return "*"; - case Token.SLASH: return "/"; - case Token.PERCENT: return "%"; - case Token.PLUS_PLUS: return "++"; - case Token.MINUS_MINUS: return "--"; - case Token.LESSTHAN_LESSTHAN: return "<<"; - case Token.GREATERTHAN_GREATERTHAN: return ">>"; - case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: return ">>>"; - case Token.AMPERSAND: return "&"; - case Token.BAR: return "|"; - case Token.CARET: return "^"; - case Token.EXCLAMATION: return "!"; - case Token.TILDE: return "~"; - case Token.AMPERSAND_AMPERSAND: return "&&"; - case Token.BAR_BAR: return "||"; - case Token.EQUALS: return "="; - case Token.PLUS_EQUALS: return "+="; - case Token.MINUS_EQUALS: return "-="; - case Token.ASTERISK_EQUALS: return "*="; - case Token.ASTERISK_ASTERISK_EQUALS: return "**="; - case Token.SLASH_EQUALS: return "/="; - case Token.PERCENT_EQUALS: return "%="; - case Token.LESSTHAN_LESSTHAN_EQUALS: return "<<="; - case Token.GREATERTHAN_GREATERTHAN_EQUALS: return ">>="; - case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS: return ">>>="; - case Token.AMPERSAND_EQUALS: return "&="; - case Token.BAR_EQUALS: return "|="; - case Token.CARET_EQUALS: return "^="; - default: { - assert(false); - return ""; - } - } -} -exports.operatorTokenToString = operatorTokenToString; -var Range = /** @class */ (function () { - // TODO: set these while tokenizing - // line: i32; - // column: i32; - function Range(source, start, end) { - this.debugInfoRef = 0; - this.source = source; - this.start = start; - this.end = end; - } - Range.join = function (a, b) { - if (a.source != b.source) - throw new Error("source mismatch"); - return new Range(a.source, a.start < b.start ? a.start : b.start, a.end > b.end ? a.end : b.end); - }; - Object.defineProperty(Range.prototype, "atStart", { - get: function () { - return new Range(this.source, this.start, this.start); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Range.prototype, "atEnd", { - get: function () { - return new Range(this.source, this.end, this.end); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Range.prototype, "line", { - get: function () { - var text = this.source.text; - var line = 1; - for (var pos = this.start; pos >= 0; --pos) { - if (text.charCodeAt(pos) == 10 /* LINEFEED */) - line++; - } - return line; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Range.prototype, "column", { - get: function () { - var text = this.source.text; - var column = 0; - for (var pos = this.start - 1; pos >= 0; --pos) { - if (text.charCodeAt(pos) == 10 /* LINEFEED */) - break; - ++column; - } - return column; - }, - enumerable: true, - configurable: true - }); - Range.prototype.toString = function () { - return this.source.text.substring(this.start, this.end); - }; - return Range; -}()); -exports.Range = Range; -/** Tokenizes a source to individual {@link Token}s. */ -var Tokenizer = /** @class */ (function (_super) { - __extends(Tokenizer, _super); - /** Constructs a new tokenizer. */ - function Tokenizer(source, diagnostics) { - if (diagnostics === void 0) { diagnostics = null; } - var _this = _super.call(this, diagnostics) || this; - _this.end = 0; - _this.pos = 0; - _this.token = -1; - _this.tokenPos = 0; - _this.nextToken = -1; - _this.nextTokenPos = 0; - _this.nextTokenOnNewLine = false; - _this.onComment = null; - _this.source = source; - _this.pos = 0; - _this.end = source.text.length; - _this.diagnostics = diagnostics || new Array(); - var end = _this.end; - var text = source.text; - // skip bom - if (_this.pos < end && - text.charCodeAt(_this.pos) == 65279 /* BYTEORDERMARK */) { - ++_this.pos; - } - // skip shebang - if (_this.pos + 1 < end && - text.charCodeAt(_this.pos) == 35 /* HASH */ && - text.charCodeAt(_this.pos + 1) == 33 /* EXCLAMATION */) { - _this.pos += 2; - while (_this.pos < end && - text.charCodeAt(_this.pos) != 10 /* LINEFEED */) { - ++_this.pos; - } - // 'next' now starts at lf or eof - } - return _this; - } - Tokenizer.prototype.next = function (identifierHandling) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - this.nextToken = -1; - return this.token = this.unsafeNext(identifierHandling); - }; - Tokenizer.prototype.unsafeNext = function (identifierHandling, maxTokenLength) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - if (maxTokenLength === void 0) { maxTokenLength = i32.MAX_VALUE; } - var end = this.end; - var text = this.source.text; - while (this.pos < end) { - this.tokenPos = this.pos; - var c = text.charCodeAt(this.pos); - switch (c) { - case 13 /* CARRIAGERETURN */: { - if (!(++this.pos < end && - text.charCodeAt(this.pos) == 10 /* LINEFEED */)) - break; - // otherwise fall-through - } - case 10 /* LINEFEED */: - case 9 /* TAB */: - case 11 /* VERTICALTAB */: - case 12 /* FORMFEED */: - case 32 /* SPACE */: { - ++this.pos; - break; - } - case 33 /* EXCLAMATION */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - if (maxTokenLength > 2 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.EXCLAMATION_EQUALS_EQUALS; - } - return Token.EXCLAMATION_EQUALS; - } - return Token.EXCLAMATION; - } - case 34 /* DOUBLEQUOTE */: - case 39 /* SINGLEQUOTE */: - case 96 /* BACKTICK */: { // TODO - return Token.STRINGLITERAL; // expects a call to readString - } - case 37 /* PERCENT */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.PERCENT_EQUALS; - } - return Token.PERCENT; - } - case 38 /* AMPERSAND */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 38 /* AMPERSAND */) { - ++this.pos; - return Token.AMPERSAND_AMPERSAND; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.AMPERSAND_EQUALS; - } - } - return Token.AMPERSAND; - } - case 40 /* OPENPAREN */: { - ++this.pos; - return Token.OPENPAREN; - } - case 41 /* CLOSEPAREN */: { - ++this.pos; - return Token.CLOSEPAREN; - } - case 42 /* ASTERISK */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.ASTERISK_EQUALS; - } - if (chr == 42 /* ASTERISK */) { - ++this.pos; - if (maxTokenLength > 2 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.ASTERISK_ASTERISK_EQUALS; - } - return Token.ASTERISK_ASTERISK; - } - } - return Token.ASTERISK; - } - case 43 /* PLUS */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 43 /* PLUS */) { - ++this.pos; - return Token.PLUS_PLUS; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.PLUS_EQUALS; - } - } - return Token.PLUS; - } - case 44 /* COMMA */: { - ++this.pos; - return Token.COMMA; - } - case 45 /* MINUS */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 45 /* MINUS */) { - ++this.pos; - return Token.MINUS_MINUS; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.MINUS_EQUALS; - } - } - return Token.MINUS; - } - case 46 /* DOT */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (util_1.isDecimalDigit(chr)) { - --this.pos; - return Token.FLOATLITERAL; // expects a call to readFloat - } - if (maxTokenLength > 2 && this.pos + 1 < end && - chr == 46 /* DOT */ && - text.charCodeAt(this.pos + 1) == 46 /* DOT */) { - this.pos += 2; - return Token.DOT_DOT_DOT; - } - } - return Token.DOT; - } - case 47 /* SLASH */: { - var commentStartPos = this.pos; - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 47 /* SLASH */) { // single-line - var commentKind = ast_1.CommentKind.LINE; - if (this.pos + 1 < end && - text.charCodeAt(this.pos + 1) == 47 /* SLASH */) { - ++this.pos; - commentKind = ast_1.CommentKind.TRIPLE; - } - while (++this.pos < end) { - if (text.charCodeAt(this.pos) == 10 /* LINEFEED */) { - ++this.pos; - break; - } - } - if (this.onComment) { - this.onComment(commentKind, text.substring(commentStartPos, this.pos), this.range(commentStartPos, this.pos)); - } - break; - } - if (chr == 42 /* ASTERISK */) { // multi-line - var closed = false; - while (++this.pos < end) { - c = text.charCodeAt(this.pos); - if (c == 42 /* ASTERISK */ && - this.pos + 1 < end && - text.charCodeAt(this.pos + 1) == 47 /* SLASH */) { - this.pos += 2; - closed = true; - break; - } - } - if (!closed) { - this.error(diagnostics_1.DiagnosticCode._0_expected, this.range(this.pos), "*/"); - } - else if (this.onComment) { - this.onComment(ast_1.CommentKind.BLOCK, text.substring(commentStartPos, this.pos), this.range(commentStartPos, this.pos)); - } - break; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.SLASH_EQUALS; - } - } - return Token.SLASH; - } - case 48 /* _0 */: - case 49 /* _1 */: - case 50 /* _2 */: - case 51 /* _3 */: - case 52 /* _4 */: - case 53 /* _5 */: - case 54 /* _6 */: - case 55 /* _7 */: - case 56 /* _8 */: - case 57 /* _9 */: { - return this.testInteger() - ? Token.INTEGERLITERAL // expects a call to readInteger - : Token.FLOATLITERAL; // expects a call to readFloat - } - case 58 /* COLON */: { - ++this.pos; - return Token.COLON; - } - case 59 /* SEMICOLON */: { - ++this.pos; - return Token.SEMICOLON; - } - case 60 /* LESSTHAN */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 60 /* LESSTHAN */) { - ++this.pos; - if (maxTokenLength > 2 && - this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.LESSTHAN_LESSTHAN_EQUALS; - } - return Token.LESSTHAN_LESSTHAN; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.LESSTHAN_EQUALS; - } - } - return Token.LESSTHAN; - } - case 61 /* EQUALS */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 61 /* EQUALS */) { - ++this.pos; - if (maxTokenLength > 2 && - this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.EQUALS_EQUALS_EQUALS; - } - return Token.EQUALS_EQUALS; - } - if (chr == 62 /* GREATERTHAN */) { - ++this.pos; - return Token.EQUALS_GREATERTHAN; - } - } - return Token.EQUALS; - } - case 62 /* GREATERTHAN */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 62 /* GREATERTHAN */) { - ++this.pos; - if (maxTokenLength > 2 && this.pos < end) { - chr = text.charCodeAt(this.pos); - if (chr == 62 /* GREATERTHAN */) { - ++this.pos; - if (maxTokenLength > 3 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS; - } - return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.GREATERTHAN_GREATERTHAN_EQUALS; - } - } - return Token.GREATERTHAN_GREATERTHAN; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.GREATERTHAN_EQUALS; - } - } - return Token.GREATERTHAN; - } - case 63 /* QUESTION */: { - ++this.pos; - return Token.QUESTION; - } - case 91 /* OPENBRACKET */: { - ++this.pos; - return Token.OPENBRACKET; - } - case 93 /* CLOSEBRACKET */: { - ++this.pos; - return Token.CLOSEBRACKET; - } - case 94 /* CARET */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.CARET_EQUALS; - } - return Token.CARET; - } - case 123 /* OPENBRACE */: { - ++this.pos; - return Token.OPENBRACE; - } - case 124 /* BAR */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 124 /* BAR */) { - ++this.pos; - return Token.BAR_BAR; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.BAR_EQUALS; - } - } - return Token.BAR; - } - case 125 /* CLOSEBRACE */: { - ++this.pos; - return Token.CLOSEBRACE; - } - case 126 /* TILDE */: { - ++this.pos; - return Token.TILDE; - } - case 64 /* AT */: { - ++this.pos; - return Token.AT; - } - default: { - if (util_1.isIdentifierStart(c)) { - if (util_1.isKeywordCharacter(c)) { - var posBefore = this.pos; - while (++this.pos < end && - util_1.isIdentifierPart(c = text.charCodeAt(this.pos))) { - if (!util_1.isKeywordCharacter(c)) { - this.pos = posBefore; - return Token.IDENTIFIER; - } - } - var keywordText = text.substring(posBefore, this.pos); - var keywordToken = tokenFromKeyword(keywordText); - if (keywordToken !== Token.INVALID && - identifierHandling !== IdentifierHandling.ALWAYS && - !(identifierHandling === IdentifierHandling.PREFER && - tokenIsAlsoIdentifier(keywordToken))) { - return keywordToken; - } - this.pos = posBefore; - } - return Token.IDENTIFIER; // expects a call to readIdentifier - } - else if (util_1.isWhiteSpace(c)) { - ++this.pos; - break; - } - this.error(diagnostics_1.DiagnosticCode.Invalid_character, this.range(this.pos, this.pos + 1)); - ++this.pos; - return Token.INVALID; - } - } - } - return Token.ENDOFFILE; - }; - Tokenizer.prototype.peek = function (checkOnNewLine, identifierHandling, maxCompoundLength) { - if (checkOnNewLine === void 0) { checkOnNewLine = false; } - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - if (maxCompoundLength === void 0) { maxCompoundLength = i32.MAX_VALUE; } - var text = this.source.text; - if (this.nextToken < 0) { - var posBefore = this.pos; - var tokenBefore = this.token; - var tokenPosBefore = this.tokenPos; - this.nextToken = this.unsafeNext(identifierHandling, maxCompoundLength); - this.nextTokenPos = this.tokenPos; - if (checkOnNewLine) { - this.nextTokenOnNewLine = false; - for (var pos = posBefore, end = this.nextTokenPos; pos < end; ++pos) { - if (util_1.isLineBreak(text.charCodeAt(pos))) { - this.nextTokenOnNewLine = true; - break; - } - } - } - this.pos = posBefore; - this.token = tokenBefore; - this.tokenPos = tokenPosBefore; - } - return this.nextToken; - }; - Tokenizer.prototype.skipIdentifier = function (identifierHandling) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.PREFER; } - return this.skip(Token.IDENTIFIER, identifierHandling); - }; - Tokenizer.prototype.skip = function (token, identifierHandling) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - var posBefore = this.pos; - var tokenBefore = this.token; - var tokenPosBefore = this.tokenPos; - var maxCompoundLength = i32.MAX_VALUE; - switch (token) { - case Token.GREATERTHAN: { // where parsing type arguments - maxCompoundLength = 1; - break; - } - } - this.token = this.unsafeNext(identifierHandling, maxCompoundLength); - if (this.token == token) { - this.nextToken = -1; - return true; - } - else { - this.pos = posBefore; - this.token = tokenBefore; - this.tokenPos = tokenPosBefore; - return false; - } - }; - Tokenizer.prototype.mark = function () { - var state; - if (reusableState) { - state = reusableState; - reusableState = null; - } - else { - state = new State(); - } - state.pos = this.pos; - state.token = this.token; - state.tokenPos = this.tokenPos; - return state; - }; - Tokenizer.prototype.discard = function (state) { - reusableState = state; - }; - Tokenizer.prototype.reset = function (state) { - this.pos = state.pos; - this.token = state.token; - this.tokenPos = state.tokenPos; - this.nextToken = -1; - }; - Tokenizer.prototype.range = function (start, end) { - if (start === void 0) { start = -1; } - if (end === void 0) { end = -1; } - if (start < 0) { - start = this.tokenPos; - end = this.pos; - } - else if (end < 0) { - end = start; - } - return new Range(this.source, start, end); - }; - Tokenizer.prototype.readIdentifier = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - while (++this.pos < end && - util_1.isIdentifierPart(text.charCodeAt(this.pos))) - ; - return text.substring(start, this.pos); - }; - Tokenizer.prototype.readString = function () { - var text = this.source.text; - var quote = text.charCodeAt(this.pos++); - var start = this.pos; - var end = this.end; - var result = ""; - while (true) { - if (this.pos >= end) { - result += text.substring(start, this.pos); - this.error(diagnostics_1.DiagnosticCode.Unterminated_string_literal, this.range(start - 1, end)); - break; - } - var c = text.charCodeAt(this.pos); - if (c == quote) { - result += text.substring(start, this.pos++); - break; - } - if (c == 92 /* BACKSLASH */) { - result += text.substring(start, this.pos); - result += this.readEscapeSequence(); - start = this.pos; - continue; - } - if (util_1.isLineBreak(c) && quote != 96 /* BACKTICK */) { - result += text.substring(start, this.pos); - this.error(diagnostics_1.DiagnosticCode.Unterminated_string_literal, this.range(start - 1, this.pos)); - break; - } - ++this.pos; - } - return result; - }; - Tokenizer.prototype.readEscapeSequence = function () { - var end = this.end; - if (++this.pos >= end) { - this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(end)); - return ""; - } - var text = this.source.text; - var c = text.charCodeAt(this.pos++); - switch (c) { - case 48 /* _0 */: return "\0"; - case 98 /* b */: return "\b"; - case 116 /* t */: return "\t"; - case 110 /* n */: return "\n"; - case 118 /* v */: return "\v"; - case 102 /* f */: return "\f"; - case 114 /* r */: return "\r"; - case 39 /* SINGLEQUOTE */: return "'"; - case 34 /* DOUBLEQUOTE */: return "\""; - case 117 /* u */: { - if (this.pos < end && - text.charCodeAt(this.pos) == 123 /* OPENBRACE */) { - ++this.pos; - return this.readExtendedUnicodeEscape(); // \u{DDDDDDDD} - } - return this.readUnicodeEscape(); // \uDDDD - } - case 13 /* CARRIAGERETURN */: { - if (this.pos < end && - text.charCodeAt(this.pos) == 10 /* LINEFEED */) { - ++this.pos; - } - // fall through - } - case 10 /* LINEFEED */: - case 8232 /* LINESEPARATOR */: - case 8233 /* PARAGRAPHSEPARATOR */: return ""; - default: return String.fromCharCode(c); - } - }; - Tokenizer.prototype.readRegexpPattern = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - var escaped = false; - while (true) { - if (this.pos >= end) { - this.error(diagnostics_1.DiagnosticCode.Unterminated_regular_expression_literal, this.range(start, end)); - break; - } - if (text.charCodeAt(this.pos) == 92 /* BACKSLASH */) { - ++this.pos; - escaped = true; - continue; - } - var c = text.charCodeAt(this.pos); - if (!escaped && c == 47 /* SLASH */) - break; - if (util_1.isLineBreak(c)) { - this.error(diagnostics_1.DiagnosticCode.Unterminated_regular_expression_literal, this.range(start, this.pos)); - break; - } - ++this.pos; - escaped = false; - } - return text.substring(start, this.pos); - }; - Tokenizer.prototype.readRegexpFlags = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - var flags = 0; - while (this.pos < end) { - var c = text.charCodeAt(this.pos); - if (!util_1.isIdentifierPart(c)) - break; - ++this.pos; - // make sure each supported flag is unique - switch (c) { - case 103 /* g */: { - flags |= flags & 1 ? -1 : 1; - break; - } - case 105 /* i */: { - flags |= flags & 2 ? -1 : 2; - break; - } - case 109 /* m */: { - flags |= flags & 4 ? -1 : 4; - break; - } - default: { - flags = -1; - break; - } - } - } - if (flags == -1) { - this.error(diagnostics_1.DiagnosticCode.Invalid_regular_expression_flags, this.range(start, this.pos)); - } - return text.substring(start, this.pos); - }; - Tokenizer.prototype.testInteger = function () { - var end = this.end; - var text = this.source.text; - if (this.pos + 1 < end && text.charCodeAt(this.pos) == 48 /* _0 */) { - switch (text.charCodeAt(this.pos + 2)) { - case 120 /* x */: - case 88 /* X */: - case 98 /* b */: - case 66 /* B */: - case 111 /* o */: - case 79 /* O */: return true; - } - } - var pos = this.pos; - while (pos < end) { - var c = text.charCodeAt(pos); - if (c == 46 /* DOT */ || c == 101 /* e */ || c == 69 /* E */) - return false; - if ((c < 48 /* _0 */ || c > 57 /* _9 */) && c != 95 /* _ */) - break; - // does not validate separator placement (this is done in readXYInteger) - pos++; - } - return true; - }; - Tokenizer.prototype.readInteger = function () { - var text = this.source.text; - if (this.pos + 2 < this.end && text.charCodeAt(this.pos) == 48 /* _0 */) { - switch (text.charCodeAt(this.pos + 1)) { - case 120 /* x */: - case 88 /* X */: { - this.pos += 2; - return this.readHexInteger(); - } - case 98 /* b */: - case 66 /* B */: { - this.pos += 2; - return this.readBinaryInteger(); - } - case 111 /* o */: - case 79 /* O */: { - this.pos += 2; - return this.readOctalInteger(); - } - } - if (util_1.isOctalDigit(text.charCodeAt(this.pos + 1))) { - var start = this.pos; - ++this.pos; - var value = this.readOctalInteger(); - this.error(diagnostics_1.DiagnosticCode.Octal_literals_are_not_allowed_in_strict_mode, this.range(start, this.pos)); - return value; - } - } - return this.readDecimalInteger(); - }; - Tokenizer.prototype.readHexInteger = function () { - var text = this.source.text; - var start = this.pos; - var value = i64_new(0); - var i64_4 = i64_new(4); - var sepEnd = start; - var end = this.end; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { - // value = (value << 4) + c - CharCode._0; - value = i64_add(i64_shl(value, i64_4), i64_new(c - 48 /* _0 */)); - } - else if (c >= 65 /* A */ && c <= 70 /* F */) { - // value = (value << 4) + 10 + c - CharCode.A; - value = i64_add(i64_shl(value, i64_4), i64_new(10 + c - 65 /* A */)); - } - else if (c >= 97 /* a */ && c <= 102 /* f */) { - // value = (value << 4) + 10 + c - CharCode.a; - value = i64_add(i64_shl(value, i64_4), i64_new(10 + c - 97 /* a */)); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - this.pos = pos + 1; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Hexadecimal_digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readDecimalInteger = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - var value = i64_new(0); - var i64_10 = i64_new(10); - var sepEnd = start; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { - // value = value * 10 + c - CharCode._0; - value = i64_add(i64_mul(value, i64_10), i64_new(c - 48 /* _0 */)); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - this.pos = pos + 1; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readOctalInteger = function () { - var text = this.source.text; - var start = this.pos; - var value = i64_new(0); - var i64_3 = i64_new(3); - var sepEnd = start; - var end = this.end; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c >= 48 /* _0 */ && c <= 55 /* _7 */) { - // value = (value << 3) + c - CharCode._0; - value = i64_add(i64_shl(value, i64_3), i64_new(c - 48 /* _0 */)); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - ++this.pos; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Octal_digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readBinaryInteger = function () { - var text = this.source.text; - var start = this.pos; - var value = i64_new(0); - var i64_1 = i64_new(1); - var sepEnd = start; - var end = this.end; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c == 48 /* _0 */) { - // value = (value << 1); - value = i64_shl(value, i64_1); - } - else if (c == 49 /* _1 */) { - // value = (value << 1) + 1; - value = i64_add(i64_shl(value, i64_1), i64_1); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - this.pos = pos + 1; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Binary_digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readFloat = function () { - // var text = this.source.text; - // if (text.charCodeAt(this.pos) == CharCode._0 && this.pos + 2 < this.end) { - // switch (text.charCodeAt(this.pos + 1)) { - // case CharCode.X: - // case CharCode.x: { - // this.pos += 2; - // return this.readHexFloat(); - // } - // } - // } - return this.readDecimalFloat(); - }; - Tokenizer.prototype.readDecimalFloat = function () { - // TODO: numeric separators (parseFloat can't handle these) - var start = this.pos; - var end = this.end; - var text = this.source.text; - while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { - ++this.pos; - } - if (this.pos < end && text.charCodeAt(this.pos) == 46 /* DOT */) { - ++this.pos; - while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { - ++this.pos; - } - } - if (this.pos < end) { - var c = text.charCodeAt(this.pos); - if (c == 101 /* e */ || c == 69 /* E */) { - if (++this.pos < end && - (c = text.charCodeAt(this.pos)) == 45 /* MINUS */ || c == 43 /* PLUS */ && - util_1.isDecimalDigit(text.charCodeAt(this.pos + 1))) { - ++this.pos; - } - while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { - ++this.pos; - } - } - } - return parseFloat(text.substring(start, this.pos)); - }; - Tokenizer.prototype.readHexFloat = function () { - throw new Error("not implemented"); // TBD - }; - Tokenizer.prototype.readUnicodeEscape = function () { - var remain = 4; - var value = 0; - var end = this.end; - var text = this.source.text; - while (this.pos < end) { - var c = text.charCodeAt(this.pos++); - if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { - value = (value << 4) + c - 48 /* _0 */; - } - else if (c >= 65 /* A */ && c <= 70 /* F */) { - value = (value << 4) + c + (10 - 65 /* A */); - } - else if (c >= 97 /* a */ && c <= 102 /* f */) { - value = (value << 4) + c + (10 - 97 /* a */); - } - else { - this.error(diagnostics_1.DiagnosticCode.Hexadecimal_digit_expected, this.range(this.pos - 1, this.pos)); - return ""; - } - if (--remain == 0) - break; - } - if (remain) { - this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(this.pos)); - return ""; - } - return String.fromCharCode(value); - }; - Tokenizer.prototype.readExtendedUnicodeEscape = function () { - var start = this.pos; - var value = this.readHexInteger(); - var value32 = i64_low(value); - var invalid = false; - assert(!i64_high(value)); - if (value32 > 0x10FFFF) { - this.error(diagnostics_1.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive, this.range(start, this.pos)); - invalid = true; - } - var end = this.end; - var text = this.source.text; - if (this.pos >= end) { - this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(start, end)); - invalid = true; - } - else if (text.charCodeAt(this.pos) == 125 /* CLOSEBRACE */) { - ++this.pos; - } - else { - this.error(diagnostics_1.DiagnosticCode.Unterminated_Unicode_escape_sequence, this.range(start, this.pos)); - invalid = true; - } - if (invalid) - return ""; - return value32 < 65536 - ? String.fromCharCode(value32) - : String.fromCharCode(((value32 - 65536) >>> 10) + 0xD800, ((value32 - 65536) & 1023) + 0xDC00); - }; - Tokenizer.prototype.finish = function () { - }; - return Tokenizer; -}(diagnostics_1.DiagnosticEmitter)); -exports.Tokenizer = Tokenizer; -/** Tokenizer state as returned by {@link Tokenizer#mark} and consumed by {@link Tokenizer#reset}. */ -var State = /** @class */ (function () { - function State() { - } - return State; -}()); -exports.State = State; -// Reusable state object to reduce allocations -var reusableState = null; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rva2VuaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRyxDQUFBLEtBQUs7Ozs7Ozs7Ozs7Ozs7OztBQUVSLDZDQUl1QjtBQUV2Qiw2QkFHZTtBQUVmLCtCQVNnQjtBQUVoQix5QkFBeUI7QUFDekIsSUFBWSxLQXNJWDtBQXRJRCxXQUFZLEtBQUs7SUFFZixXQUFXO0lBQ1gsb0ZBQW9GO0lBRXBGLHlDQUFRLENBQUE7SUFDUiw2QkFBRSxDQUFBO0lBQ0YsbUNBQUssQ0FBQTtJQUNMLG1DQUFLLENBQUE7SUFDTCxtQ0FBSyxDQUFBO0lBQ0wsaUNBQUksQ0FBQTtJQUNKLG1DQUFLLENBQUE7SUFDTCxtQ0FBSyxDQUFBO0lBQ0wsbUNBQUssQ0FBQTtJQUNMLHlDQUFRLENBQUE7SUFDUixnREFBVyxDQUFBO0lBQ1gsMENBQVEsQ0FBQTtJQUNSLHdDQUFPLENBQUE7SUFDUCx3Q0FBTyxDQUFBO0lBQ1Asc0NBQU0sQ0FBQTtJQUNOLDhCQUFFLENBQUE7SUFDRixrQ0FBSSxDQUFBO0lBQ0osa0NBQUksQ0FBQTtJQUNKLHNDQUFNLENBQUE7SUFDTix3Q0FBTyxDQUFBO0lBQ1Asb0NBQUssQ0FBQTtJQUNMLHdDQUFPLENBQUE7SUFDUCxnQ0FBRyxDQUFBO0lBQ0gsa0NBQUksQ0FBQTtJQUNKLDBDQUFRLENBQUE7SUFDUixnQ0FBRyxDQUFBO0lBQ0gsOEJBQUUsQ0FBQTtJQUNGLDhDQUFVLENBQUE7SUFDVixzQ0FBTSxDQUFBO0lBQ04sOEJBQUUsQ0FBQTtJQUNGLDhDQUFVLENBQUE7SUFDViw0Q0FBUyxDQUFBO0lBQ1QsOEJBQUUsQ0FBQTtJQUNGLG9DQUFLLENBQUE7SUFDTCxnQ0FBRyxDQUFBO0lBQ0gsc0NBQU0sQ0FBQTtJQUNOLDRDQUFTLENBQUE7SUFDVCxnQ0FBRyxDQUFBO0lBQ0gsa0NBQUksQ0FBQTtJQUNKLDhCQUFFLENBQUE7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QUM7SUFBRCxZQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7QUFQWSxzQkFBSztBQVNsQiw4Q0FBOEM7QUFDOUMsSUFBSSxhQUFhLEdBQWlCLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBUeXBlU2NyaXB0IHRva2VuaXplciBtb2RpZmllZCBmb3IgQXNzZW1ibHlTY3JpcHQuXG4gKlxuICogU2tpcHMgb3ZlciB0cml2aWEgYW5kIHByb3ZpZGVzIGEgZ2VuZXJhbCBtYXJrL3Jlc2V0IG1lY2hhbmlzbSBmb3IgdGhlIHBhcnNlciB0byB1dGlsaXplIG9uXG4gKiBhbWJpZ3VvdXMgdG9rZW5zLlxuICpcbiAqIEBtb2R1bGUgdG9rZW5pemVyXG4gKi8vKioqL1xuXG5pbXBvcnQge1xuICBEaWFnbm9zdGljQ29kZSxcbiAgRGlhZ25vc3RpY01lc3NhZ2UsXG4gIERpYWdub3N0aWNFbWl0dGVyXG59IGZyb20gXCIuL2RpYWdub3N0aWNzXCI7XG5cbmltcG9ydCB7XG4gIFNvdXJjZSxcbiAgQ29tbWVudEtpbmRcbn0gZnJvbSBcIi4vYXN0XCI7XG5cbmltcG9ydCB7XG4gIENoYXJDb2RlLFxuICBpc0xpbmVCcmVhayxcbiAgaXNXaGl0ZVNwYWNlLFxuICBpc0lkZW50aWZpZXJTdGFydCxcbiAgaXNJZGVudGlmaWVyUGFydCxcbiAgaXNEZWNpbWFsRGlnaXQsXG4gIGlzT2N0YWxEaWdpdCxcbiAgaXNLZXl3b3JkQ2hhcmFjdGVyXG59IGZyb20gXCIuL3V0aWxcIjtcblxuLyoqIE5hbWVkIHRva2VuIHR5cGVzLiAqL1xuZXhwb3J0IGVudW0gVG9rZW4ge1xuXG4gIC8vIGtleXdvcmRzXG4gIC8vIGRpc2NhcmRlZDogQU5ZLCBCT09MRUFOLCBORVZFUiwgTlVNQkVSLCBTVFJJTkcsIFNZTUJPTCwgVU5ERUZJTkVELCBMRVNTVEhBTl9TTEFTSFxuXG4gIEFCU1RSQUNULFxuICBBUyxcbiAgQVNZTkMsXG4gIEFXQUlULCAgICAgICAgLy8gRVMyMDE3XG4gIEJSRUFLLCAgICAgICAgLy8gRVMyMDE3XG4gIENBU0UsICAgICAgICAgLy8gRVMyMDE3XG4gIENBVENILCAgICAgICAgLy8gRVMyMDE3XG4gIENMQVNTLCAgICAgICAgLy8gRVMyMDE3XG4gIENPTlNULCAgICAgICAgLy8gRVMyMDE3XG4gIENPTlRJTlVFLCAgICAgLy8gRVMyMDE3XG4gIENPTlNUUlVDVE9SLFxuICBERUJVR0dFUiwgICAgIC8vIEVTMjAxN1xuICBERUNMQVJFLFxuICBERUZBVUxULCAgICAgIC8vIEVTMjAxN1xuICBERUxFVEUsICAgICAgIC8vIEVTMjAxN1xuICBETywgICAgICAgICAgIC8vIEVTMjAxN1xuICBFTFNFLCAgICAgICAgIC8vIEVTMjAxN1xuICBFTlVNLCAgICAgICAgIC8vIEVTMjAxNyBmdXR1cmVcbiAgRVhQT1JULCAgICAgICAvLyBFUzIwMTdcbiAgRVhURU5EUywgICAgICAvLyBFUzIwMTdcbiAgRkFMU0UsICAgICAgICAvLyBFU1xuICBGSU5BTExZLCAgICAgIC8vIEVTMjAxN1xuICBGT1IsICAgICAgICAgIC8vIEVTMjAxN1xuICBGUk9NLCAgICAgICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgRlVOQ1RJT04sICAgICAvLyBFUzIwMTdcbiAgR0VULFxuICBJRiwgICAgICAgICAgIC8vIEVTMjAxN1xuICBJTVBMRU1FTlRTLCAgIC8vIEVTMjAxNyBub24tbGV4aWNhbFxuICBJTVBPUlQsICAgICAgIC8vIEVTMjAxN1xuICBJTiwgICAgICAgICAgIC8vIEVTMjAxN1xuICBJTlNUQU5DRU9GLCAgIC8vIEVTMjAxN1xuICBJTlRFUkZBQ0UsICAgIC8vIEVTMjAxNyBub24tbGV4aWNhbFxuICBJUyxcbiAgS0VZT0YsXG4gIExFVCwgICAgICAgICAgLy8gRVMyMDE3IG5vbi1sZXhpY2FsXG4gIE1PRFVMRSwgICAgICAgLy8gQVMgcG9zc2libGUgaWRlbnRpZmllclxuICBOQU1FU1BBQ0UsICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgTkVXLCAgICAgICAgICAvLyBFUzIwMTdcbiAgTlVMTCwgICAgICAgICAvLyBFU1xuICBPRixcbiAgUEFDS0FHRSwgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFJJVkFURSwgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFJPVEVDVEVELCAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFVCTElDLCAgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUkVBRE9OTFksXG4gIFJFVFVSTiwgICAgICAgLy8gRVMyMDE3XG4gIFNFVCxcbiAgU1RBVElDLCAgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgU1VQRVIsICAgICAgICAvLyBFUzIwMTdcbiAgU1dJVENILCAgICAgICAvLyBFUzIwMTdcbiAgVEhJUywgICAgICAgICAvLyBFUzIwMTdcbiAgVEhST1csICAgICAgICAvLyBFUzIwMTdcbiAgVFJVRSwgICAgICAgICAvLyBFU1xuICBUUlksICAgICAgICAgIC8vIEVTMjAxN1xuICBUWVBFLCAgICAgICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgVFlQRU9GLCAgICAgICAvLyBFUzIwMTdcbiAgVkFSLCAgICAgICAgICAvLyBFUzIwMTdcbiAgVk9JRCwgICAgICAgICAvLyBFUzIwMTdcbiAgV0hJTEUsICAgICAgICAvLyBFUzIwMTdcbiAgV0lUSCwgICAgICAgICAvLyBFUzIwMTdcbiAgWUlFTEQsICAgICAgICAvLyBFUzIwMTdcblxuICAvLyBwdW5jdHVhdGlvblxuXG4gIE9QRU5CUkFDRSxcbiAgQ0xPU0VCUkFDRSxcbiAgT1BFTlBBUkVOLFxuICBDTE9TRVBBUkVOLFxuICBPUEVOQlJBQ0tFVCxcbiAgQ0xPU0VCUkFDS0VULFxuICBET1QsXG4gIERPVF9ET1RfRE9ULFxuICBTRU1JQ09MT04sXG4gIENPTU1BLFxuICBMRVNTVEhBTixcbiAgR1JFQVRFUlRIQU4sXG4gIExFU1NUSEFOX0VRVUFMUyxcbiAgR1JFQVRFUlRIQU5fRVFVQUxTLFxuICBFUVVBTFNfRVFVQUxTLFxuICBFWENMQU1BVElPTl9FUVVBTFMsXG4gIEVRVUFMU19FUVVBTFNfRVFVQUxTLFxuICBFWENMQU1BVElPTl9FUVVBTFNfRVFVQUxTLFxuICBFUVVBTFNfR1JFQVRFUlRIQU4sXG4gIFBMVVMsXG4gIE1JTlVTLFxuICBBU1RFUklTS19BU1RFUklTSyxcbiAgQVNURVJJU0ssXG4gIFNMQVNILFxuICBQRVJDRU5ULFxuICBQTFVTX1BMVVMsXG4gIE1JTlVTX01JTlVTLFxuICBMRVNTVEhBTl9MRVNTVEhBTixcbiAgR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU4sXG4gIEdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0dSRUFURVJUSEFOLFxuICBBTVBFUlNBTkQsXG4gIEJBUixcbiAgQ0FSRVQsXG4gIEVYQ0xBTUFUSU9OLFxuICBUSUxERSxcbiAgQU1QRVJTQU5EX0FNUEVSU0FORCxcbiAgQkFSX0JBUixcbiAgUVVFU1RJT04sXG4gIENPTE9OLFxuICBFUVVBTFMsXG4gIFBMVVNfRVFVQUxTLFxuICBNSU5VU19FUVVBTFMsXG4gIEFTVEVSSVNLX0VRVUFMUyxcbiAgQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTLFxuICBTTEFTSF9FUVVBTFMsXG4gIFBFUkNFTlRfRVFVQUxTLFxuICBMRVNTVEhBTl9MRVNTVEhBTl9FUVVBTFMsXG4gIEdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0VRVUFMUyxcbiAgR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fRVFVQUxTLFxuICBBTVBFUlNBTkRfRVFVQUxTLFxuICBCQVJfRVFVQUxTLFxuICBDQVJFVF9FUVVBTFMsXG4gIEFULFxuXG4gIC8vIGxpdGVyYWxzXG5cbiAgSURFTlRJRklFUixcbiAgU1RSSU5HTElURVJBTCxcbiAgSU5URUdFUkxJVEVSQUwsXG4gIEZMT0FUTElURVJBTCxcblxuICAvLyBtZXRhXG5cbiAgSU5WQUxJRCxcbiAgRU5ET0ZGSUxFXG59XG5cbmV4cG9ydCBlbnVtIElkZW50aWZpZXJIYW5kbGluZyB7XG4gIERFRkFVTFQsXG4gIFBSRUZFUixcbiAgQUxXQVlTXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbkZyb21LZXl3b3JkKHRleHQ6IHN0cmluZyk6IFRva2VuIHtcbiAgYXNzZXJ0KHRleHQubGVuZ3RoKTtcbiAgc3dpdGNoICh0ZXh0LmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXJDb2RlLmE6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwiYWJzdHJhY3RcIjogcmV0dXJuIFRva2VuLkFCU1RSQUNUO1xuICAgICAgICBjYXNlIFwiYXNcIjogcmV0dXJuIFRva2VuLkFTO1xuICAgICAgICBjYXNlIFwiYXN5bmNcIjogcmV0dXJuIFRva2VuLkFTWU5DO1xuICAgICAgICBjYXNlIFwiYXdhaXRcIjogcmV0dXJuIFRva2VuLkFXQUlUO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuYjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJicmVha1wiOiByZXR1cm4gVG9rZW4uQlJFQUs7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5jOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImNhc2VcIjogcmV0dXJuIFRva2VuLkNBU0U7XG4gICAgICAgIGNhc2UgXCJjYXRjaFwiOiByZXR1cm4gVG9rZW4uQ0FUQ0g7XG4gICAgICAgIGNhc2UgXCJjbGFzc1wiOiByZXR1cm4gVG9rZW4uQ0xBU1M7XG4gICAgICAgIGNhc2UgXCJjb250aW51ZVwiOiByZXR1cm4gVG9rZW4uQ09OVElOVUU7XG4gICAgICAgIGNhc2UgXCJjb25zdFwiOiByZXR1cm4gVG9rZW4uQ09OU1Q7XG4gICAgICAgIGNhc2UgXCJjb25zdHJ1Y3RvclwiOiByZXR1cm4gVG9rZW4uQ09OU1RSVUNUT1I7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5kOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImRlYnVnZ2VyXCI6IHJldHVybiBUb2tlbi5ERUJVR0dFUjtcbiAgICAgICAgY2FzZSBcImRlY2xhcmVcIjogcmV0dXJuIFRva2VuLkRFQ0xBUkU7XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0XCI6IHJldHVybiBUb2tlbi5ERUZBVUxUO1xuICAgICAgICBjYXNlIFwiZGVsZXRlXCI6IHJldHVybiBUb2tlbi5ERUxFVEU7XG4gICAgICAgIGNhc2UgXCJkb1wiOiByZXR1cm4gVG9rZW4uRE87XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5lOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImVsc2VcIjogcmV0dXJuIFRva2VuLkVMU0U7XG4gICAgICAgIGNhc2UgXCJlbnVtXCI6IHJldHVybiBUb2tlbi5FTlVNO1xuICAgICAgICBjYXNlIFwiZXhwb3J0XCI6IHJldHVybiBUb2tlbi5FWFBPUlQ7XG4gICAgICAgIGNhc2UgXCJleHRlbmRzXCI6IHJldHVybiBUb2tlbi5FWFRFTkRTO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuZjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJmYWxzZVwiOiByZXR1cm4gVG9rZW4uRkFMU0U7XG4gICAgICAgIGNhc2UgXCJmaW5hbGx5XCI6IHJldHVybiBUb2tlbi5GSU5BTExZO1xuICAgICAgICBjYXNlIFwiZm9yXCI6IHJldHVybiBUb2tlbi5GT1I7XG4gICAgICAgIGNhc2UgXCJmcm9tXCI6IHJldHVybiBUb2tlbi5GUk9NO1xuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjogcmV0dXJuIFRva2VuLkZVTkNUSU9OO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuZzoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJnZXRcIjogcmV0dXJuIFRva2VuLkdFVDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLmk6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwiaWZcIjogcmV0dXJuIFRva2VuLklGO1xuICAgICAgICBjYXNlIFwiaW1wbGVtZW50c1wiOiByZXR1cm4gVG9rZW4uSU1QTEVNRU5UUztcbiAgICAgICAgY2FzZSBcImltcG9ydFwiOiByZXR1cm4gVG9rZW4uSU1QT1JUO1xuICAgICAgICBjYXNlIFwiaW5cIjogcmV0dXJuIFRva2VuLklOO1xuICAgICAgICBjYXNlIFwiaW5zdGFuY2VvZlwiOiByZXR1cm4gVG9rZW4uSU5TVEFOQ0VPRjtcbiAgICAgICAgY2FzZSBcImludGVyZmFjZVwiOiByZXR1cm4gVG9rZW4uSU5URVJGQUNFO1xuICAgICAgICBjYXNlIFwiaXNcIjogcmV0dXJuIFRva2VuLklTO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuazoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJrZXlvZlwiOiByZXR1cm4gVG9rZW4uS0VZT0Y7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5sOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImxldFwiOiByZXR1cm4gVG9rZW4uTEVUO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUubToge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJtb2R1bGVcIjogcmV0dXJuIFRva2VuLk1PRFVMRTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLm46IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwibmFtZXNwYWNlXCI6IHJldHVybiBUb2tlbi5OQU1FU1BBQ0U7XG4gICAgICAgIGNhc2UgXCJuZXdcIjogcmV0dXJuIFRva2VuLk5FVztcbiAgICAgICAgY2FzZSBcIm51bGxcIjogcmV0dXJuIFRva2VuLk5VTEw7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5vOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcIm9mXCI6IHJldHVybiBUb2tlbi5PRjtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLnA6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwicGFja2FnZVwiOiByZXR1cm4gVG9rZW4uUEFDS0FHRTtcbiAgICAgICAgY2FzZSBcInByaXZhdGVcIjogcmV0dXJuIFRva2VuLlBSSVZBVEU7XG4gICAgICAgIGNhc2UgXCJwcm90ZWN0ZWRcIjogcmV0dXJuIFRva2VuLlBST1RFQ1RFRDtcbiAgICAgICAgY2FzZSBcInB1YmxpY1wiOiByZXR1cm4gVG9rZW4uUFVCTElDO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUucjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJyZWFkb25seVwiOiByZXR1cm4gVG9rZW4uUkVBRE9OTFk7XG4gICAgICAgIGNhc2UgXCJyZXR1cm5cIjogcmV0dXJuIFRva2VuLlJFVFVSTjtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLnM6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwic2V0XCI6IHJldHVybiBUb2tlbi5TRVQ7XG4gICAgICAgIGNhc2UgXCJzdGF0aWNcIjogcmV0dXJuIFRva2VuLlNUQVRJQztcbiAgICAgICAgY2FzZSBcInN1cGVyXCI6IHJldHVybiBUb2tlbi5TVVBFUjtcbiAgICAgICAgY2FzZSBcInN3aXRjaFwiOiByZXR1cm4gVG9rZW4uU1dJVENIO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUudDoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJ0aGlzXCI6IHJldHVybiBUb2tlbi5USElTO1xuICAgICAgICBjYXNlIFwidGhyb3dcIjogcmV0dXJuIFRva2VuLlRIUk9XO1xuICAgICAgICBjYXNlIFwidHJ1ZVwiOiByZXR1cm4gVG9rZW4uVFJVRTtcbiAgICAgICAgY2FzZSBcInRyeVwiOiByZXR1cm4gVG9rZW4uVFJZO1xuICAgICAgICBjYXNlIFwidHlwZVwiOiByZXR1cm4gVG9rZW4uVFlQRTtcbiAgICAgICAgY2FzZSBcInR5cGVvZlwiOiByZXR1cm4gVG9rZW4uVFlQRU9GO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUudjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJ2YXJcIjogcmV0dXJuIFRva2VuLlZBUjtcbiAgICAgICAgY2FzZSBcInZvaWRcIjogcmV0dXJuIFRva2VuLlZPSUQ7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS53OiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcIndoaWxlXCI6IHJldHVybiBUb2tlbi5XSElMRTtcbiAgICAgICAgY2FzZSBcIndpdGhcIjogcmV0dXJuIFRva2VuLldJVEg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS55OiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcInlpZWxkXCI6IHJldHVybiBUb2tlbi5ZSUVMRDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVG9rZW4uSU5WQUxJRDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRva2VuSXNBbHNvSWRlbnRpZmllcih0b2tlbjogVG9rZW4pOiBib29sIHtcbiAgc3dpdGNoICh0b2tlbikge1xuICAgIGNhc2UgVG9rZW4uQUJTVFJBQ1Q6XG4gICAgY2FzZSBUb2tlbi5BUzpcbiAgICBjYXNlIFRva2VuLkNPTlNUUlVDVE9SOlxuICAgIGNhc2UgVG9rZW4uREVDTEFSRTpcbiAgICBjYXNlIFRva2VuLkRFTEVURTpcbiAgICBjYXNlIFRva2VuLkZST006XG4gICAgY2FzZSBUb2tlbi5GT1I6XG4gICAgY2FzZSBUb2tlbi5HRVQ6XG4gICAgY2FzZSBUb2tlbi5JTlNUQU5DRU9GOlxuICAgIGNhc2UgVG9rZW4uSVM6XG4gICAgY2FzZSBUb2tlbi5LRVlPRjpcbiAgICBjYXNlIFRva2VuLk1PRFVMRTpcbiAgICBjYXNlIFRva2VuLk5BTUVTUEFDRTpcbiAgICBjYXNlIFRva2VuLk5VTEw6XG4gICAgY2FzZSBUb2tlbi5SRUFET05MWTpcbiAgICBjYXNlIFRva2VuLlNFVDpcbiAgICBjYXNlIFRva2VuLlRZUEU6XG4gICAgY2FzZSBUb2tlbi5WT0lEOiByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSWxsZWdhbFZhcmlhYmxlSWRlbnRpZmllcihuYW1lOiBzdHJpbmcpOiBib29sIHtcbiAgYXNzZXJ0KG5hbWUubGVuZ3RoKTtcbiAgc3dpdGNoIChuYW1lLmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXJDb2RlLmQ6IHJldHVybiBuYW1lID09IFwiZGVsZXRlXCI7XG4gICAgY2FzZSBDaGFyQ29kZS5mOiByZXR1cm4gbmFtZSA9PSBcImZvclwiO1xuICAgIGNhc2UgQ2hhckNvZGUuaTogcmV0dXJuIG5hbWUgPT0gXCJpbnN0YW5jZW9mXCI7XG4gICAgY2FzZSBDaGFyQ29kZS5uOiByZXR1cm4gbmFtZSA9PSBcIm51bGxcIjtcbiAgICBjYXNlIENoYXJDb2RlLnY6IHJldHVybiBuYW1lID09IFwidm9pZFwiO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZXJhdG9yVG9rZW5Ub1N0cmluZyh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgY2FzZSBUb2tlbi5ERUxFVEU6IHJldHVybiBcImRlbGV0ZVwiO1xuICAgIGNhc2UgVG9rZW4uSU46IHJldHVybiBcImluXCI7XG4gICAgY2FzZSBUb2tlbi5JTlNUQU5DRU9GOiByZXR1cm4gXCJpbnN0YW5jZW9mXCI7XG4gICAgY2FzZSBUb2tlbi5ORVc6IHJldHVybiBcIm5ld1wiO1xuICAgIGNhc2UgVG9rZW4uVFlQRU9GOiByZXR1cm4gXCJ0eXBlb2ZcIjtcbiAgICBjYXNlIFRva2VuLlZPSUQ6IHJldHVybiBcInZvaWRcIjtcbiAgICBjYXNlIFRva2VuLllJRUxEOiByZXR1cm4gXCJ5aWVsZFwiO1xuICAgIGNhc2UgVG9rZW4uRE9UX0RPVF9ET1Q6IHJldHVybiBcIi4uLlwiO1xuICAgIGNhc2UgVG9rZW4uQ09NTUE6IHJldHVybiBcIixcIjtcbiAgICBjYXNlIFRva2VuLkxFU1NUSEFOOiByZXR1cm4gXCI8XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTjogcmV0dXJuIFwiPlwiO1xuICAgIGNhc2UgVG9rZW4uTEVTU1RIQU5fRVFVQUxTOiByZXR1cm4gXCI8PVwiO1xuICAgIGNhc2UgVG9rZW4uR1JFQVRFUlRIQU5fRVFVQUxTOiByZXR1cm4gXCI+PVwiO1xuICAgIGNhc2UgVG9rZW4uRVFVQUxTX0VRVUFMUzogcmV0dXJuIFwiPT1cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMUzogcmV0dXJuIFwiIT1cIjtcbiAgICBjYXNlIFRva2VuLkVRVUFMU19FUVVBTFNfRVFVQUxTOiByZXR1cm4gXCI9PT1cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMU19FUVVBTFM6IHJldHVybiBcIiE9PVwiO1xuICAgIGNhc2UgVG9rZW4uUExVUzogcmV0dXJuIFwiK1wiO1xuICAgIGNhc2UgVG9rZW4uTUlOVVM6IHJldHVybiBcIi1cIjtcbiAgICBjYXNlIFRva2VuLkFTVEVSSVNLX0FTVEVSSVNLOiByZXR1cm4gXCIqKlwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0s6IHJldHVybiBcIipcIjtcbiAgICBjYXNlIFRva2VuLlNMQVNIOiByZXR1cm4gXCIvXCI7XG4gICAgY2FzZSBUb2tlbi5QRVJDRU5UOiByZXR1cm4gXCIlXCI7XG4gICAgY2FzZSBUb2tlbi5QTFVTX1BMVVM6IHJldHVybiBcIisrXCI7XG4gICAgY2FzZSBUb2tlbi5NSU5VU19NSU5VUzogcmV0dXJuIFwiLS1cIjtcbiAgICBjYXNlIFRva2VuLkxFU1NUSEFOX0xFU1NUSEFOOiByZXR1cm4gXCI8PFwiO1xuICAgIGNhc2UgVG9rZW4uR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU46IHJldHVybiBcIj4+XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTjogcmV0dXJuIFwiPj4+XCI7XG4gICAgY2FzZSBUb2tlbi5BTVBFUlNBTkQ6IHJldHVybiBcIiZcIjtcbiAgICBjYXNlIFRva2VuLkJBUjogcmV0dXJuIFwifFwiO1xuICAgIGNhc2UgVG9rZW4uQ0FSRVQ6IHJldHVybiBcIl5cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OOiByZXR1cm4gXCIhXCI7XG4gICAgY2FzZSBUb2tlbi5USUxERTogcmV0dXJuIFwiflwiO1xuICAgIGNhc2UgVG9rZW4uQU1QRVJTQU5EX0FNUEVSU0FORDogcmV0dXJuIFwiJiZcIjtcbiAgICBjYXNlIFRva2VuLkJBUl9CQVI6IHJldHVybiBcInx8XCI7XG4gICAgY2FzZSBUb2tlbi5FUVVBTFM6IHJldHVybiBcIj1cIjtcbiAgICBjYXNlIFRva2VuLlBMVVNfRVFVQUxTOiByZXR1cm4gXCIrPVwiO1xuICAgIGNhc2UgVG9rZW4uTUlOVVNfRVFVQUxTOiByZXR1cm4gXCItPVwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0tfRVFVQUxTOiByZXR1cm4gXCIqPVwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTOiByZXR1cm4gXCIqKj1cIjtcbiAgICBjYXNlIFRva2VuLlNMQVNIX0VRVUFMUzogcmV0dXJuIFwiLz1cIjtcbiAgICBjYXNlIFRva2VuLlBFUkNFTlRfRVFVQUxTOiByZXR1cm4gXCIlPVwiO1xuICAgIGNhc2UgVG9rZW4uTEVTU1RIQU5fTEVTU1RIQU5fRVFVQUxTOiByZXR1cm4gXCI8PD1cIjtcbiAgICBjYXNlIFRva2VuLkdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0VRVUFMUzogcmV0dXJuIFwiPj49XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9FUVVBTFM6IHJldHVybiBcIj4+Pj1cIjtcbiAgICBjYXNlIFRva2VuLkFNUEVSU0FORF9FUVVBTFM6IHJldHVybiBcIiY9XCI7XG4gICAgY2FzZSBUb2tlbi5CQVJfRVFVQUxTOiByZXR1cm4gXCJ8PVwiO1xuICAgIGNhc2UgVG9rZW4uQ0FSRVRfRVFVQUxTOiByZXR1cm4gXCJePVwiO1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGFzc2VydChmYWxzZSk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhbmdlIHtcblxuICBzb3VyY2U6IFNvdXJjZTtcbiAgc3RhcnQ6IGkzMjtcbiAgZW5kOiBpMzI7XG5cbiAgLy8gVE9ETzogc2V0IHRoZXNlIHdoaWxlIHRva2VuaXppbmdcbiAgLy8gbGluZTogaTMyO1xuICAvLyBjb2x1bW46IGkzMjtcblxuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IFNvdXJjZSwgc3RhcnQ6IGkzMiwgZW5kOiBpMzIpIHtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cblxuICBzdGF0aWMgam9pbihhOiBSYW5nZSwgYjogUmFuZ2UpOiBSYW5nZSB7XG4gICAgaWYgKGEuc291cmNlICE9IGIuc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoXCJzb3VyY2UgbWlzbWF0Y2hcIik7XG4gICAgcmV0dXJuIG5ldyBSYW5nZShhLnNvdXJjZSxcbiAgICAgIGEuc3RhcnQgPCBiLnN0YXJ0ID8gYS5zdGFydCA6IGIuc3RhcnQsXG4gICAgICBhLmVuZCA+IGIuZW5kID8gYS5lbmQgOiBiLmVuZFxuICAgICk7XG4gIH1cblxuICBnZXQgYXRTdGFydCgpOiBSYW5nZSB7XG4gICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnNvdXJjZSwgdGhpcy5zdGFydCwgdGhpcy5zdGFydCk7XG4gIH1cblxuICBnZXQgYXRFbmQoKTogUmFuZ2Uge1xuICAgIHJldHVybiBuZXcgUmFuZ2UodGhpcy5zb3VyY2UsIHRoaXMuZW5kLCB0aGlzLmVuZCk7XG4gIH1cblxuICBnZXQgbGluZSgpOiBpMzIge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgbGluZSA9IDE7XG4gICAgZm9yIChsZXQgcG9zID0gdGhpcy5zdGFydDsgcG9zID49IDA7IC0tcG9zKSB7XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KHBvcykgPT0gQ2hhckNvZGUuTElORUZFRUQpIGxpbmUrKztcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH1cblxuICBnZXQgY29sdW1uKCk6IGkzMiB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBjb2x1bW4gPSAwO1xuICAgIGZvciAobGV0IHBvcyA9IHRoaXMuc3RhcnQgLSAxOyBwb3MgPj0gMDsgLS1wb3MpIHtcbiAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQocG9zKSA9PSBDaGFyQ29kZS5MSU5FRkVFRCkgYnJlYWs7XG4gICAgICArK2NvbHVtbjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbHVtbjtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLnRleHQuc3Vic3RyaW5nKHRoaXMuc3RhcnQsIHRoaXMuZW5kKTtcbiAgfVxuXG4gIGRlYnVnSW5mb1JlZjogdXNpemUgPSAwO1xufVxuXG5kZWNsYXJlIGZ1bmN0aW9uIHBhcnNlRmxvYXQoc3RyOiBzdHJpbmcpOiBmNjQ7XG5cbi8qKiBIYW5kbGVyIGZvciBpbnRlcmNlcHRpbmcgY29tbWVudHMgd2hpbGUgdG9rZW5pemluZy4gKi9cbmV4cG9ydCB0eXBlIENvbW1lbnRIYW5kbGVyID0gKGtpbmQ6IENvbW1lbnRLaW5kLCB0ZXh0OiBzdHJpbmcsIHJhbmdlOiBSYW5nZSkgPT4gdm9pZDtcblxuLyoqIFRva2VuaXplcyBhIHNvdXJjZSB0byBpbmRpdmlkdWFsIHtAbGluayBUb2tlbn1zLiAqL1xuZXhwb3J0IGNsYXNzIFRva2VuaXplciBleHRlbmRzIERpYWdub3N0aWNFbWl0dGVyIHtcblxuICBzb3VyY2U6IFNvdXJjZTtcbiAgZW5kOiBpMzIgPSAwO1xuXG4gIHBvczogaTMyID0gMDtcbiAgdG9rZW46IFRva2VuID0gLTE7XG4gIHRva2VuUG9zOiBpMzIgPSAwO1xuXG4gIG5leHRUb2tlbjogVG9rZW4gPSAtMTtcbiAgbmV4dFRva2VuUG9zOiBpMzIgPSAwO1xuICBuZXh0VG9rZW5Pbk5ld0xpbmU6IGJvb2wgPSBmYWxzZTtcblxuICBvbkNvbW1lbnQ6IENvbW1lbnRIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIENvbnN0cnVjdHMgYSBuZXcgdG9rZW5pemVyLiAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IFNvdXJjZSwgZGlhZ25vc3RpY3M6IERpYWdub3N0aWNNZXNzYWdlW10gfCBudWxsID0gbnVsbCkge1xuICAgIHN1cGVyKGRpYWdub3N0aWNzKTtcblxuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgIHRoaXMucG9zID0gMDtcbiAgICB0aGlzLmVuZCA9IHNvdXJjZS50ZXh0Lmxlbmd0aDtcbiAgICB0aGlzLmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3MgfHwgbmV3IEFycmF5KCk7XG5cbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHRleHQgPSBzb3VyY2UudGV4dDtcblxuICAgIC8vIHNraXAgYm9tXG4gICAgaWYgKFxuICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuQllURU9SREVSTUFSS1xuICAgICkge1xuICAgICAgKyt0aGlzLnBvcztcbiAgICB9XG5cbiAgICAvLyBza2lwIHNoZWJhbmdcbiAgICBpZiAoXG4gICAgICB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuSEFTSCAmJlxuICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkgPT0gQ2hhckNvZGUuRVhDTEFNQVRJT05cbiAgICApIHtcbiAgICAgIHRoaXMucG9zICs9IDI7XG4gICAgICB3aGlsZSAoXG4gICAgICAgIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgIT0gQ2hhckNvZGUuTElORUZFRURcbiAgICAgICkge1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgfVxuICAgICAgLy8gJ25leHQnIG5vdyBzdGFydHMgYXQgbGYgb3IgZW9mXG4gICAgfVxuICB9XG5cbiAgbmV4dChpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxUKTogVG9rZW4ge1xuICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4gPSB0aGlzLnVuc2FmZU5leHQoaWRlbnRpZmllckhhbmRsaW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zYWZlTmV4dChcbiAgICBpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxULFxuICAgIG1heFRva2VuTGVuZ3RoOiBpMzIgPSBpMzIuTUFYX1ZBTFVFXG4gICk6IFRva2VuIHtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHdoaWxlICh0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgdGhpcy50b2tlblBvcyA9IHRoaXMucG9zO1xuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSUklBR0VSRVRVUk46IHtcbiAgICAgICAgICBpZiAoIShcbiAgICAgICAgICAgICsrdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuTElORUZFRURcbiAgICAgICAgICApKSBicmVhaztcbiAgICAgICAgICAvLyBvdGhlcndpc2UgZmFsbC10aHJvdWdoXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5UQUI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuVkVSVElDQUxUQUI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU1BBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRVhDTEFNQVRJT046IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMiAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkVRVUFMU1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5FWENMQU1BVElPTl9FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMUztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkVYQ0xBTUFUSU9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRE9VQkxFUVVPVEU6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU0lOR0xFUVVPVEU6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQkFDS1RJQ0s6IHsgLy8gVE9ET1xuICAgICAgICAgIHJldHVybiBUb2tlbi5TVFJJTkdMSVRFUkFMOyAvLyBleHBlY3RzIGEgY2FsbCB0byByZWFkU3RyaW5nXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5QRVJDRU5UOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuRVFVQUxTXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgcmV0dXJuIFRva2VuLlBFUkNFTlRfRVFVQUxTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uUEVSQ0VOVDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkFNUEVSU0FORDoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQU1QRVJTQU5EX0FNUEVSU0FORDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5BTVBFUlNBTkRfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uQU1QRVJTQU5EO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuT1BFTlBBUkVOOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uT1BFTlBBUkVOO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0xPU0VQQVJFTjoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNMT1NFUEFSRU47XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5BU1RFUklTSzoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQVNURVJJU0tfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5BU1RFUklTSykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4VG9rZW5MZW5ndGggPiAyICYmIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5BU1RFUklTS19BU1RFUklTSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkFTVEVSSVNLO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuUExVUzoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLlBMVVMpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLlBMVVNfUExVUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5QTFVTX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLlBMVVM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DT01NQToge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNPTU1BO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTUlOVVM6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5NSU5VUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVNfTUlOVVM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5ET1Q6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KGNocikpIHtcbiAgICAgICAgICAgICAgLS10aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkZMT0FUTElURVJBTDsgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEZsb2F0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMiAmJiB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgICAgICAgICAgY2hyID09IENoYXJDb2RlLkRPVCAmJlxuICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MgKyAxKSA9PSBDaGFyQ29kZS5ET1RcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uRE9UX0RPVF9ET1Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBUb2tlbi5ET1Q7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5TTEFTSDoge1xuICAgICAgICAgIGxldCBjb21tZW50U3RhcnRQb3MgPSB0aGlzLnBvcztcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5TTEFTSCkgeyAvLyBzaW5nbGUtbGluZVxuICAgICAgICAgICAgICBsZXQgY29tbWVudEtpbmQgPSBDb21tZW50S2luZC5MSU5FO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgKyAxIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkgPT0gQ2hhckNvZGUuU0xBU0hcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICBjb21tZW50S2luZCA9IENvbW1lbnRLaW5kLlRSSVBMRTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aGlsZSAoKyt0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkxJTkVGRUVEKSB7XG4gICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9uQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Db21tZW50KFxuICAgICAgICAgICAgICAgICAgY29tbWVudEtpbmQsXG4gICAgICAgICAgICAgICAgICB0ZXh0LnN1YnN0cmluZyhjb21tZW50U3RhcnRQb3MsIHRoaXMucG9zKSxcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UoY29tbWVudFN0YXJ0UG9zLCB0aGlzLnBvcylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5BU1RFUklTSykgeyAvLyBtdWx0aS1saW5lXG4gICAgICAgICAgICAgIGxldCBjbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgd2hpbGUgKCsrdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgICAgICBjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBjID09IENoYXJDb2RlLkFTVEVSSVNLICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpID09IENoYXJDb2RlLlNMQVNIXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIWNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBEaWFnbm9zdGljQ29kZS5fMF9leHBlY3RlZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UodGhpcy5wb3MpLCBcIiovXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub25Db21tZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbW1lbnQoXG4gICAgICAgICAgICAgICAgICBDb21tZW50S2luZC5CTE9DSyxcbiAgICAgICAgICAgICAgICAgIHRleHQuc3Vic3RyaW5nKGNvbW1lbnRTdGFydFBvcywgdGhpcy5wb3MpLFxuICAgICAgICAgICAgICAgICAgdGhpcy5yYW5nZShjb21tZW50U3RhcnRQb3MsIHRoaXMucG9zKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uU0xBU0hfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uU0xBU0g7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMTpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNTpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fODpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fOToge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRlc3RJbnRlZ2VyKClcbiAgICAgICAgICAgID8gVG9rZW4uSU5URUdFUkxJVEVSQUwgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEludGVnZXJcbiAgICAgICAgICAgIDogVG9rZW4uRkxPQVRMSVRFUkFMOyAgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEZsb2F0XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DT0xPTjoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNPTE9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU0VNSUNPTE9OOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uU0VNSUNPTE9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTEVTU1RIQU46IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5MRVNTVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4VG9rZW5MZW5ndGggPiAyICYmXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkVRVUFMU1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgIHJldHVybiBUb2tlbi5MRVNTVEhBTl9MRVNTVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOX0xFU1NUSEFOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5FUVVBTFMpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRVFVQUxTOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICBpZiAobWF4VG9rZW5MZW5ndGggPiAxICYmIHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICAgICAgICBsZXQgY2hyID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDIgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuRVFVQUxTXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkVRVUFMU19FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5HUkVBVEVSVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uRVFVQUxTX0dSRUFURVJUSEFOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uRVFVQUxTO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuR1JFQVRFUlRIQU46IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5HUkVBVEVSVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAobWF4VG9rZW5MZW5ndGggPiAyICYmIHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICAgICAgICAgICAgY2hyID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkdSRUFURVJUSEFOKSB7XG4gICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDMgJiYgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fRVFVQUxTO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0dSRUFURVJUSEFOO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLlFVRVNUSU9OOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uUVVFU1RJT047XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5PUEVOQlJBQ0tFVDoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLk9QRU5CUkFDS0VUO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0xPU0VCUkFDS0VUOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uQ0xPU0VCUkFDS0VUO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSRVQ6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICByZXR1cm4gVG9rZW4uQ0FSRVRfRVFVQUxTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uQ0FSRVQ7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5PUEVOQlJBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5PUEVOQlJBQ0U7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQVI6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5CQVIpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkJBUl9CQVI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQkFSX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkJBUjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkNMT1NFQlJBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5DTE9TRUJSQUNFO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuVElMREU6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5USUxERTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkFUOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uQVQ7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChjKSkge1xuICAgICAgICAgICAgaWYgKGlzS2V5d29yZENoYXJhY3RlcihjKSkge1xuICAgICAgICAgICAgICBsZXQgcG9zQmVmb3JlID0gdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICAgICArK3RoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgaXNJZGVudGlmaWVyUGFydChjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0tleXdvcmRDaGFyYWN0ZXIoYykpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9zID0gcG9zQmVmb3JlO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLklERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBrZXl3b3JkVGV4dCA9IHRleHQuc3Vic3RyaW5nKHBvc0JlZm9yZSwgdGhpcy5wb3MpO1xuICAgICAgICAgICAgICBsZXQga2V5d29yZFRva2VuID0gdG9rZW5Gcm9tS2V5d29yZChrZXl3b3JkVGV4dCk7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBrZXl3b3JkVG9rZW4gIT09IFRva2VuLklOVkFMSUQgJiZcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVySGFuZGxpbmcgIT09IElkZW50aWZpZXJIYW5kbGluZy5BTFdBWVMgJiZcbiAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgaWRlbnRpZmllckhhbmRsaW5nID09PSBJZGVudGlmaWVySGFuZGxpbmcuUFJFRkVSICYmXG4gICAgICAgICAgICAgICAgICB0b2tlbklzQWxzb0lkZW50aWZpZXIoa2V5d29yZFRva2VuKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXdvcmRUb2tlbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnBvcyA9IHBvc0JlZm9yZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBUb2tlbi5JREVOVElGSUVSOyAvLyBleHBlY3RzIGEgY2FsbCB0byByZWFkSWRlbnRpZmllclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNXaGl0ZVNwYWNlKGMpKSB7XG4gICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkX2NoYXJhY3RlcixcbiAgICAgICAgICAgIHRoaXMucmFuZ2UodGhpcy5wb3MsIHRoaXMucG9zICsgMSlcbiAgICAgICAgICApO1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLklOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFRva2VuLkVORE9GRklMRTtcbiAgfVxuXG4gIHBlZWsoXG4gICAgY2hlY2tPbk5ld0xpbmU6IGJvb2wgPSBmYWxzZSxcbiAgICBpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxULFxuICAgIG1heENvbXBvdW5kTGVuZ3RoOiBpMzIgPSBpMzIuTUFYX1ZBTFVFXG4gICk6IFRva2VuIHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMubmV4dFRva2VuIDwgMCkge1xuICAgICAgbGV0IHBvc0JlZm9yZSA9IHRoaXMucG9zO1xuICAgICAgbGV0IHRva2VuQmVmb3JlID0gdGhpcy50b2tlbjtcbiAgICAgIGxldCB0b2tlblBvc0JlZm9yZSA9IHRoaXMudG9rZW5Qb3M7XG4gICAgICB0aGlzLm5leHRUb2tlbiA9IHRoaXMudW5zYWZlTmV4dChpZGVudGlmaWVySGFuZGxpbmcsIG1heENvbXBvdW5kTGVuZ3RoKTtcbiAgICAgIHRoaXMubmV4dFRva2VuUG9zID0gdGhpcy50b2tlblBvcztcbiAgICAgIGlmIChjaGVja09uTmV3TGluZSkge1xuICAgICAgICB0aGlzLm5leHRUb2tlbk9uTmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBwb3MgPSBwb3NCZWZvcmUsIGVuZCA9IHRoaXMubmV4dFRva2VuUG9zOyBwb3MgPCBlbmQ7ICsrcG9zKSB7XG4gICAgICAgICAgaWYgKGlzTGluZUJyZWFrKHRleHQuY2hhckNvZGVBdChwb3MpKSkge1xuICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW5Pbk5ld0xpbmUgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvc0JlZm9yZTtcbiAgICAgIHRoaXMudG9rZW4gPSB0b2tlbkJlZm9yZTtcbiAgICAgIHRoaXMudG9rZW5Qb3MgPSB0b2tlblBvc0JlZm9yZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmV4dFRva2VuO1xuICB9XG5cbiAgc2tpcElkZW50aWZpZXIoaWRlbnRpZmllckhhbmRsaW5nOiBJZGVudGlmaWVySGFuZGxpbmcgPSBJZGVudGlmaWVySGFuZGxpbmcuUFJFRkVSKTogYm9vbCB7XG4gICAgcmV0dXJuIHRoaXMuc2tpcChUb2tlbi5JREVOVElGSUVSLCBpZGVudGlmaWVySGFuZGxpbmcpO1xuICB9XG5cbiAgc2tpcCh0b2tlbjogVG9rZW4sIGlkZW50aWZpZXJIYW5kbGluZzogSWRlbnRpZmllckhhbmRsaW5nID0gSWRlbnRpZmllckhhbmRsaW5nLkRFRkFVTFQpOiBib29sIHtcbiAgICB2YXIgcG9zQmVmb3JlID0gdGhpcy5wb3M7XG4gICAgdmFyIHRva2VuQmVmb3JlID0gdGhpcy50b2tlbjtcbiAgICB2YXIgdG9rZW5Qb3NCZWZvcmUgPSB0aGlzLnRva2VuUG9zO1xuICAgIHZhciBtYXhDb21wb3VuZExlbmd0aCA9IGkzMi5NQVhfVkFMVUU7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTjogeyAvLyB3aGVyZSBwYXJzaW5nIHR5cGUgYXJndW1lbnRzXG4gICAgICAgIG1heENvbXBvdW5kTGVuZ3RoID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudG9rZW4gPSB0aGlzLnVuc2FmZU5leHQoaWRlbnRpZmllckhhbmRsaW5nLCBtYXhDb21wb3VuZExlbmd0aCk7XG4gICAgaWYgKHRoaXMudG9rZW4gPT0gdG9rZW4pIHtcbiAgICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3MgPSBwb3NCZWZvcmU7XG4gICAgICB0aGlzLnRva2VuID0gdG9rZW5CZWZvcmU7XG4gICAgICB0aGlzLnRva2VuUG9zID0gdG9rZW5Qb3NCZWZvcmU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbWFyaygpOiBTdGF0ZSB7XG4gICAgdmFyIHN0YXRlOiBTdGF0ZTtcbiAgICBpZiAocmV1c2FibGVTdGF0ZSkge1xuICAgICAgc3RhdGUgPSByZXVzYWJsZVN0YXRlO1xuICAgICAgcmV1c2FibGVTdGF0ZSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlID0gbmV3IFN0YXRlKCk7XG4gICAgfVxuICAgIHN0YXRlLnBvcyA9IHRoaXMucG9zO1xuICAgIHN0YXRlLnRva2VuID0gdGhpcy50b2tlbjtcbiAgICBzdGF0ZS50b2tlblBvcyA9IHRoaXMudG9rZW5Qb3M7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgZGlzY2FyZChzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICByZXVzYWJsZVN0YXRlID0gc3RhdGU7XG4gIH1cblxuICByZXNldChzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnBvcyA9IHN0YXRlLnBvcztcbiAgICB0aGlzLnRva2VuID0gc3RhdGUudG9rZW47XG4gICAgdGhpcy50b2tlblBvcyA9IHN0YXRlLnRva2VuUG9zO1xuICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gIH1cblxuICByYW5nZShzdGFydDogaTMyID0gLTEsIGVuZDogaTMyID0gLTEpOiBSYW5nZSB7XG4gICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgc3RhcnQgPSB0aGlzLnRva2VuUG9zO1xuICAgICAgZW5kID0gdGhpcy5wb3M7XG4gICAgfSBlbHNlIGlmIChlbmQgPCAwKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnNvdXJjZSwgc3RhcnQsIGVuZCk7XG4gIH1cblxuICByZWFkSWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKFxuICAgICAgKyt0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgaXNJZGVudGlmaWVyUGFydCh0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpKVxuICAgICk7XG4gICAgcmV0dXJuIHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gIH1cblxuICByZWFkU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBxdW90ZSA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcysrKTtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmICh0aGlzLnBvcyA+PSBlbmQpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3N0cmluZ19saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQgLSAxLCBlbmQpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgaWYgKGMgPT0gcXVvdGUpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcysrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoYyA9PSBDaGFyQ29kZS5CQUNLU0xBU0gpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gICAgICAgIHJlc3VsdCArPSB0aGlzLnJlYWRFc2NhcGVTZXF1ZW5jZSgpO1xuICAgICAgICBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0xpbmVCcmVhayhjKSAmJiBxdW90ZSAhPSBDaGFyQ29kZS5CQUNLVElDSykge1xuICAgICAgICByZXN1bHQgKz0gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5VbnRlcm1pbmF0ZWRfc3RyaW5nX2xpdGVyYWwsXG4gICAgICAgICAgdGhpcy5yYW5nZShzdGFydCAtIDEsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgICsrdGhpcy5wb3M7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkRXNjYXBlU2VxdWVuY2UoKTogc3RyaW5nIHtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgaWYgKCsrdGhpcy5wb3MgPj0gZW5kKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5VbmV4cGVjdGVkX2VuZF9vZl90ZXh0LFxuICAgICAgICB0aGlzLnJhbmdlKGVuZClcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MrKyk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgICBjYXNlIENoYXJDb2RlLl8wOiByZXR1cm4gXCJcXDBcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuYjogcmV0dXJuIFwiXFxiXCI7XG4gICAgICBjYXNlIENoYXJDb2RlLnQ6IHJldHVybiBcIlxcdFwiO1xuICAgICAgY2FzZSBDaGFyQ29kZS5uOiByZXR1cm4gXCJcXG5cIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUudjogcmV0dXJuIFwiXFx2XCI7XG4gICAgICBjYXNlIENoYXJDb2RlLmY6IHJldHVybiBcIlxcZlwiO1xuICAgICAgY2FzZSBDaGFyQ29kZS5yOiByZXR1cm4gXCJcXHJcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuU0lOR0xFUVVPVEU6IHJldHVybiBcIidcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuRE9VQkxFUVVPVEU6IHJldHVybiBcIlxcXCJcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUudToge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLk9QRU5CUkFDRVxuICAgICAgICApIHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRFeHRlbmRlZFVuaWNvZGVFc2NhcGUoKTsgLy8gXFx1e0REREREREREfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRVbmljb2RlRXNjYXBlKCk7IC8vIFxcdURERERcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSUklBR0VSRVRVUk46IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5MSU5FRkVFRFxuICAgICAgICApIHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZhbGwgdGhyb3VnaFxuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICAgIGNhc2UgQ2hhckNvZGUuTElORVNFUEFSQVRPUjpcbiAgICAgIGNhc2UgQ2hhckNvZGUuUEFSQUdSQVBIU0VQQVJBVE9SOiByZXR1cm4gXCJcIjtcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRSZWdleHBQYXR0ZXJuKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgZXNjYXBlZCA9IGZhbHNlO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5wb3MgPj0gZW5kKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIGVuZClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5CQUNLU0xBU0gpIHtcbiAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgZXNjYXBlZCA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgaWYgKCFlc2NhcGVkICYmIGMgPT0gQ2hhckNvZGUuU0xBU0gpIGJyZWFrO1xuICAgICAgaWYgKGlzTGluZUJyZWFrKGMpKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgICsrdGhpcy5wb3M7XG4gICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpO1xuICB9XG5cbiAgcmVhZFJlZ2V4cEZsYWdzKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgZmxhZ3MgPSAwO1xuICAgIHdoaWxlICh0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgbGV0IGM6IGkzMiA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoYykpIGJyZWFrO1xuICAgICAgKyt0aGlzLnBvcztcblxuICAgICAgLy8gbWFrZSBzdXJlIGVhY2ggc3VwcG9ydGVkIGZsYWcgaXMgdW5pcXVlXG4gICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5nOiB7XG4gICAgICAgICAgZmxhZ3MgfD0gZmxhZ3MgJiAxID8gLTEgOiAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuaToge1xuICAgICAgICAgIGZsYWdzIHw9IGZsYWdzICYgMiA/IC0xIDogMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLm06IHtcbiAgICAgICAgICBmbGFncyB8PSBmbGFncyAmIDQgPyAtMSA6IDQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGZsYWdzID0gLTE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZsYWdzID09IC0xKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkX3JlZ3VsYXJfZXhwcmVzc2lvbl9mbGFncyxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgdGhpcy5wb3MpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgfVxuXG4gIHRlc3RJbnRlZ2VyKCk6IGJvb2wge1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMucG9zICsgMSA8IGVuZCAmJiB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLl8wKSB7XG4gICAgICBzd2l0Y2ggKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDIpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUueDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5YOlxuICAgICAgICBjYXNlIENoYXJDb2RlLmI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5vOlxuICAgICAgICBjYXNlIENoYXJDb2RlLk86IHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgcG9zID0gdGhpcy5wb3M7XG4gICAgd2hpbGUgKHBvcyA8IGVuZCkge1xuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmIChjID09IENoYXJDb2RlLkRPVCB8fCBjID09IENoYXJDb2RlLmUgfHwgYyA9PSBDaGFyQ29kZS5FKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoKGMgPCBDaGFyQ29kZS5fMCB8fCBjID4gQ2hhckNvZGUuXzkpICYmIGMgIT0gQ2hhckNvZGUuXykgYnJlYWs7XG4gICAgICAvLyBkb2VzIG5vdCB2YWxpZGF0ZSBzZXBhcmF0b3IgcGxhY2VtZW50ICh0aGlzIGlzIGRvbmUgaW4gcmVhZFhZSW50ZWdlcilcbiAgICAgIHBvcysrO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJlYWRJbnRlZ2VyKCk6IEk2NCB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIGlmICh0aGlzLnBvcyArIDIgPCB0aGlzLmVuZCAmJiB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLl8wKSB7XG4gICAgICBzd2l0Y2ggKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUueDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5YOiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkSGV4SW50ZWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuYjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5COiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkQmluYXJ5SW50ZWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUubzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5POiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkT2N0YWxJbnRlZ2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc09jdGFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpKSB7XG4gICAgICAgIGxldCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnJlYWRPY3RhbEludGVnZXIoKTtcbiAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5PY3RhbF9saXRlcmFsc19hcmVfbm90X2FsbG93ZWRfaW5fc3RyaWN0X21vZGUsXG4gICAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgdGhpcy5wb3MpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVhZERlY2ltYWxJbnRlZ2VyKCk7XG4gIH1cblxuICByZWFkSGV4SW50ZWdlcigpOiBJNjQge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgdmFsdWUgPSBpNjRfbmV3KDApO1xuICAgIHZhciBpNjRfNCA9IGk2NF9uZXcoNCk7XG4gICAgdmFyIHNlcEVuZCA9IHN0YXJ0O1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgIGxldCBwb3MgPSB0aGlzLnBvcztcbiAgICAgIGxldCBjID0gdGV4dC5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoYyA+PSBDaGFyQ29kZS5fMCAmJiBjIDw9IENoYXJDb2RlLl85KSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDQpICsgYyAtIENoYXJDb2RlLl8wO1xuICAgICAgICB2YWx1ZSA9IGk2NF9hZGQoXG4gICAgICAgICAgaTY0X3NobCh2YWx1ZSwgaTY0XzQpLFxuICAgICAgICAgIGk2NF9uZXcoYyAtIENoYXJDb2RlLl8wKVxuICAgICAgICApO1xuICAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuRikge1xuICAgICAgICAvLyB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIDEwICsgYyAtIENoYXJDb2RlLkE7XG4gICAgICAgIHZhbHVlID0gaTY0X2FkZChcbiAgICAgICAgICBpNjRfc2hsKHZhbHVlLCBpNjRfNCksXG4gICAgICAgICAgaTY0X25ldygxMCArIGMgLSBDaGFyQ29kZS5BKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID49IENoYXJDb2RlLmEgJiYgYyA8PSBDaGFyQ29kZS5mKSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDQpICsgMTAgKyBjIC0gQ2hhckNvZGUuYTtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF80KSxcbiAgICAgICAgICBpNjRfbmV3KDEwICsgYyAtIENoYXJDb2RlLmEpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGMgPT0gQ2hhckNvZGUuXykge1xuICAgICAgICBpZiAoc2VwRW5kID09IHBvcykge1xuICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICBzZXBFbmQgPT0gc3RhcnRcbiAgICAgICAgICAgICAgPyBEaWFnbm9zdGljQ29kZS5OdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmVcbiAgICAgICAgICAgICAgOiBEaWFnbm9zdGljQ29kZS5NdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQsXG4gICAgICAgICAgICB0aGlzLnJhbmdlKHBvcylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHNlcEVuZCA9IHBvcyArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMucG9zID0gcG9zICsgMTtcbiAgICB9XG4gICAgaWYgKHRoaXMucG9zID09IHN0YXJ0KSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5IZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzZXBFbmQgPT0gdGhpcy5wb3MpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxcbiAgICAgICAgdGhpcy5yYW5nZShzZXBFbmQgLSAxKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmVhZERlY2ltYWxJbnRlZ2VyKCk6IEk2NCB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdmFsdWUgPSBpNjRfbmV3KDApO1xuICAgIHZhciBpNjRfMTAgPSBpNjRfbmV3KDEwKTtcbiAgICB2YXIgc2VwRW5kID0gc3RhcnQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fOSkge1xuICAgICAgICAvLyB2YWx1ZSA9IHZhbHVlICogMTAgKyBjIC0gQ2hhckNvZGUuXzA7XG4gICAgICAgIHZhbHVlID0gaTY0X2FkZChcbiAgICAgICAgICBpNjRfbXVsKHZhbHVlLCBpNjRfMTApLFxuICAgICAgICAgIGk2NF9uZXcoYyAtIENoYXJDb2RlLl8wKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8pIHtcbiAgICAgICAgaWYgKHNlcEVuZCA9PSBwb3MpIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFxuICAgICAgICAgICAgc2VwRW5kID09IHN0YXJ0XG4gICAgICAgICAgICAgID8gRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlXG4gICAgICAgICAgICAgIDogRGlhZ25vc3RpY0NvZGUuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkLFxuICAgICAgICAgICAgdGhpcy5yYW5nZShwb3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzZXBFbmQgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvcyArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcyA9PSBzdGFydCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuRGlnaXRfZXhwZWN0ZWQsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoc2VwRW5kID09IHRoaXMucG9zKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5OdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmUsXG4gICAgICAgIHRoaXMucmFuZ2Uoc2VwRW5kIC0gMSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJlYWRPY3RhbEludGVnZXIoKTogSTY0IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gaTY0X25ldygwKTtcbiAgICB2YXIgaTY0XzMgPSBpNjRfbmV3KDMpO1xuICAgIHZhciBzZXBFbmQgPSBzdGFydDtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fNykge1xuICAgICAgICAvLyB2YWx1ZSA9ICh2YWx1ZSA8PCAzKSArIGMgLSBDaGFyQ29kZS5fMDtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF8zKSxcbiAgICAgICAgICBpNjRfbmV3KGMgLSBDaGFyQ29kZS5fMClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoYyA9PSBDaGFyQ29kZS5fKSB7XG4gICAgICAgIGlmIChzZXBFbmQgPT0gcG9zKSB7XG4gICAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICAgIHNlcEVuZCA9PSBzdGFydFxuICAgICAgICAgICAgICA/IERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZVxuICAgICAgICAgICAgICA6IERpYWdub3N0aWNDb2RlLk11bHRpcGxlX2NvbnNlY3V0aXZlX251bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X3Blcm1pdHRlZCxcbiAgICAgICAgICAgIHRoaXMucmFuZ2UocG9zKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc2VwRW5kID0gcG9zICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgKyt0aGlzLnBvcztcbiAgICB9XG4gICAgaWYgKHRoaXMucG9zID09IHN0YXJ0KSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5PY3RhbF9kaWdpdF9leHBlY3RlZCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzZXBFbmQgPT0gdGhpcy5wb3MpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxcbiAgICAgICAgdGhpcy5yYW5nZShzZXBFbmQgLSAxKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmVhZEJpbmFyeUludGVnZXIoKTogSTY0IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gaTY0X25ldygwKTtcbiAgICB2YXIgaTY0XzEgPSBpNjRfbmV3KDEpO1xuICAgIHZhciBzZXBFbmQgPSBzdGFydDtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPT0gQ2hhckNvZGUuXzApIHtcbiAgICAgICAgLy8gdmFsdWUgPSAodmFsdWUgPDwgMSk7XG4gICAgICAgIHZhbHVlID0gaTY0X3NobCh2YWx1ZSwgaTY0XzEpO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8xKSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDEpICsgMTtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF8xKSxcbiAgICAgICAgICBpNjRfMVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8pIHtcbiAgICAgICAgaWYgKHNlcEVuZCA9PSBwb3MpIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFxuICAgICAgICAgICAgc2VwRW5kID09IHN0YXJ0XG4gICAgICAgICAgICAgID8gRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlXG4gICAgICAgICAgICAgIDogRGlhZ25vc3RpY0NvZGUuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkLFxuICAgICAgICAgICAgdGhpcy5yYW5nZShwb3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzZXBFbmQgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvcyArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcyA9PSBzdGFydCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuQmluYXJ5X2RpZ2l0X2V4cGVjdGVkLFxuICAgICAgICB0aGlzLnJhbmdlKHN0YXJ0KVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNlcEVuZCA9PSB0aGlzLnBvcykge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlLFxuICAgICAgICB0aGlzLnJhbmdlKHNlcEVuZCAtIDEpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZWFkRmxvYXQoKTogZjY0IHtcbiAgICAvLyB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgLy8gaWYgKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuXzAgJiYgdGhpcy5wb3MgKyAyIDwgdGhpcy5lbmQpIHtcbiAgICAvLyAgIHN3aXRjaCAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpIHtcbiAgICAvLyAgICAgY2FzZSBDaGFyQ29kZS5YOlxuICAgIC8vICAgICBjYXNlIENoYXJDb2RlLng6IHtcbiAgICAvLyAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgIC8vICAgICAgIHJldHVybiB0aGlzLnJlYWRIZXhGbG9hdCgpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgIHJldHVybiB0aGlzLnJlYWREZWNpbWFsRmxvYXQoKTtcbiAgfVxuXG4gIHJlYWREZWNpbWFsRmxvYXQoKTogZjY0IHtcbiAgICAvLyBUT0RPOiBudW1lcmljIHNlcGFyYXRvcnMgKHBhcnNlRmxvYXQgY2FuJ3QgaGFuZGxlIHRoZXNlKVxuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kICYmIGlzRGVjaW1hbERpZ2l0KHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykpKSB7XG4gICAgICArK3RoaXMucG9zO1xuICAgIH1cbiAgICBpZiAodGhpcy5wb3MgPCBlbmQgJiYgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5ET1QpIHtcbiAgICAgICsrdGhpcy5wb3M7XG4gICAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQgJiYgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSkpIHtcbiAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICBpZiAoYyA9PSBDaGFyQ29kZS5lIHx8IGMgPT0gQ2hhckNvZGUuRSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKyt0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgIChjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSkgPT0gQ2hhckNvZGUuTUlOVVMgfHwgYyA9PSBDaGFyQ29kZS5QTFVTICYmXG4gICAgICAgICAgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpXG4gICAgICAgICkge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kICYmIGlzRGVjaW1hbERpZ2l0KHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykpKSB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VGbG9hdCh0ZXh0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpKTtcbiAgfVxuXG4gIHJlYWRIZXhGbG9hdCgpOiBmNjQge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTsgLy8gVEJEXG4gIH1cblxuICByZWFkVW5pY29kZUVzY2FwZSgpOiBzdHJpbmcge1xuICAgIHZhciByZW1haW4gPSA0O1xuICAgIHZhciB2YWx1ZSA9IDA7XG4gICAgdmFyIGVuZCA9IHRoaXMuZW5kO1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgIGxldCBjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKyspO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fOSkge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgLSBDaGFyQ29kZS5fMDtcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuRikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgKyAoMTAgLSBDaGFyQ29kZS5BKTtcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5hICYmIGMgPD0gQ2hhckNvZGUuZikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgKyAoMTAgLSBDaGFyQ29kZS5hKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuSGV4YWRlY2ltYWxfZGlnaXRfZXhwZWN0ZWQsXG4gICAgICAgICAgdGhpcy5yYW5nZSh0aGlzLnBvcyAtIDEsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGlmICgtLXJlbWFpbiA9PSAwKSBicmVhaztcbiAgICB9XG4gICAgaWYgKHJlbWFpbikge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCxcbiAgICAgICAgdGhpcy5yYW5nZSh0aGlzLnBvcylcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkRXh0ZW5kZWRVbmljb2RlRXNjYXBlKCk6IHN0cmluZyB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5yZWFkSGV4SW50ZWdlcigpO1xuICAgIHZhciB2YWx1ZTMyID0gaTY0X2xvdyh2YWx1ZSk7XG4gICAgdmFyIGludmFsaWQgPSBmYWxzZTtcblxuICAgIGFzc2VydCghaTY0X2hpZ2godmFsdWUpKTtcbiAgICBpZiAodmFsdWUzMiA+IDB4MTBGRkZGKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5Bbl9leHRlbmRlZF9Vbmljb2RlX2VzY2FwZV92YWx1ZV9tdXN0X2JlX2JldHdlZW5fMHgwX2FuZF8weDEwRkZGRl9pbmNsdXNpdmUsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMucG9zID49IGVuZCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgZW5kKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5DTE9TRUJSQUNFKSB7XG4gICAgICArK3RoaXMucG9zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5VbnRlcm1pbmF0ZWRfVW5pY29kZV9lc2NhcGVfc2VxdWVuY2UsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpbnZhbGlkKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gdmFsdWUzMiA8IDY1NTM2XG4gICAgICA/IFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWUzMilcbiAgICAgIDogU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAgICAgKCh2YWx1ZTMyIC0gNjU1MzYpID4+PiAxMCkgKyAweEQ4MDAsXG4gICAgICAgICgodmFsdWUzMiAtIDY1NTM2KSAmIDEwMjMpICsgMHhEQzAwXG4gICAgICApO1xuICB9XG5cbiAgZmluaXNoKCk6IHZvaWQge1xuICB9XG59XG5cbi8qKiBUb2tlbml6ZXIgc3RhdGUgYXMgcmV0dXJuZWQgYnkge0BsaW5rIFRva2VuaXplciNtYXJrfSBhbmQgY29uc3VtZWQgYnkge0BsaW5rIFRva2VuaXplciNyZXNldH0uICovXG5leHBvcnQgY2xhc3MgU3RhdGUge1xuICAvKiogQ3VycmVudCBwb3NpdGlvbi4gKi9cbiAgcG9zOiBpMzI7XG4gIC8qKiBDdXJyZW50IHRva2VuLiAqL1xuICB0b2tlbjogVG9rZW47XG4gIC8qKiBDdXJyZW50IHRva2VuJ3MgcG9zaXRpb24uICovXG4gIHRva2VuUG9zOiBpMzI7XG59XG5cbi8vIFJldXNhYmxlIHN0YXRlIG9iamVjdCB0byByZWR1Y2UgYWxsb2NhdGlvbnNcbnZhciByZXVzYWJsZVN0YXRlOiBTdGF0ZSB8IG51bGwgPSBudWxsO1xuIl19 - -/***/ }), - -/***/ "../src/util/binary.ts": -/*!*****************************!*\ - !*** ../src/util/binary.ts ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** Reads an 8-bit integer from the specified buffer. */ -function readI8(buffer, offset) { - return buffer[offset]; -} -exports.readI8 = readI8; -/** Writes an 8-bit integer to the specified buffer. */ -function writeI8(value, buffer, offset) { - buffer[offset] = value; -} -exports.writeI8 = writeI8; -/** Reads a 16-bit integer from the specified buffer. */ -function readI16(buffer, offset) { - return buffer[offset] - | buffer[offset + 1] << 8; -} -exports.readI16 = readI16; -/** Writes a 16-bit integer to the specified buffer. */ -function writeI16(value, buffer, offset) { - buffer[offset] = value; - buffer[offset + 1] = value >>> 8; -} -exports.writeI16 = writeI16; -/** Reads a 32-bit integer from the specified buffer. */ -function readI32(buffer, offset) { - return buffer[offset] - | buffer[offset + 1] << 8 - | buffer[offset + 2] << 16 - | buffer[offset + 3] << 24; -} -exports.readI32 = readI32; -/** Writes a 32-bit integer to the specified buffer. */ -function writeI32(value, buffer, offset) { - buffer[offset] = value; - buffer[offset + 1] = value >>> 8; - buffer[offset + 2] = value >>> 16; - buffer[offset + 3] = value >>> 24; -} -exports.writeI32 = writeI32; -/** Reads a 64-bit integer from the specified buffer. */ -function readI64(buffer, offset) { - var lo = readI32(buffer, offset); - var hi = readI32(buffer, offset + 4); - return i64_new(lo, hi); -} -exports.readI64 = readI64; -/** Writes a 64-bit integer to the specified buffer. */ -function writeI64(value, buffer, offset) { - writeI32(i64_low(value), buffer, offset); - writeI32(i64_high(value), buffer, offset + 4); -} -exports.writeI64 = writeI64; -/** Reads a 32-bit float from the specified buffer. */ -function readF32(buffer, offset) { - return i32_as_f32(readI32(buffer, offset)); -} -exports.readF32 = readF32; -/** Writes a 32-bit float to the specified buffer. */ -function writeF32(value, buffer, offset) { - writeI32(f32_as_i32(value), buffer, offset); -} -exports.writeF32 = writeF32; -/** Reads a 64-bit float from the specified buffer. */ -function readF64(buffer, offset) { - return i64_as_f64(readI64(buffer, offset)); -} -exports.readF64 = readF64; -/** Writes a 64-bit float to the specified buffer. */ -function writeF64(value, buffer, offset) { - var valueI64 = f64_as_i64(value); - writeI32(i64_low(valueI64), buffer, offset); - writeI32(i64_high(valueI64), buffer, offset + 4); -} -exports.writeF64 = writeF64; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvYmluYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBbUIsQ0FBQSxLQUFLOztBQUV4Qix3REFBd0Q7QUFDeEQsU0FBZ0IsTUFBTSxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNwRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRkQsd0JBRUM7QUFFRCx1REFBdUQ7QUFDdkQsU0FBZ0IsT0FBTyxDQUFDLEtBQVUsRUFBRSxNQUFrQixFQUFFLE1BQVc7SUFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDO0FBRkQsMEJBRUM7QUFFRCx3REFBd0Q7QUFDeEQsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNyRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUs7VUFDbEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUhELDBCQUdDO0FBRUQsdURBQXVEO0FBQ3ZELFNBQWdCLFFBQVEsQ0FBQyxLQUFVLEVBQUUsTUFBa0IsRUFBRSxNQUFXO0lBQ2xFLE1BQU0sQ0FBQyxNQUFNLENBQUssR0FBRyxLQUFLLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFIRCw0QkFHQztBQUVELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBSztVQUNsQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7VUFDdkIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFO1VBQ3hCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFMRCwwQkFLQztBQUVELHVEQUF1RDtBQUN2RCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxNQUFNLENBQUMsTUFBTSxDQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNqQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7SUFDbEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQ3BDLENBQUM7QUFMRCw0QkFLQztBQUVELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ3JELElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsT0FBTyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFKRCwwQkFJQztBQUVELHVEQUF1RDtBQUN2RCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUhELDRCQUdDO0FBRUQsc0RBQXNEO0FBQ3RELFNBQWdCLE9BQU8sQ0FBQyxNQUFrQixFQUFFLE1BQVc7SUFDckQsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFGRCwwQkFFQztBQUVELHFEQUFxRDtBQUNyRCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRkQsNEJBRUM7QUFFRCxzREFBc0Q7QUFDdEQsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNyRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUZELDBCQUVDO0FBRUQscURBQXFEO0FBQ3JELFNBQWdCLFFBQVEsQ0FBQyxLQUFVLEVBQUUsTUFBa0IsRUFBRSxNQUFXO0lBQ2xFLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUpELDRCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgdXRpbCAqLy8qKiovXG5cbi8qKiBSZWFkcyBhbiA4LWJpdCBpbnRlZ2VyIGZyb20gdGhlIHNwZWNpZmllZCBidWZmZXIuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEk4KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBpMzIge1xuICByZXR1cm4gYnVmZmVyW29mZnNldF07XG59XG5cbi8qKiBXcml0ZXMgYW4gOC1iaXQgaW50ZWdlciB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUk4KHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldF0gPSB2YWx1ZTtcbn1cblxuLyoqIFJlYWRzIGEgMTYtYml0IGludGVnZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSTE2KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBpMzIge1xuICByZXR1cm4gYnVmZmVyW29mZnNldCAgICBdXG4gICAgICAgfCBidWZmZXJbb2Zmc2V0ICsgMV0gPDwgODtcbn1cblxuLyoqIFdyaXRlcyBhIDE2LWJpdCBpbnRlZ2VyIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSTE2KHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCAgICBdID0gdmFsdWU7XG4gIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IHZhbHVlID4+PiA4O1xufVxuXG4vKiogUmVhZHMgYSAzMi1iaXQgaW50ZWdlciBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJMzIoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGkzMiB7XG4gIHJldHVybiBidWZmZXJbb2Zmc2V0ICAgIF1cbiAgICAgICB8IGJ1ZmZlcltvZmZzZXQgKyAxXSA8PCA4XG4gICAgICAgfCBidWZmZXJbb2Zmc2V0ICsgMl0gPDwgMTZcbiAgICAgICB8IGJ1ZmZlcltvZmZzZXQgKyAzXSA8PCAyNDtcbn1cblxuLyoqIFdyaXRlcyBhIDMyLWJpdCBpbnRlZ2VyIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSTMyKHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCAgICBdID0gdmFsdWU7XG4gIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IHZhbHVlID4+PiA4O1xuICBidWZmZXJbb2Zmc2V0ICsgMl0gPSB2YWx1ZSA+Pj4gMTY7XG4gIGJ1ZmZlcltvZmZzZXQgKyAzXSA9IHZhbHVlID4+PiAyNDtcbn1cblxuLyoqIFJlYWRzIGEgNjQtYml0IGludGVnZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSTY0KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBJNjQge1xuICB2YXIgbG8gPSByZWFkSTMyKGJ1ZmZlciwgb2Zmc2V0KTtcbiAgdmFyIGhpID0gcmVhZEkzMihidWZmZXIsIG9mZnNldCArIDQpO1xuICByZXR1cm4gaTY0X25ldyhsbywgaGkpO1xufVxuXG4vKiogV3JpdGVzIGEgNjQtYml0IGludGVnZXIgdG8gdGhlIHNwZWNpZmllZCBidWZmZXIuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVJNjQodmFsdWU6IEk2NCwgYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IHZvaWQge1xuICB3cml0ZUkzMihpNjRfbG93KHZhbHVlKSwgYnVmZmVyLCBvZmZzZXQpO1xuICB3cml0ZUkzMihpNjRfaGlnaCh2YWx1ZSksIGJ1ZmZlciwgb2Zmc2V0ICsgNCk7XG59XG5cbi8qKiBSZWFkcyBhIDMyLWJpdCBmbG9hdCBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGMzIoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGYzMiB7XG4gIHJldHVybiBpMzJfYXNfZjMyKHJlYWRJMzIoYnVmZmVyLCBvZmZzZXQpKTtcbn1cblxuLyoqIFdyaXRlcyBhIDMyLWJpdCBmbG9hdCB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUYzMih2YWx1ZTogZjMyLCBidWZmZXI6IFVpbnQ4QXJyYXksIG9mZnNldDogaTMyKTogdm9pZCB7XG4gIHdyaXRlSTMyKGYzMl9hc19pMzIodmFsdWUpLCBidWZmZXIsIG9mZnNldCk7XG59XG5cbi8qKiBSZWFkcyBhIDY0LWJpdCBmbG9hdCBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGNjQoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGY2NCB7XG4gIHJldHVybiBpNjRfYXNfZjY0KHJlYWRJNjQoYnVmZmVyLCBvZmZzZXQpKTtcbn1cblxuLyoqIFdyaXRlcyBhIDY0LWJpdCBmbG9hdCB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUY2NCh2YWx1ZTogZjY0LCBidWZmZXI6IFVpbnQ4QXJyYXksIG9mZnNldDogaTMyKTogdm9pZCB7XG4gIHZhciB2YWx1ZUk2NCA9IGY2NF9hc19pNjQodmFsdWUpO1xuICB3cml0ZUkzMihpNjRfbG93KHZhbHVlSTY0KSwgYnVmZmVyLCBvZmZzZXQpO1xuICB3cml0ZUkzMihpNjRfaGlnaCh2YWx1ZUk2NCksIGJ1ZmZlciwgb2Zmc2V0ICsgNCk7XG59XG4iXX0= - -/***/ }), - -/***/ "../src/util/bitset.ts": -/*!*****************************!*\ - !*** ../src/util/bitset.ts ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** Tests if the bit at the specified index is set within a 64-bit map. */ -function bitsetIs(map, index) { - assert(index >= 0 && index < 64); - return i64_ne(i64_and(map, i64_shl(i64_one, i64_new(index))), i64_zero); -} -exports.bitsetIs = bitsetIs; -/** Sets or unsets the bit at the specified index within a 64-bit map and returns the new map. */ -function bitsetSet(map, index, isSet) { - assert(index >= 0 && index < 64); - return isSet - ? i64_or(map, i64_shl(i64_one, i64_new(index))) - : i64_and(map, i64_not(i64_shl(i64_one, i64_new(index)))); -} -exports.bitsetSet = bitsetSet; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0c2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvYml0c2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBbUIsQ0FBQSxLQUFLOztBQUV4QiwwRUFBMEU7QUFDMUUsU0FBZ0IsUUFBUSxDQUFDLEdBQVEsRUFBRSxLQUFVO0lBQzNDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLE1BQU0sQ0FDWCxPQUFPLENBQ0wsR0FBRyxFQUNILE9BQU8sQ0FDTCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNmLENBQ0YsRUFDRCxRQUFRLENBQ1QsQ0FBQztBQUNKLENBQUM7QUFaRCw0QkFZQztBQUVELGlHQUFpRztBQUNqRyxTQUFnQixTQUFTLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxLQUFXO0lBQ3pELE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLEtBQUs7UUFDVixDQUFDLENBQUMsTUFBTSxDQUNKLEdBQUcsRUFDSCxPQUFPLENBQ0wsT0FBTyxFQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FDZixDQUNGO1FBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FDTCxHQUFHLEVBQ0gsT0FBTyxDQUNMLE9BQU8sQ0FDTCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNmLENBQ0YsQ0FDRixDQUFDO0FBQ1IsQ0FBQztBQW5CRCw4QkFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuLyoqIFRlc3RzIGlmIHRoZSBiaXQgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBpcyBzZXQgd2l0aGluIGEgNjQtYml0IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaXRzZXRJcyhtYXA6IEk2NCwgaW5kZXg6IGkzMik6IGJvb2wge1xuICBhc3NlcnQoaW5kZXggPj0gMCAmJiBpbmRleCA8IDY0KTtcbiAgcmV0dXJuIGk2NF9uZShcbiAgICBpNjRfYW5kKFxuICAgICAgbWFwLFxuICAgICAgaTY0X3NobChcbiAgICAgICAgaTY0X29uZSxcbiAgICAgICAgaTY0X25ldyhpbmRleClcbiAgICAgIClcbiAgICApLFxuICAgIGk2NF96ZXJvXG4gICk7XG59XG5cbi8qKiBTZXRzIG9yIHVuc2V0cyB0aGUgYml0IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggd2l0aGluIGEgNjQtYml0IG1hcCBhbmQgcmV0dXJucyB0aGUgbmV3IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaXRzZXRTZXQobWFwOiBJNjQsIGluZGV4OiBpMzIsIGlzU2V0OiBib29sKTogSTY0IHtcbiAgYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPCA2NCk7XG4gIHJldHVybiBpc1NldFxuICAgID8gaTY0X29yKFxuICAgICAgICBtYXAsXG4gICAgICAgIGk2NF9zaGwoXG4gICAgICAgICAgaTY0X29uZSxcbiAgICAgICAgICBpNjRfbmV3KGluZGV4KVxuICAgICAgICApXG4gICAgICApXG4gICAgOiBpNjRfYW5kKFxuICAgICAgICBtYXAsXG4gICAgICAgIGk2NF9ub3QoXG4gICAgICAgICAgaTY0X3NobChcbiAgICAgICAgICAgIGk2NF9vbmUsXG4gICAgICAgICAgICBpNjRfbmV3KGluZGV4KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/util/charcode.ts": -/*!*******************************!*\ - !*** ../src/util/charcode.ts ***! - \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** An enum of named character codes. */ -var CharCode; -(function (CharCode) { - CharCode[CharCode["NULL"] = 0] = "NULL"; - CharCode[CharCode["LINEFEED"] = 10] = "LINEFEED"; - CharCode[CharCode["CARRIAGERETURN"] = 13] = "CARRIAGERETURN"; - CharCode[CharCode["LINESEPARATOR"] = 8232] = "LINESEPARATOR"; - CharCode[CharCode["PARAGRAPHSEPARATOR"] = 8233] = "PARAGRAPHSEPARATOR"; - CharCode[CharCode["NEXTLINE"] = 133] = "NEXTLINE"; - CharCode[CharCode["SPACE"] = 32] = "SPACE"; - CharCode[CharCode["NONBREAKINGSPACE"] = 160] = "NONBREAKINGSPACE"; - CharCode[CharCode["ENQUAD"] = 8192] = "ENQUAD"; - CharCode[CharCode["EMQUAD"] = 8193] = "EMQUAD"; - CharCode[CharCode["ENSPACE"] = 8194] = "ENSPACE"; - CharCode[CharCode["EMSPACE"] = 8195] = "EMSPACE"; - CharCode[CharCode["THREEPEREMSPACE"] = 8196] = "THREEPEREMSPACE"; - CharCode[CharCode["FOURPEREMSPACE"] = 8197] = "FOURPEREMSPACE"; - CharCode[CharCode["SIXPEREMSPACE"] = 8198] = "SIXPEREMSPACE"; - CharCode[CharCode["FIGURESPACE"] = 8199] = "FIGURESPACE"; - CharCode[CharCode["PUNCTUATIONSPACE"] = 8200] = "PUNCTUATIONSPACE"; - CharCode[CharCode["THINSPACE"] = 8201] = "THINSPACE"; - CharCode[CharCode["HAIRSPACE"] = 8202] = "HAIRSPACE"; - CharCode[CharCode["ZEROWIDTHSPACE"] = 8203] = "ZEROWIDTHSPACE"; - CharCode[CharCode["NARROWNOBREAKSPACE"] = 8239] = "NARROWNOBREAKSPACE"; - CharCode[CharCode["IDEOGRAPHICSPACE"] = 12288] = "IDEOGRAPHICSPACE"; - CharCode[CharCode["MATHEMATICALSPACE"] = 8287] = "MATHEMATICALSPACE"; - CharCode[CharCode["OGHAM"] = 5760] = "OGHAM"; - CharCode[CharCode["_"] = 95] = "_"; - CharCode[CharCode["_0"] = 48] = "_0"; - CharCode[CharCode["_1"] = 49] = "_1"; - CharCode[CharCode["_2"] = 50] = "_2"; - CharCode[CharCode["_3"] = 51] = "_3"; - CharCode[CharCode["_4"] = 52] = "_4"; - CharCode[CharCode["_5"] = 53] = "_5"; - CharCode[CharCode["_6"] = 54] = "_6"; - CharCode[CharCode["_7"] = 55] = "_7"; - CharCode[CharCode["_8"] = 56] = "_8"; - CharCode[CharCode["_9"] = 57] = "_9"; - CharCode[CharCode["a"] = 97] = "a"; - CharCode[CharCode["b"] = 98] = "b"; - CharCode[CharCode["c"] = 99] = "c"; - CharCode[CharCode["d"] = 100] = "d"; - CharCode[CharCode["e"] = 101] = "e"; - CharCode[CharCode["f"] = 102] = "f"; - CharCode[CharCode["g"] = 103] = "g"; - CharCode[CharCode["h"] = 104] = "h"; - CharCode[CharCode["i"] = 105] = "i"; - CharCode[CharCode["j"] = 106] = "j"; - CharCode[CharCode["k"] = 107] = "k"; - CharCode[CharCode["l"] = 108] = "l"; - CharCode[CharCode["m"] = 109] = "m"; - CharCode[CharCode["n"] = 110] = "n"; - CharCode[CharCode["o"] = 111] = "o"; - CharCode[CharCode["p"] = 112] = "p"; - CharCode[CharCode["q"] = 113] = "q"; - CharCode[CharCode["r"] = 114] = "r"; - CharCode[CharCode["s"] = 115] = "s"; - CharCode[CharCode["t"] = 116] = "t"; - CharCode[CharCode["u"] = 117] = "u"; - CharCode[CharCode["v"] = 118] = "v"; - CharCode[CharCode["w"] = 119] = "w"; - CharCode[CharCode["x"] = 120] = "x"; - CharCode[CharCode["y"] = 121] = "y"; - CharCode[CharCode["z"] = 122] = "z"; - CharCode[CharCode["A"] = 65] = "A"; - CharCode[CharCode["B"] = 66] = "B"; - CharCode[CharCode["C"] = 67] = "C"; - CharCode[CharCode["D"] = 68] = "D"; - CharCode[CharCode["E"] = 69] = "E"; - CharCode[CharCode["F"] = 70] = "F"; - CharCode[CharCode["G"] = 71] = "G"; - CharCode[CharCode["H"] = 72] = "H"; - CharCode[CharCode["I"] = 73] = "I"; - CharCode[CharCode["J"] = 74] = "J"; - CharCode[CharCode["K"] = 75] = "K"; - CharCode[CharCode["L"] = 76] = "L"; - CharCode[CharCode["M"] = 77] = "M"; - CharCode[CharCode["N"] = 78] = "N"; - CharCode[CharCode["O"] = 79] = "O"; - CharCode[CharCode["P"] = 80] = "P"; - CharCode[CharCode["Q"] = 81] = "Q"; - CharCode[CharCode["R"] = 82] = "R"; - CharCode[CharCode["S"] = 83] = "S"; - CharCode[CharCode["T"] = 84] = "T"; - CharCode[CharCode["U"] = 85] = "U"; - CharCode[CharCode["V"] = 86] = "V"; - CharCode[CharCode["W"] = 87] = "W"; - CharCode[CharCode["X"] = 88] = "X"; - CharCode[CharCode["Y"] = 89] = "Y"; - CharCode[CharCode["Z"] = 90] = "Z"; - CharCode[CharCode["AMPERSAND"] = 38] = "AMPERSAND"; - CharCode[CharCode["ASTERISK"] = 42] = "ASTERISK"; - CharCode[CharCode["AT"] = 64] = "AT"; - CharCode[CharCode["BACKSLASH"] = 92] = "BACKSLASH"; - CharCode[CharCode["BACKTICK"] = 96] = "BACKTICK"; - CharCode[CharCode["BAR"] = 124] = "BAR"; - CharCode[CharCode["CARET"] = 94] = "CARET"; - CharCode[CharCode["CLOSEBRACE"] = 125] = "CLOSEBRACE"; - CharCode[CharCode["CLOSEBRACKET"] = 93] = "CLOSEBRACKET"; - CharCode[CharCode["CLOSEPAREN"] = 41] = "CLOSEPAREN"; - CharCode[CharCode["COLON"] = 58] = "COLON"; - CharCode[CharCode["COMMA"] = 44] = "COMMA"; - CharCode[CharCode["DOLLAR"] = 36] = "DOLLAR"; - CharCode[CharCode["DOT"] = 46] = "DOT"; - CharCode[CharCode["DOUBLEQUOTE"] = 34] = "DOUBLEQUOTE"; - CharCode[CharCode["EQUALS"] = 61] = "EQUALS"; - CharCode[CharCode["EXCLAMATION"] = 33] = "EXCLAMATION"; - CharCode[CharCode["GREATERTHAN"] = 62] = "GREATERTHAN"; - CharCode[CharCode["HASH"] = 35] = "HASH"; - CharCode[CharCode["LESSTHAN"] = 60] = "LESSTHAN"; - CharCode[CharCode["MINUS"] = 45] = "MINUS"; - CharCode[CharCode["OPENBRACE"] = 123] = "OPENBRACE"; - CharCode[CharCode["OPENBRACKET"] = 91] = "OPENBRACKET"; - CharCode[CharCode["OPENPAREN"] = 40] = "OPENPAREN"; - CharCode[CharCode["PERCENT"] = 37] = "PERCENT"; - CharCode[CharCode["PLUS"] = 43] = "PLUS"; - CharCode[CharCode["QUESTION"] = 63] = "QUESTION"; - CharCode[CharCode["SEMICOLON"] = 59] = "SEMICOLON"; - CharCode[CharCode["SINGLEQUOTE"] = 39] = "SINGLEQUOTE"; - CharCode[CharCode["SLASH"] = 47] = "SLASH"; - CharCode[CharCode["TILDE"] = 126] = "TILDE"; - CharCode[CharCode["BACKSPACE"] = 8] = "BACKSPACE"; - CharCode[CharCode["FORMFEED"] = 12] = "FORMFEED"; - CharCode[CharCode["BYTEORDERMARK"] = 65279] = "BYTEORDERMARK"; - CharCode[CharCode["TAB"] = 9] = "TAB"; - CharCode[CharCode["VERTICALTAB"] = 11] = "VERTICALTAB"; -})(CharCode = exports.CharCode || (exports.CharCode = {})); -/** Tests if the specified character code is some sort of line break. */ -function isLineBreak(c) { - switch (c) { - case 10 /* LINEFEED */: - case 13 /* CARRIAGERETURN */: - case 8232 /* LINESEPARATOR */: - case 8233 /* PARAGRAPHSEPARATOR */: { - return true; - } - default: { - return false; - } - } -} -exports.isLineBreak = isLineBreak; -/** Tests if the specified character code is some sort of white space. */ -function isWhiteSpace(c) { - switch (c) { - case 32 /* SPACE */: - case 9 /* TAB */: - case 11 /* VERTICALTAB */: - case 12 /* FORMFEED */: - case 160 /* NONBREAKINGSPACE */: - case 133 /* NEXTLINE */: - case 5760 /* OGHAM */: - case 8239 /* NARROWNOBREAKSPACE */: - case 8287 /* MATHEMATICALSPACE */: - case 12288 /* IDEOGRAPHICSPACE */: - case 65279 /* BYTEORDERMARK */: { - return true; - } - default: { - return c >= 8192 /* ENQUAD */ && c <= 8203 /* ZEROWIDTHSPACE */; - } - } -} -exports.isWhiteSpace = isWhiteSpace; -/** Tests if the specified character code is a valid decimal digit. */ -function isDecimalDigit(c) { - return c >= 48 /* _0 */ && c <= 57 /* _9 */; -} -exports.isDecimalDigit = isDecimalDigit; -/** Tests if the specified character code is a valid octal digit. */ -function isOctalDigit(c) { - return c >= 48 /* _0 */ && c <= 55 /* _7 */; -} -exports.isOctalDigit = isOctalDigit; -/** Tests if the specified character code is a valid start of an identifier. */ -function isIdentifierStart(c) { - return c >= 97 /* a */ && c <= 122 /* z */ - || c >= 65 /* A */ && c <= 90 /* Z */ - || c == 95 /* _ */ - || c == 36 /* DOLLAR */ - || c > 0x7f && isUnicodeIdentifierStart(c); -} -exports.isIdentifierStart = isIdentifierStart; -/** Tests if the specified character code is a valid keyword character. */ -function isKeywordCharacter(c) { - return c >= 97 /* a */ && c <= 122 /* z */; -} -exports.isKeywordCharacter = isKeywordCharacter; -/** Tests if the specified character code is a valid part of an identifier. */ -function isIdentifierPart(c) { - return c >= 97 /* a */ && c <= 122 /* z */ - || c >= 65 /* A */ && c <= 90 /* Z */ - || c >= 48 /* _0 */ && c <= 57 /* _9 */ - || c == 95 /* _ */ - || c == 36 /* DOLLAR */ - || c > 0x7f && isUnicodeIdentifierPart(c); -} -exports.isIdentifierPart = isIdentifierPart; -// storing as u16 to save memory -var unicodeIdentifierStart = [ - 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, - 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, - 908, 908, 910, 929, 931, - 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, - 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, - 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, - 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, - 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, - 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, - 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, - 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, - 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, - 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, - 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, - 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, - 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, - 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, - 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, - 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, - 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, - 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, - 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, - 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, - 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, - 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, - 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, - 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, - 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, - 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, - 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, - 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, - 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, - 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, - 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, - 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, - 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, - 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, - 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, - 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, - 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, - 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, - 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, - 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, - 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, - 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, - 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, - 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, - 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, - 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, - 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015, - 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, - 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, - 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, - 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, - 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, - 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, - 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, - 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, - 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, - 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, - 65479, 65482, 65487, 65490, 65495, 65498, 65500, -]; -var unicodeIdentifierPart = [ - 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, - 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, - 908, 908, 910, 929, 931, - 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, - 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, - 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, - 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, - 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, - 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, - 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, - 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, - 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, - 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, - 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, - 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, - 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, - 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, - 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, - 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, - 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, - 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, - 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, - 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, - 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, - 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, - 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, - 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, - 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, - 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, - 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, - 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, - 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, - 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, - 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, - 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, - 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, - 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, - 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, - 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, - 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, - 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, - 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, - 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, - 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, - 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, - 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, - 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, - 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, - 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, - 8521, 8526, 8526, 8544, 8584, - 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, - 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, - 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, - 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, - 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, - 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, - 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, - 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, - 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072, - 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, - 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, - 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, - 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, - 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, - 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, - 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, - 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, - 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, - 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, - 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, -]; -function lookupInUnicodeMap(code, map) { - if (code < map[0]) - return false; - var lo = 0; - var hi = map.length; - var mid; - var midVal; - while (lo + 1 < hi) { - mid = lo + ((hi - lo) >> 1); - mid -= (mid & 1); - midVal = map[mid]; - if (midVal <= code && code <= map[mid + 1]) { - return true; - } - if (code < midVal) { - hi = mid; - } - else { - lo = mid + 2; - } - } - return false; -} -function isUnicodeIdentifierStart(code) { - return code < 0 || code > 0xffff ? false - : lookupInUnicodeMap(code, unicodeIdentifierStart); -} -function isUnicodeIdentifierPart(code) { - return code < 0 || code > 0xffff ? false - : lookupInUnicodeMap(code, unicodeIdentifierPart); -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmNvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9jaGFyY29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsbUJBQW1CLENBQUEsS0FBSzs7QUFFeEIsd0NBQXdDO0FBQ3hDLElBQWtCLFFBb0lqQjtBQXBJRCxXQUFrQixRQUFRO0lBRXhCLHVDQUFRLENBQUE7SUFDUixnREFBZSxDQUFBO0lBQ2YsNERBQXFCLENBQUE7SUFDckIsNERBQXNCLENBQUE7SUFDdEIsc0VBQTJCLENBQUE7SUFDM0IsaURBQWlCLENBQUE7SUFFakIsMENBQVksQ0FBQTtJQUNaLGlFQUF1QixDQUFBO0lBQ3ZCLDhDQUFlLENBQUE7SUFDZiw4Q0FBZSxDQUFBO0lBQ2YsZ0RBQWdCLENBQUE7SUFDaEIsZ0RBQWdCLENBQUE7SUFDaEIsZ0VBQXdCLENBQUE7SUFDeEIsOERBQXVCLENBQUE7SUFDdkIsNERBQXNCLENBQUE7SUFDdEIsd0RBQW9CLENBQUE7SUFDcEIsa0VBQXlCLENBQUE7SUFDekIsb0RBQWtCLENBQUE7SUFDbEIsb0RBQWtCLENBQUE7SUFDbEIsOERBQXVCLENBQUE7SUFDdkIsc0VBQTJCLENBQUE7SUFDM0IsbUVBQXlCLENBQUE7SUFDekIsb0VBQTBCLENBQUE7SUFDMUIsNENBQWMsQ0FBQTtJQUVkLGtDQUFRLENBQUE7SUFFUixvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBRVQsa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FB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NENBT0M7QUFFRCxnQ0FBZ0M7QUFDaEMsSUFBTSxzQkFBc0IsR0FBVTtJQUNwQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDOUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztDQUNoRCxDQUFDO0FBQ0YsSUFBTSxxQkFBcUIsR0FBVTtJQUNuQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0NBQzlELENBQUM7QUFFRixTQUFTLGtCQUFrQixDQUFDLElBQVMsRUFBRSxHQUFVO0lBQy9DLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUVoQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWCxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3BCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxNQUFXLENBQUM7SUFFaEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNsQixHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUIsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksR0FBRyxNQUFNLEVBQUU7WUFDakIsRUFBRSxHQUFHLEdBQUcsQ0FBQztTQUNWO2FBQU07WUFDTCxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztTQUNkO0tBQ0Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLElBQVM7SUFDekMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQVcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLElBQVM7SUFDeEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQVcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuLyoqIEFuIGVudW0gb2YgbmFtZWQgY2hhcmFjdGVyIGNvZGVzLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQ2hhckNvZGUge1xuXG4gIE5VTEwgPSAwLFxuICBMSU5FRkVFRCA9IDB4MEEsXG4gIENBUlJJQUdFUkVUVVJOID0gMHgwRCxcbiAgTElORVNFUEFSQVRPUiA9IDB4MjAyOCxcbiAgUEFSQUdSQVBIU0VQQVJBVE9SID0gMHgyMDI5LFxuICBORVhUTElORSA9IDB4MDA4NSxcblxuICBTUEFDRSA9IDB4MjAsXG4gIE5PTkJSRUFLSU5HU1BBQ0UgPSAweEEwLFxuICBFTlFVQUQgPSAweDIwMDAsXG4gIEVNUVVBRCA9IDB4MjAwMSxcbiAgRU5TUEFDRSA9IDB4MjAwMixcbiAgRU1TUEFDRSA9IDB4MjAwMyxcbiAgVEhSRUVQRVJFTVNQQUNFID0gMHgyMDA0LFxuICBGT1VSUEVSRU1TUEFDRSA9IDB4MjAwNSxcbiAgU0lYUEVSRU1TUEFDRSA9IDB4MjAwNixcbiAgRklHVVJFU1BBQ0UgPSAweDIwMDcsXG4gIFBVTkNUVUFUSU9OU1BBQ0UgPSAweDIwMDgsXG4gIFRISU5TUEFDRSA9IDB4MjAwOSxcbiAgSEFJUlNQQUNFID0gMHgyMDBBLFxuICBaRVJPV0lEVEhTUEFDRSA9IDB4MjAwQixcbiAgTkFSUk9XTk9CUkVBS1NQQUNFID0gMHgyMDJGLFxuICBJREVPR1JBUEhJQ1NQQUNFID0gMHgzMDAwLFxuICBNQVRIRU1BVElDQUxTUEFDRSA9IDB4MjA1RixcbiAgT0dIQU0gPSAweDE2ODAsXG5cbiAgXyA9IDB4NUYsXG5cbiAgXzAgPSAweDMwLFxuICBfMSA9IDB4MzEsXG4gIF8yID0gMHgzMixcbiAgXzMgPSAweDMzLFxuICBfNCA9IDB4MzQsXG4gIF81ID0gMHgzNSxcbiAgXzYgPSAweDM2LFxuICBfNyA9IDB4MzcsXG4gIF84ID0gMHgzOCxcbiAgXzkgPSAweDM5LFxuXG4gIGEgPSAweDYxLFxuICBiID0gMHg2MixcbiAgYyA9IDB4NjMsXG4gIGQgPSAweDY0LFxuICBlID0gMHg2NSxcbiAgZiA9IDB4NjYsXG4gIGcgPSAweDY3LFxuICBoID0gMHg2OCxcbiAgaSA9IDB4NjksXG4gIGogPSAweDZBLFxuICBrID0gMHg2QixcbiAgbCA9IDB4NkMsXG4gIG0gPSAweDZELFxuICBuID0gMHg2RSxcbiAgbyA9IDB4NkYsXG4gIHAgPSAweDcwLFxuICBxID0gMHg3MSxcbiAgciA9IDB4NzIsXG4gIHMgPSAweDczLFxuICB0ID0gMHg3NCxcbiAgdSA9IDB4NzUsXG4gIHYgPSAweDc2LFxuICB3ID0gMHg3NyxcbiAgeCA9IDB4NzgsXG4gIHkgPSAweDc5LFxuICB6ID0gMHg3QSxcblxuICBBID0gMHg0MSxcbiAgQiA9IDB4NDIsXG4gIEMgPSAweDQzLFxuICBEID0gMHg0NCxcbiAgRSA9IDB4NDUsXG4gIEYgPSAweDQ2LFxuICBHID0gMHg0NyxcbiAgSCA9IDB4NDgsXG4gIEkgPSAweDQ5LFxuICBKID0gMHg0QSxcbiAgSyA9IDB4NEIsXG4gIEwgPSAweDRDLFxuICBNID0gMHg0RCxcbiAgTiA9IDB4NEUsXG4gIE8gPSAweDRGLFxuICBQID0gMHg1MCxcbiAgUSA9IDB4NTEsXG4gIFIgPSAweDUyLFxuICBTID0gMHg1MyxcbiAgVCA9IDB4NTQsXG4gIFUgPSAweDU1LFxuICBWID0gMHg1NixcbiAgVyA9IDB4NTcsXG4gIFggPSAweDU4LFxuICBZID0gMHg1OSxcbiAgWiA9IDB4NWEsXG5cbiAgQU1QRVJTQU5EID0gMHgyNixcbiAgQVNURVJJU0sgPSAweDJBLFxuICBBVCA9IDB4NDAsXG4gIEJBQ0tTTEFTSCA9IDB4NUMsXG4gIEJBQ0tUSUNLID0gMHg2MCxcbiAgQkFSID0gMHg3QyxcbiAgQ0FSRVQgPSAweDVFLFxuICBDTE9TRUJSQUNFID0gMHg3RCxcbiAgQ0xPU0VCUkFDS0VUID0gMHg1RCxcbiAgQ0xPU0VQQVJFTiA9IDB4MjksXG4gIENPTE9OID0gMHgzQSxcbiAgQ09NTUEgPSAweDJDLFxuICBET0xMQVIgPSAweDI0LFxuICBET1QgPSAweDJFLFxuICBET1VCTEVRVU9URSA9IDB4MjIsXG4gIEVRVUFMUyA9IDB4M0QsXG4gIEVYQ0xBTUFUSU9OID0gMHgyMSxcbiAgR1JFQVRFUlRIQU4gPSAweDNFLFxuICBIQVNIID0gMHgyMyxcbiAgTEVTU1RIQU4gPSAweDNDLFxuICBNSU5VUyA9IDB4MkQsXG4gIE9QRU5CUkFDRSA9IDB4N0IsXG4gIE9QRU5CUkFDS0VUID0gMHg1QixcbiAgT1BFTlBBUkVOID0gMHgyOCxcbiAgUEVSQ0VOVCA9IDB4MjUsXG4gIFBMVVMgPSAweDJCLFxuICBRVUVTVElPTiA9IDB4M0YsXG4gIFNFTUlDT0xPTiA9IDB4M0IsXG4gIFNJTkdMRVFVT1RFID0gMHgyNyxcbiAgU0xBU0ggPSAweDJGLFxuICBUSUxERSA9IDB4N0UsXG5cbiAgQkFDS1NQQUNFID0gMHgwOCxcbiAgRk9STUZFRUQgPSAweDBDLFxuICBCWVRFT1JERVJNQVJLID0gMHhGRUZGLFxuICBUQUIgPSAweDA5LFxuICBWRVJUSUNBTFRBQiA9IDB4MEJcbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgc29tZSBzb3J0IG9mIGxpbmUgYnJlYWsuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lQnJlYWsoYzogQ2hhckNvZGUpOiBib29sIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICBjYXNlIENoYXJDb2RlLkNBUlJJQUdFUkVUVVJOOlxuICAgIGNhc2UgQ2hhckNvZGUuTElORVNFUEFSQVRPUjpcbiAgICBjYXNlIENoYXJDb2RlLlBBUkFHUkFQSFNFUEFSQVRPUjoge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgc29tZSBzb3J0IG9mIHdoaXRlIHNwYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjOiBpMzIpOiBib29sIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSBDaGFyQ29kZS5TUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLlRBQjpcbiAgICBjYXNlIENoYXJDb2RlLlZFUlRJQ0FMVEFCOlxuICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6XG4gICAgY2FzZSBDaGFyQ29kZS5OT05CUkVBS0lOR1NQQUNFOlxuICAgIGNhc2UgQ2hhckNvZGUuTkVYVExJTkU6XG4gICAgY2FzZSBDaGFyQ29kZS5PR0hBTTpcbiAgICBjYXNlIENoYXJDb2RlLk5BUlJPV05PQlJFQUtTUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLk1BVEhFTUFUSUNBTFNQQUNFOlxuICAgIGNhc2UgQ2hhckNvZGUuSURFT0dSQVBISUNTUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLkJZVEVPUkRFUk1BUks6IHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gYyA+PSBDaGFyQ29kZS5FTlFVQUQgJiYgYyA8PSBDaGFyQ29kZS5aRVJPV0lEVEhTUEFDRTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgYSB2YWxpZCBkZWNpbWFsIGRpZ2l0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVjaW1hbERpZ2l0KGM6IGkzMik6IGJvb2wge1xuICByZXR1cm4gYyA+PSBDaGFyQ29kZS5fMCAmJiBjIDw9IENoYXJDb2RlLl85O1xufVxuXG4vKiogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZSBpcyBhIHZhbGlkIG9jdGFsIGRpZ2l0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2N0YWxEaWdpdChjOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fNztcbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgYSB2YWxpZCBzdGFydCBvZiBhbiBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbnRpZmllclN0YXJ0KGM6IGkzMik6IGJvb2wge1xuICByZXR1cm4gYyA+PSBDaGFyQ29kZS5hICYmIGMgPD0gQ2hhckNvZGUuelxuICAgICAgfHwgYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuWlxuICAgICAgfHwgYyA9PSBDaGFyQ29kZS5fXG4gICAgICB8fCBjID09IENoYXJDb2RlLkRPTExBUlxuICAgICAgfHwgYyA+IDB4N2YgJiYgaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGMpO1xufVxuXG4vKiogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZSBpcyBhIHZhbGlkIGtleXdvcmQgY2hhcmFjdGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzS2V5d29yZENoYXJhY3RlcihjOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGMgPj0gQ2hhckNvZGUuYSAmJiBjIDw9IENoYXJDb2RlLno7XG59XG5cbi8qKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBjb2RlIGlzIGEgdmFsaWQgcGFydCBvZiBhbiBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbnRpZmllclBhcnQoYzogaTMyKTogYm9vbCB7XG4gIHJldHVybiBjID49IENoYXJDb2RlLmEgJiYgYyA8PSBDaGFyQ29kZS56XG4gICAgICB8fCBjID49IENoYXJDb2RlLkEgJiYgYyA8PSBDaGFyQ29kZS5aXG4gICAgICB8fCBjID49IENoYXJDb2RlLl8wICYmIGMgPD0gQ2hhckNvZGUuXzlcbiAgICAgIHx8IGMgPT0gQ2hhckNvZGUuX1xuICAgICAgfHwgYyA9PSBDaGFyQ29kZS5ET0xMQVJcbiAgICAgIHx8IGMgPiAweDdmICYmIGlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGMpO1xufVxuXG4vLyBzdG9yaW5nIGFzIHUxNiB0byBzYXZlIG1lbW9yeVxuY29uc3QgdW5pY29kZUlkZW50aWZpZXJTdGFydDogdTE2W10gPSBbXG4gIDE3MCwgMTcwLCAxODEsIDE4MSwgMTg2LCAxODYsIDE5MiwgMjE0LCAyMTYsIDI0NiwgMjQ4LCA3MDUsIDcxMCwgNzIxLCA3MzYsXG4gIDc0MCwgNzQ4LCA3NDgsIDc1MCwgNzUwLCA4ODAsIDg4NCwgODg2LCA4ODcsIDg5MCwgODkzLCA5MDIsIDkwMiwgOTA0LCA5MDYsXG4gIDkwOCwgOTA4LCA5MTAsIDkyOSwgOTMxLFxuICAxMDEzLCAxMDE1LCAxMTUzLCAxMTYyLCAxMzE5LCAxMzI5LCAxMzY2LCAxMzY5LCAxMzY5LCAxMzc3LCAxNDE1LCAxNDg4LCAxNTE0LFxuICAxNTIwLCAxNTIyLCAxNTY4LCAxNjEwLCAxNjQ2LCAxNjQ3LCAxNjQ5LCAxNzQ3LCAxNzQ5LCAxNzQ5LCAxNzY1LCAxNzY2LCAxNzc0LFxuICAxNzc1LCAxNzg2LCAxNzg4LCAxNzkxLCAxNzkxLCAxODA4LCAxODA4LCAxODEwLCAxODM5LCAxODY5LCAxOTU3LCAxOTY5LCAxOTY5LFxuICAxOTk0LCAyMDI2LCAyMDM2LCAyMDM3LCAyMDQyLCAyMDQyLCAyMDQ4LCAyMDY5LCAyMDc0LCAyMDc0LCAyMDg0LCAyMDg0LCAyMDg4LFxuICAyMDg4LCAyMTEyLCAyMTM2LCAyMjA4LCAyMjA4LCAyMjEwLCAyMjIwLCAyMzA4LCAyMzYxLCAyMzY1LCAyMzY1LCAyMzg0LCAyMzg0LFxuICAyMzkyLCAyNDAxLCAyNDE3LCAyNDIzLCAyNDI1LCAyNDMxLCAyNDM3LCAyNDQ0LCAyNDQ3LCAyNDQ4LCAyNDUxLCAyNDcyLCAyNDc0LFxuICAyNDgwLCAyNDgyLCAyNDgyLCAyNDg2LCAyNDg5LCAyNDkzLCAyNDkzLCAyNTEwLCAyNTEwLCAyNTI0LCAyNTI1LCAyNTI3LCAyNTI5LFxuICAyNTQ0LCAyNTQ1LCAyNTY1LCAyNTcwLCAyNTc1LCAyNTc2LCAyNTc5LCAyNjAwLCAyNjAyLCAyNjA4LCAyNjEwLCAyNjExLCAyNjEzLFxuICAyNjE0LCAyNjE2LCAyNjE3LCAyNjQ5LCAyNjUyLCAyNjU0LCAyNjU0LCAyNjc0LCAyNjc2LCAyNjkzLCAyNzAxLCAyNzAzLCAyNzA1LFxuICAyNzA3LCAyNzI4LCAyNzMwLCAyNzM2LCAyNzM4LCAyNzM5LCAyNzQxLCAyNzQ1LCAyNzQ5LCAyNzQ5LCAyNzY4LCAyNzY4LCAyNzg0LFxuICAyNzg1LCAyODIxLCAyODI4LCAyODMxLCAyODMyLCAyODM1LCAyODU2LCAyODU4LCAyODY0LCAyODY2LCAyODY3LCAyODY5LCAyODczLFxuICAyODc3LCAyODc3LCAyOTA4LCAyOTA5LCAyOTExLCAyOTEzLCAyOTI5LCAyOTI5LCAyOTQ3LCAyOTQ3LCAyOTQ5LCAyOTU0LCAyOTU4LFxuICAyOTYwLCAyOTYyLCAyOTY1LCAyOTY5LCAyOTcwLCAyOTcyLCAyOTcyLCAyOTc0LCAyOTc1LCAyOTc5LCAyOTgwLCAyOTg0LCAyOTg2LFxuICAyOTkwLCAzMDAxLCAzMDI0LCAzMDI0LCAzMDc3LCAzMDg0LCAzMDg2LCAzMDg4LCAzMDkwLCAzMTEyLCAzMTE0LCAzMTIzLCAzMTI1LFxuICAzMTI5LCAzMTMzLCAzMTMzLCAzMTYwLCAzMTYxLCAzMTY4LCAzMTY5LCAzMjA1LCAzMjEyLCAzMjE0LCAzMjE2LCAzMjE4LCAzMjQwLFxuICAzMjQyLCAzMjUxLCAzMjUzLCAzMjU3LCAzMjYxLCAzMjYxLCAzMjk0LCAzMjk0LCAzMjk2LCAzMjk3LCAzMzEzLCAzMzE0LCAzMzMzLFxuICAzMzQwLCAzMzQyLCAzMzQ0LCAzMzQ2LCAzMzg2LCAzMzg5LCAzMzg5LCAzNDA2LCAzNDA2LCAzNDI0LCAzNDI1LCAzNDUwLCAzNDU1LFxuICAzNDYxLCAzNDc4LCAzNDgyLCAzNTA1LCAzNTA3LCAzNTE1LCAzNTE3LCAzNTE3LCAzNTIwLCAzNTI2LCAzNTg1LCAzNjMyLCAzNjM0LFxuICAzNjM1LCAzNjQ4LCAzNjU0LCAzNzEzLCAzNzE0LCAzNzE2LCAzNzE2LCAzNzE5LCAzNzIwLCAzNzIyLCAzNzIyLCAzNzI1LCAzNzI1LFxuICAzNzMyLCAzNzM1LCAzNzM3LCAzNzQzLCAzNzQ1LCAzNzQ3LCAzNzQ5LCAzNzQ5LCAzNzUxLCAzNzUxLCAzNzU0LCAzNzU1LCAzNzU3LFxuICAzNzYwLCAzNzYyLCAzNzYzLCAzNzczLCAzNzczLCAzNzc2LCAzNzgwLCAzNzgyLCAzNzgyLCAzODA0LCAzODA3LCAzODQwLCAzODQwLFxuICAzOTA0LCAzOTExLCAzOTEzLCAzOTQ4LCAzOTc2LCAzOTgwLCA0MDk2LCA0MTM4LCA0MTU5LCA0MTU5LCA0MTc2LCA0MTgxLCA0MTg2LFxuICA0MTg5LCA0MTkzLCA0MTkzLCA0MTk3LCA0MTk4LCA0MjA2LCA0MjA4LCA0MjEzLCA0MjI1LCA0MjM4LCA0MjM4LCA0MjU2LCA0MjkzLFxuICA0Mjk1LCA0Mjk1LCA0MzAxLCA0MzAxLCA0MzA0LCA0MzQ2LCA0MzQ4LCA0NjgwLCA0NjgyLCA0Njg1LCA0Njg4LCA0Njk0LCA0Njk2LFxuICA0Njk2LCA0Njk4LCA0NzAxLCA0NzA0LCA0NzQ0LCA0NzQ2LCA0NzQ5LCA0NzUyLCA0Nzg0LCA0Nzg2LCA0Nzg5LCA0NzkyLCA0Nzk4LFxuICA0ODAwLCA0ODAwLCA0ODAyLCA0ODA1LCA0ODA4LCA0ODIyLCA0ODI0LCA0ODgwLCA0ODgyLCA0ODg1LCA0ODg4LCA0OTU0LCA0OTkyLFxuICA1MDA3LCA1MDI0LCA1MTA4LCA1MTIxLCA1NzQwLCA1NzQzLCA1NzU5LCA1NzYxLCA1Nzg2LCA1NzkyLCA1ODY2LCA1ODcwLCA1ODcyLFxuICA1ODg4LCA1OTAwLCA1OTAyLCA1OTA1LCA1OTIwLCA1OTM3LCA1OTUyLCA1OTY5LCA1OTg0LCA1OTk2LCA1OTk4LCA2MDAwLCA2MDE2LFxuICA2MDY3LCA2MTAzLCA2MTAzLCA2MTA4LCA2MTA4LCA2MTc2LCA2MjYzLCA2MjcyLCA2MzEyLCA2MzE0LCA2MzE0LCA2MzIwLCA2Mzg5LFxuICA2NDAwLCA2NDI4LCA2NDgwLCA2NTA5LCA2NTEyLCA2NTE2LCA2NTI4LCA2NTcxLCA2NTkzLCA2NTk5LCA2NjU2LCA2Njc4LCA2Njg4LFxuICA2NzQwLCA2ODIzLCA2ODIzLCA2OTE3LCA2OTYzLCA2OTgxLCA2OTg3LCA3MDQzLCA3MDcyLCA3MDg2LCA3MDg3LCA3MDk4LCA3MTQxLFxuICA3MTY4LCA3MjAzLCA3MjQ1LCA3MjQ3LCA3MjU4LCA3MjkzLCA3NDAxLCA3NDA0LCA3NDA2LCA3NDA5LCA3NDEzLCA3NDE0LCA3NDI0LFxuICA3NjE1LCA3NjgwLCA3OTU3LCA3OTYwLCA3OTY1LCA3OTY4LCA4MDA1LCA4MDA4LCA4MDEzLCA4MDE2LCA4MDIzLCA4MDI1LCA4MDI1LFxuICA4MDI3LCA4MDI3LCA4MDI5LCA4MDI5LCA4MDMxLCA4MDYxLCA4MDY0LCA4MTE2LCA4MTE4LCA4MTI0LCA4MTI2LCA4MTI2LCA4MTMwLFxuICA4MTMyLCA4MTM0LCA4MTQwLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTU1LCA4MTYwLCA4MTcyLCA4MTc4LCA4MTgwLCA4MTgyLCA4MTg4LFxuICA4MzA1LCA4MzA1LCA4MzE5LCA4MzE5LCA4MzM2LCA4MzQ4LCA4NDUwLCA4NDUwLCA4NDU1LCA4NDU1LCA4NDU4LCA4NDY3LCA4NDY5LFxuICA4NDY5LCA4NDczLCA4NDc3LCA4NDg0LCA4NDg0LCA4NDg2LCA4NDg2LCA4NDg4LCA4NDg4LCA4NDkwLCA4NDkzLCA4NDk1LCA4NTA1LFxuICA4NTA4LCA4NTExLCA4NTE3LCA4NTIxLCA4NTI2LCA4NTI2LCA4NTQ0LCA4NTg0LFxuICAxMTI2NCwgMTEzMTAsIDExMzEyLCAxMTM1OCwgMTEzNjAsIDExNDkyLCAxMTQ5OSwgMTE1MDIsIDExNTA2LCAxMTUwNywgMTE1MjAsXG4gIDExNTU3LCAxMTU1OSwgMTE1NTksIDExNTY1LCAxMTU2NSwgMTE1NjgsIDExNjIzLCAxMTYzMSwgMTE2MzEsIDExNjQ4LCAxMTY3MCxcbiAgMTE2ODAsIDExNjg2LCAxMTY4OCwgMTE2OTQsIDExNjk2LCAxMTcwMiwgMTE3MDQsIDExNzEwLCAxMTcxMiwgMTE3MTgsIDExNzIwLFxuICAxMTcyNiwgMTE3MjgsIDExNzM0LCAxMTczNiwgMTE3NDIsIDExODIzLCAxMTgyMywgMTIyOTMsIDEyMjk1LCAxMjMyMSwgMTIzMjksXG4gIDEyMzM3LCAxMjM0MSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTI0MzgsIDEyNDQ1LCAxMjQ0NywgMTI0NDksIDEyNTM4LCAxMjU0MCxcbiAgMTI1NDMsIDEyNTQ5LCAxMjU4OSwgMTI1OTMsIDEyNjg2LCAxMjcwNCwgMTI3MzAsIDEyNzg0LCAxMjc5OSwgMTMzMTIsIDE5ODkzLFxuICAxOTk2OCwgNDA5MDgsIDQwOTYwLCA0MjEyNCwgNDIxOTIsIDQyMjM3LCA0MjI0MCwgNDI1MDgsIDQyNTEyLCA0MjUyNywgNDI1MzgsXG4gIDQyNTM5LCA0MjU2MCwgNDI2MDYsIDQyNjIzLCA0MjY0NywgNDI2NTYsIDQyNzM1LCA0Mjc3NSwgNDI3ODMsIDQyNzg2LCA0Mjg4OCxcbiAgNDI4OTEsIDQyODk0LCA0Mjg5NiwgNDI4OTksIDQyOTEyLCA0MjkyMiwgNDMwMDAsIDQzMDA5LCA0MzAxMSwgNDMwMTMsIDQzMDE1LFxuICA0MzAxOCwgNDMwMjAsIDQzMDQyLCA0MzA3MiwgNDMxMjMsIDQzMTM4LCA0MzE4NywgNDMyNTAsIDQzMjU1LCA0MzI1OSwgNDMyNTksXG4gIDQzMjc0LCA0MzMwMSwgNDMzMTIsIDQzMzM0LCA0MzM2MCwgNDMzODgsIDQzMzk2LCA0MzQ0MiwgNDM0NzEsIDQzNDcxLCA0MzUyMCxcbiAgNDM1NjAsIDQzNTg0LCA0MzU4NiwgNDM1ODgsIDQzNTk1LCA0MzYxNiwgNDM2MzgsIDQzNjQyLCA0MzY0MiwgNDM2NDgsIDQzNjk1LFxuICA0MzY5NywgNDM2OTcsIDQzNzAxLCA0MzcwMiwgNDM3MDUsIDQzNzA5LCA0MzcxMiwgNDM3MTIsIDQzNzE0LCA0MzcxNCwgNDM3MzksXG4gIDQzNzQxLCA0Mzc0NCwgNDM3NTQsIDQzNzYyLCA0Mzc2NCwgNDM3NzcsIDQzNzgyLCA0Mzc4NSwgNDM3OTAsIDQzNzkzLCA0Mzc5OCxcbiAgNDM4MDgsIDQzODE0LCA0MzgxNiwgNDM4MjIsIDQzOTY4LCA0NDAwMiwgNDQwMzIsIDU1MjAzLCA1NTIxNiwgNTUyMzgsIDU1MjQzLFxuICA1NTI5MSwgNjM3NDQsIDY0MTA5LCA2NDExMiwgNjQyMTcsIDY0MjU2LCA2NDI2MiwgNjQyNzUsIDY0Mjc5LCA2NDI4NSwgNjQyODUsXG4gIDY0Mjg3LCA2NDI5NiwgNjQyOTgsIDY0MzEwLCA2NDMxMiwgNjQzMTYsIDY0MzE4LCA2NDMxOCwgNjQzMjAsIDY0MzIxLCA2NDMyMyxcbiAgNjQzMjQsIDY0MzI2LCA2NDQzMywgNjQ0NjcsIDY0ODI5LCA2NDg0OCwgNjQ5MTEsIDY0OTE0LCA2NDk2NywgNjUwMDgsIDY1MDE5LFxuICA2NTEzNiwgNjUxNDAsIDY1MTQyLCA2NTI3NiwgNjUzMTMsIDY1MzM4LCA2NTM0NSwgNjUzNzAsIDY1MzgyLCA2NTQ3MCwgNjU0NzQsXG4gIDY1NDc5LCA2NTQ4MiwgNjU0ODcsIDY1NDkwLCA2NTQ5NSwgNjU0OTgsIDY1NTAwLFxuXTtcbmNvbnN0IHVuaWNvZGVJZGVudGlmaWVyUGFydDogdTE2W10gPSBbXG4gIDE3MCwgMTcwLCAxODEsIDE4MSwgMTg2LCAxODYsIDE5MiwgMjE0LCAyMTYsIDI0NiwgMjQ4LCA3MDUsIDcxMCwgNzIxLCA3MzYsXG4gIDc0MCwgNzQ4LCA3NDgsIDc1MCwgNzUwLCA3NjgsIDg4NCwgODg2LCA4ODcsIDg5MCwgODkzLCA5MDIsIDkwMiwgOTA0LCA5MDYsXG4gIDkwOCwgOTA4LCA5MTAsIDkyOSwgOTMxLFxuICAxMDEzLCAxMDE1LCAxMTUzLCAxMTU1LCAxMTU5LCAxMTYyLCAxMzE5LCAxMzI5LCAxMzY2LCAxMzY5LCAxMzY5LCAxMzc3LCAxNDE1LFxuICAxNDI1LCAxNDY5LCAxNDcxLCAxNDcxLCAxNDczLCAxNDc0LCAxNDc2LCAxNDc3LCAxNDc5LCAxNDc5LCAxNDg4LCAxNTE0LCAxNTIwLFxuICAxNTIyLCAxNTUyLCAxNTYyLCAxNTY4LCAxNjQxLCAxNjQ2LCAxNzQ3LCAxNzQ5LCAxNzU2LCAxNzU5LCAxNzY4LCAxNzcwLCAxNzg4LFxuICAxNzkxLCAxNzkxLCAxODA4LCAxODY2LCAxODY5LCAxOTY5LCAxOTg0LCAyMDM3LCAyMDQyLCAyMDQyLCAyMDQ4LCAyMDkzLCAyMTEyLFxuICAyMTM5LCAyMjA4LCAyMjA4LCAyMjEwLCAyMjIwLCAyMjc2LCAyMzAyLCAyMzA0LCAyNDAzLCAyNDA2LCAyNDE1LCAyNDE3LCAyNDIzLFxuICAyNDI1LCAyNDMxLCAyNDMzLCAyNDM1LCAyNDM3LCAyNDQ0LCAyNDQ3LCAyNDQ4LCAyNDUxLCAyNDcyLCAyNDc0LCAyNDgwLCAyNDgyLFxuICAyNDgyLCAyNDg2LCAyNDg5LCAyNDkyLCAyNTAwLCAyNTAzLCAyNTA0LCAyNTA3LCAyNTEwLCAyNTE5LCAyNTE5LCAyNTI0LCAyNTI1LFxuICAyNTI3LCAyNTMxLCAyNTM0LCAyNTQ1LCAyNTYxLCAyNTYzLCAyNTY1LCAyNTcwLCAyNTc1LCAyNTc2LCAyNTc5LCAyNjAwLCAyNjAyLFxuICAyNjA4LCAyNjEwLCAyNjExLCAyNjEzLCAyNjE0LCAyNjE2LCAyNjE3LCAyNjIwLCAyNjIwLCAyNjIyLCAyNjI2LCAyNjMxLCAyNjMyLFxuICAyNjM1LCAyNjM3LCAyNjQxLCAyNjQxLCAyNjQ5LCAyNjUyLCAyNjU0LCAyNjU0LCAyNjYyLCAyNjc3LCAyNjg5LCAyNjkxLCAyNjkzLFxuICAyNzAxLCAyNzAzLCAyNzA1LCAyNzA3LCAyNzI4LCAyNzMwLCAyNzM2LCAyNzM4LCAyNzM5LCAyNzQxLCAyNzQ1LCAyNzQ4LCAyNzU3LFxuICAyNzU5LCAyNzYxLCAyNzYzLCAyNzY1LCAyNzY4LCAyNzY4LCAyNzg0LCAyNzg3LCAyNzkwLCAyNzk5LCAyODE3LCAyODE5LCAyODIxLFxuICAyODI4LCAyODMxLCAyODMyLCAyODM1LCAyODU2LCAyODU4LCAyODY0LCAyODY2LCAyODY3LCAyODY5LCAyODczLCAyODc2LCAyODg0LFxuICAyODg3LCAyODg4LCAyODkxLCAyODkzLCAyOTAyLCAyOTAzLCAyOTA4LCAyOTA5LCAyOTExLCAyOTE1LCAyOTE4LCAyOTI3LCAyOTI5LFxuICAyOTI5LCAyOTQ2LCAyOTQ3LCAyOTQ5LCAyOTU0LCAyOTU4LCAyOTYwLCAyOTYyLCAyOTY1LCAyOTY5LCAyOTcwLCAyOTcyLCAyOTcyLFxuICAyOTc0LCAyOTc1LCAyOTc5LCAyOTgwLCAyOTg0LCAyOTg2LCAyOTkwLCAzMDAxLCAzMDA2LCAzMDEwLCAzMDE0LCAzMDE2LCAzMDE4LFxuICAzMDIxLCAzMDI0LCAzMDI0LCAzMDMxLCAzMDMxLCAzMDQ2LCAzMDU1LCAzMDczLCAzMDc1LCAzMDc3LCAzMDg0LCAzMDg2LCAzMDg4LFxuICAzMDkwLCAzMTEyLCAzMTE0LCAzMTIzLCAzMTI1LCAzMTI5LCAzMTMzLCAzMTQwLCAzMTQyLCAzMTQ0LCAzMTQ2LCAzMTQ5LCAzMTU3LFxuICAzMTU4LCAzMTYwLCAzMTYxLCAzMTY4LCAzMTcxLCAzMTc0LCAzMTgzLCAzMjAyLCAzMjAzLCAzMjA1LCAzMjEyLCAzMjE0LCAzMjE2LFxuICAzMjE4LCAzMjQwLCAzMjQyLCAzMjUxLCAzMjUzLCAzMjU3LCAzMjYwLCAzMjY4LCAzMjcwLCAzMjcyLCAzMjc0LCAzMjc3LCAzMjg1LFxuICAzMjg2LCAzMjk0LCAzMjk0LCAzMjk2LCAzMjk5LCAzMzAyLCAzMzExLCAzMzEzLCAzMzE0LCAzMzMwLCAzMzMxLCAzMzMzLCAzMzQwLFxuICAzMzQyLCAzMzQ0LCAzMzQ2LCAzMzg2LCAzMzg5LCAzMzk2LCAzMzk4LCAzNDAwLCAzNDAyLCAzNDA2LCAzNDE1LCAzNDE1LCAzNDI0LFxuICAzNDI3LCAzNDMwLCAzNDM5LCAzNDUwLCAzNDU1LCAzNDU4LCAzNDU5LCAzNDYxLCAzNDc4LCAzNDgyLCAzNTA1LCAzNTA3LCAzNTE1LFxuICAzNTE3LCAzNTE3LCAzNTIwLCAzNTI2LCAzNTMwLCAzNTMwLCAzNTM1LCAzNTQwLCAzNTQyLCAzNTQyLCAzNTQ0LCAzNTUxLCAzNTcwLFxuICAzNTcxLCAzNTg1LCAzNjQyLCAzNjQ4LCAzNjYyLCAzNjY0LCAzNjczLCAzNzEzLCAzNzE0LCAzNzE2LCAzNzE2LCAzNzE5LCAzNzIwLFxuICAzNzIyLCAzNzIyLCAzNzI1LCAzNzI1LCAzNzMyLCAzNzM1LCAzNzM3LCAzNzQzLCAzNzQ1LCAzNzQ3LCAzNzQ5LCAzNzQ5LCAzNzUxLFxuICAzNzUxLCAzNzU0LCAzNzU1LCAzNzU3LCAzNzY5LCAzNzcxLCAzNzczLCAzNzc2LCAzNzgwLCAzNzgyLCAzNzgyLCAzNzg0LCAzNzg5LFxuICAzNzkyLCAzODAxLCAzODA0LCAzODA3LCAzODQwLCAzODQwLCAzODY0LCAzODY1LCAzODcyLCAzODgxLCAzODkzLCAzODkzLCAzODk1LFxuICAzODk1LCAzODk3LCAzODk3LCAzOTAyLCAzOTExLCAzOTEzLCAzOTQ4LCAzOTUzLCAzOTcyLCAzOTc0LCAzOTkxLCAzOTkzLCA0MDI4LFxuICA0MDM4LCA0MDM4LCA0MDk2LCA0MTY5LCA0MTc2LCA0MjUzLCA0MjU2LCA0MjkzLCA0Mjk1LCA0Mjk1LCA0MzAxLCA0MzAxLCA0MzA0LFxuICA0MzQ2LCA0MzQ4LCA0NjgwLCA0NjgyLCA0Njg1LCA0Njg4LCA0Njk0LCA0Njk2LCA0Njk2LCA0Njk4LCA0NzAxLCA0NzA0LCA0NzQ0LFxuICA0NzQ2LCA0NzQ5LCA0NzUyLCA0Nzg0LCA0Nzg2LCA0Nzg5LCA0NzkyLCA0Nzk4LCA0ODAwLCA0ODAwLCA0ODAyLCA0ODA1LCA0ODA4LFxuICA0ODIyLCA0ODI0LCA0ODgwLCA0ODgyLCA0ODg1LCA0ODg4LCA0OTU0LCA0OTU3LCA0OTU5LCA0OTkyLCA1MDA3LCA1MDI0LCA1MTA4LFxuICA1MTIxLCA1NzQwLCA1NzQzLCA1NzU5LCA1NzYxLCA1Nzg2LCA1NzkyLCA1ODY2LCA1ODcwLCA1ODcyLCA1ODg4LCA1OTAwLCA1OTAyLFxuICA1OTA4LCA1OTIwLCA1OTQwLCA1OTUyLCA1OTcxLCA1OTg0LCA1OTk2LCA1OTk4LCA2MDAwLCA2MDAyLCA2MDAzLCA2MDE2LCA2MDk5LFxuICA2MTAzLCA2MTAzLCA2MTA4LCA2MTA5LCA2MTEyLCA2MTIxLCA2MTU1LCA2MTU3LCA2MTYwLCA2MTY5LCA2MTc2LCA2MjYzLCA2MjcyLFxuICA2MzE0LCA2MzIwLCA2Mzg5LCA2NDAwLCA2NDI4LCA2NDMyLCA2NDQzLCA2NDQ4LCA2NDU5LCA2NDcwLCA2NTA5LCA2NTEyLCA2NTE2LFxuICA2NTI4LCA2NTcxLCA2NTc2LCA2NjAxLCA2NjA4LCA2NjE3LCA2NjU2LCA2NjgzLCA2Njg4LCA2NzUwLCA2NzUyLCA2NzgwLCA2NzgzLFxuICA2NzkzLCA2ODAwLCA2ODA5LCA2ODIzLCA2ODIzLCA2OTEyLCA2OTg3LCA2OTkyLCA3MDAxLCA3MDE5LCA3MDI3LCA3MDQwLCA3MTU1LFxuICA3MTY4LCA3MjIzLCA3MjMyLCA3MjQxLCA3MjQ1LCA3MjkzLCA3Mzc2LCA3Mzc4LCA3MzgwLCA3NDE0LCA3NDI0LCA3NjU0LCA3Njc2LFxuICA3OTU3LCA3OTYwLCA3OTY1LCA3OTY4LCA4MDA1LCA4MDA4LCA4MDEzLCA4MDE2LCA4MDIzLCA4MDI1LCA4MDI1LCA4MDI3LCA4MDI3LFxuICA4MDI5LCA4MDI5LCA4MDMxLCA4MDYxLCA4MDY0LCA4MTE2LCA4MTE4LCA4MTI0LCA4MTI2LCA4MTI2LCA4MTMwLCA4MTMyLCA4MTM0LFxuICA4MTQwLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTU1LCA4MTYwLCA4MTcyLCA4MTc4LCA4MTgwLCA4MTgyLCA4MTg4LCA4MjA0LCA4MjA1LFxuICA4MjU1LCA4MjU2LCA4Mjc2LCA4Mjc2LCA4MzA1LCA4MzA1LCA4MzE5LCA4MzE5LCA4MzM2LCA4MzQ4LCA4NDAwLCA4NDEyLCA4NDE3LFxuICA4NDE3LCA4NDIxLCA4NDMyLCA4NDUwLCA4NDUwLCA4NDU1LCA4NDU1LCA4NDU4LCA4NDY3LCA4NDY5LCA4NDY5LCA4NDczLCA4NDc3LFxuICA4NDg0LCA4NDg0LCA4NDg2LCA4NDg2LCA4NDg4LCA4NDg4LCA4NDkwLCA4NDkzLCA4NDk1LCA4NTA1LCA4NTA4LCA4NTExLCA4NTE3LFxuICA4NTIxLCA4NTI2LCA4NTI2LCA4NTQ0LCA4NTg0LFxuICAxMTI2NCwgMTEzMTAsIDExMzEyLCAxMTM1OCwgMTEzNjAsIDExNDkyLCAxMTQ5OSwgMTE1MDcsIDExNTIwLCAxMTU1NywgMTE1NTksXG4gIDExNTU5LCAxMTU2NSwgMTE1NjUsIDExNTY4LCAxMTYyMywgMTE2MzEsIDExNjMxLCAxMTY0NywgMTE2NzAsIDExNjgwLCAxMTY4NixcbiAgMTE2ODgsIDExNjk0LCAxMTY5NiwgMTE3MDIsIDExNzA0LCAxMTcxMCwgMTE3MTIsIDExNzE4LCAxMTcyMCwgMTE3MjYsIDExNzI4LFxuICAxMTczNCwgMTE3MzYsIDExNzQyLCAxMTc0NCwgMTE3NzUsIDExODIzLCAxMTgyMywgMTIyOTMsIDEyMjk1LCAxMjMyMSwgMTIzMzUsXG4gIDEyMzM3LCAxMjM0MSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTI0MzgsIDEyNDQxLCAxMjQ0MiwgMTI0NDUsIDEyNDQ3LCAxMjQ0OSxcbiAgMTI1MzgsIDEyNTQwLCAxMjU0MywgMTI1NDksIDEyNTg5LCAxMjU5MywgMTI2ODYsIDEyNzA0LCAxMjczMCwgMTI3ODQsIDEyNzk5LFxuICAxMzMxMiwgMTk4OTMsIDE5OTY4LCA0MDkwOCwgNDA5NjAsIDQyMTI0LCA0MjE5MiwgNDIyMzcsIDQyMjQwLCA0MjUwOCwgNDI1MTIsXG4gIDQyNTM5LCA0MjU2MCwgNDI2MDcsIDQyNjEyLCA0MjYyMSwgNDI2MjMsIDQyNjQ3LCA0MjY1NSwgNDI3MzcsIDQyNzc1LCA0Mjc4MyxcbiAgNDI3ODYsIDQyODg4LCA0Mjg5MSwgNDI4OTQsIDQyODk2LCA0Mjg5OSwgNDI5MTIsIDQyOTIyLCA0MzAwMCwgNDMwNDcsIDQzMDcyLFxuICA0MzEyMywgNDMxMzYsIDQzMjA0LCA0MzIxNiwgNDMyMjUsIDQzMjMyLCA0MzI1NSwgNDMyNTksIDQzMjU5LCA0MzI2NCwgNDMzMDksXG4gIDQzMzEyLCA0MzM0NywgNDMzNjAsIDQzMzg4LCA0MzM5MiwgNDM0NTYsIDQzNDcxLCA0MzQ4MSwgNDM1MjAsIDQzNTc0LCA0MzU4NCxcbiAgNDM1OTcsIDQzNjAwLCA0MzYwOSwgNDM2MTYsIDQzNjM4LCA0MzY0MiwgNDM2NDMsIDQzNjQ4LCA0MzcxNCwgNDM3MzksIDQzNzQxLFxuICA0Mzc0NCwgNDM3NTksIDQzNzYyLCA0Mzc2NiwgNDM3NzcsIDQzNzgyLCA0Mzc4NSwgNDM3OTAsIDQzNzkzLCA0Mzc5OCwgNDM4MDgsXG4gIDQzODE0LCA0MzgxNiwgNDM4MjIsIDQzOTY4LCA0NDAxMCwgNDQwMTIsIDQ0MDEzLCA0NDAxNiwgNDQwMjUsIDQ0MDMyLCA1NTIwMyxcbiAgNTUyMTYsIDU1MjM4LCA1NTI0MywgNTUyOTEsIDYzNzQ0LCA2NDEwOSwgNjQxMTIsIDY0MjE3LCA2NDI1NiwgNjQyNjIsIDY0Mjc1LFxuICA2NDI3OSwgNjQyODUsIDY0Mjk2LCA2NDI5OCwgNjQzMTAsIDY0MzEyLCA2NDMxNiwgNjQzMTgsIDY0MzE4LCA2NDMyMCwgNjQzMjEsXG4gIDY0MzIzLCA2NDMyNCwgNjQzMjYsIDY0NDMzLCA2NDQ2NywgNjQ4MjksIDY0ODQ4LCA2NDkxMSwgNjQ5MTQsIDY0OTY3LCA2NTAwOCxcbiAgNjUwMTksIDY1MDI0LCA2NTAzOSwgNjUwNTYsIDY1MDYyLCA2NTA3NSwgNjUwNzYsIDY1MTAxLCA2NTEwMywgNjUxMzYsIDY1MTQwLFxuICA2NTE0MiwgNjUyNzYsIDY1Mjk2LCA2NTMwNSwgNjUzMTMsIDY1MzM4LCA2NTM0MywgNjUzNDMsIDY1MzQ1LCA2NTM3MCwgNjUzODIsXG4gIDY1NDcwLCA2NTQ3NCwgNjU0NzksIDY1NDgyLCA2NTQ4NywgNjU0OTAsIDY1NDk1LCA2NTQ5OCwgNjU1MDAsXG5dO1xuXG5mdW5jdGlvbiBsb29rdXBJblVuaWNvZGVNYXAoY29kZTogdTE2LCBtYXA6IHUxNltdKTogYm9vbCB7XG4gIGlmIChjb2RlIDwgbWFwWzBdKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGxvID0gMDtcbiAgdmFyIGhpID0gbWFwLmxlbmd0aDtcbiAgdmFyIG1pZDogaTMyO1xuICB2YXIgbWlkVmFsOiB1MTY7XG5cbiAgd2hpbGUgKGxvICsgMSA8IGhpKSB7XG4gICAgbWlkID0gbG8gKyAoKGhpIC0gbG8pID4+IDEpO1xuICAgIG1pZCAtPSAobWlkICYgMSk7XG4gICAgbWlkVmFsID0gbWFwW21pZF07XG4gICAgaWYgKG1pZFZhbCA8PSBjb2RlICYmIGNvZGUgPD0gbWFwW21pZCArIDFdKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPCBtaWRWYWwpIHtcbiAgICAgIGhpID0gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBsbyA9IG1pZCArIDI7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGNvZGU6IGkzMik6IGJvb2wge1xuICByZXR1cm4gY29kZSA8IDAgfHwgY29kZSA+IDB4ZmZmZiA/IGZhbHNlXG4gICAgICAgOiBsb29rdXBJblVuaWNvZGVNYXAoY29kZSBhcyB1MTYsIHVuaWNvZGVJZGVudGlmaWVyU3RhcnQpO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVJZGVudGlmaWVyUGFydChjb2RlOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGNvZGUgPCAwIHx8IGNvZGUgPiAweGZmZmYgPyBmYWxzZVxuICAgICAgIDogbG9va3VwSW5Vbmljb2RlTWFwKGNvZGUgYXMgdTE2LCB1bmljb2RlSWRlbnRpZmllclBhcnQpO1xufVxuIl19 - -/***/ }), - -/***/ "../src/util/collections.ts": -/*!**********************************!*\ - !*** ../src/util/collections.ts ***! - \**********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; -var __read = (this && this.__read) || function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -function makeArray(original) { - if (original === void 0) { original = null; } - if (original) { - var cloned = new Array(original.length); - for (var i = 0, k = original.length; i < k; ++i) - unchecked(cloned[i] = original[i]); - return cloned; - } - return new Array(); -} -exports.makeArray = makeArray; -function makeSet(original) { - var e_1, _a; - if (original === void 0) { original = null; } - if (original) { - var cloned = new Set(); - try { - for (var original_1 = __values(original), original_1_1 = original_1.next(); !original_1_1.done; original_1_1 = original_1.next()) { - var v = original_1_1.value; - cloned.add(v); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (original_1_1 && !original_1_1.done && (_a = original_1.return)) _a.call(original_1); - } - finally { if (e_1) throw e_1.error; } - } - return cloned; - } - return new Set(); -} -exports.makeSet = makeSet; -function makeMap(original, overrides) { - var e_2, _a, e_3, _b, e_4, _c; - if (original === void 0) { original = null; } - if (overrides === void 0) { overrides = null; } - var cloned = new Map(); - if (original) { - try { - for (var original_2 = __values(original), original_2_1 = original_2.next(); !original_2_1.done; original_2_1 = original_2.next()) { - var _d = __read(original_2_1.value, 2), k = _d[0], v = _d[1]; - cloned.set(k, v); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (original_2_1 && !original_2_1.done && (_a = original_2.return)) _a.call(original_2); - } - finally { if (e_2) throw e_2.error; } - } - if (overrides) - try { - for (var overrides_1 = __values(overrides), overrides_1_1 = overrides_1.next(); !overrides_1_1.done; overrides_1_1 = overrides_1.next()) { - var _e = __read(overrides_1_1.value, 2), k = _e[0], v = _e[1]; - cloned.set(k, v); - } - } - catch (e_3_1) { e_3 = { error: e_3_1 }; } - finally { - try { - if (overrides_1_1 && !overrides_1_1.done && (_b = overrides_1.return)) _b.call(overrides_1); - } - finally { if (e_3) throw e_3.error; } - } - } - else if (overrides) { - try { - for (var overrides_2 = __values(overrides), overrides_2_1 = overrides_2.next(); !overrides_2_1.done; overrides_2_1 = overrides_2.next()) { - var _f = __read(overrides_2_1.value, 2), k = _f[0], v = _f[1]; - cloned.set(k, v); - } - } - catch (e_4_1) { e_4 = { error: e_4_1 }; } - finally { - try { - if (overrides_2_1 && !overrides_2_1.done && (_c = overrides_2.return)) _c.call(overrides_2); - } - finally { if (e_4) throw e_4.error; } - } - } - return cloned; -} -exports.makeMap = makeMap; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9jb2xsZWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBZ0IsU0FBUyxDQUFJLFFBQWdDO0lBQWhDLHlCQUFBLEVBQUEsZUFBZ0M7SUFDM0QsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLElBQUksS0FBSyxFQUFLLENBQUM7QUFDeEIsQ0FBQztBQVBELDhCQU9DO0FBRUQsU0FBZ0IsT0FBTyxDQUFJLFFBQThCOztJQUE5Qix5QkFBQSxFQUFBLGVBQThCO0lBQ3ZELElBQUksUUFBUSxFQUFFO1FBQ1osSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUssQ0FBQzs7WUFDMUIsS0FBYyxJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQWpCLElBQUksQ0FBQyxxQkFBQTtnQkFBYyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQUE7Ozs7Ozs7OztRQUN0QyxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQ0QsT0FBTyxJQUFJLEdBQUcsRUFBSyxDQUFDO0FBQ3RCLENBQUM7QUFQRCwwQkFPQztBQUVELFNBQWdCLE9BQU8sQ0FBTSxRQUFnQyxFQUFFLFNBQWlDOztJQUFuRSx5QkFBQSxFQUFBLGVBQWdDO0lBQUUsMEJBQUEsRUFBQSxnQkFBaUM7SUFDOUYsSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQU8sQ0FBQztJQUM1QixJQUFJLFFBQVEsRUFBRTs7WUFDWixLQUFtQixJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQWxCLElBQUEsa0NBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFBZSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUFBOzs7Ozs7Ozs7UUFDOUMsSUFBSSxTQUFTOztnQkFBRSxLQUFtQixJQUFBLGNBQUEsU0FBQSxTQUFTLENBQUEsb0NBQUE7b0JBQW5CLElBQUEsbUNBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztvQkFBZ0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQUE7Ozs7Ozs7O2FBQUE7S0FDL0Q7U0FBTSxJQUFJLFNBQVMsRUFBRTs7WUFDcEIsS0FBbUIsSUFBQSxjQUFBLFNBQUEsU0FBUyxDQUFBLG9DQUFBO2dCQUFuQixJQUFBLG1DQUFNLEVBQUwsU0FBQyxFQUFFLFNBQUM7Z0JBQWdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQUE7Ozs7Ozs7OztLQUNoRDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFURCwwQkFTQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBtYWtlQXJyYXk8Vj4ob3JpZ2luYWw6IEFycmF5PFY+IHwgbnVsbCA9IG51bGwpOiBBcnJheTxWPiB7XG4gIGlmIChvcmlnaW5hbCkge1xuICAgIGxldCBjbG9uZWQgPSBuZXcgQXJyYXk8Vj4ob3JpZ2luYWwubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMCwgayA9IG9yaWdpbmFsLmxlbmd0aDsgaSA8IGs7ICsraSkgdW5jaGVja2VkKGNsb25lZFtpXSA9IG9yaWdpbmFsW2ldKTtcbiAgICByZXR1cm4gY2xvbmVkO1xuICB9XG4gIHJldHVybiBuZXcgQXJyYXk8Vj4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VTZXQ8Vj4ob3JpZ2luYWw6IFNldDxWPiB8IG51bGwgPSBudWxsKTogU2V0PFY+IHtcbiAgaWYgKG9yaWdpbmFsKSB7XG4gICAgbGV0IGNsb25lZCA9IG5ldyBTZXQ8Vj4oKTtcbiAgICBmb3IgKGxldCB2IG9mIG9yaWdpbmFsKSBjbG9uZWQuYWRkKHYpO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cbiAgcmV0dXJuIG5ldyBTZXQ8Vj4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VNYXA8SyxWPihvcmlnaW5hbDogTWFwPEssVj4gfCBudWxsID0gbnVsbCwgb3ZlcnJpZGVzOiBNYXA8SyxWPiB8IG51bGwgPSBudWxsKTogTWFwPEssVj4ge1xuICB2YXIgY2xvbmVkID0gbmV3IE1hcDxLLFY+KCk7XG4gIGlmIChvcmlnaW5hbCkge1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiBvcmlnaW5hbCkgY2xvbmVkLnNldChrLCB2KTtcbiAgICBpZiAob3ZlcnJpZGVzKSBmb3IgKGxldCBbaywgdl0gb2Ygb3ZlcnJpZGVzKSBjbG9uZWQuc2V0KGssIHYpO1xuICB9IGVsc2UgaWYgKG92ZXJyaWRlcykge1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiBvdmVycmlkZXMpIGNsb25lZC5zZXQoaywgdik7XG4gIH1cbiAgcmV0dXJuIGNsb25lZDtcbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/util/index.ts": -/*!****************************!*\ - !*** ../src/util/index.ts ***! - \****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Various compiler utilities. - * @module util - * @preferred - */ /***/ -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -Object.defineProperty(exports, "__esModule", { value: true }); -__export(__webpack_require__(/*! ./bitset */ "../src/util/bitset.ts")); -__export(__webpack_require__(/*! ./charcode */ "../src/util/charcode.ts")); -__export(__webpack_require__(/*! ./collections */ "../src/util/collections.ts")); -__export(__webpack_require__(/*! ./path */ "../src/util/path.ts")); -__export(__webpack_require__(/*! ./text */ "../src/util/text.ts")); -__export(__webpack_require__(/*! ./binary */ "../src/util/binary.ts")); -/** Tests if `x` is a power of two. */ -function isPowerOf2(x) { - return x != 0 && (x & (x - 1)) == 0; -} -exports.isPowerOf2 = isPowerOf2; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRyxDQUFBLEtBQUs7Ozs7O0FBRVIsOEJBQXlCO0FBQ3pCLGdDQUEyQjtBQUMzQixtQ0FBOEI7QUFDOUIsNEJBQXVCO0FBQ3ZCLDRCQUF1QjtBQUN2Qiw4QkFBeUI7QUFFekIsc0NBQXNDO0FBQ3RDLFNBQWdCLFVBQVUsQ0FBQyxDQUFNO0lBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsZ0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZhcmlvdXMgY29tcGlsZXIgdXRpbGl0aWVzLlxuICogQG1vZHVsZSB1dGlsXG4gKiBAcHJlZmVycmVkXG4gKi8vKioqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9iaXRzZXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NoYXJjb2RlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb2xsZWN0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGF0aFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmluYXJ5XCI7XG5cbi8qKiBUZXN0cyBpZiBgeGAgaXMgYSBwb3dlciBvZiB0d28uICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb3dlck9mMih4OiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIHggIT0gMCAmJiAoeCAmICh4IC0gMSkpID09IDA7XG59XG4iXX0= - -/***/ }), - -/***/ "../src/util/path.ts": -/*!***************************!*\ - !*** ../src/util/path.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -var common_1 = __webpack_require__(/*! ../common */ "../src/common.ts"); -var separator = 47 /* SLASH */; -/** - * Normalizes the specified path, removing interior placeholders. - * Expects a posix-compatible relative path (not Windows compatible). - */ -function normalizePath(path) { - var pos = 0; - var len = path.length; - // trim leading './' - while (pos + 1 < len && - path.charCodeAt(pos) == 46 /* DOT */ && - path.charCodeAt(pos + 1) == separator) { - pos += 2; - } - if (pos > 0 || len < path.length) { - path = path.substring(pos, len); - len -= pos; - pos = 0; - } - var atEnd; - while (pos + 1 < len) { - atEnd = false; - // we are only interested in '/.' sequences ... - if (path.charCodeAt(pos) == separator && - path.charCodeAt(pos + 1) == 46 /* DOT */) { - // '/.' ( '/' | $ ) - atEnd = pos + 2 == len; - if (atEnd || - pos + 2 < len && - path.charCodeAt(pos + 2) == separator) { - path = atEnd - ? path.substring(0, pos) - : path.substring(0, pos) + path.substring(pos + 2); - len -= 2; - continue; - } - // '/.' ( './' | '.' $ ) - atEnd = pos + 3 == len; - if (atEnd && path.charCodeAt(pos + 2) == 46 /* DOT */ || - pos + 3 < len && - path.charCodeAt(pos + 2) == 46 /* DOT */ && - path.charCodeAt(pos + 3) == separator) { - // find preceeding '/' - var ipos = pos; - while (--ipos >= 0) { - if (path.charCodeAt(ipos) == separator) { - if (pos - ipos != 3 || - path.charCodeAt(ipos + 1) != 46 /* DOT */ || - path.charCodeAt(ipos + 2) != 46 /* DOT */) { // exclude '..' itself - path = atEnd - ? path.substring(0, ipos) - : path.substring(0, ipos) + path.substring(pos + 3); - len -= pos + 3 - ipos; - pos = ipos - 1; // incremented again at end of loop - } - break; - } - } - // if there's no preceeding '/', trim start if non-empty - if (ipos < 0 && pos > 0) { - if (pos != 2 || - path.charCodeAt(0) != 46 /* DOT */ || - path.charCodeAt(1) != 46 /* DOT */) { // exclude '..' itself - path = path.substring(pos + 4); - len = path.length; - continue; - } - } - } - } - pos++; - } - return len > 0 ? path : "."; -} -exports.normalizePath = normalizePath; -/** Resolves the specified path relative to the specified origin. */ -function resolvePath(normalizedPath, origin) { - if (normalizedPath.startsWith("std/")) { - return normalizedPath; - } - return normalizePath(dirname(origin) + common_1.PATH_DELIMITER + normalizedPath); -} -exports.resolvePath = resolvePath; -/** Obtains the directory portion of a normalized path. */ -function dirname(normalizedPath) { - var pos = normalizedPath.length; - if (pos <= 1) { - if (pos == 0) - return "."; - if (normalizedPath.charCodeAt(0) == separator) { - return normalizedPath; - } - } - while (--pos > 0) { - if (normalizedPath.charCodeAt(pos) == separator) { - return normalizedPath.substring(0, pos); - } - } - return "."; -} -exports.dirname = dirname; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQixDQUFBLEtBQUs7O0FBTXhCLG9DQUVtQjtBQUVuQixJQUFNLFNBQVMsaUJBQWlCLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLElBQVk7SUFDeEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUV0QixvQkFBb0I7SUFDcEIsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsRUFDckM7UUFDQSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ1Y7SUFFRCxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDaEMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDWCxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQ1Q7SUFFRCxJQUFJLEtBQVcsQ0FBQztJQUNoQixPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFO1FBQ3BCLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFZCwrQ0FBK0M7UUFDL0MsSUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUN4QztZQUNBLG1CQUFtQjtZQUNuQixLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMs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QUM7S0FDdkI7SUFDRCxPQUFPLGFBQWEsQ0FDbEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLHVCQUFjLEdBQUcsY0FBYyxDQUNsRCxDQUFDO0FBQ0osQ0FBQztBQVBELGtDQU9DO0FBRUQsMERBQTBEO0FBQzFELFNBQWdCLE9BQU8sQ0FBQyxjQUFzQjtJQUM1QyxJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtRQUNaLElBQUksR0FBRyxJQUFJLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUN6QixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQzdDLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO0tBQ0Y7SUFDRCxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRTtRQUNoQixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQy9DLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDekM7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQWRELDBCQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgdXRpbCAqLy8qKiovXG5cbmltcG9ydCB7XG4gIENoYXJDb2RlXG59IGZyb20gXCIuL2NoYXJjb2RlXCI7XG5cbmltcG9ydCB7XG4gIFBBVEhfREVMSU1JVEVSXG59IGZyb20gXCIuLi9jb21tb25cIjtcblxuY29uc3Qgc2VwYXJhdG9yID0gQ2hhckNvZGUuU0xBU0g7XG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgc3BlY2lmaWVkIHBhdGgsIHJlbW92aW5nIGludGVyaW9yIHBsYWNlaG9sZGVycy5cbiAqIEV4cGVjdHMgYSBwb3NpeC1jb21wYXRpYmxlIHJlbGF0aXZlIHBhdGggKG5vdCBXaW5kb3dzIGNvbXBhdGlibGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcG9zID0gMDtcbiAgdmFyIGxlbiA9IHBhdGgubGVuZ3RoO1xuXG4gIC8vIHRyaW0gbGVhZGluZyAnLi8nXG4gIHdoaWxlIChwb3MgKyAxIDwgbGVuICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gQ2hhckNvZGUuRE9UICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDEpID09IHNlcGFyYXRvclxuICApIHtcbiAgICBwb3MgKz0gMjtcbiAgfVxuXG4gIGlmIChwb3MgPiAwIHx8IGxlbiA8IHBhdGgubGVuZ3RoKSB7XG4gICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBvcywgbGVuKTtcbiAgICBsZW4gLT0gcG9zO1xuICAgIHBvcyA9IDA7XG4gIH1cblxuICB2YXIgYXRFbmQ6IGJvb2w7XG4gIHdoaWxlIChwb3MgKyAxIDwgbGVuKSB7XG4gICAgYXRFbmQgPSBmYWxzZTtcblxuICAgIC8vIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gJy8uJyBzZXF1ZW5jZXMgLi4uXG4gICAgaWYgKFxuICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gc2VwYXJhdG9yICYmXG4gICAgICBwYXRoLmNoYXJDb2RlQXQocG9zICsgMSkgPT0gQ2hhckNvZGUuRE9UXG4gICAgKSB7XG4gICAgICAvLyAnLy4nICggJy8nIHwgJCApXG4gICAgICBhdEVuZCA9IHBvcyArIDIgPT0gbGVuO1xuICAgICAgaWYgKGF0RW5kIHx8XG4gICAgICAgIHBvcyArIDIgPCBsZW4gJiZcbiAgICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDIpID09IHNlcGFyYXRvclxuICAgICAgKSB7XG4gICAgICAgIHBhdGggPSBhdEVuZFxuICAgICAgICAgID8gcGF0aC5zdWJzdHJpbmcoMCwgcG9zKVxuICAgICAgICAgIDogcGF0aC5zdWJzdHJpbmcoMCwgcG9zKSArIHBhdGguc3Vic3RyaW5nKHBvcyArIDIpO1xuICAgICAgICBsZW4gLT0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vICcvLicgKCAnLi8nIHwgJy4nICQgKVxuICAgICAgYXRFbmQgPSBwb3MgKyAzID09IGxlbjtcbiAgICAgIGlmIChhdEVuZCAmJiBwYXRoLmNoYXJDb2RlQXQocG9zICsgMikgPT0gQ2hhckNvZGUuRE9UIHx8XG4gICAgICAgIHBvcyArIDMgPCBsZW4gJiZcbiAgICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDIpID09IENoYXJDb2RlLkRPVCAmJlxuICAgICAgICBwYXRoLmNoYXJDb2RlQXQocG9zICsgMykgPT0gc2VwYXJhdG9yXG4gICAgICApIHtcbiAgICAgICAgLy8gZmluZCBwcmVjZWVkaW5nICcvJ1xuICAgICAgICBsZXQgaXBvcyA9IHBvcztcbiAgICAgICAgd2hpbGUgKC0taXBvcyA+PSAwKSB7XG4gICAgICAgICAgaWYgKHBhdGguY2hhckNvZGVBdChpcG9zKSA9PSBzZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGlmIChwb3MgLSBpcG9zICE9IDMgfHxcbiAgICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KGlwb3MgKyAxKSAhPSBDaGFyQ29kZS5ET1QgfHxcbiAgICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KGlwb3MgKyAyKSAhPSBDaGFyQ29kZS5ET1RcbiAgICAgICAgICAgICkgeyAvLyBleGNsdWRlICcuLicgaXRzZWxmXG4gICAgICAgICAgICAgIHBhdGggPSBhdEVuZFxuICAgICAgICAgICAgICAgID8gcGF0aC5zdWJzdHJpbmcoMCwgaXBvcylcbiAgICAgICAgICAgICAgICA6IHBhdGguc3Vic3RyaW5nKDAsIGlwb3MpICsgcGF0aC5zdWJzdHJpbmcocG9zICsgMyk7XG4gICAgICAgICAgICAgIGxlbiAtPSBwb3MgKyAzIC0gaXBvcztcbiAgICAgICAgICAgICAgcG9zID0gaXBvcyAtIDE7IC8vIGluY3JlbWVudGVkIGFnYWluIGF0IGVuZCBvZiBsb29wXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGVyZSdzIG5vIHByZWNlZWRpbmcgJy8nLCB0cmltIHN0YXJ0IGlmIG5vbi1lbXB0eVxuICAgICAgICBpZiAoaXBvcyA8IDAgJiYgcG9zID4gMCkge1xuICAgICAgICAgIGlmIChwb3MgIT0gMiB8fFxuICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KDApICE9IENoYXJDb2RlLkRPVCB8fFxuICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KDEpICE9IENoYXJDb2RlLkRPVFxuICAgICAgICAgICkgeyAvLyBleGNsdWRlICcuLicgaXRzZWxmXG4gICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocG9zICsgNCk7XG4gICAgICAgICAgICBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBwb3MrKztcbiAgfVxuICByZXR1cm4gbGVuID4gMCA/IHBhdGggOiBcIi5cIjtcbn1cblxuLyoqIFJlc29sdmVzIHRoZSBzcGVjaWZpZWQgcGF0aCByZWxhdGl2ZSB0byB0aGUgc3BlY2lmaWVkIG9yaWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGF0aChub3JtYWxpemVkUGF0aDogc3RyaW5nLCBvcmlnaW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKFwic3RkL1wiKSkge1xuICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplUGF0aChcbiAgICBkaXJuYW1lKG9yaWdpbikgKyBQQVRIX0RFTElNSVRFUiArIG5vcm1hbGl6ZWRQYXRoXG4gICk7XG59XG5cbi8qKiBPYnRhaW5zIHRoZSBkaXJlY3RvcnkgcG9ydGlvbiBvZiBhIG5vcm1hbGl6ZWQgcGF0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcG9zID0gbm9ybWFsaXplZFBhdGgubGVuZ3RoO1xuICBpZiAocG9zIDw9IDEpIHtcbiAgICBpZiAocG9zID09IDApIHJldHVybiBcIi5cIjtcbiAgICBpZiAobm9ybWFsaXplZFBhdGguY2hhckNvZGVBdCgwKSA9PSBzZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKC0tcG9zID4gMCkge1xuICAgIGlmIChub3JtYWxpemVkUGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gc2VwYXJhdG9yKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplZFBhdGguc3Vic3RyaW5nKDAsIHBvcyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBcIi5cIjtcbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/util/text.ts": -/*!***************************!*\ - !*** ../src/util/text.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -var indentX1 = " "; -var indentX2 = " "; -var indentX4 = " "; -/** Creates an indentation matching the number of specified levels. */ -function indent(sb, level) { - while (level >= 4) { - sb.push(indentX4); - level -= 4; - } - if (level >= 2) { - sb.push(indentX2); - level -= 2; - } - if (level) { - sb.push(indentX1); - } -} -exports.indent = indent; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3RleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQixDQUFBLEtBQUs7O0FBRXhCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QixJQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFDeEIsSUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBRTVCLHNFQUFzRTtBQUN0RSxTQUFnQixNQUFNLENBQUMsRUFBWSxFQUFFLEtBQVU7SUFDN0MsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2pCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEIsS0FBSyxJQUFJLENBQUMsQ0FBQztLQUNaO0lBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2QsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQixLQUFLLElBQUksQ0FBQyxDQUFDO0tBQ1o7SUFDRCxJQUFJLEtBQUssRUFBRTtRQUNULEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbkI7QUFDSCxDQUFDO0FBWkQsd0JBWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuY29uc3QgaW5kZW50WDEgPSBcIiAgXCI7XG5jb25zdCBpbmRlbnRYMiA9IFwiICAgIFwiO1xuY29uc3QgaW5kZW50WDQgPSBcIiAgICAgICAgXCI7XG5cbi8qKiBDcmVhdGVzIGFuIGluZGVudGF0aW9uIG1hdGNoaW5nIHRoZSBudW1iZXIgb2Ygc3BlY2lmaWVkIGxldmVscy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRlbnQoc2I6IHN0cmluZ1tdLCBsZXZlbDogaTMyKTogdm9pZCB7XG4gIHdoaWxlIChsZXZlbCA+PSA0KSB7XG4gICAgc2IucHVzaChpbmRlbnRYNCk7XG4gICAgbGV2ZWwgLT0gNDtcbiAgfVxuICBpZiAobGV2ZWwgPj0gMikge1xuICAgIHNiLnB1c2goaW5kZW50WDIpO1xuICAgIGxldmVsIC09IDI7XG4gIH1cbiAgaWYgKGxldmVsKSB7XG4gICAgc2IucHVzaChpbmRlbnRYMSk7XG4gIH1cbn1cbiJdfQ== - -/***/ }), - -/***/ "../std/assembly/shared/feature.ts": -/*!*****************************************!*\ - !*** ../std/assembly/shared/feature.ts ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// This file is shared with the compiler and must remain portable -Object.defineProperty(exports, "__esModule", { value: true }); -/** Indicates specific features to activate. */ -var Feature; -(function (Feature) { - /** No additional features. */ - Feature[Feature["NONE"] = 0] = "NONE"; - /** Sign extension operations. */ - Feature[Feature["SIGN_EXTENSION"] = 1] = "SIGN_EXTENSION"; - /** Mutable global imports and exports. */ - Feature[Feature["MUTABLE_GLOBAL"] = 2] = "MUTABLE_GLOBAL"; - /** Bulk memory operations. */ - Feature[Feature["BULK_MEMORY"] = 4] = "BULK_MEMORY"; - /** SIMD types and operations. */ - Feature[Feature["SIMD"] = 8] = "SIMD"; - /** Threading and atomic operations. */ - Feature[Feature["THREADS"] = 16] = "THREADS"; // see: https://github.com/WebAssembly/threads -})(Feature = exports.Feature || (exports.Feature = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3N0ZC9hc3NlbWJseS9zaGFyZWQvZmVhdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUVBQWlFOztBQUVqRSwrQ0FBK0M7QUFDL0MsSUFBa0IsT0FhakI7QUFiRCxXQUFrQixPQUFPO0lBQ3ZCLDhCQUE4QjtJQUM5QixxQ0FBUSxDQUFBO0lBQ1IsaUNBQWlDO0lBQ2pDLHlEQUF1QixDQUFBO0lBQ3ZCLDBDQUEwQztJQUMxQyx5REFBdUIsQ0FBQTtJQUN2Qiw4QkFBOEI7SUFDOUIsbURBQW9CLENBQUE7SUFDcEIsaUNBQWlDO0lBQ2pDLHFDQUFhLENBQUE7SUFDYix1Q0FBdUM7SUFDdkMsNENBQWdCLENBQUEsQ0FBQyw4Q0FBOEM7QUFDakUsQ0FBQyxFQWJpQixPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFheEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgc2hhcmVkIHdpdGggdGhlIGNvbXBpbGVyIGFuZCBtdXN0IHJlbWFpbiBwb3J0YWJsZVxuXG4vKiogSW5kaWNhdGVzIHNwZWNpZmljIGZlYXR1cmVzIHRvIGFjdGl2YXRlLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gRmVhdHVyZSB7XG4gIC8qKiBObyBhZGRpdGlvbmFsIGZlYXR1cmVzLiAqL1xuICBOT05FID0gMCxcbiAgLyoqIFNpZ24gZXh0ZW5zaW9uIG9wZXJhdGlvbnMuICovXG4gIFNJR05fRVhURU5TSU9OID0gMSA8PCAwLCAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9zaWduLWV4dGVuc2lvbi1vcHNcbiAgLyoqIE11dGFibGUgZ2xvYmFsIGltcG9ydHMgYW5kIGV4cG9ydHMuICovXG4gIE1VVEFCTEVfR0xPQkFMID0gMSA8PCAxLCAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9tdXRhYmxlLWdsb2JhbFxuICAvKiogQnVsayBtZW1vcnkgb3BlcmF0aW9ucy4gKi9cbiAgQlVMS19NRU1PUlkgPSAxIDw8IDIsIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2J1bGstbWVtb3J5LW9wZXJhdGlvbnNcbiAgLyoqIFNJTUQgdHlwZXMgYW5kIG9wZXJhdGlvbnMuICovXG4gIFNJTUQgPSAxIDw8IDMsIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L3NpbWRcbiAgLyoqIFRocmVhZGluZyBhbmQgYXRvbWljIG9wZXJhdGlvbnMuICovXG4gIFRIUkVBRFMgPSAxIDw8IDQgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvdGhyZWFkc1xufVxuIl19 - -/***/ }), - -/***/ "../std/assembly/shared/target.ts": -/*!****************************************!*\ - !*** ../std/assembly/shared/target.ts ***! - \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// This file is shared with the compiler and must remain portable -Object.defineProperty(exports, "__esModule", { value: true }); -/** Compilation target. */ -var Target; -(function (Target) { - /** WebAssembly with 32-bit pointers. */ - Target[Target["WASM32"] = 0] = "WASM32"; - /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */ - Target[Target["WASM64"] = 1] = "WASM64"; - /** Portable. */ - Target[Target["JS"] = 2] = "JS"; -})(Target = exports.Target || (exports.Target = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3RkL2Fzc2VtYmx5L3NoYXJlZC90YXJnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlFQUFpRTs7QUFFakUsMEJBQTBCO0FBQzFCLElBQVksTUFPWDtBQVBELFdBQVksTUFBTTtJQUNoQix3Q0FBd0M7SUFDeEMsdUNBQU0sQ0FBQTtJQUNOLDJGQUEyRjtJQUMzRix1Q0FBTSxDQUFBO0lBQ04sZ0JBQWdCO0lBQ2hCLCtCQUFFLENBQUE7QUFDSixDQUFDLEVBUFcsTUFBTSxHQUFOLGNBQU0sS0FBTixjQUFNLFFBT2pCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIHNoYXJlZCB3aXRoIHRoZSBjb21waWxlciBhbmQgbXVzdCByZW1haW4gcG9ydGFibGVcblxuLyoqIENvbXBpbGF0aW9uIHRhcmdldC4gKi9cbmV4cG9ydCBlbnVtIFRhcmdldCB7XG4gIC8qKiBXZWJBc3NlbWJseSB3aXRoIDMyLWJpdCBwb2ludGVycy4gKi9cbiAgV0FTTTMyLFxuICAvKiogV2ViQXNzZW1ibHkgd2l0aCA2NC1iaXQgcG9pbnRlcnMuIEV4cGVyaW1lbnRhbCBhbmQgbm90IHN1cHBvcnRlZCBieSBhbnkgcnVudGltZSB5ZXQuICovXG4gIFdBU002NCxcbiAgLyoqIFBvcnRhYmxlLiAqL1xuICBKU1xufVxuIl19 - -/***/ }), - -/***/ "../std/assembly/shared/typeinfo.ts": -/*!******************************************!*\ - !*** ../std/assembly/shared/typeinfo.ts ***! - \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// This file is shared with the compiler and must remain portable -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕ -// 3 2 1 -// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits -// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base -// │ count │ -// ╞═══════════════════════════════════════════════════════════════╡ ┐ -// │ Typeinfo#flags [id=0] │ id < count -// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ -// │ Typeinfo#base [id=0] │ -// ├───────────────────────────────────────────────────────────────┤ -// │ ... │ -/** Runtime type information data structure. */ -var Typeinfo = /** @class */ (function () { - function Typeinfo() { - } - Typeinfo = __decorate([ - (()=>{}) - ], Typeinfo); - return Typeinfo; -}()); -exports.Typeinfo = Typeinfo; -/** Runtime type information flags. */ -var TypeinfoFlags; -(function (TypeinfoFlags) { - /** No specific flags. */ - TypeinfoFlags[TypeinfoFlags["NONE"] = 0] = "NONE"; - /** Type is an `ArrayBufferView`. */ - TypeinfoFlags[TypeinfoFlags["ARRAYBUFFERVIEW"] = 1] = "ARRAYBUFFERVIEW"; - /** Type is an `Array`. */ - TypeinfoFlags[TypeinfoFlags["ARRAY"] = 2] = "ARRAY"; - /** Type is a `Set`. */ - TypeinfoFlags[TypeinfoFlags["SET"] = 4] = "SET"; - /** Type is a `Map`. */ - TypeinfoFlags[TypeinfoFlags["MAP"] = 8] = "MAP"; - /** Type is inherently acyclic. */ - TypeinfoFlags[TypeinfoFlags["ACYCLIC"] = 16] = "ACYCLIC"; - /** Value alignment of 1 byte. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_0"] = 32] = "VALUE_ALIGN_0"; - /** Value alignment of 2 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_1"] = 64] = "VALUE_ALIGN_1"; - /** Value alignment of 4 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_2"] = 128] = "VALUE_ALIGN_2"; - /** Value alignment of 8 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_3"] = 256] = "VALUE_ALIGN_3"; - /** Value alignment of 16 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_4"] = 512] = "VALUE_ALIGN_4"; - /** Value is a signed type. */ - TypeinfoFlags[TypeinfoFlags["VALUE_SIGNED"] = 1024] = "VALUE_SIGNED"; - /** Value is a float type. */ - TypeinfoFlags[TypeinfoFlags["VALUE_FLOAT"] = 2048] = "VALUE_FLOAT"; - /** Value type is nullable. */ - TypeinfoFlags[TypeinfoFlags["VALUE_NULLABLE"] = 4096] = "VALUE_NULLABLE"; - /** Value type is managed. */ - TypeinfoFlags[TypeinfoFlags["VALUE_MANAGED"] = 8192] = "VALUE_MANAGED"; - /** Key alignment of 1 byte. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_0"] = 16384] = "KEY_ALIGN_0"; - /** Key alignment of 2 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_1"] = 32768] = "KEY_ALIGN_1"; - /** Key alignment of 4 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_2"] = 65536] = "KEY_ALIGN_2"; - /** Key alignment of 8 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_3"] = 131072] = "KEY_ALIGN_3"; - /** Key alignment of 16 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_4"] = 262144] = "KEY_ALIGN_4"; - /** Key is a signed type. */ - TypeinfoFlags[TypeinfoFlags["KEY_SIGNED"] = 524288] = "KEY_SIGNED"; - /** Key is a float type. */ - TypeinfoFlags[TypeinfoFlags["KEY_FLOAT"] = 1048576] = "KEY_FLOAT"; - /** Key type is nullable. */ - TypeinfoFlags[TypeinfoFlags["KEY_NULLABLE"] = 2097152] = "KEY_NULLABLE"; - /** Key type is managed. */ - TypeinfoFlags[TypeinfoFlags["KEY_MANAGED"] = 4194304] = "KEY_MANAGED"; -})(TypeinfoFlags = exports.TypeinfoFlags || (exports.TypeinfoFlags = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zdGQvYXNzZW1ibHkvc2hhcmVkL3R5cGVpbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpRUFBaUU7Ozs7Ozs7O0FBRWpFLG9FQUFvRTtBQUNwRSwrQ0FBK0M7QUFDL0MseUVBQXlFO0FBQ3pFLG1GQUFtRjtBQUNuRixvRUFBb0U7QUFDcEUsc0VBQXNFO0FBQ3RFLCtFQUErRTtBQUMvRSxvRUFBb0U7QUFDcEUsb0VBQW9FO0FBQ3BFLG9FQUFvRTtBQUNwRSxvRUFBb0U7QUFFcEUsK0NBQStDO0FBRS9DO0lBQUE7SUFLQSxDQUFDO0lBTFksUUFBUTtRQURwQixTQUFTO09BQ0csUUFBUSxDQUtwQjtJQUFELGVBQUM7Q0FBQSxBQUxELElBS0M7QUFMWSw0QkFBUTtBQU9yQixzQ0FBc0M7QUFDdEMsSUFBa0IsYUFpRGpCO0FBakRELFdBQWtCLGFBQWE7SUFDN0IseUJBQXlCO0lBQ3pCLGlEQUFRLENBQUE7SUFDUixvQ0FBb0M7SUFDcEMsdUVBQXdCLENBQUE7SUFDeEIsMEJBQTBCO0lBQzFCLG1EQUFjLENBQUE7SUFDZCx1QkFBdUI7SUFDdkIsK0NBQVksQ0FBQTtJQUNaLHVCQUF1QjtJQUN2QiwrQ0FBWSxDQUFBO0lBQ1osa0NBQWtDO0lBQ2xDLHdEQUFnQixDQUFBO0lBQ2hCLGlDQUFpQztJQUNqQyxvRUFBc0IsQ0FBQTtJQUN0QixrQ0FBa0M7SUFDbEMsb0VBQXNCLENBQUE7SUFDdEIsa0NBQWtDO0lBQ2xDLHFFQUFzQixDQUFBO0lBQ3RCLGtDQUFrQztJQUNsQyxxRUFBc0IsQ0FBQTtJQUN0QixtQ0FBbUM7SUFDbkMscUVBQXNCLENBQUE7SUFDdEIsOEJBQThCO0lBQzlCLG9FQUFzQixDQUFBO0lBQ3RCLDZCQUE2QjtJQUM3QixrRUFBcUIsQ0FBQTtJQUNyQiw4QkFBOEI7SUFDOUIsd0VBQXdCLENBQUE7SUFDeEIsNkJBQTZCO0lBQzdCLHNFQUF1QixDQUFBO0lBQ3ZCLCtCQUErQjtJQUMvQixtRUFBcUIsQ0FBQTtJQUNyQixnQ0FBZ0M7SUFDaEMsbUVBQXFCLENBQUE7SUFDckIsZ0NBQWdDO0lBQ2hDLG1FQUFxQixDQUFBO0lBQ3JCLGdDQUFnQztJQUNoQyxvRUFBcUIsQ0FBQTtJQUNyQixpQ0FBaUM7SUFDakMsb0VBQXFCLENBQUE7SUFDckIsNEJBQTRCO0lBQzVCLGtFQUFvQixDQUFBO0lBQ3BCLDJCQUEyQjtJQUMzQixpRUFBbUIsQ0FBQTtJQUNuQiw0QkFBNEI7SUFDNUIsdUVBQXNCLENBQUE7SUFDdEIsMkJBQTJCO0lBQzNCLHFFQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFqRGlCLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBaUQ5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBzaGFyZWQgd2l0aCB0aGUgY29tcGlsZXIgYW5kIG11c3QgcmVtYWluIHBvcnRhYmxlXG5cbi8vIOKVkuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCBUeXBlaW5mbyBpbnRlcnByZXRhdGlvbiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZVcbi8vICAgIDMgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAxXG4vLyAgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwICBiaXRzXG4vLyDilJzilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilKQg4peE4pSAIF9fcnR0aV9iYXNlXG4vLyDilIIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIJcbi8vIOKVnuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoSDilJBcbi8vIOKUgiAgICAgICAgICAgICAgICAgICAgICBUeXBlaW5mbyNmbGFncyBbaWQ9MF0gICAgICAgICAgICAgICAgICAgIOKUgiBpZCA8IGNvdW50XG4vLyDilJwg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUpFxuLy8g4pSCICAgICAgICAgICAgICAgICAgICAgIFR5cGVpbmZvI2Jhc2UgIFtpZD0wXSAgICAgICAgICAgICAgICAgICAg4pSCXG4vLyDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbi8vIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUglxuXG4vKiogUnVudGltZSB0eXBlIGluZm9ybWF0aW9uIGRhdGEgc3RydWN0dXJlLiAqL1xuQHVubWFuYWdlZFxuZXhwb3J0IGNsYXNzIFR5cGVpbmZvIHtcbiAgLyoqIEZsYWdzIGRlc2NyaWJpbmcgdGhlIHNoYXBlIG9mIHRoaXMgY2xhc3MgdHlwZS4gKi9cbiAgZmxhZ3M6IFR5cGVpbmZvRmxhZ3M7XG4gIC8qKiBCYXNlIGNsYXNzIGlkIG9yIGAwYCBpZiBub25lLiAqL1xuICBiYXNlOiB1MzI7XG59XG5cbi8qKiBSdW50aW1lIHR5cGUgaW5mb3JtYXRpb24gZmxhZ3MuICovXG5leHBvcnQgY29uc3QgZW51bSBUeXBlaW5mb0ZsYWdzIHtcbiAgLyoqIE5vIHNwZWNpZmljIGZsYWdzLiAqL1xuICBOT05FID0gMCxcbiAgLyoqIFR5cGUgaXMgYW4gYEFycmF5QnVmZmVyVmlld2AuICovXG4gIEFSUkFZQlVGRkVSVklFVyA9IDEgPDwgMCxcbiAgLyoqIFR5cGUgaXMgYW4gYEFycmF5YC4gKi9cbiAgQVJSQVkgPSAxIDw8IDEsXG4gIC8qKiBUeXBlIGlzIGEgYFNldGAuICovXG4gIFNFVCA9IDEgPDwgMixcbiAgLyoqIFR5cGUgaXMgYSBgTWFwYC4gKi9cbiAgTUFQID0gMSA8PCAzLFxuICAvKiogVHlwZSBpcyBpbmhlcmVudGx5IGFjeWNsaWMuICovXG4gIEFDWUNMSUMgPSAxIDw8IDQsXG4gIC8qKiBWYWx1ZSBhbGlnbm1lbnQgb2YgMSBieXRlLiAqL1xuICBWQUxVRV9BTElHTl8wID0gMSA8PCA1LFxuICAvKiogVmFsdWUgYWxpZ25tZW50IG9mIDIgYnl0ZXMuICovXG4gIFZBTFVFX0FMSUdOXzEgPSAxIDw8IDYsXG4gIC8qKiBWYWx1ZSBhbGlnbm1lbnQgb2YgNCBieXRlcy4gKi9cbiAgVkFMVUVfQUxJR05fMiA9IDEgPDwgNyxcbiAgLyoqIFZhbHVlIGFsaWdubWVudCBvZiA4IGJ5dGVzLiAqL1xuICBWQUxVRV9BTElHTl8zID0gMSA8PCA4LFxuICAvKiogVmFsdWUgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAqL1xuICBWQUxVRV9BTElHTl80ID0gMSA8PCA5LFxuICAvKiogVmFsdWUgaXMgYSBzaWduZWQgdHlwZS4gKi9cbiAgVkFMVUVfU0lHTkVEID0gMSA8PCAxMCxcbiAgLyoqIFZhbHVlIGlzIGEgZmxvYXQgdHlwZS4gKi9cbiAgVkFMVUVfRkxPQVQgPSAxIDw8IDExLFxuICAvKiogVmFsdWUgdHlwZSBpcyBudWxsYWJsZS4gKi9cbiAgVkFMVUVfTlVMTEFCTEUgPSAxIDw8IDEyLFxuICAvKiogVmFsdWUgdHlwZSBpcyBtYW5hZ2VkLiAqL1xuICBWQUxVRV9NQU5BR0VEID0gMSA8PCAxMyxcbiAgLyoqIEtleSBhbGlnbm1lbnQgb2YgMSBieXRlLiAqL1xuICBLRVlfQUxJR05fMCA9IDEgPDwgMTQsXG4gIC8qKiBLZXkgYWxpZ25tZW50IG9mIDIgYnl0ZXMuICovXG4gIEtFWV9BTElHTl8xID0gMSA8PCAxNSxcbiAgLyoqIEtleSBhbGlnbm1lbnQgb2YgNCBieXRlcy4gKi9cbiAgS0VZX0FMSUdOXzIgPSAxIDw8IDE2LFxuICAvKiogS2V5IGFsaWdubWVudCBvZiA4IGJ5dGVzLiAqL1xuICBLRVlfQUxJR05fMyA9IDEgPDwgMTcsXG4gIC8qKiBLZXkgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAqL1xuICBLRVlfQUxJR05fNCA9IDEgPDwgMTgsXG4gIC8qKiBLZXkgaXMgYSBzaWduZWQgdHlwZS4gKi9cbiAgS0VZX1NJR05FRCA9IDEgPDwgMTksXG4gIC8qKiBLZXkgaXMgYSBmbG9hdCB0eXBlLiAqL1xuICBLRVlfRkxPQVQgPSAxIDw8IDIwLFxuICAvKiogS2V5IHR5cGUgaXMgbnVsbGFibGUuICovXG4gIEtFWV9OVUxMQUJMRSA9IDEgPDwgMjEsXG4gIC8qKiBLZXkgdHlwZSBpcyBtYW5hZ2VkLiAqL1xuICBLRVlfTUFOQUdFRCA9IDEgPDwgMjJcbn1cbiJdfQ== - -/***/ }), - -/***/ "../std/portable/index.js": -/*!********************************!*\ - !*** ../std/portable/index.js ***! - \********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {/** @module std/portable *//***/ - -var globalScope = typeof window !== "undefined" && window || typeof global !== "undefined" && global || self; - -globalScope.ASC_TARGET = 2; // Target.JS -globalScope.ASC_NO_ASSERT = false; -globalScope.ASC_MEMORY_BASE = 0; -globalScope.ASC_OPTIMIZE_LEVEL = 3; -globalScope.ASC_SHRINK_LEVEL = 0; -globalScope.ASC_FEATURE_MUTABLE_GLOBAL = false; -globalScope.ASC_FEATURE_SIGN_EXTENSION = false; -globalScope.ASC_FEATURE_BULK_MEMORY = false; -globalScope.ASC_FEATURE_SIMD = false; -globalScope.ASC_FEATURE_THREADS = false; - -var F64 = new Float64Array(1); -var U64 = new Uint32Array(F64.buffer); - -Object.defineProperties( - globalScope["i8"] = function i8(value) { return value << 24 >> 24; } -, { - "MIN_VALUE": { value: -128, writable: false }, - "MAX_VALUE": { value: 127, writable: false } -}); - -Object.defineProperties( - globalScope["i16"] = function i16(value) { return value << 16 >> 16; } -, { - "MIN_VALUE": { value: -32768, writable: false }, - "MAX_VALUE": { value: 32767, writable: false } -}); - -Object.defineProperties( - globalScope["i32"] = globalScope["isize"] = function i32(value) { return value | 0; } -, { - "MIN_VALUE": { value: -2147483648, writable: false }, - "MAX_VALUE": { value: 2147483647, writable: false } -}); - -Object.defineProperties( - globalScope["u8"] = function u8(value) { return value & 0xff; } -, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 255, writable: false } -}); - -Object.defineProperties( - globalScope["u16"] = function u16(value) { return value & 0xffff; } -, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 65535, writable: false } -}); - -Object.defineProperties( - globalScope["u32"] = globalScope["usize"] = function u32(value) { return value >>> 0; } -, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 4294967295, writable: false } -}); - -Object.defineProperties( - globalScope["bool"] = function bool(value) { return !!value; } -, { - "MIN_VALUE": { value: false, writable: false }, - "MAX_VALUE": { value: true, writable: false } -}); - -Object.defineProperties( - globalScope["f32"] = function f32(value) { return Math.fround(value); } -, { - "EPSILON": { value: Math.fround(1.1920929e-07), writable: false }, - "MIN_VALUE": { value: Math.fround(1.4012985e-45), writable: false }, - "MAX_VALUE": { value: Math.fround(3.4028235e+38), writable: false }, - "MIN_NORMAL_VALUE": { value: Math.fround(1.17549435e-38), writable: false }, - "MIN_SAFE_INTEGER": { value: -16777215, writable: false }, - "MAX_SAFE_INTEGER": { value: 16777215, writable: false } -}); - -Object.defineProperties( - globalScope["f64"] = function f64(value) { return +value; } -, { - "EPSILON": { value: 2.2204460492503131e-16, writable: false }, - "MIN_VALUE": { value: 5e-324, writable: false }, - "MAX_VALUE": { value: 1.7976931348623157e+308, writable: false }, - "MIN_NORMAL_VALUE": { value: 2.2250738585072014e-308 , writable: false }, - "MIN_SAFE_INTEGER": { value: -9007199254740991, writable: false }, - "MAX_SAFE_INTEGER": { value: 9007199254740991, writable: false } -}); - -globalScope["clz"] = Math.clz32; - -globalScope["ctz"] = function ctz(value) { - var c = Math.clz32(value & -value); - return value ? 31 - c : c; -}; - -globalScope["popcnt"] = function popcnt(value) { - value -= value >>> 1 & 0x55555555; - value = (value & 0x33333333) + (value >>> 2 & 0x33333333); - return (((value + (value >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24; -}; - -globalScope["rotl"] = function rotl(value, shift) { - shift &= 31; - return (value << shift) | (value >>> (32 - shift)); -}; - -globalScope["rotr"] = function rotr(value, shift) { - shift &= 31; - return (value >>> shift) | (value << (32 - shift)); -}; - -globalScope["abs"] = Math.abs; - -globalScope["max"] = Math.max; - -globalScope["min"] = Math.min; - -globalScope["ceil"] = Math.ceil; - -globalScope["floor"] = Math.floor; - -// Adopt code from https://github.com/rfk/wasm-polyfill -globalScope["nearest"] = function nearest(value) { - if (Math.abs(value - Math.trunc(value)) === 0.5) { - return 2.0 * Math.round(value * 0.5); - } - return Math.round(value); -}; - -globalScope["select"] = function select(ifTrue, ifFalse, condition) { - return condition ? ifTrue : ifFalse; -}; - -globalScope["sqrt"] = Math.sqrt; - -globalScope["trunc"] = Math.trunc; - -globalScope["copysign"] = function copysign(x, y) { - return Math.abs(x) * Math.sign(y); -}; - -globalScope["bswap"] = function bswap(value) { - var a = value >> 8 & 0x00FF00FF; - var b = (value & 0x00FF00FF) << 8; - value = a | b; - a = value >> 16 & 0x0000FFFF; - b = (value & 0x0000FFFF) << 16; - return a | b; -}; - -globalScope["bswap16"] = function bswap16(value) { - return ((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000); -}; - -function UnreachableError() { - if (Error.captureStackTrace) { - Error.captureStackTrace(this, UnreachableError); - } else { - this.stack = this.name + ": " + this.message + "\n" + new Error().stack; - } -} -UnreachableError.prototype = Object.create(Error.prototype); -UnreachableError.prototype.name = "UnreachableError"; -UnreachableError.prototype.message = "unreachable"; - -globalScope["unreachable"] = function unreachable() { - throw new UnreachableError(); -}; - -function AssertionError(message) { - this.message = message || "assertion failed"; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, AssertionError); - } else { - this.stack = this.name + ": " + this.message + "\n" + new Error().stack; - } -} -AssertionError.prototype = Object.create(Error.prototype); -AssertionError.prototype.name = "AssertionError"; - -globalScope["assert"] = function assert(isTrueish, message) { - if (isTrueish) return isTrueish; - throw new AssertionError(message); -}; - -globalScope["changetype"] = function changetype(value) { - return value; -}; - -String["fromCharCodes"] = function fromCharCodes(arr) { - return String.fromCharCode.apply(String, arr); -}; - -String["fromCodePoints"] = function fromCodePoints(arr) { - return String.fromCodePoint.apply(String, arr); -}; - -if (!String.prototype.replaceAll) { - Object.defineProperty(String.prototype, "replaceAll", { - value: function replaceAll(search, replacment) { - var res = this.split(search).join(replacment); - if (!search.length) res = replacment + res + replacment; - return res; - } - }); -} - -globalScope["isInteger"] = Number.isInteger; - -globalScope["isFloat"] = function isFloat(arg) { - return typeof arg === "number"; -}; - -globalScope["isNullable"] = function isNullable(arg) { - return true; -} - -globalScope["isReference"] = function isReference(arg) { - return typeof arg === "object" || typeof arg === "string"; -}; - -globalScope["isFunction"] = function isFunction(arg) { - return typeof arg === "function"; -} - -globalScope["isString"] = function isString(arg) { - return typeof arg === "string" || arg instanceof String; -}; - -globalScope["isArray"] = Array.isArray; -globalScope["isArrayLike"] = function isArrayLike(expr) { - return expr - && typeof expr === 'object' - && typeof expr.length === 'number' - && expr.length >= 0 - && Math.trunc(expr.length) === expr.length; -}; - -Array.create = function(capacity) { - var arr = new Array(capacity); - arr.length = 0; - return arr; -}; - -globalScope["isDefined"] = function isDefined(expr) { - return typeof expr !== "undefined"; -} - -globalScope["isConstant"] = function isConstant(expr) { - return false; -}; - -globalScope["unchecked"] = function unchecked(expr) { - return expr; -}; - -globalScope["fmod"] = function fmod(x, y) { - return x % y; -}; - -globalScope["fmodf"] = function fmodf(x, y) { - return Math.fround(x % y); -}; - -globalScope["JSMath"] = Math; - -try { -Object.defineProperties(globalScope["JSMath"], { - sincos_sin: { value: 0.0, writable: true }, - sincos_cos: { value: 0.0, writable: true }, - signbit: { - value: function signbit(x) { - F64[0] = x; return Boolean((U64[1] >>> 31) & (x == x)); - } - }, - sincos: { - value: function sincos(x) { - this.sincos_sin = Math.sin(x); - this.sincos_cos = Math.cos(x); - } - } -}); -}catch (e) {} - -globalScope["memory"] = (() => { - var HEAP = new Uint8Array(0); - var HEAP_OFFSET = 0; - return { - allocate: globalScope["__memory_allocate"] || function allocate(size) { - if (!(size >>>= 0)) return 0; - if (HEAP_OFFSET + size > HEAP.length) { - var oldHeap = HEAP; - HEAP = new Uint8Array(Math.max(65536, HEAP.length + size, HEAP.length * 2)); - HEAP.set(oldHeap); - } - var ptr = HEAP_OFFSET; - if ((HEAP_OFFSET += size) & 7) HEAP_OFFSET = (HEAP_OFFSET | 7) + 1; - return ptr; - }, - fill: globalScope["__memory_fill"] || function fill(dest, value, size) { - HEAP.fill(value, dest, dest + size); - }, - free: globalScope["__memory_free"] || function free(ptr) { }, - copy: globalScope["__memory_copy"] || function copy(dest, src, size) { - HEAP.copyWithin(dest, src, src + size); - }, - reset: globalScope["__memory_reset"] || function reset() { - HEAP = new Uint8Array(0); - HEAP_OFFSET = 0; - } - }; -})(); - -globalScope["store"] = globalScope["__store"] || function store(ptr, value, offset) { - HEAP[(ptr | 0) + (offset | 0)] = value; -}; - -globalScope["load"] = globalScope["__load"] || function load(ptr, offset) { - return HEAP[(ptr | 0) + (offset | 0)]; -}; - -globalScope["unmanaged"] = function() {}; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "./src/base.ts": -/*!*********************!*\ - !*** ./src/base.ts ***! - \*********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); -var visitor_1 = __webpack_require__(/*! ./visitor */ "./src/visitor.ts"); -var BaseVisitor = /** @class */ (function (_super) { - __extends(BaseVisitor, _super); - function BaseVisitor(writer) { - var _this = _super.call(this, writer) || this; - _this.depth = 0; - return _this; - } - BaseVisitor.prototype._visit = function (node) { - switch (node.kind) { - case ast_1.NodeKind.SOURCE: { - this.visitSource(node); - break; - } - // types - case ast_1.NodeKind.NAMEDTYPE: { - this.visitNamedTypeNode(node); - break; - } - case ast_1.NodeKind.FUNCTIONTYPE: { - this.visitFunctionTypeNode(node); - break; - } - case ast_1.NodeKind.TYPENAME: { - this.visitTypeName(node); - } - case ast_1.NodeKind.TYPEPARAMETER: { - this.visitTypeParameter(node); - break; - } - // expressions - case ast_1.NodeKind.FALSE: - case ast_1.NodeKind.NULL: - case ast_1.NodeKind.SUPER: - case ast_1.NodeKind.THIS: - case ast_1.NodeKind.TRUE: - case ast_1.NodeKind.CONSTRUCTOR: - case ast_1.NodeKind.IDENTIFIER: { - this.visitIdentifierExpression(node); - break; - } - case ast_1.NodeKind.ASSERTION: { - this.visitAssertionExpression(node); - break; - } - case ast_1.NodeKind.BINARY: { - this.visitBinaryExpression(node); - break; - } - case ast_1.NodeKind.CALL: { - this.visitCallExpression(node); - break; - } - case ast_1.NodeKind.CLASS: { - this.visitClassExpression(node); - break; - } - case ast_1.NodeKind.COMMA: { - this.visitCommaExpression(node); - break; - } - case ast_1.NodeKind.ELEMENTACCESS: { - this.visitElementAccessExpression(node); - break; - } - case ast_1.NodeKind.FUNCTION: { - this.visitFunctionExpression(node); - break; - } - case ast_1.NodeKind.INSTANCEOF: { - this.visitInstanceOfExpression(node); - break; - } - case ast_1.NodeKind.LITERAL: { - this.visitLiteralExpression(node); - break; - } - case ast_1.NodeKind.NEW: { - this.visitNewExpression(node); - break; - } - case ast_1.NodeKind.PARENTHESIZED: { - this.visitParenthesizedExpression(node); - break; - } - case ast_1.NodeKind.PROPERTYACCESS: { - this.visitPropertyAccessExpression(node); - break; - } - case ast_1.NodeKind.TERNARY: { - this.visitTernaryExpression(node); - break; - } - case ast_1.NodeKind.UNARYPOSTFIX: { - this.visitUnaryPostfixExpression(node); - break; - } - case ast_1.NodeKind.UNARYPREFIX: { - this.visitUnaryPrefixExpression(node); - break; - } - // statements - case ast_1.NodeKind.BLOCK: { - this.visitBlockStatement(node); - break; - } - case ast_1.NodeKind.BREAK: { - this.visitBreakStatement(node); - break; - } - case ast_1.NodeKind.CONTINUE: { - this.visitContinueStatement(node); - break; - } - case ast_1.NodeKind.DO: { - this.visitDoStatement(node); - break; - } - case ast_1.NodeKind.EMPTY: { - this.visitEmptyStatement(node); - break; - } - case ast_1.NodeKind.EXPORT: { - this.visitExportStatement(node); - break; - } - case ast_1.NodeKind.EXPORTDEFAULT: { - this.visitExportDefaultStatement(node); - break; - } - case ast_1.NodeKind.EXPORTIMPORT: { - this.visitExportImportStatement(node); - break; - } - case ast_1.NodeKind.EXPRESSION: { - this.visitExpressionStatement(node); - break; - } - case ast_1.NodeKind.FOR: { - this.visitForStatement(node); - break; - } - case ast_1.NodeKind.IF: { - this.visitIfStatement(node); - break; - } - case ast_1.NodeKind.IMPORT: { - this.visitImportStatement(node); - break; - } - case ast_1.NodeKind.RETURN: { - this.visitReturnStatement(node); - break; - } - case ast_1.NodeKind.SWITCH: { - this.visitSwitchStatement(node); - break; - } - case ast_1.NodeKind.THROW: { - this.visitThrowStatement(node); - break; - } - case ast_1.NodeKind.TRY: { - this.visitTryStatement(node); - break; - } - case ast_1.NodeKind.VARIABLE: { - this.visitVariableStatement(node); - break; - } - case ast_1.NodeKind.WHILE: { - this.visitWhileStatement(node); - break; - } - // declaration statements - case ast_1.NodeKind.CLASSDECLARATION: { - this.visitClassDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMDECLARATION: { - this.visitEnumDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMVALUEDECLARATION: { - this.visitEnumValueDeclaration(node); - break; - } - case ast_1.NodeKind.FIELDDECLARATION: { - this.visitFieldDeclaration(node); - break; - } - case ast_1.NodeKind.FUNCTIONDECLARATION: { - this.visitFunctionDeclaration(node); - break; - } - case ast_1.NodeKind.IMPORTDECLARATION: { - this.visitImportDeclaration(node); - break; - } - case ast_1.NodeKind.INDEXSIGNATUREDECLARATION: { - this.visitIndexSignatureDeclaration(node); - break; - } - case ast_1.NodeKind.INTERFACEDECLARATION: { - this.visitInterfaceDeclaration(node); - break; - } - case ast_1.NodeKind.METHODDECLARATION: { - this.visitMethodDeclaration(node); - break; - } - case ast_1.NodeKind.NAMESPACEDECLARATION: { - this.visitNamespaceDeclaration(node); - break; - } - case ast_1.NodeKind.TYPEDECLARATION: { - this.visitTypeDeclaration(node); - break; - } - case ast_1.NodeKind.VARIABLEDECLARATION: { - this.visitVariableDeclaration(node); - break; - } - // other - case ast_1.NodeKind.DECORATOR: { - this.visitDecoratorNode(node); - break; - } - case ast_1.NodeKind.EXPORTMEMBER: { - this.visitExportMember(node); - break; - } - case ast_1.NodeKind.PARAMETER: { - this.visitParameter(node); - break; - } - case ast_1.NodeKind.SWITCHCASE: { - this.visitSwitchCase(node); - break; - } - default: assert(false); - } - }; - BaseVisitor.prototype.visitSource = function (node) { - var e_1, _a; - try { - for (var _b = __values(node.statements), _c = _b.next(); !_c.done; _c = _b.next()) { - var stmt = _c.value; - this.depth++; - this.visit(stmt); - this.depth--; - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_1) throw e_1.error; } - } - }; - BaseVisitor.prototype.visitTypeNode = function (node) { }; - BaseVisitor.prototype.visitTypeName = function (node) { - this.visit(node.identifier); - if (node.next) { - this.visit(node); - } - }; - BaseVisitor.prototype.visitNamedTypeNode = function (node) { - this.visit(node.name); - this.visit(node.typeArguments); - }; - BaseVisitor.prototype.visitFunctionTypeNode = function (node) { - var e_2, _a; - try { - for (var _b = __values(node.parameters), _c = _b.next(); !_c.done; _c = _b.next()) { - var param = _c.value; - this.visit(param); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_2) throw e_2.error; } - } - this.visit(node.returnType); - }; - BaseVisitor.prototype.visitTypeParameter = function (node) { - this.visit(node.name); - if (node.extendsType) - this.visit(node.extendsType); - if (node.defaultType) - this.visit(node.defaultType); - }; - BaseVisitor.prototype.visitIdentifierExpression = function (node) { }; - BaseVisitor.prototype.visitArrayLiteralExpression = function (node) { - var _this = this; - node.elementExpressions.map(function (e) { - if (e) - _this.visit(e); - }); - }; - BaseVisitor.prototype.visitObjectLiteralExpression = function (node) { - if (node.values && node.names) { - assert(node.values.length == node.names.length); - for (var i = 0; i < node.values.length; i++) { - this.visit(node.names[i]); - this.visit(node.values[i]); - } - } - }; - BaseVisitor.prototype.visitAssertionExpression = function (node) { - if (node.toType) - this.visit(node.toType); - this.visit(node.expression); - }; - BaseVisitor.prototype.visitBinaryExpression = function (node) { - this.visit(node.left); - this.visit(node.right); - }; - BaseVisitor.prototype.visitCallExpression = function (node) { - this.visit(node.expression); - this.visit(node.typeArguments); - this.visit(node.arguments); - }; - BaseVisitor.prototype.visitClassExpression = function (node) { - this.visit(node.declaration); - }; - BaseVisitor.prototype.visitCommaExpression = function (node) { - this.visit(node.expressions); - }; - BaseVisitor.prototype.visitElementAccessExpression = function (node) { - this.visit(node.elementExpression); - this.visit(node.expression); - }; - BaseVisitor.prototype.visitFunctionExpression = function (node) { - this.visit(node.declaration); - }; - BaseVisitor.prototype.visitLiteralExpression = function (node) { - // node. - }; - BaseVisitor.prototype.visitFloatLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitInstanceOfExpression = function (node) { - this.visit(node.expression); - this.visit(node.isType); - }; - BaseVisitor.prototype.visitIntegerLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitStringLiteral = function (str, singleQuoted) { }; - BaseVisitor.prototype.visitStringLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitRegexpLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitNewExpression = function (node) { - this.visit(node.expression); - this.visit(node.typeArguments); - this.visit(node.arguments); - }; - BaseVisitor.prototype.visitParenthesizedExpression = function (node) { - this.visit(node.expression); - }; - BaseVisitor.prototype.visitPropertyAccessExpression = function (node) { - this.visit(node.property); - this.visit(node.expression); - }; - BaseVisitor.prototype.visitTernaryExpression = function (node) { - this.visit(node.condition); - this.visit(node.ifThen); - this.visit(node.ifElse); - }; - BaseVisitor.prototype.visitUnaryExpression = function (node) { - this.visit(node.operand); - }; - BaseVisitor.prototype.visitUnaryPostfixExpression = function (node) { - this.visit(node.operand); - }; - BaseVisitor.prototype.visitUnaryPrefixExpression = function (node) { - this.visit(node.operand); - }; - BaseVisitor.prototype.visitSuperExpression = function (node) { }; - BaseVisitor.prototype.visitFalseExpression = function (node) { }; - BaseVisitor.prototype.visitTrueExpression = function (node) { }; - BaseVisitor.prototype.visitThisExpression = function (node) { }; - BaseVisitor.prototype.visitNullExperssion = function (node) { }; - BaseVisitor.prototype.visitConstructorExpression = function (node) { }; - BaseVisitor.prototype.visitNodeAndTerminate = function (statement) { }; - BaseVisitor.prototype.visitBlockStatement = function (node) { - this.depth++; - this.visit(node.statements); - this.depth--; - }; - BaseVisitor.prototype.visitBreakStatement = function (node) { - if (node.label) { - this.visit(node.label); - } - }; - BaseVisitor.prototype.visitContinueStatement = function (node) { - if (node.label) { - this.visit(node.label); - } - }; - BaseVisitor.prototype.visitClassDeclaration = function (node, isDefault) { - this.visit(node.name); - this.depth++; - this.visit(node.decorators); - assert(node.isGeneric ? node.typeParameters != null : node.typeParameters == null); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - if (node.extendsType) { - this.visit(node.extendsType); - } - this.visit(node.implementsTypes); - this.visit(node.members); - this.depth--; - }; - BaseVisitor.prototype.visitDoStatement = function (node) { - this.visit(node.condition); - this.visit(node.statement); - }; - BaseVisitor.prototype.visitEmptyStatement = function (node) { }; - BaseVisitor.prototype.visitEnumDeclaration = function (node, isDefault) { - this.visit(node.name); - this.visit(node.decorators); - this.visit(node.values); - }; - BaseVisitor.prototype.visitEnumValueDeclaration = function (node) { - this.visit(node.name); - if (node.initializer) { - this.visit(node.initializer); - } - }; - BaseVisitor.prototype.visitExportImportStatement = function (node) { - this.visit(node.name); - this.visit(node.externalName); - }; - BaseVisitor.prototype.visitExportMember = function (node) { - this.visit(node.localName); - this.visit(node.exportedName); - }; - BaseVisitor.prototype.visitExportStatement = function (node) { - if (node.path) { - this.visit(node.path); - } - this.visit(node.members); - }; - BaseVisitor.prototype.visitExportDefaultStatement = function (node) { - this.visit(node.declaration); - }; - BaseVisitor.prototype.visitExpressionStatement = function (node) { - this.visit(node.expression); - }; - BaseVisitor.prototype.visitFieldDeclaration = function (node) { - this.visit(node.name); - if (node.type) { - this.visit(node.type); - } - if (node.initializer) { - this.visit(node.initializer); - } - this.visit(node.decorators); - }; - BaseVisitor.prototype.visitForStatement = function (node) { - if (node.initializer) - this.visit(node.initializer); - if (node.condition) - this.visit(node.condition); - if (node.incrementor) - this.visit(node.incrementor); - this.visit(node.statement); - }; - BaseVisitor.prototype.visitFunctionDeclaration = function (node, isDefault) { - this.visit(node.name); - this.visit(node.decorators); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - this.visit(node.signature); - this.depth++; - if (node.body) - this.visit(node.body); - this.depth--; - }; - BaseVisitor.prototype.visitFunctionCommon = function (node) { - // this.visit(node.name) - }; - BaseVisitor.prototype.visitIfStatement = function (node) { - this.visit(node.condition); - this.visit(node.ifTrue); - if (node.ifFalse) - this.visit(node.ifFalse); - }; - BaseVisitor.prototype.visitImportDeclaration = function (node) { - this.visit(node.foreignName); - this.visit(node.name); - this.visit(node.decorators); - }; - BaseVisitor.prototype.visitImportStatement = function (node) { - if (node.namespaceName) - this.visit(node.namespaceName); - this.visit(node.declarations); - }; - BaseVisitor.prototype.visitIndexSignatureDeclaration = function (node) { - // this.visit(node.name); - // this.visit(node.keyType); - // this.visit(node.valueType); - }; - BaseVisitor.prototype.visitInterfaceDeclaration = function (node, isDefault) { - this.visit(node.name); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - this.visit(node.implementsTypes); - if (node.extendsType) - this.visit(node.extendsType); - this.depth++; - this.visit(node.members); - this.depth--; - }; - BaseVisitor.prototype.visitMethodDeclaration = function (node) { - this.visit(node.name); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - this.visit(node.signature); - this.visit(node.decorators); - this.depth++; - if (node.body) - this.visit(node.body); - this.depth--; - }; - BaseVisitor.prototype.visitNamespaceDeclaration = function (node, isDefault) { - this.visit(node.name); - this.visit(node.decorators); - this.visit(node.members); - }; - BaseVisitor.prototype.visitReturnStatement = function (node) { - if (node.value) - this.visit(node.value); - }; - BaseVisitor.prototype.visitSwitchCase = function (node) { - if (node.label) - this.visit(node.label); - this.visit(node.statements); - }; - BaseVisitor.prototype.visitSwitchStatement = function (node) { - this.visit(node.condition); - this.depth++; - this.visit(node.cases); - this.depth--; - }; - BaseVisitor.prototype.visitThrowStatement = function (node) { - this.visit(node.value); - }; - BaseVisitor.prototype.visitTryStatement = function (node) { - this.visit(node.statements); - if (node.catchVariable) - this.visit(node.catchVariable); - this.visit(node.catchStatements); - this.visit(node.finallyStatements); - }; - BaseVisitor.prototype.visitTypeDeclaration = function (node) { - this.visit(node.name); - this.visit(node.decorators); - this.visit(node.type); - this.visit(node.typeParameters); - }; - BaseVisitor.prototype.visitVariableDeclaration = function (node) { - this.visit(node.name); - if (node.type) - this.visit(node.type); - if (node.initializer) - this.visit(node.initializer); - }; - BaseVisitor.prototype.visitVariableStatement = function (node) { - this.visit(node.decorators); - this.visit(node.declarations); - }; - BaseVisitor.prototype.visitWhileStatement = function (node) { - this.visit(node.condition); - this.depth++; - this.visit(node.statement); - this.depth--; - }; - BaseVisitor.prototype.visitVoidStatement = function (node) { }; - BaseVisitor.prototype.visitComment = function (node) { }; - BaseVisitor.prototype.visitDecoratorNode = function (node) { - this.visit(node.name); - this.visit(node.arguments); - }; - BaseVisitor.prototype.visitParameter = function (node) { - this.visit(node.name); - if (node.implicitFieldDeclaration) { - this.visit(node.implicitFieldDeclaration); - } - if (node.initializer) - this.visit(node.initializer); - this.visit(node.type); - }; - return BaseVisitor; -}(visitor_1.AbstractVisitor)); -exports.BaseVisitor = BaseVisitor; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQ0E0RXVCO0FBRXZCLHFDQUFvRDtBQUVwRDtJQUFpQywrQkFBcUI7SUFHcEQscUJBQVksTUFBcUI7UUFBakMsWUFDRSxrQkFBTSxNQUFNLENBQUMsU0FDZDtRQUpELFdBQUssR0FBVyxDQUFDLENBQUM7O0lBSWxCLENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sSUFBVTtRQUNmLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLGNBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBUyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsTUFBTTthQUNQO1lBRUQsUUFBUTtZQUVSLEtBQUssY0FBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQWdCLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxNQUFNO2FBQ1A7WUFDRCxLQUFLLGNBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLHFCQUFxQixDQUFtQixJQUFJLENBQUMsQ0FBQztnQkFDbkQsTUFBTTthQUNQO1lBQ0QsS0FBSyxjQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLENBQVcsSUFBSSxDQUFDLENBQUM7YUFDcEM7WUFDRCxLQUFLLGNBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFvQixJQUFJLENBQUMsQ0FBQztnQkFDakQsTUFBTTthQUNQO1lBRUQsY0FBYztZQUVkLEtBQUssY0FBUSxDQUFDLEtBQUssQ0FBQztZQUNwQixLQUFLLGNBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbkIsS0FBSyxjQUFRLENBQUMsS0FBSyxDQUFDO1lB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QUFDO0lBQzdCLENBQUM7SUFFRCxvQ0FBYyxHQUFkLFVBQWUsSUFBbUI7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUgsa0JBQUM7QUFBRCxDQUFDLEFBNW9CRCxDQUFpQyx5QkFBZSxHQTRvQi9DO0FBNW9CWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNvdXJjZSxcbiAgVHlwZU5vZGUsXG4gIFR5cGVOYW1lLFxuICBOYW1lZFR5cGVOb2RlLFxuICBGdW5jdGlvblR5cGVOb2RlLFxuICBUeXBlUGFyYW1ldGVyTm9kZSxcbiAgSWRlbnRpZmllckV4cHJlc3Npb24sXG4gIEFycmF5TGl0ZXJhbEV4cHJlc3Npb24sXG4gIE9iamVjdExpdGVyYWxFeHByZXNzaW9uLFxuICBBc3NlcnRpb25FeHByZXNzaW9uLFxuICBCaW5hcnlFeHByZXNzaW9uLFxuICBDYWxsRXhwcmVzc2lvbixcbiAgQ2xhc3NFeHByZXNzaW9uLFxuICBDb21tYUV4cHJlc3Npb24sXG4gIEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLFxuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIExpdGVyYWxFeHByZXNzaW9uLFxuICBGbG9hdExpdGVyYWxFeHByZXNzaW9uLFxuICBJbnN0YW5jZU9mRXhwcmVzc2lvbixcbiAgSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uLFxuICBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbixcbiAgUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24sXG4gIE5ld0V4cHJlc3Npb24sXG4gIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uLFxuICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24sXG4gIFRlcm5hcnlFeHByZXNzaW9uLFxuICBVbmFyeUV4cHJlc3Npb24sXG4gIFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24sXG4gIFVuYXJ5UHJlZml4RXhwcmVzc2lvbixcbiAgU3VwZXJFeHByZXNzaW9uLFxuICBGYWxzZUV4cHJlc3Npb24sXG4gIFRydWVFeHByZXNzaW9uLFxuICBUaGlzRXhwcmVzc2lvbixcbiAgTnVsbEV4cHJlc3Npb24sXG4gIENvbnN0cnVjdG9yRXhwcmVzc2lvbixcbiAgU3RhdGVtZW50LFxuICBCbG9ja1N0YXRlbWVudCxcbiAgQnJlYWtTdGF0ZW1lbnQsXG4gIENvbnRpbnVlU3RhdGVtZW50LFxuICBDbGFzc0RlY2xhcmF0aW9uLFxuICBEb1N0YXRlbWVudCxcbiAgRW1wdHlTdGF0ZW1lbnQsXG4gIEVudW1EZWNsYXJhdGlvbixcbiAgRW51bVZhbHVlRGVjbGFyYXRpb24sXG4gIEV4cG9ydEltcG9ydFN0YXRlbWVudCxcbiAgRXhwb3J0TWVtYmVyLFxuICBFeHBvcnRTdGF0ZW1lbnQsXG4gIEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQsXG4gIEV4cHJlc3Npb25TdGF0ZW1lbnQsXG4gIEZpZWxkRGVjbGFyYXRpb24sXG4gIEZvclN0YXRlbWVudCxcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgSWZTdGF0ZW1lbnQsXG4gIEltcG9ydERlY2xhcmF0aW9uLFxuICBJbXBvcnRTdGF0ZW1lbnQsXG4gIEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24sXG4gIEludGVyZmFjZURlY2xhcmF0aW9uLFxuICBNZXRob2REZWNsYXJhdGlvbixcbiAgTmFtZXNwYWNlRGVjbGFyYXRpb24sXG4gIFJldHVyblN0YXRlbWVudCxcbiAgU3dpdGNoQ2FzZSxcbiAgU3dpdGNoU3RhdGVtZW50LFxuICBUaHJvd1N0YXRlbWVudCxcbiAgVHJ5U3RhdGVtZW50LFxuICBUeXBlRGVjbGFyYXRpb24sXG4gIFZhcmlhYmxlRGVjbGFyYXRpb24sXG4gIFZhcmlhYmxlU3RhdGVtZW50LFxuICBXaGlsZVN0YXRlbWVudCxcbiAgVm9pZFN0YXRlbWVudCxcbiAgQ29tbWVudE5vZGUsXG4gIERlY29yYXRvck5vZGUsXG4gIFBhcmFtZXRlck5vZGUsXG4gIE5vZGUsXG4gIE5vZGVLaW5kLFxuICBFeHByZXNzaW9uXG59IGZyb20gXCIuLi8uLi9zcmMvYXN0XCI7XG5cbmltcG9ydCB7IEFic3RyYWN0VmlzaXRvciwgV3JpdGVyIH0gZnJvbSBcIi4vdmlzaXRvclwiO1xuXG5leHBvcnQgY2xhc3MgQmFzZVZpc2l0b3IgZXh0ZW5kcyBBYnN0cmFjdFZpc2l0b3I8Tm9kZT4ge1xuICBkZXB0aDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih3cml0ZXI/OiBXcml0ZXI8Tm9kZT4pIHtcbiAgICBzdXBlcih3cml0ZXIpO1xuICB9XG5cbiAgX3Zpc2l0KG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBOb2RlS2luZC5TT1VSQ0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFNvdXJjZSg8U291cmNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gdHlwZXNcblxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FRFRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVkVHlwZU5vZGUoPE5hbWVkVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GVU5DVElPTlRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uVHlwZU5vZGUoPEZ1bmN0aW9uVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFTkFNRToge1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5hbWUoPFR5cGVOYW1lPm5vZGUpO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKDxUeXBlUGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGV4cHJlc3Npb25zXG5cbiAgICAgIGNhc2UgTm9kZUtpbmQuRkFMU0U6XG4gICAgICBjYXNlIE5vZGVLaW5kLk5VTEw6XG4gICAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOlxuICAgICAgY2FzZSBOb2RlS2luZC5USElTOlxuICAgICAgY2FzZSBOb2RlS2luZC5UUlVFOlxuICAgICAgY2FzZSBOb2RlS2luZC5DT05TVFJVQ1RPUjpcbiAgICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjoge1xuICAgICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24oPElkZW50aWZpZXJFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQVNTRVJUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRBc3NlcnRpb25FeHByZXNzaW9uKDxBc3NlcnRpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQklOQVJZOiB7XG4gICAgICAgIHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKDxCaW5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0FMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24oPENhbGxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0xBU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdENsYXNzRXhwcmVzc2lvbig8Q2xhc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09NTUE6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbW1hRXhwcmVzc2lvbig8Q29tbWFFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzoge1xuICAgICAgICB0aGlzLnZpc2l0RWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oPEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbig8RnVuY3Rpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5TVEFOQ0VPRjoge1xuICAgICAgICB0aGlzLnZpc2l0SW5zdGFuY2VPZkV4cHJlc3Npb24oPEluc3RhbmNlT2ZFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTElURVJBTDoge1xuICAgICAgICB0aGlzLnZpc2l0TGl0ZXJhbEV4cHJlc3Npb24oPExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkVXOiB7XG4gICAgICAgIHRoaXMudmlzaXROZXdFeHByZXNzaW9uKDxOZXdFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUEFSRU5USEVTSVpFRDoge1xuICAgICAgICB0aGlzLnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oPFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbig8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEVSTkFSWToge1xuICAgICAgICB0aGlzLnZpc2l0VGVybmFyeUV4cHJlc3Npb24oPFRlcm5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdGVtZW50c1xuXG4gICAgICBjYXNlIE5vZGVLaW5kLkJMT0NLOiB7XG4gICAgICAgIHRoaXMudmlzaXRCbG9ja1N0YXRlbWVudCg8QmxvY2tTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5CUkVBSzoge1xuICAgICAgICB0aGlzLnZpc2l0QnJlYWtTdGF0ZW1lbnQoPEJyZWFrU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09OVElOVUU6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbnRpbnVlU3RhdGVtZW50KDxDb250aW51ZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkRPOiB7XG4gICAgICAgIHRoaXMudmlzaXREb1N0YXRlbWVudCg8RG9TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FTVBUWToge1xuICAgICAgICB0aGlzLnZpc2l0RW1wdHlTdGF0ZW1lbnQoPEVtcHR5U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRFeHBvcnRTdGF0ZW1lbnQoPEV4cG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoPEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FWFBPUlRJTVBPUlQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudCg8RXhwb3J0SW1wb3J0U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQUkVTU0lPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwcmVzc2lvblN0YXRlbWVudCg8RXhwcmVzc2lvblN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZPUjoge1xuICAgICAgICB0aGlzLnZpc2l0Rm9yU3RhdGVtZW50KDxGb3JTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JRjoge1xuICAgICAgICB0aGlzLnZpc2l0SWZTdGF0ZW1lbnQoPElmU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU1QT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnRTdGF0ZW1lbnQoPEltcG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlJFVFVSTjoge1xuICAgICAgICB0aGlzLnZpc2l0UmV0dXJuU3RhdGVtZW50KDxSZXR1cm5TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0g6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaFN0YXRlbWVudCg8U3dpdGNoU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEhST1c6IHtcbiAgICAgICAgdGhpcy52aXNpdFRocm93U3RhdGVtZW50KDxUaHJvd1N0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlRSWToge1xuICAgICAgICB0aGlzLnZpc2l0VHJ5U3RhdGVtZW50KDxUcnlTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5WQVJJQUJMRToge1xuICAgICAgICB0aGlzLnZpc2l0VmFyaWFibGVTdGF0ZW1lbnQoPFZhcmlhYmxlU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuV0hJTEU6IHtcbiAgICAgICAgdGhpcy52aXNpdFdoaWxlU3RhdGVtZW50KDxXaGlsZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2xhcmF0aW9uIHN0YXRlbWVudHNcblxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRU5VTURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtRGVjbGFyYXRpb24oPEVudW1EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1WQUxVRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbig8RW51bVZhbHVlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRGaWVsZERlY2xhcmF0aW9uKDxGaWVsZERlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklNUE9SVERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbig8SW1wb3J0RGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKDxJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5URVJGQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEludGVyZmFjZURlY2xhcmF0aW9uKDxJbnRlcmZhY2VEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLk1FVEhPRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRNZXRob2REZWNsYXJhdGlvbig8TWV0aG9kRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FU1BBQ0VERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oPE5hbWVzcGFjZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlRGVjbGFyYXRpb24oPFR5cGVEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlZBUklBQkxFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oPFZhcmlhYmxlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBvdGhlclxuXG4gICAgICBjYXNlIE5vZGVLaW5kLkRFQ09SQVRPUjoge1xuICAgICAgICB0aGlzLnZpc2l0RGVjb3JhdG9yTm9kZSg8RGVjb3JhdG9yTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVE1FTUJFUjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwb3J0TWVtYmVyKDxFeHBvcnRNZW1iZXI+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5QQVJBTUVURVI6IHtcbiAgICAgICAgdGhpcy52aXNpdFBhcmFtZXRlcig8UGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlNXSVRDSENBU0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaENhc2UoPFN3aXRjaENhc2U+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFNvdXJjZShub2RlOiBTb3VyY2UpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN0bXQgb2Ygbm9kZS5zdGF0ZW1lbnRzKSB7XG4gICAgICB0aGlzLmRlcHRoKys7XG4gICAgICB0aGlzLnZpc2l0KHN0bXQpO1xuICAgICAgdGhpcy5kZXB0aC0tO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VHlwZU5vZGUobm9kZTogVHlwZU5vZGUpOiB2b2lkIHt9XG5cbiAgdmlzaXRUeXBlTmFtZShub2RlOiBUeXBlTmFtZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5pZGVudGlmaWVyKTtcbiAgICBpZiAobm9kZS5uZXh0KSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0TmFtZWRUeXBlTm9kZShub2RlOiBOYW1lZFR5cGVOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlQXJndW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25UeXBlTm9kZShub2RlOiBGdW5jdGlvblR5cGVOb2RlKTogdm9pZCB7XG4gICAgZm9yIChsZXQgcGFyYW0gb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLnZpc2l0KHBhcmFtKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLnJldHVyblR5cGUpO1xuICB9XG5cbiAgdmlzaXRUeXBlUGFyYW1ldGVyKG5vZGU6IFR5cGVQYXJhbWV0ZXJOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIGlmIChub2RlLmRlZmF1bHRUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZGVmYXVsdFR5cGUpO1xuICB9XG5cbiAgdmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlOiBJZGVudGlmaWVyRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdEFycmF5TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogQXJyYXlMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIG5vZGUuZWxlbWVudEV4cHJlc3Npb25zLm1hcCgoZTogRXhwcmVzc2lvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKGUpIHRoaXMudmlzaXQoZSk7XG4gICAgfSk7XG4gIH1cblxuICB2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKG5vZGUudmFsdWVzICYmIG5vZGUubmFtZXMpIHtcbiAgICAgIGFzc2VydChub2RlLnZhbHVlcy5sZW5ndGggPT0gbm9kZS5uYW1lcy5sZW5ndGgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLnZpc2l0KG5vZGUubmFtZXNbaV0pO1xuICAgICAgICB0aGlzLnZpc2l0KG5vZGUudmFsdWVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2aXNpdEFzc2VydGlvbkV4cHJlc3Npb24obm9kZTogQXNzZXJ0aW9uRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmIChub2RlLnRvVHlwZSkgdGhpcy52aXNpdChub2RlLnRvVHlwZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdmlzaXRCaW5hcnlFeHByZXNzaW9uKG5vZGU6IEJpbmFyeUV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubGVmdCk7XG4gICAgdGhpcy52aXNpdChub2RlLnJpZ2h0KTtcbiAgfVxuXG4gIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZTogQ2FsbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGVBcmd1bWVudHMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5hcmd1bWVudHMpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0V4cHJlc3Npb24obm9kZTogQ2xhc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHZpc2l0Q29tbWFFeHByZXNzaW9uKG5vZGU6IENvbW1hRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5leHByZXNzaW9ucyk7XG4gIH1cblxuICB2aXNpdEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKG5vZGU6IEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmVsZW1lbnRFeHByZXNzaW9uKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbihub2RlOiBGdW5jdGlvbkV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjbGFyYXRpb24pO1xuICB9XG5cbiAgdmlzaXRMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIC8vIG5vZGUuXG4gIH1cblxuICB2aXNpdEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogRmxvYXRMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdEluc3RhbmNlT2ZFeHByZXNzaW9uKG5vZGU6IEluc3RhbmNlT2ZFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pc1R5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24obm9kZTogSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0U3RyaW5nTGl0ZXJhbChzdHI6IHN0cmluZywgc2luZ2xlUXVvdGVkPzogYm9vbGVhbik6IHZvaWQge31cblxuICB2aXNpdFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKG5vZGU6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0UmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24obm9kZTogUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXROZXdFeHByZXNzaW9uKG5vZGU6IE5ld0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGVBcmd1bWVudHMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5hcmd1bWVudHMpO1xuICB9XG5cbiAgdmlzaXRQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihub2RlOiBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5leHByZXNzaW9uKTtcbiAgfVxuXG4gIHZpc2l0UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGU6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5wcm9wZXJ0eSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlOiBUZXJuYXJ5RXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pZlRoZW4pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pZkVsc2UpO1xuICB9XG5cbiAgdmlzaXRVbmFyeUV4cHJlc3Npb24obm9kZTogVW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm9wZXJhbmQpO1xuICB9XG5cbiAgdmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKG5vZGU6IFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUub3BlcmFuZCk7XG4gIH1cblxuICB2aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbihub2RlOiBVbmFyeVByZWZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUub3BlcmFuZCk7XG4gIH1cblxuICB2aXNpdFN1cGVyRXhwcmVzc2lvbihub2RlOiBTdXBlckV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXRGYWxzZUV4cHJlc3Npb24obm9kZTogRmFsc2VFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0VHJ1ZUV4cHJlc3Npb24obm9kZTogVHJ1ZUV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXRUaGlzRXhwcmVzc2lvbihub2RlOiBUaGlzRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdE51bGxFeHBlcnNzaW9uKG5vZGU6IE51bGxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0Q29uc3RydWN0b3JFeHByZXNzaW9uKG5vZGU6IENvbnN0cnVjdG9yRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50OiBTdGF0ZW1lbnQpOiB2b2lkIHt9XG5cbiAgdmlzaXRCbG9ja1N0YXRlbWVudChub2RlOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50cyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXRCcmVha1N0YXRlbWVudChub2RlOiBCcmVha1N0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLmxhYmVsKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUubGFiZWwpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0Q29udGludWVTdGF0ZW1lbnQobm9kZTogQ29udGludWVTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5sYWJlbCkge1xuICAgICAgdGhpcy52aXNpdChub2RlLmxhYmVsKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbiwgaXNEZWZhdWx0PzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIGFzc2VydChcbiAgICAgIG5vZGUuaXNHZW5lcmljID8gbm9kZS50eXBlUGFyYW1ldGVycyAhPSBudWxsIDogbm9kZS50eXBlUGFyYW1ldGVycyA9PSBudWxsXG4gICAgKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0KG5vZGUuaW1wbGVtZW50c1R5cGVzKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUubWVtYmVycyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXREb1N0YXRlbWVudChub2RlOiBEb1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgdmlzaXRFbXB0eVN0YXRlbWVudChub2RlOiBFbXB0eVN0YXRlbWVudCk6IHZvaWQge31cblxuICB2aXNpdEVudW1EZWNsYXJhdGlvbihub2RlOiBFbnVtRGVjbGFyYXRpb24sIGlzRGVmYXVsdD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS52YWx1ZXMpO1xuICB9XG5cbiAgdmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbihub2RlOiBFbnVtVmFsdWVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplcikge1xuICAgICAgdGhpcy52aXNpdChub2RlLmluaXRpYWxpemVyKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudChub2RlOiBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4dGVybmFsTmFtZSk7XG4gIH1cblxuICB2aXNpdEV4cG9ydE1lbWJlcihub2RlOiBFeHBvcnRNZW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubG9jYWxOYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwb3J0ZWROYW1lKTtcbiAgfVxuXG4gIHZpc2l0RXhwb3J0U3RhdGVtZW50KG5vZGU6IEV4cG9ydFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLnBhdGgpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS5wYXRoKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLm1lbWJlcnMpO1xuICB9XG5cbiAgdmlzaXRFeHBvcnREZWZhdWx0U3RhdGVtZW50KG5vZGU6IEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjbGFyYXRpb24pO1xuICB9XG5cbiAgdmlzaXRFeHByZXNzaW9uU3RhdGVtZW50KG5vZGU6IEV4cHJlc3Npb25TdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZpZWxkRGVjbGFyYXRpb24obm9kZTogRmllbGREZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS50eXBlKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUudHlwZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmluaXRpYWxpemVyKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjb3JhdG9ycyk7XG4gIH1cblxuICB2aXNpdEZvclN0YXRlbWVudChub2RlOiBGb3JTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplcikgdGhpcy52aXNpdChub2RlLmluaXRpYWxpemVyKTtcbiAgICBpZiAobm9kZS5jb25kaXRpb24pIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIGlmIChub2RlLmluY3JlbWVudG9yKSB0aGlzLnZpc2l0KG5vZGUuaW5jcmVtZW50b3IpO1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkRlY2xhcmF0aW9uKFxuICAgIG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24sXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIGlmIChub2RlLmlzR2VuZXJpYykge1xuICAgICAgdGhpcy52aXNpdChub2RlLnR5cGVQYXJhbWV0ZXJzKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLnNpZ25hdHVyZSk7XG4gICAgdGhpcy5kZXB0aCsrO1xuICAgIGlmIChub2RlLmJvZHkpIHRoaXMudmlzaXQobm9kZS5ib2R5KTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uQ29tbW9uKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpc2l0KG5vZGUubmFtZSlcbiAgfVxuXG4gIHZpc2l0SWZTdGF0ZW1lbnQobm9kZTogSWZTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuY29uZGl0aW9uKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuaWZUcnVlKTtcbiAgICBpZiAobm9kZS5pZkZhbHNlKSB0aGlzLnZpc2l0KG5vZGUuaWZGYWxzZSk7XG4gIH1cblxuICB2aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IEltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmZvcmVpZ25OYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICB9XG5cbiAgdmlzaXRJbXBvcnRTdGF0ZW1lbnQobm9kZTogSW1wb3J0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKG5vZGUubmFtZXNwYWNlTmFtZSkgdGhpcy52aXNpdChub2RlLm5hbWVzcGFjZU5hbWUpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNsYXJhdGlvbnMpO1xuICB9XG5cbiAgdmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG5vZGU6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgLy8gdGhpcy52aXNpdChub2RlLmtleVR5cGUpO1xuICAgIC8vIHRoaXMudmlzaXQobm9kZS52YWx1ZVR5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbihcbiAgICBub2RlOiBJbnRlcmZhY2VEZWNsYXJhdGlvbixcbiAgICBpc0RlZmF1bHQ/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIHRoaXMudmlzaXQobm9kZS5pbXBsZW1lbnRzVHlwZXMpO1xuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUubWVtYmVycyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXRNZXRob2REZWNsYXJhdGlvbihub2RlOiBNZXRob2REZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIHRoaXMudmlzaXQobm9kZS5zaWduYXR1cmUpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNvcmF0b3JzKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgaWYgKG5vZGUuYm9keSkgdGhpcy52aXNpdChub2RlLmJvZHkpO1xuICAgIHRoaXMuZGVwdGgtLTtcbiAgfVxuXG4gIHZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oXG4gICAgbm9kZTogTmFtZXNwYWNlRGVjbGFyYXRpb24sXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5tZW1iZXJzKTtcbiAgfVxuXG4gIHZpc2l0UmV0dXJuU3RhdGVtZW50KG5vZGU6IFJldHVyblN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLnZhbHVlKSB0aGlzLnZpc2l0KG5vZGUudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRTd2l0Y2hDYXNlKG5vZGU6IFN3aXRjaENhc2UpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5sYWJlbCkgdGhpcy52aXNpdChub2RlLmxhYmVsKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50cyk7XG4gIH1cblxuICB2aXNpdFN3aXRjaFN0YXRlbWVudChub2RlOiBTd2l0Y2hTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuY29uZGl0aW9uKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgdGhpcy52aXNpdChub2RlLmNhc2VzKTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdFRocm93U3RhdGVtZW50KG5vZGU6IFRocm93U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLnZhbHVlKTtcbiAgfVxuXG4gIHZpc2l0VHJ5U3RhdGVtZW50KG5vZGU6IFRyeVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnRzKTtcbiAgICBpZiAobm9kZS5jYXRjaFZhcmlhYmxlKSB0aGlzLnZpc2l0KG5vZGUuY2F0Y2hWYXJpYWJsZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmNhdGNoU3RhdGVtZW50cyk7XG4gICAgdGhpcy52aXNpdChub2RlLmZpbmFsbHlTdGF0ZW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0VHlwZURlY2xhcmF0aW9uKG5vZGU6IFR5cGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjb3JhdG9ycyk7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGUpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24obm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS50eXBlKSB0aGlzLnZpc2l0KG5vZGUudHlwZSk7XG4gICAgaWYgKG5vZGUuaW5pdGlhbGl6ZXIpIHRoaXMudmlzaXQobm9kZS5pbml0aWFsaXplcik7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlU3RhdGVtZW50KG5vZGU6IFZhcmlhYmxlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNsYXJhdGlvbnMpO1xuICB9XG5cbiAgdmlzaXRXaGlsZVN0YXRlbWVudChub2RlOiBXaGlsZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50KTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdFZvaWRTdGF0ZW1lbnQobm9kZTogVm9pZFN0YXRlbWVudCk6IHZvaWQge31cblxuICB2aXNpdENvbW1lbnQobm9kZTogQ29tbWVudE5vZGUpOiB2b2lkIHt9XG5cbiAgdmlzaXREZWNvcmF0b3JOb2RlKG5vZGU6IERlY29yYXRvck5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmFyZ3VtZW50cyk7XG4gIH1cblxuICB2aXNpdFBhcmFtZXRlcihub2RlOiBQYXJhbWV0ZXJOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIGlmIChub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbikge1xuICAgICAgdGhpcy52aXNpdChub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbik7XG4gICAgfVxuICAgIGlmIChub2RlLmluaXRpYWxpemVyKSB0aGlzLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlKTtcbiAgfVxuXG59XG4iXX0= - -/***/ }), - -/***/ "./src/index.ts": -/*!**********************!*\ - !*** ./src/index.ts ***! - \**********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -// tslint:disable: no-void-expression as-types as-variables -var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); -var common_1 = __webpack_require__(/*! ../../src/common */ "../src/common.ts"); -var sourceBuilder_1 = __webpack_require__(/*! ./sourceBuilder */ "./src/sourceBuilder.ts"); -var base_1 = __webpack_require__(/*! ./base */ "./src/base.ts"); -var preamble_1 = __webpack_require__(/*! ./preamble */ "./src/preamble.ts"); -function returnsVoid(node) { - return toString(node.signature.returnType) === "void"; -} -function numOfParameters(node) { - return node.signature.parameters.length; -} -function isComment(stmt) { - return stmt.kind == ast_1.NodeKind.COMMENT; -} -function hasNearDecorator(stmt) { - return stmt.text.includes("@nearfile") || isEntry(stmt); -} -function toString(node) { - return sourceBuilder_1.ASTBuilder.build(node); -} -function isEntry(source) { - var _source = ((source.kind == ast_1.NodeKind.SOURCE) ? source : source.range.source); - return _source.sourceKind == ast_1.SourceKind.USER_ENTRY; -} -function isArrayType(type) { - return !!((type.kind == ast_1.NodeKind.NAMEDTYPE) && - toString(type).startsWith("Array") && - type.typeArguments && - type.typeArguments.length > 0); -} -function isClass(type) { - return type.kind == ast_1.NodeKind.CLASSDECLARATION; -} -function isField(mem) { - return mem.kind == ast_1.NodeKind.FIELDDECLARATION; -} -function isReference(type) { - var simpleTypes = [ - "i32", - "u32", - "bool", - "i64", - "u64", - "boolean", - ]; - return !simpleTypes.includes(toString(type)); -} -// TODO: Extract this into separate module, preferrable pluggable -var NEARBindingsBuilder = /** @class */ (function (_super) { - __extends(NEARBindingsBuilder, _super); - function NEARBindingsBuilder() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.typeMapping = { - i32: "Integer", - u32: "Integer", - i64: "String", - u64: "String", - string: "String", - bool: "Boolean", - Uint8Array: "String", - }; - _this.nonNullableTypes = ["i32", "u32", "i64", "u64", "bool", "boolean"]; - _this.sb = []; - _this.exportedClasses = new Map(); - _this.wrappedFuncs = new Set(); - return _this; - } - NEARBindingsBuilder.build = function (parser, source) { - return (new NEARBindingsBuilder().build(source)); - }; - NEARBindingsBuilder.nearFiles = function (parser) { - return parser.program.sources.filter(hasNearDecorator); - }; - NEARBindingsBuilder.prototype.visitClassDeclaration = function (node) { - if (this.exportedClasses.has(toString(node.name))) - return; - this.exportedClasses.set(toString(node.name), node); - }; - NEARBindingsBuilder.prototype.visitFunctionDeclaration = function (node) { - if (!isEntry(node) - || this.wrappedFuncs.has(toString(node.name)) - || !node.is(common_1.CommonFlags.EXPORT) - || (numOfParameters(node) == 0 && returnsVoid(node))) { - _super.prototype.visitFunctionDeclaration.call(this, node); - return; - } - // if (numOfParameters(node) > 0){ - // this.generateArgsParser(node); - // } - this.generateWrapperFunction(node); - // Change function to not be an export - node.flags = node.flags ^ common_1.CommonFlags.EXPORT; - this.wrappedFuncs.add(toString(node.name)); - }; - /* - Create a wrapper function that will be export in the function's place. - */ - NEARBindingsBuilder.prototype.generateWrapperFunction = function (func) { - var signature = func.signature; - var params = signature.parameters; - var returnType = signature.returnType; - var returnTypeName = toString(returnType).split("|").filter(function (name) { return name.trim() !== "null"; }).join("|"); - var hasNull = toString(returnType).includes("null"); - var name = func.name.symbol; - this.sb.push("\n//@ts-ignore\nfunction __wrapper_" + name + "(): void {"); - if (params.length > 0) { - this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"); - } - if (toString(returnType) !== "void") { - this.sb.push(" let result: " + toString(returnType) + " = " + name + "("); - } - else { - this.sb.push(" " + name + "("); - } - if (params.length > 0) { - this.sb[this.sb.length - 1] += (params - .map(function (param) { return createDecodeStatement(param); }) - .join(", ")); - } - this.sb[this.sb.length - 1] += ");"; - if (toString(returnType) !== "void") { - this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<" + returnTypeName + ">() || isNullable<" + returnTypeName + ">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<" + returnTypeName + ">(encoder, result" + (hasNull ? "!" : "") + ", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"); - } - this.sb.push("}\n\nexport { __wrapper_" + name + " as " + name + " }\n"); - }; - NEARBindingsBuilder.prototype.typeName = function (type) { - if (!isClass(type)) { - return sourceBuilder_1.ASTBuilder.build(type); - } - type = (type); - var className = toString(type.name); - if (type.isGeneric) { - className += "<" + type.typeParameters.map(toString).join(", ") + ">"; - } - return className; - }; - NEARBindingsBuilder.prototype.getFields = function (type) { - var _class = ((isClass(type)) - ? type - : this.exportedClasses.get(toString(type))); - if (_class == null) { - return []; - } - return _class.members - .filter(function (member) { return member.kind == ast_1.NodeKind.FIELDDECLARATION; }) - .map(function (field) { - return { name: toString(field.name), type: field.type, isGeneric: isGeneric(_class, field) }; - }); - }; - NEARBindingsBuilder.prototype.build = function (source) { - var _this = this; - this.sb = [preamble_1.preamble]; - this.visit(source); - var sourceText = source.statements.map(function (stmt) { - var str = sourceBuilder_1.ASTBuilder.build(stmt); - if (isClass(stmt)) { - var _class = stmt; - str = str.slice(0, str.lastIndexOf("}")); - var fields = _class.members.filter(isField).map(function (field) { return field; }); - if (fields.some(function (field) { return field.type == null; })) { - throw new Error("All Fields must have explict type declaration."); - } - var className = _this.typeName(_class); - str += "\n static decode(json: Uint8Array): " + className + " {\n let value = instantiate<" + className + ">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): " + className + " {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, \"argument must be Uint8Array or Json Object\");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): " + className + " {\n " + createDecodeStatements(_class).join("\n ") + "\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n " + createEncodeStatements(_class).join("\n ") + "\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"; - } - return str; - }); - return this.sb.concat(sourceText).join("\n"); - }; - return NEARBindingsBuilder; -}(base_1.BaseVisitor)); -function createDecodeStatements(_class) { - return _class.members.filter(isField).map(function (field) { - var name = toString(field.name); - return createDecodeStatement(field, "this." + name + " = obj.has(\"" + name + "\") ? ") + (": this." + name + ";"); - }); -} -function createDecodeStatement(field, setterPrefix) { - if (setterPrefix === void 0) { setterPrefix = ""; } - var T = toString(field.type); - var name = toString(field.name); - return setterPrefix + "decode<" + T + ", Obj>(obj, \"" + name + "\")"; -} -function createEncodeStatements(_class) { - return _class.members.filter(isField).map(function (field) { - var T = toString(field.type); - var name = toString(field.name); - return "encode<" + T + ">(encoder, this." + name + ", \"" + name + "\");"; - }); -} -// TODO: Make work for non-simple generics e.g. field: Array -function isGeneric(_class, field) { - if (_class.typeParameters == null) { - return false; - } - return _class.typeParameters.some(function (param) { return toString(param.name) == toString(field.type); }); -} -function afterParse(parser, writeFile, baseDir) { - var files = NEARBindingsBuilder.nearFiles(parser); - files.forEach(function (source) { - var writeOut = source.text.substr(0, source.text.indexOf("\n")).includes("out"); - // Remove from logs in parser - parser.donelog.delete(source.internalPath); - parser.seenlog.delete(source.internalPath); - // Remove from programs sources - parser.program.sources = parser.program.sources.filter(function (_source) { return _source !== source; }); - // Build new Source - var sourceText = NEARBindingsBuilder.build(parser, source); - if (writeOut) { - writeFile("out/" + source.normalizedPath, sourceText, baseDir); - } - // Parses file and any new imports added to the source - parser.parseFile(sourceText, (isEntry(source) ? "" : "./") + source.normalizedPath, isEntry(source)); - }); -} -exports.afterParse = afterParse; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQTJEO0FBQzNELHFDQWN1QjtBQUN2QiwyQ0FBK0M7QUFHL0MsaURBQTZDO0FBQzdDLCtCQUFxQztBQUNyQyx1Q0FBc0M7QUFRdEMsU0FBUyxXQUFXLENBQUMsSUFBeUI7SUFDNUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUM7QUFDeEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLElBQXlCO0lBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFlO0lBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxjQUFRLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQVk7SUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVU7SUFDMUIsT0FBTywwQkFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsTUFBcUI7SUFDcEMsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksY0FBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEYsT0FBTyxPQUFPLENBQUMsVUFBVSxJQUFJLGdCQUFVLENBQUMsVUFBVSxDQUFDO0FB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QixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0QsSUFBSSxRQUFRLEVBQUU7WUFDYixTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQy9EO1FBQ0Qsc0RBQXNEO1FBQ3RELE1BQU0sQ0FBQyxTQUFTLENBQ2QsVUFBVSxFQUNWLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQ3JELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FDaEIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUwsQ0FBQztBQXhCRCxnQ0F3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTogbm8tdm9pZC1leHByZXNzaW9uIGFzLXR5cGVzIGFzLXZhcmlhYmxlc1xuaW1wb3J0IHtcbiAgU291cmNlLFxuICBOb2RlS2luZCxcbiAgQ2xhc3NEZWNsYXJhdGlvbixcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgVHlwZU5vZGUsXG4gIEZpZWxkRGVjbGFyYXRpb24sXG4gIFN0YXRlbWVudCxcbiAgTm9kZSxcbiAgTmFtZWRUeXBlTm9kZSxcbiAgU291cmNlS2luZCxcbiAgRGVjbGFyYXRpb25TdGF0ZW1lbnQsXG4gIFR5cGVOYW1lLFxuICBQYXJhbWV0ZXJOb2RlXG59IGZyb20gXCIuLi8uLi9zcmMvYXN0XCI7XG5pbXBvcnQgeyBDb21tb25GbGFncyB9IGZyb20gXCIuLi8uLi9zcmMvY29tbW9uXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi9tb2NrVHlwZXNcIjtcblxuaW1wb3J0IHsgQVNUQnVpbGRlciB9IGZyb20gXCIuL3NvdXJjZUJ1aWxkZXJcIjtcbmltcG9ydCB7IEJhc2VWaXNpdG9yIH0gZnJvbSBcIi4vYmFzZVwiO1xuaW1wb3J0IHsgcHJlYW1ibGUgfSBmcm9tIFwiLi9wcmVhbWJsZVwiO1xuXG5pbnRlcmZhY2UgU2ltcGxlRmllbGQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFR5cGVOb2RlO1xuICBpc0dlbmVyaWM6IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIHJldHVybnNWb2lkKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHRvU3RyaW5nKG5vZGUuc2lnbmF0dXJlLnJldHVyblR5cGUpID09PSBcInZvaWRcIjtcbn1cblxuZnVuY3Rpb24gbnVtT2ZQYXJhbWV0ZXJzKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiBudW1iZXIge1xuICByZXR1cm4gbm9kZS5zaWduYXR1cmUucGFyYW1ldGVycy5sZW5ndGg7XG59XG5cbmZ1bmN0aW9uIGlzQ29tbWVudChzdG10OiBTdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0bXQua2luZCA9PSBOb2RlS2luZC5DT01NRU5UO1xufVxuXG5mdW5jdGlvbiBoYXNOZWFyRGVjb3JhdG9yKHN0bXQ6IFNvdXJjZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RtdC50ZXh0LmluY2x1ZGVzKFwiQG5lYXJmaWxlXCIpIHx8IGlzRW50cnkoc3RtdCk7XG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nKG5vZGU6IE5vZGUpOiBzdHJpbmcge1xuICByZXR1cm4gQVNUQnVpbGRlci5idWlsZChub2RlKTtcbn1cblxuZnVuY3Rpb24gaXNFbnRyeShzb3VyY2U6IFNvdXJjZSB8IE5vZGUpOiBib29sZWFuIHtcbiAgbGV0IF9zb3VyY2UgPSA8U291cmNlPigoc291cmNlLmtpbmQgPT0gTm9kZUtpbmQuU09VUkNFKSA/IHNvdXJjZSA6IHNvdXJjZS5yYW5nZS5zb3VyY2UpO1xuICByZXR1cm4gX3NvdXJjZS5zb3VyY2VLaW5kID09IFNvdXJjZUtpbmQuVVNFUl9FTlRSWTtcbn1cblxuZnVuY3Rpb24gaXNBcnJheVR5cGUodHlwZTogVHlwZU5vZGUgfCBDbGFzc0RlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiAhIShcbiAgICAodHlwZS5raW5kID09IE5vZGVLaW5kLk5BTUVEVFlQRSkgJiZcbiAgICB0b1N0cmluZyh0eXBlKS5zdGFydHNXaXRoKFwiQXJyYXlcIikgJiZcbiAgICAoPE5hbWVkVHlwZU5vZGU+dHlwZSkudHlwZUFyZ3VtZW50cyAmJlxuICAgICg8TmFtZWRUeXBlTm9kZT50eXBlKS50eXBlQXJndW1lbnRzIS5sZW5ndGggPiAwXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzQ2xhc3ModHlwZTogTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZS5raW5kID09IE5vZGVLaW5kLkNMQVNTREVDTEFSQVRJT047XG59XG5cbmZ1bmN0aW9uIGlzRmllbGQobWVtOiBEZWNsYXJhdGlvblN0YXRlbWVudCkge1xuICByZXR1cm4gbWVtLmtpbmQgPT0gTm9kZUtpbmQuRklFTERERUNMQVJBVElPTjtcbn1cblxuZnVuY3Rpb24gaXNSZWZlcmVuY2UodHlwZTogVHlwZU5vZGUpOiBib29sZWFuIHtcbiAgbGV0IHNpbXBsZVR5cGVzID0gW1xuICAgIFwiaTMyXCIsXG4gICAgXCJ1MzJcIixcbiAgICBcImJvb2xcIixcbiAgICBcImk2NFwiLFxuICAgIFwidTY0XCIsXG4gICAgXCJib29sZWFuXCIsXG4gIF07XG4gIHJldHVybiAhc2ltcGxlVHlwZXMuaW5jbHVkZXModG9TdHJpbmcodHlwZSkpO1xufVxuXG4vLyBUT0RPOiBFeHRyYWN0IHRoaXMgaW50byBzZXBhcmF0ZSBtb2R1bGUsIHByZWZlcnJhYmxlIHBsdWdnYWJsZVxuY2xhc3MgTkVBUkJpbmRpbmdzQnVpbGRlciBleHRlbmRzIEJhc2VWaXNpdG9yIHtcbiAgcHJpdmF0ZSB0eXBlTWFwcGluZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBpMzI6IFwiSW50ZWdlclwiLFxuICAgIHUzMjogXCJJbnRlZ2VyXCIsXG4gICAgaTY0OiBcIlN0cmluZ1wiLFxuICAgIHU2NDogXCJTdHJpbmdcIixcbiAgICBzdHJpbmc6IFwiU3RyaW5nXCIsXG4gICAgYm9vbDogXCJCb29sZWFuXCIsXG4gICAgVWludDhBcnJheTogXCJTdHJpbmdcIixcbiAgfTtcblxuICBwcml2YXRlIG5vbk51bGxhYmxlVHlwZXMgPSBbXCJpMzJcIiwgXCJ1MzJcIiwgXCJpNjRcIiwgXCJ1NjRcIiwgXCJib29sXCIsIFwiYm9vbGVhblwiXTtcblxuICBwcml2YXRlIHNiOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGV4cG9ydGVkQ2xhc3NlczogTWFwPHN0cmluZywgQ2xhc3NEZWNsYXJhdGlvbj4gPSBuZXcgTWFwKCk7XG4gIHdyYXBwZWRGdW5jczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgc3RhdGljIGJ1aWxkKHBhcnNlcjogUGFyc2VyLCBzb3VyY2U6IFNvdXJjZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChuZXcgTkVBUkJpbmRpbmdzQnVpbGRlcigpLmJ1aWxkKHNvdXJjZSkpO1xuICB9XG5cbiAgc3RhdGljIG5lYXJGaWxlcyhwYXJzZXI6IFBhcnNlcik6IFNvdXJjZVtdIHtcbiAgICByZXR1cm4gcGFyc2VyLnByb2dyYW0uc291cmNlcy5maWx0ZXIoaGFzTmVhckRlY29yYXRvcik7XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5oYXModG9TdHJpbmcobm9kZS5uYW1lKSkpIHJldHVybjtcbiAgICB0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5zZXQodG9TdHJpbmcobm9kZS5uYW1lKSwgbm9kZSk7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZTogRnVuY3Rpb25EZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIGlmICghaXNFbnRyeShub2RlKVxuICAgICAgICB8fCB0aGlzLndyYXBwZWRGdW5jcy5oYXModG9TdHJpbmcobm9kZS5uYW1lKSlcbiAgICAgICAgfHwgIW5vZGUuaXMoQ29tbW9uRmxhZ3MuRVhQT1JUKVxuICAgICAgICB8fCAobnVtT2ZQYXJhbWV0ZXJzKG5vZGUpID09IDAgJiYgcmV0dXJuc1ZvaWQobm9kZSkpXG4gICAgICAgICkge1xuICAgICAgICBzdXBlci52aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gaWYgKG51bU9mUGFyYW1ldGVycyhub2RlKSA+IDApe1xuICAgIC8vICAgdGhpcy5nZW5lcmF0ZUFyZ3NQYXJzZXIobm9kZSk7XG4gICAgLy8gfVxuICAgIHRoaXMuZ2VuZXJhdGVXcmFwcGVyRnVuY3Rpb24obm9kZSk7XG4gICAgLy8gQ2hhbmdlIGZ1bmN0aW9uIHRvIG5vdCBiZSBhbiBleHBvcnRcbiAgICBub2RlLmZsYWdzID0gbm9kZS5mbGFncyBeIENvbW1vbkZsYWdzLkVYUE9SVDtcbiAgICB0aGlzLndyYXBwZWRGdW5jcy5hZGQodG9TdHJpbmcobm9kZS5uYW1lKSk7XG4gIH1cblxuICAvKlxuICBDcmVhdGUgYSB3cmFwcGVyIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleHBvcnQgaW4gdGhlIGZ1bmN0aW9uJ3MgcGxhY2UuXG4gICovXG4gIHByaXZhdGUgZ2VuZXJhdGVXcmFwcGVyRnVuY3Rpb24oZnVuYzogRnVuY3Rpb25EZWNsYXJhdGlvbikge1xuICAgIGxldCBzaWduYXR1cmUgPSBmdW5jLnNpZ25hdHVyZTtcbiAgICBsZXQgcGFyYW1zID0gc2lnbmF0dXJlLnBhcmFtZXRlcnM7XG4gICAgbGV0IHJldHVyblR5cGUgPSBzaWduYXR1cmUucmV0dXJuVHlwZTtcbiAgICBsZXQgcmV0dXJuVHlwZU5hbWUgPSB0b1N0cmluZyhyZXR1cm5UeXBlKS5zcGxpdChcInxcIikuZmlsdGVyKG5hbWUgPT4gbmFtZS50cmltKCkgIT09IFwibnVsbFwiKS5qb2luKFwifFwiKTtcbiAgICBsZXQgaGFzTnVsbCA9IHRvU3RyaW5nKHJldHVyblR5cGUpLmluY2x1ZGVzKFwibnVsbFwiKTtcbiAgICBsZXQgbmFtZSA9IGZ1bmMubmFtZS5zeW1ib2w7XG4gICAgdGhpcy5zYi5wdXNoKGBcbi8vQHRzLWlnbm9yZVxuZnVuY3Rpb24gX193cmFwcGVyXyR7bmFtZX0oKTogdm9pZCB7YCk7XG4gICBpZiAocGFyYW1zLmxlbmd0aCA+IDApe1xuICAgICB0aGlzLnNiLnB1c2goXG5gICAvLyBSZWFkaW5nIGlucHV0IGJ5dGVzLlxuICBpbnB1dCgwKTtcbiAgbGV0IGpzb25fbGVuID0gcmVnaXN0ZXJfbGVuKDApO1xuICBpZiAoanNvbl9sZW4gPT0gVTMyLk1BWF9WQUxVRSkge1xuICAgIHBhbmljKCk7XG4gIH1cbiAgbGV0IGpzb24gPSBuZXcgVWludDhBcnJheShqc29uX2xlbiBhcyB1MzIpO1xuICByZWFkX3JlZ2lzdGVyKDAsIDx1c2l6ZT5qc29uLmJ1ZmZlcik7XG4gIGNvbnN0IG9iajogT2JqID0gSlNPTi5wYXJzZShqc29uKTtgKTtcbiAgICB9XG4gICAgaWYgKHRvU3RyaW5nKHJldHVyblR5cGUpICE9PSBcInZvaWRcIikge1xuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgbGV0IHJlc3VsdDogJHt0b1N0cmluZyhyZXR1cm5UeXBlKX0gPSAke25hbWV9KGApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNiLnB1c2goXG5gICAke25hbWV9KGApO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2JbdGhpcy5zYi5sZW5ndGggLSAxXSArPSAoXG4gICAgICAgIHBhcmFtc1xuICAgICAgICAgIC5tYXAoKHBhcmFtKSA9PiBjcmVhdGVEZWNvZGVTdGF0ZW1lbnQocGFyYW0pKVxuICAgICAgICAgIC5qb2luKFwiLCBcIilcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuc2JbdGhpcy5zYi5sZW5ndGggLSAxXSArPSBcIik7XCI7XG4gICAgaWYgKHRvU3RyaW5nKHJldHVyblR5cGUpICE9PSBcInZvaWRcIikge1xuICAgICAgdGhpcy5zYi5wdXNoKGBcbiAgbGV0IGVuY29kZXIgPSBuZXcgSlNPTkVuY29kZXIoKTtcbiAgaWYgKChpc1N0cmluZzwke3JldHVyblR5cGVOYW1lfT4oKSB8fCBpc051bGxhYmxlPCR7cmV0dXJuVHlwZU5hbWV9PigpKSAmJiByZXN1bHQgPT0gbnVsbCkge1xuICAgIGVuY29kZXIuc2V0TnVsbChudWxsKTtcbiAgfSBlbHNlIHtcbiAgICBlbmNvZGU8JHtyZXR1cm5UeXBlTmFtZX0+KGVuY29kZXIsIHJlc3VsdCR7aGFzTnVsbCA/IFwiIVwiIDogXCJcIn0sIG51bGwpO1xuICB9XG4gIGxldCB2YWw6IFVpbnQ4QXJyYXkgPSBlbmNvZGVyLnNlcmlhbGl6ZSgpO1xuICB2YWx1ZV9yZXR1cm4odmFsLmJ5dGVMZW5ndGgsIDx1c2l6ZT52YWwuYnVmZmVyKTtgKTtcbiAgICB9XG4gICAgdGhpcy5zYi5wdXNoKGB9XG5cbmV4cG9ydCB7IF9fd3JhcHBlcl8ke25hbWV9IGFzICR7bmFtZX0gfVxuYCk7XG4gIH1cbiAgXG4gIHByaXZhdGUgdHlwZU5hbWUodHlwZTogVHlwZU5vZGUgfCBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzQ2xhc3ModHlwZSkpIHtcbiAgICAgIHJldHVybiBBU1RCdWlsZGVyLmJ1aWxkKHR5cGUpO1xuICAgIH1cbiAgICB0eXBlID0gPENsYXNzRGVjbGFyYXRpb24+KHR5cGUpO1xuICAgIGxldCBjbGFzc05hbWUgPSB0b1N0cmluZyh0eXBlLm5hbWUpO1xuICAgIGlmICh0eXBlLmlzR2VuZXJpYykge1xuICAgICAgY2xhc3NOYW1lICs9IFwiPFwiICsgdHlwZS50eXBlUGFyYW1ldGVycyEubWFwKHRvU3RyaW5nKS5qb2luKFwiLCBcIikgKyBcIj5cIjtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRzKHR5cGU6IFR5cGVOb2RlIHwgQ2xhc3NEZWNsYXJhdGlvbik6IFNpbXBsZUZpZWxkW10ge1xuICAgIGxldCBfY2xhc3MgPSA8Q2xhc3NEZWNsYXJhdGlvbj4gKChpc0NsYXNzKHR5cGUpKVxuICAgICAgICA/IHR5cGVcbiAgICAgICAgOiB0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5nZXQodG9TdHJpbmcodHlwZSkpKTtcbiAgICBpZiAoX2NsYXNzID09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gX2NsYXNzLm1lbWJlcnNcbiAgICAgIC5maWx0ZXIobWVtYmVyID0+IG1lbWJlci5raW5kID09IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT04pXG4gICAgICAubWFwKFxuICAgICAgICAoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24pOiBTaW1wbGVGaWVsZCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgbmFtZTogdG9TdHJpbmcoZmllbGQubmFtZSksIHR5cGU6IGZpZWxkLnR5cGUhLCBpc0dlbmVyaWM6IGlzR2VuZXJpYyhfY2xhc3MsIGZpZWxkKX07XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBidWlsZChzb3VyY2U6IFNvdXJjZSk6IHN0cmluZyB7XG4gICAgICB0aGlzLnNiID0gW3ByZWFtYmxlXTtcbiAgICAgIHRoaXMudmlzaXQoc291cmNlKTtcbiAgICAgIGxldCBzb3VyY2VUZXh0ID0gc291cmNlLnN0YXRlbWVudHMubWFwKHN0bXQgPT4ge1xuICAgICAgICBsZXQgc3RyID0gQVNUQnVpbGRlci5idWlsZChzdG10KTtcbiAgICAgICAgaWYgKGlzQ2xhc3Moc3RtdCkpIHtcbiAgICAgICAgICBsZXQgX2NsYXNzID0gPENsYXNzRGVjbGFyYXRpb24+IHN0bXQ7XG4gICAgICAgICAgc3RyID0gc3RyLnNsaWNlKDAsIHN0ci5sYXN0SW5kZXhPZihcIn1cIikpO1xuICAgICAgICAgIGxldCBmaWVsZHMgPSBfY2xhc3MubWVtYmVycy5maWx0ZXIoaXNGaWVsZCkubWFwKChmaWVsZDogRmllbGREZWNsYXJhdGlvbikgPT4gZmllbGQpO1xuICAgICAgICAgIGlmIChmaWVsZHMuc29tZShmaWVsZCA9PiBmaWVsZC50eXBlID09IG51bGwpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbGwgRmllbGRzIG11c3QgaGF2ZSBleHBsaWN0IHR5cGUgZGVjbGFyYXRpb24uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgY2xhc3NOYW1lID0gdGhpcy50eXBlTmFtZShfY2xhc3MpO1xuICAgICAgICAgIHN0ciArPSBgXG4gIHN0YXRpYyBkZWNvZGUoanNvbjogVWludDhBcnJheSk6ICR7Y2xhc3NOYW1lfSB7XG4gICAgbGV0IHZhbHVlID0gaW5zdGFudGlhdGU8JHtjbGFzc05hbWV9PigpOyAvLyBBbGxvY2F0ZSB3aXRob3V0IGNvbnN0cnVjdG9yXG4gICAgcmV0dXJuIHZhbHVlLmRlY29kZTxVaW50OEFycmF5Pihqc29uKTtcbiAgfVxuXG4gIGRlY29kZTxWID0gVWludDhBcnJheT4oYnVmOiBWKTogJHtjbGFzc05hbWV9IHtcbiAgICBsZXQganNvbjogT2JqO1xuICAgIGlmIChidWYgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICBqc29uID0gSlNPTi5wYXJzZShidWYpO1xuICAgIH1lbHNlIHtcbiAgICAgIGFzc2VydChidWYgaW5zdGFuY2VvZiBPYmosIFwiYXJndW1lbnQgbXVzdCBiZSBVaW50OEFycmF5IG9yIEpzb24gT2JqZWN0XCIpO1xuICAgICAganNvbiA9IDxPYmo+IGJ1ZjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZShqc29uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlY29kZShvYmo6IE9iaik6ICR7Y2xhc3NOYW1lfSB7XG4gICAgJHtjcmVhdGVEZWNvZGVTdGF0ZW1lbnRzKF9jbGFzcykuam9pbihcIlxcbiAgICBcIil9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlbmNvZGUoX2VuY29kZXI6IEpTT05FbmNvZGVyIHwgbnVsbCA9IG51bGwsIG5hbWU6IHN0cmluZyB8IG51bGwgPSBcIlwiKTogSlNPTkVuY29kZXIge1xuICAgIGxldCBlbmNvZGVyID0gKF9lbmNvZGVyICE9IG51bGwgPyBfZW5jb2RlciA6IG5ldyBKU09ORW5jb2RlcigpKSE7XG4gICAgZW5jb2Rlci5wdXNoT2JqZWN0KG5hbWUpO1xuICAgICR7Y3JlYXRlRW5jb2RlU3RhdGVtZW50cyhfY2xhc3MpLmpvaW4oXCJcXG4gICAgXCIpfVxuICAgIGVuY29kZXIucG9wT2JqZWN0KCk7XG4gICAgcmV0dXJuIGVuY29kZXJcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5lbmNvZGUoKS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVuY29kZSgpLnRvU3RyaW5nKCk7XG4gIH1cbn1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRoaXMuc2IuY29uY2F0KHNvdXJjZVRleHQpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY29kZVN0YXRlbWVudHMoX2NsYXNzOiBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nW10ge1xuICByZXR1cm4gX2NsYXNzLm1lbWJlcnMuZmlsdGVyKGlzRmllbGQpLm1hcCgoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24pOiBzdHJpbmcgID0+IHtcbiAgICBjb25zdCBuYW1lID0gdG9TdHJpbmcoZmllbGQubmFtZSk7XG4gICAgcmV0dXJuIGNyZWF0ZURlY29kZVN0YXRlbWVudChmaWVsZCwgYHRoaXMuJHtuYW1lfSA9IG9iai5oYXMoXCIke25hbWV9XCIpID8gYCkgKyBgOiB0aGlzLiR7bmFtZX07YFxuICB9KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNvZGVTdGF0ZW1lbnQoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24gfCBQYXJhbWV0ZXJOb2RlLCBzZXR0ZXJQcmVmaXg6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xuICBsZXQgVCA9IHRvU3RyaW5nKGZpZWxkLnR5cGUhKTtcbiAgbGV0IG5hbWUgPSB0b1N0cmluZyhmaWVsZC5uYW1lKTtcbiAgcmV0dXJuIGAke3NldHRlclByZWZpeH1kZWNvZGU8JHtUfSwgT2JqPihvYmosIFwiJHtuYW1lfVwiKWA7XG5cbn1cblxuZnVuY3Rpb24gY3JlYXRlRW5jb2RlU3RhdGVtZW50cyhfY2xhc3M6IENsYXNzRGVjbGFyYXRpb24pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBfY2xhc3MubWVtYmVycy5maWx0ZXIoaXNGaWVsZCkubWFwKFxuICAgIChmaWVsZDogRmllbGREZWNsYXJhdGlvbik6IHN0cmluZyAgPT4ge1xuICAgICAgbGV0IFQgPSB0b1N0cmluZyhmaWVsZC50eXBlISk7XG4gICAgICBsZXQgbmFtZSA9IHRvU3RyaW5nKGZpZWxkLm5hbWUpO1xuICAgICAgcmV0dXJuIGBlbmNvZGU8JHtUfT4oZW5jb2RlciwgdGhpcy4ke25hbWV9LCBcIiR7bmFtZX1cIik7YDtcbiAgICB9XG4gICk7XG59XG4vLyBUT0RPOiBNYWtlIHdvcmsgZm9yIG5vbi1zaW1wbGUgZ2VuZXJpY3MgZS5nLiBmaWVsZDogQXJyYXk8VD5cbmZ1bmN0aW9uIGlzR2VuZXJpYyhfY2xhc3M6IENsYXNzRGVjbGFyYXRpb24sIGZpZWxkOiBGaWVsZERlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gIGlmIChfY2xhc3MudHlwZVBhcmFtZXRlcnMgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gX2NsYXNzLnR5cGVQYXJhbWV0ZXJzLnNvbWUocGFyYW0gPT4gdG9TdHJpbmcocGFyYW0ubmFtZSkgPT0gdG9TdHJpbmcoZmllbGQudHlwZSEpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFmdGVyUGFyc2UocGFyc2VyOiBQYXJzZXIsIHdyaXRlRmlsZTogRmlsZVdyaXRlciwgYmFzZURpcjogc3RyaW5nKTogdm9pZCB7XG4gIGxldCBmaWxlcyA9IE5FQVJCaW5kaW5nc0J1aWxkZXIubmVhckZpbGVzKHBhcnNlcik7XG4gIGZpbGVzLmZvckVhY2goc291cmNlID0+IHtcbiAgICBsZXQgd3JpdGVPdXQgPSBzb3VyY2UudGV4dC5zdWJzdHIoMCwgc291cmNlLnRleHQuaW5kZXhPZihcIlxcblwiKSkuaW5jbHVkZXMoXCJvdXRcIik7XG4gICAgLy8gUmVtb3ZlIGZyb20gbG9ncyBpbiBwYXJzZXJcbiAgICBwYXJzZXIuZG9uZWxvZy5kZWxldGUoc291cmNlLmludGVybmFsUGF0aCk7XG4gICAgcGFyc2VyLnNlZW5sb2cuZGVsZXRlKHNvdXJjZS5pbnRlcm5hbFBhdGgpO1xuICAgIC8vIFJlbW92ZSBmcm9tIHByb2dyYW1zIHNvdXJjZXNcbiAgICBwYXJzZXIucHJvZ3JhbS5zb3VyY2VzID0gcGFyc2VyLnByb2dyYW0uc291cmNlcy5maWx0ZXIoXG4gICAgICAoX3NvdXJjZTogU291cmNlKSA9PiBfc291cmNlICE9PSBzb3VyY2VcbiAgICApO1xuICAgIC8vIEJ1aWxkIG5ldyBTb3VyY2VcbiAgICBsZXQgc291cmNlVGV4dCA9IE5FQVJCaW5kaW5nc0J1aWxkZXIuYnVpbGQocGFyc2VyLCBzb3VyY2UpO1xuICAgIGlmICh3cml0ZU91dCkge1xuICAgICB3cml0ZUZpbGUoXCJvdXQvXCIgKyBzb3VyY2Uubm9ybWFsaXplZFBhdGgsIHNvdXJjZVRleHQsIGJhc2VEaXIpO1xuICAgIH1cbiAgICAvLyBQYXJzZXMgZmlsZSBhbmQgYW55IG5ldyBpbXBvcnRzIGFkZGVkIHRvIHRoZSBzb3VyY2VcbiAgICBwYXJzZXIucGFyc2VGaWxlKFxuICAgICAgc291cmNlVGV4dCxcbiAgICAgIChpc0VudHJ5KHNvdXJjZSkgPyBcIlwiIDogXCIuL1wiKSArIHNvdXJjZS5ub3JtYWxpemVkUGF0aCxcbiAgICAgIGlzRW50cnkoc291cmNlKVxuICAgICk7XG4gIH0pO1xuXG59XG4iXX0= - -/***/ }), - -/***/ "./src/preamble.ts": -/*!*************************!*\ - !*** ./src/preamble.ts ***! - \*************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -exports.preamble = "import { base64 } from \"near-runtime-ts\";\nimport { JSONEncoder } from \"assemblyscript-json\";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\n"; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYW1ibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJlYW1ibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDYSxRQUFBLFFBQVEsR0FBRyw4TEFHdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNvbnN0IHByZWFtYmxlID0gYGltcG9ydCB7IGJhc2U2NCB9IGZyb20gXCJuZWFyLXJ1bnRpbWUtdHNcIjtcbmltcG9ydCB7IEpTT05FbmNvZGVyIH0gZnJvbSBcImFzc2VtYmx5c2NyaXB0LWpzb25cIjtcbmltcG9ydCB7IEpTT05EZWNvZGVyLCBUaHJvd2luZ0pTT05IYW5kbGVyLCBEZWNvZGVyU3RhdGUgfSBmcm9tIFwiYXNzZW1ibHlzY3JpcHQtanNvblwiO1xuYDtcbiJdfQ== - -/***/ }), - -/***/ "./src/sourceBuilder.ts": -/*!******************************!*\ - !*** ./src/sourceBuilder.ts ***! - \******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); -__webpack_require__(/*! ../../std/portable/index */ "../std/portable/index.js"); -__webpack_require__(/*! ../../src/glue/js/float */ "../src/glue/js/float.js"); -__webpack_require__(/*! ../../src/glue/js/i64 */ "../src/glue/js/i64.js"); -var common_1 = __webpack_require__(/*! ../../src/common */ "../src/common.ts"); -var util_1 = __webpack_require__(/*! ../../src/util */ "../src/util/index.ts"); -var tokenizer_1 = __webpack_require__(/*! ../../src/tokenizer */ "../src/tokenizer.ts"); -/** An AST builder. */ -var ASTBuilder = /** @class */ (function () { - function ASTBuilder() { - this.sb = []; - this.indentLevel = 0; - } - /** Rebuilds the textual source from the specified AST, as far as possible. */ - ASTBuilder.build = function (node) { - var builder = new ASTBuilder(); - builder.visitNode(node); - return builder.finish(); - }; - ASTBuilder.prototype.visitNode = function (node) { - switch (node.kind) { - case ast_1.NodeKind.SOURCE: { - this.visitSource(node); - break; - } - // types - case ast_1.NodeKind.NAMEDTYPE: { - this.visitNamedTypeNode(node); - break; - } - case ast_1.NodeKind.FUNCTIONTYPE: { - this.visitFunctionTypeNode(node); - break; - } - case ast_1.NodeKind.TYPEPARAMETER: { - this.visitTypeParameter(node); - break; - } - // expressions - case ast_1.NodeKind.FALSE: - case ast_1.NodeKind.NULL: - case ast_1.NodeKind.SUPER: - case ast_1.NodeKind.THIS: - case ast_1.NodeKind.TRUE: - case ast_1.NodeKind.CONSTRUCTOR: - case ast_1.NodeKind.IDENTIFIER: { - this.visitIdentifierExpression(node); - break; - } - case ast_1.NodeKind.ASSERTION: { - this.visitAssertionExpression(node); - break; - } - case ast_1.NodeKind.BINARY: { - this.visitBinaryExpression(node); - break; - } - case ast_1.NodeKind.CALL: { - this.visitCallExpression(node); - break; - } - case ast_1.NodeKind.CLASS: { - this.visitClassExpression(node); - break; - } - case ast_1.NodeKind.COMMA: { - this.visitCommaExpression(node); - break; - } - case ast_1.NodeKind.ELEMENTACCESS: { - this.visitElementAccessExpression(node); - break; - } - case ast_1.NodeKind.FUNCTION: { - this.visitFunctionExpression(node); - break; - } - case ast_1.NodeKind.INSTANCEOF: { - this.visitInstanceOfExpression(node); - break; - } - case ast_1.NodeKind.LITERAL: { - this.visitLiteralExpression(node); - break; - } - case ast_1.NodeKind.NEW: { - this.visitNewExpression(node); - break; - } - case ast_1.NodeKind.PARENTHESIZED: { - this.visitParenthesizedExpression(node); - break; - } - case ast_1.NodeKind.PROPERTYACCESS: { - this.visitPropertyAccessExpression(node); - break; - } - case ast_1.NodeKind.TERNARY: { - this.visitTernaryExpression(node); - break; - } - case ast_1.NodeKind.UNARYPOSTFIX: { - this.visitUnaryPostfixExpression(node); - break; - } - case ast_1.NodeKind.UNARYPREFIX: { - this.visitUnaryPrefixExpression(node); - break; - } - // statements - case ast_1.NodeKind.BLOCK: { - this.visitBlockStatement(node); - break; - } - case ast_1.NodeKind.BREAK: { - this.visitBreakStatement(node); - break; - } - case ast_1.NodeKind.CONTINUE: { - this.visitContinueStatement(node); - break; - } - case ast_1.NodeKind.DO: { - this.visitDoStatement(node); - break; - } - case ast_1.NodeKind.EMPTY: { - this.visitEmptyStatement(node); - break; - } - case ast_1.NodeKind.EXPORT: { - this.visitExportStatement(node); - break; - } - case ast_1.NodeKind.EXPORTDEFAULT: { - this.visitExportDefaultStatement(node); - break; - } - case ast_1.NodeKind.EXPORTIMPORT: { - this.visitExportImportStatement(node); - break; - } - case ast_1.NodeKind.EXPRESSION: { - this.visitExpressionStatement(node); - break; - } - case ast_1.NodeKind.FOR: { - this.visitForStatement(node); - break; - } - case ast_1.NodeKind.IF: { - this.visitIfStatement(node); - break; - } - case ast_1.NodeKind.IMPORT: { - this.visitImportStatement(node); - break; - } - case ast_1.NodeKind.RETURN: { - this.visitReturnStatement(node); - break; - } - case ast_1.NodeKind.SWITCH: { - this.visitSwitchStatement(node); - break; - } - case ast_1.NodeKind.THROW: { - this.visitThrowStatement(node); - break; - } - case ast_1.NodeKind.TRY: { - this.visitTryStatement(node); - break; - } - case ast_1.NodeKind.VARIABLE: { - this.visitVariableStatement(node); - break; - } - case ast_1.NodeKind.WHILE: { - this.visitWhileStatement(node); - break; - } - // declaration statements - case ast_1.NodeKind.CLASSDECLARATION: { - this.visitClassDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMDECLARATION: { - this.visitEnumDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMVALUEDECLARATION: { - this.visitEnumValueDeclaration(node); - break; - } - case ast_1.NodeKind.FIELDDECLARATION: { - this.visitFieldDeclaration(node); - break; - } - case ast_1.NodeKind.FUNCTIONDECLARATION: { - this.visitFunctionDeclaration(node); - break; - } - case ast_1.NodeKind.IMPORTDECLARATION: { - this.visitImportDeclaration(node); - break; - } - case ast_1.NodeKind.INDEXSIGNATUREDECLARATION: { - this.visitIndexSignatureDeclaration(node); - break; - } - case ast_1.NodeKind.INTERFACEDECLARATION: { - this.visitInterfaceDeclaration(node); - break; - } - case ast_1.NodeKind.METHODDECLARATION: { - this.visitMethodDeclaration(node); - break; - } - case ast_1.NodeKind.NAMESPACEDECLARATION: { - this.visitNamespaceDeclaration(node); - break; - } - case ast_1.NodeKind.TYPEDECLARATION: { - this.visitTypeDeclaration(node); - break; - } - case ast_1.NodeKind.VARIABLEDECLARATION: { - this.visitVariableDeclaration(node); - break; - } - // other - case ast_1.NodeKind.DECORATOR: { - this.serializeDecorator(node); - break; - } - case ast_1.NodeKind.EXPORTMEMBER: { - this.visitExportMember(node); - break; - } - case ast_1.NodeKind.PARAMETER: { - this.serializeParameter(node); - break; - } - case ast_1.NodeKind.SWITCHCASE: { - this.visitSwitchCase(node); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitSource = function (source) { - var statements = source.statements; - for (var i = 0, k = statements.length; i < k; ++i) { - this.visitNodeAndTerminate(statements[i]); - } - }; - // types - ASTBuilder.prototype.visitTypeNode = function (node) { - switch (node.kind) { - case ast_1.NodeKind.NAMEDTYPE: { - this.visitNamedTypeNode(node); - break; - } - case ast_1.NodeKind.FUNCTIONTYPE: { - this.visitFunctionTypeNode(node); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitTypeName = function (node) { - this.visitIdentifierExpression(node.identifier); - var sb = this.sb; - var current = node.next; - while (current) { - sb.push("."); - this.visitIdentifierExpression(current.identifier); - current = current.next; - } - }; - ASTBuilder.prototype.visitNamedTypeNode = function (node) { - this.visitTypeName(node.name); - var typeArguments = node.typeArguments; - if (typeArguments) { - var numTypeArguments = typeArguments.length; - var sb = this.sb; - if (numTypeArguments) { - sb.push("<"); - this.visitTypeNode(typeArguments[0]); - for (var i = 1; i < numTypeArguments; ++i) { - sb.push(", "); - this.visitTypeNode(typeArguments[i]); - } - sb.push(">"); - } - if (node.isNullable) - sb.push(" | null"); - } - }; - ASTBuilder.prototype.visitFunctionTypeNode = function (node) { - var isNullable = node.isNullable; - var sb = this.sb; - sb.push(isNullable ? "((" : "("); - var explicitThisType = node.explicitThisType; - if (explicitThisType) { - sb.push("this: "); - this.visitTypeNode(explicitThisType); - } - var parameters = node.parameters; - var numParameters = parameters.length; - if (numParameters) { - if (explicitThisType) - sb.push(", "); - this.serializeParameter(parameters[0]); - for (var i = 1; i < numParameters; ++i) { - sb.push(", "); - this.serializeParameter(parameters[i]); - } - } - var returnType = node.returnType; - if (returnType) { - sb.push(") => "); - this.visitTypeNode(returnType); - } - else { - sb.push(") => void"); - } - if (isNullable) - sb.push(") | null"); - }; - ASTBuilder.prototype.visitTypeParameter = function (node) { - this.visitIdentifierExpression(node.name); - var extendsType = node.extendsType; - if (extendsType) { - this.sb.push(" extends "); - this.visitTypeNode(extendsType); - } - var defaultType = node.defaultType; - if (defaultType) { - this.sb.push("="); - this.visitTypeNode(defaultType); - } - }; - // expressions - ASTBuilder.prototype.visitIdentifierExpression = function (node) { - if (node.isQuoted) - this.visitStringLiteral(node.text); - else - this.sb.push(node.text); - }; - ASTBuilder.prototype.visitArrayLiteralExpression = function (node) { - var sb = this.sb; - sb.push("["); - var elements = node.elementExpressions; - var numElements = elements.length; - if (numElements) { - if (elements[0]) - this.visitNode(elements[0]); - for (var i = 1; i < numElements; ++i) { - sb.push(", "); - if (elements[i]) - this.visitNode(elements[i]); - } - } - sb.push("]"); - }; - ASTBuilder.prototype.visitObjectLiteralExpression = function (node) { - var sb = this.sb; - var names = node.names; - var values = node.values; - var numElements = names.length; - assert(numElements == values.length); - if (numElements) { - sb.push("{\n"); - util_1.indent(sb, ++this.indentLevel); - this.visitNode(names[0]); - sb.push(": "); - this.visitNode(values[0]); - for (var i = 1; i < numElements; ++i) { - sb.push(",\n"); - util_1.indent(sb, this.indentLevel); - var name = names[i]; - var value = values[i]; - if (name === value) { - this.visitNode(name); - } - else { - this.visitNode(name); - sb.push(": "); - this.visitNode(value); - } - } - sb.push("\n"); - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push("{}"); - } - }; - ASTBuilder.prototype.visitAssertionExpression = function (node) { - var sb = this.sb; - switch (node.assertionKind) { - case ast_1.AssertionKind.PREFIX: { - sb.push("<"); - this.visitTypeNode(assert(node.toType)); - sb.push(">"); - this.visitNode(node.expression); - break; - } - case ast_1.AssertionKind.AS: { - this.visitNode(node.expression); - sb.push(" as "); - this.visitTypeNode(assert(node.toType)); - break; - } - case ast_1.AssertionKind.NONNULL: { - this.visitNode(node.expression); - sb.push("!"); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitBinaryExpression = function (node) { - var sb = this.sb; - this.visitNode(node.left); - sb.push(" "); - sb.push(tokenizer_1.operatorTokenToString(node.operator)); - sb.push(" "); - this.visitNode(node.right); - }; - ASTBuilder.prototype.visitCallExpression = function (node) { - var sb = this.sb; - this.visitNode(node.expression); - var typeArguments = node.typeArguments; - if (typeArguments) { - var numTypeArguments = typeArguments.length; - if (numTypeArguments) { - sb.push("<"); - this.visitTypeNode(typeArguments[0]); - for (var i = 1; i < numTypeArguments; ++i) { - sb.push(", "); - this.visitTypeNode(typeArguments[i]); - } - sb.push(">("); - } - } - else { - sb.push("("); - } - var args = node.arguments; - var numArgs = args.length; - if (numArgs) { - this.visitNode(args[0]); - for (var i = 1; i < numArgs; ++i) { - sb.push(", "); - this.visitNode(args[i]); - } - } - sb.push(")"); - }; - ASTBuilder.prototype.visitClassExpression = function (node) { - var declaration = node.declaration; - this.visitClassDeclaration(declaration); - }; - ASTBuilder.prototype.visitCommaExpression = function (node) { - var expressions = node.expressions; - var numExpressions = assert(expressions.length); - this.visitNode(expressions[0]); - var sb = this.sb; - for (var i = 1; i < numExpressions; ++i) { - sb.push(","); - this.visitNode(expressions[i]); - } - }; - ASTBuilder.prototype.visitElementAccessExpression = function (node) { - var sb = this.sb; - this.visitNode(node.expression); - sb.push("["); - this.visitNode(node.elementExpression); - sb.push("]"); - }; - ASTBuilder.prototype.visitFunctionExpression = function (node) { - var declaration = node.declaration; - if (!declaration.arrowKind) { - if (declaration.name.text.length) { - this.sb.push("function "); - } - else { - this.sb.push("function"); - } - } - else { - assert(declaration.name.text.length == 0); - } - this.visitFunctionCommon(declaration); - }; - ASTBuilder.prototype.visitLiteralExpression = function (node) { - switch (node.literalKind) { - case ast_1.LiteralKind.FLOAT: { - this.visitFloatLiteralExpression(node); - break; - } - case ast_1.LiteralKind.INTEGER: { - this.visitIntegerLiteralExpression(node); - break; - } - case ast_1.LiteralKind.STRING: { - this.visitStringLiteralExpression(node); - break; - } - case ast_1.LiteralKind.REGEXP: { - this.visitRegexpLiteralExpression(node); - break; - } - case ast_1.LiteralKind.ARRAY: { - this.visitArrayLiteralExpression(node); - break; - } - case ast_1.LiteralKind.OBJECT: { - this.visitObjectLiteralExpression(node); - break; - } - default: { - assert(false); - break; - } - } - }; - ASTBuilder.prototype.visitFloatLiteralExpression = function (node) { - this.sb.push(node.value.toString(10)); - }; - ASTBuilder.prototype.visitInstanceOfExpression = function (node) { - this.visitNode(node.expression); - this.sb.push(" instanceof "); - this.visitTypeNode(node.isType); - }; - ASTBuilder.prototype.visitIntegerLiteralExpression = function (node) { - this.sb.push(i64_to_string(node.value)); - }; - ASTBuilder.prototype.visitStringLiteral = function (str, singleQuoted) { - if (singleQuoted === void 0) { singleQuoted = false; } - var sb = this.sb; - var off = 0; - var quote = singleQuoted ? "'" : "\""; - sb.push(quote); - var i = 0; - for (var k = str.length; i < k;) { - switch (str.charCodeAt(i)) { - case 0 /* NULL */: { - if (i > off) - sb.push(str.substring(off, off = i + 1)); - sb.push("\\0"); - off = ++i; - break; - } - case 8 /* BACKSPACE */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\b"); - break; - } - case 9 /* TAB */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\t"); - break; - } - case 10 /* LINEFEED */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\n"); - break; - } - case 11 /* VERTICALTAB */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\v"); - break; - } - case 12 /* FORMFEED */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\f"); - break; - } - case 13 /* CARRIAGERETURN */: { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\r"); - off = ++i; - break; - } - case 34 /* DOUBLEQUOTE */: { - if (!singleQuoted) { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\\""); - off = ++i; - } - else { - ++i; - } - break; - } - case 39 /* SINGLEQUOTE */: { - if (singleQuoted) { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\'"); - off = ++i; - } - else { - ++i; - } - break; - } - case 92 /* BACKSLASH */: { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\\\"); - off = ++i; - break; - } - default: { - ++i; - break; - } - } - } - if (i > off) - sb.push(str.substring(off, i)); - sb.push(quote); - }; - ASTBuilder.prototype.visitStringLiteralExpression = function (node) { - this.visitStringLiteral(node.value); - }; - ASTBuilder.prototype.visitRegexpLiteralExpression = function (node) { - var sb = this.sb; - sb.push("/"); - sb.push(node.pattern); - sb.push("/"); - sb.push(node.patternFlags); - }; - ASTBuilder.prototype.visitNewExpression = function (node) { - this.sb.push("new "); - this.visitCallExpression(node); - }; - ASTBuilder.prototype.visitParenthesizedExpression = function (node) { - var sb = this.sb; - sb.push("("); - this.visitNode(node.expression); - sb.push(")"); - }; - ASTBuilder.prototype.visitPropertyAccessExpression = function (node) { - this.visitNode(node.expression); - this.sb.push("."); - this.visitIdentifierExpression(node.property); - }; - ASTBuilder.prototype.visitTernaryExpression = function (node) { - var sb = this.sb; - this.visitNode(node.condition); - sb.push(" ? "); - this.visitNode(node.ifThen); - sb.push(" : "); - this.visitNode(node.ifElse); - }; - ASTBuilder.prototype.visitUnaryExpression = function (node) { - switch (node.kind) { - case ast_1.NodeKind.UNARYPOSTFIX: { - this.visitUnaryPostfixExpression(node); - break; - } - case ast_1.NodeKind.UNARYPREFIX: { - this.visitUnaryPrefixExpression(node); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitUnaryPostfixExpression = function (node) { - this.visitNode(node.operand); - this.sb.push(tokenizer_1.operatorTokenToString(node.operator)); - }; - ASTBuilder.prototype.visitUnaryPrefixExpression = function (node) { - this.sb.push(tokenizer_1.operatorTokenToString(node.operator)); - this.visitNode(node.operand); - }; - // statements - ASTBuilder.prototype.visitNodeAndTerminate = function (statement) { - this.visitNode(statement); - var sb = this.sb; - if (!sb.length || // leading EmptyStatement - statement.kind == ast_1.NodeKind.VARIABLE || // potentially assigns a FunctionExpression - statement.kind == ast_1.NodeKind.EXPRESSION // potentially assigns a FunctionExpression - ) { - sb.push(";\n"); - } - else { - var last = sb[sb.length - 1]; - var lastCharPos = last.length - 1; - if (lastCharPos >= 0 && (last.charCodeAt(lastCharPos) == 125 /* CLOSEBRACE */ || - last.charCodeAt(lastCharPos) == 59 /* SEMICOLON */)) { - sb.push("\n"); - } - else { - sb.push(";\n"); - } - } - }; - ASTBuilder.prototype.visitBlockStatement = function (node) { - var sb = this.sb; - var statements = node.statements; - var numStatements = statements.length; - if (numStatements) { - sb.push("{\n"); - var indentLevel = ++this.indentLevel; - for (var i = 0; i < numStatements; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[i]); - } - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push("{}"); - } - }; - ASTBuilder.prototype.visitBreakStatement = function (node) { - var label = node.label; - if (label) { - this.sb.push("break "); - this.visitIdentifierExpression(label); - } - else { - this.sb.push("break"); - } - }; - ASTBuilder.prototype.visitContinueStatement = function (node) { - var label = node.label; - if (label) { - this.sb.push("continue "); - this.visitIdentifierExpression(label); - } - else { - this.sb.push("continue"); - } - }; - ASTBuilder.prototype.visitClassDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - if (node.is(common_1.CommonFlags.ABSTRACT)) - sb.push("abstract "); - if (node.name.text.length) { - sb.push("class "); - this.visitIdentifierExpression(node.name); - } - else { - sb.push("class"); - } - var typeParameters = node.typeParameters; - if (typeParameters && typeParameters.length) { - sb.push("<"); - this.visitTypeParameter(typeParameters[0]); - for (var i = 1, k = typeParameters.length; i < k; ++i) { - sb.push(", "); - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - var extendsType = node.extendsType; - if (extendsType) { - sb.push(" extends "); - this.visitTypeNode(extendsType); - } - var implementsTypes = node.implementsTypes; - if (implementsTypes) { - var numImplementsTypes = implementsTypes.length; - if (numImplementsTypes) { - sb.push(" implements "); - this.visitTypeNode(implementsTypes[0]); - for (var i = 1; i < numImplementsTypes; ++i) { - sb.push(", "); - this.visitTypeNode(implementsTypes[i]); - } - } - } - var members = node.members; - var numMembers = members.length; - if (numMembers) { - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - for (var i = 0, k = members.length; i < k; ++i) { - var member = members[i]; - if (member.kind != ast_1.NodeKind.FIELDDECLARATION || member.parameterIndex < 0) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(member); - } - } - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push(" {}"); - } - }; - ASTBuilder.prototype.visitDoStatement = function (node) { - var sb = this.sb; - sb.push("do "); - this.visitNode(node.statement); - if (node.statement.kind == ast_1.NodeKind.BLOCK) { - sb.push(" while ("); - } - else { - sb.push(";\n"); - util_1.indent(sb, this.indentLevel); - sb.push("while ("); - } - this.visitNode(node.condition); - sb.push(")"); - }; - ASTBuilder.prototype.visitEmptyStatement = function (node) { - }; - ASTBuilder.prototype.visitEnumDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - if (node.is(common_1.CommonFlags.CONST)) - sb.push("const "); - sb.push("enum "); - this.visitIdentifierExpression(node.name); - var values = node.values; - var numValues = values.length; - if (numValues) { - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitEnumValueDeclaration(node.values[0]); - for (var i = 1; i < numValues; ++i) { - sb.push(",\n"); - util_1.indent(sb, indentLevel); - this.visitEnumValueDeclaration(node.values[i]); - } - sb.push("\n"); - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push(" {}"); - } - }; - ASTBuilder.prototype.visitEnumValueDeclaration = function (node) { - this.visitIdentifierExpression(node.name); - if (node.value) { - this.sb.push(" = "); - this.visitNode(node.value); - } - }; - ASTBuilder.prototype.visitExportImportStatement = function (node) { - var sb = this.sb; - sb.push("export import "); - this.visitIdentifierExpression(node.externalName); - sb.push(" = "); - this.visitIdentifierExpression(node.name); - }; - ASTBuilder.prototype.visitExportMember = function (node) { - this.visitIdentifierExpression(node.localName); - if (node.exportedName.text != node.localName.text) { - this.sb.push(" as "); - this.visitIdentifierExpression(node.exportedName); - } - }; - ASTBuilder.prototype.visitExportStatement = function (node) { - var sb = this.sb; - if (node.isDeclare) { - sb.push("declare "); - } - var members = node.members; - if (members && members.length) { - var numMembers = members.length; - sb.push("export {\n"); - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitExportMember(members[0]); - for (var i = 1; i < numMembers; ++i) { - sb.push(",\n"); - util_1.indent(sb, indentLevel); - this.visitExportMember(members[i]); - } - --this.indentLevel; - sb.push("\n}"); - } - else { - sb.push("export {}"); - } - var path = node.path; - if (path) { - sb.push(" from "); - this.visitStringLiteralExpression(path); - } - sb.push(";"); - }; - ASTBuilder.prototype.visitExportDefaultStatement = function (node) { - var declaration = node.declaration; - switch (declaration.kind) { - case ast_1.NodeKind.ENUMDECLARATION: { - this.visitEnumDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.FUNCTIONDECLARATION: { - this.visitFunctionDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.CLASSDECLARATION: { - this.visitClassDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.INTERFACEDECLARATION: { - this.visitInterfaceDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.NAMESPACEDECLARATION: { - this.visitNamespaceDeclaration(declaration, true); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitExpressionStatement = function (node) { - this.visitNode(node.expression); - }; - ASTBuilder.prototype.visitFieldDeclaration = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - this.serializeAccessModifiers(node); - this.visitIdentifierExpression(node.name); - var sb = this.sb; - if (node.flags & common_1.CommonFlags.DEFINITE_ASSIGNMENT) { - sb.push("!"); - } - var type = node.type; - if (type) { - sb.push(": "); - this.visitTypeNode(type); - } - var initializer = node.initializer; - if (initializer) { - sb.push(" = "); - this.visitNode(initializer); - } - }; - ASTBuilder.prototype.visitForStatement = function (node) { - var sb = this.sb; - sb.push("for ("); - var initializer = node.initializer; - if (initializer) { - this.visitNode(initializer); - } - var condition = node.condition; - if (condition) { - sb.push("; "); - this.visitNode(condition); - } - else { - sb.push(";"); - } - var incrementor = node.incrementor; - if (incrementor) { - sb.push("; "); - this.visitNode(incrementor); - } - else { - sb.push(";"); - } - sb.push(") "); - this.visitNode(node.statement); - }; - ASTBuilder.prototype.visitFunctionDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var sb = this.sb; - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - this.serializeAccessModifiers(node); - } - if (node.name.text.length) { - sb.push("function "); - } - else { - sb.push("function"); - } - this.visitFunctionCommon(node); - }; - ASTBuilder.prototype.visitFunctionCommon = function (node) { - var sb = this.sb; - this.visitIdentifierExpression(node.name); - var signature = node.signature; - var typeParameters = node.typeParameters; - if (typeParameters) { - var numTypeParameters = typeParameters.length; - if (numTypeParameters) { - sb.push("<"); - this.visitTypeParameter(typeParameters[0]); - for (var i = 1; i < numTypeParameters; ++i) { - sb.push(", "); - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - } - if (node.arrowKind == 2 /* ARROW_SINGLE */) { - var parameters = signature.parameters; - assert(parameters.length == 1); - assert(!signature.explicitThisType); - this.serializeParameter(parameters[0]); - } - else { - sb.push("("); - var parameters = signature.parameters; - var numParameters = parameters.length; - var explicitThisType = signature.explicitThisType; - if (explicitThisType) { - sb.push("this: "); - this.visitTypeNode(explicitThisType); - } - if (numParameters) { - if (explicitThisType) - sb.push(", "); - this.serializeParameter(parameters[0]); - for (var i = 1; i < numParameters; ++i) { - sb.push(", "); - this.serializeParameter(parameters[i]); - } - } - } - var body = node.body; - var returnType = signature.returnType; - if (node.arrowKind) { - if (body) { - if (node.arrowKind == 2 /* ARROW_SINGLE */) { - assert(ast_1.isTypeOmitted(returnType)); - } - else { - if (ast_1.isTypeOmitted(returnType)) { - sb.push(")"); - } - else { - sb.push("): "); - this.visitTypeNode(returnType); - } - } - sb.push(" => "); - this.visitNode(body); - } - else { - assert(!ast_1.isTypeOmitted(returnType)); - sb.push(" => "); - this.visitTypeNode(returnType); - } - } - else { - if (!ast_1.isTypeOmitted(returnType) && - !node.isAny(common_1.CommonFlags.CONSTRUCTOR | common_1.CommonFlags.SET)) { - sb.push("): "); - this.visitTypeNode(returnType); - } - else { - sb.push(")"); - } - if (body) { - sb.push(" "); - this.visitNode(body); - } - } - }; - ASTBuilder.prototype.visitIfStatement = function (node) { - var sb = this.sb; - sb.push("if ("); - this.visitNode(node.condition); - sb.push(") "); - var ifTrue = node.ifTrue; - this.visitNode(ifTrue); - if (ifTrue.kind != ast_1.NodeKind.BLOCK) { - sb.push(";\n"); - } - var ifFalse = node.ifFalse; - if (ifFalse) { - if (ifTrue.kind == ast_1.NodeKind.BLOCK) { - sb.push(" else "); - } - else { - sb.push("else "); - } - this.visitNode(ifFalse); - } - }; - ASTBuilder.prototype.visitImportDeclaration = function (node) { - var externalName = node.foreignName; - var name = node.name; - this.visitIdentifierExpression(externalName); - if (externalName.text != name.text) { - this.sb.push(" as "); - this.visitIdentifierExpression(name); - } - }; - ASTBuilder.prototype.visitImportStatement = function (node) { - var sb = this.sb; - sb.push("import "); - var declarations = node.declarations; - var namespaceName = node.namespaceName; - if (declarations) { - var numDeclarations = declarations.length; - if (numDeclarations) { - sb.push("{\n"); - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitImportDeclaration(declarations[0]); - for (var i = 1; i < numDeclarations; ++i) { - sb.push(",\n"); - util_1.indent(sb, indentLevel); - this.visitImportDeclaration(declarations[i]); - } - --this.indentLevel; - sb.push("\n} from "); - } - else { - sb.push("{} from "); - } - } - else if (namespaceName) { - sb.push("* as "); - this.visitIdentifierExpression(namespaceName); - sb.push(" from "); - } - this.visitStringLiteralExpression(node.path); - }; - ASTBuilder.prototype.visitIndexSignatureDeclaration = function (node) { - var sb = this.sb; - sb.push("[key: "); - this.visitTypeNode(node.keyType); - sb.push("]: "); - this.visitTypeNode(node.valueType); - }; - ASTBuilder.prototype.visitInterfaceDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - sb.push("interface "); - this.visitIdentifierExpression(node.name); - var typeParameters = node.typeParameters; - if (typeParameters && typeParameters.length) { - sb.push("<"); - this.visitTypeParameter(typeParameters[0]); - for (var i = 1, k = typeParameters.length; i < k; ++i) { - sb.push(", "); - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - var extendsType = node.extendsType; - if (extendsType) { - sb.push(" extends "); - this.visitTypeNode(extendsType); - } - // must not have implementsTypes - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - var members = node.members; - for (var i = 0, k = members.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(members[i]); - } - --this.indentLevel; - sb.push("}"); - }; - ASTBuilder.prototype.visitMethodDeclaration = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - this.serializeAccessModifiers(node); - if (node.is(common_1.CommonFlags.GET)) { - this.sb.push("get "); - } - else if (node.is(common_1.CommonFlags.SET)) { - this.sb.push("set "); - } - this.visitFunctionCommon(node); - }; - ASTBuilder.prototype.visitNamespaceDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - sb.push("namespace "); - this.visitIdentifierExpression(node.name); - var members = node.members; - var numMembers = members.length; - if (numMembers) { - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - for (var i = 0, k = members.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(members[i]); - } - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push(" {}"); - } - }; - ASTBuilder.prototype.visitReturnStatement = function (node) { - var value = node.value; - if (value) { - this.sb.push("return "); - this.visitNode(value); - } - else { - this.sb.push("return"); - } - }; - ASTBuilder.prototype.visitSwitchCase = function (node) { - var sb = this.sb; - var label = node.label; - if (label) { - sb.push("case "); - this.visitNode(label); - sb.push(":\n"); - } - else { - sb.push("default:\n"); - } - var statements = node.statements; - var numStatements = statements.length; - if (numStatements) { - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[0]); - for (var i = 1; i < numStatements; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[i]); - } - --this.indentLevel; - } - }; - ASTBuilder.prototype.visitSwitchStatement = function (node) { - var sb = this.sb; - sb.push("switch ("); - this.visitNode(node.condition); - sb.push(") {\n"); - var indentLevel = ++this.indentLevel; - var cases = node.cases; - for (var i = 0, k = cases.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitSwitchCase(cases[i]); - sb.push("\n"); - } - --this.indentLevel; - sb.push("}"); - }; - ASTBuilder.prototype.visitThrowStatement = function (node) { - this.sb.push("throw "); - this.visitNode(node.value); - }; - ASTBuilder.prototype.visitTryStatement = function (node) { - var sb = this.sb; - sb.push("try {\n"); - var indentLevel = ++this.indentLevel; - var statements = node.statements; - for (var i = 0, k = statements.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[i]); - } - var catchVariable = node.catchVariable; - if (catchVariable) { - util_1.indent(sb, indentLevel - 1); - sb.push("} catch ("); - this.visitIdentifierExpression(catchVariable); - sb.push(") {\n"); - var catchStatements = node.catchStatements; - if (catchStatements) { - for (var i = 0, k = catchStatements.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(catchStatements[i]); - } - } - } - var finallyStatements = node.finallyStatements; - if (finallyStatements) { - util_1.indent(sb, indentLevel - 1); - sb.push("} finally {\n"); - for (var i = 0, k = finallyStatements.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(finallyStatements[i]); - } - } - util_1.indent(sb, indentLevel - 1); - sb.push("}"); - }; - ASTBuilder.prototype.visitTypeDeclaration = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - this.serializeExternalModifiers(node); - sb.push("type "); - this.visitIdentifierExpression(node.name); - var typeParameters = node.typeParameters; - if (typeParameters) { - var numTypeParameters = typeParameters.length; - if (numTypeParameters) { - sb.push("<"); - for (var i = 0; i < numTypeParameters; ++i) { - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - } - sb.push(" = "); - this.visitTypeNode(node.type); - }; - ASTBuilder.prototype.visitVariableDeclaration = function (node) { - this.visitIdentifierExpression(node.name); - var type = node.type; - var sb = this.sb; - if (node.flags & common_1.CommonFlags.DEFINITE_ASSIGNMENT) { - sb.push("!"); - } - if (type) { - sb.push(": "); - this.visitTypeNode(type); - } - var initializer = node.initializer; - if (initializer) { - sb.push(" = "); - this.visitNode(initializer); - } - }; - ASTBuilder.prototype.visitVariableStatement = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - var declarations = node.declarations; - var numDeclarations = assert(declarations.length); - var firstDeclaration = declarations[0]; - this.serializeExternalModifiers(firstDeclaration); - sb.push(firstDeclaration.is(common_1.CommonFlags.CONST) ? "const " : firstDeclaration.is(common_1.CommonFlags.LET) ? "let " : "var "); - this.visitVariableDeclaration(node.declarations[0]); - for (var i = 1; i < numDeclarations; ++i) { - sb.push(", "); - this.visitVariableDeclaration(node.declarations[i]); - } - }; - ASTBuilder.prototype.visitWhileStatement = function (node) { - var sb = this.sb; - sb.push("while ("); - this.visitNode(node.condition); - var statement = node.statement; - if (statement.kind == ast_1.NodeKind.EMPTY) { - sb.push(")"); - } - else { - sb.push(") "); - this.visitNode(node.statement); - } - }; - // other - ASTBuilder.prototype.serializeDecorator = function (node) { - var sb = this.sb; - sb.push("@"); - this.visitNode(node.name); - var args = node.arguments; - if (args) { - sb.push("("); - var numArgs = args.length; - if (numArgs) { - this.visitNode(args[0]); - for (var i = 1; i < numArgs; ++i) { - sb.push(", "); - this.visitNode(args[i]); - } - } - sb.push(")\n"); - } - else { - sb.push("\n"); - } - util_1.indent(sb, this.indentLevel); - }; - ASTBuilder.prototype.serializeParameter = function (node) { - var sb = this.sb; - var kind = node.parameterKind; - var implicitFieldDeclaration = node.implicitFieldDeclaration; - if (implicitFieldDeclaration) { - this.serializeAccessModifiers(implicitFieldDeclaration); - } - if (kind == ast_1.ParameterKind.REST) { - sb.push("..."); - } - this.visitIdentifierExpression(node.name); - var type = node.type; - var initializer = node.initializer; - if (type) { - if (kind == ast_1.ParameterKind.OPTIONAL && !initializer) - sb.push("?"); - if (!ast_1.isTypeOmitted(type)) { - sb.push(": "); - this.visitTypeNode(type); - } - } - if (initializer) { - sb.push(" = "); - this.visitNode(initializer); - } - }; - ASTBuilder.prototype.serializeExternalModifiers = function (node) { - var sb = this.sb; - if (node.is(common_1.CommonFlags.EXPORT)) { - sb.push("export "); - } - else if (node.is(common_1.CommonFlags.IMPORT)) { - sb.push("import "); - } - else if (node.is(common_1.CommonFlags.DECLARE)) { - sb.push("declare "); - } - }; - ASTBuilder.prototype.serializeAccessModifiers = function (node) { - var sb = this.sb; - if (node.is(common_1.CommonFlags.PUBLIC)) { - sb.push("public "); - } - else if (node.is(common_1.CommonFlags.PRIVATE)) { - sb.push("private "); - } - else if (node.is(common_1.CommonFlags.PROTECTED)) { - sb.push("protected "); - } - if (node.is(common_1.CommonFlags.STATIC)) { - sb.push("static "); - } - else if (node.is(common_1.CommonFlags.ABSTRACT)) { - sb.push("abstract "); - } - if (node.is(common_1.CommonFlags.READONLY)) { - sb.push("readonly "); - } - }; - ASTBuilder.prototype.finish = function () { - var ret = this.sb.join(""); - this.sb = []; - return ret; - }; - return ASTBuilder; -}()); -exports.ASTBuilder = ASTBuilder; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb3VyY2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUNBMEV1QjtBQUV2QixvQ0FBa0M7QUFDbEMsbUNBQWlDO0FBQ2pDLGlDQUErQjtBQUUvQiwyQ0FBK0M7QUFFL0MsdUNBQWtEO0FBRWxELGlEQUE4RDtBQUM5RCxzQkFBc0I7QUFDdEI7SUFBQTtRQVNVLE9BQUUsR0FBYSxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBUSxDQUFDLENBQUM7SUE2K0MvQixDQUFDO0lBci9DQyw4RUFBOEU7SUFDdkUsZ0JBQUssR0FBWixVQUFhLElBQVU7UUFDckIsSUFBSSxPQUFPLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMvQixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFLRCw4QkFBUyxHQUFULFVBQVUsSUFBVTtRQUNsQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxjQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQVMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07YUFDUDtZQUVELFFBQVE7WUFFUixLQUFLLGNBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFnQixJQUFJLENBQUMsQ0FBQztnQkFDN0MsTUFBTTthQUNQO1lBQ0QsS0FBSyxjQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxxQkFBcUIsQ0FBbUIsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELE1BQU07YUFDUDtZQUNELEtBQUssY0FBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQW9CLElBQUks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QztTQUN0QjtJQUNILENBQUM7SUFFRCwyQkFBTSxHQUFOO1FBQ0UsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDSCxpQkFBQztBQUFELENBQUMsQUF2L0NELElBdS9DQztBQXYvQ1ksZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZWNsYXJhdGlvblN0YXRlbWVudCxcbiAgTm9kZSxcbiAgTm9kZUtpbmQsXG4gIFNvdXJjZSxcbiAgTmFtZWRUeXBlTm9kZSxcbiAgRnVuY3Rpb25UeXBlTm9kZSxcbiAgVHlwZVBhcmFtZXRlck5vZGUsXG4gIElkZW50aWZpZXJFeHByZXNzaW9uLFxuICBBc3NlcnRpb25FeHByZXNzaW9uLFxuICBCaW5hcnlFeHByZXNzaW9uLFxuICBDYWxsRXhwcmVzc2lvbixcbiAgQ2xhc3NFeHByZXNzaW9uLFxuICBDb21tYUV4cHJlc3Npb24sXG4gIEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLFxuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIEluc3RhbmNlT2ZFeHByZXNzaW9uLFxuICBMaXRlcmFsRXhwcmVzc2lvbixcbiAgTmV3RXhwcmVzc2lvbixcbiAgUGFyZW50aGVzaXplZEV4cHJlc3Npb24sXG4gIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbixcbiAgVGVybmFyeUV4cHJlc3Npb24sXG4gIFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24sXG4gIFVuYXJ5UHJlZml4RXhwcmVzc2lvbixcbiAgQmxvY2tTdGF0ZW1lbnQsXG4gIEJyZWFrU3RhdGVtZW50LFxuICBDb250aW51ZVN0YXRlbWVudCxcbiAgRG9TdGF0ZW1lbnQsXG4gIEVtcHR5U3RhdGVtZW50LFxuICBFeHBvcnRTdGF0ZW1lbnQsXG4gIEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQsXG4gIEV4cG9ydEltcG9ydFN0YXRlbWVudCxcbiAgRXhwcmVzc2lvblN0YXRlbWVudCxcbiAgRm9yU3RhdGVtZW50LFxuICBJZlN0YXRlbWVudCxcbiAgSW1wb3J0U3RhdGVtZW50LFxuICBSZXR1cm5TdGF0ZW1lbnQsXG4gIFN3aXRjaFN0YXRlbWVudCxcbiAgVGhyb3dTdGF0ZW1lbnQsXG4gIFRyeVN0YXRlbWVudCxcbiAgVmFyaWFibGVTdGF0ZW1lbnQsXG4gIFdoaWxlU3RhdGVtZW50LFxuICBDbGFzc0RlY2xhcmF0aW9uLFxuICBFbnVtRGVjbGFyYXRpb24sXG4gIEVudW1WYWx1ZURlY2xhcmF0aW9uLFxuICBGaWVsZERlY2xhcmF0aW9uLFxuICBGdW5jdGlvbkRlY2xhcmF0aW9uLFxuICBJbXBvcnREZWNsYXJhdGlvbixcbiAgSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbixcbiAgSW50ZXJmYWNlRGVjbGFyYXRpb24sXG4gIE1ldGhvZERlY2xhcmF0aW9uLFxuICBOYW1lc3BhY2VEZWNsYXJhdGlvbixcbiAgVHlwZURlY2xhcmF0aW9uLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uLFxuICBEZWNvcmF0b3JOb2RlLFxuICBFeHBvcnRNZW1iZXIsXG4gIFBhcmFtZXRlck5vZGUsXG4gIFN3aXRjaENhc2UsXG4gIFR5cGVOb2RlLFxuICBUeXBlTmFtZSxcbiAgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbixcbiAgRXhwcmVzc2lvbixcbiAgT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sXG4gIEFzc2VydGlvbktpbmQsXG4gIExpdGVyYWxLaW5kLFxuICBGbG9hdExpdGVyYWxFeHByZXNzaW9uLFxuICBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24sXG4gIFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uLFxuICBSZWdleHBMaXRlcmFsRXhwcmVzc2lvbixcbiAgVW5hcnlFeHByZXNzaW9uLFxuICBTdGF0ZW1lbnQsXG4gIEFycm93S2luZCxcbiAgaXNUeXBlT21pdHRlZCxcbiAgUGFyYW1ldGVyS2luZFxufSBmcm9tIFwiLi4vLi4vc3JjL2FzdFwiO1xuXG5pbXBvcnQgXCIuLi8uLi9zdGQvcG9ydGFibGUvaW5kZXhcIjtcbmltcG9ydCBcIi4uLy4uL3NyYy9nbHVlL2pzL2Zsb2F0XCI7XG5pbXBvcnQgXCIuLi8uLi9zcmMvZ2x1ZS9qcy9pNjRcIjtcblxuaW1wb3J0IHsgQ29tbW9uRmxhZ3MgfSBmcm9tIFwiLi4vLi4vc3JjL2NvbW1vblwiO1xuXG5pbXBvcnQgeyBpbmRlbnQsIENoYXJDb2RlIH0gZnJvbSBcIi4uLy4uL3NyYy91dGlsXCI7XG5cbmltcG9ydCB7ICBvcGVyYXRvclRva2VuVG9TdHJpbmcsIH0gZnJvbSBcIi4uLy4uL3NyYy90b2tlbml6ZXJcIjtcbi8qKiBBbiBBU1QgYnVpbGRlci4gKi9cbmV4cG9ydCBjbGFzcyBBU1RCdWlsZGVyIHtcblxuICAvKiogUmVidWlsZHMgdGhlIHRleHR1YWwgc291cmNlIGZyb20gdGhlIHNwZWNpZmllZCBBU1QsIGFzIGZhciBhcyBwb3NzaWJsZS4gKi9cbiAgc3RhdGljIGJ1aWxkKG5vZGU6IE5vZGUpOiBzdHJpbmcge1xuICAgIHZhciBidWlsZGVyID0gbmV3IEFTVEJ1aWxkZXIoKTtcbiAgICBidWlsZGVyLnZpc2l0Tm9kZShub2RlKTtcbiAgICByZXR1cm4gYnVpbGRlci5maW5pc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgc2I6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaW5kZW50TGV2ZWw6IGkzMiA9IDA7XG5cbiAgdmlzaXROb2RlKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBOb2RlS2luZC5TT1VSQ0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFNvdXJjZSg8U291cmNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gdHlwZXNcblxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FRFRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVkVHlwZU5vZGUoPE5hbWVkVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GVU5DVElPTlRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uVHlwZU5vZGUoPEZ1bmN0aW9uVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKDxUeXBlUGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGV4cHJlc3Npb25zXG5cbiAgICAgIGNhc2UgTm9kZUtpbmQuRkFMU0U6XG4gICAgICBjYXNlIE5vZGVLaW5kLk5VTEw6XG4gICAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOlxuICAgICAgY2FzZSBOb2RlS2luZC5USElTOlxuICAgICAgY2FzZSBOb2RlS2luZC5UUlVFOlxuICAgICAgY2FzZSBOb2RlS2luZC5DT05TVFJVQ1RPUjpcbiAgICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjoge1xuICAgICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24oPElkZW50aWZpZXJFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQVNTRVJUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRBc3NlcnRpb25FeHByZXNzaW9uKDxBc3NlcnRpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQklOQVJZOiB7XG4gICAgICAgIHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKDxCaW5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0FMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24oPENhbGxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0xBU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdENsYXNzRXhwcmVzc2lvbig8Q2xhc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09NTUE6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbW1hRXhwcmVzc2lvbig8Q29tbWFFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzoge1xuICAgICAgICB0aGlzLnZpc2l0RWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oPEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbig8RnVuY3Rpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5TVEFOQ0VPRjoge1xuICAgICAgICB0aGlzLnZpc2l0SW5zdGFuY2VPZkV4cHJlc3Npb24oPEluc3RhbmNlT2ZFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTElURVJBTDoge1xuICAgICAgICB0aGlzLnZpc2l0TGl0ZXJhbEV4cHJlc3Npb24oPExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkVXOiB7XG4gICAgICAgIHRoaXMudmlzaXROZXdFeHByZXNzaW9uKDxOZXdFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUEFSRU5USEVTSVpFRDoge1xuICAgICAgICB0aGlzLnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oPFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbig8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEVSTkFSWToge1xuICAgICAgICB0aGlzLnZpc2l0VGVybmFyeUV4cHJlc3Npb24oPFRlcm5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdGVtZW50c1xuXG4gICAgICBjYXNlIE5vZGVLaW5kLkJMT0NLOiB7XG4gICAgICAgIHRoaXMudmlzaXRCbG9ja1N0YXRlbWVudCg8QmxvY2tTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5CUkVBSzoge1xuICAgICAgICB0aGlzLnZpc2l0QnJlYWtTdGF0ZW1lbnQoPEJyZWFrU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09OVElOVUU6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbnRpbnVlU3RhdGVtZW50KDxDb250aW51ZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkRPOiB7XG4gICAgICAgIHRoaXMudmlzaXREb1N0YXRlbWVudCg8RG9TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FTVBUWToge1xuICAgICAgICB0aGlzLnZpc2l0RW1wdHlTdGF0ZW1lbnQoPEVtcHR5U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRFeHBvcnRTdGF0ZW1lbnQoPEV4cG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoPEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FWFBPUlRJTVBPUlQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudCg8RXhwb3J0SW1wb3J0U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQUkVTU0lPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwcmVzc2lvblN0YXRlbWVudCg8RXhwcmVzc2lvblN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZPUjoge1xuICAgICAgICB0aGlzLnZpc2l0Rm9yU3RhdGVtZW50KDxGb3JTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JRjoge1xuICAgICAgICB0aGlzLnZpc2l0SWZTdGF0ZW1lbnQoPElmU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU1QT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnRTdGF0ZW1lbnQoPEltcG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlJFVFVSTjoge1xuICAgICAgICB0aGlzLnZpc2l0UmV0dXJuU3RhdGVtZW50KDxSZXR1cm5TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0g6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaFN0YXRlbWVudCg8U3dpdGNoU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEhST1c6IHtcbiAgICAgICAgdGhpcy52aXNpdFRocm93U3RhdGVtZW50KDxUaHJvd1N0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlRSWToge1xuICAgICAgICB0aGlzLnZpc2l0VHJ5U3RhdGVtZW50KDxUcnlTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5WQVJJQUJMRToge1xuICAgICAgICB0aGlzLnZpc2l0VmFyaWFibGVTdGF0ZW1lbnQoPFZhcmlhYmxlU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuV0hJTEU6IHtcbiAgICAgICAgdGhpcy52aXNpdFdoaWxlU3RhdGVtZW50KDxXaGlsZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2xhcmF0aW9uIHN0YXRlbWVudHNcblxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRU5VTURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtRGVjbGFyYXRpb24oPEVudW1EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1WQUxVRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbig8RW51bVZhbHVlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRGaWVsZERlY2xhcmF0aW9uKDxGaWVsZERlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklNUE9SVERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbig8SW1wb3J0RGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKDxJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5URVJGQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEludGVyZmFjZURlY2xhcmF0aW9uKDxJbnRlcmZhY2VEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLk1FVEhPRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRNZXRob2REZWNsYXJhdGlvbig8TWV0aG9kRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FU1BBQ0VERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oPE5hbWVzcGFjZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlRGVjbGFyYXRpb24oPFR5cGVEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlZBUklBQkxFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oPFZhcmlhYmxlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBvdGhlclxuXG4gICAgICBjYXNlIE5vZGVLaW5kLkRFQ09SQVRPUjoge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcig8RGVjb3JhdG9yTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVE1FTUJFUjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwb3J0TWVtYmVyKDxFeHBvcnRNZW1iZXI+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5QQVJBTUVURVI6IHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIoPFBhcmFtZXRlck5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0hDQVNFOiB7XG4gICAgICAgIHRoaXMudmlzaXRTd2l0Y2hDYXNlKDxTd2l0Y2hDYXNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTb3VyY2Uoc291cmNlOiBTb3VyY2UpOiB2b2lkIHtcbiAgICB2YXIgc3RhdGVtZW50cyA9IHNvdXJjZS5zdGF0ZW1lbnRzO1xuICAgIGZvciAobGV0IGkgPSAwLCBrID0gc3RhdGVtZW50cy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKHN0YXRlbWVudHNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHR5cGVzXG5cbiAgdmlzaXRUeXBlTm9kZShub2RlOiBUeXBlTm9kZSk6IHZvaWQge1xuICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICBjYXNlIE5vZGVLaW5kLk5BTUVEVFlQRToge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZWRUeXBlTm9kZSg8TmFtZWRUeXBlTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZVTkNUSU9OVFlQRToge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25UeXBlTm9kZSg8RnVuY3Rpb25UeXBlTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VHlwZU5hbWUobm9kZTogVHlwZU5hbWUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5pZGVudGlmaWVyKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBjdXJyZW50ID0gbm9kZS5uZXh0O1xuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBzYi5wdXNoKFwiLlwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihjdXJyZW50LmlkZW50aWZpZXIpO1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG4gIH1cblxuICB2aXNpdE5hbWVkVHlwZU5vZGUobm9kZTogTmFtZWRUeXBlTm9kZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXRUeXBlTmFtZShub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlQXJndW1lbnRzID0gbm9kZS50eXBlQXJndW1lbnRzO1xuICAgIGlmICh0eXBlQXJndW1lbnRzKSB7XG4gICAgICBsZXQgbnVtVHlwZUFyZ3VtZW50cyA9IHR5cGVBcmd1bWVudHMubGVuZ3RoO1xuICAgICAgbGV0IHNiID0gdGhpcy5zYjtcbiAgICAgIGlmIChudW1UeXBlQXJndW1lbnRzKSB7XG4gICAgICAgIHNiLnB1c2goXCI8XCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZUFyZ3VtZW50c1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVHlwZUFyZ3VtZW50czsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZSh0eXBlQXJndW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmlzTnVsbGFibGUpIHNiLnB1c2goXCIgfCBudWxsXCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25UeXBlTm9kZShub2RlOiBGdW5jdGlvblR5cGVOb2RlKTogdm9pZCB7XG4gICAgdmFyIGlzTnVsbGFibGUgPSBub2RlLmlzTnVsbGFibGU7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKGlzTnVsbGFibGUgPyBcIigoXCIgOiBcIihcIik7XG4gICAgdmFyIGV4cGxpY2l0VGhpc1R5cGUgPSBub2RlLmV4cGxpY2l0VGhpc1R5cGU7XG4gICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHtcbiAgICAgIHNiLnB1c2goXCJ0aGlzOiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZXhwbGljaXRUaGlzVHlwZSk7XG4gICAgfVxuICAgIHZhciBwYXJhbWV0ZXJzID0gbm9kZS5wYXJhbWV0ZXJzO1xuICAgIHZhciBudW1QYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgaWYgKG51bVBhcmFtZXRlcnMpIHtcbiAgICAgIGlmIChleHBsaWNpdFRoaXNUeXBlKSBzYi5wdXNoKFwiLCBcIik7XG4gICAgICB0aGlzLnNlcmlhbGl6ZVBhcmFtZXRlcihwYXJhbWV0ZXJzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciByZXR1cm5UeXBlID0gbm9kZS5yZXR1cm5UeXBlO1xuICAgIGlmIChyZXR1cm5UeXBlKSB7XG4gICAgICBzYi5wdXNoKFwiKSA9PiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIpID0+IHZvaWRcIik7XG4gICAgfVxuICAgIGlmIChpc051bGxhYmxlKSBzYi5wdXNoKFwiKSB8IG51bGxcIik7XG4gIH1cblxuICB2aXNpdFR5cGVQYXJhbWV0ZXIobm9kZTogVHlwZVBhcmFtZXRlck5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgZXh0ZW5kc1R5cGUgPSBub2RlLmV4dGVuZHNUeXBlO1xuICAgIGlmIChleHRlbmRzVHlwZSkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiIGV4dGVuZHMgXCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGV4dGVuZHNUeXBlKTtcbiAgICB9XG4gICAgdmFyIGRlZmF1bHRUeXBlID0gbm9kZS5kZWZhdWx0VHlwZTtcbiAgICBpZiAoZGVmYXVsdFR5cGUpIHtcbiAgICAgIHRoaXMuc2IucHVzaChcIj1cIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZGVmYXVsdFR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGV4cHJlc3Npb25zXG5cbiAgdmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlOiBJZGVudGlmaWVyRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmIChub2RlLmlzUXVvdGVkKSB0aGlzLnZpc2l0U3RyaW5nTGl0ZXJhbChub2RlLnRleHQpO1xuICAgIGVsc2UgdGhpcy5zYi5wdXNoKG5vZGUudGV4dCk7XG4gIH1cblxuICB2aXNpdEFycmF5TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogQXJyYXlMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIltcIik7XG4gICAgdmFyIGVsZW1lbnRzID0gbm9kZS5lbGVtZW50RXhwcmVzc2lvbnM7XG4gICAgdmFyIG51bUVsZW1lbnRzID0gZWxlbWVudHMubGVuZ3RoO1xuICAgIGlmIChudW1FbGVtZW50cykge1xuICAgICAgaWYgKGVsZW1lbnRzWzBdKSB0aGlzLnZpc2l0Tm9kZSg8RXhwcmVzc2lvbj5lbGVtZW50c1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bUVsZW1lbnRzOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICBpZiAoZWxlbWVudHNbaV0pIHRoaXMudmlzaXROb2RlKDxFeHByZXNzaW9uPmVsZW1lbnRzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2IucHVzaChcIl1cIik7XG4gIH1cblxuICB2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB2YXIgbmFtZXMgPSBub2RlLm5hbWVzO1xuICAgIHZhciB2YWx1ZXMgPSBub2RlLnZhbHVlcztcbiAgICB2YXIgbnVtRWxlbWVudHMgPSBuYW1lcy5sZW5ndGg7XG4gICAgYXNzZXJ0KG51bUVsZW1lbnRzID09IHZhbHVlcy5sZW5ndGgpO1xuICAgIGlmIChudW1FbGVtZW50cykge1xuICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsICsrdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShuYW1lc1swXSk7XG4gICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZXNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1FbGVtZW50czsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsXFxuXCIpO1xuICAgICAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICBsZXQgdmFsdWUgPSB2YWx1ZXNbaV07XG4gICAgICAgIGlmIChuYW1lID09PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5hbWUpO1xuICAgICAgICAgIHNiLnB1c2goXCI6IFwiKTtcbiAgICAgICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCJcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsIC0tdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICBzYi5wdXNoKFwifVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcInt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QXNzZXJ0aW9uRXhwcmVzc2lvbihub2RlOiBBc3NlcnRpb25FeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzd2l0Y2ggKG5vZGUuYXNzZXJ0aW9uS2luZCkge1xuICAgICAgY2FzZSBBc3NlcnRpb25LaW5kLlBSRUZJWDoge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGFzc2VydChub2RlLnRvVHlwZSkpO1xuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFzc2VydGlvbktpbmQuQVM6IHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgc2IucHVzaChcIiBhcyBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZShhc3NlcnQobm9kZS50b1R5cGUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFzc2VydGlvbktpbmQuTk9OTlVMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgICAgICBzYi5wdXNoKFwiIVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QmluYXJ5RXhwcmVzc2lvbihub2RlOiBCaW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmxlZnQpO1xuICAgIHNiLnB1c2goXCIgXCIpO1xuICAgIHNiLnB1c2gob3BlcmF0b3JUb2tlblRvU3RyaW5nKG5vZGUub3BlcmF0b3IpKTtcbiAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnJpZ2h0KTtcbiAgfVxuXG4gIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZTogQ2FsbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdmFyIHR5cGVBcmd1bWVudHMgPSBub2RlLnR5cGVBcmd1bWVudHM7XG4gICAgaWYgKHR5cGVBcmd1bWVudHMpIHtcbiAgICAgIGxldCBudW1UeXBlQXJndW1lbnRzID0gdHlwZUFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICBpZiAobnVtVHlwZUFyZ3VtZW50cykge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHR5cGVBcmd1bWVudHNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVR5cGVBcmd1bWVudHM7ICsraSkge1xuICAgICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZUFyZ3VtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgc2IucHVzaChcIj4oXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICB9XG4gICAgdmFyIGFyZ3MgPSBub2RlLmFyZ3VtZW50cztcbiAgICB2YXIgbnVtQXJncyA9IGFyZ3MubGVuZ3RoO1xuICAgIGlmIChudW1BcmdzKSB7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShhcmdzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtQXJnczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUoYXJnc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNiLnB1c2goXCIpXCIpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0V4cHJlc3Npb24obm9kZTogQ2xhc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIGRlY2xhcmF0aW9uID0gbm9kZS5kZWNsYXJhdGlvbjtcbiAgICB0aGlzLnZpc2l0Q2xhc3NEZWNsYXJhdGlvbihkZWNsYXJhdGlvbik7XG4gIH1cblxuICB2aXNpdENvbW1hRXhwcmVzc2lvbihub2RlOiBDb21tYUV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgZXhwcmVzc2lvbnMgPSBub2RlLmV4cHJlc3Npb25zO1xuICAgIHZhciBudW1FeHByZXNzaW9ucyA9IGFzc2VydChleHByZXNzaW9ucy5sZW5ndGgpO1xuICAgIHRoaXMudmlzaXROb2RlKGV4cHJlc3Npb25zWzBdKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtRXhwcmVzc2lvbnM7ICsraSkge1xuICAgICAgc2IucHVzaChcIixcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShleHByZXNzaW9uc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihub2RlOiBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICBzYi5wdXNoKFwiW1wiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmVsZW1lbnRFeHByZXNzaW9uKTtcbiAgICBzYi5wdXNoKFwiXVwiKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25FeHByZXNzaW9uKG5vZGU6IEZ1bmN0aW9uRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBkZWNsYXJhdGlvbiA9IG5vZGUuZGVjbGFyYXRpb247XG4gICAgaWYgKCFkZWNsYXJhdGlvbi5hcnJvd0tpbmQpIHtcbiAgICAgIGlmIChkZWNsYXJhdGlvbi5uYW1lLnRleHQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc2IucHVzaChcImZ1bmN0aW9uIFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2IucHVzaChcImZ1bmN0aW9uXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQoZGVjbGFyYXRpb24ubmFtZS50ZXh0Lmxlbmd0aCA9PSAwKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdEZ1bmN0aW9uQ29tbW9uKGRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHZpc2l0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUubGl0ZXJhbEtpbmQpIHtcbiAgICAgIGNhc2UgTGl0ZXJhbEtpbmQuRkxPQVQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24oPEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBMaXRlcmFsS2luZC5JTlRFR0VSOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oPEludGVnZXJMaXRlcmFsRXhwcmVzc2lvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIExpdGVyYWxLaW5kLlNUUklORzoge1xuICAgICAgICB0aGlzLnZpc2l0U3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24oPFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTGl0ZXJhbEtpbmQuUkVHRVhQOiB7XG4gICAgICAgIHRoaXMudmlzaXRSZWdleHBMaXRlcmFsRXhwcmVzc2lvbig8UmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBMaXRlcmFsS2luZC5BUlJBWToge1xuICAgICAgICB0aGlzLnZpc2l0QXJyYXlMaXRlcmFsRXhwcmVzc2lvbig8QXJyYXlMaXRlcmFsRXhwcmVzc2lvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIExpdGVyYWxLaW5kLk9CSkVDVDoge1xuICAgICAgICB0aGlzLnZpc2l0T2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oPE9iamVjdExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRGbG9hdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2gobm9kZS52YWx1ZS50b1N0cmluZygxMCkpO1xuICB9XG5cbiAgdmlzaXRJbnN0YW5jZU9mRXhwcmVzc2lvbihub2RlOiBJbnN0YW5jZU9mRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy5zYi5wdXNoKFwiIGluc3RhbmNlb2YgXCIpO1xuICAgIHRoaXMudmlzaXRUeXBlTm9kZShub2RlLmlzVHlwZSk7XG4gIH1cblxuICB2aXNpdEludGVnZXJMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2goaTY0X3RvX3N0cmluZyhub2RlLnZhbHVlKSk7XG4gIH1cblxuICB2aXNpdFN0cmluZ0xpdGVyYWwoc3RyOiBzdHJpbmcsIHNpbmdsZVF1b3RlZDogYm9vbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgcXVvdGUgPSBzaW5nbGVRdW90ZWQgPyBcIidcIiA6IFwiXFxcIlwiO1xuICAgIHNiLnB1c2gocXVvdGUpO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKGxldCBrID0gc3RyLmxlbmd0aDsgaSA8IGs7KSB7XG4gICAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTlVMTDoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBvZmYgPSBpICsgMSkpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcMFwiKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQUNLU1BBQ0U6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXGJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5UQUI6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXHRcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgb2ZmID0gKytpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcblwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLlZFUlRJQ0FMVEFCOiB7XG4gICAgICAgICAgaWYgKGkgPiBvZmYpIHNiLnB1c2goc3RyLnN1YnN0cmluZyhvZmYsIGkpKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgc2IucHVzaChcIlxcXFx2XCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXGZcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DQVJSSUFHRVJFVFVSTjoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgc2IucHVzaChcIlxcXFxyXCIpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkRPVUJMRVFVT1RFOiB7XG4gICAgICAgICAgaWYgKCFzaW5nbGVRdW90ZWQpIHtcbiAgICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgICBzYi5wdXNoKFwiXFxcXFxcXCJcIik7XG4gICAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICsraTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5TSU5HTEVRVU9URToge1xuICAgICAgICAgIGlmIChzaW5nbGVRdW90ZWQpIHtcbiAgICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgICBzYi5wdXNoKFwiXFxcXCdcIik7XG4gICAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICsraTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQUNLU0xBU0g6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcXFxcXFwiKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICsraTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgIHNiLnB1c2gocXVvdGUpO1xuICB9XG5cbiAgdmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsKG5vZGUudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRSZWdleHBMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBSZWdleHBMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIi9cIik7XG4gICAgc2IucHVzaChub2RlLnBhdHRlcm4pO1xuICAgIHNiLnB1c2goXCIvXCIpO1xuICAgIHNiLnB1c2gobm9kZS5wYXR0ZXJuRmxhZ3MpO1xuICB9XG5cbiAgdmlzaXROZXdFeHByZXNzaW9uKG5vZGU6IE5ld0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2goXCJuZXcgXCIpO1xuICAgIHRoaXMudmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKTtcbiAgfVxuXG4gIHZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24obm9kZTogUGFyZW50aGVzaXplZEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCIoXCIpO1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgc2IucHVzaChcIilcIik7XG4gIH1cblxuICB2aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgIHRoaXMuc2IucHVzaChcIi5cIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUucHJvcGVydHkpO1xuICB9XG5cbiAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlOiBUZXJuYXJ5RXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIgPyBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5pZlRoZW4pO1xuICAgIHNiLnB1c2goXCIgOiBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5pZkVsc2UpO1xuICB9XG5cbiAgdmlzaXRVbmFyeUV4cHJlc3Npb24obm9kZTogVW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKG5vZGU6IFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9wZXJhbmQpO1xuICAgIHRoaXMuc2IucHVzaChvcGVyYXRvclRva2VuVG9TdHJpbmcobm9kZS5vcGVyYXRvcikpO1xuICB9XG5cbiAgdmlzaXRVbmFyeVByZWZpeEV4cHJlc3Npb24obm9kZTogVW5hcnlQcmVmaXhFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy5zYi5wdXNoKG9wZXJhdG9yVG9rZW5Ub1N0cmluZyhub2RlLm9wZXJhdG9yKSk7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcGVyYW5kKTtcbiAgfVxuXG4gIC8vIHN0YXRlbWVudHNcblxuICB2aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50OiBTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShzdGF0ZW1lbnQpO1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgaWYgKFxuICAgICAgIXNiLmxlbmd0aCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVhZGluZyBFbXB0eVN0YXRlbWVudFxuICAgICAgc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuVkFSSUFCTEUgfHwgLy8gcG90ZW50aWFsbHkgYXNzaWducyBhIEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgICAgc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuRVhQUkVTU0lPTiAgLy8gcG90ZW50aWFsbHkgYXNzaWducyBhIEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgICkge1xuICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsYXN0ID0gc2Jbc2IubGVuZ3RoIC0gMV07XG4gICAgICBsZXQgbGFzdENoYXJQb3MgPSBsYXN0Lmxlbmd0aCAtIDE7XG4gICAgICBpZiAobGFzdENoYXJQb3MgPj0gMCAmJiAoXG4gICAgICAgIGxhc3QuY2hhckNvZGVBdChsYXN0Q2hhclBvcykgPT0gQ2hhckNvZGUuQ0xPU0VCUkFDRSB8fFxuICAgICAgICBsYXN0LmNoYXJDb2RlQXQobGFzdENoYXJQb3MpID09IENoYXJDb2RlLlNFTUlDT0xPTilcbiAgICAgICkge1xuICAgICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRCbG9ja1N0YXRlbWVudChub2RlOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIHN0YXRlbWVudHMgPSBub2RlLnN0YXRlbWVudHM7XG4gICAgdmFyIG51bVN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzLmxlbmd0aDtcbiAgICBpZiAobnVtU3RhdGVtZW50cykge1xuICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICBsZXQgaW5kZW50TGV2ZWwgPSArK3RoaXMuaW5kZW50TGV2ZWw7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVN0YXRlbWVudHM7ICsraSkge1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICBpbmRlbnQoc2IsIC0tdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICBzYi5wdXNoKFwifVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcInt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QnJlYWtTdGF0ZW1lbnQobm9kZTogQnJlYWtTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgbGFiZWwgPSBub2RlLmxhYmVsO1xuICAgIGlmIChsYWJlbCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiYnJlYWsgXCIpO1xuICAgICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKGxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiYnJlYWtcIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRDb250aW51ZVN0YXRlbWVudChub2RlOiBDb250aW51ZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBsYWJlbCA9IG5vZGUubGFiZWw7XG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJjb250aW51ZSBcIik7XG4gICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJjb250aW51ZVwiKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgZGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycztcbiAgICBpZiAoZGVjb3JhdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcihkZWNvcmF0b3JzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5BQlNUUkFDVCkpIHNiLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgaWYgKG5vZGUubmFtZS50ZXh0Lmxlbmd0aCkge1xuICAgICAgc2IucHVzaChcImNsYXNzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiY2xhc3NcIik7XG4gICAgfVxuICAgIHZhciB0eXBlUGFyYW1ldGVycyA9IG5vZGUudHlwZVBhcmFtZXRlcnM7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCkge1xuICAgICAgc2IucHVzaChcIjxcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZVBhcmFtZXRlcih0eXBlUGFyYW1ldGVyc1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMSwgayA9IHR5cGVQYXJhbWV0ZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKHR5cGVQYXJhbWV0ZXJzW2ldKTtcbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCI+XCIpO1xuICAgIH1cbiAgICB2YXIgZXh0ZW5kc1R5cGUgPSBub2RlLmV4dGVuZHNUeXBlO1xuICAgIGlmIChleHRlbmRzVHlwZSkge1xuICAgICAgc2IucHVzaChcIiBleHRlbmRzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRUeXBlTm9kZShleHRlbmRzVHlwZSk7XG4gICAgfVxuICAgIHZhciBpbXBsZW1lbnRzVHlwZXMgPSBub2RlLmltcGxlbWVudHNUeXBlcztcbiAgICBpZiAoaW1wbGVtZW50c1R5cGVzKSB7XG4gICAgICBsZXQgbnVtSW1wbGVtZW50c1R5cGVzID0gaW1wbGVtZW50c1R5cGVzLmxlbmd0aDtcbiAgICAgIGlmIChudW1JbXBsZW1lbnRzVHlwZXMpIHtcbiAgICAgICAgc2IucHVzaChcIiBpbXBsZW1lbnRzIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGltcGxlbWVudHNUeXBlc1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtSW1wbGVtZW50c1R5cGVzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGltcGxlbWVudHNUeXBlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1lbWJlcnMgPSBub2RlLm1lbWJlcnM7XG4gICAgdmFyIG51bU1lbWJlcnMgPSBtZW1iZXJzLmxlbmd0aDtcbiAgICBpZiAobnVtTWVtYmVycykge1xuICAgICAgc2IucHVzaChcIiB7XFxuXCIpO1xuICAgICAgbGV0IGluZGVudExldmVsID0gKyt0aGlzLmluZGVudExldmVsO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBtZW1iZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICBsZXQgbWVtYmVyID0gbWVtYmVyc1tpXTtcbiAgICAgICAgaWYgKG1lbWJlci5raW5kICE9IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT04gfHwgKDxGaWVsZERlY2xhcmF0aW9uPm1lbWJlcikucGFyYW1ldGVySW5kZXggPCAwKSB7XG4gICAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUobWVtYmVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW5kZW50KHNiLCAtLXRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIn1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIge31cIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXREb1N0YXRlbWVudChub2RlOiBEb1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImRvIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gICAgaWYgKG5vZGUuc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuQkxPQ0spIHtcbiAgICAgIHNiLnB1c2goXCIgd2hpbGUgKFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIndoaWxlIChcIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29uZGl0aW9uKTtcbiAgICBzYi5wdXNoKFwiKVwiKTtcbiAgfVxuXG4gIHZpc2l0RW1wdHlTdGF0ZW1lbnQobm9kZTogRW1wdHlTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgfVxuXG4gIHZpc2l0RW51bURlY2xhcmF0aW9uKG5vZGU6IEVudW1EZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQgZGVmYXVsdCBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLkNPTlNUKSkgc2IucHVzaChcImNvbnN0IFwiKTtcbiAgICBzYi5wdXNoKFwiZW51bSBcIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubmFtZSk7XG4gICAgdmFyIHZhbHVlcyA9IG5vZGUudmFsdWVzO1xuICAgIHZhciBudW1WYWx1ZXMgPSB2YWx1ZXMubGVuZ3RoO1xuICAgIGlmIChudW1WYWx1ZXMpIHtcbiAgICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdEVudW1WYWx1ZURlY2xhcmF0aW9uKG5vZGUudmFsdWVzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVmFsdWVzOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIixcXG5cIik7XG4gICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLnZpc2l0RW51bVZhbHVlRGVjbGFyYXRpb24obm9kZS52YWx1ZXNbaV0pO1xuICAgICAgfVxuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICAgIGluZGVudChzYiwgLS10aGlzLmluZGVudExldmVsKTtcbiAgICAgIHNiLnB1c2goXCJ9XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiIHt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RW51bVZhbHVlRGVjbGFyYXRpb24obm9kZTogRW51bVZhbHVlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS52YWx1ZSkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFeHBvcnRJbXBvcnRTdGF0ZW1lbnQobm9kZTogRXhwb3J0SW1wb3J0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKFwiZXhwb3J0IGltcG9ydCBcIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUuZXh0ZXJuYWxOYW1lKTtcbiAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICB9XG5cbiAgdmlzaXRFeHBvcnRNZW1iZXIobm9kZTogRXhwb3J0TWVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubG9jYWxOYW1lKTtcbiAgICBpZiAobm9kZS5leHBvcnRlZE5hbWUudGV4dCAhPSBub2RlLmxvY2FsTmFtZS50ZXh0KSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCIgYXMgXCIpO1xuICAgICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUuZXhwb3J0ZWROYW1lKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cG9ydFN0YXRlbWVudChub2RlOiBFeHBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChub2RlLmlzRGVjbGFyZSkge1xuICAgICAgc2IucHVzaChcImRlY2xhcmUgXCIpO1xuICAgIH1cbiAgICB2YXIgbWVtYmVycyA9IG5vZGUubWVtYmVycztcbiAgICBpZiAobWVtYmVycyAmJiBtZW1iZXJzLmxlbmd0aCkge1xuICAgICAgbGV0IG51bU1lbWJlcnMgPSBtZW1iZXJzLmxlbmd0aDtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdEV4cG9ydE1lbWJlcihtZW1iZXJzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtTWVtYmVyczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsXFxuXCIpO1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydE1lbWJlcihtZW1iZXJzW2ldKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIHNiLnB1c2goXCJcXG59XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IHt9XCIpO1xuICAgIH1cbiAgICB2YXIgcGF0aCA9IG5vZGUucGF0aDtcbiAgICBpZiAocGF0aCkge1xuICAgICAgc2IucHVzaChcIiBmcm9tIFwiKTtcbiAgICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihwYXRoKTtcbiAgICB9XG4gICAgc2IucHVzaChcIjtcIik7XG4gIH1cblxuICB2aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQobm9kZTogRXhwb3J0RGVmYXVsdFN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBkZWNsYXJhdGlvbiA9IG5vZGUuZGVjbGFyYXRpb247XG4gICAgc3dpdGNoIChkZWNsYXJhdGlvbi5raW5kKSB7XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RW51bURlY2xhcmF0aW9uKDxFbnVtRGVjbGFyYXRpb24+ZGVjbGFyYXRpb24sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5kZWNsYXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPmRlY2xhcmF0aW9uLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklOVEVSRkFDRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbig8SW50ZXJmYWNlRGVjbGFyYXRpb24+ZGVjbGFyYXRpb24sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkFNRVNQQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVzcGFjZURlY2xhcmF0aW9uKDxOYW1lc3BhY2VEZWNsYXJhdGlvbj5kZWNsYXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cHJlc3Npb25TdGF0ZW1lbnQobm9kZTogRXhwcmVzc2lvblN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZpZWxkRGVjbGFyYXRpb24obm9kZTogRmllbGREZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhub2RlKTtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChub2RlLmZsYWdzICYgQ29tbW9uRmxhZ3MuREVGSU5JVEVfQVNTSUdOTUVOVCkge1xuICAgICAgc2IucHVzaChcIiFcIik7XG4gICAgfVxuICAgIHZhciB0eXBlID0gbm9kZS50eXBlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZSk7XG4gICAgfVxuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUoaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0Rm9yU3RhdGVtZW50KG5vZGU6IEZvclN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImZvciAoXCIpO1xuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShpbml0aWFsaXplcik7XG4gICAgfVxuICAgIHZhciBjb25kaXRpb24gPSBub2RlLmNvbmRpdGlvbjtcbiAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICBzYi5wdXNoKFwiOyBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShjb25kaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiO1wiKTtcbiAgICB9XG4gICAgdmFyIGluY3JlbWVudG9yID0gbm9kZS5pbmNyZW1lbnRvcjtcbiAgICBpZiAoaW5jcmVtZW50b3IpIHtcbiAgICAgIHNiLnB1c2goXCI7IFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGluY3JlbWVudG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcIjtcIik7XG4gICAgfVxuICAgIHNiLnB1c2goXCIpIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZTogRnVuY3Rpb25EZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgICAgdGhpcy5zZXJpYWxpemVBY2Nlc3NNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLm5hbWUudGV4dC5sZW5ndGgpIHtcbiAgICAgIHNiLnB1c2goXCJmdW5jdGlvbiBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCJmdW5jdGlvblwiKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdEZ1bmN0aW9uQ29tbW9uKG5vZGUpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkNvbW1vbihub2RlOiBGdW5jdGlvbkRlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgc2lnbmF0dXJlID0gbm9kZS5zaWduYXR1cmU7XG4gICAgdmFyIHR5cGVQYXJhbWV0ZXJzID0gbm9kZS50eXBlUGFyYW1ldGVycztcbiAgICBpZiAodHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgIGxldCBudW1UeXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICAgIGlmIChudW1UeXBlUGFyYW1ldGVycykge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVR5cGVQYXJhbWV0ZXJzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHNiLnB1c2goXCI+XCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5hcnJvd0tpbmQgPT0gQXJyb3dLaW5kLkFSUk9XX1NJTkdMRSkge1xuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICAgIGFzc2VydChwYXJhbWV0ZXJzLmxlbmd0aCA9PSAxKTtcbiAgICAgIGFzc2VydCghc2lnbmF0dXJlLmV4cGxpY2l0VGhpc1R5cGUpO1xuICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIoXCIpO1xuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICAgIGxldCBudW1QYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBsZXQgZXhwbGljaXRUaGlzVHlwZSA9IHNpZ25hdHVyZS5leHBsaWNpdFRoaXNUeXBlO1xuICAgICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHtcbiAgICAgICAgc2IucHVzaChcInRoaXM6IFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGV4cGxpY2l0VGhpc1R5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKG51bVBhcmFtZXRlcnMpIHtcbiAgICAgICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICAgIHRoaXMuc2VyaWFsaXplUGFyYW1ldGVyKHBhcmFtZXRlcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBib2R5ID0gbm9kZS5ib2R5O1xuICAgIHZhciByZXR1cm5UeXBlID0gc2lnbmF0dXJlLnJldHVyblR5cGU7XG4gICAgaWYgKG5vZGUuYXJyb3dLaW5kKSB7XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBpZiAobm9kZS5hcnJvd0tpbmQgPT0gQXJyb3dLaW5kLkFSUk9XX1NJTkdMRSkge1xuICAgICAgICAgIGFzc2VydChpc1R5cGVPbWl0dGVkKHJldHVyblR5cGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNUeXBlT21pdHRlZChyZXR1cm5UeXBlKSkge1xuICAgICAgICAgICAgc2IucHVzaChcIilcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNiLnB1c2goXCIpOiBcIik7XG4gICAgICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNiLnB1c2goXCIgPT4gXCIpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShib2R5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VydCghaXNUeXBlT21pdHRlZChyZXR1cm5UeXBlKSk7XG4gICAgICAgIHNiLnB1c2goXCIgPT4gXCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzVHlwZU9taXR0ZWQocmV0dXJuVHlwZSkgJiZcbiAgICAgICAgIW5vZGUuaXNBbnkoQ29tbW9uRmxhZ3MuQ09OU1RSVUNUT1IgfCBDb21tb25GbGFncy5TRVQpXG4gICAgICApIHtcbiAgICAgICAgc2IucHVzaChcIik6IFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHJldHVyblR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2IucHVzaChcIilcIik7XG4gICAgICB9XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUoYm9keSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRJZlN0YXRlbWVudChub2RlOiBJZlN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImlmIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIpIFwiKTtcbiAgICB2YXIgaWZUcnVlID0gbm9kZS5pZlRydWU7XG4gICAgdGhpcy52aXNpdE5vZGUoaWZUcnVlKTtcbiAgICBpZiAoaWZUcnVlLmtpbmQgIT0gTm9kZUtpbmQuQkxPQ0spIHtcbiAgICAgIHNiLnB1c2goXCI7XFxuXCIpO1xuICAgIH1cbiAgICB2YXIgaWZGYWxzZSA9IG5vZGUuaWZGYWxzZTtcbiAgICBpZiAoaWZGYWxzZSkge1xuICAgICAgaWYgKGlmVHJ1ZS5raW5kID09IE5vZGVLaW5kLkJMT0NLKSB7XG4gICAgICAgIHNiLnB1c2goXCIgZWxzZSBcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzYi5wdXNoKFwiZWxzZSBcIik7XG4gICAgICB9XG4gICAgICB0aGlzLnZpc2l0Tm9kZShpZkZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IEltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdmFyIGV4dGVybmFsTmFtZSA9IG5vZGUuZm9yZWlnbk5hbWU7XG4gICAgdmFyIG5hbWUgPSBub2RlLm5hbWU7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKGV4dGVybmFsTmFtZSk7XG4gICAgaWYgKGV4dGVybmFsTmFtZS50ZXh0ICE9IG5hbWUudGV4dCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiIGFzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihuYW1lKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEltcG9ydFN0YXRlbWVudChub2RlOiBJbXBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCJpbXBvcnQgXCIpO1xuICAgIHZhciBkZWNsYXJhdGlvbnMgPSBub2RlLmRlY2xhcmF0aW9ucztcbiAgICB2YXIgbmFtZXNwYWNlTmFtZSA9IG5vZGUubmFtZXNwYWNlTmFtZTtcbiAgICBpZiAoZGVjbGFyYXRpb25zKSB7XG4gICAgICBsZXQgbnVtRGVjbGFyYXRpb25zID0gZGVjbGFyYXRpb25zLmxlbmd0aDtcbiAgICAgIGlmIChudW1EZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbihkZWNsYXJhdGlvbnNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bURlY2xhcmF0aW9uczsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIixcXG5cIik7XG4gICAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgICAgdGhpcy52aXNpdEltcG9ydERlY2xhcmF0aW9uKGRlY2xhcmF0aW9uc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgLS10aGlzLmluZGVudExldmVsO1xuICAgICAgICBzYi5wdXNoKFwiXFxufSBmcm9tIFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNiLnB1c2goXCJ7fSBmcm9tIFwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZU5hbWUpIHtcbiAgICAgIHNiLnB1c2goXCIqIGFzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihuYW1lc3BhY2VOYW1lKTtcbiAgICAgIHNiLnB1c2goXCIgZnJvbSBcIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihub2RlLnBhdGgpO1xuICB9XG5cbiAgdmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG5vZGU6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCJba2V5OiBcIik7XG4gICAgdGhpcy52aXNpdFR5cGVOb2RlKG5vZGUua2V5VHlwZSk7XG4gICAgc2IucHVzaChcIl06IFwiKTtcbiAgICB0aGlzLnZpc2l0VHlwZU5vZGUobm9kZS52YWx1ZVR5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbihub2RlOiBJbnRlcmZhY2VEZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgZGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycztcbiAgICBpZiAoZGVjb3JhdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcihkZWNvcmF0b3JzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgIH1cbiAgICBzYi5wdXNoKFwiaW50ZXJmYWNlIFwiKTtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSBub2RlLnR5cGVQYXJhbWV0ZXJzO1xuICAgIGlmICh0eXBlUGFyYW1ldGVycyAmJiB0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgIHNiLnB1c2goXCI8XCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDEsIGsgPSB0eXBlUGFyYW1ldGVycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZVBhcmFtZXRlcih0eXBlUGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICB9XG4gICAgdmFyIGV4dGVuZHNUeXBlID0gbm9kZS5leHRlbmRzVHlwZTtcbiAgICBpZiAoZXh0ZW5kc1R5cGUpIHtcbiAgICAgIHNiLnB1c2goXCIgZXh0ZW5kcyBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZXh0ZW5kc1R5cGUpO1xuICAgIH1cbiAgICAvLyBtdXN0IG5vdCBoYXZlIGltcGxlbWVudHNUeXBlc1xuICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICB2YXIgaW5kZW50TGV2ZWwgPSArK3RoaXMuaW5kZW50TGV2ZWw7XG4gICAgdmFyIG1lbWJlcnMgPSBub2RlLm1lbWJlcnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBtZW1iZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICB0aGlzLnZpc2l0Tm9kZUFuZFRlcm1pbmF0ZShtZW1iZXJzW2ldKTtcbiAgICB9XG4gICAgLS10aGlzLmluZGVudExldmVsO1xuICAgIHNiLnB1c2goXCJ9XCIpO1xuICB9XG5cbiAgdmlzaXRNZXRob2REZWNsYXJhdGlvbihub2RlOiBNZXRob2REZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhub2RlKTtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5HRVQpKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJnZXQgXCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5pcyhDb21tb25GbGFncy5TRVQpKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJzZXQgXCIpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0RnVuY3Rpb25Db21tb24obm9kZSk7XG4gIH1cblxuICB2aXNpdE5hbWVzcGFjZURlY2xhcmF0aW9uKG5vZGU6IE5hbWVzcGFjZURlY2xhcmF0aW9uLCBpc0RlZmF1bHQ6IGJvb2wgPSBmYWxzZSk6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQgZGVmYXVsdCBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIHNiLnB1c2goXCJuYW1lc3BhY2UgXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciBtZW1iZXJzID0gbm9kZS5tZW1iZXJzO1xuICAgIHZhciBudW1NZW1iZXJzID0gbWVtYmVycy5sZW5ndGg7XG4gICAgaWYgKG51bU1lbWJlcnMpIHtcbiAgICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gbWVtYmVycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKG1lbWJlcnNbaV0pO1xuICAgICAgfVxuICAgICAgaW5kZW50KHNiLCAtLXRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIn1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIge31cIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRSZXR1cm5TdGF0ZW1lbnQobm9kZTogUmV0dXJuU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHZhbHVlID0gbm9kZS52YWx1ZTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2IucHVzaChcInJldHVybiBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2IucHVzaChcInJldHVyblwiKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFN3aXRjaENhc2Uobm9kZTogU3dpdGNoQ2FzZSk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIGxhYmVsID0gbm9kZS5sYWJlbDtcbiAgICBpZiAobGFiZWwpIHtcbiAgICAgIHNiLnB1c2goXCJjYXNlIFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGxhYmVsKTtcbiAgICAgIHNiLnB1c2goXCI6XFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiZGVmYXVsdDpcXG5cIik7XG4gICAgfVxuICAgIHZhciBzdGF0ZW1lbnRzID0gbm9kZS5zdGF0ZW1lbnRzO1xuICAgIHZhciBudW1TdGF0ZW1lbnRzID0gc3RhdGVtZW50cy5sZW5ndGg7XG4gICAgaWYgKG51bVN0YXRlbWVudHMpIHtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVN0YXRlbWVudHM7ICsraSkge1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICAtLXRoaXMuaW5kZW50TGV2ZWw7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTd2l0Y2hTdGF0ZW1lbnQobm9kZTogU3dpdGNoU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKFwic3dpdGNoIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIpIHtcXG5cIik7XG4gICAgdmFyIGluZGVudExldmVsID0gKyt0aGlzLmluZGVudExldmVsO1xuICAgIHZhciBjYXNlcyA9IG5vZGUuY2FzZXM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBjYXNlcy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdFN3aXRjaENhc2UoY2FzZXNbaV0pO1xuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICB9XG4gICAgLS10aGlzLmluZGVudExldmVsO1xuICAgIHNiLnB1c2goXCJ9XCIpO1xuICB9XG5cbiAgdmlzaXRUaHJvd1N0YXRlbWVudChub2RlOiBUaHJvd1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuc2IucHVzaChcInRocm93IFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnZhbHVlKTtcbiAgfVxuXG4gIHZpc2l0VHJ5U3RhdGVtZW50KG5vZGU6IFRyeVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcInRyeSB7XFxuXCIpO1xuICAgIHZhciBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICB2YXIgc3RhdGVtZW50cyA9IG5vZGUuc3RhdGVtZW50cztcbiAgICBmb3IgKGxldCBpID0gMCwgayA9IHN0YXRlbWVudHMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKHN0YXRlbWVudHNbaV0pO1xuICAgIH1cbiAgICB2YXIgY2F0Y2hWYXJpYWJsZSA9IG5vZGUuY2F0Y2hWYXJpYWJsZTtcbiAgICBpZiAoY2F0Y2hWYXJpYWJsZSkge1xuICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCAtIDEpO1xuICAgICAgc2IucHVzaChcIn0gY2F0Y2ggKFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihjYXRjaFZhcmlhYmxlKTtcbiAgICAgIHNiLnB1c2goXCIpIHtcXG5cIik7XG4gICAgICBsZXQgY2F0Y2hTdGF0ZW1lbnRzID0gbm9kZS5jYXRjaFN0YXRlbWVudHM7XG4gICAgICBpZiAoY2F0Y2hTdGF0ZW1lbnRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gY2F0Y2hTdGF0ZW1lbnRzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKGNhdGNoU3RhdGVtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGZpbmFsbHlTdGF0ZW1lbnRzID0gbm9kZS5maW5hbGx5U3RhdGVtZW50cztcbiAgICBpZiAoZmluYWxseVN0YXRlbWVudHMpIHtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwgLSAxKTtcbiAgICAgIHNiLnB1c2goXCJ9IGZpbmFsbHkge1xcblwiKTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gZmluYWxseVN0YXRlbWVudHMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZUFuZFRlcm1pbmF0ZShmaW5hbGx5U3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwgLSAxKTtcbiAgICBzYi5wdXNoKFwifVwiKTtcbiAgfVxuXG4gIHZpc2l0VHlwZURlY2xhcmF0aW9uKG5vZGU6IFR5cGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgc2IucHVzaChcInR5cGUgXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlUGFyYW1ldGVycyA9IG5vZGUudHlwZVBhcmFtZXRlcnM7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzKSB7XG4gICAgICBsZXQgbnVtVHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBpZiAobnVtVHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgICAgc2IucHVzaChcIjxcIik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtVHlwZVBhcmFtZXRlcnM7ICsraSkge1xuICAgICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKHR5cGVQYXJhbWV0ZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2IucHVzaChcIiA9IFwiKTtcbiAgICB0aGlzLnZpc2l0VHlwZU5vZGUobm9kZS50eXBlKTtcbiAgfVxuXG4gIHZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbihub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubmFtZSk7XG4gICAgdmFyIHR5cGUgPSBub2RlLnR5cGU7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5mbGFncyAmIENvbW1vbkZsYWdzLkRFRklOSVRFX0FTU0lHTk1FTlQpIHtcbiAgICAgIHNiLnB1c2goXCIhXCIpO1xuICAgIH1cbiAgICBpZiAodHlwZSkge1xuICAgICAgc2IucHVzaChcIjogXCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHR5cGUpO1xuICAgIH1cbiAgICB2YXIgaW5pdGlhbGl6ZXIgPSBub2RlLmluaXRpYWxpemVyO1xuICAgIGlmIChpbml0aWFsaXplcikge1xuICAgICAgc2IucHVzaChcIiA9IFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGluaXRpYWxpemVyKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlU3RhdGVtZW50KG5vZGU6IFZhcmlhYmxlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIGRlY29yYXRvcnMgPSBub2RlLmRlY29yYXRvcnM7XG4gICAgaWYgKGRlY29yYXRvcnMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gZGVjb3JhdG9ycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVEZWNvcmF0b3IoZGVjb3JhdG9yc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIGRlY2xhcmF0aW9ucyA9IG5vZGUuZGVjbGFyYXRpb25zO1xuICAgIHZhciBudW1EZWNsYXJhdGlvbnMgPSBhc3NlcnQoZGVjbGFyYXRpb25zLmxlbmd0aCk7XG4gICAgdmFyIGZpcnN0RGVjbGFyYXRpb24gPSBkZWNsYXJhdGlvbnNbMF07XG4gICAgdGhpcy5zZXJpYWxpemVFeHRlcm5hbE1vZGlmaWVycyhmaXJzdERlY2xhcmF0aW9uKTtcbiAgICBzYi5wdXNoKGZpcnN0RGVjbGFyYXRpb24uaXMoQ29tbW9uRmxhZ3MuQ09OU1QpID8gXCJjb25zdCBcIiA6IGZpcnN0RGVjbGFyYXRpb24uaXMoQ29tbW9uRmxhZ3MuTEVUKSA/IFwibGV0IFwiIDogXCJ2YXIgXCIpO1xuICAgIHRoaXMudmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUuZGVjbGFyYXRpb25zWzBdKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bURlY2xhcmF0aW9uczsgKytpKSB7XG4gICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICB0aGlzLnZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbihub2RlLmRlY2xhcmF0aW9uc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRXaGlsZVN0YXRlbWVudChub2RlOiBXaGlsZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIndoaWxlIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHZhciBzdGF0ZW1lbnQgPSBub2RlLnN0YXRlbWVudDtcbiAgICBpZiAoc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuRU1QVFkpIHtcbiAgICAgIHNiLnB1c2goXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiKSBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gb3RoZXJcblxuICBzZXJpYWxpemVEZWNvcmF0b3Iobm9kZTogRGVjb3JhdG9yTm9kZSk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIkBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICB2YXIgYXJncyA9IG5vZGUuYXJndW1lbnRzO1xuICAgIGlmIChhcmdzKSB7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICAgIGxldCBudW1BcmdzID0gYXJncy5sZW5ndGg7XG4gICAgICBpZiAobnVtQXJncykge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShhcmdzWzBdKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1BcmdzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdE5vZGUoYXJnc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCIpXFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgIH1cbiAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICB9XG5cbiAgc2VyaWFsaXplUGFyYW1ldGVyKG5vZGU6IFBhcmFtZXRlck5vZGUpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBraW5kID0gbm9kZS5wYXJhbWV0ZXJLaW5kO1xuICAgIHZhciBpbXBsaWNpdEZpZWxkRGVjbGFyYXRpb24gPSBub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbjtcbiAgICBpZiAoaW1wbGljaXRGaWVsZERlY2xhcmF0aW9uKSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhpbXBsaWNpdEZpZWxkRGVjbGFyYXRpb24pO1xuICAgIH1cbiAgICBpZiAoa2luZCA9PSBQYXJhbWV0ZXJLaW5kLlJFU1QpIHtcbiAgICAgIHNiLnB1c2goXCIuLi5cIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlID0gbm9kZS50eXBlO1xuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGlmIChraW5kID09IFBhcmFtZXRlcktpbmQuT1BUSU9OQUwgJiYgIWluaXRpYWxpemVyKSBzYi5wdXNoKFwiP1wiKTtcbiAgICAgIGlmICghaXNUeXBlT21pdHRlZCh0eXBlKSkge1xuICAgICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZSh0eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUoaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGU6IERlY2xhcmF0aW9uU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5FWFBPUlQpKSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuSU1QT1JUKSkge1xuICAgICAgc2IucHVzaChcImltcG9ydCBcIik7XG4gICAgfSBlbHNlIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLkRFQ0xBUkUpKSB7XG4gICAgICBzYi5wdXNoKFwiZGVjbGFyZSBcIik7XG4gICAgfVxuICB9XG5cbiAgc2VyaWFsaXplQWNjZXNzTW9kaWZpZXJzKG5vZGU6IERlY2xhcmF0aW9uU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5QVUJMSUMpKSB7XG4gICAgICBzYi5wdXNoKFwicHVibGljIFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuUFJJVkFURSkpIHtcbiAgICAgIHNiLnB1c2goXCJwcml2YXRlIFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuUFJPVEVDVEVEKSkge1xuICAgICAgc2IucHVzaChcInByb3RlY3RlZCBcIik7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLlNUQVRJQykpIHtcbiAgICAgIHNiLnB1c2goXCJzdGF0aWMgXCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5pcyhDb21tb25GbGFncy5BQlNUUkFDVCkpIHtcbiAgICAgIHNiLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLlJFQURPTkxZKSkge1xuICAgICAgc2IucHVzaChcInJlYWRvbmx5IFwiKTtcbiAgICB9XG4gIH1cblxuICBmaW5pc2goKTogc3RyaW5nIHtcbiAgICB2YXIgcmV0ID0gdGhpcy5zYi5qb2luKFwiXCIpO1xuICAgIHRoaXMuc2IgPSBbXTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG4iXX0= - -/***/ }), - -/***/ "./src/visitor.ts": -/*!************************!*\ - !*** ./src/visitor.ts ***! - \************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; -var __read = (this && this.__read) || function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// export type Collection = NonNullCollection| null; -var isIterable = function (object) { - //@ts-ignore - return object != null && typeof object[Symbol.iterator] === "function"; -}; -var DefaultWriter = /** @class */ (function () { - function DefaultWriter() { - } - DefaultWriter.prototype.writeString = function (s) { }; - DefaultWriter.prototype.writeNode = function (node) { }; - return DefaultWriter; -}()); -exports.DefaultWriter = DefaultWriter; -var AbstractVisitor = /** @class */ (function () { - function AbstractVisitor(writer) { - if (writer === void 0) { writer = new DefaultWriter(); } - this.writer = writer; - } - AbstractVisitor.prototype.writeString = function (str) { - return this.writeString(str); - }; - AbstractVisitor.prototype.writeNode = function (item) { - this.writer.writeNode(item); - }; - AbstractVisitor.prototype.visit = function (node) { - var e_1, _a, e_2, _b; - var _this = this; - if (node == null) - return; - if (node instanceof Array) { - node.map(function (node) { _this.visit(node); }); - } - else if (node instanceof Map) { - try { - for (var _c = __values(node.entries()), _d = _c.next(); !_d.done; _d = _c.next()) { - var _e = __read(_d.value, 2), key = _e[0], _node = _e[1]; - this.visit(_node); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_d && !_d.done && (_a = _c.return)) _a.call(_c); - } - finally { if (e_1) throw e_1.error; } - } - //@ts-ignore Need a better way to test type - } - else if (isIterable(node)) { - try { - //TODO: Find better way to test if iterable - for (var node_1 = __values(node), node_1_1 = node_1.next(); !node_1_1.done; node_1_1 = node_1.next()) { - var _node = node_1_1.value; - this.visit(_node); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (node_1_1 && !node_1_1.done && (_b = node_1.return)) _b.call(node_1); - } - finally { if (e_2) throw e_2.error; } - } - } - else { - //@ts-ignore Node is not iterable. - this._visit(node); - } - }; - return AbstractVisitor; -}()); -exports.AbstractVisitor = AbstractVisitor; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aXNpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSwwREFBMEQ7QUFFMUQsSUFBTSxVQUFVLEdBQUcsVUFBQyxNQUFjO0lBQ2hDLFlBQVk7SUFDWixPQUFBLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVU7QUFBL0QsQ0FBK0QsQ0FBQztBQU9sRTtJQUFBO0lBSUEsQ0FBQztJQUhDLG1DQUFXLEdBQVgsVUFBWSxDQUFTLElBQVUsQ0FBQztJQUNoQyxpQ0FBUyxHQUFULFVBQVUsSUFBbUIsSUFBUyxDQUFDO0lBRXpDLG9CQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7QUFKWSxzQ0FBYTtBQU0xQjtJQUVFLHlCQUFzQixNQUEwQztRQUExQyx1QkFBQSxFQUFBLGFBQXdCLGFBQWEsRUFBSztRQUExQyxXQUFNLEdBQU4sTUFBTSxDQUFvQztJQUFHLENBQUM7SUFFcEUscUNBQVcsR0FBWCxVQUFZLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxtQ0FBUyxHQUFULFVBQVUsSUFBbUI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELCtCQUFLLEdBQUwsVUFBTSxJQUEwQjs7UUFBaEMsaUJBa0JDO1FBakJDLElBQUksSUFBSSxJQUFJLElBQUk7WUFBRSxPQUFPO1FBQ3pCLElBQUksSUFBSSxZQUFZLEtBQUssRUFBRTtZQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUMsSUFBTyxJQUFhLEtBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRDthQUFNLElBQUksSUFBSSxZQUFZLEdBQUcsRUFBRTs7Z0JBQzlCLEtBQXlCLElBQUEsS0FBQSxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBaEMsSUFBQSx3QkFBWSxFQUFYLFdBQUcsRUFBRSxhQUFLO29CQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNuQjs7Ozs7Ozs7O1lBQ0QsMkNBQTJDO1NBQzVDO2FBQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7O2dCQUN6QiwyQ0FBMkM7Z0JBQzdDLEtBQWtCLElBQUEsU0FBQSxTQUFBLElBQUksQ0FBQSwwQkFBQSw0Q0FBRTtvQkFBbkIsSUFBSSxLQUFLLGlCQUFBO29CQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3JCOzs7Ozs7Ozs7U0FDRjthQUFNO1lBQ0wsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBR0gsc0JBQUM7QUFBRCxDQUFDLEFBakNELElBaUNDO0FBakNxQiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvbjxUPiA9IFQgfCBUW10gfCBNYXA8c3RyaW5nLCBUIHwgVFtdIHwgSXRlcmFibGU8VD4+IHwgSXRlcmFibGU8VD47XG4vLyBleHBvcnQgdHlwZSBDb2xsZWN0aW9uPFQ+ID0gTm9uTnVsbENvbGxlY3Rpb248VD58IG51bGw7XG5cbmNvbnN0IGlzSXRlcmFibGUgPSAob2JqZWN0OiBvYmplY3QpOiBib29sZWFuID0+XG4gIC8vQHRzLWlnbm9yZVxuICBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0W1N5bWJvbC5pdGVyYXRvcl0gPT09IFwiZnVuY3Rpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZXI8VD4ge1xuICB3cml0ZVN0cmluZyh4OiBDb2xsZWN0aW9uPFQ+IHwgc3RyaW5nKTogdm9pZDtcbiAgd3JpdGVOb2RlKHg6IENvbGxlY3Rpb248VD4pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFdyaXRlcjxUPiBpbXBsZW1lbnRzIFdyaXRlcjxUPiB7XG4gIHdyaXRlU3RyaW5nKHM6IHN0cmluZyk6IHZvaWQgeyB9XG4gIHdyaXRlTm9kZShub2RlOiBDb2xsZWN0aW9uPFQ+KTogdm9pZCB7fVxuXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZpc2l0b3I8VD4ge1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB3cml0ZXI6IFdyaXRlcjxUPiA9IG5ldyBEZWZhdWx0V3JpdGVyPFQ+KCkpIHt9XG5cbiAgd3JpdGVTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLndyaXRlU3RyaW5nKHN0cik7XG4gIH1cblxuICB3cml0ZU5vZGUoaXRlbTogQ29sbGVjdGlvbjxUPiApOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlci53cml0ZU5vZGUoaXRlbSk7XG4gIH1cblxuICB2aXNpdChub2RlOiBDb2xsZWN0aW9uPFQ+IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChub2RlID09IG51bGwpIHJldHVybjtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBub2RlLm1hcCgobm9kZTogVCk6IHZvaWQgPT4geyB0aGlzLnZpc2l0KG5vZGUpOyB9KTtcbiAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgIGZvciAobGV0IFtrZXksIF9ub2RlXSBvZiBub2RlLmVudHJpZXMoKSkge1xuICAgICAgICB0aGlzLnZpc2l0KF9ub2RlKTtcbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZSBOZWVkIGEgYmV0dGVyIHdheSB0byB0ZXN0IHR5cGVcbiAgICB9IGVsc2UgaWYgKGlzSXRlcmFibGUobm9kZSkpIHtcbiAgICAgICAgLy9UT0RPOiBGaW5kIGJldHRlciB3YXkgdG8gdGVzdCBpZiBpdGVyYWJsZVxuICAgICAgZm9yIChsZXQgX25vZGUgb2Ygbm9kZSkge1xuICAgICAgICAgIHRoaXMudmlzaXQoX25vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvL0B0cy1pZ25vcmUgTm9kZSBpcyBub3QgaXRlcmFibGUuXG4gICAgICB0aGlzLl92aXNpdChub2RlKTtcbiAgICB9XG4gIH1cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF92aXNpdChub2RlOiBUKTogdm9pZDtcblxufVxuIl19 - -/***/ }) - -/******/ }); -}); -//# sourceMappingURL=transformerBundle.js.map \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.transformer=t():e.transformer=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=6)}([function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]="SOURCE",e[e.NAMEDTYPE=1]="NAMEDTYPE",e[e.FUNCTIONTYPE=2]="FUNCTIONTYPE",e[e.TYPENAME=3]="TYPENAME",e[e.TYPEPARAMETER=4]="TYPEPARAMETER",e[e.PARAMETER=5]="PARAMETER",e[e.IDENTIFIER=6]="IDENTIFIER",e[e.ASSERTION=7]="ASSERTION",e[e.BINARY=8]="BINARY",e[e.CALL=9]="CALL",e[e.CLASS=10]="CLASS",e[e.COMMA=11]="COMMA",e[e.ELEMENTACCESS=12]="ELEMENTACCESS",e[e.FALSE=13]="FALSE",e[e.FUNCTION=14]="FUNCTION",e[e.INSTANCEOF=15]="INSTANCEOF",e[e.LITERAL=16]="LITERAL",e[e.NEW=17]="NEW",e[e.NULL=18]="NULL",e[e.PARENTHESIZED=19]="PARENTHESIZED",e[e.PROPERTYACCESS=20]="PROPERTYACCESS",e[e.TERNARY=21]="TERNARY",e[e.SUPER=22]="SUPER",e[e.THIS=23]="THIS",e[e.TRUE=24]="TRUE",e[e.CONSTRUCTOR=25]="CONSTRUCTOR",e[e.UNARYPOSTFIX=26]="UNARYPOSTFIX",e[e.UNARYPREFIX=27]="UNARYPREFIX",e[e.BLOCK=28]="BLOCK",e[e.BREAK=29]="BREAK",e[e.CONTINUE=30]="CONTINUE",e[e.DO=31]="DO",e[e.EMPTY=32]="EMPTY",e[e.EXPORT=33]="EXPORT",e[e.EXPORTDEFAULT=34]="EXPORTDEFAULT",e[e.EXPORTIMPORT=35]="EXPORTIMPORT",e[e.EXPRESSION=36]="EXPRESSION",e[e.FOR=37]="FOR",e[e.IF=38]="IF",e[e.IMPORT=39]="IMPORT",e[e.RETURN=40]="RETURN",e[e.SWITCH=41]="SWITCH",e[e.THROW=42]="THROW",e[e.TRY=43]="TRY",e[e.VARIABLE=44]="VARIABLE",e[e.VOID=45]="VOID",e[e.WHILE=46]="WHILE",e[e.CLASSDECLARATION=47]="CLASSDECLARATION",e[e.ENUMDECLARATION=48]="ENUMDECLARATION",e[e.ENUMVALUEDECLARATION=49]="ENUMVALUEDECLARATION",e[e.FIELDDECLARATION=50]="FIELDDECLARATION",e[e.FUNCTIONDECLARATION=51]="FUNCTIONDECLARATION",e[e.IMPORTDECLARATION=52]="IMPORTDECLARATION",e[e.INDEXSIGNATUREDECLARATION=53]="INDEXSIGNATUREDECLARATION",e[e.INTERFACEDECLARATION=54]="INTERFACEDECLARATION",e[e.METHODDECLARATION=55]="METHODDECLARATION",e[e.NAMESPACEDECLARATION=56]="NAMESPACEDECLARATION",e[e.TYPEDECLARATION=57]="TYPEDECLARATION",e[e.VARIABLEDECLARATION=58]="VARIABLEDECLARATION",e[e.DECORATOR=59]="DECORATOR",e[e.EXPORTMEMBER=60]="EXPORTMEMBER",e[e.SWITCHCASE=61]="SWITCHCASE",e[e.COMMENT=62]="COMMENT"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName("",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text="",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new j;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(".")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]="DEFAULT",e[e.OPTIONAL=1]="OPTIONAL",e[e.REST=2]="REST"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if("builtin"==t)return E.BUILTIN;break;case 101:if("external"==t)return E.EXTERNAL;break;case 103:if("global"==t)return E.GLOBAL;break;case 105:if("inline"==t)return E.INLINE;break;case 108:if("lazy"==t)return E.LAZY;break;case 111:if("operator"==t)return E.OPERATOR;break;case 115:if("sealed"==t)return E.SEALED;break;case 117:if("unmanaged"==t)return E.UNMANAGED;if("unsafe"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),"operator"==t)switch(i.charCodeAt(0)){case 98:if("binary"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case"prefix":return E.OPERATOR_PREFIX;case"postfix":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]="CUSTOM",e[e.GLOBAL=1]="GLOBAL",e[e.OPERATOR=2]="OPERATOR",e[e.OPERATOR_BINARY=3]="OPERATOR_BINARY",e[e.OPERATOR_PREFIX=4]="OPERATOR_PREFIX",e[e.OPERATOR_POSTFIX=5]="OPERATOR_POSTFIX",e[e.UNMANAGED=6]="UNMANAGED",e[e.SEALED=7]="SEALED",e[e.INLINE=8]="INLINE",e[e.EXTERNAL=9]="EXTERNAL",e[e.BUILTIN=10]="BUILTIN",e[e.LAZY=11]="LAZY",e[e.UNSAFE=12]="UNSAFE"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]="LINE",e[e.TRIPLE=1]="TRIPLE",e[e.BLOCK=2]="BLOCK"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]="FLOAT",e[e.INTEGER=1]="INTEGER",e[e.STRING=2]="STRING",e[e.REGEXP=3]="REGEXP",e[e.ARRAY=4]="ARRAY",e[e.OBJECT=5]="OBJECT"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]="PREFIX",e[e.AS=1]="AS",e[e.NONNULL=2]="NONNULL"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,"typeArgumentsRange",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"argumentsRange",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text="constructor",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text="null",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text="super",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text="this",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text="true",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text="false",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=j;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=Q;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(Q);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(Q);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]="USER",e[e.USER_ENTRY=1]="USER_ENTRY",e[e.LIBRARY=2]="LIBRARY",e[e.LIBRARY_ENTRY=3]="LIBRARY_ENTRY"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i";case s.LESSTHAN_EQUALS:return"<=";case s.GREATERTHAN_EQUALS:return">=";case s.EQUALS_EQUALS:return"==";case s.EXCLAMATION_EQUALS:return"!=";case s.EQUALS_EQUALS_EQUALS:return"===";case s.EXCLAMATION_EQUALS_EQUALS:return"!==";case s.PLUS:return"+";case s.MINUS:return"-";case s.ASTERISK_ASTERISK:return"**";case s.ASTERISK:return"*";case s.SLASH:return"/";case s.PERCENT:return"%";case s.PLUS_PLUS:return"++";case s.MINUS_MINUS:return"--";case s.LESSTHAN_LESSTHAN:return"<<";case s.GREATERTHAN_GREATERTHAN:return">>";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case s.AMPERSAND:return"&";case s.BAR:return"|";case s.CARET:return"^";case s.EXCLAMATION:return"!";case s.TILDE:return"~";case s.AMPERSAND_AMPERSAND:return"&&";case s.BAR_BAR:return"||";case s.EQUALS:return"=";case s.PLUS_EQUALS:return"+=";case s.MINUS_EQUALS:return"-=";case s.ASTERISK_EQUALS:return"*=";case s.ASTERISK_ASTERISK_EQUALS:return"**=";case s.SLASH_EQUALS:return"/=";case s.PERCENT_EQUALS:return"%=";case s.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case s.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case s.AMPERSAND_EQUALS:return"&=";case s.BAR_EQUALS:return"|=";case s.CARET_EQUALS:return"^=";default:return assert(!1),""}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error("source mismatch");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes("@nearfile")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},t.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return"void"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),s=p(n).includes("null"),a=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+a+"(): void {"),i.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==p(n)?this.sb.push(" let result: "+p(n)+" = "+a+"("):this.sb.push(" "+a+"("),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==p(n)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+r+">() || isNullable<"+r+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+r+">(encoder, result"+(s?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+a+" as "+a+" }\n")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+="<"+e.typeParameters.map(p).join(", ")+">"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf("}")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var r=t.typeName(n);i+="\n static decode(json: Uint8Array): "+r+" {\n let value = instantiate<"+r+">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): "+r+' {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, "argument must be Uint8Array or Json Object");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): '+r+" {\n "+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,"this."+t+' = obj.has("'+t+'") ? ')+": this."+t+";"})}(n).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return"encode<"+t+">(encoder, this."+i+', "'+i+'");'})}(n).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return i});return this.sb.concat(i).join("\n")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=""),t+"decode<"+p(e.type)+', Obj>(obj, "'+p(e.name)+'")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf("\n")).includes("out");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t("out/"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?"":"./")+n.normalizedPath,h(n))})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(t.Feature||(t.Feature={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(t.Target||(t.Target={}))},function(e,t,i){"use strict";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),""}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE="",t.COLOR_YELLOW="",t.COLOR_RED="",t.COLOR_RESET="",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace("{0}",n)),null!=s&&(o=o.replace("{1}",s)),null!=a&&(o=o.replace("{2}",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:"."}function a(e){var t=e.length;if(t<=1){if(0==t)return".";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return"."}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith("std/")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=" ",r=" ",s=" ";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){"use strict";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i")}e.isNullable&&n.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?"((":"(");var n=e.explicitThisType;n&&(i.push("this: "),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(", "),this.serializeParameter(r[0]);for(var a=1;a "),this.visitTypeNode(o)):i.push(") => void"),t&&i.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(" extends "),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push("="),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push("[");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(" as "),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(" "),t.push(a.operatorTokenToString(e.operator)),t.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push("<"),this.visitTypeNode(i[0]);for(var r=1;r(")}}else t.push("(");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push("\\0"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\b");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\t");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\n");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\v");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\f");break;case 13:s>n&&i.push(e.substring(n,s)),i.push("\\r"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push("\\'"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push("\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push("/"),t.push(e.pattern),t.push("/"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push("("),this.visitNode(e.expression),t.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(" ? "),this.visitNode(e.ifThen),t.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push("\n"):t.push(";\n")}else t.push(";\n")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push("{\n");for(var r=++this.indentLevel,a=0;a")}var _=e.extendsType;_&&(u.push(" extends "),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(" implements "),this.visitTypeNode(p[0]);for(a=1;a")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push("(");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push("this: "),this.visitTypeNode(_)),c){_&&t.push(", "),this.serializeParameter(u[0]);for(o=1;o "),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(" => "),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(")"):(t.push("): "),this.visitTypeNode(h)),p&&(t.push(" "),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push("if ("),this.visitNode(e.condition),t.push(") ");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(";\n");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(" else "):t.push("else "),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(" as "),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push("import ");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push("{\n");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o")}var u=e.extendsType;u&&(a.push(" extends "),this.visitTypeNode(u)),a.push(" {\n");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n")}}r.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push("!"),t&&(i.push(": "),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(" = "),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name="UnreachableError",r.prototype.message="unreachable",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name="AssertionError",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return"number"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return"object"==typeof e||"string"==typeof e},t.isFunction=function(e){return"function"==typeof e},t.isString=function(e){return"string"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return A;if("number"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error("division by zero");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&"function"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])}); \ No newline at end of file diff --git a/dist/asc.js b/dist/asc.js index 37338027ba..240d395cad 100644 --- a/dist/asc.js +++ b/dist/asc.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e.assemblyscript)}("undefined"!=typeof self?self:this,function(__WEBPACK_EXTERNAL_MODULE__11__){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=4)}([function(e,n,t){var r,i;n.nextTick=function(e){var n=Array.prototype.slice.call(arguments);n.shift(),setTimeout(function(){e.apply(null,n)},0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(1)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!=typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!=typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(0))},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n){},function(e,n,t){e.exports=t(5)},function(module,exports,__webpack_require__){(function(process,global){process.browser&&(process.cwd=function(){return"."});const fs=__webpack_require__(3),path=__webpack_require__(1),utf8=__webpack_require__(6),colorsUtil=__webpack_require__(7),optionsUtil=__webpack_require__(8),mkdirp=__webpack_require__(9),EOL="win32"===process.platform?"\r\n":"\n",SEP="win32"===process.platform?"\\":"/",nearBindings=__webpack_require__(10),nearLibEntry=path.join(".","..","bindings","assembly","nearEntry.ts");process.removeAllListeners&&process.removeAllListeners("uncaughtException");var assemblyscript,isDev=!1;function checkDiagnostics(e,n){for(var t,r=!1;null!=(t=assemblyscript.nextDiagnostic(e));)n&&n.write(assemblyscript.formatDiagnostic(t,n.isTTY,!0)+EOL+EOL),assemblyscript.isError(t)&&(r=!0);return r}function createStats(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function measure(e){const n=process.hrtime();e();const t=process.hrtime(n);return 1e9*t[0]+t[1]}function formatTime(e){return e?(e/1e6).toFixed(3)+" ms":"N/A"}function printStats(e,n){function t(e,n){return formatTime(e)}(n||process.stdout).write(["I/O Read : "+t(e.readTime,e.readCount),"I/O Write : "+t(e.writeTime,e.writeCount),"Parse : "+t(e.parseTime,e.parseCount),"Compile : "+t(e.compileTime,e.compileCount),"Emit : "+t(e.emitTime,e.emitCount),"Validate : "+t(e.validateTime,e.validateCount),"Optimize : "+t(e.optimizeTime,e.optimizeCount)].join(EOL)+EOL)}function printRTTI(e,n){n||(n=process.stderr),n.write("# Runtime type information (RTTI)\n"),n.write(assemblyscript.buildRTTI(e))}(()=>{try{assemblyscript=__webpack_require__(11)}catch(e){try{__webpack_require__(!function(){var e=new Error("Cannot find module 'ts-node'");throw e.code="MODULE_NOT_FOUND",e}()).register({project:path.join(".","..","src","tsconfig.json")}),__webpack_require__(!function(){var e=new Error("Cannot find module '../src/glue/js'");throw e.code="MODULE_NOT_FOUND",e}()),assemblyscript=__webpack_require__(!function(){var e=new Error("Cannot find module '../src'");throw e.code="MODULE_NOT_FOUND",e}()),isDev=!0}catch(e_ts){try{assemblyscript=eval("require('./assemblyscript')")}catch(e){throw e.stack=e_ts.stack+"\n---\n"+e.stack,e}}}})(),exports.isBundle=!0,exports.isDev=isDev,exports.version=exports.isBundle?"0.7.0":__webpack_require__(!function(){var e=new Error("Cannot find module '../package.json'");throw e.code="MODULE_NOT_FOUND",e}()).version,exports.options=__webpack_require__(12),exports.sourceMapRoot="assemblyscript:///",exports.libraryPrefix=assemblyscript.LIBRARY_PREFIX,exports.defaultOptimizeLevel=3,exports.defaultShrinkLevel=1,exports.libraryFiles=exports.isBundle?Object({nearEntry:'\nimport { storage, near, base64, base58 } from \'near-runtime-ts\';\n//@ts-ignore\nimport { Buffer } from "assemblyscript-json/util";\nimport { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\nimport { u128 } from "bignum";\n// Runtime functions\n// tslint:disable: no-unsafe-any\n\n\n\ntype Usize = u64;\n//@ts-ignore\n@global\n@external("env", "read_register")\ndeclare function read_register(register_id: Usize, ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "register_len")\ndeclare function register_len(register_id: Usize): Usize;\n\n//@ts-ignore\n@global\n@external("env", "input")\ndeclare function input(register_id: Usize): void;\n//@ts-ignore\n@global\n@external("env", "value_return")\ndeclare function value_return(value_len: Usize, value_ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "panic")\ndeclare function panic(): void;\n\n\n\n/// \n\nabstract class Value {\n static String(str: string): Value {\n return new Str(str)\n }\n static Number(num: i64): Value {\n return new Num(num)\n }\n static Bool(b: bool): Value {\n return new Bools(b)\n }\n static Null(): Value {\n return new Null();\n }\n static Array(): Value {\n return new Arr();\n }\n static Object(): Value {\n return new Obj();\n }\n\n toString(): string {\n if (this instanceof Str){\n return (this).toString();\n }\n if (this instanceof Num){\n return (this).toString();\n }\n if (this instanceof Bools){\n return (this).toString();\n }\n if (this instanceof Null){\n return (this).toString();\n }\n if (this instanceof Arr){\n return (this).toString();\n }\n if (this instanceof Obj){\n return (this).toString();\n }\n return "Value";\n }\n}\n@global\nclass Str extends Value {\n constructor(public _str: string) {\n super();\n }\n\n toString(): string {\n return "\\"" + this._str + "\\"";\n }\n}\n@global\nclass Num extends Value {\n constructor(public _num: i64) {\n super();\n }\n\n toString(): string {\n return this._num.toString();\n }\n}\n@global\nclass Null extends Value {\n constructor() {\n super();\n }\n\n toString(): string {\n return "null";\n }\n}\n\n@global class Bools extends Value {\n constructor(public _bool: bool) {\n super();\n }\n\n toString(): string {\n return this._bool.toString();\n }\n}\n\n@global\nclass Arr extends Value {\n _arr: Array;\n constructor() {\n super();\n this._arr = new Array();\n }\n\n push(obj: Value): void {\n this._arr.push(obj)\n }\n\n toString(): string {\n return "[" + this._arr.map((val: Value,i: i32,_arr: Value[]): string => val.toString()).join(",") + "]";\n }\n}\n\n@global\nclass Obj extends Value {\n _obj: Map;\n keys: Array;\n\n constructor() {\n super();\n this._obj = new Map();\n this.keys = new Array();\n }\n\n set(key: string, value: Value): void {\n if (!this._obj.has(key)) {\n this.keys.push(key);\n }\n this._obj.set(key, value);\n }\n\n get(key: string): Value | null {\n if (!this._obj.has(key)) {\n return null;\n }\n return this._obj.get(key)\n }\n\n toString(): string {\n let objs: string[] = []\n for (let i: i32 = 0; i < this.keys.length; i++){\n objs.push("\\"" +this.keys[i]+"\\":"+ this._obj.get(this.keys[i]).toString());\n }\n return "{"+ objs.join(",") + "}"\n }\n\n has(key: string): bool {\n return this._obj.has(key);\n }\n}\n\nclass Handler extends ThrowingJSONHandler {\n stack: Value[];\n constructor() {\n super();\n this.stack = new Array();\n }\n\n reset(): void {\n while (this.stack.length > 0){\n this.stack.pop();\n }\n }\n\n get peek(): Value {\n return this.stack[this.stack.length - 1];\n }\n\n setString(name: string, value: string): void {\n let obj: Value = Value.String(value);\n this.addValue(name, obj);\n }\n\n setBoolean(name: string, value: bool): void {\n let obj = Value.Bool(value);\n this.addValue(name, obj);\n }\n\n setNull(name: string): void {\n let obj = Value.Null();\n this.addValue(name, obj);\n }\n\n setInteger(name: string, value: i64): void {\n let obj = Value.Number(value);\n this.addValue(name, obj);\n }\n\n pushArray(name: string): bool {\n let obj: Value = Value.Array();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popArray(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n pushObject(name: string): bool {\n let obj: Value = Value.Object();\n this.addValue(name, obj);\n this.stack.push(obj)\n return true;\n }\n\n popObject(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n addValue(name: string, obj: Value): void {\n if (name.length == 0 && obj instanceof Obj && this.stack.length == 0) {\n this.stack.push(obj);\n return;\n }\n if (this.peek instanceof Obj) {\n (this.peek as Obj).set(name, obj)\n }\n else if (this.peek instanceof Arr) {\n (this.peek).push(obj);\n }\n }\n}\n\n\n@global()\nclass JSON {\n // private static handler: Handler = new Handler();\n static parse(str: Uint8Array ): Obj {\n let decoder = new JSONDecoder(new Handler());\n decoder.deserialize(str);\n let res = decoder.handler.peek as Obj;\n return res;\n }\n}\n\n\n\n\n\n\n//@ts-ignore\n@global\nfunction encode(encoder: JSONEncoder, value: T, name: string | null = ""): JSONEncoder {\n if (isBoolean()) {\n //@ts-ignore\n encoder.setBoolean(name, value);\n } else if (isInteger()) {\n if (value instanceof i64 || value instanceof u64) {\n //@ts-ignore\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n encoder.setInteger(name, value);\n }\n //@ts-ignore\n } else if (value == null) {\n encoder.setNull(name);\n } else if (isString()) {\n //@ts-ignore\n encoder.setString(name, value);\n } else if (isReference()) {\n if (isArrayLike(value)) {\n if (value instanceof Uint8Array) {\n //@ts-ignore\n encoder.setString(name, base64.encode( value));\n } else {\n encoder.pushArray(name);\n for (let i: i32 = 0; i < value.length; i++) {\n //@ts-ignore\n encode(encoder, value[i], null);\n }\n encoder.popArray();\n }\n } else { // Is an object\n if (value instanceof u128){\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n value.encode(encoder, name);\n }\n }\n } else {\n throw new Error("Encoding failed");\n }\n return encoder;\n}\n\n@inline\nfunction getStr(val: Value, name: String): string {\n assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null");\n return (val)._str;\n \n \n}\n\nfunction decodeArray(val: Value, name: string): Array {\n assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null.");\n let res = new Array();\n let arr = (val)._arr;\n for (let i: i32 = 0; i < arr.length; i++){\n let item: T = decode(arr[i]);\n res.push(item);\n }\n return res;\n}\n\n\n//@ts-ignore\n@global\nfunction decode(buffer: Value, name: string = ""): T {\n let val: Value;\n if (buffer instanceof Obj && name != ""){\n const obj: Obj = buffer;\n let res = obj.get(name);\n if (res == null){\n //@ts-ignore\n return null\n }\n val = res;\n }else {\n val = buffer;\n }\n if (val instanceof Null) {\n assert(isReference() || isArrayLike() || isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable.");\n //@ts-ignore\n return null;\n }\n if (isString()) {\n //@ts-ignore\n return getStr(val, name);\n }\n if (isBoolean()) {\n assert(val instanceof Bools, "Value with Key: "+ name + " with type " + nameof() +" is not a string");\n //@ts-ignore\n return (val)._bool\n }\n var value: T;\n if (isInteger()) {\n //@ts-ignore\n if (value instanceof u64 || value instanceof i64) {\n assert(val instanceof Str, "Value with Key: "+ name + " with type " + nameof() +" is an 64-bit integer and is expected to be encoded as a string");\n let str = (val)._str;\n //@ts-ignore\n return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str);\n }\n assert(val instanceof Num, "Value with Key: "+ name + " with type " + nameof() +" is not an Integer");\n //@ts-ignore\n return (val)._num;\n }\n assert(isReference(), name + " with type " + nameof() + " must be an integer, boolean, string, object, or array");\n if (isArrayLike()) {\n //@ts-ignore\n if (value instanceof Uint8Array ) {\n //@ts-ignore\n return base64.decode(getStr(val, name)) \n }\n //@ts-ignore\n // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array")\n //@ts-ignore only checking the instance\n return decodeArray>(val, name);\n }\n if (val instanceof Str){\n //@ts-ignore\n if (value instanceof u128) {\n //@ts-ignore\n return u128.fromString(getStr(val, name));\n }\n }\n assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null")\n value = instantiate();\n //@ts-ignore\n return value.decode(val);\n}\n',array:'/// \n\nimport { BLOCK_MAXSIZE } from "./rt/common";\nimport { COMPARATOR, SORT } from "./util/sort";\nimport { ArrayBuffer, ArrayBufferView } from "./arraybuffer";\nimport { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";\nimport { idof, isArray as builtin_isArray } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error";\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureSize(array: usize, minSize: usize, alignLog2: u32): void {\n var oldCapacity = changetype(array).dataLength;\n if (minSize > oldCapacity >>> alignLog2) {\n if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).data);\n let newCapacity = minSize << alignLog2;\n let newData = __realloc(oldData, newCapacity);\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n if (newData !== oldData) { // oldData has been free\'d\n store(changetype(array), __retain(newData), offsetof("data"));\n changetype(array).dataStart = newData;\n }\n changetype(array).dataLength = newCapacity;\n }\n}\n\nexport class Array extends ArrayBufferView {\n [key: number]: T;\n\n // Implementing ArrayBufferView isn\'t strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).\n\n // Also note that Array with non-nullable T must guard against implicit null values whenever\n // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn\'t be\n // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return builtin_isArray(value) && value !== null;\n }\n\n static create(capacity: i32 = 0): Array {\n if (capacity > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n var array = changetype>(__allocArray(capacity, alignof(), idof())); // retains\n changetype>(array).length_ = 0; // safe even if T is a non-nullable reference\n memory.fill(array.dataStart, 0, array.dataLength);\n return array;\n }\n\n constructor(length: i32 = 0) {\n super(length, alignof());\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n this.length_ = length;\n }\n\n @unsafe get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n var oldLength = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (newLength > oldLength) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) { // release no longer used refs\n if (oldLength > newLength) {\n let dataStart = this.dataStart;\n do __release(load(dataStart + (--oldLength << alignof())));\n while (oldLength > newLength);\n // no need to zero memory on shrink -> is zeroed on grow\n }\n }\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (!fn(load(this.dataStart + (index << alignof())), index, this)) return false;\n }\n return true;\n }\n\n findIndex(predicate: (value: T, index: i32, array: Array) => bool): i32 {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (predicate(load(this.dataStart + (index << alignof())), index, this)) return index;\n }\n return -1;\n }\n\n @operator("[]") private __get(index: i32): T {\n if (isReference()) {\n if (!isNullable()) {\n if (index >= this.length_) throw new Error(E_HOLEYARRAY);\n }\n }\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n var length = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (index > length) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), index + 1, alignof());\n this.__unchecked_set(index, value);\n if (index >= length) this.length_ = index + 1;\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = this.dataStart + (index << alignof());\n let oldRef: usize = load(offset);\n if (changetype(value) != oldRef) {\n store(offset, __retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n store(this.dataStart + (index << alignof()), value);\n }\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (isManaged()) {\n for (; start < end; ++start) {\n let oldRef: usize = load(dataStart + (start << alignof()));\n if (changetype(value) != oldRef) {\n store(dataStart + (start << alignof()), __retain(changetype(value)));\n __release(oldRef);\n }\n }\n } else if (sizeof() == 1) {\n if (start < end) {\n memory.fill(\n dataStart + start,\n u8(value),\n (end - start)\n );\n }\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n return this.indexOf(value, fromIndex) >= 0;\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var length = this.length_;\n if (length == 0 || fromIndex >= length) return -1;\n if (fromIndex < 0) fromIndex = max(length + fromIndex, 0);\n var dataStart = this.dataStart;\n while (fromIndex < length) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var length = this.length_;\n if (length == 0) return -1;\n if (fromIndex < 0) fromIndex = length + fromIndex;\n else if (fromIndex >= length) fromIndex = length - 1;\n var dataStart = this.dataStart;\n while (fromIndex >= 0) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var length = this.length_;\n var newLength = length + 1;\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) {\n store(this.dataStart + (length << alignof()), __retain(changetype(value)));\n } else {\n store(this.dataStart + (length << alignof()), value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = select(0, other.length_, other === null);\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, __retain(ref));\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, __retain(ref));\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n if (isManaged()) {\n if (from < to && to < (from + count)) { // right to left\n from += count - 1;\n to += count - 1;\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n --from, --to, --count;\n }\n } else { // left to right\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n ++from, ++to, --count;\n }\n }\n } else {\n memory.copy( // is memmove\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n }\n return this;\n }\n\n pop(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var element = load(this.dataStart + ((--length) << alignof()));\n this.length_ = length;\n return element; // no need to retain -> is moved\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n fn(load(this.dataStart + (index << alignof())), index, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var length = this.length_;\n var out = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n for (let index = 0; index < min(length, this.length_); ++index) {\n let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains\n if (isManaged()) {\n store(outStart + (index << alignof()), __retain(changetype(result)));\n } else {\n store(outStart + (index << alignof()), result);\n }\n // releases result\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n let value = load(this.dataStart + (index << alignof()));\n if (fn(value, index, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = this.length_ - 1; index >= 0; --index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n shift(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = length - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n store(base + (lastIndex << alignof()),\n // @ts-ignore: cast\n null\n );\n this.length_ = lastIndex;\n return element; // no need to retain -> is moved\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (fn(load(this.dataStart + (index << alignof())), index, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var newLength = this.length_ + 1;\n ensureSize(changetype(this), newLength, alignof());\n var dataStart = this.dataStart;\n memory.copy(\n dataStart + sizeof(),\n dataStart,\n (newLength - 1) << alignof()\n );\n if (isManaged()) {\n store(dataStart, __retain(changetype(value)));\n } else {\n store(dataStart, value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(start + length, 0) : min(start, length);\n end = end < 0 ? max(end + length, 0) : min(end , length);\n length = max(end - start, 0);\n var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = length << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, __retain(ref));\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, length << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n deleteCount = max(min(deleteCount, length - start), 0);\n var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n if (isManaged()) {\n for (let i = 0; i < deleteCount; ++i) {\n store(resultStart + (i << alignof()),\n load(thisBase + (i << alignof()))\n );\n // no need to retain -> is moved\n }\n } else {\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n }\n var offset = start + deleteCount;\n if (length != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (length - offset) << alignof()\n );\n }\n this.length_ = length - deleteCount;\n return result;\n }\n\n reverse(): Array {\n var length = this.length_;\n if (length) {\n let front = this.dataStart;\n let back = this.dataStart + ((length - 1) << alignof());\n while (front < back) {\n let temp = load(front);\n store(front, load(back));\n store(back, temp);\n front += sizeof();\n back -= sizeof();\n }\n }\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this {\n var length = this.length_;\n if (length <= 1) return this;\n var base = this.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b;\n store(base, a); // arr[0] = a;\n }\n return this;\n }\n SORT(base, length, comparator);\n return this;\n }\n\n join(separator: string = ","): string {\n if (isBoolean()) return this.join_bool(separator);\n if (isInteger()) return this.join_int(separator);\n if (isFloat()) return this.join_flt(separator);\n if (isString()) return this.join_str(separator);\n if (isArray()) return this.join_arr(separator);\n if (isReference()) return this.join_ref(separator);\n ERROR("unspported element type");\n return unreachable();\n }\n\n private join_bool(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return select("true", "false", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len("false")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_int(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n // @ts-ignore: type\n if (!lastIndex) return changetype(itoa(load(dataStart))); // retains\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_flt(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n ); // retains\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_str(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return load(dataStart);\n\n var sepLen = separator.length;\n var estLen = 0;\n var value: string | null;\n for (let i = 0, len = lastIndex + 1; i < len; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) estLen += value.length;\n }\n var offset = 0;\n var result = changetype(__alloc((estLen + sepLen * lastIndex) << 1, idof())); // retains\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) {\n let valueLen = changetype(value).length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (value !== null) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n changetype(value).length << 1\n );\n }\n return result;\n }\n\n private join_arr(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n\n var result = "";\n var sepLen = separator.length;\n var base = this.dataStart;\n var value: T;\n if (!lastIndex) {\n value = load(base);\n // @ts-ignore: type\n return value ? value.join(separator) : "";\n }\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n if (sepLen) result += separator;\n }\n value = load(base + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n return result; // registered by concatenation (FIXME: lots of garbage)\n }\n\n private join_ref(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var base = this.dataStart;\n if (!lastIndex) return "[object Object]";\n\n const valueLen = 15; // max possible length of element len("[object Object]")\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n if (value) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n if (load(base + (lastIndex << alignof()))) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n // automatically visits ArrayBufferView (.data) next\n }\n}\n',arraybuffer:'/// \n\nimport { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INVALIDLENGTH } from "./util/error";\n\nexport abstract class ArrayBufferView {\n\n @unsafe data: ArrayBuffer;\n @unsafe dataStart: usize;\n @unsafe dataLength: u32;\n\n protected constructor(length: i32, alignLog2: i32) {\n if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length = length << alignLog2, idof());\n memory.fill(buffer, 0, length);\n this.data = changetype(buffer); // retains\n this.dataStart = buffer;\n this.dataLength = length;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n get length(): i32 {\n ERROR("missing implementation: subclasses must implement ArrayBufferView#length");\n return unreachable();\n }\n}\n\n@sealed export class ArrayBuffer {\n\n static isView(value: T): bool {\n if (value) {\n if (value instanceof Int8Array) return true;\n if (value instanceof Uint8Array) return true;\n if (value instanceof Uint8ClampedArray) return true;\n if (value instanceof Int16Array) return true;\n if (value instanceof Uint16Array) return true;\n if (value instanceof Int32Array) return true;\n if (value instanceof Uint32Array) return true;\n if (value instanceof Int64Array) return true;\n if (value instanceof Uint64Array) return true;\n if (value instanceof Float32Array) return true;\n if (value instanceof Float64Array) return true;\n if (value instanceof DataView) return true;\n }\n return false;\n }\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length, idof());\n memory.fill(buffer, 0, length);\n return changetype(buffer); // retains\n }\n\n get byteLength(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n }\n\n slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer {\n var length = this.byteLength;\n begin = begin < 0 ? max(length + begin, 0) : min(begin, length);\n end = end < 0 ? max(length + end , 0) : min(end , length);\n var outSize = max(end - begin, 0);\n var out = __alloc(outSize, idof());\n memory.copy(out, changetype(this) + begin, outSize);\n return changetype(out); // retains\n }\n\n toString(): string {\n return "[object ArrayBuffer]";\n }\n}\n',"bindings/Date":"export declare function UTC(\n // NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for\n // converting the value to the WASM/JS boundary.\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: f64\n): f64;\nexport declare function now(): f64;\n","bindings/Math":"export declare const E: f64;\nexport declare const LN2: f64;\nexport declare const LN10: f64;\nexport declare const LOG2E: f64;\nexport declare const LOG10E: f64;\nexport declare const PI: f64;\nexport declare const SQRT1_2: f64;\nexport declare const SQRT2: f64;\n\nexport declare function abs(x: f64): f64;\nexport declare function acos(x: f64): f64;\nexport declare function acosh(x: f64): f64;\nexport declare function asin(x: f64): f64;\nexport declare function asinh(x: f64): f64;\nexport declare function atan(x: f64): f64;\nexport declare function atan2(y: f64, x: f64): f64;\nexport declare function atanh(x: f64): f64;\nexport declare function cbrt(x: f64): f64;\nexport declare function ceil(x: f64): f64;\nexport declare function clz32(x: f64): f64;\nexport declare function cos(x: f64): f64;\nexport declare function cosh(x: f64): f64;\nexport declare function exp(x: f64): f64;\nexport declare function expm1(x: f64): f64;\nexport declare function floor(x: f64): f64;\nexport declare function fround(x: f64): f32;\nexport declare function hypot(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function imul(a: f64, b: f64): f64;\nexport declare function log(x: f64): f64;\nexport declare function log10(x: f64): f64;\nexport declare function log1p(x: f64): f64;\nexport declare function log2(x: f64): f64;\nexport declare function max(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function min(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function pow(base: f64, exponent: f64): f64;\nexport declare function random(): f64;\nexport declare function round(x: f64): f64;\nexport declare function sign(x: f64): f64;\nexport declare function sin(x: f64): f64;\nexport declare function sinh(x: f64): f64;\nexport declare function sqrt(x: f64): f64;\nexport declare function tan(x: f64): f64;\nexport declare function tanh(x: f64): f64;\nexport declare function trunc(x: f64): f64;\n","bindings/wasi_unstable":"// see: https://wasi.dev\n\n/* tslint:disable:max-line-length */\n\n// helper types to be more explicit\ntype char = u8;\ntype ptr = usize; // all pointers are usize'd\ntype struct = T; // structs are references already in AS\n\n/** Read command-line argument data. */\nexport declare function args_get(\n /** Input: Pointer to a buffer to write the argument pointers. */\n argv: ptr>,\n /** Input: Pointer to a buffer to write the argument string data. */\n argv_buf: ptr\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function args_sizes_get(\n /** Output: Number of arguments. */\n argc: ptr,\n /** Output: Size of the argument string data. */\n argv_buf_size: ptr\n): errno;\n\n/** Return the resolution of a clock. */\nexport declare function clock_res_get(\n /** Input: The clock for which to return the resolution. */\n clock: clockid,\n /** Output: The resolution of the clock. */\n resolution: ptr\n): errno;\n\n/** Return the time value of a clock. */\nexport declare function clock_time_get(\n /** Input: Cock for which to return the time. */\n clock: clockid,\n /** Input: Maximum lag (exclusive) that the returned time value may have, compared to its actual value. */\n precision: timestamp,\n /** Output: Time value of the clock. */\n time: ptr\n): errno;\n\n/** Read environment variable data. */\nexport declare function environ_get(\n /** Input: Pointer to a buffer to write the environment variable pointers. */\n environ: ptr,\n /** Input: Pointer to a buffer to write the environment variable string data. */\n environ_buf: usize\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function environ_sizes_get(\n /** Output: The number of environment variables. */\n environ_count: ptr,\n /** Output: The size of the environment variable string data. */\n environ_buf_size: ptr\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_advise(\n /** Input: The file descriptor for the file for which to provide file advisory information. */\n fd: fd,\n /** Input: The offset within the file to which the advisory applies. */\n offset: filesize,\n /** Input: The length of the region to which the advisory applies. */\n len: filesize,\n /** Input: The advice. */\n advice: advice\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_allocate(\n /** Input: The file descriptor for the file in which to allocate space. */\n fd: fd,\n /** Input: The offset at which to start the allocation. */\n offset: filesize,\n /** Input: The length of the area that is allocated. */\n len: filesize\n): errno;\n\n/** Close a file descriptor. */\nexport declare function fd_close(\n /** Input: The file descriptor to close. */\n fd: fd\n): errno;\n\n/** Synchronize the data of a file to disk. */\nexport declare function fd_datasync(\n /** Input: The file descriptor of the file to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Get the attributes of a file descriptor. */\nexport declare function fd_fdstat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file descriptor's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the flags associated with a file descriptor. */\nexport declare function fd_fdstat_set_flags(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the file descriptor flags. */\n flags: fdflags\n): errno;\n\n/** Adjust the rights associated with a file descriptor. */\nexport declare function fd_fdstat_set_rights(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_base: rights,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_inheriting: rights\n): errno;\n\n/** Return the attributes of an open file. */\nexport declare function fd_filestat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */\nexport declare function fd_filestat_set_size(\n /** Input: A file descriptor for the file to adjust. */\n fd: fd,\n /** Input: The desired file size. */\n size: filesize\n): errno;\n\n/** Adjust the timestamps of an open file or directory. */\nexport declare function fd_filestat_set_times(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Read from a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pread(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors in which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors in which to store data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to read. */\n offset: filesize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_get(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: The buffer where the description is stored. */\n buf: struct\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_dir_name(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: Buffer into which to write the preopened directory name. */\n path: ptr,\n /** Input: Length of the buffer into which to write the preopened directory name. */\n path_len: usize\n): errno;\n\n/** Write to a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pwrite(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to write. */\n offset: filesize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/** Read from a file descriptor. */\nexport declare function fd_read(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors to which to store data. */\n iovs_len: usize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Read directory entries from a directory. */\nexport declare function fd_readdir(\n /** Input: Directory from which to read the directory entries. */\n fd: fd,\n /** Input: Buffer where directory entries are stored. */\n buf: ptr>,\n /** Input: Length of the buffer where directory entries are stored. */\n buf_len: usize,\n /** Input: Location within the directory to start reading. */\n cookie: dircookie,\n /** Output: Number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. */\n buf_used: ptr\n): errno;\n\n/** Atomically replace a file descriptor by renumbering another file descriptor. */\nexport declare function fd_renumber(\n /** Input: The file descriptor to renumber. */\n from: fd,\n /** Input: The file descriptor to overwrite. */\n to: fd\n): errno;\n\n/** Move the offset of a file descriptor. */\nexport declare function fd_seek(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The number of bytes to move. */\n offset: filedelta,\n /** Input: The base from which the offset is relative. */\n whence: whence,\n /** Output: The new offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Synchronize the data and metadata of a file to disk. */\nexport declare function fd_sync(\n /** Input: The file descriptor of the file containing the data and metadata to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Return the current offset of a file descriptor. */\nexport declare function fd_tell(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Output: The current offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Write to a file descriptor. */\nexport declare function fd_write(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/* Create a directory. */\nexport declare function path_create_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path at which to create the directory. */\n path: ptr,\n /** Input: The path at which to create the directory. */\n path_len: usize\n): errno;\n\n/** Return the attributes of a file or directory. */\nexport declare function path_filestat_get(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to inspect. */\n path: ptr,\n /** Input: The path of the file or directory to inspect. */\n path_len: usize,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the timestamps of a file or directory. */\nexport declare function path_filestat_set_times(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to operate on. */\n path: ptr,\n /** Input: The path of the file or directory to operate on. */\n path_len: usize,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Create a hard link. */\nexport declare function path_link(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n old_flags: lookupflags,\n /** Input: The source path from which to link. */\n old_path: ptr,\n /** Input: The source path from which to link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path at which to create the hard link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the hard link. */\n new_path_len: usize\n): errno;\n\n/** Open a file or directory. */\nexport declare function path_open(\n /** Input: The working directory at which the resolution of the path starts. */\n dirfd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n dirflags: lookupflags,\n /** Input: The path of the file or directory to open. */\n path: ptr,\n /** Input: The length of the path of the file or directory to open. */\n path_len: usize,\n /** Input: The method by which to open the file. */\n oflags: oflags,\n /** Input: The initial base rights that apply to operations using the file descriptor itself. */\n fs_rights_base: rights,\n /** Input: The initial inheriting rights that apply to file descriptors derived from it. */\n fs_rights_inheriting: rights,\n /** Input: The initial flags of the file descriptor. */\n fs_flags: fdflags,\n /** Output: The file descriptor of the file that has been opened. */\n fd: ptr\n): errno;\n\n/** Read the contents of a symbolic link. */\nexport declare function path_readlink(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path of the symbolic link from which to read. */\n path: ptr,\n /** Input: The length of the path of the symbolic link from which to read. */\n path_len: usize,\n /** Input: The buffer to which to write the contents of the symbolic link. */\n buf: ptr,\n /** Input: The length of the buffer to which to write the contents of the symbolic link. */\n buf_len: usize,\n /** Output: The number of bytes placed in the buffer. */\n buf_used: ptr\n): errno;\n\n/** Remove a directory. */\nexport declare function path_remove_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a directory to remove. */\n path: ptr,\n /** Input: The length of the path to a directory to remove. */\n path_len: usize\n): errno;\n\n/** Rename a file or directory. */\nexport declare function path_rename(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: The source path of the file or directory to rename. */\n old_path: ptr,\n /** Input: The length of the source path of the file or directory to rename. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path to which to rename the file or directory. */\n new_path: ptr,\n /** Input: The length of the destination path to which to rename the file or directory. */\n new_path_len: usize\n): errno;\n\n/** Create a symbolic link. */\nexport declare function path_symlink(\n /** Input: The contents of the symbolic link. */\n old_path: ptr,\n /** Input: The length of the contents of the symbolic link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The destination path at which to create the symbolic link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the symbolic link. */\n new_path_len: usize\n): errno;\n\n/** Unlink a file. */\nexport declare function path_unlink_file(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a file to unlink. */\n path: ptr,\n /** Input: The length of the path to a file to unlink. */\n path_len: usize\n): errno;\n\n/** Concurrently poll for the occurrence of a set of events. */\nexport declare function poll_oneoff(\n /** Input: The events to which to subscribe. */\n in_: ptr>,\n /** Input: The events that have occurred. */\n out: ptr>,\n /** Input: Both the number of subscriptions and events. */\n nsubscriptions: usize,\n /** Output: The number of events stored. */\n nevents: ptr\n): errno;\n\n/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */\nexport declare function proc_exit(\n /** Input: The exit code returned by the process. */\n rval: u32\n): void;\n\n/** Send a signal to the process of the calling thread. */\nexport declare function proc_raise(\n /** Input: The signal condition to trigger. */\n sig: signal\n): errno;\n\n/** Write high-quality random data into a buffer. */\nexport declare function random_get(\n /** Input: The buffer to fill with random data. */\n buf: usize,\n /** Input: The length of the buffer to fill with random data. */\n buf_len: usize\n): errno;\n\n/** Temporarily yield execution of the calling thread. */\nexport declare function sched_yield(): errno;\n\n/** Receive a message from a socket. */\nexport declare function sock_recv(\n /** Input: The socket on which to receive data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n ri_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to store data. */\n ri_data_len: usize,\n /** Input: Message flags. */\n ri_flags: riflags,\n /** Output: Number of bytes stored in `ri_data`. */\n ro_datalen: ptr,\n /** Output: Message flags. */\n ro_flags: ptr\n): errno;\n\n/** Send a message on a socket. */\nexport declare function sock_send(\n /** Input: The socket on which to send data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to retrieve data */\n si_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to retrieve data */\n si_data_len: usize,\n /** Input: Message flags. */\n si_flags: siflags,\n /** Output: Number of bytes transmitted. */\n so_datalen: ptr\n): errno;\n\n/** Shut down socket send and receive channels. */\nexport declare function sock_shutdown(\n /** Input: The socket on which to shutdown channels. */\n sock: fd,\n /** Input: Which channels on the socket to shut down. */\n how: sdflags\n): errno;\n\n// === Types ======================================================================================\n\n/** File or memory access pattern advisory information. */\nexport namespace advice {\n /** The application has no advice to give on its behavior with respect to the specified data. */\n // @ts-ignore: decorator\n @inline\n export const NORMAL: advice = 0;\n /** The application expects to access the specified data sequentially from lower offsets to higher offsets. */\n // @ts-ignore: decorator\n @inline\n export const SEQUENTIAL : advice = 1;\n /** The application expects to access the specified data in a random order. */\n // @ts-ignore: decorator\n @inline\n export const RANDOM: advice = 2;\n /** The application expects to access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const WILLNEED: advice = 3;\n /** The application expects that it will not access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const DONTNEED: advice = 4;\n /** The application expects to access the specified data once and then not reuse it thereafter. */\n // @ts-ignore: decorator\n @inline\n export const NOREUSE: advice = 5;\n}\nexport type advice = u8;\n\n/** Identifiers for clocks. */\nexport namespace clockid {\n /** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */\n // @ts-ignore: decorator\n @inline\n export const REALTIME: clockid = 0;\n /** The store-wide monotonic clock. Absolute value has no meaning. */\n // @ts-ignore: decorator\n @inline\n export const MONOTONIC: clockid = 1;\n /** The CPU-time clock associated with the current process. */\n // @ts-ignore: decorator\n @inline\n export const PROCESS_CPUTIME_ID: clockid = 2;\n /** The CPU-time clock associated with the current thread. */\n // @ts-ignore: decorator\n @inline\n export const THREAD_CPUTIME_ID: clockid = 3;\n}\nexport type clockid = u32;\n\n/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */\nexport type device = u64;\n\n/** A reference to the offset of a directory entry. */\nexport type dircookie = u64;\n\n/** A directory entry. */\n@unmanaged export class dirent {\n /** The offset of the next directory entry stored in this directory. */\n next: dircookie;\n /** The serial number of the file referred to by this directory entry. */\n ino: inode;\n /** The length of the name of the directory entry. */\n namlen: u32;\n /** The type of the file referred to by this directory entry. */\n type: filetype;\n private __padding0: u16;\n}\n\n/** Error codes returned by functions. */\nexport namespace errno {\n /** No error occurred. System call completed successfully. */\n // @ts-ignore: decorator\n @inline\n export const SUCCESS: errno = 0;\n /** Argument list too long. */\n // @ts-ignore: decorator\n @inline\n export const TOOBIG: errno = 1;\n /** Permission denied. */\n // @ts-ignore: decorator\n @inline\n export const ACCES: errno = 2;\n /** Address in use. */\n // @ts-ignore: decorator\n @inline\n export const ADDRINUSE: errno = 3;\n /** Address not available. */\n // @ts-ignore: decorator\n @inline\n export const ADDRNOTAVAIL: errno = 4;\n /** Address family not supported. */\n // @ts-ignore: decorator\n @inline\n export const AFNOSUPPORT: errno = 5;\n /** Resource unavailable, or operation would block. */\n // @ts-ignore: decorator\n @inline\n export const AGAIN: errno = 6;\n /** Connection already in progress. */\n // @ts-ignore: decorator\n @inline\n export const ALREADY: errno = 7;\n /** Bad file descriptor. */\n // @ts-ignore: decorator\n @inline\n export const BADF: errno = 8;\n /** Bad message. */\n // @ts-ignore: decorator\n @inline\n export const BADMSG: errno = 9;\n /** Device or resource busy. */\n // @ts-ignore: decorator\n @inline\n export const BUSY: errno = 10;\n /** Operation canceled. */\n // @ts-ignore: decorator\n @inline\n export const CANCELED: errno = 11;\n /** No child processes. */\n // @ts-ignore: decorator\n @inline\n export const CHILD: errno = 12;\n /** Connection aborted. */\n // @ts-ignore: decorator\n @inline\n export const CONNABORTED: errno = 13;\n /** Connection refused. */\n // @ts-ignore: decorator\n @inline\n export const CONNREFUSED: errno = 14;\n /** Connection reset. */\n // @ts-ignore: decorator\n @inline\n export const CONNRESET: errno = 15;\n /** Resource deadlock would occur. */\n // @ts-ignore: decorator\n @inline\n export const DEADLK: errno = 16;\n /** Destination address required. */\n // @ts-ignore: decorator\n @inline\n export const DESTADDRREQ: errno = 17;\n /** Mathematics argument out of domain of function. */\n // @ts-ignore: decorator\n @inline\n export const DOM: errno = 18;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const DQUOT: errno = 19;\n /** File exists. */\n // @ts-ignore: decorator\n @inline\n export const EXIST: errno = 20;\n /** Bad address. */\n // @ts-ignore: decorator\n @inline\n export const FAULT: errno = 21;\n /** File too large. */\n // @ts-ignore: decorator\n @inline\n export const FBIG: errno = 22;\n /** Host is unreachable. */\n // @ts-ignore: decorator\n @inline\n export const HOSTUNREACH: errno = 23;\n /** Identifier removed. */\n // @ts-ignore: decorator\n @inline\n export const IDRM: errno = 24;\n /** Illegal byte sequence. */\n // @ts-ignore: decorator\n @inline\n export const ILSEQ: errno = 25;\n /** Operation in progress. */\n // @ts-ignore: decorator\n @inline\n export const INPROGRESS: errno = 26;\n /** Interrupted function. */\n // @ts-ignore: decorator\n @inline\n export const INTR: errno = 27;\n /** Invalid argument. */\n // @ts-ignore: decorator\n @inline\n export const INVAL: errno = 28;\n /** I/O error. */\n // @ts-ignore: decorator\n @inline\n export const IO: errno = 29;\n /** Socket is connected. */\n // @ts-ignore: decorator\n @inline\n export const ISCONN: errno = 30;\n /** Is a directory. */\n // @ts-ignore: decorator\n @inline\n export const ISDIR: errno = 31;\n /** Too many levels of symbolic links. */\n // @ts-ignore: decorator\n @inline\n export const LOOP: errno = 32;\n /** File descriptor value too large. */\n // @ts-ignore: decorator\n @inline\n export const MFILE: errno = 33;\n /** Too many links. */\n // @ts-ignore: decorator\n @inline\n export const MLINK: errno = 34;\n /** Message too large. */\n // @ts-ignore: decorator\n @inline\n export const MSGSIZE: errno = 35;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const MULTIHOP: errno = 36;\n /** Filename too long. */\n // @ts-ignore: decorator\n @inline\n export const NAMETOOLONG: errno = 37;\n /** Network is down. */\n // @ts-ignore: decorator\n @inline\n export const NETDOWN: errno = 38;\n /** Connection aborted by network. */\n // @ts-ignore: decorator\n @inline\n export const NETRESET: errno = 39;\n /** Network unreachable. */\n // @ts-ignore: decorator\n @inline\n export const NETUNREACH: errno = 40;\n /** Too many files open in system. */\n // @ts-ignore: decorator\n @inline\n export const NFILE: errno = 41;\n /** No buffer space available. */\n // @ts-ignore: decorator\n @inline\n export const NOBUFS: errno = 42;\n /** No such device. */\n // @ts-ignore: decorator\n @inline\n export const NODEV: errno = 43;\n /** No such file or directory. */\n // @ts-ignore: decorator\n @inline\n export const NOENT: errno = 44;\n /** Executable file format error. */\n // @ts-ignore: decorator\n @inline\n export const NOEXEC: errno = 45;\n /** No locks available. */\n // @ts-ignore: decorator\n @inline\n export const NOLCK: errno = 46;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const NOLINK: errno = 47;\n /** Not enough space. */\n // @ts-ignore: decorator\n @inline\n export const NOMEM: errno = 48;\n /** No message of the desired type. */\n // @ts-ignore: decorator\n @inline\n export const NOMSG: errno = 49;\n /** Protocol not available. */\n // @ts-ignore: decorator\n @inline\n export const NOPROTOOPT: errno = 50;\n /** No space left on device. */\n // @ts-ignore: decorator\n @inline\n export const NOSPC: errno = 51;\n /** Function not supported. */\n // @ts-ignore: decorator\n @inline\n export const NOSYS: errno = 52;\n /** The socket is not connected. */\n // @ts-ignore: decorator\n @inline\n export const NOTCONN: errno = 53;\n /** Not a directory or a symbolic link to a directory. */\n // @ts-ignore: decorator\n @inline\n export const NOTDIR: errno = 54;\n /** Directory not empty. */\n // @ts-ignore: decorator\n @inline\n export const NOTEMPTY: errno = 55;\n /** State not recoverable. */\n // @ts-ignore: decorator\n @inline\n export const NOTRECOVERABLE: errno = 56;\n /** Not a socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSOCK: errno = 57;\n /** Not supported, or operation not supported on socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSUP: errno = 58;\n /** Inappropriate I/O control operation. */\n // @ts-ignore: decorator\n @inline\n export const NOTTY: errno = 59;\n /** No such device or address. */\n // @ts-ignore: decorator\n @inline\n export const NXIO: errno = 60;\n /** Value too large to be stored in data type. */\n // @ts-ignore: decorator\n @inline\n export const OVERFLOW: errno = 61;\n /** Previous owner died. */\n // @ts-ignore: decorator\n @inline\n export const OWNERDEAD: errno = 62;\n /** Operation not permitted. */\n // @ts-ignore: decorator\n @inline\n export const PERM: errno = 63;\n /** Broken pipe. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: errno = 64;\n /** Protocol error. */\n // @ts-ignore: decorator\n @inline\n export const PROTO: errno = 65;\n /** Protocol not supported. */\n // @ts-ignore: decorator\n @inline\n export const PROTONOSUPPORT: errno = 66;\n /** Protocol wrong type for socket. */\n // @ts-ignore: decorator\n @inline\n export const PROTOTYPE: errno = 67;\n /** Result too large. */\n // @ts-ignore: decorator\n @inline\n export const RANGE: errno = 68;\n /** Read-only file system. */\n // @ts-ignore: decorator\n @inline\n export const ROFS: errno = 69;\n /** Invalid seek. */\n // @ts-ignore: decorator\n @inline\n export const SPIPE: errno = 70;\n /** No such process. */\n // @ts-ignore: decorator\n @inline\n export const SRCH: errno = 71;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const STALE: errno = 72;\n /** Connection timed out. */\n // @ts-ignore: decorator\n @inline\n export const TIMEDOUT: errno = 73;\n /** Text file busy. */\n // @ts-ignore: decorator\n @inline\n export const TXTBSY: errno = 74;\n /** Cross-device link. */\n // @ts-ignore: decorator\n @inline\n export const XDEV: errno = 75;\n /** Extension: Capabilities insufficient. */\n // @ts-ignore: decorator\n @inline\n export const NOTCAPABLE: errno = 76;\n}\nexport type errno = u16;\n\n/** An event that occurred. */\n@unmanaged export abstract class event {\n /** User-provided value that got attached to `subscription#userdata`. */\n userdata: userdata;\n /** If non-zero, an error that occurred while processing the subscription request. */\n error: errno;\n /* The type of the event that occurred. */\n type: eventtype;\n private __padding0: u16;\n}\n\n/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\n@unmanaged export class rwevent extends event {\n /* The number of bytes available for reading or writing. */\n nbytes: filesize;\n /* The state of the file descriptor. */\n flags: eventrwflags;\n private __padding1: u32;\n}\n\n/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\nexport namespace eventrwflags {\n /** The peer of this socket has closed or disconnected. */\n // @ts-ignore: decorator\n @inline\n export const HANGUP: eventrwflags = 1;\n}\nexport type eventrwflags = u16;\n\n/** Type of a subscription to an event or its occurrence. */\nexport namespace eventtype {\n /** The time value of clock has reached the timestamp. */\n // @ts-ignore: decorator\n @inline\n export const CLOCK: eventtype = 0;\n /** File descriptor has data available for reading. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: eventtype = 1;\n /** File descriptor has capacity available for writing */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: eventtype = 2;\n}\nexport type eventtype = u8;\n\n/** Exit code generated by a process when exiting. */\nexport type exitcode = u32;\n\n/** A file descriptor number. */\nexport type fd = u32;\n\n/** File descriptor flags. */\nexport namespace fdflags {\n /** Append mode: Data written to the file is always appended to the file's end. */\n // @ts-ignore: decorator\n @inline\n export const APPEND: fdflags = 1;\n /** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */\n // @ts-ignore: decorator\n @inline\n export const DSYNC: fdflags = 2;\n /** Non-blocking mode. */\n // @ts-ignore: decorator\n @inline\n export const NONBLOCK: fdflags = 4;\n /** Synchronized read I/O operations. */\n // @ts-ignore: decorator\n @inline\n export const RSYNC: fdflags = 8;\n /** Write according to synchronized I/O file integrity completion. */\n // @ts-ignore: decorator\n @inline\n export const SYNC: fdflags = 16;\n}\nexport type fdflags = u16;\n\n/** File descriptor attributes. */\n@unmanaged export class fdstat {\n /** File type. */\n filetype: filetype;\n /** File descriptor flags. */\n flags: fdflags;\n /** Rights that apply to this file descriptor. */\n rights_base: rights;\n /** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */\n rights_inheriting: rights;\n}\n\n/** Relative offset within a file. */\nexport type filedelta = i64;\n\n/** Non-negative file size or length of a region within a file. */\nexport type filesize = u64;\n\n/** File attributes. */\n@unmanaged export class filestat {\n /** Device ID of device containing the file. */\n dev: device;\n /** File serial number. */\n ino: inode;\n /** File type. */\n filetype: filetype;\n /** Number of hard links to the file. */\n nlink: linkcount;\n /** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */\n size: filesize;\n /** Last data access timestamp. */\n atim: timestamp;\n /** Last data modification timestamp. */\n mtim: timestamp;\n /** Last file status change timestamp. */\n ctim: timestamp;\n}\n\n/** The type of a file descriptor or file. */\nexport namespace filetype {\n /** The type of the file descriptor or file is unknown or is different from any of the other types specified. */\n // @ts-ignore: decorator\n @inline\n export const UNKNOWN: filetype = 0;\n /** The file descriptor or file refers to a block device inode. */\n // @ts-ignore: decorator\n @inline\n export const BLOCK_DEVICE: filetype = 1;\n /** The file descriptor or file refers to a character device inode. */\n // @ts-ignore: decorator\n @inline\n export const CHARACTER_DEVICE: filetype = 2;\n /** The file descriptor or file refers to a directory inode. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: filetype = 3;\n /** The file descriptor or file refers to a regular file inode. */\n // @ts-ignore: decorator\n @inline\n export const REGULAR_FILE: filetype = 4;\n /** The file descriptor or file refers to a datagram socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_DGRAM: filetype = 5;\n /** The file descriptor or file refers to a byte-stream socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_STREAM: filetype = 6;\n /** The file refers to a symbolic link inode. */\n // @ts-ignore: decorator\n @inline\n export const SYMBOLIC_LINK: filetype = 7;\n}\nexport type filetype = u8;\n\n/** Which file time attributes to adjust. */\nexport namespace fstflags {\n /** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM: fstflags = 1;\n /** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM_NOW: fstflags = 2;\n /** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM: fstflags = 4;\n /** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM_NOW: fstflags = 8;\n}\nexport type fstflags = u16;\n\n/** File serial number that is unique within its file system. */\nexport type inode = u64;\n\n/** A region of memory for scatter/gather reads. */\n@unmanaged export class iovec {\n /** The address of the buffer to be filled. */\n buf: usize;\n /** The length of the buffer to be filled. */\n buf_len: usize;\n}\n\n/** Number of hard links to an inode. */\nexport type linkcount = u32;\n\n/** Flags determining the method of how paths are resolved. */\nexport namespace lookupflags {\n /** As long as the resolved path corresponds to a symbolic link, it is expanded. */\n // @ts-ignore: decorator\n @inline\n export const SYMLINK_FOLLOW: lookupflags = 1;\n}\nexport type lookupflags = u32;\n\n/** Open flags. */\nexport namespace oflags {\n /** Create file if it does not exist. */\n // @ts-ignore: decorator\n @inline\n export const CREAT: oflags = 1;\n /** Fail if not a directory. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: oflags = 2;\n /** Fail if file already exists. */\n // @ts-ignore: decorator\n @inline\n export const EXCL: oflags = 4;\n /** Truncate file to size 0. */\n // @ts-ignore: decorator\n @inline\n export const TRUNC: oflags = 8;\n}\nexport type oflags = u16;\n\n// TODO: undocumented\nexport namespace preopentype {\n // @ts-ignore: decorator\n @inline\n export const DIR: preopentype = 0;\n}\nexport type preopentype = u8;\n\n// TODO: undocumented\nexport abstract class prestat {\n type: preopentype;\n}\n\n// TODO: undocumented\nexport class dirprestat extends prestat {\n name_len: usize;\n}\n\n/** Flags provided to `sock_recv`. */\nexport namespace riflags {\n /** Returns the message without removing it from the socket's receive queue. */\n // @ts-ignore: decorator\n @inline\n export const PEEK: riflags = 1;\n /** On byte-stream sockets, block until the full amount of data can be returned. */\n // @ts-ignore: decorator\n @inline\n export const WAITALL: riflags = 2;\n}\nexport type riflags = u16;\n\n/** File descriptor rights, determining which actions may be performed. */\nexport namespace rights {\n /** The right to invoke `fd_datasync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_DATASYNC: rights = 1;\n /** The right to invoke `fd_read` and `sock_recv`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: rights = 2;\n /** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SEEK: rights = 4;\n /** The right to invoke `fd_fdstat_set_flags`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FDSTAT_SET_FLAGS: rights = 8;\n /** The right to invoke `fd_sync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SYNC: rights = 16;\n /** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */\n // @ts-ignore: decorator\n @inline\n export const FD_TELL: rights = 32;\n /** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: rights = 64;\n /** The right to invoke `fd_advise`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ADVISE: rights = 128;\n /** The right to invoke `fd_allocate`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ALLOCATE: rights = 256;\n /** The right to invoke `path_create_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_DIRECTORY: rights = 512;\n /** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_FILE: rights = 1024;\n /** The right to invoke `path_link` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_SOURCE: rights = 2048;\n /** The right to invoke `path_link` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_TARGET: rights = 4096;\n /** The right to invoke `path_open`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_OPEN: rights = 8192;\n /** The right to invoke `fd_readdir`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READDIR: rights = 16384;\n /** The right to invoke `path_readlink`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_READLINK: rights = 32768;\n /** The right to invoke `path_rename` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_SOURCE: rights = 65536;\n /** The right to invoke `path_rename` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_TARGET: rights = 131072;\n /** The right to invoke `path_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_GET: rights = 262144;\n /** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_SIZE: rights = 524288;\n /** The right to invoke `path_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_TIMES: rights = 1048576;\n /** The right to invoke `fd_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_GET: rights = 2097152;\n /** The right to invoke `fd_filestat_set_size`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_SIZE: rights = 4194304;\n /** The right to invoke `fd_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_TIMES: rights = 8388608;\n /** The right to invoke `path_symlink`. */\n // @ts-ignore: decorator\n @inline\n export const RIGHT_PATH_SYMLINK: rights = 16777216;\n /** The right to invoke `path_remove_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_REMOVE_DIRECTORY: rights = 33554432;\n /** The right to invoke `path_unlink_file`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_UNLINK_FILE: rights = 67108864;\n /** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */\n // @ts-ignore: decorator\n @inline\n export const POLL_FD_READWRITE: rights = 134217728;\n /** The right to invoke `sock_shutdown`. */\n // @ts-ignore: decorator\n @inline\n export const SOCK_SHUTDOWN: rights = 268435456;\n}\nexport type rights = u64;\n\n/** Flags returned by `sock_recv`. */\nexport namespace roflags {\n /** Message data has been truncated. */\n // @ts-ignore: decorator\n @inline\n export const DATA_TRUNCATED: roflags = 1;\n}\nexport type roflags = u16;\n\n/** Which channels on a socket to shut down. */\nexport namespace sdflags {\n /** Disables further receive operations. */\n // @ts-ignore: decorator\n @inline\n export const RD: sdflags = 1;\n /** Disables further send operations. */\n // @ts-ignore: decorator\n @inline\n export const WR: sdflags = 2;\n}\nexport type sdflags = u8;\n\n/** Flags provided to `sock_send`. */\nexport namespace siflags {\n // As there are currently no flags defined, it must be set to zero.\n}\nexport type siflags = u16;\n\n/** Signal condition. */\nexport namespace signal {\n /** Hangup. */\n // @ts-ignore: decorator\n @inline\n export const HUP: signal = 1;\n /** Terminate interrupt signal. */\n // @ts-ignore: decorator\n @inline\n export const INT: signal = 2;\n /** Terminal quit signal. */\n // @ts-ignore: decorator\n @inline\n export const QUIT: signal = 3;\n /** Illegal instruction. */\n // @ts-ignore: decorator\n @inline\n export const ILL: signal = 4;\n /** Trace/breakpoint trap. */\n // @ts-ignore: decorator\n @inline\n export const TRAP: signal = 5;\n /** Process abort signal. */\n // @ts-ignore: decorator\n @inline\n export const ABRT: signal = 6;\n /** Access to an undefined portion of a memory object. */\n // @ts-ignore: decorator\n @inline\n export const BUS: signal = 7;\n /** Erroneous arithmetic operation. */\n // @ts-ignore: decorator\n @inline\n export const FPE: signal = 8;\n /** Kill. */\n // @ts-ignore: decorator\n @inline\n export const KILL: signal = 9;\n /** User-defined signal 1. */\n // @ts-ignore: decorator\n @inline\n export const USR1: signal = 10;\n /** Invalid memory reference. */\n // @ts-ignore: decorator\n @inline\n export const SEGV: signal = 11;\n /** User-defined signal 2. */\n // @ts-ignore: decorator\n @inline\n export const USR2: signal = 12;\n /** Write on a pipe with no one to read it. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: signal = 13;\n /** Alarm clock. */\n // @ts-ignore: decorator\n @inline\n export const ALRM: signal = 14;\n /** Termination signal. */\n // @ts-ignore: decorator\n @inline\n export const TERM: signal = 15;\n /** Child process terminated, stopped, or continued. */\n // @ts-ignore: decorator\n @inline\n export const CHLD: signal = 16;\n /** Continue executing, if stopped. */\n // @ts-ignore: decorator\n @inline\n export const CONT: signal = 17;\n /** Stop executing. */\n // @ts-ignore: decorator\n @inline\n export const STOP: signal = 18;\n /** Terminal stop signal. */\n // @ts-ignore: decorator\n @inline\n export const TSTP: signal = 19;\n /** Background process attempting read. */\n // @ts-ignore: decorator\n @inline\n export const TTIN: signal = 20;\n /** Background process attempting write. */\n // @ts-ignore: decorator\n @inline\n export const TTOU: signal = 21;\n /** High bandwidth data is available at a socket. */\n // @ts-ignore: decorator\n @inline\n export const URG: signal = 22;\n /** CPU time limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XCPU: signal = 23;\n /** File size limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XFSZ: signal = 24;\n /** Virtual timer expired. */\n // @ts-ignore: decorator\n @inline\n export const VTALRM: signal = 25;\n // @ts-ignore: decorator\n @inline\n export const PROF: signal = 26;\n // @ts-ignore: decorator\n @inline\n export const WINCH: signal = 27;\n // @ts-ignore: decorator\n @inline\n export const POLL: signal = 28;\n // @ts-ignore: decorator\n @inline\n export const PWR: signal = 29;\n /** Bad system call. */\n // @ts-ignore: decorator\n @inline\n export const SYS: signal = 30;\n}\nexport type signal = u8;\n\n/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */\nexport namespace subclockflags {\n /** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */\n // @ts-ignore: decorator\n @inline\n export const ABSTIME: subclockflags = 1;\n}\nexport type subclockflags = u16;\n\n/** Subscription to an event. */\n@unmanaged export abstract class subscription {\n /** User-provided value that is attached to the subscription. */\n userdata: userdata;\n /** The type of the event to which to subscribe. */\n type: eventtype;\n private __padding0: u32;\n}\n\n/* Subscription to an event of type `eventtype.CLOCK`.**/\n@unmanaged export class clocksubscription extends subscription {\n /** The user-defined unique identifier of the clock. */\n identifier: userdata;\n /** The clock against which to compare the timestamp. */\n clock_id: clockid;\n /** The absolute or relative timestamp. */\n timeout: timestamp;\n /** The amount of time that the implementation may wait additionally to coalesce with other events. */\n precision: timestamp;\n /** Flags specifying whether the timeout is absolute or relative. */\n flags: subclockflags;\n private __padding1: u32;\n}\n\n/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/\n@unmanaged export class fdsubscription extends subscription {\n /** The file descriptor on which to wait for it to become ready for reading or writing. */\n fd: fd;\n}\n\n/** Timestamp in nanoseconds. */\nexport type timestamp = u64;\n\n/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */\nexport type userdata = u64;\n\n/** The position relative to which to set the offset of the file descriptor. */\nexport namespace whence {\n /** Seek relative to current position. */\n // @ts-ignore: decorator\n @inline\n export const CUR: whence = 0;\n /** Seek relative to end-of-file. */\n // @ts-ignore: decorator\n @inline\n export const END: whence = 1;\n /** Seek relative to start-of-file. */\n // @ts-ignore: decorator\n @inline\n export const SET: whence = 2;\n}\nexport type whence = u8;\n","bindings/wasi":'export * from "./wasi_unstable";\n',builtins:'// @ts-ignore: decorator\n@builtin\nexport declare function isInteger(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFloat(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isBoolean(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isSigned(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isReference(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isString(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArray(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArrayLike(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFunction(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isNullable(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isDefined(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isConstant(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isManaged(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isVoid(): boolean;\n\n// @ts-ignore\n@builtin\nexport declare function lengthof(func?: T): i32;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function clz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ctz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function popcnt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function abs(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function max(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function min(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ceil(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function floor(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function nearest(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function reinterpret(value: number): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sqrt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function trunc(value: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function load(offset: usize, immOffset?: usize, immAlign?: usize): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function store(offset: usize, value: void, immOffset?: usize, immAlign?: usize): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sizeof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function alignof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function offsetof(fieldName?: string): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function idof(): u32;\n\n// @ts-ignore\n@builtin\nexport declare function nameof(): string;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unreachable(): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function changetype(value: void): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unchecked(expr: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_indirect(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_direct(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function instantiate(...args: void[]): T;\n\nexport namespace atomic {\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: T, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n\n // @ts-ignore: decorator\n @builtin\n export declare function notify(ptr: usize, count: i32): i32;\n}\n\n// @ts-ignore: decorator\n@lazy\nexport const enum AtomicWaitResult {\n OK = 0,\n NOT_EQUAL = 1,\n TIMED_OUT = 2\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8(value: void): i8;\n\nexport namespace i8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i8 = -128;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i8 = 127;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16(value: void): i16;\n\nexport namespace i16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i16 = -32768;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i16 = 32767;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32(value: void): i32;\n\nexport namespace i32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i32 = -2147483648;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i32 = 2147483647;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f32(value: f32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64(value: void): i64;\n\nexport namespace i64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i64 = -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i64 = 9223372036854775807;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f64(value: f64): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw32 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isize(value: void): isize;\n\nexport namespace isize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u8(value: void): u8;\n\nexport namespace u8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u8 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u8 = 255;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u16(value: void): u16;\n\nexport namespace u16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u16 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u16 = 65535;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u32(value: void): u32;\n\nexport namespace u32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u32 = 4294967295;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u64(value: void): u64;\n\nexport namespace u64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function usize(value: void): usize;\n\nexport namespace usize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: usize = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function bool(value: void): bool;\n\nexport namespace bool {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: bool = false;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: bool = true;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32(value: void): f32;\n\nexport namespace f32 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x34000000); // 0x1p-23f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x00000001); // 0x0.000001p+0f\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7F7FFFFF); // 0x1.fffffep+127f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x00800000); // 0x1p-126f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f32, y: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i32(value: i32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f32): f32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f32): f32;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64(value: void): f64;\n\nexport namespace f64 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x3CB0000000000000); // 0x1p-52\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x0000000000000001); // 0x0.0000000000001p+0\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7FEFFFFFFFFFFFFF); // 0x1.fffffffffffffp+1023\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x0010000000000000); // 0x1p-1022\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f64, y: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i64(value: i64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f64): f64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f64): f64;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function v128(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace v128 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128; // except i64\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function not(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function bitselect(v1: v128, v2: v128, c: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8x16(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace i8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\n\nexport namespace i16x8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\n\nexport namespace i32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f32x4_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f32x4_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64x2(a: i64, b: i64): v128;\n\nexport namespace i64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f64x2_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f64x2_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\n\nexport namespace f32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i32x4(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i32x4(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64x2(a: f64, b: f64): v128;\n\nexport namespace f64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i64x2(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i64x2(a: v128): v128;\n}\n\nexport namespace v8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(\n a: v128, b: v128,\n l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8,\n l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8\n ): v128;\n}\n\n// @ts-ignore: decorator\n@external("env", "abort")\ndeclare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n// @ts-ignore: decorator\n@external("env", "trace")\ndeclare function trace(\n message: string,\n n?: i32,\n a0?: f64,\n a1?: f64,\n a2?: f64,\n a3?: f64,\n a4?: f64\n): void;\n',compat:"\nexport type ReturnType = returnof;\n",dataview:'import { BLOCK_MAXSIZE } from "./rt/common";\nimport { ArrayBuffer } from "./arraybuffer";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\n\n// TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte\n\nexport class DataView {\n\n private data: ArrayBuffer;\n private dataStart: usize;\n private dataLength: i32;\n\n constructor(\n buffer: ArrayBuffer,\n byteOffset: i32 = 0,\n byteLength: i32 = buffer.byteLength\n ) {\n if (\n i32(byteLength > BLOCK_MAXSIZE) |\n i32(byteOffset + byteLength > buffer.byteLength)\n ) throw new RangeError(E_INVALIDLENGTH);\n this.data = buffer; // retains\n var dataStart = changetype(buffer) + byteOffset;\n this.dataStart = dataStart;\n this.dataLength = byteLength;\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n getFloat32(byteOffset: i32, littleEndian: boolean = false): f32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getFloat64(byteOffset: i32, littleEndian: boolean = false): f64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getInt8(byteOffset: i32): i8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getInt16(byteOffset: i32, littleEndian: boolean = false): i16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getInt32(byteOffset: i32, littleEndian: boolean = false): i32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint8(byteOffset: i32): u8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getUint16(byteOffset: i32, littleEndian: boolean = false): u16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint32(byteOffset: i32, littleEndian: boolean = false): u32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setFloat32(byteOffset: i32, value: f32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setFloat64(byteOffset: i32, value: f64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setInt8(byteOffset: i32, value: i8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setInt16(byteOffset: i32, value: i16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setInt32(byteOffset: i32, value: i32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint8(byteOffset: i32, value: u8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setUint16(byteOffset: i32, value: u16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint32(byteOffset: i32, value: u32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n // Non-standard additions that make sense in WebAssembly, but won\'t work in JS:\n\n getInt64(byteOffset: i32, littleEndian: boolean = false): i64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i64 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint64(byteOffset: i32, littleEndian: boolean = false): u64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setInt64(byteOffset: i32, value: i64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint64(byteOffset: i32, value: u64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n toString(): string {\n return "[object DataView]";\n }\n}\n',date:'import {\n UTC as Date_UTC,\n now as Date_now\n} from "./bindings/Date";\n\nexport class Date {\n\n @inline static UTC(\n year: i32,\n month: i32 = 0,\n day: i32 = 1,\n hour: i32 = 0,\n minute: i32 = 0,\n second: i32 = 0,\n millisecond: i64 = 0\n ): i64 {\n return Date_UTC(year, month, day, hour, minute, second, millisecond);\n }\n\n @inline static now(): i64 {\n return Date_now();\n }\n\n private value: i64;\n\n constructor(value: i64) {\n this.value = value;\n }\n\n getTime(): i64 {\n return this.value;\n }\n\n setTime(value: i64): i64 {\n this.value = value;\n return value;\n }\n}\n',diagnostics:"// @ts-ignore: decorator\n@builtin\nexport declare function ERROR(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function WARNING(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function INFO(message?: string): void;\n",error:'export class Error {\n\n name: string = "Error";\n stack: string = ""; // TODO\n\n constructor(\n public message: string = ""\n ) {}\n\n toString(): string {\n var message = this.message;\n return message.length\n ? this.name + ": " + message\n : this.name;\n }\n}\n\nexport class RangeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "RangeError";\n }\n}\n\nexport class TypeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "TypeError";\n }\n}\n\nexport class SyntaxError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "SyntaxError";\n }\n}\n',fixedarray:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";\n\n// NOTE: DO NOT USE YET!\n\n// TODO: FixedArray with S being the static size, i.e. `new FixedArray`.\n// Then hard-wire this special type to the compiler and do static length checks instead :)\n\nexport class FixedArray {\n [key: number]: T;\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n var outSize = length << alignof();\n var out = __alloc(outSize, idof>());\n memory.fill(out, 0, outSize);\n return changetype>(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof();\n }\n\n @operator("[]") private __get(index: i32): T {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n this.__unchecked_set(index, value);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(changetype(this) + (index << alignof()));\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = changetype(this) + (index << alignof());\n let oldValue = load(offset);\n if (changetype(value) != oldValue) {\n store(offset, __retain(changetype(value)));\n __release(changetype(oldValue));\n }\n } else {\n store(changetype(this) + (index << alignof()), value);\n }\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = changetype(this);\n let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n }\n}\n',heap:"// @ts-ignore: decorator\n@builtin\nexport declare const __heap_base: usize;\n",iterator:"export abstract class Iterable {\n // ?\n}\n\n@sealed\nexport abstract class Iterator {\n\n // private constructor(iterable: Iterable) {\n // }\n\n // TODO: these need to evaluate the classId at the respective reference in order to obtain the\n // next value, i.e. arrays work differently than maps. we'd then have:\n //\n // ╒═══════════════════ Iterator layout (32-bit) ══════════════════╕\n // 3 2 1\n // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n // │ index │\n // ├─────────────────────────────────────────────────────────┬───┬─┤\n // │ reference │ 0 │D│\n // └─────────────────────────────────────────────────────────┴───┴─┘\n // D: Done flag\n\n // get value(this: u64): T {\n // ?\n // }\n\n // next(this: u64): Iterator {\n // ?\n // }\n\n done(this: u64): bool {\n return (this & 1);\n }\n}\n",map:'/// \n\nimport { HASH } from "./util/hash";\nimport { E_KEYNOTFOUND } from "util/error";\n\n// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a map entry. */\n@unmanaged class MapEntry {\n key: K;\n value: V;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K/V is <= 32-bits\n const maxkv = sizeof() > sizeof() ? sizeof() : sizeof();\n const align = (maxkv > sizeof() ? maxkv : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Map {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // MapEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() {\n this.clear();\n }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: K, hashCode: u32): MapEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n has(key: K): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n @operator("[]")\n get(key: K): V {\n var entry = this.find(key, HASH(key));\n if (!entry) throw new Error(E_KEYNOTFOUND); // cannot represent `undefined`\n return entry.value;\n }\n\n @operator("[]=")\n set(key: K, value: V): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (entry) {\n if (isManaged()) {\n let oldRef = changetype(entry.value);\n if (changetype(value) != oldRef) {\n entry.value = changetype(__retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n entry.value = value;\n }\n } else {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n let entries = this.entries;\n entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE());\n // link with the map\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n entry.value = isManaged()\n ? changetype(__retain(changetype(value)))\n : value;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n delete(key: K): bool {\n var entry = this.find(key, HASH(key));\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key));\n if (isManaged()) __release(changetype(entry.value));\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr);\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr);\n newEntry.key = oldEntry.key;\n newEntry.value = oldEntry.value;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n keys(): K[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var keys = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n keys.push(entry.key);\n }\n }\n return keys;\n }\n\n values(): V[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.value);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Map]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged() || isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n if (isManaged()) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n if (isManaged()) {\n let val = changetype(entry.value);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',math:'import * as JSMath from "./bindings/Math";\nexport { JSMath };\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from "./builtins";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n// TODO: sin, cos, tan for Math namespace\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n return NativeMath.exp(x - kln2) * scale * scale;\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7ff;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u >> 63);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_32: u32;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx >> 31) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var e = reinterpret(x) >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n if (hx >> 31) return -x;\n return x;\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var s = u >> 63;\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n switch (m) {\n case 0: return PI / 4;\n case 1: return -PI / 4;\n case 2: return 3 * PI / 4;\n case 3: return -3 * PI / 4;\n }\n } else {\n switch (m) {\n case 0: return 0.0;\n case 1: return -0.0;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // TODO\n return JSMath.cos(x);\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var hx = (reinterpret(x) >> 32);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n var hi: f64, lo: f64 = 0;\n var k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n var xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n var xq = xs * xs;\n var c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n var y = 1.0 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32 & 0x7FFFFFFF);\n var k = 0, sign_ = (u >> 63);\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign_) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = (ux >> 52);\n var ey = (uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || (hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = (u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = (hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln2hi;\n var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n var y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n var u_ = reinterpret(x);\n var hx = (u_ >> 32);\n var lx = u_;\n u_ = reinterpret(y);\n var hy = (u_ >> 32);\n var ly = u_;\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n var yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let kcond = k > 20;\n let offset = select(52, 20, kcond) - k;\n let Ly = select(ly, iy, kcond);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n var ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n var s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n var t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n var j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret((((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n var y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = (u_ >> 32);\n var i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret((n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = (reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n\n export function seedRandom(value: i64): void {\n assert(value);\n random_seeded = true;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n }\n\n export function random(): f64 { // see: v8/src/base/random-number-generator.cc\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = ((s0 + s1) & 0x000FFFFFFFFFFFFF) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f64): f64 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n // In ECMAScript all NaN values are indistinguishable from each other\n // so we need handle NaN and negative NaN in similar way\n return ((reinterpret(x) >>> 63) & i32(x == x));\n }\n\n export function sin(x: f64): f64 { // TODO\n return JSMath.sin(x);\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var absx = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n t = expm1(absx);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // TODO\n return JSMath.tan(x);\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n /* make sure final n < -53 to avoid double\n rounding in the subnormal range */\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx << 63;\n return reinterpret(ux);\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = (ux >> 63);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return sx ? -x : x;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy\nconst PIO2_TABLE: u64[] = [\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n];\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret((0x7F + (k >> 1)) << 23);\n return NativeMathf.exp(x - kln2) * scale * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n const bits = PIO2_TABLE;\n\n var offset = (u >> 23) - 152;\n var index = offset >> 6;\n var shift = offset & 63;\n\n var b0 = unchecked(bits[index + 0]);\n var b1 = unchecked(bits[index + 1]);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = unchecked(bits[index + 2]);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product: u64 = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q: i32 = ((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const pi2hi = reinterpret(0x3FF921FB50000000); // 1.57079631090164184570\n const pi2lo = reinterpret(0x3E5110B4611A6263); // 1.58932547735281966916e-8\n const _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { /* π * 0x1p28 */\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const S1 = reinterpret(0xBFC5555554CBAC77); // -0x15555554cbac77.0p-55\n const S2 = reinterpret(0x3F811110896EFBB2); // 0x111110896efbb2.0p-59\n const S3 = reinterpret(0xBF2A00F9E2CAE774); // -0x1a00f9e2cae774.0p-65\n const S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return ((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const C0 = reinterpret(0xBFDFFFFFFD0C5E81); // -0x1ffffffd0c5e81.0p-54\n const C1 = reinterpret(0x3FA55553E1053A42); // 0x155553e1053a42.0p-57\n const C2 = reinterpret(0xBF56C087E80F1E27); // -0x16c087e80f1e27.0p-62\n const C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return (((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n\n const T0 = reinterpret(0x3FD5554D3418C99F); /* 0x15554d3418c99f.0p-54 */\n const T1 = reinterpret(0x3FC112FD38999F72); /* 0x1112fd38999f72.0p-55 */\n const T2 = reinterpret(0x3FAB54C91D865AFE); /* 0x1b54c91d865afe.0p-57 */\n const T3 = reinterpret(0x3F991DF3908C33CE); /* 0x191df3908c33ce.0p-58 */\n const T4 = reinterpret(0x3F685DADFCECF44E); /* 0x185dadfcecf44e.0p-61 */\n const T5 = reinterpret(0x3F8362B9BF971BCD); /* 0x1362b9bf971bcd.0p-59 */\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return (odd ? -1 / r : r);\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000);\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx >> 31) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) {\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (a < 0x3F800000 + (12 << 23)) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000);\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = (pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000);\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = (((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n switch (m) {\n case 0: return pi / 4;\n case 1: return -pi / 4;\n case 2: return 3 * pi / 4;\n case 3: return -3 * pi / 4;\n }\n } else {\n switch (m) {\n case 0: return 0;\n case 1: return -0;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const c1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const c2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const c3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n /* raise inexact if x != 0 */\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix > 0x4016cbe3) { /* |x| ~> 3π/4 */\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix > 0x40afeddf) { /* |x| ~> 7π/4 */\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n /* cos(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000);\n var hx = reinterpret(x);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx >= 0x42B17218) {\n if (!sign_) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n var hi: f32, lo: f32;\n var k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n var xx = x * x;\n var c = x - xx * (P1 + xx * P2);\n var y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x42B17180), // 8.8721679688e+01f\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign_ = (u >> 31);\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign_) return -1;\n if (x > o_threshold) {\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt((x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n var u = reinterpret(x);\n var k = 0;\n if (u < 0x00800000 || (u >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (u >> 31) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) return x;\n else if (u == 0x3F800000) return 0;\n u += 0x3F800000 - 0x3F3504F3;\n k += (u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ix = reinterpret(hi);\n ix &= 0xFFFFF000;\n hi = reinterpret(ix);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n var ix = reinterpret(x);\n var c: f32 = 0, f: f32 = 0;\n var k: i32 = 1;\n if (ix < 0x3ED413D0 || (ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = (iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k: i32 = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n var u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n var lo: f32 = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 { // see: musl/src/math/powf.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3F15C000), // 5.84960938e-01f\n dp_l1 = reinterpret(0x35D1CFDC), // 1.56322085e-06f\n two24 = reinterpret(0x4B800000), // 16777216f\n huge = reinterpret(0x7149F2CA), // 1.0e+30f\n tiny = reinterpret(0x0DA24260), // 1.0e-30f\n L1 = reinterpret(0x3F19999A), // 6.0000002384e-01f\n L2 = reinterpret(0x3EDB6DB7), // 4.2857143283e-01f\n L3 = reinterpret(0x3EAAAAAB), // 3.3333334327e-01f\n L4 = reinterpret(0x3E8BA305), // 2.7272811532e-01f\n L5 = reinterpret(0x3E6C3255), // 2.3066075146e-01f\n L6 = reinterpret(0x3E53F142), // 2.0697501302e-01f\n P1 = reinterpret(0x3E2AAAAB), // 1.6666667163e-01f\n P2 = reinterpret(0xBB360B61), // -2.7777778450e-03f\n P3 = reinterpret(0x388AB355), // 6.6137559770e-05f\n P4 = reinterpret(0xB5DDEA0E), // -1.6533901999e-06f\n P5 = reinterpret(0x3331BB4C), // 4.1381369442e-08f\n lg2 = reinterpret(0x3F317218), // 6.9314718246e-01f\n lg2_h = reinterpret(0x3F317200), // 6.93145752e-01f\n lg2_l = reinterpret(0x35BFBE8C), // 1.42860654e-06f\n ovt = reinterpret(0x3338AA3C), // 4.2995665694e-08f\n cp = reinterpret(0x3F76384F), // 9.6179670095e-01\n cp_h = reinterpret(0x3F764000), // 9.6191406250e-01\n cp_l = reinterpret(0xB8F623C6), // -1.1736857402e-04\n ivln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00\n ivln2_h = reinterpret(0x3FB8AA00), // 1.4426879883e+00\n ivln2_l = reinterpret(0x36ECA570), // 7.0526075433e-06\n inv3 = reinterpret(0x3EAAAAAB); // 0.333333333333\n var hx = reinterpret(x);\n var hy = reinterpret(y);\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if (iy == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3F800000) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if (ix > 0x7F800000 || iy > 0x7F800000) return x + y; // NaN if either arg is NaN\n var yisint = 0, j: i32, k: i32;\n if (hx < 0) {\n if (iy >= 0x4B800000) yisint = 2;\n else if (iy >= 0x3F800000) {\n k = (iy >> 23) - 0x7F;\n let ki = 23 - k;\n j = iy >> ki;\n if ((j << ki) == iy) yisint = 2 - (j & 1);\n }\n }\n if (iy == 0x7F800000) { // y is +-inf\n if (ix == 0x3F800000) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix > 0x3F800000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3F800000) return hy >= 0 ? x : 1.0 / x;\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3F000000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n var ax = builtin_abs(x);\n var z: f32;\n if (ix == 0x7F800000 || ix == 0 || ix == 0x3F800000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3F800000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n }\n else if (yisint == 1) z = -z;\n }\n return z;\n }\n var sn = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) sn = -1.0;\n }\n var t1: f32, t2: f32, r: f32, s: f32, t: f32, u: f32, v: f32, w: f32, p_h: f32, p_l: f32;\n var n: i32, is: i32;\n if (iy > 0x4D000000) {\n if (ix < 0x3F7FFFF8) return hy < 0 ? sn * huge * huge : sn * tiny * tiny;\n if (ix > 0x3F800007) return hy > 0 ? sn * huge * huge : sn * tiny * tiny;\n t = ax - 1;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = v - (t1 - u);\n } else {\n let s2: f32, s_h: f32, s_l: f32, t_h: f32, t_l: f32;\n n = 0;\n if (ix < 0x00800000) {\n ax *= two24;\n n -= 24;\n ix = reinterpret(ax);\n }\n n += (ix >> 23) - 0x7F;\n j = ix & 0x007FFFFF;\n ix = j | 0x3F800000;\n if (j <= 0x1CC471) k = 0;\n else if (j < 0x5DB3D7) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00800000;\n }\n ax = reinterpret(ix);\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n s = u * v;\n s_h = s;\n is = reinterpret(s_h);\n s_h = reinterpret(is & 0xFFFFF000);\n is = ((ix >> 1) & 0xFFFFF000) | 0x20000000;\n t_h = reinterpret(is + 0x00400000 + (k << 21));\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = s * s;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + s);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n is = reinterpret(t_h);\n t_h = reinterpret(is & 0xFFFFF000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * s;\n p_h = u + v;\n is = reinterpret(p_h);\n p_h = reinterpret(is & 0xFFFFF000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = (((z_h + z_l) + dp_h) + t);\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n is = reinterpret(y);\n var y1 = reinterpret(is & 0xFFFFF000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n j = reinterpret(z);\n if (j > 0x43000000) {\n return sn * huge * huge;\n } else if (j == 0x43000000) {\n if (p_l + ovt > z - p_h) return sn * huge * huge;\n } else if ((j & 0x7FFFFFFF) > 0x43160000) {\n return sn * tiny * tiny;\n } else if (j == 0xC3160000) {\n if (p_l <= z - p_h) return sn * tiny * tiny;\n }\n var i = j & 0x7FFFFFFF;\n k = (i >> 23) - 0x7F;\n n = 0;\n if (i > 0x3F000000) {\n n = j + (0x00800000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 23) - 0x7F;\n t = reinterpret(n & ~(0x007FFFFF >> k));\n n = ((n & 0x007FFFFF) | 0x00800000) >> (23 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n is = reinterpret(t);\n t = reinterpret(is & 0xFFFF8000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = reinterpret(z);\n j += n << 23;\n if ((j >> 23) <= 0) z = scalbn(z, n);\n else z = reinterpret(j);\n return sn * z;\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f32): f32 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n // @ts-ignore: type\n return ((reinterpret(x) >>> 31) & (x == x));\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const s2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var absx = reinterpret(u);\n var t: f32;\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n t = expm1(absx);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2f(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const t1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const t2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const t3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n /* tan(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* argument reduction */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx;\n return reinterpret(ux);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = (ux >> 31);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // q++;\n }\n return sx ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const s2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7fffffff;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n /* -sin(x + c) is not correct if x+c could be 0: -0 vs +0 */\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n\n switch (n & 3) {\n case 0: {\n sincos_sin = s;\n sincos_cos = c;\n break;\n }\n case 1: {\n sincos_sin = c;\n sincos_cos = -s;\n break;\n }\n case 2: {\n sincos_sin = -s;\n sincos_cos = -c;\n break;\n }\n case 3:\n default: {\n sincos_sin = -c;\n sincos_cos = s;\n break;\n }\n }\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 5) {\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i32): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 6) {\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow32f(x: f32, e: i32): f32 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out: f32 = 1;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n\nexport function ipow64f(x: f64, e: i32): f64 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out = 1.0;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n',memory:'import { memcmp, memmove, memset } from "./util/memory";\nimport { E_NOTIMPLEMENTED } from "./util/error";\n\n/** Memory manager interface. */\nexport namespace memory {\n\n /** Gets the size of the memory in pages. */\n // @ts-ignore: decorator\n @builtin\n export declare function size(): i32;\n\n /** Grows the memory by the given size in pages and returns the previous size in pages. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function grow(pages: i32): i32;\n\n /** Fills a section in memory with the specified byte value. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function fill(dst: usize, c: u8, n: usize): void {\n memset(dst, c, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Copies a section of memory to another. Has move semantics. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function copy(dst: usize, src: usize, n: usize): void {\n memmove(dst, src, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Initializes a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Drops a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function drop(segmentIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Repeats a section of memory at a specific address. */\n // @ts-ignore: decorator\n @unsafe\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void {\n var index: usize = 0;\n var total = srcLength * count;\n while (index < total) {\n memory.copy(dst + index, src, srcLength);\n index += srcLength;\n }\n }\n\n /** Compares a section of memory to another. */\n // @ts-ignore: decorator\n @inline\n export function compare(vl: usize, vr: usize, n: usize): i32 {\n return memcmp(vl, vr, n);\n }\n}\n',number:'import { itoa, dtoa } from "./util/number";\nimport { strtol } from "./util/string";\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const NaN: f64 = 0 / 0;\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const Infinity: f64 = 1 / 0;\n\nexport function isNaN(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value != value;\n}\n\nexport function isFinite(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value - value == 0;\n}\n\n@sealed @unmanaged\nexport abstract class I8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i8 = i8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i8 = i8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i8 {\n return strtol(value, radix);\n }\n\n toString(this: i8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i16 = i16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i16 = i16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i16 {\n return strtol(value, radix);\n }\n\n toString(this: i16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i32 = i32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i32 = i32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i32 {\n return strtol(value, radix);\n }\n\n toString(this: i32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i64 = i64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i64 = i64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i64 {\n return strtol(value, radix);\n }\n\n toString(this: i64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Isize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: isize = isize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: isize = isize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): isize {\n return strtol(value, radix);\n }\n\n toString(this: isize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u8 = u8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u8 = u8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u8 {\n return strtol(value, radix);\n }\n\n toString(this: u8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u16 = u16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u16 = u16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u16 {\n return strtol(value, radix);\n }\n\n toString(this: u16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u32 = u32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u32 = u32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u32 {\n return strtol(value, radix);\n }\n\n toString(this: u32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u64 = u64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u64 = u64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u64 {\n return strtol(value, radix);\n }\n\n toString(this: u64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Usize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: usize = usize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: usize = usize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): usize {\n return strtol(value, radix);\n }\n\n toString(this: usize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Bool {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: bool = bool.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: bool = bool.MAX_VALUE;\n\n toString(this: bool): String {\n // TODO: radix?\n return this ? "true" : "false";\n }\n}\n\nexport { Bool as Boolean };\n\n@sealed @unmanaged\nexport abstract class F32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f32 = f32.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f32 = f32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f32 = f32.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f32 = f32.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f32 = f32.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f32 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f32 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f32 = NaN;\n\n static isNaN(value: f32): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f32): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f32): bool {\n return abs(value) <= f32.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f32): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f32 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f32 {\n return parseFloat(value);\n }\n\n toString(this: f32): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class F64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f64 = f64.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f64 = f64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f64 = f64.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f64 = f64.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f64 = f64.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f64 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f64 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f64 = NaN;\n\n static isNaN(value: f64): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f64): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f64): bool {\n return abs(value) <= f64.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f64): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f64 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f64 {\n return parseFloat(value);\n }\n\n toString(this: f64, radix: i32 = 0): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\nexport { F64 as Number };\n',polyfills:"export function bswap(value: T): T {\n if (isInteger()) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n }\n if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n }\n if (sizeof() == 8) {\n let a = (value >> 8) & 0x00FF00FF00FF00FF;\n let b = (value & 0x00FF00FF00FF00FF) << 8;\n let v = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n }\n assert(false);\n return value;\n}\n\nexport function bswap16(value: T): T {\n if (isInteger() && sizeof() <= 4) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n } else if (sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n }\n assert(false);\n return value;\n}\n",regexp:'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',rt:'import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo";\nimport { E_INDEXOUTOFRANGE } from "./util/error";\nimport { BLOCK, BLOCK_OVERHEAD } from "./rt/common";\nimport { ArrayBufferView } from "./arraybuffer";\n\n// @ts-ignore: decorator\n@builtin\nexport declare const __rtti_base: usize;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_globals(cookie: u32): void;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_members(ref: usize, cookie: u32): void;\n\n// @ts-ignore: decorator\n@unsafe\nexport function __typeinfo(id: u32): TypeinfoFlags {\n var ptr = __rtti_base;\n if (id > load(ptr)) throw new Error(E_INDEXOUTOFRANGE);\n return changetype(ptr + sizeof() + id * offsetof()).flags;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __instanceof(ref: usize, superId: u32): bool { // keyword\n var id = changetype(ref - BLOCK_OVERHEAD).rtId;\n var ptr = __rtti_base;\n if (id <= load(ptr)) {\n do if (id == superId) return true;\n while (id = changetype(ptr + sizeof() + id * offsetof()).base);\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize {\n var array = __alloc(offsetof(), id);\n var bufferSize = length << alignLog2;\n var buffer = __alloc(bufferSize, idof());\n store(array, __retain(buffer), offsetof("data"));\n changetype(array).dataStart = buffer;\n changetype(array).dataLength = bufferSize;\n store(changetype(array), length, offsetof("length_"));\n if (data) memory.copy(buffer, data, bufferSize);\n return array;\n}\n\n// These are provided by the respective implementation, included as another entry file by asc:\n\n// @builtin @unsafe\n// export declare function __alloc(size: usize, id: u32): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __realloc(ref: usize, size: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __free(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __retain(ref: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __release(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __collect(): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __visit(ref: usize, cookie: u32): void;\n',"rt/common":"// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n\n// ╒════════════════ Common block layout (32-bit) ═════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime size │ -4\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ ... │ ref\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize; // WASM64 needs adaption\n /** Garbage collector info. */\n gcInfo: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD = (offsetof() + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n","rt/index-full":'export { __alloc } from "rt/tlsf";\nexport { __retain, __release, __collect } from "rt/pure";\nexport { __rtti_base } from "rt";\n',"rt/index-half":'import "rt/index-full";\n',"rt/index-none":'import "rt/index-stub";\n',"rt/index-stub":'export { __alloc, __retain, __release, __collect } from "rt/stub";\nexport { __rtti_base } from "rt";\n',"rt/pure":'import { DEBUG, BLOCK_OVERHEAD } from "rt/common";\nimport { Block, freeBlock, ROOT } from "rt/tlsf";\nimport { TypeinfoFlags } from "shared/typeinfo";\nimport { onincrement, ondecrement, onfree, onalloc } from "./rtrace";\n\n/////////////////////////// A Pure Reference Counting Garbage Collector ///////////////////////////\n// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf\n\n// ╒══════════════════════ GC Info structure ══════════════════════╕\n// │ 3 2 1 │\n// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│\n// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │B│color│ refCount │\n// └─┴─────┴───────────────────────────────────────────────────────┘\n// B: buffered\n\n// @ts-ignore: decorator\n@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1);\n// @ts-ignore: decorator\n@inline const COLOR_BITS = 3;\n// @ts-ignore: decorator\n@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS;\n// @ts-ignore: decorator\n@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1;\n\n// ╒════════╤═══════════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├────────┼──────────────────────────────────────────────────────┤\n// │ BLACK │ In use or free │\n// │ GRAY │ Possible member of cycle │\n// │ WHITE │ Member of garbage cycle │\n// │ PURPLE │ Possible root of cycle │\n// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │\n// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │\n// └────────┴──────────────────────────────────────────────────────┘\n// Acyclic detection has been decoupled, hence no GREEN.\n\n// @ts-ignore: decorator\n@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_RED: u32 = 4 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT;\n\n// @ts-ignore: decorator\n@inline const VISIT_DECREMENT = 1; // guard 0\n// @ts-ignore: decorator\n@inline const VISIT_MARKGRAY = 2;\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 3;\n// @ts-ignore: decorator\n@inline const VISIT_SCANBLACK = 4;\n// @ts-ignore: decorator\n@inline const VISIT_COLLECTWHITE = 5;\n\n// @ts-ignore: decorator\n@global @unsafe\nfunction __visit(ref: usize, cookie: i32): void {\n if (ref < __heap_base) return;\n var s = changetype(ref - BLOCK_OVERHEAD);\n switch (cookie) {\n case VISIT_DECREMENT: {\n decrement(s);\n break;\n }\n case VISIT_MARKGRAY: {\n if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0);\n s.gcInfo = s.gcInfo - 1;\n markGray(s);\n break;\n }\n case VISIT_SCAN: {\n scan(s);\n break;\n }\n case VISIT_SCANBLACK: {\n let info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if ((info & COLOR_MASK) != COLOR_BLACK) {\n scanBlack(s);\n }\n break;\n }\n case VISIT_COLLECTWHITE: {\n collectWhite(s);\n break;\n }\n default: if (DEBUG) assert(false);\n }\n}\n\n/** Increments the reference count of the specified block by one.*/\nfunction increment(s: Block): void {\n var info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if (isDefined(ASC_RTRACE)) onincrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n}\n\n/** Decrements the reference count of the specified block by one, possibly freeing it. */\nfunction decrement(s: Block): void {\n var info = s.gcInfo;\n var rc = info & REFCOUNT_MASK;\n if (isDefined(ASC_RTRACE)) ondecrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n if (rc == 1) {\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT);\n if (!(info & BUFFERED_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0;\n }\n } else {\n if (DEBUG) assert(rc > 0);\n if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) {\n s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1);\n if (!(info & BUFFERED_MASK)) {\n appendRoot(s);\n }\n } else {\n s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1);\n }\n }\n}\n\n/** Buffer of possible roots. */\n// @ts-ignore: decorator\n@lazy var ROOTS: usize;\n/** Current absolute offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var CUR: usize = 0;\n/** Current absolute end offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var END: usize = 0;\n\n/** Appends a block to possible roots. */\nfunction appendRoot(s: Block): void {\n var cur = CUR;\n if (cur >= END) {\n growRoots(); // TBD: either that or pick a default and force collection on overflow\n cur = CUR;\n }\n store(cur, s);\n CUR = cur + sizeof();\n}\n\n/** Grows the roots buffer if it ran full. */\nfunction growRoots(): void {\n var oldRoots = ROOTS;\n var oldSize = CUR - oldRoots;\n var newSize = max(oldSize * 2, 64 << alignof());\n var newRoots = __alloc(newSize, 0);\n if (isDefined(ASC_RTRACE)) onfree(changetype(newRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n memory.copy(newRoots, oldRoots, oldSize);\n if (oldRoots) {\n if (isDefined(ASC_RTRACE)) onalloc(changetype(oldRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n __free(oldRoots);\n }\n ROOTS = newRoots;\n CUR = newRoots + oldSize;\n END = newRoots + newSize;\n}\n\n/** Collects cyclic garbage. */\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n\n // markRoots\n var roots = ROOTS;\n var cur = roots;\n for (let pos = cur, end = CUR; pos < end; pos += sizeof()) {\n let s = load(pos);\n let info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) {\n markGray(s);\n store(cur, s);\n cur += sizeof();\n } else {\n if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = info & ~BUFFERED_MASK;\n }\n }\n }\n CUR = cur;\n\n // scanRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n scan(load(pos));\n }\n\n // collectRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n let s = load(pos);\n s.gcInfo = s.gcInfo & ~BUFFERED_MASK;\n collectWhite(s);\n }\n CUR = roots;\n}\n\n/** Marks a block as gray (possible member of cycle) during the collection phase. */\nfunction markGray(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) != COLOR_GRAY) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY);\n }\n}\n\n/** Scans a block during the collection phase, determining whether it is garbage or not. */\nfunction scan(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_GRAY) {\n if ((info & REFCOUNT_MASK) > 0) {\n scanBlack(s);\n } else {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN);\n }\n }\n}\n\n/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */\nfunction scanBlack(s: Block): void {\n s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK);\n}\n\n/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */\nfunction collectWhite(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE);\n freeBlock(ROOT, s);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n if (ref > __heap_base) increment(changetype(ref - BLOCK_OVERHEAD));\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n if (ref > __heap_base) decrement(changetype(ref - BLOCK_OVERHEAD));\n}\n',"rt/rtrace":'import { BLOCK } from "./common";\n\nexport declare function onalloc(s: BLOCK): void;\nexport declare function onincrement(s: BLOCK): void;\nexport declare function ondecrement(s: BLOCK): void;\nexport declare function onfree(s: BLOCK): void;\n',"rt/stub":'import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common";\n\n// @ts-ignore: decorator\n@lazy\nvar startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@lazy\nvar offset: usize = startOffset;\n\nfunction maybeGrowMemory(newOffset: usize): void {\n // assumes newOffset is aligned\n var pagesBefore = memory.size();\n var maxOffset = pagesBefore << 16;\n if (newOffset > maxOffset) {\n let pagesNeeded = ((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16;\n let pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory\n }\n }\n offset = newOffset;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __alloc(size: usize, id: u32): usize {\n if (size > BLOCK_MAXSIZE) unreachable();\n var ptr = offset + BLOCK_OVERHEAD;\n var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE);\n maybeGrowMemory(ptr + actualSize);\n var block = changetype(ptr - BLOCK_OVERHEAD);\n block.mmInfo = actualSize;\n if (DEBUG) block.gcInfo = -1;\n block.rtId = id;\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __realloc(ptr: usize, size: usize): usize {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n var actualSize = block.mmInfo;\n if (DEBUG) assert(block.gcInfo == -1);\n if (size > actualSize) {\n if (ptr + actualSize == offset) { // last block: grow\n if (size > BLOCK_MAXSIZE) unreachable();\n actualSize = (size + AL_MASK) & ~AL_MASK;\n maybeGrowMemory(ptr + actualSize);\n block.mmInfo = actualSize;\n } else { // copy to new block at least double the size\n actualSize = max((size + AL_MASK) & ~AL_MASK, actualSize << 1);\n let newPtr = __alloc(actualSize, block.rtId);\n memory.copy(newPtr, ptr, block.rtSize);\n block = changetype((ptr = newPtr) - BLOCK_OVERHEAD);\n }\n } else if (ptr + actualSize == offset) { // last block: shrink\n actualSize = (size + AL_MASK) & ~AL_MASK;\n offset = ptr + actualSize;\n block.mmInfo = actualSize;\n }\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __free(ptr: usize): void {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n if (DEBUG) assert(block.gcInfo == -1);\n if (ptr + block.mmInfo == offset) { // last block: discard\n offset = changetype(block);\n }\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nfunction __reset(): void { // special\n offset = startOffset;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ref: usize, cookie: u32): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n}\n',"rt/tlsf":"import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"rt/common\";\nimport { onfree, onalloc } from \"./rtrace\";\nimport { REFCOUNT_MASK } from \"./pure\";\n\n/////////////////////// The TLSF (Two-Level Segregate Fit) memory allocator ///////////////////////\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: usize = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: usize = (SL_BITS + AL_BITS);\n// @ts-ignore: decorator\n@inline const SB_SIZE: usize = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐\n// │ size │0│L│F│ ◄─┐ info\n// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │\n// │ │ │\n// │ ... additional runtime overhead ... │ │\n// │ │ │\n// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ = 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n let newSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = (blockInfo & TAGS_MASK) | newSize;\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n let newSize = (leftInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, left);\n left.mmInfo = blockInfo = (leftInfo & TAGS_MASK) | newSize;\n block = left;\n // 'back' is set below\n }\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) {\n assert(\n start <= end && // must be valid\n !(start & AL_MASK) && // must be aligned\n !(end & AL_MASK) // must be aligned\n );\n }\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n if (start - BLOCK_OVERHEAD == changetype(tail)) {\n start -= BLOCK_OVERHEAD;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - (BLOCK_OVERHEAD << 1);\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + size - BLOCK_OVERHEAD);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size >= BLOCK_MAXSIZE) throw new Error(\"allocation too large\");\n return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size\n}\n\n/** Initilizes the root structure. */\nexport function initializeRoot(): void {\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n addMemory(root, (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK, memory.size() << 16);\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = searchBlock(root, payloadSize);\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n block.gcInfo = 0; // RC=0\n // block.rtId = 0; // set by the caller (__alloc)\n block.rtSize = size;\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n if (DEBUG) {\n assert(\n !(blockInfo & FREE) && // must be used\n !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK\n );\n }\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= (blockInfo & ~TAGS_MASK)) {\n prepareBlock(root, block, payloadSize);\n block.rtSize = size;\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which\n // is immediately split though. does this trigger any assertions / issues?\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n block.rtSize = size;\n prepareBlock(root, block, payloadSize);\n return block;\n }\n }\n\n // otherwise move the block\n var newBlock = allocateBlock(root, size);\n newBlock.rtId = block.rtId;\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size);\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n assert(!(blockInfo & FREE)); // must be used (user might call through to this)\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize, id: u32): usize {\n var root = ROOT;\n if (!root) {\n initializeRoot();\n root = ROOT;\n }\n var block = allocateBlock(root, size);\n block.rtId = id;\n return changetype(block) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ref: usize, size: usize): usize {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n return changetype(reallocateBlock(ROOT, changetype(ref - BLOCK_OVERHEAD), size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ref: usize): void {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n freeBlock(ROOT, changetype(ref - BLOCK_OVERHEAD));\n}\n",set:'/// \n\nimport { HASH } from "./util/hash";\n\n// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a set entry. */\n@unmanaged class SetEntry {\n key: K;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K is <= 32-bits\n const align = (sizeof() > sizeof() ? sizeof() : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Set {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // SetEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() { this.clear(); }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: T, hashCode: u32): SetEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n @operator("[]")\n has(key: T): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n add(key: T): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (!entry) {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n entry = changetype>(changetype(this.entries) + this.entriesOffset++ * ENTRY_SIZE());\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n @operator("[]=")\n private __set(key: T, value: bool): void {\n if (value) this.add(key);\n else this.delete(key);\n }\n\n delete(key: T): bool {\n var entry = this.find(key, HASH(key)); // unmanaged!\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key)); // exact \'key\'\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr); // unmanaged!\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr); // unmanaged!\n newEntry.key = oldEntry.key;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n values(): T[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.key);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Set]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',"shared/feature":"// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","shared/target":"// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","shared/typeinfo":"// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n",string:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { compareImpl, strtol, strtod, isSpace } from "./util/string";\nimport { E_INVALIDLENGTH } from "./util/error";\nimport { ArrayBufferView } from "./arraybuffer";\nimport { idof } from "./builtins";\n\n@sealed export abstract class String {\n\n @lazy static readonly MAX_LENGTH: i32 = BLOCK_MAXSIZE >>> alignof();\n\n static fromCharCode(unit: i32, surr: i32 = -1): string {\n var hasSur = surr > 0;\n var out = __alloc(2 << i32(hasSur), idof());\n store(out, unit);\n if (hasSur) store(out, surr, 2);\n return changetype(out); // retains\n }\n\n static fromCodePoint(code: i32): string {\n assert(code <= 0x10FFFF);\n var hasSur = code > 0xFFFF;\n var out = __alloc(2 << i32(hasSur), idof());\n if (!hasSur) {\n store(out, code);\n } else {\n code -= 0x10000;\n let hi: u32 = (code >>> 10) + 0xD800;\n let lo: u32 = (code & 0x3FF) + 0xDC00;\n store(out, (hi << 16) | lo);\n }\n return changetype(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1;\n }\n\n @operator("[]") charAt(pos: i32): String {\n if (pos >= this.length) return changetype("");\n var out = __alloc(2, idof());\n store(out, load(changetype(this) + (pos << 1)));\n return changetype(out); // retains\n }\n\n charCodeAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (NaN)\n return load(changetype(this) + (pos << 1));\n }\n\n codePointAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (undefined)\n var first = load(changetype(this) + (pos << 1));\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) return first;\n var second = load(changetype(this) + ((pos + 1) << 1));\n if (second < 0xDC00 || second > 0xDFFF) return first;\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+") private static __concat(left: String, right: String): String {\n return select(left, changetype("null"), left !== null).concat(right);\n }\n\n concat(other: String): String {\n if (other === null) other = changetype("null");\n var thisSize: isize = this.length << 1;\n var otherSize: isize = other.length << 1;\n var outSize: usize = thisSize + otherSize;\n if (outSize == 0) return changetype("");\n var out = changetype(__alloc(outSize, idof())); // retains\n memory.copy(changetype(out), changetype(this), thisSize);\n memory.copy(changetype(out) + thisSize, changetype(other), otherSize);\n return out;\n }\n\n endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {\n if (search === null) return false;\n end = min(max(end, 0), this.length);\n var searchLength = search.length;\n var searchStart = end - searchLength;\n if (searchStart < 0) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n @operator("==") private static __eq(left: String | null, right: String | null): bool {\n if (left === right) return true;\n if (left === null || right === null) return false;\n var leftLength = left.length;\n if (leftLength != right.length) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(left, 0, right, 0, leftLength);\n }\n\n @operator.prefix("!")\n private static __not(str: String | null): bool {\n return str === null || !str.length;\n }\n\n @operator("!=")\n private static __ne(left: String | null, right: String | null): bool {\n return !this.__eq(left, right);\n }\n\n @operator(">") private static __gt(left: String | null, right: String | null): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!leftLength) return false;\n if (!rightLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0;\n }\n\n @operator(">=") private static __gte(left: String, right: String): bool {\n return !this.__lt(left, right);\n }\n\n @operator("<") private static __lt(left: String, right: String): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!rightLength) return false;\n if (!leftLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0;\n }\n\n @operator("<=") private static __lte(left: String, right: String): bool {\n return !this.__gt(left, right);\n }\n\n includes(search: String, start: i32 = 0): bool {\n return this.indexOf(search, start) != -1;\n }\n\n indexOf(search: String, start: i32 = 0): i32 {\n var searchLen = search.length;\n if (!searchLen) return 0;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len);\n for (len -= searchLen; searchStart <= len; ++searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n lastIndexOf(search: String, start: i32 = i32.MAX_VALUE): i32 {\n var searchLen = search.length;\n if (!searchLen) return this.length;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len - searchLen);\n for (; searchStart >= 0; --searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n startsWith(search: String, start: i32 = 0): bool {\n if (search === null) search = changetype("null");\n var len = this.length;\n var searchStart = min(max(start, 0), len);\n var searchLength = search.length;\n if (searchLength + searchStart > len) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) intStart = max(size + intStart, 0);\n var resultLength = min(max(end, 0), size - intStart);\n if (resultLength <= 0) return changetype("");\n var out = __alloc(resultLength << 1, idof());\n memory.copy(out, changetype(this) + intStart, resultLength);\n return changetype(out); // retains\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len: isize = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var fromPos = min(finalStart, finalEnd) << 1;\n var toPos = max(finalStart, finalEnd) << 1;\n len = toPos - fromPos;\n if (!len) return changetype("");\n if (!fromPos && toPos == this.length << 1) return this;\n var out = __alloc(len, idof());\n memory.copy(out, changetype(this) + fromPos, len);\n return changetype(out); // retains\n }\n\n trim(): String {\n var length = this.length;\n var size: usize = length << 1;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2; size -= 2;\n }\n if (!size) return changetype("");\n if (!offset && size == length << 1) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n @inline\n trimLeft(): String {\n return this.trimStart();\n }\n\n @inline\n trimRight(): String {\n return this.trimEnd();\n }\n\n trimStart(): String {\n var size = this.length << 1;\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2;\n }\n if (!offset) return this;\n size -= offset;\n if (!size) return changetype("");\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n trimEnd(): String {\n var originalSize = this.length << 1;\n var size = originalSize;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n if (!size) return changetype("");\n if (size == originalSize) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n return changetype(out); // retains\n }\n\n padStart(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var prependSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n if (prependSize > padSize) {\n let repeatCount = (prependSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = prependSize - restBase;\n memory.repeat(out, changetype(pad), padSize, repeatCount);\n memory.copy(out + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out, changetype(pad), prependSize);\n }\n memory.copy(out + prependSize, changetype(this), thisSize);\n return changetype(out); // retains\n }\n\n padEnd(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var appendSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n memory.copy(out, changetype(this), thisSize);\n if (appendSize > padSize) {\n let repeatCount = (appendSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = appendSize - restBase;\n memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount);\n memory.copy(out + thisSize + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out + thisSize, changetype(pad), appendSize);\n }\n return changetype(out); // retains\n }\n\n repeat(count: i32 = 0): String {\n var length = this.length;\n\n // Most browsers can\'t handle strings 1 << 28 chars or longer\n if (count < 0 || length * count > (1 << 28)) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n\n if (count == 0 || !length) return changetype("");\n if (count == 1) return this;\n var out = __alloc((length * count) << 1, idof());\n memory.repeat(out, changetype(this), length << 1, count);\n return changetype(out); // retains\n }\n\n replace(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var index: isize = this.indexOf(search);\n if (~index) {\n let rlen: usize = replacement.length;\n len -= slen;\n let olen = len + rlen;\n if (olen) {\n let out = __alloc(olen << 1, idof());\n memory.copy(out, changetype(this), index << 1);\n memory.copy(\n out + (index << 1),\n changetype(replacement),\n rlen << 1\n );\n memory.copy(\n out + ((index + rlen) << 1),\n changetype(this) + ((index + slen) << 1),\n (len - index) << 1\n );\n return changetype(out);\n }\n }\n return this;\n }\n\n replaceAll(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var rlen: usize = replacement.length;\n if (!slen) {\n if (!rlen) return this;\n // Special case: \'abc\'.replaceAll(\'\', \'-\') -> \'-a-b-c-\'\n let out = __alloc((len + (len + 1) * rlen) << 1, idof());\n memory.copy(out, changetype(replacement), rlen << 1);\n let offset = rlen;\n for (let i: usize = 0; i < len; ++i) {\n store(\n changetype(out) + (offset++ << 1),\n load(changetype(this) + (i << 1))\n );\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n }\n return changetype(out);\n }\n var prev: isize = 0, next: isize = 0;\n if (slen == rlen) {\n // Fast path when search and replacement have same length\n let size = len << 1;\n let out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n while (~(next = this.indexOf(search, prev))) {\n memory.copy(out + (next << 1), changetype(replacement), rlen << 1);\n prev = next + slen;\n }\n return changetype(out);\n }\n var out: usize = 0, offset: usize = 0, resLen = len;\n while (~(next = this.indexOf(search, prev))) {\n if (!out) out = __alloc(len << 1, idof());\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let chunk = next - prev;\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n chunk << 1\n );\n offset += chunk;\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n prev = next + slen;\n }\n if (offset) {\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let rest = len - prev;\n if (rest) {\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n rest << 1\n );\n }\n rest += offset;\n if (resLen > rest) out = __realloc(out, rest << 1);\n return changetype(out);\n }\n return this;\n }\n\n slice(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len = this.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end, len);\n len = end - start;\n if (len <= 0) return changetype("");\n var out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n return changetype(out); // retains\n }\n\n split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {\n if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n if (separator === null) return [this];\n var length: isize = this.length;\n var sepLen: isize = separator.length;\n if (limit < 0) limit = i32.MAX_VALUE;\n if (!sepLen) {\n if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n // split by chars\n length = min(length, limit);\n let result = __allocArray(length, alignof(), idof>());\n let resultStart = changetype(result).dataStart;\n for (let i: isize = 0; i < length; ++i) {\n let charStr = __alloc(2, idof());\n store(charStr, load(changetype(this) + (i << 1)));\n store(resultStart + (i << alignof()), charStr); // result[i] = charStr\n if (isManaged()) __retain(charStr);\n }\n return changetype>(result); // retains\n } else if (!length) {\n let result = __allocArray(1, alignof(), idof>());\n store(changetype(result).dataStart, changetype("")); // static ""\n return changetype>(result); // retains\n }\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n var end = 0, start = 0, i = 0;\n while (~(end = this.indexOf(separator, start))) {\n let len = end - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out));\n } else {\n result.push(changetype(""));\n }\n if (++i == limit) return changetype>(result); // retains\n start = end + sepLen;\n }\n if (!start) { // also means: loop above didn\'t do anything\n result.push(this);\n return changetype>(result); // retains\n }\n var len = length - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out)); // retains\n } else {\n result.push(changetype("")); // static ""\n }\n return changetype>(result); // retains\n // releases result\n }\n\n toString(): String {\n return this;\n }\n}\n\n// @ts-ignore: nolib\nexport type string = String;\n\nexport function parseInt(str: string, radix: i32 = 0): f64 {\n return strtol(str, radix);\n}\n\nexport function parseFloat(str: string): f64 {\n return strtod(str);\n}\n\n// Encoding helpers\nexport namespace String {\n\n export namespace UTF8 {\n\n export function byteLength(str: string, nullTerminated: bool = false): i32 {\n var strOff = changetype(str);\n var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var bufLen = nullTerminated ? 1 : 0;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n bufLen += 1; strOff += 2;\n } else if (c1 < 2048) {\n bufLen += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n if ((load(strOff, 2) & 0xFC00) == 0xDC00) {\n strOff += 4; bufLen += 4;\n continue;\n }\n }\n strOff += 2; bufLen += 3;\n }\n }\n return bufLen;\n }\n\n export function encode(str: string, nullTerminated: bool = false): ArrayBuffer {\n var strOff = changetype(str);\n var strEnd = changetype(str) + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(UTF8.byteLength(str, nullTerminated), idof());\n var bufOff = buf;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n store(bufOff, c1);\n bufOff += 1; strOff += 2;\n } else if (c1 < 2048) {\n store(bufOff, c1 >> 6 | 192);\n store(bufOff, c1 & 63 | 128, 1);\n bufOff += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n let c2 = load(strOff, 2);\n if ((c2 & 0xFC00) == 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n store(bufOff, c1 >> 18 | 240);\n store(bufOff, c1 >> 12 & 63 | 128, 1);\n store(bufOff, c1 >> 6 & 63 | 128, 2);\n store(bufOff, c1 & 63 | 128, 3);\n strOff += 4; bufOff += 4;\n continue;\n }\n }\n store(bufOff, c1 >> 12 | 224);\n store(bufOff, c1 >> 6 & 63 | 128, 1);\n store(bufOff, c1 & 63 | 128, 2);\n strOff += 2; bufOff += 3;\n }\n }\n if (nullTerminated) {\n assert(strOff <= strEnd);\n buf = __realloc(buf, bufOff - buf + 1);\n store(bufOff, 0);\n } else {\n assert(strOff == strEnd);\n }\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer, nullTerminated: bool = false): string {\n return decodeUnsafe(changetype(buf), buf.byteLength, nullTerminated);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated: bool = false): string {\n var bufOff = buf;\n var bufEnd = buf + len;\n assert(bufEnd >= bufOff); // guard wraparound\n var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte\n var strOff = str;\n while (bufOff < bufEnd) {\n let cp = load(bufOff++);\n if (cp < 128) {\n if (nullTerminated && !cp) break;\n store(strOff, cp);\n strOff += 2;\n } else if (cp > 191 && cp < 224) {\n if (bufEnd - bufOff < 1) break;\n store(strOff, (cp & 31) << 6 | load(bufOff++) & 63);\n strOff += 2;\n } else if (cp > 239 && cp < 365) {\n if (bufEnd - bufOff < 3) break;\n cp = (\n (cp & 7) << 18 |\n (load(bufOff) & 63) << 12 |\n (load(bufOff, 1) & 63) << 6 |\n load(bufOff, 2) & 63\n ) - 0x10000;\n bufOff += 3;\n store(strOff, 0xD800 + (cp >> 10));\n store(strOff, 0xDC00 + (cp & 1023), 2);\n strOff += 4;\n } else {\n if (bufEnd - bufOff < 2) break;\n store(strOff,\n (cp & 15) << 12 |\n (load(bufOff) & 63) << 6 |\n load(bufOff, 1) & 63\n );\n bufOff += 2; strOff += 2;\n }\n }\n return changetype(__realloc(str, strOff - str)); // retains\n }\n }\n\n export namespace UTF16 {\n\n export function byteLength(str: string): i32 {\n return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n }\n\n export function encode(str: string): ArrayBuffer {\n var size = changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(size, idof());\n memory.copy(buf, changetype(str), size);\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer): string {\n return decodeUnsafe(changetype(buf), buf.byteLength);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize): string {\n var str = __alloc(len &= ~1, idof());\n memory.copy(str, buf, len);\n return changetype(str); // retains\n }\n }\n}\n',symbol:'import { Map } from "./map";\n\n// @ts-ignore: decorator\n@lazy\nvar stringToId: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar idToString: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar nextId: usize = 12; // Symbol.unscopables + 1\n\n@unmanaged @sealed abstract class _Symbol {\n\n // TODO: all of the following default symbols are unused currently yet add to\n // binary size if #toString becomes compiled. Ultimately we\'ll most likely want\n // to remove the unsupported ones and only keep what\'s actually supported.\n\n // @ts-ignore: decorator\n @lazy\n static readonly hasInstance: symbol = changetype(1);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isConcatSpreadable: symbol = changetype(2);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isRegExp: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly iterator: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly match: symbol = changetype(4);\n\n // @ts-ignore: decorator\n @lazy\n static readonly replace: symbol = changetype(5);\n\n // @ts-ignore: decorator\n @lazy\n static readonly search: symbol = changetype(6);\n\n // @ts-ignore: decorator\n @lazy\n static readonly species: symbol = changetype(7);\n\n // @ts-ignore: decorator\n @lazy\n static readonly split: symbol = changetype(8);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toPrimitive: symbol = changetype(9);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toStringTag: symbol = changetype(10);\n\n // @ts-ignore: decorator\n @lazy\n static readonly unscopables: symbol = changetype(11);\n\n static for(key: string): symbol {\n if (!stringToId) { stringToId = new Map(); idToString = new Map(); }\n else if (stringToId.has(key)) return changetype(stringToId.get(key));\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n stringToId.set(key, id);\n idToString.set(id, key);\n return changetype(id);\n }\n\n static keyFor(sym: symbol): string | null {\n return idToString !== null && idToString.has(changetype(sym))\n ? idToString.get(changetype(sym))\n : null;\n }\n\n toString(): string {\n var id = changetype(this);\n var str = "";\n switch (id) {\n case 1: { str = "hasInstance"; break; }\n case 2: { str = "isConcatSpreadable"; break; }\n case 3: { str = "isRegExp"; break; }\n case 4: { str = "match"; break; }\n case 5: { str = "replace"; break; }\n case 6: { str = "search"; break; }\n case 7: { str = "species"; break; }\n case 8: { str = "split"; break; }\n case 9: { str = "toPrimitive"; break; }\n case 10: { str = "toStringTag"; break; }\n case 11: { str = "unscopables"; break; }\n default: {\n if (idToString !== null && idToString.has(id)) str = idToString.get(id);\n break;\n }\n }\n return "Symbol(" + str + ")";\n }\n}\n\nexport function Symbol(description: string | null = null): symbol {\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n return changetype(id);\n}\n\nexport type Symbol = _Symbol;\n\n// @ts-ignore: nolib\nexport type symbol = _Symbol;\n',table:'import { E_NOTIMPLEMENTED } from "./util/error";\n\nexport namespace table {\n\n export function copy(dst: u32, src: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function drop(elementIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n}\n',typedarray:'import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\nimport { idof } from "./builtins";\nimport { ArrayBufferView } from "./arraybuffer";\n\nexport class Int8Array extends ArrayBufferView {\n [key: number]: i8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): i8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: i8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8Array extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8ClampedArray extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return FILL(this, value, start, end);\n }\n\n sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray {\n return SORT(this, fn);\n }\n\n subarray(start: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray {\n return SUBARRAY(this, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int16Array extends ArrayBufferView {\n [key: number]: i16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint16Array extends ArrayBufferView {\n [key: number]: u16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int32Array extends ArrayBufferView {\n [key: number]: i32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint32Array extends ArrayBufferView {\n [key: number]: u32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int64Array extends ArrayBufferView {\n [key: number]: i64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint64Array extends ArrayBufferView {\n [key: number]: u64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float32Array extends ArrayBufferView {\n [key: number]: f32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float64Array extends ArrayBufferView {\n [key: number]: f64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILL(\n array: TArray,\n value: native,\n start: i32,\n end: i32\n): TArray {\n var dataStart = array.dataStart;\n var length = array.length;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (sizeof() == 1) {\n if (start < end) memory.fill(dataStart + start, value, (end - start));\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SORT(\n array: TArray,\n comparator: (a: T, b: T) => i32\n): TArray {\n var length = array.length;\n if (length <= 1) return array;\n var base = array.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b\n store(base, a); // arr[0] = a\n }\n return array;\n }\n SORT_IMPL(base, length, comparator);\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SUBARRAY(\n array: TArray,\n begin: i32,\n end: i32\n): TArray {\n var len = array.length;\n begin = begin < 0 ? max(len + begin, 0) : min(begin, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n end = max(end, begin);\n var out = changetype(__alloc(offsetof(), idof())); // retains\n out.data = array.data; // retains\n out.dataStart = array.dataStart + (begin << alignof());\n out.dataLength = (end - begin) << alignof();\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE_RIGHT(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = array.length - 1; i >= 0; i--) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction MAP(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => T,\n): TArray {\n var length = array.length;\n var dataStart = array.dataStart;\n var out = instantiate(length);\n var outDataStart = out.dataStart;\n for (let i = 0; i < length; i++) {\n store(\n outDataStart + (i << alignof()),\n fn(load(dataStart + (i << alignof())), i, array)\n );\n }\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FIND_INDEX(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): i32 {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return i;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INCLUDES(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): bool {\n return INDEX_OF(array, searchElement, fromIndex) >= 0;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0 || index >= length) return -1;\n if (index < 0) index = max(length + index, 0);\n var dataStart = array.dataStart;\n while (index < length) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n ++index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction LAST_INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0) return -1;\n if (index < 0) index = length + index; // no need to clamp\n else if (index >= length) index = length - 1;\n var dataStart = array.dataStart;\n while (index >= 0) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n --index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SOME(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return true;\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction EVERY(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) continue;\n return false;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FOREACH(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => void,\n): void {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n fn(load(dataStart + (i << alignof())), i, array);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REVERSE(array: TArray): TArray {\n var dataStart = array.dataStart;\n for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) {\n let frontPtr = dataStart + (front << alignof());\n let backPtr = dataStart + (back << alignof());\n let temp = load(frontPtr);\n store(frontPtr, load(backPtr));\n store(backPtr, temp);\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction WRAP(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): TArray {\n var bufferByteLength = buffer.byteLength;\n if (byteOffset >= bufferByteLength) {\n throw new RangeError(E_INDEXOUTOFRANGE);\n }\n var byteLength: i32;\n if (length < 0) {\n if (length == -1) {\n const mask = (1 << alignof() - 1);\n if (buffer.byteLength & mask) {\n throw new RangeError(E_INVALIDLENGTH);\n } else {\n byteLength = buffer.byteLength;\n }\n } else {\n throw new RangeError(E_INVALIDLENGTH);\n }\n } else {\n byteLength = length << alignof();\n }\n if (byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n var out = changetype(__alloc(offsetof(), idof()));\n out.data = buffer;\n out.dataLength = byteLength;\n out.dataStart = changetype(buffer) + byteOffset;\n return out;\n}\n',"util/error":'// Common error messages for use accross the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = "Index out of range";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = "Invalid length";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = "Array is empty";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = "Element type must be nullable if array is holey";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = "Not implemented";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = "Key does not exist";\n',"util/hash":"// @ts-ignore: decorator\n@inline\nexport function HASH(key: T): u32 {\n if (isString()) {\n return hashStr(changetype(key));\n } else if (isReference()) {\n if (sizeof() == 4) return hash32(changetype(key));\n if (sizeof() == 8) return hash64(changetype(key));\n } else if (isFloat()) {\n if (sizeof() == 4) return hash32(reinterpret(f32(key)));\n if (sizeof() == 8) return hash64(reinterpret(f64(key)));\n } else {\n if (sizeof() == 1) return hash8 (u32(key));\n if (sizeof() == 2) return hash16(u32(key));\n if (sizeof() == 4) return hash32(u32(key));\n if (sizeof() == 8) return hash64(u64(key));\n }\n return unreachable();\n}\n\n// FNV-1a 32-bit as a starting point, see: http://isthe.com/chongo/tech/comp/fnv/\n\n// @ts-ignore: decorator\n@inline\nconst FNV_OFFSET: u32 = 2166136261;\n\n// @ts-ignore: decorator\n@inline\nconst FNV_PRIME: u32 = 16777619;\n\nfunction hash8(key: u32): u32 {\n return (FNV_OFFSET ^ key) * FNV_PRIME;\n}\n\nfunction hash16(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 8 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash32(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash64(key: u64): u32 {\n var l = key;\n var h = (key >>> 32);\n var v = FNV_OFFSET;\n v = (v ^ ( l & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( l >> 24 )) * FNV_PRIME;\n v = (v ^ ( h & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( h >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hashStr(key: string): u32 {\n var v = FNV_OFFSET;\n if (key !== null) {\n for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) {\n v = (v ^ load(changetype(key) + i)) * FNV_PRIME;\n }\n }\n return v;\n}\n","util/memory":"export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n let w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 2: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 3: {\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c\n if (dest === src) return;\n if (ASC_SHRINK_LEVEL < 1) {\n if (src + n <= dest || dest + n <= src) {\n memcpy(dest, src, n);\n return;\n }\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, c);\n --n;\n }\n } else {\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n let k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n let c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n let c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c\n if (vl == vr) return 0;\n while (n != 0 && load(vl) == load(vr)) {\n n--; vl++; vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","util/number":'/// \n\nimport { idof } from "../builtins";\nimport { CharCode } from "./string";\nimport { ArrayBufferView } from "../arraybuffer";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline\nconst POWERS10: u32[] = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\n "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\n "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\n "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\n "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\n "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\n "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\n "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\n "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\n "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"\n*/\n// @ts-ignore: decorator\n@lazy @inline\nconst DIGITS: u32[] = [\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n];\n\n// @ts-ignore: decorator\n@lazy @inline\nconst EXP_POWERS: i16[] = [\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n];\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline\nconst FRC_POWERS: u64[] = [\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n];\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return select(1, 2, value < 10);\n } else {\n let m = select(4, 5, value < 10000);\n return select(3, m, value < 1000);\n }\n } else {\n if (value < 10000000) {\n return select(6, 7, value < 1000000);\n } else {\n let m = select(9, 10, value < 1000000000);\n return select(8, m, value < 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n let m = select(11, 12, value < 100000000000);\n return select(10, m, value < 10000000000);\n } else {\n let m = select(14, 15, value < 100000000000000);\n return select(13, m, value < 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return select(16, 17, value < 10000000000000000);\n } else {\n let m = select(19, 20, value < 10000000000000000000);\n return select(18, m, value < 1000000000000000000);\n }\n }\n}\n\nfunction utoa32_lut(buffer: usize, num: u32, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(lut + (d1 << alignof()));\n let digits2 = load(lut + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(lut + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(lut + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_lut(buffer: usize, num: u64, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(lut + (c1 << alignof()));\n let digits2 = load(lut + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(lut + (b1 << alignof()));\n digits2 = load(lut + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_lut(buffer, num, offset);\n}\n\nfunction utoa_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset -= 1;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_core(buffer: usize, num: u32, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa32_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa64_core(buffer: usize, num: u64, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa64_lut(buffer, num, offset);\n }\n}\n\nexport function utoa32(value: u32): String {\n if (!value) return "0";\n\n var decimals = decimalCount32(value);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n return changetype(out); // retains\n}\n\nexport function itoa32(value: i32): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var decimals = decimalCount32(value) + u32(sign);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n if (sign) store(out, CharCode.MINUS);\n return changetype(out); // retains\n}\n\nexport function utoa64(value: u64): String {\n if (!value) return "0";\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n return changetype(out); // retains\n}\n\nexport function itoa64(value: i64): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n if (sign) store(out, CharCode.MINUS);\n\n return changetype(out); // retains\n}\n\nexport function itoa(value: T): String {\n if (!isInteger()) ERROR("integer type expected");\n if (isSigned()) {\n if (sizeof() <= 4) {\n return itoa32(value);\n } else {\n return itoa64(value);\n }\n } else {\n if (sizeof() <= 4) {\n return utoa32(value);\n } else {\n return utoa64(value);\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = unchecked(FRC_POWERS[index]);\n _exp_pow = unchecked(EXP_POWERS[index]);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = ((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp != 0) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n var wp_w_exp = mp_exp;\n\n var p1 = (mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n var lut = changetype(POWERS10).dataStart;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(lut + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (1) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(lut + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n\n return len;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nexport function dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\nexport function dtoa(value: f64): String {\n if (value == 0) return "0.0";\n if (!isFinite(value)) {\n if (isNaN(value)) return "NaN";\n return select("-Infinity", "Infinity", value < 0);\n }\n var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof());\n var length = dtoa_core(buffer, value);\n if (length == MAX_DOUBLE_LENGTH) return changetype(buffer);\n var result = changetype(buffer).substring(0, length);\n __free(buffer);\n return result;\n}\n\nexport function itoa_stream(buffer: usize, offset: usize, value: T): u32 {\n buffer += (offset << 1);\n if (!value) {\n store(buffer, CharCode._0);\n return 1;\n }\n var decimals: u32 = 0;\n if (isSigned()) {\n let sign = i32(value < 0);\n if (sign) value = changetype(-value);\n if (sizeof() <= 4) {\n decimals = decimalCount32(value) + sign;\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32) + sign;\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value) + sign;\n utoa64_core(buffer, value, decimals);\n }\n }\n if (sign) store(buffer, CharCode.MINUS);\n } else {\n if (sizeof() <= 4) {\n decimals = decimalCount32(value);\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value);\n utoa64_core(buffer, value, decimals);\n }\n }\n }\n return decimals;\n}\n\nexport function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {\n buffer += (offset << 1);\n if (value == 0.0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = i32(value < 0);\n let len = 8 + sign;\n memory.copy(buffer, changetype(select("-Infinity", "Infinity", sign)), len << 1);\n return len;\n }\n }\n return dtoa_core(buffer, value);\n}\n',"util/sort":'import { compareImpl } from "./string";\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): (a: T, b: T) => i32 {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a: T, b: T): i32 => (i32(a) - i32(b));\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= (ia >> 31) >>> 1;\n ib ^= (ib >> 31) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= (ia >> 63) >>> 1;\n ib ^= (ib >> 63) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a: T, b: T): i32 => {\n if (a === b || a === null || b === null) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!alen && !blen) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n return compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen));\n };\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function SORT(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n if (isReference()) {\n // TODO replace this to faster stable sort (TimSort) when it implemented\n insertionSort(dataStart, length, comparator);\n } else {\n if (length < 256) {\n insertionSort(dataStart, length, comparator);\n } else {\n weakHeapSort(dataStart, length, comparator);\n }\n }\n}\n\nfunction insertionSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n for (let i = 0; i < length; i++) {\n let a: T = load(dataStart + (i << alignof())); // a = arr[i]\n let j = i - 1;\n while (j >= 0) {\n let b: T = load(dataStart + (j << alignof())); // b = arr[j]\n if (comparator(a, b) < 0) {\n store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b\n } else break;\n }\n store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a\n }\n}\n\nfunction weakHeapSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n const shift32 = alignof();\n\n var bitsetSize = (length + 31) >> 5 << shift32;\n var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below\n memory.fill(bitset, 0, bitsetSize);\n\n // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf\n\n for (let i = length - 1; i > 0; i--) {\n let j = i;\n while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1;\n\n let p = j >> 1;\n let a: T = load(dataStart + (p << alignof())); // a = arr[p]\n let b: T = load(dataStart + (i << alignof())); // b = arr[i]\n if (comparator(a, b) < 0) {\n store(\n bitset + (i >> 5 << shift32),\n load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31))\n );\n store(dataStart + (i << alignof()), a); // arr[i] = a\n store(dataStart + (p << alignof()), b); // arr[p] = b\n }\n }\n\n for (let i = length - 1; i >= 2; i--) {\n let a: T = load(dataStart); // a = arr[0]\n store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i]\n store(dataStart + (i << alignof()), a); // arr[i] = a\n\n let x = 1, y: i32;\n while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y;\n\n while (x > 0) {\n a = load(dataStart); // a = arr[0]\n let b: T = load(dataStart + (x << alignof())); // b = arr[x]\n\n if (comparator(a, b) < 0) {\n store(\n bitset + (x >> 5 << shift32),\n load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31))\n );\n store(dataStart + (x << alignof()), a); // arr[x] = a\n store(dataStart, b); // arr[0] = b\n }\n x >>= 1;\n }\n }\n\n __free(bitset);\n\n var t: T = load(dataStart, sizeof()); // t = arr[1]\n store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0]\n store(dataStart, t); // arr[0] = t\n}\n',"util/string":"export function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var result = 0;\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n while (len && !(result = load(ptr1) - load(ptr2))) {\n --len, ptr1 += 2, ptr2 += 2;\n }\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function isSpace(c: i32): bool {\n if (c <= 0xFF) {\n switch (c) {\n case 0x09: // \n case 0x0A: // \n case 0x0B: // \n case 0x0C: // \n case 0x0D: // \n case 0x20: // \n case 0xA0: return true; // \n }\n return false;\n }\n if (c >= 0x2000 && c <= 0x200A) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // determine sign\n // @ts-ignore: cast\n var sign: T = 1;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n // @ts-ignore: type\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2)) {\n case CharCode.B:\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.O:\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.X:\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n default: radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n while (len--) {\n code = load(ptr);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else break;\n if (code >= radix) break;\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\n// FIXME: naive implementation\nexport function strtod(str: string): f64 {\n var len: i32 = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n // determine sign\n var sign = 1.0;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1.0;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // calculate value\n var num = 0.0;\n while (len--) {\n code = load(ptr);\n if (code == CharCode.DOT) {\n ptr += 2;\n let fac = 0.1; // precision :(\n while (len--) {\n code = load(ptr);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) break;\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) break;\n num = num * 10 + code;\n ptr += 2;\n }\n return sign * num;\n}\n",vector:"/** Vector abstraction. */\n@sealed @unmanaged\nexport abstract class V128 {\n}\n"}):(()=>{const e=path.join(".","..","std","assembly"),n=__webpack_require__(!function(){var e=new Error("Cannot find module 'glob'");throw e.code="MODULE_NOT_FOUND",e}()).sync("**/!(*.d).ts",{cwd:e}),t={nearEntry:fs.readFileSync(nearLibEntry,"utf8")};return n.forEach(n=>t[n.replace(/\.ts$/,"")]=fs.readFileSync(path.join(e,n),"utf8")),t})(),exports.definitionFiles=exports.isBundle?Object({assembly:'/**\n * Environment definitions for compiling AssemblyScript to WebAssembly using asc.\n * @module std/assembly\n *//***/\n\n/// \n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = boolean | number;\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n/** A 128-bit vector. */\ndeclare type v128 = object;\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n/** Whether the bulk memory feature is enabled. */\ndeclare const ASC_FEATURE_BULK_MEMORY: bool;\n/** Whether the SIMD feature is enabled. */\ndeclare const ASC_FEATURE_SIMD: bool;\n/** Whether the threads feature is enabled. */\ndeclare const ASC_FEATURE_THREADS: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, immOffset?: usize, immAlign?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const __heap_base: usize;\n/** Determines the byte size of the specified underlying core type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Determines the alignment (log2) of the specified underlying core type. Compiles to a constant. */\ndeclare function alignof(): usize;\n/** Determines the end offset of the given class type. Compiles to a constant. */\ndeclare function offsetof(): usize;\n/** Determines the offset of the specified field within the given class type. Compiles to a constant. */\ndeclare function offsetof(fieldName: keyof T | string): usize;\n/** Determines the offset of the specified field within the given class type. Returns the class type\'s end offset if field name has been omitted. Compiles to a constant. */\ndeclare function offsetof(fieldName?: string): usize;\n/** Determines the name of a given type. */\ndeclare function nameof(value?: T): string;\n/** Determines the unique runtime id of a class type. Compiles to a constant. */\ndeclare function idof(): u32;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Emits a `call_indirect` instruction, calling the specified function in the function table by index with the specified arguments. Does result in a runtime error if the arguments do not match the called function. */\ndeclare function call_indirect(target: Function | u32, ...args: any[]): T;\n/** Emits a `call` instruction, calling the specified function in the function table directly with the specified arguments. Function index must be a compile-time constant. */\ndeclare function call_direct(target: Function | u32, ...args: any[]): T;\n/** Instantiates a new instance of `T` using the specified constructor arguments. */\ndeclare function instantiate(...args: any[]): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */\ndeclare function isInteger(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */\ndeclare function isFloat(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a boolean type. */\ndeclare function isBoolean(value?: any): value is number;\n/** Tests if the specified type *or* expression can represent negative numbers. Compiles to a constant. */\ndeclare function isSigned(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a reference type. Compiles to a constant. */\ndeclare function isReference(value?: any): value is object | string;\n/** Tests if the specified type *or* expression can be used as a string. Compiles to a constant. */\ndeclare function isString(value?: any): value is string | String;\n/** Tests if the specified type *or* expression can be used as an array. Compiles to a constant. */\ndeclare function isArray(value?: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. Compiles to a constant. */\ndeclare function isArrayLike(value?: any): value is ArrayLike;\n/** Tests if the specified type *or* expression is of a function type. Compiles to a constant. */\ndeclare function isFunction(value?: any): value is (...args: any) => any;\n/** Tests if the specified type *or* expression is of a nullable reference type. Compiles to a constant. */\ndeclare function isNullable(value?: any): bool;\n/** Tests if the specified expression resolves to a defined element. Compiles to a constant. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. Compiles to a constant. */\ndeclare function isConstant(expression: any): bool;\n/** Tests if the specified type *or* expression is of a managed type. Compiles to a constant. */\ndeclare function isManaged(value?: any): bool;\n/** Tests if the specified type is void. Compiles to a constant. */\ndeclare function isVoid(): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n/** Returns the number of parameters in the given function signature type. */\ndeclare function lengthof any>(func?: T): i32;\n\n/** Atomic operations. */\ndeclare namespace atomic {\n /** Atomically loads an integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): T;\n /** Atomically stores an integer value to memory. */\n export function store(offset: usize, value: T, immOffset?: usize): void;\n /** Atomically adds an integer value in memory. */\n export function add(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically subtracts an integer value in memory. */\n export function sub(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise AND operation on an integer value in memory. */\n export function and(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise OR operation on an integer value in memory. */\n export function or(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise XOR operation on an integer value in memory. */\n export function xor(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically exchanges an integer value in memory. */\n export function xchg(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically compares and exchanges an integer value in memory if the condition is met. */\n export function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n /** Performs a wait operation on an address in memory suspending this agent if the integer condition is met. */\n export function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n /** Performs a notify operation on an address in memory waking up suspended agents. */\n export function notify(ptr: usize, count: i32): i32;\n}\n\n/** Describes the result of an atomic wait operation. */\ndeclare enum AtomicWaitResult {\n /** Woken by another agent. */\n OK,\n /** Loaded value did not match the expected value. */\n NOT_EQUAL,\n /** Not woken before the timeout expired. */\n TIMED_OUT\n}\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i8;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Loads an 8-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 32-bit integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 32-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 32-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i32;\n /** Atomically stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize): void;\n /** Performs a wait operation on a 32-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n /** Atomic 32-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 32-bit integer value in memory. */\n export function add(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts a 32-bit integer value in memory. */\n export function sub(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 32-bit integer value in memory. */\n export function and(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 32-bit integer value in memory. */\n export function or(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 32-bit integer value in memory. */\n export function xor(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 32-bit integer value in memory. */\n export function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 32-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: any): i64;\ndeclare namespace i64 {\n /** Smallest representable value. */\n export const MIN_VALUE: i64;\n /** Largest representable value. */\n export const MAX_VALUE: i64;\n /** Loads an 8-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 64-bit unsigned integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 64-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 64-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i64;\n /** Atomically stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize): void;\n /** Performs a wait operation on a 64-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n /** Atomic 64-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 32-bit values. */\n export namespace rmw32 {\n /** Atomically adds a 32-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 32-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 32-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 32-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 32-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 32-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 32-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 64-bit integer value in memory. */\n export function add(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 64-bit integer value in memory. */\n export function sub(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 64-bit integer value in memory. */\n export function and(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 64-bit integer value in memory. */\n export function or(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 64-bit integer value in memory. */\n export function xor(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 64-bit integer value in memory. */\n export function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 64-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare var isize: typeof i32 | typeof i64;\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): i8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): i8;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): i32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: any): i64;\ndeclare namespace u64 {\n /** Smallest representable value. */\n export const MIN_VALUE: u64;\n /** Largest representable value. */\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare var usize: typeof u32 | typeof u64;\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Loads a 32-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n /** Stores a 32-bit float to memory. */\n export function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Loads a 64-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n /** Stores a 64-bit float to memory. */\n export function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function v128(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace v128 {\n /** Creates a 128-bit vector with identical lanes. */\n export function splat(x: T): v128;\n /** Extracts one lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): T;\n /** Replaces one lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: T): v128;\n /** Selects lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n /** Loads a 128-bit vector from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n /** Stores a 128-bit vector to memory. */\n export function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n /** Adds each lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128; // except i64\n /** Divides each lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each lane of two 128-bit vectors using saturation. */\n export function add_saturate(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors using saturation. */\n export function sub_saturate(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise right shift on each lane of a 128-bit vector by a scalar. */\n export function shr(a: v128, b: i32): v128;\n /** Performs the bitwise AND operation on each lane of two 128-bit vectors. */\n export function and(a: v128, b: v128): v128;\n /** Performs the bitwise OR operation on each lane of two 128-bit vectors. */\n export function or(a: v128, b: v128): v128;\n /** Performs the bitwise XOR operation on each lane of two 128-bit vectors. */\n export function xor(a: v128, b: v128): v128;\n /** Performs the bitwise NOT operation on each lane of a 128-bit vector. */\n export function not(a: v128): v128;\n /** Selects bits of either 128-bit vector according to the specified mask. */\n export function bitselect(v1: v128, v2: v128, mask: v128): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes the minimum of each lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each lane of a 128-bit vector from integer to floating point. */\n export function convert(a: v128): v128;\n /** Truncates each lane of a 128-bit vector from floating point to integer with saturation. */\n export function trunc(a: v128): v128;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace i8x16 {\n /** Creates a vector with sixteen identical 8-bit integer lanes. */\n export function splat(x: i8): v128;\n /** Extracts one 8-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i8;\n /** Extracts one 8-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u8;\n /** Replaces one 8-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i8): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 8-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 8-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */\ndeclare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\ndeclare namespace i16x8 {\n /** Creates a vector with eight identical 16-bit integer lanes. */\n export function splat(x: i16): v128;\n /** Extracts one 16-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i16;\n /** Extracts one 16-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u16;\n /** Replaces one 16-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i16): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 16-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 16-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */\ndeclare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\ndeclare namespace i32x4 {\n /** Creates a 128-bit vector with four identical 32-bit integer lanes. */\n export function splat(x: i32): v128;\n /** Extracts one 32-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i32;\n /** Replaces one 32-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i32): v128;\n /** Adds each 32-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 32-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f32x4_sat(a: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f32x4_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */\ndeclare function i64x2(a: i64, b: i64): v128;\ndeclare namespace i64x2 {\n /** Creates a 128-bit vector with two identical 64-bit integer lanes. */\n export function splat(x: i64): v128;\n /** Extracts one 64-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i64;\n /** Replaces one 64-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i64): v128;\n /** Adds each 64-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 64-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Truncates each 64-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f64x2_sat(a: v128): v128;\n /** Truncates each 64-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f64x2_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */\ndeclare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\ndeclare namespace f32x4 {\n /** Creates a 128-bit vector with four identical 32-bit float lanes. */\n export function splat(x: f32): v128;\n /** Extracts one 32-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f32;\n /** Replaces one 32-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f32): v128;\n /** Adds each 32-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 32-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 32-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 32-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 32-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 32-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 32-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 32-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i32x4(a: v128): v128;\n /** Converts each 32-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i32x4(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */\ndeclare function f64x2(a: f64, b: f64): v128;\ndeclare namespace f64x2 {\n /** Creates a 128-bit vector with two identical 64-bit float lanes. */\n export function splat(x: f64): v128;\n /** Extracts one 64-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f64;\n /** Replaces one 64-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f64): v128;\n /** Adds each 64-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 64-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 64-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 64-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 64-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 64-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 64-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 64-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i64x2(a: v128): v128;\n /** Converts each 64-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i64x2(a: v128): v128;\n}\ndeclare namespace v8x16 {\n /** Selects 8-bit lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128;\n}\n/** Macro type evaluating to the underlying native WebAssembly type. */\ndeclare type native = T;\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type ReturnType any> = T extends (...args: any) => infer R ? R : any;\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type returnof any> = ReturnType;\n\n/** Pseudo-class representing the backing class of integer types. */\ndeclare class _Integer {\n /** Smallest representable value. */\n static readonly MIN_VALUE: number;\n /** Largest representable value. */\n static readonly MAX_VALUE: number;\n /** Converts a string to an integer of this type. */\n static parseInt(value: string, radix?: number): number;\n /** Converts this integer to a string. */\n toString(): string;\n}\n\n/** Pseudo-class representing the backing class of floating-point types. */\ndeclare class _Float {\n /** Difference between 1 and the smallest representable value greater than 1. */\n static readonly EPSILON: f32 | f64;\n /** Smallest representable value. */\n static readonly MIN_VALUE: f32 | f64;\n /** Largest representable value. */\n static readonly MAX_VALUE: f32 | f64;\n /** Smallest safely representable integer value. */\n static readonly MIN_SAFE_INTEGER: f32 | f64;\n /** Largest safely representable integer value. */\n static readonly MAX_SAFE_INTEGER: f32 | f64;\n /** Value representing positive infinity. */\n static readonly POSITIVE_INFINITY: f32 | f64;\n /** Value representing negative infinity. */\n static readonly NEGATIVE_INFINITY: f32 | f64;\n /** Value representing \'not a number\'. */\n static readonly NaN: f32 | f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n static isNaN(value: f32 | f64): bool;\n /** Returns true if passed value is finite. */\n static isFinite(value: f32 | f64): bool;\n /** Returns true if the value passed is a safe integer. */\n static isSafeInteger(value: f32 | f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n static isInteger(value: f32 | f64): bool;\n /** Converts a string to an integer. */\n static parseInt(value: string, radix?: i32): f32 | f64;\n /** Converts a string to a floating-point number. */\n static parseFloat(value: string): f32 | f64;\n /** Converts this floating-point number to a string. */\n toString(this: f64): string;\n}\n\n/** Backing class of signed 8-bit integers. */\ndeclare const I8: typeof _Integer;\n/** Backing class of signed 16-bit integers. */\ndeclare const I16: typeof _Integer;\n/** Backing class of signed 32-bit integers. */\ndeclare const I32: typeof _Integer;\n/** Backing class of signed 64-bit integers. */\ndeclare const I64: typeof _Integer;\n/** Backing class of signed size integers. */\ndeclare const Isize: typeof _Integer;\n/** Backing class of unsigned 8-bit integers. */\ndeclare const U8: typeof _Integer;\n/** Backing class of unsigned 16-bit integers. */\ndeclare const U16: typeof _Integer;\n/** Backing class of unsigned 32-bit integers. */\ndeclare const U32: typeof _Integer;\n/** Backing class of unsigned 64-bit integers. */\ndeclare const U64: typeof _Integer;\n/** Backing class of unsigned size integers. */\ndeclare const Usize: typeof _Integer;\n/** Backing class of 32-bit floating-point values. */\ndeclare const F32: typeof _Float;\n/** Backing class of 64-bit floating-point values. */\ndeclare const F64: typeof _Float;\n\n// User-defined diagnostic macros\n\n/** Emits a user-defined diagnostic error when encountered. */\ndeclare function ERROR(message?: any): void;\n/** Emits a user-defined diagnostic warning when encountered. */\ndeclare function WARNING(message?: any): void;\n/** Emits a user-defined diagnostic info when encountered. */\ndeclare function INFO(message?: any): void;\n\n// Polyfills\n\n/** Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Whether the memory managed interface is implemented. */\n export const implemented: bool;\n /** Returns the current memory size in units of pages. One page is 64kb. */\n export function size(): i32;\n /** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\n export function grow(value: i32): i32;\n /** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\n export function fill(dst: usize, value: u8, count: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n export function copy(dst: usize, src: usize, n: usize): void;\n /** Repeats `src` of length `srcLength` `count` times at `dst`. */\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void;\n /** Copies elements from a passive element segment to a table. */\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void;\n /** Prevents further use of a passive element segment. */\n export function drop(segmentIndex: u32): void;\n /** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\n export function compare(vl: usize, vr: usize, n: usize): i32;\n}\n\n/** Garbage collector operations. */\ndeclare namespace gc {\n /** Whether the garbage collector interface is implemented. */\n export const implemented: bool;\n /** Performs a full garbage collection cycle. */\n export function collect(): void;\n /** Retains a reference, making sure that it doesn\'t become collected. */\n export function retain(ref: usize): void;\n /** Releases a reference, allowing it to become collected. */\n export function release(ref: usize): void;\n}\n\n/** Table operations. */\ndeclare namespace table {\n /** Copies elements from a passive element segment to a table. */\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void;\n /** Prevents further use of a passive element segment. */\n export function drop(elementIndex: u32): void;\n /** Copies elements from one region of a table to another region. */\n export function copy(dest: u32, src: u32, n: u32): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer\'s bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform\'s endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getInt64()` method gets a signed 64-bit integer (long long) at the specified byte offset from the start of the `DataView`. */\n getInt64(byteOffset: i32, littleEndian?: boolean): i64;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `getUint64()` method gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the `DataView`. */\n getUint64(byteOffset: i32, littleEndian?: boolean): u64;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setInt64()` method stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the `DataView`. */\n setInt64(byteOffset: i32, value: i64, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** The `setUint64()` method stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the `DataView`. */\n setUint64(byteOffset: i32, value: u64, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ninterface ArrayLike {\n length: i32;\n // [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\n/* @internal */\ndeclare abstract class TypedArray implements ArrayBufferView {\n [key: number]: T;\n /** Number of bytes per element. */\n static readonly BYTES_PER_ELEMENT: usize;\n /** Wrap an ArrayBuffer */\n static wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray;\n /** Constructs a new typed array. */\n constructor(length: i32);\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n /** The length (in elements). */\n readonly length: i32;\n /** The includes() method determines whether a typed array includes a certain element, returning true or false as appropriate. */\n includes(searchElement: T, fromIndex?: i32): bool;\n /** The indexOf() method returns the first index at which a given element can be found in the typed array, or -1 if it is not present. */\n indexOf(searchElement: T, fromIndex?: i32): i32;\n /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */\n subarray(begin?: i32, end?: i32): this;\n /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */\n reduce(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */\n reduceRight(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/\n some(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/\n map(callbackfn: (value: T, index: i32, self: this) => T): this;\n /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */\n sort(callback?: (a: T, b: T) => i32): this;\n /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */\n fill(value: T, start?: i32, end?: i32): this;\n /** The findIndex() method returns an index in the typed array, if an element in the typed array satisfies the provided testing function. Otherwise -1 is returned. See also the find() [not implemented] method, which returns the value of a found element in the typed array instead of its index. */\n findIndex(callbackfn: (value: T, index: i32, self: this) => bool): i32;\n /** The every() method tests whether all elements in the typed array pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.every(). */\n every(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The forEach() method executes a provided function once per array element. This method has the same algorithm as Array.prototype.forEach().*/\n forEach(callbackfn: (value: T, index: i32, self: this) => void): void;\n /** The reverse() method reverses a typed array in place. The first typed array element becomes the last and the last becomes the first. This method has the same algorithm as Array.prototype.reverse(). */\n reverse(): this;\n}\n\n/** An array of twos-complement 8-bit signed integers. */\ndeclare class Int8Array extends TypedArray {}\n/** An array of 8-bit unsigned integers. */\ndeclare class Uint8Array extends TypedArray {}\n/** A clamped array of 8-bit unsigned integers. */\ndeclare class Uint8ClampedArray extends TypedArray {}\n/** An array of twos-complement 16-bit signed integers. */\ndeclare class Int16Array extends TypedArray {}\n/** An array of 16-bit unsigned integers. */\ndeclare class Uint16Array extends TypedArray {}\n/** An array of twos-complement 32-bit signed integers. */\ndeclare class Int32Array extends TypedArray {}\n/** An array of 32-bit unsigned integers. */\ndeclare class Uint32Array extends TypedArray {}\n/** An array of twos-complement 64-bit signed integers. */\ndeclare class Int64Array extends TypedArray {}\n/** An array of 64-bit unsigned integers. */\ndeclare class Uint64Array extends TypedArray {}\n/** An array of 32-bit floating point numbers. */\ndeclare class Float32Array extends TypedArray {}\n/** An array of 64-bit floating point numbers. */\ndeclare class Float64Array extends TypedArray {}\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n\n /** Tests if a value is an array. */\n static isArray(value: any): value is Array;\n /** Creates a new array with at least the specified capacity and length zero. */\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\n/** Class representing a fixed sequence of values of type `T`. */\ndeclare class FixedArray {\n [key: number]: T;\n readonly length: i32;\n constructor(capacity?: i32);\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(start: i32, end?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n repeat(count?: i32): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\ndeclare namespace String {\n /** Encoding helpers for UTF-8. */\n export namespace UTF8 {\n /** Calculates the byte length of the specified string when encoded as UTF-8, optionally null terminated. */\n export function byteLength(str: string, nullTerminated?: bool): i32;\n /** Encodes the specified string to UTF-8 bytes, optionally null terminated. */\n export function encode(str: string, nullTerminated?: bool): ArrayBuffer;\n /** Decodes the specified buffer from UTF-8 bytes to a string, optionally null terminated. */\n export function decode(buf: ArrayBuffer, nullTerminated?: bool): string;\n /** Decodes raw UTF-8 bytes to a string, optionally null terminated. */\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated?: bool): string;\n }\n /** Encoding helpers for UTF-16. */\n export namespace UTF16 {\n /** Calculates the byte length of the specified string when encoded as UTF-16. */\n export function byteLength(str: string): i32;\n /** Encodes the specified string to UTF-16 bytes. */\n export function encode(str: string): ArrayBuffer;\n /** Decodes the specified buffer from UTF-16 bytes to a string. */\n export function decode(buf: ArrayBuffer): string;\n /** Decodes raw UTF-16 bytes to a string. */\n export function decodeUnsafe(buf: usize, len: usize): string;\n }\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ninterface Boolean {\n toString(): string;\n}\ninterface Function {}\ninterface IArguments {}\ninterface Number {\n toString(radix?: number): string;\n}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Map {\n readonly size: i32;\n has(key: K): bool;\n set(key: K, value: V): void;\n get(key: K): V;\n delete(key: K): bool;\n clear(): void;\n keys(): K[]; // preliminary\n values(): V[]; // preliminary\n toString(): string;\n}\n\ndeclare class Set {\n readonly size: i32;\n has(value: K): bool;\n add(value: K): void;\n delete(value: K): bool;\n clear(): void;\n values(): K[]; // preliminary\n toString(): string;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\n\ndeclare const Symbol: SymbolConstructor;\n\ninterface IMath {\n /** The base of natural logarithms, e, approximately 2.718. */\n readonly E: T;\n /** The natural logarithm of 2, approximately 0.693. */\n readonly LN2: T;\n /** The natural logarithm of 10, approximately 2.302. */\n readonly LN10: T;\n /** The base 2 logarithm of e, approximately 1.442. */\n readonly LOG2E: T;\n /** The base 10 logarithm of e, approximately 0.434. */\n readonly LOG10E: T;\n /** The ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n readonly PI: T;\n /** The square root of 1/2, approximately 0.707. */\n readonly SQRT1_2: T;\n /** The square root of 2, approximately 1.414. */\n readonly SQRT2: T;\n /** Returns the absolute value of `x`. */\n abs(x: T): T;\n /** Returns the arccosine (in radians) of `x`. */\n acos(x: T): T;\n /** Returns the hyperbolic arc-cosine of `x`. */\n acosh(x: T): T;\n /** Returns the arcsine (in radians) of `x`. */\n asin(x: T): T;\n /** Returns the hyperbolic arcsine of `x`. */\n asinh(x: T): T;\n /** Returns the arctangent (in radians) of `x`. */\n atan(x: T): T;\n /** Returns the arctangent of the quotient of its arguments. */\n atan2(y: T, x: T): T;\n /** Returns the hyperbolic arctangent of `x`. */\n atanh(x: T): T;\n /** Returns the cube root of `x`. */\n cbrt(x: T): T;\n /** Returns the smallest integer greater than or equal to `x`. */\n ceil(x: T): T;\n /** Returns the number of leading zero bits in the 32-bit binary representation of `x`. */\n clz32(x: T): T;\n /** Returns the cosine (in radians) of `x`. */\n cos(x: T): T;\n /** Returns the hyperbolic cosine of `x`. */\n cosh(x: T): T;\n /** Returns e to the power of `x`. */\n exp(x: T): T;\n /** Returns e to the power of `x`, minus 1. */\n expm1(x: T): T;\n /** Returns the largest integer less than or equal to `x`. */\n floor(x: T): T;\n /** Returns the nearest 32-bit single precision float representation of `x`. */\n fround(x: T): T;\n /** Returns the square root of the sum of squares of its arguments. */\n hypot(value1: T, value2: T): T; // TODO: rest\n /** Returns the result of the C-like 32-bit multiplication of `a` and `b`. */\n imul(a: T, b: T): T;\n /** Returns the natural logarithm (base e) of `x`. */\n log(x: T): T;\n /** Returns the base 10 logarithm of `x`. */\n log10(x: T): T;\n /** Returns the natural logarithm (base e) of 1 + `x`. */\n log1p(x: T): T;\n /** Returns the base 2 logarithm of `x`. */\n log2(x: T): T;\n /** Returns the largest-valued number of its arguments. */\n max(value1: T, value2: T): T; // TODO: rest\n /** Returns the lowest-valued number of its arguments. */\n min(value1: T, value2: T): T; // TODO: rest\n /** Returns `base` to the power of `exponent`. */\n pow(base: T, exponent: T): T;\n /** Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0. */\n random(): T;\n /** Returns the value of `x` rounded to the nearest integer. */\n round(x: T): T;\n /** Returns the sign of `x`, indicating whether the number is positive, negative or zero. */\n sign(x: T): T;\n /** Returns whether the sign bit of `x` is set. */\n signbit(x: T): bool;\n /** Returns the sine of `x`. */\n sin(x: T): T;\n /** Returns the hyperbolic sine of `x`. */\n sinh(x: T): T;\n /** Returns the square root of `x`. */\n sqrt(x: T): T;\n /** Returns the tangent of `x`. */\n tan(x: T): T;\n /** Returns the hyperbolic tangent of `x`. */\n tanh(x: T): T;\n /** Returns the integer part of `x` by removing any fractional digits. */\n trunc(x: T): T;\n}\n\ninterface INativeMath extends IMath {\n /** Contains sin value produced after Math/Mathf.sincos */\n sincos_sin: T;\n /** Contains cos value produced after Math/Mathf.sincos */\n sincos_cos: T;\n /** Seeds the random number generator. */\n seedRandom(value: i64): void;\n /** Returns the floating-point remainder of `x / y` (rounded towards zero). */\n mod(x: T, y: T): T;\n /** Returns the floating-point remainder of `x / y` (rounded to nearest). */\n rem(x: T, y: T): T;\n /** Returns sin and cos simultaneously for same angle. Results stored to `sincos_s32/64` and `sincos_c32/64` globals */\n sincos(x: T): void;\n}\n\n/** Double precision math imported from JavaScript. */\ndeclare const JSMath: IMath;\n/** Double precision math implemented natively. */\ndeclare const NativeMath: INativeMath;\n/** Single precision math implemented natively. */\ndeclare const NativeMathf: INativeMath;\n/** Alias of {@link NativeMath} or {@link JSMath} respectively. Defaults to `NativeMath`. */\ndeclare const Math: IMath;\n/** Alias of {@link NativeMathf} or {@link JSMath} respectively. Defaults to `NativeMathf`. */\ndeclare const Mathf: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): i64;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): i64;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: i64);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): i64;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: i64): i64;\n}\n\n/** Environmental tracing function for debugging purposes. */\ndeclare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: f64, a4?: f64): void;\n\n// Decorators\n\ninterface TypedPropertyDescriptor {\n configurable?: boolean;\n enumerable?: boolean;\n writable?: boolean;\n value?: T;\n get?(): T;\n set?(value: T): void;\n}\n\n/** Annotates a method as a binary operator overload for the specified `token`. */\ndeclare function operator(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n) => TypedPropertyDescriptor | void;\n\ndeclare namespace operator {\n /** Annotates a method as a binary operator overload for the specified `token`. */\n export function binary(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n ): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary prefix operator overload for the specified `token`. */\n export function prefix(token: "!" | "~" | "+" | "-" | "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary postfix operator overload for the specified `token`. */\n export function postfix(token: "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n}\n\n/** Annotates an element as a program global. */\ndeclare function global(...args: any[]): any;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n\n/** Annotates a class as being sealed / non-derivable. */\ndeclare function sealed(constructor: Function): void;\n\n/** Annotates a method, function or constant global as always inlined. */\ndeclare function inline(...args: any[]): any;\n\n/** Annotates a method, function or constant global as unsafe. */\ndeclare function unsafe(...args: any[]): any;\n\n/** Annotates an explicit external name of a function or global. */\ndeclare function external(...args: any[]): any;\n\n/** Annotates a global for lazy compilation. */\ndeclare function lazy(...args: any[]): any;\n\n/** Annotates a function as the explicit start function. */\ndeclare function start(...args: any[]): any;\n',portable:"/**\n * Environment definitions for compiling AssemblyScript to JavaScript using tsc.\n *\n * Note that semantic differences require additional explicit conversions for full compatibility.\n * For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n * result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n *\n * Note that i64's are not portable (JS numbers are IEEE754 doubles with a maximum safe integer\n * value of 2^53-1) and instead require a compatibility layer to work in JS as well, as for example\n * {@link glue/js/i64} respectively {@link glue/wasm/i64}.\n *\n * @module std/portable\n *//***/\n\n/// \n\n// Types\n\ndeclare type bool = boolean;\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified value is a valid integer. Can't distinguish an integer from an integral float. */\ndeclare function isInteger(value: any): value is number;\n/** Tests if the specified value is a valid float. Can't distinguish a float from an integer. */\ndeclare function isFloat(value: any): value is number;\n/** Tests if the specified value is of a nullable reference type. */\ndeclare function isNullable(value: any): bool;\n/** Tests if the specified value is of a reference type. */\ndeclare function isReference(value: any): value is object | string;\n/** Tests if the specified value is of a function type */\ndeclare function isFunction(value: any): value is Function;\n/** Tests if the specified value can be used as a string. */\ndeclare function isString(value: any): value is string | String;\n/** Tests if the specified value can be used as an array. */\ndeclare function isArray(value: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. */\ndeclare function isArrayLike(value: any): value is ArrayLike;\n/** Tests if the specified expression resolves to a defined element. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. */\ndeclare function isConstant(expression: any): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T | null, message?: string): T;\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i16;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: any): isize;\ndeclare namespace isize {\n /** Smallest representable value. */\n export const MIN_VALUE: isize;\n /** Largest representable value. */\n export const MAX_VALUE: isize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): isize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): u8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): u16;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): u32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: any): isize;\ndeclare namespace usize {\n /** Smallest representable value. */\n export const MIN_VALUE: usize;\n /** Largest representable value. */\n export const MAX_VALUE: usize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): usize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f32): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f32): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f64): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f64;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f64;\n}\n\n// Polyfills\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Allocates a chunk of memory of the specified size and returns a pointer to it. */\n function allocate(size: usize): usize;\n /** Disposes a chunk of memory by its pointer. */\n function free(ptr: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n function copy(dst: usize, src: usize, n: usize): void;\n /** Fills size bytes from from the specified destination by same value in memory. */\n function fill(dst: usize, value: u8, size: usize): void;\n /** Resets the allocator to its initial state, if supported. */\n function reset(): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer's bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform's endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ndeclare class Array {\n\n static isArray(value: any): value is Array;\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from?: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint8ClampedArray extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ninterface ArrayLike {\n length: i32;\n [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: i32;\n\n private constructor();\n\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n endsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(from: i32, to?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n repeat(count?: i32): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ndeclare class Set {\n constructor(entries?: T[]);\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n toString(): string;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n delete(key: K): bool;\n toString(): string;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\ndeclare const Symbol: SymbolConstructor;\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ninterface IMath {\n readonly E: f64;\n readonly LN2: f64;\n readonly LN10: f64;\n readonly LOG2E: f64;\n readonly LOG10E: f64;\n readonly PI: f64;\n readonly SQRT1_2: f64;\n readonly SQRT2: f64;\n\n sincos_sin: f64;\n sincos_cos: f64;\n\n abs(x: f64): f64;\n acos(x: f64): f64;\n acosh(x: f64): f64;\n asin(x: f64): f64;\n asinh(x: f64): f64;\n atan(x: f64): f64;\n atan2(y: f64, x: f64): f64;\n atanh(x: f64): f64;\n cbrt(x: f64): f64;\n ceil(x: f64): f64;\n clz32(x: f64): i32;\n cos(x: f64): f64;\n cosh(x: f64): f64;\n exp(x: f64): f64;\n expm1(x: f64): f64;\n floor(x: f64): f64;\n fround(x: f64): f32;\n hypot(value1: f64, value2: f64): f64; // TODO: see std/math\n imul(a: f64, b: f64): i32;\n log(x: f64): f64;\n log10(x: f64): f64;\n log1p(x: f64): f64;\n log2(x: f64): f64;\n max(value1: f64, value2: f64): f64; // TODO: see std/math\n min(value1: f64, value2: f64): f64; // TODO: see std/math\n pow(base: f64, exponent: f64): f64;\n random(): f64;\n round(x: f64): f64;\n sign(x: f64): f64;\n signbit(x: f64): bool;\n sin(x: f64): f64;\n sincos(x: f64): f64;\n sinh(x: f64): f64;\n sqrt(x: f64): f64;\n tan(x: f64): f64;\n tanh(x: f64): f64;\n trunc(x: f64): f64;\n}\n\ndeclare const Math: IMath;\ndeclare const Mathf: IMath;\ndeclare const JSMath: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): number;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): number;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: number);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): number;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: number): number;\n}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n"}):(()=>{const e=path.join(".","..","std");return{assembly:fs.readFileSync(path.join(e,"assembly","index.d.ts"),"utf8"),portable:fs.readFileSync(path.join(e,"portable","index.d.ts"),"utf8")}})(),exports.compileString=(e,n)=>{"string"==typeof e&&(e={"input.ts":e});const t=Object.create({stdout:createMemoryStream(),stderr:createMemoryStream()});var r=["--binaryFile","binary","--textFile","text"];return Object.keys(n||{}).forEach(e=>{var t=n[e];Array.isArray(t)?t.forEach(n=>r.push("--"+e,String(n))):r.push("--"+e,String(t))}),exports.main(r.concat(Object.keys(e)),{stdout:t.stdout,stderr:t.stderr,readFile:n=>e.hasOwnProperty(n)?e[n]:null,writeFile:(e,n)=>t[e]=n,listFiles:()=>[]}),t},exports.main=function(e,n,t){"function"==typeof n?(t=n,n={}):n||(n={});const r=n.stdout||process.stdout,i=n.stderr||process.stderr,a=n.readFile||O,o=n.writeFile||N,s=n.listFiles||R,u=n.stats||createStats();if(!r)throw Error("'options.stdout' must be specified");if(!i)throw Error("'options.stderr' must be specified");const l=optionsUtil.parse(e,exports.options),c=l.options;if(e=l.arguments,c.noColors?colorsUtil.stdout.supported=colorsUtil.stderr.supported=!1:(colorsUtil.stdout=colorsUtil.from(r),colorsUtil.stderr=colorsUtil.from(i)),l.unknown.length&&l.unknown.forEach(e=>{i.write(colorsUtil.stderr.yellow("WARN: ")+"Unknown option '"+e+"'"+EOL)}),l.trailing.length&&i.write(colorsUtil.stderr.yellow("WARN: ")+"Unsupported trailing arguments: "+l.trailing.join(" ")+EOL),t||(t=function(e){var n=0;return e&&(i.write(colorsUtil.stderr.red("ERROR: ")+e.stack.replace(/^ERROR: /i,"")+EOL),n=1),n}),c.version)return r.write("Version "+exports.version+(isDev?"-dev":"")+EOL),t(null);if(c.help||!e.length){var f=c.help?r:i,d=c.help?colorsUtil.stdout:colorsUtil.stderr;return f.write([d.white("SYNTAX")," "+d.cyan("asc")+" [entryFile ...] [options]","",d.white("EXAMPLES")," "+d.cyan("asc")+" hello.ts"," "+d.cyan("asc")+" hello.ts -b hello.wasm -t hello.wat"," "+d.cyan("asc")+" hello1.ts hello2.ts -b -O > hello.wasm","",d.white("OPTIONS")].concat(optionsUtil.help(exports.options,24,EOL)).join(EOL)+EOL),t(null)}if(!fs.readFileSync){if(a===O)throw Error("'options.readFile' must be specified");if(o===N)throw Error("'options.writeFile' must be specified");if(s===R)throw Error("'options.listFiles' must be specified")}const p=c.baseDir?path.resolve(c.baseDir):".",h=c.notNear?[]:[nearBindings];c.transform&&c.transform.forEach(e=>h.push(__webpack_require__(13)(path.isAbsolute(e=e.trim())?e:path.join(process.cwd(),e))));var g=null,x=new Map,v=new Map;Object.keys(exports.libraryFiles).forEach(e=>{e.indexOf("/")>=0||(u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(exports.libraryFiles[e],exports.libraryPrefix+e+".ts",!1,g)}))});const m=[];if(c.lib){let e=c.lib;"string"==typeof e&&(e=e.split(",")),Array.prototype.push.apply(m,e.map(e=>e.trim()));for(let e=0,n=m.length;e{g=assemblyscript.parseFile(o,exports.libraryPrefix+i,!1,g)})}}}function _(e,n){return e.split(SEP).map((e,t,r)=>{let i=r.slice(0,t+1).join(SEP)||SEP,a=path.relative(p,i);return path.join(a,n)}).filter(e=>s(e,p)).reverse()}function y(e){let n=c.path.map(n=>_(e,n));return _(e,"node_modules").concat(...n)}function b(){for(var e,n,r;null!=(e=g.nextFile());){if(dependee=v.get(assemblyscript.getDependee(g,e))||p,n=null,r=null,e.startsWith(exports.libraryPrefix)){const t=e.substring(exports.libraryPrefix.length),i=e.substring(exports.libraryPrefix.length)+"/index";if(exports.libraryFiles.hasOwnProperty(t))n=exports.libraryFiles[t],e=exports.libraryPrefix+t+".ts";else if(exports.libraryFiles.hasOwnProperty(i))n=exports.libraryFiles[i],e=exports.libraryPrefix+i+".ts";else for(let o=0,s=m.length;o{if(x.has(o))return x.get(o);let e=path.join(s,o,"package.json"),n=a(e,p);if(n){let r;try{r=JSON.parse(n)}catch(n){return t(Error("Parsing "+e+" failed"))}let i=r.ascMain;if(i&&"string"==typeof i){let e=i.replace(/(.*)\/index\.ts/,"$1");return x.set(o,e),e}}return"assembly"})(),l=e=>{e.startsWith(exports.libraryPrefix)&&(e=e.substring(exports.libraryPrefix.length));let n=e.substring(0,e.indexOf("/")),t=e.substring(e.indexOf("/")+1);return path.join(s,n,u,t)};c.traceResolution&&i.write(" in '"+l(e)+"'");const f=e,d=e+"/index";if(null!==(n=a(l(f)+".ts",p))?e=f+".ts":null!==(n=a(l(d)+".ts",p))&&(e=d+".ts"),null!==n){c.traceResolution&&i.write(EOL+" -> '"+l(e)+"'"+EOL),r=path.join(s,o);break}c.traceResolution&&i.write(EOL)}}if(null==n)return t(Error("Import file '"+e+".ts' not found."));v.set(e.replace(/\.ts$/,""),r),u.parseCount++,u.parseTime+=measure(()=>{assemblyscript.parseFile(n,e,!1,g)})}if(checkDiagnostics(g,i))return t(Error("Parse error"))}c.path=c.path||[];{let e=String(c.runtime),n="rt/index-"+e,r=exports.libraryFiles[n];if(null==r){if(null==(r=a((n=e)+".ts",p)))return t(Error("Runtime '"+e+"' not found."))}else n="~lib/"+n;u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(r,n,!0,g)})}for(let n=0,r=e.length;n{g=assemblyscript.parseFile(o,i,!0,g)})}{let e=b();if(e)return e}!function(e,...n){h.forEach(t=>{"function"==typeof t[e]&&t[e](...n)})}("afterParse",g,o,p);{let e=b();if(e)return e}const E=assemblyscript.finishParsing(g);if(c.listFiles)return i.write(E.sources.map(e=>e.normalizedPath).sort().join(EOL)+EOL),t(null);var T=0,A=0;c.optimize&&(T=exports.defaultOptimizeLevel,A=exports.defaultShrinkLevel),"number"==typeof c.optimizeLevel&&(T=c.optimizeLevel),"number"==typeof c.shrinkLevel&&(A=c.shrinkLevel),T=Math.min(Math.max(T,0),3),A=Math.min(Math.max(A,0),2);const S=assemblyscript.createOptions();if(assemblyscript.setTarget(S,0),assemblyscript.setNoAssert(S,c.noAssert),assemblyscript.setImportMemory(S,c.importMemory),assemblyscript.setSharedMemory(S,c.sharedMemory),assemblyscript.setImportTable(S,c.importTable),assemblyscript.setExplicitStart(S,c.explicitStart),assemblyscript.setMemoryBase(S,c.memoryBase>>>0),assemblyscript.setSourceMap(S,null!=c.sourceMap),assemblyscript.setOptimizeLevelHints(S,T,A),assemblyscript.setNoUnsafe(S,c.noUnsafe),assemblyscript.setGlobalAlias(S,"Math","NativeMath"),assemblyscript.setGlobalAlias(S,"Mathf","NativeMathf"),assemblyscript.setGlobalAlias(S,"abort","~lib/builtins/abort"),assemblyscript.setGlobalAlias(S,"trace","~lib/builtins/trace"),c.use){let e=c.use;for(let n=0,r=e.length;n{F=assemblyscript.compileProgram(E,S)})}catch(e){return t(e)}if(checkDiagnostics(g,i))return F&&F.dispose(),t(Error("Compile error"));if(c.validate&&(u.validateCount++,u.validateTime+=measure(()=>{if(!F.validate())return F.dispose(),t(Error("Validate error"))})),"clamp"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-clamp"])});else if("js"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-js"])});else if("allow"!==c.trapMode)return F.dispose(),t(Error("Unsupported trap mode"));(T>=3||A>=2)&&(T=4),F.setOptimizeLevel(T),F.setShrinkLevel(A),F.setDebugInfo(c.debug);var z=[];if(c.runPasses&&("string"==typeof c.runPasses&&(c.runPasses=c.runPasses.split(",")),c.runPasses.length&&c.runPasses.forEach(e=>{z.indexOf(e)<0&&z.push(e)})),(T>0||A>0)&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.optimize()})),z.length&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(z.map(e=>e.trim()))})),!c.noEmit){let e=!1,n=!1;if(null!=c.outFile&&(/\.was?t$/.test(c.outFile)&&null==c.textFile?c.textFile=c.outFile:/\.js$/.test(c.outFile)&&null==c.asmjsFile?c.asmjsFile=c.outFile:null==c.binaryFile&&(c.binaryFile=c.outFile)),null!=c.binaryFile){let r,s=null!=c.sourceMap?c.sourceMap.length?c.sourceMap:path.basename(c.binaryFile)+".map":null;if(u.emitCount++,u.emitTime+=measure(()=>{r=F.toBinary(s)}),c.binaryFile.length?o(c.binaryFile,r.output,p):(C(r.output),e=!0),n=!0,null!=r.sourceMap)if(c.binaryFile.length){let e=JSON.parse(r.sourceMap);e.sourceRoot=exports.sourceMapRoot,e.sources.forEach((n,r)=>{let i=null;if(n.startsWith(exports.libraryPrefix)){let e=n.substring(exports.libraryPrefix.length).replace(/\.ts$/,"");if(exports.libraryFiles.hasOwnProperty(e))i=exports.libraryFiles[e];else for(let e=0,t=m.length;e{t=F.toAsmjs()}),o(c.asmjsFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=F.toAsmjs()}),C(t),e=!0),n=!0}if(null!=c.idlFile){let t;c.idlFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),o(c.idlFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),C(t),e=!0),n=!0}if(null!=c.tsdFile){let t;c.tsdFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),o(c.tsdFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),C(t),e=!0),n=!0}if(null!=c.textFile||!n){let n;c.textFile&&c.textFile.length?(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),o(c.textFile,n,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),C(n))}}return F.dispose(),c.measure&&printStats(u,i),c.printrtti&&printRTTI(E,i),t(null);function O(e,n){let t=path.resolve(n,e);try{let e;return u.readCount++,u.readTime+=measure(()=>{e=fs.readFileSync(t,{encoding:"utf8"})}),e}catch(e){return null}}function N(e,n,t){try{return u.writeCount++,u.writeTime+=measure(()=>{mkdirp(path.join(t,path.dirname(e))),"string"==typeof n?fs.writeFileSync(path.join(t,e),n,{encoding:"utf8"}):fs.writeFileSync(path.join(t,e),n)}),!0}catch(e){return!1}}function R(e,n){var t;try{return u.readTime+=measure(()=>{t=fs.readdirSync(path.join(n,e)).filter(e=>/^(?!.*\.d\.ts$).*\.ts$/.test(e))}),t}catch(e){return null}}function C(e){C.used||(u.writeCount++,C.used=!0),u.writeTime+=measure(()=>{"string"==typeof e?r.write(e,{encoding:"utf8"}):r.write(e)})}},exports.checkDiagnostics=checkDiagnostics,exports.createStats=createStats,process.hrtime||(process.hrtime=__webpack_require__(14)),exports.measure=measure,exports.formatTime=formatTime,exports.printStats=printStats,exports.printRTTI=printRTTI;var allocBuffer=void 0!==global&&global.Buffer?global.Buffer.allocUnsafe||function(e){return new global.Buffer(e)}:function(e){return new Uint8Array(e)};function createMemoryStream(e){var n=[];return n.write=function(n){if(e&&e(n),"string"==typeof n){let e=allocBuffer(utf8.length(n));utf8.write(n,e,0),n=e}this.push(n)},n.reset=function(){n.length=0},n.toBuffer=function(){for(var e=0,n=0,t=this.length;n191&&r<224?a[o++]=(31&r)<<6|63&e[n++]:r>239&&r<365?(r=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[n++])<<6|63&e[n++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},r.write=function(e,n,t){for(var r,i,a=t,o=0;o>6|192,n[t++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,n[t++]=r>>18|240,n[t++]=r>>12&63|128,n[t++]=r>>6&63|128,n[t++]=63&r|128):(n[t++]=r>>12|224,n[t++]=r>>6&63|128,n[t++]=63&r|128);return t-a}},function(e,n,t){(function(e){var t=void 0!==e&&e||{},r=t.env&&"CI"in t.env;function i(e,t){var i=t||{};return i.supported=e&&!!e.isTTY||r,i.gray=e=>i.supported?n.GRAY+e+n.RESET:e,i.red=e=>i.supported?n.RED+e+n.RESET:e,i.green=e=>i.supported?n.GREEN+e+n.RESET:e,i.yellow=e=>i.supported?n.YELLOW+e+n.RESET:e,i.blue=e=>i.supported?n.BLUE+e+n.RESET:e,i.magenta=e=>i.supported?n.MAGENTA+e+n.RESET:e,i.cyan=e=>i.supported?n.CYAN+e+n.RESET:e,i.white=e=>i.supported?n.WHITE+e+n.RESET:e,i}n.stdout=i(t.stdout,n),n.stderr=i(t.stderr),n.from=i,n.GRAY="",n.RED="",n.GREEN="",n.YELLOW="",n.BLUE="",n.MAGENTA="",n.CYAN="",n.WHITE="",n.RESET=""}).call(this,t(0))},function(e,n){n.parse=function(e,n){var t={},r=[],arguments=[],i=[],a={};Object.keys(n).forEach(e=>{if(!e.startsWith(" ")){var r=n[e];null!=r.alias&&("string"==typeof r.alias?a[r.alias]=e:Array.isArray(r.alias)&&r.alias.forEach(n=>a[n]=e)),null!=r.default&&(t[e]=r.default)}});for(var o=0,s=(e=e.slice()).length;ot[e]=s.value[e])}else r.push(i)}for(;o{var o=e[n];if(null!=o.description){for(var s="";s.length{for(let n=0;n=0?u.substring(l+1):u,i.statements=new Array,i.range=new o.Range(i,0,t.length),i.text=t,i}return i(n,e),Object.defineProperty(n.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),n}(l);n.Source=$;var ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.decorators=null,n.flags=a.CommonFlags.NONE,n}return i(n,e),n.prototype.is=function(e){return(this.flags&e)==e},n.prototype.isAny=function(e){return 0!=(this.flags&e)},n.prototype.set=function(e){this.flags|=e},n}(J);n.DeclarationStatement=ee;var ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INDEXSIGNATUREDECLARATION,n}return i(n,e),n}(ee);n.IndexSignatureDeclaration=ne;var te=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i(n,e),n}(ee);n.VariableLikeDeclarationStatement=te;var re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BLOCK,n}return i(n,e),n}(J);n.BlockStatement=re;var ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BREAK,n}return i(n,e),n}(J);n.BreakStatement=ie;var ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CLASSDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n}(ee);n.ClassDeclaration=ae;var oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CONTINUE,n}return i(n,e),n}(J);n.ContinueStatement=oe;var se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.DO,n}return i(n,e),n}(J);n.DoStatement=se;var ue=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EMPTY,n}return i(n,e),n}(J);n.EmptyStatement=ue;var le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMDECLARATION,n}return i(n,e),n}(ee);n.EnumDeclaration=le;var ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMVALUEDECLARATION,n}return i(n,e),n}(te);n.EnumValueDeclaration=ce;var fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTIMPORT,n}return i(n,e),n}(l);n.ExportImportStatement=fe;var de=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTMEMBER,n}return i(n,e),n}(l);n.ExportMember=de;var pe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORT,n}return i(n,e),n}(J);n.ExportStatement=pe;var he=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTDEFAULT,n}return i(n,e),n}(J);n.ExportDefaultStatement=he;var ge=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPRESSION,n}return i(n,e),n}(J);n.ExpressionStatement=ge;var xe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FIELDDECLARATION,n.parameterIndex=-1,n}return i(n,e),n}(te);n.FieldDeclaration=xe;var ve=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FOR,n}return i(n,e),n}(J);n.ForStatement=ve,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(n.ArrowKind||(n.ArrowKind={}));var me=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FUNCTIONDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},n}(ee);n.FunctionDeclaration=me;var _e=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IF,n}return i(n,e),n}(J);n.IfStatement=_e;var ye=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORTDECLARATION,n}return i(n,e),n}(ee);n.ImportDeclaration=ye;var be=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORT,n}return i(n,e),n}(J);n.ImportStatement=be;var Ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INTERFACEDECLARATION,n}return i(n,e),n}(ae);n.InterfaceDeclaration=Ee;var Te=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.METHODDECLARATION,n}return i(n,e),n}(me);n.MethodDeclaration=Te;var Ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.NAMESPACEDECLARATION,n}return i(n,e),n}(ee);n.NamespaceDeclaration=Ae;var Se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.RETURN,n}return i(n,e),n}(J);n.ReturnStatement=Se;var Fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCHCASE,n}return i(n,e),n}(l);n.SwitchCase=Fe;var Ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCH,n}return i(n,e),n}(J);n.SwitchStatement=Ie;var ze=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.THROW,n}return i(n,e),n}(J);n.ThrowStatement=ze;var Oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TRY,n}return i(n,e),n}(J);n.TryStatement=Oe;var Ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TYPEDECLARATION,n}return i(n,e),n}(ee);n.TypeDeclaration=Ne;var Re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLEDECLARATION,n}return i(n,e),n}(te);n.VariableDeclaration=Re;var Ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLE,n}return i(n,e),n}(J);n.VariableStatement=Ce;var Le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VOID,n}return i(n,e),n}(J);n.VoidStatement=Le;var we=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.WHILE,n}return i(n,e),n}(J);function ke(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}n.WhileStatement=we,n.findDecorator=function(e,n){if(n)for(var t=0,r=n.length;t";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var d=function(){function e(e,n,t){this.debugInfoRef=0,this.source=e,this.start=n,this.end=t}return e.join=function(n,t){if(n.source!=t.source)throw new Error("source mismatch");return new e(n.source,n.startt.end?n.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,n=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&n++;return n},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,n=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++n;return n},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();n.Range=d;var p=function(e){function n(n,t){void 0===t&&(t=null);var r=e.call(this,t)||this;r.end=0,r.pos=0,r.token=-1,r.tokenPos=0,r.nextToken=-1,r.nextTokenPos=0,r.nextTokenOnNewLine=!1,r.onComment=null,r.source=n,r.pos=0,r.end=n.text.length,r.diagnostics=t||new Array;var i=r.end,a=n.text;if(r.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=r){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,r));break}var a=e.charCodeAt(this.pos);if(a==n){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=n){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},n.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var n=this.source.text,t=n.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!r&&47==i)break;if(l.isLineBreak(i)){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(n,this.pos)},n.prototype.readRegexpFlags=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=0;this.pos57)&&95!=r)break;t++}return!0},n.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)t=i64_add(i64_shl(t,r),i64_new(u-48));else if(u>=65&&u<=70)t=i64_add(i64_shl(t,r),i64_new(10+u-65));else if(u>=97&&u<=102)t=i64_add(i64_shl(t,r),i64_new(10+u-97));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readDecimalInteger=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=i64_new(0),i=i64_new(10),a=n;this.pos=48&&u<=57)r=i64_add(i64_mul(r,i),i64_new(u-48));else{if(95!=u)break;a==o&&this.error(a==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),a=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Digit_expected,this.range(n)):a==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),r},n.prototype.readOctalInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(3),i=n,a=this.end;this.pos=48&&u<=55)t=i64_add(i64_shl(t,r),i64_new(u-48));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}++this.pos}return this.pos==n?this.error(s.DiagnosticCode.Octal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readBinaryInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(1),i=n,a=this.end;this.pos=48&&i<=57)n=(n<<4)+i-48;else if(i>=65&&i<=70)n=(n<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";n=(n<<4)+i+-87}if(0==--e)break}return e?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(n)},n.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,n=this.readHexInteger(),t=i64_low(n),r=!1;assert(!i64_high(n)),t>1114111&&(this.error(s.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),r=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),r=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(s.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),r=!0),r?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},n.prototype.finish=function(){},n}(s.DiagnosticEmitter);n.Tokenizer=p;var h=function(){};n.State=h;var g=null},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(n.DiagnosticCode||(n.DiagnosticCode={})),n.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)});Object.defineProperty(n,"__esModule",{value:!0});var a=t(0),o=t(1),s=t(17),u=t(22),l=t(24);function c(e){return e.text.includes("@nearfile")||d(e)}function f(e){return s.ASTBuilder.build(e)}function d(e){return(e.kind==a.NodeKind.SOURCE?e:e.range.source).sourceKind==a.SourceKind.USER_ENTRY}function p(e){return e.kind==a.NodeKind.CLASSDECLARATION}function h(e){return e.kind==a.NodeKind.FIELDDECLARATION}var g=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},n.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],n.sb=[],n.exportedClasses=new Map,n.wrappedFuncs=new Set,n}return i(n,e),n.build=function(e,t){return(new n).build(t)},n.nearFiles=function(e){return e.program.sources.filter(c)},n.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(f(e.name))||this.exportedClasses.set(f(e.name),e)},n.prototype.visitFunctionDeclaration=function(n){!d(n)||this.wrappedFuncs.has(f(n.name))||!n.is(o.CommonFlags.EXPORT)||0==n.signature.parameters.length&&"void"===f(n.signature.returnType)?e.prototype.visitFunctionDeclaration.call(this,n):(this.generateWrapperFunction(n),n.flags=n.flags^o.CommonFlags.EXPORT,this.wrappedFuncs.add(f(n.name)))},n.prototype.generateWrapperFunction=function(e){var n=e.signature,t=n.parameters,r=n.returnType,i=f(r).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),a=f(r).includes("null"),o=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+o+"(): void {"),t.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==f(r)?this.sb.push(" let result: "+f(r)+" = "+o+"("):this.sb.push(" "+o+"("),t.length>0&&(this.sb[this.sb.length-1]+=t.map(function(e){return x(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==f(r)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+i+">() || isNullable<"+i+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+i+">(encoder, result"+(a?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+o+" as "+o+" }\n")},n.prototype.typeName=function(e){if(!p(e))return s.ASTBuilder.build(e);var n=f((e=e).name);return e.isGeneric&&(n+="<"+e.typeParameters.map(f).join(", ")+">"),n},n.prototype.getFields=function(e){var n=p(e)?e:this.exportedClasses.get(f(e));return null==n?[]:n.members.filter(function(e){return e.kind==a.NodeKind.FIELDDECLARATION}).map(function(e){return{name:f(e.name),type:e.type,isGeneric:v(n,e)}})},n.prototype.build=function(e){var n=this;this.sb=[l.preamble],this.visit(e);var t=e.statements.map(function(e){var t=s.ASTBuilder.build(e);if(p(e)){var r=e;if(t=t.slice(0,t.lastIndexOf("}")),r.members.filter(h).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var i=n.typeName(r);t+="\n static decode(json: Uint8Array): "+i+" {\n let value = instantiate<"+i+">(); // Allocate without constructor\n value.decode(JSON.parse(json));\n return value;\n }\n\n decode(obj: Obj): "+i+" {\n "+r.members.filter(h).map(function(e){var n=f(e.name);return x(e,"this."+n+' = obj.has("'+n+'") ? ')+": this."+n+";"}).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+r.members.filter(h).map(function(e){var n=f(e.type),t=f(e.name);return"encode<"+n+">(encoder, this."+t+', "'+t+'");'}).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return t});return this.sb.concat(t).join("\n")},n}(u.BaseVisitor);function x(e,n){return void 0===n&&(n=""),n+"decode<"+f(e.type)+'>(obj, "'+f(e.name)+'")'}function v(e,n){return null!=e.typeParameters&&e.typeParameters.some(function(e){return f(e.name)==f(n.type)})}n.afterParse=function(e,n,t){g.nearFiles(e).forEach(function(r){var i=r.text.substr(0,r.text.indexOf("\n")).includes("out");e.donelog.delete(r.internalPath),e.seenlog.delete(r.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==r});var a=g.build(e,r);i&&n("out/"+r.normalizedPath,a,t),e.parseFile(a,(d(r)?"":"./")+r.normalizedPath,d(r))})}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(n.Feature||(n.Feature={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(n.Target||(n.Target={}))},function(e,n,t){"use strict";var r=this&&this.__decorate||function(e,n,t,r){var i,a=arguments.length,o=a<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,n,t,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(n,t,o):i(n,t))||o);return a>3&&o&&Object.defineProperty(n,t,o),o};Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(){}return r([()=>{}],e)}();n.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(n.TypeinfoFlags||(n.TypeinfoFlags={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i=t(5),a=t(2),o=t(5);function s(e){switch(e){case r.INFO:return"INFO";case r.WARNING:return"WARNING";case r.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case r.INFO:return n.COLOR_BLUE;case r.WARNING:return n.COLOR_YELLOW;case r.ERROR:return n.COLOR_RED;default:return assert(!1),""}}n.DiagnosticCode=o.DiagnosticCode,n.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(r=n.DiagnosticCategory||(n.DiagnosticCategory={})),n.diagnosticCategoryToString=s,n.COLOR_BLUE="",n.COLOR_YELLOW="",n.COLOR_RED="",n.COLOR_RESET="",n.diagnosticCategoryToColor=u;var l=function(){function e(e,n,t){this.range=null,this.relatedRange=null,this.code=e,this.category=n,this.message=t}return e.create=function(n,t,r,a,o){void 0===r&&(r=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(n);return null!=r&&(s=s.replace("{0}",r)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(n,t,s)},e.createInfo=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.INFO,t,i)},e.createWarning=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.WARNING,t,i)},e.createError=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function c(e,t){void 0===t&&(t=!1);for(var r=e.source.text,i=r.length,o=e.start,s=e.end;o>0&&!a.isLineBreak(r.charCodeAt(o-1));)o--;for(;s=0&&n<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(n))),i64_zero)},n.bitsetSet=function(e,n,t){return assert(n>=0&&n<64),t?i64_or(e,i64_shl(i64_one,i64_new(n))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(n))))}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(n.CharCode||(n.CharCode={})),n.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},n.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},n.isDecimalDigit=function(e){return e>=48&&e<=57},n.isOctalDigit=function(e){return e>=48&&e<=55},n.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,r);var n},n.isKeywordCharacter=function(e){return e>=97&&e<=122},n.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,i);var n};var r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,n){if(e>1),(r=n[t-=1&t])<=e&&e<=n[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0}),n.makeArray=function(e){if(void 0===e&&(e=null),e){for(var n=new Array(e.length),t=0,r=e.length;t0||r=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=n?e.substring(0,a):e.substring(0,a)+e.substring(t+3),r-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){r=(e=e.substring(t+4)).length;continue}}}t++}return r>0?e:"."}function o(e){var n=e.length;if(n<=1){if(0==n)return".";if(e.charCodeAt(0)==i)return e}for(;--n>0;)if(e.charCodeAt(n)==i)return e.substring(0,n);return"."}n.normalizePath=a,n.resolvePath=function(e,n){return e.startsWith("std/")?e:a(o(n)+r.PATH_DELIMITER+e)},n.dirname=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.indent=function(e,n){for(;n>=4;)e.push(" "),n-=4;n>=2&&(e.push(" "),n-=2),n&&e.push(" ")}},function(e,n,t){"use strict";function r(e,n){return e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24}function i(e,n,t){n[t]=e,n[t+1]=e>>>8,n[t+2]=e>>>16,n[t+3]=e>>>24}function a(e,n){var t=r(e,n),i=r(e,n+4);return i64_new(t,i)}Object.defineProperty(n,"__esModule",{value:!0}),n.readI8=function(e,n){return e[n]},n.writeI8=function(e,n,t){n[t]=e},n.readI16=function(e,n){return e[n]|e[n+1]<<8},n.writeI16=function(e,n,t){n[t]=e,n[t+1]=e>>>8},n.readI32=r,n.writeI32=i,n.readI64=a,n.writeI64=function(e,n,t){i(i64_low(e),n,t),i(i64_high(e),n,t+4)},n.readF32=function(e,n){return i32_as_f32(r(e,n))},n.writeF32=function(e,n,t){i(f32_as_i32(e),n,t)},n.readF64=function(e,n){return i64_as_f64(a(e,n))},n.writeF64=function(e,n,t){var r=f64_as_i64(e);i(i64_low(r),n,t),i(i64_high(r),n,t+4)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(0);t(18),t(19),t(20);var i=t(1),a=t(2),o=t(4),s=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(n){var t=new e;return t.visitNode(n),t.finish()},e.prototype.visitNode=function(e){switch(e.kind){case r.NodeKind.SOURCE:this.visitSource(e);break;case r.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case r.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case r.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case r.NodeKind.FALSE:case r.NodeKind.NULL:case r.NodeKind.SUPER:case r.NodeKind.THIS:case r.NodeKind.TRUE:case r.NodeKind.CONSTRUCTOR:case r.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case r.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case r.NodeKind.BINARY:this.visitBinaryExpression(e);break;case r.NodeKind.CALL:this.visitCallExpression(e);break;case r.NodeKind.CLASS:this.visitClassExpression(e);break;case r.NodeKind.COMMA:this.visitCommaExpression(e);break;case r.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case r.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case r.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case r.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case r.NodeKind.NEW:this.visitNewExpression(e);break;case r.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case r.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case r.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case r.NodeKind.BLOCK:this.visitBlockStatement(e);break;case r.NodeKind.BREAK:this.visitBreakStatement(e);break;case r.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case r.NodeKind.DO:this.visitDoStatement(e);break;case r.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case r.NodeKind.EXPORT:this.visitExportStatement(e);break;case r.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case r.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case r.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case r.NodeKind.FOR:this.visitForStatement(e);break;case r.NodeKind.IF:this.visitIfStatement(e);break;case r.NodeKind.IMPORT:this.visitImportStatement(e);break;case r.NodeKind.RETURN:this.visitReturnStatement(e);break;case r.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case r.NodeKind.THROW:this.visitThrowStatement(e);break;case r.NodeKind.TRY:this.visitTryStatement(e);break;case r.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case r.NodeKind.WHILE:this.visitWhileStatement(e);break;case r.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case r.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case r.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case r.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case r.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case r.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case r.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case r.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case r.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case r.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case r.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case r.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case r.NodeKind.DECORATOR:this.serializeDecorator(e);break;case r.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case r.NodeKind.PARAMETER:this.serializeParameter(e);break;case r.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var n=e.statements,t=0,r=n.length;t")}e.isNullable&&r.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var n=e.isNullable,t=this.sb;t.push(n?"((":"(");var r=e.explicitThisType;r&&(t.push("this: "),this.visitTypeNode(r));var i=e.parameters,a=i.length;if(a){r&&t.push(", "),this.serializeParameter(i[0]);for(var o=1;o "),this.visitTypeNode(s)):t.push(") => void"),n&&t.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var n=e.extendsType;n&&(this.sb.push(" extends "),this.visitTypeNode(n));var t=e.defaultType;t&&(this.sb.push("="),this.visitTypeNode(t))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var n=this.sb;n.push("[");var t=e.elementExpressions,r=t.length;if(r){t[0]&&this.visitNode(t[0]);for(var i=1;i"),this.visitNode(e.expression);break;case r.AssertionKind.AS:this.visitNode(e.expression),n.push(" as "),this.visitTypeNode(assert(e.toType));break;case r.AssertionKind.NONNULL:this.visitNode(e.expression),n.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var n=this.sb;this.visitNode(e.left),n.push(" "),n.push(o.operatorTokenToString(e.operator)),n.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var n=this.sb;this.visitNode(e.expression);var t=e.typeArguments;if(t){var r=t.length;if(r){n.push("<"),this.visitTypeNode(t[0]);for(var i=1;i(")}}else n.push("(");var a=e.arguments,o=a.length;if(o)for(this.visitNode(a[0]),i=1;ir&&t.push(e.substring(r,r=a+1)),t.push("\\0"),r=++a;break;case 8:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\b");break;case 9:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\t");break;case 10:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\n");break;case 11:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\v");break;case 12:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\f");break;case 13:a>r&&t.push(e.substring(r,a)),t.push("\\r"),r=++a;break;case 34:n?++a:(a>r&&t.push(e.substring(r,a)),t.push('\\"'),r=++a);break;case 39:n?(a>r&&t.push(e.substring(r,a)),t.push("\\'"),r=++a):++a;break;case 92:a>r&&t.push(e.substring(r,a)),t.push("\\\\"),r=++a;break;default:++a}a>r&&t.push(e.substring(r,a)),t.push(i)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var n=this.sb;n.push("/"),n.push(e.pattern),n.push("/"),n.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var n=this.sb;n.push("("),this.visitNode(e.expression),n.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var n=this.sb;this.visitNode(e.condition),n.push(" ? "),this.visitNode(e.ifThen),n.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(o.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(o.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var n=this.sb;if(n.length&&e.kind!=r.NodeKind.VARIABLE&&e.kind!=r.NodeKind.EXPRESSION){var t=n[n.length-1],i=t.length-1;i>=0&&(125==t.charCodeAt(i)||59==t.charCodeAt(i))?n.push("\n"):n.push(";\n")}else n.push(";\n")},e.prototype.visitBlockStatement=function(e){var n=this.sb,t=e.statements,r=t.length;if(r){n.push("{\n");for(var i=++this.indentLevel,o=0;o")}var c=e.extendsType;c&&(u.push(" extends "),this.visitTypeNode(c));var f=e.implementsTypes;if(f){var d=f.length;if(d)for(u.push(" implements "),this.visitTypeNode(f[0]),o=1;o")}}if(2==e.arrowKind){var u=t.parameters;assert(1==u.length),assert(!t.explicitThisType),this.serializeParameter(u[0])}else{n.push("(");var l=(u=t.parameters).length,c=t.explicitThisType;if(c&&(n.push("this: "),this.visitTypeNode(c)),l)for(c&&n.push(", "),this.serializeParameter(u[0]),s=1;s "),this.visitNode(f)):(assert(!r.isTypeOmitted(d)),n.push(" => "),this.visitTypeNode(d)):(r.isTypeOmitted(d)||e.isAny(i.CommonFlags.CONSTRUCTOR|i.CommonFlags.SET)?n.push(")"):(n.push("): "),this.visitTypeNode(d)),f&&(n.push(" "),this.visitNode(f)))},e.prototype.visitIfStatement=function(e){var n=this.sb;n.push("if ("),this.visitNode(e.condition),n.push(") ");var t=e.ifTrue;this.visitNode(t),t.kind!=r.NodeKind.BLOCK&&n.push(";\n");var i=e.ifFalse;i&&(t.kind==r.NodeKind.BLOCK?n.push(" else "):n.push("else "),this.visitNode(i))},e.prototype.visitImportDeclaration=function(e){var n=e.foreignName,t=e.name;this.visitIdentifierExpression(n),n.text!=t.text&&(this.sb.push(" as "),this.visitIdentifierExpression(t))},e.prototype.visitImportStatement=function(e){var n=this.sb;n.push("import ");var t=e.declarations,r=e.namespaceName;if(t){var i=t.length;if(i){n.push("{\n");var o=++this.indentLevel;a.indent(n,o),this.visitImportDeclaration(t[0]);for(var s=1;s")}var u=e.extendsType;u&&(o.push(" extends "),this.visitTypeNode(u)),o.push(" {\n");var l=++this.indentLevel,c=e.members;for(r=0,i=c.length;r")}}i.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var n=e.type,t=this.sb;e.flags&i.CommonFlags.DEFINITE_ASSIGNMENT&&t.push("!"),n&&(t.push(": "),this.visitTypeNode(n));var r=e.initializer;r&&(t.push(" = "),this.visitNode(r))},e.prototype.visitVariableStatement=function(e){var n=e.decorators;if(n)for(var t=0,r=n.length;t>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(n.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(n.i32=n.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(n.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(n.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(n.u32=n.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(n.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(n.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(n.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),n.clz=Math.clz32,n.ctz=function(e){var n=Math.clz32(e&-e);return e?31-n:n},n.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},n.rotl=function(e,n){return e<<(n&=31)|e>>>32-n},n.rotr=function(e,n){return e>>>(n&=31)|e<<32-n},n.abs=Math.abs,n.max=Math.max,n.min=Math.min,n.ceil=Math.ceil,n.floor=Math.floor,n.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},n.select=function(e,n,t){return t?e:n},n.sqrt=Math.sqrt,n.trunc=Math.trunc,n.copysign=function(e,n){return Math.abs(e)*Math.sign(n)},n.bswap=function(e){var n=e>>8&16711935,t=(16711935&e)<<8;return(n=(e=n|t)>>16&65535)|(65535&e)<<16},n.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",n.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",n.assert=function(e,n){if(e)return e;throw new a(n)},n.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,n){var t=this.split(e).join(n);return e.length||(t=n+t+n),t}}),n.isInteger=Number.isInteger,n.isFloat=function(e){return"number"==typeof e},n.isNullable=function(e){return!0},n.isReference=function(e){return"object"==typeof e||"string"==typeof e},n.isFunction=function(e){return"function"==typeof e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isArray=Array.isArray,n.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var n=new Array(e);return n.length=0,n},n.isDefined=function(e){return void 0!==e},n.isConstant=function(e){return!1},n.unchecked=function(e){return e},n.fmod=function(e,n){return e%n},n.fmodf=function(e,n){return Math.fround(e%n)},n.JSMath=Math;try{Object.defineProperties(n.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(r[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}n.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:n.__memory_allocate||function(n){if(!(n>>>=0))return 0;if(t+n>e.length){var r=e;(e=new Uint8Array(Math.max(65536,e.length+n,2*e.length))).set(r)}var i=t;return 7&(t+=n)&&(t=1+(7|t)),i},fill:n.__memory_fill||function(n,t,r){e.fill(t,n,n+r)},free:n.__memory_free||function(e){},copy:n.__memory_copy||function(n,t,r){e.copyWithin(n,t,t+r)},reset:n.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),n.store=n.__store||function(e,n,t){HEAP[(0|e)+(0|t)]=n},n.load=n.__load||function(e,n){return HEAP[(0|e)+(0|n)]},n.unmanaged=function(){}}).call(this,t(3))},function(e,n,t){(function(e){const n=new Float64Array(1),t=new Float32Array(n.buffer),r=new Int32Array(n.buffer);e.f32_as_i32=function(e){return t[0]=e,r[0]},e.i32_as_f32=function(e){return r[0]=e,t[0]},e.f64_as_i64=function(e){return n[0]=e,i64_new(r[0],r[1])},e.i64_as_f64=function(e){return r[0]=i64_low(e),r[1]=i64_high(e),n[0]}}).call(this,t(3))},function(e,n,t){(function(e){const n=e.Long||t(21);e.i64_zero=n.ZERO,e.i64_one=n.ONE,e.i64_new=function(e,t){return n.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,n){return e.add(n)},e.i64_sub=function(e,n){return e.sub(n)},e.i64_mul=function(e,n){return e.mul(n)},e.i64_div=function(e,n){return e.div(n)},e.i64_div_u=function(e,n){return e.toUnsigned().div(n.toUnsigned()).toSigned()},e.i64_rem=function(e,n){return e.mod(n)},e.i64_rem_u=function(e,n){return e.toUnsigned().mod(n.toUnsigned()).toSigned()},e.i64_and=function(e,n){return e.and(n)},e.i64_or=function(e,n){return e.or(n)},e.i64_xor=function(e,n){return e.xor(n)},e.i64_shl=function(e,n){return e.shl(n)},e.i64_shr=function(e,n){return e.shr(n)},e.i64_shr_u=function(e,n){return e.shru(n)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,n){return e.eq(n)},e.i64_ne=function(e,n){return e.ne(n)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var r=n.fromInt(t-1);return e.add(r).and(r.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const r=n.fromNumber(f32.MIN_SAFE_INTEGER),i=n.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(r)&&e.lte(i)};const a=n.fromNumber(f64.MIN_SAFE_INTEGER),o=n.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(n){return e.Math.fround(n.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,n){return(n?e.toUnsigned():e).toString(10)}}).call(this,t(3))},function(e,n){e.exports=r;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function r(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0}),r.isLong=i;var a={},o={};function s(e,n){var t,r,i;return n?(i=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(t=l(e,(0|e)<0?-1:0,!0),i&&(o[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function u(e,n){if(isNaN(e))return n?m:v;if(n){if(e<0)return m;if(e>=h)return T}else{if(e<=-g)return A;if(e+1>=g)return E}return e<0?u(-e,n).neg():l(e%p|0,e/p|0,n)}function l(e,n,t){return new r(e,n,t)}r.fromInt=s,r.fromNumber=u,r.fromBits=l;var c=Math.pow;function f(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return v;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return f(e.substring(1),n,t).neg();for(var i=u(c(t,8)),a=v,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return l+o;for(;l.length<6;)l="0"+l;o=""+l+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(A)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,n=31;n>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=d(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=d(e)),this.eq(e))return 0;var n=this.isNegative(),t=e.isNegative();return n&&!t?-1:!n&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(A)?A:this.not().add(_)},S.neg=S.negate,S.add=function(e){i(e)||(e=d(e));var n=this.high>>>16,t=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,u=e.low>>>16,c=0,f=0,p=0,h=0;return p+=(h+=a+(65535&e.low))>>>16,f+=(p+=r+u)>>>16,c+=(f+=t+s)>>>16,c+=n+o,l((p&=65535)<<16|(h&=65535),(c&=65535)<<16|(f&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=d(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return v;if(i(e)||(e=d(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return v;if(this.eq(A))return e.isOdd()?A:v;if(e.eq(A))return this.isOdd()?A:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(x)&&e.lt(x))return u(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,r=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,h=0,g=0,m=0,_=0;return m+=(_+=o*p)>>>16,g+=(m+=a*p)>>>16,m&=65535,g+=(m+=o*f)>>>16,h+=(g+=r*p)>>>16,g&=65535,h+=(g+=a*f)>>>16,g&=65535,h+=(g+=o*c)>>>16,h+=n*p+r*f+a*c+o*s,l((m&=65535)<<16|(_&=65535),(h&=65535)<<16|(g&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=d(e)),e.isZero())throw Error("division by zero");var n,r,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return m;if(e.gt(this.shru(1)))return y;a=m}else{if(this.eq(A))return e.eq(_)||e.eq(b)?A:e.eq(A)?_:(n=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?_:b:(r=this.sub(e.mul(n)),a=n.add(r.div(e)));if(e.eq(A))return this.unsigned?m:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=v}for(r=this;r.gte(e);){n=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),s=o<=48?1:c(2,o-48),f=u(n),p=f.mul(e);p.isNegative()||p.gt(r);)p=(f=u(n-=s,this.unsigned)).mul(e);f.isZero()&&(f=_),a=a.add(f),r=r.sub(p)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=d(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return l(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=d(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=d(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=d(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0==(e&=63))return this;var n=this.high;return e<32?l(this.low>>>e|n<<32-e,n>>>e,this.unsigned):l(32===e?n:n>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,n=this.low;return[255&n,n>>>8&255,n>>>16&255,n>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,n>>>24,n>>>16&255,n>>>8&255,255&n]},r.fromBytes=function(e,n,t){return t?r.fromBytesLE(e,n):r.fromBytesBE(e,n)},r.fromBytesLE=function(e,n){return new r(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},r.fromBytesBE=function(e,n){return new r(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}),a=this&&this.__values||function(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(n,"__esModule",{value:!0});var o=t(0),s=function(e){function n(n){var t=e.call(this,n)||this;return t.depth=0,t}return i(n,e),n.prototype._visit=function(e){switch(e.kind){case o.NodeKind.SOURCE:this.visitSource(e);break;case o.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case o.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case o.NodeKind.TYPENAME:this.visitTypeName(e);case o.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case o.NodeKind.FALSE:case o.NodeKind.NULL:case o.NodeKind.SUPER:case o.NodeKind.THIS:case o.NodeKind.TRUE:case o.NodeKind.CONSTRUCTOR:case o.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case o.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case o.NodeKind.BINARY:this.visitBinaryExpression(e);break;case o.NodeKind.CALL:this.visitCallExpression(e);break;case o.NodeKind.CLASS:this.visitClassExpression(e);break;case o.NodeKind.COMMA:this.visitCommaExpression(e);break;case o.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case o.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case o.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case o.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case o.NodeKind.NEW:this.visitNewExpression(e);break;case o.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case o.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case o.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case o.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case o.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case o.NodeKind.BLOCK:this.visitBlockStatement(e);break;case o.NodeKind.BREAK:this.visitBreakStatement(e);break;case o.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case o.NodeKind.DO:this.visitDoStatement(e);break;case o.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case o.NodeKind.EXPORT:this.visitExportStatement(e);break;case o.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case o.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case o.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case o.NodeKind.FOR:this.visitForStatement(e);break;case o.NodeKind.IF:this.visitIfStatement(e);break;case o.NodeKind.IMPORT:this.visitImportStatement(e);break;case o.NodeKind.RETURN:this.visitReturnStatement(e);break;case o.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case o.NodeKind.THROW:this.visitThrowStatement(e);break;case o.NodeKind.TRY:this.visitTryStatement(e);break;case o.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case o.NodeKind.WHILE:this.visitWhileStatement(e);break;case o.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case o.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case o.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case o.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case o.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case o.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case o.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case o.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case o.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case o.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case o.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case o.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case o.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case o.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case o.NodeKind.PARAMETER:this.visitParameter(e);break;case o.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},n.prototype.visitSource=function(e){var n,t;try{for(var r=a(e.statements),i=r.next();!i.done;i=r.next()){var o=i.value;this.depth++,this.visit(o),this.depth--}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}},n.prototype.visitTypeNode=function(e){},n.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},n.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},n.prototype.visitFunctionTypeNode=function(e){var n,t;try{for(var r=a(e.parameters),i=r.next();!i.done;i=r.next()){var o=i.value;this.visit(o)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}this.visit(e.returnType)},n.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},n.prototype.visitIdentifierExpression=function(e){},n.prototype.visitArrayLiteralExpression=function(e){var n=this;e.elementExpressions.map(function(e){e&&n.visit(e)})},n.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var n=0;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();n.DefaultWriter=a;var o=function(){function e(e){void 0===e&&(e=new a),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var n,t,a,o,s,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var l=r(e.entries()),c=l.next();!c.done;c=l.next()){var f=i(c.value,2),d=(f[0],f[1]);this.visit(d)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}else if(null!=(s=e)&&"function"==typeof s[Symbol.iterator])try{for(var p=r(e),h=p.next();!h.done;h=p.next())d=h.value,this.visit(d)}catch(e){a={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(a)throw a.error}}else this._visit(e)},e}();n.AbstractVisitor=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])},function(e,n){if(void 0===__WEBPACK_EXTERNAL_MODULE__11__){var t=new Error("Cannot find module 'assemblyscript'");throw t.code="MODULE_NOT_FOUND",t}e.exports=__WEBPACK_EXTERNAL_MODULE__11__},function(e){e.exports=JSON.parse('{"version":{"description":"Prints just the compiler\'s version and exits.","type":"b","alias":"v"},"help":{"description":"Prints this message and exits.","type":"b","alias":"h"},"optimize":{"description":["Optimizes the module. Also has the usual shorthands:",""," -O Uses defaults. Equivalent to -O3s"," -O0 Equivalent to --optimizeLevel 0"," -O1 Equivalent to --optimizeLevel 1"," -O2 Equivalent to --optimizeLevel 2"," -O3 Equivalent to --optimizeLevel 3"," -Oz Equivalent to -O but with --shrinkLevel 2"," -O3s Equivalent to -O3 with --shrinkLevel 1 etc.",""],"type":"b","alias":"O"},"optimizeLevel":{"description":"How much to focus on optimizing code. [0-3]","type":"i"},"shrinkLevel":{"description":"How much to focus on shrinking code size. [0-2, s=1, z=2]","type":"i"},"validate":{"description":"Validates the module using Binaryen. Exits if invalid.","type":"b","alias":"c","default":false},"baseDir":{"description":"Specifies the base directory of input and output files.","type":"s","default":"."},"outFile":{"description":"Specifies the output file. File extension indicates format.","type":"s","alias":"o"},"binaryFile":{"description":"Specifies the binary output file (.wasm).","type":"s","alias":"b"},"textFile":{"description":"Specifies the text output file (.wat).","type":"s","alias":"t"},"asmjsFile":{"description":"Specifies the asm.js output file (.js).","type":"s","alias":"a"},"idlFile":{"description":"Specifies the WebIDL output file (.webidl).","type":"s","alias":"i"},"tsdFile":{"description":"Specifies the TypeScript definition output file (.d.ts).","type":"s","alias":"d"},"sourceMap":{"description":["Enables source map generation. Optionally takes the URL","used to reference the source map from the binary file."],"type":"s"},"runtime":{"description":["Specifies the runtime variant to include in the program.",""," full Default runtime based on TLSF and reference counting."," half Same as \'full\', but not exported to the host."," stub Minimal stub implementation without free/GC support."," none Same as \'stub\', but not exported to the host.",""],"type":"s","default":"full"},"noUnsafe":{"description":["Disallows the use of unsafe features in user code.","Does not affect library files and external modules."],"type":"b","default":false},"debug":{"description":"Enables debug information in emitted binaries.","type":"b","default":false},"noAssert":{"description":"Replaces assertions with just their value without trapping.","type":"b","default":false},"noEmit":{"description":"Performs compilation as usual but does not emit code.","type":"b","default":false},"importMemory":{"description":"Imports the memory instance provided by the embedder.","type":"b","default":false},"sharedMemory":{"description":"Declare memory as shared by settings the max shared memory.","type":"i","default":0},"memoryBase":{"description":"Sets the start offset of compiler-generated static memory.","type":"i","default":0},"importTable":{"description":"Imports the function table instance provided by the embedder.","type":"b","default":false},"explicitStart":{"description":"Exports an explicit start function to be called manually.","type":"b","default":false},"lib":{"description":["Adds one or multiple paths to custom library components and","uses exports of all top-level files at this path as globals."],"type":"s"},"path":{"description":["Comma separated paths to look for dependencies.","Looks for folders with package.json that includes a \'ascMain\' field","or defaults to having an \'/assembly\' folder."],"type":"S"},"use":{"description":["Aliases a global object under another name, e.g., to switch","the default \'Math\' implementation used: --use Math=JSMath"],"type":"S","alias":"u"},"trapMode":{"description":["Sets the trap mode to use.",""," allow Allow trapping operations. This is the default."," clamp Replace trapping operations with clamping semantics."," js Replace trapping operations with JS semantics.",""],"type":"s","default":"allow"},"runPasses":{"description":["Specifies additional Binaryen passes to run after other","optimizations, if any. See: Binaryen/src/passes/pass.cpp"],"type":"s"},"enable":{"description":["Enables additional (experimental) WebAssembly features.",""," sign-extension Enables sign-extension operations"," mutable-global Enables mutable global imports and exports"," bulk-memory Enables bulk memory operations"," simd Enables SIMD types and operations."," threads Enables threading and atomic operations.",""],"type":"s"},"transform":{"description":"Specifies the path to a custom transform to \'require\'.","type":"S"},"traceResolution":{"description":"Enable tracing of package resolution.","type":"b","default":false},"listFiles":{"description":"List files to be compiled and exit.","type":"b","default":false},"measure":{"description":"Prints measuring information on I/O and compile times.","type":"b","default":false},"printrtti":{"description":"Prints the module\'s runtime type information to stderr.","type":"b","default":false},"noColors":{"description":"Disables terminal colors.","type":"b","default":false}," ...":{"description":"Specifies node.js options (CLI only). See: node --help"},"-Os":{"value":{"optimize":true,"shrinkLevel":1}},"-Oz":{"value":{"optimize":true,"shrinkLevel":2}},"-O0":{"value":{"optimizeLevel":0,"shrinkLevel":0}},"-O1":{"value":{"optimizeLevel":1,"shrinkLevel":0}},"-O2":{"value":{"optimizeLevel":2,"shrinkLevel":0}},"-O3":{"value":{"optimizeLevel":3,"shrinkLevel":0}},"-O0s":{"value":{"optimizeLevel":0,"shrinkLevel":1}},"-O1s":{"value":{"optimizeLevel":1,"shrinkLevel":1}},"-O2s":{"value":{"optimizeLevel":2,"shrinkLevel":1}},"-O3s":{"value":{"optimizeLevel":3,"shrinkLevel":1}},"-O0z":{"value":{"optimizeLevel":0,"shrinkLevel":2}},"-O1z":{"value":{"optimizeLevel":1,"shrinkLevel":2}},"-O2z":{"value":{"optimizeLevel":2,"shrinkLevel":2}},"-O3z":{"value":{"optimizeLevel":3,"shrinkLevel":2}},"notNear":{"description":"Prevent the instrumentation of the binding code for near","type":"b","default":false}}')},function(e,n){function t(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=13},function(e,n,t){(function(n,t){e.exports=n.hrtime||function(e){var n=.001*i.call(r),t=Math.floor(n),a=Math.floor(n%1*1e9);e&&(t-=e[0],(a-=e[1])<0&&(t--,a+=1e9));return[t,a]};var r=t.performance||{},i=r.now||r.mozNow||r.msNow||r.oNow||r.webkitNow||function(){return(new Date).getTime()}}).call(this,t(0),t(2))}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e.assemblyscript)}("undefined"!=typeof self?self:this,function(__WEBPACK_EXTERNAL_MODULE__11__){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=4)}([function(e,n,t){var r,i;n.nextTick=function(e){var n=Array.prototype.slice.call(arguments);n.shift(),setTimeout(function(){e.apply(null,n)},0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(1)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!=typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!=typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(0))},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n){},function(e,n,t){e.exports=t(5)},function(module,exports,__webpack_require__){(function(process,global){process.browser&&(process.cwd=function(){return"."});const fs=__webpack_require__(3),path=__webpack_require__(1),utf8=__webpack_require__(6),colorsUtil=__webpack_require__(7),optionsUtil=__webpack_require__(8),mkdirp=__webpack_require__(9),EOL="win32"===process.platform?"\r\n":"\n",SEP="win32"===process.platform?"\\":"/",nearBindings=__webpack_require__(10),nearLibEntry=path.join(".","..","bindings","assembly","nearEntry.ts");process.removeAllListeners&&process.removeAllListeners("uncaughtException");var assemblyscript,isDev=!1;function checkDiagnostics(e,n){for(var t,r=!1;null!=(t=assemblyscript.nextDiagnostic(e));)n&&n.write(assemblyscript.formatDiagnostic(t,n.isTTY,!0)+EOL+EOL),assemblyscript.isError(t)&&(r=!0);return r}function createStats(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function measure(e){const n=process.hrtime();e();const t=process.hrtime(n);return 1e9*t[0]+t[1]}function formatTime(e){return e?(e/1e6).toFixed(3)+" ms":"N/A"}function printStats(e,n){function t(e,n){return formatTime(e)}(n||process.stdout).write(["I/O Read : "+t(e.readTime,e.readCount),"I/O Write : "+t(e.writeTime,e.writeCount),"Parse : "+t(e.parseTime,e.parseCount),"Compile : "+t(e.compileTime,e.compileCount),"Emit : "+t(e.emitTime,e.emitCount),"Validate : "+t(e.validateTime,e.validateCount),"Optimize : "+t(e.optimizeTime,e.optimizeCount)].join(EOL)+EOL)}function printRTTI(e,n){n||(n=process.stderr),n.write("# Runtime type information (RTTI)\n"),n.write(assemblyscript.buildRTTI(e))}(()=>{try{assemblyscript=__webpack_require__(11)}catch(e){try{__webpack_require__(!function(){var e=new Error("Cannot find module 'ts-node'");throw e.code="MODULE_NOT_FOUND",e}()).register({project:path.join(".","..","src","tsconfig.json")}),__webpack_require__(!function(){var e=new Error("Cannot find module '../src/glue/js'");throw e.code="MODULE_NOT_FOUND",e}()),assemblyscript=__webpack_require__(!function(){var e=new Error("Cannot find module '../src'");throw e.code="MODULE_NOT_FOUND",e}()),isDev=!0}catch(e_ts){try{assemblyscript=eval("require('./assemblyscript')")}catch(e){throw e.stack=e_ts.stack+"\n---\n"+e.stack,e}}}})(),exports.isBundle=!0,exports.isDev=isDev,exports.version=exports.isBundle?"0.7.0":__webpack_require__(!function(){var e=new Error("Cannot find module '../package.json'");throw e.code="MODULE_NOT_FOUND",e}()).version,exports.options=__webpack_require__(12),exports.sourceMapRoot="assemblyscript:///",exports.libraryPrefix=assemblyscript.LIBRARY_PREFIX,exports.defaultOptimizeLevel=3,exports.defaultShrinkLevel=1,exports.libraryFiles=exports.isBundle?Object({nearEntry:'\nimport { storage, near, base64, base58 } from \'near-runtime-ts\';\n//@ts-ignore\nimport { Buffer } from "assemblyscript-json/util";\nimport { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\nimport { u128 } from "bignum";\n// Runtime functions\n// tslint:disable: no-unsafe-any\n\n\n\ntype Usize = u64;\n//@ts-ignore\n@global\n@external("env", "read_register")\ndeclare function read_register(register_id: Usize, ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "register_len")\ndeclare function register_len(register_id: Usize): Usize;\n\n//@ts-ignore\n@global\n@external("env", "input")\ndeclare function input(register_id: Usize): void;\n//@ts-ignore\n@global\n@external("env", "value_return")\ndeclare function value_return(value_len: Usize, value_ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "panic")\ndeclare function panic(): void;\n\n\n\n/// \n\nabstract class Value {\n static String(str: string): Value {\n return new Str(str)\n }\n static Number(num: i64): Value {\n return new Num(num)\n }\n static Bool(b: bool): Value {\n return new Bools(b)\n }\n static Null(): Value {\n return new Null();\n }\n static Array(): Value {\n return new Arr();\n }\n static Object(): Value {\n return new Obj();\n }\n\n toString(): string {\n if (this instanceof Str){\n return (this).toString();\n }\n if (this instanceof Num){\n return (this).toString();\n }\n if (this instanceof Bools){\n return (this).toString();\n }\n if (this instanceof Null){\n return (this).toString();\n }\n if (this instanceof Arr){\n return (this).toString();\n }\n if (this instanceof Obj){\n return (this).toString();\n }\n return "Value";\n }\n}\n@global\nclass Str extends Value {\n constructor(public _str: string) {\n super();\n }\n\n toString(): string {\n return "\\"" + this._str + "\\"";\n }\n}\n@global\nclass Num extends Value {\n constructor(public _num: i64) {\n super();\n }\n\n toString(): string {\n return this._num.toString();\n }\n}\n@global\nclass Null extends Value {\n constructor() {\n super();\n }\n\n toString(): string {\n return "null";\n }\n}\n\n@global class Bools extends Value {\n constructor(public _bool: bool) {\n super();\n }\n\n toString(): string {\n return this._bool.toString();\n }\n}\n\n@global\nclass Arr extends Value {\n _arr: Array;\n constructor() {\n super();\n this._arr = new Array();\n }\n\n push(obj: Value): void {\n this._arr.push(obj)\n }\n\n toString(): string {\n return "[" + this._arr.map((val: Value,i: i32,_arr: Value[]): string => val.toString()).join(",") + "]";\n }\n}\n\n@global\nclass Obj extends Value {\n _obj: Map;\n keys: Array;\n\n constructor() {\n super();\n this._obj = new Map();\n this.keys = new Array();\n }\n\n set(key: string, value: Value): void {\n if (!this._obj.has(key)) {\n this.keys.push(key);\n }\n this._obj.set(key, value);\n }\n\n get(key: string): Value | null {\n if (!this._obj.has(key)) {\n return null;\n }\n return this._obj.get(key)\n }\n\n toString(): string {\n let objs: string[] = [];\n for (let i: i32 = 0; i < this.keys.length; i++){\n objs.push("\\"" +this.keys[i]+"\\":"+ this._obj.get(this.keys[i]).toString());\n }\n return "{"+ objs.join(",") + "}";\n }\n\n has(key: string): bool {\n return this._obj.has(key);\n }\n}\n\nclass Handler extends ThrowingJSONHandler {\n stack: Value[];\n constructor() {\n super();\n this.stack = new Array();\n }\n\n reset(): void {\n while (this.stack.length > 0){\n this.stack.pop();\n }\n }\n\n get peek(): Value {\n return this.stack[this.stack.length - 1];\n }\n\n setString(name: string, value: string): void {\n let obj: Value = Value.String(value);\n this.addValue(name, obj);\n }\n\n setBoolean(name: string, value: bool): void {\n let obj = Value.Bool(value);\n this.addValue(name, obj);\n }\n\n setNull(name: string): void {\n let obj = Value.Null();\n this.addValue(name, obj);\n }\n\n setInteger(name: string, value: i64): void {\n let obj = Value.Number(value);\n this.addValue(name, obj);\n }\n\n pushArray(name: string): bool {\n let obj: Value = Value.Array();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popArray(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n pushObject(name: string): bool {\n let obj: Value = Value.Object();\n this.addValue(name, obj);\n this.stack.push(obj)\n return true;\n }\n\n popObject(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n addValue(name: string, obj: Value): void {\n if (name.length == 0 && obj instanceof Obj && this.stack.length == 0) {\n this.stack.push(obj);\n return;\n }\n if (this.peek instanceof Obj) {\n (this.peek as Obj).set(name, obj)\n }\n else if (this.peek instanceof Arr) {\n (this.peek).push(obj);\n }\n }\n}\n\n\n@global()\nclass JSON {\n private static handler: Handler = new Handler();\n private static decoder: JSONDecoder = new JSONDecoder(JSON.handler);\n static parse(str: Uint8Array ): Obj {\n JSON.decoder.deserialize(str);\n let res = JSON.decoder.handler.peek as Obj;\n JSON.decoder.handler.reset();\n return res;\n }\n}\n\n\n\n\n\n\n//@ts-ignore\n@global\nfunction encode(encoder: JSONEncoder, value: T, name: string | null = ""): JSONEncoder {\n if (isBoolean()) {\n //@ts-ignore\n encoder.setBoolean(name, value);\n } else if (isInteger()) {\n if (value instanceof i64 || value instanceof u64) {\n //@ts-ignore\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n encoder.setInteger(name, value);\n }\n //@ts-ignore\n } else if (value == null) {\n encoder.setNull(name);\n } else if (isString()) {\n //@ts-ignore\n encoder.setString(name, value);\n } else if (isReference()) {\n if (isArrayLike(value)) {\n if (value instanceof Uint8Array) {\n //@ts-ignore\n encoder.setString(name, base64.encode( value));\n } else {\n encoder.pushArray(name);\n for (let i: i32 = 0; i < value.length; i++) {\n //@ts-ignore\n encode(encoder, value[i], null);\n }\n encoder.popArray();\n }\n } else { // Is an object\n if (value instanceof u128){\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n value.encode(encoder, name);\n }\n }\n } else {\n throw new Error("Encoding failed");\n }\n return encoder;\n}\n\n//@ts-ignore\n@inline\nfunction getStr(val: Value, name: String): string {\n assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null");\n return (val)._str;\n}\n\nfunction decodeArray(val: Value, name: string): Array {\n assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null.");\n let res = new Array();\n let arr = (val)._arr;\n for (let i: i32 = 0; i < arr.length; i++){\n let item: T = decode(arr[i]);\n res.push(item);\n }\n return res;\n}\n\n\n//@ts-ignore\n@global\nfunction decode(buf: V, name: string = ""): T {\n let buffer = (buf instanceof Uint8Array ? JSON.parse(buf) : buf);\n let val: Value;\n if (buffer instanceof Obj && name != ""){\n const obj: Obj = buffer;\n let res = obj.get(name);\n if (res == null){\n //@ts-ignore\n return null\n }\n val = res;\n }else {\n val = buffer;\n }\n if (val instanceof Null) {\n assert(isReference() || isArrayLike() || isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable.");\n //@ts-ignore\n return null;\n }\n if (isString()) {\n //@ts-ignore\n return getStr(val, name);\n }\n if (isBoolean()) {\n assert(val instanceof Bools, "Value with Key: "+ name + " with type " + nameof() +" is not a string");\n //@ts-ignore\n return (val)._bool\n }\n var value: T;\n if (isInteger()) {\n //@ts-ignore\n if (value instanceof u64 || value instanceof i64) {\n assert(val instanceof Str, "Value with Key: "+ name + " with type " + nameof() +" is an 64-bit integer and is expected to be encoded as a string");\n let str = (val)._str;\n //@ts-ignore\n return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str);\n }\n assert(val instanceof Num, "Value with Key: "+ name + " with type " + nameof() +" is not an Integer");\n //@ts-ignore\n return (val)._num;\n }\n assert(isReference(), name + " with type " + nameof() + " must be an integer, boolean, string, object, or array");\n if (isArrayLike()) {\n //@ts-ignore\n if (value instanceof Uint8Array ) {\n //@ts-ignore\n return base64.decode(getStr(val, name)) \n }\n //@ts-ignore\n // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array")\n //@ts-ignore only checking the instance\n return decodeArray>(val, name);\n }\n if (val instanceof Str){\n //@ts-ignore\n if (value instanceof u128) {\n //@ts-ignore\n return u128.fromString(getStr(val, name));\n }\n }\n assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null")\n value = instantiate();\n //@ts-ignore\n return value.decode(val);\n}\n',array:'/// \n\nimport { BLOCK_MAXSIZE } from "./rt/common";\nimport { COMPARATOR, SORT } from "./util/sort";\nimport { ArrayBuffer, ArrayBufferView } from "./arraybuffer";\nimport { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";\nimport { idof, isArray as builtin_isArray } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error";\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureSize(array: usize, minSize: usize, alignLog2: u32): void {\n var oldCapacity = changetype(array).dataLength;\n if (minSize > oldCapacity >>> alignLog2) {\n if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).data);\n let newCapacity = minSize << alignLog2;\n let newData = __realloc(oldData, newCapacity);\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n if (newData !== oldData) { // oldData has been free\'d\n store(changetype(array), __retain(newData), offsetof("data"));\n changetype(array).dataStart = newData;\n }\n changetype(array).dataLength = newCapacity;\n }\n}\n\nexport class Array extends ArrayBufferView {\n [key: number]: T;\n\n // Implementing ArrayBufferView isn\'t strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).\n\n // Also note that Array with non-nullable T must guard against implicit null values whenever\n // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn\'t be\n // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return builtin_isArray(value) && value !== null;\n }\n\n static create(capacity: i32 = 0): Array {\n if (capacity > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n var array = changetype>(__allocArray(capacity, alignof(), idof())); // retains\n changetype>(array).length_ = 0; // safe even if T is a non-nullable reference\n memory.fill(array.dataStart, 0, array.dataLength);\n return array;\n }\n\n constructor(length: i32 = 0) {\n super(length, alignof());\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n this.length_ = length;\n }\n\n @unsafe get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n var oldLength = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (newLength > oldLength) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) { // release no longer used refs\n if (oldLength > newLength) {\n let dataStart = this.dataStart;\n do __release(load(dataStart + (--oldLength << alignof())));\n while (oldLength > newLength);\n // no need to zero memory on shrink -> is zeroed on grow\n }\n }\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (!fn(load(this.dataStart + (index << alignof())), index, this)) return false;\n }\n return true;\n }\n\n findIndex(predicate: (value: T, index: i32, array: Array) => bool): i32 {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (predicate(load(this.dataStart + (index << alignof())), index, this)) return index;\n }\n return -1;\n }\n\n @operator("[]") private __get(index: i32): T {\n if (isReference()) {\n if (!isNullable()) {\n if (index >= this.length_) throw new Error(E_HOLEYARRAY);\n }\n }\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n var length = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (index > length) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), index + 1, alignof());\n this.__unchecked_set(index, value);\n if (index >= length) this.length_ = index + 1;\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = this.dataStart + (index << alignof());\n let oldRef: usize = load(offset);\n if (changetype(value) != oldRef) {\n store(offset, __retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n store(this.dataStart + (index << alignof()), value);\n }\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (isManaged()) {\n for (; start < end; ++start) {\n let oldRef: usize = load(dataStart + (start << alignof()));\n if (changetype(value) != oldRef) {\n store(dataStart + (start << alignof()), __retain(changetype(value)));\n __release(oldRef);\n }\n }\n } else if (sizeof() == 1) {\n if (start < end) {\n memory.fill(\n dataStart + start,\n u8(value),\n (end - start)\n );\n }\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n return this.indexOf(value, fromIndex) >= 0;\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var length = this.length_;\n if (length == 0 || fromIndex >= length) return -1;\n if (fromIndex < 0) fromIndex = max(length + fromIndex, 0);\n var dataStart = this.dataStart;\n while (fromIndex < length) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var length = this.length_;\n if (length == 0) return -1;\n if (fromIndex < 0) fromIndex = length + fromIndex;\n else if (fromIndex >= length) fromIndex = length - 1;\n var dataStart = this.dataStart;\n while (fromIndex >= 0) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var length = this.length_;\n var newLength = length + 1;\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) {\n store(this.dataStart + (length << alignof()), __retain(changetype(value)));\n } else {\n store(this.dataStart + (length << alignof()), value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = select(0, other.length_, other === null);\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, __retain(ref));\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, __retain(ref));\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n if (isManaged()) {\n if (from < to && to < (from + count)) { // right to left\n from += count - 1;\n to += count - 1;\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n --from, --to, --count;\n }\n } else { // left to right\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n ++from, ++to, --count;\n }\n }\n } else {\n memory.copy( // is memmove\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n }\n return this;\n }\n\n pop(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var element = load(this.dataStart + ((--length) << alignof()));\n this.length_ = length;\n return element; // no need to retain -> is moved\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n fn(load(this.dataStart + (index << alignof())), index, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var length = this.length_;\n var out = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n for (let index = 0; index < min(length, this.length_); ++index) {\n let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains\n if (isManaged()) {\n store(outStart + (index << alignof()), __retain(changetype(result)));\n } else {\n store(outStart + (index << alignof()), result);\n }\n // releases result\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n let value = load(this.dataStart + (index << alignof()));\n if (fn(value, index, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = this.length_ - 1; index >= 0; --index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n shift(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = length - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n store(base + (lastIndex << alignof()),\n // @ts-ignore: cast\n null\n );\n this.length_ = lastIndex;\n return element; // no need to retain -> is moved\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (fn(load(this.dataStart + (index << alignof())), index, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var newLength = this.length_ + 1;\n ensureSize(changetype(this), newLength, alignof());\n var dataStart = this.dataStart;\n memory.copy(\n dataStart + sizeof(),\n dataStart,\n (newLength - 1) << alignof()\n );\n if (isManaged()) {\n store(dataStart, __retain(changetype(value)));\n } else {\n store(dataStart, value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(start + length, 0) : min(start, length);\n end = end < 0 ? max(end + length, 0) : min(end , length);\n length = max(end - start, 0);\n var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = length << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, __retain(ref));\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, length << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n deleteCount = max(min(deleteCount, length - start), 0);\n var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n if (isManaged()) {\n for (let i = 0; i < deleteCount; ++i) {\n store(resultStart + (i << alignof()),\n load(thisBase + (i << alignof()))\n );\n // no need to retain -> is moved\n }\n } else {\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n }\n var offset = start + deleteCount;\n if (length != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (length - offset) << alignof()\n );\n }\n this.length_ = length - deleteCount;\n return result;\n }\n\n reverse(): Array {\n var length = this.length_;\n if (length) {\n let front = this.dataStart;\n let back = this.dataStart + ((length - 1) << alignof());\n while (front < back) {\n let temp = load(front);\n store(front, load(back));\n store(back, temp);\n front += sizeof();\n back -= sizeof();\n }\n }\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this {\n var length = this.length_;\n if (length <= 1) return this;\n var base = this.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b;\n store(base, a); // arr[0] = a;\n }\n return this;\n }\n SORT(base, length, comparator);\n return this;\n }\n\n join(separator: string = ","): string {\n if (isBoolean()) return this.join_bool(separator);\n if (isInteger()) return this.join_int(separator);\n if (isFloat()) return this.join_flt(separator);\n if (isString()) return this.join_str(separator);\n if (isArray()) return this.join_arr(separator);\n if (isReference()) return this.join_ref(separator);\n ERROR("unspported element type");\n return unreachable();\n }\n\n private join_bool(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return select("true", "false", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len("false")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_int(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n // @ts-ignore: type\n if (!lastIndex) return changetype(itoa(load(dataStart))); // retains\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_flt(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n ); // retains\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_str(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return load(dataStart);\n\n var sepLen = separator.length;\n var estLen = 0;\n var value: string | null;\n for (let i = 0, len = lastIndex + 1; i < len; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) estLen += value.length;\n }\n var offset = 0;\n var result = changetype(__alloc((estLen + sepLen * lastIndex) << 1, idof())); // retains\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) {\n let valueLen = changetype(value).length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (value !== null) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n changetype(value).length << 1\n );\n }\n return result;\n }\n\n private join_arr(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n\n var result = "";\n var sepLen = separator.length;\n var base = this.dataStart;\n var value: T;\n if (!lastIndex) {\n value = load(base);\n // @ts-ignore: type\n return value ? value.join(separator) : "";\n }\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n if (sepLen) result += separator;\n }\n value = load(base + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n return result; // registered by concatenation (FIXME: lots of garbage)\n }\n\n private join_ref(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var base = this.dataStart;\n if (!lastIndex) return "[object Object]";\n\n const valueLen = 15; // max possible length of element len("[object Object]")\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n if (value) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n if (load(base + (lastIndex << alignof()))) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n // automatically visits ArrayBufferView (.data) next\n }\n}\n',arraybuffer:'/// \n\nimport { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INVALIDLENGTH } from "./util/error";\n\nexport abstract class ArrayBufferView {\n\n @unsafe data: ArrayBuffer;\n @unsafe dataStart: usize;\n @unsafe dataLength: u32;\n\n protected constructor(length: i32, alignLog2: i32) {\n if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length = length << alignLog2, idof());\n memory.fill(buffer, 0, length);\n this.data = changetype(buffer); // retains\n this.dataStart = buffer;\n this.dataLength = length;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n get length(): i32 {\n ERROR("missing implementation: subclasses must implement ArrayBufferView#length");\n return unreachable();\n }\n}\n\n@sealed export class ArrayBuffer {\n\n static isView(value: T): bool {\n if (value) {\n if (value instanceof Int8Array) return true;\n if (value instanceof Uint8Array) return true;\n if (value instanceof Uint8ClampedArray) return true;\n if (value instanceof Int16Array) return true;\n if (value instanceof Uint16Array) return true;\n if (value instanceof Int32Array) return true;\n if (value instanceof Uint32Array) return true;\n if (value instanceof Int64Array) return true;\n if (value instanceof Uint64Array) return true;\n if (value instanceof Float32Array) return true;\n if (value instanceof Float64Array) return true;\n if (value instanceof DataView) return true;\n }\n return false;\n }\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length, idof());\n memory.fill(buffer, 0, length);\n return changetype(buffer); // retains\n }\n\n get byteLength(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n }\n\n slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer {\n var length = this.byteLength;\n begin = begin < 0 ? max(length + begin, 0) : min(begin, length);\n end = end < 0 ? max(length + end , 0) : min(end , length);\n var outSize = max(end - begin, 0);\n var out = __alloc(outSize, idof());\n memory.copy(out, changetype(this) + begin, outSize);\n return changetype(out); // retains\n }\n\n toString(): string {\n return "[object ArrayBuffer]";\n }\n}\n',"bindings/Date":"export declare function UTC(\n // NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for\n // converting the value to the WASM/JS boundary.\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: f64\n): f64;\nexport declare function now(): f64;\n","bindings/Math":"export declare const E: f64;\nexport declare const LN2: f64;\nexport declare const LN10: f64;\nexport declare const LOG2E: f64;\nexport declare const LOG10E: f64;\nexport declare const PI: f64;\nexport declare const SQRT1_2: f64;\nexport declare const SQRT2: f64;\n\nexport declare function abs(x: f64): f64;\nexport declare function acos(x: f64): f64;\nexport declare function acosh(x: f64): f64;\nexport declare function asin(x: f64): f64;\nexport declare function asinh(x: f64): f64;\nexport declare function atan(x: f64): f64;\nexport declare function atan2(y: f64, x: f64): f64;\nexport declare function atanh(x: f64): f64;\nexport declare function cbrt(x: f64): f64;\nexport declare function ceil(x: f64): f64;\nexport declare function clz32(x: f64): f64;\nexport declare function cos(x: f64): f64;\nexport declare function cosh(x: f64): f64;\nexport declare function exp(x: f64): f64;\nexport declare function expm1(x: f64): f64;\nexport declare function floor(x: f64): f64;\nexport declare function fround(x: f64): f32;\nexport declare function hypot(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function imul(a: f64, b: f64): f64;\nexport declare function log(x: f64): f64;\nexport declare function log10(x: f64): f64;\nexport declare function log1p(x: f64): f64;\nexport declare function log2(x: f64): f64;\nexport declare function max(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function min(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function pow(base: f64, exponent: f64): f64;\nexport declare function random(): f64;\nexport declare function round(x: f64): f64;\nexport declare function sign(x: f64): f64;\nexport declare function sin(x: f64): f64;\nexport declare function sinh(x: f64): f64;\nexport declare function sqrt(x: f64): f64;\nexport declare function tan(x: f64): f64;\nexport declare function tanh(x: f64): f64;\nexport declare function trunc(x: f64): f64;\n","bindings/wasi_unstable":"// see: https://wasi.dev\n\n/* tslint:disable:max-line-length */\n\n// helper types to be more explicit\ntype char = u8;\ntype ptr = usize; // all pointers are usize'd\ntype struct = T; // structs are references already in AS\n\n/** Read command-line argument data. */\nexport declare function args_get(\n /** Input: Pointer to a buffer to write the argument pointers. */\n argv: ptr>,\n /** Input: Pointer to a buffer to write the argument string data. */\n argv_buf: ptr\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function args_sizes_get(\n /** Output: Number of arguments. */\n argc: ptr,\n /** Output: Size of the argument string data. */\n argv_buf_size: ptr\n): errno;\n\n/** Return the resolution of a clock. */\nexport declare function clock_res_get(\n /** Input: The clock for which to return the resolution. */\n clock: clockid,\n /** Output: The resolution of the clock. */\n resolution: ptr\n): errno;\n\n/** Return the time value of a clock. */\nexport declare function clock_time_get(\n /** Input: Cock for which to return the time. */\n clock: clockid,\n /** Input: Maximum lag (exclusive) that the returned time value may have, compared to its actual value. */\n precision: timestamp,\n /** Output: Time value of the clock. */\n time: ptr\n): errno;\n\n/** Read environment variable data. */\nexport declare function environ_get(\n /** Input: Pointer to a buffer to write the environment variable pointers. */\n environ: ptr,\n /** Input: Pointer to a buffer to write the environment variable string data. */\n environ_buf: usize\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function environ_sizes_get(\n /** Output: The number of environment variables. */\n environ_count: ptr,\n /** Output: The size of the environment variable string data. */\n environ_buf_size: ptr\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_advise(\n /** Input: The file descriptor for the file for which to provide file advisory information. */\n fd: fd,\n /** Input: The offset within the file to which the advisory applies. */\n offset: filesize,\n /** Input: The length of the region to which the advisory applies. */\n len: filesize,\n /** Input: The advice. */\n advice: advice\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_allocate(\n /** Input: The file descriptor for the file in which to allocate space. */\n fd: fd,\n /** Input: The offset at which to start the allocation. */\n offset: filesize,\n /** Input: The length of the area that is allocated. */\n len: filesize\n): errno;\n\n/** Close a file descriptor. */\nexport declare function fd_close(\n /** Input: The file descriptor to close. */\n fd: fd\n): errno;\n\n/** Synchronize the data of a file to disk. */\nexport declare function fd_datasync(\n /** Input: The file descriptor of the file to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Get the attributes of a file descriptor. */\nexport declare function fd_fdstat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file descriptor's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the flags associated with a file descriptor. */\nexport declare function fd_fdstat_set_flags(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the file descriptor flags. */\n flags: fdflags\n): errno;\n\n/** Adjust the rights associated with a file descriptor. */\nexport declare function fd_fdstat_set_rights(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_base: rights,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_inheriting: rights\n): errno;\n\n/** Return the attributes of an open file. */\nexport declare function fd_filestat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */\nexport declare function fd_filestat_set_size(\n /** Input: A file descriptor for the file to adjust. */\n fd: fd,\n /** Input: The desired file size. */\n size: filesize\n): errno;\n\n/** Adjust the timestamps of an open file or directory. */\nexport declare function fd_filestat_set_times(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Read from a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pread(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors in which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors in which to store data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to read. */\n offset: filesize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_get(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: The buffer where the description is stored. */\n buf: struct\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_dir_name(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: Buffer into which to write the preopened directory name. */\n path: ptr,\n /** Input: Length of the buffer into which to write the preopened directory name. */\n path_len: usize\n): errno;\n\n/** Write to a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pwrite(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to write. */\n offset: filesize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/** Read from a file descriptor. */\nexport declare function fd_read(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors to which to store data. */\n iovs_len: usize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Read directory entries from a directory. */\nexport declare function fd_readdir(\n /** Input: Directory from which to read the directory entries. */\n fd: fd,\n /** Input: Buffer where directory entries are stored. */\n buf: ptr>,\n /** Input: Length of the buffer where directory entries are stored. */\n buf_len: usize,\n /** Input: Location within the directory to start reading. */\n cookie: dircookie,\n /** Output: Number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. */\n buf_used: ptr\n): errno;\n\n/** Atomically replace a file descriptor by renumbering another file descriptor. */\nexport declare function fd_renumber(\n /** Input: The file descriptor to renumber. */\n from: fd,\n /** Input: The file descriptor to overwrite. */\n to: fd\n): errno;\n\n/** Move the offset of a file descriptor. */\nexport declare function fd_seek(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The number of bytes to move. */\n offset: filedelta,\n /** Input: The base from which the offset is relative. */\n whence: whence,\n /** Output: The new offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Synchronize the data and metadata of a file to disk. */\nexport declare function fd_sync(\n /** Input: The file descriptor of the file containing the data and metadata to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Return the current offset of a file descriptor. */\nexport declare function fd_tell(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Output: The current offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Write to a file descriptor. */\nexport declare function fd_write(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/* Create a directory. */\nexport declare function path_create_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path at which to create the directory. */\n path: ptr,\n /** Input: The path at which to create the directory. */\n path_len: usize\n): errno;\n\n/** Return the attributes of a file or directory. */\nexport declare function path_filestat_get(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to inspect. */\n path: ptr,\n /** Input: The path of the file or directory to inspect. */\n path_len: usize,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the timestamps of a file or directory. */\nexport declare function path_filestat_set_times(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to operate on. */\n path: ptr,\n /** Input: The path of the file or directory to operate on. */\n path_len: usize,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Create a hard link. */\nexport declare function path_link(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n old_flags: lookupflags,\n /** Input: The source path from which to link. */\n old_path: ptr,\n /** Input: The source path from which to link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path at which to create the hard link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the hard link. */\n new_path_len: usize\n): errno;\n\n/** Open a file or directory. */\nexport declare function path_open(\n /** Input: The working directory at which the resolution of the path starts. */\n dirfd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n dirflags: lookupflags,\n /** Input: The path of the file or directory to open. */\n path: ptr,\n /** Input: The length of the path of the file or directory to open. */\n path_len: usize,\n /** Input: The method by which to open the file. */\n oflags: oflags,\n /** Input: The initial base rights that apply to operations using the file descriptor itself. */\n fs_rights_base: rights,\n /** Input: The initial inheriting rights that apply to file descriptors derived from it. */\n fs_rights_inheriting: rights,\n /** Input: The initial flags of the file descriptor. */\n fs_flags: fdflags,\n /** Output: The file descriptor of the file that has been opened. */\n fd: ptr\n): errno;\n\n/** Read the contents of a symbolic link. */\nexport declare function path_readlink(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path of the symbolic link from which to read. */\n path: ptr,\n /** Input: The length of the path of the symbolic link from which to read. */\n path_len: usize,\n /** Input: The buffer to which to write the contents of the symbolic link. */\n buf: ptr,\n /** Input: The length of the buffer to which to write the contents of the symbolic link. */\n buf_len: usize,\n /** Output: The number of bytes placed in the buffer. */\n buf_used: ptr\n): errno;\n\n/** Remove a directory. */\nexport declare function path_remove_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a directory to remove. */\n path: ptr,\n /** Input: The length of the path to a directory to remove. */\n path_len: usize\n): errno;\n\n/** Rename a file or directory. */\nexport declare function path_rename(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: The source path of the file or directory to rename. */\n old_path: ptr,\n /** Input: The length of the source path of the file or directory to rename. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path to which to rename the file or directory. */\n new_path: ptr,\n /** Input: The length of the destination path to which to rename the file or directory. */\n new_path_len: usize\n): errno;\n\n/** Create a symbolic link. */\nexport declare function path_symlink(\n /** Input: The contents of the symbolic link. */\n old_path: ptr,\n /** Input: The length of the contents of the symbolic link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The destination path at which to create the symbolic link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the symbolic link. */\n new_path_len: usize\n): errno;\n\n/** Unlink a file. */\nexport declare function path_unlink_file(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a file to unlink. */\n path: ptr,\n /** Input: The length of the path to a file to unlink. */\n path_len: usize\n): errno;\n\n/** Concurrently poll for the occurrence of a set of events. */\nexport declare function poll_oneoff(\n /** Input: The events to which to subscribe. */\n in_: ptr>,\n /** Input: The events that have occurred. */\n out: ptr>,\n /** Input: Both the number of subscriptions and events. */\n nsubscriptions: usize,\n /** Output: The number of events stored. */\n nevents: ptr\n): errno;\n\n/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */\nexport declare function proc_exit(\n /** Input: The exit code returned by the process. */\n rval: u32\n): void;\n\n/** Send a signal to the process of the calling thread. */\nexport declare function proc_raise(\n /** Input: The signal condition to trigger. */\n sig: signal\n): errno;\n\n/** Write high-quality random data into a buffer. */\nexport declare function random_get(\n /** Input: The buffer to fill with random data. */\n buf: usize,\n /** Input: The length of the buffer to fill with random data. */\n buf_len: usize\n): errno;\n\n/** Temporarily yield execution of the calling thread. */\nexport declare function sched_yield(): errno;\n\n/** Receive a message from a socket. */\nexport declare function sock_recv(\n /** Input: The socket on which to receive data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n ri_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to store data. */\n ri_data_len: usize,\n /** Input: Message flags. */\n ri_flags: riflags,\n /** Output: Number of bytes stored in `ri_data`. */\n ro_datalen: ptr,\n /** Output: Message flags. */\n ro_flags: ptr\n): errno;\n\n/** Send a message on a socket. */\nexport declare function sock_send(\n /** Input: The socket on which to send data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to retrieve data */\n si_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to retrieve data */\n si_data_len: usize,\n /** Input: Message flags. */\n si_flags: siflags,\n /** Output: Number of bytes transmitted. */\n so_datalen: ptr\n): errno;\n\n/** Shut down socket send and receive channels. */\nexport declare function sock_shutdown(\n /** Input: The socket on which to shutdown channels. */\n sock: fd,\n /** Input: Which channels on the socket to shut down. */\n how: sdflags\n): errno;\n\n// === Types ======================================================================================\n\n/** File or memory access pattern advisory information. */\nexport namespace advice {\n /** The application has no advice to give on its behavior with respect to the specified data. */\n // @ts-ignore: decorator\n @inline\n export const NORMAL: advice = 0;\n /** The application expects to access the specified data sequentially from lower offsets to higher offsets. */\n // @ts-ignore: decorator\n @inline\n export const SEQUENTIAL : advice = 1;\n /** The application expects to access the specified data in a random order. */\n // @ts-ignore: decorator\n @inline\n export const RANDOM: advice = 2;\n /** The application expects to access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const WILLNEED: advice = 3;\n /** The application expects that it will not access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const DONTNEED: advice = 4;\n /** The application expects to access the specified data once and then not reuse it thereafter. */\n // @ts-ignore: decorator\n @inline\n export const NOREUSE: advice = 5;\n}\nexport type advice = u8;\n\n/** Identifiers for clocks. */\nexport namespace clockid {\n /** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */\n // @ts-ignore: decorator\n @inline\n export const REALTIME: clockid = 0;\n /** The store-wide monotonic clock. Absolute value has no meaning. */\n // @ts-ignore: decorator\n @inline\n export const MONOTONIC: clockid = 1;\n /** The CPU-time clock associated with the current process. */\n // @ts-ignore: decorator\n @inline\n export const PROCESS_CPUTIME_ID: clockid = 2;\n /** The CPU-time clock associated with the current thread. */\n // @ts-ignore: decorator\n @inline\n export const THREAD_CPUTIME_ID: clockid = 3;\n}\nexport type clockid = u32;\n\n/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */\nexport type device = u64;\n\n/** A reference to the offset of a directory entry. */\nexport type dircookie = u64;\n\n/** A directory entry. */\n@unmanaged export class dirent {\n /** The offset of the next directory entry stored in this directory. */\n next: dircookie;\n /** The serial number of the file referred to by this directory entry. */\n ino: inode;\n /** The length of the name of the directory entry. */\n namlen: u32;\n /** The type of the file referred to by this directory entry. */\n type: filetype;\n private __padding0: u16;\n}\n\n/** Error codes returned by functions. */\nexport namespace errno {\n /** No error occurred. System call completed successfully. */\n // @ts-ignore: decorator\n @inline\n export const SUCCESS: errno = 0;\n /** Argument list too long. */\n // @ts-ignore: decorator\n @inline\n export const TOOBIG: errno = 1;\n /** Permission denied. */\n // @ts-ignore: decorator\n @inline\n export const ACCES: errno = 2;\n /** Address in use. */\n // @ts-ignore: decorator\n @inline\n export const ADDRINUSE: errno = 3;\n /** Address not available. */\n // @ts-ignore: decorator\n @inline\n export const ADDRNOTAVAIL: errno = 4;\n /** Address family not supported. */\n // @ts-ignore: decorator\n @inline\n export const AFNOSUPPORT: errno = 5;\n /** Resource unavailable, or operation would block. */\n // @ts-ignore: decorator\n @inline\n export const AGAIN: errno = 6;\n /** Connection already in progress. */\n // @ts-ignore: decorator\n @inline\n export const ALREADY: errno = 7;\n /** Bad file descriptor. */\n // @ts-ignore: decorator\n @inline\n export const BADF: errno = 8;\n /** Bad message. */\n // @ts-ignore: decorator\n @inline\n export const BADMSG: errno = 9;\n /** Device or resource busy. */\n // @ts-ignore: decorator\n @inline\n export const BUSY: errno = 10;\n /** Operation canceled. */\n // @ts-ignore: decorator\n @inline\n export const CANCELED: errno = 11;\n /** No child processes. */\n // @ts-ignore: decorator\n @inline\n export const CHILD: errno = 12;\n /** Connection aborted. */\n // @ts-ignore: decorator\n @inline\n export const CONNABORTED: errno = 13;\n /** Connection refused. */\n // @ts-ignore: decorator\n @inline\n export const CONNREFUSED: errno = 14;\n /** Connection reset. */\n // @ts-ignore: decorator\n @inline\n export const CONNRESET: errno = 15;\n /** Resource deadlock would occur. */\n // @ts-ignore: decorator\n @inline\n export const DEADLK: errno = 16;\n /** Destination address required. */\n // @ts-ignore: decorator\n @inline\n export const DESTADDRREQ: errno = 17;\n /** Mathematics argument out of domain of function. */\n // @ts-ignore: decorator\n @inline\n export const DOM: errno = 18;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const DQUOT: errno = 19;\n /** File exists. */\n // @ts-ignore: decorator\n @inline\n export const EXIST: errno = 20;\n /** Bad address. */\n // @ts-ignore: decorator\n @inline\n export const FAULT: errno = 21;\n /** File too large. */\n // @ts-ignore: decorator\n @inline\n export const FBIG: errno = 22;\n /** Host is unreachable. */\n // @ts-ignore: decorator\n @inline\n export const HOSTUNREACH: errno = 23;\n /** Identifier removed. */\n // @ts-ignore: decorator\n @inline\n export const IDRM: errno = 24;\n /** Illegal byte sequence. */\n // @ts-ignore: decorator\n @inline\n export const ILSEQ: errno = 25;\n /** Operation in progress. */\n // @ts-ignore: decorator\n @inline\n export const INPROGRESS: errno = 26;\n /** Interrupted function. */\n // @ts-ignore: decorator\n @inline\n export const INTR: errno = 27;\n /** Invalid argument. */\n // @ts-ignore: decorator\n @inline\n export const INVAL: errno = 28;\n /** I/O error. */\n // @ts-ignore: decorator\n @inline\n export const IO: errno = 29;\n /** Socket is connected. */\n // @ts-ignore: decorator\n @inline\n export const ISCONN: errno = 30;\n /** Is a directory. */\n // @ts-ignore: decorator\n @inline\n export const ISDIR: errno = 31;\n /** Too many levels of symbolic links. */\n // @ts-ignore: decorator\n @inline\n export const LOOP: errno = 32;\n /** File descriptor value too large. */\n // @ts-ignore: decorator\n @inline\n export const MFILE: errno = 33;\n /** Too many links. */\n // @ts-ignore: decorator\n @inline\n export const MLINK: errno = 34;\n /** Message too large. */\n // @ts-ignore: decorator\n @inline\n export const MSGSIZE: errno = 35;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const MULTIHOP: errno = 36;\n /** Filename too long. */\n // @ts-ignore: decorator\n @inline\n export const NAMETOOLONG: errno = 37;\n /** Network is down. */\n // @ts-ignore: decorator\n @inline\n export const NETDOWN: errno = 38;\n /** Connection aborted by network. */\n // @ts-ignore: decorator\n @inline\n export const NETRESET: errno = 39;\n /** Network unreachable. */\n // @ts-ignore: decorator\n @inline\n export const NETUNREACH: errno = 40;\n /** Too many files open in system. */\n // @ts-ignore: decorator\n @inline\n export const NFILE: errno = 41;\n /** No buffer space available. */\n // @ts-ignore: decorator\n @inline\n export const NOBUFS: errno = 42;\n /** No such device. */\n // @ts-ignore: decorator\n @inline\n export const NODEV: errno = 43;\n /** No such file or directory. */\n // @ts-ignore: decorator\n @inline\n export const NOENT: errno = 44;\n /** Executable file format error. */\n // @ts-ignore: decorator\n @inline\n export const NOEXEC: errno = 45;\n /** No locks available. */\n // @ts-ignore: decorator\n @inline\n export const NOLCK: errno = 46;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const NOLINK: errno = 47;\n /** Not enough space. */\n // @ts-ignore: decorator\n @inline\n export const NOMEM: errno = 48;\n /** No message of the desired type. */\n // @ts-ignore: decorator\n @inline\n export const NOMSG: errno = 49;\n /** Protocol not available. */\n // @ts-ignore: decorator\n @inline\n export const NOPROTOOPT: errno = 50;\n /** No space left on device. */\n // @ts-ignore: decorator\n @inline\n export const NOSPC: errno = 51;\n /** Function not supported. */\n // @ts-ignore: decorator\n @inline\n export const NOSYS: errno = 52;\n /** The socket is not connected. */\n // @ts-ignore: decorator\n @inline\n export const NOTCONN: errno = 53;\n /** Not a directory or a symbolic link to a directory. */\n // @ts-ignore: decorator\n @inline\n export const NOTDIR: errno = 54;\n /** Directory not empty. */\n // @ts-ignore: decorator\n @inline\n export const NOTEMPTY: errno = 55;\n /** State not recoverable. */\n // @ts-ignore: decorator\n @inline\n export const NOTRECOVERABLE: errno = 56;\n /** Not a socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSOCK: errno = 57;\n /** Not supported, or operation not supported on socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSUP: errno = 58;\n /** Inappropriate I/O control operation. */\n // @ts-ignore: decorator\n @inline\n export const NOTTY: errno = 59;\n /** No such device or address. */\n // @ts-ignore: decorator\n @inline\n export const NXIO: errno = 60;\n /** Value too large to be stored in data type. */\n // @ts-ignore: decorator\n @inline\n export const OVERFLOW: errno = 61;\n /** Previous owner died. */\n // @ts-ignore: decorator\n @inline\n export const OWNERDEAD: errno = 62;\n /** Operation not permitted. */\n // @ts-ignore: decorator\n @inline\n export const PERM: errno = 63;\n /** Broken pipe. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: errno = 64;\n /** Protocol error. */\n // @ts-ignore: decorator\n @inline\n export const PROTO: errno = 65;\n /** Protocol not supported. */\n // @ts-ignore: decorator\n @inline\n export const PROTONOSUPPORT: errno = 66;\n /** Protocol wrong type for socket. */\n // @ts-ignore: decorator\n @inline\n export const PROTOTYPE: errno = 67;\n /** Result too large. */\n // @ts-ignore: decorator\n @inline\n export const RANGE: errno = 68;\n /** Read-only file system. */\n // @ts-ignore: decorator\n @inline\n export const ROFS: errno = 69;\n /** Invalid seek. */\n // @ts-ignore: decorator\n @inline\n export const SPIPE: errno = 70;\n /** No such process. */\n // @ts-ignore: decorator\n @inline\n export const SRCH: errno = 71;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const STALE: errno = 72;\n /** Connection timed out. */\n // @ts-ignore: decorator\n @inline\n export const TIMEDOUT: errno = 73;\n /** Text file busy. */\n // @ts-ignore: decorator\n @inline\n export const TXTBSY: errno = 74;\n /** Cross-device link. */\n // @ts-ignore: decorator\n @inline\n export const XDEV: errno = 75;\n /** Extension: Capabilities insufficient. */\n // @ts-ignore: decorator\n @inline\n export const NOTCAPABLE: errno = 76;\n}\nexport type errno = u16;\n\n/** An event that occurred. */\n@unmanaged export abstract class event {\n /** User-provided value that got attached to `subscription#userdata`. */\n userdata: userdata;\n /** If non-zero, an error that occurred while processing the subscription request. */\n error: errno;\n /* The type of the event that occurred. */\n type: eventtype;\n private __padding0: u16;\n}\n\n/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\n@unmanaged export class rwevent extends event {\n /* The number of bytes available for reading or writing. */\n nbytes: filesize;\n /* The state of the file descriptor. */\n flags: eventrwflags;\n private __padding1: u32;\n}\n\n/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\nexport namespace eventrwflags {\n /** The peer of this socket has closed or disconnected. */\n // @ts-ignore: decorator\n @inline\n export const HANGUP: eventrwflags = 1;\n}\nexport type eventrwflags = u16;\n\n/** Type of a subscription to an event or its occurrence. */\nexport namespace eventtype {\n /** The time value of clock has reached the timestamp. */\n // @ts-ignore: decorator\n @inline\n export const CLOCK: eventtype = 0;\n /** File descriptor has data available for reading. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: eventtype = 1;\n /** File descriptor has capacity available for writing */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: eventtype = 2;\n}\nexport type eventtype = u8;\n\n/** Exit code generated by a process when exiting. */\nexport type exitcode = u32;\n\n/** A file descriptor number. */\nexport type fd = u32;\n\n/** File descriptor flags. */\nexport namespace fdflags {\n /** Append mode: Data written to the file is always appended to the file's end. */\n // @ts-ignore: decorator\n @inline\n export const APPEND: fdflags = 1;\n /** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */\n // @ts-ignore: decorator\n @inline\n export const DSYNC: fdflags = 2;\n /** Non-blocking mode. */\n // @ts-ignore: decorator\n @inline\n export const NONBLOCK: fdflags = 4;\n /** Synchronized read I/O operations. */\n // @ts-ignore: decorator\n @inline\n export const RSYNC: fdflags = 8;\n /** Write according to synchronized I/O file integrity completion. */\n // @ts-ignore: decorator\n @inline\n export const SYNC: fdflags = 16;\n}\nexport type fdflags = u16;\n\n/** File descriptor attributes. */\n@unmanaged export class fdstat {\n /** File type. */\n filetype: filetype;\n /** File descriptor flags. */\n flags: fdflags;\n /** Rights that apply to this file descriptor. */\n rights_base: rights;\n /** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */\n rights_inheriting: rights;\n}\n\n/** Relative offset within a file. */\nexport type filedelta = i64;\n\n/** Non-negative file size or length of a region within a file. */\nexport type filesize = u64;\n\n/** File attributes. */\n@unmanaged export class filestat {\n /** Device ID of device containing the file. */\n dev: device;\n /** File serial number. */\n ino: inode;\n /** File type. */\n filetype: filetype;\n /** Number of hard links to the file. */\n nlink: linkcount;\n /** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */\n size: filesize;\n /** Last data access timestamp. */\n atim: timestamp;\n /** Last data modification timestamp. */\n mtim: timestamp;\n /** Last file status change timestamp. */\n ctim: timestamp;\n}\n\n/** The type of a file descriptor or file. */\nexport namespace filetype {\n /** The type of the file descriptor or file is unknown or is different from any of the other types specified. */\n // @ts-ignore: decorator\n @inline\n export const UNKNOWN: filetype = 0;\n /** The file descriptor or file refers to a block device inode. */\n // @ts-ignore: decorator\n @inline\n export const BLOCK_DEVICE: filetype = 1;\n /** The file descriptor or file refers to a character device inode. */\n // @ts-ignore: decorator\n @inline\n export const CHARACTER_DEVICE: filetype = 2;\n /** The file descriptor or file refers to a directory inode. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: filetype = 3;\n /** The file descriptor or file refers to a regular file inode. */\n // @ts-ignore: decorator\n @inline\n export const REGULAR_FILE: filetype = 4;\n /** The file descriptor or file refers to a datagram socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_DGRAM: filetype = 5;\n /** The file descriptor or file refers to a byte-stream socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_STREAM: filetype = 6;\n /** The file refers to a symbolic link inode. */\n // @ts-ignore: decorator\n @inline\n export const SYMBOLIC_LINK: filetype = 7;\n}\nexport type filetype = u8;\n\n/** Which file time attributes to adjust. */\nexport namespace fstflags {\n /** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM: fstflags = 1;\n /** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM_NOW: fstflags = 2;\n /** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM: fstflags = 4;\n /** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM_NOW: fstflags = 8;\n}\nexport type fstflags = u16;\n\n/** File serial number that is unique within its file system. */\nexport type inode = u64;\n\n/** A region of memory for scatter/gather reads. */\n@unmanaged export class iovec {\n /** The address of the buffer to be filled. */\n buf: usize;\n /** The length of the buffer to be filled. */\n buf_len: usize;\n}\n\n/** Number of hard links to an inode. */\nexport type linkcount = u32;\n\n/** Flags determining the method of how paths are resolved. */\nexport namespace lookupflags {\n /** As long as the resolved path corresponds to a symbolic link, it is expanded. */\n // @ts-ignore: decorator\n @inline\n export const SYMLINK_FOLLOW: lookupflags = 1;\n}\nexport type lookupflags = u32;\n\n/** Open flags. */\nexport namespace oflags {\n /** Create file if it does not exist. */\n // @ts-ignore: decorator\n @inline\n export const CREAT: oflags = 1;\n /** Fail if not a directory. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: oflags = 2;\n /** Fail if file already exists. */\n // @ts-ignore: decorator\n @inline\n export const EXCL: oflags = 4;\n /** Truncate file to size 0. */\n // @ts-ignore: decorator\n @inline\n export const TRUNC: oflags = 8;\n}\nexport type oflags = u16;\n\n// TODO: undocumented\nexport namespace preopentype {\n // @ts-ignore: decorator\n @inline\n export const DIR: preopentype = 0;\n}\nexport type preopentype = u8;\n\n// TODO: undocumented\nexport abstract class prestat {\n type: preopentype;\n}\n\n// TODO: undocumented\nexport class dirprestat extends prestat {\n name_len: usize;\n}\n\n/** Flags provided to `sock_recv`. */\nexport namespace riflags {\n /** Returns the message without removing it from the socket's receive queue. */\n // @ts-ignore: decorator\n @inline\n export const PEEK: riflags = 1;\n /** On byte-stream sockets, block until the full amount of data can be returned. */\n // @ts-ignore: decorator\n @inline\n export const WAITALL: riflags = 2;\n}\nexport type riflags = u16;\n\n/** File descriptor rights, determining which actions may be performed. */\nexport namespace rights {\n /** The right to invoke `fd_datasync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_DATASYNC: rights = 1;\n /** The right to invoke `fd_read` and `sock_recv`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: rights = 2;\n /** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SEEK: rights = 4;\n /** The right to invoke `fd_fdstat_set_flags`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FDSTAT_SET_FLAGS: rights = 8;\n /** The right to invoke `fd_sync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SYNC: rights = 16;\n /** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */\n // @ts-ignore: decorator\n @inline\n export const FD_TELL: rights = 32;\n /** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: rights = 64;\n /** The right to invoke `fd_advise`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ADVISE: rights = 128;\n /** The right to invoke `fd_allocate`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ALLOCATE: rights = 256;\n /** The right to invoke `path_create_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_DIRECTORY: rights = 512;\n /** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_FILE: rights = 1024;\n /** The right to invoke `path_link` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_SOURCE: rights = 2048;\n /** The right to invoke `path_link` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_TARGET: rights = 4096;\n /** The right to invoke `path_open`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_OPEN: rights = 8192;\n /** The right to invoke `fd_readdir`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READDIR: rights = 16384;\n /** The right to invoke `path_readlink`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_READLINK: rights = 32768;\n /** The right to invoke `path_rename` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_SOURCE: rights = 65536;\n /** The right to invoke `path_rename` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_TARGET: rights = 131072;\n /** The right to invoke `path_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_GET: rights = 262144;\n /** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_SIZE: rights = 524288;\n /** The right to invoke `path_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_TIMES: rights = 1048576;\n /** The right to invoke `fd_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_GET: rights = 2097152;\n /** The right to invoke `fd_filestat_set_size`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_SIZE: rights = 4194304;\n /** The right to invoke `fd_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_TIMES: rights = 8388608;\n /** The right to invoke `path_symlink`. */\n // @ts-ignore: decorator\n @inline\n export const RIGHT_PATH_SYMLINK: rights = 16777216;\n /** The right to invoke `path_remove_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_REMOVE_DIRECTORY: rights = 33554432;\n /** The right to invoke `path_unlink_file`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_UNLINK_FILE: rights = 67108864;\n /** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */\n // @ts-ignore: decorator\n @inline\n export const POLL_FD_READWRITE: rights = 134217728;\n /** The right to invoke `sock_shutdown`. */\n // @ts-ignore: decorator\n @inline\n export const SOCK_SHUTDOWN: rights = 268435456;\n}\nexport type rights = u64;\n\n/** Flags returned by `sock_recv`. */\nexport namespace roflags {\n /** Message data has been truncated. */\n // @ts-ignore: decorator\n @inline\n export const DATA_TRUNCATED: roflags = 1;\n}\nexport type roflags = u16;\n\n/** Which channels on a socket to shut down. */\nexport namespace sdflags {\n /** Disables further receive operations. */\n // @ts-ignore: decorator\n @inline\n export const RD: sdflags = 1;\n /** Disables further send operations. */\n // @ts-ignore: decorator\n @inline\n export const WR: sdflags = 2;\n}\nexport type sdflags = u8;\n\n/** Flags provided to `sock_send`. */\nexport namespace siflags {\n // As there are currently no flags defined, it must be set to zero.\n}\nexport type siflags = u16;\n\n/** Signal condition. */\nexport namespace signal {\n /** Hangup. */\n // @ts-ignore: decorator\n @inline\n export const HUP: signal = 1;\n /** Terminate interrupt signal. */\n // @ts-ignore: decorator\n @inline\n export const INT: signal = 2;\n /** Terminal quit signal. */\n // @ts-ignore: decorator\n @inline\n export const QUIT: signal = 3;\n /** Illegal instruction. */\n // @ts-ignore: decorator\n @inline\n export const ILL: signal = 4;\n /** Trace/breakpoint trap. */\n // @ts-ignore: decorator\n @inline\n export const TRAP: signal = 5;\n /** Process abort signal. */\n // @ts-ignore: decorator\n @inline\n export const ABRT: signal = 6;\n /** Access to an undefined portion of a memory object. */\n // @ts-ignore: decorator\n @inline\n export const BUS: signal = 7;\n /** Erroneous arithmetic operation. */\n // @ts-ignore: decorator\n @inline\n export const FPE: signal = 8;\n /** Kill. */\n // @ts-ignore: decorator\n @inline\n export const KILL: signal = 9;\n /** User-defined signal 1. */\n // @ts-ignore: decorator\n @inline\n export const USR1: signal = 10;\n /** Invalid memory reference. */\n // @ts-ignore: decorator\n @inline\n export const SEGV: signal = 11;\n /** User-defined signal 2. */\n // @ts-ignore: decorator\n @inline\n export const USR2: signal = 12;\n /** Write on a pipe with no one to read it. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: signal = 13;\n /** Alarm clock. */\n // @ts-ignore: decorator\n @inline\n export const ALRM: signal = 14;\n /** Termination signal. */\n // @ts-ignore: decorator\n @inline\n export const TERM: signal = 15;\n /** Child process terminated, stopped, or continued. */\n // @ts-ignore: decorator\n @inline\n export const CHLD: signal = 16;\n /** Continue executing, if stopped. */\n // @ts-ignore: decorator\n @inline\n export const CONT: signal = 17;\n /** Stop executing. */\n // @ts-ignore: decorator\n @inline\n export const STOP: signal = 18;\n /** Terminal stop signal. */\n // @ts-ignore: decorator\n @inline\n export const TSTP: signal = 19;\n /** Background process attempting read. */\n // @ts-ignore: decorator\n @inline\n export const TTIN: signal = 20;\n /** Background process attempting write. */\n // @ts-ignore: decorator\n @inline\n export const TTOU: signal = 21;\n /** High bandwidth data is available at a socket. */\n // @ts-ignore: decorator\n @inline\n export const URG: signal = 22;\n /** CPU time limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XCPU: signal = 23;\n /** File size limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XFSZ: signal = 24;\n /** Virtual timer expired. */\n // @ts-ignore: decorator\n @inline\n export const VTALRM: signal = 25;\n // @ts-ignore: decorator\n @inline\n export const PROF: signal = 26;\n // @ts-ignore: decorator\n @inline\n export const WINCH: signal = 27;\n // @ts-ignore: decorator\n @inline\n export const POLL: signal = 28;\n // @ts-ignore: decorator\n @inline\n export const PWR: signal = 29;\n /** Bad system call. */\n // @ts-ignore: decorator\n @inline\n export const SYS: signal = 30;\n}\nexport type signal = u8;\n\n/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */\nexport namespace subclockflags {\n /** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */\n // @ts-ignore: decorator\n @inline\n export const ABSTIME: subclockflags = 1;\n}\nexport type subclockflags = u16;\n\n/** Subscription to an event. */\n@unmanaged export abstract class subscription {\n /** User-provided value that is attached to the subscription. */\n userdata: userdata;\n /** The type of the event to which to subscribe. */\n type: eventtype;\n private __padding0: u32;\n}\n\n/* Subscription to an event of type `eventtype.CLOCK`.**/\n@unmanaged export class clocksubscription extends subscription {\n /** The user-defined unique identifier of the clock. */\n identifier: userdata;\n /** The clock against which to compare the timestamp. */\n clock_id: clockid;\n /** The absolute or relative timestamp. */\n timeout: timestamp;\n /** The amount of time that the implementation may wait additionally to coalesce with other events. */\n precision: timestamp;\n /** Flags specifying whether the timeout is absolute or relative. */\n flags: subclockflags;\n private __padding1: u32;\n}\n\n/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/\n@unmanaged export class fdsubscription extends subscription {\n /** The file descriptor on which to wait for it to become ready for reading or writing. */\n fd: fd;\n}\n\n/** Timestamp in nanoseconds. */\nexport type timestamp = u64;\n\n/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */\nexport type userdata = u64;\n\n/** The position relative to which to set the offset of the file descriptor. */\nexport namespace whence {\n /** Seek relative to current position. */\n // @ts-ignore: decorator\n @inline\n export const CUR: whence = 0;\n /** Seek relative to end-of-file. */\n // @ts-ignore: decorator\n @inline\n export const END: whence = 1;\n /** Seek relative to start-of-file. */\n // @ts-ignore: decorator\n @inline\n export const SET: whence = 2;\n}\nexport type whence = u8;\n","bindings/wasi":'export * from "./wasi_unstable";\n',builtins:'// @ts-ignore: decorator\n@builtin\nexport declare function isInteger(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFloat(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isBoolean(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isSigned(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isReference(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isString(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArray(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArrayLike(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFunction(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isNullable(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isDefined(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isConstant(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isManaged(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isVoid(): boolean;\n\n// @ts-ignore\n@builtin\nexport declare function lengthof(func?: T): i32;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function clz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ctz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function popcnt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function abs(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function max(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function min(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ceil(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function floor(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function nearest(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function reinterpret(value: number): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sqrt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function trunc(value: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function load(offset: usize, immOffset?: usize, immAlign?: usize): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function store(offset: usize, value: void, immOffset?: usize, immAlign?: usize): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sizeof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function alignof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function offsetof(fieldName?: string): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function idof(): u32;\n\n// @ts-ignore\n@builtin\nexport declare function nameof(): string;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unreachable(): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function changetype(value: void): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unchecked(expr: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_indirect(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_direct(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function instantiate(...args: void[]): T;\n\nexport namespace atomic {\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: T, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n\n // @ts-ignore: decorator\n @builtin\n export declare function notify(ptr: usize, count: i32): i32;\n}\n\n// @ts-ignore: decorator\n@lazy\nexport const enum AtomicWaitResult {\n OK = 0,\n NOT_EQUAL = 1,\n TIMED_OUT = 2\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8(value: void): i8;\n\nexport namespace i8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i8 = -128;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i8 = 127;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16(value: void): i16;\n\nexport namespace i16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i16 = -32768;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i16 = 32767;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32(value: void): i32;\n\nexport namespace i32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i32 = -2147483648;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i32 = 2147483647;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f32(value: f32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64(value: void): i64;\n\nexport namespace i64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i64 = -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i64 = 9223372036854775807;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f64(value: f64): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw32 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isize(value: void): isize;\n\nexport namespace isize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u8(value: void): u8;\n\nexport namespace u8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u8 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u8 = 255;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u16(value: void): u16;\n\nexport namespace u16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u16 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u16 = 65535;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u32(value: void): u32;\n\nexport namespace u32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u32 = 4294967295;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u64(value: void): u64;\n\nexport namespace u64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function usize(value: void): usize;\n\nexport namespace usize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: usize = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function bool(value: void): bool;\n\nexport namespace bool {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: bool = false;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: bool = true;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32(value: void): f32;\n\nexport namespace f32 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x34000000); // 0x1p-23f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x00000001); // 0x0.000001p+0f\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7F7FFFFF); // 0x1.fffffep+127f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x00800000); // 0x1p-126f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f32, y: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i32(value: i32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f32): f32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f32): f32;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64(value: void): f64;\n\nexport namespace f64 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x3CB0000000000000); // 0x1p-52\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x0000000000000001); // 0x0.0000000000001p+0\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7FEFFFFFFFFFFFFF); // 0x1.fffffffffffffp+1023\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x0010000000000000); // 0x1p-1022\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f64, y: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i64(value: i64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f64): f64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f64): f64;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function v128(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace v128 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128; // except i64\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function not(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function bitselect(v1: v128, v2: v128, c: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8x16(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace i8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\n\nexport namespace i16x8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\n\nexport namespace i32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f32x4_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f32x4_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64x2(a: i64, b: i64): v128;\n\nexport namespace i64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f64x2_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f64x2_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\n\nexport namespace f32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i32x4(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i32x4(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64x2(a: f64, b: f64): v128;\n\nexport namespace f64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i64x2(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i64x2(a: v128): v128;\n}\n\nexport namespace v8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(\n a: v128, b: v128,\n l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8,\n l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8\n ): v128;\n}\n\n// @ts-ignore: decorator\n@external("env", "abort")\ndeclare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n// @ts-ignore: decorator\n@external("env", "trace")\ndeclare function trace(\n message: string,\n n?: i32,\n a0?: f64,\n a1?: f64,\n a2?: f64,\n a3?: f64,\n a4?: f64\n): void;\n',compat:"\nexport type ReturnType = returnof;\n",dataview:'import { BLOCK_MAXSIZE } from "./rt/common";\nimport { ArrayBuffer } from "./arraybuffer";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\n\n// TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte\n\nexport class DataView {\n\n private data: ArrayBuffer;\n private dataStart: usize;\n private dataLength: i32;\n\n constructor(\n buffer: ArrayBuffer,\n byteOffset: i32 = 0,\n byteLength: i32 = buffer.byteLength\n ) {\n if (\n i32(byteLength > BLOCK_MAXSIZE) |\n i32(byteOffset + byteLength > buffer.byteLength)\n ) throw new RangeError(E_INVALIDLENGTH);\n this.data = buffer; // retains\n var dataStart = changetype(buffer) + byteOffset;\n this.dataStart = dataStart;\n this.dataLength = byteLength;\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n getFloat32(byteOffset: i32, littleEndian: boolean = false): f32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getFloat64(byteOffset: i32, littleEndian: boolean = false): f64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getInt8(byteOffset: i32): i8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getInt16(byteOffset: i32, littleEndian: boolean = false): i16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getInt32(byteOffset: i32, littleEndian: boolean = false): i32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint8(byteOffset: i32): u8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getUint16(byteOffset: i32, littleEndian: boolean = false): u16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint32(byteOffset: i32, littleEndian: boolean = false): u32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setFloat32(byteOffset: i32, value: f32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setFloat64(byteOffset: i32, value: f64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setInt8(byteOffset: i32, value: i8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setInt16(byteOffset: i32, value: i16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setInt32(byteOffset: i32, value: i32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint8(byteOffset: i32, value: u8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setUint16(byteOffset: i32, value: u16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint32(byteOffset: i32, value: u32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n // Non-standard additions that make sense in WebAssembly, but won\'t work in JS:\n\n getInt64(byteOffset: i32, littleEndian: boolean = false): i64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i64 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint64(byteOffset: i32, littleEndian: boolean = false): u64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setInt64(byteOffset: i32, value: i64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint64(byteOffset: i32, value: u64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n toString(): string {\n return "[object DataView]";\n }\n}\n',date:'import {\n UTC as Date_UTC,\n now as Date_now\n} from "./bindings/Date";\n\nexport class Date {\n\n @inline static UTC(\n year: i32,\n month: i32 = 0,\n day: i32 = 1,\n hour: i32 = 0,\n minute: i32 = 0,\n second: i32 = 0,\n millisecond: i64 = 0\n ): i64 {\n return Date_UTC(year, month, day, hour, minute, second, millisecond);\n }\n\n @inline static now(): i64 {\n return Date_now();\n }\n\n private value: i64;\n\n constructor(value: i64) {\n this.value = value;\n }\n\n getTime(): i64 {\n return this.value;\n }\n\n setTime(value: i64): i64 {\n this.value = value;\n return value;\n }\n}\n',diagnostics:"// @ts-ignore: decorator\n@builtin\nexport declare function ERROR(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function WARNING(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function INFO(message?: string): void;\n",error:'export class Error {\n\n name: string = "Error";\n stack: string = ""; // TODO\n\n constructor(\n public message: string = ""\n ) {}\n\n toString(): string {\n var message = this.message;\n return message.length\n ? this.name + ": " + message\n : this.name;\n }\n}\n\nexport class RangeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "RangeError";\n }\n}\n\nexport class TypeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "TypeError";\n }\n}\n\nexport class SyntaxError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "SyntaxError";\n }\n}\n',fixedarray:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";\n\n// NOTE: DO NOT USE YET!\n\n// TODO: FixedArray with S being the static size, i.e. `new FixedArray`.\n// Then hard-wire this special type to the compiler and do static length checks instead :)\n\nexport class FixedArray {\n [key: number]: T;\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n var outSize = length << alignof();\n var out = __alloc(outSize, idof>());\n memory.fill(out, 0, outSize);\n return changetype>(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof();\n }\n\n @operator("[]") private __get(index: i32): T {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n this.__unchecked_set(index, value);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(changetype(this) + (index << alignof()));\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = changetype(this) + (index << alignof());\n let oldValue = load(offset);\n if (changetype(value) != oldValue) {\n store(offset, __retain(changetype(value)));\n __release(changetype(oldValue));\n }\n } else {\n store(changetype(this) + (index << alignof()), value);\n }\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = changetype(this);\n let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n }\n}\n',heap:"// @ts-ignore: decorator\n@builtin\nexport declare const __heap_base: usize;\n",iterator:"export abstract class Iterable {\n // ?\n}\n\n@sealed\nexport abstract class Iterator {\n\n // private constructor(iterable: Iterable) {\n // }\n\n // TODO: these need to evaluate the classId at the respective reference in order to obtain the\n // next value, i.e. arrays work differently than maps. we'd then have:\n //\n // ╒═══════════════════ Iterator layout (32-bit) ══════════════════╕\n // 3 2 1\n // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n // │ index │\n // ├─────────────────────────────────────────────────────────┬───┬─┤\n // │ reference │ 0 │D│\n // └─────────────────────────────────────────────────────────┴───┴─┘\n // D: Done flag\n\n // get value(this: u64): T {\n // ?\n // }\n\n // next(this: u64): Iterator {\n // ?\n // }\n\n done(this: u64): bool {\n return (this & 1);\n }\n}\n",map:'/// \n\nimport { HASH } from "./util/hash";\nimport { E_KEYNOTFOUND } from "util/error";\n\n// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a map entry. */\n@unmanaged class MapEntry {\n key: K;\n value: V;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K/V is <= 32-bits\n const maxkv = sizeof() > sizeof() ? sizeof() : sizeof();\n const align = (maxkv > sizeof() ? maxkv : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Map {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // MapEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() {\n this.clear();\n }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: K, hashCode: u32): MapEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n has(key: K): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n @operator("[]")\n get(key: K): V {\n var entry = this.find(key, HASH(key));\n if (!entry) throw new Error(E_KEYNOTFOUND); // cannot represent `undefined`\n return entry.value;\n }\n\n @operator("[]=")\n set(key: K, value: V): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (entry) {\n if (isManaged()) {\n let oldRef = changetype(entry.value);\n if (changetype(value) != oldRef) {\n entry.value = changetype(__retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n entry.value = value;\n }\n } else {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n let entries = this.entries;\n entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE());\n // link with the map\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n entry.value = isManaged()\n ? changetype(__retain(changetype(value)))\n : value;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n delete(key: K): bool {\n var entry = this.find(key, HASH(key));\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key));\n if (isManaged()) __release(changetype(entry.value));\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr);\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr);\n newEntry.key = oldEntry.key;\n newEntry.value = oldEntry.value;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n keys(): K[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var keys = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n keys.push(entry.key);\n }\n }\n return keys;\n }\n\n values(): V[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.value);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Map]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged() || isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n if (isManaged()) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n if (isManaged()) {\n let val = changetype(entry.value);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',math:'import * as JSMath from "./bindings/Math";\nexport { JSMath };\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from "./builtins";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n// TODO: sin, cos, tan for Math namespace\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n return NativeMath.exp(x - kln2) * scale * scale;\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7ff;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u >> 63);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_32: u32;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx >> 31) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var e = reinterpret(x) >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n if (hx >> 31) return -x;\n return x;\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var s = u >> 63;\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n switch (m) {\n case 0: return PI / 4;\n case 1: return -PI / 4;\n case 2: return 3 * PI / 4;\n case 3: return -3 * PI / 4;\n }\n } else {\n switch (m) {\n case 0: return 0.0;\n case 1: return -0.0;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // TODO\n return JSMath.cos(x);\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var hx = (reinterpret(x) >> 32);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n var hi: f64, lo: f64 = 0;\n var k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n var xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n var xq = xs * xs;\n var c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n var y = 1.0 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32 & 0x7FFFFFFF);\n var k = 0, sign_ = (u >> 63);\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign_) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = (ux >> 52);\n var ey = (uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || (hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = (u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = (hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln2hi;\n var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n var y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n var u_ = reinterpret(x);\n var hx = (u_ >> 32);\n var lx = u_;\n u_ = reinterpret(y);\n var hy = (u_ >> 32);\n var ly = u_;\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n var yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let kcond = k > 20;\n let offset = select(52, 20, kcond) - k;\n let Ly = select(ly, iy, kcond);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n var ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n var s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n var t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n var j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret((((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n var y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = (u_ >> 32);\n var i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret((n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = (reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n\n export function seedRandom(value: i64): void {\n assert(value);\n random_seeded = true;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n }\n\n export function random(): f64 { // see: v8/src/base/random-number-generator.cc\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = ((s0 + s1) & 0x000FFFFFFFFFFFFF) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f64): f64 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n // In ECMAScript all NaN values are indistinguishable from each other\n // so we need handle NaN and negative NaN in similar way\n return ((reinterpret(x) >>> 63) & i32(x == x));\n }\n\n export function sin(x: f64): f64 { // TODO\n return JSMath.sin(x);\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var absx = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n t = expm1(absx);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // TODO\n return JSMath.tan(x);\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n /* make sure final n < -53 to avoid double\n rounding in the subnormal range */\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx << 63;\n return reinterpret(ux);\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = (ux >> 63);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return sx ? -x : x;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy\nconst PIO2_TABLE: u64[] = [\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n];\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret((0x7F + (k >> 1)) << 23);\n return NativeMathf.exp(x - kln2) * scale * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n const bits = PIO2_TABLE;\n\n var offset = (u >> 23) - 152;\n var index = offset >> 6;\n var shift = offset & 63;\n\n var b0 = unchecked(bits[index + 0]);\n var b1 = unchecked(bits[index + 1]);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = unchecked(bits[index + 2]);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product: u64 = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q: i32 = ((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const pi2hi = reinterpret(0x3FF921FB50000000); // 1.57079631090164184570\n const pi2lo = reinterpret(0x3E5110B4611A6263); // 1.58932547735281966916e-8\n const _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { /* π * 0x1p28 */\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const S1 = reinterpret(0xBFC5555554CBAC77); // -0x15555554cbac77.0p-55\n const S2 = reinterpret(0x3F811110896EFBB2); // 0x111110896efbb2.0p-59\n const S3 = reinterpret(0xBF2A00F9E2CAE774); // -0x1a00f9e2cae774.0p-65\n const S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return ((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const C0 = reinterpret(0xBFDFFFFFFD0C5E81); // -0x1ffffffd0c5e81.0p-54\n const C1 = reinterpret(0x3FA55553E1053A42); // 0x155553e1053a42.0p-57\n const C2 = reinterpret(0xBF56C087E80F1E27); // -0x16c087e80f1e27.0p-62\n const C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return (((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n\n const T0 = reinterpret(0x3FD5554D3418C99F); /* 0x15554d3418c99f.0p-54 */\n const T1 = reinterpret(0x3FC112FD38999F72); /* 0x1112fd38999f72.0p-55 */\n const T2 = reinterpret(0x3FAB54C91D865AFE); /* 0x1b54c91d865afe.0p-57 */\n const T3 = reinterpret(0x3F991DF3908C33CE); /* 0x191df3908c33ce.0p-58 */\n const T4 = reinterpret(0x3F685DADFCECF44E); /* 0x185dadfcecf44e.0p-61 */\n const T5 = reinterpret(0x3F8362B9BF971BCD); /* 0x1362b9bf971bcd.0p-59 */\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return (odd ? -1 / r : r);\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000);\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx >> 31) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) {\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (a < 0x3F800000 + (12 << 23)) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000);\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = (pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000);\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = (((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n switch (m) {\n case 0: return pi / 4;\n case 1: return -pi / 4;\n case 2: return 3 * pi / 4;\n case 3: return -3 * pi / 4;\n }\n } else {\n switch (m) {\n case 0: return 0;\n case 1: return -0;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const c1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const c2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const c3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n /* raise inexact if x != 0 */\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix > 0x4016cbe3) { /* |x| ~> 3π/4 */\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix > 0x40afeddf) { /* |x| ~> 7π/4 */\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n /* cos(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000);\n var hx = reinterpret(x);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx >= 0x42B17218) {\n if (!sign_) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n var hi: f32, lo: f32;\n var k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n var xx = x * x;\n var c = x - xx * (P1 + xx * P2);\n var y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x42B17180), // 8.8721679688e+01f\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign_ = (u >> 31);\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign_) return -1;\n if (x > o_threshold) {\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt((x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n var u = reinterpret(x);\n var k = 0;\n if (u < 0x00800000 || (u >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (u >> 31) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) return x;\n else if (u == 0x3F800000) return 0;\n u += 0x3F800000 - 0x3F3504F3;\n k += (u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ix = reinterpret(hi);\n ix &= 0xFFFFF000;\n hi = reinterpret(ix);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n var ix = reinterpret(x);\n var c: f32 = 0, f: f32 = 0;\n var k: i32 = 1;\n if (ix < 0x3ED413D0 || (ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = (iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k: i32 = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n var u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n var lo: f32 = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 { // see: musl/src/math/powf.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3F15C000), // 5.84960938e-01f\n dp_l1 = reinterpret(0x35D1CFDC), // 1.56322085e-06f\n two24 = reinterpret(0x4B800000), // 16777216f\n huge = reinterpret(0x7149F2CA), // 1.0e+30f\n tiny = reinterpret(0x0DA24260), // 1.0e-30f\n L1 = reinterpret(0x3F19999A), // 6.0000002384e-01f\n L2 = reinterpret(0x3EDB6DB7), // 4.2857143283e-01f\n L3 = reinterpret(0x3EAAAAAB), // 3.3333334327e-01f\n L4 = reinterpret(0x3E8BA305), // 2.7272811532e-01f\n L5 = reinterpret(0x3E6C3255), // 2.3066075146e-01f\n L6 = reinterpret(0x3E53F142), // 2.0697501302e-01f\n P1 = reinterpret(0x3E2AAAAB), // 1.6666667163e-01f\n P2 = reinterpret(0xBB360B61), // -2.7777778450e-03f\n P3 = reinterpret(0x388AB355), // 6.6137559770e-05f\n P4 = reinterpret(0xB5DDEA0E), // -1.6533901999e-06f\n P5 = reinterpret(0x3331BB4C), // 4.1381369442e-08f\n lg2 = reinterpret(0x3F317218), // 6.9314718246e-01f\n lg2_h = reinterpret(0x3F317200), // 6.93145752e-01f\n lg2_l = reinterpret(0x35BFBE8C), // 1.42860654e-06f\n ovt = reinterpret(0x3338AA3C), // 4.2995665694e-08f\n cp = reinterpret(0x3F76384F), // 9.6179670095e-01\n cp_h = reinterpret(0x3F764000), // 9.6191406250e-01\n cp_l = reinterpret(0xB8F623C6), // -1.1736857402e-04\n ivln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00\n ivln2_h = reinterpret(0x3FB8AA00), // 1.4426879883e+00\n ivln2_l = reinterpret(0x36ECA570), // 7.0526075433e-06\n inv3 = reinterpret(0x3EAAAAAB); // 0.333333333333\n var hx = reinterpret(x);\n var hy = reinterpret(y);\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if (iy == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3F800000) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if (ix > 0x7F800000 || iy > 0x7F800000) return x + y; // NaN if either arg is NaN\n var yisint = 0, j: i32, k: i32;\n if (hx < 0) {\n if (iy >= 0x4B800000) yisint = 2;\n else if (iy >= 0x3F800000) {\n k = (iy >> 23) - 0x7F;\n let ki = 23 - k;\n j = iy >> ki;\n if ((j << ki) == iy) yisint = 2 - (j & 1);\n }\n }\n if (iy == 0x7F800000) { // y is +-inf\n if (ix == 0x3F800000) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix > 0x3F800000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3F800000) return hy >= 0 ? x : 1.0 / x;\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3F000000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n var ax = builtin_abs(x);\n var z: f32;\n if (ix == 0x7F800000 || ix == 0 || ix == 0x3F800000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3F800000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n }\n else if (yisint == 1) z = -z;\n }\n return z;\n }\n var sn = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) sn = -1.0;\n }\n var t1: f32, t2: f32, r: f32, s: f32, t: f32, u: f32, v: f32, w: f32, p_h: f32, p_l: f32;\n var n: i32, is: i32;\n if (iy > 0x4D000000) {\n if (ix < 0x3F7FFFF8) return hy < 0 ? sn * huge * huge : sn * tiny * tiny;\n if (ix > 0x3F800007) return hy > 0 ? sn * huge * huge : sn * tiny * tiny;\n t = ax - 1;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = v - (t1 - u);\n } else {\n let s2: f32, s_h: f32, s_l: f32, t_h: f32, t_l: f32;\n n = 0;\n if (ix < 0x00800000) {\n ax *= two24;\n n -= 24;\n ix = reinterpret(ax);\n }\n n += (ix >> 23) - 0x7F;\n j = ix & 0x007FFFFF;\n ix = j | 0x3F800000;\n if (j <= 0x1CC471) k = 0;\n else if (j < 0x5DB3D7) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00800000;\n }\n ax = reinterpret(ix);\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n s = u * v;\n s_h = s;\n is = reinterpret(s_h);\n s_h = reinterpret(is & 0xFFFFF000);\n is = ((ix >> 1) & 0xFFFFF000) | 0x20000000;\n t_h = reinterpret(is + 0x00400000 + (k << 21));\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = s * s;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + s);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n is = reinterpret(t_h);\n t_h = reinterpret(is & 0xFFFFF000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * s;\n p_h = u + v;\n is = reinterpret(p_h);\n p_h = reinterpret(is & 0xFFFFF000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = (((z_h + z_l) + dp_h) + t);\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n is = reinterpret(y);\n var y1 = reinterpret(is & 0xFFFFF000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n j = reinterpret(z);\n if (j > 0x43000000) {\n return sn * huge * huge;\n } else if (j == 0x43000000) {\n if (p_l + ovt > z - p_h) return sn * huge * huge;\n } else if ((j & 0x7FFFFFFF) > 0x43160000) {\n return sn * tiny * tiny;\n } else if (j == 0xC3160000) {\n if (p_l <= z - p_h) return sn * tiny * tiny;\n }\n var i = j & 0x7FFFFFFF;\n k = (i >> 23) - 0x7F;\n n = 0;\n if (i > 0x3F000000) {\n n = j + (0x00800000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 23) - 0x7F;\n t = reinterpret(n & ~(0x007FFFFF >> k));\n n = ((n & 0x007FFFFF) | 0x00800000) >> (23 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n is = reinterpret(t);\n t = reinterpret(is & 0xFFFF8000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = reinterpret(z);\n j += n << 23;\n if ((j >> 23) <= 0) z = scalbn(z, n);\n else z = reinterpret(j);\n return sn * z;\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f32): f32 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n // @ts-ignore: type\n return ((reinterpret(x) >>> 31) & (x == x));\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const s2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var absx = reinterpret(u);\n var t: f32;\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n t = expm1(absx);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2f(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const t1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const t2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const t3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n /* tan(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* argument reduction */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx;\n return reinterpret(ux);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = (ux >> 31);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // q++;\n }\n return sx ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const s2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7fffffff;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n /* -sin(x + c) is not correct if x+c could be 0: -0 vs +0 */\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n\n switch (n & 3) {\n case 0: {\n sincos_sin = s;\n sincos_cos = c;\n break;\n }\n case 1: {\n sincos_sin = c;\n sincos_cos = -s;\n break;\n }\n case 2: {\n sincos_sin = -s;\n sincos_cos = -c;\n break;\n }\n case 3:\n default: {\n sincos_sin = -c;\n sincos_cos = s;\n break;\n }\n }\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 5) {\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i32): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 6) {\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow32f(x: f32, e: i32): f32 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out: f32 = 1;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n\nexport function ipow64f(x: f64, e: i32): f64 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out = 1.0;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n',memory:'import { memcmp, memmove, memset } from "./util/memory";\nimport { E_NOTIMPLEMENTED } from "./util/error";\n\n/** Memory manager interface. */\nexport namespace memory {\n\n /** Gets the size of the memory in pages. */\n // @ts-ignore: decorator\n @builtin\n export declare function size(): i32;\n\n /** Grows the memory by the given size in pages and returns the previous size in pages. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function grow(pages: i32): i32;\n\n /** Fills a section in memory with the specified byte value. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function fill(dst: usize, c: u8, n: usize): void {\n memset(dst, c, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Copies a section of memory to another. Has move semantics. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function copy(dst: usize, src: usize, n: usize): void {\n memmove(dst, src, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Initializes a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Drops a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function drop(segmentIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Repeats a section of memory at a specific address. */\n // @ts-ignore: decorator\n @unsafe\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void {\n var index: usize = 0;\n var total = srcLength * count;\n while (index < total) {\n memory.copy(dst + index, src, srcLength);\n index += srcLength;\n }\n }\n\n /** Compares a section of memory to another. */\n // @ts-ignore: decorator\n @inline\n export function compare(vl: usize, vr: usize, n: usize): i32 {\n return memcmp(vl, vr, n);\n }\n}\n',number:'import { itoa, dtoa } from "./util/number";\nimport { strtol } from "./util/string";\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const NaN: f64 = 0 / 0;\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const Infinity: f64 = 1 / 0;\n\nexport function isNaN(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value != value;\n}\n\nexport function isFinite(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value - value == 0;\n}\n\n@sealed @unmanaged\nexport abstract class I8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i8 = i8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i8 = i8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i8 {\n return strtol(value, radix);\n }\n\n toString(this: i8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i16 = i16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i16 = i16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i16 {\n return strtol(value, radix);\n }\n\n toString(this: i16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i32 = i32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i32 = i32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i32 {\n return strtol(value, radix);\n }\n\n toString(this: i32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i64 = i64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i64 = i64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i64 {\n return strtol(value, radix);\n }\n\n toString(this: i64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Isize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: isize = isize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: isize = isize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): isize {\n return strtol(value, radix);\n }\n\n toString(this: isize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u8 = u8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u8 = u8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u8 {\n return strtol(value, radix);\n }\n\n toString(this: u8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u16 = u16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u16 = u16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u16 {\n return strtol(value, radix);\n }\n\n toString(this: u16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u32 = u32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u32 = u32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u32 {\n return strtol(value, radix);\n }\n\n toString(this: u32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u64 = u64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u64 = u64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u64 {\n return strtol(value, radix);\n }\n\n toString(this: u64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Usize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: usize = usize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: usize = usize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): usize {\n return strtol(value, radix);\n }\n\n toString(this: usize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Bool {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: bool = bool.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: bool = bool.MAX_VALUE;\n\n toString(this: bool): String {\n // TODO: radix?\n return this ? "true" : "false";\n }\n}\n\nexport { Bool as Boolean };\n\n@sealed @unmanaged\nexport abstract class F32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f32 = f32.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f32 = f32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f32 = f32.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f32 = f32.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f32 = f32.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f32 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f32 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f32 = NaN;\n\n static isNaN(value: f32): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f32): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f32): bool {\n return abs(value) <= f32.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f32): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f32 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f32 {\n return parseFloat(value);\n }\n\n toString(this: f32): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class F64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f64 = f64.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f64 = f64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f64 = f64.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f64 = f64.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f64 = f64.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f64 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f64 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f64 = NaN;\n\n static isNaN(value: f64): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f64): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f64): bool {\n return abs(value) <= f64.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f64): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f64 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f64 {\n return parseFloat(value);\n }\n\n toString(this: f64, radix: i32 = 0): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\nexport { F64 as Number };\n',polyfills:"export function bswap(value: T): T {\n if (isInteger()) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n }\n if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n }\n if (sizeof() == 8) {\n let a = (value >> 8) & 0x00FF00FF00FF00FF;\n let b = (value & 0x00FF00FF00FF00FF) << 8;\n let v = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n }\n assert(false);\n return value;\n}\n\nexport function bswap16(value: T): T {\n if (isInteger() && sizeof() <= 4) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n } else if (sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n }\n assert(false);\n return value;\n}\n",regexp:'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',rt:'import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo";\nimport { E_INDEXOUTOFRANGE } from "./util/error";\nimport { BLOCK, BLOCK_OVERHEAD } from "./rt/common";\nimport { ArrayBufferView } from "./arraybuffer";\n\n// @ts-ignore: decorator\n@builtin\nexport declare const __rtti_base: usize;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_globals(cookie: u32): void;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_members(ref: usize, cookie: u32): void;\n\n// @ts-ignore: decorator\n@unsafe\nexport function __typeinfo(id: u32): TypeinfoFlags {\n var ptr = __rtti_base;\n if (id > load(ptr)) throw new Error(E_INDEXOUTOFRANGE);\n return changetype(ptr + sizeof() + id * offsetof()).flags;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __instanceof(ref: usize, superId: u32): bool { // keyword\n var id = changetype(ref - BLOCK_OVERHEAD).rtId;\n var ptr = __rtti_base;\n if (id <= load(ptr)) {\n do if (id == superId) return true;\n while (id = changetype(ptr + sizeof() + id * offsetof()).base);\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize {\n var array = __alloc(offsetof(), id);\n var bufferSize = length << alignLog2;\n var buffer = __alloc(bufferSize, idof());\n store(array, __retain(buffer), offsetof("data"));\n changetype(array).dataStart = buffer;\n changetype(array).dataLength = bufferSize;\n store(changetype(array), length, offsetof("length_"));\n if (data) memory.copy(buffer, data, bufferSize);\n return array;\n}\n\n// These are provided by the respective implementation, included as another entry file by asc:\n\n// @builtin @unsafe\n// export declare function __alloc(size: usize, id: u32): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __realloc(ref: usize, size: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __free(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __retain(ref: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __release(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __collect(): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __visit(ref: usize, cookie: u32): void;\n',"rt/common":"// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n\n// ╒════════════════ Common block layout (32-bit) ═════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime size │ -4\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ ... │ ref\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize; // WASM64 needs adaption\n /** Garbage collector info. */\n gcInfo: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD = (offsetof() + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n","rt/index-full":'export { __alloc } from "rt/tlsf";\nexport { __retain, __release, __collect } from "rt/pure";\nexport { __rtti_base } from "rt";\n',"rt/index-half":'import "rt/index-full";\n',"rt/index-none":'import "rt/index-stub";\n',"rt/index-stub":'export { __alloc, __retain, __release, __collect } from "rt/stub";\nexport { __rtti_base } from "rt";\n',"rt/pure":'import { DEBUG, BLOCK_OVERHEAD } from "rt/common";\nimport { Block, freeBlock, ROOT } from "rt/tlsf";\nimport { TypeinfoFlags } from "shared/typeinfo";\nimport { onincrement, ondecrement, onfree, onalloc } from "./rtrace";\n\n/////////////////////////// A Pure Reference Counting Garbage Collector ///////////////////////////\n// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf\n\n// ╒══════════════════════ GC Info structure ══════════════════════╕\n// │ 3 2 1 │\n// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│\n// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │B│color│ refCount │\n// └─┴─────┴───────────────────────────────────────────────────────┘\n// B: buffered\n\n// @ts-ignore: decorator\n@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1);\n// @ts-ignore: decorator\n@inline const COLOR_BITS = 3;\n// @ts-ignore: decorator\n@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS;\n// @ts-ignore: decorator\n@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1;\n\n// ╒════════╤═══════════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├────────┼──────────────────────────────────────────────────────┤\n// │ BLACK │ In use or free │\n// │ GRAY │ Possible member of cycle │\n// │ WHITE │ Member of garbage cycle │\n// │ PURPLE │ Possible root of cycle │\n// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │\n// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │\n// └────────┴──────────────────────────────────────────────────────┘\n// Acyclic detection has been decoupled, hence no GREEN.\n\n// @ts-ignore: decorator\n@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_RED: u32 = 4 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT;\n\n// @ts-ignore: decorator\n@inline const VISIT_DECREMENT = 1; // guard 0\n// @ts-ignore: decorator\n@inline const VISIT_MARKGRAY = 2;\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 3;\n// @ts-ignore: decorator\n@inline const VISIT_SCANBLACK = 4;\n// @ts-ignore: decorator\n@inline const VISIT_COLLECTWHITE = 5;\n\n// @ts-ignore: decorator\n@global @unsafe\nfunction __visit(ref: usize, cookie: i32): void {\n if (ref < __heap_base) return;\n var s = changetype(ref - BLOCK_OVERHEAD);\n switch (cookie) {\n case VISIT_DECREMENT: {\n decrement(s);\n break;\n }\n case VISIT_MARKGRAY: {\n if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0);\n s.gcInfo = s.gcInfo - 1;\n markGray(s);\n break;\n }\n case VISIT_SCAN: {\n scan(s);\n break;\n }\n case VISIT_SCANBLACK: {\n let info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if ((info & COLOR_MASK) != COLOR_BLACK) {\n scanBlack(s);\n }\n break;\n }\n case VISIT_COLLECTWHITE: {\n collectWhite(s);\n break;\n }\n default: if (DEBUG) assert(false);\n }\n}\n\n/** Increments the reference count of the specified block by one.*/\nfunction increment(s: Block): void {\n var info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if (isDefined(ASC_RTRACE)) onincrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n}\n\n/** Decrements the reference count of the specified block by one, possibly freeing it. */\nfunction decrement(s: Block): void {\n var info = s.gcInfo;\n var rc = info & REFCOUNT_MASK;\n if (isDefined(ASC_RTRACE)) ondecrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n if (rc == 1) {\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT);\n if (!(info & BUFFERED_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0;\n }\n } else {\n if (DEBUG) assert(rc > 0);\n if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) {\n s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1);\n if (!(info & BUFFERED_MASK)) {\n appendRoot(s);\n }\n } else {\n s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1);\n }\n }\n}\n\n/** Buffer of possible roots. */\n// @ts-ignore: decorator\n@lazy var ROOTS: usize;\n/** Current absolute offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var CUR: usize = 0;\n/** Current absolute end offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var END: usize = 0;\n\n/** Appends a block to possible roots. */\nfunction appendRoot(s: Block): void {\n var cur = CUR;\n if (cur >= END) {\n growRoots(); // TBD: either that or pick a default and force collection on overflow\n cur = CUR;\n }\n store(cur, s);\n CUR = cur + sizeof();\n}\n\n/** Grows the roots buffer if it ran full. */\nfunction growRoots(): void {\n var oldRoots = ROOTS;\n var oldSize = CUR - oldRoots;\n var newSize = max(oldSize * 2, 64 << alignof());\n var newRoots = __alloc(newSize, 0);\n if (isDefined(ASC_RTRACE)) onfree(changetype(newRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n memory.copy(newRoots, oldRoots, oldSize);\n if (oldRoots) {\n if (isDefined(ASC_RTRACE)) onalloc(changetype(oldRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n __free(oldRoots);\n }\n ROOTS = newRoots;\n CUR = newRoots + oldSize;\n END = newRoots + newSize;\n}\n\n/** Collects cyclic garbage. */\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n\n // markRoots\n var roots = ROOTS;\n var cur = roots;\n for (let pos = cur, end = CUR; pos < end; pos += sizeof()) {\n let s = load(pos);\n let info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) {\n markGray(s);\n store(cur, s);\n cur += sizeof();\n } else {\n if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = info & ~BUFFERED_MASK;\n }\n }\n }\n CUR = cur;\n\n // scanRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n scan(load(pos));\n }\n\n // collectRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n let s = load(pos);\n s.gcInfo = s.gcInfo & ~BUFFERED_MASK;\n collectWhite(s);\n }\n CUR = roots;\n}\n\n/** Marks a block as gray (possible member of cycle) during the collection phase. */\nfunction markGray(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) != COLOR_GRAY) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY);\n }\n}\n\n/** Scans a block during the collection phase, determining whether it is garbage or not. */\nfunction scan(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_GRAY) {\n if ((info & REFCOUNT_MASK) > 0) {\n scanBlack(s);\n } else {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN);\n }\n }\n}\n\n/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */\nfunction scanBlack(s: Block): void {\n s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK);\n}\n\n/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */\nfunction collectWhite(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE);\n freeBlock(ROOT, s);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n if (ref > __heap_base) increment(changetype(ref - BLOCK_OVERHEAD));\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n if (ref > __heap_base) decrement(changetype(ref - BLOCK_OVERHEAD));\n}\n',"rt/rtrace":'import { BLOCK } from "./common";\n\nexport declare function onalloc(s: BLOCK): void;\nexport declare function onincrement(s: BLOCK): void;\nexport declare function ondecrement(s: BLOCK): void;\nexport declare function onfree(s: BLOCK): void;\n',"rt/stub":'import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common";\n\n// @ts-ignore: decorator\n@lazy\nvar startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@lazy\nvar offset: usize = startOffset;\n\nfunction maybeGrowMemory(newOffset: usize): void {\n // assumes newOffset is aligned\n var pagesBefore = memory.size();\n var maxOffset = pagesBefore << 16;\n if (newOffset > maxOffset) {\n let pagesNeeded = ((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16;\n let pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory\n }\n }\n offset = newOffset;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __alloc(size: usize, id: u32): usize {\n if (size > BLOCK_MAXSIZE) unreachable();\n var ptr = offset + BLOCK_OVERHEAD;\n var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE);\n maybeGrowMemory(ptr + actualSize);\n var block = changetype(ptr - BLOCK_OVERHEAD);\n block.mmInfo = actualSize;\n if (DEBUG) block.gcInfo = -1;\n block.rtId = id;\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __realloc(ptr: usize, size: usize): usize {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n var actualSize = block.mmInfo;\n if (DEBUG) assert(block.gcInfo == -1);\n if (size > actualSize) {\n if (ptr + actualSize == offset) { // last block: grow\n if (size > BLOCK_MAXSIZE) unreachable();\n actualSize = (size + AL_MASK) & ~AL_MASK;\n maybeGrowMemory(ptr + actualSize);\n block.mmInfo = actualSize;\n } else { // copy to new block at least double the size\n actualSize = max((size + AL_MASK) & ~AL_MASK, actualSize << 1);\n let newPtr = __alloc(actualSize, block.rtId);\n memory.copy(newPtr, ptr, block.rtSize);\n block = changetype((ptr = newPtr) - BLOCK_OVERHEAD);\n }\n } else if (ptr + actualSize == offset) { // last block: shrink\n actualSize = (size + AL_MASK) & ~AL_MASK;\n offset = ptr + actualSize;\n block.mmInfo = actualSize;\n }\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __free(ptr: usize): void {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n if (DEBUG) assert(block.gcInfo == -1);\n if (ptr + block.mmInfo == offset) { // last block: discard\n offset = changetype(block);\n }\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nfunction __reset(): void { // special\n offset = startOffset;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ref: usize, cookie: u32): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n}\n',"rt/tlsf":"import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"rt/common\";\nimport { onfree, onalloc } from \"./rtrace\";\nimport { REFCOUNT_MASK } from \"./pure\";\n\n/////////////////////// The TLSF (Two-Level Segregate Fit) memory allocator ///////////////////////\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: usize = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: usize = (SL_BITS + AL_BITS);\n// @ts-ignore: decorator\n@inline const SB_SIZE: usize = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐\n// │ size │0│L│F│ ◄─┐ info\n// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │\n// │ │ │\n// │ ... additional runtime overhead ... │ │\n// │ │ │\n// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ = 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n let newSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = (blockInfo & TAGS_MASK) | newSize;\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n let newSize = (leftInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, left);\n left.mmInfo = blockInfo = (leftInfo & TAGS_MASK) | newSize;\n block = left;\n // 'back' is set below\n }\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) {\n assert(\n start <= end && // must be valid\n !(start & AL_MASK) && // must be aligned\n !(end & AL_MASK) // must be aligned\n );\n }\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n if (start - BLOCK_OVERHEAD == changetype(tail)) {\n start -= BLOCK_OVERHEAD;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - (BLOCK_OVERHEAD << 1);\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + size - BLOCK_OVERHEAD);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size >= BLOCK_MAXSIZE) throw new Error(\"allocation too large\");\n return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size\n}\n\n/** Initilizes the root structure. */\nexport function initializeRoot(): void {\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n addMemory(root, (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK, memory.size() << 16);\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = searchBlock(root, payloadSize);\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n block.gcInfo = 0; // RC=0\n // block.rtId = 0; // set by the caller (__alloc)\n block.rtSize = size;\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n if (DEBUG) {\n assert(\n !(blockInfo & FREE) && // must be used\n !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK\n );\n }\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= (blockInfo & ~TAGS_MASK)) {\n prepareBlock(root, block, payloadSize);\n block.rtSize = size;\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which\n // is immediately split though. does this trigger any assertions / issues?\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n block.rtSize = size;\n prepareBlock(root, block, payloadSize);\n return block;\n }\n }\n\n // otherwise move the block\n var newBlock = allocateBlock(root, size);\n newBlock.rtId = block.rtId;\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size);\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n assert(!(blockInfo & FREE)); // must be used (user might call through to this)\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize, id: u32): usize {\n var root = ROOT;\n if (!root) {\n initializeRoot();\n root = ROOT;\n }\n var block = allocateBlock(root, size);\n block.rtId = id;\n return changetype(block) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ref: usize, size: usize): usize {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n return changetype(reallocateBlock(ROOT, changetype(ref - BLOCK_OVERHEAD), size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ref: usize): void {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n freeBlock(ROOT, changetype(ref - BLOCK_OVERHEAD));\n}\n",set:'/// \n\nimport { HASH } from "./util/hash";\n\n// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a set entry. */\n@unmanaged class SetEntry {\n key: K;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K is <= 32-bits\n const align = (sizeof() > sizeof() ? sizeof() : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Set {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // SetEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() { this.clear(); }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: T, hashCode: u32): SetEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n @operator("[]")\n has(key: T): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n add(key: T): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (!entry) {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n entry = changetype>(changetype(this.entries) + this.entriesOffset++ * ENTRY_SIZE());\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n @operator("[]=")\n private __set(key: T, value: bool): void {\n if (value) this.add(key);\n else this.delete(key);\n }\n\n delete(key: T): bool {\n var entry = this.find(key, HASH(key)); // unmanaged!\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key)); // exact \'key\'\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr); // unmanaged!\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr); // unmanaged!\n newEntry.key = oldEntry.key;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n values(): T[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.key);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Set]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',"shared/feature":"// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","shared/target":"// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","shared/typeinfo":"// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n",string:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { compareImpl, strtol, strtod, isSpace } from "./util/string";\nimport { E_INVALIDLENGTH } from "./util/error";\nimport { ArrayBufferView } from "./arraybuffer";\nimport { idof } from "./builtins";\n\n@sealed export abstract class String {\n\n @lazy static readonly MAX_LENGTH: i32 = BLOCK_MAXSIZE >>> alignof();\n\n static fromCharCode(unit: i32, surr: i32 = -1): string {\n var hasSur = surr > 0;\n var out = __alloc(2 << i32(hasSur), idof());\n store(out, unit);\n if (hasSur) store(out, surr, 2);\n return changetype(out); // retains\n }\n\n static fromCodePoint(code: i32): string {\n assert(code <= 0x10FFFF);\n var hasSur = code > 0xFFFF;\n var out = __alloc(2 << i32(hasSur), idof());\n if (!hasSur) {\n store(out, code);\n } else {\n code -= 0x10000;\n let hi: u32 = (code >>> 10) + 0xD800;\n let lo: u32 = (code & 0x3FF) + 0xDC00;\n store(out, (hi << 16) | lo);\n }\n return changetype(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1;\n }\n\n @operator("[]") charAt(pos: i32): String {\n if (pos >= this.length) return changetype("");\n var out = __alloc(2, idof());\n store(out, load(changetype(this) + (pos << 1)));\n return changetype(out); // retains\n }\n\n charCodeAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (NaN)\n return load(changetype(this) + (pos << 1));\n }\n\n codePointAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (undefined)\n var first = load(changetype(this) + (pos << 1));\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) return first;\n var second = load(changetype(this) + ((pos + 1) << 1));\n if (second < 0xDC00 || second > 0xDFFF) return first;\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+") private static __concat(left: String, right: String): String {\n return select(left, changetype("null"), left !== null).concat(right);\n }\n\n concat(other: String): String {\n if (other === null) other = changetype("null");\n var thisSize: isize = this.length << 1;\n var otherSize: isize = other.length << 1;\n var outSize: usize = thisSize + otherSize;\n if (outSize == 0) return changetype("");\n var out = changetype(__alloc(outSize, idof())); // retains\n memory.copy(changetype(out), changetype(this), thisSize);\n memory.copy(changetype(out) + thisSize, changetype(other), otherSize);\n return out;\n }\n\n endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {\n if (search === null) return false;\n end = min(max(end, 0), this.length);\n var searchLength = search.length;\n var searchStart = end - searchLength;\n if (searchStart < 0) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n @operator("==") private static __eq(left: String | null, right: String | null): bool {\n if (left === right) return true;\n if (left === null || right === null) return false;\n var leftLength = left.length;\n if (leftLength != right.length) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(left, 0, right, 0, leftLength);\n }\n\n @operator.prefix("!")\n private static __not(str: String | null): bool {\n return str === null || !str.length;\n }\n\n @operator("!=")\n private static __ne(left: String | null, right: String | null): bool {\n return !this.__eq(left, right);\n }\n\n @operator(">") private static __gt(left: String | null, right: String | null): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!leftLength) return false;\n if (!rightLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0;\n }\n\n @operator(">=") private static __gte(left: String, right: String): bool {\n return !this.__lt(left, right);\n }\n\n @operator("<") private static __lt(left: String, right: String): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!rightLength) return false;\n if (!leftLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0;\n }\n\n @operator("<=") private static __lte(left: String, right: String): bool {\n return !this.__gt(left, right);\n }\n\n includes(search: String, start: i32 = 0): bool {\n return this.indexOf(search, start) != -1;\n }\n\n indexOf(search: String, start: i32 = 0): i32 {\n var searchLen = search.length;\n if (!searchLen) return 0;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len);\n for (len -= searchLen; searchStart <= len; ++searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n lastIndexOf(search: String, start: i32 = i32.MAX_VALUE): i32 {\n var searchLen = search.length;\n if (!searchLen) return this.length;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len - searchLen);\n for (; searchStart >= 0; --searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n startsWith(search: String, start: i32 = 0): bool {\n if (search === null) search = changetype("null");\n var len = this.length;\n var searchStart = min(max(start, 0), len);\n var searchLength = search.length;\n if (searchLength + searchStart > len) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) intStart = max(size + intStart, 0);\n var resultLength = min(max(end, 0), size - intStart);\n if (resultLength <= 0) return changetype("");\n var out = __alloc(resultLength << 1, idof());\n memory.copy(out, changetype(this) + intStart, resultLength);\n return changetype(out); // retains\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len: isize = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var fromPos = min(finalStart, finalEnd) << 1;\n var toPos = max(finalStart, finalEnd) << 1;\n len = toPos - fromPos;\n if (!len) return changetype("");\n if (!fromPos && toPos == this.length << 1) return this;\n var out = __alloc(len, idof());\n memory.copy(out, changetype(this) + fromPos, len);\n return changetype(out); // retains\n }\n\n trim(): String {\n var length = this.length;\n var size: usize = length << 1;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2; size -= 2;\n }\n if (!size) return changetype("");\n if (!offset && size == length << 1) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n @inline\n trimLeft(): String {\n return this.trimStart();\n }\n\n @inline\n trimRight(): String {\n return this.trimEnd();\n }\n\n trimStart(): String {\n var size = this.length << 1;\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2;\n }\n if (!offset) return this;\n size -= offset;\n if (!size) return changetype("");\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n trimEnd(): String {\n var originalSize = this.length << 1;\n var size = originalSize;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n if (!size) return changetype("");\n if (size == originalSize) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n return changetype(out); // retains\n }\n\n padStart(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var prependSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n if (prependSize > padSize) {\n let repeatCount = (prependSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = prependSize - restBase;\n memory.repeat(out, changetype(pad), padSize, repeatCount);\n memory.copy(out + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out, changetype(pad), prependSize);\n }\n memory.copy(out + prependSize, changetype(this), thisSize);\n return changetype(out); // retains\n }\n\n padEnd(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var appendSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n memory.copy(out, changetype(this), thisSize);\n if (appendSize > padSize) {\n let repeatCount = (appendSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = appendSize - restBase;\n memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount);\n memory.copy(out + thisSize + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out + thisSize, changetype(pad), appendSize);\n }\n return changetype(out); // retains\n }\n\n repeat(count: i32 = 0): String {\n var length = this.length;\n\n // Most browsers can\'t handle strings 1 << 28 chars or longer\n if (count < 0 || length * count > (1 << 28)) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n\n if (count == 0 || !length) return changetype("");\n if (count == 1) return this;\n var out = __alloc((length * count) << 1, idof());\n memory.repeat(out, changetype(this), length << 1, count);\n return changetype(out); // retains\n }\n\n replace(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var index: isize = this.indexOf(search);\n if (~index) {\n let rlen: usize = replacement.length;\n len -= slen;\n let olen = len + rlen;\n if (olen) {\n let out = __alloc(olen << 1, idof());\n memory.copy(out, changetype(this), index << 1);\n memory.copy(\n out + (index << 1),\n changetype(replacement),\n rlen << 1\n );\n memory.copy(\n out + ((index + rlen) << 1),\n changetype(this) + ((index + slen) << 1),\n (len - index) << 1\n );\n return changetype(out);\n }\n }\n return this;\n }\n\n replaceAll(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var rlen: usize = replacement.length;\n if (!slen) {\n if (!rlen) return this;\n // Special case: \'abc\'.replaceAll(\'\', \'-\') -> \'-a-b-c-\'\n let out = __alloc((len + (len + 1) * rlen) << 1, idof());\n memory.copy(out, changetype(replacement), rlen << 1);\n let offset = rlen;\n for (let i: usize = 0; i < len; ++i) {\n store(\n changetype(out) + (offset++ << 1),\n load(changetype(this) + (i << 1))\n );\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n }\n return changetype(out);\n }\n var prev: isize = 0, next: isize = 0;\n if (slen == rlen) {\n // Fast path when search and replacement have same length\n let size = len << 1;\n let out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n while (~(next = this.indexOf(search, prev))) {\n memory.copy(out + (next << 1), changetype(replacement), rlen << 1);\n prev = next + slen;\n }\n return changetype(out);\n }\n var out: usize = 0, offset: usize = 0, resLen = len;\n while (~(next = this.indexOf(search, prev))) {\n if (!out) out = __alloc(len << 1, idof());\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let chunk = next - prev;\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n chunk << 1\n );\n offset += chunk;\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n prev = next + slen;\n }\n if (offset) {\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let rest = len - prev;\n if (rest) {\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n rest << 1\n );\n }\n rest += offset;\n if (resLen > rest) out = __realloc(out, rest << 1);\n return changetype(out);\n }\n return this;\n }\n\n slice(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len = this.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end, len);\n len = end - start;\n if (len <= 0) return changetype("");\n var out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n return changetype(out); // retains\n }\n\n split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {\n if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n if (separator === null) return [this];\n var length: isize = this.length;\n var sepLen: isize = separator.length;\n if (limit < 0) limit = i32.MAX_VALUE;\n if (!sepLen) {\n if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n // split by chars\n length = min(length, limit);\n let result = __allocArray(length, alignof(), idof>());\n let resultStart = changetype(result).dataStart;\n for (let i: isize = 0; i < length; ++i) {\n let charStr = __alloc(2, idof());\n store(charStr, load(changetype(this) + (i << 1)));\n store(resultStart + (i << alignof()), charStr); // result[i] = charStr\n if (isManaged()) __retain(charStr);\n }\n return changetype>(result); // retains\n } else if (!length) {\n let result = __allocArray(1, alignof(), idof>());\n store(changetype(result).dataStart, changetype("")); // static ""\n return changetype>(result); // retains\n }\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n var end = 0, start = 0, i = 0;\n while (~(end = this.indexOf(separator, start))) {\n let len = end - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out));\n } else {\n result.push(changetype(""));\n }\n if (++i == limit) return changetype>(result); // retains\n start = end + sepLen;\n }\n if (!start) { // also means: loop above didn\'t do anything\n result.push(this);\n return changetype>(result); // retains\n }\n var len = length - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out)); // retains\n } else {\n result.push(changetype("")); // static ""\n }\n return changetype>(result); // retains\n // releases result\n }\n\n toString(): String {\n return this;\n }\n}\n\n// @ts-ignore: nolib\nexport type string = String;\n\nexport function parseInt(str: string, radix: i32 = 0): f64 {\n return strtol(str, radix);\n}\n\nexport function parseFloat(str: string): f64 {\n return strtod(str);\n}\n\n// Encoding helpers\nexport namespace String {\n\n export namespace UTF8 {\n\n export function byteLength(str: string, nullTerminated: bool = false): i32 {\n var strOff = changetype(str);\n var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var bufLen = nullTerminated ? 1 : 0;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n bufLen += 1; strOff += 2;\n } else if (c1 < 2048) {\n bufLen += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n if ((load(strOff, 2) & 0xFC00) == 0xDC00) {\n strOff += 4; bufLen += 4;\n continue;\n }\n }\n strOff += 2; bufLen += 3;\n }\n }\n return bufLen;\n }\n\n export function encode(str: string, nullTerminated: bool = false): ArrayBuffer {\n var strOff = changetype(str);\n var strEnd = changetype(str) + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(UTF8.byteLength(str, nullTerminated), idof());\n var bufOff = buf;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n store(bufOff, c1);\n bufOff += 1; strOff += 2;\n } else if (c1 < 2048) {\n store(bufOff, c1 >> 6 | 192);\n store(bufOff, c1 & 63 | 128, 1);\n bufOff += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n let c2 = load(strOff, 2);\n if ((c2 & 0xFC00) == 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n store(bufOff, c1 >> 18 | 240);\n store(bufOff, c1 >> 12 & 63 | 128, 1);\n store(bufOff, c1 >> 6 & 63 | 128, 2);\n store(bufOff, c1 & 63 | 128, 3);\n strOff += 4; bufOff += 4;\n continue;\n }\n }\n store(bufOff, c1 >> 12 | 224);\n store(bufOff, c1 >> 6 & 63 | 128, 1);\n store(bufOff, c1 & 63 | 128, 2);\n strOff += 2; bufOff += 3;\n }\n }\n if (nullTerminated) {\n assert(strOff <= strEnd);\n buf = __realloc(buf, bufOff - buf + 1);\n store(bufOff, 0);\n } else {\n assert(strOff == strEnd);\n }\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer, nullTerminated: bool = false): string {\n return decodeUnsafe(changetype(buf), buf.byteLength, nullTerminated);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated: bool = false): string {\n var bufOff = buf;\n var bufEnd = buf + len;\n assert(bufEnd >= bufOff); // guard wraparound\n var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte\n var strOff = str;\n while (bufOff < bufEnd) {\n let cp = load(bufOff++);\n if (cp < 128) {\n if (nullTerminated && !cp) break;\n store(strOff, cp);\n strOff += 2;\n } else if (cp > 191 && cp < 224) {\n if (bufEnd - bufOff < 1) break;\n store(strOff, (cp & 31) << 6 | load(bufOff++) & 63);\n strOff += 2;\n } else if (cp > 239 && cp < 365) {\n if (bufEnd - bufOff < 3) break;\n cp = (\n (cp & 7) << 18 |\n (load(bufOff) & 63) << 12 |\n (load(bufOff, 1) & 63) << 6 |\n load(bufOff, 2) & 63\n ) - 0x10000;\n bufOff += 3;\n store(strOff, 0xD800 + (cp >> 10));\n store(strOff, 0xDC00 + (cp & 1023), 2);\n strOff += 4;\n } else {\n if (bufEnd - bufOff < 2) break;\n store(strOff,\n (cp & 15) << 12 |\n (load(bufOff) & 63) << 6 |\n load(bufOff, 1) & 63\n );\n bufOff += 2; strOff += 2;\n }\n }\n return changetype(__realloc(str, strOff - str)); // retains\n }\n }\n\n export namespace UTF16 {\n\n export function byteLength(str: string): i32 {\n return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n }\n\n export function encode(str: string): ArrayBuffer {\n var size = changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(size, idof());\n memory.copy(buf, changetype(str), size);\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer): string {\n return decodeUnsafe(changetype(buf), buf.byteLength);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize): string {\n var str = __alloc(len &= ~1, idof());\n memory.copy(str, buf, len);\n return changetype(str); // retains\n }\n }\n}\n',symbol:'import { Map } from "./map";\n\n// @ts-ignore: decorator\n@lazy\nvar stringToId: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar idToString: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar nextId: usize = 12; // Symbol.unscopables + 1\n\n@unmanaged @sealed abstract class _Symbol {\n\n // TODO: all of the following default symbols are unused currently yet add to\n // binary size if #toString becomes compiled. Ultimately we\'ll most likely want\n // to remove the unsupported ones and only keep what\'s actually supported.\n\n // @ts-ignore: decorator\n @lazy\n static readonly hasInstance: symbol = changetype(1);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isConcatSpreadable: symbol = changetype(2);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isRegExp: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly iterator: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly match: symbol = changetype(4);\n\n // @ts-ignore: decorator\n @lazy\n static readonly replace: symbol = changetype(5);\n\n // @ts-ignore: decorator\n @lazy\n static readonly search: symbol = changetype(6);\n\n // @ts-ignore: decorator\n @lazy\n static readonly species: symbol = changetype(7);\n\n // @ts-ignore: decorator\n @lazy\n static readonly split: symbol = changetype(8);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toPrimitive: symbol = changetype(9);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toStringTag: symbol = changetype(10);\n\n // @ts-ignore: decorator\n @lazy\n static readonly unscopables: symbol = changetype(11);\n\n static for(key: string): symbol {\n if (!stringToId) { stringToId = new Map(); idToString = new Map(); }\n else if (stringToId.has(key)) return changetype(stringToId.get(key));\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n stringToId.set(key, id);\n idToString.set(id, key);\n return changetype(id);\n }\n\n static keyFor(sym: symbol): string | null {\n return idToString !== null && idToString.has(changetype(sym))\n ? idToString.get(changetype(sym))\n : null;\n }\n\n toString(): string {\n var id = changetype(this);\n var str = "";\n switch (id) {\n case 1: { str = "hasInstance"; break; }\n case 2: { str = "isConcatSpreadable"; break; }\n case 3: { str = "isRegExp"; break; }\n case 4: { str = "match"; break; }\n case 5: { str = "replace"; break; }\n case 6: { str = "search"; break; }\n case 7: { str = "species"; break; }\n case 8: { str = "split"; break; }\n case 9: { str = "toPrimitive"; break; }\n case 10: { str = "toStringTag"; break; }\n case 11: { str = "unscopables"; break; }\n default: {\n if (idToString !== null && idToString.has(id)) str = idToString.get(id);\n break;\n }\n }\n return "Symbol(" + str + ")";\n }\n}\n\nexport function Symbol(description: string | null = null): symbol {\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n return changetype(id);\n}\n\nexport type Symbol = _Symbol;\n\n// @ts-ignore: nolib\nexport type symbol = _Symbol;\n',table:'import { E_NOTIMPLEMENTED } from "./util/error";\n\nexport namespace table {\n\n export function copy(dst: u32, src: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function drop(elementIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n}\n',typedarray:'import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\nimport { idof } from "./builtins";\nimport { ArrayBufferView } from "./arraybuffer";\n\nexport class Int8Array extends ArrayBufferView {\n [key: number]: i8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): i8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: i8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8Array extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8ClampedArray extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return FILL(this, value, start, end);\n }\n\n sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray {\n return SORT(this, fn);\n }\n\n subarray(start: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray {\n return SUBARRAY(this, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int16Array extends ArrayBufferView {\n [key: number]: i16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint16Array extends ArrayBufferView {\n [key: number]: u16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int32Array extends ArrayBufferView {\n [key: number]: i32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint32Array extends ArrayBufferView {\n [key: number]: u32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int64Array extends ArrayBufferView {\n [key: number]: i64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint64Array extends ArrayBufferView {\n [key: number]: u64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float32Array extends ArrayBufferView {\n [key: number]: f32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float64Array extends ArrayBufferView {\n [key: number]: f64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILL(\n array: TArray,\n value: native,\n start: i32,\n end: i32\n): TArray {\n var dataStart = array.dataStart;\n var length = array.length;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (sizeof() == 1) {\n if (start < end) memory.fill(dataStart + start, value, (end - start));\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SORT(\n array: TArray,\n comparator: (a: T, b: T) => i32\n): TArray {\n var length = array.length;\n if (length <= 1) return array;\n var base = array.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b\n store(base, a); // arr[0] = a\n }\n return array;\n }\n SORT_IMPL(base, length, comparator);\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SUBARRAY(\n array: TArray,\n begin: i32,\n end: i32\n): TArray {\n var len = array.length;\n begin = begin < 0 ? max(len + begin, 0) : min(begin, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n end = max(end, begin);\n var out = changetype(__alloc(offsetof(), idof())); // retains\n out.data = array.data; // retains\n out.dataStart = array.dataStart + (begin << alignof());\n out.dataLength = (end - begin) << alignof();\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE_RIGHT(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = array.length - 1; i >= 0; i--) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction MAP(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => T,\n): TArray {\n var length = array.length;\n var dataStart = array.dataStart;\n var out = instantiate(length);\n var outDataStart = out.dataStart;\n for (let i = 0; i < length; i++) {\n store(\n outDataStart + (i << alignof()),\n fn(load(dataStart + (i << alignof())), i, array)\n );\n }\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FIND_INDEX(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): i32 {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return i;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INCLUDES(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): bool {\n return INDEX_OF(array, searchElement, fromIndex) >= 0;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0 || index >= length) return -1;\n if (index < 0) index = max(length + index, 0);\n var dataStart = array.dataStart;\n while (index < length) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n ++index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction LAST_INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0) return -1;\n if (index < 0) index = length + index; // no need to clamp\n else if (index >= length) index = length - 1;\n var dataStart = array.dataStart;\n while (index >= 0) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n --index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SOME(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return true;\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction EVERY(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) continue;\n return false;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FOREACH(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => void,\n): void {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n fn(load(dataStart + (i << alignof())), i, array);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REVERSE(array: TArray): TArray {\n var dataStart = array.dataStart;\n for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) {\n let frontPtr = dataStart + (front << alignof());\n let backPtr = dataStart + (back << alignof());\n let temp = load(frontPtr);\n store(frontPtr, load(backPtr));\n store(backPtr, temp);\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction WRAP(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): TArray {\n var bufferByteLength = buffer.byteLength;\n if (byteOffset >= bufferByteLength) {\n throw new RangeError(E_INDEXOUTOFRANGE);\n }\n var byteLength: i32;\n if (length < 0) {\n if (length == -1) {\n const mask = (1 << alignof() - 1);\n if (buffer.byteLength & mask) {\n throw new RangeError(E_INVALIDLENGTH);\n } else {\n byteLength = buffer.byteLength;\n }\n } else {\n throw new RangeError(E_INVALIDLENGTH);\n }\n } else {\n byteLength = length << alignof();\n }\n if (byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n var out = changetype(__alloc(offsetof(), idof()));\n out.data = buffer;\n out.dataLength = byteLength;\n out.dataStart = changetype(buffer) + byteOffset;\n return out;\n}\n',"util/error":'// Common error messages for use accross the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = "Index out of range";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = "Invalid length";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = "Array is empty";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = "Element type must be nullable if array is holey";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = "Not implemented";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = "Key does not exist";\n',"util/hash":"// @ts-ignore: decorator\n@inline\nexport function HASH(key: T): u32 {\n if (isString()) {\n return hashStr(changetype(key));\n } else if (isReference()) {\n if (sizeof() == 4) return hash32(changetype(key));\n if (sizeof() == 8) return hash64(changetype(key));\n } else if (isFloat()) {\n if (sizeof() == 4) return hash32(reinterpret(f32(key)));\n if (sizeof() == 8) return hash64(reinterpret(f64(key)));\n } else {\n if (sizeof() == 1) return hash8 (u32(key));\n if (sizeof() == 2) return hash16(u32(key));\n if (sizeof() == 4) return hash32(u32(key));\n if (sizeof() == 8) return hash64(u64(key));\n }\n return unreachable();\n}\n\n// FNV-1a 32-bit as a starting point, see: http://isthe.com/chongo/tech/comp/fnv/\n\n// @ts-ignore: decorator\n@inline\nconst FNV_OFFSET: u32 = 2166136261;\n\n// @ts-ignore: decorator\n@inline\nconst FNV_PRIME: u32 = 16777619;\n\nfunction hash8(key: u32): u32 {\n return (FNV_OFFSET ^ key) * FNV_PRIME;\n}\n\nfunction hash16(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 8 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash32(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash64(key: u64): u32 {\n var l = key;\n var h = (key >>> 32);\n var v = FNV_OFFSET;\n v = (v ^ ( l & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( l >> 24 )) * FNV_PRIME;\n v = (v ^ ( h & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( h >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hashStr(key: string): u32 {\n var v = FNV_OFFSET;\n if (key !== null) {\n for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) {\n v = (v ^ load(changetype(key) + i)) * FNV_PRIME;\n }\n }\n return v;\n}\n","util/memory":"export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n let w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 2: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 3: {\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c\n if (dest === src) return;\n if (ASC_SHRINK_LEVEL < 1) {\n if (src + n <= dest || dest + n <= src) {\n memcpy(dest, src, n);\n return;\n }\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, c);\n --n;\n }\n } else {\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n let k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n let c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n let c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c\n if (vl == vr) return 0;\n while (n != 0 && load(vl) == load(vr)) {\n n--; vl++; vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","util/number":'/// \n\nimport { idof } from "../builtins";\nimport { CharCode } from "./string";\nimport { ArrayBufferView } from "../arraybuffer";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline\nconst POWERS10: u32[] = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\n "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\n "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\n "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\n "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\n "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\n "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\n "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\n "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\n "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"\n*/\n// @ts-ignore: decorator\n@lazy @inline\nconst DIGITS: u32[] = [\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n];\n\n// @ts-ignore: decorator\n@lazy @inline\nconst EXP_POWERS: i16[] = [\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n];\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline\nconst FRC_POWERS: u64[] = [\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n];\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return select(1, 2, value < 10);\n } else {\n let m = select(4, 5, value < 10000);\n return select(3, m, value < 1000);\n }\n } else {\n if (value < 10000000) {\n return select(6, 7, value < 1000000);\n } else {\n let m = select(9, 10, value < 1000000000);\n return select(8, m, value < 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n let m = select(11, 12, value < 100000000000);\n return select(10, m, value < 10000000000);\n } else {\n let m = select(14, 15, value < 100000000000000);\n return select(13, m, value < 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return select(16, 17, value < 10000000000000000);\n } else {\n let m = select(19, 20, value < 10000000000000000000);\n return select(18, m, value < 1000000000000000000);\n }\n }\n}\n\nfunction utoa32_lut(buffer: usize, num: u32, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(lut + (d1 << alignof()));\n let digits2 = load(lut + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(lut + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(lut + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_lut(buffer: usize, num: u64, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(lut + (c1 << alignof()));\n let digits2 = load(lut + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(lut + (b1 << alignof()));\n digits2 = load(lut + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_lut(buffer, num, offset);\n}\n\nfunction utoa_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset -= 1;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_core(buffer: usize, num: u32, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa32_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa64_core(buffer: usize, num: u64, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa64_lut(buffer, num, offset);\n }\n}\n\nexport function utoa32(value: u32): String {\n if (!value) return "0";\n\n var decimals = decimalCount32(value);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n return changetype(out); // retains\n}\n\nexport function itoa32(value: i32): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var decimals = decimalCount32(value) + u32(sign);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n if (sign) store(out, CharCode.MINUS);\n return changetype(out); // retains\n}\n\nexport function utoa64(value: u64): String {\n if (!value) return "0";\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n return changetype(out); // retains\n}\n\nexport function itoa64(value: i64): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n if (sign) store(out, CharCode.MINUS);\n\n return changetype(out); // retains\n}\n\nexport function itoa(value: T): String {\n if (!isInteger()) ERROR("integer type expected");\n if (isSigned()) {\n if (sizeof() <= 4) {\n return itoa32(value);\n } else {\n return itoa64(value);\n }\n } else {\n if (sizeof() <= 4) {\n return utoa32(value);\n } else {\n return utoa64(value);\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = unchecked(FRC_POWERS[index]);\n _exp_pow = unchecked(EXP_POWERS[index]);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = ((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp != 0) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n var wp_w_exp = mp_exp;\n\n var p1 = (mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n var lut = changetype(POWERS10).dataStart;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(lut + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (1) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(lut + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n\n return len;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nexport function dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\nexport function dtoa(value: f64): String {\n if (value == 0) return "0.0";\n if (!isFinite(value)) {\n if (isNaN(value)) return "NaN";\n return select("-Infinity", "Infinity", value < 0);\n }\n var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof());\n var length = dtoa_core(buffer, value);\n if (length == MAX_DOUBLE_LENGTH) return changetype(buffer);\n var result = changetype(buffer).substring(0, length);\n __free(buffer);\n return result;\n}\n\nexport function itoa_stream(buffer: usize, offset: usize, value: T): u32 {\n buffer += (offset << 1);\n if (!value) {\n store(buffer, CharCode._0);\n return 1;\n }\n var decimals: u32 = 0;\n if (isSigned()) {\n let sign = i32(value < 0);\n if (sign) value = changetype(-value);\n if (sizeof() <= 4) {\n decimals = decimalCount32(value) + sign;\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32) + sign;\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value) + sign;\n utoa64_core(buffer, value, decimals);\n }\n }\n if (sign) store(buffer, CharCode.MINUS);\n } else {\n if (sizeof() <= 4) {\n decimals = decimalCount32(value);\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value);\n utoa64_core(buffer, value, decimals);\n }\n }\n }\n return decimals;\n}\n\nexport function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {\n buffer += (offset << 1);\n if (value == 0.0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = i32(value < 0);\n let len = 8 + sign;\n memory.copy(buffer, changetype(select("-Infinity", "Infinity", sign)), len << 1);\n return len;\n }\n }\n return dtoa_core(buffer, value);\n}\n',"util/sort":'import { compareImpl } from "./string";\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): (a: T, b: T) => i32 {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a: T, b: T): i32 => (i32(a) - i32(b));\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= (ia >> 31) >>> 1;\n ib ^= (ib >> 31) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= (ia >> 63) >>> 1;\n ib ^= (ib >> 63) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a: T, b: T): i32 => {\n if (a === b || a === null || b === null) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!alen && !blen) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n return compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen));\n };\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function SORT(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n if (isReference()) {\n // TODO replace this to faster stable sort (TimSort) when it implemented\n insertionSort(dataStart, length, comparator);\n } else {\n if (length < 256) {\n insertionSort(dataStart, length, comparator);\n } else {\n weakHeapSort(dataStart, length, comparator);\n }\n }\n}\n\nfunction insertionSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n for (let i = 0; i < length; i++) {\n let a: T = load(dataStart + (i << alignof())); // a = arr[i]\n let j = i - 1;\n while (j >= 0) {\n let b: T = load(dataStart + (j << alignof())); // b = arr[j]\n if (comparator(a, b) < 0) {\n store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b\n } else break;\n }\n store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a\n }\n}\n\nfunction weakHeapSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n const shift32 = alignof();\n\n var bitsetSize = (length + 31) >> 5 << shift32;\n var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below\n memory.fill(bitset, 0, bitsetSize);\n\n // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf\n\n for (let i = length - 1; i > 0; i--) {\n let j = i;\n while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1;\n\n let p = j >> 1;\n let a: T = load(dataStart + (p << alignof())); // a = arr[p]\n let b: T = load(dataStart + (i << alignof())); // b = arr[i]\n if (comparator(a, b) < 0) {\n store(\n bitset + (i >> 5 << shift32),\n load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31))\n );\n store(dataStart + (i << alignof()), a); // arr[i] = a\n store(dataStart + (p << alignof()), b); // arr[p] = b\n }\n }\n\n for (let i = length - 1; i >= 2; i--) {\n let a: T = load(dataStart); // a = arr[0]\n store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i]\n store(dataStart + (i << alignof()), a); // arr[i] = a\n\n let x = 1, y: i32;\n while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y;\n\n while (x > 0) {\n a = load(dataStart); // a = arr[0]\n let b: T = load(dataStart + (x << alignof())); // b = arr[x]\n\n if (comparator(a, b) < 0) {\n store(\n bitset + (x >> 5 << shift32),\n load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31))\n );\n store(dataStart + (x << alignof()), a); // arr[x] = a\n store(dataStart, b); // arr[0] = b\n }\n x >>= 1;\n }\n }\n\n __free(bitset);\n\n var t: T = load(dataStart, sizeof()); // t = arr[1]\n store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0]\n store(dataStart, t); // arr[0] = t\n}\n',"util/string":"export function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var result = 0;\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n while (len && !(result = load(ptr1) - load(ptr2))) {\n --len, ptr1 += 2, ptr2 += 2;\n }\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function isSpace(c: i32): bool {\n if (c <= 0xFF) {\n switch (c) {\n case 0x09: // \n case 0x0A: // \n case 0x0B: // \n case 0x0C: // \n case 0x0D: // \n case 0x20: // \n case 0xA0: return true; // \n }\n return false;\n }\n if (c >= 0x2000 && c <= 0x200A) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // determine sign\n // @ts-ignore: cast\n var sign: T = 1;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n // @ts-ignore: type\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2)) {\n case CharCode.B:\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.O:\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.X:\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n default: radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n while (len--) {\n code = load(ptr);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else break;\n if (code >= radix) break;\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\n// FIXME: naive implementation\nexport function strtod(str: string): f64 {\n var len: i32 = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n // determine sign\n var sign = 1.0;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1.0;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // calculate value\n var num = 0.0;\n while (len--) {\n code = load(ptr);\n if (code == CharCode.DOT) {\n ptr += 2;\n let fac = 0.1; // precision :(\n while (len--) {\n code = load(ptr);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) break;\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) break;\n num = num * 10 + code;\n ptr += 2;\n }\n return sign * num;\n}\n",vector:"/** Vector abstraction. */\n@sealed @unmanaged\nexport abstract class V128 {\n}\n"}):(()=>{const e=path.join(".","..","std","assembly"),n=__webpack_require__(!function(){var e=new Error("Cannot find module 'glob'");throw e.code="MODULE_NOT_FOUND",e}()).sync("**/!(*.d).ts",{cwd:e}),t={nearEntry:fs.readFileSync(nearLibEntry,"utf8")};return n.forEach(n=>t[n.replace(/\.ts$/,"")]=fs.readFileSync(path.join(e,n),"utf8")),t})(),exports.definitionFiles=exports.isBundle?Object({assembly:'/**\n * Environment definitions for compiling AssemblyScript to WebAssembly using asc.\n * @module std/assembly\n *//***/\n\n/// \n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = boolean | number;\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n/** A 128-bit vector. */\ndeclare type v128 = object;\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n/** Whether the bulk memory feature is enabled. */\ndeclare const ASC_FEATURE_BULK_MEMORY: bool;\n/** Whether the SIMD feature is enabled. */\ndeclare const ASC_FEATURE_SIMD: bool;\n/** Whether the threads feature is enabled. */\ndeclare const ASC_FEATURE_THREADS: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, immOffset?: usize, immAlign?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const __heap_base: usize;\n/** Determines the byte size of the specified underlying core type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Determines the alignment (log2) of the specified underlying core type. Compiles to a constant. */\ndeclare function alignof(): usize;\n/** Determines the end offset of the given class type. Compiles to a constant. */\ndeclare function offsetof(): usize;\n/** Determines the offset of the specified field within the given class type. Compiles to a constant. */\ndeclare function offsetof(fieldName: keyof T | string): usize;\n/** Determines the offset of the specified field within the given class type. Returns the class type\'s end offset if field name has been omitted. Compiles to a constant. */\ndeclare function offsetof(fieldName?: string): usize;\n/** Determines the name of a given type. */\ndeclare function nameof(value?: T): string;\n/** Determines the unique runtime id of a class type. Compiles to a constant. */\ndeclare function idof(): u32;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Emits a `call_indirect` instruction, calling the specified function in the function table by index with the specified arguments. Does result in a runtime error if the arguments do not match the called function. */\ndeclare function call_indirect(target: Function | u32, ...args: any[]): T;\n/** Emits a `call` instruction, calling the specified function in the function table directly with the specified arguments. Function index must be a compile-time constant. */\ndeclare function call_direct(target: Function | u32, ...args: any[]): T;\n/** Instantiates a new instance of `T` using the specified constructor arguments. */\ndeclare function instantiate(...args: any[]): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */\ndeclare function isInteger(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */\ndeclare function isFloat(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a boolean type. */\ndeclare function isBoolean(value?: any): value is number;\n/** Tests if the specified type *or* expression can represent negative numbers. Compiles to a constant. */\ndeclare function isSigned(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a reference type. Compiles to a constant. */\ndeclare function isReference(value?: any): value is object | string;\n/** Tests if the specified type *or* expression can be used as a string. Compiles to a constant. */\ndeclare function isString(value?: any): value is string | String;\n/** Tests if the specified type *or* expression can be used as an array. Compiles to a constant. */\ndeclare function isArray(value?: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. Compiles to a constant. */\ndeclare function isArrayLike(value?: any): value is ArrayLike;\n/** Tests if the specified type *or* expression is of a function type. Compiles to a constant. */\ndeclare function isFunction(value?: any): value is (...args: any) => any;\n/** Tests if the specified type *or* expression is of a nullable reference type. Compiles to a constant. */\ndeclare function isNullable(value?: any): bool;\n/** Tests if the specified expression resolves to a defined element. Compiles to a constant. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. Compiles to a constant. */\ndeclare function isConstant(expression: any): bool;\n/** Tests if the specified type *or* expression is of a managed type. Compiles to a constant. */\ndeclare function isManaged(value?: any): bool;\n/** Tests if the specified type is void. Compiles to a constant. */\ndeclare function isVoid(): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n/** Returns the number of parameters in the given function signature type. */\ndeclare function lengthof any>(func?: T): i32;\n\n/** Atomic operations. */\ndeclare namespace atomic {\n /** Atomically loads an integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): T;\n /** Atomically stores an integer value to memory. */\n export function store(offset: usize, value: T, immOffset?: usize): void;\n /** Atomically adds an integer value in memory. */\n export function add(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically subtracts an integer value in memory. */\n export function sub(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise AND operation on an integer value in memory. */\n export function and(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise OR operation on an integer value in memory. */\n export function or(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise XOR operation on an integer value in memory. */\n export function xor(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically exchanges an integer value in memory. */\n export function xchg(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically compares and exchanges an integer value in memory if the condition is met. */\n export function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n /** Performs a wait operation on an address in memory suspending this agent if the integer condition is met. */\n export function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n /** Performs a notify operation on an address in memory waking up suspended agents. */\n export function notify(ptr: usize, count: i32): i32;\n}\n\n/** Describes the result of an atomic wait operation. */\ndeclare enum AtomicWaitResult {\n /** Woken by another agent. */\n OK,\n /** Loaded value did not match the expected value. */\n NOT_EQUAL,\n /** Not woken before the timeout expired. */\n TIMED_OUT\n}\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i8;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Loads an 8-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 32-bit integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 32-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 32-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i32;\n /** Atomically stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize): void;\n /** Performs a wait operation on a 32-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n /** Atomic 32-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 32-bit integer value in memory. */\n export function add(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts a 32-bit integer value in memory. */\n export function sub(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 32-bit integer value in memory. */\n export function and(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 32-bit integer value in memory. */\n export function or(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 32-bit integer value in memory. */\n export function xor(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 32-bit integer value in memory. */\n export function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 32-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: any): i64;\ndeclare namespace i64 {\n /** Smallest representable value. */\n export const MIN_VALUE: i64;\n /** Largest representable value. */\n export const MAX_VALUE: i64;\n /** Loads an 8-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 64-bit unsigned integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 64-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 64-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i64;\n /** Atomically stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize): void;\n /** Performs a wait operation on a 64-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n /** Atomic 64-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 32-bit values. */\n export namespace rmw32 {\n /** Atomically adds a 32-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 32-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 32-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 32-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 32-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 32-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 32-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 64-bit integer value in memory. */\n export function add(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 64-bit integer value in memory. */\n export function sub(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 64-bit integer value in memory. */\n export function and(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 64-bit integer value in memory. */\n export function or(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 64-bit integer value in memory. */\n export function xor(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 64-bit integer value in memory. */\n export function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 64-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare var isize: typeof i32 | typeof i64;\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): i8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): i8;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): i32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: any): i64;\ndeclare namespace u64 {\n /** Smallest representable value. */\n export const MIN_VALUE: u64;\n /** Largest representable value. */\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare var usize: typeof u32 | typeof u64;\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Loads a 32-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n /** Stores a 32-bit float to memory. */\n export function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Loads a 64-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n /** Stores a 64-bit float to memory. */\n export function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function v128(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace v128 {\n /** Creates a 128-bit vector with identical lanes. */\n export function splat(x: T): v128;\n /** Extracts one lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): T;\n /** Replaces one lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: T): v128;\n /** Selects lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n /** Loads a 128-bit vector from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n /** Stores a 128-bit vector to memory. */\n export function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n /** Adds each lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128; // except i64\n /** Divides each lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each lane of two 128-bit vectors using saturation. */\n export function add_saturate(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors using saturation. */\n export function sub_saturate(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise right shift on each lane of a 128-bit vector by a scalar. */\n export function shr(a: v128, b: i32): v128;\n /** Performs the bitwise AND operation on each lane of two 128-bit vectors. */\n export function and(a: v128, b: v128): v128;\n /** Performs the bitwise OR operation on each lane of two 128-bit vectors. */\n export function or(a: v128, b: v128): v128;\n /** Performs the bitwise XOR operation on each lane of two 128-bit vectors. */\n export function xor(a: v128, b: v128): v128;\n /** Performs the bitwise NOT operation on each lane of a 128-bit vector. */\n export function not(a: v128): v128;\n /** Selects bits of either 128-bit vector according to the specified mask. */\n export function bitselect(v1: v128, v2: v128, mask: v128): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes the minimum of each lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each lane of a 128-bit vector from integer to floating point. */\n export function convert(a: v128): v128;\n /** Truncates each lane of a 128-bit vector from floating point to integer with saturation. */\n export function trunc(a: v128): v128;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace i8x16 {\n /** Creates a vector with sixteen identical 8-bit integer lanes. */\n export function splat(x: i8): v128;\n /** Extracts one 8-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i8;\n /** Extracts one 8-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u8;\n /** Replaces one 8-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i8): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 8-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 8-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */\ndeclare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\ndeclare namespace i16x8 {\n /** Creates a vector with eight identical 16-bit integer lanes. */\n export function splat(x: i16): v128;\n /** Extracts one 16-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i16;\n /** Extracts one 16-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u16;\n /** Replaces one 16-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i16): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 16-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 16-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */\ndeclare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\ndeclare namespace i32x4 {\n /** Creates a 128-bit vector with four identical 32-bit integer lanes. */\n export function splat(x: i32): v128;\n /** Extracts one 32-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i32;\n /** Replaces one 32-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i32): v128;\n /** Adds each 32-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 32-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f32x4_sat(a: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f32x4_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */\ndeclare function i64x2(a: i64, b: i64): v128;\ndeclare namespace i64x2 {\n /** Creates a 128-bit vector with two identical 64-bit integer lanes. */\n export function splat(x: i64): v128;\n /** Extracts one 64-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i64;\n /** Replaces one 64-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i64): v128;\n /** Adds each 64-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 64-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Truncates each 64-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f64x2_sat(a: v128): v128;\n /** Truncates each 64-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f64x2_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */\ndeclare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\ndeclare namespace f32x4 {\n /** Creates a 128-bit vector with four identical 32-bit float lanes. */\n export function splat(x: f32): v128;\n /** Extracts one 32-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f32;\n /** Replaces one 32-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f32): v128;\n /** Adds each 32-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 32-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 32-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 32-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 32-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 32-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 32-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 32-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i32x4(a: v128): v128;\n /** Converts each 32-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i32x4(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */\ndeclare function f64x2(a: f64, b: f64): v128;\ndeclare namespace f64x2 {\n /** Creates a 128-bit vector with two identical 64-bit float lanes. */\n export function splat(x: f64): v128;\n /** Extracts one 64-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f64;\n /** Replaces one 64-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f64): v128;\n /** Adds each 64-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 64-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 64-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 64-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 64-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 64-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 64-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 64-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i64x2(a: v128): v128;\n /** Converts each 64-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i64x2(a: v128): v128;\n}\ndeclare namespace v8x16 {\n /** Selects 8-bit lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128;\n}\n/** Macro type evaluating to the underlying native WebAssembly type. */\ndeclare type native = T;\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type ReturnType any> = T extends (...args: any) => infer R ? R : any;\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type returnof any> = ReturnType;\n\n/** Pseudo-class representing the backing class of integer types. */\ndeclare class _Integer {\n /** Smallest representable value. */\n static readonly MIN_VALUE: number;\n /** Largest representable value. */\n static readonly MAX_VALUE: number;\n /** Converts a string to an integer of this type. */\n static parseInt(value: string, radix?: number): number;\n /** Converts this integer to a string. */\n toString(): string;\n}\n\n/** Pseudo-class representing the backing class of floating-point types. */\ndeclare class _Float {\n /** Difference between 1 and the smallest representable value greater than 1. */\n static readonly EPSILON: f32 | f64;\n /** Smallest representable value. */\n static readonly MIN_VALUE: f32 | f64;\n /** Largest representable value. */\n static readonly MAX_VALUE: f32 | f64;\n /** Smallest safely representable integer value. */\n static readonly MIN_SAFE_INTEGER: f32 | f64;\n /** Largest safely representable integer value. */\n static readonly MAX_SAFE_INTEGER: f32 | f64;\n /** Value representing positive infinity. */\n static readonly POSITIVE_INFINITY: f32 | f64;\n /** Value representing negative infinity. */\n static readonly NEGATIVE_INFINITY: f32 | f64;\n /** Value representing \'not a number\'. */\n static readonly NaN: f32 | f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n static isNaN(value: f32 | f64): bool;\n /** Returns true if passed value is finite. */\n static isFinite(value: f32 | f64): bool;\n /** Returns true if the value passed is a safe integer. */\n static isSafeInteger(value: f32 | f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n static isInteger(value: f32 | f64): bool;\n /** Converts a string to an integer. */\n static parseInt(value: string, radix?: i32): f32 | f64;\n /** Converts a string to a floating-point number. */\n static parseFloat(value: string): f32 | f64;\n /** Converts this floating-point number to a string. */\n toString(this: f64): string;\n}\n\n/** Backing class of signed 8-bit integers. */\ndeclare const I8: typeof _Integer;\n/** Backing class of signed 16-bit integers. */\ndeclare const I16: typeof _Integer;\n/** Backing class of signed 32-bit integers. */\ndeclare const I32: typeof _Integer;\n/** Backing class of signed 64-bit integers. */\ndeclare const I64: typeof _Integer;\n/** Backing class of signed size integers. */\ndeclare const Isize: typeof _Integer;\n/** Backing class of unsigned 8-bit integers. */\ndeclare const U8: typeof _Integer;\n/** Backing class of unsigned 16-bit integers. */\ndeclare const U16: typeof _Integer;\n/** Backing class of unsigned 32-bit integers. */\ndeclare const U32: typeof _Integer;\n/** Backing class of unsigned 64-bit integers. */\ndeclare const U64: typeof _Integer;\n/** Backing class of unsigned size integers. */\ndeclare const Usize: typeof _Integer;\n/** Backing class of 32-bit floating-point values. */\ndeclare const F32: typeof _Float;\n/** Backing class of 64-bit floating-point values. */\ndeclare const F64: typeof _Float;\n\n// User-defined diagnostic macros\n\n/** Emits a user-defined diagnostic error when encountered. */\ndeclare function ERROR(message?: any): void;\n/** Emits a user-defined diagnostic warning when encountered. */\ndeclare function WARNING(message?: any): void;\n/** Emits a user-defined diagnostic info when encountered. */\ndeclare function INFO(message?: any): void;\n\n// Polyfills\n\n/** Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Whether the memory managed interface is implemented. */\n export const implemented: bool;\n /** Returns the current memory size in units of pages. One page is 64kb. */\n export function size(): i32;\n /** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\n export function grow(value: i32): i32;\n /** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\n export function fill(dst: usize, value: u8, count: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n export function copy(dst: usize, src: usize, n: usize): void;\n /** Repeats `src` of length `srcLength` `count` times at `dst`. */\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void;\n /** Copies elements from a passive element segment to a table. */\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void;\n /** Prevents further use of a passive element segment. */\n export function drop(segmentIndex: u32): void;\n /** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\n export function compare(vl: usize, vr: usize, n: usize): i32;\n}\n\n/** Garbage collector operations. */\ndeclare namespace gc {\n /** Whether the garbage collector interface is implemented. */\n export const implemented: bool;\n /** Performs a full garbage collection cycle. */\n export function collect(): void;\n /** Retains a reference, making sure that it doesn\'t become collected. */\n export function retain(ref: usize): void;\n /** Releases a reference, allowing it to become collected. */\n export function release(ref: usize): void;\n}\n\n/** Table operations. */\ndeclare namespace table {\n /** Copies elements from a passive element segment to a table. */\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void;\n /** Prevents further use of a passive element segment. */\n export function drop(elementIndex: u32): void;\n /** Copies elements from one region of a table to another region. */\n export function copy(dest: u32, src: u32, n: u32): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer\'s bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform\'s endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getInt64()` method gets a signed 64-bit integer (long long) at the specified byte offset from the start of the `DataView`. */\n getInt64(byteOffset: i32, littleEndian?: boolean): i64;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `getUint64()` method gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the `DataView`. */\n getUint64(byteOffset: i32, littleEndian?: boolean): u64;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setInt64()` method stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the `DataView`. */\n setInt64(byteOffset: i32, value: i64, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** The `setUint64()` method stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the `DataView`. */\n setUint64(byteOffset: i32, value: u64, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ninterface ArrayLike {\n length: i32;\n // [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\n/* @internal */\ndeclare abstract class TypedArray implements ArrayBufferView {\n [key: number]: T;\n /** Number of bytes per element. */\n static readonly BYTES_PER_ELEMENT: usize;\n /** Wrap an ArrayBuffer */\n static wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray;\n /** Constructs a new typed array. */\n constructor(length: i32);\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n /** The length (in elements). */\n readonly length: i32;\n /** The includes() method determines whether a typed array includes a certain element, returning true or false as appropriate. */\n includes(searchElement: T, fromIndex?: i32): bool;\n /** The indexOf() method returns the first index at which a given element can be found in the typed array, or -1 if it is not present. */\n indexOf(searchElement: T, fromIndex?: i32): i32;\n /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */\n subarray(begin?: i32, end?: i32): this;\n /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */\n reduce(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */\n reduceRight(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/\n some(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/\n map(callbackfn: (value: T, index: i32, self: this) => T): this;\n /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */\n sort(callback?: (a: T, b: T) => i32): this;\n /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */\n fill(value: T, start?: i32, end?: i32): this;\n /** The findIndex() method returns an index in the typed array, if an element in the typed array satisfies the provided testing function. Otherwise -1 is returned. See also the find() [not implemented] method, which returns the value of a found element in the typed array instead of its index. */\n findIndex(callbackfn: (value: T, index: i32, self: this) => bool): i32;\n /** The every() method tests whether all elements in the typed array pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.every(). */\n every(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The forEach() method executes a provided function once per array element. This method has the same algorithm as Array.prototype.forEach().*/\n forEach(callbackfn: (value: T, index: i32, self: this) => void): void;\n /** The reverse() method reverses a typed array in place. The first typed array element becomes the last and the last becomes the first. This method has the same algorithm as Array.prototype.reverse(). */\n reverse(): this;\n}\n\n/** An array of twos-complement 8-bit signed integers. */\ndeclare class Int8Array extends TypedArray {}\n/** An array of 8-bit unsigned integers. */\ndeclare class Uint8Array extends TypedArray {}\n/** A clamped array of 8-bit unsigned integers. */\ndeclare class Uint8ClampedArray extends TypedArray {}\n/** An array of twos-complement 16-bit signed integers. */\ndeclare class Int16Array extends TypedArray {}\n/** An array of 16-bit unsigned integers. */\ndeclare class Uint16Array extends TypedArray {}\n/** An array of twos-complement 32-bit signed integers. */\ndeclare class Int32Array extends TypedArray {}\n/** An array of 32-bit unsigned integers. */\ndeclare class Uint32Array extends TypedArray {}\n/** An array of twos-complement 64-bit signed integers. */\ndeclare class Int64Array extends TypedArray {}\n/** An array of 64-bit unsigned integers. */\ndeclare class Uint64Array extends TypedArray {}\n/** An array of 32-bit floating point numbers. */\ndeclare class Float32Array extends TypedArray {}\n/** An array of 64-bit floating point numbers. */\ndeclare class Float64Array extends TypedArray {}\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n\n /** Tests if a value is an array. */\n static isArray(value: any): value is Array;\n /** Creates a new array with at least the specified capacity and length zero. */\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\n/** Class representing a fixed sequence of values of type `T`. */\ndeclare class FixedArray {\n [key: number]: T;\n readonly length: i32;\n constructor(capacity?: i32);\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(start: i32, end?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n repeat(count?: i32): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\ndeclare namespace String {\n /** Encoding helpers for UTF-8. */\n export namespace UTF8 {\n /** Calculates the byte length of the specified string when encoded as UTF-8, optionally null terminated. */\n export function byteLength(str: string, nullTerminated?: bool): i32;\n /** Encodes the specified string to UTF-8 bytes, optionally null terminated. */\n export function encode(str: string, nullTerminated?: bool): ArrayBuffer;\n /** Decodes the specified buffer from UTF-8 bytes to a string, optionally null terminated. */\n export function decode(buf: ArrayBuffer, nullTerminated?: bool): string;\n /** Decodes raw UTF-8 bytes to a string, optionally null terminated. */\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated?: bool): string;\n }\n /** Encoding helpers for UTF-16. */\n export namespace UTF16 {\n /** Calculates the byte length of the specified string when encoded as UTF-16. */\n export function byteLength(str: string): i32;\n /** Encodes the specified string to UTF-16 bytes. */\n export function encode(str: string): ArrayBuffer;\n /** Decodes the specified buffer from UTF-16 bytes to a string. */\n export function decode(buf: ArrayBuffer): string;\n /** Decodes raw UTF-16 bytes to a string. */\n export function decodeUnsafe(buf: usize, len: usize): string;\n }\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ninterface Boolean {\n toString(): string;\n}\ninterface Function {}\ninterface IArguments {}\ninterface Number {\n toString(radix?: number): string;\n}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Map {\n readonly size: i32;\n has(key: K): bool;\n set(key: K, value: V): void;\n get(key: K): V;\n delete(key: K): bool;\n clear(): void;\n keys(): K[]; // preliminary\n values(): V[]; // preliminary\n toString(): string;\n}\n\ndeclare class Set {\n readonly size: i32;\n has(value: K): bool;\n add(value: K): void;\n delete(value: K): bool;\n clear(): void;\n values(): K[]; // preliminary\n toString(): string;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\n\ndeclare const Symbol: SymbolConstructor;\n\ninterface IMath {\n /** The base of natural logarithms, e, approximately 2.718. */\n readonly E: T;\n /** The natural logarithm of 2, approximately 0.693. */\n readonly LN2: T;\n /** The natural logarithm of 10, approximately 2.302. */\n readonly LN10: T;\n /** The base 2 logarithm of e, approximately 1.442. */\n readonly LOG2E: T;\n /** The base 10 logarithm of e, approximately 0.434. */\n readonly LOG10E: T;\n /** The ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n readonly PI: T;\n /** The square root of 1/2, approximately 0.707. */\n readonly SQRT1_2: T;\n /** The square root of 2, approximately 1.414. */\n readonly SQRT2: T;\n /** Returns the absolute value of `x`. */\n abs(x: T): T;\n /** Returns the arccosine (in radians) of `x`. */\n acos(x: T): T;\n /** Returns the hyperbolic arc-cosine of `x`. */\n acosh(x: T): T;\n /** Returns the arcsine (in radians) of `x`. */\n asin(x: T): T;\n /** Returns the hyperbolic arcsine of `x`. */\n asinh(x: T): T;\n /** Returns the arctangent (in radians) of `x`. */\n atan(x: T): T;\n /** Returns the arctangent of the quotient of its arguments. */\n atan2(y: T, x: T): T;\n /** Returns the hyperbolic arctangent of `x`. */\n atanh(x: T): T;\n /** Returns the cube root of `x`. */\n cbrt(x: T): T;\n /** Returns the smallest integer greater than or equal to `x`. */\n ceil(x: T): T;\n /** Returns the number of leading zero bits in the 32-bit binary representation of `x`. */\n clz32(x: T): T;\n /** Returns the cosine (in radians) of `x`. */\n cos(x: T): T;\n /** Returns the hyperbolic cosine of `x`. */\n cosh(x: T): T;\n /** Returns e to the power of `x`. */\n exp(x: T): T;\n /** Returns e to the power of `x`, minus 1. */\n expm1(x: T): T;\n /** Returns the largest integer less than or equal to `x`. */\n floor(x: T): T;\n /** Returns the nearest 32-bit single precision float representation of `x`. */\n fround(x: T): T;\n /** Returns the square root of the sum of squares of its arguments. */\n hypot(value1: T, value2: T): T; // TODO: rest\n /** Returns the result of the C-like 32-bit multiplication of `a` and `b`. */\n imul(a: T, b: T): T;\n /** Returns the natural logarithm (base e) of `x`. */\n log(x: T): T;\n /** Returns the base 10 logarithm of `x`. */\n log10(x: T): T;\n /** Returns the natural logarithm (base e) of 1 + `x`. */\n log1p(x: T): T;\n /** Returns the base 2 logarithm of `x`. */\n log2(x: T): T;\n /** Returns the largest-valued number of its arguments. */\n max(value1: T, value2: T): T; // TODO: rest\n /** Returns the lowest-valued number of its arguments. */\n min(value1: T, value2: T): T; // TODO: rest\n /** Returns `base` to the power of `exponent`. */\n pow(base: T, exponent: T): T;\n /** Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0. */\n random(): T;\n /** Returns the value of `x` rounded to the nearest integer. */\n round(x: T): T;\n /** Returns the sign of `x`, indicating whether the number is positive, negative or zero. */\n sign(x: T): T;\n /** Returns whether the sign bit of `x` is set. */\n signbit(x: T): bool;\n /** Returns the sine of `x`. */\n sin(x: T): T;\n /** Returns the hyperbolic sine of `x`. */\n sinh(x: T): T;\n /** Returns the square root of `x`. */\n sqrt(x: T): T;\n /** Returns the tangent of `x`. */\n tan(x: T): T;\n /** Returns the hyperbolic tangent of `x`. */\n tanh(x: T): T;\n /** Returns the integer part of `x` by removing any fractional digits. */\n trunc(x: T): T;\n}\n\ninterface INativeMath extends IMath {\n /** Contains sin value produced after Math/Mathf.sincos */\n sincos_sin: T;\n /** Contains cos value produced after Math/Mathf.sincos */\n sincos_cos: T;\n /** Seeds the random number generator. */\n seedRandom(value: i64): void;\n /** Returns the floating-point remainder of `x / y` (rounded towards zero). */\n mod(x: T, y: T): T;\n /** Returns the floating-point remainder of `x / y` (rounded to nearest). */\n rem(x: T, y: T): T;\n /** Returns sin and cos simultaneously for same angle. Results stored to `sincos_s32/64` and `sincos_c32/64` globals */\n sincos(x: T): void;\n}\n\n/** Double precision math imported from JavaScript. */\ndeclare const JSMath: IMath;\n/** Double precision math implemented natively. */\ndeclare const NativeMath: INativeMath;\n/** Single precision math implemented natively. */\ndeclare const NativeMathf: INativeMath;\n/** Alias of {@link NativeMath} or {@link JSMath} respectively. Defaults to `NativeMath`. */\ndeclare const Math: IMath;\n/** Alias of {@link NativeMathf} or {@link JSMath} respectively. Defaults to `NativeMathf`. */\ndeclare const Mathf: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): i64;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): i64;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: i64);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): i64;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: i64): i64;\n}\n\n/** Environmental tracing function for debugging purposes. */\ndeclare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: f64, a4?: f64): void;\n\n// Decorators\n\ninterface TypedPropertyDescriptor {\n configurable?: boolean;\n enumerable?: boolean;\n writable?: boolean;\n value?: T;\n get?(): T;\n set?(value: T): void;\n}\n\n/** Annotates a method as a binary operator overload for the specified `token`. */\ndeclare function operator(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n) => TypedPropertyDescriptor | void;\n\ndeclare namespace operator {\n /** Annotates a method as a binary operator overload for the specified `token`. */\n export function binary(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n ): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary prefix operator overload for the specified `token`. */\n export function prefix(token: "!" | "~" | "+" | "-" | "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary postfix operator overload for the specified `token`. */\n export function postfix(token: "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n}\n\n/** Annotates an element as a program global. */\ndeclare function global(...args: any[]): any;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n\n/** Annotates a class as being sealed / non-derivable. */\ndeclare function sealed(constructor: Function): void;\n\n/** Annotates a method, function or constant global as always inlined. */\ndeclare function inline(...args: any[]): any;\n\n/** Annotates a method, function or constant global as unsafe. */\ndeclare function unsafe(...args: any[]): any;\n\n/** Annotates an explicit external name of a function or global. */\ndeclare function external(...args: any[]): any;\n\n/** Annotates a global for lazy compilation. */\ndeclare function lazy(...args: any[]): any;\n\n/** Annotates a function as the explicit start function. */\ndeclare function start(...args: any[]): any;\n',portable:"/**\n * Environment definitions for compiling AssemblyScript to JavaScript using tsc.\n *\n * Note that semantic differences require additional explicit conversions for full compatibility.\n * For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n * result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n *\n * Note that i64's are not portable (JS numbers are IEEE754 doubles with a maximum safe integer\n * value of 2^53-1) and instead require a compatibility layer to work in JS as well, as for example\n * {@link glue/js/i64} respectively {@link glue/wasm/i64}.\n *\n * @module std/portable\n *//***/\n\n/// \n\n// Types\n\ndeclare type bool = boolean;\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified value is a valid integer. Can't distinguish an integer from an integral float. */\ndeclare function isInteger(value: any): value is number;\n/** Tests if the specified value is a valid float. Can't distinguish a float from an integer. */\ndeclare function isFloat(value: any): value is number;\n/** Tests if the specified value is of a nullable reference type. */\ndeclare function isNullable(value: any): bool;\n/** Tests if the specified value is of a reference type. */\ndeclare function isReference(value: any): value is object | string;\n/** Tests if the specified value is of a function type */\ndeclare function isFunction(value: any): value is Function;\n/** Tests if the specified value can be used as a string. */\ndeclare function isString(value: any): value is string | String;\n/** Tests if the specified value can be used as an array. */\ndeclare function isArray(value: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. */\ndeclare function isArrayLike(value: any): value is ArrayLike;\n/** Tests if the specified expression resolves to a defined element. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. */\ndeclare function isConstant(expression: any): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T | null, message?: string): T;\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i16;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: any): isize;\ndeclare namespace isize {\n /** Smallest representable value. */\n export const MIN_VALUE: isize;\n /** Largest representable value. */\n export const MAX_VALUE: isize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): isize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): u8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): u16;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): u32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: any): isize;\ndeclare namespace usize {\n /** Smallest representable value. */\n export const MIN_VALUE: usize;\n /** Largest representable value. */\n export const MAX_VALUE: usize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): usize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f32): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f32): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f64): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f64;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f64;\n}\n\n// Polyfills\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Allocates a chunk of memory of the specified size and returns a pointer to it. */\n function allocate(size: usize): usize;\n /** Disposes a chunk of memory by its pointer. */\n function free(ptr: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n function copy(dst: usize, src: usize, n: usize): void;\n /** Fills size bytes from from the specified destination by same value in memory. */\n function fill(dst: usize, value: u8, size: usize): void;\n /** Resets the allocator to its initial state, if supported. */\n function reset(): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer's bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform's endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ndeclare class Array {\n\n static isArray(value: any): value is Array;\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from?: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint8ClampedArray extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ninterface ArrayLike {\n length: i32;\n [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: i32;\n\n private constructor();\n\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n endsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(from: i32, to?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n repeat(count?: i32): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ndeclare class Set {\n constructor(entries?: T[]);\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n toString(): string;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n delete(key: K): bool;\n toString(): string;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\ndeclare const Symbol: SymbolConstructor;\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ninterface IMath {\n readonly E: f64;\n readonly LN2: f64;\n readonly LN10: f64;\n readonly LOG2E: f64;\n readonly LOG10E: f64;\n readonly PI: f64;\n readonly SQRT1_2: f64;\n readonly SQRT2: f64;\n\n sincos_sin: f64;\n sincos_cos: f64;\n\n abs(x: f64): f64;\n acos(x: f64): f64;\n acosh(x: f64): f64;\n asin(x: f64): f64;\n asinh(x: f64): f64;\n atan(x: f64): f64;\n atan2(y: f64, x: f64): f64;\n atanh(x: f64): f64;\n cbrt(x: f64): f64;\n ceil(x: f64): f64;\n clz32(x: f64): i32;\n cos(x: f64): f64;\n cosh(x: f64): f64;\n exp(x: f64): f64;\n expm1(x: f64): f64;\n floor(x: f64): f64;\n fround(x: f64): f32;\n hypot(value1: f64, value2: f64): f64; // TODO: see std/math\n imul(a: f64, b: f64): i32;\n log(x: f64): f64;\n log10(x: f64): f64;\n log1p(x: f64): f64;\n log2(x: f64): f64;\n max(value1: f64, value2: f64): f64; // TODO: see std/math\n min(value1: f64, value2: f64): f64; // TODO: see std/math\n pow(base: f64, exponent: f64): f64;\n random(): f64;\n round(x: f64): f64;\n sign(x: f64): f64;\n signbit(x: f64): bool;\n sin(x: f64): f64;\n sincos(x: f64): f64;\n sinh(x: f64): f64;\n sqrt(x: f64): f64;\n tan(x: f64): f64;\n tanh(x: f64): f64;\n trunc(x: f64): f64;\n}\n\ndeclare const Math: IMath;\ndeclare const Mathf: IMath;\ndeclare const JSMath: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): number;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): number;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: number);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): number;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: number): number;\n}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n"}):(()=>{const e=path.join(".","..","std");return{assembly:fs.readFileSync(path.join(e,"assembly","index.d.ts"),"utf8"),portable:fs.readFileSync(path.join(e,"portable","index.d.ts"),"utf8")}})(),exports.compileString=(e,n)=>{"string"==typeof e&&(e={"input.ts":e});const t=Object.create({stdout:createMemoryStream(),stderr:createMemoryStream()});var r=["--binaryFile","binary","--textFile","text"];return Object.keys(n||{}).forEach(e=>{var t=n[e];Array.isArray(t)?t.forEach(n=>r.push("--"+e,String(n))):r.push("--"+e,String(t))}),exports.main(r.concat(Object.keys(e)),{stdout:t.stdout,stderr:t.stderr,readFile:n=>e.hasOwnProperty(n)?e[n]:null,writeFile:(e,n)=>t[e]=n,listFiles:()=>[]}),t},exports.main=function(e,n,t){"function"==typeof n?(t=n,n={}):n||(n={});const r=n.stdout||process.stdout,i=n.stderr||process.stderr,a=n.readFile||O,o=n.writeFile||N,s=n.listFiles||R,u=n.stats||createStats();if(!r)throw Error("'options.stdout' must be specified");if(!i)throw Error("'options.stderr' must be specified");const l=optionsUtil.parse(e,exports.options),c=l.options;if(e=l.arguments,c.noColors?colorsUtil.stdout.supported=colorsUtil.stderr.supported=!1:(colorsUtil.stdout=colorsUtil.from(r),colorsUtil.stderr=colorsUtil.from(i)),l.unknown.length&&l.unknown.forEach(e=>{i.write(colorsUtil.stderr.yellow("WARN: ")+"Unknown option '"+e+"'"+EOL)}),l.trailing.length&&i.write(colorsUtil.stderr.yellow("WARN: ")+"Unsupported trailing arguments: "+l.trailing.join(" ")+EOL),t||(t=function(e){var n=0;return e&&(i.write(colorsUtil.stderr.red("ERROR: ")+e.stack.replace(/^ERROR: /i,"")+EOL),n=1),n}),c.version)return r.write("Version "+exports.version+(isDev?"-dev":"")+EOL),t(null);if(c.help||!e.length){var f=c.help?r:i,d=c.help?colorsUtil.stdout:colorsUtil.stderr;return f.write([d.white("SYNTAX")," "+d.cyan("asc")+" [entryFile ...] [options]","",d.white("EXAMPLES")," "+d.cyan("asc")+" hello.ts"," "+d.cyan("asc")+" hello.ts -b hello.wasm -t hello.wat"," "+d.cyan("asc")+" hello1.ts hello2.ts -b -O > hello.wasm","",d.white("OPTIONS")].concat(optionsUtil.help(exports.options,24,EOL)).join(EOL)+EOL),t(null)}if(!fs.readFileSync){if(a===O)throw Error("'options.readFile' must be specified");if(o===N)throw Error("'options.writeFile' must be specified");if(s===R)throw Error("'options.listFiles' must be specified")}const p=c.baseDir?path.resolve(c.baseDir):".",h=c.notNear?[]:[nearBindings];c.transform&&c.transform.forEach(e=>h.push(__webpack_require__(13)(path.isAbsolute(e=e.trim())?e:path.join(process.cwd(),e))));var g=null,x=new Map,v=new Map;Object.keys(exports.libraryFiles).forEach(e=>{e.indexOf("/")>=0||(u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(exports.libraryFiles[e],exports.libraryPrefix+e+".ts",!1,g)}))});const m=[];if(c.lib){let e=c.lib;"string"==typeof e&&(e=e.split(",")),Array.prototype.push.apply(m,e.map(e=>e.trim()));for(let e=0,n=m.length;e{g=assemblyscript.parseFile(o,exports.libraryPrefix+i,!1,g)})}}}function _(e,n){return e.split(SEP).map((e,t,r)=>{let i=r.slice(0,t+1).join(SEP)||SEP,a=path.relative(p,i);return path.join(a,n)}).filter(e=>s(e,p)).reverse()}function y(e){let n=c.path.map(n=>_(e,n));return _(e,"node_modules").concat(...n)}function b(){for(var e,n,r;null!=(e=g.nextFile());){if(dependee=v.get(assemblyscript.getDependee(g,e))||p,n=null,r=null,e.startsWith(exports.libraryPrefix)){const t=e.substring(exports.libraryPrefix.length),i=e.substring(exports.libraryPrefix.length)+"/index";if(exports.libraryFiles.hasOwnProperty(t))n=exports.libraryFiles[t],e=exports.libraryPrefix+t+".ts";else if(exports.libraryFiles.hasOwnProperty(i))n=exports.libraryFiles[i],e=exports.libraryPrefix+i+".ts";else for(let o=0,s=m.length;o{if(x.has(o))return x.get(o);let e=path.join(s,o,"package.json"),n=a(e,p);if(n){let r;try{r=JSON.parse(n)}catch(n){return t(Error("Parsing "+e+" failed"))}let i=r.ascMain;if(i&&"string"==typeof i){let e=i.replace(/(.*)\/index\.ts/,"$1");return x.set(o,e),e}}return"assembly"})(),l=e=>{e.startsWith(exports.libraryPrefix)&&(e=e.substring(exports.libraryPrefix.length));let n=e.substring(0,e.indexOf("/")),t=e.substring(e.indexOf("/")+1);return path.join(s,n,u,t)};c.traceResolution&&i.write(" in '"+l(e)+"'");const f=e,d=e+"/index";if(null!==(n=a(l(f)+".ts",p))?e=f+".ts":null!==(n=a(l(d)+".ts",p))&&(e=d+".ts"),null!==n){c.traceResolution&&i.write(EOL+" -> '"+l(e)+"'"+EOL),r=path.join(s,o);break}c.traceResolution&&i.write(EOL)}}if(null==n)return t(Error("Import file '"+e+".ts' not found."));v.set(e.replace(/\.ts$/,""),r),u.parseCount++,u.parseTime+=measure(()=>{assemblyscript.parseFile(n,e,!1,g)})}if(checkDiagnostics(g,i))return t(Error("Parse error"))}c.path=c.path||[];{let e=String(c.runtime),n="rt/index-"+e,r=exports.libraryFiles[n];if(null==r){if(null==(r=a((n=e)+".ts",p)))return t(Error("Runtime '"+e+"' not found."))}else n="~lib/"+n;u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(r,n,!0,g)})}for(let n=0,r=e.length;n{g=assemblyscript.parseFile(o,i,!0,g)})}{let e=b();if(e)return e}!function(e,...n){h.forEach(t=>{"function"==typeof t[e]&&t[e](...n)})}("afterParse",g,o,p);{let e=b();if(e)return e}const E=assemblyscript.finishParsing(g);if(c.listFiles)return i.write(E.sources.map(e=>e.normalizedPath).sort().join(EOL)+EOL),t(null);var T=0,A=0;c.optimize&&(T=exports.defaultOptimizeLevel,A=exports.defaultShrinkLevel),"number"==typeof c.optimizeLevel&&(T=c.optimizeLevel),"number"==typeof c.shrinkLevel&&(A=c.shrinkLevel),T=Math.min(Math.max(T,0),3),A=Math.min(Math.max(A,0),2);const S=assemblyscript.createOptions();if(assemblyscript.setTarget(S,0),assemblyscript.setNoAssert(S,c.noAssert),assemblyscript.setImportMemory(S,c.importMemory),assemblyscript.setSharedMemory(S,c.sharedMemory),assemblyscript.setImportTable(S,c.importTable),assemblyscript.setExplicitStart(S,c.explicitStart),assemblyscript.setMemoryBase(S,c.memoryBase>>>0),assemblyscript.setSourceMap(S,null!=c.sourceMap),assemblyscript.setOptimizeLevelHints(S,T,A),assemblyscript.setNoUnsafe(S,c.noUnsafe),assemblyscript.setGlobalAlias(S,"Math","NativeMath"),assemblyscript.setGlobalAlias(S,"Mathf","NativeMathf"),assemblyscript.setGlobalAlias(S,"abort","~lib/builtins/abort"),assemblyscript.setGlobalAlias(S,"trace","~lib/builtins/trace"),c.use){let e=c.use;for(let n=0,r=e.length;n{F=assemblyscript.compileProgram(E,S)})}catch(e){return t(e)}if(checkDiagnostics(g,i))return F&&F.dispose(),t(Error("Compile error"));if(c.validate&&(u.validateCount++,u.validateTime+=measure(()=>{if(!F.validate())return F.dispose(),t(Error("Validate error"))})),"clamp"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-clamp"])});else if("js"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-js"])});else if("allow"!==c.trapMode)return F.dispose(),t(Error("Unsupported trap mode"));(T>=3||A>=2)&&(T=4),F.setOptimizeLevel(T),F.setShrinkLevel(A),F.setDebugInfo(c.debug);var z=[];if(c.runPasses&&("string"==typeof c.runPasses&&(c.runPasses=c.runPasses.split(",")),c.runPasses.length&&c.runPasses.forEach(e=>{z.indexOf(e)<0&&z.push(e)})),(T>0||A>0)&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.optimize()})),z.length&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(z.map(e=>e.trim()))})),!c.noEmit){let e=!1,n=!1;if(null!=c.outFile&&(/\.was?t$/.test(c.outFile)&&null==c.textFile?c.textFile=c.outFile:/\.js$/.test(c.outFile)&&null==c.asmjsFile?c.asmjsFile=c.outFile:null==c.binaryFile&&(c.binaryFile=c.outFile)),null!=c.binaryFile){let r,s=null!=c.sourceMap?c.sourceMap.length?c.sourceMap:path.basename(c.binaryFile)+".map":null;if(u.emitCount++,u.emitTime+=measure(()=>{r=F.toBinary(s)}),c.binaryFile.length?o(c.binaryFile,r.output,p):(C(r.output),e=!0),n=!0,null!=r.sourceMap)if(c.binaryFile.length){let e=JSON.parse(r.sourceMap);e.sourceRoot=exports.sourceMapRoot,e.sources.forEach((n,r)=>{let i=null;if(n.startsWith(exports.libraryPrefix)){let e=n.substring(exports.libraryPrefix.length).replace(/\.ts$/,"");if(exports.libraryFiles.hasOwnProperty(e))i=exports.libraryFiles[e];else for(let e=0,t=m.length;e{t=F.toAsmjs()}),o(c.asmjsFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=F.toAsmjs()}),C(t),e=!0),n=!0}if(null!=c.idlFile){let t;c.idlFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),o(c.idlFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),C(t),e=!0),n=!0}if(null!=c.tsdFile){let t;c.tsdFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),o(c.tsdFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),C(t),e=!0),n=!0}if(null!=c.textFile||!n){let n;c.textFile&&c.textFile.length?(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),o(c.textFile,n,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),C(n))}}return F.dispose(),c.measure&&printStats(u,i),c.printrtti&&printRTTI(E,i),t(null);function O(e,n){let t=path.resolve(n,e);try{let e;return u.readCount++,u.readTime+=measure(()=>{e=fs.readFileSync(t,{encoding:"utf8"})}),e}catch(e){return null}}function N(e,n,t){try{return u.writeCount++,u.writeTime+=measure(()=>{mkdirp(path.join(t,path.dirname(e))),"string"==typeof n?fs.writeFileSync(path.join(t,e),n,{encoding:"utf8"}):fs.writeFileSync(path.join(t,e),n)}),!0}catch(e){return!1}}function R(e,n){var t;try{return u.readTime+=measure(()=>{t=fs.readdirSync(path.join(n,e)).filter(e=>/^(?!.*\.d\.ts$).*\.ts$/.test(e))}),t}catch(e){return null}}function C(e){C.used||(u.writeCount++,C.used=!0),u.writeTime+=measure(()=>{"string"==typeof e?r.write(e,{encoding:"utf8"}):r.write(e)})}},exports.checkDiagnostics=checkDiagnostics,exports.createStats=createStats,process.hrtime||(process.hrtime=__webpack_require__(14)),exports.measure=measure,exports.formatTime=formatTime,exports.printStats=printStats,exports.printRTTI=printRTTI;var allocBuffer=void 0!==global&&global.Buffer?global.Buffer.allocUnsafe||function(e){return new global.Buffer(e)}:function(e){return new Uint8Array(e)};function createMemoryStream(e){var n=[];return n.write=function(n){if(e&&e(n),"string"==typeof n){let e=allocBuffer(utf8.length(n));utf8.write(n,e,0),n=e}this.push(n)},n.reset=function(){n.length=0},n.toBuffer=function(){for(var e=0,n=0,t=this.length;n191&&r<224?a[o++]=(31&r)<<6|63&e[n++]:r>239&&r<365?(r=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[n++])<<6|63&e[n++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},r.write=function(e,n,t){for(var r,i,a=t,o=0;o>6|192,n[t++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,n[t++]=r>>18|240,n[t++]=r>>12&63|128,n[t++]=r>>6&63|128,n[t++]=63&r|128):(n[t++]=r>>12|224,n[t++]=r>>6&63|128,n[t++]=63&r|128);return t-a}},function(e,n,t){(function(e){var t=void 0!==e&&e||{},r=t.env&&"CI"in t.env;function i(e,t){var i=t||{};return i.supported=e&&!!e.isTTY||r,i.gray=e=>i.supported?n.GRAY+e+n.RESET:e,i.red=e=>i.supported?n.RED+e+n.RESET:e,i.green=e=>i.supported?n.GREEN+e+n.RESET:e,i.yellow=e=>i.supported?n.YELLOW+e+n.RESET:e,i.blue=e=>i.supported?n.BLUE+e+n.RESET:e,i.magenta=e=>i.supported?n.MAGENTA+e+n.RESET:e,i.cyan=e=>i.supported?n.CYAN+e+n.RESET:e,i.white=e=>i.supported?n.WHITE+e+n.RESET:e,i}n.stdout=i(t.stdout,n),n.stderr=i(t.stderr),n.from=i,n.GRAY="",n.RED="",n.GREEN="",n.YELLOW="",n.BLUE="",n.MAGENTA="",n.CYAN="",n.WHITE="",n.RESET=""}).call(this,t(0))},function(e,n){n.parse=function(e,n){var t={},r=[],arguments=[],i=[],a={};Object.keys(n).forEach(e=>{if(!e.startsWith(" ")){var r=n[e];null!=r.alias&&("string"==typeof r.alias?a[r.alias]=e:Array.isArray(r.alias)&&r.alias.forEach(n=>a[n]=e)),null!=r.default&&(t[e]=r.default)}});for(var o=0,s=(e=e.slice()).length;ot[e]=s.value[e])}else r.push(i)}for(;o{var o=e[n];if(null!=o.description){for(var s="";s.length{for(let n=0;n=0?u.substring(l+1):u,i.statements=new Array,i.range=new o.Range(i,0,t.length),i.text=t,i}return i(n,e),Object.defineProperty(n.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),n}(l);n.Source=$;var ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.decorators=null,n.flags=a.CommonFlags.NONE,n}return i(n,e),n.prototype.is=function(e){return(this.flags&e)==e},n.prototype.isAny=function(e){return 0!=(this.flags&e)},n.prototype.set=function(e){this.flags|=e},n}(J);n.DeclarationStatement=ee;var ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INDEXSIGNATUREDECLARATION,n}return i(n,e),n}(ee);n.IndexSignatureDeclaration=ne;var te=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i(n,e),n}(ee);n.VariableLikeDeclarationStatement=te;var re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BLOCK,n}return i(n,e),n}(J);n.BlockStatement=re;var ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BREAK,n}return i(n,e),n}(J);n.BreakStatement=ie;var ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CLASSDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n}(ee);n.ClassDeclaration=ae;var oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CONTINUE,n}return i(n,e),n}(J);n.ContinueStatement=oe;var se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.DO,n}return i(n,e),n}(J);n.DoStatement=se;var ue=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EMPTY,n}return i(n,e),n}(J);n.EmptyStatement=ue;var le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMDECLARATION,n}return i(n,e),n}(ee);n.EnumDeclaration=le;var ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMVALUEDECLARATION,n}return i(n,e),n}(te);n.EnumValueDeclaration=ce;var fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTIMPORT,n}return i(n,e),n}(l);n.ExportImportStatement=fe;var de=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTMEMBER,n}return i(n,e),n}(l);n.ExportMember=de;var pe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORT,n}return i(n,e),n}(J);n.ExportStatement=pe;var he=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTDEFAULT,n}return i(n,e),n}(J);n.ExportDefaultStatement=he;var ge=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPRESSION,n}return i(n,e),n}(J);n.ExpressionStatement=ge;var xe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FIELDDECLARATION,n.parameterIndex=-1,n}return i(n,e),n}(te);n.FieldDeclaration=xe;var ve=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FOR,n}return i(n,e),n}(J);n.ForStatement=ve,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(n.ArrowKind||(n.ArrowKind={}));var me=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FUNCTIONDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},n}(ee);n.FunctionDeclaration=me;var _e=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IF,n}return i(n,e),n}(J);n.IfStatement=_e;var ye=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORTDECLARATION,n}return i(n,e),n}(ee);n.ImportDeclaration=ye;var be=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORT,n}return i(n,e),n}(J);n.ImportStatement=be;var Ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INTERFACEDECLARATION,n}return i(n,e),n}(ae);n.InterfaceDeclaration=Ee;var Te=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.METHODDECLARATION,n}return i(n,e),n}(me);n.MethodDeclaration=Te;var Ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.NAMESPACEDECLARATION,n}return i(n,e),n}(ee);n.NamespaceDeclaration=Ae;var Se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.RETURN,n}return i(n,e),n}(J);n.ReturnStatement=Se;var Fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCHCASE,n}return i(n,e),n}(l);n.SwitchCase=Fe;var Ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCH,n}return i(n,e),n}(J);n.SwitchStatement=Ie;var ze=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.THROW,n}return i(n,e),n}(J);n.ThrowStatement=ze;var Oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TRY,n}return i(n,e),n}(J);n.TryStatement=Oe;var Ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TYPEDECLARATION,n}return i(n,e),n}(ee);n.TypeDeclaration=Ne;var Re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLEDECLARATION,n}return i(n,e),n}(te);n.VariableDeclaration=Re;var Ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLE,n}return i(n,e),n}(J);n.VariableStatement=Ce;var Le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VOID,n}return i(n,e),n}(J);n.VoidStatement=Le;var we=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.WHILE,n}return i(n,e),n}(J);function ke(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}n.WhileStatement=we,n.findDecorator=function(e,n){if(n)for(var t=0,r=n.length;t";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var d=function(){function e(e,n,t){this.debugInfoRef=0,this.source=e,this.start=n,this.end=t}return e.join=function(n,t){if(n.source!=t.source)throw new Error("source mismatch");return new e(n.source,n.startt.end?n.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,n=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&n++;return n},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,n=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++n;return n},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();n.Range=d;var p=function(e){function n(n,t){void 0===t&&(t=null);var r=e.call(this,t)||this;r.end=0,r.pos=0,r.token=-1,r.tokenPos=0,r.nextToken=-1,r.nextTokenPos=0,r.nextTokenOnNewLine=!1,r.onComment=null,r.source=n,r.pos=0,r.end=n.text.length,r.diagnostics=t||new Array;var i=r.end,a=n.text;if(r.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=r){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,r));break}var a=e.charCodeAt(this.pos);if(a==n){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=n){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},n.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var n=this.source.text,t=n.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!r&&47==i)break;if(l.isLineBreak(i)){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(n,this.pos)},n.prototype.readRegexpFlags=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=0;this.pos57)&&95!=r)break;t++}return!0},n.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)t=i64_add(i64_shl(t,r),i64_new(u-48));else if(u>=65&&u<=70)t=i64_add(i64_shl(t,r),i64_new(10+u-65));else if(u>=97&&u<=102)t=i64_add(i64_shl(t,r),i64_new(10+u-97));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readDecimalInteger=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=i64_new(0),i=i64_new(10),a=n;this.pos=48&&u<=57)r=i64_add(i64_mul(r,i),i64_new(u-48));else{if(95!=u)break;a==o&&this.error(a==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),a=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Digit_expected,this.range(n)):a==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),r},n.prototype.readOctalInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(3),i=n,a=this.end;this.pos=48&&u<=55)t=i64_add(i64_shl(t,r),i64_new(u-48));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}++this.pos}return this.pos==n?this.error(s.DiagnosticCode.Octal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readBinaryInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(1),i=n,a=this.end;this.pos=48&&i<=57)n=(n<<4)+i-48;else if(i>=65&&i<=70)n=(n<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";n=(n<<4)+i+-87}if(0==--e)break}return e?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(n)},n.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,n=this.readHexInteger(),t=i64_low(n),r=!1;assert(!i64_high(n)),t>1114111&&(this.error(s.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),r=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),r=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(s.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),r=!0),r?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},n.prototype.finish=function(){},n}(s.DiagnosticEmitter);n.Tokenizer=p;var h=function(){};n.State=h;var g=null},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(n.DiagnosticCode||(n.DiagnosticCode={})),n.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)});Object.defineProperty(n,"__esModule",{value:!0});var a=t(0),o=t(1),s=t(17),u=t(22),l=t(24);function c(e){return e.text.includes("@nearfile")||d(e)}function f(e){return s.ASTBuilder.build(e)}function d(e){return(e.kind==a.NodeKind.SOURCE?e:e.range.source).sourceKind==a.SourceKind.USER_ENTRY}function p(e){return e.kind==a.NodeKind.CLASSDECLARATION}function h(e){return e.kind==a.NodeKind.FIELDDECLARATION}var g=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},n.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],n.sb=[],n.exportedClasses=new Map,n.wrappedFuncs=new Set,n}return i(n,e),n.build=function(e,t){return(new n).build(t)},n.nearFiles=function(e){return e.program.sources.filter(c)},n.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(f(e.name))||this.exportedClasses.set(f(e.name),e)},n.prototype.visitFunctionDeclaration=function(n){!d(n)||this.wrappedFuncs.has(f(n.name))||!n.is(o.CommonFlags.EXPORT)||0==n.signature.parameters.length&&"void"===f(n.signature.returnType)?e.prototype.visitFunctionDeclaration.call(this,n):(this.generateWrapperFunction(n),n.flags=n.flags^o.CommonFlags.EXPORT,this.wrappedFuncs.add(f(n.name)))},n.prototype.generateWrapperFunction=function(e){var n=e.signature,t=n.parameters,r=n.returnType,i=f(r).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),a=f(r).includes("null"),o=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+o+"(): void {"),t.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==f(r)?this.sb.push(" let result: "+f(r)+" = "+o+"("):this.sb.push(" "+o+"("),t.length>0&&(this.sb[this.sb.length-1]+=t.map(function(e){return x(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==f(r)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+i+">() || isNullable<"+i+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+i+">(encoder, result"+(a?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+o+" as "+o+" }\n")},n.prototype.typeName=function(e){if(!p(e))return s.ASTBuilder.build(e);var n=f((e=e).name);return e.isGeneric&&(n+="<"+e.typeParameters.map(f).join(", ")+">"),n},n.prototype.getFields=function(e){var n=p(e)?e:this.exportedClasses.get(f(e));return null==n?[]:n.members.filter(function(e){return e.kind==a.NodeKind.FIELDDECLARATION}).map(function(e){return{name:f(e.name),type:e.type,isGeneric:v(n,e)}})},n.prototype.build=function(e){var n=this;this.sb=[l.preamble],this.visit(e);var t=e.statements.map(function(e){var t=s.ASTBuilder.build(e);if(p(e)){var r=e;if(t=t.slice(0,t.lastIndexOf("}")),r.members.filter(h).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var i=n.typeName(r);t+="\n static decode(json: Uint8Array): "+i+" {\n let value = instantiate<"+i+">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): "+i+' {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, "argument must be Uint8Array or Json Object");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): '+i+" {\n "+r.members.filter(h).map(function(e){var n=f(e.name);return x(e,"this."+n+' = obj.has("'+n+'") ? ')+": this."+n+";"}).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+r.members.filter(h).map(function(e){var n=f(e.type),t=f(e.name);return"encode<"+n+">(encoder, this."+t+', "'+t+'");'}).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return t});return this.sb.concat(t).join("\n")},n}(u.BaseVisitor);function x(e,n){return void 0===n&&(n=""),n+"decode<"+f(e.type)+', Obj>(obj, "'+f(e.name)+'")'}function v(e,n){return null!=e.typeParameters&&e.typeParameters.some(function(e){return f(e.name)==f(n.type)})}n.afterParse=function(e,n,t){g.nearFiles(e).forEach(function(r){var i=r.text.substr(0,r.text.indexOf("\n")).includes("out");e.donelog.delete(r.internalPath),e.seenlog.delete(r.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==r});var a=g.build(e,r);i&&n("out/"+r.normalizedPath,a,t),e.parseFile(a,(d(r)?"":"./")+r.normalizedPath,d(r))})}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(n.Feature||(n.Feature={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(n.Target||(n.Target={}))},function(e,n,t){"use strict";var r=this&&this.__decorate||function(e,n,t,r){var i,a=arguments.length,o=a<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,n,t,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(n,t,o):i(n,t))||o);return a>3&&o&&Object.defineProperty(n,t,o),o};Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(){}return r([()=>{}],e)}();n.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(n.TypeinfoFlags||(n.TypeinfoFlags={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i=t(5),a=t(2),o=t(5);function s(e){switch(e){case r.INFO:return"INFO";case r.WARNING:return"WARNING";case r.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case r.INFO:return n.COLOR_BLUE;case r.WARNING:return n.COLOR_YELLOW;case r.ERROR:return n.COLOR_RED;default:return assert(!1),""}}n.DiagnosticCode=o.DiagnosticCode,n.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(r=n.DiagnosticCategory||(n.DiagnosticCategory={})),n.diagnosticCategoryToString=s,n.COLOR_BLUE="",n.COLOR_YELLOW="",n.COLOR_RED="",n.COLOR_RESET="",n.diagnosticCategoryToColor=u;var l=function(){function e(e,n,t){this.range=null,this.relatedRange=null,this.code=e,this.category=n,this.message=t}return e.create=function(n,t,r,a,o){void 0===r&&(r=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(n);return null!=r&&(s=s.replace("{0}",r)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(n,t,s)},e.createInfo=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.INFO,t,i)},e.createWarning=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.WARNING,t,i)},e.createError=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function c(e,t){void 0===t&&(t=!1);for(var r=e.source.text,i=r.length,o=e.start,s=e.end;o>0&&!a.isLineBreak(r.charCodeAt(o-1));)o--;for(;s=0&&n<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(n))),i64_zero)},n.bitsetSet=function(e,n,t){return assert(n>=0&&n<64),t?i64_or(e,i64_shl(i64_one,i64_new(n))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(n))))}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(n.CharCode||(n.CharCode={})),n.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},n.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},n.isDecimalDigit=function(e){return e>=48&&e<=57},n.isOctalDigit=function(e){return e>=48&&e<=55},n.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,r);var n},n.isKeywordCharacter=function(e){return e>=97&&e<=122},n.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,i);var n};var r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,n){if(e>1),(r=n[t-=1&t])<=e&&e<=n[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0}),n.makeArray=function(e){if(void 0===e&&(e=null),e){for(var n=new Array(e.length),t=0,r=e.length;t0||r=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=n?e.substring(0,a):e.substring(0,a)+e.substring(t+3),r-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){r=(e=e.substring(t+4)).length;continue}}}t++}return r>0?e:"."}function o(e){var n=e.length;if(n<=1){if(0==n)return".";if(e.charCodeAt(0)==i)return e}for(;--n>0;)if(e.charCodeAt(n)==i)return e.substring(0,n);return"."}n.normalizePath=a,n.resolvePath=function(e,n){return e.startsWith("std/")?e:a(o(n)+r.PATH_DELIMITER+e)},n.dirname=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.indent=function(e,n){for(;n>=4;)e.push(" "),n-=4;n>=2&&(e.push(" "),n-=2),n&&e.push(" ")}},function(e,n,t){"use strict";function r(e,n){return e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24}function i(e,n,t){n[t]=e,n[t+1]=e>>>8,n[t+2]=e>>>16,n[t+3]=e>>>24}function a(e,n){var t=r(e,n),i=r(e,n+4);return i64_new(t,i)}Object.defineProperty(n,"__esModule",{value:!0}),n.readI8=function(e,n){return e[n]},n.writeI8=function(e,n,t){n[t]=e},n.readI16=function(e,n){return e[n]|e[n+1]<<8},n.writeI16=function(e,n,t){n[t]=e,n[t+1]=e>>>8},n.readI32=r,n.writeI32=i,n.readI64=a,n.writeI64=function(e,n,t){i(i64_low(e),n,t),i(i64_high(e),n,t+4)},n.readF32=function(e,n){return i32_as_f32(r(e,n))},n.writeF32=function(e,n,t){i(f32_as_i32(e),n,t)},n.readF64=function(e,n){return i64_as_f64(a(e,n))},n.writeF64=function(e,n,t){var r=f64_as_i64(e);i(i64_low(r),n,t),i(i64_high(r),n,t+4)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(0);t(18),t(19),t(20);var i=t(1),a=t(2),o=t(4),s=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(n){var t=new e;return t.visitNode(n),t.finish()},e.prototype.visitNode=function(e){switch(e.kind){case r.NodeKind.SOURCE:this.visitSource(e);break;case r.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case r.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case r.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case r.NodeKind.FALSE:case r.NodeKind.NULL:case r.NodeKind.SUPER:case r.NodeKind.THIS:case r.NodeKind.TRUE:case r.NodeKind.CONSTRUCTOR:case r.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case r.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case r.NodeKind.BINARY:this.visitBinaryExpression(e);break;case r.NodeKind.CALL:this.visitCallExpression(e);break;case r.NodeKind.CLASS:this.visitClassExpression(e);break;case r.NodeKind.COMMA:this.visitCommaExpression(e);break;case r.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case r.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case r.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case r.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case r.NodeKind.NEW:this.visitNewExpression(e);break;case r.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case r.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case r.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case r.NodeKind.BLOCK:this.visitBlockStatement(e);break;case r.NodeKind.BREAK:this.visitBreakStatement(e);break;case r.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case r.NodeKind.DO:this.visitDoStatement(e);break;case r.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case r.NodeKind.EXPORT:this.visitExportStatement(e);break;case r.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case r.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case r.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case r.NodeKind.FOR:this.visitForStatement(e);break;case r.NodeKind.IF:this.visitIfStatement(e);break;case r.NodeKind.IMPORT:this.visitImportStatement(e);break;case r.NodeKind.RETURN:this.visitReturnStatement(e);break;case r.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case r.NodeKind.THROW:this.visitThrowStatement(e);break;case r.NodeKind.TRY:this.visitTryStatement(e);break;case r.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case r.NodeKind.WHILE:this.visitWhileStatement(e);break;case r.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case r.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case r.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case r.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case r.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case r.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case r.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case r.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case r.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case r.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case r.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case r.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case r.NodeKind.DECORATOR:this.serializeDecorator(e);break;case r.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case r.NodeKind.PARAMETER:this.serializeParameter(e);break;case r.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var n=e.statements,t=0,r=n.length;t")}e.isNullable&&r.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var n=e.isNullable,t=this.sb;t.push(n?"((":"(");var r=e.explicitThisType;r&&(t.push("this: "),this.visitTypeNode(r));var i=e.parameters,a=i.length;if(a){r&&t.push(", "),this.serializeParameter(i[0]);for(var o=1;o "),this.visitTypeNode(s)):t.push(") => void"),n&&t.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var n=e.extendsType;n&&(this.sb.push(" extends "),this.visitTypeNode(n));var t=e.defaultType;t&&(this.sb.push("="),this.visitTypeNode(t))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var n=this.sb;n.push("[");var t=e.elementExpressions,r=t.length;if(r){t[0]&&this.visitNode(t[0]);for(var i=1;i"),this.visitNode(e.expression);break;case r.AssertionKind.AS:this.visitNode(e.expression),n.push(" as "),this.visitTypeNode(assert(e.toType));break;case r.AssertionKind.NONNULL:this.visitNode(e.expression),n.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var n=this.sb;this.visitNode(e.left),n.push(" "),n.push(o.operatorTokenToString(e.operator)),n.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var n=this.sb;this.visitNode(e.expression);var t=e.typeArguments;if(t){var r=t.length;if(r){n.push("<"),this.visitTypeNode(t[0]);for(var i=1;i(")}}else n.push("(");var a=e.arguments,o=a.length;if(o)for(this.visitNode(a[0]),i=1;ir&&t.push(e.substring(r,r=a+1)),t.push("\\0"),r=++a;break;case 8:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\b");break;case 9:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\t");break;case 10:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\n");break;case 11:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\v");break;case 12:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\f");break;case 13:a>r&&t.push(e.substring(r,a)),t.push("\\r"),r=++a;break;case 34:n?++a:(a>r&&t.push(e.substring(r,a)),t.push('\\"'),r=++a);break;case 39:n?(a>r&&t.push(e.substring(r,a)),t.push("\\'"),r=++a):++a;break;case 92:a>r&&t.push(e.substring(r,a)),t.push("\\\\"),r=++a;break;default:++a}a>r&&t.push(e.substring(r,a)),t.push(i)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var n=this.sb;n.push("/"),n.push(e.pattern),n.push("/"),n.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var n=this.sb;n.push("("),this.visitNode(e.expression),n.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var n=this.sb;this.visitNode(e.condition),n.push(" ? "),this.visitNode(e.ifThen),n.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(o.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(o.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var n=this.sb;if(n.length&&e.kind!=r.NodeKind.VARIABLE&&e.kind!=r.NodeKind.EXPRESSION){var t=n[n.length-1],i=t.length-1;i>=0&&(125==t.charCodeAt(i)||59==t.charCodeAt(i))?n.push("\n"):n.push(";\n")}else n.push(";\n")},e.prototype.visitBlockStatement=function(e){var n=this.sb,t=e.statements,r=t.length;if(r){n.push("{\n");for(var i=++this.indentLevel,o=0;o")}var c=e.extendsType;c&&(u.push(" extends "),this.visitTypeNode(c));var f=e.implementsTypes;if(f){var d=f.length;if(d)for(u.push(" implements "),this.visitTypeNode(f[0]),o=1;o")}}if(2==e.arrowKind){var u=t.parameters;assert(1==u.length),assert(!t.explicitThisType),this.serializeParameter(u[0])}else{n.push("(");var l=(u=t.parameters).length,c=t.explicitThisType;if(c&&(n.push("this: "),this.visitTypeNode(c)),l)for(c&&n.push(", "),this.serializeParameter(u[0]),s=1;s "),this.visitNode(f)):(assert(!r.isTypeOmitted(d)),n.push(" => "),this.visitTypeNode(d)):(r.isTypeOmitted(d)||e.isAny(i.CommonFlags.CONSTRUCTOR|i.CommonFlags.SET)?n.push(")"):(n.push("): "),this.visitTypeNode(d)),f&&(n.push(" "),this.visitNode(f)))},e.prototype.visitIfStatement=function(e){var n=this.sb;n.push("if ("),this.visitNode(e.condition),n.push(") ");var t=e.ifTrue;this.visitNode(t),t.kind!=r.NodeKind.BLOCK&&n.push(";\n");var i=e.ifFalse;i&&(t.kind==r.NodeKind.BLOCK?n.push(" else "):n.push("else "),this.visitNode(i))},e.prototype.visitImportDeclaration=function(e){var n=e.foreignName,t=e.name;this.visitIdentifierExpression(n),n.text!=t.text&&(this.sb.push(" as "),this.visitIdentifierExpression(t))},e.prototype.visitImportStatement=function(e){var n=this.sb;n.push("import ");var t=e.declarations,r=e.namespaceName;if(t){var i=t.length;if(i){n.push("{\n");var o=++this.indentLevel;a.indent(n,o),this.visitImportDeclaration(t[0]);for(var s=1;s")}var u=e.extendsType;u&&(o.push(" extends "),this.visitTypeNode(u)),o.push(" {\n");var l=++this.indentLevel,c=e.members;for(r=0,i=c.length;r")}}i.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var n=e.type,t=this.sb;e.flags&i.CommonFlags.DEFINITE_ASSIGNMENT&&t.push("!"),n&&(t.push(": "),this.visitTypeNode(n));var r=e.initializer;r&&(t.push(" = "),this.visitNode(r))},e.prototype.visitVariableStatement=function(e){var n=e.decorators;if(n)for(var t=0,r=n.length;t>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(n.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(n.i32=n.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(n.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(n.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(n.u32=n.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(n.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(n.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(n.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),n.clz=Math.clz32,n.ctz=function(e){var n=Math.clz32(e&-e);return e?31-n:n},n.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},n.rotl=function(e,n){return e<<(n&=31)|e>>>32-n},n.rotr=function(e,n){return e>>>(n&=31)|e<<32-n},n.abs=Math.abs,n.max=Math.max,n.min=Math.min,n.ceil=Math.ceil,n.floor=Math.floor,n.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},n.select=function(e,n,t){return t?e:n},n.sqrt=Math.sqrt,n.trunc=Math.trunc,n.copysign=function(e,n){return Math.abs(e)*Math.sign(n)},n.bswap=function(e){var n=e>>8&16711935,t=(16711935&e)<<8;return(n=(e=n|t)>>16&65535)|(65535&e)<<16},n.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",n.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",n.assert=function(e,n){if(e)return e;throw new a(n)},n.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,n){var t=this.split(e).join(n);return e.length||(t=n+t+n),t}}),n.isInteger=Number.isInteger,n.isFloat=function(e){return"number"==typeof e},n.isNullable=function(e){return!0},n.isReference=function(e){return"object"==typeof e||"string"==typeof e},n.isFunction=function(e){return"function"==typeof e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isArray=Array.isArray,n.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var n=new Array(e);return n.length=0,n},n.isDefined=function(e){return void 0!==e},n.isConstant=function(e){return!1},n.unchecked=function(e){return e},n.fmod=function(e,n){return e%n},n.fmodf=function(e,n){return Math.fround(e%n)},n.JSMath=Math;try{Object.defineProperties(n.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(r[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}n.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:n.__memory_allocate||function(n){if(!(n>>>=0))return 0;if(t+n>e.length){var r=e;(e=new Uint8Array(Math.max(65536,e.length+n,2*e.length))).set(r)}var i=t;return 7&(t+=n)&&(t=1+(7|t)),i},fill:n.__memory_fill||function(n,t,r){e.fill(t,n,n+r)},free:n.__memory_free||function(e){},copy:n.__memory_copy||function(n,t,r){e.copyWithin(n,t,t+r)},reset:n.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),n.store=n.__store||function(e,n,t){HEAP[(0|e)+(0|t)]=n},n.load=n.__load||function(e,n){return HEAP[(0|e)+(0|n)]},n.unmanaged=function(){}}).call(this,t(3))},function(e,n,t){(function(e){const n=new Float64Array(1),t=new Float32Array(n.buffer),r=new Int32Array(n.buffer);e.f32_as_i32=function(e){return t[0]=e,r[0]},e.i32_as_f32=function(e){return r[0]=e,t[0]},e.f64_as_i64=function(e){return n[0]=e,i64_new(r[0],r[1])},e.i64_as_f64=function(e){return r[0]=i64_low(e),r[1]=i64_high(e),n[0]}}).call(this,t(3))},function(e,n,t){(function(e){const n=e.Long||t(21);e.i64_zero=n.ZERO,e.i64_one=n.ONE,e.i64_new=function(e,t){return n.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,n){return e.add(n)},e.i64_sub=function(e,n){return e.sub(n)},e.i64_mul=function(e,n){return e.mul(n)},e.i64_div=function(e,n){return e.div(n)},e.i64_div_u=function(e,n){return e.toUnsigned().div(n.toUnsigned()).toSigned()},e.i64_rem=function(e,n){return e.mod(n)},e.i64_rem_u=function(e,n){return e.toUnsigned().mod(n.toUnsigned()).toSigned()},e.i64_and=function(e,n){return e.and(n)},e.i64_or=function(e,n){return e.or(n)},e.i64_xor=function(e,n){return e.xor(n)},e.i64_shl=function(e,n){return e.shl(n)},e.i64_shr=function(e,n){return e.shr(n)},e.i64_shr_u=function(e,n){return e.shru(n)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,n){return e.eq(n)},e.i64_ne=function(e,n){return e.ne(n)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var r=n.fromInt(t-1);return e.add(r).and(r.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const r=n.fromNumber(f32.MIN_SAFE_INTEGER),i=n.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(r)&&e.lte(i)};const a=n.fromNumber(f64.MIN_SAFE_INTEGER),o=n.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(n){return e.Math.fround(n.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,n){return(n?e.toUnsigned():e).toString(10)}}).call(this,t(3))},function(e,n){e.exports=r;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function r(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0}),r.isLong=i;var a={},o={};function s(e,n){var t,r,i;return n?(i=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(t=l(e,(0|e)<0?-1:0,!0),i&&(o[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function u(e,n){if(isNaN(e))return n?m:v;if(n){if(e<0)return m;if(e>=h)return T}else{if(e<=-g)return A;if(e+1>=g)return E}return e<0?u(-e,n).neg():l(e%p|0,e/p|0,n)}function l(e,n,t){return new r(e,n,t)}r.fromInt=s,r.fromNumber=u,r.fromBits=l;var c=Math.pow;function f(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return v;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return f(e.substring(1),n,t).neg();for(var i=u(c(t,8)),a=v,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return l+o;for(;l.length<6;)l="0"+l;o=""+l+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(A)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,n=31;n>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=d(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=d(e)),this.eq(e))return 0;var n=this.isNegative(),t=e.isNegative();return n&&!t?-1:!n&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(A)?A:this.not().add(_)},S.neg=S.negate,S.add=function(e){i(e)||(e=d(e));var n=this.high>>>16,t=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,u=e.low>>>16,c=0,f=0,p=0,h=0;return p+=(h+=a+(65535&e.low))>>>16,f+=(p+=r+u)>>>16,c+=(f+=t+s)>>>16,c+=n+o,l((p&=65535)<<16|(h&=65535),(c&=65535)<<16|(f&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=d(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return v;if(i(e)||(e=d(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return v;if(this.eq(A))return e.isOdd()?A:v;if(e.eq(A))return this.isOdd()?A:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(x)&&e.lt(x))return u(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,r=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,h=0,g=0,m=0,_=0;return m+=(_+=o*p)>>>16,g+=(m+=a*p)>>>16,m&=65535,g+=(m+=o*f)>>>16,h+=(g+=r*p)>>>16,g&=65535,h+=(g+=a*f)>>>16,g&=65535,h+=(g+=o*c)>>>16,h+=n*p+r*f+a*c+o*s,l((m&=65535)<<16|(_&=65535),(h&=65535)<<16|(g&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=d(e)),e.isZero())throw Error("division by zero");var n,r,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return m;if(e.gt(this.shru(1)))return y;a=m}else{if(this.eq(A))return e.eq(_)||e.eq(b)?A:e.eq(A)?_:(n=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?_:b:(r=this.sub(e.mul(n)),a=n.add(r.div(e)));if(e.eq(A))return this.unsigned?m:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=v}for(r=this;r.gte(e);){n=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),s=o<=48?1:c(2,o-48),f=u(n),p=f.mul(e);p.isNegative()||p.gt(r);)p=(f=u(n-=s,this.unsigned)).mul(e);f.isZero()&&(f=_),a=a.add(f),r=r.sub(p)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=d(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return l(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=d(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=d(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=d(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0==(e&=63))return this;var n=this.high;return e<32?l(this.low>>>e|n<<32-e,n>>>e,this.unsigned):l(32===e?n:n>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,n=this.low;return[255&n,n>>>8&255,n>>>16&255,n>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,n>>>24,n>>>16&255,n>>>8&255,255&n]},r.fromBytes=function(e,n,t){return t?r.fromBytesLE(e,n):r.fromBytesBE(e,n)},r.fromBytesLE=function(e,n){return new r(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},r.fromBytesBE=function(e,n){return new r(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}),a=this&&this.__values||function(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(n,"__esModule",{value:!0});var o=t(0),s=function(e){function n(n){var t=e.call(this,n)||this;return t.depth=0,t}return i(n,e),n.prototype._visit=function(e){switch(e.kind){case o.NodeKind.SOURCE:this.visitSource(e);break;case o.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case o.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case o.NodeKind.TYPENAME:this.visitTypeName(e);case o.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case o.NodeKind.FALSE:case o.NodeKind.NULL:case o.NodeKind.SUPER:case o.NodeKind.THIS:case o.NodeKind.TRUE:case o.NodeKind.CONSTRUCTOR:case o.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case o.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case o.NodeKind.BINARY:this.visitBinaryExpression(e);break;case o.NodeKind.CALL:this.visitCallExpression(e);break;case o.NodeKind.CLASS:this.visitClassExpression(e);break;case o.NodeKind.COMMA:this.visitCommaExpression(e);break;case o.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case o.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case o.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case o.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case o.NodeKind.NEW:this.visitNewExpression(e);break;case o.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case o.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case o.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case o.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case o.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case o.NodeKind.BLOCK:this.visitBlockStatement(e);break;case o.NodeKind.BREAK:this.visitBreakStatement(e);break;case o.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case o.NodeKind.DO:this.visitDoStatement(e);break;case o.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case o.NodeKind.EXPORT:this.visitExportStatement(e);break;case o.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case o.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case o.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case o.NodeKind.FOR:this.visitForStatement(e);break;case o.NodeKind.IF:this.visitIfStatement(e);break;case o.NodeKind.IMPORT:this.visitImportStatement(e);break;case o.NodeKind.RETURN:this.visitReturnStatement(e);break;case o.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case o.NodeKind.THROW:this.visitThrowStatement(e);break;case o.NodeKind.TRY:this.visitTryStatement(e);break;case o.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case o.NodeKind.WHILE:this.visitWhileStatement(e);break;case o.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case o.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case o.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case o.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case o.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case o.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case o.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case o.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case o.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case o.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case o.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case o.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case o.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case o.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case o.NodeKind.PARAMETER:this.visitParameter(e);break;case o.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},n.prototype.visitSource=function(e){var n,t;try{for(var r=a(e.statements),i=r.next();!i.done;i=r.next()){var o=i.value;this.depth++,this.visit(o),this.depth--}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}},n.prototype.visitTypeNode=function(e){},n.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},n.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},n.prototype.visitFunctionTypeNode=function(e){var n,t;try{for(var r=a(e.parameters),i=r.next();!i.done;i=r.next()){var o=i.value;this.visit(o)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}this.visit(e.returnType)},n.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},n.prototype.visitIdentifierExpression=function(e){},n.prototype.visitArrayLiteralExpression=function(e){var n=this;e.elementExpressions.map(function(e){e&&n.visit(e)})},n.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var n=0;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();n.DefaultWriter=a;var o=function(){function e(e){void 0===e&&(e=new a),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var n,t,a,o,s,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var l=r(e.entries()),c=l.next();!c.done;c=l.next()){var f=i(c.value,2),d=(f[0],f[1]);this.visit(d)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}else if(null!=(s=e)&&"function"==typeof s[Symbol.iterator])try{for(var p=r(e),h=p.next();!h.done;h=p.next())d=h.value,this.visit(d)}catch(e){a={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(a)throw a.error}}else this._visit(e)},e}();n.AbstractVisitor=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])},function(e,n){if(void 0===__WEBPACK_EXTERNAL_MODULE__11__){var t=new Error("Cannot find module 'assemblyscript'");throw t.code="MODULE_NOT_FOUND",t}e.exports=__WEBPACK_EXTERNAL_MODULE__11__},function(e){e.exports=JSON.parse('{"version":{"description":"Prints just the compiler\'s version and exits.","type":"b","alias":"v"},"help":{"description":"Prints this message and exits.","type":"b","alias":"h"},"optimize":{"description":["Optimizes the module. Also has the usual shorthands:",""," -O Uses defaults. Equivalent to -O3s"," -O0 Equivalent to --optimizeLevel 0"," -O1 Equivalent to --optimizeLevel 1"," -O2 Equivalent to --optimizeLevel 2"," -O3 Equivalent to --optimizeLevel 3"," -Oz Equivalent to -O but with --shrinkLevel 2"," -O3s Equivalent to -O3 with --shrinkLevel 1 etc.",""],"type":"b","alias":"O"},"optimizeLevel":{"description":"How much to focus on optimizing code. [0-3]","type":"i"},"shrinkLevel":{"description":"How much to focus on shrinking code size. [0-2, s=1, z=2]","type":"i"},"validate":{"description":"Validates the module using Binaryen. Exits if invalid.","type":"b","alias":"c","default":false},"baseDir":{"description":"Specifies the base directory of input and output files.","type":"s","default":"."},"outFile":{"description":"Specifies the output file. File extension indicates format.","type":"s","alias":"o"},"binaryFile":{"description":"Specifies the binary output file (.wasm).","type":"s","alias":"b"},"textFile":{"description":"Specifies the text output file (.wat).","type":"s","alias":"t"},"asmjsFile":{"description":"Specifies the asm.js output file (.js).","type":"s","alias":"a"},"idlFile":{"description":"Specifies the WebIDL output file (.webidl).","type":"s","alias":"i"},"tsdFile":{"description":"Specifies the TypeScript definition output file (.d.ts).","type":"s","alias":"d"},"sourceMap":{"description":["Enables source map generation. Optionally takes the URL","used to reference the source map from the binary file."],"type":"s"},"runtime":{"description":["Specifies the runtime variant to include in the program.",""," full Default runtime based on TLSF and reference counting."," half Same as \'full\', but not exported to the host."," stub Minimal stub implementation without free/GC support."," none Same as \'stub\', but not exported to the host.",""],"type":"s","default":"full"},"noUnsafe":{"description":["Disallows the use of unsafe features in user code.","Does not affect library files and external modules."],"type":"b","default":false},"debug":{"description":"Enables debug information in emitted binaries.","type":"b","default":false},"noAssert":{"description":"Replaces assertions with just their value without trapping.","type":"b","default":false},"noEmit":{"description":"Performs compilation as usual but does not emit code.","type":"b","default":false},"importMemory":{"description":"Imports the memory instance provided by the embedder.","type":"b","default":false},"sharedMemory":{"description":"Declare memory as shared by settings the max shared memory.","type":"i","default":0},"memoryBase":{"description":"Sets the start offset of compiler-generated static memory.","type":"i","default":0},"importTable":{"description":"Imports the function table instance provided by the embedder.","type":"b","default":false},"explicitStart":{"description":"Exports an explicit start function to be called manually.","type":"b","default":false},"lib":{"description":["Adds one or multiple paths to custom library components and","uses exports of all top-level files at this path as globals."],"type":"s"},"path":{"description":["Comma separated paths to look for dependencies.","Looks for folders with package.json that includes a \'ascMain\' field","or defaults to having an \'/assembly\' folder."],"type":"S"},"use":{"description":["Aliases a global object under another name, e.g., to switch","the default \'Math\' implementation used: --use Math=JSMath"],"type":"S","alias":"u"},"trapMode":{"description":["Sets the trap mode to use.",""," allow Allow trapping operations. This is the default."," clamp Replace trapping operations with clamping semantics."," js Replace trapping operations with JS semantics.",""],"type":"s","default":"allow"},"runPasses":{"description":["Specifies additional Binaryen passes to run after other","optimizations, if any. See: Binaryen/src/passes/pass.cpp"],"type":"s"},"enable":{"description":["Enables additional (experimental) WebAssembly features.",""," sign-extension Enables sign-extension operations"," mutable-global Enables mutable global imports and exports"," bulk-memory Enables bulk memory operations"," simd Enables SIMD types and operations."," threads Enables threading and atomic operations.",""],"type":"s"},"transform":{"description":"Specifies the path to a custom transform to \'require\'.","type":"S"},"traceResolution":{"description":"Enable tracing of package resolution.","type":"b","default":false},"listFiles":{"description":"List files to be compiled and exit.","type":"b","default":false},"measure":{"description":"Prints measuring information on I/O and compile times.","type":"b","default":false},"printrtti":{"description":"Prints the module\'s runtime type information to stderr.","type":"b","default":false},"noColors":{"description":"Disables terminal colors.","type":"b","default":false}," ...":{"description":"Specifies node.js options (CLI only). See: node --help"},"-Os":{"value":{"optimize":true,"shrinkLevel":1}},"-Oz":{"value":{"optimize":true,"shrinkLevel":2}},"-O0":{"value":{"optimizeLevel":0,"shrinkLevel":0}},"-O1":{"value":{"optimizeLevel":1,"shrinkLevel":0}},"-O2":{"value":{"optimizeLevel":2,"shrinkLevel":0}},"-O3":{"value":{"optimizeLevel":3,"shrinkLevel":0}},"-O0s":{"value":{"optimizeLevel":0,"shrinkLevel":1}},"-O1s":{"value":{"optimizeLevel":1,"shrinkLevel":1}},"-O2s":{"value":{"optimizeLevel":2,"shrinkLevel":1}},"-O3s":{"value":{"optimizeLevel":3,"shrinkLevel":1}},"-O0z":{"value":{"optimizeLevel":0,"shrinkLevel":2}},"-O1z":{"value":{"optimizeLevel":1,"shrinkLevel":2}},"-O2z":{"value":{"optimizeLevel":2,"shrinkLevel":2}},"-O3z":{"value":{"optimizeLevel":3,"shrinkLevel":2}},"notNear":{"description":"Prevent the instrumentation of the binding code for near","type":"b","default":false}}')},function(e,n){function t(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=13},function(e,n,t){(function(n,t){e.exports=n.hrtime||function(e){var n=.001*i.call(r),t=Math.floor(n),a=Math.floor(n%1*1e9);e&&(t-=e[0],(a-=e[1])<0&&(t--,a+=1e9));return[t,a]};var r=t.performance||{},i=r.now||r.mozNow||r.msNow||r.oNow||r.webkitNow||function(){return(new Date).getTime()}}).call(this,t(0),t(2))}])}); //# sourceMappingURL=asc.js.map \ No newline at end of file diff --git a/dist/asc.js.map b/dist/asc.js.map index bb3da0a3b5..47c567de59 100644 --- a/dist/asc.js.map +++ b/dist/asc.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/./asc.js","webpack://asc/../node_modules/@protobufjs/utf8/index.js","webpack://asc/./util/colors.js","webpack://asc/./util/options.js","webpack://asc/./util/mkdirp.js","webpack://asc/../bindings/dist/transformerBundle.js","webpack://asc/external \"assemblyscript\"","webpack://asc/. sync","webpack://asc/../node_modules/browser-process-hrtime/index.js"],"names":["root","factory","exports","module","require","e","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__11__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","args","Array","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","g","Function","window","global","fs","utf8","colorsUtil","optionsUtil","mkdirp","EOL","SEP","nearBindings","nearLibEntry","removeAllListeners","assemblyscript","isDev","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","write","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","hrtime","times","formatTime","time","toFixed","printStats","stats","output","format","count","stdout","printRTTI","program","buildRTTI","register","project","e_ts","eval","stack","isBundle","version","options","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","nearEntry","array","arraybuffer","bindings/Date","bindings/Math","bindings/wasi_unstable","bindings/wasi","builtins","compat","dataview","date","diagnostics","error","fixedarray","heap","iterator","map","math","memory","number","polyfills","regexp","rt","rt/common","rt/index-full","rt/index-half","rt/index-none","rt/index-stub","rt/pure","rt/rtrace","rt/stub","rt/tlsf","set","shared/feature","shared/target","shared/typeinfo","string","symbol","table","typedarray","util/error","util/hash","util/memory","util/number","util/sort","util/string","vector","libDir","libFiles","sync","bundled","readFileSync","forEach","file","replace","definitionFiles","assembly","portable","stdDir","compileString","sources","input.ts","createMemoryStream","keys","val","isArray","String","main","readFile","writeFile","contents","listFiles","callback","readFileNode","writeFileNode","listFilesNode","opts","parse","noColors","supported","unknown","arg","yellow","trailing","err","red","help","out","color","white","cyan","baseDir","transforms","notNear","transform","parser","packages","Map","importPathMap","libPath","indexOf","parseFile","customLibDirs","lib","k","endsWith","j","libText","nodePaths","basePath","_path","_","dirFrom","reverse","getPaths","parseBacklog","sourcePath","sourceText","sysPath","nextFile","dependee","getDependee","startsWith","plainName","substring","indexName","traceResolution","_package","ascMain","has","package_json","JSON","mainFile","newPackage","realPath","_p","first","second","runtimeName","runtime","runtimePath","runtimeText","filename","applyTransform","finishParsing","normalizedPath","sort","optimizeLevel","shrinkLevel","optimize","max","compilerOptions","createOptions","setTarget","setNoAssert","noAssert","setImportMemory","importMemory","setSharedMemory","sharedMemory","setImportTable","importTable","setExplicitStart","explicitStart","setMemoryBase","memoryBase","setSourceMap","sourceMap","setOptimizeLevelHints","setNoUnsafe","noUnsafe","setGlobalAlias","use","aliases","part","alias","enable","flag","toUpperCase","enableFeature","compileProgram","dispose","validate","trapMode","runPasses","setOptimizeLevel","setShrinkLevel","setDebugInfo","debug","pass","noEmit","hasStdout","hasOutput","outFile","test","textFile","asmjsFile","binaryFile","wasm","sourceMapURL","toBinary","writeStdout","sourceRoot","text","stdName","sourceContents","stringify","asm","toAsmjs","idlFile","idl","buildIDL","tsdFile","tsd","buildTSD","wat","toText","printrtti","encoding","writeFileSync","files","readdirSync","used","allocBuffer","Buffer","allocUnsafe","Uint8Array","stream","chunk","buffer","reset","toBuffer","offset","toString","read","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","target","noLib","types","allowJs","fromCharCode","c1","c2","proc","isCI","base","colors","gray","GRAY","RESET","RED","green","GREEN","YELLOW","blue","BLUE","magenta","MAGENTA","CYAN","WHITE","config","option","default","match","exec","type","parseInt","parseFloat","indent","padding","eol","sb","description","line","_0777","made","undefined","mkdirSync","err0","stat","statSync","err1","isDirectory","__extends","setPrototypeOf","__proto__","constructor","a","Token","Range","u","SOURCE","NAMEDTYPE","FUNCTIONTYPE","TYPENAME","TYPEPARAMETER","PARAMETER","IDENTIFIER","ASSERTION","BINARY","CALL","CLASS","COMMA","ELEMENTACCESS","FALSE","FUNCTION","INSTANCEOF","LITERAL","NEW","NULL","PARENTHESIZED","PROPERTYACCESS","TERNARY","SUPER","THIS","TRUE","CONSTRUCTOR","UNARYPOSTFIX","UNARYPREFIX","BLOCK","BREAK","CONTINUE","DO","EMPTY","EXPORT","EXPORTDEFAULT","EXPORTIMPORT","EXPRESSION","FOR","IF","IMPORT","RETURN","SWITCH","THROW","TRY","VARIABLE","VOID","WHILE","CLASSDECLARATION","ENUMDECLARATION","ENUMVALUEDECLARATION","FIELDDECLARATION","FUNCTIONDECLARATION","IMPORTDECLARATION","INDEXSIGNATUREDECLARATION","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","TYPEDECLARATION","VARIABLEDECLARATION","DECORATOR","EXPORTMEMBER","SWITCHCASE","COMMENT","NodeKind","nodeIsConstantValue","nodeIsCallable","nodeIsGenericCallable","createTypeName","range","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","h","typeArguments","isNullable","createFunctionType","parameters","returnType","explicitThisType","createOmittedType","createTypeParameter","extendsType","defaultType","createParameter","initializer","parameterKind","createDecorator","v","decoratorKind","A","createComment","commentKind","y","isQuoted","createEmptyIdentifierExpression","createArrayLiteralExpression","R","elementExpressions","createAssertionExpression","assertionKind","expression","toType","createBinaryExpression","I","operator","left","right","createCallExpression","b","createClassExpression","L","declaration","createCommaExpression","C","expressions","createConstructorExpression","O","createElementAccessExpression","x","elementExpression","createFalseExpression","Q","createFloatLiteralExpression","P","createFunctionExpression","D","createInstanceOfExpression","U","isType","createIntegerLiteralExpression","w","createNewExpression","M","createNullExpression","createObjectLiteralExpression","F","names","values","createParenthesizedExpression","K","createPropertyAccessExpression","B","createRegexpLiteralExpression","H","pattern","patternFlags","createTernaryExpression","G","condition","ifThen","ifElse","createStringLiteralExpression","Y","createSuperExpression","V","createThisExpression","z","createTrueExpression","X","createUnaryPostfixExpression","W","operand","createUnaryPrefixExpression","q","createBlockStatement","ne","statements","createBreakStatement","re","label","createClassDeclaration","se","flags","typeParameters","implementsTypes","members","decorators","createContinueStatement","ae","createDoStatement","oe","statement","createEmptyStatement","ue","createEnumDeclaration","ce","createEnumValueDeclaration","_e","createExportStatement","le","normalizePath","resolvePath","source","internalPath","we","isDeclare","createExportDefaultStatement","de","createExportImportStatement","pe","externalName","createExportMember","he","localName","exportedName","createExpressionStatement","Ee","createIfStatement","me","ifTrue","ifFalse","createImportStatement","Ne","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","Te","foreignName","createInterfaceDeclaration","ye","createFieldDeclaration","fe","createForStatement","Ae","incrementor","createFunctionDeclaration","ve","signature","body","arrowKind","createIndexSignatureDeclaration","te","keyType","valueType","createMethodDeclaration","Se","createNamespaceDeclaration","Re","createReturnStatement","ge","createSwitchStatement","be","cases","createSwitchCase","Ie","createThrowStatement","Le","createTryStatement","Ce","catchVariable","catchStatements","finallyStatements","createTypeDeclaration","Oe","createVariableStatement","Pe","createVariableDeclaration","xe","createVoidStatement","De","createWhileStatement","Ue","Node","TypeNode","kind","TypeName","NamedTypeNode","FunctionTypeNode","TypeParameterNode","DEFAULT","OPTIONAL","REST","ParameterKind","E","implicitFieldDeclaration","CommonFlags","NONE","is","isAny","assert","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","ParameterNode","DecoratorKind","decoratorNameToKind","DecoratorNode","LINE","TRIPLE","CommentKind","CommentNode","T","Expression","N","IdentifierExpression","FLOAT","INTEGER","STRING","REGEXP","ARRAY","OBJECT","LiteralKind","S","LiteralExpression","literalKind","ArrayLiteralExpression","PREFIX","AS","NONNULL","AssertionKind","AssertionExpression","BinaryExpression","configurable","CallExpression","ClassExpression","CommaExpression","CommonSymbols","ConstructorExpression","ElementAccessExpression","FloatLiteralExpression","FunctionExpression","InstanceOfExpression","IntegerLiteralExpression","NewExpression","null_","NullExpression","ObjectLiteralExpression","ParenthesizedExpression","PropertyAccessExpression","RegexpLiteralExpression","TernaryExpression","StringLiteralExpression","super_","SuperExpression","this_","ThisExpression","true_","TrueExpression","false_","FalseExpression","UnaryExpression","UnaryPostfixExpression","UnaryPrefixExpression","Z","J","Statement","USER","USER_ENTRY","LIBRARY","LIBRARY_ENTRY","SourceKind","$","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","lastIndexOf","PATH_DELIMITER","simplePath","Source","ee","DeclarationStatement","IndexSignatureDeclaration","ie","VariableLikeDeclarationStatement","BlockStatement","BreakStatement","ClassDeclaration","ContinueStatement","DoStatement","EmptyStatement","EnumDeclaration","EnumValueDeclaration","ExportImportStatement","ExportMember","ExportStatement","ExportDefaultStatement","ExpressionStatement","parameterIndex","FieldDeclaration","ForStatement","ARROW_PARENTHESIZED","ARROW_SINGLE","ArrowKind","clone","FunctionDeclaration","IfStatement","ImportDeclaration","ImportStatement","InterfaceDeclaration","MethodDeclaration","NamespaceDeclaration","ReturnStatement","SwitchCase","SwitchStatement","ThrowStatement","TryStatement","TypeDeclaration","VariableDeclaration","VariableStatement","VoidStatement","WhileStatement","findDecorator","mangleInternalPath","isTypeOmitted","DECLARE","CONST","LET","STATIC","READONLY","ABSTRACT","PUBLIC","PRIVATE","PROTECTED","GET","SET","DEFINITE_ASSIGNMENT","AMBIENT","GENERIC","GENERIC_CONTEXT","INSTANCE","MODULE_EXPORT","MODULE_IMPORT","RESOLVED","COMPILED","INLINED","SCOPED","TRAMPOLINE","VIRTUAL","MAIN","QUOTED","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","INDEX_SUFFIX","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","boolean","native","indexof","valueof","returnof","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","FixedArray","Set","ArrayBufferView","ArrayBuffer","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","Feature","Target","Typeinfo","TypeinfoFlags","isPowerOf2","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DELETE","ELSE","ENUM","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","INTERFACE","IS","KEYOF","MODULE","NAMESPACE","OF","PACKAGE","TYPE","TYPEOF","VAR","WITH","YIELD","INVALID","OPENBRACE","CLOSEBRACE","OPENPAREN","CLOSEPAREN","OPENBRACKET","CLOSEBRACKET","DOT","DOT_DOT_DOT","SEMICOLON","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","EQUALS_GREATERTHAN","PLUS","MINUS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","QUESTION","COLON","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","AT","STRINGLITERAL","INTEGERLITERAL","FLOATLITERAL","ENDOFFILE","PREFER","ALWAYS","IdentifierHandling","tokenFromKeyword","tokenIsAlsoIdentifier","isIllegalVariableIdentifier","operatorTokenToString","debugInfoRef","pos","token","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","unsafeNext","MAX_VALUE","isDecimalDigit","DiagnosticCode","_0_expected","testInteger","isIdentifierStart","isKeywordCharacter","isIdentifierPart","isWhiteSpace","Invalid_character","peek","isLineBreak","skipIdentifier","skip","mark","discard","readIdentifier","readString","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","readRegexpPattern","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_new","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_mul","Digit_expected","Octal_digit_expected","Binary_digit_expected","readFloat","readDecimalFloat","readHexFloat","i64_low","i64_high","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","DiagnosticEmitter","Tokenizer","State","Operation_not_supported","Operation_is_unsafe","User_defined_0","Conversion_from_type_0_to_1_requires_an_explicit_cast","Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit","Type_0_cannot_be_changed_to_type_1","Type_0_cannot_be_reinterpreted_as_type_1","Basic_type_0_cannot_be_nullable","Cannot_export_a_mutable_global","Mutable_value_cannot_be_inlined","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","Unmanaged_classes_cannot_implement_interfaces","Implementation_0_must_match_the_signature_1","Class_0_is_sealed_and_cannot_be_extended","Decorator_0_is_not_valid_here","Duplicate_decorator","An_allocator_must_be_present_to_use_0","Optional_parameter_must_have_an_initializer","Constructor_of_class_0_must_not_require_any_arguments","Function_0_cannot_be_inlined_into_itself","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","Optional_properties_are_not_supported","Expression_must_be_a_compile_time_constant","Module_cannot_have_multiple_start_functions","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","Expression_is_unsafe","Expression_is_never_null","Identifier_expected","A_file_cannot_have_a_reference_to_itself","Trailing_comma_not_allowed","Unexpected_token","A_rest_parameter_must_be_last_in_a_parameter_list","Parameter_cannot_have_question_mark_and_initializer","A_required_parameter_cannot_follow_an_optional_parameter","Statements_are_not_allowed_in_ambient_contexts","Initializers_are_not_allowed_in_ambient_contexts","_0_modifier_cannot_be_used_here","A_rest_parameter_cannot_be_optional","A_rest_parameter_cannot_have_an_initializer","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","Enum_member_must_have_initializer","Type_parameters_cannot_appear_on_a_constructor_declaration","Type_annotation_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","A_set_accessor_cannot_have_a_return_type_annotation","Type_parameter_list_cannot_be_empty","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_return_statement_can_only_be_used_within_a_function_body","Expression_expected","Type_expected","A_default_clause_cannot_appear_more_than_once_in_a_switch_statement","Duplicate_label_0","An_export_assignment_cannot_have_modifiers","_case_or_default_expected","_super_must_be_followed_by_an_argument_list_or_member_access","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","Type_argument_expected","String_literal_expected","Line_break_not_permitted_here","Declaration_expected","_const_declarations_must_be_initialized","Interface_declaration_cannot_have_implements_clause","An_implementation_cannot_be_declared_in_ambient_contexts","Decorators_are_not_valid_here","_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","A_definite_assignment_assertion_is_not_permitted_in_this_context","A_class_may_only_extend_another_class","A_parameter_property_cannot_be_declared_using_a_rest_parameter","Duplicate_identifier_0","Cannot_find_name_0","Module_0_has_no_exported_member_1","Generic_type_0_requires_1_type_argument_s","Type_0_is_not_generic","Type_0_is_not_assignable_to_type_1","Index_signature_is_missing_in_type_0","_this_cannot_be_referenced_in_current_location","_super_can_only_be_referenced_in_a_derived_class","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","Property_0_does_not_exist_on_type_1","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","A_function_whose_declared_type_is_not_void_must_return_a_value","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access","Operator_0_cannot_be_applied_to_types_1_and_2","A_super_call_must_be_the_first_statement_in_the_constructor","Constructors_for_derived_classes_must_contain_a_super_call","_get_and_set_accessor_must_have_the_same_type","Constructor_implementation_is_missing","Function_implementation_is_missing_or_not_immediately_following_the_declaration","Multiple_constructor_implementations_are_not_allowed","Duplicate_function_implementation","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged","Type_0_has_no_property_1","The_0_operator_cannot_be_applied_to_type_1","In_const_enum_declarations_member_initializer_must_be_constant_expression","Export_declaration_conflicts_with_exported_declaration_of_0","Object_is_possibly_null","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","The_target_of_an_assignment_must_be_a_variable_or_a_property_access","Index_signature_in_type_0_only_permits_reading","Expected_0_arguments_but_got_1","Expected_at_least_0_arguments_but_got_1","Expected_0_type_arguments_but_got_1","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","Namespace_0_has_no_exported_member_1","Required_type_parameters_may_not_follow_optional_type_parameters","Duplicate_property_0","Type_0_has_no_call_signatures","File_0_not_found","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","diagnosticCodeToString","includes","ASTBuilder","build","typeMapping","nonNullableTypes","exportedClasses","wrappedFuncs","nearFiles","visitClassDeclaration","visitFunctionDeclaration","generateWrapperFunction","add","typeName","isGeneric","getFields","preamble","some","BaseVisitor","afterParse","donelog","delete","seenlog","SIGN_EXTENSION","MUTABLE_GLOBAL","BULK_MEMORY","SIMD","THREADS","WASM32","WASM64","JS","__decorate","getOwnPropertyDescriptor","Reflect","decorate","ARRAYBUFFERVIEW","MAP","ACYCLIC","VALUE_ALIGN_0","VALUE_ALIGN_1","VALUE_ALIGN_2","VALUE_ALIGN_3","VALUE_ALIGN_4","VALUE_SIGNED","VALUE_FLOAT","VALUE_NULLABLE","VALUE_MANAGED","KEY_ALIGN_0","KEY_ALIGN_1","KEY_ALIGN_2","KEY_ALIGN_3","KEY_ALIGN_4","KEY_SIGNED","KEY_FLOAT","KEY_NULLABLE","KEY_MANAGED","INFO","WARNING","ERROR","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCategory","diagnosticCategoryToString","COLOR_RESET","diagnosticCategoryToColor","relatedRange","category","message","createInfo","createWarning","createError","withRange","withRelatedRange","column","DiagnosticMessage","formatDiagnosticMessage","formatDiagnosticContext","emitDiagnostic","info","infoRelated","warning","warningRelated","errorRelated","bitsetIs","i64_ne","i64_and","i64_one","i64_zero","bitsetSet","i64_or","i64_not","LINEFEED","CARRIAGERETURN","LINESEPARATOR","PARAGRAPHSEPARATOR","NEXTLINE","SPACE","NONBREAKINGSPACE","ENQUAD","EMQUAD","ENSPACE","EMSPACE","THREEPEREMSPACE","FOURPEREMSPACE","SIXPEREMSPACE","FIGURESPACE","PUNCTUATIONSPACE","THINSPACE","HAIRSPACE","ZEROWIDTHSPACE","NARROWNOBREAKSPACE","IDEOGRAPHICSPACE","MATHEMATICALSPACE","OGHAM","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","BACKSLASH","BACKTICK","DOLLAR","DOUBLEQUOTE","HASH","SINGLEQUOTE","BACKSPACE","FORMFEED","BYTEORDERMARK","TAB","VERTICALTAB","CharCode","__values","done","__read","return","makeArray","unchecked","makeSet","makeMap","readI8","writeI8","readI16","writeI16","readI32","writeI32","readI64","writeI64","readF32","i32_as_f32","writeF32","f32_as_i32","readF64","i64_as_f64","writeF64","f64_as_i64","indentLevel","visitNode","visitSource","visitNamedTypeNode","visitFunctionTypeNode","visitTypeParameter","visitIdentifierExpression","visitAssertionExpression","visitBinaryExpression","visitCallExpression","visitClassExpression","visitCommaExpression","visitElementAccessExpression","visitFunctionExpression","visitInstanceOfExpression","visitLiteralExpression","visitNewExpression","visitParenthesizedExpression","visitPropertyAccessExpression","visitTernaryExpression","visitUnaryPostfixExpression","visitUnaryPrefixExpression","visitBlockStatement","visitBreakStatement","visitContinueStatement","visitDoStatement","visitEmptyStatement","visitExportStatement","visitExportDefaultStatement","visitExportImportStatement","visitExpressionStatement","visitForStatement","visitIfStatement","visitImportStatement","visitReturnStatement","visitSwitchStatement","visitThrowStatement","visitTryStatement","visitVariableStatement","visitWhileStatement","visitEnumDeclaration","visitEnumValueDeclaration","visitFieldDeclaration","visitImportDeclaration","visitIndexSignatureDeclaration","visitInterfaceDeclaration","visitMethodDeclaration","visitNamespaceDeclaration","visitTypeDeclaration","visitVariableDeclaration","serializeDecorator","visitExportMember","serializeParameter","visitSwitchCase","visitNodeAndTerminate","visitTypeNode","visitTypeName","visitStringLiteral","visitArrayLiteralExpression","visitObjectLiteralExpression","visitFunctionCommon","visitFloatLiteralExpression","visitIntegerLiteralExpression","visitStringLiteralExpression","visitRegexpLiteralExpression","i64_to_string","visitUnaryExpression","serializeExternalModifiers","serializeAccessModifiers","captureStackTrace","defineProperties","MIN_VALUE","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz","clz32","ctz","popcnt","rotl","rotr","abs","ceil","floor","nearest","trunc","round","select","sqrt","copysign","sign","bswap","bswap16","unreachable","changetype","fromCharCodes","fromCodePoints","fromCodePoint","replaceAll","isInteger","Number","isFloat","isReference","isFunction","isString","isArrayLike","isDefined","isConstant","fmod","fmodf","JSMath","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","allocate","__memory_allocate","fill","__memory_fill","__memory_free","copy","__memory_copy","copyWithin","__memory_reset","store","__store","HEAP","load","__load","unmanaged","Long","ZERO","ONE","fromBits","low","high","i64_sub","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","and","or","i64_xor","xor","shl","i64_shr","shr","i64_shr_u","shru","not","i64_eq","eq","i64_align","fromInt","i64_is_i8","i64_is_i16","i64_is_i32","i64_is_u8","i64_is_u16","i64_is_u32","i64_is_bool","fromNumber","i64_is_f32","gte","lte","i64_is_f64","i64_to_f32","toNumber","i64_to_f64","WebAssembly","Instance","Module","unsigned","__isLong__","isLong","isNaN","neg","RangeError","fromString","fromValue","UZERO","UONE","NEG_ONE","MAX_UNSIGNED_VALUE","toInt","isZero","isNegative","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","greaterThan","gt","greaterThanOrEqual","compare","negate","subtract","multiply","get_high","divide","div_u","div_s","log","LN2","modulo","rem_u","rem_s","rem","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","depth","_visit","visitDecoratorNode","visitParameter","visitSuperExpression","visitFalseExpression","visitTrueExpression","visitThisExpression","visitNullExperssion","visitConstructorExpression","visitVoidStatement","visitComment","AbstractVisitor","writeString","writeNode","DefaultWriter","writer","entries","webpackEmptyContext","req","id","previousTimestamp","clocktime","performanceNow","performance","seconds","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"assemblyscript\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__11__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Compiler frontend for node.js\n *\n * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to\n * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources\n * directly through ts-node if distribution files are not present (indicated by a `-dev` version).\n *\n * Can also be packaged as a bundle suitable for in-browser use with the standard library injected\n * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details.\n *\n * @module cli/asc\n */\n\n// Use \".\" instead of \"/\" as cwd in browsers\nif (process.browser) process.cwd = function() { return \".\"; };\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst utf8 = require(\"@protobufjs/utf8\");\nconst colorsUtil = require(\"./util/colors\");\nconst optionsUtil = require(\"./util/options\");\nconst mkdirp = require(\"./util/mkdirp\");\nconst EOL = process.platform === \"win32\" ? \"\\r\\n\" : \"\\n\";\nconst SEP = process.platform === \"win32\" ? \"\\\\\" : \"/\";\nconst nearBindings = require(\"../bindings/dist/transformerBundle.js\");\nconst nearLibEntry = path.join(__dirname, \"..\", \"bindings\", \"assembly\", \"nearEntry.ts\");\n// global.Binaryen = require(\"../lib/binaryen\");\n\n// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional\n// useless code fragment on top of an actual error. suppress this:\nif (process.removeAllListeners) process.removeAllListeners(\"uncaughtException\");\n\n// Use distribution files if present, otherwise run the sources directly\nvar assemblyscript, isDev = false;\n(() => {\n try { // `asc` on the command line\n assemblyscript = require(\"../dist/assemblyscript.js\");\n } catch (e) {\n try { // `asc` on the command line without dist files\n require(\"ts-node\").register({ project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\") });\n require(\"../src/glue/js\");\n assemblyscript = require(\"../src\");\n isDev = true;\n } catch (e_ts) {\n try { // `require(\"dist/asc.js\")` in explicit browser tests\n assemblyscript = eval(\"require('./assemblyscript')\");\n } catch (e) {\n // combine both errors that lead us here\n e.stack = e_ts.stack + \"\\n---\\n\" + e.stack;\n throw e;\n }\n }\n }\n})();\n\n/** Whether this is a webpack bundle or not. */\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\n\n/** Whether asc runs the sources directly or not. */\nexports.isDev = isDev;\n\n/** AssemblyScript version. */\nexports.version = exports.isBundle ? BUNDLE_VERSION : require(\"../package.json\").version;\n\n/** Available CLI options. */\nexports.options = require(\"./asc.json\");\n\n/** Common root used in source maps. */\nexports.sourceMapRoot = \"assemblyscript:///\";\n\n/** Prefix used for library files. */\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\n\n/** Default Binaryen optimization level. */\nexports.defaultOptimizeLevel = 3;\n\n/** Default Binaryen shrink level. */\nexports.defaultShrinkLevel = 1;\n\n/** Bundled library files. */\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle\n const libDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\n const libFiles = require(\"glob\").sync(\"**/!(*.d).ts\", { cwd: libDir })\n const bundled = {\n \"nearEntry\": fs.readFileSync(nearLibEntry, \"utf8\")\n };\n libFiles.forEach(file => bundled[file.replace(/\\.ts$/, \"\")] = fs.readFileSync(path.join(libDir, file), \"utf8\" ));\n return bundled;\n})();\n\n/** Bundled definition files. */\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle\n const stdDir = path.join(__dirname, \"..\", \"std\");\n return {\n \"assembly\": fs.readFileSync(path.join(stdDir, \"assembly\", \"index.d.ts\"), \"utf8\"),\n \"portable\": fs.readFileSync(path.join(stdDir, \"portable\", \"index.d.ts\"), \"utf8\")\n };\n})();\n\n/** Convenience function that parses and compiles source strings directly. */\nexports.compileString = (sources, options) => {\n if (typeof sources === \"string\") sources = { \"input.ts\": sources };\n const output = Object.create({\n stdout: createMemoryStream(),\n stderr: createMemoryStream()\n });\n var argv = [\n \"--binaryFile\", \"binary\",\n \"--textFile\", \"text\",\n ];\n Object.keys(options || {}).forEach(key => {\n var val = options[key];\n if (Array.isArray(val)) val.forEach(val => argv.push(\"--\" + key, String(val)));\n else argv.push(\"--\" + key, String(val));\n });\n exports.main(argv.concat(Object.keys(sources)), {\n stdout: output.stdout,\n stderr: output.stderr,\n readFile: name => sources.hasOwnProperty(name) ? sources[name] : null,\n writeFile: (name, contents) => output[name] = contents,\n listFiles: () => []\n });\n return output;\n}\n\n/** Runs the command line utility using the specified arguments array. */\nexports.main = function main(argv, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (!options) {\n options = {};\n }\n\n const stdout = options.stdout || process.stdout;\n const stderr = options.stderr || process.stderr;\n const readFile = options.readFile || readFileNode;\n const writeFile = options.writeFile || writeFileNode;\n const listFiles = options.listFiles || listFilesNode;\n const stats = options.stats || createStats();\n\n // Output must be specified if not present in the environment\n if (!stdout) throw Error(\"'options.stdout' must be specified\");\n if (!stderr) throw Error(\"'options.stderr' must be specified\");\n\n const opts = optionsUtil.parse(argv, exports.options);\n const args = opts.options;\n argv = opts.arguments;\n if (args.noColors) {\n colorsUtil.stdout.supported =\n colorsUtil.stderr.supported = false;\n } else {\n colorsUtil.stdout = colorsUtil.from(stdout);\n colorsUtil.stderr = colorsUtil.from(stderr);\n }\n\n // Check for unknown arguments\n if (opts.unknown.length) {\n opts.unknown.forEach(arg => {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unknown option '\" + arg + \"'\" + EOL);\n });\n }\n\n // Check for trailing arguments\n if (opts.trailing.length) {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unsupported trailing arguments: \" + opts.trailing.join(\" \") + EOL);\n }\n\n // Use default callback if none is provided\n if (!callback) callback = function defaultCallback(err) {\n var code = 0;\n if (err) {\n stderr.write(colorsUtil.stderr.red(\"ERROR: \") + err.stack.replace(/^ERROR: /i, \"\") + EOL);\n code = 1;\n }\n return code;\n };\n\n // Just print the version if requested\n if (args.version) {\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + EOL);\n return callback(null);\n }\n // Print the help message if requested or no source files are provided\n if (args.help || !argv.length) {\n var out = args.help ? stdout : stderr;\n var color = args.help ? colorsUtil.stdout : colorsUtil.stderr;\n out.write([\n color.white(\"SYNTAX\"),\n \" \" + color.cyan(\"asc\") + \" [entryFile ...] [options]\",\n \"\",\n color.white(\"EXAMPLES\"),\n \" \" + color.cyan(\"asc\") + \" hello.ts\",\n \" \" + color.cyan(\"asc\") + \" hello.ts -b hello.wasm -t hello.wat\",\n \" \" + color.cyan(\"asc\") + \" hello1.ts hello2.ts -b -O > hello.wasm\",\n \"\",\n color.white(\"OPTIONS\"),\n ].concat(\n optionsUtil.help(exports.options, 24, EOL)\n ).join(EOL) + EOL);\n return callback(null);\n }\n\n // I/O must be specified if not present in the environment\n if (!fs.readFileSync) {\n if (readFile === readFileNode) throw Error(\"'options.readFile' must be specified\");\n if (writeFile === writeFileNode) throw Error(\"'options.writeFile' must be specified\");\n if (listFiles === listFilesNode) throw Error(\"'options.listFiles' must be specified\");\n }\n\n // Set up base directory\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : \".\";\n\n // Set up transforms\n const transforms = args.notNear ? [] : [nearBindings];\n //Add near's bindings by default\n if (args.transform) {\n args.transform.forEach(transform =>\n transforms.push(\n require(\n path.isAbsolute(transform = transform.trim())\n ? transform\n : path.join(process.cwd(), transform)\n )\n )\n );\n }\n function applyTransform(name, ...args) {\n transforms.forEach(transform => {\n if (typeof transform[name] === \"function\") transform[name](...args);\n });\n }\n\n // Begin parsing\n var parser = null;\n\n // Maps package names to parent directory\n var packages = new Map();\n var importPathMap = new Map();\n\n // Include library files\n Object.keys(exports.libraryFiles).forEach(libPath => {\n if (libPath.indexOf(\"/\") >= 0) return; // in sub-directory: imported on demand\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n exports.libraryFiles[libPath],\n exports.libraryPrefix + libPath + \".ts\",\n false,\n parser\n );\n });\n });\n const customLibDirs = [];\n if (args.lib) {\n let lib = args.lib;\n if (typeof lib === \"string\") lib = lib.split(\",\");\n Array.prototype.push.apply(customLibDirs, lib.map(lib => lib.trim()));\n for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom\n let libDir = customLibDirs[i];\n let libFiles;\n if (libDir.endsWith(\".ts\")) {\n libFiles = [ path.basename(libDir) ];\n libDir = path.dirname(libDir);\n } else {\n libFiles = listFiles(libDir, baseDir) || [];\n }\n for (let j = 0, l = libFiles.length; j < l; ++j) {\n let libPath = libFiles[j];\n let libText = readFile(libPath, libDir);\n if (libText === null) return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\n stats.parseCount++;\n exports.libraryFiles[libPath.replace(/\\.ts$/, \"\")] = libText;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n libText,\n exports.libraryPrefix + libPath,\n false,\n parser\n );\n });\n }\n }\n }\n args.path = args.path || [];\n // Find all valid node_module paths starting at baseDir\n function nodePaths(basePath, _path) {\n return basePath.split(SEP)\n .map((_, i, arr) => {\n let dir = arr.slice(0, i + 1).join(SEP) || SEP;\n let dirFrom = path.relative(baseDir, dir);\n return path.join(dirFrom, _path);\n })\n .filter(dir => listFiles(dir, baseDir))\n .reverse();\n }\n function getPaths(basePath) {\n let paths = args.path.map(p => nodePaths(basePath, p));\n return nodePaths(basePath, \"node_modules\").concat(...paths)\n }\n\n // Parses the backlog of imported files after including entry files\n function parseBacklog() {\n var sourcePath, sourceText, sysPath;\n // dependee is the path of the file that depends on sourcePath\n while ((sourcePath = parser.nextFile()) != null) {\n dependee = importPathMap.get(assemblyscript.getDependee(parser, sourcePath)) || baseDir;\n sourceText = null;\n sysPath = null;\n \n // Load library file if explicitly requested\n if (sourcePath.startsWith(exports.libraryPrefix)) {\n const plainName = sourcePath.substring(exports.libraryPrefix.length);\n const indexName = sourcePath.substring(exports.libraryPrefix.length) + \"/index\";\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n sourceText = readFile(plainName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(customLibDirs[i], plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(customLibDirs[i], indexName + \".ts\");\n break;\n }\n }\n }\n }\n\n // Otherwise try nextFile.ts, nextFile/index.ts, ~lib/nextFile.ts, ~lib/nextFile/index.ts\n } else {\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(plainName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n sysPath = path.join(baseDir, sourcePath);\n } else {\n sourceText = readFile(indexName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n } else if (!plainName.startsWith(\".\")) {\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n const dir = customLibDirs[i];\n sourceText = readFile(plainName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(dir, plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(dir, indexName + \".ts\");\n break;\n }\n }\n }\n }\n }\n }\n }\n /*\n In this case the library wasn't found so we check paths\n */\n if (sourceText == null) {\n if (args.traceResolution) {\n stderr.write(\"Looking for '\" + sourcePath + \"' imported by '\" + dependee + \"'\" + EOL);\n }\n paths = getPaths(path.join(baseDir, dependee));\n let _package = sourcePath.replace(/\\~lib\\/([^\\/]*).*/, \"$1\");\n for (let _path of paths) {\n let ascMain = (() => {\n if (packages.has(_package)) {\n return packages.get(_package);\n }\n let p = path.join(_path, _package, \"package.json\");\n let res = readFile(p, baseDir);\n if (res) {\n let package_json;\n try {\n package_json = JSON.parse(res);\n } catch (e) {\n return callback(Error(\"Parsing \" + p + \" failed\"));\n }\n let mainFile = package_json.ascMain;\n if (mainFile && (typeof mainFile === 'string')) {\n let newPackage = mainFile.replace(/(.*)\\/index\\.ts/, '$1');\n packages.set(_package, newPackage);\n return newPackage;\n }\n }\n return \"assembly\";\n })()\n let realPath = (_p) => {\n if (_p.startsWith(exports.libraryPrefix)){\n _p = _p.substring(exports.libraryPrefix.length);\n }\n let first = _p.substring(0, _p.indexOf(\"/\"));\n let second = _p.substring(_p.indexOf(\"/\") + 1);\n return path.join(_path, first, ascMain, second);\n }\n if (args.traceResolution) {\n stderr.write(\" in '\" + realPath(sourcePath) + \"'\");\n }\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(realPath(plainName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n } else {\n sourceText = readFile(realPath(indexName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n }\n }\n if (sourceText !== null) {\n if (args.traceResolution) {\n stderr.write(EOL + \" -> '\" + realPath(sourcePath) + \"'\" + EOL);\n }\n let newPath = path.join(_path, _package);\n sysPath = newPath;\n break;\n }\n if (args.traceResolution) {\n stderr.write(EOL);\n }\n }\n }\n if (sourceText == null) {\n return callback(Error(\"Import file '\" + sourcePath + \".ts' not found.\"));\n }\n importPathMap.set(sourcePath.replace(/\\.ts$/, \"\"), sysPath);\n stats.parseCount++;\n stats.parseTime += measure(() => {\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\n });\n }\n if (checkDiagnostics(parser, stderr)) {\n return callback(Error(\"Parse error\"));\n }\n }\n\n // Include runtime template before entry files so its setup runs first\n {\n let runtimeName = String(args.runtime);\n let runtimePath = \"rt/index-\" + runtimeName;\n let runtimeText = exports.libraryFiles[runtimePath];\n if (runtimeText == null) {\n runtimePath = runtimeName;\n runtimeText = readFile(runtimePath + \".ts\", baseDir);\n if (runtimeText == null) {\n return callback(Error(\"Runtime '\" + runtimeName + \"' not found.\"));\n }\n } else {\n runtimePath = \"~lib/\" + runtimePath;\n }\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser);\n });\n }\n\n // Include entry files\n for (let i = 0, k = argv.length; i < k; ++i) {\n const filename = argv[i];\n\n let sourcePath = String(filename).replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\n // Setting the path to relative path\n sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath) : sourcePath;\n\n // Try entryPath.ts, then entryPath/index.ts\n let sourceText = readFile(sourcePath + \".ts\", baseDir);\n if (sourceText === null) {\n sourceText = readFile(sourcePath + \"/index.ts\", baseDir);\n if (sourceText === null) {\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\n } else {\n sourcePath += \"/index.ts\";\n }\n } else {\n sourcePath += \".ts\";\n }\n\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\n });\n }\n\n // Parse entry files\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Call afterParse transform hook\n applyTransform(\"afterParse\", parser, writeFile, baseDir);\n\n // Parse additional files, if any\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Finish parsing\n const program = assemblyscript.finishParsing(parser);\n\n // Print files and exit if listFiles\n if (args.listFiles) {\n stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL);\n return callback(null);\n }\n\n // Set up optimization levels\n var optimizeLevel = 0;\n var shrinkLevel = 0;\n if (args.optimize) {\n optimizeLevel = exports.defaultOptimizeLevel;\n shrinkLevel = exports.defaultShrinkLevel;\n }\n if (typeof args.optimizeLevel === \"number\") {\n optimizeLevel = args.optimizeLevel;\n }\n if (typeof args.shrinkLevel === \"number\") {\n shrinkLevel = args.shrinkLevel;\n }\n optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3);\n shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2);\n\n // Begin compilation\n const compilerOptions = assemblyscript.createOptions();\n assemblyscript.setTarget(compilerOptions, 0);\n assemblyscript.setNoAssert(compilerOptions, args.noAssert);\n assemblyscript.setImportMemory(compilerOptions, args.importMemory);\n assemblyscript.setSharedMemory(compilerOptions, args.sharedMemory);\n assemblyscript.setImportTable(compilerOptions, args.importTable);\n assemblyscript.setExplicitStart(compilerOptions, args.explicitStart);\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\n assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel);\n assemblyscript.setNoUnsafe(compilerOptions, args.noUnsafe);\n\n // Initialize default aliases\n assemblyscript.setGlobalAlias(compilerOptions, \"Math\", \"NativeMath\");\n assemblyscript.setGlobalAlias(compilerOptions, \"Mathf\", \"NativeMathf\");\n assemblyscript.setGlobalAlias(compilerOptions, \"abort\", \"~lib/builtins/abort\");\n assemblyscript.setGlobalAlias(compilerOptions, \"trace\", \"~lib/builtins/trace\");\n\n // Add or override aliases if specified\n if (args.use) {\n let aliases = args.use;\n for (let i = 0, k = aliases.length; i < k; ++i) {\n let part = aliases[i];\n let p = part.indexOf(\"=\");\n if (p < 0) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n let alias = part.substring(0, p).trim();\n let name = part.substring(p + 1).trim();\n if (!alias.length) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n assemblyscript.setGlobalAlias(compilerOptions, alias, name);\n }\n }\n\n // Enable additional features if specified\n var features = args.enable;\n if (features != null) {\n if (typeof features === \"string\") features = features.split(\",\");\n for (let i = 0, k = features.length; i < k; ++i) {\n let name = features[i].trim();\n let flag = assemblyscript[\"FEATURE_\" + name.replace(/\\-/g, \"_\").toUpperCase()];\n if (!flag) return callback(Error(\"Feature '\" + name + \"' is unknown.\"));\n assemblyscript.enableFeature(compilerOptions, flag);\n }\n }\n\n var module;\n stats.compileCount++;\n try {\n stats.compileTime += measure(() => {\n module = assemblyscript.compileProgram(program, compilerOptions);\n });\n } catch (e) {\n return callback(e);\n }\n if (checkDiagnostics(parser, stderr)) {\n if (module) module.dispose();\n return callback(Error(\"Compile error\"));\n }\n\n // Validate the module if requested\n if (args.validate) {\n stats.validateCount++;\n stats.validateTime += measure(() => {\n if (!module.validate()) {\n module.dispose();\n return callback(Error(\"Validate error\"));\n }\n });\n }\n\n // Set Binaryen-specific options\n if (args.trapMode === \"clamp\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-clamp\" ]);\n });\n } else if (args.trapMode === \"js\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-js\" ]);\n });\n } else if (args.trapMode !== \"allow\") {\n module.dispose();\n return callback(Error(\"Unsupported trap mode\"));\n }\n\n // Implicitly run costly non-LLVM optimizations on -O3 or -Oz\n // see: https://github.com/WebAssembly/binaryen/pull/1596\n if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;\n\n module.setOptimizeLevel(optimizeLevel);\n module.setShrinkLevel(shrinkLevel);\n module.setDebugInfo(args.debug);\n\n var runPasses = [];\n if (args.runPasses) {\n if (typeof args.runPasses === \"string\") {\n args.runPasses = args.runPasses.split(\",\");\n }\n if (args.runPasses.length) {\n args.runPasses.forEach(pass => {\n if (runPasses.indexOf(pass) < 0)\n runPasses.push(pass);\n });\n }\n }\n\n // Optimize the module if requested\n if (optimizeLevel > 0 || shrinkLevel > 0) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.optimize();\n });\n }\n\n // Run additional passes if requested\n if (runPasses.length) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses(runPasses.map(pass => pass.trim()));\n });\n }\n\n // Prepare output\n if (!args.noEmit) {\n let hasStdout = false;\n let hasOutput = false;\n\n if (args.outFile != null) {\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null) {\n args.textFile = args.outFile;\n } else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null) {\n args.asmjsFile = args.outFile;\n } else if (args.binaryFile == null) {\n args.binaryFile = args.outFile;\n }\n }\n\n // Write binary\n if (args.binaryFile != null) {\n let sourceMapURL = args.sourceMap != null\n ? args.sourceMap.length\n ? args.sourceMap\n : path.basename(args.binaryFile) + \".map\"\n : null;\n\n let wasm;\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wasm = module.toBinary(sourceMapURL)\n });\n\n if (args.binaryFile.length) {\n writeFile(args.binaryFile, wasm.output, baseDir);\n } else {\n writeStdout(wasm.output);\n hasStdout = true;\n }\n hasOutput = true;\n\n // Post-process source map\n if (wasm.sourceMap != null) {\n if (args.binaryFile.length) {\n let sourceMap = JSON.parse(wasm.sourceMap);\n sourceMap.sourceRoot = exports.sourceMapRoot;\n sourceMap.sources.forEach((name, index) => {\n let text = null;\n if (name.startsWith(exports.libraryPrefix)) {\n let stdName = name.substring(exports.libraryPrefix.length).replace(/\\.ts$/, \"\");\n if (exports.libraryFiles.hasOwnProperty(stdName)) {\n text = exports.libraryFiles[stdName];\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n text = readFile(name.substring(exports.libraryPrefix.length), customLibDirs[i]);\n if (text !== null) break;\n }\n }\n } else {\n text = readFile(name, baseDir);\n }\n if (text === null) {\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\n }\n if (!sourceMap.sourceContents) sourceMap.sourceContents = [];\n sourceMap.sourceContents[index] = text;\n });\n writeFile(path.join(\n path.dirname(args.binaryFile),\n path.basename(sourceMapURL)\n ).replace(/^\\.\\//, \"\"), JSON.stringify(sourceMap), baseDir);\n } else {\n stderr.write(\"Skipped source map (stdout already occupied)\" + EOL);\n }\n }\n }\n\n // Write asm.js\n if (args.asmjsFile != null) {\n let asm;\n if (args.asmjsFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeFile(args.asmjsFile, asm, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeStdout(asm);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write WebIDL\n if (args.idlFile != null) {\n let idl;\n if (args.idlFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeFile(args.idlFile, idl, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeStdout(idl);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write TypeScript definition\n if (args.tsdFile != null) {\n let tsd;\n if (args.tsdFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeFile(args.tsdFile, tsd, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeStdout(tsd);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write text (must be last)\n if (args.textFile != null || !hasOutput) {\n let wat;\n if (args.textFile && args.textFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText();\n });\n writeFile(args.textFile, wat, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText()\n });\n writeStdout(wat);\n }\n }\n }\n\n module.dispose();\n if (args.measure) {\n printStats(stats, stderr);\n }\n if (args.printrtti) {\n printRTTI(program, stderr);\n }\n return callback(null);\n\n function readFileNode(filename, baseDir) {\n let name = path.resolve(baseDir, filename);\n try {\n let text;\n stats.readCount++;\n stats.readTime += measure(() => {\n text = fs.readFileSync(name, { encoding: \"utf8\" });\n });\n return text;\n } catch (e) {\n return null;\n }\n }\n\n function writeFileNode(filename, contents, baseDir) {\n try {\n stats.writeCount++;\n stats.writeTime += measure(() => {\n mkdirp(path.join(baseDir, path.dirname(filename)));\n if (typeof contents === \"string\") {\n fs.writeFileSync(path.join(baseDir, filename), contents, { encoding: \"utf8\" } );\n } else {\n fs.writeFileSync(path.join(baseDir, filename), contents);\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function listFilesNode(dirname, baseDir) {\n var files;\n try {\n stats.readTime += measure(() => {\n files = fs.readdirSync(path.join(baseDir, dirname)).filter(file => /^(?!.*\\.d\\.ts$).*\\.ts$/.test(file));\n });\n return files;\n } catch (e) {\n return null;\n }\n }\n\n function writeStdout(contents) {\n if (!writeStdout.used) {\n stats.writeCount++;\n writeStdout.used = true;\n }\n stats.writeTime += measure(() => {\n if (typeof contents === \"string\") {\n stdout.write(contents, { encoding: \"utf8\" });\n } else {\n stdout.write(contents);\n }\n });\n }\n}\n\n/** Checks diagnostics emitted so far for errors. */\nfunction checkDiagnostics(emitter, stderr) {\n var diagnostic;\n var hasErrors = false;\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\n if (stderr) {\n stderr.write(\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\n EOL + EOL\n );\n }\n if (assemblyscript.isError(diagnostic)) hasErrors = true;\n }\n return hasErrors;\n}\n\nexports.checkDiagnostics = checkDiagnostics;\n\n/** Creates an empty set of stats. */\nfunction createStats() {\n return {\n readTime: 0,\n readCount: 0,\n writeTime: 0,\n writeCount: 0,\n parseTime: 0,\n parseCount: 0,\n compileTime: 0,\n compileCount: 0,\n emitTime: 0,\n emitCount: 0,\n validateTime: 0,\n validateCount: 0,\n optimizeTime: 0,\n optimizeCount: 0\n };\n}\n\nexports.createStats = createStats;\n\nif (!process.hrtime) process.hrtime = require(\"browser-process-hrtime\");\n\n/** Measures the execution time of the specified function. */\nfunction measure(fn) {\n const start = process.hrtime();\n fn();\n const times = process.hrtime(start);\n return times[0] * 1e9 + times[1];\n}\n\nexports.measure = measure;\n\n/** Formats a high resolution time to a human readable string. */\nfunction formatTime(time) {\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\n}\n\nexports.formatTime = formatTime;\n\n/** Formats and prints out the contents of a set of stats. */\nfunction printStats(stats, output) {\n function format(time, count) {\n return formatTime(time);\n }\n (output || process.stdout).write([\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\n ].join(EOL) + EOL);\n}\n\nexports.printStats = printStats;\n\n/** Prints runtime type information. */\nfunction printRTTI(program, output) {\n if (!output) output = process.stderr;\n output.write(\"# Runtime type information (RTTI)\\n\");\n output.write(assemblyscript.buildRTTI(program));\n}\n\nexports.printRTTI = printRTTI;\n\nvar allocBuffer = typeof global !== \"undefined\" && global.Buffer\n ? global.Buffer.allocUnsafe || function(len) { return new global.Buffer(len); }\n : function(len) { return new Uint8Array(len) };\n\n/** Creates a memory stream that can be used in place of stdout/stderr. */\nfunction createMemoryStream(fn) {\n var stream = [];\n stream.write = function(chunk) {\n if (fn) fn(chunk);\n if (typeof chunk === \"string\") {\n let buffer = allocBuffer(utf8.length(chunk));\n utf8.write(chunk, buffer, 0);\n chunk = buffer;\n }\n this.push(chunk);\n };\n stream.reset = function() {\n stream.length = 0;\n };\n stream.toBuffer = function() {\n var offset = 0, i = 0, k = this.length;\n while (i < k) offset += this[i++].length;\n var buffer = allocBuffer(offset);\n offset = i = 0;\n while (i < k) {\n buffer.set(this[i], offset);\n offset += this[i].length;\n ++i;\n }\n return buffer;\n };\n stream.toString = function() {\n var buffer = this.toBuffer();\n return utf8.read(buffer, 0, buffer.length);\n };\n return stream;\n}\n\nexports.createMemoryStream = createMemoryStream;\n\n/** Compatible TypeScript compiler options for syntax highlighting etc. */\nexports.tscOptions = {\n alwaysStrict: true,\n noImplicitAny: true,\n noImplicitReturns: true,\n noImplicitThis: true,\n noEmitOnError: true,\n strictNullChecks: true,\n experimentalDecorators: true,\n target: \"esnext\",\n module: \"commonjs\",\n noLib: true,\n types: [],\n allowJs: false\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var proc = typeof process !== \"undefined\" && process || {};\nvar isCI = proc.env && \"CI\" in proc.env; // doesn't work when bundled because 'process' is a mock\n\nfunction from(stream, base) {\n var colors = base || {};\n colors.supported = (stream && !!stream.isTTY) || isCI;\n colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text;\n colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text;\n colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text;\n colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text;\n colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text;\n colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text;\n colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text;\n colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text;\n return colors;\n}\n\nexports.stdout = from(proc.stdout, exports);\nexports.stderr = from(proc.stderr);\nexports.from = from;\n\nexports.GRAY = \"\\u001b[90m\";\nexports.RED = \"\\u001b[91m\";\nexports.GREEN = \"\\u001b[92m\";\nexports.YELLOW = \"\\u001b[93m\";\nexports.BLUE = \"\\u001b[94m\";\nexports.MAGENTA = \"\\u001b[95m\";\nexports.CYAN = \"\\u001b[96m\";\nexports.WHITE = \"\\u001b[97m\";\nexports.RESET = \"\\u001b[0m\";\n","// type | meaning\n// -----|---------------\n// b | boolean\n// i | integer\n// f | float\n// s | string\n// I | integer array\n// F | float array\n// S | string array\n\n/** Parses the specified command line arguments according to the given configuration. */\nfunction parse(argv, config) {\n var options = {};\n var unknown = [];\n var arguments = [];\n var trailing = [];\n\n // make an alias map and initialize defaults\n var aliases = {};\n Object.keys(config).forEach(key => {\n if (key.startsWith(\" \")) return;\n var option = config[key];\n if (option.alias != null) {\n if (typeof option.alias === \"string\") aliases[option.alias] = key;\n else if (Array.isArray(option.alias)) option.alias.forEach(alias => aliases[alias] = key);\n }\n if (option.default != null) options[key] = option.default;\n });\n\n // iterate over argv\n for (var i = 0, k = (argv = argv.slice()).length; i < k; ++i) {\n let arg = argv[i];\n if (arg == \"--\") { ++i; break; }\n let match = /^(?:(\\-\\w)(?:=(.*))?|(\\-\\-\\w{2,})(?:=(.*))?)$/.exec(arg), option, key;\n if (match) {\n if (config[arg]) option = config[key = arg]; // exact\n else if (match[1] != null) { // alias\n option = config[key = aliases[match[1].substring(1)]];\n if (option && match[2] != null) argv[i--] = match[2];\n } else if (match[3] != null) { // full\n option = config[key = match[3].substring(2)];\n if (option && match[4] != null) argv[i--] = match[4];\n }\n } else {\n if (arg.charCodeAt(0) == 45) option = config[key = arg]; // exact\n else { arguments.push(arg); continue; } // argument\n }\n if (option) {\n if (option.type == null || option.type === \"b\") options[key] = true; // flag\n else {\n if (i + 1 < argv.length && argv[i + 1].charCodeAt(0) != 45) { // present\n switch (option.type) {\n case \"i\": options[key] = parseInt(argv[++i], 10); break;\n case \"I\": options[key] = (options[key] || []).concat(parseInt(argv[++i], 10)); break;\n case \"f\": options[key] = parseFloat(argv[++i]); break;\n case \"F\": options[key] = (options[key] || []).concat(parseFloat(argv[++i])); break;\n case \"s\": options[key] = String(argv[++i]); break;\n case \"S\": options[key] = (options[key] || []).concat(argv[++i].split(\",\")); break;\n default: unknown.push(arg); --i;\n }\n } else { // omitted\n switch (option.type) {\n case \"i\":\n case \"f\": options[key] = option.default || 0; break;\n case \"s\": options[key] = option.default || \"\"; break;\n case \"I\":\n case \"F\":\n case \"S\": options[key] = options.default || []; break;\n default: unknown.push(arg);\n }\n }\n }\n if (option.value) Object.keys(option.value).forEach(k => options[k] = option.value[k]);\n } else unknown.push(arg);\n }\n while (i < k) trailing.push(argv[i++]); // trailing\n\n return { options, unknown, arguments, trailing };\n}\n\nexports.parse = parse;\n\n/** Generates the help text for the specified configuration. */\nfunction help(config, options) {\n if (!options) options = {};\n var indent = options.indent || 2;\n var padding = options.padding || 24;\n var eol = options.eol || \"\\n\";\n var sb = [];\n Object.keys(config).forEach(key => {\n var option = config[key];\n if (option.description == null) return;\n var text = \"\";\n while (text.length < indent) text += \" \";\n text += \"--\" + key;\n if (option.alias) text += \", -\" + option.alias;\n while (text.length < padding) text += \" \";\n if (Array.isArray(option.description)) {\n sb.push(text + option.description[0] + option.description.slice(1).map(line => {\n for (let i = 0; i < padding; ++i) line = \" \" + line;\n return eol + line;\n }).join(\"\"));\n } else sb.push(text + option.description);\n });\n return sb.join(eol);\n}\n\nexports.help = help;\n","/*\nCopyright 2010 James Halliday (mail@substack.net)\n\nThis project is free software released under the MIT/X11 license:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nvar path = require(\"path\");\nvar fs = require(\"fs\");\nvar _0777 = parseInt(\"0777\", 8);\n\nmodule.exports = function mkdirp(p, opts, made) {\n if (!opts || typeof opts !== \"object\") {\n opts = { mode: opts };\n }\n var mode = opts.mode;\n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n p = path.resolve(p);\n try {\n fs.mkdirSync(p, mode);\n made = made || p;\n } catch (err0) {\n switch (err0.code) {\n case \"ENOENT\":\n made = mkdirp(path.dirname(p), opts, made);\n mkdirp(p, opts, made);\n break;\n default:\n var stat;\n try {\n stat = fs.statSync(p);\n } catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n return made;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.transformer=t():e.transformer=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=6)}([function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]=\"SOURCE\",e[e.NAMEDTYPE=1]=\"NAMEDTYPE\",e[e.FUNCTIONTYPE=2]=\"FUNCTIONTYPE\",e[e.TYPENAME=3]=\"TYPENAME\",e[e.TYPEPARAMETER=4]=\"TYPEPARAMETER\",e[e.PARAMETER=5]=\"PARAMETER\",e[e.IDENTIFIER=6]=\"IDENTIFIER\",e[e.ASSERTION=7]=\"ASSERTION\",e[e.BINARY=8]=\"BINARY\",e[e.CALL=9]=\"CALL\",e[e.CLASS=10]=\"CLASS\",e[e.COMMA=11]=\"COMMA\",e[e.ELEMENTACCESS=12]=\"ELEMENTACCESS\",e[e.FALSE=13]=\"FALSE\",e[e.FUNCTION=14]=\"FUNCTION\",e[e.INSTANCEOF=15]=\"INSTANCEOF\",e[e.LITERAL=16]=\"LITERAL\",e[e.NEW=17]=\"NEW\",e[e.NULL=18]=\"NULL\",e[e.PARENTHESIZED=19]=\"PARENTHESIZED\",e[e.PROPERTYACCESS=20]=\"PROPERTYACCESS\",e[e.TERNARY=21]=\"TERNARY\",e[e.SUPER=22]=\"SUPER\",e[e.THIS=23]=\"THIS\",e[e.TRUE=24]=\"TRUE\",e[e.CONSTRUCTOR=25]=\"CONSTRUCTOR\",e[e.UNARYPOSTFIX=26]=\"UNARYPOSTFIX\",e[e.UNARYPREFIX=27]=\"UNARYPREFIX\",e[e.BLOCK=28]=\"BLOCK\",e[e.BREAK=29]=\"BREAK\",e[e.CONTINUE=30]=\"CONTINUE\",e[e.DO=31]=\"DO\",e[e.EMPTY=32]=\"EMPTY\",e[e.EXPORT=33]=\"EXPORT\",e[e.EXPORTDEFAULT=34]=\"EXPORTDEFAULT\",e[e.EXPORTIMPORT=35]=\"EXPORTIMPORT\",e[e.EXPRESSION=36]=\"EXPRESSION\",e[e.FOR=37]=\"FOR\",e[e.IF=38]=\"IF\",e[e.IMPORT=39]=\"IMPORT\",e[e.RETURN=40]=\"RETURN\",e[e.SWITCH=41]=\"SWITCH\",e[e.THROW=42]=\"THROW\",e[e.TRY=43]=\"TRY\",e[e.VARIABLE=44]=\"VARIABLE\",e[e.VOID=45]=\"VOID\",e[e.WHILE=46]=\"WHILE\",e[e.CLASSDECLARATION=47]=\"CLASSDECLARATION\",e[e.ENUMDECLARATION=48]=\"ENUMDECLARATION\",e[e.ENUMVALUEDECLARATION=49]=\"ENUMVALUEDECLARATION\",e[e.FIELDDECLARATION=50]=\"FIELDDECLARATION\",e[e.FUNCTIONDECLARATION=51]=\"FUNCTIONDECLARATION\",e[e.IMPORTDECLARATION=52]=\"IMPORTDECLARATION\",e[e.INDEXSIGNATUREDECLARATION=53]=\"INDEXSIGNATUREDECLARATION\",e[e.INTERFACEDECLARATION=54]=\"INTERFACEDECLARATION\",e[e.METHODDECLARATION=55]=\"METHODDECLARATION\",e[e.NAMESPACEDECLARATION=56]=\"NAMESPACEDECLARATION\",e[e.TYPEDECLARATION=57]=\"TYPEDECLARATION\",e[e.VARIABLEDECLARATION=58]=\"VARIABLEDECLARATION\",e[e.DECORATOR=59]=\"DECORATOR\",e[e.EXPORTMEMBER=60]=\"EXPORTMEMBER\",e[e.SWITCHCASE=61]=\"SWITCHCASE\",e[e.COMMENT=62]=\"COMMENT\"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName(\"\",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text=\"\",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new Q;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(\".\")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]=\"DEFAULT\",e[e.OPTIONAL=1]=\"OPTIONAL\",e[e.REST=2]=\"REST\"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if(\"builtin\"==t)return E.BUILTIN;break;case 101:if(\"external\"==t)return E.EXTERNAL;break;case 103:if(\"global\"==t)return E.GLOBAL;break;case 105:if(\"inline\"==t)return E.INLINE;break;case 108:if(\"lazy\"==t)return E.LAZY;break;case 111:if(\"operator\"==t)return E.OPERATOR;break;case 115:if(\"sealed\"==t)return E.SEALED;break;case 117:if(\"unmanaged\"==t)return E.UNMANAGED;if(\"unsafe\"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),\"operator\"==t)switch(i.charCodeAt(0)){case 98:if(\"binary\"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case\"prefix\":return E.OPERATOR_PREFIX;case\"postfix\":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]=\"CUSTOM\",e[e.GLOBAL=1]=\"GLOBAL\",e[e.OPERATOR=2]=\"OPERATOR\",e[e.OPERATOR_BINARY=3]=\"OPERATOR_BINARY\",e[e.OPERATOR_PREFIX=4]=\"OPERATOR_PREFIX\",e[e.OPERATOR_POSTFIX=5]=\"OPERATOR_POSTFIX\",e[e.UNMANAGED=6]=\"UNMANAGED\",e[e.SEALED=7]=\"SEALED\",e[e.INLINE=8]=\"INLINE\",e[e.EXTERNAL=9]=\"EXTERNAL\",e[e.BUILTIN=10]=\"BUILTIN\",e[e.LAZY=11]=\"LAZY\",e[e.UNSAFE=12]=\"UNSAFE\"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]=\"LINE\",e[e.TRIPLE=1]=\"TRIPLE\",e[e.BLOCK=2]=\"BLOCK\"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]=\"FLOAT\",e[e.INTEGER=1]=\"INTEGER\",e[e.STRING=2]=\"STRING\",e[e.REGEXP=3]=\"REGEXP\",e[e.ARRAY=4]=\"ARRAY\",e[e.OBJECT=5]=\"OBJECT\"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]=\"PREFIX\",e[e.AS=1]=\"AS\",e[e.NONNULL=2]=\"NONNULL\"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,\"typeArgumentsRange\",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"argumentsRange\",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text=\"constructor\",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text=\"null\",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text=\"super\",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text=\"this\",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text=\"true\",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var Q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text=\"false\",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=Q;var j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=j;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(j);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(j);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]=\"USER\",e[e.USER_ENTRY=1]=\"USER_ENTRY\",e[e.LIBRARY=2]=\"LIBRARY\",e[e.LIBRARY_ENTRY=3]=\"LIBRARY_ENTRY\"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,\"isLibrary\",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]=\"NONE\",e[e.ARROW_PARENTHESIZED=1]=\"ARROW_PARENTHESIZED\",e[e.ARROW_SINGLE=2]=\"ARROW_SINGLE\"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(\".ts\")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i\";case s.LESSTHAN_EQUALS:return\"<=\";case s.GREATERTHAN_EQUALS:return\">=\";case s.EQUALS_EQUALS:return\"==\";case s.EXCLAMATION_EQUALS:return\"!=\";case s.EQUALS_EQUALS_EQUALS:return\"===\";case s.EXCLAMATION_EQUALS_EQUALS:return\"!==\";case s.PLUS:return\"+\";case s.MINUS:return\"-\";case s.ASTERISK_ASTERISK:return\"**\";case s.ASTERISK:return\"*\";case s.SLASH:return\"/\";case s.PERCENT:return\"%\";case s.PLUS_PLUS:return\"++\";case s.MINUS_MINUS:return\"--\";case s.LESSTHAN_LESSTHAN:return\"<<\";case s.GREATERTHAN_GREATERTHAN:return\">>\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return\">>>\";case s.AMPERSAND:return\"&\";case s.BAR:return\"|\";case s.CARET:return\"^\";case s.EXCLAMATION:return\"!\";case s.TILDE:return\"~\";case s.AMPERSAND_AMPERSAND:return\"&&\";case s.BAR_BAR:return\"||\";case s.EQUALS:return\"=\";case s.PLUS_EQUALS:return\"+=\";case s.MINUS_EQUALS:return\"-=\";case s.ASTERISK_EQUALS:return\"*=\";case s.ASTERISK_ASTERISK_EQUALS:return\"**=\";case s.SLASH_EQUALS:return\"/=\";case s.PERCENT_EQUALS:return\"%=\";case s.LESSTHAN_LESSTHAN_EQUALS:return\"<<=\";case s.GREATERTHAN_GREATERTHAN_EQUALS:return\">>=\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return\">>>=\";case s.AMPERSAND_EQUALS:return\"&=\";case s.BAR_EQUALS:return\"|=\";case s.CARET_EQUALS:return\"^=\";default:return assert(!1),\"\"}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error(\"source mismatch\");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,\"atStart\",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"atEnd\",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"line\",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"column\",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),\"\";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return\"\\0\";case 98:return\"\\b\";case 116:return\"\\t\";case 110:return\"\\n\";case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),\"\";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),\"\"):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?\"\":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Operation_not_supported=100]=\"Operation_not_supported\",e[e.Operation_is_unsafe=101]=\"Operation_is_unsafe\",e[e.User_defined_0=102]=\"User_defined_0\",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]=\"Conversion_from_type_0_to_1_requires_an_explicit_cast\",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]=\"Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit\",e[e.Type_0_cannot_be_changed_to_type_1=202]=\"Type_0_cannot_be_changed_to_type_1\",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]=\"Type_0_cannot_be_reinterpreted_as_type_1\",e[e.Basic_type_0_cannot_be_nullable=204]=\"Basic_type_0_cannot_be_nullable\",e[e.Cannot_export_a_mutable_global=205]=\"Cannot_export_a_mutable_global\",e[e.Mutable_value_cannot_be_inlined=206]=\"Mutable_value_cannot_be_inlined\",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]=\"Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa\",e[e.Unmanaged_classes_cannot_implement_interfaces=208]=\"Unmanaged_classes_cannot_implement_interfaces\",e[e.Invalid_regular_expression_flags=209]=\"Invalid_regular_expression_flags\",e[e.Implementation_0_must_match_the_signature_1=210]=\"Implementation_0_must_match_the_signature_1\",e[e.Class_0_is_sealed_and_cannot_be_extended=211]=\"Class_0_is_sealed_and_cannot_be_extended\",e[e.Decorator_0_is_not_valid_here=212]=\"Decorator_0_is_not_valid_here\",e[e.Duplicate_decorator=213]=\"Duplicate_decorator\",e[e.An_allocator_must_be_present_to_use_0=214]=\"An_allocator_must_be_present_to_use_0\",e[e.Optional_parameter_must_have_an_initializer=215]=\"Optional_parameter_must_have_an_initializer\",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]=\"Constructor_of_class_0_must_not_require_any_arguments\",e[e.Function_0_cannot_be_inlined_into_itself=217]=\"Function_0_cannot_be_inlined_into_itself\",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]=\"Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set\",e[e.Optional_properties_are_not_supported=219]=\"Optional_properties_are_not_supported\",e[e.Expression_must_be_a_compile_time_constant=220]=\"Expression_must_be_a_compile_time_constant\",e[e.Module_cannot_have_multiple_start_functions=221]=\"Module_cannot_have_multiple_start_functions\",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]=\"_0_must_be_a_value_between_1_and_2_inclusive\",e[e._0_must_be_a_power_of_two=223]=\"_0_must_be_a_power_of_two\",e[e.Expression_is_unsafe=224]=\"Expression_is_unsafe\",e[e.Expression_is_never_null=225]=\"Expression_is_never_null\",e[e.Unterminated_string_literal=1002]=\"Unterminated_string_literal\",e[e.Identifier_expected=1003]=\"Identifier_expected\",e[e._0_expected=1005]=\"_0_expected\",e[e.A_file_cannot_have_a_reference_to_itself=1006]=\"A_file_cannot_have_a_reference_to_itself\",e[e.Trailing_comma_not_allowed=1009]=\"Trailing_comma_not_allowed\",e[e.Unexpected_token=1012]=\"Unexpected_token\",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]=\"A_rest_parameter_must_be_last_in_a_parameter_list\",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]=\"Parameter_cannot_have_question_mark_and_initializer\",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]=\"A_required_parameter_cannot_follow_an_optional_parameter\",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]=\"Statements_are_not_allowed_in_ambient_contexts\",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]=\"Initializers_are_not_allowed_in_ambient_contexts\",e[e._0_modifier_cannot_be_used_here=1042]=\"_0_modifier_cannot_be_used_here\",e[e.A_rest_parameter_cannot_be_optional=1047]=\"A_rest_parameter_cannot_be_optional\",e[e.A_rest_parameter_cannot_have_an_initializer=1048]=\"A_rest_parameter_cannot_have_an_initializer\",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]=\"A_set_accessor_must_have_exactly_one_parameter\",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]=\"A_set_accessor_parameter_cannot_have_an_initializer\",e[e.A_get_accessor_cannot_have_parameters=1054]=\"A_get_accessor_cannot_have_parameters\",e[e.Enum_member_must_have_initializer=1061]=\"Enum_member_must_have_initializer\",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]=\"Type_parameters_cannot_appear_on_a_constructor_declaration\",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]=\"Type_annotation_cannot_appear_on_a_constructor_declaration\",e[e.An_accessor_cannot_have_type_parameters=1094]=\"An_accessor_cannot_have_type_parameters\",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]=\"A_set_accessor_cannot_have_a_return_type_annotation\",e[e.Type_parameter_list_cannot_be_empty=1098]=\"Type_parameter_list_cannot_be_empty\",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]=\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement\",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]=\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement\",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]=\"A_return_statement_can_only_be_used_within_a_function_body\",e[e.Expression_expected=1109]=\"Expression_expected\",e[e.Type_expected=1110]=\"Type_expected\",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]=\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement\",e[e.Duplicate_label_0=1114]=\"Duplicate_label_0\",e[e.An_export_assignment_cannot_have_modifiers=1120]=\"An_export_assignment_cannot_have_modifiers\",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]=\"Octal_literals_are_not_allowed_in_strict_mode\",e[e.Digit_expected=1124]=\"Digit_expected\",e[e.Hexadecimal_digit_expected=1125]=\"Hexadecimal_digit_expected\",e[e.Unexpected_end_of_text=1126]=\"Unexpected_end_of_text\",e[e.Invalid_character=1127]=\"Invalid_character\",e[e._case_or_default_expected=1130]=\"_case_or_default_expected\",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]=\"_super_must_be_followed_by_an_argument_list_or_member_access\",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]=\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context\",e[e.Type_argument_expected=1140]=\"Type_argument_expected\",e[e.String_literal_expected=1141]=\"String_literal_expected\",e[e.Line_break_not_permitted_here=1142]=\"Line_break_not_permitted_here\",e[e.Declaration_expected=1146]=\"Declaration_expected\",e[e._const_declarations_must_be_initialized=1155]=\"_const_declarations_must_be_initialized\",e[e.Unterminated_regular_expression_literal=1161]=\"Unterminated_regular_expression_literal\",e[e.Interface_declaration_cannot_have_implements_clause=1176]=\"Interface_declaration_cannot_have_implements_clause\",e[e.Binary_digit_expected=1177]=\"Binary_digit_expected\",e[e.Octal_digit_expected=1178]=\"Octal_digit_expected\",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]=\"An_implementation_cannot_be_declared_in_ambient_contexts\",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]=\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive\",e[e.Unterminated_Unicode_escape_sequence=1199]=\"Unterminated_Unicode_escape_sequence\",e[e.Decorators_are_not_valid_here=1206]=\"Decorators_are_not_valid_here\",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]=\"_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration\",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]=\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract\",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]=\"A_definite_assignment_assertion_is_not_permitted_in_this_context\",e[e.A_class_may_only_extend_another_class=1311]=\"A_class_may_only_extend_another_class\",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]=\"A_parameter_property_cannot_be_declared_using_a_rest_parameter\",e[e.Duplicate_identifier_0=2300]=\"Duplicate_identifier_0\",e[e.Cannot_find_name_0=2304]=\"Cannot_find_name_0\",e[e.Module_0_has_no_exported_member_1=2305]=\"Module_0_has_no_exported_member_1\",e[e.Generic_type_0_requires_1_type_argument_s=2314]=\"Generic_type_0_requires_1_type_argument_s\",e[e.Type_0_is_not_generic=2315]=\"Type_0_is_not_generic\",e[e.Type_0_is_not_assignable_to_type_1=2322]=\"Type_0_is_not_assignable_to_type_1\",e[e.Index_signature_is_missing_in_type_0=2329]=\"Index_signature_is_missing_in_type_0\",e[e._this_cannot_be_referenced_in_current_location=2332]=\"_this_cannot_be_referenced_in_current_location\",e[e._super_can_only_be_referenced_in_a_derived_class=2335]=\"_super_can_only_be_referenced_in_a_derived_class\",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]=\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors\",e[e.Property_0_does_not_exist_on_type_1=2339]=\"Property_0_does_not_exist_on_type_1\",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]=\"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures\",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]=\"Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature\",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]=\"A_function_whose_declared_type_is_not_void_must_return_a_value\",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]=\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access\",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]=\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access\",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]=\"Operator_0_cannot_be_applied_to_types_1_and_2\",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]=\"A_super_call_must_be_the_first_statement_in_the_constructor\",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]=\"Constructors_for_derived_classes_must_contain_a_super_call\",e[e._get_and_set_accessor_must_have_the_same_type=2380]=\"_get_and_set_accessor_must_have_the_same_type\",e[e.Constructor_implementation_is_missing=2390]=\"Constructor_implementation_is_missing\",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]=\"Function_implementation_is_missing_or_not_immediately_following_the_declaration\",e[e.Multiple_constructor_implementations_are_not_allowed=2392]=\"Multiple_constructor_implementations_are_not_allowed\",e[e.Duplicate_function_implementation=2393]=\"Duplicate_function_implementation\",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]=\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local\",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]=\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged\",e[e.Type_0_has_no_property_1=2460]=\"Type_0_has_no_property_1\",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]=\"The_0_operator_cannot_be_applied_to_type_1\",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]=\"In_const_enum_declarations_member_initializer_must_be_constant_expression\",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]=\"Export_declaration_conflicts_with_exported_declaration_of_0\",e[e.Object_is_possibly_null=2531]=\"Object_is_possibly_null\",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]=\"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property\",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]=\"The_target_of_an_assignment_must_be_a_variable_or_a_property_access\",e[e.Index_signature_in_type_0_only_permits_reading=2542]=\"Index_signature_in_type_0_only_permits_reading\",e[e.Expected_0_arguments_but_got_1=2554]=\"Expected_0_arguments_but_got_1\",e[e.Expected_at_least_0_arguments_but_got_1=2555]=\"Expected_at_least_0_arguments_but_got_1\",e[e.Expected_0_type_arguments_but_got_1=2558]=\"Expected_0_type_arguments_but_got_1\",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]=\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums\",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]=\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration\",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]=\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration\",e[e.Namespace_0_has_no_exported_member_1=2694]=\"Namespace_0_has_no_exported_member_1\",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]=\"Required_type_parameters_may_not_follow_optional_type_parameters\",e[e.Duplicate_property_0=2718]=\"Duplicate_property_0\",e[e.Type_0_has_no_call_signatures=2757]=\"Type_0_has_no_call_signatures\",e[e.File_0_not_found=6054]=\"File_0_not_found\",e[e.Numeric_separators_are_not_allowed_here=6188]=\"Numeric_separators_are_not_allowed_here\",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]=\"Multiple_consecutive_numeric_separators_are_not_permitted\",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]=\"_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class\",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]=\"_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class\"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return\"Operation not supported.\";case 101:return\"Operation is unsafe.\";case 102:return\"User-defined: {0}\";case 200:return\"Conversion from type '{0}' to '{1}' requires an explicit cast.\";case 201:return\"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";case 202:return\"Type '{0}' cannot be changed to type '{1}'.\";case 203:return\"Type '{0}' cannot be reinterpreted as type '{1}'.\";case 204:return\"Basic type '{0}' cannot be nullable.\";case 205:return\"Cannot export a mutable global.\";case 206:return\"Mutable value cannot be inlined.\";case 207:return\"Unmanaged classes cannot extend managed classes and vice-versa.\";case 208:return\"Unmanaged classes cannot implement interfaces.\";case 209:return\"Invalid regular expression flags.\";case 210:return\"Implementation '{0}' must match the signature '{1}'.\";case 211:return\"Class '{0}' is sealed and cannot be extended.\";case 212:return\"Decorator '{0}' is not valid here.\";case 213:return\"Duplicate decorator.\";case 214:return\"An allocator must be present to use '{0}'.\";case 215:return\"Optional parameter must have an initializer.\";case 216:return\"Constructor of class '{0}' must not require any arguments.\";case 217:return\"Function '{0}' cannot be inlined into itself.\";case 218:return\"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";case 219:return\"Optional properties are not supported.\";case 220:return\"Expression must be a compile-time constant.\";case 221:return\"Module cannot have multiple start functions.\";case 222:return\"'{0}' must be a value between '{1}' and '{2}' inclusive.\";case 223:return\"'{0}' must be a power of two.\";case 224:return\"Expression is unsafe.\";case 225:return\"Expression is never 'null'.\";case 1002:return\"Unterminated string literal.\";case 1003:return\"Identifier expected.\";case 1005:return\"'{0}' expected.\";case 1006:return\"A file cannot have a reference to itself.\";case 1009:return\"Trailing comma not allowed.\";case 1012:return\"Unexpected token.\";case 1014:return\"A rest parameter must be last in a parameter list.\";case 1015:return\"Parameter cannot have question mark and initializer.\";case 1016:return\"A required parameter cannot follow an optional parameter.\";case 1036:return\"Statements are not allowed in ambient contexts.\";case 1039:return\"Initializers are not allowed in ambient contexts.\";case 1042:return\"'{0}' modifier cannot be used here.\";case 1047:return\"A rest parameter cannot be optional.\";case 1048:return\"A rest parameter cannot have an initializer.\";case 1049:return\"A 'set' accessor must have exactly one parameter.\";case 1052:return\"A 'set' accessor parameter cannot have an initializer.\";case 1054:return\"A 'get' accessor cannot have parameters.\";case 1061:return\"Enum member must have initializer.\";case 1092:return\"Type parameters cannot appear on a constructor declaration.\";case 1093:return\"Type annotation cannot appear on a constructor declaration.\";case 1094:return\"An accessor cannot have type parameters.\";case 1095:return\"A 'set' accessor cannot have a return type annotation.\";case 1098:return\"Type parameter list cannot be empty.\";case 1104:return\"A 'continue' statement can only be used within an enclosing iteration statement.\";case 1105:return\"A 'break' statement can only be used within an enclosing iteration or switch statement.\";case 1108:return\"A 'return' statement can only be used within a function body.\";case 1109:return\"Expression expected.\";case 1110:return\"Type expected.\";case 1113:return\"A 'default' clause cannot appear more than once in a 'switch' statement.\";case 1114:return\"Duplicate label '{0}'.\";case 1120:return\"An export assignment cannot have modifiers.\";case 1121:return\"Octal literals are not allowed in strict mode.\";case 1124:return\"Digit expected.\";case 1125:return\"Hexadecimal digit expected.\";case 1126:return\"Unexpected end of text.\";case 1127:return\"Invalid character.\";case 1130:return\"'case' or 'default' expected.\";case 1034:return\"'super' must be followed by an argument list or member access.\";case 1038:return\"A 'declare' modifier cannot be used in an already ambient context.\";case 1140:return\"Type argument expected.\";case 1141:return\"String literal expected.\";case 1142:return\"Line break not permitted here.\";case 1146:return\"Declaration expected.\";case 1155:return\"'const' declarations must be initialized.\";case 1161:return\"Unterminated regular expression literal.\";case 1176:return\"Interface declaration cannot have 'implements' clause.\";case 1177:return\"Binary digit expected.\";case 1178:return\"Octal digit expected.\";case 1183:return\"An implementation cannot be declared in ambient contexts.\";case 1198:return\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";case 1199:return\"Unterminated Unicode escape sequence.\";case 1206:return\"Decorators are not valid here.\";case 1242:return\"'abstract' modifier can only appear on a class, method, or property declaration.\";case 1245:return\"Method '{0}' cannot have an implementation because it is marked abstract.\";case 1255:return\"A definite assignment assertion '!' is not permitted in this context.\";case 1311:return\"A class may only extend another class.\";case 1317:return\"A parameter property cannot be declared using a rest parameter.\";case 2300:return\"Duplicate identifier '{0}'.\";case 2304:return\"Cannot find name '{0}'.\";case 2305:return\"Module '{0}' has no exported member '{1}'.\";case 2314:return\"Generic type '{0}' requires {1} type argument(s).\";case 2315:return\"Type '{0}' is not generic.\";case 2322:return\"Type '{0}' is not assignable to type '{1}'.\";case 2329:return\"Index signature is missing in type '{0}'.\";case 2332:return\"'this' cannot be referenced in current location.\";case 2335:return\"'super' can only be referenced in a derived class.\";case 2337:return\"Super calls are not permitted outside constructors or in nested functions inside constructors.\";case 2339:return\"Property '{0}' does not exist on type '{1}'.\";case 2349:return\"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";case 2351:return\"Cannot use 'new' with an expression whose type lacks a construct signature.\";case 2355:return\"A function whose declared type is not 'void' must return a value.\";case 2357:return\"The operand of an increment or decrement operator must be a variable or a property access.\";case 2364:return\"The left-hand side of an assignment expression must be a variable or a property access.\";case 2365:return\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";case 2376:return\"A 'super' call must be the first statement in the constructor.\";case 2377:return\"Constructors for derived classes must contain a 'super' call.\";case 2380:return\"'get' and 'set' accessor must have the same type.\";case 2390:return\"Constructor implementation is missing.\";case 2391:return\"Function implementation is missing or not immediately following the declaration.\";case 2392:return\"Multiple constructor implementations are not allowed.\";case 2393:return\"Duplicate function implementation.\";case 2395:return\"Individual declarations in merged declaration '{0}' must be all exported or all local.\";case 2434:return\"A namespace declaration cannot be located prior to a class or function with which it is merged.\";case 2460:return\"Type '{0}' has no property '{1}'.\";case 2469:return\"The '{0}' operator cannot be applied to type '{1}'.\";case 2474:return\"In 'const' enum declarations member initializer must be constant expression.\";case 2484:return\"Export declaration conflicts with exported declaration of '{0}'.\";case 2531:return\"Object is possibly 'null'.\";case 2540:return\"Cannot assign to '{0}' because it is a constant or a read-only property.\";case 2541:return\"The target of an assignment must be a variable or a property access.\";case 2542:return\"Index signature in type '{0}' only permits reading.\";case 2554:return\"Expected {0} arguments, but got {1}.\";case 2555:return\"Expected at least {0} arguments, but got {1}.\";case 2558:return\"Expected {0} type arguments, but got {1}.\";case 2651:return\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";case 2673:return\"Constructor of class '{0}' is private and only accessible within the class declaration.\";case 2674:return\"Constructor of class '{0}' is protected and only accessible within the class declaration.\";case 2694:return\"Namespace '{0}' has no exported member '{1}'.\";case 2706:return\"Required type parameters may not follow optional type parameters.\";case 2718:return\"Duplicate property '{0}'.\";case 2757:return\"Type '{0}' has no call signatures.\";case 6054:return\"File '{0}' not found.\";case 6188:return\"Numeric separators are not allowed here.\";case 6189:return\"Multiple consecutive numeric separators are not permitted.\";case 17009:return\"'super' must be called before accessing 'this' in the constructor of a derived class.\";case 17011:return\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";default:return\"\"}}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes(\"@nearfile\")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:\"Integer\",u32:\"Integer\",i64:\"String\",u64:\"String\",string:\"String\",bool:\"Boolean\",Uint8Array:\"String\"},t.nonNullableTypes=[\"i32\",\"u32\",\"i64\",\"u64\",\"bool\",\"boolean\"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return\"void\"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split(\"|\").filter(function(e){return\"null\"!==e.trim()}).join(\"|\"),s=p(n).includes(\"null\"),a=e.name.symbol;this.sb.push(\"\\n//@ts-ignore\\nfunction __wrapper_\"+a+\"(): void {\"),i.length>0&&this.sb.push(\" // Reading input bytes.\\n input(0);\\n let json_len = register_len(0);\\n if (json_len == U32.MAX_VALUE) {\\n panic();\\n }\\n let json = new Uint8Array(json_len as u32);\\n read_register(0, json.buffer);\\n const obj: Obj = JSON.parse(json);\"),\"void\"!==p(n)?this.sb.push(\" let result: \"+p(n)+\" = \"+a+\"(\"):this.sb.push(\" \"+a+\"(\"),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(\", \")),this.sb[this.sb.length-1]+=\");\",\"void\"!==p(n)&&this.sb.push(\"\\n let encoder = new JSONEncoder();\\n if ((isString<\"+r+\">() || isNullable<\"+r+\">()) && result == null) {\\n encoder.setNull(null);\\n } else {\\n encode<\"+r+\">(encoder, result\"+(s?\"!\":\"\")+\", null);\\n }\\n let val: Uint8Array = encoder.serialize();\\n value_return(val.byteLength, val.buffer);\"),this.sb.push(\"}\\n\\nexport { __wrapper_\"+a+\" as \"+a+\" }\\n\")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+=\"<\"+e.typeParameters.map(p).join(\", \")+\">\"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf(\"}\")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error(\"All Fields must have explict type declaration.\");var r=t.typeName(n);i+=\"\\n static decode(json: Uint8Array): \"+r+\" {\\n let value = instantiate<\"+r+\">(); // Allocate without constructor\\n value.decode(JSON.parse(json));\\n return value;\\n }\\n\\n decode(obj: Obj): \"+r+\" {\\n \"+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,\"this.\"+t+' = obj.has(\"'+t+'\") ? ')+\": this.\"+t+\";\"})}(n).join(\"\\n \")+'\\n return this;\\n }\\n\\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\\n encoder.pushObject(name);\\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return\"encode<\"+t+\">(encoder, this.\"+i+', \"'+i+'\");'})}(n).join(\"\\n \")+\"\\n encoder.popObject();\\n return encoder\\n }\\n\\n serialize(): Uint8Array {\\n return this.encode().serialize();\\n }\\n\\n toJSON(): string {\\n return this.encode().toString();\\n }\\n}\"}return i});return this.sb.concat(i).join(\"\\n\")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=\"\"),t+\"decode<\"+p(e.type)+'>(obj, \"'+p(e.name)+'\")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf(\"\\n\")).includes(\"out\");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t(\"out/\"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?\"\":\"./\")+n.normalizedPath,h(n))})}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NONE=0]=\"NONE\",e[e.SIGN_EXTENSION=1]=\"SIGN_EXTENSION\",e[e.MUTABLE_GLOBAL=2]=\"MUTABLE_GLOBAL\",e[e.BULK_MEMORY=4]=\"BULK_MEMORY\",e[e.SIMD=8]=\"SIMD\",e[e.THREADS=16]=\"THREADS\"}(t.Feature||(t.Feature={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.WASM32=0]=\"WASM32\",e[e.WASM64=1]=\"WASM64\",e[e.JS=2]=\"JS\"}(t.Target||(t.Target={}))},function(e,t,i){\"use strict\";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]=\"NONE\",e[e.ARRAYBUFFERVIEW=1]=\"ARRAYBUFFERVIEW\",e[e.ARRAY=2]=\"ARRAY\",e[e.SET=4]=\"SET\",e[e.MAP=8]=\"MAP\",e[e.ACYCLIC=16]=\"ACYCLIC\",e[e.VALUE_ALIGN_0=32]=\"VALUE_ALIGN_0\",e[e.VALUE_ALIGN_1=64]=\"VALUE_ALIGN_1\",e[e.VALUE_ALIGN_2=128]=\"VALUE_ALIGN_2\",e[e.VALUE_ALIGN_3=256]=\"VALUE_ALIGN_3\",e[e.VALUE_ALIGN_4=512]=\"VALUE_ALIGN_4\",e[e.VALUE_SIGNED=1024]=\"VALUE_SIGNED\",e[e.VALUE_FLOAT=2048]=\"VALUE_FLOAT\",e[e.VALUE_NULLABLE=4096]=\"VALUE_NULLABLE\",e[e.VALUE_MANAGED=8192]=\"VALUE_MANAGED\",e[e.KEY_ALIGN_0=16384]=\"KEY_ALIGN_0\",e[e.KEY_ALIGN_1=32768]=\"KEY_ALIGN_1\",e[e.KEY_ALIGN_2=65536]=\"KEY_ALIGN_2\",e[e.KEY_ALIGN_3=131072]=\"KEY_ALIGN_3\",e[e.KEY_ALIGN_4=262144]=\"KEY_ALIGN_4\",e[e.KEY_SIGNED=524288]=\"KEY_SIGNED\",e[e.KEY_FLOAT=1048576]=\"KEY_FLOAT\",e[e.KEY_NULLABLE=2097152]=\"KEY_NULLABLE\",e[e.KEY_MANAGED=4194304]=\"KEY_MANAGED\"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return\"INFO\";case n.WARNING:return\"WARNING\";case n.ERROR:return\"ERROR\";default:return assert(!1),\"\"}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),\"\"}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]=\"INFO\",e[e.WARNING=1]=\"WARNING\",e[e.ERROR=2]=\"ERROR\"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE=\"\u001b[96m\",t.COLOR_YELLOW=\"\u001b[93m\",t.COLOR_RED=\"\u001b[91m\",t.COLOR_RESET=\"\u001b[0m\",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace(\"{0}\",n)),null!=s&&(o=o.replace(\"{1}\",s)),null!=a&&(o=o.replace(\"{2}\",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+\" \"+this.code.toString(10)+': \"'+this.message+'\" in '+this.range.source.normalizedPath+\":\"+this.range.line.toString(10)+\":\"+this.range.column.toString(10):o(this.category)+\" \"+this.code.toString(10)+\": \"+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NULL=0]=\"NULL\",e[e.LINEFEED=10]=\"LINEFEED\",e[e.CARRIAGERETURN=13]=\"CARRIAGERETURN\",e[e.LINESEPARATOR=8232]=\"LINESEPARATOR\",e[e.PARAGRAPHSEPARATOR=8233]=\"PARAGRAPHSEPARATOR\",e[e.NEXTLINE=133]=\"NEXTLINE\",e[e.SPACE=32]=\"SPACE\",e[e.NONBREAKINGSPACE=160]=\"NONBREAKINGSPACE\",e[e.ENQUAD=8192]=\"ENQUAD\",e[e.EMQUAD=8193]=\"EMQUAD\",e[e.ENSPACE=8194]=\"ENSPACE\",e[e.EMSPACE=8195]=\"EMSPACE\",e[e.THREEPEREMSPACE=8196]=\"THREEPEREMSPACE\",e[e.FOURPEREMSPACE=8197]=\"FOURPEREMSPACE\",e[e.SIXPEREMSPACE=8198]=\"SIXPEREMSPACE\",e[e.FIGURESPACE=8199]=\"FIGURESPACE\",e[e.PUNCTUATIONSPACE=8200]=\"PUNCTUATIONSPACE\",e[e.THINSPACE=8201]=\"THINSPACE\",e[e.HAIRSPACE=8202]=\"HAIRSPACE\",e[e.ZEROWIDTHSPACE=8203]=\"ZEROWIDTHSPACE\",e[e.NARROWNOBREAKSPACE=8239]=\"NARROWNOBREAKSPACE\",e[e.IDEOGRAPHICSPACE=12288]=\"IDEOGRAPHICSPACE\",e[e.MATHEMATICALSPACE=8287]=\"MATHEMATICALSPACE\",e[e.OGHAM=5760]=\"OGHAM\",e[e._=95]=\"_\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.AMPERSAND=38]=\"AMPERSAND\",e[e.ASTERISK=42]=\"ASTERISK\",e[e.AT=64]=\"AT\",e[e.BACKSLASH=92]=\"BACKSLASH\",e[e.BACKTICK=96]=\"BACKTICK\",e[e.BAR=124]=\"BAR\",e[e.CARET=94]=\"CARET\",e[e.CLOSEBRACE=125]=\"CLOSEBRACE\",e[e.CLOSEBRACKET=93]=\"CLOSEBRACKET\",e[e.CLOSEPAREN=41]=\"CLOSEPAREN\",e[e.COLON=58]=\"COLON\",e[e.COMMA=44]=\"COMMA\",e[e.DOLLAR=36]=\"DOLLAR\",e[e.DOT=46]=\"DOT\",e[e.DOUBLEQUOTE=34]=\"DOUBLEQUOTE\",e[e.EQUALS=61]=\"EQUALS\",e[e.EXCLAMATION=33]=\"EXCLAMATION\",e[e.GREATERTHAN=62]=\"GREATERTHAN\",e[e.HASH=35]=\"HASH\",e[e.LESSTHAN=60]=\"LESSTHAN\",e[e.MINUS=45]=\"MINUS\",e[e.OPENBRACE=123]=\"OPENBRACE\",e[e.OPENBRACKET=91]=\"OPENBRACKET\",e[e.OPENPAREN=40]=\"OPENPAREN\",e[e.PERCENT=37]=\"PERCENT\",e[e.PLUS=43]=\"PLUS\",e[e.QUESTION=63]=\"QUESTION\",e[e.SEMICOLON=59]=\"SEMICOLON\",e[e.SINGLEQUOTE=39]=\"SINGLEQUOTE\",e[e.SLASH=47]=\"SLASH\",e[e.TILDE=126]=\"TILDE\",e[e.BACKSPACE=8]=\"BACKSPACE\",e[e.FORMFEED=12]=\"FORMFEED\",e[e.BYTEORDERMARK=65279]=\"BYTEORDERMARK\",e[e.TAB=9]=\"TAB\",e[e.VERTICALTAB=11]=\"VERTICALTAB\"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:\".\"}function a(e){var t=e.length;if(t<=1){if(0==t)return\".\";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return\".\"}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith(\"std/\")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=\" \",r=\" \",s=\" \";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){\"use strict\";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i\")}e.isNullable&&n.push(\" | null\")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?\"((\":\"(\");var n=e.explicitThisType;n&&(i.push(\"this: \"),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(\", \"),this.serializeParameter(r[0]);for(var a=1;a \"),this.visitTypeNode(o)):i.push(\") => void\"),t&&i.push(\") | null\")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(\" extends \"),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push(\"=\"),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push(\"[\");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r\"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(\" as \"),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push(\"!\");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(\" \"),t.push(a.operatorTokenToString(e.operator)),t.push(\" \"),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push(\"<\"),this.visitTypeNode(i[0]);for(var r=1;r(\")}}else t.push(\"(\");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push(\"\\\\0\"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\b\");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\t\");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\n\");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\v\");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\f\");break;case 13:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\r\"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\\\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push(\"\\\\'\"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\\\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push(\"/\"),t.push(e.pattern),t.push(\"/\"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push(\"new \"),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push(\"(\"),this.visitNode(e.expression),t.push(\")\")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push(\".\"),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(\" ? \"),this.visitNode(e.ifThen),t.push(\" : \"),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push(\"\\n\"):t.push(\";\\n\")}else t.push(\";\\n\")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push(\"{\\n\");for(var r=++this.indentLevel,a=0;a\")}var _=e.extendsType;_&&(u.push(\" extends \"),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(\" implements \"),this.visitTypeNode(p[0]);for(a=1;a\")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push(\"(\");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push(\"this: \"),this.visitTypeNode(_)),c){_&&t.push(\", \"),this.serializeParameter(u[0]);for(o=1;o \"),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(\" => \"),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(\")\"):(t.push(\"): \"),this.visitTypeNode(h)),p&&(t.push(\" \"),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push(\"if (\"),this.visitNode(e.condition),t.push(\") \");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(\";\\n\");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(\" else \"):t.push(\"else \"),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(\" as \"),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push(\"import \");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push(\"{\\n\");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o\")}var u=e.extendsType;u&&(a.push(\" extends \"),this.visitTypeNode(u)),a.push(\" {\\n\");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n\")}}r.push(\" = \"),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push(\"!\"),t&&(i.push(\": \"),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(\" = \"),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name=\"UnreachableError\",r.prototype.message=\"unreachable\",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name=\"AssertionError\",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,\"replaceAll\",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return\"number\"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return\"object\"==typeof e||\"string\"==typeof e},t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"string\"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,\"__isLong__\",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error(\"empty string\");if(\"NaN\"===e||\"Infinity\"===e||\"+Infinity\"===e||\"-Infinity\"===e)return A;if(\"number\"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error(\"interior hyphen\");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c=\"0\"+c;a=\"\"+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error(\"division by zero\");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&\"function\"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.preamble='import { base64 } from \"near-runtime-ts\";\\nimport { JSONEncoder } from \"assemblyscript-json\";\\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\\n'}])});","if(typeof __WEBPACK_EXTERNAL_MODULE__11__ === 'undefined') {var e = new Error(\"Cannot find module 'assemblyscript'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__11__;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 13;","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/./asc.js","webpack://asc/../node_modules/@protobufjs/utf8/index.js","webpack://asc/./util/colors.js","webpack://asc/./util/options.js","webpack://asc/./util/mkdirp.js","webpack://asc/../bindings/dist/transformerBundle.js","webpack://asc/external \"assemblyscript\"","webpack://asc/. sync","webpack://asc/../node_modules/browser-process-hrtime/index.js"],"names":["root","factory","exports","module","require","e","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__11__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","args","Array","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","g","Function","window","global","fs","utf8","colorsUtil","optionsUtil","mkdirp","EOL","SEP","nearBindings","nearLibEntry","removeAllListeners","assemblyscript","isDev","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","write","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","hrtime","times","formatTime","time","toFixed","printStats","stats","output","format","count","stdout","printRTTI","program","buildRTTI","register","project","e_ts","eval","stack","isBundle","version","options","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","nearEntry","array","arraybuffer","bindings/Date","bindings/Math","bindings/wasi_unstable","bindings/wasi","builtins","compat","dataview","date","diagnostics","error","fixedarray","heap","iterator","map","math","memory","number","polyfills","regexp","rt","rt/common","rt/index-full","rt/index-half","rt/index-none","rt/index-stub","rt/pure","rt/rtrace","rt/stub","rt/tlsf","set","shared/feature","shared/target","shared/typeinfo","string","symbol","table","typedarray","util/error","util/hash","util/memory","util/number","util/sort","util/string","vector","libDir","libFiles","sync","bundled","readFileSync","forEach","file","replace","definitionFiles","assembly","portable","stdDir","compileString","sources","input.ts","createMemoryStream","keys","val","isArray","String","main","readFile","writeFile","contents","listFiles","callback","readFileNode","writeFileNode","listFilesNode","opts","parse","noColors","supported","unknown","arg","yellow","trailing","err","red","help","out","color","white","cyan","baseDir","transforms","notNear","transform","parser","packages","Map","importPathMap","libPath","indexOf","parseFile","customLibDirs","lib","k","endsWith","j","libText","nodePaths","basePath","_path","_","dirFrom","reverse","getPaths","parseBacklog","sourcePath","sourceText","sysPath","nextFile","dependee","getDependee","startsWith","plainName","substring","indexName","traceResolution","_package","ascMain","has","package_json","JSON","mainFile","newPackage","realPath","_p","first","second","runtimeName","runtime","runtimePath","runtimeText","filename","applyTransform","finishParsing","normalizedPath","sort","optimizeLevel","shrinkLevel","optimize","max","compilerOptions","createOptions","setTarget","setNoAssert","noAssert","setImportMemory","importMemory","setSharedMemory","sharedMemory","setImportTable","importTable","setExplicitStart","explicitStart","setMemoryBase","memoryBase","setSourceMap","sourceMap","setOptimizeLevelHints","setNoUnsafe","noUnsafe","setGlobalAlias","use","aliases","part","alias","enable","flag","toUpperCase","enableFeature","compileProgram","dispose","validate","trapMode","runPasses","setOptimizeLevel","setShrinkLevel","setDebugInfo","debug","pass","noEmit","hasStdout","hasOutput","outFile","test","textFile","asmjsFile","binaryFile","wasm","sourceMapURL","toBinary","writeStdout","sourceRoot","text","stdName","sourceContents","stringify","asm","toAsmjs","idlFile","idl","buildIDL","tsdFile","tsd","buildTSD","wat","toText","printrtti","encoding","writeFileSync","files","readdirSync","used","allocBuffer","Buffer","allocUnsafe","Uint8Array","stream","chunk","buffer","reset","toBuffer","offset","toString","read","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","target","noLib","types","allowJs","fromCharCode","c1","c2","proc","isCI","base","colors","gray","GRAY","RESET","RED","green","GREEN","YELLOW","blue","BLUE","magenta","MAGENTA","CYAN","WHITE","config","option","default","match","exec","type","parseInt","parseFloat","indent","padding","eol","sb","description","line","_0777","made","undefined","mkdirSync","err0","stat","statSync","err1","isDirectory","__extends","setPrototypeOf","__proto__","constructor","a","Token","Range","u","SOURCE","NAMEDTYPE","FUNCTIONTYPE","TYPENAME","TYPEPARAMETER","PARAMETER","IDENTIFIER","ASSERTION","BINARY","CALL","CLASS","COMMA","ELEMENTACCESS","FALSE","FUNCTION","INSTANCEOF","LITERAL","NEW","NULL","PARENTHESIZED","PROPERTYACCESS","TERNARY","SUPER","THIS","TRUE","CONSTRUCTOR","UNARYPOSTFIX","UNARYPREFIX","BLOCK","BREAK","CONTINUE","DO","EMPTY","EXPORT","EXPORTDEFAULT","EXPORTIMPORT","EXPRESSION","FOR","IF","IMPORT","RETURN","SWITCH","THROW","TRY","VARIABLE","VOID","WHILE","CLASSDECLARATION","ENUMDECLARATION","ENUMVALUEDECLARATION","FIELDDECLARATION","FUNCTIONDECLARATION","IMPORTDECLARATION","INDEXSIGNATUREDECLARATION","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","TYPEDECLARATION","VARIABLEDECLARATION","DECORATOR","EXPORTMEMBER","SWITCHCASE","COMMENT","NodeKind","nodeIsConstantValue","nodeIsCallable","nodeIsGenericCallable","createTypeName","range","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","h","typeArguments","isNullable","createFunctionType","parameters","returnType","explicitThisType","createOmittedType","createTypeParameter","extendsType","defaultType","createParameter","initializer","parameterKind","createDecorator","v","decoratorKind","A","createComment","commentKind","y","isQuoted","createEmptyIdentifierExpression","createArrayLiteralExpression","R","elementExpressions","createAssertionExpression","assertionKind","expression","toType","createBinaryExpression","I","operator","left","right","createCallExpression","b","createClassExpression","L","declaration","createCommaExpression","C","expressions","createConstructorExpression","O","createElementAccessExpression","x","elementExpression","createFalseExpression","createFloatLiteralExpression","P","createFunctionExpression","D","createInstanceOfExpression","U","isType","createIntegerLiteralExpression","w","createNewExpression","M","createNullExpression","createObjectLiteralExpression","F","names","values","createParenthesizedExpression","K","createPropertyAccessExpression","B","createRegexpLiteralExpression","H","pattern","patternFlags","createTernaryExpression","G","condition","ifThen","ifElse","createStringLiteralExpression","Y","createSuperExpression","V","createThisExpression","z","createTrueExpression","X","createUnaryPostfixExpression","W","operand","createUnaryPrefixExpression","q","createBlockStatement","ne","statements","createBreakStatement","re","label","createClassDeclaration","se","flags","typeParameters","implementsTypes","members","decorators","createContinueStatement","ae","createDoStatement","oe","statement","createEmptyStatement","ue","createEnumDeclaration","ce","createEnumValueDeclaration","_e","createExportStatement","le","normalizePath","resolvePath","source","internalPath","we","isDeclare","createExportDefaultStatement","de","createExportImportStatement","pe","externalName","createExportMember","he","localName","exportedName","createExpressionStatement","Ee","createIfStatement","me","ifTrue","ifFalse","createImportStatement","Ne","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","Te","foreignName","createInterfaceDeclaration","ye","createFieldDeclaration","fe","createForStatement","Ae","incrementor","createFunctionDeclaration","ve","signature","body","arrowKind","createIndexSignatureDeclaration","te","keyType","valueType","createMethodDeclaration","Se","createNamespaceDeclaration","Re","createReturnStatement","ge","createSwitchStatement","be","cases","createSwitchCase","Ie","createThrowStatement","Le","createTryStatement","Ce","catchVariable","catchStatements","finallyStatements","createTypeDeclaration","Oe","createVariableStatement","Pe","createVariableDeclaration","xe","createVoidStatement","De","createWhileStatement","Ue","Node","TypeNode","kind","TypeName","NamedTypeNode","FunctionTypeNode","TypeParameterNode","DEFAULT","OPTIONAL","REST","ParameterKind","E","implicitFieldDeclaration","CommonFlags","NONE","is","isAny","assert","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","ParameterNode","DecoratorKind","decoratorNameToKind","DecoratorNode","LINE","TRIPLE","CommentKind","CommentNode","T","Expression","N","IdentifierExpression","FLOAT","INTEGER","STRING","REGEXP","ARRAY","OBJECT","LiteralKind","S","LiteralExpression","literalKind","ArrayLiteralExpression","PREFIX","AS","NONNULL","AssertionKind","AssertionExpression","BinaryExpression","configurable","CallExpression","ClassExpression","CommaExpression","CommonSymbols","ConstructorExpression","ElementAccessExpression","FloatLiteralExpression","FunctionExpression","InstanceOfExpression","IntegerLiteralExpression","NewExpression","null_","NullExpression","ObjectLiteralExpression","ParenthesizedExpression","PropertyAccessExpression","RegexpLiteralExpression","TernaryExpression","StringLiteralExpression","super_","SuperExpression","this_","ThisExpression","true_","TrueExpression","false_","FalseExpression","Q","UnaryExpression","UnaryPostfixExpression","UnaryPrefixExpression","Z","J","Statement","USER","USER_ENTRY","LIBRARY","LIBRARY_ENTRY","SourceKind","$","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","lastIndexOf","PATH_DELIMITER","simplePath","Source","ee","DeclarationStatement","IndexSignatureDeclaration","ie","VariableLikeDeclarationStatement","BlockStatement","BreakStatement","ClassDeclaration","ContinueStatement","DoStatement","EmptyStatement","EnumDeclaration","EnumValueDeclaration","ExportImportStatement","ExportMember","ExportStatement","ExportDefaultStatement","ExpressionStatement","parameterIndex","FieldDeclaration","ForStatement","ARROW_PARENTHESIZED","ARROW_SINGLE","ArrowKind","clone","FunctionDeclaration","IfStatement","ImportDeclaration","ImportStatement","InterfaceDeclaration","MethodDeclaration","NamespaceDeclaration","ReturnStatement","SwitchCase","SwitchStatement","ThrowStatement","TryStatement","TypeDeclaration","VariableDeclaration","VariableStatement","VoidStatement","WhileStatement","findDecorator","mangleInternalPath","isTypeOmitted","DECLARE","CONST","LET","STATIC","READONLY","ABSTRACT","PUBLIC","PRIVATE","PROTECTED","GET","SET","DEFINITE_ASSIGNMENT","AMBIENT","GENERIC","GENERIC_CONTEXT","INSTANCE","MODULE_EXPORT","MODULE_IMPORT","RESOLVED","COMPILED","INLINED","SCOPED","TRAMPOLINE","VIRTUAL","MAIN","QUOTED","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","INDEX_SUFFIX","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","boolean","native","indexof","valueof","returnof","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","FixedArray","Set","ArrayBufferView","ArrayBuffer","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","Feature","Target","Typeinfo","TypeinfoFlags","isPowerOf2","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DELETE","ELSE","ENUM","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","INTERFACE","IS","KEYOF","MODULE","NAMESPACE","OF","PACKAGE","TYPE","TYPEOF","VAR","WITH","YIELD","INVALID","OPENBRACE","CLOSEBRACE","OPENPAREN","CLOSEPAREN","OPENBRACKET","CLOSEBRACKET","DOT","DOT_DOT_DOT","SEMICOLON","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","EQUALS_GREATERTHAN","PLUS","MINUS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","QUESTION","COLON","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","AT","STRINGLITERAL","INTEGERLITERAL","FLOATLITERAL","ENDOFFILE","PREFER","ALWAYS","IdentifierHandling","tokenFromKeyword","tokenIsAlsoIdentifier","isIllegalVariableIdentifier","operatorTokenToString","debugInfoRef","pos","token","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","unsafeNext","MAX_VALUE","isDecimalDigit","DiagnosticCode","_0_expected","testInteger","isIdentifierStart","isKeywordCharacter","isIdentifierPart","isWhiteSpace","Invalid_character","peek","isLineBreak","skipIdentifier","skip","mark","discard","readIdentifier","readString","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","readRegexpPattern","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_new","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_mul","Digit_expected","Octal_digit_expected","Binary_digit_expected","readFloat","readDecimalFloat","readHexFloat","i64_low","i64_high","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","DiagnosticEmitter","Tokenizer","State","Operation_not_supported","Operation_is_unsafe","User_defined_0","Conversion_from_type_0_to_1_requires_an_explicit_cast","Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit","Type_0_cannot_be_changed_to_type_1","Type_0_cannot_be_reinterpreted_as_type_1","Basic_type_0_cannot_be_nullable","Cannot_export_a_mutable_global","Mutable_value_cannot_be_inlined","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","Unmanaged_classes_cannot_implement_interfaces","Implementation_0_must_match_the_signature_1","Class_0_is_sealed_and_cannot_be_extended","Decorator_0_is_not_valid_here","Duplicate_decorator","An_allocator_must_be_present_to_use_0","Optional_parameter_must_have_an_initializer","Constructor_of_class_0_must_not_require_any_arguments","Function_0_cannot_be_inlined_into_itself","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","Optional_properties_are_not_supported","Expression_must_be_a_compile_time_constant","Module_cannot_have_multiple_start_functions","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","Expression_is_unsafe","Expression_is_never_null","Identifier_expected","A_file_cannot_have_a_reference_to_itself","Trailing_comma_not_allowed","Unexpected_token","A_rest_parameter_must_be_last_in_a_parameter_list","Parameter_cannot_have_question_mark_and_initializer","A_required_parameter_cannot_follow_an_optional_parameter","Statements_are_not_allowed_in_ambient_contexts","Initializers_are_not_allowed_in_ambient_contexts","_0_modifier_cannot_be_used_here","A_rest_parameter_cannot_be_optional","A_rest_parameter_cannot_have_an_initializer","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","Enum_member_must_have_initializer","Type_parameters_cannot_appear_on_a_constructor_declaration","Type_annotation_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","A_set_accessor_cannot_have_a_return_type_annotation","Type_parameter_list_cannot_be_empty","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_return_statement_can_only_be_used_within_a_function_body","Expression_expected","Type_expected","A_default_clause_cannot_appear_more_than_once_in_a_switch_statement","Duplicate_label_0","An_export_assignment_cannot_have_modifiers","_case_or_default_expected","_super_must_be_followed_by_an_argument_list_or_member_access","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","Type_argument_expected","String_literal_expected","Line_break_not_permitted_here","Declaration_expected","_const_declarations_must_be_initialized","Interface_declaration_cannot_have_implements_clause","An_implementation_cannot_be_declared_in_ambient_contexts","Decorators_are_not_valid_here","_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","A_definite_assignment_assertion_is_not_permitted_in_this_context","A_class_may_only_extend_another_class","A_parameter_property_cannot_be_declared_using_a_rest_parameter","Duplicate_identifier_0","Cannot_find_name_0","Module_0_has_no_exported_member_1","Generic_type_0_requires_1_type_argument_s","Type_0_is_not_generic","Type_0_is_not_assignable_to_type_1","Index_signature_is_missing_in_type_0","_this_cannot_be_referenced_in_current_location","_super_can_only_be_referenced_in_a_derived_class","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","Property_0_does_not_exist_on_type_1","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","A_function_whose_declared_type_is_not_void_must_return_a_value","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access","Operator_0_cannot_be_applied_to_types_1_and_2","A_super_call_must_be_the_first_statement_in_the_constructor","Constructors_for_derived_classes_must_contain_a_super_call","_get_and_set_accessor_must_have_the_same_type","Constructor_implementation_is_missing","Function_implementation_is_missing_or_not_immediately_following_the_declaration","Multiple_constructor_implementations_are_not_allowed","Duplicate_function_implementation","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged","Type_0_has_no_property_1","The_0_operator_cannot_be_applied_to_type_1","In_const_enum_declarations_member_initializer_must_be_constant_expression","Export_declaration_conflicts_with_exported_declaration_of_0","Object_is_possibly_null","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","The_target_of_an_assignment_must_be_a_variable_or_a_property_access","Index_signature_in_type_0_only_permits_reading","Expected_0_arguments_but_got_1","Expected_at_least_0_arguments_but_got_1","Expected_0_type_arguments_but_got_1","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","Namespace_0_has_no_exported_member_1","Required_type_parameters_may_not_follow_optional_type_parameters","Duplicate_property_0","Type_0_has_no_call_signatures","File_0_not_found","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","diagnosticCodeToString","includes","ASTBuilder","build","typeMapping","nonNullableTypes","exportedClasses","wrappedFuncs","nearFiles","visitClassDeclaration","visitFunctionDeclaration","generateWrapperFunction","add","typeName","isGeneric","getFields","preamble","some","BaseVisitor","afterParse","donelog","delete","seenlog","SIGN_EXTENSION","MUTABLE_GLOBAL","BULK_MEMORY","SIMD","THREADS","WASM32","WASM64","JS","__decorate","getOwnPropertyDescriptor","Reflect","decorate","ARRAYBUFFERVIEW","MAP","ACYCLIC","VALUE_ALIGN_0","VALUE_ALIGN_1","VALUE_ALIGN_2","VALUE_ALIGN_3","VALUE_ALIGN_4","VALUE_SIGNED","VALUE_FLOAT","VALUE_NULLABLE","VALUE_MANAGED","KEY_ALIGN_0","KEY_ALIGN_1","KEY_ALIGN_2","KEY_ALIGN_3","KEY_ALIGN_4","KEY_SIGNED","KEY_FLOAT","KEY_NULLABLE","KEY_MANAGED","INFO","WARNING","ERROR","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCategory","diagnosticCategoryToString","COLOR_RESET","diagnosticCategoryToColor","relatedRange","category","message","createInfo","createWarning","createError","withRange","withRelatedRange","column","DiagnosticMessage","formatDiagnosticMessage","formatDiagnosticContext","emitDiagnostic","info","infoRelated","warning","warningRelated","errorRelated","bitsetIs","i64_ne","i64_and","i64_one","i64_zero","bitsetSet","i64_or","i64_not","LINEFEED","CARRIAGERETURN","LINESEPARATOR","PARAGRAPHSEPARATOR","NEXTLINE","SPACE","NONBREAKINGSPACE","ENQUAD","EMQUAD","ENSPACE","EMSPACE","THREEPEREMSPACE","FOURPEREMSPACE","SIXPEREMSPACE","FIGURESPACE","PUNCTUATIONSPACE","THINSPACE","HAIRSPACE","ZEROWIDTHSPACE","NARROWNOBREAKSPACE","IDEOGRAPHICSPACE","MATHEMATICALSPACE","OGHAM","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","BACKSLASH","BACKTICK","DOLLAR","DOUBLEQUOTE","HASH","SINGLEQUOTE","BACKSPACE","FORMFEED","BYTEORDERMARK","TAB","VERTICALTAB","CharCode","__values","done","__read","return","makeArray","unchecked","makeSet","makeMap","readI8","writeI8","readI16","writeI16","readI32","writeI32","readI64","writeI64","readF32","i32_as_f32","writeF32","f32_as_i32","readF64","i64_as_f64","writeF64","f64_as_i64","indentLevel","visitNode","visitSource","visitNamedTypeNode","visitFunctionTypeNode","visitTypeParameter","visitIdentifierExpression","visitAssertionExpression","visitBinaryExpression","visitCallExpression","visitClassExpression","visitCommaExpression","visitElementAccessExpression","visitFunctionExpression","visitInstanceOfExpression","visitLiteralExpression","visitNewExpression","visitParenthesizedExpression","visitPropertyAccessExpression","visitTernaryExpression","visitUnaryPostfixExpression","visitUnaryPrefixExpression","visitBlockStatement","visitBreakStatement","visitContinueStatement","visitDoStatement","visitEmptyStatement","visitExportStatement","visitExportDefaultStatement","visitExportImportStatement","visitExpressionStatement","visitForStatement","visitIfStatement","visitImportStatement","visitReturnStatement","visitSwitchStatement","visitThrowStatement","visitTryStatement","visitVariableStatement","visitWhileStatement","visitEnumDeclaration","visitEnumValueDeclaration","visitFieldDeclaration","visitImportDeclaration","visitIndexSignatureDeclaration","visitInterfaceDeclaration","visitMethodDeclaration","visitNamespaceDeclaration","visitTypeDeclaration","visitVariableDeclaration","serializeDecorator","visitExportMember","serializeParameter","visitSwitchCase","visitNodeAndTerminate","visitTypeNode","visitTypeName","visitStringLiteral","visitArrayLiteralExpression","visitObjectLiteralExpression","visitFunctionCommon","visitFloatLiteralExpression","visitIntegerLiteralExpression","visitStringLiteralExpression","visitRegexpLiteralExpression","i64_to_string","visitUnaryExpression","serializeExternalModifiers","serializeAccessModifiers","captureStackTrace","defineProperties","MIN_VALUE","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz","clz32","ctz","popcnt","rotl","rotr","abs","ceil","floor","nearest","trunc","round","select","sqrt","copysign","sign","bswap","bswap16","unreachable","changetype","fromCharCodes","fromCodePoints","fromCodePoint","replaceAll","isInteger","Number","isFloat","isReference","isFunction","isString","isArrayLike","isDefined","isConstant","fmod","fmodf","JSMath","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","allocate","__memory_allocate","fill","__memory_fill","__memory_free","copy","__memory_copy","copyWithin","__memory_reset","store","__store","HEAP","load","__load","unmanaged","Long","ZERO","ONE","fromBits","low","high","i64_sub","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","and","or","i64_xor","xor","shl","i64_shr","shr","i64_shr_u","shru","not","i64_eq","eq","i64_align","fromInt","i64_is_i8","i64_is_i16","i64_is_i32","i64_is_u8","i64_is_u16","i64_is_u32","i64_is_bool","fromNumber","i64_is_f32","gte","lte","i64_is_f64","i64_to_f32","toNumber","i64_to_f64","WebAssembly","Instance","Module","unsigned","__isLong__","isLong","isNaN","neg","RangeError","fromString","fromValue","UZERO","UONE","NEG_ONE","MAX_UNSIGNED_VALUE","toInt","isZero","isNegative","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","greaterThan","gt","greaterThanOrEqual","compare","negate","subtract","multiply","get_high","divide","div_u","div_s","log","LN2","modulo","rem_u","rem_s","rem","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","depth","_visit","visitDecoratorNode","visitParameter","visitSuperExpression","visitFalseExpression","visitTrueExpression","visitThisExpression","visitNullExperssion","visitConstructorExpression","visitVoidStatement","visitComment","AbstractVisitor","writeString","writeNode","DefaultWriter","writer","entries","webpackEmptyContext","req","id","previousTimestamp","clocktime","performanceNow","performance","seconds","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"assemblyscript\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__11__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Compiler frontend for node.js\n *\n * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to\n * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources\n * directly through ts-node if distribution files are not present (indicated by a `-dev` version).\n *\n * Can also be packaged as a bundle suitable for in-browser use with the standard library injected\n * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details.\n *\n * @module cli/asc\n */\n\n// Use \".\" instead of \"/\" as cwd in browsers\nif (process.browser) process.cwd = function() { return \".\"; };\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst utf8 = require(\"@protobufjs/utf8\");\nconst colorsUtil = require(\"./util/colors\");\nconst optionsUtil = require(\"./util/options\");\nconst mkdirp = require(\"./util/mkdirp\");\nconst EOL = process.platform === \"win32\" ? \"\\r\\n\" : \"\\n\";\nconst SEP = process.platform === \"win32\" ? \"\\\\\" : \"/\";\nconst nearBindings = require(\"../bindings/dist/transformerBundle.js\");\nconst nearLibEntry = path.join(__dirname, \"..\", \"bindings\", \"assembly\", \"nearEntry.ts\");\n// global.Binaryen = require(\"../lib/binaryen\");\n\n// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional\n// useless code fragment on top of an actual error. suppress this:\nif (process.removeAllListeners) process.removeAllListeners(\"uncaughtException\");\n\n// Use distribution files if present, otherwise run the sources directly\nvar assemblyscript, isDev = false;\n(() => {\n try { // `asc` on the command line\n assemblyscript = require(\"../dist/assemblyscript.js\");\n } catch (e) {\n try { // `asc` on the command line without dist files\n require(\"ts-node\").register({ project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\") });\n require(\"../src/glue/js\");\n assemblyscript = require(\"../src\");\n isDev = true;\n } catch (e_ts) {\n try { // `require(\"dist/asc.js\")` in explicit browser tests\n assemblyscript = eval(\"require('./assemblyscript')\");\n } catch (e) {\n // combine both errors that lead us here\n e.stack = e_ts.stack + \"\\n---\\n\" + e.stack;\n throw e;\n }\n }\n }\n})();\n\n/** Whether this is a webpack bundle or not. */\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\n\n/** Whether asc runs the sources directly or not. */\nexports.isDev = isDev;\n\n/** AssemblyScript version. */\nexports.version = exports.isBundle ? BUNDLE_VERSION : require(\"../package.json\").version;\n\n/** Available CLI options. */\nexports.options = require(\"./asc.json\");\n\n/** Common root used in source maps. */\nexports.sourceMapRoot = \"assemblyscript:///\";\n\n/** Prefix used for library files. */\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\n\n/** Default Binaryen optimization level. */\nexports.defaultOptimizeLevel = 3;\n\n/** Default Binaryen shrink level. */\nexports.defaultShrinkLevel = 1;\n\n/** Bundled library files. */\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle\n const libDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\n const libFiles = require(\"glob\").sync(\"**/!(*.d).ts\", { cwd: libDir })\n const bundled = {\n \"nearEntry\": fs.readFileSync(nearLibEntry, \"utf8\")\n };\n libFiles.forEach(file => bundled[file.replace(/\\.ts$/, \"\")] = fs.readFileSync(path.join(libDir, file), \"utf8\" ));\n return bundled;\n})();\n\n/** Bundled definition files. */\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle\n const stdDir = path.join(__dirname, \"..\", \"std\");\n return {\n \"assembly\": fs.readFileSync(path.join(stdDir, \"assembly\", \"index.d.ts\"), \"utf8\"),\n \"portable\": fs.readFileSync(path.join(stdDir, \"portable\", \"index.d.ts\"), \"utf8\")\n };\n})();\n\n/** Convenience function that parses and compiles source strings directly. */\nexports.compileString = (sources, options) => {\n if (typeof sources === \"string\") sources = { \"input.ts\": sources };\n const output = Object.create({\n stdout: createMemoryStream(),\n stderr: createMemoryStream()\n });\n var argv = [\n \"--binaryFile\", \"binary\",\n \"--textFile\", \"text\",\n ];\n Object.keys(options || {}).forEach(key => {\n var val = options[key];\n if (Array.isArray(val)) val.forEach(val => argv.push(\"--\" + key, String(val)));\n else argv.push(\"--\" + key, String(val));\n });\n exports.main(argv.concat(Object.keys(sources)), {\n stdout: output.stdout,\n stderr: output.stderr,\n readFile: name => sources.hasOwnProperty(name) ? sources[name] : null,\n writeFile: (name, contents) => output[name] = contents,\n listFiles: () => []\n });\n return output;\n}\n\n/** Runs the command line utility using the specified arguments array. */\nexports.main = function main(argv, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (!options) {\n options = {};\n }\n\n const stdout = options.stdout || process.stdout;\n const stderr = options.stderr || process.stderr;\n const readFile = options.readFile || readFileNode;\n const writeFile = options.writeFile || writeFileNode;\n const listFiles = options.listFiles || listFilesNode;\n const stats = options.stats || createStats();\n\n // Output must be specified if not present in the environment\n if (!stdout) throw Error(\"'options.stdout' must be specified\");\n if (!stderr) throw Error(\"'options.stderr' must be specified\");\n\n const opts = optionsUtil.parse(argv, exports.options);\n const args = opts.options;\n argv = opts.arguments;\n if (args.noColors) {\n colorsUtil.stdout.supported =\n colorsUtil.stderr.supported = false;\n } else {\n colorsUtil.stdout = colorsUtil.from(stdout);\n colorsUtil.stderr = colorsUtil.from(stderr);\n }\n\n // Check for unknown arguments\n if (opts.unknown.length) {\n opts.unknown.forEach(arg => {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unknown option '\" + arg + \"'\" + EOL);\n });\n }\n\n // Check for trailing arguments\n if (opts.trailing.length) {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unsupported trailing arguments: \" + opts.trailing.join(\" \") + EOL);\n }\n\n // Use default callback if none is provided\n if (!callback) callback = function defaultCallback(err) {\n var code = 0;\n if (err) {\n stderr.write(colorsUtil.stderr.red(\"ERROR: \") + err.stack.replace(/^ERROR: /i, \"\") + EOL);\n code = 1;\n }\n return code;\n };\n\n // Just print the version if requested\n if (args.version) {\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + EOL);\n return callback(null);\n }\n // Print the help message if requested or no source files are provided\n if (args.help || !argv.length) {\n var out = args.help ? stdout : stderr;\n var color = args.help ? colorsUtil.stdout : colorsUtil.stderr;\n out.write([\n color.white(\"SYNTAX\"),\n \" \" + color.cyan(\"asc\") + \" [entryFile ...] [options]\",\n \"\",\n color.white(\"EXAMPLES\"),\n \" \" + color.cyan(\"asc\") + \" hello.ts\",\n \" \" + color.cyan(\"asc\") + \" hello.ts -b hello.wasm -t hello.wat\",\n \" \" + color.cyan(\"asc\") + \" hello1.ts hello2.ts -b -O > hello.wasm\",\n \"\",\n color.white(\"OPTIONS\"),\n ].concat(\n optionsUtil.help(exports.options, 24, EOL)\n ).join(EOL) + EOL);\n return callback(null);\n }\n\n // I/O must be specified if not present in the environment\n if (!fs.readFileSync) {\n if (readFile === readFileNode) throw Error(\"'options.readFile' must be specified\");\n if (writeFile === writeFileNode) throw Error(\"'options.writeFile' must be specified\");\n if (listFiles === listFilesNode) throw Error(\"'options.listFiles' must be specified\");\n }\n\n // Set up base directory\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : \".\";\n\n // Set up transforms\n const transforms = args.notNear ? [] : [nearBindings];\n //Add near's bindings by default\n if (args.transform) {\n args.transform.forEach(transform =>\n transforms.push(\n require(\n path.isAbsolute(transform = transform.trim())\n ? transform\n : path.join(process.cwd(), transform)\n )\n )\n );\n }\n function applyTransform(name, ...args) {\n transforms.forEach(transform => {\n if (typeof transform[name] === \"function\") transform[name](...args);\n });\n }\n\n // Begin parsing\n var parser = null;\n\n // Maps package names to parent directory\n var packages = new Map();\n var importPathMap = new Map();\n\n // Include library files\n Object.keys(exports.libraryFiles).forEach(libPath => {\n if (libPath.indexOf(\"/\") >= 0) return; // in sub-directory: imported on demand\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n exports.libraryFiles[libPath],\n exports.libraryPrefix + libPath + \".ts\",\n false,\n parser\n );\n });\n });\n const customLibDirs = [];\n if (args.lib) {\n let lib = args.lib;\n if (typeof lib === \"string\") lib = lib.split(\",\");\n Array.prototype.push.apply(customLibDirs, lib.map(lib => lib.trim()));\n for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom\n let libDir = customLibDirs[i];\n let libFiles;\n if (libDir.endsWith(\".ts\")) {\n libFiles = [ path.basename(libDir) ];\n libDir = path.dirname(libDir);\n } else {\n libFiles = listFiles(libDir, baseDir) || [];\n }\n for (let j = 0, l = libFiles.length; j < l; ++j) {\n let libPath = libFiles[j];\n let libText = readFile(libPath, libDir);\n if (libText === null) return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\n stats.parseCount++;\n exports.libraryFiles[libPath.replace(/\\.ts$/, \"\")] = libText;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n libText,\n exports.libraryPrefix + libPath,\n false,\n parser\n );\n });\n }\n }\n }\n args.path = args.path || [];\n // Find all valid node_module paths starting at baseDir\n function nodePaths(basePath, _path) {\n return basePath.split(SEP)\n .map((_, i, arr) => {\n let dir = arr.slice(0, i + 1).join(SEP) || SEP;\n let dirFrom = path.relative(baseDir, dir);\n return path.join(dirFrom, _path);\n })\n .filter(dir => listFiles(dir, baseDir))\n .reverse();\n }\n function getPaths(basePath) {\n let paths = args.path.map(p => nodePaths(basePath, p));\n return nodePaths(basePath, \"node_modules\").concat(...paths)\n }\n\n // Parses the backlog of imported files after including entry files\n function parseBacklog() {\n var sourcePath, sourceText, sysPath;\n // dependee is the path of the file that depends on sourcePath\n while ((sourcePath = parser.nextFile()) != null) {\n dependee = importPathMap.get(assemblyscript.getDependee(parser, sourcePath)) || baseDir;\n sourceText = null;\n sysPath = null;\n \n // Load library file if explicitly requested\n if (sourcePath.startsWith(exports.libraryPrefix)) {\n const plainName = sourcePath.substring(exports.libraryPrefix.length);\n const indexName = sourcePath.substring(exports.libraryPrefix.length) + \"/index\";\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n sourceText = readFile(plainName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(customLibDirs[i], plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(customLibDirs[i], indexName + \".ts\");\n break;\n }\n }\n }\n }\n\n // Otherwise try nextFile.ts, nextFile/index.ts, ~lib/nextFile.ts, ~lib/nextFile/index.ts\n } else {\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(plainName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n sysPath = path.join(baseDir, sourcePath);\n } else {\n sourceText = readFile(indexName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n } else if (!plainName.startsWith(\".\")) {\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n const dir = customLibDirs[i];\n sourceText = readFile(plainName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(dir, plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(dir, indexName + \".ts\");\n break;\n }\n }\n }\n }\n }\n }\n }\n /*\n In this case the library wasn't found so we check paths\n */\n if (sourceText == null) {\n if (args.traceResolution) {\n stderr.write(\"Looking for '\" + sourcePath + \"' imported by '\" + dependee + \"'\" + EOL);\n }\n paths = getPaths(path.join(baseDir, dependee));\n let _package = sourcePath.replace(/\\~lib\\/([^\\/]*).*/, \"$1\");\n for (let _path of paths) {\n let ascMain = (() => {\n if (packages.has(_package)) {\n return packages.get(_package);\n }\n let p = path.join(_path, _package, \"package.json\");\n let res = readFile(p, baseDir);\n if (res) {\n let package_json;\n try {\n package_json = JSON.parse(res);\n } catch (e) {\n return callback(Error(\"Parsing \" + p + \" failed\"));\n }\n let mainFile = package_json.ascMain;\n if (mainFile && (typeof mainFile === 'string')) {\n let newPackage = mainFile.replace(/(.*)\\/index\\.ts/, '$1');\n packages.set(_package, newPackage);\n return newPackage;\n }\n }\n return \"assembly\";\n })()\n let realPath = (_p) => {\n if (_p.startsWith(exports.libraryPrefix)){\n _p = _p.substring(exports.libraryPrefix.length);\n }\n let first = _p.substring(0, _p.indexOf(\"/\"));\n let second = _p.substring(_p.indexOf(\"/\") + 1);\n return path.join(_path, first, ascMain, second);\n }\n if (args.traceResolution) {\n stderr.write(\" in '\" + realPath(sourcePath) + \"'\");\n }\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(realPath(plainName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n } else {\n sourceText = readFile(realPath(indexName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n }\n }\n if (sourceText !== null) {\n if (args.traceResolution) {\n stderr.write(EOL + \" -> '\" + realPath(sourcePath) + \"'\" + EOL);\n }\n let newPath = path.join(_path, _package);\n sysPath = newPath;\n break;\n }\n if (args.traceResolution) {\n stderr.write(EOL);\n }\n }\n }\n if (sourceText == null) {\n return callback(Error(\"Import file '\" + sourcePath + \".ts' not found.\"));\n }\n importPathMap.set(sourcePath.replace(/\\.ts$/, \"\"), sysPath);\n stats.parseCount++;\n stats.parseTime += measure(() => {\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\n });\n }\n if (checkDiagnostics(parser, stderr)) {\n return callback(Error(\"Parse error\"));\n }\n }\n\n // Include runtime template before entry files so its setup runs first\n {\n let runtimeName = String(args.runtime);\n let runtimePath = \"rt/index-\" + runtimeName;\n let runtimeText = exports.libraryFiles[runtimePath];\n if (runtimeText == null) {\n runtimePath = runtimeName;\n runtimeText = readFile(runtimePath + \".ts\", baseDir);\n if (runtimeText == null) {\n return callback(Error(\"Runtime '\" + runtimeName + \"' not found.\"));\n }\n } else {\n runtimePath = \"~lib/\" + runtimePath;\n }\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser);\n });\n }\n\n // Include entry files\n for (let i = 0, k = argv.length; i < k; ++i) {\n const filename = argv[i];\n\n let sourcePath = String(filename).replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\n // Setting the path to relative path\n sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath) : sourcePath;\n\n // Try entryPath.ts, then entryPath/index.ts\n let sourceText = readFile(sourcePath + \".ts\", baseDir);\n if (sourceText === null) {\n sourceText = readFile(sourcePath + \"/index.ts\", baseDir);\n if (sourceText === null) {\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\n } else {\n sourcePath += \"/index.ts\";\n }\n } else {\n sourcePath += \".ts\";\n }\n\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\n });\n }\n\n // Parse entry files\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Call afterParse transform hook\n applyTransform(\"afterParse\", parser, writeFile, baseDir);\n\n // Parse additional files, if any\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Finish parsing\n const program = assemblyscript.finishParsing(parser);\n\n // Print files and exit if listFiles\n if (args.listFiles) {\n stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL);\n return callback(null);\n }\n\n // Set up optimization levels\n var optimizeLevel = 0;\n var shrinkLevel = 0;\n if (args.optimize) {\n optimizeLevel = exports.defaultOptimizeLevel;\n shrinkLevel = exports.defaultShrinkLevel;\n }\n if (typeof args.optimizeLevel === \"number\") {\n optimizeLevel = args.optimizeLevel;\n }\n if (typeof args.shrinkLevel === \"number\") {\n shrinkLevel = args.shrinkLevel;\n }\n optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3);\n shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2);\n\n // Begin compilation\n const compilerOptions = assemblyscript.createOptions();\n assemblyscript.setTarget(compilerOptions, 0);\n assemblyscript.setNoAssert(compilerOptions, args.noAssert);\n assemblyscript.setImportMemory(compilerOptions, args.importMemory);\n assemblyscript.setSharedMemory(compilerOptions, args.sharedMemory);\n assemblyscript.setImportTable(compilerOptions, args.importTable);\n assemblyscript.setExplicitStart(compilerOptions, args.explicitStart);\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\n assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel);\n assemblyscript.setNoUnsafe(compilerOptions, args.noUnsafe);\n\n // Initialize default aliases\n assemblyscript.setGlobalAlias(compilerOptions, \"Math\", \"NativeMath\");\n assemblyscript.setGlobalAlias(compilerOptions, \"Mathf\", \"NativeMathf\");\n assemblyscript.setGlobalAlias(compilerOptions, \"abort\", \"~lib/builtins/abort\");\n assemblyscript.setGlobalAlias(compilerOptions, \"trace\", \"~lib/builtins/trace\");\n\n // Add or override aliases if specified\n if (args.use) {\n let aliases = args.use;\n for (let i = 0, k = aliases.length; i < k; ++i) {\n let part = aliases[i];\n let p = part.indexOf(\"=\");\n if (p < 0) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n let alias = part.substring(0, p).trim();\n let name = part.substring(p + 1).trim();\n if (!alias.length) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n assemblyscript.setGlobalAlias(compilerOptions, alias, name);\n }\n }\n\n // Enable additional features if specified\n var features = args.enable;\n if (features != null) {\n if (typeof features === \"string\") features = features.split(\",\");\n for (let i = 0, k = features.length; i < k; ++i) {\n let name = features[i].trim();\n let flag = assemblyscript[\"FEATURE_\" + name.replace(/\\-/g, \"_\").toUpperCase()];\n if (!flag) return callback(Error(\"Feature '\" + name + \"' is unknown.\"));\n assemblyscript.enableFeature(compilerOptions, flag);\n }\n }\n\n var module;\n stats.compileCount++;\n try {\n stats.compileTime += measure(() => {\n module = assemblyscript.compileProgram(program, compilerOptions);\n });\n } catch (e) {\n return callback(e);\n }\n if (checkDiagnostics(parser, stderr)) {\n if (module) module.dispose();\n return callback(Error(\"Compile error\"));\n }\n\n // Validate the module if requested\n if (args.validate) {\n stats.validateCount++;\n stats.validateTime += measure(() => {\n if (!module.validate()) {\n module.dispose();\n return callback(Error(\"Validate error\"));\n }\n });\n }\n\n // Set Binaryen-specific options\n if (args.trapMode === \"clamp\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-clamp\" ]);\n });\n } else if (args.trapMode === \"js\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-js\" ]);\n });\n } else if (args.trapMode !== \"allow\") {\n module.dispose();\n return callback(Error(\"Unsupported trap mode\"));\n }\n\n // Implicitly run costly non-LLVM optimizations on -O3 or -Oz\n // see: https://github.com/WebAssembly/binaryen/pull/1596\n if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;\n\n module.setOptimizeLevel(optimizeLevel);\n module.setShrinkLevel(shrinkLevel);\n module.setDebugInfo(args.debug);\n\n var runPasses = [];\n if (args.runPasses) {\n if (typeof args.runPasses === \"string\") {\n args.runPasses = args.runPasses.split(\",\");\n }\n if (args.runPasses.length) {\n args.runPasses.forEach(pass => {\n if (runPasses.indexOf(pass) < 0)\n runPasses.push(pass);\n });\n }\n }\n\n // Optimize the module if requested\n if (optimizeLevel > 0 || shrinkLevel > 0) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.optimize();\n });\n }\n\n // Run additional passes if requested\n if (runPasses.length) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses(runPasses.map(pass => pass.trim()));\n });\n }\n\n // Prepare output\n if (!args.noEmit) {\n let hasStdout = false;\n let hasOutput = false;\n\n if (args.outFile != null) {\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null) {\n args.textFile = args.outFile;\n } else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null) {\n args.asmjsFile = args.outFile;\n } else if (args.binaryFile == null) {\n args.binaryFile = args.outFile;\n }\n }\n\n // Write binary\n if (args.binaryFile != null) {\n let sourceMapURL = args.sourceMap != null\n ? args.sourceMap.length\n ? args.sourceMap\n : path.basename(args.binaryFile) + \".map\"\n : null;\n\n let wasm;\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wasm = module.toBinary(sourceMapURL)\n });\n\n if (args.binaryFile.length) {\n writeFile(args.binaryFile, wasm.output, baseDir);\n } else {\n writeStdout(wasm.output);\n hasStdout = true;\n }\n hasOutput = true;\n\n // Post-process source map\n if (wasm.sourceMap != null) {\n if (args.binaryFile.length) {\n let sourceMap = JSON.parse(wasm.sourceMap);\n sourceMap.sourceRoot = exports.sourceMapRoot;\n sourceMap.sources.forEach((name, index) => {\n let text = null;\n if (name.startsWith(exports.libraryPrefix)) {\n let stdName = name.substring(exports.libraryPrefix.length).replace(/\\.ts$/, \"\");\n if (exports.libraryFiles.hasOwnProperty(stdName)) {\n text = exports.libraryFiles[stdName];\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n text = readFile(name.substring(exports.libraryPrefix.length), customLibDirs[i]);\n if (text !== null) break;\n }\n }\n } else {\n text = readFile(name, baseDir);\n }\n if (text === null) {\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\n }\n if (!sourceMap.sourceContents) sourceMap.sourceContents = [];\n sourceMap.sourceContents[index] = text;\n });\n writeFile(path.join(\n path.dirname(args.binaryFile),\n path.basename(sourceMapURL)\n ).replace(/^\\.\\//, \"\"), JSON.stringify(sourceMap), baseDir);\n } else {\n stderr.write(\"Skipped source map (stdout already occupied)\" + EOL);\n }\n }\n }\n\n // Write asm.js\n if (args.asmjsFile != null) {\n let asm;\n if (args.asmjsFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeFile(args.asmjsFile, asm, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeStdout(asm);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write WebIDL\n if (args.idlFile != null) {\n let idl;\n if (args.idlFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeFile(args.idlFile, idl, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeStdout(idl);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write TypeScript definition\n if (args.tsdFile != null) {\n let tsd;\n if (args.tsdFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeFile(args.tsdFile, tsd, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeStdout(tsd);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write text (must be last)\n if (args.textFile != null || !hasOutput) {\n let wat;\n if (args.textFile && args.textFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText();\n });\n writeFile(args.textFile, wat, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText()\n });\n writeStdout(wat);\n }\n }\n }\n\n module.dispose();\n if (args.measure) {\n printStats(stats, stderr);\n }\n if (args.printrtti) {\n printRTTI(program, stderr);\n }\n return callback(null);\n\n function readFileNode(filename, baseDir) {\n let name = path.resolve(baseDir, filename);\n try {\n let text;\n stats.readCount++;\n stats.readTime += measure(() => {\n text = fs.readFileSync(name, { encoding: \"utf8\" });\n });\n return text;\n } catch (e) {\n return null;\n }\n }\n\n function writeFileNode(filename, contents, baseDir) {\n try {\n stats.writeCount++;\n stats.writeTime += measure(() => {\n mkdirp(path.join(baseDir, path.dirname(filename)));\n if (typeof contents === \"string\") {\n fs.writeFileSync(path.join(baseDir, filename), contents, { encoding: \"utf8\" } );\n } else {\n fs.writeFileSync(path.join(baseDir, filename), contents);\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function listFilesNode(dirname, baseDir) {\n var files;\n try {\n stats.readTime += measure(() => {\n files = fs.readdirSync(path.join(baseDir, dirname)).filter(file => /^(?!.*\\.d\\.ts$).*\\.ts$/.test(file));\n });\n return files;\n } catch (e) {\n return null;\n }\n }\n\n function writeStdout(contents) {\n if (!writeStdout.used) {\n stats.writeCount++;\n writeStdout.used = true;\n }\n stats.writeTime += measure(() => {\n if (typeof contents === \"string\") {\n stdout.write(contents, { encoding: \"utf8\" });\n } else {\n stdout.write(contents);\n }\n });\n }\n}\n\n/** Checks diagnostics emitted so far for errors. */\nfunction checkDiagnostics(emitter, stderr) {\n var diagnostic;\n var hasErrors = false;\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\n if (stderr) {\n stderr.write(\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\n EOL + EOL\n );\n }\n if (assemblyscript.isError(diagnostic)) hasErrors = true;\n }\n return hasErrors;\n}\n\nexports.checkDiagnostics = checkDiagnostics;\n\n/** Creates an empty set of stats. */\nfunction createStats() {\n return {\n readTime: 0,\n readCount: 0,\n writeTime: 0,\n writeCount: 0,\n parseTime: 0,\n parseCount: 0,\n compileTime: 0,\n compileCount: 0,\n emitTime: 0,\n emitCount: 0,\n validateTime: 0,\n validateCount: 0,\n optimizeTime: 0,\n optimizeCount: 0\n };\n}\n\nexports.createStats = createStats;\n\nif (!process.hrtime) process.hrtime = require(\"browser-process-hrtime\");\n\n/** Measures the execution time of the specified function. */\nfunction measure(fn) {\n const start = process.hrtime();\n fn();\n const times = process.hrtime(start);\n return times[0] * 1e9 + times[1];\n}\n\nexports.measure = measure;\n\n/** Formats a high resolution time to a human readable string. */\nfunction formatTime(time) {\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\n}\n\nexports.formatTime = formatTime;\n\n/** Formats and prints out the contents of a set of stats. */\nfunction printStats(stats, output) {\n function format(time, count) {\n return formatTime(time);\n }\n (output || process.stdout).write([\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\n ].join(EOL) + EOL);\n}\n\nexports.printStats = printStats;\n\n/** Prints runtime type information. */\nfunction printRTTI(program, output) {\n if (!output) output = process.stderr;\n output.write(\"# Runtime type information (RTTI)\\n\");\n output.write(assemblyscript.buildRTTI(program));\n}\n\nexports.printRTTI = printRTTI;\n\nvar allocBuffer = typeof global !== \"undefined\" && global.Buffer\n ? global.Buffer.allocUnsafe || function(len) { return new global.Buffer(len); }\n : function(len) { return new Uint8Array(len) };\n\n/** Creates a memory stream that can be used in place of stdout/stderr. */\nfunction createMemoryStream(fn) {\n var stream = [];\n stream.write = function(chunk) {\n if (fn) fn(chunk);\n if (typeof chunk === \"string\") {\n let buffer = allocBuffer(utf8.length(chunk));\n utf8.write(chunk, buffer, 0);\n chunk = buffer;\n }\n this.push(chunk);\n };\n stream.reset = function() {\n stream.length = 0;\n };\n stream.toBuffer = function() {\n var offset = 0, i = 0, k = this.length;\n while (i < k) offset += this[i++].length;\n var buffer = allocBuffer(offset);\n offset = i = 0;\n while (i < k) {\n buffer.set(this[i], offset);\n offset += this[i].length;\n ++i;\n }\n return buffer;\n };\n stream.toString = function() {\n var buffer = this.toBuffer();\n return utf8.read(buffer, 0, buffer.length);\n };\n return stream;\n}\n\nexports.createMemoryStream = createMemoryStream;\n\n/** Compatible TypeScript compiler options for syntax highlighting etc. */\nexports.tscOptions = {\n alwaysStrict: true,\n noImplicitAny: true,\n noImplicitReturns: true,\n noImplicitThis: true,\n noEmitOnError: true,\n strictNullChecks: true,\n experimentalDecorators: true,\n target: \"esnext\",\n module: \"commonjs\",\n noLib: true,\n types: [],\n allowJs: false\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var proc = typeof process !== \"undefined\" && process || {};\nvar isCI = proc.env && \"CI\" in proc.env; // doesn't work when bundled because 'process' is a mock\n\nfunction from(stream, base) {\n var colors = base || {};\n colors.supported = (stream && !!stream.isTTY) || isCI;\n colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text;\n colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text;\n colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text;\n colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text;\n colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text;\n colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text;\n colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text;\n colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text;\n return colors;\n}\n\nexports.stdout = from(proc.stdout, exports);\nexports.stderr = from(proc.stderr);\nexports.from = from;\n\nexports.GRAY = \"\\u001b[90m\";\nexports.RED = \"\\u001b[91m\";\nexports.GREEN = \"\\u001b[92m\";\nexports.YELLOW = \"\\u001b[93m\";\nexports.BLUE = \"\\u001b[94m\";\nexports.MAGENTA = \"\\u001b[95m\";\nexports.CYAN = \"\\u001b[96m\";\nexports.WHITE = \"\\u001b[97m\";\nexports.RESET = \"\\u001b[0m\";\n","// type | meaning\n// -----|---------------\n// b | boolean\n// i | integer\n// f | float\n// s | string\n// I | integer array\n// F | float array\n// S | string array\n\n/** Parses the specified command line arguments according to the given configuration. */\nfunction parse(argv, config) {\n var options = {};\n var unknown = [];\n var arguments = [];\n var trailing = [];\n\n // make an alias map and initialize defaults\n var aliases = {};\n Object.keys(config).forEach(key => {\n if (key.startsWith(\" \")) return;\n var option = config[key];\n if (option.alias != null) {\n if (typeof option.alias === \"string\") aliases[option.alias] = key;\n else if (Array.isArray(option.alias)) option.alias.forEach(alias => aliases[alias] = key);\n }\n if (option.default != null) options[key] = option.default;\n });\n\n // iterate over argv\n for (var i = 0, k = (argv = argv.slice()).length; i < k; ++i) {\n let arg = argv[i];\n if (arg == \"--\") { ++i; break; }\n let match = /^(?:(\\-\\w)(?:=(.*))?|(\\-\\-\\w{2,})(?:=(.*))?)$/.exec(arg), option, key;\n if (match) {\n if (config[arg]) option = config[key = arg]; // exact\n else if (match[1] != null) { // alias\n option = config[key = aliases[match[1].substring(1)]];\n if (option && match[2] != null) argv[i--] = match[2];\n } else if (match[3] != null) { // full\n option = config[key = match[3].substring(2)];\n if (option && match[4] != null) argv[i--] = match[4];\n }\n } else {\n if (arg.charCodeAt(0) == 45) option = config[key = arg]; // exact\n else { arguments.push(arg); continue; } // argument\n }\n if (option) {\n if (option.type == null || option.type === \"b\") options[key] = true; // flag\n else {\n if (i + 1 < argv.length && argv[i + 1].charCodeAt(0) != 45) { // present\n switch (option.type) {\n case \"i\": options[key] = parseInt(argv[++i], 10); break;\n case \"I\": options[key] = (options[key] || []).concat(parseInt(argv[++i], 10)); break;\n case \"f\": options[key] = parseFloat(argv[++i]); break;\n case \"F\": options[key] = (options[key] || []).concat(parseFloat(argv[++i])); break;\n case \"s\": options[key] = String(argv[++i]); break;\n case \"S\": options[key] = (options[key] || []).concat(argv[++i].split(\",\")); break;\n default: unknown.push(arg); --i;\n }\n } else { // omitted\n switch (option.type) {\n case \"i\":\n case \"f\": options[key] = option.default || 0; break;\n case \"s\": options[key] = option.default || \"\"; break;\n case \"I\":\n case \"F\":\n case \"S\": options[key] = options.default || []; break;\n default: unknown.push(arg);\n }\n }\n }\n if (option.value) Object.keys(option.value).forEach(k => options[k] = option.value[k]);\n } else unknown.push(arg);\n }\n while (i < k) trailing.push(argv[i++]); // trailing\n\n return { options, unknown, arguments, trailing };\n}\n\nexports.parse = parse;\n\n/** Generates the help text for the specified configuration. */\nfunction help(config, options) {\n if (!options) options = {};\n var indent = options.indent || 2;\n var padding = options.padding || 24;\n var eol = options.eol || \"\\n\";\n var sb = [];\n Object.keys(config).forEach(key => {\n var option = config[key];\n if (option.description == null) return;\n var text = \"\";\n while (text.length < indent) text += \" \";\n text += \"--\" + key;\n if (option.alias) text += \", -\" + option.alias;\n while (text.length < padding) text += \" \";\n if (Array.isArray(option.description)) {\n sb.push(text + option.description[0] + option.description.slice(1).map(line => {\n for (let i = 0; i < padding; ++i) line = \" \" + line;\n return eol + line;\n }).join(\"\"));\n } else sb.push(text + option.description);\n });\n return sb.join(eol);\n}\n\nexports.help = help;\n","/*\nCopyright 2010 James Halliday (mail@substack.net)\n\nThis project is free software released under the MIT/X11 license:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nvar path = require(\"path\");\nvar fs = require(\"fs\");\nvar _0777 = parseInt(\"0777\", 8);\n\nmodule.exports = function mkdirp(p, opts, made) {\n if (!opts || typeof opts !== \"object\") {\n opts = { mode: opts };\n }\n var mode = opts.mode;\n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n p = path.resolve(p);\n try {\n fs.mkdirSync(p, mode);\n made = made || p;\n } catch (err0) {\n switch (err0.code) {\n case \"ENOENT\":\n made = mkdirp(path.dirname(p), opts, made);\n mkdirp(p, opts, made);\n break;\n default:\n var stat;\n try {\n stat = fs.statSync(p);\n } catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n return made;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.transformer=t():e.transformer=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=6)}([function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]=\"SOURCE\",e[e.NAMEDTYPE=1]=\"NAMEDTYPE\",e[e.FUNCTIONTYPE=2]=\"FUNCTIONTYPE\",e[e.TYPENAME=3]=\"TYPENAME\",e[e.TYPEPARAMETER=4]=\"TYPEPARAMETER\",e[e.PARAMETER=5]=\"PARAMETER\",e[e.IDENTIFIER=6]=\"IDENTIFIER\",e[e.ASSERTION=7]=\"ASSERTION\",e[e.BINARY=8]=\"BINARY\",e[e.CALL=9]=\"CALL\",e[e.CLASS=10]=\"CLASS\",e[e.COMMA=11]=\"COMMA\",e[e.ELEMENTACCESS=12]=\"ELEMENTACCESS\",e[e.FALSE=13]=\"FALSE\",e[e.FUNCTION=14]=\"FUNCTION\",e[e.INSTANCEOF=15]=\"INSTANCEOF\",e[e.LITERAL=16]=\"LITERAL\",e[e.NEW=17]=\"NEW\",e[e.NULL=18]=\"NULL\",e[e.PARENTHESIZED=19]=\"PARENTHESIZED\",e[e.PROPERTYACCESS=20]=\"PROPERTYACCESS\",e[e.TERNARY=21]=\"TERNARY\",e[e.SUPER=22]=\"SUPER\",e[e.THIS=23]=\"THIS\",e[e.TRUE=24]=\"TRUE\",e[e.CONSTRUCTOR=25]=\"CONSTRUCTOR\",e[e.UNARYPOSTFIX=26]=\"UNARYPOSTFIX\",e[e.UNARYPREFIX=27]=\"UNARYPREFIX\",e[e.BLOCK=28]=\"BLOCK\",e[e.BREAK=29]=\"BREAK\",e[e.CONTINUE=30]=\"CONTINUE\",e[e.DO=31]=\"DO\",e[e.EMPTY=32]=\"EMPTY\",e[e.EXPORT=33]=\"EXPORT\",e[e.EXPORTDEFAULT=34]=\"EXPORTDEFAULT\",e[e.EXPORTIMPORT=35]=\"EXPORTIMPORT\",e[e.EXPRESSION=36]=\"EXPRESSION\",e[e.FOR=37]=\"FOR\",e[e.IF=38]=\"IF\",e[e.IMPORT=39]=\"IMPORT\",e[e.RETURN=40]=\"RETURN\",e[e.SWITCH=41]=\"SWITCH\",e[e.THROW=42]=\"THROW\",e[e.TRY=43]=\"TRY\",e[e.VARIABLE=44]=\"VARIABLE\",e[e.VOID=45]=\"VOID\",e[e.WHILE=46]=\"WHILE\",e[e.CLASSDECLARATION=47]=\"CLASSDECLARATION\",e[e.ENUMDECLARATION=48]=\"ENUMDECLARATION\",e[e.ENUMVALUEDECLARATION=49]=\"ENUMVALUEDECLARATION\",e[e.FIELDDECLARATION=50]=\"FIELDDECLARATION\",e[e.FUNCTIONDECLARATION=51]=\"FUNCTIONDECLARATION\",e[e.IMPORTDECLARATION=52]=\"IMPORTDECLARATION\",e[e.INDEXSIGNATUREDECLARATION=53]=\"INDEXSIGNATUREDECLARATION\",e[e.INTERFACEDECLARATION=54]=\"INTERFACEDECLARATION\",e[e.METHODDECLARATION=55]=\"METHODDECLARATION\",e[e.NAMESPACEDECLARATION=56]=\"NAMESPACEDECLARATION\",e[e.TYPEDECLARATION=57]=\"TYPEDECLARATION\",e[e.VARIABLEDECLARATION=58]=\"VARIABLEDECLARATION\",e[e.DECORATOR=59]=\"DECORATOR\",e[e.EXPORTMEMBER=60]=\"EXPORTMEMBER\",e[e.SWITCHCASE=61]=\"SWITCHCASE\",e[e.COMMENT=62]=\"COMMENT\"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName(\"\",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text=\"\",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new j;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(\".\")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]=\"DEFAULT\",e[e.OPTIONAL=1]=\"OPTIONAL\",e[e.REST=2]=\"REST\"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if(\"builtin\"==t)return E.BUILTIN;break;case 101:if(\"external\"==t)return E.EXTERNAL;break;case 103:if(\"global\"==t)return E.GLOBAL;break;case 105:if(\"inline\"==t)return E.INLINE;break;case 108:if(\"lazy\"==t)return E.LAZY;break;case 111:if(\"operator\"==t)return E.OPERATOR;break;case 115:if(\"sealed\"==t)return E.SEALED;break;case 117:if(\"unmanaged\"==t)return E.UNMANAGED;if(\"unsafe\"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),\"operator\"==t)switch(i.charCodeAt(0)){case 98:if(\"binary\"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case\"prefix\":return E.OPERATOR_PREFIX;case\"postfix\":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]=\"CUSTOM\",e[e.GLOBAL=1]=\"GLOBAL\",e[e.OPERATOR=2]=\"OPERATOR\",e[e.OPERATOR_BINARY=3]=\"OPERATOR_BINARY\",e[e.OPERATOR_PREFIX=4]=\"OPERATOR_PREFIX\",e[e.OPERATOR_POSTFIX=5]=\"OPERATOR_POSTFIX\",e[e.UNMANAGED=6]=\"UNMANAGED\",e[e.SEALED=7]=\"SEALED\",e[e.INLINE=8]=\"INLINE\",e[e.EXTERNAL=9]=\"EXTERNAL\",e[e.BUILTIN=10]=\"BUILTIN\",e[e.LAZY=11]=\"LAZY\",e[e.UNSAFE=12]=\"UNSAFE\"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]=\"LINE\",e[e.TRIPLE=1]=\"TRIPLE\",e[e.BLOCK=2]=\"BLOCK\"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]=\"FLOAT\",e[e.INTEGER=1]=\"INTEGER\",e[e.STRING=2]=\"STRING\",e[e.REGEXP=3]=\"REGEXP\",e[e.ARRAY=4]=\"ARRAY\",e[e.OBJECT=5]=\"OBJECT\"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]=\"PREFIX\",e[e.AS=1]=\"AS\",e[e.NONNULL=2]=\"NONNULL\"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,\"typeArgumentsRange\",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"argumentsRange\",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text=\"constructor\",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text=\"null\",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text=\"super\",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text=\"this\",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text=\"true\",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text=\"false\",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=j;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=Q;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(Q);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(Q);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]=\"USER\",e[e.USER_ENTRY=1]=\"USER_ENTRY\",e[e.LIBRARY=2]=\"LIBRARY\",e[e.LIBRARY_ENTRY=3]=\"LIBRARY_ENTRY\"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,\"isLibrary\",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]=\"NONE\",e[e.ARROW_PARENTHESIZED=1]=\"ARROW_PARENTHESIZED\",e[e.ARROW_SINGLE=2]=\"ARROW_SINGLE\"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(\".ts\")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i\";case s.LESSTHAN_EQUALS:return\"<=\";case s.GREATERTHAN_EQUALS:return\">=\";case s.EQUALS_EQUALS:return\"==\";case s.EXCLAMATION_EQUALS:return\"!=\";case s.EQUALS_EQUALS_EQUALS:return\"===\";case s.EXCLAMATION_EQUALS_EQUALS:return\"!==\";case s.PLUS:return\"+\";case s.MINUS:return\"-\";case s.ASTERISK_ASTERISK:return\"**\";case s.ASTERISK:return\"*\";case s.SLASH:return\"/\";case s.PERCENT:return\"%\";case s.PLUS_PLUS:return\"++\";case s.MINUS_MINUS:return\"--\";case s.LESSTHAN_LESSTHAN:return\"<<\";case s.GREATERTHAN_GREATERTHAN:return\">>\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return\">>>\";case s.AMPERSAND:return\"&\";case s.BAR:return\"|\";case s.CARET:return\"^\";case s.EXCLAMATION:return\"!\";case s.TILDE:return\"~\";case s.AMPERSAND_AMPERSAND:return\"&&\";case s.BAR_BAR:return\"||\";case s.EQUALS:return\"=\";case s.PLUS_EQUALS:return\"+=\";case s.MINUS_EQUALS:return\"-=\";case s.ASTERISK_EQUALS:return\"*=\";case s.ASTERISK_ASTERISK_EQUALS:return\"**=\";case s.SLASH_EQUALS:return\"/=\";case s.PERCENT_EQUALS:return\"%=\";case s.LESSTHAN_LESSTHAN_EQUALS:return\"<<=\";case s.GREATERTHAN_GREATERTHAN_EQUALS:return\">>=\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return\">>>=\";case s.AMPERSAND_EQUALS:return\"&=\";case s.BAR_EQUALS:return\"|=\";case s.CARET_EQUALS:return\"^=\";default:return assert(!1),\"\"}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error(\"source mismatch\");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,\"atStart\",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"atEnd\",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"line\",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"column\",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),\"\";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return\"\\0\";case 98:return\"\\b\";case 116:return\"\\t\";case 110:return\"\\n\";case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),\"\";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),\"\"):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?\"\":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Operation_not_supported=100]=\"Operation_not_supported\",e[e.Operation_is_unsafe=101]=\"Operation_is_unsafe\",e[e.User_defined_0=102]=\"User_defined_0\",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]=\"Conversion_from_type_0_to_1_requires_an_explicit_cast\",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]=\"Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit\",e[e.Type_0_cannot_be_changed_to_type_1=202]=\"Type_0_cannot_be_changed_to_type_1\",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]=\"Type_0_cannot_be_reinterpreted_as_type_1\",e[e.Basic_type_0_cannot_be_nullable=204]=\"Basic_type_0_cannot_be_nullable\",e[e.Cannot_export_a_mutable_global=205]=\"Cannot_export_a_mutable_global\",e[e.Mutable_value_cannot_be_inlined=206]=\"Mutable_value_cannot_be_inlined\",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]=\"Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa\",e[e.Unmanaged_classes_cannot_implement_interfaces=208]=\"Unmanaged_classes_cannot_implement_interfaces\",e[e.Invalid_regular_expression_flags=209]=\"Invalid_regular_expression_flags\",e[e.Implementation_0_must_match_the_signature_1=210]=\"Implementation_0_must_match_the_signature_1\",e[e.Class_0_is_sealed_and_cannot_be_extended=211]=\"Class_0_is_sealed_and_cannot_be_extended\",e[e.Decorator_0_is_not_valid_here=212]=\"Decorator_0_is_not_valid_here\",e[e.Duplicate_decorator=213]=\"Duplicate_decorator\",e[e.An_allocator_must_be_present_to_use_0=214]=\"An_allocator_must_be_present_to_use_0\",e[e.Optional_parameter_must_have_an_initializer=215]=\"Optional_parameter_must_have_an_initializer\",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]=\"Constructor_of_class_0_must_not_require_any_arguments\",e[e.Function_0_cannot_be_inlined_into_itself=217]=\"Function_0_cannot_be_inlined_into_itself\",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]=\"Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set\",e[e.Optional_properties_are_not_supported=219]=\"Optional_properties_are_not_supported\",e[e.Expression_must_be_a_compile_time_constant=220]=\"Expression_must_be_a_compile_time_constant\",e[e.Module_cannot_have_multiple_start_functions=221]=\"Module_cannot_have_multiple_start_functions\",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]=\"_0_must_be_a_value_between_1_and_2_inclusive\",e[e._0_must_be_a_power_of_two=223]=\"_0_must_be_a_power_of_two\",e[e.Expression_is_unsafe=224]=\"Expression_is_unsafe\",e[e.Expression_is_never_null=225]=\"Expression_is_never_null\",e[e.Unterminated_string_literal=1002]=\"Unterminated_string_literal\",e[e.Identifier_expected=1003]=\"Identifier_expected\",e[e._0_expected=1005]=\"_0_expected\",e[e.A_file_cannot_have_a_reference_to_itself=1006]=\"A_file_cannot_have_a_reference_to_itself\",e[e.Trailing_comma_not_allowed=1009]=\"Trailing_comma_not_allowed\",e[e.Unexpected_token=1012]=\"Unexpected_token\",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]=\"A_rest_parameter_must_be_last_in_a_parameter_list\",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]=\"Parameter_cannot_have_question_mark_and_initializer\",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]=\"A_required_parameter_cannot_follow_an_optional_parameter\",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]=\"Statements_are_not_allowed_in_ambient_contexts\",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]=\"Initializers_are_not_allowed_in_ambient_contexts\",e[e._0_modifier_cannot_be_used_here=1042]=\"_0_modifier_cannot_be_used_here\",e[e.A_rest_parameter_cannot_be_optional=1047]=\"A_rest_parameter_cannot_be_optional\",e[e.A_rest_parameter_cannot_have_an_initializer=1048]=\"A_rest_parameter_cannot_have_an_initializer\",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]=\"A_set_accessor_must_have_exactly_one_parameter\",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]=\"A_set_accessor_parameter_cannot_have_an_initializer\",e[e.A_get_accessor_cannot_have_parameters=1054]=\"A_get_accessor_cannot_have_parameters\",e[e.Enum_member_must_have_initializer=1061]=\"Enum_member_must_have_initializer\",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]=\"Type_parameters_cannot_appear_on_a_constructor_declaration\",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]=\"Type_annotation_cannot_appear_on_a_constructor_declaration\",e[e.An_accessor_cannot_have_type_parameters=1094]=\"An_accessor_cannot_have_type_parameters\",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]=\"A_set_accessor_cannot_have_a_return_type_annotation\",e[e.Type_parameter_list_cannot_be_empty=1098]=\"Type_parameter_list_cannot_be_empty\",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]=\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement\",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]=\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement\",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]=\"A_return_statement_can_only_be_used_within_a_function_body\",e[e.Expression_expected=1109]=\"Expression_expected\",e[e.Type_expected=1110]=\"Type_expected\",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]=\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement\",e[e.Duplicate_label_0=1114]=\"Duplicate_label_0\",e[e.An_export_assignment_cannot_have_modifiers=1120]=\"An_export_assignment_cannot_have_modifiers\",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]=\"Octal_literals_are_not_allowed_in_strict_mode\",e[e.Digit_expected=1124]=\"Digit_expected\",e[e.Hexadecimal_digit_expected=1125]=\"Hexadecimal_digit_expected\",e[e.Unexpected_end_of_text=1126]=\"Unexpected_end_of_text\",e[e.Invalid_character=1127]=\"Invalid_character\",e[e._case_or_default_expected=1130]=\"_case_or_default_expected\",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]=\"_super_must_be_followed_by_an_argument_list_or_member_access\",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]=\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context\",e[e.Type_argument_expected=1140]=\"Type_argument_expected\",e[e.String_literal_expected=1141]=\"String_literal_expected\",e[e.Line_break_not_permitted_here=1142]=\"Line_break_not_permitted_here\",e[e.Declaration_expected=1146]=\"Declaration_expected\",e[e._const_declarations_must_be_initialized=1155]=\"_const_declarations_must_be_initialized\",e[e.Unterminated_regular_expression_literal=1161]=\"Unterminated_regular_expression_literal\",e[e.Interface_declaration_cannot_have_implements_clause=1176]=\"Interface_declaration_cannot_have_implements_clause\",e[e.Binary_digit_expected=1177]=\"Binary_digit_expected\",e[e.Octal_digit_expected=1178]=\"Octal_digit_expected\",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]=\"An_implementation_cannot_be_declared_in_ambient_contexts\",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]=\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive\",e[e.Unterminated_Unicode_escape_sequence=1199]=\"Unterminated_Unicode_escape_sequence\",e[e.Decorators_are_not_valid_here=1206]=\"Decorators_are_not_valid_here\",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]=\"_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration\",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]=\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract\",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]=\"A_definite_assignment_assertion_is_not_permitted_in_this_context\",e[e.A_class_may_only_extend_another_class=1311]=\"A_class_may_only_extend_another_class\",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]=\"A_parameter_property_cannot_be_declared_using_a_rest_parameter\",e[e.Duplicate_identifier_0=2300]=\"Duplicate_identifier_0\",e[e.Cannot_find_name_0=2304]=\"Cannot_find_name_0\",e[e.Module_0_has_no_exported_member_1=2305]=\"Module_0_has_no_exported_member_1\",e[e.Generic_type_0_requires_1_type_argument_s=2314]=\"Generic_type_0_requires_1_type_argument_s\",e[e.Type_0_is_not_generic=2315]=\"Type_0_is_not_generic\",e[e.Type_0_is_not_assignable_to_type_1=2322]=\"Type_0_is_not_assignable_to_type_1\",e[e.Index_signature_is_missing_in_type_0=2329]=\"Index_signature_is_missing_in_type_0\",e[e._this_cannot_be_referenced_in_current_location=2332]=\"_this_cannot_be_referenced_in_current_location\",e[e._super_can_only_be_referenced_in_a_derived_class=2335]=\"_super_can_only_be_referenced_in_a_derived_class\",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]=\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors\",e[e.Property_0_does_not_exist_on_type_1=2339]=\"Property_0_does_not_exist_on_type_1\",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]=\"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures\",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]=\"Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature\",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]=\"A_function_whose_declared_type_is_not_void_must_return_a_value\",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]=\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access\",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]=\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access\",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]=\"Operator_0_cannot_be_applied_to_types_1_and_2\",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]=\"A_super_call_must_be_the_first_statement_in_the_constructor\",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]=\"Constructors_for_derived_classes_must_contain_a_super_call\",e[e._get_and_set_accessor_must_have_the_same_type=2380]=\"_get_and_set_accessor_must_have_the_same_type\",e[e.Constructor_implementation_is_missing=2390]=\"Constructor_implementation_is_missing\",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]=\"Function_implementation_is_missing_or_not_immediately_following_the_declaration\",e[e.Multiple_constructor_implementations_are_not_allowed=2392]=\"Multiple_constructor_implementations_are_not_allowed\",e[e.Duplicate_function_implementation=2393]=\"Duplicate_function_implementation\",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]=\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local\",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]=\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged\",e[e.Type_0_has_no_property_1=2460]=\"Type_0_has_no_property_1\",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]=\"The_0_operator_cannot_be_applied_to_type_1\",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]=\"In_const_enum_declarations_member_initializer_must_be_constant_expression\",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]=\"Export_declaration_conflicts_with_exported_declaration_of_0\",e[e.Object_is_possibly_null=2531]=\"Object_is_possibly_null\",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]=\"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property\",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]=\"The_target_of_an_assignment_must_be_a_variable_or_a_property_access\",e[e.Index_signature_in_type_0_only_permits_reading=2542]=\"Index_signature_in_type_0_only_permits_reading\",e[e.Expected_0_arguments_but_got_1=2554]=\"Expected_0_arguments_but_got_1\",e[e.Expected_at_least_0_arguments_but_got_1=2555]=\"Expected_at_least_0_arguments_but_got_1\",e[e.Expected_0_type_arguments_but_got_1=2558]=\"Expected_0_type_arguments_but_got_1\",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]=\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums\",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]=\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration\",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]=\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration\",e[e.Namespace_0_has_no_exported_member_1=2694]=\"Namespace_0_has_no_exported_member_1\",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]=\"Required_type_parameters_may_not_follow_optional_type_parameters\",e[e.Duplicate_property_0=2718]=\"Duplicate_property_0\",e[e.Type_0_has_no_call_signatures=2757]=\"Type_0_has_no_call_signatures\",e[e.File_0_not_found=6054]=\"File_0_not_found\",e[e.Numeric_separators_are_not_allowed_here=6188]=\"Numeric_separators_are_not_allowed_here\",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]=\"Multiple_consecutive_numeric_separators_are_not_permitted\",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]=\"_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class\",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]=\"_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class\"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return\"Operation not supported.\";case 101:return\"Operation is unsafe.\";case 102:return\"User-defined: {0}\";case 200:return\"Conversion from type '{0}' to '{1}' requires an explicit cast.\";case 201:return\"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";case 202:return\"Type '{0}' cannot be changed to type '{1}'.\";case 203:return\"Type '{0}' cannot be reinterpreted as type '{1}'.\";case 204:return\"Basic type '{0}' cannot be nullable.\";case 205:return\"Cannot export a mutable global.\";case 206:return\"Mutable value cannot be inlined.\";case 207:return\"Unmanaged classes cannot extend managed classes and vice-versa.\";case 208:return\"Unmanaged classes cannot implement interfaces.\";case 209:return\"Invalid regular expression flags.\";case 210:return\"Implementation '{0}' must match the signature '{1}'.\";case 211:return\"Class '{0}' is sealed and cannot be extended.\";case 212:return\"Decorator '{0}' is not valid here.\";case 213:return\"Duplicate decorator.\";case 214:return\"An allocator must be present to use '{0}'.\";case 215:return\"Optional parameter must have an initializer.\";case 216:return\"Constructor of class '{0}' must not require any arguments.\";case 217:return\"Function '{0}' cannot be inlined into itself.\";case 218:return\"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";case 219:return\"Optional properties are not supported.\";case 220:return\"Expression must be a compile-time constant.\";case 221:return\"Module cannot have multiple start functions.\";case 222:return\"'{0}' must be a value between '{1}' and '{2}' inclusive.\";case 223:return\"'{0}' must be a power of two.\";case 224:return\"Expression is unsafe.\";case 225:return\"Expression is never 'null'.\";case 1002:return\"Unterminated string literal.\";case 1003:return\"Identifier expected.\";case 1005:return\"'{0}' expected.\";case 1006:return\"A file cannot have a reference to itself.\";case 1009:return\"Trailing comma not allowed.\";case 1012:return\"Unexpected token.\";case 1014:return\"A rest parameter must be last in a parameter list.\";case 1015:return\"Parameter cannot have question mark and initializer.\";case 1016:return\"A required parameter cannot follow an optional parameter.\";case 1036:return\"Statements are not allowed in ambient contexts.\";case 1039:return\"Initializers are not allowed in ambient contexts.\";case 1042:return\"'{0}' modifier cannot be used here.\";case 1047:return\"A rest parameter cannot be optional.\";case 1048:return\"A rest parameter cannot have an initializer.\";case 1049:return\"A 'set' accessor must have exactly one parameter.\";case 1052:return\"A 'set' accessor parameter cannot have an initializer.\";case 1054:return\"A 'get' accessor cannot have parameters.\";case 1061:return\"Enum member must have initializer.\";case 1092:return\"Type parameters cannot appear on a constructor declaration.\";case 1093:return\"Type annotation cannot appear on a constructor declaration.\";case 1094:return\"An accessor cannot have type parameters.\";case 1095:return\"A 'set' accessor cannot have a return type annotation.\";case 1098:return\"Type parameter list cannot be empty.\";case 1104:return\"A 'continue' statement can only be used within an enclosing iteration statement.\";case 1105:return\"A 'break' statement can only be used within an enclosing iteration or switch statement.\";case 1108:return\"A 'return' statement can only be used within a function body.\";case 1109:return\"Expression expected.\";case 1110:return\"Type expected.\";case 1113:return\"A 'default' clause cannot appear more than once in a 'switch' statement.\";case 1114:return\"Duplicate label '{0}'.\";case 1120:return\"An export assignment cannot have modifiers.\";case 1121:return\"Octal literals are not allowed in strict mode.\";case 1124:return\"Digit expected.\";case 1125:return\"Hexadecimal digit expected.\";case 1126:return\"Unexpected end of text.\";case 1127:return\"Invalid character.\";case 1130:return\"'case' or 'default' expected.\";case 1034:return\"'super' must be followed by an argument list or member access.\";case 1038:return\"A 'declare' modifier cannot be used in an already ambient context.\";case 1140:return\"Type argument expected.\";case 1141:return\"String literal expected.\";case 1142:return\"Line break not permitted here.\";case 1146:return\"Declaration expected.\";case 1155:return\"'const' declarations must be initialized.\";case 1161:return\"Unterminated regular expression literal.\";case 1176:return\"Interface declaration cannot have 'implements' clause.\";case 1177:return\"Binary digit expected.\";case 1178:return\"Octal digit expected.\";case 1183:return\"An implementation cannot be declared in ambient contexts.\";case 1198:return\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";case 1199:return\"Unterminated Unicode escape sequence.\";case 1206:return\"Decorators are not valid here.\";case 1242:return\"'abstract' modifier can only appear on a class, method, or property declaration.\";case 1245:return\"Method '{0}' cannot have an implementation because it is marked abstract.\";case 1255:return\"A definite assignment assertion '!' is not permitted in this context.\";case 1311:return\"A class may only extend another class.\";case 1317:return\"A parameter property cannot be declared using a rest parameter.\";case 2300:return\"Duplicate identifier '{0}'.\";case 2304:return\"Cannot find name '{0}'.\";case 2305:return\"Module '{0}' has no exported member '{1}'.\";case 2314:return\"Generic type '{0}' requires {1} type argument(s).\";case 2315:return\"Type '{0}' is not generic.\";case 2322:return\"Type '{0}' is not assignable to type '{1}'.\";case 2329:return\"Index signature is missing in type '{0}'.\";case 2332:return\"'this' cannot be referenced in current location.\";case 2335:return\"'super' can only be referenced in a derived class.\";case 2337:return\"Super calls are not permitted outside constructors or in nested functions inside constructors.\";case 2339:return\"Property '{0}' does not exist on type '{1}'.\";case 2349:return\"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";case 2351:return\"Cannot use 'new' with an expression whose type lacks a construct signature.\";case 2355:return\"A function whose declared type is not 'void' must return a value.\";case 2357:return\"The operand of an increment or decrement operator must be a variable or a property access.\";case 2364:return\"The left-hand side of an assignment expression must be a variable or a property access.\";case 2365:return\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";case 2376:return\"A 'super' call must be the first statement in the constructor.\";case 2377:return\"Constructors for derived classes must contain a 'super' call.\";case 2380:return\"'get' and 'set' accessor must have the same type.\";case 2390:return\"Constructor implementation is missing.\";case 2391:return\"Function implementation is missing or not immediately following the declaration.\";case 2392:return\"Multiple constructor implementations are not allowed.\";case 2393:return\"Duplicate function implementation.\";case 2395:return\"Individual declarations in merged declaration '{0}' must be all exported or all local.\";case 2434:return\"A namespace declaration cannot be located prior to a class or function with which it is merged.\";case 2460:return\"Type '{0}' has no property '{1}'.\";case 2469:return\"The '{0}' operator cannot be applied to type '{1}'.\";case 2474:return\"In 'const' enum declarations member initializer must be constant expression.\";case 2484:return\"Export declaration conflicts with exported declaration of '{0}'.\";case 2531:return\"Object is possibly 'null'.\";case 2540:return\"Cannot assign to '{0}' because it is a constant or a read-only property.\";case 2541:return\"The target of an assignment must be a variable or a property access.\";case 2542:return\"Index signature in type '{0}' only permits reading.\";case 2554:return\"Expected {0} arguments, but got {1}.\";case 2555:return\"Expected at least {0} arguments, but got {1}.\";case 2558:return\"Expected {0} type arguments, but got {1}.\";case 2651:return\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";case 2673:return\"Constructor of class '{0}' is private and only accessible within the class declaration.\";case 2674:return\"Constructor of class '{0}' is protected and only accessible within the class declaration.\";case 2694:return\"Namespace '{0}' has no exported member '{1}'.\";case 2706:return\"Required type parameters may not follow optional type parameters.\";case 2718:return\"Duplicate property '{0}'.\";case 2757:return\"Type '{0}' has no call signatures.\";case 6054:return\"File '{0}' not found.\";case 6188:return\"Numeric separators are not allowed here.\";case 6189:return\"Multiple consecutive numeric separators are not permitted.\";case 17009:return\"'super' must be called before accessing 'this' in the constructor of a derived class.\";case 17011:return\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";default:return\"\"}}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes(\"@nearfile\")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:\"Integer\",u32:\"Integer\",i64:\"String\",u64:\"String\",string:\"String\",bool:\"Boolean\",Uint8Array:\"String\"},t.nonNullableTypes=[\"i32\",\"u32\",\"i64\",\"u64\",\"bool\",\"boolean\"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return\"void\"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split(\"|\").filter(function(e){return\"null\"!==e.trim()}).join(\"|\"),s=p(n).includes(\"null\"),a=e.name.symbol;this.sb.push(\"\\n//@ts-ignore\\nfunction __wrapper_\"+a+\"(): void {\"),i.length>0&&this.sb.push(\" // Reading input bytes.\\n input(0);\\n let json_len = register_len(0);\\n if (json_len == U32.MAX_VALUE) {\\n panic();\\n }\\n let json = new Uint8Array(json_len as u32);\\n read_register(0, json.buffer);\\n const obj: Obj = JSON.parse(json);\"),\"void\"!==p(n)?this.sb.push(\" let result: \"+p(n)+\" = \"+a+\"(\"):this.sb.push(\" \"+a+\"(\"),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(\", \")),this.sb[this.sb.length-1]+=\");\",\"void\"!==p(n)&&this.sb.push(\"\\n let encoder = new JSONEncoder();\\n if ((isString<\"+r+\">() || isNullable<\"+r+\">()) && result == null) {\\n encoder.setNull(null);\\n } else {\\n encode<\"+r+\">(encoder, result\"+(s?\"!\":\"\")+\", null);\\n }\\n let val: Uint8Array = encoder.serialize();\\n value_return(val.byteLength, val.buffer);\"),this.sb.push(\"}\\n\\nexport { __wrapper_\"+a+\" as \"+a+\" }\\n\")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+=\"<\"+e.typeParameters.map(p).join(\", \")+\">\"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf(\"}\")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error(\"All Fields must have explict type declaration.\");var r=t.typeName(n);i+=\"\\n static decode(json: Uint8Array): \"+r+\" {\\n let value = instantiate<\"+r+\">(); // Allocate without constructor\\n return value.decode(json);\\n }\\n\\n decode(buf: V): \"+r+' {\\n let json: Obj;\\n if (buf instanceof Uint8Array) {\\n json = JSON.parse(buf);\\n }else {\\n assert(buf instanceof Obj, \"argument must be Uint8Array or Json Object\");\\n json = buf;\\n }\\n return this._decode(json);\\n }\\n\\n private _decode(obj: Obj): '+r+\" {\\n \"+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,\"this.\"+t+' = obj.has(\"'+t+'\") ? ')+\": this.\"+t+\";\"})}(n).join(\"\\n \")+'\\n return this;\\n }\\n\\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\\n encoder.pushObject(name);\\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return\"encode<\"+t+\">(encoder, this.\"+i+', \"'+i+'\");'})}(n).join(\"\\n \")+\"\\n encoder.popObject();\\n return encoder\\n }\\n\\n serialize(): Uint8Array {\\n return this.encode().serialize();\\n }\\n\\n toJSON(): string {\\n return this.encode().toString();\\n }\\n}\"}return i});return this.sb.concat(i).join(\"\\n\")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=\"\"),t+\"decode<\"+p(e.type)+', Obj>(obj, \"'+p(e.name)+'\")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf(\"\\n\")).includes(\"out\");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t(\"out/\"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?\"\":\"./\")+n.normalizedPath,h(n))})}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NONE=0]=\"NONE\",e[e.SIGN_EXTENSION=1]=\"SIGN_EXTENSION\",e[e.MUTABLE_GLOBAL=2]=\"MUTABLE_GLOBAL\",e[e.BULK_MEMORY=4]=\"BULK_MEMORY\",e[e.SIMD=8]=\"SIMD\",e[e.THREADS=16]=\"THREADS\"}(t.Feature||(t.Feature={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.WASM32=0]=\"WASM32\",e[e.WASM64=1]=\"WASM64\",e[e.JS=2]=\"JS\"}(t.Target||(t.Target={}))},function(e,t,i){\"use strict\";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]=\"NONE\",e[e.ARRAYBUFFERVIEW=1]=\"ARRAYBUFFERVIEW\",e[e.ARRAY=2]=\"ARRAY\",e[e.SET=4]=\"SET\",e[e.MAP=8]=\"MAP\",e[e.ACYCLIC=16]=\"ACYCLIC\",e[e.VALUE_ALIGN_0=32]=\"VALUE_ALIGN_0\",e[e.VALUE_ALIGN_1=64]=\"VALUE_ALIGN_1\",e[e.VALUE_ALIGN_2=128]=\"VALUE_ALIGN_2\",e[e.VALUE_ALIGN_3=256]=\"VALUE_ALIGN_3\",e[e.VALUE_ALIGN_4=512]=\"VALUE_ALIGN_4\",e[e.VALUE_SIGNED=1024]=\"VALUE_SIGNED\",e[e.VALUE_FLOAT=2048]=\"VALUE_FLOAT\",e[e.VALUE_NULLABLE=4096]=\"VALUE_NULLABLE\",e[e.VALUE_MANAGED=8192]=\"VALUE_MANAGED\",e[e.KEY_ALIGN_0=16384]=\"KEY_ALIGN_0\",e[e.KEY_ALIGN_1=32768]=\"KEY_ALIGN_1\",e[e.KEY_ALIGN_2=65536]=\"KEY_ALIGN_2\",e[e.KEY_ALIGN_3=131072]=\"KEY_ALIGN_3\",e[e.KEY_ALIGN_4=262144]=\"KEY_ALIGN_4\",e[e.KEY_SIGNED=524288]=\"KEY_SIGNED\",e[e.KEY_FLOAT=1048576]=\"KEY_FLOAT\",e[e.KEY_NULLABLE=2097152]=\"KEY_NULLABLE\",e[e.KEY_MANAGED=4194304]=\"KEY_MANAGED\"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return\"INFO\";case n.WARNING:return\"WARNING\";case n.ERROR:return\"ERROR\";default:return assert(!1),\"\"}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),\"\"}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]=\"INFO\",e[e.WARNING=1]=\"WARNING\",e[e.ERROR=2]=\"ERROR\"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE=\"\u001b[96m\",t.COLOR_YELLOW=\"\u001b[93m\",t.COLOR_RED=\"\u001b[91m\",t.COLOR_RESET=\"\u001b[0m\",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace(\"{0}\",n)),null!=s&&(o=o.replace(\"{1}\",s)),null!=a&&(o=o.replace(\"{2}\",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+\" \"+this.code.toString(10)+': \"'+this.message+'\" in '+this.range.source.normalizedPath+\":\"+this.range.line.toString(10)+\":\"+this.range.column.toString(10):o(this.category)+\" \"+this.code.toString(10)+\": \"+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NULL=0]=\"NULL\",e[e.LINEFEED=10]=\"LINEFEED\",e[e.CARRIAGERETURN=13]=\"CARRIAGERETURN\",e[e.LINESEPARATOR=8232]=\"LINESEPARATOR\",e[e.PARAGRAPHSEPARATOR=8233]=\"PARAGRAPHSEPARATOR\",e[e.NEXTLINE=133]=\"NEXTLINE\",e[e.SPACE=32]=\"SPACE\",e[e.NONBREAKINGSPACE=160]=\"NONBREAKINGSPACE\",e[e.ENQUAD=8192]=\"ENQUAD\",e[e.EMQUAD=8193]=\"EMQUAD\",e[e.ENSPACE=8194]=\"ENSPACE\",e[e.EMSPACE=8195]=\"EMSPACE\",e[e.THREEPEREMSPACE=8196]=\"THREEPEREMSPACE\",e[e.FOURPEREMSPACE=8197]=\"FOURPEREMSPACE\",e[e.SIXPEREMSPACE=8198]=\"SIXPEREMSPACE\",e[e.FIGURESPACE=8199]=\"FIGURESPACE\",e[e.PUNCTUATIONSPACE=8200]=\"PUNCTUATIONSPACE\",e[e.THINSPACE=8201]=\"THINSPACE\",e[e.HAIRSPACE=8202]=\"HAIRSPACE\",e[e.ZEROWIDTHSPACE=8203]=\"ZEROWIDTHSPACE\",e[e.NARROWNOBREAKSPACE=8239]=\"NARROWNOBREAKSPACE\",e[e.IDEOGRAPHICSPACE=12288]=\"IDEOGRAPHICSPACE\",e[e.MATHEMATICALSPACE=8287]=\"MATHEMATICALSPACE\",e[e.OGHAM=5760]=\"OGHAM\",e[e._=95]=\"_\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.AMPERSAND=38]=\"AMPERSAND\",e[e.ASTERISK=42]=\"ASTERISK\",e[e.AT=64]=\"AT\",e[e.BACKSLASH=92]=\"BACKSLASH\",e[e.BACKTICK=96]=\"BACKTICK\",e[e.BAR=124]=\"BAR\",e[e.CARET=94]=\"CARET\",e[e.CLOSEBRACE=125]=\"CLOSEBRACE\",e[e.CLOSEBRACKET=93]=\"CLOSEBRACKET\",e[e.CLOSEPAREN=41]=\"CLOSEPAREN\",e[e.COLON=58]=\"COLON\",e[e.COMMA=44]=\"COMMA\",e[e.DOLLAR=36]=\"DOLLAR\",e[e.DOT=46]=\"DOT\",e[e.DOUBLEQUOTE=34]=\"DOUBLEQUOTE\",e[e.EQUALS=61]=\"EQUALS\",e[e.EXCLAMATION=33]=\"EXCLAMATION\",e[e.GREATERTHAN=62]=\"GREATERTHAN\",e[e.HASH=35]=\"HASH\",e[e.LESSTHAN=60]=\"LESSTHAN\",e[e.MINUS=45]=\"MINUS\",e[e.OPENBRACE=123]=\"OPENBRACE\",e[e.OPENBRACKET=91]=\"OPENBRACKET\",e[e.OPENPAREN=40]=\"OPENPAREN\",e[e.PERCENT=37]=\"PERCENT\",e[e.PLUS=43]=\"PLUS\",e[e.QUESTION=63]=\"QUESTION\",e[e.SEMICOLON=59]=\"SEMICOLON\",e[e.SINGLEQUOTE=39]=\"SINGLEQUOTE\",e[e.SLASH=47]=\"SLASH\",e[e.TILDE=126]=\"TILDE\",e[e.BACKSPACE=8]=\"BACKSPACE\",e[e.FORMFEED=12]=\"FORMFEED\",e[e.BYTEORDERMARK=65279]=\"BYTEORDERMARK\",e[e.TAB=9]=\"TAB\",e[e.VERTICALTAB=11]=\"VERTICALTAB\"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:\".\"}function a(e){var t=e.length;if(t<=1){if(0==t)return\".\";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return\".\"}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith(\"std/\")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=\" \",r=\" \",s=\" \";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){\"use strict\";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i\")}e.isNullable&&n.push(\" | null\")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?\"((\":\"(\");var n=e.explicitThisType;n&&(i.push(\"this: \"),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(\", \"),this.serializeParameter(r[0]);for(var a=1;a \"),this.visitTypeNode(o)):i.push(\") => void\"),t&&i.push(\") | null\")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(\" extends \"),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push(\"=\"),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push(\"[\");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r\"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(\" as \"),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push(\"!\");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(\" \"),t.push(a.operatorTokenToString(e.operator)),t.push(\" \"),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push(\"<\"),this.visitTypeNode(i[0]);for(var r=1;r(\")}}else t.push(\"(\");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push(\"\\\\0\"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\b\");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\t\");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\n\");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\v\");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\f\");break;case 13:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\r\"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\\\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push(\"\\\\'\"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\\\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push(\"/\"),t.push(e.pattern),t.push(\"/\"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push(\"new \"),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push(\"(\"),this.visitNode(e.expression),t.push(\")\")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push(\".\"),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(\" ? \"),this.visitNode(e.ifThen),t.push(\" : \"),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push(\"\\n\"):t.push(\";\\n\")}else t.push(\";\\n\")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push(\"{\\n\");for(var r=++this.indentLevel,a=0;a\")}var _=e.extendsType;_&&(u.push(\" extends \"),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(\" implements \"),this.visitTypeNode(p[0]);for(a=1;a\")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push(\"(\");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push(\"this: \"),this.visitTypeNode(_)),c){_&&t.push(\", \"),this.serializeParameter(u[0]);for(o=1;o \"),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(\" => \"),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(\")\"):(t.push(\"): \"),this.visitTypeNode(h)),p&&(t.push(\" \"),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push(\"if (\"),this.visitNode(e.condition),t.push(\") \");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(\";\\n\");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(\" else \"):t.push(\"else \"),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(\" as \"),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push(\"import \");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push(\"{\\n\");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o\")}var u=e.extendsType;u&&(a.push(\" extends \"),this.visitTypeNode(u)),a.push(\" {\\n\");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n\")}}r.push(\" = \"),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push(\"!\"),t&&(i.push(\": \"),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(\" = \"),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name=\"UnreachableError\",r.prototype.message=\"unreachable\",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name=\"AssertionError\",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,\"replaceAll\",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return\"number\"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return\"object\"==typeof e||\"string\"==typeof e},t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"string\"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,\"__isLong__\",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error(\"empty string\");if(\"NaN\"===e||\"Infinity\"===e||\"+Infinity\"===e||\"-Infinity\"===e)return A;if(\"number\"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error(\"interior hyphen\");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c=\"0\"+c;a=\"\"+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error(\"division by zero\");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&\"function\"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.preamble='import { base64 } from \"near-runtime-ts\";\\nimport { JSONEncoder } from \"assemblyscript-json\";\\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\\n'}])});","if(typeof __WEBPACK_EXTERNAL_MODULE__11__ === 'undefined') {var e = new Error(\"Cannot find module 'assemblyscript'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__11__;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 13;","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/tests/near-bindgen/out/assembly/hello/main.ts b/tests/near-bindgen/out/assembly/hello/main.ts index 6c5959d12f..d727258e7b 100644 --- a/tests/near-bindgen/out/assembly/hello/main.ts +++ b/tests/near-bindgen/out/assembly/hello/main.ts @@ -14,7 +14,7 @@ function __wrapper_hello(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = hello(decode(obj, "name")); + let result: string = hello(decode(obj, "name")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -40,7 +40,7 @@ function __wrapper_setKeyValue(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - setKeyValue(decode(obj, "key"), decode(obj, "value")); + setKeyValue(decode(obj, "key"), decode(obj, "value")); } export { __wrapper_setKeyValue as setKeyValue } @@ -57,7 +57,7 @@ function __wrapper_getValueByKey(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = getValueByKey(decode(obj, "key")); + let result: string = getValueByKey(decode(obj, "key")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -83,7 +83,7 @@ function __wrapper_setValue(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = setValue(decode(obj, "value")); + let result: string = setValue(decode(obj, "value")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -160,7 +160,7 @@ function __wrapper_benchmark_storage(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = benchmark_storage(decode(obj, "n")); + let result: string = benchmark_storage(decode(obj, "n")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -186,7 +186,7 @@ function __wrapper_limited_storage(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = limited_storage(decode(obj, "max_storage")); + let result: string = limited_storage(decode(obj, "max_storage")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -212,7 +212,7 @@ function __wrapper_benchmark_sum_n(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = benchmark_sum_n(decode(obj, "n")); + let result: string = benchmark_sum_n(decode(obj, "n")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -255,7 +255,7 @@ function __wrapper_testSetRemove(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - testSetRemove(decode(obj, "value")); + testSetRemove(decode(obj, "value")); } export { __wrapper_testSetRemove as testSetRemove } @@ -272,7 +272,7 @@ function __wrapper_insertStrings(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - insertStrings(decode(obj, "from"), decode(obj, "to")); + insertStrings(decode(obj, "from"), decode(obj, "to")); } export { __wrapper_insertStrings as insertStrings } @@ -289,7 +289,7 @@ function __wrapper_deleteStrings(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - deleteStrings(decode(obj, "from"), decode(obj, "to")); + deleteStrings(decode(obj, "from"), decode(obj, "to")); } export { __wrapper_deleteStrings as deleteStrings } @@ -306,7 +306,7 @@ function __wrapper_recurse(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: i32 = recurse(decode(obj, "n")); + let result: i32 = recurse(decode(obj, "n")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -332,7 +332,7 @@ function __wrapper_callPromise(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - callPromise(decode(obj, "args")); + callPromise(decode(obj, "args")); } export { __wrapper_callPromise as callPromise } @@ -349,7 +349,7 @@ function __wrapper_callbackWithName(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: MyCallbackResult = callbackWithName(decode(obj, "args")); + let result: MyCallbackResult = callbackWithName(decode(obj, "args")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { diff --git a/tests/near-bindgen/out/assembly/hello/model.ts b/tests/near-bindgen/out/assembly/hello/model.ts index 9f2e3fc8bf..e7dfc4c99f 100644 --- a/tests/near-bindgen/out/assembly/hello/model.ts +++ b/tests/near-bindgen/out/assembly/hello/model.ts @@ -15,20 +15,30 @@ export class PromiseArgs { static decode(json: Uint8Array): PromiseArgs { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; - } - - decode(obj: Obj): PromiseArgs { - this.receiver = obj.has("receiver") ? decode(obj, "receiver"): this.receiver; - this.methodName = obj.has("methodName") ? decode(obj, "methodName"): this.methodName; - this.args = obj.has("args") ? decode(obj, "args"): this.args; - this.gas = obj.has("gas") ? decode(obj, "gas"): this.gas; - this.balance = obj.has("balance") ? decode(obj, "balance"): this.balance; - this.callback = obj.has("callback") ? decode(obj, "callback"): this.callback; - this.callbackArgs = obj.has("callbackArgs") ? decode(obj, "callbackArgs"): this.callbackArgs; - this.callbackBalance = obj.has("callbackBalance") ? decode(obj, "callbackBalance"): this.callbackBalance; - this.callbackGas = obj.has("callbackGas") ? decode(obj, "callbackGas"): this.callbackGas; + return value.decode(json); + } + + decode(buf: V): PromiseArgs { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): PromiseArgs { + this.receiver = obj.has("receiver") ? decode(obj, "receiver"): this.receiver; + this.methodName = obj.has("methodName") ? decode(obj, "methodName"): this.methodName; + this.args = obj.has("args") ? decode(obj, "args"): this.args; + this.gas = obj.has("gas") ? decode(obj, "gas"): this.gas; + this.balance = obj.has("balance") ? decode(obj, "balance"): this.balance; + this.callback = obj.has("callback") ? decode(obj, "callback"): this.callback; + this.callbackArgs = obj.has("callbackArgs") ? decode(obj, "callbackArgs"): this.callbackArgs; + this.callbackBalance = obj.has("callbackBalance") ? decode(obj, "callbackBalance"): this.callbackBalance; + this.callbackGas = obj.has("callbackGas") ? decode(obj, "callbackGas"): this.callbackGas; return this; } @@ -61,12 +71,22 @@ export class InputPromiseArgs { static decode(json: Uint8Array): InputPromiseArgs { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); } - decode(obj: Obj): InputPromiseArgs { - this.args = obj.has("args") ? decode(obj, "args"): this.args; + decode(buf: V): InputPromiseArgs { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): InputPromiseArgs { + this.args = obj.has("args") ? decode(obj, "args"): this.args; return this; } @@ -92,13 +112,23 @@ export class MyContractPromiseResult { static decode(json: Uint8Array): MyContractPromiseResult { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): MyContractPromiseResult { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): MyContractPromiseResult { - this.ok = obj.has("ok") ? decode(obj, "ok"): this.ok; - this.r = obj.has("r") ? decode(obj, "r"): this.r; + private _decode(obj: Obj): MyContractPromiseResult { + this.ok = obj.has("ok") ? decode(obj, "ok"): this.ok; + this.r = obj.has("r") ? decode(obj, "r"): this.r; return this; } @@ -125,13 +155,23 @@ export class MyCallbackResult { static decode(json: Uint8Array): MyCallbackResult { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): MyCallbackResult { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): MyCallbackResult { - this.rs = obj.has("rs") ? decode>(obj, "rs"): this.rs; - this.n = obj.has("n") ? decode(obj, "n"): this.n; + private _decode(obj: Obj): MyCallbackResult { + this.rs = obj.has("rs") ? decode, Obj>(obj, "rs"): this.rs; + this.n = obj.has("n") ? decode(obj, "n"): this.n; return this; } diff --git a/tests/near-bindgen/out/assembly/model.ts b/tests/near-bindgen/out/assembly/model.ts index 52700eeae1..f5bae3c898 100644 --- a/tests/near-bindgen/out/assembly/model.ts +++ b/tests/near-bindgen/out/assembly/model.ts @@ -26,25 +26,35 @@ export class FooBar { static decode(json: Uint8Array): FooBar { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; - } - - decode(obj: Obj): FooBar { - this.foo = obj.has("foo") ? decode(obj, "foo"): this.foo; - this.bar = obj.has("bar") ? decode(obj, "bar"): this.bar; - this.u64Val = obj.has("u64Val") ? decode(obj, "u64Val"): this.u64Val; - this.u64_zero = obj.has("u64_zero") ? decode(obj, "u64_zero"): this.u64_zero; - this.i64Val = obj.has("i64Val") ? decode(obj, "i64Val"): this.i64Val; - this.flag = obj.has("flag") ? decode(obj, "flag"): this.flag; - this.baz = obj.has("baz") ? decode(obj, "baz"): this.baz; - this.uint8array = obj.has("uint8array") ? decode(obj, "uint8array"): this.uint8array; - this.arr = obj.has("arr") ? decode>>(obj, "arr"): this.arr; - this.u32Arr = obj.has("u32Arr") ? decode>(obj, "u32Arr"): this.u32Arr; - this.i32Arr = obj.has("i32Arr") ? decode>(obj, "i32Arr"): this.i32Arr; - this.u128Val = obj.has("u128Val") ? decode(obj, "u128Val"): this.u128Val; - this.uint8arrays = obj.has("uint8arrays") ? decode>(obj, "uint8arrays"): this.uint8arrays; - this.u64Arr = obj.has("u64Arr") ? decode>(obj, "u64Arr"): this.u64Arr; + return value.decode(json); + } + + decode(buf: V): FooBar { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): FooBar { + this.foo = obj.has("foo") ? decode(obj, "foo"): this.foo; + this.bar = obj.has("bar") ? decode(obj, "bar"): this.bar; + this.u64Val = obj.has("u64Val") ? decode(obj, "u64Val"): this.u64Val; + this.u64_zero = obj.has("u64_zero") ? decode(obj, "u64_zero"): this.u64_zero; + this.i64Val = obj.has("i64Val") ? decode(obj, "i64Val"): this.i64Val; + this.flag = obj.has("flag") ? decode(obj, "flag"): this.flag; + this.baz = obj.has("baz") ? decode(obj, "baz"): this.baz; + this.uint8array = obj.has("uint8array") ? decode(obj, "uint8array"): this.uint8array; + this.arr = obj.has("arr") ? decode>, Obj>(obj, "arr"): this.arr; + this.u32Arr = obj.has("u32Arr") ? decode, Obj>(obj, "u32Arr"): this.u32Arr; + this.i32Arr = obj.has("i32Arr") ? decode, Obj>(obj, "i32Arr"): this.i32Arr; + this.u128Val = obj.has("u128Val") ? decode(obj, "u128Val"): this.u128Val; + this.uint8arrays = obj.has("uint8arrays") ? decode, Obj>(obj, "uint8arrays"): this.uint8arrays; + this.u64Arr = obj.has("u64Arr") ? decode, Obj>(obj, "u64Arr"): this.u64Arr; return this; } @@ -84,14 +94,24 @@ export class Nullables { static decode(json: Uint8Array): Nullables { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); } - decode(obj: Obj): Nullables { - this.str = obj.has("str") ? decode(obj, "str"): this.str; - this.u128 = obj.has("u128") ? decode(obj, "u128"): this.u128; - this.uint8Array = obj.has("uint8Array") ? decode(obj, "uint8Array"): this.uint8Array; + decode(buf: V): Nullables { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): Nullables { + this.str = obj.has("str") ? decode(obj, "str"): this.str; + this.u128 = obj.has("u128") ? decode(obj, "u128"): this.u128; + this.uint8Array = obj.has("uint8Array") ? decode(obj, "uint8Array"): this.uint8Array; return this; } @@ -118,12 +138,22 @@ export class ContainerClass { static decode(json: Uint8Array): ContainerClass { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): ContainerClass { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): ContainerClass { - this.foobar = obj.has("foobar") ? decode(obj, "foobar"): this.foobar; + private _decode(obj: Obj): ContainerClass { + this.foobar = obj.has("foobar") ? decode(obj, "foobar"): this.foobar; return this; } @@ -148,12 +178,22 @@ export class AnotherContainerClass { static decode(json: Uint8Array): AnotherContainerClass { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): AnotherContainerClass { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): AnotherContainerClass { - this.foobars = obj.has("foobars") ? decode>>(obj, "foobars"): this.foobars; + private _decode(obj: Obj): AnotherContainerClass { + this.foobars = obj.has("foobars") ? decode>, Obj>(obj, "foobars"): this.foobars; return this; } @@ -184,18 +224,28 @@ export class PromiseArgs { static decode(json: Uint8Array): PromiseArgs { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; - } - - decode(obj: Obj): PromiseArgs { - this.receiver = obj.has("receiver") ? decode(obj, "receiver"): this.receiver; - this.methodName = obj.has("methodName") ? decode(obj, "methodName"): this.methodName; - this.args = obj.has("args") ? decode(obj, "args"): this.args; - this.balance = obj.has("balance") ? decode(obj, "balance"): this.balance; - this.callback = obj.has("callback") ? decode(obj, "callback"): this.callback; - this.callbackArgs = obj.has("callbackArgs") ? decode(obj, "callbackArgs"): this.callbackArgs; - this.callbackBalance = obj.has("callbackBalance") ? decode(obj, "callbackBalance"): this.callbackBalance; + return value.decode(json); + } + + decode(buf: V): PromiseArgs { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): PromiseArgs { + this.receiver = obj.has("receiver") ? decode(obj, "receiver"): this.receiver; + this.methodName = obj.has("methodName") ? decode(obj, "methodName"): this.methodName; + this.args = obj.has("args") ? decode(obj, "args"): this.args; + this.balance = obj.has("balance") ? decode(obj, "balance"): this.balance; + this.callback = obj.has("callback") ? decode(obj, "callback"): this.callback; + this.callbackArgs = obj.has("callbackArgs") ? decode(obj, "callbackArgs"): this.callbackArgs; + this.callbackBalance = obj.has("callbackBalance") ? decode(obj, "callbackBalance"): this.callbackBalance; return this; } @@ -227,13 +277,23 @@ export class MyContractPromiseResult { static decode(json: Uint8Array): MyContractPromiseResult { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); } - decode(obj: Obj): MyContractPromiseResult { - this.ok = obj.has("ok") ? decode(obj, "ok"): this.ok; - this.r = obj.has("r") ? decode(obj, "r"): this.r; + decode(buf: V): MyContractPromiseResult { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): MyContractPromiseResult { + this.ok = obj.has("ok") ? decode(obj, "ok"): this.ok; + this.r = obj.has("r") ? decode(obj, "r"): this.r; return this; } @@ -260,13 +320,23 @@ export class MyCallbackResult { static decode(json: Uint8Array): MyCallbackResult { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): MyCallbackResult { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): MyCallbackResult { - this.rs = obj.has("rs") ? decode>(obj, "rs"): this.rs; - this.n = obj.has("n") ? decode(obj, "n"): this.n; + private _decode(obj: Obj): MyCallbackResult { + this.rs = obj.has("rs") ? decode, Obj>(obj, "rs"): this.rs; + this.n = obj.has("n") ? decode(obj, "n"): this.n; return this; } @@ -292,12 +362,22 @@ export class Generic { static decode(json: Uint8Array): Generic { let value = instantiate>(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): Generic { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): Generic { - this.value = obj.has("value") ? decode(obj, "value"): this.value; + private _decode(obj: Obj): Generic { + this.value = obj.has("value") ? decode(obj, "value"): this.value; return this; } diff --git a/tests/near-bindgen/out/assembly/test.ts b/tests/near-bindgen/out/assembly/test.ts index f1ff91b945..a5f946eb10 100644 --- a/tests/near-bindgen/out/assembly/test.ts +++ b/tests/near-bindgen/out/assembly/test.ts @@ -14,7 +14,7 @@ function __wrapper_convertFoobars(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: Array = convertFoobars(decode>(obj, "foobars")); + let result: Array = convertFoobars(decode, Obj>(obj, "foobars")); let encoder = new JSONEncoder(); if ((isString>() || isNullable>()) && result == null) { @@ -40,7 +40,7 @@ function __wrapper_getStringArrayLength(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: i32 = getStringArrayLength(decode>(obj, "arr")); + let result: i32 = getStringArrayLength(decode, Obj>(obj, "arr")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -66,7 +66,7 @@ function __wrapper_rewrapFoobar(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: AnotherContainerClass = rewrapFoobar(decode(obj, "container")); + let result: AnotherContainerClass = rewrapFoobar(decode(obj, "container")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -92,7 +92,7 @@ function __wrapper_unwrapFoobar(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: FooBar = unwrapFoobar(decode(obj, "container")); + let result: FooBar = unwrapFoobar(decode(obj, "container")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -135,7 +135,7 @@ function __wrapper_stringAliasTest(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: StringAlias = stringAliasTest(decode(obj, "str")); + let result: StringAlias = stringAliasTest(decode(obj, "str")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -181,8 +181,7 @@ export function runTest(): void { const encoder = original.encode(); logging.log("Before: " + encoder.toString()); const encoded = encoder.serialize(); - let obj = JSON.parse(encoded); - let decoded: FooBar = decode(obj); + let decoded: FooBar = decode(encoded); logging.log("After: " + decoded.toJSON()); assert(original.foo == decoded.foo); assert(original.bar == decoded.bar); @@ -192,7 +191,7 @@ export function runTest(): void { assert(original.u64Arr[0] == decoded.u64Arr[0]); assert(original.u64_zero == decoded.u64_zero); const nullable = new Nullables(); - const nullable2 = decode(JSON.parse(nullable.serialize())); + const nullable2 = decode(nullable.serialize()); assert(nullable2.str == null); assert(nullable2.u128 == null); assert(nullable2.uint8Array == null); diff --git a/tests/near-bindgen/out/hello.wat b/tests/near-bindgen/out/hello.wat index 893bef7e60..369048bd49 100644 --- a/tests/near-bindgen/out/hello.wat +++ b/tests/near-bindgen/out/hello.wat @@ -203,6 +203,8 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/number/U32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/nearEntry/JSON.handler (mut i32) (i32.const 0)) + (global $~lib/nearEntry/JSON.decoder (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/rt/__rtti_base i32 (i32.const 5120)) @@ -812,49 +814,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 15 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -866,7 +826,7 @@ end local.get $0 ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -881,7 +841,7 @@ local.set $0 local.get $0 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -912,7 +872,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Handler#constructor (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#constructor (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -942,7 +902,58 @@ i32.store local.get $0 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 15 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $start:~lib/nearEntry (; 48 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/nearEntry/Handler#constructor + global.set $~lib/nearEntry/JSON.handler + i32.const 0 + global.get $~lib/nearEntry/JSON.handler + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor + global.set $~lib/nearEntry/JSON.decoder + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -970,15 +981,15 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Uint8Array#get:length (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#__get (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -997,7 +1008,7 @@ i32.add i32.load8_u ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.load offset=4 @@ -1018,7 +1029,7 @@ i32.load offset=4 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 i32.const 9 i32.eq @@ -1044,7 +1055,7 @@ i32.eq end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1078,7 +1089,7 @@ local.get $1 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 55 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) block $break|0 loop $continue|0 local.get $0 @@ -1095,7 +1106,7 @@ unreachable end ) - (func $~lib/nearEntry/Value#constructor (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value#constructor (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1107,7 +1118,7 @@ end local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 @@ -1131,7 +1142,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 59 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1171,7 +1182,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1203,7 +1214,7 @@ call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -1234,7 +1245,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Obj#constructor (; 61 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Obj#constructor (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1277,11 +1288,11 @@ i32.store offset=4 local.get $0 ) - (func $~lib/nearEntry/Value.Object (; 62 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Object (; 63 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Obj#constructor ) - (func $~lib/rt/__instanceof (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1318,11 +1329,11 @@ end i32.const 0 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 65 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/util/memory/memcpy (; 65 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2350,7 +2361,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2575,7 +2586,7 @@ end end ) - (func $~lib/rt/stub/__realloc (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__realloc (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2714,7 +2725,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/ensureSize (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 69 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2777,7 +2788,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array<~lib/nearEntry/Value>#push (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#push (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2813,7 +2824,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2823,7 +2834,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -2854,7 +2865,7 @@ local.get $1 call $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get ) - (func $~lib/nearEntry/Handler#get:peek (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#get:peek (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -2864,7 +2875,7 @@ i32.sub call $~lib/array/Array<~lib/nearEntry/Value>#__get ) - (func $~lib/util/hash/hashStr (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2915,7 +2926,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/string/compareImpl (; 74 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 75 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -2980,7 +2991,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/string/String.__eq (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 76 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3053,7 +3064,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -3113,7 +3124,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3141,7 +3152,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#push (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3177,7 +3188,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 80 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3339,7 +3350,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3470,7 +3481,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Obj#set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Obj#set (; 82 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3499,7 +3510,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Arr#push (; 82 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Arr#push (; 83 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3511,7 +3522,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#addValue (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#addValue (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3613,7 +3624,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#pushObject (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushObject (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3638,7 +3649,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 85 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 86 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3650,7 +3661,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/string/String.UTF8.decodeUnsafe (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.decodeUnsafe (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3879,7 +3890,7 @@ call $~lib/rt/stub/__realloc call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3898,7 +3909,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load offset=8 local.get $1 @@ -3907,7 +3918,7 @@ i32.sub call $~lib/assemblyscript-json/util/index/Buffer.readString ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -3927,11 +3938,11 @@ local.get $2 call $~lib/assemblyscript-json/decoder/DecoderState#readString ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 91 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4166,7 +4177,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $~lib/array/Array<~lib/string/String>#join (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4180,7 +4191,7 @@ local.get $2 return ) - (func $~lib/rt/__allocArray (; 93 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 94 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -4218,7 +4229,7 @@ end local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4302,7 +4313,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/string/String.fromCodePoint (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4363,7 +4374,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode (; 96 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -4388,7 +4399,7 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode|trampoline (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -4406,7 +4417,7 @@ local.get $1 call $~lib/string/String.fromCharCode ) - (func $~lib/string/String#concat (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 99 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4482,7 +4493,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String.__concat (; 99 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 100 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -4505,7 +4516,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 100 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4648,7 +4659,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4780,7 +4791,7 @@ end unreachable ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 102 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 103 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4814,7 +4825,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4848,7 +4859,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/nearEntry/Handler#popObject (; 104 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popObject (; 105 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -4861,7 +4872,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4976,7 +4987,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Arr#constructor (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Arr#constructor (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5006,11 +5017,11 @@ i32.store local.get $0 ) - (func $~lib/nearEntry/Value.Array (; 107 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Array (; 108 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Arr#constructor ) - (func $~lib/nearEntry/Handler#pushArray (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushArray (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -5035,7 +5046,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Handler#popArray (; 109 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popArray (; 110 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -5048,7 +5059,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5161,7 +5172,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Str#constructor (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Str#constructor (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -5184,7 +5195,7 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/nearEntry/Value.String (; 112 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.String (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -5197,7 +5208,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/nearEntry/Handler#setString (; 113 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setString (; 114 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5219,7 +5230,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5247,7 +5258,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 115 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 116 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5300,7 +5311,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Bools#constructor (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Bools#constructor (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5317,12 +5328,12 @@ i32.store8 local.get $0 ) - (func $~lib/nearEntry/Value.Bool (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.Bool (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Bools#constructor ) - (func $~lib/nearEntry/Handler#setBoolean (; 118 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setBoolean (; 119 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5339,7 +5350,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 120 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 184 @@ -5382,7 +5393,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Num#constructor (; 120 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/nearEntry/Num#constructor (; 121 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 if (result i32) local.get $0 @@ -5399,12 +5410,12 @@ i64.store local.get $0 ) - (func $~lib/nearEntry/Value.Number (; 121 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/nearEntry/Value.Number (; 122 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Num#constructor ) - (func $~lib/nearEntry/Handler#setInteger (; 122 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/nearEntry/Handler#setInteger (; 123 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5421,7 +5432,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i64) (local $2 i64) (local $3 i32) @@ -5501,7 +5512,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Null#constructor (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Null#constructor (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5515,11 +5526,11 @@ local.set $0 local.get $0 ) - (func $~lib/nearEntry/Value.Null (; 125 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Null (; 126 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Null#constructor ) - (func $~lib/nearEntry/Handler#setNull (; 126 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Handler#setNull (; 127 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5535,7 +5546,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 216 @@ -5557,7 +5568,7 @@ end i32.const 0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace @@ -5603,7 +5614,7 @@ call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 129 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $1 @@ -5664,44 +5675,54 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/JSON.parse (; 130 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#reset (; 131 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 0 + i32.gt_s + i32.eqz + br_if $break|0 + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#pop + call $~lib/rt/stub/__release + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/JSON.parse (; 132 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop - i32.const 0 - i32.const 0 - call $~lib/nearEntry/Handler#constructor - local.tee $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor - local.set $2 - local.get $2 + global.get $~lib/nearEntry/JSON.decoder local.get $0 i32.const 0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize - local.get $2 + global.get $~lib/nearEntry/JSON.decoder i32.load call $~lib/nearEntry/Handler#get:peek - local.tee $3 + local.tee $1 call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - local.set $5 - local.get $1 - call $~lib/rt/stub/__release + local.set $2 + global.get $~lib/nearEntry/JSON.decoder + i32.load + call $~lib/nearEntry/Handler#reset local.get $2 - call $~lib/rt/stub/__release - local.get $3 + local.set $3 + local.get $1 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $5 + local.get $3 ) - (func $~lib/string/String.__ne (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -5720,7 +5741,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5763,7 +5784,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/Obj#get (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#get (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5791,28 +5812,32 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode<~lib/string/String> (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -5824,20 +5849,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -5849,120 +5874,126 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end - local.get $2 + local.get $3 call $~lib/rt/stub/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/stub/__retain - local.set $5 - local.get $3 - local.tee $6 + local.set $6 + local.get $4 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end i32.eqz if i32.const 2424 - local.get $5 + local.get $6 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2472 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2536 - i32.const 320 + i32.const 322 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.load call $~lib/rt/stub/__retain - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $8 local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release local.get $7 - local.set $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $8 + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 return ) - (func $assembly/hello/main/hello (; 135 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/hello (; 137 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5980,7 +6011,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#constructor (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -6002,7 +6033,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#push (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -6029,7 +6060,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 140 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6076,11 +6107,11 @@ drop local.get $0 ) - (func $~lib/array/Array#get:length (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -6089,7 +6120,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6108,7 +6139,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 144 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -6118,7 +6149,7 @@ i32.sub call $~lib/array/Array#__get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 143 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 145 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -6130,7 +6161,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/array/Array#__unchecked_set (; 144 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 146 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -6140,7 +6171,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 145 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 147 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -6166,7 +6197,7 @@ i32.store offset=12 end ) - (func $~lib/string/String#substring (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 148 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6273,7 +6304,7 @@ local.get $10 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/decimalCount32 (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -6339,7 +6370,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 148 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 150 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6481,7 +6512,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6536,12 +6567,12 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 152 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6553,7 +6584,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 152 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 154 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6732,7 +6763,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 153 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 155 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -6785,7 +6816,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 154 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 156 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -6798,7 +6829,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 155 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 157 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -6816,7 +6847,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode<~lib/string/String> (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/string/String> (; 158 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -6848,13 +6879,13 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.const 816 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/string/String.UTF8.byteLength (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.byteLength (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6977,7 +7008,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/string/String.UTF8.encode (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.encode (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7229,7 +7260,7 @@ call $~lib/rt/stub/__release local.get $6 ) - (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7263,7 +7294,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7275,7 +7306,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/__wrapper_hello (; 162 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_hello (; 164 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7312,7 +7343,7 @@ local.set $3 local.get $3 i32.const 2304 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 call $assembly/hello/main/hello local.set $5 @@ -7361,7 +7392,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/util/util.toUTF8 (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.toUTF8 (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -7378,7 +7409,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/util/util.stringToBytes (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.stringToBytes (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7408,7 +7439,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/storage/Storage#setString (; 165 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/near-runtime-ts/storage/Storage#setString (; 167 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i64) @@ -7448,7 +7479,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/setKeyValue (; 166 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/main/setKeyValue (; 168 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -7464,7 +7495,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_setKeyValue (; 167 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_setKeyValue (; 169 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7498,11 +7529,11 @@ local.set $3 local.get $3 i32.const 3392 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 local.get $3 i32.const 3416 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $5 call $assembly/hello/main/setKeyValue local.get $1 @@ -7516,7 +7547,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/storage/Storage#_internalReadBytes (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#_internalReadBytes (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i64) (local $4 i64) @@ -7575,20 +7606,20 @@ end unreachable ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 169 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 171 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 173 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7671,7 +7702,7 @@ local.get $7 call $~lib/rt/stub/__retain ) - (func $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7695,7 +7726,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String.UTF8.decode (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.decode (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -7710,7 +7741,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/near-runtime-ts/util/util.bytesToString (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.bytesToString (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7740,7 +7771,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/near-runtime-ts/storage/Storage#getString (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#getString (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -7758,7 +7789,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/main/getValueByKey (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/getValueByKey (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -7778,7 +7809,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/hello/main/__wrapper_getValueByKey (; 177 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getValueByKey (; 179 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7815,7 +7846,7 @@ local.set $3 local.get $3 i32.const 3392 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 call $assembly/hello/main/getValueByKey local.set $5 @@ -7864,7 +7895,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/setValue (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/setValue (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -7874,7 +7905,7 @@ call $~lib/near-runtime-ts/storage/Storage#setString local.get $0 ) - (func $assembly/hello/main/__wrapper_setValue (; 179 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_setValue (; 181 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7911,7 +7942,7 @@ local.set $3 local.get $3 i32.const 3416 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 call $assembly/hello/main/setValue local.set $5 @@ -7960,7 +7991,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/getValue (; 180 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/getValue (; 182 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) global.get $~lib/near-runtime-ts/storage/storage i32.const 2304 @@ -7973,7 +8004,7 @@ end call $~lib/rt/stub/__retain ) - (func $assembly/hello/main/__wrapper_getValue (; 181 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getValue (; 183 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8017,7 +8048,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/storage/Storage#_fetchIter (; 182 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#_fetchIter (; 184 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i64) @@ -8082,7 +8113,7 @@ end local.get $3 ) - (func $~lib/near-runtime-ts/storage/Storage#keys (; 183 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#keys (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -8111,7 +8142,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/near-runtime-ts/storage/Storage#keys|trampoline (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#keys|trampoline (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -8130,7 +8161,7 @@ local.get $2 call $~lib/near-runtime-ts/storage/Storage#keys ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8140,7 +8171,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -8171,7 +8202,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $assembly/hello/main/getAllKeys (; 187 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/getAllKeys (; 189 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8216,7 +8247,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -8238,7 +8269,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#pop (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 191 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8271,7 +8302,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 190 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 192 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 2072 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -8280,7 +8311,7 @@ call $~lib/array/Array#pop drop ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -8343,7 +8374,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/hello/main/__wrapper_getAllKeys (; 192 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getAllKeys (; 194 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8378,7 +8409,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/benchmark (; 193 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/benchmark (; 195 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 0 @@ -8413,7 +8444,7 @@ i32.const 0 call $~lib/near-runtime-ts/storage/Storage#keys|trampoline ) - (func $assembly/hello/main/__wrapper_benchmark (; 194 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_benchmark (; 196 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8448,7 +8479,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/decode (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8456,21 +8487,25 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -8482,19 +8517,19 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 - i32.const 0 - i32.eq - if + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8506,49 +8541,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -8559,31 +8596,31 @@ i32.const 3544 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3616 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3640 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2536 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $7 - local.get $6 + local.set $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -8591,16 +8628,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - local.get $2 - local.tee $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 21 call $~lib/rt/__instanceof end @@ -8609,33 +8648,33 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 3576 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3616 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3688 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2536 - i32.const 376 + i32.const 377 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i64.load i32.wrap_i64 - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 + local.set $8 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -8643,10 +8682,12 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return ) - (func $~lib/util/string/isSpace (; 196 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/string/isSpace (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 255 @@ -8769,7 +8810,7 @@ end i32.const 0 ) - (func $~lib/util/string/strtol (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtol (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9088,7 +9129,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/number/I32.parseInt (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/I32.parseInt (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -9101,7 +9142,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/util/number/decimalCount64 (; 199 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 201 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -9174,7 +9215,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 200 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 202 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -9301,7 +9342,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 201 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 203 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9366,12 +9407,12 @@ local.get $1 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 202 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 204 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/number/U64#toString (; 203 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/U64#toString (; 205 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9383,7 +9424,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/benchmark_storage (; 204 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/benchmark_storage (; 206 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9458,7 +9499,7 @@ local.get $4 call $~lib/number/U64#toString ) - (func $assembly/hello/main/__wrapper_benchmark_storage (; 205 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_benchmark_storage (; 207 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -9494,7 +9535,7 @@ local.set $3 local.get $3 i32.const 1568 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/benchmark_storage local.set $4 i32.const 0 @@ -9540,7 +9581,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $~lib/util/string/strtol (; 206 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/util/string/strtol (; 208 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -9862,7 +9903,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/number/I64.parseInt (; 207 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/number/I64.parseInt (; 209 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $0 call $~lib/rt/stub/__retain @@ -9875,30 +9916,34 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode (; 208 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/nearEntry/decode (; 210 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -9910,20 +9955,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 i64.extend_i32_u - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -9935,49 +9980,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $6 - local.get $2 + local.get $5 local.tee $7 + local.get $3 + local.tee $8 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $7 + local.get $8 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $7 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $7 local.get $2 - local.tee $4 + local.tee $8 + local.get $3 + local.tee $5 i32.ne if - local.get $7 + local.get $8 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $7 - local.set $2 + local.get $8 + local.set $3 end - local.get $2 - local.tee $7 + local.get $3 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $7 + local.get $8 i32.const 22 call $~lib/rt/__instanceof end @@ -9988,32 +10035,32 @@ i32.const 3544 local.get $1 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3784 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3640 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2536 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 i64.extend_i32_u - local.set $5 - local.get $7 + local.set $6 + local.get $8 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -10021,16 +10068,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end @@ -10039,39 +10088,39 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3784 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3808 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 2536 - i32.const 371 + i32.const 372 i32.const 6 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load call $~lib/rt/stub/__retain - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.const 0 call $~lib/number/I64.parseInt - local.set $5 - local.get $6 - call $~lib/rt/stub/__release - local.get $3 + local.set $6 + local.get $7 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $7 + local.get $5 call $~lib/rt/stub/__release - local.get $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $10 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -10079,13 +10128,15 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return ) - (func $~lib/near-runtime-ts/contract/Context#get:storageUsage (; 209 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/near-runtime-ts/contract/Context#get:storageUsage (; 211 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_usage ) - (func $~lib/near-runtime-ts/storage/Storage#delete (; 210 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/near-runtime-ts/storage/Storage#delete (; 212 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -10107,7 +10158,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/limited_storage (; 211 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $assembly/hello/main/limited_storage (; 213 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10157,7 +10208,7 @@ local.get $1 call $~lib/number/I32#toString ) - (func $assembly/hello/main/__wrapper_limited_storage (; 212 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_limited_storage (; 214 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10193,7 +10244,7 @@ local.set $3 local.get $3 i32.const 3744 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/limited_storage local.set $4 i32.const 0 @@ -10239,7 +10290,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/benchmark_sum_n (; 213 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/benchmark_sum_n (; 215 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i64) i32.const 0 @@ -10269,7 +10320,7 @@ local.get $2 call $~lib/number/U64#toString ) - (func $assembly/hello/main/__wrapper_benchmark_sum_n (; 214 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_benchmark_sum_n (; 216 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10305,7 +10356,7 @@ local.set $3 local.get $3 i32.const 1568 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/benchmark_sum_n local.set $4 i32.const 0 @@ -10351,7 +10402,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/logging/logging.log (; 215 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/near-runtime-ts/logging/logging.log (; 217 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -10371,7 +10422,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/returnHiWithLogs (; 216 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/returnHiWithLogs (; 218 ;) (type $FUNCSIG$i) (result i32) i32.const 3952 call $~lib/near-runtime-ts/logging/logging.log i32.const 3984 @@ -10379,7 +10430,7 @@ i32.const 4016 call $~lib/rt/stub/__retain ) - (func $assembly/hello/main/__wrapper_returnHiWithLogs (; 217 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_returnHiWithLogs (; 219 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10423,7 +10474,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/testSetRemove (; 218 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $assembly/hello/main/testSetRemove (; 220 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -10455,7 +10506,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_testSetRemove (; 219 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_testSetRemove (; 221 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10488,7 +10539,7 @@ local.set $3 local.get $3 i32.const 3416 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 call $assembly/hello/main/testSetRemove local.get $1 @@ -10500,7 +10551,7 @@ local.get $4 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/buildString (; 220 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/buildString (; 222 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10586,7 +10637,7 @@ end local.get $1 ) - (func $~lib/string/String#substr (; 221 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substr (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10658,7 +10709,7 @@ local.get $9 call $~lib/rt/stub/__retain ) - (func $assembly/hello/main/insertStrings (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/main/insertStrings (; 224 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10703,7 +10754,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_insertStrings (; 223 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_insertStrings (; 225 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10735,10 +10786,10 @@ local.set $3 local.get $3 i32.const 4120 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.get $3 i32.const 4144 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/insertStrings local.get $1 call $~lib/rt/stub/__release @@ -10747,7 +10798,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/deleteStrings (; 224 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/main/deleteStrings (; 226 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10793,7 +10844,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_deleteStrings (; 225 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_deleteStrings (; 227 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10825,10 +10876,10 @@ local.set $3 local.get $3 i32.const 4120 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.get $3 i32.const 4144 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/deleteStrings local.get $1 call $~lib/rt/stub/__release @@ -10837,7 +10888,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/recurse (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/recurse (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 i32.le_s @@ -10852,7 +10903,7 @@ i32.const 1 i32.add ) - (func $~lib/util/number/itoa64 (; 227 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 229 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10939,12 +10990,12 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 228 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 230 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/number/I64#toString (; 229 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/I64#toString (; 231 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -10956,7 +11007,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 230 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 232 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) local.get $0 local.get $1 @@ -10966,7 +11017,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 231 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 233 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 call $~lib/rt/stub/__retain drop @@ -10979,7 +11030,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -10998,7 +11049,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/main/__wrapper_recurse (; 233 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_recurse (; 235 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -11034,7 +11085,7 @@ local.set $3 local.get $3 i32.const 1568 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/recurse local.set $4 i32.const 0 @@ -11069,7 +11120,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $assembly/hello/model/PromiseArgs#constructor (; 234 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#constructor (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -11108,7 +11159,7 @@ i32.store offset=32 local.get $0 ) - (func $~lib/nearEntry/Obj#has (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#has (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -11122,7 +11173,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/model/PromiseArgs#decode (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#_decode (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -11136,7 +11187,7 @@ if (result i32) local.get $1 i32.const 4328 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load @@ -11156,7 +11207,7 @@ if (result i32) local.get $1 i32.const 4360 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load offset=4 @@ -11176,7 +11227,7 @@ if (result i32) local.get $1 i32.const 4192 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=8 @@ -11195,7 +11246,7 @@ if (result i32) local.get $1 i32.const 4400 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=12 @@ -11208,7 +11259,7 @@ if (result i32) local.get $1 i32.const 4424 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=16 @@ -11222,7 +11273,7 @@ if (result i32) local.get $1 i32.const 4456 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load offset=20 @@ -11242,7 +11293,7 @@ if (result i32) local.get $1 i32.const 4488 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=24 @@ -11261,7 +11312,7 @@ if (result i32) local.get $1 i32.const 4528 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=28 @@ -11274,7 +11325,7 @@ if (result i32) local.get $1 i32.const 4576 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=32 @@ -11287,35 +11338,72 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#decode<~lib/nearEntry/Obj> (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop local.get $1 call $~lib/rt/stub/__retain drop i32.const 0 local.set $2 - local.get $0 + local.get $1 local.tee $3 - i32.eqz - if (result i32) - i32.const 0 - else + local.get $2 + local.tee $4 + i32.ne + if local.get $3 - i32.const 8 - call $~lib/rt/__instanceof + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release end - if (result i32) + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/hello/model/PromiseArgs#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) local.get $1 i32.const 816 call $~lib/string/String.__ne @@ -11323,20 +11411,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -11348,87 +11436,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -11437,63 +11529,65 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 4216 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 4256 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2536 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/hello/model/PromiseArgs#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/hello/model/PromiseArgs#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/hello/model/PromiseArgs#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -11515,7 +11609,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 239 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 242 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 1160 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -11524,7 +11618,7 @@ call $~lib/array/Array#pop drop ) - (func $assembly/hello/model/PromiseArgs#encode (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#encode (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -11619,7 +11713,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -11652,7 +11746,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/model/InputPromiseArgs#encode (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/InputPromiseArgs#encode (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -11699,7 +11793,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/bignum/integer/u128/u128#constructor (; 243 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + (func $~lib/bignum/integer/u128/u128#constructor (; 246 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) local.get $0 i32.eqz if @@ -11717,7 +11811,7 @@ i64.store offset=8 local.get $0 ) - (func $~lib/polyfills/bswap (; 244 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 247 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -11756,7 +11850,7 @@ i64.rotr return ) - (func $~lib/bignum/integer/u128/u128#toArrayBufferBE (; 245 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/bignum/integer/u128/u128#toArrayBufferBE (; 248 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 local.get $0 i64.load offset=8 @@ -11768,7 +11862,7 @@ call $~lib/polyfills/bswap i64.store offset=8 ) - (func $~lib/bignum/integer/u128/u128#toArrayBufferLE (; 246 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/bignum/integer/u128/u128#toArrayBufferLE (; 249 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 local.get $0 i64.load @@ -11778,7 +11872,7 @@ i64.load offset=8 i64.store offset=8 ) - (func $~lib/bignum/integer/u128/u128#toArrayBuffer (; 247 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/bignum/integer/u128/u128#toArrayBuffer (; 250 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 if local.get $0 @@ -11790,7 +11884,7 @@ call $~lib/bignum/integer/u128/u128#toArrayBufferLE end ) - (func $~lib/near-runtime-ts/contract/ContractPromise.create (; 248 ;) (type $FUNCSIG$iiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (func $~lib/near-runtime-ts/contract/ContractPromise.create (; 251 ;) (type $FUNCSIG$iiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -11886,7 +11980,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString (; 249 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString (; 252 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) i32.const 0 @@ -11914,14 +12008,14 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/contract/Context#get:contractName (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/contract/Context#get:contractName (; 253 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i64.const 0 call $~lib/near-runtime-ts/runtime_api/runtime_api.current_account_id local.get $0 i64.const 0 call $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString ) - (func $~lib/near-runtime-ts/contract/ContractPromise#then (; 251 ;) (type $FUNCSIG$iiiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (func $~lib/near-runtime-ts/contract/ContractPromise#then (; 254 ;) (type $FUNCSIG$iiiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -12019,12 +12113,12 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult (; 252 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult (; 255 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i64.load call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_return ) - (func $assembly/hello/main/callPromise (; 253 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $assembly/hello/main/callPromise (; 256 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i64) @@ -12158,7 +12252,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_callPromise (; 254 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_callPromise (; 257 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -12191,7 +12285,7 @@ local.set $3 local.get $3 i32.const 4192 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.tee $4 call $assembly/hello/main/callPromise local.get $1 @@ -12203,7 +12297,7 @@ local.get $4 call $~lib/rt/stub/__release ) - (func $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -12234,7 +12328,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set (; 256 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set (; 259 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -12264,7 +12358,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set (; 257 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set (; 260 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -12308,7 +12402,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/contract/ContractPromise.getResults (; 258 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/near-runtime-ts/contract/ContractPromise.getResults (; 261 ;) (type $FUNCSIG$i) (result i32) (local $0 i64) (local $1 i32) (local $2 i32) @@ -12403,11 +12497,11 @@ end local.get $1 ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array.create (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create (; 263 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -12438,7 +12532,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $assembly/hello/model/MyContractPromiseResult#constructor (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#constructor (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -12456,7 +12550,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 262 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 265 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -12486,7 +12580,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array#__set (; 263 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 266 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -12530,7 +12624,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12540,7 +12634,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -12571,7 +12665,7 @@ local.get $1 call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get ) - (func $~lib/array/Array#__unchecked_get (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12581,7 +12675,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -12612,7 +12706,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $assembly/hello/model/MyCallbackResult#constructor (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#constructor (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -12630,7 +12724,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/Array#constructor (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -12661,28 +12755,32 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/decode (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -12694,19 +12792,19 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -12718,49 +12816,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -12771,31 +12871,31 @@ i32.const 3544 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 4800 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3640 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2536 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $7 - local.get $6 + local.set $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -12803,16 +12903,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - local.get $2 - local.tee $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 20 call $~lib/rt/__instanceof end @@ -12821,32 +12923,32 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 3576 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 4800 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 4824 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2536 - i32.const 363 + i32.const 364 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $2 - i32.load8_u - local.set $7 - local.get $5 - call $~lib/rt/stub/__release local.get $3 + i32.load8_u + local.set $8 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -12854,10 +12956,45 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return ) - (func $~lib/nearEntry/decode (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#decode<~lib/nearEntry/Obj> (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/hello/model/MyCallbackResult#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12867,21 +13004,25 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -12893,20 +13034,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -12918,87 +13059,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -13007,63 +13152,65 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 4872 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 4256 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2536 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/hello/model/MyCallbackResult#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/hello/model/MyCallbackResult#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/hello/model/MyCallbackResult#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $assembly/hello/model/MyContractPromiseResult#decode (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#_decode (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -13076,7 +13223,7 @@ if (result i32) local.get $1 i32.const 4776 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load8_u @@ -13090,7 +13237,7 @@ if (result i32) local.get $1 i32.const 1616 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=4 @@ -13109,7 +13256,40 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#decode<~lib/nearEntry/Obj> (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/hello/model/MyContractPromiseResult#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13119,21 +13299,25 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -13145,20 +13329,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -13170,87 +13354,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -13259,63 +13447,65 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 4712 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 4256 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2536 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/hello/model/MyContractPromiseResult#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/hello/model/MyContractPromiseResult#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/hello/model/MyContractPromiseResult#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $~lib/array/Array#push (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13351,7 +13541,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13413,7 +13603,7 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.set $8 local.get $4 local.get $8 @@ -13445,28 +13635,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -13478,20 +13672,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -13503,83 +13697,89 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 call $~lib/nearEntry/decodeArray - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $assembly/hello/model/MyCallbackResult#decode (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#_decode (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -13593,7 +13793,7 @@ if (result i32) local.get $1 i32.const 4616 - call $~lib/nearEntry/decode<~lib/array/Array> + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> else local.get $0 i32.load @@ -13613,7 +13813,7 @@ if (result i32) local.get $1 i32.const 1568 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load offset=4 @@ -13632,11 +13832,35 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/model/MyCallbackResult.decode (; 278 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#decode<~lib/typedarray/Uint8Array> (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/hello/model/MyCallbackResult#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/model/MyCallbackResult.decode (; 284 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -13647,25 +13871,21 @@ local.set $2 local.get $2 local.get $0 - call $~lib/nearEntry/JSON.parse - local.tee $3 - call $assembly/hello/model/MyCallbackResult#decode - call $~lib/rt/stub/__release - local.get $2 - local.set $4 + call $assembly/hello/model/MyCallbackResult#decode<~lib/typedarray/Uint8Array> + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $2 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $4 + local.get $3 ) - (func $~lib/array/Array#get:length (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 280 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 286 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -13681,7 +13901,7 @@ end call $~lib/assemblyscript-json/encoder/JSONEncoder#write ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 281 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 287 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -13694,7 +13914,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13712,7 +13932,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 289 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13745,7 +13965,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/model/MyContractPromiseResult#encode (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#encode (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -13798,7 +14018,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13831,7 +14051,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -13894,7 +14114,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/hello/model/MyCallbackResult#encode (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#encode (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -13947,7 +14167,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/near-runtime-ts/storage/Storage#setBytes (; 288 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/near-runtime-ts/storage/Storage#setBytes (; 294 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) local.get $1 @@ -13981,7 +14201,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/callbackWithName (; 289 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/callbackWithName (; 295 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14150,7 +14370,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $assembly/hello/main/__wrapper_callbackWithName (; 290 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_callbackWithName (; 296 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -14187,7 +14407,7 @@ local.set $3 local.get $3 i32.const 4192 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.tee $4 call $assembly/hello/main/callbackWithName local.set $5 @@ -14227,7 +14447,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/storage/Storage#getBytes (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#getBytes (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -14240,7 +14460,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/getLastResult (; 292 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/getLastResult (; 298 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) global.get $~lib/near-runtime-ts/storage/storage @@ -14253,7 +14473,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/hello/main/__wrapper_getLastResult (; 293 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getLastResult (; 299 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14288,7 +14508,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/generateLogs (; 294 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/generateLogs (; 300 ;) (type $FUNCSIG$v) global.get $~lib/near-runtime-ts/storage/storage i32.const 4960 i32.const 3416 @@ -14298,7 +14518,7 @@ i32.const 5008 call $~lib/near-runtime-ts/logging/logging.log ) - (func $assembly/hello/main/triggerAssert (; 295 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/triggerAssert (; 301 ;) (type $FUNCSIG$v) i32.const 5032 call $~lib/near-runtime-ts/logging/logging.log i32.const 0 @@ -14312,9 +14532,10 @@ unreachable end ) - (func $start (; 296 ;) (type $FUNCSIG$v) + (func $start (; 302 ;) (type $FUNCSIG$v) call $start:~lib/rt/index-stub + call $start:~lib/nearEntry ) - (func $null (; 297 ;) (type $FUNCSIG$v) + (func $null (; 303 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/near-bindgen/out/test.wat b/tests/near-bindgen/out/test.wat index da8ab132ce..efe6cc193f 100644 --- a/tests/near-bindgen/out/test.wat +++ b/tests/near-bindgen/out/test.wat @@ -196,6 +196,8 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/number/U32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/nearEntry/JSON.handler (mut i32) (i32.const 0)) + (global $~lib/nearEntry/JSON.decoder (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/bignum/utils/RadixCharsTable i32 (i32.const 3840)) (global $~lib/rt/__rtti_base i32 (i32.const 5784)) @@ -792,49 +794,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 15 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -846,7 +806,7 @@ end local.get $0 ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -861,7 +821,7 @@ local.set $0 local.get $0 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -892,7 +852,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Handler#constructor (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#constructor (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -922,7 +882,58 @@ i32.store local.get $0 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 15 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $start:~lib/nearEntry (; 34 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/nearEntry/Handler#constructor + global.set $~lib/nearEntry/JSON.handler + i32.const 0 + global.get $~lib/nearEntry/JSON.handler + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor + global.set $~lib/nearEntry/JSON.decoder + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -950,15 +961,15 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Uint8Array#get:length (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#__get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -977,7 +988,7 @@ i32.add i32.load8_u ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.load offset=4 @@ -998,7 +1009,7 @@ i32.load offset=4 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 i32.const 9 i32.eq @@ -1024,7 +1035,7 @@ i32.eq end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1058,7 +1069,7 @@ local.get $1 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) block $break|0 loop $continue|0 local.get $0 @@ -1075,7 +1086,7 @@ unreachable end ) - (func $~lib/nearEntry/Value#constructor (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1087,7 +1098,7 @@ end local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 @@ -1111,7 +1122,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 45 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1151,7 +1162,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1183,7 +1194,7 @@ call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -1214,7 +1225,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Obj#constructor (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Obj#constructor (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1257,11 +1268,11 @@ i32.store offset=4 local.get $0 ) - (func $~lib/nearEntry/Value.Object (; 48 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Object (; 49 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Obj#constructor ) - (func $~lib/rt/__instanceof (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1298,11 +1309,11 @@ end i32.const 0 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/util/memory/memcpy (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2330,7 +2341,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2555,7 +2566,7 @@ end end ) - (func $~lib/rt/stub/__realloc (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__realloc (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2694,7 +2705,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/ensureSize (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 55 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2757,7 +2768,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array<~lib/nearEntry/Value>#push (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#push (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2793,7 +2804,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2803,7 +2814,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -2834,7 +2845,7 @@ local.get $1 call $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get ) - (func $~lib/nearEntry/Handler#get:peek (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#get:peek (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -2844,7 +2855,7 @@ i32.sub call $~lib/array/Array<~lib/nearEntry/Value>#__get ) - (func $~lib/util/hash/hashStr (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2895,7 +2906,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/string/compareImpl (; 60 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 61 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -2960,7 +2971,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/string/String.__eq (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3033,7 +3044,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -3093,7 +3104,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3121,7 +3132,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#push (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3157,7 +3168,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 66 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3319,7 +3330,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3450,7 +3461,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Obj#set (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Obj#set (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3479,7 +3490,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Arr#push (; 68 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Arr#push (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3491,7 +3502,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#addValue (; 69 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#addValue (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3593,7 +3604,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#pushObject (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushObject (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3618,7 +3629,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3630,7 +3641,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/string/String.UTF8.decodeUnsafe (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.decodeUnsafe (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3859,7 +3870,7 @@ call $~lib/rt/stub/__realloc call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3878,7 +3889,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load offset=8 local.get $1 @@ -3887,7 +3898,7 @@ i32.sub call $~lib/assemblyscript-json/util/index/Buffer.readString ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -3907,11 +3918,11 @@ local.get $2 call $~lib/assemblyscript-json/decoder/DecoderState#readString ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4146,7 +4157,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $~lib/array/Array<~lib/string/String>#join (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4160,7 +4171,7 @@ local.get $2 return ) - (func $~lib/rt/__allocArray (; 79 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -4198,7 +4209,7 @@ end local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 80 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4282,7 +4293,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/string/String.fromCodePoint (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4343,7 +4354,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -4368,7 +4379,7 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode|trampoline (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -4386,7 +4397,7 @@ local.get $1 call $~lib/string/String.fromCharCode ) - (func $~lib/string/String#concat (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4462,7 +4473,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String.__concat (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 86 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -4485,7 +4496,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 86 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4628,7 +4639,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4760,7 +4771,7 @@ end unreachable ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 88 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 89 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4794,7 +4805,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 89 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4828,7 +4839,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/nearEntry/Handler#popObject (; 90 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popObject (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -4841,7 +4852,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4956,7 +4967,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Arr#constructor (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Arr#constructor (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4986,11 +4997,11 @@ i32.store local.get $0 ) - (func $~lib/nearEntry/Value.Array (; 93 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Array (; 94 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Arr#constructor ) - (func $~lib/nearEntry/Handler#pushArray (; 94 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushArray (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -5015,7 +5026,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Handler#popArray (; 95 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popArray (; 96 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -5028,7 +5039,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5141,7 +5152,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Str#constructor (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Str#constructor (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -5164,7 +5175,7 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/nearEntry/Value.String (; 98 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.String (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -5177,7 +5188,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/nearEntry/Handler#setString (; 99 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setString (; 100 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5199,7 +5210,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 100 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5227,7 +5238,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 101 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 102 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5280,7 +5291,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Bools#constructor (; 102 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Bools#constructor (; 103 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5297,12 +5308,12 @@ i32.store8 local.get $0 ) - (func $~lib/nearEntry/Value.Bool (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.Bool (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Bools#constructor ) - (func $~lib/nearEntry/Handler#setBoolean (; 104 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setBoolean (; 105 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5319,7 +5330,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 184 @@ -5362,7 +5373,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Num#constructor (; 106 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/nearEntry/Num#constructor (; 107 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 if (result i32) local.get $0 @@ -5379,12 +5390,12 @@ i64.store local.get $0 ) - (func $~lib/nearEntry/Value.Number (; 107 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/nearEntry/Value.Number (; 108 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Num#constructor ) - (func $~lib/nearEntry/Handler#setInteger (; 108 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/nearEntry/Handler#setInteger (; 109 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5401,7 +5412,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i64) (local $2 i64) (local $3 i32) @@ -5481,7 +5492,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Null#constructor (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Null#constructor (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5495,11 +5506,11 @@ local.set $0 local.get $0 ) - (func $~lib/nearEntry/Value.Null (; 111 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Null (; 112 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Null#constructor ) - (func $~lib/nearEntry/Handler#setNull (; 112 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Handler#setNull (; 113 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5515,7 +5526,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 216 @@ -5537,7 +5548,7 @@ end i32.const 0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace @@ -5583,7 +5594,7 @@ call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 115 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 116 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $1 @@ -5644,44 +5655,54 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/JSON.parse (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#reset (; 117 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 0 + i32.gt_s + i32.eqz + br_if $break|0 + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#pop + call $~lib/rt/stub/__release + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/JSON.parse (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop - i32.const 0 - i32.const 0 - call $~lib/nearEntry/Handler#constructor - local.tee $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor - local.set $2 - local.get $2 + global.get $~lib/nearEntry/JSON.decoder local.get $0 i32.const 0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize - local.get $2 + global.get $~lib/nearEntry/JSON.decoder i32.load call $~lib/nearEntry/Handler#get:peek - local.tee $3 + local.tee $1 call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - local.set $5 - local.get $1 - call $~lib/rt/stub/__release + local.set $2 + global.get $~lib/nearEntry/JSON.decoder + i32.load + call $~lib/nearEntry/Handler#reset local.get $2 - call $~lib/rt/stub/__release - local.get $3 + local.set $3 + local.get $1 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $5 + local.get $3 ) - (func $~lib/string/String.__ne (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -5700,7 +5721,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5743,7 +5764,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/Obj#get (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#get (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5771,7 +5792,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#constructor (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 122 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5802,7 +5823,7 @@ i32.store offset=12 local.get $0 ) - (func $assembly/model/FooBar#constructor (; 121 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/FooBar#constructor (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -5857,7 +5878,7 @@ i32.store offset=64 local.get $0 ) - (func $~lib/nearEntry/Obj#has (; 122 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#has (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5871,7 +5892,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 125 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5879,21 +5900,25 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -5905,19 +5930,19 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -5929,49 +5954,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -5982,31 +6009,31 @@ i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2832 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2856 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $7 - local.get $6 + local.set $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6014,16 +6041,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - local.get $2 - local.tee $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 21 call $~lib/rt/__instanceof end @@ -6032,33 +6061,33 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2608 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2832 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2904 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2552 - i32.const 376 + i32.const 377 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i64.load i32.wrap_i64 - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 + local.set $8 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6066,10 +6095,12 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return ) - (func $~lib/nearEntry/decode (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 126 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6077,21 +6108,25 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -6103,19 +6138,19 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -6127,49 +6162,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -6180,31 +6217,31 @@ i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2984 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2856 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $7 - local.get $6 + local.set $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6212,16 +6249,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - local.get $2 - local.tee $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 21 call $~lib/rt/__instanceof end @@ -6230,33 +6269,33 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2608 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2984 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2904 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2552 - i32.const 376 + i32.const 377 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i64.load i32.wrap_i64 - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 + local.set $8 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6264,10 +6303,12 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return ) - (func $~lib/util/string/isSpace (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/string/isSpace (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 255 @@ -6390,7 +6431,7 @@ end i32.const 0 ) - (func $~lib/util/string/strtol (; 126 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/util/string/strtol (; 128 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -6712,7 +6753,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/number/I64.parseInt (; 127 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/number/I64.parseInt (; 129 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $0 call $~lib/rt/stub/__retain @@ -6725,30 +6766,34 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode (; 128 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/nearEntry/decode (; 130 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -6760,20 +6805,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 i64.extend_i32_u - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -6785,49 +6830,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $6 - local.get $2 + local.get $5 local.tee $7 + local.get $3 + local.tee $8 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $7 + local.get $8 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $7 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $7 local.get $2 - local.tee $4 + local.tee $8 + local.get $3 + local.tee $5 i32.ne if - local.get $7 + local.get $8 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $7 - local.set $2 + local.get $8 + local.set $3 end - local.get $2 - local.tee $7 + local.get $3 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $7 + local.get $8 i32.const 22 call $~lib/rt/__instanceof end @@ -6838,32 +6885,32 @@ i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3040 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2856 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2552 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 i64.extend_i32_u - local.set $5 - local.get $7 + local.set $6 + local.get $8 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6871,16 +6918,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end @@ -6889,39 +6938,39 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3040 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3064 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 2552 - i32.const 371 + i32.const 372 i32.const 6 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load call $~lib/rt/stub/__retain - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.const 0 call $~lib/number/I64.parseInt - local.set $5 - local.get $6 - call $~lib/rt/stub/__release - local.get $3 + local.set $6 + local.get $7 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $7 + local.get $5 call $~lib/rt/stub/__release - local.get $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $10 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6929,33 +6978,39 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return ) - (func $~lib/nearEntry/decode (; 129 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/nearEntry/decode (; 131 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -6967,20 +7022,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 i64.extend_i32_u - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -6992,49 +7047,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $6 - local.get $2 + local.get $5 local.tee $7 + local.get $3 + local.tee $8 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $7 + local.get $8 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $7 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $7 local.get $2 - local.tee $4 + local.tee $8 + local.get $3 + local.tee $5 i32.ne if - local.get $7 + local.get $8 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $7 - local.set $2 + local.get $8 + local.set $3 end - local.get $2 - local.tee $7 + local.get $3 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $7 + local.get $8 i32.const 22 call $~lib/rt/__instanceof end @@ -7045,32 +7102,32 @@ i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3272 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2856 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2552 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 i64.extend_i32_u - local.set $5 - local.get $7 + local.set $6 + local.get $8 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -7078,16 +7135,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end @@ -7096,39 +7155,39 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3272 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3064 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 2552 - i32.const 371 + i32.const 372 i32.const 6 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load call $~lib/rt/stub/__retain - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.const 0 call $~lib/number/I64.parseInt - local.set $5 - local.get $6 - call $~lib/rt/stub/__release - local.get $3 + local.set $6 + local.get $7 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $7 + local.get $5 call $~lib/rt/stub/__release - local.get $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $10 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -7136,31 +7195,37 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return ) - (func $~lib/nearEntry/decode (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -7172,19 +7237,19 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -7196,49 +7261,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -7249,31 +7316,31 @@ i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3320 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2856 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $7 - local.get $6 + local.set $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -7281,16 +7348,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - local.get $2 - local.tee $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 20 call $~lib/rt/__instanceof end @@ -7299,32 +7368,32 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2608 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3320 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3344 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2552 - i32.const 363 + i32.const 364 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $2 - i32.load8_u - local.set $7 - local.get $5 - call $~lib/rt/stub/__release local.get $3 + i32.load8_u + local.set $8 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -7332,31 +7401,37 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return ) - (func $~lib/nearEntry/decode<~lib/string/String> (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -7368,20 +7443,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -7393,120 +7468,126 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 - i32.ne + local.get $3 + local.tee $7 + i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end - local.get $2 + local.get $3 call $~lib/rt/stub/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/stub/__retain - local.set $5 - local.get $3 - local.tee $6 + local.set $6 + local.get $4 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end i32.eqz if i32.const 2432 - local.get $5 + local.get $6 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3416 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2552 - i32.const 320 + i32.const 322 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.load call $~lib/rt/stub/__retain - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $8 local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release local.get $7 - local.set $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $8 + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 return ) - (func $~lib/string/String#charAt (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -7532,7 +7613,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/string/String#indexOf (; 133 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (; 135 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7623,7 +7704,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/near-runtime-ts/base64/base64.getByte64 (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/base64/base64.getByte64 (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -7643,7 +7724,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#__set (; 135 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 137 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -7663,7 +7744,7 @@ local.get $2 i32.store8 ) - (func $~lib/near-runtime-ts/base64/base64.decode (; 136 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/base64/base64.decode (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7946,7 +8027,7 @@ call $~lib/rt/stub/__release local.get $11 ) - (func $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/typedarray/Uint8Array,~lib/nearEntry/Obj> (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7954,21 +8035,25 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -7980,20 +8065,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8005,115 +8090,119 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 call $~lib/rt/stub/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/stub/__retain - local.set $5 - local.get $3 - local.tee $6 + local.set $6 + local.get $4 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end i32.eqz if i32.const 2432 - local.get $5 + local.get $6 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3416 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2552 - i32.const 320 + i32.const 322 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.load call $~lib/rt/stub/__retain - local.set $8 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $9 local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $8 - local.tee $4 + local.get $7 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $9 + local.tee $5 call $~lib/near-runtime-ts/base64/base64.decode - local.set $6 - local.get $4 + local.set $7 + local.get $5 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -8121,12 +8210,14 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -8157,7 +8248,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/decodeArray<~lib/string/String> (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Value> (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8172,132 +8263,42 @@ call $~lib/rt/stub/__retain drop local.get $0 - local.tee $2 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $2 - i32.const 17 + local.get $4 + i32.const 8 call $~lib/rt/__instanceof end - i32.eqz - if - i32.const 2432 + if (result i32) local.get $1 - call $~lib/string/String.__concat - local.tee $2 - i32.const 2480 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2552 - i32.const 327 - i32.const 2 - call $~lib/builtins/abort - unreachable + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 end - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $4 - local.get $0 - i32.load - call $~lib/rt/stub/__retain - local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $5 - call $~lib/array/Array<~lib/nearEntry/Value>#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $5 - local.get $6 - call $~lib/array/Array<~lib/nearEntry/Value>#__get - local.tee $7 - i32.const 816 - call $~lib/nearEntry/decode<~lib/string/String> - local.set $8 - local.get $4 - local.get $8 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $4 - local.set $8 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $8 - ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.tee $3 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $3 - i32.const 8 - call $~lib/rt/__instanceof - end - if (result i32) - local.get $1 - i32.const 816 - call $~lib/string/String.__ne - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get - local.set $4 - local.get $4 + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8309,119 +8310,126 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end - i32.const 0 - local.set $7 - local.get $2 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 local.get $1 - call $~lib/nearEntry/decodeArray<~lib/string/String> + call $~lib/rt/stub/__retain local.set $6 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 + local.get $4 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 19 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $6 + call $~lib/string/String.__concat + local.tee $7 + i32.const 3416 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2552 + i32.const 322 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load + call $~lib/rt/stub/__retain + local.set $8 + local.get $6 call $~lib/rt/stub/__release - local.get $2 + local.get $4 call $~lib/rt/stub/__release local.get $7 call $~lib/rt/stub/__release - local.get $6 - return - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize + local.get $5 + call $~lib/rt/stub/__release + local.get $8 + local.set $5 local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add + call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 - local.set $4 - local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + return ) - (func $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/string/String> (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8462,7 +8470,7 @@ end i32.const 0 i32.const 0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor + call $~lib/array/Array<~lib/string/String>#constructor local.set $4 local.get $0 i32.load @@ -8483,11 +8491,11 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Value> local.set $8 local.get $4 local.get $8 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push + call $~lib/array/Array<~lib/string/String>#push drop local.get $6 i32.const 1 @@ -8515,28 +8523,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>,~lib/nearEntry/Value> (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -8548,20 +8560,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8573,107 +8585,95 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 - call $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> - local.set $6 + call $~lib/nearEntry/decodeArray<~lib/string/String> + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $~lib/array/Array#constructor (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 26 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#push (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load offset=12 local.set $2 @@ -8692,13 +8692,18 @@ i32.shl i32.add local.get $1 + call $~lib/rt/stub/__retain i32.store local.get $0 local.get $3 i32.store offset=12 local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/nearEntry/decodeArray (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8739,7 +8744,7 @@ end i32.const 0 i32.const 0 - call $~lib/array/Array#constructor + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor local.set $4 local.get $0 i32.load @@ -8760,11 +8765,11 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>,~lib/nearEntry/Value> local.set $8 local.get $4 local.get $8 - call $~lib/array/Array#push + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push drop local.get $6 i32.const 1 @@ -8772,6 +8777,8 @@ local.set $6 local.get $7 call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release br $loop|0 end unreachable @@ -8790,28 +8797,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>,~lib/nearEntry/Obj> (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -8823,20 +8834,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8848,89 +8859,95 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 - call $~lib/nearEntry/decodeArray - local.set $6 + call $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $~lib/array/Array#constructor (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else i32.const 16 - i32.const 18 + i32.const 26 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end @@ -8946,34 +8963,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#push (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - ) - (func $~lib/nearEntry/decodeArray (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8981,6 +8971,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -8988,131 +8979,42 @@ call $~lib/rt/stub/__retain drop local.get $0 - local.tee $2 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $2 - i32.const 17 + local.get $4 + i32.const 8 call $~lib/rt/__instanceof end - i32.eqz - if - i32.const 2432 + if (result i32) local.get $1 - call $~lib/string/String.__concat - local.tee $2 - i32.const 2480 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2552 - i32.const 327 - i32.const 2 - call $~lib/builtins/abort - unreachable + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 end - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $4 - local.get $0 - i32.load - call $~lib/rt/stub/__retain - local.set $5 - block $break|0 + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $5 - call $~lib/array/Array<~lib/nearEntry/Value>#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $5 - local.get $6 - call $~lib/array/Array<~lib/nearEntry/Value>#__get - local.tee $7 - i32.const 816 - call $~lib/nearEntry/decode - local.set $8 - local.get $4 - local.get $8 - call $~lib/array/Array#push - drop - local.get $6 - i32.const 1 - i32.add + i32.eq + if + i32.const 0 local.set $6 - local.get $7 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $4 - local.set $8 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $8 - ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.tee $3 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $3 - i32.const 8 - call $~lib/rt/__instanceof - end - if (result i32) - local.get $1 - i32.const 816 - call $~lib/string/String.__ne - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get - local.set $4 - local.get $4 - i32.const 0 - i32.eq - if - i32.const 0 - call $~lib/rt/stub/__retain - local.set $5 - local.get $0 + local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release @@ -9123,225 +9025,272 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 - call $~lib/rt/stub/__retain - local.set $6 + i32.eqz + if + i32.const 2800 + local.get $1 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2984 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2856 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2552 + i32.const 355 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - i32.const 0 - local.set $7 - local.get $2 - local.get $1 - call $~lib/nearEntry/decodeArray - local.set $6 + local.get $3 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 21 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2984 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2904 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2552 + i32.const 377 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i64.load + i32.wrap_i64 + local.set $8 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 return ) - (func $~lib/bignum/integer/u128/u128#constructor (; 152 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i64.store + (func $~lib/array/Array#push (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 + i32.load offset=12 + local.set $2 local.get $2 - i64.store offset=8 + i32.const 1 + i32.add + local.set $3 local.get $0 - ) - (func $~lib/array/Array#__unchecked_get (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $3 + i32.const 2 + call $~lib/array/ensureSize local.get $0 i32.load offset=4 - local.get $1 - i32.const 0 + local.get $2 + i32.const 2 i32.shl i32.add - i32.load8_u - ) - (func $~lib/array/Array#__get (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 + i32.store local.get $0 - i32.load offset=8 - i32.const 0 - i32.shr_u - i32.ge_u - if - i32.const 832 - i32.const 768 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end + local.get $3 + i32.store offset=12 + local.get $3 + ) + (func $~lib/nearEntry/decodeArray (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $~lib/bignum/globals/__multi3 (; 155 ;) (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - local.get $1 - local.set $5 - local.get $3 - local.set $6 - local.get $5 - i64.const 4294967295 - i64.and - local.set $9 - local.get $6 - i64.const 4294967295 - i64.and - local.set $10 - local.get $9 - local.get $10 - i64.mul - local.set $11 - local.get $11 - i64.const 4294967295 - i64.and - local.set $12 - local.get $5 - i64.const 32 - i64.shr_u + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $2 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 2480 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2552 + i32.const 327 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $4 + local.get $0 + i32.load + call $~lib/rt/stub/__retain local.set $5 - local.get $5 - local.get $10 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.set $11 - local.get $11 - i64.const 4294967295 - i64.and + block $break|0 + i32.const 0 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $4 local.set $8 - local.get $11 - i64.const 32 - i64.shr_u - local.set $7 - local.get $6 - i64.const 32 - i64.shr_u - local.set $6 - local.get $9 - local.get $6 - i64.mul - local.get $8 - i64.add - local.set $11 - local.get $12 - local.get $11 - i64.const 32 - i64.shl - i64.add - local.set $13 - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.add - local.set $14 - local.get $14 local.get $2 + call $~lib/rt/stub/__release local.get $3 - i64.mul - i64.add - local.set $14 - local.get $14 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 - local.get $4 - i64.mul - i64.add - local.set $14 - local.get $14 - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.set $14 - local.get $13 - global.set $~lib/bignum/globals/__res128_lo - local.get $14 - global.set $~lib/bignum/globals/__res128_hi + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/bignum/utils/atou128 (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9349,106 +9298,885 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - (local $17 i64) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 - i32.eqz - if - i32.const 10 - local.set $1 - end - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - local.get $0 - call $~lib/rt/stub/__release - i32.const 3640 - i32.const 3688 - i32.const 133 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/stub/__retain + drop local.get $0 - call $~lib/string/String#get:length + call $~lib/rt/stub/__retain local.set $2 + i32.const 0 + local.set $3 local.get $2 + local.tee $4 i32.eqz - if + if (result i32) i32.const 0 - i64.const 0 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release + else local.get $4 - return + i32.const 8 + call $~lib/rt/__instanceof end - local.get $0 - i32.const 0 - call $~lib/string/String#charCodeAt - local.set $5 - local.get $2 - i32.const 1 - i32.eq if (result i32) - local.get $5 - i32.const 48 - i32.eq + local.get $1 + i32.const 816 + call $~lib/string/String.__ne else i32.const 0 end if - i32.const 0 - i64.const 0 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $3 + local.get $2 call $~lib/rt/stub/__retain local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release local.get $4 - return - end - local.get $5 - i32.const 45 - i32.eq - local.set $6 - local.get $6 - if (result i32) - local.get $6 - else + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.get $1 + call $~lib/nearEntry/decodeArray + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + return + ) + (func $~lib/array/Array#constructor (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 18 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/decode (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2800 + local.get $1 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2832 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2856 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2552 + i32.const 355 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + return + end + local.get $3 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 21 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2832 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2904 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2552 + i32.const 377 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i64.load + i32.wrap_i64 + local.set $8 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + return + ) + (func $~lib/array/Array#push (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + ) + (func $~lib/nearEntry/decodeArray (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $2 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 2480 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2552 + i32.const 327 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $4 + local.get $0 + i32.load + call $~lib/rt/stub/__retain + local.set $5 + block $break|0 + i32.const 0 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $4 + local.set $8 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 + ) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.get $1 + call $~lib/nearEntry/decodeArray + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + return + ) + (func $~lib/bignum/integer/u128/u128#constructor (; 157 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + local.get $1 + i64.store + local.get $0 + local.get $2 + i64.store offset=8 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_u + ) + (func $~lib/array/Array#__get (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 0 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/bignum/globals/__multi3 (; 160 ;) (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + local.get $1 + local.set $5 + local.get $3 + local.set $6 + local.get $5 + i64.const 4294967295 + i64.and + local.set $9 + local.get $6 + i64.const 4294967295 + i64.and + local.set $10 + local.get $9 + local.get $10 + i64.mul + local.set $11 + local.get $11 + i64.const 4294967295 + i64.and + local.set $12 + local.get $5 + i64.const 32 + i64.shr_u + local.set $5 + local.get $5 + local.get $10 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.set $11 + local.get $11 + i64.const 4294967295 + i64.and + local.set $8 + local.get $11 + i64.const 32 + i64.shr_u + local.set $7 + local.get $6 + i64.const 32 + i64.shr_u + local.set $6 + local.get $9 + local.get $6 + i64.mul + local.get $8 + i64.add + local.set $11 + local.get $12 + local.get $11 + i64.const 32 + i64.shl + i64.add + local.set $13 + local.get $5 + local.get $6 + i64.mul + local.get $7 + i64.add + local.set $14 + local.get $14 + local.get $2 + local.get $3 + i64.mul + i64.add + local.set $14 + local.get $14 + local.get $1 + local.get $4 + i64.mul + i64.add + local.set $14 + local.get $14 + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.set $14 + local.get $13 + global.set $~lib/bignum/globals/__res128_lo + local.get $14 + global.set $~lib/bignum/globals/__res128_hi + ) + (func $~lib/bignum/utils/atou128 (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) + (local $17 i64) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.eqz + if + i32.const 10 + local.set $1 + end + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + local.get $0 + call $~lib/rt/stub/__release + i32.const 3640 + i32.const 3688 + i32.const 133 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $0 + i32.const 0 + call $~lib/string/String#charCodeAt + local.set $5 + local.get $2 + i32.const 1 + i32.eq + if (result i32) + local.get $5 + i32.const 48 + i32.eq + else + i32.const 0 + end + if + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $5 + i32.const 45 + i32.eq + local.set $6 + local.get $6 + if (result i32) + local.get $6 + else local.get $5 i32.const 43 i32.eq @@ -10298,100 +11026,448 @@ br_if $continue|4 end end - local.get $11 + local.get $11 + call $~lib/rt/stub/__release + br $break|0 + end + local.get $6 + if (result i32) + local.get $8 + local.set $18 + local.get $18 + i64.load + i64.const -1 + i64.xor + local.set $17 + local.get $18 + i64.load offset=8 + i64.const -1 + i64.xor + local.set $16 + local.get $17 + i64.const 1 + i64.and + local.get $17 + i64.const 1 + i64.shr_u + i64.add + i64.const 63 + i64.shr_u + local.set $13 + i32.const 0 + local.get $17 + i64.const 1 + i64.add + local.get $16 + local.get $13 + i64.add + call $~lib/bignum/integer/u128/u128#constructor + local.tee $18 + local.tee $11 + else + local.get $8 + call $~lib/rt/stub/__retain + local.tee $10 + end + call $~lib/rt/stub/__retain + local.set $18 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $18 + ) + (func $~lib/bignum/integer/u128/u128#_decode (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + i32.const 3896 + call $~lib/nearEntry/Obj#has + if (result i64) + local.get $1 + i32.const 3896 + call $~lib/nearEntry/decode + else + local.get $0 + i64.load + end + i64.store + local.get $0 + local.get $1 + i32.const 3920 + call $~lib/nearEntry/Obj#has + if (result i64) + local.get $1 + i32.const 3920 + call $~lib/nearEntry/decode + else + local.get $0 + i64.load offset=8 + end + i64.store offset=8 + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/bignum/integer/u128/u128#decode<~lib/nearEntry/Obj> (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $~lib/bignum/integer/u128/u128#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128,~lib/nearEntry/Obj> (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 call $~lib/rt/stub/__release - br $break|0 + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 end - local.get $6 + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.tee $7 + i32.eqz if (result i32) - local.get $8 - local.set $18 - local.get $18 - i64.load - i64.const -1 - i64.xor - local.set $17 - local.get $18 - i64.load offset=8 - i64.const -1 - i64.xor - local.set $16 - local.get $17 - i64.const 1 - i64.and - local.get $17 - i64.const 1 - i64.shr_u - i64.add - i64.const 63 - i64.shr_u - local.set $13 i32.const 0 - local.get $17 - i64.const 1 - i64.add - local.get $16 - local.get $13 - i64.add - call $~lib/bignum/integer/u128/u128#constructor - local.tee $18 - local.tee $11 else + local.get $7 + i32.const 19 + call $~lib/rt/__instanceof + end + if + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $1 + call $~lib/rt/stub/__retain + local.set $6 + local.get $4 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 19 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $6 + call $~lib/string/String.__concat + local.tee $7 + i32.const 3416 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2552 + i32.const 322 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load + call $~lib/rt/stub/__retain + local.set $9 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $9 + local.set $9 + i32.const 0 + local.set $5 + local.get $9 + local.get $5 + call $~lib/bignum/utils/atou128 + local.set $7 + local.get $9 + call $~lib/rt/stub/__release + local.get $7 + local.set $5 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $8 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $3 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $9 + i32.const 3872 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2680 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2552 + i32.const 400 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $6 + local.tee $10 + local.get $8 + local.tee $11 + i32.ne + if + local.get $10 call $~lib/rt/stub/__retain - local.tee $10 + drop + local.get $11 + call $~lib/rt/stub/__release end - call $~lib/rt/stub/__retain - local.set $18 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $~lib/bignum/integer/u128/u128#decode<~lib/nearEntry/Obj> + local.set $10 + local.get $2 + call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $8 + local.get $1 call $~lib/rt/stub/__release - local.get $9 + local.get $8 call $~lib/rt/stub/__release - local.get $18 + local.get $10 ) - (func $~lib/bignum/integer/u128/u128#decode (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - local.get $1 - i32.const 3896 - call $~lib/nearEntry/Obj#has - if (result i64) - local.get $1 - i32.const 3896 - call $~lib/nearEntry/decode - else + if (result i32) local.get $0 - i64.load + else + i32.const 16 + i32.const 27 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end - i64.store + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 local.get $0 + i32.const 0 + i32.store offset=12 local.get $1 - i32.const 3920 - call $~lib/nearEntry/Obj#has - if (result i64) - local.get $1 - i32.const 3920 - call $~lib/nearEntry/decode - else - local.get $0 - i64.load offset=8 + if + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable end - i64.store offset=8 local.get $0 - call $~lib/rt/stub/__retain - local.set $2 local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.store offset=12 + local.get $0 ) - (func $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/typedarray/Uint8Array,~lib/nearEntry/Value> (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10400,22 +11476,24 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -10427,20 +11505,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -10452,249 +11530,134 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 - return - end - i32.const 0 - local.set $7 - local.get $2 - local.tee $6 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $6 - i32.const 19 - call $~lib/rt/__instanceof - end - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - call $~lib/rt/stub/__retain - local.set $5 - local.get $3 - local.tee $6 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $6 - i32.const 19 - call $~lib/rt/__instanceof - end - i32.eqz - if - i32.const 2432 - local.get $5 - call $~lib/string/String.__concat - local.tee $6 - i32.const 3416 - call $~lib/string/String.__concat - local.tee $4 - i32.const 2552 - i32.const 320 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load - call $~lib/rt/stub/__retain - local.set $8 - local.get $5 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $8 - local.set $8 - i32.const 0 - local.set $4 - local.get $8 - local.get $4 - call $~lib/bignum/utils/atou128 - local.set $6 - local.get $8 - call $~lib/rt/stub/__release - local.get $6 - local.set $4 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release local.get $7 - call $~lib/rt/stub/__release - local.get $4 return end - local.get $2 - local.tee $4 + i32.const 0 + local.set $8 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $1 + call $~lib/rt/stub/__retain + local.set $6 + local.get $4 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $4 - i32.const 8 + local.get $7 + i32.const 19 call $~lib/rt/__instanceof end i32.eqz if i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $4 - i32.const 2608 - call $~lib/string/String.__concat - local.tee $8 - i32.const 3872 + local.get $6 call $~lib/string/String.__concat - local.tee $6 - i32.const 2680 + local.tee $7 + i32.const 3416 call $~lib/string/String.__concat - local.tee $3 + local.tee $5 i32.const 2552 - i32.const 399 + i32.const 322 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 0 - i64.const 0 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $5 - local.tee $9 - local.get $7 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/stub/__retain - drop - local.get $10 - call $~lib/rt/stub/__release - end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $~lib/bignum/integer/u128/u128#decode + local.get $4 + i32.load + call $~lib/rt/stub/__retain local.set $9 - local.get $2 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $6 + local.get $7 call $~lib/rt/stub/__release - local.get $3 + local.get $5 call $~lib/rt/stub/__release + local.get $9 + local.tee $5 + call $~lib/near-runtime-ts/base64/base64.decode + local.set $7 local.get $5 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $2 call $~lib/rt/stub/__release - local.get $9 - ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 27 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - if - i32.const 656 - i32.const 768 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + return ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#push (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#push (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10730,7 +11693,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10792,7 +11755,7 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array,~lib/nearEntry/Value> local.set $8 local.get $4 local.get $8 @@ -10824,28 +11787,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>,~lib/nearEntry/Obj> (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -10857,20 +11824,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -10882,105 +11849,328 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release local.get $5 - local.set $2 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.get $1 + call $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + return + ) + (func $~lib/array/Array#constructor (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 28 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/decode (; 171 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + i64.extend_i32_u + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $7 + local.get $3 + local.tee $8 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $8 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $8 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $8 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $8 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 - call $~lib/rt/stub/__retain + i32.eqz + if + i32.const 2800 + local.get $1 + call $~lib/string/String.__concat + local.tee $8 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3040 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2856 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2552 + i32.const 355 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.extend_i32_u local.set $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $6 return end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 19 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3040 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3064 + call $~lib/string/String.__concat + local.tee $8 + i32.const 2552 + i32.const 372 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load + call $~lib/rt/stub/__retain + local.set $10 + local.get $10 i32.const 0 - local.set $7 - local.get $2 - local.get $1 - call $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> + call $~lib/number/I64.parseInt local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release local.get $6 return ) - (func $~lib/array/Array#constructor (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 28 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#push (; 164 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/array/Array#push (; 172 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -11007,7 +12197,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/nearEntry/decodeArray (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11069,7 +12259,7 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.set $8 local.get $4 local.get $8 @@ -11099,28 +12289,32 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -11132,20 +12326,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -11157,83 +12351,89 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 call $~lib/nearEntry/decodeArray - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $assembly/model/FooBar#decode (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/FooBar#_decode (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -11246,7 +12446,7 @@ if (result i32) local.get $1 i32.const 2776 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load @@ -11259,7 +12459,7 @@ if (result i32) local.get $1 i32.const 2960 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=4 @@ -11272,7 +12472,7 @@ if (result i64) local.get $1 i32.const 3008 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i64.load offset=8 @@ -11285,7 +12485,7 @@ if (result i64) local.get $1 i32.const 3208 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i64.load offset=16 @@ -11298,7 +12498,7 @@ if (result i64) local.get $1 i32.const 3240 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i64.load offset=24 @@ -11311,7 +12511,7 @@ if (result i32) local.get $1 i32.const 3296 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load8_u offset=32 @@ -11325,7 +12525,7 @@ if (result i32) local.get $1 i32.const 3392 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load offset=36 @@ -11345,7 +12545,7 @@ if (result i32) local.get $1 i32.const 3480 - call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array,~lib/nearEntry/Obj> else local.get $0 i32.load offset=40 @@ -11365,7 +12565,7 @@ if (result i32) local.get $1 i32.const 3520 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> + call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>,~lib/nearEntry/Obj> else local.get $0 i32.load offset=44 @@ -11385,7 +12585,7 @@ if (result i32) local.get $1 i32.const 3544 - call $~lib/nearEntry/decode<~lib/array/Array> + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> else local.get $0 i32.load offset=48 @@ -11405,7 +12605,7 @@ if (result i32) local.get $1 i32.const 3576 - call $~lib/nearEntry/decode<~lib/array/Array> + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> else local.get $0 i32.load offset=52 @@ -11425,7 +12625,7 @@ if (result i32) local.get $1 i32.const 3608 - call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> + call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128,~lib/nearEntry/Obj> else local.get $0 i32.load offset=56 @@ -11445,7 +12645,7 @@ if (result i32) local.get $1 i32.const 3944 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> + call $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>,~lib/nearEntry/Obj> else local.get $0 i32.load offset=60 @@ -11465,7 +12665,7 @@ if (result i32) local.get $1 i32.const 3984 - call $~lib/nearEntry/decode<~lib/array/Array> + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> else local.get $0 i32.load offset=64 @@ -11484,7 +12684,40 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/FooBar#decode<~lib/nearEntry/Obj> (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/model/FooBar#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11494,21 +12727,25 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -11520,20 +12757,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -11545,87 +12782,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return - end - local.get $4 - local.tee $5 - local.get $2 + end + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -11634,63 +12875,65 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2648 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2680 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/FooBar#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/model/FooBar#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/model/FooBar#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $~lib/array/Array#push (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11726,7 +12969,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11788,7 +13031,7 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.set $8 local.get $4 local.get $8 @@ -11820,28 +13063,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -11853,20 +13100,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -11878,83 +13125,89 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 call $~lib/nearEntry/decodeArray - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $assembly/main/convertFoobars~anonymous|0 (; 172 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/main/convertFoobars~anonymous|0 (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -11981,7 +13234,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#map (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12056,7 +13309,7 @@ end local.get $3 ) - (func $assembly/main/convertFoobars (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/convertFoobars (; 183 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12069,7 +13322,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/test/convertFoobars (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/convertFoobars (; 184 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12081,7 +13334,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12128,11 +13381,11 @@ drop local.get $0 ) - (func $~lib/array/Array#get:length (; 177 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12141,7 +13394,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -12160,7 +13413,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -12170,7 +13423,7 @@ i32.sub call $~lib/array/Array#__get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 181 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 190 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -12182,7 +13435,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/array/Array#__unchecked_set (; 182 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 191 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -12192,7 +13445,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 183 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 192 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -12218,7 +13471,7 @@ i32.store offset=12 end ) - (func $~lib/string/String#substring (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12325,7 +13578,7 @@ local.get $10 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/decimalCount32 (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -12391,7 +13644,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 186 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 195 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12533,7 +13786,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 187 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 196 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12588,12 +13841,12 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 188 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12605,7 +13858,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 190 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 199 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12784,7 +14037,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 191 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 200 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -12837,7 +14090,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 192 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 201 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -12850,7 +14103,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 202 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -12872,11 +14125,11 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#get:length (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 203 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12886,7 +14139,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -12917,7 +14170,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -12939,7 +14192,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/util/number/decimalCount64 (; 198 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 207 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -13012,7 +14265,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 199 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 208 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -13139,7 +14392,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/itoa64 (; 200 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 209 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13226,12 +14479,12 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 201 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 210 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/number/I64#toString (; 202 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/I64#toString (; 211 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -13243,7 +14496,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 203 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 212 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) local.get $0 local.get $1 @@ -13253,7 +14506,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 204 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 213 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 call $~lib/rt/stub/__retain drop @@ -13266,7 +14519,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 205 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13285,7 +14538,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13304,7 +14557,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/number/utoa64 (; 207 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 216 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13369,12 +14622,12 @@ local.get $1 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 208 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 217 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/number/U64#toString (; 209 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/U64#toString (; 218 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -13386,7 +14639,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 210 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 219 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -13404,7 +14657,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 211 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 220 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13426,7 +14679,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 212 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 221 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13448,7 +14701,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 213 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -13464,7 +14717,7 @@ end call $~lib/assemblyscript-json/encoder/JSONEncoder#write ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 214 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 223 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -13477,7 +14730,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13495,7 +14748,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/string/String> (; 216 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/string/String> (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13527,7 +14780,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/base64/base64.encode (; 217 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/base64/base64.encode (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13776,7 +15029,7 @@ call $~lib/rt/stub/__release local.get $6 ) - (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> (; 218 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13812,11 +15065,11 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length (; 219 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -13826,7 +15079,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -13857,7 +15110,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -13867,7 +15120,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -13898,7 +15151,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $~lib/array/Array#pop (; 224 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 233 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -13931,7 +15184,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 225 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 234 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 2072 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -13940,7 +15193,7 @@ call $~lib/array/Array#pop drop ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 226 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 235 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -14003,7 +15256,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -14066,11 +15319,11 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#get:length (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -14079,7 +15332,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -14098,7 +15351,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14157,7 +15410,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14216,7 +15469,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#constructor (; 233 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#constructor (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -14232,11 +15485,11 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Int8Array#get:length (; 234 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:length (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Int8Array#__get (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -14255,7 +15508,7 @@ i32.add i32.load8_s ) - (func $~lib/typedarray/Int8Array#__set (; 236 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#__set (; 245 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -14275,7 +15528,7 @@ local.get $2 i32.store8 ) - (func $~lib/bignum/utils/processU64 (; 237 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/bignum/utils/processU64 (; 246 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14407,7 +15660,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $~lib/bignum/utils/u128toa10 (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/bignum/utils/u128toa10 (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14497,7 +15750,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/bignum/integer/u128/u128#toString (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/bignum/integer/u128/u128#toString (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14737,7 +15990,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14799,11 +16052,11 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -14813,7 +16066,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__get (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__get (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -14844,7 +16097,7 @@ local.get $1 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -14907,11 +16160,11 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#get:length (; 245 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 246 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 255 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -14920,7 +16173,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 247 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 256 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -14939,7 +16192,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 257 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14998,7 +16251,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 249 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 258 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 1160 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -15007,7 +16260,7 @@ call $~lib/array/Array#pop drop ) - (func $assembly/model/FooBar#encode (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/FooBar#encode (; 259 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -15132,7 +16385,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 260 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -15165,7 +16418,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/model/ContainerClass#encode (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/ContainerClass#encode (; 261 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -15212,7 +16465,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 262 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -15245,7 +16498,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 254 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 263 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -15308,13 +16561,13 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.const 816 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/string/String.UTF8.byteLength (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.byteLength (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15437,7 +16690,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/string/String.UTF8.encode (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.encode (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15646,96 +16899,425 @@ local.get $1 if local.get $2 - local.get $3 - i32.le_u - i32.eqz + local.get $3 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 567 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + call $~lib/rt/stub/__realloc + local.set $4 + local.get $5 + i32.const 0 + i32.store8 + else + local.get $2 + local.get $3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 571 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 + local.get $1 + call $~lib/assemblyscript-json/util/index/Buffer.getPtr + local.get $3 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + call $~lib/memory/memory.copy + local.get $1 + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#toString + local.tee $1 + call $~lib/assemblyscript-json/util/index/Buffer.fromString + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/test/__wrapper_convertFoobars (; 269 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 2304 + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> + local.tee $4 + call $assembly/test/convertFoobars + local.set $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $6 + local.get $6 + local.get $5 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $7 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $8 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>,~lib/nearEntry/Obj> (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq if i32.const 0 - i32.const 1424 - i32.const 567 - i32.const 8 - call $~lib/builtins/abort - unreachable + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return end - local.get $4 local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 local.get $4 - i32.sub - i32.const 1 - i32.add - call $~lib/rt/stub/__realloc - local.set $4 + call $~lib/rt/stub/__release local.get $5 - i32.const 0 - i32.store8 + call $~lib/rt/stub/__release else local.get $2 + local.tee $7 local.get $3 - i32.eq - i32.eqz + local.tee $5 + i32.ne if - i32.const 0 - i32.const 1424 - i32.const 571 - i32.const 8 - call $~lib/builtins/abort - unreachable + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release end + local.get $7 + local.set $3 end - local.get $4 + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.get $1 + call $~lib/nearEntry/decodeArray<~lib/string/String> + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + return + ) + (func $~lib/near-runtime-ts/util/util.toUTF8 (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 call $~lib/rt/stub/__retain - local.set $6 + drop + local.get $0 + local.get $1 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $6 + local.get $3 ) - (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.stringToBytes (; 272 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop - i32.const 0 local.get $0 - i32.const 0 + i32.const 1 call $~lib/string/String.UTF8.byteLength - call $~lib/typedarray/Uint8Array#constructor + i32.const 1 + i32.sub local.set $1 - local.get $0 i32.const 0 - call $~lib/string/String.UTF8.encode - local.tee $2 - local.set $3 local.get $1 - call $~lib/assemblyscript-json/util/index/Buffer.getPtr - local.get $3 + call $~lib/typedarray/Uint8Array#constructor + local.set $2 + local.get $2 + i32.load offset=4 local.get $0 i32.const 0 - call $~lib/string/String.UTF8.byteLength + call $~lib/near-runtime-ts/util/util.toUTF8 + local.get $1 call $~lib/memory/memory.copy + local.get $2 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/logging/logging.log (; 273 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $1 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $1 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + ) + (func $assembly/main/getStringArrayLength (; 274 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $1 + i32.const 5024 local.get $1 + call $~lib/number/I32#toString + local.tee $2 + call $~lib/string/String.__concat + local.tee $3 + call $~lib/near-runtime-ts/logging/logging.log + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length local.set $4 local.get $2 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/getStringArrayLength (; 275 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#toString - local.tee $1 - call $~lib/assemblyscript-json/util/index/Buffer.fromString - local.set $2 - local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $assembly/main/getStringArrayLength + local.set $1 + local.get $0 call $~lib/rt/stub/__release - local.get $2 + local.get $1 ) - (func $assembly/test/__wrapper_convertFoobars (; 260 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_getStringArrayLength (; 276 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -15771,10 +17353,10 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 2304 - call $~lib/nearEntry/decode<~lib/array/Array> + i32.const 3520 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>,~lib/nearEntry/Obj> local.tee $4 - call $assembly/test/convertFoobars + call $assembly/test/getStringArrayLength local.set $5 i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor @@ -15782,7 +17364,7 @@ local.get $6 local.get $5 i32.const 0 - call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $6 call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize @@ -15803,8 +17385,6 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release local.get $6 call $~lib/rt/stub/__release local.get $7 @@ -15812,205 +17392,238 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/util/util.toUTF8 (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $assembly/model/ContainerClass#constructor (; 277 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain - drop + i32.eqz + if + i32.const 4 + i32.const 23 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end local.get $0 - local.get $1 - call $~lib/string/String.UTF8.encode - local.tee $2 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release + i32.const 0 + i32.store local.get $0 - call $~lib/rt/stub/__release - local.get $3 ) - (func $~lib/near-runtime-ts/util/util.stringToBytes (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decode (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 1 - i32.sub - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.set $2 - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 0 - call $~lib/near-runtime-ts/util/util.toUTF8 local.get $1 - call $~lib/memory/memory.copy - local.get $2 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/near-runtime-ts/logging/logging.log (; 263 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 call $~lib/rt/stub/__retain drop local.get $0 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $1 - i32.load offset=4 - i64.extend_i32_u - call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $assembly/main/getStringArrayLength (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $1 - i32.const 5024 - local.get $1 - call $~lib/number/I32#toString - local.tee $2 - call $~lib/string/String.__concat - local.tee $3 - call $~lib/near-runtime-ts/logging/logging.log - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $4 + local.set $2 + i32.const 0 + local.set $3 local.get $2 - call $~lib/rt/stub/__release + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $assembly/test/getStringArrayLength (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $assembly/main/getStringArrayLength - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $assembly/test/__wrapper_getStringArrayLength (; 266 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end if - call $~lib/nearEntry/panic + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return end i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - local.get $1 - call $~lib/nearEntry/JSON.parse - local.set $3 + local.set $8 local.get $3 - i32.const 3520 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> - local.tee $4 - call $assembly/test/getStringArrayLength - local.set $5 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $6 - local.get $6 - local.get $5 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2648 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2680 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2552 + i32.const 400 + i32.const 2 + call $~lib/builtins/abort + unreachable + end i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $6 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $7 - local.get $7 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $7 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $8 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release + call $assembly/model/FooBar#constructor + local.tee $9 + local.tee $10 + local.get $8 + local.tee $11 + i32.ne + if + local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $11 + call $~lib/rt/stub/__release + end + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/model/FooBar#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release local.get $6 call $~lib/rt/stub/__release - local.get $7 + local.get $9 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release + local.get $10 ) - (func $assembly/model/ContainerClass#constructor (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 23 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $assembly/model/ContainerClass#decode (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/ContainerClass#_decode (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -16024,7 +17637,7 @@ if (result i32) local.get $1 i32.const 4784 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load @@ -16043,7 +17656,40 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/ContainerClass#decode<~lib/nearEntry/Obj> (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/model/ContainerClass#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16053,21 +17699,25 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -16079,20 +17729,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -16104,87 +17754,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -16193,63 +17847,65 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 5128 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2680 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/ContainerClass#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/model/ContainerClass#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/model/ContainerClass#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $assembly/model/AnotherContainerClass#constructor (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/AnotherContainerClass#constructor (; 282 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -16264,7 +17920,7 @@ i32.store local.get $0 ) - (func $assembly/main/rewrapFoobar (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/rewrapFoobar (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16326,7 +17982,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/test/rewrapFoobar (; 272 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/rewrapFoobar (; 284 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -16338,11 +17994,11 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#get:length (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#get:length (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -16352,7 +18008,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -16383,11 +18039,11 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $~lib/array/Array#get:length (; 276 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 288 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -16397,7 +18053,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -16428,7 +18084,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -16491,7 +18147,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -16554,7 +18210,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/model/AnotherContainerClass#encode (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/AnotherContainerClass#encode (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -16601,7 +18257,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -16634,7 +18290,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/test/__wrapper_rewrapFoobar (; 283 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_rewrapFoobar (; 295 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -16671,7 +18327,7 @@ local.set $3 local.get $3 i32.const 5088 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.tee $4 call $assembly/test/rewrapFoobar local.set $5 @@ -16700,49 +18356,193 @@ call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array<~lib/array/Array>#constructor (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 35 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Value> (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.get $1 + call $~lib/nearEntry/decodeArray + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release + local.get $7 + return ) - (func $~lib/array/Array<~lib/array/Array>#constructor (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 35 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - if - i32.const 656 - i32.const 768 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array<~lib/array/Array>#push (; 285 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#push (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16778,7 +18578,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray<~lib/array/Array> (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/array/Array> (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16840,7 +18640,7 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode<~lib/array/Array> + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Value> local.set $8 local.get $4 local.get $8 @@ -16872,28 +18672,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>,~lib/nearEntry/Obj> (; 300 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -16905,20 +18709,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -16930,83 +18734,89 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 call $~lib/nearEntry/decodeArray<~lib/array/Array> - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $assembly/model/AnotherContainerClass#decode (; 288 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/AnotherContainerClass#_decode (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -17020,7 +18830,7 @@ if (result i32) local.get $1 i32.const 2304 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> + call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>,~lib/nearEntry/Obj> else local.get $0 i32.load @@ -17039,7 +18849,40 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/AnotherContainerClass#decode<~lib/nearEntry/Obj> (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/model/AnotherContainerClass#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17049,21 +18892,25 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -17075,20 +18922,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -17100,87 +18947,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -17189,63 +19040,65 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 5176 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2680 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/AnotherContainerClass#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/model/AnotherContainerClass#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/model/AnotherContainerClass#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $assembly/main/unwrapFoobar (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/unwrapFoobar (; 304 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17265,7 +19118,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/test/unwrapFoobar (; 291 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/unwrapFoobar (; 305 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -17277,7 +19130,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/test/__wrapper_unwrapFoobar (; 292 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_unwrapFoobar (; 306 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -17314,7 +19167,7 @@ local.set $3 local.get $3 i32.const 5088 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.tee $4 call $assembly/test/unwrapFoobar local.set $5 @@ -17354,14 +19207,14 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/main/stringOrNull (; 293 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/main/stringOrNull (; 307 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/rt/stub/__retain ) - (func $assembly/test/stringOrNull (; 294 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/test/stringOrNull (; 308 ;) (type $FUNCSIG$i) (result i32) call $assembly/main/stringOrNull ) - (func $assembly/test/__wrapper_stringOrNull (; 295 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_stringOrNull (; 309 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17411,7 +19264,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/test/stringAliasTest (; 296 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/stringAliasTest (; 310 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17429,7 +19282,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/test/__wrapper_stringAliasTest (; 297 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_stringAliasTest (; 311 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -17466,7 +19319,7 @@ local.set $3 local.get $3 i32.const 5240 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 call $assembly/test/stringAliasTest local.set $5 @@ -17515,7 +19368,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 298 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 312 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -17546,7 +19399,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 299 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 313 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -17576,7 +19429,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 300 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 314 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -17605,22 +19458,247 @@ call $~lib/array/ensureSize local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set - local.get $1 - local.get $3 - i32.ge_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $2 + local.get $2 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set + local.get $1 + local.get $3 + i32.ge_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/decode (; 315 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/nearEntry/JSON.parse + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $3 + call $~lib/rt/stub/__retain + local.set $5 + local.get $5 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $6 + local.get $6 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + return + end + local.get $6 + local.tee $7 + local.get $4 + local.tee $8 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + else + local.get $3 + local.tee $8 + local.get $4 + local.tee $6 + i32.ne + if + local.get $8 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $8 + local.set $4 + end + local.get $4 + local.tee $8 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $8 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $8 + return + end + i32.const 0 + local.set $9 + local.get $4 + local.tee $8 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $8 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $4 + local.tee $8 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $8 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $8 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2648 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2680 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2552 + i32.const 400 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $assembly/model/FooBar#constructor + local.tee $10 + local.tee $11 + local.get $9 + local.tee $12 + i32.ne + if + local.get $11 + call $~lib/rt/stub/__retain + drop + local.get $12 + call $~lib/rt/stub/__release + end + local.get $11 + local.set $9 + local.get $9 + local.get $4 + call $assembly/model/FooBar#decode<~lib/nearEntry/Obj> + local.set $11 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release + local.get $11 ) - (func $assembly/model/FooBar#toJSON (; 301 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/FooBar#toJSON (; 316 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17634,7 +19712,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/model/Nullables#constructor (; 302 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#constructor (; 317 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -17655,7 +19733,7 @@ i32.store offset=8 local.get $0 ) - (func $assembly/model/Nullables#encode (; 303 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/Nullables#encode (; 318 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -17714,7 +19792,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/model/Nullables#serialize (; 304 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#serialize (; 319 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17728,7 +19806,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/model/Nullables#decode (; 305 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/Nullables#_decode (; 320 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -17742,7 +19820,7 @@ if (result i32) local.get $1 i32.const 5240 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load @@ -17762,7 +19840,7 @@ if (result i32) local.get $1 i32.const 3872 - call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> + call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128,~lib/nearEntry/Obj> else local.get $0 i32.load offset=4 @@ -17782,7 +19860,7 @@ if (result i32) local.get $1 i32.const 5680 - call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array,~lib/nearEntry/Obj> else local.get $0 i32.load offset=8 @@ -17801,7 +19879,40 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 306 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/Nullables#decode<~lib/nearEntry/Obj> (; 321 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/model/Nullables#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 322 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17811,21 +19922,28 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/nearEntry/JSON.parse + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + local.tee $5 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $5 i32.const 8 call $~lib/rt/__instanceof end @@ -17837,20 +19955,20 @@ i32.const 0 end if - local.get $0 - call $~lib/rt/stub/__retain - local.set $3 local.get $3 + call $~lib/rt/stub/__retain + local.set $5 + local.get $5 local.get $1 call $~lib/nearEntry/Obj#get - local.set $4 - local.get $4 + local.set $6 + local.get $6 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -17862,87 +19980,95 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 return end + local.get $6 + local.tee $7 local.get $4 - local.tee $5 - local.get $2 - local.tee $6 + local.tee $8 i32.ne if - local.get $5 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $8 call $~lib/rt/stub/__release end + local.get $7 + local.set $4 local.get $5 - local.set $2 - local.get $3 call $~lib/rt/stub/__release - local.get $4 + local.get $6 call $~lib/rt/stub/__release else - local.get $0 + local.get $3 + local.tee $8 + local.get $4 local.tee $6 - local.get $2 - local.tee $4 i32.ne if - local.get $6 + local.get $8 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $6 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $8 + local.set $4 end - local.get $2 - local.tee $6 + local.get $4 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $8 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $8 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $8 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $9 + local.get $4 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $8 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $4 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $8 i32.const 8 call $~lib/rt/__instanceof end @@ -17951,63 +20077,67 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $8 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $6 i32.const 5720 call $~lib/string/String.__concat - local.tee $3 + local.tee $5 i32.const 2680 call $~lib/string/String.__concat - local.tee $5 + local.tee $7 i32.const 2552 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/Nullables#constructor - local.tee $8 - local.tee $9 - local.get $7 local.tee $10 + local.tee $11 + local.get $9 + local.tee $12 i32.ne if - local.get $9 + local.get $11 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $12 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/model/Nullables#decode + local.get $11 local.set $9 + local.get $9 + local.get $4 + call $assembly/model/Nullables#decode<~lib/nearEntry/Obj> + local.set $11 local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $3 + local.get $8 + call $~lib/rt/stub/__release + local.get $6 call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $10 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release local.get $9 + call $~lib/rt/stub/__release + local.get $11 ) - (func $assembly/test/runTest (; 307 ;) (type $FUNCSIG$v) + (func $assembly/test/runTest (; 323 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18036,8 +20166,6 @@ (local $25 i32) (local $26 i32) (local $27 i32) - (local $28 i32) - (local $29 i32) i32.const 5296 call $~lib/near-runtime-ts/logging/logging.log i32.const 0 @@ -18223,43 +20351,40 @@ call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize local.set $10 local.get $10 - call $~lib/nearEntry/JSON.parse - local.set $11 - local.get $11 i32.const 816 - call $~lib/nearEntry/decode - local.set $12 + call $~lib/nearEntry/decode + local.set $11 i32.const 5600 - local.get $12 + local.get $11 call $assembly/model/FooBar#toJSON - local.tee $13 + local.tee $12 call $~lib/string/String.__concat - local.tee $14 + local.tee $13 call $~lib/near-runtime-ts/logging/logging.log local.get $0 i32.load - local.get $12 + local.get $11 i32.load i32.eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 187 + i32.const 186 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 i32.load offset=4 - local.get $12 + local.get $11 i32.load offset=4 i32.eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 188 + i32.const 187 i32.const 2 call $~lib/builtins/abort unreachable @@ -18267,17 +20392,17 @@ local.get $0 i32.load offset=40 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $15 - local.get $12 + local.tee $14 + local.get $11 i32.load offset=40 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $16 + local.tee $15 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 189 + i32.const 188 i32.const 2 call $~lib/builtins/abort unreachable @@ -18286,22 +20411,22 @@ i32.load offset=60 i32.const 0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $17 + local.tee $16 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $18 - local.get $12 + local.tee $17 + local.get $11 i32.load offset=60 i32.const 0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $19 + local.tee $18 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $20 + local.tee $19 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 190 + i32.const 189 i32.const 2 call $~lib/builtins/abort unreachable @@ -18310,17 +20435,17 @@ i32.load offset=44 i32.const 0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $21 + local.tee $20 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $22 + local.tee $21 i32.const 5424 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 191 + i32.const 190 i32.const 2 call $~lib/builtins/abort unreachable @@ -18329,7 +20454,7 @@ i32.load offset=64 i32.const 0 call $~lib/array/Array#__get - local.get $12 + local.get $11 i32.load offset=64 i32.const 0 call $~lib/array/Array#__get @@ -18338,37 +20463,35 @@ if i32.const 0 i32.const 5632 - i32.const 192 + i32.const 191 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 i64.load offset=16 - local.get $12 + local.get $11 i64.load offset=16 i64.eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 193 + i32.const 192 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/Nullables#constructor - local.set $23 - local.get $23 + local.set $22 + local.get $22 call $assembly/model/Nullables#serialize - local.tee $24 - call $~lib/nearEntry/JSON.parse - local.tee $25 + local.tee $23 i32.const 816 - call $~lib/nearEntry/decode - local.set $26 - local.get $26 + call $~lib/nearEntry/decode + local.set $24 + local.get $24 i32.load i32.const 0 call $~lib/string/String.__eq @@ -18376,50 +20499,50 @@ if i32.const 0 i32.const 5632 - i32.const 196 + i32.const 195 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $26 + local.get $24 i32.load offset=4 call $~lib/rt/stub/__retain - local.set $28 + local.set $26 i32.const 0 call $~lib/rt/stub/__retain - local.set $27 - local.get $28 + local.set $25 + local.get $26 i64.load offset=8 - local.get $27 + local.get $25 i64.load offset=8 i64.eq if (result i32) - local.get $28 + local.get $26 i64.load - local.get $27 + local.get $25 i64.load i64.eq else i32.const 0 end - local.set $29 - local.get $27 + local.set $27 + local.get $25 call $~lib/rt/stub/__release - local.get $28 + local.get $26 call $~lib/rt/stub/__release - local.get $29 + local.get $27 i32.const 0 i32.ne i32.eqz if i32.const 0 i32.const 5632 - i32.const 197 + i32.const 196 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $26 + local.get $24 i32.load offset=8 i32.const 0 i32.eq @@ -18427,7 +20550,7 @@ if i32.const 0 i32.const 5632 - i32.const 198 + i32.const 197 i32.const 2 call $~lib/builtins/abort unreachable @@ -18484,14 +20607,11 @@ call $~lib/rt/stub/__release local.get $24 call $~lib/rt/stub/__release - local.get $25 - call $~lib/rt/stub/__release - local.get $26 - call $~lib/rt/stub/__release ) - (func $start (; 308 ;) (type $FUNCSIG$v) + (func $start (; 324 ;) (type $FUNCSIG$v) call $start:~lib/rt/index-stub + call $start:~lib/nearEntry ) - (func $null (; 309 ;) (type $FUNCSIG$v) + (func $null (; 325 ;) (type $FUNCSIG$v) ) ) From 19d06a3f947a9ecca5a9a50de76a9554711b2836 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Mon, 9 Sep 2019 20:04:50 +0300 Subject: [PATCH 22/24] Implement TypedArray#copyWithin (#830) --- examples/n-body/package.json | 2 +- std/assembly/index.d.ts | 2 + std/assembly/typedarray.ts | 69 + tests/compiler/std/dataview.optimized.wat | 2 +- tests/compiler/std/dataview.untouched.wat | 2 +- tests/compiler/std/typedarray.optimized.wat | 2673 ++++++++++------- tests/compiler/std/typedarray.ts | 33 + tests/compiler/std/typedarray.untouched.wat | 2941 +++++++++++-------- 8 files changed, 3506 insertions(+), 2218 deletions(-) diff --git a/examples/n-body/package.json b/examples/n-body/package.json index 0fd4b4dbae..fb97967214 100644 --- a/examples/n-body/package.json +++ b/examples/n-body/package.json @@ -10,7 +10,7 @@ "tsbuild": "tsc -p assembly -t ES2017 -m commonjs --outDir build", "build": "npm run asbuild && npm run tsbuild", "server": "http-server . -o -c-1", - "test": "node --noliftoff --nowasm-tier-up --wasm-lazy-compilation --wasm-no-bounds-checks --expose-gc tests" + "test": "node --wasm-lazy-compilation --wasm-no-bounds-checks --expose-gc tests" }, "devDependencies": { "http-server": "^0.11.1", diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 4ceee6d300..c3e6ef21a2 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1141,6 +1141,8 @@ declare abstract class TypedArray implements ArrayBufferView { slice(begin?: i32, end?: i32): TypedArray; /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */ subarray(begin?: i32, end?: i32): TypedArray; + /** The copyWithin() method copies the sequence of array elements within the array to the position starting at target. The copy is taken from the index positions of the second and third arguments start and end. The end argument is optional and defaults to the length of the array. */ + copyWithin(target: i32, start: i32, end?: i32): this; /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */ reduce(callbackfn: (accumulator: U, value: T, index: i32, self: this) => U, initialValue: U): U; /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */ diff --git a/std/assembly/typedarray.ts b/std/assembly/typedarray.ts index 80a5ec7688..d482bb077b 100644 --- a/std/assembly/typedarray.ts +++ b/std/assembly/typedarray.ts @@ -72,6 +72,10 @@ export class Int8Array extends ArrayBufferView { return SUBARRAY(this, begin, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int8Array { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T, initialValue: T, @@ -188,6 +192,10 @@ export class Uint8Array extends ArrayBufferView { return SUBARRAY(this, begin, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint8Array { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T, initialValue: T, @@ -304,6 +312,10 @@ export class Uint8ClampedArray extends ArrayBufferView { return SUBARRAY(this, start, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint8ClampedArray { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T, initialValue: T, @@ -420,6 +432,10 @@ export class Int16Array extends ArrayBufferView { return SUBARRAY(this, begin, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int16Array { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T, initialValue: T, @@ -536,6 +552,10 @@ export class Uint16Array extends ArrayBufferView { return SUBARRAY(this, begin, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint16Array { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T, initialValue: T, @@ -652,6 +672,10 @@ export class Int32Array extends ArrayBufferView { return SUBARRAY(this, begin, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int32Array { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T, initialValue: T, @@ -768,6 +792,10 @@ export class Uint32Array extends ArrayBufferView { return SUBARRAY(this, begin, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint32Array { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T, initialValue: T, @@ -884,6 +912,10 @@ export class Int64Array extends ArrayBufferView { return SUBARRAY(this, begin, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int64Array { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T, initialValue: T, @@ -1000,6 +1032,10 @@ export class Uint64Array extends ArrayBufferView { return SUBARRAY(this, begin, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint64Array { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T, initialValue: T, @@ -1116,6 +1152,10 @@ export class Float32Array extends ArrayBufferView { return SUBARRAY(this, begin, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Float32Array { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T, initialValue: T, @@ -1232,6 +1272,10 @@ export class Float64Array extends ArrayBufferView { return SUBARRAY(this, begin, end); } + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Float64Array { + return COPY_WITHIN(this, target, start, end); + } + reduce( fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T, initialValue: T, @@ -1361,6 +1405,31 @@ function SUBARRAY( return out; } +// @ts-ignore: decorator +@inline +function COPY_WITHIN( + array: TArray, + target: i32, + start: i32, + end: i32 +): TArray { + var len = array.length; + var dataStart = array.dataStart; + + end = min(end, len); + var to = target < 0 ? max(len + target, 0) : min(target, len); + var from = start < 0 ? max(len + start, 0) : min(start, len); + var last = end < 0 ? max(len + end, 0) : min(end, len); + var count = min(last - from, len - to); + + memory.copy( + dataStart + (to << alignof()), + dataStart + (from << alignof()), + count << alignof() + ); + return array; +} + // @ts-ignore: decorator @inline function REDUCE( diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index b8e883c4a2..b35dc432e1 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1634,7 +1634,7 @@ if i32.const 280 i32.const 376 - i32.const 154 + i32.const 158 i32.const 44 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index ad48564abe..da272de9eb 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -3327,7 +3327,7 @@ if i32.const 280 i32.const 376 - i32.const 154 + i32.const 158 i32.const 44 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 6a6c85dc55..1d600f7397 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -68,15 +68,27 @@ (data (i32.const 888) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c") (data (i32.const 920) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01") (data (i32.const 952) "\02") - (data (i32.const 960) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") - (data (i32.const 992) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\d0\03\00\00\d0\03\00\00\0c\00\00\00\03") - (data (i32.const 1024) "$\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 1080) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\10\04\00\00\10\04\00\00$\00\00\00\t") - (data (i32.const 1112) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") - (data (i32.const 1176) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00h\04\00\00h\04\00\00,\00\00\00\0b") - (data (i32.const 1208) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") - (data (i32.const 1272) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\c8\04\00\00\c8\04\00\00,\00\00\00\0b") - (data (i32.const 1304) "\10\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\003\04\00\00\02\00\00\00\93\04\00\00\02") + (data (i32.const 960) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1000) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data (i32.const 1040) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 1080) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1120) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1160) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1200) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 1240) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1280) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1320) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1360) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 1400) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 1440) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") + (data (i32.const 1472) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\b0\05\00\00\b0\05\00\00\0c\00\00\00\03") + (data (i32.const 1504) "$\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 1560) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\f0\05\00\00\f0\05\00\00$\00\00\00\t") + (data (i32.const 1592) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") + (data (i32.const 1656) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00H\06\00\00H\06\00\00,\00\00\00\0b") + (data (i32.const 1688) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") + (data (i32.const 1752) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\a8\06\00\00\a8\06\00\00,\00\00\00\0b") + (data (i32.const 1784) "\10\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\003\04\00\00\02\00\00\00\93\04\00\00\02") (table $0 123 funcref) (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -674,10 +686,10 @@ if unreachable end - i32.const 1440 + i32.const 1920 i32.const 0 i32.store - i32.const 3008 + i32.const 3488 i32.const 0 i32.store i32.const 0 @@ -691,7 +703,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1440 + i32.const 1920 i32.add i32.const 0 i32.store offset=4 @@ -710,7 +722,7 @@ i32.add i32.const 2 i32.shl - i32.const 1440 + i32.const 1920 i32.add i32.const 0 i32.store offset=96 @@ -728,13 +740,13 @@ br $loop|0 end end - i32.const 1440 - i32.const 3024 + i32.const 1920 + i32.const 3504 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1440 + i32.const 1920 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1375,7 +1387,7 @@ ) (func $~lib/rt/pure/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 1436 + i32.const 1916 i32.gt_u if local.get $0 @@ -1413,7 +1425,7 @@ ) (func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 1304 + i32.const 1784 i32.load i32.gt_u if @@ -1427,7 +1439,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 1308 + i32.const 1788 i32.add i32.load ) @@ -1799,7 +1811,7 @@ ) (func $~lib/rt/pure/__release (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 1436 + i32.const 1916 i32.gt_u if local.get $0 @@ -2455,7 +2467,7 @@ if i32.const 280 i32.const 432 - i32.const 618 + i32.const 638 i32.const 63 call $~lib/builtins/abort unreachable @@ -2479,7 +2491,7 @@ if i32.const 280 i32.const 432 - i32.const 607 + i32.const 627 i32.const 63 call $~lib/builtins/abort unreachable @@ -2602,7 +2614,7 @@ if i32.const 280 i32.const 432 - i32.const 1198 + i32.const 1238 i32.const 63 call $~lib/builtins/abort unreachable @@ -3166,7 +3178,7 @@ if i32.const 280 i32.const 432 - i32.const 1187 + i32.const 1227 i32.const 63 call $~lib/builtins/abort unreachable @@ -3187,7 +3199,7 @@ if i32.const 280 i32.const 432 - i32.const 270 + i32.const 278 i32.const 44 call $~lib/builtins/abort unreachable @@ -3219,7 +3231,7 @@ if i32.const 280 i32.const 432 - i32.const 259 + i32.const 267 i32.const 44 call $~lib/builtins/abort unreachable @@ -3774,7 +3786,113 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int32Array#copyWithin (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $3 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/typedarray/Int32Array#get:length + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $3 + local.get $5 + i32.load offset=4 + local.tee $6 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.tee $0 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + end + local.tee $1 + i32.const 2 + i32.shl + local.get $6 + i32.add + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $4 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $4 + local.get $3 + local.get $4 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $1 + local.get $4 + local.get $0 + i32.sub + local.tee $0 + local.get $1 + local.get $0 + i32.lt_s + select + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $5 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 67 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/rt/pure/__retain drop @@ -3784,7 +3902,7 @@ local.get $1 i32.add ) - (func $~lib/typedarray/Int8Array#reduce (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 68 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3826,7 +3944,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 68 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 69 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -3854,7 +3972,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -3864,7 +3982,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#__set (; 69 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3872,7 +3990,7 @@ if i32.const 280 i32.const 432 - i32.const 154 + i32.const 158 i32.const 44 call $~lib/builtins/abort unreachable @@ -3884,7 +4002,7 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Uint8Array#reduce (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3927,7 +4045,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 71 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 72 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -3956,7 +4074,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -3966,7 +4084,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 72 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 73 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -3995,7 +4113,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -4005,7 +4123,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#__set (; 73 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 74 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4015,7 +4133,7 @@ if i32.const 280 i32.const 432 - i32.const 386 + i32.const 398 i32.const 63 call $~lib/builtins/abort unreachable @@ -4029,7 +4147,7 @@ local.get $2 i32.store16 ) - (func $~lib/typedarray/Int16Array#reduce (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 75 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4073,7 +4191,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 75 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 76 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4101,7 +4219,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -4111,7 +4229,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#__set (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 77 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4121,7 +4239,7 @@ if i32.const 280 i32.const 432 - i32.const 502 + i32.const 518 i32.const 63 call $~lib/builtins/abort unreachable @@ -4135,7 +4253,7 @@ local.get $2 i32.store16 ) - (func $~lib/typedarray/Uint16Array#reduce (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 78 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4179,7 +4297,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 78 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 79 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4207,7 +4325,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -4217,7 +4335,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reduce (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 80 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4262,7 +4380,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 80 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 81 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4289,7 +4407,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -4299,7 +4417,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#__set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 82 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4309,7 +4427,7 @@ if i32.const 280 i32.const 432 - i32.const 734 + i32.const 758 i32.const 63 call $~lib/builtins/abort unreachable @@ -4323,7 +4441,7 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 82 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 83 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4350,7 +4468,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -4360,7 +4478,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#__set (; 83 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 84 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -4370,7 +4488,7 @@ if i32.const 280 i32.const 432 - i32.const 850 + i32.const 878 i32.const 63 call $~lib/builtins/abort unreachable @@ -4384,7 +4502,7 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 84 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 85 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $3 call $~lib/rt/pure/__retain drop @@ -4394,7 +4512,7 @@ local.get $1 i64.add ) - (func $~lib/typedarray/Int64Array#reduce (; 85 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 86 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -4439,7 +4557,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 86 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 87 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4466,7 +4584,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -4476,7 +4594,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#__set (; 87 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 88 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -4486,7 +4604,7 @@ if i32.const 280 i32.const 432 - i32.const 966 + i32.const 998 i32.const 63 call $~lib/builtins/abort unreachable @@ -4500,7 +4618,7 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 88 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 89 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4527,7 +4645,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -4537,7 +4655,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#__set (; 89 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 90 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -4547,7 +4665,7 @@ if i32.const 280 i32.const 432 - i32.const 1082 + i32.const 1118 i32.const 63 call $~lib/builtins/abort unreachable @@ -4561,7 +4679,7 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 90 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 91 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) local.get $3 call $~lib/rt/pure/__retain drop @@ -4571,7 +4689,7 @@ local.get $1 f32.add ) - (func $~lib/typedarray/Float32Array#reduce (; 91 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 92 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) (local $1 f32) (local $2 i32) (local $3 i32) @@ -4615,7 +4733,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 92 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 93 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4641,7 +4759,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -4651,7 +4769,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 93 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 94 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) local.get $3 call $~lib/rt/pure/__retain drop @@ -4661,7 +4779,7 @@ local.get $1 f64.add ) - (func $~lib/typedarray/Float64Array#reduce (; 94 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 95 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 f64) (local $2 i32) (local $3 i32) @@ -4705,7 +4823,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 95 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 96 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4731,7 +4849,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -4741,7 +4859,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reduceRight (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4782,7 +4900,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 97 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 98 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4810,7 +4928,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -4820,7 +4938,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 99 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4862,7 +4980,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 99 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 100 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4891,7 +5009,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -4901,7 +5019,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 100 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 101 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -4930,7 +5048,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -4940,7 +5058,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reduceRight (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4983,7 +5101,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 102 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 103 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5011,7 +5129,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -5021,7 +5139,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5064,7 +5182,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 104 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 105 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5092,7 +5210,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -5102,7 +5220,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reduceRight (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 106 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5146,7 +5264,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 106 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 107 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5173,7 +5291,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -5183,7 +5301,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 107 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 108 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5210,7 +5328,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -5220,7 +5338,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reduceRight (; 108 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 109 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -5264,7 +5382,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 109 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 110 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5291,7 +5409,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -5301,7 +5419,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 110 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 111 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5328,7 +5446,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -5338,7 +5456,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reduceRight (; 111 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 112 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) (local $1 f32) (local $2 i32) (local $3 i32) @@ -5381,7 +5499,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 112 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 113 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5407,7 +5525,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -5417,7 +5535,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reduceRight (; 113 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 114 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 f64) (local $2 i32) (local $3 i32) @@ -5460,7 +5578,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 114 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 115 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -5486,7 +5604,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -5496,7 +5614,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 115 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 116 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -5506,7 +5624,7 @@ local.get $0 i32.mul ) - (func $~lib/typedarray/Int8Array#map (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5561,7 +5679,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 117 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 118 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5591,7 +5709,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -5604,7 +5722,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -5617,7 +5735,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -5629,7 +5747,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#map (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5684,7 +5802,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Uint8Array#__get (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5692,7 +5810,7 @@ if i32.const 280 i32.const 432 - i32.const 143 + i32.const 147 i32.const 44 call $~lib/builtins/abort unreachable @@ -5703,7 +5821,7 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 120 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 121 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5733,7 +5851,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -5746,7 +5864,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -5759,7 +5877,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -5771,7 +5889,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 121 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5826,7 +5944,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 122 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 123 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5856,7 +5974,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -5869,7 +5987,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -5882,7 +6000,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -5894,7 +6012,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#map (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5956,7 +6074,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Int16Array#__get (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 125 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5966,7 +6084,7 @@ if i32.const 280 i32.const 432 - i32.const 375 + i32.const 387 i32.const 63 call $~lib/builtins/abort unreachable @@ -5979,7 +6097,7 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 125 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 126 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6009,7 +6127,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -6022,7 +6140,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -6035,7 +6153,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -6047,7 +6165,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#map (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6109,7 +6227,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Uint16Array#__get (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6119,7 +6237,7 @@ if i32.const 280 i32.const 432 - i32.const 491 + i32.const 507 i32.const 63 call $~lib/builtins/abort unreachable @@ -6132,7 +6250,7 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 128 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 129 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6162,7 +6280,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -6175,7 +6293,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -6188,7 +6306,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -6200,7 +6318,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#map (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 130 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6262,7 +6380,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 130 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 131 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6292,7 +6410,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -6305,7 +6423,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -6318,7 +6436,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -6330,7 +6448,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#map (; 131 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 132 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6392,7 +6510,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Uint32Array#__get (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6402,7 +6520,7 @@ if i32.const 280 i32.const 432 - i32.const 723 + i32.const 747 i32.const 63 call $~lib/builtins/abort unreachable @@ -6415,7 +6533,7 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 133 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 134 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6445,7 +6563,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -6458,7 +6576,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -6471,7 +6589,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -6483,7 +6601,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 134 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 135 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) local.get $2 call $~lib/rt/pure/__retain drop @@ -6493,7 +6611,7 @@ local.get $0 i64.mul ) - (func $~lib/typedarray/Int64Array#map (; 135 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 136 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6555,7 +6673,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Int64Array#__get (; 136 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 137 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -6565,7 +6683,7 @@ if i32.const 280 i32.const 432 - i32.const 839 + i32.const 867 i32.const 63 call $~lib/builtins/abort unreachable @@ -6578,7 +6696,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 137 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 138 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6608,7 +6726,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -6621,7 +6739,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -6634,7 +6752,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -6646,7 +6764,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#map (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6708,7 +6826,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Uint64Array#__get (; 139 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 140 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -6718,7 +6836,7 @@ if i32.const 280 i32.const 432 - i32.const 955 + i32.const 987 i32.const 63 call $~lib/builtins/abort unreachable @@ -6731,7 +6849,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 140 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 141 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6761,7 +6879,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -6774,7 +6892,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -6787,7 +6905,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -6799,7 +6917,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 141 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 142 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) local.get $2 call $~lib/rt/pure/__retain drop @@ -6809,7 +6927,7 @@ local.get $0 f32.mul ) - (func $~lib/typedarray/Float32Array#map (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6871,7 +6989,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/typedarray/Float32Array#__get (; 143 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 144 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -6881,7 +6999,7 @@ if i32.const 280 i32.const 432 - i32.const 1071 + i32.const 1107 i32.const 63 call $~lib/builtins/abort unreachable @@ -6894,7 +7012,7 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 144 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 145 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6924,7 +7042,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -6937,7 +7055,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -6950,7 +7068,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -6962,7 +7080,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 145 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 146 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) local.get $2 call $~lib/rt/pure/__retain drop @@ -6972,7 +7090,7 @@ local.get $0 f64.mul ) - (func $~lib/typedarray/Float64Array#map (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7034,7 +7152,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 147 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 148 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7064,7 +7182,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -7077,7 +7195,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -7090,7 +7208,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -7102,7 +7220,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 148 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7116,7 +7234,7 @@ i32.const 2 i32.gt_s ) - (func $~lib/rt/tlsf/reallocateBlock (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 150 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7238,7 +7356,7 @@ call $~lib/rt/rtrace/onfree local.get $3 ) - (func $~lib/rt/tlsf/__realloc (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -7274,7 +7392,7 @@ i32.const 16 i32.add ) - (func $~lib/typedarray/Int8Array#filter (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#filter (; 152 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7367,7 +7485,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> (; 152 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> (; 153 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7402,7 +7520,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -7414,7 +7532,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -7427,7 +7545,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -7440,7 +7558,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -7453,7 +7571,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -7465,7 +7583,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 154 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7477,7 +7595,7 @@ i32.const 2 i32.gt_u ) - (func $~lib/typedarray/Uint8Array#filter (; 154 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#filter (; 155 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7570,7 +7688,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> (; 155 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> (; 156 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7605,7 +7723,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -7617,7 +7735,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -7630,7 +7748,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -7643,7 +7761,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -7656,7 +7774,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -7668,7 +7786,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#filter (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#filter (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7761,7 +7879,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> (; 157 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> (; 158 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7796,7 +7914,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -7808,7 +7926,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -7821,7 +7939,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -7834,7 +7952,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -7847,7 +7965,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -7859,7 +7977,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 158 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 159 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -7873,7 +7991,7 @@ i32.const 2 i32.gt_s ) - (func $~lib/typedarray/Int16Array#filter (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#filter (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7975,7 +8093,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (; 160 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (; 161 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8010,7 +8128,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -8022,7 +8140,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -8035,7 +8153,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -8048,7 +8166,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -8061,7 +8179,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -8073,7 +8191,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 162 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8085,7 +8203,7 @@ i32.const 2 i32.gt_u ) - (func $~lib/typedarray/Uint16Array#filter (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#filter (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8187,7 +8305,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> (; 163 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> (; 164 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8222,7 +8340,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -8234,7 +8352,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -8247,7 +8365,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -8260,7 +8378,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -8273,7 +8391,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -8285,7 +8403,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 164 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 165 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8295,7 +8413,7 @@ i32.const 2 i32.gt_s ) - (func $~lib/typedarray/Int32Array#filter (; 165 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#filter (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8397,7 +8515,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (; 166 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (; 167 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8432,7 +8550,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -8444,7 +8562,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -8457,7 +8575,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -8470,7 +8588,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -8483,7 +8601,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -8495,7 +8613,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 167 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 168 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8505,7 +8623,7 @@ i32.const 2 i32.gt_u ) - (func $~lib/typedarray/Uint32Array#filter (; 168 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#filter (; 169 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8607,7 +8725,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (; 169 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (; 170 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8642,7 +8760,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -8654,7 +8772,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -8667,7 +8785,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -8680,7 +8798,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -8693,7 +8811,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -8705,7 +8823,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 170 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 171 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8715,7 +8833,7 @@ i64.const 2 i64.gt_s ) - (func $~lib/typedarray/Int64Array#filter (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#filter (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8817,7 +8935,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> (; 172 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> (; 173 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8852,7 +8970,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -8864,7 +8982,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -8877,7 +8995,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -8890,7 +9008,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -8903,7 +9021,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -8915,7 +9033,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 173 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 174 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -8925,7 +9043,7 @@ i64.const 2 i64.gt_u ) - (func $~lib/typedarray/Uint64Array#filter (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#filter (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9027,7 +9145,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> (; 175 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> (; 176 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9062,7 +9180,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -9074,7 +9192,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -9087,7 +9205,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -9100,7 +9218,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -9113,7 +9231,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -9125,7 +9243,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 176 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 177 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9135,7 +9253,7 @@ f32.const 2 f32.gt ) - (func $~lib/typedarray/Float32Array#filter (; 177 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#filter (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9237,7 +9355,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> (; 178 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> (; 179 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9272,7 +9390,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -9284,7 +9402,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -9297,7 +9415,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -9310,7 +9428,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -9323,7 +9441,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -9335,7 +9453,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 179 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 180 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9345,7 +9463,7 @@ f64.const 2 f64.gt ) - (func $~lib/typedarray/Float64Array#filter (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#filter (; 181 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9447,7 +9565,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> (; 181 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> (; 182 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9482,7 +9600,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -9494,7 +9612,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -9507,7 +9625,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -9520,7 +9638,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -9533,7 +9651,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -9545,7 +9663,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 182 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 183 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9557,7 +9675,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int8Array#some (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9607,7 +9725,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9618,7 +9736,7 @@ i32.and i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 185 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 186 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9644,7 +9762,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -9655,7 +9773,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -9665,7 +9783,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#some (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9715,7 +9833,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 187 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 188 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9741,7 +9859,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -9752,7 +9870,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -9762,7 +9880,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 188 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 189 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9788,7 +9906,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -9799,7 +9917,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -9809,7 +9927,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 189 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 190 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9821,7 +9939,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#some (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9874,7 +9992,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -9885,7 +10003,7 @@ i32.and i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 192 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 193 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -9911,7 +10029,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -9922,7 +10040,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -9932,7 +10050,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#some (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9985,7 +10103,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 194 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 195 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10011,7 +10129,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -10022,7 +10140,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -10032,7 +10150,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 196 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10042,7 +10160,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int32Array#some (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10095,7 +10213,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 197 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 198 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10104,7 +10222,7 @@ local.get $0 i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 198 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 199 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10130,7 +10248,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -10141,7 +10259,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -10151,7 +10269,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 199 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 200 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10177,7 +10295,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -10188,7 +10306,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -10198,7 +10316,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 200 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 201 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10208,7 +10326,7 @@ i64.const 2 i64.eq ) - (func $~lib/typedarray/Int64Array#some (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 202 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10261,7 +10379,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 202 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 203 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10271,7 +10389,7 @@ i64.const 0 i64.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 203 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 204 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10297,7 +10415,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -10308,7 +10426,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -10318,7 +10436,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 204 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 205 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10344,7 +10462,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -10355,7 +10473,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -10365,7 +10483,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 205 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 206 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10375,7 +10493,7 @@ f32.const 2 f32.eq ) - (func $~lib/typedarray/Float32Array#some (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10428,7 +10546,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 207 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 208 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10438,7 +10556,7 @@ f32.const 0 f32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 208 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 209 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10464,7 +10582,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -10475,7 +10593,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -10485,7 +10603,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 209 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 210 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10495,7 +10613,7 @@ f64.const 2 f64.eq ) - (func $~lib/typedarray/Float64Array#some (; 210 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10548,7 +10666,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 211 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 212 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10558,7 +10676,7 @@ f64.const 0 f64.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 212 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 213 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10584,7 +10702,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -10595,7 +10713,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -10605,7 +10723,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#findIndex (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 214 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10656,7 +10774,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10668,7 +10786,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 215 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 216 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10695,7 +10813,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -10708,7 +10826,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -10718,7 +10836,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#findIndex (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10769,7 +10887,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 217 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 218 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10796,7 +10914,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -10809,7 +10927,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -10819,7 +10937,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 218 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 219 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10846,7 +10964,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -10859,7 +10977,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -10869,7 +10987,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#findIndex (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10923,7 +11041,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 220 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 221 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -10935,7 +11053,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 221 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 222 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -10962,7 +11080,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -10975,7 +11093,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -10985,7 +11103,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#findIndex (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11039,7 +11157,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 223 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 224 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -11066,7 +11184,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -11079,7 +11197,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -11089,7 +11207,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#findIndex (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11143,7 +11261,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 226 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11153,7 +11271,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 226 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 227 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -11180,7 +11298,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -11193,7 +11311,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -11203,7 +11321,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 227 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 228 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -11230,7 +11348,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -11243,7 +11361,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -11253,7 +11371,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#findIndex (; 228 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11307,7 +11425,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 229 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 230 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11317,7 +11435,7 @@ i64.const 4 i64.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 230 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 231 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -11344,7 +11462,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -11357,7 +11475,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -11367,7 +11485,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 231 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 232 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -11394,7 +11512,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -11407,7 +11525,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -11417,7 +11535,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#findIndex (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 233 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11471,7 +11589,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 233 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 234 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11481,7 +11599,7 @@ f32.const 4 f32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 234 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 235 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -11508,7 +11626,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -11521,7 +11639,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -11531,7 +11649,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#findIndex (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11585,7 +11703,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 236 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 237 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11595,7 +11713,7 @@ f64.const 4 f64.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 237 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 238 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -11622,7 +11740,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -11635,7 +11753,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -11645,7 +11763,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11660,7 +11778,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#every (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11710,7 +11828,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 240 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 241 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -11736,7 +11854,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -11747,7 +11865,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -11757,7 +11875,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11768,7 +11886,7 @@ i32.and i32.eqz ) - (func $~lib/typedarray/Uint8Array#every (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11818,7 +11936,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 243 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 244 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -11844,7 +11962,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -11855,7 +11973,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -11865,7 +11983,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 244 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 245 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -11891,7 +12009,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -11902,7 +12020,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -11912,7 +12030,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -11927,7 +12045,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#every (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11979,7 +12097,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 247 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 248 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -12005,7 +12123,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -12016,7 +12134,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -12026,7 +12144,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#every (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 249 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12078,7 +12196,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 249 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 250 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -12104,7 +12222,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -12115,7 +12233,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -12125,7 +12243,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -12136,7 +12254,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#every (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12188,7 +12306,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 252 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 253 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -12214,7 +12332,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -12225,7 +12343,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -12235,7 +12353,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 253 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 254 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -12261,7 +12379,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -12272,7 +12390,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -12282,7 +12400,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 254 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 255 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -12294,7 +12412,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#every (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12346,7 +12464,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 256 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 257 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -12372,7 +12490,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -12383,7 +12501,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -12393,7 +12511,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 257 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 258 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -12405,7 +12523,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 258 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 259 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -12431,7 +12549,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -12442,7 +12560,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -12452,7 +12570,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/math/NativeMathf.mod (; 259 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 260 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12601,7 +12719,7 @@ local.get $0 f32.mul ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 260 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 261 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -12612,7 +12730,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#every (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12664,7 +12782,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 262 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 263 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -12690,7 +12808,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -12701,7 +12819,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -12711,7 +12829,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/math/NativeMath.mod (; 263 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 264 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -12867,7 +12985,7 @@ local.get $0 f64.mul ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 264 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 265 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -12878,7 +12996,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#every (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12930,7 +13048,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 266 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 267 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 3 @@ -12956,7 +13074,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -12967,7 +13085,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -12977,14 +13095,14 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 267 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 268 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 i32.and - i32.const 1008 + i32.const 1488 local.get $1 call $~lib/array/Array#__get i32.const 255 @@ -12993,7 +13111,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -13004,7 +13122,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -13015,7 +13133,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -13027,7 +13145,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#forEach (; 268 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Int8Array#forEach (; 269 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13065,7 +13183,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 269 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 270 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -13078,7 +13196,7 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get i32.const 24 @@ -13088,7 +13206,7 @@ call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get i32.const 24 @@ -13098,7 +13216,7 @@ call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get i32.const 24 @@ -13114,7 +13232,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -13124,7 +13242,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#forEach (; 270 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 271 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13163,7 +13281,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 271 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 272 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -13176,7 +13294,7 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get i32.const 255 @@ -13184,7 +13302,7 @@ call $~lib/typedarray/Uint8Array#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get i32.const 255 @@ -13192,7 +13310,7 @@ call $~lib/typedarray/Uint8Array#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get i32.const 255 @@ -13207,7 +13325,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -13217,7 +13335,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 272 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 273 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -13230,7 +13348,7 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get i32.const 255 @@ -13238,7 +13356,7 @@ call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get i32.const 255 @@ -13246,7 +13364,7 @@ call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get i32.const 255 @@ -13261,7 +13379,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -13271,14 +13389,14 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 273 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 274 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop local.get $0 i32.const 65535 i32.and - i32.const 1008 + i32.const 1488 local.get $1 call $~lib/array/Array#__get i32.const 65535 @@ -13287,7 +13405,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -13298,7 +13416,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -13309,7 +13427,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -13321,7 +13439,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#forEach (; 274 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Int16Array#forEach (; 275 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13361,7 +13479,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 275 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 276 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -13374,7 +13492,7 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get i32.const 16 @@ -13384,7 +13502,7 @@ call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get i32.const 16 @@ -13394,7 +13512,7 @@ call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get i32.const 16 @@ -13410,7 +13528,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -13420,7 +13538,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#forEach (; 276 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 277 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13460,7 +13578,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 277 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 278 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -13473,7 +13591,7 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get i32.const 65535 @@ -13481,7 +13599,7 @@ call $~lib/typedarray/Uint16Array#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get i32.const 65535 @@ -13489,7 +13607,7 @@ call $~lib/typedarray/Uint16Array#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get i32.const 65535 @@ -13503,7 +13621,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -13513,11 +13631,11 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 278 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 279 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop - i32.const 1008 + i32.const 1488 local.get $1 call $~lib/array/Array#__get local.get $0 @@ -13525,7 +13643,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -13536,7 +13654,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -13547,7 +13665,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -13559,7 +13677,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#forEach (; 279 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 280 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13601,7 +13719,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 280 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 281 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -13614,19 +13732,19 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -13639,7 +13757,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -13649,7 +13767,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 281 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 282 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -13662,19 +13780,19 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -13687,7 +13805,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -13697,12 +13815,12 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 282 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 283 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop local.get $0 - i32.const 1008 + i32.const 1488 local.get $1 call $~lib/array/Array#__get i64.extend_i32_s @@ -13710,7 +13828,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -13721,7 +13839,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -13732,7 +13850,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -13744,7 +13862,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#forEach (; 283 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 284 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13786,7 +13904,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 284 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 285 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -13799,21 +13917,21 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s @@ -13827,7 +13945,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -13837,7 +13955,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 285 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 286 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -13850,21 +13968,21 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s @@ -13878,7 +13996,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -13888,12 +14006,12 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 286 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 287 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop local.get $0 - i32.const 1008 + i32.const 1488 local.get $1 call $~lib/array/Array#__get f32.convert_i32_s @@ -13901,7 +14019,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -13912,7 +14030,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -13923,7 +14041,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -13935,7 +14053,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#forEach (; 287 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Float32Array#forEach (; 288 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13975,7 +14093,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 288 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 289 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -13988,21 +14106,21 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get f32.convert_i32_s @@ -14015,7 +14133,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -14025,12 +14143,12 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 289 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 290 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop local.get $0 - i32.const 1008 + i32.const 1488 local.get $1 call $~lib/array/Array#__get f64.convert_i32_s @@ -14038,7 +14156,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -14049,7 +14167,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -14060,7 +14178,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -14072,7 +14190,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#forEach (; 290 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Float64Array#forEach (; 291 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14112,7 +14230,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 291 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 292 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -14125,21 +14243,21 @@ global.set $std/typedarray/forEachSelf local.get $0 i32.const 0 - i32.const 1008 + i32.const 1488 i32.const 0 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set local.get $0 i32.const 1 - i32.const 1008 + i32.const 1488 i32.const 1 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set local.get $0 i32.const 2 - i32.const 1008 + i32.const 1488 i32.const 2 call $~lib/array/Array#__get f64.convert_i32_s @@ -14152,7 +14270,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -14162,7 +14280,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reverse (; 292 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 293 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14214,7 +14332,7 @@ end local.get $3 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 293 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 294 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14222,7 +14340,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -14296,7 +14414,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -14324,7 +14442,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -14337,7 +14455,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -14350,7 +14468,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -14363,7 +14481,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -14383,7 +14501,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reverse (; 294 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 295 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14435,7 +14553,7 @@ end local.get $3 ) - (func $~lib/typedarray/Uint8Array#subarray (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14516,7 +14634,7 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 296 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 297 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14524,7 +14642,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -14592,7 +14710,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -14619,7 +14737,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -14632,7 +14750,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -14645,7 +14763,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -14658,7 +14776,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -14678,7 +14796,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14759,7 +14877,7 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 298 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 299 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14767,7 +14885,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -14835,7 +14953,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -14862,7 +14980,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -14875,7 +14993,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -14888,7 +15006,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -14901,7 +15019,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -14921,7 +15039,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reverse (; 299 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 300 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14978,7 +15096,7 @@ end local.get $3 ) - (func $~lib/typedarray/Int16Array#subarray (; 300 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15063,7 +15181,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 301 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 302 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15071,7 +15189,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -15145,7 +15263,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -15172,7 +15290,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -15185,7 +15303,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -15198,7 +15316,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -15211,7 +15329,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -15231,7 +15349,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#reverse (; 302 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 303 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15288,7 +15406,7 @@ end local.get $3 ) - (func $~lib/typedarray/Uint16Array#subarray (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 304 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15373,7 +15491,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 304 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 305 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15381,7 +15499,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -15449,7 +15567,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -15476,7 +15594,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -15489,7 +15607,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -15502,7 +15620,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -15515,7 +15633,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -15535,7 +15653,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reverse (; 305 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 306 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15592,7 +15710,7 @@ end local.get $3 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 306 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 307 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15600,7 +15718,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -15662,7 +15780,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -15690,7 +15808,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -15703,7 +15821,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -15716,7 +15834,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -15729,7 +15847,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -15749,7 +15867,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#subarray (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 308 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15834,7 +15952,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 308 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 309 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15842,7 +15960,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -15904,7 +16022,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -15931,7 +16049,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -15944,7 +16062,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -15957,7 +16075,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -15970,7 +16088,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -15990,7 +16108,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reverse (; 309 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 310 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16047,7 +16165,7 @@ end local.get $3 ) - (func $~lib/typedarray/Int64Array#subarray (; 310 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 311 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16132,7 +16250,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 311 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 312 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16140,7 +16258,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -16205,7 +16323,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -16232,7 +16350,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -16245,7 +16363,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -16258,7 +16376,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -16271,7 +16389,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -16291,7 +16409,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#subarray (; 312 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 313 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16376,7 +16494,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 313 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 314 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16384,7 +16502,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -16449,7 +16567,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -16476,7 +16594,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -16489,7 +16607,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -16502,7 +16620,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -16515,7 +16633,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -16535,7 +16653,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reverse (; 314 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 315 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16592,7 +16710,7 @@ end local.get $3 ) - (func $~lib/typedarray/Float32Array#subarray (; 315 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 316 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16677,7 +16795,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 316 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 317 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16685,7 +16803,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -16750,7 +16868,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -16777,7 +16895,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -16790,7 +16908,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -16803,7 +16921,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -16816,7 +16934,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -16836,7 +16954,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reverse (; 317 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 318 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16893,7 +17011,7 @@ end local.get $3 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 318 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 319 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16901,7 +17019,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1096 + i32.const 1576 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -16966,7 +17084,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -16994,7 +17112,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -17007,7 +17125,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -17020,7 +17138,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -17033,7 +17151,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -17053,7 +17171,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#indexOf (; 319 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#indexOf (; 320 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 @@ -17128,7 +17246,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int8Array#lastIndexOf (; 320 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf (; 321 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $0 @@ -17197,7 +17315,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 321 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 322 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -17218,13 +17336,13 @@ local.get $2 call $~lib/typedarray/Int8Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 322 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 323 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -17264,7 +17382,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -17278,7 +17396,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -17292,7 +17410,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -17306,7 +17424,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -17320,7 +17438,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -17334,7 +17452,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -17348,7 +17466,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -17362,7 +17480,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -17376,7 +17494,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -17389,7 +17507,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -17404,7 +17522,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -17419,7 +17537,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -17434,7 +17552,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -17448,7 +17566,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -17462,7 +17580,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -17476,7 +17594,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -17490,7 +17608,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -17504,7 +17622,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -17518,7 +17636,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -17536,7 +17654,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -17548,7 +17666,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -17562,7 +17680,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -17576,7 +17694,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -17590,7 +17708,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -17604,7 +17722,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -17618,7 +17736,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -17632,7 +17750,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -17646,13 +17764,13 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 323 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 324 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -17690,7 +17808,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -17704,7 +17822,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -17718,7 +17836,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -17732,7 +17850,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -17746,7 +17864,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -17760,7 +17878,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -17774,7 +17892,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -17788,7 +17906,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -17802,7 +17920,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -17815,7 +17933,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -17830,7 +17948,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -17845,7 +17963,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -17860,7 +17978,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -17874,7 +17992,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -17888,7 +18006,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -17902,7 +18020,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -17916,7 +18034,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -17930,7 +18048,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -17944,7 +18062,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -17961,7 +18079,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -17973,7 +18091,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -17987,7 +18105,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -18001,7 +18119,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -18015,7 +18133,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -18029,7 +18147,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -18043,7 +18161,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -18057,7 +18175,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -18071,13 +18189,13 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 324 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 325 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -18115,7 +18233,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -18129,7 +18247,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -18143,7 +18261,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -18157,7 +18275,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -18171,7 +18289,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -18185,7 +18303,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -18199,7 +18317,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -18213,7 +18331,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -18227,7 +18345,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -18240,7 +18358,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -18255,7 +18373,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -18270,7 +18388,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -18285,7 +18403,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -18299,7 +18417,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -18313,7 +18431,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -18327,7 +18445,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -18341,7 +18459,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -18355,7 +18473,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -18369,7 +18487,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -18386,7 +18504,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -18398,7 +18516,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -18412,7 +18530,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -18426,7 +18544,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -18440,7 +18558,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -18454,7 +18572,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -18468,7 +18586,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -18482,7 +18600,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -18496,7 +18614,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#indexOf (; 325 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#indexOf (; 326 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 @@ -18573,7 +18691,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int16Array#lastIndexOf (; 326 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf (; 327 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 @@ -18644,7 +18762,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 327 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 328 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -18665,13 +18783,13 @@ local.get $2 call $~lib/typedarray/Int16Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 328 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 329 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -18711,7 +18829,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -18725,7 +18843,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -18739,7 +18857,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -18753,7 +18871,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -18767,7 +18885,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -18781,7 +18899,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -18795,7 +18913,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -18809,7 +18927,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -18823,7 +18941,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -18836,7 +18954,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -18851,7 +18969,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -18866,7 +18984,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -18881,7 +18999,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -18895,7 +19013,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -18909,7 +19027,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -18923,7 +19041,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -18937,7 +19055,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -18951,7 +19069,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -18965,7 +19083,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -18982,7 +19100,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -18994,7 +19112,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -19008,7 +19126,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -19022,7 +19140,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -19036,7 +19154,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -19050,7 +19168,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -19064,7 +19182,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -19078,7 +19196,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -19092,13 +19210,13 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 329 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 330 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -19136,7 +19254,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -19150,7 +19268,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -19164,7 +19282,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -19178,7 +19296,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -19192,7 +19310,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -19206,7 +19324,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -19220,7 +19338,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -19234,7 +19352,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -19248,7 +19366,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -19261,7 +19379,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -19276,7 +19394,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -19291,7 +19409,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -19306,7 +19424,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -19320,7 +19438,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -19334,7 +19452,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -19348,7 +19466,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -19362,7 +19480,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -19376,7 +19494,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -19390,7 +19508,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -19407,7 +19525,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -19419,7 +19537,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -19433,7 +19551,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -19447,7 +19565,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -19461,7 +19579,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -19475,7 +19593,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -19489,7 +19607,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -19503,7 +19621,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -19517,7 +19635,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#indexOf (; 330 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#indexOf (; 331 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 @@ -19592,7 +19710,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int32Array#lastIndexOf (; 331 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf (; 332 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 local.get $0 @@ -19661,7 +19779,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 332 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 333 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -19682,13 +19800,13 @@ local.get $2 call $~lib/typedarray/Int32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 333 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 334 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -19724,7 +19842,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -19738,7 +19856,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -19752,7 +19870,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -19766,7 +19884,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -19780,7 +19898,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -19794,7 +19912,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -19808,7 +19926,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -19822,7 +19940,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -19836,7 +19954,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -19849,7 +19967,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -19864,7 +19982,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -19879,7 +19997,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -19894,7 +20012,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -19908,7 +20026,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -19922,7 +20040,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -19936,7 +20054,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -19950,7 +20068,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -19964,7 +20082,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -19978,7 +20096,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -19996,7 +20114,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -20008,7 +20126,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -20022,7 +20140,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -20036,7 +20154,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -20050,7 +20168,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -20064,7 +20182,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -20078,7 +20196,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -20092,7 +20210,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -20106,13 +20224,13 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 334 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 335 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -20148,7 +20266,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -20162,7 +20280,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -20176,7 +20294,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -20190,7 +20308,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -20204,7 +20322,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -20218,7 +20336,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -20232,7 +20350,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -20246,7 +20364,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -20260,7 +20378,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -20273,7 +20391,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -20288,7 +20406,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -20303,7 +20421,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -20318,7 +20436,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -20332,7 +20450,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -20346,7 +20464,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -20360,7 +20478,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -20374,7 +20492,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -20388,7 +20506,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -20402,7 +20520,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -20419,7 +20537,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -20431,7 +20549,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -20445,7 +20563,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -20459,7 +20577,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -20473,7 +20591,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -20487,7 +20605,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -20501,7 +20619,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -20515,7 +20633,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -20529,7 +20647,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#indexOf (; 335 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#indexOf (; 336 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 @@ -20604,7 +20722,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int64Array#lastIndexOf (; 336 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf (; 337 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $0 @@ -20673,7 +20791,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 337 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 338 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -20694,13 +20812,13 @@ local.get $2 call $~lib/typedarray/Int64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 338 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 339 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -20737,7 +20855,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -20751,7 +20869,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -20765,7 +20883,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -20779,7 +20897,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -20793,7 +20911,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -20807,7 +20925,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -20821,7 +20939,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -20835,7 +20953,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -20849,7 +20967,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -20862,7 +20980,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -20877,7 +20995,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -20892,7 +21010,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -20907,7 +21025,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -20921,7 +21039,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -20935,7 +21053,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -20949,7 +21067,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -20963,7 +21081,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -20977,7 +21095,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -20991,7 +21109,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -21008,7 +21126,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -21020,7 +21138,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -21034,7 +21152,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -21048,7 +21166,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -21062,7 +21180,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -21076,7 +21194,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -21090,7 +21208,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -21104,7 +21222,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -21118,13 +21236,13 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 339 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 340 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -21161,7 +21279,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -21175,7 +21293,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -21189,7 +21307,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -21203,7 +21321,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -21217,7 +21335,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -21231,7 +21349,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -21245,7 +21363,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -21259,7 +21377,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -21273,7 +21391,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -21286,7 +21404,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -21301,7 +21419,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -21316,7 +21434,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -21331,7 +21449,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -21345,7 +21463,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -21359,7 +21477,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -21373,7 +21491,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -21387,7 +21505,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -21401,7 +21519,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -21415,7 +21533,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -21432,7 +21550,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -21444,7 +21562,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -21458,7 +21576,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -21472,7 +21590,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -21486,7 +21604,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -21500,7 +21618,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -21514,7 +21632,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -21528,7 +21646,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -21542,7 +21660,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#indexOf (; 340 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#indexOf (; 341 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -21617,7 +21735,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float32Array#lastIndexOf (; 341 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf (; 342 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $0 @@ -21686,7 +21804,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 342 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 343 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -21707,13 +21825,13 @@ local.get $2 call $~lib/typedarray/Float32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 343 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 344 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -21750,7 +21868,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -21764,7 +21882,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -21778,7 +21896,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -21792,7 +21910,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -21806,7 +21924,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -21820,7 +21938,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -21834,7 +21952,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -21848,7 +21966,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -21862,7 +21980,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -21875,7 +21993,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -21890,7 +22008,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -21905,7 +22023,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -21920,7 +22038,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -21934,7 +22052,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -21948,7 +22066,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -21962,7 +22080,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -21976,7 +22094,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -21990,7 +22108,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -22004,7 +22122,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -22021,7 +22139,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -22033,7 +22151,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -22047,7 +22165,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -22061,7 +22179,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -22075,7 +22193,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -22089,7 +22207,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -22103,7 +22221,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -22117,7 +22235,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -22131,7 +22249,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#indexOf (; 344 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#indexOf (; 345 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 @@ -22206,7 +22324,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float64Array#lastIndexOf (; 345 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf (; 346 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $0 @@ -22275,7 +22393,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 346 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 347 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) block $1of1 block $0of1 @@ -22296,13 +22414,13 @@ local.get $2 call $~lib/typedarray/Float64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 347 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 348 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1192 + i32.const 1672 call $~lib/rt/pure/__retain local.tee $2 i32.load offset=12 @@ -22339,7 +22457,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -22353,7 +22471,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -22367,7 +22485,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -22381,7 +22499,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -22395,7 +22513,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -22409,7 +22527,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -22423,7 +22541,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -22437,7 +22555,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -22451,7 +22569,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -22464,7 +22582,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -22479,7 +22597,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -22494,7 +22612,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -22509,7 +22627,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -22523,7 +22641,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -22537,7 +22655,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -22551,7 +22669,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -22565,7 +22683,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -22579,7 +22697,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -22593,7 +22711,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -22611,7 +22729,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -22623,7 +22741,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -22637,7 +22755,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -22651,7 +22769,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -22665,7 +22783,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -22679,7 +22797,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -22693,7 +22811,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -22707,7 +22825,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -22721,18 +22839,18 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#get:buffer (; 348 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:buffer (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 350 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 350 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 351 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -22800,7 +22918,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int8Array.wrap (; 351 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array.wrap (; 352 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22819,7 +22937,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -22841,7 +22959,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -22854,7 +22972,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -22870,7 +22988,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -22906,7 +23024,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 352 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 353 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22915,7 +23033,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -22994,7 +23112,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -23021,7 +23139,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array.wrap (; 353 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap (; 354 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23040,7 +23158,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -23062,7 +23180,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -23075,7 +23193,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -23091,7 +23209,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -23127,7 +23245,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 354 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 355 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23136,7 +23254,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -23213,7 +23331,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -23240,7 +23358,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray.wrap (; 355 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray.wrap (; 356 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23259,7 +23377,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -23281,7 +23399,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -23294,7 +23412,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -23310,7 +23428,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -23346,7 +23464,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 356 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 357 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23355,7 +23473,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -23432,7 +23550,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -23459,7 +23577,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array.wrap (; 357 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array.wrap (; 358 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23478,7 +23596,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -23500,7 +23618,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -23513,7 +23631,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -23532,7 +23650,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -23568,7 +23686,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 358 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 359 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23577,7 +23695,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -23656,7 +23774,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -23683,7 +23801,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array.wrap (; 359 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array.wrap (; 360 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23702,7 +23820,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -23724,7 +23842,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -23737,7 +23855,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -23756,7 +23874,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -23792,7 +23910,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 360 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 361 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23801,7 +23919,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -23878,7 +23996,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -23905,7 +24023,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array.wrap (; 361 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array.wrap (; 362 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23924,7 +24042,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -23946,7 +24064,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -23959,7 +24077,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -23978,7 +24096,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -24014,7 +24132,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 362 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 363 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24023,7 +24141,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -24098,7 +24216,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -24125,7 +24243,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array.wrap (; 363 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array.wrap (; 364 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24144,7 +24262,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -24166,7 +24284,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -24179,7 +24297,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -24198,7 +24316,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -24234,7 +24352,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 364 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 365 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24243,7 +24361,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -24318,7 +24436,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -24345,7 +24463,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array.wrap (; 365 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array.wrap (; 366 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24364,7 +24482,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -24386,7 +24504,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -24399,7 +24517,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -24418,7 +24536,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -24454,7 +24572,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 366 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 367 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24463,7 +24581,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -24539,7 +24657,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -24566,7 +24684,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array.wrap (; 367 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array.wrap (; 368 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24585,7 +24703,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -24607,7 +24725,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -24620,7 +24738,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -24639,7 +24757,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -24675,7 +24793,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 368 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 369 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24684,7 +24802,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -24760,7 +24878,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -24787,7 +24905,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array.wrap (; 369 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array.wrap (; 370 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24806,7 +24924,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -24828,7 +24946,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -24841,7 +24959,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -24860,7 +24978,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -24896,7 +25014,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 370 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 371 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24905,7 +25023,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -24981,7 +25099,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -25008,7 +25126,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array.wrap (; 371 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array.wrap (; 372 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -25027,7 +25145,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -25049,7 +25167,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -25062,7 +25180,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -25081,7 +25199,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -25117,7 +25235,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 372 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 373 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25126,7 +25244,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 1288 + i32.const 1768 call $~lib/rt/pure/__retain local.tee $4 i32.load offset=12 @@ -25202,7 +25320,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -25229,7 +25347,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start:std/typedarray (; 373 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 374 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25239,6 +25357,23 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) i32.const 0 call $std/typedarray/testInstantiate i32.const 5 @@ -26259,6 +26394,430 @@ call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.set $2 + local.get $1 + i32.const 0 + i32.const 3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $3 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 976 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $4 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 248 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 + i32.const 1 + i32.const 3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $5 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1016 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 250 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 + i32.const 1 + i32.const 2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $7 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1056 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 252 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 + i32.const 2 + i32.const 2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1096 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $10 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 254 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $11 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1136 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $12 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 256 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $13 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1176 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $14 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 258 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $15 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1216 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $16 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 260 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 + i32.const 0 + i32.const -2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $17 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1256 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $18 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 262 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $19 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1296 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $20 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 264 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $21 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1336 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $22 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 266 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $23 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1376 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $24 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 268 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + i32.const -4 + i32.const -3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $1 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1416 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $25 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 270 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $20 + call $~lib/rt/pure/__release + local.get $21 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Int32Array#constructor local.tee $0 i32.const 0 i32.const 1 @@ -26290,7 +26849,7 @@ if i32.const 0 i32.const 376 - i32.const 249 + i32.const 282 i32.const 2 call $~lib/builtins/abort unreachable @@ -26302,7 +26861,7 @@ if i32.const 0 i32.const 376 - i32.const 250 + i32.const 283 i32.const 2 call $~lib/builtins/abort unreachable @@ -26314,7 +26873,7 @@ if i32.const 0 i32.const 376 - i32.const 251 + i32.const 284 i32.const 2 call $~lib/builtins/abort unreachable @@ -26331,7 +26890,7 @@ if i32.const 0 i32.const 376 - i32.const 254 + i32.const 287 i32.const 2 call $~lib/builtins/abort unreachable @@ -26344,7 +26903,7 @@ if i32.const 0 i32.const 376 - i32.const 255 + i32.const 288 i32.const 2 call $~lib/builtins/abort unreachable @@ -26356,7 +26915,7 @@ if i32.const 0 i32.const 376 - i32.const 256 + i32.const 289 i32.const 2 call $~lib/builtins/abort unreachable @@ -26366,7 +26925,7 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable @@ -26378,7 +26937,7 @@ if i32.const 0 i32.const 376 - i32.const 258 + i32.const 291 i32.const 2 call $~lib/builtins/abort unreachable @@ -26395,7 +26954,7 @@ if i32.const 0 i32.const 376 - i32.const 261 + i32.const 294 i32.const 2 call $~lib/builtins/abort unreachable @@ -26407,7 +26966,7 @@ if i32.const 0 i32.const 376 - i32.const 262 + i32.const 295 i32.const 2 call $~lib/builtins/abort unreachable @@ -26417,7 +26976,7 @@ if i32.const 0 i32.const 376 - i32.const 263 + i32.const 296 i32.const 2 call $~lib/builtins/abort unreachable @@ -26429,7 +26988,7 @@ if i32.const 0 i32.const 376 - i32.const 264 + i32.const 297 i32.const 2 call $~lib/builtins/abort unreachable @@ -26444,7 +27003,7 @@ if i32.const 0 i32.const 376 - i32.const 267 + i32.const 300 i32.const 2 call $~lib/builtins/abort unreachable @@ -26457,7 +27016,7 @@ if i32.const 0 i32.const 376 - i32.const 268 + i32.const 301 i32.const 2 call $~lib/builtins/abort unreachable @@ -26470,7 +27029,7 @@ if i32.const 0 i32.const 376 - i32.const 269 + i32.const 302 i32.const 2 call $~lib/builtins/abort unreachable @@ -26483,7 +27042,7 @@ if i32.const 0 i32.const 376 - i32.const 270 + i32.const 303 i32.const 2 call $~lib/builtins/abort unreachable @@ -26620,7 +27179,7 @@ call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> ) - (func $start (; 374 ;) (type $FUNCSIG$v) + (func $start (; 375 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -26630,7 +27189,7 @@ end call $start:std/typedarray ) - (func $~lib/rt/pure/markGray (; 375 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 376 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -26654,7 +27213,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 376 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 377 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -26667,7 +27226,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 377 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 378 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -26701,7 +27260,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 378 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 379 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -26734,9 +27293,9 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__visit (; 379 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 380 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 1436 + i32.const 1916 i32.lt_u if return @@ -26844,7 +27403,7 @@ unreachable end ) - (func $~lib/rt/__visit_members (; 380 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 381 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $block$4$break block $switch$1$default block $switch$1$case$2 @@ -26867,7 +27426,7 @@ call $~lib/rt/pure/__visit end ) - (func $null (; 381 ;) (type $FUNCSIG$v) + (func $null (; 382 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index 224e66c05e..3204e89af9 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -237,6 +237,39 @@ import { BLOCK_MAXSIZE } from "rt/common"; assert(multisubarr3.byteLength == 3); } +{ + let cwAr = new Int32Array(5); + cwAr[0] = 1; + cwAr[1] = 2; + cwAr[2] = 3; + cwAr[3] = 4; + cwAr[4] = 5; + let copy = cwAr.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(0, 3), [4, 5, 3, 4, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(1, 3), [1, 4, 5, 4, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(1, 2), [1, 3, 4, 5, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(2, 2), [1, 2, 3, 4, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(0, 3, 4), [4, 2, 3, 4, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(1, 3, 4), [1, 4, 3, 4, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(1, 2, 4), [1, 3, 4, 4, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(0, -2), [4, 5, 3, 4, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(0, -2, -1), [4, 2, 3, 4, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(-4, -3, -2), [1, 3, 3, 4, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(-4, -3, -1), [1, 3, 4, 4, 5])); + cwAr = copy.slice(0); + assert(isInt32ArrayEqual(cwAr.copyWithin(-4, -3), [1, 3, 4, 5, 5])); +} + { let arr = new Int32Array(5); arr[0] = 1; diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index b35a119549..ae2a28324f 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -67,15 +67,27 @@ (data (i32.const 848) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") (data (i32.const 888) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 920) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") - (data (i32.const 960) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") - (data (i32.const 992) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\d0\03\00\00\d0\03\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 1024) "$\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 1080) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\10\04\00\00\10\04\00\00$\00\00\00\t\00\00\00") - (data (i32.const 1112) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") - (data (i32.const 1176) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00h\04\00\00h\04\00\00,\00\00\00\0b\00\00\00") - (data (i32.const 1208) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") - (data (i32.const 1272) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\c8\04\00\00\c8\04\00\00,\00\00\00\0b\00\00\00") - (data (i32.const 1304) "\10\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\003\04\00\00\02\00\00\00\93\04\00\00\02\00\00\00") + (data (i32.const 960) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1000) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1040) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") + (data (i32.const 1080) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1120) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1160) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1200) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1240) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1280) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1320) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1360) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1400) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") + (data (i32.const 1440) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") + (data (i32.const 1472) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\b0\05\00\00\b0\05\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 1504) "$\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data (i32.const 1560) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\f0\05\00\00\f0\05\00\00$\00\00\00\t\00\00\00") + (data (i32.const 1592) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") + (data (i32.const 1656) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00H\06\00\00H\06\00\00,\00\00\00\0b\00\00\00") + (data (i32.const 1688) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") + (data (i32.const 1752) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\a8\06\00\00\a8\06\00\00,\00\00\00\0b\00\00\00") + (data (i32.const 1784) "\10\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\003\04\00\00\02\00\00\00\93\04\00\00\02\00\00\00") (table $0 123 funcref) (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) @@ -98,13 +110,13 @@ (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues i32 (i32.const 1008)) - (global $std/typedarray/testArrayReverseValues i32 (i32.const 1096)) - (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 1192)) - (global $std/typedarray/testArrayWrapValues i32 (i32.const 1288)) + (global $std/typedarray/forEachValues i32 (i32.const 1488)) + (global $std/typedarray/testArrayReverseValues i32 (i32.const 1576)) + (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 1672)) + (global $std/typedarray/testArrayWrapValues i32 (i32.const 1768)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1304)) - (global $~lib/heap/__heap_base i32 (i32.const 1436)) + (global $~lib/rt/__rtti_base i32 (i32.const 1784)) + (global $~lib/heap/__heap_base i32 (i32.const 1916)) (export "__start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -4153,7 +4165,7 @@ if i32.const 280 i32.const 432 - i32.const 618 + i32.const 638 i32.const 63 call $~lib/builtins/abort unreachable @@ -4177,7 +4189,7 @@ if i32.const 280 i32.const 432 - i32.const 607 + i32.const 627 i32.const 63 call $~lib/builtins/abort unreachable @@ -4321,7 +4333,7 @@ if i32.const 280 i32.const 432 - i32.const 1198 + i32.const 1238 i32.const 63 call $~lib/builtins/abort unreachable @@ -4987,7 +4999,7 @@ if i32.const 280 i32.const 432 - i32.const 1187 + i32.const 1227 i32.const 63 call $~lib/builtins/abort unreachable @@ -5008,7 +5020,7 @@ if i32.const 280 i32.const 432 - i32.const 270 + i32.const 278 i32.const 44 call $~lib/builtins/abort unreachable @@ -5040,7 +5052,7 @@ if i32.const 280 i32.const 432 - i32.const 259 + i32.const 267 i32.const 44 call $~lib/builtins/abort unreachable @@ -5745,7 +5757,147 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 81 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int32Array#copyWithin (; 81 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $7 + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + local.get $7 + i32.load offset=4 + local.set $9 + local.get $4 + local.tee $10 + local.get $8 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + local.set $4 + local.get $6 + i32.const 0 + i32.lt_s + if (result i32) + local.get $8 + local.get $6 + i32.add + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $6 + local.tee $10 + local.get $8 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $10 + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $8 + local.get $5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $5 + local.tee $11 + local.get $8 + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + end + local.set $11 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $8 + local.get $4 + i32.add + local.tee $12 + i32.const 0 + local.tee $13 + local.get $12 + local.get $13 + i32.gt_s + select + else + local.get $4 + local.tee $12 + local.get $8 + local.tee $13 + local.get $12 + local.get $13 + i32.lt_s + select + end + local.set $12 + local.get $12 + local.get $11 + i32.sub + local.tee $13 + local.get $8 + local.get $10 + i32.sub + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + local.set $13 + local.get $9 + local.get $10 + i32.const 2 + i32.shl + i32.add + local.get $9 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $13 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $7 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 82 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -5758,7 +5910,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int8Array#reduce (; 82 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 83 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5815,7 +5967,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 83 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 84 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5853,7 +6005,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -5863,7 +6015,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#__set (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 85 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -5871,7 +6023,7 @@ if i32.const 280 i32.const 432 - i32.const 154 + i32.const 158 i32.const 44 call $~lib/builtins/abort unreachable @@ -5883,7 +6035,7 @@ local.get $2 i32.store8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 85 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 86 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -5896,7 +6048,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8Array#reduce (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5953,7 +6105,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 87 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 88 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5989,7 +6141,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -5999,7 +6151,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 88 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 89 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -6012,7 +6164,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8ClampedArray#reduce (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduce (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6069,7 +6221,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 90 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 91 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6105,7 +6257,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -6115,7 +6267,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#__set (; 91 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 92 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -6125,7 +6277,7 @@ if i32.const 280 i32.const 432 - i32.const 386 + i32.const 398 i32.const 63 call $~lib/builtins/abort unreachable @@ -6139,7 +6291,7 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 92 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 93 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -6152,7 +6304,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int16Array#reduce (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 94 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6209,7 +6361,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 94 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 95 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6247,7 +6399,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -6257,7 +6409,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#__set (; 95 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 96 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -6267,7 +6419,7 @@ if i32.const 280 i32.const 432 - i32.const 502 + i32.const 518 i32.const 63 call $~lib/builtins/abort unreachable @@ -6281,7 +6433,7 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 96 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 97 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -6294,7 +6446,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint16Array#reduce (; 97 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 98 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6351,7 +6503,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 98 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 99 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6387,7 +6539,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -6397,7 +6549,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 99 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 100 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -6410,7 +6562,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int32Array#reduce (; 100 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 101 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6467,7 +6619,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 101 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 102 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6501,7 +6653,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -6511,7 +6663,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#__set (; 102 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 103 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -6521,7 +6673,7 @@ if i32.const 280 i32.const 432 - i32.const 734 + i32.const 758 i32.const 63 call $~lib/builtins/abort unreachable @@ -6535,7 +6687,7 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 103 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 104 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -6548,7 +6700,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint32Array#reduce (; 104 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduce (; 105 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6605,7 +6757,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 105 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 106 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6639,7 +6791,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -6649,7 +6801,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#__set (; 106 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 107 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -6659,7 +6811,7 @@ if i32.const 280 i32.const 432 - i32.const 850 + i32.const 878 i32.const 63 call $~lib/builtins/abort unreachable @@ -6673,7 +6825,7 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 107 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 108 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 call $~lib/rt/pure/__retain @@ -6686,7 +6838,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int64Array#reduce (; 108 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 109 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i64) (local $4 i32) (local $5 i32) @@ -6744,7 +6896,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 109 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 110 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -6778,7 +6930,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -6788,7 +6940,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#__set (; 110 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 111 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -6798,7 +6950,7 @@ if i32.const 280 i32.const 432 - i32.const 966 + i32.const 998 i32.const 63 call $~lib/builtins/abort unreachable @@ -6812,7 +6964,7 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 111 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 112 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 call $~lib/rt/pure/__retain @@ -6825,7 +6977,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint64Array#reduce (; 112 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduce (; 113 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i64) (local $4 i32) (local $5 i32) @@ -6883,7 +7035,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 113 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 114 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -6917,7 +7069,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -6927,7 +7079,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#__set (; 114 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 115 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -6937,7 +7089,7 @@ if i32.const 280 i32.const 432 - i32.const 1082 + i32.const 1118 i32.const 63 call $~lib/builtins/abort unreachable @@ -6951,7 +7103,7 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 115 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 116 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) (local $4 f32) local.get $3 call $~lib/rt/pure/__retain @@ -6964,7 +7116,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float32Array#reduce (; 116 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 117 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 f32) (local $4 i32) (local $5 i32) @@ -7022,7 +7174,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 117 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 118 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f32) @@ -7056,7 +7208,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -7066,7 +7218,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 118 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 119 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) (local $4 f64) local.get $3 call $~lib/rt/pure/__retain @@ -7079,7 +7231,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float64Array#reduce (; 119 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 120 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 f64) (local $4 i32) (local $5 i32) @@ -7137,7 +7289,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 120 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 121 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f64) @@ -7171,7 +7323,7 @@ if i32.const 0 i32.const 376 - i32.const 290 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -7181,7 +7333,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 121 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 122 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7194,7 +7346,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int8Array#reduceRight (; 122 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 123 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7250,7 +7402,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 123 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 124 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7288,7 +7440,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -7298,7 +7450,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 124 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 125 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7311,7 +7463,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 125 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 126 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7367,7 +7519,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 126 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 127 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7403,7 +7555,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -7413,7 +7565,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 127 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 128 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7426,7 +7578,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 128 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 129 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7482,7 +7634,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 129 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 130 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7518,7 +7670,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -7528,7 +7680,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 130 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 131 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7541,7 +7693,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int16Array#reduceRight (; 131 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 132 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7597,7 +7749,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 132 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 133 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7635,7 +7787,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -7645,7 +7797,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 133 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 134 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7658,7 +7810,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 134 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 135 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7714,7 +7866,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 135 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 136 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7750,7 +7902,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -7760,7 +7912,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 136 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 137 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7773,7 +7925,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int32Array#reduceRight (; 137 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 138 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7829,7 +7981,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 138 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 139 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7863,7 +8015,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -7873,7 +8025,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 139 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 140 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -7886,7 +8038,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint32Array#reduceRight (; 140 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduceRight (; 141 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7942,7 +8094,7 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 141 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 142 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7976,7 +8128,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -7986,7 +8138,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 142 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 143 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 call $~lib/rt/pure/__retain @@ -7999,7 +8151,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int64Array#reduceRight (; 143 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 144 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i64) (local $4 i32) (local $5 i32) @@ -8056,7 +8208,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 144 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 145 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -8090,7 +8242,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -8100,7 +8252,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 145 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 146 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 call $~lib/rt/pure/__retain @@ -8113,7 +8265,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint64Array#reduceRight (; 146 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduceRight (; 147 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i64) (local $4 i32) (local $5 i32) @@ -8170,7 +8322,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 147 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 148 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -8204,7 +8356,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -8214,7 +8366,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 148 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 149 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) (local $4 f32) local.get $3 call $~lib/rt/pure/__retain @@ -8227,7 +8379,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float32Array#reduceRight (; 149 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 150 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 f32) (local $4 i32) (local $5 i32) @@ -8284,7 +8436,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 150 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 151 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f32) @@ -8318,7 +8470,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -8328,7 +8480,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 151 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 152 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) (local $4 f64) local.get $3 call $~lib/rt/pure/__retain @@ -8341,7 +8493,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float64Array#reduceRight (; 152 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 153 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 f64) (local $4 i32) (local $5 i32) @@ -8398,7 +8550,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 153 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 154 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f64) @@ -8432,7 +8584,7 @@ if i32.const 0 i32.const 376 - i32.const 311 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -8442,7 +8594,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 154 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 155 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -8455,7 +8607,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#map (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8527,7 +8679,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 156 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 157 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8562,7 +8714,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -8576,7 +8728,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -8590,7 +8742,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -8602,7 +8754,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 157 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 158 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -8615,7 +8767,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#map (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8687,7 +8839,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Uint8Array#__get (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -8695,7 +8847,7 @@ if i32.const 280 i32.const 432 - i32.const 143 + i32.const 147 i32.const 44 call $~lib/builtins/abort unreachable @@ -8706,7 +8858,7 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 160 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 161 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8741,7 +8893,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -8755,7 +8907,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -8769,7 +8921,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -8781,7 +8933,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 162 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -8794,7 +8946,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8866,7 +9018,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 163 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 164 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8901,7 +9053,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -8915,7 +9067,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -8929,7 +9081,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -8941,7 +9093,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 164 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 165 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -8954,7 +9106,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#map (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9026,7 +9178,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Int16Array#__get (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -9036,7 +9188,7 @@ if i32.const 280 i32.const 432 - i32.const 375 + i32.const 387 i32.const 63 call $~lib/builtins/abort unreachable @@ -9049,7 +9201,7 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 167 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 168 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9084,7 +9236,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -9098,7 +9250,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -9112,7 +9264,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -9124,7 +9276,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 168 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 169 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -9137,7 +9289,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#map (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9209,7 +9361,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Uint16Array#__get (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -9219,7 +9371,7 @@ if i32.const 280 i32.const 432 - i32.const 491 + i32.const 507 i32.const 63 call $~lib/builtins/abort unreachable @@ -9232,7 +9384,7 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 171 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 172 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9267,7 +9419,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -9281,7 +9433,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -9295,7 +9447,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -9307,7 +9459,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 172 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 173 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -9320,7 +9472,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#map (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9392,7 +9544,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 174 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 175 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9427,7 +9579,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -9441,7 +9593,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -9455,7 +9607,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -9467,7 +9619,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 175 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 176 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -9480,7 +9632,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#map (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9552,7 +9704,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Uint32Array#__get (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -9562,7 +9714,7 @@ if i32.const 280 i32.const 432 - i32.const 723 + i32.const 747 i32.const 63 call $~lib/builtins/abort unreachable @@ -9575,7 +9727,7 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 178 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 179 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9610,7 +9762,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -9624,7 +9776,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -9638,7 +9790,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -9650,7 +9802,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 179 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 180 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $2 call $~lib/rt/pure/__retain @@ -9663,7 +9815,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#map (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9735,7 +9887,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Int64Array#__get (; 181 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 182 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -9745,7 +9897,7 @@ if i32.const 280 i32.const 432 - i32.const 839 + i32.const 867 i32.const 63 call $~lib/builtins/abort unreachable @@ -9758,7 +9910,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 182 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 183 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9793,7 +9945,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -9807,7 +9959,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -9821,7 +9973,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -9833,7 +9985,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 183 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 184 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $2 call $~lib/rt/pure/__retain @@ -9846,7 +9998,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#map (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9918,7 +10070,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Uint64Array#__get (; 185 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 186 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -9928,7 +10080,7 @@ if i32.const 280 i32.const 432 - i32.const 955 + i32.const 987 i32.const 63 call $~lib/builtins/abort unreachable @@ -9941,7 +10093,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 186 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 187 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9976,7 +10128,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -9990,7 +10142,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -10004,7 +10156,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -10016,7 +10168,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 187 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 188 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) (local $3 f32) local.get $2 call $~lib/rt/pure/__retain @@ -10029,7 +10181,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#map (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10101,7 +10253,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/typedarray/Float32Array#__get (; 189 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 190 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -10111,7 +10263,7 @@ if i32.const 280 i32.const 432 - i32.const 1071 + i32.const 1107 i32.const 63 call $~lib/builtins/abort unreachable @@ -10124,7 +10276,7 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 190 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 191 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10159,7 +10311,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -10173,7 +10325,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -10187,7 +10339,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -10199,7 +10351,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 191 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 192 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) (local $3 f64) local.get $2 call $~lib/rt/pure/__retain @@ -10212,7 +10364,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#map (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10284,7 +10436,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 193 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 194 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10319,7 +10471,7 @@ if i32.const 0 i32.const 376 - i32.const 332 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -10333,7 +10485,7 @@ if i32.const 0 i32.const 376 - i32.const 333 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable @@ -10347,7 +10499,7 @@ if i32.const 0 i32.const 376 - i32.const 334 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable @@ -10359,7 +10511,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10376,7 +10528,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/rt/tlsf/reallocateBlock (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 196 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10514,7 +10666,7 @@ call $~lib/rt/rtrace/onfree local.get $8 ) - (func $~lib/rt/tlsf/__realloc (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -10554,7 +10706,7 @@ i32.const 16 i32.add ) - (func $~lib/typedarray/Int8Array#filter (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#filter (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10672,7 +10824,7 @@ call $~lib/rt/pure/__release local.get $12 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> (; 198 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> (; 199 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10714,7 +10866,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -10727,7 +10879,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -10741,7 +10893,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -10755,7 +10907,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -10769,7 +10921,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -10781,7 +10933,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 199 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 200 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -10796,7 +10948,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#filter (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#filter (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10914,7 +11066,7 @@ call $~lib/rt/pure/__release local.get $12 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> (; 201 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> (; 202 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10956,7 +11108,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -10969,7 +11121,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -10983,7 +11135,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -10997,7 +11149,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -11011,7 +11163,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -11023,7 +11175,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11038,7 +11190,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#filter (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#filter (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11156,7 +11308,7 @@ call $~lib/rt/pure/__release local.get $12 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> (; 204 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> (; 205 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11198,7 +11350,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -11211,7 +11363,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -11225,7 +11377,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -11239,7 +11391,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -11253,7 +11405,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -11265,7 +11417,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 205 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11282,7 +11434,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#filter (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#filter (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11400,7 +11552,7 @@ call $~lib/rt/pure/__release local.get $12 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (; 207 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (; 208 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11442,7 +11594,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -11455,7 +11607,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -11469,7 +11621,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -11483,7 +11635,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -11497,7 +11649,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -11509,7 +11661,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 208 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 209 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11524,7 +11676,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#filter (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#filter (; 210 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11642,7 +11794,7 @@ call $~lib/rt/pure/__release local.get $12 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> (; 210 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> (; 211 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11684,7 +11836,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -11697,7 +11849,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -11711,7 +11863,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -11725,7 +11877,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -11739,7 +11891,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -11751,7 +11903,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 211 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -11764,7 +11916,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#filter (; 212 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#filter (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11882,7 +12034,7 @@ call $~lib/rt/pure/__release local.get $12 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (; 213 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (; 214 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11924,7 +12076,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -11937,7 +12089,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -11951,7 +12103,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -11965,7 +12117,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -11979,7 +12131,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -11991,7 +12143,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12004,7 +12156,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#filter (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#filter (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12122,7 +12274,7 @@ call $~lib/rt/pure/__release local.get $12 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (; 216 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (; 217 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12164,7 +12316,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -12177,7 +12329,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -12191,7 +12343,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -12205,7 +12357,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -12219,7 +12371,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -12231,7 +12383,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 217 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 218 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12244,7 +12396,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#filter (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#filter (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12363,7 +12515,7 @@ call $~lib/rt/pure/__release local.get $13 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> (; 219 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> (; 220 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12405,7 +12557,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -12418,7 +12570,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -12432,7 +12584,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -12446,7 +12598,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -12460,7 +12612,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -12472,7 +12624,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 220 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 221 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12485,7 +12637,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#filter (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#filter (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12604,7 +12756,7 @@ call $~lib/rt/pure/__release local.get $13 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> (; 222 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> (; 223 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12646,7 +12798,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -12659,7 +12811,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -12673,7 +12825,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -12687,7 +12839,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -12701,7 +12853,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -12713,7 +12865,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 223 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 224 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12726,7 +12878,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#filter (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#filter (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12845,7 +12997,7 @@ call $~lib/rt/pure/__release local.get $13 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> (; 225 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> (; 226 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12887,7 +13039,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -12900,7 +13052,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -12914,7 +13066,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -12928,7 +13080,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -12942,7 +13094,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -12954,7 +13106,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 226 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 227 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -12967,7 +13119,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#filter (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#filter (; 228 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13086,7 +13238,7 @@ call $~lib/rt/pure/__release local.get $13 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> (; 228 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> (; 229 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13128,7 +13280,7 @@ if i32.const 0 i32.const 376 - i32.const 357 + i32.const 390 i32.const 2 call $~lib/builtins/abort unreachable @@ -13141,7 +13293,7 @@ if i32.const 0 i32.const 376 - i32.const 358 + i32.const 391 i32.const 2 call $~lib/builtins/abort unreachable @@ -13155,7 +13307,7 @@ if i32.const 0 i32.const 376 - i32.const 359 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -13169,7 +13321,7 @@ if i32.const 0 i32.const 376 - i32.const 360 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -13183,7 +13335,7 @@ if i32.const 0 i32.const 376 - i32.const 361 + i32.const 394 i32.const 2 call $~lib/builtins/abort unreachable @@ -13195,7 +13347,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 229 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 230 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13212,7 +13364,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#some (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13275,7 +13427,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13292,7 +13444,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 232 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 233 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13326,7 +13478,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -13343,7 +13495,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -13353,7 +13505,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 233 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13368,7 +13520,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#some (; 234 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13431,7 +13583,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 235 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13446,7 +13598,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 236 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 237 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13480,7 +13632,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -13497,7 +13649,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -13507,7 +13659,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 237 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13522,7 +13674,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#some (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#some (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13585,7 +13737,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13600,7 +13752,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 240 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 241 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13634,7 +13786,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -13651,7 +13803,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -13661,7 +13813,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13678,7 +13830,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#some (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13741,7 +13893,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13758,7 +13910,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 244 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 245 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13792,7 +13944,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -13809,7 +13961,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -13819,7 +13971,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13834,7 +13986,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#some (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13897,7 +14049,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 247 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13912,7 +14064,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 248 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 249 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13946,7 +14098,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -13963,7 +14115,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -13973,7 +14125,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -13986,7 +14138,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#some (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14049,7 +14201,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14062,7 +14214,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 252 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 253 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14096,7 +14248,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -14113,7 +14265,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -14123,7 +14275,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 254 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14136,7 +14288,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#some (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#some (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14199,7 +14351,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 255 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 256 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14212,7 +14364,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 256 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 257 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14246,7 +14398,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -14263,7 +14415,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -14273,7 +14425,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 257 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 258 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14286,7 +14438,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#some (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14349,7 +14501,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 259 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 260 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14362,7 +14514,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 260 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 261 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14396,7 +14548,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -14413,7 +14565,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -14423,7 +14575,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 261 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 262 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14436,7 +14588,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#some (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#some (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14499,7 +14651,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 263 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 264 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14512,7 +14664,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 264 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 265 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14546,7 +14698,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -14563,7 +14715,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -14573,7 +14725,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 265 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 266 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14586,7 +14738,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#some (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14649,7 +14801,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 267 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 268 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14662,7 +14814,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 268 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 269 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14696,7 +14848,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -14713,7 +14865,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -14723,7 +14875,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 269 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 270 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14736,7 +14888,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#some (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14799,7 +14951,7 @@ local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 271 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 272 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14812,7 +14964,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 272 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 273 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14846,7 +14998,7 @@ if i32.const 0 i32.const 376 - i32.const 382 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable @@ -14863,7 +15015,7 @@ if i32.const 0 i32.const 376 - i32.const 384 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -14873,7 +15025,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 273 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 274 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14890,7 +15042,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#findIndex (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14953,7 +15105,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 275 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -14970,7 +15122,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 276 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 277 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15004,7 +15156,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -15020,7 +15172,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -15030,7 +15182,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 277 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 278 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15045,7 +15197,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#findIndex (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15108,7 +15260,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15123,7 +15275,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 280 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 281 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15157,7 +15309,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -15173,7 +15325,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -15183,7 +15335,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15198,7 +15350,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15261,7 +15413,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15276,7 +15428,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 284 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 285 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15310,7 +15462,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -15326,7 +15478,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -15336,7 +15488,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15353,7 +15505,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#findIndex (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15416,7 +15568,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15433,7 +15585,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 288 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 289 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15467,7 +15619,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -15483,7 +15635,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -15493,7 +15645,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 289 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15508,7 +15660,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#findIndex (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15571,7 +15723,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15586,7 +15738,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 292 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 293 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15620,7 +15772,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -15636,7 +15788,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -15646,7 +15798,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15659,7 +15811,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#findIndex (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15722,7 +15874,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 295 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15735,7 +15887,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 296 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 297 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15769,7 +15921,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -15785,7 +15937,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -15795,7 +15947,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 297 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 298 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15808,7 +15960,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#findIndex (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#findIndex (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15871,7 +16023,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 299 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 300 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15884,7 +16036,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 300 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 301 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15918,7 +16070,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -15934,7 +16086,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -15944,7 +16096,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 301 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 302 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -15957,7 +16109,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#findIndex (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16020,7 +16172,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 303 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 304 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16033,7 +16185,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 304 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 305 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16067,7 +16219,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -16083,7 +16235,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -16093,7 +16245,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 305 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 306 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16106,7 +16258,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#findIndex (; 306 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#findIndex (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16169,7 +16321,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 307 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 308 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16182,7 +16334,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 308 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 309 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16216,7 +16368,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -16232,7 +16384,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -16242,7 +16394,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 309 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 310 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16255,7 +16407,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#findIndex (; 310 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 311 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16318,7 +16470,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 311 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 312 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16331,7 +16483,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 312 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 313 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16365,7 +16517,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -16381,7 +16533,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -16391,7 +16543,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 313 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 314 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16404,7 +16556,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#findIndex (; 314 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 315 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16467,7 +16619,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 315 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 316 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16480,7 +16632,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 316 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 317 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16514,7 +16666,7 @@ if i32.const 0 i32.const 376 - i32.const 405 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable @@ -16530,7 +16682,7 @@ if i32.const 0 i32.const 376 - i32.const 407 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -16540,7 +16692,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 317 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 318 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16559,7 +16711,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#every (; 318 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 319 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16625,7 +16777,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 319 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 320 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16642,7 +16794,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 320 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 321 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16676,7 +16828,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -16693,7 +16845,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -16703,7 +16855,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 321 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 322 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16720,7 +16872,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#every (; 322 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 323 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16786,7 +16938,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 323 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 324 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16801,7 +16953,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 324 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 325 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16835,7 +16987,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -16852,7 +17004,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -16862,7 +17014,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 325 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 326 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16879,7 +17031,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#every (; 326 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#every (; 327 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16945,7 +17097,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 327 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 328 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -16960,7 +17112,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 328 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 329 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16994,7 +17146,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -17011,7 +17163,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -17021,7 +17173,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 329 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 330 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17040,7 +17192,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#every (; 330 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 331 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17106,7 +17258,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 331 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 332 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17123,7 +17275,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 332 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 333 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17157,7 +17309,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -17174,7 +17326,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -17184,7 +17336,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 333 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 334 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17201,7 +17353,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#every (; 334 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 335 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17267,7 +17419,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 335 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 336 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17282,7 +17434,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 336 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 337 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17316,7 +17468,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -17333,7 +17485,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -17343,7 +17495,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 337 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 338 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17358,7 +17510,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#every (; 338 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 339 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17424,7 +17576,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 339 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 340 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17437,7 +17589,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 340 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 341 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17471,7 +17623,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -17488,7 +17640,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -17498,7 +17650,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 341 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 342 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17513,7 +17665,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#every (; 342 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#every (; 343 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17579,7 +17731,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 343 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 344 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17592,7 +17744,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 344 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 345 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17626,7 +17778,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -17643,7 +17795,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -17653,7 +17805,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 345 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 346 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17668,7 +17820,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#every (; 346 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 347 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17734,7 +17886,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 347 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 348 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17747,7 +17899,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 348 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 349 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17781,7 +17933,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -17798,7 +17950,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -17808,7 +17960,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 349 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 350 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17823,7 +17975,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#every (; 350 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#every (; 351 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17889,7 +18041,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 351 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 352 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -17902,7 +18054,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 352 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 353 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17936,7 +18088,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -17953,7 +18105,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -17963,12 +18115,12 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/number/isNaN (; 353 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/isNaN (; 354 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/math/NativeMathf.mod (; 354 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 355 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18215,7 +18367,7 @@ local.get $2 f32.reinterpret_i32 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 355 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 356 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -18230,7 +18382,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#every (; 356 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 357 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18296,7 +18448,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 357 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 358 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -18309,7 +18461,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 358 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 359 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18343,7 +18495,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -18360,7 +18512,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -18370,12 +18522,12 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/number/isNaN (; 359 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/isNaN (; 360 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/math/NativeMath.mod (; 360 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 361 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -18624,7 +18776,7 @@ local.get $2 f64.reinterpret_i64 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 361 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 362 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -18639,7 +18791,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#every (; 362 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 363 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18705,7 +18857,7 @@ local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 363 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 364 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -18718,7 +18870,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 364 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 365 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18752,7 +18904,7 @@ if i32.const 0 i32.const 376 - i32.const 428 + i32.const 461 i32.const 2 call $~lib/builtins/abort unreachable @@ -18769,7 +18921,7 @@ if i32.const 0 i32.const 376 - i32.const 430 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -18779,7 +18931,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 365 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 366 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -18803,7 +18955,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -18815,7 +18967,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -18827,7 +18979,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -18839,7 +18991,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#forEach (; 366 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#forEach (; 367 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18888,7 +19040,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 367 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 368 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -18941,7 +19093,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -18951,7 +19103,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 368 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 369 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -18971,7 +19123,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -18983,7 +19135,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -18995,7 +19147,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -19007,7 +19159,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#forEach (; 369 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 370 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19056,7 +19208,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 370 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 371 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -19103,7 +19255,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -19113,7 +19265,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 371 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 372 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -19133,7 +19285,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -19145,7 +19297,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -19157,7 +19309,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -19169,7 +19321,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (; 372 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#forEach (; 373 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19218,7 +19370,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 373 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 374 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -19265,7 +19417,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -19275,7 +19427,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 374 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 375 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -19299,7 +19451,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -19311,7 +19463,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -19323,7 +19475,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -19335,7 +19487,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#forEach (; 375 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#forEach (; 376 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19384,7 +19536,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 376 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 377 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -19437,7 +19589,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -19447,7 +19599,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 377 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 378 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -19467,7 +19619,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -19479,7 +19631,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -19491,7 +19643,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -19503,7 +19655,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#forEach (; 378 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 379 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19552,7 +19704,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 379 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 380 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -19599,7 +19751,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -19609,7 +19761,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 380 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 381 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -19625,7 +19777,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -19637,7 +19789,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -19649,7 +19801,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -19661,7 +19813,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#forEach (; 381 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 382 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19710,7 +19862,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 382 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 383 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -19751,7 +19903,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -19761,7 +19913,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 383 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 384 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -19777,7 +19929,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -19789,7 +19941,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -19801,7 +19953,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -19813,7 +19965,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#forEach (; 384 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint32Array#forEach (; 385 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19862,7 +20014,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 385 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 386 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -19903,7 +20055,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -19913,7 +20065,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 386 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 387 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -19930,7 +20082,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -19942,7 +20094,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -19954,7 +20106,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -19966,7 +20118,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#forEach (; 387 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 388 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20015,7 +20167,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 388 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 389 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -20059,7 +20211,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -20069,7 +20221,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 389 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 390 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -20086,7 +20238,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -20098,7 +20250,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -20110,7 +20262,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -20122,7 +20274,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#forEach (; 390 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint64Array#forEach (; 391 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20171,7 +20323,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 391 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 392 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -20215,7 +20367,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -20225,7 +20377,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 392 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 393 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -20242,7 +20394,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -20254,7 +20406,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -20266,7 +20418,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -20278,7 +20430,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#forEach (; 393 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#forEach (; 394 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20327,7 +20479,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 394 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 395 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -20371,7 +20523,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -20381,7 +20533,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 395 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 396 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -20398,7 +20550,7 @@ if i32.const 0 i32.const 376 - i32.const 457 + i32.const 490 i32.const 4 call $~lib/builtins/abort unreachable @@ -20410,7 +20562,7 @@ if i32.const 0 i32.const 376 - i32.const 458 + i32.const 491 i32.const 4 call $~lib/builtins/abort unreachable @@ -20422,7 +20574,7 @@ if i32.const 0 i32.const 376 - i32.const 459 + i32.const 492 i32.const 4 call $~lib/builtins/abort unreachable @@ -20434,7 +20586,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#forEach (; 396 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#forEach (; 397 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20483,7 +20635,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 397 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 398 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -20527,7 +20679,7 @@ if i32.const 0 i32.const 376 - i32.const 462 + i32.const 495 i32.const 2 call $~lib/builtins/abort unreachable @@ -20537,7 +20689,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reverse (; 398 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 399 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -20601,7 +20753,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 399 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 400 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20696,7 +20848,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -20725,7 +20877,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -20739,7 +20891,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -20753,7 +20905,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -20767,7 +20919,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -20787,7 +20939,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reverse (; 400 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 401 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -20851,7 +21003,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8Array#subarray (; 401 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 402 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -20972,7 +21124,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 402 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 403 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21061,7 +21213,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -21090,7 +21242,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -21104,7 +21256,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -21118,7 +21270,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -21132,7 +21284,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -21152,7 +21304,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (; 403 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reverse (; 404 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -21216,7 +21368,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 404 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 405 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -21337,7 +21489,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 405 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 406 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21426,7 +21578,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -21455,7 +21607,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -21469,7 +21621,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -21483,7 +21635,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -21497,7 +21649,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -21517,7 +21669,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reverse (; 406 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 407 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -21581,7 +21733,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int16Array#subarray (; 407 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 408 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -21702,7 +21854,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 408 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 409 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21797,7 +21949,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -21826,7 +21978,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -21840,7 +21992,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -21854,7 +22006,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -21868,7 +22020,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -21888,7 +22040,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#reverse (; 409 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 410 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -21952,7 +22104,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint16Array#subarray (; 410 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 411 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -22073,7 +22225,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 411 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 412 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22162,7 +22314,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -22191,7 +22343,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -22205,7 +22357,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -22219,7 +22371,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -22233,7 +22385,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -22253,7 +22405,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reverse (; 412 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 413 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -22317,7 +22469,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 413 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 414 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22400,7 +22552,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -22429,7 +22581,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -22443,7 +22595,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -22457,7 +22609,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -22471,7 +22623,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -22491,7 +22643,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#reverse (; 414 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reverse (; 415 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -22555,7 +22707,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint32Array#subarray (; 415 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 416 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -22676,7 +22828,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 416 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 417 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22759,7 +22911,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -22788,7 +22940,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -22802,7 +22954,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -22816,7 +22968,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -22830,7 +22982,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -22850,7 +23002,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reverse (; 417 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 418 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -22914,7 +23066,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int64Array#subarray (; 418 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 419 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -23035,7 +23187,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 419 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 420 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23121,7 +23273,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -23150,7 +23302,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -23164,7 +23316,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -23178,7 +23330,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -23192,7 +23344,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -23212,7 +23364,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#reverse (; 420 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#reverse (; 421 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -23276,7 +23428,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint64Array#subarray (; 421 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 422 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -23397,7 +23549,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 422 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 423 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23483,7 +23635,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -23512,7 +23664,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -23526,7 +23678,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -23540,7 +23692,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -23554,7 +23706,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -23574,7 +23726,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reverse (; 423 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 424 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -23638,7 +23790,7 @@ end local.get $1 ) - (func $~lib/typedarray/Float32Array#subarray (; 424 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 425 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -23759,7 +23911,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 425 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 426 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23845,7 +23997,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -23874,7 +24026,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -23888,7 +24040,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -23902,7 +24054,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -23916,7 +24068,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -23936,7 +24088,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reverse (; 426 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 427 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -24000,7 +24152,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 427 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 428 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24086,7 +24238,7 @@ if i32.const 0 i32.const 376 - i32.const 491 + i32.const 524 i32.const 4 call $~lib/builtins/abort unreachable @@ -24115,7 +24267,7 @@ if i32.const 0 i32.const 376 - i32.const 496 + i32.const 529 i32.const 2 call $~lib/builtins/abort unreachable @@ -24129,7 +24281,7 @@ if i32.const 0 i32.const 376 - i32.const 497 + i32.const 530 i32.const 2 call $~lib/builtins/abort unreachable @@ -24143,7 +24295,7 @@ if i32.const 0 i32.const 376 - i32.const 498 + i32.const 531 i32.const 2 call $~lib/builtins/abort unreachable @@ -24157,7 +24309,7 @@ if i32.const 0 i32.const 376 - i32.const 499 + i32.const 532 i32.const 2 call $~lib/builtins/abort unreachable @@ -24177,7 +24329,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#indexOf (; 428 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#indexOf (; 429 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24277,7 +24429,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int8Array#lastIndexOf (; 429 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf (; 430 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24373,7 +24525,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 430 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#lastIndexOf|trampoline (; 431 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -24393,7 +24545,7 @@ local.get $2 call $~lib/typedarray/Int8Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 431 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> (; 432 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24449,7 +24601,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -24464,7 +24616,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -24479,7 +24631,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -24494,7 +24646,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -24509,7 +24661,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -24524,7 +24676,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -24539,7 +24691,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -24554,7 +24706,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -24569,7 +24721,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -24586,7 +24738,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -24603,7 +24755,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -24620,7 +24772,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -24637,7 +24789,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -24652,7 +24804,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -24667,7 +24819,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -24682,7 +24834,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -24697,7 +24849,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -24712,7 +24864,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -24727,7 +24879,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -24747,7 +24899,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -24762,7 +24914,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -24777,7 +24929,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -24792,7 +24944,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -24807,7 +24959,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -24822,7 +24974,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -24837,7 +24989,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -24852,7 +25004,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -24866,7 +25018,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#indexOf (; 432 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#indexOf (; 433 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -24964,7 +25116,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8Array#lastIndexOf (; 433 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#lastIndexOf (; 434 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -25058,7 +25210,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8Array#lastIndexOf|trampoline (; 434 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#lastIndexOf|trampoline (; 435 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -25078,7 +25230,7 @@ local.get $2 call $~lib/typedarray/Uint8Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 435 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (; 436 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25132,7 +25284,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -25147,7 +25299,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -25162,7 +25314,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -25177,7 +25329,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -25192,7 +25344,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -25207,7 +25359,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -25222,7 +25374,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -25237,7 +25389,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -25252,7 +25404,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -25269,7 +25421,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -25286,7 +25438,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -25303,7 +25455,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -25320,7 +25472,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -25335,7 +25487,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -25350,7 +25502,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -25365,7 +25517,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -25380,7 +25532,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -25395,7 +25547,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -25410,7 +25562,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -25430,7 +25582,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -25445,7 +25597,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -25460,7 +25612,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -25475,7 +25627,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -25490,7 +25642,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -25505,7 +25657,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -25520,7 +25672,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -25535,7 +25687,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -25549,7 +25701,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#indexOf (; 436 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#indexOf (; 437 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -25647,7 +25799,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf (; 437 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf (; 438 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -25741,7 +25893,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf|trampoline (; 438 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf|trampoline (; 439 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -25761,7 +25913,7 @@ local.get $2 call $~lib/typedarray/Uint8ClampedArray#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 439 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (; 440 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25815,7 +25967,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -25830,7 +25982,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -25845,7 +25997,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -25860,7 +26012,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -25875,7 +26027,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -25890,7 +26042,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -25905,7 +26057,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -25920,7 +26072,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -25935,7 +26087,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -25952,7 +26104,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -25969,7 +26121,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -25986,7 +26138,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -26003,7 +26155,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -26018,7 +26170,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -26033,7 +26185,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -26048,7 +26200,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -26063,7 +26215,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -26078,7 +26230,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -26093,7 +26245,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -26113,7 +26265,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -26128,7 +26280,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -26143,7 +26295,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -26158,7 +26310,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -26173,7 +26325,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -26188,7 +26340,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -26203,7 +26355,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -26218,7 +26370,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -26232,7 +26384,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#indexOf (; 440 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#indexOf (; 441 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -26332,7 +26484,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int16Array#lastIndexOf (; 441 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf (; 442 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -26428,7 +26580,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 442 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf|trampoline (; 443 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -26448,7 +26600,7 @@ local.get $2 call $~lib/typedarray/Int16Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 443 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (; 444 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -26504,7 +26656,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -26519,7 +26671,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -26534,7 +26686,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -26549,7 +26701,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -26564,7 +26716,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -26579,7 +26731,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -26594,7 +26746,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -26609,7 +26761,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -26624,7 +26776,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -26641,7 +26793,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -26658,7 +26810,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -26675,7 +26827,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -26692,7 +26844,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -26707,7 +26859,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -26722,7 +26874,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -26737,7 +26889,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -26752,7 +26904,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -26767,7 +26919,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -26782,7 +26934,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -26802,7 +26954,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -26817,7 +26969,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -26832,7 +26984,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -26847,7 +26999,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -26862,7 +27014,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -26877,7 +27029,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -26892,7 +27044,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -26907,7 +27059,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -26921,7 +27073,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#indexOf (; 444 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#indexOf (; 445 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -27019,7 +27171,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint16Array#lastIndexOf (; 445 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#lastIndexOf (; 446 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -27113,7 +27265,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint16Array#lastIndexOf|trampoline (; 446 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#lastIndexOf|trampoline (; 447 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -27133,7 +27285,7 @@ local.get $2 call $~lib/typedarray/Uint16Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 447 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (; 448 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -27187,7 +27339,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -27202,7 +27354,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -27217,7 +27369,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -27232,7 +27384,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -27247,7 +27399,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -27262,7 +27414,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -27277,7 +27429,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -27292,7 +27444,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -27307,7 +27459,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -27324,7 +27476,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -27341,7 +27493,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -27358,7 +27510,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -27375,7 +27527,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -27390,7 +27542,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -27405,7 +27557,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -27420,7 +27572,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -27435,7 +27587,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -27450,7 +27602,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -27465,7 +27617,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -27485,7 +27637,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -27500,7 +27652,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -27515,7 +27667,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -27530,7 +27682,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -27545,7 +27697,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -27560,7 +27712,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -27575,7 +27727,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -27590,7 +27742,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -27604,7 +27756,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#indexOf (; 448 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#indexOf (; 449 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -27700,7 +27852,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int32Array#lastIndexOf (; 449 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf (; 450 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -27792,7 +27944,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 450 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#lastIndexOf|trampoline (; 451 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -27812,7 +27964,7 @@ local.get $2 call $~lib/typedarray/Int32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 451 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (; 452 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -27864,7 +28016,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -27879,7 +28031,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -27894,7 +28046,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -27909,7 +28061,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -27924,7 +28076,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -27939,7 +28091,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -27954,7 +28106,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -27969,7 +28121,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -27984,7 +28136,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -28001,7 +28153,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -28018,7 +28170,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -28035,7 +28187,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -28052,7 +28204,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -28067,7 +28219,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -28082,7 +28234,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -28097,7 +28249,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -28112,7 +28264,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -28127,7 +28279,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -28142,7 +28294,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -28162,7 +28314,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -28177,7 +28329,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -28192,7 +28344,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -28207,7 +28359,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -28222,7 +28374,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -28237,7 +28389,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -28252,7 +28404,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -28267,7 +28419,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -28281,7 +28433,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#indexOf (; 452 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#indexOf (; 453 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -28377,7 +28529,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint32Array#lastIndexOf (; 453 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#lastIndexOf (; 454 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -28469,7 +28621,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint32Array#lastIndexOf|trampoline (; 454 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#lastIndexOf|trampoline (; 455 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -28489,7 +28641,7 @@ local.get $2 call $~lib/typedarray/Uint32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 455 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (; 456 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -28541,7 +28693,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -28556,7 +28708,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -28571,7 +28723,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -28586,7 +28738,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -28601,7 +28753,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -28616,7 +28768,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -28631,7 +28783,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -28646,7 +28798,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -28661,7 +28813,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -28678,7 +28830,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -28695,7 +28847,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -28712,7 +28864,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -28729,7 +28881,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -28744,7 +28896,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -28759,7 +28911,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -28774,7 +28926,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -28789,7 +28941,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -28804,7 +28956,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -28819,7 +28971,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -28839,7 +28991,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -28854,7 +29006,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -28869,7 +29021,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -28884,7 +29036,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -28899,7 +29051,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -28914,7 +29066,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -28929,7 +29081,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -28944,7 +29096,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -28958,7 +29110,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#indexOf (; 456 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#indexOf (; 457 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -29054,7 +29206,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int64Array#lastIndexOf (; 457 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf (; 458 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -29146,7 +29298,7 @@ local.get $9 end ) - (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 458 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#lastIndexOf|trampoline (; 459 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -29166,7 +29318,7 @@ local.get $2 call $~lib/typedarray/Int64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 459 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (; 460 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -29219,7 +29371,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -29234,7 +29386,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -29249,7 +29401,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -29264,7 +29416,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -29279,7 +29431,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -29294,7 +29446,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -29309,7 +29461,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -29324,7 +29476,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -29339,7 +29491,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -29356,7 +29508,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -29373,7 +29525,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -29390,7 +29542,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -29407,7 +29559,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -29422,7 +29574,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -29437,7 +29589,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -29452,7 +29604,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -29467,7 +29619,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -29482,7 +29634,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -29497,7 +29649,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -29517,7 +29669,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -29532,7 +29684,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -29547,7 +29699,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -29562,7 +29714,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -29577,7 +29729,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -29592,7 +29744,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -29607,7 +29759,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -29622,7 +29774,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -29636,7 +29788,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#indexOf (; 460 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#indexOf (; 461 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -29732,7 +29884,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint64Array#lastIndexOf (; 461 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#lastIndexOf (; 462 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -29824,7 +29976,7 @@ local.get $9 end ) - (func $~lib/typedarray/Uint64Array#lastIndexOf|trampoline (; 462 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#lastIndexOf|trampoline (; 463 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -29844,7 +29996,7 @@ local.get $2 call $~lib/typedarray/Uint64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 463 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> (; 464 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -29897,7 +30049,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -29912,7 +30064,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -29927,7 +30079,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -29942,7 +30094,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -29957,7 +30109,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -29972,7 +30124,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -29987,7 +30139,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -30002,7 +30154,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -30017,7 +30169,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -30034,7 +30186,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -30051,7 +30203,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -30068,7 +30220,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -30085,7 +30237,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -30100,7 +30252,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -30115,7 +30267,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -30130,7 +30282,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -30145,7 +30297,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -30160,7 +30312,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -30175,7 +30327,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -30195,7 +30347,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -30210,7 +30362,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -30225,7 +30377,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -30240,7 +30392,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -30255,7 +30407,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -30270,7 +30422,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -30285,7 +30437,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -30300,7 +30452,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -30314,7 +30466,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#indexOf (; 464 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#indexOf (; 465 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 f32) (local $5 i32) @@ -30410,7 +30562,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float32Array#lastIndexOf (; 465 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf (; 466 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 f32) (local $5 i32) @@ -30502,7 +30654,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 466 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf|trampoline (; 467 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -30522,7 +30674,7 @@ local.get $2 call $~lib/typedarray/Float32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 467 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> (; 468 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -30575,7 +30727,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -30590,7 +30742,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -30605,7 +30757,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -30620,7 +30772,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -30635,7 +30787,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -30650,7 +30802,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -30665,7 +30817,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -30680,7 +30832,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -30695,7 +30847,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -30712,7 +30864,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -30729,7 +30881,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -30746,7 +30898,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -30763,7 +30915,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -30778,7 +30930,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -30793,7 +30945,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -30808,7 +30960,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -30823,7 +30975,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -30838,7 +30990,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -30853,7 +31005,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -30873,7 +31025,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -30888,7 +31040,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -30903,7 +31055,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -30918,7 +31070,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -30933,7 +31085,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -30948,7 +31100,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -30963,7 +31115,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -30978,7 +31130,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -30992,7 +31144,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#indexOf (; 468 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#indexOf (; 469 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -31088,7 +31240,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float64Array#lastIndexOf (; 469 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf (; 470 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -31180,7 +31332,7 @@ local.get $9 end ) - (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 470 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf|trampoline (; 471 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -31200,7 +31352,7 @@ local.get $2 call $~lib/typedarray/Float64Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 471 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> (; 472 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -31253,7 +31405,7 @@ if i32.const 0 i32.const 376 - i32.const 524 + i32.const 557 i32.const 2 call $~lib/builtins/abort unreachable @@ -31268,7 +31420,7 @@ if i32.const 0 i32.const 376 - i32.const 525 + i32.const 558 i32.const 2 call $~lib/builtins/abort unreachable @@ -31283,7 +31435,7 @@ if i32.const 0 i32.const 376 - i32.const 526 + i32.const 559 i32.const 2 call $~lib/builtins/abort unreachable @@ -31298,7 +31450,7 @@ if i32.const 0 i32.const 376 - i32.const 527 + i32.const 560 i32.const 2 call $~lib/builtins/abort unreachable @@ -31313,7 +31465,7 @@ if i32.const 0 i32.const 376 - i32.const 528 + i32.const 561 i32.const 2 call $~lib/builtins/abort unreachable @@ -31328,7 +31480,7 @@ if i32.const 0 i32.const 376 - i32.const 529 + i32.const 562 i32.const 2 call $~lib/builtins/abort unreachable @@ -31343,7 +31495,7 @@ if i32.const 0 i32.const 376 - i32.const 530 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -31358,7 +31510,7 @@ if i32.const 0 i32.const 376 - i32.const 531 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -31373,7 +31525,7 @@ if i32.const 0 i32.const 376 - i32.const 532 + i32.const 565 i32.const 2 call $~lib/builtins/abort unreachable @@ -31390,7 +31542,7 @@ if i32.const 0 i32.const 376 - i32.const 534 + i32.const 567 i32.const 2 call $~lib/builtins/abort unreachable @@ -31407,7 +31559,7 @@ if i32.const 0 i32.const 376 - i32.const 535 + i32.const 568 i32.const 2 call $~lib/builtins/abort unreachable @@ -31424,7 +31576,7 @@ if i32.const 0 i32.const 376 - i32.const 536 + i32.const 569 i32.const 2 call $~lib/builtins/abort unreachable @@ -31441,7 +31593,7 @@ if i32.const 0 i32.const 376 - i32.const 537 + i32.const 570 i32.const 2 call $~lib/builtins/abort unreachable @@ -31456,7 +31608,7 @@ if i32.const 0 i32.const 376 - i32.const 538 + i32.const 571 i32.const 2 call $~lib/builtins/abort unreachable @@ -31471,7 +31623,7 @@ if i32.const 0 i32.const 376 - i32.const 539 + i32.const 572 i32.const 2 call $~lib/builtins/abort unreachable @@ -31486,7 +31638,7 @@ if i32.const 0 i32.const 376 - i32.const 540 + i32.const 573 i32.const 2 call $~lib/builtins/abort unreachable @@ -31501,7 +31653,7 @@ if i32.const 0 i32.const 376 - i32.const 541 + i32.const 574 i32.const 2 call $~lib/builtins/abort unreachable @@ -31516,7 +31668,7 @@ if i32.const 0 i32.const 376 - i32.const 542 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -31531,7 +31683,7 @@ if i32.const 0 i32.const 376 - i32.const 543 + i32.const 576 i32.const 2 call $~lib/builtins/abort unreachable @@ -31551,7 +31703,7 @@ if i32.const 0 i32.const 376 - i32.const 547 + i32.const 580 i32.const 2 call $~lib/builtins/abort unreachable @@ -31566,7 +31718,7 @@ if i32.const 0 i32.const 376 - i32.const 548 + i32.const 581 i32.const 2 call $~lib/builtins/abort unreachable @@ -31581,7 +31733,7 @@ if i32.const 0 i32.const 376 - i32.const 549 + i32.const 582 i32.const 2 call $~lib/builtins/abort unreachable @@ -31596,7 +31748,7 @@ if i32.const 0 i32.const 376 - i32.const 550 + i32.const 583 i32.const 2 call $~lib/builtins/abort unreachable @@ -31611,7 +31763,7 @@ if i32.const 0 i32.const 376 - i32.const 551 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -31626,7 +31778,7 @@ if i32.const 0 i32.const 376 - i32.const 552 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -31641,7 +31793,7 @@ if i32.const 0 i32.const 376 - i32.const 553 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable @@ -31656,7 +31808,7 @@ if i32.const 0 i32.const 376 - i32.const 554 + i32.const 587 i32.const 2 call $~lib/builtins/abort unreachable @@ -31670,18 +31822,18 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#get:buffer (; 472 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:buffer (; 473 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 473 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 474 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 474 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 475 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -31764,7 +31916,7 @@ local.get $7 call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int8Array.wrap (; 475 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array.wrap (; 476 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -31794,7 +31946,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -31816,7 +31968,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -31830,7 +31982,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -31852,7 +32004,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -31897,7 +32049,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int8Array.wrap|trampoline (; 476 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array.wrap|trampoline (; 477 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -31920,7 +32072,7 @@ local.get $2 call $~lib/typedarray/Int8Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 477 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 478 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -32013,7 +32165,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -32039,12 +32191,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#get:buffer (; 478 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:buffer (; 479 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint8Array.wrap (; 479 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap (; 480 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -32074,7 +32226,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -32096,7 +32248,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -32110,7 +32262,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -32132,7 +32284,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -32177,7 +32329,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint8Array.wrap|trampoline (; 480 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap|trampoline (; 481 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -32200,7 +32352,7 @@ local.get $2 call $~lib/typedarray/Uint8Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 481 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 482 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -32291,7 +32443,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -32317,12 +32469,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#get:buffer (; 482 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#get:buffer (; 483 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint8ClampedArray.wrap (; 483 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray.wrap (; 484 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -32352,7 +32504,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -32374,7 +32526,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -32388,7 +32540,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -32410,7 +32562,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -32455,7 +32607,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint8ClampedArray.wrap|trampoline (; 484 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray.wrap|trampoline (; 485 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -32478,7 +32630,7 @@ local.get $2 call $~lib/typedarray/Uint8ClampedArray.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 485 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 486 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -32569,7 +32721,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -32595,12 +32747,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#get:buffer (; 486 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#get:buffer (; 487 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int16Array.wrap (; 487 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array.wrap (; 488 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -32630,7 +32782,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -32652,7 +32804,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -32666,7 +32818,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -32688,7 +32840,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -32733,7 +32885,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int16Array.wrap|trampoline (; 488 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array.wrap|trampoline (; 489 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -32756,7 +32908,7 @@ local.get $2 call $~lib/typedarray/Int16Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 489 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 490 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -32849,7 +33001,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -32875,12 +33027,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#get:buffer (; 490 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#get:buffer (; 491 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint16Array.wrap (; 491 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array.wrap (; 492 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -32910,7 +33062,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -32932,7 +33084,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -32946,7 +33098,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -32968,7 +33120,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -33013,7 +33165,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint16Array.wrap|trampoline (; 492 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array.wrap|trampoline (; 493 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -33036,7 +33188,7 @@ local.get $2 call $~lib/typedarray/Uint16Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 493 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 494 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -33127,7 +33279,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -33153,12 +33305,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#get:buffer (; 494 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#get:buffer (; 495 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int32Array.wrap (; 495 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array.wrap (; 496 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -33188,7 +33340,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -33210,7 +33362,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -33224,7 +33376,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -33246,7 +33398,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -33291,7 +33443,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int32Array.wrap|trampoline (; 496 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array.wrap|trampoline (; 497 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -33314,7 +33466,7 @@ local.get $2 call $~lib/typedarray/Int32Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 497 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 498 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -33403,7 +33555,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -33429,12 +33581,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#get:buffer (; 498 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#get:buffer (; 499 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint32Array.wrap (; 499 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array.wrap (; 500 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -33464,7 +33616,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -33486,7 +33638,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -33500,7 +33652,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -33522,7 +33674,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -33567,7 +33719,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint32Array.wrap|trampoline (; 500 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array.wrap|trampoline (; 501 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -33590,7 +33742,7 @@ local.get $2 call $~lib/typedarray/Uint32Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 501 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 502 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -33679,7 +33831,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -33705,12 +33857,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#get:buffer (; 502 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#get:buffer (; 503 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Int64Array.wrap (; 503 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array.wrap (; 504 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -33740,7 +33892,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -33762,7 +33914,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -33776,7 +33928,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -33798,7 +33950,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -33843,7 +33995,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Int64Array.wrap|trampoline (; 504 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array.wrap|trampoline (; 505 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -33866,7 +34018,7 @@ local.get $2 call $~lib/typedarray/Int64Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 505 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 506 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -33956,7 +34108,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -33982,12 +34134,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#get:buffer (; 506 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#get:buffer (; 507 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint64Array.wrap (; 507 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array.wrap (; 508 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -34017,7 +34169,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -34039,7 +34191,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -34053,7 +34205,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -34075,7 +34227,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -34120,7 +34272,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Uint64Array.wrap|trampoline (; 508 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array.wrap|trampoline (; 509 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -34143,7 +34295,7 @@ local.get $2 call $~lib/typedarray/Uint64Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 509 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 510 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -34233,7 +34385,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -34259,12 +34411,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#get:buffer (; 510 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#get:buffer (; 511 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Float32Array.wrap (; 511 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array.wrap (; 512 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -34294,7 +34446,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -34316,7 +34468,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -34330,7 +34482,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -34352,7 +34504,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -34397,7 +34549,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Float32Array.wrap|trampoline (; 512 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array.wrap|trampoline (; 513 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -34420,7 +34572,7 @@ local.get $2 call $~lib/typedarray/Float32Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 513 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 514 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -34510,7 +34662,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -34536,12 +34688,12 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#get:buffer (; 514 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#get:buffer (; 515 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Float64Array.wrap (; 515 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array.wrap (; 516 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -34571,7 +34723,7 @@ call $~lib/rt/pure/__release i32.const 280 i32.const 432 - i32.const 1560 + i32.const 1629 i32.const 4 call $~lib/builtins/abort unreachable @@ -34593,7 +34745,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1567 + i32.const 1636 i32.const 8 call $~lib/builtins/abort unreachable @@ -34607,7 +34759,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1572 + i32.const 1641 i32.const 6 call $~lib/builtins/abort unreachable @@ -34629,7 +34781,7 @@ call $~lib/rt/pure/__release i32.const 24 i32.const 432 - i32.const 1578 + i32.const 1647 i32.const 4 call $~lib/builtins/abort unreachable @@ -34674,7 +34826,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/typedarray/Float64Array.wrap|trampoline (; 516 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array.wrap|trampoline (; 517 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -34697,7 +34849,7 @@ local.get $2 call $~lib/typedarray/Float64Array.wrap ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 517 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 518 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -34787,7 +34939,7 @@ if i32.const 0 i32.const 376 - i32.const 604 + i32.const 637 i32.const 4 call $~lib/builtins/abort unreachable @@ -34813,7 +34965,7 @@ local.get $6 call $~lib/rt/pure/__release ) - (func $start:std/typedarray (; 518 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 519 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -34824,6 +34976,23 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) i32.const 0 call $std/typedarray/testInstantiate i32.const 5 @@ -35913,11 +36082,467 @@ i32.const 5 call $~lib/typedarray/Int32Array#__set local.get $3 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $8 + local.get $3 + i32.const 0 + i32.const 3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $0 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 976 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $4 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 248 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $2 + local.set $3 + local.get $3 + i32.const 1 + i32.const 3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $2 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1016 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 250 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $9 + local.set $3 + local.get $3 + i32.const 1 + i32.const 2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1056 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 252 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $1 + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + local.set $3 + local.get $3 + i32.const 2 + i32.const 2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $1 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1096 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $10 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 254 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 + local.set $3 + local.get $3 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $7 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1136 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $12 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 256 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $11 + local.get $3 + call $~lib/rt/pure/__release + local.get $11 + local.set $3 + local.get $3 i32.const 1 + i32.const 3 i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.set $8 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $11 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1176 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $14 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 258 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $13 + local.get $3 + call $~lib/rt/pure/__release + local.get $13 + local.set $3 + local.get $3 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $13 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1216 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $16 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 260 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $15 + local.get $3 + call $~lib/rt/pure/__release + local.get $15 + local.set $3 + local.get $3 + i32.const 0 + i32.const -2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $15 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1256 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $18 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 262 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $17 + local.get $3 + call $~lib/rt/pure/__release + local.get $17 + local.set $3 + local.get $3 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $17 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1296 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $20 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 264 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $19 + local.get $3 + call $~lib/rt/pure/__release + local.get $19 + local.set $3 + local.get $3 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $19 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1336 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $22 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 266 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $21 + local.get $3 + call $~lib/rt/pure/__release + local.get $21 + local.set $3 + local.get $3 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $21 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1376 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $24 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 268 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.set $23 + local.get $3 + call $~lib/rt/pure/__release + local.get $23 + local.set $3 + local.get $3 + i32.const -4 + i32.const -3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.tee $23 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 1416 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $26 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 270 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release local.get $8 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $20 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $21 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release + local.get $26 + call $~lib/rt/pure/__release + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.set $26 + local.get $26 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $26 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $26 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $26 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $26 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $26 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.set $23 + local.get $23 call $~lib/typedarray/Int32Array#get:length i32.const 3 i32.eq @@ -35925,12 +36550,12 @@ if i32.const 0 i32.const 376 - i32.const 249 + i32.const 282 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $8 + local.get $23 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 4 i32.eq @@ -35938,12 +36563,12 @@ if i32.const 0 i32.const 376 - i32.const 250 + i32.const 283 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $8 + local.get $23 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 12 i32.eq @@ -35951,17 +36576,17 @@ if i32.const 0 i32.const 376 - i32.const 251 + i32.const 284 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $26 i32.const 1 i32.const 3 call $~lib/typedarray/Int32Array#slice - local.set $0 - local.get $0 + local.set $24 + local.get $24 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 2 @@ -35970,12 +36595,12 @@ if i32.const 0 i32.const 376 - i32.const 254 + i32.const 287 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $24 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -35984,12 +36609,12 @@ if i32.const 0 i32.const 376 - i32.const 255 + i32.const 288 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $24 call $~lib/typedarray/Int32Array#get:length i32.const 2 i32.eq @@ -35997,12 +36622,12 @@ if i32.const 0 i32.const 376 - i32.const 256 + i32.const 289 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $24 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 i32.eq @@ -36010,12 +36635,12 @@ if i32.const 0 i32.const 376 - i32.const 257 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $24 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 8 i32.eq @@ -36023,17 +36648,17 @@ if i32.const 0 i32.const 376 - i32.const 258 + i32.const 291 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $8 + local.get $23 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#slice - local.set $7 - local.get $7 + local.set $21 + local.get $21 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -36042,12 +36667,12 @@ if i32.const 0 i32.const 376 - i32.const 261 + i32.const 294 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $21 call $~lib/typedarray/Int32Array#get:length i32.const 1 i32.eq @@ -36055,12 +36680,12 @@ if i32.const 0 i32.const 376 - i32.const 262 + i32.const 295 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $21 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 i32.eq @@ -36068,12 +36693,12 @@ if i32.const 0 i32.const 376 - i32.const 263 + i32.const 296 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $21 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 4 i32.eq @@ -36081,79 +36706,79 @@ if i32.const 0 i32.const 376 - i32.const 264 + i32.const 297 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $26 i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int32Array#slice - local.set $4 - local.get $4 - local.get $3 + local.set $22 + local.get $22 + local.get $26 i32.ne i32.eqz if i32.const 0 i32.const 376 - i32.const 267 + i32.const 300 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $22 call $~lib/typedarray/Int32Array#get:length - local.get $3 + local.get $26 call $~lib/typedarray/Int32Array#get:length i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 268 + i32.const 301 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $22 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 + local.get $26 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 269 + i32.const 302 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $22 call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $3 + local.get $26 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 270 + i32.const 303 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $26 call $~lib/rt/pure/__release - local.get $8 + local.get $23 call $~lib/rt/pure/__release - local.get $0 + local.get $24 call $~lib/rt/pure/__release - local.get $7 + local.get $21 call $~lib/rt/pure/__release - local.get $4 + local.get $22 call $~lib/rt/pure/__release call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> call $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> @@ -36277,7 +36902,7 @@ call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> ) - (func $start (; 519 ;) (type $FUNCSIG$v) + (func $start (; 520 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -36287,13 +36912,13 @@ end call $start:std/typedarray ) - (func $~lib/array/Array#__visit_impl (; 520 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 521 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 521 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 522 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/rt/pure/markGray (; 522 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 523 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -36320,7 +36945,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 523 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 524 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -36337,7 +36962,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 524 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 525 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -36374,7 +36999,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 525 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 526 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -36412,7 +37037,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__visit (; 526 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 527 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -36542,7 +37167,7 @@ end end ) - (func $~lib/rt/__visit_members (; 527 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 528 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break block $switch$1$default @@ -36582,6 +37207,6 @@ end return ) - (func $null (; 528 ;) (type $FUNCSIG$v) + (func $null (; 529 ;) (type $FUNCSIG$v) ) ) From a8c363cba8ce32269a5a1c9ccdba6098a8037c5c Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Fri, 13 Sep 2019 15:51:41 -0400 Subject: [PATCH 23/24] Change encode API and update near-runtime --- bindings/assembly/nearEntry.ts | 117 +- bindings/dist/transformerBundle.js | 2 +- bindings/src/index.ts | 21 +- dist/asc.js | 2 +- dist/asc.js.map | 2 +- package-lock.json | 2 +- tests/near-bindgen/assembly/hello/main.ts | 13 +- tests/near-bindgen/assembly/test.ts | 7 +- tests/near-bindgen/out/assembly/hello/main.ts | 75 +- .../near-bindgen/out/assembly/hello/model.ts | 76 +- tests/near-bindgen/out/assembly/model.ts | 158 ++- tests/near-bindgen/out/assembly/test.ts | 37 +- tests/near-bindgen/out/test.wat | 1200 ++++++++++------- tests/near-bindgen/package.json | 2 +- 14 files changed, 1024 insertions(+), 690 deletions(-) diff --git a/bindings/assembly/nearEntry.ts b/bindings/assembly/nearEntry.ts index 443e2034eb..7ed3714a60 100644 --- a/bindings/assembly/nearEntry.ts +++ b/bindings/assembly/nearEntry.ts @@ -1,14 +1,11 @@ -import { storage, near, base64, base58 } from 'near-runtime-ts'; +import { storage, near, base64, base58 } from "near-runtime-ts"; //@ts-ignore -import { Buffer } from "assemblyscript-json/util"; import { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json"; import { u128 } from "bignum"; // Runtime functions // tslint:disable: no-unsafe-any - - type Usize = u64; //@ts-ignore @global @@ -32,19 +29,15 @@ declare function value_return(value_len: Usize, value_ptr: Usize): void; @external("env", "panic") declare function panic(): void; - - -/// - abstract class Value { static String(str: string): Value { - return new Str(str) + return new Str(str); } static Number(num: i64): Value { - return new Num(num) + return new Num(num); } static Bool(b: bool): Value { - return new Bools(b) + return new Bools(b); } static Null(): Value { return new Null(); @@ -57,22 +50,22 @@ abstract class Value { } toString(): string { - if (this instanceof Str){ + if (this instanceof Str) { return (this).toString(); } - if (this instanceof Num){ + if (this instanceof Num) { return (this).toString(); } - if (this instanceof Bools){ + if (this instanceof Bools) { return (this).toString(); } - if (this instanceof Null){ + if (this instanceof Null) { return (this).toString(); } - if (this instanceof Arr){ + if (this instanceof Arr) { return (this).toString(); } - if (this instanceof Obj){ + if (this instanceof Obj) { return (this).toString(); } return "Value"; @@ -128,7 +121,7 @@ class Arr extends Value { } push(obj: Value): void { - this._arr.push(obj) + this._arr.push(obj); } toString(): string { @@ -158,15 +151,15 @@ class Obj extends Value { if (!this._obj.has(key)) { return null; } - return this._obj.get(key) + return this._obj.get(key); } toString(): string { - let objs: string[] = []; - for (let i: i32 = 0; i < this.keys.length; i++){ - objs.push("\"" +this.keys[i]+"\":"+ this._obj.get(this.keys[i]).toString()); + const objs: string[] = []; + for (let i: i32 = 0; i < this.keys.length; i++) { + objs.push("\"" + this.keys[i] + "\":" + this._obj.get(this.keys[i]).toString()); } - return "{"+ objs.join(",") + "}"; + return "{" + objs.join(",") + "}"; } has(key: string): bool { @@ -182,7 +175,7 @@ class Handler extends ThrowingJSONHandler { } reset(): void { - while (this.stack.length > 0){ + while (this.stack.length > 0) { this.stack.pop(); } } @@ -192,27 +185,27 @@ class Handler extends ThrowingJSONHandler { } setString(name: string, value: string): void { - let obj: Value = Value.String(value); + const obj: Value = Value.String(value); this.addValue(name, obj); } setBoolean(name: string, value: bool): void { - let obj = Value.Bool(value); + const obj = Value.Bool(value); this.addValue(name, obj); } setNull(name: string): void { - let obj = Value.Null(); + const obj = Value.Null(); this.addValue(name, obj); } setInteger(name: string, value: i64): void { - let obj = Value.Number(value); + const obj = Value.Number(value); this.addValue(name, obj); } pushArray(name: string): bool { - let obj: Value = Value.Array(); + const obj: Value = Value.Array(); this.addValue(name, obj); this.stack.push(obj); return true; @@ -225,9 +218,9 @@ class Handler extends ThrowingJSONHandler { } pushObject(name: string): bool { - let obj: Value = Value.Object(); + const obj: Value = Value.Object(); this.addValue(name, obj); - this.stack.push(obj) + this.stack.push(obj); return true; } @@ -243,7 +236,7 @@ class Handler extends ThrowingJSONHandler { return; } if (this.peek instanceof Obj) { - (this.peek as Obj).set(name, obj) + (this.peek as Obj).set(name, obj); } else if (this.peek instanceof Arr) { (this.peek).push(obj); @@ -251,27 +244,21 @@ class Handler extends ThrowingJSONHandler { } } - @global() class JSON { private static handler: Handler = new Handler(); private static decoder: JSONDecoder = new JSONDecoder(JSON.handler); static parse(str: Uint8Array ): Obj { JSON.decoder.deserialize(str); - let res = JSON.decoder.handler.peek as Obj; + const res = JSON.decoder.handler.peek as Obj; JSON.decoder.handler.reset(); return res; } } - - - - - //@ts-ignore @global -function encode(encoder: JSONEncoder, value: T, name: string | null = ""): JSONEncoder { +function encode(value: T, name: string | null = "", encoder: JSONEncoder = new JSONEncoder()): Output { if (isBoolean()) { //@ts-ignore encoder.setBoolean(name, value); @@ -298,54 +285,62 @@ function encode(encoder: JSONEncoder, value: T, name: string | null = ""): JS encoder.pushArray(name); for (let i: i32 = 0; i < value.length; i++) { //@ts-ignore - encode(encoder, value[i], null); + encode, JSONEncoder>(value[i], null, encoder); } encoder.popArray(); } } else { // Is an object - if (value instanceof u128){ + if (value instanceof u128) { encoder.setString(name, value.toString()); } else { //@ts-ignore - value.encode(encoder, name); + value._encode(name, encoder); } } } else { throw new Error("Encoding failed"); } - return encoder; + var output: Output; + //@ts-ignore + if (output instanceof Uint8Array) { + //@ts-ignore + return encoder.serialize(); + } + //@ts-ignore + assert( output instanceof JSONEncoder, "Bad return type for encoder"); + //@ts-ignore + return encoder; } //@ts-ignore @inline function getStr(val: Value, name: String): string { - assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null"); + assert(val instanceof Str, "Value with Key: " + name + " is not a string or null"); return (val)._str; } function decodeArray(val: Value, name: string): Array { assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null."); - let res = new Array(); - let arr = (val)._arr; - for (let i: i32 = 0; i < arr.length; i++){ + const res = new Array(); + const arr = (val)._arr; + for (let i: i32 = 0; i < arr.length; i++) { let item: T = decode(arr[i]); res.push(item); } return res; } - //@ts-ignore @global function decode(buf: V, name: string = ""): T { - let buffer = (buf instanceof Uint8Array ? JSON.parse(buf) : buf); - let val: Value; - if (buffer instanceof Obj && name != ""){ + const buffer = (buf instanceof Uint8Array ? JSON.parse(buf) : buf); + var val: Value; + if (buffer instanceof Obj && name != "") { const obj: Obj = buffer; let res = obj.get(name); - if (res == null){ + if (res == null) { //@ts-ignore - return null + return null; } val = res; }else { @@ -361,20 +356,20 @@ function decode(buf: V, name: string = ""): T { return getStr(val, name); } if (isBoolean()) { - assert(val instanceof Bools, "Value with Key: "+ name + " with type " + nameof() +" is not a string"); + assert(val instanceof Bools, "Value with Key: " + name + " with type " + nameof() + " is not a string"); //@ts-ignore - return (val)._bool + return (val)._bool; } var value: T; if (isInteger()) { //@ts-ignore if (value instanceof u64 || value instanceof i64) { - assert(val instanceof Str, "Value with Key: "+ name + " with type " + nameof() +" is an 64-bit integer and is expected to be encoded as a string"); + assert(val instanceof Str, "Value with Key: " + name + " with type " + nameof() + " is an 64-bit integer and is expected to be encoded as a string"); let str = (val)._str; //@ts-ignore return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str); } - assert(val instanceof Num, "Value with Key: "+ name + " with type " + nameof() +" is not an Integer"); + assert(val instanceof Num, "Value with Key: " + name + " with type " + nameof() + " is not an Integer"); //@ts-ignore return (val)._num; } @@ -383,21 +378,21 @@ function decode(buf: V, name: string = ""): T { //@ts-ignore if (value instanceof Uint8Array ) { //@ts-ignore - return base64.decode(getStr(val, name)) + return base64.decode(getStr(val, name)); } //@ts-ignore // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array") //@ts-ignore only checking the instance return decodeArray>(val, name); } - if (val instanceof Str){ + if (val instanceof Str) { //@ts-ignore if (value instanceof u128) { //@ts-ignore return u128.fromString(getStr(val, name)); } } - assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null") + assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null"); value = instantiate(); //@ts-ignore return value.decode(val); diff --git a/bindings/dist/transformerBundle.js b/bindings/dist/transformerBundle.js index 9086e5ca6e..0decf76c4b 100644 --- a/bindings/dist/transformerBundle.js +++ b/bindings/dist/transformerBundle.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.transformer=t():e.transformer=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=6)}([function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]="SOURCE",e[e.NAMEDTYPE=1]="NAMEDTYPE",e[e.FUNCTIONTYPE=2]="FUNCTIONTYPE",e[e.TYPENAME=3]="TYPENAME",e[e.TYPEPARAMETER=4]="TYPEPARAMETER",e[e.PARAMETER=5]="PARAMETER",e[e.IDENTIFIER=6]="IDENTIFIER",e[e.ASSERTION=7]="ASSERTION",e[e.BINARY=8]="BINARY",e[e.CALL=9]="CALL",e[e.CLASS=10]="CLASS",e[e.COMMA=11]="COMMA",e[e.ELEMENTACCESS=12]="ELEMENTACCESS",e[e.FALSE=13]="FALSE",e[e.FUNCTION=14]="FUNCTION",e[e.INSTANCEOF=15]="INSTANCEOF",e[e.LITERAL=16]="LITERAL",e[e.NEW=17]="NEW",e[e.NULL=18]="NULL",e[e.PARENTHESIZED=19]="PARENTHESIZED",e[e.PROPERTYACCESS=20]="PROPERTYACCESS",e[e.TERNARY=21]="TERNARY",e[e.SUPER=22]="SUPER",e[e.THIS=23]="THIS",e[e.TRUE=24]="TRUE",e[e.CONSTRUCTOR=25]="CONSTRUCTOR",e[e.UNARYPOSTFIX=26]="UNARYPOSTFIX",e[e.UNARYPREFIX=27]="UNARYPREFIX",e[e.BLOCK=28]="BLOCK",e[e.BREAK=29]="BREAK",e[e.CONTINUE=30]="CONTINUE",e[e.DO=31]="DO",e[e.EMPTY=32]="EMPTY",e[e.EXPORT=33]="EXPORT",e[e.EXPORTDEFAULT=34]="EXPORTDEFAULT",e[e.EXPORTIMPORT=35]="EXPORTIMPORT",e[e.EXPRESSION=36]="EXPRESSION",e[e.FOR=37]="FOR",e[e.IF=38]="IF",e[e.IMPORT=39]="IMPORT",e[e.RETURN=40]="RETURN",e[e.SWITCH=41]="SWITCH",e[e.THROW=42]="THROW",e[e.TRY=43]="TRY",e[e.VARIABLE=44]="VARIABLE",e[e.VOID=45]="VOID",e[e.WHILE=46]="WHILE",e[e.CLASSDECLARATION=47]="CLASSDECLARATION",e[e.ENUMDECLARATION=48]="ENUMDECLARATION",e[e.ENUMVALUEDECLARATION=49]="ENUMVALUEDECLARATION",e[e.FIELDDECLARATION=50]="FIELDDECLARATION",e[e.FUNCTIONDECLARATION=51]="FUNCTIONDECLARATION",e[e.IMPORTDECLARATION=52]="IMPORTDECLARATION",e[e.INDEXSIGNATUREDECLARATION=53]="INDEXSIGNATUREDECLARATION",e[e.INTERFACEDECLARATION=54]="INTERFACEDECLARATION",e[e.METHODDECLARATION=55]="METHODDECLARATION",e[e.NAMESPACEDECLARATION=56]="NAMESPACEDECLARATION",e[e.TYPEDECLARATION=57]="TYPEDECLARATION",e[e.VARIABLEDECLARATION=58]="VARIABLEDECLARATION",e[e.DECORATOR=59]="DECORATOR",e[e.EXPORTMEMBER=60]="EXPORTMEMBER",e[e.SWITCHCASE=61]="SWITCHCASE",e[e.COMMENT=62]="COMMENT"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName("",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text="",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new j;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(".")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]="DEFAULT",e[e.OPTIONAL=1]="OPTIONAL",e[e.REST=2]="REST"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if("builtin"==t)return E.BUILTIN;break;case 101:if("external"==t)return E.EXTERNAL;break;case 103:if("global"==t)return E.GLOBAL;break;case 105:if("inline"==t)return E.INLINE;break;case 108:if("lazy"==t)return E.LAZY;break;case 111:if("operator"==t)return E.OPERATOR;break;case 115:if("sealed"==t)return E.SEALED;break;case 117:if("unmanaged"==t)return E.UNMANAGED;if("unsafe"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),"operator"==t)switch(i.charCodeAt(0)){case 98:if("binary"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case"prefix":return E.OPERATOR_PREFIX;case"postfix":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]="CUSTOM",e[e.GLOBAL=1]="GLOBAL",e[e.OPERATOR=2]="OPERATOR",e[e.OPERATOR_BINARY=3]="OPERATOR_BINARY",e[e.OPERATOR_PREFIX=4]="OPERATOR_PREFIX",e[e.OPERATOR_POSTFIX=5]="OPERATOR_POSTFIX",e[e.UNMANAGED=6]="UNMANAGED",e[e.SEALED=7]="SEALED",e[e.INLINE=8]="INLINE",e[e.EXTERNAL=9]="EXTERNAL",e[e.BUILTIN=10]="BUILTIN",e[e.LAZY=11]="LAZY",e[e.UNSAFE=12]="UNSAFE"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]="LINE",e[e.TRIPLE=1]="TRIPLE",e[e.BLOCK=2]="BLOCK"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]="FLOAT",e[e.INTEGER=1]="INTEGER",e[e.STRING=2]="STRING",e[e.REGEXP=3]="REGEXP",e[e.ARRAY=4]="ARRAY",e[e.OBJECT=5]="OBJECT"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]="PREFIX",e[e.AS=1]="AS",e[e.NONNULL=2]="NONNULL"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,"typeArgumentsRange",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"argumentsRange",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text="constructor",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text="null",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text="super",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text="this",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text="true",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text="false",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=j;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=Q;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(Q);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(Q);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]="USER",e[e.USER_ENTRY=1]="USER_ENTRY",e[e.LIBRARY=2]="LIBRARY",e[e.LIBRARY_ENTRY=3]="LIBRARY_ENTRY"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i";case s.LESSTHAN_EQUALS:return"<=";case s.GREATERTHAN_EQUALS:return">=";case s.EQUALS_EQUALS:return"==";case s.EXCLAMATION_EQUALS:return"!=";case s.EQUALS_EQUALS_EQUALS:return"===";case s.EXCLAMATION_EQUALS_EQUALS:return"!==";case s.PLUS:return"+";case s.MINUS:return"-";case s.ASTERISK_ASTERISK:return"**";case s.ASTERISK:return"*";case s.SLASH:return"/";case s.PERCENT:return"%";case s.PLUS_PLUS:return"++";case s.MINUS_MINUS:return"--";case s.LESSTHAN_LESSTHAN:return"<<";case s.GREATERTHAN_GREATERTHAN:return">>";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case s.AMPERSAND:return"&";case s.BAR:return"|";case s.CARET:return"^";case s.EXCLAMATION:return"!";case s.TILDE:return"~";case s.AMPERSAND_AMPERSAND:return"&&";case s.BAR_BAR:return"||";case s.EQUALS:return"=";case s.PLUS_EQUALS:return"+=";case s.MINUS_EQUALS:return"-=";case s.ASTERISK_EQUALS:return"*=";case s.ASTERISK_ASTERISK_EQUALS:return"**=";case s.SLASH_EQUALS:return"/=";case s.PERCENT_EQUALS:return"%=";case s.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case s.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case s.AMPERSAND_EQUALS:return"&=";case s.BAR_EQUALS:return"|=";case s.CARET_EQUALS:return"^=";default:return assert(!1),""}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error("source mismatch");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes("@nearfile")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},t.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return"void"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),s=p(n).includes("null"),a=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+a+"(): void {"),i.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==p(n)?this.sb.push(" let result: "+p(n)+" = "+a+"("):this.sb.push(" "+a+"("),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==p(n)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+r+">() || isNullable<"+r+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+r+">(encoder, result"+(s?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+a+" as "+a+" }\n")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+="<"+e.typeParameters.map(p).join(", ")+">"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf("}")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var r=t.typeName(n);i+="\n static decode(json: Uint8Array): "+r+" {\n let value = instantiate<"+r+">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): "+r+' {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, "argument must be Uint8Array or Json Object");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): '+r+" {\n "+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,"this."+t+' = obj.has("'+t+'") ? ')+": this."+t+";"})}(n).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return"encode<"+t+">(encoder, this."+i+', "'+i+'");'})}(n).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return i});return this.sb.concat(i).join("\n")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=""),t+"decode<"+p(e.type)+', Obj>(obj, "'+p(e.name)+'")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf("\n")).includes("out");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t("out/"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?"":"./")+n.normalizedPath,h(n))})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(t.Feature||(t.Feature={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(t.Target||(t.Target={}))},function(e,t,i){"use strict";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),""}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE="",t.COLOR_YELLOW="",t.COLOR_RED="",t.COLOR_RESET="",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace("{0}",n)),null!=s&&(o=o.replace("{1}",s)),null!=a&&(o=o.replace("{2}",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:"."}function a(e){var t=e.length;if(t<=1){if(0==t)return".";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return"."}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith("std/")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=" ",r=" ",s=" ";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){"use strict";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i")}e.isNullable&&n.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?"((":"(");var n=e.explicitThisType;n&&(i.push("this: "),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(", "),this.serializeParameter(r[0]);for(var a=1;a "),this.visitTypeNode(o)):i.push(") => void"),t&&i.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(" extends "),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push("="),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push("[");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(" as "),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(" "),t.push(a.operatorTokenToString(e.operator)),t.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push("<"),this.visitTypeNode(i[0]);for(var r=1;r(")}}else t.push("(");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push("\\0"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\b");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\t");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\n");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\v");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\f");break;case 13:s>n&&i.push(e.substring(n,s)),i.push("\\r"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push("\\'"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push("\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push("/"),t.push(e.pattern),t.push("/"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push("("),this.visitNode(e.expression),t.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(" ? "),this.visitNode(e.ifThen),t.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push("\n"):t.push(";\n")}else t.push(";\n")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push("{\n");for(var r=++this.indentLevel,a=0;a")}var _=e.extendsType;_&&(u.push(" extends "),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(" implements "),this.visitTypeNode(p[0]);for(a=1;a")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push("(");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push("this: "),this.visitTypeNode(_)),c){_&&t.push(", "),this.serializeParameter(u[0]);for(o=1;o "),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(" => "),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(")"):(t.push("): "),this.visitTypeNode(h)),p&&(t.push(" "),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push("if ("),this.visitNode(e.condition),t.push(") ");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(";\n");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(" else "):t.push("else "),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(" as "),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push("import ");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push("{\n");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o")}var u=e.extendsType;u&&(a.push(" extends "),this.visitTypeNode(u)),a.push(" {\n");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n")}}r.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push("!"),t&&(i.push(": "),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(" = "),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name="UnreachableError",r.prototype.message="unreachable",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name="AssertionError",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return"number"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return"object"==typeof e||"string"==typeof e},t.isFunction=function(e){return"function"==typeof e},t.isString=function(e){return"string"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return A;if("number"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error("division by zero");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&"function"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])}); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.transformer=t():e.transformer=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=6)}([function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]="SOURCE",e[e.NAMEDTYPE=1]="NAMEDTYPE",e[e.FUNCTIONTYPE=2]="FUNCTIONTYPE",e[e.TYPENAME=3]="TYPENAME",e[e.TYPEPARAMETER=4]="TYPEPARAMETER",e[e.PARAMETER=5]="PARAMETER",e[e.IDENTIFIER=6]="IDENTIFIER",e[e.ASSERTION=7]="ASSERTION",e[e.BINARY=8]="BINARY",e[e.CALL=9]="CALL",e[e.CLASS=10]="CLASS",e[e.COMMA=11]="COMMA",e[e.ELEMENTACCESS=12]="ELEMENTACCESS",e[e.FALSE=13]="FALSE",e[e.FUNCTION=14]="FUNCTION",e[e.INSTANCEOF=15]="INSTANCEOF",e[e.LITERAL=16]="LITERAL",e[e.NEW=17]="NEW",e[e.NULL=18]="NULL",e[e.PARENTHESIZED=19]="PARENTHESIZED",e[e.PROPERTYACCESS=20]="PROPERTYACCESS",e[e.TERNARY=21]="TERNARY",e[e.SUPER=22]="SUPER",e[e.THIS=23]="THIS",e[e.TRUE=24]="TRUE",e[e.CONSTRUCTOR=25]="CONSTRUCTOR",e[e.UNARYPOSTFIX=26]="UNARYPOSTFIX",e[e.UNARYPREFIX=27]="UNARYPREFIX",e[e.BLOCK=28]="BLOCK",e[e.BREAK=29]="BREAK",e[e.CONTINUE=30]="CONTINUE",e[e.DO=31]="DO",e[e.EMPTY=32]="EMPTY",e[e.EXPORT=33]="EXPORT",e[e.EXPORTDEFAULT=34]="EXPORTDEFAULT",e[e.EXPORTIMPORT=35]="EXPORTIMPORT",e[e.EXPRESSION=36]="EXPRESSION",e[e.FOR=37]="FOR",e[e.IF=38]="IF",e[e.IMPORT=39]="IMPORT",e[e.RETURN=40]="RETURN",e[e.SWITCH=41]="SWITCH",e[e.THROW=42]="THROW",e[e.TRY=43]="TRY",e[e.VARIABLE=44]="VARIABLE",e[e.VOID=45]="VOID",e[e.WHILE=46]="WHILE",e[e.CLASSDECLARATION=47]="CLASSDECLARATION",e[e.ENUMDECLARATION=48]="ENUMDECLARATION",e[e.ENUMVALUEDECLARATION=49]="ENUMVALUEDECLARATION",e[e.FIELDDECLARATION=50]="FIELDDECLARATION",e[e.FUNCTIONDECLARATION=51]="FUNCTIONDECLARATION",e[e.IMPORTDECLARATION=52]="IMPORTDECLARATION",e[e.INDEXSIGNATUREDECLARATION=53]="INDEXSIGNATUREDECLARATION",e[e.INTERFACEDECLARATION=54]="INTERFACEDECLARATION",e[e.METHODDECLARATION=55]="METHODDECLARATION",e[e.NAMESPACEDECLARATION=56]="NAMESPACEDECLARATION",e[e.TYPEDECLARATION=57]="TYPEDECLARATION",e[e.VARIABLEDECLARATION=58]="VARIABLEDECLARATION",e[e.DECORATOR=59]="DECORATOR",e[e.EXPORTMEMBER=60]="EXPORTMEMBER",e[e.SWITCHCASE=61]="SWITCHCASE",e[e.COMMENT=62]="COMMENT"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName("",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text="",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new j;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(".")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]="DEFAULT",e[e.OPTIONAL=1]="OPTIONAL",e[e.REST=2]="REST"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if("builtin"==t)return E.BUILTIN;break;case 101:if("external"==t)return E.EXTERNAL;break;case 103:if("global"==t)return E.GLOBAL;break;case 105:if("inline"==t)return E.INLINE;break;case 108:if("lazy"==t)return E.LAZY;break;case 111:if("operator"==t)return E.OPERATOR;break;case 115:if("sealed"==t)return E.SEALED;break;case 117:if("unmanaged"==t)return E.UNMANAGED;if("unsafe"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),"operator"==t)switch(i.charCodeAt(0)){case 98:if("binary"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case"prefix":return E.OPERATOR_PREFIX;case"postfix":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]="CUSTOM",e[e.GLOBAL=1]="GLOBAL",e[e.OPERATOR=2]="OPERATOR",e[e.OPERATOR_BINARY=3]="OPERATOR_BINARY",e[e.OPERATOR_PREFIX=4]="OPERATOR_PREFIX",e[e.OPERATOR_POSTFIX=5]="OPERATOR_POSTFIX",e[e.UNMANAGED=6]="UNMANAGED",e[e.SEALED=7]="SEALED",e[e.INLINE=8]="INLINE",e[e.EXTERNAL=9]="EXTERNAL",e[e.BUILTIN=10]="BUILTIN",e[e.LAZY=11]="LAZY",e[e.UNSAFE=12]="UNSAFE"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]="LINE",e[e.TRIPLE=1]="TRIPLE",e[e.BLOCK=2]="BLOCK"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]="FLOAT",e[e.INTEGER=1]="INTEGER",e[e.STRING=2]="STRING",e[e.REGEXP=3]="REGEXP",e[e.ARRAY=4]="ARRAY",e[e.OBJECT=5]="OBJECT"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]="PREFIX",e[e.AS=1]="AS",e[e.NONNULL=2]="NONNULL"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,"typeArgumentsRange",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"argumentsRange",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text="constructor",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text="null",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text="super",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text="this",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text="true",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text="false",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=j;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=Q;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(Q);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(Q);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]="USER",e[e.USER_ENTRY=1]="USER_ENTRY",e[e.LIBRARY=2]="LIBRARY",e[e.LIBRARY_ENTRY=3]="LIBRARY_ENTRY"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i";case s.LESSTHAN_EQUALS:return"<=";case s.GREATERTHAN_EQUALS:return">=";case s.EQUALS_EQUALS:return"==";case s.EXCLAMATION_EQUALS:return"!=";case s.EQUALS_EQUALS_EQUALS:return"===";case s.EXCLAMATION_EQUALS_EQUALS:return"!==";case s.PLUS:return"+";case s.MINUS:return"-";case s.ASTERISK_ASTERISK:return"**";case s.ASTERISK:return"*";case s.SLASH:return"/";case s.PERCENT:return"%";case s.PLUS_PLUS:return"++";case s.MINUS_MINUS:return"--";case s.LESSTHAN_LESSTHAN:return"<<";case s.GREATERTHAN_GREATERTHAN:return">>";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case s.AMPERSAND:return"&";case s.BAR:return"|";case s.CARET:return"^";case s.EXCLAMATION:return"!";case s.TILDE:return"~";case s.AMPERSAND_AMPERSAND:return"&&";case s.BAR_BAR:return"||";case s.EQUALS:return"=";case s.PLUS_EQUALS:return"+=";case s.MINUS_EQUALS:return"-=";case s.ASTERISK_EQUALS:return"*=";case s.ASTERISK_ASTERISK_EQUALS:return"**=";case s.SLASH_EQUALS:return"/=";case s.PERCENT_EQUALS:return"%=";case s.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case s.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case s.AMPERSAND_EQUALS:return"&=";case s.BAR_EQUALS:return"|=";case s.CARET_EQUALS:return"^=";default:return assert(!1),""}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error("source mismatch");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes("@nearfile")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},t.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return"void"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),s=p(n).includes("null"),a=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+a+"(): void {"),i.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==p(n)?this.sb.push(" let result: "+p(n)+" = "+a+"("):this.sb.push(" "+a+"("),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==p(n)&&this.sb.push("\n let encoder = new JSONEncoder();\n let val: Uint8Array;\n if ((isString<"+r+">() || isNullable<"+r+">()) && result == null) {\n encoder.setNull(null);\n val = encoder.serialize();\n } else {\n val = encode<"+r+">(result"+(s?"!":"")+", null, encoder);\n }\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+a+" as "+a+" }\n")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+="<"+e.typeParameters.map(p).join(", ")+">"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf("}")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var r=t.typeName(n);i+="\n static decode(json: Uint8Array): "+r+" {\n let value = instantiate<"+r+">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): "+r+' {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, "argument must be Uint8Array or Json Object");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): '+r+" {\n "+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,"this."+t+' = obj.has("'+t+'") ? ')+": this."+t+";"})}(n).join("\n ")+'\n return this;\n }\n\n _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return"encode<"+t+", JSONEncoder>(this."+i+', "'+i+'", encoder);'})}(n).join("\n ")+"\n encoder.popObject();\n return encoder;\n }\n\n encode(): Uint8Array {\n return this._encode().serialize();\n }\n\n serialize(): Uint8Array {\n return this.encode();\n }\n\n toJSON(): string {\n return this._encode().toString();\n }\n}"}return i});return this.sb.concat(i).join("\n")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=""),t+"decode<"+p(e.type)+', Obj>(obj, "'+p(e.name)+'")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf("\n")).includes("out");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t("out/"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?"":"./")+n.normalizedPath,h(n))})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(t.Feature||(t.Feature={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(t.Target||(t.Target={}))},function(e,t,i){"use strict";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),""}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE="",t.COLOR_YELLOW="",t.COLOR_RED="",t.COLOR_RESET="",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace("{0}",n)),null!=s&&(o=o.replace("{1}",s)),null!=a&&(o=o.replace("{2}",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:"."}function a(e){var t=e.length;if(t<=1){if(0==t)return".";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return"."}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith("std/")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=" ",r=" ",s=" ";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){"use strict";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i")}e.isNullable&&n.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?"((":"(");var n=e.explicitThisType;n&&(i.push("this: "),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(", "),this.serializeParameter(r[0]);for(var a=1;a "),this.visitTypeNode(o)):i.push(") => void"),t&&i.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(" extends "),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push("="),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push("[");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(" as "),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(" "),t.push(a.operatorTokenToString(e.operator)),t.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push("<"),this.visitTypeNode(i[0]);for(var r=1;r(")}}else t.push("(");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push("\\0"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\b");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\t");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\n");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\v");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\f");break;case 13:s>n&&i.push(e.substring(n,s)),i.push("\\r"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push("\\'"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push("\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push("/"),t.push(e.pattern),t.push("/"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push("("),this.visitNode(e.expression),t.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(" ? "),this.visitNode(e.ifThen),t.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push("\n"):t.push(";\n")}else t.push(";\n")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push("{\n");for(var r=++this.indentLevel,a=0;a")}var _=e.extendsType;_&&(u.push(" extends "),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(" implements "),this.visitTypeNode(p[0]);for(a=1;a")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push("(");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push("this: "),this.visitTypeNode(_)),c){_&&t.push(", "),this.serializeParameter(u[0]);for(o=1;o "),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(" => "),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(")"):(t.push("): "),this.visitTypeNode(h)),p&&(t.push(" "),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push("if ("),this.visitNode(e.condition),t.push(") ");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(";\n");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(" else "):t.push("else "),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(" as "),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push("import ");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push("{\n");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o")}var u=e.extendsType;u&&(a.push(" extends "),this.visitTypeNode(u)),a.push(" {\n");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n")}}r.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push("!"),t&&(i.push(": "),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(" = "),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name="UnreachableError",r.prototype.message="unreachable",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name="AssertionError",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return"number"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return"object"==typeof e||"string"==typeof e},t.isFunction=function(e){return"function"==typeof e},t.isString=function(e){return"string"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return A;if("number"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error("division by zero");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&"function"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])}); \ No newline at end of file diff --git a/bindings/src/index.ts b/bindings/src/index.ts index 447891741f..0d24f09a9a 100644 --- a/bindings/src/index.ts +++ b/bindings/src/index.ts @@ -173,12 +173,13 @@ function __wrapper_${name}(): void {`); if (toString(returnType) !== "void") { this.sb.push(` let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString<${returnTypeName}>() || isNullable<${returnTypeName}>()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode<${returnTypeName}>(encoder, result${hasNull ? "!" : ""}, null); + val = encode<${returnTypeName}>(result${hasNull ? "!" : ""}, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer);`); } this.sb.push(`} @@ -186,7 +187,7 @@ function __wrapper_${name}(): void {`); export { __wrapper_${name} as ${name} } `); } - + private typeName(type: TypeNode | ClassDeclaration): string { if (!isClass(type)) { return ASTBuilder.build(type); @@ -251,20 +252,24 @@ export { __wrapper_${name} as ${name} } return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); ${createEncodeStatements(_class).join("\n ")} encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } }`; } @@ -295,7 +300,7 @@ function createEncodeStatements(_class: ClassDeclaration): string[] { (field: FieldDeclaration): string => { let T = toString(field.type!); let name = toString(field.name); - return `encode<${T}>(encoder, this.${name}, "${name}");`; + return `encode<${T}, JSONEncoder>(this.${name}, "${name}", encoder);`; } ); } diff --git a/dist/asc.js b/dist/asc.js index 240d395cad..33b5a7ea80 100644 --- a/dist/asc.js +++ b/dist/asc.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e.assemblyscript)}("undefined"!=typeof self?self:this,function(__WEBPACK_EXTERNAL_MODULE__11__){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=4)}([function(e,n,t){var r,i;n.nextTick=function(e){var n=Array.prototype.slice.call(arguments);n.shift(),setTimeout(function(){e.apply(null,n)},0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(1)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!=typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!=typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(0))},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n){},function(e,n,t){e.exports=t(5)},function(module,exports,__webpack_require__){(function(process,global){process.browser&&(process.cwd=function(){return"."});const fs=__webpack_require__(3),path=__webpack_require__(1),utf8=__webpack_require__(6),colorsUtil=__webpack_require__(7),optionsUtil=__webpack_require__(8),mkdirp=__webpack_require__(9),EOL="win32"===process.platform?"\r\n":"\n",SEP="win32"===process.platform?"\\":"/",nearBindings=__webpack_require__(10),nearLibEntry=path.join(".","..","bindings","assembly","nearEntry.ts");process.removeAllListeners&&process.removeAllListeners("uncaughtException");var assemblyscript,isDev=!1;function checkDiagnostics(e,n){for(var t,r=!1;null!=(t=assemblyscript.nextDiagnostic(e));)n&&n.write(assemblyscript.formatDiagnostic(t,n.isTTY,!0)+EOL+EOL),assemblyscript.isError(t)&&(r=!0);return r}function createStats(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function measure(e){const n=process.hrtime();e();const t=process.hrtime(n);return 1e9*t[0]+t[1]}function formatTime(e){return e?(e/1e6).toFixed(3)+" ms":"N/A"}function printStats(e,n){function t(e,n){return formatTime(e)}(n||process.stdout).write(["I/O Read : "+t(e.readTime,e.readCount),"I/O Write : "+t(e.writeTime,e.writeCount),"Parse : "+t(e.parseTime,e.parseCount),"Compile : "+t(e.compileTime,e.compileCount),"Emit : "+t(e.emitTime,e.emitCount),"Validate : "+t(e.validateTime,e.validateCount),"Optimize : "+t(e.optimizeTime,e.optimizeCount)].join(EOL)+EOL)}function printRTTI(e,n){n||(n=process.stderr),n.write("# Runtime type information (RTTI)\n"),n.write(assemblyscript.buildRTTI(e))}(()=>{try{assemblyscript=__webpack_require__(11)}catch(e){try{__webpack_require__(!function(){var e=new Error("Cannot find module 'ts-node'");throw e.code="MODULE_NOT_FOUND",e}()).register({project:path.join(".","..","src","tsconfig.json")}),__webpack_require__(!function(){var e=new Error("Cannot find module '../src/glue/js'");throw e.code="MODULE_NOT_FOUND",e}()),assemblyscript=__webpack_require__(!function(){var e=new Error("Cannot find module '../src'");throw e.code="MODULE_NOT_FOUND",e}()),isDev=!0}catch(e_ts){try{assemblyscript=eval("require('./assemblyscript')")}catch(e){throw e.stack=e_ts.stack+"\n---\n"+e.stack,e}}}})(),exports.isBundle=!0,exports.isDev=isDev,exports.version=exports.isBundle?"0.7.0":__webpack_require__(!function(){var e=new Error("Cannot find module '../package.json'");throw e.code="MODULE_NOT_FOUND",e}()).version,exports.options=__webpack_require__(12),exports.sourceMapRoot="assemblyscript:///",exports.libraryPrefix=assemblyscript.LIBRARY_PREFIX,exports.defaultOptimizeLevel=3,exports.defaultShrinkLevel=1,exports.libraryFiles=exports.isBundle?Object({nearEntry:'\nimport { storage, near, base64, base58 } from \'near-runtime-ts\';\n//@ts-ignore\nimport { Buffer } from "assemblyscript-json/util";\nimport { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\nimport { u128 } from "bignum";\n// Runtime functions\n// tslint:disable: no-unsafe-any\n\n\n\ntype Usize = u64;\n//@ts-ignore\n@global\n@external("env", "read_register")\ndeclare function read_register(register_id: Usize, ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "register_len")\ndeclare function register_len(register_id: Usize): Usize;\n\n//@ts-ignore\n@global\n@external("env", "input")\ndeclare function input(register_id: Usize): void;\n//@ts-ignore\n@global\n@external("env", "value_return")\ndeclare function value_return(value_len: Usize, value_ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "panic")\ndeclare function panic(): void;\n\n\n\n/// \n\nabstract class Value {\n static String(str: string): Value {\n return new Str(str)\n }\n static Number(num: i64): Value {\n return new Num(num)\n }\n static Bool(b: bool): Value {\n return new Bools(b)\n }\n static Null(): Value {\n return new Null();\n }\n static Array(): Value {\n return new Arr();\n }\n static Object(): Value {\n return new Obj();\n }\n\n toString(): string {\n if (this instanceof Str){\n return (this).toString();\n }\n if (this instanceof Num){\n return (this).toString();\n }\n if (this instanceof Bools){\n return (this).toString();\n }\n if (this instanceof Null){\n return (this).toString();\n }\n if (this instanceof Arr){\n return (this).toString();\n }\n if (this instanceof Obj){\n return (this).toString();\n }\n return "Value";\n }\n}\n@global\nclass Str extends Value {\n constructor(public _str: string) {\n super();\n }\n\n toString(): string {\n return "\\"" + this._str + "\\"";\n }\n}\n@global\nclass Num extends Value {\n constructor(public _num: i64) {\n super();\n }\n\n toString(): string {\n return this._num.toString();\n }\n}\n@global\nclass Null extends Value {\n constructor() {\n super();\n }\n\n toString(): string {\n return "null";\n }\n}\n\n@global class Bools extends Value {\n constructor(public _bool: bool) {\n super();\n }\n\n toString(): string {\n return this._bool.toString();\n }\n}\n\n@global\nclass Arr extends Value {\n _arr: Array;\n constructor() {\n super();\n this._arr = new Array();\n }\n\n push(obj: Value): void {\n this._arr.push(obj)\n }\n\n toString(): string {\n return "[" + this._arr.map((val: Value,i: i32,_arr: Value[]): string => val.toString()).join(",") + "]";\n }\n}\n\n@global\nclass Obj extends Value {\n _obj: Map;\n keys: Array;\n\n constructor() {\n super();\n this._obj = new Map();\n this.keys = new Array();\n }\n\n set(key: string, value: Value): void {\n if (!this._obj.has(key)) {\n this.keys.push(key);\n }\n this._obj.set(key, value);\n }\n\n get(key: string): Value | null {\n if (!this._obj.has(key)) {\n return null;\n }\n return this._obj.get(key)\n }\n\n toString(): string {\n let objs: string[] = [];\n for (let i: i32 = 0; i < this.keys.length; i++){\n objs.push("\\"" +this.keys[i]+"\\":"+ this._obj.get(this.keys[i]).toString());\n }\n return "{"+ objs.join(",") + "}";\n }\n\n has(key: string): bool {\n return this._obj.has(key);\n }\n}\n\nclass Handler extends ThrowingJSONHandler {\n stack: Value[];\n constructor() {\n super();\n this.stack = new Array();\n }\n\n reset(): void {\n while (this.stack.length > 0){\n this.stack.pop();\n }\n }\n\n get peek(): Value {\n return this.stack[this.stack.length - 1];\n }\n\n setString(name: string, value: string): void {\n let obj: Value = Value.String(value);\n this.addValue(name, obj);\n }\n\n setBoolean(name: string, value: bool): void {\n let obj = Value.Bool(value);\n this.addValue(name, obj);\n }\n\n setNull(name: string): void {\n let obj = Value.Null();\n this.addValue(name, obj);\n }\n\n setInteger(name: string, value: i64): void {\n let obj = Value.Number(value);\n this.addValue(name, obj);\n }\n\n pushArray(name: string): bool {\n let obj: Value = Value.Array();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popArray(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n pushObject(name: string): bool {\n let obj: Value = Value.Object();\n this.addValue(name, obj);\n this.stack.push(obj)\n return true;\n }\n\n popObject(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n addValue(name: string, obj: Value): void {\n if (name.length == 0 && obj instanceof Obj && this.stack.length == 0) {\n this.stack.push(obj);\n return;\n }\n if (this.peek instanceof Obj) {\n (this.peek as Obj).set(name, obj)\n }\n else if (this.peek instanceof Arr) {\n (this.peek).push(obj);\n }\n }\n}\n\n\n@global()\nclass JSON {\n private static handler: Handler = new Handler();\n private static decoder: JSONDecoder = new JSONDecoder(JSON.handler);\n static parse(str: Uint8Array ): Obj {\n JSON.decoder.deserialize(str);\n let res = JSON.decoder.handler.peek as Obj;\n JSON.decoder.handler.reset();\n return res;\n }\n}\n\n\n\n\n\n\n//@ts-ignore\n@global\nfunction encode(encoder: JSONEncoder, value: T, name: string | null = ""): JSONEncoder {\n if (isBoolean()) {\n //@ts-ignore\n encoder.setBoolean(name, value);\n } else if (isInteger()) {\n if (value instanceof i64 || value instanceof u64) {\n //@ts-ignore\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n encoder.setInteger(name, value);\n }\n //@ts-ignore\n } else if (value == null) {\n encoder.setNull(name);\n } else if (isString()) {\n //@ts-ignore\n encoder.setString(name, value);\n } else if (isReference()) {\n if (isArrayLike(value)) {\n if (value instanceof Uint8Array) {\n //@ts-ignore\n encoder.setString(name, base64.encode( value));\n } else {\n encoder.pushArray(name);\n for (let i: i32 = 0; i < value.length; i++) {\n //@ts-ignore\n encode(encoder, value[i], null);\n }\n encoder.popArray();\n }\n } else { // Is an object\n if (value instanceof u128){\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n value.encode(encoder, name);\n }\n }\n } else {\n throw new Error("Encoding failed");\n }\n return encoder;\n}\n\n//@ts-ignore\n@inline\nfunction getStr(val: Value, name: String): string {\n assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null");\n return (val)._str;\n}\n\nfunction decodeArray(val: Value, name: string): Array {\n assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null.");\n let res = new Array();\n let arr = (val)._arr;\n for (let i: i32 = 0; i < arr.length; i++){\n let item: T = decode(arr[i]);\n res.push(item);\n }\n return res;\n}\n\n\n//@ts-ignore\n@global\nfunction decode(buf: V, name: string = ""): T {\n let buffer = (buf instanceof Uint8Array ? JSON.parse(buf) : buf);\n let val: Value;\n if (buffer instanceof Obj && name != ""){\n const obj: Obj = buffer;\n let res = obj.get(name);\n if (res == null){\n //@ts-ignore\n return null\n }\n val = res;\n }else {\n val = buffer;\n }\n if (val instanceof Null) {\n assert(isReference() || isArrayLike() || isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable.");\n //@ts-ignore\n return null;\n }\n if (isString()) {\n //@ts-ignore\n return getStr(val, name);\n }\n if (isBoolean()) {\n assert(val instanceof Bools, "Value with Key: "+ name + " with type " + nameof() +" is not a string");\n //@ts-ignore\n return (val)._bool\n }\n var value: T;\n if (isInteger()) {\n //@ts-ignore\n if (value instanceof u64 || value instanceof i64) {\n assert(val instanceof Str, "Value with Key: "+ name + " with type " + nameof() +" is an 64-bit integer and is expected to be encoded as a string");\n let str = (val)._str;\n //@ts-ignore\n return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str);\n }\n assert(val instanceof Num, "Value with Key: "+ name + " with type " + nameof() +" is not an Integer");\n //@ts-ignore\n return (val)._num;\n }\n assert(isReference(), name + " with type " + nameof() + " must be an integer, boolean, string, object, or array");\n if (isArrayLike()) {\n //@ts-ignore\n if (value instanceof Uint8Array ) {\n //@ts-ignore\n return base64.decode(getStr(val, name)) \n }\n //@ts-ignore\n // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array")\n //@ts-ignore only checking the instance\n return decodeArray>(val, name);\n }\n if (val instanceof Str){\n //@ts-ignore\n if (value instanceof u128) {\n //@ts-ignore\n return u128.fromString(getStr(val, name));\n }\n }\n assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null")\n value = instantiate();\n //@ts-ignore\n return value.decode(val);\n}\n',array:'/// \n\nimport { BLOCK_MAXSIZE } from "./rt/common";\nimport { COMPARATOR, SORT } from "./util/sort";\nimport { ArrayBuffer, ArrayBufferView } from "./arraybuffer";\nimport { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";\nimport { idof, isArray as builtin_isArray } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error";\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureSize(array: usize, minSize: usize, alignLog2: u32): void {\n var oldCapacity = changetype(array).dataLength;\n if (minSize > oldCapacity >>> alignLog2) {\n if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).data);\n let newCapacity = minSize << alignLog2;\n let newData = __realloc(oldData, newCapacity);\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n if (newData !== oldData) { // oldData has been free\'d\n store(changetype(array), __retain(newData), offsetof("data"));\n changetype(array).dataStart = newData;\n }\n changetype(array).dataLength = newCapacity;\n }\n}\n\nexport class Array extends ArrayBufferView {\n [key: number]: T;\n\n // Implementing ArrayBufferView isn\'t strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).\n\n // Also note that Array with non-nullable T must guard against implicit null values whenever\n // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn\'t be\n // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return builtin_isArray(value) && value !== null;\n }\n\n static create(capacity: i32 = 0): Array {\n if (capacity > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n var array = changetype>(__allocArray(capacity, alignof(), idof())); // retains\n changetype>(array).length_ = 0; // safe even if T is a non-nullable reference\n memory.fill(array.dataStart, 0, array.dataLength);\n return array;\n }\n\n constructor(length: i32 = 0) {\n super(length, alignof());\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n this.length_ = length;\n }\n\n @unsafe get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n var oldLength = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (newLength > oldLength) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) { // release no longer used refs\n if (oldLength > newLength) {\n let dataStart = this.dataStart;\n do __release(load(dataStart + (--oldLength << alignof())));\n while (oldLength > newLength);\n // no need to zero memory on shrink -> is zeroed on grow\n }\n }\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (!fn(load(this.dataStart + (index << alignof())), index, this)) return false;\n }\n return true;\n }\n\n findIndex(predicate: (value: T, index: i32, array: Array) => bool): i32 {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (predicate(load(this.dataStart + (index << alignof())), index, this)) return index;\n }\n return -1;\n }\n\n @operator("[]") private __get(index: i32): T {\n if (isReference()) {\n if (!isNullable()) {\n if (index >= this.length_) throw new Error(E_HOLEYARRAY);\n }\n }\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n var length = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (index > length) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), index + 1, alignof());\n this.__unchecked_set(index, value);\n if (index >= length) this.length_ = index + 1;\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = this.dataStart + (index << alignof());\n let oldRef: usize = load(offset);\n if (changetype(value) != oldRef) {\n store(offset, __retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n store(this.dataStart + (index << alignof()), value);\n }\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (isManaged()) {\n for (; start < end; ++start) {\n let oldRef: usize = load(dataStart + (start << alignof()));\n if (changetype(value) != oldRef) {\n store(dataStart + (start << alignof()), __retain(changetype(value)));\n __release(oldRef);\n }\n }\n } else if (sizeof() == 1) {\n if (start < end) {\n memory.fill(\n dataStart + start,\n u8(value),\n (end - start)\n );\n }\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n return this.indexOf(value, fromIndex) >= 0;\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var length = this.length_;\n if (length == 0 || fromIndex >= length) return -1;\n if (fromIndex < 0) fromIndex = max(length + fromIndex, 0);\n var dataStart = this.dataStart;\n while (fromIndex < length) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var length = this.length_;\n if (length == 0) return -1;\n if (fromIndex < 0) fromIndex = length + fromIndex;\n else if (fromIndex >= length) fromIndex = length - 1;\n var dataStart = this.dataStart;\n while (fromIndex >= 0) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var length = this.length_;\n var newLength = length + 1;\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) {\n store(this.dataStart + (length << alignof()), __retain(changetype(value)));\n } else {\n store(this.dataStart + (length << alignof()), value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = select(0, other.length_, other === null);\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, __retain(ref));\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, __retain(ref));\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n if (isManaged()) {\n if (from < to && to < (from + count)) { // right to left\n from += count - 1;\n to += count - 1;\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n --from, --to, --count;\n }\n } else { // left to right\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n ++from, ++to, --count;\n }\n }\n } else {\n memory.copy( // is memmove\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n }\n return this;\n }\n\n pop(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var element = load(this.dataStart + ((--length) << alignof()));\n this.length_ = length;\n return element; // no need to retain -> is moved\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n fn(load(this.dataStart + (index << alignof())), index, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var length = this.length_;\n var out = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n for (let index = 0; index < min(length, this.length_); ++index) {\n let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains\n if (isManaged()) {\n store(outStart + (index << alignof()), __retain(changetype(result)));\n } else {\n store(outStart + (index << alignof()), result);\n }\n // releases result\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n let value = load(this.dataStart + (index << alignof()));\n if (fn(value, index, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = this.length_ - 1; index >= 0; --index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n shift(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = length - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n store(base + (lastIndex << alignof()),\n // @ts-ignore: cast\n null\n );\n this.length_ = lastIndex;\n return element; // no need to retain -> is moved\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (fn(load(this.dataStart + (index << alignof())), index, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var newLength = this.length_ + 1;\n ensureSize(changetype(this), newLength, alignof());\n var dataStart = this.dataStart;\n memory.copy(\n dataStart + sizeof(),\n dataStart,\n (newLength - 1) << alignof()\n );\n if (isManaged()) {\n store(dataStart, __retain(changetype(value)));\n } else {\n store(dataStart, value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(start + length, 0) : min(start, length);\n end = end < 0 ? max(end + length, 0) : min(end , length);\n length = max(end - start, 0);\n var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = length << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, __retain(ref));\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, length << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n deleteCount = max(min(deleteCount, length - start), 0);\n var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n if (isManaged()) {\n for (let i = 0; i < deleteCount; ++i) {\n store(resultStart + (i << alignof()),\n load(thisBase + (i << alignof()))\n );\n // no need to retain -> is moved\n }\n } else {\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n }\n var offset = start + deleteCount;\n if (length != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (length - offset) << alignof()\n );\n }\n this.length_ = length - deleteCount;\n return result;\n }\n\n reverse(): Array {\n var length = this.length_;\n if (length) {\n let front = this.dataStart;\n let back = this.dataStart + ((length - 1) << alignof());\n while (front < back) {\n let temp = load(front);\n store(front, load(back));\n store(back, temp);\n front += sizeof();\n back -= sizeof();\n }\n }\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this {\n var length = this.length_;\n if (length <= 1) return this;\n var base = this.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b;\n store(base, a); // arr[0] = a;\n }\n return this;\n }\n SORT(base, length, comparator);\n return this;\n }\n\n join(separator: string = ","): string {\n if (isBoolean()) return this.join_bool(separator);\n if (isInteger()) return this.join_int(separator);\n if (isFloat()) return this.join_flt(separator);\n if (isString()) return this.join_str(separator);\n if (isArray()) return this.join_arr(separator);\n if (isReference()) return this.join_ref(separator);\n ERROR("unspported element type");\n return unreachable();\n }\n\n private join_bool(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return select("true", "false", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len("false")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_int(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n // @ts-ignore: type\n if (!lastIndex) return changetype(itoa(load(dataStart))); // retains\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_flt(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n ); // retains\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_str(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return load(dataStart);\n\n var sepLen = separator.length;\n var estLen = 0;\n var value: string | null;\n for (let i = 0, len = lastIndex + 1; i < len; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) estLen += value.length;\n }\n var offset = 0;\n var result = changetype(__alloc((estLen + sepLen * lastIndex) << 1, idof())); // retains\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) {\n let valueLen = changetype(value).length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (value !== null) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n changetype(value).length << 1\n );\n }\n return result;\n }\n\n private join_arr(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n\n var result = "";\n var sepLen = separator.length;\n var base = this.dataStart;\n var value: T;\n if (!lastIndex) {\n value = load(base);\n // @ts-ignore: type\n return value ? value.join(separator) : "";\n }\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n if (sepLen) result += separator;\n }\n value = load(base + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n return result; // registered by concatenation (FIXME: lots of garbage)\n }\n\n private join_ref(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var base = this.dataStart;\n if (!lastIndex) return "[object Object]";\n\n const valueLen = 15; // max possible length of element len("[object Object]")\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n if (value) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n if (load(base + (lastIndex << alignof()))) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n // automatically visits ArrayBufferView (.data) next\n }\n}\n',arraybuffer:'/// \n\nimport { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INVALIDLENGTH } from "./util/error";\n\nexport abstract class ArrayBufferView {\n\n @unsafe data: ArrayBuffer;\n @unsafe dataStart: usize;\n @unsafe dataLength: u32;\n\n protected constructor(length: i32, alignLog2: i32) {\n if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length = length << alignLog2, idof());\n memory.fill(buffer, 0, length);\n this.data = changetype(buffer); // retains\n this.dataStart = buffer;\n this.dataLength = length;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n get length(): i32 {\n ERROR("missing implementation: subclasses must implement ArrayBufferView#length");\n return unreachable();\n }\n}\n\n@sealed export class ArrayBuffer {\n\n static isView(value: T): bool {\n if (value) {\n if (value instanceof Int8Array) return true;\n if (value instanceof Uint8Array) return true;\n if (value instanceof Uint8ClampedArray) return true;\n if (value instanceof Int16Array) return true;\n if (value instanceof Uint16Array) return true;\n if (value instanceof Int32Array) return true;\n if (value instanceof Uint32Array) return true;\n if (value instanceof Int64Array) return true;\n if (value instanceof Uint64Array) return true;\n if (value instanceof Float32Array) return true;\n if (value instanceof Float64Array) return true;\n if (value instanceof DataView) return true;\n }\n return false;\n }\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length, idof());\n memory.fill(buffer, 0, length);\n return changetype(buffer); // retains\n }\n\n get byteLength(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n }\n\n slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer {\n var length = this.byteLength;\n begin = begin < 0 ? max(length + begin, 0) : min(begin, length);\n end = end < 0 ? max(length + end , 0) : min(end , length);\n var outSize = max(end - begin, 0);\n var out = __alloc(outSize, idof());\n memory.copy(out, changetype(this) + begin, outSize);\n return changetype(out); // retains\n }\n\n toString(): string {\n return "[object ArrayBuffer]";\n }\n}\n',"bindings/Date":"export declare function UTC(\n // NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for\n // converting the value to the WASM/JS boundary.\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: f64\n): f64;\nexport declare function now(): f64;\n","bindings/Math":"export declare const E: f64;\nexport declare const LN2: f64;\nexport declare const LN10: f64;\nexport declare const LOG2E: f64;\nexport declare const LOG10E: f64;\nexport declare const PI: f64;\nexport declare const SQRT1_2: f64;\nexport declare const SQRT2: f64;\n\nexport declare function abs(x: f64): f64;\nexport declare function acos(x: f64): f64;\nexport declare function acosh(x: f64): f64;\nexport declare function asin(x: f64): f64;\nexport declare function asinh(x: f64): f64;\nexport declare function atan(x: f64): f64;\nexport declare function atan2(y: f64, x: f64): f64;\nexport declare function atanh(x: f64): f64;\nexport declare function cbrt(x: f64): f64;\nexport declare function ceil(x: f64): f64;\nexport declare function clz32(x: f64): f64;\nexport declare function cos(x: f64): f64;\nexport declare function cosh(x: f64): f64;\nexport declare function exp(x: f64): f64;\nexport declare function expm1(x: f64): f64;\nexport declare function floor(x: f64): f64;\nexport declare function fround(x: f64): f32;\nexport declare function hypot(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function imul(a: f64, b: f64): f64;\nexport declare function log(x: f64): f64;\nexport declare function log10(x: f64): f64;\nexport declare function log1p(x: f64): f64;\nexport declare function log2(x: f64): f64;\nexport declare function max(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function min(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function pow(base: f64, exponent: f64): f64;\nexport declare function random(): f64;\nexport declare function round(x: f64): f64;\nexport declare function sign(x: f64): f64;\nexport declare function sin(x: f64): f64;\nexport declare function sinh(x: f64): f64;\nexport declare function sqrt(x: f64): f64;\nexport declare function tan(x: f64): f64;\nexport declare function tanh(x: f64): f64;\nexport declare function trunc(x: f64): f64;\n","bindings/wasi_unstable":"// see: https://wasi.dev\n\n/* tslint:disable:max-line-length */\n\n// helper types to be more explicit\ntype char = u8;\ntype ptr = usize; // all pointers are usize'd\ntype struct = T; // structs are references already in AS\n\n/** Read command-line argument data. */\nexport declare function args_get(\n /** Input: Pointer to a buffer to write the argument pointers. */\n argv: ptr>,\n /** Input: Pointer to a buffer to write the argument string data. */\n argv_buf: ptr\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function args_sizes_get(\n /** Output: Number of arguments. */\n argc: ptr,\n /** Output: Size of the argument string data. */\n argv_buf_size: ptr\n): errno;\n\n/** Return the resolution of a clock. */\nexport declare function clock_res_get(\n /** Input: The clock for which to return the resolution. */\n clock: clockid,\n /** Output: The resolution of the clock. */\n resolution: ptr\n): errno;\n\n/** Return the time value of a clock. */\nexport declare function clock_time_get(\n /** Input: Cock for which to return the time. */\n clock: clockid,\n /** Input: Maximum lag (exclusive) that the returned time value may have, compared to its actual value. */\n precision: timestamp,\n /** Output: Time value of the clock. */\n time: ptr\n): errno;\n\n/** Read environment variable data. */\nexport declare function environ_get(\n /** Input: Pointer to a buffer to write the environment variable pointers. */\n environ: ptr,\n /** Input: Pointer to a buffer to write the environment variable string data. */\n environ_buf: usize\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function environ_sizes_get(\n /** Output: The number of environment variables. */\n environ_count: ptr,\n /** Output: The size of the environment variable string data. */\n environ_buf_size: ptr\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_advise(\n /** Input: The file descriptor for the file for which to provide file advisory information. */\n fd: fd,\n /** Input: The offset within the file to which the advisory applies. */\n offset: filesize,\n /** Input: The length of the region to which the advisory applies. */\n len: filesize,\n /** Input: The advice. */\n advice: advice\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_allocate(\n /** Input: The file descriptor for the file in which to allocate space. */\n fd: fd,\n /** Input: The offset at which to start the allocation. */\n offset: filesize,\n /** Input: The length of the area that is allocated. */\n len: filesize\n): errno;\n\n/** Close a file descriptor. */\nexport declare function fd_close(\n /** Input: The file descriptor to close. */\n fd: fd\n): errno;\n\n/** Synchronize the data of a file to disk. */\nexport declare function fd_datasync(\n /** Input: The file descriptor of the file to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Get the attributes of a file descriptor. */\nexport declare function fd_fdstat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file descriptor's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the flags associated with a file descriptor. */\nexport declare function fd_fdstat_set_flags(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the file descriptor flags. */\n flags: fdflags\n): errno;\n\n/** Adjust the rights associated with a file descriptor. */\nexport declare function fd_fdstat_set_rights(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_base: rights,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_inheriting: rights\n): errno;\n\n/** Return the attributes of an open file. */\nexport declare function fd_filestat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */\nexport declare function fd_filestat_set_size(\n /** Input: A file descriptor for the file to adjust. */\n fd: fd,\n /** Input: The desired file size. */\n size: filesize\n): errno;\n\n/** Adjust the timestamps of an open file or directory. */\nexport declare function fd_filestat_set_times(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Read from a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pread(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors in which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors in which to store data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to read. */\n offset: filesize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_get(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: The buffer where the description is stored. */\n buf: struct\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_dir_name(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: Buffer into which to write the preopened directory name. */\n path: ptr,\n /** Input: Length of the buffer into which to write the preopened directory name. */\n path_len: usize\n): errno;\n\n/** Write to a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pwrite(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to write. */\n offset: filesize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/** Read from a file descriptor. */\nexport declare function fd_read(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors to which to store data. */\n iovs_len: usize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Read directory entries from a directory. */\nexport declare function fd_readdir(\n /** Input: Directory from which to read the directory entries. */\n fd: fd,\n /** Input: Buffer where directory entries are stored. */\n buf: ptr>,\n /** Input: Length of the buffer where directory entries are stored. */\n buf_len: usize,\n /** Input: Location within the directory to start reading. */\n cookie: dircookie,\n /** Output: Number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. */\n buf_used: ptr\n): errno;\n\n/** Atomically replace a file descriptor by renumbering another file descriptor. */\nexport declare function fd_renumber(\n /** Input: The file descriptor to renumber. */\n from: fd,\n /** Input: The file descriptor to overwrite. */\n to: fd\n): errno;\n\n/** Move the offset of a file descriptor. */\nexport declare function fd_seek(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The number of bytes to move. */\n offset: filedelta,\n /** Input: The base from which the offset is relative. */\n whence: whence,\n /** Output: The new offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Synchronize the data and metadata of a file to disk. */\nexport declare function fd_sync(\n /** Input: The file descriptor of the file containing the data and metadata to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Return the current offset of a file descriptor. */\nexport declare function fd_tell(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Output: The current offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Write to a file descriptor. */\nexport declare function fd_write(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/* Create a directory. */\nexport declare function path_create_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path at which to create the directory. */\n path: ptr,\n /** Input: The path at which to create the directory. */\n path_len: usize\n): errno;\n\n/** Return the attributes of a file or directory. */\nexport declare function path_filestat_get(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to inspect. */\n path: ptr,\n /** Input: The path of the file or directory to inspect. */\n path_len: usize,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the timestamps of a file or directory. */\nexport declare function path_filestat_set_times(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to operate on. */\n path: ptr,\n /** Input: The path of the file or directory to operate on. */\n path_len: usize,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Create a hard link. */\nexport declare function path_link(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n old_flags: lookupflags,\n /** Input: The source path from which to link. */\n old_path: ptr,\n /** Input: The source path from which to link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path at which to create the hard link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the hard link. */\n new_path_len: usize\n): errno;\n\n/** Open a file or directory. */\nexport declare function path_open(\n /** Input: The working directory at which the resolution of the path starts. */\n dirfd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n dirflags: lookupflags,\n /** Input: The path of the file or directory to open. */\n path: ptr,\n /** Input: The length of the path of the file or directory to open. */\n path_len: usize,\n /** Input: The method by which to open the file. */\n oflags: oflags,\n /** Input: The initial base rights that apply to operations using the file descriptor itself. */\n fs_rights_base: rights,\n /** Input: The initial inheriting rights that apply to file descriptors derived from it. */\n fs_rights_inheriting: rights,\n /** Input: The initial flags of the file descriptor. */\n fs_flags: fdflags,\n /** Output: The file descriptor of the file that has been opened. */\n fd: ptr\n): errno;\n\n/** Read the contents of a symbolic link. */\nexport declare function path_readlink(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path of the symbolic link from which to read. */\n path: ptr,\n /** Input: The length of the path of the symbolic link from which to read. */\n path_len: usize,\n /** Input: The buffer to which to write the contents of the symbolic link. */\n buf: ptr,\n /** Input: The length of the buffer to which to write the contents of the symbolic link. */\n buf_len: usize,\n /** Output: The number of bytes placed in the buffer. */\n buf_used: ptr\n): errno;\n\n/** Remove a directory. */\nexport declare function path_remove_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a directory to remove. */\n path: ptr,\n /** Input: The length of the path to a directory to remove. */\n path_len: usize\n): errno;\n\n/** Rename a file or directory. */\nexport declare function path_rename(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: The source path of the file or directory to rename. */\n old_path: ptr,\n /** Input: The length of the source path of the file or directory to rename. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path to which to rename the file or directory. */\n new_path: ptr,\n /** Input: The length of the destination path to which to rename the file or directory. */\n new_path_len: usize\n): errno;\n\n/** Create a symbolic link. */\nexport declare function path_symlink(\n /** Input: The contents of the symbolic link. */\n old_path: ptr,\n /** Input: The length of the contents of the symbolic link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The destination path at which to create the symbolic link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the symbolic link. */\n new_path_len: usize\n): errno;\n\n/** Unlink a file. */\nexport declare function path_unlink_file(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a file to unlink. */\n path: ptr,\n /** Input: The length of the path to a file to unlink. */\n path_len: usize\n): errno;\n\n/** Concurrently poll for the occurrence of a set of events. */\nexport declare function poll_oneoff(\n /** Input: The events to which to subscribe. */\n in_: ptr>,\n /** Input: The events that have occurred. */\n out: ptr>,\n /** Input: Both the number of subscriptions and events. */\n nsubscriptions: usize,\n /** Output: The number of events stored. */\n nevents: ptr\n): errno;\n\n/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */\nexport declare function proc_exit(\n /** Input: The exit code returned by the process. */\n rval: u32\n): void;\n\n/** Send a signal to the process of the calling thread. */\nexport declare function proc_raise(\n /** Input: The signal condition to trigger. */\n sig: signal\n): errno;\n\n/** Write high-quality random data into a buffer. */\nexport declare function random_get(\n /** Input: The buffer to fill with random data. */\n buf: usize,\n /** Input: The length of the buffer to fill with random data. */\n buf_len: usize\n): errno;\n\n/** Temporarily yield execution of the calling thread. */\nexport declare function sched_yield(): errno;\n\n/** Receive a message from a socket. */\nexport declare function sock_recv(\n /** Input: The socket on which to receive data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n ri_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to store data. */\n ri_data_len: usize,\n /** Input: Message flags. */\n ri_flags: riflags,\n /** Output: Number of bytes stored in `ri_data`. */\n ro_datalen: ptr,\n /** Output: Message flags. */\n ro_flags: ptr\n): errno;\n\n/** Send a message on a socket. */\nexport declare function sock_send(\n /** Input: The socket on which to send data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to retrieve data */\n si_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to retrieve data */\n si_data_len: usize,\n /** Input: Message flags. */\n si_flags: siflags,\n /** Output: Number of bytes transmitted. */\n so_datalen: ptr\n): errno;\n\n/** Shut down socket send and receive channels. */\nexport declare function sock_shutdown(\n /** Input: The socket on which to shutdown channels. */\n sock: fd,\n /** Input: Which channels on the socket to shut down. */\n how: sdflags\n): errno;\n\n// === Types ======================================================================================\n\n/** File or memory access pattern advisory information. */\nexport namespace advice {\n /** The application has no advice to give on its behavior with respect to the specified data. */\n // @ts-ignore: decorator\n @inline\n export const NORMAL: advice = 0;\n /** The application expects to access the specified data sequentially from lower offsets to higher offsets. */\n // @ts-ignore: decorator\n @inline\n export const SEQUENTIAL : advice = 1;\n /** The application expects to access the specified data in a random order. */\n // @ts-ignore: decorator\n @inline\n export const RANDOM: advice = 2;\n /** The application expects to access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const WILLNEED: advice = 3;\n /** The application expects that it will not access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const DONTNEED: advice = 4;\n /** The application expects to access the specified data once and then not reuse it thereafter. */\n // @ts-ignore: decorator\n @inline\n export const NOREUSE: advice = 5;\n}\nexport type advice = u8;\n\n/** Identifiers for clocks. */\nexport namespace clockid {\n /** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */\n // @ts-ignore: decorator\n @inline\n export const REALTIME: clockid = 0;\n /** The store-wide monotonic clock. Absolute value has no meaning. */\n // @ts-ignore: decorator\n @inline\n export const MONOTONIC: clockid = 1;\n /** The CPU-time clock associated with the current process. */\n // @ts-ignore: decorator\n @inline\n export const PROCESS_CPUTIME_ID: clockid = 2;\n /** The CPU-time clock associated with the current thread. */\n // @ts-ignore: decorator\n @inline\n export const THREAD_CPUTIME_ID: clockid = 3;\n}\nexport type clockid = u32;\n\n/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */\nexport type device = u64;\n\n/** A reference to the offset of a directory entry. */\nexport type dircookie = u64;\n\n/** A directory entry. */\n@unmanaged export class dirent {\n /** The offset of the next directory entry stored in this directory. */\n next: dircookie;\n /** The serial number of the file referred to by this directory entry. */\n ino: inode;\n /** The length of the name of the directory entry. */\n namlen: u32;\n /** The type of the file referred to by this directory entry. */\n type: filetype;\n private __padding0: u16;\n}\n\n/** Error codes returned by functions. */\nexport namespace errno {\n /** No error occurred. System call completed successfully. */\n // @ts-ignore: decorator\n @inline\n export const SUCCESS: errno = 0;\n /** Argument list too long. */\n // @ts-ignore: decorator\n @inline\n export const TOOBIG: errno = 1;\n /** Permission denied. */\n // @ts-ignore: decorator\n @inline\n export const ACCES: errno = 2;\n /** Address in use. */\n // @ts-ignore: decorator\n @inline\n export const ADDRINUSE: errno = 3;\n /** Address not available. */\n // @ts-ignore: decorator\n @inline\n export const ADDRNOTAVAIL: errno = 4;\n /** Address family not supported. */\n // @ts-ignore: decorator\n @inline\n export const AFNOSUPPORT: errno = 5;\n /** Resource unavailable, or operation would block. */\n // @ts-ignore: decorator\n @inline\n export const AGAIN: errno = 6;\n /** Connection already in progress. */\n // @ts-ignore: decorator\n @inline\n export const ALREADY: errno = 7;\n /** Bad file descriptor. */\n // @ts-ignore: decorator\n @inline\n export const BADF: errno = 8;\n /** Bad message. */\n // @ts-ignore: decorator\n @inline\n export const BADMSG: errno = 9;\n /** Device or resource busy. */\n // @ts-ignore: decorator\n @inline\n export const BUSY: errno = 10;\n /** Operation canceled. */\n // @ts-ignore: decorator\n @inline\n export const CANCELED: errno = 11;\n /** No child processes. */\n // @ts-ignore: decorator\n @inline\n export const CHILD: errno = 12;\n /** Connection aborted. */\n // @ts-ignore: decorator\n @inline\n export const CONNABORTED: errno = 13;\n /** Connection refused. */\n // @ts-ignore: decorator\n @inline\n export const CONNREFUSED: errno = 14;\n /** Connection reset. */\n // @ts-ignore: decorator\n @inline\n export const CONNRESET: errno = 15;\n /** Resource deadlock would occur. */\n // @ts-ignore: decorator\n @inline\n export const DEADLK: errno = 16;\n /** Destination address required. */\n // @ts-ignore: decorator\n @inline\n export const DESTADDRREQ: errno = 17;\n /** Mathematics argument out of domain of function. */\n // @ts-ignore: decorator\n @inline\n export const DOM: errno = 18;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const DQUOT: errno = 19;\n /** File exists. */\n // @ts-ignore: decorator\n @inline\n export const EXIST: errno = 20;\n /** Bad address. */\n // @ts-ignore: decorator\n @inline\n export const FAULT: errno = 21;\n /** File too large. */\n // @ts-ignore: decorator\n @inline\n export const FBIG: errno = 22;\n /** Host is unreachable. */\n // @ts-ignore: decorator\n @inline\n export const HOSTUNREACH: errno = 23;\n /** Identifier removed. */\n // @ts-ignore: decorator\n @inline\n export const IDRM: errno = 24;\n /** Illegal byte sequence. */\n // @ts-ignore: decorator\n @inline\n export const ILSEQ: errno = 25;\n /** Operation in progress. */\n // @ts-ignore: decorator\n @inline\n export const INPROGRESS: errno = 26;\n /** Interrupted function. */\n // @ts-ignore: decorator\n @inline\n export const INTR: errno = 27;\n /** Invalid argument. */\n // @ts-ignore: decorator\n @inline\n export const INVAL: errno = 28;\n /** I/O error. */\n // @ts-ignore: decorator\n @inline\n export const IO: errno = 29;\n /** Socket is connected. */\n // @ts-ignore: decorator\n @inline\n export const ISCONN: errno = 30;\n /** Is a directory. */\n // @ts-ignore: decorator\n @inline\n export const ISDIR: errno = 31;\n /** Too many levels of symbolic links. */\n // @ts-ignore: decorator\n @inline\n export const LOOP: errno = 32;\n /** File descriptor value too large. */\n // @ts-ignore: decorator\n @inline\n export const MFILE: errno = 33;\n /** Too many links. */\n // @ts-ignore: decorator\n @inline\n export const MLINK: errno = 34;\n /** Message too large. */\n // @ts-ignore: decorator\n @inline\n export const MSGSIZE: errno = 35;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const MULTIHOP: errno = 36;\n /** Filename too long. */\n // @ts-ignore: decorator\n @inline\n export const NAMETOOLONG: errno = 37;\n /** Network is down. */\n // @ts-ignore: decorator\n @inline\n export const NETDOWN: errno = 38;\n /** Connection aborted by network. */\n // @ts-ignore: decorator\n @inline\n export const NETRESET: errno = 39;\n /** Network unreachable. */\n // @ts-ignore: decorator\n @inline\n export const NETUNREACH: errno = 40;\n /** Too many files open in system. */\n // @ts-ignore: decorator\n @inline\n export const NFILE: errno = 41;\n /** No buffer space available. */\n // @ts-ignore: decorator\n @inline\n export const NOBUFS: errno = 42;\n /** No such device. */\n // @ts-ignore: decorator\n @inline\n export const NODEV: errno = 43;\n /** No such file or directory. */\n // @ts-ignore: decorator\n @inline\n export const NOENT: errno = 44;\n /** Executable file format error. */\n // @ts-ignore: decorator\n @inline\n export const NOEXEC: errno = 45;\n /** No locks available. */\n // @ts-ignore: decorator\n @inline\n export const NOLCK: errno = 46;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const NOLINK: errno = 47;\n /** Not enough space. */\n // @ts-ignore: decorator\n @inline\n export const NOMEM: errno = 48;\n /** No message of the desired type. */\n // @ts-ignore: decorator\n @inline\n export const NOMSG: errno = 49;\n /** Protocol not available. */\n // @ts-ignore: decorator\n @inline\n export const NOPROTOOPT: errno = 50;\n /** No space left on device. */\n // @ts-ignore: decorator\n @inline\n export const NOSPC: errno = 51;\n /** Function not supported. */\n // @ts-ignore: decorator\n @inline\n export const NOSYS: errno = 52;\n /** The socket is not connected. */\n // @ts-ignore: decorator\n @inline\n export const NOTCONN: errno = 53;\n /** Not a directory or a symbolic link to a directory. */\n // @ts-ignore: decorator\n @inline\n export const NOTDIR: errno = 54;\n /** Directory not empty. */\n // @ts-ignore: decorator\n @inline\n export const NOTEMPTY: errno = 55;\n /** State not recoverable. */\n // @ts-ignore: decorator\n @inline\n export const NOTRECOVERABLE: errno = 56;\n /** Not a socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSOCK: errno = 57;\n /** Not supported, or operation not supported on socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSUP: errno = 58;\n /** Inappropriate I/O control operation. */\n // @ts-ignore: decorator\n @inline\n export const NOTTY: errno = 59;\n /** No such device or address. */\n // @ts-ignore: decorator\n @inline\n export const NXIO: errno = 60;\n /** Value too large to be stored in data type. */\n // @ts-ignore: decorator\n @inline\n export const OVERFLOW: errno = 61;\n /** Previous owner died. */\n // @ts-ignore: decorator\n @inline\n export const OWNERDEAD: errno = 62;\n /** Operation not permitted. */\n // @ts-ignore: decorator\n @inline\n export const PERM: errno = 63;\n /** Broken pipe. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: errno = 64;\n /** Protocol error. */\n // @ts-ignore: decorator\n @inline\n export const PROTO: errno = 65;\n /** Protocol not supported. */\n // @ts-ignore: decorator\n @inline\n export const PROTONOSUPPORT: errno = 66;\n /** Protocol wrong type for socket. */\n // @ts-ignore: decorator\n @inline\n export const PROTOTYPE: errno = 67;\n /** Result too large. */\n // @ts-ignore: decorator\n @inline\n export const RANGE: errno = 68;\n /** Read-only file system. */\n // @ts-ignore: decorator\n @inline\n export const ROFS: errno = 69;\n /** Invalid seek. */\n // @ts-ignore: decorator\n @inline\n export const SPIPE: errno = 70;\n /** No such process. */\n // @ts-ignore: decorator\n @inline\n export const SRCH: errno = 71;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const STALE: errno = 72;\n /** Connection timed out. */\n // @ts-ignore: decorator\n @inline\n export const TIMEDOUT: errno = 73;\n /** Text file busy. */\n // @ts-ignore: decorator\n @inline\n export const TXTBSY: errno = 74;\n /** Cross-device link. */\n // @ts-ignore: decorator\n @inline\n export const XDEV: errno = 75;\n /** Extension: Capabilities insufficient. */\n // @ts-ignore: decorator\n @inline\n export const NOTCAPABLE: errno = 76;\n}\nexport type errno = u16;\n\n/** An event that occurred. */\n@unmanaged export abstract class event {\n /** User-provided value that got attached to `subscription#userdata`. */\n userdata: userdata;\n /** If non-zero, an error that occurred while processing the subscription request. */\n error: errno;\n /* The type of the event that occurred. */\n type: eventtype;\n private __padding0: u16;\n}\n\n/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\n@unmanaged export class rwevent extends event {\n /* The number of bytes available for reading or writing. */\n nbytes: filesize;\n /* The state of the file descriptor. */\n flags: eventrwflags;\n private __padding1: u32;\n}\n\n/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\nexport namespace eventrwflags {\n /** The peer of this socket has closed or disconnected. */\n // @ts-ignore: decorator\n @inline\n export const HANGUP: eventrwflags = 1;\n}\nexport type eventrwflags = u16;\n\n/** Type of a subscription to an event or its occurrence. */\nexport namespace eventtype {\n /** The time value of clock has reached the timestamp. */\n // @ts-ignore: decorator\n @inline\n export const CLOCK: eventtype = 0;\n /** File descriptor has data available for reading. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: eventtype = 1;\n /** File descriptor has capacity available for writing */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: eventtype = 2;\n}\nexport type eventtype = u8;\n\n/** Exit code generated by a process when exiting. */\nexport type exitcode = u32;\n\n/** A file descriptor number. */\nexport type fd = u32;\n\n/** File descriptor flags. */\nexport namespace fdflags {\n /** Append mode: Data written to the file is always appended to the file's end. */\n // @ts-ignore: decorator\n @inline\n export const APPEND: fdflags = 1;\n /** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */\n // @ts-ignore: decorator\n @inline\n export const DSYNC: fdflags = 2;\n /** Non-blocking mode. */\n // @ts-ignore: decorator\n @inline\n export const NONBLOCK: fdflags = 4;\n /** Synchronized read I/O operations. */\n // @ts-ignore: decorator\n @inline\n export const RSYNC: fdflags = 8;\n /** Write according to synchronized I/O file integrity completion. */\n // @ts-ignore: decorator\n @inline\n export const SYNC: fdflags = 16;\n}\nexport type fdflags = u16;\n\n/** File descriptor attributes. */\n@unmanaged export class fdstat {\n /** File type. */\n filetype: filetype;\n /** File descriptor flags. */\n flags: fdflags;\n /** Rights that apply to this file descriptor. */\n rights_base: rights;\n /** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */\n rights_inheriting: rights;\n}\n\n/** Relative offset within a file. */\nexport type filedelta = i64;\n\n/** Non-negative file size or length of a region within a file. */\nexport type filesize = u64;\n\n/** File attributes. */\n@unmanaged export class filestat {\n /** Device ID of device containing the file. */\n dev: device;\n /** File serial number. */\n ino: inode;\n /** File type. */\n filetype: filetype;\n /** Number of hard links to the file. */\n nlink: linkcount;\n /** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */\n size: filesize;\n /** Last data access timestamp. */\n atim: timestamp;\n /** Last data modification timestamp. */\n mtim: timestamp;\n /** Last file status change timestamp. */\n ctim: timestamp;\n}\n\n/** The type of a file descriptor or file. */\nexport namespace filetype {\n /** The type of the file descriptor or file is unknown or is different from any of the other types specified. */\n // @ts-ignore: decorator\n @inline\n export const UNKNOWN: filetype = 0;\n /** The file descriptor or file refers to a block device inode. */\n // @ts-ignore: decorator\n @inline\n export const BLOCK_DEVICE: filetype = 1;\n /** The file descriptor or file refers to a character device inode. */\n // @ts-ignore: decorator\n @inline\n export const CHARACTER_DEVICE: filetype = 2;\n /** The file descriptor or file refers to a directory inode. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: filetype = 3;\n /** The file descriptor or file refers to a regular file inode. */\n // @ts-ignore: decorator\n @inline\n export const REGULAR_FILE: filetype = 4;\n /** The file descriptor or file refers to a datagram socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_DGRAM: filetype = 5;\n /** The file descriptor or file refers to a byte-stream socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_STREAM: filetype = 6;\n /** The file refers to a symbolic link inode. */\n // @ts-ignore: decorator\n @inline\n export const SYMBOLIC_LINK: filetype = 7;\n}\nexport type filetype = u8;\n\n/** Which file time attributes to adjust. */\nexport namespace fstflags {\n /** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM: fstflags = 1;\n /** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM_NOW: fstflags = 2;\n /** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM: fstflags = 4;\n /** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM_NOW: fstflags = 8;\n}\nexport type fstflags = u16;\n\n/** File serial number that is unique within its file system. */\nexport type inode = u64;\n\n/** A region of memory for scatter/gather reads. */\n@unmanaged export class iovec {\n /** The address of the buffer to be filled. */\n buf: usize;\n /** The length of the buffer to be filled. */\n buf_len: usize;\n}\n\n/** Number of hard links to an inode. */\nexport type linkcount = u32;\n\n/** Flags determining the method of how paths are resolved. */\nexport namespace lookupflags {\n /** As long as the resolved path corresponds to a symbolic link, it is expanded. */\n // @ts-ignore: decorator\n @inline\n export const SYMLINK_FOLLOW: lookupflags = 1;\n}\nexport type lookupflags = u32;\n\n/** Open flags. */\nexport namespace oflags {\n /** Create file if it does not exist. */\n // @ts-ignore: decorator\n @inline\n export const CREAT: oflags = 1;\n /** Fail if not a directory. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: oflags = 2;\n /** Fail if file already exists. */\n // @ts-ignore: decorator\n @inline\n export const EXCL: oflags = 4;\n /** Truncate file to size 0. */\n // @ts-ignore: decorator\n @inline\n export const TRUNC: oflags = 8;\n}\nexport type oflags = u16;\n\n// TODO: undocumented\nexport namespace preopentype {\n // @ts-ignore: decorator\n @inline\n export const DIR: preopentype = 0;\n}\nexport type preopentype = u8;\n\n// TODO: undocumented\nexport abstract class prestat {\n type: preopentype;\n}\n\n// TODO: undocumented\nexport class dirprestat extends prestat {\n name_len: usize;\n}\n\n/** Flags provided to `sock_recv`. */\nexport namespace riflags {\n /** Returns the message without removing it from the socket's receive queue. */\n // @ts-ignore: decorator\n @inline\n export const PEEK: riflags = 1;\n /** On byte-stream sockets, block until the full amount of data can be returned. */\n // @ts-ignore: decorator\n @inline\n export const WAITALL: riflags = 2;\n}\nexport type riflags = u16;\n\n/** File descriptor rights, determining which actions may be performed. */\nexport namespace rights {\n /** The right to invoke `fd_datasync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_DATASYNC: rights = 1;\n /** The right to invoke `fd_read` and `sock_recv`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: rights = 2;\n /** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SEEK: rights = 4;\n /** The right to invoke `fd_fdstat_set_flags`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FDSTAT_SET_FLAGS: rights = 8;\n /** The right to invoke `fd_sync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SYNC: rights = 16;\n /** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */\n // @ts-ignore: decorator\n @inline\n export const FD_TELL: rights = 32;\n /** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: rights = 64;\n /** The right to invoke `fd_advise`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ADVISE: rights = 128;\n /** The right to invoke `fd_allocate`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ALLOCATE: rights = 256;\n /** The right to invoke `path_create_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_DIRECTORY: rights = 512;\n /** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_FILE: rights = 1024;\n /** The right to invoke `path_link` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_SOURCE: rights = 2048;\n /** The right to invoke `path_link` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_TARGET: rights = 4096;\n /** The right to invoke `path_open`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_OPEN: rights = 8192;\n /** The right to invoke `fd_readdir`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READDIR: rights = 16384;\n /** The right to invoke `path_readlink`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_READLINK: rights = 32768;\n /** The right to invoke `path_rename` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_SOURCE: rights = 65536;\n /** The right to invoke `path_rename` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_TARGET: rights = 131072;\n /** The right to invoke `path_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_GET: rights = 262144;\n /** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_SIZE: rights = 524288;\n /** The right to invoke `path_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_TIMES: rights = 1048576;\n /** The right to invoke `fd_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_GET: rights = 2097152;\n /** The right to invoke `fd_filestat_set_size`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_SIZE: rights = 4194304;\n /** The right to invoke `fd_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_TIMES: rights = 8388608;\n /** The right to invoke `path_symlink`. */\n // @ts-ignore: decorator\n @inline\n export const RIGHT_PATH_SYMLINK: rights = 16777216;\n /** The right to invoke `path_remove_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_REMOVE_DIRECTORY: rights = 33554432;\n /** The right to invoke `path_unlink_file`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_UNLINK_FILE: rights = 67108864;\n /** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */\n // @ts-ignore: decorator\n @inline\n export const POLL_FD_READWRITE: rights = 134217728;\n /** The right to invoke `sock_shutdown`. */\n // @ts-ignore: decorator\n @inline\n export const SOCK_SHUTDOWN: rights = 268435456;\n}\nexport type rights = u64;\n\n/** Flags returned by `sock_recv`. */\nexport namespace roflags {\n /** Message data has been truncated. */\n // @ts-ignore: decorator\n @inline\n export const DATA_TRUNCATED: roflags = 1;\n}\nexport type roflags = u16;\n\n/** Which channels on a socket to shut down. */\nexport namespace sdflags {\n /** Disables further receive operations. */\n // @ts-ignore: decorator\n @inline\n export const RD: sdflags = 1;\n /** Disables further send operations. */\n // @ts-ignore: decorator\n @inline\n export const WR: sdflags = 2;\n}\nexport type sdflags = u8;\n\n/** Flags provided to `sock_send`. */\nexport namespace siflags {\n // As there are currently no flags defined, it must be set to zero.\n}\nexport type siflags = u16;\n\n/** Signal condition. */\nexport namespace signal {\n /** Hangup. */\n // @ts-ignore: decorator\n @inline\n export const HUP: signal = 1;\n /** Terminate interrupt signal. */\n // @ts-ignore: decorator\n @inline\n export const INT: signal = 2;\n /** Terminal quit signal. */\n // @ts-ignore: decorator\n @inline\n export const QUIT: signal = 3;\n /** Illegal instruction. */\n // @ts-ignore: decorator\n @inline\n export const ILL: signal = 4;\n /** Trace/breakpoint trap. */\n // @ts-ignore: decorator\n @inline\n export const TRAP: signal = 5;\n /** Process abort signal. */\n // @ts-ignore: decorator\n @inline\n export const ABRT: signal = 6;\n /** Access to an undefined portion of a memory object. */\n // @ts-ignore: decorator\n @inline\n export const BUS: signal = 7;\n /** Erroneous arithmetic operation. */\n // @ts-ignore: decorator\n @inline\n export const FPE: signal = 8;\n /** Kill. */\n // @ts-ignore: decorator\n @inline\n export const KILL: signal = 9;\n /** User-defined signal 1. */\n // @ts-ignore: decorator\n @inline\n export const USR1: signal = 10;\n /** Invalid memory reference. */\n // @ts-ignore: decorator\n @inline\n export const SEGV: signal = 11;\n /** User-defined signal 2. */\n // @ts-ignore: decorator\n @inline\n export const USR2: signal = 12;\n /** Write on a pipe with no one to read it. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: signal = 13;\n /** Alarm clock. */\n // @ts-ignore: decorator\n @inline\n export const ALRM: signal = 14;\n /** Termination signal. */\n // @ts-ignore: decorator\n @inline\n export const TERM: signal = 15;\n /** Child process terminated, stopped, or continued. */\n // @ts-ignore: decorator\n @inline\n export const CHLD: signal = 16;\n /** Continue executing, if stopped. */\n // @ts-ignore: decorator\n @inline\n export const CONT: signal = 17;\n /** Stop executing. */\n // @ts-ignore: decorator\n @inline\n export const STOP: signal = 18;\n /** Terminal stop signal. */\n // @ts-ignore: decorator\n @inline\n export const TSTP: signal = 19;\n /** Background process attempting read. */\n // @ts-ignore: decorator\n @inline\n export const TTIN: signal = 20;\n /** Background process attempting write. */\n // @ts-ignore: decorator\n @inline\n export const TTOU: signal = 21;\n /** High bandwidth data is available at a socket. */\n // @ts-ignore: decorator\n @inline\n export const URG: signal = 22;\n /** CPU time limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XCPU: signal = 23;\n /** File size limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XFSZ: signal = 24;\n /** Virtual timer expired. */\n // @ts-ignore: decorator\n @inline\n export const VTALRM: signal = 25;\n // @ts-ignore: decorator\n @inline\n export const PROF: signal = 26;\n // @ts-ignore: decorator\n @inline\n export const WINCH: signal = 27;\n // @ts-ignore: decorator\n @inline\n export const POLL: signal = 28;\n // @ts-ignore: decorator\n @inline\n export const PWR: signal = 29;\n /** Bad system call. */\n // @ts-ignore: decorator\n @inline\n export const SYS: signal = 30;\n}\nexport type signal = u8;\n\n/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */\nexport namespace subclockflags {\n /** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */\n // @ts-ignore: decorator\n @inline\n export const ABSTIME: subclockflags = 1;\n}\nexport type subclockflags = u16;\n\n/** Subscription to an event. */\n@unmanaged export abstract class subscription {\n /** User-provided value that is attached to the subscription. */\n userdata: userdata;\n /** The type of the event to which to subscribe. */\n type: eventtype;\n private __padding0: u32;\n}\n\n/* Subscription to an event of type `eventtype.CLOCK`.**/\n@unmanaged export class clocksubscription extends subscription {\n /** The user-defined unique identifier of the clock. */\n identifier: userdata;\n /** The clock against which to compare the timestamp. */\n clock_id: clockid;\n /** The absolute or relative timestamp. */\n timeout: timestamp;\n /** The amount of time that the implementation may wait additionally to coalesce with other events. */\n precision: timestamp;\n /** Flags specifying whether the timeout is absolute or relative. */\n flags: subclockflags;\n private __padding1: u32;\n}\n\n/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/\n@unmanaged export class fdsubscription extends subscription {\n /** The file descriptor on which to wait for it to become ready for reading or writing. */\n fd: fd;\n}\n\n/** Timestamp in nanoseconds. */\nexport type timestamp = u64;\n\n/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */\nexport type userdata = u64;\n\n/** The position relative to which to set the offset of the file descriptor. */\nexport namespace whence {\n /** Seek relative to current position. */\n // @ts-ignore: decorator\n @inline\n export const CUR: whence = 0;\n /** Seek relative to end-of-file. */\n // @ts-ignore: decorator\n @inline\n export const END: whence = 1;\n /** Seek relative to start-of-file. */\n // @ts-ignore: decorator\n @inline\n export const SET: whence = 2;\n}\nexport type whence = u8;\n","bindings/wasi":'export * from "./wasi_unstable";\n',builtins:'// @ts-ignore: decorator\n@builtin\nexport declare function isInteger(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFloat(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isBoolean(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isSigned(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isReference(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isString(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArray(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArrayLike(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFunction(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isNullable(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isDefined(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isConstant(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isManaged(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isVoid(): boolean;\n\n// @ts-ignore\n@builtin\nexport declare function lengthof(func?: T): i32;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function clz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ctz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function popcnt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function abs(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function max(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function min(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ceil(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function floor(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function nearest(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function reinterpret(value: number): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sqrt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function trunc(value: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function load(offset: usize, immOffset?: usize, immAlign?: usize): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function store(offset: usize, value: void, immOffset?: usize, immAlign?: usize): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sizeof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function alignof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function offsetof(fieldName?: string): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function idof(): u32;\n\n// @ts-ignore\n@builtin\nexport declare function nameof(): string;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unreachable(): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function changetype(value: void): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unchecked(expr: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_indirect(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_direct(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function instantiate(...args: void[]): T;\n\nexport namespace atomic {\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: T, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n\n // @ts-ignore: decorator\n @builtin\n export declare function notify(ptr: usize, count: i32): i32;\n}\n\n// @ts-ignore: decorator\n@lazy\nexport const enum AtomicWaitResult {\n OK = 0,\n NOT_EQUAL = 1,\n TIMED_OUT = 2\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8(value: void): i8;\n\nexport namespace i8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i8 = -128;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i8 = 127;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16(value: void): i16;\n\nexport namespace i16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i16 = -32768;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i16 = 32767;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32(value: void): i32;\n\nexport namespace i32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i32 = -2147483648;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i32 = 2147483647;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f32(value: f32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64(value: void): i64;\n\nexport namespace i64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i64 = -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i64 = 9223372036854775807;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f64(value: f64): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw32 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isize(value: void): isize;\n\nexport namespace isize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u8(value: void): u8;\n\nexport namespace u8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u8 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u8 = 255;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u16(value: void): u16;\n\nexport namespace u16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u16 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u16 = 65535;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u32(value: void): u32;\n\nexport namespace u32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u32 = 4294967295;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u64(value: void): u64;\n\nexport namespace u64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function usize(value: void): usize;\n\nexport namespace usize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: usize = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function bool(value: void): bool;\n\nexport namespace bool {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: bool = false;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: bool = true;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32(value: void): f32;\n\nexport namespace f32 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x34000000); // 0x1p-23f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x00000001); // 0x0.000001p+0f\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7F7FFFFF); // 0x1.fffffep+127f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x00800000); // 0x1p-126f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f32, y: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i32(value: i32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f32): f32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f32): f32;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64(value: void): f64;\n\nexport namespace f64 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x3CB0000000000000); // 0x1p-52\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x0000000000000001); // 0x0.0000000000001p+0\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7FEFFFFFFFFFFFFF); // 0x1.fffffffffffffp+1023\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x0010000000000000); // 0x1p-1022\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f64, y: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i64(value: i64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f64): f64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f64): f64;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function v128(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace v128 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128; // except i64\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function not(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function bitselect(v1: v128, v2: v128, c: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8x16(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace i8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\n\nexport namespace i16x8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\n\nexport namespace i32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f32x4_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f32x4_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64x2(a: i64, b: i64): v128;\n\nexport namespace i64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f64x2_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f64x2_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\n\nexport namespace f32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i32x4(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i32x4(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64x2(a: f64, b: f64): v128;\n\nexport namespace f64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i64x2(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i64x2(a: v128): v128;\n}\n\nexport namespace v8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(\n a: v128, b: v128,\n l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8,\n l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8\n ): v128;\n}\n\n// @ts-ignore: decorator\n@external("env", "abort")\ndeclare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n// @ts-ignore: decorator\n@external("env", "trace")\ndeclare function trace(\n message: string,\n n?: i32,\n a0?: f64,\n a1?: f64,\n a2?: f64,\n a3?: f64,\n a4?: f64\n): void;\n',compat:"\nexport type ReturnType = returnof;\n",dataview:'import { BLOCK_MAXSIZE } from "./rt/common";\nimport { ArrayBuffer } from "./arraybuffer";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\n\n// TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte\n\nexport class DataView {\n\n private data: ArrayBuffer;\n private dataStart: usize;\n private dataLength: i32;\n\n constructor(\n buffer: ArrayBuffer,\n byteOffset: i32 = 0,\n byteLength: i32 = buffer.byteLength\n ) {\n if (\n i32(byteLength > BLOCK_MAXSIZE) |\n i32(byteOffset + byteLength > buffer.byteLength)\n ) throw new RangeError(E_INVALIDLENGTH);\n this.data = buffer; // retains\n var dataStart = changetype(buffer) + byteOffset;\n this.dataStart = dataStart;\n this.dataLength = byteLength;\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n getFloat32(byteOffset: i32, littleEndian: boolean = false): f32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getFloat64(byteOffset: i32, littleEndian: boolean = false): f64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getInt8(byteOffset: i32): i8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getInt16(byteOffset: i32, littleEndian: boolean = false): i16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getInt32(byteOffset: i32, littleEndian: boolean = false): i32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint8(byteOffset: i32): u8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getUint16(byteOffset: i32, littleEndian: boolean = false): u16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint32(byteOffset: i32, littleEndian: boolean = false): u32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setFloat32(byteOffset: i32, value: f32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setFloat64(byteOffset: i32, value: f64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setInt8(byteOffset: i32, value: i8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setInt16(byteOffset: i32, value: i16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setInt32(byteOffset: i32, value: i32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint8(byteOffset: i32, value: u8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setUint16(byteOffset: i32, value: u16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint32(byteOffset: i32, value: u32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n // Non-standard additions that make sense in WebAssembly, but won\'t work in JS:\n\n getInt64(byteOffset: i32, littleEndian: boolean = false): i64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i64 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint64(byteOffset: i32, littleEndian: boolean = false): u64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setInt64(byteOffset: i32, value: i64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint64(byteOffset: i32, value: u64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n toString(): string {\n return "[object DataView]";\n }\n}\n',date:'import {\n UTC as Date_UTC,\n now as Date_now\n} from "./bindings/Date";\n\nexport class Date {\n\n @inline static UTC(\n year: i32,\n month: i32 = 0,\n day: i32 = 1,\n hour: i32 = 0,\n minute: i32 = 0,\n second: i32 = 0,\n millisecond: i64 = 0\n ): i64 {\n return Date_UTC(year, month, day, hour, minute, second, millisecond);\n }\n\n @inline static now(): i64 {\n return Date_now();\n }\n\n private value: i64;\n\n constructor(value: i64) {\n this.value = value;\n }\n\n getTime(): i64 {\n return this.value;\n }\n\n setTime(value: i64): i64 {\n this.value = value;\n return value;\n }\n}\n',diagnostics:"// @ts-ignore: decorator\n@builtin\nexport declare function ERROR(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function WARNING(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function INFO(message?: string): void;\n",error:'export class Error {\n\n name: string = "Error";\n stack: string = ""; // TODO\n\n constructor(\n public message: string = ""\n ) {}\n\n toString(): string {\n var message = this.message;\n return message.length\n ? this.name + ": " + message\n : this.name;\n }\n}\n\nexport class RangeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "RangeError";\n }\n}\n\nexport class TypeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "TypeError";\n }\n}\n\nexport class SyntaxError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "SyntaxError";\n }\n}\n',fixedarray:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";\n\n// NOTE: DO NOT USE YET!\n\n// TODO: FixedArray with S being the static size, i.e. `new FixedArray`.\n// Then hard-wire this special type to the compiler and do static length checks instead :)\n\nexport class FixedArray {\n [key: number]: T;\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n var outSize = length << alignof();\n var out = __alloc(outSize, idof>());\n memory.fill(out, 0, outSize);\n return changetype>(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof();\n }\n\n @operator("[]") private __get(index: i32): T {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n this.__unchecked_set(index, value);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(changetype(this) + (index << alignof()));\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = changetype(this) + (index << alignof());\n let oldValue = load(offset);\n if (changetype(value) != oldValue) {\n store(offset, __retain(changetype(value)));\n __release(changetype(oldValue));\n }\n } else {\n store(changetype(this) + (index << alignof()), value);\n }\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = changetype(this);\n let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n }\n}\n',heap:"// @ts-ignore: decorator\n@builtin\nexport declare const __heap_base: usize;\n",iterator:"export abstract class Iterable {\n // ?\n}\n\n@sealed\nexport abstract class Iterator {\n\n // private constructor(iterable: Iterable) {\n // }\n\n // TODO: these need to evaluate the classId at the respective reference in order to obtain the\n // next value, i.e. arrays work differently than maps. we'd then have:\n //\n // ╒═══════════════════ Iterator layout (32-bit) ══════════════════╕\n // 3 2 1\n // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n // │ index │\n // ├─────────────────────────────────────────────────────────┬───┬─┤\n // │ reference │ 0 │D│\n // └─────────────────────────────────────────────────────────┴───┴─┘\n // D: Done flag\n\n // get value(this: u64): T {\n // ?\n // }\n\n // next(this: u64): Iterator {\n // ?\n // }\n\n done(this: u64): bool {\n return (this & 1);\n }\n}\n",map:'/// \n\nimport { HASH } from "./util/hash";\nimport { E_KEYNOTFOUND } from "util/error";\n\n// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a map entry. */\n@unmanaged class MapEntry {\n key: K;\n value: V;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K/V is <= 32-bits\n const maxkv = sizeof() > sizeof() ? sizeof() : sizeof();\n const align = (maxkv > sizeof() ? maxkv : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Map {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // MapEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() {\n this.clear();\n }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: K, hashCode: u32): MapEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n has(key: K): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n @operator("[]")\n get(key: K): V {\n var entry = this.find(key, HASH(key));\n if (!entry) throw new Error(E_KEYNOTFOUND); // cannot represent `undefined`\n return entry.value;\n }\n\n @operator("[]=")\n set(key: K, value: V): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (entry) {\n if (isManaged()) {\n let oldRef = changetype(entry.value);\n if (changetype(value) != oldRef) {\n entry.value = changetype(__retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n entry.value = value;\n }\n } else {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n let entries = this.entries;\n entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE());\n // link with the map\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n entry.value = isManaged()\n ? changetype(__retain(changetype(value)))\n : value;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n delete(key: K): bool {\n var entry = this.find(key, HASH(key));\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key));\n if (isManaged()) __release(changetype(entry.value));\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr);\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr);\n newEntry.key = oldEntry.key;\n newEntry.value = oldEntry.value;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n keys(): K[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var keys = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n keys.push(entry.key);\n }\n }\n return keys;\n }\n\n values(): V[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.value);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Map]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged() || isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n if (isManaged()) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n if (isManaged()) {\n let val = changetype(entry.value);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',math:'import * as JSMath from "./bindings/Math";\nexport { JSMath };\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from "./builtins";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n// TODO: sin, cos, tan for Math namespace\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n return NativeMath.exp(x - kln2) * scale * scale;\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7ff;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u >> 63);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_32: u32;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx >> 31) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var e = reinterpret(x) >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n if (hx >> 31) return -x;\n return x;\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var s = u >> 63;\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n switch (m) {\n case 0: return PI / 4;\n case 1: return -PI / 4;\n case 2: return 3 * PI / 4;\n case 3: return -3 * PI / 4;\n }\n } else {\n switch (m) {\n case 0: return 0.0;\n case 1: return -0.0;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // TODO\n return JSMath.cos(x);\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var hx = (reinterpret(x) >> 32);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n var hi: f64, lo: f64 = 0;\n var k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n var xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n var xq = xs * xs;\n var c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n var y = 1.0 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32 & 0x7FFFFFFF);\n var k = 0, sign_ = (u >> 63);\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign_) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = (ux >> 52);\n var ey = (uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || (hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = (u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = (hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln2hi;\n var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n var y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n var u_ = reinterpret(x);\n var hx = (u_ >> 32);\n var lx = u_;\n u_ = reinterpret(y);\n var hy = (u_ >> 32);\n var ly = u_;\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n var yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let kcond = k > 20;\n let offset = select(52, 20, kcond) - k;\n let Ly = select(ly, iy, kcond);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n var ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n var s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n var t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n var j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret((((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n var y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = (u_ >> 32);\n var i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret((n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = (reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n\n export function seedRandom(value: i64): void {\n assert(value);\n random_seeded = true;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n }\n\n export function random(): f64 { // see: v8/src/base/random-number-generator.cc\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = ((s0 + s1) & 0x000FFFFFFFFFFFFF) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f64): f64 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n // In ECMAScript all NaN values are indistinguishable from each other\n // so we need handle NaN and negative NaN in similar way\n return ((reinterpret(x) >>> 63) & i32(x == x));\n }\n\n export function sin(x: f64): f64 { // TODO\n return JSMath.sin(x);\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var absx = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n t = expm1(absx);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // TODO\n return JSMath.tan(x);\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n /* make sure final n < -53 to avoid double\n rounding in the subnormal range */\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx << 63;\n return reinterpret(ux);\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = (ux >> 63);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return sx ? -x : x;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy\nconst PIO2_TABLE: u64[] = [\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n];\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret((0x7F + (k >> 1)) << 23);\n return NativeMathf.exp(x - kln2) * scale * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n const bits = PIO2_TABLE;\n\n var offset = (u >> 23) - 152;\n var index = offset >> 6;\n var shift = offset & 63;\n\n var b0 = unchecked(bits[index + 0]);\n var b1 = unchecked(bits[index + 1]);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = unchecked(bits[index + 2]);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product: u64 = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q: i32 = ((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const pi2hi = reinterpret(0x3FF921FB50000000); // 1.57079631090164184570\n const pi2lo = reinterpret(0x3E5110B4611A6263); // 1.58932547735281966916e-8\n const _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { /* π * 0x1p28 */\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const S1 = reinterpret(0xBFC5555554CBAC77); // -0x15555554cbac77.0p-55\n const S2 = reinterpret(0x3F811110896EFBB2); // 0x111110896efbb2.0p-59\n const S3 = reinterpret(0xBF2A00F9E2CAE774); // -0x1a00f9e2cae774.0p-65\n const S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return ((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const C0 = reinterpret(0xBFDFFFFFFD0C5E81); // -0x1ffffffd0c5e81.0p-54\n const C1 = reinterpret(0x3FA55553E1053A42); // 0x155553e1053a42.0p-57\n const C2 = reinterpret(0xBF56C087E80F1E27); // -0x16c087e80f1e27.0p-62\n const C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return (((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n\n const T0 = reinterpret(0x3FD5554D3418C99F); /* 0x15554d3418c99f.0p-54 */\n const T1 = reinterpret(0x3FC112FD38999F72); /* 0x1112fd38999f72.0p-55 */\n const T2 = reinterpret(0x3FAB54C91D865AFE); /* 0x1b54c91d865afe.0p-57 */\n const T3 = reinterpret(0x3F991DF3908C33CE); /* 0x191df3908c33ce.0p-58 */\n const T4 = reinterpret(0x3F685DADFCECF44E); /* 0x185dadfcecf44e.0p-61 */\n const T5 = reinterpret(0x3F8362B9BF971BCD); /* 0x1362b9bf971bcd.0p-59 */\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return (odd ? -1 / r : r);\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000);\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx >> 31) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) {\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (a < 0x3F800000 + (12 << 23)) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000);\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = (pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000);\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = (((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n switch (m) {\n case 0: return pi / 4;\n case 1: return -pi / 4;\n case 2: return 3 * pi / 4;\n case 3: return -3 * pi / 4;\n }\n } else {\n switch (m) {\n case 0: return 0;\n case 1: return -0;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const c1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const c2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const c3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n /* raise inexact if x != 0 */\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix > 0x4016cbe3) { /* |x| ~> 3π/4 */\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix > 0x40afeddf) { /* |x| ~> 7π/4 */\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n /* cos(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000);\n var hx = reinterpret(x);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx >= 0x42B17218) {\n if (!sign_) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n var hi: f32, lo: f32;\n var k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n var xx = x * x;\n var c = x - xx * (P1 + xx * P2);\n var y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x42B17180), // 8.8721679688e+01f\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign_ = (u >> 31);\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign_) return -1;\n if (x > o_threshold) {\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt((x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n var u = reinterpret(x);\n var k = 0;\n if (u < 0x00800000 || (u >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (u >> 31) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) return x;\n else if (u == 0x3F800000) return 0;\n u += 0x3F800000 - 0x3F3504F3;\n k += (u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ix = reinterpret(hi);\n ix &= 0xFFFFF000;\n hi = reinterpret(ix);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n var ix = reinterpret(x);\n var c: f32 = 0, f: f32 = 0;\n var k: i32 = 1;\n if (ix < 0x3ED413D0 || (ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = (iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k: i32 = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n var u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n var lo: f32 = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 { // see: musl/src/math/powf.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3F15C000), // 5.84960938e-01f\n dp_l1 = reinterpret(0x35D1CFDC), // 1.56322085e-06f\n two24 = reinterpret(0x4B800000), // 16777216f\n huge = reinterpret(0x7149F2CA), // 1.0e+30f\n tiny = reinterpret(0x0DA24260), // 1.0e-30f\n L1 = reinterpret(0x3F19999A), // 6.0000002384e-01f\n L2 = reinterpret(0x3EDB6DB7), // 4.2857143283e-01f\n L3 = reinterpret(0x3EAAAAAB), // 3.3333334327e-01f\n L4 = reinterpret(0x3E8BA305), // 2.7272811532e-01f\n L5 = reinterpret(0x3E6C3255), // 2.3066075146e-01f\n L6 = reinterpret(0x3E53F142), // 2.0697501302e-01f\n P1 = reinterpret(0x3E2AAAAB), // 1.6666667163e-01f\n P2 = reinterpret(0xBB360B61), // -2.7777778450e-03f\n P3 = reinterpret(0x388AB355), // 6.6137559770e-05f\n P4 = reinterpret(0xB5DDEA0E), // -1.6533901999e-06f\n P5 = reinterpret(0x3331BB4C), // 4.1381369442e-08f\n lg2 = reinterpret(0x3F317218), // 6.9314718246e-01f\n lg2_h = reinterpret(0x3F317200), // 6.93145752e-01f\n lg2_l = reinterpret(0x35BFBE8C), // 1.42860654e-06f\n ovt = reinterpret(0x3338AA3C), // 4.2995665694e-08f\n cp = reinterpret(0x3F76384F), // 9.6179670095e-01\n cp_h = reinterpret(0x3F764000), // 9.6191406250e-01\n cp_l = reinterpret(0xB8F623C6), // -1.1736857402e-04\n ivln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00\n ivln2_h = reinterpret(0x3FB8AA00), // 1.4426879883e+00\n ivln2_l = reinterpret(0x36ECA570), // 7.0526075433e-06\n inv3 = reinterpret(0x3EAAAAAB); // 0.333333333333\n var hx = reinterpret(x);\n var hy = reinterpret(y);\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if (iy == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3F800000) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if (ix > 0x7F800000 || iy > 0x7F800000) return x + y; // NaN if either arg is NaN\n var yisint = 0, j: i32, k: i32;\n if (hx < 0) {\n if (iy >= 0x4B800000) yisint = 2;\n else if (iy >= 0x3F800000) {\n k = (iy >> 23) - 0x7F;\n let ki = 23 - k;\n j = iy >> ki;\n if ((j << ki) == iy) yisint = 2 - (j & 1);\n }\n }\n if (iy == 0x7F800000) { // y is +-inf\n if (ix == 0x3F800000) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix > 0x3F800000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3F800000) return hy >= 0 ? x : 1.0 / x;\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3F000000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n var ax = builtin_abs(x);\n var z: f32;\n if (ix == 0x7F800000 || ix == 0 || ix == 0x3F800000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3F800000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n }\n else if (yisint == 1) z = -z;\n }\n return z;\n }\n var sn = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) sn = -1.0;\n }\n var t1: f32, t2: f32, r: f32, s: f32, t: f32, u: f32, v: f32, w: f32, p_h: f32, p_l: f32;\n var n: i32, is: i32;\n if (iy > 0x4D000000) {\n if (ix < 0x3F7FFFF8) return hy < 0 ? sn * huge * huge : sn * tiny * tiny;\n if (ix > 0x3F800007) return hy > 0 ? sn * huge * huge : sn * tiny * tiny;\n t = ax - 1;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = v - (t1 - u);\n } else {\n let s2: f32, s_h: f32, s_l: f32, t_h: f32, t_l: f32;\n n = 0;\n if (ix < 0x00800000) {\n ax *= two24;\n n -= 24;\n ix = reinterpret(ax);\n }\n n += (ix >> 23) - 0x7F;\n j = ix & 0x007FFFFF;\n ix = j | 0x3F800000;\n if (j <= 0x1CC471) k = 0;\n else if (j < 0x5DB3D7) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00800000;\n }\n ax = reinterpret(ix);\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n s = u * v;\n s_h = s;\n is = reinterpret(s_h);\n s_h = reinterpret(is & 0xFFFFF000);\n is = ((ix >> 1) & 0xFFFFF000) | 0x20000000;\n t_h = reinterpret(is + 0x00400000 + (k << 21));\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = s * s;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + s);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n is = reinterpret(t_h);\n t_h = reinterpret(is & 0xFFFFF000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * s;\n p_h = u + v;\n is = reinterpret(p_h);\n p_h = reinterpret(is & 0xFFFFF000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = (((z_h + z_l) + dp_h) + t);\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n is = reinterpret(y);\n var y1 = reinterpret(is & 0xFFFFF000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n j = reinterpret(z);\n if (j > 0x43000000) {\n return sn * huge * huge;\n } else if (j == 0x43000000) {\n if (p_l + ovt > z - p_h) return sn * huge * huge;\n } else if ((j & 0x7FFFFFFF) > 0x43160000) {\n return sn * tiny * tiny;\n } else if (j == 0xC3160000) {\n if (p_l <= z - p_h) return sn * tiny * tiny;\n }\n var i = j & 0x7FFFFFFF;\n k = (i >> 23) - 0x7F;\n n = 0;\n if (i > 0x3F000000) {\n n = j + (0x00800000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 23) - 0x7F;\n t = reinterpret(n & ~(0x007FFFFF >> k));\n n = ((n & 0x007FFFFF) | 0x00800000) >> (23 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n is = reinterpret(t);\n t = reinterpret(is & 0xFFFF8000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = reinterpret(z);\n j += n << 23;\n if ((j >> 23) <= 0) z = scalbn(z, n);\n else z = reinterpret(j);\n return sn * z;\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f32): f32 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n // @ts-ignore: type\n return ((reinterpret(x) >>> 31) & (x == x));\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const s2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var absx = reinterpret(u);\n var t: f32;\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n t = expm1(absx);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2f(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const t1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const t2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const t3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n /* tan(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* argument reduction */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx;\n return reinterpret(ux);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = (ux >> 31);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // q++;\n }\n return sx ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const s2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7fffffff;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n /* -sin(x + c) is not correct if x+c could be 0: -0 vs +0 */\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n\n switch (n & 3) {\n case 0: {\n sincos_sin = s;\n sincos_cos = c;\n break;\n }\n case 1: {\n sincos_sin = c;\n sincos_cos = -s;\n break;\n }\n case 2: {\n sincos_sin = -s;\n sincos_cos = -c;\n break;\n }\n case 3:\n default: {\n sincos_sin = -c;\n sincos_cos = s;\n break;\n }\n }\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 5) {\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i32): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 6) {\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow32f(x: f32, e: i32): f32 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out: f32 = 1;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n\nexport function ipow64f(x: f64, e: i32): f64 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out = 1.0;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n',memory:'import { memcmp, memmove, memset } from "./util/memory";\nimport { E_NOTIMPLEMENTED } from "./util/error";\n\n/** Memory manager interface. */\nexport namespace memory {\n\n /** Gets the size of the memory in pages. */\n // @ts-ignore: decorator\n @builtin\n export declare function size(): i32;\n\n /** Grows the memory by the given size in pages and returns the previous size in pages. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function grow(pages: i32): i32;\n\n /** Fills a section in memory with the specified byte value. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function fill(dst: usize, c: u8, n: usize): void {\n memset(dst, c, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Copies a section of memory to another. Has move semantics. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function copy(dst: usize, src: usize, n: usize): void {\n memmove(dst, src, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Initializes a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Drops a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function drop(segmentIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Repeats a section of memory at a specific address. */\n // @ts-ignore: decorator\n @unsafe\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void {\n var index: usize = 0;\n var total = srcLength * count;\n while (index < total) {\n memory.copy(dst + index, src, srcLength);\n index += srcLength;\n }\n }\n\n /** Compares a section of memory to another. */\n // @ts-ignore: decorator\n @inline\n export function compare(vl: usize, vr: usize, n: usize): i32 {\n return memcmp(vl, vr, n);\n }\n}\n',number:'import { itoa, dtoa } from "./util/number";\nimport { strtol } from "./util/string";\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const NaN: f64 = 0 / 0;\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const Infinity: f64 = 1 / 0;\n\nexport function isNaN(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value != value;\n}\n\nexport function isFinite(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value - value == 0;\n}\n\n@sealed @unmanaged\nexport abstract class I8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i8 = i8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i8 = i8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i8 {\n return strtol(value, radix);\n }\n\n toString(this: i8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i16 = i16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i16 = i16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i16 {\n return strtol(value, radix);\n }\n\n toString(this: i16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i32 = i32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i32 = i32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i32 {\n return strtol(value, radix);\n }\n\n toString(this: i32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i64 = i64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i64 = i64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i64 {\n return strtol(value, radix);\n }\n\n toString(this: i64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Isize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: isize = isize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: isize = isize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): isize {\n return strtol(value, radix);\n }\n\n toString(this: isize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u8 = u8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u8 = u8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u8 {\n return strtol(value, radix);\n }\n\n toString(this: u8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u16 = u16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u16 = u16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u16 {\n return strtol(value, radix);\n }\n\n toString(this: u16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u32 = u32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u32 = u32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u32 {\n return strtol(value, radix);\n }\n\n toString(this: u32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u64 = u64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u64 = u64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u64 {\n return strtol(value, radix);\n }\n\n toString(this: u64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Usize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: usize = usize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: usize = usize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): usize {\n return strtol(value, radix);\n }\n\n toString(this: usize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Bool {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: bool = bool.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: bool = bool.MAX_VALUE;\n\n toString(this: bool): String {\n // TODO: radix?\n return this ? "true" : "false";\n }\n}\n\nexport { Bool as Boolean };\n\n@sealed @unmanaged\nexport abstract class F32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f32 = f32.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f32 = f32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f32 = f32.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f32 = f32.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f32 = f32.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f32 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f32 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f32 = NaN;\n\n static isNaN(value: f32): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f32): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f32): bool {\n return abs(value) <= f32.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f32): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f32 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f32 {\n return parseFloat(value);\n }\n\n toString(this: f32): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class F64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f64 = f64.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f64 = f64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f64 = f64.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f64 = f64.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f64 = f64.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f64 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f64 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f64 = NaN;\n\n static isNaN(value: f64): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f64): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f64): bool {\n return abs(value) <= f64.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f64): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f64 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f64 {\n return parseFloat(value);\n }\n\n toString(this: f64, radix: i32 = 0): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\nexport { F64 as Number };\n',polyfills:"export function bswap(value: T): T {\n if (isInteger()) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n }\n if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n }\n if (sizeof() == 8) {\n let a = (value >> 8) & 0x00FF00FF00FF00FF;\n let b = (value & 0x00FF00FF00FF00FF) << 8;\n let v = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n }\n assert(false);\n return value;\n}\n\nexport function bswap16(value: T): T {\n if (isInteger() && sizeof() <= 4) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n } else if (sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n }\n assert(false);\n return value;\n}\n",regexp:'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',rt:'import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo";\nimport { E_INDEXOUTOFRANGE } from "./util/error";\nimport { BLOCK, BLOCK_OVERHEAD } from "./rt/common";\nimport { ArrayBufferView } from "./arraybuffer";\n\n// @ts-ignore: decorator\n@builtin\nexport declare const __rtti_base: usize;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_globals(cookie: u32): void;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_members(ref: usize, cookie: u32): void;\n\n// @ts-ignore: decorator\n@unsafe\nexport function __typeinfo(id: u32): TypeinfoFlags {\n var ptr = __rtti_base;\n if (id > load(ptr)) throw new Error(E_INDEXOUTOFRANGE);\n return changetype(ptr + sizeof() + id * offsetof()).flags;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __instanceof(ref: usize, superId: u32): bool { // keyword\n var id = changetype(ref - BLOCK_OVERHEAD).rtId;\n var ptr = __rtti_base;\n if (id <= load(ptr)) {\n do if (id == superId) return true;\n while (id = changetype(ptr + sizeof() + id * offsetof()).base);\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize {\n var array = __alloc(offsetof(), id);\n var bufferSize = length << alignLog2;\n var buffer = __alloc(bufferSize, idof());\n store(array, __retain(buffer), offsetof("data"));\n changetype(array).dataStart = buffer;\n changetype(array).dataLength = bufferSize;\n store(changetype(array), length, offsetof("length_"));\n if (data) memory.copy(buffer, data, bufferSize);\n return array;\n}\n\n// These are provided by the respective implementation, included as another entry file by asc:\n\n// @builtin @unsafe\n// export declare function __alloc(size: usize, id: u32): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __realloc(ref: usize, size: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __free(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __retain(ref: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __release(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __collect(): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __visit(ref: usize, cookie: u32): void;\n',"rt/common":"// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n\n// ╒════════════════ Common block layout (32-bit) ═════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime size │ -4\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ ... │ ref\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize; // WASM64 needs adaption\n /** Garbage collector info. */\n gcInfo: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD = (offsetof() + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n","rt/index-full":'export { __alloc } from "rt/tlsf";\nexport { __retain, __release, __collect } from "rt/pure";\nexport { __rtti_base } from "rt";\n',"rt/index-half":'import "rt/index-full";\n',"rt/index-none":'import "rt/index-stub";\n',"rt/index-stub":'export { __alloc, __retain, __release, __collect } from "rt/stub";\nexport { __rtti_base } from "rt";\n',"rt/pure":'import { DEBUG, BLOCK_OVERHEAD } from "rt/common";\nimport { Block, freeBlock, ROOT } from "rt/tlsf";\nimport { TypeinfoFlags } from "shared/typeinfo";\nimport { onincrement, ondecrement, onfree, onalloc } from "./rtrace";\n\n/////////////////////////// A Pure Reference Counting Garbage Collector ///////////////////////////\n// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf\n\n// ╒══════════════════════ GC Info structure ══════════════════════╕\n// │ 3 2 1 │\n// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│\n// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │B│color│ refCount │\n// └─┴─────┴───────────────────────────────────────────────────────┘\n// B: buffered\n\n// @ts-ignore: decorator\n@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1);\n// @ts-ignore: decorator\n@inline const COLOR_BITS = 3;\n// @ts-ignore: decorator\n@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS;\n// @ts-ignore: decorator\n@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1;\n\n// ╒════════╤═══════════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├────────┼──────────────────────────────────────────────────────┤\n// │ BLACK │ In use or free │\n// │ GRAY │ Possible member of cycle │\n// │ WHITE │ Member of garbage cycle │\n// │ PURPLE │ Possible root of cycle │\n// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │\n// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │\n// └────────┴──────────────────────────────────────────────────────┘\n// Acyclic detection has been decoupled, hence no GREEN.\n\n// @ts-ignore: decorator\n@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_RED: u32 = 4 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT;\n\n// @ts-ignore: decorator\n@inline const VISIT_DECREMENT = 1; // guard 0\n// @ts-ignore: decorator\n@inline const VISIT_MARKGRAY = 2;\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 3;\n// @ts-ignore: decorator\n@inline const VISIT_SCANBLACK = 4;\n// @ts-ignore: decorator\n@inline const VISIT_COLLECTWHITE = 5;\n\n// @ts-ignore: decorator\n@global @unsafe\nfunction __visit(ref: usize, cookie: i32): void {\n if (ref < __heap_base) return;\n var s = changetype(ref - BLOCK_OVERHEAD);\n switch (cookie) {\n case VISIT_DECREMENT: {\n decrement(s);\n break;\n }\n case VISIT_MARKGRAY: {\n if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0);\n s.gcInfo = s.gcInfo - 1;\n markGray(s);\n break;\n }\n case VISIT_SCAN: {\n scan(s);\n break;\n }\n case VISIT_SCANBLACK: {\n let info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if ((info & COLOR_MASK) != COLOR_BLACK) {\n scanBlack(s);\n }\n break;\n }\n case VISIT_COLLECTWHITE: {\n collectWhite(s);\n break;\n }\n default: if (DEBUG) assert(false);\n }\n}\n\n/** Increments the reference count of the specified block by one.*/\nfunction increment(s: Block): void {\n var info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if (isDefined(ASC_RTRACE)) onincrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n}\n\n/** Decrements the reference count of the specified block by one, possibly freeing it. */\nfunction decrement(s: Block): void {\n var info = s.gcInfo;\n var rc = info & REFCOUNT_MASK;\n if (isDefined(ASC_RTRACE)) ondecrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n if (rc == 1) {\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT);\n if (!(info & BUFFERED_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0;\n }\n } else {\n if (DEBUG) assert(rc > 0);\n if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) {\n s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1);\n if (!(info & BUFFERED_MASK)) {\n appendRoot(s);\n }\n } else {\n s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1);\n }\n }\n}\n\n/** Buffer of possible roots. */\n// @ts-ignore: decorator\n@lazy var ROOTS: usize;\n/** Current absolute offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var CUR: usize = 0;\n/** Current absolute end offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var END: usize = 0;\n\n/** Appends a block to possible roots. */\nfunction appendRoot(s: Block): void {\n var cur = CUR;\n if (cur >= END) {\n growRoots(); // TBD: either that or pick a default and force collection on overflow\n cur = CUR;\n }\n store(cur, s);\n CUR = cur + sizeof();\n}\n\n/** Grows the roots buffer if it ran full. */\nfunction growRoots(): void {\n var oldRoots = ROOTS;\n var oldSize = CUR - oldRoots;\n var newSize = max(oldSize * 2, 64 << alignof());\n var newRoots = __alloc(newSize, 0);\n if (isDefined(ASC_RTRACE)) onfree(changetype(newRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n memory.copy(newRoots, oldRoots, oldSize);\n if (oldRoots) {\n if (isDefined(ASC_RTRACE)) onalloc(changetype(oldRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n __free(oldRoots);\n }\n ROOTS = newRoots;\n CUR = newRoots + oldSize;\n END = newRoots + newSize;\n}\n\n/** Collects cyclic garbage. */\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n\n // markRoots\n var roots = ROOTS;\n var cur = roots;\n for (let pos = cur, end = CUR; pos < end; pos += sizeof()) {\n let s = load(pos);\n let info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) {\n markGray(s);\n store(cur, s);\n cur += sizeof();\n } else {\n if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = info & ~BUFFERED_MASK;\n }\n }\n }\n CUR = cur;\n\n // scanRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n scan(load(pos));\n }\n\n // collectRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n let s = load(pos);\n s.gcInfo = s.gcInfo & ~BUFFERED_MASK;\n collectWhite(s);\n }\n CUR = roots;\n}\n\n/** Marks a block as gray (possible member of cycle) during the collection phase. */\nfunction markGray(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) != COLOR_GRAY) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY);\n }\n}\n\n/** Scans a block during the collection phase, determining whether it is garbage or not. */\nfunction scan(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_GRAY) {\n if ((info & REFCOUNT_MASK) > 0) {\n scanBlack(s);\n } else {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN);\n }\n }\n}\n\n/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */\nfunction scanBlack(s: Block): void {\n s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK);\n}\n\n/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */\nfunction collectWhite(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE);\n freeBlock(ROOT, s);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n if (ref > __heap_base) increment(changetype(ref - BLOCK_OVERHEAD));\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n if (ref > __heap_base) decrement(changetype(ref - BLOCK_OVERHEAD));\n}\n',"rt/rtrace":'import { BLOCK } from "./common";\n\nexport declare function onalloc(s: BLOCK): void;\nexport declare function onincrement(s: BLOCK): void;\nexport declare function ondecrement(s: BLOCK): void;\nexport declare function onfree(s: BLOCK): void;\n',"rt/stub":'import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common";\n\n// @ts-ignore: decorator\n@lazy\nvar startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@lazy\nvar offset: usize = startOffset;\n\nfunction maybeGrowMemory(newOffset: usize): void {\n // assumes newOffset is aligned\n var pagesBefore = memory.size();\n var maxOffset = pagesBefore << 16;\n if (newOffset > maxOffset) {\n let pagesNeeded = ((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16;\n let pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory\n }\n }\n offset = newOffset;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __alloc(size: usize, id: u32): usize {\n if (size > BLOCK_MAXSIZE) unreachable();\n var ptr = offset + BLOCK_OVERHEAD;\n var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE);\n maybeGrowMemory(ptr + actualSize);\n var block = changetype(ptr - BLOCK_OVERHEAD);\n block.mmInfo = actualSize;\n if (DEBUG) block.gcInfo = -1;\n block.rtId = id;\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __realloc(ptr: usize, size: usize): usize {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n var actualSize = block.mmInfo;\n if (DEBUG) assert(block.gcInfo == -1);\n if (size > actualSize) {\n if (ptr + actualSize == offset) { // last block: grow\n if (size > BLOCK_MAXSIZE) unreachable();\n actualSize = (size + AL_MASK) & ~AL_MASK;\n maybeGrowMemory(ptr + actualSize);\n block.mmInfo = actualSize;\n } else { // copy to new block at least double the size\n actualSize = max((size + AL_MASK) & ~AL_MASK, actualSize << 1);\n let newPtr = __alloc(actualSize, block.rtId);\n memory.copy(newPtr, ptr, block.rtSize);\n block = changetype((ptr = newPtr) - BLOCK_OVERHEAD);\n }\n } else if (ptr + actualSize == offset) { // last block: shrink\n actualSize = (size + AL_MASK) & ~AL_MASK;\n offset = ptr + actualSize;\n block.mmInfo = actualSize;\n }\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __free(ptr: usize): void {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n if (DEBUG) assert(block.gcInfo == -1);\n if (ptr + block.mmInfo == offset) { // last block: discard\n offset = changetype(block);\n }\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nfunction __reset(): void { // special\n offset = startOffset;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ref: usize, cookie: u32): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n}\n',"rt/tlsf":"import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"rt/common\";\nimport { onfree, onalloc } from \"./rtrace\";\nimport { REFCOUNT_MASK } from \"./pure\";\n\n/////////////////////// The TLSF (Two-Level Segregate Fit) memory allocator ///////////////////////\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: usize = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: usize = (SL_BITS + AL_BITS);\n// @ts-ignore: decorator\n@inline const SB_SIZE: usize = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐\n// │ size │0│L│F│ ◄─┐ info\n// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │\n// │ │ │\n// │ ... additional runtime overhead ... │ │\n// │ │ │\n// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ = 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n let newSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = (blockInfo & TAGS_MASK) | newSize;\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n let newSize = (leftInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, left);\n left.mmInfo = blockInfo = (leftInfo & TAGS_MASK) | newSize;\n block = left;\n // 'back' is set below\n }\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) {\n assert(\n start <= end && // must be valid\n !(start & AL_MASK) && // must be aligned\n !(end & AL_MASK) // must be aligned\n );\n }\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n if (start - BLOCK_OVERHEAD == changetype(tail)) {\n start -= BLOCK_OVERHEAD;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - (BLOCK_OVERHEAD << 1);\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + size - BLOCK_OVERHEAD);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size >= BLOCK_MAXSIZE) throw new Error(\"allocation too large\");\n return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size\n}\n\n/** Initilizes the root structure. */\nexport function initializeRoot(): void {\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n addMemory(root, (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK, memory.size() << 16);\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = searchBlock(root, payloadSize);\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n block.gcInfo = 0; // RC=0\n // block.rtId = 0; // set by the caller (__alloc)\n block.rtSize = size;\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n if (DEBUG) {\n assert(\n !(blockInfo & FREE) && // must be used\n !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK\n );\n }\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= (blockInfo & ~TAGS_MASK)) {\n prepareBlock(root, block, payloadSize);\n block.rtSize = size;\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which\n // is immediately split though. does this trigger any assertions / issues?\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n block.rtSize = size;\n prepareBlock(root, block, payloadSize);\n return block;\n }\n }\n\n // otherwise move the block\n var newBlock = allocateBlock(root, size);\n newBlock.rtId = block.rtId;\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size);\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n assert(!(blockInfo & FREE)); // must be used (user might call through to this)\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize, id: u32): usize {\n var root = ROOT;\n if (!root) {\n initializeRoot();\n root = ROOT;\n }\n var block = allocateBlock(root, size);\n block.rtId = id;\n return changetype(block) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ref: usize, size: usize): usize {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n return changetype(reallocateBlock(ROOT, changetype(ref - BLOCK_OVERHEAD), size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ref: usize): void {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n freeBlock(ROOT, changetype(ref - BLOCK_OVERHEAD));\n}\n",set:'/// \n\nimport { HASH } from "./util/hash";\n\n// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a set entry. */\n@unmanaged class SetEntry {\n key: K;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K is <= 32-bits\n const align = (sizeof() > sizeof() ? sizeof() : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Set {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // SetEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() { this.clear(); }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: T, hashCode: u32): SetEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n @operator("[]")\n has(key: T): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n add(key: T): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (!entry) {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n entry = changetype>(changetype(this.entries) + this.entriesOffset++ * ENTRY_SIZE());\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n @operator("[]=")\n private __set(key: T, value: bool): void {\n if (value) this.add(key);\n else this.delete(key);\n }\n\n delete(key: T): bool {\n var entry = this.find(key, HASH(key)); // unmanaged!\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key)); // exact \'key\'\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr); // unmanaged!\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr); // unmanaged!\n newEntry.key = oldEntry.key;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n values(): T[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.key);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Set]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',"shared/feature":"// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","shared/target":"// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","shared/typeinfo":"// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n",string:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { compareImpl, strtol, strtod, isSpace } from "./util/string";\nimport { E_INVALIDLENGTH } from "./util/error";\nimport { ArrayBufferView } from "./arraybuffer";\nimport { idof } from "./builtins";\n\n@sealed export abstract class String {\n\n @lazy static readonly MAX_LENGTH: i32 = BLOCK_MAXSIZE >>> alignof();\n\n static fromCharCode(unit: i32, surr: i32 = -1): string {\n var hasSur = surr > 0;\n var out = __alloc(2 << i32(hasSur), idof());\n store(out, unit);\n if (hasSur) store(out, surr, 2);\n return changetype(out); // retains\n }\n\n static fromCodePoint(code: i32): string {\n assert(code <= 0x10FFFF);\n var hasSur = code > 0xFFFF;\n var out = __alloc(2 << i32(hasSur), idof());\n if (!hasSur) {\n store(out, code);\n } else {\n code -= 0x10000;\n let hi: u32 = (code >>> 10) + 0xD800;\n let lo: u32 = (code & 0x3FF) + 0xDC00;\n store(out, (hi << 16) | lo);\n }\n return changetype(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1;\n }\n\n @operator("[]") charAt(pos: i32): String {\n if (pos >= this.length) return changetype("");\n var out = __alloc(2, idof());\n store(out, load(changetype(this) + (pos << 1)));\n return changetype(out); // retains\n }\n\n charCodeAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (NaN)\n return load(changetype(this) + (pos << 1));\n }\n\n codePointAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (undefined)\n var first = load(changetype(this) + (pos << 1));\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) return first;\n var second = load(changetype(this) + ((pos + 1) << 1));\n if (second < 0xDC00 || second > 0xDFFF) return first;\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+") private static __concat(left: String, right: String): String {\n return select(left, changetype("null"), left !== null).concat(right);\n }\n\n concat(other: String): String {\n if (other === null) other = changetype("null");\n var thisSize: isize = this.length << 1;\n var otherSize: isize = other.length << 1;\n var outSize: usize = thisSize + otherSize;\n if (outSize == 0) return changetype("");\n var out = changetype(__alloc(outSize, idof())); // retains\n memory.copy(changetype(out), changetype(this), thisSize);\n memory.copy(changetype(out) + thisSize, changetype(other), otherSize);\n return out;\n }\n\n endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {\n if (search === null) return false;\n end = min(max(end, 0), this.length);\n var searchLength = search.length;\n var searchStart = end - searchLength;\n if (searchStart < 0) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n @operator("==") private static __eq(left: String | null, right: String | null): bool {\n if (left === right) return true;\n if (left === null || right === null) return false;\n var leftLength = left.length;\n if (leftLength != right.length) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(left, 0, right, 0, leftLength);\n }\n\n @operator.prefix("!")\n private static __not(str: String | null): bool {\n return str === null || !str.length;\n }\n\n @operator("!=")\n private static __ne(left: String | null, right: String | null): bool {\n return !this.__eq(left, right);\n }\n\n @operator(">") private static __gt(left: String | null, right: String | null): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!leftLength) return false;\n if (!rightLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0;\n }\n\n @operator(">=") private static __gte(left: String, right: String): bool {\n return !this.__lt(left, right);\n }\n\n @operator("<") private static __lt(left: String, right: String): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!rightLength) return false;\n if (!leftLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0;\n }\n\n @operator("<=") private static __lte(left: String, right: String): bool {\n return !this.__gt(left, right);\n }\n\n includes(search: String, start: i32 = 0): bool {\n return this.indexOf(search, start) != -1;\n }\n\n indexOf(search: String, start: i32 = 0): i32 {\n var searchLen = search.length;\n if (!searchLen) return 0;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len);\n for (len -= searchLen; searchStart <= len; ++searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n lastIndexOf(search: String, start: i32 = i32.MAX_VALUE): i32 {\n var searchLen = search.length;\n if (!searchLen) return this.length;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len - searchLen);\n for (; searchStart >= 0; --searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n startsWith(search: String, start: i32 = 0): bool {\n if (search === null) search = changetype("null");\n var len = this.length;\n var searchStart = min(max(start, 0), len);\n var searchLength = search.length;\n if (searchLength + searchStart > len) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) intStart = max(size + intStart, 0);\n var resultLength = min(max(end, 0), size - intStart);\n if (resultLength <= 0) return changetype("");\n var out = __alloc(resultLength << 1, idof());\n memory.copy(out, changetype(this) + intStart, resultLength);\n return changetype(out); // retains\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len: isize = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var fromPos = min(finalStart, finalEnd) << 1;\n var toPos = max(finalStart, finalEnd) << 1;\n len = toPos - fromPos;\n if (!len) return changetype("");\n if (!fromPos && toPos == this.length << 1) return this;\n var out = __alloc(len, idof());\n memory.copy(out, changetype(this) + fromPos, len);\n return changetype(out); // retains\n }\n\n trim(): String {\n var length = this.length;\n var size: usize = length << 1;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2; size -= 2;\n }\n if (!size) return changetype("");\n if (!offset && size == length << 1) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n @inline\n trimLeft(): String {\n return this.trimStart();\n }\n\n @inline\n trimRight(): String {\n return this.trimEnd();\n }\n\n trimStart(): String {\n var size = this.length << 1;\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2;\n }\n if (!offset) return this;\n size -= offset;\n if (!size) return changetype("");\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n trimEnd(): String {\n var originalSize = this.length << 1;\n var size = originalSize;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n if (!size) return changetype("");\n if (size == originalSize) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n return changetype(out); // retains\n }\n\n padStart(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var prependSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n if (prependSize > padSize) {\n let repeatCount = (prependSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = prependSize - restBase;\n memory.repeat(out, changetype(pad), padSize, repeatCount);\n memory.copy(out + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out, changetype(pad), prependSize);\n }\n memory.copy(out + prependSize, changetype(this), thisSize);\n return changetype(out); // retains\n }\n\n padEnd(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var appendSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n memory.copy(out, changetype(this), thisSize);\n if (appendSize > padSize) {\n let repeatCount = (appendSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = appendSize - restBase;\n memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount);\n memory.copy(out + thisSize + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out + thisSize, changetype(pad), appendSize);\n }\n return changetype(out); // retains\n }\n\n repeat(count: i32 = 0): String {\n var length = this.length;\n\n // Most browsers can\'t handle strings 1 << 28 chars or longer\n if (count < 0 || length * count > (1 << 28)) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n\n if (count == 0 || !length) return changetype("");\n if (count == 1) return this;\n var out = __alloc((length * count) << 1, idof());\n memory.repeat(out, changetype(this), length << 1, count);\n return changetype(out); // retains\n }\n\n replace(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var index: isize = this.indexOf(search);\n if (~index) {\n let rlen: usize = replacement.length;\n len -= slen;\n let olen = len + rlen;\n if (olen) {\n let out = __alloc(olen << 1, idof());\n memory.copy(out, changetype(this), index << 1);\n memory.copy(\n out + (index << 1),\n changetype(replacement),\n rlen << 1\n );\n memory.copy(\n out + ((index + rlen) << 1),\n changetype(this) + ((index + slen) << 1),\n (len - index) << 1\n );\n return changetype(out);\n }\n }\n return this;\n }\n\n replaceAll(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var rlen: usize = replacement.length;\n if (!slen) {\n if (!rlen) return this;\n // Special case: \'abc\'.replaceAll(\'\', \'-\') -> \'-a-b-c-\'\n let out = __alloc((len + (len + 1) * rlen) << 1, idof());\n memory.copy(out, changetype(replacement), rlen << 1);\n let offset = rlen;\n for (let i: usize = 0; i < len; ++i) {\n store(\n changetype(out) + (offset++ << 1),\n load(changetype(this) + (i << 1))\n );\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n }\n return changetype(out);\n }\n var prev: isize = 0, next: isize = 0;\n if (slen == rlen) {\n // Fast path when search and replacement have same length\n let size = len << 1;\n let out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n while (~(next = this.indexOf(search, prev))) {\n memory.copy(out + (next << 1), changetype(replacement), rlen << 1);\n prev = next + slen;\n }\n return changetype(out);\n }\n var out: usize = 0, offset: usize = 0, resLen = len;\n while (~(next = this.indexOf(search, prev))) {\n if (!out) out = __alloc(len << 1, idof());\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let chunk = next - prev;\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n chunk << 1\n );\n offset += chunk;\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n prev = next + slen;\n }\n if (offset) {\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let rest = len - prev;\n if (rest) {\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n rest << 1\n );\n }\n rest += offset;\n if (resLen > rest) out = __realloc(out, rest << 1);\n return changetype(out);\n }\n return this;\n }\n\n slice(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len = this.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end, len);\n len = end - start;\n if (len <= 0) return changetype("");\n var out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n return changetype(out); // retains\n }\n\n split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {\n if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n if (separator === null) return [this];\n var length: isize = this.length;\n var sepLen: isize = separator.length;\n if (limit < 0) limit = i32.MAX_VALUE;\n if (!sepLen) {\n if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n // split by chars\n length = min(length, limit);\n let result = __allocArray(length, alignof(), idof>());\n let resultStart = changetype(result).dataStart;\n for (let i: isize = 0; i < length; ++i) {\n let charStr = __alloc(2, idof());\n store(charStr, load(changetype(this) + (i << 1)));\n store(resultStart + (i << alignof()), charStr); // result[i] = charStr\n if (isManaged()) __retain(charStr);\n }\n return changetype>(result); // retains\n } else if (!length) {\n let result = __allocArray(1, alignof(), idof>());\n store(changetype(result).dataStart, changetype("")); // static ""\n return changetype>(result); // retains\n }\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n var end = 0, start = 0, i = 0;\n while (~(end = this.indexOf(separator, start))) {\n let len = end - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out));\n } else {\n result.push(changetype(""));\n }\n if (++i == limit) return changetype>(result); // retains\n start = end + sepLen;\n }\n if (!start) { // also means: loop above didn\'t do anything\n result.push(this);\n return changetype>(result); // retains\n }\n var len = length - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out)); // retains\n } else {\n result.push(changetype("")); // static ""\n }\n return changetype>(result); // retains\n // releases result\n }\n\n toString(): String {\n return this;\n }\n}\n\n// @ts-ignore: nolib\nexport type string = String;\n\nexport function parseInt(str: string, radix: i32 = 0): f64 {\n return strtol(str, radix);\n}\n\nexport function parseFloat(str: string): f64 {\n return strtod(str);\n}\n\n// Encoding helpers\nexport namespace String {\n\n export namespace UTF8 {\n\n export function byteLength(str: string, nullTerminated: bool = false): i32 {\n var strOff = changetype(str);\n var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var bufLen = nullTerminated ? 1 : 0;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n bufLen += 1; strOff += 2;\n } else if (c1 < 2048) {\n bufLen += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n if ((load(strOff, 2) & 0xFC00) == 0xDC00) {\n strOff += 4; bufLen += 4;\n continue;\n }\n }\n strOff += 2; bufLen += 3;\n }\n }\n return bufLen;\n }\n\n export function encode(str: string, nullTerminated: bool = false): ArrayBuffer {\n var strOff = changetype(str);\n var strEnd = changetype(str) + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(UTF8.byteLength(str, nullTerminated), idof());\n var bufOff = buf;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n store(bufOff, c1);\n bufOff += 1; strOff += 2;\n } else if (c1 < 2048) {\n store(bufOff, c1 >> 6 | 192);\n store(bufOff, c1 & 63 | 128, 1);\n bufOff += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n let c2 = load(strOff, 2);\n if ((c2 & 0xFC00) == 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n store(bufOff, c1 >> 18 | 240);\n store(bufOff, c1 >> 12 & 63 | 128, 1);\n store(bufOff, c1 >> 6 & 63 | 128, 2);\n store(bufOff, c1 & 63 | 128, 3);\n strOff += 4; bufOff += 4;\n continue;\n }\n }\n store(bufOff, c1 >> 12 | 224);\n store(bufOff, c1 >> 6 & 63 | 128, 1);\n store(bufOff, c1 & 63 | 128, 2);\n strOff += 2; bufOff += 3;\n }\n }\n if (nullTerminated) {\n assert(strOff <= strEnd);\n buf = __realloc(buf, bufOff - buf + 1);\n store(bufOff, 0);\n } else {\n assert(strOff == strEnd);\n }\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer, nullTerminated: bool = false): string {\n return decodeUnsafe(changetype(buf), buf.byteLength, nullTerminated);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated: bool = false): string {\n var bufOff = buf;\n var bufEnd = buf + len;\n assert(bufEnd >= bufOff); // guard wraparound\n var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte\n var strOff = str;\n while (bufOff < bufEnd) {\n let cp = load(bufOff++);\n if (cp < 128) {\n if (nullTerminated && !cp) break;\n store(strOff, cp);\n strOff += 2;\n } else if (cp > 191 && cp < 224) {\n if (bufEnd - bufOff < 1) break;\n store(strOff, (cp & 31) << 6 | load(bufOff++) & 63);\n strOff += 2;\n } else if (cp > 239 && cp < 365) {\n if (bufEnd - bufOff < 3) break;\n cp = (\n (cp & 7) << 18 |\n (load(bufOff) & 63) << 12 |\n (load(bufOff, 1) & 63) << 6 |\n load(bufOff, 2) & 63\n ) - 0x10000;\n bufOff += 3;\n store(strOff, 0xD800 + (cp >> 10));\n store(strOff, 0xDC00 + (cp & 1023), 2);\n strOff += 4;\n } else {\n if (bufEnd - bufOff < 2) break;\n store(strOff,\n (cp & 15) << 12 |\n (load(bufOff) & 63) << 6 |\n load(bufOff, 1) & 63\n );\n bufOff += 2; strOff += 2;\n }\n }\n return changetype(__realloc(str, strOff - str)); // retains\n }\n }\n\n export namespace UTF16 {\n\n export function byteLength(str: string): i32 {\n return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n }\n\n export function encode(str: string): ArrayBuffer {\n var size = changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(size, idof());\n memory.copy(buf, changetype(str), size);\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer): string {\n return decodeUnsafe(changetype(buf), buf.byteLength);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize): string {\n var str = __alloc(len &= ~1, idof());\n memory.copy(str, buf, len);\n return changetype(str); // retains\n }\n }\n}\n',symbol:'import { Map } from "./map";\n\n// @ts-ignore: decorator\n@lazy\nvar stringToId: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar idToString: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar nextId: usize = 12; // Symbol.unscopables + 1\n\n@unmanaged @sealed abstract class _Symbol {\n\n // TODO: all of the following default symbols are unused currently yet add to\n // binary size if #toString becomes compiled. Ultimately we\'ll most likely want\n // to remove the unsupported ones and only keep what\'s actually supported.\n\n // @ts-ignore: decorator\n @lazy\n static readonly hasInstance: symbol = changetype(1);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isConcatSpreadable: symbol = changetype(2);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isRegExp: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly iterator: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly match: symbol = changetype(4);\n\n // @ts-ignore: decorator\n @lazy\n static readonly replace: symbol = changetype(5);\n\n // @ts-ignore: decorator\n @lazy\n static readonly search: symbol = changetype(6);\n\n // @ts-ignore: decorator\n @lazy\n static readonly species: symbol = changetype(7);\n\n // @ts-ignore: decorator\n @lazy\n static readonly split: symbol = changetype(8);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toPrimitive: symbol = changetype(9);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toStringTag: symbol = changetype(10);\n\n // @ts-ignore: decorator\n @lazy\n static readonly unscopables: symbol = changetype(11);\n\n static for(key: string): symbol {\n if (!stringToId) { stringToId = new Map(); idToString = new Map(); }\n else if (stringToId.has(key)) return changetype(stringToId.get(key));\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n stringToId.set(key, id);\n idToString.set(id, key);\n return changetype(id);\n }\n\n static keyFor(sym: symbol): string | null {\n return idToString !== null && idToString.has(changetype(sym))\n ? idToString.get(changetype(sym))\n : null;\n }\n\n toString(): string {\n var id = changetype(this);\n var str = "";\n switch (id) {\n case 1: { str = "hasInstance"; break; }\n case 2: { str = "isConcatSpreadable"; break; }\n case 3: { str = "isRegExp"; break; }\n case 4: { str = "match"; break; }\n case 5: { str = "replace"; break; }\n case 6: { str = "search"; break; }\n case 7: { str = "species"; break; }\n case 8: { str = "split"; break; }\n case 9: { str = "toPrimitive"; break; }\n case 10: { str = "toStringTag"; break; }\n case 11: { str = "unscopables"; break; }\n default: {\n if (idToString !== null && idToString.has(id)) str = idToString.get(id);\n break;\n }\n }\n return "Symbol(" + str + ")";\n }\n}\n\nexport function Symbol(description: string | null = null): symbol {\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n return changetype(id);\n}\n\nexport type Symbol = _Symbol;\n\n// @ts-ignore: nolib\nexport type symbol = _Symbol;\n',table:'import { E_NOTIMPLEMENTED } from "./util/error";\n\nexport namespace table {\n\n export function copy(dst: u32, src: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function drop(elementIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n}\n',typedarray:'import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\nimport { idof } from "./builtins";\nimport { ArrayBufferView } from "./arraybuffer";\n\nexport class Int8Array extends ArrayBufferView {\n [key: number]: i8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): i8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: i8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8Array extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8ClampedArray extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return FILL(this, value, start, end);\n }\n\n sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray {\n return SORT(this, fn);\n }\n\n subarray(start: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray {\n return SUBARRAY(this, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int16Array extends ArrayBufferView {\n [key: number]: i16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint16Array extends ArrayBufferView {\n [key: number]: u16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int32Array extends ArrayBufferView {\n [key: number]: i32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint32Array extends ArrayBufferView {\n [key: number]: u32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int64Array extends ArrayBufferView {\n [key: number]: i64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint64Array extends ArrayBufferView {\n [key: number]: u64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float32Array extends ArrayBufferView {\n [key: number]: f32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float64Array extends ArrayBufferView {\n [key: number]: f64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILL(\n array: TArray,\n value: native,\n start: i32,\n end: i32\n): TArray {\n var dataStart = array.dataStart;\n var length = array.length;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (sizeof() == 1) {\n if (start < end) memory.fill(dataStart + start, value, (end - start));\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SORT(\n array: TArray,\n comparator: (a: T, b: T) => i32\n): TArray {\n var length = array.length;\n if (length <= 1) return array;\n var base = array.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b\n store(base, a); // arr[0] = a\n }\n return array;\n }\n SORT_IMPL(base, length, comparator);\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SUBARRAY(\n array: TArray,\n begin: i32,\n end: i32\n): TArray {\n var len = array.length;\n begin = begin < 0 ? max(len + begin, 0) : min(begin, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n end = max(end, begin);\n var out = changetype(__alloc(offsetof(), idof())); // retains\n out.data = array.data; // retains\n out.dataStart = array.dataStart + (begin << alignof());\n out.dataLength = (end - begin) << alignof();\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE_RIGHT(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = array.length - 1; i >= 0; i--) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction MAP(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => T,\n): TArray {\n var length = array.length;\n var dataStart = array.dataStart;\n var out = instantiate(length);\n var outDataStart = out.dataStart;\n for (let i = 0; i < length; i++) {\n store(\n outDataStart + (i << alignof()),\n fn(load(dataStart + (i << alignof())), i, array)\n );\n }\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FIND_INDEX(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): i32 {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return i;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INCLUDES(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): bool {\n return INDEX_OF(array, searchElement, fromIndex) >= 0;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0 || index >= length) return -1;\n if (index < 0) index = max(length + index, 0);\n var dataStart = array.dataStart;\n while (index < length) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n ++index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction LAST_INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0) return -1;\n if (index < 0) index = length + index; // no need to clamp\n else if (index >= length) index = length - 1;\n var dataStart = array.dataStart;\n while (index >= 0) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n --index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SOME(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return true;\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction EVERY(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) continue;\n return false;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FOREACH(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => void,\n): void {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n fn(load(dataStart + (i << alignof())), i, array);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REVERSE(array: TArray): TArray {\n var dataStart = array.dataStart;\n for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) {\n let frontPtr = dataStart + (front << alignof());\n let backPtr = dataStart + (back << alignof());\n let temp = load(frontPtr);\n store(frontPtr, load(backPtr));\n store(backPtr, temp);\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction WRAP(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): TArray {\n var bufferByteLength = buffer.byteLength;\n if (byteOffset >= bufferByteLength) {\n throw new RangeError(E_INDEXOUTOFRANGE);\n }\n var byteLength: i32;\n if (length < 0) {\n if (length == -1) {\n const mask = (1 << alignof() - 1);\n if (buffer.byteLength & mask) {\n throw new RangeError(E_INVALIDLENGTH);\n } else {\n byteLength = buffer.byteLength;\n }\n } else {\n throw new RangeError(E_INVALIDLENGTH);\n }\n } else {\n byteLength = length << alignof();\n }\n if (byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n var out = changetype(__alloc(offsetof(), idof()));\n out.data = buffer;\n out.dataLength = byteLength;\n out.dataStart = changetype(buffer) + byteOffset;\n return out;\n}\n',"util/error":'// Common error messages for use accross the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = "Index out of range";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = "Invalid length";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = "Array is empty";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = "Element type must be nullable if array is holey";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = "Not implemented";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = "Key does not exist";\n',"util/hash":"// @ts-ignore: decorator\n@inline\nexport function HASH(key: T): u32 {\n if (isString()) {\n return hashStr(changetype(key));\n } else if (isReference()) {\n if (sizeof() == 4) return hash32(changetype(key));\n if (sizeof() == 8) return hash64(changetype(key));\n } else if (isFloat()) {\n if (sizeof() == 4) return hash32(reinterpret(f32(key)));\n if (sizeof() == 8) return hash64(reinterpret(f64(key)));\n } else {\n if (sizeof() == 1) return hash8 (u32(key));\n if (sizeof() == 2) return hash16(u32(key));\n if (sizeof() == 4) return hash32(u32(key));\n if (sizeof() == 8) return hash64(u64(key));\n }\n return unreachable();\n}\n\n// FNV-1a 32-bit as a starting point, see: http://isthe.com/chongo/tech/comp/fnv/\n\n// @ts-ignore: decorator\n@inline\nconst FNV_OFFSET: u32 = 2166136261;\n\n// @ts-ignore: decorator\n@inline\nconst FNV_PRIME: u32 = 16777619;\n\nfunction hash8(key: u32): u32 {\n return (FNV_OFFSET ^ key) * FNV_PRIME;\n}\n\nfunction hash16(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 8 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash32(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash64(key: u64): u32 {\n var l = key;\n var h = (key >>> 32);\n var v = FNV_OFFSET;\n v = (v ^ ( l & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( l >> 24 )) * FNV_PRIME;\n v = (v ^ ( h & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( h >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hashStr(key: string): u32 {\n var v = FNV_OFFSET;\n if (key !== null) {\n for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) {\n v = (v ^ load(changetype(key) + i)) * FNV_PRIME;\n }\n }\n return v;\n}\n","util/memory":"export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n let w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 2: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 3: {\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c\n if (dest === src) return;\n if (ASC_SHRINK_LEVEL < 1) {\n if (src + n <= dest || dest + n <= src) {\n memcpy(dest, src, n);\n return;\n }\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, c);\n --n;\n }\n } else {\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n let k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n let c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n let c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c\n if (vl == vr) return 0;\n while (n != 0 && load(vl) == load(vr)) {\n n--; vl++; vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","util/number":'/// \n\nimport { idof } from "../builtins";\nimport { CharCode } from "./string";\nimport { ArrayBufferView } from "../arraybuffer";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline\nconst POWERS10: u32[] = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\n "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\n "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\n "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\n "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\n "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\n "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\n "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\n "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\n "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"\n*/\n// @ts-ignore: decorator\n@lazy @inline\nconst DIGITS: u32[] = [\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n];\n\n// @ts-ignore: decorator\n@lazy @inline\nconst EXP_POWERS: i16[] = [\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n];\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline\nconst FRC_POWERS: u64[] = [\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n];\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return select(1, 2, value < 10);\n } else {\n let m = select(4, 5, value < 10000);\n return select(3, m, value < 1000);\n }\n } else {\n if (value < 10000000) {\n return select(6, 7, value < 1000000);\n } else {\n let m = select(9, 10, value < 1000000000);\n return select(8, m, value < 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n let m = select(11, 12, value < 100000000000);\n return select(10, m, value < 10000000000);\n } else {\n let m = select(14, 15, value < 100000000000000);\n return select(13, m, value < 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return select(16, 17, value < 10000000000000000);\n } else {\n let m = select(19, 20, value < 10000000000000000000);\n return select(18, m, value < 1000000000000000000);\n }\n }\n}\n\nfunction utoa32_lut(buffer: usize, num: u32, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(lut + (d1 << alignof()));\n let digits2 = load(lut + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(lut + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(lut + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_lut(buffer: usize, num: u64, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(lut + (c1 << alignof()));\n let digits2 = load(lut + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(lut + (b1 << alignof()));\n digits2 = load(lut + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_lut(buffer, num, offset);\n}\n\nfunction utoa_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset -= 1;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_core(buffer: usize, num: u32, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa32_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa64_core(buffer: usize, num: u64, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa64_lut(buffer, num, offset);\n }\n}\n\nexport function utoa32(value: u32): String {\n if (!value) return "0";\n\n var decimals = decimalCount32(value);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n return changetype(out); // retains\n}\n\nexport function itoa32(value: i32): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var decimals = decimalCount32(value) + u32(sign);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n if (sign) store(out, CharCode.MINUS);\n return changetype(out); // retains\n}\n\nexport function utoa64(value: u64): String {\n if (!value) return "0";\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n return changetype(out); // retains\n}\n\nexport function itoa64(value: i64): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n if (sign) store(out, CharCode.MINUS);\n\n return changetype(out); // retains\n}\n\nexport function itoa(value: T): String {\n if (!isInteger()) ERROR("integer type expected");\n if (isSigned()) {\n if (sizeof() <= 4) {\n return itoa32(value);\n } else {\n return itoa64(value);\n }\n } else {\n if (sizeof() <= 4) {\n return utoa32(value);\n } else {\n return utoa64(value);\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = unchecked(FRC_POWERS[index]);\n _exp_pow = unchecked(EXP_POWERS[index]);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = ((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp != 0) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n var wp_w_exp = mp_exp;\n\n var p1 = (mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n var lut = changetype(POWERS10).dataStart;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(lut + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (1) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(lut + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n\n return len;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nexport function dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\nexport function dtoa(value: f64): String {\n if (value == 0) return "0.0";\n if (!isFinite(value)) {\n if (isNaN(value)) return "NaN";\n return select("-Infinity", "Infinity", value < 0);\n }\n var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof());\n var length = dtoa_core(buffer, value);\n if (length == MAX_DOUBLE_LENGTH) return changetype(buffer);\n var result = changetype(buffer).substring(0, length);\n __free(buffer);\n return result;\n}\n\nexport function itoa_stream(buffer: usize, offset: usize, value: T): u32 {\n buffer += (offset << 1);\n if (!value) {\n store(buffer, CharCode._0);\n return 1;\n }\n var decimals: u32 = 0;\n if (isSigned()) {\n let sign = i32(value < 0);\n if (sign) value = changetype(-value);\n if (sizeof() <= 4) {\n decimals = decimalCount32(value) + sign;\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32) + sign;\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value) + sign;\n utoa64_core(buffer, value, decimals);\n }\n }\n if (sign) store(buffer, CharCode.MINUS);\n } else {\n if (sizeof() <= 4) {\n decimals = decimalCount32(value);\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value);\n utoa64_core(buffer, value, decimals);\n }\n }\n }\n return decimals;\n}\n\nexport function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {\n buffer += (offset << 1);\n if (value == 0.0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = i32(value < 0);\n let len = 8 + sign;\n memory.copy(buffer, changetype(select("-Infinity", "Infinity", sign)), len << 1);\n return len;\n }\n }\n return dtoa_core(buffer, value);\n}\n',"util/sort":'import { compareImpl } from "./string";\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): (a: T, b: T) => i32 {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a: T, b: T): i32 => (i32(a) - i32(b));\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= (ia >> 31) >>> 1;\n ib ^= (ib >> 31) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= (ia >> 63) >>> 1;\n ib ^= (ib >> 63) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a: T, b: T): i32 => {\n if (a === b || a === null || b === null) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!alen && !blen) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n return compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen));\n };\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function SORT(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n if (isReference()) {\n // TODO replace this to faster stable sort (TimSort) when it implemented\n insertionSort(dataStart, length, comparator);\n } else {\n if (length < 256) {\n insertionSort(dataStart, length, comparator);\n } else {\n weakHeapSort(dataStart, length, comparator);\n }\n }\n}\n\nfunction insertionSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n for (let i = 0; i < length; i++) {\n let a: T = load(dataStart + (i << alignof())); // a = arr[i]\n let j = i - 1;\n while (j >= 0) {\n let b: T = load(dataStart + (j << alignof())); // b = arr[j]\n if (comparator(a, b) < 0) {\n store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b\n } else break;\n }\n store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a\n }\n}\n\nfunction weakHeapSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n const shift32 = alignof();\n\n var bitsetSize = (length + 31) >> 5 << shift32;\n var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below\n memory.fill(bitset, 0, bitsetSize);\n\n // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf\n\n for (let i = length - 1; i > 0; i--) {\n let j = i;\n while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1;\n\n let p = j >> 1;\n let a: T = load(dataStart + (p << alignof())); // a = arr[p]\n let b: T = load(dataStart + (i << alignof())); // b = arr[i]\n if (comparator(a, b) < 0) {\n store(\n bitset + (i >> 5 << shift32),\n load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31))\n );\n store(dataStart + (i << alignof()), a); // arr[i] = a\n store(dataStart + (p << alignof()), b); // arr[p] = b\n }\n }\n\n for (let i = length - 1; i >= 2; i--) {\n let a: T = load(dataStart); // a = arr[0]\n store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i]\n store(dataStart + (i << alignof()), a); // arr[i] = a\n\n let x = 1, y: i32;\n while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y;\n\n while (x > 0) {\n a = load(dataStart); // a = arr[0]\n let b: T = load(dataStart + (x << alignof())); // b = arr[x]\n\n if (comparator(a, b) < 0) {\n store(\n bitset + (x >> 5 << shift32),\n load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31))\n );\n store(dataStart + (x << alignof()), a); // arr[x] = a\n store(dataStart, b); // arr[0] = b\n }\n x >>= 1;\n }\n }\n\n __free(bitset);\n\n var t: T = load(dataStart, sizeof()); // t = arr[1]\n store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0]\n store(dataStart, t); // arr[0] = t\n}\n',"util/string":"export function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var result = 0;\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n while (len && !(result = load(ptr1) - load(ptr2))) {\n --len, ptr1 += 2, ptr2 += 2;\n }\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function isSpace(c: i32): bool {\n if (c <= 0xFF) {\n switch (c) {\n case 0x09: // \n case 0x0A: // \n case 0x0B: // \n case 0x0C: // \n case 0x0D: // \n case 0x20: // \n case 0xA0: return true; // \n }\n return false;\n }\n if (c >= 0x2000 && c <= 0x200A) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // determine sign\n // @ts-ignore: cast\n var sign: T = 1;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n // @ts-ignore: type\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2)) {\n case CharCode.B:\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.O:\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.X:\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n default: radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n while (len--) {\n code = load(ptr);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else break;\n if (code >= radix) break;\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\n// FIXME: naive implementation\nexport function strtod(str: string): f64 {\n var len: i32 = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n // determine sign\n var sign = 1.0;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1.0;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // calculate value\n var num = 0.0;\n while (len--) {\n code = load(ptr);\n if (code == CharCode.DOT) {\n ptr += 2;\n let fac = 0.1; // precision :(\n while (len--) {\n code = load(ptr);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) break;\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) break;\n num = num * 10 + code;\n ptr += 2;\n }\n return sign * num;\n}\n",vector:"/** Vector abstraction. */\n@sealed @unmanaged\nexport abstract class V128 {\n}\n"}):(()=>{const e=path.join(".","..","std","assembly"),n=__webpack_require__(!function(){var e=new Error("Cannot find module 'glob'");throw e.code="MODULE_NOT_FOUND",e}()).sync("**/!(*.d).ts",{cwd:e}),t={nearEntry:fs.readFileSync(nearLibEntry,"utf8")};return n.forEach(n=>t[n.replace(/\.ts$/,"")]=fs.readFileSync(path.join(e,n),"utf8")),t})(),exports.definitionFiles=exports.isBundle?Object({assembly:'/**\n * Environment definitions for compiling AssemblyScript to WebAssembly using asc.\n * @module std/assembly\n *//***/\n\n/// \n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = boolean | number;\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n/** A 128-bit vector. */\ndeclare type v128 = object;\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n/** Whether the bulk memory feature is enabled. */\ndeclare const ASC_FEATURE_BULK_MEMORY: bool;\n/** Whether the SIMD feature is enabled. */\ndeclare const ASC_FEATURE_SIMD: bool;\n/** Whether the threads feature is enabled. */\ndeclare const ASC_FEATURE_THREADS: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, immOffset?: usize, immAlign?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const __heap_base: usize;\n/** Determines the byte size of the specified underlying core type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Determines the alignment (log2) of the specified underlying core type. Compiles to a constant. */\ndeclare function alignof(): usize;\n/** Determines the end offset of the given class type. Compiles to a constant. */\ndeclare function offsetof(): usize;\n/** Determines the offset of the specified field within the given class type. Compiles to a constant. */\ndeclare function offsetof(fieldName: keyof T | string): usize;\n/** Determines the offset of the specified field within the given class type. Returns the class type\'s end offset if field name has been omitted. Compiles to a constant. */\ndeclare function offsetof(fieldName?: string): usize;\n/** Determines the name of a given type. */\ndeclare function nameof(value?: T): string;\n/** Determines the unique runtime id of a class type. Compiles to a constant. */\ndeclare function idof(): u32;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Emits a `call_indirect` instruction, calling the specified function in the function table by index with the specified arguments. Does result in a runtime error if the arguments do not match the called function. */\ndeclare function call_indirect(target: Function | u32, ...args: any[]): T;\n/** Emits a `call` instruction, calling the specified function in the function table directly with the specified arguments. Function index must be a compile-time constant. */\ndeclare function call_direct(target: Function | u32, ...args: any[]): T;\n/** Instantiates a new instance of `T` using the specified constructor arguments. */\ndeclare function instantiate(...args: any[]): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */\ndeclare function isInteger(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */\ndeclare function isFloat(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a boolean type. */\ndeclare function isBoolean(value?: any): value is number;\n/** Tests if the specified type *or* expression can represent negative numbers. Compiles to a constant. */\ndeclare function isSigned(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a reference type. Compiles to a constant. */\ndeclare function isReference(value?: any): value is object | string;\n/** Tests if the specified type *or* expression can be used as a string. Compiles to a constant. */\ndeclare function isString(value?: any): value is string | String;\n/** Tests if the specified type *or* expression can be used as an array. Compiles to a constant. */\ndeclare function isArray(value?: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. Compiles to a constant. */\ndeclare function isArrayLike(value?: any): value is ArrayLike;\n/** Tests if the specified type *or* expression is of a function type. Compiles to a constant. */\ndeclare function isFunction(value?: any): value is (...args: any) => any;\n/** Tests if the specified type *or* expression is of a nullable reference type. Compiles to a constant. */\ndeclare function isNullable(value?: any): bool;\n/** Tests if the specified expression resolves to a defined element. Compiles to a constant. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. Compiles to a constant. */\ndeclare function isConstant(expression: any): bool;\n/** Tests if the specified type *or* expression is of a managed type. Compiles to a constant. */\ndeclare function isManaged(value?: any): bool;\n/** Tests if the specified type is void. Compiles to a constant. */\ndeclare function isVoid(): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n/** Returns the number of parameters in the given function signature type. */\ndeclare function lengthof any>(func?: T): i32;\n\n/** Atomic operations. */\ndeclare namespace atomic {\n /** Atomically loads an integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): T;\n /** Atomically stores an integer value to memory. */\n export function store(offset: usize, value: T, immOffset?: usize): void;\n /** Atomically adds an integer value in memory. */\n export function add(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically subtracts an integer value in memory. */\n export function sub(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise AND operation on an integer value in memory. */\n export function and(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise OR operation on an integer value in memory. */\n export function or(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise XOR operation on an integer value in memory. */\n export function xor(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically exchanges an integer value in memory. */\n export function xchg(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically compares and exchanges an integer value in memory if the condition is met. */\n export function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n /** Performs a wait operation on an address in memory suspending this agent if the integer condition is met. */\n export function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n /** Performs a notify operation on an address in memory waking up suspended agents. */\n export function notify(ptr: usize, count: i32): i32;\n}\n\n/** Describes the result of an atomic wait operation. */\ndeclare enum AtomicWaitResult {\n /** Woken by another agent. */\n OK,\n /** Loaded value did not match the expected value. */\n NOT_EQUAL,\n /** Not woken before the timeout expired. */\n TIMED_OUT\n}\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i8;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Loads an 8-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 32-bit integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 32-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 32-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i32;\n /** Atomically stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize): void;\n /** Performs a wait operation on a 32-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n /** Atomic 32-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 32-bit integer value in memory. */\n export function add(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts a 32-bit integer value in memory. */\n export function sub(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 32-bit integer value in memory. */\n export function and(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 32-bit integer value in memory. */\n export function or(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 32-bit integer value in memory. */\n export function xor(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 32-bit integer value in memory. */\n export function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 32-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: any): i64;\ndeclare namespace i64 {\n /** Smallest representable value. */\n export const MIN_VALUE: i64;\n /** Largest representable value. */\n export const MAX_VALUE: i64;\n /** Loads an 8-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 64-bit unsigned integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 64-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 64-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i64;\n /** Atomically stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize): void;\n /** Performs a wait operation on a 64-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n /** Atomic 64-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 32-bit values. */\n export namespace rmw32 {\n /** Atomically adds a 32-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 32-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 32-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 32-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 32-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 32-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 32-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 64-bit integer value in memory. */\n export function add(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 64-bit integer value in memory. */\n export function sub(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 64-bit integer value in memory. */\n export function and(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 64-bit integer value in memory. */\n export function or(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 64-bit integer value in memory. */\n export function xor(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 64-bit integer value in memory. */\n export function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 64-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare var isize: typeof i32 | typeof i64;\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): i8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): i8;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): i32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: any): i64;\ndeclare namespace u64 {\n /** Smallest representable value. */\n export const MIN_VALUE: u64;\n /** Largest representable value. */\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare var usize: typeof u32 | typeof u64;\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Loads a 32-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n /** Stores a 32-bit float to memory. */\n export function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Loads a 64-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n /** Stores a 64-bit float to memory. */\n export function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function v128(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace v128 {\n /** Creates a 128-bit vector with identical lanes. */\n export function splat(x: T): v128;\n /** Extracts one lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): T;\n /** Replaces one lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: T): v128;\n /** Selects lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n /** Loads a 128-bit vector from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n /** Stores a 128-bit vector to memory. */\n export function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n /** Adds each lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128; // except i64\n /** Divides each lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each lane of two 128-bit vectors using saturation. */\n export function add_saturate(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors using saturation. */\n export function sub_saturate(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise right shift on each lane of a 128-bit vector by a scalar. */\n export function shr(a: v128, b: i32): v128;\n /** Performs the bitwise AND operation on each lane of two 128-bit vectors. */\n export function and(a: v128, b: v128): v128;\n /** Performs the bitwise OR operation on each lane of two 128-bit vectors. */\n export function or(a: v128, b: v128): v128;\n /** Performs the bitwise XOR operation on each lane of two 128-bit vectors. */\n export function xor(a: v128, b: v128): v128;\n /** Performs the bitwise NOT operation on each lane of a 128-bit vector. */\n export function not(a: v128): v128;\n /** Selects bits of either 128-bit vector according to the specified mask. */\n export function bitselect(v1: v128, v2: v128, mask: v128): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes the minimum of each lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each lane of a 128-bit vector from integer to floating point. */\n export function convert(a: v128): v128;\n /** Truncates each lane of a 128-bit vector from floating point to integer with saturation. */\n export function trunc(a: v128): v128;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace i8x16 {\n /** Creates a vector with sixteen identical 8-bit integer lanes. */\n export function splat(x: i8): v128;\n /** Extracts one 8-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i8;\n /** Extracts one 8-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u8;\n /** Replaces one 8-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i8): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 8-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 8-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */\ndeclare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\ndeclare namespace i16x8 {\n /** Creates a vector with eight identical 16-bit integer lanes. */\n export function splat(x: i16): v128;\n /** Extracts one 16-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i16;\n /** Extracts one 16-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u16;\n /** Replaces one 16-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i16): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 16-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 16-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */\ndeclare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\ndeclare namespace i32x4 {\n /** Creates a 128-bit vector with four identical 32-bit integer lanes. */\n export function splat(x: i32): v128;\n /** Extracts one 32-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i32;\n /** Replaces one 32-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i32): v128;\n /** Adds each 32-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 32-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f32x4_sat(a: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f32x4_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */\ndeclare function i64x2(a: i64, b: i64): v128;\ndeclare namespace i64x2 {\n /** Creates a 128-bit vector with two identical 64-bit integer lanes. */\n export function splat(x: i64): v128;\n /** Extracts one 64-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i64;\n /** Replaces one 64-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i64): v128;\n /** Adds each 64-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 64-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Truncates each 64-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f64x2_sat(a: v128): v128;\n /** Truncates each 64-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f64x2_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */\ndeclare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\ndeclare namespace f32x4 {\n /** Creates a 128-bit vector with four identical 32-bit float lanes. */\n export function splat(x: f32): v128;\n /** Extracts one 32-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f32;\n /** Replaces one 32-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f32): v128;\n /** Adds each 32-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 32-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 32-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 32-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 32-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 32-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 32-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 32-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i32x4(a: v128): v128;\n /** Converts each 32-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i32x4(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */\ndeclare function f64x2(a: f64, b: f64): v128;\ndeclare namespace f64x2 {\n /** Creates a 128-bit vector with two identical 64-bit float lanes. */\n export function splat(x: f64): v128;\n /** Extracts one 64-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f64;\n /** Replaces one 64-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f64): v128;\n /** Adds each 64-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 64-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 64-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 64-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 64-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 64-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 64-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 64-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i64x2(a: v128): v128;\n /** Converts each 64-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i64x2(a: v128): v128;\n}\ndeclare namespace v8x16 {\n /** Selects 8-bit lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128;\n}\n/** Macro type evaluating to the underlying native WebAssembly type. */\ndeclare type native = T;\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type ReturnType any> = T extends (...args: any) => infer R ? R : any;\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type returnof any> = ReturnType;\n\n/** Pseudo-class representing the backing class of integer types. */\ndeclare class _Integer {\n /** Smallest representable value. */\n static readonly MIN_VALUE: number;\n /** Largest representable value. */\n static readonly MAX_VALUE: number;\n /** Converts a string to an integer of this type. */\n static parseInt(value: string, radix?: number): number;\n /** Converts this integer to a string. */\n toString(): string;\n}\n\n/** Pseudo-class representing the backing class of floating-point types. */\ndeclare class _Float {\n /** Difference between 1 and the smallest representable value greater than 1. */\n static readonly EPSILON: f32 | f64;\n /** Smallest representable value. */\n static readonly MIN_VALUE: f32 | f64;\n /** Largest representable value. */\n static readonly MAX_VALUE: f32 | f64;\n /** Smallest safely representable integer value. */\n static readonly MIN_SAFE_INTEGER: f32 | f64;\n /** Largest safely representable integer value. */\n static readonly MAX_SAFE_INTEGER: f32 | f64;\n /** Value representing positive infinity. */\n static readonly POSITIVE_INFINITY: f32 | f64;\n /** Value representing negative infinity. */\n static readonly NEGATIVE_INFINITY: f32 | f64;\n /** Value representing \'not a number\'. */\n static readonly NaN: f32 | f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n static isNaN(value: f32 | f64): bool;\n /** Returns true if passed value is finite. */\n static isFinite(value: f32 | f64): bool;\n /** Returns true if the value passed is a safe integer. */\n static isSafeInteger(value: f32 | f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n static isInteger(value: f32 | f64): bool;\n /** Converts a string to an integer. */\n static parseInt(value: string, radix?: i32): f32 | f64;\n /** Converts a string to a floating-point number. */\n static parseFloat(value: string): f32 | f64;\n /** Converts this floating-point number to a string. */\n toString(this: f64): string;\n}\n\n/** Backing class of signed 8-bit integers. */\ndeclare const I8: typeof _Integer;\n/** Backing class of signed 16-bit integers. */\ndeclare const I16: typeof _Integer;\n/** Backing class of signed 32-bit integers. */\ndeclare const I32: typeof _Integer;\n/** Backing class of signed 64-bit integers. */\ndeclare const I64: typeof _Integer;\n/** Backing class of signed size integers. */\ndeclare const Isize: typeof _Integer;\n/** Backing class of unsigned 8-bit integers. */\ndeclare const U8: typeof _Integer;\n/** Backing class of unsigned 16-bit integers. */\ndeclare const U16: typeof _Integer;\n/** Backing class of unsigned 32-bit integers. */\ndeclare const U32: typeof _Integer;\n/** Backing class of unsigned 64-bit integers. */\ndeclare const U64: typeof _Integer;\n/** Backing class of unsigned size integers. */\ndeclare const Usize: typeof _Integer;\n/** Backing class of 32-bit floating-point values. */\ndeclare const F32: typeof _Float;\n/** Backing class of 64-bit floating-point values. */\ndeclare const F64: typeof _Float;\n\n// User-defined diagnostic macros\n\n/** Emits a user-defined diagnostic error when encountered. */\ndeclare function ERROR(message?: any): void;\n/** Emits a user-defined diagnostic warning when encountered. */\ndeclare function WARNING(message?: any): void;\n/** Emits a user-defined diagnostic info when encountered. */\ndeclare function INFO(message?: any): void;\n\n// Polyfills\n\n/** Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Whether the memory managed interface is implemented. */\n export const implemented: bool;\n /** Returns the current memory size in units of pages. One page is 64kb. */\n export function size(): i32;\n /** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\n export function grow(value: i32): i32;\n /** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\n export function fill(dst: usize, value: u8, count: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n export function copy(dst: usize, src: usize, n: usize): void;\n /** Repeats `src` of length `srcLength` `count` times at `dst`. */\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void;\n /** Copies elements from a passive element segment to a table. */\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void;\n /** Prevents further use of a passive element segment. */\n export function drop(segmentIndex: u32): void;\n /** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\n export function compare(vl: usize, vr: usize, n: usize): i32;\n}\n\n/** Garbage collector operations. */\ndeclare namespace gc {\n /** Whether the garbage collector interface is implemented. */\n export const implemented: bool;\n /** Performs a full garbage collection cycle. */\n export function collect(): void;\n /** Retains a reference, making sure that it doesn\'t become collected. */\n export function retain(ref: usize): void;\n /** Releases a reference, allowing it to become collected. */\n export function release(ref: usize): void;\n}\n\n/** Table operations. */\ndeclare namespace table {\n /** Copies elements from a passive element segment to a table. */\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void;\n /** Prevents further use of a passive element segment. */\n export function drop(elementIndex: u32): void;\n /** Copies elements from one region of a table to another region. */\n export function copy(dest: u32, src: u32, n: u32): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer\'s bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform\'s endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getInt64()` method gets a signed 64-bit integer (long long) at the specified byte offset from the start of the `DataView`. */\n getInt64(byteOffset: i32, littleEndian?: boolean): i64;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `getUint64()` method gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the `DataView`. */\n getUint64(byteOffset: i32, littleEndian?: boolean): u64;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setInt64()` method stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the `DataView`. */\n setInt64(byteOffset: i32, value: i64, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** The `setUint64()` method stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the `DataView`. */\n setUint64(byteOffset: i32, value: u64, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ninterface ArrayLike {\n length: i32;\n // [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\n/* @internal */\ndeclare abstract class TypedArray implements ArrayBufferView {\n [key: number]: T;\n /** Number of bytes per element. */\n static readonly BYTES_PER_ELEMENT: usize;\n /** Wrap an ArrayBuffer */\n static wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray;\n /** Constructs a new typed array. */\n constructor(length: i32);\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n /** The length (in elements). */\n readonly length: i32;\n /** The includes() method determines whether a typed array includes a certain element, returning true or false as appropriate. */\n includes(searchElement: T, fromIndex?: i32): bool;\n /** The indexOf() method returns the first index at which a given element can be found in the typed array, or -1 if it is not present. */\n indexOf(searchElement: T, fromIndex?: i32): i32;\n /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */\n subarray(begin?: i32, end?: i32): this;\n /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */\n reduce(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */\n reduceRight(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/\n some(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/\n map(callbackfn: (value: T, index: i32, self: this) => T): this;\n /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */\n sort(callback?: (a: T, b: T) => i32): this;\n /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */\n fill(value: T, start?: i32, end?: i32): this;\n /** The findIndex() method returns an index in the typed array, if an element in the typed array satisfies the provided testing function. Otherwise -1 is returned. See also the find() [not implemented] method, which returns the value of a found element in the typed array instead of its index. */\n findIndex(callbackfn: (value: T, index: i32, self: this) => bool): i32;\n /** The every() method tests whether all elements in the typed array pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.every(). */\n every(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The forEach() method executes a provided function once per array element. This method has the same algorithm as Array.prototype.forEach().*/\n forEach(callbackfn: (value: T, index: i32, self: this) => void): void;\n /** The reverse() method reverses a typed array in place. The first typed array element becomes the last and the last becomes the first. This method has the same algorithm as Array.prototype.reverse(). */\n reverse(): this;\n}\n\n/** An array of twos-complement 8-bit signed integers. */\ndeclare class Int8Array extends TypedArray {}\n/** An array of 8-bit unsigned integers. */\ndeclare class Uint8Array extends TypedArray {}\n/** A clamped array of 8-bit unsigned integers. */\ndeclare class Uint8ClampedArray extends TypedArray {}\n/** An array of twos-complement 16-bit signed integers. */\ndeclare class Int16Array extends TypedArray {}\n/** An array of 16-bit unsigned integers. */\ndeclare class Uint16Array extends TypedArray {}\n/** An array of twos-complement 32-bit signed integers. */\ndeclare class Int32Array extends TypedArray {}\n/** An array of 32-bit unsigned integers. */\ndeclare class Uint32Array extends TypedArray {}\n/** An array of twos-complement 64-bit signed integers. */\ndeclare class Int64Array extends TypedArray {}\n/** An array of 64-bit unsigned integers. */\ndeclare class Uint64Array extends TypedArray {}\n/** An array of 32-bit floating point numbers. */\ndeclare class Float32Array extends TypedArray {}\n/** An array of 64-bit floating point numbers. */\ndeclare class Float64Array extends TypedArray {}\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n\n /** Tests if a value is an array. */\n static isArray(value: any): value is Array;\n /** Creates a new array with at least the specified capacity and length zero. */\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\n/** Class representing a fixed sequence of values of type `T`. */\ndeclare class FixedArray {\n [key: number]: T;\n readonly length: i32;\n constructor(capacity?: i32);\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(start: i32, end?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n repeat(count?: i32): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\ndeclare namespace String {\n /** Encoding helpers for UTF-8. */\n export namespace UTF8 {\n /** Calculates the byte length of the specified string when encoded as UTF-8, optionally null terminated. */\n export function byteLength(str: string, nullTerminated?: bool): i32;\n /** Encodes the specified string to UTF-8 bytes, optionally null terminated. */\n export function encode(str: string, nullTerminated?: bool): ArrayBuffer;\n /** Decodes the specified buffer from UTF-8 bytes to a string, optionally null terminated. */\n export function decode(buf: ArrayBuffer, nullTerminated?: bool): string;\n /** Decodes raw UTF-8 bytes to a string, optionally null terminated. */\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated?: bool): string;\n }\n /** Encoding helpers for UTF-16. */\n export namespace UTF16 {\n /** Calculates the byte length of the specified string when encoded as UTF-16. */\n export function byteLength(str: string): i32;\n /** Encodes the specified string to UTF-16 bytes. */\n export function encode(str: string): ArrayBuffer;\n /** Decodes the specified buffer from UTF-16 bytes to a string. */\n export function decode(buf: ArrayBuffer): string;\n /** Decodes raw UTF-16 bytes to a string. */\n export function decodeUnsafe(buf: usize, len: usize): string;\n }\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ninterface Boolean {\n toString(): string;\n}\ninterface Function {}\ninterface IArguments {}\ninterface Number {\n toString(radix?: number): string;\n}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Map {\n readonly size: i32;\n has(key: K): bool;\n set(key: K, value: V): void;\n get(key: K): V;\n delete(key: K): bool;\n clear(): void;\n keys(): K[]; // preliminary\n values(): V[]; // preliminary\n toString(): string;\n}\n\ndeclare class Set {\n readonly size: i32;\n has(value: K): bool;\n add(value: K): void;\n delete(value: K): bool;\n clear(): void;\n values(): K[]; // preliminary\n toString(): string;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\n\ndeclare const Symbol: SymbolConstructor;\n\ninterface IMath {\n /** The base of natural logarithms, e, approximately 2.718. */\n readonly E: T;\n /** The natural logarithm of 2, approximately 0.693. */\n readonly LN2: T;\n /** The natural logarithm of 10, approximately 2.302. */\n readonly LN10: T;\n /** The base 2 logarithm of e, approximately 1.442. */\n readonly LOG2E: T;\n /** The base 10 logarithm of e, approximately 0.434. */\n readonly LOG10E: T;\n /** The ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n readonly PI: T;\n /** The square root of 1/2, approximately 0.707. */\n readonly SQRT1_2: T;\n /** The square root of 2, approximately 1.414. */\n readonly SQRT2: T;\n /** Returns the absolute value of `x`. */\n abs(x: T): T;\n /** Returns the arccosine (in radians) of `x`. */\n acos(x: T): T;\n /** Returns the hyperbolic arc-cosine of `x`. */\n acosh(x: T): T;\n /** Returns the arcsine (in radians) of `x`. */\n asin(x: T): T;\n /** Returns the hyperbolic arcsine of `x`. */\n asinh(x: T): T;\n /** Returns the arctangent (in radians) of `x`. */\n atan(x: T): T;\n /** Returns the arctangent of the quotient of its arguments. */\n atan2(y: T, x: T): T;\n /** Returns the hyperbolic arctangent of `x`. */\n atanh(x: T): T;\n /** Returns the cube root of `x`. */\n cbrt(x: T): T;\n /** Returns the smallest integer greater than or equal to `x`. */\n ceil(x: T): T;\n /** Returns the number of leading zero bits in the 32-bit binary representation of `x`. */\n clz32(x: T): T;\n /** Returns the cosine (in radians) of `x`. */\n cos(x: T): T;\n /** Returns the hyperbolic cosine of `x`. */\n cosh(x: T): T;\n /** Returns e to the power of `x`. */\n exp(x: T): T;\n /** Returns e to the power of `x`, minus 1. */\n expm1(x: T): T;\n /** Returns the largest integer less than or equal to `x`. */\n floor(x: T): T;\n /** Returns the nearest 32-bit single precision float representation of `x`. */\n fround(x: T): T;\n /** Returns the square root of the sum of squares of its arguments. */\n hypot(value1: T, value2: T): T; // TODO: rest\n /** Returns the result of the C-like 32-bit multiplication of `a` and `b`. */\n imul(a: T, b: T): T;\n /** Returns the natural logarithm (base e) of `x`. */\n log(x: T): T;\n /** Returns the base 10 logarithm of `x`. */\n log10(x: T): T;\n /** Returns the natural logarithm (base e) of 1 + `x`. */\n log1p(x: T): T;\n /** Returns the base 2 logarithm of `x`. */\n log2(x: T): T;\n /** Returns the largest-valued number of its arguments. */\n max(value1: T, value2: T): T; // TODO: rest\n /** Returns the lowest-valued number of its arguments. */\n min(value1: T, value2: T): T; // TODO: rest\n /** Returns `base` to the power of `exponent`. */\n pow(base: T, exponent: T): T;\n /** Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0. */\n random(): T;\n /** Returns the value of `x` rounded to the nearest integer. */\n round(x: T): T;\n /** Returns the sign of `x`, indicating whether the number is positive, negative or zero. */\n sign(x: T): T;\n /** Returns whether the sign bit of `x` is set. */\n signbit(x: T): bool;\n /** Returns the sine of `x`. */\n sin(x: T): T;\n /** Returns the hyperbolic sine of `x`. */\n sinh(x: T): T;\n /** Returns the square root of `x`. */\n sqrt(x: T): T;\n /** Returns the tangent of `x`. */\n tan(x: T): T;\n /** Returns the hyperbolic tangent of `x`. */\n tanh(x: T): T;\n /** Returns the integer part of `x` by removing any fractional digits. */\n trunc(x: T): T;\n}\n\ninterface INativeMath extends IMath {\n /** Contains sin value produced after Math/Mathf.sincos */\n sincos_sin: T;\n /** Contains cos value produced after Math/Mathf.sincos */\n sincos_cos: T;\n /** Seeds the random number generator. */\n seedRandom(value: i64): void;\n /** Returns the floating-point remainder of `x / y` (rounded towards zero). */\n mod(x: T, y: T): T;\n /** Returns the floating-point remainder of `x / y` (rounded to nearest). */\n rem(x: T, y: T): T;\n /** Returns sin and cos simultaneously for same angle. Results stored to `sincos_s32/64` and `sincos_c32/64` globals */\n sincos(x: T): void;\n}\n\n/** Double precision math imported from JavaScript. */\ndeclare const JSMath: IMath;\n/** Double precision math implemented natively. */\ndeclare const NativeMath: INativeMath;\n/** Single precision math implemented natively. */\ndeclare const NativeMathf: INativeMath;\n/** Alias of {@link NativeMath} or {@link JSMath} respectively. Defaults to `NativeMath`. */\ndeclare const Math: IMath;\n/** Alias of {@link NativeMathf} or {@link JSMath} respectively. Defaults to `NativeMathf`. */\ndeclare const Mathf: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): i64;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): i64;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: i64);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): i64;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: i64): i64;\n}\n\n/** Environmental tracing function for debugging purposes. */\ndeclare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: f64, a4?: f64): void;\n\n// Decorators\n\ninterface TypedPropertyDescriptor {\n configurable?: boolean;\n enumerable?: boolean;\n writable?: boolean;\n value?: T;\n get?(): T;\n set?(value: T): void;\n}\n\n/** Annotates a method as a binary operator overload for the specified `token`. */\ndeclare function operator(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n) => TypedPropertyDescriptor | void;\n\ndeclare namespace operator {\n /** Annotates a method as a binary operator overload for the specified `token`. */\n export function binary(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n ): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary prefix operator overload for the specified `token`. */\n export function prefix(token: "!" | "~" | "+" | "-" | "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary postfix operator overload for the specified `token`. */\n export function postfix(token: "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n}\n\n/** Annotates an element as a program global. */\ndeclare function global(...args: any[]): any;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n\n/** Annotates a class as being sealed / non-derivable. */\ndeclare function sealed(constructor: Function): void;\n\n/** Annotates a method, function or constant global as always inlined. */\ndeclare function inline(...args: any[]): any;\n\n/** Annotates a method, function or constant global as unsafe. */\ndeclare function unsafe(...args: any[]): any;\n\n/** Annotates an explicit external name of a function or global. */\ndeclare function external(...args: any[]): any;\n\n/** Annotates a global for lazy compilation. */\ndeclare function lazy(...args: any[]): any;\n\n/** Annotates a function as the explicit start function. */\ndeclare function start(...args: any[]): any;\n',portable:"/**\n * Environment definitions for compiling AssemblyScript to JavaScript using tsc.\n *\n * Note that semantic differences require additional explicit conversions for full compatibility.\n * For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n * result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n *\n * Note that i64's are not portable (JS numbers are IEEE754 doubles with a maximum safe integer\n * value of 2^53-1) and instead require a compatibility layer to work in JS as well, as for example\n * {@link glue/js/i64} respectively {@link glue/wasm/i64}.\n *\n * @module std/portable\n *//***/\n\n/// \n\n// Types\n\ndeclare type bool = boolean;\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified value is a valid integer. Can't distinguish an integer from an integral float. */\ndeclare function isInteger(value: any): value is number;\n/** Tests if the specified value is a valid float. Can't distinguish a float from an integer. */\ndeclare function isFloat(value: any): value is number;\n/** Tests if the specified value is of a nullable reference type. */\ndeclare function isNullable(value: any): bool;\n/** Tests if the specified value is of a reference type. */\ndeclare function isReference(value: any): value is object | string;\n/** Tests if the specified value is of a function type */\ndeclare function isFunction(value: any): value is Function;\n/** Tests if the specified value can be used as a string. */\ndeclare function isString(value: any): value is string | String;\n/** Tests if the specified value can be used as an array. */\ndeclare function isArray(value: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. */\ndeclare function isArrayLike(value: any): value is ArrayLike;\n/** Tests if the specified expression resolves to a defined element. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. */\ndeclare function isConstant(expression: any): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T | null, message?: string): T;\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i16;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: any): isize;\ndeclare namespace isize {\n /** Smallest representable value. */\n export const MIN_VALUE: isize;\n /** Largest representable value. */\n export const MAX_VALUE: isize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): isize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): u8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): u16;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): u32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: any): isize;\ndeclare namespace usize {\n /** Smallest representable value. */\n export const MIN_VALUE: usize;\n /** Largest representable value. */\n export const MAX_VALUE: usize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): usize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f32): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f32): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f64): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f64;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f64;\n}\n\n// Polyfills\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Allocates a chunk of memory of the specified size and returns a pointer to it. */\n function allocate(size: usize): usize;\n /** Disposes a chunk of memory by its pointer. */\n function free(ptr: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n function copy(dst: usize, src: usize, n: usize): void;\n /** Fills size bytes from from the specified destination by same value in memory. */\n function fill(dst: usize, value: u8, size: usize): void;\n /** Resets the allocator to its initial state, if supported. */\n function reset(): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer's bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform's endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ndeclare class Array {\n\n static isArray(value: any): value is Array;\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from?: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint8ClampedArray extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ninterface ArrayLike {\n length: i32;\n [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: i32;\n\n private constructor();\n\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n endsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(from: i32, to?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n repeat(count?: i32): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ndeclare class Set {\n constructor(entries?: T[]);\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n toString(): string;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n delete(key: K): bool;\n toString(): string;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\ndeclare const Symbol: SymbolConstructor;\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ninterface IMath {\n readonly E: f64;\n readonly LN2: f64;\n readonly LN10: f64;\n readonly LOG2E: f64;\n readonly LOG10E: f64;\n readonly PI: f64;\n readonly SQRT1_2: f64;\n readonly SQRT2: f64;\n\n sincos_sin: f64;\n sincos_cos: f64;\n\n abs(x: f64): f64;\n acos(x: f64): f64;\n acosh(x: f64): f64;\n asin(x: f64): f64;\n asinh(x: f64): f64;\n atan(x: f64): f64;\n atan2(y: f64, x: f64): f64;\n atanh(x: f64): f64;\n cbrt(x: f64): f64;\n ceil(x: f64): f64;\n clz32(x: f64): i32;\n cos(x: f64): f64;\n cosh(x: f64): f64;\n exp(x: f64): f64;\n expm1(x: f64): f64;\n floor(x: f64): f64;\n fround(x: f64): f32;\n hypot(value1: f64, value2: f64): f64; // TODO: see std/math\n imul(a: f64, b: f64): i32;\n log(x: f64): f64;\n log10(x: f64): f64;\n log1p(x: f64): f64;\n log2(x: f64): f64;\n max(value1: f64, value2: f64): f64; // TODO: see std/math\n min(value1: f64, value2: f64): f64; // TODO: see std/math\n pow(base: f64, exponent: f64): f64;\n random(): f64;\n round(x: f64): f64;\n sign(x: f64): f64;\n signbit(x: f64): bool;\n sin(x: f64): f64;\n sincos(x: f64): f64;\n sinh(x: f64): f64;\n sqrt(x: f64): f64;\n tan(x: f64): f64;\n tanh(x: f64): f64;\n trunc(x: f64): f64;\n}\n\ndeclare const Math: IMath;\ndeclare const Mathf: IMath;\ndeclare const JSMath: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): number;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): number;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: number);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): number;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: number): number;\n}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n"}):(()=>{const e=path.join(".","..","std");return{assembly:fs.readFileSync(path.join(e,"assembly","index.d.ts"),"utf8"),portable:fs.readFileSync(path.join(e,"portable","index.d.ts"),"utf8")}})(),exports.compileString=(e,n)=>{"string"==typeof e&&(e={"input.ts":e});const t=Object.create({stdout:createMemoryStream(),stderr:createMemoryStream()});var r=["--binaryFile","binary","--textFile","text"];return Object.keys(n||{}).forEach(e=>{var t=n[e];Array.isArray(t)?t.forEach(n=>r.push("--"+e,String(n))):r.push("--"+e,String(t))}),exports.main(r.concat(Object.keys(e)),{stdout:t.stdout,stderr:t.stderr,readFile:n=>e.hasOwnProperty(n)?e[n]:null,writeFile:(e,n)=>t[e]=n,listFiles:()=>[]}),t},exports.main=function(e,n,t){"function"==typeof n?(t=n,n={}):n||(n={});const r=n.stdout||process.stdout,i=n.stderr||process.stderr,a=n.readFile||O,o=n.writeFile||N,s=n.listFiles||R,u=n.stats||createStats();if(!r)throw Error("'options.stdout' must be specified");if(!i)throw Error("'options.stderr' must be specified");const l=optionsUtil.parse(e,exports.options),c=l.options;if(e=l.arguments,c.noColors?colorsUtil.stdout.supported=colorsUtil.stderr.supported=!1:(colorsUtil.stdout=colorsUtil.from(r),colorsUtil.stderr=colorsUtil.from(i)),l.unknown.length&&l.unknown.forEach(e=>{i.write(colorsUtil.stderr.yellow("WARN: ")+"Unknown option '"+e+"'"+EOL)}),l.trailing.length&&i.write(colorsUtil.stderr.yellow("WARN: ")+"Unsupported trailing arguments: "+l.trailing.join(" ")+EOL),t||(t=function(e){var n=0;return e&&(i.write(colorsUtil.stderr.red("ERROR: ")+e.stack.replace(/^ERROR: /i,"")+EOL),n=1),n}),c.version)return r.write("Version "+exports.version+(isDev?"-dev":"")+EOL),t(null);if(c.help||!e.length){var f=c.help?r:i,d=c.help?colorsUtil.stdout:colorsUtil.stderr;return f.write([d.white("SYNTAX")," "+d.cyan("asc")+" [entryFile ...] [options]","",d.white("EXAMPLES")," "+d.cyan("asc")+" hello.ts"," "+d.cyan("asc")+" hello.ts -b hello.wasm -t hello.wat"," "+d.cyan("asc")+" hello1.ts hello2.ts -b -O > hello.wasm","",d.white("OPTIONS")].concat(optionsUtil.help(exports.options,24,EOL)).join(EOL)+EOL),t(null)}if(!fs.readFileSync){if(a===O)throw Error("'options.readFile' must be specified");if(o===N)throw Error("'options.writeFile' must be specified");if(s===R)throw Error("'options.listFiles' must be specified")}const p=c.baseDir?path.resolve(c.baseDir):".",h=c.notNear?[]:[nearBindings];c.transform&&c.transform.forEach(e=>h.push(__webpack_require__(13)(path.isAbsolute(e=e.trim())?e:path.join(process.cwd(),e))));var g=null,x=new Map,v=new Map;Object.keys(exports.libraryFiles).forEach(e=>{e.indexOf("/")>=0||(u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(exports.libraryFiles[e],exports.libraryPrefix+e+".ts",!1,g)}))});const m=[];if(c.lib){let e=c.lib;"string"==typeof e&&(e=e.split(",")),Array.prototype.push.apply(m,e.map(e=>e.trim()));for(let e=0,n=m.length;e{g=assemblyscript.parseFile(o,exports.libraryPrefix+i,!1,g)})}}}function _(e,n){return e.split(SEP).map((e,t,r)=>{let i=r.slice(0,t+1).join(SEP)||SEP,a=path.relative(p,i);return path.join(a,n)}).filter(e=>s(e,p)).reverse()}function y(e){let n=c.path.map(n=>_(e,n));return _(e,"node_modules").concat(...n)}function b(){for(var e,n,r;null!=(e=g.nextFile());){if(dependee=v.get(assemblyscript.getDependee(g,e))||p,n=null,r=null,e.startsWith(exports.libraryPrefix)){const t=e.substring(exports.libraryPrefix.length),i=e.substring(exports.libraryPrefix.length)+"/index";if(exports.libraryFiles.hasOwnProperty(t))n=exports.libraryFiles[t],e=exports.libraryPrefix+t+".ts";else if(exports.libraryFiles.hasOwnProperty(i))n=exports.libraryFiles[i],e=exports.libraryPrefix+i+".ts";else for(let o=0,s=m.length;o{if(x.has(o))return x.get(o);let e=path.join(s,o,"package.json"),n=a(e,p);if(n){let r;try{r=JSON.parse(n)}catch(n){return t(Error("Parsing "+e+" failed"))}let i=r.ascMain;if(i&&"string"==typeof i){let e=i.replace(/(.*)\/index\.ts/,"$1");return x.set(o,e),e}}return"assembly"})(),l=e=>{e.startsWith(exports.libraryPrefix)&&(e=e.substring(exports.libraryPrefix.length));let n=e.substring(0,e.indexOf("/")),t=e.substring(e.indexOf("/")+1);return path.join(s,n,u,t)};c.traceResolution&&i.write(" in '"+l(e)+"'");const f=e,d=e+"/index";if(null!==(n=a(l(f)+".ts",p))?e=f+".ts":null!==(n=a(l(d)+".ts",p))&&(e=d+".ts"),null!==n){c.traceResolution&&i.write(EOL+" -> '"+l(e)+"'"+EOL),r=path.join(s,o);break}c.traceResolution&&i.write(EOL)}}if(null==n)return t(Error("Import file '"+e+".ts' not found."));v.set(e.replace(/\.ts$/,""),r),u.parseCount++,u.parseTime+=measure(()=>{assemblyscript.parseFile(n,e,!1,g)})}if(checkDiagnostics(g,i))return t(Error("Parse error"))}c.path=c.path||[];{let e=String(c.runtime),n="rt/index-"+e,r=exports.libraryFiles[n];if(null==r){if(null==(r=a((n=e)+".ts",p)))return t(Error("Runtime '"+e+"' not found."))}else n="~lib/"+n;u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(r,n,!0,g)})}for(let n=0,r=e.length;n{g=assemblyscript.parseFile(o,i,!0,g)})}{let e=b();if(e)return e}!function(e,...n){h.forEach(t=>{"function"==typeof t[e]&&t[e](...n)})}("afterParse",g,o,p);{let e=b();if(e)return e}const E=assemblyscript.finishParsing(g);if(c.listFiles)return i.write(E.sources.map(e=>e.normalizedPath).sort().join(EOL)+EOL),t(null);var T=0,A=0;c.optimize&&(T=exports.defaultOptimizeLevel,A=exports.defaultShrinkLevel),"number"==typeof c.optimizeLevel&&(T=c.optimizeLevel),"number"==typeof c.shrinkLevel&&(A=c.shrinkLevel),T=Math.min(Math.max(T,0),3),A=Math.min(Math.max(A,0),2);const S=assemblyscript.createOptions();if(assemblyscript.setTarget(S,0),assemblyscript.setNoAssert(S,c.noAssert),assemblyscript.setImportMemory(S,c.importMemory),assemblyscript.setSharedMemory(S,c.sharedMemory),assemblyscript.setImportTable(S,c.importTable),assemblyscript.setExplicitStart(S,c.explicitStart),assemblyscript.setMemoryBase(S,c.memoryBase>>>0),assemblyscript.setSourceMap(S,null!=c.sourceMap),assemblyscript.setOptimizeLevelHints(S,T,A),assemblyscript.setNoUnsafe(S,c.noUnsafe),assemblyscript.setGlobalAlias(S,"Math","NativeMath"),assemblyscript.setGlobalAlias(S,"Mathf","NativeMathf"),assemblyscript.setGlobalAlias(S,"abort","~lib/builtins/abort"),assemblyscript.setGlobalAlias(S,"trace","~lib/builtins/trace"),c.use){let e=c.use;for(let n=0,r=e.length;n{F=assemblyscript.compileProgram(E,S)})}catch(e){return t(e)}if(checkDiagnostics(g,i))return F&&F.dispose(),t(Error("Compile error"));if(c.validate&&(u.validateCount++,u.validateTime+=measure(()=>{if(!F.validate())return F.dispose(),t(Error("Validate error"))})),"clamp"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-clamp"])});else if("js"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-js"])});else if("allow"!==c.trapMode)return F.dispose(),t(Error("Unsupported trap mode"));(T>=3||A>=2)&&(T=4),F.setOptimizeLevel(T),F.setShrinkLevel(A),F.setDebugInfo(c.debug);var z=[];if(c.runPasses&&("string"==typeof c.runPasses&&(c.runPasses=c.runPasses.split(",")),c.runPasses.length&&c.runPasses.forEach(e=>{z.indexOf(e)<0&&z.push(e)})),(T>0||A>0)&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.optimize()})),z.length&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(z.map(e=>e.trim()))})),!c.noEmit){let e=!1,n=!1;if(null!=c.outFile&&(/\.was?t$/.test(c.outFile)&&null==c.textFile?c.textFile=c.outFile:/\.js$/.test(c.outFile)&&null==c.asmjsFile?c.asmjsFile=c.outFile:null==c.binaryFile&&(c.binaryFile=c.outFile)),null!=c.binaryFile){let r,s=null!=c.sourceMap?c.sourceMap.length?c.sourceMap:path.basename(c.binaryFile)+".map":null;if(u.emitCount++,u.emitTime+=measure(()=>{r=F.toBinary(s)}),c.binaryFile.length?o(c.binaryFile,r.output,p):(C(r.output),e=!0),n=!0,null!=r.sourceMap)if(c.binaryFile.length){let e=JSON.parse(r.sourceMap);e.sourceRoot=exports.sourceMapRoot,e.sources.forEach((n,r)=>{let i=null;if(n.startsWith(exports.libraryPrefix)){let e=n.substring(exports.libraryPrefix.length).replace(/\.ts$/,"");if(exports.libraryFiles.hasOwnProperty(e))i=exports.libraryFiles[e];else for(let e=0,t=m.length;e{t=F.toAsmjs()}),o(c.asmjsFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=F.toAsmjs()}),C(t),e=!0),n=!0}if(null!=c.idlFile){let t;c.idlFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),o(c.idlFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),C(t),e=!0),n=!0}if(null!=c.tsdFile){let t;c.tsdFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),o(c.tsdFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),C(t),e=!0),n=!0}if(null!=c.textFile||!n){let n;c.textFile&&c.textFile.length?(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),o(c.textFile,n,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),C(n))}}return F.dispose(),c.measure&&printStats(u,i),c.printrtti&&printRTTI(E,i),t(null);function O(e,n){let t=path.resolve(n,e);try{let e;return u.readCount++,u.readTime+=measure(()=>{e=fs.readFileSync(t,{encoding:"utf8"})}),e}catch(e){return null}}function N(e,n,t){try{return u.writeCount++,u.writeTime+=measure(()=>{mkdirp(path.join(t,path.dirname(e))),"string"==typeof n?fs.writeFileSync(path.join(t,e),n,{encoding:"utf8"}):fs.writeFileSync(path.join(t,e),n)}),!0}catch(e){return!1}}function R(e,n){var t;try{return u.readTime+=measure(()=>{t=fs.readdirSync(path.join(n,e)).filter(e=>/^(?!.*\.d\.ts$).*\.ts$/.test(e))}),t}catch(e){return null}}function C(e){C.used||(u.writeCount++,C.used=!0),u.writeTime+=measure(()=>{"string"==typeof e?r.write(e,{encoding:"utf8"}):r.write(e)})}},exports.checkDiagnostics=checkDiagnostics,exports.createStats=createStats,process.hrtime||(process.hrtime=__webpack_require__(14)),exports.measure=measure,exports.formatTime=formatTime,exports.printStats=printStats,exports.printRTTI=printRTTI;var allocBuffer=void 0!==global&&global.Buffer?global.Buffer.allocUnsafe||function(e){return new global.Buffer(e)}:function(e){return new Uint8Array(e)};function createMemoryStream(e){var n=[];return n.write=function(n){if(e&&e(n),"string"==typeof n){let e=allocBuffer(utf8.length(n));utf8.write(n,e,0),n=e}this.push(n)},n.reset=function(){n.length=0},n.toBuffer=function(){for(var e=0,n=0,t=this.length;n191&&r<224?a[o++]=(31&r)<<6|63&e[n++]:r>239&&r<365?(r=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[n++])<<6|63&e[n++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},r.write=function(e,n,t){for(var r,i,a=t,o=0;o>6|192,n[t++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,n[t++]=r>>18|240,n[t++]=r>>12&63|128,n[t++]=r>>6&63|128,n[t++]=63&r|128):(n[t++]=r>>12|224,n[t++]=r>>6&63|128,n[t++]=63&r|128);return t-a}},function(e,n,t){(function(e){var t=void 0!==e&&e||{},r=t.env&&"CI"in t.env;function i(e,t){var i=t||{};return i.supported=e&&!!e.isTTY||r,i.gray=e=>i.supported?n.GRAY+e+n.RESET:e,i.red=e=>i.supported?n.RED+e+n.RESET:e,i.green=e=>i.supported?n.GREEN+e+n.RESET:e,i.yellow=e=>i.supported?n.YELLOW+e+n.RESET:e,i.blue=e=>i.supported?n.BLUE+e+n.RESET:e,i.magenta=e=>i.supported?n.MAGENTA+e+n.RESET:e,i.cyan=e=>i.supported?n.CYAN+e+n.RESET:e,i.white=e=>i.supported?n.WHITE+e+n.RESET:e,i}n.stdout=i(t.stdout,n),n.stderr=i(t.stderr),n.from=i,n.GRAY="",n.RED="",n.GREEN="",n.YELLOW="",n.BLUE="",n.MAGENTA="",n.CYAN="",n.WHITE="",n.RESET=""}).call(this,t(0))},function(e,n){n.parse=function(e,n){var t={},r=[],arguments=[],i=[],a={};Object.keys(n).forEach(e=>{if(!e.startsWith(" ")){var r=n[e];null!=r.alias&&("string"==typeof r.alias?a[r.alias]=e:Array.isArray(r.alias)&&r.alias.forEach(n=>a[n]=e)),null!=r.default&&(t[e]=r.default)}});for(var o=0,s=(e=e.slice()).length;ot[e]=s.value[e])}else r.push(i)}for(;o{var o=e[n];if(null!=o.description){for(var s="";s.length{for(let n=0;n=0?u.substring(l+1):u,i.statements=new Array,i.range=new o.Range(i,0,t.length),i.text=t,i}return i(n,e),Object.defineProperty(n.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),n}(l);n.Source=$;var ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.decorators=null,n.flags=a.CommonFlags.NONE,n}return i(n,e),n.prototype.is=function(e){return(this.flags&e)==e},n.prototype.isAny=function(e){return 0!=(this.flags&e)},n.prototype.set=function(e){this.flags|=e},n}(J);n.DeclarationStatement=ee;var ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INDEXSIGNATUREDECLARATION,n}return i(n,e),n}(ee);n.IndexSignatureDeclaration=ne;var te=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i(n,e),n}(ee);n.VariableLikeDeclarationStatement=te;var re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BLOCK,n}return i(n,e),n}(J);n.BlockStatement=re;var ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BREAK,n}return i(n,e),n}(J);n.BreakStatement=ie;var ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CLASSDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n}(ee);n.ClassDeclaration=ae;var oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CONTINUE,n}return i(n,e),n}(J);n.ContinueStatement=oe;var se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.DO,n}return i(n,e),n}(J);n.DoStatement=se;var ue=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EMPTY,n}return i(n,e),n}(J);n.EmptyStatement=ue;var le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMDECLARATION,n}return i(n,e),n}(ee);n.EnumDeclaration=le;var ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMVALUEDECLARATION,n}return i(n,e),n}(te);n.EnumValueDeclaration=ce;var fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTIMPORT,n}return i(n,e),n}(l);n.ExportImportStatement=fe;var de=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTMEMBER,n}return i(n,e),n}(l);n.ExportMember=de;var pe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORT,n}return i(n,e),n}(J);n.ExportStatement=pe;var he=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTDEFAULT,n}return i(n,e),n}(J);n.ExportDefaultStatement=he;var ge=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPRESSION,n}return i(n,e),n}(J);n.ExpressionStatement=ge;var xe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FIELDDECLARATION,n.parameterIndex=-1,n}return i(n,e),n}(te);n.FieldDeclaration=xe;var ve=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FOR,n}return i(n,e),n}(J);n.ForStatement=ve,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(n.ArrowKind||(n.ArrowKind={}));var me=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FUNCTIONDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},n}(ee);n.FunctionDeclaration=me;var _e=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IF,n}return i(n,e),n}(J);n.IfStatement=_e;var ye=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORTDECLARATION,n}return i(n,e),n}(ee);n.ImportDeclaration=ye;var be=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORT,n}return i(n,e),n}(J);n.ImportStatement=be;var Ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INTERFACEDECLARATION,n}return i(n,e),n}(ae);n.InterfaceDeclaration=Ee;var Te=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.METHODDECLARATION,n}return i(n,e),n}(me);n.MethodDeclaration=Te;var Ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.NAMESPACEDECLARATION,n}return i(n,e),n}(ee);n.NamespaceDeclaration=Ae;var Se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.RETURN,n}return i(n,e),n}(J);n.ReturnStatement=Se;var Fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCHCASE,n}return i(n,e),n}(l);n.SwitchCase=Fe;var Ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCH,n}return i(n,e),n}(J);n.SwitchStatement=Ie;var ze=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.THROW,n}return i(n,e),n}(J);n.ThrowStatement=ze;var Oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TRY,n}return i(n,e),n}(J);n.TryStatement=Oe;var Ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TYPEDECLARATION,n}return i(n,e),n}(ee);n.TypeDeclaration=Ne;var Re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLEDECLARATION,n}return i(n,e),n}(te);n.VariableDeclaration=Re;var Ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLE,n}return i(n,e),n}(J);n.VariableStatement=Ce;var Le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VOID,n}return i(n,e),n}(J);n.VoidStatement=Le;var we=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.WHILE,n}return i(n,e),n}(J);function ke(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}n.WhileStatement=we,n.findDecorator=function(e,n){if(n)for(var t=0,r=n.length;t";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var d=function(){function e(e,n,t){this.debugInfoRef=0,this.source=e,this.start=n,this.end=t}return e.join=function(n,t){if(n.source!=t.source)throw new Error("source mismatch");return new e(n.source,n.startt.end?n.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,n=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&n++;return n},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,n=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++n;return n},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();n.Range=d;var p=function(e){function n(n,t){void 0===t&&(t=null);var r=e.call(this,t)||this;r.end=0,r.pos=0,r.token=-1,r.tokenPos=0,r.nextToken=-1,r.nextTokenPos=0,r.nextTokenOnNewLine=!1,r.onComment=null,r.source=n,r.pos=0,r.end=n.text.length,r.diagnostics=t||new Array;var i=r.end,a=n.text;if(r.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=r){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,r));break}var a=e.charCodeAt(this.pos);if(a==n){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=n){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},n.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var n=this.source.text,t=n.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!r&&47==i)break;if(l.isLineBreak(i)){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(n,this.pos)},n.prototype.readRegexpFlags=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=0;this.pos57)&&95!=r)break;t++}return!0},n.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)t=i64_add(i64_shl(t,r),i64_new(u-48));else if(u>=65&&u<=70)t=i64_add(i64_shl(t,r),i64_new(10+u-65));else if(u>=97&&u<=102)t=i64_add(i64_shl(t,r),i64_new(10+u-97));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readDecimalInteger=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=i64_new(0),i=i64_new(10),a=n;this.pos=48&&u<=57)r=i64_add(i64_mul(r,i),i64_new(u-48));else{if(95!=u)break;a==o&&this.error(a==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),a=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Digit_expected,this.range(n)):a==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),r},n.prototype.readOctalInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(3),i=n,a=this.end;this.pos=48&&u<=55)t=i64_add(i64_shl(t,r),i64_new(u-48));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}++this.pos}return this.pos==n?this.error(s.DiagnosticCode.Octal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readBinaryInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(1),i=n,a=this.end;this.pos=48&&i<=57)n=(n<<4)+i-48;else if(i>=65&&i<=70)n=(n<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";n=(n<<4)+i+-87}if(0==--e)break}return e?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(n)},n.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,n=this.readHexInteger(),t=i64_low(n),r=!1;assert(!i64_high(n)),t>1114111&&(this.error(s.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),r=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),r=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(s.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),r=!0),r?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},n.prototype.finish=function(){},n}(s.DiagnosticEmitter);n.Tokenizer=p;var h=function(){};n.State=h;var g=null},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(n.DiagnosticCode||(n.DiagnosticCode={})),n.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)});Object.defineProperty(n,"__esModule",{value:!0});var a=t(0),o=t(1),s=t(17),u=t(22),l=t(24);function c(e){return e.text.includes("@nearfile")||d(e)}function f(e){return s.ASTBuilder.build(e)}function d(e){return(e.kind==a.NodeKind.SOURCE?e:e.range.source).sourceKind==a.SourceKind.USER_ENTRY}function p(e){return e.kind==a.NodeKind.CLASSDECLARATION}function h(e){return e.kind==a.NodeKind.FIELDDECLARATION}var g=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},n.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],n.sb=[],n.exportedClasses=new Map,n.wrappedFuncs=new Set,n}return i(n,e),n.build=function(e,t){return(new n).build(t)},n.nearFiles=function(e){return e.program.sources.filter(c)},n.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(f(e.name))||this.exportedClasses.set(f(e.name),e)},n.prototype.visitFunctionDeclaration=function(n){!d(n)||this.wrappedFuncs.has(f(n.name))||!n.is(o.CommonFlags.EXPORT)||0==n.signature.parameters.length&&"void"===f(n.signature.returnType)?e.prototype.visitFunctionDeclaration.call(this,n):(this.generateWrapperFunction(n),n.flags=n.flags^o.CommonFlags.EXPORT,this.wrappedFuncs.add(f(n.name)))},n.prototype.generateWrapperFunction=function(e){var n=e.signature,t=n.parameters,r=n.returnType,i=f(r).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),a=f(r).includes("null"),o=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+o+"(): void {"),t.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==f(r)?this.sb.push(" let result: "+f(r)+" = "+o+"("):this.sb.push(" "+o+"("),t.length>0&&(this.sb[this.sb.length-1]+=t.map(function(e){return x(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==f(r)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+i+">() || isNullable<"+i+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+i+">(encoder, result"+(a?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+o+" as "+o+" }\n")},n.prototype.typeName=function(e){if(!p(e))return s.ASTBuilder.build(e);var n=f((e=e).name);return e.isGeneric&&(n+="<"+e.typeParameters.map(f).join(", ")+">"),n},n.prototype.getFields=function(e){var n=p(e)?e:this.exportedClasses.get(f(e));return null==n?[]:n.members.filter(function(e){return e.kind==a.NodeKind.FIELDDECLARATION}).map(function(e){return{name:f(e.name),type:e.type,isGeneric:v(n,e)}})},n.prototype.build=function(e){var n=this;this.sb=[l.preamble],this.visit(e);var t=e.statements.map(function(e){var t=s.ASTBuilder.build(e);if(p(e)){var r=e;if(t=t.slice(0,t.lastIndexOf("}")),r.members.filter(h).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var i=n.typeName(r);t+="\n static decode(json: Uint8Array): "+i+" {\n let value = instantiate<"+i+">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): "+i+' {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, "argument must be Uint8Array or Json Object");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): '+i+" {\n "+r.members.filter(h).map(function(e){var n=f(e.name);return x(e,"this."+n+' = obj.has("'+n+'") ? ')+": this."+n+";"}).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+r.members.filter(h).map(function(e){var n=f(e.type),t=f(e.name);return"encode<"+n+">(encoder, this."+t+', "'+t+'");'}).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return t});return this.sb.concat(t).join("\n")},n}(u.BaseVisitor);function x(e,n){return void 0===n&&(n=""),n+"decode<"+f(e.type)+', Obj>(obj, "'+f(e.name)+'")'}function v(e,n){return null!=e.typeParameters&&e.typeParameters.some(function(e){return f(e.name)==f(n.type)})}n.afterParse=function(e,n,t){g.nearFiles(e).forEach(function(r){var i=r.text.substr(0,r.text.indexOf("\n")).includes("out");e.donelog.delete(r.internalPath),e.seenlog.delete(r.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==r});var a=g.build(e,r);i&&n("out/"+r.normalizedPath,a,t),e.parseFile(a,(d(r)?"":"./")+r.normalizedPath,d(r))})}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(n.Feature||(n.Feature={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(n.Target||(n.Target={}))},function(e,n,t){"use strict";var r=this&&this.__decorate||function(e,n,t,r){var i,a=arguments.length,o=a<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,n,t,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(n,t,o):i(n,t))||o);return a>3&&o&&Object.defineProperty(n,t,o),o};Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(){}return r([()=>{}],e)}();n.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(n.TypeinfoFlags||(n.TypeinfoFlags={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i=t(5),a=t(2),o=t(5);function s(e){switch(e){case r.INFO:return"INFO";case r.WARNING:return"WARNING";case r.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case r.INFO:return n.COLOR_BLUE;case r.WARNING:return n.COLOR_YELLOW;case r.ERROR:return n.COLOR_RED;default:return assert(!1),""}}n.DiagnosticCode=o.DiagnosticCode,n.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(r=n.DiagnosticCategory||(n.DiagnosticCategory={})),n.diagnosticCategoryToString=s,n.COLOR_BLUE="",n.COLOR_YELLOW="",n.COLOR_RED="",n.COLOR_RESET="",n.diagnosticCategoryToColor=u;var l=function(){function e(e,n,t){this.range=null,this.relatedRange=null,this.code=e,this.category=n,this.message=t}return e.create=function(n,t,r,a,o){void 0===r&&(r=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(n);return null!=r&&(s=s.replace("{0}",r)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(n,t,s)},e.createInfo=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.INFO,t,i)},e.createWarning=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.WARNING,t,i)},e.createError=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function c(e,t){void 0===t&&(t=!1);for(var r=e.source.text,i=r.length,o=e.start,s=e.end;o>0&&!a.isLineBreak(r.charCodeAt(o-1));)o--;for(;s=0&&n<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(n))),i64_zero)},n.bitsetSet=function(e,n,t){return assert(n>=0&&n<64),t?i64_or(e,i64_shl(i64_one,i64_new(n))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(n))))}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(n.CharCode||(n.CharCode={})),n.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},n.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},n.isDecimalDigit=function(e){return e>=48&&e<=57},n.isOctalDigit=function(e){return e>=48&&e<=55},n.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,r);var n},n.isKeywordCharacter=function(e){return e>=97&&e<=122},n.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,i);var n};var r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,n){if(e>1),(r=n[t-=1&t])<=e&&e<=n[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0}),n.makeArray=function(e){if(void 0===e&&(e=null),e){for(var n=new Array(e.length),t=0,r=e.length;t0||r=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=n?e.substring(0,a):e.substring(0,a)+e.substring(t+3),r-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){r=(e=e.substring(t+4)).length;continue}}}t++}return r>0?e:"."}function o(e){var n=e.length;if(n<=1){if(0==n)return".";if(e.charCodeAt(0)==i)return e}for(;--n>0;)if(e.charCodeAt(n)==i)return e.substring(0,n);return"."}n.normalizePath=a,n.resolvePath=function(e,n){return e.startsWith("std/")?e:a(o(n)+r.PATH_DELIMITER+e)},n.dirname=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.indent=function(e,n){for(;n>=4;)e.push(" "),n-=4;n>=2&&(e.push(" "),n-=2),n&&e.push(" ")}},function(e,n,t){"use strict";function r(e,n){return e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24}function i(e,n,t){n[t]=e,n[t+1]=e>>>8,n[t+2]=e>>>16,n[t+3]=e>>>24}function a(e,n){var t=r(e,n),i=r(e,n+4);return i64_new(t,i)}Object.defineProperty(n,"__esModule",{value:!0}),n.readI8=function(e,n){return e[n]},n.writeI8=function(e,n,t){n[t]=e},n.readI16=function(e,n){return e[n]|e[n+1]<<8},n.writeI16=function(e,n,t){n[t]=e,n[t+1]=e>>>8},n.readI32=r,n.writeI32=i,n.readI64=a,n.writeI64=function(e,n,t){i(i64_low(e),n,t),i(i64_high(e),n,t+4)},n.readF32=function(e,n){return i32_as_f32(r(e,n))},n.writeF32=function(e,n,t){i(f32_as_i32(e),n,t)},n.readF64=function(e,n){return i64_as_f64(a(e,n))},n.writeF64=function(e,n,t){var r=f64_as_i64(e);i(i64_low(r),n,t),i(i64_high(r),n,t+4)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(0);t(18),t(19),t(20);var i=t(1),a=t(2),o=t(4),s=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(n){var t=new e;return t.visitNode(n),t.finish()},e.prototype.visitNode=function(e){switch(e.kind){case r.NodeKind.SOURCE:this.visitSource(e);break;case r.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case r.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case r.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case r.NodeKind.FALSE:case r.NodeKind.NULL:case r.NodeKind.SUPER:case r.NodeKind.THIS:case r.NodeKind.TRUE:case r.NodeKind.CONSTRUCTOR:case r.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case r.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case r.NodeKind.BINARY:this.visitBinaryExpression(e);break;case r.NodeKind.CALL:this.visitCallExpression(e);break;case r.NodeKind.CLASS:this.visitClassExpression(e);break;case r.NodeKind.COMMA:this.visitCommaExpression(e);break;case r.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case r.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case r.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case r.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case r.NodeKind.NEW:this.visitNewExpression(e);break;case r.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case r.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case r.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case r.NodeKind.BLOCK:this.visitBlockStatement(e);break;case r.NodeKind.BREAK:this.visitBreakStatement(e);break;case r.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case r.NodeKind.DO:this.visitDoStatement(e);break;case r.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case r.NodeKind.EXPORT:this.visitExportStatement(e);break;case r.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case r.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case r.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case r.NodeKind.FOR:this.visitForStatement(e);break;case r.NodeKind.IF:this.visitIfStatement(e);break;case r.NodeKind.IMPORT:this.visitImportStatement(e);break;case r.NodeKind.RETURN:this.visitReturnStatement(e);break;case r.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case r.NodeKind.THROW:this.visitThrowStatement(e);break;case r.NodeKind.TRY:this.visitTryStatement(e);break;case r.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case r.NodeKind.WHILE:this.visitWhileStatement(e);break;case r.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case r.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case r.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case r.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case r.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case r.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case r.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case r.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case r.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case r.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case r.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case r.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case r.NodeKind.DECORATOR:this.serializeDecorator(e);break;case r.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case r.NodeKind.PARAMETER:this.serializeParameter(e);break;case r.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var n=e.statements,t=0,r=n.length;t")}e.isNullable&&r.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var n=e.isNullable,t=this.sb;t.push(n?"((":"(");var r=e.explicitThisType;r&&(t.push("this: "),this.visitTypeNode(r));var i=e.parameters,a=i.length;if(a){r&&t.push(", "),this.serializeParameter(i[0]);for(var o=1;o "),this.visitTypeNode(s)):t.push(") => void"),n&&t.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var n=e.extendsType;n&&(this.sb.push(" extends "),this.visitTypeNode(n));var t=e.defaultType;t&&(this.sb.push("="),this.visitTypeNode(t))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var n=this.sb;n.push("[");var t=e.elementExpressions,r=t.length;if(r){t[0]&&this.visitNode(t[0]);for(var i=1;i"),this.visitNode(e.expression);break;case r.AssertionKind.AS:this.visitNode(e.expression),n.push(" as "),this.visitTypeNode(assert(e.toType));break;case r.AssertionKind.NONNULL:this.visitNode(e.expression),n.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var n=this.sb;this.visitNode(e.left),n.push(" "),n.push(o.operatorTokenToString(e.operator)),n.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var n=this.sb;this.visitNode(e.expression);var t=e.typeArguments;if(t){var r=t.length;if(r){n.push("<"),this.visitTypeNode(t[0]);for(var i=1;i(")}}else n.push("(");var a=e.arguments,o=a.length;if(o)for(this.visitNode(a[0]),i=1;ir&&t.push(e.substring(r,r=a+1)),t.push("\\0"),r=++a;break;case 8:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\b");break;case 9:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\t");break;case 10:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\n");break;case 11:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\v");break;case 12:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\f");break;case 13:a>r&&t.push(e.substring(r,a)),t.push("\\r"),r=++a;break;case 34:n?++a:(a>r&&t.push(e.substring(r,a)),t.push('\\"'),r=++a);break;case 39:n?(a>r&&t.push(e.substring(r,a)),t.push("\\'"),r=++a):++a;break;case 92:a>r&&t.push(e.substring(r,a)),t.push("\\\\"),r=++a;break;default:++a}a>r&&t.push(e.substring(r,a)),t.push(i)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var n=this.sb;n.push("/"),n.push(e.pattern),n.push("/"),n.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var n=this.sb;n.push("("),this.visitNode(e.expression),n.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var n=this.sb;this.visitNode(e.condition),n.push(" ? "),this.visitNode(e.ifThen),n.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(o.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(o.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var n=this.sb;if(n.length&&e.kind!=r.NodeKind.VARIABLE&&e.kind!=r.NodeKind.EXPRESSION){var t=n[n.length-1],i=t.length-1;i>=0&&(125==t.charCodeAt(i)||59==t.charCodeAt(i))?n.push("\n"):n.push(";\n")}else n.push(";\n")},e.prototype.visitBlockStatement=function(e){var n=this.sb,t=e.statements,r=t.length;if(r){n.push("{\n");for(var i=++this.indentLevel,o=0;o")}var c=e.extendsType;c&&(u.push(" extends "),this.visitTypeNode(c));var f=e.implementsTypes;if(f){var d=f.length;if(d)for(u.push(" implements "),this.visitTypeNode(f[0]),o=1;o")}}if(2==e.arrowKind){var u=t.parameters;assert(1==u.length),assert(!t.explicitThisType),this.serializeParameter(u[0])}else{n.push("(");var l=(u=t.parameters).length,c=t.explicitThisType;if(c&&(n.push("this: "),this.visitTypeNode(c)),l)for(c&&n.push(", "),this.serializeParameter(u[0]),s=1;s "),this.visitNode(f)):(assert(!r.isTypeOmitted(d)),n.push(" => "),this.visitTypeNode(d)):(r.isTypeOmitted(d)||e.isAny(i.CommonFlags.CONSTRUCTOR|i.CommonFlags.SET)?n.push(")"):(n.push("): "),this.visitTypeNode(d)),f&&(n.push(" "),this.visitNode(f)))},e.prototype.visitIfStatement=function(e){var n=this.sb;n.push("if ("),this.visitNode(e.condition),n.push(") ");var t=e.ifTrue;this.visitNode(t),t.kind!=r.NodeKind.BLOCK&&n.push(";\n");var i=e.ifFalse;i&&(t.kind==r.NodeKind.BLOCK?n.push(" else "):n.push("else "),this.visitNode(i))},e.prototype.visitImportDeclaration=function(e){var n=e.foreignName,t=e.name;this.visitIdentifierExpression(n),n.text!=t.text&&(this.sb.push(" as "),this.visitIdentifierExpression(t))},e.prototype.visitImportStatement=function(e){var n=this.sb;n.push("import ");var t=e.declarations,r=e.namespaceName;if(t){var i=t.length;if(i){n.push("{\n");var o=++this.indentLevel;a.indent(n,o),this.visitImportDeclaration(t[0]);for(var s=1;s")}var u=e.extendsType;u&&(o.push(" extends "),this.visitTypeNode(u)),o.push(" {\n");var l=++this.indentLevel,c=e.members;for(r=0,i=c.length;r")}}i.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var n=e.type,t=this.sb;e.flags&i.CommonFlags.DEFINITE_ASSIGNMENT&&t.push("!"),n&&(t.push(": "),this.visitTypeNode(n));var r=e.initializer;r&&(t.push(" = "),this.visitNode(r))},e.prototype.visitVariableStatement=function(e){var n=e.decorators;if(n)for(var t=0,r=n.length;t>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(n.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(n.i32=n.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(n.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(n.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(n.u32=n.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(n.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(n.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(n.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),n.clz=Math.clz32,n.ctz=function(e){var n=Math.clz32(e&-e);return e?31-n:n},n.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},n.rotl=function(e,n){return e<<(n&=31)|e>>>32-n},n.rotr=function(e,n){return e>>>(n&=31)|e<<32-n},n.abs=Math.abs,n.max=Math.max,n.min=Math.min,n.ceil=Math.ceil,n.floor=Math.floor,n.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},n.select=function(e,n,t){return t?e:n},n.sqrt=Math.sqrt,n.trunc=Math.trunc,n.copysign=function(e,n){return Math.abs(e)*Math.sign(n)},n.bswap=function(e){var n=e>>8&16711935,t=(16711935&e)<<8;return(n=(e=n|t)>>16&65535)|(65535&e)<<16},n.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",n.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",n.assert=function(e,n){if(e)return e;throw new a(n)},n.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,n){var t=this.split(e).join(n);return e.length||(t=n+t+n),t}}),n.isInteger=Number.isInteger,n.isFloat=function(e){return"number"==typeof e},n.isNullable=function(e){return!0},n.isReference=function(e){return"object"==typeof e||"string"==typeof e},n.isFunction=function(e){return"function"==typeof e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isArray=Array.isArray,n.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var n=new Array(e);return n.length=0,n},n.isDefined=function(e){return void 0!==e},n.isConstant=function(e){return!1},n.unchecked=function(e){return e},n.fmod=function(e,n){return e%n},n.fmodf=function(e,n){return Math.fround(e%n)},n.JSMath=Math;try{Object.defineProperties(n.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(r[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}n.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:n.__memory_allocate||function(n){if(!(n>>>=0))return 0;if(t+n>e.length){var r=e;(e=new Uint8Array(Math.max(65536,e.length+n,2*e.length))).set(r)}var i=t;return 7&(t+=n)&&(t=1+(7|t)),i},fill:n.__memory_fill||function(n,t,r){e.fill(t,n,n+r)},free:n.__memory_free||function(e){},copy:n.__memory_copy||function(n,t,r){e.copyWithin(n,t,t+r)},reset:n.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),n.store=n.__store||function(e,n,t){HEAP[(0|e)+(0|t)]=n},n.load=n.__load||function(e,n){return HEAP[(0|e)+(0|n)]},n.unmanaged=function(){}}).call(this,t(3))},function(e,n,t){(function(e){const n=new Float64Array(1),t=new Float32Array(n.buffer),r=new Int32Array(n.buffer);e.f32_as_i32=function(e){return t[0]=e,r[0]},e.i32_as_f32=function(e){return r[0]=e,t[0]},e.f64_as_i64=function(e){return n[0]=e,i64_new(r[0],r[1])},e.i64_as_f64=function(e){return r[0]=i64_low(e),r[1]=i64_high(e),n[0]}}).call(this,t(3))},function(e,n,t){(function(e){const n=e.Long||t(21);e.i64_zero=n.ZERO,e.i64_one=n.ONE,e.i64_new=function(e,t){return n.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,n){return e.add(n)},e.i64_sub=function(e,n){return e.sub(n)},e.i64_mul=function(e,n){return e.mul(n)},e.i64_div=function(e,n){return e.div(n)},e.i64_div_u=function(e,n){return e.toUnsigned().div(n.toUnsigned()).toSigned()},e.i64_rem=function(e,n){return e.mod(n)},e.i64_rem_u=function(e,n){return e.toUnsigned().mod(n.toUnsigned()).toSigned()},e.i64_and=function(e,n){return e.and(n)},e.i64_or=function(e,n){return e.or(n)},e.i64_xor=function(e,n){return e.xor(n)},e.i64_shl=function(e,n){return e.shl(n)},e.i64_shr=function(e,n){return e.shr(n)},e.i64_shr_u=function(e,n){return e.shru(n)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,n){return e.eq(n)},e.i64_ne=function(e,n){return e.ne(n)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var r=n.fromInt(t-1);return e.add(r).and(r.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const r=n.fromNumber(f32.MIN_SAFE_INTEGER),i=n.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(r)&&e.lte(i)};const a=n.fromNumber(f64.MIN_SAFE_INTEGER),o=n.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(n){return e.Math.fround(n.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,n){return(n?e.toUnsigned():e).toString(10)}}).call(this,t(3))},function(e,n){e.exports=r;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function r(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0}),r.isLong=i;var a={},o={};function s(e,n){var t,r,i;return n?(i=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(t=l(e,(0|e)<0?-1:0,!0),i&&(o[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function u(e,n){if(isNaN(e))return n?m:v;if(n){if(e<0)return m;if(e>=h)return T}else{if(e<=-g)return A;if(e+1>=g)return E}return e<0?u(-e,n).neg():l(e%p|0,e/p|0,n)}function l(e,n,t){return new r(e,n,t)}r.fromInt=s,r.fromNumber=u,r.fromBits=l;var c=Math.pow;function f(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return v;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return f(e.substring(1),n,t).neg();for(var i=u(c(t,8)),a=v,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return l+o;for(;l.length<6;)l="0"+l;o=""+l+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(A)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,n=31;n>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=d(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=d(e)),this.eq(e))return 0;var n=this.isNegative(),t=e.isNegative();return n&&!t?-1:!n&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(A)?A:this.not().add(_)},S.neg=S.negate,S.add=function(e){i(e)||(e=d(e));var n=this.high>>>16,t=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,u=e.low>>>16,c=0,f=0,p=0,h=0;return p+=(h+=a+(65535&e.low))>>>16,f+=(p+=r+u)>>>16,c+=(f+=t+s)>>>16,c+=n+o,l((p&=65535)<<16|(h&=65535),(c&=65535)<<16|(f&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=d(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return v;if(i(e)||(e=d(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return v;if(this.eq(A))return e.isOdd()?A:v;if(e.eq(A))return this.isOdd()?A:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(x)&&e.lt(x))return u(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,r=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,h=0,g=0,m=0,_=0;return m+=(_+=o*p)>>>16,g+=(m+=a*p)>>>16,m&=65535,g+=(m+=o*f)>>>16,h+=(g+=r*p)>>>16,g&=65535,h+=(g+=a*f)>>>16,g&=65535,h+=(g+=o*c)>>>16,h+=n*p+r*f+a*c+o*s,l((m&=65535)<<16|(_&=65535),(h&=65535)<<16|(g&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=d(e)),e.isZero())throw Error("division by zero");var n,r,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return m;if(e.gt(this.shru(1)))return y;a=m}else{if(this.eq(A))return e.eq(_)||e.eq(b)?A:e.eq(A)?_:(n=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?_:b:(r=this.sub(e.mul(n)),a=n.add(r.div(e)));if(e.eq(A))return this.unsigned?m:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=v}for(r=this;r.gte(e);){n=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),s=o<=48?1:c(2,o-48),f=u(n),p=f.mul(e);p.isNegative()||p.gt(r);)p=(f=u(n-=s,this.unsigned)).mul(e);f.isZero()&&(f=_),a=a.add(f),r=r.sub(p)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=d(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return l(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=d(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=d(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=d(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0==(e&=63))return this;var n=this.high;return e<32?l(this.low>>>e|n<<32-e,n>>>e,this.unsigned):l(32===e?n:n>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,n=this.low;return[255&n,n>>>8&255,n>>>16&255,n>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,n>>>24,n>>>16&255,n>>>8&255,255&n]},r.fromBytes=function(e,n,t){return t?r.fromBytesLE(e,n):r.fromBytesBE(e,n)},r.fromBytesLE=function(e,n){return new r(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},r.fromBytesBE=function(e,n){return new r(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}),a=this&&this.__values||function(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(n,"__esModule",{value:!0});var o=t(0),s=function(e){function n(n){var t=e.call(this,n)||this;return t.depth=0,t}return i(n,e),n.prototype._visit=function(e){switch(e.kind){case o.NodeKind.SOURCE:this.visitSource(e);break;case o.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case o.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case o.NodeKind.TYPENAME:this.visitTypeName(e);case o.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case o.NodeKind.FALSE:case o.NodeKind.NULL:case o.NodeKind.SUPER:case o.NodeKind.THIS:case o.NodeKind.TRUE:case o.NodeKind.CONSTRUCTOR:case o.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case o.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case o.NodeKind.BINARY:this.visitBinaryExpression(e);break;case o.NodeKind.CALL:this.visitCallExpression(e);break;case o.NodeKind.CLASS:this.visitClassExpression(e);break;case o.NodeKind.COMMA:this.visitCommaExpression(e);break;case o.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case o.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case o.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case o.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case o.NodeKind.NEW:this.visitNewExpression(e);break;case o.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case o.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case o.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case o.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case o.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case o.NodeKind.BLOCK:this.visitBlockStatement(e);break;case o.NodeKind.BREAK:this.visitBreakStatement(e);break;case o.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case o.NodeKind.DO:this.visitDoStatement(e);break;case o.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case o.NodeKind.EXPORT:this.visitExportStatement(e);break;case o.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case o.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case o.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case o.NodeKind.FOR:this.visitForStatement(e);break;case o.NodeKind.IF:this.visitIfStatement(e);break;case o.NodeKind.IMPORT:this.visitImportStatement(e);break;case o.NodeKind.RETURN:this.visitReturnStatement(e);break;case o.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case o.NodeKind.THROW:this.visitThrowStatement(e);break;case o.NodeKind.TRY:this.visitTryStatement(e);break;case o.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case o.NodeKind.WHILE:this.visitWhileStatement(e);break;case o.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case o.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case o.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case o.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case o.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case o.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case o.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case o.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case o.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case o.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case o.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case o.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case o.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case o.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case o.NodeKind.PARAMETER:this.visitParameter(e);break;case o.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},n.prototype.visitSource=function(e){var n,t;try{for(var r=a(e.statements),i=r.next();!i.done;i=r.next()){var o=i.value;this.depth++,this.visit(o),this.depth--}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}},n.prototype.visitTypeNode=function(e){},n.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},n.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},n.prototype.visitFunctionTypeNode=function(e){var n,t;try{for(var r=a(e.parameters),i=r.next();!i.done;i=r.next()){var o=i.value;this.visit(o)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}this.visit(e.returnType)},n.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},n.prototype.visitIdentifierExpression=function(e){},n.prototype.visitArrayLiteralExpression=function(e){var n=this;e.elementExpressions.map(function(e){e&&n.visit(e)})},n.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var n=0;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();n.DefaultWriter=a;var o=function(){function e(e){void 0===e&&(e=new a),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var n,t,a,o,s,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var l=r(e.entries()),c=l.next();!c.done;c=l.next()){var f=i(c.value,2),d=(f[0],f[1]);this.visit(d)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}else if(null!=(s=e)&&"function"==typeof s[Symbol.iterator])try{for(var p=r(e),h=p.next();!h.done;h=p.next())d=h.value,this.visit(d)}catch(e){a={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(a)throw a.error}}else this._visit(e)},e}();n.AbstractVisitor=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])},function(e,n){if(void 0===__WEBPACK_EXTERNAL_MODULE__11__){var t=new Error("Cannot find module 'assemblyscript'");throw t.code="MODULE_NOT_FOUND",t}e.exports=__WEBPACK_EXTERNAL_MODULE__11__},function(e){e.exports=JSON.parse('{"version":{"description":"Prints just the compiler\'s version and exits.","type":"b","alias":"v"},"help":{"description":"Prints this message and exits.","type":"b","alias":"h"},"optimize":{"description":["Optimizes the module. Also has the usual shorthands:",""," -O Uses defaults. Equivalent to -O3s"," -O0 Equivalent to --optimizeLevel 0"," -O1 Equivalent to --optimizeLevel 1"," -O2 Equivalent to --optimizeLevel 2"," -O3 Equivalent to --optimizeLevel 3"," -Oz Equivalent to -O but with --shrinkLevel 2"," -O3s Equivalent to -O3 with --shrinkLevel 1 etc.",""],"type":"b","alias":"O"},"optimizeLevel":{"description":"How much to focus on optimizing code. [0-3]","type":"i"},"shrinkLevel":{"description":"How much to focus on shrinking code size. [0-2, s=1, z=2]","type":"i"},"validate":{"description":"Validates the module using Binaryen. Exits if invalid.","type":"b","alias":"c","default":false},"baseDir":{"description":"Specifies the base directory of input and output files.","type":"s","default":"."},"outFile":{"description":"Specifies the output file. File extension indicates format.","type":"s","alias":"o"},"binaryFile":{"description":"Specifies the binary output file (.wasm).","type":"s","alias":"b"},"textFile":{"description":"Specifies the text output file (.wat).","type":"s","alias":"t"},"asmjsFile":{"description":"Specifies the asm.js output file (.js).","type":"s","alias":"a"},"idlFile":{"description":"Specifies the WebIDL output file (.webidl).","type":"s","alias":"i"},"tsdFile":{"description":"Specifies the TypeScript definition output file (.d.ts).","type":"s","alias":"d"},"sourceMap":{"description":["Enables source map generation. Optionally takes the URL","used to reference the source map from the binary file."],"type":"s"},"runtime":{"description":["Specifies the runtime variant to include in the program.",""," full Default runtime based on TLSF and reference counting."," half Same as \'full\', but not exported to the host."," stub Minimal stub implementation without free/GC support."," none Same as \'stub\', but not exported to the host.",""],"type":"s","default":"full"},"noUnsafe":{"description":["Disallows the use of unsafe features in user code.","Does not affect library files and external modules."],"type":"b","default":false},"debug":{"description":"Enables debug information in emitted binaries.","type":"b","default":false},"noAssert":{"description":"Replaces assertions with just their value without trapping.","type":"b","default":false},"noEmit":{"description":"Performs compilation as usual but does not emit code.","type":"b","default":false},"importMemory":{"description":"Imports the memory instance provided by the embedder.","type":"b","default":false},"sharedMemory":{"description":"Declare memory as shared by settings the max shared memory.","type":"i","default":0},"memoryBase":{"description":"Sets the start offset of compiler-generated static memory.","type":"i","default":0},"importTable":{"description":"Imports the function table instance provided by the embedder.","type":"b","default":false},"explicitStart":{"description":"Exports an explicit start function to be called manually.","type":"b","default":false},"lib":{"description":["Adds one or multiple paths to custom library components and","uses exports of all top-level files at this path as globals."],"type":"s"},"path":{"description":["Comma separated paths to look for dependencies.","Looks for folders with package.json that includes a \'ascMain\' field","or defaults to having an \'/assembly\' folder."],"type":"S"},"use":{"description":["Aliases a global object under another name, e.g., to switch","the default \'Math\' implementation used: --use Math=JSMath"],"type":"S","alias":"u"},"trapMode":{"description":["Sets the trap mode to use.",""," allow Allow trapping operations. This is the default."," clamp Replace trapping operations with clamping semantics."," js Replace trapping operations with JS semantics.",""],"type":"s","default":"allow"},"runPasses":{"description":["Specifies additional Binaryen passes to run after other","optimizations, if any. See: Binaryen/src/passes/pass.cpp"],"type":"s"},"enable":{"description":["Enables additional (experimental) WebAssembly features.",""," sign-extension Enables sign-extension operations"," mutable-global Enables mutable global imports and exports"," bulk-memory Enables bulk memory operations"," simd Enables SIMD types and operations."," threads Enables threading and atomic operations.",""],"type":"s"},"transform":{"description":"Specifies the path to a custom transform to \'require\'.","type":"S"},"traceResolution":{"description":"Enable tracing of package resolution.","type":"b","default":false},"listFiles":{"description":"List files to be compiled and exit.","type":"b","default":false},"measure":{"description":"Prints measuring information on I/O and compile times.","type":"b","default":false},"printrtti":{"description":"Prints the module\'s runtime type information to stderr.","type":"b","default":false},"noColors":{"description":"Disables terminal colors.","type":"b","default":false}," ...":{"description":"Specifies node.js options (CLI only). See: node --help"},"-Os":{"value":{"optimize":true,"shrinkLevel":1}},"-Oz":{"value":{"optimize":true,"shrinkLevel":2}},"-O0":{"value":{"optimizeLevel":0,"shrinkLevel":0}},"-O1":{"value":{"optimizeLevel":1,"shrinkLevel":0}},"-O2":{"value":{"optimizeLevel":2,"shrinkLevel":0}},"-O3":{"value":{"optimizeLevel":3,"shrinkLevel":0}},"-O0s":{"value":{"optimizeLevel":0,"shrinkLevel":1}},"-O1s":{"value":{"optimizeLevel":1,"shrinkLevel":1}},"-O2s":{"value":{"optimizeLevel":2,"shrinkLevel":1}},"-O3s":{"value":{"optimizeLevel":3,"shrinkLevel":1}},"-O0z":{"value":{"optimizeLevel":0,"shrinkLevel":2}},"-O1z":{"value":{"optimizeLevel":1,"shrinkLevel":2}},"-O2z":{"value":{"optimizeLevel":2,"shrinkLevel":2}},"-O3z":{"value":{"optimizeLevel":3,"shrinkLevel":2}},"notNear":{"description":"Prevent the instrumentation of the binding code for near","type":"b","default":false}}')},function(e,n){function t(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=13},function(e,n,t){(function(n,t){e.exports=n.hrtime||function(e){var n=.001*i.call(r),t=Math.floor(n),a=Math.floor(n%1*1e9);e&&(t-=e[0],(a-=e[1])<0&&(t--,a+=1e9));return[t,a]};var r=t.performance||{},i=r.now||r.mozNow||r.msNow||r.oNow||r.webkitNow||function(){return(new Date).getTime()}}).call(this,t(0),t(2))}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e.assemblyscript)}("undefined"!=typeof self?self:this,function(__WEBPACK_EXTERNAL_MODULE__11__){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=4)}([function(e,n,t){var r,i;n.nextTick=function(e){var n=Array.prototype.slice.call(arguments);n.shift(),setTimeout(function(){e.apply(null,n)},0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(1)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!=typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!=typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(0))},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n){},function(e,n,t){e.exports=t(5)},function(module,exports,__webpack_require__){(function(process,global){process.browser&&(process.cwd=function(){return"."});const fs=__webpack_require__(3),path=__webpack_require__(1),utf8=__webpack_require__(6),colorsUtil=__webpack_require__(7),optionsUtil=__webpack_require__(8),mkdirp=__webpack_require__(9),EOL="win32"===process.platform?"\r\n":"\n",SEP="win32"===process.platform?"\\":"/",nearBindings=__webpack_require__(10),nearLibEntry=path.join(".","..","bindings","assembly","nearEntry.ts");process.removeAllListeners&&process.removeAllListeners("uncaughtException");var assemblyscript,isDev=!1;function checkDiagnostics(e,n){for(var t,r=!1;null!=(t=assemblyscript.nextDiagnostic(e));)n&&n.write(assemblyscript.formatDiagnostic(t,n.isTTY,!0)+EOL+EOL),assemblyscript.isError(t)&&(r=!0);return r}function createStats(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function measure(e){const n=process.hrtime();e();const t=process.hrtime(n);return 1e9*t[0]+t[1]}function formatTime(e){return e?(e/1e6).toFixed(3)+" ms":"N/A"}function printStats(e,n){function t(e,n){return formatTime(e)}(n||process.stdout).write(["I/O Read : "+t(e.readTime,e.readCount),"I/O Write : "+t(e.writeTime,e.writeCount),"Parse : "+t(e.parseTime,e.parseCount),"Compile : "+t(e.compileTime,e.compileCount),"Emit : "+t(e.emitTime,e.emitCount),"Validate : "+t(e.validateTime,e.validateCount),"Optimize : "+t(e.optimizeTime,e.optimizeCount)].join(EOL)+EOL)}function printRTTI(e,n){n||(n=process.stderr),n.write("# Runtime type information (RTTI)\n"),n.write(assemblyscript.buildRTTI(e))}(()=>{try{assemblyscript=__webpack_require__(11)}catch(e){try{__webpack_require__(!function(){var e=new Error("Cannot find module 'ts-node'");throw e.code="MODULE_NOT_FOUND",e}()).register({project:path.join(".","..","src","tsconfig.json")}),__webpack_require__(!function(){var e=new Error("Cannot find module '../src/glue/js'");throw e.code="MODULE_NOT_FOUND",e}()),assemblyscript=__webpack_require__(!function(){var e=new Error("Cannot find module '../src'");throw e.code="MODULE_NOT_FOUND",e}()),isDev=!0}catch(e_ts){try{assemblyscript=eval("require('./assemblyscript')")}catch(e){throw e.stack=e_ts.stack+"\n---\n"+e.stack,e}}}})(),exports.isBundle=!0,exports.isDev=isDev,exports.version=exports.isBundle?"0.7.0":__webpack_require__(!function(){var e=new Error("Cannot find module '../package.json'");throw e.code="MODULE_NOT_FOUND",e}()).version,exports.options=__webpack_require__(12),exports.sourceMapRoot="assemblyscript:///",exports.libraryPrefix=assemblyscript.LIBRARY_PREFIX,exports.defaultOptimizeLevel=3,exports.defaultShrinkLevel=1,exports.libraryFiles=exports.isBundle?Object({nearEntry:'\nimport { storage, near, base64, base58 } from "near-runtime-ts";\n//@ts-ignore\nimport { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\nimport { u128 } from "bignum";\n// Runtime functions\n// tslint:disable: no-unsafe-any\n\ntype Usize = u64;\n//@ts-ignore\n@global\n@external("env", "read_register")\ndeclare function read_register(register_id: Usize, ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "register_len")\ndeclare function register_len(register_id: Usize): Usize;\n\n//@ts-ignore\n@global\n@external("env", "input")\ndeclare function input(register_id: Usize): void;\n//@ts-ignore\n@global\n@external("env", "value_return")\ndeclare function value_return(value_len: Usize, value_ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "panic")\ndeclare function panic(): void;\n\nabstract class Value {\n static String(str: string): Value {\n return new Str(str);\n }\n static Number(num: i64): Value {\n return new Num(num);\n }\n static Bool(b: bool): Value {\n return new Bools(b);\n }\n static Null(): Value {\n return new Null();\n }\n static Array(): Value {\n return new Arr();\n }\n static Object(): Value {\n return new Obj();\n }\n\n toString(): string {\n if (this instanceof Str) {\n return (this).toString();\n }\n if (this instanceof Num) {\n return (this).toString();\n }\n if (this instanceof Bools) {\n return (this).toString();\n }\n if (this instanceof Null) {\n return (this).toString();\n }\n if (this instanceof Arr) {\n return (this).toString();\n }\n if (this instanceof Obj) {\n return (this).toString();\n }\n return "Value";\n }\n}\n@global\nclass Str extends Value {\n constructor(public _str: string) {\n super();\n }\n\n toString(): string {\n return "\\"" + this._str + "\\"";\n }\n}\n@global\nclass Num extends Value {\n constructor(public _num: i64) {\n super();\n }\n\n toString(): string {\n return this._num.toString();\n }\n}\n@global\nclass Null extends Value {\n constructor() {\n super();\n }\n\n toString(): string {\n return "null";\n }\n}\n\n@global class Bools extends Value {\n constructor(public _bool: bool) {\n super();\n }\n\n toString(): string {\n return this._bool.toString();\n }\n}\n\n@global\nclass Arr extends Value {\n _arr: Array;\n constructor() {\n super();\n this._arr = new Array();\n }\n\n push(obj: Value): void {\n this._arr.push(obj);\n }\n\n toString(): string {\n return "[" + this._arr.map((val: Value,i: i32,_arr: Value[]): string => val.toString()).join(",") + "]";\n }\n}\n\n@global\nclass Obj extends Value {\n _obj: Map;\n keys: Array;\n\n constructor() {\n super();\n this._obj = new Map();\n this.keys = new Array();\n }\n\n set(key: string, value: Value): void {\n if (!this._obj.has(key)) {\n this.keys.push(key);\n }\n this._obj.set(key, value);\n }\n\n get(key: string): Value | null {\n if (!this._obj.has(key)) {\n return null;\n }\n return this._obj.get(key);\n }\n\n toString(): string {\n const objs: string[] = [];\n for (let i: i32 = 0; i < this.keys.length; i++) {\n objs.push("\\"" + this.keys[i] + "\\":" + this._obj.get(this.keys[i]).toString());\n }\n return "{" + objs.join(",") + "}";\n }\n\n has(key: string): bool {\n return this._obj.has(key);\n }\n}\n\nclass Handler extends ThrowingJSONHandler {\n stack: Value[];\n constructor() {\n super();\n this.stack = new Array();\n }\n\n reset(): void {\n while (this.stack.length > 0) {\n this.stack.pop();\n }\n }\n\n get peek(): Value {\n return this.stack[this.stack.length - 1];\n }\n\n setString(name: string, value: string): void {\n const obj: Value = Value.String(value);\n this.addValue(name, obj);\n }\n\n setBoolean(name: string, value: bool): void {\n const obj = Value.Bool(value);\n this.addValue(name, obj);\n }\n\n setNull(name: string): void {\n const obj = Value.Null();\n this.addValue(name, obj);\n }\n\n setInteger(name: string, value: i64): void {\n const obj = Value.Number(value);\n this.addValue(name, obj);\n }\n\n pushArray(name: string): bool {\n const obj: Value = Value.Array();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popArray(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n pushObject(name: string): bool {\n const obj: Value = Value.Object();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popObject(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n addValue(name: string, obj: Value): void {\n if (name.length == 0 && obj instanceof Obj && this.stack.length == 0) {\n this.stack.push(obj);\n return;\n }\n if (this.peek instanceof Obj) {\n (this.peek as Obj).set(name, obj);\n }\n else if (this.peek instanceof Arr) {\n (this.peek).push(obj);\n }\n }\n}\n\n@global()\nclass JSON {\n private static handler: Handler = new Handler();\n private static decoder: JSONDecoder = new JSONDecoder(JSON.handler);\n static parse(str: Uint8Array ): Obj {\n JSON.decoder.deserialize(str);\n const res = JSON.decoder.handler.peek as Obj;\n JSON.decoder.handler.reset();\n return res;\n }\n}\n\n//@ts-ignore\n@global\nfunction encode(value: T, name: string | null = "", encoder: JSONEncoder = new JSONEncoder()): Output {\n if (isBoolean()) {\n //@ts-ignore\n encoder.setBoolean(name, value);\n } else if (isInteger()) {\n if (value instanceof i64 || value instanceof u64) {\n //@ts-ignore\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n encoder.setInteger(name, value);\n }\n //@ts-ignore\n } else if (value == null) {\n encoder.setNull(name);\n } else if (isString()) {\n //@ts-ignore\n encoder.setString(name, value);\n } else if (isReference()) {\n if (isArrayLike(value)) {\n if (value instanceof Uint8Array) {\n //@ts-ignore\n encoder.setString(name, base64.encode( value));\n } else {\n encoder.pushArray(name);\n for (let i: i32 = 0; i < value.length; i++) {\n //@ts-ignore\n encode, JSONEncoder>(value[i], null, encoder);\n }\n encoder.popArray();\n }\n } else { // Is an object\n if (value instanceof u128) {\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n value._encode(name, encoder);\n }\n }\n } else {\n throw new Error("Encoding failed");\n }\n var output: Output;\n //@ts-ignore\n if (output instanceof Uint8Array) {\n //@ts-ignore\n return encoder.serialize();\n }\n //@ts-ignore\n assert( output instanceof JSONEncoder, "Bad return type for encoder");\n //@ts-ignore\n return encoder;\n}\n\n//@ts-ignore\n@inline\nfunction getStr(val: Value, name: String): string {\n assert(val instanceof Str, "Value with Key: " + name + " is not a string or null");\n return (val)._str;\n}\n\nfunction decodeArray(val: Value, name: string): Array {\n assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null.");\n const res = new Array();\n const arr = (val)._arr;\n for (let i: i32 = 0; i < arr.length; i++) {\n let item: T = decode(arr[i]);\n res.push(item);\n }\n return res;\n}\n\n//@ts-ignore\n@global\nfunction decode(buf: V, name: string = ""): T {\n const buffer = (buf instanceof Uint8Array ? JSON.parse(buf) : buf);\n var val: Value;\n if (buffer instanceof Obj && name != "") {\n const obj: Obj = buffer;\n let res = obj.get(name);\n if (res == null) {\n //@ts-ignore\n return null;\n }\n val = res;\n }else {\n val = buffer;\n }\n if (val instanceof Null) {\n assert(isReference() || isArrayLike() || isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable.");\n //@ts-ignore\n return null;\n }\n if (isString()) {\n //@ts-ignore\n return getStr(val, name);\n }\n if (isBoolean()) {\n assert(val instanceof Bools, "Value with Key: " + name + " with type " + nameof() + " is not a string");\n //@ts-ignore\n return (val)._bool;\n }\n var value: T;\n if (isInteger()) {\n //@ts-ignore\n if (value instanceof u64 || value instanceof i64) {\n assert(val instanceof Str, "Value with Key: " + name + " with type " + nameof() + " is an 64-bit integer and is expected to be encoded as a string");\n let str = (val)._str;\n //@ts-ignore\n return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str);\n }\n assert(val instanceof Num, "Value with Key: " + name + " with type " + nameof() + " is not an Integer");\n //@ts-ignore\n return (val)._num;\n }\n assert(isReference(), name + " with type " + nameof() + " must be an integer, boolean, string, object, or array");\n if (isArrayLike()) {\n //@ts-ignore\n if (value instanceof Uint8Array ) {\n //@ts-ignore\n return base64.decode(getStr(val, name));\n }\n //@ts-ignore\n // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array")\n //@ts-ignore only checking the instance\n return decodeArray>(val, name);\n }\n if (val instanceof Str) {\n //@ts-ignore\n if (value instanceof u128) {\n //@ts-ignore\n return u128.fromString(getStr(val, name));\n }\n }\n assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null");\n value = instantiate();\n //@ts-ignore\n return value.decode(val);\n}\n',array:'/// \n\nimport { BLOCK_MAXSIZE } from "./rt/common";\nimport { COMPARATOR, SORT } from "./util/sort";\nimport { ArrayBuffer, ArrayBufferView } from "./arraybuffer";\nimport { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";\nimport { idof, isArray as builtin_isArray } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error";\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureSize(array: usize, minSize: usize, alignLog2: u32): void {\n var oldCapacity = changetype(array).dataLength;\n if (minSize > oldCapacity >>> alignLog2) {\n if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).data);\n let newCapacity = minSize << alignLog2;\n let newData = __realloc(oldData, newCapacity);\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n if (newData !== oldData) { // oldData has been free\'d\n store(changetype(array), __retain(newData), offsetof("data"));\n changetype(array).dataStart = newData;\n }\n changetype(array).dataLength = newCapacity;\n }\n}\n\nexport class Array extends ArrayBufferView {\n [key: number]: T;\n\n // Implementing ArrayBufferView isn\'t strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).\n\n // Also note that Array with non-nullable T must guard against implicit null values whenever\n // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn\'t be\n // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return builtin_isArray(value) && value !== null;\n }\n\n static create(capacity: i32 = 0): Array {\n if (capacity > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n var array = changetype>(__allocArray(capacity, alignof(), idof())); // retains\n changetype>(array).length_ = 0; // safe even if T is a non-nullable reference\n memory.fill(array.dataStart, 0, array.dataLength);\n return array;\n }\n\n constructor(length: i32 = 0) {\n super(length, alignof());\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n this.length_ = length;\n }\n\n @unsafe get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n var oldLength = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (newLength > oldLength) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) { // release no longer used refs\n if (oldLength > newLength) {\n let dataStart = this.dataStart;\n do __release(load(dataStart + (--oldLength << alignof())));\n while (oldLength > newLength);\n // no need to zero memory on shrink -> is zeroed on grow\n }\n }\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (!fn(load(this.dataStart + (index << alignof())), index, this)) return false;\n }\n return true;\n }\n\n findIndex(predicate: (value: T, index: i32, array: Array) => bool): i32 {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (predicate(load(this.dataStart + (index << alignof())), index, this)) return index;\n }\n return -1;\n }\n\n @operator("[]") private __get(index: i32): T {\n if (isReference()) {\n if (!isNullable()) {\n if (index >= this.length_) throw new Error(E_HOLEYARRAY);\n }\n }\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n var length = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (index > length) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), index + 1, alignof());\n this.__unchecked_set(index, value);\n if (index >= length) this.length_ = index + 1;\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = this.dataStart + (index << alignof());\n let oldRef: usize = load(offset);\n if (changetype(value) != oldRef) {\n store(offset, __retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n store(this.dataStart + (index << alignof()), value);\n }\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (isManaged()) {\n for (; start < end; ++start) {\n let oldRef: usize = load(dataStart + (start << alignof()));\n if (changetype(value) != oldRef) {\n store(dataStart + (start << alignof()), __retain(changetype(value)));\n __release(oldRef);\n }\n }\n } else if (sizeof() == 1) {\n if (start < end) {\n memory.fill(\n dataStart + start,\n u8(value),\n (end - start)\n );\n }\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n return this.indexOf(value, fromIndex) >= 0;\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var length = this.length_;\n if (length == 0 || fromIndex >= length) return -1;\n if (fromIndex < 0) fromIndex = max(length + fromIndex, 0);\n var dataStart = this.dataStart;\n while (fromIndex < length) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var length = this.length_;\n if (length == 0) return -1;\n if (fromIndex < 0) fromIndex = length + fromIndex;\n else if (fromIndex >= length) fromIndex = length - 1;\n var dataStart = this.dataStart;\n while (fromIndex >= 0) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var length = this.length_;\n var newLength = length + 1;\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) {\n store(this.dataStart + (length << alignof()), __retain(changetype(value)));\n } else {\n store(this.dataStart + (length << alignof()), value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = select(0, other.length_, other === null);\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, __retain(ref));\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, __retain(ref));\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n if (isManaged()) {\n if (from < to && to < (from + count)) { // right to left\n from += count - 1;\n to += count - 1;\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n --from, --to, --count;\n }\n } else { // left to right\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n ++from, ++to, --count;\n }\n }\n } else {\n memory.copy( // is memmove\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n }\n return this;\n }\n\n pop(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var element = load(this.dataStart + ((--length) << alignof()));\n this.length_ = length;\n return element; // no need to retain -> is moved\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n fn(load(this.dataStart + (index << alignof())), index, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var length = this.length_;\n var out = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n for (let index = 0; index < min(length, this.length_); ++index) {\n let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains\n if (isManaged()) {\n store(outStart + (index << alignof()), __retain(changetype(result)));\n } else {\n store(outStart + (index << alignof()), result);\n }\n // releases result\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n let value = load(this.dataStart + (index << alignof()));\n if (fn(value, index, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = this.length_ - 1; index >= 0; --index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n shift(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = length - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n store(base + (lastIndex << alignof()),\n // @ts-ignore: cast\n null\n );\n this.length_ = lastIndex;\n return element; // no need to retain -> is moved\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (fn(load(this.dataStart + (index << alignof())), index, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var newLength = this.length_ + 1;\n ensureSize(changetype(this), newLength, alignof());\n var dataStart = this.dataStart;\n memory.copy(\n dataStart + sizeof(),\n dataStart,\n (newLength - 1) << alignof()\n );\n if (isManaged()) {\n store(dataStart, __retain(changetype(value)));\n } else {\n store(dataStart, value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(start + length, 0) : min(start, length);\n end = end < 0 ? max(end + length, 0) : min(end , length);\n length = max(end - start, 0);\n var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = length << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, __retain(ref));\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, length << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n deleteCount = max(min(deleteCount, length - start), 0);\n var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n if (isManaged()) {\n for (let i = 0; i < deleteCount; ++i) {\n store(resultStart + (i << alignof()),\n load(thisBase + (i << alignof()))\n );\n // no need to retain -> is moved\n }\n } else {\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n }\n var offset = start + deleteCount;\n if (length != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (length - offset) << alignof()\n );\n }\n this.length_ = length - deleteCount;\n return result;\n }\n\n reverse(): Array {\n var length = this.length_;\n if (length) {\n let front = this.dataStart;\n let back = this.dataStart + ((length - 1) << alignof());\n while (front < back) {\n let temp = load(front);\n store(front, load(back));\n store(back, temp);\n front += sizeof();\n back -= sizeof();\n }\n }\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this {\n var length = this.length_;\n if (length <= 1) return this;\n var base = this.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b;\n store(base, a); // arr[0] = a;\n }\n return this;\n }\n SORT(base, length, comparator);\n return this;\n }\n\n join(separator: string = ","): string {\n if (isBoolean()) return this.join_bool(separator);\n if (isInteger()) return this.join_int(separator);\n if (isFloat()) return this.join_flt(separator);\n if (isString()) return this.join_str(separator);\n if (isArray()) return this.join_arr(separator);\n if (isReference()) return this.join_ref(separator);\n ERROR("unspported element type");\n return unreachable();\n }\n\n private join_bool(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return select("true", "false", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len("false")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_int(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n // @ts-ignore: type\n if (!lastIndex) return changetype(itoa(load(dataStart))); // retains\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_flt(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n ); // retains\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_str(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return load(dataStart);\n\n var sepLen = separator.length;\n var estLen = 0;\n var value: string | null;\n for (let i = 0, len = lastIndex + 1; i < len; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) estLen += value.length;\n }\n var offset = 0;\n var result = changetype(__alloc((estLen + sepLen * lastIndex) << 1, idof())); // retains\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) {\n let valueLen = changetype(value).length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (value !== null) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n changetype(value).length << 1\n );\n }\n return result;\n }\n\n private join_arr(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n\n var result = "";\n var sepLen = separator.length;\n var base = this.dataStart;\n var value: T;\n if (!lastIndex) {\n value = load(base);\n // @ts-ignore: type\n return value ? value.join(separator) : "";\n }\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n if (sepLen) result += separator;\n }\n value = load(base + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n return result; // registered by concatenation (FIXME: lots of garbage)\n }\n\n private join_ref(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var base = this.dataStart;\n if (!lastIndex) return "[object Object]";\n\n const valueLen = 15; // max possible length of element len("[object Object]")\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n if (value) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n if (load(base + (lastIndex << alignof()))) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n // automatically visits ArrayBufferView (.data) next\n }\n}\n',arraybuffer:'/// \n\nimport { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INVALIDLENGTH } from "./util/error";\n\nexport abstract class ArrayBufferView {\n\n @unsafe data: ArrayBuffer;\n @unsafe dataStart: usize;\n @unsafe dataLength: u32;\n\n protected constructor(length: i32, alignLog2: i32) {\n if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length = length << alignLog2, idof());\n memory.fill(buffer, 0, length);\n this.data = changetype(buffer); // retains\n this.dataStart = buffer;\n this.dataLength = length;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n get length(): i32 {\n ERROR("missing implementation: subclasses must implement ArrayBufferView#length");\n return unreachable();\n }\n}\n\n@sealed export class ArrayBuffer {\n\n static isView(value: T): bool {\n if (value) {\n if (value instanceof Int8Array) return true;\n if (value instanceof Uint8Array) return true;\n if (value instanceof Uint8ClampedArray) return true;\n if (value instanceof Int16Array) return true;\n if (value instanceof Uint16Array) return true;\n if (value instanceof Int32Array) return true;\n if (value instanceof Uint32Array) return true;\n if (value instanceof Int64Array) return true;\n if (value instanceof Uint64Array) return true;\n if (value instanceof Float32Array) return true;\n if (value instanceof Float64Array) return true;\n if (value instanceof DataView) return true;\n }\n return false;\n }\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length, idof());\n memory.fill(buffer, 0, length);\n return changetype(buffer); // retains\n }\n\n get byteLength(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n }\n\n slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer {\n var length = this.byteLength;\n begin = begin < 0 ? max(length + begin, 0) : min(begin, length);\n end = end < 0 ? max(length + end , 0) : min(end , length);\n var outSize = max(end - begin, 0);\n var out = __alloc(outSize, idof());\n memory.copy(out, changetype(this) + begin, outSize);\n return changetype(out); // retains\n }\n\n toString(): string {\n return "[object ArrayBuffer]";\n }\n}\n',"bindings/Date":"export declare function UTC(\n // NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for\n // converting the value to the WASM/JS boundary.\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: f64\n): f64;\nexport declare function now(): f64;\n","bindings/Math":"export declare const E: f64;\nexport declare const LN2: f64;\nexport declare const LN10: f64;\nexport declare const LOG2E: f64;\nexport declare const LOG10E: f64;\nexport declare const PI: f64;\nexport declare const SQRT1_2: f64;\nexport declare const SQRT2: f64;\n\nexport declare function abs(x: f64): f64;\nexport declare function acos(x: f64): f64;\nexport declare function acosh(x: f64): f64;\nexport declare function asin(x: f64): f64;\nexport declare function asinh(x: f64): f64;\nexport declare function atan(x: f64): f64;\nexport declare function atan2(y: f64, x: f64): f64;\nexport declare function atanh(x: f64): f64;\nexport declare function cbrt(x: f64): f64;\nexport declare function ceil(x: f64): f64;\nexport declare function clz32(x: f64): f64;\nexport declare function cos(x: f64): f64;\nexport declare function cosh(x: f64): f64;\nexport declare function exp(x: f64): f64;\nexport declare function expm1(x: f64): f64;\nexport declare function floor(x: f64): f64;\nexport declare function fround(x: f64): f32;\nexport declare function hypot(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function imul(a: f64, b: f64): f64;\nexport declare function log(x: f64): f64;\nexport declare function log10(x: f64): f64;\nexport declare function log1p(x: f64): f64;\nexport declare function log2(x: f64): f64;\nexport declare function max(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function min(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function pow(base: f64, exponent: f64): f64;\nexport declare function random(): f64;\nexport declare function round(x: f64): f64;\nexport declare function sign(x: f64): f64;\nexport declare function sin(x: f64): f64;\nexport declare function sinh(x: f64): f64;\nexport declare function sqrt(x: f64): f64;\nexport declare function tan(x: f64): f64;\nexport declare function tanh(x: f64): f64;\nexport declare function trunc(x: f64): f64;\n","bindings/wasi_unstable":"// see: https://wasi.dev\n\n/* tslint:disable:max-line-length */\n\n// helper types to be more explicit\ntype char = u8;\ntype ptr = usize; // all pointers are usize'd\ntype struct = T; // structs are references already in AS\n\n/** Read command-line argument data. */\nexport declare function args_get(\n /** Input: Pointer to a buffer to write the argument pointers. */\n argv: ptr>,\n /** Input: Pointer to a buffer to write the argument string data. */\n argv_buf: ptr\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function args_sizes_get(\n /** Output: Number of arguments. */\n argc: ptr,\n /** Output: Size of the argument string data. */\n argv_buf_size: ptr\n): errno;\n\n/** Return the resolution of a clock. */\nexport declare function clock_res_get(\n /** Input: The clock for which to return the resolution. */\n clock: clockid,\n /** Output: The resolution of the clock. */\n resolution: ptr\n): errno;\n\n/** Return the time value of a clock. */\nexport declare function clock_time_get(\n /** Input: Cock for which to return the time. */\n clock: clockid,\n /** Input: Maximum lag (exclusive) that the returned time value may have, compared to its actual value. */\n precision: timestamp,\n /** Output: Time value of the clock. */\n time: ptr\n): errno;\n\n/** Read environment variable data. */\nexport declare function environ_get(\n /** Input: Pointer to a buffer to write the environment variable pointers. */\n environ: ptr,\n /** Input: Pointer to a buffer to write the environment variable string data. */\n environ_buf: usize\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function environ_sizes_get(\n /** Output: The number of environment variables. */\n environ_count: ptr,\n /** Output: The size of the environment variable string data. */\n environ_buf_size: ptr\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_advise(\n /** Input: The file descriptor for the file for which to provide file advisory information. */\n fd: fd,\n /** Input: The offset within the file to which the advisory applies. */\n offset: filesize,\n /** Input: The length of the region to which the advisory applies. */\n len: filesize,\n /** Input: The advice. */\n advice: advice\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_allocate(\n /** Input: The file descriptor for the file in which to allocate space. */\n fd: fd,\n /** Input: The offset at which to start the allocation. */\n offset: filesize,\n /** Input: The length of the area that is allocated. */\n len: filesize\n): errno;\n\n/** Close a file descriptor. */\nexport declare function fd_close(\n /** Input: The file descriptor to close. */\n fd: fd\n): errno;\n\n/** Synchronize the data of a file to disk. */\nexport declare function fd_datasync(\n /** Input: The file descriptor of the file to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Get the attributes of a file descriptor. */\nexport declare function fd_fdstat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file descriptor's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the flags associated with a file descriptor. */\nexport declare function fd_fdstat_set_flags(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the file descriptor flags. */\n flags: fdflags\n): errno;\n\n/** Adjust the rights associated with a file descriptor. */\nexport declare function fd_fdstat_set_rights(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_base: rights,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_inheriting: rights\n): errno;\n\n/** Return the attributes of an open file. */\nexport declare function fd_filestat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */\nexport declare function fd_filestat_set_size(\n /** Input: A file descriptor for the file to adjust. */\n fd: fd,\n /** Input: The desired file size. */\n size: filesize\n): errno;\n\n/** Adjust the timestamps of an open file or directory. */\nexport declare function fd_filestat_set_times(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Read from a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pread(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors in which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors in which to store data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to read. */\n offset: filesize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_get(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: The buffer where the description is stored. */\n buf: struct\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_dir_name(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: Buffer into which to write the preopened directory name. */\n path: ptr,\n /** Input: Length of the buffer into which to write the preopened directory name. */\n path_len: usize\n): errno;\n\n/** Write to a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pwrite(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to write. */\n offset: filesize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/** Read from a file descriptor. */\nexport declare function fd_read(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors to which to store data. */\n iovs_len: usize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Read directory entries from a directory. */\nexport declare function fd_readdir(\n /** Input: Directory from which to read the directory entries. */\n fd: fd,\n /** Input: Buffer where directory entries are stored. */\n buf: ptr>,\n /** Input: Length of the buffer where directory entries are stored. */\n buf_len: usize,\n /** Input: Location within the directory to start reading. */\n cookie: dircookie,\n /** Output: Number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. */\n buf_used: ptr\n): errno;\n\n/** Atomically replace a file descriptor by renumbering another file descriptor. */\nexport declare function fd_renumber(\n /** Input: The file descriptor to renumber. */\n from: fd,\n /** Input: The file descriptor to overwrite. */\n to: fd\n): errno;\n\n/** Move the offset of a file descriptor. */\nexport declare function fd_seek(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The number of bytes to move. */\n offset: filedelta,\n /** Input: The base from which the offset is relative. */\n whence: whence,\n /** Output: The new offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Synchronize the data and metadata of a file to disk. */\nexport declare function fd_sync(\n /** Input: The file descriptor of the file containing the data and metadata to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Return the current offset of a file descriptor. */\nexport declare function fd_tell(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Output: The current offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Write to a file descriptor. */\nexport declare function fd_write(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/* Create a directory. */\nexport declare function path_create_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path at which to create the directory. */\n path: ptr,\n /** Input: The path at which to create the directory. */\n path_len: usize\n): errno;\n\n/** Return the attributes of a file or directory. */\nexport declare function path_filestat_get(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to inspect. */\n path: ptr,\n /** Input: The path of the file or directory to inspect. */\n path_len: usize,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the timestamps of a file or directory. */\nexport declare function path_filestat_set_times(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to operate on. */\n path: ptr,\n /** Input: The path of the file or directory to operate on. */\n path_len: usize,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Create a hard link. */\nexport declare function path_link(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n old_flags: lookupflags,\n /** Input: The source path from which to link. */\n old_path: ptr,\n /** Input: The source path from which to link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path at which to create the hard link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the hard link. */\n new_path_len: usize\n): errno;\n\n/** Open a file or directory. */\nexport declare function path_open(\n /** Input: The working directory at which the resolution of the path starts. */\n dirfd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n dirflags: lookupflags,\n /** Input: The path of the file or directory to open. */\n path: ptr,\n /** Input: The length of the path of the file or directory to open. */\n path_len: usize,\n /** Input: The method by which to open the file. */\n oflags: oflags,\n /** Input: The initial base rights that apply to operations using the file descriptor itself. */\n fs_rights_base: rights,\n /** Input: The initial inheriting rights that apply to file descriptors derived from it. */\n fs_rights_inheriting: rights,\n /** Input: The initial flags of the file descriptor. */\n fs_flags: fdflags,\n /** Output: The file descriptor of the file that has been opened. */\n fd: ptr\n): errno;\n\n/** Read the contents of a symbolic link. */\nexport declare function path_readlink(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path of the symbolic link from which to read. */\n path: ptr,\n /** Input: The length of the path of the symbolic link from which to read. */\n path_len: usize,\n /** Input: The buffer to which to write the contents of the symbolic link. */\n buf: ptr,\n /** Input: The length of the buffer to which to write the contents of the symbolic link. */\n buf_len: usize,\n /** Output: The number of bytes placed in the buffer. */\n buf_used: ptr\n): errno;\n\n/** Remove a directory. */\nexport declare function path_remove_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a directory to remove. */\n path: ptr,\n /** Input: The length of the path to a directory to remove. */\n path_len: usize\n): errno;\n\n/** Rename a file or directory. */\nexport declare function path_rename(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: The source path of the file or directory to rename. */\n old_path: ptr,\n /** Input: The length of the source path of the file or directory to rename. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path to which to rename the file or directory. */\n new_path: ptr,\n /** Input: The length of the destination path to which to rename the file or directory. */\n new_path_len: usize\n): errno;\n\n/** Create a symbolic link. */\nexport declare function path_symlink(\n /** Input: The contents of the symbolic link. */\n old_path: ptr,\n /** Input: The length of the contents of the symbolic link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The destination path at which to create the symbolic link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the symbolic link. */\n new_path_len: usize\n): errno;\n\n/** Unlink a file. */\nexport declare function path_unlink_file(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a file to unlink. */\n path: ptr,\n /** Input: The length of the path to a file to unlink. */\n path_len: usize\n): errno;\n\n/** Concurrently poll for the occurrence of a set of events. */\nexport declare function poll_oneoff(\n /** Input: The events to which to subscribe. */\n in_: ptr>,\n /** Input: The events that have occurred. */\n out: ptr>,\n /** Input: Both the number of subscriptions and events. */\n nsubscriptions: usize,\n /** Output: The number of events stored. */\n nevents: ptr\n): errno;\n\n/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */\nexport declare function proc_exit(\n /** Input: The exit code returned by the process. */\n rval: u32\n): void;\n\n/** Send a signal to the process of the calling thread. */\nexport declare function proc_raise(\n /** Input: The signal condition to trigger. */\n sig: signal\n): errno;\n\n/** Write high-quality random data into a buffer. */\nexport declare function random_get(\n /** Input: The buffer to fill with random data. */\n buf: usize,\n /** Input: The length of the buffer to fill with random data. */\n buf_len: usize\n): errno;\n\n/** Temporarily yield execution of the calling thread. */\nexport declare function sched_yield(): errno;\n\n/** Receive a message from a socket. */\nexport declare function sock_recv(\n /** Input: The socket on which to receive data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n ri_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to store data. */\n ri_data_len: usize,\n /** Input: Message flags. */\n ri_flags: riflags,\n /** Output: Number of bytes stored in `ri_data`. */\n ro_datalen: ptr,\n /** Output: Message flags. */\n ro_flags: ptr\n): errno;\n\n/** Send a message on a socket. */\nexport declare function sock_send(\n /** Input: The socket on which to send data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to retrieve data */\n si_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to retrieve data */\n si_data_len: usize,\n /** Input: Message flags. */\n si_flags: siflags,\n /** Output: Number of bytes transmitted. */\n so_datalen: ptr\n): errno;\n\n/** Shut down socket send and receive channels. */\nexport declare function sock_shutdown(\n /** Input: The socket on which to shutdown channels. */\n sock: fd,\n /** Input: Which channels on the socket to shut down. */\n how: sdflags\n): errno;\n\n// === Types ======================================================================================\n\n/** File or memory access pattern advisory information. */\nexport namespace advice {\n /** The application has no advice to give on its behavior with respect to the specified data. */\n // @ts-ignore: decorator\n @inline\n export const NORMAL: advice = 0;\n /** The application expects to access the specified data sequentially from lower offsets to higher offsets. */\n // @ts-ignore: decorator\n @inline\n export const SEQUENTIAL : advice = 1;\n /** The application expects to access the specified data in a random order. */\n // @ts-ignore: decorator\n @inline\n export const RANDOM: advice = 2;\n /** The application expects to access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const WILLNEED: advice = 3;\n /** The application expects that it will not access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const DONTNEED: advice = 4;\n /** The application expects to access the specified data once and then not reuse it thereafter. */\n // @ts-ignore: decorator\n @inline\n export const NOREUSE: advice = 5;\n}\nexport type advice = u8;\n\n/** Identifiers for clocks. */\nexport namespace clockid {\n /** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */\n // @ts-ignore: decorator\n @inline\n export const REALTIME: clockid = 0;\n /** The store-wide monotonic clock. Absolute value has no meaning. */\n // @ts-ignore: decorator\n @inline\n export const MONOTONIC: clockid = 1;\n /** The CPU-time clock associated with the current process. */\n // @ts-ignore: decorator\n @inline\n export const PROCESS_CPUTIME_ID: clockid = 2;\n /** The CPU-time clock associated with the current thread. */\n // @ts-ignore: decorator\n @inline\n export const THREAD_CPUTIME_ID: clockid = 3;\n}\nexport type clockid = u32;\n\n/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */\nexport type device = u64;\n\n/** A reference to the offset of a directory entry. */\nexport type dircookie = u64;\n\n/** A directory entry. */\n@unmanaged export class dirent {\n /** The offset of the next directory entry stored in this directory. */\n next: dircookie;\n /** The serial number of the file referred to by this directory entry. */\n ino: inode;\n /** The length of the name of the directory entry. */\n namlen: u32;\n /** The type of the file referred to by this directory entry. */\n type: filetype;\n private __padding0: u16;\n}\n\n/** Error codes returned by functions. */\nexport namespace errno {\n /** No error occurred. System call completed successfully. */\n // @ts-ignore: decorator\n @inline\n export const SUCCESS: errno = 0;\n /** Argument list too long. */\n // @ts-ignore: decorator\n @inline\n export const TOOBIG: errno = 1;\n /** Permission denied. */\n // @ts-ignore: decorator\n @inline\n export const ACCES: errno = 2;\n /** Address in use. */\n // @ts-ignore: decorator\n @inline\n export const ADDRINUSE: errno = 3;\n /** Address not available. */\n // @ts-ignore: decorator\n @inline\n export const ADDRNOTAVAIL: errno = 4;\n /** Address family not supported. */\n // @ts-ignore: decorator\n @inline\n export const AFNOSUPPORT: errno = 5;\n /** Resource unavailable, or operation would block. */\n // @ts-ignore: decorator\n @inline\n export const AGAIN: errno = 6;\n /** Connection already in progress. */\n // @ts-ignore: decorator\n @inline\n export const ALREADY: errno = 7;\n /** Bad file descriptor. */\n // @ts-ignore: decorator\n @inline\n export const BADF: errno = 8;\n /** Bad message. */\n // @ts-ignore: decorator\n @inline\n export const BADMSG: errno = 9;\n /** Device or resource busy. */\n // @ts-ignore: decorator\n @inline\n export const BUSY: errno = 10;\n /** Operation canceled. */\n // @ts-ignore: decorator\n @inline\n export const CANCELED: errno = 11;\n /** No child processes. */\n // @ts-ignore: decorator\n @inline\n export const CHILD: errno = 12;\n /** Connection aborted. */\n // @ts-ignore: decorator\n @inline\n export const CONNABORTED: errno = 13;\n /** Connection refused. */\n // @ts-ignore: decorator\n @inline\n export const CONNREFUSED: errno = 14;\n /** Connection reset. */\n // @ts-ignore: decorator\n @inline\n export const CONNRESET: errno = 15;\n /** Resource deadlock would occur. */\n // @ts-ignore: decorator\n @inline\n export const DEADLK: errno = 16;\n /** Destination address required. */\n // @ts-ignore: decorator\n @inline\n export const DESTADDRREQ: errno = 17;\n /** Mathematics argument out of domain of function. */\n // @ts-ignore: decorator\n @inline\n export const DOM: errno = 18;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const DQUOT: errno = 19;\n /** File exists. */\n // @ts-ignore: decorator\n @inline\n export const EXIST: errno = 20;\n /** Bad address. */\n // @ts-ignore: decorator\n @inline\n export const FAULT: errno = 21;\n /** File too large. */\n // @ts-ignore: decorator\n @inline\n export const FBIG: errno = 22;\n /** Host is unreachable. */\n // @ts-ignore: decorator\n @inline\n export const HOSTUNREACH: errno = 23;\n /** Identifier removed. */\n // @ts-ignore: decorator\n @inline\n export const IDRM: errno = 24;\n /** Illegal byte sequence. */\n // @ts-ignore: decorator\n @inline\n export const ILSEQ: errno = 25;\n /** Operation in progress. */\n // @ts-ignore: decorator\n @inline\n export const INPROGRESS: errno = 26;\n /** Interrupted function. */\n // @ts-ignore: decorator\n @inline\n export const INTR: errno = 27;\n /** Invalid argument. */\n // @ts-ignore: decorator\n @inline\n export const INVAL: errno = 28;\n /** I/O error. */\n // @ts-ignore: decorator\n @inline\n export const IO: errno = 29;\n /** Socket is connected. */\n // @ts-ignore: decorator\n @inline\n export const ISCONN: errno = 30;\n /** Is a directory. */\n // @ts-ignore: decorator\n @inline\n export const ISDIR: errno = 31;\n /** Too many levels of symbolic links. */\n // @ts-ignore: decorator\n @inline\n export const LOOP: errno = 32;\n /** File descriptor value too large. */\n // @ts-ignore: decorator\n @inline\n export const MFILE: errno = 33;\n /** Too many links. */\n // @ts-ignore: decorator\n @inline\n export const MLINK: errno = 34;\n /** Message too large. */\n // @ts-ignore: decorator\n @inline\n export const MSGSIZE: errno = 35;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const MULTIHOP: errno = 36;\n /** Filename too long. */\n // @ts-ignore: decorator\n @inline\n export const NAMETOOLONG: errno = 37;\n /** Network is down. */\n // @ts-ignore: decorator\n @inline\n export const NETDOWN: errno = 38;\n /** Connection aborted by network. */\n // @ts-ignore: decorator\n @inline\n export const NETRESET: errno = 39;\n /** Network unreachable. */\n // @ts-ignore: decorator\n @inline\n export const NETUNREACH: errno = 40;\n /** Too many files open in system. */\n // @ts-ignore: decorator\n @inline\n export const NFILE: errno = 41;\n /** No buffer space available. */\n // @ts-ignore: decorator\n @inline\n export const NOBUFS: errno = 42;\n /** No such device. */\n // @ts-ignore: decorator\n @inline\n export const NODEV: errno = 43;\n /** No such file or directory. */\n // @ts-ignore: decorator\n @inline\n export const NOENT: errno = 44;\n /** Executable file format error. */\n // @ts-ignore: decorator\n @inline\n export const NOEXEC: errno = 45;\n /** No locks available. */\n // @ts-ignore: decorator\n @inline\n export const NOLCK: errno = 46;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const NOLINK: errno = 47;\n /** Not enough space. */\n // @ts-ignore: decorator\n @inline\n export const NOMEM: errno = 48;\n /** No message of the desired type. */\n // @ts-ignore: decorator\n @inline\n export const NOMSG: errno = 49;\n /** Protocol not available. */\n // @ts-ignore: decorator\n @inline\n export const NOPROTOOPT: errno = 50;\n /** No space left on device. */\n // @ts-ignore: decorator\n @inline\n export const NOSPC: errno = 51;\n /** Function not supported. */\n // @ts-ignore: decorator\n @inline\n export const NOSYS: errno = 52;\n /** The socket is not connected. */\n // @ts-ignore: decorator\n @inline\n export const NOTCONN: errno = 53;\n /** Not a directory or a symbolic link to a directory. */\n // @ts-ignore: decorator\n @inline\n export const NOTDIR: errno = 54;\n /** Directory not empty. */\n // @ts-ignore: decorator\n @inline\n export const NOTEMPTY: errno = 55;\n /** State not recoverable. */\n // @ts-ignore: decorator\n @inline\n export const NOTRECOVERABLE: errno = 56;\n /** Not a socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSOCK: errno = 57;\n /** Not supported, or operation not supported on socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSUP: errno = 58;\n /** Inappropriate I/O control operation. */\n // @ts-ignore: decorator\n @inline\n export const NOTTY: errno = 59;\n /** No such device or address. */\n // @ts-ignore: decorator\n @inline\n export const NXIO: errno = 60;\n /** Value too large to be stored in data type. */\n // @ts-ignore: decorator\n @inline\n export const OVERFLOW: errno = 61;\n /** Previous owner died. */\n // @ts-ignore: decorator\n @inline\n export const OWNERDEAD: errno = 62;\n /** Operation not permitted. */\n // @ts-ignore: decorator\n @inline\n export const PERM: errno = 63;\n /** Broken pipe. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: errno = 64;\n /** Protocol error. */\n // @ts-ignore: decorator\n @inline\n export const PROTO: errno = 65;\n /** Protocol not supported. */\n // @ts-ignore: decorator\n @inline\n export const PROTONOSUPPORT: errno = 66;\n /** Protocol wrong type for socket. */\n // @ts-ignore: decorator\n @inline\n export const PROTOTYPE: errno = 67;\n /** Result too large. */\n // @ts-ignore: decorator\n @inline\n export const RANGE: errno = 68;\n /** Read-only file system. */\n // @ts-ignore: decorator\n @inline\n export const ROFS: errno = 69;\n /** Invalid seek. */\n // @ts-ignore: decorator\n @inline\n export const SPIPE: errno = 70;\n /** No such process. */\n // @ts-ignore: decorator\n @inline\n export const SRCH: errno = 71;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const STALE: errno = 72;\n /** Connection timed out. */\n // @ts-ignore: decorator\n @inline\n export const TIMEDOUT: errno = 73;\n /** Text file busy. */\n // @ts-ignore: decorator\n @inline\n export const TXTBSY: errno = 74;\n /** Cross-device link. */\n // @ts-ignore: decorator\n @inline\n export const XDEV: errno = 75;\n /** Extension: Capabilities insufficient. */\n // @ts-ignore: decorator\n @inline\n export const NOTCAPABLE: errno = 76;\n}\nexport type errno = u16;\n\n/** An event that occurred. */\n@unmanaged export abstract class event {\n /** User-provided value that got attached to `subscription#userdata`. */\n userdata: userdata;\n /** If non-zero, an error that occurred while processing the subscription request. */\n error: errno;\n /* The type of the event that occurred. */\n type: eventtype;\n private __padding0: u16;\n}\n\n/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\n@unmanaged export class rwevent extends event {\n /* The number of bytes available for reading or writing. */\n nbytes: filesize;\n /* The state of the file descriptor. */\n flags: eventrwflags;\n private __padding1: u32;\n}\n\n/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\nexport namespace eventrwflags {\n /** The peer of this socket has closed or disconnected. */\n // @ts-ignore: decorator\n @inline\n export const HANGUP: eventrwflags = 1;\n}\nexport type eventrwflags = u16;\n\n/** Type of a subscription to an event or its occurrence. */\nexport namespace eventtype {\n /** The time value of clock has reached the timestamp. */\n // @ts-ignore: decorator\n @inline\n export const CLOCK: eventtype = 0;\n /** File descriptor has data available for reading. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: eventtype = 1;\n /** File descriptor has capacity available for writing */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: eventtype = 2;\n}\nexport type eventtype = u8;\n\n/** Exit code generated by a process when exiting. */\nexport type exitcode = u32;\n\n/** A file descriptor number. */\nexport type fd = u32;\n\n/** File descriptor flags. */\nexport namespace fdflags {\n /** Append mode: Data written to the file is always appended to the file's end. */\n // @ts-ignore: decorator\n @inline\n export const APPEND: fdflags = 1;\n /** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */\n // @ts-ignore: decorator\n @inline\n export const DSYNC: fdflags = 2;\n /** Non-blocking mode. */\n // @ts-ignore: decorator\n @inline\n export const NONBLOCK: fdflags = 4;\n /** Synchronized read I/O operations. */\n // @ts-ignore: decorator\n @inline\n export const RSYNC: fdflags = 8;\n /** Write according to synchronized I/O file integrity completion. */\n // @ts-ignore: decorator\n @inline\n export const SYNC: fdflags = 16;\n}\nexport type fdflags = u16;\n\n/** File descriptor attributes. */\n@unmanaged export class fdstat {\n /** File type. */\n filetype: filetype;\n /** File descriptor flags. */\n flags: fdflags;\n /** Rights that apply to this file descriptor. */\n rights_base: rights;\n /** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */\n rights_inheriting: rights;\n}\n\n/** Relative offset within a file. */\nexport type filedelta = i64;\n\n/** Non-negative file size or length of a region within a file. */\nexport type filesize = u64;\n\n/** File attributes. */\n@unmanaged export class filestat {\n /** Device ID of device containing the file. */\n dev: device;\n /** File serial number. */\n ino: inode;\n /** File type. */\n filetype: filetype;\n /** Number of hard links to the file. */\n nlink: linkcount;\n /** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */\n size: filesize;\n /** Last data access timestamp. */\n atim: timestamp;\n /** Last data modification timestamp. */\n mtim: timestamp;\n /** Last file status change timestamp. */\n ctim: timestamp;\n}\n\n/** The type of a file descriptor or file. */\nexport namespace filetype {\n /** The type of the file descriptor or file is unknown or is different from any of the other types specified. */\n // @ts-ignore: decorator\n @inline\n export const UNKNOWN: filetype = 0;\n /** The file descriptor or file refers to a block device inode. */\n // @ts-ignore: decorator\n @inline\n export const BLOCK_DEVICE: filetype = 1;\n /** The file descriptor or file refers to a character device inode. */\n // @ts-ignore: decorator\n @inline\n export const CHARACTER_DEVICE: filetype = 2;\n /** The file descriptor or file refers to a directory inode. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: filetype = 3;\n /** The file descriptor or file refers to a regular file inode. */\n // @ts-ignore: decorator\n @inline\n export const REGULAR_FILE: filetype = 4;\n /** The file descriptor or file refers to a datagram socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_DGRAM: filetype = 5;\n /** The file descriptor or file refers to a byte-stream socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_STREAM: filetype = 6;\n /** The file refers to a symbolic link inode. */\n // @ts-ignore: decorator\n @inline\n export const SYMBOLIC_LINK: filetype = 7;\n}\nexport type filetype = u8;\n\n/** Which file time attributes to adjust. */\nexport namespace fstflags {\n /** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM: fstflags = 1;\n /** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM_NOW: fstflags = 2;\n /** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM: fstflags = 4;\n /** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM_NOW: fstflags = 8;\n}\nexport type fstflags = u16;\n\n/** File serial number that is unique within its file system. */\nexport type inode = u64;\n\n/** A region of memory for scatter/gather reads. */\n@unmanaged export class iovec {\n /** The address of the buffer to be filled. */\n buf: usize;\n /** The length of the buffer to be filled. */\n buf_len: usize;\n}\n\n/** Number of hard links to an inode. */\nexport type linkcount = u32;\n\n/** Flags determining the method of how paths are resolved. */\nexport namespace lookupflags {\n /** As long as the resolved path corresponds to a symbolic link, it is expanded. */\n // @ts-ignore: decorator\n @inline\n export const SYMLINK_FOLLOW: lookupflags = 1;\n}\nexport type lookupflags = u32;\n\n/** Open flags. */\nexport namespace oflags {\n /** Create file if it does not exist. */\n // @ts-ignore: decorator\n @inline\n export const CREAT: oflags = 1;\n /** Fail if not a directory. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: oflags = 2;\n /** Fail if file already exists. */\n // @ts-ignore: decorator\n @inline\n export const EXCL: oflags = 4;\n /** Truncate file to size 0. */\n // @ts-ignore: decorator\n @inline\n export const TRUNC: oflags = 8;\n}\nexport type oflags = u16;\n\n// TODO: undocumented\nexport namespace preopentype {\n // @ts-ignore: decorator\n @inline\n export const DIR: preopentype = 0;\n}\nexport type preopentype = u8;\n\n// TODO: undocumented\nexport abstract class prestat {\n type: preopentype;\n}\n\n// TODO: undocumented\nexport class dirprestat extends prestat {\n name_len: usize;\n}\n\n/** Flags provided to `sock_recv`. */\nexport namespace riflags {\n /** Returns the message without removing it from the socket's receive queue. */\n // @ts-ignore: decorator\n @inline\n export const PEEK: riflags = 1;\n /** On byte-stream sockets, block until the full amount of data can be returned. */\n // @ts-ignore: decorator\n @inline\n export const WAITALL: riflags = 2;\n}\nexport type riflags = u16;\n\n/** File descriptor rights, determining which actions may be performed. */\nexport namespace rights {\n /** The right to invoke `fd_datasync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_DATASYNC: rights = 1;\n /** The right to invoke `fd_read` and `sock_recv`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: rights = 2;\n /** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SEEK: rights = 4;\n /** The right to invoke `fd_fdstat_set_flags`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FDSTAT_SET_FLAGS: rights = 8;\n /** The right to invoke `fd_sync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SYNC: rights = 16;\n /** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */\n // @ts-ignore: decorator\n @inline\n export const FD_TELL: rights = 32;\n /** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: rights = 64;\n /** The right to invoke `fd_advise`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ADVISE: rights = 128;\n /** The right to invoke `fd_allocate`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ALLOCATE: rights = 256;\n /** The right to invoke `path_create_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_DIRECTORY: rights = 512;\n /** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_FILE: rights = 1024;\n /** The right to invoke `path_link` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_SOURCE: rights = 2048;\n /** The right to invoke `path_link` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_TARGET: rights = 4096;\n /** The right to invoke `path_open`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_OPEN: rights = 8192;\n /** The right to invoke `fd_readdir`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READDIR: rights = 16384;\n /** The right to invoke `path_readlink`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_READLINK: rights = 32768;\n /** The right to invoke `path_rename` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_SOURCE: rights = 65536;\n /** The right to invoke `path_rename` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_TARGET: rights = 131072;\n /** The right to invoke `path_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_GET: rights = 262144;\n /** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_SIZE: rights = 524288;\n /** The right to invoke `path_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_TIMES: rights = 1048576;\n /** The right to invoke `fd_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_GET: rights = 2097152;\n /** The right to invoke `fd_filestat_set_size`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_SIZE: rights = 4194304;\n /** The right to invoke `fd_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_TIMES: rights = 8388608;\n /** The right to invoke `path_symlink`. */\n // @ts-ignore: decorator\n @inline\n export const RIGHT_PATH_SYMLINK: rights = 16777216;\n /** The right to invoke `path_remove_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_REMOVE_DIRECTORY: rights = 33554432;\n /** The right to invoke `path_unlink_file`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_UNLINK_FILE: rights = 67108864;\n /** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */\n // @ts-ignore: decorator\n @inline\n export const POLL_FD_READWRITE: rights = 134217728;\n /** The right to invoke `sock_shutdown`. */\n // @ts-ignore: decorator\n @inline\n export const SOCK_SHUTDOWN: rights = 268435456;\n}\nexport type rights = u64;\n\n/** Flags returned by `sock_recv`. */\nexport namespace roflags {\n /** Message data has been truncated. */\n // @ts-ignore: decorator\n @inline\n export const DATA_TRUNCATED: roflags = 1;\n}\nexport type roflags = u16;\n\n/** Which channels on a socket to shut down. */\nexport namespace sdflags {\n /** Disables further receive operations. */\n // @ts-ignore: decorator\n @inline\n export const RD: sdflags = 1;\n /** Disables further send operations. */\n // @ts-ignore: decorator\n @inline\n export const WR: sdflags = 2;\n}\nexport type sdflags = u8;\n\n/** Flags provided to `sock_send`. */\nexport namespace siflags {\n // As there are currently no flags defined, it must be set to zero.\n}\nexport type siflags = u16;\n\n/** Signal condition. */\nexport namespace signal {\n /** Hangup. */\n // @ts-ignore: decorator\n @inline\n export const HUP: signal = 1;\n /** Terminate interrupt signal. */\n // @ts-ignore: decorator\n @inline\n export const INT: signal = 2;\n /** Terminal quit signal. */\n // @ts-ignore: decorator\n @inline\n export const QUIT: signal = 3;\n /** Illegal instruction. */\n // @ts-ignore: decorator\n @inline\n export const ILL: signal = 4;\n /** Trace/breakpoint trap. */\n // @ts-ignore: decorator\n @inline\n export const TRAP: signal = 5;\n /** Process abort signal. */\n // @ts-ignore: decorator\n @inline\n export const ABRT: signal = 6;\n /** Access to an undefined portion of a memory object. */\n // @ts-ignore: decorator\n @inline\n export const BUS: signal = 7;\n /** Erroneous arithmetic operation. */\n // @ts-ignore: decorator\n @inline\n export const FPE: signal = 8;\n /** Kill. */\n // @ts-ignore: decorator\n @inline\n export const KILL: signal = 9;\n /** User-defined signal 1. */\n // @ts-ignore: decorator\n @inline\n export const USR1: signal = 10;\n /** Invalid memory reference. */\n // @ts-ignore: decorator\n @inline\n export const SEGV: signal = 11;\n /** User-defined signal 2. */\n // @ts-ignore: decorator\n @inline\n export const USR2: signal = 12;\n /** Write on a pipe with no one to read it. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: signal = 13;\n /** Alarm clock. */\n // @ts-ignore: decorator\n @inline\n export const ALRM: signal = 14;\n /** Termination signal. */\n // @ts-ignore: decorator\n @inline\n export const TERM: signal = 15;\n /** Child process terminated, stopped, or continued. */\n // @ts-ignore: decorator\n @inline\n export const CHLD: signal = 16;\n /** Continue executing, if stopped. */\n // @ts-ignore: decorator\n @inline\n export const CONT: signal = 17;\n /** Stop executing. */\n // @ts-ignore: decorator\n @inline\n export const STOP: signal = 18;\n /** Terminal stop signal. */\n // @ts-ignore: decorator\n @inline\n export const TSTP: signal = 19;\n /** Background process attempting read. */\n // @ts-ignore: decorator\n @inline\n export const TTIN: signal = 20;\n /** Background process attempting write. */\n // @ts-ignore: decorator\n @inline\n export const TTOU: signal = 21;\n /** High bandwidth data is available at a socket. */\n // @ts-ignore: decorator\n @inline\n export const URG: signal = 22;\n /** CPU time limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XCPU: signal = 23;\n /** File size limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XFSZ: signal = 24;\n /** Virtual timer expired. */\n // @ts-ignore: decorator\n @inline\n export const VTALRM: signal = 25;\n // @ts-ignore: decorator\n @inline\n export const PROF: signal = 26;\n // @ts-ignore: decorator\n @inline\n export const WINCH: signal = 27;\n // @ts-ignore: decorator\n @inline\n export const POLL: signal = 28;\n // @ts-ignore: decorator\n @inline\n export const PWR: signal = 29;\n /** Bad system call. */\n // @ts-ignore: decorator\n @inline\n export const SYS: signal = 30;\n}\nexport type signal = u8;\n\n/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */\nexport namespace subclockflags {\n /** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */\n // @ts-ignore: decorator\n @inline\n export const ABSTIME: subclockflags = 1;\n}\nexport type subclockflags = u16;\n\n/** Subscription to an event. */\n@unmanaged export abstract class subscription {\n /** User-provided value that is attached to the subscription. */\n userdata: userdata;\n /** The type of the event to which to subscribe. */\n type: eventtype;\n private __padding0: u32;\n}\n\n/* Subscription to an event of type `eventtype.CLOCK`.**/\n@unmanaged export class clocksubscription extends subscription {\n /** The user-defined unique identifier of the clock. */\n identifier: userdata;\n /** The clock against which to compare the timestamp. */\n clock_id: clockid;\n /** The absolute or relative timestamp. */\n timeout: timestamp;\n /** The amount of time that the implementation may wait additionally to coalesce with other events. */\n precision: timestamp;\n /** Flags specifying whether the timeout is absolute or relative. */\n flags: subclockflags;\n private __padding1: u32;\n}\n\n/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/\n@unmanaged export class fdsubscription extends subscription {\n /** The file descriptor on which to wait for it to become ready for reading or writing. */\n fd: fd;\n}\n\n/** Timestamp in nanoseconds. */\nexport type timestamp = u64;\n\n/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */\nexport type userdata = u64;\n\n/** The position relative to which to set the offset of the file descriptor. */\nexport namespace whence {\n /** Seek relative to current position. */\n // @ts-ignore: decorator\n @inline\n export const CUR: whence = 0;\n /** Seek relative to end-of-file. */\n // @ts-ignore: decorator\n @inline\n export const END: whence = 1;\n /** Seek relative to start-of-file. */\n // @ts-ignore: decorator\n @inline\n export const SET: whence = 2;\n}\nexport type whence = u8;\n","bindings/wasi":'export * from "./wasi_unstable";\n',builtins:'// @ts-ignore: decorator\n@builtin\nexport declare function isInteger(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFloat(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isBoolean(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isSigned(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isReference(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isString(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArray(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArrayLike(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFunction(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isNullable(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isDefined(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isConstant(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isManaged(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isVoid(): boolean;\n\n// @ts-ignore\n@builtin\nexport declare function lengthof(func?: T): i32;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function clz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ctz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function popcnt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function abs(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function max(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function min(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ceil(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function floor(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function nearest(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function reinterpret(value: number): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sqrt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function trunc(value: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function load(offset: usize, immOffset?: usize, immAlign?: usize): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function store(offset: usize, value: void, immOffset?: usize, immAlign?: usize): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sizeof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function alignof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function offsetof(fieldName?: string): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function idof(): u32;\n\n// @ts-ignore\n@builtin\nexport declare function nameof(): string;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unreachable(): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function changetype(value: void): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unchecked(expr: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_indirect(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_direct(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function instantiate(...args: void[]): T;\n\nexport namespace atomic {\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: T, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n\n // @ts-ignore: decorator\n @builtin\n export declare function notify(ptr: usize, count: i32): i32;\n}\n\n// @ts-ignore: decorator\n@lazy\nexport const enum AtomicWaitResult {\n OK = 0,\n NOT_EQUAL = 1,\n TIMED_OUT = 2\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8(value: void): i8;\n\nexport namespace i8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i8 = -128;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i8 = 127;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16(value: void): i16;\n\nexport namespace i16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i16 = -32768;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i16 = 32767;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32(value: void): i32;\n\nexport namespace i32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i32 = -2147483648;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i32 = 2147483647;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f32(value: f32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64(value: void): i64;\n\nexport namespace i64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i64 = -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i64 = 9223372036854775807;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f64(value: f64): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw32 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isize(value: void): isize;\n\nexport namespace isize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u8(value: void): u8;\n\nexport namespace u8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u8 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u8 = 255;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u16(value: void): u16;\n\nexport namespace u16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u16 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u16 = 65535;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u32(value: void): u32;\n\nexport namespace u32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u32 = 4294967295;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u64(value: void): u64;\n\nexport namespace u64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function usize(value: void): usize;\n\nexport namespace usize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: usize = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function bool(value: void): bool;\n\nexport namespace bool {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: bool = false;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: bool = true;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32(value: void): f32;\n\nexport namespace f32 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x34000000); // 0x1p-23f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x00000001); // 0x0.000001p+0f\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7F7FFFFF); // 0x1.fffffep+127f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x00800000); // 0x1p-126f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f32, y: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i32(value: i32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f32): f32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f32): f32;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64(value: void): f64;\n\nexport namespace f64 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x3CB0000000000000); // 0x1p-52\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x0000000000000001); // 0x0.0000000000001p+0\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7FEFFFFFFFFFFFFF); // 0x1.fffffffffffffp+1023\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x0010000000000000); // 0x1p-1022\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f64, y: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i64(value: i64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f64): f64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f64): f64;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function v128(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace v128 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128; // except i64\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function not(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function bitselect(v1: v128, v2: v128, c: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8x16(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace i8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\n\nexport namespace i16x8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\n\nexport namespace i32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f32x4_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f32x4_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64x2(a: i64, b: i64): v128;\n\nexport namespace i64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f64x2_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f64x2_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\n\nexport namespace f32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i32x4(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i32x4(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64x2(a: f64, b: f64): v128;\n\nexport namespace f64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i64x2(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i64x2(a: v128): v128;\n}\n\nexport namespace v8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(\n a: v128, b: v128,\n l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8,\n l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8\n ): v128;\n}\n\n// @ts-ignore: decorator\n@external("env", "abort")\ndeclare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n// @ts-ignore: decorator\n@external("env", "trace")\ndeclare function trace(\n message: string,\n n?: i32,\n a0?: f64,\n a1?: f64,\n a2?: f64,\n a3?: f64,\n a4?: f64\n): void;\n',compat:"\nexport type ReturnType = returnof;\n",dataview:'import { BLOCK_MAXSIZE } from "./rt/common";\nimport { ArrayBuffer } from "./arraybuffer";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\n\n// TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte\n\nexport class DataView {\n\n private data: ArrayBuffer;\n private dataStart: usize;\n private dataLength: i32;\n\n constructor(\n buffer: ArrayBuffer,\n byteOffset: i32 = 0,\n byteLength: i32 = buffer.byteLength\n ) {\n if (\n i32(byteLength > BLOCK_MAXSIZE) |\n i32(byteOffset + byteLength > buffer.byteLength)\n ) throw new RangeError(E_INVALIDLENGTH);\n this.data = buffer; // retains\n var dataStart = changetype(buffer) + byteOffset;\n this.dataStart = dataStart;\n this.dataLength = byteLength;\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n getFloat32(byteOffset: i32, littleEndian: boolean = false): f32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getFloat64(byteOffset: i32, littleEndian: boolean = false): f64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getInt8(byteOffset: i32): i8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getInt16(byteOffset: i32, littleEndian: boolean = false): i16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getInt32(byteOffset: i32, littleEndian: boolean = false): i32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint8(byteOffset: i32): u8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getUint16(byteOffset: i32, littleEndian: boolean = false): u16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint32(byteOffset: i32, littleEndian: boolean = false): u32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setFloat32(byteOffset: i32, value: f32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setFloat64(byteOffset: i32, value: f64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setInt8(byteOffset: i32, value: i8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setInt16(byteOffset: i32, value: i16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setInt32(byteOffset: i32, value: i32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint8(byteOffset: i32, value: u8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setUint16(byteOffset: i32, value: u16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint32(byteOffset: i32, value: u32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n // Non-standard additions that make sense in WebAssembly, but won\'t work in JS:\n\n getInt64(byteOffset: i32, littleEndian: boolean = false): i64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i64 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint64(byteOffset: i32, littleEndian: boolean = false): u64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setInt64(byteOffset: i32, value: i64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint64(byteOffset: i32, value: u64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n toString(): string {\n return "[object DataView]";\n }\n}\n',date:'import {\n UTC as Date_UTC,\n now as Date_now\n} from "./bindings/Date";\n\nexport class Date {\n\n @inline static UTC(\n year: i32,\n month: i32 = 0,\n day: i32 = 1,\n hour: i32 = 0,\n minute: i32 = 0,\n second: i32 = 0,\n millisecond: i64 = 0\n ): i64 {\n return Date_UTC(year, month, day, hour, minute, second, millisecond);\n }\n\n @inline static now(): i64 {\n return Date_now();\n }\n\n private value: i64;\n\n constructor(value: i64) {\n this.value = value;\n }\n\n getTime(): i64 {\n return this.value;\n }\n\n setTime(value: i64): i64 {\n this.value = value;\n return value;\n }\n}\n',diagnostics:"// @ts-ignore: decorator\n@builtin\nexport declare function ERROR(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function WARNING(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function INFO(message?: string): void;\n",error:'export class Error {\n\n name: string = "Error";\n stack: string = ""; // TODO\n\n constructor(\n public message: string = ""\n ) {}\n\n toString(): string {\n var message = this.message;\n return message.length\n ? this.name + ": " + message\n : this.name;\n }\n}\n\nexport class RangeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "RangeError";\n }\n}\n\nexport class TypeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "TypeError";\n }\n}\n\nexport class SyntaxError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "SyntaxError";\n }\n}\n',fixedarray:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";\n\n// NOTE: DO NOT USE YET!\n\n// TODO: FixedArray with S being the static size, i.e. `new FixedArray`.\n// Then hard-wire this special type to the compiler and do static length checks instead :)\n\nexport class FixedArray {\n [key: number]: T;\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n var outSize = length << alignof();\n var out = __alloc(outSize, idof>());\n memory.fill(out, 0, outSize);\n return changetype>(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof();\n }\n\n @operator("[]") private __get(index: i32): T {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n this.__unchecked_set(index, value);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(changetype(this) + (index << alignof()));\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = changetype(this) + (index << alignof());\n let oldValue = load(offset);\n if (changetype(value) != oldValue) {\n store(offset, __retain(changetype(value)));\n __release(changetype(oldValue));\n }\n } else {\n store(changetype(this) + (index << alignof()), value);\n }\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = changetype(this);\n let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n }\n}\n',heap:"// @ts-ignore: decorator\n@builtin\nexport declare const __heap_base: usize;\n",iterator:"export abstract class Iterable {\n // ?\n}\n\n@sealed\nexport abstract class Iterator {\n\n // private constructor(iterable: Iterable) {\n // }\n\n // TODO: these need to evaluate the classId at the respective reference in order to obtain the\n // next value, i.e. arrays work differently than maps. we'd then have:\n //\n // ╒═══════════════════ Iterator layout (32-bit) ══════════════════╕\n // 3 2 1\n // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n // │ index │\n // ├─────────────────────────────────────────────────────────┬───┬─┤\n // │ reference │ 0 │D│\n // └─────────────────────────────────────────────────────────┴───┴─┘\n // D: Done flag\n\n // get value(this: u64): T {\n // ?\n // }\n\n // next(this: u64): Iterator {\n // ?\n // }\n\n done(this: u64): bool {\n return (this & 1);\n }\n}\n",map:'/// \n\nimport { HASH } from "./util/hash";\nimport { E_KEYNOTFOUND } from "util/error";\n\n// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a map entry. */\n@unmanaged class MapEntry {\n key: K;\n value: V;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K/V is <= 32-bits\n const maxkv = sizeof() > sizeof() ? sizeof() : sizeof();\n const align = (maxkv > sizeof() ? maxkv : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Map {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // MapEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() {\n this.clear();\n }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: K, hashCode: u32): MapEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n has(key: K): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n @operator("[]")\n get(key: K): V {\n var entry = this.find(key, HASH(key));\n if (!entry) throw new Error(E_KEYNOTFOUND); // cannot represent `undefined`\n return entry.value;\n }\n\n @operator("[]=")\n set(key: K, value: V): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (entry) {\n if (isManaged()) {\n let oldRef = changetype(entry.value);\n if (changetype(value) != oldRef) {\n entry.value = changetype(__retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n entry.value = value;\n }\n } else {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n let entries = this.entries;\n entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE());\n // link with the map\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n entry.value = isManaged()\n ? changetype(__retain(changetype(value)))\n : value;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n delete(key: K): bool {\n var entry = this.find(key, HASH(key));\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key));\n if (isManaged()) __release(changetype(entry.value));\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr);\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr);\n newEntry.key = oldEntry.key;\n newEntry.value = oldEntry.value;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n keys(): K[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var keys = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n keys.push(entry.key);\n }\n }\n return keys;\n }\n\n values(): V[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.value);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Map]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged() || isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n if (isManaged()) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n if (isManaged()) {\n let val = changetype(entry.value);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',math:'import * as JSMath from "./bindings/Math";\nexport { JSMath };\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from "./builtins";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n// TODO: sin, cos, tan for Math namespace\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n return NativeMath.exp(x - kln2) * scale * scale;\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7ff;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u >> 63);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_32: u32;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx >> 31) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var e = reinterpret(x) >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n if (hx >> 31) return -x;\n return x;\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var s = u >> 63;\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n switch (m) {\n case 0: return PI / 4;\n case 1: return -PI / 4;\n case 2: return 3 * PI / 4;\n case 3: return -3 * PI / 4;\n }\n } else {\n switch (m) {\n case 0: return 0.0;\n case 1: return -0.0;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // TODO\n return JSMath.cos(x);\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var hx = (reinterpret(x) >> 32);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n var hi: f64, lo: f64 = 0;\n var k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n var xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n var xq = xs * xs;\n var c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n var y = 1.0 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32 & 0x7FFFFFFF);\n var k = 0, sign_ = (u >> 63);\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign_) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = (ux >> 52);\n var ey = (uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || (hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = (u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = (hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln2hi;\n var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n var y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n var u_ = reinterpret(x);\n var hx = (u_ >> 32);\n var lx = u_;\n u_ = reinterpret(y);\n var hy = (u_ >> 32);\n var ly = u_;\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n var yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let kcond = k > 20;\n let offset = select(52, 20, kcond) - k;\n let Ly = select(ly, iy, kcond);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n var ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n var s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n var t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n var j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret((((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n var y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = (u_ >> 32);\n var i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret((n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = (reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n\n export function seedRandom(value: i64): void {\n assert(value);\n random_seeded = true;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n }\n\n export function random(): f64 { // see: v8/src/base/random-number-generator.cc\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = ((s0 + s1) & 0x000FFFFFFFFFFFFF) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f64): f64 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n // In ECMAScript all NaN values are indistinguishable from each other\n // so we need handle NaN and negative NaN in similar way\n return ((reinterpret(x) >>> 63) & i32(x == x));\n }\n\n export function sin(x: f64): f64 { // TODO\n return JSMath.sin(x);\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var absx = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n t = expm1(absx);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // TODO\n return JSMath.tan(x);\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n /* make sure final n < -53 to avoid double\n rounding in the subnormal range */\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx << 63;\n return reinterpret(ux);\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = (ux >> 63);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return sx ? -x : x;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy\nconst PIO2_TABLE: u64[] = [\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n];\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret((0x7F + (k >> 1)) << 23);\n return NativeMathf.exp(x - kln2) * scale * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n const bits = PIO2_TABLE;\n\n var offset = (u >> 23) - 152;\n var index = offset >> 6;\n var shift = offset & 63;\n\n var b0 = unchecked(bits[index + 0]);\n var b1 = unchecked(bits[index + 1]);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = unchecked(bits[index + 2]);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product: u64 = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q: i32 = ((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const pi2hi = reinterpret(0x3FF921FB50000000); // 1.57079631090164184570\n const pi2lo = reinterpret(0x3E5110B4611A6263); // 1.58932547735281966916e-8\n const _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { /* π * 0x1p28 */\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const S1 = reinterpret(0xBFC5555554CBAC77); // -0x15555554cbac77.0p-55\n const S2 = reinterpret(0x3F811110896EFBB2); // 0x111110896efbb2.0p-59\n const S3 = reinterpret(0xBF2A00F9E2CAE774); // -0x1a00f9e2cae774.0p-65\n const S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return ((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const C0 = reinterpret(0xBFDFFFFFFD0C5E81); // -0x1ffffffd0c5e81.0p-54\n const C1 = reinterpret(0x3FA55553E1053A42); // 0x155553e1053a42.0p-57\n const C2 = reinterpret(0xBF56C087E80F1E27); // -0x16c087e80f1e27.0p-62\n const C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return (((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n\n const T0 = reinterpret(0x3FD5554D3418C99F); /* 0x15554d3418c99f.0p-54 */\n const T1 = reinterpret(0x3FC112FD38999F72); /* 0x1112fd38999f72.0p-55 */\n const T2 = reinterpret(0x3FAB54C91D865AFE); /* 0x1b54c91d865afe.0p-57 */\n const T3 = reinterpret(0x3F991DF3908C33CE); /* 0x191df3908c33ce.0p-58 */\n const T4 = reinterpret(0x3F685DADFCECF44E); /* 0x185dadfcecf44e.0p-61 */\n const T5 = reinterpret(0x3F8362B9BF971BCD); /* 0x1362b9bf971bcd.0p-59 */\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return (odd ? -1 / r : r);\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000);\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx >> 31) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) {\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (a < 0x3F800000 + (12 << 23)) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000);\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = (pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000);\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = (((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n switch (m) {\n case 0: return pi / 4;\n case 1: return -pi / 4;\n case 2: return 3 * pi / 4;\n case 3: return -3 * pi / 4;\n }\n } else {\n switch (m) {\n case 0: return 0;\n case 1: return -0;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const c1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const c2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const c3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n /* raise inexact if x != 0 */\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix > 0x4016cbe3) { /* |x| ~> 3π/4 */\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix > 0x40afeddf) { /* |x| ~> 7π/4 */\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n /* cos(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000);\n var hx = reinterpret(x);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx >= 0x42B17218) {\n if (!sign_) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n var hi: f32, lo: f32;\n var k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n var xx = x * x;\n var c = x - xx * (P1 + xx * P2);\n var y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x42B17180), // 8.8721679688e+01f\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign_ = (u >> 31);\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign_) return -1;\n if (x > o_threshold) {\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt((x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n var u = reinterpret(x);\n var k = 0;\n if (u < 0x00800000 || (u >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (u >> 31) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) return x;\n else if (u == 0x3F800000) return 0;\n u += 0x3F800000 - 0x3F3504F3;\n k += (u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ix = reinterpret(hi);\n ix &= 0xFFFFF000;\n hi = reinterpret(ix);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n var ix = reinterpret(x);\n var c: f32 = 0, f: f32 = 0;\n var k: i32 = 1;\n if (ix < 0x3ED413D0 || (ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = (iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k: i32 = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n var u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n var lo: f32 = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 { // see: musl/src/math/powf.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3F15C000), // 5.84960938e-01f\n dp_l1 = reinterpret(0x35D1CFDC), // 1.56322085e-06f\n two24 = reinterpret(0x4B800000), // 16777216f\n huge = reinterpret(0x7149F2CA), // 1.0e+30f\n tiny = reinterpret(0x0DA24260), // 1.0e-30f\n L1 = reinterpret(0x3F19999A), // 6.0000002384e-01f\n L2 = reinterpret(0x3EDB6DB7), // 4.2857143283e-01f\n L3 = reinterpret(0x3EAAAAAB), // 3.3333334327e-01f\n L4 = reinterpret(0x3E8BA305), // 2.7272811532e-01f\n L5 = reinterpret(0x3E6C3255), // 2.3066075146e-01f\n L6 = reinterpret(0x3E53F142), // 2.0697501302e-01f\n P1 = reinterpret(0x3E2AAAAB), // 1.6666667163e-01f\n P2 = reinterpret(0xBB360B61), // -2.7777778450e-03f\n P3 = reinterpret(0x388AB355), // 6.6137559770e-05f\n P4 = reinterpret(0xB5DDEA0E), // -1.6533901999e-06f\n P5 = reinterpret(0x3331BB4C), // 4.1381369442e-08f\n lg2 = reinterpret(0x3F317218), // 6.9314718246e-01f\n lg2_h = reinterpret(0x3F317200), // 6.93145752e-01f\n lg2_l = reinterpret(0x35BFBE8C), // 1.42860654e-06f\n ovt = reinterpret(0x3338AA3C), // 4.2995665694e-08f\n cp = reinterpret(0x3F76384F), // 9.6179670095e-01\n cp_h = reinterpret(0x3F764000), // 9.6191406250e-01\n cp_l = reinterpret(0xB8F623C6), // -1.1736857402e-04\n ivln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00\n ivln2_h = reinterpret(0x3FB8AA00), // 1.4426879883e+00\n ivln2_l = reinterpret(0x36ECA570), // 7.0526075433e-06\n inv3 = reinterpret(0x3EAAAAAB); // 0.333333333333\n var hx = reinterpret(x);\n var hy = reinterpret(y);\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if (iy == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3F800000) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if (ix > 0x7F800000 || iy > 0x7F800000) return x + y; // NaN if either arg is NaN\n var yisint = 0, j: i32, k: i32;\n if (hx < 0) {\n if (iy >= 0x4B800000) yisint = 2;\n else if (iy >= 0x3F800000) {\n k = (iy >> 23) - 0x7F;\n let ki = 23 - k;\n j = iy >> ki;\n if ((j << ki) == iy) yisint = 2 - (j & 1);\n }\n }\n if (iy == 0x7F800000) { // y is +-inf\n if (ix == 0x3F800000) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix > 0x3F800000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3F800000) return hy >= 0 ? x : 1.0 / x;\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3F000000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n var ax = builtin_abs(x);\n var z: f32;\n if (ix == 0x7F800000 || ix == 0 || ix == 0x3F800000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3F800000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n }\n else if (yisint == 1) z = -z;\n }\n return z;\n }\n var sn = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) sn = -1.0;\n }\n var t1: f32, t2: f32, r: f32, s: f32, t: f32, u: f32, v: f32, w: f32, p_h: f32, p_l: f32;\n var n: i32, is: i32;\n if (iy > 0x4D000000) {\n if (ix < 0x3F7FFFF8) return hy < 0 ? sn * huge * huge : sn * tiny * tiny;\n if (ix > 0x3F800007) return hy > 0 ? sn * huge * huge : sn * tiny * tiny;\n t = ax - 1;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = v - (t1 - u);\n } else {\n let s2: f32, s_h: f32, s_l: f32, t_h: f32, t_l: f32;\n n = 0;\n if (ix < 0x00800000) {\n ax *= two24;\n n -= 24;\n ix = reinterpret(ax);\n }\n n += (ix >> 23) - 0x7F;\n j = ix & 0x007FFFFF;\n ix = j | 0x3F800000;\n if (j <= 0x1CC471) k = 0;\n else if (j < 0x5DB3D7) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00800000;\n }\n ax = reinterpret(ix);\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n s = u * v;\n s_h = s;\n is = reinterpret(s_h);\n s_h = reinterpret(is & 0xFFFFF000);\n is = ((ix >> 1) & 0xFFFFF000) | 0x20000000;\n t_h = reinterpret(is + 0x00400000 + (k << 21));\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = s * s;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + s);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n is = reinterpret(t_h);\n t_h = reinterpret(is & 0xFFFFF000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * s;\n p_h = u + v;\n is = reinterpret(p_h);\n p_h = reinterpret(is & 0xFFFFF000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = (((z_h + z_l) + dp_h) + t);\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n is = reinterpret(y);\n var y1 = reinterpret(is & 0xFFFFF000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n j = reinterpret(z);\n if (j > 0x43000000) {\n return sn * huge * huge;\n } else if (j == 0x43000000) {\n if (p_l + ovt > z - p_h) return sn * huge * huge;\n } else if ((j & 0x7FFFFFFF) > 0x43160000) {\n return sn * tiny * tiny;\n } else if (j == 0xC3160000) {\n if (p_l <= z - p_h) return sn * tiny * tiny;\n }\n var i = j & 0x7FFFFFFF;\n k = (i >> 23) - 0x7F;\n n = 0;\n if (i > 0x3F000000) {\n n = j + (0x00800000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 23) - 0x7F;\n t = reinterpret(n & ~(0x007FFFFF >> k));\n n = ((n & 0x007FFFFF) | 0x00800000) >> (23 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n is = reinterpret(t);\n t = reinterpret(is & 0xFFFF8000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = reinterpret(z);\n j += n << 23;\n if ((j >> 23) <= 0) z = scalbn(z, n);\n else z = reinterpret(j);\n return sn * z;\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f32): f32 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n // @ts-ignore: type\n return ((reinterpret(x) >>> 31) & (x == x));\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const s2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var absx = reinterpret(u);\n var t: f32;\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n t = expm1(absx);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2f(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const t1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const t2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const t3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n /* tan(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* argument reduction */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx;\n return reinterpret(ux);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = (ux >> 31);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // q++;\n }\n return sx ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const s2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7fffffff;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n /* -sin(x + c) is not correct if x+c could be 0: -0 vs +0 */\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n\n switch (n & 3) {\n case 0: {\n sincos_sin = s;\n sincos_cos = c;\n break;\n }\n case 1: {\n sincos_sin = c;\n sincos_cos = -s;\n break;\n }\n case 2: {\n sincos_sin = -s;\n sincos_cos = -c;\n break;\n }\n case 3:\n default: {\n sincos_sin = -c;\n sincos_cos = s;\n break;\n }\n }\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 5) {\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i32): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 6) {\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow32f(x: f32, e: i32): f32 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out: f32 = 1;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n\nexport function ipow64f(x: f64, e: i32): f64 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out = 1.0;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n',memory:'import { memcmp, memmove, memset } from "./util/memory";\nimport { E_NOTIMPLEMENTED } from "./util/error";\n\n/** Memory manager interface. */\nexport namespace memory {\n\n /** Gets the size of the memory in pages. */\n // @ts-ignore: decorator\n @builtin\n export declare function size(): i32;\n\n /** Grows the memory by the given size in pages and returns the previous size in pages. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function grow(pages: i32): i32;\n\n /** Fills a section in memory with the specified byte value. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function fill(dst: usize, c: u8, n: usize): void {\n memset(dst, c, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Copies a section of memory to another. Has move semantics. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function copy(dst: usize, src: usize, n: usize): void {\n memmove(dst, src, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Initializes a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Drops a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function drop(segmentIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Repeats a section of memory at a specific address. */\n // @ts-ignore: decorator\n @unsafe\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void {\n var index: usize = 0;\n var total = srcLength * count;\n while (index < total) {\n memory.copy(dst + index, src, srcLength);\n index += srcLength;\n }\n }\n\n /** Compares a section of memory to another. */\n // @ts-ignore: decorator\n @inline\n export function compare(vl: usize, vr: usize, n: usize): i32 {\n return memcmp(vl, vr, n);\n }\n}\n',number:'import { itoa, dtoa } from "./util/number";\nimport { strtol } from "./util/string";\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const NaN: f64 = 0 / 0;\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const Infinity: f64 = 1 / 0;\n\nexport function isNaN(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value != value;\n}\n\nexport function isFinite(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value - value == 0;\n}\n\n@sealed @unmanaged\nexport abstract class I8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i8 = i8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i8 = i8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i8 {\n return strtol(value, radix);\n }\n\n toString(this: i8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i16 = i16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i16 = i16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i16 {\n return strtol(value, radix);\n }\n\n toString(this: i16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i32 = i32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i32 = i32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i32 {\n return strtol(value, radix);\n }\n\n toString(this: i32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i64 = i64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i64 = i64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i64 {\n return strtol(value, radix);\n }\n\n toString(this: i64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Isize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: isize = isize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: isize = isize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): isize {\n return strtol(value, radix);\n }\n\n toString(this: isize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u8 = u8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u8 = u8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u8 {\n return strtol(value, radix);\n }\n\n toString(this: u8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u16 = u16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u16 = u16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u16 {\n return strtol(value, radix);\n }\n\n toString(this: u16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u32 = u32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u32 = u32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u32 {\n return strtol(value, radix);\n }\n\n toString(this: u32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u64 = u64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u64 = u64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u64 {\n return strtol(value, radix);\n }\n\n toString(this: u64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Usize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: usize = usize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: usize = usize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): usize {\n return strtol(value, radix);\n }\n\n toString(this: usize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Bool {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: bool = bool.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: bool = bool.MAX_VALUE;\n\n toString(this: bool): String {\n // TODO: radix?\n return this ? "true" : "false";\n }\n}\n\nexport { Bool as Boolean };\n\n@sealed @unmanaged\nexport abstract class F32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f32 = f32.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f32 = f32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f32 = f32.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f32 = f32.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f32 = f32.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f32 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f32 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f32 = NaN;\n\n static isNaN(value: f32): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f32): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f32): bool {\n return abs(value) <= f32.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f32): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f32 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f32 {\n return parseFloat(value);\n }\n\n toString(this: f32): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class F64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f64 = f64.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f64 = f64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f64 = f64.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f64 = f64.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f64 = f64.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f64 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f64 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f64 = NaN;\n\n static isNaN(value: f64): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f64): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f64): bool {\n return abs(value) <= f64.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f64): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f64 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f64 {\n return parseFloat(value);\n }\n\n toString(this: f64, radix: i32 = 0): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\nexport { F64 as Number };\n',polyfills:"export function bswap(value: T): T {\n if (isInteger()) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n }\n if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n }\n if (sizeof() == 8) {\n let a = (value >> 8) & 0x00FF00FF00FF00FF;\n let b = (value & 0x00FF00FF00FF00FF) << 8;\n let v = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n }\n assert(false);\n return value;\n}\n\nexport function bswap16(value: T): T {\n if (isInteger() && sizeof() <= 4) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n } else if (sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n }\n assert(false);\n return value;\n}\n",regexp:'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',rt:'import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo";\nimport { E_INDEXOUTOFRANGE } from "./util/error";\nimport { BLOCK, BLOCK_OVERHEAD } from "./rt/common";\nimport { ArrayBufferView } from "./arraybuffer";\n\n// @ts-ignore: decorator\n@builtin\nexport declare const __rtti_base: usize;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_globals(cookie: u32): void;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_members(ref: usize, cookie: u32): void;\n\n// @ts-ignore: decorator\n@unsafe\nexport function __typeinfo(id: u32): TypeinfoFlags {\n var ptr = __rtti_base;\n if (id > load(ptr)) throw new Error(E_INDEXOUTOFRANGE);\n return changetype(ptr + sizeof() + id * offsetof()).flags;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __instanceof(ref: usize, superId: u32): bool { // keyword\n var id = changetype(ref - BLOCK_OVERHEAD).rtId;\n var ptr = __rtti_base;\n if (id <= load(ptr)) {\n do if (id == superId) return true;\n while (id = changetype(ptr + sizeof() + id * offsetof()).base);\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize {\n var array = __alloc(offsetof(), id);\n var bufferSize = length << alignLog2;\n var buffer = __alloc(bufferSize, idof());\n store(array, __retain(buffer), offsetof("data"));\n changetype(array).dataStart = buffer;\n changetype(array).dataLength = bufferSize;\n store(changetype(array), length, offsetof("length_"));\n if (data) memory.copy(buffer, data, bufferSize);\n return array;\n}\n\n// These are provided by the respective implementation, included as another entry file by asc:\n\n// @builtin @unsafe\n// export declare function __alloc(size: usize, id: u32): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __realloc(ref: usize, size: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __free(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __retain(ref: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __release(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __collect(): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __visit(ref: usize, cookie: u32): void;\n',"rt/common":"// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n\n// ╒════════════════ Common block layout (32-bit) ═════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime size │ -4\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ ... │ ref\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize; // WASM64 needs adaption\n /** Garbage collector info. */\n gcInfo: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD = (offsetof() + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n","rt/index-full":'export { __alloc } from "rt/tlsf";\nexport { __retain, __release, __collect } from "rt/pure";\nexport { __rtti_base } from "rt";\n',"rt/index-half":'import "rt/index-full";\n',"rt/index-none":'import "rt/index-stub";\n',"rt/index-stub":'export { __alloc, __retain, __release, __collect } from "rt/stub";\nexport { __rtti_base } from "rt";\n',"rt/pure":'import { DEBUG, BLOCK_OVERHEAD } from "rt/common";\nimport { Block, freeBlock, ROOT } from "rt/tlsf";\nimport { TypeinfoFlags } from "shared/typeinfo";\nimport { onincrement, ondecrement, onfree, onalloc } from "./rtrace";\n\n/////////////////////////// A Pure Reference Counting Garbage Collector ///////////////////////////\n// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf\n\n// ╒══════════════════════ GC Info structure ══════════════════════╕\n// │ 3 2 1 │\n// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│\n// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │B│color│ refCount │\n// └─┴─────┴───────────────────────────────────────────────────────┘\n// B: buffered\n\n// @ts-ignore: decorator\n@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1);\n// @ts-ignore: decorator\n@inline const COLOR_BITS = 3;\n// @ts-ignore: decorator\n@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS;\n// @ts-ignore: decorator\n@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1;\n\n// ╒════════╤═══════════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├────────┼──────────────────────────────────────────────────────┤\n// │ BLACK │ In use or free │\n// │ GRAY │ Possible member of cycle │\n// │ WHITE │ Member of garbage cycle │\n// │ PURPLE │ Possible root of cycle │\n// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │\n// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │\n// └────────┴──────────────────────────────────────────────────────┘\n// Acyclic detection has been decoupled, hence no GREEN.\n\n// @ts-ignore: decorator\n@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_RED: u32 = 4 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT;\n\n// @ts-ignore: decorator\n@inline const VISIT_DECREMENT = 1; // guard 0\n// @ts-ignore: decorator\n@inline const VISIT_MARKGRAY = 2;\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 3;\n// @ts-ignore: decorator\n@inline const VISIT_SCANBLACK = 4;\n// @ts-ignore: decorator\n@inline const VISIT_COLLECTWHITE = 5;\n\n// @ts-ignore: decorator\n@global @unsafe\nfunction __visit(ref: usize, cookie: i32): void {\n if (ref < __heap_base) return;\n var s = changetype(ref - BLOCK_OVERHEAD);\n switch (cookie) {\n case VISIT_DECREMENT: {\n decrement(s);\n break;\n }\n case VISIT_MARKGRAY: {\n if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0);\n s.gcInfo = s.gcInfo - 1;\n markGray(s);\n break;\n }\n case VISIT_SCAN: {\n scan(s);\n break;\n }\n case VISIT_SCANBLACK: {\n let info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if ((info & COLOR_MASK) != COLOR_BLACK) {\n scanBlack(s);\n }\n break;\n }\n case VISIT_COLLECTWHITE: {\n collectWhite(s);\n break;\n }\n default: if (DEBUG) assert(false);\n }\n}\n\n/** Increments the reference count of the specified block by one.*/\nfunction increment(s: Block): void {\n var info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if (isDefined(ASC_RTRACE)) onincrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n}\n\n/** Decrements the reference count of the specified block by one, possibly freeing it. */\nfunction decrement(s: Block): void {\n var info = s.gcInfo;\n var rc = info & REFCOUNT_MASK;\n if (isDefined(ASC_RTRACE)) ondecrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n if (rc == 1) {\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT);\n if (!(info & BUFFERED_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0;\n }\n } else {\n if (DEBUG) assert(rc > 0);\n if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) {\n s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1);\n if (!(info & BUFFERED_MASK)) {\n appendRoot(s);\n }\n } else {\n s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1);\n }\n }\n}\n\n/** Buffer of possible roots. */\n// @ts-ignore: decorator\n@lazy var ROOTS: usize;\n/** Current absolute offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var CUR: usize = 0;\n/** Current absolute end offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var END: usize = 0;\n\n/** Appends a block to possible roots. */\nfunction appendRoot(s: Block): void {\n var cur = CUR;\n if (cur >= END) {\n growRoots(); // TBD: either that or pick a default and force collection on overflow\n cur = CUR;\n }\n store(cur, s);\n CUR = cur + sizeof();\n}\n\n/** Grows the roots buffer if it ran full. */\nfunction growRoots(): void {\n var oldRoots = ROOTS;\n var oldSize = CUR - oldRoots;\n var newSize = max(oldSize * 2, 64 << alignof());\n var newRoots = __alloc(newSize, 0);\n if (isDefined(ASC_RTRACE)) onfree(changetype(newRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n memory.copy(newRoots, oldRoots, oldSize);\n if (oldRoots) {\n if (isDefined(ASC_RTRACE)) onalloc(changetype(oldRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n __free(oldRoots);\n }\n ROOTS = newRoots;\n CUR = newRoots + oldSize;\n END = newRoots + newSize;\n}\n\n/** Collects cyclic garbage. */\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n\n // markRoots\n var roots = ROOTS;\n var cur = roots;\n for (let pos = cur, end = CUR; pos < end; pos += sizeof()) {\n let s = load(pos);\n let info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) {\n markGray(s);\n store(cur, s);\n cur += sizeof();\n } else {\n if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = info & ~BUFFERED_MASK;\n }\n }\n }\n CUR = cur;\n\n // scanRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n scan(load(pos));\n }\n\n // collectRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n let s = load(pos);\n s.gcInfo = s.gcInfo & ~BUFFERED_MASK;\n collectWhite(s);\n }\n CUR = roots;\n}\n\n/** Marks a block as gray (possible member of cycle) during the collection phase. */\nfunction markGray(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) != COLOR_GRAY) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY);\n }\n}\n\n/** Scans a block during the collection phase, determining whether it is garbage or not. */\nfunction scan(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_GRAY) {\n if ((info & REFCOUNT_MASK) > 0) {\n scanBlack(s);\n } else {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN);\n }\n }\n}\n\n/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */\nfunction scanBlack(s: Block): void {\n s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK);\n}\n\n/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */\nfunction collectWhite(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE);\n freeBlock(ROOT, s);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n if (ref > __heap_base) increment(changetype(ref - BLOCK_OVERHEAD));\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n if (ref > __heap_base) decrement(changetype(ref - BLOCK_OVERHEAD));\n}\n',"rt/rtrace":'import { BLOCK } from "./common";\n\nexport declare function onalloc(s: BLOCK): void;\nexport declare function onincrement(s: BLOCK): void;\nexport declare function ondecrement(s: BLOCK): void;\nexport declare function onfree(s: BLOCK): void;\n',"rt/stub":'import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common";\n\n// @ts-ignore: decorator\n@lazy\nvar startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@lazy\nvar offset: usize = startOffset;\n\nfunction maybeGrowMemory(newOffset: usize): void {\n // assumes newOffset is aligned\n var pagesBefore = memory.size();\n var maxOffset = pagesBefore << 16;\n if (newOffset > maxOffset) {\n let pagesNeeded = ((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16;\n let pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory\n }\n }\n offset = newOffset;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __alloc(size: usize, id: u32): usize {\n if (size > BLOCK_MAXSIZE) unreachable();\n var ptr = offset + BLOCK_OVERHEAD;\n var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE);\n maybeGrowMemory(ptr + actualSize);\n var block = changetype(ptr - BLOCK_OVERHEAD);\n block.mmInfo = actualSize;\n if (DEBUG) block.gcInfo = -1;\n block.rtId = id;\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __realloc(ptr: usize, size: usize): usize {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n var actualSize = block.mmInfo;\n if (DEBUG) assert(block.gcInfo == -1);\n if (size > actualSize) {\n if (ptr + actualSize == offset) { // last block: grow\n if (size > BLOCK_MAXSIZE) unreachable();\n actualSize = (size + AL_MASK) & ~AL_MASK;\n maybeGrowMemory(ptr + actualSize);\n block.mmInfo = actualSize;\n } else { // copy to new block at least double the size\n actualSize = max((size + AL_MASK) & ~AL_MASK, actualSize << 1);\n let newPtr = __alloc(actualSize, block.rtId);\n memory.copy(newPtr, ptr, block.rtSize);\n block = changetype((ptr = newPtr) - BLOCK_OVERHEAD);\n }\n } else if (ptr + actualSize == offset) { // last block: shrink\n actualSize = (size + AL_MASK) & ~AL_MASK;\n offset = ptr + actualSize;\n block.mmInfo = actualSize;\n }\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __free(ptr: usize): void {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n if (DEBUG) assert(block.gcInfo == -1);\n if (ptr + block.mmInfo == offset) { // last block: discard\n offset = changetype(block);\n }\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nfunction __reset(): void { // special\n offset = startOffset;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ref: usize, cookie: u32): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n}\n',"rt/tlsf":"import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"rt/common\";\nimport { onfree, onalloc } from \"./rtrace\";\nimport { REFCOUNT_MASK } from \"./pure\";\n\n/////////////////////// The TLSF (Two-Level Segregate Fit) memory allocator ///////////////////////\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: usize = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: usize = (SL_BITS + AL_BITS);\n// @ts-ignore: decorator\n@inline const SB_SIZE: usize = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐\n// │ size │0│L│F│ ◄─┐ info\n// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │\n// │ │ │\n// │ ... additional runtime overhead ... │ │\n// │ │ │\n// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ = 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n let newSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = (blockInfo & TAGS_MASK) | newSize;\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n let newSize = (leftInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, left);\n left.mmInfo = blockInfo = (leftInfo & TAGS_MASK) | newSize;\n block = left;\n // 'back' is set below\n }\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) {\n assert(\n start <= end && // must be valid\n !(start & AL_MASK) && // must be aligned\n !(end & AL_MASK) // must be aligned\n );\n }\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n if (start - BLOCK_OVERHEAD == changetype(tail)) {\n start -= BLOCK_OVERHEAD;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - (BLOCK_OVERHEAD << 1);\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + size - BLOCK_OVERHEAD);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size >= BLOCK_MAXSIZE) throw new Error(\"allocation too large\");\n return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size\n}\n\n/** Initilizes the root structure. */\nexport function initializeRoot(): void {\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n addMemory(root, (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK, memory.size() << 16);\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = searchBlock(root, payloadSize);\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n block.gcInfo = 0; // RC=0\n // block.rtId = 0; // set by the caller (__alloc)\n block.rtSize = size;\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n if (DEBUG) {\n assert(\n !(blockInfo & FREE) && // must be used\n !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK\n );\n }\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= (blockInfo & ~TAGS_MASK)) {\n prepareBlock(root, block, payloadSize);\n block.rtSize = size;\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which\n // is immediately split though. does this trigger any assertions / issues?\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n block.rtSize = size;\n prepareBlock(root, block, payloadSize);\n return block;\n }\n }\n\n // otherwise move the block\n var newBlock = allocateBlock(root, size);\n newBlock.rtId = block.rtId;\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size);\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n assert(!(blockInfo & FREE)); // must be used (user might call through to this)\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize, id: u32): usize {\n var root = ROOT;\n if (!root) {\n initializeRoot();\n root = ROOT;\n }\n var block = allocateBlock(root, size);\n block.rtId = id;\n return changetype(block) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ref: usize, size: usize): usize {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n return changetype(reallocateBlock(ROOT, changetype(ref - BLOCK_OVERHEAD), size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ref: usize): void {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n freeBlock(ROOT, changetype(ref - BLOCK_OVERHEAD));\n}\n",set:'/// \n\nimport { HASH } from "./util/hash";\n\n// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a set entry. */\n@unmanaged class SetEntry {\n key: K;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K is <= 32-bits\n const align = (sizeof() > sizeof() ? sizeof() : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Set {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // SetEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() { this.clear(); }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: T, hashCode: u32): SetEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n @operator("[]")\n has(key: T): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n add(key: T): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (!entry) {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n entry = changetype>(changetype(this.entries) + this.entriesOffset++ * ENTRY_SIZE());\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n @operator("[]=")\n private __set(key: T, value: bool): void {\n if (value) this.add(key);\n else this.delete(key);\n }\n\n delete(key: T): bool {\n var entry = this.find(key, HASH(key)); // unmanaged!\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key)); // exact \'key\'\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr); // unmanaged!\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr); // unmanaged!\n newEntry.key = oldEntry.key;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n values(): T[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.key);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Set]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',"shared/feature":"// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","shared/target":"// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","shared/typeinfo":"// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n",string:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { compareImpl, strtol, strtod, isSpace } from "./util/string";\nimport { E_INVALIDLENGTH } from "./util/error";\nimport { ArrayBufferView } from "./arraybuffer";\nimport { idof } from "./builtins";\n\n@sealed export abstract class String {\n\n @lazy static readonly MAX_LENGTH: i32 = BLOCK_MAXSIZE >>> alignof();\n\n static fromCharCode(unit: i32, surr: i32 = -1): string {\n var hasSur = surr > 0;\n var out = __alloc(2 << i32(hasSur), idof());\n store(out, unit);\n if (hasSur) store(out, surr, 2);\n return changetype(out); // retains\n }\n\n static fromCodePoint(code: i32): string {\n assert(code <= 0x10FFFF);\n var hasSur = code > 0xFFFF;\n var out = __alloc(2 << i32(hasSur), idof());\n if (!hasSur) {\n store(out, code);\n } else {\n code -= 0x10000;\n let hi: u32 = (code >>> 10) + 0xD800;\n let lo: u32 = (code & 0x3FF) + 0xDC00;\n store(out, (hi << 16) | lo);\n }\n return changetype(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1;\n }\n\n @operator("[]") charAt(pos: i32): String {\n if (pos >= this.length) return changetype("");\n var out = __alloc(2, idof());\n store(out, load(changetype(this) + (pos << 1)));\n return changetype(out); // retains\n }\n\n charCodeAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (NaN)\n return load(changetype(this) + (pos << 1));\n }\n\n codePointAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (undefined)\n var first = load(changetype(this) + (pos << 1));\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) return first;\n var second = load(changetype(this) + ((pos + 1) << 1));\n if (second < 0xDC00 || second > 0xDFFF) return first;\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+") private static __concat(left: String, right: String): String {\n return select(left, changetype("null"), left !== null).concat(right);\n }\n\n concat(other: String): String {\n if (other === null) other = changetype("null");\n var thisSize: isize = this.length << 1;\n var otherSize: isize = other.length << 1;\n var outSize: usize = thisSize + otherSize;\n if (outSize == 0) return changetype("");\n var out = changetype(__alloc(outSize, idof())); // retains\n memory.copy(changetype(out), changetype(this), thisSize);\n memory.copy(changetype(out) + thisSize, changetype(other), otherSize);\n return out;\n }\n\n endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {\n if (search === null) return false;\n end = min(max(end, 0), this.length);\n var searchLength = search.length;\n var searchStart = end - searchLength;\n if (searchStart < 0) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n @operator("==") private static __eq(left: String | null, right: String | null): bool {\n if (left === right) return true;\n if (left === null || right === null) return false;\n var leftLength = left.length;\n if (leftLength != right.length) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(left, 0, right, 0, leftLength);\n }\n\n @operator.prefix("!")\n private static __not(str: String | null): bool {\n return str === null || !str.length;\n }\n\n @operator("!=")\n private static __ne(left: String | null, right: String | null): bool {\n return !this.__eq(left, right);\n }\n\n @operator(">") private static __gt(left: String | null, right: String | null): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!leftLength) return false;\n if (!rightLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0;\n }\n\n @operator(">=") private static __gte(left: String, right: String): bool {\n return !this.__lt(left, right);\n }\n\n @operator("<") private static __lt(left: String, right: String): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!rightLength) return false;\n if (!leftLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0;\n }\n\n @operator("<=") private static __lte(left: String, right: String): bool {\n return !this.__gt(left, right);\n }\n\n includes(search: String, start: i32 = 0): bool {\n return this.indexOf(search, start) != -1;\n }\n\n indexOf(search: String, start: i32 = 0): i32 {\n var searchLen = search.length;\n if (!searchLen) return 0;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len);\n for (len -= searchLen; searchStart <= len; ++searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n lastIndexOf(search: String, start: i32 = i32.MAX_VALUE): i32 {\n var searchLen = search.length;\n if (!searchLen) return this.length;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len - searchLen);\n for (; searchStart >= 0; --searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n startsWith(search: String, start: i32 = 0): bool {\n if (search === null) search = changetype("null");\n var len = this.length;\n var searchStart = min(max(start, 0), len);\n var searchLength = search.length;\n if (searchLength + searchStart > len) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) intStart = max(size + intStart, 0);\n var resultLength = min(max(end, 0), size - intStart);\n if (resultLength <= 0) return changetype("");\n var out = __alloc(resultLength << 1, idof());\n memory.copy(out, changetype(this) + intStart, resultLength);\n return changetype(out); // retains\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len: isize = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var fromPos = min(finalStart, finalEnd) << 1;\n var toPos = max(finalStart, finalEnd) << 1;\n len = toPos - fromPos;\n if (!len) return changetype("");\n if (!fromPos && toPos == this.length << 1) return this;\n var out = __alloc(len, idof());\n memory.copy(out, changetype(this) + fromPos, len);\n return changetype(out); // retains\n }\n\n trim(): String {\n var length = this.length;\n var size: usize = length << 1;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2; size -= 2;\n }\n if (!size) return changetype("");\n if (!offset && size == length << 1) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n @inline\n trimLeft(): String {\n return this.trimStart();\n }\n\n @inline\n trimRight(): String {\n return this.trimEnd();\n }\n\n trimStart(): String {\n var size = this.length << 1;\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2;\n }\n if (!offset) return this;\n size -= offset;\n if (!size) return changetype("");\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n trimEnd(): String {\n var originalSize = this.length << 1;\n var size = originalSize;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n if (!size) return changetype("");\n if (size == originalSize) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n return changetype(out); // retains\n }\n\n padStart(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var prependSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n if (prependSize > padSize) {\n let repeatCount = (prependSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = prependSize - restBase;\n memory.repeat(out, changetype(pad), padSize, repeatCount);\n memory.copy(out + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out, changetype(pad), prependSize);\n }\n memory.copy(out + prependSize, changetype(this), thisSize);\n return changetype(out); // retains\n }\n\n padEnd(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var appendSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n memory.copy(out, changetype(this), thisSize);\n if (appendSize > padSize) {\n let repeatCount = (appendSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = appendSize - restBase;\n memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount);\n memory.copy(out + thisSize + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out + thisSize, changetype(pad), appendSize);\n }\n return changetype(out); // retains\n }\n\n repeat(count: i32 = 0): String {\n var length = this.length;\n\n // Most browsers can\'t handle strings 1 << 28 chars or longer\n if (count < 0 || length * count > (1 << 28)) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n\n if (count == 0 || !length) return changetype("");\n if (count == 1) return this;\n var out = __alloc((length * count) << 1, idof());\n memory.repeat(out, changetype(this), length << 1, count);\n return changetype(out); // retains\n }\n\n replace(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var index: isize = this.indexOf(search);\n if (~index) {\n let rlen: usize = replacement.length;\n len -= slen;\n let olen = len + rlen;\n if (olen) {\n let out = __alloc(olen << 1, idof());\n memory.copy(out, changetype(this), index << 1);\n memory.copy(\n out + (index << 1),\n changetype(replacement),\n rlen << 1\n );\n memory.copy(\n out + ((index + rlen) << 1),\n changetype(this) + ((index + slen) << 1),\n (len - index) << 1\n );\n return changetype(out);\n }\n }\n return this;\n }\n\n replaceAll(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var rlen: usize = replacement.length;\n if (!slen) {\n if (!rlen) return this;\n // Special case: \'abc\'.replaceAll(\'\', \'-\') -> \'-a-b-c-\'\n let out = __alloc((len + (len + 1) * rlen) << 1, idof());\n memory.copy(out, changetype(replacement), rlen << 1);\n let offset = rlen;\n for (let i: usize = 0; i < len; ++i) {\n store(\n changetype(out) + (offset++ << 1),\n load(changetype(this) + (i << 1))\n );\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n }\n return changetype(out);\n }\n var prev: isize = 0, next: isize = 0;\n if (slen == rlen) {\n // Fast path when search and replacement have same length\n let size = len << 1;\n let out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n while (~(next = this.indexOf(search, prev))) {\n memory.copy(out + (next << 1), changetype(replacement), rlen << 1);\n prev = next + slen;\n }\n return changetype(out);\n }\n var out: usize = 0, offset: usize = 0, resLen = len;\n while (~(next = this.indexOf(search, prev))) {\n if (!out) out = __alloc(len << 1, idof());\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let chunk = next - prev;\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n chunk << 1\n );\n offset += chunk;\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n prev = next + slen;\n }\n if (offset) {\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let rest = len - prev;\n if (rest) {\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n rest << 1\n );\n }\n rest += offset;\n if (resLen > rest) out = __realloc(out, rest << 1);\n return changetype(out);\n }\n return this;\n }\n\n slice(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len = this.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end, len);\n len = end - start;\n if (len <= 0) return changetype("");\n var out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n return changetype(out); // retains\n }\n\n split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {\n if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n if (separator === null) return [this];\n var length: isize = this.length;\n var sepLen: isize = separator.length;\n if (limit < 0) limit = i32.MAX_VALUE;\n if (!sepLen) {\n if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n // split by chars\n length = min(length, limit);\n let result = __allocArray(length, alignof(), idof>());\n let resultStart = changetype(result).dataStart;\n for (let i: isize = 0; i < length; ++i) {\n let charStr = __alloc(2, idof());\n store(charStr, load(changetype(this) + (i << 1)));\n store(resultStart + (i << alignof()), charStr); // result[i] = charStr\n if (isManaged()) __retain(charStr);\n }\n return changetype>(result); // retains\n } else if (!length) {\n let result = __allocArray(1, alignof(), idof>());\n store(changetype(result).dataStart, changetype("")); // static ""\n return changetype>(result); // retains\n }\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n var end = 0, start = 0, i = 0;\n while (~(end = this.indexOf(separator, start))) {\n let len = end - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out));\n } else {\n result.push(changetype(""));\n }\n if (++i == limit) return changetype>(result); // retains\n start = end + sepLen;\n }\n if (!start) { // also means: loop above didn\'t do anything\n result.push(this);\n return changetype>(result); // retains\n }\n var len = length - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out)); // retains\n } else {\n result.push(changetype("")); // static ""\n }\n return changetype>(result); // retains\n // releases result\n }\n\n toString(): String {\n return this;\n }\n}\n\n// @ts-ignore: nolib\nexport type string = String;\n\nexport function parseInt(str: string, radix: i32 = 0): f64 {\n return strtol(str, radix);\n}\n\nexport function parseFloat(str: string): f64 {\n return strtod(str);\n}\n\n// Encoding helpers\nexport namespace String {\n\n export namespace UTF8 {\n\n export function byteLength(str: string, nullTerminated: bool = false): i32 {\n var strOff = changetype(str);\n var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var bufLen = nullTerminated ? 1 : 0;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n bufLen += 1; strOff += 2;\n } else if (c1 < 2048) {\n bufLen += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n if ((load(strOff, 2) & 0xFC00) == 0xDC00) {\n strOff += 4; bufLen += 4;\n continue;\n }\n }\n strOff += 2; bufLen += 3;\n }\n }\n return bufLen;\n }\n\n export function encode(str: string, nullTerminated: bool = false): ArrayBuffer {\n var strOff = changetype(str);\n var strEnd = changetype(str) + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(UTF8.byteLength(str, nullTerminated), idof());\n var bufOff = buf;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n store(bufOff, c1);\n bufOff += 1; strOff += 2;\n } else if (c1 < 2048) {\n store(bufOff, c1 >> 6 | 192);\n store(bufOff, c1 & 63 | 128, 1);\n bufOff += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n let c2 = load(strOff, 2);\n if ((c2 & 0xFC00) == 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n store(bufOff, c1 >> 18 | 240);\n store(bufOff, c1 >> 12 & 63 | 128, 1);\n store(bufOff, c1 >> 6 & 63 | 128, 2);\n store(bufOff, c1 & 63 | 128, 3);\n strOff += 4; bufOff += 4;\n continue;\n }\n }\n store(bufOff, c1 >> 12 | 224);\n store(bufOff, c1 >> 6 & 63 | 128, 1);\n store(bufOff, c1 & 63 | 128, 2);\n strOff += 2; bufOff += 3;\n }\n }\n if (nullTerminated) {\n assert(strOff <= strEnd);\n buf = __realloc(buf, bufOff - buf + 1);\n store(bufOff, 0);\n } else {\n assert(strOff == strEnd);\n }\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer, nullTerminated: bool = false): string {\n return decodeUnsafe(changetype(buf), buf.byteLength, nullTerminated);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated: bool = false): string {\n var bufOff = buf;\n var bufEnd = buf + len;\n assert(bufEnd >= bufOff); // guard wraparound\n var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte\n var strOff = str;\n while (bufOff < bufEnd) {\n let cp = load(bufOff++);\n if (cp < 128) {\n if (nullTerminated && !cp) break;\n store(strOff, cp);\n strOff += 2;\n } else if (cp > 191 && cp < 224) {\n if (bufEnd - bufOff < 1) break;\n store(strOff, (cp & 31) << 6 | load(bufOff++) & 63);\n strOff += 2;\n } else if (cp > 239 && cp < 365) {\n if (bufEnd - bufOff < 3) break;\n cp = (\n (cp & 7) << 18 |\n (load(bufOff) & 63) << 12 |\n (load(bufOff, 1) & 63) << 6 |\n load(bufOff, 2) & 63\n ) - 0x10000;\n bufOff += 3;\n store(strOff, 0xD800 + (cp >> 10));\n store(strOff, 0xDC00 + (cp & 1023), 2);\n strOff += 4;\n } else {\n if (bufEnd - bufOff < 2) break;\n store(strOff,\n (cp & 15) << 12 |\n (load(bufOff) & 63) << 6 |\n load(bufOff, 1) & 63\n );\n bufOff += 2; strOff += 2;\n }\n }\n return changetype(__realloc(str, strOff - str)); // retains\n }\n }\n\n export namespace UTF16 {\n\n export function byteLength(str: string): i32 {\n return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n }\n\n export function encode(str: string): ArrayBuffer {\n var size = changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(size, idof());\n memory.copy(buf, changetype(str), size);\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer): string {\n return decodeUnsafe(changetype(buf), buf.byteLength);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize): string {\n var str = __alloc(len &= ~1, idof());\n memory.copy(str, buf, len);\n return changetype(str); // retains\n }\n }\n}\n',symbol:'import { Map } from "./map";\n\n// @ts-ignore: decorator\n@lazy\nvar stringToId: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar idToString: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar nextId: usize = 12; // Symbol.unscopables + 1\n\n@unmanaged @sealed abstract class _Symbol {\n\n // TODO: all of the following default symbols are unused currently yet add to\n // binary size if #toString becomes compiled. Ultimately we\'ll most likely want\n // to remove the unsupported ones and only keep what\'s actually supported.\n\n // @ts-ignore: decorator\n @lazy\n static readonly hasInstance: symbol = changetype(1);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isConcatSpreadable: symbol = changetype(2);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isRegExp: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly iterator: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly match: symbol = changetype(4);\n\n // @ts-ignore: decorator\n @lazy\n static readonly replace: symbol = changetype(5);\n\n // @ts-ignore: decorator\n @lazy\n static readonly search: symbol = changetype(6);\n\n // @ts-ignore: decorator\n @lazy\n static readonly species: symbol = changetype(7);\n\n // @ts-ignore: decorator\n @lazy\n static readonly split: symbol = changetype(8);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toPrimitive: symbol = changetype(9);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toStringTag: symbol = changetype(10);\n\n // @ts-ignore: decorator\n @lazy\n static readonly unscopables: symbol = changetype(11);\n\n static for(key: string): symbol {\n if (!stringToId) { stringToId = new Map(); idToString = new Map(); }\n else if (stringToId.has(key)) return changetype(stringToId.get(key));\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n stringToId.set(key, id);\n idToString.set(id, key);\n return changetype(id);\n }\n\n static keyFor(sym: symbol): string | null {\n return idToString !== null && idToString.has(changetype(sym))\n ? idToString.get(changetype(sym))\n : null;\n }\n\n toString(): string {\n var id = changetype(this);\n var str = "";\n switch (id) {\n case 1: { str = "hasInstance"; break; }\n case 2: { str = "isConcatSpreadable"; break; }\n case 3: { str = "isRegExp"; break; }\n case 4: { str = "match"; break; }\n case 5: { str = "replace"; break; }\n case 6: { str = "search"; break; }\n case 7: { str = "species"; break; }\n case 8: { str = "split"; break; }\n case 9: { str = "toPrimitive"; break; }\n case 10: { str = "toStringTag"; break; }\n case 11: { str = "unscopables"; break; }\n default: {\n if (idToString !== null && idToString.has(id)) str = idToString.get(id);\n break;\n }\n }\n return "Symbol(" + str + ")";\n }\n}\n\nexport function Symbol(description: string | null = null): symbol {\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n return changetype(id);\n}\n\nexport type Symbol = _Symbol;\n\n// @ts-ignore: nolib\nexport type symbol = _Symbol;\n',table:'import { E_NOTIMPLEMENTED } from "./util/error";\n\nexport namespace table {\n\n export function copy(dst: u32, src: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function drop(elementIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n}\n',typedarray:'import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\nimport { idof } from "./builtins";\nimport { ArrayBufferView } from "./arraybuffer";\n\nexport class Int8Array extends ArrayBufferView {\n [key: number]: i8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): i8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: i8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8Array extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8ClampedArray extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return FILL(this, value, start, end);\n }\n\n sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray {\n return SORT(this, fn);\n }\n\n subarray(start: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray {\n return SUBARRAY(this, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int16Array extends ArrayBufferView {\n [key: number]: i16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint16Array extends ArrayBufferView {\n [key: number]: u16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int32Array extends ArrayBufferView {\n [key: number]: i32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint32Array extends ArrayBufferView {\n [key: number]: u32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int64Array extends ArrayBufferView {\n [key: number]: i64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint64Array extends ArrayBufferView {\n [key: number]: u64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float32Array extends ArrayBufferView {\n [key: number]: f32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float64Array extends ArrayBufferView {\n [key: number]: f64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILL(\n array: TArray,\n value: native,\n start: i32,\n end: i32\n): TArray {\n var dataStart = array.dataStart;\n var length = array.length;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (sizeof() == 1) {\n if (start < end) memory.fill(dataStart + start, value, (end - start));\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SORT(\n array: TArray,\n comparator: (a: T, b: T) => i32\n): TArray {\n var length = array.length;\n if (length <= 1) return array;\n var base = array.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b\n store(base, a); // arr[0] = a\n }\n return array;\n }\n SORT_IMPL(base, length, comparator);\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SUBARRAY(\n array: TArray,\n begin: i32,\n end: i32\n): TArray {\n var len = array.length;\n begin = begin < 0 ? max(len + begin, 0) : min(begin, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n end = max(end, begin);\n var out = changetype(__alloc(offsetof(), idof())); // retains\n out.data = array.data; // retains\n out.dataStart = array.dataStart + (begin << alignof());\n out.dataLength = (end - begin) << alignof();\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE_RIGHT(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = array.length - 1; i >= 0; i--) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction MAP(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => T,\n): TArray {\n var length = array.length;\n var dataStart = array.dataStart;\n var out = instantiate(length);\n var outDataStart = out.dataStart;\n for (let i = 0; i < length; i++) {\n store(\n outDataStart + (i << alignof()),\n fn(load(dataStart + (i << alignof())), i, array)\n );\n }\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FIND_INDEX(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): i32 {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return i;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INCLUDES(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): bool {\n return INDEX_OF(array, searchElement, fromIndex) >= 0;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0 || index >= length) return -1;\n if (index < 0) index = max(length + index, 0);\n var dataStart = array.dataStart;\n while (index < length) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n ++index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction LAST_INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0) return -1;\n if (index < 0) index = length + index; // no need to clamp\n else if (index >= length) index = length - 1;\n var dataStart = array.dataStart;\n while (index >= 0) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n --index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SOME(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return true;\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction EVERY(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) continue;\n return false;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FOREACH(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => void,\n): void {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n fn(load(dataStart + (i << alignof())), i, array);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REVERSE(array: TArray): TArray {\n var dataStart = array.dataStart;\n for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) {\n let frontPtr = dataStart + (front << alignof());\n let backPtr = dataStart + (back << alignof());\n let temp = load(frontPtr);\n store(frontPtr, load(backPtr));\n store(backPtr, temp);\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction WRAP(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): TArray {\n var bufferByteLength = buffer.byteLength;\n if (byteOffset >= bufferByteLength) {\n throw new RangeError(E_INDEXOUTOFRANGE);\n }\n var byteLength: i32;\n if (length < 0) {\n if (length == -1) {\n const mask = (1 << alignof() - 1);\n if (buffer.byteLength & mask) {\n throw new RangeError(E_INVALIDLENGTH);\n } else {\n byteLength = buffer.byteLength;\n }\n } else {\n throw new RangeError(E_INVALIDLENGTH);\n }\n } else {\n byteLength = length << alignof();\n }\n if (byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n var out = changetype(__alloc(offsetof(), idof()));\n out.data = buffer;\n out.dataLength = byteLength;\n out.dataStart = changetype(buffer) + byteOffset;\n return out;\n}\n',"util/error":'// Common error messages for use accross the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = "Index out of range";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = "Invalid length";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = "Array is empty";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = "Element type must be nullable if array is holey";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = "Not implemented";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = "Key does not exist";\n',"util/hash":"// @ts-ignore: decorator\n@inline\nexport function HASH(key: T): u32 {\n if (isString()) {\n return hashStr(changetype(key));\n } else if (isReference()) {\n if (sizeof() == 4) return hash32(changetype(key));\n if (sizeof() == 8) return hash64(changetype(key));\n } else if (isFloat()) {\n if (sizeof() == 4) return hash32(reinterpret(f32(key)));\n if (sizeof() == 8) return hash64(reinterpret(f64(key)));\n } else {\n if (sizeof() == 1) return hash8 (u32(key));\n if (sizeof() == 2) return hash16(u32(key));\n if (sizeof() == 4) return hash32(u32(key));\n if (sizeof() == 8) return hash64(u64(key));\n }\n return unreachable();\n}\n\n// FNV-1a 32-bit as a starting point, see: http://isthe.com/chongo/tech/comp/fnv/\n\n// @ts-ignore: decorator\n@inline\nconst FNV_OFFSET: u32 = 2166136261;\n\n// @ts-ignore: decorator\n@inline\nconst FNV_PRIME: u32 = 16777619;\n\nfunction hash8(key: u32): u32 {\n return (FNV_OFFSET ^ key) * FNV_PRIME;\n}\n\nfunction hash16(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 8 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash32(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash64(key: u64): u32 {\n var l = key;\n var h = (key >>> 32);\n var v = FNV_OFFSET;\n v = (v ^ ( l & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( l >> 24 )) * FNV_PRIME;\n v = (v ^ ( h & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( h >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hashStr(key: string): u32 {\n var v = FNV_OFFSET;\n if (key !== null) {\n for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) {\n v = (v ^ load(changetype(key) + i)) * FNV_PRIME;\n }\n }\n return v;\n}\n","util/memory":"export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n let w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 2: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 3: {\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c\n if (dest === src) return;\n if (ASC_SHRINK_LEVEL < 1) {\n if (src + n <= dest || dest + n <= src) {\n memcpy(dest, src, n);\n return;\n }\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, c);\n --n;\n }\n } else {\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n let k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n let c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n let c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c\n if (vl == vr) return 0;\n while (n != 0 && load(vl) == load(vr)) {\n n--; vl++; vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","util/number":'/// \n\nimport { idof } from "../builtins";\nimport { CharCode } from "./string";\nimport { ArrayBufferView } from "../arraybuffer";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline\nconst POWERS10: u32[] = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\n "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\n "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\n "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\n "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\n "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\n "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\n "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\n "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\n "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"\n*/\n// @ts-ignore: decorator\n@lazy @inline\nconst DIGITS: u32[] = [\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n];\n\n// @ts-ignore: decorator\n@lazy @inline\nconst EXP_POWERS: i16[] = [\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n];\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline\nconst FRC_POWERS: u64[] = [\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n];\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return select(1, 2, value < 10);\n } else {\n let m = select(4, 5, value < 10000);\n return select(3, m, value < 1000);\n }\n } else {\n if (value < 10000000) {\n return select(6, 7, value < 1000000);\n } else {\n let m = select(9, 10, value < 1000000000);\n return select(8, m, value < 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n let m = select(11, 12, value < 100000000000);\n return select(10, m, value < 10000000000);\n } else {\n let m = select(14, 15, value < 100000000000000);\n return select(13, m, value < 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return select(16, 17, value < 10000000000000000);\n } else {\n let m = select(19, 20, value < 10000000000000000000);\n return select(18, m, value < 1000000000000000000);\n }\n }\n}\n\nfunction utoa32_lut(buffer: usize, num: u32, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(lut + (d1 << alignof()));\n let digits2 = load(lut + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(lut + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(lut + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_lut(buffer: usize, num: u64, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(lut + (c1 << alignof()));\n let digits2 = load(lut + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(lut + (b1 << alignof()));\n digits2 = load(lut + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_lut(buffer, num, offset);\n}\n\nfunction utoa_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset -= 1;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_core(buffer: usize, num: u32, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa32_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa64_core(buffer: usize, num: u64, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa64_lut(buffer, num, offset);\n }\n}\n\nexport function utoa32(value: u32): String {\n if (!value) return "0";\n\n var decimals = decimalCount32(value);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n return changetype(out); // retains\n}\n\nexport function itoa32(value: i32): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var decimals = decimalCount32(value) + u32(sign);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n if (sign) store(out, CharCode.MINUS);\n return changetype(out); // retains\n}\n\nexport function utoa64(value: u64): String {\n if (!value) return "0";\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n return changetype(out); // retains\n}\n\nexport function itoa64(value: i64): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n if (sign) store(out, CharCode.MINUS);\n\n return changetype(out); // retains\n}\n\nexport function itoa(value: T): String {\n if (!isInteger()) ERROR("integer type expected");\n if (isSigned()) {\n if (sizeof() <= 4) {\n return itoa32(value);\n } else {\n return itoa64(value);\n }\n } else {\n if (sizeof() <= 4) {\n return utoa32(value);\n } else {\n return utoa64(value);\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = unchecked(FRC_POWERS[index]);\n _exp_pow = unchecked(EXP_POWERS[index]);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = ((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp != 0) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n var wp_w_exp = mp_exp;\n\n var p1 = (mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n var lut = changetype(POWERS10).dataStart;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(lut + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (1) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(lut + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n\n return len;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nexport function dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\nexport function dtoa(value: f64): String {\n if (value == 0) return "0.0";\n if (!isFinite(value)) {\n if (isNaN(value)) return "NaN";\n return select("-Infinity", "Infinity", value < 0);\n }\n var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof());\n var length = dtoa_core(buffer, value);\n if (length == MAX_DOUBLE_LENGTH) return changetype(buffer);\n var result = changetype(buffer).substring(0, length);\n __free(buffer);\n return result;\n}\n\nexport function itoa_stream(buffer: usize, offset: usize, value: T): u32 {\n buffer += (offset << 1);\n if (!value) {\n store(buffer, CharCode._0);\n return 1;\n }\n var decimals: u32 = 0;\n if (isSigned()) {\n let sign = i32(value < 0);\n if (sign) value = changetype(-value);\n if (sizeof() <= 4) {\n decimals = decimalCount32(value) + sign;\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32) + sign;\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value) + sign;\n utoa64_core(buffer, value, decimals);\n }\n }\n if (sign) store(buffer, CharCode.MINUS);\n } else {\n if (sizeof() <= 4) {\n decimals = decimalCount32(value);\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value);\n utoa64_core(buffer, value, decimals);\n }\n }\n }\n return decimals;\n}\n\nexport function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {\n buffer += (offset << 1);\n if (value == 0.0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = i32(value < 0);\n let len = 8 + sign;\n memory.copy(buffer, changetype(select("-Infinity", "Infinity", sign)), len << 1);\n return len;\n }\n }\n return dtoa_core(buffer, value);\n}\n',"util/sort":'import { compareImpl } from "./string";\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): (a: T, b: T) => i32 {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a: T, b: T): i32 => (i32(a) - i32(b));\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= (ia >> 31) >>> 1;\n ib ^= (ib >> 31) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= (ia >> 63) >>> 1;\n ib ^= (ib >> 63) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a: T, b: T): i32 => {\n if (a === b || a === null || b === null) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!alen && !blen) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n return compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen));\n };\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function SORT(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n if (isReference()) {\n // TODO replace this to faster stable sort (TimSort) when it implemented\n insertionSort(dataStart, length, comparator);\n } else {\n if (length < 256) {\n insertionSort(dataStart, length, comparator);\n } else {\n weakHeapSort(dataStart, length, comparator);\n }\n }\n}\n\nfunction insertionSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n for (let i = 0; i < length; i++) {\n let a: T = load(dataStart + (i << alignof())); // a = arr[i]\n let j = i - 1;\n while (j >= 0) {\n let b: T = load(dataStart + (j << alignof())); // b = arr[j]\n if (comparator(a, b) < 0) {\n store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b\n } else break;\n }\n store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a\n }\n}\n\nfunction weakHeapSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n const shift32 = alignof();\n\n var bitsetSize = (length + 31) >> 5 << shift32;\n var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below\n memory.fill(bitset, 0, bitsetSize);\n\n // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf\n\n for (let i = length - 1; i > 0; i--) {\n let j = i;\n while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1;\n\n let p = j >> 1;\n let a: T = load(dataStart + (p << alignof())); // a = arr[p]\n let b: T = load(dataStart + (i << alignof())); // b = arr[i]\n if (comparator(a, b) < 0) {\n store(\n bitset + (i >> 5 << shift32),\n load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31))\n );\n store(dataStart + (i << alignof()), a); // arr[i] = a\n store(dataStart + (p << alignof()), b); // arr[p] = b\n }\n }\n\n for (let i = length - 1; i >= 2; i--) {\n let a: T = load(dataStart); // a = arr[0]\n store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i]\n store(dataStart + (i << alignof()), a); // arr[i] = a\n\n let x = 1, y: i32;\n while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y;\n\n while (x > 0) {\n a = load(dataStart); // a = arr[0]\n let b: T = load(dataStart + (x << alignof())); // b = arr[x]\n\n if (comparator(a, b) < 0) {\n store(\n bitset + (x >> 5 << shift32),\n load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31))\n );\n store(dataStart + (x << alignof()), a); // arr[x] = a\n store(dataStart, b); // arr[0] = b\n }\n x >>= 1;\n }\n }\n\n __free(bitset);\n\n var t: T = load(dataStart, sizeof()); // t = arr[1]\n store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0]\n store(dataStart, t); // arr[0] = t\n}\n',"util/string":"export function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var result = 0;\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n while (len && !(result = load(ptr1) - load(ptr2))) {\n --len, ptr1 += 2, ptr2 += 2;\n }\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function isSpace(c: i32): bool {\n if (c <= 0xFF) {\n switch (c) {\n case 0x09: // \n case 0x0A: // \n case 0x0B: // \n case 0x0C: // \n case 0x0D: // \n case 0x20: // \n case 0xA0: return true; // \n }\n return false;\n }\n if (c >= 0x2000 && c <= 0x200A) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // determine sign\n // @ts-ignore: cast\n var sign: T = 1;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n // @ts-ignore: type\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2)) {\n case CharCode.B:\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.O:\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.X:\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n default: radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n while (len--) {\n code = load(ptr);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else break;\n if (code >= radix) break;\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\n// FIXME: naive implementation\nexport function strtod(str: string): f64 {\n var len: i32 = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n // determine sign\n var sign = 1.0;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1.0;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // calculate value\n var num = 0.0;\n while (len--) {\n code = load(ptr);\n if (code == CharCode.DOT) {\n ptr += 2;\n let fac = 0.1; // precision :(\n while (len--) {\n code = load(ptr);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) break;\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) break;\n num = num * 10 + code;\n ptr += 2;\n }\n return sign * num;\n}\n",vector:"/** Vector abstraction. */\n@sealed @unmanaged\nexport abstract class V128 {\n}\n"}):(()=>{const e=path.join(".","..","std","assembly"),n=__webpack_require__(!function(){var e=new Error("Cannot find module 'glob'");throw e.code="MODULE_NOT_FOUND",e}()).sync("**/!(*.d).ts",{cwd:e}),t={nearEntry:fs.readFileSync(nearLibEntry,"utf8")};return n.forEach(n=>t[n.replace(/\.ts$/,"")]=fs.readFileSync(path.join(e,n),"utf8")),t})(),exports.definitionFiles=exports.isBundle?Object({assembly:'/**\n * Environment definitions for compiling AssemblyScript to WebAssembly using asc.\n * @module std/assembly\n *//***/\n\n/// \n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = boolean | number;\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n/** A 128-bit vector. */\ndeclare type v128 = object;\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n/** Whether the bulk memory feature is enabled. */\ndeclare const ASC_FEATURE_BULK_MEMORY: bool;\n/** Whether the SIMD feature is enabled. */\ndeclare const ASC_FEATURE_SIMD: bool;\n/** Whether the threads feature is enabled. */\ndeclare const ASC_FEATURE_THREADS: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, immOffset?: usize, immAlign?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const __heap_base: usize;\n/** Determines the byte size of the specified underlying core type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Determines the alignment (log2) of the specified underlying core type. Compiles to a constant. */\ndeclare function alignof(): usize;\n/** Determines the end offset of the given class type. Compiles to a constant. */\ndeclare function offsetof(): usize;\n/** Determines the offset of the specified field within the given class type. Compiles to a constant. */\ndeclare function offsetof(fieldName: keyof T | string): usize;\n/** Determines the offset of the specified field within the given class type. Returns the class type\'s end offset if field name has been omitted. Compiles to a constant. */\ndeclare function offsetof(fieldName?: string): usize;\n/** Determines the name of a given type. */\ndeclare function nameof(value?: T): string;\n/** Determines the unique runtime id of a class type. Compiles to a constant. */\ndeclare function idof(): u32;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Emits a `call_indirect` instruction, calling the specified function in the function table by index with the specified arguments. Does result in a runtime error if the arguments do not match the called function. */\ndeclare function call_indirect(target: Function | u32, ...args: any[]): T;\n/** Emits a `call` instruction, calling the specified function in the function table directly with the specified arguments. Function index must be a compile-time constant. */\ndeclare function call_direct(target: Function | u32, ...args: any[]): T;\n/** Instantiates a new instance of `T` using the specified constructor arguments. */\ndeclare function instantiate(...args: any[]): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */\ndeclare function isInteger(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */\ndeclare function isFloat(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a boolean type. */\ndeclare function isBoolean(value?: any): value is number;\n/** Tests if the specified type *or* expression can represent negative numbers. Compiles to a constant. */\ndeclare function isSigned(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a reference type. Compiles to a constant. */\ndeclare function isReference(value?: any): value is object | string;\n/** Tests if the specified type *or* expression can be used as a string. Compiles to a constant. */\ndeclare function isString(value?: any): value is string | String;\n/** Tests if the specified type *or* expression can be used as an array. Compiles to a constant. */\ndeclare function isArray(value?: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. Compiles to a constant. */\ndeclare function isArrayLike(value?: any): value is ArrayLike;\n/** Tests if the specified type *or* expression is of a function type. Compiles to a constant. */\ndeclare function isFunction(value?: any): value is (...args: any) => any;\n/** Tests if the specified type *or* expression is of a nullable reference type. Compiles to a constant. */\ndeclare function isNullable(value?: any): bool;\n/** Tests if the specified expression resolves to a defined element. Compiles to a constant. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. Compiles to a constant. */\ndeclare function isConstant(expression: any): bool;\n/** Tests if the specified type *or* expression is of a managed type. Compiles to a constant. */\ndeclare function isManaged(value?: any): bool;\n/** Tests if the specified type is void. Compiles to a constant. */\ndeclare function isVoid(): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n/** Returns the number of parameters in the given function signature type. */\ndeclare function lengthof any>(func?: T): i32;\n\n/** Atomic operations. */\ndeclare namespace atomic {\n /** Atomically loads an integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): T;\n /** Atomically stores an integer value to memory. */\n export function store(offset: usize, value: T, immOffset?: usize): void;\n /** Atomically adds an integer value in memory. */\n export function add(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically subtracts an integer value in memory. */\n export function sub(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise AND operation on an integer value in memory. */\n export function and(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise OR operation on an integer value in memory. */\n export function or(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise XOR operation on an integer value in memory. */\n export function xor(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically exchanges an integer value in memory. */\n export function xchg(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically compares and exchanges an integer value in memory if the condition is met. */\n export function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n /** Performs a wait operation on an address in memory suspending this agent if the integer condition is met. */\n export function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n /** Performs a notify operation on an address in memory waking up suspended agents. */\n export function notify(ptr: usize, count: i32): i32;\n}\n\n/** Describes the result of an atomic wait operation. */\ndeclare enum AtomicWaitResult {\n /** Woken by another agent. */\n OK,\n /** Loaded value did not match the expected value. */\n NOT_EQUAL,\n /** Not woken before the timeout expired. */\n TIMED_OUT\n}\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i8;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Loads an 8-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 32-bit integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 32-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 32-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i32;\n /** Atomically stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize): void;\n /** Performs a wait operation on a 32-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n /** Atomic 32-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 32-bit integer value in memory. */\n export function add(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts a 32-bit integer value in memory. */\n export function sub(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 32-bit integer value in memory. */\n export function and(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 32-bit integer value in memory. */\n export function or(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 32-bit integer value in memory. */\n export function xor(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 32-bit integer value in memory. */\n export function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 32-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: any): i64;\ndeclare namespace i64 {\n /** Smallest representable value. */\n export const MIN_VALUE: i64;\n /** Largest representable value. */\n export const MAX_VALUE: i64;\n /** Loads an 8-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 64-bit unsigned integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 64-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 64-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i64;\n /** Atomically stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize): void;\n /** Performs a wait operation on a 64-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n /** Atomic 64-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 32-bit values. */\n export namespace rmw32 {\n /** Atomically adds a 32-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 32-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 32-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 32-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 32-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 32-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 32-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 64-bit integer value in memory. */\n export function add(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 64-bit integer value in memory. */\n export function sub(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 64-bit integer value in memory. */\n export function and(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 64-bit integer value in memory. */\n export function or(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 64-bit integer value in memory. */\n export function xor(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 64-bit integer value in memory. */\n export function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 64-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare var isize: typeof i32 | typeof i64;\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): i8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): i8;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): i32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: any): i64;\ndeclare namespace u64 {\n /** Smallest representable value. */\n export const MIN_VALUE: u64;\n /** Largest representable value. */\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare var usize: typeof u32 | typeof u64;\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Loads a 32-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n /** Stores a 32-bit float to memory. */\n export function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Loads a 64-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n /** Stores a 64-bit float to memory. */\n export function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function v128(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace v128 {\n /** Creates a 128-bit vector with identical lanes. */\n export function splat(x: T): v128;\n /** Extracts one lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): T;\n /** Replaces one lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: T): v128;\n /** Selects lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n /** Loads a 128-bit vector from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n /** Stores a 128-bit vector to memory. */\n export function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n /** Adds each lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128; // except i64\n /** Divides each lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each lane of two 128-bit vectors using saturation. */\n export function add_saturate(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors using saturation. */\n export function sub_saturate(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise right shift on each lane of a 128-bit vector by a scalar. */\n export function shr(a: v128, b: i32): v128;\n /** Performs the bitwise AND operation on each lane of two 128-bit vectors. */\n export function and(a: v128, b: v128): v128;\n /** Performs the bitwise OR operation on each lane of two 128-bit vectors. */\n export function or(a: v128, b: v128): v128;\n /** Performs the bitwise XOR operation on each lane of two 128-bit vectors. */\n export function xor(a: v128, b: v128): v128;\n /** Performs the bitwise NOT operation on each lane of a 128-bit vector. */\n export function not(a: v128): v128;\n /** Selects bits of either 128-bit vector according to the specified mask. */\n export function bitselect(v1: v128, v2: v128, mask: v128): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes the minimum of each lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each lane of a 128-bit vector from integer to floating point. */\n export function convert(a: v128): v128;\n /** Truncates each lane of a 128-bit vector from floating point to integer with saturation. */\n export function trunc(a: v128): v128;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace i8x16 {\n /** Creates a vector with sixteen identical 8-bit integer lanes. */\n export function splat(x: i8): v128;\n /** Extracts one 8-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i8;\n /** Extracts one 8-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u8;\n /** Replaces one 8-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i8): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 8-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 8-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */\ndeclare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\ndeclare namespace i16x8 {\n /** Creates a vector with eight identical 16-bit integer lanes. */\n export function splat(x: i16): v128;\n /** Extracts one 16-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i16;\n /** Extracts one 16-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u16;\n /** Replaces one 16-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i16): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 16-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 16-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */\ndeclare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\ndeclare namespace i32x4 {\n /** Creates a 128-bit vector with four identical 32-bit integer lanes. */\n export function splat(x: i32): v128;\n /** Extracts one 32-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i32;\n /** Replaces one 32-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i32): v128;\n /** Adds each 32-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 32-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f32x4_sat(a: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f32x4_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */\ndeclare function i64x2(a: i64, b: i64): v128;\ndeclare namespace i64x2 {\n /** Creates a 128-bit vector with two identical 64-bit integer lanes. */\n export function splat(x: i64): v128;\n /** Extracts one 64-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i64;\n /** Replaces one 64-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i64): v128;\n /** Adds each 64-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 64-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Truncates each 64-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f64x2_sat(a: v128): v128;\n /** Truncates each 64-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f64x2_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */\ndeclare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\ndeclare namespace f32x4 {\n /** Creates a 128-bit vector with four identical 32-bit float lanes. */\n export function splat(x: f32): v128;\n /** Extracts one 32-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f32;\n /** Replaces one 32-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f32): v128;\n /** Adds each 32-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 32-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 32-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 32-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 32-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 32-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 32-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 32-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i32x4(a: v128): v128;\n /** Converts each 32-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i32x4(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */\ndeclare function f64x2(a: f64, b: f64): v128;\ndeclare namespace f64x2 {\n /** Creates a 128-bit vector with two identical 64-bit float lanes. */\n export function splat(x: f64): v128;\n /** Extracts one 64-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f64;\n /** Replaces one 64-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f64): v128;\n /** Adds each 64-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 64-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 64-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 64-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 64-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 64-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 64-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 64-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i64x2(a: v128): v128;\n /** Converts each 64-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i64x2(a: v128): v128;\n}\ndeclare namespace v8x16 {\n /** Selects 8-bit lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128;\n}\n/** Macro type evaluating to the underlying native WebAssembly type. */\ndeclare type native = T;\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type ReturnType any> = T extends (...args: any) => infer R ? R : any;\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type returnof any> = ReturnType;\n\n/** Pseudo-class representing the backing class of integer types. */\ndeclare class _Integer {\n /** Smallest representable value. */\n static readonly MIN_VALUE: number;\n /** Largest representable value. */\n static readonly MAX_VALUE: number;\n /** Converts a string to an integer of this type. */\n static parseInt(value: string, radix?: number): number;\n /** Converts this integer to a string. */\n toString(): string;\n}\n\n/** Pseudo-class representing the backing class of floating-point types. */\ndeclare class _Float {\n /** Difference between 1 and the smallest representable value greater than 1. */\n static readonly EPSILON: f32 | f64;\n /** Smallest representable value. */\n static readonly MIN_VALUE: f32 | f64;\n /** Largest representable value. */\n static readonly MAX_VALUE: f32 | f64;\n /** Smallest safely representable integer value. */\n static readonly MIN_SAFE_INTEGER: f32 | f64;\n /** Largest safely representable integer value. */\n static readonly MAX_SAFE_INTEGER: f32 | f64;\n /** Value representing positive infinity. */\n static readonly POSITIVE_INFINITY: f32 | f64;\n /** Value representing negative infinity. */\n static readonly NEGATIVE_INFINITY: f32 | f64;\n /** Value representing \'not a number\'. */\n static readonly NaN: f32 | f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n static isNaN(value: f32 | f64): bool;\n /** Returns true if passed value is finite. */\n static isFinite(value: f32 | f64): bool;\n /** Returns true if the value passed is a safe integer. */\n static isSafeInteger(value: f32 | f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n static isInteger(value: f32 | f64): bool;\n /** Converts a string to an integer. */\n static parseInt(value: string, radix?: i32): f32 | f64;\n /** Converts a string to a floating-point number. */\n static parseFloat(value: string): f32 | f64;\n /** Converts this floating-point number to a string. */\n toString(this: f64): string;\n}\n\n/** Backing class of signed 8-bit integers. */\ndeclare const I8: typeof _Integer;\n/** Backing class of signed 16-bit integers. */\ndeclare const I16: typeof _Integer;\n/** Backing class of signed 32-bit integers. */\ndeclare const I32: typeof _Integer;\n/** Backing class of signed 64-bit integers. */\ndeclare const I64: typeof _Integer;\n/** Backing class of signed size integers. */\ndeclare const Isize: typeof _Integer;\n/** Backing class of unsigned 8-bit integers. */\ndeclare const U8: typeof _Integer;\n/** Backing class of unsigned 16-bit integers. */\ndeclare const U16: typeof _Integer;\n/** Backing class of unsigned 32-bit integers. */\ndeclare const U32: typeof _Integer;\n/** Backing class of unsigned 64-bit integers. */\ndeclare const U64: typeof _Integer;\n/** Backing class of unsigned size integers. */\ndeclare const Usize: typeof _Integer;\n/** Backing class of 32-bit floating-point values. */\ndeclare const F32: typeof _Float;\n/** Backing class of 64-bit floating-point values. */\ndeclare const F64: typeof _Float;\n\n// User-defined diagnostic macros\n\n/** Emits a user-defined diagnostic error when encountered. */\ndeclare function ERROR(message?: any): void;\n/** Emits a user-defined diagnostic warning when encountered. */\ndeclare function WARNING(message?: any): void;\n/** Emits a user-defined diagnostic info when encountered. */\ndeclare function INFO(message?: any): void;\n\n// Polyfills\n\n/** Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Whether the memory managed interface is implemented. */\n export const implemented: bool;\n /** Returns the current memory size in units of pages. One page is 64kb. */\n export function size(): i32;\n /** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\n export function grow(value: i32): i32;\n /** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\n export function fill(dst: usize, value: u8, count: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n export function copy(dst: usize, src: usize, n: usize): void;\n /** Repeats `src` of length `srcLength` `count` times at `dst`. */\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void;\n /** Copies elements from a passive element segment to a table. */\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void;\n /** Prevents further use of a passive element segment. */\n export function drop(segmentIndex: u32): void;\n /** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\n export function compare(vl: usize, vr: usize, n: usize): i32;\n}\n\n/** Garbage collector operations. */\ndeclare namespace gc {\n /** Whether the garbage collector interface is implemented. */\n export const implemented: bool;\n /** Performs a full garbage collection cycle. */\n export function collect(): void;\n /** Retains a reference, making sure that it doesn\'t become collected. */\n export function retain(ref: usize): void;\n /** Releases a reference, allowing it to become collected. */\n export function release(ref: usize): void;\n}\n\n/** Table operations. */\ndeclare namespace table {\n /** Copies elements from a passive element segment to a table. */\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void;\n /** Prevents further use of a passive element segment. */\n export function drop(elementIndex: u32): void;\n /** Copies elements from one region of a table to another region. */\n export function copy(dest: u32, src: u32, n: u32): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer\'s bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform\'s endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getInt64()` method gets a signed 64-bit integer (long long) at the specified byte offset from the start of the `DataView`. */\n getInt64(byteOffset: i32, littleEndian?: boolean): i64;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `getUint64()` method gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the `DataView`. */\n getUint64(byteOffset: i32, littleEndian?: boolean): u64;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setInt64()` method stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the `DataView`. */\n setInt64(byteOffset: i32, value: i64, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** The `setUint64()` method stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the `DataView`. */\n setUint64(byteOffset: i32, value: u64, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ninterface ArrayLike {\n length: i32;\n // [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\n/* @internal */\ndeclare abstract class TypedArray implements ArrayBufferView {\n [key: number]: T;\n /** Number of bytes per element. */\n static readonly BYTES_PER_ELEMENT: usize;\n /** Wrap an ArrayBuffer */\n static wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray;\n /** Constructs a new typed array. */\n constructor(length: i32);\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n /** The length (in elements). */\n readonly length: i32;\n /** The includes() method determines whether a typed array includes a certain element, returning true or false as appropriate. */\n includes(searchElement: T, fromIndex?: i32): bool;\n /** The indexOf() method returns the first index at which a given element can be found in the typed array, or -1 if it is not present. */\n indexOf(searchElement: T, fromIndex?: i32): i32;\n /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */\n subarray(begin?: i32, end?: i32): this;\n /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */\n reduce(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */\n reduceRight(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/\n some(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/\n map(callbackfn: (value: T, index: i32, self: this) => T): this;\n /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */\n sort(callback?: (a: T, b: T) => i32): this;\n /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */\n fill(value: T, start?: i32, end?: i32): this;\n /** The findIndex() method returns an index in the typed array, if an element in the typed array satisfies the provided testing function. Otherwise -1 is returned. See also the find() [not implemented] method, which returns the value of a found element in the typed array instead of its index. */\n findIndex(callbackfn: (value: T, index: i32, self: this) => bool): i32;\n /** The every() method tests whether all elements in the typed array pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.every(). */\n every(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The forEach() method executes a provided function once per array element. This method has the same algorithm as Array.prototype.forEach().*/\n forEach(callbackfn: (value: T, index: i32, self: this) => void): void;\n /** The reverse() method reverses a typed array in place. The first typed array element becomes the last and the last becomes the first. This method has the same algorithm as Array.prototype.reverse(). */\n reverse(): this;\n}\n\n/** An array of twos-complement 8-bit signed integers. */\ndeclare class Int8Array extends TypedArray {}\n/** An array of 8-bit unsigned integers. */\ndeclare class Uint8Array extends TypedArray {}\n/** A clamped array of 8-bit unsigned integers. */\ndeclare class Uint8ClampedArray extends TypedArray {}\n/** An array of twos-complement 16-bit signed integers. */\ndeclare class Int16Array extends TypedArray {}\n/** An array of 16-bit unsigned integers. */\ndeclare class Uint16Array extends TypedArray {}\n/** An array of twos-complement 32-bit signed integers. */\ndeclare class Int32Array extends TypedArray {}\n/** An array of 32-bit unsigned integers. */\ndeclare class Uint32Array extends TypedArray {}\n/** An array of twos-complement 64-bit signed integers. */\ndeclare class Int64Array extends TypedArray {}\n/** An array of 64-bit unsigned integers. */\ndeclare class Uint64Array extends TypedArray {}\n/** An array of 32-bit floating point numbers. */\ndeclare class Float32Array extends TypedArray {}\n/** An array of 64-bit floating point numbers. */\ndeclare class Float64Array extends TypedArray {}\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n\n /** Tests if a value is an array. */\n static isArray(value: any): value is Array;\n /** Creates a new array with at least the specified capacity and length zero. */\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\n/** Class representing a fixed sequence of values of type `T`. */\ndeclare class FixedArray {\n [key: number]: T;\n readonly length: i32;\n constructor(capacity?: i32);\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(start: i32, end?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n repeat(count?: i32): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\ndeclare namespace String {\n /** Encoding helpers for UTF-8. */\n export namespace UTF8 {\n /** Calculates the byte length of the specified string when encoded as UTF-8, optionally null terminated. */\n export function byteLength(str: string, nullTerminated?: bool): i32;\n /** Encodes the specified string to UTF-8 bytes, optionally null terminated. */\n export function encode(str: string, nullTerminated?: bool): ArrayBuffer;\n /** Decodes the specified buffer from UTF-8 bytes to a string, optionally null terminated. */\n export function decode(buf: ArrayBuffer, nullTerminated?: bool): string;\n /** Decodes raw UTF-8 bytes to a string, optionally null terminated. */\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated?: bool): string;\n }\n /** Encoding helpers for UTF-16. */\n export namespace UTF16 {\n /** Calculates the byte length of the specified string when encoded as UTF-16. */\n export function byteLength(str: string): i32;\n /** Encodes the specified string to UTF-16 bytes. */\n export function encode(str: string): ArrayBuffer;\n /** Decodes the specified buffer from UTF-16 bytes to a string. */\n export function decode(buf: ArrayBuffer): string;\n /** Decodes raw UTF-16 bytes to a string. */\n export function decodeUnsafe(buf: usize, len: usize): string;\n }\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ninterface Boolean {\n toString(): string;\n}\ninterface Function {}\ninterface IArguments {}\ninterface Number {\n toString(radix?: number): string;\n}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Map {\n readonly size: i32;\n has(key: K): bool;\n set(key: K, value: V): void;\n get(key: K): V;\n delete(key: K): bool;\n clear(): void;\n keys(): K[]; // preliminary\n values(): V[]; // preliminary\n toString(): string;\n}\n\ndeclare class Set {\n readonly size: i32;\n has(value: K): bool;\n add(value: K): void;\n delete(value: K): bool;\n clear(): void;\n values(): K[]; // preliminary\n toString(): string;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\n\ndeclare const Symbol: SymbolConstructor;\n\ninterface IMath {\n /** The base of natural logarithms, e, approximately 2.718. */\n readonly E: T;\n /** The natural logarithm of 2, approximately 0.693. */\n readonly LN2: T;\n /** The natural logarithm of 10, approximately 2.302. */\n readonly LN10: T;\n /** The base 2 logarithm of e, approximately 1.442. */\n readonly LOG2E: T;\n /** The base 10 logarithm of e, approximately 0.434. */\n readonly LOG10E: T;\n /** The ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n readonly PI: T;\n /** The square root of 1/2, approximately 0.707. */\n readonly SQRT1_2: T;\n /** The square root of 2, approximately 1.414. */\n readonly SQRT2: T;\n /** Returns the absolute value of `x`. */\n abs(x: T): T;\n /** Returns the arccosine (in radians) of `x`. */\n acos(x: T): T;\n /** Returns the hyperbolic arc-cosine of `x`. */\n acosh(x: T): T;\n /** Returns the arcsine (in radians) of `x`. */\n asin(x: T): T;\n /** Returns the hyperbolic arcsine of `x`. */\n asinh(x: T): T;\n /** Returns the arctangent (in radians) of `x`. */\n atan(x: T): T;\n /** Returns the arctangent of the quotient of its arguments. */\n atan2(y: T, x: T): T;\n /** Returns the hyperbolic arctangent of `x`. */\n atanh(x: T): T;\n /** Returns the cube root of `x`. */\n cbrt(x: T): T;\n /** Returns the smallest integer greater than or equal to `x`. */\n ceil(x: T): T;\n /** Returns the number of leading zero bits in the 32-bit binary representation of `x`. */\n clz32(x: T): T;\n /** Returns the cosine (in radians) of `x`. */\n cos(x: T): T;\n /** Returns the hyperbolic cosine of `x`. */\n cosh(x: T): T;\n /** Returns e to the power of `x`. */\n exp(x: T): T;\n /** Returns e to the power of `x`, minus 1. */\n expm1(x: T): T;\n /** Returns the largest integer less than or equal to `x`. */\n floor(x: T): T;\n /** Returns the nearest 32-bit single precision float representation of `x`. */\n fround(x: T): T;\n /** Returns the square root of the sum of squares of its arguments. */\n hypot(value1: T, value2: T): T; // TODO: rest\n /** Returns the result of the C-like 32-bit multiplication of `a` and `b`. */\n imul(a: T, b: T): T;\n /** Returns the natural logarithm (base e) of `x`. */\n log(x: T): T;\n /** Returns the base 10 logarithm of `x`. */\n log10(x: T): T;\n /** Returns the natural logarithm (base e) of 1 + `x`. */\n log1p(x: T): T;\n /** Returns the base 2 logarithm of `x`. */\n log2(x: T): T;\n /** Returns the largest-valued number of its arguments. */\n max(value1: T, value2: T): T; // TODO: rest\n /** Returns the lowest-valued number of its arguments. */\n min(value1: T, value2: T): T; // TODO: rest\n /** Returns `base` to the power of `exponent`. */\n pow(base: T, exponent: T): T;\n /** Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0. */\n random(): T;\n /** Returns the value of `x` rounded to the nearest integer. */\n round(x: T): T;\n /** Returns the sign of `x`, indicating whether the number is positive, negative or zero. */\n sign(x: T): T;\n /** Returns whether the sign bit of `x` is set. */\n signbit(x: T): bool;\n /** Returns the sine of `x`. */\n sin(x: T): T;\n /** Returns the hyperbolic sine of `x`. */\n sinh(x: T): T;\n /** Returns the square root of `x`. */\n sqrt(x: T): T;\n /** Returns the tangent of `x`. */\n tan(x: T): T;\n /** Returns the hyperbolic tangent of `x`. */\n tanh(x: T): T;\n /** Returns the integer part of `x` by removing any fractional digits. */\n trunc(x: T): T;\n}\n\ninterface INativeMath extends IMath {\n /** Contains sin value produced after Math/Mathf.sincos */\n sincos_sin: T;\n /** Contains cos value produced after Math/Mathf.sincos */\n sincos_cos: T;\n /** Seeds the random number generator. */\n seedRandom(value: i64): void;\n /** Returns the floating-point remainder of `x / y` (rounded towards zero). */\n mod(x: T, y: T): T;\n /** Returns the floating-point remainder of `x / y` (rounded to nearest). */\n rem(x: T, y: T): T;\n /** Returns sin and cos simultaneously for same angle. Results stored to `sincos_s32/64` and `sincos_c32/64` globals */\n sincos(x: T): void;\n}\n\n/** Double precision math imported from JavaScript. */\ndeclare const JSMath: IMath;\n/** Double precision math implemented natively. */\ndeclare const NativeMath: INativeMath;\n/** Single precision math implemented natively. */\ndeclare const NativeMathf: INativeMath;\n/** Alias of {@link NativeMath} or {@link JSMath} respectively. Defaults to `NativeMath`. */\ndeclare const Math: IMath;\n/** Alias of {@link NativeMathf} or {@link JSMath} respectively. Defaults to `NativeMathf`. */\ndeclare const Mathf: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): i64;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): i64;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: i64);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): i64;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: i64): i64;\n}\n\n/** Environmental tracing function for debugging purposes. */\ndeclare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: f64, a4?: f64): void;\n\n// Decorators\n\ninterface TypedPropertyDescriptor {\n configurable?: boolean;\n enumerable?: boolean;\n writable?: boolean;\n value?: T;\n get?(): T;\n set?(value: T): void;\n}\n\n/** Annotates a method as a binary operator overload for the specified `token`. */\ndeclare function operator(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n) => TypedPropertyDescriptor | void;\n\ndeclare namespace operator {\n /** Annotates a method as a binary operator overload for the specified `token`. */\n export function binary(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n ): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary prefix operator overload for the specified `token`. */\n export function prefix(token: "!" | "~" | "+" | "-" | "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary postfix operator overload for the specified `token`. */\n export function postfix(token: "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n}\n\n/** Annotates an element as a program global. */\ndeclare function global(...args: any[]): any;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n\n/** Annotates a class as being sealed / non-derivable. */\ndeclare function sealed(constructor: Function): void;\n\n/** Annotates a method, function or constant global as always inlined. */\ndeclare function inline(...args: any[]): any;\n\n/** Annotates a method, function or constant global as unsafe. */\ndeclare function unsafe(...args: any[]): any;\n\n/** Annotates an explicit external name of a function or global. */\ndeclare function external(...args: any[]): any;\n\n/** Annotates a global for lazy compilation. */\ndeclare function lazy(...args: any[]): any;\n\n/** Annotates a function as the explicit start function. */\ndeclare function start(...args: any[]): any;\n',portable:"/**\n * Environment definitions for compiling AssemblyScript to JavaScript using tsc.\n *\n * Note that semantic differences require additional explicit conversions for full compatibility.\n * For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n * result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n *\n * Note that i64's are not portable (JS numbers are IEEE754 doubles with a maximum safe integer\n * value of 2^53-1) and instead require a compatibility layer to work in JS as well, as for example\n * {@link glue/js/i64} respectively {@link glue/wasm/i64}.\n *\n * @module std/portable\n *//***/\n\n/// \n\n// Types\n\ndeclare type bool = boolean;\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified value is a valid integer. Can't distinguish an integer from an integral float. */\ndeclare function isInteger(value: any): value is number;\n/** Tests if the specified value is a valid float. Can't distinguish a float from an integer. */\ndeclare function isFloat(value: any): value is number;\n/** Tests if the specified value is of a nullable reference type. */\ndeclare function isNullable(value: any): bool;\n/** Tests if the specified value is of a reference type. */\ndeclare function isReference(value: any): value is object | string;\n/** Tests if the specified value is of a function type */\ndeclare function isFunction(value: any): value is Function;\n/** Tests if the specified value can be used as a string. */\ndeclare function isString(value: any): value is string | String;\n/** Tests if the specified value can be used as an array. */\ndeclare function isArray(value: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. */\ndeclare function isArrayLike(value: any): value is ArrayLike;\n/** Tests if the specified expression resolves to a defined element. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. */\ndeclare function isConstant(expression: any): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T | null, message?: string): T;\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i16;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: any): isize;\ndeclare namespace isize {\n /** Smallest representable value. */\n export const MIN_VALUE: isize;\n /** Largest representable value. */\n export const MAX_VALUE: isize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): isize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): u8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): u16;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): u32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: any): isize;\ndeclare namespace usize {\n /** Smallest representable value. */\n export const MIN_VALUE: usize;\n /** Largest representable value. */\n export const MAX_VALUE: usize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): usize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f32): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f32): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f64): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f64;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f64;\n}\n\n// Polyfills\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Allocates a chunk of memory of the specified size and returns a pointer to it. */\n function allocate(size: usize): usize;\n /** Disposes a chunk of memory by its pointer. */\n function free(ptr: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n function copy(dst: usize, src: usize, n: usize): void;\n /** Fills size bytes from from the specified destination by same value in memory. */\n function fill(dst: usize, value: u8, size: usize): void;\n /** Resets the allocator to its initial state, if supported. */\n function reset(): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer's bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform's endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ndeclare class Array {\n\n static isArray(value: any): value is Array;\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from?: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint8ClampedArray extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ninterface ArrayLike {\n length: i32;\n [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: i32;\n\n private constructor();\n\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n endsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(from: i32, to?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n repeat(count?: i32): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ndeclare class Set {\n constructor(entries?: T[]);\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n toString(): string;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n delete(key: K): bool;\n toString(): string;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\ndeclare const Symbol: SymbolConstructor;\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ninterface IMath {\n readonly E: f64;\n readonly LN2: f64;\n readonly LN10: f64;\n readonly LOG2E: f64;\n readonly LOG10E: f64;\n readonly PI: f64;\n readonly SQRT1_2: f64;\n readonly SQRT2: f64;\n\n sincos_sin: f64;\n sincos_cos: f64;\n\n abs(x: f64): f64;\n acos(x: f64): f64;\n acosh(x: f64): f64;\n asin(x: f64): f64;\n asinh(x: f64): f64;\n atan(x: f64): f64;\n atan2(y: f64, x: f64): f64;\n atanh(x: f64): f64;\n cbrt(x: f64): f64;\n ceil(x: f64): f64;\n clz32(x: f64): i32;\n cos(x: f64): f64;\n cosh(x: f64): f64;\n exp(x: f64): f64;\n expm1(x: f64): f64;\n floor(x: f64): f64;\n fround(x: f64): f32;\n hypot(value1: f64, value2: f64): f64; // TODO: see std/math\n imul(a: f64, b: f64): i32;\n log(x: f64): f64;\n log10(x: f64): f64;\n log1p(x: f64): f64;\n log2(x: f64): f64;\n max(value1: f64, value2: f64): f64; // TODO: see std/math\n min(value1: f64, value2: f64): f64; // TODO: see std/math\n pow(base: f64, exponent: f64): f64;\n random(): f64;\n round(x: f64): f64;\n sign(x: f64): f64;\n signbit(x: f64): bool;\n sin(x: f64): f64;\n sincos(x: f64): f64;\n sinh(x: f64): f64;\n sqrt(x: f64): f64;\n tan(x: f64): f64;\n tanh(x: f64): f64;\n trunc(x: f64): f64;\n}\n\ndeclare const Math: IMath;\ndeclare const Mathf: IMath;\ndeclare const JSMath: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): number;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): number;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: number);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): number;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: number): number;\n}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n"}):(()=>{const e=path.join(".","..","std");return{assembly:fs.readFileSync(path.join(e,"assembly","index.d.ts"),"utf8"),portable:fs.readFileSync(path.join(e,"portable","index.d.ts"),"utf8")}})(),exports.compileString=(e,n)=>{"string"==typeof e&&(e={"input.ts":e});const t=Object.create({stdout:createMemoryStream(),stderr:createMemoryStream()});var r=["--binaryFile","binary","--textFile","text"];return Object.keys(n||{}).forEach(e=>{var t=n[e];Array.isArray(t)?t.forEach(n=>r.push("--"+e,String(n))):r.push("--"+e,String(t))}),exports.main(r.concat(Object.keys(e)),{stdout:t.stdout,stderr:t.stderr,readFile:n=>e.hasOwnProperty(n)?e[n]:null,writeFile:(e,n)=>t[e]=n,listFiles:()=>[]}),t},exports.main=function(e,n,t){"function"==typeof n?(t=n,n={}):n||(n={});const r=n.stdout||process.stdout,i=n.stderr||process.stderr,a=n.readFile||O,o=n.writeFile||N,s=n.listFiles||R,u=n.stats||createStats();if(!r)throw Error("'options.stdout' must be specified");if(!i)throw Error("'options.stderr' must be specified");const l=optionsUtil.parse(e,exports.options),c=l.options;if(e=l.arguments,c.noColors?colorsUtil.stdout.supported=colorsUtil.stderr.supported=!1:(colorsUtil.stdout=colorsUtil.from(r),colorsUtil.stderr=colorsUtil.from(i)),l.unknown.length&&l.unknown.forEach(e=>{i.write(colorsUtil.stderr.yellow("WARN: ")+"Unknown option '"+e+"'"+EOL)}),l.trailing.length&&i.write(colorsUtil.stderr.yellow("WARN: ")+"Unsupported trailing arguments: "+l.trailing.join(" ")+EOL),t||(t=function(e){var n=0;return e&&(i.write(colorsUtil.stderr.red("ERROR: ")+e.stack.replace(/^ERROR: /i,"")+EOL),n=1),n}),c.version)return r.write("Version "+exports.version+(isDev?"-dev":"")+EOL),t(null);if(c.help||!e.length){var f=c.help?r:i,d=c.help?colorsUtil.stdout:colorsUtil.stderr;return f.write([d.white("SYNTAX")," "+d.cyan("asc")+" [entryFile ...] [options]","",d.white("EXAMPLES")," "+d.cyan("asc")+" hello.ts"," "+d.cyan("asc")+" hello.ts -b hello.wasm -t hello.wat"," "+d.cyan("asc")+" hello1.ts hello2.ts -b -O > hello.wasm","",d.white("OPTIONS")].concat(optionsUtil.help(exports.options,24,EOL)).join(EOL)+EOL),t(null)}if(!fs.readFileSync){if(a===O)throw Error("'options.readFile' must be specified");if(o===N)throw Error("'options.writeFile' must be specified");if(s===R)throw Error("'options.listFiles' must be specified")}const p=c.baseDir?path.resolve(c.baseDir):".",h=c.notNear?[]:[nearBindings];c.transform&&c.transform.forEach(e=>h.push(__webpack_require__(13)(path.isAbsolute(e=e.trim())?e:path.join(process.cwd(),e))));var g=null,x=new Map,v=new Map;Object.keys(exports.libraryFiles).forEach(e=>{e.indexOf("/")>=0||(u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(exports.libraryFiles[e],exports.libraryPrefix+e+".ts",!1,g)}))});const m=[];if(c.lib){let e=c.lib;"string"==typeof e&&(e=e.split(",")),Array.prototype.push.apply(m,e.map(e=>e.trim()));for(let e=0,n=m.length;e{g=assemblyscript.parseFile(o,exports.libraryPrefix+i,!1,g)})}}}function _(e,n){return e.split(SEP).map((e,t,r)=>{let i=r.slice(0,t+1).join(SEP)||SEP,a=path.relative(p,i);return path.join(a,n)}).filter(e=>s(e,p)).reverse()}function y(e){let n=c.path.map(n=>_(e,n));return _(e,"node_modules").concat(...n)}function b(){for(var e,n,r;null!=(e=g.nextFile());){if(dependee=v.get(assemblyscript.getDependee(g,e))||p,n=null,r=null,e.startsWith(exports.libraryPrefix)){const t=e.substring(exports.libraryPrefix.length),i=e.substring(exports.libraryPrefix.length)+"/index";if(exports.libraryFiles.hasOwnProperty(t))n=exports.libraryFiles[t],e=exports.libraryPrefix+t+".ts";else if(exports.libraryFiles.hasOwnProperty(i))n=exports.libraryFiles[i],e=exports.libraryPrefix+i+".ts";else for(let o=0,s=m.length;o{if(x.has(o))return x.get(o);let e=path.join(s,o,"package.json"),n=a(e,p);if(n){let r;try{r=JSON.parse(n)}catch(n){return t(Error("Parsing "+e+" failed"))}let i=r.ascMain;if(i&&"string"==typeof i){let e=i.replace(/(.*)\/index\.ts/,"$1");return x.set(o,e),e}}return"assembly"})(),l=e=>{e.startsWith(exports.libraryPrefix)&&(e=e.substring(exports.libraryPrefix.length));let n=e.substring(0,e.indexOf("/")),t=e.substring(e.indexOf("/")+1);return path.join(s,n,u,t)};c.traceResolution&&i.write(" in '"+l(e)+"'");const f=e,d=e+"/index";if(null!==(n=a(l(f)+".ts",p))?e=f+".ts":null!==(n=a(l(d)+".ts",p))&&(e=d+".ts"),null!==n){c.traceResolution&&i.write(EOL+" -> '"+l(e)+"'"+EOL),r=path.join(s,o);break}c.traceResolution&&i.write(EOL)}}if(null==n)return t(Error("Import file '"+e+".ts' not found."));v.set(e.replace(/\.ts$/,""),r),u.parseCount++,u.parseTime+=measure(()=>{assemblyscript.parseFile(n,e,!1,g)})}if(checkDiagnostics(g,i))return t(Error("Parse error"))}c.path=c.path||[];{let e=String(c.runtime),n="rt/index-"+e,r=exports.libraryFiles[n];if(null==r){if(null==(r=a((n=e)+".ts",p)))return t(Error("Runtime '"+e+"' not found."))}else n="~lib/"+n;u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(r,n,!0,g)})}for(let n=0,r=e.length;n{g=assemblyscript.parseFile(o,i,!0,g)})}{let e=b();if(e)return e}!function(e,...n){h.forEach(t=>{"function"==typeof t[e]&&t[e](...n)})}("afterParse",g,o,p);{let e=b();if(e)return e}const E=assemblyscript.finishParsing(g);if(c.listFiles)return i.write(E.sources.map(e=>e.normalizedPath).sort().join(EOL)+EOL),t(null);var T=0,A=0;c.optimize&&(T=exports.defaultOptimizeLevel,A=exports.defaultShrinkLevel),"number"==typeof c.optimizeLevel&&(T=c.optimizeLevel),"number"==typeof c.shrinkLevel&&(A=c.shrinkLevel),T=Math.min(Math.max(T,0),3),A=Math.min(Math.max(A,0),2);const S=assemblyscript.createOptions();if(assemblyscript.setTarget(S,0),assemblyscript.setNoAssert(S,c.noAssert),assemblyscript.setImportMemory(S,c.importMemory),assemblyscript.setSharedMemory(S,c.sharedMemory),assemblyscript.setImportTable(S,c.importTable),assemblyscript.setExplicitStart(S,c.explicitStart),assemblyscript.setMemoryBase(S,c.memoryBase>>>0),assemblyscript.setSourceMap(S,null!=c.sourceMap),assemblyscript.setOptimizeLevelHints(S,T,A),assemblyscript.setNoUnsafe(S,c.noUnsafe),assemblyscript.setGlobalAlias(S,"Math","NativeMath"),assemblyscript.setGlobalAlias(S,"Mathf","NativeMathf"),assemblyscript.setGlobalAlias(S,"abort","~lib/builtins/abort"),assemblyscript.setGlobalAlias(S,"trace","~lib/builtins/trace"),c.use){let e=c.use;for(let n=0,r=e.length;n{F=assemblyscript.compileProgram(E,S)})}catch(e){return t(e)}if(checkDiagnostics(g,i))return F&&F.dispose(),t(Error("Compile error"));if(c.validate&&(u.validateCount++,u.validateTime+=measure(()=>{if(!F.validate())return F.dispose(),t(Error("Validate error"))})),"clamp"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-clamp"])});else if("js"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-js"])});else if("allow"!==c.trapMode)return F.dispose(),t(Error("Unsupported trap mode"));(T>=3||A>=2)&&(T=4),F.setOptimizeLevel(T),F.setShrinkLevel(A),F.setDebugInfo(c.debug);var z=[];if(c.runPasses&&("string"==typeof c.runPasses&&(c.runPasses=c.runPasses.split(",")),c.runPasses.length&&c.runPasses.forEach(e=>{z.indexOf(e)<0&&z.push(e)})),(T>0||A>0)&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.optimize()})),z.length&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(z.map(e=>e.trim()))})),!c.noEmit){let e=!1,n=!1;if(null!=c.outFile&&(/\.was?t$/.test(c.outFile)&&null==c.textFile?c.textFile=c.outFile:/\.js$/.test(c.outFile)&&null==c.asmjsFile?c.asmjsFile=c.outFile:null==c.binaryFile&&(c.binaryFile=c.outFile)),null!=c.binaryFile){let r,s=null!=c.sourceMap?c.sourceMap.length?c.sourceMap:path.basename(c.binaryFile)+".map":null;if(u.emitCount++,u.emitTime+=measure(()=>{r=F.toBinary(s)}),c.binaryFile.length?o(c.binaryFile,r.output,p):(C(r.output),e=!0),n=!0,null!=r.sourceMap)if(c.binaryFile.length){let e=JSON.parse(r.sourceMap);e.sourceRoot=exports.sourceMapRoot,e.sources.forEach((n,r)=>{let i=null;if(n.startsWith(exports.libraryPrefix)){let e=n.substring(exports.libraryPrefix.length).replace(/\.ts$/,"");if(exports.libraryFiles.hasOwnProperty(e))i=exports.libraryFiles[e];else for(let e=0,t=m.length;e{t=F.toAsmjs()}),o(c.asmjsFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=F.toAsmjs()}),C(t),e=!0),n=!0}if(null!=c.idlFile){let t;c.idlFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),o(c.idlFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),C(t),e=!0),n=!0}if(null!=c.tsdFile){let t;c.tsdFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),o(c.tsdFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),C(t),e=!0),n=!0}if(null!=c.textFile||!n){let n;c.textFile&&c.textFile.length?(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),o(c.textFile,n,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),C(n))}}return F.dispose(),c.measure&&printStats(u,i),c.printrtti&&printRTTI(E,i),t(null);function O(e,n){let t=path.resolve(n,e);try{let e;return u.readCount++,u.readTime+=measure(()=>{e=fs.readFileSync(t,{encoding:"utf8"})}),e}catch(e){return null}}function N(e,n,t){try{return u.writeCount++,u.writeTime+=measure(()=>{mkdirp(path.join(t,path.dirname(e))),"string"==typeof n?fs.writeFileSync(path.join(t,e),n,{encoding:"utf8"}):fs.writeFileSync(path.join(t,e),n)}),!0}catch(e){return!1}}function R(e,n){var t;try{return u.readTime+=measure(()=>{t=fs.readdirSync(path.join(n,e)).filter(e=>/^(?!.*\.d\.ts$).*\.ts$/.test(e))}),t}catch(e){return null}}function C(e){C.used||(u.writeCount++,C.used=!0),u.writeTime+=measure(()=>{"string"==typeof e?r.write(e,{encoding:"utf8"}):r.write(e)})}},exports.checkDiagnostics=checkDiagnostics,exports.createStats=createStats,process.hrtime||(process.hrtime=__webpack_require__(14)),exports.measure=measure,exports.formatTime=formatTime,exports.printStats=printStats,exports.printRTTI=printRTTI;var allocBuffer=void 0!==global&&global.Buffer?global.Buffer.allocUnsafe||function(e){return new global.Buffer(e)}:function(e){return new Uint8Array(e)};function createMemoryStream(e){var n=[];return n.write=function(n){if(e&&e(n),"string"==typeof n){let e=allocBuffer(utf8.length(n));utf8.write(n,e,0),n=e}this.push(n)},n.reset=function(){n.length=0},n.toBuffer=function(){for(var e=0,n=0,t=this.length;n191&&r<224?a[o++]=(31&r)<<6|63&e[n++]:r>239&&r<365?(r=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[n++])<<6|63&e[n++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},r.write=function(e,n,t){for(var r,i,a=t,o=0;o>6|192,n[t++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,n[t++]=r>>18|240,n[t++]=r>>12&63|128,n[t++]=r>>6&63|128,n[t++]=63&r|128):(n[t++]=r>>12|224,n[t++]=r>>6&63|128,n[t++]=63&r|128);return t-a}},function(e,n,t){(function(e){var t=void 0!==e&&e||{},r=t.env&&"CI"in t.env;function i(e,t){var i=t||{};return i.supported=e&&!!e.isTTY||r,i.gray=e=>i.supported?n.GRAY+e+n.RESET:e,i.red=e=>i.supported?n.RED+e+n.RESET:e,i.green=e=>i.supported?n.GREEN+e+n.RESET:e,i.yellow=e=>i.supported?n.YELLOW+e+n.RESET:e,i.blue=e=>i.supported?n.BLUE+e+n.RESET:e,i.magenta=e=>i.supported?n.MAGENTA+e+n.RESET:e,i.cyan=e=>i.supported?n.CYAN+e+n.RESET:e,i.white=e=>i.supported?n.WHITE+e+n.RESET:e,i}n.stdout=i(t.stdout,n),n.stderr=i(t.stderr),n.from=i,n.GRAY="",n.RED="",n.GREEN="",n.YELLOW="",n.BLUE="",n.MAGENTA="",n.CYAN="",n.WHITE="",n.RESET=""}).call(this,t(0))},function(e,n){n.parse=function(e,n){var t={},r=[],arguments=[],i=[],a={};Object.keys(n).forEach(e=>{if(!e.startsWith(" ")){var r=n[e];null!=r.alias&&("string"==typeof r.alias?a[r.alias]=e:Array.isArray(r.alias)&&r.alias.forEach(n=>a[n]=e)),null!=r.default&&(t[e]=r.default)}});for(var o=0,s=(e=e.slice()).length;ot[e]=s.value[e])}else r.push(i)}for(;o{var o=e[n];if(null!=o.description){for(var s="";s.length{for(let n=0;n=0?u.substring(l+1):u,i.statements=new Array,i.range=new o.Range(i,0,t.length),i.text=t,i}return i(n,e),Object.defineProperty(n.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),n}(l);n.Source=$;var ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.decorators=null,n.flags=a.CommonFlags.NONE,n}return i(n,e),n.prototype.is=function(e){return(this.flags&e)==e},n.prototype.isAny=function(e){return 0!=(this.flags&e)},n.prototype.set=function(e){this.flags|=e},n}(J);n.DeclarationStatement=ee;var ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INDEXSIGNATUREDECLARATION,n}return i(n,e),n}(ee);n.IndexSignatureDeclaration=ne;var te=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i(n,e),n}(ee);n.VariableLikeDeclarationStatement=te;var re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BLOCK,n}return i(n,e),n}(J);n.BlockStatement=re;var ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BREAK,n}return i(n,e),n}(J);n.BreakStatement=ie;var ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CLASSDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n}(ee);n.ClassDeclaration=ae;var oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CONTINUE,n}return i(n,e),n}(J);n.ContinueStatement=oe;var se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.DO,n}return i(n,e),n}(J);n.DoStatement=se;var ue=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EMPTY,n}return i(n,e),n}(J);n.EmptyStatement=ue;var le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMDECLARATION,n}return i(n,e),n}(ee);n.EnumDeclaration=le;var ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMVALUEDECLARATION,n}return i(n,e),n}(te);n.EnumValueDeclaration=ce;var fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTIMPORT,n}return i(n,e),n}(l);n.ExportImportStatement=fe;var de=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTMEMBER,n}return i(n,e),n}(l);n.ExportMember=de;var pe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORT,n}return i(n,e),n}(J);n.ExportStatement=pe;var he=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTDEFAULT,n}return i(n,e),n}(J);n.ExportDefaultStatement=he;var ge=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPRESSION,n}return i(n,e),n}(J);n.ExpressionStatement=ge;var xe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FIELDDECLARATION,n.parameterIndex=-1,n}return i(n,e),n}(te);n.FieldDeclaration=xe;var ve=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FOR,n}return i(n,e),n}(J);n.ForStatement=ve,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(n.ArrowKind||(n.ArrowKind={}));var me=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FUNCTIONDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},n}(ee);n.FunctionDeclaration=me;var _e=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IF,n}return i(n,e),n}(J);n.IfStatement=_e;var ye=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORTDECLARATION,n}return i(n,e),n}(ee);n.ImportDeclaration=ye;var be=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORT,n}return i(n,e),n}(J);n.ImportStatement=be;var Ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INTERFACEDECLARATION,n}return i(n,e),n}(ae);n.InterfaceDeclaration=Ee;var Te=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.METHODDECLARATION,n}return i(n,e),n}(me);n.MethodDeclaration=Te;var Ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.NAMESPACEDECLARATION,n}return i(n,e),n}(ee);n.NamespaceDeclaration=Ae;var Se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.RETURN,n}return i(n,e),n}(J);n.ReturnStatement=Se;var Fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCHCASE,n}return i(n,e),n}(l);n.SwitchCase=Fe;var Ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCH,n}return i(n,e),n}(J);n.SwitchStatement=Ie;var ze=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.THROW,n}return i(n,e),n}(J);n.ThrowStatement=ze;var Oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TRY,n}return i(n,e),n}(J);n.TryStatement=Oe;var Ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TYPEDECLARATION,n}return i(n,e),n}(ee);n.TypeDeclaration=Ne;var Re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLEDECLARATION,n}return i(n,e),n}(te);n.VariableDeclaration=Re;var Ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLE,n}return i(n,e),n}(J);n.VariableStatement=Ce;var Le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VOID,n}return i(n,e),n}(J);n.VoidStatement=Le;var we=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.WHILE,n}return i(n,e),n}(J);function ke(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}n.WhileStatement=we,n.findDecorator=function(e,n){if(n)for(var t=0,r=n.length;t";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var d=function(){function e(e,n,t){this.debugInfoRef=0,this.source=e,this.start=n,this.end=t}return e.join=function(n,t){if(n.source!=t.source)throw new Error("source mismatch");return new e(n.source,n.startt.end?n.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,n=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&n++;return n},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,n=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++n;return n},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();n.Range=d;var p=function(e){function n(n,t){void 0===t&&(t=null);var r=e.call(this,t)||this;r.end=0,r.pos=0,r.token=-1,r.tokenPos=0,r.nextToken=-1,r.nextTokenPos=0,r.nextTokenOnNewLine=!1,r.onComment=null,r.source=n,r.pos=0,r.end=n.text.length,r.diagnostics=t||new Array;var i=r.end,a=n.text;if(r.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=r){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,r));break}var a=e.charCodeAt(this.pos);if(a==n){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=n){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},n.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var n=this.source.text,t=n.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!r&&47==i)break;if(l.isLineBreak(i)){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(n,this.pos)},n.prototype.readRegexpFlags=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=0;this.pos57)&&95!=r)break;t++}return!0},n.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)t=i64_add(i64_shl(t,r),i64_new(u-48));else if(u>=65&&u<=70)t=i64_add(i64_shl(t,r),i64_new(10+u-65));else if(u>=97&&u<=102)t=i64_add(i64_shl(t,r),i64_new(10+u-97));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readDecimalInteger=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=i64_new(0),i=i64_new(10),a=n;this.pos=48&&u<=57)r=i64_add(i64_mul(r,i),i64_new(u-48));else{if(95!=u)break;a==o&&this.error(a==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),a=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Digit_expected,this.range(n)):a==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),r},n.prototype.readOctalInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(3),i=n,a=this.end;this.pos=48&&u<=55)t=i64_add(i64_shl(t,r),i64_new(u-48));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}++this.pos}return this.pos==n?this.error(s.DiagnosticCode.Octal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readBinaryInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(1),i=n,a=this.end;this.pos=48&&i<=57)n=(n<<4)+i-48;else if(i>=65&&i<=70)n=(n<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";n=(n<<4)+i+-87}if(0==--e)break}return e?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(n)},n.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,n=this.readHexInteger(),t=i64_low(n),r=!1;assert(!i64_high(n)),t>1114111&&(this.error(s.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),r=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),r=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(s.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),r=!0),r?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},n.prototype.finish=function(){},n}(s.DiagnosticEmitter);n.Tokenizer=p;var h=function(){};n.State=h;var g=null},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(n.DiagnosticCode||(n.DiagnosticCode={})),n.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)});Object.defineProperty(n,"__esModule",{value:!0});var a=t(0),o=t(1),s=t(17),u=t(22),l=t(24);function c(e){return e.text.includes("@nearfile")||d(e)}function f(e){return s.ASTBuilder.build(e)}function d(e){return(e.kind==a.NodeKind.SOURCE?e:e.range.source).sourceKind==a.SourceKind.USER_ENTRY}function p(e){return e.kind==a.NodeKind.CLASSDECLARATION}function h(e){return e.kind==a.NodeKind.FIELDDECLARATION}var g=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},n.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],n.sb=[],n.exportedClasses=new Map,n.wrappedFuncs=new Set,n}return i(n,e),n.build=function(e,t){return(new n).build(t)},n.nearFiles=function(e){return e.program.sources.filter(c)},n.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(f(e.name))||this.exportedClasses.set(f(e.name),e)},n.prototype.visitFunctionDeclaration=function(n){!d(n)||this.wrappedFuncs.has(f(n.name))||!n.is(o.CommonFlags.EXPORT)||0==n.signature.parameters.length&&"void"===f(n.signature.returnType)?e.prototype.visitFunctionDeclaration.call(this,n):(this.generateWrapperFunction(n),n.flags=n.flags^o.CommonFlags.EXPORT,this.wrappedFuncs.add(f(n.name)))},n.prototype.generateWrapperFunction=function(e){var n=e.signature,t=n.parameters,r=n.returnType,i=f(r).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),a=f(r).includes("null"),o=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+o+"(): void {"),t.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==f(r)?this.sb.push(" let result: "+f(r)+" = "+o+"("):this.sb.push(" "+o+"("),t.length>0&&(this.sb[this.sb.length-1]+=t.map(function(e){return x(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==f(r)&&this.sb.push("\n let encoder = new JSONEncoder();\n let val: Uint8Array;\n if ((isString<"+i+">() || isNullable<"+i+">()) && result == null) {\n encoder.setNull(null);\n val = encoder.serialize();\n } else {\n val = encode<"+i+">(result"+(a?"!":"")+", null, encoder);\n }\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+o+" as "+o+" }\n")},n.prototype.typeName=function(e){if(!p(e))return s.ASTBuilder.build(e);var n=f((e=e).name);return e.isGeneric&&(n+="<"+e.typeParameters.map(f).join(", ")+">"),n},n.prototype.getFields=function(e){var n=p(e)?e:this.exportedClasses.get(f(e));return null==n?[]:n.members.filter(function(e){return e.kind==a.NodeKind.FIELDDECLARATION}).map(function(e){return{name:f(e.name),type:e.type,isGeneric:v(n,e)}})},n.prototype.build=function(e){var n=this;this.sb=[l.preamble],this.visit(e);var t=e.statements.map(function(e){var t=s.ASTBuilder.build(e);if(p(e)){var r=e;if(t=t.slice(0,t.lastIndexOf("}")),r.members.filter(h).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var i=n.typeName(r);t+="\n static decode(json: Uint8Array): "+i+" {\n let value = instantiate<"+i+">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): "+i+' {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, "argument must be Uint8Array or Json Object");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): '+i+" {\n "+r.members.filter(h).map(function(e){var n=f(e.name);return x(e,"this."+n+' = obj.has("'+n+'") ? ')+": this."+n+";"}).join("\n ")+'\n return this;\n }\n\n _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+r.members.filter(h).map(function(e){var n=f(e.type),t=f(e.name);return"encode<"+n+", JSONEncoder>(this."+t+', "'+t+'", encoder);'}).join("\n ")+"\n encoder.popObject();\n return encoder;\n }\n\n encode(): Uint8Array {\n return this._encode().serialize();\n }\n\n serialize(): Uint8Array {\n return this.encode();\n }\n\n toJSON(): string {\n return this._encode().toString();\n }\n}"}return t});return this.sb.concat(t).join("\n")},n}(u.BaseVisitor);function x(e,n){return void 0===n&&(n=""),n+"decode<"+f(e.type)+', Obj>(obj, "'+f(e.name)+'")'}function v(e,n){return null!=e.typeParameters&&e.typeParameters.some(function(e){return f(e.name)==f(n.type)})}n.afterParse=function(e,n,t){g.nearFiles(e).forEach(function(r){var i=r.text.substr(0,r.text.indexOf("\n")).includes("out");e.donelog.delete(r.internalPath),e.seenlog.delete(r.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==r});var a=g.build(e,r);i&&n("out/"+r.normalizedPath,a,t),e.parseFile(a,(d(r)?"":"./")+r.normalizedPath,d(r))})}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(n.Feature||(n.Feature={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(n.Target||(n.Target={}))},function(e,n,t){"use strict";var r=this&&this.__decorate||function(e,n,t,r){var i,a=arguments.length,o=a<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,n,t,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(n,t,o):i(n,t))||o);return a>3&&o&&Object.defineProperty(n,t,o),o};Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(){}return r([()=>{}],e)}();n.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(n.TypeinfoFlags||(n.TypeinfoFlags={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i=t(5),a=t(2),o=t(5);function s(e){switch(e){case r.INFO:return"INFO";case r.WARNING:return"WARNING";case r.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case r.INFO:return n.COLOR_BLUE;case r.WARNING:return n.COLOR_YELLOW;case r.ERROR:return n.COLOR_RED;default:return assert(!1),""}}n.DiagnosticCode=o.DiagnosticCode,n.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(r=n.DiagnosticCategory||(n.DiagnosticCategory={})),n.diagnosticCategoryToString=s,n.COLOR_BLUE="",n.COLOR_YELLOW="",n.COLOR_RED="",n.COLOR_RESET="",n.diagnosticCategoryToColor=u;var l=function(){function e(e,n,t){this.range=null,this.relatedRange=null,this.code=e,this.category=n,this.message=t}return e.create=function(n,t,r,a,o){void 0===r&&(r=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(n);return null!=r&&(s=s.replace("{0}",r)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(n,t,s)},e.createInfo=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.INFO,t,i)},e.createWarning=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.WARNING,t,i)},e.createError=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function c(e,t){void 0===t&&(t=!1);for(var r=e.source.text,i=r.length,o=e.start,s=e.end;o>0&&!a.isLineBreak(r.charCodeAt(o-1));)o--;for(;s=0&&n<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(n))),i64_zero)},n.bitsetSet=function(e,n,t){return assert(n>=0&&n<64),t?i64_or(e,i64_shl(i64_one,i64_new(n))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(n))))}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(n.CharCode||(n.CharCode={})),n.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},n.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},n.isDecimalDigit=function(e){return e>=48&&e<=57},n.isOctalDigit=function(e){return e>=48&&e<=55},n.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,r);var n},n.isKeywordCharacter=function(e){return e>=97&&e<=122},n.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,i);var n};var r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,n){if(e>1),(r=n[t-=1&t])<=e&&e<=n[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0}),n.makeArray=function(e){if(void 0===e&&(e=null),e){for(var n=new Array(e.length),t=0,r=e.length;t0||r=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=n?e.substring(0,a):e.substring(0,a)+e.substring(t+3),r-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){r=(e=e.substring(t+4)).length;continue}}}t++}return r>0?e:"."}function o(e){var n=e.length;if(n<=1){if(0==n)return".";if(e.charCodeAt(0)==i)return e}for(;--n>0;)if(e.charCodeAt(n)==i)return e.substring(0,n);return"."}n.normalizePath=a,n.resolvePath=function(e,n){return e.startsWith("std/")?e:a(o(n)+r.PATH_DELIMITER+e)},n.dirname=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.indent=function(e,n){for(;n>=4;)e.push(" "),n-=4;n>=2&&(e.push(" "),n-=2),n&&e.push(" ")}},function(e,n,t){"use strict";function r(e,n){return e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24}function i(e,n,t){n[t]=e,n[t+1]=e>>>8,n[t+2]=e>>>16,n[t+3]=e>>>24}function a(e,n){var t=r(e,n),i=r(e,n+4);return i64_new(t,i)}Object.defineProperty(n,"__esModule",{value:!0}),n.readI8=function(e,n){return e[n]},n.writeI8=function(e,n,t){n[t]=e},n.readI16=function(e,n){return e[n]|e[n+1]<<8},n.writeI16=function(e,n,t){n[t]=e,n[t+1]=e>>>8},n.readI32=r,n.writeI32=i,n.readI64=a,n.writeI64=function(e,n,t){i(i64_low(e),n,t),i(i64_high(e),n,t+4)},n.readF32=function(e,n){return i32_as_f32(r(e,n))},n.writeF32=function(e,n,t){i(f32_as_i32(e),n,t)},n.readF64=function(e,n){return i64_as_f64(a(e,n))},n.writeF64=function(e,n,t){var r=f64_as_i64(e);i(i64_low(r),n,t),i(i64_high(r),n,t+4)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(0);t(18),t(19),t(20);var i=t(1),a=t(2),o=t(4),s=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(n){var t=new e;return t.visitNode(n),t.finish()},e.prototype.visitNode=function(e){switch(e.kind){case r.NodeKind.SOURCE:this.visitSource(e);break;case r.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case r.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case r.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case r.NodeKind.FALSE:case r.NodeKind.NULL:case r.NodeKind.SUPER:case r.NodeKind.THIS:case r.NodeKind.TRUE:case r.NodeKind.CONSTRUCTOR:case r.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case r.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case r.NodeKind.BINARY:this.visitBinaryExpression(e);break;case r.NodeKind.CALL:this.visitCallExpression(e);break;case r.NodeKind.CLASS:this.visitClassExpression(e);break;case r.NodeKind.COMMA:this.visitCommaExpression(e);break;case r.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case r.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case r.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case r.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case r.NodeKind.NEW:this.visitNewExpression(e);break;case r.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case r.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case r.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case r.NodeKind.BLOCK:this.visitBlockStatement(e);break;case r.NodeKind.BREAK:this.visitBreakStatement(e);break;case r.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case r.NodeKind.DO:this.visitDoStatement(e);break;case r.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case r.NodeKind.EXPORT:this.visitExportStatement(e);break;case r.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case r.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case r.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case r.NodeKind.FOR:this.visitForStatement(e);break;case r.NodeKind.IF:this.visitIfStatement(e);break;case r.NodeKind.IMPORT:this.visitImportStatement(e);break;case r.NodeKind.RETURN:this.visitReturnStatement(e);break;case r.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case r.NodeKind.THROW:this.visitThrowStatement(e);break;case r.NodeKind.TRY:this.visitTryStatement(e);break;case r.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case r.NodeKind.WHILE:this.visitWhileStatement(e);break;case r.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case r.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case r.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case r.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case r.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case r.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case r.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case r.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case r.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case r.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case r.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case r.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case r.NodeKind.DECORATOR:this.serializeDecorator(e);break;case r.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case r.NodeKind.PARAMETER:this.serializeParameter(e);break;case r.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var n=e.statements,t=0,r=n.length;t")}e.isNullable&&r.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var n=e.isNullable,t=this.sb;t.push(n?"((":"(");var r=e.explicitThisType;r&&(t.push("this: "),this.visitTypeNode(r));var i=e.parameters,a=i.length;if(a){r&&t.push(", "),this.serializeParameter(i[0]);for(var o=1;o "),this.visitTypeNode(s)):t.push(") => void"),n&&t.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var n=e.extendsType;n&&(this.sb.push(" extends "),this.visitTypeNode(n));var t=e.defaultType;t&&(this.sb.push("="),this.visitTypeNode(t))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var n=this.sb;n.push("[");var t=e.elementExpressions,r=t.length;if(r){t[0]&&this.visitNode(t[0]);for(var i=1;i"),this.visitNode(e.expression);break;case r.AssertionKind.AS:this.visitNode(e.expression),n.push(" as "),this.visitTypeNode(assert(e.toType));break;case r.AssertionKind.NONNULL:this.visitNode(e.expression),n.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var n=this.sb;this.visitNode(e.left),n.push(" "),n.push(o.operatorTokenToString(e.operator)),n.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var n=this.sb;this.visitNode(e.expression);var t=e.typeArguments;if(t){var r=t.length;if(r){n.push("<"),this.visitTypeNode(t[0]);for(var i=1;i(")}}else n.push("(");var a=e.arguments,o=a.length;if(o)for(this.visitNode(a[0]),i=1;ir&&t.push(e.substring(r,r=a+1)),t.push("\\0"),r=++a;break;case 8:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\b");break;case 9:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\t");break;case 10:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\n");break;case 11:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\v");break;case 12:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\f");break;case 13:a>r&&t.push(e.substring(r,a)),t.push("\\r"),r=++a;break;case 34:n?++a:(a>r&&t.push(e.substring(r,a)),t.push('\\"'),r=++a);break;case 39:n?(a>r&&t.push(e.substring(r,a)),t.push("\\'"),r=++a):++a;break;case 92:a>r&&t.push(e.substring(r,a)),t.push("\\\\"),r=++a;break;default:++a}a>r&&t.push(e.substring(r,a)),t.push(i)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var n=this.sb;n.push("/"),n.push(e.pattern),n.push("/"),n.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var n=this.sb;n.push("("),this.visitNode(e.expression),n.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var n=this.sb;this.visitNode(e.condition),n.push(" ? "),this.visitNode(e.ifThen),n.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(o.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(o.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var n=this.sb;if(n.length&&e.kind!=r.NodeKind.VARIABLE&&e.kind!=r.NodeKind.EXPRESSION){var t=n[n.length-1],i=t.length-1;i>=0&&(125==t.charCodeAt(i)||59==t.charCodeAt(i))?n.push("\n"):n.push(";\n")}else n.push(";\n")},e.prototype.visitBlockStatement=function(e){var n=this.sb,t=e.statements,r=t.length;if(r){n.push("{\n");for(var i=++this.indentLevel,o=0;o")}var c=e.extendsType;c&&(u.push(" extends "),this.visitTypeNode(c));var f=e.implementsTypes;if(f){var d=f.length;if(d)for(u.push(" implements "),this.visitTypeNode(f[0]),o=1;o")}}if(2==e.arrowKind){var u=t.parameters;assert(1==u.length),assert(!t.explicitThisType),this.serializeParameter(u[0])}else{n.push("(");var l=(u=t.parameters).length,c=t.explicitThisType;if(c&&(n.push("this: "),this.visitTypeNode(c)),l)for(c&&n.push(", "),this.serializeParameter(u[0]),s=1;s "),this.visitNode(f)):(assert(!r.isTypeOmitted(d)),n.push(" => "),this.visitTypeNode(d)):(r.isTypeOmitted(d)||e.isAny(i.CommonFlags.CONSTRUCTOR|i.CommonFlags.SET)?n.push(")"):(n.push("): "),this.visitTypeNode(d)),f&&(n.push(" "),this.visitNode(f)))},e.prototype.visitIfStatement=function(e){var n=this.sb;n.push("if ("),this.visitNode(e.condition),n.push(") ");var t=e.ifTrue;this.visitNode(t),t.kind!=r.NodeKind.BLOCK&&n.push(";\n");var i=e.ifFalse;i&&(t.kind==r.NodeKind.BLOCK?n.push(" else "):n.push("else "),this.visitNode(i))},e.prototype.visitImportDeclaration=function(e){var n=e.foreignName,t=e.name;this.visitIdentifierExpression(n),n.text!=t.text&&(this.sb.push(" as "),this.visitIdentifierExpression(t))},e.prototype.visitImportStatement=function(e){var n=this.sb;n.push("import ");var t=e.declarations,r=e.namespaceName;if(t){var i=t.length;if(i){n.push("{\n");var o=++this.indentLevel;a.indent(n,o),this.visitImportDeclaration(t[0]);for(var s=1;s")}var u=e.extendsType;u&&(o.push(" extends "),this.visitTypeNode(u)),o.push(" {\n");var l=++this.indentLevel,c=e.members;for(r=0,i=c.length;r")}}i.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var n=e.type,t=this.sb;e.flags&i.CommonFlags.DEFINITE_ASSIGNMENT&&t.push("!"),n&&(t.push(": "),this.visitTypeNode(n));var r=e.initializer;r&&(t.push(" = "),this.visitNode(r))},e.prototype.visitVariableStatement=function(e){var n=e.decorators;if(n)for(var t=0,r=n.length;t>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(n.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(n.i32=n.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(n.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(n.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(n.u32=n.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(n.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(n.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(n.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),n.clz=Math.clz32,n.ctz=function(e){var n=Math.clz32(e&-e);return e?31-n:n},n.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},n.rotl=function(e,n){return e<<(n&=31)|e>>>32-n},n.rotr=function(e,n){return e>>>(n&=31)|e<<32-n},n.abs=Math.abs,n.max=Math.max,n.min=Math.min,n.ceil=Math.ceil,n.floor=Math.floor,n.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},n.select=function(e,n,t){return t?e:n},n.sqrt=Math.sqrt,n.trunc=Math.trunc,n.copysign=function(e,n){return Math.abs(e)*Math.sign(n)},n.bswap=function(e){var n=e>>8&16711935,t=(16711935&e)<<8;return(n=(e=n|t)>>16&65535)|(65535&e)<<16},n.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",n.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",n.assert=function(e,n){if(e)return e;throw new a(n)},n.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,n){var t=this.split(e).join(n);return e.length||(t=n+t+n),t}}),n.isInteger=Number.isInteger,n.isFloat=function(e){return"number"==typeof e},n.isNullable=function(e){return!0},n.isReference=function(e){return"object"==typeof e||"string"==typeof e},n.isFunction=function(e){return"function"==typeof e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isArray=Array.isArray,n.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var n=new Array(e);return n.length=0,n},n.isDefined=function(e){return void 0!==e},n.isConstant=function(e){return!1},n.unchecked=function(e){return e},n.fmod=function(e,n){return e%n},n.fmodf=function(e,n){return Math.fround(e%n)},n.JSMath=Math;try{Object.defineProperties(n.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(r[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}n.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:n.__memory_allocate||function(n){if(!(n>>>=0))return 0;if(t+n>e.length){var r=e;(e=new Uint8Array(Math.max(65536,e.length+n,2*e.length))).set(r)}var i=t;return 7&(t+=n)&&(t=1+(7|t)),i},fill:n.__memory_fill||function(n,t,r){e.fill(t,n,n+r)},free:n.__memory_free||function(e){},copy:n.__memory_copy||function(n,t,r){e.copyWithin(n,t,t+r)},reset:n.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),n.store=n.__store||function(e,n,t){HEAP[(0|e)+(0|t)]=n},n.load=n.__load||function(e,n){return HEAP[(0|e)+(0|n)]},n.unmanaged=function(){}}).call(this,t(3))},function(e,n,t){(function(e){const n=new Float64Array(1),t=new Float32Array(n.buffer),r=new Int32Array(n.buffer);e.f32_as_i32=function(e){return t[0]=e,r[0]},e.i32_as_f32=function(e){return r[0]=e,t[0]},e.f64_as_i64=function(e){return n[0]=e,i64_new(r[0],r[1])},e.i64_as_f64=function(e){return r[0]=i64_low(e),r[1]=i64_high(e),n[0]}}).call(this,t(3))},function(e,n,t){(function(e){const n=e.Long||t(21);e.i64_zero=n.ZERO,e.i64_one=n.ONE,e.i64_new=function(e,t){return n.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,n){return e.add(n)},e.i64_sub=function(e,n){return e.sub(n)},e.i64_mul=function(e,n){return e.mul(n)},e.i64_div=function(e,n){return e.div(n)},e.i64_div_u=function(e,n){return e.toUnsigned().div(n.toUnsigned()).toSigned()},e.i64_rem=function(e,n){return e.mod(n)},e.i64_rem_u=function(e,n){return e.toUnsigned().mod(n.toUnsigned()).toSigned()},e.i64_and=function(e,n){return e.and(n)},e.i64_or=function(e,n){return e.or(n)},e.i64_xor=function(e,n){return e.xor(n)},e.i64_shl=function(e,n){return e.shl(n)},e.i64_shr=function(e,n){return e.shr(n)},e.i64_shr_u=function(e,n){return e.shru(n)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,n){return e.eq(n)},e.i64_ne=function(e,n){return e.ne(n)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var r=n.fromInt(t-1);return e.add(r).and(r.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const r=n.fromNumber(f32.MIN_SAFE_INTEGER),i=n.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(r)&&e.lte(i)};const a=n.fromNumber(f64.MIN_SAFE_INTEGER),o=n.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(n){return e.Math.fround(n.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,n){return(n?e.toUnsigned():e).toString(10)}}).call(this,t(3))},function(e,n){e.exports=r;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function r(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0}),r.isLong=i;var a={},o={};function s(e,n){var t,r,i;return n?(i=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(t=l(e,(0|e)<0?-1:0,!0),i&&(o[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function u(e,n){if(isNaN(e))return n?m:v;if(n){if(e<0)return m;if(e>=h)return T}else{if(e<=-g)return A;if(e+1>=g)return E}return e<0?u(-e,n).neg():l(e%p|0,e/p|0,n)}function l(e,n,t){return new r(e,n,t)}r.fromInt=s,r.fromNumber=u,r.fromBits=l;var c=Math.pow;function f(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return v;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return f(e.substring(1),n,t).neg();for(var i=u(c(t,8)),a=v,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return l+o;for(;l.length<6;)l="0"+l;o=""+l+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(A)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,n=31;n>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=d(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=d(e)),this.eq(e))return 0;var n=this.isNegative(),t=e.isNegative();return n&&!t?-1:!n&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(A)?A:this.not().add(_)},S.neg=S.negate,S.add=function(e){i(e)||(e=d(e));var n=this.high>>>16,t=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,u=e.low>>>16,c=0,f=0,p=0,h=0;return p+=(h+=a+(65535&e.low))>>>16,f+=(p+=r+u)>>>16,c+=(f+=t+s)>>>16,c+=n+o,l((p&=65535)<<16|(h&=65535),(c&=65535)<<16|(f&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=d(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return v;if(i(e)||(e=d(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return v;if(this.eq(A))return e.isOdd()?A:v;if(e.eq(A))return this.isOdd()?A:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(x)&&e.lt(x))return u(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,r=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,h=0,g=0,m=0,_=0;return m+=(_+=o*p)>>>16,g+=(m+=a*p)>>>16,m&=65535,g+=(m+=o*f)>>>16,h+=(g+=r*p)>>>16,g&=65535,h+=(g+=a*f)>>>16,g&=65535,h+=(g+=o*c)>>>16,h+=n*p+r*f+a*c+o*s,l((m&=65535)<<16|(_&=65535),(h&=65535)<<16|(g&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=d(e)),e.isZero())throw Error("division by zero");var n,r,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return m;if(e.gt(this.shru(1)))return y;a=m}else{if(this.eq(A))return e.eq(_)||e.eq(b)?A:e.eq(A)?_:(n=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?_:b:(r=this.sub(e.mul(n)),a=n.add(r.div(e)));if(e.eq(A))return this.unsigned?m:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=v}for(r=this;r.gte(e);){n=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),s=o<=48?1:c(2,o-48),f=u(n),p=f.mul(e);p.isNegative()||p.gt(r);)p=(f=u(n-=s,this.unsigned)).mul(e);f.isZero()&&(f=_),a=a.add(f),r=r.sub(p)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=d(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return l(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=d(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=d(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=d(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0==(e&=63))return this;var n=this.high;return e<32?l(this.low>>>e|n<<32-e,n>>>e,this.unsigned):l(32===e?n:n>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,n=this.low;return[255&n,n>>>8&255,n>>>16&255,n>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,n>>>24,n>>>16&255,n>>>8&255,255&n]},r.fromBytes=function(e,n,t){return t?r.fromBytesLE(e,n):r.fromBytesBE(e,n)},r.fromBytesLE=function(e,n){return new r(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},r.fromBytesBE=function(e,n){return new r(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}),a=this&&this.__values||function(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(n,"__esModule",{value:!0});var o=t(0),s=function(e){function n(n){var t=e.call(this,n)||this;return t.depth=0,t}return i(n,e),n.prototype._visit=function(e){switch(e.kind){case o.NodeKind.SOURCE:this.visitSource(e);break;case o.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case o.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case o.NodeKind.TYPENAME:this.visitTypeName(e);case o.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case o.NodeKind.FALSE:case o.NodeKind.NULL:case o.NodeKind.SUPER:case o.NodeKind.THIS:case o.NodeKind.TRUE:case o.NodeKind.CONSTRUCTOR:case o.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case o.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case o.NodeKind.BINARY:this.visitBinaryExpression(e);break;case o.NodeKind.CALL:this.visitCallExpression(e);break;case o.NodeKind.CLASS:this.visitClassExpression(e);break;case o.NodeKind.COMMA:this.visitCommaExpression(e);break;case o.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case o.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case o.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case o.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case o.NodeKind.NEW:this.visitNewExpression(e);break;case o.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case o.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case o.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case o.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case o.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case o.NodeKind.BLOCK:this.visitBlockStatement(e);break;case o.NodeKind.BREAK:this.visitBreakStatement(e);break;case o.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case o.NodeKind.DO:this.visitDoStatement(e);break;case o.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case o.NodeKind.EXPORT:this.visitExportStatement(e);break;case o.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case o.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case o.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case o.NodeKind.FOR:this.visitForStatement(e);break;case o.NodeKind.IF:this.visitIfStatement(e);break;case o.NodeKind.IMPORT:this.visitImportStatement(e);break;case o.NodeKind.RETURN:this.visitReturnStatement(e);break;case o.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case o.NodeKind.THROW:this.visitThrowStatement(e);break;case o.NodeKind.TRY:this.visitTryStatement(e);break;case o.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case o.NodeKind.WHILE:this.visitWhileStatement(e);break;case o.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case o.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case o.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case o.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case o.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case o.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case o.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case o.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case o.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case o.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case o.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case o.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case o.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case o.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case o.NodeKind.PARAMETER:this.visitParameter(e);break;case o.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},n.prototype.visitSource=function(e){var n,t;try{for(var r=a(e.statements),i=r.next();!i.done;i=r.next()){var o=i.value;this.depth++,this.visit(o),this.depth--}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}},n.prototype.visitTypeNode=function(e){},n.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},n.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},n.prototype.visitFunctionTypeNode=function(e){var n,t;try{for(var r=a(e.parameters),i=r.next();!i.done;i=r.next()){var o=i.value;this.visit(o)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}this.visit(e.returnType)},n.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},n.prototype.visitIdentifierExpression=function(e){},n.prototype.visitArrayLiteralExpression=function(e){var n=this;e.elementExpressions.map(function(e){e&&n.visit(e)})},n.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var n=0;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();n.DefaultWriter=a;var o=function(){function e(e){void 0===e&&(e=new a),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var n,t,a,o,s,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var l=r(e.entries()),c=l.next();!c.done;c=l.next()){var f=i(c.value,2),d=(f[0],f[1]);this.visit(d)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}else if(null!=(s=e)&&"function"==typeof s[Symbol.iterator])try{for(var p=r(e),h=p.next();!h.done;h=p.next())d=h.value,this.visit(d)}catch(e){a={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(a)throw a.error}}else this._visit(e)},e}();n.AbstractVisitor=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])},function(e,n){if(void 0===__WEBPACK_EXTERNAL_MODULE__11__){var t=new Error("Cannot find module 'assemblyscript'");throw t.code="MODULE_NOT_FOUND",t}e.exports=__WEBPACK_EXTERNAL_MODULE__11__},function(e){e.exports=JSON.parse('{"version":{"description":"Prints just the compiler\'s version and exits.","type":"b","alias":"v"},"help":{"description":"Prints this message and exits.","type":"b","alias":"h"},"optimize":{"description":["Optimizes the module. Also has the usual shorthands:",""," -O Uses defaults. Equivalent to -O3s"," -O0 Equivalent to --optimizeLevel 0"," -O1 Equivalent to --optimizeLevel 1"," -O2 Equivalent to --optimizeLevel 2"," -O3 Equivalent to --optimizeLevel 3"," -Oz Equivalent to -O but with --shrinkLevel 2"," -O3s Equivalent to -O3 with --shrinkLevel 1 etc.",""],"type":"b","alias":"O"},"optimizeLevel":{"description":"How much to focus on optimizing code. [0-3]","type":"i"},"shrinkLevel":{"description":"How much to focus on shrinking code size. [0-2, s=1, z=2]","type":"i"},"validate":{"description":"Validates the module using Binaryen. Exits if invalid.","type":"b","alias":"c","default":false},"baseDir":{"description":"Specifies the base directory of input and output files.","type":"s","default":"."},"outFile":{"description":"Specifies the output file. File extension indicates format.","type":"s","alias":"o"},"binaryFile":{"description":"Specifies the binary output file (.wasm).","type":"s","alias":"b"},"textFile":{"description":"Specifies the text output file (.wat).","type":"s","alias":"t"},"asmjsFile":{"description":"Specifies the asm.js output file (.js).","type":"s","alias":"a"},"idlFile":{"description":"Specifies the WebIDL output file (.webidl).","type":"s","alias":"i"},"tsdFile":{"description":"Specifies the TypeScript definition output file (.d.ts).","type":"s","alias":"d"},"sourceMap":{"description":["Enables source map generation. Optionally takes the URL","used to reference the source map from the binary file."],"type":"s"},"runtime":{"description":["Specifies the runtime variant to include in the program.",""," full Default runtime based on TLSF and reference counting."," half Same as \'full\', but not exported to the host."," stub Minimal stub implementation without free/GC support."," none Same as \'stub\', but not exported to the host.",""],"type":"s","default":"full"},"noUnsafe":{"description":["Disallows the use of unsafe features in user code.","Does not affect library files and external modules."],"type":"b","default":false},"debug":{"description":"Enables debug information in emitted binaries.","type":"b","default":false},"noAssert":{"description":"Replaces assertions with just their value without trapping.","type":"b","default":false},"noEmit":{"description":"Performs compilation as usual but does not emit code.","type":"b","default":false},"importMemory":{"description":"Imports the memory instance provided by the embedder.","type":"b","default":false},"sharedMemory":{"description":"Declare memory as shared by settings the max shared memory.","type":"i","default":0},"memoryBase":{"description":"Sets the start offset of compiler-generated static memory.","type":"i","default":0},"importTable":{"description":"Imports the function table instance provided by the embedder.","type":"b","default":false},"explicitStart":{"description":"Exports an explicit start function to be called manually.","type":"b","default":false},"lib":{"description":["Adds one or multiple paths to custom library components and","uses exports of all top-level files at this path as globals."],"type":"s"},"path":{"description":["Comma separated paths to look for dependencies.","Looks for folders with package.json that includes a \'ascMain\' field","or defaults to having an \'/assembly\' folder."],"type":"S"},"use":{"description":["Aliases a global object under another name, e.g., to switch","the default \'Math\' implementation used: --use Math=JSMath"],"type":"S","alias":"u"},"trapMode":{"description":["Sets the trap mode to use.",""," allow Allow trapping operations. This is the default."," clamp Replace trapping operations with clamping semantics."," js Replace trapping operations with JS semantics.",""],"type":"s","default":"allow"},"runPasses":{"description":["Specifies additional Binaryen passes to run after other","optimizations, if any. See: Binaryen/src/passes/pass.cpp"],"type":"s"},"enable":{"description":["Enables additional (experimental) WebAssembly features.",""," sign-extension Enables sign-extension operations"," mutable-global Enables mutable global imports and exports"," bulk-memory Enables bulk memory operations"," simd Enables SIMD types and operations."," threads Enables threading and atomic operations.",""],"type":"s"},"transform":{"description":"Specifies the path to a custom transform to \'require\'.","type":"S"},"traceResolution":{"description":"Enable tracing of package resolution.","type":"b","default":false},"listFiles":{"description":"List files to be compiled and exit.","type":"b","default":false},"measure":{"description":"Prints measuring information on I/O and compile times.","type":"b","default":false},"printrtti":{"description":"Prints the module\'s runtime type information to stderr.","type":"b","default":false},"noColors":{"description":"Disables terminal colors.","type":"b","default":false}," ...":{"description":"Specifies node.js options (CLI only). See: node --help"},"-Os":{"value":{"optimize":true,"shrinkLevel":1}},"-Oz":{"value":{"optimize":true,"shrinkLevel":2}},"-O0":{"value":{"optimizeLevel":0,"shrinkLevel":0}},"-O1":{"value":{"optimizeLevel":1,"shrinkLevel":0}},"-O2":{"value":{"optimizeLevel":2,"shrinkLevel":0}},"-O3":{"value":{"optimizeLevel":3,"shrinkLevel":0}},"-O0s":{"value":{"optimizeLevel":0,"shrinkLevel":1}},"-O1s":{"value":{"optimizeLevel":1,"shrinkLevel":1}},"-O2s":{"value":{"optimizeLevel":2,"shrinkLevel":1}},"-O3s":{"value":{"optimizeLevel":3,"shrinkLevel":1}},"-O0z":{"value":{"optimizeLevel":0,"shrinkLevel":2}},"-O1z":{"value":{"optimizeLevel":1,"shrinkLevel":2}},"-O2z":{"value":{"optimizeLevel":2,"shrinkLevel":2}},"-O3z":{"value":{"optimizeLevel":3,"shrinkLevel":2}},"notNear":{"description":"Prevent the instrumentation of the binding code for near","type":"b","default":false}}')},function(e,n){function t(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=13},function(e,n,t){(function(n,t){e.exports=n.hrtime||function(e){var n=.001*i.call(r),t=Math.floor(n),a=Math.floor(n%1*1e9);e&&(t-=e[0],(a-=e[1])<0&&(t--,a+=1e9));return[t,a]};var r=t.performance||{},i=r.now||r.mozNow||r.msNow||r.oNow||r.webkitNow||function(){return(new Date).getTime()}}).call(this,t(0),t(2))}])}); //# sourceMappingURL=asc.js.map \ No newline at end of file diff --git a/dist/asc.js.map b/dist/asc.js.map index 47c567de59..d81c5c3b5c 100644 --- a/dist/asc.js.map +++ b/dist/asc.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/./asc.js","webpack://asc/../node_modules/@protobufjs/utf8/index.js","webpack://asc/./util/colors.js","webpack://asc/./util/options.js","webpack://asc/./util/mkdirp.js","webpack://asc/../bindings/dist/transformerBundle.js","webpack://asc/external \"assemblyscript\"","webpack://asc/. sync","webpack://asc/../node_modules/browser-process-hrtime/index.js"],"names":["root","factory","exports","module","require","e","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__11__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","args","Array","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","g","Function","window","global","fs","utf8","colorsUtil","optionsUtil","mkdirp","EOL","SEP","nearBindings","nearLibEntry","removeAllListeners","assemblyscript","isDev","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","write","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","hrtime","times","formatTime","time","toFixed","printStats","stats","output","format","count","stdout","printRTTI","program","buildRTTI","register","project","e_ts","eval","stack","isBundle","version","options","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","nearEntry","array","arraybuffer","bindings/Date","bindings/Math","bindings/wasi_unstable","bindings/wasi","builtins","compat","dataview","date","diagnostics","error","fixedarray","heap","iterator","map","math","memory","number","polyfills","regexp","rt","rt/common","rt/index-full","rt/index-half","rt/index-none","rt/index-stub","rt/pure","rt/rtrace","rt/stub","rt/tlsf","set","shared/feature","shared/target","shared/typeinfo","string","symbol","table","typedarray","util/error","util/hash","util/memory","util/number","util/sort","util/string","vector","libDir","libFiles","sync","bundled","readFileSync","forEach","file","replace","definitionFiles","assembly","portable","stdDir","compileString","sources","input.ts","createMemoryStream","keys","val","isArray","String","main","readFile","writeFile","contents","listFiles","callback","readFileNode","writeFileNode","listFilesNode","opts","parse","noColors","supported","unknown","arg","yellow","trailing","err","red","help","out","color","white","cyan","baseDir","transforms","notNear","transform","parser","packages","Map","importPathMap","libPath","indexOf","parseFile","customLibDirs","lib","k","endsWith","j","libText","nodePaths","basePath","_path","_","dirFrom","reverse","getPaths","parseBacklog","sourcePath","sourceText","sysPath","nextFile","dependee","getDependee","startsWith","plainName","substring","indexName","traceResolution","_package","ascMain","has","package_json","JSON","mainFile","newPackage","realPath","_p","first","second","runtimeName","runtime","runtimePath","runtimeText","filename","applyTransform","finishParsing","normalizedPath","sort","optimizeLevel","shrinkLevel","optimize","max","compilerOptions","createOptions","setTarget","setNoAssert","noAssert","setImportMemory","importMemory","setSharedMemory","sharedMemory","setImportTable","importTable","setExplicitStart","explicitStart","setMemoryBase","memoryBase","setSourceMap","sourceMap","setOptimizeLevelHints","setNoUnsafe","noUnsafe","setGlobalAlias","use","aliases","part","alias","enable","flag","toUpperCase","enableFeature","compileProgram","dispose","validate","trapMode","runPasses","setOptimizeLevel","setShrinkLevel","setDebugInfo","debug","pass","noEmit","hasStdout","hasOutput","outFile","test","textFile","asmjsFile","binaryFile","wasm","sourceMapURL","toBinary","writeStdout","sourceRoot","text","stdName","sourceContents","stringify","asm","toAsmjs","idlFile","idl","buildIDL","tsdFile","tsd","buildTSD","wat","toText","printrtti","encoding","writeFileSync","files","readdirSync","used","allocBuffer","Buffer","allocUnsafe","Uint8Array","stream","chunk","buffer","reset","toBuffer","offset","toString","read","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","target","noLib","types","allowJs","fromCharCode","c1","c2","proc","isCI","base","colors","gray","GRAY","RESET","RED","green","GREEN","YELLOW","blue","BLUE","magenta","MAGENTA","CYAN","WHITE","config","option","default","match","exec","type","parseInt","parseFloat","indent","padding","eol","sb","description","line","_0777","made","undefined","mkdirSync","err0","stat","statSync","err1","isDirectory","__extends","setPrototypeOf","__proto__","constructor","a","Token","Range","u","SOURCE","NAMEDTYPE","FUNCTIONTYPE","TYPENAME","TYPEPARAMETER","PARAMETER","IDENTIFIER","ASSERTION","BINARY","CALL","CLASS","COMMA","ELEMENTACCESS","FALSE","FUNCTION","INSTANCEOF","LITERAL","NEW","NULL","PARENTHESIZED","PROPERTYACCESS","TERNARY","SUPER","THIS","TRUE","CONSTRUCTOR","UNARYPOSTFIX","UNARYPREFIX","BLOCK","BREAK","CONTINUE","DO","EMPTY","EXPORT","EXPORTDEFAULT","EXPORTIMPORT","EXPRESSION","FOR","IF","IMPORT","RETURN","SWITCH","THROW","TRY","VARIABLE","VOID","WHILE","CLASSDECLARATION","ENUMDECLARATION","ENUMVALUEDECLARATION","FIELDDECLARATION","FUNCTIONDECLARATION","IMPORTDECLARATION","INDEXSIGNATUREDECLARATION","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","TYPEDECLARATION","VARIABLEDECLARATION","DECORATOR","EXPORTMEMBER","SWITCHCASE","COMMENT","NodeKind","nodeIsConstantValue","nodeIsCallable","nodeIsGenericCallable","createTypeName","range","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","h","typeArguments","isNullable","createFunctionType","parameters","returnType","explicitThisType","createOmittedType","createTypeParameter","extendsType","defaultType","createParameter","initializer","parameterKind","createDecorator","v","decoratorKind","A","createComment","commentKind","y","isQuoted","createEmptyIdentifierExpression","createArrayLiteralExpression","R","elementExpressions","createAssertionExpression","assertionKind","expression","toType","createBinaryExpression","I","operator","left","right","createCallExpression","b","createClassExpression","L","declaration","createCommaExpression","C","expressions","createConstructorExpression","O","createElementAccessExpression","x","elementExpression","createFalseExpression","createFloatLiteralExpression","P","createFunctionExpression","D","createInstanceOfExpression","U","isType","createIntegerLiteralExpression","w","createNewExpression","M","createNullExpression","createObjectLiteralExpression","F","names","values","createParenthesizedExpression","K","createPropertyAccessExpression","B","createRegexpLiteralExpression","H","pattern","patternFlags","createTernaryExpression","G","condition","ifThen","ifElse","createStringLiteralExpression","Y","createSuperExpression","V","createThisExpression","z","createTrueExpression","X","createUnaryPostfixExpression","W","operand","createUnaryPrefixExpression","q","createBlockStatement","ne","statements","createBreakStatement","re","label","createClassDeclaration","se","flags","typeParameters","implementsTypes","members","decorators","createContinueStatement","ae","createDoStatement","oe","statement","createEmptyStatement","ue","createEnumDeclaration","ce","createEnumValueDeclaration","_e","createExportStatement","le","normalizePath","resolvePath","source","internalPath","we","isDeclare","createExportDefaultStatement","de","createExportImportStatement","pe","externalName","createExportMember","he","localName","exportedName","createExpressionStatement","Ee","createIfStatement","me","ifTrue","ifFalse","createImportStatement","Ne","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","Te","foreignName","createInterfaceDeclaration","ye","createFieldDeclaration","fe","createForStatement","Ae","incrementor","createFunctionDeclaration","ve","signature","body","arrowKind","createIndexSignatureDeclaration","te","keyType","valueType","createMethodDeclaration","Se","createNamespaceDeclaration","Re","createReturnStatement","ge","createSwitchStatement","be","cases","createSwitchCase","Ie","createThrowStatement","Le","createTryStatement","Ce","catchVariable","catchStatements","finallyStatements","createTypeDeclaration","Oe","createVariableStatement","Pe","createVariableDeclaration","xe","createVoidStatement","De","createWhileStatement","Ue","Node","TypeNode","kind","TypeName","NamedTypeNode","FunctionTypeNode","TypeParameterNode","DEFAULT","OPTIONAL","REST","ParameterKind","E","implicitFieldDeclaration","CommonFlags","NONE","is","isAny","assert","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","ParameterNode","DecoratorKind","decoratorNameToKind","DecoratorNode","LINE","TRIPLE","CommentKind","CommentNode","T","Expression","N","IdentifierExpression","FLOAT","INTEGER","STRING","REGEXP","ARRAY","OBJECT","LiteralKind","S","LiteralExpression","literalKind","ArrayLiteralExpression","PREFIX","AS","NONNULL","AssertionKind","AssertionExpression","BinaryExpression","configurable","CallExpression","ClassExpression","CommaExpression","CommonSymbols","ConstructorExpression","ElementAccessExpression","FloatLiteralExpression","FunctionExpression","InstanceOfExpression","IntegerLiteralExpression","NewExpression","null_","NullExpression","ObjectLiteralExpression","ParenthesizedExpression","PropertyAccessExpression","RegexpLiteralExpression","TernaryExpression","StringLiteralExpression","super_","SuperExpression","this_","ThisExpression","true_","TrueExpression","false_","FalseExpression","Q","UnaryExpression","UnaryPostfixExpression","UnaryPrefixExpression","Z","J","Statement","USER","USER_ENTRY","LIBRARY","LIBRARY_ENTRY","SourceKind","$","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","lastIndexOf","PATH_DELIMITER","simplePath","Source","ee","DeclarationStatement","IndexSignatureDeclaration","ie","VariableLikeDeclarationStatement","BlockStatement","BreakStatement","ClassDeclaration","ContinueStatement","DoStatement","EmptyStatement","EnumDeclaration","EnumValueDeclaration","ExportImportStatement","ExportMember","ExportStatement","ExportDefaultStatement","ExpressionStatement","parameterIndex","FieldDeclaration","ForStatement","ARROW_PARENTHESIZED","ARROW_SINGLE","ArrowKind","clone","FunctionDeclaration","IfStatement","ImportDeclaration","ImportStatement","InterfaceDeclaration","MethodDeclaration","NamespaceDeclaration","ReturnStatement","SwitchCase","SwitchStatement","ThrowStatement","TryStatement","TypeDeclaration","VariableDeclaration","VariableStatement","VoidStatement","WhileStatement","findDecorator","mangleInternalPath","isTypeOmitted","DECLARE","CONST","LET","STATIC","READONLY","ABSTRACT","PUBLIC","PRIVATE","PROTECTED","GET","SET","DEFINITE_ASSIGNMENT","AMBIENT","GENERIC","GENERIC_CONTEXT","INSTANCE","MODULE_EXPORT","MODULE_IMPORT","RESOLVED","COMPILED","INLINED","SCOPED","TRAMPOLINE","VIRTUAL","MAIN","QUOTED","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","INDEX_SUFFIX","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","boolean","native","indexof","valueof","returnof","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","FixedArray","Set","ArrayBufferView","ArrayBuffer","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","Feature","Target","Typeinfo","TypeinfoFlags","isPowerOf2","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DELETE","ELSE","ENUM","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","INTERFACE","IS","KEYOF","MODULE","NAMESPACE","OF","PACKAGE","TYPE","TYPEOF","VAR","WITH","YIELD","INVALID","OPENBRACE","CLOSEBRACE","OPENPAREN","CLOSEPAREN","OPENBRACKET","CLOSEBRACKET","DOT","DOT_DOT_DOT","SEMICOLON","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","EQUALS_GREATERTHAN","PLUS","MINUS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","QUESTION","COLON","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","AT","STRINGLITERAL","INTEGERLITERAL","FLOATLITERAL","ENDOFFILE","PREFER","ALWAYS","IdentifierHandling","tokenFromKeyword","tokenIsAlsoIdentifier","isIllegalVariableIdentifier","operatorTokenToString","debugInfoRef","pos","token","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","unsafeNext","MAX_VALUE","isDecimalDigit","DiagnosticCode","_0_expected","testInteger","isIdentifierStart","isKeywordCharacter","isIdentifierPart","isWhiteSpace","Invalid_character","peek","isLineBreak","skipIdentifier","skip","mark","discard","readIdentifier","readString","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","readRegexpPattern","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_new","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_mul","Digit_expected","Octal_digit_expected","Binary_digit_expected","readFloat","readDecimalFloat","readHexFloat","i64_low","i64_high","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","DiagnosticEmitter","Tokenizer","State","Operation_not_supported","Operation_is_unsafe","User_defined_0","Conversion_from_type_0_to_1_requires_an_explicit_cast","Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit","Type_0_cannot_be_changed_to_type_1","Type_0_cannot_be_reinterpreted_as_type_1","Basic_type_0_cannot_be_nullable","Cannot_export_a_mutable_global","Mutable_value_cannot_be_inlined","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","Unmanaged_classes_cannot_implement_interfaces","Implementation_0_must_match_the_signature_1","Class_0_is_sealed_and_cannot_be_extended","Decorator_0_is_not_valid_here","Duplicate_decorator","An_allocator_must_be_present_to_use_0","Optional_parameter_must_have_an_initializer","Constructor_of_class_0_must_not_require_any_arguments","Function_0_cannot_be_inlined_into_itself","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","Optional_properties_are_not_supported","Expression_must_be_a_compile_time_constant","Module_cannot_have_multiple_start_functions","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","Expression_is_unsafe","Expression_is_never_null","Identifier_expected","A_file_cannot_have_a_reference_to_itself","Trailing_comma_not_allowed","Unexpected_token","A_rest_parameter_must_be_last_in_a_parameter_list","Parameter_cannot_have_question_mark_and_initializer","A_required_parameter_cannot_follow_an_optional_parameter","Statements_are_not_allowed_in_ambient_contexts","Initializers_are_not_allowed_in_ambient_contexts","_0_modifier_cannot_be_used_here","A_rest_parameter_cannot_be_optional","A_rest_parameter_cannot_have_an_initializer","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","Enum_member_must_have_initializer","Type_parameters_cannot_appear_on_a_constructor_declaration","Type_annotation_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","A_set_accessor_cannot_have_a_return_type_annotation","Type_parameter_list_cannot_be_empty","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_return_statement_can_only_be_used_within_a_function_body","Expression_expected","Type_expected","A_default_clause_cannot_appear_more_than_once_in_a_switch_statement","Duplicate_label_0","An_export_assignment_cannot_have_modifiers","_case_or_default_expected","_super_must_be_followed_by_an_argument_list_or_member_access","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","Type_argument_expected","String_literal_expected","Line_break_not_permitted_here","Declaration_expected","_const_declarations_must_be_initialized","Interface_declaration_cannot_have_implements_clause","An_implementation_cannot_be_declared_in_ambient_contexts","Decorators_are_not_valid_here","_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","A_definite_assignment_assertion_is_not_permitted_in_this_context","A_class_may_only_extend_another_class","A_parameter_property_cannot_be_declared_using_a_rest_parameter","Duplicate_identifier_0","Cannot_find_name_0","Module_0_has_no_exported_member_1","Generic_type_0_requires_1_type_argument_s","Type_0_is_not_generic","Type_0_is_not_assignable_to_type_1","Index_signature_is_missing_in_type_0","_this_cannot_be_referenced_in_current_location","_super_can_only_be_referenced_in_a_derived_class","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","Property_0_does_not_exist_on_type_1","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","A_function_whose_declared_type_is_not_void_must_return_a_value","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access","Operator_0_cannot_be_applied_to_types_1_and_2","A_super_call_must_be_the_first_statement_in_the_constructor","Constructors_for_derived_classes_must_contain_a_super_call","_get_and_set_accessor_must_have_the_same_type","Constructor_implementation_is_missing","Function_implementation_is_missing_or_not_immediately_following_the_declaration","Multiple_constructor_implementations_are_not_allowed","Duplicate_function_implementation","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged","Type_0_has_no_property_1","The_0_operator_cannot_be_applied_to_type_1","In_const_enum_declarations_member_initializer_must_be_constant_expression","Export_declaration_conflicts_with_exported_declaration_of_0","Object_is_possibly_null","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","The_target_of_an_assignment_must_be_a_variable_or_a_property_access","Index_signature_in_type_0_only_permits_reading","Expected_0_arguments_but_got_1","Expected_at_least_0_arguments_but_got_1","Expected_0_type_arguments_but_got_1","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","Namespace_0_has_no_exported_member_1","Required_type_parameters_may_not_follow_optional_type_parameters","Duplicate_property_0","Type_0_has_no_call_signatures","File_0_not_found","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","diagnosticCodeToString","includes","ASTBuilder","build","typeMapping","nonNullableTypes","exportedClasses","wrappedFuncs","nearFiles","visitClassDeclaration","visitFunctionDeclaration","generateWrapperFunction","add","typeName","isGeneric","getFields","preamble","some","BaseVisitor","afterParse","donelog","delete","seenlog","SIGN_EXTENSION","MUTABLE_GLOBAL","BULK_MEMORY","SIMD","THREADS","WASM32","WASM64","JS","__decorate","getOwnPropertyDescriptor","Reflect","decorate","ARRAYBUFFERVIEW","MAP","ACYCLIC","VALUE_ALIGN_0","VALUE_ALIGN_1","VALUE_ALIGN_2","VALUE_ALIGN_3","VALUE_ALIGN_4","VALUE_SIGNED","VALUE_FLOAT","VALUE_NULLABLE","VALUE_MANAGED","KEY_ALIGN_0","KEY_ALIGN_1","KEY_ALIGN_2","KEY_ALIGN_3","KEY_ALIGN_4","KEY_SIGNED","KEY_FLOAT","KEY_NULLABLE","KEY_MANAGED","INFO","WARNING","ERROR","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCategory","diagnosticCategoryToString","COLOR_RESET","diagnosticCategoryToColor","relatedRange","category","message","createInfo","createWarning","createError","withRange","withRelatedRange","column","DiagnosticMessage","formatDiagnosticMessage","formatDiagnosticContext","emitDiagnostic","info","infoRelated","warning","warningRelated","errorRelated","bitsetIs","i64_ne","i64_and","i64_one","i64_zero","bitsetSet","i64_or","i64_not","LINEFEED","CARRIAGERETURN","LINESEPARATOR","PARAGRAPHSEPARATOR","NEXTLINE","SPACE","NONBREAKINGSPACE","ENQUAD","EMQUAD","ENSPACE","EMSPACE","THREEPEREMSPACE","FOURPEREMSPACE","SIXPEREMSPACE","FIGURESPACE","PUNCTUATIONSPACE","THINSPACE","HAIRSPACE","ZEROWIDTHSPACE","NARROWNOBREAKSPACE","IDEOGRAPHICSPACE","MATHEMATICALSPACE","OGHAM","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","BACKSLASH","BACKTICK","DOLLAR","DOUBLEQUOTE","HASH","SINGLEQUOTE","BACKSPACE","FORMFEED","BYTEORDERMARK","TAB","VERTICALTAB","CharCode","__values","done","__read","return","makeArray","unchecked","makeSet","makeMap","readI8","writeI8","readI16","writeI16","readI32","writeI32","readI64","writeI64","readF32","i32_as_f32","writeF32","f32_as_i32","readF64","i64_as_f64","writeF64","f64_as_i64","indentLevel","visitNode","visitSource","visitNamedTypeNode","visitFunctionTypeNode","visitTypeParameter","visitIdentifierExpression","visitAssertionExpression","visitBinaryExpression","visitCallExpression","visitClassExpression","visitCommaExpression","visitElementAccessExpression","visitFunctionExpression","visitInstanceOfExpression","visitLiteralExpression","visitNewExpression","visitParenthesizedExpression","visitPropertyAccessExpression","visitTernaryExpression","visitUnaryPostfixExpression","visitUnaryPrefixExpression","visitBlockStatement","visitBreakStatement","visitContinueStatement","visitDoStatement","visitEmptyStatement","visitExportStatement","visitExportDefaultStatement","visitExportImportStatement","visitExpressionStatement","visitForStatement","visitIfStatement","visitImportStatement","visitReturnStatement","visitSwitchStatement","visitThrowStatement","visitTryStatement","visitVariableStatement","visitWhileStatement","visitEnumDeclaration","visitEnumValueDeclaration","visitFieldDeclaration","visitImportDeclaration","visitIndexSignatureDeclaration","visitInterfaceDeclaration","visitMethodDeclaration","visitNamespaceDeclaration","visitTypeDeclaration","visitVariableDeclaration","serializeDecorator","visitExportMember","serializeParameter","visitSwitchCase","visitNodeAndTerminate","visitTypeNode","visitTypeName","visitStringLiteral","visitArrayLiteralExpression","visitObjectLiteralExpression","visitFunctionCommon","visitFloatLiteralExpression","visitIntegerLiteralExpression","visitStringLiteralExpression","visitRegexpLiteralExpression","i64_to_string","visitUnaryExpression","serializeExternalModifiers","serializeAccessModifiers","captureStackTrace","defineProperties","MIN_VALUE","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz","clz32","ctz","popcnt","rotl","rotr","abs","ceil","floor","nearest","trunc","round","select","sqrt","copysign","sign","bswap","bswap16","unreachable","changetype","fromCharCodes","fromCodePoints","fromCodePoint","replaceAll","isInteger","Number","isFloat","isReference","isFunction","isString","isArrayLike","isDefined","isConstant","fmod","fmodf","JSMath","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","allocate","__memory_allocate","fill","__memory_fill","__memory_free","copy","__memory_copy","copyWithin","__memory_reset","store","__store","HEAP","load","__load","unmanaged","Long","ZERO","ONE","fromBits","low","high","i64_sub","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","and","or","i64_xor","xor","shl","i64_shr","shr","i64_shr_u","shru","not","i64_eq","eq","i64_align","fromInt","i64_is_i8","i64_is_i16","i64_is_i32","i64_is_u8","i64_is_u16","i64_is_u32","i64_is_bool","fromNumber","i64_is_f32","gte","lte","i64_is_f64","i64_to_f32","toNumber","i64_to_f64","WebAssembly","Instance","Module","unsigned","__isLong__","isLong","isNaN","neg","RangeError","fromString","fromValue","UZERO","UONE","NEG_ONE","MAX_UNSIGNED_VALUE","toInt","isZero","isNegative","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","greaterThan","gt","greaterThanOrEqual","compare","negate","subtract","multiply","get_high","divide","div_u","div_s","log","LN2","modulo","rem_u","rem_s","rem","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","depth","_visit","visitDecoratorNode","visitParameter","visitSuperExpression","visitFalseExpression","visitTrueExpression","visitThisExpression","visitNullExperssion","visitConstructorExpression","visitVoidStatement","visitComment","AbstractVisitor","writeString","writeNode","DefaultWriter","writer","entries","webpackEmptyContext","req","id","previousTimestamp","clocktime","performanceNow","performance","seconds","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"assemblyscript\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__11__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Compiler frontend for node.js\n *\n * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to\n * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources\n * directly through ts-node if distribution files are not present (indicated by a `-dev` version).\n *\n * Can also be packaged as a bundle suitable for in-browser use with the standard library injected\n * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details.\n *\n * @module cli/asc\n */\n\n// Use \".\" instead of \"/\" as cwd in browsers\nif (process.browser) process.cwd = function() { return \".\"; };\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst utf8 = require(\"@protobufjs/utf8\");\nconst colorsUtil = require(\"./util/colors\");\nconst optionsUtil = require(\"./util/options\");\nconst mkdirp = require(\"./util/mkdirp\");\nconst EOL = process.platform === \"win32\" ? \"\\r\\n\" : \"\\n\";\nconst SEP = process.platform === \"win32\" ? \"\\\\\" : \"/\";\nconst nearBindings = require(\"../bindings/dist/transformerBundle.js\");\nconst nearLibEntry = path.join(__dirname, \"..\", \"bindings\", \"assembly\", \"nearEntry.ts\");\n// global.Binaryen = require(\"../lib/binaryen\");\n\n// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional\n// useless code fragment on top of an actual error. suppress this:\nif (process.removeAllListeners) process.removeAllListeners(\"uncaughtException\");\n\n// Use distribution files if present, otherwise run the sources directly\nvar assemblyscript, isDev = false;\n(() => {\n try { // `asc` on the command line\n assemblyscript = require(\"../dist/assemblyscript.js\");\n } catch (e) {\n try { // `asc` on the command line without dist files\n require(\"ts-node\").register({ project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\") });\n require(\"../src/glue/js\");\n assemblyscript = require(\"../src\");\n isDev = true;\n } catch (e_ts) {\n try { // `require(\"dist/asc.js\")` in explicit browser tests\n assemblyscript = eval(\"require('./assemblyscript')\");\n } catch (e) {\n // combine both errors that lead us here\n e.stack = e_ts.stack + \"\\n---\\n\" + e.stack;\n throw e;\n }\n }\n }\n})();\n\n/** Whether this is a webpack bundle or not. */\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\n\n/** Whether asc runs the sources directly or not. */\nexports.isDev = isDev;\n\n/** AssemblyScript version. */\nexports.version = exports.isBundle ? BUNDLE_VERSION : require(\"../package.json\").version;\n\n/** Available CLI options. */\nexports.options = require(\"./asc.json\");\n\n/** Common root used in source maps. */\nexports.sourceMapRoot = \"assemblyscript:///\";\n\n/** Prefix used for library files. */\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\n\n/** Default Binaryen optimization level. */\nexports.defaultOptimizeLevel = 3;\n\n/** Default Binaryen shrink level. */\nexports.defaultShrinkLevel = 1;\n\n/** Bundled library files. */\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle\n const libDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\n const libFiles = require(\"glob\").sync(\"**/!(*.d).ts\", { cwd: libDir })\n const bundled = {\n \"nearEntry\": fs.readFileSync(nearLibEntry, \"utf8\")\n };\n libFiles.forEach(file => bundled[file.replace(/\\.ts$/, \"\")] = fs.readFileSync(path.join(libDir, file), \"utf8\" ));\n return bundled;\n})();\n\n/** Bundled definition files. */\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle\n const stdDir = path.join(__dirname, \"..\", \"std\");\n return {\n \"assembly\": fs.readFileSync(path.join(stdDir, \"assembly\", \"index.d.ts\"), \"utf8\"),\n \"portable\": fs.readFileSync(path.join(stdDir, \"portable\", \"index.d.ts\"), \"utf8\")\n };\n})();\n\n/** Convenience function that parses and compiles source strings directly. */\nexports.compileString = (sources, options) => {\n if (typeof sources === \"string\") sources = { \"input.ts\": sources };\n const output = Object.create({\n stdout: createMemoryStream(),\n stderr: createMemoryStream()\n });\n var argv = [\n \"--binaryFile\", \"binary\",\n \"--textFile\", \"text\",\n ];\n Object.keys(options || {}).forEach(key => {\n var val = options[key];\n if (Array.isArray(val)) val.forEach(val => argv.push(\"--\" + key, String(val)));\n else argv.push(\"--\" + key, String(val));\n });\n exports.main(argv.concat(Object.keys(sources)), {\n stdout: output.stdout,\n stderr: output.stderr,\n readFile: name => sources.hasOwnProperty(name) ? sources[name] : null,\n writeFile: (name, contents) => output[name] = contents,\n listFiles: () => []\n });\n return output;\n}\n\n/** Runs the command line utility using the specified arguments array. */\nexports.main = function main(argv, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (!options) {\n options = {};\n }\n\n const stdout = options.stdout || process.stdout;\n const stderr = options.stderr || process.stderr;\n const readFile = options.readFile || readFileNode;\n const writeFile = options.writeFile || writeFileNode;\n const listFiles = options.listFiles || listFilesNode;\n const stats = options.stats || createStats();\n\n // Output must be specified if not present in the environment\n if (!stdout) throw Error(\"'options.stdout' must be specified\");\n if (!stderr) throw Error(\"'options.stderr' must be specified\");\n\n const opts = optionsUtil.parse(argv, exports.options);\n const args = opts.options;\n argv = opts.arguments;\n if (args.noColors) {\n colorsUtil.stdout.supported =\n colorsUtil.stderr.supported = false;\n } else {\n colorsUtil.stdout = colorsUtil.from(stdout);\n colorsUtil.stderr = colorsUtil.from(stderr);\n }\n\n // Check for unknown arguments\n if (opts.unknown.length) {\n opts.unknown.forEach(arg => {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unknown option '\" + arg + \"'\" + EOL);\n });\n }\n\n // Check for trailing arguments\n if (opts.trailing.length) {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unsupported trailing arguments: \" + opts.trailing.join(\" \") + EOL);\n }\n\n // Use default callback if none is provided\n if (!callback) callback = function defaultCallback(err) {\n var code = 0;\n if (err) {\n stderr.write(colorsUtil.stderr.red(\"ERROR: \") + err.stack.replace(/^ERROR: /i, \"\") + EOL);\n code = 1;\n }\n return code;\n };\n\n // Just print the version if requested\n if (args.version) {\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + EOL);\n return callback(null);\n }\n // Print the help message if requested or no source files are provided\n if (args.help || !argv.length) {\n var out = args.help ? stdout : stderr;\n var color = args.help ? colorsUtil.stdout : colorsUtil.stderr;\n out.write([\n color.white(\"SYNTAX\"),\n \" \" + color.cyan(\"asc\") + \" [entryFile ...] [options]\",\n \"\",\n color.white(\"EXAMPLES\"),\n \" \" + color.cyan(\"asc\") + \" hello.ts\",\n \" \" + color.cyan(\"asc\") + \" hello.ts -b hello.wasm -t hello.wat\",\n \" \" + color.cyan(\"asc\") + \" hello1.ts hello2.ts -b -O > hello.wasm\",\n \"\",\n color.white(\"OPTIONS\"),\n ].concat(\n optionsUtil.help(exports.options, 24, EOL)\n ).join(EOL) + EOL);\n return callback(null);\n }\n\n // I/O must be specified if not present in the environment\n if (!fs.readFileSync) {\n if (readFile === readFileNode) throw Error(\"'options.readFile' must be specified\");\n if (writeFile === writeFileNode) throw Error(\"'options.writeFile' must be specified\");\n if (listFiles === listFilesNode) throw Error(\"'options.listFiles' must be specified\");\n }\n\n // Set up base directory\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : \".\";\n\n // Set up transforms\n const transforms = args.notNear ? [] : [nearBindings];\n //Add near's bindings by default\n if (args.transform) {\n args.transform.forEach(transform =>\n transforms.push(\n require(\n path.isAbsolute(transform = transform.trim())\n ? transform\n : path.join(process.cwd(), transform)\n )\n )\n );\n }\n function applyTransform(name, ...args) {\n transforms.forEach(transform => {\n if (typeof transform[name] === \"function\") transform[name](...args);\n });\n }\n\n // Begin parsing\n var parser = null;\n\n // Maps package names to parent directory\n var packages = new Map();\n var importPathMap = new Map();\n\n // Include library files\n Object.keys(exports.libraryFiles).forEach(libPath => {\n if (libPath.indexOf(\"/\") >= 0) return; // in sub-directory: imported on demand\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n exports.libraryFiles[libPath],\n exports.libraryPrefix + libPath + \".ts\",\n false,\n parser\n );\n });\n });\n const customLibDirs = [];\n if (args.lib) {\n let lib = args.lib;\n if (typeof lib === \"string\") lib = lib.split(\",\");\n Array.prototype.push.apply(customLibDirs, lib.map(lib => lib.trim()));\n for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom\n let libDir = customLibDirs[i];\n let libFiles;\n if (libDir.endsWith(\".ts\")) {\n libFiles = [ path.basename(libDir) ];\n libDir = path.dirname(libDir);\n } else {\n libFiles = listFiles(libDir, baseDir) || [];\n }\n for (let j = 0, l = libFiles.length; j < l; ++j) {\n let libPath = libFiles[j];\n let libText = readFile(libPath, libDir);\n if (libText === null) return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\n stats.parseCount++;\n exports.libraryFiles[libPath.replace(/\\.ts$/, \"\")] = libText;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n libText,\n exports.libraryPrefix + libPath,\n false,\n parser\n );\n });\n }\n }\n }\n args.path = args.path || [];\n // Find all valid node_module paths starting at baseDir\n function nodePaths(basePath, _path) {\n return basePath.split(SEP)\n .map((_, i, arr) => {\n let dir = arr.slice(0, i + 1).join(SEP) || SEP;\n let dirFrom = path.relative(baseDir, dir);\n return path.join(dirFrom, _path);\n })\n .filter(dir => listFiles(dir, baseDir))\n .reverse();\n }\n function getPaths(basePath) {\n let paths = args.path.map(p => nodePaths(basePath, p));\n return nodePaths(basePath, \"node_modules\").concat(...paths)\n }\n\n // Parses the backlog of imported files after including entry files\n function parseBacklog() {\n var sourcePath, sourceText, sysPath;\n // dependee is the path of the file that depends on sourcePath\n while ((sourcePath = parser.nextFile()) != null) {\n dependee = importPathMap.get(assemblyscript.getDependee(parser, sourcePath)) || baseDir;\n sourceText = null;\n sysPath = null;\n \n // Load library file if explicitly requested\n if (sourcePath.startsWith(exports.libraryPrefix)) {\n const plainName = sourcePath.substring(exports.libraryPrefix.length);\n const indexName = sourcePath.substring(exports.libraryPrefix.length) + \"/index\";\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n sourceText = readFile(plainName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(customLibDirs[i], plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(customLibDirs[i], indexName + \".ts\");\n break;\n }\n }\n }\n }\n\n // Otherwise try nextFile.ts, nextFile/index.ts, ~lib/nextFile.ts, ~lib/nextFile/index.ts\n } else {\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(plainName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n sysPath = path.join(baseDir, sourcePath);\n } else {\n sourceText = readFile(indexName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n } else if (!plainName.startsWith(\".\")) {\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n const dir = customLibDirs[i];\n sourceText = readFile(plainName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(dir, plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(dir, indexName + \".ts\");\n break;\n }\n }\n }\n }\n }\n }\n }\n /*\n In this case the library wasn't found so we check paths\n */\n if (sourceText == null) {\n if (args.traceResolution) {\n stderr.write(\"Looking for '\" + sourcePath + \"' imported by '\" + dependee + \"'\" + EOL);\n }\n paths = getPaths(path.join(baseDir, dependee));\n let _package = sourcePath.replace(/\\~lib\\/([^\\/]*).*/, \"$1\");\n for (let _path of paths) {\n let ascMain = (() => {\n if (packages.has(_package)) {\n return packages.get(_package);\n }\n let p = path.join(_path, _package, \"package.json\");\n let res = readFile(p, baseDir);\n if (res) {\n let package_json;\n try {\n package_json = JSON.parse(res);\n } catch (e) {\n return callback(Error(\"Parsing \" + p + \" failed\"));\n }\n let mainFile = package_json.ascMain;\n if (mainFile && (typeof mainFile === 'string')) {\n let newPackage = mainFile.replace(/(.*)\\/index\\.ts/, '$1');\n packages.set(_package, newPackage);\n return newPackage;\n }\n }\n return \"assembly\";\n })()\n let realPath = (_p) => {\n if (_p.startsWith(exports.libraryPrefix)){\n _p = _p.substring(exports.libraryPrefix.length);\n }\n let first = _p.substring(0, _p.indexOf(\"/\"));\n let second = _p.substring(_p.indexOf(\"/\") + 1);\n return path.join(_path, first, ascMain, second);\n }\n if (args.traceResolution) {\n stderr.write(\" in '\" + realPath(sourcePath) + \"'\");\n }\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(realPath(plainName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n } else {\n sourceText = readFile(realPath(indexName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n }\n }\n if (sourceText !== null) {\n if (args.traceResolution) {\n stderr.write(EOL + \" -> '\" + realPath(sourcePath) + \"'\" + EOL);\n }\n let newPath = path.join(_path, _package);\n sysPath = newPath;\n break;\n }\n if (args.traceResolution) {\n stderr.write(EOL);\n }\n }\n }\n if (sourceText == null) {\n return callback(Error(\"Import file '\" + sourcePath + \".ts' not found.\"));\n }\n importPathMap.set(sourcePath.replace(/\\.ts$/, \"\"), sysPath);\n stats.parseCount++;\n stats.parseTime += measure(() => {\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\n });\n }\n if (checkDiagnostics(parser, stderr)) {\n return callback(Error(\"Parse error\"));\n }\n }\n\n // Include runtime template before entry files so its setup runs first\n {\n let runtimeName = String(args.runtime);\n let runtimePath = \"rt/index-\" + runtimeName;\n let runtimeText = exports.libraryFiles[runtimePath];\n if (runtimeText == null) {\n runtimePath = runtimeName;\n runtimeText = readFile(runtimePath + \".ts\", baseDir);\n if (runtimeText == null) {\n return callback(Error(\"Runtime '\" + runtimeName + \"' not found.\"));\n }\n } else {\n runtimePath = \"~lib/\" + runtimePath;\n }\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser);\n });\n }\n\n // Include entry files\n for (let i = 0, k = argv.length; i < k; ++i) {\n const filename = argv[i];\n\n let sourcePath = String(filename).replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\n // Setting the path to relative path\n sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath) : sourcePath;\n\n // Try entryPath.ts, then entryPath/index.ts\n let sourceText = readFile(sourcePath + \".ts\", baseDir);\n if (sourceText === null) {\n sourceText = readFile(sourcePath + \"/index.ts\", baseDir);\n if (sourceText === null) {\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\n } else {\n sourcePath += \"/index.ts\";\n }\n } else {\n sourcePath += \".ts\";\n }\n\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\n });\n }\n\n // Parse entry files\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Call afterParse transform hook\n applyTransform(\"afterParse\", parser, writeFile, baseDir);\n\n // Parse additional files, if any\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Finish parsing\n const program = assemblyscript.finishParsing(parser);\n\n // Print files and exit if listFiles\n if (args.listFiles) {\n stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL);\n return callback(null);\n }\n\n // Set up optimization levels\n var optimizeLevel = 0;\n var shrinkLevel = 0;\n if (args.optimize) {\n optimizeLevel = exports.defaultOptimizeLevel;\n shrinkLevel = exports.defaultShrinkLevel;\n }\n if (typeof args.optimizeLevel === \"number\") {\n optimizeLevel = args.optimizeLevel;\n }\n if (typeof args.shrinkLevel === \"number\") {\n shrinkLevel = args.shrinkLevel;\n }\n optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3);\n shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2);\n\n // Begin compilation\n const compilerOptions = assemblyscript.createOptions();\n assemblyscript.setTarget(compilerOptions, 0);\n assemblyscript.setNoAssert(compilerOptions, args.noAssert);\n assemblyscript.setImportMemory(compilerOptions, args.importMemory);\n assemblyscript.setSharedMemory(compilerOptions, args.sharedMemory);\n assemblyscript.setImportTable(compilerOptions, args.importTable);\n assemblyscript.setExplicitStart(compilerOptions, args.explicitStart);\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\n assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel);\n assemblyscript.setNoUnsafe(compilerOptions, args.noUnsafe);\n\n // Initialize default aliases\n assemblyscript.setGlobalAlias(compilerOptions, \"Math\", \"NativeMath\");\n assemblyscript.setGlobalAlias(compilerOptions, \"Mathf\", \"NativeMathf\");\n assemblyscript.setGlobalAlias(compilerOptions, \"abort\", \"~lib/builtins/abort\");\n assemblyscript.setGlobalAlias(compilerOptions, \"trace\", \"~lib/builtins/trace\");\n\n // Add or override aliases if specified\n if (args.use) {\n let aliases = args.use;\n for (let i = 0, k = aliases.length; i < k; ++i) {\n let part = aliases[i];\n let p = part.indexOf(\"=\");\n if (p < 0) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n let alias = part.substring(0, p).trim();\n let name = part.substring(p + 1).trim();\n if (!alias.length) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n assemblyscript.setGlobalAlias(compilerOptions, alias, name);\n }\n }\n\n // Enable additional features if specified\n var features = args.enable;\n if (features != null) {\n if (typeof features === \"string\") features = features.split(\",\");\n for (let i = 0, k = features.length; i < k; ++i) {\n let name = features[i].trim();\n let flag = assemblyscript[\"FEATURE_\" + name.replace(/\\-/g, \"_\").toUpperCase()];\n if (!flag) return callback(Error(\"Feature '\" + name + \"' is unknown.\"));\n assemblyscript.enableFeature(compilerOptions, flag);\n }\n }\n\n var module;\n stats.compileCount++;\n try {\n stats.compileTime += measure(() => {\n module = assemblyscript.compileProgram(program, compilerOptions);\n });\n } catch (e) {\n return callback(e);\n }\n if (checkDiagnostics(parser, stderr)) {\n if (module) module.dispose();\n return callback(Error(\"Compile error\"));\n }\n\n // Validate the module if requested\n if (args.validate) {\n stats.validateCount++;\n stats.validateTime += measure(() => {\n if (!module.validate()) {\n module.dispose();\n return callback(Error(\"Validate error\"));\n }\n });\n }\n\n // Set Binaryen-specific options\n if (args.trapMode === \"clamp\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-clamp\" ]);\n });\n } else if (args.trapMode === \"js\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-js\" ]);\n });\n } else if (args.trapMode !== \"allow\") {\n module.dispose();\n return callback(Error(\"Unsupported trap mode\"));\n }\n\n // Implicitly run costly non-LLVM optimizations on -O3 or -Oz\n // see: https://github.com/WebAssembly/binaryen/pull/1596\n if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;\n\n module.setOptimizeLevel(optimizeLevel);\n module.setShrinkLevel(shrinkLevel);\n module.setDebugInfo(args.debug);\n\n var runPasses = [];\n if (args.runPasses) {\n if (typeof args.runPasses === \"string\") {\n args.runPasses = args.runPasses.split(\",\");\n }\n if (args.runPasses.length) {\n args.runPasses.forEach(pass => {\n if (runPasses.indexOf(pass) < 0)\n runPasses.push(pass);\n });\n }\n }\n\n // Optimize the module if requested\n if (optimizeLevel > 0 || shrinkLevel > 0) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.optimize();\n });\n }\n\n // Run additional passes if requested\n if (runPasses.length) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses(runPasses.map(pass => pass.trim()));\n });\n }\n\n // Prepare output\n if (!args.noEmit) {\n let hasStdout = false;\n let hasOutput = false;\n\n if (args.outFile != null) {\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null) {\n args.textFile = args.outFile;\n } else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null) {\n args.asmjsFile = args.outFile;\n } else if (args.binaryFile == null) {\n args.binaryFile = args.outFile;\n }\n }\n\n // Write binary\n if (args.binaryFile != null) {\n let sourceMapURL = args.sourceMap != null\n ? args.sourceMap.length\n ? args.sourceMap\n : path.basename(args.binaryFile) + \".map\"\n : null;\n\n let wasm;\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wasm = module.toBinary(sourceMapURL)\n });\n\n if (args.binaryFile.length) {\n writeFile(args.binaryFile, wasm.output, baseDir);\n } else {\n writeStdout(wasm.output);\n hasStdout = true;\n }\n hasOutput = true;\n\n // Post-process source map\n if (wasm.sourceMap != null) {\n if (args.binaryFile.length) {\n let sourceMap = JSON.parse(wasm.sourceMap);\n sourceMap.sourceRoot = exports.sourceMapRoot;\n sourceMap.sources.forEach((name, index) => {\n let text = null;\n if (name.startsWith(exports.libraryPrefix)) {\n let stdName = name.substring(exports.libraryPrefix.length).replace(/\\.ts$/, \"\");\n if (exports.libraryFiles.hasOwnProperty(stdName)) {\n text = exports.libraryFiles[stdName];\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n text = readFile(name.substring(exports.libraryPrefix.length), customLibDirs[i]);\n if (text !== null) break;\n }\n }\n } else {\n text = readFile(name, baseDir);\n }\n if (text === null) {\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\n }\n if (!sourceMap.sourceContents) sourceMap.sourceContents = [];\n sourceMap.sourceContents[index] = text;\n });\n writeFile(path.join(\n path.dirname(args.binaryFile),\n path.basename(sourceMapURL)\n ).replace(/^\\.\\//, \"\"), JSON.stringify(sourceMap), baseDir);\n } else {\n stderr.write(\"Skipped source map (stdout already occupied)\" + EOL);\n }\n }\n }\n\n // Write asm.js\n if (args.asmjsFile != null) {\n let asm;\n if (args.asmjsFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeFile(args.asmjsFile, asm, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeStdout(asm);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write WebIDL\n if (args.idlFile != null) {\n let idl;\n if (args.idlFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeFile(args.idlFile, idl, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeStdout(idl);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write TypeScript definition\n if (args.tsdFile != null) {\n let tsd;\n if (args.tsdFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeFile(args.tsdFile, tsd, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeStdout(tsd);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write text (must be last)\n if (args.textFile != null || !hasOutput) {\n let wat;\n if (args.textFile && args.textFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText();\n });\n writeFile(args.textFile, wat, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText()\n });\n writeStdout(wat);\n }\n }\n }\n\n module.dispose();\n if (args.measure) {\n printStats(stats, stderr);\n }\n if (args.printrtti) {\n printRTTI(program, stderr);\n }\n return callback(null);\n\n function readFileNode(filename, baseDir) {\n let name = path.resolve(baseDir, filename);\n try {\n let text;\n stats.readCount++;\n stats.readTime += measure(() => {\n text = fs.readFileSync(name, { encoding: \"utf8\" });\n });\n return text;\n } catch (e) {\n return null;\n }\n }\n\n function writeFileNode(filename, contents, baseDir) {\n try {\n stats.writeCount++;\n stats.writeTime += measure(() => {\n mkdirp(path.join(baseDir, path.dirname(filename)));\n if (typeof contents === \"string\") {\n fs.writeFileSync(path.join(baseDir, filename), contents, { encoding: \"utf8\" } );\n } else {\n fs.writeFileSync(path.join(baseDir, filename), contents);\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function listFilesNode(dirname, baseDir) {\n var files;\n try {\n stats.readTime += measure(() => {\n files = fs.readdirSync(path.join(baseDir, dirname)).filter(file => /^(?!.*\\.d\\.ts$).*\\.ts$/.test(file));\n });\n return files;\n } catch (e) {\n return null;\n }\n }\n\n function writeStdout(contents) {\n if (!writeStdout.used) {\n stats.writeCount++;\n writeStdout.used = true;\n }\n stats.writeTime += measure(() => {\n if (typeof contents === \"string\") {\n stdout.write(contents, { encoding: \"utf8\" });\n } else {\n stdout.write(contents);\n }\n });\n }\n}\n\n/** Checks diagnostics emitted so far for errors. */\nfunction checkDiagnostics(emitter, stderr) {\n var diagnostic;\n var hasErrors = false;\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\n if (stderr) {\n stderr.write(\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\n EOL + EOL\n );\n }\n if (assemblyscript.isError(diagnostic)) hasErrors = true;\n }\n return hasErrors;\n}\n\nexports.checkDiagnostics = checkDiagnostics;\n\n/** Creates an empty set of stats. */\nfunction createStats() {\n return {\n readTime: 0,\n readCount: 0,\n writeTime: 0,\n writeCount: 0,\n parseTime: 0,\n parseCount: 0,\n compileTime: 0,\n compileCount: 0,\n emitTime: 0,\n emitCount: 0,\n validateTime: 0,\n validateCount: 0,\n optimizeTime: 0,\n optimizeCount: 0\n };\n}\n\nexports.createStats = createStats;\n\nif (!process.hrtime) process.hrtime = require(\"browser-process-hrtime\");\n\n/** Measures the execution time of the specified function. */\nfunction measure(fn) {\n const start = process.hrtime();\n fn();\n const times = process.hrtime(start);\n return times[0] * 1e9 + times[1];\n}\n\nexports.measure = measure;\n\n/** Formats a high resolution time to a human readable string. */\nfunction formatTime(time) {\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\n}\n\nexports.formatTime = formatTime;\n\n/** Formats and prints out the contents of a set of stats. */\nfunction printStats(stats, output) {\n function format(time, count) {\n return formatTime(time);\n }\n (output || process.stdout).write([\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\n ].join(EOL) + EOL);\n}\n\nexports.printStats = printStats;\n\n/** Prints runtime type information. */\nfunction printRTTI(program, output) {\n if (!output) output = process.stderr;\n output.write(\"# Runtime type information (RTTI)\\n\");\n output.write(assemblyscript.buildRTTI(program));\n}\n\nexports.printRTTI = printRTTI;\n\nvar allocBuffer = typeof global !== \"undefined\" && global.Buffer\n ? global.Buffer.allocUnsafe || function(len) { return new global.Buffer(len); }\n : function(len) { return new Uint8Array(len) };\n\n/** Creates a memory stream that can be used in place of stdout/stderr. */\nfunction createMemoryStream(fn) {\n var stream = [];\n stream.write = function(chunk) {\n if (fn) fn(chunk);\n if (typeof chunk === \"string\") {\n let buffer = allocBuffer(utf8.length(chunk));\n utf8.write(chunk, buffer, 0);\n chunk = buffer;\n }\n this.push(chunk);\n };\n stream.reset = function() {\n stream.length = 0;\n };\n stream.toBuffer = function() {\n var offset = 0, i = 0, k = this.length;\n while (i < k) offset += this[i++].length;\n var buffer = allocBuffer(offset);\n offset = i = 0;\n while (i < k) {\n buffer.set(this[i], offset);\n offset += this[i].length;\n ++i;\n }\n return buffer;\n };\n stream.toString = function() {\n var buffer = this.toBuffer();\n return utf8.read(buffer, 0, buffer.length);\n };\n return stream;\n}\n\nexports.createMemoryStream = createMemoryStream;\n\n/** Compatible TypeScript compiler options for syntax highlighting etc. */\nexports.tscOptions = {\n alwaysStrict: true,\n noImplicitAny: true,\n noImplicitReturns: true,\n noImplicitThis: true,\n noEmitOnError: true,\n strictNullChecks: true,\n experimentalDecorators: true,\n target: \"esnext\",\n module: \"commonjs\",\n noLib: true,\n types: [],\n allowJs: false\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var proc = typeof process !== \"undefined\" && process || {};\nvar isCI = proc.env && \"CI\" in proc.env; // doesn't work when bundled because 'process' is a mock\n\nfunction from(stream, base) {\n var colors = base || {};\n colors.supported = (stream && !!stream.isTTY) || isCI;\n colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text;\n colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text;\n colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text;\n colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text;\n colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text;\n colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text;\n colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text;\n colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text;\n return colors;\n}\n\nexports.stdout = from(proc.stdout, exports);\nexports.stderr = from(proc.stderr);\nexports.from = from;\n\nexports.GRAY = \"\\u001b[90m\";\nexports.RED = \"\\u001b[91m\";\nexports.GREEN = \"\\u001b[92m\";\nexports.YELLOW = \"\\u001b[93m\";\nexports.BLUE = \"\\u001b[94m\";\nexports.MAGENTA = \"\\u001b[95m\";\nexports.CYAN = \"\\u001b[96m\";\nexports.WHITE = \"\\u001b[97m\";\nexports.RESET = \"\\u001b[0m\";\n","// type | meaning\n// -----|---------------\n// b | boolean\n// i | integer\n// f | float\n// s | string\n// I | integer array\n// F | float array\n// S | string array\n\n/** Parses the specified command line arguments according to the given configuration. */\nfunction parse(argv, config) {\n var options = {};\n var unknown = [];\n var arguments = [];\n var trailing = [];\n\n // make an alias map and initialize defaults\n var aliases = {};\n Object.keys(config).forEach(key => {\n if (key.startsWith(\" \")) return;\n var option = config[key];\n if (option.alias != null) {\n if (typeof option.alias === \"string\") aliases[option.alias] = key;\n else if (Array.isArray(option.alias)) option.alias.forEach(alias => aliases[alias] = key);\n }\n if (option.default != null) options[key] = option.default;\n });\n\n // iterate over argv\n for (var i = 0, k = (argv = argv.slice()).length; i < k; ++i) {\n let arg = argv[i];\n if (arg == \"--\") { ++i; break; }\n let match = /^(?:(\\-\\w)(?:=(.*))?|(\\-\\-\\w{2,})(?:=(.*))?)$/.exec(arg), option, key;\n if (match) {\n if (config[arg]) option = config[key = arg]; // exact\n else if (match[1] != null) { // alias\n option = config[key = aliases[match[1].substring(1)]];\n if (option && match[2] != null) argv[i--] = match[2];\n } else if (match[3] != null) { // full\n option = config[key = match[3].substring(2)];\n if (option && match[4] != null) argv[i--] = match[4];\n }\n } else {\n if (arg.charCodeAt(0) == 45) option = config[key = arg]; // exact\n else { arguments.push(arg); continue; } // argument\n }\n if (option) {\n if (option.type == null || option.type === \"b\") options[key] = true; // flag\n else {\n if (i + 1 < argv.length && argv[i + 1].charCodeAt(0) != 45) { // present\n switch (option.type) {\n case \"i\": options[key] = parseInt(argv[++i], 10); break;\n case \"I\": options[key] = (options[key] || []).concat(parseInt(argv[++i], 10)); break;\n case \"f\": options[key] = parseFloat(argv[++i]); break;\n case \"F\": options[key] = (options[key] || []).concat(parseFloat(argv[++i])); break;\n case \"s\": options[key] = String(argv[++i]); break;\n case \"S\": options[key] = (options[key] || []).concat(argv[++i].split(\",\")); break;\n default: unknown.push(arg); --i;\n }\n } else { // omitted\n switch (option.type) {\n case \"i\":\n case \"f\": options[key] = option.default || 0; break;\n case \"s\": options[key] = option.default || \"\"; break;\n case \"I\":\n case \"F\":\n case \"S\": options[key] = options.default || []; break;\n default: unknown.push(arg);\n }\n }\n }\n if (option.value) Object.keys(option.value).forEach(k => options[k] = option.value[k]);\n } else unknown.push(arg);\n }\n while (i < k) trailing.push(argv[i++]); // trailing\n\n return { options, unknown, arguments, trailing };\n}\n\nexports.parse = parse;\n\n/** Generates the help text for the specified configuration. */\nfunction help(config, options) {\n if (!options) options = {};\n var indent = options.indent || 2;\n var padding = options.padding || 24;\n var eol = options.eol || \"\\n\";\n var sb = [];\n Object.keys(config).forEach(key => {\n var option = config[key];\n if (option.description == null) return;\n var text = \"\";\n while (text.length < indent) text += \" \";\n text += \"--\" + key;\n if (option.alias) text += \", -\" + option.alias;\n while (text.length < padding) text += \" \";\n if (Array.isArray(option.description)) {\n sb.push(text + option.description[0] + option.description.slice(1).map(line => {\n for (let i = 0; i < padding; ++i) line = \" \" + line;\n return eol + line;\n }).join(\"\"));\n } else sb.push(text + option.description);\n });\n return sb.join(eol);\n}\n\nexports.help = help;\n","/*\nCopyright 2010 James Halliday (mail@substack.net)\n\nThis project is free software released under the MIT/X11 license:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nvar path = require(\"path\");\nvar fs = require(\"fs\");\nvar _0777 = parseInt(\"0777\", 8);\n\nmodule.exports = function mkdirp(p, opts, made) {\n if (!opts || typeof opts !== \"object\") {\n opts = { mode: opts };\n }\n var mode = opts.mode;\n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n p = path.resolve(p);\n try {\n fs.mkdirSync(p, mode);\n made = made || p;\n } catch (err0) {\n switch (err0.code) {\n case \"ENOENT\":\n made = mkdirp(path.dirname(p), opts, made);\n mkdirp(p, opts, made);\n break;\n default:\n var stat;\n try {\n stat = fs.statSync(p);\n } catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n return made;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.transformer=t():e.transformer=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=6)}([function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]=\"SOURCE\",e[e.NAMEDTYPE=1]=\"NAMEDTYPE\",e[e.FUNCTIONTYPE=2]=\"FUNCTIONTYPE\",e[e.TYPENAME=3]=\"TYPENAME\",e[e.TYPEPARAMETER=4]=\"TYPEPARAMETER\",e[e.PARAMETER=5]=\"PARAMETER\",e[e.IDENTIFIER=6]=\"IDENTIFIER\",e[e.ASSERTION=7]=\"ASSERTION\",e[e.BINARY=8]=\"BINARY\",e[e.CALL=9]=\"CALL\",e[e.CLASS=10]=\"CLASS\",e[e.COMMA=11]=\"COMMA\",e[e.ELEMENTACCESS=12]=\"ELEMENTACCESS\",e[e.FALSE=13]=\"FALSE\",e[e.FUNCTION=14]=\"FUNCTION\",e[e.INSTANCEOF=15]=\"INSTANCEOF\",e[e.LITERAL=16]=\"LITERAL\",e[e.NEW=17]=\"NEW\",e[e.NULL=18]=\"NULL\",e[e.PARENTHESIZED=19]=\"PARENTHESIZED\",e[e.PROPERTYACCESS=20]=\"PROPERTYACCESS\",e[e.TERNARY=21]=\"TERNARY\",e[e.SUPER=22]=\"SUPER\",e[e.THIS=23]=\"THIS\",e[e.TRUE=24]=\"TRUE\",e[e.CONSTRUCTOR=25]=\"CONSTRUCTOR\",e[e.UNARYPOSTFIX=26]=\"UNARYPOSTFIX\",e[e.UNARYPREFIX=27]=\"UNARYPREFIX\",e[e.BLOCK=28]=\"BLOCK\",e[e.BREAK=29]=\"BREAK\",e[e.CONTINUE=30]=\"CONTINUE\",e[e.DO=31]=\"DO\",e[e.EMPTY=32]=\"EMPTY\",e[e.EXPORT=33]=\"EXPORT\",e[e.EXPORTDEFAULT=34]=\"EXPORTDEFAULT\",e[e.EXPORTIMPORT=35]=\"EXPORTIMPORT\",e[e.EXPRESSION=36]=\"EXPRESSION\",e[e.FOR=37]=\"FOR\",e[e.IF=38]=\"IF\",e[e.IMPORT=39]=\"IMPORT\",e[e.RETURN=40]=\"RETURN\",e[e.SWITCH=41]=\"SWITCH\",e[e.THROW=42]=\"THROW\",e[e.TRY=43]=\"TRY\",e[e.VARIABLE=44]=\"VARIABLE\",e[e.VOID=45]=\"VOID\",e[e.WHILE=46]=\"WHILE\",e[e.CLASSDECLARATION=47]=\"CLASSDECLARATION\",e[e.ENUMDECLARATION=48]=\"ENUMDECLARATION\",e[e.ENUMVALUEDECLARATION=49]=\"ENUMVALUEDECLARATION\",e[e.FIELDDECLARATION=50]=\"FIELDDECLARATION\",e[e.FUNCTIONDECLARATION=51]=\"FUNCTIONDECLARATION\",e[e.IMPORTDECLARATION=52]=\"IMPORTDECLARATION\",e[e.INDEXSIGNATUREDECLARATION=53]=\"INDEXSIGNATUREDECLARATION\",e[e.INTERFACEDECLARATION=54]=\"INTERFACEDECLARATION\",e[e.METHODDECLARATION=55]=\"METHODDECLARATION\",e[e.NAMESPACEDECLARATION=56]=\"NAMESPACEDECLARATION\",e[e.TYPEDECLARATION=57]=\"TYPEDECLARATION\",e[e.VARIABLEDECLARATION=58]=\"VARIABLEDECLARATION\",e[e.DECORATOR=59]=\"DECORATOR\",e[e.EXPORTMEMBER=60]=\"EXPORTMEMBER\",e[e.SWITCHCASE=61]=\"SWITCHCASE\",e[e.COMMENT=62]=\"COMMENT\"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName(\"\",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text=\"\",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new j;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(\".\")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]=\"DEFAULT\",e[e.OPTIONAL=1]=\"OPTIONAL\",e[e.REST=2]=\"REST\"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if(\"builtin\"==t)return E.BUILTIN;break;case 101:if(\"external\"==t)return E.EXTERNAL;break;case 103:if(\"global\"==t)return E.GLOBAL;break;case 105:if(\"inline\"==t)return E.INLINE;break;case 108:if(\"lazy\"==t)return E.LAZY;break;case 111:if(\"operator\"==t)return E.OPERATOR;break;case 115:if(\"sealed\"==t)return E.SEALED;break;case 117:if(\"unmanaged\"==t)return E.UNMANAGED;if(\"unsafe\"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),\"operator\"==t)switch(i.charCodeAt(0)){case 98:if(\"binary\"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case\"prefix\":return E.OPERATOR_PREFIX;case\"postfix\":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]=\"CUSTOM\",e[e.GLOBAL=1]=\"GLOBAL\",e[e.OPERATOR=2]=\"OPERATOR\",e[e.OPERATOR_BINARY=3]=\"OPERATOR_BINARY\",e[e.OPERATOR_PREFIX=4]=\"OPERATOR_PREFIX\",e[e.OPERATOR_POSTFIX=5]=\"OPERATOR_POSTFIX\",e[e.UNMANAGED=6]=\"UNMANAGED\",e[e.SEALED=7]=\"SEALED\",e[e.INLINE=8]=\"INLINE\",e[e.EXTERNAL=9]=\"EXTERNAL\",e[e.BUILTIN=10]=\"BUILTIN\",e[e.LAZY=11]=\"LAZY\",e[e.UNSAFE=12]=\"UNSAFE\"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]=\"LINE\",e[e.TRIPLE=1]=\"TRIPLE\",e[e.BLOCK=2]=\"BLOCK\"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]=\"FLOAT\",e[e.INTEGER=1]=\"INTEGER\",e[e.STRING=2]=\"STRING\",e[e.REGEXP=3]=\"REGEXP\",e[e.ARRAY=4]=\"ARRAY\",e[e.OBJECT=5]=\"OBJECT\"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]=\"PREFIX\",e[e.AS=1]=\"AS\",e[e.NONNULL=2]=\"NONNULL\"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,\"typeArgumentsRange\",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"argumentsRange\",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text=\"constructor\",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text=\"null\",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text=\"super\",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text=\"this\",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text=\"true\",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text=\"false\",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=j;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=Q;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(Q);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(Q);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]=\"USER\",e[e.USER_ENTRY=1]=\"USER_ENTRY\",e[e.LIBRARY=2]=\"LIBRARY\",e[e.LIBRARY_ENTRY=3]=\"LIBRARY_ENTRY\"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,\"isLibrary\",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]=\"NONE\",e[e.ARROW_PARENTHESIZED=1]=\"ARROW_PARENTHESIZED\",e[e.ARROW_SINGLE=2]=\"ARROW_SINGLE\"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(\".ts\")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i\";case s.LESSTHAN_EQUALS:return\"<=\";case s.GREATERTHAN_EQUALS:return\">=\";case s.EQUALS_EQUALS:return\"==\";case s.EXCLAMATION_EQUALS:return\"!=\";case s.EQUALS_EQUALS_EQUALS:return\"===\";case s.EXCLAMATION_EQUALS_EQUALS:return\"!==\";case s.PLUS:return\"+\";case s.MINUS:return\"-\";case s.ASTERISK_ASTERISK:return\"**\";case s.ASTERISK:return\"*\";case s.SLASH:return\"/\";case s.PERCENT:return\"%\";case s.PLUS_PLUS:return\"++\";case s.MINUS_MINUS:return\"--\";case s.LESSTHAN_LESSTHAN:return\"<<\";case s.GREATERTHAN_GREATERTHAN:return\">>\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return\">>>\";case s.AMPERSAND:return\"&\";case s.BAR:return\"|\";case s.CARET:return\"^\";case s.EXCLAMATION:return\"!\";case s.TILDE:return\"~\";case s.AMPERSAND_AMPERSAND:return\"&&\";case s.BAR_BAR:return\"||\";case s.EQUALS:return\"=\";case s.PLUS_EQUALS:return\"+=\";case s.MINUS_EQUALS:return\"-=\";case s.ASTERISK_EQUALS:return\"*=\";case s.ASTERISK_ASTERISK_EQUALS:return\"**=\";case s.SLASH_EQUALS:return\"/=\";case s.PERCENT_EQUALS:return\"%=\";case s.LESSTHAN_LESSTHAN_EQUALS:return\"<<=\";case s.GREATERTHAN_GREATERTHAN_EQUALS:return\">>=\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return\">>>=\";case s.AMPERSAND_EQUALS:return\"&=\";case s.BAR_EQUALS:return\"|=\";case s.CARET_EQUALS:return\"^=\";default:return assert(!1),\"\"}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error(\"source mismatch\");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,\"atStart\",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"atEnd\",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"line\",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"column\",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),\"\";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return\"\\0\";case 98:return\"\\b\";case 116:return\"\\t\";case 110:return\"\\n\";case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),\"\";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),\"\"):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?\"\":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Operation_not_supported=100]=\"Operation_not_supported\",e[e.Operation_is_unsafe=101]=\"Operation_is_unsafe\",e[e.User_defined_0=102]=\"User_defined_0\",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]=\"Conversion_from_type_0_to_1_requires_an_explicit_cast\",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]=\"Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit\",e[e.Type_0_cannot_be_changed_to_type_1=202]=\"Type_0_cannot_be_changed_to_type_1\",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]=\"Type_0_cannot_be_reinterpreted_as_type_1\",e[e.Basic_type_0_cannot_be_nullable=204]=\"Basic_type_0_cannot_be_nullable\",e[e.Cannot_export_a_mutable_global=205]=\"Cannot_export_a_mutable_global\",e[e.Mutable_value_cannot_be_inlined=206]=\"Mutable_value_cannot_be_inlined\",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]=\"Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa\",e[e.Unmanaged_classes_cannot_implement_interfaces=208]=\"Unmanaged_classes_cannot_implement_interfaces\",e[e.Invalid_regular_expression_flags=209]=\"Invalid_regular_expression_flags\",e[e.Implementation_0_must_match_the_signature_1=210]=\"Implementation_0_must_match_the_signature_1\",e[e.Class_0_is_sealed_and_cannot_be_extended=211]=\"Class_0_is_sealed_and_cannot_be_extended\",e[e.Decorator_0_is_not_valid_here=212]=\"Decorator_0_is_not_valid_here\",e[e.Duplicate_decorator=213]=\"Duplicate_decorator\",e[e.An_allocator_must_be_present_to_use_0=214]=\"An_allocator_must_be_present_to_use_0\",e[e.Optional_parameter_must_have_an_initializer=215]=\"Optional_parameter_must_have_an_initializer\",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]=\"Constructor_of_class_0_must_not_require_any_arguments\",e[e.Function_0_cannot_be_inlined_into_itself=217]=\"Function_0_cannot_be_inlined_into_itself\",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]=\"Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set\",e[e.Optional_properties_are_not_supported=219]=\"Optional_properties_are_not_supported\",e[e.Expression_must_be_a_compile_time_constant=220]=\"Expression_must_be_a_compile_time_constant\",e[e.Module_cannot_have_multiple_start_functions=221]=\"Module_cannot_have_multiple_start_functions\",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]=\"_0_must_be_a_value_between_1_and_2_inclusive\",e[e._0_must_be_a_power_of_two=223]=\"_0_must_be_a_power_of_two\",e[e.Expression_is_unsafe=224]=\"Expression_is_unsafe\",e[e.Expression_is_never_null=225]=\"Expression_is_never_null\",e[e.Unterminated_string_literal=1002]=\"Unterminated_string_literal\",e[e.Identifier_expected=1003]=\"Identifier_expected\",e[e._0_expected=1005]=\"_0_expected\",e[e.A_file_cannot_have_a_reference_to_itself=1006]=\"A_file_cannot_have_a_reference_to_itself\",e[e.Trailing_comma_not_allowed=1009]=\"Trailing_comma_not_allowed\",e[e.Unexpected_token=1012]=\"Unexpected_token\",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]=\"A_rest_parameter_must_be_last_in_a_parameter_list\",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]=\"Parameter_cannot_have_question_mark_and_initializer\",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]=\"A_required_parameter_cannot_follow_an_optional_parameter\",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]=\"Statements_are_not_allowed_in_ambient_contexts\",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]=\"Initializers_are_not_allowed_in_ambient_contexts\",e[e._0_modifier_cannot_be_used_here=1042]=\"_0_modifier_cannot_be_used_here\",e[e.A_rest_parameter_cannot_be_optional=1047]=\"A_rest_parameter_cannot_be_optional\",e[e.A_rest_parameter_cannot_have_an_initializer=1048]=\"A_rest_parameter_cannot_have_an_initializer\",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]=\"A_set_accessor_must_have_exactly_one_parameter\",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]=\"A_set_accessor_parameter_cannot_have_an_initializer\",e[e.A_get_accessor_cannot_have_parameters=1054]=\"A_get_accessor_cannot_have_parameters\",e[e.Enum_member_must_have_initializer=1061]=\"Enum_member_must_have_initializer\",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]=\"Type_parameters_cannot_appear_on_a_constructor_declaration\",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]=\"Type_annotation_cannot_appear_on_a_constructor_declaration\",e[e.An_accessor_cannot_have_type_parameters=1094]=\"An_accessor_cannot_have_type_parameters\",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]=\"A_set_accessor_cannot_have_a_return_type_annotation\",e[e.Type_parameter_list_cannot_be_empty=1098]=\"Type_parameter_list_cannot_be_empty\",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]=\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement\",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]=\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement\",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]=\"A_return_statement_can_only_be_used_within_a_function_body\",e[e.Expression_expected=1109]=\"Expression_expected\",e[e.Type_expected=1110]=\"Type_expected\",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]=\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement\",e[e.Duplicate_label_0=1114]=\"Duplicate_label_0\",e[e.An_export_assignment_cannot_have_modifiers=1120]=\"An_export_assignment_cannot_have_modifiers\",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]=\"Octal_literals_are_not_allowed_in_strict_mode\",e[e.Digit_expected=1124]=\"Digit_expected\",e[e.Hexadecimal_digit_expected=1125]=\"Hexadecimal_digit_expected\",e[e.Unexpected_end_of_text=1126]=\"Unexpected_end_of_text\",e[e.Invalid_character=1127]=\"Invalid_character\",e[e._case_or_default_expected=1130]=\"_case_or_default_expected\",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]=\"_super_must_be_followed_by_an_argument_list_or_member_access\",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]=\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context\",e[e.Type_argument_expected=1140]=\"Type_argument_expected\",e[e.String_literal_expected=1141]=\"String_literal_expected\",e[e.Line_break_not_permitted_here=1142]=\"Line_break_not_permitted_here\",e[e.Declaration_expected=1146]=\"Declaration_expected\",e[e._const_declarations_must_be_initialized=1155]=\"_const_declarations_must_be_initialized\",e[e.Unterminated_regular_expression_literal=1161]=\"Unterminated_regular_expression_literal\",e[e.Interface_declaration_cannot_have_implements_clause=1176]=\"Interface_declaration_cannot_have_implements_clause\",e[e.Binary_digit_expected=1177]=\"Binary_digit_expected\",e[e.Octal_digit_expected=1178]=\"Octal_digit_expected\",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]=\"An_implementation_cannot_be_declared_in_ambient_contexts\",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]=\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive\",e[e.Unterminated_Unicode_escape_sequence=1199]=\"Unterminated_Unicode_escape_sequence\",e[e.Decorators_are_not_valid_here=1206]=\"Decorators_are_not_valid_here\",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]=\"_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration\",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]=\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract\",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]=\"A_definite_assignment_assertion_is_not_permitted_in_this_context\",e[e.A_class_may_only_extend_another_class=1311]=\"A_class_may_only_extend_another_class\",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]=\"A_parameter_property_cannot_be_declared_using_a_rest_parameter\",e[e.Duplicate_identifier_0=2300]=\"Duplicate_identifier_0\",e[e.Cannot_find_name_0=2304]=\"Cannot_find_name_0\",e[e.Module_0_has_no_exported_member_1=2305]=\"Module_0_has_no_exported_member_1\",e[e.Generic_type_0_requires_1_type_argument_s=2314]=\"Generic_type_0_requires_1_type_argument_s\",e[e.Type_0_is_not_generic=2315]=\"Type_0_is_not_generic\",e[e.Type_0_is_not_assignable_to_type_1=2322]=\"Type_0_is_not_assignable_to_type_1\",e[e.Index_signature_is_missing_in_type_0=2329]=\"Index_signature_is_missing_in_type_0\",e[e._this_cannot_be_referenced_in_current_location=2332]=\"_this_cannot_be_referenced_in_current_location\",e[e._super_can_only_be_referenced_in_a_derived_class=2335]=\"_super_can_only_be_referenced_in_a_derived_class\",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]=\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors\",e[e.Property_0_does_not_exist_on_type_1=2339]=\"Property_0_does_not_exist_on_type_1\",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]=\"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures\",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]=\"Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature\",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]=\"A_function_whose_declared_type_is_not_void_must_return_a_value\",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]=\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access\",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]=\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access\",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]=\"Operator_0_cannot_be_applied_to_types_1_and_2\",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]=\"A_super_call_must_be_the_first_statement_in_the_constructor\",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]=\"Constructors_for_derived_classes_must_contain_a_super_call\",e[e._get_and_set_accessor_must_have_the_same_type=2380]=\"_get_and_set_accessor_must_have_the_same_type\",e[e.Constructor_implementation_is_missing=2390]=\"Constructor_implementation_is_missing\",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]=\"Function_implementation_is_missing_or_not_immediately_following_the_declaration\",e[e.Multiple_constructor_implementations_are_not_allowed=2392]=\"Multiple_constructor_implementations_are_not_allowed\",e[e.Duplicate_function_implementation=2393]=\"Duplicate_function_implementation\",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]=\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local\",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]=\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged\",e[e.Type_0_has_no_property_1=2460]=\"Type_0_has_no_property_1\",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]=\"The_0_operator_cannot_be_applied_to_type_1\",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]=\"In_const_enum_declarations_member_initializer_must_be_constant_expression\",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]=\"Export_declaration_conflicts_with_exported_declaration_of_0\",e[e.Object_is_possibly_null=2531]=\"Object_is_possibly_null\",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]=\"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property\",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]=\"The_target_of_an_assignment_must_be_a_variable_or_a_property_access\",e[e.Index_signature_in_type_0_only_permits_reading=2542]=\"Index_signature_in_type_0_only_permits_reading\",e[e.Expected_0_arguments_but_got_1=2554]=\"Expected_0_arguments_but_got_1\",e[e.Expected_at_least_0_arguments_but_got_1=2555]=\"Expected_at_least_0_arguments_but_got_1\",e[e.Expected_0_type_arguments_but_got_1=2558]=\"Expected_0_type_arguments_but_got_1\",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]=\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums\",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]=\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration\",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]=\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration\",e[e.Namespace_0_has_no_exported_member_1=2694]=\"Namespace_0_has_no_exported_member_1\",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]=\"Required_type_parameters_may_not_follow_optional_type_parameters\",e[e.Duplicate_property_0=2718]=\"Duplicate_property_0\",e[e.Type_0_has_no_call_signatures=2757]=\"Type_0_has_no_call_signatures\",e[e.File_0_not_found=6054]=\"File_0_not_found\",e[e.Numeric_separators_are_not_allowed_here=6188]=\"Numeric_separators_are_not_allowed_here\",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]=\"Multiple_consecutive_numeric_separators_are_not_permitted\",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]=\"_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class\",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]=\"_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class\"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return\"Operation not supported.\";case 101:return\"Operation is unsafe.\";case 102:return\"User-defined: {0}\";case 200:return\"Conversion from type '{0}' to '{1}' requires an explicit cast.\";case 201:return\"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";case 202:return\"Type '{0}' cannot be changed to type '{1}'.\";case 203:return\"Type '{0}' cannot be reinterpreted as type '{1}'.\";case 204:return\"Basic type '{0}' cannot be nullable.\";case 205:return\"Cannot export a mutable global.\";case 206:return\"Mutable value cannot be inlined.\";case 207:return\"Unmanaged classes cannot extend managed classes and vice-versa.\";case 208:return\"Unmanaged classes cannot implement interfaces.\";case 209:return\"Invalid regular expression flags.\";case 210:return\"Implementation '{0}' must match the signature '{1}'.\";case 211:return\"Class '{0}' is sealed and cannot be extended.\";case 212:return\"Decorator '{0}' is not valid here.\";case 213:return\"Duplicate decorator.\";case 214:return\"An allocator must be present to use '{0}'.\";case 215:return\"Optional parameter must have an initializer.\";case 216:return\"Constructor of class '{0}' must not require any arguments.\";case 217:return\"Function '{0}' cannot be inlined into itself.\";case 218:return\"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";case 219:return\"Optional properties are not supported.\";case 220:return\"Expression must be a compile-time constant.\";case 221:return\"Module cannot have multiple start functions.\";case 222:return\"'{0}' must be a value between '{1}' and '{2}' inclusive.\";case 223:return\"'{0}' must be a power of two.\";case 224:return\"Expression is unsafe.\";case 225:return\"Expression is never 'null'.\";case 1002:return\"Unterminated string literal.\";case 1003:return\"Identifier expected.\";case 1005:return\"'{0}' expected.\";case 1006:return\"A file cannot have a reference to itself.\";case 1009:return\"Trailing comma not allowed.\";case 1012:return\"Unexpected token.\";case 1014:return\"A rest parameter must be last in a parameter list.\";case 1015:return\"Parameter cannot have question mark and initializer.\";case 1016:return\"A required parameter cannot follow an optional parameter.\";case 1036:return\"Statements are not allowed in ambient contexts.\";case 1039:return\"Initializers are not allowed in ambient contexts.\";case 1042:return\"'{0}' modifier cannot be used here.\";case 1047:return\"A rest parameter cannot be optional.\";case 1048:return\"A rest parameter cannot have an initializer.\";case 1049:return\"A 'set' accessor must have exactly one parameter.\";case 1052:return\"A 'set' accessor parameter cannot have an initializer.\";case 1054:return\"A 'get' accessor cannot have parameters.\";case 1061:return\"Enum member must have initializer.\";case 1092:return\"Type parameters cannot appear on a constructor declaration.\";case 1093:return\"Type annotation cannot appear on a constructor declaration.\";case 1094:return\"An accessor cannot have type parameters.\";case 1095:return\"A 'set' accessor cannot have a return type annotation.\";case 1098:return\"Type parameter list cannot be empty.\";case 1104:return\"A 'continue' statement can only be used within an enclosing iteration statement.\";case 1105:return\"A 'break' statement can only be used within an enclosing iteration or switch statement.\";case 1108:return\"A 'return' statement can only be used within a function body.\";case 1109:return\"Expression expected.\";case 1110:return\"Type expected.\";case 1113:return\"A 'default' clause cannot appear more than once in a 'switch' statement.\";case 1114:return\"Duplicate label '{0}'.\";case 1120:return\"An export assignment cannot have modifiers.\";case 1121:return\"Octal literals are not allowed in strict mode.\";case 1124:return\"Digit expected.\";case 1125:return\"Hexadecimal digit expected.\";case 1126:return\"Unexpected end of text.\";case 1127:return\"Invalid character.\";case 1130:return\"'case' or 'default' expected.\";case 1034:return\"'super' must be followed by an argument list or member access.\";case 1038:return\"A 'declare' modifier cannot be used in an already ambient context.\";case 1140:return\"Type argument expected.\";case 1141:return\"String literal expected.\";case 1142:return\"Line break not permitted here.\";case 1146:return\"Declaration expected.\";case 1155:return\"'const' declarations must be initialized.\";case 1161:return\"Unterminated regular expression literal.\";case 1176:return\"Interface declaration cannot have 'implements' clause.\";case 1177:return\"Binary digit expected.\";case 1178:return\"Octal digit expected.\";case 1183:return\"An implementation cannot be declared in ambient contexts.\";case 1198:return\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";case 1199:return\"Unterminated Unicode escape sequence.\";case 1206:return\"Decorators are not valid here.\";case 1242:return\"'abstract' modifier can only appear on a class, method, or property declaration.\";case 1245:return\"Method '{0}' cannot have an implementation because it is marked abstract.\";case 1255:return\"A definite assignment assertion '!' is not permitted in this context.\";case 1311:return\"A class may only extend another class.\";case 1317:return\"A parameter property cannot be declared using a rest parameter.\";case 2300:return\"Duplicate identifier '{0}'.\";case 2304:return\"Cannot find name '{0}'.\";case 2305:return\"Module '{0}' has no exported member '{1}'.\";case 2314:return\"Generic type '{0}' requires {1} type argument(s).\";case 2315:return\"Type '{0}' is not generic.\";case 2322:return\"Type '{0}' is not assignable to type '{1}'.\";case 2329:return\"Index signature is missing in type '{0}'.\";case 2332:return\"'this' cannot be referenced in current location.\";case 2335:return\"'super' can only be referenced in a derived class.\";case 2337:return\"Super calls are not permitted outside constructors or in nested functions inside constructors.\";case 2339:return\"Property '{0}' does not exist on type '{1}'.\";case 2349:return\"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";case 2351:return\"Cannot use 'new' with an expression whose type lacks a construct signature.\";case 2355:return\"A function whose declared type is not 'void' must return a value.\";case 2357:return\"The operand of an increment or decrement operator must be a variable or a property access.\";case 2364:return\"The left-hand side of an assignment expression must be a variable or a property access.\";case 2365:return\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";case 2376:return\"A 'super' call must be the first statement in the constructor.\";case 2377:return\"Constructors for derived classes must contain a 'super' call.\";case 2380:return\"'get' and 'set' accessor must have the same type.\";case 2390:return\"Constructor implementation is missing.\";case 2391:return\"Function implementation is missing or not immediately following the declaration.\";case 2392:return\"Multiple constructor implementations are not allowed.\";case 2393:return\"Duplicate function implementation.\";case 2395:return\"Individual declarations in merged declaration '{0}' must be all exported or all local.\";case 2434:return\"A namespace declaration cannot be located prior to a class or function with which it is merged.\";case 2460:return\"Type '{0}' has no property '{1}'.\";case 2469:return\"The '{0}' operator cannot be applied to type '{1}'.\";case 2474:return\"In 'const' enum declarations member initializer must be constant expression.\";case 2484:return\"Export declaration conflicts with exported declaration of '{0}'.\";case 2531:return\"Object is possibly 'null'.\";case 2540:return\"Cannot assign to '{0}' because it is a constant or a read-only property.\";case 2541:return\"The target of an assignment must be a variable or a property access.\";case 2542:return\"Index signature in type '{0}' only permits reading.\";case 2554:return\"Expected {0} arguments, but got {1}.\";case 2555:return\"Expected at least {0} arguments, but got {1}.\";case 2558:return\"Expected {0} type arguments, but got {1}.\";case 2651:return\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";case 2673:return\"Constructor of class '{0}' is private and only accessible within the class declaration.\";case 2674:return\"Constructor of class '{0}' is protected and only accessible within the class declaration.\";case 2694:return\"Namespace '{0}' has no exported member '{1}'.\";case 2706:return\"Required type parameters may not follow optional type parameters.\";case 2718:return\"Duplicate property '{0}'.\";case 2757:return\"Type '{0}' has no call signatures.\";case 6054:return\"File '{0}' not found.\";case 6188:return\"Numeric separators are not allowed here.\";case 6189:return\"Multiple consecutive numeric separators are not permitted.\";case 17009:return\"'super' must be called before accessing 'this' in the constructor of a derived class.\";case 17011:return\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";default:return\"\"}}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes(\"@nearfile\")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:\"Integer\",u32:\"Integer\",i64:\"String\",u64:\"String\",string:\"String\",bool:\"Boolean\",Uint8Array:\"String\"},t.nonNullableTypes=[\"i32\",\"u32\",\"i64\",\"u64\",\"bool\",\"boolean\"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return\"void\"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split(\"|\").filter(function(e){return\"null\"!==e.trim()}).join(\"|\"),s=p(n).includes(\"null\"),a=e.name.symbol;this.sb.push(\"\\n//@ts-ignore\\nfunction __wrapper_\"+a+\"(): void {\"),i.length>0&&this.sb.push(\" // Reading input bytes.\\n input(0);\\n let json_len = register_len(0);\\n if (json_len == U32.MAX_VALUE) {\\n panic();\\n }\\n let json = new Uint8Array(json_len as u32);\\n read_register(0, json.buffer);\\n const obj: Obj = JSON.parse(json);\"),\"void\"!==p(n)?this.sb.push(\" let result: \"+p(n)+\" = \"+a+\"(\"):this.sb.push(\" \"+a+\"(\"),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(\", \")),this.sb[this.sb.length-1]+=\");\",\"void\"!==p(n)&&this.sb.push(\"\\n let encoder = new JSONEncoder();\\n if ((isString<\"+r+\">() || isNullable<\"+r+\">()) && result == null) {\\n encoder.setNull(null);\\n } else {\\n encode<\"+r+\">(encoder, result\"+(s?\"!\":\"\")+\", null);\\n }\\n let val: Uint8Array = encoder.serialize();\\n value_return(val.byteLength, val.buffer);\"),this.sb.push(\"}\\n\\nexport { __wrapper_\"+a+\" as \"+a+\" }\\n\")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+=\"<\"+e.typeParameters.map(p).join(\", \")+\">\"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf(\"}\")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error(\"All Fields must have explict type declaration.\");var r=t.typeName(n);i+=\"\\n static decode(json: Uint8Array): \"+r+\" {\\n let value = instantiate<\"+r+\">(); // Allocate without constructor\\n return value.decode(json);\\n }\\n\\n decode(buf: V): \"+r+' {\\n let json: Obj;\\n if (buf instanceof Uint8Array) {\\n json = JSON.parse(buf);\\n }else {\\n assert(buf instanceof Obj, \"argument must be Uint8Array or Json Object\");\\n json = buf;\\n }\\n return this._decode(json);\\n }\\n\\n private _decode(obj: Obj): '+r+\" {\\n \"+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,\"this.\"+t+' = obj.has(\"'+t+'\") ? ')+\": this.\"+t+\";\"})}(n).join(\"\\n \")+'\\n return this;\\n }\\n\\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\\n encoder.pushObject(name);\\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return\"encode<\"+t+\">(encoder, this.\"+i+', \"'+i+'\");'})}(n).join(\"\\n \")+\"\\n encoder.popObject();\\n return encoder\\n }\\n\\n serialize(): Uint8Array {\\n return this.encode().serialize();\\n }\\n\\n toJSON(): string {\\n return this.encode().toString();\\n }\\n}\"}return i});return this.sb.concat(i).join(\"\\n\")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=\"\"),t+\"decode<\"+p(e.type)+', Obj>(obj, \"'+p(e.name)+'\")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf(\"\\n\")).includes(\"out\");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t(\"out/\"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?\"\":\"./\")+n.normalizedPath,h(n))})}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NONE=0]=\"NONE\",e[e.SIGN_EXTENSION=1]=\"SIGN_EXTENSION\",e[e.MUTABLE_GLOBAL=2]=\"MUTABLE_GLOBAL\",e[e.BULK_MEMORY=4]=\"BULK_MEMORY\",e[e.SIMD=8]=\"SIMD\",e[e.THREADS=16]=\"THREADS\"}(t.Feature||(t.Feature={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.WASM32=0]=\"WASM32\",e[e.WASM64=1]=\"WASM64\",e[e.JS=2]=\"JS\"}(t.Target||(t.Target={}))},function(e,t,i){\"use strict\";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]=\"NONE\",e[e.ARRAYBUFFERVIEW=1]=\"ARRAYBUFFERVIEW\",e[e.ARRAY=2]=\"ARRAY\",e[e.SET=4]=\"SET\",e[e.MAP=8]=\"MAP\",e[e.ACYCLIC=16]=\"ACYCLIC\",e[e.VALUE_ALIGN_0=32]=\"VALUE_ALIGN_0\",e[e.VALUE_ALIGN_1=64]=\"VALUE_ALIGN_1\",e[e.VALUE_ALIGN_2=128]=\"VALUE_ALIGN_2\",e[e.VALUE_ALIGN_3=256]=\"VALUE_ALIGN_3\",e[e.VALUE_ALIGN_4=512]=\"VALUE_ALIGN_4\",e[e.VALUE_SIGNED=1024]=\"VALUE_SIGNED\",e[e.VALUE_FLOAT=2048]=\"VALUE_FLOAT\",e[e.VALUE_NULLABLE=4096]=\"VALUE_NULLABLE\",e[e.VALUE_MANAGED=8192]=\"VALUE_MANAGED\",e[e.KEY_ALIGN_0=16384]=\"KEY_ALIGN_0\",e[e.KEY_ALIGN_1=32768]=\"KEY_ALIGN_1\",e[e.KEY_ALIGN_2=65536]=\"KEY_ALIGN_2\",e[e.KEY_ALIGN_3=131072]=\"KEY_ALIGN_3\",e[e.KEY_ALIGN_4=262144]=\"KEY_ALIGN_4\",e[e.KEY_SIGNED=524288]=\"KEY_SIGNED\",e[e.KEY_FLOAT=1048576]=\"KEY_FLOAT\",e[e.KEY_NULLABLE=2097152]=\"KEY_NULLABLE\",e[e.KEY_MANAGED=4194304]=\"KEY_MANAGED\"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return\"INFO\";case n.WARNING:return\"WARNING\";case n.ERROR:return\"ERROR\";default:return assert(!1),\"\"}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),\"\"}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]=\"INFO\",e[e.WARNING=1]=\"WARNING\",e[e.ERROR=2]=\"ERROR\"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE=\"\u001b[96m\",t.COLOR_YELLOW=\"\u001b[93m\",t.COLOR_RED=\"\u001b[91m\",t.COLOR_RESET=\"\u001b[0m\",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace(\"{0}\",n)),null!=s&&(o=o.replace(\"{1}\",s)),null!=a&&(o=o.replace(\"{2}\",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+\" \"+this.code.toString(10)+': \"'+this.message+'\" in '+this.range.source.normalizedPath+\":\"+this.range.line.toString(10)+\":\"+this.range.column.toString(10):o(this.category)+\" \"+this.code.toString(10)+\": \"+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NULL=0]=\"NULL\",e[e.LINEFEED=10]=\"LINEFEED\",e[e.CARRIAGERETURN=13]=\"CARRIAGERETURN\",e[e.LINESEPARATOR=8232]=\"LINESEPARATOR\",e[e.PARAGRAPHSEPARATOR=8233]=\"PARAGRAPHSEPARATOR\",e[e.NEXTLINE=133]=\"NEXTLINE\",e[e.SPACE=32]=\"SPACE\",e[e.NONBREAKINGSPACE=160]=\"NONBREAKINGSPACE\",e[e.ENQUAD=8192]=\"ENQUAD\",e[e.EMQUAD=8193]=\"EMQUAD\",e[e.ENSPACE=8194]=\"ENSPACE\",e[e.EMSPACE=8195]=\"EMSPACE\",e[e.THREEPEREMSPACE=8196]=\"THREEPEREMSPACE\",e[e.FOURPEREMSPACE=8197]=\"FOURPEREMSPACE\",e[e.SIXPEREMSPACE=8198]=\"SIXPEREMSPACE\",e[e.FIGURESPACE=8199]=\"FIGURESPACE\",e[e.PUNCTUATIONSPACE=8200]=\"PUNCTUATIONSPACE\",e[e.THINSPACE=8201]=\"THINSPACE\",e[e.HAIRSPACE=8202]=\"HAIRSPACE\",e[e.ZEROWIDTHSPACE=8203]=\"ZEROWIDTHSPACE\",e[e.NARROWNOBREAKSPACE=8239]=\"NARROWNOBREAKSPACE\",e[e.IDEOGRAPHICSPACE=12288]=\"IDEOGRAPHICSPACE\",e[e.MATHEMATICALSPACE=8287]=\"MATHEMATICALSPACE\",e[e.OGHAM=5760]=\"OGHAM\",e[e._=95]=\"_\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.AMPERSAND=38]=\"AMPERSAND\",e[e.ASTERISK=42]=\"ASTERISK\",e[e.AT=64]=\"AT\",e[e.BACKSLASH=92]=\"BACKSLASH\",e[e.BACKTICK=96]=\"BACKTICK\",e[e.BAR=124]=\"BAR\",e[e.CARET=94]=\"CARET\",e[e.CLOSEBRACE=125]=\"CLOSEBRACE\",e[e.CLOSEBRACKET=93]=\"CLOSEBRACKET\",e[e.CLOSEPAREN=41]=\"CLOSEPAREN\",e[e.COLON=58]=\"COLON\",e[e.COMMA=44]=\"COMMA\",e[e.DOLLAR=36]=\"DOLLAR\",e[e.DOT=46]=\"DOT\",e[e.DOUBLEQUOTE=34]=\"DOUBLEQUOTE\",e[e.EQUALS=61]=\"EQUALS\",e[e.EXCLAMATION=33]=\"EXCLAMATION\",e[e.GREATERTHAN=62]=\"GREATERTHAN\",e[e.HASH=35]=\"HASH\",e[e.LESSTHAN=60]=\"LESSTHAN\",e[e.MINUS=45]=\"MINUS\",e[e.OPENBRACE=123]=\"OPENBRACE\",e[e.OPENBRACKET=91]=\"OPENBRACKET\",e[e.OPENPAREN=40]=\"OPENPAREN\",e[e.PERCENT=37]=\"PERCENT\",e[e.PLUS=43]=\"PLUS\",e[e.QUESTION=63]=\"QUESTION\",e[e.SEMICOLON=59]=\"SEMICOLON\",e[e.SINGLEQUOTE=39]=\"SINGLEQUOTE\",e[e.SLASH=47]=\"SLASH\",e[e.TILDE=126]=\"TILDE\",e[e.BACKSPACE=8]=\"BACKSPACE\",e[e.FORMFEED=12]=\"FORMFEED\",e[e.BYTEORDERMARK=65279]=\"BYTEORDERMARK\",e[e.TAB=9]=\"TAB\",e[e.VERTICALTAB=11]=\"VERTICALTAB\"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:\".\"}function a(e){var t=e.length;if(t<=1){if(0==t)return\".\";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return\".\"}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith(\"std/\")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=\" \",r=\" \",s=\" \";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){\"use strict\";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i\")}e.isNullable&&n.push(\" | null\")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?\"((\":\"(\");var n=e.explicitThisType;n&&(i.push(\"this: \"),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(\", \"),this.serializeParameter(r[0]);for(var a=1;a \"),this.visitTypeNode(o)):i.push(\") => void\"),t&&i.push(\") | null\")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(\" extends \"),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push(\"=\"),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push(\"[\");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r\"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(\" as \"),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push(\"!\");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(\" \"),t.push(a.operatorTokenToString(e.operator)),t.push(\" \"),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push(\"<\"),this.visitTypeNode(i[0]);for(var r=1;r(\")}}else t.push(\"(\");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push(\"\\\\0\"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\b\");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\t\");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\n\");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\v\");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\f\");break;case 13:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\r\"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\\\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push(\"\\\\'\"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\\\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push(\"/\"),t.push(e.pattern),t.push(\"/\"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push(\"new \"),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push(\"(\"),this.visitNode(e.expression),t.push(\")\")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push(\".\"),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(\" ? \"),this.visitNode(e.ifThen),t.push(\" : \"),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push(\"\\n\"):t.push(\";\\n\")}else t.push(\";\\n\")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push(\"{\\n\");for(var r=++this.indentLevel,a=0;a\")}var _=e.extendsType;_&&(u.push(\" extends \"),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(\" implements \"),this.visitTypeNode(p[0]);for(a=1;a\")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push(\"(\");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push(\"this: \"),this.visitTypeNode(_)),c){_&&t.push(\", \"),this.serializeParameter(u[0]);for(o=1;o \"),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(\" => \"),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(\")\"):(t.push(\"): \"),this.visitTypeNode(h)),p&&(t.push(\" \"),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push(\"if (\"),this.visitNode(e.condition),t.push(\") \");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(\";\\n\");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(\" else \"):t.push(\"else \"),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(\" as \"),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push(\"import \");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push(\"{\\n\");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o\")}var u=e.extendsType;u&&(a.push(\" extends \"),this.visitTypeNode(u)),a.push(\" {\\n\");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n\")}}r.push(\" = \"),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push(\"!\"),t&&(i.push(\": \"),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(\" = \"),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name=\"UnreachableError\",r.prototype.message=\"unreachable\",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name=\"AssertionError\",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,\"replaceAll\",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return\"number\"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return\"object\"==typeof e||\"string\"==typeof e},t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"string\"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,\"__isLong__\",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error(\"empty string\");if(\"NaN\"===e||\"Infinity\"===e||\"+Infinity\"===e||\"-Infinity\"===e)return A;if(\"number\"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error(\"interior hyphen\");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c=\"0\"+c;a=\"\"+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error(\"division by zero\");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&\"function\"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.preamble='import { base64 } from \"near-runtime-ts\";\\nimport { JSONEncoder } from \"assemblyscript-json\";\\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\\n'}])});","if(typeof __WEBPACK_EXTERNAL_MODULE__11__ === 'undefined') {var e = new Error(\"Cannot find module 'assemblyscript'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__11__;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 13;","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/./asc.js","webpack://asc/../node_modules/@protobufjs/utf8/index.js","webpack://asc/./util/colors.js","webpack://asc/./util/options.js","webpack://asc/./util/mkdirp.js","webpack://asc/../bindings/dist/transformerBundle.js","webpack://asc/external \"assemblyscript\"","webpack://asc/. sync","webpack://asc/../node_modules/browser-process-hrtime/index.js"],"names":["root","factory","exports","module","require","e","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__11__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","args","Array","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","g","Function","window","global","fs","utf8","colorsUtil","optionsUtil","mkdirp","EOL","SEP","nearBindings","nearLibEntry","removeAllListeners","assemblyscript","isDev","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","write","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","hrtime","times","formatTime","time","toFixed","printStats","stats","output","format","count","stdout","printRTTI","program","buildRTTI","register","project","e_ts","eval","stack","isBundle","version","options","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","nearEntry","array","arraybuffer","bindings/Date","bindings/Math","bindings/wasi_unstable","bindings/wasi","builtins","compat","dataview","date","diagnostics","error","fixedarray","heap","iterator","map","math","memory","number","polyfills","regexp","rt","rt/common","rt/index-full","rt/index-half","rt/index-none","rt/index-stub","rt/pure","rt/rtrace","rt/stub","rt/tlsf","set","shared/feature","shared/target","shared/typeinfo","string","symbol","table","typedarray","util/error","util/hash","util/memory","util/number","util/sort","util/string","vector","libDir","libFiles","sync","bundled","readFileSync","forEach","file","replace","definitionFiles","assembly","portable","stdDir","compileString","sources","input.ts","createMemoryStream","keys","val","isArray","String","main","readFile","writeFile","contents","listFiles","callback","readFileNode","writeFileNode","listFilesNode","opts","parse","noColors","supported","unknown","arg","yellow","trailing","err","red","help","out","color","white","cyan","baseDir","transforms","notNear","transform","parser","packages","Map","importPathMap","libPath","indexOf","parseFile","customLibDirs","lib","k","endsWith","j","libText","nodePaths","basePath","_path","_","dirFrom","reverse","getPaths","parseBacklog","sourcePath","sourceText","sysPath","nextFile","dependee","getDependee","startsWith","plainName","substring","indexName","traceResolution","_package","ascMain","has","package_json","JSON","mainFile","newPackage","realPath","_p","first","second","runtimeName","runtime","runtimePath","runtimeText","filename","applyTransform","finishParsing","normalizedPath","sort","optimizeLevel","shrinkLevel","optimize","max","compilerOptions","createOptions","setTarget","setNoAssert","noAssert","setImportMemory","importMemory","setSharedMemory","sharedMemory","setImportTable","importTable","setExplicitStart","explicitStart","setMemoryBase","memoryBase","setSourceMap","sourceMap","setOptimizeLevelHints","setNoUnsafe","noUnsafe","setGlobalAlias","use","aliases","part","alias","enable","flag","toUpperCase","enableFeature","compileProgram","dispose","validate","trapMode","runPasses","setOptimizeLevel","setShrinkLevel","setDebugInfo","debug","pass","noEmit","hasStdout","hasOutput","outFile","test","textFile","asmjsFile","binaryFile","wasm","sourceMapURL","toBinary","writeStdout","sourceRoot","text","stdName","sourceContents","stringify","asm","toAsmjs","idlFile","idl","buildIDL","tsdFile","tsd","buildTSD","wat","toText","printrtti","encoding","writeFileSync","files","readdirSync","used","allocBuffer","Buffer","allocUnsafe","Uint8Array","stream","chunk","buffer","reset","toBuffer","offset","toString","read","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","target","noLib","types","allowJs","fromCharCode","c1","c2","proc","isCI","base","colors","gray","GRAY","RESET","RED","green","GREEN","YELLOW","blue","BLUE","magenta","MAGENTA","CYAN","WHITE","config","option","default","match","exec","type","parseInt","parseFloat","indent","padding","eol","sb","description","line","_0777","made","undefined","mkdirSync","err0","stat","statSync","err1","isDirectory","__extends","setPrototypeOf","__proto__","constructor","a","Token","Range","u","SOURCE","NAMEDTYPE","FUNCTIONTYPE","TYPENAME","TYPEPARAMETER","PARAMETER","IDENTIFIER","ASSERTION","BINARY","CALL","CLASS","COMMA","ELEMENTACCESS","FALSE","FUNCTION","INSTANCEOF","LITERAL","NEW","NULL","PARENTHESIZED","PROPERTYACCESS","TERNARY","SUPER","THIS","TRUE","CONSTRUCTOR","UNARYPOSTFIX","UNARYPREFIX","BLOCK","BREAK","CONTINUE","DO","EMPTY","EXPORT","EXPORTDEFAULT","EXPORTIMPORT","EXPRESSION","FOR","IF","IMPORT","RETURN","SWITCH","THROW","TRY","VARIABLE","VOID","WHILE","CLASSDECLARATION","ENUMDECLARATION","ENUMVALUEDECLARATION","FIELDDECLARATION","FUNCTIONDECLARATION","IMPORTDECLARATION","INDEXSIGNATUREDECLARATION","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","TYPEDECLARATION","VARIABLEDECLARATION","DECORATOR","EXPORTMEMBER","SWITCHCASE","COMMENT","NodeKind","nodeIsConstantValue","nodeIsCallable","nodeIsGenericCallable","createTypeName","range","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","h","typeArguments","isNullable","createFunctionType","parameters","returnType","explicitThisType","createOmittedType","createTypeParameter","extendsType","defaultType","createParameter","initializer","parameterKind","createDecorator","v","decoratorKind","A","createComment","commentKind","y","isQuoted","createEmptyIdentifierExpression","createArrayLiteralExpression","R","elementExpressions","createAssertionExpression","assertionKind","expression","toType","createBinaryExpression","I","operator","left","right","createCallExpression","b","createClassExpression","L","declaration","createCommaExpression","C","expressions","createConstructorExpression","O","createElementAccessExpression","x","elementExpression","createFalseExpression","createFloatLiteralExpression","P","createFunctionExpression","D","createInstanceOfExpression","U","isType","createIntegerLiteralExpression","w","createNewExpression","M","createNullExpression","createObjectLiteralExpression","F","names","values","createParenthesizedExpression","K","createPropertyAccessExpression","B","createRegexpLiteralExpression","H","pattern","patternFlags","createTernaryExpression","G","condition","ifThen","ifElse","createStringLiteralExpression","Y","createSuperExpression","V","createThisExpression","z","createTrueExpression","X","createUnaryPostfixExpression","W","operand","createUnaryPrefixExpression","q","createBlockStatement","ne","statements","createBreakStatement","re","label","createClassDeclaration","se","flags","typeParameters","implementsTypes","members","decorators","createContinueStatement","ae","createDoStatement","oe","statement","createEmptyStatement","ue","createEnumDeclaration","ce","createEnumValueDeclaration","_e","createExportStatement","le","normalizePath","resolvePath","source","internalPath","we","isDeclare","createExportDefaultStatement","de","createExportImportStatement","pe","externalName","createExportMember","he","localName","exportedName","createExpressionStatement","Ee","createIfStatement","me","ifTrue","ifFalse","createImportStatement","Ne","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","Te","foreignName","createInterfaceDeclaration","ye","createFieldDeclaration","fe","createForStatement","Ae","incrementor","createFunctionDeclaration","ve","signature","body","arrowKind","createIndexSignatureDeclaration","te","keyType","valueType","createMethodDeclaration","Se","createNamespaceDeclaration","Re","createReturnStatement","ge","createSwitchStatement","be","cases","createSwitchCase","Ie","createThrowStatement","Le","createTryStatement","Ce","catchVariable","catchStatements","finallyStatements","createTypeDeclaration","Oe","createVariableStatement","Pe","createVariableDeclaration","xe","createVoidStatement","De","createWhileStatement","Ue","Node","TypeNode","kind","TypeName","NamedTypeNode","FunctionTypeNode","TypeParameterNode","DEFAULT","OPTIONAL","REST","ParameterKind","E","implicitFieldDeclaration","CommonFlags","NONE","is","isAny","assert","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","ParameterNode","DecoratorKind","decoratorNameToKind","DecoratorNode","LINE","TRIPLE","CommentKind","CommentNode","T","Expression","N","IdentifierExpression","FLOAT","INTEGER","STRING","REGEXP","ARRAY","OBJECT","LiteralKind","S","LiteralExpression","literalKind","ArrayLiteralExpression","PREFIX","AS","NONNULL","AssertionKind","AssertionExpression","BinaryExpression","configurable","CallExpression","ClassExpression","CommaExpression","CommonSymbols","ConstructorExpression","ElementAccessExpression","FloatLiteralExpression","FunctionExpression","InstanceOfExpression","IntegerLiteralExpression","NewExpression","null_","NullExpression","ObjectLiteralExpression","ParenthesizedExpression","PropertyAccessExpression","RegexpLiteralExpression","TernaryExpression","StringLiteralExpression","super_","SuperExpression","this_","ThisExpression","true_","TrueExpression","false_","FalseExpression","Q","UnaryExpression","UnaryPostfixExpression","UnaryPrefixExpression","Z","J","Statement","USER","USER_ENTRY","LIBRARY","LIBRARY_ENTRY","SourceKind","$","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","lastIndexOf","PATH_DELIMITER","simplePath","Source","ee","DeclarationStatement","IndexSignatureDeclaration","ie","VariableLikeDeclarationStatement","BlockStatement","BreakStatement","ClassDeclaration","ContinueStatement","DoStatement","EmptyStatement","EnumDeclaration","EnumValueDeclaration","ExportImportStatement","ExportMember","ExportStatement","ExportDefaultStatement","ExpressionStatement","parameterIndex","FieldDeclaration","ForStatement","ARROW_PARENTHESIZED","ARROW_SINGLE","ArrowKind","clone","FunctionDeclaration","IfStatement","ImportDeclaration","ImportStatement","InterfaceDeclaration","MethodDeclaration","NamespaceDeclaration","ReturnStatement","SwitchCase","SwitchStatement","ThrowStatement","TryStatement","TypeDeclaration","VariableDeclaration","VariableStatement","VoidStatement","WhileStatement","findDecorator","mangleInternalPath","isTypeOmitted","DECLARE","CONST","LET","STATIC","READONLY","ABSTRACT","PUBLIC","PRIVATE","PROTECTED","GET","SET","DEFINITE_ASSIGNMENT","AMBIENT","GENERIC","GENERIC_CONTEXT","INSTANCE","MODULE_EXPORT","MODULE_IMPORT","RESOLVED","COMPILED","INLINED","SCOPED","TRAMPOLINE","VIRTUAL","MAIN","QUOTED","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","INDEX_SUFFIX","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","boolean","native","indexof","valueof","returnof","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","FixedArray","Set","ArrayBufferView","ArrayBuffer","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","Feature","Target","Typeinfo","TypeinfoFlags","isPowerOf2","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DELETE","ELSE","ENUM","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","INTERFACE","IS","KEYOF","MODULE","NAMESPACE","OF","PACKAGE","TYPE","TYPEOF","VAR","WITH","YIELD","INVALID","OPENBRACE","CLOSEBRACE","OPENPAREN","CLOSEPAREN","OPENBRACKET","CLOSEBRACKET","DOT","DOT_DOT_DOT","SEMICOLON","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","EQUALS_GREATERTHAN","PLUS","MINUS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","QUESTION","COLON","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","AT","STRINGLITERAL","INTEGERLITERAL","FLOATLITERAL","ENDOFFILE","PREFER","ALWAYS","IdentifierHandling","tokenFromKeyword","tokenIsAlsoIdentifier","isIllegalVariableIdentifier","operatorTokenToString","debugInfoRef","pos","token","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","unsafeNext","MAX_VALUE","isDecimalDigit","DiagnosticCode","_0_expected","testInteger","isIdentifierStart","isKeywordCharacter","isIdentifierPart","isWhiteSpace","Invalid_character","peek","isLineBreak","skipIdentifier","skip","mark","discard","readIdentifier","readString","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","readRegexpPattern","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_new","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_mul","Digit_expected","Octal_digit_expected","Binary_digit_expected","readFloat","readDecimalFloat","readHexFloat","i64_low","i64_high","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","DiagnosticEmitter","Tokenizer","State","Operation_not_supported","Operation_is_unsafe","User_defined_0","Conversion_from_type_0_to_1_requires_an_explicit_cast","Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit","Type_0_cannot_be_changed_to_type_1","Type_0_cannot_be_reinterpreted_as_type_1","Basic_type_0_cannot_be_nullable","Cannot_export_a_mutable_global","Mutable_value_cannot_be_inlined","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","Unmanaged_classes_cannot_implement_interfaces","Implementation_0_must_match_the_signature_1","Class_0_is_sealed_and_cannot_be_extended","Decorator_0_is_not_valid_here","Duplicate_decorator","An_allocator_must_be_present_to_use_0","Optional_parameter_must_have_an_initializer","Constructor_of_class_0_must_not_require_any_arguments","Function_0_cannot_be_inlined_into_itself","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","Optional_properties_are_not_supported","Expression_must_be_a_compile_time_constant","Module_cannot_have_multiple_start_functions","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","Expression_is_unsafe","Expression_is_never_null","Identifier_expected","A_file_cannot_have_a_reference_to_itself","Trailing_comma_not_allowed","Unexpected_token","A_rest_parameter_must_be_last_in_a_parameter_list","Parameter_cannot_have_question_mark_and_initializer","A_required_parameter_cannot_follow_an_optional_parameter","Statements_are_not_allowed_in_ambient_contexts","Initializers_are_not_allowed_in_ambient_contexts","_0_modifier_cannot_be_used_here","A_rest_parameter_cannot_be_optional","A_rest_parameter_cannot_have_an_initializer","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","Enum_member_must_have_initializer","Type_parameters_cannot_appear_on_a_constructor_declaration","Type_annotation_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","A_set_accessor_cannot_have_a_return_type_annotation","Type_parameter_list_cannot_be_empty","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_return_statement_can_only_be_used_within_a_function_body","Expression_expected","Type_expected","A_default_clause_cannot_appear_more_than_once_in_a_switch_statement","Duplicate_label_0","An_export_assignment_cannot_have_modifiers","_case_or_default_expected","_super_must_be_followed_by_an_argument_list_or_member_access","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","Type_argument_expected","String_literal_expected","Line_break_not_permitted_here","Declaration_expected","_const_declarations_must_be_initialized","Interface_declaration_cannot_have_implements_clause","An_implementation_cannot_be_declared_in_ambient_contexts","Decorators_are_not_valid_here","_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","A_definite_assignment_assertion_is_not_permitted_in_this_context","A_class_may_only_extend_another_class","A_parameter_property_cannot_be_declared_using_a_rest_parameter","Duplicate_identifier_0","Cannot_find_name_0","Module_0_has_no_exported_member_1","Generic_type_0_requires_1_type_argument_s","Type_0_is_not_generic","Type_0_is_not_assignable_to_type_1","Index_signature_is_missing_in_type_0","_this_cannot_be_referenced_in_current_location","_super_can_only_be_referenced_in_a_derived_class","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","Property_0_does_not_exist_on_type_1","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","A_function_whose_declared_type_is_not_void_must_return_a_value","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access","Operator_0_cannot_be_applied_to_types_1_and_2","A_super_call_must_be_the_first_statement_in_the_constructor","Constructors_for_derived_classes_must_contain_a_super_call","_get_and_set_accessor_must_have_the_same_type","Constructor_implementation_is_missing","Function_implementation_is_missing_or_not_immediately_following_the_declaration","Multiple_constructor_implementations_are_not_allowed","Duplicate_function_implementation","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged","Type_0_has_no_property_1","The_0_operator_cannot_be_applied_to_type_1","In_const_enum_declarations_member_initializer_must_be_constant_expression","Export_declaration_conflicts_with_exported_declaration_of_0","Object_is_possibly_null","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","The_target_of_an_assignment_must_be_a_variable_or_a_property_access","Index_signature_in_type_0_only_permits_reading","Expected_0_arguments_but_got_1","Expected_at_least_0_arguments_but_got_1","Expected_0_type_arguments_but_got_1","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","Namespace_0_has_no_exported_member_1","Required_type_parameters_may_not_follow_optional_type_parameters","Duplicate_property_0","Type_0_has_no_call_signatures","File_0_not_found","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","diagnosticCodeToString","includes","ASTBuilder","build","typeMapping","nonNullableTypes","exportedClasses","wrappedFuncs","nearFiles","visitClassDeclaration","visitFunctionDeclaration","generateWrapperFunction","add","typeName","isGeneric","getFields","preamble","some","BaseVisitor","afterParse","donelog","delete","seenlog","SIGN_EXTENSION","MUTABLE_GLOBAL","BULK_MEMORY","SIMD","THREADS","WASM32","WASM64","JS","__decorate","getOwnPropertyDescriptor","Reflect","decorate","ARRAYBUFFERVIEW","MAP","ACYCLIC","VALUE_ALIGN_0","VALUE_ALIGN_1","VALUE_ALIGN_2","VALUE_ALIGN_3","VALUE_ALIGN_4","VALUE_SIGNED","VALUE_FLOAT","VALUE_NULLABLE","VALUE_MANAGED","KEY_ALIGN_0","KEY_ALIGN_1","KEY_ALIGN_2","KEY_ALIGN_3","KEY_ALIGN_4","KEY_SIGNED","KEY_FLOAT","KEY_NULLABLE","KEY_MANAGED","INFO","WARNING","ERROR","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCategory","diagnosticCategoryToString","COLOR_RESET","diagnosticCategoryToColor","relatedRange","category","message","createInfo","createWarning","createError","withRange","withRelatedRange","column","DiagnosticMessage","formatDiagnosticMessage","formatDiagnosticContext","emitDiagnostic","info","infoRelated","warning","warningRelated","errorRelated","bitsetIs","i64_ne","i64_and","i64_one","i64_zero","bitsetSet","i64_or","i64_not","LINEFEED","CARRIAGERETURN","LINESEPARATOR","PARAGRAPHSEPARATOR","NEXTLINE","SPACE","NONBREAKINGSPACE","ENQUAD","EMQUAD","ENSPACE","EMSPACE","THREEPEREMSPACE","FOURPEREMSPACE","SIXPEREMSPACE","FIGURESPACE","PUNCTUATIONSPACE","THINSPACE","HAIRSPACE","ZEROWIDTHSPACE","NARROWNOBREAKSPACE","IDEOGRAPHICSPACE","MATHEMATICALSPACE","OGHAM","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","BACKSLASH","BACKTICK","DOLLAR","DOUBLEQUOTE","HASH","SINGLEQUOTE","BACKSPACE","FORMFEED","BYTEORDERMARK","TAB","VERTICALTAB","CharCode","__values","done","__read","return","makeArray","unchecked","makeSet","makeMap","readI8","writeI8","readI16","writeI16","readI32","writeI32","readI64","writeI64","readF32","i32_as_f32","writeF32","f32_as_i32","readF64","i64_as_f64","writeF64","f64_as_i64","indentLevel","visitNode","visitSource","visitNamedTypeNode","visitFunctionTypeNode","visitTypeParameter","visitIdentifierExpression","visitAssertionExpression","visitBinaryExpression","visitCallExpression","visitClassExpression","visitCommaExpression","visitElementAccessExpression","visitFunctionExpression","visitInstanceOfExpression","visitLiteralExpression","visitNewExpression","visitParenthesizedExpression","visitPropertyAccessExpression","visitTernaryExpression","visitUnaryPostfixExpression","visitUnaryPrefixExpression","visitBlockStatement","visitBreakStatement","visitContinueStatement","visitDoStatement","visitEmptyStatement","visitExportStatement","visitExportDefaultStatement","visitExportImportStatement","visitExpressionStatement","visitForStatement","visitIfStatement","visitImportStatement","visitReturnStatement","visitSwitchStatement","visitThrowStatement","visitTryStatement","visitVariableStatement","visitWhileStatement","visitEnumDeclaration","visitEnumValueDeclaration","visitFieldDeclaration","visitImportDeclaration","visitIndexSignatureDeclaration","visitInterfaceDeclaration","visitMethodDeclaration","visitNamespaceDeclaration","visitTypeDeclaration","visitVariableDeclaration","serializeDecorator","visitExportMember","serializeParameter","visitSwitchCase","visitNodeAndTerminate","visitTypeNode","visitTypeName","visitStringLiteral","visitArrayLiteralExpression","visitObjectLiteralExpression","visitFunctionCommon","visitFloatLiteralExpression","visitIntegerLiteralExpression","visitStringLiteralExpression","visitRegexpLiteralExpression","i64_to_string","visitUnaryExpression","serializeExternalModifiers","serializeAccessModifiers","captureStackTrace","defineProperties","MIN_VALUE","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz","clz32","ctz","popcnt","rotl","rotr","abs","ceil","floor","nearest","trunc","round","select","sqrt","copysign","sign","bswap","bswap16","unreachable","changetype","fromCharCodes","fromCodePoints","fromCodePoint","replaceAll","isInteger","Number","isFloat","isReference","isFunction","isString","isArrayLike","isDefined","isConstant","fmod","fmodf","JSMath","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","allocate","__memory_allocate","fill","__memory_fill","__memory_free","copy","__memory_copy","copyWithin","__memory_reset","store","__store","HEAP","load","__load","unmanaged","Long","ZERO","ONE","fromBits","low","high","i64_sub","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","and","or","i64_xor","xor","shl","i64_shr","shr","i64_shr_u","shru","not","i64_eq","eq","i64_align","fromInt","i64_is_i8","i64_is_i16","i64_is_i32","i64_is_u8","i64_is_u16","i64_is_u32","i64_is_bool","fromNumber","i64_is_f32","gte","lte","i64_is_f64","i64_to_f32","toNumber","i64_to_f64","WebAssembly","Instance","Module","unsigned","__isLong__","isLong","isNaN","neg","RangeError","fromString","fromValue","UZERO","UONE","NEG_ONE","MAX_UNSIGNED_VALUE","toInt","isZero","isNegative","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","greaterThan","gt","greaterThanOrEqual","compare","negate","subtract","multiply","get_high","divide","div_u","div_s","log","LN2","modulo","rem_u","rem_s","rem","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","depth","_visit","visitDecoratorNode","visitParameter","visitSuperExpression","visitFalseExpression","visitTrueExpression","visitThisExpression","visitNullExperssion","visitConstructorExpression","visitVoidStatement","visitComment","AbstractVisitor","writeString","writeNode","DefaultWriter","writer","entries","webpackEmptyContext","req","id","previousTimestamp","clocktime","performanceNow","performance","seconds","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"assemblyscript\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__11__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Compiler frontend for node.js\n *\n * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to\n * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources\n * directly through ts-node if distribution files are not present (indicated by a `-dev` version).\n *\n * Can also be packaged as a bundle suitable for in-browser use with the standard library injected\n * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details.\n *\n * @module cli/asc\n */\n\n// Use \".\" instead of \"/\" as cwd in browsers\nif (process.browser) process.cwd = function() { return \".\"; };\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst utf8 = require(\"@protobufjs/utf8\");\nconst colorsUtil = require(\"./util/colors\");\nconst optionsUtil = require(\"./util/options\");\nconst mkdirp = require(\"./util/mkdirp\");\nconst EOL = process.platform === \"win32\" ? \"\\r\\n\" : \"\\n\";\nconst SEP = process.platform === \"win32\" ? \"\\\\\" : \"/\";\nconst nearBindings = require(\"../bindings/dist/transformerBundle.js\");\nconst nearLibEntry = path.join(__dirname, \"..\", \"bindings\", \"assembly\", \"nearEntry.ts\");\n// global.Binaryen = require(\"../lib/binaryen\");\n\n// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional\n// useless code fragment on top of an actual error. suppress this:\nif (process.removeAllListeners) process.removeAllListeners(\"uncaughtException\");\n\n// Use distribution files if present, otherwise run the sources directly\nvar assemblyscript, isDev = false;\n(() => {\n try { // `asc` on the command line\n assemblyscript = require(\"../dist/assemblyscript.js\");\n } catch (e) {\n try { // `asc` on the command line without dist files\n require(\"ts-node\").register({ project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\") });\n require(\"../src/glue/js\");\n assemblyscript = require(\"../src\");\n isDev = true;\n } catch (e_ts) {\n try { // `require(\"dist/asc.js\")` in explicit browser tests\n assemblyscript = eval(\"require('./assemblyscript')\");\n } catch (e) {\n // combine both errors that lead us here\n e.stack = e_ts.stack + \"\\n---\\n\" + e.stack;\n throw e;\n }\n }\n }\n})();\n\n/** Whether this is a webpack bundle or not. */\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\n\n/** Whether asc runs the sources directly or not. */\nexports.isDev = isDev;\n\n/** AssemblyScript version. */\nexports.version = exports.isBundle ? BUNDLE_VERSION : require(\"../package.json\").version;\n\n/** Available CLI options. */\nexports.options = require(\"./asc.json\");\n\n/** Common root used in source maps. */\nexports.sourceMapRoot = \"assemblyscript:///\";\n\n/** Prefix used for library files. */\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\n\n/** Default Binaryen optimization level. */\nexports.defaultOptimizeLevel = 3;\n\n/** Default Binaryen shrink level. */\nexports.defaultShrinkLevel = 1;\n\n/** Bundled library files. */\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle\n const libDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\n const libFiles = require(\"glob\").sync(\"**/!(*.d).ts\", { cwd: libDir })\n const bundled = {\n \"nearEntry\": fs.readFileSync(nearLibEntry, \"utf8\")\n };\n libFiles.forEach(file => bundled[file.replace(/\\.ts$/, \"\")] = fs.readFileSync(path.join(libDir, file), \"utf8\" ));\n return bundled;\n})();\n\n/** Bundled definition files. */\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle\n const stdDir = path.join(__dirname, \"..\", \"std\");\n return {\n \"assembly\": fs.readFileSync(path.join(stdDir, \"assembly\", \"index.d.ts\"), \"utf8\"),\n \"portable\": fs.readFileSync(path.join(stdDir, \"portable\", \"index.d.ts\"), \"utf8\")\n };\n})();\n\n/** Convenience function that parses and compiles source strings directly. */\nexports.compileString = (sources, options) => {\n if (typeof sources === \"string\") sources = { \"input.ts\": sources };\n const output = Object.create({\n stdout: createMemoryStream(),\n stderr: createMemoryStream()\n });\n var argv = [\n \"--binaryFile\", \"binary\",\n \"--textFile\", \"text\",\n ];\n Object.keys(options || {}).forEach(key => {\n var val = options[key];\n if (Array.isArray(val)) val.forEach(val => argv.push(\"--\" + key, String(val)));\n else argv.push(\"--\" + key, String(val));\n });\n exports.main(argv.concat(Object.keys(sources)), {\n stdout: output.stdout,\n stderr: output.stderr,\n readFile: name => sources.hasOwnProperty(name) ? sources[name] : null,\n writeFile: (name, contents) => output[name] = contents,\n listFiles: () => []\n });\n return output;\n}\n\n/** Runs the command line utility using the specified arguments array. */\nexports.main = function main(argv, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (!options) {\n options = {};\n }\n\n const stdout = options.stdout || process.stdout;\n const stderr = options.stderr || process.stderr;\n const readFile = options.readFile || readFileNode;\n const writeFile = options.writeFile || writeFileNode;\n const listFiles = options.listFiles || listFilesNode;\n const stats = options.stats || createStats();\n\n // Output must be specified if not present in the environment\n if (!stdout) throw Error(\"'options.stdout' must be specified\");\n if (!stderr) throw Error(\"'options.stderr' must be specified\");\n\n const opts = optionsUtil.parse(argv, exports.options);\n const args = opts.options;\n argv = opts.arguments;\n if (args.noColors) {\n colorsUtil.stdout.supported =\n colorsUtil.stderr.supported = false;\n } else {\n colorsUtil.stdout = colorsUtil.from(stdout);\n colorsUtil.stderr = colorsUtil.from(stderr);\n }\n\n // Check for unknown arguments\n if (opts.unknown.length) {\n opts.unknown.forEach(arg => {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unknown option '\" + arg + \"'\" + EOL);\n });\n }\n\n // Check for trailing arguments\n if (opts.trailing.length) {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unsupported trailing arguments: \" + opts.trailing.join(\" \") + EOL);\n }\n\n // Use default callback if none is provided\n if (!callback) callback = function defaultCallback(err) {\n var code = 0;\n if (err) {\n stderr.write(colorsUtil.stderr.red(\"ERROR: \") + err.stack.replace(/^ERROR: /i, \"\") + EOL);\n code = 1;\n }\n return code;\n };\n\n // Just print the version if requested\n if (args.version) {\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + EOL);\n return callback(null);\n }\n // Print the help message if requested or no source files are provided\n if (args.help || !argv.length) {\n var out = args.help ? stdout : stderr;\n var color = args.help ? colorsUtil.stdout : colorsUtil.stderr;\n out.write([\n color.white(\"SYNTAX\"),\n \" \" + color.cyan(\"asc\") + \" [entryFile ...] [options]\",\n \"\",\n color.white(\"EXAMPLES\"),\n \" \" + color.cyan(\"asc\") + \" hello.ts\",\n \" \" + color.cyan(\"asc\") + \" hello.ts -b hello.wasm -t hello.wat\",\n \" \" + color.cyan(\"asc\") + \" hello1.ts hello2.ts -b -O > hello.wasm\",\n \"\",\n color.white(\"OPTIONS\"),\n ].concat(\n optionsUtil.help(exports.options, 24, EOL)\n ).join(EOL) + EOL);\n return callback(null);\n }\n\n // I/O must be specified if not present in the environment\n if (!fs.readFileSync) {\n if (readFile === readFileNode) throw Error(\"'options.readFile' must be specified\");\n if (writeFile === writeFileNode) throw Error(\"'options.writeFile' must be specified\");\n if (listFiles === listFilesNode) throw Error(\"'options.listFiles' must be specified\");\n }\n\n // Set up base directory\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : \".\";\n\n // Set up transforms\n const transforms = args.notNear ? [] : [nearBindings];\n //Add near's bindings by default\n if (args.transform) {\n args.transform.forEach(transform =>\n transforms.push(\n require(\n path.isAbsolute(transform = transform.trim())\n ? transform\n : path.join(process.cwd(), transform)\n )\n )\n );\n }\n function applyTransform(name, ...args) {\n transforms.forEach(transform => {\n if (typeof transform[name] === \"function\") transform[name](...args);\n });\n }\n\n // Begin parsing\n var parser = null;\n\n // Maps package names to parent directory\n var packages = new Map();\n var importPathMap = new Map();\n\n // Include library files\n Object.keys(exports.libraryFiles).forEach(libPath => {\n if (libPath.indexOf(\"/\") >= 0) return; // in sub-directory: imported on demand\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n exports.libraryFiles[libPath],\n exports.libraryPrefix + libPath + \".ts\",\n false,\n parser\n );\n });\n });\n const customLibDirs = [];\n if (args.lib) {\n let lib = args.lib;\n if (typeof lib === \"string\") lib = lib.split(\",\");\n Array.prototype.push.apply(customLibDirs, lib.map(lib => lib.trim()));\n for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom\n let libDir = customLibDirs[i];\n let libFiles;\n if (libDir.endsWith(\".ts\")) {\n libFiles = [ path.basename(libDir) ];\n libDir = path.dirname(libDir);\n } else {\n libFiles = listFiles(libDir, baseDir) || [];\n }\n for (let j = 0, l = libFiles.length; j < l; ++j) {\n let libPath = libFiles[j];\n let libText = readFile(libPath, libDir);\n if (libText === null) return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\n stats.parseCount++;\n exports.libraryFiles[libPath.replace(/\\.ts$/, \"\")] = libText;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n libText,\n exports.libraryPrefix + libPath,\n false,\n parser\n );\n });\n }\n }\n }\n args.path = args.path || [];\n // Find all valid node_module paths starting at baseDir\n function nodePaths(basePath, _path) {\n return basePath.split(SEP)\n .map((_, i, arr) => {\n let dir = arr.slice(0, i + 1).join(SEP) || SEP;\n let dirFrom = path.relative(baseDir, dir);\n return path.join(dirFrom, _path);\n })\n .filter(dir => listFiles(dir, baseDir))\n .reverse();\n }\n function getPaths(basePath) {\n let paths = args.path.map(p => nodePaths(basePath, p));\n return nodePaths(basePath, \"node_modules\").concat(...paths)\n }\n\n // Parses the backlog of imported files after including entry files\n function parseBacklog() {\n var sourcePath, sourceText, sysPath;\n // dependee is the path of the file that depends on sourcePath\n while ((sourcePath = parser.nextFile()) != null) {\n dependee = importPathMap.get(assemblyscript.getDependee(parser, sourcePath)) || baseDir;\n sourceText = null;\n sysPath = null;\n \n // Load library file if explicitly requested\n if (sourcePath.startsWith(exports.libraryPrefix)) {\n const plainName = sourcePath.substring(exports.libraryPrefix.length);\n const indexName = sourcePath.substring(exports.libraryPrefix.length) + \"/index\";\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n sourceText = readFile(plainName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(customLibDirs[i], plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(customLibDirs[i], indexName + \".ts\");\n break;\n }\n }\n }\n }\n\n // Otherwise try nextFile.ts, nextFile/index.ts, ~lib/nextFile.ts, ~lib/nextFile/index.ts\n } else {\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(plainName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n sysPath = path.join(baseDir, sourcePath);\n } else {\n sourceText = readFile(indexName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n } else if (!plainName.startsWith(\".\")) {\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n const dir = customLibDirs[i];\n sourceText = readFile(plainName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(dir, plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(dir, indexName + \".ts\");\n break;\n }\n }\n }\n }\n }\n }\n }\n /*\n In this case the library wasn't found so we check paths\n */\n if (sourceText == null) {\n if (args.traceResolution) {\n stderr.write(\"Looking for '\" + sourcePath + \"' imported by '\" + dependee + \"'\" + EOL);\n }\n paths = getPaths(path.join(baseDir, dependee));\n let _package = sourcePath.replace(/\\~lib\\/([^\\/]*).*/, \"$1\");\n for (let _path of paths) {\n let ascMain = (() => {\n if (packages.has(_package)) {\n return packages.get(_package);\n }\n let p = path.join(_path, _package, \"package.json\");\n let res = readFile(p, baseDir);\n if (res) {\n let package_json;\n try {\n package_json = JSON.parse(res);\n } catch (e) {\n return callback(Error(\"Parsing \" + p + \" failed\"));\n }\n let mainFile = package_json.ascMain;\n if (mainFile && (typeof mainFile === 'string')) {\n let newPackage = mainFile.replace(/(.*)\\/index\\.ts/, '$1');\n packages.set(_package, newPackage);\n return newPackage;\n }\n }\n return \"assembly\";\n })()\n let realPath = (_p) => {\n if (_p.startsWith(exports.libraryPrefix)){\n _p = _p.substring(exports.libraryPrefix.length);\n }\n let first = _p.substring(0, _p.indexOf(\"/\"));\n let second = _p.substring(_p.indexOf(\"/\") + 1);\n return path.join(_path, first, ascMain, second);\n }\n if (args.traceResolution) {\n stderr.write(\" in '\" + realPath(sourcePath) + \"'\");\n }\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(realPath(plainName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n } else {\n sourceText = readFile(realPath(indexName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n }\n }\n if (sourceText !== null) {\n if (args.traceResolution) {\n stderr.write(EOL + \" -> '\" + realPath(sourcePath) + \"'\" + EOL);\n }\n let newPath = path.join(_path, _package);\n sysPath = newPath;\n break;\n }\n if (args.traceResolution) {\n stderr.write(EOL);\n }\n }\n }\n if (sourceText == null) {\n return callback(Error(\"Import file '\" + sourcePath + \".ts' not found.\"));\n }\n importPathMap.set(sourcePath.replace(/\\.ts$/, \"\"), sysPath);\n stats.parseCount++;\n stats.parseTime += measure(() => {\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\n });\n }\n if (checkDiagnostics(parser, stderr)) {\n return callback(Error(\"Parse error\"));\n }\n }\n\n // Include runtime template before entry files so its setup runs first\n {\n let runtimeName = String(args.runtime);\n let runtimePath = \"rt/index-\" + runtimeName;\n let runtimeText = exports.libraryFiles[runtimePath];\n if (runtimeText == null) {\n runtimePath = runtimeName;\n runtimeText = readFile(runtimePath + \".ts\", baseDir);\n if (runtimeText == null) {\n return callback(Error(\"Runtime '\" + runtimeName + \"' not found.\"));\n }\n } else {\n runtimePath = \"~lib/\" + runtimePath;\n }\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser);\n });\n }\n\n // Include entry files\n for (let i = 0, k = argv.length; i < k; ++i) {\n const filename = argv[i];\n\n let sourcePath = String(filename).replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\n // Setting the path to relative path\n sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath) : sourcePath;\n\n // Try entryPath.ts, then entryPath/index.ts\n let sourceText = readFile(sourcePath + \".ts\", baseDir);\n if (sourceText === null) {\n sourceText = readFile(sourcePath + \"/index.ts\", baseDir);\n if (sourceText === null) {\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\n } else {\n sourcePath += \"/index.ts\";\n }\n } else {\n sourcePath += \".ts\";\n }\n\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\n });\n }\n\n // Parse entry files\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Call afterParse transform hook\n applyTransform(\"afterParse\", parser, writeFile, baseDir);\n\n // Parse additional files, if any\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Finish parsing\n const program = assemblyscript.finishParsing(parser);\n\n // Print files and exit if listFiles\n if (args.listFiles) {\n stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL);\n return callback(null);\n }\n\n // Set up optimization levels\n var optimizeLevel = 0;\n var shrinkLevel = 0;\n if (args.optimize) {\n optimizeLevel = exports.defaultOptimizeLevel;\n shrinkLevel = exports.defaultShrinkLevel;\n }\n if (typeof args.optimizeLevel === \"number\") {\n optimizeLevel = args.optimizeLevel;\n }\n if (typeof args.shrinkLevel === \"number\") {\n shrinkLevel = args.shrinkLevel;\n }\n optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3);\n shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2);\n\n // Begin compilation\n const compilerOptions = assemblyscript.createOptions();\n assemblyscript.setTarget(compilerOptions, 0);\n assemblyscript.setNoAssert(compilerOptions, args.noAssert);\n assemblyscript.setImportMemory(compilerOptions, args.importMemory);\n assemblyscript.setSharedMemory(compilerOptions, args.sharedMemory);\n assemblyscript.setImportTable(compilerOptions, args.importTable);\n assemblyscript.setExplicitStart(compilerOptions, args.explicitStart);\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\n assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel);\n assemblyscript.setNoUnsafe(compilerOptions, args.noUnsafe);\n\n // Initialize default aliases\n assemblyscript.setGlobalAlias(compilerOptions, \"Math\", \"NativeMath\");\n assemblyscript.setGlobalAlias(compilerOptions, \"Mathf\", \"NativeMathf\");\n assemblyscript.setGlobalAlias(compilerOptions, \"abort\", \"~lib/builtins/abort\");\n assemblyscript.setGlobalAlias(compilerOptions, \"trace\", \"~lib/builtins/trace\");\n\n // Add or override aliases if specified\n if (args.use) {\n let aliases = args.use;\n for (let i = 0, k = aliases.length; i < k; ++i) {\n let part = aliases[i];\n let p = part.indexOf(\"=\");\n if (p < 0) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n let alias = part.substring(0, p).trim();\n let name = part.substring(p + 1).trim();\n if (!alias.length) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n assemblyscript.setGlobalAlias(compilerOptions, alias, name);\n }\n }\n\n // Enable additional features if specified\n var features = args.enable;\n if (features != null) {\n if (typeof features === \"string\") features = features.split(\",\");\n for (let i = 0, k = features.length; i < k; ++i) {\n let name = features[i].trim();\n let flag = assemblyscript[\"FEATURE_\" + name.replace(/\\-/g, \"_\").toUpperCase()];\n if (!flag) return callback(Error(\"Feature '\" + name + \"' is unknown.\"));\n assemblyscript.enableFeature(compilerOptions, flag);\n }\n }\n\n var module;\n stats.compileCount++;\n try {\n stats.compileTime += measure(() => {\n module = assemblyscript.compileProgram(program, compilerOptions);\n });\n } catch (e) {\n return callback(e);\n }\n if (checkDiagnostics(parser, stderr)) {\n if (module) module.dispose();\n return callback(Error(\"Compile error\"));\n }\n\n // Validate the module if requested\n if (args.validate) {\n stats.validateCount++;\n stats.validateTime += measure(() => {\n if (!module.validate()) {\n module.dispose();\n return callback(Error(\"Validate error\"));\n }\n });\n }\n\n // Set Binaryen-specific options\n if (args.trapMode === \"clamp\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-clamp\" ]);\n });\n } else if (args.trapMode === \"js\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-js\" ]);\n });\n } else if (args.trapMode !== \"allow\") {\n module.dispose();\n return callback(Error(\"Unsupported trap mode\"));\n }\n\n // Implicitly run costly non-LLVM optimizations on -O3 or -Oz\n // see: https://github.com/WebAssembly/binaryen/pull/1596\n if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;\n\n module.setOptimizeLevel(optimizeLevel);\n module.setShrinkLevel(shrinkLevel);\n module.setDebugInfo(args.debug);\n\n var runPasses = [];\n if (args.runPasses) {\n if (typeof args.runPasses === \"string\") {\n args.runPasses = args.runPasses.split(\",\");\n }\n if (args.runPasses.length) {\n args.runPasses.forEach(pass => {\n if (runPasses.indexOf(pass) < 0)\n runPasses.push(pass);\n });\n }\n }\n\n // Optimize the module if requested\n if (optimizeLevel > 0 || shrinkLevel > 0) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.optimize();\n });\n }\n\n // Run additional passes if requested\n if (runPasses.length) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses(runPasses.map(pass => pass.trim()));\n });\n }\n\n // Prepare output\n if (!args.noEmit) {\n let hasStdout = false;\n let hasOutput = false;\n\n if (args.outFile != null) {\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null) {\n args.textFile = args.outFile;\n } else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null) {\n args.asmjsFile = args.outFile;\n } else if (args.binaryFile == null) {\n args.binaryFile = args.outFile;\n }\n }\n\n // Write binary\n if (args.binaryFile != null) {\n let sourceMapURL = args.sourceMap != null\n ? args.sourceMap.length\n ? args.sourceMap\n : path.basename(args.binaryFile) + \".map\"\n : null;\n\n let wasm;\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wasm = module.toBinary(sourceMapURL)\n });\n\n if (args.binaryFile.length) {\n writeFile(args.binaryFile, wasm.output, baseDir);\n } else {\n writeStdout(wasm.output);\n hasStdout = true;\n }\n hasOutput = true;\n\n // Post-process source map\n if (wasm.sourceMap != null) {\n if (args.binaryFile.length) {\n let sourceMap = JSON.parse(wasm.sourceMap);\n sourceMap.sourceRoot = exports.sourceMapRoot;\n sourceMap.sources.forEach((name, index) => {\n let text = null;\n if (name.startsWith(exports.libraryPrefix)) {\n let stdName = name.substring(exports.libraryPrefix.length).replace(/\\.ts$/, \"\");\n if (exports.libraryFiles.hasOwnProperty(stdName)) {\n text = exports.libraryFiles[stdName];\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n text = readFile(name.substring(exports.libraryPrefix.length), customLibDirs[i]);\n if (text !== null) break;\n }\n }\n } else {\n text = readFile(name, baseDir);\n }\n if (text === null) {\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\n }\n if (!sourceMap.sourceContents) sourceMap.sourceContents = [];\n sourceMap.sourceContents[index] = text;\n });\n writeFile(path.join(\n path.dirname(args.binaryFile),\n path.basename(sourceMapURL)\n ).replace(/^\\.\\//, \"\"), JSON.stringify(sourceMap), baseDir);\n } else {\n stderr.write(\"Skipped source map (stdout already occupied)\" + EOL);\n }\n }\n }\n\n // Write asm.js\n if (args.asmjsFile != null) {\n let asm;\n if (args.asmjsFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeFile(args.asmjsFile, asm, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeStdout(asm);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write WebIDL\n if (args.idlFile != null) {\n let idl;\n if (args.idlFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeFile(args.idlFile, idl, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeStdout(idl);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write TypeScript definition\n if (args.tsdFile != null) {\n let tsd;\n if (args.tsdFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeFile(args.tsdFile, tsd, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeStdout(tsd);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write text (must be last)\n if (args.textFile != null || !hasOutput) {\n let wat;\n if (args.textFile && args.textFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText();\n });\n writeFile(args.textFile, wat, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText()\n });\n writeStdout(wat);\n }\n }\n }\n\n module.dispose();\n if (args.measure) {\n printStats(stats, stderr);\n }\n if (args.printrtti) {\n printRTTI(program, stderr);\n }\n return callback(null);\n\n function readFileNode(filename, baseDir) {\n let name = path.resolve(baseDir, filename);\n try {\n let text;\n stats.readCount++;\n stats.readTime += measure(() => {\n text = fs.readFileSync(name, { encoding: \"utf8\" });\n });\n return text;\n } catch (e) {\n return null;\n }\n }\n\n function writeFileNode(filename, contents, baseDir) {\n try {\n stats.writeCount++;\n stats.writeTime += measure(() => {\n mkdirp(path.join(baseDir, path.dirname(filename)));\n if (typeof contents === \"string\") {\n fs.writeFileSync(path.join(baseDir, filename), contents, { encoding: \"utf8\" } );\n } else {\n fs.writeFileSync(path.join(baseDir, filename), contents);\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function listFilesNode(dirname, baseDir) {\n var files;\n try {\n stats.readTime += measure(() => {\n files = fs.readdirSync(path.join(baseDir, dirname)).filter(file => /^(?!.*\\.d\\.ts$).*\\.ts$/.test(file));\n });\n return files;\n } catch (e) {\n return null;\n }\n }\n\n function writeStdout(contents) {\n if (!writeStdout.used) {\n stats.writeCount++;\n writeStdout.used = true;\n }\n stats.writeTime += measure(() => {\n if (typeof contents === \"string\") {\n stdout.write(contents, { encoding: \"utf8\" });\n } else {\n stdout.write(contents);\n }\n });\n }\n}\n\n/** Checks diagnostics emitted so far for errors. */\nfunction checkDiagnostics(emitter, stderr) {\n var diagnostic;\n var hasErrors = false;\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\n if (stderr) {\n stderr.write(\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\n EOL + EOL\n );\n }\n if (assemblyscript.isError(diagnostic)) hasErrors = true;\n }\n return hasErrors;\n}\n\nexports.checkDiagnostics = checkDiagnostics;\n\n/** Creates an empty set of stats. */\nfunction createStats() {\n return {\n readTime: 0,\n readCount: 0,\n writeTime: 0,\n writeCount: 0,\n parseTime: 0,\n parseCount: 0,\n compileTime: 0,\n compileCount: 0,\n emitTime: 0,\n emitCount: 0,\n validateTime: 0,\n validateCount: 0,\n optimizeTime: 0,\n optimizeCount: 0\n };\n}\n\nexports.createStats = createStats;\n\nif (!process.hrtime) process.hrtime = require(\"browser-process-hrtime\");\n\n/** Measures the execution time of the specified function. */\nfunction measure(fn) {\n const start = process.hrtime();\n fn();\n const times = process.hrtime(start);\n return times[0] * 1e9 + times[1];\n}\n\nexports.measure = measure;\n\n/** Formats a high resolution time to a human readable string. */\nfunction formatTime(time) {\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\n}\n\nexports.formatTime = formatTime;\n\n/** Formats and prints out the contents of a set of stats. */\nfunction printStats(stats, output) {\n function format(time, count) {\n return formatTime(time);\n }\n (output || process.stdout).write([\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\n ].join(EOL) + EOL);\n}\n\nexports.printStats = printStats;\n\n/** Prints runtime type information. */\nfunction printRTTI(program, output) {\n if (!output) output = process.stderr;\n output.write(\"# Runtime type information (RTTI)\\n\");\n output.write(assemblyscript.buildRTTI(program));\n}\n\nexports.printRTTI = printRTTI;\n\nvar allocBuffer = typeof global !== \"undefined\" && global.Buffer\n ? global.Buffer.allocUnsafe || function(len) { return new global.Buffer(len); }\n : function(len) { return new Uint8Array(len) };\n\n/** Creates a memory stream that can be used in place of stdout/stderr. */\nfunction createMemoryStream(fn) {\n var stream = [];\n stream.write = function(chunk) {\n if (fn) fn(chunk);\n if (typeof chunk === \"string\") {\n let buffer = allocBuffer(utf8.length(chunk));\n utf8.write(chunk, buffer, 0);\n chunk = buffer;\n }\n this.push(chunk);\n };\n stream.reset = function() {\n stream.length = 0;\n };\n stream.toBuffer = function() {\n var offset = 0, i = 0, k = this.length;\n while (i < k) offset += this[i++].length;\n var buffer = allocBuffer(offset);\n offset = i = 0;\n while (i < k) {\n buffer.set(this[i], offset);\n offset += this[i].length;\n ++i;\n }\n return buffer;\n };\n stream.toString = function() {\n var buffer = this.toBuffer();\n return utf8.read(buffer, 0, buffer.length);\n };\n return stream;\n}\n\nexports.createMemoryStream = createMemoryStream;\n\n/** Compatible TypeScript compiler options for syntax highlighting etc. */\nexports.tscOptions = {\n alwaysStrict: true,\n noImplicitAny: true,\n noImplicitReturns: true,\n noImplicitThis: true,\n noEmitOnError: true,\n strictNullChecks: true,\n experimentalDecorators: true,\n target: \"esnext\",\n module: \"commonjs\",\n noLib: true,\n types: [],\n allowJs: false\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var proc = typeof process !== \"undefined\" && process || {};\nvar isCI = proc.env && \"CI\" in proc.env; // doesn't work when bundled because 'process' is a mock\n\nfunction from(stream, base) {\n var colors = base || {};\n colors.supported = (stream && !!stream.isTTY) || isCI;\n colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text;\n colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text;\n colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text;\n colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text;\n colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text;\n colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text;\n colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text;\n colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text;\n return colors;\n}\n\nexports.stdout = from(proc.stdout, exports);\nexports.stderr = from(proc.stderr);\nexports.from = from;\n\nexports.GRAY = \"\\u001b[90m\";\nexports.RED = \"\\u001b[91m\";\nexports.GREEN = \"\\u001b[92m\";\nexports.YELLOW = \"\\u001b[93m\";\nexports.BLUE = \"\\u001b[94m\";\nexports.MAGENTA = \"\\u001b[95m\";\nexports.CYAN = \"\\u001b[96m\";\nexports.WHITE = \"\\u001b[97m\";\nexports.RESET = \"\\u001b[0m\";\n","// type | meaning\n// -----|---------------\n// b | boolean\n// i | integer\n// f | float\n// s | string\n// I | integer array\n// F | float array\n// S | string array\n\n/** Parses the specified command line arguments according to the given configuration. */\nfunction parse(argv, config) {\n var options = {};\n var unknown = [];\n var arguments = [];\n var trailing = [];\n\n // make an alias map and initialize defaults\n var aliases = {};\n Object.keys(config).forEach(key => {\n if (key.startsWith(\" \")) return;\n var option = config[key];\n if (option.alias != null) {\n if (typeof option.alias === \"string\") aliases[option.alias] = key;\n else if (Array.isArray(option.alias)) option.alias.forEach(alias => aliases[alias] = key);\n }\n if (option.default != null) options[key] = option.default;\n });\n\n // iterate over argv\n for (var i = 0, k = (argv = argv.slice()).length; i < k; ++i) {\n let arg = argv[i];\n if (arg == \"--\") { ++i; break; }\n let match = /^(?:(\\-\\w)(?:=(.*))?|(\\-\\-\\w{2,})(?:=(.*))?)$/.exec(arg), option, key;\n if (match) {\n if (config[arg]) option = config[key = arg]; // exact\n else if (match[1] != null) { // alias\n option = config[key = aliases[match[1].substring(1)]];\n if (option && match[2] != null) argv[i--] = match[2];\n } else if (match[3] != null) { // full\n option = config[key = match[3].substring(2)];\n if (option && match[4] != null) argv[i--] = match[4];\n }\n } else {\n if (arg.charCodeAt(0) == 45) option = config[key = arg]; // exact\n else { arguments.push(arg); continue; } // argument\n }\n if (option) {\n if (option.type == null || option.type === \"b\") options[key] = true; // flag\n else {\n if (i + 1 < argv.length && argv[i + 1].charCodeAt(0) != 45) { // present\n switch (option.type) {\n case \"i\": options[key] = parseInt(argv[++i], 10); break;\n case \"I\": options[key] = (options[key] || []).concat(parseInt(argv[++i], 10)); break;\n case \"f\": options[key] = parseFloat(argv[++i]); break;\n case \"F\": options[key] = (options[key] || []).concat(parseFloat(argv[++i])); break;\n case \"s\": options[key] = String(argv[++i]); break;\n case \"S\": options[key] = (options[key] || []).concat(argv[++i].split(\",\")); break;\n default: unknown.push(arg); --i;\n }\n } else { // omitted\n switch (option.type) {\n case \"i\":\n case \"f\": options[key] = option.default || 0; break;\n case \"s\": options[key] = option.default || \"\"; break;\n case \"I\":\n case \"F\":\n case \"S\": options[key] = options.default || []; break;\n default: unknown.push(arg);\n }\n }\n }\n if (option.value) Object.keys(option.value).forEach(k => options[k] = option.value[k]);\n } else unknown.push(arg);\n }\n while (i < k) trailing.push(argv[i++]); // trailing\n\n return { options, unknown, arguments, trailing };\n}\n\nexports.parse = parse;\n\n/** Generates the help text for the specified configuration. */\nfunction help(config, options) {\n if (!options) options = {};\n var indent = options.indent || 2;\n var padding = options.padding || 24;\n var eol = options.eol || \"\\n\";\n var sb = [];\n Object.keys(config).forEach(key => {\n var option = config[key];\n if (option.description == null) return;\n var text = \"\";\n while (text.length < indent) text += \" \";\n text += \"--\" + key;\n if (option.alias) text += \", -\" + option.alias;\n while (text.length < padding) text += \" \";\n if (Array.isArray(option.description)) {\n sb.push(text + option.description[0] + option.description.slice(1).map(line => {\n for (let i = 0; i < padding; ++i) line = \" \" + line;\n return eol + line;\n }).join(\"\"));\n } else sb.push(text + option.description);\n });\n return sb.join(eol);\n}\n\nexports.help = help;\n","/*\nCopyright 2010 James Halliday (mail@substack.net)\n\nThis project is free software released under the MIT/X11 license:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nvar path = require(\"path\");\nvar fs = require(\"fs\");\nvar _0777 = parseInt(\"0777\", 8);\n\nmodule.exports = function mkdirp(p, opts, made) {\n if (!opts || typeof opts !== \"object\") {\n opts = { mode: opts };\n }\n var mode = opts.mode;\n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n p = path.resolve(p);\n try {\n fs.mkdirSync(p, mode);\n made = made || p;\n } catch (err0) {\n switch (err0.code) {\n case \"ENOENT\":\n made = mkdirp(path.dirname(p), opts, made);\n mkdirp(p, opts, made);\n break;\n default:\n var stat;\n try {\n stat = fs.statSync(p);\n } catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n return made;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.transformer=t():e.transformer=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=6)}([function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]=\"SOURCE\",e[e.NAMEDTYPE=1]=\"NAMEDTYPE\",e[e.FUNCTIONTYPE=2]=\"FUNCTIONTYPE\",e[e.TYPENAME=3]=\"TYPENAME\",e[e.TYPEPARAMETER=4]=\"TYPEPARAMETER\",e[e.PARAMETER=5]=\"PARAMETER\",e[e.IDENTIFIER=6]=\"IDENTIFIER\",e[e.ASSERTION=7]=\"ASSERTION\",e[e.BINARY=8]=\"BINARY\",e[e.CALL=9]=\"CALL\",e[e.CLASS=10]=\"CLASS\",e[e.COMMA=11]=\"COMMA\",e[e.ELEMENTACCESS=12]=\"ELEMENTACCESS\",e[e.FALSE=13]=\"FALSE\",e[e.FUNCTION=14]=\"FUNCTION\",e[e.INSTANCEOF=15]=\"INSTANCEOF\",e[e.LITERAL=16]=\"LITERAL\",e[e.NEW=17]=\"NEW\",e[e.NULL=18]=\"NULL\",e[e.PARENTHESIZED=19]=\"PARENTHESIZED\",e[e.PROPERTYACCESS=20]=\"PROPERTYACCESS\",e[e.TERNARY=21]=\"TERNARY\",e[e.SUPER=22]=\"SUPER\",e[e.THIS=23]=\"THIS\",e[e.TRUE=24]=\"TRUE\",e[e.CONSTRUCTOR=25]=\"CONSTRUCTOR\",e[e.UNARYPOSTFIX=26]=\"UNARYPOSTFIX\",e[e.UNARYPREFIX=27]=\"UNARYPREFIX\",e[e.BLOCK=28]=\"BLOCK\",e[e.BREAK=29]=\"BREAK\",e[e.CONTINUE=30]=\"CONTINUE\",e[e.DO=31]=\"DO\",e[e.EMPTY=32]=\"EMPTY\",e[e.EXPORT=33]=\"EXPORT\",e[e.EXPORTDEFAULT=34]=\"EXPORTDEFAULT\",e[e.EXPORTIMPORT=35]=\"EXPORTIMPORT\",e[e.EXPRESSION=36]=\"EXPRESSION\",e[e.FOR=37]=\"FOR\",e[e.IF=38]=\"IF\",e[e.IMPORT=39]=\"IMPORT\",e[e.RETURN=40]=\"RETURN\",e[e.SWITCH=41]=\"SWITCH\",e[e.THROW=42]=\"THROW\",e[e.TRY=43]=\"TRY\",e[e.VARIABLE=44]=\"VARIABLE\",e[e.VOID=45]=\"VOID\",e[e.WHILE=46]=\"WHILE\",e[e.CLASSDECLARATION=47]=\"CLASSDECLARATION\",e[e.ENUMDECLARATION=48]=\"ENUMDECLARATION\",e[e.ENUMVALUEDECLARATION=49]=\"ENUMVALUEDECLARATION\",e[e.FIELDDECLARATION=50]=\"FIELDDECLARATION\",e[e.FUNCTIONDECLARATION=51]=\"FUNCTIONDECLARATION\",e[e.IMPORTDECLARATION=52]=\"IMPORTDECLARATION\",e[e.INDEXSIGNATUREDECLARATION=53]=\"INDEXSIGNATUREDECLARATION\",e[e.INTERFACEDECLARATION=54]=\"INTERFACEDECLARATION\",e[e.METHODDECLARATION=55]=\"METHODDECLARATION\",e[e.NAMESPACEDECLARATION=56]=\"NAMESPACEDECLARATION\",e[e.TYPEDECLARATION=57]=\"TYPEDECLARATION\",e[e.VARIABLEDECLARATION=58]=\"VARIABLEDECLARATION\",e[e.DECORATOR=59]=\"DECORATOR\",e[e.EXPORTMEMBER=60]=\"EXPORTMEMBER\",e[e.SWITCHCASE=61]=\"SWITCHCASE\",e[e.COMMENT=62]=\"COMMENT\"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName(\"\",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text=\"\",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new j;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(\".\")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]=\"DEFAULT\",e[e.OPTIONAL=1]=\"OPTIONAL\",e[e.REST=2]=\"REST\"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if(\"builtin\"==t)return E.BUILTIN;break;case 101:if(\"external\"==t)return E.EXTERNAL;break;case 103:if(\"global\"==t)return E.GLOBAL;break;case 105:if(\"inline\"==t)return E.INLINE;break;case 108:if(\"lazy\"==t)return E.LAZY;break;case 111:if(\"operator\"==t)return E.OPERATOR;break;case 115:if(\"sealed\"==t)return E.SEALED;break;case 117:if(\"unmanaged\"==t)return E.UNMANAGED;if(\"unsafe\"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),\"operator\"==t)switch(i.charCodeAt(0)){case 98:if(\"binary\"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case\"prefix\":return E.OPERATOR_PREFIX;case\"postfix\":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]=\"CUSTOM\",e[e.GLOBAL=1]=\"GLOBAL\",e[e.OPERATOR=2]=\"OPERATOR\",e[e.OPERATOR_BINARY=3]=\"OPERATOR_BINARY\",e[e.OPERATOR_PREFIX=4]=\"OPERATOR_PREFIX\",e[e.OPERATOR_POSTFIX=5]=\"OPERATOR_POSTFIX\",e[e.UNMANAGED=6]=\"UNMANAGED\",e[e.SEALED=7]=\"SEALED\",e[e.INLINE=8]=\"INLINE\",e[e.EXTERNAL=9]=\"EXTERNAL\",e[e.BUILTIN=10]=\"BUILTIN\",e[e.LAZY=11]=\"LAZY\",e[e.UNSAFE=12]=\"UNSAFE\"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]=\"LINE\",e[e.TRIPLE=1]=\"TRIPLE\",e[e.BLOCK=2]=\"BLOCK\"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]=\"FLOAT\",e[e.INTEGER=1]=\"INTEGER\",e[e.STRING=2]=\"STRING\",e[e.REGEXP=3]=\"REGEXP\",e[e.ARRAY=4]=\"ARRAY\",e[e.OBJECT=5]=\"OBJECT\"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]=\"PREFIX\",e[e.AS=1]=\"AS\",e[e.NONNULL=2]=\"NONNULL\"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,\"typeArgumentsRange\",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"argumentsRange\",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text=\"constructor\",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text=\"null\",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text=\"super\",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text=\"this\",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text=\"true\",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text=\"false\",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=j;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=Q;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(Q);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(Q);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]=\"USER\",e[e.USER_ENTRY=1]=\"USER_ENTRY\",e[e.LIBRARY=2]=\"LIBRARY\",e[e.LIBRARY_ENTRY=3]=\"LIBRARY_ENTRY\"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,\"isLibrary\",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]=\"NONE\",e[e.ARROW_PARENTHESIZED=1]=\"ARROW_PARENTHESIZED\",e[e.ARROW_SINGLE=2]=\"ARROW_SINGLE\"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(\".ts\")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i\";case s.LESSTHAN_EQUALS:return\"<=\";case s.GREATERTHAN_EQUALS:return\">=\";case s.EQUALS_EQUALS:return\"==\";case s.EXCLAMATION_EQUALS:return\"!=\";case s.EQUALS_EQUALS_EQUALS:return\"===\";case s.EXCLAMATION_EQUALS_EQUALS:return\"!==\";case s.PLUS:return\"+\";case s.MINUS:return\"-\";case s.ASTERISK_ASTERISK:return\"**\";case s.ASTERISK:return\"*\";case s.SLASH:return\"/\";case s.PERCENT:return\"%\";case s.PLUS_PLUS:return\"++\";case s.MINUS_MINUS:return\"--\";case s.LESSTHAN_LESSTHAN:return\"<<\";case s.GREATERTHAN_GREATERTHAN:return\">>\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return\">>>\";case s.AMPERSAND:return\"&\";case s.BAR:return\"|\";case s.CARET:return\"^\";case s.EXCLAMATION:return\"!\";case s.TILDE:return\"~\";case s.AMPERSAND_AMPERSAND:return\"&&\";case s.BAR_BAR:return\"||\";case s.EQUALS:return\"=\";case s.PLUS_EQUALS:return\"+=\";case s.MINUS_EQUALS:return\"-=\";case s.ASTERISK_EQUALS:return\"*=\";case s.ASTERISK_ASTERISK_EQUALS:return\"**=\";case s.SLASH_EQUALS:return\"/=\";case s.PERCENT_EQUALS:return\"%=\";case s.LESSTHAN_LESSTHAN_EQUALS:return\"<<=\";case s.GREATERTHAN_GREATERTHAN_EQUALS:return\">>=\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return\">>>=\";case s.AMPERSAND_EQUALS:return\"&=\";case s.BAR_EQUALS:return\"|=\";case s.CARET_EQUALS:return\"^=\";default:return assert(!1),\"\"}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error(\"source mismatch\");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,\"atStart\",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"atEnd\",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"line\",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"column\",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),\"\";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return\"\\0\";case 98:return\"\\b\";case 116:return\"\\t\";case 110:return\"\\n\";case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),\"\";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),\"\"):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?\"\":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Operation_not_supported=100]=\"Operation_not_supported\",e[e.Operation_is_unsafe=101]=\"Operation_is_unsafe\",e[e.User_defined_0=102]=\"User_defined_0\",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]=\"Conversion_from_type_0_to_1_requires_an_explicit_cast\",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]=\"Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit\",e[e.Type_0_cannot_be_changed_to_type_1=202]=\"Type_0_cannot_be_changed_to_type_1\",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]=\"Type_0_cannot_be_reinterpreted_as_type_1\",e[e.Basic_type_0_cannot_be_nullable=204]=\"Basic_type_0_cannot_be_nullable\",e[e.Cannot_export_a_mutable_global=205]=\"Cannot_export_a_mutable_global\",e[e.Mutable_value_cannot_be_inlined=206]=\"Mutable_value_cannot_be_inlined\",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]=\"Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa\",e[e.Unmanaged_classes_cannot_implement_interfaces=208]=\"Unmanaged_classes_cannot_implement_interfaces\",e[e.Invalid_regular_expression_flags=209]=\"Invalid_regular_expression_flags\",e[e.Implementation_0_must_match_the_signature_1=210]=\"Implementation_0_must_match_the_signature_1\",e[e.Class_0_is_sealed_and_cannot_be_extended=211]=\"Class_0_is_sealed_and_cannot_be_extended\",e[e.Decorator_0_is_not_valid_here=212]=\"Decorator_0_is_not_valid_here\",e[e.Duplicate_decorator=213]=\"Duplicate_decorator\",e[e.An_allocator_must_be_present_to_use_0=214]=\"An_allocator_must_be_present_to_use_0\",e[e.Optional_parameter_must_have_an_initializer=215]=\"Optional_parameter_must_have_an_initializer\",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]=\"Constructor_of_class_0_must_not_require_any_arguments\",e[e.Function_0_cannot_be_inlined_into_itself=217]=\"Function_0_cannot_be_inlined_into_itself\",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]=\"Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set\",e[e.Optional_properties_are_not_supported=219]=\"Optional_properties_are_not_supported\",e[e.Expression_must_be_a_compile_time_constant=220]=\"Expression_must_be_a_compile_time_constant\",e[e.Module_cannot_have_multiple_start_functions=221]=\"Module_cannot_have_multiple_start_functions\",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]=\"_0_must_be_a_value_between_1_and_2_inclusive\",e[e._0_must_be_a_power_of_two=223]=\"_0_must_be_a_power_of_two\",e[e.Expression_is_unsafe=224]=\"Expression_is_unsafe\",e[e.Expression_is_never_null=225]=\"Expression_is_never_null\",e[e.Unterminated_string_literal=1002]=\"Unterminated_string_literal\",e[e.Identifier_expected=1003]=\"Identifier_expected\",e[e._0_expected=1005]=\"_0_expected\",e[e.A_file_cannot_have_a_reference_to_itself=1006]=\"A_file_cannot_have_a_reference_to_itself\",e[e.Trailing_comma_not_allowed=1009]=\"Trailing_comma_not_allowed\",e[e.Unexpected_token=1012]=\"Unexpected_token\",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]=\"A_rest_parameter_must_be_last_in_a_parameter_list\",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]=\"Parameter_cannot_have_question_mark_and_initializer\",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]=\"A_required_parameter_cannot_follow_an_optional_parameter\",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]=\"Statements_are_not_allowed_in_ambient_contexts\",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]=\"Initializers_are_not_allowed_in_ambient_contexts\",e[e._0_modifier_cannot_be_used_here=1042]=\"_0_modifier_cannot_be_used_here\",e[e.A_rest_parameter_cannot_be_optional=1047]=\"A_rest_parameter_cannot_be_optional\",e[e.A_rest_parameter_cannot_have_an_initializer=1048]=\"A_rest_parameter_cannot_have_an_initializer\",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]=\"A_set_accessor_must_have_exactly_one_parameter\",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]=\"A_set_accessor_parameter_cannot_have_an_initializer\",e[e.A_get_accessor_cannot_have_parameters=1054]=\"A_get_accessor_cannot_have_parameters\",e[e.Enum_member_must_have_initializer=1061]=\"Enum_member_must_have_initializer\",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]=\"Type_parameters_cannot_appear_on_a_constructor_declaration\",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]=\"Type_annotation_cannot_appear_on_a_constructor_declaration\",e[e.An_accessor_cannot_have_type_parameters=1094]=\"An_accessor_cannot_have_type_parameters\",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]=\"A_set_accessor_cannot_have_a_return_type_annotation\",e[e.Type_parameter_list_cannot_be_empty=1098]=\"Type_parameter_list_cannot_be_empty\",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]=\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement\",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]=\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement\",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]=\"A_return_statement_can_only_be_used_within_a_function_body\",e[e.Expression_expected=1109]=\"Expression_expected\",e[e.Type_expected=1110]=\"Type_expected\",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]=\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement\",e[e.Duplicate_label_0=1114]=\"Duplicate_label_0\",e[e.An_export_assignment_cannot_have_modifiers=1120]=\"An_export_assignment_cannot_have_modifiers\",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]=\"Octal_literals_are_not_allowed_in_strict_mode\",e[e.Digit_expected=1124]=\"Digit_expected\",e[e.Hexadecimal_digit_expected=1125]=\"Hexadecimal_digit_expected\",e[e.Unexpected_end_of_text=1126]=\"Unexpected_end_of_text\",e[e.Invalid_character=1127]=\"Invalid_character\",e[e._case_or_default_expected=1130]=\"_case_or_default_expected\",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]=\"_super_must_be_followed_by_an_argument_list_or_member_access\",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]=\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context\",e[e.Type_argument_expected=1140]=\"Type_argument_expected\",e[e.String_literal_expected=1141]=\"String_literal_expected\",e[e.Line_break_not_permitted_here=1142]=\"Line_break_not_permitted_here\",e[e.Declaration_expected=1146]=\"Declaration_expected\",e[e._const_declarations_must_be_initialized=1155]=\"_const_declarations_must_be_initialized\",e[e.Unterminated_regular_expression_literal=1161]=\"Unterminated_regular_expression_literal\",e[e.Interface_declaration_cannot_have_implements_clause=1176]=\"Interface_declaration_cannot_have_implements_clause\",e[e.Binary_digit_expected=1177]=\"Binary_digit_expected\",e[e.Octal_digit_expected=1178]=\"Octal_digit_expected\",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]=\"An_implementation_cannot_be_declared_in_ambient_contexts\",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]=\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive\",e[e.Unterminated_Unicode_escape_sequence=1199]=\"Unterminated_Unicode_escape_sequence\",e[e.Decorators_are_not_valid_here=1206]=\"Decorators_are_not_valid_here\",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]=\"_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration\",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]=\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract\",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]=\"A_definite_assignment_assertion_is_not_permitted_in_this_context\",e[e.A_class_may_only_extend_another_class=1311]=\"A_class_may_only_extend_another_class\",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]=\"A_parameter_property_cannot_be_declared_using_a_rest_parameter\",e[e.Duplicate_identifier_0=2300]=\"Duplicate_identifier_0\",e[e.Cannot_find_name_0=2304]=\"Cannot_find_name_0\",e[e.Module_0_has_no_exported_member_1=2305]=\"Module_0_has_no_exported_member_1\",e[e.Generic_type_0_requires_1_type_argument_s=2314]=\"Generic_type_0_requires_1_type_argument_s\",e[e.Type_0_is_not_generic=2315]=\"Type_0_is_not_generic\",e[e.Type_0_is_not_assignable_to_type_1=2322]=\"Type_0_is_not_assignable_to_type_1\",e[e.Index_signature_is_missing_in_type_0=2329]=\"Index_signature_is_missing_in_type_0\",e[e._this_cannot_be_referenced_in_current_location=2332]=\"_this_cannot_be_referenced_in_current_location\",e[e._super_can_only_be_referenced_in_a_derived_class=2335]=\"_super_can_only_be_referenced_in_a_derived_class\",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]=\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors\",e[e.Property_0_does_not_exist_on_type_1=2339]=\"Property_0_does_not_exist_on_type_1\",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]=\"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures\",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]=\"Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature\",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]=\"A_function_whose_declared_type_is_not_void_must_return_a_value\",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]=\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access\",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]=\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access\",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]=\"Operator_0_cannot_be_applied_to_types_1_and_2\",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]=\"A_super_call_must_be_the_first_statement_in_the_constructor\",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]=\"Constructors_for_derived_classes_must_contain_a_super_call\",e[e._get_and_set_accessor_must_have_the_same_type=2380]=\"_get_and_set_accessor_must_have_the_same_type\",e[e.Constructor_implementation_is_missing=2390]=\"Constructor_implementation_is_missing\",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]=\"Function_implementation_is_missing_or_not_immediately_following_the_declaration\",e[e.Multiple_constructor_implementations_are_not_allowed=2392]=\"Multiple_constructor_implementations_are_not_allowed\",e[e.Duplicate_function_implementation=2393]=\"Duplicate_function_implementation\",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]=\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local\",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]=\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged\",e[e.Type_0_has_no_property_1=2460]=\"Type_0_has_no_property_1\",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]=\"The_0_operator_cannot_be_applied_to_type_1\",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]=\"In_const_enum_declarations_member_initializer_must_be_constant_expression\",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]=\"Export_declaration_conflicts_with_exported_declaration_of_0\",e[e.Object_is_possibly_null=2531]=\"Object_is_possibly_null\",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]=\"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property\",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]=\"The_target_of_an_assignment_must_be_a_variable_or_a_property_access\",e[e.Index_signature_in_type_0_only_permits_reading=2542]=\"Index_signature_in_type_0_only_permits_reading\",e[e.Expected_0_arguments_but_got_1=2554]=\"Expected_0_arguments_but_got_1\",e[e.Expected_at_least_0_arguments_but_got_1=2555]=\"Expected_at_least_0_arguments_but_got_1\",e[e.Expected_0_type_arguments_but_got_1=2558]=\"Expected_0_type_arguments_but_got_1\",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]=\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums\",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]=\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration\",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]=\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration\",e[e.Namespace_0_has_no_exported_member_1=2694]=\"Namespace_0_has_no_exported_member_1\",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]=\"Required_type_parameters_may_not_follow_optional_type_parameters\",e[e.Duplicate_property_0=2718]=\"Duplicate_property_0\",e[e.Type_0_has_no_call_signatures=2757]=\"Type_0_has_no_call_signatures\",e[e.File_0_not_found=6054]=\"File_0_not_found\",e[e.Numeric_separators_are_not_allowed_here=6188]=\"Numeric_separators_are_not_allowed_here\",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]=\"Multiple_consecutive_numeric_separators_are_not_permitted\",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]=\"_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class\",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]=\"_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class\"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return\"Operation not supported.\";case 101:return\"Operation is unsafe.\";case 102:return\"User-defined: {0}\";case 200:return\"Conversion from type '{0}' to '{1}' requires an explicit cast.\";case 201:return\"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";case 202:return\"Type '{0}' cannot be changed to type '{1}'.\";case 203:return\"Type '{0}' cannot be reinterpreted as type '{1}'.\";case 204:return\"Basic type '{0}' cannot be nullable.\";case 205:return\"Cannot export a mutable global.\";case 206:return\"Mutable value cannot be inlined.\";case 207:return\"Unmanaged classes cannot extend managed classes and vice-versa.\";case 208:return\"Unmanaged classes cannot implement interfaces.\";case 209:return\"Invalid regular expression flags.\";case 210:return\"Implementation '{0}' must match the signature '{1}'.\";case 211:return\"Class '{0}' is sealed and cannot be extended.\";case 212:return\"Decorator '{0}' is not valid here.\";case 213:return\"Duplicate decorator.\";case 214:return\"An allocator must be present to use '{0}'.\";case 215:return\"Optional parameter must have an initializer.\";case 216:return\"Constructor of class '{0}' must not require any arguments.\";case 217:return\"Function '{0}' cannot be inlined into itself.\";case 218:return\"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";case 219:return\"Optional properties are not supported.\";case 220:return\"Expression must be a compile-time constant.\";case 221:return\"Module cannot have multiple start functions.\";case 222:return\"'{0}' must be a value between '{1}' and '{2}' inclusive.\";case 223:return\"'{0}' must be a power of two.\";case 224:return\"Expression is unsafe.\";case 225:return\"Expression is never 'null'.\";case 1002:return\"Unterminated string literal.\";case 1003:return\"Identifier expected.\";case 1005:return\"'{0}' expected.\";case 1006:return\"A file cannot have a reference to itself.\";case 1009:return\"Trailing comma not allowed.\";case 1012:return\"Unexpected token.\";case 1014:return\"A rest parameter must be last in a parameter list.\";case 1015:return\"Parameter cannot have question mark and initializer.\";case 1016:return\"A required parameter cannot follow an optional parameter.\";case 1036:return\"Statements are not allowed in ambient contexts.\";case 1039:return\"Initializers are not allowed in ambient contexts.\";case 1042:return\"'{0}' modifier cannot be used here.\";case 1047:return\"A rest parameter cannot be optional.\";case 1048:return\"A rest parameter cannot have an initializer.\";case 1049:return\"A 'set' accessor must have exactly one parameter.\";case 1052:return\"A 'set' accessor parameter cannot have an initializer.\";case 1054:return\"A 'get' accessor cannot have parameters.\";case 1061:return\"Enum member must have initializer.\";case 1092:return\"Type parameters cannot appear on a constructor declaration.\";case 1093:return\"Type annotation cannot appear on a constructor declaration.\";case 1094:return\"An accessor cannot have type parameters.\";case 1095:return\"A 'set' accessor cannot have a return type annotation.\";case 1098:return\"Type parameter list cannot be empty.\";case 1104:return\"A 'continue' statement can only be used within an enclosing iteration statement.\";case 1105:return\"A 'break' statement can only be used within an enclosing iteration or switch statement.\";case 1108:return\"A 'return' statement can only be used within a function body.\";case 1109:return\"Expression expected.\";case 1110:return\"Type expected.\";case 1113:return\"A 'default' clause cannot appear more than once in a 'switch' statement.\";case 1114:return\"Duplicate label '{0}'.\";case 1120:return\"An export assignment cannot have modifiers.\";case 1121:return\"Octal literals are not allowed in strict mode.\";case 1124:return\"Digit expected.\";case 1125:return\"Hexadecimal digit expected.\";case 1126:return\"Unexpected end of text.\";case 1127:return\"Invalid character.\";case 1130:return\"'case' or 'default' expected.\";case 1034:return\"'super' must be followed by an argument list or member access.\";case 1038:return\"A 'declare' modifier cannot be used in an already ambient context.\";case 1140:return\"Type argument expected.\";case 1141:return\"String literal expected.\";case 1142:return\"Line break not permitted here.\";case 1146:return\"Declaration expected.\";case 1155:return\"'const' declarations must be initialized.\";case 1161:return\"Unterminated regular expression literal.\";case 1176:return\"Interface declaration cannot have 'implements' clause.\";case 1177:return\"Binary digit expected.\";case 1178:return\"Octal digit expected.\";case 1183:return\"An implementation cannot be declared in ambient contexts.\";case 1198:return\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";case 1199:return\"Unterminated Unicode escape sequence.\";case 1206:return\"Decorators are not valid here.\";case 1242:return\"'abstract' modifier can only appear on a class, method, or property declaration.\";case 1245:return\"Method '{0}' cannot have an implementation because it is marked abstract.\";case 1255:return\"A definite assignment assertion '!' is not permitted in this context.\";case 1311:return\"A class may only extend another class.\";case 1317:return\"A parameter property cannot be declared using a rest parameter.\";case 2300:return\"Duplicate identifier '{0}'.\";case 2304:return\"Cannot find name '{0}'.\";case 2305:return\"Module '{0}' has no exported member '{1}'.\";case 2314:return\"Generic type '{0}' requires {1} type argument(s).\";case 2315:return\"Type '{0}' is not generic.\";case 2322:return\"Type '{0}' is not assignable to type '{1}'.\";case 2329:return\"Index signature is missing in type '{0}'.\";case 2332:return\"'this' cannot be referenced in current location.\";case 2335:return\"'super' can only be referenced in a derived class.\";case 2337:return\"Super calls are not permitted outside constructors or in nested functions inside constructors.\";case 2339:return\"Property '{0}' does not exist on type '{1}'.\";case 2349:return\"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";case 2351:return\"Cannot use 'new' with an expression whose type lacks a construct signature.\";case 2355:return\"A function whose declared type is not 'void' must return a value.\";case 2357:return\"The operand of an increment or decrement operator must be a variable or a property access.\";case 2364:return\"The left-hand side of an assignment expression must be a variable or a property access.\";case 2365:return\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";case 2376:return\"A 'super' call must be the first statement in the constructor.\";case 2377:return\"Constructors for derived classes must contain a 'super' call.\";case 2380:return\"'get' and 'set' accessor must have the same type.\";case 2390:return\"Constructor implementation is missing.\";case 2391:return\"Function implementation is missing or not immediately following the declaration.\";case 2392:return\"Multiple constructor implementations are not allowed.\";case 2393:return\"Duplicate function implementation.\";case 2395:return\"Individual declarations in merged declaration '{0}' must be all exported or all local.\";case 2434:return\"A namespace declaration cannot be located prior to a class or function with which it is merged.\";case 2460:return\"Type '{0}' has no property '{1}'.\";case 2469:return\"The '{0}' operator cannot be applied to type '{1}'.\";case 2474:return\"In 'const' enum declarations member initializer must be constant expression.\";case 2484:return\"Export declaration conflicts with exported declaration of '{0}'.\";case 2531:return\"Object is possibly 'null'.\";case 2540:return\"Cannot assign to '{0}' because it is a constant or a read-only property.\";case 2541:return\"The target of an assignment must be a variable or a property access.\";case 2542:return\"Index signature in type '{0}' only permits reading.\";case 2554:return\"Expected {0} arguments, but got {1}.\";case 2555:return\"Expected at least {0} arguments, but got {1}.\";case 2558:return\"Expected {0} type arguments, but got {1}.\";case 2651:return\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";case 2673:return\"Constructor of class '{0}' is private and only accessible within the class declaration.\";case 2674:return\"Constructor of class '{0}' is protected and only accessible within the class declaration.\";case 2694:return\"Namespace '{0}' has no exported member '{1}'.\";case 2706:return\"Required type parameters may not follow optional type parameters.\";case 2718:return\"Duplicate property '{0}'.\";case 2757:return\"Type '{0}' has no call signatures.\";case 6054:return\"File '{0}' not found.\";case 6188:return\"Numeric separators are not allowed here.\";case 6189:return\"Multiple consecutive numeric separators are not permitted.\";case 17009:return\"'super' must be called before accessing 'this' in the constructor of a derived class.\";case 17011:return\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";default:return\"\"}}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes(\"@nearfile\")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:\"Integer\",u32:\"Integer\",i64:\"String\",u64:\"String\",string:\"String\",bool:\"Boolean\",Uint8Array:\"String\"},t.nonNullableTypes=[\"i32\",\"u32\",\"i64\",\"u64\",\"bool\",\"boolean\"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return\"void\"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split(\"|\").filter(function(e){return\"null\"!==e.trim()}).join(\"|\"),s=p(n).includes(\"null\"),a=e.name.symbol;this.sb.push(\"\\n//@ts-ignore\\nfunction __wrapper_\"+a+\"(): void {\"),i.length>0&&this.sb.push(\" // Reading input bytes.\\n input(0);\\n let json_len = register_len(0);\\n if (json_len == U32.MAX_VALUE) {\\n panic();\\n }\\n let json = new Uint8Array(json_len as u32);\\n read_register(0, json.buffer);\\n const obj: Obj = JSON.parse(json);\"),\"void\"!==p(n)?this.sb.push(\" let result: \"+p(n)+\" = \"+a+\"(\"):this.sb.push(\" \"+a+\"(\"),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(\", \")),this.sb[this.sb.length-1]+=\");\",\"void\"!==p(n)&&this.sb.push(\"\\n let encoder = new JSONEncoder();\\n let val: Uint8Array;\\n if ((isString<\"+r+\">() || isNullable<\"+r+\">()) && result == null) {\\n encoder.setNull(null);\\n val = encoder.serialize();\\n } else {\\n val = encode<\"+r+\">(result\"+(s?\"!\":\"\")+\", null, encoder);\\n }\\n value_return(val.byteLength, val.buffer);\"),this.sb.push(\"}\\n\\nexport { __wrapper_\"+a+\" as \"+a+\" }\\n\")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+=\"<\"+e.typeParameters.map(p).join(\", \")+\">\"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf(\"}\")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error(\"All Fields must have explict type declaration.\");var r=t.typeName(n);i+=\"\\n static decode(json: Uint8Array): \"+r+\" {\\n let value = instantiate<\"+r+\">(); // Allocate without constructor\\n return value.decode(json);\\n }\\n\\n decode(buf: V): \"+r+' {\\n let json: Obj;\\n if (buf instanceof Uint8Array) {\\n json = JSON.parse(buf);\\n }else {\\n assert(buf instanceof Obj, \"argument must be Uint8Array or Json Object\");\\n json = buf;\\n }\\n return this._decode(json);\\n }\\n\\n private _decode(obj: Obj): '+r+\" {\\n \"+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,\"this.\"+t+' = obj.has(\"'+t+'\") ? ')+\": this.\"+t+\";\"})}(n).join(\"\\n \")+'\\n return this;\\n }\\n\\n _encode(name: string | null = \"\", _encoder: JSONEncoder | null = null): JSONEncoder {\\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\\n encoder.pushObject(name);\\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return\"encode<\"+t+\", JSONEncoder>(this.\"+i+', \"'+i+'\", encoder);'})}(n).join(\"\\n \")+\"\\n encoder.popObject();\\n return encoder;\\n }\\n\\n encode(): Uint8Array {\\n return this._encode().serialize();\\n }\\n\\n serialize(): Uint8Array {\\n return this.encode();\\n }\\n\\n toJSON(): string {\\n return this._encode().toString();\\n }\\n}\"}return i});return this.sb.concat(i).join(\"\\n\")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=\"\"),t+\"decode<\"+p(e.type)+', Obj>(obj, \"'+p(e.name)+'\")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf(\"\\n\")).includes(\"out\");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t(\"out/\"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?\"\":\"./\")+n.normalizedPath,h(n))})}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NONE=0]=\"NONE\",e[e.SIGN_EXTENSION=1]=\"SIGN_EXTENSION\",e[e.MUTABLE_GLOBAL=2]=\"MUTABLE_GLOBAL\",e[e.BULK_MEMORY=4]=\"BULK_MEMORY\",e[e.SIMD=8]=\"SIMD\",e[e.THREADS=16]=\"THREADS\"}(t.Feature||(t.Feature={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.WASM32=0]=\"WASM32\",e[e.WASM64=1]=\"WASM64\",e[e.JS=2]=\"JS\"}(t.Target||(t.Target={}))},function(e,t,i){\"use strict\";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]=\"NONE\",e[e.ARRAYBUFFERVIEW=1]=\"ARRAYBUFFERVIEW\",e[e.ARRAY=2]=\"ARRAY\",e[e.SET=4]=\"SET\",e[e.MAP=8]=\"MAP\",e[e.ACYCLIC=16]=\"ACYCLIC\",e[e.VALUE_ALIGN_0=32]=\"VALUE_ALIGN_0\",e[e.VALUE_ALIGN_1=64]=\"VALUE_ALIGN_1\",e[e.VALUE_ALIGN_2=128]=\"VALUE_ALIGN_2\",e[e.VALUE_ALIGN_3=256]=\"VALUE_ALIGN_3\",e[e.VALUE_ALIGN_4=512]=\"VALUE_ALIGN_4\",e[e.VALUE_SIGNED=1024]=\"VALUE_SIGNED\",e[e.VALUE_FLOAT=2048]=\"VALUE_FLOAT\",e[e.VALUE_NULLABLE=4096]=\"VALUE_NULLABLE\",e[e.VALUE_MANAGED=8192]=\"VALUE_MANAGED\",e[e.KEY_ALIGN_0=16384]=\"KEY_ALIGN_0\",e[e.KEY_ALIGN_1=32768]=\"KEY_ALIGN_1\",e[e.KEY_ALIGN_2=65536]=\"KEY_ALIGN_2\",e[e.KEY_ALIGN_3=131072]=\"KEY_ALIGN_3\",e[e.KEY_ALIGN_4=262144]=\"KEY_ALIGN_4\",e[e.KEY_SIGNED=524288]=\"KEY_SIGNED\",e[e.KEY_FLOAT=1048576]=\"KEY_FLOAT\",e[e.KEY_NULLABLE=2097152]=\"KEY_NULLABLE\",e[e.KEY_MANAGED=4194304]=\"KEY_MANAGED\"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return\"INFO\";case n.WARNING:return\"WARNING\";case n.ERROR:return\"ERROR\";default:return assert(!1),\"\"}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),\"\"}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]=\"INFO\",e[e.WARNING=1]=\"WARNING\",e[e.ERROR=2]=\"ERROR\"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE=\"\u001b[96m\",t.COLOR_YELLOW=\"\u001b[93m\",t.COLOR_RED=\"\u001b[91m\",t.COLOR_RESET=\"\u001b[0m\",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace(\"{0}\",n)),null!=s&&(o=o.replace(\"{1}\",s)),null!=a&&(o=o.replace(\"{2}\",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+\" \"+this.code.toString(10)+': \"'+this.message+'\" in '+this.range.source.normalizedPath+\":\"+this.range.line.toString(10)+\":\"+this.range.column.toString(10):o(this.category)+\" \"+this.code.toString(10)+\": \"+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NULL=0]=\"NULL\",e[e.LINEFEED=10]=\"LINEFEED\",e[e.CARRIAGERETURN=13]=\"CARRIAGERETURN\",e[e.LINESEPARATOR=8232]=\"LINESEPARATOR\",e[e.PARAGRAPHSEPARATOR=8233]=\"PARAGRAPHSEPARATOR\",e[e.NEXTLINE=133]=\"NEXTLINE\",e[e.SPACE=32]=\"SPACE\",e[e.NONBREAKINGSPACE=160]=\"NONBREAKINGSPACE\",e[e.ENQUAD=8192]=\"ENQUAD\",e[e.EMQUAD=8193]=\"EMQUAD\",e[e.ENSPACE=8194]=\"ENSPACE\",e[e.EMSPACE=8195]=\"EMSPACE\",e[e.THREEPEREMSPACE=8196]=\"THREEPEREMSPACE\",e[e.FOURPEREMSPACE=8197]=\"FOURPEREMSPACE\",e[e.SIXPEREMSPACE=8198]=\"SIXPEREMSPACE\",e[e.FIGURESPACE=8199]=\"FIGURESPACE\",e[e.PUNCTUATIONSPACE=8200]=\"PUNCTUATIONSPACE\",e[e.THINSPACE=8201]=\"THINSPACE\",e[e.HAIRSPACE=8202]=\"HAIRSPACE\",e[e.ZEROWIDTHSPACE=8203]=\"ZEROWIDTHSPACE\",e[e.NARROWNOBREAKSPACE=8239]=\"NARROWNOBREAKSPACE\",e[e.IDEOGRAPHICSPACE=12288]=\"IDEOGRAPHICSPACE\",e[e.MATHEMATICALSPACE=8287]=\"MATHEMATICALSPACE\",e[e.OGHAM=5760]=\"OGHAM\",e[e._=95]=\"_\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.AMPERSAND=38]=\"AMPERSAND\",e[e.ASTERISK=42]=\"ASTERISK\",e[e.AT=64]=\"AT\",e[e.BACKSLASH=92]=\"BACKSLASH\",e[e.BACKTICK=96]=\"BACKTICK\",e[e.BAR=124]=\"BAR\",e[e.CARET=94]=\"CARET\",e[e.CLOSEBRACE=125]=\"CLOSEBRACE\",e[e.CLOSEBRACKET=93]=\"CLOSEBRACKET\",e[e.CLOSEPAREN=41]=\"CLOSEPAREN\",e[e.COLON=58]=\"COLON\",e[e.COMMA=44]=\"COMMA\",e[e.DOLLAR=36]=\"DOLLAR\",e[e.DOT=46]=\"DOT\",e[e.DOUBLEQUOTE=34]=\"DOUBLEQUOTE\",e[e.EQUALS=61]=\"EQUALS\",e[e.EXCLAMATION=33]=\"EXCLAMATION\",e[e.GREATERTHAN=62]=\"GREATERTHAN\",e[e.HASH=35]=\"HASH\",e[e.LESSTHAN=60]=\"LESSTHAN\",e[e.MINUS=45]=\"MINUS\",e[e.OPENBRACE=123]=\"OPENBRACE\",e[e.OPENBRACKET=91]=\"OPENBRACKET\",e[e.OPENPAREN=40]=\"OPENPAREN\",e[e.PERCENT=37]=\"PERCENT\",e[e.PLUS=43]=\"PLUS\",e[e.QUESTION=63]=\"QUESTION\",e[e.SEMICOLON=59]=\"SEMICOLON\",e[e.SINGLEQUOTE=39]=\"SINGLEQUOTE\",e[e.SLASH=47]=\"SLASH\",e[e.TILDE=126]=\"TILDE\",e[e.BACKSPACE=8]=\"BACKSPACE\",e[e.FORMFEED=12]=\"FORMFEED\",e[e.BYTEORDERMARK=65279]=\"BYTEORDERMARK\",e[e.TAB=9]=\"TAB\",e[e.VERTICALTAB=11]=\"VERTICALTAB\"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:\".\"}function a(e){var t=e.length;if(t<=1){if(0==t)return\".\";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return\".\"}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith(\"std/\")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=\" \",r=\" \",s=\" \";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){\"use strict\";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i\")}e.isNullable&&n.push(\" | null\")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?\"((\":\"(\");var n=e.explicitThisType;n&&(i.push(\"this: \"),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(\", \"),this.serializeParameter(r[0]);for(var a=1;a \"),this.visitTypeNode(o)):i.push(\") => void\"),t&&i.push(\") | null\")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(\" extends \"),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push(\"=\"),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push(\"[\");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r\"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(\" as \"),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push(\"!\");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(\" \"),t.push(a.operatorTokenToString(e.operator)),t.push(\" \"),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push(\"<\"),this.visitTypeNode(i[0]);for(var r=1;r(\")}}else t.push(\"(\");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push(\"\\\\0\"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\b\");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\t\");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\n\");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\v\");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\f\");break;case 13:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\r\"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\\\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push(\"\\\\'\"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\\\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push(\"/\"),t.push(e.pattern),t.push(\"/\"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push(\"new \"),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push(\"(\"),this.visitNode(e.expression),t.push(\")\")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push(\".\"),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(\" ? \"),this.visitNode(e.ifThen),t.push(\" : \"),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push(\"\\n\"):t.push(\";\\n\")}else t.push(\";\\n\")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push(\"{\\n\");for(var r=++this.indentLevel,a=0;a\")}var _=e.extendsType;_&&(u.push(\" extends \"),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(\" implements \"),this.visitTypeNode(p[0]);for(a=1;a\")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push(\"(\");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push(\"this: \"),this.visitTypeNode(_)),c){_&&t.push(\", \"),this.serializeParameter(u[0]);for(o=1;o \"),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(\" => \"),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(\")\"):(t.push(\"): \"),this.visitTypeNode(h)),p&&(t.push(\" \"),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push(\"if (\"),this.visitNode(e.condition),t.push(\") \");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(\";\\n\");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(\" else \"):t.push(\"else \"),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(\" as \"),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push(\"import \");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push(\"{\\n\");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o\")}var u=e.extendsType;u&&(a.push(\" extends \"),this.visitTypeNode(u)),a.push(\" {\\n\");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n\")}}r.push(\" = \"),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push(\"!\"),t&&(i.push(\": \"),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(\" = \"),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name=\"UnreachableError\",r.prototype.message=\"unreachable\",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name=\"AssertionError\",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,\"replaceAll\",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return\"number\"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return\"object\"==typeof e||\"string\"==typeof e},t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"string\"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,\"__isLong__\",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error(\"empty string\");if(\"NaN\"===e||\"Infinity\"===e||\"+Infinity\"===e||\"-Infinity\"===e)return A;if(\"number\"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error(\"interior hyphen\");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c=\"0\"+c;a=\"\"+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error(\"division by zero\");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&\"function\"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.preamble='import { base64 } from \"near-runtime-ts\";\\nimport { JSONEncoder } from \"assemblyscript-json\";\\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\\n'}])});","if(typeof __WEBPACK_EXTERNAL_MODULE__11__ === 'undefined') {var e = new Error(\"Cannot find module 'assemblyscript'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__11__;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 13;","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2f8a79711d..fefd71817c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2771,7 +2771,7 @@ } }, "near-runtime-ts": { - "version": "github:nearprotocol/near-runtime-ts#91e78dc989cecd2a291294505056d7bb4d23aa7c", + "version": "github:nearprotocol/near-runtime-ts#cb207a2e6e16d732b67e9ce70b589ad30813469a", "from": "github:nearprotocol/near-runtime-ts", "dev": true, "requires": { diff --git a/tests/near-bindgen/assembly/hello/main.ts b/tests/near-bindgen/assembly/hello/main.ts index e932fd7afc..18251630e7 100755 --- a/tests/near-bindgen/assembly/hello/main.ts +++ b/tests/near-bindgen/assembly/hello/main.ts @@ -146,8 +146,9 @@ export function callPromise(args: PromiseArgs): void { args.receiver, args.methodName, inputArgs.encode().serialize(), - args.gas, - new u128(args.balance)); + new u128(args.balance), + args.gas + ); if (args.callback) { inputArgs.args = args.callbackArgs; let callbackBalance = args.callbackBalance as u64; @@ -156,8 +157,8 @@ export function callPromise(args: PromiseArgs): void { context.contractName, args.callback, inputArgs.encode().serialize(), + new u128(callbackBalance), args.callbackGas, - new u128(callbackBalance) ); } promise.returnAsResult(); @@ -168,9 +169,9 @@ export function callbackWithName(args: PromiseArgs): MyCallbackResult { let allRes = Array.create(contractResults.length); for (let i = 0; i < contractResults.length; ++i) { allRes[i] = new MyContractPromiseResult(); - allRes[i].ok = (contractResults[i].status == 1); + allRes[i].ok = (contractResults[i].success); if (allRes[i].ok && contractResults[i].buffer != null && contractResults[i].buffer.length > 0) { - allRes[i].r = MyCallbackResult.decode(contractResults[i].buffer); + allRes[i].r = decode(contractResults[i].buffer); } } let result: MyCallbackResult = { @@ -183,5 +184,5 @@ export function callbackWithName(args: PromiseArgs): MyCallbackResult { } export function getLastResult(): MyCallbackResult { - return MyCallbackResult.decode(storage.getBytes("lastResult")); + return decode(storage.getBytes("lastResult")); } diff --git a/tests/near-bindgen/assembly/test.ts b/tests/near-bindgen/assembly/test.ts index 4c3b51b1bd..3b65861e55 100644 --- a/tests/near-bindgen/assembly/test.ts +++ b/tests/near-bindgen/assembly/test.ts @@ -20,10 +20,9 @@ export function runTest(): void { original.uint8arrays[1] = base64.decode("aGVsbG8sIHdvcmxkIQ=="); original.u64Arr = [10000000000, 100000000000]; //@ts-ignore - const encoder = original.encode(); - logging.log("Before: " + encoder.toString()); + logging.log("Before: " + original.toJSON()); //@ts-ignore - const encoded = encoder.serialize(); + const encoded = original.encode(); //@ts-ignore let decoded: FooBar = decode(encoded); logging.log("After: "+ decoded.toJSON()); @@ -37,7 +36,7 @@ export function runTest(): void { const nullable = new Nullables(); //@ts-ignore - const nullable2 = decode(nullable.serialize()); + const nullable2 = decode(nullable.encode()); assert(nullable2.str == null); assert(nullable2.u128 == null); assert(nullable2.uint8Array == null); diff --git a/tests/near-bindgen/out/assembly/hello/main.ts b/tests/near-bindgen/out/assembly/hello/main.ts index d727258e7b..7a19dd8c91 100644 --- a/tests/near-bindgen/out/assembly/hello/main.ts +++ b/tests/near-bindgen/out/assembly/hello/main.ts @@ -17,12 +17,13 @@ function __wrapper_hello(): void { let result: string = hello(decode(obj, "name")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -60,12 +61,13 @@ function __wrapper_getValueByKey(): void { let result: string = getValueByKey(decode(obj, "key")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -86,12 +88,13 @@ function __wrapper_setValue(): void { let result: string = setValue(decode(obj, "value")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -103,12 +106,13 @@ function __wrapper_getValue(): void { let result: string = getValue(); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -120,12 +124,13 @@ function __wrapper_getAllKeys(): void { let result: Array = getAllKeys(); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString>() || isNullable>()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode>(encoder, result, null); + val = encode>(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -137,12 +142,13 @@ function __wrapper_benchmark(): void { let result: Array = benchmark(); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString>() || isNullable>()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode>(encoder, result, null); + val = encode>(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -163,12 +169,13 @@ function __wrapper_benchmark_storage(): void { let result: string = benchmark_storage(decode(obj, "n")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -189,12 +196,13 @@ function __wrapper_limited_storage(): void { let result: string = limited_storage(decode(obj, "max_storage")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -215,12 +223,13 @@ function __wrapper_benchmark_sum_n(): void { let result: string = benchmark_sum_n(decode(obj, "n")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -232,12 +241,13 @@ function __wrapper_returnHiWithLogs(): void { let result: string = returnHiWithLogs(); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -309,12 +319,13 @@ function __wrapper_recurse(): void { let result: i32 = recurse(decode(obj, "n")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -352,12 +363,13 @@ function __wrapper_callbackWithName(): void { let result: MyCallbackResult = callbackWithName(decode(obj, "args")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -369,12 +381,13 @@ function __wrapper_getLastResult(): void { let result: MyCallbackResult = getLastResult(); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -514,11 +527,11 @@ function callPromise(args: PromiseArgs): void { args: args.args }; let balance = args.balance as u64; - let promise = ContractPromise.create(args.receiver, args.methodName, inputArgs.encode().serialize(), args.gas, new u128(args.balance)); + let promise = ContractPromise.create(args.receiver, args.methodName, inputArgs.encode().serialize(), new u128(args.balance), args.gas); if (args.callback) { inputArgs.args = args.callbackArgs; let callbackBalance = args.callbackBalance as u64; - promise = promise.then(context.contractName, args.callback, inputArgs.encode().serialize(), args.callbackGas, new u128(callbackBalance)); + promise = promise.then(context.contractName, args.callback, inputArgs.encode().serialize(), new u128(callbackBalance), args.callbackGas); } promise.returnAsResult(); } @@ -527,9 +540,9 @@ function callbackWithName(args: PromiseArgs): MyCallbackResult { let allRes = Array.create(contractResults.length); for (let i = 0; i < contractResults.length; ++i) { allRes[i] = new MyContractPromiseResult(); - allRes[i].ok = (contractResults[i].status == 1); + allRes[i].ok = (contractResults[i].success); if (allRes[i].ok && contractResults[i].buffer != null && contractResults[i].buffer.length > 0) { - allRes[i].r = MyCallbackResult.decode(contractResults[i].buffer); + allRes[i].r = decode(contractResults[i].buffer); } } let result: MyCallbackResult = { @@ -541,5 +554,5 @@ function callbackWithName(args: PromiseArgs): MyCallbackResult { return result; } function getLastResult(): MyCallbackResult { - return MyCallbackResult.decode(storage.getBytes("lastResult")); + return decode(storage.getBytes("lastResult")); } \ No newline at end of file diff --git a/tests/near-bindgen/out/assembly/hello/model.ts b/tests/near-bindgen/out/assembly/hello/model.ts index e7dfc4c99f..a16655c582 100644 --- a/tests/near-bindgen/out/assembly/hello/model.ts +++ b/tests/near-bindgen/out/assembly/hello/model.ts @@ -42,28 +42,32 @@ export class PromiseArgs { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode(encoder, this.receiver, "receiver"); - encode(encoder, this.methodName, "methodName"); - encode(encoder, this.args, "args"); - encode(encoder, this.gas, "gas"); - encode(encoder, this.balance, "balance"); - encode(encoder, this.callback, "callback"); - encode(encoder, this.callbackArgs, "callbackArgs"); - encode(encoder, this.callbackBalance, "callbackBalance"); - encode(encoder, this.callbackGas, "callbackGas"); + encode(this.receiver, "receiver", encoder); + encode(this.methodName, "methodName", encoder); + encode(this.args, "args", encoder); + encode(this.gas, "gas", encoder); + encode(this.balance, "balance", encoder); + encode(this.callback, "callback", encoder); + encode(this.callbackArgs, "callbackArgs", encoder); + encode(this.callbackBalance, "callbackBalance", encoder); + encode(this.callbackGas, "callbackGas", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } export class InputPromiseArgs { @@ -90,20 +94,24 @@ export class InputPromiseArgs { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode(encoder, this.args, "args"); + encode(this.args, "args", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } export class MyContractPromiseResult { @@ -132,21 +140,25 @@ export class MyContractPromiseResult { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode(encoder, this.ok, "ok"); - encode(encoder, this.r, "r"); + encode(this.ok, "ok", encoder); + encode(this.r, "r", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } export class MyCallbackResult { @@ -175,20 +187,24 @@ export class MyCallbackResult { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode>(encoder, this.rs, "rs"); - encode(encoder, this.n, "n"); + encode, JSONEncoder>(this.rs, "rs", encoder); + encode(this.n, "n", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } \ No newline at end of file diff --git a/tests/near-bindgen/out/assembly/model.ts b/tests/near-bindgen/out/assembly/model.ts index f5bae3c898..4d44c74237 100644 --- a/tests/near-bindgen/out/assembly/model.ts +++ b/tests/near-bindgen/out/assembly/model.ts @@ -58,33 +58,37 @@ export class FooBar { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode(encoder, this.foo, "foo"); - encode(encoder, this.bar, "bar"); - encode(encoder, this.u64Val, "u64Val"); - encode(encoder, this.u64_zero, "u64_zero"); - encode(encoder, this.i64Val, "i64Val"); - encode(encoder, this.flag, "flag"); - encode(encoder, this.baz, "baz"); - encode(encoder, this.uint8array, "uint8array"); - encode>>(encoder, this.arr, "arr"); - encode>(encoder, this.u32Arr, "u32Arr"); - encode>(encoder, this.i32Arr, "i32Arr"); - encode(encoder, this.u128Val, "u128Val"); - encode>(encoder, this.uint8arrays, "uint8arrays"); - encode>(encoder, this.u64Arr, "u64Arr"); + encode(this.foo, "foo", encoder); + encode(this.bar, "bar", encoder); + encode(this.u64Val, "u64Val", encoder); + encode(this.u64_zero, "u64_zero", encoder); + encode(this.i64Val, "i64Val", encoder); + encode(this.flag, "flag", encoder); + encode(this.baz, "baz", encoder); + encode(this.uint8array, "uint8array", encoder); + encode>, JSONEncoder>(this.arr, "arr", encoder); + encode, JSONEncoder>(this.u32Arr, "u32Arr", encoder); + encode, JSONEncoder>(this.i32Arr, "i32Arr", encoder); + encode(this.u128Val, "u128Val", encoder); + encode, JSONEncoder>(this.uint8arrays, "uint8arrays", encoder); + encode, JSONEncoder>(this.u64Arr, "u64Arr", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } export class Nullables { @@ -115,22 +119,26 @@ export class Nullables { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode(encoder, this.str, "str"); - encode(encoder, this.u128, "u128"); - encode(encoder, this.uint8Array, "uint8Array"); + encode(this.str, "str", encoder); + encode(this.u128, "u128", encoder); + encode(this.uint8Array, "uint8Array", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } export class ContainerClass { @@ -157,20 +165,24 @@ export class ContainerClass { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode(encoder, this.foobar, "foobar"); + encode(this.foobar, "foobar", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } export class AnotherContainerClass { @@ -197,20 +209,24 @@ export class AnotherContainerClass { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode>>(encoder, this.foobars, "foobars"); + encode>, JSONEncoder>(this.foobars, "foobars", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } export class PromiseArgs { @@ -249,26 +265,30 @@ export class PromiseArgs { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode(encoder, this.receiver, "receiver"); - encode(encoder, this.methodName, "methodName"); - encode(encoder, this.args, "args"); - encode(encoder, this.balance, "balance"); - encode(encoder, this.callback, "callback"); - encode(encoder, this.callbackArgs, "callbackArgs"); - encode(encoder, this.callbackBalance, "callbackBalance"); + encode(this.receiver, "receiver", encoder); + encode(this.methodName, "methodName", encoder); + encode(this.args, "args", encoder); + encode(this.balance, "balance", encoder); + encode(this.callback, "callback", encoder); + encode(this.callbackArgs, "callbackArgs", encoder); + encode(this.callbackBalance, "callbackBalance", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } export class MyContractPromiseResult { @@ -297,21 +317,25 @@ export class MyContractPromiseResult { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode(encoder, this.ok, "ok"); - encode(encoder, this.r, "r"); + encode(this.ok, "ok", encoder); + encode(this.r, "r", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } export class MyCallbackResult { @@ -340,21 +364,25 @@ export class MyCallbackResult { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode>(encoder, this.rs, "rs"); - encode(encoder, this.n, "n"); + encode, JSONEncoder>(this.rs, "rs", encoder); + encode(this.n, "n", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } export class Generic { @@ -381,19 +409,23 @@ export class Generic { return this; } - encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder { + _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder { let encoder = (_encoder != null ? _encoder : new JSONEncoder())!; encoder.pushObject(name); - encode(encoder, this.value, "value"); + encode(this.value, "value", encoder); encoder.popObject(); - return encoder + return encoder; + } + + encode(): Uint8Array { + return this._encode().serialize(); } serialize(): Uint8Array { - return this.encode().serialize(); + return this.encode(); } toJSON(): string { - return this.encode().toString(); + return this._encode().toString(); } } \ No newline at end of file diff --git a/tests/near-bindgen/out/assembly/test.ts b/tests/near-bindgen/out/assembly/test.ts index a5f946eb10..8bc5bb150f 100644 --- a/tests/near-bindgen/out/assembly/test.ts +++ b/tests/near-bindgen/out/assembly/test.ts @@ -17,12 +17,13 @@ function __wrapper_convertFoobars(): void { let result: Array = convertFoobars(decode, Obj>(obj, "foobars")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString>() || isNullable>()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode>(encoder, result, null); + val = encode>(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -43,12 +44,13 @@ function __wrapper_getStringArrayLength(): void { let result: i32 = getStringArrayLength(decode, Obj>(obj, "arr")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -69,12 +71,13 @@ function __wrapper_rewrapFoobar(): void { let result: AnotherContainerClass = rewrapFoobar(decode(obj, "container")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -95,12 +98,13 @@ function __wrapper_unwrapFoobar(): void { let result: FooBar = unwrapFoobar(decode(obj, "container")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -112,12 +116,13 @@ function __wrapper_stringOrNull(): void { let result: string | null = stringOrNull(); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result!, null); + val = encode(result!, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -138,12 +143,13 @@ function __wrapper_stringAliasTest(): void { let result: StringAlias = stringAliasTest(decode(obj, "str")); let encoder = new JSONEncoder(); + let val: Uint8Array; if ((isString() || isNullable()) && result == null) { encoder.setNull(null); + val = encoder.serialize(); } else { - encode(encoder, result, null); + val = encode(result, null, encoder); } - let val: Uint8Array = encoder.serialize(); value_return(val.byteLength, val.buffer); } @@ -178,9 +184,8 @@ export function runTest(): void { original.uint8arrays[0] = base64.decode("aGVsbG8sIHdvcmxkIQ=="); original.uint8arrays[1] = base64.decode("aGVsbG8sIHdvcmxkIQ=="); original.u64Arr = [10000000000, 100000000000]; - const encoder = original.encode(); - logging.log("Before: " + encoder.toString()); - const encoded = encoder.serialize(); + logging.log("Before: " + original.toJSON()); + const encoded = original.encode(); let decoded: FooBar = decode(encoded); logging.log("After: " + decoded.toJSON()); assert(original.foo == decoded.foo); @@ -191,7 +196,7 @@ export function runTest(): void { assert(original.u64Arr[0] == decoded.u64Arr[0]); assert(original.u64_zero == decoded.u64_zero); const nullable = new Nullables(); - const nullable2 = decode(nullable.serialize()); + const nullable2 = decode(nullable.encode()); assert(nullable2.str == null); assert(nullable2.u128 == null); assert(nullable2.uint8Array == null); diff --git a/tests/near-bindgen/out/test.wat b/tests/near-bindgen/out/test.wat index efe6cc193f..4dda7f91bb 100644 --- a/tests/near-bindgen/out/test.wat +++ b/tests/near-bindgen/out/test.wat @@ -21,7 +21,7 @@ (type $FUNCSIG$vijjjj (func (param i32 i64 i64 i64 i64))) (type $FUNCSIG$vij (func (param i32 i64))) (type $FUNCSIG$viji (func (param i32 i64 i32))) - (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) + (type $FUNCSIG$ijii (func (param i64 i32 i32) (result i32))) (import "env" "input" (func $~lib/nearEntry/input (param i64))) (import "env" "register_len" (func $~lib/nearEntry/register_len (param i64) (result i64))) (import "env" "panic" (func $~lib/nearEntry/panic)) @@ -6020,7 +6020,7 @@ call $~lib/string/String.__concat local.tee $6 i32.const 2552 - i32.const 355 + i32.const 350 i32.const 4 call $~lib/builtins/abort unreachable @@ -6072,7 +6072,7 @@ call $~lib/string/String.__concat local.tee $7 i32.const 2552 - i32.const 377 + i32.const 372 i32.const 4 call $~lib/builtins/abort unreachable @@ -6228,7 +6228,7 @@ call $~lib/string/String.__concat local.tee $6 i32.const 2552 - i32.const 355 + i32.const 350 i32.const 4 call $~lib/builtins/abort unreachable @@ -6280,7 +6280,7 @@ call $~lib/string/String.__concat local.tee $7 i32.const 2552 - i32.const 377 + i32.const 372 i32.const 4 call $~lib/builtins/abort unreachable @@ -6896,7 +6896,7 @@ call $~lib/string/String.__concat local.tee $7 i32.const 2552 - i32.const 355 + i32.const 350 i32.const 4 call $~lib/builtins/abort unreachable @@ -6949,7 +6949,7 @@ call $~lib/string/String.__concat local.tee $8 i32.const 2552 - i32.const 372 + i32.const 367 i32.const 6 call $~lib/builtins/abort unreachable @@ -7113,7 +7113,7 @@ call $~lib/string/String.__concat local.tee $7 i32.const 2552 - i32.const 355 + i32.const 350 i32.const 4 call $~lib/builtins/abort unreachable @@ -7166,7 +7166,7 @@ call $~lib/string/String.__concat local.tee $8 i32.const 2552 - i32.const 372 + i32.const 367 i32.const 6 call $~lib/builtins/abort unreachable @@ -7327,7 +7327,7 @@ call $~lib/string/String.__concat local.tee $6 i32.const 2552 - i32.const 355 + i32.const 350 i32.const 4 call $~lib/builtins/abort unreachable @@ -7379,7 +7379,7 @@ call $~lib/string/String.__concat local.tee $7 i32.const 2552 - i32.const 364 + i32.const 359 i32.const 4 call $~lib/builtins/abort unreachable @@ -7557,7 +7557,7 @@ call $~lib/string/String.__concat local.tee $5 i32.const 2552 - i32.const 322 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -8181,7 +8181,7 @@ call $~lib/string/String.__concat local.tee $5 i32.const 2552 - i32.const 322 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -8399,7 +8399,7 @@ call $~lib/string/String.__concat local.tee $5 i32.const 2552 - i32.const 322 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -8463,7 +8463,7 @@ call $~lib/string/String.__concat local.tee $3 i32.const 2552 - i32.const 327 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -8737,7 +8737,7 @@ call $~lib/string/String.__concat local.tee $3 i32.const 2552 - i32.const 327 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -9091,7 +9091,7 @@ call $~lib/string/String.__concat local.tee $6 i32.const 2552 - i32.const 355 + i32.const 350 i32.const 4 call $~lib/builtins/abort unreachable @@ -9143,7 +9143,7 @@ call $~lib/string/String.__concat local.tee $7 i32.const 2552 - i32.const 377 + i32.const 372 i32.const 4 call $~lib/builtins/abort unreachable @@ -9232,7 +9232,7 @@ call $~lib/string/String.__concat local.tee $3 i32.const 2552 - i32.const 327 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -9584,7 +9584,7 @@ call $~lib/string/String.__concat local.tee $6 i32.const 2552 - i32.const 355 + i32.const 350 i32.const 4 call $~lib/builtins/abort unreachable @@ -9636,7 +9636,7 @@ call $~lib/string/String.__concat local.tee $7 i32.const 2552 - i32.const 377 + i32.const 372 i32.const 4 call $~lib/builtins/abort unreachable @@ -9725,7 +9725,7 @@ call $~lib/string/String.__concat local.tee $3 i32.const 2552 - i32.const 327 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -11319,7 +11319,7 @@ call $~lib/string/String.__concat local.tee $5 i32.const 2552 - i32.const 322 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -11387,7 +11387,7 @@ call $~lib/string/String.__concat local.tee $4 i32.const 2552 - i32.const 400 + i32.const 395 i32.const 2 call $~lib/builtins/abort unreachable @@ -11416,8 +11416,6 @@ local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release local.get $9 @@ -11432,6 +11430,8 @@ call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release local.get $10 @@ -11621,7 +11621,7 @@ call $~lib/string/String.__concat local.tee $5 i32.const 2552 - i32.const 322 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -11727,7 +11727,7 @@ call $~lib/string/String.__concat local.tee $3 i32.const 2552 - i32.const 327 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -12083,7 +12083,7 @@ call $~lib/string/String.__concat local.tee $7 i32.const 2552 - i32.const 355 + i32.const 350 i32.const 4 call $~lib/builtins/abort unreachable @@ -12136,7 +12136,7 @@ call $~lib/string/String.__concat local.tee $8 i32.const 2552 - i32.const 372 + i32.const 367 i32.const 6 call $~lib/builtins/abort unreachable @@ -12231,7 +12231,7 @@ call $~lib/string/String.__concat local.tee $3 i32.const 2552 - i32.const 327 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -12886,7 +12886,7 @@ call $~lib/string/String.__concat local.tee $6 i32.const 2552 - i32.const 400 + i32.const 395 i32.const 2 call $~lib/builtins/abort unreachable @@ -12913,8 +12913,6 @@ local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release local.get $7 call $~lib/rt/stub/__release local.get $5 @@ -12929,6 +12927,8 @@ call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release local.get $10 @@ -13003,7 +13003,7 @@ call $~lib/string/String.__concat local.tee $3 i32.const 2552 - i32.const 327 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -14519,43 +14519,53 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $0 + (local $4 i32) + local.get $1 call $~lib/rt/stub/__retain drop local.get $2 call $~lib/rt/stub/__retain drop - local.get $0 local.get $2 local.get $1 + local.get $0 i64.extend_i32_s call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger - local.get $0 + i32.const 0 local.set $3 local.get $2 + local.set $4 + local.get $1 call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/nearEntry/encode (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $0 + (local $4 i32) + local.get $1 call $~lib/rt/stub/__retain drop local.get $2 call $~lib/rt/stub/__retain drop - local.get $0 local.get $2 local.get $1 + local.get $0 i64.extend_i32_u call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger - local.get $0 + i32.const 0 local.set $3 local.get $2 + local.set $4 + local.get $1 call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + local.get $4 ) (func $~lib/util/number/utoa64 (; 216 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) @@ -14657,47 +14667,57 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 220 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 220 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $0 + (local $4 i32) + local.get $1 call $~lib/rt/stub/__retain drop local.get $2 call $~lib/rt/stub/__retain drop - local.get $0 local.get $2 local.get $1 + local.get $0 call $~lib/number/U64#toString local.tee $3 call $~lib/assemblyscript-json/encoder/JSONEncoder#setString local.get $3 call $~lib/rt/stub/__release - local.get $0 - local.set $3 + i32.const 0 + local.set $4 local.get $2 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 221 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 221 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $0 + (local $4 i32) + local.get $1 call $~lib/rt/stub/__retain drop local.get $2 call $~lib/rt/stub/__retain drop - local.get $0 local.get $2 local.get $1 + local.get $0 call $~lib/number/I64#toString local.tee $3 call $~lib/assemblyscript-json/encoder/JSONEncoder#setString local.get $3 call $~lib/rt/stub/__release - local.get $0 - local.set $3 + i32.const 0 + local.set $4 local.get $2 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 call $~lib/rt/stub/__release local.get $3 ) @@ -14730,26 +14750,32 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $0 + (local $4 i32) + local.get $1 call $~lib/rt/stub/__retain drop local.get $2 call $~lib/rt/stub/__retain drop - local.get $0 local.get $2 local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean + i32.const 0 local.set $3 local.get $2 + local.set $4 + local.get $1 call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/nearEntry/encode<~lib/string/String> (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/string/String,~lib/assemblyscript-json/encoder/JSONEncoder> (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -14759,26 +14785,30 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 call $~lib/string/String.__eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 local.get $1 + local.get $0 call $~lib/assemblyscript-json/encoder/JSONEncoder#setString end - local.get $0 + i32.const 0 local.set $3 - local.get $1 - call $~lib/rt/stub/__release local.get $2 + local.set $4 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + local.get $4 ) (func $~lib/near-runtime-ts/base64/base64.encode (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -15029,8 +15059,9 @@ call $~lib/rt/stub/__release local.get $6 ) - (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array,~lib/assemblyscript-json/encoder/JSONEncoder> (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -15040,28 +15071,32 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 local.get $1 + local.get $0 call $~lib/near-runtime-ts/base64/base64.encode local.tee $3 call $~lib/assemblyscript-json/encoder/JSONEncoder#setString local.get $3 call $~lib/rt/stub/__release end - local.get $0 + i32.const 0 + local.set $4 + local.get $2 local.set $3 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $4 call $~lib/rt/stub/__release local.get $3 ) @@ -15193,9 +15228,10 @@ call $~lib/array/Array#pop drop ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 235 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>,~lib/assemblyscript-json/encoder/JSONEncoder> (; 235 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -15205,16 +15241,16 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray drop block $break|0 @@ -15222,18 +15258,18 @@ local.set $3 loop $loop|0 local.get $3 - local.get $1 + local.get $0 call $~lib/array/Array<~lib/string/String>#get:length i32.lt_s i32.eqz br_if $break|0 local.get $0 - local.get $1 local.get $3 call $~lib/array/Array<~lib/string/String>#__get local.tee $4 i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> + local.get $2 + call $~lib/nearEntry/encode<~lib/string/String,~lib/assemblyscript-json/encoder/JSONEncoder> call $~lib/rt/stub/__release local.get $3 i32.const 1 @@ -15245,20 +15281,25 @@ end unreachable end - local.get $0 + local.get $2 call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - local.get $0 + i32.const 0 + local.set $5 + local.get $2 local.set $4 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $5 call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>,~lib/assemblyscript-json/encoder/JSONEncoder> (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -15268,16 +15309,16 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray drop block $break|0 @@ -15285,18 +15326,18 @@ local.set $3 loop $loop|0 local.get $3 - local.get $1 + local.get $0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length i32.lt_s i32.eqz br_if $break|0 local.get $0 - local.get $1 local.get $3 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get local.tee $4 i32.const 0 - call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> + local.get $2 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>,~lib/assemblyscript-json/encoder/JSONEncoder> call $~lib/rt/stub/__release local.get $3 i32.const 1 @@ -15308,14 +15349,18 @@ end unreachable end - local.get $0 + local.get $2 call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - local.get $0 + i32.const 0 + local.set $5 + local.get $2 local.set $4 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $5 call $~lib/rt/stub/__release local.get $4 ) @@ -15351,8 +15396,9 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array,~lib/assemblyscript-json/encoder/JSONEncoder> (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -15362,16 +15408,16 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray drop block $break|0 @@ -15379,17 +15425,17 @@ local.set $3 loop $loop|0 local.get $3 - local.get $1 + local.get $0 call $~lib/array/Array#get:length i32.lt_s i32.eqz br_if $break|0 local.get $0 - local.get $1 local.get $3 call $~lib/array/Array#__get i32.const 0 - call $~lib/nearEntry/encode + local.get $2 + call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 i32.const 1 @@ -15399,19 +15445,24 @@ end unreachable end - local.get $0 + local.get $2 call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - local.get $0 + i32.const 0 + local.set $4 + local.get $2 local.set $3 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $4 call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array,~lib/assemblyscript-json/encoder/JSONEncoder> (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -15421,16 +15472,16 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray drop block $break|0 @@ -15438,17 +15489,17 @@ local.set $3 loop $loop|0 local.get $3 - local.get $1 + local.get $0 call $~lib/array/Array#get:length i32.lt_s i32.eqz br_if $break|0 local.get $0 - local.get $1 local.get $3 call $~lib/array/Array#__get i32.const 0 - call $~lib/nearEntry/encode + local.get $2 + call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 i32.const 1 @@ -15458,14 +15509,18 @@ end unreachable end - local.get $0 + local.get $2 call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - local.get $0 + i32.const 0 + local.set $4 + local.get $2 local.set $3 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $4 call $~lib/rt/stub/__release local.get $3 ) @@ -15990,10 +16045,11 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128,~lib/assemblyscript-json/encoder/JSONEncoder> (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -16003,7 +16059,7 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 call $~lib/rt/stub/__retain local.set $4 i32.const 0 @@ -16030,13 +16086,13 @@ call $~lib/rt/stub/__release local.get $5 if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 local.get $1 + local.get $0 i32.const 0 call $~lib/bignum/integer/u128/u128#toString local.tee $4 @@ -16044,11 +16100,15 @@ local.get $4 call $~lib/rt/stub/__release end - local.get $0 + i32.const 0 + local.set $6 + local.get $2 local.set $4 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $6 call $~lib/rt/stub/__release local.get $4 ) @@ -16097,9 +16157,10 @@ local.get $1 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>,~lib/assemblyscript-json/encoder/JSONEncoder> (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -16109,16 +16170,16 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray drop block $break|0 @@ -16126,18 +16187,18 @@ local.set $3 loop $loop|0 local.get $3 - local.get $1 + local.get $0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length i32.lt_s i32.eqz br_if $break|0 local.get $0 - local.get $1 local.get $3 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get local.tee $4 i32.const 0 - call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> + local.get $2 + call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array,~lib/assemblyscript-json/encoder/JSONEncoder> call $~lib/rt/stub/__release local.get $3 i32.const 1 @@ -16149,14 +16210,18 @@ end unreachable end - local.get $0 + local.get $2 call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - local.get $0 + i32.const 0 + local.set $5 + local.get $2 local.set $4 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $5 call $~lib/rt/stub/__release local.get $4 ) @@ -16192,8 +16257,9 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 257 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array,~lib/assemblyscript-json/encoder/JSONEncoder> (; 257 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -16203,16 +16269,16 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray drop block $break|0 @@ -16220,17 +16286,17 @@ local.set $3 loop $loop|0 local.get $3 - local.get $1 + local.get $0 call $~lib/array/Array#get:length i32.lt_s i32.eqz br_if $break|0 local.get $0 - local.get $1 local.get $3 call $~lib/array/Array#__get i32.const 0 - call $~lib/nearEntry/encode + local.get $2 + call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 i32.const 1 @@ -16240,14 +16306,18 @@ end unreachable end - local.get $0 + local.get $2 call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - local.get $0 + i32.const 0 + local.set $4 + local.get $2 local.set $3 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $4 call $~lib/rt/stub/__release local.get $3 ) @@ -16260,7 +16330,7 @@ call $~lib/array/Array#pop drop ) - (func $assembly/model/FooBar#encode (; 259 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/FooBar#_encode (; 259 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -16269,11 +16339,11 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $2 i32.const 0 i32.ne if (result i32) - local.get $1 + local.get $2 call $~lib/rt/stub/__retain else i32.const 0 @@ -16288,92 +16358,92 @@ call $~lib/rt/stub/__retain local.set $3 local.get $3 - local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject drop - local.get $3 local.get $0 i32.load i32.const 2776 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release local.get $0 i32.load offset=4 i32.const 2960 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release local.get $0 i64.load offset=8 i32.const 3008 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release local.get $0 i64.load offset=16 i32.const 3208 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release local.get $0 i64.load offset=24 i32.const 3240 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release local.get $0 i32.load8_u offset=32 i32.const 3296 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release local.get $0 i32.load offset=36 i32.const 3392 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode<~lib/string/String,~lib/assemblyscript-json/encoder/JSONEncoder> + call $~lib/rt/stub/__release local.get $0 i32.load offset=40 i32.const 3480 - call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array,~lib/assemblyscript-json/encoder/JSONEncoder> + call $~lib/rt/stub/__release local.get $0 i32.load offset=44 i32.const 3520 - call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>,~lib/assemblyscript-json/encoder/JSONEncoder> + call $~lib/rt/stub/__release local.get $0 i32.load offset=48 i32.const 3544 - call $~lib/nearEntry/encode<~lib/array/Array> - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode<~lib/array/Array,~lib/assemblyscript-json/encoder/JSONEncoder> + call $~lib/rt/stub/__release local.get $0 i32.load offset=52 i32.const 3576 - call $~lib/nearEntry/encode<~lib/array/Array> - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode<~lib/array/Array,~lib/assemblyscript-json/encoder/JSONEncoder> + call $~lib/rt/stub/__release local.get $0 i32.load offset=56 i32.const 3608 - call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128,~lib/assemblyscript-json/encoder/JSONEncoder> + call $~lib/rt/stub/__release local.get $0 i32.load offset=60 i32.const 3944 - call $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>,~lib/assemblyscript-json/encoder/JSONEncoder> + call $~lib/rt/stub/__release local.get $0 i32.load offset=64 i32.const 3984 - call $~lib/nearEntry/encode<~lib/array/Array> + local.get $3 + call $~lib/nearEntry/encode<~lib/array/Array,~lib/assemblyscript-json/encoder/JSONEncoder> call $~lib/rt/stub/__release local.get $3 call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject @@ -16385,8 +16455,9 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 260 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 260 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -16396,29 +16467,33 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $1 local.get $0 + local.get $1 local.get $2 - call $assembly/model/FooBar#encode + call $assembly/model/FooBar#_encode call $~lib/rt/stub/__release end - local.get $0 + i32.const 0 local.set $3 - local.get $1 - call $~lib/rt/stub/__release local.get $2 + local.set $4 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + local.get $4 ) - (func $assembly/model/ContainerClass#encode (; 261 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/ContainerClass#_encode (; 261 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -16427,11 +16502,11 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $2 i32.const 0 i32.ne if (result i32) - local.get $1 + local.get $2 call $~lib/rt/stub/__retain else i32.const 0 @@ -16446,14 +16521,14 @@ call $~lib/rt/stub/__retain local.set $3 local.get $3 - local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject drop - local.get $3 local.get $0 i32.load i32.const 4784 - call $~lib/nearEntry/encode + local.get $3 + call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject @@ -16465,8 +16540,9 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 262 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 262 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -16476,98 +16552,39 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $1 local.get $0 + local.get $1 local.get $2 - call $assembly/model/ContainerClass#encode + call $assembly/model/ContainerClass#_encode call $~lib/rt/stub/__release end - local.get $0 + i32.const 0 local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 263 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $1 - i32.const 0 - i32.eq - if - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else - local.get $0 - local.get $2 - call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray - drop - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - local.tee $4 - i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray - end - local.get $0 local.set $4 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 263 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.const 816 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/string/String.UTF8.byteLength (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.byteLength (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16690,7 +16707,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/string/String.UTF8.encode (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.encode (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16942,7 +16959,7 @@ call $~lib/rt/stub/__release local.get $6 ) - (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 266 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16976,7 +16993,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -16988,6 +17005,78 @@ call $~lib/rt/stub/__release local.get $2 ) + (func $~lib/nearEntry/encode<~lib/array/Array,~lib/typedarray/Uint8Array> (; 268 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + i32.eq + if + local.get $2 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $2 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray + drop + block $break|0 + i32.const 0 + local.set $3 + loop $loop|0 + local.get $3 + local.get $0 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.tee $4 + i32.const 0 + local.get $2 + call $~lib/nearEntry/encode + call $~lib/rt/stub/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray + end + i32.const 0 + local.set $5 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $4 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + return + ) (func $assembly/test/__wrapper_convertFoobars (; 269 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) @@ -17032,13 +17121,16 @@ i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor local.set $6 - local.get $6 + i32.const 0 + local.set $7 local.get $5 i32.const 0 - call $~lib/nearEntry/encode<~lib/array/Array> - call $~lib/rt/stub/__release local.get $6 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + call $~lib/nearEntry/encode<~lib/array/Array,~lib/typedarray/Uint8Array> + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 local.set $7 local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:byteLength @@ -17256,8 +17348,15 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/logging/logging.log (; 273 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + ) + (func $~lib/near-runtime-ts/logging/logging.log (; 274 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) + (local $2 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -17265,7 +17364,9 @@ call $~lib/near-runtime-ts/util/util.stringToBytes local.set $1 local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength i64.extend_i32_s local.get $1 i32.load offset=4 @@ -17273,10 +17374,12 @@ call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 local.get $1 call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/main/getStringArrayLength (; 274 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/getStringArrayLength (; 275 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17305,7 +17408,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/test/getStringArrayLength (; 275 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/getStringArrayLength (; 276 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -17317,7 +17420,35 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/test/__wrapper_getStringArrayLength (; 276 ;) (type $FUNCSIG$v) + (func $~lib/nearEntry/encode (; 277 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $2 + local.get $1 + local.get $0 + i64.extend_i32_s + call $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger + i32.const 0 + local.set $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + return + ) + (func $assembly/test/__wrapper_getStringArrayLength (; 278 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -17361,13 +17492,16 @@ i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor local.set $6 - local.get $6 + i32.const 0 + local.set $7 local.get $5 i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release local.get $6 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + call $~lib/nearEntry/encode + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 local.set $7 local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:byteLength @@ -17392,7 +17526,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/model/ContainerClass#constructor (; 277 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/ContainerClass#constructor (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -17407,7 +17541,7 @@ i32.store local.get $0 ) - (func $~lib/nearEntry/decode (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17576,7 +17710,7 @@ call $~lib/string/String.__concat local.tee $6 i32.const 2552 - i32.const 400 + i32.const 395 i32.const 2 call $~lib/builtins/abort unreachable @@ -17603,8 +17737,6 @@ local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release local.get $7 call $~lib/rt/stub/__release local.get $5 @@ -17619,11 +17751,13 @@ call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release local.get $10 ) - (func $assembly/model/ContainerClass#_decode (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/ContainerClass#_decode (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -17656,7 +17790,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/model/ContainerClass#decode<~lib/nearEntry/Obj> (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/ContainerClass#decode<~lib/nearEntry/Obj> (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17689,7 +17823,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17858,7 +17992,7 @@ call $~lib/string/String.__concat local.tee $6 i32.const 2552 - i32.const 400 + i32.const 395 i32.const 2 call $~lib/builtins/abort unreachable @@ -17885,8 +18019,6 @@ local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release local.get $7 call $~lib/rt/stub/__release local.get $5 @@ -17901,11 +18033,13 @@ call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release local.get $10 ) - (func $assembly/model/AnotherContainerClass#constructor (; 282 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/AnotherContainerClass#constructor (; 284 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -17920,7 +18054,7 @@ i32.store local.get $0 ) - (func $assembly/main/rewrapFoobar (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/rewrapFoobar (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17982,7 +18116,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/test/rewrapFoobar (; 284 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/rewrapFoobar (; 286 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -17994,11 +18128,11 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#get:length (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#get:length (; 287 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 288 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -18008,7 +18142,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -18039,11 +18173,11 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $~lib/array/Array#get:length (; 288 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -18053,7 +18187,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 292 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -18084,9 +18218,10 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array,~lib/assemblyscript-json/encoder/JSONEncoder> (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -18096,16 +18231,16 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray drop block $break|0 @@ -18113,18 +18248,18 @@ local.set $3 loop $loop|0 local.get $3 - local.get $1 + local.get $0 call $~lib/array/Array#get:length i32.lt_s i32.eqz br_if $break|0 local.get $0 - local.get $1 local.get $3 call $~lib/array/Array#__get local.tee $4 i32.const 0 - call $~lib/nearEntry/encode + local.get $2 + call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $3 i32.const 1 @@ -18136,20 +18271,25 @@ end unreachable end - local.get $0 + local.get $2 call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - local.get $0 + i32.const 0 + local.set $5 + local.get $2 local.set $4 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $5 call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>,~lib/assemblyscript-json/encoder/JSONEncoder> (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -18159,16 +18299,16 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray drop block $break|0 @@ -18176,18 +18316,18 @@ local.set $3 loop $loop|0 local.get $3 - local.get $1 + local.get $0 call $~lib/array/Array<~lib/array/Array>#get:length i32.lt_s i32.eqz br_if $break|0 local.get $0 - local.get $1 local.get $3 call $~lib/array/Array<~lib/array/Array>#__get local.tee $4 i32.const 0 - call $~lib/nearEntry/encode<~lib/array/Array> + local.get $2 + call $~lib/nearEntry/encode<~lib/array/Array,~lib/assemblyscript-json/encoder/JSONEncoder> call $~lib/rt/stub/__release local.get $3 i32.const 1 @@ -18199,18 +18339,22 @@ end unreachable end - local.get $0 + local.get $2 call $~lib/assemblyscript-json/encoder/JSONEncoder#popArray end - local.get $0 + i32.const 0 + local.set $5 + local.get $2 local.set $4 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $5 call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/model/AnotherContainerClass#encode (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/AnotherContainerClass#_encode (; 295 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -18219,11 +18363,11 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $2 i32.const 0 i32.ne if (result i32) - local.get $1 + local.get $2 call $~lib/rt/stub/__retain else i32.const 0 @@ -18238,14 +18382,14 @@ call $~lib/rt/stub/__retain local.set $3 local.get $3 - local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject drop - local.get $3 local.get $0 i32.load i32.const 2304 - call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> + local.get $3 + call $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>,~lib/assemblyscript-json/encoder/JSONEncoder> call $~lib/rt/stub/__release local.get $3 call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject @@ -18257,8 +18401,9 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -18268,29 +18413,37 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $0 i32.const 0 i32.eq if - local.get $0 local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull else - local.get $1 local.get $0 + local.get $1 local.get $2 - call $assembly/model/AnotherContainerClass#encode + call $assembly/model/AnotherContainerClass#_encode call $~lib/rt/stub/__release end - local.get $0 + i32.const 0 local.set $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $4 + local.get $0 + call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release local.get $3 + call $~lib/rt/stub/__release + local.get $4 + return ) - (func $assembly/test/__wrapper_rewrapFoobar (; 295 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_rewrapFoobar (; 297 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -18334,13 +18487,16 @@ i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor local.set $6 - local.get $6 + i32.const 0 + local.set $7 local.get $5 i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release local.get $6 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + call $~lib/nearEntry/encode + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 local.set $7 local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:byteLength @@ -18367,7 +18523,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/array/Array>#constructor (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#constructor (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -18398,7 +18554,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Value> (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Value> (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18542,7 +18698,7 @@ local.get $7 return ) - (func $~lib/array/Array<~lib/array/Array>#push (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#push (; 300 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18578,7 +18734,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray<~lib/array/Array> (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/array/Array> (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18612,7 +18768,7 @@ call $~lib/string/String.__concat local.tee $3 i32.const 2552 - i32.const 327 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -18672,7 +18828,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>,~lib/nearEntry/Obj> (; 300 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>,~lib/nearEntry/Obj> (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18816,7 +18972,7 @@ local.get $7 return ) - (func $assembly/model/AnotherContainerClass#_decode (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/AnotherContainerClass#_decode (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -18849,7 +19005,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/model/AnotherContainerClass#decode<~lib/nearEntry/Obj> (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/AnotherContainerClass#decode<~lib/nearEntry/Obj> (; 304 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18882,7 +19038,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 305 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19051,7 +19207,7 @@ call $~lib/string/String.__concat local.tee $6 i32.const 2552 - i32.const 400 + i32.const 395 i32.const 2 call $~lib/builtins/abort unreachable @@ -19078,8 +19234,6 @@ local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release local.get $7 call $~lib/rt/stub/__release local.get $5 @@ -19094,11 +19248,13 @@ call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release local.get $10 ) - (func $assembly/main/unwrapFoobar (; 304 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/unwrapFoobar (; 306 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -19118,7 +19274,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/test/unwrapFoobar (; 305 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/unwrapFoobar (; 307 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -19130,7 +19286,49 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/test/__wrapper_unwrapFoobar (; 306 ;) (type $FUNCSIG$v) + (func $~lib/nearEntry/encode (; 308 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + i32.eq + if + local.get $2 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $0 + local.get $1 + local.get $2 + call $assembly/model/FooBar#_encode + call $~lib/rt/stub/__release + end + i32.const 0 + local.set $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $4 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + return + ) + (func $assembly/test/__wrapper_unwrapFoobar (; 309 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -19174,13 +19372,16 @@ i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor local.set $6 - local.get $6 + i32.const 0 + local.set $7 local.get $5 i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release local.get $6 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + call $~lib/nearEntry/encode + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 local.set $7 local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:byteLength @@ -19207,14 +19408,55 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/main/stringOrNull (; 307 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/main/stringOrNull (; 310 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/rt/stub/__retain ) - (func $assembly/test/stringOrNull (; 308 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/test/stringOrNull (; 311 ;) (type $FUNCSIG$i) (result i32) call $assembly/main/stringOrNull ) - (func $assembly/test/__wrapper_stringOrNull (; 309 ;) (type $FUNCSIG$v) + (func $~lib/nearEntry/encode<~lib/string/String,~lib/typedarray/Uint8Array> (; 312 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + if + local.get $2 + local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull + else + local.get $2 + local.get $1 + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#setString + end + i32.const 0 + local.set $3 + local.get $2 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $4 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + return + ) + (func $assembly/test/__wrapper_stringOrNull (; 313 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19224,6 +19466,8 @@ i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor local.set $1 + i32.const 0 + local.set $2 local.get $0 i32.const 0 call $~lib/string/String.__eq @@ -19231,22 +19475,30 @@ local.get $1 i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else local.get $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + local.set $2 + else local.get $0 - local.tee $2 + local.tee $3 if (result i32) - local.get $2 + local.get $3 else unreachable end i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> + local.get $1 + call $~lib/nearEntry/encode<~lib/string/String,~lib/typedarray/Uint8Array> + local.set $3 + local.get $2 call $~lib/rt/stub/__release + local.get $3 + local.set $2 end - local.get $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $2 local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i64.extend_i32_s @@ -19264,7 +19516,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/test/stringAliasTest (; 310 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/stringAliasTest (; 314 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -19282,7 +19534,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/test/__wrapper_stringAliasTest (; 311 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_stringAliasTest (; 315 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -19326,6 +19578,8 @@ i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor local.set $6 + i32.const 0 + local.set $7 local.get $5 i32.const 0 call $~lib/string/String.__eq @@ -19333,16 +19587,24 @@ local.get $6 i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#setNull - else local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + local.set $7 + else local.get $5 i32.const 0 - call $~lib/nearEntry/encode<~lib/string/String> + local.get $6 + call $~lib/nearEntry/encode<~lib/string/String,~lib/typedarray/Uint8Array> + local.set $8 + local.get $7 call $~lib/rt/stub/__release + local.get $8 + local.set $7 end - local.get $6 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $7 local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i64.extend_i32_s @@ -19368,7 +19630,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 312 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 316 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -19399,7 +19661,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 313 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 317 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -19429,7 +19691,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 314 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 318 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -19473,7 +19735,35 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/decode (; 315 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/FooBar#toJSON (; 319 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 816 + i32.const 0 + call $assembly/model/FooBar#_encode + local.tee $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#toString + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/model/FooBar#encode (; 320 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 816 + i32.const 0 + call $assembly/model/FooBar#_encode + local.tee $1 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/nearEntry/decode (; 321 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19649,7 +19939,7 @@ call $~lib/string/String.__concat local.tee $7 i32.const 2552 - i32.const 400 + i32.const 395 i32.const 2 call $~lib/builtins/abort unreachable @@ -19678,8 +19968,6 @@ call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release local.get $6 @@ -19694,25 +19982,13 @@ call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $9 call $~lib/rt/stub/__release local.get $11 ) - (func $assembly/model/FooBar#toJSON (; 316 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 0 - i32.const 816 - call $assembly/model/FooBar#encode - local.tee $1 - call $~lib/assemblyscript-json/encoder/JSONEncoder#toString - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $assembly/model/Nullables#constructor (; 317 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#constructor (; 322 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -19733,7 +20009,7 @@ i32.store offset=8 local.get $0 ) - (func $assembly/model/Nullables#encode (; 318 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/Nullables#_encode (; 323 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -19742,11 +20018,11 @@ local.get $2 call $~lib/rt/stub/__retain drop - local.get $1 + local.get $2 i32.const 0 i32.ne if (result i32) - local.get $1 + local.get $2 call $~lib/rt/stub/__retain else i32.const 0 @@ -19761,26 +20037,26 @@ call $~lib/rt/stub/__retain local.set $3 local.get $3 - local.get $2 + local.get $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject drop - local.get $3 local.get $0 i32.load i32.const 5240 - call $~lib/nearEntry/encode<~lib/string/String> - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode<~lib/string/String,~lib/assemblyscript-json/encoder/JSONEncoder> + call $~lib/rt/stub/__release local.get $0 i32.load offset=4 i32.const 3872 - call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> - call $~lib/rt/stub/__release local.get $3 + call $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128,~lib/assemblyscript-json/encoder/JSONEncoder> + call $~lib/rt/stub/__release local.get $0 i32.load offset=8 i32.const 5680 - call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> + local.get $3 + call $~lib/nearEntry/encode<~lib/typedarray/Uint8Array,~lib/assemblyscript-json/encoder/JSONEncoder> call $~lib/rt/stub/__release local.get $3 call $~lib/assemblyscript-json/encoder/JSONEncoder#popObject @@ -19792,13 +20068,13 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/model/Nullables#serialize (; 319 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#encode (; 324 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 0 i32.const 816 - call $assembly/model/Nullables#encode + i32.const 0 + call $assembly/model/Nullables#_encode local.tee $1 call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize local.set $2 @@ -19806,7 +20082,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/model/Nullables#_decode (; 320 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/Nullables#_decode (; 325 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -19879,7 +20155,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/model/Nullables#decode<~lib/nearEntry/Obj> (; 321 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/Nullables#decode<~lib/nearEntry/Obj> (; 326 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19912,7 +20188,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 322 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 327 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20088,7 +20364,7 @@ call $~lib/string/String.__concat local.tee $7 i32.const 2552 - i32.const 400 + i32.const 395 i32.const 2 call $~lib/builtins/abort unreachable @@ -20117,8 +20393,6 @@ call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release local.get $6 @@ -20133,11 +20407,13 @@ call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $9 call $~lib/rt/stub/__release local.get $11 ) - (func $assembly/test/runTest (; 323 ;) (type $FUNCSIG$v) + (func $assembly/test/runTest (; 328 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20165,7 +20441,6 @@ (local $24 i32) (local $25 i32) (local $26 i32) - (local $27 i32) i32.const 5296 call $~lib/near-runtime-ts/logging/logging.log i32.const 0 @@ -20335,56 +20610,51 @@ end local.get $8 i32.store offset=64 - local.get $0 - i32.const 0 - i32.const 816 - call $assembly/model/FooBar#encode - local.set $8 i32.const 5568 - local.get $8 - call $~lib/assemblyscript-json/encoder/JSONEncoder#toString - local.tee $3 + local.get $0 + call $assembly/model/FooBar#toJSON + local.tee $8 call $~lib/string/String.__concat - local.tee $9 + local.tee $3 call $~lib/near-runtime-ts/logging/logging.log - local.get $8 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $10 - local.get $10 + local.get $0 + call $assembly/model/FooBar#encode + local.set $9 + local.get $9 i32.const 816 call $~lib/nearEntry/decode - local.set $11 + local.set $10 i32.const 5600 - local.get $11 + local.get $10 call $assembly/model/FooBar#toJSON - local.tee $12 + local.tee $11 call $~lib/string/String.__concat - local.tee $13 + local.tee $12 call $~lib/near-runtime-ts/logging/logging.log local.get $0 i32.load - local.get $11 + local.get $10 i32.load i32.eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 186 + i32.const 191 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 i32.load offset=4 - local.get $11 + local.get $10 i32.load offset=4 i32.eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 187 + i32.const 192 i32.const 2 call $~lib/builtins/abort unreachable @@ -20392,17 +20662,17 @@ local.get $0 i32.load offset=40 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $14 - local.get $11 + local.tee $13 + local.get $10 i32.load offset=40 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $15 + local.tee $14 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 188 + i32.const 193 i32.const 2 call $~lib/builtins/abort unreachable @@ -20411,22 +20681,22 @@ i32.load offset=60 i32.const 0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $16 + local.tee $15 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $17 - local.get $11 + local.tee $16 + local.get $10 i32.load offset=60 i32.const 0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $18 + local.tee $17 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $19 + local.tee $18 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 189 + i32.const 194 i32.const 2 call $~lib/builtins/abort unreachable @@ -20435,17 +20705,17 @@ i32.load offset=44 i32.const 0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $20 + local.tee $19 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $21 + local.tee $20 i32.const 5424 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 190 + i32.const 195 i32.const 2 call $~lib/builtins/abort unreachable @@ -20454,7 +20724,7 @@ i32.load offset=64 i32.const 0 call $~lib/array/Array#__get - local.get $11 + local.get $10 i32.load offset=64 i32.const 0 call $~lib/array/Array#__get @@ -20463,35 +20733,35 @@ if i32.const 0 i32.const 5632 - i32.const 191 + i32.const 196 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 i64.load offset=16 - local.get $11 + local.get $10 i64.load offset=16 i64.eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 192 + i32.const 197 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/Nullables#constructor - local.set $22 - local.get $22 - call $assembly/model/Nullables#serialize - local.tee $23 + local.set $21 + local.get $21 + call $assembly/model/Nullables#encode + local.tee $22 i32.const 816 call $~lib/nearEntry/decode - local.set $24 - local.get $24 + local.set $23 + local.get $23 i32.load i32.const 0 call $~lib/string/String.__eq @@ -20499,50 +20769,50 @@ if i32.const 0 i32.const 5632 - i32.const 195 + i32.const 200 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $24 + local.get $23 i32.load offset=4 call $~lib/rt/stub/__retain - local.set $26 + local.set $25 i32.const 0 call $~lib/rt/stub/__retain - local.set $25 - local.get $26 - i64.load offset=8 + local.set $24 local.get $25 i64.load offset=8 + local.get $24 + i64.load offset=8 i64.eq if (result i32) - local.get $26 - i64.load local.get $25 i64.load + local.get $24 + i64.load i64.eq else i32.const 0 end - local.set $27 + local.set $26 + local.get $24 + call $~lib/rt/stub/__release local.get $25 call $~lib/rt/stub/__release local.get $26 - call $~lib/rt/stub/__release - local.get $27 i32.const 0 i32.ne i32.eqz if i32.const 0 i32.const 5632 - i32.const 196 + i32.const 201 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $24 + local.get $23 i32.load offset=8 i32.const 0 i32.eq @@ -20550,7 +20820,7 @@ if i32.const 0 i32.const 5632 - i32.const 197 + i32.const 202 i32.const 2 call $~lib/builtins/abort unreachable @@ -20605,13 +20875,11 @@ call $~lib/rt/stub/__release local.get $23 call $~lib/rt/stub/__release - local.get $24 - call $~lib/rt/stub/__release ) - (func $start (; 324 ;) (type $FUNCSIG$v) + (func $start (; 329 ;) (type $FUNCSIG$v) call $start:~lib/rt/index-stub call $start:~lib/nearEntry ) - (func $null (; 325 ;) (type $FUNCSIG$v) + (func $null (; 330 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/near-bindgen/package.json b/tests/near-bindgen/package.json index eed0cf0187..adf2b6d23b 100644 --- a/tests/near-bindgen/package.json +++ b/tests/near-bindgen/package.json @@ -6,7 +6,7 @@ "scripts": { "build:as": "../../bin/asc assembly/test.ts --validate --runtime stub --binaryFile out/test.wasm --textFile out/test.wat --runPasses dce --debug", "build:hello": "../../bin/asc assembly/hello/main.ts --validate --runtime stub --binaryFile out/hello.wasm --textFile out/hello.wat --runPasses dce --debug", - "build": "npm run build:as && npm run build:hello", + "build": "npm run build:as", "test": "node --experimental-wasm-bigint ./test.js" } } From c191ac3ef28fd7c9e26573580f431eba37b2a586 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Fri, 13 Sep 2019 15:55:10 -0400 Subject: [PATCH 24/24] Merge with upstream Added dist files --- dist/asc.js | 2 +- dist/asc.js.map | 2 +- tests/near-bindgen/out/test.wat | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dist/asc.js b/dist/asc.js index 33b5a7ea80..57ca91db30 100644 --- a/dist/asc.js +++ b/dist/asc.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e.assemblyscript)}("undefined"!=typeof self?self:this,function(__WEBPACK_EXTERNAL_MODULE__11__){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=4)}([function(e,n,t){var r,i;n.nextTick=function(e){var n=Array.prototype.slice.call(arguments);n.shift(),setTimeout(function(){e.apply(null,n)},0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(1)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!=typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!=typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(0))},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n){},function(e,n,t){e.exports=t(5)},function(module,exports,__webpack_require__){(function(process,global){process.browser&&(process.cwd=function(){return"."});const fs=__webpack_require__(3),path=__webpack_require__(1),utf8=__webpack_require__(6),colorsUtil=__webpack_require__(7),optionsUtil=__webpack_require__(8),mkdirp=__webpack_require__(9),EOL="win32"===process.platform?"\r\n":"\n",SEP="win32"===process.platform?"\\":"/",nearBindings=__webpack_require__(10),nearLibEntry=path.join(".","..","bindings","assembly","nearEntry.ts");process.removeAllListeners&&process.removeAllListeners("uncaughtException");var assemblyscript,isDev=!1;function checkDiagnostics(e,n){for(var t,r=!1;null!=(t=assemblyscript.nextDiagnostic(e));)n&&n.write(assemblyscript.formatDiagnostic(t,n.isTTY,!0)+EOL+EOL),assemblyscript.isError(t)&&(r=!0);return r}function createStats(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function measure(e){const n=process.hrtime();e();const t=process.hrtime(n);return 1e9*t[0]+t[1]}function formatTime(e){return e?(e/1e6).toFixed(3)+" ms":"N/A"}function printStats(e,n){function t(e,n){return formatTime(e)}(n||process.stdout).write(["I/O Read : "+t(e.readTime,e.readCount),"I/O Write : "+t(e.writeTime,e.writeCount),"Parse : "+t(e.parseTime,e.parseCount),"Compile : "+t(e.compileTime,e.compileCount),"Emit : "+t(e.emitTime,e.emitCount),"Validate : "+t(e.validateTime,e.validateCount),"Optimize : "+t(e.optimizeTime,e.optimizeCount)].join(EOL)+EOL)}function printRTTI(e,n){n||(n=process.stderr),n.write("# Runtime type information (RTTI)\n"),n.write(assemblyscript.buildRTTI(e))}(()=>{try{assemblyscript=__webpack_require__(11)}catch(e){try{__webpack_require__(!function(){var e=new Error("Cannot find module 'ts-node'");throw e.code="MODULE_NOT_FOUND",e}()).register({project:path.join(".","..","src","tsconfig.json")}),__webpack_require__(!function(){var e=new Error("Cannot find module '../src/glue/js'");throw e.code="MODULE_NOT_FOUND",e}()),assemblyscript=__webpack_require__(!function(){var e=new Error("Cannot find module '../src'");throw e.code="MODULE_NOT_FOUND",e}()),isDev=!0}catch(e_ts){try{assemblyscript=eval("require('./assemblyscript')")}catch(e){throw e.stack=e_ts.stack+"\n---\n"+e.stack,e}}}})(),exports.isBundle=!0,exports.isDev=isDev,exports.version=exports.isBundle?"0.7.0":__webpack_require__(!function(){var e=new Error("Cannot find module '../package.json'");throw e.code="MODULE_NOT_FOUND",e}()).version,exports.options=__webpack_require__(12),exports.sourceMapRoot="assemblyscript:///",exports.libraryPrefix=assemblyscript.LIBRARY_PREFIX,exports.defaultOptimizeLevel=3,exports.defaultShrinkLevel=1,exports.libraryFiles=exports.isBundle?Object({nearEntry:'\nimport { storage, near, base64, base58 } from "near-runtime-ts";\n//@ts-ignore\nimport { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\nimport { u128 } from "bignum";\n// Runtime functions\n// tslint:disable: no-unsafe-any\n\ntype Usize = u64;\n//@ts-ignore\n@global\n@external("env", "read_register")\ndeclare function read_register(register_id: Usize, ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "register_len")\ndeclare function register_len(register_id: Usize): Usize;\n\n//@ts-ignore\n@global\n@external("env", "input")\ndeclare function input(register_id: Usize): void;\n//@ts-ignore\n@global\n@external("env", "value_return")\ndeclare function value_return(value_len: Usize, value_ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "panic")\ndeclare function panic(): void;\n\nabstract class Value {\n static String(str: string): Value {\n return new Str(str);\n }\n static Number(num: i64): Value {\n return new Num(num);\n }\n static Bool(b: bool): Value {\n return new Bools(b);\n }\n static Null(): Value {\n return new Null();\n }\n static Array(): Value {\n return new Arr();\n }\n static Object(): Value {\n return new Obj();\n }\n\n toString(): string {\n if (this instanceof Str) {\n return (this).toString();\n }\n if (this instanceof Num) {\n return (this).toString();\n }\n if (this instanceof Bools) {\n return (this).toString();\n }\n if (this instanceof Null) {\n return (this).toString();\n }\n if (this instanceof Arr) {\n return (this).toString();\n }\n if (this instanceof Obj) {\n return (this).toString();\n }\n return "Value";\n }\n}\n@global\nclass Str extends Value {\n constructor(public _str: string) {\n super();\n }\n\n toString(): string {\n return "\\"" + this._str + "\\"";\n }\n}\n@global\nclass Num extends Value {\n constructor(public _num: i64) {\n super();\n }\n\n toString(): string {\n return this._num.toString();\n }\n}\n@global\nclass Null extends Value {\n constructor() {\n super();\n }\n\n toString(): string {\n return "null";\n }\n}\n\n@global class Bools extends Value {\n constructor(public _bool: bool) {\n super();\n }\n\n toString(): string {\n return this._bool.toString();\n }\n}\n\n@global\nclass Arr extends Value {\n _arr: Array;\n constructor() {\n super();\n this._arr = new Array();\n }\n\n push(obj: Value): void {\n this._arr.push(obj);\n }\n\n toString(): string {\n return "[" + this._arr.map((val: Value,i: i32,_arr: Value[]): string => val.toString()).join(",") + "]";\n }\n}\n\n@global\nclass Obj extends Value {\n _obj: Map;\n keys: Array;\n\n constructor() {\n super();\n this._obj = new Map();\n this.keys = new Array();\n }\n\n set(key: string, value: Value): void {\n if (!this._obj.has(key)) {\n this.keys.push(key);\n }\n this._obj.set(key, value);\n }\n\n get(key: string): Value | null {\n if (!this._obj.has(key)) {\n return null;\n }\n return this._obj.get(key);\n }\n\n toString(): string {\n const objs: string[] = [];\n for (let i: i32 = 0; i < this.keys.length; i++) {\n objs.push("\\"" + this.keys[i] + "\\":" + this._obj.get(this.keys[i]).toString());\n }\n return "{" + objs.join(",") + "}";\n }\n\n has(key: string): bool {\n return this._obj.has(key);\n }\n}\n\nclass Handler extends ThrowingJSONHandler {\n stack: Value[];\n constructor() {\n super();\n this.stack = new Array();\n }\n\n reset(): void {\n while (this.stack.length > 0) {\n this.stack.pop();\n }\n }\n\n get peek(): Value {\n return this.stack[this.stack.length - 1];\n }\n\n setString(name: string, value: string): void {\n const obj: Value = Value.String(value);\n this.addValue(name, obj);\n }\n\n setBoolean(name: string, value: bool): void {\n const obj = Value.Bool(value);\n this.addValue(name, obj);\n }\n\n setNull(name: string): void {\n const obj = Value.Null();\n this.addValue(name, obj);\n }\n\n setInteger(name: string, value: i64): void {\n const obj = Value.Number(value);\n this.addValue(name, obj);\n }\n\n pushArray(name: string): bool {\n const obj: Value = Value.Array();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popArray(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n pushObject(name: string): bool {\n const obj: Value = Value.Object();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popObject(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n addValue(name: string, obj: Value): void {\n if (name.length == 0 && obj instanceof Obj && this.stack.length == 0) {\n this.stack.push(obj);\n return;\n }\n if (this.peek instanceof Obj) {\n (this.peek as Obj).set(name, obj);\n }\n else if (this.peek instanceof Arr) {\n (this.peek).push(obj);\n }\n }\n}\n\n@global()\nclass JSON {\n private static handler: Handler = new Handler();\n private static decoder: JSONDecoder = new JSONDecoder(JSON.handler);\n static parse(str: Uint8Array ): Obj {\n JSON.decoder.deserialize(str);\n const res = JSON.decoder.handler.peek as Obj;\n JSON.decoder.handler.reset();\n return res;\n }\n}\n\n//@ts-ignore\n@global\nfunction encode(value: T, name: string | null = "", encoder: JSONEncoder = new JSONEncoder()): Output {\n if (isBoolean()) {\n //@ts-ignore\n encoder.setBoolean(name, value);\n } else if (isInteger()) {\n if (value instanceof i64 || value instanceof u64) {\n //@ts-ignore\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n encoder.setInteger(name, value);\n }\n //@ts-ignore\n } else if (value == null) {\n encoder.setNull(name);\n } else if (isString()) {\n //@ts-ignore\n encoder.setString(name, value);\n } else if (isReference()) {\n if (isArrayLike(value)) {\n if (value instanceof Uint8Array) {\n //@ts-ignore\n encoder.setString(name, base64.encode( value));\n } else {\n encoder.pushArray(name);\n for (let i: i32 = 0; i < value.length; i++) {\n //@ts-ignore\n encode, JSONEncoder>(value[i], null, encoder);\n }\n encoder.popArray();\n }\n } else { // Is an object\n if (value instanceof u128) {\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n value._encode(name, encoder);\n }\n }\n } else {\n throw new Error("Encoding failed");\n }\n var output: Output;\n //@ts-ignore\n if (output instanceof Uint8Array) {\n //@ts-ignore\n return encoder.serialize();\n }\n //@ts-ignore\n assert( output instanceof JSONEncoder, "Bad return type for encoder");\n //@ts-ignore\n return encoder;\n}\n\n//@ts-ignore\n@inline\nfunction getStr(val: Value, name: String): string {\n assert(val instanceof Str, "Value with Key: " + name + " is not a string or null");\n return (val)._str;\n}\n\nfunction decodeArray(val: Value, name: string): Array {\n assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null.");\n const res = new Array();\n const arr = (val)._arr;\n for (let i: i32 = 0; i < arr.length; i++) {\n let item: T = decode(arr[i]);\n res.push(item);\n }\n return res;\n}\n\n//@ts-ignore\n@global\nfunction decode(buf: V, name: string = ""): T {\n const buffer = (buf instanceof Uint8Array ? JSON.parse(buf) : buf);\n var val: Value;\n if (buffer instanceof Obj && name != "") {\n const obj: Obj = buffer;\n let res = obj.get(name);\n if (res == null) {\n //@ts-ignore\n return null;\n }\n val = res;\n }else {\n val = buffer;\n }\n if (val instanceof Null) {\n assert(isReference() || isArrayLike() || isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable.");\n //@ts-ignore\n return null;\n }\n if (isString()) {\n //@ts-ignore\n return getStr(val, name);\n }\n if (isBoolean()) {\n assert(val instanceof Bools, "Value with Key: " + name + " with type " + nameof() + " is not a string");\n //@ts-ignore\n return (val)._bool;\n }\n var value: T;\n if (isInteger()) {\n //@ts-ignore\n if (value instanceof u64 || value instanceof i64) {\n assert(val instanceof Str, "Value with Key: " + name + " with type " + nameof() + " is an 64-bit integer and is expected to be encoded as a string");\n let str = (val)._str;\n //@ts-ignore\n return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str);\n }\n assert(val instanceof Num, "Value with Key: " + name + " with type " + nameof() + " is not an Integer");\n //@ts-ignore\n return (val)._num;\n }\n assert(isReference(), name + " with type " + nameof() + " must be an integer, boolean, string, object, or array");\n if (isArrayLike()) {\n //@ts-ignore\n if (value instanceof Uint8Array ) {\n //@ts-ignore\n return base64.decode(getStr(val, name));\n }\n //@ts-ignore\n // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array")\n //@ts-ignore only checking the instance\n return decodeArray>(val, name);\n }\n if (val instanceof Str) {\n //@ts-ignore\n if (value instanceof u128) {\n //@ts-ignore\n return u128.fromString(getStr(val, name));\n }\n }\n assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null");\n value = instantiate();\n //@ts-ignore\n return value.decode(val);\n}\n',array:'/// \n\nimport { BLOCK_MAXSIZE } from "./rt/common";\nimport { COMPARATOR, SORT } from "./util/sort";\nimport { ArrayBuffer, ArrayBufferView } from "./arraybuffer";\nimport { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";\nimport { idof, isArray as builtin_isArray } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error";\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureSize(array: usize, minSize: usize, alignLog2: u32): void {\n var oldCapacity = changetype(array).dataLength;\n if (minSize > oldCapacity >>> alignLog2) {\n if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).data);\n let newCapacity = minSize << alignLog2;\n let newData = __realloc(oldData, newCapacity);\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n if (newData !== oldData) { // oldData has been free\'d\n store(changetype(array), __retain(newData), offsetof("data"));\n changetype(array).dataStart = newData;\n }\n changetype(array).dataLength = newCapacity;\n }\n}\n\nexport class Array extends ArrayBufferView {\n [key: number]: T;\n\n // Implementing ArrayBufferView isn\'t strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).\n\n // Also note that Array with non-nullable T must guard against implicit null values whenever\n // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn\'t be\n // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return builtin_isArray(value) && value !== null;\n }\n\n static create(capacity: i32 = 0): Array {\n if (capacity > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n var array = changetype>(__allocArray(capacity, alignof(), idof())); // retains\n changetype>(array).length_ = 0; // safe even if T is a non-nullable reference\n memory.fill(array.dataStart, 0, array.dataLength);\n return array;\n }\n\n constructor(length: i32 = 0) {\n super(length, alignof());\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n this.length_ = length;\n }\n\n @unsafe get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n var oldLength = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (newLength > oldLength) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) { // release no longer used refs\n if (oldLength > newLength) {\n let dataStart = this.dataStart;\n do __release(load(dataStart + (--oldLength << alignof())));\n while (oldLength > newLength);\n // no need to zero memory on shrink -> is zeroed on grow\n }\n }\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (!fn(load(this.dataStart + (index << alignof())), index, this)) return false;\n }\n return true;\n }\n\n findIndex(predicate: (value: T, index: i32, array: Array) => bool): i32 {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (predicate(load(this.dataStart + (index << alignof())), index, this)) return index;\n }\n return -1;\n }\n\n @operator("[]") private __get(index: i32): T {\n if (isReference()) {\n if (!isNullable()) {\n if (index >= this.length_) throw new Error(E_HOLEYARRAY);\n }\n }\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n var length = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (index > length) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), index + 1, alignof());\n this.__unchecked_set(index, value);\n if (index >= length) this.length_ = index + 1;\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = this.dataStart + (index << alignof());\n let oldRef: usize = load(offset);\n if (changetype(value) != oldRef) {\n store(offset, __retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n store(this.dataStart + (index << alignof()), value);\n }\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (isManaged()) {\n for (; start < end; ++start) {\n let oldRef: usize = load(dataStart + (start << alignof()));\n if (changetype(value) != oldRef) {\n store(dataStart + (start << alignof()), __retain(changetype(value)));\n __release(oldRef);\n }\n }\n } else if (sizeof() == 1) {\n if (start < end) {\n memory.fill(\n dataStart + start,\n u8(value),\n (end - start)\n );\n }\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n return this.indexOf(value, fromIndex) >= 0;\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var length = this.length_;\n if (length == 0 || fromIndex >= length) return -1;\n if (fromIndex < 0) fromIndex = max(length + fromIndex, 0);\n var dataStart = this.dataStart;\n while (fromIndex < length) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var length = this.length_;\n if (length == 0) return -1;\n if (fromIndex < 0) fromIndex = length + fromIndex;\n else if (fromIndex >= length) fromIndex = length - 1;\n var dataStart = this.dataStart;\n while (fromIndex >= 0) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var length = this.length_;\n var newLength = length + 1;\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) {\n store(this.dataStart + (length << alignof()), __retain(changetype(value)));\n } else {\n store(this.dataStart + (length << alignof()), value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = select(0, other.length_, other === null);\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, __retain(ref));\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, __retain(ref));\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n if (isManaged()) {\n if (from < to && to < (from + count)) { // right to left\n from += count - 1;\n to += count - 1;\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n --from, --to, --count;\n }\n } else { // left to right\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n ++from, ++to, --count;\n }\n }\n } else {\n memory.copy( // is memmove\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n }\n return this;\n }\n\n pop(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var element = load(this.dataStart + ((--length) << alignof()));\n this.length_ = length;\n return element; // no need to retain -> is moved\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n fn(load(this.dataStart + (index << alignof())), index, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var length = this.length_;\n var out = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n for (let index = 0; index < min(length, this.length_); ++index) {\n let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains\n if (isManaged()) {\n store(outStart + (index << alignof()), __retain(changetype(result)));\n } else {\n store(outStart + (index << alignof()), result);\n }\n // releases result\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n let value = load(this.dataStart + (index << alignof()));\n if (fn(value, index, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = this.length_ - 1; index >= 0; --index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n shift(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = length - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n store(base + (lastIndex << alignof()),\n // @ts-ignore: cast\n null\n );\n this.length_ = lastIndex;\n return element; // no need to retain -> is moved\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (fn(load(this.dataStart + (index << alignof())), index, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var newLength = this.length_ + 1;\n ensureSize(changetype(this), newLength, alignof());\n var dataStart = this.dataStart;\n memory.copy(\n dataStart + sizeof(),\n dataStart,\n (newLength - 1) << alignof()\n );\n if (isManaged()) {\n store(dataStart, __retain(changetype(value)));\n } else {\n store(dataStart, value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(start + length, 0) : min(start, length);\n end = end < 0 ? max(end + length, 0) : min(end , length);\n length = max(end - start, 0);\n var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = length << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, __retain(ref));\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, length << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n deleteCount = max(min(deleteCount, length - start), 0);\n var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n if (isManaged()) {\n for (let i = 0; i < deleteCount; ++i) {\n store(resultStart + (i << alignof()),\n load(thisBase + (i << alignof()))\n );\n // no need to retain -> is moved\n }\n } else {\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n }\n var offset = start + deleteCount;\n if (length != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (length - offset) << alignof()\n );\n }\n this.length_ = length - deleteCount;\n return result;\n }\n\n reverse(): Array {\n var length = this.length_;\n if (length) {\n let front = this.dataStart;\n let back = this.dataStart + ((length - 1) << alignof());\n while (front < back) {\n let temp = load(front);\n store(front, load(back));\n store(back, temp);\n front += sizeof();\n back -= sizeof();\n }\n }\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this {\n var length = this.length_;\n if (length <= 1) return this;\n var base = this.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b;\n store(base, a); // arr[0] = a;\n }\n return this;\n }\n SORT(base, length, comparator);\n return this;\n }\n\n join(separator: string = ","): string {\n if (isBoolean()) return this.join_bool(separator);\n if (isInteger()) return this.join_int(separator);\n if (isFloat()) return this.join_flt(separator);\n if (isString()) return this.join_str(separator);\n if (isArray()) return this.join_arr(separator);\n if (isReference()) return this.join_ref(separator);\n ERROR("unspported element type");\n return unreachable();\n }\n\n private join_bool(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return select("true", "false", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len("false")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_int(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n // @ts-ignore: type\n if (!lastIndex) return changetype(itoa(load(dataStart))); // retains\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_flt(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n ); // retains\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_str(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return load(dataStart);\n\n var sepLen = separator.length;\n var estLen = 0;\n var value: string | null;\n for (let i = 0, len = lastIndex + 1; i < len; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) estLen += value.length;\n }\n var offset = 0;\n var result = changetype(__alloc((estLen + sepLen * lastIndex) << 1, idof())); // retains\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) {\n let valueLen = changetype(value).length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (value !== null) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n changetype(value).length << 1\n );\n }\n return result;\n }\n\n private join_arr(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n\n var result = "";\n var sepLen = separator.length;\n var base = this.dataStart;\n var value: T;\n if (!lastIndex) {\n value = load(base);\n // @ts-ignore: type\n return value ? value.join(separator) : "";\n }\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n if (sepLen) result += separator;\n }\n value = load(base + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n return result; // registered by concatenation (FIXME: lots of garbage)\n }\n\n private join_ref(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var base = this.dataStart;\n if (!lastIndex) return "[object Object]";\n\n const valueLen = 15; // max possible length of element len("[object Object]")\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n if (value) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n if (load(base + (lastIndex << alignof()))) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n // automatically visits ArrayBufferView (.data) next\n }\n}\n',arraybuffer:'/// \n\nimport { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INVALIDLENGTH } from "./util/error";\n\nexport abstract class ArrayBufferView {\n\n @unsafe data: ArrayBuffer;\n @unsafe dataStart: usize;\n @unsafe dataLength: u32;\n\n protected constructor(length: i32, alignLog2: i32) {\n if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length = length << alignLog2, idof());\n memory.fill(buffer, 0, length);\n this.data = changetype(buffer); // retains\n this.dataStart = buffer;\n this.dataLength = length;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n get length(): i32 {\n ERROR("missing implementation: subclasses must implement ArrayBufferView#length");\n return unreachable();\n }\n}\n\n@sealed export class ArrayBuffer {\n\n static isView(value: T): bool {\n if (value) {\n if (value instanceof Int8Array) return true;\n if (value instanceof Uint8Array) return true;\n if (value instanceof Uint8ClampedArray) return true;\n if (value instanceof Int16Array) return true;\n if (value instanceof Uint16Array) return true;\n if (value instanceof Int32Array) return true;\n if (value instanceof Uint32Array) return true;\n if (value instanceof Int64Array) return true;\n if (value instanceof Uint64Array) return true;\n if (value instanceof Float32Array) return true;\n if (value instanceof Float64Array) return true;\n if (value instanceof DataView) return true;\n }\n return false;\n }\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length, idof());\n memory.fill(buffer, 0, length);\n return changetype(buffer); // retains\n }\n\n get byteLength(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n }\n\n slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer {\n var length = this.byteLength;\n begin = begin < 0 ? max(length + begin, 0) : min(begin, length);\n end = end < 0 ? max(length + end , 0) : min(end , length);\n var outSize = max(end - begin, 0);\n var out = __alloc(outSize, idof());\n memory.copy(out, changetype(this) + begin, outSize);\n return changetype(out); // retains\n }\n\n toString(): string {\n return "[object ArrayBuffer]";\n }\n}\n',"bindings/Date":"export declare function UTC(\n // NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for\n // converting the value to the WASM/JS boundary.\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: f64\n): f64;\nexport declare function now(): f64;\n","bindings/Math":"export declare const E: f64;\nexport declare const LN2: f64;\nexport declare const LN10: f64;\nexport declare const LOG2E: f64;\nexport declare const LOG10E: f64;\nexport declare const PI: f64;\nexport declare const SQRT1_2: f64;\nexport declare const SQRT2: f64;\n\nexport declare function abs(x: f64): f64;\nexport declare function acos(x: f64): f64;\nexport declare function acosh(x: f64): f64;\nexport declare function asin(x: f64): f64;\nexport declare function asinh(x: f64): f64;\nexport declare function atan(x: f64): f64;\nexport declare function atan2(y: f64, x: f64): f64;\nexport declare function atanh(x: f64): f64;\nexport declare function cbrt(x: f64): f64;\nexport declare function ceil(x: f64): f64;\nexport declare function clz32(x: f64): f64;\nexport declare function cos(x: f64): f64;\nexport declare function cosh(x: f64): f64;\nexport declare function exp(x: f64): f64;\nexport declare function expm1(x: f64): f64;\nexport declare function floor(x: f64): f64;\nexport declare function fround(x: f64): f32;\nexport declare function hypot(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function imul(a: f64, b: f64): f64;\nexport declare function log(x: f64): f64;\nexport declare function log10(x: f64): f64;\nexport declare function log1p(x: f64): f64;\nexport declare function log2(x: f64): f64;\nexport declare function max(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function min(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function pow(base: f64, exponent: f64): f64;\nexport declare function random(): f64;\nexport declare function round(x: f64): f64;\nexport declare function sign(x: f64): f64;\nexport declare function sin(x: f64): f64;\nexport declare function sinh(x: f64): f64;\nexport declare function sqrt(x: f64): f64;\nexport declare function tan(x: f64): f64;\nexport declare function tanh(x: f64): f64;\nexport declare function trunc(x: f64): f64;\n","bindings/wasi_unstable":"// see: https://wasi.dev\n\n/* tslint:disable:max-line-length */\n\n// helper types to be more explicit\ntype char = u8;\ntype ptr = usize; // all pointers are usize'd\ntype struct = T; // structs are references already in AS\n\n/** Read command-line argument data. */\nexport declare function args_get(\n /** Input: Pointer to a buffer to write the argument pointers. */\n argv: ptr>,\n /** Input: Pointer to a buffer to write the argument string data. */\n argv_buf: ptr\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function args_sizes_get(\n /** Output: Number of arguments. */\n argc: ptr,\n /** Output: Size of the argument string data. */\n argv_buf_size: ptr\n): errno;\n\n/** Return the resolution of a clock. */\nexport declare function clock_res_get(\n /** Input: The clock for which to return the resolution. */\n clock: clockid,\n /** Output: The resolution of the clock. */\n resolution: ptr\n): errno;\n\n/** Return the time value of a clock. */\nexport declare function clock_time_get(\n /** Input: Cock for which to return the time. */\n clock: clockid,\n /** Input: Maximum lag (exclusive) that the returned time value may have, compared to its actual value. */\n precision: timestamp,\n /** Output: Time value of the clock. */\n time: ptr\n): errno;\n\n/** Read environment variable data. */\nexport declare function environ_get(\n /** Input: Pointer to a buffer to write the environment variable pointers. */\n environ: ptr,\n /** Input: Pointer to a buffer to write the environment variable string data. */\n environ_buf: usize\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function environ_sizes_get(\n /** Output: The number of environment variables. */\n environ_count: ptr,\n /** Output: The size of the environment variable string data. */\n environ_buf_size: ptr\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_advise(\n /** Input: The file descriptor for the file for which to provide file advisory information. */\n fd: fd,\n /** Input: The offset within the file to which the advisory applies. */\n offset: filesize,\n /** Input: The length of the region to which the advisory applies. */\n len: filesize,\n /** Input: The advice. */\n advice: advice\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_allocate(\n /** Input: The file descriptor for the file in which to allocate space. */\n fd: fd,\n /** Input: The offset at which to start the allocation. */\n offset: filesize,\n /** Input: The length of the area that is allocated. */\n len: filesize\n): errno;\n\n/** Close a file descriptor. */\nexport declare function fd_close(\n /** Input: The file descriptor to close. */\n fd: fd\n): errno;\n\n/** Synchronize the data of a file to disk. */\nexport declare function fd_datasync(\n /** Input: The file descriptor of the file to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Get the attributes of a file descriptor. */\nexport declare function fd_fdstat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file descriptor's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the flags associated with a file descriptor. */\nexport declare function fd_fdstat_set_flags(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the file descriptor flags. */\n flags: fdflags\n): errno;\n\n/** Adjust the rights associated with a file descriptor. */\nexport declare function fd_fdstat_set_rights(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_base: rights,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_inheriting: rights\n): errno;\n\n/** Return the attributes of an open file. */\nexport declare function fd_filestat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */\nexport declare function fd_filestat_set_size(\n /** Input: A file descriptor for the file to adjust. */\n fd: fd,\n /** Input: The desired file size. */\n size: filesize\n): errno;\n\n/** Adjust the timestamps of an open file or directory. */\nexport declare function fd_filestat_set_times(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Read from a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pread(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors in which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors in which to store data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to read. */\n offset: filesize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_get(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: The buffer where the description is stored. */\n buf: struct\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_dir_name(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: Buffer into which to write the preopened directory name. */\n path: ptr,\n /** Input: Length of the buffer into which to write the preopened directory name. */\n path_len: usize\n): errno;\n\n/** Write to a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pwrite(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to write. */\n offset: filesize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/** Read from a file descriptor. */\nexport declare function fd_read(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors to which to store data. */\n iovs_len: usize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Read directory entries from a directory. */\nexport declare function fd_readdir(\n /** Input: Directory from which to read the directory entries. */\n fd: fd,\n /** Input: Buffer where directory entries are stored. */\n buf: ptr>,\n /** Input: Length of the buffer where directory entries are stored. */\n buf_len: usize,\n /** Input: Location within the directory to start reading. */\n cookie: dircookie,\n /** Output: Number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. */\n buf_used: ptr\n): errno;\n\n/** Atomically replace a file descriptor by renumbering another file descriptor. */\nexport declare function fd_renumber(\n /** Input: The file descriptor to renumber. */\n from: fd,\n /** Input: The file descriptor to overwrite. */\n to: fd\n): errno;\n\n/** Move the offset of a file descriptor. */\nexport declare function fd_seek(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The number of bytes to move. */\n offset: filedelta,\n /** Input: The base from which the offset is relative. */\n whence: whence,\n /** Output: The new offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Synchronize the data and metadata of a file to disk. */\nexport declare function fd_sync(\n /** Input: The file descriptor of the file containing the data and metadata to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Return the current offset of a file descriptor. */\nexport declare function fd_tell(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Output: The current offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Write to a file descriptor. */\nexport declare function fd_write(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/* Create a directory. */\nexport declare function path_create_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path at which to create the directory. */\n path: ptr,\n /** Input: The path at which to create the directory. */\n path_len: usize\n): errno;\n\n/** Return the attributes of a file or directory. */\nexport declare function path_filestat_get(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to inspect. */\n path: ptr,\n /** Input: The path of the file or directory to inspect. */\n path_len: usize,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the timestamps of a file or directory. */\nexport declare function path_filestat_set_times(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to operate on. */\n path: ptr,\n /** Input: The path of the file or directory to operate on. */\n path_len: usize,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Create a hard link. */\nexport declare function path_link(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n old_flags: lookupflags,\n /** Input: The source path from which to link. */\n old_path: ptr,\n /** Input: The source path from which to link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path at which to create the hard link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the hard link. */\n new_path_len: usize\n): errno;\n\n/** Open a file or directory. */\nexport declare function path_open(\n /** Input: The working directory at which the resolution of the path starts. */\n dirfd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n dirflags: lookupflags,\n /** Input: The path of the file or directory to open. */\n path: ptr,\n /** Input: The length of the path of the file or directory to open. */\n path_len: usize,\n /** Input: The method by which to open the file. */\n oflags: oflags,\n /** Input: The initial base rights that apply to operations using the file descriptor itself. */\n fs_rights_base: rights,\n /** Input: The initial inheriting rights that apply to file descriptors derived from it. */\n fs_rights_inheriting: rights,\n /** Input: The initial flags of the file descriptor. */\n fs_flags: fdflags,\n /** Output: The file descriptor of the file that has been opened. */\n fd: ptr\n): errno;\n\n/** Read the contents of a symbolic link. */\nexport declare function path_readlink(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path of the symbolic link from which to read. */\n path: ptr,\n /** Input: The length of the path of the symbolic link from which to read. */\n path_len: usize,\n /** Input: The buffer to which to write the contents of the symbolic link. */\n buf: ptr,\n /** Input: The length of the buffer to which to write the contents of the symbolic link. */\n buf_len: usize,\n /** Output: The number of bytes placed in the buffer. */\n buf_used: ptr\n): errno;\n\n/** Remove a directory. */\nexport declare function path_remove_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a directory to remove. */\n path: ptr,\n /** Input: The length of the path to a directory to remove. */\n path_len: usize\n): errno;\n\n/** Rename a file or directory. */\nexport declare function path_rename(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: The source path of the file or directory to rename. */\n old_path: ptr,\n /** Input: The length of the source path of the file or directory to rename. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path to which to rename the file or directory. */\n new_path: ptr,\n /** Input: The length of the destination path to which to rename the file or directory. */\n new_path_len: usize\n): errno;\n\n/** Create a symbolic link. */\nexport declare function path_symlink(\n /** Input: The contents of the symbolic link. */\n old_path: ptr,\n /** Input: The length of the contents of the symbolic link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The destination path at which to create the symbolic link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the symbolic link. */\n new_path_len: usize\n): errno;\n\n/** Unlink a file. */\nexport declare function path_unlink_file(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a file to unlink. */\n path: ptr,\n /** Input: The length of the path to a file to unlink. */\n path_len: usize\n): errno;\n\n/** Concurrently poll for the occurrence of a set of events. */\nexport declare function poll_oneoff(\n /** Input: The events to which to subscribe. */\n in_: ptr>,\n /** Input: The events that have occurred. */\n out: ptr>,\n /** Input: Both the number of subscriptions and events. */\n nsubscriptions: usize,\n /** Output: The number of events stored. */\n nevents: ptr\n): errno;\n\n/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */\nexport declare function proc_exit(\n /** Input: The exit code returned by the process. */\n rval: u32\n): void;\n\n/** Send a signal to the process of the calling thread. */\nexport declare function proc_raise(\n /** Input: The signal condition to trigger. */\n sig: signal\n): errno;\n\n/** Write high-quality random data into a buffer. */\nexport declare function random_get(\n /** Input: The buffer to fill with random data. */\n buf: usize,\n /** Input: The length of the buffer to fill with random data. */\n buf_len: usize\n): errno;\n\n/** Temporarily yield execution of the calling thread. */\nexport declare function sched_yield(): errno;\n\n/** Receive a message from a socket. */\nexport declare function sock_recv(\n /** Input: The socket on which to receive data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n ri_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to store data. */\n ri_data_len: usize,\n /** Input: Message flags. */\n ri_flags: riflags,\n /** Output: Number of bytes stored in `ri_data`. */\n ro_datalen: ptr,\n /** Output: Message flags. */\n ro_flags: ptr\n): errno;\n\n/** Send a message on a socket. */\nexport declare function sock_send(\n /** Input: The socket on which to send data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to retrieve data */\n si_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to retrieve data */\n si_data_len: usize,\n /** Input: Message flags. */\n si_flags: siflags,\n /** Output: Number of bytes transmitted. */\n so_datalen: ptr\n): errno;\n\n/** Shut down socket send and receive channels. */\nexport declare function sock_shutdown(\n /** Input: The socket on which to shutdown channels. */\n sock: fd,\n /** Input: Which channels on the socket to shut down. */\n how: sdflags\n): errno;\n\n// === Types ======================================================================================\n\n/** File or memory access pattern advisory information. */\nexport namespace advice {\n /** The application has no advice to give on its behavior with respect to the specified data. */\n // @ts-ignore: decorator\n @inline\n export const NORMAL: advice = 0;\n /** The application expects to access the specified data sequentially from lower offsets to higher offsets. */\n // @ts-ignore: decorator\n @inline\n export const SEQUENTIAL : advice = 1;\n /** The application expects to access the specified data in a random order. */\n // @ts-ignore: decorator\n @inline\n export const RANDOM: advice = 2;\n /** The application expects to access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const WILLNEED: advice = 3;\n /** The application expects that it will not access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const DONTNEED: advice = 4;\n /** The application expects to access the specified data once and then not reuse it thereafter. */\n // @ts-ignore: decorator\n @inline\n export const NOREUSE: advice = 5;\n}\nexport type advice = u8;\n\n/** Identifiers for clocks. */\nexport namespace clockid {\n /** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */\n // @ts-ignore: decorator\n @inline\n export const REALTIME: clockid = 0;\n /** The store-wide monotonic clock. Absolute value has no meaning. */\n // @ts-ignore: decorator\n @inline\n export const MONOTONIC: clockid = 1;\n /** The CPU-time clock associated with the current process. */\n // @ts-ignore: decorator\n @inline\n export const PROCESS_CPUTIME_ID: clockid = 2;\n /** The CPU-time clock associated with the current thread. */\n // @ts-ignore: decorator\n @inline\n export const THREAD_CPUTIME_ID: clockid = 3;\n}\nexport type clockid = u32;\n\n/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */\nexport type device = u64;\n\n/** A reference to the offset of a directory entry. */\nexport type dircookie = u64;\n\n/** A directory entry. */\n@unmanaged export class dirent {\n /** The offset of the next directory entry stored in this directory. */\n next: dircookie;\n /** The serial number of the file referred to by this directory entry. */\n ino: inode;\n /** The length of the name of the directory entry. */\n namlen: u32;\n /** The type of the file referred to by this directory entry. */\n type: filetype;\n private __padding0: u16;\n}\n\n/** Error codes returned by functions. */\nexport namespace errno {\n /** No error occurred. System call completed successfully. */\n // @ts-ignore: decorator\n @inline\n export const SUCCESS: errno = 0;\n /** Argument list too long. */\n // @ts-ignore: decorator\n @inline\n export const TOOBIG: errno = 1;\n /** Permission denied. */\n // @ts-ignore: decorator\n @inline\n export const ACCES: errno = 2;\n /** Address in use. */\n // @ts-ignore: decorator\n @inline\n export const ADDRINUSE: errno = 3;\n /** Address not available. */\n // @ts-ignore: decorator\n @inline\n export const ADDRNOTAVAIL: errno = 4;\n /** Address family not supported. */\n // @ts-ignore: decorator\n @inline\n export const AFNOSUPPORT: errno = 5;\n /** Resource unavailable, or operation would block. */\n // @ts-ignore: decorator\n @inline\n export const AGAIN: errno = 6;\n /** Connection already in progress. */\n // @ts-ignore: decorator\n @inline\n export const ALREADY: errno = 7;\n /** Bad file descriptor. */\n // @ts-ignore: decorator\n @inline\n export const BADF: errno = 8;\n /** Bad message. */\n // @ts-ignore: decorator\n @inline\n export const BADMSG: errno = 9;\n /** Device or resource busy. */\n // @ts-ignore: decorator\n @inline\n export const BUSY: errno = 10;\n /** Operation canceled. */\n // @ts-ignore: decorator\n @inline\n export const CANCELED: errno = 11;\n /** No child processes. */\n // @ts-ignore: decorator\n @inline\n export const CHILD: errno = 12;\n /** Connection aborted. */\n // @ts-ignore: decorator\n @inline\n export const CONNABORTED: errno = 13;\n /** Connection refused. */\n // @ts-ignore: decorator\n @inline\n export const CONNREFUSED: errno = 14;\n /** Connection reset. */\n // @ts-ignore: decorator\n @inline\n export const CONNRESET: errno = 15;\n /** Resource deadlock would occur. */\n // @ts-ignore: decorator\n @inline\n export const DEADLK: errno = 16;\n /** Destination address required. */\n // @ts-ignore: decorator\n @inline\n export const DESTADDRREQ: errno = 17;\n /** Mathematics argument out of domain of function. */\n // @ts-ignore: decorator\n @inline\n export const DOM: errno = 18;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const DQUOT: errno = 19;\n /** File exists. */\n // @ts-ignore: decorator\n @inline\n export const EXIST: errno = 20;\n /** Bad address. */\n // @ts-ignore: decorator\n @inline\n export const FAULT: errno = 21;\n /** File too large. */\n // @ts-ignore: decorator\n @inline\n export const FBIG: errno = 22;\n /** Host is unreachable. */\n // @ts-ignore: decorator\n @inline\n export const HOSTUNREACH: errno = 23;\n /** Identifier removed. */\n // @ts-ignore: decorator\n @inline\n export const IDRM: errno = 24;\n /** Illegal byte sequence. */\n // @ts-ignore: decorator\n @inline\n export const ILSEQ: errno = 25;\n /** Operation in progress. */\n // @ts-ignore: decorator\n @inline\n export const INPROGRESS: errno = 26;\n /** Interrupted function. */\n // @ts-ignore: decorator\n @inline\n export const INTR: errno = 27;\n /** Invalid argument. */\n // @ts-ignore: decorator\n @inline\n export const INVAL: errno = 28;\n /** I/O error. */\n // @ts-ignore: decorator\n @inline\n export const IO: errno = 29;\n /** Socket is connected. */\n // @ts-ignore: decorator\n @inline\n export const ISCONN: errno = 30;\n /** Is a directory. */\n // @ts-ignore: decorator\n @inline\n export const ISDIR: errno = 31;\n /** Too many levels of symbolic links. */\n // @ts-ignore: decorator\n @inline\n export const LOOP: errno = 32;\n /** File descriptor value too large. */\n // @ts-ignore: decorator\n @inline\n export const MFILE: errno = 33;\n /** Too many links. */\n // @ts-ignore: decorator\n @inline\n export const MLINK: errno = 34;\n /** Message too large. */\n // @ts-ignore: decorator\n @inline\n export const MSGSIZE: errno = 35;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const MULTIHOP: errno = 36;\n /** Filename too long. */\n // @ts-ignore: decorator\n @inline\n export const NAMETOOLONG: errno = 37;\n /** Network is down. */\n // @ts-ignore: decorator\n @inline\n export const NETDOWN: errno = 38;\n /** Connection aborted by network. */\n // @ts-ignore: decorator\n @inline\n export const NETRESET: errno = 39;\n /** Network unreachable. */\n // @ts-ignore: decorator\n @inline\n export const NETUNREACH: errno = 40;\n /** Too many files open in system. */\n // @ts-ignore: decorator\n @inline\n export const NFILE: errno = 41;\n /** No buffer space available. */\n // @ts-ignore: decorator\n @inline\n export const NOBUFS: errno = 42;\n /** No such device. */\n // @ts-ignore: decorator\n @inline\n export const NODEV: errno = 43;\n /** No such file or directory. */\n // @ts-ignore: decorator\n @inline\n export const NOENT: errno = 44;\n /** Executable file format error. */\n // @ts-ignore: decorator\n @inline\n export const NOEXEC: errno = 45;\n /** No locks available. */\n // @ts-ignore: decorator\n @inline\n export const NOLCK: errno = 46;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const NOLINK: errno = 47;\n /** Not enough space. */\n // @ts-ignore: decorator\n @inline\n export const NOMEM: errno = 48;\n /** No message of the desired type. */\n // @ts-ignore: decorator\n @inline\n export const NOMSG: errno = 49;\n /** Protocol not available. */\n // @ts-ignore: decorator\n @inline\n export const NOPROTOOPT: errno = 50;\n /** No space left on device. */\n // @ts-ignore: decorator\n @inline\n export const NOSPC: errno = 51;\n /** Function not supported. */\n // @ts-ignore: decorator\n @inline\n export const NOSYS: errno = 52;\n /** The socket is not connected. */\n // @ts-ignore: decorator\n @inline\n export const NOTCONN: errno = 53;\n /** Not a directory or a symbolic link to a directory. */\n // @ts-ignore: decorator\n @inline\n export const NOTDIR: errno = 54;\n /** Directory not empty. */\n // @ts-ignore: decorator\n @inline\n export const NOTEMPTY: errno = 55;\n /** State not recoverable. */\n // @ts-ignore: decorator\n @inline\n export const NOTRECOVERABLE: errno = 56;\n /** Not a socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSOCK: errno = 57;\n /** Not supported, or operation not supported on socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSUP: errno = 58;\n /** Inappropriate I/O control operation. */\n // @ts-ignore: decorator\n @inline\n export const NOTTY: errno = 59;\n /** No such device or address. */\n // @ts-ignore: decorator\n @inline\n export const NXIO: errno = 60;\n /** Value too large to be stored in data type. */\n // @ts-ignore: decorator\n @inline\n export const OVERFLOW: errno = 61;\n /** Previous owner died. */\n // @ts-ignore: decorator\n @inline\n export const OWNERDEAD: errno = 62;\n /** Operation not permitted. */\n // @ts-ignore: decorator\n @inline\n export const PERM: errno = 63;\n /** Broken pipe. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: errno = 64;\n /** Protocol error. */\n // @ts-ignore: decorator\n @inline\n export const PROTO: errno = 65;\n /** Protocol not supported. */\n // @ts-ignore: decorator\n @inline\n export const PROTONOSUPPORT: errno = 66;\n /** Protocol wrong type for socket. */\n // @ts-ignore: decorator\n @inline\n export const PROTOTYPE: errno = 67;\n /** Result too large. */\n // @ts-ignore: decorator\n @inline\n export const RANGE: errno = 68;\n /** Read-only file system. */\n // @ts-ignore: decorator\n @inline\n export const ROFS: errno = 69;\n /** Invalid seek. */\n // @ts-ignore: decorator\n @inline\n export const SPIPE: errno = 70;\n /** No such process. */\n // @ts-ignore: decorator\n @inline\n export const SRCH: errno = 71;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const STALE: errno = 72;\n /** Connection timed out. */\n // @ts-ignore: decorator\n @inline\n export const TIMEDOUT: errno = 73;\n /** Text file busy. */\n // @ts-ignore: decorator\n @inline\n export const TXTBSY: errno = 74;\n /** Cross-device link. */\n // @ts-ignore: decorator\n @inline\n export const XDEV: errno = 75;\n /** Extension: Capabilities insufficient. */\n // @ts-ignore: decorator\n @inline\n export const NOTCAPABLE: errno = 76;\n}\nexport type errno = u16;\n\n/** An event that occurred. */\n@unmanaged export abstract class event {\n /** User-provided value that got attached to `subscription#userdata`. */\n userdata: userdata;\n /** If non-zero, an error that occurred while processing the subscription request. */\n error: errno;\n /* The type of the event that occurred. */\n type: eventtype;\n private __padding0: u16;\n}\n\n/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\n@unmanaged export class rwevent extends event {\n /* The number of bytes available for reading or writing. */\n nbytes: filesize;\n /* The state of the file descriptor. */\n flags: eventrwflags;\n private __padding1: u32;\n}\n\n/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\nexport namespace eventrwflags {\n /** The peer of this socket has closed or disconnected. */\n // @ts-ignore: decorator\n @inline\n export const HANGUP: eventrwflags = 1;\n}\nexport type eventrwflags = u16;\n\n/** Type of a subscription to an event or its occurrence. */\nexport namespace eventtype {\n /** The time value of clock has reached the timestamp. */\n // @ts-ignore: decorator\n @inline\n export const CLOCK: eventtype = 0;\n /** File descriptor has data available for reading. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: eventtype = 1;\n /** File descriptor has capacity available for writing */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: eventtype = 2;\n}\nexport type eventtype = u8;\n\n/** Exit code generated by a process when exiting. */\nexport type exitcode = u32;\n\n/** A file descriptor number. */\nexport type fd = u32;\n\n/** File descriptor flags. */\nexport namespace fdflags {\n /** Append mode: Data written to the file is always appended to the file's end. */\n // @ts-ignore: decorator\n @inline\n export const APPEND: fdflags = 1;\n /** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */\n // @ts-ignore: decorator\n @inline\n export const DSYNC: fdflags = 2;\n /** Non-blocking mode. */\n // @ts-ignore: decorator\n @inline\n export const NONBLOCK: fdflags = 4;\n /** Synchronized read I/O operations. */\n // @ts-ignore: decorator\n @inline\n export const RSYNC: fdflags = 8;\n /** Write according to synchronized I/O file integrity completion. */\n // @ts-ignore: decorator\n @inline\n export const SYNC: fdflags = 16;\n}\nexport type fdflags = u16;\n\n/** File descriptor attributes. */\n@unmanaged export class fdstat {\n /** File type. */\n filetype: filetype;\n /** File descriptor flags. */\n flags: fdflags;\n /** Rights that apply to this file descriptor. */\n rights_base: rights;\n /** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */\n rights_inheriting: rights;\n}\n\n/** Relative offset within a file. */\nexport type filedelta = i64;\n\n/** Non-negative file size or length of a region within a file. */\nexport type filesize = u64;\n\n/** File attributes. */\n@unmanaged export class filestat {\n /** Device ID of device containing the file. */\n dev: device;\n /** File serial number. */\n ino: inode;\n /** File type. */\n filetype: filetype;\n /** Number of hard links to the file. */\n nlink: linkcount;\n /** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */\n size: filesize;\n /** Last data access timestamp. */\n atim: timestamp;\n /** Last data modification timestamp. */\n mtim: timestamp;\n /** Last file status change timestamp. */\n ctim: timestamp;\n}\n\n/** The type of a file descriptor or file. */\nexport namespace filetype {\n /** The type of the file descriptor or file is unknown or is different from any of the other types specified. */\n // @ts-ignore: decorator\n @inline\n export const UNKNOWN: filetype = 0;\n /** The file descriptor or file refers to a block device inode. */\n // @ts-ignore: decorator\n @inline\n export const BLOCK_DEVICE: filetype = 1;\n /** The file descriptor or file refers to a character device inode. */\n // @ts-ignore: decorator\n @inline\n export const CHARACTER_DEVICE: filetype = 2;\n /** The file descriptor or file refers to a directory inode. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: filetype = 3;\n /** The file descriptor or file refers to a regular file inode. */\n // @ts-ignore: decorator\n @inline\n export const REGULAR_FILE: filetype = 4;\n /** The file descriptor or file refers to a datagram socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_DGRAM: filetype = 5;\n /** The file descriptor or file refers to a byte-stream socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_STREAM: filetype = 6;\n /** The file refers to a symbolic link inode. */\n // @ts-ignore: decorator\n @inline\n export const SYMBOLIC_LINK: filetype = 7;\n}\nexport type filetype = u8;\n\n/** Which file time attributes to adjust. */\nexport namespace fstflags {\n /** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM: fstflags = 1;\n /** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM_NOW: fstflags = 2;\n /** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM: fstflags = 4;\n /** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM_NOW: fstflags = 8;\n}\nexport type fstflags = u16;\n\n/** File serial number that is unique within its file system. */\nexport type inode = u64;\n\n/** A region of memory for scatter/gather reads. */\n@unmanaged export class iovec {\n /** The address of the buffer to be filled. */\n buf: usize;\n /** The length of the buffer to be filled. */\n buf_len: usize;\n}\n\n/** Number of hard links to an inode. */\nexport type linkcount = u32;\n\n/** Flags determining the method of how paths are resolved. */\nexport namespace lookupflags {\n /** As long as the resolved path corresponds to a symbolic link, it is expanded. */\n // @ts-ignore: decorator\n @inline\n export const SYMLINK_FOLLOW: lookupflags = 1;\n}\nexport type lookupflags = u32;\n\n/** Open flags. */\nexport namespace oflags {\n /** Create file if it does not exist. */\n // @ts-ignore: decorator\n @inline\n export const CREAT: oflags = 1;\n /** Fail if not a directory. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: oflags = 2;\n /** Fail if file already exists. */\n // @ts-ignore: decorator\n @inline\n export const EXCL: oflags = 4;\n /** Truncate file to size 0. */\n // @ts-ignore: decorator\n @inline\n export const TRUNC: oflags = 8;\n}\nexport type oflags = u16;\n\n// TODO: undocumented\nexport namespace preopentype {\n // @ts-ignore: decorator\n @inline\n export const DIR: preopentype = 0;\n}\nexport type preopentype = u8;\n\n// TODO: undocumented\nexport abstract class prestat {\n type: preopentype;\n}\n\n// TODO: undocumented\nexport class dirprestat extends prestat {\n name_len: usize;\n}\n\n/** Flags provided to `sock_recv`. */\nexport namespace riflags {\n /** Returns the message without removing it from the socket's receive queue. */\n // @ts-ignore: decorator\n @inline\n export const PEEK: riflags = 1;\n /** On byte-stream sockets, block until the full amount of data can be returned. */\n // @ts-ignore: decorator\n @inline\n export const WAITALL: riflags = 2;\n}\nexport type riflags = u16;\n\n/** File descriptor rights, determining which actions may be performed. */\nexport namespace rights {\n /** The right to invoke `fd_datasync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_DATASYNC: rights = 1;\n /** The right to invoke `fd_read` and `sock_recv`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: rights = 2;\n /** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SEEK: rights = 4;\n /** The right to invoke `fd_fdstat_set_flags`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FDSTAT_SET_FLAGS: rights = 8;\n /** The right to invoke `fd_sync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SYNC: rights = 16;\n /** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */\n // @ts-ignore: decorator\n @inline\n export const FD_TELL: rights = 32;\n /** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: rights = 64;\n /** The right to invoke `fd_advise`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ADVISE: rights = 128;\n /** The right to invoke `fd_allocate`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ALLOCATE: rights = 256;\n /** The right to invoke `path_create_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_DIRECTORY: rights = 512;\n /** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_FILE: rights = 1024;\n /** The right to invoke `path_link` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_SOURCE: rights = 2048;\n /** The right to invoke `path_link` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_TARGET: rights = 4096;\n /** The right to invoke `path_open`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_OPEN: rights = 8192;\n /** The right to invoke `fd_readdir`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READDIR: rights = 16384;\n /** The right to invoke `path_readlink`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_READLINK: rights = 32768;\n /** The right to invoke `path_rename` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_SOURCE: rights = 65536;\n /** The right to invoke `path_rename` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_TARGET: rights = 131072;\n /** The right to invoke `path_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_GET: rights = 262144;\n /** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_SIZE: rights = 524288;\n /** The right to invoke `path_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_TIMES: rights = 1048576;\n /** The right to invoke `fd_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_GET: rights = 2097152;\n /** The right to invoke `fd_filestat_set_size`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_SIZE: rights = 4194304;\n /** The right to invoke `fd_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_TIMES: rights = 8388608;\n /** The right to invoke `path_symlink`. */\n // @ts-ignore: decorator\n @inline\n export const RIGHT_PATH_SYMLINK: rights = 16777216;\n /** The right to invoke `path_remove_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_REMOVE_DIRECTORY: rights = 33554432;\n /** The right to invoke `path_unlink_file`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_UNLINK_FILE: rights = 67108864;\n /** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */\n // @ts-ignore: decorator\n @inline\n export const POLL_FD_READWRITE: rights = 134217728;\n /** The right to invoke `sock_shutdown`. */\n // @ts-ignore: decorator\n @inline\n export const SOCK_SHUTDOWN: rights = 268435456;\n}\nexport type rights = u64;\n\n/** Flags returned by `sock_recv`. */\nexport namespace roflags {\n /** Message data has been truncated. */\n // @ts-ignore: decorator\n @inline\n export const DATA_TRUNCATED: roflags = 1;\n}\nexport type roflags = u16;\n\n/** Which channels on a socket to shut down. */\nexport namespace sdflags {\n /** Disables further receive operations. */\n // @ts-ignore: decorator\n @inline\n export const RD: sdflags = 1;\n /** Disables further send operations. */\n // @ts-ignore: decorator\n @inline\n export const WR: sdflags = 2;\n}\nexport type sdflags = u8;\n\n/** Flags provided to `sock_send`. */\nexport namespace siflags {\n // As there are currently no flags defined, it must be set to zero.\n}\nexport type siflags = u16;\n\n/** Signal condition. */\nexport namespace signal {\n /** Hangup. */\n // @ts-ignore: decorator\n @inline\n export const HUP: signal = 1;\n /** Terminate interrupt signal. */\n // @ts-ignore: decorator\n @inline\n export const INT: signal = 2;\n /** Terminal quit signal. */\n // @ts-ignore: decorator\n @inline\n export const QUIT: signal = 3;\n /** Illegal instruction. */\n // @ts-ignore: decorator\n @inline\n export const ILL: signal = 4;\n /** Trace/breakpoint trap. */\n // @ts-ignore: decorator\n @inline\n export const TRAP: signal = 5;\n /** Process abort signal. */\n // @ts-ignore: decorator\n @inline\n export const ABRT: signal = 6;\n /** Access to an undefined portion of a memory object. */\n // @ts-ignore: decorator\n @inline\n export const BUS: signal = 7;\n /** Erroneous arithmetic operation. */\n // @ts-ignore: decorator\n @inline\n export const FPE: signal = 8;\n /** Kill. */\n // @ts-ignore: decorator\n @inline\n export const KILL: signal = 9;\n /** User-defined signal 1. */\n // @ts-ignore: decorator\n @inline\n export const USR1: signal = 10;\n /** Invalid memory reference. */\n // @ts-ignore: decorator\n @inline\n export const SEGV: signal = 11;\n /** User-defined signal 2. */\n // @ts-ignore: decorator\n @inline\n export const USR2: signal = 12;\n /** Write on a pipe with no one to read it. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: signal = 13;\n /** Alarm clock. */\n // @ts-ignore: decorator\n @inline\n export const ALRM: signal = 14;\n /** Termination signal. */\n // @ts-ignore: decorator\n @inline\n export const TERM: signal = 15;\n /** Child process terminated, stopped, or continued. */\n // @ts-ignore: decorator\n @inline\n export const CHLD: signal = 16;\n /** Continue executing, if stopped. */\n // @ts-ignore: decorator\n @inline\n export const CONT: signal = 17;\n /** Stop executing. */\n // @ts-ignore: decorator\n @inline\n export const STOP: signal = 18;\n /** Terminal stop signal. */\n // @ts-ignore: decorator\n @inline\n export const TSTP: signal = 19;\n /** Background process attempting read. */\n // @ts-ignore: decorator\n @inline\n export const TTIN: signal = 20;\n /** Background process attempting write. */\n // @ts-ignore: decorator\n @inline\n export const TTOU: signal = 21;\n /** High bandwidth data is available at a socket. */\n // @ts-ignore: decorator\n @inline\n export const URG: signal = 22;\n /** CPU time limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XCPU: signal = 23;\n /** File size limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XFSZ: signal = 24;\n /** Virtual timer expired. */\n // @ts-ignore: decorator\n @inline\n export const VTALRM: signal = 25;\n // @ts-ignore: decorator\n @inline\n export const PROF: signal = 26;\n // @ts-ignore: decorator\n @inline\n export const WINCH: signal = 27;\n // @ts-ignore: decorator\n @inline\n export const POLL: signal = 28;\n // @ts-ignore: decorator\n @inline\n export const PWR: signal = 29;\n /** Bad system call. */\n // @ts-ignore: decorator\n @inline\n export const SYS: signal = 30;\n}\nexport type signal = u8;\n\n/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */\nexport namespace subclockflags {\n /** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */\n // @ts-ignore: decorator\n @inline\n export const ABSTIME: subclockflags = 1;\n}\nexport type subclockflags = u16;\n\n/** Subscription to an event. */\n@unmanaged export abstract class subscription {\n /** User-provided value that is attached to the subscription. */\n userdata: userdata;\n /** The type of the event to which to subscribe. */\n type: eventtype;\n private __padding0: u32;\n}\n\n/* Subscription to an event of type `eventtype.CLOCK`.**/\n@unmanaged export class clocksubscription extends subscription {\n /** The user-defined unique identifier of the clock. */\n identifier: userdata;\n /** The clock against which to compare the timestamp. */\n clock_id: clockid;\n /** The absolute or relative timestamp. */\n timeout: timestamp;\n /** The amount of time that the implementation may wait additionally to coalesce with other events. */\n precision: timestamp;\n /** Flags specifying whether the timeout is absolute or relative. */\n flags: subclockflags;\n private __padding1: u32;\n}\n\n/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/\n@unmanaged export class fdsubscription extends subscription {\n /** The file descriptor on which to wait for it to become ready for reading or writing. */\n fd: fd;\n}\n\n/** Timestamp in nanoseconds. */\nexport type timestamp = u64;\n\n/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */\nexport type userdata = u64;\n\n/** The position relative to which to set the offset of the file descriptor. */\nexport namespace whence {\n /** Seek relative to current position. */\n // @ts-ignore: decorator\n @inline\n export const CUR: whence = 0;\n /** Seek relative to end-of-file. */\n // @ts-ignore: decorator\n @inline\n export const END: whence = 1;\n /** Seek relative to start-of-file. */\n // @ts-ignore: decorator\n @inline\n export const SET: whence = 2;\n}\nexport type whence = u8;\n","bindings/wasi":'export * from "./wasi_unstable";\n',builtins:'// @ts-ignore: decorator\n@builtin\nexport declare function isInteger(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFloat(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isBoolean(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isSigned(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isReference(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isString(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArray(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArrayLike(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFunction(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isNullable(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isDefined(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isConstant(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isManaged(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isVoid(): boolean;\n\n// @ts-ignore\n@builtin\nexport declare function lengthof(func?: T): i32;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function clz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ctz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function popcnt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function abs(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function max(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function min(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ceil(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function floor(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function nearest(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function reinterpret(value: number): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sqrt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function trunc(value: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function load(offset: usize, immOffset?: usize, immAlign?: usize): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function store(offset: usize, value: void, immOffset?: usize, immAlign?: usize): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sizeof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function alignof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function offsetof(fieldName?: string): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function idof(): u32;\n\n// @ts-ignore\n@builtin\nexport declare function nameof(): string;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unreachable(): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function changetype(value: void): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unchecked(expr: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_indirect(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_direct(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function instantiate(...args: void[]): T;\n\nexport namespace atomic {\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: T, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n\n // @ts-ignore: decorator\n @builtin\n export declare function notify(ptr: usize, count: i32): i32;\n}\n\n// @ts-ignore: decorator\n@lazy\nexport const enum AtomicWaitResult {\n OK = 0,\n NOT_EQUAL = 1,\n TIMED_OUT = 2\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8(value: void): i8;\n\nexport namespace i8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i8 = -128;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i8 = 127;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16(value: void): i16;\n\nexport namespace i16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i16 = -32768;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i16 = 32767;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32(value: void): i32;\n\nexport namespace i32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i32 = -2147483648;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i32 = 2147483647;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f32(value: f32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64(value: void): i64;\n\nexport namespace i64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i64 = -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i64 = 9223372036854775807;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f64(value: f64): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw32 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isize(value: void): isize;\n\nexport namespace isize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u8(value: void): u8;\n\nexport namespace u8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u8 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u8 = 255;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u16(value: void): u16;\n\nexport namespace u16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u16 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u16 = 65535;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u32(value: void): u32;\n\nexport namespace u32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u32 = 4294967295;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u64(value: void): u64;\n\nexport namespace u64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function usize(value: void): usize;\n\nexport namespace usize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: usize = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function bool(value: void): bool;\n\nexport namespace bool {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: bool = false;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: bool = true;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32(value: void): f32;\n\nexport namespace f32 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x34000000); // 0x1p-23f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x00000001); // 0x0.000001p+0f\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7F7FFFFF); // 0x1.fffffep+127f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x00800000); // 0x1p-126f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f32, y: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i32(value: i32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f32): f32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f32): f32;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64(value: void): f64;\n\nexport namespace f64 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x3CB0000000000000); // 0x1p-52\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x0000000000000001); // 0x0.0000000000001p+0\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7FEFFFFFFFFFFFFF); // 0x1.fffffffffffffp+1023\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x0010000000000000); // 0x1p-1022\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f64, y: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i64(value: i64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f64): f64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f64): f64;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function v128(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace v128 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128; // except i64\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function not(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function bitselect(v1: v128, v2: v128, c: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8x16(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace i8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\n\nexport namespace i16x8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\n\nexport namespace i32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f32x4_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f32x4_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64x2(a: i64, b: i64): v128;\n\nexport namespace i64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f64x2_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f64x2_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\n\nexport namespace f32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i32x4(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i32x4(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64x2(a: f64, b: f64): v128;\n\nexport namespace f64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i64x2(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i64x2(a: v128): v128;\n}\n\nexport namespace v8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(\n a: v128, b: v128,\n l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8,\n l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8\n ): v128;\n}\n\n// @ts-ignore: decorator\n@external("env", "abort")\ndeclare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n// @ts-ignore: decorator\n@external("env", "trace")\ndeclare function trace(\n message: string,\n n?: i32,\n a0?: f64,\n a1?: f64,\n a2?: f64,\n a3?: f64,\n a4?: f64\n): void;\n',compat:"\nexport type ReturnType = returnof;\n",dataview:'import { BLOCK_MAXSIZE } from "./rt/common";\nimport { ArrayBuffer } from "./arraybuffer";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\n\n// TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte\n\nexport class DataView {\n\n private data: ArrayBuffer;\n private dataStart: usize;\n private dataLength: i32;\n\n constructor(\n buffer: ArrayBuffer,\n byteOffset: i32 = 0,\n byteLength: i32 = buffer.byteLength\n ) {\n if (\n i32(byteLength > BLOCK_MAXSIZE) |\n i32(byteOffset + byteLength > buffer.byteLength)\n ) throw new RangeError(E_INVALIDLENGTH);\n this.data = buffer; // retains\n var dataStart = changetype(buffer) + byteOffset;\n this.dataStart = dataStart;\n this.dataLength = byteLength;\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n getFloat32(byteOffset: i32, littleEndian: boolean = false): f32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getFloat64(byteOffset: i32, littleEndian: boolean = false): f64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getInt8(byteOffset: i32): i8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getInt16(byteOffset: i32, littleEndian: boolean = false): i16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getInt32(byteOffset: i32, littleEndian: boolean = false): i32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint8(byteOffset: i32): u8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getUint16(byteOffset: i32, littleEndian: boolean = false): u16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint32(byteOffset: i32, littleEndian: boolean = false): u32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setFloat32(byteOffset: i32, value: f32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setFloat64(byteOffset: i32, value: f64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setInt8(byteOffset: i32, value: i8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setInt16(byteOffset: i32, value: i16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setInt32(byteOffset: i32, value: i32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint8(byteOffset: i32, value: u8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setUint16(byteOffset: i32, value: u16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint32(byteOffset: i32, value: u32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n // Non-standard additions that make sense in WebAssembly, but won\'t work in JS:\n\n getInt64(byteOffset: i32, littleEndian: boolean = false): i64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i64 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint64(byteOffset: i32, littleEndian: boolean = false): u64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setInt64(byteOffset: i32, value: i64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint64(byteOffset: i32, value: u64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n toString(): string {\n return "[object DataView]";\n }\n}\n',date:'import {\n UTC as Date_UTC,\n now as Date_now\n} from "./bindings/Date";\n\nexport class Date {\n\n @inline static UTC(\n year: i32,\n month: i32 = 0,\n day: i32 = 1,\n hour: i32 = 0,\n minute: i32 = 0,\n second: i32 = 0,\n millisecond: i64 = 0\n ): i64 {\n return Date_UTC(year, month, day, hour, minute, second, millisecond);\n }\n\n @inline static now(): i64 {\n return Date_now();\n }\n\n private value: i64;\n\n constructor(value: i64) {\n this.value = value;\n }\n\n getTime(): i64 {\n return this.value;\n }\n\n setTime(value: i64): i64 {\n this.value = value;\n return value;\n }\n}\n',diagnostics:"// @ts-ignore: decorator\n@builtin\nexport declare function ERROR(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function WARNING(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function INFO(message?: string): void;\n",error:'export class Error {\n\n name: string = "Error";\n stack: string = ""; // TODO\n\n constructor(\n public message: string = ""\n ) {}\n\n toString(): string {\n var message = this.message;\n return message.length\n ? this.name + ": " + message\n : this.name;\n }\n}\n\nexport class RangeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "RangeError";\n }\n}\n\nexport class TypeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "TypeError";\n }\n}\n\nexport class SyntaxError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "SyntaxError";\n }\n}\n',fixedarray:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";\n\n// NOTE: DO NOT USE YET!\n\n// TODO: FixedArray with S being the static size, i.e. `new FixedArray`.\n// Then hard-wire this special type to the compiler and do static length checks instead :)\n\nexport class FixedArray {\n [key: number]: T;\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n var outSize = length << alignof();\n var out = __alloc(outSize, idof>());\n memory.fill(out, 0, outSize);\n return changetype>(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof();\n }\n\n @operator("[]") private __get(index: i32): T {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n this.__unchecked_set(index, value);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(changetype(this) + (index << alignof()));\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = changetype(this) + (index << alignof());\n let oldValue = load(offset);\n if (changetype(value) != oldValue) {\n store(offset, __retain(changetype(value)));\n __release(changetype(oldValue));\n }\n } else {\n store(changetype(this) + (index << alignof()), value);\n }\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = changetype(this);\n let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n }\n}\n',heap:"// @ts-ignore: decorator\n@builtin\nexport declare const __heap_base: usize;\n",iterator:"export abstract class Iterable {\n // ?\n}\n\n@sealed\nexport abstract class Iterator {\n\n // private constructor(iterable: Iterable) {\n // }\n\n // TODO: these need to evaluate the classId at the respective reference in order to obtain the\n // next value, i.e. arrays work differently than maps. we'd then have:\n //\n // ╒═══════════════════ Iterator layout (32-bit) ══════════════════╕\n // 3 2 1\n // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n // │ index │\n // ├─────────────────────────────────────────────────────────┬───┬─┤\n // │ reference │ 0 │D│\n // └─────────────────────────────────────────────────────────┴───┴─┘\n // D: Done flag\n\n // get value(this: u64): T {\n // ?\n // }\n\n // next(this: u64): Iterator {\n // ?\n // }\n\n done(this: u64): bool {\n return (this & 1);\n }\n}\n",map:'/// \n\nimport { HASH } from "./util/hash";\nimport { E_KEYNOTFOUND } from "util/error";\n\n// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a map entry. */\n@unmanaged class MapEntry {\n key: K;\n value: V;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K/V is <= 32-bits\n const maxkv = sizeof() > sizeof() ? sizeof() : sizeof();\n const align = (maxkv > sizeof() ? maxkv : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Map {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // MapEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() {\n this.clear();\n }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: K, hashCode: u32): MapEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n has(key: K): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n @operator("[]")\n get(key: K): V {\n var entry = this.find(key, HASH(key));\n if (!entry) throw new Error(E_KEYNOTFOUND); // cannot represent `undefined`\n return entry.value;\n }\n\n @operator("[]=")\n set(key: K, value: V): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (entry) {\n if (isManaged()) {\n let oldRef = changetype(entry.value);\n if (changetype(value) != oldRef) {\n entry.value = changetype(__retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n entry.value = value;\n }\n } else {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n let entries = this.entries;\n entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE());\n // link with the map\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n entry.value = isManaged()\n ? changetype(__retain(changetype(value)))\n : value;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n delete(key: K): bool {\n var entry = this.find(key, HASH(key));\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key));\n if (isManaged()) __release(changetype(entry.value));\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr);\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr);\n newEntry.key = oldEntry.key;\n newEntry.value = oldEntry.value;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n keys(): K[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var keys = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n keys.push(entry.key);\n }\n }\n return keys;\n }\n\n values(): V[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.value);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Map]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged() || isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n if (isManaged()) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n if (isManaged()) {\n let val = changetype(entry.value);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',math:'import * as JSMath from "./bindings/Math";\nexport { JSMath };\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from "./builtins";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n// TODO: sin, cos, tan for Math namespace\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n return NativeMath.exp(x - kln2) * scale * scale;\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7ff;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u >> 63);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_32: u32;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx >> 31) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var e = reinterpret(x) >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n if (hx >> 31) return -x;\n return x;\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var s = u >> 63;\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n switch (m) {\n case 0: return PI / 4;\n case 1: return -PI / 4;\n case 2: return 3 * PI / 4;\n case 3: return -3 * PI / 4;\n }\n } else {\n switch (m) {\n case 0: return 0.0;\n case 1: return -0.0;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // TODO\n return JSMath.cos(x);\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var hx = (reinterpret(x) >> 32);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n var hi: f64, lo: f64 = 0;\n var k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n var xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n var xq = xs * xs;\n var c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n var y = 1.0 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32 & 0x7FFFFFFF);\n var k = 0, sign_ = (u >> 63);\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign_) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = (ux >> 52);\n var ey = (uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || (hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = (u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = (hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln2hi;\n var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n var y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n var u_ = reinterpret(x);\n var hx = (u_ >> 32);\n var lx = u_;\n u_ = reinterpret(y);\n var hy = (u_ >> 32);\n var ly = u_;\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n var yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let kcond = k > 20;\n let offset = select(52, 20, kcond) - k;\n let Ly = select(ly, iy, kcond);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n var ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n var s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n var t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n var j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret((((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n var y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = (u_ >> 32);\n var i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret((n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = (reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n\n export function seedRandom(value: i64): void {\n assert(value);\n random_seeded = true;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n }\n\n export function random(): f64 { // see: v8/src/base/random-number-generator.cc\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = ((s0 + s1) & 0x000FFFFFFFFFFFFF) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f64): f64 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n // In ECMAScript all NaN values are indistinguishable from each other\n // so we need handle NaN and negative NaN in similar way\n return ((reinterpret(x) >>> 63) & i32(x == x));\n }\n\n export function sin(x: f64): f64 { // TODO\n return JSMath.sin(x);\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var absx = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n t = expm1(absx);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // TODO\n return JSMath.tan(x);\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n /* make sure final n < -53 to avoid double\n rounding in the subnormal range */\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx << 63;\n return reinterpret(ux);\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = (ux >> 63);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return sx ? -x : x;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy\nconst PIO2_TABLE: u64[] = [\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n];\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret((0x7F + (k >> 1)) << 23);\n return NativeMathf.exp(x - kln2) * scale * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n const bits = PIO2_TABLE;\n\n var offset = (u >> 23) - 152;\n var index = offset >> 6;\n var shift = offset & 63;\n\n var b0 = unchecked(bits[index + 0]);\n var b1 = unchecked(bits[index + 1]);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = unchecked(bits[index + 2]);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product: u64 = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q: i32 = ((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const pi2hi = reinterpret(0x3FF921FB50000000); // 1.57079631090164184570\n const pi2lo = reinterpret(0x3E5110B4611A6263); // 1.58932547735281966916e-8\n const _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { /* π * 0x1p28 */\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const S1 = reinterpret(0xBFC5555554CBAC77); // -0x15555554cbac77.0p-55\n const S2 = reinterpret(0x3F811110896EFBB2); // 0x111110896efbb2.0p-59\n const S3 = reinterpret(0xBF2A00F9E2CAE774); // -0x1a00f9e2cae774.0p-65\n const S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return ((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const C0 = reinterpret(0xBFDFFFFFFD0C5E81); // -0x1ffffffd0c5e81.0p-54\n const C1 = reinterpret(0x3FA55553E1053A42); // 0x155553e1053a42.0p-57\n const C2 = reinterpret(0xBF56C087E80F1E27); // -0x16c087e80f1e27.0p-62\n const C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return (((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n\n const T0 = reinterpret(0x3FD5554D3418C99F); /* 0x15554d3418c99f.0p-54 */\n const T1 = reinterpret(0x3FC112FD38999F72); /* 0x1112fd38999f72.0p-55 */\n const T2 = reinterpret(0x3FAB54C91D865AFE); /* 0x1b54c91d865afe.0p-57 */\n const T3 = reinterpret(0x3F991DF3908C33CE); /* 0x191df3908c33ce.0p-58 */\n const T4 = reinterpret(0x3F685DADFCECF44E); /* 0x185dadfcecf44e.0p-61 */\n const T5 = reinterpret(0x3F8362B9BF971BCD); /* 0x1362b9bf971bcd.0p-59 */\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return (odd ? -1 / r : r);\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000);\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx >> 31) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) {\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (a < 0x3F800000 + (12 << 23)) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000);\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = (pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000);\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = (((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n switch (m) {\n case 0: return pi / 4;\n case 1: return -pi / 4;\n case 2: return 3 * pi / 4;\n case 3: return -3 * pi / 4;\n }\n } else {\n switch (m) {\n case 0: return 0;\n case 1: return -0;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const c1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const c2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const c3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n /* raise inexact if x != 0 */\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix > 0x4016cbe3) { /* |x| ~> 3π/4 */\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix > 0x40afeddf) { /* |x| ~> 7π/4 */\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n /* cos(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000);\n var hx = reinterpret(x);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx >= 0x42B17218) {\n if (!sign_) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n var hi: f32, lo: f32;\n var k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n var xx = x * x;\n var c = x - xx * (P1 + xx * P2);\n var y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x42B17180), // 8.8721679688e+01f\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign_ = (u >> 31);\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign_) return -1;\n if (x > o_threshold) {\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt((x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n var u = reinterpret(x);\n var k = 0;\n if (u < 0x00800000 || (u >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (u >> 31) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) return x;\n else if (u == 0x3F800000) return 0;\n u += 0x3F800000 - 0x3F3504F3;\n k += (u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ix = reinterpret(hi);\n ix &= 0xFFFFF000;\n hi = reinterpret(ix);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n var ix = reinterpret(x);\n var c: f32 = 0, f: f32 = 0;\n var k: i32 = 1;\n if (ix < 0x3ED413D0 || (ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = (iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k: i32 = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n var u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n var lo: f32 = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 { // see: musl/src/math/powf.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3F15C000), // 5.84960938e-01f\n dp_l1 = reinterpret(0x35D1CFDC), // 1.56322085e-06f\n two24 = reinterpret(0x4B800000), // 16777216f\n huge = reinterpret(0x7149F2CA), // 1.0e+30f\n tiny = reinterpret(0x0DA24260), // 1.0e-30f\n L1 = reinterpret(0x3F19999A), // 6.0000002384e-01f\n L2 = reinterpret(0x3EDB6DB7), // 4.2857143283e-01f\n L3 = reinterpret(0x3EAAAAAB), // 3.3333334327e-01f\n L4 = reinterpret(0x3E8BA305), // 2.7272811532e-01f\n L5 = reinterpret(0x3E6C3255), // 2.3066075146e-01f\n L6 = reinterpret(0x3E53F142), // 2.0697501302e-01f\n P1 = reinterpret(0x3E2AAAAB), // 1.6666667163e-01f\n P2 = reinterpret(0xBB360B61), // -2.7777778450e-03f\n P3 = reinterpret(0x388AB355), // 6.6137559770e-05f\n P4 = reinterpret(0xB5DDEA0E), // -1.6533901999e-06f\n P5 = reinterpret(0x3331BB4C), // 4.1381369442e-08f\n lg2 = reinterpret(0x3F317218), // 6.9314718246e-01f\n lg2_h = reinterpret(0x3F317200), // 6.93145752e-01f\n lg2_l = reinterpret(0x35BFBE8C), // 1.42860654e-06f\n ovt = reinterpret(0x3338AA3C), // 4.2995665694e-08f\n cp = reinterpret(0x3F76384F), // 9.6179670095e-01\n cp_h = reinterpret(0x3F764000), // 9.6191406250e-01\n cp_l = reinterpret(0xB8F623C6), // -1.1736857402e-04\n ivln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00\n ivln2_h = reinterpret(0x3FB8AA00), // 1.4426879883e+00\n ivln2_l = reinterpret(0x36ECA570), // 7.0526075433e-06\n inv3 = reinterpret(0x3EAAAAAB); // 0.333333333333\n var hx = reinterpret(x);\n var hy = reinterpret(y);\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if (iy == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3F800000) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if (ix > 0x7F800000 || iy > 0x7F800000) return x + y; // NaN if either arg is NaN\n var yisint = 0, j: i32, k: i32;\n if (hx < 0) {\n if (iy >= 0x4B800000) yisint = 2;\n else if (iy >= 0x3F800000) {\n k = (iy >> 23) - 0x7F;\n let ki = 23 - k;\n j = iy >> ki;\n if ((j << ki) == iy) yisint = 2 - (j & 1);\n }\n }\n if (iy == 0x7F800000) { // y is +-inf\n if (ix == 0x3F800000) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix > 0x3F800000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3F800000) return hy >= 0 ? x : 1.0 / x;\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3F000000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n var ax = builtin_abs(x);\n var z: f32;\n if (ix == 0x7F800000 || ix == 0 || ix == 0x3F800000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3F800000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n }\n else if (yisint == 1) z = -z;\n }\n return z;\n }\n var sn = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) sn = -1.0;\n }\n var t1: f32, t2: f32, r: f32, s: f32, t: f32, u: f32, v: f32, w: f32, p_h: f32, p_l: f32;\n var n: i32, is: i32;\n if (iy > 0x4D000000) {\n if (ix < 0x3F7FFFF8) return hy < 0 ? sn * huge * huge : sn * tiny * tiny;\n if (ix > 0x3F800007) return hy > 0 ? sn * huge * huge : sn * tiny * tiny;\n t = ax - 1;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = v - (t1 - u);\n } else {\n let s2: f32, s_h: f32, s_l: f32, t_h: f32, t_l: f32;\n n = 0;\n if (ix < 0x00800000) {\n ax *= two24;\n n -= 24;\n ix = reinterpret(ax);\n }\n n += (ix >> 23) - 0x7F;\n j = ix & 0x007FFFFF;\n ix = j | 0x3F800000;\n if (j <= 0x1CC471) k = 0;\n else if (j < 0x5DB3D7) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00800000;\n }\n ax = reinterpret(ix);\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n s = u * v;\n s_h = s;\n is = reinterpret(s_h);\n s_h = reinterpret(is & 0xFFFFF000);\n is = ((ix >> 1) & 0xFFFFF000) | 0x20000000;\n t_h = reinterpret(is + 0x00400000 + (k << 21));\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = s * s;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + s);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n is = reinterpret(t_h);\n t_h = reinterpret(is & 0xFFFFF000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * s;\n p_h = u + v;\n is = reinterpret(p_h);\n p_h = reinterpret(is & 0xFFFFF000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = (((z_h + z_l) + dp_h) + t);\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n is = reinterpret(y);\n var y1 = reinterpret(is & 0xFFFFF000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n j = reinterpret(z);\n if (j > 0x43000000) {\n return sn * huge * huge;\n } else if (j == 0x43000000) {\n if (p_l + ovt > z - p_h) return sn * huge * huge;\n } else if ((j & 0x7FFFFFFF) > 0x43160000) {\n return sn * tiny * tiny;\n } else if (j == 0xC3160000) {\n if (p_l <= z - p_h) return sn * tiny * tiny;\n }\n var i = j & 0x7FFFFFFF;\n k = (i >> 23) - 0x7F;\n n = 0;\n if (i > 0x3F000000) {\n n = j + (0x00800000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 23) - 0x7F;\n t = reinterpret(n & ~(0x007FFFFF >> k));\n n = ((n & 0x007FFFFF) | 0x00800000) >> (23 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n is = reinterpret(t);\n t = reinterpret(is & 0xFFFF8000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = reinterpret(z);\n j += n << 23;\n if ((j >> 23) <= 0) z = scalbn(z, n);\n else z = reinterpret(j);\n return sn * z;\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f32): f32 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n // @ts-ignore: type\n return ((reinterpret(x) >>> 31) & (x == x));\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const s2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var absx = reinterpret(u);\n var t: f32;\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n t = expm1(absx);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2f(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const t1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const t2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const t3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n /* tan(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* argument reduction */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx;\n return reinterpret(ux);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = (ux >> 31);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // q++;\n }\n return sx ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const s2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7fffffff;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n /* -sin(x + c) is not correct if x+c could be 0: -0 vs +0 */\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n\n switch (n & 3) {\n case 0: {\n sincos_sin = s;\n sincos_cos = c;\n break;\n }\n case 1: {\n sincos_sin = c;\n sincos_cos = -s;\n break;\n }\n case 2: {\n sincos_sin = -s;\n sincos_cos = -c;\n break;\n }\n case 3:\n default: {\n sincos_sin = -c;\n sincos_cos = s;\n break;\n }\n }\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 5) {\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i32): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 6) {\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow32f(x: f32, e: i32): f32 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out: f32 = 1;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n\nexport function ipow64f(x: f64, e: i32): f64 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out = 1.0;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n',memory:'import { memcmp, memmove, memset } from "./util/memory";\nimport { E_NOTIMPLEMENTED } from "./util/error";\n\n/** Memory manager interface. */\nexport namespace memory {\n\n /** Gets the size of the memory in pages. */\n // @ts-ignore: decorator\n @builtin\n export declare function size(): i32;\n\n /** Grows the memory by the given size in pages and returns the previous size in pages. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function grow(pages: i32): i32;\n\n /** Fills a section in memory with the specified byte value. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function fill(dst: usize, c: u8, n: usize): void {\n memset(dst, c, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Copies a section of memory to another. Has move semantics. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function copy(dst: usize, src: usize, n: usize): void {\n memmove(dst, src, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Initializes a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Drops a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function drop(segmentIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Repeats a section of memory at a specific address. */\n // @ts-ignore: decorator\n @unsafe\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void {\n var index: usize = 0;\n var total = srcLength * count;\n while (index < total) {\n memory.copy(dst + index, src, srcLength);\n index += srcLength;\n }\n }\n\n /** Compares a section of memory to another. */\n // @ts-ignore: decorator\n @inline\n export function compare(vl: usize, vr: usize, n: usize): i32 {\n return memcmp(vl, vr, n);\n }\n}\n',number:'import { itoa, dtoa } from "./util/number";\nimport { strtol } from "./util/string";\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const NaN: f64 = 0 / 0;\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const Infinity: f64 = 1 / 0;\n\nexport function isNaN(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value != value;\n}\n\nexport function isFinite(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value - value == 0;\n}\n\n@sealed @unmanaged\nexport abstract class I8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i8 = i8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i8 = i8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i8 {\n return strtol(value, radix);\n }\n\n toString(this: i8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i16 = i16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i16 = i16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i16 {\n return strtol(value, radix);\n }\n\n toString(this: i16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i32 = i32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i32 = i32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i32 {\n return strtol(value, radix);\n }\n\n toString(this: i32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i64 = i64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i64 = i64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i64 {\n return strtol(value, radix);\n }\n\n toString(this: i64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Isize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: isize = isize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: isize = isize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): isize {\n return strtol(value, radix);\n }\n\n toString(this: isize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u8 = u8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u8 = u8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u8 {\n return strtol(value, radix);\n }\n\n toString(this: u8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u16 = u16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u16 = u16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u16 {\n return strtol(value, radix);\n }\n\n toString(this: u16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u32 = u32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u32 = u32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u32 {\n return strtol(value, radix);\n }\n\n toString(this: u32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u64 = u64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u64 = u64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u64 {\n return strtol(value, radix);\n }\n\n toString(this: u64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Usize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: usize = usize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: usize = usize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): usize {\n return strtol(value, radix);\n }\n\n toString(this: usize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Bool {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: bool = bool.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: bool = bool.MAX_VALUE;\n\n toString(this: bool): String {\n // TODO: radix?\n return this ? "true" : "false";\n }\n}\n\nexport { Bool as Boolean };\n\n@sealed @unmanaged\nexport abstract class F32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f32 = f32.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f32 = f32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f32 = f32.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f32 = f32.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f32 = f32.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f32 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f32 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f32 = NaN;\n\n static isNaN(value: f32): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f32): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f32): bool {\n return abs(value) <= f32.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f32): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f32 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f32 {\n return parseFloat(value);\n }\n\n toString(this: f32): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class F64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f64 = f64.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f64 = f64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f64 = f64.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f64 = f64.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f64 = f64.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f64 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f64 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f64 = NaN;\n\n static isNaN(value: f64): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f64): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f64): bool {\n return abs(value) <= f64.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f64): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f64 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f64 {\n return parseFloat(value);\n }\n\n toString(this: f64, radix: i32 = 0): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\nexport { F64 as Number };\n',polyfills:"export function bswap(value: T): T {\n if (isInteger()) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n }\n if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n }\n if (sizeof() == 8) {\n let a = (value >> 8) & 0x00FF00FF00FF00FF;\n let b = (value & 0x00FF00FF00FF00FF) << 8;\n let v = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n }\n assert(false);\n return value;\n}\n\nexport function bswap16(value: T): T {\n if (isInteger() && sizeof() <= 4) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n } else if (sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n }\n assert(false);\n return value;\n}\n",regexp:'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',rt:'import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo";\nimport { E_INDEXOUTOFRANGE } from "./util/error";\nimport { BLOCK, BLOCK_OVERHEAD } from "./rt/common";\nimport { ArrayBufferView } from "./arraybuffer";\n\n// @ts-ignore: decorator\n@builtin\nexport declare const __rtti_base: usize;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_globals(cookie: u32): void;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_members(ref: usize, cookie: u32): void;\n\n// @ts-ignore: decorator\n@unsafe\nexport function __typeinfo(id: u32): TypeinfoFlags {\n var ptr = __rtti_base;\n if (id > load(ptr)) throw new Error(E_INDEXOUTOFRANGE);\n return changetype(ptr + sizeof() + id * offsetof()).flags;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __instanceof(ref: usize, superId: u32): bool { // keyword\n var id = changetype(ref - BLOCK_OVERHEAD).rtId;\n var ptr = __rtti_base;\n if (id <= load(ptr)) {\n do if (id == superId) return true;\n while (id = changetype(ptr + sizeof() + id * offsetof()).base);\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize {\n var array = __alloc(offsetof(), id);\n var bufferSize = length << alignLog2;\n var buffer = __alloc(bufferSize, idof());\n store(array, __retain(buffer), offsetof("data"));\n changetype(array).dataStart = buffer;\n changetype(array).dataLength = bufferSize;\n store(changetype(array), length, offsetof("length_"));\n if (data) memory.copy(buffer, data, bufferSize);\n return array;\n}\n\n// These are provided by the respective implementation, included as another entry file by asc:\n\n// @builtin @unsafe\n// export declare function __alloc(size: usize, id: u32): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __realloc(ref: usize, size: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __free(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __retain(ref: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __release(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __collect(): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __visit(ref: usize, cookie: u32): void;\n',"rt/common":"// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n\n// ╒════════════════ Common block layout (32-bit) ═════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime size │ -4\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ ... │ ref\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize; // WASM64 needs adaption\n /** Garbage collector info. */\n gcInfo: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD = (offsetof() + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n","rt/index-full":'export { __alloc } from "rt/tlsf";\nexport { __retain, __release, __collect } from "rt/pure";\nexport { __rtti_base } from "rt";\n',"rt/index-half":'import "rt/index-full";\n',"rt/index-none":'import "rt/index-stub";\n',"rt/index-stub":'export { __alloc, __retain, __release, __collect } from "rt/stub";\nexport { __rtti_base } from "rt";\n',"rt/pure":'import { DEBUG, BLOCK_OVERHEAD } from "rt/common";\nimport { Block, freeBlock, ROOT } from "rt/tlsf";\nimport { TypeinfoFlags } from "shared/typeinfo";\nimport { onincrement, ondecrement, onfree, onalloc } from "./rtrace";\n\n/////////////////////////// A Pure Reference Counting Garbage Collector ///////////////////////////\n// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf\n\n// ╒══════════════════════ GC Info structure ══════════════════════╕\n// │ 3 2 1 │\n// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│\n// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │B│color│ refCount │\n// └─┴─────┴───────────────────────────────────────────────────────┘\n// B: buffered\n\n// @ts-ignore: decorator\n@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1);\n// @ts-ignore: decorator\n@inline const COLOR_BITS = 3;\n// @ts-ignore: decorator\n@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS;\n// @ts-ignore: decorator\n@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1;\n\n// ╒════════╤═══════════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├────────┼──────────────────────────────────────────────────────┤\n// │ BLACK │ In use or free │\n// │ GRAY │ Possible member of cycle │\n// │ WHITE │ Member of garbage cycle │\n// │ PURPLE │ Possible root of cycle │\n// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │\n// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │\n// └────────┴──────────────────────────────────────────────────────┘\n// Acyclic detection has been decoupled, hence no GREEN.\n\n// @ts-ignore: decorator\n@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_RED: u32 = 4 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT;\n\n// @ts-ignore: decorator\n@inline const VISIT_DECREMENT = 1; // guard 0\n// @ts-ignore: decorator\n@inline const VISIT_MARKGRAY = 2;\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 3;\n// @ts-ignore: decorator\n@inline const VISIT_SCANBLACK = 4;\n// @ts-ignore: decorator\n@inline const VISIT_COLLECTWHITE = 5;\n\n// @ts-ignore: decorator\n@global @unsafe\nfunction __visit(ref: usize, cookie: i32): void {\n if (ref < __heap_base) return;\n var s = changetype(ref - BLOCK_OVERHEAD);\n switch (cookie) {\n case VISIT_DECREMENT: {\n decrement(s);\n break;\n }\n case VISIT_MARKGRAY: {\n if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0);\n s.gcInfo = s.gcInfo - 1;\n markGray(s);\n break;\n }\n case VISIT_SCAN: {\n scan(s);\n break;\n }\n case VISIT_SCANBLACK: {\n let info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if ((info & COLOR_MASK) != COLOR_BLACK) {\n scanBlack(s);\n }\n break;\n }\n case VISIT_COLLECTWHITE: {\n collectWhite(s);\n break;\n }\n default: if (DEBUG) assert(false);\n }\n}\n\n/** Increments the reference count of the specified block by one.*/\nfunction increment(s: Block): void {\n var info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if (isDefined(ASC_RTRACE)) onincrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n}\n\n/** Decrements the reference count of the specified block by one, possibly freeing it. */\nfunction decrement(s: Block): void {\n var info = s.gcInfo;\n var rc = info & REFCOUNT_MASK;\n if (isDefined(ASC_RTRACE)) ondecrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n if (rc == 1) {\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT);\n if (!(info & BUFFERED_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0;\n }\n } else {\n if (DEBUG) assert(rc > 0);\n if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) {\n s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1);\n if (!(info & BUFFERED_MASK)) {\n appendRoot(s);\n }\n } else {\n s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1);\n }\n }\n}\n\n/** Buffer of possible roots. */\n// @ts-ignore: decorator\n@lazy var ROOTS: usize;\n/** Current absolute offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var CUR: usize = 0;\n/** Current absolute end offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var END: usize = 0;\n\n/** Appends a block to possible roots. */\nfunction appendRoot(s: Block): void {\n var cur = CUR;\n if (cur >= END) {\n growRoots(); // TBD: either that or pick a default and force collection on overflow\n cur = CUR;\n }\n store(cur, s);\n CUR = cur + sizeof();\n}\n\n/** Grows the roots buffer if it ran full. */\nfunction growRoots(): void {\n var oldRoots = ROOTS;\n var oldSize = CUR - oldRoots;\n var newSize = max(oldSize * 2, 64 << alignof());\n var newRoots = __alloc(newSize, 0);\n if (isDefined(ASC_RTRACE)) onfree(changetype(newRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n memory.copy(newRoots, oldRoots, oldSize);\n if (oldRoots) {\n if (isDefined(ASC_RTRACE)) onalloc(changetype(oldRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n __free(oldRoots);\n }\n ROOTS = newRoots;\n CUR = newRoots + oldSize;\n END = newRoots + newSize;\n}\n\n/** Collects cyclic garbage. */\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n\n // markRoots\n var roots = ROOTS;\n var cur = roots;\n for (let pos = cur, end = CUR; pos < end; pos += sizeof()) {\n let s = load(pos);\n let info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) {\n markGray(s);\n store(cur, s);\n cur += sizeof();\n } else {\n if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = info & ~BUFFERED_MASK;\n }\n }\n }\n CUR = cur;\n\n // scanRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n scan(load(pos));\n }\n\n // collectRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n let s = load(pos);\n s.gcInfo = s.gcInfo & ~BUFFERED_MASK;\n collectWhite(s);\n }\n CUR = roots;\n}\n\n/** Marks a block as gray (possible member of cycle) during the collection phase. */\nfunction markGray(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) != COLOR_GRAY) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY);\n }\n}\n\n/** Scans a block during the collection phase, determining whether it is garbage or not. */\nfunction scan(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_GRAY) {\n if ((info & REFCOUNT_MASK) > 0) {\n scanBlack(s);\n } else {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN);\n }\n }\n}\n\n/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */\nfunction scanBlack(s: Block): void {\n s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK);\n}\n\n/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */\nfunction collectWhite(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE);\n freeBlock(ROOT, s);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n if (ref > __heap_base) increment(changetype(ref - BLOCK_OVERHEAD));\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n if (ref > __heap_base) decrement(changetype(ref - BLOCK_OVERHEAD));\n}\n',"rt/rtrace":'import { BLOCK } from "./common";\n\nexport declare function onalloc(s: BLOCK): void;\nexport declare function onincrement(s: BLOCK): void;\nexport declare function ondecrement(s: BLOCK): void;\nexport declare function onfree(s: BLOCK): void;\n',"rt/stub":'import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common";\n\n// @ts-ignore: decorator\n@lazy\nvar startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@lazy\nvar offset: usize = startOffset;\n\nfunction maybeGrowMemory(newOffset: usize): void {\n // assumes newOffset is aligned\n var pagesBefore = memory.size();\n var maxOffset = pagesBefore << 16;\n if (newOffset > maxOffset) {\n let pagesNeeded = ((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16;\n let pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory\n }\n }\n offset = newOffset;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __alloc(size: usize, id: u32): usize {\n if (size > BLOCK_MAXSIZE) unreachable();\n var ptr = offset + BLOCK_OVERHEAD;\n var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE);\n maybeGrowMemory(ptr + actualSize);\n var block = changetype(ptr - BLOCK_OVERHEAD);\n block.mmInfo = actualSize;\n if (DEBUG) block.gcInfo = -1;\n block.rtId = id;\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __realloc(ptr: usize, size: usize): usize {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n var actualSize = block.mmInfo;\n if (DEBUG) assert(block.gcInfo == -1);\n if (size > actualSize) {\n if (ptr + actualSize == offset) { // last block: grow\n if (size > BLOCK_MAXSIZE) unreachable();\n actualSize = (size + AL_MASK) & ~AL_MASK;\n maybeGrowMemory(ptr + actualSize);\n block.mmInfo = actualSize;\n } else { // copy to new block at least double the size\n actualSize = max((size + AL_MASK) & ~AL_MASK, actualSize << 1);\n let newPtr = __alloc(actualSize, block.rtId);\n memory.copy(newPtr, ptr, block.rtSize);\n block = changetype((ptr = newPtr) - BLOCK_OVERHEAD);\n }\n } else if (ptr + actualSize == offset) { // last block: shrink\n actualSize = (size + AL_MASK) & ~AL_MASK;\n offset = ptr + actualSize;\n block.mmInfo = actualSize;\n }\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __free(ptr: usize): void {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n if (DEBUG) assert(block.gcInfo == -1);\n if (ptr + block.mmInfo == offset) { // last block: discard\n offset = changetype(block);\n }\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nfunction __reset(): void { // special\n offset = startOffset;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ref: usize, cookie: u32): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n}\n',"rt/tlsf":"import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"rt/common\";\nimport { onfree, onalloc } from \"./rtrace\";\nimport { REFCOUNT_MASK } from \"./pure\";\n\n/////////////////////// The TLSF (Two-Level Segregate Fit) memory allocator ///////////////////////\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: usize = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: usize = (SL_BITS + AL_BITS);\n// @ts-ignore: decorator\n@inline const SB_SIZE: usize = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐\n// │ size │0│L│F│ ◄─┐ info\n// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │\n// │ │ │\n// │ ... additional runtime overhead ... │ │\n// │ │ │\n// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ = 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n let newSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = (blockInfo & TAGS_MASK) | newSize;\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n let newSize = (leftInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, left);\n left.mmInfo = blockInfo = (leftInfo & TAGS_MASK) | newSize;\n block = left;\n // 'back' is set below\n }\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) {\n assert(\n start <= end && // must be valid\n !(start & AL_MASK) && // must be aligned\n !(end & AL_MASK) // must be aligned\n );\n }\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n if (start - BLOCK_OVERHEAD == changetype(tail)) {\n start -= BLOCK_OVERHEAD;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - (BLOCK_OVERHEAD << 1);\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + size - BLOCK_OVERHEAD);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size >= BLOCK_MAXSIZE) throw new Error(\"allocation too large\");\n return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size\n}\n\n/** Initilizes the root structure. */\nexport function initializeRoot(): void {\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n addMemory(root, (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK, memory.size() << 16);\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = searchBlock(root, payloadSize);\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n block.gcInfo = 0; // RC=0\n // block.rtId = 0; // set by the caller (__alloc)\n block.rtSize = size;\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n if (DEBUG) {\n assert(\n !(blockInfo & FREE) && // must be used\n !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK\n );\n }\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= (blockInfo & ~TAGS_MASK)) {\n prepareBlock(root, block, payloadSize);\n block.rtSize = size;\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which\n // is immediately split though. does this trigger any assertions / issues?\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n block.rtSize = size;\n prepareBlock(root, block, payloadSize);\n return block;\n }\n }\n\n // otherwise move the block\n var newBlock = allocateBlock(root, size);\n newBlock.rtId = block.rtId;\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size);\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n assert(!(blockInfo & FREE)); // must be used (user might call through to this)\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize, id: u32): usize {\n var root = ROOT;\n if (!root) {\n initializeRoot();\n root = ROOT;\n }\n var block = allocateBlock(root, size);\n block.rtId = id;\n return changetype(block) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ref: usize, size: usize): usize {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n return changetype(reallocateBlock(ROOT, changetype(ref - BLOCK_OVERHEAD), size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ref: usize): void {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n freeBlock(ROOT, changetype(ref - BLOCK_OVERHEAD));\n}\n",set:'/// \n\nimport { HASH } from "./util/hash";\n\n// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a set entry. */\n@unmanaged class SetEntry {\n key: K;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K is <= 32-bits\n const align = (sizeof() > sizeof() ? sizeof() : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Set {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // SetEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() { this.clear(); }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: T, hashCode: u32): SetEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n @operator("[]")\n has(key: T): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n add(key: T): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (!entry) {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n entry = changetype>(changetype(this.entries) + this.entriesOffset++ * ENTRY_SIZE());\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n @operator("[]=")\n private __set(key: T, value: bool): void {\n if (value) this.add(key);\n else this.delete(key);\n }\n\n delete(key: T): bool {\n var entry = this.find(key, HASH(key)); // unmanaged!\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key)); // exact \'key\'\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr); // unmanaged!\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr); // unmanaged!\n newEntry.key = oldEntry.key;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n values(): T[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.key);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Set]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',"shared/feature":"// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","shared/target":"// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","shared/typeinfo":"// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n",string:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { compareImpl, strtol, strtod, isSpace } from "./util/string";\nimport { E_INVALIDLENGTH } from "./util/error";\nimport { ArrayBufferView } from "./arraybuffer";\nimport { idof } from "./builtins";\n\n@sealed export abstract class String {\n\n @lazy static readonly MAX_LENGTH: i32 = BLOCK_MAXSIZE >>> alignof();\n\n static fromCharCode(unit: i32, surr: i32 = -1): string {\n var hasSur = surr > 0;\n var out = __alloc(2 << i32(hasSur), idof());\n store(out, unit);\n if (hasSur) store(out, surr, 2);\n return changetype(out); // retains\n }\n\n static fromCodePoint(code: i32): string {\n assert(code <= 0x10FFFF);\n var hasSur = code > 0xFFFF;\n var out = __alloc(2 << i32(hasSur), idof());\n if (!hasSur) {\n store(out, code);\n } else {\n code -= 0x10000;\n let hi: u32 = (code >>> 10) + 0xD800;\n let lo: u32 = (code & 0x3FF) + 0xDC00;\n store(out, (hi << 16) | lo);\n }\n return changetype(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1;\n }\n\n @operator("[]") charAt(pos: i32): String {\n if (pos >= this.length) return changetype("");\n var out = __alloc(2, idof());\n store(out, load(changetype(this) + (pos << 1)));\n return changetype(out); // retains\n }\n\n charCodeAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (NaN)\n return load(changetype(this) + (pos << 1));\n }\n\n codePointAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (undefined)\n var first = load(changetype(this) + (pos << 1));\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) return first;\n var second = load(changetype(this) + ((pos + 1) << 1));\n if (second < 0xDC00 || second > 0xDFFF) return first;\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+") private static __concat(left: String, right: String): String {\n return select(left, changetype("null"), left !== null).concat(right);\n }\n\n concat(other: String): String {\n if (other === null) other = changetype("null");\n var thisSize: isize = this.length << 1;\n var otherSize: isize = other.length << 1;\n var outSize: usize = thisSize + otherSize;\n if (outSize == 0) return changetype("");\n var out = changetype(__alloc(outSize, idof())); // retains\n memory.copy(changetype(out), changetype(this), thisSize);\n memory.copy(changetype(out) + thisSize, changetype(other), otherSize);\n return out;\n }\n\n endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {\n if (search === null) return false;\n end = min(max(end, 0), this.length);\n var searchLength = search.length;\n var searchStart = end - searchLength;\n if (searchStart < 0) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n @operator("==") private static __eq(left: String | null, right: String | null): bool {\n if (left === right) return true;\n if (left === null || right === null) return false;\n var leftLength = left.length;\n if (leftLength != right.length) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(left, 0, right, 0, leftLength);\n }\n\n @operator.prefix("!")\n private static __not(str: String | null): bool {\n return str === null || !str.length;\n }\n\n @operator("!=")\n private static __ne(left: String | null, right: String | null): bool {\n return !this.__eq(left, right);\n }\n\n @operator(">") private static __gt(left: String | null, right: String | null): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!leftLength) return false;\n if (!rightLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0;\n }\n\n @operator(">=") private static __gte(left: String, right: String): bool {\n return !this.__lt(left, right);\n }\n\n @operator("<") private static __lt(left: String, right: String): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!rightLength) return false;\n if (!leftLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0;\n }\n\n @operator("<=") private static __lte(left: String, right: String): bool {\n return !this.__gt(left, right);\n }\n\n includes(search: String, start: i32 = 0): bool {\n return this.indexOf(search, start) != -1;\n }\n\n indexOf(search: String, start: i32 = 0): i32 {\n var searchLen = search.length;\n if (!searchLen) return 0;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len);\n for (len -= searchLen; searchStart <= len; ++searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n lastIndexOf(search: String, start: i32 = i32.MAX_VALUE): i32 {\n var searchLen = search.length;\n if (!searchLen) return this.length;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len - searchLen);\n for (; searchStart >= 0; --searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n startsWith(search: String, start: i32 = 0): bool {\n if (search === null) search = changetype("null");\n var len = this.length;\n var searchStart = min(max(start, 0), len);\n var searchLength = search.length;\n if (searchLength + searchStart > len) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) intStart = max(size + intStart, 0);\n var resultLength = min(max(end, 0), size - intStart);\n if (resultLength <= 0) return changetype("");\n var out = __alloc(resultLength << 1, idof());\n memory.copy(out, changetype(this) + intStart, resultLength);\n return changetype(out); // retains\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len: isize = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var fromPos = min(finalStart, finalEnd) << 1;\n var toPos = max(finalStart, finalEnd) << 1;\n len = toPos - fromPos;\n if (!len) return changetype("");\n if (!fromPos && toPos == this.length << 1) return this;\n var out = __alloc(len, idof());\n memory.copy(out, changetype(this) + fromPos, len);\n return changetype(out); // retains\n }\n\n trim(): String {\n var length = this.length;\n var size: usize = length << 1;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2; size -= 2;\n }\n if (!size) return changetype("");\n if (!offset && size == length << 1) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n @inline\n trimLeft(): String {\n return this.trimStart();\n }\n\n @inline\n trimRight(): String {\n return this.trimEnd();\n }\n\n trimStart(): String {\n var size = this.length << 1;\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2;\n }\n if (!offset) return this;\n size -= offset;\n if (!size) return changetype("");\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n trimEnd(): String {\n var originalSize = this.length << 1;\n var size = originalSize;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n if (!size) return changetype("");\n if (size == originalSize) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n return changetype(out); // retains\n }\n\n padStart(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var prependSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n if (prependSize > padSize) {\n let repeatCount = (prependSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = prependSize - restBase;\n memory.repeat(out, changetype(pad), padSize, repeatCount);\n memory.copy(out + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out, changetype(pad), prependSize);\n }\n memory.copy(out + prependSize, changetype(this), thisSize);\n return changetype(out); // retains\n }\n\n padEnd(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var appendSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n memory.copy(out, changetype(this), thisSize);\n if (appendSize > padSize) {\n let repeatCount = (appendSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = appendSize - restBase;\n memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount);\n memory.copy(out + thisSize + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out + thisSize, changetype(pad), appendSize);\n }\n return changetype(out); // retains\n }\n\n repeat(count: i32 = 0): String {\n var length = this.length;\n\n // Most browsers can\'t handle strings 1 << 28 chars or longer\n if (count < 0 || length * count > (1 << 28)) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n\n if (count == 0 || !length) return changetype("");\n if (count == 1) return this;\n var out = __alloc((length * count) << 1, idof());\n memory.repeat(out, changetype(this), length << 1, count);\n return changetype(out); // retains\n }\n\n replace(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var index: isize = this.indexOf(search);\n if (~index) {\n let rlen: usize = replacement.length;\n len -= slen;\n let olen = len + rlen;\n if (olen) {\n let out = __alloc(olen << 1, idof());\n memory.copy(out, changetype(this), index << 1);\n memory.copy(\n out + (index << 1),\n changetype(replacement),\n rlen << 1\n );\n memory.copy(\n out + ((index + rlen) << 1),\n changetype(this) + ((index + slen) << 1),\n (len - index) << 1\n );\n return changetype(out);\n }\n }\n return this;\n }\n\n replaceAll(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var rlen: usize = replacement.length;\n if (!slen) {\n if (!rlen) return this;\n // Special case: \'abc\'.replaceAll(\'\', \'-\') -> \'-a-b-c-\'\n let out = __alloc((len + (len + 1) * rlen) << 1, idof());\n memory.copy(out, changetype(replacement), rlen << 1);\n let offset = rlen;\n for (let i: usize = 0; i < len; ++i) {\n store(\n changetype(out) + (offset++ << 1),\n load(changetype(this) + (i << 1))\n );\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n }\n return changetype(out);\n }\n var prev: isize = 0, next: isize = 0;\n if (slen == rlen) {\n // Fast path when search and replacement have same length\n let size = len << 1;\n let out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n while (~(next = this.indexOf(search, prev))) {\n memory.copy(out + (next << 1), changetype(replacement), rlen << 1);\n prev = next + slen;\n }\n return changetype(out);\n }\n var out: usize = 0, offset: usize = 0, resLen = len;\n while (~(next = this.indexOf(search, prev))) {\n if (!out) out = __alloc(len << 1, idof());\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let chunk = next - prev;\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n chunk << 1\n );\n offset += chunk;\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n prev = next + slen;\n }\n if (offset) {\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let rest = len - prev;\n if (rest) {\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n rest << 1\n );\n }\n rest += offset;\n if (resLen > rest) out = __realloc(out, rest << 1);\n return changetype(out);\n }\n return this;\n }\n\n slice(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len = this.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end, len);\n len = end - start;\n if (len <= 0) return changetype("");\n var out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n return changetype(out); // retains\n }\n\n split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {\n if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n if (separator === null) return [this];\n var length: isize = this.length;\n var sepLen: isize = separator.length;\n if (limit < 0) limit = i32.MAX_VALUE;\n if (!sepLen) {\n if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n // split by chars\n length = min(length, limit);\n let result = __allocArray(length, alignof(), idof>());\n let resultStart = changetype(result).dataStart;\n for (let i: isize = 0; i < length; ++i) {\n let charStr = __alloc(2, idof());\n store(charStr, load(changetype(this) + (i << 1)));\n store(resultStart + (i << alignof()), charStr); // result[i] = charStr\n if (isManaged()) __retain(charStr);\n }\n return changetype>(result); // retains\n } else if (!length) {\n let result = __allocArray(1, alignof(), idof>());\n store(changetype(result).dataStart, changetype("")); // static ""\n return changetype>(result); // retains\n }\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n var end = 0, start = 0, i = 0;\n while (~(end = this.indexOf(separator, start))) {\n let len = end - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out));\n } else {\n result.push(changetype(""));\n }\n if (++i == limit) return changetype>(result); // retains\n start = end + sepLen;\n }\n if (!start) { // also means: loop above didn\'t do anything\n result.push(this);\n return changetype>(result); // retains\n }\n var len = length - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out)); // retains\n } else {\n result.push(changetype("")); // static ""\n }\n return changetype>(result); // retains\n // releases result\n }\n\n toString(): String {\n return this;\n }\n}\n\n// @ts-ignore: nolib\nexport type string = String;\n\nexport function parseInt(str: string, radix: i32 = 0): f64 {\n return strtol(str, radix);\n}\n\nexport function parseFloat(str: string): f64 {\n return strtod(str);\n}\n\n// Encoding helpers\nexport namespace String {\n\n export namespace UTF8 {\n\n export function byteLength(str: string, nullTerminated: bool = false): i32 {\n var strOff = changetype(str);\n var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var bufLen = nullTerminated ? 1 : 0;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n bufLen += 1; strOff += 2;\n } else if (c1 < 2048) {\n bufLen += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n if ((load(strOff, 2) & 0xFC00) == 0xDC00) {\n strOff += 4; bufLen += 4;\n continue;\n }\n }\n strOff += 2; bufLen += 3;\n }\n }\n return bufLen;\n }\n\n export function encode(str: string, nullTerminated: bool = false): ArrayBuffer {\n var strOff = changetype(str);\n var strEnd = changetype(str) + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(UTF8.byteLength(str, nullTerminated), idof());\n var bufOff = buf;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n store(bufOff, c1);\n bufOff += 1; strOff += 2;\n } else if (c1 < 2048) {\n store(bufOff, c1 >> 6 | 192);\n store(bufOff, c1 & 63 | 128, 1);\n bufOff += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n let c2 = load(strOff, 2);\n if ((c2 & 0xFC00) == 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n store(bufOff, c1 >> 18 | 240);\n store(bufOff, c1 >> 12 & 63 | 128, 1);\n store(bufOff, c1 >> 6 & 63 | 128, 2);\n store(bufOff, c1 & 63 | 128, 3);\n strOff += 4; bufOff += 4;\n continue;\n }\n }\n store(bufOff, c1 >> 12 | 224);\n store(bufOff, c1 >> 6 & 63 | 128, 1);\n store(bufOff, c1 & 63 | 128, 2);\n strOff += 2; bufOff += 3;\n }\n }\n if (nullTerminated) {\n assert(strOff <= strEnd);\n buf = __realloc(buf, bufOff - buf + 1);\n store(bufOff, 0);\n } else {\n assert(strOff == strEnd);\n }\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer, nullTerminated: bool = false): string {\n return decodeUnsafe(changetype(buf), buf.byteLength, nullTerminated);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated: bool = false): string {\n var bufOff = buf;\n var bufEnd = buf + len;\n assert(bufEnd >= bufOff); // guard wraparound\n var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte\n var strOff = str;\n while (bufOff < bufEnd) {\n let cp = load(bufOff++);\n if (cp < 128) {\n if (nullTerminated && !cp) break;\n store(strOff, cp);\n strOff += 2;\n } else if (cp > 191 && cp < 224) {\n if (bufEnd - bufOff < 1) break;\n store(strOff, (cp & 31) << 6 | load(bufOff++) & 63);\n strOff += 2;\n } else if (cp > 239 && cp < 365) {\n if (bufEnd - bufOff < 3) break;\n cp = (\n (cp & 7) << 18 |\n (load(bufOff) & 63) << 12 |\n (load(bufOff, 1) & 63) << 6 |\n load(bufOff, 2) & 63\n ) - 0x10000;\n bufOff += 3;\n store(strOff, 0xD800 + (cp >> 10));\n store(strOff, 0xDC00 + (cp & 1023), 2);\n strOff += 4;\n } else {\n if (bufEnd - bufOff < 2) break;\n store(strOff,\n (cp & 15) << 12 |\n (load(bufOff) & 63) << 6 |\n load(bufOff, 1) & 63\n );\n bufOff += 2; strOff += 2;\n }\n }\n return changetype(__realloc(str, strOff - str)); // retains\n }\n }\n\n export namespace UTF16 {\n\n export function byteLength(str: string): i32 {\n return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n }\n\n export function encode(str: string): ArrayBuffer {\n var size = changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(size, idof());\n memory.copy(buf, changetype(str), size);\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer): string {\n return decodeUnsafe(changetype(buf), buf.byteLength);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize): string {\n var str = __alloc(len &= ~1, idof());\n memory.copy(str, buf, len);\n return changetype(str); // retains\n }\n }\n}\n',symbol:'import { Map } from "./map";\n\n// @ts-ignore: decorator\n@lazy\nvar stringToId: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar idToString: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar nextId: usize = 12; // Symbol.unscopables + 1\n\n@unmanaged @sealed abstract class _Symbol {\n\n // TODO: all of the following default symbols are unused currently yet add to\n // binary size if #toString becomes compiled. Ultimately we\'ll most likely want\n // to remove the unsupported ones and only keep what\'s actually supported.\n\n // @ts-ignore: decorator\n @lazy\n static readonly hasInstance: symbol = changetype(1);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isConcatSpreadable: symbol = changetype(2);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isRegExp: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly iterator: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly match: symbol = changetype(4);\n\n // @ts-ignore: decorator\n @lazy\n static readonly replace: symbol = changetype(5);\n\n // @ts-ignore: decorator\n @lazy\n static readonly search: symbol = changetype(6);\n\n // @ts-ignore: decorator\n @lazy\n static readonly species: symbol = changetype(7);\n\n // @ts-ignore: decorator\n @lazy\n static readonly split: symbol = changetype(8);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toPrimitive: symbol = changetype(9);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toStringTag: symbol = changetype(10);\n\n // @ts-ignore: decorator\n @lazy\n static readonly unscopables: symbol = changetype(11);\n\n static for(key: string): symbol {\n if (!stringToId) { stringToId = new Map(); idToString = new Map(); }\n else if (stringToId.has(key)) return changetype(stringToId.get(key));\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n stringToId.set(key, id);\n idToString.set(id, key);\n return changetype(id);\n }\n\n static keyFor(sym: symbol): string | null {\n return idToString !== null && idToString.has(changetype(sym))\n ? idToString.get(changetype(sym))\n : null;\n }\n\n toString(): string {\n var id = changetype(this);\n var str = "";\n switch (id) {\n case 1: { str = "hasInstance"; break; }\n case 2: { str = "isConcatSpreadable"; break; }\n case 3: { str = "isRegExp"; break; }\n case 4: { str = "match"; break; }\n case 5: { str = "replace"; break; }\n case 6: { str = "search"; break; }\n case 7: { str = "species"; break; }\n case 8: { str = "split"; break; }\n case 9: { str = "toPrimitive"; break; }\n case 10: { str = "toStringTag"; break; }\n case 11: { str = "unscopables"; break; }\n default: {\n if (idToString !== null && idToString.has(id)) str = idToString.get(id);\n break;\n }\n }\n return "Symbol(" + str + ")";\n }\n}\n\nexport function Symbol(description: string | null = null): symbol {\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n return changetype(id);\n}\n\nexport type Symbol = _Symbol;\n\n// @ts-ignore: nolib\nexport type symbol = _Symbol;\n',table:'import { E_NOTIMPLEMENTED } from "./util/error";\n\nexport namespace table {\n\n export function copy(dst: u32, src: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function drop(elementIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n}\n',typedarray:'import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\nimport { idof } from "./builtins";\nimport { ArrayBufferView } from "./arraybuffer";\n\nexport class Int8Array extends ArrayBufferView {\n [key: number]: i8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): i8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: i8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8Array extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8ClampedArray extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return FILL(this, value, start, end);\n }\n\n sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray {\n return SORT(this, fn);\n }\n\n subarray(start: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray {\n return SUBARRAY(this, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int16Array extends ArrayBufferView {\n [key: number]: i16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint16Array extends ArrayBufferView {\n [key: number]: u16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int32Array extends ArrayBufferView {\n [key: number]: i32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint32Array extends ArrayBufferView {\n [key: number]: u32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int64Array extends ArrayBufferView {\n [key: number]: i64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint64Array extends ArrayBufferView {\n [key: number]: u64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float32Array extends ArrayBufferView {\n [key: number]: f32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float64Array extends ArrayBufferView {\n [key: number]: f64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILL(\n array: TArray,\n value: native,\n start: i32,\n end: i32\n): TArray {\n var dataStart = array.dataStart;\n var length = array.length;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (sizeof() == 1) {\n if (start < end) memory.fill(dataStart + start, value, (end - start));\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SORT(\n array: TArray,\n comparator: (a: T, b: T) => i32\n): TArray {\n var length = array.length;\n if (length <= 1) return array;\n var base = array.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b\n store(base, a); // arr[0] = a\n }\n return array;\n }\n SORT_IMPL(base, length, comparator);\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SUBARRAY(\n array: TArray,\n begin: i32,\n end: i32\n): TArray {\n var len = array.length;\n begin = begin < 0 ? max(len + begin, 0) : min(begin, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n end = max(end, begin);\n var out = changetype(__alloc(offsetof(), idof())); // retains\n out.data = array.data; // retains\n out.dataStart = array.dataStart + (begin << alignof());\n out.dataLength = (end - begin) << alignof();\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE_RIGHT(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = array.length - 1; i >= 0; i--) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction MAP(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => T,\n): TArray {\n var length = array.length;\n var dataStart = array.dataStart;\n var out = instantiate(length);\n var outDataStart = out.dataStart;\n for (let i = 0; i < length; i++) {\n store(\n outDataStart + (i << alignof()),\n fn(load(dataStart + (i << alignof())), i, array)\n );\n }\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FIND_INDEX(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): i32 {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return i;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INCLUDES(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): bool {\n return INDEX_OF(array, searchElement, fromIndex) >= 0;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0 || index >= length) return -1;\n if (index < 0) index = max(length + index, 0);\n var dataStart = array.dataStart;\n while (index < length) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n ++index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction LAST_INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0) return -1;\n if (index < 0) index = length + index; // no need to clamp\n else if (index >= length) index = length - 1;\n var dataStart = array.dataStart;\n while (index >= 0) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n --index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SOME(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return true;\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction EVERY(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) continue;\n return false;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FOREACH(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => void,\n): void {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n fn(load(dataStart + (i << alignof())), i, array);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REVERSE(array: TArray): TArray {\n var dataStart = array.dataStart;\n for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) {\n let frontPtr = dataStart + (front << alignof());\n let backPtr = dataStart + (back << alignof());\n let temp = load(frontPtr);\n store(frontPtr, load(backPtr));\n store(backPtr, temp);\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction WRAP(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): TArray {\n var bufferByteLength = buffer.byteLength;\n if (byteOffset >= bufferByteLength) {\n throw new RangeError(E_INDEXOUTOFRANGE);\n }\n var byteLength: i32;\n if (length < 0) {\n if (length == -1) {\n const mask = (1 << alignof() - 1);\n if (buffer.byteLength & mask) {\n throw new RangeError(E_INVALIDLENGTH);\n } else {\n byteLength = buffer.byteLength;\n }\n } else {\n throw new RangeError(E_INVALIDLENGTH);\n }\n } else {\n byteLength = length << alignof();\n }\n if (byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n var out = changetype(__alloc(offsetof(), idof()));\n out.data = buffer;\n out.dataLength = byteLength;\n out.dataStart = changetype(buffer) + byteOffset;\n return out;\n}\n',"util/error":'// Common error messages for use accross the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = "Index out of range";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = "Invalid length";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = "Array is empty";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = "Element type must be nullable if array is holey";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = "Not implemented";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = "Key does not exist";\n',"util/hash":"// @ts-ignore: decorator\n@inline\nexport function HASH(key: T): u32 {\n if (isString()) {\n return hashStr(changetype(key));\n } else if (isReference()) {\n if (sizeof() == 4) return hash32(changetype(key));\n if (sizeof() == 8) return hash64(changetype(key));\n } else if (isFloat()) {\n if (sizeof() == 4) return hash32(reinterpret(f32(key)));\n if (sizeof() == 8) return hash64(reinterpret(f64(key)));\n } else {\n if (sizeof() == 1) return hash8 (u32(key));\n if (sizeof() == 2) return hash16(u32(key));\n if (sizeof() == 4) return hash32(u32(key));\n if (sizeof() == 8) return hash64(u64(key));\n }\n return unreachable();\n}\n\n// FNV-1a 32-bit as a starting point, see: http://isthe.com/chongo/tech/comp/fnv/\n\n// @ts-ignore: decorator\n@inline\nconst FNV_OFFSET: u32 = 2166136261;\n\n// @ts-ignore: decorator\n@inline\nconst FNV_PRIME: u32 = 16777619;\n\nfunction hash8(key: u32): u32 {\n return (FNV_OFFSET ^ key) * FNV_PRIME;\n}\n\nfunction hash16(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 8 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash32(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash64(key: u64): u32 {\n var l = key;\n var h = (key >>> 32);\n var v = FNV_OFFSET;\n v = (v ^ ( l & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( l >> 24 )) * FNV_PRIME;\n v = (v ^ ( h & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( h >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hashStr(key: string): u32 {\n var v = FNV_OFFSET;\n if (key !== null) {\n for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) {\n v = (v ^ load(changetype(key) + i)) * FNV_PRIME;\n }\n }\n return v;\n}\n","util/memory":"export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n let w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 2: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 3: {\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c\n if (dest === src) return;\n if (ASC_SHRINK_LEVEL < 1) {\n if (src + n <= dest || dest + n <= src) {\n memcpy(dest, src, n);\n return;\n }\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, c);\n --n;\n }\n } else {\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n let k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n let c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n let c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c\n if (vl == vr) return 0;\n while (n != 0 && load(vl) == load(vr)) {\n n--; vl++; vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","util/number":'/// \n\nimport { idof } from "../builtins";\nimport { CharCode } from "./string";\nimport { ArrayBufferView } from "../arraybuffer";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline\nconst POWERS10: u32[] = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\n "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\n "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\n "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\n "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\n "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\n "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\n "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\n "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\n "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"\n*/\n// @ts-ignore: decorator\n@lazy @inline\nconst DIGITS: u32[] = [\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n];\n\n// @ts-ignore: decorator\n@lazy @inline\nconst EXP_POWERS: i16[] = [\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n];\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline\nconst FRC_POWERS: u64[] = [\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n];\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return select(1, 2, value < 10);\n } else {\n let m = select(4, 5, value < 10000);\n return select(3, m, value < 1000);\n }\n } else {\n if (value < 10000000) {\n return select(6, 7, value < 1000000);\n } else {\n let m = select(9, 10, value < 1000000000);\n return select(8, m, value < 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n let m = select(11, 12, value < 100000000000);\n return select(10, m, value < 10000000000);\n } else {\n let m = select(14, 15, value < 100000000000000);\n return select(13, m, value < 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return select(16, 17, value < 10000000000000000);\n } else {\n let m = select(19, 20, value < 10000000000000000000);\n return select(18, m, value < 1000000000000000000);\n }\n }\n}\n\nfunction utoa32_lut(buffer: usize, num: u32, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(lut + (d1 << alignof()));\n let digits2 = load(lut + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(lut + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(lut + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_lut(buffer: usize, num: u64, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(lut + (c1 << alignof()));\n let digits2 = load(lut + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(lut + (b1 << alignof()));\n digits2 = load(lut + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_lut(buffer, num, offset);\n}\n\nfunction utoa_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset -= 1;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_core(buffer: usize, num: u32, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa32_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa64_core(buffer: usize, num: u64, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa64_lut(buffer, num, offset);\n }\n}\n\nexport function utoa32(value: u32): String {\n if (!value) return "0";\n\n var decimals = decimalCount32(value);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n return changetype(out); // retains\n}\n\nexport function itoa32(value: i32): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var decimals = decimalCount32(value) + u32(sign);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n if (sign) store(out, CharCode.MINUS);\n return changetype(out); // retains\n}\n\nexport function utoa64(value: u64): String {\n if (!value) return "0";\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n return changetype(out); // retains\n}\n\nexport function itoa64(value: i64): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n if (sign) store(out, CharCode.MINUS);\n\n return changetype(out); // retains\n}\n\nexport function itoa(value: T): String {\n if (!isInteger()) ERROR("integer type expected");\n if (isSigned()) {\n if (sizeof() <= 4) {\n return itoa32(value);\n } else {\n return itoa64(value);\n }\n } else {\n if (sizeof() <= 4) {\n return utoa32(value);\n } else {\n return utoa64(value);\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = unchecked(FRC_POWERS[index]);\n _exp_pow = unchecked(EXP_POWERS[index]);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = ((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp != 0) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n var wp_w_exp = mp_exp;\n\n var p1 = (mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n var lut = changetype(POWERS10).dataStart;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(lut + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (1) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(lut + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n\n return len;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nexport function dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\nexport function dtoa(value: f64): String {\n if (value == 0) return "0.0";\n if (!isFinite(value)) {\n if (isNaN(value)) return "NaN";\n return select("-Infinity", "Infinity", value < 0);\n }\n var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof());\n var length = dtoa_core(buffer, value);\n if (length == MAX_DOUBLE_LENGTH) return changetype(buffer);\n var result = changetype(buffer).substring(0, length);\n __free(buffer);\n return result;\n}\n\nexport function itoa_stream(buffer: usize, offset: usize, value: T): u32 {\n buffer += (offset << 1);\n if (!value) {\n store(buffer, CharCode._0);\n return 1;\n }\n var decimals: u32 = 0;\n if (isSigned()) {\n let sign = i32(value < 0);\n if (sign) value = changetype(-value);\n if (sizeof() <= 4) {\n decimals = decimalCount32(value) + sign;\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32) + sign;\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value) + sign;\n utoa64_core(buffer, value, decimals);\n }\n }\n if (sign) store(buffer, CharCode.MINUS);\n } else {\n if (sizeof() <= 4) {\n decimals = decimalCount32(value);\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value);\n utoa64_core(buffer, value, decimals);\n }\n }\n }\n return decimals;\n}\n\nexport function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {\n buffer += (offset << 1);\n if (value == 0.0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = i32(value < 0);\n let len = 8 + sign;\n memory.copy(buffer, changetype(select("-Infinity", "Infinity", sign)), len << 1);\n return len;\n }\n }\n return dtoa_core(buffer, value);\n}\n',"util/sort":'import { compareImpl } from "./string";\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): (a: T, b: T) => i32 {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a: T, b: T): i32 => (i32(a) - i32(b));\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= (ia >> 31) >>> 1;\n ib ^= (ib >> 31) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= (ia >> 63) >>> 1;\n ib ^= (ib >> 63) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a: T, b: T): i32 => {\n if (a === b || a === null || b === null) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!alen && !blen) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n return compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen));\n };\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function SORT(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n if (isReference()) {\n // TODO replace this to faster stable sort (TimSort) when it implemented\n insertionSort(dataStart, length, comparator);\n } else {\n if (length < 256) {\n insertionSort(dataStart, length, comparator);\n } else {\n weakHeapSort(dataStart, length, comparator);\n }\n }\n}\n\nfunction insertionSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n for (let i = 0; i < length; i++) {\n let a: T = load(dataStart + (i << alignof())); // a = arr[i]\n let j = i - 1;\n while (j >= 0) {\n let b: T = load(dataStart + (j << alignof())); // b = arr[j]\n if (comparator(a, b) < 0) {\n store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b\n } else break;\n }\n store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a\n }\n}\n\nfunction weakHeapSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n const shift32 = alignof();\n\n var bitsetSize = (length + 31) >> 5 << shift32;\n var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below\n memory.fill(bitset, 0, bitsetSize);\n\n // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf\n\n for (let i = length - 1; i > 0; i--) {\n let j = i;\n while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1;\n\n let p = j >> 1;\n let a: T = load(dataStart + (p << alignof())); // a = arr[p]\n let b: T = load(dataStart + (i << alignof())); // b = arr[i]\n if (comparator(a, b) < 0) {\n store(\n bitset + (i >> 5 << shift32),\n load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31))\n );\n store(dataStart + (i << alignof()), a); // arr[i] = a\n store(dataStart + (p << alignof()), b); // arr[p] = b\n }\n }\n\n for (let i = length - 1; i >= 2; i--) {\n let a: T = load(dataStart); // a = arr[0]\n store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i]\n store(dataStart + (i << alignof()), a); // arr[i] = a\n\n let x = 1, y: i32;\n while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y;\n\n while (x > 0) {\n a = load(dataStart); // a = arr[0]\n let b: T = load(dataStart + (x << alignof())); // b = arr[x]\n\n if (comparator(a, b) < 0) {\n store(\n bitset + (x >> 5 << shift32),\n load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31))\n );\n store(dataStart + (x << alignof()), a); // arr[x] = a\n store(dataStart, b); // arr[0] = b\n }\n x >>= 1;\n }\n }\n\n __free(bitset);\n\n var t: T = load(dataStart, sizeof()); // t = arr[1]\n store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0]\n store(dataStart, t); // arr[0] = t\n}\n',"util/string":"export function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var result = 0;\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n while (len && !(result = load(ptr1) - load(ptr2))) {\n --len, ptr1 += 2, ptr2 += 2;\n }\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function isSpace(c: i32): bool {\n if (c <= 0xFF) {\n switch (c) {\n case 0x09: // \n case 0x0A: // \n case 0x0B: // \n case 0x0C: // \n case 0x0D: // \n case 0x20: // \n case 0xA0: return true; // \n }\n return false;\n }\n if (c >= 0x2000 && c <= 0x200A) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // determine sign\n // @ts-ignore: cast\n var sign: T = 1;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n // @ts-ignore: type\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2)) {\n case CharCode.B:\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.O:\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.X:\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n default: radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n while (len--) {\n code = load(ptr);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else break;\n if (code >= radix) break;\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\n// FIXME: naive implementation\nexport function strtod(str: string): f64 {\n var len: i32 = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n // determine sign\n var sign = 1.0;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1.0;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // calculate value\n var num = 0.0;\n while (len--) {\n code = load(ptr);\n if (code == CharCode.DOT) {\n ptr += 2;\n let fac = 0.1; // precision :(\n while (len--) {\n code = load(ptr);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) break;\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) break;\n num = num * 10 + code;\n ptr += 2;\n }\n return sign * num;\n}\n",vector:"/** Vector abstraction. */\n@sealed @unmanaged\nexport abstract class V128 {\n}\n"}):(()=>{const e=path.join(".","..","std","assembly"),n=__webpack_require__(!function(){var e=new Error("Cannot find module 'glob'");throw e.code="MODULE_NOT_FOUND",e}()).sync("**/!(*.d).ts",{cwd:e}),t={nearEntry:fs.readFileSync(nearLibEntry,"utf8")};return n.forEach(n=>t[n.replace(/\.ts$/,"")]=fs.readFileSync(path.join(e,n),"utf8")),t})(),exports.definitionFiles=exports.isBundle?Object({assembly:'/**\n * Environment definitions for compiling AssemblyScript to WebAssembly using asc.\n * @module std/assembly\n *//***/\n\n/// \n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = boolean | number;\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n/** A 128-bit vector. */\ndeclare type v128 = object;\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n/** Whether the bulk memory feature is enabled. */\ndeclare const ASC_FEATURE_BULK_MEMORY: bool;\n/** Whether the SIMD feature is enabled. */\ndeclare const ASC_FEATURE_SIMD: bool;\n/** Whether the threads feature is enabled. */\ndeclare const ASC_FEATURE_THREADS: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, immOffset?: usize, immAlign?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const __heap_base: usize;\n/** Determines the byte size of the specified underlying core type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Determines the alignment (log2) of the specified underlying core type. Compiles to a constant. */\ndeclare function alignof(): usize;\n/** Determines the end offset of the given class type. Compiles to a constant. */\ndeclare function offsetof(): usize;\n/** Determines the offset of the specified field within the given class type. Compiles to a constant. */\ndeclare function offsetof(fieldName: keyof T | string): usize;\n/** Determines the offset of the specified field within the given class type. Returns the class type\'s end offset if field name has been omitted. Compiles to a constant. */\ndeclare function offsetof(fieldName?: string): usize;\n/** Determines the name of a given type. */\ndeclare function nameof(value?: T): string;\n/** Determines the unique runtime id of a class type. Compiles to a constant. */\ndeclare function idof(): u32;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Emits a `call_indirect` instruction, calling the specified function in the function table by index with the specified arguments. Does result in a runtime error if the arguments do not match the called function. */\ndeclare function call_indirect(target: Function | u32, ...args: any[]): T;\n/** Emits a `call` instruction, calling the specified function in the function table directly with the specified arguments. Function index must be a compile-time constant. */\ndeclare function call_direct(target: Function | u32, ...args: any[]): T;\n/** Instantiates a new instance of `T` using the specified constructor arguments. */\ndeclare function instantiate(...args: any[]): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */\ndeclare function isInteger(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */\ndeclare function isFloat(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a boolean type. */\ndeclare function isBoolean(value?: any): value is number;\n/** Tests if the specified type *or* expression can represent negative numbers. Compiles to a constant. */\ndeclare function isSigned(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a reference type. Compiles to a constant. */\ndeclare function isReference(value?: any): value is object | string;\n/** Tests if the specified type *or* expression can be used as a string. Compiles to a constant. */\ndeclare function isString(value?: any): value is string | String;\n/** Tests if the specified type *or* expression can be used as an array. Compiles to a constant. */\ndeclare function isArray(value?: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. Compiles to a constant. */\ndeclare function isArrayLike(value?: any): value is ArrayLike;\n/** Tests if the specified type *or* expression is of a function type. Compiles to a constant. */\ndeclare function isFunction(value?: any): value is (...args: any) => any;\n/** Tests if the specified type *or* expression is of a nullable reference type. Compiles to a constant. */\ndeclare function isNullable(value?: any): bool;\n/** Tests if the specified expression resolves to a defined element. Compiles to a constant. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. Compiles to a constant. */\ndeclare function isConstant(expression: any): bool;\n/** Tests if the specified type *or* expression is of a managed type. Compiles to a constant. */\ndeclare function isManaged(value?: any): bool;\n/** Tests if the specified type is void. Compiles to a constant. */\ndeclare function isVoid(): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n/** Returns the number of parameters in the given function signature type. */\ndeclare function lengthof any>(func?: T): i32;\n\n/** Atomic operations. */\ndeclare namespace atomic {\n /** Atomically loads an integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): T;\n /** Atomically stores an integer value to memory. */\n export function store(offset: usize, value: T, immOffset?: usize): void;\n /** Atomically adds an integer value in memory. */\n export function add(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically subtracts an integer value in memory. */\n export function sub(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise AND operation on an integer value in memory. */\n export function and(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise OR operation on an integer value in memory. */\n export function or(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise XOR operation on an integer value in memory. */\n export function xor(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically exchanges an integer value in memory. */\n export function xchg(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically compares and exchanges an integer value in memory if the condition is met. */\n export function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n /** Performs a wait operation on an address in memory suspending this agent if the integer condition is met. */\n export function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n /** Performs a notify operation on an address in memory waking up suspended agents. */\n export function notify(ptr: usize, count: i32): i32;\n}\n\n/** Describes the result of an atomic wait operation. */\ndeclare enum AtomicWaitResult {\n /** Woken by another agent. */\n OK,\n /** Loaded value did not match the expected value. */\n NOT_EQUAL,\n /** Not woken before the timeout expired. */\n TIMED_OUT\n}\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i8;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Loads an 8-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 32-bit integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 32-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 32-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i32;\n /** Atomically stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize): void;\n /** Performs a wait operation on a 32-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n /** Atomic 32-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 32-bit integer value in memory. */\n export function add(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts a 32-bit integer value in memory. */\n export function sub(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 32-bit integer value in memory. */\n export function and(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 32-bit integer value in memory. */\n export function or(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 32-bit integer value in memory. */\n export function xor(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 32-bit integer value in memory. */\n export function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 32-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: any): i64;\ndeclare namespace i64 {\n /** Smallest representable value. */\n export const MIN_VALUE: i64;\n /** Largest representable value. */\n export const MAX_VALUE: i64;\n /** Loads an 8-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 64-bit unsigned integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 64-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 64-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i64;\n /** Atomically stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize): void;\n /** Performs a wait operation on a 64-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n /** Atomic 64-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 32-bit values. */\n export namespace rmw32 {\n /** Atomically adds a 32-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 32-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 32-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 32-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 32-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 32-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 32-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 64-bit integer value in memory. */\n export function add(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 64-bit integer value in memory. */\n export function sub(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 64-bit integer value in memory. */\n export function and(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 64-bit integer value in memory. */\n export function or(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 64-bit integer value in memory. */\n export function xor(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 64-bit integer value in memory. */\n export function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 64-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare var isize: typeof i32 | typeof i64;\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): i8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): i8;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): i32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: any): i64;\ndeclare namespace u64 {\n /** Smallest representable value. */\n export const MIN_VALUE: u64;\n /** Largest representable value. */\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare var usize: typeof u32 | typeof u64;\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Loads a 32-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n /** Stores a 32-bit float to memory. */\n export function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Loads a 64-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n /** Stores a 64-bit float to memory. */\n export function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function v128(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace v128 {\n /** Creates a 128-bit vector with identical lanes. */\n export function splat(x: T): v128;\n /** Extracts one lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): T;\n /** Replaces one lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: T): v128;\n /** Selects lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n /** Loads a 128-bit vector from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n /** Stores a 128-bit vector to memory. */\n export function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n /** Adds each lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128; // except i64\n /** Divides each lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each lane of two 128-bit vectors using saturation. */\n export function add_saturate(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors using saturation. */\n export function sub_saturate(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise right shift on each lane of a 128-bit vector by a scalar. */\n export function shr(a: v128, b: i32): v128;\n /** Performs the bitwise AND operation on each lane of two 128-bit vectors. */\n export function and(a: v128, b: v128): v128;\n /** Performs the bitwise OR operation on each lane of two 128-bit vectors. */\n export function or(a: v128, b: v128): v128;\n /** Performs the bitwise XOR operation on each lane of two 128-bit vectors. */\n export function xor(a: v128, b: v128): v128;\n /** Performs the bitwise NOT operation on each lane of a 128-bit vector. */\n export function not(a: v128): v128;\n /** Selects bits of either 128-bit vector according to the specified mask. */\n export function bitselect(v1: v128, v2: v128, mask: v128): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes the minimum of each lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each lane of a 128-bit vector from integer to floating point. */\n export function convert(a: v128): v128;\n /** Truncates each lane of a 128-bit vector from floating point to integer with saturation. */\n export function trunc(a: v128): v128;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace i8x16 {\n /** Creates a vector with sixteen identical 8-bit integer lanes. */\n export function splat(x: i8): v128;\n /** Extracts one 8-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i8;\n /** Extracts one 8-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u8;\n /** Replaces one 8-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i8): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 8-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 8-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */\ndeclare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\ndeclare namespace i16x8 {\n /** Creates a vector with eight identical 16-bit integer lanes. */\n export function splat(x: i16): v128;\n /** Extracts one 16-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i16;\n /** Extracts one 16-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u16;\n /** Replaces one 16-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i16): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 16-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 16-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */\ndeclare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\ndeclare namespace i32x4 {\n /** Creates a 128-bit vector with four identical 32-bit integer lanes. */\n export function splat(x: i32): v128;\n /** Extracts one 32-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i32;\n /** Replaces one 32-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i32): v128;\n /** Adds each 32-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 32-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f32x4_sat(a: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f32x4_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */\ndeclare function i64x2(a: i64, b: i64): v128;\ndeclare namespace i64x2 {\n /** Creates a 128-bit vector with two identical 64-bit integer lanes. */\n export function splat(x: i64): v128;\n /** Extracts one 64-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i64;\n /** Replaces one 64-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i64): v128;\n /** Adds each 64-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 64-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Truncates each 64-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f64x2_sat(a: v128): v128;\n /** Truncates each 64-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f64x2_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */\ndeclare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\ndeclare namespace f32x4 {\n /** Creates a 128-bit vector with four identical 32-bit float lanes. */\n export function splat(x: f32): v128;\n /** Extracts one 32-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f32;\n /** Replaces one 32-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f32): v128;\n /** Adds each 32-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 32-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 32-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 32-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 32-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 32-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 32-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 32-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i32x4(a: v128): v128;\n /** Converts each 32-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i32x4(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */\ndeclare function f64x2(a: f64, b: f64): v128;\ndeclare namespace f64x2 {\n /** Creates a 128-bit vector with two identical 64-bit float lanes. */\n export function splat(x: f64): v128;\n /** Extracts one 64-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f64;\n /** Replaces one 64-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f64): v128;\n /** Adds each 64-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 64-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 64-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 64-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 64-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 64-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 64-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 64-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i64x2(a: v128): v128;\n /** Converts each 64-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i64x2(a: v128): v128;\n}\ndeclare namespace v8x16 {\n /** Selects 8-bit lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128;\n}\n/** Macro type evaluating to the underlying native WebAssembly type. */\ndeclare type native = T;\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type ReturnType any> = T extends (...args: any) => infer R ? R : any;\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type returnof any> = ReturnType;\n\n/** Pseudo-class representing the backing class of integer types. */\ndeclare class _Integer {\n /** Smallest representable value. */\n static readonly MIN_VALUE: number;\n /** Largest representable value. */\n static readonly MAX_VALUE: number;\n /** Converts a string to an integer of this type. */\n static parseInt(value: string, radix?: number): number;\n /** Converts this integer to a string. */\n toString(): string;\n}\n\n/** Pseudo-class representing the backing class of floating-point types. */\ndeclare class _Float {\n /** Difference between 1 and the smallest representable value greater than 1. */\n static readonly EPSILON: f32 | f64;\n /** Smallest representable value. */\n static readonly MIN_VALUE: f32 | f64;\n /** Largest representable value. */\n static readonly MAX_VALUE: f32 | f64;\n /** Smallest safely representable integer value. */\n static readonly MIN_SAFE_INTEGER: f32 | f64;\n /** Largest safely representable integer value. */\n static readonly MAX_SAFE_INTEGER: f32 | f64;\n /** Value representing positive infinity. */\n static readonly POSITIVE_INFINITY: f32 | f64;\n /** Value representing negative infinity. */\n static readonly NEGATIVE_INFINITY: f32 | f64;\n /** Value representing \'not a number\'. */\n static readonly NaN: f32 | f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n static isNaN(value: f32 | f64): bool;\n /** Returns true if passed value is finite. */\n static isFinite(value: f32 | f64): bool;\n /** Returns true if the value passed is a safe integer. */\n static isSafeInteger(value: f32 | f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n static isInteger(value: f32 | f64): bool;\n /** Converts a string to an integer. */\n static parseInt(value: string, radix?: i32): f32 | f64;\n /** Converts a string to a floating-point number. */\n static parseFloat(value: string): f32 | f64;\n /** Converts this floating-point number to a string. */\n toString(this: f64): string;\n}\n\n/** Backing class of signed 8-bit integers. */\ndeclare const I8: typeof _Integer;\n/** Backing class of signed 16-bit integers. */\ndeclare const I16: typeof _Integer;\n/** Backing class of signed 32-bit integers. */\ndeclare const I32: typeof _Integer;\n/** Backing class of signed 64-bit integers. */\ndeclare const I64: typeof _Integer;\n/** Backing class of signed size integers. */\ndeclare const Isize: typeof _Integer;\n/** Backing class of unsigned 8-bit integers. */\ndeclare const U8: typeof _Integer;\n/** Backing class of unsigned 16-bit integers. */\ndeclare const U16: typeof _Integer;\n/** Backing class of unsigned 32-bit integers. */\ndeclare const U32: typeof _Integer;\n/** Backing class of unsigned 64-bit integers. */\ndeclare const U64: typeof _Integer;\n/** Backing class of unsigned size integers. */\ndeclare const Usize: typeof _Integer;\n/** Backing class of 32-bit floating-point values. */\ndeclare const F32: typeof _Float;\n/** Backing class of 64-bit floating-point values. */\ndeclare const F64: typeof _Float;\n\n// User-defined diagnostic macros\n\n/** Emits a user-defined diagnostic error when encountered. */\ndeclare function ERROR(message?: any): void;\n/** Emits a user-defined diagnostic warning when encountered. */\ndeclare function WARNING(message?: any): void;\n/** Emits a user-defined diagnostic info when encountered. */\ndeclare function INFO(message?: any): void;\n\n// Polyfills\n\n/** Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Whether the memory managed interface is implemented. */\n export const implemented: bool;\n /** Returns the current memory size in units of pages. One page is 64kb. */\n export function size(): i32;\n /** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\n export function grow(value: i32): i32;\n /** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\n export function fill(dst: usize, value: u8, count: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n export function copy(dst: usize, src: usize, n: usize): void;\n /** Repeats `src` of length `srcLength` `count` times at `dst`. */\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void;\n /** Copies elements from a passive element segment to a table. */\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void;\n /** Prevents further use of a passive element segment. */\n export function drop(segmentIndex: u32): void;\n /** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\n export function compare(vl: usize, vr: usize, n: usize): i32;\n}\n\n/** Garbage collector operations. */\ndeclare namespace gc {\n /** Whether the garbage collector interface is implemented. */\n export const implemented: bool;\n /** Performs a full garbage collection cycle. */\n export function collect(): void;\n /** Retains a reference, making sure that it doesn\'t become collected. */\n export function retain(ref: usize): void;\n /** Releases a reference, allowing it to become collected. */\n export function release(ref: usize): void;\n}\n\n/** Table operations. */\ndeclare namespace table {\n /** Copies elements from a passive element segment to a table. */\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void;\n /** Prevents further use of a passive element segment. */\n export function drop(elementIndex: u32): void;\n /** Copies elements from one region of a table to another region. */\n export function copy(dest: u32, src: u32, n: u32): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer\'s bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform\'s endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getInt64()` method gets a signed 64-bit integer (long long) at the specified byte offset from the start of the `DataView`. */\n getInt64(byteOffset: i32, littleEndian?: boolean): i64;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `getUint64()` method gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the `DataView`. */\n getUint64(byteOffset: i32, littleEndian?: boolean): u64;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setInt64()` method stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the `DataView`. */\n setInt64(byteOffset: i32, value: i64, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** The `setUint64()` method stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the `DataView`. */\n setUint64(byteOffset: i32, value: u64, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ninterface ArrayLike {\n length: i32;\n // [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\n/* @internal */\ndeclare abstract class TypedArray implements ArrayBufferView {\n [key: number]: T;\n /** Number of bytes per element. */\n static readonly BYTES_PER_ELEMENT: usize;\n /** Wrap an ArrayBuffer */\n static wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray;\n /** Constructs a new typed array. */\n constructor(length: i32);\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n /** The length (in elements). */\n readonly length: i32;\n /** The includes() method determines whether a typed array includes a certain element, returning true or false as appropriate. */\n includes(searchElement: T, fromIndex?: i32): bool;\n /** The indexOf() method returns the first index at which a given element can be found in the typed array, or -1 if it is not present. */\n indexOf(searchElement: T, fromIndex?: i32): i32;\n /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */\n subarray(begin?: i32, end?: i32): this;\n /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */\n reduce(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */\n reduceRight(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/\n some(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/\n map(callbackfn: (value: T, index: i32, self: this) => T): this;\n /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */\n sort(callback?: (a: T, b: T) => i32): this;\n /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */\n fill(value: T, start?: i32, end?: i32): this;\n /** The findIndex() method returns an index in the typed array, if an element in the typed array satisfies the provided testing function. Otherwise -1 is returned. See also the find() [not implemented] method, which returns the value of a found element in the typed array instead of its index. */\n findIndex(callbackfn: (value: T, index: i32, self: this) => bool): i32;\n /** The every() method tests whether all elements in the typed array pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.every(). */\n every(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The forEach() method executes a provided function once per array element. This method has the same algorithm as Array.prototype.forEach().*/\n forEach(callbackfn: (value: T, index: i32, self: this) => void): void;\n /** The reverse() method reverses a typed array in place. The first typed array element becomes the last and the last becomes the first. This method has the same algorithm as Array.prototype.reverse(). */\n reverse(): this;\n}\n\n/** An array of twos-complement 8-bit signed integers. */\ndeclare class Int8Array extends TypedArray {}\n/** An array of 8-bit unsigned integers. */\ndeclare class Uint8Array extends TypedArray {}\n/** A clamped array of 8-bit unsigned integers. */\ndeclare class Uint8ClampedArray extends TypedArray {}\n/** An array of twos-complement 16-bit signed integers. */\ndeclare class Int16Array extends TypedArray {}\n/** An array of 16-bit unsigned integers. */\ndeclare class Uint16Array extends TypedArray {}\n/** An array of twos-complement 32-bit signed integers. */\ndeclare class Int32Array extends TypedArray {}\n/** An array of 32-bit unsigned integers. */\ndeclare class Uint32Array extends TypedArray {}\n/** An array of twos-complement 64-bit signed integers. */\ndeclare class Int64Array extends TypedArray {}\n/** An array of 64-bit unsigned integers. */\ndeclare class Uint64Array extends TypedArray {}\n/** An array of 32-bit floating point numbers. */\ndeclare class Float32Array extends TypedArray {}\n/** An array of 64-bit floating point numbers. */\ndeclare class Float64Array extends TypedArray {}\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n\n /** Tests if a value is an array. */\n static isArray(value: any): value is Array;\n /** Creates a new array with at least the specified capacity and length zero. */\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\n/** Class representing a fixed sequence of values of type `T`. */\ndeclare class FixedArray {\n [key: number]: T;\n readonly length: i32;\n constructor(capacity?: i32);\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(start: i32, end?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n repeat(count?: i32): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\ndeclare namespace String {\n /** Encoding helpers for UTF-8. */\n export namespace UTF8 {\n /** Calculates the byte length of the specified string when encoded as UTF-8, optionally null terminated. */\n export function byteLength(str: string, nullTerminated?: bool): i32;\n /** Encodes the specified string to UTF-8 bytes, optionally null terminated. */\n export function encode(str: string, nullTerminated?: bool): ArrayBuffer;\n /** Decodes the specified buffer from UTF-8 bytes to a string, optionally null terminated. */\n export function decode(buf: ArrayBuffer, nullTerminated?: bool): string;\n /** Decodes raw UTF-8 bytes to a string, optionally null terminated. */\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated?: bool): string;\n }\n /** Encoding helpers for UTF-16. */\n export namespace UTF16 {\n /** Calculates the byte length of the specified string when encoded as UTF-16. */\n export function byteLength(str: string): i32;\n /** Encodes the specified string to UTF-16 bytes. */\n export function encode(str: string): ArrayBuffer;\n /** Decodes the specified buffer from UTF-16 bytes to a string. */\n export function decode(buf: ArrayBuffer): string;\n /** Decodes raw UTF-16 bytes to a string. */\n export function decodeUnsafe(buf: usize, len: usize): string;\n }\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ninterface Boolean {\n toString(): string;\n}\ninterface Function {}\ninterface IArguments {}\ninterface Number {\n toString(radix?: number): string;\n}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Map {\n readonly size: i32;\n has(key: K): bool;\n set(key: K, value: V): void;\n get(key: K): V;\n delete(key: K): bool;\n clear(): void;\n keys(): K[]; // preliminary\n values(): V[]; // preliminary\n toString(): string;\n}\n\ndeclare class Set {\n readonly size: i32;\n has(value: K): bool;\n add(value: K): void;\n delete(value: K): bool;\n clear(): void;\n values(): K[]; // preliminary\n toString(): string;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\n\ndeclare const Symbol: SymbolConstructor;\n\ninterface IMath {\n /** The base of natural logarithms, e, approximately 2.718. */\n readonly E: T;\n /** The natural logarithm of 2, approximately 0.693. */\n readonly LN2: T;\n /** The natural logarithm of 10, approximately 2.302. */\n readonly LN10: T;\n /** The base 2 logarithm of e, approximately 1.442. */\n readonly LOG2E: T;\n /** The base 10 logarithm of e, approximately 0.434. */\n readonly LOG10E: T;\n /** The ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n readonly PI: T;\n /** The square root of 1/2, approximately 0.707. */\n readonly SQRT1_2: T;\n /** The square root of 2, approximately 1.414. */\n readonly SQRT2: T;\n /** Returns the absolute value of `x`. */\n abs(x: T): T;\n /** Returns the arccosine (in radians) of `x`. */\n acos(x: T): T;\n /** Returns the hyperbolic arc-cosine of `x`. */\n acosh(x: T): T;\n /** Returns the arcsine (in radians) of `x`. */\n asin(x: T): T;\n /** Returns the hyperbolic arcsine of `x`. */\n asinh(x: T): T;\n /** Returns the arctangent (in radians) of `x`. */\n atan(x: T): T;\n /** Returns the arctangent of the quotient of its arguments. */\n atan2(y: T, x: T): T;\n /** Returns the hyperbolic arctangent of `x`. */\n atanh(x: T): T;\n /** Returns the cube root of `x`. */\n cbrt(x: T): T;\n /** Returns the smallest integer greater than or equal to `x`. */\n ceil(x: T): T;\n /** Returns the number of leading zero bits in the 32-bit binary representation of `x`. */\n clz32(x: T): T;\n /** Returns the cosine (in radians) of `x`. */\n cos(x: T): T;\n /** Returns the hyperbolic cosine of `x`. */\n cosh(x: T): T;\n /** Returns e to the power of `x`. */\n exp(x: T): T;\n /** Returns e to the power of `x`, minus 1. */\n expm1(x: T): T;\n /** Returns the largest integer less than or equal to `x`. */\n floor(x: T): T;\n /** Returns the nearest 32-bit single precision float representation of `x`. */\n fround(x: T): T;\n /** Returns the square root of the sum of squares of its arguments. */\n hypot(value1: T, value2: T): T; // TODO: rest\n /** Returns the result of the C-like 32-bit multiplication of `a` and `b`. */\n imul(a: T, b: T): T;\n /** Returns the natural logarithm (base e) of `x`. */\n log(x: T): T;\n /** Returns the base 10 logarithm of `x`. */\n log10(x: T): T;\n /** Returns the natural logarithm (base e) of 1 + `x`. */\n log1p(x: T): T;\n /** Returns the base 2 logarithm of `x`. */\n log2(x: T): T;\n /** Returns the largest-valued number of its arguments. */\n max(value1: T, value2: T): T; // TODO: rest\n /** Returns the lowest-valued number of its arguments. */\n min(value1: T, value2: T): T; // TODO: rest\n /** Returns `base` to the power of `exponent`. */\n pow(base: T, exponent: T): T;\n /** Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0. */\n random(): T;\n /** Returns the value of `x` rounded to the nearest integer. */\n round(x: T): T;\n /** Returns the sign of `x`, indicating whether the number is positive, negative or zero. */\n sign(x: T): T;\n /** Returns whether the sign bit of `x` is set. */\n signbit(x: T): bool;\n /** Returns the sine of `x`. */\n sin(x: T): T;\n /** Returns the hyperbolic sine of `x`. */\n sinh(x: T): T;\n /** Returns the square root of `x`. */\n sqrt(x: T): T;\n /** Returns the tangent of `x`. */\n tan(x: T): T;\n /** Returns the hyperbolic tangent of `x`. */\n tanh(x: T): T;\n /** Returns the integer part of `x` by removing any fractional digits. */\n trunc(x: T): T;\n}\n\ninterface INativeMath extends IMath {\n /** Contains sin value produced after Math/Mathf.sincos */\n sincos_sin: T;\n /** Contains cos value produced after Math/Mathf.sincos */\n sincos_cos: T;\n /** Seeds the random number generator. */\n seedRandom(value: i64): void;\n /** Returns the floating-point remainder of `x / y` (rounded towards zero). */\n mod(x: T, y: T): T;\n /** Returns the floating-point remainder of `x / y` (rounded to nearest). */\n rem(x: T, y: T): T;\n /** Returns sin and cos simultaneously for same angle. Results stored to `sincos_s32/64` and `sincos_c32/64` globals */\n sincos(x: T): void;\n}\n\n/** Double precision math imported from JavaScript. */\ndeclare const JSMath: IMath;\n/** Double precision math implemented natively. */\ndeclare const NativeMath: INativeMath;\n/** Single precision math implemented natively. */\ndeclare const NativeMathf: INativeMath;\n/** Alias of {@link NativeMath} or {@link JSMath} respectively. Defaults to `NativeMath`. */\ndeclare const Math: IMath;\n/** Alias of {@link NativeMathf} or {@link JSMath} respectively. Defaults to `NativeMathf`. */\ndeclare const Mathf: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): i64;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): i64;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: i64);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): i64;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: i64): i64;\n}\n\n/** Environmental tracing function for debugging purposes. */\ndeclare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: f64, a4?: f64): void;\n\n// Decorators\n\ninterface TypedPropertyDescriptor {\n configurable?: boolean;\n enumerable?: boolean;\n writable?: boolean;\n value?: T;\n get?(): T;\n set?(value: T): void;\n}\n\n/** Annotates a method as a binary operator overload for the specified `token`. */\ndeclare function operator(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n) => TypedPropertyDescriptor | void;\n\ndeclare namespace operator {\n /** Annotates a method as a binary operator overload for the specified `token`. */\n export function binary(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n ): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary prefix operator overload for the specified `token`. */\n export function prefix(token: "!" | "~" | "+" | "-" | "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary postfix operator overload for the specified `token`. */\n export function postfix(token: "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n}\n\n/** Annotates an element as a program global. */\ndeclare function global(...args: any[]): any;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n\n/** Annotates a class as being sealed / non-derivable. */\ndeclare function sealed(constructor: Function): void;\n\n/** Annotates a method, function or constant global as always inlined. */\ndeclare function inline(...args: any[]): any;\n\n/** Annotates a method, function or constant global as unsafe. */\ndeclare function unsafe(...args: any[]): any;\n\n/** Annotates an explicit external name of a function or global. */\ndeclare function external(...args: any[]): any;\n\n/** Annotates a global for lazy compilation. */\ndeclare function lazy(...args: any[]): any;\n\n/** Annotates a function as the explicit start function. */\ndeclare function start(...args: any[]): any;\n',portable:"/**\n * Environment definitions for compiling AssemblyScript to JavaScript using tsc.\n *\n * Note that semantic differences require additional explicit conversions for full compatibility.\n * For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n * result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n *\n * Note that i64's are not portable (JS numbers are IEEE754 doubles with a maximum safe integer\n * value of 2^53-1) and instead require a compatibility layer to work in JS as well, as for example\n * {@link glue/js/i64} respectively {@link glue/wasm/i64}.\n *\n * @module std/portable\n *//***/\n\n/// \n\n// Types\n\ndeclare type bool = boolean;\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified value is a valid integer. Can't distinguish an integer from an integral float. */\ndeclare function isInteger(value: any): value is number;\n/** Tests if the specified value is a valid float. Can't distinguish a float from an integer. */\ndeclare function isFloat(value: any): value is number;\n/** Tests if the specified value is of a nullable reference type. */\ndeclare function isNullable(value: any): bool;\n/** Tests if the specified value is of a reference type. */\ndeclare function isReference(value: any): value is object | string;\n/** Tests if the specified value is of a function type */\ndeclare function isFunction(value: any): value is Function;\n/** Tests if the specified value can be used as a string. */\ndeclare function isString(value: any): value is string | String;\n/** Tests if the specified value can be used as an array. */\ndeclare function isArray(value: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. */\ndeclare function isArrayLike(value: any): value is ArrayLike;\n/** Tests if the specified expression resolves to a defined element. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. */\ndeclare function isConstant(expression: any): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T | null, message?: string): T;\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i16;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: any): isize;\ndeclare namespace isize {\n /** Smallest representable value. */\n export const MIN_VALUE: isize;\n /** Largest representable value. */\n export const MAX_VALUE: isize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): isize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): u8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): u16;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): u32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: any): isize;\ndeclare namespace usize {\n /** Smallest representable value. */\n export const MIN_VALUE: usize;\n /** Largest representable value. */\n export const MAX_VALUE: usize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): usize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f32): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f32): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f64): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f64;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f64;\n}\n\n// Polyfills\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Allocates a chunk of memory of the specified size and returns a pointer to it. */\n function allocate(size: usize): usize;\n /** Disposes a chunk of memory by its pointer. */\n function free(ptr: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n function copy(dst: usize, src: usize, n: usize): void;\n /** Fills size bytes from from the specified destination by same value in memory. */\n function fill(dst: usize, value: u8, size: usize): void;\n /** Resets the allocator to its initial state, if supported. */\n function reset(): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer's bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform's endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ndeclare class Array {\n\n static isArray(value: any): value is Array;\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from?: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint8ClampedArray extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ninterface ArrayLike {\n length: i32;\n [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: i32;\n\n private constructor();\n\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n endsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(from: i32, to?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n repeat(count?: i32): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ndeclare class Set {\n constructor(entries?: T[]);\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n toString(): string;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n delete(key: K): bool;\n toString(): string;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\ndeclare const Symbol: SymbolConstructor;\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ninterface IMath {\n readonly E: f64;\n readonly LN2: f64;\n readonly LN10: f64;\n readonly LOG2E: f64;\n readonly LOG10E: f64;\n readonly PI: f64;\n readonly SQRT1_2: f64;\n readonly SQRT2: f64;\n\n sincos_sin: f64;\n sincos_cos: f64;\n\n abs(x: f64): f64;\n acos(x: f64): f64;\n acosh(x: f64): f64;\n asin(x: f64): f64;\n asinh(x: f64): f64;\n atan(x: f64): f64;\n atan2(y: f64, x: f64): f64;\n atanh(x: f64): f64;\n cbrt(x: f64): f64;\n ceil(x: f64): f64;\n clz32(x: f64): i32;\n cos(x: f64): f64;\n cosh(x: f64): f64;\n exp(x: f64): f64;\n expm1(x: f64): f64;\n floor(x: f64): f64;\n fround(x: f64): f32;\n hypot(value1: f64, value2: f64): f64; // TODO: see std/math\n imul(a: f64, b: f64): i32;\n log(x: f64): f64;\n log10(x: f64): f64;\n log1p(x: f64): f64;\n log2(x: f64): f64;\n max(value1: f64, value2: f64): f64; // TODO: see std/math\n min(value1: f64, value2: f64): f64; // TODO: see std/math\n pow(base: f64, exponent: f64): f64;\n random(): f64;\n round(x: f64): f64;\n sign(x: f64): f64;\n signbit(x: f64): bool;\n sin(x: f64): f64;\n sincos(x: f64): f64;\n sinh(x: f64): f64;\n sqrt(x: f64): f64;\n tan(x: f64): f64;\n tanh(x: f64): f64;\n trunc(x: f64): f64;\n}\n\ndeclare const Math: IMath;\ndeclare const Mathf: IMath;\ndeclare const JSMath: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): number;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): number;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: number);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): number;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: number): number;\n}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n"}):(()=>{const e=path.join(".","..","std");return{assembly:fs.readFileSync(path.join(e,"assembly","index.d.ts"),"utf8"),portable:fs.readFileSync(path.join(e,"portable","index.d.ts"),"utf8")}})(),exports.compileString=(e,n)=>{"string"==typeof e&&(e={"input.ts":e});const t=Object.create({stdout:createMemoryStream(),stderr:createMemoryStream()});var r=["--binaryFile","binary","--textFile","text"];return Object.keys(n||{}).forEach(e=>{var t=n[e];Array.isArray(t)?t.forEach(n=>r.push("--"+e,String(n))):r.push("--"+e,String(t))}),exports.main(r.concat(Object.keys(e)),{stdout:t.stdout,stderr:t.stderr,readFile:n=>e.hasOwnProperty(n)?e[n]:null,writeFile:(e,n)=>t[e]=n,listFiles:()=>[]}),t},exports.main=function(e,n,t){"function"==typeof n?(t=n,n={}):n||(n={});const r=n.stdout||process.stdout,i=n.stderr||process.stderr,a=n.readFile||O,o=n.writeFile||N,s=n.listFiles||R,u=n.stats||createStats();if(!r)throw Error("'options.stdout' must be specified");if(!i)throw Error("'options.stderr' must be specified");const l=optionsUtil.parse(e,exports.options),c=l.options;if(e=l.arguments,c.noColors?colorsUtil.stdout.supported=colorsUtil.stderr.supported=!1:(colorsUtil.stdout=colorsUtil.from(r),colorsUtil.stderr=colorsUtil.from(i)),l.unknown.length&&l.unknown.forEach(e=>{i.write(colorsUtil.stderr.yellow("WARN: ")+"Unknown option '"+e+"'"+EOL)}),l.trailing.length&&i.write(colorsUtil.stderr.yellow("WARN: ")+"Unsupported trailing arguments: "+l.trailing.join(" ")+EOL),t||(t=function(e){var n=0;return e&&(i.write(colorsUtil.stderr.red("ERROR: ")+e.stack.replace(/^ERROR: /i,"")+EOL),n=1),n}),c.version)return r.write("Version "+exports.version+(isDev?"-dev":"")+EOL),t(null);if(c.help||!e.length){var f=c.help?r:i,d=c.help?colorsUtil.stdout:colorsUtil.stderr;return f.write([d.white("SYNTAX")," "+d.cyan("asc")+" [entryFile ...] [options]","",d.white("EXAMPLES")," "+d.cyan("asc")+" hello.ts"," "+d.cyan("asc")+" hello.ts -b hello.wasm -t hello.wat"," "+d.cyan("asc")+" hello1.ts hello2.ts -b -O > hello.wasm","",d.white("OPTIONS")].concat(optionsUtil.help(exports.options,24,EOL)).join(EOL)+EOL),t(null)}if(!fs.readFileSync){if(a===O)throw Error("'options.readFile' must be specified");if(o===N)throw Error("'options.writeFile' must be specified");if(s===R)throw Error("'options.listFiles' must be specified")}const p=c.baseDir?path.resolve(c.baseDir):".",h=c.notNear?[]:[nearBindings];c.transform&&c.transform.forEach(e=>h.push(__webpack_require__(13)(path.isAbsolute(e=e.trim())?e:path.join(process.cwd(),e))));var g=null,x=new Map,v=new Map;Object.keys(exports.libraryFiles).forEach(e=>{e.indexOf("/")>=0||(u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(exports.libraryFiles[e],exports.libraryPrefix+e+".ts",!1,g)}))});const m=[];if(c.lib){let e=c.lib;"string"==typeof e&&(e=e.split(",")),Array.prototype.push.apply(m,e.map(e=>e.trim()));for(let e=0,n=m.length;e{g=assemblyscript.parseFile(o,exports.libraryPrefix+i,!1,g)})}}}function _(e,n){return e.split(SEP).map((e,t,r)=>{let i=r.slice(0,t+1).join(SEP)||SEP,a=path.relative(p,i);return path.join(a,n)}).filter(e=>s(e,p)).reverse()}function y(e){let n=c.path.map(n=>_(e,n));return _(e,"node_modules").concat(...n)}function b(){for(var e,n,r;null!=(e=g.nextFile());){if(dependee=v.get(assemblyscript.getDependee(g,e))||p,n=null,r=null,e.startsWith(exports.libraryPrefix)){const t=e.substring(exports.libraryPrefix.length),i=e.substring(exports.libraryPrefix.length)+"/index";if(exports.libraryFiles.hasOwnProperty(t))n=exports.libraryFiles[t],e=exports.libraryPrefix+t+".ts";else if(exports.libraryFiles.hasOwnProperty(i))n=exports.libraryFiles[i],e=exports.libraryPrefix+i+".ts";else for(let o=0,s=m.length;o{if(x.has(o))return x.get(o);let e=path.join(s,o,"package.json"),n=a(e,p);if(n){let r;try{r=JSON.parse(n)}catch(n){return t(Error("Parsing "+e+" failed"))}let i=r.ascMain;if(i&&"string"==typeof i){let e=i.replace(/(.*)\/index\.ts/,"$1");return x.set(o,e),e}}return"assembly"})(),l=e=>{e.startsWith(exports.libraryPrefix)&&(e=e.substring(exports.libraryPrefix.length));let n=e.substring(0,e.indexOf("/")),t=e.substring(e.indexOf("/")+1);return path.join(s,n,u,t)};c.traceResolution&&i.write(" in '"+l(e)+"'");const f=e,d=e+"/index";if(null!==(n=a(l(f)+".ts",p))?e=f+".ts":null!==(n=a(l(d)+".ts",p))&&(e=d+".ts"),null!==n){c.traceResolution&&i.write(EOL+" -> '"+l(e)+"'"+EOL),r=path.join(s,o);break}c.traceResolution&&i.write(EOL)}}if(null==n)return t(Error("Import file '"+e+".ts' not found."));v.set(e.replace(/\.ts$/,""),r),u.parseCount++,u.parseTime+=measure(()=>{assemblyscript.parseFile(n,e,!1,g)})}if(checkDiagnostics(g,i))return t(Error("Parse error"))}c.path=c.path||[];{let e=String(c.runtime),n="rt/index-"+e,r=exports.libraryFiles[n];if(null==r){if(null==(r=a((n=e)+".ts",p)))return t(Error("Runtime '"+e+"' not found."))}else n="~lib/"+n;u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(r,n,!0,g)})}for(let n=0,r=e.length;n{g=assemblyscript.parseFile(o,i,!0,g)})}{let e=b();if(e)return e}!function(e,...n){h.forEach(t=>{"function"==typeof t[e]&&t[e](...n)})}("afterParse",g,o,p);{let e=b();if(e)return e}const E=assemblyscript.finishParsing(g);if(c.listFiles)return i.write(E.sources.map(e=>e.normalizedPath).sort().join(EOL)+EOL),t(null);var T=0,A=0;c.optimize&&(T=exports.defaultOptimizeLevel,A=exports.defaultShrinkLevel),"number"==typeof c.optimizeLevel&&(T=c.optimizeLevel),"number"==typeof c.shrinkLevel&&(A=c.shrinkLevel),T=Math.min(Math.max(T,0),3),A=Math.min(Math.max(A,0),2);const S=assemblyscript.createOptions();if(assemblyscript.setTarget(S,0),assemblyscript.setNoAssert(S,c.noAssert),assemblyscript.setImportMemory(S,c.importMemory),assemblyscript.setSharedMemory(S,c.sharedMemory),assemblyscript.setImportTable(S,c.importTable),assemblyscript.setExplicitStart(S,c.explicitStart),assemblyscript.setMemoryBase(S,c.memoryBase>>>0),assemblyscript.setSourceMap(S,null!=c.sourceMap),assemblyscript.setOptimizeLevelHints(S,T,A),assemblyscript.setNoUnsafe(S,c.noUnsafe),assemblyscript.setGlobalAlias(S,"Math","NativeMath"),assemblyscript.setGlobalAlias(S,"Mathf","NativeMathf"),assemblyscript.setGlobalAlias(S,"abort","~lib/builtins/abort"),assemblyscript.setGlobalAlias(S,"trace","~lib/builtins/trace"),c.use){let e=c.use;for(let n=0,r=e.length;n{F=assemblyscript.compileProgram(E,S)})}catch(e){return t(e)}if(checkDiagnostics(g,i))return F&&F.dispose(),t(Error("Compile error"));if(c.validate&&(u.validateCount++,u.validateTime+=measure(()=>{if(!F.validate())return F.dispose(),t(Error("Validate error"))})),"clamp"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-clamp"])});else if("js"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-js"])});else if("allow"!==c.trapMode)return F.dispose(),t(Error("Unsupported trap mode"));(T>=3||A>=2)&&(T=4),F.setOptimizeLevel(T),F.setShrinkLevel(A),F.setDebugInfo(c.debug);var z=[];if(c.runPasses&&("string"==typeof c.runPasses&&(c.runPasses=c.runPasses.split(",")),c.runPasses.length&&c.runPasses.forEach(e=>{z.indexOf(e)<0&&z.push(e)})),(T>0||A>0)&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.optimize()})),z.length&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(z.map(e=>e.trim()))})),!c.noEmit){let e=!1,n=!1;if(null!=c.outFile&&(/\.was?t$/.test(c.outFile)&&null==c.textFile?c.textFile=c.outFile:/\.js$/.test(c.outFile)&&null==c.asmjsFile?c.asmjsFile=c.outFile:null==c.binaryFile&&(c.binaryFile=c.outFile)),null!=c.binaryFile){let r,s=null!=c.sourceMap?c.sourceMap.length?c.sourceMap:path.basename(c.binaryFile)+".map":null;if(u.emitCount++,u.emitTime+=measure(()=>{r=F.toBinary(s)}),c.binaryFile.length?o(c.binaryFile,r.output,p):(C(r.output),e=!0),n=!0,null!=r.sourceMap)if(c.binaryFile.length){let e=JSON.parse(r.sourceMap);e.sourceRoot=exports.sourceMapRoot,e.sources.forEach((n,r)=>{let i=null;if(n.startsWith(exports.libraryPrefix)){let e=n.substring(exports.libraryPrefix.length).replace(/\.ts$/,"");if(exports.libraryFiles.hasOwnProperty(e))i=exports.libraryFiles[e];else for(let e=0,t=m.length;e{t=F.toAsmjs()}),o(c.asmjsFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=F.toAsmjs()}),C(t),e=!0),n=!0}if(null!=c.idlFile){let t;c.idlFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),o(c.idlFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),C(t),e=!0),n=!0}if(null!=c.tsdFile){let t;c.tsdFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),o(c.tsdFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),C(t),e=!0),n=!0}if(null!=c.textFile||!n){let n;c.textFile&&c.textFile.length?(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),o(c.textFile,n,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),C(n))}}return F.dispose(),c.measure&&printStats(u,i),c.printrtti&&printRTTI(E,i),t(null);function O(e,n){let t=path.resolve(n,e);try{let e;return u.readCount++,u.readTime+=measure(()=>{e=fs.readFileSync(t,{encoding:"utf8"})}),e}catch(e){return null}}function N(e,n,t){try{return u.writeCount++,u.writeTime+=measure(()=>{mkdirp(path.join(t,path.dirname(e))),"string"==typeof n?fs.writeFileSync(path.join(t,e),n,{encoding:"utf8"}):fs.writeFileSync(path.join(t,e),n)}),!0}catch(e){return!1}}function R(e,n){var t;try{return u.readTime+=measure(()=>{t=fs.readdirSync(path.join(n,e)).filter(e=>/^(?!.*\.d\.ts$).*\.ts$/.test(e))}),t}catch(e){return null}}function C(e){C.used||(u.writeCount++,C.used=!0),u.writeTime+=measure(()=>{"string"==typeof e?r.write(e,{encoding:"utf8"}):r.write(e)})}},exports.checkDiagnostics=checkDiagnostics,exports.createStats=createStats,process.hrtime||(process.hrtime=__webpack_require__(14)),exports.measure=measure,exports.formatTime=formatTime,exports.printStats=printStats,exports.printRTTI=printRTTI;var allocBuffer=void 0!==global&&global.Buffer?global.Buffer.allocUnsafe||function(e){return new global.Buffer(e)}:function(e){return new Uint8Array(e)};function createMemoryStream(e){var n=[];return n.write=function(n){if(e&&e(n),"string"==typeof n){let e=allocBuffer(utf8.length(n));utf8.write(n,e,0),n=e}this.push(n)},n.reset=function(){n.length=0},n.toBuffer=function(){for(var e=0,n=0,t=this.length;n191&&r<224?a[o++]=(31&r)<<6|63&e[n++]:r>239&&r<365?(r=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[n++])<<6|63&e[n++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},r.write=function(e,n,t){for(var r,i,a=t,o=0;o>6|192,n[t++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,n[t++]=r>>18|240,n[t++]=r>>12&63|128,n[t++]=r>>6&63|128,n[t++]=63&r|128):(n[t++]=r>>12|224,n[t++]=r>>6&63|128,n[t++]=63&r|128);return t-a}},function(e,n,t){(function(e){var t=void 0!==e&&e||{},r=t.env&&"CI"in t.env;function i(e,t){var i=t||{};return i.supported=e&&!!e.isTTY||r,i.gray=e=>i.supported?n.GRAY+e+n.RESET:e,i.red=e=>i.supported?n.RED+e+n.RESET:e,i.green=e=>i.supported?n.GREEN+e+n.RESET:e,i.yellow=e=>i.supported?n.YELLOW+e+n.RESET:e,i.blue=e=>i.supported?n.BLUE+e+n.RESET:e,i.magenta=e=>i.supported?n.MAGENTA+e+n.RESET:e,i.cyan=e=>i.supported?n.CYAN+e+n.RESET:e,i.white=e=>i.supported?n.WHITE+e+n.RESET:e,i}n.stdout=i(t.stdout,n),n.stderr=i(t.stderr),n.from=i,n.GRAY="",n.RED="",n.GREEN="",n.YELLOW="",n.BLUE="",n.MAGENTA="",n.CYAN="",n.WHITE="",n.RESET=""}).call(this,t(0))},function(e,n){n.parse=function(e,n){var t={},r=[],arguments=[],i=[],a={};Object.keys(n).forEach(e=>{if(!e.startsWith(" ")){var r=n[e];null!=r.alias&&("string"==typeof r.alias?a[r.alias]=e:Array.isArray(r.alias)&&r.alias.forEach(n=>a[n]=e)),null!=r.default&&(t[e]=r.default)}});for(var o=0,s=(e=e.slice()).length;ot[e]=s.value[e])}else r.push(i)}for(;o{var o=e[n];if(null!=o.description){for(var s="";s.length{for(let n=0;n=0?u.substring(l+1):u,i.statements=new Array,i.range=new o.Range(i,0,t.length),i.text=t,i}return i(n,e),Object.defineProperty(n.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),n}(l);n.Source=$;var ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.decorators=null,n.flags=a.CommonFlags.NONE,n}return i(n,e),n.prototype.is=function(e){return(this.flags&e)==e},n.prototype.isAny=function(e){return 0!=(this.flags&e)},n.prototype.set=function(e){this.flags|=e},n}(J);n.DeclarationStatement=ee;var ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INDEXSIGNATUREDECLARATION,n}return i(n,e),n}(ee);n.IndexSignatureDeclaration=ne;var te=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i(n,e),n}(ee);n.VariableLikeDeclarationStatement=te;var re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BLOCK,n}return i(n,e),n}(J);n.BlockStatement=re;var ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BREAK,n}return i(n,e),n}(J);n.BreakStatement=ie;var ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CLASSDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n}(ee);n.ClassDeclaration=ae;var oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CONTINUE,n}return i(n,e),n}(J);n.ContinueStatement=oe;var se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.DO,n}return i(n,e),n}(J);n.DoStatement=se;var ue=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EMPTY,n}return i(n,e),n}(J);n.EmptyStatement=ue;var le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMDECLARATION,n}return i(n,e),n}(ee);n.EnumDeclaration=le;var ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMVALUEDECLARATION,n}return i(n,e),n}(te);n.EnumValueDeclaration=ce;var fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTIMPORT,n}return i(n,e),n}(l);n.ExportImportStatement=fe;var de=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTMEMBER,n}return i(n,e),n}(l);n.ExportMember=de;var pe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORT,n}return i(n,e),n}(J);n.ExportStatement=pe;var he=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTDEFAULT,n}return i(n,e),n}(J);n.ExportDefaultStatement=he;var ge=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPRESSION,n}return i(n,e),n}(J);n.ExpressionStatement=ge;var xe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FIELDDECLARATION,n.parameterIndex=-1,n}return i(n,e),n}(te);n.FieldDeclaration=xe;var ve=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FOR,n}return i(n,e),n}(J);n.ForStatement=ve,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(n.ArrowKind||(n.ArrowKind={}));var me=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FUNCTIONDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},n}(ee);n.FunctionDeclaration=me;var _e=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IF,n}return i(n,e),n}(J);n.IfStatement=_e;var ye=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORTDECLARATION,n}return i(n,e),n}(ee);n.ImportDeclaration=ye;var be=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORT,n}return i(n,e),n}(J);n.ImportStatement=be;var Ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INTERFACEDECLARATION,n}return i(n,e),n}(ae);n.InterfaceDeclaration=Ee;var Te=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.METHODDECLARATION,n}return i(n,e),n}(me);n.MethodDeclaration=Te;var Ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.NAMESPACEDECLARATION,n}return i(n,e),n}(ee);n.NamespaceDeclaration=Ae;var Se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.RETURN,n}return i(n,e),n}(J);n.ReturnStatement=Se;var Fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCHCASE,n}return i(n,e),n}(l);n.SwitchCase=Fe;var Ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCH,n}return i(n,e),n}(J);n.SwitchStatement=Ie;var ze=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.THROW,n}return i(n,e),n}(J);n.ThrowStatement=ze;var Oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TRY,n}return i(n,e),n}(J);n.TryStatement=Oe;var Ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TYPEDECLARATION,n}return i(n,e),n}(ee);n.TypeDeclaration=Ne;var Re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLEDECLARATION,n}return i(n,e),n}(te);n.VariableDeclaration=Re;var Ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLE,n}return i(n,e),n}(J);n.VariableStatement=Ce;var Le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VOID,n}return i(n,e),n}(J);n.VoidStatement=Le;var we=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.WHILE,n}return i(n,e),n}(J);function ke(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}n.WhileStatement=we,n.findDecorator=function(e,n){if(n)for(var t=0,r=n.length;t";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var d=function(){function e(e,n,t){this.debugInfoRef=0,this.source=e,this.start=n,this.end=t}return e.join=function(n,t){if(n.source!=t.source)throw new Error("source mismatch");return new e(n.source,n.startt.end?n.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,n=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&n++;return n},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,n=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++n;return n},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();n.Range=d;var p=function(e){function n(n,t){void 0===t&&(t=null);var r=e.call(this,t)||this;r.end=0,r.pos=0,r.token=-1,r.tokenPos=0,r.nextToken=-1,r.nextTokenPos=0,r.nextTokenOnNewLine=!1,r.onComment=null,r.source=n,r.pos=0,r.end=n.text.length,r.diagnostics=t||new Array;var i=r.end,a=n.text;if(r.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=r){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,r));break}var a=e.charCodeAt(this.pos);if(a==n){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=n){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},n.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var n=this.source.text,t=n.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!r&&47==i)break;if(l.isLineBreak(i)){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(n,this.pos)},n.prototype.readRegexpFlags=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=0;this.pos57)&&95!=r)break;t++}return!0},n.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)t=i64_add(i64_shl(t,r),i64_new(u-48));else if(u>=65&&u<=70)t=i64_add(i64_shl(t,r),i64_new(10+u-65));else if(u>=97&&u<=102)t=i64_add(i64_shl(t,r),i64_new(10+u-97));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readDecimalInteger=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=i64_new(0),i=i64_new(10),a=n;this.pos=48&&u<=57)r=i64_add(i64_mul(r,i),i64_new(u-48));else{if(95!=u)break;a==o&&this.error(a==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),a=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Digit_expected,this.range(n)):a==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),r},n.prototype.readOctalInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(3),i=n,a=this.end;this.pos=48&&u<=55)t=i64_add(i64_shl(t,r),i64_new(u-48));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}++this.pos}return this.pos==n?this.error(s.DiagnosticCode.Octal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readBinaryInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(1),i=n,a=this.end;this.pos=48&&i<=57)n=(n<<4)+i-48;else if(i>=65&&i<=70)n=(n<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";n=(n<<4)+i+-87}if(0==--e)break}return e?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(n)},n.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,n=this.readHexInteger(),t=i64_low(n),r=!1;assert(!i64_high(n)),t>1114111&&(this.error(s.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),r=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),r=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(s.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),r=!0),r?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},n.prototype.finish=function(){},n}(s.DiagnosticEmitter);n.Tokenizer=p;var h=function(){};n.State=h;var g=null},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(n.DiagnosticCode||(n.DiagnosticCode={})),n.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)});Object.defineProperty(n,"__esModule",{value:!0});var a=t(0),o=t(1),s=t(17),u=t(22),l=t(24);function c(e){return e.text.includes("@nearfile")||d(e)}function f(e){return s.ASTBuilder.build(e)}function d(e){return(e.kind==a.NodeKind.SOURCE?e:e.range.source).sourceKind==a.SourceKind.USER_ENTRY}function p(e){return e.kind==a.NodeKind.CLASSDECLARATION}function h(e){return e.kind==a.NodeKind.FIELDDECLARATION}var g=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},n.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],n.sb=[],n.exportedClasses=new Map,n.wrappedFuncs=new Set,n}return i(n,e),n.build=function(e,t){return(new n).build(t)},n.nearFiles=function(e){return e.program.sources.filter(c)},n.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(f(e.name))||this.exportedClasses.set(f(e.name),e)},n.prototype.visitFunctionDeclaration=function(n){!d(n)||this.wrappedFuncs.has(f(n.name))||!n.is(o.CommonFlags.EXPORT)||0==n.signature.parameters.length&&"void"===f(n.signature.returnType)?e.prototype.visitFunctionDeclaration.call(this,n):(this.generateWrapperFunction(n),n.flags=n.flags^o.CommonFlags.EXPORT,this.wrappedFuncs.add(f(n.name)))},n.prototype.generateWrapperFunction=function(e){var n=e.signature,t=n.parameters,r=n.returnType,i=f(r).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),a=f(r).includes("null"),o=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+o+"(): void {"),t.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==f(r)?this.sb.push(" let result: "+f(r)+" = "+o+"("):this.sb.push(" "+o+"("),t.length>0&&(this.sb[this.sb.length-1]+=t.map(function(e){return x(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==f(r)&&this.sb.push("\n let encoder = new JSONEncoder();\n let val: Uint8Array;\n if ((isString<"+i+">() || isNullable<"+i+">()) && result == null) {\n encoder.setNull(null);\n val = encoder.serialize();\n } else {\n val = encode<"+i+">(result"+(a?"!":"")+", null, encoder);\n }\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+o+" as "+o+" }\n")},n.prototype.typeName=function(e){if(!p(e))return s.ASTBuilder.build(e);var n=f((e=e).name);return e.isGeneric&&(n+="<"+e.typeParameters.map(f).join(", ")+">"),n},n.prototype.getFields=function(e){var n=p(e)?e:this.exportedClasses.get(f(e));return null==n?[]:n.members.filter(function(e){return e.kind==a.NodeKind.FIELDDECLARATION}).map(function(e){return{name:f(e.name),type:e.type,isGeneric:v(n,e)}})},n.prototype.build=function(e){var n=this;this.sb=[l.preamble],this.visit(e);var t=e.statements.map(function(e){var t=s.ASTBuilder.build(e);if(p(e)){var r=e;if(t=t.slice(0,t.lastIndexOf("}")),r.members.filter(h).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var i=n.typeName(r);t+="\n static decode(json: Uint8Array): "+i+" {\n let value = instantiate<"+i+">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): "+i+' {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, "argument must be Uint8Array or Json Object");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): '+i+" {\n "+r.members.filter(h).map(function(e){var n=f(e.name);return x(e,"this."+n+' = obj.has("'+n+'") ? ')+": this."+n+";"}).join("\n ")+'\n return this;\n }\n\n _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+r.members.filter(h).map(function(e){var n=f(e.type),t=f(e.name);return"encode<"+n+", JSONEncoder>(this."+t+', "'+t+'", encoder);'}).join("\n ")+"\n encoder.popObject();\n return encoder;\n }\n\n encode(): Uint8Array {\n return this._encode().serialize();\n }\n\n serialize(): Uint8Array {\n return this.encode();\n }\n\n toJSON(): string {\n return this._encode().toString();\n }\n}"}return t});return this.sb.concat(t).join("\n")},n}(u.BaseVisitor);function x(e,n){return void 0===n&&(n=""),n+"decode<"+f(e.type)+', Obj>(obj, "'+f(e.name)+'")'}function v(e,n){return null!=e.typeParameters&&e.typeParameters.some(function(e){return f(e.name)==f(n.type)})}n.afterParse=function(e,n,t){g.nearFiles(e).forEach(function(r){var i=r.text.substr(0,r.text.indexOf("\n")).includes("out");e.donelog.delete(r.internalPath),e.seenlog.delete(r.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==r});var a=g.build(e,r);i&&n("out/"+r.normalizedPath,a,t),e.parseFile(a,(d(r)?"":"./")+r.normalizedPath,d(r))})}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(n.Feature||(n.Feature={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(n.Target||(n.Target={}))},function(e,n,t){"use strict";var r=this&&this.__decorate||function(e,n,t,r){var i,a=arguments.length,o=a<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,n,t,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(n,t,o):i(n,t))||o);return a>3&&o&&Object.defineProperty(n,t,o),o};Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(){}return r([()=>{}],e)}();n.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(n.TypeinfoFlags||(n.TypeinfoFlags={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i=t(5),a=t(2),o=t(5);function s(e){switch(e){case r.INFO:return"INFO";case r.WARNING:return"WARNING";case r.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case r.INFO:return n.COLOR_BLUE;case r.WARNING:return n.COLOR_YELLOW;case r.ERROR:return n.COLOR_RED;default:return assert(!1),""}}n.DiagnosticCode=o.DiagnosticCode,n.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(r=n.DiagnosticCategory||(n.DiagnosticCategory={})),n.diagnosticCategoryToString=s,n.COLOR_BLUE="",n.COLOR_YELLOW="",n.COLOR_RED="",n.COLOR_RESET="",n.diagnosticCategoryToColor=u;var l=function(){function e(e,n,t){this.range=null,this.relatedRange=null,this.code=e,this.category=n,this.message=t}return e.create=function(n,t,r,a,o){void 0===r&&(r=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(n);return null!=r&&(s=s.replace("{0}",r)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(n,t,s)},e.createInfo=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.INFO,t,i)},e.createWarning=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.WARNING,t,i)},e.createError=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function c(e,t){void 0===t&&(t=!1);for(var r=e.source.text,i=r.length,o=e.start,s=e.end;o>0&&!a.isLineBreak(r.charCodeAt(o-1));)o--;for(;s=0&&n<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(n))),i64_zero)},n.bitsetSet=function(e,n,t){return assert(n>=0&&n<64),t?i64_or(e,i64_shl(i64_one,i64_new(n))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(n))))}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(n.CharCode||(n.CharCode={})),n.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},n.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},n.isDecimalDigit=function(e){return e>=48&&e<=57},n.isOctalDigit=function(e){return e>=48&&e<=55},n.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,r);var n},n.isKeywordCharacter=function(e){return e>=97&&e<=122},n.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,i);var n};var r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,n){if(e>1),(r=n[t-=1&t])<=e&&e<=n[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0}),n.makeArray=function(e){if(void 0===e&&(e=null),e){for(var n=new Array(e.length),t=0,r=e.length;t0||r=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=n?e.substring(0,a):e.substring(0,a)+e.substring(t+3),r-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){r=(e=e.substring(t+4)).length;continue}}}t++}return r>0?e:"."}function o(e){var n=e.length;if(n<=1){if(0==n)return".";if(e.charCodeAt(0)==i)return e}for(;--n>0;)if(e.charCodeAt(n)==i)return e.substring(0,n);return"."}n.normalizePath=a,n.resolvePath=function(e,n){return e.startsWith("std/")?e:a(o(n)+r.PATH_DELIMITER+e)},n.dirname=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.indent=function(e,n){for(;n>=4;)e.push(" "),n-=4;n>=2&&(e.push(" "),n-=2),n&&e.push(" ")}},function(e,n,t){"use strict";function r(e,n){return e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24}function i(e,n,t){n[t]=e,n[t+1]=e>>>8,n[t+2]=e>>>16,n[t+3]=e>>>24}function a(e,n){var t=r(e,n),i=r(e,n+4);return i64_new(t,i)}Object.defineProperty(n,"__esModule",{value:!0}),n.readI8=function(e,n){return e[n]},n.writeI8=function(e,n,t){n[t]=e},n.readI16=function(e,n){return e[n]|e[n+1]<<8},n.writeI16=function(e,n,t){n[t]=e,n[t+1]=e>>>8},n.readI32=r,n.writeI32=i,n.readI64=a,n.writeI64=function(e,n,t){i(i64_low(e),n,t),i(i64_high(e),n,t+4)},n.readF32=function(e,n){return i32_as_f32(r(e,n))},n.writeF32=function(e,n,t){i(f32_as_i32(e),n,t)},n.readF64=function(e,n){return i64_as_f64(a(e,n))},n.writeF64=function(e,n,t){var r=f64_as_i64(e);i(i64_low(r),n,t),i(i64_high(r),n,t+4)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(0);t(18),t(19),t(20);var i=t(1),a=t(2),o=t(4),s=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(n){var t=new e;return t.visitNode(n),t.finish()},e.prototype.visitNode=function(e){switch(e.kind){case r.NodeKind.SOURCE:this.visitSource(e);break;case r.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case r.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case r.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case r.NodeKind.FALSE:case r.NodeKind.NULL:case r.NodeKind.SUPER:case r.NodeKind.THIS:case r.NodeKind.TRUE:case r.NodeKind.CONSTRUCTOR:case r.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case r.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case r.NodeKind.BINARY:this.visitBinaryExpression(e);break;case r.NodeKind.CALL:this.visitCallExpression(e);break;case r.NodeKind.CLASS:this.visitClassExpression(e);break;case r.NodeKind.COMMA:this.visitCommaExpression(e);break;case r.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case r.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case r.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case r.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case r.NodeKind.NEW:this.visitNewExpression(e);break;case r.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case r.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case r.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case r.NodeKind.BLOCK:this.visitBlockStatement(e);break;case r.NodeKind.BREAK:this.visitBreakStatement(e);break;case r.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case r.NodeKind.DO:this.visitDoStatement(e);break;case r.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case r.NodeKind.EXPORT:this.visitExportStatement(e);break;case r.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case r.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case r.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case r.NodeKind.FOR:this.visitForStatement(e);break;case r.NodeKind.IF:this.visitIfStatement(e);break;case r.NodeKind.IMPORT:this.visitImportStatement(e);break;case r.NodeKind.RETURN:this.visitReturnStatement(e);break;case r.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case r.NodeKind.THROW:this.visitThrowStatement(e);break;case r.NodeKind.TRY:this.visitTryStatement(e);break;case r.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case r.NodeKind.WHILE:this.visitWhileStatement(e);break;case r.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case r.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case r.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case r.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case r.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case r.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case r.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case r.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case r.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case r.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case r.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case r.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case r.NodeKind.DECORATOR:this.serializeDecorator(e);break;case r.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case r.NodeKind.PARAMETER:this.serializeParameter(e);break;case r.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var n=e.statements,t=0,r=n.length;t")}e.isNullable&&r.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var n=e.isNullable,t=this.sb;t.push(n?"((":"(");var r=e.explicitThisType;r&&(t.push("this: "),this.visitTypeNode(r));var i=e.parameters,a=i.length;if(a){r&&t.push(", "),this.serializeParameter(i[0]);for(var o=1;o "),this.visitTypeNode(s)):t.push(") => void"),n&&t.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var n=e.extendsType;n&&(this.sb.push(" extends "),this.visitTypeNode(n));var t=e.defaultType;t&&(this.sb.push("="),this.visitTypeNode(t))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var n=this.sb;n.push("[");var t=e.elementExpressions,r=t.length;if(r){t[0]&&this.visitNode(t[0]);for(var i=1;i"),this.visitNode(e.expression);break;case r.AssertionKind.AS:this.visitNode(e.expression),n.push(" as "),this.visitTypeNode(assert(e.toType));break;case r.AssertionKind.NONNULL:this.visitNode(e.expression),n.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var n=this.sb;this.visitNode(e.left),n.push(" "),n.push(o.operatorTokenToString(e.operator)),n.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var n=this.sb;this.visitNode(e.expression);var t=e.typeArguments;if(t){var r=t.length;if(r){n.push("<"),this.visitTypeNode(t[0]);for(var i=1;i(")}}else n.push("(");var a=e.arguments,o=a.length;if(o)for(this.visitNode(a[0]),i=1;ir&&t.push(e.substring(r,r=a+1)),t.push("\\0"),r=++a;break;case 8:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\b");break;case 9:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\t");break;case 10:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\n");break;case 11:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\v");break;case 12:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\f");break;case 13:a>r&&t.push(e.substring(r,a)),t.push("\\r"),r=++a;break;case 34:n?++a:(a>r&&t.push(e.substring(r,a)),t.push('\\"'),r=++a);break;case 39:n?(a>r&&t.push(e.substring(r,a)),t.push("\\'"),r=++a):++a;break;case 92:a>r&&t.push(e.substring(r,a)),t.push("\\\\"),r=++a;break;default:++a}a>r&&t.push(e.substring(r,a)),t.push(i)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var n=this.sb;n.push("/"),n.push(e.pattern),n.push("/"),n.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var n=this.sb;n.push("("),this.visitNode(e.expression),n.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var n=this.sb;this.visitNode(e.condition),n.push(" ? "),this.visitNode(e.ifThen),n.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(o.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(o.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var n=this.sb;if(n.length&&e.kind!=r.NodeKind.VARIABLE&&e.kind!=r.NodeKind.EXPRESSION){var t=n[n.length-1],i=t.length-1;i>=0&&(125==t.charCodeAt(i)||59==t.charCodeAt(i))?n.push("\n"):n.push(";\n")}else n.push(";\n")},e.prototype.visitBlockStatement=function(e){var n=this.sb,t=e.statements,r=t.length;if(r){n.push("{\n");for(var i=++this.indentLevel,o=0;o")}var c=e.extendsType;c&&(u.push(" extends "),this.visitTypeNode(c));var f=e.implementsTypes;if(f){var d=f.length;if(d)for(u.push(" implements "),this.visitTypeNode(f[0]),o=1;o")}}if(2==e.arrowKind){var u=t.parameters;assert(1==u.length),assert(!t.explicitThisType),this.serializeParameter(u[0])}else{n.push("(");var l=(u=t.parameters).length,c=t.explicitThisType;if(c&&(n.push("this: "),this.visitTypeNode(c)),l)for(c&&n.push(", "),this.serializeParameter(u[0]),s=1;s "),this.visitNode(f)):(assert(!r.isTypeOmitted(d)),n.push(" => "),this.visitTypeNode(d)):(r.isTypeOmitted(d)||e.isAny(i.CommonFlags.CONSTRUCTOR|i.CommonFlags.SET)?n.push(")"):(n.push("): "),this.visitTypeNode(d)),f&&(n.push(" "),this.visitNode(f)))},e.prototype.visitIfStatement=function(e){var n=this.sb;n.push("if ("),this.visitNode(e.condition),n.push(") ");var t=e.ifTrue;this.visitNode(t),t.kind!=r.NodeKind.BLOCK&&n.push(";\n");var i=e.ifFalse;i&&(t.kind==r.NodeKind.BLOCK?n.push(" else "):n.push("else "),this.visitNode(i))},e.prototype.visitImportDeclaration=function(e){var n=e.foreignName,t=e.name;this.visitIdentifierExpression(n),n.text!=t.text&&(this.sb.push(" as "),this.visitIdentifierExpression(t))},e.prototype.visitImportStatement=function(e){var n=this.sb;n.push("import ");var t=e.declarations,r=e.namespaceName;if(t){var i=t.length;if(i){n.push("{\n");var o=++this.indentLevel;a.indent(n,o),this.visitImportDeclaration(t[0]);for(var s=1;s")}var u=e.extendsType;u&&(o.push(" extends "),this.visitTypeNode(u)),o.push(" {\n");var l=++this.indentLevel,c=e.members;for(r=0,i=c.length;r")}}i.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var n=e.type,t=this.sb;e.flags&i.CommonFlags.DEFINITE_ASSIGNMENT&&t.push("!"),n&&(t.push(": "),this.visitTypeNode(n));var r=e.initializer;r&&(t.push(" = "),this.visitNode(r))},e.prototype.visitVariableStatement=function(e){var n=e.decorators;if(n)for(var t=0,r=n.length;t>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(n.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(n.i32=n.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(n.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(n.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(n.u32=n.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(n.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(n.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(n.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),n.clz=Math.clz32,n.ctz=function(e){var n=Math.clz32(e&-e);return e?31-n:n},n.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},n.rotl=function(e,n){return e<<(n&=31)|e>>>32-n},n.rotr=function(e,n){return e>>>(n&=31)|e<<32-n},n.abs=Math.abs,n.max=Math.max,n.min=Math.min,n.ceil=Math.ceil,n.floor=Math.floor,n.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},n.select=function(e,n,t){return t?e:n},n.sqrt=Math.sqrt,n.trunc=Math.trunc,n.copysign=function(e,n){return Math.abs(e)*Math.sign(n)},n.bswap=function(e){var n=e>>8&16711935,t=(16711935&e)<<8;return(n=(e=n|t)>>16&65535)|(65535&e)<<16},n.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",n.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",n.assert=function(e,n){if(e)return e;throw new a(n)},n.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,n){var t=this.split(e).join(n);return e.length||(t=n+t+n),t}}),n.isInteger=Number.isInteger,n.isFloat=function(e){return"number"==typeof e},n.isNullable=function(e){return!0},n.isReference=function(e){return"object"==typeof e||"string"==typeof e},n.isFunction=function(e){return"function"==typeof e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isArray=Array.isArray,n.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var n=new Array(e);return n.length=0,n},n.isDefined=function(e){return void 0!==e},n.isConstant=function(e){return!1},n.unchecked=function(e){return e},n.fmod=function(e,n){return e%n},n.fmodf=function(e,n){return Math.fround(e%n)},n.JSMath=Math;try{Object.defineProperties(n.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(r[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}n.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:n.__memory_allocate||function(n){if(!(n>>>=0))return 0;if(t+n>e.length){var r=e;(e=new Uint8Array(Math.max(65536,e.length+n,2*e.length))).set(r)}var i=t;return 7&(t+=n)&&(t=1+(7|t)),i},fill:n.__memory_fill||function(n,t,r){e.fill(t,n,n+r)},free:n.__memory_free||function(e){},copy:n.__memory_copy||function(n,t,r){e.copyWithin(n,t,t+r)},reset:n.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),n.store=n.__store||function(e,n,t){HEAP[(0|e)+(0|t)]=n},n.load=n.__load||function(e,n){return HEAP[(0|e)+(0|n)]},n.unmanaged=function(){}}).call(this,t(3))},function(e,n,t){(function(e){const n=new Float64Array(1),t=new Float32Array(n.buffer),r=new Int32Array(n.buffer);e.f32_as_i32=function(e){return t[0]=e,r[0]},e.i32_as_f32=function(e){return r[0]=e,t[0]},e.f64_as_i64=function(e){return n[0]=e,i64_new(r[0],r[1])},e.i64_as_f64=function(e){return r[0]=i64_low(e),r[1]=i64_high(e),n[0]}}).call(this,t(3))},function(e,n,t){(function(e){const n=e.Long||t(21);e.i64_zero=n.ZERO,e.i64_one=n.ONE,e.i64_new=function(e,t){return n.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,n){return e.add(n)},e.i64_sub=function(e,n){return e.sub(n)},e.i64_mul=function(e,n){return e.mul(n)},e.i64_div=function(e,n){return e.div(n)},e.i64_div_u=function(e,n){return e.toUnsigned().div(n.toUnsigned()).toSigned()},e.i64_rem=function(e,n){return e.mod(n)},e.i64_rem_u=function(e,n){return e.toUnsigned().mod(n.toUnsigned()).toSigned()},e.i64_and=function(e,n){return e.and(n)},e.i64_or=function(e,n){return e.or(n)},e.i64_xor=function(e,n){return e.xor(n)},e.i64_shl=function(e,n){return e.shl(n)},e.i64_shr=function(e,n){return e.shr(n)},e.i64_shr_u=function(e,n){return e.shru(n)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,n){return e.eq(n)},e.i64_ne=function(e,n){return e.ne(n)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var r=n.fromInt(t-1);return e.add(r).and(r.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const r=n.fromNumber(f32.MIN_SAFE_INTEGER),i=n.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(r)&&e.lte(i)};const a=n.fromNumber(f64.MIN_SAFE_INTEGER),o=n.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(n){return e.Math.fround(n.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,n){return(n?e.toUnsigned():e).toString(10)}}).call(this,t(3))},function(e,n){e.exports=r;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function r(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0}),r.isLong=i;var a={},o={};function s(e,n){var t,r,i;return n?(i=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(t=l(e,(0|e)<0?-1:0,!0),i&&(o[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function u(e,n){if(isNaN(e))return n?m:v;if(n){if(e<0)return m;if(e>=h)return T}else{if(e<=-g)return A;if(e+1>=g)return E}return e<0?u(-e,n).neg():l(e%p|0,e/p|0,n)}function l(e,n,t){return new r(e,n,t)}r.fromInt=s,r.fromNumber=u,r.fromBits=l;var c=Math.pow;function f(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return v;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return f(e.substring(1),n,t).neg();for(var i=u(c(t,8)),a=v,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return l+o;for(;l.length<6;)l="0"+l;o=""+l+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(A)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,n=31;n>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=d(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=d(e)),this.eq(e))return 0;var n=this.isNegative(),t=e.isNegative();return n&&!t?-1:!n&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(A)?A:this.not().add(_)},S.neg=S.negate,S.add=function(e){i(e)||(e=d(e));var n=this.high>>>16,t=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,u=e.low>>>16,c=0,f=0,p=0,h=0;return p+=(h+=a+(65535&e.low))>>>16,f+=(p+=r+u)>>>16,c+=(f+=t+s)>>>16,c+=n+o,l((p&=65535)<<16|(h&=65535),(c&=65535)<<16|(f&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=d(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return v;if(i(e)||(e=d(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return v;if(this.eq(A))return e.isOdd()?A:v;if(e.eq(A))return this.isOdd()?A:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(x)&&e.lt(x))return u(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,r=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,h=0,g=0,m=0,_=0;return m+=(_+=o*p)>>>16,g+=(m+=a*p)>>>16,m&=65535,g+=(m+=o*f)>>>16,h+=(g+=r*p)>>>16,g&=65535,h+=(g+=a*f)>>>16,g&=65535,h+=(g+=o*c)>>>16,h+=n*p+r*f+a*c+o*s,l((m&=65535)<<16|(_&=65535),(h&=65535)<<16|(g&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=d(e)),e.isZero())throw Error("division by zero");var n,r,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return m;if(e.gt(this.shru(1)))return y;a=m}else{if(this.eq(A))return e.eq(_)||e.eq(b)?A:e.eq(A)?_:(n=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?_:b:(r=this.sub(e.mul(n)),a=n.add(r.div(e)));if(e.eq(A))return this.unsigned?m:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=v}for(r=this;r.gte(e);){n=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),s=o<=48?1:c(2,o-48),f=u(n),p=f.mul(e);p.isNegative()||p.gt(r);)p=(f=u(n-=s,this.unsigned)).mul(e);f.isZero()&&(f=_),a=a.add(f),r=r.sub(p)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=d(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return l(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=d(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=d(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=d(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0==(e&=63))return this;var n=this.high;return e<32?l(this.low>>>e|n<<32-e,n>>>e,this.unsigned):l(32===e?n:n>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,n=this.low;return[255&n,n>>>8&255,n>>>16&255,n>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,n>>>24,n>>>16&255,n>>>8&255,255&n]},r.fromBytes=function(e,n,t){return t?r.fromBytesLE(e,n):r.fromBytesBE(e,n)},r.fromBytesLE=function(e,n){return new r(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},r.fromBytesBE=function(e,n){return new r(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}),a=this&&this.__values||function(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(n,"__esModule",{value:!0});var o=t(0),s=function(e){function n(n){var t=e.call(this,n)||this;return t.depth=0,t}return i(n,e),n.prototype._visit=function(e){switch(e.kind){case o.NodeKind.SOURCE:this.visitSource(e);break;case o.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case o.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case o.NodeKind.TYPENAME:this.visitTypeName(e);case o.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case o.NodeKind.FALSE:case o.NodeKind.NULL:case o.NodeKind.SUPER:case o.NodeKind.THIS:case o.NodeKind.TRUE:case o.NodeKind.CONSTRUCTOR:case o.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case o.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case o.NodeKind.BINARY:this.visitBinaryExpression(e);break;case o.NodeKind.CALL:this.visitCallExpression(e);break;case o.NodeKind.CLASS:this.visitClassExpression(e);break;case o.NodeKind.COMMA:this.visitCommaExpression(e);break;case o.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case o.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case o.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case o.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case o.NodeKind.NEW:this.visitNewExpression(e);break;case o.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case o.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case o.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case o.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case o.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case o.NodeKind.BLOCK:this.visitBlockStatement(e);break;case o.NodeKind.BREAK:this.visitBreakStatement(e);break;case o.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case o.NodeKind.DO:this.visitDoStatement(e);break;case o.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case o.NodeKind.EXPORT:this.visitExportStatement(e);break;case o.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case o.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case o.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case o.NodeKind.FOR:this.visitForStatement(e);break;case o.NodeKind.IF:this.visitIfStatement(e);break;case o.NodeKind.IMPORT:this.visitImportStatement(e);break;case o.NodeKind.RETURN:this.visitReturnStatement(e);break;case o.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case o.NodeKind.THROW:this.visitThrowStatement(e);break;case o.NodeKind.TRY:this.visitTryStatement(e);break;case o.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case o.NodeKind.WHILE:this.visitWhileStatement(e);break;case o.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case o.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case o.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case o.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case o.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case o.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case o.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case o.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case o.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case o.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case o.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case o.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case o.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case o.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case o.NodeKind.PARAMETER:this.visitParameter(e);break;case o.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},n.prototype.visitSource=function(e){var n,t;try{for(var r=a(e.statements),i=r.next();!i.done;i=r.next()){var o=i.value;this.depth++,this.visit(o),this.depth--}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}},n.prototype.visitTypeNode=function(e){},n.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},n.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},n.prototype.visitFunctionTypeNode=function(e){var n,t;try{for(var r=a(e.parameters),i=r.next();!i.done;i=r.next()){var o=i.value;this.visit(o)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}this.visit(e.returnType)},n.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},n.prototype.visitIdentifierExpression=function(e){},n.prototype.visitArrayLiteralExpression=function(e){var n=this;e.elementExpressions.map(function(e){e&&n.visit(e)})},n.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var n=0;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();n.DefaultWriter=a;var o=function(){function e(e){void 0===e&&(e=new a),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var n,t,a,o,s,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var l=r(e.entries()),c=l.next();!c.done;c=l.next()){var f=i(c.value,2),d=(f[0],f[1]);this.visit(d)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}else if(null!=(s=e)&&"function"==typeof s[Symbol.iterator])try{for(var p=r(e),h=p.next();!h.done;h=p.next())d=h.value,this.visit(d)}catch(e){a={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(a)throw a.error}}else this._visit(e)},e}();n.AbstractVisitor=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])},function(e,n){if(void 0===__WEBPACK_EXTERNAL_MODULE__11__){var t=new Error("Cannot find module 'assemblyscript'");throw t.code="MODULE_NOT_FOUND",t}e.exports=__WEBPACK_EXTERNAL_MODULE__11__},function(e){e.exports=JSON.parse('{"version":{"description":"Prints just the compiler\'s version and exits.","type":"b","alias":"v"},"help":{"description":"Prints this message and exits.","type":"b","alias":"h"},"optimize":{"description":["Optimizes the module. Also has the usual shorthands:",""," -O Uses defaults. Equivalent to -O3s"," -O0 Equivalent to --optimizeLevel 0"," -O1 Equivalent to --optimizeLevel 1"," -O2 Equivalent to --optimizeLevel 2"," -O3 Equivalent to --optimizeLevel 3"," -Oz Equivalent to -O but with --shrinkLevel 2"," -O3s Equivalent to -O3 with --shrinkLevel 1 etc.",""],"type":"b","alias":"O"},"optimizeLevel":{"description":"How much to focus on optimizing code. [0-3]","type":"i"},"shrinkLevel":{"description":"How much to focus on shrinking code size. [0-2, s=1, z=2]","type":"i"},"validate":{"description":"Validates the module using Binaryen. Exits if invalid.","type":"b","alias":"c","default":false},"baseDir":{"description":"Specifies the base directory of input and output files.","type":"s","default":"."},"outFile":{"description":"Specifies the output file. File extension indicates format.","type":"s","alias":"o"},"binaryFile":{"description":"Specifies the binary output file (.wasm).","type":"s","alias":"b"},"textFile":{"description":"Specifies the text output file (.wat).","type":"s","alias":"t"},"asmjsFile":{"description":"Specifies the asm.js output file (.js).","type":"s","alias":"a"},"idlFile":{"description":"Specifies the WebIDL output file (.webidl).","type":"s","alias":"i"},"tsdFile":{"description":"Specifies the TypeScript definition output file (.d.ts).","type":"s","alias":"d"},"sourceMap":{"description":["Enables source map generation. Optionally takes the URL","used to reference the source map from the binary file."],"type":"s"},"runtime":{"description":["Specifies the runtime variant to include in the program.",""," full Default runtime based on TLSF and reference counting."," half Same as \'full\', but not exported to the host."," stub Minimal stub implementation without free/GC support."," none Same as \'stub\', but not exported to the host.",""],"type":"s","default":"full"},"noUnsafe":{"description":["Disallows the use of unsafe features in user code.","Does not affect library files and external modules."],"type":"b","default":false},"debug":{"description":"Enables debug information in emitted binaries.","type":"b","default":false},"noAssert":{"description":"Replaces assertions with just their value without trapping.","type":"b","default":false},"noEmit":{"description":"Performs compilation as usual but does not emit code.","type":"b","default":false},"importMemory":{"description":"Imports the memory instance provided by the embedder.","type":"b","default":false},"sharedMemory":{"description":"Declare memory as shared by settings the max shared memory.","type":"i","default":0},"memoryBase":{"description":"Sets the start offset of compiler-generated static memory.","type":"i","default":0},"importTable":{"description":"Imports the function table instance provided by the embedder.","type":"b","default":false},"explicitStart":{"description":"Exports an explicit start function to be called manually.","type":"b","default":false},"lib":{"description":["Adds one or multiple paths to custom library components and","uses exports of all top-level files at this path as globals."],"type":"s"},"path":{"description":["Comma separated paths to look for dependencies.","Looks for folders with package.json that includes a \'ascMain\' field","or defaults to having an \'/assembly\' folder."],"type":"S"},"use":{"description":["Aliases a global object under another name, e.g., to switch","the default \'Math\' implementation used: --use Math=JSMath"],"type":"S","alias":"u"},"trapMode":{"description":["Sets the trap mode to use.",""," allow Allow trapping operations. This is the default."," clamp Replace trapping operations with clamping semantics."," js Replace trapping operations with JS semantics.",""],"type":"s","default":"allow"},"runPasses":{"description":["Specifies additional Binaryen passes to run after other","optimizations, if any. See: Binaryen/src/passes/pass.cpp"],"type":"s"},"enable":{"description":["Enables additional (experimental) WebAssembly features.",""," sign-extension Enables sign-extension operations"," mutable-global Enables mutable global imports and exports"," bulk-memory Enables bulk memory operations"," simd Enables SIMD types and operations."," threads Enables threading and atomic operations.",""],"type":"s"},"transform":{"description":"Specifies the path to a custom transform to \'require\'.","type":"S"},"traceResolution":{"description":"Enable tracing of package resolution.","type":"b","default":false},"listFiles":{"description":"List files to be compiled and exit.","type":"b","default":false},"measure":{"description":"Prints measuring information on I/O and compile times.","type":"b","default":false},"printrtti":{"description":"Prints the module\'s runtime type information to stderr.","type":"b","default":false},"noColors":{"description":"Disables terminal colors.","type":"b","default":false}," ...":{"description":"Specifies node.js options (CLI only). See: node --help"},"-Os":{"value":{"optimize":true,"shrinkLevel":1}},"-Oz":{"value":{"optimize":true,"shrinkLevel":2}},"-O0":{"value":{"optimizeLevel":0,"shrinkLevel":0}},"-O1":{"value":{"optimizeLevel":1,"shrinkLevel":0}},"-O2":{"value":{"optimizeLevel":2,"shrinkLevel":0}},"-O3":{"value":{"optimizeLevel":3,"shrinkLevel":0}},"-O0s":{"value":{"optimizeLevel":0,"shrinkLevel":1}},"-O1s":{"value":{"optimizeLevel":1,"shrinkLevel":1}},"-O2s":{"value":{"optimizeLevel":2,"shrinkLevel":1}},"-O3s":{"value":{"optimizeLevel":3,"shrinkLevel":1}},"-O0z":{"value":{"optimizeLevel":0,"shrinkLevel":2}},"-O1z":{"value":{"optimizeLevel":1,"shrinkLevel":2}},"-O2z":{"value":{"optimizeLevel":2,"shrinkLevel":2}},"-O3z":{"value":{"optimizeLevel":3,"shrinkLevel":2}},"notNear":{"description":"Prevent the instrumentation of the binding code for near","type":"b","default":false}}')},function(e,n){function t(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=13},function(e,n,t){(function(n,t){e.exports=n.hrtime||function(e){var n=.001*i.call(r),t=Math.floor(n),a=Math.floor(n%1*1e9);e&&(t-=e[0],(a-=e[1])<0&&(t--,a+=1e9));return[t,a]};var r=t.performance||{},i=r.now||r.mozNow||r.msNow||r.oNow||r.webkitNow||function(){return(new Date).getTime()}}).call(this,t(0),t(2))}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e.assemblyscript)}("undefined"!=typeof self?self:this,function(__WEBPACK_EXTERNAL_MODULE__11__){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=4)}([function(e,n,t){var r,i;n.nextTick=function(e){var n=Array.prototype.slice.call(arguments);n.shift(),setTimeout(function(){e.apply(null,n)},0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(1)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!=typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!=typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(0))},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n){},function(e,n,t){e.exports=t(5)},function(module,exports,__webpack_require__){(function(process,global){process.browser&&(process.cwd=function(){return"."});const fs=__webpack_require__(3),path=__webpack_require__(1),utf8=__webpack_require__(6),colorsUtil=__webpack_require__(7),optionsUtil=__webpack_require__(8),mkdirp=__webpack_require__(9),EOL="win32"===process.platform?"\r\n":"\n",SEP="win32"===process.platform?"\\":"/",nearBindings=__webpack_require__(10),nearLibEntry=path.join(".","..","bindings","assembly","nearEntry.ts");process.removeAllListeners&&process.removeAllListeners("uncaughtException");var assemblyscript,isDev=!1;function checkDiagnostics(e,n){for(var t,r=!1;null!=(t=assemblyscript.nextDiagnostic(e));)n&&n.write(assemblyscript.formatDiagnostic(t,n.isTTY,!0)+EOL+EOL),assemblyscript.isError(t)&&(r=!0);return r}function createStats(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function measure(e){const n=process.hrtime();e();const t=process.hrtime(n);return 1e9*t[0]+t[1]}function formatTime(e){return e?(e/1e6).toFixed(3)+" ms":"N/A"}function printStats(e,n){function t(e,n){return formatTime(e)}(n||process.stdout).write(["I/O Read : "+t(e.readTime,e.readCount),"I/O Write : "+t(e.writeTime,e.writeCount),"Parse : "+t(e.parseTime,e.parseCount),"Compile : "+t(e.compileTime,e.compileCount),"Emit : "+t(e.emitTime,e.emitCount),"Validate : "+t(e.validateTime,e.validateCount),"Optimize : "+t(e.optimizeTime,e.optimizeCount)].join(EOL)+EOL)}function printRTTI(e,n){n||(n=process.stderr),n.write("# Runtime type information (RTTI)\n"),n.write(assemblyscript.buildRTTI(e))}(()=>{try{assemblyscript=__webpack_require__(11)}catch(e){try{__webpack_require__(!function(){var e=new Error("Cannot find module 'ts-node'");throw e.code="MODULE_NOT_FOUND",e}()).register({project:path.join(".","..","src","tsconfig.json")}),__webpack_require__(!function(){var e=new Error("Cannot find module '../src/glue/js'");throw e.code="MODULE_NOT_FOUND",e}()),assemblyscript=__webpack_require__(!function(){var e=new Error("Cannot find module '../src'");throw e.code="MODULE_NOT_FOUND",e}()),isDev=!0}catch(e_ts){try{assemblyscript=eval("require('./assemblyscript')")}catch(e){throw e.stack=e_ts.stack+"\n---\n"+e.stack,e}}}})(),exports.isBundle=!0,exports.isDev=isDev,exports.version=exports.isBundle?"0.7.0":__webpack_require__(!function(){var e=new Error("Cannot find module '../package.json'");throw e.code="MODULE_NOT_FOUND",e}()).version,exports.options=__webpack_require__(12),exports.sourceMapRoot="assemblyscript:///",exports.libraryPrefix=assemblyscript.LIBRARY_PREFIX,exports.defaultOptimizeLevel=3,exports.defaultShrinkLevel=1,exports.libraryFiles=exports.isBundle?Object({nearEntry:'\nimport { storage, near, base64, base58 } from "near-runtime-ts";\n//@ts-ignore\nimport { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\nimport { u128 } from "bignum";\n// Runtime functions\n// tslint:disable: no-unsafe-any\n\ntype Usize = u64;\n//@ts-ignore\n@global\n@external("env", "read_register")\ndeclare function read_register(register_id: Usize, ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "register_len")\ndeclare function register_len(register_id: Usize): Usize;\n\n//@ts-ignore\n@global\n@external("env", "input")\ndeclare function input(register_id: Usize): void;\n//@ts-ignore\n@global\n@external("env", "value_return")\ndeclare function value_return(value_len: Usize, value_ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "panic")\ndeclare function panic(): void;\n\nabstract class Value {\n static String(str: string): Value {\n return new Str(str);\n }\n static Number(num: i64): Value {\n return new Num(num);\n }\n static Bool(b: bool): Value {\n return new Bools(b);\n }\n static Null(): Value {\n return new Null();\n }\n static Array(): Value {\n return new Arr();\n }\n static Object(): Value {\n return new Obj();\n }\n\n toString(): string {\n if (this instanceof Str) {\n return (this).toString();\n }\n if (this instanceof Num) {\n return (this).toString();\n }\n if (this instanceof Bools) {\n return (this).toString();\n }\n if (this instanceof Null) {\n return (this).toString();\n }\n if (this instanceof Arr) {\n return (this).toString();\n }\n if (this instanceof Obj) {\n return (this).toString();\n }\n return "Value";\n }\n}\n@global\nclass Str extends Value {\n constructor(public _str: string) {\n super();\n }\n\n toString(): string {\n return "\\"" + this._str + "\\"";\n }\n}\n@global\nclass Num extends Value {\n constructor(public _num: i64) {\n super();\n }\n\n toString(): string {\n return this._num.toString();\n }\n}\n@global\nclass Null extends Value {\n constructor() {\n super();\n }\n\n toString(): string {\n return "null";\n }\n}\n\n@global class Bools extends Value {\n constructor(public _bool: bool) {\n super();\n }\n\n toString(): string {\n return this._bool.toString();\n }\n}\n\n@global\nclass Arr extends Value {\n _arr: Array;\n constructor() {\n super();\n this._arr = new Array();\n }\n\n push(obj: Value): void {\n this._arr.push(obj);\n }\n\n toString(): string {\n return "[" + this._arr.map((val: Value,i: i32,_arr: Value[]): string => val.toString()).join(",") + "]";\n }\n}\n\n@global\nclass Obj extends Value {\n _obj: Map;\n keys: Array;\n\n constructor() {\n super();\n this._obj = new Map();\n this.keys = new Array();\n }\n\n set(key: string, value: Value): void {\n if (!this._obj.has(key)) {\n this.keys.push(key);\n }\n this._obj.set(key, value);\n }\n\n get(key: string): Value | null {\n if (!this._obj.has(key)) {\n return null;\n }\n return this._obj.get(key);\n }\n\n toString(): string {\n const objs: string[] = [];\n for (let i: i32 = 0; i < this.keys.length; i++) {\n objs.push("\\"" + this.keys[i] + "\\":" + this._obj.get(this.keys[i]).toString());\n }\n return "{" + objs.join(",") + "}";\n }\n\n has(key: string): bool {\n return this._obj.has(key);\n }\n}\n\nclass Handler extends ThrowingJSONHandler {\n stack: Value[];\n constructor() {\n super();\n this.stack = new Array();\n }\n\n reset(): void {\n while (this.stack.length > 0) {\n this.stack.pop();\n }\n }\n\n get peek(): Value {\n return this.stack[this.stack.length - 1];\n }\n\n setString(name: string, value: string): void {\n const obj: Value = Value.String(value);\n this.addValue(name, obj);\n }\n\n setBoolean(name: string, value: bool): void {\n const obj = Value.Bool(value);\n this.addValue(name, obj);\n }\n\n setNull(name: string): void {\n const obj = Value.Null();\n this.addValue(name, obj);\n }\n\n setInteger(name: string, value: i64): void {\n const obj = Value.Number(value);\n this.addValue(name, obj);\n }\n\n pushArray(name: string): bool {\n const obj: Value = Value.Array();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popArray(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n pushObject(name: string): bool {\n const obj: Value = Value.Object();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popObject(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n addValue(name: string, obj: Value): void {\n if (name.length == 0 && obj instanceof Obj && this.stack.length == 0) {\n this.stack.push(obj);\n return;\n }\n if (this.peek instanceof Obj) {\n (this.peek as Obj).set(name, obj);\n }\n else if (this.peek instanceof Arr) {\n (this.peek).push(obj);\n }\n }\n}\n\n@global()\nclass JSON {\n private static handler: Handler = new Handler();\n private static decoder: JSONDecoder = new JSONDecoder(JSON.handler);\n static parse(str: Uint8Array ): Obj {\n JSON.decoder.deserialize(str);\n const res = JSON.decoder.handler.peek as Obj;\n JSON.decoder.handler.reset();\n return res;\n }\n}\n\n//@ts-ignore\n@global\nfunction encode(value: T, name: string | null = "", encoder: JSONEncoder = new JSONEncoder()): Output {\n if (isBoolean()) {\n //@ts-ignore\n encoder.setBoolean(name, value);\n } else if (isInteger()) {\n if (value instanceof i64 || value instanceof u64) {\n //@ts-ignore\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n encoder.setInteger(name, value);\n }\n //@ts-ignore\n } else if (value == null) {\n encoder.setNull(name);\n } else if (isString()) {\n //@ts-ignore\n encoder.setString(name, value);\n } else if (isReference()) {\n if (isArrayLike(value)) {\n if (value instanceof Uint8Array) {\n //@ts-ignore\n encoder.setString(name, base64.encode( value));\n } else {\n encoder.pushArray(name);\n for (let i: i32 = 0; i < value.length; i++) {\n //@ts-ignore\n encode, JSONEncoder>(value[i], null, encoder);\n }\n encoder.popArray();\n }\n } else { // Is an object\n if (value instanceof u128) {\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n value._encode(name, encoder);\n }\n }\n } else {\n throw new Error("Encoding failed");\n }\n var output: Output;\n //@ts-ignore\n if (output instanceof Uint8Array) {\n //@ts-ignore\n return encoder.serialize();\n }\n //@ts-ignore\n assert( output instanceof JSONEncoder, "Bad return type for encoder");\n //@ts-ignore\n return encoder;\n}\n\n//@ts-ignore\n@inline\nfunction getStr(val: Value, name: String): string {\n assert(val instanceof Str, "Value with Key: " + name + " is not a string or null");\n return (val)._str;\n}\n\nfunction decodeArray(val: Value, name: string): Array {\n assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null.");\n const res = new Array();\n const arr = (val)._arr;\n for (let i: i32 = 0; i < arr.length; i++) {\n let item: T = decode(arr[i]);\n res.push(item);\n }\n return res;\n}\n\n//@ts-ignore\n@global\nfunction decode(buf: V, name: string = ""): T {\n const buffer = (buf instanceof Uint8Array ? JSON.parse(buf) : buf);\n var val: Value;\n if (buffer instanceof Obj && name != "") {\n const obj: Obj = buffer;\n let res = obj.get(name);\n if (res == null) {\n //@ts-ignore\n return null;\n }\n val = res;\n }else {\n val = buffer;\n }\n if (val instanceof Null) {\n assert(isReference() || isArrayLike() || isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable.");\n //@ts-ignore\n return null;\n }\n if (isString()) {\n //@ts-ignore\n return getStr(val, name);\n }\n if (isBoolean()) {\n assert(val instanceof Bools, "Value with Key: " + name + " with type " + nameof() + " is not a string");\n //@ts-ignore\n return (val)._bool;\n }\n var value: T;\n if (isInteger()) {\n //@ts-ignore\n if (value instanceof u64 || value instanceof i64) {\n assert(val instanceof Str, "Value with Key: " + name + " with type " + nameof() + " is an 64-bit integer and is expected to be encoded as a string");\n let str = (val)._str;\n //@ts-ignore\n return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str);\n }\n assert(val instanceof Num, "Value with Key: " + name + " with type " + nameof() + " is not an Integer");\n //@ts-ignore\n return (val)._num;\n }\n assert(isReference(), name + " with type " + nameof() + " must be an integer, boolean, string, object, or array");\n if (isArrayLike()) {\n //@ts-ignore\n if (value instanceof Uint8Array ) {\n //@ts-ignore\n return base64.decode(getStr(val, name));\n }\n //@ts-ignore\n // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array")\n //@ts-ignore only checking the instance\n return decodeArray>(val, name);\n }\n if (val instanceof Str) {\n //@ts-ignore\n if (value instanceof u128) {\n //@ts-ignore\n return u128.fromString(getStr(val, name));\n }\n }\n assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null");\n value = instantiate();\n //@ts-ignore\n return value.decode(val);\n}\n',array:'/// \n\nimport { BLOCK_MAXSIZE } from "./rt/common";\nimport { COMPARATOR, SORT } from "./util/sort";\nimport { ArrayBuffer, ArrayBufferView } from "./arraybuffer";\nimport { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";\nimport { idof, isArray as builtin_isArray } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error";\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureSize(array: usize, minSize: usize, alignLog2: u32): void {\n var oldCapacity = changetype(array).dataLength;\n if (minSize > oldCapacity >>> alignLog2) {\n if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).data);\n let newCapacity = minSize << alignLog2;\n let newData = __realloc(oldData, newCapacity);\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n if (newData !== oldData) { // oldData has been free\'d\n store(changetype(array), __retain(newData), offsetof("data"));\n changetype(array).dataStart = newData;\n }\n changetype(array).dataLength = newCapacity;\n }\n}\n\nexport class Array extends ArrayBufferView {\n [key: number]: T;\n\n // Implementing ArrayBufferView isn\'t strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).\n\n // Also note that Array with non-nullable T must guard against implicit null values whenever\n // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn\'t be\n // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return builtin_isArray(value) && value !== null;\n }\n\n static create(capacity: i32 = 0): Array {\n if (capacity > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n var array = changetype>(__allocArray(capacity, alignof(), idof())); // retains\n changetype>(array).length_ = 0; // safe even if T is a non-nullable reference\n memory.fill(array.dataStart, 0, array.dataLength);\n return array;\n }\n\n constructor(length: i32 = 0) {\n super(length, alignof());\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n this.length_ = length;\n }\n\n @unsafe get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n var oldLength = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (newLength > oldLength) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) { // release no longer used refs\n if (oldLength > newLength) {\n let dataStart = this.dataStart;\n do __release(load(dataStart + (--oldLength << alignof())));\n while (oldLength > newLength);\n // no need to zero memory on shrink -> is zeroed on grow\n }\n }\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (!fn(load(this.dataStart + (index << alignof())), index, this)) return false;\n }\n return true;\n }\n\n findIndex(predicate: (value: T, index: i32, array: Array) => bool): i32 {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (predicate(load(this.dataStart + (index << alignof())), index, this)) return index;\n }\n return -1;\n }\n\n @operator("[]") private __get(index: i32): T {\n if (isReference()) {\n if (!isNullable()) {\n if (index >= this.length_) throw new Error(E_HOLEYARRAY);\n }\n }\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n var length = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (index > length) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), index + 1, alignof());\n this.__unchecked_set(index, value);\n if (index >= length) this.length_ = index + 1;\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = this.dataStart + (index << alignof());\n let oldRef: usize = load(offset);\n if (changetype(value) != oldRef) {\n store(offset, __retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n store(this.dataStart + (index << alignof()), value);\n }\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (isManaged()) {\n for (; start < end; ++start) {\n let oldRef: usize = load(dataStart + (start << alignof()));\n if (changetype(value) != oldRef) {\n store(dataStart + (start << alignof()), __retain(changetype(value)));\n __release(oldRef);\n }\n }\n } else if (sizeof() == 1) {\n if (start < end) {\n memory.fill(\n dataStart + start,\n u8(value),\n (end - start)\n );\n }\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n return this.indexOf(value, fromIndex) >= 0;\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var length = this.length_;\n if (length == 0 || fromIndex >= length) return -1;\n if (fromIndex < 0) fromIndex = max(length + fromIndex, 0);\n var dataStart = this.dataStart;\n while (fromIndex < length) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var length = this.length_;\n if (length == 0) return -1;\n if (fromIndex < 0) fromIndex = length + fromIndex;\n else if (fromIndex >= length) fromIndex = length - 1;\n var dataStart = this.dataStart;\n while (fromIndex >= 0) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var length = this.length_;\n var newLength = length + 1;\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) {\n store(this.dataStart + (length << alignof()), __retain(changetype(value)));\n } else {\n store(this.dataStart + (length << alignof()), value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = select(0, other.length_, other === null);\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, __retain(ref));\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, __retain(ref));\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n if (isManaged()) {\n if (from < to && to < (from + count)) { // right to left\n from += count - 1;\n to += count - 1;\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n --from, --to, --count;\n }\n } else { // left to right\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n ++from, ++to, --count;\n }\n }\n } else {\n memory.copy( // is memmove\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n }\n return this;\n }\n\n pop(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var element = load(this.dataStart + ((--length) << alignof()));\n this.length_ = length;\n return element; // no need to retain -> is moved\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n fn(load(this.dataStart + (index << alignof())), index, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var length = this.length_;\n var out = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n for (let index = 0; index < min(length, this.length_); ++index) {\n let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains\n if (isManaged()) {\n store(outStart + (index << alignof()), __retain(changetype(result)));\n } else {\n store(outStart + (index << alignof()), result);\n }\n // releases result\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n let value = load(this.dataStart + (index << alignof()));\n if (fn(value, index, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = this.length_ - 1; index >= 0; --index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n shift(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = length - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n store(base + (lastIndex << alignof()),\n // @ts-ignore: cast\n null\n );\n this.length_ = lastIndex;\n return element; // no need to retain -> is moved\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (fn(load(this.dataStart + (index << alignof())), index, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var newLength = this.length_ + 1;\n ensureSize(changetype(this), newLength, alignof());\n var dataStart = this.dataStart;\n memory.copy(\n dataStart + sizeof(),\n dataStart,\n (newLength - 1) << alignof()\n );\n if (isManaged()) {\n store(dataStart, __retain(changetype(value)));\n } else {\n store(dataStart, value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(start + length, 0) : min(start, length);\n end = end < 0 ? max(end + length, 0) : min(end , length);\n length = max(end - start, 0);\n var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = length << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, __retain(ref));\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, length << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n deleteCount = max(min(deleteCount, length - start), 0);\n var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n if (isManaged()) {\n for (let i = 0; i < deleteCount; ++i) {\n store(resultStart + (i << alignof()),\n load(thisBase + (i << alignof()))\n );\n // no need to retain -> is moved\n }\n } else {\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n }\n var offset = start + deleteCount;\n if (length != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (length - offset) << alignof()\n );\n }\n this.length_ = length - deleteCount;\n return result;\n }\n\n reverse(): Array {\n var length = this.length_;\n if (length) {\n let front = this.dataStart;\n let back = this.dataStart + ((length - 1) << alignof());\n while (front < back) {\n let temp = load(front);\n store(front, load(back));\n store(back, temp);\n front += sizeof();\n back -= sizeof();\n }\n }\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this {\n var length = this.length_;\n if (length <= 1) return this;\n var base = this.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b;\n store(base, a); // arr[0] = a;\n }\n return this;\n }\n SORT(base, length, comparator);\n return this;\n }\n\n join(separator: string = ","): string {\n if (isBoolean()) return this.join_bool(separator);\n if (isInteger()) return this.join_int(separator);\n if (isFloat()) return this.join_flt(separator);\n if (isString()) return this.join_str(separator);\n if (isArray()) return this.join_arr(separator);\n if (isReference()) return this.join_ref(separator);\n ERROR("unspported element type");\n return unreachable();\n }\n\n private join_bool(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return select("true", "false", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len("false")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_int(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n // @ts-ignore: type\n if (!lastIndex) return changetype(itoa(load(dataStart))); // retains\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_flt(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n ); // retains\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_str(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return load(dataStart);\n\n var sepLen = separator.length;\n var estLen = 0;\n var value: string | null;\n for (let i = 0, len = lastIndex + 1; i < len; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) estLen += value.length;\n }\n var offset = 0;\n var result = changetype(__alloc((estLen + sepLen * lastIndex) << 1, idof())); // retains\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) {\n let valueLen = changetype(value).length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (value !== null) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n changetype(value).length << 1\n );\n }\n return result;\n }\n\n private join_arr(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n\n var result = "";\n var sepLen = separator.length;\n var base = this.dataStart;\n var value: T;\n if (!lastIndex) {\n value = load(base);\n // @ts-ignore: type\n return value ? value.join(separator) : "";\n }\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n if (sepLen) result += separator;\n }\n value = load(base + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n return result; // registered by concatenation (FIXME: lots of garbage)\n }\n\n private join_ref(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var base = this.dataStart;\n if (!lastIndex) return "[object Object]";\n\n const valueLen = 15; // max possible length of element len("[object Object]")\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n if (value) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n if (load(base + (lastIndex << alignof()))) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n // automatically visits ArrayBufferView (.data) next\n }\n}\n',arraybuffer:'/// \n\nimport { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INVALIDLENGTH } from "./util/error";\n\nexport abstract class ArrayBufferView {\n\n @unsafe data: ArrayBuffer;\n @unsafe dataStart: usize;\n @unsafe dataLength: u32;\n\n protected constructor(length: i32, alignLog2: i32) {\n if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length = length << alignLog2, idof());\n memory.fill(buffer, 0, length);\n this.data = changetype(buffer); // retains\n this.dataStart = buffer;\n this.dataLength = length;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n get length(): i32 {\n ERROR("missing implementation: subclasses must implement ArrayBufferView#length");\n return unreachable();\n }\n}\n\n@sealed export class ArrayBuffer {\n\n static isView(value: T): bool {\n if (value) {\n if (value instanceof Int8Array) return true;\n if (value instanceof Uint8Array) return true;\n if (value instanceof Uint8ClampedArray) return true;\n if (value instanceof Int16Array) return true;\n if (value instanceof Uint16Array) return true;\n if (value instanceof Int32Array) return true;\n if (value instanceof Uint32Array) return true;\n if (value instanceof Int64Array) return true;\n if (value instanceof Uint64Array) return true;\n if (value instanceof Float32Array) return true;\n if (value instanceof Float64Array) return true;\n if (value instanceof DataView) return true;\n }\n return false;\n }\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length, idof());\n memory.fill(buffer, 0, length);\n return changetype(buffer); // retains\n }\n\n get byteLength(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n }\n\n slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer {\n var length = this.byteLength;\n begin = begin < 0 ? max(length + begin, 0) : min(begin, length);\n end = end < 0 ? max(length + end , 0) : min(end , length);\n var outSize = max(end - begin, 0);\n var out = __alloc(outSize, idof());\n memory.copy(out, changetype(this) + begin, outSize);\n return changetype(out); // retains\n }\n\n toString(): string {\n return "[object ArrayBuffer]";\n }\n}\n',"bindings/Date":"export declare function UTC(\n // NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for\n // converting the value to the WASM/JS boundary.\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: f64\n): f64;\nexport declare function now(): f64;\n","bindings/Math":"export declare const E: f64;\nexport declare const LN2: f64;\nexport declare const LN10: f64;\nexport declare const LOG2E: f64;\nexport declare const LOG10E: f64;\nexport declare const PI: f64;\nexport declare const SQRT1_2: f64;\nexport declare const SQRT2: f64;\n\nexport declare function abs(x: f64): f64;\nexport declare function acos(x: f64): f64;\nexport declare function acosh(x: f64): f64;\nexport declare function asin(x: f64): f64;\nexport declare function asinh(x: f64): f64;\nexport declare function atan(x: f64): f64;\nexport declare function atan2(y: f64, x: f64): f64;\nexport declare function atanh(x: f64): f64;\nexport declare function cbrt(x: f64): f64;\nexport declare function ceil(x: f64): f64;\nexport declare function clz32(x: f64): f64;\nexport declare function cos(x: f64): f64;\nexport declare function cosh(x: f64): f64;\nexport declare function exp(x: f64): f64;\nexport declare function expm1(x: f64): f64;\nexport declare function floor(x: f64): f64;\nexport declare function fround(x: f64): f32;\nexport declare function hypot(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function imul(a: f64, b: f64): f64;\nexport declare function log(x: f64): f64;\nexport declare function log10(x: f64): f64;\nexport declare function log1p(x: f64): f64;\nexport declare function log2(x: f64): f64;\nexport declare function max(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function min(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function pow(base: f64, exponent: f64): f64;\nexport declare function random(): f64;\nexport declare function round(x: f64): f64;\nexport declare function sign(x: f64): f64;\nexport declare function sin(x: f64): f64;\nexport declare function sinh(x: f64): f64;\nexport declare function sqrt(x: f64): f64;\nexport declare function tan(x: f64): f64;\nexport declare function tanh(x: f64): f64;\nexport declare function trunc(x: f64): f64;\n","bindings/wasi_unstable":"// see: https://wasi.dev\n\n/* tslint:disable:max-line-length */\n\n// helper types to be more explicit\ntype char = u8;\ntype ptr = usize; // all pointers are usize'd\ntype struct = T; // structs are references already in AS\n\n/** Read command-line argument data. */\nexport declare function args_get(\n /** Input: Pointer to a buffer to write the argument pointers. */\n argv: ptr>,\n /** Input: Pointer to a buffer to write the argument string data. */\n argv_buf: ptr\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function args_sizes_get(\n /** Output: Number of arguments. */\n argc: ptr,\n /** Output: Size of the argument string data. */\n argv_buf_size: ptr\n): errno;\n\n/** Return the resolution of a clock. */\nexport declare function clock_res_get(\n /** Input: The clock for which to return the resolution. */\n clock: clockid,\n /** Output: The resolution of the clock. */\n resolution: ptr\n): errno;\n\n/** Return the time value of a clock. */\nexport declare function clock_time_get(\n /** Input: Cock for which to return the time. */\n clock: clockid,\n /** Input: Maximum lag (exclusive) that the returned time value may have, compared to its actual value. */\n precision: timestamp,\n /** Output: Time value of the clock. */\n time: ptr\n): errno;\n\n/** Read environment variable data. */\nexport declare function environ_get(\n /** Input: Pointer to a buffer to write the environment variable pointers. */\n environ: ptr,\n /** Input: Pointer to a buffer to write the environment variable string data. */\n environ_buf: usize\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function environ_sizes_get(\n /** Output: The number of environment variables. */\n environ_count: ptr,\n /** Output: The size of the environment variable string data. */\n environ_buf_size: ptr\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_advise(\n /** Input: The file descriptor for the file for which to provide file advisory information. */\n fd: fd,\n /** Input: The offset within the file to which the advisory applies. */\n offset: filesize,\n /** Input: The length of the region to which the advisory applies. */\n len: filesize,\n /** Input: The advice. */\n advice: advice\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_allocate(\n /** Input: The file descriptor for the file in which to allocate space. */\n fd: fd,\n /** Input: The offset at which to start the allocation. */\n offset: filesize,\n /** Input: The length of the area that is allocated. */\n len: filesize\n): errno;\n\n/** Close a file descriptor. */\nexport declare function fd_close(\n /** Input: The file descriptor to close. */\n fd: fd\n): errno;\n\n/** Synchronize the data of a file to disk. */\nexport declare function fd_datasync(\n /** Input: The file descriptor of the file to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Get the attributes of a file descriptor. */\nexport declare function fd_fdstat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file descriptor's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the flags associated with a file descriptor. */\nexport declare function fd_fdstat_set_flags(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the file descriptor flags. */\n flags: fdflags\n): errno;\n\n/** Adjust the rights associated with a file descriptor. */\nexport declare function fd_fdstat_set_rights(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_base: rights,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_inheriting: rights\n): errno;\n\n/** Return the attributes of an open file. */\nexport declare function fd_filestat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */\nexport declare function fd_filestat_set_size(\n /** Input: A file descriptor for the file to adjust. */\n fd: fd,\n /** Input: The desired file size. */\n size: filesize\n): errno;\n\n/** Adjust the timestamps of an open file or directory. */\nexport declare function fd_filestat_set_times(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Read from a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pread(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors in which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors in which to store data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to read. */\n offset: filesize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_get(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: The buffer where the description is stored. */\n buf: struct\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_dir_name(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: Buffer into which to write the preopened directory name. */\n path: ptr,\n /** Input: Length of the buffer into which to write the preopened directory name. */\n path_len: usize\n): errno;\n\n/** Write to a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pwrite(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to write. */\n offset: filesize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/** Read from a file descriptor. */\nexport declare function fd_read(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors to which to store data. */\n iovs_len: usize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Read directory entries from a directory. */\nexport declare function fd_readdir(\n /** Input: Directory from which to read the directory entries. */\n fd: fd,\n /** Input: Buffer where directory entries are stored. */\n buf: ptr>,\n /** Input: Length of the buffer where directory entries are stored. */\n buf_len: usize,\n /** Input: Location within the directory to start reading. */\n cookie: dircookie,\n /** Output: Number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. */\n buf_used: ptr\n): errno;\n\n/** Atomically replace a file descriptor by renumbering another file descriptor. */\nexport declare function fd_renumber(\n /** Input: The file descriptor to renumber. */\n from: fd,\n /** Input: The file descriptor to overwrite. */\n to: fd\n): errno;\n\n/** Move the offset of a file descriptor. */\nexport declare function fd_seek(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The number of bytes to move. */\n offset: filedelta,\n /** Input: The base from which the offset is relative. */\n whence: whence,\n /** Output: The new offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Synchronize the data and metadata of a file to disk. */\nexport declare function fd_sync(\n /** Input: The file descriptor of the file containing the data and metadata to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Return the current offset of a file descriptor. */\nexport declare function fd_tell(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Output: The current offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Write to a file descriptor. */\nexport declare function fd_write(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/* Create a directory. */\nexport declare function path_create_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path at which to create the directory. */\n path: ptr,\n /** Input: The path at which to create the directory. */\n path_len: usize\n): errno;\n\n/** Return the attributes of a file or directory. */\nexport declare function path_filestat_get(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to inspect. */\n path: ptr,\n /** Input: The path of the file or directory to inspect. */\n path_len: usize,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the timestamps of a file or directory. */\nexport declare function path_filestat_set_times(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to operate on. */\n path: ptr,\n /** Input: The path of the file or directory to operate on. */\n path_len: usize,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Create a hard link. */\nexport declare function path_link(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n old_flags: lookupflags,\n /** Input: The source path from which to link. */\n old_path: ptr,\n /** Input: The source path from which to link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path at which to create the hard link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the hard link. */\n new_path_len: usize\n): errno;\n\n/** Open a file or directory. */\nexport declare function path_open(\n /** Input: The working directory at which the resolution of the path starts. */\n dirfd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n dirflags: lookupflags,\n /** Input: The path of the file or directory to open. */\n path: ptr,\n /** Input: The length of the path of the file or directory to open. */\n path_len: usize,\n /** Input: The method by which to open the file. */\n oflags: oflags,\n /** Input: The initial base rights that apply to operations using the file descriptor itself. */\n fs_rights_base: rights,\n /** Input: The initial inheriting rights that apply to file descriptors derived from it. */\n fs_rights_inheriting: rights,\n /** Input: The initial flags of the file descriptor. */\n fs_flags: fdflags,\n /** Output: The file descriptor of the file that has been opened. */\n fd: ptr\n): errno;\n\n/** Read the contents of a symbolic link. */\nexport declare function path_readlink(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path of the symbolic link from which to read. */\n path: ptr,\n /** Input: The length of the path of the symbolic link from which to read. */\n path_len: usize,\n /** Input: The buffer to which to write the contents of the symbolic link. */\n buf: ptr,\n /** Input: The length of the buffer to which to write the contents of the symbolic link. */\n buf_len: usize,\n /** Output: The number of bytes placed in the buffer. */\n buf_used: ptr\n): errno;\n\n/** Remove a directory. */\nexport declare function path_remove_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a directory to remove. */\n path: ptr,\n /** Input: The length of the path to a directory to remove. */\n path_len: usize\n): errno;\n\n/** Rename a file or directory. */\nexport declare function path_rename(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: The source path of the file or directory to rename. */\n old_path: ptr,\n /** Input: The length of the source path of the file or directory to rename. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path to which to rename the file or directory. */\n new_path: ptr,\n /** Input: The length of the destination path to which to rename the file or directory. */\n new_path_len: usize\n): errno;\n\n/** Create a symbolic link. */\nexport declare function path_symlink(\n /** Input: The contents of the symbolic link. */\n old_path: ptr,\n /** Input: The length of the contents of the symbolic link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The destination path at which to create the symbolic link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the symbolic link. */\n new_path_len: usize\n): errno;\n\n/** Unlink a file. */\nexport declare function path_unlink_file(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a file to unlink. */\n path: ptr,\n /** Input: The length of the path to a file to unlink. */\n path_len: usize\n): errno;\n\n/** Concurrently poll for the occurrence of a set of events. */\nexport declare function poll_oneoff(\n /** Input: The events to which to subscribe. */\n in_: ptr>,\n /** Input: The events that have occurred. */\n out: ptr>,\n /** Input: Both the number of subscriptions and events. */\n nsubscriptions: usize,\n /** Output: The number of events stored. */\n nevents: ptr\n): errno;\n\n/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */\nexport declare function proc_exit(\n /** Input: The exit code returned by the process. */\n rval: u32\n): void;\n\n/** Send a signal to the process of the calling thread. */\nexport declare function proc_raise(\n /** Input: The signal condition to trigger. */\n sig: signal\n): errno;\n\n/** Write high-quality random data into a buffer. */\nexport declare function random_get(\n /** Input: The buffer to fill with random data. */\n buf: usize,\n /** Input: The length of the buffer to fill with random data. */\n buf_len: usize\n): errno;\n\n/** Temporarily yield execution of the calling thread. */\nexport declare function sched_yield(): errno;\n\n/** Receive a message from a socket. */\nexport declare function sock_recv(\n /** Input: The socket on which to receive data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n ri_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to store data. */\n ri_data_len: usize,\n /** Input: Message flags. */\n ri_flags: riflags,\n /** Output: Number of bytes stored in `ri_data`. */\n ro_datalen: ptr,\n /** Output: Message flags. */\n ro_flags: ptr\n): errno;\n\n/** Send a message on a socket. */\nexport declare function sock_send(\n /** Input: The socket on which to send data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to retrieve data */\n si_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to retrieve data */\n si_data_len: usize,\n /** Input: Message flags. */\n si_flags: siflags,\n /** Output: Number of bytes transmitted. */\n so_datalen: ptr\n): errno;\n\n/** Shut down socket send and receive channels. */\nexport declare function sock_shutdown(\n /** Input: The socket on which to shutdown channels. */\n sock: fd,\n /** Input: Which channels on the socket to shut down. */\n how: sdflags\n): errno;\n\n// === Types ======================================================================================\n\n/** File or memory access pattern advisory information. */\nexport namespace advice {\n /** The application has no advice to give on its behavior with respect to the specified data. */\n // @ts-ignore: decorator\n @inline\n export const NORMAL: advice = 0;\n /** The application expects to access the specified data sequentially from lower offsets to higher offsets. */\n // @ts-ignore: decorator\n @inline\n export const SEQUENTIAL : advice = 1;\n /** The application expects to access the specified data in a random order. */\n // @ts-ignore: decorator\n @inline\n export const RANDOM: advice = 2;\n /** The application expects to access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const WILLNEED: advice = 3;\n /** The application expects that it will not access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const DONTNEED: advice = 4;\n /** The application expects to access the specified data once and then not reuse it thereafter. */\n // @ts-ignore: decorator\n @inline\n export const NOREUSE: advice = 5;\n}\nexport type advice = u8;\n\n/** Identifiers for clocks. */\nexport namespace clockid {\n /** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */\n // @ts-ignore: decorator\n @inline\n export const REALTIME: clockid = 0;\n /** The store-wide monotonic clock. Absolute value has no meaning. */\n // @ts-ignore: decorator\n @inline\n export const MONOTONIC: clockid = 1;\n /** The CPU-time clock associated with the current process. */\n // @ts-ignore: decorator\n @inline\n export const PROCESS_CPUTIME_ID: clockid = 2;\n /** The CPU-time clock associated with the current thread. */\n // @ts-ignore: decorator\n @inline\n export const THREAD_CPUTIME_ID: clockid = 3;\n}\nexport type clockid = u32;\n\n/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */\nexport type device = u64;\n\n/** A reference to the offset of a directory entry. */\nexport type dircookie = u64;\n\n/** A directory entry. */\n@unmanaged export class dirent {\n /** The offset of the next directory entry stored in this directory. */\n next: dircookie;\n /** The serial number of the file referred to by this directory entry. */\n ino: inode;\n /** The length of the name of the directory entry. */\n namlen: u32;\n /** The type of the file referred to by this directory entry. */\n type: filetype;\n private __padding0: u16;\n}\n\n/** Error codes returned by functions. */\nexport namespace errno {\n /** No error occurred. System call completed successfully. */\n // @ts-ignore: decorator\n @inline\n export const SUCCESS: errno = 0;\n /** Argument list too long. */\n // @ts-ignore: decorator\n @inline\n export const TOOBIG: errno = 1;\n /** Permission denied. */\n // @ts-ignore: decorator\n @inline\n export const ACCES: errno = 2;\n /** Address in use. */\n // @ts-ignore: decorator\n @inline\n export const ADDRINUSE: errno = 3;\n /** Address not available. */\n // @ts-ignore: decorator\n @inline\n export const ADDRNOTAVAIL: errno = 4;\n /** Address family not supported. */\n // @ts-ignore: decorator\n @inline\n export const AFNOSUPPORT: errno = 5;\n /** Resource unavailable, or operation would block. */\n // @ts-ignore: decorator\n @inline\n export const AGAIN: errno = 6;\n /** Connection already in progress. */\n // @ts-ignore: decorator\n @inline\n export const ALREADY: errno = 7;\n /** Bad file descriptor. */\n // @ts-ignore: decorator\n @inline\n export const BADF: errno = 8;\n /** Bad message. */\n // @ts-ignore: decorator\n @inline\n export const BADMSG: errno = 9;\n /** Device or resource busy. */\n // @ts-ignore: decorator\n @inline\n export const BUSY: errno = 10;\n /** Operation canceled. */\n // @ts-ignore: decorator\n @inline\n export const CANCELED: errno = 11;\n /** No child processes. */\n // @ts-ignore: decorator\n @inline\n export const CHILD: errno = 12;\n /** Connection aborted. */\n // @ts-ignore: decorator\n @inline\n export const CONNABORTED: errno = 13;\n /** Connection refused. */\n // @ts-ignore: decorator\n @inline\n export const CONNREFUSED: errno = 14;\n /** Connection reset. */\n // @ts-ignore: decorator\n @inline\n export const CONNRESET: errno = 15;\n /** Resource deadlock would occur. */\n // @ts-ignore: decorator\n @inline\n export const DEADLK: errno = 16;\n /** Destination address required. */\n // @ts-ignore: decorator\n @inline\n export const DESTADDRREQ: errno = 17;\n /** Mathematics argument out of domain of function. */\n // @ts-ignore: decorator\n @inline\n export const DOM: errno = 18;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const DQUOT: errno = 19;\n /** File exists. */\n // @ts-ignore: decorator\n @inline\n export const EXIST: errno = 20;\n /** Bad address. */\n // @ts-ignore: decorator\n @inline\n export const FAULT: errno = 21;\n /** File too large. */\n // @ts-ignore: decorator\n @inline\n export const FBIG: errno = 22;\n /** Host is unreachable. */\n // @ts-ignore: decorator\n @inline\n export const HOSTUNREACH: errno = 23;\n /** Identifier removed. */\n // @ts-ignore: decorator\n @inline\n export const IDRM: errno = 24;\n /** Illegal byte sequence. */\n // @ts-ignore: decorator\n @inline\n export const ILSEQ: errno = 25;\n /** Operation in progress. */\n // @ts-ignore: decorator\n @inline\n export const INPROGRESS: errno = 26;\n /** Interrupted function. */\n // @ts-ignore: decorator\n @inline\n export const INTR: errno = 27;\n /** Invalid argument. */\n // @ts-ignore: decorator\n @inline\n export const INVAL: errno = 28;\n /** I/O error. */\n // @ts-ignore: decorator\n @inline\n export const IO: errno = 29;\n /** Socket is connected. */\n // @ts-ignore: decorator\n @inline\n export const ISCONN: errno = 30;\n /** Is a directory. */\n // @ts-ignore: decorator\n @inline\n export const ISDIR: errno = 31;\n /** Too many levels of symbolic links. */\n // @ts-ignore: decorator\n @inline\n export const LOOP: errno = 32;\n /** File descriptor value too large. */\n // @ts-ignore: decorator\n @inline\n export const MFILE: errno = 33;\n /** Too many links. */\n // @ts-ignore: decorator\n @inline\n export const MLINK: errno = 34;\n /** Message too large. */\n // @ts-ignore: decorator\n @inline\n export const MSGSIZE: errno = 35;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const MULTIHOP: errno = 36;\n /** Filename too long. */\n // @ts-ignore: decorator\n @inline\n export const NAMETOOLONG: errno = 37;\n /** Network is down. */\n // @ts-ignore: decorator\n @inline\n export const NETDOWN: errno = 38;\n /** Connection aborted by network. */\n // @ts-ignore: decorator\n @inline\n export const NETRESET: errno = 39;\n /** Network unreachable. */\n // @ts-ignore: decorator\n @inline\n export const NETUNREACH: errno = 40;\n /** Too many files open in system. */\n // @ts-ignore: decorator\n @inline\n export const NFILE: errno = 41;\n /** No buffer space available. */\n // @ts-ignore: decorator\n @inline\n export const NOBUFS: errno = 42;\n /** No such device. */\n // @ts-ignore: decorator\n @inline\n export const NODEV: errno = 43;\n /** No such file or directory. */\n // @ts-ignore: decorator\n @inline\n export const NOENT: errno = 44;\n /** Executable file format error. */\n // @ts-ignore: decorator\n @inline\n export const NOEXEC: errno = 45;\n /** No locks available. */\n // @ts-ignore: decorator\n @inline\n export const NOLCK: errno = 46;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const NOLINK: errno = 47;\n /** Not enough space. */\n // @ts-ignore: decorator\n @inline\n export const NOMEM: errno = 48;\n /** No message of the desired type. */\n // @ts-ignore: decorator\n @inline\n export const NOMSG: errno = 49;\n /** Protocol not available. */\n // @ts-ignore: decorator\n @inline\n export const NOPROTOOPT: errno = 50;\n /** No space left on device. */\n // @ts-ignore: decorator\n @inline\n export const NOSPC: errno = 51;\n /** Function not supported. */\n // @ts-ignore: decorator\n @inline\n export const NOSYS: errno = 52;\n /** The socket is not connected. */\n // @ts-ignore: decorator\n @inline\n export const NOTCONN: errno = 53;\n /** Not a directory or a symbolic link to a directory. */\n // @ts-ignore: decorator\n @inline\n export const NOTDIR: errno = 54;\n /** Directory not empty. */\n // @ts-ignore: decorator\n @inline\n export const NOTEMPTY: errno = 55;\n /** State not recoverable. */\n // @ts-ignore: decorator\n @inline\n export const NOTRECOVERABLE: errno = 56;\n /** Not a socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSOCK: errno = 57;\n /** Not supported, or operation not supported on socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSUP: errno = 58;\n /** Inappropriate I/O control operation. */\n // @ts-ignore: decorator\n @inline\n export const NOTTY: errno = 59;\n /** No such device or address. */\n // @ts-ignore: decorator\n @inline\n export const NXIO: errno = 60;\n /** Value too large to be stored in data type. */\n // @ts-ignore: decorator\n @inline\n export const OVERFLOW: errno = 61;\n /** Previous owner died. */\n // @ts-ignore: decorator\n @inline\n export const OWNERDEAD: errno = 62;\n /** Operation not permitted. */\n // @ts-ignore: decorator\n @inline\n export const PERM: errno = 63;\n /** Broken pipe. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: errno = 64;\n /** Protocol error. */\n // @ts-ignore: decorator\n @inline\n export const PROTO: errno = 65;\n /** Protocol not supported. */\n // @ts-ignore: decorator\n @inline\n export const PROTONOSUPPORT: errno = 66;\n /** Protocol wrong type for socket. */\n // @ts-ignore: decorator\n @inline\n export const PROTOTYPE: errno = 67;\n /** Result too large. */\n // @ts-ignore: decorator\n @inline\n export const RANGE: errno = 68;\n /** Read-only file system. */\n // @ts-ignore: decorator\n @inline\n export const ROFS: errno = 69;\n /** Invalid seek. */\n // @ts-ignore: decorator\n @inline\n export const SPIPE: errno = 70;\n /** No such process. */\n // @ts-ignore: decorator\n @inline\n export const SRCH: errno = 71;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const STALE: errno = 72;\n /** Connection timed out. */\n // @ts-ignore: decorator\n @inline\n export const TIMEDOUT: errno = 73;\n /** Text file busy. */\n // @ts-ignore: decorator\n @inline\n export const TXTBSY: errno = 74;\n /** Cross-device link. */\n // @ts-ignore: decorator\n @inline\n export const XDEV: errno = 75;\n /** Extension: Capabilities insufficient. */\n // @ts-ignore: decorator\n @inline\n export const NOTCAPABLE: errno = 76;\n}\nexport type errno = u16;\n\n/** An event that occurred. */\n@unmanaged export abstract class event {\n /** User-provided value that got attached to `subscription#userdata`. */\n userdata: userdata;\n /** If non-zero, an error that occurred while processing the subscription request. */\n error: errno;\n /* The type of the event that occurred. */\n type: eventtype;\n private __padding0: u16;\n}\n\n/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\n@unmanaged export class rwevent extends event {\n /* The number of bytes available for reading or writing. */\n nbytes: filesize;\n /* The state of the file descriptor. */\n flags: eventrwflags;\n private __padding1: u32;\n}\n\n/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\nexport namespace eventrwflags {\n /** The peer of this socket has closed or disconnected. */\n // @ts-ignore: decorator\n @inline\n export const HANGUP: eventrwflags = 1;\n}\nexport type eventrwflags = u16;\n\n/** Type of a subscription to an event or its occurrence. */\nexport namespace eventtype {\n /** The time value of clock has reached the timestamp. */\n // @ts-ignore: decorator\n @inline\n export const CLOCK: eventtype = 0;\n /** File descriptor has data available for reading. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: eventtype = 1;\n /** File descriptor has capacity available for writing */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: eventtype = 2;\n}\nexport type eventtype = u8;\n\n/** Exit code generated by a process when exiting. */\nexport type exitcode = u32;\n\n/** A file descriptor number. */\nexport type fd = u32;\n\n/** File descriptor flags. */\nexport namespace fdflags {\n /** Append mode: Data written to the file is always appended to the file's end. */\n // @ts-ignore: decorator\n @inline\n export const APPEND: fdflags = 1;\n /** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */\n // @ts-ignore: decorator\n @inline\n export const DSYNC: fdflags = 2;\n /** Non-blocking mode. */\n // @ts-ignore: decorator\n @inline\n export const NONBLOCK: fdflags = 4;\n /** Synchronized read I/O operations. */\n // @ts-ignore: decorator\n @inline\n export const RSYNC: fdflags = 8;\n /** Write according to synchronized I/O file integrity completion. */\n // @ts-ignore: decorator\n @inline\n export const SYNC: fdflags = 16;\n}\nexport type fdflags = u16;\n\n/** File descriptor attributes. */\n@unmanaged export class fdstat {\n /** File type. */\n filetype: filetype;\n /** File descriptor flags. */\n flags: fdflags;\n /** Rights that apply to this file descriptor. */\n rights_base: rights;\n /** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */\n rights_inheriting: rights;\n}\n\n/** Relative offset within a file. */\nexport type filedelta = i64;\n\n/** Non-negative file size or length of a region within a file. */\nexport type filesize = u64;\n\n/** File attributes. */\n@unmanaged export class filestat {\n /** Device ID of device containing the file. */\n dev: device;\n /** File serial number. */\n ino: inode;\n /** File type. */\n filetype: filetype;\n /** Number of hard links to the file. */\n nlink: linkcount;\n /** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */\n size: filesize;\n /** Last data access timestamp. */\n atim: timestamp;\n /** Last data modification timestamp. */\n mtim: timestamp;\n /** Last file status change timestamp. */\n ctim: timestamp;\n}\n\n/** The type of a file descriptor or file. */\nexport namespace filetype {\n /** The type of the file descriptor or file is unknown or is different from any of the other types specified. */\n // @ts-ignore: decorator\n @inline\n export const UNKNOWN: filetype = 0;\n /** The file descriptor or file refers to a block device inode. */\n // @ts-ignore: decorator\n @inline\n export const BLOCK_DEVICE: filetype = 1;\n /** The file descriptor or file refers to a character device inode. */\n // @ts-ignore: decorator\n @inline\n export const CHARACTER_DEVICE: filetype = 2;\n /** The file descriptor or file refers to a directory inode. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: filetype = 3;\n /** The file descriptor or file refers to a regular file inode. */\n // @ts-ignore: decorator\n @inline\n export const REGULAR_FILE: filetype = 4;\n /** The file descriptor or file refers to a datagram socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_DGRAM: filetype = 5;\n /** The file descriptor or file refers to a byte-stream socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_STREAM: filetype = 6;\n /** The file refers to a symbolic link inode. */\n // @ts-ignore: decorator\n @inline\n export const SYMBOLIC_LINK: filetype = 7;\n}\nexport type filetype = u8;\n\n/** Which file time attributes to adjust. */\nexport namespace fstflags {\n /** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM: fstflags = 1;\n /** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM_NOW: fstflags = 2;\n /** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM: fstflags = 4;\n /** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM_NOW: fstflags = 8;\n}\nexport type fstflags = u16;\n\n/** File serial number that is unique within its file system. */\nexport type inode = u64;\n\n/** A region of memory for scatter/gather reads. */\n@unmanaged export class iovec {\n /** The address of the buffer to be filled. */\n buf: usize;\n /** The length of the buffer to be filled. */\n buf_len: usize;\n}\n\n/** Number of hard links to an inode. */\nexport type linkcount = u32;\n\n/** Flags determining the method of how paths are resolved. */\nexport namespace lookupflags {\n /** As long as the resolved path corresponds to a symbolic link, it is expanded. */\n // @ts-ignore: decorator\n @inline\n export const SYMLINK_FOLLOW: lookupflags = 1;\n}\nexport type lookupflags = u32;\n\n/** Open flags. */\nexport namespace oflags {\n /** Create file if it does not exist. */\n // @ts-ignore: decorator\n @inline\n export const CREAT: oflags = 1;\n /** Fail if not a directory. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: oflags = 2;\n /** Fail if file already exists. */\n // @ts-ignore: decorator\n @inline\n export const EXCL: oflags = 4;\n /** Truncate file to size 0. */\n // @ts-ignore: decorator\n @inline\n export const TRUNC: oflags = 8;\n}\nexport type oflags = u16;\n\n// TODO: undocumented\nexport namespace preopentype {\n // @ts-ignore: decorator\n @inline\n export const DIR: preopentype = 0;\n}\nexport type preopentype = u8;\n\n// TODO: undocumented\nexport abstract class prestat {\n type: preopentype;\n}\n\n// TODO: undocumented\nexport class dirprestat extends prestat {\n name_len: usize;\n}\n\n/** Flags provided to `sock_recv`. */\nexport namespace riflags {\n /** Returns the message without removing it from the socket's receive queue. */\n // @ts-ignore: decorator\n @inline\n export const PEEK: riflags = 1;\n /** On byte-stream sockets, block until the full amount of data can be returned. */\n // @ts-ignore: decorator\n @inline\n export const WAITALL: riflags = 2;\n}\nexport type riflags = u16;\n\n/** File descriptor rights, determining which actions may be performed. */\nexport namespace rights {\n /** The right to invoke `fd_datasync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_DATASYNC: rights = 1;\n /** The right to invoke `fd_read` and `sock_recv`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: rights = 2;\n /** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SEEK: rights = 4;\n /** The right to invoke `fd_fdstat_set_flags`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FDSTAT_SET_FLAGS: rights = 8;\n /** The right to invoke `fd_sync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SYNC: rights = 16;\n /** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */\n // @ts-ignore: decorator\n @inline\n export const FD_TELL: rights = 32;\n /** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: rights = 64;\n /** The right to invoke `fd_advise`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ADVISE: rights = 128;\n /** The right to invoke `fd_allocate`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ALLOCATE: rights = 256;\n /** The right to invoke `path_create_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_DIRECTORY: rights = 512;\n /** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_FILE: rights = 1024;\n /** The right to invoke `path_link` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_SOURCE: rights = 2048;\n /** The right to invoke `path_link` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_TARGET: rights = 4096;\n /** The right to invoke `path_open`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_OPEN: rights = 8192;\n /** The right to invoke `fd_readdir`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READDIR: rights = 16384;\n /** The right to invoke `path_readlink`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_READLINK: rights = 32768;\n /** The right to invoke `path_rename` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_SOURCE: rights = 65536;\n /** The right to invoke `path_rename` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_TARGET: rights = 131072;\n /** The right to invoke `path_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_GET: rights = 262144;\n /** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_SIZE: rights = 524288;\n /** The right to invoke `path_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_TIMES: rights = 1048576;\n /** The right to invoke `fd_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_GET: rights = 2097152;\n /** The right to invoke `fd_filestat_set_size`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_SIZE: rights = 4194304;\n /** The right to invoke `fd_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_TIMES: rights = 8388608;\n /** The right to invoke `path_symlink`. */\n // @ts-ignore: decorator\n @inline\n export const RIGHT_PATH_SYMLINK: rights = 16777216;\n /** The right to invoke `path_remove_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_REMOVE_DIRECTORY: rights = 33554432;\n /** The right to invoke `path_unlink_file`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_UNLINK_FILE: rights = 67108864;\n /** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */\n // @ts-ignore: decorator\n @inline\n export const POLL_FD_READWRITE: rights = 134217728;\n /** The right to invoke `sock_shutdown`. */\n // @ts-ignore: decorator\n @inline\n export const SOCK_SHUTDOWN: rights = 268435456;\n}\nexport type rights = u64;\n\n/** Flags returned by `sock_recv`. */\nexport namespace roflags {\n /** Message data has been truncated. */\n // @ts-ignore: decorator\n @inline\n export const DATA_TRUNCATED: roflags = 1;\n}\nexport type roflags = u16;\n\n/** Which channels on a socket to shut down. */\nexport namespace sdflags {\n /** Disables further receive operations. */\n // @ts-ignore: decorator\n @inline\n export const RD: sdflags = 1;\n /** Disables further send operations. */\n // @ts-ignore: decorator\n @inline\n export const WR: sdflags = 2;\n}\nexport type sdflags = u8;\n\n/** Flags provided to `sock_send`. */\nexport namespace siflags {\n // As there are currently no flags defined, it must be set to zero.\n}\nexport type siflags = u16;\n\n/** Signal condition. */\nexport namespace signal {\n /** Hangup. */\n // @ts-ignore: decorator\n @inline\n export const HUP: signal = 1;\n /** Terminate interrupt signal. */\n // @ts-ignore: decorator\n @inline\n export const INT: signal = 2;\n /** Terminal quit signal. */\n // @ts-ignore: decorator\n @inline\n export const QUIT: signal = 3;\n /** Illegal instruction. */\n // @ts-ignore: decorator\n @inline\n export const ILL: signal = 4;\n /** Trace/breakpoint trap. */\n // @ts-ignore: decorator\n @inline\n export const TRAP: signal = 5;\n /** Process abort signal. */\n // @ts-ignore: decorator\n @inline\n export const ABRT: signal = 6;\n /** Access to an undefined portion of a memory object. */\n // @ts-ignore: decorator\n @inline\n export const BUS: signal = 7;\n /** Erroneous arithmetic operation. */\n // @ts-ignore: decorator\n @inline\n export const FPE: signal = 8;\n /** Kill. */\n // @ts-ignore: decorator\n @inline\n export const KILL: signal = 9;\n /** User-defined signal 1. */\n // @ts-ignore: decorator\n @inline\n export const USR1: signal = 10;\n /** Invalid memory reference. */\n // @ts-ignore: decorator\n @inline\n export const SEGV: signal = 11;\n /** User-defined signal 2. */\n // @ts-ignore: decorator\n @inline\n export const USR2: signal = 12;\n /** Write on a pipe with no one to read it. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: signal = 13;\n /** Alarm clock. */\n // @ts-ignore: decorator\n @inline\n export const ALRM: signal = 14;\n /** Termination signal. */\n // @ts-ignore: decorator\n @inline\n export const TERM: signal = 15;\n /** Child process terminated, stopped, or continued. */\n // @ts-ignore: decorator\n @inline\n export const CHLD: signal = 16;\n /** Continue executing, if stopped. */\n // @ts-ignore: decorator\n @inline\n export const CONT: signal = 17;\n /** Stop executing. */\n // @ts-ignore: decorator\n @inline\n export const STOP: signal = 18;\n /** Terminal stop signal. */\n // @ts-ignore: decorator\n @inline\n export const TSTP: signal = 19;\n /** Background process attempting read. */\n // @ts-ignore: decorator\n @inline\n export const TTIN: signal = 20;\n /** Background process attempting write. */\n // @ts-ignore: decorator\n @inline\n export const TTOU: signal = 21;\n /** High bandwidth data is available at a socket. */\n // @ts-ignore: decorator\n @inline\n export const URG: signal = 22;\n /** CPU time limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XCPU: signal = 23;\n /** File size limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XFSZ: signal = 24;\n /** Virtual timer expired. */\n // @ts-ignore: decorator\n @inline\n export const VTALRM: signal = 25;\n // @ts-ignore: decorator\n @inline\n export const PROF: signal = 26;\n // @ts-ignore: decorator\n @inline\n export const WINCH: signal = 27;\n // @ts-ignore: decorator\n @inline\n export const POLL: signal = 28;\n // @ts-ignore: decorator\n @inline\n export const PWR: signal = 29;\n /** Bad system call. */\n // @ts-ignore: decorator\n @inline\n export const SYS: signal = 30;\n}\nexport type signal = u8;\n\n/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */\nexport namespace subclockflags {\n /** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */\n // @ts-ignore: decorator\n @inline\n export const ABSTIME: subclockflags = 1;\n}\nexport type subclockflags = u16;\n\n/** Subscription to an event. */\n@unmanaged export abstract class subscription {\n /** User-provided value that is attached to the subscription. */\n userdata: userdata;\n /** The type of the event to which to subscribe. */\n type: eventtype;\n private __padding0: u32;\n}\n\n/* Subscription to an event of type `eventtype.CLOCK`.**/\n@unmanaged export class clocksubscription extends subscription {\n /** The user-defined unique identifier of the clock. */\n identifier: userdata;\n /** The clock against which to compare the timestamp. */\n clock_id: clockid;\n /** The absolute or relative timestamp. */\n timeout: timestamp;\n /** The amount of time that the implementation may wait additionally to coalesce with other events. */\n precision: timestamp;\n /** Flags specifying whether the timeout is absolute or relative. */\n flags: subclockflags;\n private __padding1: u32;\n}\n\n/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/\n@unmanaged export class fdsubscription extends subscription {\n /** The file descriptor on which to wait for it to become ready for reading or writing. */\n fd: fd;\n}\n\n/** Timestamp in nanoseconds. */\nexport type timestamp = u64;\n\n/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */\nexport type userdata = u64;\n\n/** The position relative to which to set the offset of the file descriptor. */\nexport namespace whence {\n /** Seek relative to current position. */\n // @ts-ignore: decorator\n @inline\n export const CUR: whence = 0;\n /** Seek relative to end-of-file. */\n // @ts-ignore: decorator\n @inline\n export const END: whence = 1;\n /** Seek relative to start-of-file. */\n // @ts-ignore: decorator\n @inline\n export const SET: whence = 2;\n}\nexport type whence = u8;\n","bindings/wasi":'export * from "./wasi_unstable";\n',builtins:'// @ts-ignore: decorator\n@builtin\nexport declare function isInteger(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFloat(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isBoolean(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isSigned(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isReference(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isString(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArray(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArrayLike(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFunction(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isNullable(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isDefined(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isConstant(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isManaged(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isVoid(): boolean;\n\n// @ts-ignore\n@builtin\nexport declare function lengthof(func?: T): i32;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function clz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ctz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function popcnt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function abs(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function max(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function min(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ceil(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function floor(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function nearest(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function reinterpret(value: number): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sqrt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function trunc(value: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function load(offset: usize, immOffset?: usize, immAlign?: usize): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function store(offset: usize, value: void, immOffset?: usize, immAlign?: usize): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sizeof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function alignof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function offsetof(fieldName?: string): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function idof(): u32;\n\n// @ts-ignore\n@builtin\nexport declare function nameof(): string;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unreachable(): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function changetype(value: void): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unchecked(expr: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_indirect(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_direct(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function instantiate(...args: void[]): T;\n\nexport namespace atomic {\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: T, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n\n // @ts-ignore: decorator\n @builtin\n export declare function notify(ptr: usize, count: i32): i32;\n}\n\n// @ts-ignore: decorator\n@lazy\nexport const enum AtomicWaitResult {\n OK = 0,\n NOT_EQUAL = 1,\n TIMED_OUT = 2\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8(value: void): i8;\n\nexport namespace i8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i8 = -128;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i8 = 127;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16(value: void): i16;\n\nexport namespace i16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i16 = -32768;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i16 = 32767;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32(value: void): i32;\n\nexport namespace i32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i32 = -2147483648;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i32 = 2147483647;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f32(value: f32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64(value: void): i64;\n\nexport namespace i64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i64 = -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i64 = 9223372036854775807;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f64(value: f64): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw32 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isize(value: void): isize;\n\nexport namespace isize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u8(value: void): u8;\n\nexport namespace u8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u8 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u8 = 255;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u16(value: void): u16;\n\nexport namespace u16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u16 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u16 = 65535;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u32(value: void): u32;\n\nexport namespace u32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u32 = 4294967295;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u64(value: void): u64;\n\nexport namespace u64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function usize(value: void): usize;\n\nexport namespace usize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: usize = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function bool(value: void): bool;\n\nexport namespace bool {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: bool = false;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: bool = true;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32(value: void): f32;\n\nexport namespace f32 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x34000000); // 0x1p-23f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x00000001); // 0x0.000001p+0f\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7F7FFFFF); // 0x1.fffffep+127f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x00800000); // 0x1p-126f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f32, y: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i32(value: i32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f32): f32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f32): f32;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64(value: void): f64;\n\nexport namespace f64 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x3CB0000000000000); // 0x1p-52\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x0000000000000001); // 0x0.0000000000001p+0\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7FEFFFFFFFFFFFFF); // 0x1.fffffffffffffp+1023\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x0010000000000000); // 0x1p-1022\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f64, y: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i64(value: i64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f64): f64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f64): f64;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function v128(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace v128 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128; // except i64\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function not(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function bitselect(v1: v128, v2: v128, c: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8x16(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace i8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\n\nexport namespace i16x8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\n\nexport namespace i32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f32x4_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f32x4_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64x2(a: i64, b: i64): v128;\n\nexport namespace i64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f64x2_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f64x2_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\n\nexport namespace f32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i32x4(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i32x4(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64x2(a: f64, b: f64): v128;\n\nexport namespace f64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i64x2(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i64x2(a: v128): v128;\n}\n\nexport namespace v8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(\n a: v128, b: v128,\n l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8,\n l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8\n ): v128;\n}\n\n// @ts-ignore: decorator\n@external("env", "abort")\ndeclare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n// @ts-ignore: decorator\n@external("env", "trace")\ndeclare function trace(\n message: string,\n n?: i32,\n a0?: f64,\n a1?: f64,\n a2?: f64,\n a3?: f64,\n a4?: f64\n): void;\n',compat:"\nexport type ReturnType = returnof;\n",dataview:'import { BLOCK_MAXSIZE } from "./rt/common";\nimport { ArrayBuffer } from "./arraybuffer";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\n\n// TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte\n\nexport class DataView {\n\n private data: ArrayBuffer;\n private dataStart: usize;\n private dataLength: i32;\n\n constructor(\n buffer: ArrayBuffer,\n byteOffset: i32 = 0,\n byteLength: i32 = buffer.byteLength\n ) {\n if (\n i32(byteLength > BLOCK_MAXSIZE) |\n i32(byteOffset + byteLength > buffer.byteLength)\n ) throw new RangeError(E_INVALIDLENGTH);\n this.data = buffer; // retains\n var dataStart = changetype(buffer) + byteOffset;\n this.dataStart = dataStart;\n this.dataLength = byteLength;\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n getFloat32(byteOffset: i32, littleEndian: boolean = false): f32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getFloat64(byteOffset: i32, littleEndian: boolean = false): f64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getInt8(byteOffset: i32): i8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getInt16(byteOffset: i32, littleEndian: boolean = false): i16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getInt32(byteOffset: i32, littleEndian: boolean = false): i32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint8(byteOffset: i32): u8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getUint16(byteOffset: i32, littleEndian: boolean = false): u16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint32(byteOffset: i32, littleEndian: boolean = false): u32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setFloat32(byteOffset: i32, value: f32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setFloat64(byteOffset: i32, value: f64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setInt8(byteOffset: i32, value: i8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setInt16(byteOffset: i32, value: i16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setInt32(byteOffset: i32, value: i32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint8(byteOffset: i32, value: u8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setUint16(byteOffset: i32, value: u16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint32(byteOffset: i32, value: u32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n // Non-standard additions that make sense in WebAssembly, but won\'t work in JS:\n\n getInt64(byteOffset: i32, littleEndian: boolean = false): i64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i64 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint64(byteOffset: i32, littleEndian: boolean = false): u64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setInt64(byteOffset: i32, value: i64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint64(byteOffset: i32, value: u64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n toString(): string {\n return "[object DataView]";\n }\n}\n',date:'import {\n UTC as Date_UTC,\n now as Date_now\n} from "./bindings/Date";\n\nexport class Date {\n\n @inline static UTC(\n year: i32,\n month: i32 = 0,\n day: i32 = 1,\n hour: i32 = 0,\n minute: i32 = 0,\n second: i32 = 0,\n millisecond: i64 = 0\n ): i64 {\n return Date_UTC(year, month, day, hour, minute, second, millisecond);\n }\n\n @inline static now(): i64 {\n return Date_now();\n }\n\n private value: i64;\n\n constructor(value: i64) {\n this.value = value;\n }\n\n getTime(): i64 {\n return this.value;\n }\n\n setTime(value: i64): i64 {\n this.value = value;\n return value;\n }\n}\n',diagnostics:"// @ts-ignore: decorator\n@builtin\nexport declare function ERROR(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function WARNING(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function INFO(message?: string): void;\n",error:'export class Error {\n\n name: string = "Error";\n stack: string = ""; // TODO\n\n constructor(\n public message: string = ""\n ) {}\n\n toString(): string {\n var message = this.message;\n return message.length\n ? this.name + ": " + message\n : this.name;\n }\n}\n\nexport class RangeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "RangeError";\n }\n}\n\nexport class TypeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "TypeError";\n }\n}\n\nexport class SyntaxError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "SyntaxError";\n }\n}\n',fixedarray:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";\n\n// NOTE: DO NOT USE YET!\n\n// TODO: FixedArray with S being the static size, i.e. `new FixedArray`.\n// Then hard-wire this special type to the compiler and do static length checks instead :)\n\nexport class FixedArray {\n [key: number]: T;\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n var outSize = length << alignof();\n var out = __alloc(outSize, idof>());\n memory.fill(out, 0, outSize);\n return changetype>(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof();\n }\n\n @operator("[]") private __get(index: i32): T {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n this.__unchecked_set(index, value);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(changetype(this) + (index << alignof()));\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = changetype(this) + (index << alignof());\n let oldValue = load(offset);\n if (changetype(value) != oldValue) {\n store(offset, __retain(changetype(value)));\n __release(changetype(oldValue));\n }\n } else {\n store(changetype(this) + (index << alignof()), value);\n }\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = changetype(this);\n let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n }\n}\n',heap:"// @ts-ignore: decorator\n@builtin\nexport declare const __heap_base: usize;\n",iterator:"export abstract class Iterable {\n // ?\n}\n\n@sealed\nexport abstract class Iterator {\n\n // private constructor(iterable: Iterable) {\n // }\n\n // TODO: these need to evaluate the classId at the respective reference in order to obtain the\n // next value, i.e. arrays work differently than maps. we'd then have:\n //\n // ╒═══════════════════ Iterator layout (32-bit) ══════════════════╕\n // 3 2 1\n // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n // │ index │\n // ├─────────────────────────────────────────────────────────┬───┬─┤\n // │ reference │ 0 │D│\n // └─────────────────────────────────────────────────────────┴───┴─┘\n // D: Done flag\n\n // get value(this: u64): T {\n // ?\n // }\n\n // next(this: u64): Iterator {\n // ?\n // }\n\n done(this: u64): bool {\n return (this & 1);\n }\n}\n",map:'/// \n\nimport { HASH } from "./util/hash";\nimport { E_KEYNOTFOUND } from "util/error";\n\n// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a map entry. */\n@unmanaged class MapEntry {\n key: K;\n value: V;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K/V is <= 32-bits\n const maxkv = sizeof() > sizeof() ? sizeof() : sizeof();\n const align = (maxkv > sizeof() ? maxkv : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Map {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // MapEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() {\n this.clear();\n }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: K, hashCode: u32): MapEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n has(key: K): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n @operator("[]")\n get(key: K): V {\n var entry = this.find(key, HASH(key));\n if (!entry) throw new Error(E_KEYNOTFOUND); // cannot represent `undefined`\n return entry.value;\n }\n\n @operator("[]=")\n set(key: K, value: V): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (entry) {\n if (isManaged()) {\n let oldRef = changetype(entry.value);\n if (changetype(value) != oldRef) {\n entry.value = changetype(__retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n entry.value = value;\n }\n } else {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n let entries = this.entries;\n entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE());\n // link with the map\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n entry.value = isManaged()\n ? changetype(__retain(changetype(value)))\n : value;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n delete(key: K): bool {\n var entry = this.find(key, HASH(key));\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key));\n if (isManaged()) __release(changetype(entry.value));\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr);\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr);\n newEntry.key = oldEntry.key;\n newEntry.value = oldEntry.value;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n keys(): K[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var keys = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n keys.push(entry.key);\n }\n }\n return keys;\n }\n\n values(): V[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.value);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Map]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged() || isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n if (isManaged()) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n if (isManaged()) {\n let val = changetype(entry.value);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',math:'import * as JSMath from "./bindings/Math";\nexport { JSMath };\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from "./builtins";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n// TODO: sin, cos, tan for Math namespace\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n return NativeMath.exp(x - kln2) * scale * scale;\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7ff;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u >> 63);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_32: u32;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx >> 31) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var e = reinterpret(x) >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n if (hx >> 31) return -x;\n return x;\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var s = u >> 63;\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n switch (m) {\n case 0: return PI / 4;\n case 1: return -PI / 4;\n case 2: return 3 * PI / 4;\n case 3: return -3 * PI / 4;\n }\n } else {\n switch (m) {\n case 0: return 0.0;\n case 1: return -0.0;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // TODO\n return JSMath.cos(x);\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var hx = (reinterpret(x) >> 32);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n var hi: f64, lo: f64 = 0;\n var k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n var xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n var xq = xs * xs;\n var c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n var y = 1.0 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32 & 0x7FFFFFFF);\n var k = 0, sign_ = (u >> 63);\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign_) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = (ux >> 52);\n var ey = (uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || (hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = (u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = (hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln2hi;\n var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n var y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n var u_ = reinterpret(x);\n var hx = (u_ >> 32);\n var lx = u_;\n u_ = reinterpret(y);\n var hy = (u_ >> 32);\n var ly = u_;\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n var yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let kcond = k > 20;\n let offset = select(52, 20, kcond) - k;\n let Ly = select(ly, iy, kcond);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n var ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n var s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n var t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n var j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret((((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n var y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = (u_ >> 32);\n var i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret((n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = (reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n\n export function seedRandom(value: i64): void {\n random_seeded = true;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n assert(\n random_state0_64 != 0 && random_state1_64 != 0 &&\n random_state0_32 != 0 && random_state1_32 != 0\n );\n }\n\n export function random(): f64 { // see: v8/src/base/utils/random-number-generator.cc\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = (s0 >> 12) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f64): f64 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n // In ECMAScript all NaN values are indistinguishable from each other\n // so we need handle NaN and negative NaN in similar way\n return ((reinterpret(x) >>> 63) & i32(x == x));\n }\n\n export function sin(x: f64): f64 { // TODO\n return JSMath.sin(x);\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var absx = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n t = expm1(absx);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // TODO\n return JSMath.tan(x);\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n /* make sure final n < -53 to avoid double\n rounding in the subnormal range */\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx << 63;\n return reinterpret(ux);\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = (ux >> 63);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return sx ? -x : x;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy\nconst PIO2_TABLE: u64[] = [\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n];\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret((0x7F + (k >> 1)) << 23);\n return NativeMathf.exp(x - kln2) * scale * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n const bits = PIO2_TABLE;\n\n var offset = (u >> 23) - 152;\n var index = offset >> 6;\n var shift = offset & 63;\n\n var b0 = unchecked(bits[index + 0]);\n var b1 = unchecked(bits[index + 1]);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = unchecked(bits[index + 2]);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product: u64 = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q: i32 = ((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const pi2hi = reinterpret(0x3FF921FB50000000); // 1.57079631090164184570\n const pi2lo = reinterpret(0x3E5110B4611A6263); // 1.58932547735281966916e-8\n const _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { /* π * 0x1p28 */\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const S1 = reinterpret(0xBFC5555554CBAC77); // -0x15555554cbac77.0p-55\n const S2 = reinterpret(0x3F811110896EFBB2); // 0x111110896efbb2.0p-59\n const S3 = reinterpret(0xBF2A00F9E2CAE774); // -0x1a00f9e2cae774.0p-65\n const S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return ((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const C0 = reinterpret(0xBFDFFFFFFD0C5E81); // -0x1ffffffd0c5e81.0p-54\n const C1 = reinterpret(0x3FA55553E1053A42); // 0x155553e1053a42.0p-57\n const C2 = reinterpret(0xBF56C087E80F1E27); // -0x16c087e80f1e27.0p-62\n const C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return (((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n\n const T0 = reinterpret(0x3FD5554D3418C99F); /* 0x15554d3418c99f.0p-54 */\n const T1 = reinterpret(0x3FC112FD38999F72); /* 0x1112fd38999f72.0p-55 */\n const T2 = reinterpret(0x3FAB54C91D865AFE); /* 0x1b54c91d865afe.0p-57 */\n const T3 = reinterpret(0x3F991DF3908C33CE); /* 0x191df3908c33ce.0p-58 */\n const T4 = reinterpret(0x3F685DADFCECF44E); /* 0x185dadfcecf44e.0p-61 */\n const T5 = reinterpret(0x3F8362B9BF971BCD); /* 0x1362b9bf971bcd.0p-59 */\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return (odd ? -1 / r : r);\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000);\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx >> 31) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) {\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (a < 0x3F800000 + (12 << 23)) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000);\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = (pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000);\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = (((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n switch (m) {\n case 0: return pi / 4;\n case 1: return -pi / 4;\n case 2: return 3 * pi / 4;\n case 3: return -3 * pi / 4;\n }\n } else {\n switch (m) {\n case 0: return 0;\n case 1: return -0;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const c1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const c2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const c3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n /* raise inexact if x != 0 */\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix > 0x4016cbe3) { /* |x| ~> 3π/4 */\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix > 0x40afeddf) { /* |x| ~> 7π/4 */\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n /* cos(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000);\n var hx = reinterpret(x);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx >= 0x42B17218) {\n if (!sign_) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n var hi: f32, lo: f32;\n var k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n var xx = x * x;\n var c = x - xx * (P1 + xx * P2);\n var y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x42B17180), // 8.8721679688e+01f\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign_ = (u >> 31);\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign_) return -1;\n if (x > o_threshold) {\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt((x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n var u = reinterpret(x);\n var k = 0;\n if (u < 0x00800000 || (u >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (u >> 31) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) return x;\n else if (u == 0x3F800000) return 0;\n u += 0x3F800000 - 0x3F3504F3;\n k += (u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ix = reinterpret(hi);\n ix &= 0xFFFFF000;\n hi = reinterpret(ix);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n var ix = reinterpret(x);\n var c: f32 = 0, f: f32 = 0;\n var k: i32 = 1;\n if (ix < 0x3ED413D0 || (ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = (iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k: i32 = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n var u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n var lo: f32 = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 { // see: musl/src/math/powf.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3F15C000), // 5.84960938e-01f\n dp_l1 = reinterpret(0x35D1CFDC), // 1.56322085e-06f\n two24 = reinterpret(0x4B800000), // 16777216f\n huge = reinterpret(0x7149F2CA), // 1.0e+30f\n tiny = reinterpret(0x0DA24260), // 1.0e-30f\n L1 = reinterpret(0x3F19999A), // 6.0000002384e-01f\n L2 = reinterpret(0x3EDB6DB7), // 4.2857143283e-01f\n L3 = reinterpret(0x3EAAAAAB), // 3.3333334327e-01f\n L4 = reinterpret(0x3E8BA305), // 2.7272811532e-01f\n L5 = reinterpret(0x3E6C3255), // 2.3066075146e-01f\n L6 = reinterpret(0x3E53F142), // 2.0697501302e-01f\n P1 = reinterpret(0x3E2AAAAB), // 1.6666667163e-01f\n P2 = reinterpret(0xBB360B61), // -2.7777778450e-03f\n P3 = reinterpret(0x388AB355), // 6.6137559770e-05f\n P4 = reinterpret(0xB5DDEA0E), // -1.6533901999e-06f\n P5 = reinterpret(0x3331BB4C), // 4.1381369442e-08f\n lg2 = reinterpret(0x3F317218), // 6.9314718246e-01f\n lg2_h = reinterpret(0x3F317200), // 6.93145752e-01f\n lg2_l = reinterpret(0x35BFBE8C), // 1.42860654e-06f\n ovt = reinterpret(0x3338AA3C), // 4.2995665694e-08f\n cp = reinterpret(0x3F76384F), // 9.6179670095e-01\n cp_h = reinterpret(0x3F764000), // 9.6191406250e-01\n cp_l = reinterpret(0xB8F623C6), // -1.1736857402e-04\n ivln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00\n ivln2_h = reinterpret(0x3FB8AA00), // 1.4426879883e+00\n ivln2_l = reinterpret(0x36ECA570), // 7.0526075433e-06\n inv3 = reinterpret(0x3EAAAAAB); // 0.333333333333\n var hx = reinterpret(x);\n var hy = reinterpret(y);\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if (iy == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3F800000) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if (ix > 0x7F800000 || iy > 0x7F800000) return x + y; // NaN if either arg is NaN\n var yisint = 0, j: i32, k: i32;\n if (hx < 0) {\n if (iy >= 0x4B800000) yisint = 2;\n else if (iy >= 0x3F800000) {\n k = (iy >> 23) - 0x7F;\n let ki = 23 - k;\n j = iy >> ki;\n if ((j << ki) == iy) yisint = 2 - (j & 1);\n }\n }\n if (iy == 0x7F800000) { // y is +-inf\n if (ix == 0x3F800000) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix > 0x3F800000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3F800000) return hy >= 0 ? x : 1.0 / x;\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3F000000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n var ax = builtin_abs(x);\n var z: f32;\n if (ix == 0x7F800000 || ix == 0 || ix == 0x3F800000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3F800000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n }\n else if (yisint == 1) z = -z;\n }\n return z;\n }\n var sn = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) sn = -1.0;\n }\n var t1: f32, t2: f32, r: f32, s: f32, t: f32, u: f32, v: f32, w: f32, p_h: f32, p_l: f32;\n var n: i32, is: i32;\n if (iy > 0x4D000000) {\n if (ix < 0x3F7FFFF8) return hy < 0 ? sn * huge * huge : sn * tiny * tiny;\n if (ix > 0x3F800007) return hy > 0 ? sn * huge * huge : sn * tiny * tiny;\n t = ax - 1;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = v - (t1 - u);\n } else {\n let s2: f32, s_h: f32, s_l: f32, t_h: f32, t_l: f32;\n n = 0;\n if (ix < 0x00800000) {\n ax *= two24;\n n -= 24;\n ix = reinterpret(ax);\n }\n n += (ix >> 23) - 0x7F;\n j = ix & 0x007FFFFF;\n ix = j | 0x3F800000;\n if (j <= 0x1CC471) k = 0;\n else if (j < 0x5DB3D7) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00800000;\n }\n ax = reinterpret(ix);\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n s = u * v;\n s_h = s;\n is = reinterpret(s_h);\n s_h = reinterpret(is & 0xFFFFF000);\n is = ((ix >> 1) & 0xFFFFF000) | 0x20000000;\n t_h = reinterpret(is + 0x00400000 + (k << 21));\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = s * s;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + s);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n is = reinterpret(t_h);\n t_h = reinterpret(is & 0xFFFFF000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * s;\n p_h = u + v;\n is = reinterpret(p_h);\n p_h = reinterpret(is & 0xFFFFF000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = (((z_h + z_l) + dp_h) + t);\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n is = reinterpret(y);\n var y1 = reinterpret(is & 0xFFFFF000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n j = reinterpret(z);\n if (j > 0x43000000) {\n return sn * huge * huge;\n } else if (j == 0x43000000) {\n if (p_l + ovt > z - p_h) return sn * huge * huge;\n } else if ((j & 0x7FFFFFFF) > 0x43160000) {\n return sn * tiny * tiny;\n } else if (j == 0xC3160000) {\n if (p_l <= z - p_h) return sn * tiny * tiny;\n }\n var i = j & 0x7FFFFFFF;\n k = (i >> 23) - 0x7F;\n n = 0;\n if (i > 0x3F000000) {\n n = j + (0x00800000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 23) - 0x7F;\n t = reinterpret(n & ~(0x007FFFFF >> k));\n n = ((n & 0x007FFFFF) | 0x00800000) >> (23 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n is = reinterpret(t);\n t = reinterpret(is & 0xFFFF8000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = reinterpret(z);\n j += n << 23;\n if ((j >> 23) <= 0) z = scalbn(z, n);\n else z = reinterpret(j);\n return sn * z;\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f32): f32 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n // @ts-ignore: type\n return ((reinterpret(x) >>> 31) & (x == x));\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const s2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var absx = reinterpret(u);\n var t: f32;\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n t = expm1(absx);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2f(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const t1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const t2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const t3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n /* tan(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* argument reduction */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx;\n return reinterpret(ux);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = (ux >> 31);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // q++;\n }\n return sx ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const s2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7fffffff;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n /* -sin(x + c) is not correct if x+c could be 0: -0 vs +0 */\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n\n switch (n & 3) {\n case 0: {\n sincos_sin = s;\n sincos_cos = c;\n break;\n }\n case 1: {\n sincos_sin = c;\n sincos_cos = -s;\n break;\n }\n case 2: {\n sincos_sin = -s;\n sincos_cos = -c;\n break;\n }\n case 3:\n default: {\n sincos_sin = -c;\n sincos_cos = s;\n break;\n }\n }\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 5) {\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i32): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 6) {\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow32f(x: f32, e: i32): f32 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out: f32 = 1;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n\nexport function ipow64f(x: f64, e: i32): f64 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out = 1.0;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n',memory:'import { memcmp, memmove, memset } from "./util/memory";\nimport { E_NOTIMPLEMENTED } from "./util/error";\n\n/** Memory manager interface. */\nexport namespace memory {\n\n /** Gets the size of the memory in pages. */\n // @ts-ignore: decorator\n @builtin\n export declare function size(): i32;\n\n /** Grows the memory by the given size in pages and returns the previous size in pages. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function grow(pages: i32): i32;\n\n /** Fills a section in memory with the specified byte value. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function fill(dst: usize, c: u8, n: usize): void {\n memset(dst, c, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Copies a section of memory to another. Has move semantics. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function copy(dst: usize, src: usize, n: usize): void {\n memmove(dst, src, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Initializes a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Drops a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function drop(segmentIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Repeats a section of memory at a specific address. */\n // @ts-ignore: decorator\n @unsafe\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void {\n var index: usize = 0;\n var total = srcLength * count;\n while (index < total) {\n memory.copy(dst + index, src, srcLength);\n index += srcLength;\n }\n }\n\n /** Compares a section of memory to another. */\n // @ts-ignore: decorator\n @inline\n export function compare(vl: usize, vr: usize, n: usize): i32 {\n return memcmp(vl, vr, n);\n }\n}\n',number:'import { itoa, dtoa } from "./util/number";\nimport { strtol } from "./util/string";\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const NaN: f64 = 0 / 0;\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const Infinity: f64 = 1 / 0;\n\nexport function isNaN(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value != value;\n}\n\nexport function isFinite(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value - value == 0;\n}\n\n@sealed @unmanaged\nexport abstract class I8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i8 = i8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i8 = i8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i8 {\n return strtol(value, radix);\n }\n\n toString(this: i8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i16 = i16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i16 = i16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i16 {\n return strtol(value, radix);\n }\n\n toString(this: i16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i32 = i32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i32 = i32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i32 {\n return strtol(value, radix);\n }\n\n toString(this: i32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i64 = i64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i64 = i64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i64 {\n return strtol(value, radix);\n }\n\n toString(this: i64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Isize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: isize = isize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: isize = isize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): isize {\n return strtol(value, radix);\n }\n\n toString(this: isize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u8 = u8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u8 = u8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u8 {\n return strtol(value, radix);\n }\n\n toString(this: u8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u16 = u16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u16 = u16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u16 {\n return strtol(value, radix);\n }\n\n toString(this: u16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u32 = u32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u32 = u32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u32 {\n return strtol(value, radix);\n }\n\n toString(this: u32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u64 = u64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u64 = u64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u64 {\n return strtol(value, radix);\n }\n\n toString(this: u64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Usize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: usize = usize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: usize = usize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): usize {\n return strtol(value, radix);\n }\n\n toString(this: usize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Bool {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: bool = bool.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: bool = bool.MAX_VALUE;\n\n toString(this: bool): String {\n // TODO: radix?\n return this ? "true" : "false";\n }\n}\n\nexport { Bool as Boolean };\n\n@sealed @unmanaged\nexport abstract class F32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f32 = f32.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f32 = f32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f32 = f32.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f32 = f32.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f32 = f32.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f32 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f32 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f32 = NaN;\n\n static isNaN(value: f32): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f32): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f32): bool {\n return abs(value) <= f32.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f32): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f32 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f32 {\n return parseFloat(value);\n }\n\n toString(this: f32): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class F64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f64 = f64.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f64 = f64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f64 = f64.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f64 = f64.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f64 = f64.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f64 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f64 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f64 = NaN;\n\n static isNaN(value: f64): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f64): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f64): bool {\n return abs(value) <= f64.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f64): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f64 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f64 {\n return parseFloat(value);\n }\n\n toString(this: f64, radix: i32 = 0): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\nexport { F64 as Number };\n',polyfills:"export function bswap(value: T): T {\n if (isInteger()) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n }\n if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n }\n if (sizeof() == 8) {\n let a = (value >> 8) & 0x00FF00FF00FF00FF;\n let b = (value & 0x00FF00FF00FF00FF) << 8;\n let v = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n }\n assert(false);\n return value;\n}\n\nexport function bswap16(value: T): T {\n if (isInteger() && sizeof() <= 4) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n } else if (sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n }\n assert(false);\n return value;\n}\n",regexp:'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',rt:'import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo";\nimport { E_INDEXOUTOFRANGE } from "./util/error";\nimport { BLOCK, BLOCK_OVERHEAD } from "./rt/common";\nimport { ArrayBufferView } from "./arraybuffer";\n\n// @ts-ignore: decorator\n@builtin\nexport declare const __rtti_base: usize;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_globals(cookie: u32): void;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_members(ref: usize, cookie: u32): void;\n\n// @ts-ignore: decorator\n@unsafe\nexport function __typeinfo(id: u32): TypeinfoFlags {\n var ptr = __rtti_base;\n if (id > load(ptr)) throw new Error(E_INDEXOUTOFRANGE);\n return changetype(ptr + sizeof() + id * offsetof()).flags;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __instanceof(ref: usize, superId: u32): bool { // keyword\n var id = changetype(ref - BLOCK_OVERHEAD).rtId;\n var ptr = __rtti_base;\n if (id <= load(ptr)) {\n do if (id == superId) return true;\n while (id = changetype(ptr + sizeof() + id * offsetof()).base);\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize {\n var array = __alloc(offsetof(), id);\n var bufferSize = length << alignLog2;\n var buffer = __alloc(bufferSize, idof());\n store(array, __retain(buffer), offsetof("data"));\n changetype(array).dataStart = buffer;\n changetype(array).dataLength = bufferSize;\n store(changetype(array), length, offsetof("length_"));\n if (data) memory.copy(buffer, data, bufferSize);\n return array;\n}\n\n// These are provided by the respective implementation, included as another entry file by asc:\n\n// @builtin @unsafe\n// export declare function __alloc(size: usize, id: u32): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __realloc(ref: usize, size: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __free(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __retain(ref: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __release(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __collect(): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __visit(ref: usize, cookie: u32): void;\n',"rt/common":"// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n\n// ╒════════════════ Common block layout (32-bit) ═════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime size │ -4\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ ... │ ref\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize; // WASM64 needs adaption\n /** Garbage collector info. */\n gcInfo: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD = (offsetof() + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n","rt/index-full":'export { __alloc } from "rt/tlsf";\nexport { __retain, __release, __collect } from "rt/pure";\nexport { __rtti_base } from "rt";\n',"rt/index-half":'import "rt/index-full";\n',"rt/index-none":'import "rt/index-stub";\n',"rt/index-stub":'export { __alloc, __retain, __release, __collect } from "rt/stub";\nexport { __rtti_base } from "rt";\n',"rt/pure":'import { DEBUG, BLOCK_OVERHEAD } from "rt/common";\nimport { Block, freeBlock, ROOT } from "rt/tlsf";\nimport { TypeinfoFlags } from "shared/typeinfo";\nimport { onincrement, ondecrement, onfree, onalloc } from "./rtrace";\n\n/////////////////////////// A Pure Reference Counting Garbage Collector ///////////////////////////\n// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf\n\n// ╒══════════════════════ GC Info structure ══════════════════════╕\n// │ 3 2 1 │\n// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│\n// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │B│color│ refCount │\n// └─┴─────┴───────────────────────────────────────────────────────┘\n// B: buffered\n\n// @ts-ignore: decorator\n@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1);\n// @ts-ignore: decorator\n@inline const COLOR_BITS = 3;\n// @ts-ignore: decorator\n@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS;\n// @ts-ignore: decorator\n@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1;\n\n// ╒════════╤═══════════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├────────┼──────────────────────────────────────────────────────┤\n// │ BLACK │ In use or free │\n// │ GRAY │ Possible member of cycle │\n// │ WHITE │ Member of garbage cycle │\n// │ PURPLE │ Possible root of cycle │\n// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │\n// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │\n// └────────┴──────────────────────────────────────────────────────┘\n// Acyclic detection has been decoupled, hence no GREEN.\n\n// @ts-ignore: decorator\n@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_RED: u32 = 4 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT;\n\n// @ts-ignore: decorator\n@inline const VISIT_DECREMENT = 1; // guard 0\n// @ts-ignore: decorator\n@inline const VISIT_MARKGRAY = 2;\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 3;\n// @ts-ignore: decorator\n@inline const VISIT_SCANBLACK = 4;\n// @ts-ignore: decorator\n@inline const VISIT_COLLECTWHITE = 5;\n\n// @ts-ignore: decorator\n@global @unsafe\nfunction __visit(ref: usize, cookie: i32): void {\n if (ref < __heap_base) return;\n var s = changetype(ref - BLOCK_OVERHEAD);\n switch (cookie) {\n case VISIT_DECREMENT: {\n decrement(s);\n break;\n }\n case VISIT_MARKGRAY: {\n if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0);\n s.gcInfo = s.gcInfo - 1;\n markGray(s);\n break;\n }\n case VISIT_SCAN: {\n scan(s);\n break;\n }\n case VISIT_SCANBLACK: {\n let info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if ((info & COLOR_MASK) != COLOR_BLACK) {\n scanBlack(s);\n }\n break;\n }\n case VISIT_COLLECTWHITE: {\n collectWhite(s);\n break;\n }\n default: if (DEBUG) assert(false);\n }\n}\n\n/** Increments the reference count of the specified block by one.*/\nfunction increment(s: Block): void {\n var info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if (isDefined(ASC_RTRACE)) onincrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n}\n\n/** Decrements the reference count of the specified block by one, possibly freeing it. */\nfunction decrement(s: Block): void {\n var info = s.gcInfo;\n var rc = info & REFCOUNT_MASK;\n if (isDefined(ASC_RTRACE)) ondecrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n if (rc == 1) {\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT);\n if (!(info & BUFFERED_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0;\n }\n } else {\n if (DEBUG) assert(rc > 0);\n if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) {\n s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1);\n if (!(info & BUFFERED_MASK)) {\n appendRoot(s);\n }\n } else {\n s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1);\n }\n }\n}\n\n/** Buffer of possible roots. */\n// @ts-ignore: decorator\n@lazy var ROOTS: usize;\n/** Current absolute offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var CUR: usize = 0;\n/** Current absolute end offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var END: usize = 0;\n\n/** Appends a block to possible roots. */\nfunction appendRoot(s: Block): void {\n var cur = CUR;\n if (cur >= END) {\n growRoots(); // TBD: either that or pick a default and force collection on overflow\n cur = CUR;\n }\n store(cur, s);\n CUR = cur + sizeof();\n}\n\n/** Grows the roots buffer if it ran full. */\nfunction growRoots(): void {\n var oldRoots = ROOTS;\n var oldSize = CUR - oldRoots;\n var newSize = max(oldSize * 2, 64 << alignof());\n var newRoots = __alloc(newSize, 0);\n if (isDefined(ASC_RTRACE)) onfree(changetype(newRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n memory.copy(newRoots, oldRoots, oldSize);\n if (oldRoots) {\n if (isDefined(ASC_RTRACE)) onalloc(changetype(oldRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n __free(oldRoots);\n }\n ROOTS = newRoots;\n CUR = newRoots + oldSize;\n END = newRoots + newSize;\n}\n\n/** Collects cyclic garbage. */\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n\n // markRoots\n var roots = ROOTS;\n var cur = roots;\n for (let pos = cur, end = CUR; pos < end; pos += sizeof()) {\n let s = load(pos);\n let info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) {\n markGray(s);\n store(cur, s);\n cur += sizeof();\n } else {\n if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = info & ~BUFFERED_MASK;\n }\n }\n }\n CUR = cur;\n\n // scanRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n scan(load(pos));\n }\n\n // collectRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n let s = load(pos);\n s.gcInfo = s.gcInfo & ~BUFFERED_MASK;\n collectWhite(s);\n }\n CUR = roots;\n}\n\n/** Marks a block as gray (possible member of cycle) during the collection phase. */\nfunction markGray(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) != COLOR_GRAY) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY);\n }\n}\n\n/** Scans a block during the collection phase, determining whether it is garbage or not. */\nfunction scan(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_GRAY) {\n if ((info & REFCOUNT_MASK) > 0) {\n scanBlack(s);\n } else {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN);\n }\n }\n}\n\n/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */\nfunction scanBlack(s: Block): void {\n s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK);\n}\n\n/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */\nfunction collectWhite(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE);\n freeBlock(ROOT, s);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n if (ref > __heap_base) increment(changetype(ref - BLOCK_OVERHEAD));\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n if (ref > __heap_base) decrement(changetype(ref - BLOCK_OVERHEAD));\n}\n',"rt/rtrace":'import { BLOCK } from "./common";\n\nexport declare function onalloc(s: BLOCK): void;\nexport declare function onincrement(s: BLOCK): void;\nexport declare function ondecrement(s: BLOCK): void;\nexport declare function onfree(s: BLOCK): void;\n',"rt/stub":'import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common";\n\n// @ts-ignore: decorator\n@lazy\nvar startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@lazy\nvar offset: usize = startOffset;\n\nfunction maybeGrowMemory(newOffset: usize): void {\n // assumes newOffset is aligned\n var pagesBefore = memory.size();\n var maxOffset = pagesBefore << 16;\n if (newOffset > maxOffset) {\n let pagesNeeded = ((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16;\n let pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory\n }\n }\n offset = newOffset;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __alloc(size: usize, id: u32): usize {\n if (size > BLOCK_MAXSIZE) unreachable();\n var ptr = offset + BLOCK_OVERHEAD;\n var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE);\n maybeGrowMemory(ptr + actualSize);\n var block = changetype(ptr - BLOCK_OVERHEAD);\n block.mmInfo = actualSize;\n if (DEBUG) block.gcInfo = -1;\n block.rtId = id;\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __realloc(ptr: usize, size: usize): usize {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n var actualSize = block.mmInfo;\n if (DEBUG) assert(block.gcInfo == -1);\n if (size > actualSize) {\n if (ptr + actualSize == offset) { // last block: grow\n if (size > BLOCK_MAXSIZE) unreachable();\n actualSize = (size + AL_MASK) & ~AL_MASK;\n maybeGrowMemory(ptr + actualSize);\n block.mmInfo = actualSize;\n } else { // copy to new block at least double the size\n actualSize = max((size + AL_MASK) & ~AL_MASK, actualSize << 1);\n let newPtr = __alloc(actualSize, block.rtId);\n memory.copy(newPtr, ptr, block.rtSize);\n block = changetype((ptr = newPtr) - BLOCK_OVERHEAD);\n }\n } else if (ptr + actualSize == offset) { // last block: shrink\n actualSize = (size + AL_MASK) & ~AL_MASK;\n offset = ptr + actualSize;\n block.mmInfo = actualSize;\n }\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __free(ptr: usize): void {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n if (DEBUG) assert(block.gcInfo == -1);\n if (ptr + block.mmInfo == offset) { // last block: discard\n offset = changetype(block);\n }\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nfunction __reset(): void { // special\n offset = startOffset;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ref: usize, cookie: u32): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n}\n',"rt/tlsf":"import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"rt/common\";\nimport { onfree, onalloc } from \"./rtrace\";\nimport { REFCOUNT_MASK } from \"./pure\";\n\n/////////////////////// The TLSF (Two-Level Segregate Fit) memory allocator ///////////////////////\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: usize = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: usize = (SL_BITS + AL_BITS);\n// @ts-ignore: decorator\n@inline const SB_SIZE: usize = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐\n// │ size │0│L│F│ ◄─┐ info\n// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │\n// │ │ │\n// │ ... additional runtime overhead ... │ │\n// │ │ │\n// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ = 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n let newSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = (blockInfo & TAGS_MASK) | newSize;\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n let newSize = (leftInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, left);\n left.mmInfo = blockInfo = (leftInfo & TAGS_MASK) | newSize;\n block = left;\n // 'back' is set below\n }\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) {\n assert(\n start <= end && // must be valid\n !(start & AL_MASK) && // must be aligned\n !(end & AL_MASK) // must be aligned\n );\n }\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n if (start - BLOCK_OVERHEAD == changetype(tail)) {\n start -= BLOCK_OVERHEAD;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - (BLOCK_OVERHEAD << 1);\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + size - BLOCK_OVERHEAD);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size >= BLOCK_MAXSIZE) throw new Error(\"allocation too large\");\n return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size\n}\n\n/** Initilizes the root structure. */\nexport function initializeRoot(): void {\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n addMemory(root, (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK, memory.size() << 16);\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = searchBlock(root, payloadSize);\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n block.gcInfo = 0; // RC=0\n // block.rtId = 0; // set by the caller (__alloc)\n block.rtSize = size;\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n if (DEBUG) {\n assert(\n !(blockInfo & FREE) && // must be used\n !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK\n );\n }\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= (blockInfo & ~TAGS_MASK)) {\n prepareBlock(root, block, payloadSize);\n block.rtSize = size;\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which\n // is immediately split though. does this trigger any assertions / issues?\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n block.rtSize = size;\n prepareBlock(root, block, payloadSize);\n return block;\n }\n }\n\n // otherwise move the block\n var newBlock = allocateBlock(root, size);\n newBlock.rtId = block.rtId;\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size);\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n assert(!(blockInfo & FREE)); // must be used (user might call through to this)\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize, id: u32): usize {\n var root = ROOT;\n if (!root) {\n initializeRoot();\n root = ROOT;\n }\n var block = allocateBlock(root, size);\n block.rtId = id;\n return changetype(block) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ref: usize, size: usize): usize {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n return changetype(reallocateBlock(ROOT, changetype(ref - BLOCK_OVERHEAD), size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ref: usize): void {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n freeBlock(ROOT, changetype(ref - BLOCK_OVERHEAD));\n}\n",set:'/// \n\nimport { HASH } from "./util/hash";\n\n// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a set entry. */\n@unmanaged class SetEntry {\n key: K;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K is <= 32-bits\n const align = (sizeof() > sizeof() ? sizeof() : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Set {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // SetEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() { this.clear(); }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: T, hashCode: u32): SetEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n @operator("[]")\n has(key: T): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n add(key: T): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (!entry) {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n entry = changetype>(changetype(this.entries) + this.entriesOffset++ * ENTRY_SIZE());\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n @operator("[]=")\n private __set(key: T, value: bool): void {\n if (value) this.add(key);\n else this.delete(key);\n }\n\n delete(key: T): bool {\n var entry = this.find(key, HASH(key)); // unmanaged!\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key)); // exact \'key\'\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr); // unmanaged!\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr); // unmanaged!\n newEntry.key = oldEntry.key;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n values(): T[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.key);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Set]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',"shared/feature":"// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","shared/target":"// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","shared/typeinfo":"// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n",string:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { compareImpl, strtol, strtod, isSpace } from "./util/string";\nimport { E_INVALIDLENGTH } from "./util/error";\nimport { ArrayBufferView } from "./arraybuffer";\nimport { idof } from "./builtins";\n\n@sealed export abstract class String {\n\n @lazy static readonly MAX_LENGTH: i32 = BLOCK_MAXSIZE >>> alignof();\n\n static fromCharCode(unit: i32, surr: i32 = -1): string {\n var hasSur = surr > 0;\n var out = __alloc(2 << i32(hasSur), idof());\n store(out, unit);\n if (hasSur) store(out, surr, 2);\n return changetype(out); // retains\n }\n\n static fromCodePoint(code: i32): string {\n assert(code <= 0x10FFFF);\n var hasSur = code > 0xFFFF;\n var out = __alloc(2 << i32(hasSur), idof());\n if (!hasSur) {\n store(out, code);\n } else {\n code -= 0x10000;\n let hi: u32 = (code >>> 10) + 0xD800;\n let lo: u32 = (code & 0x3FF) + 0xDC00;\n store(out, (hi << 16) | lo);\n }\n return changetype(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1;\n }\n\n @operator("[]") charAt(pos: i32): String {\n if (pos >= this.length) return changetype("");\n var out = __alloc(2, idof());\n store(out, load(changetype(this) + (pos << 1)));\n return changetype(out); // retains\n }\n\n charCodeAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (NaN)\n return load(changetype(this) + (pos << 1));\n }\n\n codePointAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (undefined)\n var first = load(changetype(this) + (pos << 1));\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) return first;\n var second = load(changetype(this) + ((pos + 1) << 1));\n if (second < 0xDC00 || second > 0xDFFF) return first;\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+") private static __concat(left: String, right: String): String {\n return select(left, changetype("null"), left !== null).concat(right);\n }\n\n concat(other: String): String {\n if (other === null) other = changetype("null");\n var thisSize: isize = this.length << 1;\n var otherSize: isize = other.length << 1;\n var outSize: usize = thisSize + otherSize;\n if (outSize == 0) return changetype("");\n var out = changetype(__alloc(outSize, idof())); // retains\n memory.copy(changetype(out), changetype(this), thisSize);\n memory.copy(changetype(out) + thisSize, changetype(other), otherSize);\n return out;\n }\n\n endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {\n if (search === null) return false;\n end = min(max(end, 0), this.length);\n var searchLength = search.length;\n var searchStart = end - searchLength;\n if (searchStart < 0) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n @operator("==") private static __eq(left: String | null, right: String | null): bool {\n if (left === right) return true;\n if (left === null || right === null) return false;\n var leftLength = left.length;\n if (leftLength != right.length) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(left, 0, right, 0, leftLength);\n }\n\n @operator.prefix("!")\n private static __not(str: String | null): bool {\n return str === null || !str.length;\n }\n\n @operator("!=")\n private static __ne(left: String | null, right: String | null): bool {\n return !this.__eq(left, right);\n }\n\n @operator(">") private static __gt(left: String | null, right: String | null): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!leftLength) return false;\n if (!rightLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0;\n }\n\n @operator(">=") private static __gte(left: String, right: String): bool {\n return !this.__lt(left, right);\n }\n\n @operator("<") private static __lt(left: String, right: String): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!rightLength) return false;\n if (!leftLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0;\n }\n\n @operator("<=") private static __lte(left: String, right: String): bool {\n return !this.__gt(left, right);\n }\n\n includes(search: String, start: i32 = 0): bool {\n return this.indexOf(search, start) != -1;\n }\n\n indexOf(search: String, start: i32 = 0): i32 {\n var searchLen = search.length;\n if (!searchLen) return 0;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len);\n for (len -= searchLen; searchStart <= len; ++searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n lastIndexOf(search: String, start: i32 = i32.MAX_VALUE): i32 {\n var searchLen = search.length;\n if (!searchLen) return this.length;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len - searchLen);\n for (; searchStart >= 0; --searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n startsWith(search: String, start: i32 = 0): bool {\n if (search === null) search = changetype("null");\n var len = this.length;\n var searchStart = min(max(start, 0), len);\n var searchLength = search.length;\n if (searchLength + searchStart > len) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) intStart = max(size + intStart, 0);\n var resultLength = min(max(end, 0), size - intStart);\n if (resultLength <= 0) return changetype("");\n var out = __alloc(resultLength << 1, idof());\n memory.copy(out, changetype(this) + intStart, resultLength);\n return changetype(out); // retains\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len: isize = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var fromPos = min(finalStart, finalEnd) << 1;\n var toPos = max(finalStart, finalEnd) << 1;\n len = toPos - fromPos;\n if (!len) return changetype("");\n if (!fromPos && toPos == this.length << 1) return this;\n var out = __alloc(len, idof());\n memory.copy(out, changetype(this) + fromPos, len);\n return changetype(out); // retains\n }\n\n trim(): String {\n var length = this.length;\n var size: usize = length << 1;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2; size -= 2;\n }\n if (!size) return changetype("");\n if (!offset && size == length << 1) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n @inline\n trimLeft(): String {\n return this.trimStart();\n }\n\n @inline\n trimRight(): String {\n return this.trimEnd();\n }\n\n trimStart(): String {\n var size = this.length << 1;\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2;\n }\n if (!offset) return this;\n size -= offset;\n if (!size) return changetype("");\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n trimEnd(): String {\n var originalSize = this.length << 1;\n var size = originalSize;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n if (!size) return changetype("");\n if (size == originalSize) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n return changetype(out); // retains\n }\n\n padStart(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var prependSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n if (prependSize > padSize) {\n let repeatCount = (prependSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = prependSize - restBase;\n memory.repeat(out, changetype(pad), padSize, repeatCount);\n memory.copy(out + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out, changetype(pad), prependSize);\n }\n memory.copy(out + prependSize, changetype(this), thisSize);\n return changetype(out); // retains\n }\n\n padEnd(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var appendSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n memory.copy(out, changetype(this), thisSize);\n if (appendSize > padSize) {\n let repeatCount = (appendSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = appendSize - restBase;\n memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount);\n memory.copy(out + thisSize + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out + thisSize, changetype(pad), appendSize);\n }\n return changetype(out); // retains\n }\n\n repeat(count: i32 = 0): String {\n var length = this.length;\n\n // Most browsers can\'t handle strings 1 << 28 chars or longer\n if (count < 0 || length * count > (1 << 28)) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n\n if (count == 0 || !length) return changetype("");\n if (count == 1) return this;\n var out = __alloc((length * count) << 1, idof());\n memory.repeat(out, changetype(this), length << 1, count);\n return changetype(out); // retains\n }\n\n replace(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var index: isize = this.indexOf(search);\n if (~index) {\n let rlen: usize = replacement.length;\n len -= slen;\n let olen = len + rlen;\n if (olen) {\n let out = __alloc(olen << 1, idof());\n memory.copy(out, changetype(this), index << 1);\n memory.copy(\n out + (index << 1),\n changetype(replacement),\n rlen << 1\n );\n memory.copy(\n out + ((index + rlen) << 1),\n changetype(this) + ((index + slen) << 1),\n (len - index) << 1\n );\n return changetype(out);\n }\n }\n return this;\n }\n\n replaceAll(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var rlen: usize = replacement.length;\n if (!slen) {\n if (!rlen) return this;\n // Special case: \'abc\'.replaceAll(\'\', \'-\') -> \'-a-b-c-\'\n let out = __alloc((len + (len + 1) * rlen) << 1, idof());\n memory.copy(out, changetype(replacement), rlen << 1);\n let offset = rlen;\n for (let i: usize = 0; i < len; ++i) {\n store(\n changetype(out) + (offset++ << 1),\n load(changetype(this) + (i << 1))\n );\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n }\n return changetype(out);\n }\n var prev: isize = 0, next: isize = 0;\n if (slen == rlen) {\n // Fast path when search and replacement have same length\n let size = len << 1;\n let out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n while (~(next = this.indexOf(search, prev))) {\n memory.copy(out + (next << 1), changetype(replacement), rlen << 1);\n prev = next + slen;\n }\n return changetype(out);\n }\n var out: usize = 0, offset: usize = 0, resLen = len;\n while (~(next = this.indexOf(search, prev))) {\n if (!out) out = __alloc(len << 1, idof());\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let chunk = next - prev;\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n chunk << 1\n );\n offset += chunk;\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n prev = next + slen;\n }\n if (offset) {\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let rest = len - prev;\n if (rest) {\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n rest << 1\n );\n }\n rest += offset;\n if (resLen > rest) out = __realloc(out, rest << 1);\n return changetype(out);\n }\n return this;\n }\n\n slice(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len = this.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end, len);\n len = end - start;\n if (len <= 0) return changetype("");\n var out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n return changetype(out); // retains\n }\n\n split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {\n if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n if (separator === null) return [this];\n var length: isize = this.length;\n var sepLen: isize = separator.length;\n if (limit < 0) limit = i32.MAX_VALUE;\n if (!sepLen) {\n if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n // split by chars\n length = min(length, limit);\n let result = __allocArray(length, alignof(), idof>());\n let resultStart = changetype(result).dataStart;\n for (let i: isize = 0; i < length; ++i) {\n let charStr = __alloc(2, idof());\n store(charStr, load(changetype(this) + (i << 1)));\n store(resultStart + (i << alignof()), charStr); // result[i] = charStr\n if (isManaged()) __retain(charStr);\n }\n return changetype>(result); // retains\n } else if (!length) {\n let result = __allocArray(1, alignof(), idof>());\n store(changetype(result).dataStart, changetype("")); // static ""\n return changetype>(result); // retains\n }\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n var end = 0, start = 0, i = 0;\n while (~(end = this.indexOf(separator, start))) {\n let len = end - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out));\n } else {\n result.push(changetype(""));\n }\n if (++i == limit) return changetype>(result); // retains\n start = end + sepLen;\n }\n if (!start) { // also means: loop above didn\'t do anything\n result.push(this);\n return changetype>(result); // retains\n }\n var len = length - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out)); // retains\n } else {\n result.push(changetype("")); // static ""\n }\n return changetype>(result); // retains\n // releases result\n }\n\n toString(): String {\n return this;\n }\n}\n\n// @ts-ignore: nolib\nexport type string = String;\n\nexport function parseInt(str: string, radix: i32 = 0): f64 {\n return strtol(str, radix);\n}\n\nexport function parseFloat(str: string): f64 {\n return strtod(str);\n}\n\n// Encoding helpers\nexport namespace String {\n\n export namespace UTF8 {\n\n export function byteLength(str: string, nullTerminated: bool = false): i32 {\n var strOff = changetype(str);\n var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var bufLen = nullTerminated ? 1 : 0;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n bufLen += 1; strOff += 2;\n } else if (c1 < 2048) {\n bufLen += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n if ((load(strOff, 2) & 0xFC00) == 0xDC00) {\n strOff += 4; bufLen += 4;\n continue;\n }\n }\n strOff += 2; bufLen += 3;\n }\n }\n return bufLen;\n }\n\n export function encode(str: string, nullTerminated: bool = false): ArrayBuffer {\n var strOff = changetype(str);\n var strEnd = changetype(str) + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(UTF8.byteLength(str, nullTerminated), idof());\n var bufOff = buf;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n store(bufOff, c1);\n bufOff += 1; strOff += 2;\n } else if (c1 < 2048) {\n store(bufOff, c1 >> 6 | 192);\n store(bufOff, c1 & 63 | 128, 1);\n bufOff += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n let c2 = load(strOff, 2);\n if ((c2 & 0xFC00) == 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n store(bufOff, c1 >> 18 | 240);\n store(bufOff, c1 >> 12 & 63 | 128, 1);\n store(bufOff, c1 >> 6 & 63 | 128, 2);\n store(bufOff, c1 & 63 | 128, 3);\n strOff += 4; bufOff += 4;\n continue;\n }\n }\n store(bufOff, c1 >> 12 | 224);\n store(bufOff, c1 >> 6 & 63 | 128, 1);\n store(bufOff, c1 & 63 | 128, 2);\n strOff += 2; bufOff += 3;\n }\n }\n if (nullTerminated) {\n assert(strOff <= strEnd);\n buf = __realloc(buf, bufOff - buf + 1);\n store(bufOff, 0);\n } else {\n assert(strOff == strEnd);\n }\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer, nullTerminated: bool = false): string {\n return decodeUnsafe(changetype(buf), buf.byteLength, nullTerminated);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated: bool = false): string {\n var bufOff = buf;\n var bufEnd = buf + len;\n assert(bufEnd >= bufOff); // guard wraparound\n var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte\n var strOff = str;\n while (bufOff < bufEnd) {\n let cp = load(bufOff++);\n if (cp < 128) {\n if (nullTerminated && !cp) break;\n store(strOff, cp);\n strOff += 2;\n } else if (cp > 191 && cp < 224) {\n if (bufEnd - bufOff < 1) break;\n store(strOff, (cp & 31) << 6 | load(bufOff++) & 63);\n strOff += 2;\n } else if (cp > 239 && cp < 365) {\n if (bufEnd - bufOff < 3) break;\n cp = (\n (cp & 7) << 18 |\n (load(bufOff) & 63) << 12 |\n (load(bufOff, 1) & 63) << 6 |\n load(bufOff, 2) & 63\n ) - 0x10000;\n bufOff += 3;\n store(strOff, 0xD800 + (cp >> 10));\n store(strOff, 0xDC00 + (cp & 1023), 2);\n strOff += 4;\n } else {\n if (bufEnd - bufOff < 2) break;\n store(strOff,\n (cp & 15) << 12 |\n (load(bufOff) & 63) << 6 |\n load(bufOff, 1) & 63\n );\n bufOff += 2; strOff += 2;\n }\n }\n return changetype(__realloc(str, strOff - str)); // retains\n }\n }\n\n export namespace UTF16 {\n\n export function byteLength(str: string): i32 {\n return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n }\n\n export function encode(str: string): ArrayBuffer {\n var size = changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(size, idof());\n memory.copy(buf, changetype(str), size);\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer): string {\n return decodeUnsafe(changetype(buf), buf.byteLength);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize): string {\n var str = __alloc(len &= ~1, idof());\n memory.copy(str, buf, len);\n return changetype(str); // retains\n }\n }\n}\n',symbol:'import { Map } from "./map";\n\n// @ts-ignore: decorator\n@lazy\nvar stringToId: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar idToString: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar nextId: usize = 12; // Symbol.unscopables + 1\n\n@unmanaged @sealed abstract class _Symbol {\n\n // TODO: all of the following default symbols are unused currently yet add to\n // binary size if #toString becomes compiled. Ultimately we\'ll most likely want\n // to remove the unsupported ones and only keep what\'s actually supported.\n\n // @ts-ignore: decorator\n @lazy\n static readonly hasInstance: symbol = changetype(1);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isConcatSpreadable: symbol = changetype(2);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isRegExp: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly iterator: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly match: symbol = changetype(4);\n\n // @ts-ignore: decorator\n @lazy\n static readonly replace: symbol = changetype(5);\n\n // @ts-ignore: decorator\n @lazy\n static readonly search: symbol = changetype(6);\n\n // @ts-ignore: decorator\n @lazy\n static readonly species: symbol = changetype(7);\n\n // @ts-ignore: decorator\n @lazy\n static readonly split: symbol = changetype(8);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toPrimitive: symbol = changetype(9);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toStringTag: symbol = changetype(10);\n\n // @ts-ignore: decorator\n @lazy\n static readonly unscopables: symbol = changetype(11);\n\n static for(key: string): symbol {\n if (!stringToId) { stringToId = new Map(); idToString = new Map(); }\n else if (stringToId.has(key)) return changetype(stringToId.get(key));\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n stringToId.set(key, id);\n idToString.set(id, key);\n return changetype(id);\n }\n\n static keyFor(sym: symbol): string | null {\n return idToString !== null && idToString.has(changetype(sym))\n ? idToString.get(changetype(sym))\n : null;\n }\n\n toString(): string {\n var id = changetype(this);\n var str = "";\n switch (id) {\n case 1: { str = "hasInstance"; break; }\n case 2: { str = "isConcatSpreadable"; break; }\n case 3: { str = "isRegExp"; break; }\n case 4: { str = "match"; break; }\n case 5: { str = "replace"; break; }\n case 6: { str = "search"; break; }\n case 7: { str = "species"; break; }\n case 8: { str = "split"; break; }\n case 9: { str = "toPrimitive"; break; }\n case 10: { str = "toStringTag"; break; }\n case 11: { str = "unscopables"; break; }\n default: {\n if (idToString !== null && idToString.has(id)) str = idToString.get(id);\n break;\n }\n }\n return "Symbol(" + str + ")";\n }\n}\n\nexport function Symbol(description: string | null = null): symbol {\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n return changetype(id);\n}\n\nexport type Symbol = _Symbol;\n\n// @ts-ignore: nolib\nexport type symbol = _Symbol;\n',table:'import { E_NOTIMPLEMENTED } from "./util/error";\n\nexport namespace table {\n\n export function copy(dst: u32, src: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function drop(elementIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n}\n',typedarray:'import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\nimport { idof } from "./builtins";\nimport { ArrayBufferView } from "./arraybuffer";\n\nexport class Int8Array extends ArrayBufferView {\n [key: number]: i8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): i8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: i8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array {\n return SORT(this, comparator);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return SLICE(this, begin, end);\n }\n\n subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return SUBARRAY(this, begin, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int8Array {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {\n return MAP(this, fn);\n }\n\n filter(fn: (value: i8, index: i32, self: Int8Array) => bool): Int8Array {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8Array extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array {\n return SORT(this, comparator);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return SLICE(this, begin, end);\n }\n\n subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return SUBARRAY(this, begin, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint8Array {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {\n return MAP(this, fn);\n }\n\n filter(fn: (value: u8, index: i32, self: Uint8Array) => bool): Uint8Array {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8ClampedArray extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return FILL(this, value, start, end);\n }\n\n sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray {\n return SORT(this, fn);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return SLICE(this, begin, end);\n }\n\n subarray(start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return SUBARRAY(this, start, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {\n return MAP(this, fn);\n }\n\n filter(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): Uint8ClampedArray {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int16Array extends ArrayBufferView {\n [key: number]: i16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array {\n return SORT(this, comparator);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return SLICE(this, begin, end);\n }\n\n subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return SUBARRAY(this, begin, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int16Array {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {\n return MAP(this, fn);\n }\n\n filter(fn: (value: i16, index: i32, self: Int16Array) => bool): Int16Array {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint16Array extends ArrayBufferView {\n [key: number]: u16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array {\n return SORT(this, comparator);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return SLICE(this, begin, end);\n }\n\n subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return SUBARRAY(this, begin, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint16Array {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {\n return MAP(this, fn);\n }\n\n filter(fn: (value: u16, index: i32, self: Uint16Array) => bool): Uint16Array {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int32Array extends ArrayBufferView {\n [key: number]: i32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array {\n return SORT(this, comparator);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return SLICE(this, begin, end);\n }\n\n subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return SUBARRAY(this, begin, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int32Array {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {\n return MAP(this, fn);\n }\n\n filter(fn: (value: i32, index: i32, self: Int32Array) => bool): Int32Array {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint32Array extends ArrayBufferView {\n [key: number]: u32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array {\n return SORT(this, comparator);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return SLICE(this, begin, end);\n }\n\n subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return SUBARRAY(this, begin, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint32Array {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {\n return MAP(this, fn);\n }\n\n filter(fn: (value: u32, index: i32, self: Uint32Array) => bool): Uint32Array {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int64Array extends ArrayBufferView {\n [key: number]: i64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array {\n return SORT(this, comparator);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return SLICE(this, begin, end);\n }\n\n subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return SUBARRAY(this, begin, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int64Array {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {\n return MAP(this, fn);\n }\n\n filter(fn: (value: i64, index: i32, self: Int64Array) => bool): Int64Array {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint64Array extends ArrayBufferView {\n [key: number]: u64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array {\n return SORT(this, comparator);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return SLICE(this, begin, end);\n }\n\n subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return SUBARRAY(this, begin, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint64Array {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {\n return MAP(this, fn);\n }\n\n filter(fn: (value: u64, index: i32, self: Uint64Array) => bool): Uint64Array {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float32Array extends ArrayBufferView {\n [key: number]: f32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array {\n return SORT(this, comparator);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return SLICE(this, begin, end);\n }\n\n subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return SUBARRAY(this, begin, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Float32Array {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {\n return MAP(this, fn);\n }\n\n filter(fn: (value: f32, index: i32, self: Float32Array) => bool): Float32Array {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float64Array extends ArrayBufferView {\n [key: number]: f64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array {\n return SORT(this, comparator);\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return SLICE(this, begin, end);\n }\n\n subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return SUBARRAY(this, begin, end);\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Float64Array {\n return COPY_WITHIN(this, target, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {\n return MAP(this, fn);\n }\n\n filter(fn: (value: f64, index: i32, self: Float64Array) => bool): Float64Array {\n return FILTER(this, fn);\n }\n\n findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILL(\n array: TArray,\n value: native,\n start: i32,\n end: i32\n): TArray {\n var dataStart = array.dataStart;\n var len = array.length;\n start = start < 0 ? max(len + start, 0) : min(start, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n if (sizeof() == 1) {\n if (start < end) memory.fill(dataStart + start, value, (end - start));\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SORT(\n array: TArray,\n comparator: (a: T, b: T) => i32\n): TArray {\n var len = array.length;\n if (len <= 1) return array;\n var base = array.dataStart;\n if (len == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b\n store(base, a); // arr[0] = a\n }\n return array;\n }\n SORT_IMPL(base, len, comparator);\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SLICE(\n array: TArray,\n start: i32,\n end: i32\n): TArray {\n var len = array.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end , len);\n len = max(end - start, 0);\n var slice = instantiate(len);\n memory.copy(\n slice.dataStart,\n array.dataStart + (start << alignof()),\n len << alignof()\n );\n return slice;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SUBARRAY(\n array: TArray,\n begin: i32,\n end: i32\n): TArray {\n var len = array.length;\n begin = begin < 0 ? max(len + begin, 0) : min(begin, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n end = max(end, begin);\n var out = changetype(__alloc(offsetof(), idof())); // retains\n out.data = array.data; // retains\n out.dataStart = array.dataStart + (begin << alignof());\n out.dataLength = (end - begin) << alignof();\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction COPY_WITHIN(\n array: TArray,\n target: i32,\n start: i32,\n end: i32\n): TArray {\n var len = array.length;\n var dataStart = array.dataStart;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n memory.copy(\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE_RIGHT(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = array.length - 1; i >= 0; i--) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction MAP(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => T,\n): TArray {\n var length = array.length;\n var dataStart = array.dataStart;\n var out = instantiate(length);\n var outDataStart = out.dataStart;\n for (let i = 0; i < length; i++) {\n store(\n outDataStart + (i << alignof()),\n fn(load(dataStart + (i << alignof())), i, array)\n );\n }\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILTER(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => bool,\n): TArray {\n var len = array.length;\n var out = changetype(__alloc(offsetof(), idof()));\n var buffer = __alloc(len << alignof(), idof());\n var dataStart = array.dataStart;\n var j: usize = 0;\n for (let i = 0; i < len; i++) {\n let value = load(dataStart + (i << alignof()));\n if (fn(value, i, array)) {\n store(\n buffer + (j++ << alignof()),\n value\n );\n }\n }\n // shrink output buffer\n var length = j << alignof();\n var data = __realloc(buffer, length);\n out.data = changetype(data); // retain\n out.dataStart = data;\n out.dataLength = length;\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FIND_INDEX(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): i32 {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return i;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INCLUDES(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): bool {\n return INDEX_OF(array, searchElement, fromIndex) >= 0;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0 || index >= length) return -1;\n if (index < 0) index = max(length + index, 0);\n var dataStart = array.dataStart;\n while (index < length) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n ++index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction LAST_INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0) return -1;\n if (index < 0) index = length + index; // no need to clamp\n else if (index >= length) index = length - 1;\n var dataStart = array.dataStart;\n while (index >= 0) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n --index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SOME(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return true;\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction EVERY(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) continue;\n return false;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FOREACH(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => void,\n): void {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n fn(load(dataStart + (i << alignof())), i, array);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REVERSE(array: TArray): TArray {\n var dataStart = array.dataStart;\n for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) {\n let frontPtr = dataStart + (front << alignof());\n let backPtr = dataStart + (back << alignof());\n let temp = load(frontPtr);\n store(frontPtr, load(backPtr));\n store(backPtr, temp);\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction WRAP(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): TArray {\n var bufferByteLength = buffer.byteLength;\n if (byteOffset >= bufferByteLength) {\n throw new RangeError(E_INDEXOUTOFRANGE);\n }\n var byteLength: i32;\n if (length < 0) {\n if (length == -1) {\n const mask = (1 << alignof() - 1);\n if (buffer.byteLength & mask) {\n throw new RangeError(E_INVALIDLENGTH);\n } else {\n byteLength = buffer.byteLength;\n }\n } else {\n throw new RangeError(E_INVALIDLENGTH);\n }\n } else {\n byteLength = length << alignof();\n }\n if (byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n var out = changetype(__alloc(offsetof(), idof()));\n out.data = buffer;\n out.dataLength = byteLength;\n out.dataStart = changetype(buffer) + byteOffset;\n return out;\n}\n',"util/error":'// Common error messages for use accross the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = "Index out of range";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = "Invalid length";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = "Array is empty";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = "Element type must be nullable if array is holey";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = "Not implemented";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = "Key does not exist";\n',"util/hash":"// @ts-ignore: decorator\n@inline\nexport function HASH(key: T): u32 {\n if (isString()) {\n return hashStr(changetype(key));\n } else if (isReference()) {\n if (sizeof() == 4) return hash32(changetype(key));\n if (sizeof() == 8) return hash64(changetype(key));\n } else if (isFloat()) {\n if (sizeof() == 4) return hash32(reinterpret(f32(key)));\n if (sizeof() == 8) return hash64(reinterpret(f64(key)));\n } else {\n if (sizeof() == 1) return hash8 (u32(key));\n if (sizeof() == 2) return hash16(u32(key));\n if (sizeof() == 4) return hash32(u32(key));\n if (sizeof() == 8) return hash64(u64(key));\n }\n return unreachable();\n}\n\n// FNV-1a 32-bit as a starting point, see: http://isthe.com/chongo/tech/comp/fnv/\n\n// @ts-ignore: decorator\n@inline\nconst FNV_OFFSET: u32 = 2166136261;\n\n// @ts-ignore: decorator\n@inline\nconst FNV_PRIME: u32 = 16777619;\n\nfunction hash8(key: u32): u32 {\n return (FNV_OFFSET ^ key) * FNV_PRIME;\n}\n\nfunction hash16(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 8 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash32(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash64(key: u64): u32 {\n var l = key;\n var h = (key >>> 32);\n var v = FNV_OFFSET;\n v = (v ^ ( l & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( l >> 24 )) * FNV_PRIME;\n v = (v ^ ( h & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( h >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hashStr(key: string): u32 {\n var v = FNV_OFFSET;\n if (key !== null) {\n for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) {\n v = (v ^ load(changetype(key) + i)) * FNV_PRIME;\n }\n }\n return v;\n}\n","util/memory":"export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n let w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 2: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 3: {\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c\n if (dest === src) return;\n if (ASC_SHRINK_LEVEL < 1) {\n if (src + n <= dest || dest + n <= src) {\n memcpy(dest, src, n);\n return;\n }\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, c);\n --n;\n }\n } else {\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n let k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n let c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n let c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c\n if (vl == vr) return 0;\n while (n != 0 && load(vl) == load(vr)) {\n n--; vl++; vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","util/number":'/// \n\nimport { idof } from "../builtins";\nimport { CharCode } from "./string";\nimport { ArrayBufferView } from "../arraybuffer";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline\nconst POWERS10: u32[] = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\n "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\n "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\n "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\n "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\n "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\n "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\n "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\n "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\n "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"\n*/\n// @ts-ignore: decorator\n@lazy @inline\nconst DIGITS: u32[] = [\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n];\n\n// @ts-ignore: decorator\n@lazy @inline\nconst EXP_POWERS: i16[] = [\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n];\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline\nconst FRC_POWERS: u64[] = [\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n];\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return select(1, 2, value < 10);\n } else {\n let m = select(4, 5, value < 10000);\n return select(3, m, value < 1000);\n }\n } else {\n if (value < 10000000) {\n return select(6, 7, value < 1000000);\n } else {\n let m = select(9, 10, value < 1000000000);\n return select(8, m, value < 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n let m = select(11, 12, value < 100000000000);\n return select(10, m, value < 10000000000);\n } else {\n let m = select(14, 15, value < 100000000000000);\n return select(13, m, value < 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return select(16, 17, value < 10000000000000000);\n } else {\n let m = select(19, 20, value < 10000000000000000000);\n return select(18, m, value < 1000000000000000000);\n }\n }\n}\n\nfunction utoa32_lut(buffer: usize, num: u32, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(lut + (d1 << alignof()));\n let digits2 = load(lut + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(lut + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(lut + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_lut(buffer: usize, num: u64, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(lut + (c1 << alignof()));\n let digits2 = load(lut + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(lut + (b1 << alignof()));\n digits2 = load(lut + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_lut(buffer, num, offset);\n}\n\nfunction utoa_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset -= 1;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_core(buffer: usize, num: u32, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa32_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa64_core(buffer: usize, num: u64, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa64_lut(buffer, num, offset);\n }\n}\n\nexport function utoa32(value: u32): String {\n if (!value) return "0";\n\n var decimals = decimalCount32(value);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n return changetype(out); // retains\n}\n\nexport function itoa32(value: i32): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var decimals = decimalCount32(value) + u32(sign);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n if (sign) store(out, CharCode.MINUS);\n return changetype(out); // retains\n}\n\nexport function utoa64(value: u64): String {\n if (!value) return "0";\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n return changetype(out); // retains\n}\n\nexport function itoa64(value: i64): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n if (sign) store(out, CharCode.MINUS);\n\n return changetype(out); // retains\n}\n\nexport function itoa(value: T): String {\n if (!isInteger()) ERROR("integer type expected");\n if (isSigned()) {\n if (sizeof() <= 4) {\n return itoa32(value);\n } else {\n return itoa64(value);\n }\n } else {\n if (sizeof() <= 4) {\n return utoa32(value);\n } else {\n return utoa64(value);\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = unchecked(FRC_POWERS[index]);\n _exp_pow = unchecked(EXP_POWERS[index]);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = ((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp != 0) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n var wp_w_exp = mp_exp;\n\n var p1 = (mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n var lut = changetype(POWERS10).dataStart;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(lut + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (1) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(lut + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n\n return len;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nexport function dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\nexport function dtoa(value: f64): String {\n if (value == 0) return "0.0";\n if (!isFinite(value)) {\n if (isNaN(value)) return "NaN";\n return select("-Infinity", "Infinity", value < 0);\n }\n var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof());\n var length = dtoa_core(buffer, value);\n if (length == MAX_DOUBLE_LENGTH) return changetype(buffer);\n var result = changetype(buffer).substring(0, length);\n __free(buffer);\n return result;\n}\n\nexport function itoa_stream(buffer: usize, offset: usize, value: T): u32 {\n buffer += (offset << 1);\n if (!value) {\n store(buffer, CharCode._0);\n return 1;\n }\n var decimals: u32 = 0;\n if (isSigned()) {\n let sign = i32(value < 0);\n if (sign) value = changetype(-value);\n if (sizeof() <= 4) {\n decimals = decimalCount32(value) + sign;\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32) + sign;\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value) + sign;\n utoa64_core(buffer, value, decimals);\n }\n }\n if (sign) store(buffer, CharCode.MINUS);\n } else {\n if (sizeof() <= 4) {\n decimals = decimalCount32(value);\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value);\n utoa64_core(buffer, value, decimals);\n }\n }\n }\n return decimals;\n}\n\nexport function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {\n buffer += (offset << 1);\n if (value == 0.0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = i32(value < 0);\n let len = 8 + sign;\n memory.copy(buffer, changetype(select("-Infinity", "Infinity", sign)), len << 1);\n return len;\n }\n }\n return dtoa_core(buffer, value);\n}\n',"util/sort":'import { compareImpl } from "./string";\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): (a: T, b: T) => i32 {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a: T, b: T): i32 => (i32(a) - i32(b));\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= (ia >> 31) >>> 1;\n ib ^= (ib >> 31) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= (ia >> 63) >>> 1;\n ib ^= (ib >> 63) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a: T, b: T): i32 => {\n if (a === b || a === null || b === null) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!alen && !blen) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n return compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen));\n };\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function SORT(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n if (isReference()) {\n // TODO replace this to faster stable sort (TimSort) when it implemented\n insertionSort(dataStart, length, comparator);\n } else {\n if (length < 256) {\n insertionSort(dataStart, length, comparator);\n } else {\n weakHeapSort(dataStart, length, comparator);\n }\n }\n}\n\nfunction insertionSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n for (let i = 0; i < length; i++) {\n let a: T = load(dataStart + (i << alignof())); // a = arr[i]\n let j = i - 1;\n while (j >= 0) {\n let b: T = load(dataStart + (j << alignof())); // b = arr[j]\n if (comparator(a, b) < 0) {\n store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b\n } else break;\n }\n store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a\n }\n}\n\nfunction weakHeapSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n const shift32 = alignof();\n\n var bitsetSize = (length + 31) >> 5 << shift32;\n var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below\n memory.fill(bitset, 0, bitsetSize);\n\n // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf\n\n for (let i = length - 1; i > 0; i--) {\n let j = i;\n while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1;\n\n let p = j >> 1;\n let a: T = load(dataStart + (p << alignof())); // a = arr[p]\n let b: T = load(dataStart + (i << alignof())); // b = arr[i]\n if (comparator(a, b) < 0) {\n store(\n bitset + (i >> 5 << shift32),\n load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31))\n );\n store(dataStart + (i << alignof()), a); // arr[i] = a\n store(dataStart + (p << alignof()), b); // arr[p] = b\n }\n }\n\n for (let i = length - 1; i >= 2; i--) {\n let a: T = load(dataStart); // a = arr[0]\n store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i]\n store(dataStart + (i << alignof()), a); // arr[i] = a\n\n let x = 1, y: i32;\n while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y;\n\n while (x > 0) {\n a = load(dataStart); // a = arr[0]\n let b: T = load(dataStart + (x << alignof())); // b = arr[x]\n\n if (comparator(a, b) < 0) {\n store(\n bitset + (x >> 5 << shift32),\n load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31))\n );\n store(dataStart + (x << alignof()), a); // arr[x] = a\n store(dataStart, b); // arr[0] = b\n }\n x >>= 1;\n }\n }\n\n __free(bitset);\n\n var t: T = load(dataStart, sizeof()); // t = arr[1]\n store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0]\n store(dataStart, t); // arr[0] = t\n}\n',"util/string":"export function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var result = 0;\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n while (len && !(result = load(ptr1) - load(ptr2))) {\n --len, ptr1 += 2, ptr2 += 2;\n }\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function isSpace(c: i32): bool {\n if (c <= 0xFF) {\n switch (c) {\n case 0x09: // \n case 0x0A: // \n case 0x0B: // \n case 0x0C: // \n case 0x0D: // \n case 0x20: // \n case 0xA0: return true; // \n }\n return false;\n }\n if (c >= 0x2000 && c <= 0x200A) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // determine sign\n // @ts-ignore: cast\n var sign: T = 1;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n // @ts-ignore: type\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2)) {\n case CharCode.B:\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.O:\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.X:\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n default: radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n while (len--) {\n code = load(ptr);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else break;\n if (code >= radix) break;\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\n// FIXME: naive implementation\nexport function strtod(str: string): f64 {\n var len: i32 = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n // determine sign\n var sign = 1.0;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1.0;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // calculate value\n var num = 0.0;\n while (len--) {\n code = load(ptr);\n if (code == CharCode.DOT) {\n ptr += 2;\n let fac = 0.1; // precision :(\n while (len--) {\n code = load(ptr);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) break;\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) break;\n num = num * 10 + code;\n ptr += 2;\n }\n return sign * num;\n}\n",vector:"/** Vector abstraction. */\n@sealed @unmanaged\nexport abstract class V128 {\n}\n"}):(()=>{const e=path.join(".","..","std","assembly"),n=__webpack_require__(!function(){var e=new Error("Cannot find module 'glob'");throw e.code="MODULE_NOT_FOUND",e}()).sync("**/!(*.d).ts",{cwd:e}),t={nearEntry:fs.readFileSync(nearLibEntry,"utf8")};return n.forEach(n=>t[n.replace(/\.ts$/,"")]=fs.readFileSync(path.join(e,n),"utf8")),t})(),exports.definitionFiles=exports.isBundle?Object({assembly:'/**\n * Environment definitions for compiling AssemblyScript to WebAssembly using asc.\n * @module std/assembly\n *//***/\n\n/// \n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = boolean | number;\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n/** A 128-bit vector. */\ndeclare type v128 = object;\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n/** Whether the bulk memory feature is enabled. */\ndeclare const ASC_FEATURE_BULK_MEMORY: bool;\n/** Whether the SIMD feature is enabled. */\ndeclare const ASC_FEATURE_SIMD: bool;\n/** Whether the threads feature is enabled. */\ndeclare const ASC_FEATURE_THREADS: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, immOffset?: usize, immAlign?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const __heap_base: usize;\n/** Determines the byte size of the specified underlying core type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Determines the alignment (log2) of the specified underlying core type. Compiles to a constant. */\ndeclare function alignof(): usize;\n/** Determines the end offset of the given class type. Compiles to a constant. */\ndeclare function offsetof(): usize;\n/** Determines the offset of the specified field within the given class type. Compiles to a constant. */\ndeclare function offsetof(fieldName: keyof T | string): usize;\n/** Determines the offset of the specified field within the given class type. Returns the class type\'s end offset if field name has been omitted. Compiles to a constant. */\ndeclare function offsetof(fieldName?: string): usize;\n/** Determines the name of a given type. */\ndeclare function nameof(value?: T): string;\n/** Determines the unique runtime id of a class type. Compiles to a constant. */\ndeclare function idof(): u32;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Emits a `call_indirect` instruction, calling the specified function in the function table by index with the specified arguments. Does result in a runtime error if the arguments do not match the called function. */\ndeclare function call_indirect(target: Function | u32, ...args: any[]): T;\n/** Emits a `call` instruction, calling the specified function in the function table directly with the specified arguments. Function index must be a compile-time constant. */\ndeclare function call_direct(target: Function | u32, ...args: any[]): T;\n/** Instantiates a new instance of `T` using the specified constructor arguments. */\ndeclare function instantiate(...args: any[]): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */\ndeclare function isInteger(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */\ndeclare function isFloat(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a boolean type. */\ndeclare function isBoolean(value?: any): value is number;\n/** Tests if the specified type *or* expression can represent negative numbers. Compiles to a constant. */\ndeclare function isSigned(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a reference type. Compiles to a constant. */\ndeclare function isReference(value?: any): value is object | string;\n/** Tests if the specified type *or* expression can be used as a string. Compiles to a constant. */\ndeclare function isString(value?: any): value is string | String;\n/** Tests if the specified type *or* expression can be used as an array. Compiles to a constant. */\ndeclare function isArray(value?: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. Compiles to a constant. */\ndeclare function isArrayLike(value?: any): value is ArrayLike;\n/** Tests if the specified type *or* expression is of a function type. Compiles to a constant. */\ndeclare function isFunction(value?: any): value is (...args: any) => any;\n/** Tests if the specified type *or* expression is of a nullable reference type. Compiles to a constant. */\ndeclare function isNullable(value?: any): bool;\n/** Tests if the specified expression resolves to a defined element. Compiles to a constant. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. Compiles to a constant. */\ndeclare function isConstant(expression: any): bool;\n/** Tests if the specified type *or* expression is of a managed type. Compiles to a constant. */\ndeclare function isManaged(value?: any): bool;\n/** Tests if the specified type is void. Compiles to a constant. */\ndeclare function isVoid(): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n/** Returns the number of parameters in the given function signature type. */\ndeclare function lengthof any>(func?: T): i32;\n\n/** Atomic operations. */\ndeclare namespace atomic {\n /** Atomically loads an integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): T;\n /** Atomically stores an integer value to memory. */\n export function store(offset: usize, value: T, immOffset?: usize): void;\n /** Atomically adds an integer value in memory. */\n export function add(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically subtracts an integer value in memory. */\n export function sub(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise AND operation on an integer value in memory. */\n export function and(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise OR operation on an integer value in memory. */\n export function or(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise XOR operation on an integer value in memory. */\n export function xor(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically exchanges an integer value in memory. */\n export function xchg(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically compares and exchanges an integer value in memory if the condition is met. */\n export function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n /** Performs a wait operation on an address in memory suspending this agent if the integer condition is met. */\n export function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n /** Performs a notify operation on an address in memory waking up suspended agents. */\n export function notify(ptr: usize, count: i32): i32;\n}\n\n/** Describes the result of an atomic wait operation. */\ndeclare enum AtomicWaitResult {\n /** Woken by another agent. */\n OK,\n /** Loaded value did not match the expected value. */\n NOT_EQUAL,\n /** Not woken before the timeout expired. */\n TIMED_OUT\n}\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i8;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Loads an 8-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 32-bit integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 32-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 32-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i32;\n /** Atomically stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize): void;\n /** Performs a wait operation on a 32-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n /** Atomic 32-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 32-bit integer value in memory. */\n export function add(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts a 32-bit integer value in memory. */\n export function sub(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 32-bit integer value in memory. */\n export function and(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 32-bit integer value in memory. */\n export function or(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 32-bit integer value in memory. */\n export function xor(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 32-bit integer value in memory. */\n export function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 32-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: any): i64;\ndeclare namespace i64 {\n /** Smallest representable value. */\n export const MIN_VALUE: i64;\n /** Largest representable value. */\n export const MAX_VALUE: i64;\n /** Loads an 8-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 64-bit unsigned integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 64-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 64-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i64;\n /** Atomically stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize): void;\n /** Performs a wait operation on a 64-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n /** Atomic 64-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 32-bit values. */\n export namespace rmw32 {\n /** Atomically adds a 32-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 32-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 32-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 32-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 32-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 32-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 32-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 64-bit integer value in memory. */\n export function add(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 64-bit integer value in memory. */\n export function sub(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 64-bit integer value in memory. */\n export function and(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 64-bit integer value in memory. */\n export function or(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 64-bit integer value in memory. */\n export function xor(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 64-bit integer value in memory. */\n export function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 64-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare var isize: typeof i32 | typeof i64;\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): i8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): i8;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): i32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: any): i64;\ndeclare namespace u64 {\n /** Smallest representable value. */\n export const MIN_VALUE: u64;\n /** Largest representable value. */\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare var usize: typeof u32 | typeof u64;\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Loads a 32-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n /** Stores a 32-bit float to memory. */\n export function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Loads a 64-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n /** Stores a 64-bit float to memory. */\n export function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function v128(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace v128 {\n /** Creates a 128-bit vector with identical lanes. */\n export function splat(x: T): v128;\n /** Extracts one lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): T;\n /** Replaces one lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: T): v128;\n /** Selects lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n /** Loads a 128-bit vector from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n /** Stores a 128-bit vector to memory. */\n export function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n /** Adds each lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128; // except i64\n /** Divides each lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each lane of two 128-bit vectors using saturation. */\n export function add_saturate(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors using saturation. */\n export function sub_saturate(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise right shift on each lane of a 128-bit vector by a scalar. */\n export function shr(a: v128, b: i32): v128;\n /** Performs the bitwise AND operation on each lane of two 128-bit vectors. */\n export function and(a: v128, b: v128): v128;\n /** Performs the bitwise OR operation on each lane of two 128-bit vectors. */\n export function or(a: v128, b: v128): v128;\n /** Performs the bitwise XOR operation on each lane of two 128-bit vectors. */\n export function xor(a: v128, b: v128): v128;\n /** Performs the bitwise NOT operation on each lane of a 128-bit vector. */\n export function not(a: v128): v128;\n /** Selects bits of either 128-bit vector according to the specified mask. */\n export function bitselect(v1: v128, v2: v128, mask: v128): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes the minimum of each lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each lane of a 128-bit vector from integer to floating point. */\n export function convert(a: v128): v128;\n /** Truncates each lane of a 128-bit vector from floating point to integer with saturation. */\n export function trunc(a: v128): v128;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace i8x16 {\n /** Creates a vector with sixteen identical 8-bit integer lanes. */\n export function splat(x: i8): v128;\n /** Extracts one 8-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i8;\n /** Extracts one 8-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u8;\n /** Replaces one 8-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i8): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 8-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 8-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */\ndeclare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\ndeclare namespace i16x8 {\n /** Creates a vector with eight identical 16-bit integer lanes. */\n export function splat(x: i16): v128;\n /** Extracts one 16-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i16;\n /** Extracts one 16-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u16;\n /** Replaces one 16-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i16): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 16-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 16-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */\ndeclare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\ndeclare namespace i32x4 {\n /** Creates a 128-bit vector with four identical 32-bit integer lanes. */\n export function splat(x: i32): v128;\n /** Extracts one 32-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i32;\n /** Replaces one 32-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i32): v128;\n /** Adds each 32-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 32-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f32x4_sat(a: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f32x4_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */\ndeclare function i64x2(a: i64, b: i64): v128;\ndeclare namespace i64x2 {\n /** Creates a 128-bit vector with two identical 64-bit integer lanes. */\n export function splat(x: i64): v128;\n /** Extracts one 64-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i64;\n /** Replaces one 64-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i64): v128;\n /** Adds each 64-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 64-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Truncates each 64-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f64x2_sat(a: v128): v128;\n /** Truncates each 64-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f64x2_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */\ndeclare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\ndeclare namespace f32x4 {\n /** Creates a 128-bit vector with four identical 32-bit float lanes. */\n export function splat(x: f32): v128;\n /** Extracts one 32-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f32;\n /** Replaces one 32-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f32): v128;\n /** Adds each 32-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 32-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 32-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 32-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 32-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 32-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 32-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 32-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i32x4(a: v128): v128;\n /** Converts each 32-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i32x4(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */\ndeclare function f64x2(a: f64, b: f64): v128;\ndeclare namespace f64x2 {\n /** Creates a 128-bit vector with two identical 64-bit float lanes. */\n export function splat(x: f64): v128;\n /** Extracts one 64-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f64;\n /** Replaces one 64-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f64): v128;\n /** Adds each 64-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 64-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 64-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 64-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 64-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 64-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 64-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 64-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i64x2(a: v128): v128;\n /** Converts each 64-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i64x2(a: v128): v128;\n}\ndeclare namespace v8x16 {\n /** Selects 8-bit lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128;\n}\n/** Macro type evaluating to the underlying native WebAssembly type. */\ndeclare type native = T;\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type ReturnType any> = T extends (...args: any) => infer R ? R : any;\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type returnof any> = ReturnType;\n\n/** Pseudo-class representing the backing class of integer types. */\ndeclare class _Integer {\n /** Smallest representable value. */\n static readonly MIN_VALUE: number;\n /** Largest representable value. */\n static readonly MAX_VALUE: number;\n /** Converts a string to an integer of this type. */\n static parseInt(value: string, radix?: number): number;\n /** Converts this integer to a string. */\n toString(): string;\n}\n\n/** Pseudo-class representing the backing class of floating-point types. */\ndeclare class _Float {\n /** Difference between 1 and the smallest representable value greater than 1. */\n static readonly EPSILON: f32 | f64;\n /** Smallest representable value. */\n static readonly MIN_VALUE: f32 | f64;\n /** Largest representable value. */\n static readonly MAX_VALUE: f32 | f64;\n /** Smallest safely representable integer value. */\n static readonly MIN_SAFE_INTEGER: f32 | f64;\n /** Largest safely representable integer value. */\n static readonly MAX_SAFE_INTEGER: f32 | f64;\n /** Value representing positive infinity. */\n static readonly POSITIVE_INFINITY: f32 | f64;\n /** Value representing negative infinity. */\n static readonly NEGATIVE_INFINITY: f32 | f64;\n /** Value representing \'not a number\'. */\n static readonly NaN: f32 | f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n static isNaN(value: f32 | f64): bool;\n /** Returns true if passed value is finite. */\n static isFinite(value: f32 | f64): bool;\n /** Returns true if the value passed is a safe integer. */\n static isSafeInteger(value: f32 | f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n static isInteger(value: f32 | f64): bool;\n /** Converts a string to an integer. */\n static parseInt(value: string, radix?: i32): f32 | f64;\n /** Converts a string to a floating-point number. */\n static parseFloat(value: string): f32 | f64;\n /** Converts this floating-point number to a string. */\n toString(this: f64): string;\n}\n\n/** Backing class of signed 8-bit integers. */\ndeclare const I8: typeof _Integer;\n/** Backing class of signed 16-bit integers. */\ndeclare const I16: typeof _Integer;\n/** Backing class of signed 32-bit integers. */\ndeclare const I32: typeof _Integer;\n/** Backing class of signed 64-bit integers. */\ndeclare const I64: typeof _Integer;\n/** Backing class of signed size integers. */\ndeclare const Isize: typeof _Integer;\n/** Backing class of unsigned 8-bit integers. */\ndeclare const U8: typeof _Integer;\n/** Backing class of unsigned 16-bit integers. */\ndeclare const U16: typeof _Integer;\n/** Backing class of unsigned 32-bit integers. */\ndeclare const U32: typeof _Integer;\n/** Backing class of unsigned 64-bit integers. */\ndeclare const U64: typeof _Integer;\n/** Backing class of unsigned size integers. */\ndeclare const Usize: typeof _Integer;\n/** Backing class of 32-bit floating-point values. */\ndeclare const F32: typeof _Float;\n/** Backing class of 64-bit floating-point values. */\ndeclare const F64: typeof _Float;\n\n// User-defined diagnostic macros\n\n/** Emits a user-defined diagnostic error when encountered. */\ndeclare function ERROR(message?: any): void;\n/** Emits a user-defined diagnostic warning when encountered. */\ndeclare function WARNING(message?: any): void;\n/** Emits a user-defined diagnostic info when encountered. */\ndeclare function INFO(message?: any): void;\n\n// Polyfills\n\n/** Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Whether the memory managed interface is implemented. */\n export const implemented: bool;\n /** Returns the current memory size in units of pages. One page is 64kb. */\n export function size(): i32;\n /** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\n export function grow(value: i32): i32;\n /** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\n export function fill(dst: usize, value: u8, count: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n export function copy(dst: usize, src: usize, n: usize): void;\n /** Repeats `src` of length `srcLength` `count` times at `dst`. */\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void;\n /** Copies elements from a passive element segment to a table. */\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void;\n /** Prevents further use of a passive element segment. */\n export function drop(segmentIndex: u32): void;\n /** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\n export function compare(vl: usize, vr: usize, n: usize): i32;\n}\n\n/** Garbage collector operations. */\ndeclare namespace gc {\n /** Whether the garbage collector interface is implemented. */\n export const implemented: bool;\n /** Performs a full garbage collection cycle. */\n export function collect(): void;\n /** Retains a reference, making sure that it doesn\'t become collected. */\n export function retain(ref: usize): void;\n /** Releases a reference, allowing it to become collected. */\n export function release(ref: usize): void;\n}\n\n/** Table operations. */\ndeclare namespace table {\n /** Copies elements from a passive element segment to a table. */\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void;\n /** Prevents further use of a passive element segment. */\n export function drop(elementIndex: u32): void;\n /** Copies elements from one region of a table to another region. */\n export function copy(dest: u32, src: u32, n: u32): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer\'s bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform\'s endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getInt64()` method gets a signed 64-bit integer (long long) at the specified byte offset from the start of the `DataView`. */\n getInt64(byteOffset: i32, littleEndian?: boolean): i64;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `getUint64()` method gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the `DataView`. */\n getUint64(byteOffset: i32, littleEndian?: boolean): u64;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setInt64()` method stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the `DataView`. */\n setInt64(byteOffset: i32, value: i64, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** The `setUint64()` method stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the `DataView`. */\n setUint64(byteOffset: i32, value: u64, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ninterface ArrayLike {\n length: i32;\n // [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\n/* @internal */\ndeclare abstract class TypedArray implements ArrayBufferView {\n [key: number]: T;\n /** Number of bytes per element. */\n static readonly BYTES_PER_ELEMENT: usize;\n /** Wrap an ArrayBuffer */\n static wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray;\n /** Constructs a new typed array. */\n constructor(length: i32);\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n /** The length (in elements). */\n readonly length: i32;\n /** The includes() method determines whether a typed array includes a certain element, returning true or false as appropriate. */\n includes(searchElement: T, fromIndex?: i32): bool;\n /** The indexOf() method returns the first index at which a given element can be found in the typed array, or -1 if it is not present. */\n indexOf(searchElement: T, fromIndex?: i32): i32;\n /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n /** Returns copied section of an TypedArray from begin inclusive to end exclusive */\n slice(begin?: i32, end?: i32): TypedArray;\n /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */\n subarray(begin?: i32, end?: i32): TypedArray;\n /** The copyWithin() method copies the sequence of array elements within the array to the position starting at target. The copy is taken from the index positions of the second and third arguments start and end. The end argument is optional and defaults to the length of the array. */\n copyWithin(target: i32, start: i32, end?: i32): this;\n /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */\n reduce(callbackfn: (accumulator: U, value: T, index: i32, self: this) => U, initialValue: U): U;\n /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */\n reduceRight(callbackfn: (accumulator: U, value: T, index: i32, self: this) => U, initialValue: U): U;\n /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/\n some(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/\n map(callbackfn: (value: T, index: i32, self: this) => T): TypedArray;\n /** The filter() method creates a new typed array with all elements that pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.filter(). */\n filter(callbackfn: (value: T, index: i32, self: this) => bool): TypedArray;\n /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */\n sort(callback?: (a: T, b: T) => i32): this;\n /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */\n fill(value: T, start?: i32, end?: i32): this;\n /** The findIndex() method returns an index in the typed array, if an element in the typed array satisfies the provided testing function. Otherwise -1 is returned. See also the find() [not implemented] method, which returns the value of a found element in the typed array instead of its index. */\n findIndex(callbackfn: (value: T, index: i32, self: this) => bool): i32;\n /** The every() method tests whether all elements in the typed array pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.every(). */\n every(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The forEach() method executes a provided function once per array element. This method has the same algorithm as Array.prototype.forEach().*/\n forEach(callbackfn: (value: T, index: i32, self: this) => void): void;\n /** The reverse() method reverses a typed array in place. The first typed array element becomes the last and the last becomes the first. This method has the same algorithm as Array.prototype.reverse(). */\n reverse(): this;\n}\n\n/** An array of twos-complement 8-bit signed integers. */\ndeclare class Int8Array extends TypedArray {}\n/** An array of 8-bit unsigned integers. */\ndeclare class Uint8Array extends TypedArray {}\n/** A clamped array of 8-bit unsigned integers. */\ndeclare class Uint8ClampedArray extends TypedArray {}\n/** An array of twos-complement 16-bit signed integers. */\ndeclare class Int16Array extends TypedArray {}\n/** An array of 16-bit unsigned integers. */\ndeclare class Uint16Array extends TypedArray {}\n/** An array of twos-complement 32-bit signed integers. */\ndeclare class Int32Array extends TypedArray {}\n/** An array of 32-bit unsigned integers. */\ndeclare class Uint32Array extends TypedArray {}\n/** An array of twos-complement 64-bit signed integers. */\ndeclare class Int64Array extends TypedArray {}\n/** An array of 64-bit unsigned integers. */\ndeclare class Uint64Array extends TypedArray {}\n/** An array of 32-bit floating point numbers. */\ndeclare class Float32Array extends TypedArray {}\n/** An array of 64-bit floating point numbers. */\ndeclare class Float64Array extends TypedArray {}\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n\n /** Tests if a value is an array. */\n static isArray(value: any): value is Array;\n /** Creates a new array with at least the specified capacity and length zero. */\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\n/** Class representing a fixed sequence of values of type `T`. */\ndeclare class FixedArray {\n [key: number]: T;\n readonly length: i32;\n constructor(capacity?: i32);\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(start: i32, end?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n repeat(count?: i32): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\ndeclare namespace String {\n /** Encoding helpers for UTF-8. */\n export namespace UTF8 {\n /** Calculates the byte length of the specified string when encoded as UTF-8, optionally null terminated. */\n export function byteLength(str: string, nullTerminated?: bool): i32;\n /** Encodes the specified string to UTF-8 bytes, optionally null terminated. */\n export function encode(str: string, nullTerminated?: bool): ArrayBuffer;\n /** Decodes the specified buffer from UTF-8 bytes to a string, optionally null terminated. */\n export function decode(buf: ArrayBuffer, nullTerminated?: bool): string;\n /** Decodes raw UTF-8 bytes to a string, optionally null terminated. */\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated?: bool): string;\n }\n /** Encoding helpers for UTF-16. */\n export namespace UTF16 {\n /** Calculates the byte length of the specified string when encoded as UTF-16. */\n export function byteLength(str: string): i32;\n /** Encodes the specified string to UTF-16 bytes. */\n export function encode(str: string): ArrayBuffer;\n /** Decodes the specified buffer from UTF-16 bytes to a string. */\n export function decode(buf: ArrayBuffer): string;\n /** Decodes raw UTF-16 bytes to a string. */\n export function decodeUnsafe(buf: usize, len: usize): string;\n }\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ninterface Boolean {\n toString(): string;\n}\ninterface Function {}\ninterface IArguments {}\ninterface Number {\n toString(radix?: number): string;\n}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Map {\n readonly size: i32;\n has(key: K): bool;\n set(key: K, value: V): void;\n get(key: K): V;\n delete(key: K): bool;\n clear(): void;\n keys(): K[]; // preliminary\n values(): V[]; // preliminary\n toString(): string;\n}\n\ndeclare class Set {\n readonly size: i32;\n has(value: K): bool;\n add(value: K): void;\n delete(value: K): bool;\n clear(): void;\n values(): K[]; // preliminary\n toString(): string;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\n\ndeclare const Symbol: SymbolConstructor;\n\ninterface IMath {\n /** The base of natural logarithms, e, approximately 2.718. */\n readonly E: T;\n /** The natural logarithm of 2, approximately 0.693. */\n readonly LN2: T;\n /** The natural logarithm of 10, approximately 2.302. */\n readonly LN10: T;\n /** The base 2 logarithm of e, approximately 1.442. */\n readonly LOG2E: T;\n /** The base 10 logarithm of e, approximately 0.434. */\n readonly LOG10E: T;\n /** The ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n readonly PI: T;\n /** The square root of 1/2, approximately 0.707. */\n readonly SQRT1_2: T;\n /** The square root of 2, approximately 1.414. */\n readonly SQRT2: T;\n /** Returns the absolute value of `x`. */\n abs(x: T): T;\n /** Returns the arccosine (in radians) of `x`. */\n acos(x: T): T;\n /** Returns the hyperbolic arc-cosine of `x`. */\n acosh(x: T): T;\n /** Returns the arcsine (in radians) of `x`. */\n asin(x: T): T;\n /** Returns the hyperbolic arcsine of `x`. */\n asinh(x: T): T;\n /** Returns the arctangent (in radians) of `x`. */\n atan(x: T): T;\n /** Returns the arctangent of the quotient of its arguments. */\n atan2(y: T, x: T): T;\n /** Returns the hyperbolic arctangent of `x`. */\n atanh(x: T): T;\n /** Returns the cube root of `x`. */\n cbrt(x: T): T;\n /** Returns the smallest integer greater than or equal to `x`. */\n ceil(x: T): T;\n /** Returns the number of leading zero bits in the 32-bit binary representation of `x`. */\n clz32(x: T): T;\n /** Returns the cosine (in radians) of `x`. */\n cos(x: T): T;\n /** Returns the hyperbolic cosine of `x`. */\n cosh(x: T): T;\n /** Returns e to the power of `x`. */\n exp(x: T): T;\n /** Returns e to the power of `x`, minus 1. */\n expm1(x: T): T;\n /** Returns the largest integer less than or equal to `x`. */\n floor(x: T): T;\n /** Returns the nearest 32-bit single precision float representation of `x`. */\n fround(x: T): T;\n /** Returns the square root of the sum of squares of its arguments. */\n hypot(value1: T, value2: T): T; // TODO: rest\n /** Returns the result of the C-like 32-bit multiplication of `a` and `b`. */\n imul(a: T, b: T): T;\n /** Returns the natural logarithm (base e) of `x`. */\n log(x: T): T;\n /** Returns the base 10 logarithm of `x`. */\n log10(x: T): T;\n /** Returns the natural logarithm (base e) of 1 + `x`. */\n log1p(x: T): T;\n /** Returns the base 2 logarithm of `x`. */\n log2(x: T): T;\n /** Returns the largest-valued number of its arguments. */\n max(value1: T, value2: T): T; // TODO: rest\n /** Returns the lowest-valued number of its arguments. */\n min(value1: T, value2: T): T; // TODO: rest\n /** Returns `base` to the power of `exponent`. */\n pow(base: T, exponent: T): T;\n /** Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0. */\n random(): T;\n /** Returns the value of `x` rounded to the nearest integer. */\n round(x: T): T;\n /** Returns the sign of `x`, indicating whether the number is positive, negative or zero. */\n sign(x: T): T;\n /** Returns whether the sign bit of `x` is set. */\n signbit(x: T): bool;\n /** Returns the sine of `x`. */\n sin(x: T): T;\n /** Returns the hyperbolic sine of `x`. */\n sinh(x: T): T;\n /** Returns the square root of `x`. */\n sqrt(x: T): T;\n /** Returns the tangent of `x`. */\n tan(x: T): T;\n /** Returns the hyperbolic tangent of `x`. */\n tanh(x: T): T;\n /** Returns the integer part of `x` by removing any fractional digits. */\n trunc(x: T): T;\n}\n\ninterface INativeMath extends IMath {\n /** Contains sin value produced after Math/Mathf.sincos */\n sincos_sin: T;\n /** Contains cos value produced after Math/Mathf.sincos */\n sincos_cos: T;\n /** Seeds the random number generator. */\n seedRandom(value: i64): void;\n /** Returns the floating-point remainder of `x / y` (rounded towards zero). */\n mod(x: T, y: T): T;\n /** Returns the floating-point remainder of `x / y` (rounded to nearest). */\n rem(x: T, y: T): T;\n /** Returns sin and cos simultaneously for same angle. Results stored to `sincos_s32/64` and `sincos_c32/64` globals */\n sincos(x: T): void;\n}\n\n/** Double precision math imported from JavaScript. */\ndeclare const JSMath: IMath;\n/** Double precision math implemented natively. */\ndeclare const NativeMath: INativeMath;\n/** Single precision math implemented natively. */\ndeclare const NativeMathf: INativeMath;\n/** Alias of {@link NativeMath} or {@link JSMath} respectively. Defaults to `NativeMath`. */\ndeclare const Math: IMath;\n/** Alias of {@link NativeMathf} or {@link JSMath} respectively. Defaults to `NativeMathf`. */\ndeclare const Mathf: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): i64;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): i64;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: i64);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): i64;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: i64): i64;\n}\n\n/** Environmental tracing function for debugging purposes. */\ndeclare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: f64, a4?: f64): void;\n\n// Decorators\n\ninterface TypedPropertyDescriptor {\n configurable?: boolean;\n enumerable?: boolean;\n writable?: boolean;\n value?: T;\n get?(): T;\n set?(value: T): void;\n}\n\n/** Annotates a method as a binary operator overload for the specified `token`. */\ndeclare function operator(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n) => TypedPropertyDescriptor | void;\n\ndeclare namespace operator {\n /** Annotates a method as a binary operator overload for the specified `token`. */\n export function binary(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n ): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary prefix operator overload for the specified `token`. */\n export function prefix(token: "!" | "~" | "+" | "-" | "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary postfix operator overload for the specified `token`. */\n export function postfix(token: "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n}\n\n/** Annotates an element as a program global. */\ndeclare function global(...args: any[]): any;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n\n/** Annotates a class as being sealed / non-derivable. */\ndeclare function sealed(constructor: Function): void;\n\n/** Annotates a method, function or constant global as always inlined. */\ndeclare function inline(...args: any[]): any;\n\n/** Annotates a method, function or constant global as unsafe. */\ndeclare function unsafe(...args: any[]): any;\n\n/** Annotates an explicit external name of a function or global. */\ndeclare function external(...args: any[]): any;\n\n/** Annotates a global for lazy compilation. */\ndeclare function lazy(...args: any[]): any;\n\n/** Annotates a function as the explicit start function. */\ndeclare function start(...args: any[]): any;\n',portable:"/**\n * Environment definitions for compiling AssemblyScript to JavaScript using tsc.\n *\n * Note that semantic differences require additional explicit conversions for full compatibility.\n * For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n * result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n *\n * Note that i64's are not portable (JS numbers are IEEE754 doubles with a maximum safe integer\n * value of 2^53-1) and instead require a compatibility layer to work in JS as well, as for example\n * {@link glue/js/i64} respectively {@link glue/wasm/i64}.\n *\n * @module std/portable\n *//***/\n\n/// \n\n// Types\n\ndeclare type bool = boolean;\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified value is a valid integer. Can't distinguish an integer from an integral float. */\ndeclare function isInteger(value: any): value is number;\n/** Tests if the specified value is a valid float. Can't distinguish a float from an integer. */\ndeclare function isFloat(value: any): value is number;\n/** Tests if the specified value is of a nullable reference type. */\ndeclare function isNullable(value: any): bool;\n/** Tests if the specified value is of a reference type. */\ndeclare function isReference(value: any): value is object | string;\n/** Tests if the specified value is of a function type */\ndeclare function isFunction(value: any): value is Function;\n/** Tests if the specified value can be used as a string. */\ndeclare function isString(value: any): value is string | String;\n/** Tests if the specified value can be used as an array. */\ndeclare function isArray(value: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. */\ndeclare function isArrayLike(value: any): value is ArrayLike;\n/** Tests if the specified expression resolves to a defined element. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. */\ndeclare function isConstant(expression: any): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T | null, message?: string): T;\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i16;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: any): isize;\ndeclare namespace isize {\n /** Smallest representable value. */\n export const MIN_VALUE: isize;\n /** Largest representable value. */\n export const MAX_VALUE: isize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): isize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): u8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): u16;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): u32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: any): isize;\ndeclare namespace usize {\n /** Smallest representable value. */\n export const MIN_VALUE: usize;\n /** Largest representable value. */\n export const MAX_VALUE: usize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): usize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f32): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f32): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f64): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f64;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f64;\n}\n\n// Polyfills\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Allocates a chunk of memory of the specified size and returns a pointer to it. */\n function allocate(size: usize): usize;\n /** Disposes a chunk of memory by its pointer. */\n function free(ptr: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n function copy(dst: usize, src: usize, n: usize): void;\n /** Fills size bytes from from the specified destination by same value in memory. */\n function fill(dst: usize, value: u8, size: usize): void;\n /** Resets the allocator to its initial state, if supported. */\n function reset(): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer's bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform's endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ndeclare class Array {\n\n static isArray(value: any): value is Array;\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from?: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint8ClampedArray extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ninterface ArrayLike {\n length: i32;\n [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: i32;\n\n private constructor();\n\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n endsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(from: i32, to?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n repeat(count?: i32): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ndeclare class Set {\n constructor(entries?: T[]);\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n toString(): string;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n delete(key: K): bool;\n toString(): string;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\ndeclare const Symbol: SymbolConstructor;\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ninterface IMath {\n readonly E: f64;\n readonly LN2: f64;\n readonly LN10: f64;\n readonly LOG2E: f64;\n readonly LOG10E: f64;\n readonly PI: f64;\n readonly SQRT1_2: f64;\n readonly SQRT2: f64;\n\n sincos_sin: f64;\n sincos_cos: f64;\n\n abs(x: f64): f64;\n acos(x: f64): f64;\n acosh(x: f64): f64;\n asin(x: f64): f64;\n asinh(x: f64): f64;\n atan(x: f64): f64;\n atan2(y: f64, x: f64): f64;\n atanh(x: f64): f64;\n cbrt(x: f64): f64;\n ceil(x: f64): f64;\n clz32(x: f64): i32;\n cos(x: f64): f64;\n cosh(x: f64): f64;\n exp(x: f64): f64;\n expm1(x: f64): f64;\n floor(x: f64): f64;\n fround(x: f64): f32;\n hypot(value1: f64, value2: f64): f64; // TODO: see std/math\n imul(a: f64, b: f64): i32;\n log(x: f64): f64;\n log10(x: f64): f64;\n log1p(x: f64): f64;\n log2(x: f64): f64;\n max(value1: f64, value2: f64): f64; // TODO: see std/math\n min(value1: f64, value2: f64): f64; // TODO: see std/math\n pow(base: f64, exponent: f64): f64;\n random(): f64;\n round(x: f64): f64;\n sign(x: f64): f64;\n signbit(x: f64): bool;\n sin(x: f64): f64;\n sincos(x: f64): f64;\n sinh(x: f64): f64;\n sqrt(x: f64): f64;\n tan(x: f64): f64;\n tanh(x: f64): f64;\n trunc(x: f64): f64;\n}\n\ndeclare const Math: IMath;\ndeclare const Mathf: IMath;\ndeclare const JSMath: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): number;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): number;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: number);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): number;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: number): number;\n}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n"}):(()=>{const e=path.join(".","..","std");return{assembly:fs.readFileSync(path.join(e,"assembly","index.d.ts"),"utf8"),portable:fs.readFileSync(path.join(e,"portable","index.d.ts"),"utf8")}})(),exports.compileString=(e,n)=>{"string"==typeof e&&(e={"input.ts":e});const t=Object.create({stdout:createMemoryStream(),stderr:createMemoryStream()});var r=["--binaryFile","binary","--textFile","text"];return Object.keys(n||{}).forEach(e=>{var t=n[e];Array.isArray(t)?t.forEach(n=>r.push("--"+e,String(n))):r.push("--"+e,String(t))}),exports.main(r.concat(Object.keys(e)),{stdout:t.stdout,stderr:t.stderr,readFile:n=>e.hasOwnProperty(n)?e[n]:null,writeFile:(e,n)=>t[e]=n,listFiles:()=>[]}),t},exports.main=function(e,n,t){"function"==typeof n?(t=n,n={}):n||(n={});const r=n.stdout||process.stdout,i=n.stderr||process.stderr,a=n.readFile||z,o=n.writeFile||N,s=n.listFiles||L,u=n.stats||createStats();if(!r)throw Error("'options.stdout' must be specified");if(!i)throw Error("'options.stderr' must be specified");const l=optionsUtil.parse(e,exports.options),c=l.options;if(e=l.arguments,c.noColors?colorsUtil.stdout.supported=colorsUtil.stderr.supported=!1:(colorsUtil.stdout=colorsUtil.from(r),colorsUtil.stderr=colorsUtil.from(i)),l.unknown.length&&l.unknown.forEach(e=>{i.write(colorsUtil.stderr.yellow("WARN: ")+"Unknown option '"+e+"'"+EOL)}),l.trailing.length&&i.write(colorsUtil.stderr.yellow("WARN: ")+"Unsupported trailing arguments: "+l.trailing.join(" ")+EOL),t||(t=function(e){var n=0;return e&&(i.write(colorsUtil.stderr.red("ERROR: ")+e.stack.replace(/^ERROR: /i,"")+EOL),n=1),n}),c.version)return r.write("Version "+exports.version+(isDev?"-dev":"")+EOL),t(null);if(c.help||!e.length){var f=c.help?r:i,d=c.help?colorsUtil.stdout:colorsUtil.stderr;return f.write([d.white("SYNTAX")," "+d.cyan("asc")+" [entryFile ...] [options]","",d.white("EXAMPLES")," "+d.cyan("asc")+" hello.ts"," "+d.cyan("asc")+" hello.ts -b hello.wasm -t hello.wat"," "+d.cyan("asc")+" hello1.ts hello2.ts -b -O > hello.wasm","",d.white("OPTIONS")].concat(optionsUtil.help(exports.options,24,EOL)).join(EOL)+EOL),t(null)}if(!fs.readFileSync){if(a===z)throw Error("'options.readFile' must be specified");if(o===N)throw Error("'options.writeFile' must be specified");if(s===L)throw Error("'options.listFiles' must be specified")}const p=c.baseDir?path.resolve(c.baseDir):".",h=c.notNear?[]:[nearBindings];c.transform&&c.transform.forEach(e=>h.push(__webpack_require__(13)(path.isAbsolute(e=e.trim())?e:path.join(process.cwd(),e))));var g=null,x=new Map,v=new Map;Object.keys(exports.libraryFiles).forEach(e=>{e.indexOf("/")>=0||(u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(exports.libraryFiles[e],exports.libraryPrefix+e+".ts",!1,g)}))});const m=[];if(c.lib){let e=c.lib;"string"==typeof e&&(e=e.split(",")),Array.prototype.push.apply(m,e.map(e=>e.trim()));for(let e=0,n=m.length;e{g=assemblyscript.parseFile(o,exports.libraryPrefix+i,!1,g)})}}}function _(e,n){return e.split(SEP).map((e,t,r)=>{let i=r.slice(0,t+1).join(SEP)||SEP,a=path.relative(p,i);return path.join(a,n)}).filter(e=>s(e,p)).reverse()}function y(e){let n=c.path.map(n=>_(e,n));return _(e,"node_modules").concat(...n)}function b(){for(var e,n,r;null!=(e=g.nextFile());){if(dependee=v.get(assemblyscript.getDependee(g,e))||p,n=null,r=null,e.startsWith(exports.libraryPrefix)){const t=e.substring(exports.libraryPrefix.length),i=e.substring(exports.libraryPrefix.length)+"/index";if(exports.libraryFiles.hasOwnProperty(t))n=exports.libraryFiles[t],e=exports.libraryPrefix+t+".ts";else if(exports.libraryFiles.hasOwnProperty(i))n=exports.libraryFiles[i],e=exports.libraryPrefix+i+".ts";else for(let o=0,s=m.length;o{if(x.has(o))return x.get(o);let e=path.join(s,o,"package.json"),n=a(e,p);if(n){let r;try{r=JSON.parse(n)}catch(n){return t(Error("Parsing "+e+" failed"))}let i=r.ascMain;if(i&&"string"==typeof i){let e=i.replace(/(.*)\/index\.ts/,"$1");return x.set(o,e),e}}return"assembly"})(),l=e=>{e.startsWith(exports.libraryPrefix)&&(e=e.substring(exports.libraryPrefix.length));let n=e.substring(0,e.indexOf("/")),t=e.substring(e.indexOf("/")+1);return path.join(s,n,u,t)};c.traceResolution&&i.write(" in '"+l(e)+"'");const f=e,d=e+"/index";if(null!==(n=a(l(f)+".ts",p))?e=f+".ts":null!==(n=a(l(d)+".ts",p))&&(e=d+".ts"),null!==n){c.traceResolution&&i.write(EOL+" -> '"+l(e)+"'"+EOL),r=path.join(s,o);break}c.traceResolution&&i.write(EOL)}}if(null==n)return t(Error("Import file '"+e+".ts' not found."));v.set(e.replace(/\.ts$/,""),r),u.parseCount++,u.parseTime+=measure(()=>{assemblyscript.parseFile(n,e,!1,g)})}if(checkDiagnostics(g,i))return t(Error("Parse error"))}c.path=c.path||[];{let e=String(c.runtime),n="rt/index-"+e,r=exports.libraryFiles[n];if(null==r){if(null==(r=a((n=e)+".ts",p)))return t(Error("Runtime '"+e+"' not found."))}else n="~lib/"+n;u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(r,n,!0,g)})}for(let n=0,r=e.length;n{g=assemblyscript.parseFile(o,i,!0,g)})}{let e=b();if(e)return e}!function(e,...n){h.forEach(t=>{"function"==typeof t[e]&&t[e](...n)})}("afterParse",g,o,p);{let e=b();if(e)return e}const E=assemblyscript.finishParsing(g);if(c.listFiles)return i.write(E.sources.map(e=>e.normalizedPath).sort().join(EOL)+EOL),t(null);var A=0,T=0;c.optimize&&(A=exports.defaultOptimizeLevel,T=exports.defaultShrinkLevel),"number"==typeof c.optimizeLevel&&(A=c.optimizeLevel),"number"==typeof c.shrinkLevel&&(T=c.shrinkLevel),A=Math.min(Math.max(A,0),3),T=Math.min(Math.max(T,0),2);const S=assemblyscript.createOptions();if(assemblyscript.setTarget(S,0),assemblyscript.setNoAssert(S,c.noAssert),assemblyscript.setImportMemory(S,c.importMemory),assemblyscript.setSharedMemory(S,c.sharedMemory),assemblyscript.setImportTable(S,c.importTable),assemblyscript.setExplicitStart(S,c.explicitStart),assemblyscript.setMemoryBase(S,c.memoryBase>>>0),assemblyscript.setSourceMap(S,null!=c.sourceMap),assemblyscript.setOptimizeLevelHints(S,A,T),assemblyscript.setNoUnsafe(S,c.noUnsafe),assemblyscript.setGlobalAlias(S,"Math","NativeMath"),assemblyscript.setGlobalAlias(S,"Mathf","NativeMathf"),assemblyscript.setGlobalAlias(S,"abort","~lib/builtins/abort"),assemblyscript.setGlobalAlias(S,"trace","~lib/builtins/trace"),c.use){let e=c.use;for(let n=0,r=e.length;n{I=assemblyscript.compileProgram(E,S)})}catch(e){return t(e)}if(checkDiagnostics(g,i))return I&&I.dispose(),t(Error("Compile error"));if(c.validate&&(u.validateCount++,u.validateTime+=measure(()=>{if(!I.validate())return I.dispose(),t(Error("Validate error"))})),"clamp"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{I.runPasses(["trap-mode-clamp"])});else if("js"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{I.runPasses(["trap-mode-js"])});else if("allow"!==c.trapMode)return I.dispose(),t(Error("Unsupported trap mode"));(A>=3||T>=2)&&(A=4),I.setOptimizeLevel(A),I.setShrinkLevel(T),I.setDebugInfo(c.debug);var O=[];if(c.runPasses&&("string"==typeof c.runPasses&&(c.runPasses=c.runPasses.split(",")),c.runPasses.length&&c.runPasses.forEach(e=>{O.indexOf(e)<0&&O.push(e)})),(A>0||T>0)&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{I.optimize()})),O.length&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{I.runPasses(O.map(e=>e.trim()))})),!c.noEmit){let e=!1,n=!1;if(null!=c.outFile&&(/\.was?t$/.test(c.outFile)&&null==c.textFile?c.textFile=c.outFile:/\.js$/.test(c.outFile)&&null==c.asmjsFile?c.asmjsFile=c.outFile:null==c.binaryFile&&(c.binaryFile=c.outFile)),null!=c.binaryFile){let r,s=null!=c.sourceMap?c.sourceMap.length?c.sourceMap:path.basename(c.binaryFile)+".map":null;if(u.emitCount++,u.emitTime+=measure(()=>{r=I.toBinary(s)}),c.binaryFile.length?o(c.binaryFile,r.output,p):(C(r.output),e=!0),n=!0,null!=r.sourceMap)if(c.binaryFile.length){let e=JSON.parse(r.sourceMap);e.sourceRoot=exports.sourceMapRoot,e.sources.forEach((n,r)=>{let i=null;if(n.startsWith(exports.libraryPrefix)){let e=n.substring(exports.libraryPrefix.length).replace(/\.ts$/,"");if(exports.libraryFiles.hasOwnProperty(e))i=exports.libraryFiles[e];else for(let e=0,t=m.length;e{t=I.toAsmjs()}),o(c.asmjsFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=I.toAsmjs()}),C(t),e=!0),n=!0}if(null!=c.idlFile){let t;c.idlFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),o(c.idlFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),C(t),e=!0),n=!0}if(null!=c.tsdFile){let t;c.tsdFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),o(c.tsdFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),C(t),e=!0),n=!0}if(null!=c.textFile||!n){let n;c.textFile&&c.textFile.length?(u.emitCount++,u.emitTime+=measure(()=>{n=I.toText()}),o(c.textFile,n,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{n=I.toText()}),C(n))}}return I.dispose(),c.measure&&printStats(u,i),c.printrtti&&printRTTI(E,i),t(null);function z(e,n){let t=path.resolve(n,e);try{let e;return u.readCount++,u.readTime+=measure(()=>{e=fs.readFileSync(t,{encoding:"utf8"})}),e}catch(e){return null}}function N(e,n,t){try{return u.writeCount++,u.writeTime+=measure(()=>{mkdirp(path.join(t,path.dirname(e))),"string"==typeof n?fs.writeFileSync(path.join(t,e),n,{encoding:"utf8"}):fs.writeFileSync(path.join(t,e),n)}),!0}catch(e){return!1}}function L(e,n){var t;try{return u.readTime+=measure(()=>{t=fs.readdirSync(path.join(n,e)).filter(e=>/^(?!.*\.d\.ts$).*\.ts$/.test(e))}),t}catch(e){return null}}function C(e){C.used||(u.writeCount++,C.used=!0),u.writeTime+=measure(()=>{"string"==typeof e?r.write(e,{encoding:"utf8"}):r.write(e)})}},exports.checkDiagnostics=checkDiagnostics,exports.createStats=createStats,process.hrtime||(process.hrtime=__webpack_require__(14)),exports.measure=measure,exports.formatTime=formatTime,exports.printStats=printStats,exports.printRTTI=printRTTI;var allocBuffer=void 0!==global&&global.Buffer?global.Buffer.allocUnsafe||function(e){return new global.Buffer(e)}:function(e){return new Uint8Array(e)};function createMemoryStream(e){var n=[];return n.write=function(n){if(e&&e(n),"string"==typeof n){let e=allocBuffer(utf8.length(n));utf8.write(n,e,0),n=e}this.push(n)},n.reset=function(){n.length=0},n.toBuffer=function(){for(var e=0,n=0,t=this.length;n191&&r<224?a[o++]=(31&r)<<6|63&e[n++]:r>239&&r<365?(r=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[n++])<<6|63&e[n++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},r.write=function(e,n,t){for(var r,i,a=t,o=0;o>6|192,n[t++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,n[t++]=r>>18|240,n[t++]=r>>12&63|128,n[t++]=r>>6&63|128,n[t++]=63&r|128):(n[t++]=r>>12|224,n[t++]=r>>6&63|128,n[t++]=63&r|128);return t-a}},function(e,n,t){(function(e){var t=void 0!==e&&e||{},r=t.env&&"CI"in t.env;function i(e,t){var i=t||{};return i.supported=e&&!!e.isTTY||r,i.gray=e=>i.supported?n.GRAY+e+n.RESET:e,i.red=e=>i.supported?n.RED+e+n.RESET:e,i.green=e=>i.supported?n.GREEN+e+n.RESET:e,i.yellow=e=>i.supported?n.YELLOW+e+n.RESET:e,i.blue=e=>i.supported?n.BLUE+e+n.RESET:e,i.magenta=e=>i.supported?n.MAGENTA+e+n.RESET:e,i.cyan=e=>i.supported?n.CYAN+e+n.RESET:e,i.white=e=>i.supported?n.WHITE+e+n.RESET:e,i}n.stdout=i(t.stdout,n),n.stderr=i(t.stderr),n.from=i,n.GRAY="",n.RED="",n.GREEN="",n.YELLOW="",n.BLUE="",n.MAGENTA="",n.CYAN="",n.WHITE="",n.RESET=""}).call(this,t(0))},function(e,n){n.parse=function(e,n){var t={},r=[],arguments=[],i=[],a={};Object.keys(n).forEach(e=>{if(!e.startsWith(" ")){var r=n[e];null!=r.alias&&("string"==typeof r.alias?a[r.alias]=e:Array.isArray(r.alias)&&r.alias.forEach(n=>a[n]=e)),null!=r.default&&(t[e]=r.default)}});for(var o=0,s=(e=e.slice()).length;ot[e]=s.value[e])}else r.push(i)}for(;o{var o=e[n];if(null!=o.description){for(var s="";s.length{for(let n=0;n=0?u.substring(l+1):u,i.statements=new Array,i.range=new o.Range(i,0,t.length),i.text=t,i}return i(n,e),Object.defineProperty(n.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),n}(l);n.Source=$;var ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.decorators=null,n.flags=a.CommonFlags.NONE,n}return i(n,e),n.prototype.is=function(e){return(this.flags&e)==e},n.prototype.isAny=function(e){return 0!=(this.flags&e)},n.prototype.set=function(e){this.flags|=e},n}(J);n.DeclarationStatement=ee;var ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INDEXSIGNATUREDECLARATION,n}return i(n,e),n}(ee);n.IndexSignatureDeclaration=ne;var te=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i(n,e),n}(ee);n.VariableLikeDeclarationStatement=te;var re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BLOCK,n}return i(n,e),n}(J);n.BlockStatement=re;var ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BREAK,n}return i(n,e),n}(J);n.BreakStatement=ie;var ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CLASSDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n}(ee);n.ClassDeclaration=ae;var oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CONTINUE,n}return i(n,e),n}(J);n.ContinueStatement=oe;var se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.DO,n}return i(n,e),n}(J);n.DoStatement=se;var ue=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EMPTY,n}return i(n,e),n}(J);n.EmptyStatement=ue;var le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMDECLARATION,n}return i(n,e),n}(ee);n.EnumDeclaration=le;var ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMVALUEDECLARATION,n}return i(n,e),n}(te);n.EnumValueDeclaration=ce;var fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTIMPORT,n}return i(n,e),n}(l);n.ExportImportStatement=fe;var de=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTMEMBER,n}return i(n,e),n}(l);n.ExportMember=de;var pe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORT,n}return i(n,e),n}(J);n.ExportStatement=pe;var he=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTDEFAULT,n}return i(n,e),n}(J);n.ExportDefaultStatement=he;var ge=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPRESSION,n}return i(n,e),n}(J);n.ExpressionStatement=ge;var xe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FIELDDECLARATION,n.parameterIndex=-1,n}return i(n,e),n}(te);n.FieldDeclaration=xe;var ve=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FOR,n}return i(n,e),n}(J);n.ForStatement=ve,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(n.ArrowKind||(n.ArrowKind={}));var me=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FUNCTIONDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},n}(ee);n.FunctionDeclaration=me;var _e=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IF,n}return i(n,e),n}(J);n.IfStatement=_e;var ye=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORTDECLARATION,n}return i(n,e),n}(ee);n.ImportDeclaration=ye;var be=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORT,n}return i(n,e),n}(J);n.ImportStatement=be;var Ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INTERFACEDECLARATION,n}return i(n,e),n}(ae);n.InterfaceDeclaration=Ee;var Ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.METHODDECLARATION,n}return i(n,e),n}(me);n.MethodDeclaration=Ae;var Te=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.NAMESPACEDECLARATION,n}return i(n,e),n}(ee);n.NamespaceDeclaration=Te;var Se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.RETURN,n}return i(n,e),n}(J);n.ReturnStatement=Se;var Ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCHCASE,n}return i(n,e),n}(l);n.SwitchCase=Ie;var Fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCH,n}return i(n,e),n}(J);n.SwitchStatement=Fe;var Oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.THROW,n}return i(n,e),n}(J);n.ThrowStatement=Oe;var ze=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TRY,n}return i(n,e),n}(J);n.TryStatement=ze;var Ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TYPEDECLARATION,n}return i(n,e),n}(ee);n.TypeDeclaration=Ne;var Le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLEDECLARATION,n}return i(n,e),n}(te);n.VariableDeclaration=Le;var Ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLE,n}return i(n,e),n}(J);n.VariableStatement=Ce;var Re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VOID,n}return i(n,e),n}(J);n.VoidStatement=Re;var we=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.WHILE,n}return i(n,e),n}(J);function ke(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}n.WhileStatement=we,n.findDecorator=function(e,n){if(n)for(var t=0,r=n.length;t";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var d=function(){function e(e,n,t){this.debugInfoRef=0,this.source=e,this.start=n,this.end=t}return e.join=function(n,t){if(n.source!=t.source)throw new Error("source mismatch");return new e(n.source,n.startt.end?n.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,n=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&n++;return n},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,n=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++n;return n},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();n.Range=d;var p=function(e){function n(n,t){void 0===t&&(t=null);var r=e.call(this,t)||this;r.end=0,r.pos=0,r.token=-1,r.tokenPos=0,r.nextToken=-1,r.nextTokenPos=0,r.nextTokenOnNewLine=!1,r.onComment=null,r.source=n,r.pos=0,r.end=n.text.length,r.diagnostics=t||new Array;var i=r.end,a=n.text;if(r.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=r){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,r));break}var a=e.charCodeAt(this.pos);if(a==n){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=n){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},n.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var n=this.source.text,t=n.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!r&&47==i)break;if(l.isLineBreak(i)){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(n,this.pos)},n.prototype.readRegexpFlags=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=0;this.pos57)&&95!=r)break;t++}return!0},n.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)t=i64_add(i64_shl(t,r),i64_new(u-48));else if(u>=65&&u<=70)t=i64_add(i64_shl(t,r),i64_new(10+u-65));else if(u>=97&&u<=102)t=i64_add(i64_shl(t,r),i64_new(10+u-97));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readDecimalInteger=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=i64_new(0),i=i64_new(10),a=n;this.pos=48&&u<=57)r=i64_add(i64_mul(r,i),i64_new(u-48));else{if(95!=u)break;a==o&&this.error(a==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),a=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Digit_expected,this.range(n)):a==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),r},n.prototype.readOctalInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(3),i=n,a=this.end;this.pos=48&&u<=55)t=i64_add(i64_shl(t,r),i64_new(u-48));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}++this.pos}return this.pos==n?this.error(s.DiagnosticCode.Octal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readBinaryInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(1),i=n,a=this.end;this.pos=48&&i<=57)n=(n<<4)+i-48;else if(i>=65&&i<=70)n=(n<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";n=(n<<4)+i+-87}if(0==--e)break}return e?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(n)},n.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,n=this.readHexInteger(),t=i64_low(n),r=!1;assert(!i64_high(n)),t>1114111&&(this.error(s.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),r=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),r=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(s.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),r=!0),r?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},n.prototype.finish=function(){},n}(s.DiagnosticEmitter);n.Tokenizer=p;var h=function(){};n.State=h;var g=null},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(n.DiagnosticCode||(n.DiagnosticCode={})),n.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)});Object.defineProperty(n,"__esModule",{value:!0});var a=t(0),o=t(1),s=t(17),u=t(22),l=t(24);function c(e){return e.text.includes("@nearfile")||d(e)}function f(e){return s.ASTBuilder.build(e)}function d(e){return(e.kind==a.NodeKind.SOURCE?e:e.range.source).sourceKind==a.SourceKind.USER_ENTRY}function p(e){return e.kind==a.NodeKind.CLASSDECLARATION}function h(e){return e.kind==a.NodeKind.FIELDDECLARATION}var g=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},n.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],n.sb=[],n.exportedClasses=new Map,n.wrappedFuncs=new Set,n}return i(n,e),n.build=function(e,t){return(new n).build(t)},n.nearFiles=function(e){return e.program.sources.filter(c)},n.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(f(e.name))||this.exportedClasses.set(f(e.name),e)},n.prototype.visitFunctionDeclaration=function(n){!d(n)||this.wrappedFuncs.has(f(n.name))||!n.is(o.CommonFlags.EXPORT)||0==n.signature.parameters.length&&"void"===f(n.signature.returnType)?e.prototype.visitFunctionDeclaration.call(this,n):(this.generateWrapperFunction(n),n.flags=n.flags^o.CommonFlags.EXPORT,this.wrappedFuncs.add(f(n.name)))},n.prototype.generateWrapperFunction=function(e){var n=e.signature,t=n.parameters,r=n.returnType,i=f(r).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),a=f(r).includes("null"),o=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+o+"(): void {"),t.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==f(r)?this.sb.push(" let result: "+f(r)+" = "+o+"("):this.sb.push(" "+o+"("),t.length>0&&(this.sb[this.sb.length-1]+=t.map(function(e){return x(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==f(r)&&this.sb.push("\n let encoder = new JSONEncoder();\n let val: Uint8Array;\n if ((isString<"+i+">() || isNullable<"+i+">()) && result == null) {\n encoder.setNull(null);\n val = encoder.serialize();\n } else {\n val = encode<"+i+">(result"+(a?"!":"")+", null, encoder);\n }\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+o+" as "+o+" }\n")},n.prototype.typeName=function(e){if(!p(e))return s.ASTBuilder.build(e);var n=f((e=e).name);return e.isGeneric&&(n+="<"+e.typeParameters.map(f).join(", ")+">"),n},n.prototype.getFields=function(e){var n=p(e)?e:this.exportedClasses.get(f(e));return null==n?[]:n.members.filter(function(e){return e.kind==a.NodeKind.FIELDDECLARATION}).map(function(e){return{name:f(e.name),type:e.type,isGeneric:v(n,e)}})},n.prototype.build=function(e){var n=this;this.sb=[l.preamble],this.visit(e);var t=e.statements.map(function(e){var t=s.ASTBuilder.build(e);if(p(e)){var r=e;if(t=t.slice(0,t.lastIndexOf("}")),r.members.filter(h).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var i=n.typeName(r);t+="\n static decode(json: Uint8Array): "+i+" {\n let value = instantiate<"+i+">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): "+i+' {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, "argument must be Uint8Array or Json Object");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): '+i+" {\n "+r.members.filter(h).map(function(e){var n=f(e.name);return x(e,"this."+n+' = obj.has("'+n+'") ? ')+": this."+n+";"}).join("\n ")+'\n return this;\n }\n\n _encode(name: string | null = "", _encoder: JSONEncoder | null = null): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+r.members.filter(h).map(function(e){var n=f(e.type),t=f(e.name);return"encode<"+n+", JSONEncoder>(this."+t+', "'+t+'", encoder);'}).join("\n ")+"\n encoder.popObject();\n return encoder;\n }\n\n encode(): Uint8Array {\n return this._encode().serialize();\n }\n\n serialize(): Uint8Array {\n return this.encode();\n }\n\n toJSON(): string {\n return this._encode().toString();\n }\n}"}return t});return this.sb.concat(t).join("\n")},n}(u.BaseVisitor);function x(e,n){return void 0===n&&(n=""),n+"decode<"+f(e.type)+', Obj>(obj, "'+f(e.name)+'")'}function v(e,n){return null!=e.typeParameters&&e.typeParameters.some(function(e){return f(e.name)==f(n.type)})}n.afterParse=function(e,n,t){g.nearFiles(e).forEach(function(r){var i=r.text.substr(0,r.text.indexOf("\n")).includes("out");e.donelog.delete(r.internalPath),e.seenlog.delete(r.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==r});var a=g.build(e,r);i&&n("out/"+r.normalizedPath,a,t),e.parseFile(a,(d(r)?"":"./")+r.normalizedPath,d(r))})}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(n.Feature||(n.Feature={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(n.Target||(n.Target={}))},function(e,n,t){"use strict";var r=this&&this.__decorate||function(e,n,t,r){var i,a=arguments.length,o=a<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,n,t,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(n,t,o):i(n,t))||o);return a>3&&o&&Object.defineProperty(n,t,o),o};Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(){}return r([()=>{}],e)}();n.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(n.TypeinfoFlags||(n.TypeinfoFlags={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i=t(5),a=t(2),o=t(5);function s(e){switch(e){case r.INFO:return"INFO";case r.WARNING:return"WARNING";case r.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case r.INFO:return n.COLOR_BLUE;case r.WARNING:return n.COLOR_YELLOW;case r.ERROR:return n.COLOR_RED;default:return assert(!1),""}}n.DiagnosticCode=o.DiagnosticCode,n.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(r=n.DiagnosticCategory||(n.DiagnosticCategory={})),n.diagnosticCategoryToString=s,n.COLOR_BLUE="",n.COLOR_YELLOW="",n.COLOR_RED="",n.COLOR_RESET="",n.diagnosticCategoryToColor=u;var l=function(){function e(e,n,t){this.range=null,this.relatedRange=null,this.code=e,this.category=n,this.message=t}return e.create=function(n,t,r,a,o){void 0===r&&(r=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(n);return null!=r&&(s=s.replace("{0}",r)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(n,t,s)},e.createInfo=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.INFO,t,i)},e.createWarning=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.WARNING,t,i)},e.createError=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function c(e,t){void 0===t&&(t=!1);for(var r=e.source.text,i=r.length,o=e.start,s=e.end;o>0&&!a.isLineBreak(r.charCodeAt(o-1));)o--;for(;s=0&&n<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(n))),i64_zero)},n.bitsetSet=function(e,n,t){return assert(n>=0&&n<64),t?i64_or(e,i64_shl(i64_one,i64_new(n))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(n))))}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(n.CharCode||(n.CharCode={})),n.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},n.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},n.isDecimalDigit=function(e){return e>=48&&e<=57},n.isOctalDigit=function(e){return e>=48&&e<=55},n.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,r);var n},n.isKeywordCharacter=function(e){return e>=97&&e<=122},n.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,i);var n};var r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,n){if(e>1),(r=n[t-=1&t])<=e&&e<=n[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0}),n.makeArray=function(e){if(void 0===e&&(e=null),e){for(var n=new Array(e.length),t=0,r=e.length;t0||r=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=n?e.substring(0,a):e.substring(0,a)+e.substring(t+3),r-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){r=(e=e.substring(t+4)).length;continue}}}t++}return r>0?e:"."}function o(e){var n=e.length;if(n<=1){if(0==n)return".";if(e.charCodeAt(0)==i)return e}for(;--n>0;)if(e.charCodeAt(n)==i)return e.substring(0,n);return"."}n.normalizePath=a,n.resolvePath=function(e,n){return e.startsWith("std/")?e:a(o(n)+r.PATH_DELIMITER+e)},n.dirname=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.indent=function(e,n){for(;n>=4;)e.push(" "),n-=4;n>=2&&(e.push(" "),n-=2),n&&e.push(" ")}},function(e,n,t){"use strict";function r(e,n){return e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24}function i(e,n,t){n[t]=e,n[t+1]=e>>>8,n[t+2]=e>>>16,n[t+3]=e>>>24}function a(e,n){var t=r(e,n),i=r(e,n+4);return i64_new(t,i)}Object.defineProperty(n,"__esModule",{value:!0}),n.readI8=function(e,n){return e[n]},n.writeI8=function(e,n,t){n[t]=e},n.readI16=function(e,n){return e[n]|e[n+1]<<8},n.writeI16=function(e,n,t){n[t]=e,n[t+1]=e>>>8},n.readI32=r,n.writeI32=i,n.readI64=a,n.writeI64=function(e,n,t){i(i64_low(e),n,t),i(i64_high(e),n,t+4)},n.readF32=function(e,n){return i32_as_f32(r(e,n))},n.writeF32=function(e,n,t){i(f32_as_i32(e),n,t)},n.readF64=function(e,n){return i64_as_f64(a(e,n))},n.writeF64=function(e,n,t){var r=f64_as_i64(e);i(i64_low(r),n,t),i(i64_high(r),n,t+4)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(0);t(18),t(19),t(20);var i=t(1),a=t(2),o=t(4),s=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(n){var t=new e;return t.visitNode(n),t.finish()},e.prototype.visitNode=function(e){switch(e.kind){case r.NodeKind.SOURCE:this.visitSource(e);break;case r.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case r.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case r.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case r.NodeKind.FALSE:case r.NodeKind.NULL:case r.NodeKind.SUPER:case r.NodeKind.THIS:case r.NodeKind.TRUE:case r.NodeKind.CONSTRUCTOR:case r.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case r.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case r.NodeKind.BINARY:this.visitBinaryExpression(e);break;case r.NodeKind.CALL:this.visitCallExpression(e);break;case r.NodeKind.CLASS:this.visitClassExpression(e);break;case r.NodeKind.COMMA:this.visitCommaExpression(e);break;case r.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case r.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case r.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case r.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case r.NodeKind.NEW:this.visitNewExpression(e);break;case r.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case r.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case r.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case r.NodeKind.BLOCK:this.visitBlockStatement(e);break;case r.NodeKind.BREAK:this.visitBreakStatement(e);break;case r.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case r.NodeKind.DO:this.visitDoStatement(e);break;case r.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case r.NodeKind.EXPORT:this.visitExportStatement(e);break;case r.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case r.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case r.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case r.NodeKind.FOR:this.visitForStatement(e);break;case r.NodeKind.IF:this.visitIfStatement(e);break;case r.NodeKind.IMPORT:this.visitImportStatement(e);break;case r.NodeKind.RETURN:this.visitReturnStatement(e);break;case r.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case r.NodeKind.THROW:this.visitThrowStatement(e);break;case r.NodeKind.TRY:this.visitTryStatement(e);break;case r.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case r.NodeKind.WHILE:this.visitWhileStatement(e);break;case r.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case r.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case r.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case r.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case r.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case r.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case r.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case r.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case r.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case r.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case r.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case r.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case r.NodeKind.DECORATOR:this.serializeDecorator(e);break;case r.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case r.NodeKind.PARAMETER:this.serializeParameter(e);break;case r.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var n=e.statements,t=0,r=n.length;t")}e.isNullable&&r.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var n=e.isNullable,t=this.sb;t.push(n?"((":"(");var r=e.explicitThisType;r&&(t.push("this: "),this.visitTypeNode(r));var i=e.parameters,a=i.length;if(a){r&&t.push(", "),this.serializeParameter(i[0]);for(var o=1;o "),this.visitTypeNode(s)):t.push(") => void"),n&&t.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var n=e.extendsType;n&&(this.sb.push(" extends "),this.visitTypeNode(n));var t=e.defaultType;t&&(this.sb.push("="),this.visitTypeNode(t))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var n=this.sb;n.push("[");var t=e.elementExpressions,r=t.length;if(r){t[0]&&this.visitNode(t[0]);for(var i=1;i"),this.visitNode(e.expression);break;case r.AssertionKind.AS:this.visitNode(e.expression),n.push(" as "),this.visitTypeNode(assert(e.toType));break;case r.AssertionKind.NONNULL:this.visitNode(e.expression),n.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var n=this.sb;this.visitNode(e.left),n.push(" "),n.push(o.operatorTokenToString(e.operator)),n.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var n=this.sb;this.visitNode(e.expression);var t=e.typeArguments;if(t){var r=t.length;if(r){n.push("<"),this.visitTypeNode(t[0]);for(var i=1;i(")}}else n.push("(");var a=e.arguments,o=a.length;if(o)for(this.visitNode(a[0]),i=1;ir&&t.push(e.substring(r,r=a+1)),t.push("\\0"),r=++a;break;case 8:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\b");break;case 9:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\t");break;case 10:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\n");break;case 11:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\v");break;case 12:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\f");break;case 13:a>r&&t.push(e.substring(r,a)),t.push("\\r"),r=++a;break;case 34:n?++a:(a>r&&t.push(e.substring(r,a)),t.push('\\"'),r=++a);break;case 39:n?(a>r&&t.push(e.substring(r,a)),t.push("\\'"),r=++a):++a;break;case 92:a>r&&t.push(e.substring(r,a)),t.push("\\\\"),r=++a;break;default:++a}a>r&&t.push(e.substring(r,a)),t.push(i)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var n=this.sb;n.push("/"),n.push(e.pattern),n.push("/"),n.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var n=this.sb;n.push("("),this.visitNode(e.expression),n.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var n=this.sb;this.visitNode(e.condition),n.push(" ? "),this.visitNode(e.ifThen),n.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(o.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(o.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var n=this.sb;if(n.length&&e.kind!=r.NodeKind.VARIABLE&&e.kind!=r.NodeKind.EXPRESSION){var t=n[n.length-1],i=t.length-1;i>=0&&(125==t.charCodeAt(i)||59==t.charCodeAt(i))?n.push("\n"):n.push(";\n")}else n.push(";\n")},e.prototype.visitBlockStatement=function(e){var n=this.sb,t=e.statements,r=t.length;if(r){n.push("{\n");for(var i=++this.indentLevel,o=0;o")}var c=e.extendsType;c&&(u.push(" extends "),this.visitTypeNode(c));var f=e.implementsTypes;if(f){var d=f.length;if(d)for(u.push(" implements "),this.visitTypeNode(f[0]),o=1;o")}}if(2==e.arrowKind){var u=t.parameters;assert(1==u.length),assert(!t.explicitThisType),this.serializeParameter(u[0])}else{n.push("(");var l=(u=t.parameters).length,c=t.explicitThisType;if(c&&(n.push("this: "),this.visitTypeNode(c)),l)for(c&&n.push(", "),this.serializeParameter(u[0]),s=1;s "),this.visitNode(f)):(assert(!r.isTypeOmitted(d)),n.push(" => "),this.visitTypeNode(d)):(r.isTypeOmitted(d)||e.isAny(i.CommonFlags.CONSTRUCTOR|i.CommonFlags.SET)?n.push(")"):(n.push("): "),this.visitTypeNode(d)),f&&(n.push(" "),this.visitNode(f)))},e.prototype.visitIfStatement=function(e){var n=this.sb;n.push("if ("),this.visitNode(e.condition),n.push(") ");var t=e.ifTrue;this.visitNode(t),t.kind!=r.NodeKind.BLOCK&&n.push(";\n");var i=e.ifFalse;i&&(t.kind==r.NodeKind.BLOCK?n.push(" else "):n.push("else "),this.visitNode(i))},e.prototype.visitImportDeclaration=function(e){var n=e.foreignName,t=e.name;this.visitIdentifierExpression(n),n.text!=t.text&&(this.sb.push(" as "),this.visitIdentifierExpression(t))},e.prototype.visitImportStatement=function(e){var n=this.sb;n.push("import ");var t=e.declarations,r=e.namespaceName;if(t){var i=t.length;if(i){n.push("{\n");var o=++this.indentLevel;a.indent(n,o),this.visitImportDeclaration(t[0]);for(var s=1;s")}var u=e.extendsType;u&&(o.push(" extends "),this.visitTypeNode(u)),o.push(" {\n");var l=++this.indentLevel,c=e.members;for(r=0,i=c.length;r")}}i.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var n=e.type,t=this.sb;e.flags&i.CommonFlags.DEFINITE_ASSIGNMENT&&t.push("!"),n&&(t.push(": "),this.visitTypeNode(n));var r=e.initializer;r&&(t.push(" = "),this.visitNode(r))},e.prototype.visitVariableStatement=function(e){var n=e.decorators;if(n)for(var t=0,r=n.length;t>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(n.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(n.i32=n.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(n.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(n.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(n.u32=n.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(n.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(n.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(n.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),n.clz=Math.clz32,n.ctz=function(e){var n=Math.clz32(e&-e);return e?31-n:n},n.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},n.rotl=function(e,n){return e<<(n&=31)|e>>>32-n},n.rotr=function(e,n){return e>>>(n&=31)|e<<32-n},n.abs=Math.abs,n.max=Math.max,n.min=Math.min,n.ceil=Math.ceil,n.floor=Math.floor,n.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},n.select=function(e,n,t){return t?e:n},n.sqrt=Math.sqrt,n.trunc=Math.trunc,n.copysign=function(e,n){return Math.abs(e)*Math.sign(n)},n.bswap=function(e){var n=e>>8&16711935,t=(16711935&e)<<8;return(n=(e=n|t)>>16&65535)|(65535&e)<<16},n.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",n.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",n.assert=function(e,n){if(e)return e;throw new a(n)},n.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,n){var t=this.split(e).join(n);return e.length||(t=n+t+n),t}}),n.isInteger=Number.isInteger,n.isFloat=function(e){return"number"==typeof e},n.isNullable=function(e){return!0},n.isReference=function(e){return"object"==typeof e||"string"==typeof e},n.isFunction=function(e){return"function"==typeof e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isArray=Array.isArray,n.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var n=new Array(e);return n.length=0,n},n.isDefined=function(e){return void 0!==e},n.isConstant=function(e){return!1},n.unchecked=function(e){return e},n.fmod=function(e,n){return e%n},n.fmodf=function(e,n){return Math.fround(e%n)},n.JSMath=Math;try{Object.defineProperties(n.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(r[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}n.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:n.__memory_allocate||function(n){if(!(n>>>=0))return 0;if(t+n>e.length){var r=e;(e=new Uint8Array(Math.max(65536,e.length+n,2*e.length))).set(r)}var i=t;return 7&(t+=n)&&(t=1+(7|t)),i},fill:n.__memory_fill||function(n,t,r){e.fill(t,n,n+r)},free:n.__memory_free||function(e){},copy:n.__memory_copy||function(n,t,r){e.copyWithin(n,t,t+r)},reset:n.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),n.store=n.__store||function(e,n,t){HEAP[(0|e)+(0|t)]=n},n.load=n.__load||function(e,n){return HEAP[(0|e)+(0|n)]},n.unmanaged=function(){}}).call(this,t(3))},function(e,n,t){(function(e){const n=new Float64Array(1),t=new Float32Array(n.buffer),r=new Int32Array(n.buffer);e.f32_as_i32=function(e){return t[0]=e,r[0]},e.i32_as_f32=function(e){return r[0]=e,t[0]},e.f64_as_i64=function(e){return n[0]=e,i64_new(r[0],r[1])},e.i64_as_f64=function(e){return r[0]=i64_low(e),r[1]=i64_high(e),n[0]}}).call(this,t(3))},function(e,n,t){(function(e){const n=e.Long||t(21);e.i64_zero=n.ZERO,e.i64_one=n.ONE,e.i64_new=function(e,t){return n.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,n){return e.add(n)},e.i64_sub=function(e,n){return e.sub(n)},e.i64_mul=function(e,n){return e.mul(n)},e.i64_div=function(e,n){return e.div(n)},e.i64_div_u=function(e,n){return e.toUnsigned().div(n.toUnsigned()).toSigned()},e.i64_rem=function(e,n){return e.mod(n)},e.i64_rem_u=function(e,n){return e.toUnsigned().mod(n.toUnsigned()).toSigned()},e.i64_and=function(e,n){return e.and(n)},e.i64_or=function(e,n){return e.or(n)},e.i64_xor=function(e,n){return e.xor(n)},e.i64_shl=function(e,n){return e.shl(n)},e.i64_shr=function(e,n){return e.shr(n)},e.i64_shr_u=function(e,n){return e.shru(n)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,n){return e.eq(n)},e.i64_ne=function(e,n){return e.ne(n)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var r=n.fromInt(t-1);return e.add(r).and(r.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const r=n.fromNumber(f32.MIN_SAFE_INTEGER),i=n.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(r)&&e.lte(i)};const a=n.fromNumber(f64.MIN_SAFE_INTEGER),o=n.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(n){return e.Math.fround(n.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,n){return(n?e.toUnsigned():e).toString(10)}}).call(this,t(3))},function(e,n){e.exports=r;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function r(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0}),r.isLong=i;var a={},o={};function s(e,n){var t,r,i;return n?(i=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(t=l(e,(0|e)<0?-1:0,!0),i&&(o[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function u(e,n){if(isNaN(e))return n?m:v;if(n){if(e<0)return m;if(e>=h)return A}else{if(e<=-g)return T;if(e+1>=g)return E}return e<0?u(-e,n).neg():l(e%p|0,e/p|0,n)}function l(e,n,t){return new r(e,n,t)}r.fromInt=s,r.fromNumber=u,r.fromBits=l;var c=Math.pow;function f(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return v;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return f(e.substring(1),n,t).neg();for(var i=u(c(t,8)),a=v,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return l+o;for(;l.length<6;)l="0"+l;o=""+l+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(T)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,n=31;n>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=d(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=d(e)),this.eq(e))return 0;var n=this.isNegative(),t=e.isNegative();return n&&!t?-1:!n&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(T)?T:this.not().add(_)},S.neg=S.negate,S.add=function(e){i(e)||(e=d(e));var n=this.high>>>16,t=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,u=e.low>>>16,c=0,f=0,p=0,h=0;return p+=(h+=a+(65535&e.low))>>>16,f+=(p+=r+u)>>>16,c+=(f+=t+s)>>>16,c+=n+o,l((p&=65535)<<16|(h&=65535),(c&=65535)<<16|(f&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=d(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return v;if(i(e)||(e=d(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return v;if(this.eq(T))return e.isOdd()?T:v;if(e.eq(T))return this.isOdd()?T:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(x)&&e.lt(x))return u(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,r=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,h=0,g=0,m=0,_=0;return m+=(_+=o*p)>>>16,g+=(m+=a*p)>>>16,m&=65535,g+=(m+=o*f)>>>16,h+=(g+=r*p)>>>16,g&=65535,h+=(g+=a*f)>>>16,g&=65535,h+=(g+=o*c)>>>16,h+=n*p+r*f+a*c+o*s,l((m&=65535)<<16|(_&=65535),(h&=65535)<<16|(g&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=d(e)),e.isZero())throw Error("division by zero");var n,r,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return m;if(e.gt(this.shru(1)))return y;a=m}else{if(this.eq(T))return e.eq(_)||e.eq(b)?T:e.eq(T)?_:(n=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?_:b:(r=this.sub(e.mul(n)),a=n.add(r.div(e)));if(e.eq(T))return this.unsigned?m:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=v}for(r=this;r.gte(e);){n=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),s=o<=48?1:c(2,o-48),f=u(n),p=f.mul(e);p.isNegative()||p.gt(r);)p=(f=u(n-=s,this.unsigned)).mul(e);f.isZero()&&(f=_),a=a.add(f),r=r.sub(p)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=d(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return l(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=d(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=d(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=d(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0==(e&=63))return this;var n=this.high;return e<32?l(this.low>>>e|n<<32-e,n>>>e,this.unsigned):l(32===e?n:n>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,n=this.low;return[255&n,n>>>8&255,n>>>16&255,n>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,n>>>24,n>>>16&255,n>>>8&255,255&n]},r.fromBytes=function(e,n,t){return t?r.fromBytesLE(e,n):r.fromBytesBE(e,n)},r.fromBytesLE=function(e,n){return new r(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},r.fromBytesBE=function(e,n){return new r(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}),a=this&&this.__values||function(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(n,"__esModule",{value:!0});var o=t(0),s=function(e){function n(n){var t=e.call(this,n)||this;return t.depth=0,t}return i(n,e),n.prototype._visit=function(e){switch(e.kind){case o.NodeKind.SOURCE:this.visitSource(e);break;case o.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case o.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case o.NodeKind.TYPENAME:this.visitTypeName(e);case o.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case o.NodeKind.FALSE:case o.NodeKind.NULL:case o.NodeKind.SUPER:case o.NodeKind.THIS:case o.NodeKind.TRUE:case o.NodeKind.CONSTRUCTOR:case o.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case o.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case o.NodeKind.BINARY:this.visitBinaryExpression(e);break;case o.NodeKind.CALL:this.visitCallExpression(e);break;case o.NodeKind.CLASS:this.visitClassExpression(e);break;case o.NodeKind.COMMA:this.visitCommaExpression(e);break;case o.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case o.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case o.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case o.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case o.NodeKind.NEW:this.visitNewExpression(e);break;case o.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case o.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case o.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case o.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case o.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case o.NodeKind.BLOCK:this.visitBlockStatement(e);break;case o.NodeKind.BREAK:this.visitBreakStatement(e);break;case o.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case o.NodeKind.DO:this.visitDoStatement(e);break;case o.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case o.NodeKind.EXPORT:this.visitExportStatement(e);break;case o.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case o.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case o.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case o.NodeKind.FOR:this.visitForStatement(e);break;case o.NodeKind.IF:this.visitIfStatement(e);break;case o.NodeKind.IMPORT:this.visitImportStatement(e);break;case o.NodeKind.RETURN:this.visitReturnStatement(e);break;case o.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case o.NodeKind.THROW:this.visitThrowStatement(e);break;case o.NodeKind.TRY:this.visitTryStatement(e);break;case o.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case o.NodeKind.WHILE:this.visitWhileStatement(e);break;case o.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case o.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case o.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case o.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case o.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case o.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case o.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case o.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case o.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case o.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case o.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case o.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case o.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case o.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case o.NodeKind.PARAMETER:this.visitParameter(e);break;case o.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},n.prototype.visitSource=function(e){var n,t;try{for(var r=a(e.statements),i=r.next();!i.done;i=r.next()){var o=i.value;this.depth++,this.visit(o),this.depth--}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}},n.prototype.visitTypeNode=function(e){},n.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},n.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},n.prototype.visitFunctionTypeNode=function(e){var n,t;try{for(var r=a(e.parameters),i=r.next();!i.done;i=r.next()){var o=i.value;this.visit(o)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}this.visit(e.returnType)},n.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},n.prototype.visitIdentifierExpression=function(e){},n.prototype.visitArrayLiteralExpression=function(e){var n=this;e.elementExpressions.map(function(e){e&&n.visit(e)})},n.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var n=0;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();n.DefaultWriter=a;var o=function(){function e(e){void 0===e&&(e=new a),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var n,t,a,o,s,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var l=r(e.entries()),c=l.next();!c.done;c=l.next()){var f=i(c.value,2),d=(f[0],f[1]);this.visit(d)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}else if(null!=(s=e)&&"function"==typeof s[Symbol.iterator])try{for(var p=r(e),h=p.next();!h.done;h=p.next())d=h.value,this.visit(d)}catch(e){a={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(a)throw a.error}}else this._visit(e)},e}();n.AbstractVisitor=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])},function(e,n){if(void 0===__WEBPACK_EXTERNAL_MODULE__11__){var t=new Error("Cannot find module 'assemblyscript'");throw t.code="MODULE_NOT_FOUND",t}e.exports=__WEBPACK_EXTERNAL_MODULE__11__},function(e){e.exports=JSON.parse('{"version":{"description":"Prints just the compiler\'s version and exits.","type":"b","alias":"v"},"help":{"description":"Prints this message and exits.","type":"b","alias":"h"},"optimize":{"description":["Optimizes the module. Also has the usual shorthands:",""," -O Uses defaults. Equivalent to -O3s"," -O0 Equivalent to --optimizeLevel 0"," -O1 Equivalent to --optimizeLevel 1"," -O2 Equivalent to --optimizeLevel 2"," -O3 Equivalent to --optimizeLevel 3"," -Oz Equivalent to -O but with --shrinkLevel 2"," -O3s Equivalent to -O3 with --shrinkLevel 1 etc.",""],"type":"b","alias":"O"},"optimizeLevel":{"description":"How much to focus on optimizing code. [0-3]","type":"i"},"shrinkLevel":{"description":"How much to focus on shrinking code size. [0-2, s=1, z=2]","type":"i"},"validate":{"description":"Validates the module using Binaryen. Exits if invalid.","type":"b","alias":"c","default":false},"baseDir":{"description":"Specifies the base directory of input and output files.","type":"s","default":"."},"outFile":{"description":"Specifies the output file. File extension indicates format.","type":"s","alias":"o"},"binaryFile":{"description":"Specifies the binary output file (.wasm).","type":"s","alias":"b"},"textFile":{"description":"Specifies the text output file (.wat).","type":"s","alias":"t"},"asmjsFile":{"description":"Specifies the asm.js output file (.js).","type":"s","alias":"a"},"idlFile":{"description":"Specifies the WebIDL output file (.webidl).","type":"s","alias":"i"},"tsdFile":{"description":"Specifies the TypeScript definition output file (.d.ts).","type":"s","alias":"d"},"sourceMap":{"description":["Enables source map generation. Optionally takes the URL","used to reference the source map from the binary file."],"type":"s"},"runtime":{"description":["Specifies the runtime variant to include in the program.",""," full Default runtime based on TLSF and reference counting."," half Same as \'full\', but not exported to the host."," stub Minimal stub implementation without free/GC support."," none Same as \'stub\', but not exported to the host.",""],"type":"s","default":"full"},"noUnsafe":{"description":["Disallows the use of unsafe features in user code.","Does not affect library files and external modules."],"type":"b","default":false},"debug":{"description":"Enables debug information in emitted binaries.","type":"b","default":false},"noAssert":{"description":"Replaces assertions with just their value without trapping.","type":"b","default":false},"noEmit":{"description":"Performs compilation as usual but does not emit code.","type":"b","default":false},"importMemory":{"description":"Imports the memory instance provided by the embedder.","type":"b","default":false},"sharedMemory":{"description":"Declare memory as shared by settings the max shared memory.","type":"i","default":0},"memoryBase":{"description":"Sets the start offset of compiler-generated static memory.","type":"i","default":0},"importTable":{"description":"Imports the function table instance provided by the embedder.","type":"b","default":false},"explicitStart":{"description":"Exports an explicit start function to be called manually.","type":"b","default":false},"lib":{"description":["Adds one or multiple paths to custom library components and","uses exports of all top-level files at this path as globals."],"type":"s"},"path":{"description":["Comma separated paths to look for dependencies.","Looks for folders with package.json that includes a \'ascMain\' field","or defaults to having an \'/assembly\' folder."],"type":"S"},"use":{"description":["Aliases a global object under another name, e.g., to switch","the default \'Math\' implementation used: --use Math=JSMath"],"type":"S","alias":"u"},"trapMode":{"description":["Sets the trap mode to use.",""," allow Allow trapping operations. This is the default."," clamp Replace trapping operations with clamping semantics."," js Replace trapping operations with JS semantics.",""],"type":"s","default":"allow"},"runPasses":{"description":["Specifies additional Binaryen passes to run after other","optimizations, if any. See: Binaryen/src/passes/pass.cpp"],"type":"s"},"enable":{"description":["Enables additional (experimental) WebAssembly features.",""," sign-extension Enables sign-extension operations"," mutable-global Enables mutable global imports and exports"," bulk-memory Enables bulk memory operations"," simd Enables SIMD types and operations."," threads Enables threading and atomic operations.",""],"type":"s"},"transform":{"description":"Specifies the path to a custom transform to \'require\'.","type":"S"},"traceResolution":{"description":"Enable tracing of package resolution.","type":"b","default":false},"listFiles":{"description":"List files to be compiled and exit.","type":"b","default":false},"measure":{"description":"Prints measuring information on I/O and compile times.","type":"b","default":false},"printrtti":{"description":"Prints the module\'s runtime type information to stderr.","type":"b","default":false},"noColors":{"description":"Disables terminal colors.","type":"b","default":false}," ...":{"description":"Specifies node.js options (CLI only). See: node --help"},"-Os":{"value":{"optimize":true,"shrinkLevel":1}},"-Oz":{"value":{"optimize":true,"shrinkLevel":2}},"-O0":{"value":{"optimizeLevel":0,"shrinkLevel":0}},"-O1":{"value":{"optimizeLevel":1,"shrinkLevel":0}},"-O2":{"value":{"optimizeLevel":2,"shrinkLevel":0}},"-O3":{"value":{"optimizeLevel":3,"shrinkLevel":0}},"-O0s":{"value":{"optimizeLevel":0,"shrinkLevel":1}},"-O1s":{"value":{"optimizeLevel":1,"shrinkLevel":1}},"-O2s":{"value":{"optimizeLevel":2,"shrinkLevel":1}},"-O3s":{"value":{"optimizeLevel":3,"shrinkLevel":1}},"-O0z":{"value":{"optimizeLevel":0,"shrinkLevel":2}},"-O1z":{"value":{"optimizeLevel":1,"shrinkLevel":2}},"-O2z":{"value":{"optimizeLevel":2,"shrinkLevel":2}},"-O3z":{"value":{"optimizeLevel":3,"shrinkLevel":2}},"notNear":{"description":"Prevent the instrumentation of the binding code for near","type":"b","default":false}}')},function(e,n){function t(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=13},function(e,n,t){(function(n,t){e.exports=n.hrtime||function(e){var n=.001*i.call(r),t=Math.floor(n),a=Math.floor(n%1*1e9);e&&(t-=e[0],(a-=e[1])<0&&(t--,a+=1e9));return[t,a]};var r=t.performance||{},i=r.now||r.mozNow||r.msNow||r.oNow||r.webkitNow||function(){return(new Date).getTime()}}).call(this,t(0),t(2))}])}); //# sourceMappingURL=asc.js.map \ No newline at end of file diff --git a/dist/asc.js.map b/dist/asc.js.map index d81c5c3b5c..8782e4a41f 100644 --- a/dist/asc.js.map +++ b/dist/asc.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/./asc.js","webpack://asc/../node_modules/@protobufjs/utf8/index.js","webpack://asc/./util/colors.js","webpack://asc/./util/options.js","webpack://asc/./util/mkdirp.js","webpack://asc/../bindings/dist/transformerBundle.js","webpack://asc/external \"assemblyscript\"","webpack://asc/. sync","webpack://asc/../node_modules/browser-process-hrtime/index.js"],"names":["root","factory","exports","module","require","e","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__11__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","args","Array","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","g","Function","window","global","fs","utf8","colorsUtil","optionsUtil","mkdirp","EOL","SEP","nearBindings","nearLibEntry","removeAllListeners","assemblyscript","isDev","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","write","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","hrtime","times","formatTime","time","toFixed","printStats","stats","output","format","count","stdout","printRTTI","program","buildRTTI","register","project","e_ts","eval","stack","isBundle","version","options","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","nearEntry","array","arraybuffer","bindings/Date","bindings/Math","bindings/wasi_unstable","bindings/wasi","builtins","compat","dataview","date","diagnostics","error","fixedarray","heap","iterator","map","math","memory","number","polyfills","regexp","rt","rt/common","rt/index-full","rt/index-half","rt/index-none","rt/index-stub","rt/pure","rt/rtrace","rt/stub","rt/tlsf","set","shared/feature","shared/target","shared/typeinfo","string","symbol","table","typedarray","util/error","util/hash","util/memory","util/number","util/sort","util/string","vector","libDir","libFiles","sync","bundled","readFileSync","forEach","file","replace","definitionFiles","assembly","portable","stdDir","compileString","sources","input.ts","createMemoryStream","keys","val","isArray","String","main","readFile","writeFile","contents","listFiles","callback","readFileNode","writeFileNode","listFilesNode","opts","parse","noColors","supported","unknown","arg","yellow","trailing","err","red","help","out","color","white","cyan","baseDir","transforms","notNear","transform","parser","packages","Map","importPathMap","libPath","indexOf","parseFile","customLibDirs","lib","k","endsWith","j","libText","nodePaths","basePath","_path","_","dirFrom","reverse","getPaths","parseBacklog","sourcePath","sourceText","sysPath","nextFile","dependee","getDependee","startsWith","plainName","substring","indexName","traceResolution","_package","ascMain","has","package_json","JSON","mainFile","newPackage","realPath","_p","first","second","runtimeName","runtime","runtimePath","runtimeText","filename","applyTransform","finishParsing","normalizedPath","sort","optimizeLevel","shrinkLevel","optimize","max","compilerOptions","createOptions","setTarget","setNoAssert","noAssert","setImportMemory","importMemory","setSharedMemory","sharedMemory","setImportTable","importTable","setExplicitStart","explicitStart","setMemoryBase","memoryBase","setSourceMap","sourceMap","setOptimizeLevelHints","setNoUnsafe","noUnsafe","setGlobalAlias","use","aliases","part","alias","enable","flag","toUpperCase","enableFeature","compileProgram","dispose","validate","trapMode","runPasses","setOptimizeLevel","setShrinkLevel","setDebugInfo","debug","pass","noEmit","hasStdout","hasOutput","outFile","test","textFile","asmjsFile","binaryFile","wasm","sourceMapURL","toBinary","writeStdout","sourceRoot","text","stdName","sourceContents","stringify","asm","toAsmjs","idlFile","idl","buildIDL","tsdFile","tsd","buildTSD","wat","toText","printrtti","encoding","writeFileSync","files","readdirSync","used","allocBuffer","Buffer","allocUnsafe","Uint8Array","stream","chunk","buffer","reset","toBuffer","offset","toString","read","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","target","noLib","types","allowJs","fromCharCode","c1","c2","proc","isCI","base","colors","gray","GRAY","RESET","RED","green","GREEN","YELLOW","blue","BLUE","magenta","MAGENTA","CYAN","WHITE","config","option","default","match","exec","type","parseInt","parseFloat","indent","padding","eol","sb","description","line","_0777","made","undefined","mkdirSync","err0","stat","statSync","err1","isDirectory","__extends","setPrototypeOf","__proto__","constructor","a","Token","Range","u","SOURCE","NAMEDTYPE","FUNCTIONTYPE","TYPENAME","TYPEPARAMETER","PARAMETER","IDENTIFIER","ASSERTION","BINARY","CALL","CLASS","COMMA","ELEMENTACCESS","FALSE","FUNCTION","INSTANCEOF","LITERAL","NEW","NULL","PARENTHESIZED","PROPERTYACCESS","TERNARY","SUPER","THIS","TRUE","CONSTRUCTOR","UNARYPOSTFIX","UNARYPREFIX","BLOCK","BREAK","CONTINUE","DO","EMPTY","EXPORT","EXPORTDEFAULT","EXPORTIMPORT","EXPRESSION","FOR","IF","IMPORT","RETURN","SWITCH","THROW","TRY","VARIABLE","VOID","WHILE","CLASSDECLARATION","ENUMDECLARATION","ENUMVALUEDECLARATION","FIELDDECLARATION","FUNCTIONDECLARATION","IMPORTDECLARATION","INDEXSIGNATUREDECLARATION","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","TYPEDECLARATION","VARIABLEDECLARATION","DECORATOR","EXPORTMEMBER","SWITCHCASE","COMMENT","NodeKind","nodeIsConstantValue","nodeIsCallable","nodeIsGenericCallable","createTypeName","range","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","h","typeArguments","isNullable","createFunctionType","parameters","returnType","explicitThisType","createOmittedType","createTypeParameter","extendsType","defaultType","createParameter","initializer","parameterKind","createDecorator","v","decoratorKind","A","createComment","commentKind","y","isQuoted","createEmptyIdentifierExpression","createArrayLiteralExpression","R","elementExpressions","createAssertionExpression","assertionKind","expression","toType","createBinaryExpression","I","operator","left","right","createCallExpression","b","createClassExpression","L","declaration","createCommaExpression","C","expressions","createConstructorExpression","O","createElementAccessExpression","x","elementExpression","createFalseExpression","createFloatLiteralExpression","P","createFunctionExpression","D","createInstanceOfExpression","U","isType","createIntegerLiteralExpression","w","createNewExpression","M","createNullExpression","createObjectLiteralExpression","F","names","values","createParenthesizedExpression","K","createPropertyAccessExpression","B","createRegexpLiteralExpression","H","pattern","patternFlags","createTernaryExpression","G","condition","ifThen","ifElse","createStringLiteralExpression","Y","createSuperExpression","V","createThisExpression","z","createTrueExpression","X","createUnaryPostfixExpression","W","operand","createUnaryPrefixExpression","q","createBlockStatement","ne","statements","createBreakStatement","re","label","createClassDeclaration","se","flags","typeParameters","implementsTypes","members","decorators","createContinueStatement","ae","createDoStatement","oe","statement","createEmptyStatement","ue","createEnumDeclaration","ce","createEnumValueDeclaration","_e","createExportStatement","le","normalizePath","resolvePath","source","internalPath","we","isDeclare","createExportDefaultStatement","de","createExportImportStatement","pe","externalName","createExportMember","he","localName","exportedName","createExpressionStatement","Ee","createIfStatement","me","ifTrue","ifFalse","createImportStatement","Ne","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","Te","foreignName","createInterfaceDeclaration","ye","createFieldDeclaration","fe","createForStatement","Ae","incrementor","createFunctionDeclaration","ve","signature","body","arrowKind","createIndexSignatureDeclaration","te","keyType","valueType","createMethodDeclaration","Se","createNamespaceDeclaration","Re","createReturnStatement","ge","createSwitchStatement","be","cases","createSwitchCase","Ie","createThrowStatement","Le","createTryStatement","Ce","catchVariable","catchStatements","finallyStatements","createTypeDeclaration","Oe","createVariableStatement","Pe","createVariableDeclaration","xe","createVoidStatement","De","createWhileStatement","Ue","Node","TypeNode","kind","TypeName","NamedTypeNode","FunctionTypeNode","TypeParameterNode","DEFAULT","OPTIONAL","REST","ParameterKind","E","implicitFieldDeclaration","CommonFlags","NONE","is","isAny","assert","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","ParameterNode","DecoratorKind","decoratorNameToKind","DecoratorNode","LINE","TRIPLE","CommentKind","CommentNode","T","Expression","N","IdentifierExpression","FLOAT","INTEGER","STRING","REGEXP","ARRAY","OBJECT","LiteralKind","S","LiteralExpression","literalKind","ArrayLiteralExpression","PREFIX","AS","NONNULL","AssertionKind","AssertionExpression","BinaryExpression","configurable","CallExpression","ClassExpression","CommaExpression","CommonSymbols","ConstructorExpression","ElementAccessExpression","FloatLiteralExpression","FunctionExpression","InstanceOfExpression","IntegerLiteralExpression","NewExpression","null_","NullExpression","ObjectLiteralExpression","ParenthesizedExpression","PropertyAccessExpression","RegexpLiteralExpression","TernaryExpression","StringLiteralExpression","super_","SuperExpression","this_","ThisExpression","true_","TrueExpression","false_","FalseExpression","Q","UnaryExpression","UnaryPostfixExpression","UnaryPrefixExpression","Z","J","Statement","USER","USER_ENTRY","LIBRARY","LIBRARY_ENTRY","SourceKind","$","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","lastIndexOf","PATH_DELIMITER","simplePath","Source","ee","DeclarationStatement","IndexSignatureDeclaration","ie","VariableLikeDeclarationStatement","BlockStatement","BreakStatement","ClassDeclaration","ContinueStatement","DoStatement","EmptyStatement","EnumDeclaration","EnumValueDeclaration","ExportImportStatement","ExportMember","ExportStatement","ExportDefaultStatement","ExpressionStatement","parameterIndex","FieldDeclaration","ForStatement","ARROW_PARENTHESIZED","ARROW_SINGLE","ArrowKind","clone","FunctionDeclaration","IfStatement","ImportDeclaration","ImportStatement","InterfaceDeclaration","MethodDeclaration","NamespaceDeclaration","ReturnStatement","SwitchCase","SwitchStatement","ThrowStatement","TryStatement","TypeDeclaration","VariableDeclaration","VariableStatement","VoidStatement","WhileStatement","findDecorator","mangleInternalPath","isTypeOmitted","DECLARE","CONST","LET","STATIC","READONLY","ABSTRACT","PUBLIC","PRIVATE","PROTECTED","GET","SET","DEFINITE_ASSIGNMENT","AMBIENT","GENERIC","GENERIC_CONTEXT","INSTANCE","MODULE_EXPORT","MODULE_IMPORT","RESOLVED","COMPILED","INLINED","SCOPED","TRAMPOLINE","VIRTUAL","MAIN","QUOTED","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","INDEX_SUFFIX","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","boolean","native","indexof","valueof","returnof","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","FixedArray","Set","ArrayBufferView","ArrayBuffer","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","Feature","Target","Typeinfo","TypeinfoFlags","isPowerOf2","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DELETE","ELSE","ENUM","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","INTERFACE","IS","KEYOF","MODULE","NAMESPACE","OF","PACKAGE","TYPE","TYPEOF","VAR","WITH","YIELD","INVALID","OPENBRACE","CLOSEBRACE","OPENPAREN","CLOSEPAREN","OPENBRACKET","CLOSEBRACKET","DOT","DOT_DOT_DOT","SEMICOLON","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","EQUALS_GREATERTHAN","PLUS","MINUS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","QUESTION","COLON","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","AT","STRINGLITERAL","INTEGERLITERAL","FLOATLITERAL","ENDOFFILE","PREFER","ALWAYS","IdentifierHandling","tokenFromKeyword","tokenIsAlsoIdentifier","isIllegalVariableIdentifier","operatorTokenToString","debugInfoRef","pos","token","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","unsafeNext","MAX_VALUE","isDecimalDigit","DiagnosticCode","_0_expected","testInteger","isIdentifierStart","isKeywordCharacter","isIdentifierPart","isWhiteSpace","Invalid_character","peek","isLineBreak","skipIdentifier","skip","mark","discard","readIdentifier","readString","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","readRegexpPattern","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_new","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_mul","Digit_expected","Octal_digit_expected","Binary_digit_expected","readFloat","readDecimalFloat","readHexFloat","i64_low","i64_high","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","DiagnosticEmitter","Tokenizer","State","Operation_not_supported","Operation_is_unsafe","User_defined_0","Conversion_from_type_0_to_1_requires_an_explicit_cast","Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit","Type_0_cannot_be_changed_to_type_1","Type_0_cannot_be_reinterpreted_as_type_1","Basic_type_0_cannot_be_nullable","Cannot_export_a_mutable_global","Mutable_value_cannot_be_inlined","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","Unmanaged_classes_cannot_implement_interfaces","Implementation_0_must_match_the_signature_1","Class_0_is_sealed_and_cannot_be_extended","Decorator_0_is_not_valid_here","Duplicate_decorator","An_allocator_must_be_present_to_use_0","Optional_parameter_must_have_an_initializer","Constructor_of_class_0_must_not_require_any_arguments","Function_0_cannot_be_inlined_into_itself","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","Optional_properties_are_not_supported","Expression_must_be_a_compile_time_constant","Module_cannot_have_multiple_start_functions","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","Expression_is_unsafe","Expression_is_never_null","Identifier_expected","A_file_cannot_have_a_reference_to_itself","Trailing_comma_not_allowed","Unexpected_token","A_rest_parameter_must_be_last_in_a_parameter_list","Parameter_cannot_have_question_mark_and_initializer","A_required_parameter_cannot_follow_an_optional_parameter","Statements_are_not_allowed_in_ambient_contexts","Initializers_are_not_allowed_in_ambient_contexts","_0_modifier_cannot_be_used_here","A_rest_parameter_cannot_be_optional","A_rest_parameter_cannot_have_an_initializer","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","Enum_member_must_have_initializer","Type_parameters_cannot_appear_on_a_constructor_declaration","Type_annotation_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","A_set_accessor_cannot_have_a_return_type_annotation","Type_parameter_list_cannot_be_empty","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_return_statement_can_only_be_used_within_a_function_body","Expression_expected","Type_expected","A_default_clause_cannot_appear_more_than_once_in_a_switch_statement","Duplicate_label_0","An_export_assignment_cannot_have_modifiers","_case_or_default_expected","_super_must_be_followed_by_an_argument_list_or_member_access","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","Type_argument_expected","String_literal_expected","Line_break_not_permitted_here","Declaration_expected","_const_declarations_must_be_initialized","Interface_declaration_cannot_have_implements_clause","An_implementation_cannot_be_declared_in_ambient_contexts","Decorators_are_not_valid_here","_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","A_definite_assignment_assertion_is_not_permitted_in_this_context","A_class_may_only_extend_another_class","A_parameter_property_cannot_be_declared_using_a_rest_parameter","Duplicate_identifier_0","Cannot_find_name_0","Module_0_has_no_exported_member_1","Generic_type_0_requires_1_type_argument_s","Type_0_is_not_generic","Type_0_is_not_assignable_to_type_1","Index_signature_is_missing_in_type_0","_this_cannot_be_referenced_in_current_location","_super_can_only_be_referenced_in_a_derived_class","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","Property_0_does_not_exist_on_type_1","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","A_function_whose_declared_type_is_not_void_must_return_a_value","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access","Operator_0_cannot_be_applied_to_types_1_and_2","A_super_call_must_be_the_first_statement_in_the_constructor","Constructors_for_derived_classes_must_contain_a_super_call","_get_and_set_accessor_must_have_the_same_type","Constructor_implementation_is_missing","Function_implementation_is_missing_or_not_immediately_following_the_declaration","Multiple_constructor_implementations_are_not_allowed","Duplicate_function_implementation","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged","Type_0_has_no_property_1","The_0_operator_cannot_be_applied_to_type_1","In_const_enum_declarations_member_initializer_must_be_constant_expression","Export_declaration_conflicts_with_exported_declaration_of_0","Object_is_possibly_null","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","The_target_of_an_assignment_must_be_a_variable_or_a_property_access","Index_signature_in_type_0_only_permits_reading","Expected_0_arguments_but_got_1","Expected_at_least_0_arguments_but_got_1","Expected_0_type_arguments_but_got_1","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","Namespace_0_has_no_exported_member_1","Required_type_parameters_may_not_follow_optional_type_parameters","Duplicate_property_0","Type_0_has_no_call_signatures","File_0_not_found","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","diagnosticCodeToString","includes","ASTBuilder","build","typeMapping","nonNullableTypes","exportedClasses","wrappedFuncs","nearFiles","visitClassDeclaration","visitFunctionDeclaration","generateWrapperFunction","add","typeName","isGeneric","getFields","preamble","some","BaseVisitor","afterParse","donelog","delete","seenlog","SIGN_EXTENSION","MUTABLE_GLOBAL","BULK_MEMORY","SIMD","THREADS","WASM32","WASM64","JS","__decorate","getOwnPropertyDescriptor","Reflect","decorate","ARRAYBUFFERVIEW","MAP","ACYCLIC","VALUE_ALIGN_0","VALUE_ALIGN_1","VALUE_ALIGN_2","VALUE_ALIGN_3","VALUE_ALIGN_4","VALUE_SIGNED","VALUE_FLOAT","VALUE_NULLABLE","VALUE_MANAGED","KEY_ALIGN_0","KEY_ALIGN_1","KEY_ALIGN_2","KEY_ALIGN_3","KEY_ALIGN_4","KEY_SIGNED","KEY_FLOAT","KEY_NULLABLE","KEY_MANAGED","INFO","WARNING","ERROR","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCategory","diagnosticCategoryToString","COLOR_RESET","diagnosticCategoryToColor","relatedRange","category","message","createInfo","createWarning","createError","withRange","withRelatedRange","column","DiagnosticMessage","formatDiagnosticMessage","formatDiagnosticContext","emitDiagnostic","info","infoRelated","warning","warningRelated","errorRelated","bitsetIs","i64_ne","i64_and","i64_one","i64_zero","bitsetSet","i64_or","i64_not","LINEFEED","CARRIAGERETURN","LINESEPARATOR","PARAGRAPHSEPARATOR","NEXTLINE","SPACE","NONBREAKINGSPACE","ENQUAD","EMQUAD","ENSPACE","EMSPACE","THREEPEREMSPACE","FOURPEREMSPACE","SIXPEREMSPACE","FIGURESPACE","PUNCTUATIONSPACE","THINSPACE","HAIRSPACE","ZEROWIDTHSPACE","NARROWNOBREAKSPACE","IDEOGRAPHICSPACE","MATHEMATICALSPACE","OGHAM","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","BACKSLASH","BACKTICK","DOLLAR","DOUBLEQUOTE","HASH","SINGLEQUOTE","BACKSPACE","FORMFEED","BYTEORDERMARK","TAB","VERTICALTAB","CharCode","__values","done","__read","return","makeArray","unchecked","makeSet","makeMap","readI8","writeI8","readI16","writeI16","readI32","writeI32","readI64","writeI64","readF32","i32_as_f32","writeF32","f32_as_i32","readF64","i64_as_f64","writeF64","f64_as_i64","indentLevel","visitNode","visitSource","visitNamedTypeNode","visitFunctionTypeNode","visitTypeParameter","visitIdentifierExpression","visitAssertionExpression","visitBinaryExpression","visitCallExpression","visitClassExpression","visitCommaExpression","visitElementAccessExpression","visitFunctionExpression","visitInstanceOfExpression","visitLiteralExpression","visitNewExpression","visitParenthesizedExpression","visitPropertyAccessExpression","visitTernaryExpression","visitUnaryPostfixExpression","visitUnaryPrefixExpression","visitBlockStatement","visitBreakStatement","visitContinueStatement","visitDoStatement","visitEmptyStatement","visitExportStatement","visitExportDefaultStatement","visitExportImportStatement","visitExpressionStatement","visitForStatement","visitIfStatement","visitImportStatement","visitReturnStatement","visitSwitchStatement","visitThrowStatement","visitTryStatement","visitVariableStatement","visitWhileStatement","visitEnumDeclaration","visitEnumValueDeclaration","visitFieldDeclaration","visitImportDeclaration","visitIndexSignatureDeclaration","visitInterfaceDeclaration","visitMethodDeclaration","visitNamespaceDeclaration","visitTypeDeclaration","visitVariableDeclaration","serializeDecorator","visitExportMember","serializeParameter","visitSwitchCase","visitNodeAndTerminate","visitTypeNode","visitTypeName","visitStringLiteral","visitArrayLiteralExpression","visitObjectLiteralExpression","visitFunctionCommon","visitFloatLiteralExpression","visitIntegerLiteralExpression","visitStringLiteralExpression","visitRegexpLiteralExpression","i64_to_string","visitUnaryExpression","serializeExternalModifiers","serializeAccessModifiers","captureStackTrace","defineProperties","MIN_VALUE","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz","clz32","ctz","popcnt","rotl","rotr","abs","ceil","floor","nearest","trunc","round","select","sqrt","copysign","sign","bswap","bswap16","unreachable","changetype","fromCharCodes","fromCodePoints","fromCodePoint","replaceAll","isInteger","Number","isFloat","isReference","isFunction","isString","isArrayLike","isDefined","isConstant","fmod","fmodf","JSMath","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","allocate","__memory_allocate","fill","__memory_fill","__memory_free","copy","__memory_copy","copyWithin","__memory_reset","store","__store","HEAP","load","__load","unmanaged","Long","ZERO","ONE","fromBits","low","high","i64_sub","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","and","or","i64_xor","xor","shl","i64_shr","shr","i64_shr_u","shru","not","i64_eq","eq","i64_align","fromInt","i64_is_i8","i64_is_i16","i64_is_i32","i64_is_u8","i64_is_u16","i64_is_u32","i64_is_bool","fromNumber","i64_is_f32","gte","lte","i64_is_f64","i64_to_f32","toNumber","i64_to_f64","WebAssembly","Instance","Module","unsigned","__isLong__","isLong","isNaN","neg","RangeError","fromString","fromValue","UZERO","UONE","NEG_ONE","MAX_UNSIGNED_VALUE","toInt","isZero","isNegative","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","greaterThan","gt","greaterThanOrEqual","compare","negate","subtract","multiply","get_high","divide","div_u","div_s","log","LN2","modulo","rem_u","rem_s","rem","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","depth","_visit","visitDecoratorNode","visitParameter","visitSuperExpression","visitFalseExpression","visitTrueExpression","visitThisExpression","visitNullExperssion","visitConstructorExpression","visitVoidStatement","visitComment","AbstractVisitor","writeString","writeNode","DefaultWriter","writer","entries","webpackEmptyContext","req","id","previousTimestamp","clocktime","performanceNow","performance","seconds","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"assemblyscript\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__11__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Compiler frontend for node.js\n *\n * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to\n * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources\n * directly through ts-node if distribution files are not present (indicated by a `-dev` version).\n *\n * Can also be packaged as a bundle suitable for in-browser use with the standard library injected\n * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details.\n *\n * @module cli/asc\n */\n\n// Use \".\" instead of \"/\" as cwd in browsers\nif (process.browser) process.cwd = function() { return \".\"; };\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst utf8 = require(\"@protobufjs/utf8\");\nconst colorsUtil = require(\"./util/colors\");\nconst optionsUtil = require(\"./util/options\");\nconst mkdirp = require(\"./util/mkdirp\");\nconst EOL = process.platform === \"win32\" ? \"\\r\\n\" : \"\\n\";\nconst SEP = process.platform === \"win32\" ? \"\\\\\" : \"/\";\nconst nearBindings = require(\"../bindings/dist/transformerBundle.js\");\nconst nearLibEntry = path.join(__dirname, \"..\", \"bindings\", \"assembly\", \"nearEntry.ts\");\n// global.Binaryen = require(\"../lib/binaryen\");\n\n// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional\n// useless code fragment on top of an actual error. suppress this:\nif (process.removeAllListeners) process.removeAllListeners(\"uncaughtException\");\n\n// Use distribution files if present, otherwise run the sources directly\nvar assemblyscript, isDev = false;\n(() => {\n try { // `asc` on the command line\n assemblyscript = require(\"../dist/assemblyscript.js\");\n } catch (e) {\n try { // `asc` on the command line without dist files\n require(\"ts-node\").register({ project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\") });\n require(\"../src/glue/js\");\n assemblyscript = require(\"../src\");\n isDev = true;\n } catch (e_ts) {\n try { // `require(\"dist/asc.js\")` in explicit browser tests\n assemblyscript = eval(\"require('./assemblyscript')\");\n } catch (e) {\n // combine both errors that lead us here\n e.stack = e_ts.stack + \"\\n---\\n\" + e.stack;\n throw e;\n }\n }\n }\n})();\n\n/** Whether this is a webpack bundle or not. */\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\n\n/** Whether asc runs the sources directly or not. */\nexports.isDev = isDev;\n\n/** AssemblyScript version. */\nexports.version = exports.isBundle ? BUNDLE_VERSION : require(\"../package.json\").version;\n\n/** Available CLI options. */\nexports.options = require(\"./asc.json\");\n\n/** Common root used in source maps. */\nexports.sourceMapRoot = \"assemblyscript:///\";\n\n/** Prefix used for library files. */\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\n\n/** Default Binaryen optimization level. */\nexports.defaultOptimizeLevel = 3;\n\n/** Default Binaryen shrink level. */\nexports.defaultShrinkLevel = 1;\n\n/** Bundled library files. */\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle\n const libDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\n const libFiles = require(\"glob\").sync(\"**/!(*.d).ts\", { cwd: libDir })\n const bundled = {\n \"nearEntry\": fs.readFileSync(nearLibEntry, \"utf8\")\n };\n libFiles.forEach(file => bundled[file.replace(/\\.ts$/, \"\")] = fs.readFileSync(path.join(libDir, file), \"utf8\" ));\n return bundled;\n})();\n\n/** Bundled definition files. */\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle\n const stdDir = path.join(__dirname, \"..\", \"std\");\n return {\n \"assembly\": fs.readFileSync(path.join(stdDir, \"assembly\", \"index.d.ts\"), \"utf8\"),\n \"portable\": fs.readFileSync(path.join(stdDir, \"portable\", \"index.d.ts\"), \"utf8\")\n };\n})();\n\n/** Convenience function that parses and compiles source strings directly. */\nexports.compileString = (sources, options) => {\n if (typeof sources === \"string\") sources = { \"input.ts\": sources };\n const output = Object.create({\n stdout: createMemoryStream(),\n stderr: createMemoryStream()\n });\n var argv = [\n \"--binaryFile\", \"binary\",\n \"--textFile\", \"text\",\n ];\n Object.keys(options || {}).forEach(key => {\n var val = options[key];\n if (Array.isArray(val)) val.forEach(val => argv.push(\"--\" + key, String(val)));\n else argv.push(\"--\" + key, String(val));\n });\n exports.main(argv.concat(Object.keys(sources)), {\n stdout: output.stdout,\n stderr: output.stderr,\n readFile: name => sources.hasOwnProperty(name) ? sources[name] : null,\n writeFile: (name, contents) => output[name] = contents,\n listFiles: () => []\n });\n return output;\n}\n\n/** Runs the command line utility using the specified arguments array. */\nexports.main = function main(argv, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (!options) {\n options = {};\n }\n\n const stdout = options.stdout || process.stdout;\n const stderr = options.stderr || process.stderr;\n const readFile = options.readFile || readFileNode;\n const writeFile = options.writeFile || writeFileNode;\n const listFiles = options.listFiles || listFilesNode;\n const stats = options.stats || createStats();\n\n // Output must be specified if not present in the environment\n if (!stdout) throw Error(\"'options.stdout' must be specified\");\n if (!stderr) throw Error(\"'options.stderr' must be specified\");\n\n const opts = optionsUtil.parse(argv, exports.options);\n const args = opts.options;\n argv = opts.arguments;\n if (args.noColors) {\n colorsUtil.stdout.supported =\n colorsUtil.stderr.supported = false;\n } else {\n colorsUtil.stdout = colorsUtil.from(stdout);\n colorsUtil.stderr = colorsUtil.from(stderr);\n }\n\n // Check for unknown arguments\n if (opts.unknown.length) {\n opts.unknown.forEach(arg => {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unknown option '\" + arg + \"'\" + EOL);\n });\n }\n\n // Check for trailing arguments\n if (opts.trailing.length) {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unsupported trailing arguments: \" + opts.trailing.join(\" \") + EOL);\n }\n\n // Use default callback if none is provided\n if (!callback) callback = function defaultCallback(err) {\n var code = 0;\n if (err) {\n stderr.write(colorsUtil.stderr.red(\"ERROR: \") + err.stack.replace(/^ERROR: /i, \"\") + EOL);\n code = 1;\n }\n return code;\n };\n\n // Just print the version if requested\n if (args.version) {\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + EOL);\n return callback(null);\n }\n // Print the help message if requested or no source files are provided\n if (args.help || !argv.length) {\n var out = args.help ? stdout : stderr;\n var color = args.help ? colorsUtil.stdout : colorsUtil.stderr;\n out.write([\n color.white(\"SYNTAX\"),\n \" \" + color.cyan(\"asc\") + \" [entryFile ...] [options]\",\n \"\",\n color.white(\"EXAMPLES\"),\n \" \" + color.cyan(\"asc\") + \" hello.ts\",\n \" \" + color.cyan(\"asc\") + \" hello.ts -b hello.wasm -t hello.wat\",\n \" \" + color.cyan(\"asc\") + \" hello1.ts hello2.ts -b -O > hello.wasm\",\n \"\",\n color.white(\"OPTIONS\"),\n ].concat(\n optionsUtil.help(exports.options, 24, EOL)\n ).join(EOL) + EOL);\n return callback(null);\n }\n\n // I/O must be specified if not present in the environment\n if (!fs.readFileSync) {\n if (readFile === readFileNode) throw Error(\"'options.readFile' must be specified\");\n if (writeFile === writeFileNode) throw Error(\"'options.writeFile' must be specified\");\n if (listFiles === listFilesNode) throw Error(\"'options.listFiles' must be specified\");\n }\n\n // Set up base directory\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : \".\";\n\n // Set up transforms\n const transforms = args.notNear ? [] : [nearBindings];\n //Add near's bindings by default\n if (args.transform) {\n args.transform.forEach(transform =>\n transforms.push(\n require(\n path.isAbsolute(transform = transform.trim())\n ? transform\n : path.join(process.cwd(), transform)\n )\n )\n );\n }\n function applyTransform(name, ...args) {\n transforms.forEach(transform => {\n if (typeof transform[name] === \"function\") transform[name](...args);\n });\n }\n\n // Begin parsing\n var parser = null;\n\n // Maps package names to parent directory\n var packages = new Map();\n var importPathMap = new Map();\n\n // Include library files\n Object.keys(exports.libraryFiles).forEach(libPath => {\n if (libPath.indexOf(\"/\") >= 0) return; // in sub-directory: imported on demand\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n exports.libraryFiles[libPath],\n exports.libraryPrefix + libPath + \".ts\",\n false,\n parser\n );\n });\n });\n const customLibDirs = [];\n if (args.lib) {\n let lib = args.lib;\n if (typeof lib === \"string\") lib = lib.split(\",\");\n Array.prototype.push.apply(customLibDirs, lib.map(lib => lib.trim()));\n for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom\n let libDir = customLibDirs[i];\n let libFiles;\n if (libDir.endsWith(\".ts\")) {\n libFiles = [ path.basename(libDir) ];\n libDir = path.dirname(libDir);\n } else {\n libFiles = listFiles(libDir, baseDir) || [];\n }\n for (let j = 0, l = libFiles.length; j < l; ++j) {\n let libPath = libFiles[j];\n let libText = readFile(libPath, libDir);\n if (libText === null) return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\n stats.parseCount++;\n exports.libraryFiles[libPath.replace(/\\.ts$/, \"\")] = libText;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n libText,\n exports.libraryPrefix + libPath,\n false,\n parser\n );\n });\n }\n }\n }\n args.path = args.path || [];\n // Find all valid node_module paths starting at baseDir\n function nodePaths(basePath, _path) {\n return basePath.split(SEP)\n .map((_, i, arr) => {\n let dir = arr.slice(0, i + 1).join(SEP) || SEP;\n let dirFrom = path.relative(baseDir, dir);\n return path.join(dirFrom, _path);\n })\n .filter(dir => listFiles(dir, baseDir))\n .reverse();\n }\n function getPaths(basePath) {\n let paths = args.path.map(p => nodePaths(basePath, p));\n return nodePaths(basePath, \"node_modules\").concat(...paths)\n }\n\n // Parses the backlog of imported files after including entry files\n function parseBacklog() {\n var sourcePath, sourceText, sysPath;\n // dependee is the path of the file that depends on sourcePath\n while ((sourcePath = parser.nextFile()) != null) {\n dependee = importPathMap.get(assemblyscript.getDependee(parser, sourcePath)) || baseDir;\n sourceText = null;\n sysPath = null;\n \n // Load library file if explicitly requested\n if (sourcePath.startsWith(exports.libraryPrefix)) {\n const plainName = sourcePath.substring(exports.libraryPrefix.length);\n const indexName = sourcePath.substring(exports.libraryPrefix.length) + \"/index\";\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n sourceText = readFile(plainName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(customLibDirs[i], plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(customLibDirs[i], indexName + \".ts\");\n break;\n }\n }\n }\n }\n\n // Otherwise try nextFile.ts, nextFile/index.ts, ~lib/nextFile.ts, ~lib/nextFile/index.ts\n } else {\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(plainName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n sysPath = path.join(baseDir, sourcePath);\n } else {\n sourceText = readFile(indexName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n } else if (!plainName.startsWith(\".\")) {\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n const dir = customLibDirs[i];\n sourceText = readFile(plainName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(dir, plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(dir, indexName + \".ts\");\n break;\n }\n }\n }\n }\n }\n }\n }\n /*\n In this case the library wasn't found so we check paths\n */\n if (sourceText == null) {\n if (args.traceResolution) {\n stderr.write(\"Looking for '\" + sourcePath + \"' imported by '\" + dependee + \"'\" + EOL);\n }\n paths = getPaths(path.join(baseDir, dependee));\n let _package = sourcePath.replace(/\\~lib\\/([^\\/]*).*/, \"$1\");\n for (let _path of paths) {\n let ascMain = (() => {\n if (packages.has(_package)) {\n return packages.get(_package);\n }\n let p = path.join(_path, _package, \"package.json\");\n let res = readFile(p, baseDir);\n if (res) {\n let package_json;\n try {\n package_json = JSON.parse(res);\n } catch (e) {\n return callback(Error(\"Parsing \" + p + \" failed\"));\n }\n let mainFile = package_json.ascMain;\n if (mainFile && (typeof mainFile === 'string')) {\n let newPackage = mainFile.replace(/(.*)\\/index\\.ts/, '$1');\n packages.set(_package, newPackage);\n return newPackage;\n }\n }\n return \"assembly\";\n })()\n let realPath = (_p) => {\n if (_p.startsWith(exports.libraryPrefix)){\n _p = _p.substring(exports.libraryPrefix.length);\n }\n let first = _p.substring(0, _p.indexOf(\"/\"));\n let second = _p.substring(_p.indexOf(\"/\") + 1);\n return path.join(_path, first, ascMain, second);\n }\n if (args.traceResolution) {\n stderr.write(\" in '\" + realPath(sourcePath) + \"'\");\n }\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(realPath(plainName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n } else {\n sourceText = readFile(realPath(indexName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n }\n }\n if (sourceText !== null) {\n if (args.traceResolution) {\n stderr.write(EOL + \" -> '\" + realPath(sourcePath) + \"'\" + EOL);\n }\n let newPath = path.join(_path, _package);\n sysPath = newPath;\n break;\n }\n if (args.traceResolution) {\n stderr.write(EOL);\n }\n }\n }\n if (sourceText == null) {\n return callback(Error(\"Import file '\" + sourcePath + \".ts' not found.\"));\n }\n importPathMap.set(sourcePath.replace(/\\.ts$/, \"\"), sysPath);\n stats.parseCount++;\n stats.parseTime += measure(() => {\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\n });\n }\n if (checkDiagnostics(parser, stderr)) {\n return callback(Error(\"Parse error\"));\n }\n }\n\n // Include runtime template before entry files so its setup runs first\n {\n let runtimeName = String(args.runtime);\n let runtimePath = \"rt/index-\" + runtimeName;\n let runtimeText = exports.libraryFiles[runtimePath];\n if (runtimeText == null) {\n runtimePath = runtimeName;\n runtimeText = readFile(runtimePath + \".ts\", baseDir);\n if (runtimeText == null) {\n return callback(Error(\"Runtime '\" + runtimeName + \"' not found.\"));\n }\n } else {\n runtimePath = \"~lib/\" + runtimePath;\n }\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser);\n });\n }\n\n // Include entry files\n for (let i = 0, k = argv.length; i < k; ++i) {\n const filename = argv[i];\n\n let sourcePath = String(filename).replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\n // Setting the path to relative path\n sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath) : sourcePath;\n\n // Try entryPath.ts, then entryPath/index.ts\n let sourceText = readFile(sourcePath + \".ts\", baseDir);\n if (sourceText === null) {\n sourceText = readFile(sourcePath + \"/index.ts\", baseDir);\n if (sourceText === null) {\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\n } else {\n sourcePath += \"/index.ts\";\n }\n } else {\n sourcePath += \".ts\";\n }\n\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\n });\n }\n\n // Parse entry files\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Call afterParse transform hook\n applyTransform(\"afterParse\", parser, writeFile, baseDir);\n\n // Parse additional files, if any\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Finish parsing\n const program = assemblyscript.finishParsing(parser);\n\n // Print files and exit if listFiles\n if (args.listFiles) {\n stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL);\n return callback(null);\n }\n\n // Set up optimization levels\n var optimizeLevel = 0;\n var shrinkLevel = 0;\n if (args.optimize) {\n optimizeLevel = exports.defaultOptimizeLevel;\n shrinkLevel = exports.defaultShrinkLevel;\n }\n if (typeof args.optimizeLevel === \"number\") {\n optimizeLevel = args.optimizeLevel;\n }\n if (typeof args.shrinkLevel === \"number\") {\n shrinkLevel = args.shrinkLevel;\n }\n optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3);\n shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2);\n\n // Begin compilation\n const compilerOptions = assemblyscript.createOptions();\n assemblyscript.setTarget(compilerOptions, 0);\n assemblyscript.setNoAssert(compilerOptions, args.noAssert);\n assemblyscript.setImportMemory(compilerOptions, args.importMemory);\n assemblyscript.setSharedMemory(compilerOptions, args.sharedMemory);\n assemblyscript.setImportTable(compilerOptions, args.importTable);\n assemblyscript.setExplicitStart(compilerOptions, args.explicitStart);\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\n assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel);\n assemblyscript.setNoUnsafe(compilerOptions, args.noUnsafe);\n\n // Initialize default aliases\n assemblyscript.setGlobalAlias(compilerOptions, \"Math\", \"NativeMath\");\n assemblyscript.setGlobalAlias(compilerOptions, \"Mathf\", \"NativeMathf\");\n assemblyscript.setGlobalAlias(compilerOptions, \"abort\", \"~lib/builtins/abort\");\n assemblyscript.setGlobalAlias(compilerOptions, \"trace\", \"~lib/builtins/trace\");\n\n // Add or override aliases if specified\n if (args.use) {\n let aliases = args.use;\n for (let i = 0, k = aliases.length; i < k; ++i) {\n let part = aliases[i];\n let p = part.indexOf(\"=\");\n if (p < 0) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n let alias = part.substring(0, p).trim();\n let name = part.substring(p + 1).trim();\n if (!alias.length) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n assemblyscript.setGlobalAlias(compilerOptions, alias, name);\n }\n }\n\n // Enable additional features if specified\n var features = args.enable;\n if (features != null) {\n if (typeof features === \"string\") features = features.split(\",\");\n for (let i = 0, k = features.length; i < k; ++i) {\n let name = features[i].trim();\n let flag = assemblyscript[\"FEATURE_\" + name.replace(/\\-/g, \"_\").toUpperCase()];\n if (!flag) return callback(Error(\"Feature '\" + name + \"' is unknown.\"));\n assemblyscript.enableFeature(compilerOptions, flag);\n }\n }\n\n var module;\n stats.compileCount++;\n try {\n stats.compileTime += measure(() => {\n module = assemblyscript.compileProgram(program, compilerOptions);\n });\n } catch (e) {\n return callback(e);\n }\n if (checkDiagnostics(parser, stderr)) {\n if (module) module.dispose();\n return callback(Error(\"Compile error\"));\n }\n\n // Validate the module if requested\n if (args.validate) {\n stats.validateCount++;\n stats.validateTime += measure(() => {\n if (!module.validate()) {\n module.dispose();\n return callback(Error(\"Validate error\"));\n }\n });\n }\n\n // Set Binaryen-specific options\n if (args.trapMode === \"clamp\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-clamp\" ]);\n });\n } else if (args.trapMode === \"js\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-js\" ]);\n });\n } else if (args.trapMode !== \"allow\") {\n module.dispose();\n return callback(Error(\"Unsupported trap mode\"));\n }\n\n // Implicitly run costly non-LLVM optimizations on -O3 or -Oz\n // see: https://github.com/WebAssembly/binaryen/pull/1596\n if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;\n\n module.setOptimizeLevel(optimizeLevel);\n module.setShrinkLevel(shrinkLevel);\n module.setDebugInfo(args.debug);\n\n var runPasses = [];\n if (args.runPasses) {\n if (typeof args.runPasses === \"string\") {\n args.runPasses = args.runPasses.split(\",\");\n }\n if (args.runPasses.length) {\n args.runPasses.forEach(pass => {\n if (runPasses.indexOf(pass) < 0)\n runPasses.push(pass);\n });\n }\n }\n\n // Optimize the module if requested\n if (optimizeLevel > 0 || shrinkLevel > 0) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.optimize();\n });\n }\n\n // Run additional passes if requested\n if (runPasses.length) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses(runPasses.map(pass => pass.trim()));\n });\n }\n\n // Prepare output\n if (!args.noEmit) {\n let hasStdout = false;\n let hasOutput = false;\n\n if (args.outFile != null) {\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null) {\n args.textFile = args.outFile;\n } else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null) {\n args.asmjsFile = args.outFile;\n } else if (args.binaryFile == null) {\n args.binaryFile = args.outFile;\n }\n }\n\n // Write binary\n if (args.binaryFile != null) {\n let sourceMapURL = args.sourceMap != null\n ? args.sourceMap.length\n ? args.sourceMap\n : path.basename(args.binaryFile) + \".map\"\n : null;\n\n let wasm;\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wasm = module.toBinary(sourceMapURL)\n });\n\n if (args.binaryFile.length) {\n writeFile(args.binaryFile, wasm.output, baseDir);\n } else {\n writeStdout(wasm.output);\n hasStdout = true;\n }\n hasOutput = true;\n\n // Post-process source map\n if (wasm.sourceMap != null) {\n if (args.binaryFile.length) {\n let sourceMap = JSON.parse(wasm.sourceMap);\n sourceMap.sourceRoot = exports.sourceMapRoot;\n sourceMap.sources.forEach((name, index) => {\n let text = null;\n if (name.startsWith(exports.libraryPrefix)) {\n let stdName = name.substring(exports.libraryPrefix.length).replace(/\\.ts$/, \"\");\n if (exports.libraryFiles.hasOwnProperty(stdName)) {\n text = exports.libraryFiles[stdName];\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n text = readFile(name.substring(exports.libraryPrefix.length), customLibDirs[i]);\n if (text !== null) break;\n }\n }\n } else {\n text = readFile(name, baseDir);\n }\n if (text === null) {\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\n }\n if (!sourceMap.sourceContents) sourceMap.sourceContents = [];\n sourceMap.sourceContents[index] = text;\n });\n writeFile(path.join(\n path.dirname(args.binaryFile),\n path.basename(sourceMapURL)\n ).replace(/^\\.\\//, \"\"), JSON.stringify(sourceMap), baseDir);\n } else {\n stderr.write(\"Skipped source map (stdout already occupied)\" + EOL);\n }\n }\n }\n\n // Write asm.js\n if (args.asmjsFile != null) {\n let asm;\n if (args.asmjsFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeFile(args.asmjsFile, asm, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeStdout(asm);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write WebIDL\n if (args.idlFile != null) {\n let idl;\n if (args.idlFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeFile(args.idlFile, idl, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeStdout(idl);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write TypeScript definition\n if (args.tsdFile != null) {\n let tsd;\n if (args.tsdFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeFile(args.tsdFile, tsd, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeStdout(tsd);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write text (must be last)\n if (args.textFile != null || !hasOutput) {\n let wat;\n if (args.textFile && args.textFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText();\n });\n writeFile(args.textFile, wat, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText()\n });\n writeStdout(wat);\n }\n }\n }\n\n module.dispose();\n if (args.measure) {\n printStats(stats, stderr);\n }\n if (args.printrtti) {\n printRTTI(program, stderr);\n }\n return callback(null);\n\n function readFileNode(filename, baseDir) {\n let name = path.resolve(baseDir, filename);\n try {\n let text;\n stats.readCount++;\n stats.readTime += measure(() => {\n text = fs.readFileSync(name, { encoding: \"utf8\" });\n });\n return text;\n } catch (e) {\n return null;\n }\n }\n\n function writeFileNode(filename, contents, baseDir) {\n try {\n stats.writeCount++;\n stats.writeTime += measure(() => {\n mkdirp(path.join(baseDir, path.dirname(filename)));\n if (typeof contents === \"string\") {\n fs.writeFileSync(path.join(baseDir, filename), contents, { encoding: \"utf8\" } );\n } else {\n fs.writeFileSync(path.join(baseDir, filename), contents);\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function listFilesNode(dirname, baseDir) {\n var files;\n try {\n stats.readTime += measure(() => {\n files = fs.readdirSync(path.join(baseDir, dirname)).filter(file => /^(?!.*\\.d\\.ts$).*\\.ts$/.test(file));\n });\n return files;\n } catch (e) {\n return null;\n }\n }\n\n function writeStdout(contents) {\n if (!writeStdout.used) {\n stats.writeCount++;\n writeStdout.used = true;\n }\n stats.writeTime += measure(() => {\n if (typeof contents === \"string\") {\n stdout.write(contents, { encoding: \"utf8\" });\n } else {\n stdout.write(contents);\n }\n });\n }\n}\n\n/** Checks diagnostics emitted so far for errors. */\nfunction checkDiagnostics(emitter, stderr) {\n var diagnostic;\n var hasErrors = false;\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\n if (stderr) {\n stderr.write(\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\n EOL + EOL\n );\n }\n if (assemblyscript.isError(diagnostic)) hasErrors = true;\n }\n return hasErrors;\n}\n\nexports.checkDiagnostics = checkDiagnostics;\n\n/** Creates an empty set of stats. */\nfunction createStats() {\n return {\n readTime: 0,\n readCount: 0,\n writeTime: 0,\n writeCount: 0,\n parseTime: 0,\n parseCount: 0,\n compileTime: 0,\n compileCount: 0,\n emitTime: 0,\n emitCount: 0,\n validateTime: 0,\n validateCount: 0,\n optimizeTime: 0,\n optimizeCount: 0\n };\n}\n\nexports.createStats = createStats;\n\nif (!process.hrtime) process.hrtime = require(\"browser-process-hrtime\");\n\n/** Measures the execution time of the specified function. */\nfunction measure(fn) {\n const start = process.hrtime();\n fn();\n const times = process.hrtime(start);\n return times[0] * 1e9 + times[1];\n}\n\nexports.measure = measure;\n\n/** Formats a high resolution time to a human readable string. */\nfunction formatTime(time) {\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\n}\n\nexports.formatTime = formatTime;\n\n/** Formats and prints out the contents of a set of stats. */\nfunction printStats(stats, output) {\n function format(time, count) {\n return formatTime(time);\n }\n (output || process.stdout).write([\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\n ].join(EOL) + EOL);\n}\n\nexports.printStats = printStats;\n\n/** Prints runtime type information. */\nfunction printRTTI(program, output) {\n if (!output) output = process.stderr;\n output.write(\"# Runtime type information (RTTI)\\n\");\n output.write(assemblyscript.buildRTTI(program));\n}\n\nexports.printRTTI = printRTTI;\n\nvar allocBuffer = typeof global !== \"undefined\" && global.Buffer\n ? global.Buffer.allocUnsafe || function(len) { return new global.Buffer(len); }\n : function(len) { return new Uint8Array(len) };\n\n/** Creates a memory stream that can be used in place of stdout/stderr. */\nfunction createMemoryStream(fn) {\n var stream = [];\n stream.write = function(chunk) {\n if (fn) fn(chunk);\n if (typeof chunk === \"string\") {\n let buffer = allocBuffer(utf8.length(chunk));\n utf8.write(chunk, buffer, 0);\n chunk = buffer;\n }\n this.push(chunk);\n };\n stream.reset = function() {\n stream.length = 0;\n };\n stream.toBuffer = function() {\n var offset = 0, i = 0, k = this.length;\n while (i < k) offset += this[i++].length;\n var buffer = allocBuffer(offset);\n offset = i = 0;\n while (i < k) {\n buffer.set(this[i], offset);\n offset += this[i].length;\n ++i;\n }\n return buffer;\n };\n stream.toString = function() {\n var buffer = this.toBuffer();\n return utf8.read(buffer, 0, buffer.length);\n };\n return stream;\n}\n\nexports.createMemoryStream = createMemoryStream;\n\n/** Compatible TypeScript compiler options for syntax highlighting etc. */\nexports.tscOptions = {\n alwaysStrict: true,\n noImplicitAny: true,\n noImplicitReturns: true,\n noImplicitThis: true,\n noEmitOnError: true,\n strictNullChecks: true,\n experimentalDecorators: true,\n target: \"esnext\",\n module: \"commonjs\",\n noLib: true,\n types: [],\n allowJs: false\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var proc = typeof process !== \"undefined\" && process || {};\nvar isCI = proc.env && \"CI\" in proc.env; // doesn't work when bundled because 'process' is a mock\n\nfunction from(stream, base) {\n var colors = base || {};\n colors.supported = (stream && !!stream.isTTY) || isCI;\n colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text;\n colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text;\n colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text;\n colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text;\n colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text;\n colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text;\n colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text;\n colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text;\n return colors;\n}\n\nexports.stdout = from(proc.stdout, exports);\nexports.stderr = from(proc.stderr);\nexports.from = from;\n\nexports.GRAY = \"\\u001b[90m\";\nexports.RED = \"\\u001b[91m\";\nexports.GREEN = \"\\u001b[92m\";\nexports.YELLOW = \"\\u001b[93m\";\nexports.BLUE = \"\\u001b[94m\";\nexports.MAGENTA = \"\\u001b[95m\";\nexports.CYAN = \"\\u001b[96m\";\nexports.WHITE = \"\\u001b[97m\";\nexports.RESET = \"\\u001b[0m\";\n","// type | meaning\n// -----|---------------\n// b | boolean\n// i | integer\n// f | float\n// s | string\n// I | integer array\n// F | float array\n// S | string array\n\n/** Parses the specified command line arguments according to the given configuration. */\nfunction parse(argv, config) {\n var options = {};\n var unknown = [];\n var arguments = [];\n var trailing = [];\n\n // make an alias map and initialize defaults\n var aliases = {};\n Object.keys(config).forEach(key => {\n if (key.startsWith(\" \")) return;\n var option = config[key];\n if (option.alias != null) {\n if (typeof option.alias === \"string\") aliases[option.alias] = key;\n else if (Array.isArray(option.alias)) option.alias.forEach(alias => aliases[alias] = key);\n }\n if (option.default != null) options[key] = option.default;\n });\n\n // iterate over argv\n for (var i = 0, k = (argv = argv.slice()).length; i < k; ++i) {\n let arg = argv[i];\n if (arg == \"--\") { ++i; break; }\n let match = /^(?:(\\-\\w)(?:=(.*))?|(\\-\\-\\w{2,})(?:=(.*))?)$/.exec(arg), option, key;\n if (match) {\n if (config[arg]) option = config[key = arg]; // exact\n else if (match[1] != null) { // alias\n option = config[key = aliases[match[1].substring(1)]];\n if (option && match[2] != null) argv[i--] = match[2];\n } else if (match[3] != null) { // full\n option = config[key = match[3].substring(2)];\n if (option && match[4] != null) argv[i--] = match[4];\n }\n } else {\n if (arg.charCodeAt(0) == 45) option = config[key = arg]; // exact\n else { arguments.push(arg); continue; } // argument\n }\n if (option) {\n if (option.type == null || option.type === \"b\") options[key] = true; // flag\n else {\n if (i + 1 < argv.length && argv[i + 1].charCodeAt(0) != 45) { // present\n switch (option.type) {\n case \"i\": options[key] = parseInt(argv[++i], 10); break;\n case \"I\": options[key] = (options[key] || []).concat(parseInt(argv[++i], 10)); break;\n case \"f\": options[key] = parseFloat(argv[++i]); break;\n case \"F\": options[key] = (options[key] || []).concat(parseFloat(argv[++i])); break;\n case \"s\": options[key] = String(argv[++i]); break;\n case \"S\": options[key] = (options[key] || []).concat(argv[++i].split(\",\")); break;\n default: unknown.push(arg); --i;\n }\n } else { // omitted\n switch (option.type) {\n case \"i\":\n case \"f\": options[key] = option.default || 0; break;\n case \"s\": options[key] = option.default || \"\"; break;\n case \"I\":\n case \"F\":\n case \"S\": options[key] = options.default || []; break;\n default: unknown.push(arg);\n }\n }\n }\n if (option.value) Object.keys(option.value).forEach(k => options[k] = option.value[k]);\n } else unknown.push(arg);\n }\n while (i < k) trailing.push(argv[i++]); // trailing\n\n return { options, unknown, arguments, trailing };\n}\n\nexports.parse = parse;\n\n/** Generates the help text for the specified configuration. */\nfunction help(config, options) {\n if (!options) options = {};\n var indent = options.indent || 2;\n var padding = options.padding || 24;\n var eol = options.eol || \"\\n\";\n var sb = [];\n Object.keys(config).forEach(key => {\n var option = config[key];\n if (option.description == null) return;\n var text = \"\";\n while (text.length < indent) text += \" \";\n text += \"--\" + key;\n if (option.alias) text += \", -\" + option.alias;\n while (text.length < padding) text += \" \";\n if (Array.isArray(option.description)) {\n sb.push(text + option.description[0] + option.description.slice(1).map(line => {\n for (let i = 0; i < padding; ++i) line = \" \" + line;\n return eol + line;\n }).join(\"\"));\n } else sb.push(text + option.description);\n });\n return sb.join(eol);\n}\n\nexports.help = help;\n","/*\nCopyright 2010 James Halliday (mail@substack.net)\n\nThis project is free software released under the MIT/X11 license:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nvar path = require(\"path\");\nvar fs = require(\"fs\");\nvar _0777 = parseInt(\"0777\", 8);\n\nmodule.exports = function mkdirp(p, opts, made) {\n if (!opts || typeof opts !== \"object\") {\n opts = { mode: opts };\n }\n var mode = opts.mode;\n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n p = path.resolve(p);\n try {\n fs.mkdirSync(p, mode);\n made = made || p;\n } catch (err0) {\n switch (err0.code) {\n case \"ENOENT\":\n made = mkdirp(path.dirname(p), opts, made);\n mkdirp(p, opts, made);\n break;\n default:\n var stat;\n try {\n stat = fs.statSync(p);\n } catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n return made;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.transformer=t():e.transformer=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=6)}([function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]=\"SOURCE\",e[e.NAMEDTYPE=1]=\"NAMEDTYPE\",e[e.FUNCTIONTYPE=2]=\"FUNCTIONTYPE\",e[e.TYPENAME=3]=\"TYPENAME\",e[e.TYPEPARAMETER=4]=\"TYPEPARAMETER\",e[e.PARAMETER=5]=\"PARAMETER\",e[e.IDENTIFIER=6]=\"IDENTIFIER\",e[e.ASSERTION=7]=\"ASSERTION\",e[e.BINARY=8]=\"BINARY\",e[e.CALL=9]=\"CALL\",e[e.CLASS=10]=\"CLASS\",e[e.COMMA=11]=\"COMMA\",e[e.ELEMENTACCESS=12]=\"ELEMENTACCESS\",e[e.FALSE=13]=\"FALSE\",e[e.FUNCTION=14]=\"FUNCTION\",e[e.INSTANCEOF=15]=\"INSTANCEOF\",e[e.LITERAL=16]=\"LITERAL\",e[e.NEW=17]=\"NEW\",e[e.NULL=18]=\"NULL\",e[e.PARENTHESIZED=19]=\"PARENTHESIZED\",e[e.PROPERTYACCESS=20]=\"PROPERTYACCESS\",e[e.TERNARY=21]=\"TERNARY\",e[e.SUPER=22]=\"SUPER\",e[e.THIS=23]=\"THIS\",e[e.TRUE=24]=\"TRUE\",e[e.CONSTRUCTOR=25]=\"CONSTRUCTOR\",e[e.UNARYPOSTFIX=26]=\"UNARYPOSTFIX\",e[e.UNARYPREFIX=27]=\"UNARYPREFIX\",e[e.BLOCK=28]=\"BLOCK\",e[e.BREAK=29]=\"BREAK\",e[e.CONTINUE=30]=\"CONTINUE\",e[e.DO=31]=\"DO\",e[e.EMPTY=32]=\"EMPTY\",e[e.EXPORT=33]=\"EXPORT\",e[e.EXPORTDEFAULT=34]=\"EXPORTDEFAULT\",e[e.EXPORTIMPORT=35]=\"EXPORTIMPORT\",e[e.EXPRESSION=36]=\"EXPRESSION\",e[e.FOR=37]=\"FOR\",e[e.IF=38]=\"IF\",e[e.IMPORT=39]=\"IMPORT\",e[e.RETURN=40]=\"RETURN\",e[e.SWITCH=41]=\"SWITCH\",e[e.THROW=42]=\"THROW\",e[e.TRY=43]=\"TRY\",e[e.VARIABLE=44]=\"VARIABLE\",e[e.VOID=45]=\"VOID\",e[e.WHILE=46]=\"WHILE\",e[e.CLASSDECLARATION=47]=\"CLASSDECLARATION\",e[e.ENUMDECLARATION=48]=\"ENUMDECLARATION\",e[e.ENUMVALUEDECLARATION=49]=\"ENUMVALUEDECLARATION\",e[e.FIELDDECLARATION=50]=\"FIELDDECLARATION\",e[e.FUNCTIONDECLARATION=51]=\"FUNCTIONDECLARATION\",e[e.IMPORTDECLARATION=52]=\"IMPORTDECLARATION\",e[e.INDEXSIGNATUREDECLARATION=53]=\"INDEXSIGNATUREDECLARATION\",e[e.INTERFACEDECLARATION=54]=\"INTERFACEDECLARATION\",e[e.METHODDECLARATION=55]=\"METHODDECLARATION\",e[e.NAMESPACEDECLARATION=56]=\"NAMESPACEDECLARATION\",e[e.TYPEDECLARATION=57]=\"TYPEDECLARATION\",e[e.VARIABLEDECLARATION=58]=\"VARIABLEDECLARATION\",e[e.DECORATOR=59]=\"DECORATOR\",e[e.EXPORTMEMBER=60]=\"EXPORTMEMBER\",e[e.SWITCHCASE=61]=\"SWITCHCASE\",e[e.COMMENT=62]=\"COMMENT\"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName(\"\",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text=\"\",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new j;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(\".\")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]=\"DEFAULT\",e[e.OPTIONAL=1]=\"OPTIONAL\",e[e.REST=2]=\"REST\"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if(\"builtin\"==t)return E.BUILTIN;break;case 101:if(\"external\"==t)return E.EXTERNAL;break;case 103:if(\"global\"==t)return E.GLOBAL;break;case 105:if(\"inline\"==t)return E.INLINE;break;case 108:if(\"lazy\"==t)return E.LAZY;break;case 111:if(\"operator\"==t)return E.OPERATOR;break;case 115:if(\"sealed\"==t)return E.SEALED;break;case 117:if(\"unmanaged\"==t)return E.UNMANAGED;if(\"unsafe\"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),\"operator\"==t)switch(i.charCodeAt(0)){case 98:if(\"binary\"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case\"prefix\":return E.OPERATOR_PREFIX;case\"postfix\":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]=\"CUSTOM\",e[e.GLOBAL=1]=\"GLOBAL\",e[e.OPERATOR=2]=\"OPERATOR\",e[e.OPERATOR_BINARY=3]=\"OPERATOR_BINARY\",e[e.OPERATOR_PREFIX=4]=\"OPERATOR_PREFIX\",e[e.OPERATOR_POSTFIX=5]=\"OPERATOR_POSTFIX\",e[e.UNMANAGED=6]=\"UNMANAGED\",e[e.SEALED=7]=\"SEALED\",e[e.INLINE=8]=\"INLINE\",e[e.EXTERNAL=9]=\"EXTERNAL\",e[e.BUILTIN=10]=\"BUILTIN\",e[e.LAZY=11]=\"LAZY\",e[e.UNSAFE=12]=\"UNSAFE\"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]=\"LINE\",e[e.TRIPLE=1]=\"TRIPLE\",e[e.BLOCK=2]=\"BLOCK\"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]=\"FLOAT\",e[e.INTEGER=1]=\"INTEGER\",e[e.STRING=2]=\"STRING\",e[e.REGEXP=3]=\"REGEXP\",e[e.ARRAY=4]=\"ARRAY\",e[e.OBJECT=5]=\"OBJECT\"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]=\"PREFIX\",e[e.AS=1]=\"AS\",e[e.NONNULL=2]=\"NONNULL\"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,\"typeArgumentsRange\",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"argumentsRange\",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text=\"constructor\",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text=\"null\",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text=\"super\",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text=\"this\",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text=\"true\",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text=\"false\",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=j;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=Q;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(Q);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(Q);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]=\"USER\",e[e.USER_ENTRY=1]=\"USER_ENTRY\",e[e.LIBRARY=2]=\"LIBRARY\",e[e.LIBRARY_ENTRY=3]=\"LIBRARY_ENTRY\"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,\"isLibrary\",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]=\"NONE\",e[e.ARROW_PARENTHESIZED=1]=\"ARROW_PARENTHESIZED\",e[e.ARROW_SINGLE=2]=\"ARROW_SINGLE\"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(\".ts\")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i\";case s.LESSTHAN_EQUALS:return\"<=\";case s.GREATERTHAN_EQUALS:return\">=\";case s.EQUALS_EQUALS:return\"==\";case s.EXCLAMATION_EQUALS:return\"!=\";case s.EQUALS_EQUALS_EQUALS:return\"===\";case s.EXCLAMATION_EQUALS_EQUALS:return\"!==\";case s.PLUS:return\"+\";case s.MINUS:return\"-\";case s.ASTERISK_ASTERISK:return\"**\";case s.ASTERISK:return\"*\";case s.SLASH:return\"/\";case s.PERCENT:return\"%\";case s.PLUS_PLUS:return\"++\";case s.MINUS_MINUS:return\"--\";case s.LESSTHAN_LESSTHAN:return\"<<\";case s.GREATERTHAN_GREATERTHAN:return\">>\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return\">>>\";case s.AMPERSAND:return\"&\";case s.BAR:return\"|\";case s.CARET:return\"^\";case s.EXCLAMATION:return\"!\";case s.TILDE:return\"~\";case s.AMPERSAND_AMPERSAND:return\"&&\";case s.BAR_BAR:return\"||\";case s.EQUALS:return\"=\";case s.PLUS_EQUALS:return\"+=\";case s.MINUS_EQUALS:return\"-=\";case s.ASTERISK_EQUALS:return\"*=\";case s.ASTERISK_ASTERISK_EQUALS:return\"**=\";case s.SLASH_EQUALS:return\"/=\";case s.PERCENT_EQUALS:return\"%=\";case s.LESSTHAN_LESSTHAN_EQUALS:return\"<<=\";case s.GREATERTHAN_GREATERTHAN_EQUALS:return\">>=\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return\">>>=\";case s.AMPERSAND_EQUALS:return\"&=\";case s.BAR_EQUALS:return\"|=\";case s.CARET_EQUALS:return\"^=\";default:return assert(!1),\"\"}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error(\"source mismatch\");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,\"atStart\",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"atEnd\",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"line\",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"column\",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),\"\";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return\"\\0\";case 98:return\"\\b\";case 116:return\"\\t\";case 110:return\"\\n\";case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),\"\";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),\"\"):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?\"\":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Operation_not_supported=100]=\"Operation_not_supported\",e[e.Operation_is_unsafe=101]=\"Operation_is_unsafe\",e[e.User_defined_0=102]=\"User_defined_0\",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]=\"Conversion_from_type_0_to_1_requires_an_explicit_cast\",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]=\"Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit\",e[e.Type_0_cannot_be_changed_to_type_1=202]=\"Type_0_cannot_be_changed_to_type_1\",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]=\"Type_0_cannot_be_reinterpreted_as_type_1\",e[e.Basic_type_0_cannot_be_nullable=204]=\"Basic_type_0_cannot_be_nullable\",e[e.Cannot_export_a_mutable_global=205]=\"Cannot_export_a_mutable_global\",e[e.Mutable_value_cannot_be_inlined=206]=\"Mutable_value_cannot_be_inlined\",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]=\"Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa\",e[e.Unmanaged_classes_cannot_implement_interfaces=208]=\"Unmanaged_classes_cannot_implement_interfaces\",e[e.Invalid_regular_expression_flags=209]=\"Invalid_regular_expression_flags\",e[e.Implementation_0_must_match_the_signature_1=210]=\"Implementation_0_must_match_the_signature_1\",e[e.Class_0_is_sealed_and_cannot_be_extended=211]=\"Class_0_is_sealed_and_cannot_be_extended\",e[e.Decorator_0_is_not_valid_here=212]=\"Decorator_0_is_not_valid_here\",e[e.Duplicate_decorator=213]=\"Duplicate_decorator\",e[e.An_allocator_must_be_present_to_use_0=214]=\"An_allocator_must_be_present_to_use_0\",e[e.Optional_parameter_must_have_an_initializer=215]=\"Optional_parameter_must_have_an_initializer\",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]=\"Constructor_of_class_0_must_not_require_any_arguments\",e[e.Function_0_cannot_be_inlined_into_itself=217]=\"Function_0_cannot_be_inlined_into_itself\",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]=\"Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set\",e[e.Optional_properties_are_not_supported=219]=\"Optional_properties_are_not_supported\",e[e.Expression_must_be_a_compile_time_constant=220]=\"Expression_must_be_a_compile_time_constant\",e[e.Module_cannot_have_multiple_start_functions=221]=\"Module_cannot_have_multiple_start_functions\",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]=\"_0_must_be_a_value_between_1_and_2_inclusive\",e[e._0_must_be_a_power_of_two=223]=\"_0_must_be_a_power_of_two\",e[e.Expression_is_unsafe=224]=\"Expression_is_unsafe\",e[e.Expression_is_never_null=225]=\"Expression_is_never_null\",e[e.Unterminated_string_literal=1002]=\"Unterminated_string_literal\",e[e.Identifier_expected=1003]=\"Identifier_expected\",e[e._0_expected=1005]=\"_0_expected\",e[e.A_file_cannot_have_a_reference_to_itself=1006]=\"A_file_cannot_have_a_reference_to_itself\",e[e.Trailing_comma_not_allowed=1009]=\"Trailing_comma_not_allowed\",e[e.Unexpected_token=1012]=\"Unexpected_token\",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]=\"A_rest_parameter_must_be_last_in_a_parameter_list\",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]=\"Parameter_cannot_have_question_mark_and_initializer\",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]=\"A_required_parameter_cannot_follow_an_optional_parameter\",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]=\"Statements_are_not_allowed_in_ambient_contexts\",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]=\"Initializers_are_not_allowed_in_ambient_contexts\",e[e._0_modifier_cannot_be_used_here=1042]=\"_0_modifier_cannot_be_used_here\",e[e.A_rest_parameter_cannot_be_optional=1047]=\"A_rest_parameter_cannot_be_optional\",e[e.A_rest_parameter_cannot_have_an_initializer=1048]=\"A_rest_parameter_cannot_have_an_initializer\",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]=\"A_set_accessor_must_have_exactly_one_parameter\",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]=\"A_set_accessor_parameter_cannot_have_an_initializer\",e[e.A_get_accessor_cannot_have_parameters=1054]=\"A_get_accessor_cannot_have_parameters\",e[e.Enum_member_must_have_initializer=1061]=\"Enum_member_must_have_initializer\",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]=\"Type_parameters_cannot_appear_on_a_constructor_declaration\",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]=\"Type_annotation_cannot_appear_on_a_constructor_declaration\",e[e.An_accessor_cannot_have_type_parameters=1094]=\"An_accessor_cannot_have_type_parameters\",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]=\"A_set_accessor_cannot_have_a_return_type_annotation\",e[e.Type_parameter_list_cannot_be_empty=1098]=\"Type_parameter_list_cannot_be_empty\",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]=\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement\",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]=\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement\",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]=\"A_return_statement_can_only_be_used_within_a_function_body\",e[e.Expression_expected=1109]=\"Expression_expected\",e[e.Type_expected=1110]=\"Type_expected\",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]=\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement\",e[e.Duplicate_label_0=1114]=\"Duplicate_label_0\",e[e.An_export_assignment_cannot_have_modifiers=1120]=\"An_export_assignment_cannot_have_modifiers\",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]=\"Octal_literals_are_not_allowed_in_strict_mode\",e[e.Digit_expected=1124]=\"Digit_expected\",e[e.Hexadecimal_digit_expected=1125]=\"Hexadecimal_digit_expected\",e[e.Unexpected_end_of_text=1126]=\"Unexpected_end_of_text\",e[e.Invalid_character=1127]=\"Invalid_character\",e[e._case_or_default_expected=1130]=\"_case_or_default_expected\",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]=\"_super_must_be_followed_by_an_argument_list_or_member_access\",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]=\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context\",e[e.Type_argument_expected=1140]=\"Type_argument_expected\",e[e.String_literal_expected=1141]=\"String_literal_expected\",e[e.Line_break_not_permitted_here=1142]=\"Line_break_not_permitted_here\",e[e.Declaration_expected=1146]=\"Declaration_expected\",e[e._const_declarations_must_be_initialized=1155]=\"_const_declarations_must_be_initialized\",e[e.Unterminated_regular_expression_literal=1161]=\"Unterminated_regular_expression_literal\",e[e.Interface_declaration_cannot_have_implements_clause=1176]=\"Interface_declaration_cannot_have_implements_clause\",e[e.Binary_digit_expected=1177]=\"Binary_digit_expected\",e[e.Octal_digit_expected=1178]=\"Octal_digit_expected\",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]=\"An_implementation_cannot_be_declared_in_ambient_contexts\",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]=\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive\",e[e.Unterminated_Unicode_escape_sequence=1199]=\"Unterminated_Unicode_escape_sequence\",e[e.Decorators_are_not_valid_here=1206]=\"Decorators_are_not_valid_here\",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]=\"_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration\",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]=\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract\",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]=\"A_definite_assignment_assertion_is_not_permitted_in_this_context\",e[e.A_class_may_only_extend_another_class=1311]=\"A_class_may_only_extend_another_class\",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]=\"A_parameter_property_cannot_be_declared_using_a_rest_parameter\",e[e.Duplicate_identifier_0=2300]=\"Duplicate_identifier_0\",e[e.Cannot_find_name_0=2304]=\"Cannot_find_name_0\",e[e.Module_0_has_no_exported_member_1=2305]=\"Module_0_has_no_exported_member_1\",e[e.Generic_type_0_requires_1_type_argument_s=2314]=\"Generic_type_0_requires_1_type_argument_s\",e[e.Type_0_is_not_generic=2315]=\"Type_0_is_not_generic\",e[e.Type_0_is_not_assignable_to_type_1=2322]=\"Type_0_is_not_assignable_to_type_1\",e[e.Index_signature_is_missing_in_type_0=2329]=\"Index_signature_is_missing_in_type_0\",e[e._this_cannot_be_referenced_in_current_location=2332]=\"_this_cannot_be_referenced_in_current_location\",e[e._super_can_only_be_referenced_in_a_derived_class=2335]=\"_super_can_only_be_referenced_in_a_derived_class\",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]=\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors\",e[e.Property_0_does_not_exist_on_type_1=2339]=\"Property_0_does_not_exist_on_type_1\",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]=\"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures\",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]=\"Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature\",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]=\"A_function_whose_declared_type_is_not_void_must_return_a_value\",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]=\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access\",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]=\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access\",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]=\"Operator_0_cannot_be_applied_to_types_1_and_2\",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]=\"A_super_call_must_be_the_first_statement_in_the_constructor\",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]=\"Constructors_for_derived_classes_must_contain_a_super_call\",e[e._get_and_set_accessor_must_have_the_same_type=2380]=\"_get_and_set_accessor_must_have_the_same_type\",e[e.Constructor_implementation_is_missing=2390]=\"Constructor_implementation_is_missing\",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]=\"Function_implementation_is_missing_or_not_immediately_following_the_declaration\",e[e.Multiple_constructor_implementations_are_not_allowed=2392]=\"Multiple_constructor_implementations_are_not_allowed\",e[e.Duplicate_function_implementation=2393]=\"Duplicate_function_implementation\",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]=\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local\",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]=\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged\",e[e.Type_0_has_no_property_1=2460]=\"Type_0_has_no_property_1\",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]=\"The_0_operator_cannot_be_applied_to_type_1\",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]=\"In_const_enum_declarations_member_initializer_must_be_constant_expression\",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]=\"Export_declaration_conflicts_with_exported_declaration_of_0\",e[e.Object_is_possibly_null=2531]=\"Object_is_possibly_null\",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]=\"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property\",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]=\"The_target_of_an_assignment_must_be_a_variable_or_a_property_access\",e[e.Index_signature_in_type_0_only_permits_reading=2542]=\"Index_signature_in_type_0_only_permits_reading\",e[e.Expected_0_arguments_but_got_1=2554]=\"Expected_0_arguments_but_got_1\",e[e.Expected_at_least_0_arguments_but_got_1=2555]=\"Expected_at_least_0_arguments_but_got_1\",e[e.Expected_0_type_arguments_but_got_1=2558]=\"Expected_0_type_arguments_but_got_1\",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]=\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums\",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]=\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration\",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]=\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration\",e[e.Namespace_0_has_no_exported_member_1=2694]=\"Namespace_0_has_no_exported_member_1\",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]=\"Required_type_parameters_may_not_follow_optional_type_parameters\",e[e.Duplicate_property_0=2718]=\"Duplicate_property_0\",e[e.Type_0_has_no_call_signatures=2757]=\"Type_0_has_no_call_signatures\",e[e.File_0_not_found=6054]=\"File_0_not_found\",e[e.Numeric_separators_are_not_allowed_here=6188]=\"Numeric_separators_are_not_allowed_here\",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]=\"Multiple_consecutive_numeric_separators_are_not_permitted\",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]=\"_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class\",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]=\"_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class\"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return\"Operation not supported.\";case 101:return\"Operation is unsafe.\";case 102:return\"User-defined: {0}\";case 200:return\"Conversion from type '{0}' to '{1}' requires an explicit cast.\";case 201:return\"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";case 202:return\"Type '{0}' cannot be changed to type '{1}'.\";case 203:return\"Type '{0}' cannot be reinterpreted as type '{1}'.\";case 204:return\"Basic type '{0}' cannot be nullable.\";case 205:return\"Cannot export a mutable global.\";case 206:return\"Mutable value cannot be inlined.\";case 207:return\"Unmanaged classes cannot extend managed classes and vice-versa.\";case 208:return\"Unmanaged classes cannot implement interfaces.\";case 209:return\"Invalid regular expression flags.\";case 210:return\"Implementation '{0}' must match the signature '{1}'.\";case 211:return\"Class '{0}' is sealed and cannot be extended.\";case 212:return\"Decorator '{0}' is not valid here.\";case 213:return\"Duplicate decorator.\";case 214:return\"An allocator must be present to use '{0}'.\";case 215:return\"Optional parameter must have an initializer.\";case 216:return\"Constructor of class '{0}' must not require any arguments.\";case 217:return\"Function '{0}' cannot be inlined into itself.\";case 218:return\"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";case 219:return\"Optional properties are not supported.\";case 220:return\"Expression must be a compile-time constant.\";case 221:return\"Module cannot have multiple start functions.\";case 222:return\"'{0}' must be a value between '{1}' and '{2}' inclusive.\";case 223:return\"'{0}' must be a power of two.\";case 224:return\"Expression is unsafe.\";case 225:return\"Expression is never 'null'.\";case 1002:return\"Unterminated string literal.\";case 1003:return\"Identifier expected.\";case 1005:return\"'{0}' expected.\";case 1006:return\"A file cannot have a reference to itself.\";case 1009:return\"Trailing comma not allowed.\";case 1012:return\"Unexpected token.\";case 1014:return\"A rest parameter must be last in a parameter list.\";case 1015:return\"Parameter cannot have question mark and initializer.\";case 1016:return\"A required parameter cannot follow an optional parameter.\";case 1036:return\"Statements are not allowed in ambient contexts.\";case 1039:return\"Initializers are not allowed in ambient contexts.\";case 1042:return\"'{0}' modifier cannot be used here.\";case 1047:return\"A rest parameter cannot be optional.\";case 1048:return\"A rest parameter cannot have an initializer.\";case 1049:return\"A 'set' accessor must have exactly one parameter.\";case 1052:return\"A 'set' accessor parameter cannot have an initializer.\";case 1054:return\"A 'get' accessor cannot have parameters.\";case 1061:return\"Enum member must have initializer.\";case 1092:return\"Type parameters cannot appear on a constructor declaration.\";case 1093:return\"Type annotation cannot appear on a constructor declaration.\";case 1094:return\"An accessor cannot have type parameters.\";case 1095:return\"A 'set' accessor cannot have a return type annotation.\";case 1098:return\"Type parameter list cannot be empty.\";case 1104:return\"A 'continue' statement can only be used within an enclosing iteration statement.\";case 1105:return\"A 'break' statement can only be used within an enclosing iteration or switch statement.\";case 1108:return\"A 'return' statement can only be used within a function body.\";case 1109:return\"Expression expected.\";case 1110:return\"Type expected.\";case 1113:return\"A 'default' clause cannot appear more than once in a 'switch' statement.\";case 1114:return\"Duplicate label '{0}'.\";case 1120:return\"An export assignment cannot have modifiers.\";case 1121:return\"Octal literals are not allowed in strict mode.\";case 1124:return\"Digit expected.\";case 1125:return\"Hexadecimal digit expected.\";case 1126:return\"Unexpected end of text.\";case 1127:return\"Invalid character.\";case 1130:return\"'case' or 'default' expected.\";case 1034:return\"'super' must be followed by an argument list or member access.\";case 1038:return\"A 'declare' modifier cannot be used in an already ambient context.\";case 1140:return\"Type argument expected.\";case 1141:return\"String literal expected.\";case 1142:return\"Line break not permitted here.\";case 1146:return\"Declaration expected.\";case 1155:return\"'const' declarations must be initialized.\";case 1161:return\"Unterminated regular expression literal.\";case 1176:return\"Interface declaration cannot have 'implements' clause.\";case 1177:return\"Binary digit expected.\";case 1178:return\"Octal digit expected.\";case 1183:return\"An implementation cannot be declared in ambient contexts.\";case 1198:return\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";case 1199:return\"Unterminated Unicode escape sequence.\";case 1206:return\"Decorators are not valid here.\";case 1242:return\"'abstract' modifier can only appear on a class, method, or property declaration.\";case 1245:return\"Method '{0}' cannot have an implementation because it is marked abstract.\";case 1255:return\"A definite assignment assertion '!' is not permitted in this context.\";case 1311:return\"A class may only extend another class.\";case 1317:return\"A parameter property cannot be declared using a rest parameter.\";case 2300:return\"Duplicate identifier '{0}'.\";case 2304:return\"Cannot find name '{0}'.\";case 2305:return\"Module '{0}' has no exported member '{1}'.\";case 2314:return\"Generic type '{0}' requires {1} type argument(s).\";case 2315:return\"Type '{0}' is not generic.\";case 2322:return\"Type '{0}' is not assignable to type '{1}'.\";case 2329:return\"Index signature is missing in type '{0}'.\";case 2332:return\"'this' cannot be referenced in current location.\";case 2335:return\"'super' can only be referenced in a derived class.\";case 2337:return\"Super calls are not permitted outside constructors or in nested functions inside constructors.\";case 2339:return\"Property '{0}' does not exist on type '{1}'.\";case 2349:return\"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";case 2351:return\"Cannot use 'new' with an expression whose type lacks a construct signature.\";case 2355:return\"A function whose declared type is not 'void' must return a value.\";case 2357:return\"The operand of an increment or decrement operator must be a variable or a property access.\";case 2364:return\"The left-hand side of an assignment expression must be a variable or a property access.\";case 2365:return\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";case 2376:return\"A 'super' call must be the first statement in the constructor.\";case 2377:return\"Constructors for derived classes must contain a 'super' call.\";case 2380:return\"'get' and 'set' accessor must have the same type.\";case 2390:return\"Constructor implementation is missing.\";case 2391:return\"Function implementation is missing or not immediately following the declaration.\";case 2392:return\"Multiple constructor implementations are not allowed.\";case 2393:return\"Duplicate function implementation.\";case 2395:return\"Individual declarations in merged declaration '{0}' must be all exported or all local.\";case 2434:return\"A namespace declaration cannot be located prior to a class or function with which it is merged.\";case 2460:return\"Type '{0}' has no property '{1}'.\";case 2469:return\"The '{0}' operator cannot be applied to type '{1}'.\";case 2474:return\"In 'const' enum declarations member initializer must be constant expression.\";case 2484:return\"Export declaration conflicts with exported declaration of '{0}'.\";case 2531:return\"Object is possibly 'null'.\";case 2540:return\"Cannot assign to '{0}' because it is a constant or a read-only property.\";case 2541:return\"The target of an assignment must be a variable or a property access.\";case 2542:return\"Index signature in type '{0}' only permits reading.\";case 2554:return\"Expected {0} arguments, but got {1}.\";case 2555:return\"Expected at least {0} arguments, but got {1}.\";case 2558:return\"Expected {0} type arguments, but got {1}.\";case 2651:return\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";case 2673:return\"Constructor of class '{0}' is private and only accessible within the class declaration.\";case 2674:return\"Constructor of class '{0}' is protected and only accessible within the class declaration.\";case 2694:return\"Namespace '{0}' has no exported member '{1}'.\";case 2706:return\"Required type parameters may not follow optional type parameters.\";case 2718:return\"Duplicate property '{0}'.\";case 2757:return\"Type '{0}' has no call signatures.\";case 6054:return\"File '{0}' not found.\";case 6188:return\"Numeric separators are not allowed here.\";case 6189:return\"Multiple consecutive numeric separators are not permitted.\";case 17009:return\"'super' must be called before accessing 'this' in the constructor of a derived class.\";case 17011:return\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";default:return\"\"}}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes(\"@nearfile\")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:\"Integer\",u32:\"Integer\",i64:\"String\",u64:\"String\",string:\"String\",bool:\"Boolean\",Uint8Array:\"String\"},t.nonNullableTypes=[\"i32\",\"u32\",\"i64\",\"u64\",\"bool\",\"boolean\"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return\"void\"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split(\"|\").filter(function(e){return\"null\"!==e.trim()}).join(\"|\"),s=p(n).includes(\"null\"),a=e.name.symbol;this.sb.push(\"\\n//@ts-ignore\\nfunction __wrapper_\"+a+\"(): void {\"),i.length>0&&this.sb.push(\" // Reading input bytes.\\n input(0);\\n let json_len = register_len(0);\\n if (json_len == U32.MAX_VALUE) {\\n panic();\\n }\\n let json = new Uint8Array(json_len as u32);\\n read_register(0, json.buffer);\\n const obj: Obj = JSON.parse(json);\"),\"void\"!==p(n)?this.sb.push(\" let result: \"+p(n)+\" = \"+a+\"(\"):this.sb.push(\" \"+a+\"(\"),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(\", \")),this.sb[this.sb.length-1]+=\");\",\"void\"!==p(n)&&this.sb.push(\"\\n let encoder = new JSONEncoder();\\n let val: Uint8Array;\\n if ((isString<\"+r+\">() || isNullable<\"+r+\">()) && result == null) {\\n encoder.setNull(null);\\n val = encoder.serialize();\\n } else {\\n val = encode<\"+r+\">(result\"+(s?\"!\":\"\")+\", null, encoder);\\n }\\n value_return(val.byteLength, val.buffer);\"),this.sb.push(\"}\\n\\nexport { __wrapper_\"+a+\" as \"+a+\" }\\n\")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+=\"<\"+e.typeParameters.map(p).join(\", \")+\">\"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf(\"}\")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error(\"All Fields must have explict type declaration.\");var r=t.typeName(n);i+=\"\\n static decode(json: Uint8Array): \"+r+\" {\\n let value = instantiate<\"+r+\">(); // Allocate without constructor\\n return value.decode(json);\\n }\\n\\n decode(buf: V): \"+r+' {\\n let json: Obj;\\n if (buf instanceof Uint8Array) {\\n json = JSON.parse(buf);\\n }else {\\n assert(buf instanceof Obj, \"argument must be Uint8Array or Json Object\");\\n json = buf;\\n }\\n return this._decode(json);\\n }\\n\\n private _decode(obj: Obj): '+r+\" {\\n \"+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,\"this.\"+t+' = obj.has(\"'+t+'\") ? ')+\": this.\"+t+\";\"})}(n).join(\"\\n \")+'\\n return this;\\n }\\n\\n _encode(name: string | null = \"\", _encoder: JSONEncoder | null = null): JSONEncoder {\\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\\n encoder.pushObject(name);\\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return\"encode<\"+t+\", JSONEncoder>(this.\"+i+', \"'+i+'\", encoder);'})}(n).join(\"\\n \")+\"\\n encoder.popObject();\\n return encoder;\\n }\\n\\n encode(): Uint8Array {\\n return this._encode().serialize();\\n }\\n\\n serialize(): Uint8Array {\\n return this.encode();\\n }\\n\\n toJSON(): string {\\n return this._encode().toString();\\n }\\n}\"}return i});return this.sb.concat(i).join(\"\\n\")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=\"\"),t+\"decode<\"+p(e.type)+', Obj>(obj, \"'+p(e.name)+'\")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf(\"\\n\")).includes(\"out\");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t(\"out/\"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?\"\":\"./\")+n.normalizedPath,h(n))})}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NONE=0]=\"NONE\",e[e.SIGN_EXTENSION=1]=\"SIGN_EXTENSION\",e[e.MUTABLE_GLOBAL=2]=\"MUTABLE_GLOBAL\",e[e.BULK_MEMORY=4]=\"BULK_MEMORY\",e[e.SIMD=8]=\"SIMD\",e[e.THREADS=16]=\"THREADS\"}(t.Feature||(t.Feature={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.WASM32=0]=\"WASM32\",e[e.WASM64=1]=\"WASM64\",e[e.JS=2]=\"JS\"}(t.Target||(t.Target={}))},function(e,t,i){\"use strict\";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]=\"NONE\",e[e.ARRAYBUFFERVIEW=1]=\"ARRAYBUFFERVIEW\",e[e.ARRAY=2]=\"ARRAY\",e[e.SET=4]=\"SET\",e[e.MAP=8]=\"MAP\",e[e.ACYCLIC=16]=\"ACYCLIC\",e[e.VALUE_ALIGN_0=32]=\"VALUE_ALIGN_0\",e[e.VALUE_ALIGN_1=64]=\"VALUE_ALIGN_1\",e[e.VALUE_ALIGN_2=128]=\"VALUE_ALIGN_2\",e[e.VALUE_ALIGN_3=256]=\"VALUE_ALIGN_3\",e[e.VALUE_ALIGN_4=512]=\"VALUE_ALIGN_4\",e[e.VALUE_SIGNED=1024]=\"VALUE_SIGNED\",e[e.VALUE_FLOAT=2048]=\"VALUE_FLOAT\",e[e.VALUE_NULLABLE=4096]=\"VALUE_NULLABLE\",e[e.VALUE_MANAGED=8192]=\"VALUE_MANAGED\",e[e.KEY_ALIGN_0=16384]=\"KEY_ALIGN_0\",e[e.KEY_ALIGN_1=32768]=\"KEY_ALIGN_1\",e[e.KEY_ALIGN_2=65536]=\"KEY_ALIGN_2\",e[e.KEY_ALIGN_3=131072]=\"KEY_ALIGN_3\",e[e.KEY_ALIGN_4=262144]=\"KEY_ALIGN_4\",e[e.KEY_SIGNED=524288]=\"KEY_SIGNED\",e[e.KEY_FLOAT=1048576]=\"KEY_FLOAT\",e[e.KEY_NULLABLE=2097152]=\"KEY_NULLABLE\",e[e.KEY_MANAGED=4194304]=\"KEY_MANAGED\"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return\"INFO\";case n.WARNING:return\"WARNING\";case n.ERROR:return\"ERROR\";default:return assert(!1),\"\"}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),\"\"}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]=\"INFO\",e[e.WARNING=1]=\"WARNING\",e[e.ERROR=2]=\"ERROR\"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE=\"\u001b[96m\",t.COLOR_YELLOW=\"\u001b[93m\",t.COLOR_RED=\"\u001b[91m\",t.COLOR_RESET=\"\u001b[0m\",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace(\"{0}\",n)),null!=s&&(o=o.replace(\"{1}\",s)),null!=a&&(o=o.replace(\"{2}\",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+\" \"+this.code.toString(10)+': \"'+this.message+'\" in '+this.range.source.normalizedPath+\":\"+this.range.line.toString(10)+\":\"+this.range.column.toString(10):o(this.category)+\" \"+this.code.toString(10)+\": \"+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NULL=0]=\"NULL\",e[e.LINEFEED=10]=\"LINEFEED\",e[e.CARRIAGERETURN=13]=\"CARRIAGERETURN\",e[e.LINESEPARATOR=8232]=\"LINESEPARATOR\",e[e.PARAGRAPHSEPARATOR=8233]=\"PARAGRAPHSEPARATOR\",e[e.NEXTLINE=133]=\"NEXTLINE\",e[e.SPACE=32]=\"SPACE\",e[e.NONBREAKINGSPACE=160]=\"NONBREAKINGSPACE\",e[e.ENQUAD=8192]=\"ENQUAD\",e[e.EMQUAD=8193]=\"EMQUAD\",e[e.ENSPACE=8194]=\"ENSPACE\",e[e.EMSPACE=8195]=\"EMSPACE\",e[e.THREEPEREMSPACE=8196]=\"THREEPEREMSPACE\",e[e.FOURPEREMSPACE=8197]=\"FOURPEREMSPACE\",e[e.SIXPEREMSPACE=8198]=\"SIXPEREMSPACE\",e[e.FIGURESPACE=8199]=\"FIGURESPACE\",e[e.PUNCTUATIONSPACE=8200]=\"PUNCTUATIONSPACE\",e[e.THINSPACE=8201]=\"THINSPACE\",e[e.HAIRSPACE=8202]=\"HAIRSPACE\",e[e.ZEROWIDTHSPACE=8203]=\"ZEROWIDTHSPACE\",e[e.NARROWNOBREAKSPACE=8239]=\"NARROWNOBREAKSPACE\",e[e.IDEOGRAPHICSPACE=12288]=\"IDEOGRAPHICSPACE\",e[e.MATHEMATICALSPACE=8287]=\"MATHEMATICALSPACE\",e[e.OGHAM=5760]=\"OGHAM\",e[e._=95]=\"_\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.AMPERSAND=38]=\"AMPERSAND\",e[e.ASTERISK=42]=\"ASTERISK\",e[e.AT=64]=\"AT\",e[e.BACKSLASH=92]=\"BACKSLASH\",e[e.BACKTICK=96]=\"BACKTICK\",e[e.BAR=124]=\"BAR\",e[e.CARET=94]=\"CARET\",e[e.CLOSEBRACE=125]=\"CLOSEBRACE\",e[e.CLOSEBRACKET=93]=\"CLOSEBRACKET\",e[e.CLOSEPAREN=41]=\"CLOSEPAREN\",e[e.COLON=58]=\"COLON\",e[e.COMMA=44]=\"COMMA\",e[e.DOLLAR=36]=\"DOLLAR\",e[e.DOT=46]=\"DOT\",e[e.DOUBLEQUOTE=34]=\"DOUBLEQUOTE\",e[e.EQUALS=61]=\"EQUALS\",e[e.EXCLAMATION=33]=\"EXCLAMATION\",e[e.GREATERTHAN=62]=\"GREATERTHAN\",e[e.HASH=35]=\"HASH\",e[e.LESSTHAN=60]=\"LESSTHAN\",e[e.MINUS=45]=\"MINUS\",e[e.OPENBRACE=123]=\"OPENBRACE\",e[e.OPENBRACKET=91]=\"OPENBRACKET\",e[e.OPENPAREN=40]=\"OPENPAREN\",e[e.PERCENT=37]=\"PERCENT\",e[e.PLUS=43]=\"PLUS\",e[e.QUESTION=63]=\"QUESTION\",e[e.SEMICOLON=59]=\"SEMICOLON\",e[e.SINGLEQUOTE=39]=\"SINGLEQUOTE\",e[e.SLASH=47]=\"SLASH\",e[e.TILDE=126]=\"TILDE\",e[e.BACKSPACE=8]=\"BACKSPACE\",e[e.FORMFEED=12]=\"FORMFEED\",e[e.BYTEORDERMARK=65279]=\"BYTEORDERMARK\",e[e.TAB=9]=\"TAB\",e[e.VERTICALTAB=11]=\"VERTICALTAB\"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:\".\"}function a(e){var t=e.length;if(t<=1){if(0==t)return\".\";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return\".\"}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith(\"std/\")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=\" \",r=\" \",s=\" \";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){\"use strict\";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i\")}e.isNullable&&n.push(\" | null\")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?\"((\":\"(\");var n=e.explicitThisType;n&&(i.push(\"this: \"),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(\", \"),this.serializeParameter(r[0]);for(var a=1;a \"),this.visitTypeNode(o)):i.push(\") => void\"),t&&i.push(\") | null\")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(\" extends \"),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push(\"=\"),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push(\"[\");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r\"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(\" as \"),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push(\"!\");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(\" \"),t.push(a.operatorTokenToString(e.operator)),t.push(\" \"),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push(\"<\"),this.visitTypeNode(i[0]);for(var r=1;r(\")}}else t.push(\"(\");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push(\"\\\\0\"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\b\");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\t\");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\n\");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\v\");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\f\");break;case 13:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\r\"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\\\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push(\"\\\\'\"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\\\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push(\"/\"),t.push(e.pattern),t.push(\"/\"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push(\"new \"),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push(\"(\"),this.visitNode(e.expression),t.push(\")\")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push(\".\"),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(\" ? \"),this.visitNode(e.ifThen),t.push(\" : \"),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push(\"\\n\"):t.push(\";\\n\")}else t.push(\";\\n\")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push(\"{\\n\");for(var r=++this.indentLevel,a=0;a\")}var _=e.extendsType;_&&(u.push(\" extends \"),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(\" implements \"),this.visitTypeNode(p[0]);for(a=1;a\")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push(\"(\");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push(\"this: \"),this.visitTypeNode(_)),c){_&&t.push(\", \"),this.serializeParameter(u[0]);for(o=1;o \"),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(\" => \"),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(\")\"):(t.push(\"): \"),this.visitTypeNode(h)),p&&(t.push(\" \"),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push(\"if (\"),this.visitNode(e.condition),t.push(\") \");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(\";\\n\");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(\" else \"):t.push(\"else \"),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(\" as \"),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push(\"import \");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push(\"{\\n\");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o\")}var u=e.extendsType;u&&(a.push(\" extends \"),this.visitTypeNode(u)),a.push(\" {\\n\");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n\")}}r.push(\" = \"),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push(\"!\"),t&&(i.push(\": \"),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(\" = \"),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name=\"UnreachableError\",r.prototype.message=\"unreachable\",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name=\"AssertionError\",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,\"replaceAll\",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return\"number\"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return\"object\"==typeof e||\"string\"==typeof e},t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"string\"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,\"__isLong__\",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error(\"empty string\");if(\"NaN\"===e||\"Infinity\"===e||\"+Infinity\"===e||\"-Infinity\"===e)return A;if(\"number\"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error(\"interior hyphen\");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c=\"0\"+c;a=\"\"+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error(\"division by zero\");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&\"function\"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.preamble='import { base64 } from \"near-runtime-ts\";\\nimport { JSONEncoder } from \"assemblyscript-json\";\\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\\n'}])});","if(typeof __WEBPACK_EXTERNAL_MODULE__11__ === 'undefined') {var e = new Error(\"Cannot find module 'assemblyscript'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__11__;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 13;","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/./asc.js","webpack://asc/../node_modules/@protobufjs/utf8/index.js","webpack://asc/./util/colors.js","webpack://asc/./util/options.js","webpack://asc/./util/mkdirp.js","webpack://asc/../bindings/dist/transformerBundle.js","webpack://asc/external \"assemblyscript\"","webpack://asc/. sync","webpack://asc/../node_modules/browser-process-hrtime/index.js"],"names":["root","factory","exports","module","require","e","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__11__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","args","Array","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","g","Function","window","global","fs","utf8","colorsUtil","optionsUtil","mkdirp","EOL","SEP","nearBindings","nearLibEntry","removeAllListeners","assemblyscript","isDev","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","write","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","hrtime","times","formatTime","time","toFixed","printStats","stats","output","format","count","stdout","printRTTI","program","buildRTTI","register","project","e_ts","eval","stack","isBundle","version","options","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","nearEntry","array","arraybuffer","bindings/Date","bindings/Math","bindings/wasi_unstable","bindings/wasi","builtins","compat","dataview","date","diagnostics","error","fixedarray","heap","iterator","map","math","memory","number","polyfills","regexp","rt","rt/common","rt/index-full","rt/index-half","rt/index-none","rt/index-stub","rt/pure","rt/rtrace","rt/stub","rt/tlsf","set","shared/feature","shared/target","shared/typeinfo","string","symbol","table","typedarray","util/error","util/hash","util/memory","util/number","util/sort","util/string","vector","libDir","libFiles","sync","bundled","readFileSync","forEach","file","replace","definitionFiles","assembly","portable","stdDir","compileString","sources","input.ts","createMemoryStream","keys","val","isArray","String","main","readFile","writeFile","contents","listFiles","callback","readFileNode","writeFileNode","listFilesNode","opts","parse","noColors","supported","unknown","arg","yellow","trailing","err","red","help","out","color","white","cyan","baseDir","transforms","notNear","transform","parser","packages","Map","importPathMap","libPath","indexOf","parseFile","customLibDirs","lib","k","endsWith","j","libText","nodePaths","basePath","_path","_","dirFrom","reverse","getPaths","parseBacklog","sourcePath","sourceText","sysPath","nextFile","dependee","getDependee","startsWith","plainName","substring","indexName","traceResolution","_package","ascMain","has","package_json","JSON","mainFile","newPackage","realPath","_p","first","second","runtimeName","runtime","runtimePath","runtimeText","filename","applyTransform","finishParsing","normalizedPath","sort","optimizeLevel","shrinkLevel","optimize","max","compilerOptions","createOptions","setTarget","setNoAssert","noAssert","setImportMemory","importMemory","setSharedMemory","sharedMemory","setImportTable","importTable","setExplicitStart","explicitStart","setMemoryBase","memoryBase","setSourceMap","sourceMap","setOptimizeLevelHints","setNoUnsafe","noUnsafe","setGlobalAlias","use","aliases","part","alias","enable","flag","toUpperCase","enableFeature","compileProgram","dispose","validate","trapMode","runPasses","setOptimizeLevel","setShrinkLevel","setDebugInfo","debug","pass","noEmit","hasStdout","hasOutput","outFile","test","textFile","asmjsFile","binaryFile","wasm","sourceMapURL","toBinary","writeStdout","sourceRoot","text","stdName","sourceContents","stringify","asm","toAsmjs","idlFile","idl","buildIDL","tsdFile","tsd","buildTSD","wat","toText","printrtti","encoding","writeFileSync","files","readdirSync","used","allocBuffer","Buffer","allocUnsafe","Uint8Array","stream","chunk","buffer","reset","toBuffer","offset","toString","read","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","target","noLib","types","allowJs","fromCharCode","c1","c2","proc","isCI","base","colors","gray","GRAY","RESET","RED","green","GREEN","YELLOW","blue","BLUE","magenta","MAGENTA","CYAN","WHITE","config","option","default","match","exec","type","parseInt","parseFloat","indent","padding","eol","sb","description","line","_0777","made","undefined","mkdirSync","err0","stat","statSync","err1","isDirectory","__extends","setPrototypeOf","__proto__","constructor","a","Token","Range","u","SOURCE","NAMEDTYPE","FUNCTIONTYPE","TYPENAME","TYPEPARAMETER","PARAMETER","IDENTIFIER","ASSERTION","BINARY","CALL","CLASS","COMMA","ELEMENTACCESS","FALSE","FUNCTION","INSTANCEOF","LITERAL","NEW","NULL","PARENTHESIZED","PROPERTYACCESS","TERNARY","SUPER","THIS","TRUE","CONSTRUCTOR","UNARYPOSTFIX","UNARYPREFIX","BLOCK","BREAK","CONTINUE","DO","EMPTY","EXPORT","EXPORTDEFAULT","EXPORTIMPORT","EXPRESSION","FOR","IF","IMPORT","RETURN","SWITCH","THROW","TRY","VARIABLE","VOID","WHILE","CLASSDECLARATION","ENUMDECLARATION","ENUMVALUEDECLARATION","FIELDDECLARATION","FUNCTIONDECLARATION","IMPORTDECLARATION","INDEXSIGNATUREDECLARATION","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","TYPEDECLARATION","VARIABLEDECLARATION","DECORATOR","EXPORTMEMBER","SWITCHCASE","COMMENT","NodeKind","nodeIsConstantValue","nodeIsCallable","nodeIsGenericCallable","createTypeName","range","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","h","typeArguments","isNullable","createFunctionType","parameters","returnType","explicitThisType","createOmittedType","createTypeParameter","extendsType","defaultType","createParameter","initializer","parameterKind","createDecorator","v","decoratorKind","A","createComment","commentKind","y","isQuoted","createEmptyIdentifierExpression","createArrayLiteralExpression","R","elementExpressions","createAssertionExpression","assertionKind","expression","toType","createBinaryExpression","I","operator","left","right","createCallExpression","b","createClassExpression","L","declaration","createCommaExpression","C","expressions","createConstructorExpression","O","createElementAccessExpression","x","elementExpression","createFalseExpression","createFloatLiteralExpression","P","createFunctionExpression","D","createInstanceOfExpression","U","isType","createIntegerLiteralExpression","w","createNewExpression","M","createNullExpression","createObjectLiteralExpression","F","names","values","createParenthesizedExpression","K","createPropertyAccessExpression","B","createRegexpLiteralExpression","H","pattern","patternFlags","createTernaryExpression","G","condition","ifThen","ifElse","createStringLiteralExpression","Y","createSuperExpression","V","createThisExpression","z","createTrueExpression","X","createUnaryPostfixExpression","W","operand","createUnaryPrefixExpression","q","createBlockStatement","ne","statements","createBreakStatement","re","label","createClassDeclaration","se","flags","typeParameters","implementsTypes","members","decorators","createContinueStatement","ae","createDoStatement","oe","statement","createEmptyStatement","ue","createEnumDeclaration","ce","createEnumValueDeclaration","_e","createExportStatement","le","normalizePath","resolvePath","source","internalPath","we","isDeclare","createExportDefaultStatement","de","createExportImportStatement","pe","externalName","createExportMember","he","localName","exportedName","createExpressionStatement","Ee","createIfStatement","me","ifTrue","ifFalse","createImportStatement","Ne","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","Te","foreignName","createInterfaceDeclaration","ye","createFieldDeclaration","fe","createForStatement","Ae","incrementor","createFunctionDeclaration","ve","signature","body","arrowKind","createIndexSignatureDeclaration","te","keyType","valueType","createMethodDeclaration","Se","createNamespaceDeclaration","Re","createReturnStatement","ge","createSwitchStatement","be","cases","createSwitchCase","Ie","createThrowStatement","Le","createTryStatement","Ce","catchVariable","catchStatements","finallyStatements","createTypeDeclaration","Oe","createVariableStatement","Pe","createVariableDeclaration","xe","createVoidStatement","De","createWhileStatement","Ue","Node","TypeNode","kind","TypeName","NamedTypeNode","FunctionTypeNode","TypeParameterNode","DEFAULT","OPTIONAL","REST","ParameterKind","E","implicitFieldDeclaration","CommonFlags","NONE","is","isAny","assert","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","ParameterNode","DecoratorKind","decoratorNameToKind","DecoratorNode","LINE","TRIPLE","CommentKind","CommentNode","T","Expression","N","IdentifierExpression","FLOAT","INTEGER","STRING","REGEXP","ARRAY","OBJECT","LiteralKind","S","LiteralExpression","literalKind","ArrayLiteralExpression","PREFIX","AS","NONNULL","AssertionKind","AssertionExpression","BinaryExpression","configurable","CallExpression","ClassExpression","CommaExpression","CommonSymbols","ConstructorExpression","ElementAccessExpression","FloatLiteralExpression","FunctionExpression","InstanceOfExpression","IntegerLiteralExpression","NewExpression","null_","NullExpression","ObjectLiteralExpression","ParenthesizedExpression","PropertyAccessExpression","RegexpLiteralExpression","TernaryExpression","StringLiteralExpression","super_","SuperExpression","this_","ThisExpression","true_","TrueExpression","false_","FalseExpression","Q","UnaryExpression","UnaryPostfixExpression","UnaryPrefixExpression","Z","J","Statement","USER","USER_ENTRY","LIBRARY","LIBRARY_ENTRY","SourceKind","$","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","lastIndexOf","PATH_DELIMITER","simplePath","Source","ee","DeclarationStatement","IndexSignatureDeclaration","ie","VariableLikeDeclarationStatement","BlockStatement","BreakStatement","ClassDeclaration","ContinueStatement","DoStatement","EmptyStatement","EnumDeclaration","EnumValueDeclaration","ExportImportStatement","ExportMember","ExportStatement","ExportDefaultStatement","ExpressionStatement","parameterIndex","FieldDeclaration","ForStatement","ARROW_PARENTHESIZED","ARROW_SINGLE","ArrowKind","clone","FunctionDeclaration","IfStatement","ImportDeclaration","ImportStatement","InterfaceDeclaration","MethodDeclaration","NamespaceDeclaration","ReturnStatement","SwitchCase","SwitchStatement","ThrowStatement","TryStatement","TypeDeclaration","VariableDeclaration","VariableStatement","VoidStatement","WhileStatement","findDecorator","mangleInternalPath","isTypeOmitted","DECLARE","CONST","LET","STATIC","READONLY","ABSTRACT","PUBLIC","PRIVATE","PROTECTED","GET","SET","DEFINITE_ASSIGNMENT","AMBIENT","GENERIC","GENERIC_CONTEXT","INSTANCE","MODULE_EXPORT","MODULE_IMPORT","RESOLVED","COMPILED","INLINED","SCOPED","TRAMPOLINE","VIRTUAL","MAIN","QUOTED","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","INDEX_SUFFIX","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","boolean","native","indexof","valueof","returnof","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","FixedArray","Set","ArrayBufferView","ArrayBuffer","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","Feature","Target","Typeinfo","TypeinfoFlags","isPowerOf2","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DELETE","ELSE","ENUM","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","INTERFACE","IS","KEYOF","MODULE","NAMESPACE","OF","PACKAGE","TYPE","TYPEOF","VAR","WITH","YIELD","INVALID","OPENBRACE","CLOSEBRACE","OPENPAREN","CLOSEPAREN","OPENBRACKET","CLOSEBRACKET","DOT","DOT_DOT_DOT","SEMICOLON","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","EQUALS_GREATERTHAN","PLUS","MINUS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","QUESTION","COLON","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","AT","STRINGLITERAL","INTEGERLITERAL","FLOATLITERAL","ENDOFFILE","PREFER","ALWAYS","IdentifierHandling","tokenFromKeyword","tokenIsAlsoIdentifier","isIllegalVariableIdentifier","operatorTokenToString","debugInfoRef","pos","token","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","unsafeNext","MAX_VALUE","isDecimalDigit","DiagnosticCode","_0_expected","testInteger","isIdentifierStart","isKeywordCharacter","isIdentifierPart","isWhiteSpace","Invalid_character","peek","isLineBreak","skipIdentifier","skip","mark","discard","readIdentifier","readString","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","readRegexpPattern","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_new","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_mul","Digit_expected","Octal_digit_expected","Binary_digit_expected","readFloat","readDecimalFloat","readHexFloat","i64_low","i64_high","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","DiagnosticEmitter","Tokenizer","State","Operation_not_supported","Operation_is_unsafe","User_defined_0","Conversion_from_type_0_to_1_requires_an_explicit_cast","Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit","Type_0_cannot_be_changed_to_type_1","Type_0_cannot_be_reinterpreted_as_type_1","Basic_type_0_cannot_be_nullable","Cannot_export_a_mutable_global","Mutable_value_cannot_be_inlined","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","Unmanaged_classes_cannot_implement_interfaces","Implementation_0_must_match_the_signature_1","Class_0_is_sealed_and_cannot_be_extended","Decorator_0_is_not_valid_here","Duplicate_decorator","An_allocator_must_be_present_to_use_0","Optional_parameter_must_have_an_initializer","Constructor_of_class_0_must_not_require_any_arguments","Function_0_cannot_be_inlined_into_itself","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","Optional_properties_are_not_supported","Expression_must_be_a_compile_time_constant","Module_cannot_have_multiple_start_functions","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","Expression_is_unsafe","Expression_is_never_null","Identifier_expected","A_file_cannot_have_a_reference_to_itself","Trailing_comma_not_allowed","Unexpected_token","A_rest_parameter_must_be_last_in_a_parameter_list","Parameter_cannot_have_question_mark_and_initializer","A_required_parameter_cannot_follow_an_optional_parameter","Statements_are_not_allowed_in_ambient_contexts","Initializers_are_not_allowed_in_ambient_contexts","_0_modifier_cannot_be_used_here","A_rest_parameter_cannot_be_optional","A_rest_parameter_cannot_have_an_initializer","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","Enum_member_must_have_initializer","Type_parameters_cannot_appear_on_a_constructor_declaration","Type_annotation_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","A_set_accessor_cannot_have_a_return_type_annotation","Type_parameter_list_cannot_be_empty","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_return_statement_can_only_be_used_within_a_function_body","Expression_expected","Type_expected","A_default_clause_cannot_appear_more_than_once_in_a_switch_statement","Duplicate_label_0","An_export_assignment_cannot_have_modifiers","_case_or_default_expected","_super_must_be_followed_by_an_argument_list_or_member_access","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","Type_argument_expected","String_literal_expected","Line_break_not_permitted_here","Declaration_expected","_const_declarations_must_be_initialized","Interface_declaration_cannot_have_implements_clause","An_implementation_cannot_be_declared_in_ambient_contexts","Decorators_are_not_valid_here","_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","A_definite_assignment_assertion_is_not_permitted_in_this_context","A_class_may_only_extend_another_class","A_parameter_property_cannot_be_declared_using_a_rest_parameter","Duplicate_identifier_0","Cannot_find_name_0","Module_0_has_no_exported_member_1","Generic_type_0_requires_1_type_argument_s","Type_0_is_not_generic","Type_0_is_not_assignable_to_type_1","Index_signature_is_missing_in_type_0","_this_cannot_be_referenced_in_current_location","_super_can_only_be_referenced_in_a_derived_class","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","Property_0_does_not_exist_on_type_1","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","A_function_whose_declared_type_is_not_void_must_return_a_value","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access","Operator_0_cannot_be_applied_to_types_1_and_2","A_super_call_must_be_the_first_statement_in_the_constructor","Constructors_for_derived_classes_must_contain_a_super_call","_get_and_set_accessor_must_have_the_same_type","Constructor_implementation_is_missing","Function_implementation_is_missing_or_not_immediately_following_the_declaration","Multiple_constructor_implementations_are_not_allowed","Duplicate_function_implementation","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged","Type_0_has_no_property_1","The_0_operator_cannot_be_applied_to_type_1","In_const_enum_declarations_member_initializer_must_be_constant_expression","Export_declaration_conflicts_with_exported_declaration_of_0","Object_is_possibly_null","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","The_target_of_an_assignment_must_be_a_variable_or_a_property_access","Index_signature_in_type_0_only_permits_reading","Expected_0_arguments_but_got_1","Expected_at_least_0_arguments_but_got_1","Expected_0_type_arguments_but_got_1","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","Namespace_0_has_no_exported_member_1","Required_type_parameters_may_not_follow_optional_type_parameters","Duplicate_property_0","Type_0_has_no_call_signatures","File_0_not_found","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","diagnosticCodeToString","includes","ASTBuilder","build","typeMapping","nonNullableTypes","exportedClasses","wrappedFuncs","nearFiles","visitClassDeclaration","visitFunctionDeclaration","generateWrapperFunction","add","typeName","isGeneric","getFields","preamble","some","BaseVisitor","afterParse","donelog","delete","seenlog","SIGN_EXTENSION","MUTABLE_GLOBAL","BULK_MEMORY","SIMD","THREADS","WASM32","WASM64","JS","__decorate","getOwnPropertyDescriptor","Reflect","decorate","ARRAYBUFFERVIEW","MAP","ACYCLIC","VALUE_ALIGN_0","VALUE_ALIGN_1","VALUE_ALIGN_2","VALUE_ALIGN_3","VALUE_ALIGN_4","VALUE_SIGNED","VALUE_FLOAT","VALUE_NULLABLE","VALUE_MANAGED","KEY_ALIGN_0","KEY_ALIGN_1","KEY_ALIGN_2","KEY_ALIGN_3","KEY_ALIGN_4","KEY_SIGNED","KEY_FLOAT","KEY_NULLABLE","KEY_MANAGED","INFO","WARNING","ERROR","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCategory","diagnosticCategoryToString","COLOR_RESET","diagnosticCategoryToColor","relatedRange","category","message","createInfo","createWarning","createError","withRange","withRelatedRange","column","DiagnosticMessage","formatDiagnosticMessage","formatDiagnosticContext","emitDiagnostic","info","infoRelated","warning","warningRelated","errorRelated","bitsetIs","i64_ne","i64_and","i64_one","i64_zero","bitsetSet","i64_or","i64_not","LINEFEED","CARRIAGERETURN","LINESEPARATOR","PARAGRAPHSEPARATOR","NEXTLINE","SPACE","NONBREAKINGSPACE","ENQUAD","EMQUAD","ENSPACE","EMSPACE","THREEPEREMSPACE","FOURPEREMSPACE","SIXPEREMSPACE","FIGURESPACE","PUNCTUATIONSPACE","THINSPACE","HAIRSPACE","ZEROWIDTHSPACE","NARROWNOBREAKSPACE","IDEOGRAPHICSPACE","MATHEMATICALSPACE","OGHAM","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","BACKSLASH","BACKTICK","DOLLAR","DOUBLEQUOTE","HASH","SINGLEQUOTE","BACKSPACE","FORMFEED","BYTEORDERMARK","TAB","VERTICALTAB","CharCode","__values","done","__read","return","makeArray","unchecked","makeSet","makeMap","readI8","writeI8","readI16","writeI16","readI32","writeI32","readI64","writeI64","readF32","i32_as_f32","writeF32","f32_as_i32","readF64","i64_as_f64","writeF64","f64_as_i64","indentLevel","visitNode","visitSource","visitNamedTypeNode","visitFunctionTypeNode","visitTypeParameter","visitIdentifierExpression","visitAssertionExpression","visitBinaryExpression","visitCallExpression","visitClassExpression","visitCommaExpression","visitElementAccessExpression","visitFunctionExpression","visitInstanceOfExpression","visitLiteralExpression","visitNewExpression","visitParenthesizedExpression","visitPropertyAccessExpression","visitTernaryExpression","visitUnaryPostfixExpression","visitUnaryPrefixExpression","visitBlockStatement","visitBreakStatement","visitContinueStatement","visitDoStatement","visitEmptyStatement","visitExportStatement","visitExportDefaultStatement","visitExportImportStatement","visitExpressionStatement","visitForStatement","visitIfStatement","visitImportStatement","visitReturnStatement","visitSwitchStatement","visitThrowStatement","visitTryStatement","visitVariableStatement","visitWhileStatement","visitEnumDeclaration","visitEnumValueDeclaration","visitFieldDeclaration","visitImportDeclaration","visitIndexSignatureDeclaration","visitInterfaceDeclaration","visitMethodDeclaration","visitNamespaceDeclaration","visitTypeDeclaration","visitVariableDeclaration","serializeDecorator","visitExportMember","serializeParameter","visitSwitchCase","visitNodeAndTerminate","visitTypeNode","visitTypeName","visitStringLiteral","visitArrayLiteralExpression","visitObjectLiteralExpression","visitFunctionCommon","visitFloatLiteralExpression","visitIntegerLiteralExpression","visitStringLiteralExpression","visitRegexpLiteralExpression","i64_to_string","visitUnaryExpression","serializeExternalModifiers","serializeAccessModifiers","captureStackTrace","defineProperties","MIN_VALUE","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz","clz32","ctz","popcnt","rotl","rotr","abs","ceil","floor","nearest","trunc","round","select","sqrt","copysign","sign","bswap","bswap16","unreachable","changetype","fromCharCodes","fromCodePoints","fromCodePoint","replaceAll","isInteger","Number","isFloat","isReference","isFunction","isString","isArrayLike","isDefined","isConstant","fmod","fmodf","JSMath","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","allocate","__memory_allocate","fill","__memory_fill","__memory_free","copy","__memory_copy","copyWithin","__memory_reset","store","__store","HEAP","load","__load","unmanaged","Long","ZERO","ONE","fromBits","low","high","i64_sub","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","and","or","i64_xor","xor","shl","i64_shr","shr","i64_shr_u","shru","not","i64_eq","eq","i64_align","fromInt","i64_is_i8","i64_is_i16","i64_is_i32","i64_is_u8","i64_is_u16","i64_is_u32","i64_is_bool","fromNumber","i64_is_f32","gte","lte","i64_is_f64","i64_to_f32","toNumber","i64_to_f64","WebAssembly","Instance","Module","unsigned","__isLong__","isLong","isNaN","neg","RangeError","fromString","fromValue","UZERO","UONE","NEG_ONE","MAX_UNSIGNED_VALUE","toInt","isZero","isNegative","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","greaterThan","gt","greaterThanOrEqual","compare","negate","subtract","multiply","get_high","divide","div_u","div_s","log","LN2","modulo","rem_u","rem_s","rem","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","depth","_visit","visitDecoratorNode","visitParameter","visitSuperExpression","visitFalseExpression","visitTrueExpression","visitThisExpression","visitNullExperssion","visitConstructorExpression","visitVoidStatement","visitComment","AbstractVisitor","writeString","writeNode","DefaultWriter","writer","entries","webpackEmptyContext","req","id","previousTimestamp","clocktime","performanceNow","performance","seconds","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"assemblyscript\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__11__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Compiler frontend for node.js\n *\n * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to\n * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources\n * directly through ts-node if distribution files are not present (indicated by a `-dev` version).\n *\n * Can also be packaged as a bundle suitable for in-browser use with the standard library injected\n * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details.\n *\n * @module cli/asc\n */\n\n// Use \".\" instead of \"/\" as cwd in browsers\nif (process.browser) process.cwd = function() { return \".\"; };\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst utf8 = require(\"@protobufjs/utf8\");\nconst colorsUtil = require(\"./util/colors\");\nconst optionsUtil = require(\"./util/options\");\nconst mkdirp = require(\"./util/mkdirp\");\nconst EOL = process.platform === \"win32\" ? \"\\r\\n\" : \"\\n\";\nconst SEP = process.platform === \"win32\" ? \"\\\\\" : \"/\";\nconst nearBindings = require(\"../bindings/dist/transformerBundle.js\");\nconst nearLibEntry = path.join(__dirname, \"..\", \"bindings\", \"assembly\", \"nearEntry.ts\");\n// global.Binaryen = require(\"../lib/binaryen\");\n\n// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional\n// useless code fragment on top of an actual error. suppress this:\nif (process.removeAllListeners) process.removeAllListeners(\"uncaughtException\");\n\n// Use distribution files if present, otherwise run the sources directly\nvar assemblyscript, isDev = false;\n(() => {\n try { // `asc` on the command line\n assemblyscript = require(\"../dist/assemblyscript.js\");\n } catch (e) {\n try { // `asc` on the command line without dist files\n require(\"ts-node\").register({ project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\") });\n require(\"../src/glue/js\");\n assemblyscript = require(\"../src\");\n isDev = true;\n } catch (e_ts) {\n try { // `require(\"dist/asc.js\")` in explicit browser tests\n assemblyscript = eval(\"require('./assemblyscript')\");\n } catch (e) {\n // combine both errors that lead us here\n e.stack = e_ts.stack + \"\\n---\\n\" + e.stack;\n throw e;\n }\n }\n }\n})();\n\n/** Whether this is a webpack bundle or not. */\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\n\n/** Whether asc runs the sources directly or not. */\nexports.isDev = isDev;\n\n/** AssemblyScript version. */\nexports.version = exports.isBundle ? BUNDLE_VERSION : require(\"../package.json\").version;\n\n/** Available CLI options. */\nexports.options = require(\"./asc.json\");\n\n/** Common root used in source maps. */\nexports.sourceMapRoot = \"assemblyscript:///\";\n\n/** Prefix used for library files. */\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\n\n/** Default Binaryen optimization level. */\nexports.defaultOptimizeLevel = 3;\n\n/** Default Binaryen shrink level. */\nexports.defaultShrinkLevel = 1;\n\n/** Bundled library files. */\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle\n const libDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\n const libFiles = require(\"glob\").sync(\"**/!(*.d).ts\", { cwd: libDir })\n const bundled = {\n \"nearEntry\": fs.readFileSync(nearLibEntry, \"utf8\")\n };\n libFiles.forEach(file => bundled[file.replace(/\\.ts$/, \"\")] = fs.readFileSync(path.join(libDir, file), \"utf8\" ));\n return bundled;\n})();\n\n/** Bundled definition files. */\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle\n const stdDir = path.join(__dirname, \"..\", \"std\");\n return {\n \"assembly\": fs.readFileSync(path.join(stdDir, \"assembly\", \"index.d.ts\"), \"utf8\"),\n \"portable\": fs.readFileSync(path.join(stdDir, \"portable\", \"index.d.ts\"), \"utf8\")\n };\n})();\n\n/** Convenience function that parses and compiles source strings directly. */\nexports.compileString = (sources, options) => {\n if (typeof sources === \"string\") sources = { \"input.ts\": sources };\n const output = Object.create({\n stdout: createMemoryStream(),\n stderr: createMemoryStream()\n });\n var argv = [\n \"--binaryFile\", \"binary\",\n \"--textFile\", \"text\",\n ];\n Object.keys(options || {}).forEach(key => {\n var val = options[key];\n if (Array.isArray(val)) val.forEach(val => argv.push(\"--\" + key, String(val)));\n else argv.push(\"--\" + key, String(val));\n });\n exports.main(argv.concat(Object.keys(sources)), {\n stdout: output.stdout,\n stderr: output.stderr,\n readFile: name => sources.hasOwnProperty(name) ? sources[name] : null,\n writeFile: (name, contents) => output[name] = contents,\n listFiles: () => []\n });\n return output;\n}\n\n/** Runs the command line utility using the specified arguments array. */\nexports.main = function main(argv, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (!options) {\n options = {};\n }\n\n const stdout = options.stdout || process.stdout;\n const stderr = options.stderr || process.stderr;\n const readFile = options.readFile || readFileNode;\n const writeFile = options.writeFile || writeFileNode;\n const listFiles = options.listFiles || listFilesNode;\n const stats = options.stats || createStats();\n\n // Output must be specified if not present in the environment\n if (!stdout) throw Error(\"'options.stdout' must be specified\");\n if (!stderr) throw Error(\"'options.stderr' must be specified\");\n\n const opts = optionsUtil.parse(argv, exports.options);\n const args = opts.options;\n argv = opts.arguments;\n if (args.noColors) {\n colorsUtil.stdout.supported =\n colorsUtil.stderr.supported = false;\n } else {\n colorsUtil.stdout = colorsUtil.from(stdout);\n colorsUtil.stderr = colorsUtil.from(stderr);\n }\n\n // Check for unknown arguments\n if (opts.unknown.length) {\n opts.unknown.forEach(arg => {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unknown option '\" + arg + \"'\" + EOL);\n });\n }\n\n // Check for trailing arguments\n if (opts.trailing.length) {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unsupported trailing arguments: \" + opts.trailing.join(\" \") + EOL);\n }\n\n // Use default callback if none is provided\n if (!callback) callback = function defaultCallback(err) {\n var code = 0;\n if (err) {\n stderr.write(colorsUtil.stderr.red(\"ERROR: \") + err.stack.replace(/^ERROR: /i, \"\") + EOL);\n code = 1;\n }\n return code;\n };\n\n // Just print the version if requested\n if (args.version) {\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + EOL);\n return callback(null);\n }\n // Print the help message if requested or no source files are provided\n if (args.help || !argv.length) {\n var out = args.help ? stdout : stderr;\n var color = args.help ? colorsUtil.stdout : colorsUtil.stderr;\n out.write([\n color.white(\"SYNTAX\"),\n \" \" + color.cyan(\"asc\") + \" [entryFile ...] [options]\",\n \"\",\n color.white(\"EXAMPLES\"),\n \" \" + color.cyan(\"asc\") + \" hello.ts\",\n \" \" + color.cyan(\"asc\") + \" hello.ts -b hello.wasm -t hello.wat\",\n \" \" + color.cyan(\"asc\") + \" hello1.ts hello2.ts -b -O > hello.wasm\",\n \"\",\n color.white(\"OPTIONS\"),\n ].concat(\n optionsUtil.help(exports.options, 24, EOL)\n ).join(EOL) + EOL);\n return callback(null);\n }\n\n // I/O must be specified if not present in the environment\n if (!fs.readFileSync) {\n if (readFile === readFileNode) throw Error(\"'options.readFile' must be specified\");\n if (writeFile === writeFileNode) throw Error(\"'options.writeFile' must be specified\");\n if (listFiles === listFilesNode) throw Error(\"'options.listFiles' must be specified\");\n }\n\n // Set up base directory\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : \".\";\n\n // Set up transforms\n const transforms = args.notNear ? [] : [nearBindings];\n //Add near's bindings by default\n if (args.transform) {\n args.transform.forEach(transform =>\n transforms.push(\n require(\n path.isAbsolute(transform = transform.trim())\n ? transform\n : path.join(process.cwd(), transform)\n )\n )\n );\n }\n function applyTransform(name, ...args) {\n transforms.forEach(transform => {\n if (typeof transform[name] === \"function\") transform[name](...args);\n });\n }\n\n // Begin parsing\n var parser = null;\n\n // Maps package names to parent directory\n var packages = new Map();\n var importPathMap = new Map();\n\n // Include library files\n Object.keys(exports.libraryFiles).forEach(libPath => {\n if (libPath.indexOf(\"/\") >= 0) return; // in sub-directory: imported on demand\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n exports.libraryFiles[libPath],\n exports.libraryPrefix + libPath + \".ts\",\n false,\n parser\n );\n });\n });\n const customLibDirs = [];\n if (args.lib) {\n let lib = args.lib;\n if (typeof lib === \"string\") lib = lib.split(\",\");\n Array.prototype.push.apply(customLibDirs, lib.map(lib => lib.trim()));\n for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom\n let libDir = customLibDirs[i];\n let libFiles;\n if (libDir.endsWith(\".ts\")) {\n libFiles = [ path.basename(libDir) ];\n libDir = path.dirname(libDir);\n } else {\n libFiles = listFiles(libDir, baseDir) || [];\n }\n for (let j = 0, l = libFiles.length; j < l; ++j) {\n let libPath = libFiles[j];\n let libText = readFile(libPath, libDir);\n if (libText === null) return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\n stats.parseCount++;\n exports.libraryFiles[libPath.replace(/\\.ts$/, \"\")] = libText;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n libText,\n exports.libraryPrefix + libPath,\n false,\n parser\n );\n });\n }\n }\n }\n args.path = args.path || [];\n // Find all valid node_module paths starting at baseDir\n function nodePaths(basePath, _path) {\n return basePath.split(SEP)\n .map((_, i, arr) => {\n let dir = arr.slice(0, i + 1).join(SEP) || SEP;\n let dirFrom = path.relative(baseDir, dir);\n return path.join(dirFrom, _path);\n })\n .filter(dir => listFiles(dir, baseDir))\n .reverse();\n }\n function getPaths(basePath) {\n let paths = args.path.map(p => nodePaths(basePath, p));\n return nodePaths(basePath, \"node_modules\").concat(...paths)\n }\n\n // Parses the backlog of imported files after including entry files\n function parseBacklog() {\n var sourcePath, sourceText, sysPath;\n // dependee is the path of the file that depends on sourcePath\n while ((sourcePath = parser.nextFile()) != null) {\n dependee = importPathMap.get(assemblyscript.getDependee(parser, sourcePath)) || baseDir;\n sourceText = null;\n sysPath = null;\n \n // Load library file if explicitly requested\n if (sourcePath.startsWith(exports.libraryPrefix)) {\n const plainName = sourcePath.substring(exports.libraryPrefix.length);\n const indexName = sourcePath.substring(exports.libraryPrefix.length) + \"/index\";\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n sourceText = readFile(plainName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(customLibDirs[i], plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(customLibDirs[i], indexName + \".ts\");\n break;\n }\n }\n }\n }\n\n // Otherwise try nextFile.ts, nextFile/index.ts, ~lib/nextFile.ts, ~lib/nextFile/index.ts\n } else {\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(plainName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n sysPath = path.join(baseDir, sourcePath);\n } else {\n sourceText = readFile(indexName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n } else if (!plainName.startsWith(\".\")) {\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n const dir = customLibDirs[i];\n sourceText = readFile(plainName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(dir, plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(dir, indexName + \".ts\");\n break;\n }\n }\n }\n }\n }\n }\n }\n /*\n In this case the library wasn't found so we check paths\n */\n if (sourceText == null) {\n if (args.traceResolution) {\n stderr.write(\"Looking for '\" + sourcePath + \"' imported by '\" + dependee + \"'\" + EOL);\n }\n paths = getPaths(path.join(baseDir, dependee));\n let _package = sourcePath.replace(/\\~lib\\/([^\\/]*).*/, \"$1\");\n for (let _path of paths) {\n let ascMain = (() => {\n if (packages.has(_package)) {\n return packages.get(_package);\n }\n let p = path.join(_path, _package, \"package.json\");\n let res = readFile(p, baseDir);\n if (res) {\n let package_json;\n try {\n package_json = JSON.parse(res);\n } catch (e) {\n return callback(Error(\"Parsing \" + p + \" failed\"));\n }\n let mainFile = package_json.ascMain;\n if (mainFile && (typeof mainFile === 'string')) {\n let newPackage = mainFile.replace(/(.*)\\/index\\.ts/, '$1');\n packages.set(_package, newPackage);\n return newPackage;\n }\n }\n return \"assembly\";\n })()\n let realPath = (_p) => {\n if (_p.startsWith(exports.libraryPrefix)){\n _p = _p.substring(exports.libraryPrefix.length);\n }\n let first = _p.substring(0, _p.indexOf(\"/\"));\n let second = _p.substring(_p.indexOf(\"/\") + 1);\n return path.join(_path, first, ascMain, second);\n }\n if (args.traceResolution) {\n stderr.write(\" in '\" + realPath(sourcePath) + \"'\");\n }\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(realPath(plainName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n } else {\n sourceText = readFile(realPath(indexName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n }\n }\n if (sourceText !== null) {\n if (args.traceResolution) {\n stderr.write(EOL + \" -> '\" + realPath(sourcePath) + \"'\" + EOL);\n }\n let newPath = path.join(_path, _package);\n sysPath = newPath;\n break;\n }\n if (args.traceResolution) {\n stderr.write(EOL);\n }\n }\n }\n if (sourceText == null) {\n return callback(Error(\"Import file '\" + sourcePath + \".ts' not found.\"));\n }\n importPathMap.set(sourcePath.replace(/\\.ts$/, \"\"), sysPath);\n stats.parseCount++;\n stats.parseTime += measure(() => {\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\n });\n }\n if (checkDiagnostics(parser, stderr)) {\n return callback(Error(\"Parse error\"));\n }\n }\n\n // Include runtime template before entry files so its setup runs first\n {\n let runtimeName = String(args.runtime);\n let runtimePath = \"rt/index-\" + runtimeName;\n let runtimeText = exports.libraryFiles[runtimePath];\n if (runtimeText == null) {\n runtimePath = runtimeName;\n runtimeText = readFile(runtimePath + \".ts\", baseDir);\n if (runtimeText == null) {\n return callback(Error(\"Runtime '\" + runtimeName + \"' not found.\"));\n }\n } else {\n runtimePath = \"~lib/\" + runtimePath;\n }\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser);\n });\n }\n\n // Include entry files\n for (let i = 0, k = argv.length; i < k; ++i) {\n const filename = argv[i];\n\n let sourcePath = String(filename).replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\n // Setting the path to relative path\n sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath) : sourcePath;\n\n // Try entryPath.ts, then entryPath/index.ts\n let sourceText = readFile(sourcePath + \".ts\", baseDir);\n if (sourceText === null) {\n sourceText = readFile(sourcePath + \"/index.ts\", baseDir);\n if (sourceText === null) {\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\n } else {\n sourcePath += \"/index.ts\";\n }\n } else {\n sourcePath += \".ts\";\n }\n\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\n });\n }\n\n // Parse entry files\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Call afterParse transform hook\n applyTransform(\"afterParse\", parser, writeFile, baseDir);\n\n // Parse additional files, if any\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Finish parsing\n const program = assemblyscript.finishParsing(parser);\n\n // Print files and exit if listFiles\n if (args.listFiles) {\n stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL);\n return callback(null);\n }\n\n // Set up optimization levels\n var optimizeLevel = 0;\n var shrinkLevel = 0;\n if (args.optimize) {\n optimizeLevel = exports.defaultOptimizeLevel;\n shrinkLevel = exports.defaultShrinkLevel;\n }\n if (typeof args.optimizeLevel === \"number\") {\n optimizeLevel = args.optimizeLevel;\n }\n if (typeof args.shrinkLevel === \"number\") {\n shrinkLevel = args.shrinkLevel;\n }\n optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3);\n shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2);\n\n // Begin compilation\n const compilerOptions = assemblyscript.createOptions();\n assemblyscript.setTarget(compilerOptions, 0);\n assemblyscript.setNoAssert(compilerOptions, args.noAssert);\n assemblyscript.setImportMemory(compilerOptions, args.importMemory);\n assemblyscript.setSharedMemory(compilerOptions, args.sharedMemory);\n assemblyscript.setImportTable(compilerOptions, args.importTable);\n assemblyscript.setExplicitStart(compilerOptions, args.explicitStart);\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\n assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel);\n assemblyscript.setNoUnsafe(compilerOptions, args.noUnsafe);\n\n // Initialize default aliases\n assemblyscript.setGlobalAlias(compilerOptions, \"Math\", \"NativeMath\");\n assemblyscript.setGlobalAlias(compilerOptions, \"Mathf\", \"NativeMathf\");\n assemblyscript.setGlobalAlias(compilerOptions, \"abort\", \"~lib/builtins/abort\");\n assemblyscript.setGlobalAlias(compilerOptions, \"trace\", \"~lib/builtins/trace\");\n\n // Add or override aliases if specified\n if (args.use) {\n let aliases = args.use;\n for (let i = 0, k = aliases.length; i < k; ++i) {\n let part = aliases[i];\n let p = part.indexOf(\"=\");\n if (p < 0) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n let alias = part.substring(0, p).trim();\n let name = part.substring(p + 1).trim();\n if (!alias.length) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n assemblyscript.setGlobalAlias(compilerOptions, alias, name);\n }\n }\n\n // Enable additional features if specified\n var features = args.enable;\n if (features != null) {\n if (typeof features === \"string\") features = features.split(\",\");\n for (let i = 0, k = features.length; i < k; ++i) {\n let name = features[i].trim();\n let flag = assemblyscript[\"FEATURE_\" + name.replace(/\\-/g, \"_\").toUpperCase()];\n if (!flag) return callback(Error(\"Feature '\" + name + \"' is unknown.\"));\n assemblyscript.enableFeature(compilerOptions, flag);\n }\n }\n\n var module;\n stats.compileCount++;\n try {\n stats.compileTime += measure(() => {\n module = assemblyscript.compileProgram(program, compilerOptions);\n });\n } catch (e) {\n return callback(e);\n }\n if (checkDiagnostics(parser, stderr)) {\n if (module) module.dispose();\n return callback(Error(\"Compile error\"));\n }\n\n // Validate the module if requested\n if (args.validate) {\n stats.validateCount++;\n stats.validateTime += measure(() => {\n if (!module.validate()) {\n module.dispose();\n return callback(Error(\"Validate error\"));\n }\n });\n }\n\n // Set Binaryen-specific options\n if (args.trapMode === \"clamp\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-clamp\" ]);\n });\n } else if (args.trapMode === \"js\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-js\" ]);\n });\n } else if (args.trapMode !== \"allow\") {\n module.dispose();\n return callback(Error(\"Unsupported trap mode\"));\n }\n\n // Implicitly run costly non-LLVM optimizations on -O3 or -Oz\n // see: https://github.com/WebAssembly/binaryen/pull/1596\n if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;\n\n module.setOptimizeLevel(optimizeLevel);\n module.setShrinkLevel(shrinkLevel);\n module.setDebugInfo(args.debug);\n\n var runPasses = [];\n if (args.runPasses) {\n if (typeof args.runPasses === \"string\") {\n args.runPasses = args.runPasses.split(\",\");\n }\n if (args.runPasses.length) {\n args.runPasses.forEach(pass => {\n if (runPasses.indexOf(pass) < 0)\n runPasses.push(pass);\n });\n }\n }\n\n // Optimize the module if requested\n if (optimizeLevel > 0 || shrinkLevel > 0) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.optimize();\n });\n }\n\n // Run additional passes if requested\n if (runPasses.length) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses(runPasses.map(pass => pass.trim()));\n });\n }\n\n // Prepare output\n if (!args.noEmit) {\n let hasStdout = false;\n let hasOutput = false;\n\n if (args.outFile != null) {\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null) {\n args.textFile = args.outFile;\n } else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null) {\n args.asmjsFile = args.outFile;\n } else if (args.binaryFile == null) {\n args.binaryFile = args.outFile;\n }\n }\n\n // Write binary\n if (args.binaryFile != null) {\n let sourceMapURL = args.sourceMap != null\n ? args.sourceMap.length\n ? args.sourceMap\n : path.basename(args.binaryFile) + \".map\"\n : null;\n\n let wasm;\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wasm = module.toBinary(sourceMapURL)\n });\n\n if (args.binaryFile.length) {\n writeFile(args.binaryFile, wasm.output, baseDir);\n } else {\n writeStdout(wasm.output);\n hasStdout = true;\n }\n hasOutput = true;\n\n // Post-process source map\n if (wasm.sourceMap != null) {\n if (args.binaryFile.length) {\n let sourceMap = JSON.parse(wasm.sourceMap);\n sourceMap.sourceRoot = exports.sourceMapRoot;\n sourceMap.sources.forEach((name, index) => {\n let text = null;\n if (name.startsWith(exports.libraryPrefix)) {\n let stdName = name.substring(exports.libraryPrefix.length).replace(/\\.ts$/, \"\");\n if (exports.libraryFiles.hasOwnProperty(stdName)) {\n text = exports.libraryFiles[stdName];\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n text = readFile(name.substring(exports.libraryPrefix.length), customLibDirs[i]);\n if (text !== null) break;\n }\n }\n } else {\n text = readFile(name, baseDir);\n }\n if (text === null) {\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\n }\n if (!sourceMap.sourceContents) sourceMap.sourceContents = [];\n sourceMap.sourceContents[index] = text;\n });\n writeFile(path.join(\n path.dirname(args.binaryFile),\n path.basename(sourceMapURL)\n ).replace(/^\\.\\//, \"\"), JSON.stringify(sourceMap), baseDir);\n } else {\n stderr.write(\"Skipped source map (stdout already occupied)\" + EOL);\n }\n }\n }\n\n // Write asm.js\n if (args.asmjsFile != null) {\n let asm;\n if (args.asmjsFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeFile(args.asmjsFile, asm, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeStdout(asm);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write WebIDL\n if (args.idlFile != null) {\n let idl;\n if (args.idlFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeFile(args.idlFile, idl, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeStdout(idl);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write TypeScript definition\n if (args.tsdFile != null) {\n let tsd;\n if (args.tsdFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeFile(args.tsdFile, tsd, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeStdout(tsd);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write text (must be last)\n if (args.textFile != null || !hasOutput) {\n let wat;\n if (args.textFile && args.textFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText();\n });\n writeFile(args.textFile, wat, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText()\n });\n writeStdout(wat);\n }\n }\n }\n\n module.dispose();\n if (args.measure) {\n printStats(stats, stderr);\n }\n if (args.printrtti) {\n printRTTI(program, stderr);\n }\n return callback(null);\n\n function readFileNode(filename, baseDir) {\n let name = path.resolve(baseDir, filename);\n try {\n let text;\n stats.readCount++;\n stats.readTime += measure(() => {\n text = fs.readFileSync(name, { encoding: \"utf8\" });\n });\n return text;\n } catch (e) {\n return null;\n }\n }\n\n function writeFileNode(filename, contents, baseDir) {\n try {\n stats.writeCount++;\n stats.writeTime += measure(() => {\n mkdirp(path.join(baseDir, path.dirname(filename)));\n if (typeof contents === \"string\") {\n fs.writeFileSync(path.join(baseDir, filename), contents, { encoding: \"utf8\" } );\n } else {\n fs.writeFileSync(path.join(baseDir, filename), contents);\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function listFilesNode(dirname, baseDir) {\n var files;\n try {\n stats.readTime += measure(() => {\n files = fs.readdirSync(path.join(baseDir, dirname)).filter(file => /^(?!.*\\.d\\.ts$).*\\.ts$/.test(file));\n });\n return files;\n } catch (e) {\n return null;\n }\n }\n\n function writeStdout(contents) {\n if (!writeStdout.used) {\n stats.writeCount++;\n writeStdout.used = true;\n }\n stats.writeTime += measure(() => {\n if (typeof contents === \"string\") {\n stdout.write(contents, { encoding: \"utf8\" });\n } else {\n stdout.write(contents);\n }\n });\n }\n}\n\n/** Checks diagnostics emitted so far for errors. */\nfunction checkDiagnostics(emitter, stderr) {\n var diagnostic;\n var hasErrors = false;\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\n if (stderr) {\n stderr.write(\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\n EOL + EOL\n );\n }\n if (assemblyscript.isError(diagnostic)) hasErrors = true;\n }\n return hasErrors;\n}\n\nexports.checkDiagnostics = checkDiagnostics;\n\n/** Creates an empty set of stats. */\nfunction createStats() {\n return {\n readTime: 0,\n readCount: 0,\n writeTime: 0,\n writeCount: 0,\n parseTime: 0,\n parseCount: 0,\n compileTime: 0,\n compileCount: 0,\n emitTime: 0,\n emitCount: 0,\n validateTime: 0,\n validateCount: 0,\n optimizeTime: 0,\n optimizeCount: 0\n };\n}\n\nexports.createStats = createStats;\n\nif (!process.hrtime) process.hrtime = require(\"browser-process-hrtime\");\n\n/** Measures the execution time of the specified function. */\nfunction measure(fn) {\n const start = process.hrtime();\n fn();\n const times = process.hrtime(start);\n return times[0] * 1e9 + times[1];\n}\n\nexports.measure = measure;\n\n/** Formats a high resolution time to a human readable string. */\nfunction formatTime(time) {\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\n}\n\nexports.formatTime = formatTime;\n\n/** Formats and prints out the contents of a set of stats. */\nfunction printStats(stats, output) {\n function format(time, count) {\n return formatTime(time);\n }\n (output || process.stdout).write([\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\n ].join(EOL) + EOL);\n}\n\nexports.printStats = printStats;\n\n/** Prints runtime type information. */\nfunction printRTTI(program, output) {\n if (!output) output = process.stderr;\n output.write(\"# Runtime type information (RTTI)\\n\");\n output.write(assemblyscript.buildRTTI(program));\n}\n\nexports.printRTTI = printRTTI;\n\nvar allocBuffer = typeof global !== \"undefined\" && global.Buffer\n ? global.Buffer.allocUnsafe || function(len) { return new global.Buffer(len); }\n : function(len) { return new Uint8Array(len) };\n\n/** Creates a memory stream that can be used in place of stdout/stderr. */\nfunction createMemoryStream(fn) {\n var stream = [];\n stream.write = function(chunk) {\n if (fn) fn(chunk);\n if (typeof chunk === \"string\") {\n let buffer = allocBuffer(utf8.length(chunk));\n utf8.write(chunk, buffer, 0);\n chunk = buffer;\n }\n this.push(chunk);\n };\n stream.reset = function() {\n stream.length = 0;\n };\n stream.toBuffer = function() {\n var offset = 0, i = 0, k = this.length;\n while (i < k) offset += this[i++].length;\n var buffer = allocBuffer(offset);\n offset = i = 0;\n while (i < k) {\n buffer.set(this[i], offset);\n offset += this[i].length;\n ++i;\n }\n return buffer;\n };\n stream.toString = function() {\n var buffer = this.toBuffer();\n return utf8.read(buffer, 0, buffer.length);\n };\n return stream;\n}\n\nexports.createMemoryStream = createMemoryStream;\n\n/** Compatible TypeScript compiler options for syntax highlighting etc. */\nexports.tscOptions = {\n alwaysStrict: true,\n noImplicitAny: true,\n noImplicitReturns: true,\n noImplicitThis: true,\n noEmitOnError: true,\n strictNullChecks: true,\n experimentalDecorators: true,\n target: \"esnext\",\n module: \"commonjs\",\n noLib: true,\n types: [],\n allowJs: false\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var proc = typeof process !== \"undefined\" && process || {};\nvar isCI = proc.env && \"CI\" in proc.env; // doesn't work when bundled because 'process' is a mock\n\nfunction from(stream, base) {\n var colors = base || {};\n colors.supported = (stream && !!stream.isTTY) || isCI;\n colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text;\n colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text;\n colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text;\n colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text;\n colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text;\n colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text;\n colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text;\n colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text;\n return colors;\n}\n\nexports.stdout = from(proc.stdout, exports);\nexports.stderr = from(proc.stderr);\nexports.from = from;\n\nexports.GRAY = \"\\u001b[90m\";\nexports.RED = \"\\u001b[91m\";\nexports.GREEN = \"\\u001b[92m\";\nexports.YELLOW = \"\\u001b[93m\";\nexports.BLUE = \"\\u001b[94m\";\nexports.MAGENTA = \"\\u001b[95m\";\nexports.CYAN = \"\\u001b[96m\";\nexports.WHITE = \"\\u001b[97m\";\nexports.RESET = \"\\u001b[0m\";\n","// type | meaning\n// -----|---------------\n// b | boolean\n// i | integer\n// f | float\n// s | string\n// I | integer array\n// F | float array\n// S | string array\n\n/** Parses the specified command line arguments according to the given configuration. */\nfunction parse(argv, config) {\n var options = {};\n var unknown = [];\n var arguments = [];\n var trailing = [];\n\n // make an alias map and initialize defaults\n var aliases = {};\n Object.keys(config).forEach(key => {\n if (key.startsWith(\" \")) return;\n var option = config[key];\n if (option.alias != null) {\n if (typeof option.alias === \"string\") aliases[option.alias] = key;\n else if (Array.isArray(option.alias)) option.alias.forEach(alias => aliases[alias] = key);\n }\n if (option.default != null) options[key] = option.default;\n });\n\n // iterate over argv\n for (var i = 0, k = (argv = argv.slice()).length; i < k; ++i) {\n let arg = argv[i];\n if (arg == \"--\") { ++i; break; }\n let match = /^(?:(\\-\\w)(?:=(.*))?|(\\-\\-\\w{2,})(?:=(.*))?)$/.exec(arg), option, key;\n if (match) {\n if (config[arg]) option = config[key = arg]; // exact\n else if (match[1] != null) { // alias\n option = config[key = aliases[match[1].substring(1)]];\n if (option && match[2] != null) argv[i--] = match[2];\n } else if (match[3] != null) { // full\n option = config[key = match[3].substring(2)];\n if (option && match[4] != null) argv[i--] = match[4];\n }\n } else {\n if (arg.charCodeAt(0) == 45) option = config[key = arg]; // exact\n else { arguments.push(arg); continue; } // argument\n }\n if (option) {\n if (option.type == null || option.type === \"b\") options[key] = true; // flag\n else {\n if (i + 1 < argv.length && argv[i + 1].charCodeAt(0) != 45) { // present\n switch (option.type) {\n case \"i\": options[key] = parseInt(argv[++i], 10); break;\n case \"I\": options[key] = (options[key] || []).concat(parseInt(argv[++i], 10)); break;\n case \"f\": options[key] = parseFloat(argv[++i]); break;\n case \"F\": options[key] = (options[key] || []).concat(parseFloat(argv[++i])); break;\n case \"s\": options[key] = String(argv[++i]); break;\n case \"S\": options[key] = (options[key] || []).concat(argv[++i].split(\",\")); break;\n default: unknown.push(arg); --i;\n }\n } else { // omitted\n switch (option.type) {\n case \"i\":\n case \"f\": options[key] = option.default || 0; break;\n case \"s\": options[key] = option.default || \"\"; break;\n case \"I\":\n case \"F\":\n case \"S\": options[key] = options.default || []; break;\n default: unknown.push(arg);\n }\n }\n }\n if (option.value) Object.keys(option.value).forEach(k => options[k] = option.value[k]);\n } else unknown.push(arg);\n }\n while (i < k) trailing.push(argv[i++]); // trailing\n\n return { options, unknown, arguments, trailing };\n}\n\nexports.parse = parse;\n\n/** Generates the help text for the specified configuration. */\nfunction help(config, options) {\n if (!options) options = {};\n var indent = options.indent || 2;\n var padding = options.padding || 24;\n var eol = options.eol || \"\\n\";\n var sb = [];\n Object.keys(config).forEach(key => {\n var option = config[key];\n if (option.description == null) return;\n var text = \"\";\n while (text.length < indent) text += \" \";\n text += \"--\" + key;\n if (option.alias) text += \", -\" + option.alias;\n while (text.length < padding) text += \" \";\n if (Array.isArray(option.description)) {\n sb.push(text + option.description[0] + option.description.slice(1).map(line => {\n for (let i = 0; i < padding; ++i) line = \" \" + line;\n return eol + line;\n }).join(\"\"));\n } else sb.push(text + option.description);\n });\n return sb.join(eol);\n}\n\nexports.help = help;\n","/*\nCopyright 2010 James Halliday (mail@substack.net)\n\nThis project is free software released under the MIT/X11 license:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nvar path = require(\"path\");\nvar fs = require(\"fs\");\nvar _0777 = parseInt(\"0777\", 8);\n\nmodule.exports = function mkdirp(p, opts, made) {\n if (!opts || typeof opts !== \"object\") {\n opts = { mode: opts };\n }\n var mode = opts.mode;\n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n p = path.resolve(p);\n try {\n fs.mkdirSync(p, mode);\n made = made || p;\n } catch (err0) {\n switch (err0.code) {\n case \"ENOENT\":\n made = mkdirp(path.dirname(p), opts, made);\n mkdirp(p, opts, made);\n break;\n default:\n var stat;\n try {\n stat = fs.statSync(p);\n } catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n return made;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.transformer=t():e.transformer=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=6)}([function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]=\"SOURCE\",e[e.NAMEDTYPE=1]=\"NAMEDTYPE\",e[e.FUNCTIONTYPE=2]=\"FUNCTIONTYPE\",e[e.TYPENAME=3]=\"TYPENAME\",e[e.TYPEPARAMETER=4]=\"TYPEPARAMETER\",e[e.PARAMETER=5]=\"PARAMETER\",e[e.IDENTIFIER=6]=\"IDENTIFIER\",e[e.ASSERTION=7]=\"ASSERTION\",e[e.BINARY=8]=\"BINARY\",e[e.CALL=9]=\"CALL\",e[e.CLASS=10]=\"CLASS\",e[e.COMMA=11]=\"COMMA\",e[e.ELEMENTACCESS=12]=\"ELEMENTACCESS\",e[e.FALSE=13]=\"FALSE\",e[e.FUNCTION=14]=\"FUNCTION\",e[e.INSTANCEOF=15]=\"INSTANCEOF\",e[e.LITERAL=16]=\"LITERAL\",e[e.NEW=17]=\"NEW\",e[e.NULL=18]=\"NULL\",e[e.PARENTHESIZED=19]=\"PARENTHESIZED\",e[e.PROPERTYACCESS=20]=\"PROPERTYACCESS\",e[e.TERNARY=21]=\"TERNARY\",e[e.SUPER=22]=\"SUPER\",e[e.THIS=23]=\"THIS\",e[e.TRUE=24]=\"TRUE\",e[e.CONSTRUCTOR=25]=\"CONSTRUCTOR\",e[e.UNARYPOSTFIX=26]=\"UNARYPOSTFIX\",e[e.UNARYPREFIX=27]=\"UNARYPREFIX\",e[e.BLOCK=28]=\"BLOCK\",e[e.BREAK=29]=\"BREAK\",e[e.CONTINUE=30]=\"CONTINUE\",e[e.DO=31]=\"DO\",e[e.EMPTY=32]=\"EMPTY\",e[e.EXPORT=33]=\"EXPORT\",e[e.EXPORTDEFAULT=34]=\"EXPORTDEFAULT\",e[e.EXPORTIMPORT=35]=\"EXPORTIMPORT\",e[e.EXPRESSION=36]=\"EXPRESSION\",e[e.FOR=37]=\"FOR\",e[e.IF=38]=\"IF\",e[e.IMPORT=39]=\"IMPORT\",e[e.RETURN=40]=\"RETURN\",e[e.SWITCH=41]=\"SWITCH\",e[e.THROW=42]=\"THROW\",e[e.TRY=43]=\"TRY\",e[e.VARIABLE=44]=\"VARIABLE\",e[e.VOID=45]=\"VOID\",e[e.WHILE=46]=\"WHILE\",e[e.CLASSDECLARATION=47]=\"CLASSDECLARATION\",e[e.ENUMDECLARATION=48]=\"ENUMDECLARATION\",e[e.ENUMVALUEDECLARATION=49]=\"ENUMVALUEDECLARATION\",e[e.FIELDDECLARATION=50]=\"FIELDDECLARATION\",e[e.FUNCTIONDECLARATION=51]=\"FUNCTIONDECLARATION\",e[e.IMPORTDECLARATION=52]=\"IMPORTDECLARATION\",e[e.INDEXSIGNATUREDECLARATION=53]=\"INDEXSIGNATUREDECLARATION\",e[e.INTERFACEDECLARATION=54]=\"INTERFACEDECLARATION\",e[e.METHODDECLARATION=55]=\"METHODDECLARATION\",e[e.NAMESPACEDECLARATION=56]=\"NAMESPACEDECLARATION\",e[e.TYPEDECLARATION=57]=\"TYPEDECLARATION\",e[e.VARIABLEDECLARATION=58]=\"VARIABLEDECLARATION\",e[e.DECORATOR=59]=\"DECORATOR\",e[e.EXPORTMEMBER=60]=\"EXPORTMEMBER\",e[e.SWITCHCASE=61]=\"SWITCHCASE\",e[e.COMMENT=62]=\"COMMENT\"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName(\"\",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text=\"\",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new j;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(\".\")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]=\"DEFAULT\",e[e.OPTIONAL=1]=\"OPTIONAL\",e[e.REST=2]=\"REST\"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if(\"builtin\"==t)return E.BUILTIN;break;case 101:if(\"external\"==t)return E.EXTERNAL;break;case 103:if(\"global\"==t)return E.GLOBAL;break;case 105:if(\"inline\"==t)return E.INLINE;break;case 108:if(\"lazy\"==t)return E.LAZY;break;case 111:if(\"operator\"==t)return E.OPERATOR;break;case 115:if(\"sealed\"==t)return E.SEALED;break;case 117:if(\"unmanaged\"==t)return E.UNMANAGED;if(\"unsafe\"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),\"operator\"==t)switch(i.charCodeAt(0)){case 98:if(\"binary\"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case\"prefix\":return E.OPERATOR_PREFIX;case\"postfix\":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]=\"CUSTOM\",e[e.GLOBAL=1]=\"GLOBAL\",e[e.OPERATOR=2]=\"OPERATOR\",e[e.OPERATOR_BINARY=3]=\"OPERATOR_BINARY\",e[e.OPERATOR_PREFIX=4]=\"OPERATOR_PREFIX\",e[e.OPERATOR_POSTFIX=5]=\"OPERATOR_POSTFIX\",e[e.UNMANAGED=6]=\"UNMANAGED\",e[e.SEALED=7]=\"SEALED\",e[e.INLINE=8]=\"INLINE\",e[e.EXTERNAL=9]=\"EXTERNAL\",e[e.BUILTIN=10]=\"BUILTIN\",e[e.LAZY=11]=\"LAZY\",e[e.UNSAFE=12]=\"UNSAFE\"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]=\"LINE\",e[e.TRIPLE=1]=\"TRIPLE\",e[e.BLOCK=2]=\"BLOCK\"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]=\"FLOAT\",e[e.INTEGER=1]=\"INTEGER\",e[e.STRING=2]=\"STRING\",e[e.REGEXP=3]=\"REGEXP\",e[e.ARRAY=4]=\"ARRAY\",e[e.OBJECT=5]=\"OBJECT\"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]=\"PREFIX\",e[e.AS=1]=\"AS\",e[e.NONNULL=2]=\"NONNULL\"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,\"typeArgumentsRange\",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"argumentsRange\",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text=\"constructor\",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text=\"null\",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text=\"super\",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text=\"this\",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text=\"true\",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text=\"false\",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=j;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=Q;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(Q);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(Q);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]=\"USER\",e[e.USER_ENTRY=1]=\"USER_ENTRY\",e[e.LIBRARY=2]=\"LIBRARY\",e[e.LIBRARY_ENTRY=3]=\"LIBRARY_ENTRY\"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,\"isLibrary\",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]=\"NONE\",e[e.ARROW_PARENTHESIZED=1]=\"ARROW_PARENTHESIZED\",e[e.ARROW_SINGLE=2]=\"ARROW_SINGLE\"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(\".ts\")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i\";case s.LESSTHAN_EQUALS:return\"<=\";case s.GREATERTHAN_EQUALS:return\">=\";case s.EQUALS_EQUALS:return\"==\";case s.EXCLAMATION_EQUALS:return\"!=\";case s.EQUALS_EQUALS_EQUALS:return\"===\";case s.EXCLAMATION_EQUALS_EQUALS:return\"!==\";case s.PLUS:return\"+\";case s.MINUS:return\"-\";case s.ASTERISK_ASTERISK:return\"**\";case s.ASTERISK:return\"*\";case s.SLASH:return\"/\";case s.PERCENT:return\"%\";case s.PLUS_PLUS:return\"++\";case s.MINUS_MINUS:return\"--\";case s.LESSTHAN_LESSTHAN:return\"<<\";case s.GREATERTHAN_GREATERTHAN:return\">>\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return\">>>\";case s.AMPERSAND:return\"&\";case s.BAR:return\"|\";case s.CARET:return\"^\";case s.EXCLAMATION:return\"!\";case s.TILDE:return\"~\";case s.AMPERSAND_AMPERSAND:return\"&&\";case s.BAR_BAR:return\"||\";case s.EQUALS:return\"=\";case s.PLUS_EQUALS:return\"+=\";case s.MINUS_EQUALS:return\"-=\";case s.ASTERISK_EQUALS:return\"*=\";case s.ASTERISK_ASTERISK_EQUALS:return\"**=\";case s.SLASH_EQUALS:return\"/=\";case s.PERCENT_EQUALS:return\"%=\";case s.LESSTHAN_LESSTHAN_EQUALS:return\"<<=\";case s.GREATERTHAN_GREATERTHAN_EQUALS:return\">>=\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return\">>>=\";case s.AMPERSAND_EQUALS:return\"&=\";case s.BAR_EQUALS:return\"|=\";case s.CARET_EQUALS:return\"^=\";default:return assert(!1),\"\"}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error(\"source mismatch\");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,\"atStart\",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"atEnd\",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"line\",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"column\",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),\"\";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return\"\\0\";case 98:return\"\\b\";case 116:return\"\\t\";case 110:return\"\\n\";case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),\"\";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),\"\"):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?\"\":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Operation_not_supported=100]=\"Operation_not_supported\",e[e.Operation_is_unsafe=101]=\"Operation_is_unsafe\",e[e.User_defined_0=102]=\"User_defined_0\",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]=\"Conversion_from_type_0_to_1_requires_an_explicit_cast\",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]=\"Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit\",e[e.Type_0_cannot_be_changed_to_type_1=202]=\"Type_0_cannot_be_changed_to_type_1\",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]=\"Type_0_cannot_be_reinterpreted_as_type_1\",e[e.Basic_type_0_cannot_be_nullable=204]=\"Basic_type_0_cannot_be_nullable\",e[e.Cannot_export_a_mutable_global=205]=\"Cannot_export_a_mutable_global\",e[e.Mutable_value_cannot_be_inlined=206]=\"Mutable_value_cannot_be_inlined\",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]=\"Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa\",e[e.Unmanaged_classes_cannot_implement_interfaces=208]=\"Unmanaged_classes_cannot_implement_interfaces\",e[e.Invalid_regular_expression_flags=209]=\"Invalid_regular_expression_flags\",e[e.Implementation_0_must_match_the_signature_1=210]=\"Implementation_0_must_match_the_signature_1\",e[e.Class_0_is_sealed_and_cannot_be_extended=211]=\"Class_0_is_sealed_and_cannot_be_extended\",e[e.Decorator_0_is_not_valid_here=212]=\"Decorator_0_is_not_valid_here\",e[e.Duplicate_decorator=213]=\"Duplicate_decorator\",e[e.An_allocator_must_be_present_to_use_0=214]=\"An_allocator_must_be_present_to_use_0\",e[e.Optional_parameter_must_have_an_initializer=215]=\"Optional_parameter_must_have_an_initializer\",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]=\"Constructor_of_class_0_must_not_require_any_arguments\",e[e.Function_0_cannot_be_inlined_into_itself=217]=\"Function_0_cannot_be_inlined_into_itself\",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]=\"Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set\",e[e.Optional_properties_are_not_supported=219]=\"Optional_properties_are_not_supported\",e[e.Expression_must_be_a_compile_time_constant=220]=\"Expression_must_be_a_compile_time_constant\",e[e.Module_cannot_have_multiple_start_functions=221]=\"Module_cannot_have_multiple_start_functions\",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]=\"_0_must_be_a_value_between_1_and_2_inclusive\",e[e._0_must_be_a_power_of_two=223]=\"_0_must_be_a_power_of_two\",e[e.Expression_is_unsafe=224]=\"Expression_is_unsafe\",e[e.Expression_is_never_null=225]=\"Expression_is_never_null\",e[e.Unterminated_string_literal=1002]=\"Unterminated_string_literal\",e[e.Identifier_expected=1003]=\"Identifier_expected\",e[e._0_expected=1005]=\"_0_expected\",e[e.A_file_cannot_have_a_reference_to_itself=1006]=\"A_file_cannot_have_a_reference_to_itself\",e[e.Trailing_comma_not_allowed=1009]=\"Trailing_comma_not_allowed\",e[e.Unexpected_token=1012]=\"Unexpected_token\",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]=\"A_rest_parameter_must_be_last_in_a_parameter_list\",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]=\"Parameter_cannot_have_question_mark_and_initializer\",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]=\"A_required_parameter_cannot_follow_an_optional_parameter\",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]=\"Statements_are_not_allowed_in_ambient_contexts\",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]=\"Initializers_are_not_allowed_in_ambient_contexts\",e[e._0_modifier_cannot_be_used_here=1042]=\"_0_modifier_cannot_be_used_here\",e[e.A_rest_parameter_cannot_be_optional=1047]=\"A_rest_parameter_cannot_be_optional\",e[e.A_rest_parameter_cannot_have_an_initializer=1048]=\"A_rest_parameter_cannot_have_an_initializer\",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]=\"A_set_accessor_must_have_exactly_one_parameter\",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]=\"A_set_accessor_parameter_cannot_have_an_initializer\",e[e.A_get_accessor_cannot_have_parameters=1054]=\"A_get_accessor_cannot_have_parameters\",e[e.Enum_member_must_have_initializer=1061]=\"Enum_member_must_have_initializer\",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]=\"Type_parameters_cannot_appear_on_a_constructor_declaration\",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]=\"Type_annotation_cannot_appear_on_a_constructor_declaration\",e[e.An_accessor_cannot_have_type_parameters=1094]=\"An_accessor_cannot_have_type_parameters\",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]=\"A_set_accessor_cannot_have_a_return_type_annotation\",e[e.Type_parameter_list_cannot_be_empty=1098]=\"Type_parameter_list_cannot_be_empty\",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]=\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement\",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]=\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement\",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]=\"A_return_statement_can_only_be_used_within_a_function_body\",e[e.Expression_expected=1109]=\"Expression_expected\",e[e.Type_expected=1110]=\"Type_expected\",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]=\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement\",e[e.Duplicate_label_0=1114]=\"Duplicate_label_0\",e[e.An_export_assignment_cannot_have_modifiers=1120]=\"An_export_assignment_cannot_have_modifiers\",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]=\"Octal_literals_are_not_allowed_in_strict_mode\",e[e.Digit_expected=1124]=\"Digit_expected\",e[e.Hexadecimal_digit_expected=1125]=\"Hexadecimal_digit_expected\",e[e.Unexpected_end_of_text=1126]=\"Unexpected_end_of_text\",e[e.Invalid_character=1127]=\"Invalid_character\",e[e._case_or_default_expected=1130]=\"_case_or_default_expected\",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]=\"_super_must_be_followed_by_an_argument_list_or_member_access\",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]=\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context\",e[e.Type_argument_expected=1140]=\"Type_argument_expected\",e[e.String_literal_expected=1141]=\"String_literal_expected\",e[e.Line_break_not_permitted_here=1142]=\"Line_break_not_permitted_here\",e[e.Declaration_expected=1146]=\"Declaration_expected\",e[e._const_declarations_must_be_initialized=1155]=\"_const_declarations_must_be_initialized\",e[e.Unterminated_regular_expression_literal=1161]=\"Unterminated_regular_expression_literal\",e[e.Interface_declaration_cannot_have_implements_clause=1176]=\"Interface_declaration_cannot_have_implements_clause\",e[e.Binary_digit_expected=1177]=\"Binary_digit_expected\",e[e.Octal_digit_expected=1178]=\"Octal_digit_expected\",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]=\"An_implementation_cannot_be_declared_in_ambient_contexts\",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]=\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive\",e[e.Unterminated_Unicode_escape_sequence=1199]=\"Unterminated_Unicode_escape_sequence\",e[e.Decorators_are_not_valid_here=1206]=\"Decorators_are_not_valid_here\",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]=\"_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration\",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]=\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract\",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]=\"A_definite_assignment_assertion_is_not_permitted_in_this_context\",e[e.A_class_may_only_extend_another_class=1311]=\"A_class_may_only_extend_another_class\",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]=\"A_parameter_property_cannot_be_declared_using_a_rest_parameter\",e[e.Duplicate_identifier_0=2300]=\"Duplicate_identifier_0\",e[e.Cannot_find_name_0=2304]=\"Cannot_find_name_0\",e[e.Module_0_has_no_exported_member_1=2305]=\"Module_0_has_no_exported_member_1\",e[e.Generic_type_0_requires_1_type_argument_s=2314]=\"Generic_type_0_requires_1_type_argument_s\",e[e.Type_0_is_not_generic=2315]=\"Type_0_is_not_generic\",e[e.Type_0_is_not_assignable_to_type_1=2322]=\"Type_0_is_not_assignable_to_type_1\",e[e.Index_signature_is_missing_in_type_0=2329]=\"Index_signature_is_missing_in_type_0\",e[e._this_cannot_be_referenced_in_current_location=2332]=\"_this_cannot_be_referenced_in_current_location\",e[e._super_can_only_be_referenced_in_a_derived_class=2335]=\"_super_can_only_be_referenced_in_a_derived_class\",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]=\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors\",e[e.Property_0_does_not_exist_on_type_1=2339]=\"Property_0_does_not_exist_on_type_1\",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]=\"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures\",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]=\"Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature\",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]=\"A_function_whose_declared_type_is_not_void_must_return_a_value\",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]=\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access\",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]=\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access\",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]=\"Operator_0_cannot_be_applied_to_types_1_and_2\",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]=\"A_super_call_must_be_the_first_statement_in_the_constructor\",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]=\"Constructors_for_derived_classes_must_contain_a_super_call\",e[e._get_and_set_accessor_must_have_the_same_type=2380]=\"_get_and_set_accessor_must_have_the_same_type\",e[e.Constructor_implementation_is_missing=2390]=\"Constructor_implementation_is_missing\",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]=\"Function_implementation_is_missing_or_not_immediately_following_the_declaration\",e[e.Multiple_constructor_implementations_are_not_allowed=2392]=\"Multiple_constructor_implementations_are_not_allowed\",e[e.Duplicate_function_implementation=2393]=\"Duplicate_function_implementation\",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]=\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local\",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]=\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged\",e[e.Type_0_has_no_property_1=2460]=\"Type_0_has_no_property_1\",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]=\"The_0_operator_cannot_be_applied_to_type_1\",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]=\"In_const_enum_declarations_member_initializer_must_be_constant_expression\",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]=\"Export_declaration_conflicts_with_exported_declaration_of_0\",e[e.Object_is_possibly_null=2531]=\"Object_is_possibly_null\",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]=\"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property\",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]=\"The_target_of_an_assignment_must_be_a_variable_or_a_property_access\",e[e.Index_signature_in_type_0_only_permits_reading=2542]=\"Index_signature_in_type_0_only_permits_reading\",e[e.Expected_0_arguments_but_got_1=2554]=\"Expected_0_arguments_but_got_1\",e[e.Expected_at_least_0_arguments_but_got_1=2555]=\"Expected_at_least_0_arguments_but_got_1\",e[e.Expected_0_type_arguments_but_got_1=2558]=\"Expected_0_type_arguments_but_got_1\",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]=\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums\",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]=\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration\",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]=\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration\",e[e.Namespace_0_has_no_exported_member_1=2694]=\"Namespace_0_has_no_exported_member_1\",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]=\"Required_type_parameters_may_not_follow_optional_type_parameters\",e[e.Duplicate_property_0=2718]=\"Duplicate_property_0\",e[e.Type_0_has_no_call_signatures=2757]=\"Type_0_has_no_call_signatures\",e[e.File_0_not_found=6054]=\"File_0_not_found\",e[e.Numeric_separators_are_not_allowed_here=6188]=\"Numeric_separators_are_not_allowed_here\",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]=\"Multiple_consecutive_numeric_separators_are_not_permitted\",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]=\"_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class\",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]=\"_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class\"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return\"Operation not supported.\";case 101:return\"Operation is unsafe.\";case 102:return\"User-defined: {0}\";case 200:return\"Conversion from type '{0}' to '{1}' requires an explicit cast.\";case 201:return\"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";case 202:return\"Type '{0}' cannot be changed to type '{1}'.\";case 203:return\"Type '{0}' cannot be reinterpreted as type '{1}'.\";case 204:return\"Basic type '{0}' cannot be nullable.\";case 205:return\"Cannot export a mutable global.\";case 206:return\"Mutable value cannot be inlined.\";case 207:return\"Unmanaged classes cannot extend managed classes and vice-versa.\";case 208:return\"Unmanaged classes cannot implement interfaces.\";case 209:return\"Invalid regular expression flags.\";case 210:return\"Implementation '{0}' must match the signature '{1}'.\";case 211:return\"Class '{0}' is sealed and cannot be extended.\";case 212:return\"Decorator '{0}' is not valid here.\";case 213:return\"Duplicate decorator.\";case 214:return\"An allocator must be present to use '{0}'.\";case 215:return\"Optional parameter must have an initializer.\";case 216:return\"Constructor of class '{0}' must not require any arguments.\";case 217:return\"Function '{0}' cannot be inlined into itself.\";case 218:return\"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";case 219:return\"Optional properties are not supported.\";case 220:return\"Expression must be a compile-time constant.\";case 221:return\"Module cannot have multiple start functions.\";case 222:return\"'{0}' must be a value between '{1}' and '{2}' inclusive.\";case 223:return\"'{0}' must be a power of two.\";case 224:return\"Expression is unsafe.\";case 225:return\"Expression is never 'null'.\";case 1002:return\"Unterminated string literal.\";case 1003:return\"Identifier expected.\";case 1005:return\"'{0}' expected.\";case 1006:return\"A file cannot have a reference to itself.\";case 1009:return\"Trailing comma not allowed.\";case 1012:return\"Unexpected token.\";case 1014:return\"A rest parameter must be last in a parameter list.\";case 1015:return\"Parameter cannot have question mark and initializer.\";case 1016:return\"A required parameter cannot follow an optional parameter.\";case 1036:return\"Statements are not allowed in ambient contexts.\";case 1039:return\"Initializers are not allowed in ambient contexts.\";case 1042:return\"'{0}' modifier cannot be used here.\";case 1047:return\"A rest parameter cannot be optional.\";case 1048:return\"A rest parameter cannot have an initializer.\";case 1049:return\"A 'set' accessor must have exactly one parameter.\";case 1052:return\"A 'set' accessor parameter cannot have an initializer.\";case 1054:return\"A 'get' accessor cannot have parameters.\";case 1061:return\"Enum member must have initializer.\";case 1092:return\"Type parameters cannot appear on a constructor declaration.\";case 1093:return\"Type annotation cannot appear on a constructor declaration.\";case 1094:return\"An accessor cannot have type parameters.\";case 1095:return\"A 'set' accessor cannot have a return type annotation.\";case 1098:return\"Type parameter list cannot be empty.\";case 1104:return\"A 'continue' statement can only be used within an enclosing iteration statement.\";case 1105:return\"A 'break' statement can only be used within an enclosing iteration or switch statement.\";case 1108:return\"A 'return' statement can only be used within a function body.\";case 1109:return\"Expression expected.\";case 1110:return\"Type expected.\";case 1113:return\"A 'default' clause cannot appear more than once in a 'switch' statement.\";case 1114:return\"Duplicate label '{0}'.\";case 1120:return\"An export assignment cannot have modifiers.\";case 1121:return\"Octal literals are not allowed in strict mode.\";case 1124:return\"Digit expected.\";case 1125:return\"Hexadecimal digit expected.\";case 1126:return\"Unexpected end of text.\";case 1127:return\"Invalid character.\";case 1130:return\"'case' or 'default' expected.\";case 1034:return\"'super' must be followed by an argument list or member access.\";case 1038:return\"A 'declare' modifier cannot be used in an already ambient context.\";case 1140:return\"Type argument expected.\";case 1141:return\"String literal expected.\";case 1142:return\"Line break not permitted here.\";case 1146:return\"Declaration expected.\";case 1155:return\"'const' declarations must be initialized.\";case 1161:return\"Unterminated regular expression literal.\";case 1176:return\"Interface declaration cannot have 'implements' clause.\";case 1177:return\"Binary digit expected.\";case 1178:return\"Octal digit expected.\";case 1183:return\"An implementation cannot be declared in ambient contexts.\";case 1198:return\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";case 1199:return\"Unterminated Unicode escape sequence.\";case 1206:return\"Decorators are not valid here.\";case 1242:return\"'abstract' modifier can only appear on a class, method, or property declaration.\";case 1245:return\"Method '{0}' cannot have an implementation because it is marked abstract.\";case 1255:return\"A definite assignment assertion '!' is not permitted in this context.\";case 1311:return\"A class may only extend another class.\";case 1317:return\"A parameter property cannot be declared using a rest parameter.\";case 2300:return\"Duplicate identifier '{0}'.\";case 2304:return\"Cannot find name '{0}'.\";case 2305:return\"Module '{0}' has no exported member '{1}'.\";case 2314:return\"Generic type '{0}' requires {1} type argument(s).\";case 2315:return\"Type '{0}' is not generic.\";case 2322:return\"Type '{0}' is not assignable to type '{1}'.\";case 2329:return\"Index signature is missing in type '{0}'.\";case 2332:return\"'this' cannot be referenced in current location.\";case 2335:return\"'super' can only be referenced in a derived class.\";case 2337:return\"Super calls are not permitted outside constructors or in nested functions inside constructors.\";case 2339:return\"Property '{0}' does not exist on type '{1}'.\";case 2349:return\"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";case 2351:return\"Cannot use 'new' with an expression whose type lacks a construct signature.\";case 2355:return\"A function whose declared type is not 'void' must return a value.\";case 2357:return\"The operand of an increment or decrement operator must be a variable or a property access.\";case 2364:return\"The left-hand side of an assignment expression must be a variable or a property access.\";case 2365:return\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";case 2376:return\"A 'super' call must be the first statement in the constructor.\";case 2377:return\"Constructors for derived classes must contain a 'super' call.\";case 2380:return\"'get' and 'set' accessor must have the same type.\";case 2390:return\"Constructor implementation is missing.\";case 2391:return\"Function implementation is missing or not immediately following the declaration.\";case 2392:return\"Multiple constructor implementations are not allowed.\";case 2393:return\"Duplicate function implementation.\";case 2395:return\"Individual declarations in merged declaration '{0}' must be all exported or all local.\";case 2434:return\"A namespace declaration cannot be located prior to a class or function with which it is merged.\";case 2460:return\"Type '{0}' has no property '{1}'.\";case 2469:return\"The '{0}' operator cannot be applied to type '{1}'.\";case 2474:return\"In 'const' enum declarations member initializer must be constant expression.\";case 2484:return\"Export declaration conflicts with exported declaration of '{0}'.\";case 2531:return\"Object is possibly 'null'.\";case 2540:return\"Cannot assign to '{0}' because it is a constant or a read-only property.\";case 2541:return\"The target of an assignment must be a variable or a property access.\";case 2542:return\"Index signature in type '{0}' only permits reading.\";case 2554:return\"Expected {0} arguments, but got {1}.\";case 2555:return\"Expected at least {0} arguments, but got {1}.\";case 2558:return\"Expected {0} type arguments, but got {1}.\";case 2651:return\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";case 2673:return\"Constructor of class '{0}' is private and only accessible within the class declaration.\";case 2674:return\"Constructor of class '{0}' is protected and only accessible within the class declaration.\";case 2694:return\"Namespace '{0}' has no exported member '{1}'.\";case 2706:return\"Required type parameters may not follow optional type parameters.\";case 2718:return\"Duplicate property '{0}'.\";case 2757:return\"Type '{0}' has no call signatures.\";case 6054:return\"File '{0}' not found.\";case 6188:return\"Numeric separators are not allowed here.\";case 6189:return\"Multiple consecutive numeric separators are not permitted.\";case 17009:return\"'super' must be called before accessing 'this' in the constructor of a derived class.\";case 17011:return\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";default:return\"\"}}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes(\"@nearfile\")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:\"Integer\",u32:\"Integer\",i64:\"String\",u64:\"String\",string:\"String\",bool:\"Boolean\",Uint8Array:\"String\"},t.nonNullableTypes=[\"i32\",\"u32\",\"i64\",\"u64\",\"bool\",\"boolean\"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return\"void\"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split(\"|\").filter(function(e){return\"null\"!==e.trim()}).join(\"|\"),s=p(n).includes(\"null\"),a=e.name.symbol;this.sb.push(\"\\n//@ts-ignore\\nfunction __wrapper_\"+a+\"(): void {\"),i.length>0&&this.sb.push(\" // Reading input bytes.\\n input(0);\\n let json_len = register_len(0);\\n if (json_len == U32.MAX_VALUE) {\\n panic();\\n }\\n let json = new Uint8Array(json_len as u32);\\n read_register(0, json.buffer);\\n const obj: Obj = JSON.parse(json);\"),\"void\"!==p(n)?this.sb.push(\" let result: \"+p(n)+\" = \"+a+\"(\"):this.sb.push(\" \"+a+\"(\"),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(\", \")),this.sb[this.sb.length-1]+=\");\",\"void\"!==p(n)&&this.sb.push(\"\\n let encoder = new JSONEncoder();\\n let val: Uint8Array;\\n if ((isString<\"+r+\">() || isNullable<\"+r+\">()) && result == null) {\\n encoder.setNull(null);\\n val = encoder.serialize();\\n } else {\\n val = encode<\"+r+\">(result\"+(s?\"!\":\"\")+\", null, encoder);\\n }\\n value_return(val.byteLength, val.buffer);\"),this.sb.push(\"}\\n\\nexport { __wrapper_\"+a+\" as \"+a+\" }\\n\")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+=\"<\"+e.typeParameters.map(p).join(\", \")+\">\"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf(\"}\")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error(\"All Fields must have explict type declaration.\");var r=t.typeName(n);i+=\"\\n static decode(json: Uint8Array): \"+r+\" {\\n let value = instantiate<\"+r+\">(); // Allocate without constructor\\n return value.decode(json);\\n }\\n\\n decode(buf: V): \"+r+' {\\n let json: Obj;\\n if (buf instanceof Uint8Array) {\\n json = JSON.parse(buf);\\n }else {\\n assert(buf instanceof Obj, \"argument must be Uint8Array or Json Object\");\\n json = buf;\\n }\\n return this._decode(json);\\n }\\n\\n private _decode(obj: Obj): '+r+\" {\\n \"+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,\"this.\"+t+' = obj.has(\"'+t+'\") ? ')+\": this.\"+t+\";\"})}(n).join(\"\\n \")+'\\n return this;\\n }\\n\\n _encode(name: string | null = \"\", _encoder: JSONEncoder | null = null): JSONEncoder {\\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\\n encoder.pushObject(name);\\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return\"encode<\"+t+\", JSONEncoder>(this.\"+i+', \"'+i+'\", encoder);'})}(n).join(\"\\n \")+\"\\n encoder.popObject();\\n return encoder;\\n }\\n\\n encode(): Uint8Array {\\n return this._encode().serialize();\\n }\\n\\n serialize(): Uint8Array {\\n return this.encode();\\n }\\n\\n toJSON(): string {\\n return this._encode().toString();\\n }\\n}\"}return i});return this.sb.concat(i).join(\"\\n\")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=\"\"),t+\"decode<\"+p(e.type)+', Obj>(obj, \"'+p(e.name)+'\")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf(\"\\n\")).includes(\"out\");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t(\"out/\"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?\"\":\"./\")+n.normalizedPath,h(n))})}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NONE=0]=\"NONE\",e[e.SIGN_EXTENSION=1]=\"SIGN_EXTENSION\",e[e.MUTABLE_GLOBAL=2]=\"MUTABLE_GLOBAL\",e[e.BULK_MEMORY=4]=\"BULK_MEMORY\",e[e.SIMD=8]=\"SIMD\",e[e.THREADS=16]=\"THREADS\"}(t.Feature||(t.Feature={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.WASM32=0]=\"WASM32\",e[e.WASM64=1]=\"WASM64\",e[e.JS=2]=\"JS\"}(t.Target||(t.Target={}))},function(e,t,i){\"use strict\";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]=\"NONE\",e[e.ARRAYBUFFERVIEW=1]=\"ARRAYBUFFERVIEW\",e[e.ARRAY=2]=\"ARRAY\",e[e.SET=4]=\"SET\",e[e.MAP=8]=\"MAP\",e[e.ACYCLIC=16]=\"ACYCLIC\",e[e.VALUE_ALIGN_0=32]=\"VALUE_ALIGN_0\",e[e.VALUE_ALIGN_1=64]=\"VALUE_ALIGN_1\",e[e.VALUE_ALIGN_2=128]=\"VALUE_ALIGN_2\",e[e.VALUE_ALIGN_3=256]=\"VALUE_ALIGN_3\",e[e.VALUE_ALIGN_4=512]=\"VALUE_ALIGN_4\",e[e.VALUE_SIGNED=1024]=\"VALUE_SIGNED\",e[e.VALUE_FLOAT=2048]=\"VALUE_FLOAT\",e[e.VALUE_NULLABLE=4096]=\"VALUE_NULLABLE\",e[e.VALUE_MANAGED=8192]=\"VALUE_MANAGED\",e[e.KEY_ALIGN_0=16384]=\"KEY_ALIGN_0\",e[e.KEY_ALIGN_1=32768]=\"KEY_ALIGN_1\",e[e.KEY_ALIGN_2=65536]=\"KEY_ALIGN_2\",e[e.KEY_ALIGN_3=131072]=\"KEY_ALIGN_3\",e[e.KEY_ALIGN_4=262144]=\"KEY_ALIGN_4\",e[e.KEY_SIGNED=524288]=\"KEY_SIGNED\",e[e.KEY_FLOAT=1048576]=\"KEY_FLOAT\",e[e.KEY_NULLABLE=2097152]=\"KEY_NULLABLE\",e[e.KEY_MANAGED=4194304]=\"KEY_MANAGED\"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return\"INFO\";case n.WARNING:return\"WARNING\";case n.ERROR:return\"ERROR\";default:return assert(!1),\"\"}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),\"\"}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]=\"INFO\",e[e.WARNING=1]=\"WARNING\",e[e.ERROR=2]=\"ERROR\"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE=\"\u001b[96m\",t.COLOR_YELLOW=\"\u001b[93m\",t.COLOR_RED=\"\u001b[91m\",t.COLOR_RESET=\"\u001b[0m\",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace(\"{0}\",n)),null!=s&&(o=o.replace(\"{1}\",s)),null!=a&&(o=o.replace(\"{2}\",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+\" \"+this.code.toString(10)+': \"'+this.message+'\" in '+this.range.source.normalizedPath+\":\"+this.range.line.toString(10)+\":\"+this.range.column.toString(10):o(this.category)+\" \"+this.code.toString(10)+\": \"+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NULL=0]=\"NULL\",e[e.LINEFEED=10]=\"LINEFEED\",e[e.CARRIAGERETURN=13]=\"CARRIAGERETURN\",e[e.LINESEPARATOR=8232]=\"LINESEPARATOR\",e[e.PARAGRAPHSEPARATOR=8233]=\"PARAGRAPHSEPARATOR\",e[e.NEXTLINE=133]=\"NEXTLINE\",e[e.SPACE=32]=\"SPACE\",e[e.NONBREAKINGSPACE=160]=\"NONBREAKINGSPACE\",e[e.ENQUAD=8192]=\"ENQUAD\",e[e.EMQUAD=8193]=\"EMQUAD\",e[e.ENSPACE=8194]=\"ENSPACE\",e[e.EMSPACE=8195]=\"EMSPACE\",e[e.THREEPEREMSPACE=8196]=\"THREEPEREMSPACE\",e[e.FOURPEREMSPACE=8197]=\"FOURPEREMSPACE\",e[e.SIXPEREMSPACE=8198]=\"SIXPEREMSPACE\",e[e.FIGURESPACE=8199]=\"FIGURESPACE\",e[e.PUNCTUATIONSPACE=8200]=\"PUNCTUATIONSPACE\",e[e.THINSPACE=8201]=\"THINSPACE\",e[e.HAIRSPACE=8202]=\"HAIRSPACE\",e[e.ZEROWIDTHSPACE=8203]=\"ZEROWIDTHSPACE\",e[e.NARROWNOBREAKSPACE=8239]=\"NARROWNOBREAKSPACE\",e[e.IDEOGRAPHICSPACE=12288]=\"IDEOGRAPHICSPACE\",e[e.MATHEMATICALSPACE=8287]=\"MATHEMATICALSPACE\",e[e.OGHAM=5760]=\"OGHAM\",e[e._=95]=\"_\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.AMPERSAND=38]=\"AMPERSAND\",e[e.ASTERISK=42]=\"ASTERISK\",e[e.AT=64]=\"AT\",e[e.BACKSLASH=92]=\"BACKSLASH\",e[e.BACKTICK=96]=\"BACKTICK\",e[e.BAR=124]=\"BAR\",e[e.CARET=94]=\"CARET\",e[e.CLOSEBRACE=125]=\"CLOSEBRACE\",e[e.CLOSEBRACKET=93]=\"CLOSEBRACKET\",e[e.CLOSEPAREN=41]=\"CLOSEPAREN\",e[e.COLON=58]=\"COLON\",e[e.COMMA=44]=\"COMMA\",e[e.DOLLAR=36]=\"DOLLAR\",e[e.DOT=46]=\"DOT\",e[e.DOUBLEQUOTE=34]=\"DOUBLEQUOTE\",e[e.EQUALS=61]=\"EQUALS\",e[e.EXCLAMATION=33]=\"EXCLAMATION\",e[e.GREATERTHAN=62]=\"GREATERTHAN\",e[e.HASH=35]=\"HASH\",e[e.LESSTHAN=60]=\"LESSTHAN\",e[e.MINUS=45]=\"MINUS\",e[e.OPENBRACE=123]=\"OPENBRACE\",e[e.OPENBRACKET=91]=\"OPENBRACKET\",e[e.OPENPAREN=40]=\"OPENPAREN\",e[e.PERCENT=37]=\"PERCENT\",e[e.PLUS=43]=\"PLUS\",e[e.QUESTION=63]=\"QUESTION\",e[e.SEMICOLON=59]=\"SEMICOLON\",e[e.SINGLEQUOTE=39]=\"SINGLEQUOTE\",e[e.SLASH=47]=\"SLASH\",e[e.TILDE=126]=\"TILDE\",e[e.BACKSPACE=8]=\"BACKSPACE\",e[e.FORMFEED=12]=\"FORMFEED\",e[e.BYTEORDERMARK=65279]=\"BYTEORDERMARK\",e[e.TAB=9]=\"TAB\",e[e.VERTICALTAB=11]=\"VERTICALTAB\"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:\".\"}function a(e){var t=e.length;if(t<=1){if(0==t)return\".\";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return\".\"}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith(\"std/\")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=\" \",r=\" \",s=\" \";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){\"use strict\";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i\")}e.isNullable&&n.push(\" | null\")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?\"((\":\"(\");var n=e.explicitThisType;n&&(i.push(\"this: \"),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(\", \"),this.serializeParameter(r[0]);for(var a=1;a \"),this.visitTypeNode(o)):i.push(\") => void\"),t&&i.push(\") | null\")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(\" extends \"),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push(\"=\"),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push(\"[\");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r\"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(\" as \"),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push(\"!\");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(\" \"),t.push(a.operatorTokenToString(e.operator)),t.push(\" \"),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push(\"<\"),this.visitTypeNode(i[0]);for(var r=1;r(\")}}else t.push(\"(\");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push(\"\\\\0\"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\b\");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\t\");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\n\");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\v\");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\f\");break;case 13:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\r\"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\\\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push(\"\\\\'\"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\\\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push(\"/\"),t.push(e.pattern),t.push(\"/\"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push(\"new \"),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push(\"(\"),this.visitNode(e.expression),t.push(\")\")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push(\".\"),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(\" ? \"),this.visitNode(e.ifThen),t.push(\" : \"),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push(\"\\n\"):t.push(\";\\n\")}else t.push(\";\\n\")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push(\"{\\n\");for(var r=++this.indentLevel,a=0;a\")}var _=e.extendsType;_&&(u.push(\" extends \"),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(\" implements \"),this.visitTypeNode(p[0]);for(a=1;a\")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push(\"(\");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push(\"this: \"),this.visitTypeNode(_)),c){_&&t.push(\", \"),this.serializeParameter(u[0]);for(o=1;o \"),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(\" => \"),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(\")\"):(t.push(\"): \"),this.visitTypeNode(h)),p&&(t.push(\" \"),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push(\"if (\"),this.visitNode(e.condition),t.push(\") \");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(\";\\n\");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(\" else \"):t.push(\"else \"),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(\" as \"),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push(\"import \");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push(\"{\\n\");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o\")}var u=e.extendsType;u&&(a.push(\" extends \"),this.visitTypeNode(u)),a.push(\" {\\n\");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n\")}}r.push(\" = \"),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push(\"!\"),t&&(i.push(\": \"),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(\" = \"),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name=\"UnreachableError\",r.prototype.message=\"unreachable\",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name=\"AssertionError\",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,\"replaceAll\",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return\"number\"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return\"object\"==typeof e||\"string\"==typeof e},t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"string\"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,\"__isLong__\",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error(\"empty string\");if(\"NaN\"===e||\"Infinity\"===e||\"+Infinity\"===e||\"-Infinity\"===e)return A;if(\"number\"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error(\"interior hyphen\");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c=\"0\"+c;a=\"\"+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error(\"division by zero\");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&\"function\"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.preamble='import { base64 } from \"near-runtime-ts\";\\nimport { JSONEncoder } from \"assemblyscript-json\";\\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\\n'}])});","if(typeof __WEBPACK_EXTERNAL_MODULE__11__ === 'undefined') {var e = new Error(\"Cannot find module 'assemblyscript'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__11__;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 13;","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/tests/near-bindgen/out/test.wat b/tests/near-bindgen/out/test.wat index 4dda7f91bb..9beae86b7f 100644 --- a/tests/near-bindgen/out/test.wat +++ b/tests/near-bindgen/out/test.wat @@ -977,7 +977,7 @@ if i32.const 832 i32.const 888 - i32.const 135 + i32.const 147 i32.const 44 call $~lib/builtins/abort unreachable @@ -7732,7 +7732,7 @@ if i32.const 832 i32.const 888 - i32.const 146 + i32.const 158 i32.const 44 call $~lib/builtins/abort unreachable